summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7808
-rw-r--r--gcc/ChangeLog.MELT20
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in766
-rw-r--r--gcc/ada/ChangeLog1637
-rw-r--r--gcc/ada/ChangeLog-20113192
-rw-r--r--gcc/ada/Makefile.rtl1
-rw-r--r--gcc/ada/a-cfdlli.ads8
-rw-r--r--gcc/ada/a-cidlli.adb16
-rw-r--r--gcc/ada/a-cihama.adb29
-rw-r--r--gcc/ada/a-cihase.adb48
-rw-r--r--gcc/ada/a-cimutr.adb53
-rw-r--r--gcc/ada/a-ciorma.adb33
-rw-r--r--gcc/ada/a-ciormu.adb23
-rw-r--r--gcc/ada/a-ciorse.adb74
-rw-r--r--gcc/ada/a-coinho.adb25
-rw-r--r--gcc/ada/a-coinve.adb73
-rw-r--r--gcc/ada/a-direct.adb42
-rw-r--r--gcc/ada/a-except-2005.adb257
-rw-r--r--gcc/ada/a-except-2005.ads23
-rw-r--r--gcc/ada/a-except.adb43
-rw-r--r--gcc/ada/a-except.ads3
-rw-r--r--gcc/ada/a-exexda.adb10
-rw-r--r--gcc/ada/a-exexpr-gcc.adb162
-rw-r--r--gcc/ada/a-exexpr.adb64
-rw-r--r--gcc/ada/a-exextr.adb27
-rw-r--r--gcc/ada/a-ngelfu.adb6
-rw-r--r--gcc/ada/a-ststio.ads3
-rw-r--r--gcc/ada/adaint.c1
-rw-r--r--gcc/ada/adaint.h2
-rw-r--r--gcc/ada/ali.adb318
-rw-r--r--gcc/ada/aspects.ads4
-rw-r--r--gcc/ada/back_end.adb2
-rw-r--r--gcc/ada/bindusg.adb5
-rw-r--r--gcc/ada/checks.adb123
-rw-r--r--gcc/ada/debug.adb7
-rw-r--r--gcc/ada/einfo.adb5
-rw-r--r--gcc/ada/einfo.ads8
-rw-r--r--gcc/ada/exp_aggr.adb344
-rw-r--r--gcc/ada/exp_attr.adb156
-rw-r--r--gcc/ada/exp_ch11.adb2
-rw-r--r--gcc/ada/exp_ch3.adb393
-rw-r--r--gcc/ada/exp_ch3.ads8
-rw-r--r--gcc/ada/exp_ch4.adb126
-rw-r--r--gcc/ada/exp_ch5.adb23
-rw-r--r--gcc/ada/exp_ch6.adb28
-rw-r--r--gcc/ada/exp_ch7.adb116
-rw-r--r--gcc/ada/exp_ch8.adb95
-rw-r--r--gcc/ada/exp_ch9.adb1062
-rw-r--r--gcc/ada/exp_dbug.ads10
-rw-r--r--gcc/ada/exp_disp.adb32
-rw-r--r--gcc/ada/exp_pakd.adb75
-rw-r--r--gcc/ada/exp_util.adb18
-rw-r--r--gcc/ada/freeze.adb263
-rw-r--r--gcc/ada/frontend.adb8
-rw-r--r--gcc/ada/g-bytswa.adb19
-rw-r--r--gcc/ada/g-bytswa.ads2
-rw-r--r--gcc/ada/g-debpoo.adb9
-rw-r--r--gcc/ada/g-dirope.adb8
-rw-r--r--gcc/ada/g-sercom-linux.adb74
-rw-r--r--gcc/ada/g-sercom-mingw.adb30
-rw-r--r--gcc/ada/g-sercom.adb4
-rw-r--r--gcc/ada/g-sercom.ads16
-rw-r--r--gcc/ada/g-socket.adb76
-rw-r--r--gcc/ada/g-spitbo.adb4
-rw-r--r--gcc/ada/g-spitbo.ads4
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in267
-rw-r--r--gcc/ada/gcc-interface/Makefile.in40
-rw-r--r--gcc/ada/gcc-interface/decl.c86
-rw-r--r--gcc/ada/gcc-interface/gigi.h4
-rw-r--r--gcc/ada/gcc-interface/trans.c59
-rw-r--r--gcc/ada/gcc-interface/utils.c17
-rw-r--r--gcc/ada/gcc-interface/utils2.c23
-rw-r--r--gcc/ada/gnat-style.texi27
-rw-r--r--gcc/ada/gnat1drv.adb72
-rw-r--r--gcc/ada/gnat_rm.texi39
-rw-r--r--gcc/ada/gnat_ugn.texi97
-rw-r--r--gcc/ada/gnatcmd.adb176
-rw-r--r--gcc/ada/gnatlink.adb35
-rw-r--r--gcc/ada/i-cstrea.ads9
-rw-r--r--gcc/ada/init.c23
-rw-r--r--gcc/ada/initialize.c57
-rw-r--r--gcc/ada/inline.ads2
-rw-r--r--gcc/ada/layout.adb45
-rw-r--r--gcc/ada/lib-writ.adb151
-rw-r--r--gcc/ada/lib-writ.ads117
-rw-r--r--gcc/ada/lib.ads2
-rw-r--r--gcc/ada/make.adb51
-rw-r--r--gcc/ada/makeutl.adb214
-rw-r--r--gcc/ada/makeutl.ads89
-rw-r--r--gcc/ada/mkdir.c12
-rw-r--r--gcc/ada/mlib-utl.adb17
-rw-r--r--gcc/ada/opt.ads7
-rw-r--r--gcc/ada/osint.adb10
-rw-r--r--gcc/ada/par-ch13.adb485
-rw-r--r--gcc/ada/par-ch6.adb39
-rw-r--r--gcc/ada/par-endh.adb4
-rw-r--r--gcc/ada/par-util.adb2
-rw-r--r--gcc/ada/par.adb8
-rw-r--r--gcc/ada/par_sco.adb867
-rw-r--r--gcc/ada/par_sco.ads4
-rw-r--r--gcc/ada/prj-attr.adb4
-rw-r--r--gcc/ada/prj-nmsc.adb28
-rw-r--r--gcc/ada/prj-util.adb148
-rw-r--r--gcc/ada/prj-util.ads34
-rw-r--r--gcc/ada/prj.adb68
-rw-r--r--gcc/ada/projects.texi4
-rw-r--r--gcc/ada/raise-gcc.c498
-rw-r--r--gcc/ada/raise.h4
-rw-r--r--gcc/ada/restrict.adb11
-rw-r--r--gcc/ada/restrict.ads2
-rw-r--r--gcc/ada/rident.ads2
-rw-r--r--gcc/ada/rtsfind.ads45
-rw-r--r--gcc/ada/s-assert.ads6
-rw-r--r--gcc/ada/s-atopri.adb201
-rw-r--r--gcc/ada/s-atopri.ads155
-rw-r--r--gcc/ada/s-bytswa.ads53
-rw-r--r--gcc/ada/s-commun.ads3
-rw-r--r--gcc/ada/s-crtl.ads7
-rw-r--r--gcc/ada/s-dimmks.ads25
-rw-r--r--gcc/ada/s-ficobl.ads3
-rw-r--r--gcc/ada/s-fileio.adb22
-rw-r--r--gcc/ada/s-fileio.ads3
-rw-r--r--gcc/ada/s-htable.adb10
-rw-r--r--gcc/ada/s-os_lib.ads2
-rw-r--r--gcc/ada/s-oscons-tmplt.c141
-rw-r--r--gcc/ada/s-osinte-hpux.ads4
-rw-r--r--gcc/ada/s-regexp.adb12
-rw-r--r--gcc/ada/s-rident.ads30
-rw-r--r--gcc/ada/s-taprop-mingw.adb55
-rw-r--r--gcc/ada/s-tarest.adb15
-rw-r--r--gcc/ada/s-tasinf-linux.ads10
-rw-r--r--gcc/ada/s-tassta.adb15
-rw-r--r--gcc/ada/scos.ads10
-rw-r--r--gcc/ada/seh_init.c124
-rw-r--r--gcc/ada/sem.adb64
-rw-r--r--gcc/ada/sem.ads6
-rw-r--r--gcc/ada/sem_attr.adb150
-rw-r--r--gcc/ada/sem_aux.adb108
-rw-r--r--gcc/ada/sem_aux.ads66
-rw-r--r--gcc/ada/sem_case.adb13
-rw-r--r--gcc/ada/sem_cat.adb23
-rw-r--r--gcc/ada/sem_ch10.adb2
-rw-r--r--gcc/ada/sem_ch12.adb38
-rw-r--r--gcc/ada/sem_ch13.adb446
-rw-r--r--gcc/ada/sem_ch13.ads4
-rw-r--r--gcc/ada/sem_ch3.adb49
-rw-r--r--gcc/ada/sem_ch4.adb78
-rw-r--r--gcc/ada/sem_ch5.adb37
-rw-r--r--gcc/ada/sem_ch6.adb61
-rw-r--r--gcc/ada/sem_ch8.adb2
-rw-r--r--gcc/ada/sem_ch9.adb690
-rw-r--r--gcc/ada/sem_dim.adb120
-rw-r--r--gcc/ada/sem_disp.adb183
-rw-r--r--gcc/ada/sem_elab.adb148
-rw-r--r--gcc/ada/sem_elim.adb4
-rw-r--r--gcc/ada/sem_eval.adb238
-rw-r--r--gcc/ada/sem_eval.ads11
-rw-r--r--gcc/ada/sem_mech.adb31
-rw-r--r--gcc/ada/sem_prag.adb246
-rw-r--r--gcc/ada/sem_res.adb76
-rw-r--r--gcc/ada/sem_util.adb72
-rw-r--r--gcc/ada/sem_util.ads10
-rw-r--r--gcc/ada/sinfo.adb16
-rw-r--r--gcc/ada/sinfo.ads39
-rw-r--r--gcc/ada/snames.adb-tmpl20
-rw-r--r--gcc/ada/snames.ads-tmpl50
-rw-r--r--gcc/ada/switch-c.adb17
-rw-r--r--gcc/ada/switch-m.adb26
-rw-r--r--gcc/ada/system-aix.ads2
-rw-r--r--gcc/ada/system-aix64.ads2
-rw-r--r--gcc/ada/system-darwin-ppc.ads2
-rw-r--r--gcc/ada/system-darwin-ppc64.ads1
-rw-r--r--gcc/ada/system-darwin-x86.ads3
-rw-r--r--gcc/ada/system-darwin-x86_64.ads3
-rw-r--r--gcc/ada/system-freebsd-x86.ads3
-rw-r--r--gcc/ada/system-freebsd-x86_64.ads3
-rw-r--r--gcc/ada/system-hpux-ia64.ads5
-rw-r--r--gcc/ada/system-hpux.ads2
-rw-r--r--gcc/ada/system-linux-alpha.ads2
-rw-r--r--gcc/ada/system-linux-hppa.ads2
-rw-r--r--gcc/ada/system-linux-ia64.ads3
-rw-r--r--gcc/ada/system-linux-ppc.ads2
-rw-r--r--gcc/ada/system-linux-s390.ads2
-rw-r--r--gcc/ada/system-linux-s390x.ads2
-rw-r--r--gcc/ada/system-linux-sh4.ads2
-rw-r--r--gcc/ada/system-linux-sparc.ads2
-rw-r--r--gcc/ada/system-linux-x86.ads3
-rw-r--r--gcc/ada/system-linux-x86_64.ads3
-rw-r--r--gcc/ada/system-lynxos-ppc.ads2
-rw-r--r--gcc/ada/system-lynxos-x86.ads3
-rw-r--r--gcc/ada/system-mingw-x86_64.ads3
-rw-r--r--gcc/ada/system-mingw.ads2
-rw-r--r--gcc/ada/system-solaris-sparc.ads2
-rw-r--r--gcc/ada/system-solaris-sparcv9.ads2
-rw-r--r--gcc/ada/system-solaris-x86.ads3
-rw-r--r--gcc/ada/system-solaris-x86_64.ads3
-rw-r--r--gcc/ada/system-vms-ia64.ads3
-rw-r--r--gcc/ada/system-vms_64.ads2
-rw-r--r--gcc/ada/system-vxworks-arm.ads2
-rw-r--r--gcc/ada/system-vxworks-m68k.ads2
-rw-r--r--gcc/ada/system-vxworks-mips.ads2
-rw-r--r--gcc/ada/system-vxworks-ppc.ads10
-rw-r--r--gcc/ada/system-vxworks-sparcv9.ads2
-rw-r--r--gcc/ada/system-vxworks-x86.ads3
-rw-r--r--gcc/ada/targparm.adb4
-rw-r--r--gcc/ada/targparm.ads8
-rw-r--r--gcc/ada/tb-gcc.c4
-rw-r--r--gcc/ada/tracebak.c72
-rw-r--r--gcc/ada/tree_io.ads4
-rw-r--r--gcc/ada/treepr.adb2
-rw-r--r--gcc/ada/treepr.ads2
-rw-r--r--gcc/ada/types.ads56
-rw-r--r--gcc/ada/ug_words2
-rw-r--r--gcc/ada/uintp.adb4
-rw-r--r--gcc/ada/usage.adb4
-rw-r--r--gcc/ada/vms_data.ads12
-rw-r--r--gcc/ada/xoscons.adb101
-rw-r--r--gcc/alias.c154
-rw-r--r--gcc/alias.h2
-rw-r--r--gcc/alloc-pool.c82
-rw-r--r--gcc/alloc-pool.h2
-rw-r--r--gcc/auto-inc-dec.c1
-rw-r--r--gcc/basic-block.h226
-rw-r--r--gcc/bb-reorder.c48
-rw-r--r--gcc/bitmap.c135
-rw-r--r--gcc/bitmap.h149
-rw-r--r--gcc/bt-load.c7
-rw-r--r--gcc/builtins.c228
-rw-r--r--gcc/c-family/ChangeLog61
-rw-r--r--gcc/c-family/c-ada-spec.c35
-rw-r--r--gcc/c-family/c-common.c204
-rw-r--r--gcc/c-family/c-common.def6
-rw-r--r--gcc/c-family/c-common.h8
-rw-r--r--gcc/c-family/c-dump.c9
-rw-r--r--gcc/c-family/c-gimplify.c3
-rw-r--r--gcc/c-family/c-opts.c5
-rw-r--r--gcc/c-family/c-pch.c30
-rw-r--r--gcc/c-family/c-pragma.c6
-rw-r--r--gcc/c-family/c-pretty-print.c9
-rw-r--r--gcc/c-family/c.opt3
-rw-r--r--gcc/c/ChangeLog29
-rw-r--r--gcc/c/Make-lang.in2
-rw-r--r--gcc/c/c-decl.c4
-rw-r--r--gcc/c/c-lang.h2
-rw-r--r--gcc/c/c-parser.c86
-rw-r--r--gcc/c/c-tree.h6
-rw-r--r--gcc/c/c-typeck.c26
-rw-r--r--gcc/caller-save.c1
-rw-r--r--gcc/calls.c2
-rw-r--r--gcc/cfg-flags.def178
-rw-r--r--gcc/cfg.c496
-rw-r--r--gcc/cfganal.c373
-rw-r--r--gcc/cfgcleanup.c3
-rw-r--r--gcc/cfgexpand.c127
-rw-r--r--gcc/cfghooks.c114
-rw-r--r--gcc/cfghooks.h4
-rw-r--r--gcc/cfgloop.c47
-rw-r--r--gcc/cfgloop.h16
-rw-r--r--gcc/cfgloopmanip.c12
-rw-r--r--gcc/cfgrtl.c230
-rw-r--r--gcc/cgraph.c10
-rw-r--r--gcc/cgraph.h18
-rw-r--r--gcc/cgraphclones.c3
-rw-r--r--gcc/cgraphunit.c32
-rw-r--r--gcc/combine-stack-adj.c1
-rw-r--r--gcc/combine.c253
-rw-r--r--gcc/common.opt29
-rw-r--r--gcc/common/config/arm/arm-common.c1
-rw-r--r--gcc/common/config/i386/i386-common.c69
-rw-r--r--gcc/common/config/rs6000/rs6000-common.c43
-rw-r--r--gcc/config.gcc40
-rw-r--r--gcc/config.in18
-rw-r--r--gcc/config/alpha/alpha.c49
-rw-r--r--gcc/config/alpha/alpha.h7
-rw-r--r--gcc/config/arm/aout.h178
-rw-r--r--gcc/config/arm/arm-arches.def1
-rw-r--r--gcc/config/arm/arm-cores.def4
-rw-r--r--gcc/config/arm/arm-protos.h10
-rw-r--r--gcc/config/arm/arm-tables.opt7
-rw-r--r--gcc/config/arm/arm.c684
-rw-r--r--gcc/config/arm/arm.h318
-rw-r--r--gcc/config/arm/arm.md62
-rw-r--r--gcc/config/arm/arm_neon.h318
-rw-r--r--gcc/config/arm/bpabi.h26
-rw-r--r--gcc/config/arm/iterators.md13
-rw-r--r--gcc/config/arm/linux-elf.h3
-rw-r--r--gcc/config/arm/mmintrin.h4
-rw-r--r--gcc/config/arm/neon-gen.ml112
-rw-r--r--gcc/config/arm/neon.md91
-rw-r--r--gcc/config/arm/neon.ml91
-rw-r--r--gcc/config/arm/t-arm2
-rw-r--r--gcc/config/arm/vfp.md72
-rw-r--r--gcc/config/avr/avr-dimode.md189
-rw-r--r--gcc/config/avr/avr-fixed.md287
-rw-r--r--gcc/config/avr/avr-log.c8
-rw-r--r--gcc/config/avr/avr-modes.def27
-rw-r--r--gcc/config/avr/avr-protos.h5
-rw-r--r--gcc/config/avr/avr.c614
-rw-r--r--gcc/config/avr/avr.h3
-rw-r--r--gcc/config/avr/avr.md1047
-rw-r--r--gcc/config/avr/constraints.md44
-rw-r--r--gcc/config/avr/gen-avr-mmcu-texi.c2
-rw-r--r--gcc/config/avr/predicates.md20
-rw-r--r--gcc/config/avr/t-avr10
-rw-r--r--gcc/config/bfin/bfin.c1
-rw-r--r--gcc/config/c6x/c6x.c9
-rw-r--r--gcc/config/cr16/cr16.h4
-rw-r--r--gcc/config/cris/cris-protos.h1
-rw-r--r--gcc/config/cris/cris.c80
-rw-r--r--gcc/config/cris/cris.h10
-rw-r--r--gcc/config/cris/cris.opt4
-rw-r--r--gcc/config/cris/sync.md99
-rw-r--r--gcc/config/darwin.c12
-rw-r--r--gcc/config/darwin.h5
-rw-r--r--gcc/config/epiphany/epiphany.c2
-rw-r--r--gcc/config/epiphany/epiphany.h4
-rw-r--r--gcc/config/fr30/fr30.md14
-rw-r--r--gcc/config/frv/frv-protos.h3
-rw-r--r--gcc/config/frv/frv.c8
-rw-r--r--gcc/config/h8300/h8300.h4
-rw-r--r--gcc/config/i386/adxintrin.h49
-rw-r--r--gcc/config/i386/constraints.md7
-rw-r--r--gcc/config/i386/cpuid.h12
-rw-r--r--gcc/config/i386/cygming.h9
-rw-r--r--gcc/config/i386/driver-i386.c17
-rw-r--r--gcc/config/i386/i386-builtin-types.def3
-rw-r--r--gcc/config/i386/i386-c.c16
-rw-r--r--gcc/config/i386/i386-protos.h9
-rw-r--r--gcc/config/i386/i386.c780
-rw-r--r--gcc/config/i386/i386.h139
-rw-r--r--gcc/config/i386/i386.md426
-rw-r--r--gcc/config/i386/i386.opt20
-rw-r--r--gcc/config/i386/i386elf.h2
-rw-r--r--gcc/config/i386/lzcntintrin.h12
-rw-r--r--gcc/config/i386/mingw32.h5
-rw-r--r--gcc/config/i386/mm3dnow.h7
-rw-r--r--gcc/config/i386/predicates.md12
-rw-r--r--gcc/config/i386/prfchwintrin.h42
-rw-r--r--gcc/config/i386/rdseedintrin.h58
-rw-r--r--gcc/config/i386/rtmintrin.h2
-rw-r--r--gcc/config/i386/sse.md395
-rw-r--r--gcc/config/i386/sync.md167
-rw-r--r--gcc/config/i386/t-i3862
-rw-r--r--gcc/config/i386/winnt.c50
-rw-r--r--gcc/config/i386/x86intrin.h10
-rw-r--r--gcc/config/i386/xmmintrin.h2
-rw-r--r--gcc/config/ia64/hpux.h3
-rw-r--r--gcc/config/ia64/ia64-protos.h1
-rw-r--r--gcc/config/ia64/ia64.c55
-rw-r--r--gcc/config/ia64/t-ia642
-rw-r--r--gcc/config/ia64/vect.md88
-rw-r--r--gcc/config/iq2000/iq2000.c4
-rw-r--r--gcc/config/iq2000/iq2000.md36
-rw-r--r--gcc/config/linux.h4
-rw-r--r--gcc/config/m32c/cond.md23
-rw-r--r--gcc/config/m32c/constraints.md225
-rw-r--r--gcc/config/m32c/m32c-protos.h7
-rw-r--r--gcc/config/m32c/m32c.c341
-rw-r--r--gcc/config/m32c/m32c.h19
-rw-r--r--gcc/config/m32c/predicates.md14
-rw-r--r--gcc/config/m32c/t-m32c2
-rw-r--r--gcc/config/m68k/m68k-protos.h3
-rw-r--r--gcc/config/m68k/m68k.c18
-rw-r--r--gcc/config/m68k/m68k.h6
-rw-r--r--gcc/config/mcore/mcore.c50
-rw-r--r--gcc/config/mcore/mcore.md2
-rw-r--r--gcc/config/mep/mep-protos.h3
-rw-r--r--gcc/config/mep/mep.c133
-rw-r--r--gcc/config/mep/mep.h17
-rw-r--r--gcc/config/mep/t-mep4
-rw-r--r--gcc/config/mips/10000.md10
-rw-r--r--gcc/config/mips/20kc.md6
-rw-r--r--gcc/config/mips/24k.md138
-rw-r--r--gcc/config/mips/4130.md8
-rw-r--r--gcc/config/mips/4k.md6
-rw-r--r--gcc/config/mips/5400.md4
-rw-r--r--gcc/config/mips/5500.md6
-rw-r--r--gcc/config/mips/5k.md6
-rw-r--r--gcc/config/mips/7000.md6
-rw-r--r--gcc/config/mips/74k.md101
-rw-r--r--gcc/config/mips/9000.md6
-rw-r--r--gcc/config/mips/generic.md18
-rw-r--r--gcc/config/mips/loongson2ef.md6
-rw-r--r--gcc/config/mips/loongson3a.md4
-rw-r--r--gcc/config/mips/mips-cpus.def3
-rw-r--r--gcc/config/mips/mips-dsp.md139
-rw-r--r--gcc/config/mips/mips-dspr2.md85
-rw-r--r--gcc/config/mips/mips-protos.h4
-rw-r--r--gcc/config/mips/mips-tables.opt82
-rw-r--r--gcc/config/mips/mips.c428
-rw-r--r--gcc/config/mips/mips.h40
-rw-r--r--gcc/config/mips/mips.md560
-rw-r--r--gcc/config/mips/mips.opt4
-rw-r--r--gcc/config/mips/octeon.md10
-rw-r--r--gcc/config/mips/predicates.md3
-rw-r--r--gcc/config/mips/sb1.md10
-rw-r--r--gcc/config/mips/sr71k.md4
-rw-r--r--gcc/config/mips/sync.md6
-rw-r--r--gcc/config/mips/xlp.md213
-rw-r--r--gcc/config/mips/xlr.md9
-rw-r--r--gcc/config/mn10300/mn10300-protos.h2
-rw-r--r--gcc/config/mn10300/mn10300.c65
-rw-r--r--gcc/config/mn10300/mn10300.h4
-rw-r--r--gcc/config/mn10300/mn10300.md2
-rw-r--r--gcc/config/rl78/rl78.c12
-rw-r--r--gcc/config/rs6000/601.md136
-rw-r--r--gcc/config/rs6000/aix43.h30
-rw-r--r--gcc/config/rs6000/aix51.h30
-rw-r--r--gcc/config/rs6000/aix52.h18
-rw-r--r--gcc/config/rs6000/aix53.h18
-rw-r--r--gcc/config/rs6000/aix61.h18
-rw-r--r--gcc/config/rs6000/altivec.md54
-rw-r--r--gcc/config/rs6000/constraints.md12
-rw-r--r--gcc/config/rs6000/darwin.h14
-rw-r--r--gcc/config/rs6000/darwin.md36
-rw-r--r--gcc/config/rs6000/darwin64.h6
-rw-r--r--gcc/config/rs6000/default64.h6
-rw-r--r--gcc/config/rs6000/dfp.md45
-rw-r--r--gcc/config/rs6000/driver-rs6000.c27
-rw-r--r--gcc/config/rs6000/eabi.h5
-rw-r--r--gcc/config/rs6000/eabialtivec.h4
-rw-r--r--gcc/config/rs6000/eabispe.h6
-rw-r--r--gcc/config/rs6000/linuxaltivec.h4
-rw-r--r--gcc/config/rs6000/linuxspe.h6
-rw-r--r--gcc/config/rs6000/power4.md8
-rw-r--r--gcc/config/rs6000/predicates.md40
-rw-r--r--gcc/config/rs6000/rios1.md191
-rw-r--r--gcc/config/rs6000/rios2.md129
-rw-r--r--gcc/config/rs6000/rs6000-builtin.def29
-rw-r--r--gcc/config/rs6000/rs6000-c.c16
-rw-r--r--gcc/config/rs6000/rs6000-cpus.def134
-rw-r--r--gcc/config/rs6000/rs6000-opts.h5
-rw-r--r--gcc/config/rs6000/rs6000-protos.h7
-rw-r--r--gcc/config/rs6000/rs6000-tables.opt54
-rw-r--r--gcc/config/rs6000/rs6000.c717
-rw-r--r--gcc/config/rs6000/rs6000.h81
-rw-r--r--gcc/config/rs6000/rs6000.md3321
-rw-r--r--gcc/config/rs6000/rs6000.opt33
-rw-r--r--gcc/config/rs6000/spe.md26
-rw-r--r--gcc/config/rs6000/sync.md27
-rw-r--r--gcc/config/rs6000/sysv4.h14
-rw-r--r--gcc/config/rs6000/sysv4le.h4
-rw-r--r--gcc/config/rs6000/t-aix4315
-rw-r--r--gcc/config/rs6000/t-rs60008
-rw-r--r--gcc/config/rs6000/vsx.md8
-rw-r--r--gcc/config/rs6000/vxworks.h6
-rw-r--r--gcc/config/rx/rx.c11
-rw-r--r--gcc/config/s390/s390-protos.h7
-rw-r--r--gcc/config/s390/s390.c332
-rw-r--r--gcc/config/s390/s390.md418
-rw-r--r--gcc/config/sh/constraints.md18
-rw-r--r--gcc/config/sh/predicates.md168
-rw-r--r--gcc/config/sh/sh-protos.h7
-rw-r--r--gcc/config/sh/sh.c461
-rw-r--r--gcc/config/sh/sh.h22
-rw-r--r--gcc/config/sh/sh.md2749
-rw-r--r--gcc/config/sh/sh.opt8
-rw-r--r--gcc/config/sh/sync.md2
-rw-r--r--gcc/config/sparc/sparc.c1
-rw-r--r--gcc/config/sparc/sparc.h6
-rw-r--r--gcc/config/sparc/sparc.md2
-rw-r--r--gcc/config/sparc/t-sparc2
-rw-r--r--gcc/config/spu/spu-builtins.def24
-rw-r--r--gcc/config/spu/spu-builtins.md65
-rw-r--r--gcc/config/spu/spu.c632
-rw-r--r--gcc/config/spu/spu.md86
-rw-r--r--gcc/config/spu/t-spu-elf4
-rw-r--r--gcc/config/stormy16/stormy16.c3
-rw-r--r--gcc/config/tilegx/feedback.h14
-rw-r--r--gcc/config/tilegx/predicates.md10
-rw-r--r--gcc/config/tilegx/sync.md6
-rw-r--r--gcc/config/tilegx/tilegx-generic.md4
-rw-r--r--gcc/config/tilegx/tilegx-opts.h34
-rw-r--r--gcc/config/tilegx/tilegx-protos.h2
-rw-r--r--gcc/config/tilegx/tilegx.c321
-rw-r--r--gcc/config/tilegx/tilegx.h15
-rw-r--r--gcc/config/tilegx/tilegx.md306
-rw-r--r--gcc/config/tilegx/tilegx.opt16
-rw-r--r--gcc/config/tilepro/feedback.h14
-rw-r--r--gcc/config/tilepro/tilepro.c2
-rw-r--r--gcc/config/v850/rtems.h29
-rw-r--r--gcc/config/v850/t-rtems3
-rw-r--r--gcc/config/v850/v850.h4
-rw-r--r--gcc/config/v850/v850.md14
-rw-r--r--gcc/config/vax/vax-protos.h1
-rw-r--r--gcc/config/vax/vax.c7
-rw-r--r--gcc/config/vax/vax.h9
-rw-r--r--gcc/config/vax/vax.md7
-rw-r--r--gcc/config/xtensa/xtensa.c18
-rw-r--r--gcc/config/xtensa/xtensa.h9
-rwxr-xr-xgcc/configure311
-rw-r--r--gcc/configure.ac80
-rw-r--r--gcc/coretypes.h7
-rw-r--r--gcc/coverage.c72
-rw-r--r--gcc/cp/ChangeLog418
-rw-r--r--gcc/cp/Make-lang.in9
-rw-r--r--gcc/cp/call.c140
-rw-r--r--gcc/cp/class.c70
-rw-r--r--gcc/cp/cp-tree.def5
-rw-r--r--gcc/cp/cp-tree.h69
-rw-r--r--gcc/cp/cvt.c4
-rw-r--r--gcc/cp/cxx-pretty-print.c7
-rw-r--r--gcc/cp/decl.c94
-rw-r--r--gcc/cp/decl2.c16
-rw-r--r--gcc/cp/dump.c9
-rw-r--r--gcc/cp/error.c6
-rw-r--r--gcc/cp/friend.c3
-rw-r--r--gcc/cp/init.c96
-rw-r--r--gcc/cp/lex.c36
-rw-r--r--gcc/cp/method.c131
-rw-r--r--gcc/cp/name-lookup.c75
-rw-r--r--gcc/cp/optimize.c2
-rw-r--r--gcc/cp/parser.c72
-rw-r--r--gcc/cp/pt.c1114
-rw-r--r--gcc/cp/rtti.c24
-rw-r--r--gcc/cp/search.c64
-rw-r--r--gcc/cp/semantics.c162
-rw-r--r--gcc/cp/tree.c222
-rw-r--r--gcc/cp/typeck.c30
-rw-r--r--gcc/cp/typeck2.c4
-rw-r--r--gcc/cppbuiltin.h3
-rw-r--r--gcc/cprop.c3
-rw-r--r--gcc/cse.c53
-rw-r--r--gcc/cselib.c18
-rw-r--r--gcc/dbgcnt.c3
-rw-r--r--gcc/dce.c2
-rw-r--r--gcc/defaults.h12
-rw-r--r--gcc/df-core.c38
-rw-r--r--gcc/df-problems.c422
-rw-r--r--gcc/df-scan.c10
-rw-r--r--gcc/df.h42
-rw-r--r--gcc/diagnostic.c10
-rw-r--r--gcc/doc/cfg.texi238
-rw-r--r--gcc/doc/extend.texi71
-rw-r--r--gcc/doc/gcov.texi25
-rw-r--r--gcc/doc/gty.texi156
-rw-r--r--gcc/doc/install.texi57
-rw-r--r--gcc/doc/invoke.texi389
-rw-r--r--gcc/doc/md.texi16
-rw-r--r--gcc/doc/options.texi4
-rw-r--r--gcc/doc/sourcebuild.texi17
-rw-r--r--gcc/doc/tm.texi117
-rw-r--r--gcc/doc/tm.texi.in101
-rw-r--r--gcc/doc/tree-ssa.texi5
-rw-r--r--gcc/dojump.c26
-rw-r--r--gcc/dominance.c30
-rw-r--r--gcc/double-int.c333
-rw-r--r--gcc/double-int.h687
-rw-r--r--gcc/dse.c134
-rw-r--r--gcc/dumpfile.h118
-rw-r--r--gcc/dwarf2cfi.c14
-rw-r--r--gcc/dwarf2out.c216
-rw-r--r--gcc/dwarf2out.h5
-rw-r--r--gcc/ebitmap.c16
-rw-r--r--gcc/emit-rtl.c70
-rw-r--r--gcc/except.c44
-rw-r--r--gcc/explow.c3
-rw-r--r--gcc/expmed.c344
-rw-r--r--gcc/expmed.h551
-rw-r--r--gcc/expr.c117
-rw-r--r--gcc/expr.h5
-rw-r--r--gcc/final.c183
-rw-r--r--gcc/fixed-value.c283
-rw-r--r--gcc/flag-types.h8
-rw-r--r--gcc/flags.h25
-rw-r--r--gcc/fold-const.c105
-rw-r--r--gcc/fortran/ChangeLog646
-rw-r--r--gcc/fortran/Make-lang.in2
-rw-r--r--gcc/fortran/arith.c5
-rw-r--r--gcc/fortran/array.c139
-rw-r--r--gcc/fortran/bbt.c1
-rw-r--r--gcc/fortran/check.c62
-rw-r--r--gcc/fortran/class.c11
-rw-r--r--gcc/fortran/constructor.c1
-rw-r--r--gcc/fortran/data.c5
-rw-r--r--gcc/fortran/decl.c195
-rw-r--r--gcc/fortran/dependency.c6
-rw-r--r--gcc/fortran/dump-parse-tree.c8
-rw-r--r--gcc/fortran/error.c47
-rw-r--r--gcc/fortran/expr.c131
-rw-r--r--gcc/fortran/f95-lang.c2
-rw-r--r--gcc/fortran/frontend-passes.c1
-rw-r--r--gcc/fortran/gfortran.h37
-rw-r--r--gcc/fortran/interface.c287
-rw-r--r--gcc/fortran/intrinsic.c20
-rw-r--r--gcc/fortran/intrinsic.texi11
-rw-r--r--gcc/fortran/invoke.texi18
-rw-r--r--gcc/fortran/io.c63
-rw-r--r--gcc/fortran/iresolve.c17
-rw-r--r--gcc/fortran/iso-c-binding.def2
-rw-r--r--gcc/fortran/lang.opt10
-rw-r--r--gcc/fortran/match.c52
-rw-r--r--gcc/fortran/matchexp.c1
-rw-r--r--gcc/fortran/misc.c1
-rw-r--r--gcc/fortran/module.c38
-rw-r--r--gcc/fortran/openmp.c1
-rw-r--r--gcc/fortran/options.c12
-rw-r--r--gcc/fortran/parse.c46
-rw-r--r--gcc/fortran/primary.c32
-rw-r--r--gcc/fortran/resolve.c582
-rw-r--r--gcc/fortran/scanner.c29
-rw-r--r--gcc/fortran/simplify.c19
-rw-r--r--gcc/fortran/st.c1
-rw-r--r--gcc/fortran/symbol.c69
-rw-r--r--gcc/fortran/target-memory.c1
-rw-r--r--gcc/fortran/trans-array.c303
-rw-r--r--gcc/fortran/trans-array.h6
-rw-r--r--gcc/fortran/trans-decl.c27
-rw-r--r--gcc/fortran/trans-expr.c489
-rw-r--r--gcc/fortran/trans-intrinsic.c228
-rw-r--r--gcc/fortran/trans-io.c17
-rw-r--r--gcc/fortran/trans-stmt.c23
-rw-r--r--gcc/fortran/trans-types.c53
-rw-r--r--gcc/fortran/trans-types.h2
-rw-r--r--gcc/fortran/trans.c1
-rw-r--r--gcc/fortran/trans.h4
-rw-r--r--gcc/function.c36
-rw-r--r--gcc/function.h15
-rw-r--r--gcc/fwprop.c15
-rw-r--r--gcc/gcc.c13
-rw-r--r--gcc/gcov-io.h2
-rw-r--r--gcc/gcov.c46
-rw-r--r--gcc/gcse.c20
-rw-r--r--gcc/gdbinit.in15
-rw-r--r--gcc/genattrtab.c8
-rw-r--r--gcc/genautomata.c17
-rw-r--r--gcc/gencodes.c7
-rw-r--r--gcc/genextract.c2
-rw-r--r--gcc/gengenrtl.c4
-rw-r--r--gcc/gengtype-lex.l16
-rw-r--r--gcc/gengtype-parse.c161
-rw-r--r--gcc/gengtype-state.c64
-rw-r--r--gcc/gengtype.c753
-rw-r--r--gcc/gengtype.h51
-rw-r--r--gcc/genopinit.c928
-rw-r--r--gcc/genoutput.c25
-rw-r--r--gcc/genpeep.c30
-rw-r--r--gcc/gensupport.c16
-rw-r--r--gcc/ggc-common.c11
-rw-r--r--gcc/ggc-internal.h2
-rw-r--r--gcc/ggc-page.c153
-rw-r--r--gcc/ggc-zone.c148
-rw-r--r--gcc/ggc.h31
-rw-r--r--gcc/gimple-fold.c24
-rw-r--r--gcc/gimple-fold.h2
-rw-r--r--gcc/gimple-iterator.c6
-rw-r--r--gcc/gimple-low.c117
-rw-r--r--gcc/gimple-pretty-print.c216
-rw-r--r--gcc/gimple-ssa-strength-reduction.c1413
-rw-r--r--gcc/gimple-streamer-in.c7
-rw-r--r--gcc/gimple-streamer-out.c3
-rw-r--r--gcc/gimple.c57
-rw-r--r--gcc/gimple.h15
-rw-r--r--gcc/gimplify.c267
-rw-r--r--gcc/go/ChangeLog12
-rw-r--r--gcc/go/go-c.h13
-rw-r--r--gcc/go/go-gcc.cc9
-rw-r--r--gcc/go/go-lang.c2
-rw-r--r--gcc/go/go-system.h9
-rw-r--r--gcc/go/gofrontend/expressions.cc83
-rw-r--r--gcc/go/gofrontend/expressions.h10
-rw-r--r--gcc/go/gofrontend/gogo-tree.cc11
-rw-r--r--gcc/go/gofrontend/statements.cc62
-rw-r--r--gcc/go/gofrontend/types.cc9
-rw-r--r--gcc/graphite-blocking.c83
-rw-r--r--gcc/graphite-clast-to-gimple.c787
-rw-r--r--gcc/graphite-clast-to-gimple.h3
-rw-r--r--gcc/graphite-cloog-compat.h275
-rw-r--r--gcc/graphite-cloog-util.c414
-rw-r--r--gcc/graphite-cloog-util.h42
-rw-r--r--gcc/graphite-dependences.c1211
-rw-r--r--gcc/graphite-dependences.h64
-rw-r--r--gcc/graphite-interchange.c405
-rw-r--r--gcc/graphite-optimize-isl.c473
-rw-r--r--gcc/graphite-poly.c1040
-rw-r--r--gcc/graphite-poly.h268
-rw-r--r--gcc/graphite-ppl.c566
-rw-r--r--gcc/graphite-ppl.h176
-rw-r--r--gcc/graphite-scop-detection.c19
-rw-r--r--gcc/graphite-sese-to-poly.c1251
-rw-r--r--gcc/graphite.c40
-rw-r--r--gcc/haifa-sched.c4
-rw-r--r--gcc/hash-table.c190
-rw-r--r--gcc/hash-table.h730
-rw-r--r--gcc/hw-doloop.c15
-rw-r--r--gcc/hwint.c17
-rw-r--r--gcc/hwint.h15
-rw-r--r--gcc/ifcvt.c140
-rw-r--r--gcc/intl.h10
-rw-r--r--gcc/ipa-cp.c41
-rw-r--r--gcc/ipa-inline-analysis.c853
-rw-r--r--gcc/ipa-inline-transform.c11
-rw-r--r--gcc/ipa-inline.c69
-rw-r--r--gcc/ipa-inline.h61
-rw-r--r--gcc/ipa-prop.c1078
-rw-r--r--gcc/ipa-prop.h106
-rw-r--r--gcc/ipa-pure-const.c36
-rw-r--r--gcc/ipa-ref-inline.h2
-rw-r--r--gcc/ipa-ref.c6
-rw-r--r--gcc/ipa-reference.c49
-rw-r--r--gcc/ipa-split.c90
-rw-r--r--gcc/ipa-utils.c3
-rw-r--r--gcc/ipa.c29
-rw-r--r--gcc/ira-build.c10
-rw-r--r--gcc/ira-conflicts.c9
-rw-r--r--gcc/ira-costs.c12
-rw-r--r--gcc/ira-emit.c2
-rw-r--r--gcc/ira-lives.c21
-rw-r--r--gcc/ira.c70
-rw-r--r--gcc/java/ChangeLog34
-rw-r--r--gcc/java/Make-lang.in4
-rw-r--r--gcc/java/boehm.c2
-rw-r--r--gcc/java/class.c9
-rw-r--r--gcc/java/constants.c4
-rw-r--r--gcc/java/decl.c1
-rw-r--r--gcc/java/expr.c76
-rw-r--r--gcc/java/java-gimplify.c2
-rw-r--r--gcc/java/java-tree.h5
-rw-r--r--gcc/java/jcf-io.c4
-rw-r--r--gcc/java/jcf.h4
-rw-r--r--gcc/java/jvgenmain.c1
-rw-r--r--gcc/java/mangle.c1
-rw-r--r--gcc/java/verify-impl.c2
-rw-r--r--gcc/java/verify.h2
-rw-r--r--gcc/jump.c10
-rw-r--r--gcc/langhooks.c2
-rw-r--r--gcc/langhooks.h2
-rw-r--r--gcc/lcm.c9
-rw-r--r--gcc/libfuncs.h16
-rw-r--r--gcc/loop-doloop.c1
-rw-r--r--gcc/loop-init.c23
-rw-r--r--gcc/loop-invariant.c15
-rw-r--r--gcc/loop-iv.c1
-rw-r--r--gcc/loop-unroll.c1
-rw-r--r--gcc/loop-unswitch.c1
-rw-r--r--gcc/lower-subreg.c1
-rw-r--r--gcc/lto-cgraph.c662
-rw-r--r--gcc/lto-section-in.c5
-rw-r--r--gcc/lto-section-out.c2
-rw-r--r--gcc/lto-streamer-in.c11
-rw-r--r--gcc/lto-streamer-out.c69
-rw-r--r--gcc/lto-streamer.h242
-rw-r--r--gcc/lto/ChangeLog20
-rw-r--r--gcc/lto/Make-lang.in2
-rw-r--r--gcc/lto/lto-partition.c81
-rw-r--r--gcc/lto/lto-tree.h2
-rw-r--r--gcc/lto/lto.c5
-rw-r--r--gcc/matrix-reorg.c2392
-rw-r--r--gcc/mcf.c11
-rw-r--r--gcc/melt-build-script.sh877
-rw-r--r--gcc/melt-build-script.tpl13
-rw-r--r--gcc/melt-module.mk38
-rw-r--r--gcc/melt-runtime.c34
-rw-r--r--gcc/melt-runtime.h2
-rw-r--r--gcc/mode-switching.c3
-rw-r--r--gcc/modulo-sched.c7
-rw-r--r--gcc/objc/objc-act.c2
-rw-r--r--gcc/omega.c2
-rw-r--r--gcc/omp-low.c124
-rw-r--r--gcc/opt-functions.awk1
-rw-r--r--gcc/optabs.c853
-rw-r--r--gcc/optabs.def308
-rw-r--r--gcc/optabs.h967
-rw-r--r--gcc/opts.c10
-rw-r--r--gcc/opts.h1
-rw-r--r--gcc/params.def40
-rw-r--r--gcc/passes.c38
-rw-r--r--gcc/plugin.c1
-rw-r--r--gcc/po/ChangeLog10
-rw-r--r--gcc/po/be.po5234
-rw-r--r--gcc/po/da.po5248
-rw-r--r--gcc/po/de.po5247
-rw-r--r--gcc/po/el.po5245
-rw-r--r--gcc/po/es.po5255
-rw-r--r--gcc/po/fi.po5237
-rw-r--r--gcc/po/fr.po5251
-rw-r--r--gcc/po/hr.po45015
-rw-r--r--gcc/po/id.po5253
-rw-r--r--gcc/po/ja.po5249
-rw-r--r--gcc/po/nl.po5244
-rw-r--r--gcc/po/ru.po5499
-rw-r--r--gcc/po/sr.po5254
-rw-r--r--gcc/po/sv.po5235
-rw-r--r--gcc/po/tr.po5254
-rw-r--r--gcc/po/vi.po5242
-rw-r--r--gcc/po/zh_CN.po5259
-rw-r--r--gcc/po/zh_TW.po5254
-rw-r--r--gcc/postreload-gcse.c6
-rw-r--r--gcc/postreload.c1
-rw-r--r--gcc/predict.c74
-rw-r--r--gcc/predict.def7
-rw-r--r--gcc/pretty-print.c3
-rw-r--r--gcc/pretty-print.h6
-rw-r--r--gcc/print-rtl.c4
-rw-r--r--gcc/print-tree.c36
-rw-r--r--gcc/profile.c98
-rw-r--r--gcc/recog.c34
-rw-r--r--gcc/ree.c4
-rw-r--r--gcc/reg-stack.c71
-rw-r--r--gcc/regcprop.c1
-rw-r--r--gcc/reginfo.c8
-rw-r--r--gcc/regmove.c1
-rw-r--r--gcc/regrename.c12
-rw-r--r--gcc/regs.h4
-rw-r--r--gcc/regset.h3
-rw-r--r--gcc/regstat.c66
-rw-r--r--gcc/reload.c98
-rw-r--r--gcc/reload.h14
-rw-r--r--gcc/reload1.c50
-rw-r--r--gcc/reorg.c23
-rw-r--r--gcc/resource.c10
-rw-r--r--gcc/rtl.c42
-rw-r--r--gcc/rtl.def7
-rw-r--r--gcc/rtl.h64
-rw-r--r--gcc/rtlanal.c96
-rw-r--r--gcc/sbitmap.c204
-rw-r--r--gcc/sbitmap.h177
-rw-r--r--gcc/sched-deps.c32
-rw-r--r--gcc/sched-int.h6
-rw-r--r--gcc/sched-rgn.c8
-rw-r--r--gcc/sched-vis.c157
-rw-r--r--gcc/sel-sched-ir.c24
-rw-r--r--gcc/sel-sched-ir.h10
-rw-r--r--gcc/sel-sched.c60
-rw-r--r--gcc/sese.c18
-rw-r--r--gcc/simplify-rtx.c119
-rw-r--r--gcc/sparseset.c10
-rw-r--r--gcc/sparseset.h68
-rw-r--r--gcc/statistics.c8
-rw-r--r--gcc/statistics.h29
-rw-r--r--gcc/stmt.c745
-rw-r--r--gcc/stor-layout.c39
-rw-r--r--gcc/store-motion.c1
-rw-r--r--gcc/stringpool.c30
-rw-r--r--gcc/system.h17
-rw-r--r--gcc/target.def95
-rw-r--r--gcc/target.h15
-rw-r--r--gcc/targhooks.c89
-rw-r--r--gcc/targhooks.h9
-rw-r--r--gcc/testsuite/ChangeLog1765
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr54017.c65
-rw-r--r--gcc/testsuite/c-c++-common/pr28656.c29
-rw-r--r--gcc/testsuite/c-c++-common/pr53633.c16
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle3-2.C20
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle3.C1
-rw-r--r--gcc/testsuite/g++.dg/conversion/void2.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-20.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto34.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-const1.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C27
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype28.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype29.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype32.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype39.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted21.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted36.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted37.C21
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/fntmpdefarg3.C26
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit13.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/inline-ns2.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template6.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template7.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this5.C22
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr21.C41
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr29.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/overload2.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for14.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/scoped_enum.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae24.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae37.C36
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae38.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/static_assert8.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/temp_default5.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic133.C46
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic134.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic135.C5
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C14
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C39
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C193
-rw-r--r--gcc/testsuite/g++.dg/debug/nullptr01.C4
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/method1.C4
-rw-r--r--gcc/testsuite/g++.dg/ext/label14.C17
-rw-r--r--gcc/testsuite/g++.dg/ext/vector17.C12
-rw-r--r--gcc/testsuite/g++.dg/gomp/for-19.C2
-rw-r--r--gcc/testsuite/g++.dg/init/mutable1.C20
-rw-r--r--gcc/testsuite/g++.dg/init/new38.C54
-rw-r--r--gcc/testsuite/g++.dg/init/new39.C68
-rw-r--r--gcc/testsuite/g++.dg/lookup/ambig1.C2
-rw-r--r--gcc/testsuite/g++.dg/lookup/ambig2.C2
-rw-r--r--gcc/testsuite/g++.dg/lookup/ambig3.C2
-rw-r--r--gcc/testsuite/g++.dg/lookup/ambig4.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/ambig5.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/crash3.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/strong-using-2.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/using16.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/using17.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/using18.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/using20.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/using53.C53
-rw-r--r--gcc/testsuite/g++.dg/lto/20090303_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/pr51992_0.C1
-rw-r--r--gcc/testsuite/g++.dg/opt/enum2.C2
-rw-r--r--gcc/testsuite/g++.dg/opt/longbranch1.C4
-rw-r--r--gcc/testsuite/g++.dg/other/armv7m-1.C69
-rw-r--r--gcc/testsuite/g++.dg/other/array7.C9
-rw-r--r--gcc/testsuite/g++.dg/other/enum3.C10
-rw-r--r--gcc/testsuite/g++.dg/other/i386-2.C2
-rw-r--r--gcc/testsuite/g++.dg/other/i386-3.C2
-rw-r--r--gcc/testsuite/g++.dg/other/packed1.C2
-rw-r--r--gcc/testsuite/g++.dg/other/pr53811.C29
-rw-r--r--gcc/testsuite/g++.dg/other/ptrmem10.C5
-rw-r--r--gcc/testsuite/g++.dg/other/ptrmem11.C5
-rw-r--r--gcc/testsuite/g++.dg/overload/defarg1.C4
-rw-r--r--gcc/testsuite/g++.dg/overload/defarg6.C7
-rw-r--r--gcc/testsuite/g++.dg/parse/access8.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/ambig4.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/ambig6.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/crash22.C8
-rw-r--r--gcc/testsuite/g++.dg/parse/crash35.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/crash40.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/crash53.C8
-rw-r--r--gcc/testsuite/g++.dg/parse/enum9.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/non-dependent2.C4
-rw-r--r--gcc/testsuite/g++.dg/plugin/selfassign.c8
-rw-r--r--gcc/testsuite/g++.dg/template/access23.C16
-rw-r--r--gcc/testsuite/g++.dg/template/access7.C2
-rw-r--r--gcc/testsuite/g++.dg/template/array23.C12
-rw-r--r--gcc/testsuite/g++.dg/template/crash108.C4
-rw-r--r--gcc/testsuite/g++.dg/template/crash89.C4
-rw-r--r--gcc/testsuite/g++.dg/template/crash92.C4
-rw-r--r--gcc/testsuite/g++.dg/template/current-inst1.C19
-rw-r--r--gcc/testsuite/g++.dg/template/defarg6.C6
-rw-r--r--gcc/testsuite/g++.dg/template/enum7.C8
-rw-r--r--gcc/testsuite/g++.dg/template/inherit8.C4
-rw-r--r--gcc/testsuite/g++.dg/template/injected1.C2
-rw-r--r--gcc/testsuite/g++.dg/template/overload10.C4
-rw-r--r--gcc/testsuite/g++.dg/template/param1.C4
-rw-r--r--gcc/testsuite/g++.dg/template/ref6.C15
-rw-r--r--gcc/testsuite/g++.dg/template/sfinae10.C55
-rw-r--r--gcc/testsuite/g++.dg/template/sfinae6_neg.C8
-rw-r--r--gcc/testsuite/g++.dg/template/spec25.C4
-rw-r--r--gcc/testsuite/g++.dg/template/typedef11.C6
-rw-r--r--gcc/testsuite/g++.dg/template/typedef39.C15
-rw-r--r--gcc/testsuite/g++.dg/template/using21.C43
-rw-r--r--gcc/testsuite/g++.dg/template/using22.C51
-rw-r--r--gcc/testsuite/g++.dg/torture/pr50672.C22
-rw-r--r--gcc/testsuite/g++.dg/torture/pr53321.C36
-rw-r--r--gcc/testsuite/g++.dg/torture/pr53970.C17
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr53844.C78
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-var-17.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.jason/overload20.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.martin/ambig1.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.martin/typedef2.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/pmf3.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/overload1.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/ambig1.C12
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/lineno2.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/crash58.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/koenig1.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/overload5.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.warn/impint.C4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20000326-1.c13
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20001226-1.c4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20101216-1.c32
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20120524-1.c4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20120727-1.c13
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20120727-2.c13
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr38621.c16
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr39423-1.c22
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr39423-2.c57
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr50380.c16
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr53411.c33
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr53495.c41
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr53886.c68
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr54321.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/unalign-1.c15
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20101011-1.c28
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20120808-1.c37
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20120817-1.c14
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/bswap-1.c51
-rw-r--r--gcc/testsuite/gcc.dg/20020201-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/align-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/attr-hotcold-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/builtin-unreachable-5.c23
-rw-r--r--gcc/testsuite/gcc.dg/builtin-unreachable-6.c21
-rw-r--r--gcc/testsuite/gcc.dg/cpp/_Pragma7.c14
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-1.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-2.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-3.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-4.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-accum-neg.c33
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-float-1.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-float-2.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-float-3.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-float-4.c20
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert-sat.c45
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/convert.h (renamed from gcc/testsuite/gcc.dg/fixed-point/convert.c)91
-rw-r--r--gcc/testsuite/gcc.dg/fold-notunord.c10
-rw-r--r--gcc/testsuite/gcc.dg/fold-perm.c19
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr53992.c21
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr54200.c28
-rw-r--r--gcc/testsuite/gcc.dg/ipa/iinline-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/ipa/iinline-4.c221
-rw-r--r--gcc/testsuite/gcc.dg/ipa/iinline-5.c124
-rw-r--r--gcc/testsuite/gcc.dg/ipa/iinline-6.c72
-rw-r--r--gcc/testsuite/gcc.dg/ipa/iinline-7.c157
-rw-r--r--gcc/testsuite/gcc.dg/ipa/inlinehint-1.c16
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/20120723_0.c52
-rw-r--r--gcc/testsuite/gcc.dg/lto/20120723_1.c39
-rw-r--r--gcc/testsuite/gcc.dg/matrix/matrix.exp67
-rw-r--r--gcc/testsuite/gcc.dg/no-strict-overflow-4.c5
-rw-r--r--gcc/testsuite/gcc.dg/plugin/selfassign.c8
-rw-r--r--gcc/testsuite/gcc.dg/pr45259.c3
-rw-r--r--gcc/testsuite/gcc.dg/pr46309.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr51879-16.c32
-rw-r--r--gcc/testsuite/gcc.dg/pr51879-17.c32
-rw-r--r--gcc/testsuite/gcc.dg/pr51879-18.c17
-rw-r--r--gcc/testsuite/gcc.dg/pr51879-7.c18
-rw-r--r--gcc/testsuite/gcc.dg/pr53701.c59
-rw-r--r--gcc/testsuite/gcc.dg/pr53849.c14
-rw-r--r--gcc/testsuite/gcc.dg/pr53881-1.c22
-rw-r--r--gcc/testsuite/gcc.dg/pr53881-2.c19
-rw-r--r--gcc/testsuite/gcc.dg/pr53887.c24
-rw-r--r--gcc/testsuite/gcc.dg/pr53942.c34
-rw-r--r--gcc/testsuite/gcc.dg/pr54355.c11
-rw-r--r--gcc/testsuite/gcc.dg/pr54363.c12
-rw-r--r--gcc/testsuite/gcc.dg/predict-7.c17
-rw-r--r--gcc/testsuite/gcc.dg/stack-usage-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/strict-overflow-4.c5
-rw-r--r--gcc/testsuite/gcc.dg/strlenopt-11.c6
-rw-r--r--gcc/testsuite/gcc.dg/strlenopt-13.c8
-rw-r--r--gcc/testsuite/gcc.dg/tm/memopt-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/Wsizeof-pointer-memaccess1.c698
-rw-r--r--gcc/testsuite/gcc.dg/torture/builtins-1.c9
-rw-r--r--gcc/testsuite/gcc.dg/torture/matrix-1.c (renamed from gcc/testsuite/gcc.dg/matrix/matrix-1.c)4
-rw-r--r--gcc/testsuite/gcc.dg/torture/matrix-2.c (renamed from gcc/testsuite/gcc.dg/matrix/matrix-2.c)4
-rw-r--r--gcc/testsuite/gcc.dg/torture/matrix-3.c (renamed from gcc/testsuite/gcc.dg/matrix/matrix-3.c)2
-rw-r--r--gcc/testsuite/gcc.dg/torture/matrix-4.c (renamed from gcc/testsuite/gcc.dg/matrix/matrix-4.c)2
-rw-r--r--gcc/testsuite/gcc.dg/torture/matrix-5.c (renamed from gcc/testsuite/gcc.dg/matrix/matrix-5.c)4
-rw-r--r--gcc/testsuite/gcc.dg/torture/matrix-6.c (renamed from gcc/testsuite/gcc.dg/matrix/matrix-6.c)8
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr53908.c288
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr53922.c22
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr54027.c9
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr54098.c72
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr54109.c29
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr54261-1.c42
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr54327.c15
-rw-r--r--gcc/testsuite/gcc.dg/torture/pta-callused-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/transpose-1.c (renamed from gcc/testsuite/gcc.dg/matrix/transpose-1.c)7
-rw-r--r--gcc/testsuite/gcc.dg/torture/transpose-2.c (renamed from gcc/testsuite/gcc.dg/matrix/transpose-2.c)5
-rw-r--r--gcc/testsuite/gcc.dg/torture/transpose-3.c (renamed from gcc/testsuite/gcc.dg/matrix/transpose-3.c)6
-rw-r--r--gcc/testsuite/gcc.dg/torture/transpose-4.c (renamed from gcc/testsuite/gcc.dg/matrix/transpose-4.c)6
-rw-r--r--gcc/testsuite/gcc.dg/torture/transpose-5.c (renamed from gcc/testsuite/gcc.dg/matrix/transpose-5.c)6
-rw-r--r--gcc/testsuite/gcc.dg/torture/transpose-6.c (renamed from gcc/testsuite/gcc.dg/matrix/transpose-6.c)6
-rw-r--r--gcc/testsuite/gcc.dg/torture/vector-shuffle1.c21
-rw-r--r--gcc/testsuite/gcc.dg/tree-prof/update-loopch.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/alias-11.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/alias-19.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/alias-21.c15
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/alias-22.c15
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/alias-6.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/asm-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c28
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c15
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loop-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c12
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr18908.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr19431.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr36881.c5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr54211.c28
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr54245.c49
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pta-escape-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pta-escape-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pta-escape-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c23
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c24
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c30
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c25
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c32
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c27
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-16.c28
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-17.c31
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-18.c32
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-19.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-20.c21
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-21.c32
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-22.c29
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-23.c29
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-24.c31
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-25.c31
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-26.c32
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-27.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-28.c26
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-29.c28
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c24
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c27
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c25
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c23
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c23
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c20
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c21
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c25
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vector-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp72.c30
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp73.c30
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp74.c23
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp75.c31
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp76.c35
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp77.c47
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp78.c34
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp79.c23
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr53773.c20
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-25.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/div64-unwinding.c24
-rw-r--r--gcc/testsuite/gcc.target/arm/fma-sp.c13
-rw-r--r--gcc/testsuite/gcc.target/arm/fma.c13
-rw-r--r--gcc/testsuite/gcc.target/arm/fma.h50
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c16
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-1.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-10.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-11.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-12.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-13.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-14.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-15.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-16.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-17.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-18.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-19.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-2.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-3.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-4.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-5.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-6.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-7.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-8.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vdup-9.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vtrnf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vtrns32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vtrnu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vzipf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vzips32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vzipu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/pr53859.c11
-rw-r--r--gcc/testsuite/gcc.target/arm/pr54051.c20
-rw-r--r--gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c11
-rw-r--r--gcc/testsuite/gcc.target/arm/vfp-1.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/20011127-1.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-1-v10.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-1-v32.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-2i.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-2s.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-3i.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-3s.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-4i.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-4s.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/sync-xchg-1.c21
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1ml.c4
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2ml.c4
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3ml.c4
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1.c19
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1ml.c4
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1ml.c4
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2ml.c4
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3ml.c4
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1.c2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1a.c1
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1ml.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx32-2.c27
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx64-1.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx64-2.c27
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-check.h40
-rw-r--r--gcc/testsuite/gcc.target/i386/asm-dialect-1.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/i386.exp12
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-64-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-64-2.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-64-3.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-64-4.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-80-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-80-2.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-80-3.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-80-4.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-80-5.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-80-6.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/long-double-80-7.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/perm-concat.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/pr20020-1.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr20020-2.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/pr20020-3.c27
-rw-r--r--gcc/testsuite/gcc.target/i386/pr46254.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/pr52857-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr52857-2.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr53907.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr54157.c21
-rw-r--r--gcc/testsuite/gcc.target/i386/prefetchw-1.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/rdseed16-1.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/rdseed32-1.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/rdseed64-1.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-12.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-13.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-14.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-22.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-23.c2
-rw-r--r--gcc/testsuite/gcc.target/m68k/pr36134.c9
-rw-r--r--gcc/testsuite/gcc.target/m68k/stack-limit-1.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/20020620-1.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/asm-1.c1
-rw-r--r--gcc/testsuite/gcc.target/mips/atomic-memory-2.c9
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-10.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-11.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-12.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-13.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-8.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-9.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-cost-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-cost-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/cache-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/call-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/call-2.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/call-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/call-4.c9
-rw-r--r--gcc/testsuite/gcc.target/mips/call-saved-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/call-saved-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/clear-cache-1.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/clear-cache-2.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-1.c25
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-2.c24
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-3.c24
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-4.c43
-rw-r--r--gcc/testsuite/gcc.target/mips/const-anchor-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/const-anchor-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/div-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-10.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-11.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-12.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/dse-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/dsp-ctrl.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/dsp-lhx.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/dsp-no-lhx.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/dspr2-MULT.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/dspr2-MULTU.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-1.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-2.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-3.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-4.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/ext_ins.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/extend-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/extend-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-10.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-11.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-12.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-13.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-14.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-15.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-10.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-11.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-12.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-7.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-8.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-9.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fixed-scalar-type.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fixed-vector-type.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpcmp-1.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/fpcmp-2.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/ins-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ins-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/int-moves-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/int-moves-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/interrupt_handler-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/interrupt_handler-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/lazy-binding-1.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/long-calls-pg.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-7.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-8.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-9.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/memcpy-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-5.c9
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-7.c9
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-type-2.c31
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-type.c29
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-sched-madd.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips.exp20
-rw-r--r--gcc/testsuite/gcc.target/mips/mips16e-extends.c11
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32-dsp-run.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32-dsp-type.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32-dsp.c200
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32-dspr2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/movcc-1.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/movcc-2.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/movcc-3.c19
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-7.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-8.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-10.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-11.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-12.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-13.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-14.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-15.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-16.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-17.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-18.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-19.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-8.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-9.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/near-far-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/near-far-4.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/neg-abs-1.c10
-rw-r--r--gcc/testsuite/gcc.target/mips/neg-abs-2.c10
-rw-r--r--gcc/testsuite/gcc.target/mips/nmadd-1.c11
-rw-r--r--gcc/testsuite/gcc.target/mips/nmadd-2.c11
-rw-r--r--gcc/testsuite/gcc.target/mips/nmadd-3.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/no-dsp-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-baddu-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-bbit-1.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-bbit-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-bbit-3.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-cins-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-cins-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-dmul-2.c1
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-dmul-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-7.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-pipe-1.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-pop-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-pop-2.c11
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-seq-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-seq-4.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-lx-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-lx-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-lx-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/pr26765.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr33256.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr33635-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr33755.c1
-rw-r--r--gcc/testsuite/gcc.target/mips/pr35802.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr45074.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr54240.c28
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-1.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-2.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-3.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/sb1-1.c11
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-4.c7
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-1.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-2.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-3.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-4.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-lwxs.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/soft-float-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/stack-1.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/timode-1.c45
-rw-r--r--gcc/testsuite/gcc.target/mips/timode-2.c57
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/unaligned-1.c45
-rw-r--r--gcc/testsuite/gcc.target/mips/vr-mult-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/vr-mult-2.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr54240.c27
-rw-r--r--gcc/testsuite/gcc.target/powerpc/rs6000-power2-1.c21
-rw-r--r--gcc/testsuite/gcc.target/powerpc/rs6000-power2-2.c22
-rw-r--r--gcc/testsuite/gcc.target/sh/pr21255-3.c1
-rw-r--r--gcc/testsuite/gcc.target/sh/pr33135-1.c32
-rw-r--r--gcc/testsuite/gcc.target/sh/pr33135-2.c32
-rw-r--r--gcc/testsuite/gcc.target/sh/pr33135-3.c32
-rw-r--r--gcc/testsuite/gcc.target/sh/pr33135-4.c32
-rw-r--r--gcc/testsuite/gcc.target/sh/pr39423-1.c48
-rw-r--r--gcc/testsuite/gcc.target/sh/pr39423-2.c14
-rw-r--r--gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-1.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-3.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr50749-sf-predec-1.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr50749-sf-predec-3.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr50751-8.c100
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-1.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-10.c27
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-11.c24
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-4.c19
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-5.c50
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-6.c15
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-7.c26
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-8.c27
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51244-9.c35
-rw-r--r--gcc/testsuite/gcc.target/sh/pr52933-1.c168
-rw-r--r--gcc/testsuite/gcc.target/sh/pr52933-2.c12
-rw-r--r--gcc/testsuite/gcc.target/sh/pr53511-1.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr53512-1.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr53512-3.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr53568-1.c82
-rw-r--r--gcc/testsuite/gcc.target/sh/pr54089-1.c83
-rw-r--r--gcc/testsuite/gcc.target/sh/pr54089-2.c22
-rw-r--r--gcc/testsuite/gcc.target/sh/pr54236-1.c76
-rw-r--r--gcc/testsuite/gcc.target/sh/prefetch.c2
-rw-r--r--gcc/testsuite/gfortran.dg/abstract_type_6.f032
-rw-r--r--gcc/testsuite/gfortran.dg/array_5.f9024
-rw-r--r--gcc/testsuite/gfortran.dg/array_constructor_38.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/array_constructor_39.f9013
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_1.f90145
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_10.f90106
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_11.f9052
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_12.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_1_c.c16
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_2.f90135
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_3.f9019
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_4.f9050
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_5.f909
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_6.f9039
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_7.f9064
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_8.f9071
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_8_c.c25
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_9.f90139
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_bounds_1.f90143
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_rank_bounds_2.f90112
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_type_3.f904
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_array_params.f033
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_array_params_2.f9020
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_procs.f031
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_13.f032
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_18.f901
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_26.f9014
-rw-r--r--gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_5.f9027
-rw-r--r--gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f9015
-rw-r--r--gcc/testsuite/gfortran.dg/c_funloc_tests_5.f035
-rw-r--r--gcc/testsuite/gfortran.dg/c_funloc_tests_6.f9031
-rw-r--r--gcc/testsuite/gfortran.dg/c_funloc_tests_7.f9022
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_allocate_1.f9095
-rw-r--r--gcc/testsuite/gfortran.dg/contiguous_1.f904
-rw-r--r--gcc/testsuite/gfortran.dg/data_constraints_1.f901
-rw-r--r--gcc/testsuite/gfortran.dg/data_constraints_3.f908
-rw-r--r--gcc/testsuite/gfortran.dg/do_5.f9029
-rw-r--r--gcc/testsuite/gfortran.dg/dummy_procedure_5.f902
-rw-r--r--gcc/testsuite/gfortran.dg/dummy_procedure_8.f9088
-rw-r--r--gcc/testsuite/gfortran.dg/g77/19990826-3.f2
-rw-r--r--gcc/testsuite/gfortran.dg/g77/20020307-1.f2
-rw-r--r--gcc/testsuite/gfortran.dg/g77/980310-3.f4
-rw-r--r--gcc/testsuite/gfortran.dg/include_3.f951
-rw-r--r--gcc/testsuite/gfortran.dg/include_6.f905
-rw-r--r--gcc/testsuite/gfortran.dg/include_7.f905
-rw-r--r--gcc/testsuite/gfortran.dg/inline_sum_4.f9019
-rw-r--r--gcc/testsuite/gfortran.dg/interface_26.f902
-rw-r--r--gcc/testsuite/gfortran.dg/interface_37.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/interop_params.f031
-rw-r--r--gcc/testsuite/gfortran.dg/intrinsic_shadow_4.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/module_procedure_double_colon_3.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/module_procedure_double_colon_4.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/oldstyle_4.f9013
-rw-r--r--gcc/testsuite/gfortran.dg/pr37243.f10
-rw-r--r--gcc/testsuite/gfortran.dg/pr48636.f9037
-rw-r--r--gcc/testsuite/gfortran.dg/proc_decl_28.f9015
-rw-r--r--gcc/testsuite/gfortran.dg/proc_decl_29.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_11.f906
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_15.f908
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_32.f902
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_37.f9015
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f906
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_35.f9035
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_result_5.f903
-rw-r--r--gcc/testsuite/gfortran.dg/public_private_module_6.f9014
-rw-r--r--gcc/testsuite/gfortran.dg/real_compare_1.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_call_24.f0324
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_override_1.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_override_3.f9034
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_20.f903
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_26.f9038
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_27.f0390
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_6.f032
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_9.f032
-rw-r--r--gcc/testsuite/gfortran.dg/vect/vect-gems.f906
-rw-r--r--gcc/testsuite/gfortran.dg/warn_conversion_4.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/warn_target_lifetime_1.f9047
-rw-r--r--gcc/testsuite/gfortran.dg/warn_target_lifetime_2.f9010
-rw-r--r--gcc/testsuite/gnat.dg/aggr20.adb10
-rw-r--r--gcc/testsuite/gnat.dg/aggr20.ads24
-rw-r--r--gcc/testsuite/gnat.dg/aggr20_pkg.ads9
-rw-r--r--gcc/testsuite/gnat.dg/derived_type3.adb9
-rw-r--r--gcc/testsuite/gnat.dg/derived_type3_pkg.adb42
-rw-r--r--gcc/testsuite/gnat.dg/derived_type3_pkg.ads6
-rw-r--r--gcc/testsuite/gnat.dg/discr37.adb12
-rw-r--r--gcc/testsuite/gnat.dg/discr37.ads22
-rw-r--r--gcc/testsuite/gnat.dg/discr38.adb40
-rw-r--r--gcc/testsuite/gnat.dg/loop_optimization11.adb19
-rw-r--r--gcc/testsuite/gnat.dg/loop_optimization11_pkg.ads11
-rw-r--r--gcc/testsuite/gnat.dg/noreturn4.adb21
-rw-r--r--gcc/testsuite/gnat.dg/noreturn4.ads10
-rw-r--r--gcc/testsuite/gnat.dg/noreturn4_pkg.ads18
-rw-r--r--gcc/testsuite/gnat.dg/noreturn5.adb30
-rw-r--r--gcc/testsuite/gnat.dg/noreturn5.ads8
-rw-r--r--gcc/testsuite/gnat.dg/opt25.adb17
-rw-r--r--gcc/testsuite/gnat.dg/opt25_pkg1.adb10
-rw-r--r--gcc/testsuite/gnat.dg/opt25_pkg1.ads11
-rw-r--r--gcc/testsuite/gnat.dg/opt25_pkg2.adb8
-rw-r--r--gcc/testsuite/gnat.dg/opt25_pkg2.ads20
-rw-r--r--gcc/testsuite/gnat.dg/recursive_call.adb10
-rw-r--r--gcc/testsuite/go.test/test/named1.go4
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp2
-rw-r--r--gcc/testsuite/lib/scanasm.exp5
-rw-r--r--gcc/testsuite/lib/target-supports.exp52
-rw-r--r--gcc/timevar.def24
-rw-r--r--gcc/toplev.c6
-rw-r--r--gcc/tracer.c9
-rw-r--r--gcc/trans-mem.c20
-rw-r--r--gcc/tree-affine.c2
-rw-r--r--gcc/tree-call-cdce.c21
-rw-r--r--gcc/tree-cfg.c285
-rw-r--r--gcc/tree-cfgcleanup.c41
-rw-r--r--gcc/tree-chrec.c2
-rw-r--r--gcc/tree-complex.c34
-rw-r--r--gcc/tree-data-ref.c2
-rw-r--r--gcc/tree-dfa.c387
-rw-r--r--gcc/tree-diagnostic.c2
-rw-r--r--gcc/tree-dump.c1
-rw-r--r--gcc/tree-dump.h4
-rw-r--r--gcc/tree-eh.c21
-rw-r--r--gcc/tree-emutls.c4
-rw-r--r--gcc/tree-flow-inline.h119
-rw-r--r--gcc/tree-flow.h97
-rw-r--r--gcc/tree-if-conv.c34
-rw-r--r--gcc/tree-inline.c228
-rw-r--r--gcc/tree-inline.h2
-rw-r--r--gcc/tree-into-ssa.c1195
-rw-r--r--gcc/tree-loop-distribution.c38
-rw-r--r--gcc/tree-mudflap.c13
-rw-r--r--gcc/tree-nested.c28
-rw-r--r--gcc/tree-nrv.c4
-rw-r--r--gcc/tree-object-size.c15
-rw-r--r--gcc/tree-optimize.c2
-rw-r--r--gcc/tree-outof-ssa.c20
-rw-r--r--gcc/tree-parloops.c81
-rw-r--r--gcc/tree-pass.h102
-rw-r--r--gcc/tree-phinodes.c22
-rw-r--r--gcc/tree-predcom.c59
-rw-r--r--gcc/tree-pretty-print.c52
-rw-r--r--gcc/tree-profile.c63
-rw-r--r--gcc/tree-scalar-evolution.c8
-rw-r--r--gcc/tree-sra.c269
-rw-r--r--gcc/tree-ssa-address.c10
-rw-r--r--gcc/tree-ssa-alias.c60
-rw-r--r--gcc/tree-ssa-alias.h9
-rw-r--r--gcc/tree-ssa-ccp.c111
-rw-r--r--gcc/tree-ssa-coalesce.c239
-rw-r--r--gcc/tree-ssa-copy.c18
-rw-r--r--gcc/tree-ssa-copyrename.c108
-rw-r--r--gcc/tree-ssa-dce.c26
-rw-r--r--gcc/tree-ssa-dom.c68
-rw-r--r--gcc/tree-ssa-dse.c14
-rw-r--r--gcc/tree-ssa-forwprop.c317
-rw-r--r--gcc/tree-ssa-ifcombine.c172
-rw-r--r--gcc/tree-ssa-live.c375
-rw-r--r--gcc/tree-ssa-live.h37
-rw-r--r--gcc/tree-ssa-loop-ch.c6
-rw-r--r--gcc/tree-ssa-loop-im.c114
-rw-r--r--gcc/tree-ssa-loop-ivcanon.c2
-rw-r--r--gcc/tree-ssa-loop-ivopts.c342
-rw-r--r--gcc/tree-ssa-loop-manip.c318
-rw-r--r--gcc/tree-ssa-loop-niter.c9
-rw-r--r--gcc/tree-ssa-loop-prefetch.c3
-rw-r--r--gcc/tree-ssa-loop-unswitch.c2
-rw-r--r--gcc/tree-ssa-loop.c9
-rw-r--r--gcc/tree-ssa-math-opts.c239
-rw-r--r--gcc/tree-ssa-operands.c94
-rw-r--r--gcc/tree-ssa-operands.h3
-rw-r--r--gcc/tree-ssa-phiopt.c72
-rw-r--r--gcc/tree-ssa-phiprop.c11
-rw-r--r--gcc/tree-ssa-pre.c280
-rw-r--r--gcc/tree-ssa-propagate.c15
-rw-r--r--gcc/tree-ssa-reassoc.c94
-rw-r--r--gcc/tree-ssa-sccvn.c165
-rw-r--r--gcc/tree-ssa-sccvn.h2
-rw-r--r--gcc/tree-ssa-sink.c10
-rw-r--r--gcc/tree-ssa-strlen.c24
-rw-r--r--gcc/tree-ssa-structalias.c112
-rw-r--r--gcc/tree-ssa-tail-merge.c94
-rw-r--r--gcc/tree-ssa-ter.c38
-rw-r--r--gcc/tree-ssa-threadedge.c5
-rw-r--r--gcc/tree-ssa-threadupdate.c111
-rw-r--r--gcc/tree-ssa-uncprop.c12
-rw-r--r--gcc/tree-ssa-uninit.c25
-rw-r--r--gcc/tree-ssa.c118
-rw-r--r--gcc/tree-ssanames.c73
-rw-r--r--gcc/tree-stdarg.c57
-rw-r--r--gcc/tree-switch-conversion.c547
-rw-r--r--gcc/tree-tailcall.c73
-rw-r--r--gcc/tree-vect-data-refs.c173
-rw-r--r--gcc/tree-vect-generic.c179
-rw-r--r--gcc/tree-vect-loop-manip.c101
-rw-r--r--gcc/tree-vect-loop.c310
-rw-r--r--gcc/tree-vect-patterns.c71
-rw-r--r--gcc/tree-vect-slp.c182
-rw-r--r--gcc/tree-vect-stmts.c616
-rw-r--r--gcc/tree-vectorizer.c4
-rw-r--r--gcc/tree-vectorizer.h184
-rw-r--r--gcc/tree-vrp.c668
-rw-r--r--gcc/tree.c147
-rw-r--r--gcc/tree.def4
-rw-r--r--gcc/tree.h1015
-rw-r--r--gcc/valtrack.c490
-rw-r--r--gcc/valtrack.h75
-rw-r--r--gcc/value-prof.c156
-rw-r--r--gcc/var-tracking.c23
-rw-r--r--gcc/varasm.c6
-rw-r--r--gcc/vec.c147
-rw-r--r--gcc/vec.h1741
-rw-r--r--gcc/web.c1
1798 files changed, 162266 insertions, 90152 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c08b5cd45a3..d6525216a6d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7806 @@
+2012-08-28 Walter Lee <walt@tilera.com>
+ * confg/tilegx/tilegx.md: Fix code style.
+ (*zero_extendsidi_truncdisi): Fix typo.
+ * config/tilegx/tilegx.c: Fix code style.
+ (tilegx_function_profiler): Fix typo.
+
+2012-08-28 Walter Lee <walt@tilera.com>
+
+ * doc/invoke.texi: Document -mcmodel=small, -mcmodel=large.
+ * config/tilegx/tilegx.h: Include config/tilegx/tilegx-opts.h.
+ (CRT_CALL_STATIC_FUNCTION): Define.
+ * config/tilegx/predicates.md (const_last_symbolic_operand):
+ Handle UNSPEC_HW2_LAST_PCREL, UNSPEC_HW1_LAST_PLT_PCREL, and
+ UNSPEC_HW2_LAST_PLT_PCREL.
+ (const_symbolic_operand): Handle UNSPEC_HW1_PCREL,
+ UNSPEC_HW0_PLT_PCREL, and UNSPEC_HW1_PLT_PCREL.
+ * config/tilegx/tilegx.md (UNSPEC_MOV_LARGE_PCREL_STEP4): Define,
+ and renumber the constants that follow.
+ (UNSPEC_HW1_PCREL): Ditto.
+ (UNSPEC_HW2_LAST_PCREL): Ditto.
+ (UNSPEC_HW0_PLT_PCREL): Define.
+ (UNSPEC_HW1_PLT_PCREL): Define.
+ (UNSPEC_HW1_LAST_PLT_PCREL): Define.
+ (UNSPEC_HW2_LAST_PLT_PCREL): Define.
+ (mov_large_pcrel_step1): Define.
+ (mov_large_pcrel_step2): Define.
+ (mov_large_pcrel_step3): Define.
+ (mov_large_pcrel_step4): Define.
+ (mov_plt_pcrel_step1): Define.
+ (mov_plt_pcrel_step2): Define.
+ (mov_plt_pcrel_step3): Define.
+ (mov_plt_pcrel_step1_32bit): Define.
+ (mov_plt_pcrel_step2_32bit): Define.
+ (call): Handle tilegx_cmodel == CM_LARGE, CM_LARGE_PIC.
+ (call_value): Ditto.
+ * config/tilegx/tilegx.opt: Include config/tilegx/tilegx-opts.h.
+ (mcmodel): New option.
+ (enum cmodel): Define.
+ (CM_SMALL): Define.
+ (CM_LARGE): Define.
+ * config/tilegx/tilegx-opts.h: New file.
+ * config/tilegx/tilegx-protos.h (tilegx_compute_pcrel_address):
+ Declare.
+ (tilegx_compute_pcrel_plt_address): Declare.
+ * config/tilegx/tilegx.c (tilegx_option_override): Handle
+ tilegx_cmodel.
+ (tilegx_function_ok_for_sibcall): Ditto.
+ (compute_pcrel_address): Rename to tilegx_compute_pcrel_address,
+ and don't declare static. Handle tilegx_cmodel.
+ (tilegx_compute_pcrel_plt_address): Define.
+ (tilegx_legitimize_pic_address): Rename calls to
+ compute_pcrel_address.
+ (tilegx_delegitimize_address): Handle UNSPEC_HW1_PCREL,
+ UNSPEC_HW2_LAST_PCREL, UNSPEC_HW0_PLT_PCREL, UNSPEC_HW1_PLT_PCREL,
+ UNSPEC_HW1_LAST_PLT_PCREL, UNSPEC_HW2_LAST_PLT_PCREL.
+ (load_pic_register): Rename call to compute_pcrel_address.
+ (tilegx_print_operand): Handle UNSPEC_HW1_PCREL,
+ UNSPEC_HW2_LAST_PCREL, UNSPEC_HW0_PLT_PCREL, UNSPEC_HW1_PLT_PCREL,
+ UNSPEC_HW1_LAST_PLT_PCREL, UNSPEC_HW2_LAST_PLT_PCREL.
+
+2012-08-27 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * sched-deps.c (add_dependence_list_and_free): Simplify.
+ (flush_pending_list_and_free): Fix a hack that was fixing a hack. Free
+ lists when add_dependence_list_and_free doesn't free them.
+
+2012-08-27 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/46254
+ * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): Return
+ true for TARGET_64BIT or !flag_pic.
+ * config/i386/sync.md (*atomic_compare_and_swap_doubledi_pic): Remove.
+ (atomic_compare_and_swap_double<mode>): Change operand 2 predicate
+ to cmpxchg8b_pic_memory_operand. Use DWIH mode iterator.
+ Add insn constraint. Conditionally emit xchg asm insns.
+ (atomic_compare_and_swap<mode>): Update calls. Check only
+ cmpxchg8b_pic_memory_operand in memory address fixup.
+ (DCASMODE): Remove.
+ (CASHMODE): Rename from DCASHMODE.
+ (doublemodesuffix): Update modes.
+ (regprefix): New mode attribute.
+
+ (unspecv) <UNSPECV_CMPXCHG_{1,2,3,4}>: Remove.
+ <UNSPECV_CMPXCHG>: New constant.
+ (atomic_compare_and_swap<mode>_1): Rename from
+ atomic_compare_and_swap_single<mode>. Update calls and
+ unspec_volatile constants.
+ (atomic_compare_and_swap<mode>_doubleword): Rename from
+ atomic_compare_and_swap_double<mode>. Update calls and
+ unspec_volatile constants.
+
+2012-08-27 Walter Lee <walt@tilera.com>
+
+ * doc/md.texi (TILE-Gx): Fix typo.
+
+2012-08-27 Walter Lee <walt@tilera.com>
+
+ * config/tilegx/tilegx.c (tilegx_function_profiler): Fix typo.
+ * config/tilepro/tilepro.c (tilepro_function_profiler): Ditto.
+
+2012-08-27 Walter Lee <walt@tilera.com>
+
+ * config/tilegx/tilegx.md (*bfins): Rename to insn_bfins.
+ (insn_bfins): Delete.
+
+2012-08-27 Walter Lee <walt@tilera.com>
+
+ * config/tilegx/sync.md (atomic_compare_and_swap_bare<mode>,
+ atomic_exchange_bare<mode>,
+ atomic_fetch_<fetchop_name>_bare<mode>): Set type to X1_remote.
+ * config/tilegx/tilegx-generic.md (X1_remote): New
+ insn_reservation.
+ * config/tilegx/tilegx.md (type): Add X1_remove.
+ (insn_cmpexch<four_if_si>, insn_exch<four_if_si>,
+ insn_fetchadd<four_if_si>, insn_fetchaddgez<four_if_si>,
+ insn_fetchand<four_if_si>, insn_fetchor<four_if_si>): Set type to
+ X1_remote.
+
+2012-08-27 Andreas Schwab <schwab@linux-m68k.org>
+
+ * gdbinit.in: Fix syntax of skip command.
+
+2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (mips_pic_call_symbol_from_set): Check for
+ SYMBOL_REF SET_SRCs.
+
+2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (vr4130_align_insns): Don't simulate
+ ghost instructions. Assert that the required instructions exist.
+
+2012-08-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.h (AVOID_CCMODE_COPIES): Update rationale for
+ definition.
+ * config/mips/mips.c (machine_function): Add next_fcc.
+ (mips_output_move): Remove handling of fcc moves.
+ (mips_allocate_fcc): New function.
+ (mips_emit_compare, mips_expand_vcondv2sf): Use it.
+ (mips_hard_regno_mode_ok_p): Restrict CCmode to ST registers.
+ Remove special case for CCmode reloads.
+ (mips_expand_builtin_compare_1): Use mips_allocate_fcc and treat
+ the result a fixed operand.
+ * config/mips/mips.md (move_type): Remove lui_movf.
+ (type, length): Remove references to it.
+ (movcc, reload_incc, reload_outcc): Delete.
+
+2012-08-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (mips_has_long_branch_p): New function,
+ split out from...
+ (mips_expand_ghost_gp_insns): ...here. Look inside sequences.
+
+2012-08-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (r10k_safe_mem_expr_p): Use get_inner_reference.
+
+2012-08-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (mips_rtx_costs): Add costs for CINS.
+
+2012-08-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (mips_rtx_costs): Add missing COSTS_N_INSNS
+ to the size cost of multiplication.
+
+2012-08-26 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/install.texi (Specific): Clarify what needs to be added to
+ this section.
+
+2012-08-26 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/tm.texi.in (Misc): Move descriptions of NO_DOLLAR_IN_LABEL
+ and NO_DOT_IN_LABEL from here...
+ (Label Output): ...to here.
+ * doc/tm.texi: Regenerate.
+
+2012-08-26 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/invoke.texi (C++ Dialect Options): Add missing space.
+
+2012-08-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR rtl-optimization/54088
+ * jump.c (delete_related_insns): Robustify latest change.
+
+2012-08-25 Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
+
+ * doc/extend.texi (__atomic Builtins): Remove space before comma.
+
+2012-08-25 Richard Sandiford <rdsandiford@googlemail.com>
+ Andrew Pinski <apinski@cavium.com>
+
+ * config/mips/mips.h (CASE_VECTOR_MODE): For not
+ TARGET_MIPS16_SHORT_JUMP_TABLES use ptr_mode.
+ (CASE_VECTOR_SHORTEN_MODE): Likewise.
+
+2012-08-25 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.h (FP_REG_P): Remove macro.
+ (FP_REGNO_P): Ditto.
+ (HARD_REGNO_NREGS): Use STACK_REGNO_P instead of FP_REGNO_P.
+ (HARD_REGNO_NREGS_HAS_PADDING): Ditto.
+ (ANY_FP_REGNO_P): Ditto.
+ (HARD_REGNO_RENAME_OK): Use STACK_REGNO_P.
+ * config/i386/i386.c (output_387_ffreep): Use STACK_REGNO_P
+ instead of FP_REGNO_P.
+ (ix86_hard_regno_mode_ok): Ditto.
+ * config/i386/predicates.md (fp_register_operand): Ditto.
+ (register_and_not_fp_reg_operand): Ditto.
+ * config/i386/sync.md (atomic_loaddi_fpu): Use STACK_REG_P instead
+ of FP_REG_P.
+
+ * reg-stack.c (get_true_reg): Use STACK_REG_P instead of FP_REG_P.
+
+2012-08-24 Jason Merrill <jason@redhat.com>
+
+ * print-tree.c (print_node): Don't check TREE_LANG_FLAG_*
+ on TREE_VEC or SSA_NAME.
+
+2012-08-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/54363
+ * gimplify.c (optimize_compound_literals_in_ctor): Only recurse
+ if init is a CONSTRUCTOR.
+
+2012-08-24 Steven Bosscher <steven@gcc.gnu.org>
+
+ * tree-ssa-live.c (dump_var_map): Do not dump the partition
+ map of virtual operands.
+
+2012-08-24 Yuri Rumyantsev <ysrumyan@gmail.com>
+
+ * config/i386/i386.c (ia32_multipass_dfa_lookahead) : Add
+ case for Atom processor.
+
+2012-08-24 Simon Baldwin <simonb@google.com>
+
+ * dwarf2out.c (gen_producer_string): Omit command line switch if
+ CL_NO_DWARF_RECORD flag set.
+ * opts.h (CL_NO_DWARF_RECORD): New.
+ * opt-functions.awk (switch_flags): Add NoDWARFRecord.
+ * doc/options.texi: Document NoDWARFRecord option flag.
+
+2012-08-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR debug/52857
+ * dwarf2out.c (mem_loc_descriptor): Allow arg_pointer_rtx and
+ frame_pointer_rtx for based_loc_descr.
+
+2012-08-24 Martin Jambor <mjambor@suse.cz>
+
+ * predict.c (maybe_hot_frequency_p): New parameter fun. Use its decl
+ instead of current_function_decl, use profile_status_for_function and
+ ENTRY_BLOCK_PTR_FOR_FUNCTION with fun instead of their cfun variants.
+ (maybe_hot_count_p): New parameter fun, use
+ profile_status_for_function instead of its cfun_variant.
+ (maybe_hot_bb_p): New parameter fun, checking-assert it, pass it to
+ all callees.
+ (maybe_hot_edge_p): Pass cfun to maybe_hot_count_p and
+ maybe_hot_frequency_p.
+ (probably_never_executed_bb_p): New parameter fun, use its decl
+ instead of current_function_decl.
+ (optimize_bb_for_size_p): Pass cfun to maybe_hot_bb_p.
+ (rtl_profile_for_bb): Likewise.
+ (compute_function_frequency): Pass cfun to maybe_hot_bb_p and
+ probably_never_executed_bb_p.
+ * tree-ssa-operands.c (ssa_operands_active): New operator fun. Use it
+ instead of cfun.
+ (update_stmt_operands): Pass cfun as an argument of
+ ssa_operands_active.
+ (swap_tree_operands): Likewise.
+ * gimple-iterator.c (update_modified_stmt): Likewise.
+ (update_modified_stmts): Likewise.
+ * tree-flow-inline.h (delink_stmt_imm_use): Likewise.
+ * tree-ssa.c (delete_tree_ssa): Likewise.
+ * bb-reorder.c (bb_to_key): Pass cfun to probably_never_executed_bb_p.
+ (push_to_next_round_p): Likewise.
+ (find_rarely_executed_basic_blocks_and_crossing_edges ): Likewise.
+ * cfg.c: Inlude tree.h.
+ (check_bb_profile): Use profile_status_for_function,
+ EXIT_BLOCK_PTR_FOR_FUNCTION and ENTRY_BLOCK_PTR_FOR_FUNCTION with
+ DECL_STRUCT_FUNCTION (current_function_decl) instead of their cfun
+ variants.
+ (dump_bb_info): Pass DECL_STRUCT_FUNCTION (current_function_decl) to
+ maybe_hot_bb_p and probably_never_executed_bb_p.
+ * gimple-pretty-print.c (gimple_dump_bb_buff): Checking-assert that
+ DECL_STRUCT_FUNCTION (current_function_decl) is not NULL. Pass it to
+ dump_histograms_for_stmt.
+ (dump_gimple_mem_ops): Pass
+ DECL_STRUCT_FUNCTION (current_function_decl)
+ as an argument to dump_gimple_mem_ops.
+ * tree-cfg.c (dump_function_to_file): Rename parameter fn to fndecl.
+ Do not change cfun. Change and restore current_function_decl.
+ * Makefile.in (cfg.o): Include TREE_H in dependencies.
+
+2012-08-24 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54222
+ * avr-modes.def (HA, SA, DA, TA, UTA): Adjust modes.
+ * avr/avr-fixed.md: New file.
+ * avr/avr.md: Include it.
+ (cc): Add: minus.
+ (adjust_len): Add: minus, minus64, ufract, sfract.
+ (ALL1, ALL2, ALL4, ORDERED234): New mode iterators.
+ (MOVMODE): Add: QQ, UQQ, HQ, UHQ, HA, UHA, SQ, USQ, SA, USA.
+ (MPUSH): Add: HQ, UHQ, HA, UHA, SQ, USQ, SA, USA.
+ (pushqi1, xload8_A, xload_8, movqi_insn, *reload_inqi, addqi3,
+ subqi3, ashlqi3, *ashlqi3, ashrqi3, lshrqi3, *lshrqi3, *cmpqi,
+ cbranchqi4, *cpse.eq): Generalize to handle all 8-bit modes in ALL1.
+ (*movhi, reload_inhi, addhi3, *addhi3, addhi3_clobber, subhi3,
+ ashlhi3, *ashlhi3_const, ashrhi3, *ashirhi3_const, lshrhi3,
+ *lshrhi3_const, *cmphi, cbranchhi4): Generalize to handle all
+ 16-bit modes in ALL2.
+ (subhi3, casesi, strlenhi): Add clobber when expanding minus:HI.
+ (*movsi, *reload_insi, addsi3, subsi3, ashlsi3, *ashlsi3_const,
+ ashrsi3, *ashrhi3_const, *ashrsi3_const, lshrsi3, *lshrsi3_const,
+ *reversed_tstsi, *cmpsi, cbranchsi4): Generalize to handle all
+ 32-bit modes in ALL4.
+ * avr-dimode.md (ALL8): New mode iterator.
+ (adddi3, adddi3_insn, adddi3_const_insn, subdi3, subdi3_insn,
+ subdi3_const_insn, cbranchdi4, compare_di2,
+ compare_const_di2, ashrdi3, lshrdi3, rotldi3, ashldi3_insn,
+ ashrdi3_insn, lshrdi3_insn, rotldi3_insn): Generalize to handle
+ all 64-bit modes in ALL8.
+ * config/avr/avr-protos.h (avr_to_int_mode): New prototype.
+ (avr_out_fract, avr_out_minus, avr_out_minus64): New prototypes.
+ * config/avr/avr.c (TARGET_FIXED_POINT_SUPPORTED_P): Define to...
+ (avr_fixed_point_supported_p): ...this new static function.
+ (TARGET_BUILD_BUILTIN_VA_LIST): Define to...
+ (avr_build_builtin_va_list): ...this new static function.
+ (avr_adjust_type_node): New static function.
+ (avr_scalar_mode_supported_p): Allow if ALL_FIXED_POINT_MODE_P.
+ (avr_builtin_setjmp_frame_value): Use gen_subhi3 and return new
+ pseudo instead of gen_rtx_MINUS.
+ (avr_print_operand, avr_operand_rtx_cost): Handle: CONST_FIXED.
+ (notice_update_cc): Handle: CC_MINUS.
+ (output_movqi): Generalize to handle respective fixed-point modes.
+ (output_movhi, output_movsisf, avr_2word_insn_p): Ditto.
+ (avr_out_compare, avr_out_plus_1): Also handle fixed-point modes.
+ (avr_assemble_integer): Ditto.
+ (output_reload_in_const, output_reload_insisf): Ditto.
+ (avr_compare_pattern): Skip all modes > 4 bytes.
+ (avr_2word_insn_p): Skip movuqq_insn, movqq_insn.
+ (avr_out_fract, avr_out_minus, avr_out_minus64): New functions.
+ (avr_to_int_mode): New function.
+ (adjust_insn_length): Handle: ADJUST_LEN_SFRACT,
+ ADJUST_LEN_UFRACT, ADJUST_LEN_MINUS, ADJUST_LEN_MINUS64.
+ * config/avr/predicates.md (const0_operand): Allow const_fixed.
+ (const_operand, const_or_immediate_operand): New.
+ (nonmemory_or_const_operand): New.
+ * config/avr/constraints.md (Ynn, Y00, Y01, Y02, Ym1, Ym2, YIJ):
+ New constraints.
+ * config/avr/avr.h (LONG_LONG_ACCUM_TYPE_SIZE): Define.
+
+2012-08-23 Kenneth Zadeck <zadeck@naturalbridge.com>
+
+ * alias.c (rtx_equal_for_memref_p): Convert constant cases.
+ * combine.c (find_single_use_1, mark_used_regs_combine): Convert
+ to CASE_CONST_ANY.
+ * cse.c (exp_equiv_p, canon_reg, fold_rtx, cse_process_notes_1,
+ count_reg_usage): Convert constant cases.
+ * cselib.c (cselib_expand_value_rtx_1): Convert to CASE_CONST_ANY.
+ (cselib_subst_to_values): Convert constant cases.
+ * df-scan.c (df_uses_record): Ditto.
+ * dse.c (const_or_frame_p): Convert case statements to explicit
+ if-then-else using mode classes.
+ * emit-rtl.c (verify_rtx_sharing, copy_insn_1): Convert constant cases.
+ * explow.c (convert_memory_address_addr_space): Ditto.
+ * gcse.c (want_to_gcse_p, oprs_unchanged_p, compute_transp): Ditto.
+ * genattrtab.c (attr_copy_rtx, clear_struct_flag): Ditto.
+ * ira.c (equiv_init_varies_p, contains_replace_regs,
+ memref_referenced_p, rtx_moveable_p): Ditto.
+ * jump.c (mark_jump_label_1): Remove constant cases.
+ (rtx_renumbered_equal_p): Convert to CASE_CONST_UNIQUE.
+ * loop-invariant.c (check_maybe_invariant, hash_invariant_expr_1,
+ invariant_expr_equal_p): Convert to CASE_CONST_ANY.
+ * postreload-gcse.c (oprs_unchanged_p): Convert constant cases.
+ * reginfo.c (reg_scan_mark_refs): Ditto.
+ * regrename.c (scan_rtx): Ditto.
+ * reload1.c (eliminate_regs_1, elimination_effects,
+ scan_paradoxical_subregs): Ditto.
+ * reload.c (operands_match_p, subst_reg_equivs): Ditto.
+ * resource.c (mark_referenced_resources, mark_set_resources): Ditto.
+ * rtlanal.c (rtx_unstable_p, rtx_varies_p, count_occurrences)
+ (reg_mentioned_p, modified_between_p, modified_in_p)
+ (volatile_insn_p, volatile_refs_p, side_effects_p, may_trap_p_1,
+ inequality_comparisons_p, computed_jump_p_1): Ditto.
+ * rtl.c (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Ditto.
+ * sched-deps.c (sched_analyze_2): Ditto.
+ * valtrack.c (cleanup_auto_inc_dec): Ditto.
+ * rtl.h: (CASE_CONST_SCALAR_INT, CASE_CONST_UNIQUE,
+ CASE_CONST_ANY): New macros.
+
+2012-08-23 Julian Brown <julian@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * config/mips/mips.md
+ (UNSPEC_CASESI_DISPATCH): New.
+ (MIPS16_T_REGNUM): New constant.
+ (tablejump): Don't use for MIPS16_SHORT_JUMP_TABLES.
+ (casesi): New.
+ (casesi_internal_mips16_<mode>): New.
+ * config/mips/mips.c (mips16_split_long_branches): Adjust test
+ to ignore casesi jump tables.
+ * config/mips/mips.h (TARGET_MIPS16_SHORT_JUMP_TABLES): Update
+ comment.
+ (CASE_VECTOR_MODE): Use SImode unconditionally.
+ (CASE_VECTOR_SHORTEN_MODE): Define.
+ (ASM_OUTPUT_ADDR_DIFF_ELT): Output word-sized addr_diff_elts
+ when necessary for MIPS16_SHORT_JUMP_TABLES.
+
+2012-08-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_density_test): Free loop body.
+
+2012-08-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR driver/54335
+ * doc/invoke.texi: Add -da and remove -dm.
+
+2012-08-23 Richard Guenther <rguenther@suse.de>
+
+ * tree-vect-stmts.c (vect_finish_stmt_generation): Update
+ virtual SSA form.
+
+2012-08-23 Jakub Jelinek <jakub@redhat.com>
+
+ * tree.c (copy_node_stat): Clear DECL_STRUCT_FUNCTION.
+
+2012-08-23 Mingjie Xing <mingjie.xing@gmail.com>
+
+ * doc/gty.texi: Fix typo.
+
+2012-08-23 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-loop-manip.c (add_exit_phis_var): Allow virtual operands.
+ (find_uses_to_rename_use): Likewise.
+ (find_uses_to_rename_bb): Likewise.
+ (find_uses_to_rename_stmt): Walk over all operands.
+
+2012-08-22 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * config/sh/predicates (p27_rshift_count_operand,
+ not_p27_rshift_count_operand): New predicates.
+ * config/sh/sh.c (sh_ashlsi_clobbers_t_reg_p,
+ sh_lshrsi_clobbers_t_reg_p, sh_dynamicalize_shift_p): Handle special
+ case when shift amount is 31.
+ (gen_ashift): Emit gen_shlr instead of gen_lshrsi3_m.
+ * config/sh/sh.md (ashlsi3_d): Set type to 'dyn_shift' instead
+ of 'arith'.
+ (ashlsi_c): Rename to shll. Adapt calls to gen_ashlsi_c throughout
+ the file.
+ (lshrsi3): Remove clobber from expander. Use shift_count_operand
+ instead of nonmemory_operand predicate for second operand. Add
+ handling of case lshrsi3_n_clobbers_t.
+ (lshrsi3_k): Use p27_rshift_count_operand for second operand.
+ (lshrsi3_d): Make insn_and_split. Split dynamic shift to constant
+ shift sequences if beneficial.
+ (lshrsi3_n): Make insn_and_split. Split constant shift sequence to
+ dynamic shift if beneficial.
+ (lshrsi3_n_clobbers_t): New insn_and_split.
+ (lshrsi3_m): Delete.
+
+2012-08-22 Steven Bosscher <steven@gcc.gnu.org>
+
+ * tracer.c (mark_bb_seen): Use SBITMAP_SIZE.
+
+ * alias.c (MAX_ALIAS_LOOP_PASSES): Update comment with rationale,
+ or rather a lack thereof.
+ (init_alias_analysis): Propagate the latest information across
+ the CFG in topological order to propagate as far as possible in
+ each iteration. Ignore debug insns.
+
+2012-08-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ * doc/invoke.texi: Document -mlong-double-64/-mlong-double-80.
+
+ * config/i386/i386.c (flag_opts): Add -mlong-double-64.
+ (TARGET_HAS_BIONIC): Default long double to 64-bit for Bionic.
+
+ * config/i386/i386.h (LONG_DOUBLE_TYPE_SIZE): Use 64 if
+ TARGET_LONG_DOUBLE_64 is true.
+ (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): New macro.
+ (WIDEST_HARDWARE_FP_SIZE): Defined to 80.
+
+ * config/i386/i386.opt (mlong-double-80): New option.
+ (mlong-double-64): Likewise.
+
+ * config/i386/i386-c.c (ix86_target_macros): Define
+ __LONG_DOUBLE_64__ for TARGET_LONG_DOUBLE_64.
+
+2012-08-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/54347
+ * config/i386/i386.c (ix86_split_to_parts): Replace
+ REAL_VALUE_TO_TARGET_LONG_DOUBLE with real_to_target.
+
+2012-08-22 Richard Guenther <rguenther@suse.de>
+
+ * tree-vectorizer.c (vectorize_loops): Do not call
+ mark_virtual_operands_for_renaming.
+ * tree-vect-slp.c (vect_slp_transform_bb): Likewise.
+ Do not update SSA form here.
+
+2012-08-22 Dodji Seketeli <dodji@redhat.com>
+
+ * tree.h (TREE_NOTHROW): Use the base.nothrow_flag.
+
+2012-08-22 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46590
+ * tree-ssa-alias.h (get_continuation_for_phi): Add alias query
+ counter output argument.
+ (walk_non_aliased_vuses): Add alias query counter argument
+ to the walker callback.
+ * tree-ssa-alias.c (maybe_skip_until): Add alias query counter
+ output argument and count alias queries.
+ (get_continuation_for_phi_1): Likewise.
+ (get_continuation_for_phi): Likewise.
+ (walk_non_aliased_vuses): Add alias query counter argument
+ to the walker callback and allow it to abort the walk by
+ returning -1.
+ * tree-ssa-pre.c (translate_vuse_through_block): Adjust.
+ * tree-ssa-sccvn.c (vn_reference_lookup_2): Add alias query
+ counter parmeter, abort walk if that is bigger than
+ --param sccvn-max-alias-queries-per-access.
+ * params.def (sccvn-max-alias-queries-per-access): New param.
+ * doc/invoke.texi (sccvn-max-alias-queries-per-access): Document.
+
+2012-08-22 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-loop-ch.c (copy_loop_headers): Remove redundant checking.
+ * tree-into-ssa.c (initialize_flags_in_bb): Use gcc_checking_assert
+ instead of gcc_assert.
+ (mark_block_for_update): Likewise.
+ (add_new_name_mapping): Likewise.
+ (mark_def_sites): Likewise.
+ (insert_phi_nodes_for): Likewise.
+ (rewrite_debug_stmt_uses): Likewise.
+ (rewrite_stmt): Likewise.
+ (maybe_register_def): Likewise.
+ (rewrite_update_phi_arguments): Likewise.
+ (rewrite_update_enter_block): Likewise.
+ (mark_def_interesting): Likewise.
+ (prepare_def_site_for): Likewise.
+ (insert_updated_phi_nodes_for): Likewise.
+
+2012-08-22 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-vect-loop.c (vect_transform_loop): Initialize
+ check_profitability to false.
+
+ * tree-predcom.c (try_combine_chains): Free the worklist vector
+ at the end.
+
+2012-08-22 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/54317
+ * tree-vrp.c (extract_range_from_binary_expr_1): Test for
+ double_int overflow.
+ Remove dead tests.
+
+2012-08-22 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-vrp.c (find_assert_locations): Skip also edges
+ from the entry block.
+
+ * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Call
+ free_stmt_vec_info on orig_cond after gsi_removing it.
+ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Always
+ free body_cost_vec vector.
+ (vect_analyze_data_refs): If gather is unsuccessful,
+ free_data_ref (dr).
+ * tree-inline.c (tree_function_versioning): Free
+ old_transforms_to_apply vector.
+
+2012-08-22 Steven Bosscher <steven@gcc.gnu.org>
+
+ * tree-ssa-coalesce.c (struct ssa_conflicts_d): Make contents
+ of this a VEC and add a bitmap obstack.
+ (ssa_conflicts_new): Allocate the obstack and grow the VEC cleared
+ to the right size.
+ (ssa_conflicts_delete): Free the VEC and release the obstack.
+ (ssa_conflicts_test_p, ssa_conflicts_test_p, ssa_conflicts_add_one,
+ ssa_conflicts_merge, ssa_conflicts_dump): Update for above changes.
+ (truct live_track_d): Add another bitmap obstack here.
+ (new_live_track): Initialize it and use it for all bitmaps.
+ (delete_live_track): Don't free the bitmaps one at a time, just
+ release the obstack.
+ (create_outofssa_var_map): Fix to conform to GCC code style rules.
+
+2012-08-21 Nathan Froyd <froydnj@gcc.gnu.org>
+
+ * config/m32c/constraints.md: New file.
+ * config/m32c/t-m32c (MD_FILES): Add constraints.
+ * config/m32c/m32c-protos.h (m32c_const_ok_for_constraint_p): Delete.
+ (m32c_extra_address_constraint, m32c_extra_memory_constraint): Delete.
+ (m32c_reg_class_from_constraint): Delete.
+ (m32c_extra_constraint_p, m32c_extra_constraint_p2): Delete.
+ (m32c_matches_constraint_p): Declare.
+ * config/m32c/m32c.h (CONSTRAINT_LEN): Delete.
+ (REG_CLASS_FROM_CONSTRAINT): Delete.
+ (CONST_OK_FOR_CONSTRAINT_P): Delete.
+ (CONST_DOUBLE_OK_FOR_CONSTRAINT_P): Delete.
+ (EXTRA_CONSTRAINT_STR): Delete.
+ (EXTRA_MEMORY_CONSTRAINT, EXTRA_ADDRESS_CONSTRAINT): Delete.
+ * config/m32c/m32c.c: Include tm-constrs.h
+ (m32c_reg_class_from_constraint): Delete.
+ (m32c_const_ok_for_constraint_p): Delete.
+ (m32c_extra_constraint_p2): Rename to...
+ (m32c_matches_constraint_p): ...this. Make it return bool. Tweak
+ formatting.
+ (m32c_extra_constraint_p): Delete.
+ (m32c_extra_address_constraint, m32c_extra_memory_constraint): Delete.
+ (m32c_split_move): Use satisfies_constraint_Ss.
+ * config/m32c/predicates.md (memsym_operand): Use
+ satisfies_constraint_Si.
+ (memimmed_operand): Use satisfies_constraint_Sp.
+ (m32c_psi_scale, m32c_1bit8_operand): Use satisfies_constraint_Ilb.
+ (m32c_1bit16_operand): Use satisfies_constraint_Ilw.
+ (m32c_1mask8_operand): Use satisfies_constraint_ImB.
+ (m32c_1mask16_operand): Use satisfies_constraint_Imw.
+
+2012-08-21 Nathan Froyd <froydnj@gcc.gnu.org>
+
+ * config/mep/mep.h (REG_CLASS_FROM_CONSTRAINT): Delete.
+ (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
+ (CONSTRAINT_LEN, EXTRA_CONSTRAINT): Delete.
+ * config/mep/mep.c (mep_reg_class_from_constraint): Delete.
+ (mep_const_ok_for_letter_p, mep_extra_constraint): Delete.
+ * config/mep/mep-protos.h (mep_reg_class_from_constraint): Delete.
+ (mep_const_ok_for_letter_p, mep_extra_constraint): Delete.
+
+2012-08-21 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md (cmpeqdi_t, cmpgtdi_t, cmpgedi_t, cmpgeudi_t,
+ cmpgtudi_t, *movsicc_t_false, *movsicc_t_true, divsi_inv20, negsi_cond,
+ truncdihi2, ic_invalidate_line_i, ic_invalidate_line_sh4a,
+ ic_invalidate_line_media, movdf_i4, calli_pcrel, call_valuei,
+ call_valuei_pcrel, sibcalli_pcrel, sibcall_compact,
+ sibcall_valuei_pcrel, sibcall_value_compact, casesi_worker_1,
+ casesi_worker_2, bandreg_m2a, borreg_m2a, bxorreg_m2a, sp_switch_1,
+ sp_switch_2, stack_protect_set_si, stack_protect_set_si_media,
+ stack_protect_set_di_media, stack_protect_test_si,
+ stack_protect_test_si_media, stack_protect_test_di_media): Convert to
+ multi-line asm output strings.
+ (divsi_inv_qitable, divsi_inv_hitable): Use single-alternative asm
+ output.
+ (*andsi3_bclr, rotldi3_mextr, rotrdi3_mextr, calli,
+ call_valuei_tbr_rel, movml_push_banked, movml_pop_banked, bclr_m2a,
+ bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a, bldsign_m2a,
+ bld_reg, *bld_regqi, band_m2a, bor_m2a, bxor_m2a, mextr_rl, *mextr_lr):
+ Use tab char instead of '\\t'.
+ (iordi3): Use braced string.
+ (*movsi_pop): Use tab chars instead of spaces.
+
+2012-08-21 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * config/sh/sh.md (*movhi_index_disp): Add support for SH2A
+ movu.w insn.
+
+2012-08-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/54332
+ * df-scan.c (df_bb_verify): Restore df_free_collection_rec call
+ inside the insn traversal loop.
+
+ * vec.h (vec_reserve): Remove the stack allocation check.
+
+2012-08-21 Marc Glisse <marc.glisse@inria.fr>
+
+ * fold-const.c (fold_ternary_loc): Detect identity permutations.
+ Canonicalize permutations more.
+ * tree-ssa-forwprop.c (is_combined_permutation_identity): New function.
+ (simplify_permutation): Likewise.
+ (ssa_forward_propagate_and_combine): Call it.
+
+2012-08-21 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-loop-im.c (tree_ssa_lim_finalize): Properly free
+ the affine expansion cache.
+ * tree-ssa-dom.c (free_expr_hash_elt_contents): New function,
+ split out from ...
+ (free_expr_hash_elt): ... this one.
+ (record_cond): Properly free a not needed hashtable element.
+ (lookup_avail_expr): Likewise.
+ * tree-into-ssa.c (init_ssa_renamer): Specify a free function
+ for the var_infos hashtable.
+ (update_ssa): Likewise.
+
+2012-08-21 Richard Guenther <rguenther@suse.de>
+
+ * alloc-pool.c (pool_alloc): Fix valgrind annotation.
+ * tree.h: Fix typo and complete flags documentation.
+
+2012-08-21 Richard Guenther <rguenther@suse.de>
+
+ * tree.h (struct tree_base): Add union to make it possible to
+ re-use the upper 4 bytes for tree codes that do not need as
+ many flags as others. Move visited and default_def_flag to
+ common bits section in exchange for saturating_flag and
+ unsigned_flag. Add SSA name version and tree vec length
+ fields here.
+ (struct tree_vec): Remove length field here.
+ (struct tree_ssa_name): Remove version field here.
+
+2012-08-20 Jan Hubicka <jh@suse.cz>
+
+ PR fortran/48636
+ * ipa-inline.c (want_inline_small_function_p): Take loop_iterations
+ hint.
+ (edge_badness): Likewise.
+ * ipa-inline.h (inline_hints_vals): Add INLINE_HINT_loop_iterations.
+ (inline_summary): Add loop_iterations.
+ * ipa-inline-analysis.c: Include tree-scalar-evolution.h.
+ (dump_inline_hints): Dump loop_iterations.
+ (reset_inline_summary): Free loop_iterations.
+ (inline_node_duplication_hook): Update loop_iterations.
+ (dump_inline_summary): Dump loop_iterations.
+ (will_be_nonconstant_expr_predicate): New function.
+ (estimate_function_body_sizes): Analyze loops.
+ (estimate_node_size_and_time): Set hint loop_iterations.
+ (inline_merge_summary): Merge loop iterations.
+ (inline_read_section): Stream in loop_iterations.
+ (inline_write_summary): Stream out loop_iterations.
+
+2012-08-20 Florian Weimer <fweimer@redhat.com>
+
+ PR c++/19351
+ * call.c (build_operator_new_call): Add size_check argument and
+ evaluate it.
+ * cp-tree.h (build_operator_new_call): Adjust declaration.
+ * init.c (build_new_1): Compute array size check and apply it.
+
+2012-08-20 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * config/sh/sh.md (rotcr, *rotcr, shar, shlr): New insns and splits.
+ (ashrdi3_k, lshrdi3_k): Rewrite as insn_and_split.
+ * config/sh/sh.c (sh_lshrsi_clobbers_t_reg_p): New function.
+ * config/sh/sh-protos.h (sh_lshrsi_clobbers_t_reg_p): Declare it.
+
+2012-08-20 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/sh.md (*cset_zero): New insns.
+
+2012-08-20 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf2out.h (enum dw_val_class): Add dw_val_class_high_pc.
+ * dwarf2out.c (dw_val_equal_p): Handle dw_val_class_high_pc.
+ (add_AT_low_high_pc): New function.
+ (AT_lbl): Handle dw_val_class_high_pc.
+ (print_die): Likewise.
+ (attr_checksum): Likewise.
+ (attr_checksum_ordered): Likewise.
+ (same_dw_val_p): Likewise.
+ (size_of_die): Likewise.
+ (value_format): Likewise.
+ (output_die): Likewise.
+ (gen_subprogram_die): Use add_AT_low_high_pc.
+ (add_high_low_attributes): Likewise.
+ (dwarf2out_finish): Likewise.
+
+2012-08-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/54294
+ * fwprop.c (all_uses_available_at): Ignore debug insns in between
+ def_insn and target_insn when checking whether the shortcut is
+ possible.
+
+2012-08-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.h (MAX_FIXED_MODE_SIZE): Define.
+
+2012-08-20 Patrick Marlier <patrick.marlier@gmail.com>
+
+ PR middle-end/53992
+ * omp-low.c (lower_omp_1): Handle GIMPLE_TRANSACTION.
+
+2012-08-20 Richard Earnshaw <rearnsha@arm.com>
+
+ PR tree-ssa/54295
+ * tree-ssa-math-opts.c (is_widening_mult_rhs_p): Delete rhs_code
+ declaration and setter.
+
+2012-08-20 Richard Earnshaw <rearnsha@arm.com>
+
+ PR tree-ssa/54295
+ * tree-ssa-math-opts.c (widening_mult_conversion_strippable_p):
+ New function.
+ (is_widening_mult_rhs_p): Use it.
+
+2012-08-20 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.ac (ffs): Check for declaration.
+ * configure, config.in: Regenerate.
+
+2012-08-20 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (register_new_name_mapping): Remove.
+ * tree-into-ssa.c (register_new_name_mapping): Likewise.
+ (add_new_name_mapping): Do not push/pop timevar here.
+ (create_new_def_for): Instead do it here. Initialize
+ update-ssa here, handle a NULL def.
+ * tree-vrp.c (build_assert_expr_for): Use create_new_def_for.
+
+2012-08-20 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54327
+ * gimple-fold.c (get_maxval_strlen): Do not walk use-def chains
+ if the use is registered for SSA update.
+
+2012-08-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/54321
+ * tree-ssa-forwprop.c (simplify_builtin_call): Pass 0 instead of 1
+ as second argument to tree_low_cst call on val2.
+
+2012-08-20 Richard Guenther <rguenther@suse.de>
+
+ * gimple.h (gimple_statement_base): Annotate with GTY chain_next.
+
+2012-08-20 Richard Guenther <rguenther@suse.de>
+
+ PR bootstrap/54326
+ * genoutput.c (note_constraint): Properly use CONST_CAST.
+
+2012-08-19 Nick Clifton <nickc@redhat.com>
+
+ PR target/54306
+ * config/arm/mmintrin.h: Remove spurious #endif.
+
+2012-08-18 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * config/avr/avr-log.c (avr_log_vadump): Properly use
+ int-promoted enum values.
+ * config/avr/avr.h (struct mcu_type_s): Change `arch' from
+ int to enum avr_arch.
+ * config/avr/gen-avr-mmcu-texi.c (main): Use correct initializer.
+
+2012-08-18 Jan Hubicka <jh@suse.cz>
+
+ PR lto/45375
+ * ipa-inline.c (want_inline_small_function_p): Bypass
+ inline limits for hinted functions.
+ (edge_badness): Dump hints; decrease badness for hinted funcitons.
+ * ipa-inline.h (enum inline_hints_vals): New enum.
+ (inline_hints): New type.
+ (edge_growth_cache_entry): Add hints.
+ (dump_inline_summary): Update.
+ (dump_inline_hints): Declare.
+ (do_estimate_edge_hints): Declare.
+ (estimate_edge_hints): New inline function.
+ (reset_edge_growth_cache): Update.
+ * predict.c (cgraph_maybe_hot_edge_p): Do not ice on indirect edges.
+ * ipa-inline-analysis.c (dump_inline_hints): New function.
+ (estimate_edge_devirt_benefit): Return true when function should be
+ hinted.
+ (estimate_calls_size_and_time): New hints argument; set it when
+ devritualization happens.
+ (estimate_node_size_and_time): New hints argument.
+ (do_estimate_edge_time): Cache hints.
+ (do_estimate_edge_growth): Update.
+ (do_estimate_edge_hints): New function
+
+2012-08-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR middle-end/53823
+ * expmed.c (expand_mult): Skip synth_mult for negative coefficients
+ if the mode is larger than a wide int and it is too costly to multiply
+ by a positive multiplier and negate the result.
+
+2012-08-18 Steven Bosscher <steven@gcc.gnu.org>
+
+ * sparseset.c (sparseset_alloc): Use non-clearing allocation. Tell
+ valgrind not to worry about reading from unitialized memory.
+
+2012-08-18 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/54313
+ * dse.c (dse_step7): Don't free kill_on_calls bitmap, it is
+ freed when its obstack is release.
+
+2012-08-18 Andrew Pinski <pinskia@gmail.com>
+
+ * alloc-pool.c (pool_alloc): Add valgrind markers.
+ (pool_free): Likewise.
+
+2012-08-17 Walter Lee <walt@tilera.com>
+
+ * config/tilegx/feedback.h (FEEDBACK_ENTER_EXPLICIT): Define.
+ (FEEDBACK_ENTER): Define.
+ (FEEDBACK_REENTER): Define.
+ (FEEDBACK_ENTRY): Define.
+ * config/tilepro/feedback.h: (FEEDBACK_ENTER_EXPLICIT): Define.
+ (FEEDBACK_ENTER): Define.
+ (FEEDBACK_REENTER): Define.
+ (FEEDBACK_ENTRY): Define.
+
+2012-08-17 H.J. Lu <hongjiu.lu@intel.com>
+ Gary Funck <gary@intrepid.com>
+
+ PR target/20020
+ * config/i386/i386.c (ix86_member_type_forces_blk): New function.
+ (TARGET_MEMBER_TYPE_FORCES_BLK): New macro.
+
+ * config/i386/i386.h (MAX_FIXED_MODE_SIZE): New macro.
+
+2012-08-17 Marc Glisse <marc.glisse@inria.fr>
+
+ * simplify-rtx.c (simplify_binary_operation_1): Optimize shuffle of
+ a concatenation.
+
+2012-08-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * stor-layout.c (compute_record_mode): Replace
+ MEMBER_TYPE_FORCES_BLK with targetm.member_type_forces_blk.
+ (layout_type): Likewise.
+
+ * system.h: Poison MEMBER_TYPE_FORCES_BLK.
+
+ * target.def (member_type_forces_blk): New target hook.
+
+ * targhooks.c (default_member_type_forces_blk): New.
+ * targhooks.h (default_member_type_forces_blk): Likewise.
+
+ * doc/tm.texi.in (MEMBER_TYPE_FORCES_BLK): Removed.
+ (TARGET_MEMBER_TYPE_FORCES_BLK): New hook.
+ * doc/tm.texi: Regenerated.
+
+ * config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Removed.
+
+ * config/ia64/ia64.c (ia64_member_type_forces_blk): New function.
+ (TARGET_MEMBER_TYPE_FORCES_BLK): New macro.
+
+ * config/rs6000/rs6000.c (TARGET_MEMBER_TYPE_FORCES_BLK): New macro.
+ (rs6000_member_type_forces_blk): New function.
+
+ * config/rs6000/rs6000.h (MEMBER_TYPE_FORCES_BLK): Removed.
+
+ * config/xtensa/xtensa.c (xtensa_member_type_forces_blk): New function.
+ (TARGET_MEMBER_TYPE_FORCES_BLK): New macro.
+
+ * config/xtensa/xtensa.h (MEMBER_TYPE_FORCES_BLK): Removed.
+
+2012-08-17 Diego Novillo <dnovillo@google.com>
+
+ PR bootstrap/54281
+ * configure.ac: Add libintl.h to AC_CHECK_HEADERS list.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * intl.h: Always include libintl.h if HAVE_LIBINTL_H is set.
+
+2012-08-17 Richard Guenther <rguenther@suse.de>
+
+ * bitmap.h (struct bitmap_element_def): GTY annotate next/prev.
+ (struct bitmap_head_def): GTY skip current field.
+
+2012-08-17 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/54146
+ * tree-ssa-loop-im.c (lim_bitmap_obstack): New bitmap_obstack.
+ (memref_free): Don't free the bitmaps individually here.
+ (mem_ref_alloc): Allocate the bitmaps on the new bitmap obstack.
+ (analyze_memory_references): Likewise.
+ (tree_ssa_lim_initialize): Initialize the new bitmap obstack.
+ (tree_ssa_lim_finalize): Release it.
+ * dse.c (dse_bitmap_obstack): New bitmap obstack.
+ (dse_obstack): New obstack.
+ (get_group_info): Allocate the bitmaps on the new bitmap obstack.
+ (dse_step0): Allocate the scratch bitmap on reg_obstack. Initialize
+ the new bitmap obstack and normal obstack. Use XNEWVEC for bb_table.
+ (record_store): Allocate regs_set on reg_obstack.
+ (dse_step1): Allocate regs_live on reg_obstack.
+ (dse_step2_init): Allocate offset_map_n and offset_map_p on the new
+ obstack.
+ (dse_step3_scan): Allocate bitmaps on the new bitmap obstack.
+ (dse_step3): Likewise.
+ (dse_confluence_0): Likewise.
+ (dse_confluence_n): Likewise.
+ (dse_transfer_function): Likewise.
+ (dse_step7): Destroy the new obstacks, and everything allocated on
+ them, in one big sweep.
+ (rest_of_handle_dse): Update.
+ * cfgexpand.c (stack_var_bitmap_obstack): New bitmap obstack.
+ (add_stack_var_conflict): Allocate bitmaps on it.
+ (add_scope_conflicts_1): Likewise.
+ (add_scope_conflicts): Likewise.
+ (update_alias_info_with_stack_vars): Likewise.
+ (init_vars_expansion): Move TREE_USED fiddling expand_used_vars.
+ Initialize the new bitmap obstack.
+ (fini_vars_expansion): Release it.
+ (estimated_stack_frame_size): Use init_vars_expansion to set things up
+ and always clean up at the end.
+ (expand_used_vars): Do the TREE_USED trickery here. Always call
+ fini_vars_expansion.
+ * tree-ssa-live.h (struct tree_live_info_d): Make livein and liveout
+ arrays of bitmap_head to avoid one indirection per bitmap access.
+ (live_on_entry, live_on_exit, live_var_map, live_merge_and_clear,
+ make_live_on_entry): Update.
+ * tree-ssa-live.c (partition_view_bitmap): Don't double-free 'used'.
+ (liveness_bitmap_obstack): New bitmap obstack.
+ (remove_unused_locals): Use it to allocate all bitmaps on. Update
+ for livein/liveout changes in tree-ssa-live.h.
+ (delete_tree_live_info): Release the bitmap obstack.
+ (loe_visit_block, live_worklist, set_var_live_on_entry,
+ calculate_live_on_exit, dump_live_info): Update.
+ (calculate_live_ranges): Initialize the bitmap.
+ * tree-ssa-ter.c (ter_bitmap_obstack): New bitmap obstack.
+ (new_temp_expr_table): Allocate bitmap on it.
+ (make_dependent_on_partition, add_to_partition_kill_list,
+ add_dependence, process_replaceable): Likewise.
+ (find_replaceable_exprs): Initialize and release the new obstack here.
+ * df-problems.c (df_lr_add_problem): Allocate persistent bitmap
+ for out_of_date_transfer_functions on df_bitmap_obstack.
+ (df_live_add_problem): Likewise.
+ (df_chain_add_problem): Likewise.
+ (df_word_lr_add_problem): Likewise.
+
+2012-08-17 Nick Clifton <nickc@redhat.com>
+
+ * config/fr30/fr30.md (cbranchsi4): Remove mode from comparison.
+ (branch_true): Likewise.
+ (branch_false): Likewise.
+
+ * config/mcore/mcore.md (cbranchsi4): Remove mode from comparison.
+
+ * config/iq2000/iq2000.md (cbranchsi4): Remove mode from
+ comparison and label.
+ (branch_zero): Likewise.
+ (branch_zero_inverted): Likewise.
+ (branch_equality): Likewise.
+ (branch_equality_inverted): Likewise.
+ (extend-and-compare): Disable until reload issues can be resolved.
+ * config/iq2000/iq2000.c (gen_conditional_branch): Use VOIDmode
+ for comparison.
+ (iq2000_function_arg_advance): Remove CONST_CAST2.
+
+ * config/mep/t-mep (mep-pragma.o): Use $(COMPILER) to compile
+ mep-pragma.c.
+
+2012-08-17 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/t-avr (gen-avr-mmcu-texi): Use $(CC) to compile
+ gen-avr-mmcu-texi.c.
+
+2012-08-17 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.md (arm_addsi3): New variant for Thumb2 16-bit ADD instruction.
+ * arm.c (thumb2_reorg): Don't convert an ADD instruction that's
+ already 16 bits.
+
+2012-08-17 Richard Guenther <rguenther@suse.de>
+
+ * hash-table.h (class hash_table): Use a descriptor template
+ argument instead of decomposed element type and support functions.
+ (struct pointer_hash): New generic typed pointer-hash.
+ (struct typed_free_remove, struct typed_noop_remove): Generic
+ hash_table support pieces.
+ * coverage.c (struct counts_entry): Add hash_table support members.
+ * tree-ssa-ccp.c (gimple_htab): Use pointer_hash.
+ * tree-ssa-coalesce.c (struct ssa_name_var_hash): New generic
+ SSA name by SSA_NAME_VAR hash.
+ (coalesce_ssa_name): Use it.
+ * tree-ssa-pre.c (struct pre_expr_d): Add hash_table support.
+ (expression_to_id): Adjust.
+ (struct expr_pred_trans_d): Add hash_table support.
+ (phi_translate_table): Adjust.
+ (phi_trans_lookup): Likewise.
+ (phi_trans_add): Likewise.
+ (do_regular_insertion): Likewise.
+ * tree-ssa-tail-merge.c (struct same_succ_def): Add hash_table support.
+ (same_succ_htab): Adjust.
+ (find_same_succ_bb): Likewise.
+ (find_same_succ): Likewise.
+ (update_worklist): Likewise.
+ * tree-ssa-threadupdate.c (struct redirection_data): Add hash_table
+ support.
+ (redirection_data): Adjust.
+
+2012-08-17 Richard Guenther <rguenther@suse.de>
+
+ * params.def (integer-share-limit): Decrease from 256 to 251,
+ add rationale.
+
+2012-08-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-sra.c (modify_function): Free redirect_callers vector.
+ * ipa-split.c (split_function): Free args_to_pass vector.
+ * tree-vect-data-refs.c (vect_peeling_hash_get_lowest_cost): Free
+ body_cost_vec properly.
+ (vect_enhance_data_refs_alignment): Likewise.
+ * tree-vect-stmts.c (vectorizable_operation): Do not pre-allocate
+ vec_oprnds.
+ (new_stmt_vec_info): Do not pre-allocate STMT_VINFO_SAME_ALIGN_REFS.
+ * tree-vect-slp.c (vect_free_slp_instance): Free the instance.
+ (vect_analyze_slp_instance): Free everything.
+ (destroy_bb_vec_info): Free the SLP instances.
+
+2012-08-17 Iain Sandoe <iain@codesourcery.com>
+
+ * config/rs6000/rs6000.c (macho_branch_islands): Adjust for changes
+ to vec.h.
+
+2012-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document.
+
+2012-08-16 Sandra Loosemore <sandra@codesourcery.com>
+
+ * config/mips/mips-dsp.md (mips_dpau_h_qbl, mips_dpau_h_qbr)
+ (mips_dpsu_h_qbl, mips_dpsu_h_qbr, mips_dpaq_s_w_ph)
+ (mips_dpsq_s_w_ph, mips_mulsaq_s_w_ph, mips_dpaq_sa_l_w)
+ (mips_dpsq_sa_l_w, mips_maq_s_w_phl, mips_maq_s_w_phr)
+ (mips_maq_sa_w_phl, mips_maq_sa_w_phr): Add accum_in attribute.
+
+2012-08-16 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54236
+ * config/sh/sh.md (addc): Add commutative modifier.
+ (*addc, *minus_plus_one, *subc, *negc): New insns and splits.
+
+2012-08-16 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * config/sh/sh.md (*movsi_index_disp, *movhi_index_disp): Handle
+ potential T_REG clobber. Convert zero extending split to
+ insn_and_split.
+
+2012-08-16 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * config/sh/sh.md (ashlsi3_d): Do not split if it would result
+ in a T_REG clobber. Correct comment.
+ (ashlsi3_n): Correct comment.
+
+2012-08-16 Hans-Peter Nilsson <hp@axis.com>
+
+ PR middle-end/54261
+ * optabs.c (expand_atomic_fetch_op): Save and restore code when
+ retrying after failed attempt.
+
+2012-08-16 Yuri Rumyantsev <ysrumyan@gmail.com>
+
+ * config/i386/i386-protos.h (ix86_split_lea_for_addr) : Add
+ additional argument.
+ * config/i386/i386.md (ix86_split_lea_for_addr) : Add
+ additional argument curr_insn.
+ * config/i386/i386.c (ix86_split_lea_for_addr): Load base or index
+ register first, depending on their defintion distances.
+ (ix86_lea_outperforms): Prefer LEA only if split cost exceeds
+ AGU stall.
+ (find_nearest_reg-def): New function. Find register with
+ nearest definition.
+
+2012-08-16 Walter Lee <walt@tilera.com>
+
+ * config.gcc (tilegx-*-linux*): Add feedback.h.
+ (tilepro-*-linux*): Likewise.
+ * config/tilegx/feedback.h: New file.
+ * config/tilepro/feedback.h: New file.
+
+2012-08-16 Diego Novillo <dnovillo@google.com>
+
+ Revert
+
+ PR bootstrap/54281
+ * double-int.h: Move including of gmp.h ...
+ * system.h: ... here.
+ * realmpfr.h: Do not include gmp.h.
+ * tree-ssa-loop-niter.c: Do not include gmp.h.
+
+2012-08-16 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/darwin.h (TARGET_IEEE_QUAD): Fix comment.
+
+2012-08-16 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/54146
+ * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Free the
+ exit vector.
+ * ipa-pure-const.c (analyze_function): Use FOR_EACH_LOOP_BREAK.
+ * cfgloop.h (FOR_EACH_LOOP_BREAK): Fix.
+ * tree-ssa-structalias.c (handle_lhs_call): Properly free rhsc.
+ * tree-into-ssa.c (get_ssa_name_ann): Allocate info only when needed.
+ * tree-ssa-loop-im.c (analyze_memory_references): Adjust.
+ (tree_ssa_lim_finalize): Free all mem_refs.
+ * tree-ssa-sccvn.c (extract_and_process_scc_for_name): Free
+ scc when bailing out.
+ * modulo-sched.c (sms_schedule): Use FOR_EACH_LOOP_BREAK.
+ * ira-build.c (loop_with_complex_edge_p): Free loop exit vector.
+ * graphite-sese-to-poly.c (scop_ivs_can_be_represented): Use
+ FOR_EACH_LOOP_BREAK.
+
+2012-08-16 Diego Novillo <dnovillo@google.com>
+
+ PR bootstrap/54281
+ * double-int.h: Move including of gmp.h ...
+ * system.h: ... here.
+ * realmpfr.h: Do not include gmp.h.
+ * tree-ssa-loop-niter.c: Do not include gmp.h.
+
+2012-08-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/54146
+ * tree-flow.h (compute_global_livein): Remove prototype.
+ * tree-into-ssa.c (compute_global_livein): Remove function.
+ * tree-ssa-loop-manip.c: Include gimple-pretty-print.h.
+ (find_sibling_superloop): New function.
+ (compute_live_loop_exits): New function.
+ (add_exit_phis_edge): Rename to add_exit_phi. Do not allow
+ inserting a PHI in a block that is not a loop exit for VAR.
+ Add dumping if TDF_DETAILS.
+ (add_exit_phis_var): Rewrite.
+ (add_exit_phis): Update.
+ (get_loops_exits): Rewrite to return an array of per-loop exits
+ rather than one bitmap with all loop exits.
+ (find_uses_to_rename_bb): Ignore virtual PHI nodes.
+ (rewrite_into_loop_closed_ssa): Update.
+
+2012-08-16 Nick Clifton <nickc@redhat.com>
+
+ * config/i386/i386elf.h (ASM_OUTPUT_ASCII): Cast _ascii_bytes
+ before passing it to ASM_OUTPUT_LIMITED_STRING.
+
+ * config/bfin/bfin.c (hwloop_optimize): Fix use of VEC_last macro.
+
+ * config/avr/t-avr: Replace occurrences of $(CC) with $(COMPILER).
+ * config/avr/avr.c (avr_legitimize_reload_address): Add casts
+ for reload_type enums.
+ (DEF_BUILTIN): Cast the icode to enum insn_code.
+
+2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/aix43.h (ASM_CPU_SPEC): Use %(asm_default)
+ instead of -mppc.
+ * config/rs6000/aix51.h (ASM_CPU_SPEC): Ditto.
+
+2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/aix43.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS.
+ (RS6000_CALL_GLUE): Adjust for single assembler syntax.
+ * config/rs6000/aix51.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto.
+ * config/rs6000/aix52.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto.
+ * config/rs6000/aix53.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto.
+ * config/rs6000/aix61.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto.
+ * config/rs6000/darwin.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/darwin.md (whole file): Adjust to single
+ assembler syntax.
+ * config/rs6000/darwin64.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS.
+ * config/rs6000/default64.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/dfp.md: (whole file): Adjust to single
+ assembler syntax.
+ * config/rs6000/eabi.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS.
+ * config/rs6000/eabialtivec.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/eabispe.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/linuxspe.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/rs6000-cpus.def (whole file): Delete POWERPC_BASE_MASK.
+ * config/rs6000/rs6000-tables.opt: Regenerate.
+ * config/rs6000/rs6000.c (POWERPC_BASE_MASK): Delete.
+ (num_insns_constant_wide): Adjust comments.
+ (whole file): Adjust to single assembler syntax.
+ (output_cbranch): Adjust comment.
+ * config/rs6000/rs6000.h (ASSEMBLER_DIALECT): Delete.
+ * config/rs6000/rs6000.md: (whole file): Adjust to single
+ assembler syntax.
+ * config/rs6000/rs6000.opt (mnew-mnemonics): Delete.
+ (mold-mnemonics): Delete.
+ * config/rs6000/spe.md: (whole file): Adjust to single
+ assembler syntax.
+ * config/rs6000/sync.md: (whole file): Adjust to single
+ assembler syntax.
+ * config/rs6000/sysv4.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS.
+ (ASM_OUTPUT_REG_PUSH): Adjust.
+ (ASM_OUTPUT_REG_POP): Adjust.
+ * config/rs6000/sysv4le.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS.
+ * config/rs6000/vsx.md: (whole file): Adjust to single
+ assembler syntax.
+ * config/rs6000/vxworks.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS.
+ * doc/invoke.texi: Adjust documentation to reflect the
+ removal of -mnew-mnemonics and -mold-mnemonics.
+
+2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * common/config/rs6000/rs6000-common.c (rs6000_handle_option):
+ Delete handling for -mno-powerpc and -mpowerpc.
+ * config/rs6000/aix43.h (ASM_CPU_SPEC): Similar.
+ (ASM_DEFAULT_SPEC): Use -mppc instead of -mcom.
+ * config/rs6000/aix51.h (ASM_CPU_SPEC, ASM_DEFAULT_SPEC): Ditto.
+ * config/rs6000/aix52.h (TARGET_DEFAULT): Delete MASK_POWERPC.
+ * config/rs6000/aix53.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/aix61.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/darwin.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/darwin64.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/default64.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/driver-rs6000.c (asm_names): Delete handling
+ for -mcpu=common and -mpowerpc.
+ * config/rs6000/eabi.h (TARGET_DEFAULT): Delete MASK_POWERPC.
+ * config/rs6000/eabialtivec.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/eabispe.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/linuxspe.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_CFSTRING):
+ Use RS6000_BTM_ALWAYS instead of RS6000_BTM_POWERPC.
+ * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust.
+ (rs6000_cpu_cpp_builtins): Adjust.
+ * config/rs6000/rs6000.c (POWERPC_BASE_MASK): Delete MASK_POWERPC.
+ (rs6000_builtin_mask_calculate): Adjust.
+ (rs6000_emit_move): Delete code for ! TARGET_POWERPC.
+ (rs6000_init_libfuncs): Ditto.
+ (rs6000_output_function_prologue): Ditto.
+ (rs6000_opt_masks): Delete MASK_POWERPC.
+ (rs6000_builtin_mask_names): Delete RS6000_BTM_POWERPC.
+ * config/rs6000/rs6000.h (ASM_CPU_SPEC): Delete handling for -mpowerpc.
+ (RS6000_BTM_POWERPC): Delete.
+ (RS6000_BTM_COMMON): Delete RS6000_BTM_POWERPC.
+ * config/rs6000/rs6000.md (extendqisi2 patterns): Adjust for
+ TARGET_POWERPC always on.
+ (extendqihi2 patterns): Similar.
+ (various unnamed subtract patterns): Similar.
+ (bswaphi2 patterns): Similar.
+ (divmodsi4): Similar.
+ (udiv<GPR:mode>3): Similar.
+ (div<GPR:mode>3 patterns): Similar.
+ (udivmodsi4): Similar.
+ (mulhcall): Delete.
+ (mullcall): Delete.
+ (divss_call): Delete.
+ (divus_call): Delete.
+ (quoss_call): Delete.
+ (quous_call): Delete.
+ (insvsi patterns): Adjust.
+ (addsf3 patterns): Adjust.
+ (subsf3 patterns): Adjust.
+ (mulsf3 patterns): Adjust.
+ (divsf3 patterns): Adjust.
+ (*fmasf4_fpr): Adjust.
+ (*fmssf4_fpr): Adjust.
+ (*nfmasf4_fpr): Adjust.
+ (*nfmssf4_fpr): Adjust.
+ (*floatunssidf2_internal): Adjust.
+ (fix_trunc<SFDF:mode>si2_internal): Adjust.
+ (fctiwz_<SFDF:mode>): Adjust.
+ (mulsidi3 patterns): Adjust.
+ (smulsi3_highpart patterns): Adjust.
+ (umulsi3_highpart patterns): Adjust.
+ (fix_trunctfsi2 patterns): Adjust.
+ (prefetch): Adjust.
+ * config/rs6000/rs6000.opt (mpowerpc): Replace by stub option.
+ (mno-powerpc): Delete.
+ * config/rs6000/sync.md (load_locked<ATOMIC:mode>): Adjust.
+ (store_conditional<ATOMIC:mode>): Adjust.
+ (atomic_compare_and_swap<ATOMIC:mode>): Adjust.
+ (atomic_exchange<ATOMIC:mode>): Adjust.
+ (atomic_<fetchop_name><ATOMIC:mode>): Adjust.
+ (atomic_nand<ATOMIC:mode>): Adjust.
+ (atomic_fetch_<fetchop_name><ATOMIC:mode>): Adjust.
+ (atomic_fetch_nand<ATOMIC:mode>): Adjust.
+ (atomic_<fetchop_name>_fetch<ATOMIC:mode>): Adjust.
+ (atomic_nand_fetch<ATOMIC:mode>): Adjust.
+ * config/rs6000/sysv4.h (TARGET_DEFAULT): Delete MASK_POWERPC.
+ * config/rs6000/sysv4le.h (TARGET_DEFAULT): Ditto.
+ * config/rs6000/vxworks.h (TARGET_DEFAULT): Ditto.
+ * doc/invoke.texi: Adjust documentation.
+
+2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/rs6000.h (RS6000_BTM_ALWAYS): New.
+
+2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/aix52.h (ASM_CPU_SPEC): Fix typo.
+ * config/rs6000/aix53.h (ASM_CPU_SPEC): Ditto.
+ * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
+ * config/rs6000/driver-rs6000.c (asm_names): Ditto.
+
+2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/54142
+ * config/rs6000/driver-rs6000.c (asm_names): Use %(asm_default)
+ instead of -mcom.
+ * config/rs6000/rs6000.h (ASM_CPU_SPEC): Ditto.
+
+2012-08-15 Sandra Loosemore <sandra@codesourcery.com>
+ Maxim Kuvyrkov <maxim@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+ MIPS Technologies, Inc.
+
+ * config/mips/mips.md (dspmac, dspmacsat, accext, accmod, dspalu)
+ (dspalusat): Add insn types.
+ * config/mips/mips-dsp.md (add<DSPV:mode>3)
+ (mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>)
+ (sub<DSPV:mode>3, mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>, mips_addsc)
+ (mips_addwc, mips_modsub, mips_raddu_w_qb, mips_absq_s_<DSPQ:dspfmt2>)
+ (mips_precrq_qb_ph, mips_precrq_ph_w, mips_precrq_rs_ph_w)
+ (mips_precrqu_s_qb_ph, mips_preceq_w_phl, mips_preceq_w_phr)
+ (mips_precequ_ph_qbl, mips_precequ_ph_qbr, mips_precequ_ph_qbla)
+ (mips_precequ_ph_qbra, mips_preceu_ph_qbl, mips_preceu_ph_qbr)
+ (mips_preceu_ph_qbla, mips_preceu_ph_qbra, mips_shll_<DSPV:dspfmt2>)
+ (mips_shll_s_<DSPQ:dspfmt2>, mips_shll_s_<DSPQ:dspfmt2>, mips_shrl_qb)
+ (mips_shra_ph, mips_shra_r_<DSPQ:dspfmt2>, mips_bitrev, mips_insv)
+ (mips_repl_qb, mips_repl_ph)
+ (mips_cmp<DSPV:dspfmt1_1>_eq_<DSPV:dspfmt2>)
+ (mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>)
+ (mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>, mips_cmpgu_eq_qb)
+ (mips_cmpgu_lt_qb, mips_cmpgu_le_qb, mips_pick_<DSPV:dspfmt2>)
+ (mips_packrl_ph, mips_wrdsp, mips_rddsp): Change type to dspalu.
+ (mips_dpau_h_qbl, mips_dpau_h_qbr, mips_dpsu_h_qbl, mips_dpsu_h_qbr)
+ (mips_dpaq_s_w_ph, mips_dpsq_s_w_ph, mips_mulsaq_s_w_ph)
+ (mips_maq_s_w_phl, mips_maq_s_w_phr, mips_maq_sa_w_phr): Set type to
+ dspmac.
+ (mips_dpaq_sa_l_w, mips_dpsq_sa_l_w, mips_maq_sa_w_phl): Set type to
+ dspmacsat.
+ (mips_extr_w, mips_extr_r_w, mips_extr_rs_w, mips_extp, mips_extpdp):
+ Set type to accext.
+ (mips_shilo, mips_mthlip): Set type to accmod.
+ * config/mips/mips-dspr2.md (mips_absq_s_qb, mips_addu_s_ph)
+ (mips_adduh_r_qb): Set type to dspalusat.
+ (mips_addu_ph, mips_adduh_qb, mips_append, mips_balign)
+ (mips_cmpgdu_eq_qb, mips_cmpgdu_lt_qb, mips_cmpgdu_le_qb)
+ (mips_precr_qb_ph, mips_precr_sra_ph_w, mips_precr_sra_r_ph_w)
+ (mips_prepend, mips_shra_qb, mips_shra_r_qb, mips_shrl_ph)
+ (mips_subu_ph, mips_subuh_qb, mips_subuh_r_qb, mips_addqh_ph)
+ (mips_addqh_r_ph, mips_addqh_w, mips_addqh_r_w, mips_subqh_ph)
+ (mips_subqh_r_ph, mips_subqh_w, mips_subqh_r_w): Set type to dspalu.
+ (mips_dpa_w_ph, mips_dps_w_ph, mips_mulsa_w_ph, mips_dpax_w_ph)
+ (mips_dpsx_w_ph, mips_dpaqx_s_w_ph, mips_dpsqx_s_w_ph): Set type to
+ dspmac. Set accum_in attribute.
+ (mips_subu_s_ph): Set type to dspalusat.
+ (mips_dpaqx_sa_w_ph, mips_dpsqx_sa_w_ph): Set type to dspmacsat.
+ Set accum_in attribute.
+ * config/mips/mips-protos.h (mips_dspalu_bypass_p): Add prototype.
+ * config/mips/mips.c (dspalu_bypass_table): New.
+ (mips_dspalu_bypass_p): New.
+ * config/mips/24k.md (r24k_dsp_alu, r24k_dsp_mac, r24k_dsp_mac_sat)
+ (r24k_dsp_acc_ext, r24k_dsp_acc_mod): New insn reservations.
+ (r24k_int_mult, r24k_int_mthilo, r24k_dsp_mac, r24k_dsp_mac_sat)
+ (r24k_dsp_acc_ext, r24k_dsp_acc_mod, r24k_dsp_alu): New bypasses.
+ * config/mips/74k.md (r74k_dsp_alu, r74k_dsp_alu_sat, r74k_dsp_mac)
+ (r74k_dsp_mac_sat, r74k_dsp_acc_ext, r74k_dsp_acc_mod): New insn
+ reservations.
+ (r74k_dsp_mac, r74k_dsp_mac_sat, r74k_int_mult, r74k_int_mul3)
+ (r74k_dsp_mac, r74k_dsp_mac_sat): New bypasses.
+
+2012-08-15 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * config/spu/spu.c: Include "cfgloop.h".
+ (spu_machine_dependent_reorg): Call loop_optimizer_init and
+ loop_optimizer_finalize. Use bb_loop_depth instead of loop_depth.
+ Directly compare loop_father values where appropriate.
+ * config/spu/t-spu-elf (spu.o): Update dependencies.
+
+2012-08-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.in (tree-cfg.o): Also depend on $(TARGET_H).
+
+2012-08-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/54245
+ * gimple-ssa-strength-reduction.c (legal_cast_p_1): New function.
+ (legal_cast_p): Split out logic to legal_cast_p_1.
+ (analyze_increments): Avoid introducing multiplies in smaller types.
+
+2012-08-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/54240
+ * tree-ssa-phiopt.c (hoist_adjacent_loads): Correct test for
+ existence of conditional move with given mode.
+
+2012-08-15 Richard Guenther <rguenther@suse.de>
+
+ * double-int.h (double_int::from_unsigned): Rename to ...
+ (double_int::from_uhwi): ... this.
+ (double_int::from_signed): Rename to ...
+ (double_int::from_shwi): ... this.
+ (double_int::to_signed): Rename to ...
+ (double_int::to_shwi): ... this.
+ (double_int::to_unsigned): Rename to ...
+ (double_int::to_uhwi): ... this.
+ (double_int::fits_unsigned): Rename to ...
+ (double_int::fits_uhwi): ... this.
+ (double_int::fits_signed): Rename to ...
+ (double_int::fits_shwi): ... this.
+ (double_int::fits): Rename to ...
+ (double_int::fits_hwi): ... this.
+ * double-int.c: Likewise.
+
+2012-08-15 Steven Bosscher <steven@gcc.gnu.org>
+
+ * timevar.def (TV_VARPOOL, TV_WHOPR_WPA_LTRANS_EXEC, TV_LIFE,
+ TV_LIFE_UPDATE, TV_DF_UREC, TV_INLINE_HEURISTICS,
+ TV_TREE_LINEAR_TRANSFORM, TV_TREE_LOOP_INIT, TV_TREE_LOOP_FINI,
+ TV_VPT, TV_LOCAL_ALLOC, TV_GLOBAL_ALLOC, TV_SEQABSTR): Remove.
+ (TV_IPA_INLINING, TV_FLATTEN_INLINING, TV_EARLY_INLINING,
+ TV_INLINE_PARAMETERS, TV_LOOP_INIT, TV_LOOP_FINI): New.
+ * timevar.c (timevar_print): Make printing width of timevar names
+ more flexible, but enforce maximum length.
+ * ipa-inline.c (pass_early_inline): Use TV_EARLY_INLINING.
+ (pass_ipa_inline): Use TV_IPA_INLINING.
+ * ipa-inline-analysis.c (pass_inline_parameters): Use
+ TV_INLINE_HEURISTICS.
+ * tree-ssa-loop.c (pass_tree_loop_init): No timevar for wrapper pass.
+ (pass_tree_loop_done): Likewise.
+ * final.c (pass_shorten_branches): Use TV_SHORTEN_BRANCH.
+ * loop-init.c (loop_optimizer_init): Push/pop TV_LOOP_INIT.
+ (loop_optimizer_finalize): Push/pop TV_LOOP_FINI.
+
+2012-08-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ * config/arm/neon.md (neon_vaba<mode> VDQIW): Canonicalize operands.
+ (neon_vabal<mode> VDQIW): Likewise.
+
+2012-08-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ PR target/54212
+ * config/arm/neon.md (vec_set<mode>_internal VD,VQ): Do not
+ mark as predicable. Adjust asm template.
+ (vec_setv2di_internal): Likewise.
+ (vec_extract<mode> VD, VQ): Likewise.
+ (vec_extractv2di): Likewise.
+ (neon_vget_lane<mode>_sext_internal VD, VQ): Likewise.
+ (neon_vset_lane<mode>_sext_internal VD, VQ): Likewise.
+ (neon_vdup_n<mode> VX, V32): Likewise.
+ (neon_vdup_nv2di): Likewise.
+
+2012-08-14 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * config/mips/mips.md (define_attr accum_in): New instruction
+ attribute. Set it for imadd and fmadd patterns.
+ * config/mips/mips.c (mips_linked_madd_p): Use accum_in to extract
+ accumulator register.
+
+2012-08-14 Diego Novillo <dnovillo@google.com>
+
+ Merge from cxx-conversion branch. Configury.
+
+ * configure.ac (CXX_FOR_BUILD): Define and substitute.
+ (BUILD_CXXFLAGS): Define.
+ Remove all handlers of ENABLE_BUILD_WITH_CXX.
+ Force all build to be with C++.
+ * Makefile.in (BUILD_CXXFLAGS): Use it.
+ Remove all handlers of ENABLE_BUILD_WITH_CXX.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * doc/install.texi: Remove documentation for --enable-build-with-cxx
+ and --enable-build-poststage1-with-cxx.
+
+2012-08-14 Diego Novillo <dnovillo@google.com>
+
+ Merge from cxx-conversion branch. Re-implement VEC in C++.
+
+ * vec.c (vec_heap_free): Convert into a template function.
+ (vec_gc_o_reserve_1): Make extern.
+ (vec_gc_p_reserve): Remove.
+ (vec_gc_p_reserve_exact): Remove.
+ (vec_gc_o_reserve): Remove.
+ (vec_gc_o_reserve_exact): Remove.
+ (vec_heap_o_reserve_1): Make extern.
+ (vec_heap_p_reserve): Remove.
+ (vec_heap_p_reserve_exact): Remove.
+ (vec_heap_o_reserve): Remove.
+ (vec_heap_o_reserve_exact): Remove.
+ (vec_stack_p_reserve): Remove.
+ (vec_stack_p_reserve_exact): Remove.
+ * vec.h (VEC_CHECK_INFO, VEC_CHECK_DECL, VEC_CHECK_PASS, VEC_ASSERT,
+ VEC_ASSERT_FAIL, vec_assert_fail): Move earlier in the file.
+ (VEC): Define to vec_t<T>.
+ (vec_allocation_t): Define.
+ (struct vec_prefix): Move earlier in the file.
+ (vec_t<T>): New template.
+ (DEF_VEC_I, DEF_VECL_ALLOC_I, DEF_VEC_P, DEF_VEC_ALLOC_P,
+ DEF_VEC_O, DEF_VEC_ALLOC_P, DEF_VEC_O, DEF_VEC_ALLOC_O,
+ DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_O_STACK,
+ DEF_VEC_ALLOC_I_STACK): Expand to 'struct vec_swallow_trailing_semi'.
+ (DEF_VEC_A): Provide template instantiations for
+ GC/PCH markers that do not traverse the vector.
+ (vec_stack_p_reserve): Remove.
+ (vec_stack_p_reserve_exact): Remove.
+ (vec_stack_p_reserve_exact_1): Remove.
+ (vec_stack_o_reserve): Remove.
+ (vec_stack_o_reserve_exact): Remove.
+ (vec_stack_free): Re-write as a template function.
+ (vec_reserve): New template function.
+ (vec_reserve_exact): New template function.
+ (vec_heap_free): New template function if GATHER_STATISTICS is
+ defined. Otherwise, macro that expands to free().
+ (VEC_length_1): New template function.
+ (VEC_length): Call it.
+ (VEC_empty_1): New template function.
+ (VEC_empty): Call it.
+ (VEC_address_1): New template function.
+ (VEC_address): Call it.
+ (VEC_last_1): New template function.
+ (VEC_last): Call it. Change return type to T&.
+ Change all users that used VEC_Os.
+ (VEC_index_1): New template function.
+ (VEC_index): Call it. Return a T& instead of a T*.
+ Update all callers that were using VEC_O before.
+ (VEC_iterate_1): New template function.
+ (VEC_iterate): Call it.
+ (VEC_embedded_size_1): New template function.
+ (VEC_embedded_size): Call it.
+ (VEC_embedded_init_1): New template function.
+ (VEC_embedded_init): Call it.
+ (VEC_alloc_1): New template function.
+ (VEC_alloc): Call it. If A is 'stack', call XALLOCAVAR to
+ do the allocation.
+ (VEC_free_1): New template function.
+ (VEC_free): Call it.
+ (VEC_copy_1): New template function.
+ (VEC_copy): Call it.
+ (VEC_space_1): New template function
+ (VEC_space): Call it.
+ (VEC_reserve_1): New template function.
+ (VEC_reserve): Call it.
+ (VEC_reserve_exact_1): New template function.
+ (VEC_reserve_exact): Call it.
+ (VEC_splice_1): New template function.
+ (VEC_splice): Call it.
+ (VEC_safe_splice_1): New template function.
+ (VEC_safe_splice): Call it.
+ (VEC_quick_push_1): New template function. Create two overloads, one
+ accepting T, the other accepting T *. Update all callers
+ where T and T * are ambiguous.
+ (VEC_quick_push): Call it.
+ (VEC_safe_push_1): New template function. Create two overloads, one
+ accepting T, the other accepting T *. Update all callers
+ where T and T * are ambiguous.
+ (VEC_safe_push): Call it.
+ (VEC_pop_1): New template function.
+ (VEC_pop): Call it.
+ (VEC_truncate_1): New template function.
+ (VEC_truncate): Call it.
+ (VEC_safe_grow_1): New template function.
+ (VEC_safe_grow): Call it.
+ (VEC_safe_grow_cleared_1): New template function.
+ (VEC_safe_grow_cleared): Call it.
+ (VEC_replace_1): New template function.
+ (VEC_replace): Call it. Always accept T instead of T*.
+ Update all callers that used VEC_Os.
+ (VEC_quick_insert_1): New template function.
+ (VEC_quick_insert): Call it.
+ (VEC_safe_insert_1): New template function.
+ (VEC_safe_insert): Call it.
+ (VEC_ordered_remove_1): New template function.
+ (VEC_ordered_remove): Call it.
+ (VEC_unordered_remove_1): New template function.
+ (VEC_unordered_remove): Call it.
+ (VEC_block_remove_1): New template function.
+ (VEC_block_remove): Call it.
+ (VEC_lower_bound_1): New template function.
+ (VEC_lower_bound): Call it.
+ (VEC_OP): Remove.
+ (DEF_VEC_FUNC_P): Remove.
+ (DEF_VEC_ALLOC_FUNC_P): Remove.
+ (DEF_VEC_NONALLOC_FUNCS_P): Remove.
+ (DEF_VEC_FUNC_O): Remove.
+ (DEF_VEC_ALLOC_FUNC_O): Remove.
+ (DEF_VEC_NONALLOC_FUNCS_O): Remove.
+ (DEF_VEC_ALLOC_FUNC_I): Remove.
+ (DEF_VEC_NONALLOC_FUNCS_I): Remove.
+ (DEF_VEC_ALLOC_FUNC_P_STACK): Remove.
+ (DEF_VEC_ALLOC_FUNC_O_STACK): Remove.
+ (DEF_VEC_ALLOC_FUNC_I_STACK): Remove.
+ (vec_reserve_exact): New template function.
+
+ * gengtype-lex.l (DEF_VEC_ALLOC_[IOP]/{EOID}): Remove.
+ * gengtype-parse.c (token_names): Remove DEF_VEC_ALLOC_[IOP].
+ (typedef_name): Emit vec_t<C1> instead of VEC_C1_C2.
+ (def_vec_alloc): Remove. Update all callers.
+ * gengtype.c (filter_type_name): New.
+ (output_mangled_typename): Call it.
+ (write_func_for_structure): Likewise.
+ (write_types): Likewise.
+ (write_root): Likewise.
+ (write_typed_alloc_def): Likewise.
+ (note_def_vec): Emit vec_t<TYPE_NAME> instead of VEC_TYPE_NAME_base.
+ (note_def_vec_alloc): Remove.
+ * gengtype.h (note_def_vec_alloc): Remove.
+ (DEFVEC_ALLOC): Remove token code.
+
+ * df-scan.c (df_bb_verify): Remove call to df_free_collection_rec
+ inside the insn traversal loop.
+ * gimplify.c (gimplify_compound_lval): Rename STACK to EXPR_STACK.
+ * ipa-inline.c (inline_small_functions): Rename HEAP to EDGE_HEAP.
+ * reg-stack.c (stack): Rename to STACK_PTR. Update all users.
+ * tree-vrp.c (stack): Rename to EQUIV_STACK. Update all users.
+
+ * config/bfin/bfin.c (hwloop_optimize): Update some calls to
+ VEC_* for vectors of non-pointers.
+ * config/c6x/c6x.c (try_rename_operands): Likewise.
+ (reshuffle_units): Likewise.
+ * config/mips/mips.c (mips_multi_start): Likewise.
+ (mips_multi_add): Likewise.
+ (mips_multi_copy_insn): Likewise.
+ (mips_multi_set_operand): Likewise.
+ * hw-doloop.c (discover_loop): Likewise.
+ (discover_loops): Likewise.
+ (reorg_loops): Likewise.
+
+2012-08-14 Diego Novillo <dnovillo@google.com>
+
+ Merge from cxx-conversion branch. C++ support in gengtype.
+
+ * coretypes.h (gt_pointer_operator): Move from ...
+ * ggc.h: ... here.
+ * doc/gty.texi: Document support for C++ templates and
+ user-provided markers.
+ * gcc/gengtype-lex.l: Update copyright year.
+ Remove support for recognizing DEF_VEC_O, DEF_VEC_P and DEFVEC_I.
+ * gengtype-parse.c: Update copyright year.
+ (token_names): Remove DEF_VEC_O, DEF_VEC_P and DEF_VEC_I.
+ (require_template_declaration): New.
+ (typedef_name): Call it.
+ (type): Replace IS_UNION with KIND. Replace all users.
+ (def_vec): Remove. Update all users.
+ * gengtype-state.c (type_lineloc): Handle TYPE_USER_STRUCT.
+ (write_state_user_struct_type): New.
+ (write_state_type): Call it.
+ (read_state_user_struct_type): New.
+ (read_state_type): Call it.
+ * gengtype.c: Update copyright year.
+ (dump_pair): Move declaration to the top.
+ (dump_type): Likewise.
+ (dump_type_list): Likewise.
+ (dbgprint_count_type_at): Handle TYPE_USER_STRUCT.
+ (create_user_defined_type): New.
+ (resolve_typedef): Call it.
+ (new_structure): Replace argument ISUNION with KIND.
+ Change users to refer to KIND directly.
+ Update all callers.
+ (find_structure): Likewise.
+ (set_gc_used_type): Handle TYPE_USER_STRUCT.
+ (create_file): Update HDR to include new copyright year.
+ (struct walk_type_data): Add field IN_PTR_FIELD.
+ (output_mangled_typename): Handle TYPE_USER_STRUCT.
+ (walk_type): Set D->IN_PTR_FIELD when walking a TYPE_POINTER.
+ Clear it afterwards.
+ Handle TYPE_USER_STRUCT.
+ (write_types_process_field): Handle TYPE_USER_STRUCT.
+ (get_type_specifier): Move earlier in the file.
+ (write_type_decl): New.
+ (write_marker_function_name): New.
+ (write_user_func_for_structure_ptr): New.
+ (write_user_func_for_structure_body): New.
+ (write_user_marking_functions): New.
+ (write_func_for_structure): Call write_marker_function_name
+ and write_type_decl.
+ Do not call walk_type for TYPE_USER_STRUCT. Emit a call to the user
+ function directly.
+ Call write_user_marking_functions on TYPE_USER_STRUCTs.
+ (write_types_local_user_process_field): New.
+ (write_pch_user_walking_for_structure_body): New.
+ (write_pch_user_walking_functions): New.
+ (write_types_local_process_field): Handle TYPE_USER_STRUCT.
+ (write_local_func_for_structure): Do not call walk_type for
+ TYPE_USER_STRUCT. Instead, emit the call to gt_pch_nx directly.
+ Call write_pch_user_walking_functions for TYPE_USER_STRUCTs.
+ (write_root): Handle TYPE_USER_STRUCT.
+ (vec_prefix_type): Remove. Update all users.
+ (note_def_vec): Remove. Update all users.
+ (dump_typekind): Handle TYPE_USER_STRUCT.
+ (dump_type): Initialize SEEN_TYPES, if needed.
+ Handle TYPE_USER_STRUCT.
+ (dump_everything): Do not initialize SEEN_TYPES.
+ * gengtype.h: Update copyright year.
+ (enum typekind): Add TYPE_USER_STRUCT.
+ (union_or_struct_p): Rename from UNION_OR_STRUCT_P.
+ Convert into function.
+ Add an overload taking const_type_p.
+ Update all callers.
+ (new_structure): Change second field to type enum typekind.
+ Update all users.
+ (find_structure): Likewise.
+ (note_def_vec): Remove.
+ (DEFVEC_OP): Remove.
+ (DEFVEC_I): Remove.
+ * ggc-page.c (gt_ggc_mx): Add entry points for marking
+ 'const char *&', 'unsigned char *&' and 'unsigned char&'.
+ * ggc-zone.c (gt_ggc_mx): Add entry points for marking
+ 'const char *&' and 'unsigned char *&'.
+ * stringpool.c (gt_pch_nx): Add entry points for marking
+ 'const char *&', 'unsigned char *&' and 'unsigned char&'.
+ Add an entry point for the overload taking arguments 'unsigned char
+ *', 'gt_pointer_operator' and 'void *'.
+ * vec.h (struct vec_prefix): Remove GTY marker.
+ (struct vec_t): Remove GTY((length)) attribute from field 'vec'.
+ (gt_ggc_mx (vec_t<T> *)): New template function.
+ (gt_pch_nx (vec_t<T> *)): New template function.
+ (gt_pch_nx (vec_t<T *> *, gt_pointer_operator, void *)): New template
+ function.
+ (gt_pch_nx (vec_t<T> *, gt_pointer_operator, void *)): New template
+ function.
+
+ * basic-block.h (struct edge_def): Mark GTY((user)).
+ Remove all GTY markers from fields.
+ (gt_ggc_mx): Declare.
+ (gt_pch_nx): Declare.
+ * tree-cfg.c (gt_ggc_mx): New.
+ (gt_pch_nx): New.
+
+ * gengtype-lex.l (USER_GTY): Add pattern for "user".
+ * gengtype-parse.c (option): Handle USER_GTY.
+ (opts_have): New.
+ (type): Call it.
+ If the keyword 'user' is used, do not walk the fields
+ of the structure.
+ * gengtype.h (USER_GTY): Add.
+ * doc/gty.texi: Update.
+
+2012-08-14 Lawrence Crowl <crowl@google.com>
+
+ Merge cxx-conversion branch. Implement C++ hash table.
+
+ * hash-table.h: New. Implementation borrowed from libiberty/hashtab.c.
+ * hash-table.c: Likewise.
+ * tree-ssa-tail-merge.c: Include hash-table.h instead of hashtab.h.
+ (static htab_t same_succ_htab): Change type to hash_table;
+ move specification of helper functions from create call to declaration.
+ Change users to invoke member functions.
+ (same_succ_print_traverse): Make extern ssa_.... Change callers.
+ Remove void* casting.
+ (same_succ_hash): Likewise.
+ (same_succ_equal): Likewise.
+ (same_succ_delete): Likewise.
+ * tree-ssa-threadupdate.c: Include hash-table.h.
+ (struct local_info): Rename to ssa_local_info_t to avoid overloading
+ the type name local_info with the variable name local_info.
+ (static htab_t redirection_data): Change type to hash_table.
+ Move specification of helper functions from create call to declaration.
+ Change users to invoke member functions.
+ (redirection_data_hash): Make extern ssa_.... Change callers.
+ Remove void* casting.
+ (redirection_data_eq): Likewise.
+ (fix_duplicate_block_edges): Likewise.
+ (create_duplicates): Likewise.
+ (fixup_template_block): Likewise.
+ (redirect_edges): Likewise.
+ (lookup_redirection_data): Change types associated with the hash table
+ from void* to their actual type. Remove unnecessary casts.
+ * tree-ssa-ccp.c: Include hash-table.h.
+ (typedef gimple_htab): New. Uses hash_table. Replace specific uses
+ of htab_t with gimple_htab. Change users to invoke member functions.
+ Move specification of helper functions from create call to declaration.
+ * tree-ssa-coalesce.c: Include hash-table.h instead of hashtab.h.
+ (hash_ssa_name_by_var): Make extern. Remove void* casting.
+ (eq_ssa_name_by_var): Likewise.
+ (coalesce_ssa_name): Change type of local static htab_t ssa_name_hash
+ to hash_table. Change users to invoke member functions.
+ Move specification of helper functions from create call to declaration.
+ * coverage.c: Include hash-table.h instead of hashtab.h.
+ (static htab_t counts_hash): Change type to hash_table;
+ move specification of helper functions from create call to declaration.
+ Change users to invoke member functions.
+ (htab_counts_entry_hash): Make extern. Rename with coverage_... instead
+ of htab_... Remove void* casting.
+ (htab_counts_entry_eq): Likewise.
+ (htab_counts_entry_del): Likewise.
+ * tree-ssa-pre.c: Include hash-table.h instead of hashtab.h.
+ (static htab_t expression_to_id): Change type to hash_table.
+ Move specification of helper functions from create call to declaration.
+ Change users to invoke member functions.
+ (static htab_t phi_translate_table): Likewise.
+ (pre_expr_eq): Make extern ssa_.... Change callers.
+ Remove void* casting.
+ (pre_expr_hash): Likewise.
+ (expr_pred_trans_hash): Likewise.
+ (expr_pred_trans_eq): Likewise.
+ (alloc_expression_id): Change types associated with the hash table
+ from void* to their actual type. Remove unnecessary casts.
+ (lookup_expression_id): Likewise.
+ (phi_trans_lookup): Likewise.
+ (phi_trans_add): Likewise.
+ * stringpool.c: Rename uses of libcpp typedef hash_table to
+ cpp_hash_table.
+ * Makefile.in: Add hash-table.o to OBJS-libcommon-target.
+ Add $(HASH_TABLE_H). Add new dependences on $(HASH_TABLE_H).
+
+2012-08-14 Lawrence Crowl <crowl@google.com>
+
+ Merge from cxx-conversion branch. Re-write double_int in C++.
+
+ * hash-table.h
+ (typedef double_int): Change to struct (POD).
+ (double_int::make): New overloads for int to double-int conversion.
+ (double_int::mask): New.
+ (double_int::max_value): New.
+ (double_int::min_value): New.
+ (double_int::operator ++): New.
+ (double_int::operator --): New.
+ (double_int::operator *=): New.
+ (double_int::operator +=): New.
+ (double_int::operator -=): New.
+ (double_int::to_signed): New.
+ (double_int::to_unsigned): New.
+ (double_int::fits_unsigned): New.
+ (double_int::fits_signed): New.
+ (double_int::fits): New.
+ (double_int::trailing_zeros): New.
+ (double_int::popcount): New.
+ (double_int::multiple_of): New.
+ (double_int::set_bit): New.
+ (double_int::mul_with_sign): New.
+ (double_int::operator * (binary)): New.
+ (double_int::operator + (binary)): New.
+ (double_int::operator - (binary)): New.
+ (double_int::operator - (unary)): New.
+ (double_int::operator ~ (unary)): New.
+ (double_int::operator & (binary)): New.
+ (double_int::operator | (binary)): New.
+ (double_int::operator ^ (binary)): New.
+ (double_int::and_not): New.
+ (double_int::lshift): New.
+ (double_int::rshift): New.
+ (double_int::alshift): New.
+ (double_int::arshift): New.
+ (double_int::llshift): New.
+ (double_int::lrshift): New.
+ (double_int::lrotate): New.
+ (double_int::rrotate): New.
+ (double_int::div): New.
+ (double_int::sdiv): New.
+ (double_int::udiv): New.
+ (double_int::mod): New.
+ (double_int::smod): New.
+ (double_int::umod): New.
+ (double_int::divmod): New.
+ (double_int::sdivmod): New.
+ (double_int::udivmod): New.
+ (double_int::ext): New.
+ (double_int::zext): New.
+ (double_int::sext): New.
+ (double_int::is_zero): New.
+ (double_int::is_one): New.
+ (double_int::is_minus_one): New.
+ (double_int::is_negative): New.
+ (double_int::cmp): New.
+ (double_int::ucmp): New.
+ (double_int::scmp): New.
+ (double_int::ult): New.
+ (double_int::ugt): New.
+ (double_int::slt): New.
+ (double_int::sgt): New.
+ (double_int::max): New.
+ (double_int::smax): New.
+ (double_int::umax): New.
+ (double_int::min): New.
+ (double_int::smin): New.
+ (double_int::umin): New.
+ (double_int::operator ==): New.
+ (double_int::operator !=): New.
+ (shwi_to_double_int): Change implementation to use member function.
+ (double_int_minus_one): Likewise.
+ (double_int_zero): Likewise.
+ (double_int_one): Likewise.
+ (double_int_two): Likewise.
+ (double_int_ten): Likewise.
+ (uhwi_to_double_int): Likewise.
+ (double_int_to_shwi): Likewise.
+ (double_int_to_uhwi): Likewise.
+ (double_int_fits_in_uhwi_p): Likewise.
+ (double_int_fits_in_shwi_p): Likewise.
+ (double_int_fits_in_hwi_p): Likewise.
+ (double_int_mul): Likewise.
+ (double_int_mul_with_sign): Likewise.
+ (double_int_add): Likewise.
+ (double_int_sub): Likewise.
+ (double_int_neg): Likewise.
+ (double_int_div): Likewise.
+ (double_int_sdiv): Likewise.
+ (double_int_udiv): Likewise.
+ (double_int_mod): Likewise.
+ (double_int_smod): Likewise.
+ (double_int_umod): Likewise.
+ (double_int_divmod): Likewise.
+ (double_int_sdivmod): Likewise.
+ (double_int_udivmod): Likewise.
+ (double_int_multiple_of): Likewise.
+ (double_int_setbit): Likewise.
+ (double_int_ctz): Likewise.
+ (double_int_not): Likewise.
+ (double_int_ior): Likewise.
+ (double_int_and): Likewise.
+ (double_int_and_not): Likewise.
+ (double_int_xor): Likewise.
+ (double_int_lshift): Likewise.
+ (double_int_rshift): Likewise.
+ (double_int_lrotate): Likewise.
+ (double_int_rrotate): Likewise.
+ (double_int_cmp): Likewise.
+ (double_int_scmp): Likewise.
+ (double_int_ucmp): Likewise.
+ (double_int_max): Likewise.
+ (double_int_smax): Likewise.
+ (double_int_umax): Likewise.
+ (double_int_min): Likewise.
+ (double_int_smin): Likewise.
+ (double_int_umin): Likewise.
+ (double_int_ext): Likewise.
+ (double_int_sext): Likewise.
+ (double_int_zext): Likewise.
+ (double_int_mask): Likewise.
+ (double_int_max_value): Likewise.
+ (double_int_min_value): Likewise.
+ (double_int_zero_p): Likewise.
+ (double_int_one_p): Likewise.
+ (double_int_minus_one_p): Likewise.
+ (double_int_equal_p): Likewise.
+ (double_int_popcount): Likewise.
+ * hash-table.c
+ (double_int_mask): Reuse implementation for double_int::mask.
+ (double_int_max_value): Likewise.
+ (double_int_min_value): Likewise.
+ (double_int_ext): Likewise.
+ (double_int_zext): Likewise.
+ (double_int_sext): Likewise.
+ (double_int_mul_with_sign): Likewise.
+ (double_int_divmod): Likewise.
+ (double_int_sdivmod): Likewise.
+ (double_int_udivmod): Likewise.
+ (double_int_div): Likewise.
+ (double_int_sdiv): Likewise.
+ (double_int_udiv): Likewise.
+ (double_int_mod): Likewise.
+ (double_int_smod): Likewise.
+ (double_int_umod): Likewise.
+ (double_int_multiple_of): Likewise.
+ (double_int_lshift): Likewise.
+ (double_int_rshift): Likewise.
+ (double_int_lrotate): Likewise.
+ (double_int_rrotate): Likewise.
+ (double_int_cmp): Likewise.
+ (double_int_ucmp): Likewise.
+ (double_int_scmp): Likewise.
+ (double_int_max): Likewise.
+ (double_int_smax): Likewise.
+ (double_int_umax): Likewise.
+ (double_int_min): Likewise.
+ (double_int_smin): Likewise.
+ (double_int_umin): Likewise.
+ (double_int_min): Likewise.
+ (double_int_min): Likewise.
+ (double_int_min): Likewise.
+ (double_int_min): Likewise.
+ (double_int_min): Likewise.
+ (double_int_min): Likewise.
+ (double_int::alshift): New.
+ (double_int::arshift): New.
+ (double_int::llshift): New.
+ (double_int::lrshift): New.
+ (double_int::ult): New.
+ (double_int::ugt): New.
+ (double_int::slt): New.
+ (double_int::sgt): New.
+ (double_int_setbit): Reuse implementation for double_int::set_bit,
+ which avoids a name conflict with a macro.
+ (double_int_double_int_ctz): Reuse implementation for
+ double_int::trailing_zeros.
+ (double_int_fits_in_shwi_p): Reuse implementation for
+ double_int::fits_signed.
+ (double_int_fits_in_hwi_p): Reuse implementation for double_int::fits.
+ (double_int_mul): Reuse implementation for binary
+ double_int::operator *.
+ (double_int_add): Likewise.
+ (double_int_sub): Likewise.
+ (double_int_neg): Reuse implementation for unary
+ double_int::operator -.
+ (double_int_max_value): Likewise.
+ * fixed-value.c: Change to use member functions introduced above.
+
+2012-08-14 Lawrence Crowl <crowl@google.com>
+
+ Merge cxx-conversion branch. Support tree macro calling from gdb.
+
+ * tree.h (tree_check): New.
+ (TREE_CHECK): Use inline function above instead of __extension__.
+ (tree_not_check): New.
+ (TREE_NOT_CHECK): Use inline function above instead of __extension__.
+ (tree_check2): New.
+ (TREE_CHECK2): Use inline function above instead of __extension__.
+ (tree_not_check2): New.
+ (TREE_NOT_CHECK2): Use inline function above instead of __extension__.
+ (tree_check3): New.
+ (TREE_CHECK3): Use inline function above instead of __extension__.
+ (tree_not_check3): New.
+ (TREE_NOT_CHECK3): Use inline function above instead of __extension__.
+ (tree_check4): New.
+ (TREE_CHECK4): Use inline function above instead of __extension__.
+ (tree_not_check4): New.
+ (TREE_NOT_CHECK4): Use inline function above instead of __extension__.
+ (tree_check5): New.
+ (TREE_CHECK5): Use inline function above instead of __extension__.
+ (tree_not_check5): New.
+ (TREE_NOT_CHECK5): Use inline function above instead of __extension__.
+ (contains_struct_check): New.
+ (CONTAINS_STRUCT_CHECK): Use inline function above instead of
+ __extension__.
+ (tree_class_check): New.
+ (TREE_CLASS_CHECK): Use inline function above instead of __extension__.
+ (tree_range_check): New.
+ (TREE_RANGE_CHECK): Use inline function above instead of __extension__.
+ (omp_clause_subcode_check): New.
+ (OMP_CLAUSE_SUBCODE_CHECK): Use inline function above instead of
+ __extension__.
+ (omp_clause_range_check): New.
+ (OMP_CLAUSE_RANGE_CHECK): Use inline function above instead of
+ __extension__.
+ (expr_check): New.
+ (EXPR_CHECK): Use inline function above instead of __extension__.
+ (non_type_check): New.
+ (NON_TYPE_CHECK): Use inline function above instead of __extension__.
+ (tree_vec_elt_check): New.
+ (TREE_VEC_ELT_CHECK): Use inline function above instead of
+ __extension__.
+ (omp_clause_elt_check): New.
+ (OMP_CLAUSE_ELT_CHECK): Use inline function above instead of
+ __extension__.
+ (tree_operand_check): New.
+ (TREE_OPERAND_CHECK): Use inline function above instead of
+ __extension__.
+ (tree_operand_check_code): New.
+ (TREE_OPERAND_CHECK_CODE): Use inline function above instead of
+ __extension__.
+ (TREE_CHAIN): Simplify implementation.
+ (TREE_TYPE): Simplify implementation.
+ (tree_operand_length): Move for compilation dependences.
+ * gdbinit.in: (macro define __FILE__): New.
+ (macro define __LINE__): New.
+ (skip "tree.h"): New.
+
+2012-08-14 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (enabled): Add comment with explanation
+ why fma4 instructions are disabled for generic code.
+
+2012-08-14 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/52933
+ * config/sh/sh.md (cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0,
+ *cmp_div0s_1, *cbranch_div0s, *movsicc_div0s): New insns.
+ * config/sh/sh.c (sh_rtx_costs): Handle div0s patterns.
+
+2012-08-14 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/50751
+ * config/sh/constraints.md (Sra): New constraint.
+ * config/sh/predicates.md (simple_mem_operand,
+ displacement_mem_operand, zero_extend_movu_operand): New predicates.
+ (zero_extend_operand): Check zero_extend_movu_operand for SH2A.
+ * config/sh/sh.md (*zero_extendqisi2_disp_mem,
+ *zero_extendhisi2_disp_mem): Add new insns and two new related
+ peephole2 patterns.
+
+2012-08-14 Steven Bosscher <steven@gcc.gnu.org>
+
+ * graphite-scop-detection.c (create_sese_edges): Compute dominance
+ info before trying to fix loop structure.
+ * cfgloopmanip.c (fix_loop_structure): Require fast DOM queries.
+ * tree-cfgcleanup.c (repair_loop_structures): Likewise.
+ * cfgloop.c (verify_loop_structure): Verify loop fathers.
+
+ * dominance.c (init_dom_info): Use gcc_checking_assert, not gcc_assert.
+ (dom_convert_dir_to_idx, compute_dom_fast_query,
+ get_immediate_dominator, set_immediate_dominator, get_dominated_by,
+ redirect_immediate_dominators, nearest_common_dominator,
+ (dominated_by_p, bb_dom_dfs_in, bb_dom_dfs_out, recompute_dominator,
+ iterate_fix_dominators, add_to_dominance_info,
+ delete_from_dominance_info): Likewise.
+
+2012-08-14 Richard Guenther <rguenther@suse.de>
+
+ * cfgexpand.c (expand_used_vars): Use virtual_operand_p.
+ * gimple-pretty-print.c (dump_phi_nodes): Likewise.
+ * gimple-streamer-out.c (output_bb): Likewise.
+ * graphite-sese-to-poly.c (scalar_close_phi_node_p): Likewise.
+ (rewrite_reductions_out_of_ssa): Likewise.
+ (rewrite_commutative_reductions_out_of_ss): Likewise.
+ * ipa-split.c (verify_non_ssa_vars): Likewise.
+ (consider_split): Likewise.
+ (visit_bb): Likewise.
+ (split_function): Likewise.
+ * lto-streamer-out.c (output_ssa_names): Likewise.
+ * sese.c (rename_uses): Likewise.
+ * tree-cfg.c (replace_uses_by): Likewise.
+ (gimple_merge_blocks): Likewise.
+ (gimple_cfg2dot): Likewise.
+ (verify_gimple_phi): Likewise.
+ (replace_ssa_name): Likewise.
+ (move_block_to_fn): Likewise.
+ * tree-eh.c (cleanup_empty_eh_merge_phis): Likewise.
+ * tree-if-conv.c (if_convertible_phi_p): Likewise.
+ (predicate_scalar_phi): Likewise.
+ * tree-inline.c (update_ssa_across_abnormal_edges): Likewise.
+ (copy_phis_for_bb): Likewise.
+ * tree-loop-distribution.c (generate_loops_for_partition): Likewise.
+ (destroy_loop): Likewise.
+ * tree-outof-ssa.c (eliminate_useless_phis): Likewise.
+ (insert_backedge_copies): Likewise.
+ * tree-parloops.c (transform_to_exit_first_loop): Likewise.
+ (gather_scalar_reductions): Likewise.
+ (try_create_reduction_list): Likewise.
+ * tree-scalar-evolution.c (analyze_scalar_evolution_for_all_loop_ph):
+ Likewise.
+ (scev_const_prop): Likewise.
+ * tree-ssa-ccp.c (debug_lattice_value): Likewise.
+ (get_default_value): Likewise.
+ (ccp_initialize): Likewise.
+ * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
+ * tree-ssa-copy.c (may_propagate_copy): Likewise.
+ (init_copy_prop): Likewise.
+ * tree-ssa-dce.c (propagate_necessity): Likewise.
+ (remove_dead_phis): Likewise.
+ (forward_edge_to_pdom): Likewise.
+ (eliminate_unnecessary_stmts): Likewise.
+ * tree-ssa-live.c (partition_view_init): Likewise.
+ (remove_unused_locals): Likewise.
+ (register_ssa_partition_check): Likewise.
+ * tree-ssa-loop-im.c (movement_possibility): Likewise.
+ (move_computations_stmt): Likewise.
+ * tree-ssa-loop-ivopts.c (determine_biv_step): Likewise.
+ (record_invariant): Likewise.
+ (find_interesting_uses_outside): Likewise.
+ (determine_set_costs): Likewise.
+ * tree-ssa-loop-manip.c (add_exit_phis_var): Likewise.
+ (find_uses_to_rename_use): Likewise.
+ (check_loop_closed_ssa_use): Likewise.
+ (rewrite_phi_with_iv): Likewise.
+ (canonicalize_loop_ivs): Likewise.
+ * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
+ * tree-ssa-phiopt.c (hoist_adjacent_loads): Likewise.
+ * tree-ssa-pre.c (make_values_for_phi): Likewise.
+ (compute_avail): Likewise.
+ (eliminate): Likewise.
+ * tree-ssa-propagate.c (substitute_and_fold): Likewise.
+ * tree-ssa-reassoc.c (phi_rank): Likewise.
+ * tree-ssa-strlen.c (strlen_enter_block): Likewise.
+ * tree-ssa-structalias.c (compute_points_to_sets): Likewise.
+ (ipa_pta_execute): Likewise.
+ * tree-ssa-tail-merge.c (same_succ_hash): Likewise.
+ (release_last_vdef): Likewise.
+ (same_phi_alternatives_1): Likewise.
+ (bb_has_non_vop_phi): Likewise.
+ (vop_phi): Likewise.
+ * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
+ Likewise.
+ * tree-ssa-uninit.c (warn_uninitialized_phi): Likewise.
+ (execute_late_warn_uninitialized): Likewise.
+ * tree-ssa.c (verify_ssa_name): Likewise.
+ (verify_phi_args): Likewise.
+ (verify_ssa): Likewise.
+ * tree-stdarg.c (execute_optimize_stdarg): Likewise.
+ * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1):
+ Likewise.
+ (slpeel_tree_peel_loop_to_edge): Likewise.
+ (vect_can_advance_ivs_p): Likewise.
+ (vect_update_ivs_after_vectorizer): Likewise.
+ * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise.
+ * tree-vrp.c (remove_range_assertions): Likewise.
+ * value-prof.c (gimple_divmod_values_to_profile): Likewise.
+
+2012-08-14 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54146
+ * tree-ssa-pre.c (do_regular_insertion): Use a VEC
+ indexed by pred edge index for avail.
+ (do_partial_partial_insertion): Likewise.
+ (insert_into_preds_of_block): Adjust.
+
+2012-08-14 Richard Guenther <rguenther@suse.de>
+
+ * gimplify.c (create_tmp_from_val): Mark temporary with
+ DECL_GIMPLE_REG_P here ...
+ (internal_get_tmp_var): ... instead of here. If we go into
+ SSA create an SSA name instead of a VAR_DECL.
+ (gimplify_modify_expr): Do not create SSA names here, assert
+ we already got them.
+ (force_gimple_operand_1): Create an SSA name if we go into SSA.
+ * sese.c (rename_uses): Simplify.
+
+2012-08-14 Richard Guenther <rguenther@suse.de>
+
+ * tree-into-ssa.c: Include diagnostic-core.h.
+ * Makefile.in (tree-into-ssa.o): Adjust.
+
+2012-08-14 Richard Guenther <rguenther@suse.de>
+
+ * tree-into-ssa.c (update_ssa): Verify we do not rename
+ symbols that are already partly in SSA form.
+
+2012-08-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/53411
+ PR rtl-optimization/53495
+ * ira.c (ira): Move delete_trivially_dead_insns call before
+ find_moveable_pseudos call.
+
+2012-08-13 Steven Bosscher <steven@gcc.gnu.org>
+
+ * tree-ssa-pre.c (do_regular_insertion): Add FIXME markers at points
+ of potentially huge memset overhead.
+ (do_partial_partial_insertion): Likewise.
+ * cfgexpand.c (gimple_expand_cfg): Use XCNEWVEC instead of xcalloc.
+ * tree-vrp.c (find_assert_locations): Use XNEWVEC instead of XCNEWVEC
+ for arrays to be filled by pre_and_rev_post_order_compute. Allocate
+ the right number of slots, not that number plus NUM_FIXED_BLOCKS.
+ * tree-ssa-reassoc.c (init_reassoc): Likewise.
+ * cfganal.c (dfs_enumerate_from): Use XNEWVEC instead of XCNEWVEC for
+ array used as stack.
+ * tree-ssa-sccvn.c (init_scc_vn): Use XNEWVEC instead of XCNEWVEC for
+ arrays to be filled by pre_and_rev_post_order_compute.
+ * cfgloopmanip.c (find_path): Use XNEWVEC instead of XCNEWVEC for
+ array to be filled by dfs_enumerate_from.
+ (remove_path): Likewise.
+ (duplicate_loop_to_header_edge): Use XNEWVEC instead of XCNEWVEC for
+ array of loops that is filled on the next lines.
+ * cfgloop.c (get_loop_body): Use XNEWVEC instead of XCNEWVEC for
+ array of basic blocks to be returned.
+ (get_loop_body_in_dom_order): Likewise.
+ (get_loop_body_in_bfs_order): Likewise.
+ * tree-ssa-loop-manip.c (loop_renamer_obstack): New static obstack
+ for all bitmaps used for rewriting into loop-closed SSA form.
+ (add_exit_phis_var): Allocate the def bitmap on it. Clear the livein
+ bitmap at the end to release a lot of memory.
+ (add_exit_phis): Allocate the exits bitmap on the new obstack.
+ (get_loops_exits): Allocate the exits bitmap on the new obstack.
+ (find_uses_to_rename_use): Allocate a use_blocks bitmap if ver is
+ seen for the first time.
+ (find_uses_to_rename): Add "???" for why the whole function must
+ be re-scanned if changed_bbs is empty.
+ (rewrite_into_loop_closed_ssa): Allocate bitmaps on the new obstack.
+ Use XNEWVEC to allocate the use_blocks array. Initialize the new
+ obstack, and free it at the end. Remove loop over all SSA names.
+ (check_loop_closed_ssa_stmt): Look only at SSA_OP_USE operands.
+ * tree-cfg.c (move_sese_region_to_fn): Use XNEWVEC instead of
+ xcalloc to allocate edge_pred and edge_flag arrays.
+
+2012-08-13 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.h (FIXED_REGISTERS): Do not mark REX registers here.
+ (CALL_USED_REGISTERS): Use bitmaps to mark call-used registers
+ for different ABIs.
+ (enum reg_class): Move CLOBBERED_REGS just before GENERAL_REGS.
+ (REG_CLASS_NAMES): Update.
+ (REG_CLASS_CONTENTS): Update. Clear CLOBBERED_REGS members.
+ * config/i386/i386.c (ix86_conditional_register_usage): Disable
+ REX registers on 32bit targets. Handle bitmaps from
+ CALL_USED_REGISTERS initializer. Calculate CLOBBERED_REGS register
+ set from GENERAL_REGS also for 32bit targets. Do not change call
+ used register set for TARGET_64BIT_MS_ABI separately.
+
+2012-08-13 Richard Guenther <rguenther@suse.de>
+
+ * basic-block.h (struct basic_block): Remove loop_depth
+ member, move flags and index members next to each other.
+ * cfgloop.h (bb_loop_depth): New inline function.
+ * cfghooks.c (split_block): Do not set loop_depth.
+ (duplicate_block): Likewise.
+ * cfgloop.c (flow_loop_nodes_find): Likewise.
+ (flow_loops_find): Likewise.
+ (add_bb_to_loop): Likewise.
+ (remove_bb_from_loops): Likewise.
+ * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
+ * gimple-streamer-in.c (input_bb): Do not stream loop_depth.
+ * gimple-streamer-out.c (output_bb): Likewise.
+ * bt-load.c: Include cfgloop.h.
+ (migrate_btr_defs): Use bb_loop_depth.
+ * cfg.c (dump_bb_info): Likewise.
+ * final.c (compute_alignments): Likewise.
+ * ira.c (update_equiv_regs): Likewise.
+ * tree-ssa-copy.c (init_copy_prop): Likewise.
+ * tree-ssa-dom.c (loop_depth_of_name): Likewise.
+ * tree-ssa-forwprop.c: Include cfgloop.h.
+ (forward_propagate_addr_expr): Use bb_loop_depth.
+ * tree-ssa-pre.c (insert_into_preds_of_block): Likewise.
+ * tree-ssa-sink.c (select_best_block): Likewise.
+ * ipa-inline-analysis.c: Include cfgloop.h.
+ (estimate_function_body_sizes): Use bb_loop_depth.
+ * Makefile.in (tree-ssa-forwprop.o): Depend on $(CFGLOOP_H).
+ (ipa-inline-analysis.o): Likewise.
+ (bt-load.o): Likewise.
+
+2012-08-13 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR driver/54210
+ * config/i386/driver-i386.c (host_detect_local_cpu): Test bit_PRFCHW
+ bit of CPUID 0x80000001 %ecx instead of CPUID 7 %ecx.
+ * config/i386/cpuid.h (bits_PRFCHW): Move definition to CPUID
+ 0x80000001 %ecx flags.
+
+2012-08-13 Richard Guenther <rguenther@suse.de>
+
+ * tree-cfg.c (print_loop): Avoid ICEing for loops marked for
+ removal and loops with multiple latches.
+
+2012-08-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/53968
+ * tree.c (integer_pow2p): Avoid undefined signed overflows.
+ * simplify-rtx.c (neg_const_int): Likewise.
+ * expr.c (fixup_args_size_notes): Likewise.
+ * stor-layout.c (set_min_and_max_values_for_integral_type): Likewise.
+ * double-int.c (mul_double_wide_with_sign): Likewise.
+ (double_int_mask): Likewise.
+ * tree-ssa-loop-ivopts.c (get_address_cost): Likewise.
+
+2012-08-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54200
+ * tree-ssa-copyrename.c (rename_ssa_copies): Do not add
+ PHI results to another partition if not all PHI arguments
+ have the same partition.
+
+2012-08-12 Jan Hubicka <jh@suse.cz>
+
+ * tree-pass.h (write_summary, write_optimization_summary): Remove
+ set and vset arguments.
+ * ipa-cp.c (ipcp_write_summary): Remove set and vset arugments.
+ (write_node_summary_p): Likewise; use the encoder.
+ (ipa_reference_write_optimization_summary): Likewise.
+ * lto-cgraph.c (output_cgraph_opt_summary): Use encoder.
+ (lto_symtab_encoder_new): Initialize in_partition field.
+ (lto_symtab_encoder_delete): Destroy in_partition field.
+ (LCC_NOT_FOUND): Move to lto-streamer.h
+ (lto_symtab_encoder_deref): Likewise.
+ (lto_symtab_encoder_in_partition_p,
+ lto_set_symtab_encoder_in_partition): New functions.
+ (referenced_from_other_partition_p): Rewrite to use encoder.
+ (reachable_from_other_partition_p): Likewise.
+ (referenced_from_this_partition_p): Likewise.
+ (reachable_from_this_partition_p): Likewise.
+ (lto_output_node): Likewise.
+ (lto_output_varpool_node): Likewise.
+ (output_refs): Likewise.
+ (compute_ltrans_boundary): Initialize in_partition fileds of
+ the encoder.
+ (output_symtab): Likewise.
+ (input_refs): Match the changes in output_refs.
+ (output_cgraph_opt_summary_p): Remove set argument.
+ (output_node_opt_summary): Replace set by encoder.
+ (output_cgraph_opt_summary): Remove set argument; use
+ the encoder.
+ * ipa-pure-const.c (pure_const_write_summary): Remove set and vset
+ arguments; use the encoder.
+ * lto-streamer-out.c (lto_output): Remove set and vset argument; use
+ the encoder.
+ (produce_symtab): Likewise.
+ * ipa-inline.h (inline_write_summary): Remove set and vset arguments.
+ * ipa-inline-analysis.c (inline_write_summary): Likewise.
+ * ipa-prop.c (ipa_prop_write_jump_functions): Remove set argument;
+ use encoder.
+ * ipa-prop.h (ipa_prop_write_jump_functions): Likewise.
+ * passes.c (ipa_write_summaries_2): Remove set and vset arguments.
+ (ipa_write_summaries_1): Update.
+ (ipa_write_optimization_summaries_1): Likewise.
+ (ipa_write_optimization_summaries): Likewise.
+ * lto-streamer.h (lto_symtab_encoder_t): Add in_partition.
+ (lto_symtab_encoder_iterator): New type.
+ (lto_symtab_encoder_deref): Make inline.
+ (output_symtab, referenced_from_other_partition_p,
+ reachable_from_other_partition_p, referenced_from_this_partition_p,
+ reachable_from_this_partition_p): Update.
+ (lsei_end_p, lsei_next, lsei_node, lsei_cgraph_node,
+ lsei_varpool_node): New inline functions.
+ (LCC_NOT_FOUND): New macro.
+ (lto_symtab_encoder_deref, lsei_start, lsei_next_in_partition,
+ lsei_start_in_partition, lsei_next_function_in_partition,
+ lsei_start_function_in_partition, lsei_next_variable_in_partition,
+ lsei_start_variable_in_partition): New inline functions.
+
+2012-08-12 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md (prefetch): Simplify expander. Fix condition to
+ allow SH3.
+ (*prefetch_media): Move insn below expander.
+ (*prefetch): Fix condition to allow SH3.
+
+2012-08-12 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/sh.md: Add splits for inverted compare and branch
+ opportunities.
+ (*cmpeqsi_t): New insn.
+ (cmpgtsi_t, cmpgesi_t): Swap r and N alternatives.
+ (cmpgeusi_t): Use satisfies_constraint_Z. Emit sett insn in
+ replacement insn list and not in the preparation statements.
+ (clrt, sett): Add mt_group attribute.
+
+2012-08-12 Marc Glisse <marc.glisse@inria.fr>
+
+ PR middle-end/54193
+ * gimple-pretty-print.c (dump_ternary_rhs): Handle 4 arguments.
+
+2012-08-12 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * config/sh/predicates.md (mem_index_disp_operand): Check for
+ arith_reg_operand instead of REG_P.
+
+2012-08-11 Bernd Schmidt <bernds@codesourcery.com>
+
+ * reload1.c (replaced_subreg, gen_reload): Add
+ SECONDARY_MEMORY_NEEDED ifdefs as necessary.
+
+2012-08-11 Jan Hubicka <jh@suse.cz>
+
+ * lto-section-in.c (lto_section_name): Do not use "symtab" as part of
+ symtab_node sectoin name; it confuses plugin.
+
+2012-08-11 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Shift DECL_UID
+ index in the va_list_vars bitmap by num_ssa_names.
+
+2012-08-11 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (xop integer multiply/add insns): Use
+ register_operand for operand 3 predicate.
+ (xop_phadd<u>bq): Fix vec_select selectors.
+
+2012-08-11 Martin Jambor <mjambor@suse.cz>
+
+ PR fortran/48636
+ * ipa-inline.h (condition): New fields offset, agg_contents and by_ref.
+ * ipa-inline-analysis.c (agg_position_info): New type.
+ (add_condition): New parameter aggpos, also store agg_contents, by_ref
+ and offset.
+ (dump_condition): Also dump aggregate conditions.
+ (evaluate_conditions_for_known_args): Also handle aggregate
+ conditions. New parameter known_aggs.
+ (evaluate_properties_for_edge): Gather known aggregate contents.
+ (inline_node_duplication_hook): Pass NULL known_aggs to
+ evaluate_conditions_for_known_args.
+ (unmodified_parm): Split into unmodified_parm and unmodified_parm_1.
+ (unmodified_parm_or_parm_agg_item): New function.
+ (set_cond_stmt_execution_predicate): Handle values passed in
+ aggregates.
+ (set_switch_stmt_execution_predicate): Likewise.
+ (will_be_nonconstant_predicate): Likewise.
+ (estimate_edge_devirt_benefit): Pass new parameter known_aggs to
+ ipa_get_indirect_edge_target.
+ (estimate_calls_size_and_time): New parameter known_aggs, pass it
+ recrsively to itself and to estimate_edge_devirt_benefit.
+ (estimate_node_size_and_time): New vector known_aggs, pass it o
+ functions which need it.
+ (remap_predicate): New parameter offset_map, use it to remap aggregate
+ conditions.
+ (remap_edge_summaries): New parameter offset_map, pass it recursively
+ to itself and to remap_predicate.
+ (inline_merge_summary): Also create and populate vector offset_map.
+ (do_estimate_edge_time): New vector of known aggregate contents,
+ passed to functions which need it.
+ (inline_read_section): Stream new fields of condition.
+ (inline_write_summary): Likewise.
+ * ipa-cp.c (ipa_get_indirect_edge_target): Also examine the aggregate
+ contents. Let all local callers pass NULL for known_aggs.
+
+2012-08-11 Jan Hubicka <jh@suse.cz>
+
+ * lto-cgraph.c (output_cgraph): Rename to ...
+ (output_symtab): ... this one. Update for LTO_section_symtab_nodes.
+ (input_cgraph): Rename to ...
+ (input_symtab): ... this one. Update for LTO_section_symtab_nodes.
+ * lto-streamer-out.c (create_output_block): Do not set
+ section_type.
+ (produce_asm): Likewise.
+ (lto_output_toplevel_asms): Likewise.
+ (produce_asm_for_decls): Likewise.
+ (lto_output): Use output_symtab.
+ * lto-section-in.c (lto_section_name): Update.
+ * lto-section-out.c (lto_destroy_simple_output_block): Remove
+ section_type.
+ * lto-streamer.h (enum lto_section_type): Remove LTO_section_varpool;
+ rename LTO_section_cgraph to LTO_section_symtab_nodes.
+ (struct lto_header): Remove section_type.
+
+2012-08-11 Jan Hubicka <jh@suse.cz>
+
+ * cgraph.h (vector types for symtab_node): Add.
+ * ipa-reference.c (ipa_reference_write_optimization_summary): Update
+ for new symtab encoder.
+ (ipa_reference_read_optimization_summary): Likewise.
+ * lto-cgraph.c (output_varpool): Remove.
+ (input_cgraph_opt_summary): Take symtab nodes vector as argument.
+ (LTO_cgraph_tags): Rename to ...
+ (LTO_symtab_tags): ... this one; add LTO_symtab_variable.
+ (lto_cgraph_encoder_new): Rename to ...
+ (lto_symtab_encoder_new): ... this on.
+ (lto_cgraph_encoder_encode): Rename to ...
+ (lto_symtab_encoder_encode): ... this one.
+ (lto_cgraph_encoder_delete): Rename to ...
+ (lto_symtab_encoder_delete): ... this one.
+ (lto_cgraph_encoder_deref): Rename to ...
+ (lto_symtab_encoder_deref): ... this one.
+ (lto_cgraph_encoder_encode_body_p): Rename to ...
+ (lto_symtab_encoder_encode_body_p): ... this one.
+ (lto_varpool_encoder_new, lto_varpool_encoder_delete,
+ lto_varpool_encoder_encode, lto_varpool_encoder_lookup,
+ lto_varpool_encoder_deref): Remove.
+ (lto_varpool_encoder_encode_initializer_p): Rename to ...
+ (lto_symtab_encoder_encode_initializer_p): ... this one.
+ (lto_set_varpool_encoder_encode_initializer): Rename to ...
+ (lto_set_symtab_encoder_encode_initializer): ... this one.
+ (lto_output_edge): Update.
+ (lto_output_node): Update.
+ (lto_output_varpool_node): Update; stream out LTO_symtab_variable tag.
+ (lto_output_ref): Drop varpool_encoder; update.
+ (add_node_to): Update.
+ (add_references): Update.
+ (output_outgoing_cgraph_edges): Update.
+ (output_refs): Update.
+ (compute_ltrans_boundary): Update.
+ (output_cgraph): Update; output varpools too.
+ (input_overwrite_node): Update.
+ (output_varpool): Remove.
+ (input_node): Update.
+ (input_ref): Update.
+ (input_edge): Update.
+ (input_cgraph_1): Update; input varpool too; unify fixup code.
+ (input_varpool_1): Remove.
+ (input_refs): Update.
+ (input_cgraph): Update.
+ (output_node_opt_summary): Update.
+ (input_cgraph_opt_section): Update.
+ (input_cgraph_opt_summary): Update.
+ * ipa-pure-const.c (pure_const_write_summary): Update.
+ (pure_const_read_summary): Update.
+ * lto-streamer-out.c (lto_write_tree): Update.
+ (lto_output): Likewise.
+ (produce_symtab): Update.
+ (produce_asm_for_decls): Update.
+ * ipa-inline-analysis.c (inline_read_section): Update.
+ (inline_write_summary): Update.
+ * ipa-prop.c (ipa_write_node_info): Update.
+ (ipa_prop_read_section): Update.
+ * lto-streamer.h (lto_cgraph_encoder_d): Rename to ...
+ (lto_symtab_encoder_d): ... this one; add initializer.
+ (lto_cgraph_encoder_t): Rename to ...
+ (lto_symtab_encoder_t): ... this one.
+ (lto_cgraph_encoder_size): Rename to ...
+ (lto_symtab_encoder_size): ... this one.
+ (lto_varpool_encoder_d): ... remove.
+ (lto_varpool_encoder_t): Remove.
+ (lto_out_decl_state): Remove cgraph_node_encoder, varpool_node_encoder
+ add symtab_node_encoder.
+ (lto_file_decl_data): Likewise.
+ (lto_cgraph_encoder_deref, lto_cgraph_encoder_lookup,
+ lto_cgraph_encoder_new, lto_cgraph_encoder_encode,
+ lto_cgraph_encoder_delete, lto_cgraph_encoder_encode_body_p,
+ lto_varpool_encoder_encode_body_p, lto_varpool_encoder_deref,
+ lto_varpool_encoder_lookup, lto_varpool_encoder_new,
+ lto_varpool_encoder_encode, lto_varpool_encoder_delete,
+ lto_varpool_encoder_encode_initializer_p): Remove.
+ (lto_symtab_encoder_deref, lto_symtab_encoder_lookup,
+ lto_symtab_encoder_t, lto_symtab_encoder_encode,
+ lto_symtab_encoder_delete, lto_symtab_encoder_encode_body_p,
+ lto_symtab_encoder_encode_initializer_p): New.
+
+2012-08-11 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (isa): Add fma and fma4.
+ (enabled): Handle fma and fma4.
+ * config/i386/sse.md (*fma_fmadd_<mode>): Merge *fma4_fmadd_<mode>.
+ (*fma_fmsub_<mode>): Merge *fma4_fmsub_<mode>.
+ (*fma_fnmadd_<mode>): Merge *fma4_fnmadd_<mode>.
+ (*fma_fnmsub_<mode>): Merge *fma4_fnmsub_<mode>.
+ (*fma_fmaddsub_<mode>): Merge *fma4_fmaddsub_<mode>.
+ (*fma_fmsubadd_<mode>): Merge *fma4_fmsubadd_<mode>.
+
+2012-08-10 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (*fma_fmadd_<mode>, *fma_fmsub_<mode>,
+ *fma_fnmadd_<mode>, *fma_fnmsub_<mode>, *fma_fmaddsub_<mode>,
+ *fma_fmsubadd_<mode>): Move FMA3 insn patterns before FMA4 patterns.
+
+2012-08-10 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (simple LEA peephole2s): Add zero-extend
+ variants of PLUS and MULT simple LEA patterns. Disable PLUS
+ patterns for TARGET_OPT_AGU.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * Makefile.in (OBJS): Remove matrix-reorg.o.
+ (matrix-reorg.o): Remove dependence rule.
+ (GTFILES): Remove matrix-reorg.c.
+ * matrix-reorg.c: Remove.
+ * passes.c (init_optimization_passes): Do not schedule
+ pass_ipa_matrix_reorg.
+ * tree-pass.h (pass_ipa_matrix_reorg): Remove.
+ * common.opt (fipa-matrix-reorg): Stub out.
+ * doc/invoke.texi (fipa-matrix-reorg): Remove documentation.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/54219
+ * fold-const.c (fold_ternary_loc): Do not reverse the mask
+ when canonicalizing it when folding VEC_PERM_EXPR.
+
+2012-08-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR middle-end/54211
+ * gimple-ssa-strength-reduction.c (analyze_candidates_and_replace):
+ Use cand_type to determine whether pointer arithmetic will be generated.
+
+2012-08-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * doc/sourcebuild.texi: Document long_neq_int effective target.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54109
+ * tree-ssa-forwprop.c
+ (forward_propagate_addr_into_variable_array_index): Remove.
+ (forward_propagate_addr_expr_1): Adjust.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * tree-cfg.c (dump_function_to_file): Make sure to dump
+ anonymous SSA names when there are no local decls.
+
+2012-08-10 Steven Bosscher <steven@gcc.gnu.org>
+
+ * tree-ssa-pre.c (alloc_expression_id): Fix use of VEC_reserve.
+ * tree-into-ssa.c (get_ssa_name_ann): Likewise.
+ (mark_phi_for_rewrite): Likewise.
+ (compute_global_livein): Use VEC_reserve outside the innermost
+ loop and VEC_quick_push instead of VEC_safe_push in that loop.
+ (update_ssa): Re-organize to avoid unnecessary sbitmap_zero'ing
+ of new_ssa_names and old_ssa_names. Allocate phis_to_rewrite to
+ the correct initial size.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-pre.c (pretemp, storetemp, prephitemp): Remove.
+ (need_creation): Remove.
+ (get_representative_for): Use anonymous named SSA names.
+ (create_expression_by_pieces): Likewise.
+ (insert_into_preds_of_block): Likewise.
+ (init_pre): Do not init removed vars.
+ (fini_pre): Do not free need_creation.
+ * tree-ssa-forwprop.c (simplify_bitwise_binary): Use anonymous
+ SSA names.
+ * tree-ssa-loop-manip.c (create_iv): Likewise.
+ * value-prof.c (gimple_divmod_fixed_value): Likewise.
+ (gimple_mod_pow2): Likewise.
+ (gimple_mod_subtract): Likewise.
+ (gimple_ic): Likewise.
+ (gimple_stringop_fixed_value): Likewise.
+ * tree-ssa-phiopt.c (condstoretemp): Remove.
+ (tree_ssa_phiopt_worker): Use anonymous named SSA names.
+ (conditional_replacement): Likewise.
+ (abs_replacement): Likewise.
+ (cond_store_replacement): Likewise.
+ (cond_if_else_store_replacement_1): Likewise.
+ * tree-ssa-loop-im.c (rewrite_reciprocal): Likewise.
+ (rewrite_bittest): Likewise.
+ * tree-ssa-reassoc.c (build_and_add_sum): Get type from callers
+ and build anonymous SSA names.
+ (undistribute_ops_list): Adjust.
+ (eliminate_redundant_comparison): Use anonymous SSA names.
+ (rewrite_expr_tree_parallel): Likewise.
+ (get_reassoc_pow_ssa_name): Remove.
+ (attempt_builtin_powi): Adjust.
+ (reassociate_bb): Likewise.
+ * tree-ssa-strlen.c (get_string_length): Use anonymous SSA names.
+ * tree-switch-conversion.c (emit_case_bit_tests): Likewise.
+ (build_arrays): Likewise.
+ * tree-tailcall.c (adjust_return_value_with_ops): Likewise.
+ (create_tailcall_accumulator): Likewise.
+ * tree-vect-generic.c (expand_vector_divmod): Likewise.
+ * tree-profile.c (gcov_type_tmp_var): Remove.
+ (gimple_init_edge_profiler): Do not initialize it and use anonymous
+ SSA names.
+ (gimple_gen_ic_profiler): Likewise.
+ (tree_profiling): Adjust.
+ * tree-sra.c (build_ref_for_offset): Use anonymous SSA names.
+ * tree-ssa-math-opts.c (execute_cse_sincos_1): Likewise.
+ (powi_as_mults_1): Likewise.
+ (powi_as_mults): Likewise.
+ (build_and_insert_call): Adjust.
+ (build_and_insert_binop): Likewise.
+ (build_and_insert_ref): Likewise.
+ (build_and_insert_cast): Likewise.
+ (gimple_expand_builtin_pow): Likewise.
+ (gimple_expand_builtin_cabs): Likewise.
+ (execute_optimize_bswap): Use anonymous SSA names.
+ (convert_mult_to_widen): Likewise.
+ (convert_plusminus_to_widen): Likewise.
+ * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
+ * tree-ssa-propagate.c (update_call_from_tree): Likewise.
+ * tree-if-conv.c (ifc_temp_var): Likewise.
+ * tree-loop-distribution.c (generate_memset_builtin): Likewise.
+ * tree-parloops.c (take_address_of): Likewise.
+ * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
+ (vect_permute_load_chain): Likewise.
+ * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise.
+ * tree-vect-patterns.c (vect_recog_temp_ssa_var): Likewise.
+ (vect_handle_widen_op_by_const): Likewise.
+ (vect_operation_fits_smaller_type): Likewise.
+ (vect_recog_over_widening_pattern): Likewise.
+ * tree-vect-stmts.c (vect_init_vector): Likewise.
+ * tree-vrp.c (simplify_truth_ops_using_ranges): Likewise.
+ (simplify_float_conversion_using_ranges): Likewise.
+
+2012-08-10 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * config/i386/i386.c (ix86_init_mmx_sse_builtins): Fix
+ target mask of __builtin_ia32_rdseed_di_step builtin.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54027
+ * tree-vrp.c (extract_range_from_binary_expr_1): Merge RSHIFT_EXPR
+ and LSHIFT_EXPR handling, force -fwrapv for the multiplication used
+ to handle LSHIFT_EXPR with a constant.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * tree.h (SSA_NAME_VAR): Return NULL_TREE if an IDENTIFIER_NODE
+ is recorded as var.
+ (SSA_NAME_IDENTIFIER): Return the IDENTIFIER_NODE of the SSA_NAME
+ or its SSA_NAME_VAR.
+ (SET_SSA_NAME_VAR_OR_IDENTIFIER): New setter.
+ * tree-ssanames.c (make_ssa_name_fn): Handle creating anonymous
+ SSA names by passing a type instead of a variable decl.
+ (release_ssa_name): Use SET_SSA_NAME_VAR_OR_IDENTIFIER.
+ (copy_ssa_name_fn): Handle anonymous SSA names.
+ (replace_ssa_name_symbol): Use SET_SSA_NAME_VAR_OR_IDENTIFIER.
+ * tree-flow-inline.h (make_temp_ssa_name): New inline function.
+ * tree-pretty-print.c (dump_generic_node): Use SSA_NAME_IDENTIFIER,
+ dump SSA names without a name as <anon>.
+ * cfgexpand.c (expand_used_vars): Assing anonymous SSA names we are
+ going to expand a decl.
+ (gimple_expand_cfg): Assign all SSA names of a partition the
+ decl we created for its leader.
+ * tree-ssa.c (target_for_debug_bind): Handle SSA_NAMEs.
+ (verify_ssa_name): Handle anonymous SSA names.
+ (verify_def): Likewise.
+ * tree-predcom.c (eliminate_temp_copies): Likewise.
+ * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
+ * tree-ssa-live.c (var_map_base_init): Compute conflicts for
+ anonymous SSA names with the same type.
+ (mark_all_vars_used_1): Handle anonymous SSA names.
+ (verify_live_on_entry): Likewise.
+ * tree-ssa-coalesce.c (abnormal_corrupt): Remove.
+ (create_outofssa_var_map): Adjust with respect to conflicts we
+ compute for anonymous SSA names. Do not restrict abnormal
+ coalescing.
+ (coalesce_partitions): Do not restrict abnormal coalescing.
+ Assert we only ever coalesce variables we computed conflicts for.
+ * tree-ssa-ter.c (process_replaceable): Do not restrict TER
+ of anonymous names.
+ * expr.c (expand_expr_real_1): Handle anonymous SSA names
+ expanded from IVOPTs by creating a raw REG here.
+ * tree-cfg.c (replace_ssa_name): Handle anonymous SSA names.
+ (dump_function_to_file): Dump anonymous SSA names alongside
+ with their types in the variable list.
+ (verify_gimple_return): Guard use of SSA_NAME_VAR.
+ * tree-into-ssa.c (mark_for_renaming): Handle a NULL symbol.
+ (rewrite_into_ssa): Make SSA names anonymous.
+ * tree-ssa-structalias.c (alias_get_name): Rewrite.
+ * tree-ssa-uninit.c (ssa_undefined_value_p): Handle anonymous
+ SSA names.
+ (warn_uninitialized_phi): Likewise.
+ * tree-ssa-loop-ivopts.c (prepare_decl_rtl): Defer expanding
+ anonymous SSA names to the expander.
+ (determine_iv_cost): Anonymous SSA names are artificial.
+ * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
+ Handle anonymous SSA names.
+ * lto-streamer-out.c (output_ssa_names): Stream SSA_NAME_VAR
+ or if NULL, the type of the SSA name.
+ * tree-inline.c (remap_ssa_name): Handle anonymous SSA names,
+ remap names as anonymous where appropriate.
+ (insert_init_stmt): Pass SSA names down to insert_init_debug_bind.
+ * tree-ssa-uncprop.c (uncprop_into_successor_phis): Adjust
+ according to what we create conflicts for in out-of-SSA
+ coalescing.
+ * tree-parloops.c (separate_decls_in_region_name): Handle
+ anonymous SSA names.
+ (add_field_for_name): Likewise.
+ * tree.c (get_name): Handle SSA names.
+ * tree-ssa-loop-im.c (gen_lsm_tmp_name): Defer to get_name for
+ SSA_NAMEs.
+ * tree-vect-loop-manip.c (adjust_debug_stmts): Use
+ virtual_operand_p.
+ * tree-sra.c (create_access_replacement): Give up generating
+ a DECL_DEBUG_EXPR for SSA names in the memory reference.
+ (replace_removed_params_ssa_names): Guard use of SSA_NAME_VAR.
+ * tree-complex.c (get_component_ssa_name): Handle anonymous
+ SSA names.
+ (set_component_ssa_name): Likewise.
+ * tree-ssa-sccvn.c (visit_reference_op_load): Likewise.
+ * tree-object-size.c (collect_object_sizes_for): Handle
+ uninitialized SSA names properly.
+ * ipa-inline-analysis.c (eliminated_by_inlining_prob): Guard use of
+ SSA_NAME_VAR.
+ * ipa-split.c (test_nonssa_use): Likewise.
+ (consider_split): Likewise.
+ (mark_nonssa_use): Likewise.
+
+2012-08-09 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/54146
+ * ipa-inline-transform.c (inline_call): Add UPDATE_OVERALL_SUMMARY
+ parameter; honnor it.
+ * ipa-inline.c (recursive_inlining): Update call
+ of inline_call.
+ (inline_small_functions): Likewise.
+ (ipa_inline): Likewise.
+ (inline_always_inline_functions): Likewise.
+ (early_inline_small_functions): Likewise.
+ (flatten_function): Do separate update of summary info.
+ * ipa-inline.h (inline_update_overall_summary): Declare.
+ (inline_call): Update.
+ * ipa-inline-analysis.c (inline_merge_summary): Break out
+ updating code to ...
+ (inline_update_overall_summary): Likewise.
+
+2012-08-09 Richard Henderson <rth@redhat.com>
+
+ * config/s390/s390.c (s390_expand_insv): Use VOIDmode in gen_rtx_SET.
+
+ * config/s390/s390.c (s390_expand_cs_hqi): Copy val to a temp before
+ performing the compare for the restart loop.
+
+2012-08-09 DJ Delorie <dj@redhat.com>
+
+ * config/rl78/rl78.c (rl78_alloc_physical_registers): Check for
+ SET before extracting SET_SRC.
+ (rl78_remove_unused_sets): Check for REG before extractnig REGNO.
+
+2012-08-09 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * config/sh/sh-protos (shift_insns_rtx): Delete.
+ (sh_ashlsi_clobbers_t_reg_p): Add.
+ * config/sh/sh.c (shift_insns, shift_amounts, ext_shift_insns,
+ ext_shift_amounts): Merge arrays of ints to array of structs.
+ Adapt usage of arrays throughout the file.
+ (shift_insns_rtx): Delete unused function.
+ (sh_ashlsi_clobbers_t_reg_p): New function.
+ * config/sh/sh.md (ashlsi3): Emit ashlsi3_n_clobbers_t insn if the
+ final shift sequence will clobber T_REG.
+ (ashlsi3_n): Split only if the final shift sequence will not
+ clobber T_REG.
+ (ashlsi3_n_clobbers_t): New insn_and_split.
+
+2012-08-09 Steven Bosscher <steven@gcc.gnu.org>
+
+ * calls.c (mem_overlaps_already_clobbered_arg_p): Use SBITMAP_SIZE
+ instead of looking at sbitmap n_bits member directly.
+ * gcse.c (hoist_code): Likewise.
+ * sched-rgn.c (split_edges): Likewise.
+ * tree-into-ssa.c (is_old_name, is_new_name, add_new_name_mapping,
+ update_ssa): Likewise.
+
+2012-08-09 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.h (LIMIT_RELOAD_CLASS): Return preferred
+ single unit register class for classes that contain registers form
+ multiple units.
+ (REG_CLASS_CONTENTS): Add missing "frame" register to FLOAT_INT_REGS,
+ INT_SSE_REGS and FLOAT_INT_SSE_REGS register classes.
+
+2012-08-09 Martin Jambor <mjambor@suse.cz>
+
+ * cgraph.h (cgraph_indirect_call_info): Field anc_offse renamd to
+ offset, updated all users. New field agg_contents.
+ * ipa-prop.h (jump_func_type): Removed IPA_JF_CONST_MEMBER_PTR.
+ (ipa_pass_through_data): New field agg_preserved.
+ (ipa_ancestor_jf_data): Likewise.
+ (ipa_member_ptr_cst): Removed.
+ (ipa_agg_jf_item): New type.
+ (ipa_agg_jump_function): Likewise.
+ (ipa_jump_func): New field agg. Removed field member_cst.
+ (ipa_get_jf_pass_through_agg_preserved): New function.
+ (ipa_get_jf_ancestor_agg_preserved): Likewise.
+ (ipa_get_jf_member_ptr_pfn): Removed.
+ (ipa_find_agg_cst_for_param): Declare.
+ (ipa_load_from_parm_agg): Likewise.
+ * ipa-prop.c (param_analysis_info): Fields modified and
+ visited_statements rename to parm_modified and parm_visited_statements
+ respectively, added fields ref_modified, ref_visited_statements,
+ pt_modified and pt_visited_statements.
+ (ipa_print_node_jump_functions_for_edge): Do not dump const member
+ functions. Dump agg_preserved flags and aggregate jump functions.
+ (ipa_set_jf_simple_pass_through): Set also agg_preserved.
+ (ipa_set_ancestor_jf): Likewise.
+ (ipa_set_jf_arith_pass_through): Clear agg_preserved.
+ (ipa_set_jf_member_ptr_cst): Removed.
+ (is_parm_modified_before_stmt): Logic reversed, renamed to
+ parm_preserved_before_stmt_p. Cache visited bitmap only for
+ naked DECL parameters. All callers updated.
+ (load_from_unmodified_param): Allow NULL parms_ainfo.
+ (parm_ref_data_preserved_p): New function.
+ (parm_ref_data_pass_through_p): Likewise.
+ (ipa_load_from_parm_agg_1): Likewise.
+ (ipa_load_from_parm_agg): Likewise.
+ (compute_complex_assign_jump_func): Check if aggregate contents are
+ preserved.
+ (compute_complex_ancestor_jump_func): Likewise.
+ (compute_scalar_jump_functions): Removed.
+ (type_like_member_ptr_p): Also check field position are known and sane.
+ (compute_pass_through_member_ptrs): Removed.
+ (determine_cst_member_ptr): Likewise.
+ (ipa_known_agg_contents_list): New type.
+ (determine_known_aggregate_parts): New function.
+ (compute_cst_member_ptr_arguments): Removed.
+ (ipa_compute_jump_functions_for_edge): Compute all kinds of jump
+ functions (scalar, aggregate and member pointer).
+ (ipa_get_member_ptr_load_param): Incorporate into
+ ipa_get_stmt_member_ptr_load_param, also pass back an offset.
+ (ipa_note_param_call): Clear agg_contents.
+ (ipa_analyze_indirect_call_uses): Also look for simple pointers loaded
+ from aggregates. In such cases, store offset of the called field.
+ (ipa_analyze_node): Initialize new fields of param_analysis_info.
+ (update_jump_functions_after_inlining): Handle aggregate contents.
+ (ipa_find_agg_cst_for_param): New function.
+ (try_make_edge_direct_simple_call): Handle called aggregate values.
+ (update_indirect_edges_after_inlining): Make sure aggregate preserving
+ jump functions comply with type compatibility requirements.
+ (ipa_edge_duplication_hook): Copy also aggregate jump functions.
+ (ipa_write_jump_function): Stream agg_preserved flags and aggregate
+ jump functions. Do not stream member pointer constant jump functions.
+ (ipa_read_jump_function): Likewise.
+ (ipa_write_indirect_edge_info): Stream new cgraph_indirect_call_info
+ fields.
+ (ipa_read_indirect_edge_info): Likewise.
+
+2012-08-09 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * config/sh/predicates.md (mem_index_disp_operand): New predicate.
+ * config/sh/sh.md (*movsi_index_disp): Rewrite insns to use the new
+ mem_index_disp_operand predicate.
+
+2012-08-09 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/sh.md: Add negc extu sequence peephole.
+ (movrt, movnegt, movrt_negc, nott): Use t_reg_operand predicate.
+ (*movrt_negc): New insn.
+ * config/sh/sync.md (atomic_test_and_set): Pass gen_t_reg_rtx to
+ gen_movnegt.
+ * config/sh/sh.c (expand_cbranchsi4, sh_emit_scc_to_t,
+ sh_emit_compare_and_branch, sh_emit_compare_and_set): Use
+ get_t_reg_rtx.
+ (sh_expand_t_scc): Pass gen_t_reg_rtx to gen_movnegt.
+
+2012-08-09 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/50751
+ * config/sh/sh.md (*extendqisi2_compact_reg, *extendhisi2_compact_reg):
+ Use arith_reg_operand predicate instead of register_operand.
+ * config/sh/predicates.md (movsrc_no_disp_mem_operand): Accept
+ only mem, simplify.
+
+2012-08-09 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/alpha.c (alpha_pad_noreturn): Rename to ...
+ (alpha_pad_function_end): ... this. Also insert NOP between
+ sibling call and GP load.
+ (alpha_reorg): Update call to alpha_pad_function_end. Expand comment.
+
+2012-08-09 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * config/i386/adxintrin.h: Remove guarding __ADX__ check.
+ * config/i386/x86intrin.h: Likewise.
+ * config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove
+ OPTION_MASK_ISA_ADX from needed options for
+ __builtin_ia32_addcarryx_u32 and __builtin_ia32_addcarryx_u64.
+ (ix86_expand_builtin): Use add<mode>3_carry in expanding of
+ IX86_BUILTIN_ADDCARRYX32 and IX86_BUILTIN_ADDCARRYX64.
+
+2012-08-09 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/53701
+ * sel-sched.c (vinsn_vec_has_expr_p): Clarify function comment.
+ Process not only expr's vinsns but all old vinsns from expr's
+ history of changes.
+ (update_and_record_unavailable_insns): Clarify comment.
+
+2012-08-09 Bernd Schmidt <bernds@codesourcery.com>
+
+ * reload.c (find_valid_class_1): New static function.
+ (push_reload): Use it when reloading a SYMBOL_REG as the inner
+ of a subreg. Keep better track of needed classes for the
+ secondary memory case.
+ * config/i386/i386.h (LIMIT_RELOAD_CLASS): Limit INT_SSE_REGS to
+ GENERAL_REGS.
+ * reload1.c (replaced_subreg): New static function.
+ (gen_reload): Use it when deciding whether to use secondary
+ memory.
+
+2012-08-09 Richard Guenther <rguenther@suse.de>
+
+ * tree.h (SSA_VAR_P): Simplify.
+ * tree-ssanames.c (make_ssa_name_fn): Strengthen assert.
+ * fold-const.c (fold_comparison): Check for default def first
+ before checking for PARM_DECL.
+ * tree-complex.c (get_component_ssa_name): Likewise.
+ * tree-inline.c (remap_ssa_name): Likewise.
+ * tree-ssa-loop-ivopts.c (parm_decl_cost): Likewise.
+ * tree-ssa-structalias.c (get_fi_for_callee): Likewise.
+ (find_what_p_points_to): Likewise.
+ * tree-ssa-operands.c (add_stmt_operand): Simplify.
+
+2012-08-08 Joseph Myers <joseph@codesourcery.com>
+
+ * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
+ IOR to a constant if one operand has side effects.
+
+2012-08-08 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * builtins.c (expand_builtin_atomic_compare_exchange): Pass old
+ value operand as MEM to expand_atomic_compare_and_swap.
+
+ * config/s390/s390.md ("atomic_compare_and_swap<mode>"): Accept
+ nonimmediate_operand for old value; generate load and store if
+ needed.
+ * config/s390/s390.c (s390_expand_cs_hqi): Accept any operand
+ as vtarget.
+
+2012-08-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/54146
+ * gimpify.c (gimplify_body): Only verify_gimple_in_seq with
+ checking enabled.
+ * tree-ssa-loop-manip.c (add_exit_phis_var): Assert that var is
+ a gimple_reg if checking is enabled.
+ (find_uses_to_rename_stmt): Only look at non-virtual USE operands.
+ * tree-into-ssa (compute_global_livein): Change the worklist
+ type from an array to a VEC.
+
+2012-08-08 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-operands.h (virtual_operand_p): Declare.
+ * tree-ssa-operands.c (virtual_operand_p): New predicate.
+ * gimple.c (is_gimple_reg): Use virtual_operand_p.
+ * tree-into-ssa.c (prepare_block_for_update): Likewise.
+ * tree-vect-loop-manip.c (adjust_debug_stmts): Likewise.
+
+2012-08-08 Richard Guenther <rguenther@suse.de>
+
+ * tree-call-cdce.c (check_pow): Simplify.
+ (gen_conditions_for_pow_int_base): Likewise.
+ * tree-ssa-dom.c (propagate_rhs_into_lhs): Do not handle
+ virtual operands here.
+ * tree-ssa-operands.c (get_name_decl): Remove unused function.
+ * gimplify.c (gimple_regimplify_operands): Remove dead code.
+ * tree-vrp.c (get_value_range): Move SSA_NAME_VAR access.
+ * tree-parloops.c (create_phi_for_local_result): Use copy_ssa_name.
+ * value-prof.c (gimple_ic): Use duplicate_ssa_name.
+ (gimple_stringop_fixed_value): Likewise.
+ * tree.c (needs_to_live_in_memory): Remove SSA name handling.
+ * tree-stdarg.c (find_va_list_reference): Store SSA_NAME_VERSIONs
+ in the bitmap alongside shifted DECL_UIDs.
+ (va_list_counter_struct_op): Likewise.
+ (va_list_ptr_read): Likewise.
+ (va_list_ptr_write): Likewise.
+ (check_va_list_escapes): Likewise.
+ (check_all_va_list_escapes): Likewise.
+ (execute_optimize_stdarg): Likewise.
+ * tree-outof-ssa.c (insert_backedge_copies): Use copy_ssa_name.
+
+2012-08-08 Richard Sandiford <rdsandiford@googlemail.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ PR rtl-optimization/54157
+ * combine.c (gen_lowpart_for_combine): Don't return identity
+ for CONST or symbolic reference.
+
+2012-08-08 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * common/config/i386/i386-common.c (OPTION_MASK_ISA_ADX_SET): New.
+ (OPTION_MASK_ISA_ADX_UNSET): Likewise.
+ (ix86_handle_option): Handle madx option.
+ * config.gcc (i[34567]86-*-*): Add adxintrin.h.
+ (x86_64-*-*): Likewise.
+ * config/i386/adxintrin.h: New header.
+ * config/i386/driver-i386.c (host_detect_local_cpu): Detect ADCX/ADOX
+ support.
+ * config/i386/i386-builtin-types.def
+ (UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED): New function type.
+ (UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG): Likewise.
+ * config/i386/i386-c.c: Define __ADX__ if needed.
+ * config/i386/i386.c (ix86_target_string): Define -madx option.
+ (PTA_ADX): New.
+ (ix86_option_override_internal): Handle new option.
+ (ix86_valid_target_attribute_inner_p): Add OPT_madx.
+ (ix86_builtins): Add IX86_BUILTIN_ADDCARRYX32,
+ IX86_BUILTIN_ADDCARRYX64.
+ (ix86_init_mmx_sse_builtins): Define corresponding built-ins.
+ (ix86_expand_builtin): Handle these built-ins.
+ (ix86_expand_args_builtin): Handle new function types.
+ * config/i386/i386.h (TARGET_ADX): New.
+ * config/i386/i386.md (adcx<mode>3): New define_insn.
+ * config/i386/i386.opt (madx): New.
+ * config/i386/x86intrin.h: Include adxintrin.h.
+
+2012-08-08 Nick Clifton <nickc@redhat.com>
+
+ * config/rl78/rl78.c: Include tree-pass.h.
+
+2012-08-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/54146
+ * ira.c (init_live_subregs): Take live_subregs_used as a bitmap.
+ (build_insn_chain): Make live_subregs_used a bitmap.
+ Use SBITMAP_SIZE to ignore the paradoxical bytes of subregs.
+ Use sbitmap_free to free the live_subreg sbitmaps.
+
+ PR middle-end/54146
+ * ifcvt.c: Include pointer-set.h.
+ (cond_move_process_if_block): Change type of then_regs and
+ else_regs from alloca'd array to pointer_sets.
+ (check_cond_move_block): Update for this change.
+ (cond_move_convert_if_block): Likewise.
+ * Makefile.in: Fix dependencies for ifcvt.o.
+
+2012-08-07 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gimple-ssa-strength-reduction.c (struct incr_info_d): New struct.
+ (incr_vec): New static var.
+ (incr_vec_len): Likewise.
+ (address_arithmetic_p): Likewise.
+ (stmt_cost): Remove dead assignment.
+ (dump_incr_vec): New function.
+ (cand_abs_increment): Likewise.
+ (lazy_create_slsr_reg): Likewise.
+ (incr_vec_index): Likewise.
+ (count_candidates): Likewise.
+ (record_increment): Likewise.
+ (record_increments): Likewise.
+ (unreplaced_cand_in_tree): Likewise.
+ (optimize_cands_for_speed_p): Likewise.
+ (lowest_cost_path): Likewise.
+ (total_savings): Likewise.
+ (analyze_increments): Likewise.
+ (ncd_for_two_cands): Likewise.
+ (nearest_common_dominator_for_cands): Likewise.
+ (profitable_increment_p): Likewise.
+ (insert_initializers): Likewise.
+ (introduce_cast_before_cand): Likewise.
+ (replace_rhs_if_not_dup): Likewise.
+ (replace_one_candidate): Likewise.
+ (replace_profitable_candidates): Likewise.
+ (analyze_candidates_and_replace): Handle candidates with SSA-name
+ strides.
+
+2012-08-07 Steven Bosscher <steven@gcc.gnu.org>
+
+ * cfg.c (debug_bb): Do not set TDF_BLOCKS.
+ * cfghooks.c (dump_bb): Honor ~TDF_BLOCKS.
+ * pretty-print.c (pp_base_flush): Do not add a newline, and do not
+ clear pp_needs_newline.
+ * pretty-print.h (pp_newline_and_flush): New macro with the behavior
+ of pp_base_flush before the above change.
+ * langhooks.c (lhd_print_error_function): Use pp_newline_and_flush
+ instead of pp_flush.
+ * diagnostic.c (diagnostic_finish): Likewise.
+ (diagnostic_report_diagnostic): Likewise.
+ (verbatim): Likewise.
+ (error_recursion): Likewise.
+ * tree-pretty-print.c (print_generic_stmt): Likewise.
+ (print_generic_stmt_indented): LIkewise.
+ * gimple-pretty-print.c (print_gimple_stmt): Likewise.
+ (print_gimple_seq): Likewise.
+ (gimple_dump_bb_buff): Likewise.
+
+2012-08-07 Uros Bizjak <ubizjak@gmail.com>
+
+ PR debug/54177
+ * var-tracking.c (var_lowpart): Exit early for matched modes.
+
+2012-08-07 Richard Henderson <rth@redhat.com>
+
+ * config/s390/s390.c (s390_emit_compare_and_swap): Update for
+ atomic_compare_and_swapsi_internal name change.
+ (s390_expand_insv): Try RISBG last, not requiring operands in
+ registers but forcing them there. Try a limited form of ICM.
+ (s390_two_part_insv): New.
+ (s390_expand_cs_hqi): Use it. Update for atomic optabs.
+ * config/s390/s390.md (UNSPEC_MOVA): New.
+ (TDSI): Remove mode iterator.
+ (DGPR, DINT, TDI): New mode iterators.
+ (td): New mode attribute.
+ (mem_signal_fence): New.
+ (mem_thread_fence): Rename from memory_barrier; update for model arg.
+ (mem_thread_fence_1): Rename from *memory_barrier.
+ (atomic_load<DINT>, atomic_store<DINT>): New expanders.
+ (atomic_loaddi_1, atomic_loadti_1): New.
+ (atomic_storedi_1, atomic_storeti_1): New.
+ (sync_compare_and_swap<TDSI>, sync_compare_and_swap<HQI>): Remove.
+ (atomic_compare_and_swap<DGPR>, atomic_compare_and_swap<HQI>): New.
+ (atomic_compare_and_swap<DGPR>_internal): New.
+ (*sync_compare_and_swap<DW>, *sync_compare_and_swap<GPR>): Remove.
+ (*atomic_compare_and_swap<TDI>_1): New.
+ (*atomic_compare_and_swapdi_2, *atomic_compare_and_swapsi_3): New.
+ (sync_<ATOMIC_Z196><GPR>, sync_old_<ATOMIC_Z196><GPR>): Remove.
+ (atomic_fetch_<ATOMIC_Z196><GPR>): New.
+ (atomic_fetch_<ATOMC_Z196><GPR>_iaf): New.
+ (sync_<ATOMIC><HQI>, sync_old_<ATOMIC><HQI>): Remove.
+ (sync_new_<ATOMIC><HQI>): Remove.
+ (atomic_<ATOMIC><HQI>, atomic_fetch_<ATOMIC><HQI>): New.
+ (atomic_<ATOMIC>_fetch<HQI>): New.
+ (sync_lock_test_and_set<HQI>): Remove.
+ (atomic_exchange<HQI>): New.
+
+2012-08-07 Paul Brook <paul@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * except.c (switch_to_exception_section): Place tables for
+ DECL_ONE_ONLY functions in comdat groups.
+
+2012-08-07 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (copy_ssa_name_fn): New function.
+ (duplicate_ssa_name_fn): Likewise.
+ * tree-flow-inline.h (copy_ssa_name): New function.
+ (duplicate_ssa_name): Likewise.
+ * tree-ssanames.c (copy_ssa_name_fn): New function.
+ (duplicate_ssa_name): Rename to ...
+ (duplicate_ssa_name_fn): ... this and adjust.
+ * tree-tailcall.c (update_accumulator_with_ops): Use copy_ssa_name.
+ * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1):
+ Likewise.
+ (slpeel_update_phi_nodes_for_guard2): Likewise.
+ (slpeel_tree_peel_loop_to_edge): Likewise.
+ (vect_loop_versioning): Likewise.
+ * tree-parloops.c (transform_to_exit_first_loop): Likewise.
+ (create_parallel_loop): Likewise.
+ * ipa-split.c (split_function): Likewise.
+ * tree-vect-loop.c (vect_is_simple_reduction_1): Likewise.
+ (vect_create_epilog_for_reduction): Likewise.
+ * tree-vect-data-refs.c (bump_vector_ptr): Likewise.
+ (vect_setup_realignment): Likewise.
+ * tree-vect-stmts.c (vectorizable_load): Likewise.
+ * tree-switch-conversion.c (build_one_array): Likewise.
+ (gen_def_assigns): Likewise.
+ * tree-cfg.c (gimple_make_forwarder_block): Likewise.
+ * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Call
+ create_zero_dim_array with the SSA name.
+ (rewrite_phi_out_of_ssa): Likewise.
+ (rewrite_cross_bb_scalar_dependence): Likewise. Use copy_ssa_name.
+
+2012-08-07 Richard Guenther <rguenther@suse.de>
+
+ * tree-dfa.c (set_ssa_default_def): Clear the SSA_NAME_DEFAULT_DEF
+ bit of the old name when we clear the slot.
+ * tree-ssa-live.c (remove_unused_locals): Release any default
+ def associated with an unused var.
+ * tree-ssa-copy.c (may_propagate_copy_into_asm): Always return true.
+
+2012-08-07 Richard Guenther <rguenther@suse.de>
+
+ * tree-into-ssa.c (rewrite_stmt): Remove clobbers for variables
+ we rewrite into SSA form.
+ (rewrite_enter_block): Adjust.
+ * gimple-iterator.c (gsi_replace): Also allow replacement with
+ a stmt without a lhs.
+ * tree-ssa-live.c (remove_unused_locals): Remove code handling
+ clobbers of SSA names.
+ * tree-nested.c (convert_local_reference_stmt): Remove clobbers
+ for variables we access through the local chain.
+ * tree-cfg.c (verify_gimple_assign_single): Verify clobbers
+ clobber full decls only.
+
+2012-08-07 Richard Guenther <rguenther@suse.de>
+
+ * gimple.h (gimple_phi_set_result): Adjust SSA_NAME_DEF_STMT.
+ * tree-phinodes.c (make_phi_node): Allow a NULL var.
+ * tree-into-ssa.c (insert_phi_nodes_for): Simplify.
+ * tree-complex.c (update_phi_components): Likewise.
+ * tree-ssa-loop-manip.c (create_iv): Likewise.
+ (add_exit_phis_edge): Likewise.
+ (split_loop_exit_edge): Likewise.
+ (tree_transform_and_unroll_loop): Likewise.
+ * value-prof.c (gimple_ic): Likewise.
+ (gimple_stringop_fixed_value): Likewise.
+ * tree-tailcall.c (tree_optimize_tail_calls_1): Likewise.
+ * omp-low.c (expand_parallel_call): Likewise.
+ (expand_omp_for_static_chunk): Likewise.
+ (expand_omp_atomic_pipeline): Likewise.
+ * tree-parloops.c (create_phi_for_local_result): Likewise.
+ (transform_to_exit_first_loop): Likewise.
+ * tree-vect-data-refs.c (vect_setup_realignment): Likewise.
+ * graphite-scop-detection.c (canonicalize_loop_closed_ssa): Likewise.
+ * tree-predcom.c (initialize_root_vars): Likewise.
+ (initialize_root_vars_lm): Likewise.
+ * sese.c (sese_add_exit_phis_edge): Likewise.
+ * gimple-streamer-in.c (input_phi): Likewise.
+ * tree-inline.c (copy_phis_for_bb): Likewise.
+ * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
+ * tree-cfg.c (gimple_make_forwarder_block): Likewise.
+ (gimple_duplicate_bb): Likewise.
+
+2012-08-07 Nick Clifton <nickc@redhat.com>
+
+ * config/mn10300/mn10300.c (mn10300_expand_prologue): Report
+ stack usage if requested.
+
+2012-08-06 Cary Coutant <ccoutant@google.com>
+
+ * cgraphunit.c (assemble_thunk): Add source line info.
+ * final.c (final): Check for non-null cfg pointer.
+
+2012-08-06 Sandra Loosemore <sandra@codesourcery.com>
+ Maxim Kuvyrkov <maxim@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * config/mips/24k.md (r24k_unknown_store): Delete special handling
+ for cprestore.
+ (r24k_int_load, r24k_int_arith, r24k_int_mul3, r24k_int_mfhilo)
+ (r24k_int_cop, r24k_int_multi)
+ (r24kf2_1_fcvt_f2i, r24kf2_1_fxfer)
+ (r24kf1_1_fcvt_f2i, r24kf1_1_fxfer): Use mips_store_data_bypass_p
+ instead of store_data_bypass_p.
+ * config/mips/74k.md (r74k_int_store): Delete special handling for
+ cprestore.
+ (r74k_int_load, r74k_int_logical, r74k_int_arith, r74k_int_cmove):
+ Use mips_store_data_bypass_p instead of store_data_bypass_p.
+
+2012-08-06 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/51938
+ PR tree-optimization/52005
+ * tree-ssa-ifcombine.c (ifcombine_ifandif): New parameters for
+ inverted conditions.
+ (ifcombine_iforif): Remove, merge code into ifcombine_ifandif.
+ (tree_ssa_ifcombine_bb): Update calls to the above. Detect !a&&b
+ and !a||b patterns.
+
+2012-08-06 Olivier Hainque <hainque@adacore.com>
+
+ * tree-emutls.c (new_emutls_decl): When a var_section is requested by
+ the target, attach the new decl to that, not to the template section.
+
+2012-08-06 Tom de Vries <tom@codesourcery.com>
+
+ * tree-switch-conversion.c (emit_case_bit_tests): Generate MINUS_EXPR in
+ unsigned type.
+
+2012-08-05 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
+
+ * doc/invoke.texi: Document AMD btver2.
+ * doc/extend.texi: Document AMD btver1 and btver2.
+
+2012-08-04 Sandra Loosemore <sandra@codesourcery.com>
+ Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (mips_option_override): Check -fpic
+ for compatibility with -mabicalls and ABI.
+
+2012-08-04 Catherine Moore <clm@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * config/mips/xlr.md (ir_xlr_alu_clz): New insn_reservation.
+ (ir_xlr_alu): Remove clz.
+ * config/mips/mips-cpus.def (xlr): Set PTF_AVOID_BRANCHLIKELY.
+
+2012-08-04 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (arm_gen_constant): Use SImode when preparing operands for
+ gen_extzv_t2.
+
+2012-08-04 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.h (QI_REGNO_P): New define.
+ (ANY_QI_REGNO_P): Ditto.
+ (GENERAL_REGNO_P): Use IN_RANGE macro.
+ (QI_REG_P): Use QI_REGNO_P.
+ (ANY_QI_REG_P): Use GENERAL_REGNO_P and QI_REGNO_P.
+ (HARD_REGNO_CALLER_SAVE_MODE): Use QI_REGNO_P.
+ * config/i386/i386.c (ix86_hard_regno_mode_ok): Ditto.
+ (x86_extended_QIreg_mentioned_p): Ditto. Also check if
+ register is a general register.
+
+2012-08-03 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sync.md (*atomic_fetch_add_cmp<mode>): Use
+ incdec_operand predicate to return INC or DEC insn mnemonic.
+ Add %K operand modifier.
+ (atomic_add<mode>): Use incdec_operand predicate to
+ return INC or DEC insn mnemonic.
+ (atomic_dec<mode>): Ditto.
+
+2012-08-03 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/54146
+ * cfgexpand.c (add_scope_conflicts_1): Use bitmap_ior_into.
+ (add_scope_conflicts): Iterate in RPO order.
+ (add_stack_protection_conflicts): Iterate over the other triangle.
+ (fini_vars_expansion): Clear stack_vars_sorted.
+
+2012-08-03 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/30318
+ * double-int.c (mul_double_wide_with_sign): New function.
+ (mul_double_with_sign): Call the new function.
+ * double-int.h (mul_double_wide_with_sign): Declare the new function.
+ * tree-vrp.c (extract_range_from_binary_expr_1) [MULT_EXPR]:
+ Handle integer types that wrap on overflow.
+ (quad_int_cmp): New helper function.
+ (quad_int_pair_sort): Likewise.
+
+2012-08-03 Richard Guenther <rguenther@suse.de>
+
+ * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Query
+ is_gimple_reg on the SSA name, not its variable.
+ (vect_update_ivs_after_vectorizer): Likewise.
+ * tree-ssa-copyrename.c (rename_ssa_copies): Likewise.
+ * tree-if-conv.c (if_convertible_phi_p): Likewise.
+ (predicate_scalar_phi): Likewise.
+ * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise.
+ (vect_analyze_scalar_cycles_1): Likewise.
+ * tree-ssa-live.c (register_ssa_partition_check): Likewise.
+ * tree-outof-ssa.c (eliminate_useless_phis): Likewise.
+ * tree-ssa-reassoc.c (phi_rank): Likewise.
+ * tree-parloops.c (separate_decls_in_region_name): Use
+ replace_ssa_name_symbol.
+ * tree-predcom.c (base_names_in_chain_on): Likewise.
+ * matrix-reorg.c (update_type_size): Query the type of the SSA name,
+ not its variable.
+ * gimple-ssa-strength-reduction.c (create_mul_ssa_cand): Likewise.
+ (create_mul_imm_cand): Likewise.
+ (create_add_ssa_cand): Likewise.
+ (create_add_imm_cand): Likewise.
+ (slsr_process_add): Likewise.
+ * tree-inline.c (remap_ssa_name): Do not set the type of the
+ new SSA_NAME.
+ * tree-ssa-structalias.c (get_constraint_for_ssa_var): Clarify assert.
+ Check for default def first.
+
+2012-08-04 Steven Bosscher <steven@gcc.gnu.org>
+
+ * cfgrtl.c (print_rtl_with_bb): Do not print a newline between insns.
+
+ * sched-vis.c (print_pattern): Handle SEQUENCE also.
+
+2012-08-02 Richard Henderson <rth@redhat.com>
+
+ Revert:
+ PR 34548
+ * function.h (struct rtl_data): Add max_dynamic_stack_alignment.
+ * cfgexpand.c (gimple_expand_cfg): Initialise it.
+ * explow.c (allocate_dynamic_stack_space): Set it. Simplify
+ alignment requirements given the known alignment of dynamic_offset.
+ * function.c (instantiate_virtual_regs): Align dtnamic_offset.
+
+2012-08-02 Kenneth Zadeck <zadeck@naturalbridge.com>
+
+ * cfgexpand.c (expand_debug_locations): Encapsulate test for
+ CONST_DOUBLE in macro.
+ * combine.c (try_combine, gen_lowpart_for_combine): Ditto.
+ * cprop.c (implicit_set_cond_p): Ditto.
+ * cselib.c (rtx_equal_for_cselib_1): Ditto.
+ * expmed.c (expand_mult): Ditto.
+ * expr.c (convert_modes): Ditto.
+ * ira-costs.c (record_reg_classes): Ditto.
+ * ira-lives.c (single_reg_class): Ditto.
+ * optabs.c (expand_copysign_absneg, expand_copysign): Ditto.
+ * print-rtl.c (print_rtx): Ditto.
+ * recog.c (simplify_while_replacing, const_double_operand)
+ (asm_operand_ok, constrain_operands): Ditto.
+ * reg-stack.c (subst_stack_regs_pat): Ditto.
+ * reload.c (find_reloads, find_equiv_reg): Ditto.
+ * rtlanal.c (replace_rtx): Remove test.
+ * rtlanal.c (constant_pool_constant_p, split_double): Encapsulate
+ test for CONST_DOUBLE in macro.
+ * simplify-rtx.c (mode_signbit_p, avoid_constant_pool_reference)
+ (simplify_unary_operation_1, simplify_const_unary_operation)
+ (simplify_binary_operation_1, simplify_const_binary_operation)
+ (simplify_relational_operation_1)
+ (simplify_const_relational_operations)
+ (implify_subreg): Ditto.
+ * varasm.c (output_constant_pool_2): Ditto.
+ * rtl.h (CONST_DOUBLE_AS_INT_P, CONST_DOUBLE_AS_FLOAT_P): New macros.
+ * rtl.def (CONST_DOUBLE): Updated comments.
+
+2012-08-02 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR target/51931
+ * config/mips/mips-protos.h (mips_strip_unspec_address): Declare.
+ * config/mips/mips.c (mips_strip_unspec_address): Make extern.
+ (mips16_rewrite_pool_constant): Make a copy of the pool constant
+ before adding to a PC-relative table.
+ (mips16_lay_out_constants): Add a SPLIT_P parameter.
+ (mips16_load_branch_target, mips16_split_long_branches): New functions.
+ (mips_reorg): Update call to mips16_lay_out_constants.
+ Call mips16_split_long_branches.
+ * config/mips/predicates.md (pc_or_label_operand): Delete.
+ * config/mips/mips.md (length): Add a calculation for MIPS16 branches.
+ Move the extended_mips16 handling further down.
+ (*branch_equality<mode>_mips16): Replace use pc_or_label_operand
+ with explicit label_ref and pc. Follow the usual operand numbering.
+ (*branch_equality<mode>_mips16_inverted): New pattern.
+ (*jump_mips16): Add length attribute.
+ (indirect_jump_and_restore_<mode>): New pattern.
+ (consttable_int): Call mips_strip_unspec_address on the operand.
+
+2012-08-02 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * recog.c (split_insn): Copy the original SET_SRC before using
+ it as a note.
+
+2012-08-02 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * reorg.c (dbr_schedule): Delete REG_BR_PRED loop.
+
+2012-08-02 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/53805
+ * fold-const.c (invert_tree_comparison): Invert ORDERED_EXPR and
+ UNORDERED_EXPR even for trapping floating point.
+
+2012-08-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/53321
+ PR middle-end/53865
+ * ipa-inline-analysis.c (inline_free_summary): Return if
+ inline_edge_summary_vec is NULL.
+
+ * ipa-split.c (execute_split_functions): Check if a function
+ is inlinable only if inline_edge_summary_vec != NULL.
+
+ * ipa.c (symtab_remove_unreachable_nodes): Restore
+ cgraph_propagate_frequency call when something was changed.
+ (free_inline_summary): New function.
+ (pass_ipa_free_inline_summary): New pass.
+
+ * passes.c (init_optimization_passes): Add
+ pass_ipa_free_inline_summary before pass_ipa_tree_profile.
+
+ * timevar.def (TV_IPA_FREE_INLINE_SUMMARY): New.
+
+ * tree-pass.h (pass_ipa_free_inline_summary): New.
+
+2012-08-02 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (arm_gen_constant): Use UBFX for some AND operations when
+ available.
+
+2012-08-02 Richard Guenther <rguenther@suse.de>
+
+ * tree-into-ssa.c (struct common_info_d): New struct.
+ (struct var_info_d, struct ssa_name_info): Use it.
+ (get_ssa_name_ann): Adjust.
+ (get_phi_state, set_phi_state): Remove.
+ (get_common_info): New function.
+ (get_current_def, set_current_def): Adjust.
+ (get_def_blocks_for): Take a common info as param.
+ (set_def_block): Call get_common_info once.
+ (set_livein_block): Likewise.
+ (find_def_blocks_for): Adjust.
+ (insert_phi_nodes): Likewise.
+ (register_new_def): Call get_common_info once.
+ (get_reaching_def): Likewise.
+ (rewrite_debug_stmt_uses): Likewise.
+ (rewrite_leave_block): Likewise.
+ (dump_currdefs): Likewise.
+ (debug_var_infos_r): Adjust.
+ (register_new_update_single): Call get_common_info once.
+ (maybe_replace_use_in_debug_stmt): Likewise.
+ (rewrite_update_leave_block): Likewise.
+ (mark_use_interesting): Adjust.
+ (create_new_def_for): Likewise.
+ (update_ssa): Likewise.
+
+2012-08-02 Michael Matz <matz@suse.de>
+
+ * tree-ssa-live.c (set_is_used): Return a bool.
+ (mark_all_vars_used): Don't take data argument.
+ (mark_all_vars_used_1): Adjust calls to above, merge handling
+ of local and global vars.
+ (remove_unused_scope_block_p): Don't take global_unused_vars,
+ merge handling of local and global vars.
+ (remove_unused_locals): Don't allocate/fill/pass global_unused_vars,
+ use is_used_p for local and global vars.
+
+2012-08-02 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (make_rename_temp): Remove.
+ * tree-dfa.c (make_rename_temp): Likewise.
+ * cgraphunit.c (thunk_adjust, assemble_thunk): Use create_tmp_reg
+ instead of make_rename_temp.
+ * omp-low.c (expand_omp_for_generic, expand_omp_for_static_nochunk,
+ expand_omp_atomic_pipeline): Likewise.
+ * trans-mem.c (tm_log_emit_save_or_restores, build_tm_load,
+ build_tm_store, expand_call_tm, expand_transaction,
+ ipa_tm_insert_gettmclone_call): Likewise.
+ * tree-complex.c (expand_complex_div_wide): Likewise.
+ * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
+ Likewise.
+ * tree-ssa-loop-im.c (execute_sm_if_changed_flag_set, execute_sm):
+ Likewise.
+ * tree-ssa-math-opts.c (insert_reciprocals): Likewise.
+ * value-prof.c (gimple_divmod_fixed_value, gimple_mod_pow2,
+ gimple_mod_subtract): Likewise.
+
+2012-08-02 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (set_default_def): Rename to ...
+ (set_ssa_default_def): ... this. Take a struct function argument.
+ (gimple_default_def): Rename to ...
+ (ssa_default_def): ... this.
+ (get_or_create_ssa_default_def): New function.
+ * tree-dfa.c: Likewise.
+ (dump_variable): Adjust.
+ * ipa-prop.c (ipa_analyze_params_uses): Adjust, properly check
+ for used parameters.
+ * ipa-split.c (consider_split): Adjust, avoid repeated default-def
+ lookups.
+ (split_function): Likewise.
+ * lto-streamer-in.c (input_ssa_names): Adjust.
+ * omp-low.c (expand_omp_taskreg): Likewise.
+ * tree-cfg.c (replace_ssa_name): Adjust, no need to push/pop cfun.
+ * tree-complex.c (init_parameter_lattice_values): Adjust.
+ (get_component_ssa_name): Likewise.
+ (update_parameter_components): Likewise.
+ * tree-inline.c (remap_ssa_name): Likewise.
+ (setup_one_parameter): Likewise.
+ (initialize_inlined_parameters): Likewise.
+ (declare_return_variable): Likewise.
+ (expand_call_inline): Likewise.
+ (tree_function_versioning): Likewise.
+ * tree-into-ssa.c (get_default_def_for): Remove.
+ (get_reaching_def): Use get_or_create_ssa_default_def instead.
+ * tree-predcom.c (replace_ref_with): Adjust.
+ * tree-sra.c (get_repl_default_def_ssa_name): Likewise.
+ (is_unused_scalar_param): Likewise.
+ (ptr_parm_has_direct_uses): Likewise.
+ (sra_ipa_reset_debug_stmts): Likewise.
+ * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust.
+ * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
+ * tree-ssa-live.c (verify_live_on_entry): Likewise.
+ * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise,
+ avoid repeated default def lookups.
+ * tree-ssa-sccvn.c (run_scc_vn): Likewise.
+ * tree-tailcall.c (arg_needs_copy_p): Adjust.
+ (tree_optimize_tail_calls_1): Likewise.
+
+2012-08-02 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50672
+ Revert
+ 2012-08-01 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-tail-merge.c (release_last_vdef): Remove.
+ (replace_block_by): Adjust.
+
+2012-08-02 Richard Guenther <rguenther@suse.de>
+
+ * tree-dfa.c (referenced_var_lookup): Remove.
+ (find_referenced_vars): Remove.
+ (pass_referenced_vars): Likewise.
+ (make_rename_temp): Do not add referenced vars.
+ (dump_referenced_vars): Remove.
+ (debug_referenced_vars): Likewise.
+ (dump_dfa_stats): Do not dump referenced var stats.
+ (find_vars_r): Remove.
+ (find_referenced_vars_in): Likewise.
+ (referenced_var_check_and_insert): Likewise.
+ (add_referenced_var_1): Likewise.
+ (remove_referenced_var): Likewise.
+ * tree-flow.h (referenced_var_lookup): Likewise.
+ (struct gimple_df): Remove referenced_vars member.
+ (typedef referenced_var_iterator): Remove.
+ (FOR_EACH_REFERENCED_VAR): Likewise.
+ (num_referenced_vars): Likewise.
+ (debug_referenced_vars, dump_referenced_vars): Likewise.
+ (add_referenced_var_1, add_referenced_var): Likewise.
+ (remove_referenced_var): Likewise.
+ (find_referenced_vars_in): Likewise.
+ * tree-flow-inline.h (gimple_referenced_vars): Remove.
+ (first_referenced_var): Likewise.
+ (end_referenced_vars_p): Likewise.
+ (next_referenced_var): Likewise.
+ * cfgexpand.c (update_alias_info_with_stack_vars): Remove assert.
+ * gimple-pretty-print.c (pp_points_to_solution): Dump UIDs
+ unconditionally.
+ * tree-into-ssa.c (dump_decl_set): Likewise.
+ (pass_build_ssa): Do not require PROP_referenced_vars.
+ * tree-ssa.c (target_for_debug_bind): Virtual operands are
+ not suitable, but all register type vars are.
+ (init_tree_ssa): Do not allocate referenced vars.
+ (delete_tree_ssa): Do not free referenced vars.
+ * cgraphunit.c (init_lowered_empty_function): Do not set
+ PROP_referenced_vars.
+ (assemble_thunk): Do not add referenced vars.
+ * gimple-fold.c (canonicalize_constructor_val): Likewise.
+ (gimplify_and_update_call_from_tree): Likewise.
+ * gimple-streamer-in.c (input_bb): Likewise.
+ * passes.c (init_optimization_passes): Do not run
+ pass_referenced_vars.
+ (dump_properties): Do not dump PROP_referenced_vars.
+ * tree-inline.c (remap_decl): Do not add referenced vars.
+ (remap_gimple_op_r): Likewise.
+ (copy_tree_body_r): Likewise.
+ (copy_bb): Likewise.
+ (setup_one_parameter): Likewise.
+ (declare_return_variable): Likewise.
+ (copy_decl_for_dup_finish): Likewise.
+ (copy_arguments_for_versioning): Likewise.
+ (tree_function_versioning): Likewise.
+ * tree-pass.h (PROP_referenced_vars): Remove.
+ (pass_referenced_vars): Likewise.
+ * tree-profile.c (gimple_gen_edge_profiler): Do not add
+ referenced vars.
+ (gimple_gen_interval_profiler): Likewise.
+ (gimple_gen_pow2_profiler): Likewise.
+ (gimple_gen_one_value_profiler): Likewise.
+ (gimple_gen_ic_profiler): Likewise.
+ (gimple_gen_average_profiler): Likewise.
+ (gimple_gen_ior_profiler): Likewise.
+ * tree-ssa-live.c (remove_unused_locals): Do not touch referenced vars.
+ * tree-cfg.c (replace_ssa_name): Do not add referenced vars.
+ (move_stmt_op): Likewise.
+ * tree-ssa-operands.c (create_vop_var): Likewise.
+ * gimple-low.c (record_vars_into): Likewise.
+ * gimplify.c (gimple_regimplify_operands): Likewise.
+ (force_gimple_operand_1): Likewise.
+ * omp-low.c (expand_omp_for_generic): Likewise.
+ (expand_omp_for_static_chunk): Likewise.
+ (expand_omp_atomic_pipeline): Likewise.
+ * graphite-clast-to-gimple.c (graphite_create_new_loop): Likewise.
+ (translate_clast_assignment): Likewise.
+ * graphite-sese-to-poly.c (create_zero_dim_array): Likewise.
+ (handle_scalar_deps_crossing_scop_limits): Likewise.
+ * ipa-prop.c (ipa_modify_formal_parameters): Likewise.
+ * ipa-split.c (split_function): Likewise.
+ * matrix-reorg.c (transform_access_sites): Likewise.
+ * trans-mem.c (tm_log_add): Likewise.
+ (ipa_tm_insert_gettmclone_call): Likewise.
+ * tree-complex.c (create_one_component_var): Likewise.
+ * tree-if-conv.c (ifc_temp_var): Likewise.
+ * tree-parloops.c (take_address_of): Likewise.
+ (initialize_reductions): Likewise.
+ (separate_decls_in_region_name): Likewise.
+ (create_call_for_reduction_1): Likewise.
+ (separate_decls_in_region): Likewise.
+ * tree-predcom.c (predcom_tmp_var): Likewise.
+ (reassociate_to_the_same_stmt): Likewise.
+ * tree-sra.c (build_ref_for_offset): Likewise.
+ (create_access_replacement): Likewise.
+ (get_replaced_param_substitute): Likewise.
+ (sra_ipa_reset_debug_stmts): Likewise.
+ * tree-ssa-loop-im.c (rewrite_reciprocal): Likewise.
+ (rewrite_bittest): Likewise.
+ * tree-ssa-loop-ivopts.c (create_new_iv): Likewise.
+ * tree-ssa-loop-manip.c (create_iv): Likewise.
+ (tree_transform_and_unroll_loop): Likewise.
+ * tree-ssa-math-opts.c (powi_as_mults): Likewise.
+ (build_and_insert_call): Likewise.
+ (gimple_expand_builtin_cabs): Likewise.
+ (execute_optimize_bswap): Likewise.
+ * tree-ssa-phiopt.c (conditional_replacement): Likewise.
+ (abs_replacement): Likewise.
+ (cond_store_replacement): Likewise.
+ (cond_if_else_store_replacement_1): Likewise.
+ * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
+ * tree-ssa-pre.c (get_representative_for): Likewise.
+ (create_expression_by_pieces): Likewise.
+ (insert_into_preds_of_block): Likewise.
+ * tree-ssa-propagate.c (update_call_from_tree): Likewise.
+ * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
+ (eliminate_redundant_comparison): Likewise.
+ (rewrite_expr_tree_parallel): Likewise.
+ (get_reassoc_pow_ssa_name): Likewise.
+ * tree-ssa-strlen.c (get_string_length): Likewise.
+ * tree-switch-conversion.c (emit_case_bit_tests): Likewise.
+ (build_arrays): Likewise.
+ * tree-tailcall.c (adjust_return_value_with_ops): Likewise.
+ (create_tailcall_accumulator): Likewise.
+ * tree-vect-data-refs.c (vect_get_new_vect_var): Likewise.
+ (vect_create_addr_base_for_vector_ref): Likewise.
+ (vect_permute_store_chain): Likewise.
+ (vect_permute_load_chain): Likewise.
+ * tree-vect-generic.c (expand_vector_divmod): Likewise.
+ * tree-vect-loop-manip.c (set_prologue_iterations): Likewise.
+ (vect_build_loop_niters): Likewise.
+ (vect_generate_tmps_on_preheader): Likewise.
+ (vect_update_ivs_after_vectorizer): Likewise.
+ (vect_gen_niters_for_prolog_loop): Likewise.
+ (vect_do_peeling_for_alignment): Likewise.
+ (vect_create_cond_for_align_checks): Likewise.
+ * tree-vect-patterns.c (vect_recog_temp_ssa_var): Likewise.
+ (vect_handle_widen_op_by_const): Likewise.
+ (vect_operation_fits_smaller_type): Likewise.
+ (vect_recog_over_widening_pattern): Likewise.
+ * tree-vect-stmts.c (vect_init_vector): Likewise.
+
+2012-08-01 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/52983
+ * valtrack.c (dead_debug_insert_temp): Use cleanup_auto_inc_dec.
+
+2012-08-01 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/52983
+ * valtrack.c (cleanup_auto_inc_dec): Implement unconditionally,
+ falling back to copy_rtx on non-autoinc machines.
+ (propagate_for_debug_subst): Always use cleanup_auto_inc_dec.
+
+2012-08-01 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/52983
+ * valtrack.h, valtrack.c: New.
+ * Makefile.in (VALTRACK_H): New.
+ (OBJS): Add valtrack.o.
+ (valtrack.o): New.
+ (cselib.o, dce.o, df-problems.o, combine.o): Add VALTRACK_H.
+ * combine.c: Include valtrack.h.
+ (make_compound_operation): Publish.
+ (cleanup_auto_inc_dec): Move to valtrack.c.
+ (struct rtx_subst_pair, propagate_for_debug_subst): Likewise.
+ (propagate_for_debug): Likewise. Add this_basic_block parameter.
+ Adjust all callers.
+ * cselib.c: Include valtrack.h.
+ * dce.c: Likewise.
+ * df-problems.c: Likewise.
+ (dead_debug_init, dead_debug_reset_uses): Move to valtrack.c.
+ (dead_debug_finish, dead_debug_add): Likewise.
+ (dead_debug_insert_temp): Likewise.
+ * df.h (struct dead_debug_use): Move to valtrack.h.
+ (struct dead_debug, enum debug_temp_where): Likewise.
+ (dead_debug_init, dead_debug_reset_uses): Move to valtrack.h.
+ (dead_debug_finish, dead_debug_add): Likewise.
+ (dead_debug_insert_temp): Likewise.
+ * rtl.h (make_compound_operation): Declare.
+
+2012-08-01 Catherine Moore <clm@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * config/mips/mips-cpus.def (34kn): New.
+ * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): Add 34kn.
+ (BASE_DRIVER_SELF_SPECS): Do not imply -mdsp for the 34kn.
+ * config/mips/mips-tables.opt: Regenerate.
+ * doc/invoke.texi (MIPS Options): Document -march=34kn.
+
+2012-08-01 Richard Henderson <rth@redhat.com>
+
+ * expmed.h (NUM_MODE_PARTIAL_INT): New.
+ (NUM_MODE_VECTOR_INT, NUM_MODE_IP_INT, NUM_MODE_IPV_INT): New.
+ (struct expmed_op_cheap): Size one array on NUM_MODE_IPV_INT.
+ (struct expmed_op_costs): Likewise.
+ (struct target_expmed): Size x_convert_cost on NUM_MODE_IP_INT.
+ (expmed_mode_index): New.
+ (expmed_op_cheap_ptr, expmed_op_cost_ptr): Use expmed_mode_index.
+ (convert_cost_ptr): Likewise.
+ * expmed.c (struct init_expmed_rtl): Rename convert to trunc.
+ (init_expmed_one_conv): Split out from ...
+ (init_expmed_one_mode): ... here. Iterate conversions over
+ partial integer modes too.
+ (init_expmed): Iterate over partial integer modes too.
+
+2012-08-01 Richard Henderson <rth@redhat.com>
+
+ * config/m32c/m32c.c (TARGET_INIT_LIBFUNCS): Remove.
+ (m32c_init_libfuncs): Remove.
+ * config/m32c/cond.md (cstore<QHPSI>4_16): Rename from cstore<QHPSI>4.
+ (cstore<QHPSI>4): New expander.
+
+2012-08-01 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow-inline.h (referenced_var): Remove.
+ * tree-ssa-coalesce.c (create_outofssa_var_map): Remove duplicate
+ checking code.
+ * tree-sra.c (candidates): New global hashtable.
+ (candidate): New function.
+ (sra_initialize): Initialize candidates.
+ (sra_deinitialize): Free candidates.
+ (disqualify_candidate): Remove candidate from candidates.
+ (maybe_add_sra_candidate): New function.
+ (find_var_candidates): Walk over all local decls and parameters,
+ add candidates to candidates hashtable.
+ (find_param_candidates): Add candidates to candidates hashtable.
+ (analyze_all_variable_accesses): Use candidate instead of
+ referenced_var.
+
+2012-08-01 Tom de Vries <tom@codesourcery.com>
+
+ * tree-vrp.c (find_case_label_ranges): New function.
+ (vrp_visit_switch_stmt, simplify_switch_using_ranges): Use
+ find_case_label_ranges instead of find_case_label_range. Handle second
+ range.
+
+2012-08-01 Michael Matz <matz@suse.de>
+
+ * tree-complex.c (init_parameter_lattice_values): Don't call var_ann.
+ * tree-dfa.c (struct dfa_stats_d): Remove num_var_anns member.
+ (dump_dfa_stats): Don't dump stats about var anns.
+ (collect_dfa_stats): Don't collect them.
+ (add_referenced_var_1): Don't set var annotation pointers.
+ (remove_referenced_var): Ditto, and only remove it it's in the
+ hash table.
+
+ * tree-flow-inline.h (var_ann): Remove.
+ * tree-flow.h (struct var_ann_d, var_ann_t): Remove.
+
+ * tree-inline.c (remapped_type): Remove.
+ (can_be_nonlocal): Most variable will be considered live here,
+ return false earlier.
+ (remap_decls): Don't call var_ann, all variables will be considered
+ referenced here.
+ (copy_debug_stmt): Ditto, and use is_global_var.
+
+ * tree-into-ssa.c (rewrite_debug_stmt_uses): Use get_current_def to
+ determine if a variable was referred to, not var_ann.
+ * tree-ssa-live.c (remove_unused_scope_block_p): Don't check var_ann.
+ (remove_unused_locals): Ditto.
+ * tree-ssa.c (delete_tree_ssa): Don't free/clear var ann pointers.
+ * tree-tailcall.c (arg_needs_copy_p): Don't check var_ann.
+ * tree.c (copy_node_stat): Don't clear var ann pointer.
+ * tree.h (tree_result_decl, tree_parm_decl, tree_var_decl): Remove
+ ann member.
+ (DECL_VAR_ANN_PTR): Remove.
+
+2012-08-01 Michael Matz <matz@suse.de>
+
+ * tree-flow.h (struct var_ann_d): Rename used member.
+ (set_is_used): Don't declare.
+ * tree-flow-inline.h (clear_is_used): Remove.
+ (set_is_used, is_used_p): Move to ...
+ * tree-ssa-live.c (set_is_used, is_used_p): ... here, and use
+ on the side bitmap.
+ (usedvars): New bitmap.
+ (dump_scope_block): Don't dump unusedness.
+ (remove_unused_locals): Allocate and free usedvars.
+ * tree-nrv.c (tree_nrv): Don't clear used flags here.
+
+2012-08-01 Michael Matz <matz@suse.de>
+
+ * tree-flow.h (struct var_ann_d): Remove base_var_processed and
+ base_index members.
+ * tree-ssa-live.h (struct _var_map): Remove basevars member.
+ (VAR_ANN_BASE_INDEX): Remove.
+ * tree-ssa-live.c (var_map_base_init): Use a hash table instead
+ of var annotation to compress index space. Don't deal with above
+ removed members.
+ (var_map_base_fini): Don't free basevars.
+ (init_var_map): Don't clear basevars.
+
+2012-08-01 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Change
+ base_name to base_expr.
+ (struct cand_chain_d): Likewise.
+ (base_cand_hash): Likewise.
+ (base_cand_eq): Likewise.
+ (record_potential_basis): Likewise.
+ (alloc_cand_and_find_basis): Likewise.
+ (create_mul_ssa_cand): Likewise.
+ (create_mul_imm_cand): Likewise.
+ (create_add_ssa_cand): Likewise.
+ (create_add_imm_cand): Likewise.
+ (slsr_process_cast): Likewise.
+ (slsr_process_copy): Likewise.
+ (dump_candidate): Likewise.
+ (base_cand_dump_callback): Likewise.
+ (unconditional_cands_with_known_stride_p): Likewise.
+ (cand_increment): Likewise.
+
+2012-08-01 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ PR tree-optimization/46556
+ * gimple-ssa-strength-reduction.c (enum cand_kind): Add CAND_REF.
+ (base_cand_map): Change to hash table.
+ (base_cand_hash): New function.
+ (base_cand_free): Likewise.
+ (base_cand_eq): Likewise.
+ (lookup_cand): Change base_cand_map to hash table.
+ (find_basis_for_candidate): Likewise.
+ (base_cand_from_table): Exclude CAND_REF.
+ (restructure_reference): New function.
+ (slsr_process_ref): Likewise.
+ (find_candidates_in_block): Call slsr_process_ref.
+ (dump_candidate): Handle CAND_REF.
+ (base_cand_dump_callback): New function.
+ (dump_cand_chains): Change base_cand_map to hash table.
+ (replace_ref): New function.
+ (replace_refs): Likewise.
+ (analyze_candidates_and_replace): Call replace_refs.
+ (execute_strength_reduction): Change base_cand_map to hash table.
+
+2012-08-01 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_address_subreg_operand): Reject
+ stack pointer.
+ (ix86_print_operand_address): Assert that parts.base and parts.index
+ are non-NULL after call to simplify_subreg.
+
+2012-08-01 Richard Guenther <rguenther@suse.de>
+
+ * doc/tree-ssa.texi: Remove pieces mentioning mark_sym_for_renaming.
+
+2012-08-01 Richard Guenther <rguenther@suse.de>
+
+ * graphite-clast-to-gimple.c (translate_clast_user): Rename
+ virtual operands.
+ * sese.c (graphite_copy_stmts_from_block): Do not rename virtual
+ operands here.
+ * tree-call-cdce.c (tree_call_cdce): Use
+ mark_virtual_operands_for_renaming.
+ * tree-eh.c (sink_clobbers): Simplify.
+ * tree-flow.h (mark_sym_for_renaming): Remove.
+ (mark_virtual_operands_for_renaming): New function.
+ * tree-if-conv.c (tree_if_conversion): Use
+ mark_virtual_operands_for_renaming.
+ * tree-inline.c (update_ssa_across_abnormal_edges): Likewise.
+ * tree-into-ssa.c (mark_sym_for_renaming): Remove.
+ (mark_virtual_operands_for_renaming): New function.
+ * tree-loop-distribution.c (tree_loop_distribution): Use
+ mark_virtual_operands_for_renaming.
+ * tree-ssa-dce.c (mark_virtual_operand_for_renaming): Do not
+ update stmts, use mark_virtual_operands_for_renaming.
+ * tree-ssa-tail-merge.c (release_last_vdef): Remove.
+ (replace_block_by): Adjust.
+ (tail_merge_optimize): Use mark_virtual_operands_for_renaming.
+ * tree-tailcall.c (tree_optimize_tail_calls_1): Use
+ mark_virtual_operands_for_renaming.
+ * tree-vect-slp.c (vect_slp_transform_bb): Likewise.
+ * tree-vectorizer.c (vectorize_loops): Likewise.
+
+2012-08-01 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (struct gimple_df): Remove syms_to_rename member,
+ add ssa_renaming_needed and rename_vops flags.
+ (SYMS_TO_RENAME): Remove.
+ (symbol_marked_for_renaming): Likewise.
+ (mark_virtual_ops_for_renaming): Likewise.
+ * tree-into-ssa.c (symbols_to_rename_set, symbols_to_rename):
+ New globals.
+ (mark_for_renaming, marked_for_renaming): New functions.
+ (symbol_marked_for_renaming): Remove.
+ (dump_currdefs): Adjust.
+ (maybe_replace_use): Likewise.
+ (maybe_replace_use_in_debug_stmt): Likewise.
+ (maybe_register_def): Likewise.
+ (rewrite_update_phi_arguments): Likewise.
+ (rewrite_update_enter_block): Likewise.
+ (fini_ssa_renamer): Clear update SSA status here ...
+ (delete_update_ssa): ... not here. Free rename set.
+ (prepare_block_for_update): Compute which decls need renaming.
+ (dump_update_ssa): Adjust.
+ (mark_sym_for_renaming): Adjust update SSA status for virtuals.
+ (need_ssa_update_p): Adjust.
+ (insert_updated_phi_nodes_for): Likewise.
+ (update_ssa): Likewise.
+ * tree-ssa-operands.c (finalize_ssa_defs): Adjust update SSA status
+ for virtual and real operands.
+ (finalize_ssa_uses): Likewise.
+ * tree-ssanames.c (init_ssanames): Adjust.
+ * tree-ssa.c (maybe_rewrite_mem_ref_base, maybe_optimize_var,
+ execute_update_addresses_taken): Add bitmap to keep track of which
+ candidates are suitable for rewriting and later renaming by SSA update.
+ * matrix-reorg.c (transform_access_sites): Do not rename all defs.
+ * tree-dfa.c (make_rename_temp): Do not mark real operands for
+ renaming.
+ * cgraphunit.c (assemble_thunk): Likewise.
+ * gimplify.c (gimple_regimplify_operands): Likewise.
+ (force_gimple_operand_1): Likewise.
+ * ipa-prop.c (ipa_modify_formal_parameters): Likewise.
+ * tree-inline.c (declare_return_variable): Likewise.
+ * tree-parloops.c (separate_decls_in_region_stmt): Do not call
+ mark_virtual_ops_for_renaming.
+ (create_stores_for_reduction): Likewise.
+ (create_loads_and_stores_for_name): Likewise.
+ * tree-predcom.c (mark_virtual_ops_for_renaming): Remove.
+ (initialize_root_vars_lm): Do not call mark_virtual_ops_for_renaming.
+ (execute_load_motion): Likewise.
+ (remove_stmt): Likewise.
+ (execute_pred_commoning_chain): Likewise.
+ * tree-sra.c (create_access_replacement): Do not rename real operands.
+ (get_unrenamed_access_replacement): Unify with ...
+ (get_access_replacement): ... this.
+ (get_repl_default_def_ssa_name): Adjust.
+ * tree-ssa-loop-im.c (move_computations_stmt): Manually update
+ virtual SSA form.
+ (rewrite_mem_ref_loc): Do not call mark_virtual_ops_for_renaming.
+ * tree-ssa-loop-prefetch.c (emit_mfence_after_loop): Likewise.
+
+2012-07-31 DJ Delorie <dj@redhat.com>
+
+ * config/s390/s390.c (s390_option_override): Disable DWARF 3/4
+ extensions for TPF, unless specifically selected.
+
+2012-08-01 Alan Modra <amodra@gmail.com>
+
+ PR target/54131
+ * config/rs6000/rs6000.c (mem_operand_gpr): Don't limit range
+ of lo_sum offsets. Comment. Assert mode at least word size
+ rather than bypassing powerpc64 word offset check.
+
+2012-07-31 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Revise
+ costs for vec_perm and vec_promote_demote down to more natural values.
+ (struct _rs6000_cost_data): New data structure.
+ (rs6000_density_test): New function.
+ (rs6000_init_cost): Change to use rs6000_cost_data.
+ (rs6000_add_stmt_cost): Likewise.
+ (rs6000_finish_cost): Perform density test when vectorizing a loop.
+
+2012-07-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * sched-vis.c (print_exp): Handle FMA explicitly. Simplify handling
+ of RTX_UNARY function-like operations. Print unknown expression
+ RTX classes as pseudo-functions.
+ (print_pattern): Simplify return pattern printing.
+ (dump_insn_slim): Print the value of notes as a pattern for proper
+ printing of CFA notes.
+
+2012-07-31 Dehao Chen <dehao@google.com>
+
+ * predict.c (tree_estimate_probability_driver): Normalize the
+ loop when initializing the loop optimizer.
+
+2012-07-31 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (struct var_ann_d): Remove need_phi_state
+ and current_def members.
+ * tree-into-ssa.c (struct def_blocks_d): Remove var member.
+ (def_blocks): Remove.
+ (struct var_info_d): New.
+ (var_infos): New hashtable.
+ (struct ssa_name_info): Add def_blocks member.
+ (get_ssa_name_ann): Adjust.
+ (get_var_info): New function.
+ (get_phi_state, set_phi_state, get_current_def,
+ set_current_def, get_def_blocks_for, find_def_blocks_for): Adjust.
+ (insert_phi_nodes_compare_def_blocks): Rename to ...
+ (insert_phi_nodes_compare_var_infos): ... this and adjust.
+ (insert_phi_nodes): Adjust.
+ (dump_tree_ssa, dump_tree_ssa_stats): Adjust.
+ (def_blocks_hash, def_blocks_eq, def_blocks_free): Remove.
+ (debug_def_blocks_r): Rename to ...
+ (debug_var_infos_r): ... this and adjust.
+ (var_info_hash): New function.
+ (var_info_eq): Likewise.
+ (rewrite_blocks): Adjust.
+ (init_ssa_renamer): Likewise.
+ (fini_ssa_renamer): Likewise.
+ (delete_update_ssa): Likewise.
+ (update_ssa): Likewise.
+ * tree-ssanames.c (release_dead_ssa_names): Do not clear current defs.
+
+2012-07-31 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ PR tree-optimization/53773
+ * tree-vectorizer.h (struct _loop_vec_info): Add operands_swapped.
+ (LOOP_VINFO_OPERANDS_SWAPPED): New macro.
+ * tree-vect-loop.c (new_loop_vec_info): Initialize
+ LOOP_VINFO_OPERANDS_SWAPPED field.
+ (destroy_loop_vec_info): Restore canonical form.
+ (vect_is_slp_reduction): Set LOOP_VINFO_OPERANDS_SWAPPED field.
+ (vect_is_simple_reduction_1): Likewise.
+
+2012-07-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * sched-vis.c (dump_insn_slim): Print print_rtx_head at the
+ start of each new line.
+ * final.c (final_scan_insn): If the final dump is requested as
+ slim RTL, dump slim RTL to the assembly file also.
+
+2012-07-31 Andrey Belevantsev <abel@ispras.ru>
+
+ PR target/53975
+
+ * sel-sched-ir.c (has_dependence_note_reg_use): Clarify comment.
+
+ Revert
+ 2011-08-04 Sergey Grechanik <mouseentity@ispras.ru>
+
+ * sel-sched-ir.c (has_dependence_note_reg_use): Call ds_full_merge
+ only if producer writes to the register given by regno.
+
+2012-07-31 Nick Clifton <nickc@redhat.com>
+
+ * config/stormy16/stormy16.c (xstormy16_expand_prologue): Add
+ support for reporting stack usage.
+
+ * config/frv/frv.c (QUAD): Fix typo.
+ (frv_expand_prologue): Report stack usage.
+
+2012-07-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR pch/53880
+ * gengtype.c (struct walk_type_data): Add have_this_obj field.
+ (walk_type): For functions that take a this_obj argument and
+ that process fields with a GTY((length)) argument, write the
+ test that write_types_local_process_field will write also at the
+ head of the loop, effectively unswitching the loop.
+ (write_func_for_structure, write_local_func_for_structure): Clear
+ have_this_obj before calling walk_type.
+ (write_local_func_for_structure): Set have_this_obj before walk_type.
+ (write_array): Set have_this_obj for output of local pointer walking
+ functions but not for marker functions.
+ (write_types_local_process_field): Assert have_this_obj is set.
+
+ * rtl.h (simplify_using_condition): Adjust prototype using bitmap
+ from coretypes.h.
+
+2012-07-30 Nathan Froyd <froydnj@gcc.gnu.org>
+
+
+ * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
+ * targhooks.c (default_mode_dependent_address_p): Delete code
+ for GO_IF_MODE_DEPENDENT_ADDRESS.
+ * system.h (GO_IF_MODE_DEPENDENT_ADDRESS): Poison.
+ * doc/tm.texi.in (GO_IF_MODE_DEPENDENT_ADDRESS): Delete documention.
+ * doc/tm.texi: Regenerate.
+ * config/alpha.h (GO_IF_MODE_DEPENDENT_ADDRESS): Move code to...
+ * config/alpha.c (alpha_mode_dependent_address_p): ...here. New
+ function.
+ (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
+ * config/cr16/cr16.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
+ * config/mep/mep.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
+ * config/vax/vax-protos.h (vax_mode_dependent_address_p): Delete.
+ * config/vax/vax.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
+ * config/vax/vax.c (vax_mode_dependent_address_p): Make static.
+ Take a const_rtx.
+ (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
+
+2012-07-30 Nathan Froyd <froydnj@gcc.gnu.org>
+
+ * expmed.h (NUM_MODE_VECTOR_INT): Define.
+ (struct expmed_op_cheap, struct expmed_op_costs): New structures.
+ (struct target_expmed): Convert x_mul_highpart_cost and
+ x_mul_widen_cost fields to be indexed by integer modes.
+ Convert x_sdiv_pow2_cheap and x_smod_pow2_cheap fields to be
+ of type struct expmed_op_cheap. Convert other cost fields to be
+ of type struct_expmed_op_costs.
+ (mul_widen_cost_ptr, mul_highpart_cost_ptr): Adjust for new
+ indexing of respective fields.
+ (expmed_op_cheap_ptr): New function.
+ (sdiv_pow2_cheap_ptr, smod_pow2_cheap_ptr): Call it.
+ (expmed_op_cost_ptr): New function.
+ (add_cost_ptr, neg_cost_ptr, shift_cost_ptr, shiftadd_cost_ptr,
+ shiftsub0_cost_ptr, shiftsub1_cost_ptr, mul_cost_ptr,
+ sdiv_cost_ptr, udiv_cost_ptr): Call it.
+
+2012-07-30 Sandra Loosemore <sandra@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * doc/invoke.texi (MIPS Options): Document -mno-float.
+ * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): Make it know
+ about -mno-float.
+
+2012-07-30 Joseph Myers <joseph@codesourcery.com>
+
+ * doc/sourcebuild.texi (Subdirectories): Document common subdirectory.
+
+2012-07-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR middle-end/53823
+ * expmed.c (expand_mult): Skip synth_mult for constant double op1 except
+ for special cases. Don't initialize coeff and is_neg.
+
+2012-07-30 Ulrich Weigand <ulrich.weigand@linaro.org>
+ Richard Earnshaw <rearnsha@arm.com>
+
+ * target.def (vector_alignment): New target hook.
+ * doc/tm.texi.in (TARGET_VECTOR_ALIGNMENT): Document new hook.
+ * doc/tm.texi: Regenerate.
+ * targhooks.c (default_vector_alignment): New function.
+ * targhooks.h (default_vector_alignment): Add prototype.
+ * stor-layout.c (layout_type): Use targetm.vector_alignment.
+ * config/arm/arm.c (arm_vector_alignment): New function.
+ (TARGET_VECTOR_ALIGNMENT): Define.
+
+ * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use
+ vector type alignment instead of size.
+ * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Use
+ element type size directly instead of computing it from alignment.
+ Fix variable naming and comment.
+
+2012-07-30 Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDSEED_SET): New.
+ (OPTION_MASK_ISA_RDSEED_UNSET): Likewise.
+ (ix86_handle_option): Handle mrdseed option.
+ * config.gcc (i[34567]86-*-*): Add rdseedintrin.h.
+ (x86_64-*-*): Likewise.
+ * config/i386/prfchwintrin.h: New header.
+ * config/i386/cpuid.h (bit_RDSEED): New.
+ * config/i386/driver-i386.c (host_detect_local_cpu): Detect
+ RDSEED support.
+ * config/i386/i386-c.c: Define __RDSEED__ if needed.
+ * config/i386/i386.c (ix86_target_string): Define -mrdseed option.
+ (PTA_RDSEED): New.
+ (ix86_option_override_internal): Handle new option.
+ (ix86_valid_target_attribute_inner_p): Add OPT_mrdseed.
+ (ix86_builtins): Add enum entries for RDSEED* builtins.
+ (ix86_init_mmx_sse_builtins): Define new builtins.
+ (ix86_expand_builtin): Expand RDSEED* builtins.
+ * config/i386/i386.h (TARGET_RDSEED): New.
+ * config/i386/i386.md (rdseed<mode>_1): New.
+ * config/i386/i386.opt (mrdseed): New.
+ * config/i386/x86intrin.h: Include rdseedintrin.h.
+
+2012-07-30 Richard Guenther <rguenther@suse.de>
+
+ * tree-into-ssa.c (mark_def_sites): Also process virtual operands.
+ (rewrite_stmt): Likewise.
+ (rewrite_enter_block): Likewise.
+ (pass_build_ssa): Do not update virtual SSA form during TODO.
+ (mark_symbol_for_renaming): Do nothing if we are not in SSA form.
+ * lto-streamer-in.c (lto_read_body): Set in_ssa_p earlier.
+
+2012-07-30 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * config/gcc/sh/sh.md (*movsi_index_disp, *movhi_index_disp): New
+ insns.
+
+2012-07-30 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/sh.md (mov_neg_si_t): Move to Scc instructions section.
+ Use t_reg_operand predicate. Add split for negated case.
+ (ashrsi2_31): Pass get_t_reg_rtx to gen_mov_neg_si_t.
+ * config/sh/sh.c (expand_ashiftrt): Likewise.
+
+2012-07-30 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * config/sh/sh.md (ashlsi3_d): Invoke gen_shifty_op directly instead
+ of trying to emit ashlsi3_n.
+
+2012-07-30 Laurynas Biveinis <laurynas.biveinis@gmail.com>
+ Steven Bosscher <steven@gcc.gnu.org>
+
+ * gengtype.c (adjust_field_type): Diagnose duplicate "length"
+ option applications and option being applied to arrays of atomic types.
+ (walk_type): Allow "atomic" option on strings too.
+ * dwarf2out.h (struct dw_vec_struct): Use the "atomic" GTY option
+ for the array field.
+ * vec.h: Describe the atomic object "A" type of the macros in
+ the header comment.
+ (VEC_T_GTY_ATOMIC, DEF_VEC_A, DEF_VEC_ALLOC_A): Define.
+ * emit-rtl.c (locations_locators_vals): use the atomic object vector.
+ * doc/gty.texi: Clarify that GTY option "length" is only for
+ arrays of non-atomic objects. Fix typo in the description of the
+ "atomic" option.
+
+2012-07-27 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_avoid_lea_for_addr): Handle
+ zero-extended addresses. Return false if the address has less
+ than two components.
+ (ix86_split_lea_for_addr): Unconditionally convert target and
+ all address operands to requested mode.
+ * config/i386/i386.md (*lea<mode>): Recover operands from curr_insn.
+ Pass SImode to ix86_split_lea_for_addr when splitting zero-extended
+ address.
+ (zero-extended add splitter): New splitter to conditionally split
+ non-destructive adds.
+ (*zero_extendsidi2_rex64): Conditionally emit leal instead of movl.
+
+2012-07-28 Alan Modra <amodra@gmail.com>
+
+ PR target/54093
+ * config/rs6000/rs6000.c (rs6000_secondary_reload): Limit 32-bit
+ multi-gpr reload to cases where predicate passes. Do the same for
+ 64-bit multi-gpr reload.
+
+2012-07-27 Nathan Froyd <froydnj@gcc.gnu.org>
+
+ * expmed.h (alg_hash, alg_hash_used_p, sdiv_pow2_cheap,
+ smod_pow2_cheap, zero_cost, add_cost, neg_cost, shift_cost)
+ shiftadd_cost, shiftsub0_cost, shiftsub1_cost, mul_cost,
+ sdiv_cost, udiv_cost, mul_widen_cost, mul_highpart_cost): Delete
+ macro definitions and re-purpose as inline functions.
+ (alg_hash_entry_ptr, set_alg_hash_used_p, sdiv_pow2_cheap_ptr,
+ set_sdiv_pow2_cheap, smod_pow2_cheap_ptr, set_smod_pow2_cheap,
+ zero_cost_ptr, set_zero_cost, add_cost_ptr, set_add_cost,
+ neg_cost_ptr, set_neg_cost, shift_cost_ptr, set_shift_cost,
+ shiftadd_cost_ptr, set_shiftadd_cost, shiftsub0_cost_ptr,
+ set_shiftsub0_cost, shiftsub1_cost_ptr, set_shiftsub1_cost,
+ mul_cost_ptr, set_mul_cost, sdiv_cost_ptr, set_sdiv_cost,
+ udiv_cost_ptr, set_udiv_cost, mul_widen_cost_ptr,
+ set_mul_widen_cost, mul_highpart_cost_ptr, set_mul_highpart_cost):
+ New functions.
+ (convert_cost_ptr): New function, split out from...
+ (set_convert_cost, convert_cost): ...here.
+ * expmed.c, tree-ssa-loop-ivopts.c: Update for new functions.
+ * gimple-ssa-strength-reduction.c: Likewise.
+
+2012-07-20 Ryan Mansfield <rmansfield@qnx.com>
+
+ * gcc.c (main): Move GCC_DRIVER_HOST_INITIALIZATION after
+ diagnostic_initialize.
+
+2012-07-27 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * config/sh/sh.c (shiftcosts): Remove case where first operand
+ is a const_int. Move COSTS_N_INSNS usage into caller ...
+ (sh_rtx_costs) ... here. Return false when shiftcosts cannot be
+ calculated instead of MAX_COST.
+
+2012-07-27 Richard Guenther <rguenther@suse.de>
+
+ * tree-cfg.c (gimple_can_merge_blocks_p): Do more fine-grained
+ check whether SSA form is not up-to-date.
+ * tree-flow.h (name_mappings_registered_p): Remove.
+ * tree-into-ssa.c (struct repl_map_d): Remove.
+ (repl_tbl): Likewise.
+ (struct ssa_name_info): Add repl_set member.
+ (update_ssa_obstack): New static global.
+ (get_ssa_name_ann): Initialize repl_set.
+ (clear_ssa_name_info): Assert age did not wrap.
+ (repl_map_hash, repl_map_eq, repl_map_free): Remove.
+ (names_replaced_by): Adjust.
+ (add_to_repl_tbl): Likewise.
+ (dump_tree_ssa_stats): Likewise.
+ (init_update_ssa): Initialize update_ssa_obstack.
+ (delete_update_ssa): Free update_ssa_obstack.
+ (name_mappings_registered_p): Remove.
+ (update_ssa): Adjust.
+
+2012-07-27 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/constraints.md: Delete "q" constraint.
+ * config/rs6000/dfp.md (movsd_hardfloat, movsd_softfloat):
+ Delete the "q" alternative.
+ * config/rs6000/predicates.md (gpc_reg_operand): Adjust.
+ * config/rs6000/rs6000.c (rs6000_debug_reg_global)
+ (rs6000_init_hard_regno_mode_ok, rs6000_dbx_register_number):
+ adjust to MQ_REGNO removal.
+ * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust
+ comment.
+ (REG_ALLOC_ORDER): Adjust comment. Remove MQ from alloc order.
+ (enum reg_class): Adjust comment. Delete MQ_REGS.
+ (REG_CLASS_CONTENTS): Adjust.
+ (REGISTER_NAMES, ADDITIONAL_REGISTER_NAMES): Adjust comment.
+ * config/rs6000/rs6000.md: Delete MQ_REGNO.
+ (movsi_internal1, movsi_internal1_single, movhi_internal,
+ movqi_internal, movcc_internal1, movsf_hardfloat,
+ movsf_softfloat): Delete the "q" alternative.
+ (ctr<mode>_internal1, ctr<mode>_internal2, ctr<mode>_internal5,
+ ctr<mode>_internal6): Delete "q" constraint.
+
+2012-07-27 Richard Guenther <rguenther@suse.de>
+
+ * tree-into-ssa.c (def_blocks_p): New typedef.
+ (insert_phi_nodes_compare_def_blocks): New function.
+ (insert_phi_nodes): Do not walk over referenced vars, instead
+ walk over recorded def_blocks, record relevant ones and sort
+ them to avoid repeated hashtable lookups.
+
+2012-07-27 Richard Guenther <rguenther@suse.de>
+
+ * doc/invoke.texi (min-virtual-mappings, virtual-mappings-ratio):
+ Remove param documentation.
+ * params.def (PARAM_MIN_VIRTUAL_MAPPINGS,
+ PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Remove.
+ * tree-flow.h (mark_set_for_renaming): Remove.
+ * tree-into-ssa.c (struct update_ssa_stats_d): Remove.
+ (add_new_name_mapping): Remove bookkeeping code.
+ (dump_update_ssa): Remove stats dumping code.
+ (init_update_ssa): Remove stats allocation code.
+ (delete_update_ssa): Remove stats freeing code.
+ (mark_set_for_renaming): Remove.
+ (switch_virtuals_to_full_rewrite_p): Likewise.
+ (switch_virtuals_to_full_rewrite): Likewise.
+ (update_ssa): Do not call switch_virtuals_to_full_rewrite.
+
+2012-07-27 Marek Polacek <polacek@redhat.com>
+
+ * cgraphunit.c: Rename varpool_finalize_variable to
+ varpool_finalize_decl in a comment.
+
+2012-07-27 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * common/config/rs6000/rs6000-common.c (rs6000_handle_option):
+ Delete code for -mno-power, -mpower, and -mpower2.
+ * config/rs6000/aix43.h (NON_POWERPC_MASKS): Delete.
+ (SUBTARGET_OVERRIDE_OPTIONS): Delete check for POWER together
+ with -maix64.
+ (ASM_CPU_SPEC): Delete support for POWER and POWER2.
+ * config/rs6000/aix51.h (NON_POWERPC_MASKS): Delete.
+ (SUBTARGET_OVERRIDE_OPTIONS): Delete check for POWER together
+ with -maix64.
+ (ASM_CPU_SPEC): Delete support for POWER and POWER2.
+ * config/rs6000/aix52.h (NON_POWERPC_MASKS): Delete.
+ (SUBTARGET_OVERRIDE_OPTIONS): Delete check for POWER together
+ with -maix64.
+ (TARGET_POWER): Delete.
+ * config/rs6000/aix53.h (NON_POWERPC_MASKS): Delete.
+ (SUBTARGET_OVERRIDE_OPTIONS): Delete check for POWER together
+ with -maix64.
+ (TARGET_POWER): Delete.
+ * config/rs6000/aix61.h (NON_POWERPC_MASKS): Delete.
+ (SUBTARGET_OVERRIDE_OPTIONS): Delete check for POWER together
+ with -maix64.
+ (TARGET_POWER): Delete.
+ * config/rs6000/darwin.h (TARGET_POWER): Delete.
+ * config/rs6000/driver-rs6000.c (struct asm_names): Delete
+ support for -mpower, -mpower2, and -mno-power.
+ * config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
+ Likewise.
+ (rs6000_cpu_cpp_builtins): Likewise.
+ * config/rs6000/rs6000-cpus.def: Likewise.
+ * config/rs6000/rs6000-tables.opt: Regenerate.
+ * config/rs6000/rs6000.c (POWER_MASKS): Delete.
+ (rs6000_option_override_internal): Adjust.
+ (rs6000_conditional_register_usage): Adjust.
+ (rs6000_emit_move): Adjust.
+ (rs6000_common_init_builtins): Adjust.
+ (rs6000_init_libfuncs): Adjust.
+ (rs6000_output_function_prologue): Adjust.
+ (rs6000_adjust_cost): Adjust.
+ (struct rs6000_opt_masks): Delete MASK_POWER and MASK_POWER2.
+ * config/rs6000/rs6000.h (ASM_CPU_SPEC): Delete support for
+ POWER and POWER2.
+ (TARGET_DEFAULT): Adjust.
+ (PROCESSOR_POWER): Delete.
+ (SHIFT_COUNT_TRUNCATED): Adjust.
+ * config/rs6000/rs6000.md (extendqisi2): Delete POWER support.
+ (extendqisi2_power): Delete.
+ (extendqisi2_no_power): Adjust.
+ (extendqihi2, extendqihi2_power, extendqihi2_no_power):
+ Likewise.
+ (sminsi3, smaxsi3, uminsi3, umaxsi3): Adjust.
+ (anonymous doz insn patterns): Delete.
+ (abssi2): Adjust.
+ (abssi2_power): Delete.
+ (abssi2_nopower): Adjust.
+ (nabs_power, nabs_nopower): Likewise.
+ (mulsi3, mulsi3_mq, mulsi3_no_mq, mulsi3_mq_internal1):
+ Likewise. Delete anonymous post-reload splitter.
+ (mulsi3_no_mq_internal1): rename to...
+ (mulsi3_internal1): New define_insn.
+ (mulsi3_mq_internal2, mulsi3_no_mq_internal2, mulsi3_internal2):
+ Likewise.
+ (divmodsi4, divmodsi4_internal, udiv<mode>3, udivsi3_mq,
+ udivsi3_no_mq, udivsi3, div<mode>3, divsi3_mq, div<mode>3_no_mq,
+ udivmodsi4_normal, udivmodsi4_tests, udivmodsi4): Likewise.
+ (mulh_call, mull_call, divss_call, divus_call, quoss_call,
+ quous_call): Likewise.
+ (maskir_internal1, maskir_internal2, maskir_internal3,
+ maskir_internal4, maskir_internal5, maskir_internal6,
+ maskir_internal7, maskir_internal8): Delete.
+ (ashlsi3, ashlsi3_power, ashlsi3_no_power): Adjust.
+ (anonymous sl insn patterns): Delete.
+ (lshrsi3, lshrsi3_power, lshrsi3_no_power): Adjust.
+ (lshrsi3_64): Adjust.
+ (anonymous sr insn patterns): Delete.
+ (anonymous rrib insn patterns): Delete.
+ (ashrsi3, ashrsi3_power, ashrsi3_no_power): Adjust.
+ (anonymous sra insn patterns): Delete.
+ (sqrtsf2, sqrtdf2, sqrtdf2_fpr): Adjust.
+ (fix_trunc<mode>si2, fix_trunc<mode>si2_internal,
+ fctiwz_<mode>): Adjust.
+ (mulsidi3, mulsidi3_mq, mulsidi3_no_mq, umulsidi3, umulsidi3_mq,
+ umulsidi3_no_mq, smulsi3_highpart, smulsi3_highpart_mq,
+ smulsi3_highpart_no_mq, umulsi3_highpart, umulsi3_highpart_mq,
+ umulsi3_highpart_no_mq): Adjust.
+ (ashldi3_power, lshrdi3_power, ashrdi3_power): Delete.
+ (ashrdi3_no_power, ashldi3, ashldi3_internal1,
+ lshrdi3_internal1): Adjust.
+ (fix_trunctfsi2, fix_trunctfsi2_fprs): Adjust.
+ (movti_power): Delete.
+ (movti_string): Adjust.
+ (stmsi8, stmsi7, stmsi6, stmsi5, stmsi4, stmsi3): Adjust.
+ (stmsi8_power, stmsi7_power, stmsi6_power, stmsi5_power,
+ stmsi4_power, stmsi3_power): Delete.
+ (anonymous movmemsi insn patterns): Adjust.
+ (lfq_power2, stfq_power2): Delete.
+ (eq<mode>, eq<mode>_compare): Adjust.
+ (eqsi_power): Delete.
+ (ne0si): Adjust.
+ (anonymous le, lt, ge, gt insn patterns): Delete.
+ * config/rs6000/rs6000.opt (mpower, mno-power, mpower2): Delete.
+ * config/rs6000/sysv4.h (TARGET_POWER): Delete.
+ * config/rs6000/t-aix43 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
+ MULTILIB_MATCHES): Adjust.
+ * doc/invoke.texi (RS/6000 and PowerPC Options): Delete
+ -mpower, -mno-power, -mpower2, -mno-power2 documentation.
+ Delete -mcpu=power and -mcpu=power2 documentation.
+
+2012-07-27 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/601.md: New file.
+ * config/rs6000/aix43.h (ASM_CPU_SPEC): Delete support for
+ RIOS CPUs.
+ * config/rs6000/aix51.h (ASM_CPU_SPEC): Likewise.
+ * config/rs6000/driver-rs6000.c (detect_processor_aix,
+ struct asm_names): Likewise.
+ * config/rs6000/rios1.md: Delete file.
+ * config/rs6000/rios2.md: Delete file.
+ * config/rs6000/rs6000-cpus.def: Delete definitions for RIOS
+ CPUs.
+ * config/rs6000/rs6000-opts.h (enum processor_type): Delete
+ PROCESSOR_RIOS1 and PROCESSOR_RIOS2.
+ * config/rs6000/rs6000-tables.opt: Regenerated.
+ * config/rs6000/rs6000.c (struct rios1_cost, struct rios2_cost):
+ Delete.
+ (rs6000_option_override_internal): Delete support for RIOS CPUs.
+ (rs6000_conditional_register_usage): Adjust comment.
+ (rs6000_issue_rate):Delete support for RIOS CPUs.
+ * config/rs6000/rs6000.h (ASM_CPU_SPEC): Delete support for
+ RIOS CPUs.
+ (PROCESSOR_POWER): Change to PROCESSOR_PPC601.
+ (PROCESSOR_DEFAULT): Change to PROCESSOR_PPC603.
+ * config/rs6000/rs6000.md (define_attr "cpu"): Delete rios1
+ and rios2.
+ (include "rios1.md", include "rios2.md"): Delete.
+ (include "601.md"): New.
+ * config/rs6000/rs6000.opt (enum rs6000_cpu): Default to
+ PROCESSOR_PPC603.
+ * config/rs6000/t-aix43 (MULTILIB_MATCHES): Delete support
+ for RIOS CPUs.
+ * config/rs6000/t-rs6000 (MD_INCLUDES): Delete rios1.md and
+ rios2.md . Add 601.md .
+
+2012-07-26 Richard Henderson <rth@redhat.com>
+
+ * doc/extend.texi (attribute): Document hot/cold for labels.
+ * predict.c (tree_estimate_probability_bb): Handle hot/cold
+ attributes on user labels.
+ * predict.def (PRED_HOT_LABEL, PRED_COLD_LABEL): New.
+
+2012-07-26 Andrew Jenner <andrew@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * cse.c (find_comparison_args): Check for cycles of any length.
+
+2012-07-26 Nick Clifton <nickc@redhat.com>
+
+ * config/mn10300/mn10300.c (REG_SAVE_BYTES): Delete.
+ (mn10300_get_live_callee_saved_regs): If requested return a count
+ of the number of bytes in the mask.
+ (mn10300_expand_prologue): Add argument to invocation of
+ mn10300_get_live_callee_regs.
+ (mn10300_expand_epilogue): Compute reg_save_bytes by calling
+ mn10300_get_live_callee_saved_regs.
+ (mn10300_initial_offset): Likewise.
+ * config/mn10300/mn10300-protos.h (mn10300_get_live_callee_saved_regs):
+ Update prototype.
+ * config/mn10300/mn10300.md (return_ret): Add argument to
+ invocation of mn10300_get_live_callee_saved_regs.
+
+2012-07-26 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR regression/54084
+ * sel-sched-ir.c (cmp_v_in_regset_pool): Clarify logic, fix
+ pointer difference check.
+
+2012-07-26 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * tree-ssa-loop-ivopts.c (mbc_entry_hash): Remove.
+ (mbc_entry_eq): Likewise.
+ (mult_costs): Likewise.
+ (cost_tables_exist): Likewise.
+ (initialize_costs): Likewise.
+ (finalize_costs): Likewise.
+ (tree_ssa_iv_optimize_init): Remove call to initialize_costs.
+ (add_regs_cost): Remove.
+ (multiply_regs_cost): Likewise.
+ (add_const_cost): Likewise.
+ (extend_or_trunc_reg_cost): Likewise.
+ (negate_reg_cost): Likewise.
+ (struct mbc_entry): Likewise.
+ (multiply_by_const_cost): Likewise.
+ (get_address_cost): Change add_regs_cost calls to add_cost lookups;
+ change multiply_by_const_cost to mult_by_coeff_cost.
+ (force_expr_to_var_cost): Likewise.
+ (difference_cost): Change multiply_by_const_cost to mult_by_coeff_cost.
+ (get_computation_cost_at): Change add_regs_cost calls to add_cost
+ lookups; change multiply_by_const_cost to mult_by_coeff_cost.
+ (determine_iv_cost): Change add_regs_cost calls to add_cost lookups.
+ (tree_ssa_iv_optimize_finalize): Remove call to finalize_costs.
+ * tree-ssa-address.c (expmed.h): New #include.
+ (most_expensive_mult_to_index): Change multiply_by_const_cost to
+ mult_by_coeff_cost.
+ * gimple-ssa-strength-reduction.c (expmed.h): New #include.
+ (stmt_cost): Change to use mult_by_coeff_cost, mul_cost, add_cost,
+ neg_cost, and convert_cost instead of IVOPTS interfaces.
+ (execute_strength_reduction): Remove calls to initialize_costs and
+ finalize_costs.
+ * expmed.c (struct init_expmed_rtl): Add convert rtx_def.
+ (init_expmed_one_mode): Initialize convert rtx_def; initialize
+ x_convert_cost for related modes.
+ (mult_by_coeff_cost): New function.
+ * expmed.h (NUM_MODE_INT): New #define.
+ (struct target_expmed): Add x_convert_cost matrix.
+ (set_convert_cost): New inline function.
+ (convert_cost): Likewise.
+ (mult_by_coeff_cost): New extern decl.
+ * tree-flow.h (initialize_costs): Remove decl.
+ (finalize_costs): Likewise.
+ (multiply_by_const_cost): Likewise.
+ (add_regs_cost): Likewise.
+ (multiply_regs_cost): Likewise.
+ (add_const_cost): Likewise.
+ (extend_or_trunc_reg_cost): Likewise.
+ (negate_reg_cost): Likewise.
+ * Makefile.in (gimple-ssa-strength-reduction.o): Update dependencies.
+ (tree-ssa-address.o): Update dependencies.
+
+2012-07-26 Steven Bosscher <steven@gcc.gnu.org>
+
+ * bitmap.h: Add explanation of sparse set as linked-list bitmap.
+ * sbitmap.h: Add explanation about non-sparse sets as simple bitmap.
+ (TEST_BIT): Make a static inline function for stronger type checking.
+ (SET_BIT): Don't handle sbitmaps with popcount.
+ (RESET_BIT): Likewise.
+ (SET_BIT_WITH_POPCOUNT): New, like SET_BIT but with popcount.
+ (RESET_BIT_WITH_POPCOUNT): New, like RESET_BIT but with popcount.
+ * ebitmap.c (ebitmap_clear_bit): Use SET_BIT_WITH_POPCOUNT and
+ RESET_BIT_WITH_POPCOUNT on wordmask bitmaps.
+ (ebitmap_set_bit, ebitmap_and_into, ebitmap_and, ebitmap_ior_into,
+ ebitmap_and_compl_into, ebitmap_and_compl): Likewise.
+ * sparseset.h: Add explanation of sparse set representation.
+
+2012-07-26 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54098
+ * tree-vrp.c (vrp_visit_phi_node): Iterate once more if the
+ original range was UNDEFINED.
+
+2012-07-26 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ * config/arm/neon.ml (ops): Fix regexp for vld1Q_dups64 and
+ vld1Q_dupu64 tests.
+
+2012-07-26 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/sh.opt (mzdcbranch): New option.
+ * doc/invoke.texi: Document it.
+ * config/sh/sh.md (negsi_cond): Use TARGET_ZDCBRANCH as condition
+ instead of TARGET_HARD_SH4.
+ * config/sh/sh.c (sh_option_override): Set TARGET_ZDCBRANCH as default
+ for TARGET_HARD_SH4.
+
+2012-07-25 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * config/sh/predicates.md (shift_count_operand): Handle not-SHMEDIA
+ case.
+ (p27_shift_count_operand, not_p27_shift_count_operand): New predicates.
+ * config/sh/sh.md (ashlsi3): Remove parallel and T_REG clobber
+ from expander. Do not emit shift insn for not-SHMEDIA case.
+ (ashlsi3_std): Replace with ...
+ (ashlsi3_k, ashlsi3_d): ... these new insns.
+ * config/sh/sh.c (gen_ashift): Make static. Add sanity checks.
+ Emit ashlsi3_k insn instead of ashlsi3_std in ASHIFT case.
+ (gen_ashift_hi): Make static.
+ * config/sh/sh-protos.h (gen_ashift, gen_ashift_hi): Remove forward
+ declaration.
+
+2012-07-25 Bharathi Seshadri <bseshadr@cisco.com>
+ Jim Wilson <jimwilso@cisco.com>
+
+ * config/arm/bpabi.h (BE8_LINK_SPEC): Set according to
+ TARGET_BIG_ENDIAN_DEFAULT.
+
+2012-07-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimple-low.c (lower_try_catch): New function.
+ (lower_stmt) <GIMPLE_TRY>: Use it to lower GIMPLE_TRY_CATCH.
+ <GIMPLE_CATCH>: Delete.
+ <GIMPLE_EH_FILTER>: Likewise.
+
+2012-07-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * expr.c (expand_expr_real_1): Do not expand operand #1 and #2
+ of BIT_FIELD_REF for ignored results.
+ * fold-const.c (fold_ternary_loc) <BIT_FIELD_REF>: Check that the
+ CONSTRUCTOR has vector type before using vector accessors on it.
+ * gimplify.c (gimplify_compound_lval): Do not gimplify operand #1 and
+ #2 of BIT_FIELD_REF.
+ (gimplify_expr) <BIT_FIELD_REF>: Likewise.
+ * tree-nested.c (convert_nonlocal_reference_op) <BIT_FIELD_REF>: Do
+ not process operand #1 and #2.
+ (convert_local_reference_op): Likewise.
+ * tree-ssa-pre.c (create_component_ref_by_pieces_1): Remove superfluous
+ breaks throughout.
+ <BIT_FIELD_REF>: Reuse operand #1 and #2 directly.
+ * tree.c (stabilize_reference) <BIT_FIELD_REF>: Do not stabilize
+ operand #1 and #2.
+ (UPDATE_FLAGS): Do not consider operand #2 of BIT_FIELD_REF.
+ (build6_stat): Delete.
+ * tree.h (build6_stat, build6, build6_stat_loc, build6_loc): Likewise.
+
+2012-07-25 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/30318
+ * tree-vrp.c (extract_range_from_binary_expr_1) [PLUS_EXPR]:
+ Handle __int128.
+ [MINUS_EXPR]: Merge with PLUS_EXPR.
+
+2012-07-25 Sandra Loosemore <sandra@codesourcery.com>
+ Paul Brook <paul@codesourcery.com>
+
+ PR target/53633
+ * target.def (warn_func_return): New hook.
+ * doc/tm.texi.in (TARGET_WARN_FUNC_RETURN): New hook.
+ * doc/tm.texi: Regenerate.
+ * doc/sourcebuild.texi (Effective-Target Keywords): Document
+ naked_functions.
+ * ipa-pure-const.c (warn_function_noreturn): Check
+ targetm.warn_func_return.
+ * tree-cfg.c (execute_warn_function_return): Likewise.
+ * config/spu/spu.c (spu_warn_func_return): New.
+ (TARGET_WARN_FUNC_RETURN): Define.
+ * config/rx/rx.c (rx_warn_func_return): New.
+ (TARGET_WARN_FUNC_RETURN): Define.
+ * config/avr/avr.c (avr_warn_func_return): New.
+ (TARGET_WARN_FUNC_RETURN): Define.
+ * config/arm/arm.c (arm_warn_func_return): New.
+ (TARGET_WARN_FUNC_RETURN): Define.
+ * config/mcore/mcore.c (mcore_warn_func_return): New.
+ (TARGET_WARN_FUNC_RETURN): Define.
+ (saved_warn_return_type, saved_warn_return_type_count): Remove.
+ (mcore_reorg, mcore_handle_naked_attribute): Remove warn_return hack.
+
+2012-07-25 Siddhesh Poyarekar <siddhesh@redhat.com>
+
+ * final.c [ASSEMBLER_DIALECT](do_assembler_dialects): New
+ function to implement assembler dialects.
+ (output_asm_insn): Use do_assembler_dialects.
+ (asm_fprintf): Likewise.
+
+2012-07-25 Richard Henderson <rth@redhat.com>
+
+ PR bootstrap/54092
+ * libfuncs.h: Don't include optabs.h.
+ (struct libfunc_entry): Use "int" for op, mode1, mode2 members.
+ * optabs.c (hash_libfunc): Don't cast members to int.
+ * Makefile.in (LIBFUNCS_H): Don't include OPTABS_H.
+
+2012-07-25 Dodji Seketeli <dodji@redhat.com>
+
+ * basic-block.c: Fix typo in comment.
+
+2012-07-25 Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * common/config/i386/i386-common.c (OPTION_MASK_ISA_PRFCHW_SET): New.
+ (OPTION_MASK_ISA_PRFCHW_UNSET): Likewise.
+ (ix86_handle_option): Handle mprfchw option.
+ * config.gcc (i[34567]86-*-*): Add prfchwintrin.h.
+ (x86_64-*-*): Likewise.
+ * config/i386/prfchwintrin.h: New header.
+ * config/i386/cpuid.h (bit_PRFCHW): New.
+ (bit_BMI): Formatting fix.
+ (bit_HLE): Likewise.
+ (bit_RTM): Likewise.
+ * config/i386/driver-i386.c (host_detect_local_cpu): Detect
+ PREFETCHW support.
+ * config/i386/i386-c.c: Define __PRFCHW__ if needed.
+ * config/i386/i386.c (ix86_target_string): Define
+ -mprfchw option. Formatting fixes.
+ (PTA_HLE): Formatting fix.
+ (PTA_PRFCHW): New.
+ (ix86_option_override_internal): Handle new option.
+ (ix86_valid_target_attribute_inner_p): Add OPT_mprfchw.
+ * config/i386/i386.h (TARGET_PRFCHW): New.
+ * config/i386/i386.md (prefetch): Enable for TARGET_PRFCHW.
+ * config/i386/i386.opt (mprfchw): New.
+ * config/i386/mm3dnow.h: Move _m_prefetchw from here to prfchwintrin.h.
+ * config/i386/x86intrin.h: Include prfchwintrin.h.
+
+2012-07-25 Sergey Melnikov <sergey.melnikov@intel.com>
+
+ * config/i386/i386.md (stack_protect_set): Disable the pattern
+ for Android since Android libc (bionic) does not provide random
+ value for stack protection guard at gs:0x14. Guard value
+ will be provided from external symbol (default implementation).
+ (stack_protect_set_<mode>): Likewise.
+ (stack_protect_test): Likewise.
+ (stack_protect_test_<mode>): Likewise.
+ * gcc/defaults.h: Define macro TARGET_HAS_BIONIC to 0 - target does
+ not have Bionic by default
+ * config/linux.h: Redefine macro TARGET_HAS_BIONIC to (OPTION_BIONIC)
+ Macro OPTION_BIONIC is defined in this file and provides Bionic
+ accessibility status
+
+2012-07-25 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gimple-pretty-print.c (gimple_dump_bb_buff): Call pp_flush.
+
+2012-07-25 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
+
+ btver2 Enablement
+ * config.gcc (i[34567]86-*-linux* | ...): Add btver2.
+ (case ${target}): Add btver2.
+ * config/i386/driver-i386.c (host_detect_local_cpu): Let
+ -march=native recognize btver2 processors.
+ * config/i386/i386-c.c (ix86_target_macros_internal): Add
+ btver2 def_and_undef
+ * config/i386/i386.c (struct processor_costs btver2_cost): New
+ btver2 cost table.
+ (m_BTVER2): New definition.
+ (m_AMD_MULTIPLE): Includes m_BTVER2.
+ (initial_ix86_tune_features): Add btver2 tune.
+ (processor_target_table): Add btver2 entry.
+ (static const char *const cpu_names): Add btver2 entry.
+ (software_prefetching_beneficial_p): Add btver2.
+ (ix86_option_override_internal): Add btver2 instruction sets.
+ (ix86_issue_rate): Add btver2.
+ (ix86_adjust_cost): Add btver2.
+ * config/i386/i386.h (TARGET_BTVER2): New definition.
+ (enum target_cpu_default): Add TARGET_CPU_DEFAULT_btver2.
+ (enum processor_type): Add PROCESSOR_BTVER2.
+ * config/i386/i386.md (define_attr "cpu"): Add btver2.
+
+2012-07-24 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * doc/tm.texi: Regenerate.
+ * targhooks.c (default_init_cost): Add prologue and epilogue costs.
+ (default_add_stmt_cost): Likewise; also handle NULL stmt_info.
+ (default_finish_cost): Add prologue and epilogue costs.
+ * targhooks.h (default_add_stmt_cost): Change parameter list.
+ (default_finish_cost): Likewise.
+ * target.def (init_cost): Change documentation string.
+ (add_stmt_cost): Change documentation string and parameter list.
+ (finish_cost): Likewise.
+ * target.h (vect_cost_model_location): New enum.
+ * tree-vectorizer.h (struct _slp_tree): Remove cost substruct.
+ (struct _slp_instance): Remove cost substruct; rename stmt_cost_vec
+ to body_cost_vec.
+ (SLP_INSTANCE_OUTSIDE_OF_LOOP_COST): Remove.
+ (SLP_INSTANCE_STMT_COST_VEC): Rename to SLP_INSTANCE_BODY_COST_VEC.
+ (SLP_TREE_OUTSIDE_OF_LOOP_COST): Remove.
+ (struct _vect_peel_extended_info): Rename stmt_cost_vec to
+ body_cost_vec.
+ (struct _stmt_vec_info): Remove cost substruct.
+ (STMT_VINFO_OUTSIDE_OF_LOOP_COST): Remove.
+ (stmt_vinfo_set_outside_of_loop_cost): Remove.
+ (builtin_vectorization_cost): New function.
+ (vect_get_stmt_cost): Change to use builtin_vectorization_cost.
+ (add_stmt_cost): Change parameter list.
+ (finish_cost): Likewise.
+ (vect_model_simple_cost): Likewise.
+ (vect_model_store_cost): Likewise.
+ (vect_model_load_cost): Likewise.
+ (record_stmt_cost): Likewise.
+ (vect_get_load_cost): Likewise.
+ (vect_get_known_peeling_cost): Likewise.
+ * tree-vect-loop.c (vect_get_known_peeling_cost): Change parameter
+ list; call record_stmt_cost for prologue and epilogue costs.
+ (vect_estimate_min_profitable_iters): Call add_stmt_cost for
+ prologue and epilogue costs; remove computation of vec_outside_cost;
+ return vec_prologue_cost and vec_epilogue_cost from finish_cost.
+ (vect_model_reduction_cost): Revise call to add_stmt_cost for body
+ costs; call add_stmt_cost for prologue and epilogue costs.
+ (vect_model_induction_cost): Revise call to add_stmt_cost for body
+ costs; call add_stmt_cost for prologue costs.
+ * tree-vect-data-refs.c (vect_get_data_access_cost): Change parameter
+ list for function and arguments for calls to vect_get_load_cost and
+ vect_get_store_cost.
+ (vect_peeling_hash_get_lowest_cost): Change argument list for calls to
+ vect_get_data_access_cost and vect_get_known_peeling_cost; use
+ temporary vectors prologue_cost_vec and epilogue_cost_vec for the
+ latter call and discard their results; rename stmt_cost_vec to
+ body_cost_vec; correct possible storage leak for body_cost_vec.
+ (vect_peeling_hash_choose_best_peeling): Rename stmt_cost_vec to
+ body_cost_vec.
+ (vect_enhance_data_refs_alignment): Rename stmt_cost_vec to
+ body_cost_vec; add extra dummy parameter on calls to
+ vect_get_data_access_cost; tolerate null si->stmt; add vect_body to
+ argument list on call to add_stmt_cost.
+ * tree-vect-stmts.c (record_stmt_cost): Change parameter list;
+ rename stmt_cost_vec to body_cost_vec; tolerate null stmt_info; call
+ builtin_vectorization_cost; add "where" parameter on call to
+ add_stmt_cost.
+ (vect_model_simple_cost): Change parameter list; call record_stmt_cost
+ for prologue costs; remove call to stmt_vinfo_set_outside_of_loop_cost;
+ rename stmt_cost_vec to body_cost_vec.
+ (vect_model_promotion_demotion_cost): Add vect_body argument to call
+ to add_stmt_cost; call add_stmt_cost for prologue costs; remove call
+ to stmt_vinfo_set_outside_of_loop_cost.
+ (vect_model_store_cost): Change parameter list; call record_stmt_cost
+ for prologue costs; add vect_body argument to call to record_stmt_cost;
+ rename stmt_cost_vec to body_cost_vec; remove call to
+ stmt_vinfo_set_outside_of_loop_cost.
+ (vect_get_store_cost): Rename stmt_cost_vec to body_cost_vec; add
+ vect_body argument to calls to record_stmt_cost.
+ (vect_model_load_cost): Change parameter list; rename stmt_cost_vec to
+ body_cost_vec; add vect_body argument to calls to record_stmt_cost;
+ remove call to stmt_vinfo_set_outside_of_loop_cost.
+ (vect_get_load_cost): Change parameter list; rename stmt_cost_vec to
+ body_cost_vec; add vect_body argument to calls to record_stmt_cost;
+ call record_stmt_cost for prologue costs.
+ (vectorizable_store): Change argument list for call to
+ vect_model_store_cost.
+ (vectorizable_load): Change argument list for call to
+ vect_model_load_cost.
+ (new_stmt_vec_info): Remove assignment to
+ STMT_VINFO_OUTSIDE_OF_LOOP_COST.
+ * config/spu/spu.c (spu_init_cost): Add prologue and epilogue costs.
+ (spu_add_stmt_cost): Likewise; also handle NULL stmt_info.
+ (spu_finish_cost): Add prologue and epilogue costs.
+ * config/i386/i386.c (i386_init_cost): Add prologue and epilogue costs.
+ (i386_add_stmt_cost): Likewise; also handle NULL stmt_info.
+ (i386_finish_cost): Add prologue and epilogue costs.
+ * config/rs6000/rs6000.c (rs6000_init_cost): Add prologue and epilogue
+ costs.
+ (rs6000_add_stmt_cost): Likewise; also handle NULL stmt_info.
+ (rs6000_finish_cost): Add prologue and epilogue costs.
+ * tree-vect-slp.c (vect_free_slp_instance): Rename
+ SLP_INSTANCE_STMT_COST_VEC to SLP_INSTANCE_BODY_COST_VEC.
+ (vect_create_new_slp_node): Remove assignment to
+ SLP_TREE_OUTSIDE_OF_LOOP_COST.
+ (vect_get_and_check_slp_defs): Change parameter list; change argument
+ lists to calls to vect_model_store_cost and vect_model_simple_cost.
+ (vect_build_slp_tree): Change parameter list; change argument lists
+ to calls to vect_model_load_cost, vect_get_and_check_slp_defs, and
+ recursive self-calls; remove setting of outside_cost from
+ SLP_TREE_OUTSIDE_OF_LOOP_COST; add vect_body argument to call to
+ record_stmt_cost.
+ (vect_analyze_slp_instance): Rename stmt_cost_vec to body_cost_vec;
+ rename SLP_INSTANCE_STMT_COST_VEC to SLP_INSTANCE_BODY_COST_VEC;
+ remove assignment to SLP_INSTANCE_OUTSIDE_OF_LOOP_COST; record SLP
+ prologue costs.
+ (vect_bb_vectorization_profitable_p): Rename stmt_cost_vec to
+ body_cost_vec; handle null ci->stmt; add vect_body argument to call
+ to add_stmt_cost; simplify calls to targetm.vectorize.
+ builtin_vectorization_cost; return vec_prologue_cost and
+ vec_epilogue_cost from finish_cost.
+ (vect_update_slp_costs_according_to_vf): Rename stmt_cost_vec to
+ body_cost_vec; add vect_body argument to call to add_stmt_cost.
+
+2012-07-24 Richard Henderson <rth@redhat.com>
+
+ * system.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Poison.
+ * config/cris/cris.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
+ * config/h8300/h8300.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
+ * config/mn10300/mn10300.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
+ * config/rs6000/rs6000.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove
+ comment reference.
+ * config/v850/v850.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
+ * config/v850/v850.md (fixuns_truncsfsi2, fixuns_truncdfsi2): New.
+ (fix_truncsfsi2, fix_truncdfsi2): Avoid double FIX.
+ * config/vax/vax.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
+ * config/vax/vax.md (fixuns_trunc<VAXfp><VAXint>): New.
+ * doc/tm.texi.in (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
+ * doc/tm.texi: Rebuild.
+
+2012-07-24 Richard Henderson <rth@redhat.com>
+
+ * optabs.def: New file.
+ * Makefile.in (OPTABS_H): Add insn-opinit.h.
+ (MOSTLYCLEANFILES): Likewise.
+ (insn-opinit.o): Remove reload.h
+ (simple_rtl_generated_c): Remove insn-opinit.c.
+ (s-opinit): New rule.
+ (build/genopinit.o): Add optabs.def.
+ * genopinit.c (rtx_upname): New.
+ (optabs): Extract to optabs.def
+ (enum optab_tag, struct optab_def_d, optabs): New.
+ (struct pattern_d, patterns): New.
+ (match_pattern): Split out from ...
+ (gen_insn): ... here. Push matches on patterns vec.
+ (pattern_cmp, optab_kind_cmp, optab_rcode_cmp): New.
+ (header_file_name, source_file_name, handle_arg): New.
+ (open_outfile): New.
+ (main): Sort and emit new tables. Generate lookup_handler,
+ raw_optab_handler, swap_optab_enable.
+ * libfuncs.h (libfunc_entry): Change "size_t optab" to "optab op".
+ * optabs.c (code_to_optab_): Remove.
+ (hash_libfunc): Update for optab name change.
+ (eq_libfunc): Likewise.
+ (convert_optab_libfunc): Update computation of optab member;
+ use the new convlib_def table.
+ (optab_libfunc): Similarly.
+ (set_optab_libfunc, set_conv_libfunc): Likewise.
+ (sign_expand_binop): Use swap_optab_enable instead of fake optabs.
+ (init_insn_codes, init_optab, init_optabv, init_convert_optab): Remove.
+ (init_optabs): Don't call them; export the data to optabs.def.
+ (gen_int_libfunc, gen_fp_libfunc): Export non-static.
+ (gen_fixed_libfunc, gen_signed_fixed_libfunc): Likewise.
+ (gen_unsigned_fixed_libfunc, gen_int_fp_libfunc): Likewise.
+ (gen_intv_fp_libfunc, gen_int_fp_fixed_libfunc): Likewise.
+ (gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc): Likewise.
+ (gen_int_signed_fixed_libfunc): Likewise.
+ (gen_int_unsigned_fixed_libfunc): Likewise.
+ (gen_interclass_conv_libfunc, gen_int_to_fp_conv_libfunc): Likewise.
+ (gen_ufloat_conv_libfunc): Likewise.
+ (gen_int_to_fp_nondecimal_conv_libfunc): Likewise.
+ (gen_fp_to_int_conv_libfunc, gen_intraclass_conv_libfunc): Likewise.
+ (gen_trunc_conv_libfunc, gen_extend_conv_libfunc): Likewise.
+ (gen_fract_conv_libfunc, gen_fractuns_conv_libfunc): Likewise.
+ (gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): Likewise.
+ (debug_optab_libfuncs): Update for optab representation change.
+ * optabs.h: Include insn-opinit.h.
+ (optab, convert_optab, direct_optab): New typedefs.
+ (struct optab_handlers, struct widening_optab_handlers): Remove.
+ (struct optab_libcall_d): Rename from optab_d; remove code_,
+ handlers, widening members.
+ (struct convert_optab_libcall_d): Rename from convert_optab_d;
+ remove code_ and handlers members.
+ (enum optab_index, enum convert_optab_index): Remove.
+ (enum direct_optab_index): Remove.
+ (code_to_optab_): Fix array range.
+ (optab_to_code): Covert to inline function.
+ (optab_to_code_, convlib_def, normlib_def): Declare.
+ (raw_optab_handler, swap_optab_enable): Declare.
+ (unknown_optab): Remove; export to optabs.def
+ (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
+ usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
+ ssashl_optab, usashl_optab, add_optab, sub_optab, smul_optab,
+ addv_optab, subv_optab, smul_highpart_optab, umul_highpart_optab,
+ smul_widen_optab, umul_widen_optab, usmul_widen_optab,
+ smadd_widen_optab, umadd_widen_optab, ssmadd_widen_optab,
+ usmadd_widen_optab, smsub_widen_optab, umsub_widen_optab,
+ ssmsub_widen_optab, usmsub_widen_optab, sdiv_optab, smulv_optab,
+ sdivv_optab, sdivmod_optab, udiv_optab, udivmod_optab, smod_optab,
+ umod_optab, fmod_optab, remainder_optab, ftrunc_optab, and_optab,
+ ior_optab, xor_optab, ashl_optab, lshr_optab, ashr_optab, rotl_optab,
+ rotr_optab, vashl_optab, vlshr_optab, vashr_optab, vrotl_optab,
+ vrotr_optab, smin_optab, smax_optab, umin_optab, umax_optab, pow_optab,
+ atan2_optab, fma_optab, fms_optab, fnma_optab, fnms_optab, mov_optab,
+ movstrict_optab, movmisalign_optab, storent_optab, neg_optab,
+ negv_optab, abs_optab, absv_optab, one_cmpl_optab, bswap_optab,
+ ffs_optab, clz_optab, ctz_optab, clrsb_optab, popcount_optab,
+ parity_optab, sqrt_optab, sincos_optab, sin_optab, asin_optab,
+ cos_optab, acos_optab, exp_optab, exp10_optab, exp2_optab, expm1_optab,
+ ldexp_optab, scalb_optab, significand_optab, logb_optab, ilogb_optab,
+ log_optab, log10_optab, log2_optab, log1p_optab, floor_optab,
+ ceil_optab, btrunc_optab, round_optab, nearbyint_optab, rint_optab,
+ tan_optab, atan_optab, copysign_optab, signbit_optab, isinf_optab,
+ cmp_optab, ucmp_optab, eq_optab, ne_optab, gt_optab, ge_optab,
+ lt_optab, le_optab, unord_optab, strlen_optab, cbranch_optab,
+ cmov_optab, cstore_optab, ctrap_optab, push_optab, addcc_optab,
+ reduc_smax_optab, reduc_umax_optab, reduc_smin_optab, reduc_umin_optab,
+ reduc_splus_optab, reduc_uplus_optab, ssum_widen_optab,
+ usum_widen_optab, sdot_prod_optab, udot_prod_optab, vec_set_optab,
+ vec_extract_optab, vec_init_optab, vec_shl_optab, vec_shr_optab,
+ vec_realign_load_optab, vec_widen_umult_hi_optab,
+ vec_widen_umult_lo_optab, vec_widen_smult_hi_optab,
+ vec_widen_smult_lo_optab, vec_widen_umult_even_optab,
+ vec_widen_umult_odd_optab, vec_widen_smult_even_optab,
+ vec_widen_smult_odd_optab, vec_widen_ushiftl_hi_optab,
+ vec_widen_ushiftl_lo_optab, vec_widen_sshiftl_hi_optab,
+ vec_widen_sshiftl_lo_optab, vec_unpacks_hi_optab, vec_unpacks_lo_optab,
+ vec_unpacku_hi_optab, vec_unpacku_lo_optab, vec_unpacks_float_hi_optab,
+ vec_unpacks_float_lo_optab, vec_unpacku_float_hi_optab,
+ vec_unpacku_float_lo_optab, vec_pack_trunc_optab, vec_pack_ssat_optab,
+ vec_pack_usat_optab, vec_pack_sfix_trunc_optab,
+ vec_pack_ufix_trunc_optab, powi_optab, sync_compare_and_swap_optab,
+ sync_lock_test_and_set_optab, sync_old_add_optab, sync_old_sub_optab,
+ sync_old_ior_optab, sync_old_and_optab, sync_old_xor_optab,
+ sync_old_nand_optab, sync_new_add_optab, sync_new_sub_optab,
+ sync_new_ior_optab, sync_new_and_optab, sync_new_xor_optab,
+ sync_new_nand_optab, sext_optab, zext_optab, trunc_optab, sfix_optab,
+ ufix_optab, sfixtrunc_optab, ufixtrunc_optab, sfloat_optab,
+ ufloat_optab, lrint_optab, lround_optab, lfloor_optab, lceil_optab,
+ fract_optab, fractuns_optab, satfract_optab, satfractuns_optab,
+ vec_load_lanes_optab, vec_store_lanes_optab, vcond_optab, vcondu_optab,
+ movcc_optab, reload_in_optab, reload_out_optab, movmem_optab,
+ setmem_optab, cmpstr_optab, cmpstrn_optab, cmpmem_optab,
+ sync_lock_release_optab, sync_add_optab, sync_sub_optab,
+ sync_ior_optab, sync_and_optab, sync_xor_optab, sync_nand_optab,
+ atomic_exchange_optab, atomic_compare_and_swap_optab,
+ atomic_load_optab, atomic_store_optab, atomic_add_fetch_optab,
+ atomic_sub_fetch_optab, atomic_and_fetch_optab,
+ atomic_nand_fetch_optab, atomic_xor_fetch_optab, atomic_or_fetch_optab,
+ atomic_fetch_add_optab, atomic_fetch_sub_optab, atomic_fetch_and_optab,
+ atomic_fetch_nand_optab, atomic_fetch_xor_optab, atomic_fetch_or_optab,
+ atomic_add_optab, atomic_sub_optab, atomic_and_optab,
+ atomic_nand_optab, atomic_xor_optab, atomic_or_optab,
+ atomic_always_lock_free_optab, atomic_is_lock_free_optab,
+ atomic_thread_fence_optab, atomic_signal_fence_optab,
+ vec_perm_optab, vec_perm_const_optab): Likewise.
+ (struct target_optabs): Remove x_optab_table, x_convert_optab_table,
+ and x_direct_optab_table members; add pat_enable.
+ (optab_table, convert_optab_table, direct_optab_table): Remove.
+ (optab_handler): Use raw_optab_handler.
+ (widening_optab_handler, convert_optab_handler): Likewise.
+ (set_optab_handler, set_widening_optab_handler): Remove.
+ (set_convert_optab_handler, set_direct_optab_handler): Remove.
+ (direct_optab_handler): Defer to optab_handler.
+ * rtl.h (NON_GENERATOR_NUM_RTX_CODE): New.
+
+2012-07-24 Jason Merrill <jason@redhat.com>
+
+ * bitmap.c (bitmap_descriptor): Adjust order of parameters to
+ match MEM_STAT_DECL.
+ * statistics.h (ALONE_FINAL_MEM_STAT_DECL): Correct typo.
+
+2012-07-24 Richard Henderson <rth@redhat.com>
+
+ * optabs.h (struct optab_d): Rename code member to code_.
+ (struct convert_optab_h): Likewise.
+ (code_to_optab_): Rename from code_to_optab.
+ (code_to_optab, optab_to_code): New.
+ * dojump.c (do_compare_rtx_and_jump): Use code_to_optab.
+ * ifcvt.c (noce_emit_move_insn): Likewise.
+ * optabs.c (simplify_expand_binop): Use optab_to_code.
+ (expand_simple_binop, shift_optab_p, commutative_optab_p): Likewise.
+ (avoid_expensive_constant, expand_binop_directly): Likewise.
+ (expand_binop, expand_simple_unop, expand_unop_direct): Likewise.
+ (expand_unop, prepare_float_lib_cmp, expand_fixed_convert): Likewise.
+ (have_insn_for, debug_optab_libfuncs): Likewise.
+ (init_optab, init_optabv, init_convert_optab): Update for optab
+ member name change.
+
+ * libfuncs.h: Include optabs.h.
+ * dwarf2out.c, lto-streamer.in.c: Don't include libfuncs.h.
+ * Makefile.in (LIBFUNCS_H): Add OPTABS_H.
+ (lto-streamer-in.o, dwarf2out.o): Update deps.
+
+ * optabs.h (unknown_optab): New.
+ * builtins.c (interclass_mathfn_icode): Use it.
+ * dojump.c (do_compare_rtx_and_jump): Likewise.
+ * optabs.c (optab_for_tree_code, expand_binop): Likewise.
+ * tree-vect-generic.c (add_rshift, expand_vector_divmod): Likewise.
+ (expand_vector_operations_1): Likewise.
+ * tree-vect-patterns.c (vect_recog_divmod_pattern): Likewise.
+ * tree-vect-stmts.c (supportable_narrowing_operation): Likewise.
+
+2012-07-24 Steven Bosscher <steven@gcc.gnu.org>
+
+ * alloc-pool.c (create_alloc_pool): Fix ENABLE_CHECKING check.
+
+2012-07-24 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ PR target/54051
+ * config/arm/arm.c (arm_print_operand_address): Remove superfluous
+ printing of 0.
+ * config/arm/neon.md ("neon_vld3_lane<mode>":VD): Remove alignment
+ specifier.
+ ("neon_vld3_lane<mode>":VMQ): Likewise.
+ ("neon_vld3_dup<mode>":VDX): Likewise.
+ ("neon_vst3_lane<mode>":VD): Likewise.
+ ("neon_vst3_lane<mode>":VMQ): Likewise.
+
+2012-07-24 Roland McGrath <mcgrathr@google.com>
+
+ * arm.c (arm_get_frame_offsets): Don't use fixed regs for
+ stack alignment padding.
+
+2012-07-24 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/53961
+ * config/i386/i386.c (ix86_legitimate_address_p): Move check for
+ negative constant address for TARGET_X32 ...
+ (ix86_decompose_address): ... here. Reject constant addresses
+ that don't satisfy x86_64_immediate_operand predicate.
+
+2012-07-24 Julian Brown <julian@codesourcery.com>
+
+ * doc/sourcebuild.texi (arm_hf_eabi): Document effective-target check.
+
+2012-07-24 Steven Bosscher <steven@gcc.gnu.org>
+
+ * sbitmap.h (SBITMAP_ELT_BITS): Use "1u" trick as for BITMAP_WORD_BITS.
+ Move test to check that there is a popcount function for the the number
+ of bits in SBITMAP_ELT_BITS to sbitmap.c.
+ * sbitmap.c: Test SBITMAP_ELT_BITS, not HOST_BITS_PER_WIDEST_FAST_INT.
+ MEM_STAT_INFO): Define in terms of their ALONE counterparts.
+
+ * configure.ac (GATHER_STATISTICS): Always define, non-zero if enabled.
+ * configure: Regenerate.
+ * statistics.h (GATHER_STATISTICS): Error out if it is not defined.
+ (GCC_MEM_STAT_ARGUMENTS): New define.
+ (ALONE_MEM_STAT_DECL): Define in terms of GCC_MEM_STAT_ARGUMENTS.
+ (ALONE_FINAL_MEM_STAT_DECL, ALONE_FINAL_PASS_MEM_STAT): New defines.
+ (MEM_STAT_DECL, FINAL_MEM_STAT_DECL, PASS_MEM_STAT,
+ FINAL_PASS_MEM_STAT): Define.
+ * ggc-internal.h (ggc_record_overhead): Use FINAL_MEM_STAT_DECL.
+ * ggc.h (ggc_record_overhead, ggc_free_overhead,
+ ggc_prune_overhead_list): Remove internal prototypes, they are defined
+ already in ggc-internal.h.
+ * ggc-common.c (struct loc_descriptor): Remove #ifdef GATHER_STATISTICS
+ wrappers.
+ (add_statistics): Likewise.
+ (dump_ggc_loc_statistics): Likewise. Return if GATHER_STATISTICS is 0.
+ * ggc-zone.c (struct page_entry): Remove #ifdef GATHER_STATISTICS
+ wrappers around "survived" and "stats" members.
+ (alloc_large_page): Always initialize survived.
+ (ggc_internal_alloc_zone_stat): Likewise.
+ Remove #ifdef GATHER_STATISTICS wrappers. Record overhead if
+ GATHER_STATISTICS is non-0.
+ (ggc_free): Convert #ifdef GATHER_STATISTICS to if-code.
+ (sweep_pages): Always increase survived.
+ (ggc_collect_1): Convert #ifdef GATHER_STATISTICS to if-code.
+ (calculate_average_page_survival): Always define.
+ (ggc_collect): Convert #ifdef GATHER_STATISTICS to if-code.
+ (ggc_print_statistics): Likewise.
+ (ggc_pch_read): Likewise.
+ * ggc-page.c (struct globals): Always define "stats" member.
+ (ggc_internal_alloc_stat): Convert #ifdef GATHER_STATISTICS to if-code.
+ (ggc_free): Likewise.
+ (ggc_collec): Likewise.
+ (ggc_print_statistics): Likewise.
+ * bitmap.h (struct bitmap_head_def): Always define "desc" member.
+ (bitmap_initialize_stat): Convert #ifdef GATHER_STATISTICS to if-code.
+ * gimple.h (enum gimple_alloc_kind): Always define.
+ (gimple_alloc_kind): Likewise.
+ * tree-flow.h (phinodes_print_statistics): Always define.
+ (ssanames_print_statistics): Likewise.
+ * vec.h (vec_heap_free): Always define.
+ (VEC_stack_alloc): Define if GATHER_STATISTICS is non-0.
+ * alloc-pool.c (alloc_pool_descriptor): Always define.
+ (create_alloc_pool): Convert #ifdef GATHER_STATISTICS to if-code.
+ (empty_alloc_pool): Likewise.
+ (pool_alloc): Likewise.
+ (pool_free): Likewise.
+ (dump_alloc_pool_statistics): Likewise.
+ (print_statistics): Always define.
+ * bitmap.c (struct bitmap_descriptor): Always define.
+ (bitmap_register): Pass ALONE_FINAL_PASS_MEM_STAT.
+ (register_overhead): Always define.
+ (bitmap_element_free): Convert #ifdef GATHER_STATISTICS to if-code.
+ (bitmap_element_allocate): Likewise.
+ (bitmap_elt_clear_from): Likewise.
+ (bitmap_obstack_alloc_stat): Likewise.
+ (bitmap_gc_alloc_stat): Likewise.
+ (bitmap_obstack_free): Likewise.
+ (bitmap_find_bit): Likewise.
+ (bitmap_ior_and_into): Likewise.
+ (bitmap_print): Likewise.
+ (dump_bitmap_statistics): Likewise. Return if GATHER_STATISTICS is 0.
+ * gimple.c (gimple_alloc_counts, gimple_alloc_sizes): Always define.
+ (gimple_alloc_kind_names): Likewise.
+ (gimple_alloc_stat): Convert #ifdef GATHER_STATISTICS to if-code.
+ (dump_gimple_statistics): Likewise. Return if GATHER_STATISTICS is 0.
+ * rtl.c (rtx_alloc_counts, rtx_alloc_sizes, rtvec_alloc_counts,
+ rtvec_alloc_sizes): Always define.
+ (rvec_alloc): Convert #ifdef GATHER_STATISTICS to if-code.
+ (rtx_alloc_stat): Likewise.
+ (dump_rtx_statistics): Likewise. Return if GATHER_STATISTICS is 0.
+ * tree.c (_obstack_allocated_p, tree_code_counts, tree_node_counts,
+ tree_node_sizes, tree_node_kind_names): Always define.
+ (record_node_allocation_statistics): Convert #ifdef GATHER_STATISTICS
+ to if-code.
+ (type_hash_canon): Likewise.
+ (dump_tree_statistics): Likewise.
+ * tree-ssanames.c (ssa_name_nodes_reused, ssa_name_nodes_created):
+ Always define.
+ (ssanames_print_statistics): Likewise.
+ (make_ssa_name_fn): Convert #ifdef GATHER_STATISTICS to if-code.
+ * tree-phinodes.c (phi_nodes_reused, phi_nodes_created): Always define.
+ (phinodes_print_statistics): Likewise.
+ (allocate_phi_node): Convert #ifdef GATHER_STATISTICS to if-code.
+ * vec.c (struct vec_descriptor): Always define.
+ (hash_descriptor, eq_descriptor, ptr_hash_entry, hash_ptr, eq_ptr,
+ vec_descriptor, rester_overhead, free_overhead): Likewise.
+ (cmp_statistic): Likewise.
+ (vec_heap_free): Convert #ifdef GATHER_STATISTICS to if-code.
+ (vec_heap_o_reserve_1): Likewise.
+ (dump_vec_loc_statistics): Likewise.
+
+2012-07-24 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53616
+ * tree-loop-distribution.c (ldist_gen): Do not change
+ partition ordering when merging partitions.
+
+2012-07-24 Alan Modra <amodra@gmail.com>
+
+ PR target/53914
+ PR target/54009
+ * config/rs6000/constraints.md (Y): Use mem_operand_gpr.
+ * config/rs6000/predicates.md (word_offset_memref_operand): Delete.
+ Adjust all rs6000_legitimate_offset_address_p calls.
+ * config/rs6000/rs6000-protos.h (mem_operand_gpr): Declare.
+ (rs6000_secondary_reload_gpr): Declare.
+ (rs6000_legitimate_offset_address_p): Update prototype.
+ (rs6000_offsettable_memref_p): Delete.
+ (rs6000_secondary_reload_ppc64): Delete.
+ * config/rs6000/rs6000.c (address_offset): New function.
+ (mem_operand_gpr): Likewise.
+ (rs6000_legitimate_offset_address_p): Add worst_case param. When
+ not worst_case assume class of regs with least restrictive offsets.
+ Adjust all calls.
+ (legitimate_lo_sum_address_p): Simplify register mode tests.
+ (rs6000_legitimize_address): Likewise. Assume best case offset
+ addressing. Combine ELF and MACHO lo_sum code.
+ (rs6000_mode_dependent_address): Correct offset addressing limits.
+ (rs6000_offsettable_memref_p): Make static, add reg_mode param.
+ Use reg_mode to help rs6000_legitimate_offset_address_p.
+ (rs6000_secondary_reload): Use address_offset. Handle 32-bit multi
+ gpr load/store when offset too large.
+ (rs6000_secondary_reload_gpr): Renamed rs6000_secondary_reload_ppc64.
+ (rs6000_split_multireg_move): Adjust rs6000_offsettable_memref_p calls.
+ * config/rs6000/rs6000.md (movdf_hardfloat32): Use 'Y' constraint
+ for gpr load/store. Order alternatives as r->Y,Y->r,r->r and
+ d->m,m->d,d->d. Correct size of gpr load/store.
+ (movdf_softfloat32): Use 'Y' constraint for gpr load/store. Order
+ alternatives.
+ (movti_ppc64): Likewise.
+ (movdi_internal32): Likewise. Also disparage fprs.
+ (movdi_mfpgpr, movdi_internal64): Likewise.
+ (movtf_internal): Use 'm' for fpr load/store. Order alternatives.
+ (movtf_softfloat): Order alternatives.
+ (extenddftf2_internal): Use 'm' and 'Y' for store.
+ (movti_power, movti_string): Use 'Y' for gpr load/store. Order.
+ (stack_protect_setdi, stack_protect_testdi): Likewise.
+ (movdf_hardfloat64_mfpgpr, movdf_hardfloat64): Order alternatives.
+ (movdf_softfloat64): Likewise.
+ (reload_<mode>_store): Adjust reload_di_store to provide
+ reload_si_store as well.
+ (reload_<mode>_load): Likewise.
+
+2012-07-23 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/predicates.md (general_movsrc_operand,
+ general_movdst_operand): Reject T_REG.
+ * config/sh/sh.md (*extendqisi2_compact_reg, *extendhisi2_compact_reg,
+ movsi_i, movsi_ie, movsi_i_lowpart, *movqi_reg_reg, *movhi_reg_reg):
+ Remove T_REG alternatives.
+ (*negtstsi): New insn.
+
+2012-07-23 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/53511
+ * config/sh/sh.md (mulsf3_ie): Delete.
+ (mulsf3_i4): Rename to mulsf3_i.
+ (mulsf3): Emit mulsf3_i insn.
+
+2012-07-23 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md (addc1, subc1): Delete.
+ (adddi3_compact): Use addc instead of addc1.
+ (subdi3_compact): Use subc instead of subc1.
+
+2012-07-23 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386-protos.h (ix86_lea_outperforms): Remove prototype.
+ * config/i386/i386.c (ix86_lea_outperforms): Make static. Make
+ split_cost argument signed.
+ (ix86_avoid_lea_for_add): Cleanup.
+ (ix86_use_lea_for_mov): Use INVALID_REGNUM instead of -1.
+ (ix86_avoid_lea_for_addr): Ditto. Make split_cost signed.
+ Use gen_lowpart instead of gen_rtx_SUBREG. Cleanup.
+
+2012-07-23 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * config/arm/arm.c (arm_reorg): Ensure all insns are split.
+
+2012-07-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/53961
+ * config/i386/i386.md (*lea): Add asserts to detect invalid addresses.
+ * config/i386/i386.c (ix86_print_operand_address): Ditto.
+ (ix86_decompose_address): Allow (zero_extend:DI (subreg:SI (...)))
+ addresses. Prevent zero extensions of CONST_INT operands.
+
+2012-07-23 Steven Bosscher <steven@gcc.gnu.org>
+
+ * sbitmap.h (struct int_list): Remove.
+ (sbitmap_intersect_of_predsucc, sbitmap_union_of_predsucc):
+ Remove prototypes of non-existing function.
+ (sbitmap_intersect_of_predecessors, sbitmap_intersect_of_successors,
+ sbitmap_union_of_predecessors, sbitmap_union_of_successors): Remove
+ unused defines.
+ (sbitmap_intersection_of_succs, sbitmap_intersection_of_preds,
+ sbitmap_union_of_succs, sbitmap_union_of_preds): Move prototypes to...
+ * basic-block.h: ... here.
+ * sbitmap.c: Do not include basic-block.h.
+ (sbitmap_intersection_of_succs, sbitmap_intersection_of_preds,
+ sbitmap_union_of_succs, sbitmap_union_of_preds): Move functions to...
+ * cfganal.c: ... here.
+ * bt-load.c (compute_out, link_btr_uses): Update for above changes.
+ * gcse.c (compute_code_hoist_vbeinout): Likewise.
+ * lcm.c (compute_antinout_edge, compute_available): Likewise.
+ * Makefile.in: Fix sbitmap.o dependencies.
+
+2012-07-23 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+ Nick Clifton <nickc@redhat.com>
+
+ * config/frv/frv-protos.h (frv_ifcvt_machdep_init): Prototype.
+ * config/frv/frv.c (frv_ifcvt_machdep_init): Change type of
+ (unused) parameter to void *.
+
+2012-07-23 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-alias.c (dump_alias_info): Walk over local decls
+ instead of referenced vars.
+
+2012-07-23 Steven Bosscher <steven@gcc.gnu.org>
+
+ * coverage.c: Refer to "notes file" instead of "graph file"
+ in all comments. Explain history of bbg prefix.
+ * gcov-io.h: Likewise.
+ * gcov.c: Likewise.
+ (find_source): Likewise in fnotice.
+ (read_graph_file): Likewise.
+ (read_count_file): Likewise.
+ * doc/gcov.texi: Document -fprofile-dir flag. Add "notes file"
+ and "data file" explicitly in the explanation of the files.
+
+2012-07-22 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR tree-optimization/53881
+ * tree-cfg.c (group_case_labels_stmt): Look up the basic block
+ for each label and compare them instead of labels.
+
+2012-07-22 Steven Bosscher <steven@gcc.gnu.org>
+
+ * opts.c (common_handle_option): Do not set
+ flag_value_profile_transformations for -fprofile-generate.
+ * profile.c (instrument_values): Use COUNTER_FOR_HIST_TYPE.
+ (BB_TO_GCOV_INDEX): Remove.
+ (output_location): Don't use it.
+ (branch_prob): Likewise. Don't fiddle with the index of
+ ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR. Use clear_aux_for_blocks.
+ (find_spanning_tree):
+ * gcov.c (struct function_info): Document that blocks 0 and 1
+ are the entry resp. exit blocks in gcov, too, like in GCC itself.
+ (solve_flow_graph): Use ENTRY_BLOCK and EXIT_BLOCK for special
+ blocks identification.
+ (output_lines): Likewise.
+ * value-prof.c (gimple_value_profile_transformations): Do not
+ test flag_value_profile_transformations again.
+ (gimple_ic_transform): Take a gimple_stmt_iterator like all other
+ transformation functions.
+ (gimple_values_to_profile):
+ Don't test flag_value_profile_transformations
+ * tree-profile.c (tree_profiling): Assert that the cgraph is in
+ the CGRAPH_STATE_IPA_SSA state.
+ Do not set, or look at, after_tree_profile.
+ * function.h (struct function): Remove after_tree_profile bit.
+ * omp-low.c (expand_omp_taskreg): Don't set after_tree_profile.
+ * tree-inline.c (initialize_cfun): Don't copy it.
+ * lto-streamer-out.c (output_struct_function_base): Don't stream it.
+ * lto-streamer-in.c (input_struct_function_base): Likewise.
+
+2012-07-22 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.h (TARGET_DYNSHIFT): New macro.
+ (SH_DYNAMIC_SHIFT_COST): Use it.
+ * config/sh/sh.c (expand_ashiftrt, shl_sext_kind): Likewise.
+ (sh_dynamicalize_shift_p): Add TARGET_DYNSHIFT condition.
+ Add sanity check for input value. Add function description.
+ * config/sh/sh.md (ashlsi3, ashlsi3_std, ashrsi3_d, lshrsi3,
+ lshrsi3_d): Use TARGET_DYNSHIFT.
+
+2012-07-22 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md (negc): Delete expander.
+ (*negc): Rename insn to negc.
+
+2012-07-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/53961
+ * config/i386/i386.md (*lea): New insn pattern.
+ (*lea_1): Remove.
+ (*lea<mode>_2): Ditto.
+ (*lea_{3,4,5,6}_zext): Ditto.
+ * config/i386/predicates.md (lea_address_operand): Do not reject
+ zero-extended address operands.
+ * config/i386/constraints.md (j): Remove address constraint.
+ * config/i386/i386.c (ix86_decompose_address): Allow SImode subreg
+ of an address.
+ (ix86_print_operand_address): Handle SImode subreg of an address.
+ (ix86_avoid_lea_for_addr): Reject zero-extended addresses for now.
+
+2012-07-22 Hans-Peter Nilsson <hp@axis.com>
+
+ Emit executable-stack note correctly for CRIS targets.
+ * config/cris/cris.c (cris_file_end): New function.
+ (TARGET_ASM_FILE_END): Define.
+
+2012-07-22 Chung-Lin Tang <cltang@codesourcery.com>
+ Maxim Kuvyrkov <maxim@codesourcery.com>
+ NetLogic Microsystems Inc.
+
+ * config/mips/mips.c (mips_issue_rate): Handle XLP.
+ * config/mips/mips.md: Include xlp.md.
+ * config/mips/xlp.md: New file.
+
+2012-07-21 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR gcov-profile/32543
+ * profile.c (branch_prob): Update total_num_edges_instrumented and
+ report the number of edges to instrument.
+
+2012-07-21 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md: Correct comment regarding clrt and sett insns.
+
+2012-07-21 Andrew Pinski <apinski@cavium.com>
+
+ * config/mips/mips.md (*popcountdi2_trunc): New pattern
+ to handle popcount of a truncation.
+
+2012-07-21 Andrew Pinski <apinski@cavium.com>
+
+ * config/mips/mips-protos.h (mips_expand_ext_as_unaligned_load):
+ Add a bool argument.
+ * config/mips/mips.c (mips_block_move_straight): Update call to
+ mips_expand_ext_as_unaligned_load.
+ (mips_expand_ext_as_unaligned_load): Add unsigned_p argument.
+ Accept DImode dest when the width is that of SImode.
+ * config/mips/mips.md (extv): Update call to
+ mips_expand_ext_as_unaligned_load.
+ (extzv): Likewise.
+
+2012-07-21 Andrew Pinski <apinski@cavium.com>
+
+ * config/mips/mips.c (mips_get_unaligned_mem): Copy *op after calling
+ adjust_address.
+
+2012-07-20 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * config/mips/mips.md (define_attr sync_*): Move before "type".
+ (define_attr "type"): New values "atomic" and "syncloop".
+ * config/mips/sync.md (atomic_exchange<mode>, atomic_fetch_add<mode>):
+ Set "type" attribute.
+ * config/mips/generic.md (generic_atomic, generic_syncloop):
+ New reservations.
+ * gcc/config/mips/10000.md, gcc/config/mips/20kc.md,
+ * gcc/config/mips/24k.md, gcc/config/mips/4130.md,
+ * gcc/config/mips/4k.md, gcc/config/mips/5400.md,
+ * gcc/config/mips/5500.md, gcc/config/mips/5k.md,
+ * gcc/config/mips/7000.md, gcc/config/mips/74k.md,
+ * gcc/config/mips/9000.md, gcc/config/mips/loongson2ef.md,
+ * gcc/config/mips/loongson3a.md, gcc/config/mips/octeon.md,
+ * gcc/config/mips/sb1.md, gcc/config/mips/sr71k.md,
+ * gcc/config/mips/xlr.md: Handle "atomic" and "syncloop" types.
+
+2012-07-20 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md: Group and sort shift related patterns.
+ (ashlsi3_n, *ashlhi3_n, lshrsi3_n): Remove length attributes.
+
+2012-07-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/cris.c (cris_asm_output_ident): Remove unused
+ local variables section_asm_op, size, buf.
+
+2012-07-20 Pat Haugen <pthaugen@us.ibm.com>
+ Steven Bosscher <steven@gcc.gnu.org>
+
+ * config/rs6000/power4.md (power4-store-update): Fix reservation.
+ (power4-three): Likewise.
+
+2012-07-20 Sameera Deshpande <sameera.deshpande@arm.com>
+ Greta Yorsh <Greta.Yorsh@arm.com>
+
+ * config/arm/arm.c (arm_cortex_a15_tune): New tune.
+ * config/arm/arm-cores.def (cortex-a15): Use it.
+
+2012-07-20 Sameera Deshpande <sameera.deshpande@arm.com>
+ Greta Yorsh <Greta.Yorsh@arm.com>
+
+ * config/arm/arm-protos.h (tune_params): Add prefer_ldrd_strd.
+ * config/arm/arm.c (arm_slowmul_tune): Initialize it.
+ (arm_fastmul_tune, arm_strongarm_tune): Likewise.
+ (arm_xscale_tune, arm_9e_tune, arm_v6t2_tune): Likewise.
+ (arm_cortex_tune, arm_cortex_a5_tune, arm_cortex_a9_tune): Likewise.
+ (arm_fa726te_tune): Likewise.
+
+2012-07-20 Richard Guenther <rguenther@suse.de>
+
+ * tree-dfa.c (collect_dfa_stats): Simplify.
+ * tree-ssa-structalias.c (compute_may_aliases): Do not dump
+ referenced vars.
+ * cfgexpand.c (estimated_stack_frame_size): Walk over local
+ decls instead of referenced vars.
+ * tree-ssa.c (delete_tree_ssa): Simplify.
+ * tree-tailcall.c (find_tail_calls): Walk over local decls
+ instead of referenced vars.
+ (add_virtual_phis): Remove.
+ (tree_optimize_tail_calls_1): Instead mark the virtual operand
+ for renaming.
+
+2012-07-20 Steven Bosscher <steven@gcc.gnu.org>
+
+ * basic-block.h (BB_FLAGS_TO_PRESERVE): New define.
+ (brief_dump_cfg): Update prototype to take flags argument.
+ (check_bb_profile): Remove prototype.
+ * tracer.c (tracer): Update brief_dump_cfg calls.
+ * cfghooks.c (dump_bb): Do not pass TDF_COMMENT to dump_bb_info.
+ Call dump_bb_info before and after the cfghook dump_bb. Terminate
+ the dump with a newline.
+ (dump_flow_info): Do not call check_bb_profile.
+ * cfg.c (clear_bb_flags): Update using BB_FLAGS_TO_PRESERVE.
+ (check_bb_profile): Make static. Take indent and flags arguments.
+ (dump_bb_info): Always dump loop depth. With TDF_DETAILS, call
+ check_bb_profile. Print one edge per line.
+ (brief_dump_cfg): Take a flags argument, and filter out
+ TDF_COMMENT and TDF_DETAILS.
+ * pretty-print.c (pp_base_newline): Set pp_needs_newline to false.
+ * gimple-pretty-print.c (dump_gimple_bb_header): Do not use
+ dump_bb_info here, it is already called from dump_bb. Idem for
+ check_bb_profile.
+ (dump_gimple_bb_footer): Likewise.
+ (gimple_dump_bb_buff): Call pp_flush after dump_gimple_stmt to
+ avoid broken dumps for statement histograms.
+ (gimple_dump_bb): Handle ENTRY_BLOCK and EXIT_BLOCK. Do
+ not call pp_flush here, the buffer should be empty.
+ * sched-rgn.c (debug_region): Pass TDF_BLOCKS to dump_bb.
+ * sched-vis.c (debug_bb_slim): Likewise.
+ * tree-cfg.c (remove_bb): Pass dump_flags to dump_bb.
+ (gimple_debug_bb): Pass TDF_BLOCKS to dump_bb.
+ (gimple_dump_cfg): Do brief_dump_cfg with TDF_COMMENT.
+ (dump_function_to_file): Do not call check_bb_profile on
+ ENTRY_BLOCK and EXIT_BLOCK, check_bb_profile doesn't handle them.
+ Use dump_bb instead of gimple_dump_bb.
+ (print_loops_bb): Use dump_bb instead of gimple_dump_bb.
+ * passes.c (execute_function_dump): Always call print_rtl_with_bb
+ for RTL dumps.
+ * cfgrtl.c (print_rtl_with_bb): Handle printing without an up-to-date
+ CFG. With TDF_BLOCKS and TDF_DETAILS, do DF dumps at the top and
+ bottom of each basic block.
+
+2012-07-20 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54031
+ * tree-ssa-ccp.c (get_value_from_alignment): Use
+ get_pointer_alignment_1.
+
+2012-07-20 Richard Guenther <rguenther@suse.de>
+
+ * tree-inline.c (add_local_variables): Remove check_var_ann
+ parameter and dead code.
+ (expand_call_inline): Adjust.
+ (tree_function_versioning): Likewise.
+
+2012-07-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/28656
+ * tree-vrp.c (nonnull_arg_p): Handle all nonnull attributes instead
+ of just the first one.
+
+2012-07-20 Richard Guenther <rguenther@suse.de>
+
+ * builtins.c (get_object_alignment_2): Correct offset handling
+ when using type alignment of a MEM_REF kind base.
+
+2012-07-20 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ PR target/53877
+ * config/i386/lzcntintrin.h (_lzcnt_u32): New.
+ (_lzcnt_u64): Ditto.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.md (adddi3_insn_sp32): Add earlyclobber.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-forwprop.c (combine_conversions): Punt if the RHS of the
+ defining statement is a SSA name that occurs in abnormal PHIs.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimple-fold.c (canonicalize_constructor_val): Strip only useless type
+ conversions.
+
+2012-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/53942
+ * function.c (assign_parm_setup_reg): Avoid zero/sign extension
+ directly from likely spilled non-fixed hard registers, move them
+ to pseudo first.
+
+2012-07-19 Steve Ellcey <sellcey@mips.com>
+
+ * config/mips/mips.c (mips_set_mips16_mode): Clear SYNCI_MASK in
+ MIPS16 mode.
+
+2012-07-19 Jason Merrill <jason@redhat.com>
+
+ PR debug/53235
+ * dwarf2out.c (get_die_parent): New.
+ (generate_type_signature): Use it.
+
+2012-07-19 Richard Henderson <rth@redhat.com>
+
+ * config/ia64/vect.md (smulv4hi3_highpart): New.
+ (umulv4hi3_highpart): New.
+ (vec_widen_smult_even_v4hi): Rename from pmpy2_even.
+ (vec_widen_smult_odd_v4hi): Rename from pmpy2_odd.
+ (udot_prodv8qi, sdot_prodv8qi): Remove.
+ (sdot_prodv4hi, udot_prodv4hi): Remove.
+ * config/ia64/ia64.c (ia64_expand_dot_prod_v8qi): Remove.
+ * config/ia64/ia64-protos.h: Update.
+
+ * tree-vect-patterns.c (vect_recog_divmod_pattern): Do not require
+ vectors larger than UNITS_PER_WORD.
+
+ * expr.c (store_constructor): Initialize icode with CODE_FOR_nothing.
+ * tree-vect-stmts.c (vectorizable_operation): Use LAST_INSN_CODE for
+ dummy != CODE_FOR_nothing value.
+
+2012-07-19 Uros Bizjak <ubizjak@gmail.com>
+
+ * doc/tm.texi.in (MODE_AFTER): Add entity as the first macro argument.
+ * doc/tm.texi: Regenerate.
+ * mode-switching.c (optimize_mode_switching): Update MODE_AFTER call.
+ * config/sh/sh.h (MODE_AFTER): Update.
+ * config/epiphany/epiphany.h (MODE_AFTER): Update.
+
+2012-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/54017
+ * tree-cfgcleanup.c (cleanup_omp_return): Remove.
+ (cleanup_tree_cfg_bb): Don't call it.
+ * omp-low.c (expand_omp_sections): Fix up the !exit_reachable case
+ handling.
+
+2012-07-19 Christian Bruel <christian.bruel@st.com>
+
+ PR target/54029
+ * config/sh/sh.c (gen_far_branch): Set JUMP_LABEL for return jumps.
+
+2012-07-19 Richard Guenther <rguenther@suse.de>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-ccp.c (valid_lattice_transition): Clarify comment
+ about transition from invariant to known bits.
+ (likely_value): Addresses with UNDEFINED components are UNDEFINED.
+
+2012-07-19 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53970
+ * tree-vect-data-refs.c (not_size_aligned): Avoid sign-compare warning.
+
+2012-07-19 Tristan Gingold <gingold@adacore.com>
+ Richard Henderson <rth@redhat.com>
+
+ * opts.c (finish_options): Handle UI_SEH.
+ * expr.c (build_personality_function): Handle UI_SEH.
+ * dwarf2out.c (dwarf2out_begin_prologue): Handle UI_SEH.
+ * coretypes.h (unwind_info_type): Add UI_SEH.
+ * config/i386/winnt.c (i386_pe_seh_emit_except_personality):
+ New function.
+ (i386_pe_seh_init_sections): Likewise.
+ * config/i386/cygming.h (TARGET_ASM_EMIT_EXCEPT_PERSONALITY): Define.
+ (TARGET_ASM_INIT_SECTIONS): Define.
+ * common/config/i386/i386-common.c (TARGET_EXCEPT_UNWIND_INFO): Define.
+ (i386_except_unwind_info): New function.
+
+2012-07-18 Maciej W. Rozycki <macro@codesourcery.com>
+ Chao-ying Fu <fu@mips.com>
+
+ * config/mips/mips.opt (mmcu): New option.
+ * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
+ _mips_mcu when TARGET_MCU.
+ (ASM_SPEC): Pass mcu options to the assembler.
+ * doc/invoke.texi (MIPS Options): Document -mmcu and -mno-mcu.
+
+2012-07-18 Ralf Corsépius <ralf.corsepius@rtems.org>
+
+ * config.gcc (v850-*-rtems*): New target.
+ * config/v850/rtems.h: New.
+ * config/v850/t-rtems: New.
+
+2012-07-18 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * doc/invoke.texi: Add -fhoist-adjacent-loads and -ftree-slsr to list
+ of flags controlling optimization; add -ftree-slsr to list of flags
+ enabled by default at -O; add -fhoist-adjacent-loads to list of flags
+ enabled by default at -O2; add -fvect-cost-model to list of flags
+ enabled by default at -O3; document -fhoist-adjacent-loads and
+ -ftree-slsr.
+ * opts.c (default_option): Make -ftree-slsr default at -O1 and above.
+ * gimple-ssa-strength-reduction.c (gate_strength_reduction): Use
+ flag_tree_slsr.
+ * common.opt: Add -ftree-slsr with flag_tree_slsr.
+
+2012-07-18 Jie Zhang <jzhang918@gmail.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * config/arm/arm.c (arm_rtx_costs_1): Adjust cost for CONST_VECTOR.
+ (arm_size_rtx_costs): Likewise.
+ (neon_valid_immediate): Add a case for double 0.0.
+
+2012-07-18 Andrew Stubbs <ams@codesourcery.com>
+ Mark Shinwell <shinwell@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp)
+ (*movdi_vfp_cortexa8, *movsf_vfp, *thumb2_movsf_vfp)
+ (*movdf_vfp, *thumb2_movdf_vfp, *movsfcc_vfp)
+ (*thumb2_movsfcc_vfp, *movdfcc_vfp, *thumb2_movdfcc_vfp): Add
+ neon_type.
+ * config/arm/arm.md (neon_type): Update comment.
+
+2012-07-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53970
+ * tree.h (contains_packed_reference): Remove.
+ * expr.c (contains_packed_reference): Likewise.
+ * tree-vect-data-refs.c (not_size_aligned): New function.
+ (vector_alignment_reachable_p): Use it.
+ (vect_supportable_dr_alignment): Likewise.
+
+2012-07-18 Richard Guenther <rguenther@suse.de>
+
+ * tree.h (get_object_or_type_alignment): Remove.
+ * builtins.c (get_object_alignment_2): New function copied from
+ get_object_alignment_1. Take extra argument to indicate whether
+ we take the address of EXP. Rework to use type alignment information
+ if not, and return whether the result is an approximation or not.
+ (get_object_alignment_1): Wrap around get_object_alignment_2.
+ (get_pointer_alignment_1): Call get_object_alignment_2 indicating
+ we take the address.
+ (get_object_or_type_alignment): Remove.
+ * expr.c (expand_assignment): Call get_object_alignment.
+ (expand_expr_real_1): Likewise.
+
+2012-07-18 Nick Clifton <nickc@redhat.com>
+
+ * doc/invoke.texi (ARM Options): Document -munaligned-access.
+
+2012-07-18 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md (mulsidi3, umulsidi3): Remove constraints in
+ expander. Use arith_reg_dest predicate.
+ (rotldi3, rotrdi3): Remove constraints in expander.
+ (adddi3_compact, subdi3_compact, mulsidi3_compact, umulsidi3_compact,
+ ashlsi3_n, *ashlhi3_n, ashrsi2_16, ashrsi2_31, lshrsi3_n): Convert to
+ insn_and_split.
+
+2012-07-18 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/33135
+ * config/sh/sh.opt (mieee): Use Var instead of Mask. Correct
+ description.
+ * config/sh/sh.c (sh_option_override): Do not change
+ flag_finite_math_only. Set TARGET_IEEE to complement of
+ flag_finite_math_only.
+ * doc/invoke.texi (SH options): Add mno-ieee. Correct description
+ of mieee and mno-ieee behavior.
+
+2012-07-18 Steven Bosscher <steven@gcc.gnu.org>
+
+ * graphite-poly.c (print_pbb_body): Fixup dump_bb call.
+
+2012-07-18 Steven Bosscher <steven@gcc.gnu.org>
+
+ * dumpfile.h (TDF_COMMENT): New define.
+ * basic-block.h (EDGE_FALLTHRU, EDGE_ABNORMAL, EDGE_ABNORMAL_CALL,
+ EDGE_EH, EDGE_FAKE, EDGE_DFS_BACK, EDGE_CAN_FALLTHRU,
+ EDGE_IRREDUCIBLE_LOOP, EDGE_SIBCALL, EDGE_LOOP_EXIT, EDGE_TRUE_VALUE,
+ EDGE_FALSE_VALUE, EDGE_EXECUTABLE, EDGE_CROSSING, EDGE_PRESERVE):
+ Move to new file cfg-flags.h.
+ (enum cfg_edge_flags): New enum, using cfg-flags.h.
+ (EDGE_ALL_FLAGS): Compute value automatically.
+ (BB_NEW, BB_REACHABLE, BB_IRREDUCIBLE_LOOP, BB_SUPERBLOCK,
+ BB_DISABLE_SCHEDULE, BB_HOT_PARTITION, BB_COLD_PARTITION,
+ BB_DUPLICATED, BB_NON_LOCAL_GOTO_TARGET, BB_RTL,
+ BB_FORWARDER_BLOCK, BB_NONTHREADABLE_BLOCK, BB_MODIFIED, BB_VISITED,
+ BB_IN_TRANSACTION): Move to new file cfg-flags.h.
+ (enum bb_flags): Rename to cfg_bb_flags. Use cfg-flags.h.
+ (BB_ALL_FLAGS): New, compute value automatically.
+ (dump_bb_info): Update prototype.
+ (dump_edge_info): Update prototype.
+ * cfg-flags.h: New file.
+ * cfg.c (dump_edge_info): Take flags argument. Be verbose only if
+ TDF_DETAILS and not TDF_SLIM. Include cfg-flags.h for bitnames.
+ Check that the edge flags are within the range of EDGE_ALL_FLAGS.
+ (debug_bb): Update dump_bb call.
+ (dump_cfg_bb_info): Remove.
+ (dump_bb_info): New function. Use cfg-flags.h for bitnames.
+ Adjust verbosity using TDF_* flags. Check that the basic block flags
+ are within the range of BB_ALL_FLAGS.
+ (brief_dump_cfg): Use dump_bb_info instead of dump_cfg_bb_info.
+ * cfghooks.h (struct cfghooks): Update dump_bb hook, take a FILE
+ first for consistency with other dump functions.
+ (dump_bb): Update prototype accordingly.
+ * cfghooks.c: Include dumpfile.h.
+ (verify_flow_info): Update dump_edge_info calls.
+ (dump_bb): Take a flags argument and pass it around.
+ Use dump_bb_info to dump common information about a basic block.
+ (dump_flow_info): Moved here from cfgrtl.c. Make IL agnostic.
+ (debug_flow_info): Moved here from cfgrtl.c.
+ * profile.c (is_edge_inconsistent): Update dump_bb calls.
+ * loop-invariant.c (find_defs): Update print_rtl_with_bb call.
+ * rtl.h (debug_bb_n_slim, debug_bb_slim, print_rtl_slim,
+ print_rtl_slim_with_bb): Remove prototypes.
+ (dump_insn_slim): Adjust prototype to take a const_rtx.
+ (print_rtl_with_bb): Adjust prototype.
+ * sched-rgn.c (debug_region): Use dump_bb instead of debug_bb_n_slim.
+ * sched-vis.c (dump_insn_slim): Take a const_rtx.
+ (debug_insn_slim): Prototype here near DEBUG_FUNCTION marker.
+ (print_rtl_slim_with_bb): Remove.
+ (print_rtl_slim): Rename to debug_rtl_slim. Print only insn info,
+ not basic block info (print_rtl_with_bb with TDF_SLIM should be used
+ for that. Prototype here near DEBUG_FUNCTION marker.
+ (debug_bb_slim): Prototype here near DEBUG_FUNCTION marker.
+ Use dump_bb.
+ (debug_bb_n_slim): Prototype here near DEBUG_FUNCTION marker.
+ * tree-cfg.c (gimple_can_merge_blocks_p): Use EDGE_COMPLEX.
+ (remove_bb): Update dump_bb call.
+ (gimple_debug_bb): Use dump_bb.
+ (dump_function_to_file): Update gimple_dump_bb call.
+ (print_loops_bb): Likewise.
+ * tree-flow.h (gimple_dump_bb): Update prototype.
+ * gimple-pretty-print.c (dump_bb_header): Rename to
+ dump_gimple_bb_header. Write to a stream instead of a pretty
+ printer. Use dump_bb_info to dump basic block info.
+ (dump_bb_end): Rename to dump_gimple_bb_footer. Write to a
+ stream instead of a pretty printer. Use dump_bb_info.
+ (gimple_dump_bb_buff): Do not call dump_bb_header and dump_bb_end.
+ (gimple_dump_bb): Do it here with dump_gimple_bb_header and
+ dump_gimple_bb_footer.
+ * cfgrtl.c (rtl_dump_bb): Update prototype. Only dump DF if the
+ dump flags have TDF_DETAILS. Use dump_insn_slim if TDF_SLIM.
+ (print_rtl_with_bb): Take a flags argument and pass it around.
+ Use dump_insn_slim if TDF_SLIM.
+ (dump_bb_info): Removed and re-incarnated in cfg.c.
+ (dump_flow_info): Moved to cfghooks.c.
+ (debug_flow_info): Moved to cfghooks.c.
+ * passes.c (execute_function_dump): Unconditionally use
+ print_rtl_with_bb for RTL dumps, now that it understands TDF_SLIM.
+ * final.c (dump_basic_block_info): Update dump_edge_info calls.
+ * tree-vrp.c (dump_asserts_for): Likewise.
+ * ifcvt.c (if_convert): Unconditionally use print_rtl_with_bb.
+ * tree-if-conv.c (if_convertible_bb_p): Don't look at
+ EDGE_ABNORMAL_CALL, it has no meaning in the GIMPLE world.
+ * trans-mem.c (make_tm_edge): Don't set EDGE_ABNORMAL_CALL,
+ for the same reason.
+ * config/rl78/rl78.c (rl78_reorg): Update print_rtl_with_bb calls.
+
+2012-07-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-vect-data-refs.c (vect_get_new_vect_var): Add referenced
+ vars here, use create_tmp_reg where appropriate.
+ (vect_create_addr_base_for_vector_ref): Do not add referenced
+ vars here, use create_tmp_reg where appropriate.
+ (vect_create_data_ref_ptr): Likewise.
+ (vect_create_destination_var): Likewise.
+ (vect_permute_store_chain): Likewise.
+ (vect_permute_load_chain): Likewise.
+ * tree-vect-loop-manip.c (vect_create_cond_for_align_checks):
+ Likewise.
+ * tree-vect-loop.c (get_initial_def_for_induction): Likewise.
+ * tree-vect-patterns.c (vect_recog_temp_ssa_var): Likewise.
+ (vect_handle_widen_op_by_const): Likewise.
+ * tree-vect-stmts.c (vect_init_vector): Likewise.
+ (vectorizable_load): Likewise.
+
+2012-07-17 Tom de Vries <tom@codesourcery.com>
+
+ * hwint.c: Fix loop range.
+
+2012-07-17 Tom de Vries <tom@codesourcery.com>
+
+ * double-int.h (double_int_popcount): New inline function.
+ * hwint.c (popcount_hwi): New function.
+ * hwint.h (popcount_hwi): Declare function. New inline function.
+
+2012-07-17 Richard Henderson <rth@redhat.com>
+
+ * tree-vect-stmts.c (supportable_widening_operation): Remove decl
+ parameters.
+ (vectorizable_conversion): Update supportable_widening_operation call.
+ * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
+ (vect_recog_widen_shift_pattern): Likewise.
+ * tree-vectorizer.h: Update decl.
+
+2012-07-17 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+ Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * common/config/arm/arm-common.c (arm_option_optimization_table):
+ Enable -fsched-pressure by default while optimizing.
+ * config/arm/arm.c (arm_option_override): Use the alternate scheduler
+ pressure algorithm by default.
+
+2012-07-16 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.h (CONST_OK_FOR_I06): Delete.
+ (CONST_OK_FOR_I10): Move macro to ...
+ * config/sh/sh.c: ... here.
+ (sh_legitimate_index_p): Use satisfies_constraint_I06 instead of
+ CONST_OK_FOR_I06.
+
+2012-07-16 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md: Delete mov related define_peephole patterns.
+
+2012-07-16 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR c++/53919
+ * doc/install.texi (Installing GCC): Refer to instructions for
+ released versions. Fix hyphenation.
+
+2012-07-16 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * config/spu/spu.c (targetm): Move to bottom of file.
+ (spu_attribute_table): Likewise.
+ (spu_option_override, spu_init_builtins, spu_builtin_decl,
+ spu_scalar_mode_supported_p, spu_vector_mode_supported_p,
+ spu_legitimate_address_p, spu_addr_space_legitimate_address_p,
+ adjust_operand, get_pic_reg, need_to_save_reg, frame_emit_store,
+ frame_emit_load, frame_emit_add_imm, emit_nop_for_insn,
+ insn_clobbers_hbr, spu_emit_branch_hint, spu_emit_vector_compare,
+ get_branch_target, spu_machine_dependent_reorg, spu_sched_issue_rate,
+ spu_sched_variable_issue, spu_sched_adjust_cost, spu_sched_init_global,
+ spu_sched_init, spu_sched_reorder, spu_handle_fndecl_attribute,
+ spu_handle_vector_attribute, spu_pass_by_reference, spu_function_arg,
+ spu_function_arg_advance, spu_build_builtin_va_list, spu_va_start,
+ spu_gimplify_va_arg_expr, store_with_one_insn_p, reg_aligned_for_addr,
+ spu_assemble_integer, spu_asm_globalize_label, spu_rtx_costs,
+ spu_function_ok_for_sibcall, spu_init_libfuncs, spu_return_in_memory,
+ spu_encode_section_info, spu_legitimize_address,
+ spu_addr_space_legitimize_address, spu_builtin_mask_for_load,
+ spu_builtin_vectorization_cost, spu_vector_alignment_reachable,
+ spu_addr_space_pointer_mode, spu_addr_space_address_mode,
+ spu_addr_space_subset_p, spu_addr_space_convert, spu_sms_res_mii,
+ spu_section_type_flags, spu_select_section, spu_unique_section,
+ spu_trampoline_init, spu_conditional_register_usage,
+ spu_ref_may_alias_errno, spu_output_mi_thunk, spu_unwind_word_mode,
+ spu_libgcc_cmp_return_mode, spu_libgcc_shift_count_mode,
+ spu_setup_incoming_varargs): Remove prototypes.
+ (spu_legitimize_address): Add "static" to definition.
+
+2012-07-16 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/rtmintrin.h (_xabort): Remove trailing semicolon.
+
+2012-07-16 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * tree-ssa-ccp.c (optimize_unreachable): Check gsi_end_p
+ before calling gsi_stmt.
+
+2012-07-16 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ Revert
+ 2012-07-16 Sergey Melnikov <sergey.melnikov@intel.com>
+
+ * config/i386/i386.md (stack_protect_set): Disable the pattern
+ for Android since Android libc (bionic) does not provide random
+ value for stack protection guard at gs:0x14. Guard value
+ will be provided from external symbol (default implementation).
+ (stack_protect_set_<mode>): Likewise.
+ (stack_protect_test): Likewise.
+ (stack_protect_test_<mode>): Likewise.
+
+2012-07-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/53959
+ PR bootstrap/53963
+ * gimple.c (gimple_types_compatible_p_1): Restore type attribute
+ comparison.
+
+2012-07-16 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * opts.c (default_option): Add -fvect-cost-model to default options
+ at -O3 and above.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * graphite-clast-to-gimple.c, graphite-dependences.c,
+ graphite-sese-to-poly.c: Include tree-pass.h instead of dumpfile.h
+ for pass TODO flags.
+ * Makefile.in: Fix dependencies.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * haifa-sched.c (init_before_recovery): Do not set EDGE_CAN_FALLTHRU.
+ * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
+
+ * function.c (stack_protect_epilogue): Use expand_call to expand
+ targetm.stack_protect_fail.
+ * stmt.c (expand_expr_stmt): Remove now-unused function.
+ * tree.h (expand_expr_stmt): Remove prototype.
+ * doc/tm.texi.in (TARGET_STACK_PROTECT_FAIL): Document that this
+ hook must return a CALL_EXPR.
+ * doc/tm.texi: Regenerate.
+
+ * emit-rtl.c (emit_label_before): Do not allow the same label
+ to be emitted twice.
+ (emit_label_after): Likewise.
+ (emit_label): Likewise.
+
+ * flags.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED,
+ TYPE_OVERFLOW_TRAPS, POINTER_TYPE_OVERFLOW_UNDEFINED): Move to tree.h.
+ * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED,
+ TYPE_OVERFLOW_TRAPS, POINTER_TYPE_OVERFLOW_UNDEFINED): New home.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * system.h (dump_file): Do not define.
+ * tree-pass.h: Include dumpfile.h, which is a new file containing...
+ (enum tree_dump_index, TDF_*, get_dump_file_name, dump_enabled_p,
+ dump_initialized_p, dump_begin, dump_end, dump_node, dump_switch_p,
+ dump_flag_name, dump_file, dump_flags, dump_file_name,
+ get_dump_file_info, struct dump_file_info): all of this, moved to...
+ * dumpfile.h: Here, new file.
+ * tree-dump.h: Include dumpfile.h, but not tree-pass.h.
+ (dump_stmt): Remove prototype for C++ specific function.
+ (dump_enumerated_decls): Move prototype from here...
+ * tree-flow.h (dump_enumerated_decls): ... to here.
+ (get_ref_base_and_extent) Move prototype from here ...
+ * tree.h (get_ref_base_and_extent) ... to here.
+ * tree-ssa-live.c: Do not inclde tree-pretty-print.h, because
+ gimple-pretty-print.h is enough. Do not include tree-dump.h,
+ include timevar.h and dumpfile.h instead.
+ (struct numbered_tree_d, compare_decls_by_uid,
+ dump_enumerated_decls_push, dump_enumerated_decls): Move from here ...
+ * tree-dfa.c:(struct numbered_tree_d, compare_decls_by_uid,
+ dump_enumerated_decls_push, dump_enumerated_decls):... to here.
+ Do not include timevar.h.
+ * tree.c: Do not include timevar.h.
+ * tree-cfg.c: Do not include langhooks.h, tree-pretty-print.h, and
+ timevar.h.
+ (dump_cfg_stats): Use current_function_name.
+ (gimple_cfg2vcg): Likewise.
+ (dump_function_to_file): Likewise.
+ * df-scan.c: Do not include tree-pass.h and timevar.h.
+ Include dumpfile.h.
+ (df_entry_block_bitmap_verify, df_exit_block_bitmap_verify): Do not
+ use print_current_pass.
+ * df-problems.c: Include dumpfile.h.
+ Always define REG_DEAD_DEBUGGING, avoid #ifdef code, because it
+ leads to errors in the code not selected.
+ (df_note_compute): Do not print_rtl_with_bb here. Fix compilation
+ bug if REG_DEAD_DEBUGGING is not 0, get_insns is not available here.
+ * lcm.c: Include dumpfile.h.
+ Remove obsolete include of insn-attr.h.
+ * dojump.c (do_compare_rtx_and_jump): Remove failure printing for
+ missing probability notes.
+ * stmt.c: Include dumpfile.h.
+ (emit_case_decision_tree): Re-enable printing expand details only
+ if TDF_DETAILS.
+ * alias.c, auto-inc-dec.c, bb-reorder.c, caller-save.c, cfg.c,
+ cfgcleanup.c, cfgexpand.c, cfgloop.c, cfgloopmanip.c, cgraph.c,
+ cgraphclones.c, cgraphunit.c, combine.c, combine-stack-adj.c,
+ coverage.c, cprop.c, cse.c, cselib.c, dbgcnt.c, dce.c, df-core.c,
+ dse.c, dwarf2out.c, emit-rtl.c, except.c, expr.c, final.c,
+ function.c, fwprop.c, gcse.c, gimple-fold.c,
+ gimple-pretty-print.c, gimple-ssa-strength-reduction.c,
+ gimplify.c, graphite-blocking.c, graphite-clast-to-gimple.c,
+ graphite-dependences.c, graphite-interchange.c,
+ graphite-optimize-isl.c, graphite-poly.c,
+ graphite-sese-to-poly.c, haifa-sched.c, hw-doloop.c, ifcvt.c,
+ ipa.c, ipa-cp.c, ipa-inline-analysis.c, ipa-inline.c,
+ ipa-inline-transform.c, ipa-prop.c, ipa-pure-const.c,
+ ipa-reference.c, ipa-split.c, ipa-utils.c, ira.c, ira-emit.c,
+ jump.c, loop-doloop.c, loop-init.c, loop-invariant.c, loop-iv.c,
+ loop-unroll.c, loop-unswitch.c, lower-subreg.c,
+ lto-section-out.c, lto-streamer-in.c, matrix-reorg.c, mcf.c,
+ mode-switching.c, modulo-sched.c, omega.c, omp-low.c, passes.c,
+ plugin.c, postreload.c, postreload-gcse.c, predict.c, print-rtl.c,
+ print-tree.c, profile.c, recog.c, ree.c, regcprop.c, reginfo.c,
+ regmove.c, regrename.c, reg-stack.c, reload1.c, reorg.c,
+ sched-rgn.c, sched-vis.c, sel-sched.c, sel-sched-ir.c,
+ store-motion.c, tracer.c, trans-mem.c, tree-affine.c,
+ tree-call-cdce.c, tree-cfgcleanup.c, tree-chrec.c,
+ tree-data-ref.c, tree-diagnostic.c, tree-dump.c,
+ tree-eh.c, tree-flow-inline.h, tree-if-conv.c, tree-into-ssa.c,
+ tree-mudflap.c, tree-nrv.c, tree-object-size.c,
+ tree-optimize.c, tree-outof-ssa.c, tree-predcom.c,
+ tree-pretty-print.c, tree-profile.c, tree-scalar-evolution.c,
+ tree-sra.c, tree-ssa-address.c, tree-ssa-alias.c, tree-ssa.c,
+ tree-ssa-ccp.c, tree-ssa-coalesce.c, tree-ssa-copy.c,
+ tree-ssa-copyrename.c,, tree-ssa-dce.c, tree-ssa-dom.c,
+ tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-ifcombine.c,
+ tree-ssa-loop.c, tree-ssa-loop-ch.c, tree-ssa-loop-im.c,
+ tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c,
+ tree-ssa-loop-manip.c, tree-ssa-loop-niter.c,
+ tree-ssa-loop-prefetch.c, tree-ssa-loop-unswitch.c,
+ tree-ssa-math-opts.c, tree-ssa-operands.c, tree-ssa-phiopt.c,
+ tree-ssa-phiprop.c, tree-ssa-pre.c, tree-ssa-propagate.c,
+ tree-ssa-reassoc.c, tree-ssa-sccvn.c, tree-ssa-sink.c,
+ tree-ssa-structalias.c, tree-ssa-tail-merge.c, tree-ssa-ter.c,
+ tree-ssa-threadedge.c, tree-ssa-threadupdate.c,
+ tree-ssa-uncprop.c, tree-ssa-uninit.c,
+ tree-switch-conversion.c, tree-tailcall.c,
+ tree-vect-data-refs.c, tree-vect-loop.c,
+ tree-vect-loop-manip.c, tree-vectorizer.c,
+ tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c,
+ tree-vrp.c, value-prof.c, var-tracking.c, web.c: Include tree-pass.h
+ only if needed. If tree-pass.h is included, do not include timevar.h
+ and dumpfile.h. If tree-pass.h is not included but dump_file, or
+ dump_flags, or the TDF_* flags are used, include dumpfile.h.
+ If gimple-pretty-print.h is included, don't include
+ tree-pretty-print.h. Remove assorted unnecessary includes.
+
+ * config/mn10300/mn10300.c, config/c6x/c6x.c, config/ia64/ia64.c,
+ config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
+ config/spu/spu.c, config/mep/mep.c, config/i386/i386.c:
+ Include dumpfile.h.
+ * config/rl78/rl78.c: Include dumpfile.h instead of tree-pass.h.
+ * arm/t-arm, avr/t-avr, i386/t-i386, ia64/t-ia64, mep/t-mep,
+ spu/t-spu-elf: Fix dependencies.
+
+2012-07-16 Dehao Chen <dehao@google.com>
+
+ Revert
+ 2012-07-10 Dehao Chen <dehao@google.com>
+
+ * tree.h (phi_arg_d): New field.
+ * tree-flow-inline.h (gimple_phi_arg_block): New function.
+ (gimple_phi_arg_block_from_edge): New function.
+ (gimple_phi_arg_set_block): New function.
+ (gimple_phi_arg_has_block): New function.
+ (redirect_edge_var_map_block): New function.
+ * tree-flow.h (_edge_var_map): New field.
+ * tree-ssa-live.c (remove_unused_locals): Mark phi_arg's block as used.
+ * tree-eh.c (cleanup_empty_eh_merge_phis): Add block debug info for
+ redirect_edge_var_map_add.
+ * tree-outof-ssa.c (_elim_graph): New field.
+ (insert_partition_copy_on_edge): New parameter.
+ (insert_value_copy_on_edge): New parameter.
+ (insert_rtx_to_part_on_edge): New parameter.
+ (insert_part_to_rtx_on_edge): New parameter.
+ (elim_graph_add_edge): New parameter.
+ (elim_graph_remove_succ_edge): New parameter.
+ (FOR_EACH_ELIM_GRAPH_SUCC): New parameter.
+ (FOR_EACH_ELIM_GRAPH_PRED): New parameter.
+ (new_elim_graph): Add block debug info.
+ (clear_elim_graph): Likewise.
+ (delete_elim_graph): Likewise.
+ (elim_graph_add_node): Likewise.
+ (elim_graph_add_edge): Likewise.
+ (elim_graph_remove_succ_edge): Likewise.
+ (eliminate_build): Likewise.
+ (elim_forward): Likewise.
+ (elim_unvisited_predecessor): Likewise.
+ (elim_backward): Likewise.
+ (elim_create): Likewise.
+ (eliminate_phi): Likewise.
+ (insert_backedge_copies): Likewise.
+ * tree-into-ssa.c (insert_phi_nodes_for): Add block debug info for
+ add_phi_arg.
+ (rewrite_add_phi_arguments): Likewise.
+ * tree-ssa-loop-im.c (execute_sm_if_changed): Likewise.
+ * tree-ssa-tail-merge.c (replace_block_by): Likewise.
+ * tree-ssa-threadupdate.c (copy_phi_args): Likewise.
+ * tree-loop-distribution.c (update_phis_for_loop_copy): Likewise.
+ * tree-ssa-loop-manip.c (create_iv): Likewise.
+ (add_exit_phis_edge): Likewise.
+ (split_loop_exit_edge): Likewise.
+ (copy_phi_node_args): Likewise.
+ (tree_transform_and_unroll_loop): Likewise.
+ * value-prof.c (gimple_ic): Likewise.
+ (gimple_stringop_fixed_value): Likewise.
+ * tree-tailcall.c (add_successor_phi_arg): Likewise.
+ (eliminate_tail_call): Likewise.
+ (create_tailcall_accumulator): Likewise.
+ (tree_optimize_tail_calls_1): Likewise.
+ * tree-phinodes.c (add_phi_arg): Likewise.
+ (make_phi_node): Likewise.
+ (resize_phi_node): Likewise.
+ (remove_phi_arg_num): Likewise.
+ * omp-low.c (expand_parallel_call): Likewise.
+ (expand_omp_for_static_chunk): Likewise.
+ * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop):
+ Likewise.
+ (slpeel_update_phi_nodes_for_guard1): Likewise.
+ (slpeel_update_phi_nodes_for_guard2): Likewise.
+ (slpeel_tree_duplicate_loop_to_edge_cfg): Likewise.
+ (set_prologue_iterations): Likewise.
+ (slpeel_tree_peel_loop_to_edge): Likewise.
+ (vect_loop_versioning): Likewise.
+ * tree-parloops.c (create_phi_for_local_result): Likewise.
+ (transform_to_exit_first_loop): Likewise.
+ (create_parallel_loop): Likewise.
+ * ipa-split.c (split_function): Likewise.
+ * tree-vect-loop.c (get_initial_def_for_induction): Likewise.
+ (vect_create_epilog_for_reduction): Likewise.
+ * tree-vect-data-refs.c (vect_setup_realignment): Likewise.
+ * graphite-scop-detection.c (canonicalize_loop_closed_ssa): Likewise.
+ * tree-ssa-phiopt.c (cond_store_replacement): Likewise.
+ (cond_if_else_store_replacement_1): Likewise.
+ * tree-cfgcleanup.c (remove_forwarder_block): Likewise.
+ (remove_forwarder_block_with_phi): Likewise.
+ * tree-ssa-pre.c (insert_into_preds_of_block): Likewise.
+ * tree-predcom.c (initialize_root_vars): Likewise.
+ (initialize_root_vars_lm): Likewise.
+ * sese.c (sese_add_exit_phis_edge): Likewise.
+ * tree-ssa-dce.c (forward_edge_to_pdom): Likewise.
+ * tree-ssa.c (flush_pending_stmts): Likewise.
+ (redirect_edge_var_map_add): Likewise.
+ (ssa_redirect_edge): Likewise.
+ * gimple-streamer-in.c (input_phi): Likewise.
+ * tree-vect-stmts.c (vectorizable_load): Likewise.
+ * tree-inline.c (copy_phis_for_bb): Likewise.
+ * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
+ * tree-switch-conversion.c (fix_phi_nodes): Likewise.
+ * tree-cfg.c (reinstall_phi_args): Likewise.
+ (gimple_make_forwarder_block): Likewise.
+ (add_phi_args_after_copy_edge): Likewise.
+ (gimple_duplicate_sese_tail): Likewise.
+
+2012-07-16 Sergey Melnikov <sergey.melnikov@intel.com>
+
+ * config/i386/i386.md (stack_protect_set): Disable the pattern
+ for Android since Android libc (bionic) does not provide random
+ value for stack protection guard at gs:0x14. Guard value
+ will be provided from external symbol (default implementation).
+ (stack_protect_set_<mode>): Likewise.
+ (stack_protect_test): Likewise.
+ (stack_protect_test_<mode>): Likewise.
+
+2012-07-16 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/cris-protos.h (cris_legitimate_address_p): Declare.
+ * config/cris/cris.h (CONSTANT_ADDRESS_P): Define in terms of
+ CONSTANT_P and cris_legitimate_address_p.
+ * config/cris/cris.c (cris_legitimate_address_p): Make non-static.
+ (cris_preferred_reload_class): Don't return GENERAL_REGS as
+ preferred to MOF_SRP_REGS.
+
+ * config/cris/cris.c (cris_init_libfuncs): Handle initialization
+ of library functions for basic atomic compare-and-swap.
+ * config/cris/cris.h (TARGET_ATOMICS_MAY_CALL_LIBFUNCS): New macro.
+ * config/cris/cris.opt (munaligned-atomic-may-use-library): New option.
+ * config/cris/sync.md ("atomic_fetch_<atomic_op_name><mode>")
+ ("cris_atomic_fetch_<atomic_op_name><mode>_1")
+ ("atomic_compare_and_swap<mode>")
+ ("cris_atomic_compare_and_swap<mode>_1"): Make conditional on
+ TARGET_ATOMICS_MAY_CALL_LIBFUNCS for sizes larger than byte.
+ * config/cris/cris.c (cris_print_operand) <case 'P', 'q'>: New cases.
+ * config/cris/sync.md (atomic_op_op_cnstr): New code_attr.
+ (atomic_op_op_pred): Ditto.
+ (atomic_op_mnem_pre_op2): Renamed from atomic_op_mnem_pre; to
+ reflect the change to include %2 in expansion. All callers changed.
+ (qm3): New mode_attr.
+ ("atomic_fetch_<atomic_op_name><mode>"): Use <atomic_op_op_pred>
+ as predicate for operand 2.
+ ("cris_atomic_fetch_<atomic_op_name><mode>_1"): Update FIXME. Use
+ "<atomic_op_op_pred>" "<atomic_op_op_cnstr>" for predicate and
+ constraint for operand 2.
+ ("atomic_compare_and_swap<mode>"): Add FIXME. Change predicate to
+ nonmemory_operand for operand 3.
+ ("cris_atomic_compare_and_swap<mode>_1"): Change operand 3 to
+ exclude memory. Improve emitted sync code for v10 and v32. Use
+ <qm3> instead of <m> for size designator for cmp.
+ ("atomic_compare_and_swap<mode>"): Change predicate to
+ nonmemory_operand for operand 3. Add FIXME.
+ ("cris_atomic_compare_and_swap<mode>_1"): Change predicates and
+ constraints for operand 3 to exclude memory.
+ ("atomic_fetch_<atomic_op_name><mode>")
+ ("atomic_compare_and_swap<mode>"): Gate expand_mem_thread_fence
+ calls on result of call to need_atomic_barrier_p.
+
+2012-07-15 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.md (move_type): Replace mfhilo and mthilo
+ with mflo and mtlo.
+ (type): Split mfhilo into mfhi and mflo. Split mthilo into mthi
+ and mtlo. Adjust move_type->type mapping.
+ (may_clobber_hilo): Split mthilo into mthi and mtlo.
+ (*movdi_32bit, *movdi_32bit_mips16, *movdi_64bit, *movdi_64bit_mips16)
+ (*mov<mode>_internal, *mov<mode>_mips16, *movhi_internal)
+ (*movhi_mips16, *movqi_internal, *movqi_mips16): Use mtlo and mflo
+ instead of mthilo and mfhilo.
+ (mfhi<GPR:mode>_<HILO:mode>): Use mfhi instead of mfhilo.
+ (mthi<GPR:mode>_<HILO:mode>): Use mthi instead of mthilo.
+ * config/mips/mips-dsp.md (mips_extr_w, mips_extr_r_w, mips_extr_rs_w)
+ (mips_extr_s_h, mips_extp, mips_extpdp, mips_shilo, mips_mthlip):
+ Use mflo instead of mfhilo.
+ * config/mips/10000.md (r10k_arith): Split mthilo.
+ (r10k_mfhi, r10k_mflo): Use mfhi and mflo directly.
+ * config/mips/sb1.md (ir_sb1_mfhi, ir_sb1_mflo): Likewise.
+ (ir_sb1_mthilo): Split mthilo into mthi and mtlo.
+ * config/mips/20kc.md (r20kc_imthilo, r20kc_imfhilo): Split
+ mthilo and mfhilo.
+ * config/mips/24k.md (r24k_int_mfhilo, r24k_int_mthilo): Likewise.
+ * config/mips/4130.md (vr4130_class, vr4130_mfhilo, vr4130_mthilo):
+ Likewise.
+ * config/mips/4k.md (r4k_int_mthilo, r4k_int_mfhilo): Likewise.
+ * config/mips/5400.md (ir_vr54_hilo): Likewise.
+ * config/mips/5500.md (ir_vr55_mthilo, ir_vr55_mfhilo): Likewise.
+ * config/mips/5k.md (r5k_int_mthilo, r5k_int_mfhilo): Likewise.
+ * config/mips/7000.md (rm7_mthilo, rm7_mfhilo): Likewise.
+ * config/mips/74k.md (r74k_int_mfhilo, r74k_int_mthilo): Likewise.
+ * config/mips/9000.md (rm9k_mfhilo, rm9k_mthilo): Likewise.
+ * config/mips/generic.md (generic_hilo): Likewise.
+ * config/mips/loongson2ef.md (ls2_alu): Likewise.
+ * config/mips/loongson3a.md (ls3a_mfhilo): Likewise.
+ * config/mips/octeon.md (octeon_imul_o1, octeon_imul_o2)
+ (octeon_mfhilo_o1, octeon_mfhilo_o2): Likewise.
+ * config/mips/sr71k.md (ir_sr70_hilo): Likewise.
+ * config/mips/xlr.md (xlr_hilo): Likewise.
+
+2012-07-14 Andrew Stubbs <ams@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * config/sh/sh.h (SH_ASM_SPEC): Add spaces between options.
+
+2012-07-14 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_set_reg_reg_cost): Enable TFmode/TCmode
+ for TARGET_SSE.
+
+2012-07-14 Steven Bosscher <steven@gcc.gnu.org>
+
+ * toplev.c (init_asm_output): Open asm_out_file in 'w' mode.
+
+2012-07-13 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ PR bootstrap/53955
+ * config/spu/spu.c (spu_init_cost): Mark static.
+ (spu_add_stmt_cost): Likewise.
+ (spu_finish_cost): Likewise.
+ (spu_destroy_cost_data): Likewise.
+ * config/i386/i386.c (ix86_init_cost): Mark static.
+ (ix86_add_stmt_cost): Likewise.
+ (ix86_finish_cost): Likewise.
+ (ix86_destroy_cost_data): Likewise.
+ * config/rs6000/rs6000.c (rs6000_init_cost): Mark static.
+ (rs6000_add_stmt_cost): Likewise.
+ (rs6000_finish_cost): Likewise.
+ (rs6000_destroy_cost_data): Likewise.
+
+2012-07-13 Steven Bosscher <steven@gcc.gnu.org>
+
+ * ggc.h (ggc_internal_alloc_stat, ggc_alloc_typed_stat,
+ ggc_internal_cleared_alloc_stat, ggc_cleared_alloc_htab_ignore_args,
+ ggc_cleared_alloc_ptr_array_two_args, ggc_splay_alloc): Add
+ ATTRIBUTE_MALLOC.
+ * alloc-pool.h (pool_alloc): Likewise.
+
+ * final.c (final): Do not loop to find max_uid.
+
+2012-07-13 Steven Bosscher <steven@gcc.gnu.org>
+
+ * emit-rtl.c (make_debug_insn_raw, make_jump_insn_raw): Make static.
+ * rtl.h (make_debug_insn_raw, make_jump_insn_raw): Remove prototypes.
+
+2012-07-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53907
+ * tree-ssa-forwprop.c (associate_pointerplus): New function.
+ (ssa_forward_propagate_and_combine): Call it.
+
+2012-07-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53922
+ * tree-vrp.c (value_inside_range): Change prototype to take
+ min/max instead of value-range.
+ (range_includes_zero_p): Likewise. Return the result from
+ value_inside_range.
+ (extract_range_from_binary_expr_1): Adjust to handle dont-know
+ return value from range_includes_zero_p.
+ (extract_range_from_unary_expr_1): Likewise.
+ (compare_range_with_value): Likewise.
+ (vrp_meet_1): Likewise.
+
+2012-07-13 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * doc/tm.texi: Regenerate.
+ * doc/tm.texi.in (TARGET_VECTORIZE_INIT_COST): New hook.
+ (TARGET_VECTORIZE_ADD_STMT_COST): Likewise.
+ (TARGET_VECTORIZE_FINISH_COST): Likewise.
+ (TARGET_VECTORIZE_DESTROY_COST_DATA): Likewise.
+ * targhooks.c (default_init_cost): New function.
+ (default_add_stmt_cost): Likewise.
+ (default_finish_cost): Likewise.
+ (default_destroy_cost_data): Likewise.
+ * targhooks.h (default_init_cost): New decl.
+ (default_add_stmt_cost): Likewise.
+ (default_finish_cost): Likewise.
+ (default_destroy_cost_data): Likewise.
+ * target.def (init_cost): New DEFHOOK.
+ (add_stmt_cost): Likewise.
+ (finish_cost): Likewise.
+ (destroy_cost_data): Likewise.
+ * target.h (struct _stmt_vec_info): New extern decl.
+ (stmt_vectype): Likewise.
+ (stmt_in_inner_loop_p): Likewise.
+ * tree-vectorizer.h (stmt_info_for_cost): New struct/typedef.
+ (stmt_vector_for_cost): New VEC/typedef.
+ (add_stmt_info_to_vec): New function.
+ (struct _slp_tree): Remove cost.inside_of_loop field.
+ (struct _slp_instance): Remove cost.inside_of_loop field; add
+ stmt_cost_vec field.
+ (SLP_INSTANCE_INSIDE_OF_LOOP_COST): Remove macro.
+ (SLP_INSTANCE_STMT_COST_VEC): New accessor macro.
+ (SLP_TREE_INSIDE_OF_LOOP_COST): Remove macro.
+ (struct _vect_peel_extended_info): Add stmt_cost_vec field.
+ (struct _loop_vec_info): Add target_cost_data field.
+ (LOOP_VINFO_TARGET_COST_DATA): New accessor macro.
+ (struct _bb_vec_info): Add target_cost_data field.
+ (BB_VINFO_TARGET_COST_DATA): New accessor macro.
+ (struct _stmt_vec_info): Remove cost.inside_of_loop field.
+ (STMT_VINFO_INSIDE_OF_LOOP_COST): Remove macro.
+ (stmt_vinfo_set_inside_of_loop_cost): Remove function.
+ (init_cost): New function.
+ (add_stmt_cost): Likewise.
+ (finish_cost): Likewise.
+ (destroy_cost_data): Likewise.
+ (vect_model_simple_cost): Change parameter list.
+ (vect_model_store_cost): Likewise.
+ (vect_model_load_cost): Likewise.
+ (record_stmt_cost): New extern decl.
+ (vect_get_load_cost): Change parameter list.
+ (vect_get_store_cost): Likewise.
+ * tree-vect-loop.c (new_loop_vec_info): Call init_cost.
+ (destroy_loop_vec_info): Call destroy_cost_data.
+ (vect_estimate_min_profitable_iters): Remove old calculation of
+ inside costs; call finish_cost instead.
+ (vect_model_reduction_cost): Call add_stmt_cost instead of old
+ inside-costs calculation.
+ (vect_model_induction_cost): Likewise.
+ * tree-vect-data-refs.c (vect_get_data_access_cost): Change to
+ return a stmt_vector_for_cost; modify calls to vect_get_load_cost
+ and vect_get_store_cost to obtain the value to return.
+ (vect_peeling_hash_get_lowest_cost): Obtain a stmt_cost_vec from
+ vect_get_data_access_cost and store it in the minimum peeling
+ structure.
+ (vect_peeling_hash_choose_best_peeling): Change the parameter list
+ to add a (stmt_vector_for_cost *) output parameter, and set its value.
+ (vect_enhance_data_refs_alignment): Ignore the new return value from
+ calls to vect_get_data_access_cost; obtain stmt_cost_vec from
+ vect_peeling_hash_choose_best_peeling and pass its contents to the
+ target cost model.
+ * tree-vect-stmts.c (stmt_vectype): New function.
+ (stmt_in_inner_loop_p): Likewise.
+ (record_stmt_cost): Likewise.
+ (vect_model_simple_cost): Add stmt_cost_vec parameter; call
+ record_stmt_cost instead of old calculation; don't call
+ stmt_vinfo_set_inside_of_loop_cost.
+ (vect_model_promotion_demotion_cost): Call add_stmt_cost instead of
+ old calculation; don't call stmt_vinfo_set_inside_of_loop_cost.
+ (vect_model_store_cost): Add stmt_cost_vec parameter; call
+ record_stmt_cost instead of old calculation; add stmt_cost_vec
+ parameter to vect_get_store_cost call; don't call
+ stmt_vinfo_set_inside_of_loop_cost.
+ (vect_get_store_cost): Add stmt_cost_vec parameter; call
+ record_stmt_cost instead of old calculation.
+ (vect_model_load_cost): Add stmt_cost_vec parameter; call
+ record_stmt_cost instead of old calculation; add stmt_cost_vec
+ parameter to vect_get_load_cost call; don't call
+ stmt_vinfo_set_inside_of_loop_cost.
+ (vect_get_load_cost): Add stmt_cost_vec parameter; call
+ record_stmt_cost instead of old calculation.
+ (vectorizable_call): Add NULL parameter to vect_model_simple_cost call.
+ (vectorizable_conversion): Likewise.
+ (vectorizable_assignment): Likewise.
+ (vectorizable_shift): Likewise.
+ (vectorizable_operation): Likewise.
+ (vectorizable_store): Add NULL parameter to vect_model_store_cost call.
+ (vectorizable_load): Add NULL parameter to vect_model_load_cost call.
+ (new_stmt_vec_info): Don't set STMT_VINFO_INSIDE_OF_LOOP_COST.
+ * config/spu/spu.c (TARGET_VECTORIZE_INIT_COST): New macro def.
+ (TARGET_VECTORIZE_ADD_STMT_COST): Likewise.
+ (TARGET_VECTORIZE_FINISH_COST): Likewise.
+ (TARGET_VECTORIZE_DESTROY_COST_DATA): Likewise.
+ (spu_init_cost): New function.
+ (spu_add_stmt_cost): Likewise.
+ (spu_finish_cost): Likewise.
+ (spu_destroy_cost_data): Likewise.
+ * config/i386/i386.c (ix86_init_cost): New function.
+ (ix86_add_stmt_cost): Likewise.
+ (ix86_finish_cost): Likewise.
+ (ix86_destroy_cost_data): Likewise.
+ (TARGET_VECTORIZE_INIT_COST): New macro def.
+ (TARGET_VECTORIZE_ADD_STMT_COST): Likewise.
+ (TARGET_VECTORIZE_FINISH_COST): Likewise.
+ (TARGET_VECTORIZE_DESTROY_COST_DATA): Likewise.
+ * config/rs6000/rs6000.c (TARGET_VECTORIZE_INIT_COST): New macro def.
+ (TARGET_VECTORIZE_ADD_STMT_COST): Likewise.
+ (TARGET_VECTORIZE_FINISH_COST): Likewise.
+ (TARGET_VECTORIZE_DESTROY_COST_DATA): Likewise.
+ (rs6000_init_cost): New function.
+ (rs6000_add_stmt_cost): Likewise.
+ (rs6000_finish_cost): Likewise.
+ (rs6000_destroy_cost_data): Likewise.
+ * tree-vect-slp.c (vect_free_slp_instance): Free stmt_cost_vec.
+ (vect_create_new_slp_node): Don't set SLP_TREE_INSIDE_OF_LOOP_COST.
+ (vect_get_and_check_slp_defs): Add stmt_cost_vec parameter; add
+ stmt_cost_vec parameter to vect_model_store_cost and
+ vect_model_simple_cost calls.
+ (vect_build_slp_tree): Remove inside_cost parameter; add stmt_cost_vec
+ parameter; add stmt_cost_vec parameter to vect_get_and_check_slp_defs,
+ vect_model_load_cost, and recursive vect_build_slp_tree calls; prevent
+ calculating cost more than once for loads; remove inside_cost
+ parameter from recursive vect_build_slp_tree calls; call
+ record_stmt_cost instead of old calculation.
+ (vect_analyze_slp_instance): Allocate stmt_cost_vec and save it with
+ the instance; free it on premature exit; remove inside_cost parameter
+ from vect_build_slp_tree call; add stmt_cost_vec parameter to
+ vect_build_slp_tree call; don't set SLP_INSTANCE_INSIDE_OF_LOOP_COST.
+ (new_bb_vec_info): Call init_cost.
+ (destroy_bb_vec_info): Call destroy_cost_data.
+ (vect_bb_vectorization_profitable_p): Call add_stmt_cost for each
+ statement recorded with an SLP instance; call finish_cost instead of
+ the old calculation.
+ (vect_update_slp_costs_according_to_vf): Record statement costs from
+ SLP instances, multiplying by the appropriate number of copies; don't
+ update SLP_INSTANCE_INSIDE_OF_LOOP_COST.
+
+2012-07-13 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53937
+ * builtins.c (get_pointer_alignment_1): Handle constant
+ pointers.
+
+2012-07-13 Richard Sandiford <rdsandiford@googlemail.com>
+ Steven Bosscher <steven@gcc.gnu.org>
+ Bernd Schmidt <bernds@codesourcery.com>
+
+ PR rtl-optimization/53908
+ * df-problems.c (can_move_insns_across): When doing
+ memory-reference book-keeping, handle call insns.
+
+2012-07-13 Richard Guenther <rguenther@suse.de>
+
+ * gimple.c (gimple_types_compatible_p_1): Remove redundant
+ type attribute comparisons.
+ (gimple_canonical_types_compatible_p): Likewise.
+
+2012-07-12 Hans-Peter Nilsson <hp@axis.com>
+
+ PR rtl-optimization/53176
+ * rtlanal.c (rtx_cost): Adjust default cost for X with a
+ UNITS_PER_WORD factor for all X according to the size of
+ its mode, not just for SUBREGs with untieable modes.
+ Handle SET. Use factor * factor for MULT, DIV, UDIV,
+ MOD, UMOD.
+
+2012-07-12 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (QImode and HImode cmove splitters): Merge
+ QImode and HImode splitters. Use ix86_comparison_operator.
+ Explicitly match FLAGS_REG.
+ (DFmode cmove splitter): Explicitly match FLAGS_REG.
+
+2012-07-11 Steven Bosscher <steven@gcc.gnu.org>
+
+ * expr.h (can_move_by_pieces): Move prototype from here ...
+ * tree.h (can_move_by_pieces): ... to here.
+ * optabs.h (set_widening_optab_handler): Use XCNEW.
+ * gimplify.c: Do not include expr.h.
+
+ * toplev.c: Do not include dwarf2out.h.
+ * config/ia64/ia64.c: Likewise.
+ * config/sparc/sparc.c: Likewise.
+ * config/sparc/t-sparc (sparc.o): Fix dependencies.
+
+ * Makefile.in (toplev.o): Fix dependencies
+ (c-family/c-gimplify.o): Likewise.
+ (c-family/c-common.o): Likewise.
+
+2012-07-11 Steven Bosscher <steven@gcc.gnu.org>
+
+ * basic-block.h (struct edge_def): Use basic_block instead of
+ basic_block_def *.
+ * cfgloop.h (struct loop_exit, struct loop): Likewise.
+ * gengenrtl.c (type_from_format): Likewise. Also for 'tree'
+ instead of union tree_node *.
+ * rtl.h (union rtunion_def, emit_insn_before_noloc,
+ emit_insn_after_noloc, add_insn_before, add_insn_after,
+ debug_bb_slim): Likewise.
+ * tree-inline.h (struct copy_body_data): Likewise.
+ * sched-rgn.c (dump_region_dot): Likewise.
+ * gimple.h (struct gimple_statement_base, gimple_set_bb,
+ gsi_move_to_bb_end): Likewise.
+ * sched-vis.c (debug_bb_slim): Likewise.
+ (debug_bb_n_slim): Likewise.
+ * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Likewise.
+ (mn10300_block_contains_call):
+
+2012-07-11 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ PR target/53859
+ * config/arm/arm.c (arm_early_load_addr_dep): Handle new
+ epilogue patterns.
+
+2012-07-11 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/extend.texi (Namespace Association): Alter cautionary text.
+
+2012-07-10 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/53911
+ * config/sh/sh.md: Remove displacement addresssing related splits.
+
+2012-07-10 Xinliang David Li <davidxl@google.com>
+
+ * doc/invoke.texi: New option documented.
+ * flag-types.h: New enum type.
+ * gimplify.c (gimplify_bind_expr): Control
+ clobber generation with new option.
+ (gimplify_target_expr): Ditto.
+ * common.opt: New option.
+
+2012-07-10 Julian Brown <julian@codesourcery.com>
+
+ * config/arm/arm.md (movsi): Don't split symbol refs here.
+ (define_split): New.
+
+2012-07-10 Andreas Schwab <schwab@linux-m68k.org>
+
+ PR bootstrap/53913
+ * config/m68k/m68k.c (m68k_epilogue_uses): New.
+ * config/m68k/m68k.h (EPILOGUE_USES): Use it.
+ * config/m68k/m68k-protos.h (m68k_epilogue_uses): Add prototype.
+
+2012-07-10 Richard Henderson <rth@redhat.com>
+
+ * target.def (builtin_mul_widen_even, builtin_mul_widen_odd): Remove.
+ * system.h (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Poison.
+ (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Poison.
+ * config/i386/i386.c (IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V4SI): Remove.
+ (IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V8SI): Remove.
+ (IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V4SI): Remove.
+ (IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V8SI): Remove.
+ (IX86_BUILTIN_VEC_WIDEN_SMUL_EVEN_V4SI): Remove.
+ (IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V4SI): Remove.
+ (IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V8SI): Remove.
+ (bdesc_args): Remove entries to match.
+ (ix86_builtin_mul_widen_even, ix86_builtin_mul_widen_odd): Remove.
+ (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Remove.
+ (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Remove.
+ * config/rs6000/rs6000.c (rs6000_builtin_mul_widen_even): Remove.
+ (rs6000_builtin_mul_widen_odd): Remove.
+ (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Remove.
+ (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Remove.
+ * config/spu/spu.c (spu_builtin_mul_widen_even): Remove.
+ (spu_builtin_mul_widen_odd): Remove.
+ (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Remove.
+ (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Remove.
+ * doc/tm.texi.in: Don't document the removed hooks.
+
+ * tree-vect-stmts.c (supportable_widening_operation): Expand
+ WIDEN_MULT_EXPR via VEC_WIDEN_MULT_EVEN/ODD_EXPR if possible.
+
+ * expmed.c (expmed_mult_highpart): Rename from expand_mult_highpart.
+ (expmed_mult_highpart_optab): Rename from expand_mult_highpart_optab.
+ * optabs.c (can_mult_highpart_p): New.
+ (expand_mult_highpart): New.
+ * expr.c (expand_expr_real_2) [MULT_HIGHPART_EXPR): Use it.
+ * tree-vect-generic.c (expand_vector_operations_1): Don't expand
+ by pieces if can_mult_highpart_p.
+ (expand_vector_divmod): Use can_mult_highpart_p and always
+ generate MULT_HIGHPART_EXPR.
+ * tree-vect-patterns.c (vect_recog_divmod_pattern): Likewise.
+ * tree-vect-stmts.c (vectorizable_operation): Likewise.
+
+ * config/spu/spu-builtins.md (spu_mpy): Move to spu.md.
+ (spu_mpyu, spu_mpyhhu, spu_mpyhh): Likewise.
+ * config/spu/spu.md (vec_widen_smult_odd_v8hi): Rename from spu_mpy.
+ (vec_widen_umult_odd_v8hi): Rename from spu_mpyu.
+ (vec_widen_smult_even_v8hi): Rename from spu_mpyhh.
+ (vec_widen_umult_even_v8hi): Rename from spu_mpyhhu.
+ * config/spu/spu-builtins.def: Update pattern names to match.
+
+ * config/rs6000/altivec.md (vec_widen_umult_even_v16qi): Rename
+ from altivec_vmuleub.
+ (vec_widen_smult_even_v16qi): Rename from altivec_vmulesb.
+ (vec_widen_umult_even_v8hi): Rename from altivec_vmuleuh.
+ (vec_widen_smult_even_v8hi): Rename from altivec_vmulesh.
+ (vec_widen_umult_odd_v16qi): Rename from altivec_vmuloub.
+ (vec_widen_smult_odd_v16qi): Rename from altivec_vmulosb.
+ (vec_widen_umult_odd_v8hi): Rename from altivec_vmulouh.
+ (vec_widen_smult_odd_v8hi): Rename from altivec_vmulosh.
+ * config/rs6000/rs6000-builtin.def: Update pattern names to match.
+
+ * config/i386/sse.md (vec_widen_umult_even_v8si): Rename from
+ avx2_umulv4siv4di3.
+ (vec_widen_umult_even_v4si): Rename from sse2_umulv2siv2di3.
+ (vec_widen_smult_even_v8si): Rename from avx2_mulv4siv4di3.
+ (mulv4si3): Remove XOP test shadowed by SSE4 test.
+ * config/i386/i386.c (bdesc_args): Update pattern names.
+ (ix86_expand_sse2_mulvxdi3): Likewise.
+ (ix86_expand_mul_widen_evenodd): Likewise. Remove XOP test
+ shadowed by SSE4 test.
+
+ * tree.def (VEC_WIDEN_MULT_EVEN_EXPR, VEC_WIDEN_MULT_ODD_EXPR): New.
+ * cfgexpand.c (expand_debug_expr): Handle them.
+ * expr.c (expand_expr_real_2): Likewise.
+ * fold-const.c (fold_binary_loc): Likewise.
+ * gimple-pretty-print.c (dump_binary_rhs): Likewise.
+ * optabs.c (optab_for_tree_code): Likewise.
+ * tree-cfg.c (verify_gimple_assign_binary): Likewise.
+ * tree-inline.c (estimate_operator_cost): Likewise.
+ * tree-pretty-print.c (dump_generic_node): Likewise.
+ * tree.c (commutative_tree_code): Likewise.
+ * tree-vect-generic.c (expand_vector_operations_1): Likewise.
+ Handle type change before looking up optab.
+ * optabs.h (OTI_vec_widen_umult_even, OTI_vec_widen_umult_odd): New.
+ (OTI_vec_widen_smult_even, OTI_vec_widen_smult_odd): New.
+ (vec_widen_umult_even_optab, vec_widen_umult_odd_optab): New.
+ (vec_widen_smult_even_optab, vec_widen_smult_odd_optab): New.
+ * genopinit.c (optabs): Initialize them.
+ * doc/md.texi: Document them.
+
+2012-07-10 Dehao Chen <dehao@google.com>
+
+ * tree.h (phi_arg_d): New field.
+ * tree-flow-inline.h (gimple_phi_arg_block): New function.
+ (gimple_phi_arg_block_from_edge): New function.
+ (gimple_phi_arg_set_block): New function.
+ (gimple_phi_arg_has_block): New function.
+ (redirect_edge_var_map_block): New function.
+ * tree-flow.h (_edge_var_map): New field.
+ * tree-ssa-live.c (remove_unused_locals): Mark phi_arg's block as used.
+ * tree-eh.c (cleanup_empty_eh_merge_phis): Add block debug info for
+ redirect_edge_var_map_add.
+ * tree-outof-ssa.c (_elim_graph): New field.
+ (insert_partition_copy_on_edge): New parameter.
+ (insert_value_copy_on_edge): New parameter.
+ (insert_rtx_to_part_on_edge): New parameter.
+ (insert_part_to_rtx_on_edge): New parameter.
+ (elim_graph_add_edge): New parameter.
+ (elim_graph_remove_succ_edge): New parameter.
+ (FOR_EACH_ELIM_GRAPH_SUCC): New parameter.
+ (FOR_EACH_ELIM_GRAPH_PRED): New parameter.
+ (new_elim_graph): Add block debug info.
+ (clear_elim_graph): Likewise.
+ (delete_elim_graph): Likewise.
+ (elim_graph_add_node): Likewise.
+ (elim_graph_add_edge): Likewise.
+ (elim_graph_remove_succ_edge): Likewise.
+ (eliminate_build): Likewise.
+ (elim_forward): Likewise.
+ (elim_unvisited_predecessor): Likewise.
+ (elim_backward): Likewise.
+ (elim_create): Likewise.
+ (eliminate_phi): Likewise.
+ (insert_backedge_copies): Likewise.
+ * tree-into-ssa.c (insert_phi_nodes_for): Add block debug info for
+ add_phi_arg.
+ (rewrite_add_phi_arguments): Likewise.
+ * tree-ssa-loop-im.c (execute_sm_if_changed): Likewise.
+ * tree-ssa-tail-merge.c (replace_block_by): Likewise.
+ * tree-ssa-threadupdate.c (copy_phi_args): Likewise.
+ * tree-loop-distribution.c (update_phis_for_loop_copy): Likewise.
+ * tree-ssa-loop-manip.c (create_iv): Likewise.
+ (add_exit_phis_edge): Likewise.
+ (split_loop_exit_edge): Likewise.
+ (copy_phi_node_args): Likewise.
+ (tree_transform_and_unroll_loop): Likewise.
+ * value-prof.c (gimple_ic): Likewise.
+ (gimple_stringop_fixed_value): Likewise.
+ * tree-tailcall.c (add_successor_phi_arg): Likewise.
+ (eliminate_tail_call): Likewise.
+ (create_tailcall_accumulator): Likewise.
+ (tree_optimize_tail_calls_1): Likewise.
+ * tree-phinodes.c (add_phi_arg): Likewise.
+ (make_phi_node): Likewise.
+ (resize_phi_node): Likewise.
+ (remove_phi_arg_num): Likewise.
+ * omp-low.c (expand_parallel_call): Likewise.
+ (expand_omp_for_static_chunk): Likewise.
+ * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop):
+ Likewise.
+ (slpeel_update_phi_nodes_for_guard1): Likewise.
+ (slpeel_update_phi_nodes_for_guard2): Likewise.
+ (slpeel_tree_duplicate_loop_to_edge_cfg): Likewise.
+ (set_prologue_iterations): Likewise.
+ (slpeel_tree_peel_loop_to_edge): Likewise.
+ (vect_loop_versioning): Likewise.
+ * tree-parloops.c (create_phi_for_local_result): Likewise.
+ (transform_to_exit_first_loop): Likewise.
+ (create_parallel_loop): Likewise.
+ * ipa-split.c (split_function): Likewise.
+ * tree-vect-loop.c (get_initial_def_for_induction): Likewise.
+ (vect_create_epilog_for_reduction): Likewise.
+ * tree-vect-data-refs.c (vect_setup_realignment): Likewise.
+ * graphite-scop-detection.c (canonicalize_loop_closed_ssa): Likewise.
+ * tree-ssa-phiopt.c (cond_store_replacement): Likewise.
+ (cond_if_else_store_replacement_1): Likewise.
+ * tree-cfgcleanup.c (remove_forwarder_block): Likewise.
+ (remove_forwarder_block_with_phi): Likewise.
+ * tree-ssa-pre.c (insert_into_preds_of_block): Likewise.
+ * tree-predcom.c (initialize_root_vars): Likewise.
+ (initialize_root_vars_lm): Likewise.
+ * sese.c (sese_add_exit_phis_edge): Likewise.
+ * tree-ssa-dce.c (forward_edge_to_pdom): Likewise.
+ * tree-ssa.c (flush_pending_stmts): Likewise.
+ (redirect_edge_var_map_add): Likewise.
+ (ssa_redirect_edge): Likewise.
+ * gimple-streamer-in.c (input_phi): Likewise.
+ * tree-vect-stmts.c (vectorizable_load): Likewise.
+ * tree-inline.c (copy_phis_for_bb): Likewise.
+ * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
+ * tree-switch-conversion.c (fix_phi_nodes): Likewise.
+ * tree-cfg.c (reinstall_phi_args): Likewise.
+ (gimple_make_forwarder_block): Likewise.
+ (add_phi_args_after_copy_edge): Likewise.
+ (gimple_duplicate_sese_tail): Likewise.
+
+2012-07-09 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/53886
+ * config/sh/sh.c (sequence_insn_p): New function.
+ (find_barrier, sh_insn_length_adjustment): Use it.
+
+2012-07-09 Iain Sandoe <iain@codesourcery.com>
+
+ PR target/53283
+ * config/i386/i386.c (ix86_fold_builtin): Call SUBTARGET_FOLD_BUILTIN
+ if defined.
+ * config/darwin.h: Rename TARGET_FOLD_BUILTIN to
+ SUBTARGET_FOLD_BUILTIN.
+ * config/rs6000/darwin.h: Map TARGET_FOLD_BUILTIN onto
+ SUBTARGET_FOLD_BUILTIN.
+
+2012-07-09 Iain Sandoe <iain@codesourcery.com>
+
+ * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Move NeXT
+ runtime exceptions model setting from here ...
+ * config/darwin.c (darwin_override_options): ... to here.
+
+2012-07-09 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR tree-optimization/53887
+ * tree-cfg.c (group_case_labels_stmt): Make non-static.
+ * tree-flow.h (group_case_labels_stmt): Add prototype.
+ * tree-switch-conversion.c (process_switch): Use group_case_labels_stmt
+ to pre-process every switch.
+
+2012-07-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/53882
+ * tree.c (type_contains_placeholder_1): Handle NULLPTR_TYPE.
+ (type_hash_eq): Likewise.
+
+2012-07-09 Tom de Vries <tom@codesourcery.com>
+ Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-ccp.c (optimize_unreachable): New function.
+ (execute_fold_all_builtins): Use optimize_unreachable to optimize
+ BUILT_IN_UNREACHABLE. Don't optimize after BUILT_IN_UNREACHABLE.
+
+2012-07-09 Richard Guenther <rguenther@suse.de>
+
+ PR bootstrap/53898
+ * graphite-optimize-isl.c: Make sure CU is not empty.
+
+2012-07-09 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gensupport.c (init_rtx_reader_args_cb): Start counting code
+ generating patterns from 1 to free up 0 for CODE_FOR_nothing.
+ * gencodes.c (main): Give CODE_FOR_nothing the value 0. Add
+ the LAST_INSN_CODE marker at the end.
+ * genoutput.c (nothing): New static struct data.
+ (idata): Initialize to &nothing.
+ (idata_end): Initialize to &nothing.next.
+ (init_insn_for_nothing): New function to create dummy 'nothing' insn.
+ (main): Use it.
+ * genpeep.c (insn_code_number): Remove global variable.
+ (gen_peephole): Take it as an argument instead.
+ (main): Take insn_code_number from read_md_rtx.
+ * optabs.h: Revert r161809:
+ (optab_handlers): Change type of insn_code back to insn_code.
+ (optab_handler, widening_optab_handler, set_optab_handler,
+ set_widening_optab_handler, convert_optab_handler,
+ set_convert_optab_handler, direct_optab_handler,
+ set_direct_optab_handler): Remove int casts.
+ Revert to treating the insn_code field as "insn_code".
+
+2012-07-08 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/sh.md (*return_i): Move trap_exit attribute check to ...
+ * config/sh/sh.c (sh_cfun_trap_exit_p): ... this new function.
+ * config/sh/sh-protos.h: Declare it.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * mcf.c: Do not include tm.h, tree.h, and langhooks.h.
+ (dump_fixup_graph): Use current_function_name.
+ (adjust_cfg_counts): Likewise.
+ * ira-conflicts.c: Do not include tree.h.
+ (ira_build_conflicts): Use REG_USERVAR_P instead of DECL_ARTIFICIAL.
+
+2012-07-08 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/sh.md (*branch_true_eq, *branch_false_ne, nott): New insns.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * basic-block.h: Re-group most prototypes per file.
+ (struct edge_list): Remove num_blocks field.
+ (dump_bb_info): Adjust prototypes.
+ (dump_reg_info): Move prototype to regs.h.
+ * function.h: Do not include tree.h.
+ Include vec.h, vecir.h, input.h and machmode.h to compensate.
+ (function_name): New prototype.
+ * gimple.h: Include tree.h to compensate for basic-block.h change.
+ * langhooks.h: Note that tree.h is only necessary for enum tree_code.
+ * regs.h (dump_reg_info): Prototype here.
+ * regset.h: Adjust file reference in comment.
+ (debug_regset): Remove prototype.
+ * rtl.h: Include flags.h for flag_var_tracking_assignments.
+ (MAY_HAVE_DEBUG_INSNS): Define as flag_var_tracking_assignments
+ instead of no-longer-available tree.h's MAY_HAVE_DEBUG_STMTS.
+ (dump_reg_info, dump_flow_info): Remove prototypes.
+ * bb-reorder.c (set_edge_can_fallthru_flag): Move from cfganal.c
+ to here, the only user. Make static.
+ (reorder_basic_blocks): Call dump_reg_info before dump_flow_info.
+ * cfg.c: Do not include tm.h, tree.h, rtl.h, hard-reg-set.h, regs.h,
+ flags.h, function.h, except.h, diagnostic-core.h, tm_p.h, timevar.h,
+ tree-pass.h, cfgloop.h, and tree-flow.h.
+ Include basic-block.h, the first header I'd expect to be included.
+ (reg_obstack): Move to df-core.c.
+ (free_edge): Remove bogus ATTRIBUTE_UNUSED.
+ (remove_edge_raw): Do not call tree-ssa's redirect_edge_var_map_clear.
+ (redirect_edge_succ_nodup): Move to cfghooks.c.
+ (dump_regset, debug_regset): Move to df-core.c.
+ (dump_bb_info): Move to cfgrtl.c.
+ (dump_reg_info): Move to regstat.c.
+ (dump_flow_info): Move to cfgrtl.c.
+ (debug_flow_info): Likewise.
+ (dump_edge_info): Do not look at cfun, a CFG without cfun is nonsense.
+ * cfganal.c: Do not include tm.h, rtl.h, obstack.h, hard-reg-set.h,
+ insn-config.h, recog.h, diagnostic-core.h, tm_p.h, and cfgloop.h.
+ (flow_active_insn_p, forwarder_block_p, can_fallthru,
+ could_fall_through): Move to cfgrtl.c.
+ (set_edge_can_fallthru_flag): Moved to bb-reorder.c.
+ (create_edge_list): Do not set edge_list's removed num_blocks.
+ (print_edge_list): Look at n_basic_blocks instead of num_blocks.
+ (flow_nodes_print): Remove.
+ (flow_edge_list_print): Remove.
+ (inverted_post_order_compute): Use FOR_ALL_BB.
+ * cfgrtl.c (dump_flow_info): Moved from cfg.c.
+ Do not call dump_reg_info.
+ (debug_flow_info): Moved from cfg.c
+ (dump_bb_info): Moved from cfg.c. Take 'verbose' argument
+ to avoid looking at TDF_* flags from tree-pass.h.
+ (flow_active_insn_p, forwarder_block_p, can_fallthru,
+ could_fall_through): Moved from cfganal.c.
+ (print_rtl_with_bb): Adjust dump_bb_info calls.
+ * cfghooks.c (redirect_edge_succ_nodup): Moved from cfg.c.
+ (remove_edge): Call redirect_edge_var_map_clear if IR_GIMPLE.
+ (cfgcleanup.c): Look at MAY_HAVE_DEBUG_INSNS, not MAY_HAVE_DEBUG_STMTS.
+ * cselib.c: Include tree.h with a FIXME.
+ * df-core.c (reg_obstack): Moved from cfg.c.
+ (dump_regset): Likewise.
+ (debug_regset): Likewise. Make a DEBUG_FUNCTION.
+ * final.c (compute_alignments): Call dump_reg_info before
+ dump_flow_info.
+ * function.c (function_name): New function.
+ (current_function_name): Use it.
+ * ifcvt.c (rest_of_handle_if_conversion): Call dump_reg_info before
+ dump_flow_info.
+ * ira-conflicts.c: Include tree.h with a note.
+ * regstat.c (dump_reg_info): Moved here from cfg.c.
+ * loop-init.c: Include regs.h instead of hard-reg-set.h.
+ (rtl_loop_init): Call dump_reg_info before dump_flow_info.
+ (rtl_loop_done): Likewise.
+ * mcf.c: Include tree.h before langhooks.h.
+ * predict.c (maybe_hot_count_p): Assert we have cfun.
+ (probably_never_executed_bb_p): Likewise.
+ * profile.c (compute_branch_probabilities): Use gimple_dump_cfg
+ instead of dump_flow_info.
+ * sched-deps.c: Include tree.h with a FIXME.
+ (call_may_noreturn_p): Add FIXME note why this function has to
+ look at function decls instead of function decl flags.
+ * sched-vis.c: Include tree.h with a FIXME.
+ (print_rtl_slim): Adjust dump_bb_info uses.
+ * statistics.c (statistics_fini_pass_2): Use current_function_name
+ to avoid including tree.h.
+ (statistics_counter_event): Use function_name for the same reason.
+ (statistics_histogram_event): Likewise.
+ * tracer.c (tracer): Remove bogus gcc_assert. Use brief_dump_cfg
+ instead of dump_flow_info.
+ * var-tracking.c (variable_tracking_main_1): Call dump_reg_info
+ before dump_flow_info.
+ * doc/cfg.texi: Update CFG documentation.
+ * Makefile.in (RTL_H): Depend on FLAGS_H.
+ (GIMPLE_H): Depend on TREE_H.
+ (FUNCTION_H): Depend on VEC_H, vecir.h, INPUT_H and MACHMODE_H,
+ but no longer on TREE_H.
+ (C_COMMON_H): Depend on TREE_H.
+ (cselib.o, cse.o, cfganal.o, loop-init.o, ira-conflicts.o,
+ sched-deps.o, sched-vis.o): Fixup dependencies.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * alias.h: Do not include coretypes.h in header files.
+ * cppbuiltin.h: Likewise.
+ * double-int.h: Likewise.
+ * gimple-fold.h: Likewise.
+ * flags.h: Likewise.
+ * tree-ssa-alias.h: Likewise.
+ * gengtype.h (obstack_chunk_alloc, obstack_chunk_free,
+ OBSTACK_CHUNK_SIZE): Define here to avoid dependency on coretypes.h.
+ * Makefile.in (RTL_BASE_H): Depend on coretypes.h.
+ (TREE_H): Likewise.
+ (ALIAS_H): Do not depend on coretypes.h.
+ (FLAGS_H): Likewise.
+ (realmpfr.o): Depend on coretypes.h.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * Makefile.in (gengtype-lex.o, gengtype-parse.o, gengtype-state.o,
+ gengtype.o): Add -DGENERATOR_FILE manually for host gengtype objects.
+
+2012-07-07 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.h (TARGET_CPU_CPP_BUILTINS): Remove Maverick support.
+ (TARGET_FPA): Delete definition.
+ (TARGET_MAVERICK): Likewise.
+ (TARGET_FPA_EMU2): Likewise.
+ (arm_fp_model): Remove FPA and Maverick models.
+ (arm_arch_cirrus): Delete declaration.
+ (FLOAT_WORDS_BIG_ENDIAN): Delete definition.
+ (FIXED_REGISTERS): Remove FPA and Maverick support. Reorganize.
+ (CALL_USED_REGISTERS): Likewise.
+ (FIRST_FPA_REGNUM, LAST_FPA_REGNUM): Delete definition.
+ (FIRST_VFP_REGNUM): Renumbered.
+ (D7_VFP_REGNUM): Chain definition.
+ (LAST_LO_VFP_REGNUM): Likewise.
+ (FIRST_HI_VFP_REGNUM): Likewise.
+ (LAST_HI_VFP_REGNUM): Likewise.
+ (FIRST_IWMMXT_GR_REGNUM): Likewise.
+ (LAST_IWMMXT_GR_REGNUM): Likewise.
+ (FIRST_IWMMXT_REGNUM): Likewise.
+ (LAST_IWMMXT_REGNUM): Likewise.
+ (FRAME_POINTER_REGNUM): Renumbered.
+ (ARG_POINTER_REGNUM): Renumbered.
+ (FIRST_PSEUDO_REGISTER): Remove FPA and Maverick registers.
+ (FIRST_CIRRUS_FP_REGNUM, LAST_CIRRUS_FP_REGNUM): Delete definitions.
+ (HARD_REGNO_REGNUM): Remove FPA support.
+ (REG_ALLOC_ORDER): Remove FPA and Maverick registers. Reorganize.
+ (reg_class): Likewise.
+ (REG_CLASS_NAMES): Likewise.
+ (REG_CLASS_CONTENTS): Likewise.
+ (CANNOT_CHANGE_MODE_CLASS): Never true. Update comment.
+ (SECONDARY_INPUT_RELOAD_CLASS): Remove Maverick support.
+ (CLASS_MAX_NREGS): Remove FPA and Maverick support.
+ * aout.h (REGISTER_NAMES): Remove FPA and Maverick registers.
+ Reorganize. Use AAPCS preferred names.
+ (ADDITIONAL_REGISTER_NAMES): Remove aliases for Maverick. Update
+ comments.
+ (OVERLAPPING_REGISTER_NAMES): Update register numbering.
+ * arm.c (FL_CIRRUS): Delete definition.
+ (arm_arch_cirrus): Delete variable.
+ (arm_float_words_big_endian): Delete function.
+ (cirrus_memory_offset): Delete function.
+ (output_mov_long_double_fpa_from_arm): Delete function.
+ (output_mov_long_double_arm_from_fpa): Delete function.
+ (output_mov_double_fpa_from_arm): Delete function.
+ (output_mov_double_arm_from_fpa): Delete function.
+ (emit_sfm): Delete function.
+ (maybe_get_arm_condition_code): Update comment.
+ (arm_file_start): Always use softvfp for softfloat systems.
+ (thumb_core_reg_alloc_order): Adjust for updated register allocation.
+ (arm_option_override): Remove FPA and Maverick support. Always
+ default to vfp as the fallback FPU format.
+ (use_return_insn): Remove FPA support.
+ (arm_get_frame_offsets): Likewise.
+ (arm_save_coproc_regs): Likewise.
+ (arm_canonicalize_comparison): Remove Maverick support.
+ (arm_select_cc_mode): Likewise.
+ (arm_gen_compare_reg): Likewise.
+ (arm_print_operand): Likewise.
+ (arm_libcall_value_1): Remove FPA and Maverick support.
+ (arm_function_value_regno_p): Likewise.
+ (arm_apply_result_size): Likewise.
+ (arm_legitimate_index_p): Likewise.
+ (thumb2_legitimate_index_p): Likewise.
+ (legitimize_reload_address): Likewise.
+ (arm_register_move_cost): Likewise.
+ (arm_hard_regno_mode_ok): Likewise.
+ (arm_regno_class): Likewise.
+ (arm_dbx_register_number): Likewise.
+ (arm_emit_unwind_sequence): Likewise.
+ (arm_conditional_register_usage): Likewise.
+ * arm-protos.h (neg_const_double_rtx_ok_for_fpa): Remove declaration.
+ (cirrus_memory_offset): Likewise.
+ (output_move_long_double_fpa_from_arm): Likewise.
+ (output_move_long_double_arm_from_fpa): Likewise.
+ (output_move_double_fpa_from_arm): Likewise.
+ (output_move_double_arm_from_fpa): Likewise.
+ (arm_float_words_big_endian): Likewise.
+ * arm.md (CC_REGNUM): Renumbered.
+ (VFPCC_REGNUM): Moved here. Renumbered.
+ (FPA_F0_REGNUM, FPA_F7_REGNUM): Delete.
+ (attr fpu): Remove FPA and Maverick support.
+ * vfp.md (VFPCC_REGNUM): Delete. Moved to arm.md.
+ * arm-cores.def (ep9312): Remove Maverick support.
+ * arm-arches.def (ep9312): Delete architecture.
+ * arm-tables.opt: Regenerated.
+
+ * arm/linux-elf.h (FPUTYPE_DEFAULT): Set to vfp.
+
+2012-07-07 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR tree-optimization/53881
+ * tree-switch-conversion.c (emit_case_bit_tests): Do not rely on
+ comparing labels to establish uniqueness of a switch case target,
+ use the CFG instead.
+
+2012-07-07 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * combine.c (force_to_mode) [LSHIFTRT]: Avoid undefined behaviour
+ due to negative shift amount.
+
+2012-07-07 Hans-Peter Nilsson <hp@axis.com>
+
+ Fix configure test for "stack protector support in target C library".
+ * configure.ac (test_prefix, test_exec_prefix): Move setting from
+ inside sysroot handling to before and outside it.
+ * configure: Regenerate.
+
+2012-07-06 Kai Tietz <ktietz@redhat.com>
+
+ PR bootstrap/52947
+ * config/i386/mingw32.h (NATIVE_SYSTEM_HEADER_DIR): Define it always
+ as "/mingw/include".
+
+2012-07-06 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/53820
+ * var-tracking.c (vt_add_function_parameter): Convert
+ internal_arg_pointer into arg_pointer-based address even
+ without DRAP.
+
+2012-07-06 Alexandre Oilva <aoliva@redhat.com>
+
+ PR rtl-optimization/53827
+ PR debug/53671
+ PR debug/49888
+ * alias.c (memrefs_conflict_p): Adjust offset and size by the
+ same amount for alignment ANDs.
+
+2012-07-06 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/51879
+ * tree-ssa-sccvn.c (copy_reference_ops_from_call)
+ (visit_reference_op_call): Handle case that lhs is not an SSA_NAME.
+ (visit_use): Also call visit_reference_op_call for calls with a vdef.
+
+2012-07-06 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/52009
+ * tree-ssa-tail-merge.c (gimple_equal_p): For GIMPLE_ASSIGN, compare
+ value numbers of gimple_vdef.
+ * tree-ssa-sccvn.h (vn_reference_insert): Add vdef parameter to
+ prototype.
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle MODIFY_EXPR.
+ (vn_reference_insert): Add and handle vdef parameter.
+ (visit_reference_op_load): Add argument to vn_reference_insert call.
+ (visit_reference_op_store): Find value number of vdef of store. Insert
+ value number of vdef of store.
+
+2012-07-06 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (simple lea to add peephole): Also transform
+ RTXes where second PLUS operand matches output.
+
+2012-07-06 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (construct_plt_address): Make static.
+ * config/i386/i386-protos.h (construct_plt_address): Remove.
+
+2012-07-06 Nick Clifton <nickc@redhat.com>
+
+ * config/mn10300/mn10300.c (mn10300_encode_section_info): Call
+ default_encode_section_info.
+
+2012-07-06 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/53853
+ * config/i386/i386.c (x86_output_mi_thunk): For CM_LARGE_PIC model,
+ emit PIC sequence for fnaddr symbol reference in advance.
+
+2012-07-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ Revert
+ 2012-06-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * dwarf2out.c (function_possibly_abstracted_p): New static function.
+ (gen_subprogram_die): Use it function_possibly_abstracted_p in lieu of
+ cgraph_function_possibly_inlined_p.
+ (gen_inlined_subroutine_die): Return if the origin is to be ignored.
+ (process_scope_var): Do not emit concrete instances of abstracted
+ nested functions from here.
+ (gen_decl_die): Emit the abstract instance if the function is possibly
+ abstracted and not only possibly inlined.
+ (dwarf2out_finish): Find the first non-abstract parent instance and
+ attach concrete instances on the limbo list to it.
+
+2012-07-05 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+ Julian Brown <julian@codesourcery.com>
+
+ PR target/48941
+ PR target/51980
+ * config/arm/neon-gen.ml (return_by_ptr): Delete.
+ (print_function): Handle empty strings.
+ (return): Delete use of return_by_ptr.
+ (mask_shape_for_shuffle): New function.
+ (mask_elems): Likewise.
+ (shuffle_fn): Likewise.
+ (params): Simplify and remove use of return_by_ptr.
+ (get_shuffle): New function.
+ (print_variant): Update.
+ * config/arm/neon.ml (rev_elems): New function.
+ (permute_range): Likewise.
+ (zip_range): Likewise.
+ (uzip_range): Likewise.
+ (trn_range): Likewise.
+ (zip_elems): Likewise.
+ (uzip_elems): Likewise.
+ (trn_elems): Likewise.
+ (features): New enumeration Use_shuffle. Delete ReturnPtr.
+ (pf_su_8_16): New.
+ (suf_32): New.
+ (ops): Update entries for Vrev64, Vrev32, Vrev16, Vtr, Vzip, Vuzp.
+ * config/arm/arm_neon.h: Regenerate.
+
+2012-07-05 Richard Guenther <rguenther@suse.de>
+
+ * tree-pretty-print.c (dump_generic_node): Properly test
+ the result of exact_log2.
+
+2012-07-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390-protos.h (s390_expand_movmem)
+ (s390_expand_cmpmem): Add return value.
+ * config/s390/s390.c (s390_expand_movmem, s390_expand_cmpmem):
+ Return FALSE to use the library function in some cases.
+ * config/s390/s390.md (movmem, cmpmem): Evaluate return value of C
+ helper functions.
+
+2012-07-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config.gcc: Enable ifunc attribute by default on s390 and s390x.
+
+2012-07-05 Steven Bosscher <steven@gcc.gnu.org>
+
+ * expr.c (try_casesi): Remove bogus ATTRIBUTE_UNUSED markers.
+ * stmt.c (dump_case_nodes): New.
+ (expand_case): Split out code generation parts into new functions.
+ (expand_switch_as_decision_tree_p): Split out from expand_case.
+ (emit_case_decision_tree): Likewise.
+ (emit_case_dispatch_table): Likewise.
+
+2012-07-05 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * config/arm/iterators.md (SDF): New mode iterator.
+ (V_if_elem): Add support for SF and DF modes.
+ (V_reg): Likewise.
+ (F_constraint): New mode iterator attribute.
+ (F_fma_type): Likewise.
+ config/arm/vfp.md (fma<SDF:mode>4): New pattern.
+ (*fmsub<SDF:mode>4): Likewise.
+ (*fmnsub<SDF:mode>4): Likewise.
+ (*fmnadd<SDF:mode>4): Likewise.
+
+2012-07-04 Uros Bizjak <ubizjak@gmail.com>
+
+ * expmed.c (expand_mult): Initialize coeff and is_neg.
+
+2012-07-04 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/predicates.md (zero_extend_operand): New predicate.
+ * config/sh/sh.md (zero_extendhisi2): Simplify by using new
+ zero_extend_operand predicate.
+ (zero_extendqisi2): Likewise.
+
+2012-07-04 Uros Bizjak <ubizjak@gmail.com>
+
+ PR middle-end/53321
+ * ipa.c (symtab_remove_unreachable_nodes): Partially revert r187375
+ to not call cgraph_propagate_frequency if something was changed.
+
+2012-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53433
+ * gimple-fold.c (get_base_constructor): Do not return an
+ error_mark_node DECL_INITIAL.
+
+2012-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53844
+ * tree-ssa-dse.c (dse_possible_dead_store_p): Properly handle
+ the loop virtual PHI.
+
+2012-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53849
+ * tree-cfg.c (move_stmt_op): Only call add_referenced_var
+ for duplicated locals. Use add_referenced_var_1 to avoid
+ pushing/popping cfun.
+
+2012-07-04 Kai Tietz <ktietz@redhat.com>
+
+ * config/i386/winnt.c (i386_pe_reloc_rw_mask): New function.
+ * config/i386/i386-protos.h (i386_pe_reloc_rw_mask): Add
+ prototype.
+ * config/i386/cygming.h (TARGET_ASM_RELOC_RW_MASK): Define
+ as i386_pe_reloc_rw_mask.
+
+2012-07-04 Richard Guenther <rguenther@suse.de>
+
+ * tree.c (find_decls_types_r): Handle TYPE_CONTEXT the same
+ as in free_lang_data_in_type.
+
+2012-07-04 Tobias Grosser <tobias@grosser.es>
+ Michael Matz <matz@suse.de>
+
+ * Makefile.in (OBJS): Add graphite-optimize-isl.o.
+ (graphite-optimize-isl.o): Add dependencies.
+ * common.opt (floop-nest-optimize): New flag.
+ * doc/invoke.texi (floop-nest-optimize): Document.
+ * graphite-dependences.c (compute_deps): Export.
+ * graphite-poly.h (compute_deps): Declare.
+ * graphite-optimize-isl.c: New file.
+ * graphite-poly.c (apply_poly_transforms): Run the loop
+ nest optimizer.
+ * tree-ssa-loop.c (gate_graphite_transforms): Enable graphite
+ if -floop-nest-optimize is enabled.
+
+2012-07-03 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * config/sh/predicates.md (logical_and_operand): New predicate.
+ * config/sh/constraints.md (Jmb, Jmw): New constraints.
+ * config/sh/sh.md (andsi3): Move expander above insns. Add handling
+ of 0xFFFF constant. Use logical_and_operand predicate and
+ satisfies_constraint_Jmb, satisfies_constraint_Jmw.
+ (*andsi3_compact): Make it an insn_and_split. Use
+ logical_and_operand predicate. Add Jmb,Jmw alternatives.
+
+2012-07-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/53826
+ * tree.c (build_zero_cst): Handle NULLPTR_TYPE.
+
+2012-07-03 Nick Clifton <nickc@redhat.com>
+
+ * config/mep/mep.c (mep_reorg_regmove): Use
+ next_nonnote_non_debug_insn to advance to the next insn. Do not
+ expect delete_insn to return an rtx.
+
+2012-07-03 Richard Guenther <rguenther@suse.de>
+
+ * doc/install.texi (CLooG): Clarify how CLooG needs to be
+ configured and that it needs to be built against ISL 0.10.
+
+2012-07-03 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_option_override_internal): Fix wrong
+ code model string in the error message.
+
+2012-07-03 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/53811
+ * config/i386/i386.c (x86_output_mi_thunk): Check if fnaddr satisfies
+ sibcall_insn_operand. Move it to a temporary register if not.
+
+2012-07-03 Andreas Schwab <schwab@linux-m68k.org>
+
+ PR target/28896
+ * config/m68k/m68k.c (m68k_option_override): Reset stack_limit_rtx
+ if !TARGET_68020.
+
+2012-07-03 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/xmmintrin.h (_mm_sfence): Use __builtin_ia32_pause.
+
+2012-07-03 Roland McGrath <mcgrathr@google.com>
+
+ * configure.ac (HAVE_AS_IX86_REP_LOCK_PREFIX): Also require that the
+ assembler accept 'rep bsf ...', 'rep bsr ...', 'rep ret' and 'rep nop'.
+ * configure: Regenerated.
+ * config/i386/i386.md (simple_return_internal_long): Use %;
+ (ctz<mode>2): Likewise.
+ (*pause): Likewise.
+
+2012-07-02 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * config/sh/predicates.md (t_reg_operand, negt_reg_operand): New
+ predicates.
+ * config/sh/sh-protos.h (get_t_reg_rtx): New prototype.
+ * config/sh/sh.c (get_t_reg_rtx): New function. Use it when invoking
+ gen_branch_true and gen_branch_false.
+ * config/sh/sh.md: Use get_t_reg_rtx when invoking gen_branch_true and
+ gen_branch_false.
+ (branch_true, branch_false): Use t_reg_operand predicate.
+ (*branch_true, *branch_false): Delete.
+ (movt): Use t_reg_operand predicate.
+ (*negnegt): Use negt_reg_operand predicate and fold little and big
+ endian variants.
+ (*movtt): Use t_reg_operand and fold little and big endian variants.
+ (*movt_qi): Delete.
+
+2012-07-02 Steven Bosscher <steven@gcc.gnu.org>
+
+ * stmt.c (emit_case_bit_tests): Remove.
+ (expand_case): Remove expand_switch_using_bit_tests_p code.
+ * tree-switch-conversion.c (hoist_edge_and_branch_if_true): New.
+ (MAX_CASE_BIT_TESTS): Moved from stmt.c to here.
+ (lshift_cheap_p): Likewise.
+ (expand_switch_using_bit_tests_p): Likewise.
+ (struct case_bit_test): Likewise.
+ (case_bit_test_cmp): Likewise.
+ (emit_case_bit_tests): New implementation for GIMPLE.
+ (gen_inbound_check): Do not release post-dominator info here.
+ (process_switch): Reorder code. Expand as bit tests if it
+ looks like a win.
+ (do_switchconv): Release post-dominator info here if something changed.
+ (struct gimple_opt_pass): Verify more.
+ * tree.h (expand_switch_using_bit_tests_p): Remove prototype.
+
+2012-07-02 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/38474
+ * ipa-prop.c (compute_known_type_jump_func): Put BINFO check before a
+ dynamic type change check.
+
+2012-07-02 Richard Guenther <rguenther@suse.de>
+ Michael Matz <matz@suse.de>
+ Tobias Grosser <tobias@grosser.es>
+ Sebastian Pop <sebpop@gmail.com>
+
+ * Makefile.in: Remove PPL flags in favor of ISL ones.
+ (BACKENDLIBS): Remove PPL libs.
+ (INCLUDES): Remove PPL includes in favor of ISL ones.
+ (graphite-clast-to-gimple.o): Remove graphite-dependences.h and
+ graphite-cloog-compat.h dependencies.
+ (graphite-dependences.o): Likewise.
+ (graphite-poly.o): Likewise.
+ * configure.ac: Declare ISL vars instead of PPL ones.
+ * configure: Regenerated.
+ * doc/install.texi: Replace PPL requirement documentation with ISL one.
+ * graphite-blocking.c: Remove PPL code, add ISL equivalent.
+ * graphite-clast-to-gimple.c: Likewise.
+ * graphite-dependences.c: Likewise.
+ * graphite-interchange.c: Likewise.
+ * graphite-poly.h: Likewise.
+ * graphite-poly.c: Likewise.
+ * graphite-sese-to-poly.c: Likewise.
+ * graphite.c: Likewise.
+ * graphite-scop-detection.c: Re-arrange includes.
+ * graphite-cloog-util.c: Remove.
+ * graphite-cloog-util.h: Likewise.
+ * graphite-ppl.h: Likewise.
+ * graphite-ppl.c: Likewise.
+ * graphite-dependences.h: Likewise.
+
+2012-07-02 Richard Guenther <rguenther@suse.de>
+
+ Merge from graphite branch
+ 2011-07-21 Tobias Grosser <tobias@grosser.es>
+
+ * Makefile.in (graphite-clast-to-gimple.o, graphite-cloog-util.o):
+ Remove graphite-cloog-util.h.
+ * graphite-clast-to-gimple.c (gcc_type_for_iv_of_clast_loop,
+ build_iv_mapping, translate_clast_user, translate_clast,
+ free_scattering, initialize_cloog_names, build_cloog_prog,
+ create_params_index): Do not use old compatibility functions.
+ (clast_name_to_index, set_cloog_options): Remove code for legacy cloog.
+ * graphite-cloog-util.c (openscop_print_cloog_matrix): Do not use old
+ compatibility functions.
+ (new_Cloog_Scattering_from_ppl_Polyhedron): Remove code for legacy
+ cloog.
+ * graphite-cloog-util.h: Remove include of graphite-cloog-util.h.
+ * graphite.c (graphite.c): Do not call outdated cloog_initialize() and
+ cloog_finalize().
+ * graphite-cloog-compat.h: Remove.
+
+ 2011-08-09 Tobias Grosser <tobias@grosser.es>
+
+ * graphite-clast-to-gimple.c (new_clast_name_index): Store a copy
+ of the string, no just a reference.
+ (clast_name_index): Add a new field, that specifies if we need to free
+ the name.
+ (free_clast_name_index): If necessary, free the name string.
+ (clast_name_index_elt_info): Calculate the hash based on the string
+ content, not the memory location it is stored in.
+ (clast_name_to_level): Specify that we do not need to free the name.
+ (clast_name_to_index): Dito.
+ (clast_name_to_lb_ub): Dito.
+ (eq_clast_name_indexes): Compare the strings, not their base pointers.
+ (free_scattering): Removed.
+ (initialize_cloog_names): Renamed to add_names_to_union_domain().
+ (add_names_to_union_domain): Changed to work on a union_domain,
+ instead of a CloogNames structure.
+ (build_cloog_prog): Removed.
+ (build_cloog_union_domain): New.
+ (generate_cloog_input): New.
+ (scop_to_clast): Use CloogInput instead of CloogProgram.
+ (print_generated_program): Adapt to new scop_to_clast() and do not
+ print the CloogProgram any more.
+ (create_params_index): Removed, functionality integrated in
+ add_names_to_union_domain().
+ (gloog): Adapt to new scop_to_clast().
+ * graphite-clast-to-gimple.h (scop_to_clast): Remove.
+
+ 2012-01-11 Tobias Grosser <tobias@grosser.es>
+
+ * graphite-clast-to-gimple.c (clast_name_to_index,
+ clast_name_to_lb_ub, clast_name_to_gcc): Change types.
+ (clast_to_gcc_expression): Add clast_expr_name as a new
+ case. Do not assume a clast_expr_term points always to a
+ clast_expr_name.
+ (type_for_clast_term): Do not assume a clast_expr_term points always to
+ a clast_expr_name.
+ (type_for_clast_name): New.
+ (type_for_clast_expr): Add clast_expr_name as a new case.
+
+ 2011-08-03 Sebastian Pop <sebpop@gmail.com>
+
+ * graphite-cloog-util.c (new_Cloog_Domain_from_ppl_Polyhedron,
+ new_Cloog_Scattering_from_ppl_Polyhedron,
+ new_Cloog_Domain_from_ppl_Pointset_Powerset): Remove ATTRIBUTE_UNUSED.
+
2012-07-02 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/53645
@@ -31,7 +7834,7 @@
(crc32_byte): ... here. Use it.
(crc32_unsigned): New.
-2012-06-29 Cary Coutant <ccoutant@google.com>
+2012-06-29 Cary Coutant <ccoutant@google.com>
* dwarf2out.c (add_pubname_string): Don't check for want_pubnames.
(gen_subprogram_die): Don't add pubname if want_pubnames is false.
@@ -58,8 +7861,7 @@
2012-06-29 Jakub Jelinek <jakub@redhat.com>
* tree-vect-generic.c (expand_vector_divmod): For even/odd
- widening multiply, put even always as first argument to
- VEC_PERM_EXPR.
+ widening multiply, put even always as first argument to VEC_PERM_EXPR.
2012-06-29 Richard Henderson <rth@redhat.com>
diff --git a/gcc/ChangeLog.MELT b/gcc/ChangeLog.MELT
index 0d7aa623e40..b6d27202ae6 100644
--- a/gcc/ChangeLog.MELT
+++ b/gcc/ChangeLog.MELT
@@ -1,5 +1,25 @@
2012-08-29 Basile Starynkevitch <basile@starynkevitch.net>
+ {{merging with trunk, converted to C++}}
+
+ * melt-runtime.h (MELT_FLEXIBLE_DIM): Set when C++.
+
+ * melt-runtime.c (melt_tempdir_path): Don't use choose_tmpdir from
+ libiberty.
+ (meltgc_start_module_by_index): Use address-of & on VEC_index.
+ (melt_really_initialize): When printing builtin settings, handle
+ GCC 4.8 as with implicit ENABLE_BUILD_WITH_CXX.
+ (meltgc_out_edge): Provide additional flag TDF_DETAILS for dump_edge_info.
+ (melt_val2passflag): Handle PROP_referenced_vars only when defined.
+
+ * melt-module.mk: Use GCCMELT_COMPILER instead of GCCMELT_CC.
+
+ * melt-build-script.tpl: Transmit GCCMELT_COMPILER on every make
+ using melt-module.mk and improve the error message.
+
+ * melt-build-script.sh: Regenerate.
+
+2012-08-29 Basile Starynkevitch <basile@starynkevitch.net>
* Makefile.in (melt-runtime.args): Add -I include and -I include-fixed.
(melt-build-param.sh): Emit GCCMELT_CC1PLUS.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index b2335be6c7b..23bc235e794 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20120702
+20120828
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index f47bf060da0..06b2bbe9cc9 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -223,13 +223,6 @@ RANLIB_FLAGS = @ranlib_flags@
HOST_LIBS = @HOST_LIBS@
# The name of the compiler to use.
-ENABLE_BUILD_WITH_CXX = @ENABLE_BUILD_WITH_CXX@
-ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
-COMPILER = $(CC)
-COMPILER_FLAGS = $(CFLAGS)
-LINKER = $(CC)
-LINKER_FLAGS = $(CFLAGS)
-else
COMPILER = $(CXX)
COMPILER_FLAGS = $(CXXFLAGS)
# If HOST_LIBS is set, then the user is controlling the libraries to
@@ -243,7 +236,6 @@ else
LINKER = $(CC)
LINKER_FLAGS = $(CFLAGS)
endif
-endif
# -------------------------------------------
# Programs which operate on the build machine
@@ -325,9 +317,8 @@ ZLIBINC = @zlibinc@
GMPLIBS = @GMPLIBS@
GMPINC = @GMPINC@
-# How to find PPL
-PPLLIBS = @PPLLIBS@
-PPLINC = @PPLINC@
+# How to find ISL
+ISLINC = @ISLINC@
# How to find CLOOG
CLOOGLIBS = @CLOOGLIBS@
@@ -337,13 +328,8 @@ CLOOGINC = @CLOOGINC@
enable_lto = @enable_lto@
# Compiler and flags needed for plugin support
-ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
-PLUGINCC = @CC@
-PLUGINCFLAGS = @CFLAGS@
-else
PLUGINCC = @CXX@
PLUGINCFLAGS = @CXXFLAGS@
-endif
# Libs and linker options needed for plugin support
PLUGINLIBS = @pluginlibs@
@@ -360,9 +346,6 @@ DECNUMFMT = $(srcdir)/../libdecnumber/$(enable_decimal_float)
DECNUMINC = -I$(DECNUM) -I$(DECNUMFMT) -I../libdecnumber
LIBDECNUMBER = ../libdecnumber/libdecnumber.a
-#c-family header
-CFAMILYINC=-I$(srcdir)/c-family
-
# Target to use when installing include directory. Either
# install-headers-tar, install-headers-cpio or install-headers-cp.
INSTALL_HEADERS_DIR = @build_install_headers_dir@
@@ -736,22 +719,12 @@ BUILD_CFLAGS= @BUILD_CFLAGS@ -DGENERATOR_FILE
BUILD_CXXFLAGS = @BUILD_CXXFLAGS@ -DGENERATOR_FILE
# Native compiler that we use. This may be C++ some day.
-ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
-COMPILER_FOR_BUILD = $(CC_FOR_BUILD)
-BUILD_COMPILERFLAGS = $(BUILD_CFLAGS)
-else
COMPILER_FOR_BUILD = $(CXX_FOR_BUILD)
BUILD_COMPILERFLAGS = $(BUILD_CXXFLAGS)
-endif
# Native linker that we use.
-ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
-LINKER_FOR_BUILD = $(CC_FOR_BUILD)
-BUILD_LINKERFLAGS = $(BUILD_CFLAGS)
-else
LINKER_FOR_BUILD = $(CXX_FOR_BUILD)
BUILD_LINKERFLAGS = $(BUILD_CXXFLAGS)
-endif
# Native linker and preprocessor flags. For x-fragment overrides.
BUILD_LDFLAGS=@BUILD_LDFLAGS@
@@ -843,6 +816,7 @@ endif
# Shorthand variables for dependency lists.
VEC_H = vec.h statistics.h
+HASH_TABLE_H = $(HASHTAB_H) hash-table.h
EXCEPT_H = except.h $(HASHTAB_H) vecprim.h vecir.h
TARGET_DEF = target.def target-hooks-macros.h
C_TARGET_DEF = c-family/c-target.def target-hooks-macros.h
@@ -859,11 +833,11 @@ C_TARGET_DEF_H = c-family/c-target-def.h c-family/c-target-hooks-def.h \
$(TREE_H) $(C_COMMON_H) $(HOOKS_H) common/common-targhooks.h
COMMON_TARGET_DEF_H = common/common-target-def.h \
common/common-target-hooks-def.h $(HOOKS_H)
-RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H) reg-notes.def insn-notes.def \
- $(INPUT_H) $(REAL_H) statistics.h $(VEC_H) $(FIXED_VALUE_H) alias.h \
- $(HASHTAB_H)
+RTL_BASE_H = coretypes.h rtl.h rtl.def $(MACHMODE_H) reg-notes.def \
+ insn-notes.def $(INPUT_H) $(REAL_H) statistics.h $(VEC_H) \
+ $(FIXED_VALUE_H) alias.h $(HASHTAB_H)
FIXED_VALUE_H = fixed-value.h $(MACHMODE_H) double-int.h
-RTL_H = $(RTL_BASE_H) genrtl.h vecir.h
+RTL_H = $(RTL_BASE_H) $(FLAGS_H) genrtl.h vecir.h
RTL_ERROR_H = rtl-error.h $(RTL_H) $(DIAGNOSTIC_CORE_H)
READ_MD_H = $(OBSTACK_H) $(HASHTAB_H) read-md.h
PARAMS_H = params.h params.def
@@ -871,7 +845,7 @@ BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def \
gtm-builtins.def
INTERNAL_FN_DEF = internal-fn.def
INTERNAL_FN_H = internal-fn.h $(INTERNAL_FN_DEF)
-TREE_H = tree.h all-tree.def tree.def c-family/c-common.def \
+TREE_H = coretypes.h tree.h all-tree.def tree.def c-family/c-common.def \
$(lang_tree_files) $(MACHMODE_H) tree-check.h $(BUILTINS_DEF) \
$(INPUT_H) statistics.h $(VEC_H) treestruct.def $(HASHTAB_H) \
double-int.h alias.h $(SYMTAB_H) $(FLAGS_H) vecir.h \
@@ -879,20 +853,21 @@ TREE_H = tree.h all-tree.def tree.def c-family/c-common.def \
REGSET_H = regset.h $(BITMAP_H) hard-reg-set.h
BASIC_BLOCK_H = basic-block.h $(PREDICT_H) $(VEC_H) $(FUNCTION_H) cfghooks.h
GIMPLE_H = gimple.h gimple.def gsstruct.def pointer-set.h $(VEC_H) \
- vecir.h $(GGC_H) $(BASIC_BLOCK_H) tree-ssa-operands.h \
+ vecir.h $(GGC_H) $(BASIC_BLOCK_H) $(TREE_H) tree-ssa-operands.h \
tree-ssa-alias.h $(INTERNAL_FN_H)
TRANS_MEM_H = trans-mem.h
GCOV_IO_H = gcov-io.h gcov-iov.h auto-host.h
COVERAGE_H = coverage.h $(GCOV_IO_H)
DEMANGLE_H = $(srcdir)/../include/demangle.h
RECOG_H = recog.h
-ALIAS_H = alias.h coretypes.h
+ALIAS_H = alias.h
EMIT_RTL_H = emit-rtl.h
-FLAGS_H = flags.h coretypes.h flag-types.h $(OPTIONS_H)
+FLAGS_H = flags.h flag-types.h $(OPTIONS_H)
OPTIONS_H = options.h flag-types.h $(OPTIONS_H_EXTRA)
-FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) vecprim.h $(TM_H) hard-reg-set.h
+FUNCTION_H = function.h $(HASHTAB_H) vecprim.h $(TM_H) hard-reg-set.h \
+ $(VEC_H) vecir.h $(INPUT_H) $(MACHMODE_H)
EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) $(MACHMODE_H) $(EMIT_RTL_H)
-OPTABS_H = optabs.h insn-codes.h
+OPTABS_H = optabs.h insn-codes.h insn-opinit.h
REGS_H = regs.h $(MACHMODE_H) hard-reg-set.h
SCHED_INT_H = sched-int.h $(INSN_ATTR_H) $(BASIC_BLOCK_H) $(RTL_H) $(DF_H) \
vecprim.h $(REGSET_H)
@@ -907,6 +882,7 @@ CGRAPH_H = cgraph.h $(VEC_H) $(TREE_H) $(BASIC_BLOCK_H) $(FUNCTION_H) \
cif-code.def ipa-ref.h ipa-ref-inline.h $(LINKER_PLUGIN_API_H)
DF_H = df.h $(BITMAP_H) $(REGSET_H) sbitmap.h $(BASIC_BLOCK_H) \
alloc-pool.h $(TIMEVAR_H)
+VALTRACK_H = valtrack.h $(BITMAP_H) $(DF_H) $(RTL_H) $(BASIC_BLOCK_H)
RESOURCE_H = resource.h hard-reg-set.h $(DF_H)
DDG_H = ddg.h sbitmap.h $(DF_H)
GCC_H = gcc.h version.h $(DIAGNOSTIC_CORE_H)
@@ -915,7 +891,7 @@ GGC_INTERNAL_H = ggc-internal.h $(GGC_H)
TIMEVAR_H = timevar.h timevar.def
INSN_ATTR_H = insn-attr.h insn-attr-common.h $(INSN_ADDR_H)
INSN_ADDR_H = $(srcdir)/insn-addr.h vecprim.h
-C_COMMON_H = c-family/c-common.h c-family/c-common.def \
+C_COMMON_H = c-family/c-common.h c-family/c-common.def $(TREE_H) \
$(SPLAY_TREE_H) $(CPPLIB_H) $(GGC_H) $(DIAGNOSTIC_CORE_H)
C_PRAGMA_H = c-family/c-pragma.h $(CPPLIB_H)
C_TREE_H = c-tree.h $(C_COMMON_H) $(DIAGNOSTIC_H)
@@ -933,8 +909,8 @@ MKDEPS_H = $(srcdir)/../libcpp/include/mkdeps.h
SYMTAB_H = $(srcdir)/../libcpp/include/symtab.h $(OBSTACK_H)
CPP_ID_DATA_H = $(CPPLIB_H) $(srcdir)/../libcpp/include/cpp-id-data.h
CPP_INTERNAL_H = $(srcdir)/../libcpp/internal.h $(CPP_ID_DATA_H)
-TREE_PASS_H = tree-pass.h $(TIMEVAR_H)
-TREE_DUMP_H = tree-dump.h $(SPLAY_TREE_H) $(TREE_PASS_H)
+TREE_DUMP_H = tree-dump.h $(SPLAY_TREE_H)
+TREE_PASS_H = tree-pass.h $(TIMEVAR_H) dumpfile.h
TREE_FLOW_H = tree-flow.h tree-flow-inline.h tree-ssa-operands.h \
$(BITMAP_H) sbitmap.h $(BASIC_BLOCK_H) $(GIMPLE_H) \
$(HASHTAB_H) $(CGRAPH_H) $(IPA_REFERENCE_H) \
@@ -957,7 +933,6 @@ REAL_H = real.h $(MACHMODE_H)
IRA_INT_H = ira.h ira-int.h $(CFGLOOP_H) alloc-pool.h
DBGCNT_H = dbgcnt.h dbgcnt.def
EBITMAP_H = ebitmap.h sbitmap.h
-GRAPHITE_PPL_H = graphite-ppl.h $(TREE_H)
LTO_STREAMER_H = lto-streamer.h $(LINKER_PLUGIN_API_H) $(TARGET_H) \
$(CGRAPH_H) $(VEC_H) vecprim.h $(TREE_H) $(GIMPLE_H) \
$(GCOV_IO_H) $(DIAGNOSTIC_H) alloc-pool.h
@@ -1001,18 +976,10 @@ ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \
ALL_CPPFLAGS = $(INCLUDES) $(CPPFLAGS)
# This is the variable to use when using $(COMPILER).
-ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
-ALL_COMPILERFLAGS = $(ALL_CFLAGS)
-else
ALL_COMPILERFLAGS = $(ALL_CXXFLAGS)
-endif
# This is the variable to use when using $(LINKER).
-ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
-ALL_LINKERFLAGS = $(ALL_CFLAGS)
-else
ALL_LINKERFLAGS = $(ALL_CXXFLAGS)
-endif
# Build and host support libraries.
LIBIBERTY = ../libiberty/libiberty.a
@@ -1030,7 +997,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
# and the system's installed libraries.
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) \
$(LIBDECNUMBER) $(HOST_LIBS)
-BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
$(ZLIB)
# Any system libraries needed just for GNAT.
SYSLIBS = @GNAT_LIBEXC@
@@ -1063,8 +1030,8 @@ INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
-I$(srcdir)/melt/generated \
-I$(srcdir)/../include @INCINTL@ \
$(CPPINC) $(GMPINC) $(DECNUMINC) \
- $(PPLINC) $(CLOOGINC) \
- $(CFAMILYINC)
+ $(CLOOGINC) $(ISLINC)
+
.c.o:
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
@@ -1253,11 +1220,10 @@ OBJS = \
graphite.o \
graphite-blocking.o \
graphite-clast-to-gimple.o \
- graphite-cloog-util.o \
graphite-dependences.o \
graphite-interchange.o \
+ graphite-optimize-isl.o \
graphite-poly.o \
- graphite-ppl.o \
graphite-scop-detection.o \
graphite-sese-to-poly.o \
gtype-desc.o \
@@ -1307,7 +1273,6 @@ OBJS = \
lto-symtab.o \
lto-opts.o \
lto-compress.o \
- matrix-reorg.o \
mcf.o \
mode-switching.o \
modulo-sched.o \
@@ -1454,6 +1419,7 @@ OBJS = \
tree-vectorizer.o \
tree-vrp.o \
tree.o \
+ valtrack.o \
value-prof.o \
var-tracking.o \
varasm.o \
@@ -1472,7 +1438,8 @@ OBJS-libcommon = diagnostic.o pretty-print.o intl.o input.o version.o
# Objects in libcommon-target.a, used by drivers and by the core
# compiler and containing target-dependent code.
OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \
- opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o
+ opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
+ hash-table.o
# This lists all host objects for the front ends.
ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
@@ -1499,10 +1466,10 @@ MELT_RUNTIME_C= $(srcdir)/melt-runtime.c
MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
insn-attr.h insn-attr-common.h insn-attrtab.c insn-dfatab.c \
- insn-latencytab.c insn-opinit.c insn-preds.c insn-constants.h \
+ insn-latencytab.c insn-opinit.c insn-opinit.h insn-preds.c insn-constants.h \
tm-preds.h tm-constrs.h checksum-options \
tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \
- genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp*-input.list \
+ genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
xgcc$(exeext) cpp$(exeext) \
$(EXTRA_PROGRAMS) gcc-cross$(exeext) \
$(SPECS) collect2$(exeext) gcc-ar$(exeext) gcc-nm$(exeext) \
@@ -1857,7 +1824,7 @@ graph.o: graph.c $(SYSTEM_H) coretypes.h $(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) $
$(RTL_H) $(FUNCTION_H) hard-reg-set.h $(BASIC_BLOCK_H) graph.h $(OBSTACK_H) \
$(CONFIG_H) $(EMIT_RTL_H)
-sbitmap.o: sbitmap.c sbitmap.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(BASIC_BLOCK_H)
+sbitmap.o: sbitmap.c sbitmap.h $(CONFIG_H) $(SYSTEM_H) coretypes.h
ebitmap.o: ebitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(EBITMAP_H)
sparseset.o: sparseset.c $(SYSTEM_H) sparseset.h $(CONFIG_H)
@@ -1910,8 +1877,7 @@ collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS)
mv -f T$@ $@
CFLAGS-collect2.o += -DTARGET_MACHINE=\"$(target_noncanonical)\" \
- @TARGET_SYSTEM_ROOT_DEFINE@
-
+ @TARGET_SYSTEM_ROOT_DEFINE@
collect2.o : collect2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h \
$(OBSTACK_H) $(DEMANGLE_H) collect2.h collect2-aix.h version.h \
$(DIAGNOSTIC_H)
@@ -1941,8 +1907,7 @@ c-family/c-common.o : c-family/c-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(DIAGNOSTIC_H) langhooks.h c-family/c-objc.h \
$(TARGET_H) tree-iterator.h langhooks.h tree-mudflap.h \
intl.h $(OPTS_H) $(CPPLIB_H) $(TREE_INLINE_H) $(HASHTAB_H) \
- $(BUILTINS_DEF) $(CGRAPH_H) $(BASIC_BLOCK_H) $(TARGET_DEF_H) \
- $(LIBFUNCS_H) \
+ $(BUILTINS_DEF) $(CGRAPH_H) $(TARGET_DEF_H) \
gt-c-family-c-common.h $(COMMON_TARGET_H)
c-family/c-cppbuiltin.o : c-family/c-cppbuiltin.c $(CONFIG_H) $(SYSTEM_H) \
@@ -1961,8 +1926,8 @@ c-family/c-format.o : c-family/c-format.c c-family/c-format.h \
c-family/c-gimplify.o : c-family/c-gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(C_COMMON_H) $(DIAGNOSTIC_CORE_H) $(GIMPLE_H) \
$(FLAGS_H) langhooks.h $(LANGHOOKS_DEF_H) \
- $(TM_H) coretypes.h $(C_PRETTY_PRINT_H) $(CGRAPH_H) $(BASIC_BLOCK_H) \
- hard-reg-set.h $(TREE_DUMP_H) $(TREE_INLINE_H)
+ $(TM_H) coretypes.h $(C_PRETTY_PRINT_H) $(CGRAPH_H) \
+ dumpfile.h $(TREE_INLINE_H)
c-family/c-lex.o : c-family/c-lex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(FIXED_VALUE_H) debug.h $(C_COMMON_H) $(SPLAY_TREE_H) \
@@ -2006,7 +1971,7 @@ c-family/c-semantics.o : c-family/c-semantics.c $(CONFIG_H) $(SYSTEM_H) \
c-family/c-ada-spec.o : c-family/c-ada-spec.c c-family/c-ada-spec.h \
$(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(CPP_ID_DATA_H) $(TM_H) \
- coretypes.h tree-iterator.h $(TREE_PASS_H)
+ coretypes.h tree-iterator.h dumpfile.h
c-family/stub-objc.o : c-family/stub-objc.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_H) $(C_COMMON_H) c-family/c-objc.h
@@ -2175,10 +2140,10 @@ lto-cgraph.o: lto-cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(EXCEPT_H) $(TIMEVAR_H) pointer-set.h $(LTO_STREAMER_H) \
$(GCOV_IO_H) $(DATA_STREAMER_H) $(TREE_STREAMER_H)
lto-streamer-in.o: lto-streamer-in.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) input.h \
- $(HASHTAB_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TREE_PASS_H) $(CGRAPH_H) \
- $(FUNCTION_H) $(GGC_H) $(DIAGNOSTIC_H) $(LIBFUNCS_H) $(EXCEPT_H) debug.h \
- $(TIMEVAR_H) $(IPA_UTILS_H) $(LTO_STREAMER_H) toplev.h \
+ $(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) \
+ input.h $(HASHTAB_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
+ $(CGRAPH_H) $(FUNCTION_H) $(GGC_H) $(DIAGNOSTIC_H) $(EXCEPT_H) debug.h \
+ $(IPA_UTILS_H) $(LTO_STREAMER_H) toplev.h \
$(DATA_STREAMER_H) $(GIMPLE_STREAMER_H) $(TREE_STREAMER_H)
lto-streamer-out.o : lto-streamer-out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(DIAGNOSTIC_CORE_H) $(TREE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) input.h \
@@ -2194,7 +2159,7 @@ lto-section-in.o: lto-section-in.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(LTO_STREAMER_H) lto-compress.h
lto-section-out.o : lto-section-out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(DIAGNOSTIC_CORE_H) $(TREE_H) $(EXPR_H) $(PARAMS_H) input.h \
- $(HASHTAB_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
+ $(HASHTAB_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
$(CGRAPH_H) $(FUNCTION_H) $(GGC_H) $(EXCEPT_H) pointer-set.h \
$(BITMAP_H) langhooks.h $(LTO_STREAMER_H) lto-compress.h \
$(DATA_STREAMER_H)
@@ -2208,7 +2173,7 @@ lto-streamer.o: lto-streamer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(GIMPLE_H) $(BITMAP_H) $(LTO_STREAMER_H) $(FLAGS_H) \
$(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(LTO_SYMTAB_H) toplev.h \
$(DIAGNOSTIC_CORE_H) $(STREAMER_HOOKS_H)
-langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TIMEVAR_H) \
$(TREE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_INLINE_H) $(RTL_H) insn-config.h \
langhooks.h $(TARGET_H) $(LANGHOOKS_DEF_H) $(FLAGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
intl.h $(GIMPLE_H) $(CGRAPH_H) output.h tree-diagnostic.h
@@ -2217,7 +2182,7 @@ tree.o: tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) \
langhooks.h gt-tree.h $(TREE_INLINE_H) tree-iterator.h \
$(BASIC_BLOCK_H) $(TREE_FLOW_H) $(OBSTACK_H) pointer-set.h \
- $(TREE_PASS_H) $(LANGHOOKS_DEF_H) $(DIAGNOSTIC_H) $(CGRAPH_H) $(TIMEVAR_H) \
+ $(TREE_PASS_H) $(LANGHOOKS_DEF_H) $(DIAGNOSTIC_H) $(CGRAPH_H) \
$(EXCEPT_H) debug.h intl.h tree-diagnostic.h $(TREE_PRETTY_PRINT_H) \
$(COMMON_TARGET_H)
tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -2230,9 +2195,9 @@ tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
debug.h $(DIAGNOSTIC_H) $(EXCEPT_H) $(TREE_FLOW_H) tree-iterator.h tree-mudflap.h \
$(IPA_PROP_H) value-prof.h $(TREE_PASS_H) $(TARGET_H) \
$(TREE_PRETTY_PRINT_H)
-print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(GGC_H) langhooks.h tree-iterator.h \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) $(GIMPLE_PRETTY_PRINT_H)
+print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TM_H) $(TREE_H) $(GGC_H) langhooks.h tree-iterator.h \
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(GIMPLE_PRETTY_PRINT_H)
stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(PARAMS_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) $(RTL_H) \
$(GGC_H) $(TM_P_H) $(TARGET_H) langhooks.h $(REGS_H) gt-stor-layout.h \
@@ -2240,107 +2205,106 @@ stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
tree-ssa-tail-merge.o: tree-ssa-tail-merge.c \
$(SYSTEM_H) $(CONFIG_H) coretypes.h $(TM_H) $(BITMAP_H) \
$(FLAGS_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
- $(GIMPLE_H) $(FUNCTION_H) \
- $(TIMEVAR_H) tree-ssa-sccvn.h \
+ $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) $(TREE_DUMP_H) $(HASH_TABLE_H) \
+ $(GIMPLE_H) $(FUNCTION_H) tree-ssa-sccvn.h \
$(CGRAPH_H) $(GIMPLE_PRETTY_PRINT_H) $(PARAMS_H)
tree-ssa-structalias.o: tree-ssa-structalias.c \
$(SYSTEM_H) $(CONFIG_H) coretypes.h $(TM_H) $(GGC_H) $(OBSTACK_H) $(BITMAP_H) \
$(FLAGS_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
$(GIMPLE_H) $(HASHTAB_H) $(FUNCTION_H) $(CGRAPH_H) \
- $(TREE_PASS_H) $(TIMEVAR_H) alloc-pool.h $(SPLAY_TREE_H) $(PARAMS_H) \
+ $(TREE_PASS_H) alloc-pool.h $(SPLAY_TREE_H) $(PARAMS_H) \
$(CGRAPH_H) $(ALIAS_H) pointer-set.h
tree-ssa-uninit.o : tree-ssa-uninit.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(DIAGNOSTIC_H) \
- $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
+ $(FUNCTION_H) $(TM_H) coretypes.h \
+ $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
$(FLAGS_H) $(HASHTAB_H) pointer-set.h \
$(GIMPLE_H) $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa.o : tree-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(EXPR_H) $(DIAGNOSTIC_H) \
- toplev.h $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
+ toplev.h $(FUNCTION_H) $(TM_H) coretypes.h \
+ langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
$(FLAGS_H) $(GGC_H) $(HASHTAB_H) pointer-set.h \
$(GIMPLE_H) $(TREE_INLINE_H) $(TARGET_H) \
$(GIMPLE_PRETTY_PRINT_H) $(CFGLOOP_H)
tree-into-ssa.o : tree-into-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(DIAGNOSTIC_H) \
- $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(TREE_H) $(TM_P_H) $(DIAGNOSTIC_CORE_H) \
+ $(FUNCTION_H) $(TM_H) coretypes.h \
langhooks.h domwalk.h $(TREE_PASS_H) $(PARAMS_H) $(BASIC_BLOCK_H) \
$(BITMAP_H) $(CFGLOOP_H) $(FLAGS_H) $(HASHTAB_H) \
$(GIMPLE_H) $(TREE_INLINE_H) vecprim.h \
$(GIMPLE_PRETTY_PRINT_H)
tree-ssa-ter.o : tree-ssa-ter.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h dumpfile.h \
$(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) \
$(GIMPLE_PRETTY_PRINT_H)
tree-ssa-coalesce.o : tree-ssa-coalesce.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) \
+ $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h dumpfile.h \
+ $(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) $(HASH_TABLE_H) \
$(TREE_PRETTY_PRINT_H)
tree-outof-ssa.o : tree-outof-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(TREE_PASS_H) $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) $(BITMAP_H) $(GGC_H) \
+ $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h dumpfile.h \
+ $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) $(BITMAP_H) $(GGC_H) \
$(EXPR_H) $(SSAEXPAND_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-dse.o : tree-ssa-dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) domwalk.h $(FLAGS_H) \
- $(GIMPLE_PRETTY_PRINT_H) $(TIMEVAR_H) langhooks.h
+ $(TREE_FLOW_H) $(TREE_PASS_H) domwalk.h $(FLAGS_H) \
+ $(GIMPLE_PRETTY_PRINT_H) langhooks.h
tree-ssa-forwprop.o : tree-ssa-forwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
+ $(TM_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) $(CFGLOOP_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) \
langhooks.h $(FLAGS_H) $(GIMPLE_H) $(GIMPLE_PRETTY_PRINT_H) $(EXPR_H)
tree-ssa-phiprop.o : tree-ssa-phiprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) \
langhooks.h $(FLAGS_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-ifcombine.o : tree-ssa-ifcombine.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) \
$(TREE_PRETTY_PRINT_H)
tree-ssa-phiopt.o : tree-ssa-phiopt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) langhooks.h $(FLAGS_H) \
- $(DIAGNOSTIC_H) $(TIMEVAR_H) pointer-set.h domwalk.h $(CFGLOOP_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) langhooks.h $(FLAGS_H) \
+ $(DIAGNOSTIC_H) pointer-set.h domwalk.h $(CFGLOOP_H) \
$(TREE_DATA_REF_H) $(TREE_PRETTY_PRINT_H) $(GIMPLE_PRETTY_PRINT_H) \
insn-config.h $(EXPR_H) $(OPTABS_H)
tree-nrv.o : tree-nrv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(FLAGS_H) \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_PASS_H) \
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
langhooks.h $(TREE_PRETTY_PRINT_H)
tree-ssa-copy.o : tree-ssa-copy.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(GGC_H) $(DIAGNOSTIC_H) \
- $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(FUNCTION_H) $(TM_H) coretypes.h \
$(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h tree-ssa-propagate.h \
$(FLAGS_H) $(CFGLOOP_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-propagate.o : tree-ssa-propagate.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) \
- $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \
+ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h dumpfile.h \
+ $(BASIC_BLOCK_H) langhooks.h \
tree-ssa-propagate.h $(VEC_H) value-prof.h gt-tree-ssa-propagate.h $(FLAGS_H) \
$(GIMPLE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-dom.o : tree-ssa-dom.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(DIAGNOSTIC_H) \
- $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(FUNCTION_H) $(TM_H) coretypes.h \
$(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
tree-ssa-propagate.h $(CFGLOOP_H) $(PARAMS_H) \
$(GIMPLE_PRETTY_PRINT_H)
tree-ssa-uncprop.o : tree-ssa-uncprop.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) \
- $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) \
- langhooks.h tree-ssa-propagate.h
+ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h \
+ $(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) \
+ tree-ssa-propagate.h
tree-ssa-threadedge.o : tree-ssa-threadedge.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) $(TM_P_H) \
+ $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(TREE_H) $(FLAGS_H) $(TM_P_H) \
$(BASIC_BLOCK_H) $(CFGLOOP_H) \
- $(FUNCTION_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_FLOW_H) \
- $(TREE_PASS_H) tree-ssa-propagate.h langhooks.h \
+ $(FUNCTION_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
+ tree-ssa-propagate.h langhooks.h \
$(PARAMS_H)
tree-ssa-threadupdate.o : tree-ssa-threadupdate.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
- $(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(BASIC_BLOCK_H) $(FLAGS_H) $(TREE_PASS_H) $(CFGLOOP_H)
+ $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(HASH_TABLE_H) \
+ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h dumpfile.h \
+ $(BASIC_BLOCK_H) $(FLAGS_H) $(CFGLOOP_H)
tree-ssanames.o : tree-ssanames.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_PASS_H)
tree-phinodes.o : tree-phinodes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@@ -2349,116 +2313,116 @@ tree-phinodes.o : tree-phinodes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
domwalk.o : domwalk.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(BASIC_BLOCK_H) domwalk.h sbitmap.h
tree-ssa-live.o : tree-ssa-live.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h dumpfile.h $(TIMEVAR_H) \
$(TREE_SSA_LIVE_H) $(BITMAP_H) debug.h $(FLAGS_H) \
$(GIMPLE_PRETTY_PRINT_H) $(GIMPLE_H)
tree-ssa-copyrename.o : tree-ssa-copyrename.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) \
- $(TREE_PASS_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_SSA_LIVE_H) \
+ $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(FUNCTION_H) \
+ $(TREE_PASS_H) $(TM_H) coretypes.h $(TREE_SSA_LIVE_H) \
$(BASIC_BLOCK_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) langhooks.h \
$(GIMPLE_H) $(TREE_INLINE_H) $(GIMPLE_H)
tree-ssa-pre.o : tree-ssa-pre.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
- $(CFGLOOP_H) alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) \
+ $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) \
+ $(TM_H) coretypes.h $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
+ $(CFGLOOP_H) alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASH_TABLE_H) \
$(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \
$(DBGCNT_H) tree-scalar-evolution.h $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(CFGLOOP_H) \
- alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) langhooks.h $(HASHTAB_H) $(GIMPLE_H) \
- $(TREE_INLINE_H) tree-iterator.h tree-ssa-propagate.h tree-ssa-sccvn.h \
+ $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) \
+ $(TM_H) coretypes.h dumpfile.h $(FLAGS_H) $(CFGLOOP_H) \
+ alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) $(GIMPLE_H) \
+ $(TREE_INLINE_H) tree-ssa-propagate.h tree-ssa-sccvn.h \
$(PARAMS_H) $(GIMPLE_PRETTY_PRINT_H) gimple-fold.h
gimple-ssa-strength-reduction.o : gimple-ssa-strength-reduction.c $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(TREE_H) $(GIMPLE_H) $(BASIC_BLOCK_H) \
- $(TREE_PASS_H) $(TIMEVAR_H) $(CFGLOOP_H) $(TREE_PRETTY_PRINT_H) \
+ $(TREE_PASS_H) $(CFGLOOP_H) $(TREE_PRETTY_PRINT_H) \
$(GIMPLE_PRETTY_PRINT_H) alloc-pool.h $(TREE_FLOW_H) domwalk.h \
- pointer-set.h
+ pointer-set.h expmed.h
tree-vrp.o : tree-vrp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_CORE_H) $(GGC_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(DIAGNOSTIC_CORE_H) $(GGC_H) \
$(BASIC_BLOCK_H) tree-ssa-propagate.h $(FLAGS_H) $(TREE_DUMP_H) \
- $(CFGLOOP_H) $(SCEV_H) $(TIMEVAR_H) intl.h \
+ $(CFGLOOP_H) $(SCEV_H) intl.h \
$(GIMPLE_PRETTY_PRINT_H) gimple-fold.h $(OPTABS_H) $(EXPR_H)
tree-cfg.o : tree-cfg.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(GGC_H) $(FLAGS_H) \
- $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
+ $(TREE_H) $(TM_P_H) $(GGC_H) $(FLAGS_H) $(TARGET_H) \
+ $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TM_H) coretypes.h \
+ $(TREE_DUMP_H) $(EXCEPT_H) $(CFGLOOP_H) $(TREE_PASS_H) \
$(BASIC_BLOCK_H) \
value-prof.h tree-ssa-propagate.h $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-cfgcleanup.o : tree-cfgcleanup.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(GGC_H) $(FLAGS_H) \
- $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
+ $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TM_H) coretypes.h \
+ $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
$(BASIC_BLOCK_H) $(HASHTAB_H) \
tree-ssa-propagate.h $(SCEV_H)
tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(FUNCTION_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(EXCEPT_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
+ $(EXCEPT_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
$(BASIC_BLOCK_H) $(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H) $(TARGET_H) \
$(COMMON_TARGET_H)
tree-ssa-sink.o : tree-ssa-sink.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) alloc-pool.h \
- $(BASIC_BLOCK_H) $(BITMAP_H) $(CFGLOOP_H) $(FIBHEAP_H) $(HASHTAB_H) \
- langhooks.h $(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h \
+ $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) \
+ $(TM_H) coretypes.h $(TREE_PASS_H) $(FLAGS_H) alloc-pool.h \
+ $(BASIC_BLOCK_H) $(BITMAP_H) $(CFGLOOP_H) $(HASHTAB_H) \
+ $(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h \
$(GIMPLE_PRETTY_PRINT_H)
tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \
$(TM_P_H) $(FUNCTION_H) $(TREE_DUMP_H) $(TREE_INLINE_H) \
tree-iterator.h $(GIMPLE_H) $(CGRAPH_H) $(EXPR_H) langhooks.h \
gt-tree-nested.h coretypes.h $(TREE_FLOW_H) pointer-set.h
tree-if-conv.o: tree-if-conv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) $(FLAGS_H) $(TIMEVAR_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
+ $(TREE_H) $(FLAGS_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
$(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) \
- $(TREE_DUMP_H) $(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H)
+ $(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H)
tree-iterator.o : tree-iterator.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
coretypes.h $(GGC_H) tree-iterator.h $(GIMPLE_H) gt-tree-iterator.h
tree-dfa.o : tree-dfa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(GGC_H) $(DIAGNOSTIC_H) \
$(TREE_INLINE_H) $(HASHTAB_H) pointer-set.h $(FLAGS_H) $(FUNCTION_H) \
- $(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h $(TREE_DUMP_H) \
+ convert.h $(TM_H) coretypes.h langhooks.h \
$(TREE_PASS_H) $(PARAMS_H) $(CGRAPH_H) $(BASIC_BLOCK_H) $(GIMPLE_H) \
$(TREE_PRETTY_PRINT_H)
tree-ssa-operands.o : tree-ssa-operands.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
- $(FLAGS_H) $(FUNCTION_H) $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) \
- coretypes.h langhooks.h $(IPA_REFERENCE_H) $(GIMPLE_PRETTY_PRINT_H)
+ $(FLAGS_H) $(FUNCTION_H) $(TM_H) $(TIMEVAR_H) \
+ coretypes.h dumpfile.h langhooks.h $(IPA_REFERENCE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-eh.o : tree-eh.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_H) $(FLAGS_H) $(FUNCTION_H) $(EXCEPT_H) langhooks.h \
- $(GGC_H) $(TREE_PASS_H) coretypes.h $(TIMEVAR_H) pointer-set.h \
- $(TREE_DUMP_H) $(TREE_INLINE_H) tree-iterator.h toplev.h \
+ $(GGC_H) $(TREE_PASS_H) coretypes.h pointer-set.h \
+ $(TREE_INLINE_H) tree-iterator.h toplev.h \
$(DIAGNOSTIC_CORE_H) $(TARGET_H) $(CFGLOOP_H)
tree-ssa-loop.o : tree-ssa-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TREE_PASS_H) $(TIMEVAR_H) \
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
$(CFGLOOP_H) $(FLAGS_H) $(TREE_INLINE_H) $(SCEV_H) $(DIAGNOSTIC_CORE_H) $(TREE_VECTORIZER_H)
tree-ssa-loop-unswitch.o : tree-ssa-loop-unswitch.c $(TREE_FLOW_H) \
$(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) \
- $(PARAMS_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(BASIC_BLOCK_H) \
+ $(PARAMS_H) $(DIAGNOSTIC_H) $(TM_H) \
+ coretypes.h $(TREE_PASS_H) $(BASIC_BLOCK_H) \
$(TREE_INLINE_H)
tree-ssa-address.o : tree-ssa-address.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) \
- $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(TREE_PASS_H) $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h \
+ $(DIAGNOSTIC_H) $(TM_H) coretypes.h dumpfile.h \
+ $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h \
$(EXPR_H) gt-tree-ssa-address.h $(GGC_H) tree-affine.h $(TARGET_H) \
- $(TREE_PRETTY_PRINT_H)
+ $(TREE_PRETTY_PRINT_H) expmed.h
tree-ssa-loop-niter.o : tree-ssa-loop-niter.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \
- $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(TREE_PASS_H) $(TREE_DATA_REF_H) \
+ $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h dumpfile.h \
+ $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(TREE_DATA_REF_H) \
$(BASIC_BLOCK_H) $(GGC_H) intl.h $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-loop-ivcanon.o : tree-ssa-loop-ivcanon.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \
- $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h \
$(FLAGS_H) $(TREE_PASS_H) $(SCEV_H) $(BASIC_BLOCK_H) $(TARGET_H) \
$(GIMPLE_PRETTY_PRINT_H)
tree-ssa-loop-ch.o : tree-ssa-loop-ch.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(TREE_INLINE_H) \
- $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(DIAGNOSTIC_H) $(TM_H) coretypes.h \
$(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H)
tree-ssa-loop-prefetch.o: tree-ssa-loop-prefetch.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \
- $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(DIAGNOSTIC_H) $(TM_H) coretypes.h \
$(TREE_PASS_H) $(RECOG_H) insn-config.h $(HASHTAB_H) \
$(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_CORE_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \
@@ -2469,46 +2433,47 @@ tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
tree-affine.h $(TREE_INLINE_H) $(TREE_PRETTY_PRINT_H)
tree-ssa-loop-ivopts.o : tree-ssa-loop-ivopts.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \
- $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(DIAGNOSTIC_H) $(TM_H) coretypes.h \
$(TREE_PASS_H) $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \
$(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) \
tree-affine.h pointer-set.h $(TARGET_H) \
$(GIMPLE_PRETTY_PRINT_H) tree-ssa-propagate.h
tree-affine.o : tree-affine.c tree-affine.h $(CONFIG_H) pointer-set.h \
$(SYSTEM_H) $(TREE_H) $(GIMPLE_H) \
- coretypes.h $(TREE_DUMP_H) $(FLAGS_H) \
+ coretypes.h dumpfile.h $(FLAGS_H) \
$(TREE_PRETTY_PRINT_H)
tree-ssa-loop-manip.o : tree-ssa-loop-manip.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
- $(TIMEVAR_H) $(CFGLOOP_H) $(TREE_PASS_H) \
+ $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(TREE_H) \
+ $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
+ $(CFGLOOP_H) $(TREE_PASS_H) \
$(SCEV_H) $(PARAMS_H) $(TREE_INLINE_H) langhooks.h
tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) domwalk.h \
- $(PARAMS_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
+ $(PARAMS_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h \
+ $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
pointer-set.h tree-affine.h tree-ssa-propagate.h $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-math-opts.o : tree-ssa-math-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(FLAGS_H) $(TREE_H) $(TREE_FLOW_H) $(TIMEVAR_H) \
+ $(TM_H) $(FLAGS_H) $(TREE_H) $(TREE_FLOW_H) \
$(TREE_PASS_H) alloc-pool.h $(BASIC_BLOCK_H) $(TARGET_H) \
$(DIAGNOSTIC_H) $(RTL_H) $(EXPR_H) $(OPTABS_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-alias.o : tree-ssa-alias.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(GGC_H) $(TREE_INLINE_H) $(FLAGS_H) \
- $(FUNCTION_H) $(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h \
- $(TREE_DUMP_H) $(TREE_PASS_H) $(PARAMS_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
+ $(FUNCTION_H) $(TIMEVAR_H) convert.h $(TM_H) coretypes.h dumpfile.h \
+ langhooks.h \
+ $(PARAMS_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
$(GIMPLE_H) $(VEC_H) $(TARGET_H) \
vecprim.h pointer-set.h alloc-pool.h \
$(TREE_PRETTY_PRINT_H)
tree-ssa-reassoc.o : tree-ssa-reassoc.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) \
+ $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) \
+ $(TM_H) coretypes.h $(TREE_PASS_H) $(FLAGS_H) \
tree-iterator.h $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) \
$(VEC_H) langhooks.h alloc-pool.h pointer-set.h $(CFGLOOP_H) \
$(TARGET_H) $(GIMPLE_PRETTY_PRINT_H) $(DIAGNOSTIC_CORE_H)
tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(GGC_H) \
- $(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) langhooks.h \
+ $(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TM_H) \
+ coretypes.h toplev.h $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) langhooks.h \
$(FLAGS_H) $(CGRAPH_H) $(PLUGIN_H) \
$(TREE_INLINE_H) $(GGC_H) graph.h $(CGRAPH_H) \
$(TREE_PASS_H) $(CFGLOOP_H) $(EXCEPT_H)
@@ -2521,102 +2486,98 @@ gimplify.o : gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GIMPLE_H) \
$(SPLAY_TREE_H) $(VEC_H) tree-iterator.h $(TREE_PASS_H) $(TREE_PRETTY_PRINT_H)
gimple-iterator.o : gimple-iterator.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(GIMPLE_H) $(TREE_FLOW_H) value-prof.h
-gimple-fold.o : gimple-fold.c $(TREE_FLOW_H) $(CONFIG_H) \
+gimple-fold.o : gimple-fold.c $(TREE_FLOW_H) $(CONFIG_H) coretypes.h dumpfile.h \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(GGC_H) \
- $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \
+ $(FUNCTION_H) $(TM_H) $(BASIC_BLOCK_H) langhooks.h \
tree-ssa-propagate.h $(FLAGS_H) $(TARGET_H) gimple-fold.h
gimple-low.o : gimple-low.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(DIAGNOSTIC_CORE_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h \
- $(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
+ $(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(TM_H) coretypes.h \
$(EXCEPT_H) $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(TREE_PASS_H) \
$(HASHTAB_H) $(DIAGNOSTIC_CORE_H) tree-iterator.h
omp-low.o : omp-low.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h $(DIAGNOSTIC_CORE_H) \
- $(TREE_FLOW_H) $(TIMEVAR_H) $(FLAGS_H) $(EXPR_H) $(DIAGNOSTIC_CORE_H) \
+ $(TREE_FLOW_H) $(FLAGS_H) $(EXPR_H) $(DIAGNOSTIC_CORE_H) \
$(TREE_PASS_H) $(GGC_H) $(EXCEPT_H) $(SPLAY_TREE_H) $(OPTABS_H) \
$(CFGLOOP_H) tree-iterator.h gt-omp-low.h
tree-browser.o : tree-browser.c tree-browser.def $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_H) $(TREE_PRETTY_PRINT_H)
-omega.o : omega.c $(OMEGA_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
- $(DIAGNOSTIC_CORE_H) $(TREE_PASS_H)
-tree-chrec.o : tree-chrec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TREE_PRETTY_PRINT_H) $(CFGLOOP_H) $(TREE_FLOW_H) $(SCEV_H) $(TREE_PASS_H) \
+omega.o : omega.c $(OMEGA_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TREE_H) $(DIAGNOSTIC_CORE_H)
+tree-chrec.o : tree-chrec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TREE_PRETTY_PRINT_H) $(CFGLOOP_H) $(TREE_FLOW_H) $(SCEV_H) \
$(PARAMS_H)
tree-scalar-evolution.o : tree-scalar-evolution.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(GIMPLE_PRETTY_PRINT_H) $(TREE_FLOW_H) $(CFGLOOP_H) $(SCEV_H) \
- $(TREE_PASS_H) $(PARAMS_H) gt-tree-scalar-evolution.h
-tree-data-ref.o : tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+ coretypes.h dumpfile.h $(GIMPLE_PRETTY_PRINT_H) $(TREE_FLOW_H) $(CFGLOOP_H) $(SCEV_H) \
+ $(PARAMS_H) gt-tree-scalar-evolution.h
+tree-data-ref.o : tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
$(GIMPLE_PRETTY_PRINT_H) $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
- $(TREE_PASS_H) langhooks.h tree-affine.h $(PARAMS_H)
+ langhooks.h tree-affine.h $(PARAMS_H)
sese.o : sese.c sese.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_PRETTY_PRINT_H) \
$(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) value-prof.h
graphite.o : graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \
$(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h \
- $(DBGCNT_H) $(GRAPHITE_PPL_H) graphite-poly.h graphite-scop-detection.h \
+ $(DBGCNT_H) graphite-poly.h graphite-scop-detection.h \
graphite-clast-to-gimple.h graphite-sese-to-poly.h
graphite-blocking.o : graphite-blocking.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
- sese.h $(GRAPHITE_PPL_H) graphite-poly.h
+ coretypes.h dumpfile.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+ sese.h graphite-poly.h
graphite-clast-to-gimple.o : graphite-clast-to-gimple.c $(CONFIG_H) \
- $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
- $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-cloog-util.h \
- $(GRAPHITE_PPL_H) graphite-poly.h graphite-clast-to-gimple.h \
- graphite-dependences.h graphite-cloog-compat.h
-graphite-cloog-util.o : graphite-cloog-util.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h graphite-cloog-util.h graphite-cloog-compat.h
+ $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
+ $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h \
+ graphite-poly.h graphite-clast-to-gimple.h
graphite-dependences.o : graphite-dependences.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
- sese.h $(GRAPHITE_PPL_H) graphite-poly.h graphite-dependences.h \
- graphite-cloog-util.h
+ coretypes.h $(TREE_FLOW_H) $(TREE_PASS_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+ sese.h graphite-poly.h
graphite-interchange.o : graphite-interchange.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
- sese.h $(GRAPHITE_PPL_H) graphite-poly.h
-graphite-poly.o : graphite-poly.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(GIMPLE_PRETTY_PRINT_H) \
- $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h $(GRAPHITE_PPL_H) graphite-poly.h \
- graphite-dependences.h graphite-cloog-util.h
-graphite-ppl.o : graphite-ppl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- graphite-cloog-util.h $(GRAPHITE_PPL_H)
+ coretypes.h dumpfile.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+ sese.h graphite-poly.h
+graphite-poly.o : graphite-poly.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(GIMPLE_PRETTY_PRINT_H) \
+ $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-poly.h
graphite-scop-detection.o : graphite-scop-detection.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) \
- sese.h $(GRAPHITE_PPL_H) graphite-poly.h graphite-scop-detection.h
+ sese.h graphite-poly.h graphite-scop-detection.h
graphite-sese-to-poly.o : graphite-sese-to-poly.c $(CONFIG_H) \
- $(SYSTEM_H) coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
- $(TREE_DATA_REF_H) domwalk.h sese.h $(GRAPHITE_PPL_H) graphite-poly.h \
+ $(SYSTEM_H) coretypes.h $(TREE_FLOW_H) $(TREE_PASS_H) $(CFGLOOP_H) \
+ $(TREE_DATA_REF_H) domwalk.h sese.h graphite-poly.h \
graphite-sese-to-poly.h
+graphite-optimize-isl.o : graphite-optimize-isl.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h dumpfile.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(SCEV_H) \
+ sese.h graphite-poly.h
tree-vect-loop.o: tree-vect-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
- $(TREE_DUMP_H) $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) $(OPTABS_H) \
+ $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) $(OPTABS_H) \
$(DIAGNOSTIC_CORE_H) $(SCEV_H) $(TREE_VECTORIZER_H) \
$(GIMPLE_PRETTY_PRINT_H) $(TARGET_H) $(TREE_DATA_REF_H)
tree-vect-loop-manip.o: tree-vect-loop-manip.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(DIAGNOSTIC_CORE_H) \
+ $(TREE_FLOW_H) $(CFGLOOP_H) $(DIAGNOSTIC_CORE_H) \
$(SCEV_H) $(TREE_VECTORIZER_H) langhooks.h $(GIMPLE_PRETTY_PRINT_H)
-tree-vect-patterns.o: tree-vect-patterns.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+tree-vect-patterns.o: tree-vect-patterns.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h dumpfile.h \
$(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(EXPR_H) $(OPTABS_H) $(PARAMS_H) \
+ $(TREE_FLOW_H) $(CFGLOOP_H) $(EXPR_H) $(OPTABS_H) $(PARAMS_H) \
$(TREE_DATA_REF_H) $(TREE_VECTORIZER_H) $(RECOG_H) $(DIAGNOSTIC_CORE_H) \
$(GIMPLE_PRETTY_PRINT_H)
tree-vect-slp.o: tree-vect-slp.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(CFGLOOP_H) \
$(EXPR_H) $(RECOG_H) $(OPTABS_H) $(TREE_VECTORIZER_H) \
$(GIMPLE_PRETTY_PRINT_H) $(TREE_DATA_REF_H) langhooks.h
tree-vect-stmts.o: tree-vect-stmts.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
+ coretypes.h dumpfile.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) \
+ $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(CFGLOOP_H) \
$(EXPR_H) $(RECOG_H) $(OPTABS_H) $(TREE_VECTORIZER_H) \
langhooks.h $(GIMPLE_PRETTY_PRINT_H)
tree-vect-data-refs.o: tree-vect-data-refs.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
+ coretypes.h dumpfile.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
+ $(TREE_FLOW_H) $(CFGLOOP_H) \
$(EXPR_H) $(OPTABS_H) $(SCEV_H) $(TREE_VECTORIZER_H) \
$(DIAGNOSTIC_CORE_H) $(TM_P_H) $(GIMPLE_PRETTY_PRINT_H)
tree-vectorizer.o: tree-vectorizer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(GGC_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
- $(CFGLOOP_H) $(TREE_PASS_H) $(TREE_VECTORIZER_H) $(TIMEVAR_H) \
+ $(TM_H) $(GGC_H) $(TREE_H) $(TREE_FLOW_H) \
+ $(CFGLOOP_H) $(TREE_PASS_H) $(TREE_VECTORIZER_H) \
$(TREE_PRETTY_PRINT_H)
tree-loop-distribution.o: tree-loop-distribution.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H)
@@ -2636,12 +2597,13 @@ gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(TREE_FLOW_H) value-prof.h $(FLAGS_H) $(DEMANGLE_H) \
$(TARGET_H) $(ALIAS_H)
gimple-pretty-print.o : gimple-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h dumpfile.h \
$(TREE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) $(TREE_FLOW_H) \
- $(TM_H) coretypes.h $(TREE_PASS_H) $(GIMPLE_H) value-prof.h \
+ $(TM_H) $(GIMPLE_H) value-prof.h \
$(TRANS_MEM_H) $(GIMPLE_PRETTY_PRINT_H)
tree-mudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
$(GIMPLE_H) $(DIAGNOSTIC_H) $(DEMANGLE_H) $(HASHTAB_H) langhooks.h tree-mudflap.h \
- $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(CGRAPH_H) $(GGC_H) \
+ $(TM_H) coretypes.h $(TREE_PASS_H) $(CGRAPH_H) $(GGC_H) \
gt-tree-mudflap.h $(BASIC_BLOCK_H) $(FLAGS_H) $(FUNCTION_H) \
$(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(GIMPLE_H) tree-iterator.h
tree-nomudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
@@ -2650,11 +2612,11 @@ tree-nomudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
$(GGC_H) gt-tree-mudflap.h $(TREE_PASS_H) $(DIAGNOSTIC_CORE_H)
tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) $(TREE_FLOW_H) \
- $(TM_H) coretypes.h tree-iterator.h $(SCEV_H) langhooks.h \
- $(TREE_PASS_H) value-prof.h output.h $(TREE_PRETTY_PRINT_H)
-tree-diagnostic.o : tree-diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+ $(TM_H) coretypes.h dumpfile.h tree-iterator.h $(SCEV_H) langhooks.h \
+ value-prof.h output.h $(TREE_PRETTY_PRINT_H)
+tree-diagnostic.o : tree-diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
$(TREE_H) $(DIAGNOSTIC_H) tree-diagnostic.h langhooks.h $(LANGHOOKS_DEF_H) \
- $(VEC_H) $(TREE_PRETTY_PRINT_H) $(TREE_PASS_H)
+ $(VEC_H) $(TREE_PRETTY_PRINT_H)
fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(FLAGS_H) $(DIAGNOSTIC_CORE_H) $(HASHTAB_H) $(EXPR_H) $(RTL_H) \
$(GGC_H) $(TM_P_H) langhooks.h $(MD5_H) intl.h $(TARGET_H) \
@@ -2753,7 +2715,7 @@ melt-run-md5.h melt-run.h: $(srcdir)/melt-run.proto.h \
$(CONFIG_H) $(SYSTEM_H) $(TIMEVAR_H) $(TM_H) \
$(TREE_H) $(GGC_H) $(BASIC_BLOCK_H) $(GIMPLE_H) $(CFGLOOP_H) \
tree-pass.h $(MELT_H) gt-melt-runtime.h $(PLUGIN_H) $(TOPLEV_H) $(VERSION_H) | Makefile
- melt_run_md5=`$(CC) -C -E $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(srcdir)/melt-run.proto.h | grep -v '^#' | md5sum | cut -c 1-32`; \
+ melt_run_md5=`$(COMPILER) -C -E $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(srcdir)/melt-run.proto.h | grep -v '^#' | md5sum | cut -c 1-32`; \
( echo "const char melt_run_preprocessed_md5[]=\"$$melt_run_md5\";" > melt-run-md5.h-tmp ; \
sed -e "s,#define *MELT_RUN_HASHMD5 *XX,#define MELT_RUN_HASHMD5 \"$$melt_run_md5\"," \
-e "s,#define *MELT_GCC_VERSION *YY,#define MELT_GCC_VERSION $(shell cat $(BASEVER) | $(AWK) '{split($$0,vertab,"."); printf "%d", vertab[1]*1000+vertab[2]}')," \
@@ -2784,7 +2746,7 @@ CFLAGS-toplev.o += -DTARGET_NAME=\"$(target_noncanonical)\"
toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
version.h $(RTL_H) $(FUNCTION_H) $(FLAGS_H) xcoffout.h $(INPUT_H) \
$(INSN_ATTR_H) output.h $(DIAGNOSTIC_H) debug.h insn-config.h intl.h \
- $(RECOG_H) Makefile toplev.h $(DWARF2OUT_H) sdbout.h dbxout.h $(EXPR_H) \
+ $(RECOG_H) Makefile toplev.h sdbout.h dbxout.h $(EXPR_H) \
hard-reg-set.h $(BASIC_BLOCK_H) graph.h $(EXCEPT_H) $(REGS_H) $(TIMEVAR_H) \
value-prof.h $(PARAMS_H) $(TM_P_H) reload.h ira.h dwarf2asm.h $(TARGET_H) \
langhooks.h insn-flags.h $(CFGLOOP_H) hosthooks.h \
@@ -2799,7 +2761,7 @@ passes.o : passes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) $(FUNCTION_H) $(FLAGS_H) $(INPUT_H) $(INSN_ATTR_H) output.h \
$(DIAGNOSTIC_CORE_H) debug.h insn-config.h intl.h $(RECOG_H) toplev.h \
$(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \
- graph.h $(EXCEPT_H) $(REGS_H) $(TIMEVAR_H) value-prof.h \
+ graph.h $(EXCEPT_H) $(REGS_H) value-prof.h \
$(PARAMS_H) $(TM_P_H) reload.h $(TARGET_H) \
langhooks.h insn-flags.h $(CFGLOOP_H) \
hosthooks.h $(CGRAPH_H) $(COVERAGE_H) $(TREE_PASS_H) $(TREE_DUMP_H) \
@@ -2822,9 +2784,9 @@ rtl-error.o: rtl-error.c $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
rtl.o : rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(GGC_H) $(BCONFIG_H) insn-notes.def reg-notes.def $(DIAGNOSTIC_CORE_H)
-print-rtl.o : print-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+print-rtl.o : print-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H) $(FLAGS_H) \
- $(BCONFIG_H) $(DIAGNOSTIC_H) cselib.h $(TREE_PASS_H) $(TREE_PRETTY_PRINT_H) \
+ $(BCONFIG_H) $(DIAGNOSTIC_H) cselib.h $(TREE_PRETTY_PRINT_H) \
$(DWARF2OUT_H)
rtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(DIAGNOSTIC_CORE_H) \
$(RTL_H) hard-reg-set.h $(TM_P_H) insn-config.h $(RECOG_H) \
@@ -2842,11 +2804,11 @@ function.o : function.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_
$(OPTABS_H) $(LIBFUNCS_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \
output.h $(EXCEPT_H) $(HASHTAB_H) $(GGC_H) $(TM_P_H) langhooks.h \
gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(PREDICT_H) \
- $(TREE_PASS_H) $(DF_H) $(TIMEVAR_H) vecprim.h $(PARAMS_H) bb-reorder.h \
+ $(TREE_PASS_H) $(DF_H) vecprim.h $(PARAMS_H) bb-reorder.h \
$(COMMON_TARGET_H)
statistics.o : statistics.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_PASS_H) $(TREE_DUMP_H) $(HASHTAB_H) statistics.h $(FUNCTION_H)
-stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) insn-config.h hard-reg-set.h $(EXPR_H) \
$(LIBFUNCS_H) $(EXCEPT_H) $(RECOG_H) $(DIAGNOSTIC_CORE_H) \
output.h $(GGC_H) $(TM_P_H) langhooks.h $(PREDICT_H) $(OPTABS_H) \
@@ -2857,7 +2819,7 @@ except.o : except.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
langhooks.h insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
dwarf2asm.h $(DWARF2OUT_H) toplev.h $(DIAGNOSTIC_CORE_H) $(HASHTAB_H) intl.h $(GGC_H) \
gt-except.h $(CGRAPH_H) $(DIAGNOSTIC_H) $(DWARF2_H) \
- $(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
+ $(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TREE_FLOW_H) \
$(TREE_PRETTY_PRINT_H) sbitmap.h $(COMMON_TARGET_H) $(CFGLOOP_H)
expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) $(EXPR_H) $(OPTABS_H) \
@@ -2905,13 +2867,13 @@ sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) debug.h \
$(TREE_H) $(GGC_H) $(RTL_H) $(REGS_H) $(FLAGS_H) insn-config.h \
output.h $(DIAGNOSTIC_CORE_H) $(TM_P_H) gsyms.h langhooks.h $(TARGET_H) sdbout.h \
gt-sdbout.h reload.h
-dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) version.h $(RTL_H) $(DWARF2_H) debug.h $(FLAGS_H) insn-config.h \
- output.h $(DIAGNOSTIC_H) hard-reg-set.h $(REGS_H) $(EXPR_H) \
- $(LIBFUNCS_H) toplev.h $(DIAGNOSTIC_CORE_H) $(DWARF2OUT_H) reload.h \
+dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TM_H) $(TREE_H) version.h $(RTL_H) $(DWARF2_H) debug.h $(FLAGS_H) \
+ insn-config.h output.h $(DIAGNOSTIC_H) hard-reg-set.h $(REGS_H) $(EXPR_H) \
+ toplev.h $(DIAGNOSTIC_CORE_H) $(DWARF2OUT_H) reload.h \
$(GGC_H) $(EXCEPT_H) dwarf2asm.h $(TM_P_H) langhooks.h $(HASHTAB_H) \
gt-dwarf2out.h $(TARGET_H) $(CGRAPH_H) $(MD5_H) $(INPUT_H) $(FUNCTION_H) \
- $(GIMPLE_H) $(TREE_PASS_H) $(TREE_FLOW_H) \
+ $(GIMPLE_H) $(TREE_FLOW_H) \
$(TREE_PRETTY_PRINT_H) $(COMMON_TARGET_H) $(OPTS_H)
dwarf2cfi.o : dwarf2cfi.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
version.h $(RTL_H) $(EXPR_H) $(REGS_H) $(FUNCTION_H) output.h \
@@ -2934,7 +2896,7 @@ emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(DF_H) $(PARAMS_H) $(TARGET_H)
real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(DIAGNOSTIC_CORE_H) $(TM_P_H) $(REAL_H) dfp.h realmpfr.h
-realmpfr.o : realmpfr.c realmpfr.h $(CONFIG_H) $(SYSTEM_H) $(REAL_H) $(TREE_H)
+realmpfr.o : realmpfr.c realmpfr.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(REAL_H) $(TREE_H)
dfp.o : dfp.c dfp.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(TM_P_H) $(REAL_H) $(DECNUM_H)
fixed-value.o: fixed-value.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -2943,34 +2905,35 @@ jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) \
$(EXCEPT_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) \
$(DIAGNOSTIC_CORE_H) $(DIAGNOSTIC_CORE_H) $(INSN_ATTR_H) $(TM_P_H) reload.h \
- $(PREDICT_H) $(TIMEVAR_H) $(TARGET_H)
+ $(PREDICT_H) $(TARGET_H)
simplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(RECOG_H) $(EXPR_H) $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(GGC_H) $(TM_P_H) \
$(TREE_H) $(TARGET_H)
symtab.o : symtab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
langhooks.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) $(TARGET_H) $(CGRAPH_H) \
- $(HASHTAB_H) gt-symtab.h
-cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
+ $(TIMEVAR_H) $(HASHTAB_H) gt-symtab.h
+cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TM_H) $(TREE_H) $(TIMEVAR_H) \
langhooks.h toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) $(TARGET_H) $(CGRAPH_H) \
gt-cgraph.h intl.h $(BASIC_BLOCK_H) debug.h $(HASHTAB_H) \
- $(TREE_INLINE_H) $(TREE_DUMP_H) $(TREE_FLOW_H) cif-code.def \
+ $(TREE_INLINE_H) $(TREE_FLOW_H) cif-code.def \
value-prof.h $(EXCEPT_H) $(IPA_UTILS_H) $(DIAGNOSTIC_CORE_H) \
ipa-inline.h $(LTO_STREAMER_H) $(CFGLOOP_H) $(GIMPLE_PRETTY_PRINT_H)
cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) \
$(TARGET_H) $(CGRAPH_H) intl.h pointer-set.h $(FUNCTION_H) $(GIMPLE_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) debug.h $(DIAGNOSTIC_H) \
- $(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \
+ $(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(IPA_PROP_H) \
gt-cgraphunit.h tree-iterator.h $(COVERAGE_H) $(TREE_DUMP_H) \
$(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(IPA_UTILS_H) \
$(LTO_STREAMER_H) output.h $(REGSET_H) $(EXCEPT_H) $(GCC_PLUGIN_H) plugin.h
cgraphclones.o : cgraphclones.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) \
$(TARGET_H) $(CGRAPH_H) intl.h pointer-set.h $(FUNCTION_H) $(GIMPLE_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) debug.h $(DIAGNOSTIC_H) \
- $(FIBHEAP_H) $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \
- tree-iterator.h $(COVERAGE_H) $(TREE_DUMP_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) debug.h $(DIAGNOSTIC_H) $(TREE_DUMP_H) \
+ $(PARAMS_H) $(RTL_H) $(IPA_PROP_H) \
+ tree-iterator.h $(COVERAGE_H) \
$(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(IPA_UTILS_H) \
$(LTO_STREAMER_H) $(EXCEPT_H) $(GCC_PLUGIN_H) gt-cgraphclones.h
cgraphbuild.o : cgraphbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -2982,12 +2945,12 @@ varpool.o : varpool.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(GGC_H) $(TIMEVAR_H) debug.h $(TARGET_H) output.h $(GIMPLE_H) \
$(TREE_FLOW_H)
ipa.o : ipa.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(CGRAPH_H) \
- $(TREE_PASS_H) $(TIMEVAR_H) $(GIMPLE_H) $(TARGET_H) $(GGC_H) pointer-set.h \
+ $(TREE_PASS_H) $(GIMPLE_H) $(TARGET_H) $(GGC_H) pointer-set.h \
$(IPA_UTILS_H)
ipa-prop.o : ipa-prop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
langhooks.h $(GGC_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(DIAGNOSTIC_H) \
$(TREE_FLOW_H) $(TM_H) $(TREE_PASS_H) $(FLAGS_H) $(TREE_H) \
- $(TREE_INLINE_H) $(GIMPLE_H) $(TIMEVAR_H) \
+ $(TREE_INLINE_H) $(GIMPLE_H) \
$(GIMPLE_PRETTY_PRINT_H) $(LTO_STREAMER_H) \
$(DATA_STREAMER_H) $(TREE_STREAMER_H)
ipa-ref.o : ipa-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@@ -2995,139 +2958,133 @@ ipa-ref.o : ipa-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_FLOW_H) $(TM_H) $(TREE_PASS_H) $(FLAGS_H) $(TREE_H) $(GGC_H)
ipa-cp.o : ipa-cp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(TARGET_H) $(GIMPLE_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) \
- $(TREE_PASS_H) $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) \
- $(TREE_INLINE_H) $(FIBHEAP_H) $(PARAMS_H) $(TREE_PRETTY_PRINT_H) ipa-inline.h
+ $(TREE_PASS_H) $(FLAGS_H) $(DIAGNOSTIC_H) \
+ $(TREE_INLINE_H) $(PARAMS_H) $(TREE_PRETTY_PRINT_H) ipa-inline.h
ipa-split.o : ipa-split.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) \
- $(TREE_PASS_H) $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) \
- $(TREE_INLINE_H) $(FIBHEAP_H) $(PARAMS_H) $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h
-matrix-reorg.o : matrix-reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TREE_H) $(RTL_H) $(TREE_INLINE_H) $(TREE_FLOW_H) \
- tree-flow-inline.h langhooks.h $(HASHTAB_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) \
- debug.h $(TARGET_H) $(CGRAPH_H) $(DIAGNOSTIC_CORE_H) $(TIMEVAR_H) \
- $(PARAMS_H) $(FIBHEAP_H) intl.h $(FUNCTION_H) $(BASIC_BLOCK_H) \
- $(CFGLOOP_H) tree-iterator.h $(TREE_PASS_H) $(OPTS_H) $(TREE_DATA_REF_H) \
- tree-ssa-sccvn.h
+ $(TREE_PASS_H) $(FLAGS_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) \
+ $(TREE_INLINE_H) $(PARAMS_H) $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h
ipa-inline.o : ipa-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \
- $(DIAGNOSTIC_H) $(FIBHEAP_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(DIAGNOSTIC_H) $(FIBHEAP_H) $(PARAMS_H) $(TREE_PASS_H) \
$(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(RTL_H) $(IPA_PROP_H) \
$(EXCEPT_H) $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(TARGET_H) $(IPA_UTILS_H)
ipa-inline-analysis.o : ipa-inline-analysis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \
- $(DIAGNOSTIC_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(DIAGNOSTIC_H) $(PARAMS_H) $(TREE_PASS_H) $(CFGLOOP_H) \
$(HASHTAB_H) $(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(IPA_PROP_H) \
$(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(LTO_STREAMER_H) $(DATA_STREAMER_H) \
$(TREE_STREAMER_H)
ipa-inline-transform.o : ipa-inline-transform.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \
- $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(TREE_PASS_H) \
$(HASHTAB_H) $(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(IPA_PROP_H) \
$(TREE_PASS_H)
ipa-utils.o : ipa-utils.c $(IPA_UTILS_H) $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
- pointer-set.h $(GGC_H) $(GIMPLE_H) $(SPLAY_TREE_H) \
- $(CGRAPH_H) $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H)
+ coretypes.h dumpfile.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
+ langhooks.h pointer-set.h $(GGC_H) $(GIMPLE_H) $(SPLAY_TREE_H) \
+ $(CGRAPH_H) $(FLAGS_H) $(DIAGNOSTIC_H)
ipa-reference.o : ipa-reference.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(IPA_REFERENCE_H) $(IPA_UTILS_H) $(SPLAY_TREE_H) \
$(GIMPLE_H) $(CGRAPH_H) $(FLAGS_H) $(TREE_PASS_H) \
- $(TIMEVAR_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(LTO_STREAMER_H) \
+ $(DIAGNOSTIC_H) $(FUNCTION_H) $(LTO_STREAMER_H) \
$(DIAGNOSTIC_CORE_H) $(DATA_STREAMER_H)
ipa-pure-const.o : ipa-pure-const.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(IPA_UTILS_H) $(TARGET_H) \
- $(GIMPLE_H) $(CGRAPH_H) $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) \
+ $(GIMPLE_H) $(CGRAPH_H) $(FLAGS_H) $(TREE_PASS_H) \
$(DIAGNOSTIC_H) $(CFGLOOP_H) $(SCEV_H) $(LTO_STREAMER_H) \
$(GIMPLE_PRETTY_PRINT_H) $(DATA_STREAMER_H) $(TREE_STREAMER_H)
-coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
$(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \
$(FUNCTION_H) $(BASIC_BLOCK_H) toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) langhooks.h $(COVERAGE_H) \
- $(HASHTAB_H) tree-iterator.h $(CGRAPH_H) $(TREE_PASS_H) gcov-io.c $(TM_P_H) \
- $(DIAGNOSTIC_CORE_H) intl.h gt-coverage.h $(TARGET_H)
-cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+ tree-iterator.h $(CGRAPH_H) gcov-io.c $(TM_P_H) \
+ $(DIAGNOSTIC_CORE_H) intl.h gt-coverage.h $(TARGET_H) $(HASH_TABLE_H)
+cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) \
- $(EMIT_RTL_H) $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TREE_PASS_H) \
+ $(EMIT_RTL_H) $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) \
cselib.h gt-cselib.h $(GGC_H) $(TM_P_H) $(PARAMS_H) alloc-pool.h \
- $(HASHTAB_H) $(TARGET_H) $(BITMAP_H)
+ $(HASHTAB_H) $(TARGET_H) $(BITMAP_H) $(TREE_H)
cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) $(EXPR_H) toplev.h $(DIAGNOSTIC_CORE_H) \
- $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) \
+ $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) \
$(EXCEPT_H) $(TARGET_H) $(PARAMS_H) rtlhooks-def.h $(TREE_PASS_H) \
$(DF_H) $(DBGCNT_H)
dce.o : dce.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(EXCEPT_H) $(DF_H) cselib.h \
- $(DBGCNT_H) dce.h $(TIMEVAR_H) $(TREE_PASS_H) $(DBGCNT_H) $(TM_P_H) \
+ $(DBGCNT_H) dce.h $(VALTRACK_H) $(TREE_PASS_H) $(DBGCNT_H) $(TM_P_H) \
$(EMIT_RTL_H)
dse.o : dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(TM_P_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
- $(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) \
+ $(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) \
$(TREE_PASS_H) alloc-pool.h $(ALIAS_H) $(OPTABS_H) $(TARGET_H) \
$(BITMAP_H) $(PARAMS_H) $(TREE_FLOW_H)
fwprop.o : fwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(DIAGNOSTIC_CORE_H) insn-config.h $(RECOG_H) $(FLAGS_H) $(OBSTACK_H) $(BASIC_BLOCK_H) \
- $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \
+ $(DF_H) alloc-pool.h $(TREE_PASS_H) $(TARGET_H) \
$(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) domwalk.h sparseset.h
web.o : web.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) $(DIAGNOSTIC_CORE_H) \
- insn-config.h $(RECOG_H) $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H)
+ insn-config.h $(RECOG_H) $(DF_H) $(OBSTACK_H) $(TREE_PASS_H)
ree.o : ree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) \
- $(DF_H) $(TIMEVAR_H) $(TREE_PASS_H) $(RECOG_H) $(EXPR_H) \
+ $(DF_H) $(TREE_PASS_H) $(RECOG_H) $(EXPR_H) \
$(REGS_H) $(TREE_H) $(TM_P_H) insn-config.h $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) \
$(TARGET_H) $(OPTABS_H) insn-codes.h rtlhooks-def.h $(PARAMS_H) $(CGRAPH_H)
cprop.o : cprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) toplev.h $(DIAGNOSTIC_CORE_H) \
- $(TM_P_H) $(PARAMS_H) cselib.h $(EXCEPT_H) $(TREE_H) $(TIMEVAR_H) \
+ $(TM_P_H) $(PARAMS_H) cselib.h $(EXCEPT_H) $(TREE_H) \
intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H) \
$(DF_H) $(CFGLOOP_H)
gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(GGC_H) \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) toplev.h $(DIAGNOSTIC_CORE_H) \
- $(TM_P_H) $(PARAMS_H) cselib.h $(EXCEPT_H) gt-gcse.h $(TREE_H) $(TIMEVAR_H) \
+ $(TM_P_H) $(PARAMS_H) cselib.h $(EXCEPT_H) gt-gcse.h $(TREE_H) \
intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H) \
$(DF_H) gcse.h
store-motion.o : store-motion.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(GGC_H) \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) toplev.h $(DIAGNOSTIC_CORE_H) \
- $(TM_P_H) $(EXCEPT_H) $(TREE_H) $(TIMEVAR_H) \
+ $(TM_P_H) $(EXCEPT_H) $(TREE_H) \
intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
coretypes.h $(TM_H) $(REGS_H) $(FLAGS_H) output.h $(RESOURCE_H) $(DF_H) \
$(FUNCTION_H) $(DIAGNOSTIC_CORE_H) $(INSN_ATTR_H) $(EXCEPT_H) $(PARAMS_H) $(TM_P_H)
-lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
+lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h $(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(RECOG_H) \
$(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) sbitmap.h
mode-switching.o : mode-switching.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(INSN_ATTR_H) $(RECOG_H) $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) \
- $(TREE_PASS_H) $(TIMEVAR_H) $(DF_H) $(TARGET_H) $(EMIT_RTL_H)
+ $(TREE_PASS_H) $(DF_H) $(TARGET_H) $(EMIT_RTL_H)
tree-ssa-dce.o : tree-ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
- $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
+ $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TM_H) \
+ coretypes.h $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
$(GGC_H) $(GIMPLE_H) $(CFGLOOP_H) $(SCEV_H) $(GIMPLE_PRETTY_PRINT_H)
tree-call-cdce.o : tree-call-cdce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
- $(TREE_FLOW_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
+ $(TREE_FLOW_H) $(TM_H) \
+ coretypes.h $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
$(GIMPLE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-ccp.o : tree-ssa-ccp.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) \
- $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h $(PARAMS_H) \
- tree-ssa-propagate.h value-prof.h $(FLAGS_H) $(TARGET_H) $(DIAGNOSTIC_CORE_H) \
+ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h \
+ $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h $(PARAMS_H) \
+ tree-ssa-propagate.h value-prof.h $(FLAGS_H) $(TARGET_H) \
+ $(DIAGNOSTIC_CORE_H) $(HASH_TABLE_H) \
$(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H) gimple-fold.h
tree-ssa-strlen.o : tree-ssa-strlen.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_FLOW_H) $(TREE_PASS_H) domwalk.h alloc-pool.h tree-ssa-propagate.h \
$(GIMPLE_PRETTY_PRINT_H) $(PARAMS_H) $(EXPR_H)
tree-sra.o : tree-sra.c $(CONFIG_H) $(SYSTEM_H) coretypes.h alloc-pool.h \
$(TM_H) $(TREE_H) $(GIMPLE_H) $(CGRAPH_H) $(TREE_FLOW_H) \
- $(IPA_PROP_H) $(DIAGNOSTIC_H) statistics.h $(TREE_DUMP_H) $(TIMEVAR_H) \
+ $(IPA_PROP_H) $(DIAGNOSTIC_H) statistics.h \
$(PARAMS_H) $(TARGET_H) $(FLAGS_H) \
$(DBGCNT_H) $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
- $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \
+ $(TM_H) coretypes.h $(GIMPLE_H) \
$(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \
$(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H) \
$(GIMPLE_PRETTY_PRINT_H) langhooks.h
@@ -3144,59 +3101,60 @@ tree-vect-generic.o : tree-vect-generic.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
coretypes.h insn-codes.h $(DIAGNOSTIC_H) $(TARGET_H)
df-core.o : df-core.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
- hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
+ hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h \
$(TM_P_H) $(FLAGS_H) output.h $(TREE_PASS_H) $(PARAMS_H)
-df-problems.o : df-problems.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+df-problems.o : df-problems.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) \
$(RTL_H) insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
- $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(EXCEPT_H) dce.h vecprim.h
-df-scan.o : df-scan.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+ $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(EXCEPT_H) dce.h vecprim.h $(VALTRACK_H)
+df-scan.o : df-scan.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(RTL_H) \
insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
- hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
+ hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h \
$(TM_P_H) $(FLAGS_H) $(TARGET_H) $(TARGET_DEF_H) $(TREE_H) \
- $(TREE_PASS_H) $(EMIT_RTL_H)
+ $(EMIT_RTL_H)
regstat.o : regstat.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TM_P_H) $(FLAGS_H) $(REGS_H) $(EXCEPT_H) hard-reg-set.h \
$(BASIC_BLOCK_H) $(TIMEVAR_H) $(DF_H)
+valtrack.o : valtrack.c $(VALTRACK_H) $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h $(TM_H) $(FUNCTION_H) $(REGS_H) $(EMIT_RTL_H)
var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \
$(BASIC_BLOCK_H) bitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
- $(REGS_H) $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) $(TREE_FLOW_H) \
+ $(REGS_H) $(EXPR_H) $(TREE_PASS_H) $(TREE_FLOW_H) \
cselib.h $(TARGET_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H) $(DIAGNOSTIC_H) \
pointer-set.h $(RECOG_H) $(TM_P_H) $(TREE_PRETTY_PRINT_H) $(ALIAS_H)
-profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(REGS_H) $(EXPR_H) $(FUNCTION_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_CORE_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h \
- $(CFGLOOP_H) $(TIMEVAR_H) $(TREE_PASS_H) profile.h
-mcf.o : mcf.c profile.h $(CONFIG_H) $(SYSTEM_H) $(TM_H) coretypes.h \
+ $(CFGLOOP_H) profile.h
+mcf.o : mcf.c profile.h $(CONFIG_H) $(SYSTEM_H) $(TM_H) coretypes.h dumpfile.h \
$(BASIC_BLOCK_H) langhooks.h $(GCOV_IO_H) $(TREE_H)
tree-profile.o : tree-profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TARGET_H) $(TREE_H) $(FLAGS_H) $(FUNCTION_H) \
- $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(COVERAGE_H) $(TREE_H) value-prof.h $(TREE_DUMP_H) \
- $(TREE_PASS_H) $(TREE_FLOW_H) $(TIMEVAR_H) gt-tree-profile.h $(CGRAPH_H)
-value-prof.o : value-prof.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+ $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(COVERAGE_H) $(TREE_H) value-prof.h \
+ $(TREE_PASS_H) $(TREE_FLOW_H) gt-tree-profile.h $(CGRAPH_H)
+value-prof.o : value-prof.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h profile.h value-prof.h $(EXPR_H) $(FLAGS_H) \
$(RECOG_H) insn-config.h $(OPTABS_H) $(REGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
$(TREE_H) $(COVERAGE_H) $(RTL_H) $(GCOV_IO_H) $(TREE_FLOW_H) \
- tree-flow-inline.h $(TIMEVAR_H) $(TREE_PASS_H) $(DIAGNOSTIC_CORE_H) pointer-set.h \
+ tree-flow-inline.h $(TIMEVAR_H) $(DIAGNOSTIC_CORE_H) pointer-set.h \
$(GIMPLE_PRETTY_PRINT_H)
-loop-doloop.o : loop-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+loop-doloop.o : loop-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
$(DIAGNOSTIC_CORE_H) $(CFGLOOP_H) $(PARAMS_H) $(TARGET_H)
alloc-pool.o : alloc-pool.c $(CONFIG_H) $(SYSTEM_H) alloc-pool.h $(HASHTAB_H)
auto-inc-dec.o : auto-inc-dec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) insn-config.h \
$(REGS_H) $(FLAGS_H) $(FUNCTION_H) $(EXCEPT_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) \
- $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H)
-cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(FLAGS_H) \
- $(REGS_H) hard-reg-set.h $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(EXCEPT_H) $(GGC_H) \
- $(TM_P_H) $(TIMEVAR_H) $(OBSTACK_H) $(TREE_H) alloc-pool.h \
- $(HASHTAB_H) $(DF_H) $(CFGLOOP_H) $(TREE_FLOW_H) $(TREE_PASS_H)
+ $(EXPR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H)
+cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(DIAGNOSTIC_CORE_H) \
+ $(GGC_H) $(OBSTACK_H) alloc-pool.h $(HASHTAB_H) $(CFGLOOP_H) $(TREE_H) \
+ $(BASIC_BLOCK_H)
cfghooks.o: cfghooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TIMEVAR_H) toplev.h $(DIAGNOSTIC_CORE_H) $(CFGLOOP_H)
cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(TREE_PASS_H) $(RTL_H) \
+ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(FUNCTION_H) $(TM_H) \
+ coretypes.h $(EXCEPT_H) langhooks.h $(TREE_PASS_H) $(RTL_H) \
$(DIAGNOSTIC_H) toplev.h $(DIAGNOSTIC_CORE_H) $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) \
value-prof.h $(TREE_INLINE_H) $(TARGET_H) $(SSAEXPAND_H) $(REGS_H) \
$(GIMPLE_PRETTY_PRINT_H) $(BITMAP_H) sbitmap.h \
@@ -3207,47 +3165,46 @@ cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
insn-config.h $(EXPR_H) \
$(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \
$(TREE_PASS_H) $(DF_H) $(GGC_H) $(COMMON_TARGET_H) gt-cfgrtl.h
-cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h insn-config.h $(RECOG_H) $(TM_P_H) \
- $(TIMEVAR_H) $(OBSTACK_H) $(DIAGNOSTIC_CORE_H) vecprim.h sbitmap.h \
- $(BITMAP_H) $(CFGLOOP_H)
+cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(BASIC_BLOCK_H) \
+ $(TIMEVAR_H) vecprim.h sbitmap.h $(BITMAP_H)
cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h $(DIAGNOSTIC_CORE_H) \
$(FUNCTION_H) $(EXCEPT_H) $(TIMEVAR_H) $(TREE_H) $(EXPR_H) sbitmap.h
cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) $(TIMEVAR_H) hard-reg-set.h $(FLAGS_H) $(RECOG_H) \
+ $(RTL_H) hard-reg-set.h $(FLAGS_H) $(RECOG_H) \
$(DIAGNOSTIC_CORE_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H) \
$(REGS_H) $(EMIT_RTL_H) $(FUNCTION_H) $(TREE_PASS_H) $(CFGLOOP_H) $(EXPR_H) \
$(DF_H) $(DBGCNT_H) dce.h
-cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) coretypes.h $(TM_H) \
+cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) coretypes.h dumpfile.h $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(FLAGS_H) $(FUNCTION_H) \
$(OBSTACK_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_H) pointer-set.h \
$(GGC_H)
-cfgloopanal.o : cfgloopanal.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h $(TM_H) \
+cfgloopanal.o : cfgloopanal.c coretypes.h dumpfile.h $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
+ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) $(TM_H) \
$(OBSTACK_H) graphds.h $(PARAMS_H)
graphds.o : graphds.c graphds.h $(CONFIG_H) $(SYSTEM_H) $(BITMAP_H) $(OBSTACK_H) \
coretypes.h $(VEC_H) vecprim.h
-loop-iv.o : loop-iv.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(BASIC_BLOCK_H) \
- hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H) \
+loop-iv.o : loop-iv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(RTL_H) $(BASIC_BLOCK_H) \
+ hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) $(TM_H) $(OBSTACK_H) \
intl.h $(DIAGNOSTIC_CORE_H) $(DF_H) $(HASHTAB_H)
-loop-invariant.o : loop-invariant.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) \
- coretypes.h $(TM_H) $(TM_P_H) $(FUNCTION_H) $(FLAGS_H) $(DF_H) \
+loop-invariant.o : loop-invariant.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(RTL_H) $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) \
+ $(TM_H) $(TM_P_H) $(FUNCTION_H) $(FLAGS_H) $(DF_H) \
$(OBSTACK_H) $(HASHTAB_H) $(EXCEPT_H) $(PARAMS_H) $(REGS_H) ira.h
cfgloopmanip.o : cfgloopmanip.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) \
coretypes.h $(TM_H) $(OBSTACK_H) $(TREE_FLOW_H)
loop-init.o : loop-init.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(GGC_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) \
- coretypes.h $(TM_H) $(OBSTACK_H) $(TREE_PASS_H) $(TIMEVAR_H) $(FLAGS_H) \
- $(DF_H)
-loop-unswitch.o : loop-unswitch.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(PARAMS_H) \
- $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H)
-loop-unroll.o: loop-unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(PARAMS_H) \
- $(EXPR_H) coretypes.h $(TM_H) $(HASHTAB_H) $(RECOG_H) \
+ coretypes.h $(TM_H) $(OBSTACK_H) $(TREE_PASS_H) $(FLAGS_H) \
+ $(REGS_H) $(DF_H)
+loop-unswitch.o : loop-unswitch.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(RTL_H) $(TM_H) $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(PARAMS_H) \
+ $(EXPR_H) $(TM_H) $(OBSTACK_H)
+loop-unroll.o: loop-unroll.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(RTL_H) $(TM_H) $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(PARAMS_H) \
+ $(EXPR_H) $(TM_H) $(HASHTAB_H) $(RECOG_H) \
$(OBSTACK_H)
dominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(BASIC_BLOCK_H) et-forest.h $(OBSTACK_H) $(DIAGNOSTIC_CORE_H) \
@@ -3257,23 +3214,27 @@ et-forest.o : et-forest.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(FUNCTION_H) insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \
rtlhooks-def.h $(BASIC_BLOCK_H) $(RECOG_H) hard-reg-set.h \
- $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(TREE_H) $(TARGET_H) $(PARAMS_H) $(OPTABS_H) \
- insn-codes.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) vecprim.h $(CGRAPH_H) \
- $(OBSTACK_H)
+ $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(TREE_H) $(TARGET_H) \
+ output.h $(PARAMS_H) $(OPTABS_H) \
+ insn-codes.h $(TREE_PASS_H) $(DF_H) $(VALTRACK_H) \
+ vecprim.h $(CGRAPH_H) $(OBSTACK_H)
reginfo.o : reginfo.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) addresses.h $(REGS_H) \
insn-config.h $(RECOG_H) reload.h $(DIAGNOSTIC_CORE_H) \
- $(FUNCTION_H) output.h $(TM_P_H) $(EXPR_H) $(TIMEVAR_H) $(HASHTAB_H) \
+ $(FUNCTION_H) output.h $(TM_P_H) $(EXPR_H) $(HASHTAB_H) \
$(TARGET_H) $(TREE_PASS_H) $(DF_H) ira.h
bitmap.o : bitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(GGC_H) gt-bitmap.h $(BITMAP_H) $(OBSTACK_H) $(HASHTAB_H)
vec.o : vec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(VEC_H) $(GGC_H) \
$(DIAGNOSTIC_CORE_H) $(HASHTAB_H)
+hash-table.o : hash-table.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+ $(HASHTAB_H)
reload.o : reload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(RECOG_H) \
hard-reg-set.h insn-config.h $(REGS_H) $(FUNCTION_H) real.h \
addresses.h $(TM_P_H) $(PARAMS_H) $(TARGET_H) $(DF_H) ira.h $(DIAGNOSTIC_CORE_H)
-reload1.o : reload1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
+reload1.o : reload1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TM_H) $(RTL_ERROR_H) \
$(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) hard-reg-set.h insn-config.h \
$(BASIC_BLOCK_H) $(RECOG_H) $(FUNCTION_H) $(TM_P_H) \
addresses.h $(EXCEPT_H) $(TREE_H) $(FLAGS_H) $(MACHMODE_H) \
@@ -3284,30 +3245,31 @@ postreload.o : postreload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) \
$(FUNCTION_H) $(DIAGNOSTIC_CORE_H) cselib.h $(TM_P_H) $(EXCEPT_H) $(TREE_H) $(MACHMODE_H) \
- $(OBSTACK_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
+ $(OBSTACK_H) $(TARGET_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) $(DIAGNOSTIC_CORE_H) \
$(TM_P_H) $(EXCEPT_H) $(TREE_H) $(TARGET_H) $(HASHTAB_H) intl.h $(OBSTACK_H) \
- $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DBGCNT_H)
-caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+ $(PARAMS_H) $(TREE_PASS_H) $(DBGCNT_H)
+caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TM_H) $(RTL_H) \
$(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(FUNCTION_H) \
addresses.h $(RECOG_H) reload.h $(EXPR_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(DF_H) \
gt-caller-save.h $(GGC_H)
bt-load.o : bt-load.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(EXCEPT_H) \
$(RTL_H) hard-reg-set.h $(REGS_H) $(TM_P_H) $(FIBHEAP_H) $(EXPR_H) \
$(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) $(FUNCTION_H) $(TREE_PASS_H) \
- $(DIAGNOSTIC_CORE_H) $(DF_H) vecprim.h $(RECOG_H)
+ $(DIAGNOSTIC_CORE_H) $(DF_H) vecprim.h $(RECOG_H) $(CFGLOOP_H)
reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
conditions.h hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) insn-config.h \
$(INSN_ATTR_H) $(EXCEPT_H) $(RECOG_H) $(FUNCTION_H) $(FLAGS_H) output.h \
$(EXPR_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H) $(TM_P_H) $(OBSTACK_H) $(RESOURCE_H) \
- $(TIMEVAR_H) $(TARGET_H) $(TREE_PASS_H)
-alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+ $(TARGET_H) $(TREE_PASS_H)
+alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) $(RTL_H) \
$(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) $(DIAGNOSTIC_CORE_H) \
$(ALIAS_H) $(EMIT_RTL_H) $(GGC_H) $(FUNCTION_H) cselib.h $(TREE_H) $(TM_P_H) \
langhooks.h $(TARGET_H) gt-alias.h $(TIMEVAR_H) $(CGRAPH_H) \
- $(SPLAY_TREE_H) $(DF_H) $(TREE_PASS_H) \
+ $(SPLAY_TREE_H) $(DF_H) \
tree-ssa-alias.h pointer-set.h $(TREE_FLOW_H)
stack-ptr-mod.o : stack-ptr-mod.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) $(TREE_PASS_H) \
@@ -3324,7 +3286,7 @@ ira-costs.o: ira-costs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(REGS_H) addresses.h insn-config.h $(RECOG_H) $(DIAGNOSTIC_CORE_H) $(TARGET_H) \
$(PARAMS_H) $(IRA_INT_H) reload.h
ira-conflicts.o: ira-conflicts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \
+ $(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(TREE_H) $(FLAGS_H) \
insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(PARAMS_H) \
$(DF_H) sparseset.h addresses.h $(IRA_INT_H)
ira-color.o: ira-color.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -3333,7 +3295,7 @@ ira-color.o: ira-color.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(DF_H) $(IRA_INT_H)
ira-emit.o: ira-emit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) hard-reg-set.h \
- $(BASIC_BLOCK_H) $(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) \
+ $(BASIC_BLOCK_H) $(EXPR_H) $(RECOG_H) $(PARAMS_H) \
$(TREE_PASS_H) reload.h $(DF_H) $(IRA_INT_H)
ira-lives.o: ira-lives.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TARGET_H) $(RTL_H) $(REGS_H) $(EXCEPT_H) hard-reg-set.h $(FLAGS_H) \
@@ -3342,15 +3304,15 @@ ira-lives.o: ira-lives.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(OBSTACK_H) \
$(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) $(DBGCNT_H) $(FUNCTION_H) \
- $(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) output.h \
+ $(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TREE_PASS_H) output.h \
$(EXCEPT_H) reload.h toplev.h $(DIAGNOSTIC_CORE_H) $(DF_H) $(GGC_H) $(IRA_INT_H)
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) \
+ insn-config.h $(TREE_PASS_H) $(DF_H) \
$(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
$(EXPR_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) \
$(EXCEPT_H) ira.h reload.h $(TARGET_H)
combine-stack-adj.o : combine-stack-adj.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(RTL_H) insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(TM_H) $(RTL_H) insn-config.h $(TREE_PASS_H) \
$(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
$(EXPR_H) $(BASIC_BLOCK_H) $(TM_P_H) $(DF_H) $(EXCEPT_H) reload.h
compare-elim.o : compare-elim.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@@ -3365,9 +3327,10 @@ modulo-sched.o : modulo-sched.c $(DDG_H) $(CONFIG_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TARGET_H) $(DIAGNOSTIC_CORE_H) $(RTL_H) $(TM_P_H) $(REGS_H) $(FUNCTION_H) \
$(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(EXCEPT_H) $(RECOG_H) \
$(SCHED_INT_H) $(CFGLOOP_H) $(EXPR_H) $(PARAMS_H) \
- $(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TREE_PASS_H) \
$(DF_H) $(DBGCNT_H)
-haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(TM_H) $(RTL_H) \
$(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(FUNCTION_H) \
$(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(TM_P_H) $(TARGET_H) \
$(PARAMS_H) $(DBGCNT_H) $(CFGLOOP_H) ira.h $(EMIT_RTL_H) $(COMMON_TARGET_H) \
@@ -3375,35 +3338,35 @@ haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_
sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) cselib.h \
- ira.h $(PARAMS_H) $(TM_P_H) ira.h $(TARGET_H)
+ ira.h $(PARAMS_H) $(TM_P_H) ira.h $(TARGET_H) $(TREE_H)
sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) sel-sched.h $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(TM_P_H) sel-sched.h $(TARGET_H) $(TREE_PASS_H) \
$(DBGCNT_H)
sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(TM_P_H) \
$(PARAMS_H) $(TARGET_H)
-sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H) \
- $(TREE_PASS_H) $(INSN_ATTR_H)
+ $(INSN_ATTR_H) $(TREE_H)
sel-sched.o : sel-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_ERROR_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) output.h $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(TM_P_H) output.h $(TARGET_H) $(TREE_PASS_H) \
$(SCHED_INT_H) $(GGC_H) $(TREE_H) langhooks.h rtlhooks-def.h \
$(SEL_SCHED_IR_H) $(SEL_SCHED_DUMP_H) sel-sched.h $(DBGCNT_H) $(EMIT_RTL_H)
sel-sched-dump.o : sel-sched-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(TM_P_H) $(TARGET_H) $(TREE_PASS_H) \
$(SEL_SCHED_DUMP_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(SEL_SCHED_IR_H) \
$(BASIC_BLOCK_H) cselib.h
sel-sched-ir.o : sel-sched-ir.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) $(SCHED_INT_H) $(GGC_H) \
+ $(TM_P_H) $(TARGET_H) $(TREE_PASS_H) $(SCHED_INT_H) $(GGC_H) \
$(TREE_H) langhooks.h rtlhooks-def.h $(SEL_SCHED_IR_H) $(SEL_SCHED_DUMP_H) \
$(EMIT_RTL_H)
final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
@@ -3411,51 +3374,51 @@ final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
insn-config.h $(INSN_ATTR_H) $(FUNCTION_H) output.h hard-reg-set.h \
$(EXCEPT_H) debug.h xcoffout.h toplev.h $(DIAGNOSTIC_CORE_H) reload.h $(DWARF2OUT_H) \
$(TREE_PASS_H) $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) \
- dbxout.h $(TIMEVAR_H) $(CGRAPH_H) $(COVERAGE_H) \
+ dbxout.h $(CGRAPH_H) $(COVERAGE_H) \
$(DF_H) vecprim.h $(GGC_H) $(CFGLOOP_H) $(PARAMS_H) $(TREE_FLOW_H) \
$(TARGET_DEF_H) $(TREE_PRETTY_PRINT_H)
recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(FUNCTION_H) $(BASIC_BLOCK_H) $(REGS_H) $(RECOG_H) $(EXPR_H) \
$(FLAGS_H) insn-config.h $(INSN_ATTR_H) reload.h \
- addresses.h $(TM_P_H) $(TIMEVAR_H) $(TREE_PASS_H) hard-reg-set.h \
+ addresses.h $(TM_P_H) $(TREE_PASS_H) hard-reg-set.h \
$(DF_H) $(DBGCNT_H) $(TARGET_H) $(DIAGNOSTIC_CORE_H)
reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_ERROR_H) $(TREE_H) $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \
insn-config.h reload.h $(FUNCTION_H) $(TM_P_H) $(GGC_H) \
- $(BASIC_BLOCK_H) $(TIMEVAR_H) \
+ $(BASIC_BLOCK_H) \
$(TREE_PASS_H) $(TARGET_H) vecprim.h $(DF_H) $(EMIT_RTL_H)
sreal.o: sreal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h sreal.h
predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) \
hard-reg-set.h $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(FUNCTION_H) $(EXCEPT_H) \
$(TM_P_H) $(PREDICT_H) sreal.h $(PARAMS_H) $(TARGET_H) $(CFGLOOP_H) \
- $(COVERAGE_H) $(SCEV_H) $(GGC_H) predict.def $(TIMEVAR_H) $(TREE_DUMP_H) \
+ $(COVERAGE_H) $(SCEV_H) $(GGC_H) predict.def \
$(TREE_FLOW_H) $(TREE_PASS_H) $(EXPR_H) pointer-set.h
lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(DIAGNOSTIC_CORE_H) \
$(RTL_H) $(GGC_H) gt-lists.h
bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) $(FLAGS_H) $(TIMEVAR_H) output.h $(FIBHEAP_H) \
+ $(RTL_H) $(FLAGS_H) output.h $(FIBHEAP_H) \
$(TARGET_H) $(FUNCTION_H) $(TM_P_H) $(OBSTACK_H) $(EXPR_H) $(REGS_H) \
$(PARAMS_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_PASS_H) $(DF_H) \
$(EXCEPT_H) bb-reorder.h
tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h \
- $(FLAGS_H) $(TIMEVAR_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \
+ $(FLAGS_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \
$(TREE_PASS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) $(CFGLOOP_H)
timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) $(TIMEVAR_H)
regcprop.o : regcprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
$(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \
- addresses.h reload.h $(DIAGNOSTIC_CORE_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H)
+ addresses.h reload.h $(DIAGNOSTIC_CORE_H) $(TREE_PASS_H) $(DF_H)
regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_ERROR_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
output.h $(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \
- addresses.h reload.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(TARGET_H) \
+ addresses.h reload.h $(TREE_PASS_H) $(DF_H) $(TARGET_H) \
regrename.h $(EMIT_RTL_H)
ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) insn-config.h $(FUNCTION_H) $(RECOG_H) \
$(TARGET_H) $(BASIC_BLOCK_H) $(EXPR_H) output.h $(EXCEPT_H) $(TM_P_H) \
- $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h $(TIMEVAR_H) \
+ $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h pointer-set.h \
$(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(COMMON_TARGET_H) \
$(PARAMS_H) $(DIAGNOSTIC_CORE_H)
@@ -3463,10 +3426,10 @@ pointer-set.o: pointer-set.c pointer-set.h $(CONFIG_H) $(SYSTEM_H)
hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H)
pretty-print.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h intl.h $(PRETTY_PRINT_H)
errors.o : errors.c $(CONFIG_H) $(SYSTEM_H) errors.h
-dbgcnt.o: dbgcnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(DBGCNT_H) \
- $(TM_H) $(RTL_H)
+dbgcnt.o: dbgcnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h \
+ $(DIAGNOSTIC_CORE_H) $(DBGCNT_H)
lower-subreg.o : lower-subreg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(MACHMODE_H) $(TM_H) $(RTL_H) $(TM_P_H) $(TIMEVAR_H) $(FLAGS_H) \
+ $(MACHMODE_H) $(TM_H) $(RTL_H) $(TM_P_H) $(FLAGS_H) \
insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) $(OBSTACK_H) $(BITMAP_H) \
$(EXPR_H) $(EXCEPT_H) $(REGS_H) $(TREE_PASS_H) $(DF_H) dce.h \
lower-subreg.h
@@ -3475,7 +3438,7 @@ target-globals.o : target-globals.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(FLAGS_H) $(REGS_H) $(RTL_H) reload.h expmed.h $(EXPR_H) $(OPTABS_H) \
$(LIBFUNCS_H) $(CFGLOOP_H) $(IRA_INT_H) builtins.h gcse.h bb-reorder.h \
lower-subreg.h
-hw-doloop.o : hw-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+hw-doloop.o : hw-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
$(DF_H) $(CFGLOOP_H) $(RECOG_H) $(TARGET_H) \
$(REGS_H) hw-doloop.h
@@ -3540,7 +3503,7 @@ insn-modes.o : insn-modes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(MACHMODE_H)
insn-opinit.o : insn-opinit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(TM_P_H) insn-config.h $(FLAGS_H) $(RECOG_H) \
- $(EXPR_H) $(OPTABS_H) reload.h
+ $(EXPR_H) $(OPTABS_H)
insn-output.o : insn-output.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(GGC_H) $(REGS_H) conditions.h \
hard-reg-set.h insn-config.h $(INSN_ATTR_H) $(EXPR_H) output.h \
@@ -3569,7 +3532,7 @@ simple_rtl_generated_h = insn-attr.h insn-attr-common.h insn-codes.h \
insn-config.h insn-flags.h
simple_rtl_generated_c = insn-automata.c insn-emit.c \
- insn-extract.c insn-opinit.c insn-output.c \
+ insn-extract.c insn-output.c \
insn-peep.c insn-recog.c
simple_generated_h = $(simple_rtl_generated_h) insn-constants.h
@@ -3616,6 +3579,15 @@ s-attrtab : $(MD_DEPS) build/genattrtab$(build_exeext) \
$(SHELL) $(srcdir)/../move-if-change tmp-latencytab.c insn-latencytab.c
$(STAMP) s-attrtab
+# genopinit produces two files.
+insn-opinit.c insn-opinit.h: s-opinit ; @true
+s-opinit: $(MD_DEPS) build/genopinit$(build_exeext) insn-conditions.md
+ $(RUN_GEN) build/genopinit$(build_exeext) $(md_file) \
+ insn-conditions.md -htmp-opinit.h -ctmp-opinit.c
+ $(SHELL) $(srcdir)/../move-if-change tmp-opinit.h insn-opinit.h
+ $(SHELL) $(srcdir)/../move-if-change tmp-opinit.c insn-opinit.c
+ $(STAMP) s-opinit
+
# gencondmd doesn't use the standard naming convention.
build/gencondmd.c: s-conditions; @true
s-conditions: $(MD_DEPS) build/genconditions$(build_exeext)
@@ -3753,7 +3725,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(srcdir)/cselib.h $(srcdir)/basic-block.h $(srcdir)/ipa-ref.h $(srcdir)/cgraph.h \
$(srcdir)/reload.h $(srcdir)/caller-save.c $(srcdir)/symtab.c \
$(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
- $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/matrix-reorg.c \
+ $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c \
$(srcdir)/dbxout.c \
$(srcdir)/dwarf2out.h \
$(srcdir)/dwarf2asm.c \
@@ -3798,14 +3770,6 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(srcdir)/ipa-inline.h \
@all_gtfiles@
-
-## compute the real path of above GTFILES - keeping language tags as
-## before. There are cases where this don't work (e.g. some
-## automount-ed file systems). This could be useful in plugin mode of
-## gengtype.
-REALGTFILES = $(foreach f, $(GTFILES), $(if $(patsubst [%],,$f), $(realpath $f), $f))
-
-
# Compute the list of GT header files from the corresponding C sources,
# possibly nested within config or language subdirectories. Match gengtype's
# behavior in this respect: gt-LANG-file.h for "file" anywhere within a LANG
@@ -3827,20 +3791,13 @@ ALL_GTFILES_H := $(sort $(GTFILES_H) $(GTFILES_LANG_H))
$(ALL_GTFILES_H) gtype-desc.c gtype-desc.h gtype.state: s-gtype ; @true
-## we generate the gtyp-real-input.list only for convenience of
-## plugins needing GCC and using gengtype in plugin mode. The
-## gtyp-real-input.list file contains only absolute paths, it may not
-## work in some cases (e.g. perhaps when build tree is auto-mount-ed).
-
### Common flags to gengtype [e.g. -v or -B backupdir]
GENGTYPE_FLAGS= -v
-gtyp-input.list gtyp-real-input.list: s-gtyp-input ; @true
+gtyp-input.list: s-gtyp-input ; @true
s-gtyp-input: Makefile
@: $(call write_entries_to_file,$(GTFILES),tmp-gi.list)
$(SHELL) $(srcdir)/../move-if-change tmp-gi.list gtyp-input.list
- @: $(call write_entries_to_file,$(REALGTFILES),tmp-realgi.list)
- $(SHELL) $(srcdir)/../move-if-change tmp-realgi.list gtyp-real-input.list
$(STAMP) s-gtyp-input
s-gtype: build/gengtype$(build_exeext) $(filter-out [%], $(GTFILES)) \
@@ -3948,29 +3905,46 @@ build/genextract.o : genextract.c $(RTL_BASE_H) $(BCONFIG_H) \
build/genflags.o : genflags.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H) \
$(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) gensupport.h
build/gengenrtl.o : gengenrtl.c $(BCONFIG_H) $(SYSTEM_H) rtl.def
+
+# The gengtype generator program is special: Two versions are built.
+# One is for the build machine, and one is for the host to allow
+# plugins to define their types and generate the supporting GGC
+# datastructures and routines with GTY markers.
+# The host object files depend on CONFIG_H, and the build objects
+# on BCONFIG_H. For the build objects, add -DGENERATOR_FILE manually,
+# the build-%: rule doesn't apply to them.
+
gengtype-lex.o build/gengtype-lex.o : gengtype-lex.c gengtype.h $(SYSTEM_H)
gengtype-lex.o: $(CONFIG_H)
+CFLAGS-gengtype-lex.o += -DGENERATOR_FILE
build/gengtype-lex.o: $(BCONFIG_H)
+
gengtype-parse.o build/gengtype-parse.o : gengtype-parse.c gengtype.h \
$(SYSTEM_H)
gengtype-parse.o: $(CONFIG_H)
+CFLAGS-gengtype-parse.o += -DGENERATOR_FILE
build/gengtype-parse.o: $(BCONFIG_H)
+
gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \
gengtype.h errors.h double-int.h version.h $(HASHTAB_H) $(OBSTACK_H) \
$(XREGEX_H)
gengtype-state.o: $(CONFIG_H)
+CFLAGS-gengtype-state.o += -DGENERATOR_FILE
build/gengtype-state.o: $(BCONFIG_H)
+
gengtype.o build/gengtype.o : gengtype.c $(SYSTEM_H) gengtype.h \
rtl.def insn-notes.def errors.h double-int.h version.h $(HASHTAB_H) \
$(OBSTACK_H) $(XREGEX_H)
gengtype.o: $(CONFIG_H)
+CFLAGS-gengtype.o += -DGENERATOR_FILE
build/gengtype.o: $(BCONFIG_H)
+
build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \
errors.h $(READ_MD_H)
build/genmodes.o : genmodes.c $(BCONFIG_H) $(SYSTEM_H) errors.h \
$(HASHTAB_H) machmode.def $(extra_modes_file)
build/genopinit.o : genopinit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
- coretypes.h $(GTM_H) errors.h gensupport.h
+ coretypes.h $(GTM_H) errors.h gensupport.h optabs.def
build/genoutput.o : genoutput.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
coretypes.h $(GTM_H) errors.h $(READ_MD_H) gensupport.h
build/genpeep.o : genpeep.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
@@ -4531,7 +4505,7 @@ mostlyclean: lang.mostlyclean
# Delete core dumps.
-rm -f core */core
# Delete file generated for gengtype
- -rm -f gtyp-input.list gtyp-real-input.list
+ -rm -f gtyp-input.list
# Delete files generated by gengtype
-rm -f gtype-*
-rm -f gt-*
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 328e1857446..06259ebe1fc 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,1640 @@
+2012-08-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * layout.adb (Set_Elem_Alignment): Cap the alignment of access types
+ to that of a regular access type for non-strict-alignment platforms.
+ * gcc-interface/utils.c (finish_fat_pointer_type): Do not set the
+ alignment for non-strict-alignment platforms.
+
+2012-08-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Use proper
+ dummy type for the temporary COMPONENT_REF built for a derived tagged
+ type with discriminant.
+
+2012-08-14 Diego Novillo <dnovillo@google.com>
+
+ Merge from cxx-conversion branch. Re-implement VEC in C++.
+
+ * gcc-interface/trans.c (finalize_nrv_unc_r): Adjust VEC_index usage.
+ * gcc-interface/utils.c (convert): Likewise.
+ (remove_conversions): Likewise.
+ * gcc-interface/utils2.c (compare_fat_pointers): Likewise.
+ (build_unary_op): Likewise.
+ (gnat_stabilize_reference): Likewise.
+
+2012-08-06 Jose Ruiz <ruiz@adacore.com>
+
+ * gcc-interface/Makefile.in: Add support for 32-bit VxWorks for SPARC
+ in kernel mode.
+
+2012-08-06 Arnaud Charlet <charlet@adacore.com>
+
+ * prj-attr.adb (Register_New_Package): Add missing blank.
+
+2012-08-06 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_aggr.adb (Is_Two_Dim_Packed_Array): New predicate,
+ used when computing maximum size allowable to construct static
+ aggregate.
+
+2012-08-06 Vincent Pucci <pucci@adacore.com>
+
+ * freeze.adb (Freeze_Entity): Inherit_Aspects_At_Freeze_Point
+ calls added for derived types and subtypes.
+ * sem_aux.adb, sem_aux.ads (Get_Rep_Item, Get_Rep_Pragma,
+ Has_Rep_Pragma): New routines.
+ * sem_ch13.ads (Inherit_Aspects_At_Freeze_Point): New routine.
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Error message
+ for aspect Lock_Free fixed.
+ (Inherits_Aspects_At_Freeze_Point): New routine.
+ * sem_ch3.adb: Several flag settings removed since inheritance
+ of aspects must be performed at freeze point.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * s-oscons-tmplt.c: Fix s-oscons.ads formatting on VxWorks.
+
+2012-08-06 Vincent Pucci <pucci@adacore.com>
+
+ * sem_dim.adb (Analyze_Dimension_Binary_Op): Issue an error message
+ for unknown exponent at compile-time.
+
+2012-08-06 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_eval.ads (Compile_Time_Known_Value_Or_Aggr): Enhance
+ comment to make it clear that the aggregate's evaluation might
+ still involve run-time checks even though the aggregate is
+ considered known at compile time.
+ * sinfo.ads (Compile_Time_Known_Aggregate): Correct comment to
+ refer to Exp_Aggr instead of Sem_Aggr.
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * xoscons.adb: Minor code reorganization (remove unused variable
+ E at line 331).
+ * g-sercom.ads, exp_attr.adb: Minor reformatting.
+ * sinfo.adb, sinfo.ads: Minor cleanup, remove unused flag
+ Static_Processing_OK.
+
+2012-08-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Build_Derived_Concurrent_Type): Copy discriminant
+ constraint when building a constrained subtype, to prevent
+ undesirable tree sharing betweeb geberated subtype and derived
+ type definition.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * g-sercom-mingw.adb, s-oscons-tmplt.c: Add missing constants
+ on Windows.
+
+2012-08-06 Sergey Rybin <rybin@adacore.com frybin>
+
+ * tree_io.ads: Update ASIS_Version_Number because of the tree fix
+ for discriminant constraints for concurrent types.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * sem_ch4.adb: Minor reformatting.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * s-oscons-tmplt.c, xoscons.adb: Per the Single UNIX Specification,
+ types cc_t, speed_t, and tcflag_t defined in <termios.h> all are
+ unsigned types. Add required special handling to have their correct
+ unsigned values in s-oscons.ads.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * par-ch13.adb: Minor reformatting.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * g-sercom.adb, g-sercom.ads, g-sercom-mingw.adb, g-sercom-linux.adb
+ (Set): Add Local and Flow_Control settings.
+
+2012-08-06 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_attr.adb: Suppress saving of 'Old if assertions are not
+ enabled.
+
+2012-08-06 Yannick Moy <moy@adacore.com>
+
+ * sem_ch4.adb (Analyze_Selected_Component): Issue an error in
+ Alfa mode for component not present.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch7.adb (Insert_Actions_In_Scope_Around): Do not
+ use a renaming of Scope_Stack.Table (Scope_Stack.Last), as
+ Process_Transient_Object may introduce new scopes and cause
+ Scope_Stack.Table to be reallocated.
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * exp_util.adb, switch-c.adb, inline.ads, sem_ch10.adb, types.ads,
+ checks.adb, sem_prag.adb, sem.adb, sem.ads, sem_res.adb, sem_attr.adb,
+ gnat1drv.adb, exp_ch4.adb, exp_ch6.adb, opt.ads, osint.adb: Implement
+ extended overflow checks (step 1).
+ (Overflow_Check_Type, Suppress_Record, Suppress_All): New types.
+ (Suppress_Array): Extended to include switches to control extended
+ overflow checking (and renamed to Suppress_Record).
+ Update all uses of Suppress_Array.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * makeutl.ads: Minor documentation fix.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch7.adb: Minor reformatting.
+
+2012-08-06 Geert Bosch <bosch@adacore.com>
+
+ * a-ngelfu.adb: Change obsolete comment that this is a non-strict
+ implementation.
+
+2012-08-06 Steve Baird <baird@adacore.com>
+
+ * exp_ch7.adb (Build_Finalizer.Process_Object_Declaration): If
+ CodePeer_Mode = True then omit exception handlers for finalization calls
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * exp_aggr.adb: Minor reformatting.
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch6.adb: Remove useless flag Body_Deleted.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * sinfo.ads (End_Span): Change default from No_Uint to Uint_0,
+ as this is what all usage occurrences of this attribute are
+ expecting.
+ * uintp.adb (UI_To_Int): Add assertion to guard against calling
+ with No_Uint.
+
+2012-08-06 Vincent Pucci <pucci@adacore.com>
+
+ PR ada/54125
+ * exp_attr.adb (Expand_N_Attribute_Reference): Expand new
+ Atomic_Always_Lock_Free attribute.
+ * sem_attr.adb (Analyze_Attribute): Analyze new
+ Atomic_Always_Lock_Free attribute.
+ (Eval_Attribute): Nothing to do with new Atomic_Always_Lock_Free
+ attribute.
+ * sem_ch9.adb (Allows_Lock_Free_Implementation):
+ Support_Atomic_Primitives check replaces previous erroneous
+ size check.
+ * sem_util.adb, sem_util.ads (Support_Atomic_Primitives):
+ New routine.
+ * snames.ads-tmpl: New name Name_Atomic_Always_Lock_Free and
+ new attribute Attribute_Atomic_Always_Lock_Free defined.
+ * s-atopri.adb: Support_Atomic_Primitives checks replaced by
+ Atomic_Always_Lock_Free queries.
+ * system-aix64.ads, system-aix.ads, system-darwin-ppc.ads,
+ system-hpux.ads, system-linux-alpha.ads, system-linux-hppa.ads,
+ system-linux-ppc.ads, system-linux-s390.ads,
+ system-linux-s390x.ads, system-linux-sh4.ads,
+ system-linux-sparc.ads, system-lynxos178-ppc.ads,
+ system-lynxos-ppc.ads, system-mingw.ads,
+ system-vxworks-arm.ads, system-solaris-sparc.ads,
+ system-solaris-sparcv9.ads, system-vms_64.ads,
+ system-vxworks-m68k.ads, system-vxworks-mips.ads,
+ system-vxworks-ppc.ads, system-vxworks-sparcv9.ads: Flag
+ Support_Atomic_Primitives removed.
+
+2012-08-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_mech.adb (Set_Mechanisms): OUT and IN OUT parameters are
+ now unconditionally passed by reference. IN parameters subject
+ to convention C_Pass_By_Copy are passed by copy, otherwise they
+ are passed by reference.
+
+2012-08-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Analyze_Object_Declaration): According to
+ AI95-0303, protected objects with interrupt handlers can be
+ declared in nested scopes. This is a binding interpretation,
+ and thus applies to all versions of the compiler.
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * frontend.adb, exp_aggr.adb: Minor reformatting.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * par-endh.adb: Minor reformatting.
+
+2012-08-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch7.adb (Process_Transient_Objects): Remove obsolete loop
+ processing related to array initialization. The expansion of
+ loops already contains a mechanism to detect controlled objects
+ generated by expansion and introduce a block around the loop
+ statements for finalization purposes.
+
+2012-08-06 Vincent Pucci <pucci@adacore.com>
+
+ * sem_ch13.adb: Current scope must be within
+ or same as the scope of the entity while analysing aspect
+ specifications at freeze point.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * par_sco.adb: Add note about dubious SCO for TERMINATE
+ alternative.
+ * sem_ch8.adb, exp_ch11.adb: Minor reformatting.
+
+2012-08-06 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_aggr.adb (Two_Dim_Packed_Array_Handled): New procedure to
+ transform an aggregate for a packed two-dimensional array into
+ a one-dimensional array of constant values, in order to avoid
+ the generation of component-by-component assignments.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * frontend.adb: Do not attempt to process deferred configuration
+ pragmas if the main unit failed to load, to avoid cascaded
+ inconsistencies that can lead to a compiler crash.
+
+2012-08-06 Vincent Pucci <pucci@adacore.com>
+
+ * s-atopri.adb: Minor reformatting.
+
+2012-08-06 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat-style.texi: Clarify that all subprograms should be
+ documented. Minor rewording.
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * aspects.ads: Define Aspect_Id_Exclude_No_Aspect.
+ * par-ch13.adb, restrict.adb: Use Aspect_Id_Exclude_No_Aspect to
+ simplify code.
+
+2012-08-06 Yannick Moy <moy@adacore.com>
+
+ * gnat-style.texi: Update style guide for declarations.
+
+2012-08-06 Yannick Moy <moy@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): In the case for 'Old,
+ skip a special expansion which is not needed in Alfa mode.
+
+2012-08-06 Yannick Moy <moy@adacore.com>
+
+ * sem_ch5.adb (Analyze_Iterator_Specification): Do not perform
+ an expansion of the iterator in Alfa mode.
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * s-oscons-tmplt.c, sem_ch9.adb, osint.adb: Minor reformatting.
+
+2012-08-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Remove obsolete
+ Alfa-specific guard. The code is a leftover from an early
+ implementation of iterators which is no longer in use.
+
+2012-08-06 Vincent Celier <celier@adacore.com>
+
+ * par-ch13.adb (Get_Aspect_Specifications): Do not consider
+ No_Aspect when checking for a mispelled aspect.
+
+2012-08-06 Robert Dewar <dewar@adacore.com>
+
+ * s-htable.adb: Minor reformatting.
+
+2012-08-06 Thomas Quinot <quinot@adacore.com>
+
+ * s-oscons-tmplt.c, g-socket.adb (System.OS_Constants.Target_OS):
+ Suppress warnings so that we don't have to do it at each usage.
+
+2012-08-06 Vincent Pucci <pucci@adacore.com>
+
+ * exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body):
+ Use of Known_Static_Esize instead of Known_Esize and
+ Known_Static_RM_Size instead of Known_RM_Size in order to
+ properly call UI_To_Int. Don't check the size of the component
+ type in case of generic.
+ * sem_ch9.adb (Allows_Lock_Free_Implementation):
+ Use of Known_Static_Esize instead of Known_Esize and
+ Known_Static_RM_Size instead of Known_RM_Size in order to properly
+ call UI_To_Int. Don't check the size of the component type in
+ case of generic.
+
+2012-08-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * checks.adb (Discrete_Range_Cond): Do not try to optimize on
+ the assumption that the type of an expression can always fit in
+ the target type of a conversion.
+
+2012-07-30 Robert Dewar <dewar@adacore.com>
+
+ * bindusg.adb: Clarify file in -A lines.
+
+2012-07-30 Robert Dewar <dewar@adacore.com>
+
+ * freeze.adb: Minor reformatting.
+
+2012-07-30 Robert Dewar <dewar@adacore.com>
+
+ * gnatcmd.adb, makeutl.adb, makeutl.ads: Minor code reorganization.
+
+2012-07-30 Vincent Pucci <pucci@adacore.com>
+
+ * exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body): Minor
+ reformatting.
+ * sem_ch9.adb (Allows_Lock_Free_Implementation): Minor reformatting.
+ Capture the correct error message in case of a quantified expression.
+
+2012-07-30 Thomas Quinot <quinot@adacore.com>
+
+ * g-socket.adb (Get_Socket_Option, Set_Socket_Option): On Windows, the
+ value is a milliseconds count in a DWORD, not a struct timeval.
+
+2012-07-30 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_ch12.adb (Earlier): Add local variables T1 and T2. Minor code
+ refactoring.
+
+2012-07-30 Thomas Quinot <quinot@adacore.com>
+
+ * gnatcmd.adb, make.adb, makeutl.adb, makeutl.ads
+ (Test_If_Relative_Path): Rename to Ensure_Absolute_Path to better
+ reflect what this subprogram does. Rename argument Including_L_Switch
+ to For_Gnatbind, and also exempt -A from rewriting.
+ * bindusg.adb: Document optional =file argument to gnatbind -A.
+
+2012-07-30 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Entity): Do no apply restriction check on
+ storage pools to access to subprogram types.
+
+2012-07-30 Robert Dewar <dewar@adacore.com>
+
+ * par_sco.adb, a-cihama.adb, a-coinve.adb, exp_ch7.adb, a-ciorse.adb,
+ exp_ch9.adb, sem_dim.adb, par-ch13.adb, sem_ch9.adb, a-cidlli.adb,
+ a-cimutr.adb, freeze.adb, a-ciormu.adb, sem_res.adb, sem_attr.adb,
+ a-cihase.adb, exp_ch4.adb, sem_ch4.adb, a-ciorma.adb,
+ s-tasinf-linux.ads, sem_ch13.adb, a-coinho.adb: Minor reformatting.
+ Add comments.
+
+2012-07-30 Vincent Pucci <pucci@adacore.com>
+
+ * sem_ch9.adb (Allows_Lock_Free_Implementation): Restrict implicit
+ dereferences of access values.
+
+2012-07-27 Iain Sandoe <iain@codesourcery.com>
+
+ * system-darwin-ppc64.ads: Add Support_Atomic_Primitives, set to True.
+
+2012-07-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils2.c (gnat_stabilize_reference) <BIT_FIELD_REF>: Do
+ not stabilize operand #1 and #2.
+
+2012-07-23 Tristan Gingold <gingold@adacore.com>
+
+ * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): Use
+ End_Label sloc when possible for sloc of the TRY_CATCH_EXPR node.
+
+2012-07-23 Olivier Hainque <hainque@adacore.com>
+
+ * gcc-interface/Makefile.in: Adjust processing of Linker_Options for
+ VxWorks.
+ * gcc-interface/Make-lang.in: Update dependencies.
+
+2012-07-23 Arnaud Charlet <charlet@adacore.com>
+
+ * s-tasinf-linux.ads: Fix typo.
+
+2012-07-23 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch7.adb, switch-m.adb, exp_ch3.adb, freeze.adb: Minor reformatting
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): If original
+ loop carries an identifier, preserve it when rewriting it as a
+ standard loop to validate exit statements that may reference
+ that name in the body of the loop.
+
+2012-07-23 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch9.adb: Minor code cleanup.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch4.adb (Analyze_Selected_Component): When checking for
+ potential ambiguities with class-wide operations on synchronized
+ types, attach the copied node properly to the tree, to prevent
+ errors during expansion.
+
+2012-07-23 Yannick Moy <moy@adacore.com>
+
+ * sem_ch5.adb (Analyze_Loop_Statement): Make sure the loop body
+ is analyzed in Alfa mode.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_res.adb: Adjust previous change.
+
+2012-07-23 Vincent Pucci <pucci@adacore.com>
+
+ * sem_ch9.adb (Allows_Lock_Free_Implementation): Flag
+ Lock_Free_Given renames previous flag Complain. Description
+ updated. Henceforth, catch every error messages issued by this
+ routine when Lock_Free_Given is True. Declaration restriction
+ updated: No non-elementary parameter instead (even in parameter)
+ New subprogram body restrictions implemented: No allocator,
+ no address, import or export rep items, no delay statement,
+ no goto statement, no quantified expression and no dereference
+ of access value.
+
+2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * checks.adb (Determine_Range): Add local variable Btyp. Handle
+ the case where the base type of an enumeration subtype is
+ private. Replace all occurrences of Base_Type with Btyp.
+ * exp_attr.adb (Attribute_Valid): Handle the case where the
+ base type of an enumeration subtype is private. Replace all
+ occurrences of Base_Type with Btyp.
+ * sem_util.adb (Get_Enum_Lit_From_Pos): Add local variable
+ Btyp. Handle the case where the base type of an enumeration
+ subtype is private. Replace all occurrences of Base_Type with
+ Btyp.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * par-ch6.adb (P_Mode): in Ada 2005, a mode indicator can apply
+ to a formal object of an anonymous access type.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch4.adb (Try_Container_Indexing): A user-defined indexing
+ aspect can have more than one index, e.g. to describe indexing
+ of a multidimensional object.
+
+2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch4.adb (Apply_Accessibility_Check): Reimplemented. The check is
+ now more complex and contains optional finalization part and mandatory
+ deallocation part.
+
+2012-07-23 Gary Dismukes <dismukes@adacore.com>
+
+ * a-cihama.adb, a-cihase.adb, a-cimutr.adb, a-ciorma.adb, a-ciormu.adb,
+ a-ciorse.adb, a-coinho.adb, a-coinve.adb, a-cidlli.adb: Unsuppress
+ Accessibility_Check for Element_Type allocators.
+
+2012-07-23 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * projects.texi: Fix typo.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_res.adb (Resolve_Explicit_Derenference): If prefix is
+ overloaded, remove those interpretations whose designated type
+ does not match the context, to avoid spurious ambiguities that
+ may be caused by the Ada 2012 conversion rule for anonymous
+ access types.
+
+2012-07-23 Vincent Celier <celier@adacore.com>
+
+ * g-spitbo.adb (Substr (String)): Return full string and do not
+ raise exception when Start is 1 and Len is exactly the length
+ of the string parameter.
+ * g-spitbo.ads: Fix spelling error in the name of exception
+ Index_Error.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * par.adb: new subprogram Get_Aspect_Specifications.
+ * par-ch6.adb (P_Subprogram): handle subprogram bodies with aspect
+ specifications.
+ * par-ch13.adb (Get_Aspect_Specifications): extracted from
+ P_Aspect_Specifications. Collect aspect specifications in some
+ legal context, but do not attach them to any declaration. Used
+ when parsing subprogram declarations or bodies that include
+ aspect specifications.
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): If aspects are
+ present, analyze them, or reject them if the subprogram as a
+ previous spec.
+
+2012-07-23 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * gnat_ugn.texi: Omit section on other platforms/runtimes support
+ in gnattest for vms version.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications):
+ Handle properly aspects that can be specified on a subprogram
+ body: CPU, Priority, and Interrupt_Priority.
+
+2012-07-23 Claire Dross <dross@adacore.com>
+
+ * a-cfdlli.ads: Switch definition of Constant_Reference_Type
+ and Empty_List.
+
+2012-07-23 Thomas Quinot <quinot@adacore.com>
+
+ * par_sco.adb (Process_Decisions.Output_Header): For the guard
+ on an alternative in a SELECT statement, use the First_Sloc
+ of the guard expression (not its topmost sloc) as the decision
+ location, because this is what is referenced by dominance markers.
+
+2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch7.adb (Requires_Hooking): Examine the original expression
+ of an object declaration node because a function call that
+ returns on the secondary stack may have been rewritten into
+ something else.
+
+2012-07-23 Vincent Pucci <pucci@adacore.com>
+
+ * sem_dim.adb (Analyze_Dimension_Has_Etype): For identifier, propagate
+ dimension when entity is a non-dimensionless constant.
+ (Analyze_Dimension_Object_Declaration): Propagate
+ dimension from the expression to the entity when type is a
+ dimensioned type and object is a constant.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute, case 'Old): if the prefix
+ is not an entity name, expand at once so that code generated by
+ the expansion of the prefix is not generated before the constant
+ that captures the old value is properly inserted and analyzed.
+
+2012-07-23 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch9.adb (Ensure_Statement_Present): Mark generated NULL
+ statement as Comes_From_Source so that GIGI does not eliminate it.
+
+2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_ch12.adb (Insert_Freeze_Node_For_Instance): Inst is now
+ a local variable. Retrieve the related instance when processing
+ a subprogram instantiation. Such instances appear as wrapper
+ packages.
+
+2012-07-23 Vincent Pucci <pucci@adacore.com>
+
+ * system-aix64.ads, system-aix.ads, system-darwin-ppc.ads,
+ system-hpux.ads, system-linux-alpha.ads,
+ system-linux-hppa.ads, system-linux-ppc.ads,
+ system-linux-s390.ads, system-linux-s390x.ads,
+ system-linux-sh4.ads, system-linux-sparc.ads,
+ system-lynxos-ppc.ads, system-mingw.ads,
+ system-solaris-sparc.ads, system-solaris-sparcv9.ads,
+ system-vms_64.ads, * system-vxworks-arm.ads, system-vxworks-m68k.ads,
+ system-vxworks-mips.ads, system-vxworks-ppc.ads,
+ system-vxworks-sparcv9.ads: Support_Atomic_Primitives set to False.
+ * system-darwin-x86.ads, system-darwin-x86_64.ads,
+ system-freebsd-x86.ads, system-freebsd-x86_64.ads,
+ system-hpux-ia64.ads, system-linux-ia64.ads, system-linux-x86.ads,
+ system-linux-x86_64.ads, system-lynxos-x86.ads,
+ system-mingw-x86_64.ads, system-solaris-x86.ads,
+ system-solaris-x86_64.ads, system-vms-ia64.ads,
+ system-vxworks-x86.ads: Support_Atomic_Primitives set to True.
+ * s-atopri.adb (Lock_Free_Read_X): New body.
+ (Lock_Free_Try_Write_X): Support_Atomic_Primitives check added.
+ (Lock_Free_Try_Write_64): New body.
+ * s-atopri.ads: New type uint.
+ (Sync_Compare_And_Swap_64): __sync_val_compare_and_swap_8 intrinsic
+ import.
+ (Lock_Free_Read_X): Body moved to s-atopri.adb.
+ (Lock_Free_Try_Write_64): Similar to other Lock_Free_Try_Write_X
+ routines.
+ * targparm.adb: New enumeration literal SAP
+ (Support_Atomic_Primitives) for type Targparm_Tags. New constant
+ SAP_Str. New component SAP_Str'Access for array Targparm_Str.
+ (Get_Target_Parameters): Parse Support_Atomic_Primitives_On_Target
+ flag.
+ * targparm.ads: New back-end code generation flag
+ Support_Atomic_Primitives_On_Target
+
+2012-07-23 Vincent Pucci <pucci@adacore.com>
+
+ * gnat_ugn.texi: Dimensionality checking documentation updated.
+
+2012-07-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_prag.adb (Make_Inline): If the pragma applies to a
+ subprogram renaming, set inline flags on both the renamed entity
+ and on the renaming, so that some ASIS queries can be handled
+ consistently in the absence of expansion.
+
+2012-07-23 Fedor Rybin <frybin@adacore.com>
+
+ * gnat_ugn.texi: Removing obsolete limitation of gnattest
+ to support only ada05. Updating gnattest support for other
+ platforms/run-times section to reflect the usage of taget
+ prefix in gnattest calls. Fixing missed obsolete --stub-default
+ option name.
+
+2012-07-23 Robert Dewar <dewar@adacore.com>
+
+ * uintp.adb: Minor reformatting.
+
+2012-07-23 Olivier Hainque <hainque@adacore.com>
+
+ * system-vxworks-ppc.ads: Replace the default
+ Linker_Options requesting crtbe by a commented out request for
+ -nostartfiles.
+
+2012-07-23 Vincent Celier <celier@adacore.com>
+
+ * prj-nmsc.adb (Check_Naming): Do not get the exceptions names
+ in a virtual project.
+
+2012-07-23 Robert Dewar <dewar@adacore.com>
+
+ * layout.adb, sem_prag.adb, sem.ads, freeze.adb,
+ switch-m.adb, exp_disp.adb, system-vxworks-ppc.ads, exp_ch6.adb: Minor
+ reformatting.
+
+2012-07-23 Tristan Gingold <gingold@adacore.com>
+
+ * gcc-interface/trans.c: (Handled_Sequence_Of_Statements_to_gnu): Set
+ location on TRY_CATCH_EXPR.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Try to ensure
+ that an object of CW type initialized to a value is sufficiently
+ aligned for this value.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Do not
+ look up the REP part of the base type in advance. Deal with that of
+ the variant types.
+ (get_rep_part): Be prepared for record types with fields.
+
+2012-07-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (stmt_group_may_fallthru): New function.
+ (gnat_to_gnu) <N_Block_Statement>: Use it to find out whether the
+ block needs to be translated.
+
+2012-07-17 Tristan Gingold <gingold@adacore.com>
+
+ * gnat_rm.texi: Adjust previous change.
+
+2012-07-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_prag.adb (Process_Import_Or_Interface): If the pragma
+ comes from an aspect, it applies to the corresponding entity
+ without further check.
+
+2012-07-17 Olivier Hainque <hainque@adacore.com>
+
+ * initialize.c (__gnat_initialize for VxWorks): Remove section with
+ call to __gnat_vxw_setup_for_eh.
+ * system-vxworks-ppc.ads: Add -auto-register to -crtbe, relying
+ on the VxWorks constructor mechanism for network loaded modules
+ by default.
+
+2012-07-17 Tristan Gingold <gingold@adacore.com>
+
+ * adaint.c: Minor reformatting.
+
+2012-07-17 Pascal Obry <obry@adacore.com>
+
+ * s-regexp.adb (Adjust): Fix access violation in Adjust.
+
+2012-07-17 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Entity): Warn if an imported subprogram
+ has pre/post conditions, because these will not be enforced.
+
+2012-07-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch7.adb (Process_Transient_Objects): Put all the
+ finalization blocks and the final raise statement into a wrapper
+ block.
+
+2012-07-17 Vincent Pucci <pucci@adacore.com>
+
+ * s-atopri.adb (Lock_Free_Try_Write_X): Atomic_Compare_Exchange_X
+ replaced by Sync_Compare_And_Swap_X.
+ (Lock_Free_Try_Write_64): Removed.
+ * s-atopri.ads (Sync_Compare_And_Swap_X): Replaces previous
+ routine Atomic_Compare_Exchange_X.
+ (Lock_Free_Read_64): Renaming of Atomic_Load_64.
+ (Lock_Free_Try_Write_64): Renaming of Sync_Compare_And_Swap_64.
+
+2012-07-17 Vincent Celier <celier@adacore.com>
+
+ * switch-m.adb (Normalize_Compiler_Switches): Recognize new
+ switches -gnatn1 and -gnatn2.
+
+2012-07-17 Vincent Pucci <pucci@adacore.com>
+
+ * gnat_ugn.texi: GNAT dimensionality checking
+ documentation updated with System.Dim.Mks modifications.
+
+2012-07-17 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch3.adb: sloc of array init_proc is sloc of type declaration.
+
+2012-07-17 Tristan Gingold <gingold@adacore.com>
+
+ * raise-gcc.c (get_call_site_action_for): Remove useless init
+ expression for p.
+ (get_action_description_for): Do not overwrite action->kind.
+
+2012-07-17 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Add local variables Attr
+ and Conversion_Added. Add local constant Typ.
+ Retrieve the original attribute after the arithmetic check
+ machinery has modified the node. Add a conversion to the target
+ type when the prefix of attribute Max_Size_In_Storage_Elements
+ is a controlled type.
+
+2012-07-17 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch6.adb (Expand_Inlined_Call): For each actual parameter
+ of mode 'out' or 'in out' that denotes an entity, reset
+ Last_Assignment on the entity so that any assignments to the
+ corresponding formal in the inlining will not trigger spurious
+ warnings about overwriting assignments.
+
+2012-07-17 Robert Dewar <dewar@adacore.com>
+
+ * s-assert.ads: Fix comments to make it clear that this is used
+ for all assertions, not just pragma Assert.
+
+2012-07-17 Jerome Guitton <guitton@adacore.com>
+
+ * par_sco.ads: Minor typo fix.
+
+2012-07-17 Gary Dismukes <dismukes@adacore.com>
+
+ * layout.adb (Layout_Type): In the case where the target is
+ AAMP, use 32 bits (a single pointer) rather than 64 bits for an
+ anonymous access-to-subprogram type if the type is library-level
+ and Is_Local_Anonymous_Access is True.
+
+2012-07-17 Jose Ruiz <ruiz@adacore.com>
+
+ * s-tassta.adb, s-tarest.adb (Create_Task, Create_Restricted_Task,
+ Initialize): Add comments explaining that the CPU affinity value that
+ is passed to the run-time library can be either Unspecified_CPU, to
+ indicate that the task inherits the affinity of its activating task,
+ or a value in the range of CPU_Range but no greater than Number_Of_CPUs.
+
+2012-07-17 Javier Miranda <miranda@adacore.com>
+
+ * exp_disp.adb (Make_DT): Remove decoration of Ada.Tags entities.
+ (Make_Tags): Add decoration of Ada.Tags entities.
+
+2012-07-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (Check_Statement_Sequence): When locating the
+ last significant statement in a sequence, ignore iserted nodes
+ that typically come from expansion of controlled operations.
+
+2012-07-17 Tristan Gingold <gingold@adacore.com>
+
+ * gnat_rm.texi: Document foreign exceptions.
+
+2012-07-17 Robert Dewar <dewar@adacore.com>
+
+ * sem_prag.adb, treepr.ads: Minor reformatting.
+
+2012-07-17 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch9.adb: Minor code reorganization.
+ * exp_ch3.adb: Minor code improvement.
+
+2012-07-17 Tristan Gingold <gingold@adacore.com>
+
+ * seh_init.c (__gnat_SEH_error_handler): Not compiled anymore
+ on Windows 64 (+ SEH), as it is unused.
+
+2012-07-17 Javier Miranda <miranda@adacore.com>
+
+ * sem_prag.adb (CPP_Class): Transform obsolescent pragma CPP_Class into
+ CPP convention automatically.
+
+2012-07-16 Tristan Gingold <gingold@adacore.com>
+
+ * gcc-interface/decl.c (intrin_return_compatible_p): Map Address to
+ void *.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch9.adb (Ensure_Statement_Present): New subprogram.
+ (Expand_N_Asynchronous_Select,
+ Expand_N_Selective_Accept.Process_Accept_Alternative,
+ Expand_N_Selective_Accept.Process_Delay_Alternative,
+ Expand_N_Timed_Entry_Call): For an alternative with no trailing
+ statements, introduce a null statement to carry the sloc of
+ the initial special statement (accept, delay, or entry call)
+ in the alternative, for coverage analysis purposes.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * sem_eval.adb (In_Subrange_Of): Fix typo in test for scalar
+ arguments.
+
+2012-07-16 Robert Dewar <dewar@adacore.com>
+
+ * a-exexpr.adb, freeze.adb, a-exexpr-gcc.adb, a-except-2005.adb,
+ sem_eval.adb, s-fileio.adb: Minor reformatting.
+
+2012-07-16 Javier Miranda <miranda@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma): Remove support for obsolescent
+ pragma CPP_Class.
+ * sem_ch13.adb (Analyze_Freeze_Entity): Add missing error on Ada
+ derivations of CPP types. Found updating the tests affected by
+ the removal of pragma CPP_Class.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * back_end.adb: Minor reformatting.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch9.adb (Expand_N_Selective_Accept.Process_Accept_Alternative):
+ Remove junk test that was always true. For the case of no statements
+ following the ACCEPT, jump directly to End_Lab instead of
+ introducing an intermediate jump.
+ (Expand_N_Selective_Accept.Process_Delay_Alternative): Fix
+ predicate testing for presence of statements following the DELAY.
+ that was always true. For the case of no statements following
+ the ACCEPT, jump directly to End_Lab instead of introducing an
+ intermediate jump.
+ (Expand_N_Selective_Accept): Fix incorrect insertion point for
+ end label.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * gnat_rm.texi: Minor documentation improvements.
+
+2012-07-16 Yannick Moy <moy@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Allow Pre
+ and Pre'Class aspects on the same declaration.
+ * sem_prag.adb (Chain_PPC): Allow Pre and Pre'Class aspects on the
+ same hierarchy of primitive operations.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * freeze.adb (Check_Component_Storage_Order): Do not reject a
+ nested composite with different scalar storage order if it is
+ byte aligned.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * gnat_rm.texi: Update documentation for Scalar_Storage_Order.
+
+2012-07-16 Tristan Gingold <gingold@adacore.com>
+
+ * a-exexpr.adb (Propagate_Exception): Adjust call to
+ Exception_Traces procedures.
+ * a-exexpr-gcc.adb (Setup_Current_Excep): Now a
+ function that returns an access to the Ada occurrence.
+ (Propagate_GCC_Exception): Adjust calls.
+ * raise.h (struct Exception_Occurrence): Declare.
+ * a-exextr.adb: Remove useless pragma. (Notify_Handled_Exception,
+ Notify_Unhandled_Exception) (Unhandled_Exception_Terminate):
+ Add Excep parameter.
+ * a-except.adb (Notify_Handled_Exception,
+ Notify_Unhandled_Exception) (Unhandled_Exception_Terminate):
+ Add Excep parameter.
+ (Process_Raise_Exception): Adjust calls.
+ * a-except-2005.adb (Notify_Handled_Exception,
+ Notify_Unhandled_Exception) (Unhandled_Exception_Terminate): Add
+ Excep parameter.
+ (Raise_Exception): Calls Raise_Exception_Always.
+ * raise-gcc.c (__gnat_setup_current_excep,
+ __gnat_notify_handled_exception)
+ (__gnat_notify_unhandled_exception): Adjust declarations.
+ (PERSONALITY_FUNCTION): Adjust calls.
+ (__gnat_personality_seh0): Remove warning.
+
+2012-07-16 Javier Miranda <miranda@adacore.com>
+
+ * sem_eval.adb (Test_Expression_Is_Foldable): Adding documentation.
+ (Eval_Relational_Op): Adding documentation.
+
+2012-07-16 Robert Dewar <dewar@adacore.com>
+
+ * freeze.adb, g-debpoo.adb, exp_ch3.adb: Minor reformatting.
+
+2012-07-16 Thomas Quinot <quinot@adacore.com>
+
+ * s-oscons-tmplt.c: Add definitions of E2BIG and EILSEQ.
+
+2012-07-16 Tristan Gingold <gingold@adacore.com>
+
+ * a-exexpr.adb (Propagate_Continue): New function replacing
+ Raise_Current_Excep.
+ (Allocate_Occurrence): New function.
+ (Propagate_Exception): Add Excep parameter, remove call to Call_Chain.
+ * a-exexpr-gcc.adb (GNAT_GCC_Exception): Occurrence component
+ is now aliased.
+ (To_GCC_Exception): Convert from Address.
+ (Allocate_Occurrence): Allocate an Unwind exception occurrence.
+ (Setup_Current_Excep): Fill the machine occurrence in case of
+ foreign exception.
+ (Propagate_Exception): Add Excep parameter, remove call to Call_Chain.
+ * a-except.adb (Set_Exception_C_Msg, Set_Exception_Msg): add
+ Excep parameter.
+ (Raise_Exception, Raise_Exception_Always,
+ Raise_Exception_No_Defer): Adjust calls to the above procedures.
+ (Raise_From_Signal_Handler, Raise_With_Location_And_Msg)
+ (Rcheck_PE_Finalize_Raised_Exception): Likewise.
+ * a-except-2005.adb (Set_Exception_C_Msg, Set_Exception_Msg):
+ add Excep parameter.
+ (Propagate_Exception): Likewise.
+ (Allocate_Occurrence): New function.
+ (Raise_Current_Excep): Removed.
+ (Complete_Occurrence): New function to save the call chain.
+ (Complete_And_Propagate_Occurrence): New procedure.
+ (Create_Occurrence_From_Signal_Handler): New function to build an
+ occurrence without propagating it.
+ (Create_Machine_Occurrence_From_Signal_Handler): Likewise, but
+ return the machine occurrence.
+ (Raise_From_Signal_Handler): Use Create_Occurrence_From_Signal_Handler.
+ (Raise_Exception, Raise_Exception_Always, Raise_Exception_No_Defer):
+ Adjust calls to the above procedures. Allocate the occurrence at
+ the beginning.
+ (Raise_With_Location_And_Msg, Raise_With_Msg)
+ (Rcheck_PE_Finalize_Raised_Exceptionm Reraise): Likewise.
+ (Reraise_Occurrence): Use Reraise_Occurrence_Always.
+ (Reraise_Occurrence_Always): Use Reraise_Occurrence_No_Defer.
+ (Reraise_Occurrence_No_Defer): Preserve machine occurrence.
+ (Save_Occurrence): Do not save machine occurrence.
+ * a-except-2005.ads (Exception_Occurrence): Add Machine_Occurrence
+ component.
+ (Null_Occurrence): Consider it.
+ * a-exexda.adb (Set_Exception_C_Msg, Set_Exception_Msg): add
+ Excep parameter.
+
+2012-07-16 Tristan Gingold <gingold@adacore.com>
+
+ * seh_init.c (__gnat_map_SEH): New function extracted from
+ __gnat_SEH_error_handler.
+ * raise-gcc.c: __gnat_personality_seh0: Directly transforms
+ Windows system exception into GCC one when possible, in order
+ to save stack room (particularly useful when Storage_Error will
+ be propagated).
+
+2012-07-16 Robert Dewar <dewar@adacore.com>
+
+ * a-direct.adb, g-dirope.adb: Minor reformatting.
+
+2012-07-16 Tristan Gingold <gingold@adacore.com>
+
+ * a-except.ads, a-except-2005.ads: Remove outdated comment.
+
+2012-07-16 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch6.adb (Subprogram_Name_Greater): Fix algorithm to
+ conform to documentation.
+
+2012-07-16 Ed Schonberg <schonberg@adacore.com>
+
+ * gnat1drv.adb (Check_Library_Items): Removed, no longer used.
+
+2012-07-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Array_Type_Declaration): if component type has
+ invariants, the array type itself requires an invariant procedure.
+ * exp_ch3.ads, exp_ch3.adb (Build_Array_Invariant_Proc): new
+ procedure, to build a checking procedure that applies the
+ invariant check on some type T to each component of an array
+ of T's. Code is similar to the construction of the init_proc
+ for an array, and handles multidimensional arrays by recursing
+ over successive dimensions.
+
+2012-07-16 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * g-debpoo.adb: Revert previous change.
+
+2012-07-16 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * freeze.adb (Freeze_Entity): Insert the itype reference to a
+ library-level class-wide subtype after the freeze node of the
+ equivalent record type.
+
+2012-07-16 Pascal Obry <obry@adacore.com>
+
+ * s-crtl.ads (mkdir): New routine, support encoding.
+ * adaint.h (__gnat_mkdir): Update spec to pass encoding.
+ * mkdir.c (__gnat_mkdir): Add encoding parameter.
+ * a-direct.adb (Create_Directory): Use CRTL.mkdir, parse encoding
+ in form parameter.
+ * g-dirope.adb (Make_Dir): Update to pass encoding parameter.
+
+2012-07-16 Pascal Obry <obry@adacore.com>
+
+ * adaint.c: Minor reformatting.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gcc-interface/utils.c: Include timevar.h.
+ * Make-lang.in: Fix dependencies.
+
+2012-07-16 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * ug_words, vms_data.ads: Document VMS qualifiers for -gnatn1/2
+ switches.
+
+2012-07-16 Bob Duff <duff@adacore.com>
+
+ * sinfo.ads: Minor comment fix.
+
+2012-07-16 Bob Duff <duff@adacore.com>
+
+ * sem_elab.adb (Within_Elaborate_All): Walk the with clauses to
+ find pragmas Elaborate_All that may be found in the transitive
+ closure of the dependences.
+
+2012-07-16 Robert Dewar <dewar@adacore.com>
+
+ * exp_pakd.adb, freeze.adb, sem_util.adb, vms_data.ads: Minor
+ reformatting.
+
+2012-07-12 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * vms_data.ads: Add VMS qualifiers for -gnatn1/2 switches.
+
+2012-07-12 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch5.adb, exp_pakd.adb, rtsfind.ads, freeze.adb, sem_util.adb,
+ sem_util.ads, exp_aggr.adb
+ (Exp_Aggr.Packed_Array_Aggregate_Handled): Simplify processing
+ for reverse storage order aggregate.
+ (Exp_Pakd.Byte_Swap): New utility routine used by...
+ (Exp_Pakd.Expand_Bit_Packed_Element_Set,
+ Expand_Packed_Element_Reference): For the case of a free-standing
+ packed array with reverse storage order, perform byte swapping.
+ (Rtsfind): Make new entities RE_Bswap_{16,32,64} available.
+ (Freeze.Check_Component_Storage_Order): New utility routine
+ to enforce legality rules for nested composite types whose
+ enclosing composite has an explicitly defined Scalar_Storage_Order
+ attribute.
+ (Sem_Util.In_Reverse_Storage_Order_Object): Renamed from
+ Sem_Util.In_Reverse_Storage_Order_Record, as SSO now applies to
+ array types as well.
+ (Exp_Ch5.Expand_Assign_Array): Remove now unnecessary kludge
+ for change of scalar storage order in assignments. The Lhs and
+ Rhs now always have the same scalar storage order.
+
+2012-07-12 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * g-debpoo.adb (Allocate): Add local constant
+ No_Element. Initialize the allocated memory chunk to No_Element.
+
+2012-07-12 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Validate_Derived_Type_Instance): Handle properly
+ the case of an instance of a child unit where a formal derived
+ type DT is an extension of a type T declared in a parent unit,
+ and the actual in the instance of the child is the type T declared
+ in the parent instance, and that actual is not a derived type.
+
+2012-07-12 Eric Botcazou <ebotcazou@adacore.com>
+ Tristan Gingold <gingold@adacore.com>
+
+ * system-hpux-ia64.ads: Enable ZCX by default.
+ * gcc-interface/Makefile.in: Use alternate stack on ia64-hpux.
+ Change soext to .so.
+
+2012-07-12 Robert Dewar <dewar@adacore.com>
+
+ * s-atopri.adb, s-atopri.ads: Minor reformatting.
+
+2012-07-12 Robert Dewar <dewar@adacore.com>
+
+ * ali.adb: Add circuitry to read new named form of restrictions lines.
+ * debug.adb: Add doc for new -gnatd.R switch (used positional
+ notation for output of restrictions data in ali file).
+ * lib-writ.adb: Implement new named format for restrictions lines.
+ * lib-writ.ads: Add documentation for new named format for
+ restrictions in ali files.
+ * restrict.adb, restrict.ads, sem_prag.adb: Update comments.
+ * rident.ads: Go back to withing System.Rident
+ * s-rident.ads: Add extensive comment on dealing with consistency
+ checking.
+
+2012-07-12 Thomas Quinot <quinot@adacore.com>
+
+ * par_sco.adb, scos.ads: Emit detailed SCOs for SELECT statements.
+
+2012-07-12 Robert Dewar <dewar@adacore.com>
+
+ * sem_disp.adb: Minor reformatting
+ * s-bytswa.ads: Minor comment update.
+
+2012-07-12 Vincent Pucci <pucci@adacore.com>
+
+ * exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body):
+ Atomic_Load_N replaced by Lock_Free_Read_N. Atomic_Compare_Exchange_N
+ replaced by Lock_Free_Try_Write_N.
+ Renaming of several local variables. For
+ procedure, Expected_Comp declaration moved to the declaration
+ list of the procedure.
+ * rtsfind.ads: RE_Atomic_Compare_Exchange_8,
+ RE_Atomic_Compare_Exchange_16, RE_Atomic_Compare_Exchange_32,
+ RE_Atomic_Compare_Exchange_64, RE_Atomic_Load_8,
+ RE_Atomic_Load_16, RE_Atomic_Load_32, RE_Atomic_Load_64,
+ RE_Atomic_Synchronize, RE_Relaxed removed. RE_Lock_Free_Read_8,
+ RE_Lock_Free_Read_16, RE_Lock_Free_Read_32, RE_Lock_Free_Read_64,
+ RE_Lock_Free_Try_Write_8, RE_Lock_Free_Try_Write_16,
+ RE_Lock_Free_Try_Write_32, RE_Lock_Free_Try_Write_64 added.
+ * s-atopri.adb: New file.
+ * s-atopri.ads (Atomic_Compare_Exchange_8): Renaming of
+ parameters. Import primitive __sync_val_compare_and_swap_1.
+ (Atomic_Compare_Exchange_16): Renaming of parameters.
+ Import primitive __sync_val_compare_and_swap_2.
+ (Atomic_Compare_Exchange_32): Renaming of parameters.
+ Import primitive __sync_val_compare_and_swap_4.
+ (Atomic_Compare_Exchange_64): Renaming of parameters. Import
+ primitive __sync_val_compare_and_swap_8.
+ (Atomic_Load_8): Ptr renames parameter X.
+ (Atomic_Load_16): Ptr renames parameter X.
+ (Atomic_Load_32): Ptr renames parameter X.
+ (Atomic_Load_64): Ptr renames parameter X.
+ (Lock_Free_Read_8): New routine.
+ (Lock_Free_Read_16): New routine.
+ (Lock_Free_Read_32): New routine.
+ (Lock_Free_Read_64): New routine.
+ (Lock_Free_Try_Write_8): New routine.
+ (Lock_Free_Try_Write_16): New routine.
+ (Lock_Free_Try_Write_32): New routine.
+ (Lock_Free_Try_Write_64): New routine.
+
+2012-07-12 Robert Dewar <dewar@adacore.com>
+
+ * exp_attr.adb, exp_ch9.adb, sem_ch9.adb, exp_aggr.adb: Minor
+ reformatting.
+
+2012-07-12 Vincent Pucci <pucci@adacore.com>
+
+ * sem_dim.adb (Analyze_Dimension_Function_Call): Reformatting of error
+ msgs for elementary functions.
+
+2012-07-12 Vincent Pucci <pucci@adacore.com>
+
+ * sem_attr.adb (Eval_Attribute): Minor reformatting.
+
+2012-07-12 Pascal Obry <obry@adacore.com>
+
+ * prj-nmsc.adb (Check_Library_Attributes): Allow the same library
+ project in different project tree (different aggregated projects).
+
+2012-07-12 Thomas Quinot <quinot@adacore.com>
+
+ * s-bytswa.adb, g-bytswa.adb, g-bytswa.ads, s-bytswa.ads: Further
+ reorganization of byte swapping routines.
+
+2012-07-12 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_disp.adb (Check_Dispatching_Context): Refine legality
+ checks on tagg indeterminate calls to abstract operations,
+ that appear in the context of other calls.
+
+2012-07-12 Thomas Quinot <quinot@adacore.com>
+
+ * s-bytswa.adb (Swapped2.Bswap16): Remove local function,
+ no longer needed.
+
+2012-07-12 Javier Miranda <miranda@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): For
+ attributes 'access, 'unchecked_access and 'unrestricted_access,
+ iff the current instance reference is located in a protected
+ subprogram or entry then rewrite the access attribute to be the
+ name of the "_object" parameter.
+
+2012-07-12 Tristan Gingold <gingold@adacore.com>
+
+ * raise.h: Revert previous patch: structure is used in init.c
+ by vms.
+
+2012-07-12 Vincent Celier <celier@adacore.com>
+
+ * make.adb (Binding_Phase): If --subdirs was used, but not
+ -P, change the working directory to the specified subdirectory
+ before invoking gnatbind.
+ (Linking_Phase): If --subdirs was used, but not -P, change the working
+ directory to the specified subdirectory before invoking gnatlink.
+
+2012-07-12 Vincent Pucci <pucci@adacore.com>
+
+ * exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body):
+ For a procedure, instead of replacing each Comp reference by a
+ reference to Current_Comp, make a renaming Comp of Current_Comp
+ that rewrites the original renaming generated by the compiler
+ during the analysis. Move the declarations of the procedure
+ inside the generated block.
+ (Process_Stmts): Moved in the body
+ of Build_Lock_Free_Unprotected_Subprogram_Body.
+ (Process_Node):
+ Moved in the body of Build_Lock_Free_Unprotected_Subprogram_Body.
+ * sem_ch9.adb (Allows_Lock_Free_Implementation): Restrict any
+ non-elementary out parameters in protected procedures.
+
+2012-07-12 Thomas Quinot <quinot@adacore.com>
+
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
+ Scalar_Storage_Order): Attribute applies to base type only.
+
+2012-07-12 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_aggr.adb (Convert_To_Positional): Increase acceptable size
+ of static aggregate when Static_Elaboration_Desired is requested.
+ Add a warning if the request cannot be satisfied either because
+ some components or some array bounds are non-static.
+
+2012-07-12 Thomas Quinot <quinot@adacore.com>
+
+ * exp_pakd.adb: Minor reformatting.
+
+2012-07-12 Tristan Gingold <gingold@adacore.com>
+
+ * tracebak.c: Fix warnings.
+ * raise-gcc.c (__gnat_adjust_context): New function
+ (__gnat_personality_seh0): Call __gnat_adjust_context to adjust
+ PC in machine frame for exceptions that occur in the current
+ function.
+
+2012-07-12 Thomas Quinot <quinot@adacore.com>
+
+ * g-bytswa.adb, g-bytswa.ads, s-bytswa.adb, s-bytswa.ads, Makefile.rtl:
+ Move GNAT.Byte_Swapping to System (with a renaming under GNAT)
+ so that it is usable in expanded code.
+
+2012-07-12 Tristan Gingold <gingold@adacore.com>
+
+ * s-osinte-hpux.ads: Increase alternate stack size on hpux.
+
+2012-07-12 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch3.adb (Make_Neq_Body): Fix typo in comment.
+
+2012-07-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tb-gcc.c (trace_callback): On IA-64/HP-UX, use workaround only
+ if USE_LIBUNWIND_EXCEPTIONS is defined.
+ * init.c: Further tweaks for IA-64/HP-UX.
+
+2012-07-12 Tristan Gingold <gingold@adacore.com>
+
+ * raise-gcc.c: Do not include unwind-dw2-fde.h. Adjust comments.
+ (db_region_for): Second argument is ip. Do not recompute ip.
+ (action_kind): Remove typedef, add unhandler enum const.
+ (action_descriptor): Adjust type of kind field.
+ (db_action_for): Second argument is ip, do not recompute it.
+ (get_call_site_action_for): First argument is call_site, do not
+ recompute it. Remove useless return.
+ (is_handled_by): Now return enum action_kind.
+ Handle GNAT_ALL_OTHERS first.
+ Return unhandler for GNAT_UNHANDLED_OTHERS.
+ (get_action_description_for): First argument is now ip, do not
+ recompute it. Adjust code for call to is_handled_by.
+ (__gnat_notify_unhandled_exception): Add prototype.
+ (PERSONALITY_FUNCTION): Call get_ip_from_context. Adjust calls.
+ Handle unhandler case.
+ (__gnat_cleanupunwind_handler): Add comments, add
+ ATTRIBUTE_UNUSED on arguments.
+ (__gnat_Unwind_RaiseException, __gnat_Unwind_ForcedUnwind): Define
+ only once.
+ * raise.h: Makes struct Exception_Data opaque.
+
+2012-07-12 Robert Dewar <dewar@adacore.com>
+
+ * make.adb, sem_ch9.adb, prj.adb, s-rident.ads, snames.ads-tmpl: Minor
+ reformatting.
+
+2012-07-12 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch3.adb (Is_User_Defined_Equality): New subprogram.
+ (Make_Neq_Body): New subprogram.
+ (Make_Predefined_Primitive_Specs): Adding local variable
+ Has_Predef_Eq_ Renaming to ensure that we enable the machinery
+ which handles renamings of predefined primitive operators.
+
+2012-07-09 Pascal Obry <obry@adacore.com>
+
+ * prj.adb (For_Every_Project_Imported_Context): Make sure we
+ callback with the project having sources.
+ Minor reformatting.
+
+2012-07-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * make.adb: Fix typo.
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * sem_ch9.adb (Check_Node): Allow attributes
+ that denote static function for lock-free implementation.
+ (Is_Static_Function): New routine.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * tracebak.c: Adjust skip_frames on Win64.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * init.c: Add __gnat_adjust_context_for_raise for ia64/hpux.
+ * raise-gcc.c: __gnat_cleanupunwind_handler: Do not call
+ _Unwind_GetGR on hpux when using libgcc unwinder. Part of
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * exp_attr.adb, sem_attr.adb: Minor reformatting.
+ * par-ch13.adb, par-ch4.adb, par-util.adb: Reformatting
+ considering that internal attribute names are not defined anymore
+ in the main attribute names list.
+ * snames.adb-tmpl (Get_Attribute_Id): Special processinf
+ for names CPU, Dispatching_Domain and Interrupt_Priority.
+ (Is_Internal_Attribute_Name): Minor reformatting.
+ * snames.ads-tmpl: New list of internal attribute names. Internal
+ attributes moved at the end of the attribute Id list.
+
+2012-07-09 Robert Dewar <dewar@adacore.com>
+
+ * freeze.adb: Minor code reorganization (use Ekind_In).
+ * exp_attr.adb, sem_ch9.adb par-ch4.adb, s-taprop-mingw.adb,
+ sem_attr.adb, exp_ch8.adb, snames.adb-tmpl, par-util.adb,
+ sem_ch13.adb, snames.ads-tmpl: Minor reformatting.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * raise-gcc.c: Adjust previous patch.
+
+2012-07-09 Vincent Celier <celier@adacore.com>
+
+ * make.adb (Compilation_Phase): Do not build libraries in
+ Codepeer mode (do not call Library_Phase).
+
+2012-07-09 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb: Extend previous change to elementary types.
+
+2012-07-09 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration): Reverse
+ previous patch since unconditionally handling as renaming_as_body
+ renamings of predefined dispatching equality and unequality operator
+ cause visibility problems with private overridings of the equality
+ operator (see ACATS C854001).
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * exp_attr.adb (Signal_Bad_Attribute): Raise Program_Error in
+ case of internal attribute names (already rejected by the parser).
+ * par-ch13.adb (P_Representation_Clause): Complain if an internal
+ attribute name that comes from source occurs.
+ * par-ch4.adb (P_Name): Complain if an internal attribute name
+ occurs in the context of an attribute reference.
+ * par-util.adb (Signal_Bad_Attribute): Don't complain about
+ mispelling attribute with internal attributes.
+ * sem_attr.adb (Analyze_Attribute): Raise Program_Error in case
+ of internal attribute names (already rejected by the parser).
+ * snames.adb-tmpl (Is_Internal_Attribute_Name): New routine.
+ * snames.ads-tmpl: Attributes CPU, Dispatching_Domain and
+ Interrupt_Priority are marked as INT attributes since they
+ don't denote real attribute and are only used internally in
+ the compiler.
+ (Is_Internal_Attribute_Name): New routine.
+
+2012-07-09 Thomas Quinot <quinot@adacore.com>
+
+ * einfo.adb (Set_Reverse_Storage_Order): Update assertion,
+ flag is now valid for array types as well.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * tracebak.c: Implement __gnat_backtrace for Win64 SEH.
+
+2012-07-09 Robert Dewar <dewar@adacore.com>
+
+ * einfo.ads: Minor reformatting.
+
+2012-07-09 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration): Handle as
+ renaming_as_body renamings of predefined dispatching equality
+ and unequality operators.
+
+2012-07-09 Robert Dewar <dewar@adacore.com>
+
+ * rident.ads: Do not instantiate r-ident.ads, this is now an
+ independent unit.
+
+2012-07-09 Javier Miranda <miranda@adacore.com>
+
+ * exp_disp.adb (Write_DT): Avoid runtime crash of this debugging
+ routine.
+ * sem_disp.adb (Find_Dispatching_Time): Protect this routine
+ against partially decorated entities.
+
+2012-07-09 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb (Check_Size): Reject a size clause that specifies
+ a value greater than Int'Last for a scalar type.
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * sem_ch9.adb (Allows_Lock_Free_Implementation): type must support
+ atomic operation moved to the protected body case. No non-elementary
+ out parameter moved to the protected declaration case. Functions have
+ only one lock-free restriction.
+ (Analyze_Protected_Type_Declaration): Issue a warning when
+ Priority given with Lock_Free.
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * sem_dim.adb: Grammar of aspect Dimension fixed.
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * freeze.adb (Freeze_Record_Type): Code reorg in order to avoid
+ pushing and popping the scope stack whenever a delayed aspect occurs.
+
+2012-07-09 Gary Dismukes <dismukes@adacore.com>
+
+ * s-os_lib.ads: Remove pragma Elaborate_Body, as
+ this is now unnecessary due to recently added pragma Preelaborate.
+
+2012-07-09 Jose Ruiz <ruiz@adacore.com>
+
+ * s-taprop-mingw.adb (Set_Priority): Remove the code that was
+ previously in place to reorder the ready queue when a task drops
+ its priority due to the loss of inherited priority.
+
+2012-07-09 Robert Dewar <dewar@adacore.com>
+
+ * layout.adb, i-cstrea.ads, a-ststio.ads, prj-util.ads, sem_cat.adb,
+ s-commun.ads, s-ficobl.ads, s-os_lib.ads, s-fileio.ads: Minor
+ reformatting.
+
+2012-07-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * raise-gcc.c: Update comments. Fix typo.
+
+2012-07-09 Thomas Quinot <quinot@adacore.com>
+
+ * einfo.adb, einfo.ads, sem_attr.adb, sem_ch13.adb: Attribute
+ Scalar_Storage_Order can be defined or queried for array types as well
+ as record types.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * a-exexpr-gcc.adb (CleanupUnwind_Handler): Now imported from
+ raise-gcc.c
+ * raise-gcc.c (__gnat_cleanupunwind_handler): Defined.
+ Strictly follow the ABI convention on ia64.
+
+2012-07-09 Gary Dismukes <dismukes@adacore.com>
+
+ * a-ststio.ads: Add pragma Preelaborate, per AI05-0283.
+ * i-cstrea.ads (max_path_len): Change from variable to deferred
+ constant to allow it to be used as a bound in string component
+ in type System.File_IO.Temp_File_Record.
+ * s-os_lib.ads, s-commun.ads, s-ficobl.ads, s-fileio.ads: Add pragma
+ Preelaborate.
+ * s-fileio.adb (Get_Case_Sensitive): Move function inside
+ procedure Open.
+ (File_Names_Case_Sensitive): Move variable inside
+ procedure Open, to avoid violation of Preelaborate restriction
+ (due to call to Get_Case_Sensitive).
+
+2012-07-09 Ed Schonberg <schonberg@adacore.com>
+
+ * layout.adb (Set_Elem_Alignment): Protect against meaningless
+ size clause, to prevent overflow in internal computation of
+ alignment.
+
+2012-07-09 Robert Dewar <dewar@adacore.com>
+
+ * freeze.adb, prj-util.adb, prj-util.ads, sem_ch13.adb: Minor
+ reformatting.
+
+2012-07-09 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_cat.adb (Check_Categorization_Dependencies):
+ Allow dependence of both Remote_Types and Remote_Call_Interface
+ declarations (not just Remote_Types units) on preelaborated
+ units, but require that the dependence be made via a private
+ with_clause. Issue a specialized error message.
+
+2012-07-09 Pascal Obry <obry@adacore.com>
+
+ * prj-util.adb, prj-util.ads (For_Interface_Sources): New routine.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * seh_init.c (__gnat_SEH_error_handler): On Win64 and SEH,
+ return for unknown exceptions.
+ * raise-gcc.c (__gnat_personality_seh0): Call __gnat_SEH_error_handler.
+
+2012-07-09 Joel Brobecker <brobecker@adacore.com brobecker>
+
+ * exp_dbug.ads (No_Dollar_In_Label): Delete.
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * sem_ch13.adb (Check_Overloaded_Name): New routine.
+
+2012-07-09 Vincent Pucci <pucci@adacore.com>
+
+ * freeze.adb (Freeze_Record_Type): Analyze the delayed aspects of the
+ components in a record type.
+
+2012-07-09 Pascal Obry <obry@adacore.com>
+
+ * prj-util.ads: Minor reformatting.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * raise-gcc.c (db_indent): Simplify style, improve comments.
+ Remove !IN_RTS part (dead).
+
+2012-07-09 Robert Dewar <dewar@adacore.com>
+
+ * usage.adb: Minor change to format of -gnatn line.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * a-exexpr-gcc.adb: Reorder routine.
+
+2012-07-09 Vincent Celier <celier@adacore.com>
+
+ * lib-writ.ads: Add documentation for the Z lines (implicitly
+ withed units) and Y lines (limited withed units).
+
+2012-07-09 Robert Dewar <dewar@adacore.com>
+
+ * lib.ads, exp_attr.adb, exp_ch9.adb, sem_dim.adb, sem_ch9.adb,
+ sem_prag.adb, sem_ch12.adb, mlib-utl.adb, freeze.adb, sem_res.adb,
+ sem_attr.adb, sem_case.adb, gnatlink.adb, exp_ch4.adb, sem_ch6.adb,
+ sem_elim.adb, s-dimmks.ads, sem_ch13.adb: Minor code clean ups.
+
+2012-07-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat_ugn.texi (Switches for gcc): Document -gnatn[12] only
+ lightly in the summary and more thoroughly in inlining section.
+ (Performance Considerations): Document -gnatn[12] in inlining
+ section.
+
+2012-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * a-exexpr-gcc.adb (Unhandled_Except_Handler): New procedure.
+ (Unhandled_Others_Value): New const.
+ * raise-gcc.c (GNAT_UNHANDLED_OTHERS): Define.
+ (action_descriptor): Remove ttype_entry.
+ (get_action_description_for): Do not assign ttype_entry.
+ (is_handled_by): Consider GNAT_UNHANDLED_OTHERS.
+
+2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (Call_to_gnu): Robustify test for function case
+ if the CICO mechanism is used.
+
+2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils2.c (build_simple_component_ref): Do not look
+ through an extension if the type contains a placeholder.
+
+2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_disp.adb (Expand_Dispatching_Call): Propagate the convention on
+ the designated subprogram type and also set Is_Dispatch_Table_Entity.
+ (Expand_Interface_Thunk): Propagate the convention on the thunk.
+ (Set_CPP_Constructors_Old): Set Is_Constructor and Convention_CPP on
+ the internal view of the constructors.
+ (Set_CPP_Constructors): Likewise.
+ * sem_prag.adb (Analyze_Pragma) <Pragma_CPP_Constructor>: Set the
+ convention on the function.
+ * gcc-interface/gigi.h (is_cplusplus_method): Declare.
+ * gcc-interface/decl.c (Has_Thiscall_Convention): New macro.
+ (gnat_to_gnu_entity) <E_Subprogram_Type>: Test it to set the `thiscall'
+ calling convention
+ (get_minimal_subprog_decl): Likewise.
+ (is_cplusplus_method): New predicate.
+ * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Access>: Issue an
+ error on access to C++ constructor or member function.
+
+2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types
+ attached to a TYPE_DECL.
+
2012-06-26 Vincent Pucci <pucci@adacore.com>
* exp_ch3.adb (Build_Init_Statements): Don't check the parents
diff --git a/gcc/ada/ChangeLog-2011 b/gcc/ada/ChangeLog-2011
index 37f011b3a3c..7f5f6f9aa5f 100644
--- a/gcc/ada/ChangeLog-2011
+++ b/gcc/ada/ChangeLog-2011
@@ -15259,3195 +15259,3 @@ Copyright (C) 2011 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
-
- * gnat_rm.texi: Ramification of pragma Eliminate documentation
- - fix bugs in the description of Source_Trace;
- - get rid of UNIT_NAME;
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_ch9.adb
- (Build_Dispatching_Requeue): Adding support for VM targets
- since we cannot directly reference the Tag entity.
- * exp_sel.adb (Build_K): Adding support for VM targets.
- (Build_S_Assignment): Adding support for VM targets.
- * exp_disp.adb
- (Default_Prim_Op_Position): In VM targets do not restrict availability
- of predefined interface primitives to compiling in Ada 2005 mode.
- (Is_Predefined_Interface_Primitive): In VM targets this service is not
- restricted to compiling in Ada 2005 mode.
- (Make_VM_TSD): Generate code that declares and initializes the OSD
- record. Needed to support dispatching calls through synchronized
- interfaces.
- * exp_ch3.adb
- (Make_Predefined_Primitive_Specs): Enable generation of predefined
- primitives associated with synchronized interfaces.
- (Make_Predefined_Primitive_Bodies): Enable generation of predefined
- primitives associated with synchronized interfaces.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * par-ch11.adb (P_Handled_Sequence_Of_Statements): mark a sequence of
- statements hidden in SPARK if preceded by the HIDE directive
- (Parse_Exception_Handlers): mark each exception handler in a sequence of
- exception handlers as hidden in SPARK if preceded by the HIDE directive
- * par-ch6.adb (P_Subprogram): mark a subprogram body hidden in SPARK
- if starting with the HIDE directive
- * par-ch7.adb (P_Package): mark a package body hidden in SPARK if
- starting with the HIDE directive; mark the declarations in a private
- part as hidden in SPARK if the private part starts with the HIDE
- directive
- * restrict.adb, restrict.ads
- (Set_Hidden_Part_In_SPARK): record a range of slocs as hidden in SPARK
- (Is_In_Hidden_Part_In_SPARK): new function which returns whether its
- argument node belongs to a part which is hidden in SPARK
- (Check_SPARK_Restriction): do not issue violations on nodes in hidden
- parts in SPARK; protect the possibly costly call to
- Is_In_Hidden_Part_In_SPARK by a check that the SPARK restriction is on
- * scans.ads (Token_Type): new value Tok_SPARK_Hide in enumeration
- * scng.adb (Accumulate_Token_Checksum_GNAT_6_3,
- Accumulate_Token_Checksum_GNAT_5_03): add case for new token
- Tok_SPARK_Hide.
- (Scan): recognize special comment starting with '#' and followed by
- SPARK keyword "hide" as a HIDE directive.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * types.ads, erroutc.ads: Minor reformatting.
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * link.c: Add response file support for cross platforms.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb (Resolve_Array_Aggregate): when copying the expression
- in an association, set parent field of copy before partial analysis.
- * sem_res.adb (Resolve_Slice): create reference to itype only when
- expansion is enabled.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * einfo.adb, einfo.ads (Body_Is_In_ALFA, Set_Body_Is_In_ALFA): get/set
- for new flag denoting which subprogram bodies are in ALFA
- * restrict.adb, sem_ch7.adb: Update comment
- * sem_ch11.adb, sem_ch2.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb,
- sem_ch9.adb, sem_res.adb: Add calls to
- Current_Subprogram_Body_Is_Not_In_ALFA on unsupported constructs.
- * sem_ch6.adb (Analyze_Function_Return): add calls to
- Current_Subprogram_Body_Is_Not_In_ALFA on return statement in the
- middle of the body, and extended return.
- (Check_Missing_Return): add calls to Set_Body_Is_In_ALFA with argument
- False when missing return.
- (Analyze_Subprogram_Body_Helper): initialize the flag Body_Is_In_ALFA
- to True for subprograms whose spec is in ALFA. Remove later on the flag
- on the entity used for a subprogram body when there exists a separate
- declaration.
- * sem_util.adb, sem_util.ads (Current_Subprogram_Body_Is_Not_In_ALFA):
- if Current_Subprogram is not Empty, set its flag Body_Is_In_ALFA to
- False, otherwise do nothing.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * inline.adb, stand.ads, sem_ch6.adb, sem_ch8.adb: Minor reformatting.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_ch4.ads: minor formatting.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_aggr.adb, err_vars.ads, sem_ch3.adb, sem_ch5.adb, sem_ch9.adb,
- debug.adb, sem_util.adb, sem_res.adb, sem_attr.adb, gnat1drv.adb,
- errout.adb, errout.ads, exp_ch6.adb, sem_ch4.adb, restrict.adb,
- restrict.ads, sem_ch6.adb, sem_ch8.adb, sem_ch11.adb,
- opt.ads: cleanup of SPARK mode
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * cstand.adb (Create_Standard): sets Is_In_ALFA component of standard
- types.
- * einfo.adb, einfo.ads (Is_In_ALFA): add flag for all entities
- (Is_In_ALFA, Set_Is_In_ALFA): new subprograms to access flag Is_In_ALFA
- * sem_ch3.adb
- (Analyze_Object_Declaration): set Is_In_ALFA flag for objects
- (Constrain_Enumeration): set Is_In_ALFA flag for enumeration subtypes
- (Constrain_Integer): set Is_In_ALFA flag for integer subtypes
- (Enumeration_Type_Declaration): set Is_In_ALFA flag for enumeration
- types.
- (Set_Scalar_Range_For_Subtype): unset Is_In_ALFA flag for subtypes with
- non-static range.
- * sem_ch6.adb (Analyze_Return_Type): unset Is_In_ALFA flag for
- functions whose return type is not in ALFA.
- (Analyze_Subprogram_Specification): set Is_In_ALFA flag for subprogram
- specifications.
- (Process_Formals): unset Is_In_ALFA flag for subprograms if a
- parameter's type is not in ALFA.
- * stand.ads (Standard_Type_Is_In_ALFA): array defines which standard
- types are in ALFA.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch6 (Analyze_Expression_Function): treat the function as
- Inline_Always, and introduce a subprogram declaration for it when it is
- not a completion.
- * inline.adb (Add_Inlined_Body): recognize bodies that come from
- expression functions, so that the back-end can determine whether they
- can in fact be inlined.
- * sem_util.adb (Is_Expression_Function): predicate to determine whether
- a function body comes from an expression function.
-
-2011-08-02 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch6.adb (Check_Conformance): Revise the check for nonconforming
- null exclusions to test Can_Never_Be_Null on the anonymous access types
- of the formals rather than testing the formals themselves. Exclude this
- check in cases where the Old_Formal is marked as a controlling formal,
- to avoid issuing spurious errors for bodies completing dispatching
- operations (due to the flag not getting set on controlling access
- formals in body specs).
- (Find_Corresponding_Spec): When checking full and subtype conformance of
- subprogram bodies in instances, pass Designated and E in that order, for
- consistency with the expected order of the formals (New_Id followed by
- Old_Id).
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch8.adb: Minor reformatting.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch8.adb (Analyze_Subprogram_Renaming): new procedure
- Check_Class_Wide_Actual, to implement AI05-0071, on defaulted
- primitive operations of class-wide actuals.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_atag.ads, exp_atag.adb
- (Build_Common_Dispatching_Select_Statements): Remove argument Loc
- since its value is implicitly passed in argument Typ.
- * exp_disp.adb (Make_Disp_Conditional_Select_Body,
- Make_Disp_Timed_Select_Body): Remove Loc in calls to routine
- Build_Common_Dispatching_Select_Statements.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch3.adb, exp_atag.ads, get_scos.adb, get_scos.ads,
- exp_disp.adb, lib-xref.adb, lib-xref.ads: Update comments.
- Minor reformatting.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_res.adb: Minor reformatting.
- * sem_prag.adb: Minor reformatting.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_atag.adb, exp_atags.ads
- (Build_Common_Dispatching_Select_Statement): Replace argument DT_Ptr
- by the tagged type Entity. Required to use this routine in the VM
- targets since we do not have available the Tag entity in the VM
- platforms.
- * exp_ch6.adb
- (Expand_N_Subprogram_Body): Do not invoke Build_VM_TSDs if package
- Ada.Tags has not been previously loaded.
- * exp_ch7.adb
- (Expand_N_Package_Declaration, Expand_N_Package_Body): Do not invoke
- Build_VM_TSDs if package Ada.Tags has not been previously loaded.
- * sem_aux.adb
- (Enclosing_Dynamic_Scope): Add missing support to handle the full
- view of enclosing scopes. Required to handle enclosing scopes that
- are synchronized types whose full view is a task type.
- * exp_disp.adb
- (Build_VM_TSDs): Minor code improvement to avoid generating and
- analyzing lists with empty nodes.
- (Make_Disp_Asynchronous_Select_Body): Add support for VM targets.
- (Make_Disp_Conditional_Select_Body): Add support for VM targets.
- (Make_Disp_Get_Prim_Op_Kind): Add support for VM targets.
- (Make_Disp_Timed_Select_Body): Add support for VM targets.
- (Make_Select_Specific_Data_Table): Add support for VM targets.
- (Make_VM_TSD): Generate code to initialize the SSD structure of
- the TSD.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * lib-writ.adb (Write_ALI): when ALFA mode is set, write local
- cross-references section in ALI.
- * lib-xref.adb, lib-xref.ads (Xref_Entry): add components Sub
- (enclosing subprogram), Slc (location of Sub) and Sun (unit number of
- Sub).
- (Enclosing_Subprogram_Or_Package): new function to return the enclosing
- subprogram or package entity of a node
- (Is_Local_Reference_Type): new function returns True for references
- selected in local cross-references.
- (Lt): function extracted from Lt in Output_References
- (Write_Entity_Name): function extracted from Output_References
- (Generate_Definition): generate reference with type 'D' for definition
- of objects (object declaration and parameter specification), with
- appropriate locations and units, for use in local cross-references.
- (Generate_Reference): update fields Sub, Slc and Sun. Keep newly created
- references of type 'I' for initialization in object definition.
- (Output_References): move part of function Lt and procedure
- Write_Entity_Name outside of the body. Ignore references of types 'D'
- and 'I' introduced for local cross-references.
- (Output_Local_References): new procedure to output the local
- cross-references sections.
- (Lref_Entity_Status): new array defining whether an entity is a local
- * sem_ch3.adb (Analyze_Object_Declaration): call Generate_Reference
- with 'I' type when initialization expression is present.
- * get_scos.adb, get_scos.ads: Correct comments and typos
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_ch6.adb (Expand_N_Subprogram_Body): Enable generation of TSDs in
- the JVM target.
- * exp_ch7.adb (Expand_N_Package_Body): Enable generation of TSDs in
- the JVM target.
- * exp_disp.adb (Build_VM_TSDs): No action needed if the runtime has no
- TSD support.
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * prj-nmsc.adb (File_Found): New components Excl_File and Excl_Line
- (No_Space_Img): New function
- (Find_Excluded_Sources): When reading from a file, record the file name
- and the line number for each excluded source.
- (Mark_Excluded_Sources): When reporting an error, if the excluded
- sources were read from a file, include file name and line number in
- the error message.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_res.adb (Resolve_Call): implement rule in RM 12.5.1 (23.3/2).
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * exp_ch7.adb exp_ch6.adb, exp_disp.adb: Minor reformatting
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_ch6.adb (Expand_N_Subprogram_Body): Temporarily restrict the
- generation of TSDs to the DOTNET compiler.
- * exp_ch7.adb (Expand_N_Package_Body): Temporarily restrict the
- generation of TSDs to the DOTNET compiler.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_disp.ads (Build_VM_TSDs): Build the runtime Type Specific Data
- record of all the tagged types declared inside library level package
- declarations, library level package bodies or library level subprograms.
- * exp_disp.adb (Make_VM_TSD): New subprogram that builds the TSD
- associated with a given tagged type.
- (Build_VM_TSDs): New subprogram.
- * exp_ch6.adb (Expand_N_Subprogram_Body): Generate TSDs records of main
- compilation units that are subprograms.
- * exp_ch7.adb (Expand_N_Package_Body): Generate TSDs of main
- compilation units that are package bodies.
- (Expand_N_Package_Declaration): Generate TSDs of the main compilation
- units that are a package declaration or a package instantiation.
- * exp_intr.adb (Expand_Dispatching_Constructor_Call): Minor code
- reorganization to improve the error generated by the frontend when the
- function Ada.Tags.Secondary_Tag is not available.
- * rtsfind.ads (RE_Register_TSD): New runtime entity.
- * exp_ch4.adb (Expand_N_Type_Conversion): Minor code cleanup.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_disp.adb (Make_DT): Generate call to Check_TSD in Ada 2005 mode.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * s-imenne.ads: Minor reformatting.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * a-stunau.ads: Add pragma Suppress_Initialization for Big_String
- * freeze.adb (Warn_Overlay): Don't warn if initialization suppressed
- * s-stalib.ads: Add pragma Suppress_Initialization for Big_String
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * einfo.ads (Materialize_Entity): Document this is only for renamings
- * exp_ch3.adb (Expand_N_Object_Declaration): Make sure we generate
- required debug information in the case where we transform the object
- declaration into a renaming declaration.
- * exp_ch4.adb (Expand_Concatenate): Generate debug info for result
- object
- * exp_dbug.ads (Debug_Renaming_Declaration): Document setting of
- Materialize_Entity.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * einfo.ads, einfo.adb (Suppress_Initialization): Replaces
- Suppress_Init_Procs.
- * exp_ch3.adb, exp_disp.adb, freeze.adb: Use
- Suppress_Initialization/Initialization_Suppressed.
- * gnat_rm.texi: New documentation for pragma Suppress_Initialization
- * sem_aux.ads, sem_aux.adb (Initialization_Suppressed): New function
- * sem_dist.adb: Use Suppress_Initialization/Initialization_Suppressed
- * sem_prag.adb: New processing for pragma Suppress_Initialization.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * gnat_rm.texi, a-tags.ads, sem_prag.adb, sem_ch12.adb, exp_disp.adb:
- Minor reformatting.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_prag.adb (Chain_PPC): Implement AI04-0230: null procedures can
- only have inheritable classwide pre/postconditions.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * a-tags.ads, a-tags.adb (Check_TSD): New subprogram.
- * rtsfind.ads (RE_Check_TSD): New runtime entity.
- * exp_disp.adb (Make_DT): Generate call to the new runtime routine that
- checks if the external tag of a type is the same as the external tag
- of some other declaration.
-
-2011-08-02 Thomas Quinot <quinot@adacore.com>
-
- * s-taskin.ads: Minor reformatting.
-
-2011-08-02 Emmanuel Briot <briot@adacore.com>
-
- * g-comlin.adb (Display_Help): swap the order in which it prints the
- short help and the general usage.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): copy properly
- the aspect declarations and attach them to the generic copy for
- subsequent analysis.
- (Analyze_Subprogram_Instantiation): copy explicitly the aspect
- declarations of the generic tree to the new subprogram declarations.
- * sem_attr.adb (Check_Precondition_Postcondition): recognize
- conditions that apply to a subprogram instance.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * gnat_rm.texi: Clarify doc on pragma Source_File_Name[_Project].
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch3.adb (Derived_Type_Declaration): When checking that a untagged
- private type with a tagged full view is not derived in the immediate
- scope of the partial view, (RM 7.3 (7)) use the scope of the base type.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * exp_ch4.adb: Minor reformatting.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch5.adb (Analyze_Loop_Statement): If the iteration scheme is an
- Ada2012 iterator, the loop will be rewritten during expansion into a
- while loop with a cursor and an element declaration. Do not analyze the
- body in this case, because if the container is for indefinite types the
- actual subtype of the elements will only be determined when the cursor
- declaration is analyzed.
-
-2011-08-02 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Ignore
- size/alignment related attributes in CodePeer_Mode.
-
-2011-08-02 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch3.adb (Check_Ops_From_Incomplete_Type): Remove call to
- Prepend_Element, since this can result in the operation getting the
- wrong slot in the full type's dispatch table if the full type has
- inherited operations. The incomplete type's operation will get added
- to the proper position in the full type's primitives
- list later in Sem_Disp.Check_Operation_From_Incomplete_Type.
- (Process_Incomplete_Dependents): Add Is_Primitive test when checking for
- dispatching operations, since there are cases where nonprimitive
- subprograms can get added to the list of incomplete dependents (such
- as subprograms in nested packages).
- * sem_ch6.adb (Process_Formals): First, remove test for being in a
- private part when determining whether to add a primitive with a
- parameter of a tagged incomplete type to the Private_Dependents list.
- Such primitives can also occur in the visible part, and should not have
- been excluded from being private dependents.
- * sem_ch7.adb (Uninstall_Declarations): When checking the rule of
- RM05-3.10.1(9.3/2), test that a subprogram in the Private_Dependents
- list of a Taft-amendment incomplete type is a primitive before issuing
- an error that the full type must appear in the same unit. There are
- cases where nonprimitives can be in the list (such as subprograms in
- nested packages).
- * sem_disp.adb (Derives_From): Use correct condition for checking that
- a formal's type is derived from the type of the corresponding formal in
- the parent subprogram (the condition was completely wrong). Add
- checking that was missing for controlling result types being derived
- from the result type of the parent operation.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * errout.adb (First_Node): minor renaming
- * restrict.adb (Check_Formal_Restriction): put restriction warning on
- first node.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_res.adb (Resolve_Logical_Op): ensure N is a binary operator
- before accessing operands.
- * sem_util.adb (Is_SPARK_Initialization_Expr): follow original nodes to
- decide whether an initialization expression respects SPARK rules, as
- the plain node is the expanded one. This allows for more valid warnings
- to be issued.
- * gnat_rm.texi: Minor update.
-
-2011-08-02 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Revert
- previous change.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch3.adb, sem_ch4.adb: Minor reformatting.
-
-2011-08-02 Hristian Kirtchev <kirtchev@adacore.com>
-
- * exp_ch5.adb (Expand_Iterator_Loop): Reformatting. Wrap the original
- loop statements and the element renaming declaration with a block when
- the element type is controlled.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sinfo.ads: Minor formatting.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb (Add_Association): if the association has a box and no
- expression, use the Sloc of the aggregate itself for the new
- association.
- * errout.adb (First_Node): Exclude nodes with no Sloc, and always use
- the Original_Node.
-
-2011-08-02 Hristian Kirtchev <kirtchev@adacore.com>
-
- * exp_ch5.adb (Expand_Iterator_Loop): Code cleanup and refactoring.
- When a container is provided via a function call, generate a renaming
- of the function result. This avoids the creation of a transient scope
- and the premature finalization of the container.
- * exp_ch7.adb (Is_Container_Cursor): Removed.
- (Wrap_Transient_Declaration): Remove the supression of the finalization
- of the list controller when the declaration denotes a container cursor,
- it is not needed.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * restrict.adb (Check_Formal_Restriction): only issue a warning if the
- node is from source, instead of the original node being from source.
- * sem_aggr.adb
- (Resolve_Array_Aggregate): refine the check for a static expression, to
- recognize also static ranges
- * sem_ch3.adb, sem_ch3.ads (Analyze_Component_Declaration,
- Array_Type_Declaration): postpone the test for the type being a subtype
- mark after the type has been resolved, so that component-selection and
- expanded-name are discriminated.
- (Make_Index, Process_Range_Expr_In_Decl): add a parameter In_Iter_Schm
- to distinguish the case of an iteration scheme, so that an error is
- issed on a non-static range in SPARK except in an iteration scheme.
- * sem_ch5.adb (Analyze_Iteration_Scheme): call Make_Index with
- In_Iter_Schm = True.
- * sem_ch6.adb (Analyze_Subprogram_Specification): refine the check for
- user-defined operators so that they are allowed in renaming
- * sem_ch8.adb
- (Find_Selected_Component): refine the check for prefixing of operators
- so that they are allowed in renaming. Move the checks for restrictions
- on selector name after analysis discriminated between
- component-selection and expanded-name.
- * sem_res.adb (Resolve_Op_Concat_Arg): do not issue a warning on
- concatenation argument of string type if it is static.
- * sem_util.adb, sem_util.ads
- (Check_Later_Vs_Basic_Declarations): add a new function
- Is_Later_Declarative_Item to decice which declarations are allowed as
- later items, in the two different modes Ada 83 and SPARK. In the SPARK
- mode, add that renamings are considered as later items.
- (Enclosing_Package): new function to return the enclosing package
- (Enter_Name): correct the rule for homonyms in SPARK
- (Is_SPARK_Initialization_Expr): default to returning True on nodes not
- from source (result of expansion) to avoid issuing wrong warnings.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * errout.adb: On anything but an expression First_Node returns its
- argument.
-
-2011-08-02 Pascal Obry <obry@adacore.com>
-
- * prj-proc.adb, make.adb, makeutl.adb: Minor reformatting.
-
-2011-08-02 Hristian Kirtchev <kirtchev@adacore.com>
-
- * exp_ch5.adb (Expand_Iterator_Loop): Code cleanup and reorganization.
- Set the associated loop as the related expression of internally
- generated cursors.
- * exp_ch7.adb (Is_Container_Cursor): New routine.
- (Wrap_Transient_Declaration): Supress the finalization of the list
- controller when the declaration denotes a container cursor.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * opt.ads (SPARK_Mode): update comment, SPARK_Mode only set through
- command line now.
- * par-ch3.adb (P_Delta_Constraint): remove check in SPARK mode that the
- expression is a simple expression. This check cannot be performed in
- the semantics, so just drop it.
- (P_Index_Or_Discriminant_Constraint): move check that the index or
- discriminant is a subtype mark to Analyze_Subtype_Declaration in the
- semantics. Other cases were previously checked in the semantics.
- * par-ch4.adb (P_Name): move checks that a selector name is not
- character literal or an operator symbol to Find_Selected_Component in
- the semantics
- * par-ch5.adb (Parse_Decls_Begin_End): move check that basic
- declarations are not placed after later declarations in a separate
- procedure in Sem_Util (possibly not the best choice?), to be used both
- during parsing, for Ada 83 mode, and during semantic analysis, for
- SPARK mode.
- * par-endh.adb (Check_End): move check that end label is not missing
- to Process_End_Label in the semantics
- * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): remove
- the special case for SPARK restriction
- * par.adb: use and with Sem_Util, for use in Parse_Decls_Begin_End
- * restrict.adb, restrict.ads (Check_Formal_Restriction): add a
- parameter Force to issue the error message even on internal node (used
- for generated end label). Call Check_Restriction to check when an error
- must be issued. In SPARK mode, issue an error message even if the
- restriction is not set.
- (Check_Restriction): new procedure with an additional out parameter to
- inform the caller that a message has been issued
- * sem_aggr.adb: Minor modification of message
- * sem_attr.adb (Analyze_Attribute): call Check_Formal_Restriction
- instead of issuing an error message directly
- * sem_ch3.adb (Analyze_Declarations): move here the check that basic
- declarations are not placed after later declarations, by calling
- Check_Later_Vs_Basic_Declarations
- (Analyze_Subtype_Declaration): move here the check that an index or
- discriminant constraint must be a subtype mark. Change the check that
- a subtype of String must start at one so that it works on subtype marks.
- * sem_ch4.adb (Analyze_Call): move here the check that a named
- association cannot follow a positional one in a call
- * sem_ch5.adb (Check_Unreachable_Code): call Check_Formal_Restriction
- instead of issuing an error message directly
- * sem_ch8.adb (Find_Selected_Component): move here the check that a
- selector name is not a character literal or an operator symbol. Move
- here the check that the prefix of an expanded name cannot be a
- subprogram or a loop statement.
- * sem_util.adb, sem_util.ads (Check_Later_Vs_Basic_Declarations): new
- procedure called from parsing and semantics to check that basic
- declarations are not placed after later declarations
- (Process_End_Label): move here the check that end label is not missing
-
-2011-08-02 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Ignore enum
- representation clause in codepeer mode, since it confuses CodePeer and
- does not bring useful info.
-
-2011-08-02 Ed Falis <falis@adacore.com>
-
- * init.c: initialize fp hw on MILS.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * errout.adb (First_Node): for bodies, return the node itself (small
- optimization). For other nodes, do not check source_unit if the node
- comes from Standard.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * exp_ch3.adb: Minor comment additions.
- * sem_ch13.adb: Minor reformatting.
-
-2011-08-02 Pascal Obry <obry@adacore.com>
-
- * make.adb, makeutl.adb: Removes some superfluous directory separator.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_attr.adb: Minor reformatting.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * einfo.adb (Has_Default_Aspect): Replaces Has_Default_Value
- (Has_Default_Component_Value): Removed
- * einfo.ads Comment updates
- (Has_Default_Aspect): Replaces Has_Default_Value
- (Has_Default_Component_Value): Removed
- * exp_ch13.adb
- (Expand_N_Freeze_Entity): Handle Default[_Component]_Value aspects
- * exp_ch3.adb
- (Build_Array_Init_Proc): Handle Default_[Component_]Value aspects
- (Get_Simple_Init_Val): Handle Default_Value aspect
- (Needs_Simple_Initialization): Handle Default_Value aspect
- * exp_ch3.ads: Needs_Simple_Initialization
- * freeze.adb (Freeze_Entity): Handle Default_[Component_]Value aspect
- * par-prag.adb (Pragma_Default[_Component]Value) Removed
- * sem_ch13.adb
- (Analyze_Aspect_Specifications): Fix Default[_Component]_Value aspects
- * sem_prag.adb (Pragma_Default[_Component]Value) Removed
- * snames.ads-tmpl (Pragma_Default[_Component]Value) Removed
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch5.adb (Analyze_Iterator_Specification): use base type to locate
- package containing iteration primitives.
- exp_ch5.adb (Expand_Iterator_Loop): ditto.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch5.adb (Analyze_Iteration_Scheme): For an Ada2012 iterator with
- "of", pre-analyze expression in case it is a function call with
- finalization actions that must be placed ahead of the loop.
- * exp_ch5.adb (Expand_Iterator_Loop): If condition_actions are present
- on an Ada2012 iterator, insert them ahead of the rewritten loop.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * cstand.adb (Create_Float_Types): Only consider C's long double for
- Long_Long_Float, in addition to double.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch3.adb, sem_ch5.adb, sem_type.adb, switch-c.adb, switch-c.ads,
- sem_prag.adb, sem_util.adb, sem_util.ads, sem_res.adb, warnsw.ads,
- prepcomp.ads, cstand.adb, stand.ads, a-calfor.adb, s-stusta.adb:
- Minor reformatting.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_attr.adb: handle properly 'Result when it is a prefix of an
- indexed component.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * einfo.ads, einfo.adb
- (Original_Access_Type): Move this attribute to Node26 since there was
- an undocumented use of Node21 in E_Access_Subprogram_Type entities
- which causes conflicts and breaks the generation of the .NET compiler.
- (Interface_Name): Add missing documentation on JGNAT only uses of
- this attribute.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * cstand.adb (Back_End_Float_Types): Use Elist instead of Nlist
- (Find_Back_End_Float_Type): Likewise
- (Create_Back_End_Float_Types): Likewise
- (Create_Float_Types): Likewise
- (Register_Float_Type): Likewise
- * sem_ch3.adb (Floating_Point_Type_Declaration): Use Elist instead of
- Nlist and split out type selection in new local Find_Base_Type function.
- * sem_prag.adb (Process_Import_Predefined_Type): Use Elist instead of
- Nlist
- * stand.ads (Predefined_Float_Types): Use Elist instead of Nlist
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * inline.adb: Minor code reorganization (put Get_Code_Unit_Entity in
- alpha order).
- * opt.ads: Minor comment change.
- * sem_ch12.adb: Minor code reorganization.
-
-2011-08-02 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch3.adb (Complete_Private_Subtype): Don't append the private
- subtype's list of rep items to the list on the full subtype in the case
- where the lists are the same.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * switch-c.adb (Free): New deallocation procedure to avoid implicitly
- using the one from System.Strings, which also deallocates all strings.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * gcc-interface/gigi.h, gcc-interface/misc.c (enumerate_modes): New
- function.
- * gcc-interface/Make-lang.in: Update dependencies.
-
-2011-08-02 Olivier Hainque <hainque@adacore.com>
-
- * gcc-interface/trans.c (Subprogram_Body_to_gnu): Set the function
- end_locus.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * sem_ch3.adb (Check_Anonymous_Access_Components): Create extra formals
- associated with anonymous access to subprograms.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * opt.ads
- (Preprocessing_Symbol_Defs): Move from Prepcomp.Symbol_Definitions.
- (Preprocessing_Symbol_Last): Move from Prepcomp.Last_Definition.
- * prepcomp.adb (Symbol_Definitions, Last_Definition): Move to opt.ads
- (Add_Symbol_Definition): Move to switch-c.adb
- (Process_Command_Line_Symbol_Definitions): Adjust references to above.
- * prepcomp.ads: Remove dependency on Ada.Unchecked_Deallocation.
- (Add_Symbol_Definition): Move to switch-c.adb.
- * sem_ch13.adb, sem_prag.adb: Add dependency on Warnsw.
- * sem_warn.adb
- (Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
- Move to warnsw.adb.
- * sem_warn.ads (Warn_On_Record_Holes, Warn_On_Overridden_Size,
- Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
- Move to warnsw.adb.
- * switch-c.adb: Replace dependency on Prepcomp and Sem_Warn by Warnsw.
- (Add_Symbol_Definition): Moved from Prepcomp.
- * switch-c.ads: Update copyright notice. Use String_List instead of
- Argument_List, removing dependency on System.OS_Lib.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_ch3.adb (Analyze_Object_Declaration): issue an error in formal
- mode on initialization expression which does not respect SPARK
- restrictions.
- * sem_util.adb, sem_util.ads (Is_SPARK_Initialization_Expr): determines
- if the tree referenced by its argument represents an initialization
- expression in SPARK, suitable for initializing an object in an object
- declaration.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_ch9.adb (Expand_Access_Protected_Subprogram_Type): Link the
- internally generated access to subprogram with its associated protected
- subprogram type.
- * einfo.ads, einfo.adb (Original_Access_Type): New attribute.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * cstand.adb (Register_Float_Type): Print information about type to
- register, if the Debug_Flag_Dot_B is set.
- * debug.adb (Debug_Flag_Dot_B): Document d.b debug option.
- * rtsfind.ads (RE_Max_Base_Digits): New run time entity.
- * sem_ch3.adb (Floating_Point_Type_Declaration): Allow declarations
- with a requested precision of more than Max_Digits digits and no more
- than Max_Base_Digits digits, if a range specification is present and the
- Predefined_Float_Types list has a suitable type to derive from.
- * sem_ch3.adb (Rep_Item_Too_Early): Avoid generating error in the
- case of type completion with pragma Import
- * sem_prag.adb
- (Process_Import_Predefined_Type): Processing to complete a type
- with pragma Import. Currently supports floating point types only.
- (Set_Convention_From_Pragma): Do nothing without underlying type.
- (Process_Convention): Guard against absence of underlying type,
- which may happen when importing incomplete types.
- (Process_Import_Or_Interface): Handle case of importing predefined
- types. Tweak error message.
-
-2011-08-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * inline.adb (Add_Inlined_Body): Adjust check for library-level inlined
- functions to previous change. Reorganize code slightly.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * back_end.ads (Register_Type_Proc): New call back procedure type for
- allowing the back end to provide information about available types.
- (Register_Back_End_Types): New procedure to register back end types.
- * back_end.adb (Register_Back_End_Types): Call the back end to enumerate
- available types.
- * cstand.adb (Back_End_Float_Types): New list for floating point types
- supported by the back end.
- (Build_Float_Type): Add extra parameter for Float_Rep_Kind.
- (Copy_Float_Type): New procedure to make new copies of predefined types.
- (Register_Float_Type): New call back procedure to populate the BEFT list
- (Find_Back_End_Float_Type): New procedure to find a BEFT by name
- (Create_Back_End_Float_Types): New procedure to populate the BEFT list.
- (Create_Float_Types): New procedure to create entities for floating
- point types predefined in Standard, and put these and any remaining
- BEFTs on the Predefined_Float_Types list.
- * stand.ads (Predefined_Float_Types): New list for predefined floating
- point types that do not have declarations in package Standard.
-
-2011-08-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * inline.adb (Get_Code_Unit_Entity): New local function. Returns the
- entity node for the unit containing the parameter.
- (Add_Inlined_Body): Use it to find the unit containing the subprogram.
- (Add_Inlined_Subprogram): Likewise.
- * gcc-interface/Make-lang.in: Update dependencies.
-
-2011-08-02 Thomas Quinot <quinot@adacore.com>
-
- * s-stusta.adb (Print): Make sure Pos is always initialized to a
- suitable value.
-
-2011-08-02 Geert Bosch <bosch@adacore.com>
-
- * a-calfor.adb (Image): Simplify, removing unnecessary uses of 'Image.
-
-2011-08-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_type.adb (Covers): Move trivial case to the top and reuse the
- computed value of Base_Type.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * restrict.adb (Check_Restriction): issue an error for any use of
- class-wide, even if the No_Dispatch restriction is not set.
- * sem_aggr.adb: Correct typos in comments and messages in formal mode
- * sem_ch3.adb (Process_Full_View): issue an error in formal mode is,
- when completing a private extension, the type named in the private part
- is not the same as that named in the visible part.
- * sem_res.adb (Resolve_Call): issue an error in formal mode on the use
- of an inherited primitive operations of a tagged type or type extension
- that returns the tagged type.
- * sem_util.adb, sem_util.ads (Is_Inherited_Operation_For_Type): new
- function which returns True for an implicit operation inherited by the
- derived type declaration for the argument type.
- (Is_SPARK_Object_Reference): move to appropriate place in alphabetic
- order.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch5.adb (Pre_Analyze_Range): new procedure extracted from
- Process_Bounds, to perform analysis with expansion of a range or an
- expression that is the iteration scheme for a loop.
- (Analyze_Iterator_Specification): If domain of iteration is given by a
- function call with a controlled result, as is the case if call returns
- a predefined container, ensure that finalization actions are properly
- generated.
- * par-ch3.adb: accept Ada2012 iterator form in P_Discrete_Range.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * sem_ch5.adb (Analyze_Iteration_Scheme): Fix typo.
- * gcc-interface/Make-lang.in: Update dependencies.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * sem_util.ads, sem_util.adb (Is_Variable): Add a new formal to
- determine if the analysis is performed using N or Original_Node (N).
- * exp_util.adb (Side_Effect_Free): Code cleanup since the new
- functionality of routine Is_Variable avoids code duplication.
- * checks.adb (Determine_Range): Handle temporaries generated by
- Remove_Side_Effects.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_ch4.adb (Expand_N_Quantified_Expression): Force reanalysis and
- expansion of the condition. Required since the previous analysis was
- done with expansion disabled (see Resolve_Quantified_Expression) and
- hence checks were not inserted and record comparisons have not been
- expanded.
-
-2011-08-02 Ed Falis <falis@adacore.com>
-
- * s-taprop-vxworks.adb, s-intman-vxworks.adb, s-intman-vxworks.ads:
- Update header.
-
-2011-08-02 Bob Duff <duff@adacore.com>
-
- * opt.ads: Minor comment fix.
-
-2011-08-02 Bob Duff <duff@adacore.com>
-
- * sem_ch12.adb (Analyze_Package_Instantiation,
- Analyze_Subprogram_Instantiation): Turn off style checking while
- analyzing an instance. Whatever style checks that apply to the generic
- unit should apply, so it makes no sense to apply them in an instance.
- This was causing trouble when compiling an instance of a runtime
- unit that violates the -gnatyO switch.
- * stylesw.adb (Set_Style_Check_Options): "when 'O' =>" was missing from
- one of the two case statements, causing spurious errors.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * uname.adb: Minor reformatting.
- * gnatcmd.adb: Minor reformatting.
- * exp_attr.adb: Minor reformatting.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * exp_ch5.adb (Expand_N_Assignment_Statement): under restriction
- No_Dispatching_Calls, do not look for the Assign primitive, because
- predefined primitives are not created in this case.
-
-2011-08-02 Bob Duff <duff@adacore.com>
-
- * stylesw.ads: Minor comment fixes.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * freeze.adb (Add_To_Result): New procedure.
-
-2011-08-02 Jose Ruiz <ruiz@adacore.com>
-
- * exp_attr.adb (Find_Stream_Subprogram): When using a configurable run
- time, if the specific run-time routines for handling streams of strings
- are not available, use the default mechanism.
-
-2011-08-02 Arnaud Charlet <charlet@adacore.com>
-
- * s-regpat.ads: Fix typo.
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * prj-conf.adb (Get_Or_Create_Configuration_File): If On_Load_Config is
- not null, call it to create the in memory config project file without
- parsing an existing default config project file.
-
-2011-08-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * atree.adb (Allocate_Initialize_Node): Remove useless temporaries.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_elim.adb: an abstract subprogram does not need an eliminate
- pragma for its descendant to be eliminable.
-
-2011-08-02 Ed Falis <falis@adacore.com>
-
- * init.c: revert to handling before previous checkin for VxWorks
- * s-intman-vxworks.adb: delete unnecessary declarations related to
- using Ada interrupt facilities for handling signals.
- Delete Initialize_Interrupts. Use __gnat_install_handler instead.
- * s-intman-vxworks.ads: Import __gnat_install_handler as
- Initialize_Interrupts.
- * s-taprop-vxworks.adb: Delete Signal_Mask.
- (Abort_Handler): change construction of mask to unblock exception
- signals.
-
-2011-08-02 Jerome Guitton <guitton@adacore.com>
-
- * a-except-2005.adb (Raise_From_Signal_Handler): Call
- Debug_Raise_Exception before propagation starts.
-
-2011-08-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch6.adb (Expand_Call): Guard restriction checks with a call
- to Restriction_Check_Required.
- * sem_ch3.adb (Analyze_Object_Declaration): Likewise.
- * sem_res.adb (Resolve_Call): Likewise.
- * sem_attr.adb (Check_Stream_Attribute): Likewise.
-
-2011-08-02 Bob Duff <duff@adacore.com>
-
- * stylesw.ads: Update comment.
- * style.adb: Minor: Use Error_Msg_NE instead of Error_Msg_N.
- * errout.ads: Remove obsolete comment.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * einfo.ads, einfo.adb (Is_Safe_To_Reevaluate): new function.
- (Set_Is_Safe_To_Reevaluate): new procedure.
- * sem_ch5.adb (Analyze_Assignment): Add one assertion to ensure that no
- assignment is allowed on safe-to-reevaluate variables.
- (Analyze_Iteration_Schine.Process_Bounds.One_Bound): Decorate the
- temporary created to remove side effects in expressions that use
- the secondary stack as safe-to-reevaluate.
- * exp_util.adb (Side_Effect_Free): Add missing code to handle well
- variables that are not true constants.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch5.adb, sem_ch7.adb, einfo.ads, sem_util.adb, sem_util.ads,
- sem_res.adb, sem_ch6.adb: Minor reformatting.
-
-2011-08-02 Jerome Guitton <guitton@adacore.com>
-
- * a-except-2005.adb (Raise_Current_Excep): Remove obsolete dead code.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch6.adb (New_Overloaded_Entity, Check_Overriding_Indicator): Do
- not set Overridden_Operation if subprogram is an initialization
- procedure.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * par-ch6.adb: Correct obsolete name in comments
- * restrict.adb, restrict.ads (Check_Formal_Restriction): new function
- which takes two message arguments (existing function takes one), with
- second message used for continuation.
- * sem_ch5.adb (Analyze_Block_Statement): in formal mode, only reject
- block statements that originate from a source block statement, not
- generated block statements
- * sem_ch6.adb (Analyze_Function_Call): rename L into Actuals, for
- symmetry with procedure case
- * sem_ch7.adb (Check_One_Tagged_Type_Or_Extension_At_Most): new
- function to issue an error in formal mode if a package specification
- contains more than one tagged type or type extension.
- * sem_res.adb (Resolve_Actuals): in formal mode, check that actual
- parameters matching formals of tagged types are objects (or ancestor
- type conversions of objects), not general expressions. Issue an error
- on view conversions that are not involving ancestor conversion of an
- extended type.
- (Resolve_Type_Conversion): in formal mode, issue an error on the
- operand of an ancestor type conversion which is not an object
- * sem_util.adb, sem_util.ads (Find_Actual): extend the behavior of the
- procedure so that it works also for actuals of function calls
- (Is_Actual_Tagged_Parameter): new function which determines if its
- argument is an actual parameter of a formal of tagged type in a
- subprogram call
- (Is_SPARK_Object_Reference): new function which determines if the tree
- referenced by its argument represents an object in SPARK
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch3.adb: Minor reformatting
- Minor comment addition
- Minor error msg text change
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * sem_ch5.adb (Analyze_Iteration_Scheme.Uses_Secondary_Stack): New
- function. Used to be more precise when we generate a variable plus one
- assignment to remove side effects in the evaluation of the Bound
- expressions.
- (Analyze_Iteration_Scheme): Clean attribute analyzed in all the nodes
- of the bound expression to force its re-analysis and thus expand the
- associated transient scope (if required). Code cleanup replacing the
- previous code that declared the constant entity by an invocation to
- routine Force_Evaluation which centralizes this work in the frontend.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * einfo.adb (Is_Base_Type): Improve efficiency by using a flag table
- (Base_Type): Now uses improved Is_Base_Type function
- * einfo.ads (Base_Type): Inline this function
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_prag.adb (Analyze_Pragma): Defend against infinite recursion
- (Analyze_Aspect_Specifications): Fix Sloc values for constructed pragmas
-
-2011-08-02 Arnaud Charlet <charlet@adacore.com>
-
- * gcc-interface/Make-lang.in: Update dependencies.
- * gcc-interface/Makefile.in: Use s-inmapop-vxworks.adb for all VxWorks
- targets.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * par-ch3.adb (P_Delta_Constraint): issue an error in formal mode on
- non-simple expression used in delta constraint
- (P_Index_Or_Discriminant_Constraint): issue an error in formal mode on
- index constraint which is not a subtype mark
- * par.adb: With and use Restrict
- * sem_ch3.adb (Analyze_Component_Declaration): issue an error in formal
- mode on component type which is not a subtype mark and default
- expression on component
- (Analyze_Subtype_Declaration): issue an error in formal mode on subtype
- of string which does not have a lower index bound equal to 1
- (Array_Type_Declaration): issue an error in formal mode on index or
- component type which is not a subtype mark, and on aliased keyword on
- component
- (Derived_Type_Declaration): issue an error in formal mode on interface,
- limited or abstract type
- (Record_Type_Declaration): issue an error in formal mode on interface
- (Record_Type_Definition): issue an error in formal mode on tagged types
- and type extensions not declared in the specification of a library unit
- package; on null non-tagged record; on variant part
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * prj-nmsc.adb (Check_Library_Attributes): Do not report Library_Dir
- not declared for qualified library project when Library_Name is not
- declared, but Library_Dir is.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch13.adb (Analyze_Aspect_Specification): Fix slocs on generated
- pragmas (affects aspects [Component_]Default_Value
- (Check_Aspect_At_Freeze_Point): For Component_Default_Value, use
- component type for the resolution
-
-2011-08-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.adb (Base_Type): Tune implementation for speed.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * freeze.adb: Minor reformatting.
-
-2011-08-02 Thomas Quinot <quinot@adacore.com>
-
- * scos.ads: Update comments.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch3.adb (Build_Derived_Type): Inherit the convention from the
- base type, because the parent may be a subtype of a private type whose
- convention is established in a private part.
-
-2011-08-02 Hristian Kirtchev <kirtchev@adacore.com>
-
- * exp_ch6.adb (Expand_N_Extended_Return_Statement): Wrap the return
- statement in a block when the expansion of the return expression has
- created a finalization chain.
- * freeze.adb (Freeze_Expression): Alphabetize all choices associated
- with the parent node.
- Add N_Extended_Return_Statement to handle the case where a transient
- object declaration appears in the Return_Object_Declarations list of
- an extended return statement.
-
-2011-08-02 Matthew Gingell <gingell@adacore.com>
-
- * adaint.c (__gnat_is_symbolic_link_attr): Supress warning on possibly
- unused parameter 'name'.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_elim.adb (Set_Eliminated): If the overridden operation is an
- inherited operation, check whether its alias, which is the source
- operastion that it renames, has been marked eliminated.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * exp_util.adb (Safe_Prefixed_Reference): Do not consider safe an
- in-mode parameter whose type is an access type since it can be used to
- modify its designated object. Enforce code that handles as safe an
- access type that is not access-to-constant but it is the result of a
- previous removal of side-effects.
- (Remove_Side_Effects): Minor code reorganization of cases which require
- no action. Done to incorporate documentation on new cases uncovered
- working in this ticket: no action needed if this routine was invoked
- too early and the nodes are not yet decorated.
- * sem_res.adb (Resolve_Slice): Minor code cleanup replacling two calls
- to routine Remove_Side_Effects by calls to Force_Evaluation since they
- were issued with actuals that are implicitly provided by
- Force_Evaluation.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch3.adb, sem_res.adb: Minor reformatting.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_attr.adb (Check_Formal_Restriction_On_Attribute): new procedure
- to issue an error in formal mode on attribute not supported in this mode
- (Analyze_Attribute): issue errors on standard attributes not supported
- in formal mode.
- * sem_ch3.adb (Modular_Type_Declaration): remove obsolete part of
- comment, and issue error in formal mode on modulus which is not a power
- of 2.
- (Process_Range_Expr_In_Decl): issue error in formal mode on non-static
- range.
- * sem_ch8.adb (Find_Type): issue error in formal mode on 'Base in
- subtype mark.
- * sem_res.adb (Resolve_Unary_Op): issue error in formal mode on unary
- operator on modular type (except 'not').
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * gnat_rm.texi: Minor reformatting.
-
-2011-08-02 Arnaud Charlet <charlet@adacore.com>
-
- * s-osinte-linux.ads: Minor comment update and reformatting.
- * i-cexten.ads: Make this unit pure, as for its parent.
- Will allow its usage in more contexts if needed.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * s-utf_32.ads: Minor comment fix.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_res.adb (Resolve_Actuals): if the subprogram is a primitive
- operation of a tagged synchronized type, handle the case where the
- controlling argument is overloaded.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * gnat_rm.texi, opt.ads, sem_prag.adb, snames.ads-tmpl:
- Replace pragma SPARK_95 with pragma Restrictions (SPARK)
- * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): set
- SPARK mode and formal verification mode on processing SPARK restriction
- * s-rident.ads (Restriction_Id): add SPARK restriction in those not
- requiring consistency checking.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_res.adb: Minor reformatting.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
- a-cforse.ads: Remove unneeded with of Ada.Containers
- Remove commented out pragma Inline's
- Move specifications of new subprograms to the actual specs
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
- a-cforse.ads: Update comments.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_attr.adb: add attribute name when 'Result has the wrong prefix.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
- a-cforse.ads, a-cofove.ads: Minor reformatting.
-
-2011-08-02 Claire Dross <dross@adacore.com>
-
- * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, a-cforse.ads,
- a-cofove.ads: Add comments.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * gnat_rm.texi: Document formal containers.
-
-2011-08-02 Emmanuel Briot <briot@adacore.com>
-
- * g-comlin.adb (Goto_Section, Getopt): fix handling of "*" when there
- are empty sections.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * mlib-prj.adb, restrict.ads, sem_aggr.adb, sem_ch12.adb: Minor
- reformatting.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * aspects.adb: New aspects Default_Value and Default_Component_Value
- New format of Aspect_Names table checks for omitted entries
- * aspects.ads: Remove mention of Aspect_Cancel and add documentation on
- handling of boolean aspects for derived types.
- New aspects Default_Value and Default_Component_Value
- New format of Aspect_Names table checks for omitted entries
- * einfo.ads, einfo.adb (Has_Default_Component_Value): New flag
- (Has_Default_Value): New flag
- (Has_Default_Component_Value): New flag
- (Has_Default_Value): New flag
- * par-ch13.adb (P_Aspect_Specifications): New format of Aspect_Names
- table.
- * par-prag.adb: New pragmas Default_Value and Default_Component_Value
- * sem_ch13.adb (Analyze_Aspect_Specifications): New aspects
- Default_Value and Default_Component_Value
- * sem_prag.adb: New pragmas Default_Value and Default_Component_Value
- New aspects Default_Value and Default_Component_Value
- * snames.ads-tmpl: New pragmas Default_Value and Default_Component_Value
- * sprint.adb: Print N_Aspect_Specification node when called from gdb
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * prj-nmsc.adb (Check_Library_Attributes): For virtual library project,
- inherit library kind.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_res.adb: Add guards in calls to Matching_Static_Array_Bounds.
- Minor reformatting.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * i-cstrin.ads: Updates to make Interfaces.C.Strings match RM
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_aggr.adb (Resolve_Aggregate): Fix thinko.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * impunit.adb: Add comment.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_aggr.adb (Check_Qualified_Aggregate): new procedure which checks
- qualification of aggregates in formal mode
- (Is_Top_Level_Aggregate): returns True for an aggregate not contained in
- another aggregate
- (Resolve_Aggregate): complete the test that an aggregate is adequately
- qualified in formal mode
-
-2011-08-02 Pascal Obry <obry@adacore.com>
-
- * make.adb, bindgen.adb, gnatbind.adb: Minor reformatting.
- * mlib-prj.adb: Supress warning when compiling binder generated file.
- (Build_Library): Supress all warnings when compiling the binder
- generated file.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * errout.adb, errout.ads (Check_Formal_Restriction): move procedure
- from here...
- * restrict.adb, restrict.ads (Check_Formal_Restriction): ...to here
- * sem_aggr.adb, sem_ch5.adb, sem_util.adb:
- Add with/use clauses to make Check_Formal_Restriction visible
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Check_Generic_Actuals): handle properly actual
- in-parameters when type of the generic formal is private in the generic
- spec and non-private in the body.
-
-2011-08-02 Claire Dross <dross@adacore.com>
-
- * a-cfdlli.adb, a-cfdlli.ads, a-cfhase.adb, a-cfhase.ads, a-cfhama.adb,
- a-cfhama.ads, a-cforse.adb, a-cforse.ads, a-cforma.adb, a-cforma.ads,
- a-cofove.adb, a-cofove.ads: New files implementing formal containers.
- * impunit.adb, Makefile.rtl: Take new files into account.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_aggr.adb, sem_ch3.adb, sem_ch5.adb, make.adb, sem_res.adb,
- sem_attr.adb, sem_ch6.adb, sem_ch8.adb: Minor reformatting.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_aggr.adb (Resolve_Aggregate): disable incorrectly placed check in
- formal mode
- * sem_util.adb (Matching_Static_Array_Bounds): proper detection of
- matching static array bounds, taking into account the special case of
- string literals
- * sem_ch3.adb: Typo in comment.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * errout.adb, errout.ads (Check_Formal_Restriction): new procedure
- which issues an error in formal mode if its argument node is originally
- from source
- * sem_ch3.adb (Analyze_Full_Type_Declaration): move test that a type
- has a discriminant specification so that it does not include the case
- of derived types
- (Derived_Type_Declaration): move here the test that a derived type has a
- discriminant specification
- * sem_aggr.adb (Resolve_Record_Aggregate): test the presence of the
- first element of a component association before accessing its choices
- (presence of component association is not enough)
- * exp_ch6.adb (Expand_N_Subprogram_Declaration): test if a subprogram
- declaration is a library item before accessing the next element in a
- list, as library items are not member of lists
- * sem_attr.adb, sem_ch11.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb,
- sem_ch8.adb, sem_ch9.adb, sem_res.adb, sem_util.adb: use
- Check_Formal_Restriction whenever possible.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch3.adb (Find_Type_Of_Object): In ASIS mode, create an itype
- reference when needed.
-
-2011-08-02 Bob Duff <duff@adacore.com>
-
- * gnat_ugn.texi: Fix typo.
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * make.adb (Gnatmake): Use MLib.Tgt.Archive_Ext as the extension of
- archive file name. Do not use the full path name of archives for Open
- VMS.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch12.adb, sem_ch11.adb: New calling sequence for
- Analyze_Aspect_Specifications
- * sem_ch13.adb
- (Analyze_Aspect_Specifications): New handling for boolean aspects
- * sem_ch13.ads (Analyze_Aspect_Specifications): New calling sequence
- * sem_ch3.adb, sem_ch6.adb, sem_ch7.adb, sem_ch9.adb: New calling
- sequence for Analyze_Aspect_Specifications
- * sem_prag.adb (Analyze_Pragma): Remove use of Aspect_Cancel entirely
- * sinfo.ads, sinfo.adb (Aspect_Cancel): Remove, no longer used
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * freeze.adb (Freeze_Entity): Remove handling of delayed boolean
- aspects, since these no longer exist.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * par-ch13.adb (Aspect_Specifications_Present): Always return false on
- semicolon, do not try to see if there are aspects following it.
- * par-ch3.adb (P_Declarative_Items): Better message for unexpected
- aspect spec.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch8.adb, aspects.ads: Minor reformatting.
-
-2011-08-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch13.ads (Analyze_Aspect_Specification): Add pragma Inline.
- * sem_ch13.adb (Analyze_Non_Null_Aspect_Specifications): New procedure
- extracted from...
- (Analyze_Aspect_Specifications): ...here. Call above procedure.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * exp_ch6.adb (Expand_N_Subprogram_Declaration): issue error in formal
- mode on subprogram declaration outside of package specification, unless
- it is followed by a pragma Import
- * sem_ch3.adb (Access_Definition, Access_Subprogram_Declaration,
- Access_Type_Declaration): issue error in formal mode on access type
- (Analyze_Incomplete_Type_Decl): issue error in formal mode on
- incomplete type
- (Analyze_Object_Declaration): issue error in formal mode on object
- declaration which does not respect SPARK restrictions
- (Analyze_Subtype_Declaration): issue error in formal mode on subtype
- declaration which does not respect SPARK restrictions
- (Constrain_Decimal, Constrain_Float, Constrain_Ordinary_Fixed): issue
- error in formal mode on digits or delta constraint
- (Decimal_Fixed_Point_Type_Declaration): issue error in formal mode on
- decimal fixed point type
- (Derived_Type_Declaration): issue error in formal mode on derived type
- other than type extensions of tagged record types
- * sem_ch6.adb (Process_Formals): remove check in formal mode, redundant
- with check on access definition
- * sem_ch9.adb (Analyze_Protected_Definition): issue error in formal
- mode on protected definition.
- (Analyze_Task_Definition): issue error in formal mode on task definition
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * make.adb, sem_ch8.adb, s-inmaop-vxworks.adb: Minor reformatting.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * sem_ch6.adb (Can_Override_Operator): New function.
- (Verify_Overriding_Indicator): Add missing code to check overriding
- indicator in operators. Fixes regression.
- (Check_Overriding_Indicator): Minor reformating after replacing the
- code that evaluates if the subprogram can override an operator by
- invocations to the above new function.
- * einfo.adb
- (Write_Field26_Name): Add missing code to ensure that, following
- the documentation in einfo.ads, this field is not shown as attribute
- "Static_Initialization" on non-dispatching functions.
-
-2011-08-02 Jose Ruiz <ruiz@adacore.com>
-
- * sem_res.adb (Resolve_Call): A call to
- Ada.Real_Time.Timing_Events.Set_Handler violates restriction
- No_Relative_Delay (AI-0211) only when it sets a relative timing event,
- i.e., when the second parameter is of type Time_Span.
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * make.adb (Gnatmake): use <library dir>/lib<library name>.a to link
- with an archive instead of -L<library dir> -l<library name>.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch8.adb (Analyze_Use_Type): If the clause is being re-analyzed,
- mark the base types In_Use in addition to making the operations
- use_visible.
-
-2011-08-02 Ed Falis <falis@adacore.com>
-
- * init.c: add and setup __gnat_signal_mask for the exception signals
- * s-inmaop-vxworks.adb: new file.
- * s-intman-vxworks.adb: remove unnecessary initializations and
- simplify remaining
- * s-intman-vxworks.ads: remove unnecessary variable
- * s-taprop-vxworks.adb: simplify signal initialization
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_ch8.adb: Minor code reorganization, comment updates.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * sem_res.adb (Matching_Static_Array_Bounds): Moved to Sem_Util
- * sem_util.ads, sem_util.adb (Matching_Static_Array_Bounds): Moved
- here from Sem_Res.
- (Matching_Static_Array_Bounds): Use Is_Ok_Static_Expression
- (Matching_Static_Array_Bounds): Moved here from Sem_Res
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * atree.h, atree.ads, atree.adb: New subprograms to manipulate Elist5.
- * par_ch8.adb (P_Use_Type): initialize Used_Operations for node.
- * sinfo.ads, sinfo.adb (Used_Operations): new attribute of
- use_type_clauses, to handle more efficiently use_type and use_all_type
- constructs.
- * sem_ch8.adb: Rewrite Use_One_Type and End_Use_Type to handle the
- Ada2012 Use_All_Type clause.
- (Use_Class_Wide_Operations): new procedure.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * exp_util.adb, par-ch10.adb, par-ch6.adb, sem.adb, sem_ch6.adb,
- sem_ch6.ads, sinfo.adb, sinfo.ads, sprint.adb: Change parameterized
- expression to expression function.
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch4.adb: transform simple Ada2012 membership into equality only
- if types are compatible.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * sem_res.adb (Matching_Static_Array_Bounds): new function which
- returns True if its argument array types have same dimension and same
- static bounds at each index.
- (Resolve_Actuals): issue an error in formal mode on actuals passed as
- OUT or IN OUT paramaters which are not view conversions in SPARK.
- (Resolve_Arithmetic_Op): issue an error in formal mode on
- multiplication or division with operands of fixed point types which are
- not qualified or explicitly converted.
- (Resolve_Comparison_Op): issue an error in formal mode on comparisons of
- Boolean or array type (except String) operands.
- (Resolve_Equality_Op): issue an error in formal mode on equality
- operators for array types other than String with non-matching static
- bounds.
- (Resolve_Logical_Op): issue an error in formal mode on logical operators
- for array types with non-matching static bounds. Factorize the code in
- Matching_Static_Array_Bounds.
- (Resolve_Qualified_Expression): issue an error in formal mode on
- qualified expressions for array types with non-matching static bounds.
- (Resolve_Type_Conversion): issue an error in formal mode on type
- conversion for array types with non-matching static bounds
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * par-ch10.adb: Minor code reorganization (use Nkind_In).
-
-2011-08-02 Ed Schonberg <schonberg@adacore.com>
-
- * par-ch9.adb: save location of entry for proper error message.
-
-2011-08-02 Javier Miranda <miranda@adacore.com>
-
- * sem_type.ads, sem_type.adb (Is_Ancestor): Addition of a new formal
- (Use_Full_View) which permits this routine to climb through the
- ancestors using the full-view of private parents.
- * sem_util.adb (Collect_Interfaces_Info, Implements_Interface): Set
- Use_Full_View to true in calls to Is_Ancestor.
- * sem_disp.adb (Override_Dispatching_Operation): Set Use_Full_View to
- true in call to Is_Ancestor.
- * exp_ch3.adb (Build_Offset_To_Top_Functions, Initialize_Tag): Set
- Use_Full_View to true in call to Is_Ancestor.
- * exp_ch7.adb (Controller_Component): Set Use_Full_View to true in
- call to Is_Ancestor.
- * exp_ch4.adb (Expand_N_Type_Conversion, Tagged_Membership): Set
- Use_Full_View to true in calls to Is_Ancestor.
- * exp_disp.adb (Expand_Interface_Actuals, Make_Secondary_DT, Make_DT,
- Make_Select_Specific_Data_Table, Register_Primitive,
- Set_All_DT_Position): Set Use_Full_View to true in calls to Is_Ancestor.
- * exp_intr.adb (Expand_Dispatching_Constructor_Call): Set Use_Full_View
- to true in call to Is_Ancestor.
- * exp_util.adb (Find_Interface_ADT, Find_Interface_Tag): Set
- Use_Full_View to true in calls to Is_Ancestor.
- * exp_cg.adb
- (Write_Call_Info): Set Use_Full_View to true in call to Is_Ancestor.
- (Write_Type_Info): Set Use_Full_View to true in call to Is_Ancestor.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * gnat_rm.texi: Minor reformatting.
- * sem_prag.adb: Minor reformatting.
-
-2011-08-02 Tristan Gingold <gingold@adacore.com>
-
- * vms_data.ads: Add VMS qualifier for -gnateP.
-
-2011-08-02 Robert Dewar <dewar@adacore.com>
-
- * par-ch13.adb (P_Aspect_Specification): New meaning of Decl = Empty
- * par-ch7.adb (P_Package): Proper placement of aspects for package
- decl/instantiation.
- * par-endh.adb (Check_End): Ad Is_Sloc parameter
- (End_Statements): Add Is_Sloc parameterr
- * par.adb (P_Aspect_Specification): New meaning of Decl = Empty
- (Check_End): Ad Is_Sloc parameter
- (End_Statements): Add Is_Sloc parameterr
-
-2011-08-02 Vincent Celier <celier@adacore.com>
-
- * ug_words: Add VMS qualifier equivalent to -gnateP:
- /SYMBOL_PREPROCESSING.
-
-2011-08-02 Jose Ruiz <ruiz@adacore.com>
-
- * gnat-style.texi: For hexadecimal numeric literals the typical
- grouping of digits is 4 to represent 2 bytes.
- A procedure spec which is split into several lines is indented two
- characters.
-
-2011-08-02 Yannick Moy <moy@adacore.com>
-
- * exp_aggr.adb (Is_Others_Aggregate): move function to other unit.
- * sem_aggr.adb, sem_aggr.ads (Is_Others_Aggregate): move function here
- (Resolve_Aggregate): issue errors in formal modes when aggregate is not
- properly qualified
- (Resolve_Array_Aggregate): issue errors in formal modes on non-static
- choice in array aggregate
- (Resolve_Extension_Aggregate): issue errors in formal modes on subtype
- mark as ancestor
- (Resolve_Record_Aggregate): issue errors in formal modes on mixed
- positional and named aggregate for record, or others in record
- aggregate, or multiple choice in record aggregate
- * sem_res.adb (Resolve_Logical_Op): issue errors in formal mode when
- array operands to logical operations AND, OR and XOR do not have the
- same static lower and higher bounds
- * sem_ch5.adb, sinfo.ads: Correct typos in comments
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * sem_util.ads, sem_util.adb, sem_ch6.adb (Last_Source_Statement):
- Replaces Last_Source_Node_In_Sequence.
- * err_vars.ads (Error_Msg_Lang): 16 is OK, don't need 4K
- * errout.adb (Set_Error_Msg_Lang): Takes arg with no parens, but stores
- parens and blank in string (this was inconsistently implemented).
- * errout.ads
- (Set_Error_Msg_Lang): Takes arg with no parens, but stores parens and
- blank in string (this was inconsistently implemented).
- * gnat1drv.adb
- (Set_Global_Switches): Set formal mode switches appropriately
- * opt.ads, opt.adb: Formal mode is now global switches, more consistent
- * par-prag.adb
- (Analyze_Pragma, case SPARK_95): Set opt switches appropriately and
- call Set_Error_Msg_Lang to set "spark" as language name.
- * par.adb: Remove unnecessary call to set formal language for errout
- * sem_prag.adb (P_Pragma, case SPARK_95): Set opt switches
- appropriately and call Set_Error_Msg_Lang to set "spark" as language
- name.
- * sem_ch4.adb (Analyze_Concatenation_Operand): remove procedure and
- calls to it, moved after resolution so that types are known
- * sem_res.adb (Resolve_Op_Concat): issue an error in formal mode if
- result of concatenation is not of type String
- (Resolve_Op_Concat_Arg): issue an error in formal mode if an operand of
- concatenation is not properly restricted
- * gnat_rm.texi: Add doc on pragma Spark_95.
- * gcc-interface/Makefile.in: Remove obsolete target pairs for
- Interfaces.C.* on VMS. Remove s-parame-vms-restrict.ads.
- * gcc-interface/Make-lang.in: Update dependencies.
-
-2011-08-01 Javier Miranda <miranda@adacore.com>
-
- * sem_disp.adb (Override_Dispatching_Operation): Enforce strictness of
- condition that detects if the overridden operation must replace an
- existing entity.
-
-2011-08-01 Javier Miranda <miranda@adacore.com>
-
- * exp_ch4.adb (Expand_N_Case_Expression): Propagate to the expanded
- code declarations inserted by Insert_Actions in each alternative of the
- N_Case_Expression node.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * sem_ch6.adb: Minor code reorganization.
- * sem_util.adb: Minor reformatting.
-
-2011-08-01 Pascal Obry <obry@adacore.com>
-
- * prj-env.adb: Remove <prefix>/lib/gpr/<target> project search path.
- * gnat_ugn.texi: Add documentation for VERSIONINFO Windows resource.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * par-ch4.adb (P_Name): issue a syntax error in SPARK mode on character
- literal or operator symbol which is prefixed
- * sem_attr.adb (Analyze_Access_Attribute): issue an error in formal
- mode on access attributes.
- * sem_ch4.adb (Analyze_Concatenation_Operand): new procedure to check
- that concatenation operands are properly restricted in formal mode
- (Analyze_Concatenation, Analyze_Concatenation_Rest): call new procedure
- Analyze_Concatenation_Operand. Issue an error in formal mode if the
- result of the concatenation has a type different from String.
- (Analyze_Conditional_Expression, Analyze_Explicit_Dereference,
- Analyze_Quantified_Expression, Analyze_Slice,
- Analyze_Null): issue an error in formal mode on unsupported constructs
- * sem_ch5.adb
- (Analyze_Block_Statement): only issue error on source block statement
- * sem_util.ads, sem_util.adb (Last_Source_Node_In_Sequence): new
- function which returns the last node in a list of nodes for which
- Comes_From_Source returns True, if any
- * sem_ch6.adb (Check_Missing_Return): minor refactoring to use
- Last_Source_Node_In_Sequence
- * sem_ch8.adb (Analyze_Exception_Renaming, Analyze_Generic_Renaming,
- Analyze_Object_Renaming, Analyze_Use_Package): issue an error in formal
- mode on unsupported constructs
- * sem_ch9.adb Do not return after issuing error in formal mode, as the
- rest of the actions may be needed later on since the error is marked as
- not serious.
- * sinfo.ads: Typos in comments.
-
-2011-08-01 Pascal Obry <obry@adacore.com>
-
- * projects.texi: Minor editing.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * err_vars.ads (Error_Msg_Lang, Error_Msg_Langlen): new variables for
- insertion character ~~
- * errout.ads, errout.adb (Formal_Error_Msg_...): remove procedures
- (Set_Error_Msg_Lang): new procedure which fixes the language for use
- with insertion character ~~
- (Set_Msg_Text): treat insertion character ~~
- * par-ch4.adb, par-ch5.adb, par-endh.adb, sem_attr.adb, sem_ch11.adb,
- sem_ch3.adb, sem_ch5.adb, sem_ch9.adb, sem_util.adb: Replace calls to
- Formal_Error_Msg_... procedures by equivalent Error_Msg_...
- procedures. Favor calls to Error_Msg_F(E) over Error_Msg_N(E). Make
- errors related to the formal language restriction not serious
- (insertion character |).
- * par.adb (Par): set formal language for error messages if needed
- * sem_ch6.adb (Check_Missing_Return): take into account possible
- generated statements at the end of the function
- * snames.ads-tmpl (Name_SPARK_95, Pragma_SPARK_95): new variable and
- enumeration value to define a new pragma SPARK_95
- * opt.ads, opt.adb (SPARK_Version_Type, SPARK_Version_Default,
- SPARK_Version): new type and variables to store the SPARK version
- (none by default).
- (SPARK_Mode): return True when SPARK_Version is set
- * par-prag.adb: Correct indentation
- (Prag): take Pragma_SPARK_95 into account
- * sem_prag.adb (Set_Mechanism_Value, Sig_Flags): take Pragma_SPARK_95
- into account.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * sem_ch3.adb, sem_ch3.ads, sem_ch5.adb, prj-part.adb, par-ch4.adb,
- sem_util.adb, sem_ch4.adb, sem_ch6.adb, sem_ch6.ads, sem_ch8.adb,
- sem_ch8.ads, sem_ch13.ads, par-ch5.adb, prj-env.ads: Minor reformatting
-
-2011-08-01 Pascal Obry <obry@adacore.com>
-
- * prj-part.ads, prj-part.adb (Parse): Add Target_Name parameter. Pass
- Target_Name to Get_Path call.
- (Parse_Single_Project): Likewise.
- (Post_Parse_Context_Clause): Likewise.
- * prj-env.ads, prj-env.adb (Find_Project): Add Target_Name parameter.
- Call Initialise_Project_Path with the proper Target_Name.
- (Initialize_Project_Path): Add <gnat_root>/<target_name>/lib/gnat
- search path.
- (Get_Path): Add Target_Name parameter. Call Initialise_Project_Path
- with the proper Target_Name.
- * prj-conf.adb (Get_Or_Create_Configuration_File): Pass Target_Name to
- Part.Parse routine.
- (Parse_Project_And_Apply_Config): Likewise.
- * prj-makr.adb (Initialize): Pass empty Target_Name to Parse routine.
- This is fine as this part of the code is supporting only native
- compilation.
- * prj-pars.adb (Parse): Pass empty Target_Name to Parse routine. This
- is fine as this part of the code is supporting only native compilation.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * sem_util.adb (Enter_Name): issue error in formal mode on declaration
- of homonym, unless the homonym is one of the cases allowed in SPARK
- * par-ch5.adb (Parse_Decls_Begin_End): issue error in SPARK mode for
- package declaration occurring after a body.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * checks.adb, exp_ch4.adb: Minor reformatting.
-
-2011-08-01 Javier Miranda <miranda@adacore.com>
-
- * einfo.ads (Access_Disp_Table): Fix documentation.
- (Dispatch_Table_Wrappers): Fix documentation.
-
-2011-08-01 Pascal Obry <obry@adacore.com>
-
- * prj-env.adb, prj-env.ads: Minor reformatting.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * sem_util.ads, sem_util.adb, par.adb, par_util.adb
- (Formal_Error_Msg, Formal_Error_Msg_N, Formal_Error_Msg_SP): move
- procedures out of these packages.
- * errout.ads, errout.adb
- (Formal_Error_Msg, Formal_Error_Msg_N, Formal_Error_Msg_SP): move
- procedures in of this package
- (Formal_Error_Msg_NE): new procedure for wrapper on Error_Msg_NE
- * par-ch5.adb (Parse_Decls_Begin_End): issue syntax error in SPARK mode
- on misplaced later vs initial declarations, like in Ada 83
- * sem_attr.adb (Processing for Analyze_Attribute): issue error in
- formal mode on attribute of private type whose full type declaration
- is not visible
- * sem_ch3.adb (Analyze_Declarations): issue error in formal mode on a
- package declaration inside a package specification
- (Analyze_Full_Type_Declaration): issue error in formal mode on
- controlled type or discriminant type
- * sem_ch6.adb (Analyze_Subprogram_Specification): only issue error on
- user-defined operator means that it should come from the source
- (New_Overloaded_Entity): issue error in formal mode on overloaded
- entity.
- * sem_ch6.ads, sem_ch13.ads: typos in comments.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * atree.adb: Minor reformatting.
- * checks.adb: Minor reformatting.
-
-2011-08-01 Vincent Celier <celier@adacore.com>
-
- * s-parame-vms-ia64.ads: Fix typo in comment
- Minor reformatting
- * s-parame-vms-restrict.ads: Removed, unused.
-
-2011-08-01 Javier Miranda <miranda@adacore.com>
-
- * exp_ch3.adb
- (Is_Variable_Size_Array): Remove local subprogram Is_Constant_Bound.
- * sem_ch3.adb
- (Constrain_Index): Remove side effects in the evaluation of the bounds.
- * sem_ch3.ads, sem_ch3.adb
- (Is_Constant_Bound): New extended version of the subprogram that was
- previously located inside function Exp_Ch3.Is_Variable_Size_Array.
- Moved here since it is shared by routines of sem_ch3 and exp_ch3.
- * sem_aux.ads (Constant_Value): Fix typo in comment.
- * checks.adb (Generate_Index_Checks): New implementation which, for
- array objects with constant bounds, generates the runtime check
- referencing the bounds of the array type. For other cases this routine
- provides its previous behavior obtaining such values from the array
- object.
- * sem_res.adb (Set_Slice_Subtype): Link a copied range subtree with its
- parent type.
- * atree.adb (New_Copy): Reset flag Is_Overloaded in the new copy since
- we cannot have semantic interpretations of the new node.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch6.adb (Fully_Conformant_Expressions): handle quantified
- expressions.
-
-2011-08-01 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb: Minor code editing.
- * s-vxwext.adb: Remove trailing space.
- * freeze.adb, freeze.ads, errout.ads, erroutc.adb: Fix GPLv3 header for
- consistency with other files.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * s-auxdec.ads, s-auxdec-vms_64.ads: Minor reformatting.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * par-ch10.adb: reject parameterized expressions as compilation unit.
- * sem_ch4.adb: handle properly conditional expression with overloaded
- then_clause and no else_clause.
-
-2011-08-01 Tristan Gingold <gingold@adacore.com>
-
- * s-parame-vms-alpha.ads, s-parame-vms-ia64.ads: Redeclare C_Address
- like done by System.Aux_DEC.
- * env.c (__gnat_setenv) [VMS]: Put logicals into LNM$PROCESS table.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * par-endh.adb (Check_End): issue a syntax error in SPARK mode for
- missing label at end of declaration (subprogram or package)
- * par-ch4.adb (P_Name): issue a syntax error in SPARK mode for mixing
- of positional and named parameter association
- * par.adb, par-util.adb (Formal_Error_Msg_SP): new wrapper on
- Error_Msg_SP which adds a prefix to the error message giving the name
- of the formal language analyzed
- * sem_ch6.adb (Analyze_Return_Type): issue an error in formal mode for
- access result type in subprogram, unconstrained array as result type,.
- (Analyze_Subprogram_Declaration): issue an error in formal mode for null
- procedure
- * sem_ch8.adb: Code clean up.
-
-2011-08-01 Javier Miranda <miranda@adacore.com>
-
- * sem_ch7.adb (Uninstall_Declarations): Remove useless code.
- * einfo.ads (Access_Disp_Table): Fix documentation.
- (Dispatch_Table_Wrappers): Fix documentation.
- * einfo.adb (Access_Disp_Table, Dispatch_Table_Wrappers,
- Set_Access_Disp_Table, Set_Dispatch_Table_Wrappers): Fix the assertions
- to enforce the documentation of this attribute.
- (Set_Is_Interface): Cleanup the assertion.
- * exp_ch4.adb (Expand_Allocator_Expression, Tagged_Membership): Locate
- the Underlying_Type entity before reading attribute Access_Disp_Table.
- * exp_disp.adb (Expand_Dispatching_Call, Expand_Interface_Conversion):
- Locate the Underlying_Type before reading attribute Access_Disp_Table.
- * exp_aggr.adb (Build_Array_Aggr_Code, Build_Record_Aggr_Code): Locate
- the Underlying_Type entity before reading attribute Access_Disp_Table.
- * exp_ch3.adb (Build_Record_Init_Proc, Expand_N_Object_Declaration):
- Locate the Underlying_Type entity before reading attribute
- Access_Disp_Table.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * s-poosiz.ads: Additional overriding indicators.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * sem_ch5.adb (Analyze_Exit_Statement): add return after error in
- formal mode.
- (Analyze_Iteration_Scheme): issue error in formal mode when loop
- parameter specification does not include a subtype mark.
- * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): issue error in
- formal mode on abstract subprogram.
- (Analyze_Subprogram_Specification): issue error in formal mode on
- user-defined operator.
- (Process_Formals): issue error in formal mode on access parameter and
- default expression.
- * sem_ch9.adb (Analyze_Abort_Statement,
- Analyze_Accept_Statement, Analyze_Asynchronous_Select,
- Analyze_Conditional_Entry_Call, Analyze_Delay_Relative,
- Analyze_Delay_Until, Analyze_Entry_Call_Alternative,
- Analyze_Requeue, Analyze_Selective_Accept,
- Analyze_Timed_Entry_Call): issue error in formal mode on such constructs
- * sem_ch11.adb (Analyze_Raise_Statement, Analyze_Raise_xxx_Error):
- issue error in formal mode on user-defined raise statement.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * sem_ch6.adb (Enter_Overloaded_Entity): Do not warn about a
- declaration being hidden when overriding an implicit inherited
- subprogram.
- * par-ch10.adb (P_Compilation_Unit): In syntax check only mode
- (-gnats), do not complain about a source file that contains only a
- pragma No_Body.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch5.adb (Analyze_Iterator_Scheme): Do not overwrite type of loop
- variable if already set.
-
-2011-08-01 Arnaud Charlet <charlet@adacore.com>
-
- * g-socket-dummy.adb, s-osinte-linux.ads, g-socket-dummy.ads,
- g-debuti.adb, g-tasloc.adb, g-debuti.ads, g-tasloc.ads,
- s-osinte-hpux.ads, g-sercom.adb, g-soliop-solaris.ads, g-sercom.ads,
- g-sptain.ads, g-curexc.ads, s-tasloc.adb, s-tasloc.ads, s-tataat.adb,
- g-ctrl_c.adb, a-reatim.adb, s-tataat.ads, g-dirope.adb, g-ctrl_c.ads,
- g-dirope.ads, g-boubuf.adb, g-calend.adb, g-boubuf.ads, g-souinf.ads,
- g-table.adb, g-bytswa-x86.adb, g-wispch.adb, g-io.adb, g-table.ads,
- g-wispch.ads, g-io.ads, g-memdum.adb, g-memdum.ads, g-busorg.adb,
- g-busorg.ads, g-regpat.adb, g-sothco-dummy.adb, g-encstr.adb,
- g-regpat.ads, g-sothco-dummy.ads, s-osinte-aix.ads, g-encstr.ads,
- g-sercom-mingw.adb, s-mastop-vms.adb, g-diopit.adb, g-diopit.ads,
- s-vxwext.adb, g-dyntab.adb, g-dyntab.ads, g-crc32.adb,
- g-sercom-linux.adb, g-crc32.ads, s-regpat.adb, g-flocon.ads,
- s-regpat.ads, g-stheme.adb, g-sestin.ads, s-taspri-posix-noaltstack.ads,
- g-soliop.ads, s-inmaop-posix.adb, g-locfil.ads, g-enblsp-vms-alpha.adb,
- g-socthi-dummy.adb, g-socthi-dummy.ads, gnat.ads, g-moreex.adb,
- g-moreex.ads, g-dynhta.adb, g-dynhta.ads, g-deutst.ads, g-htable.adb,
- g-cgicoo.adb, g-htable.ads, g-cgicoo.ads, a-interr.adb,
- g-socthi-vms.adb, g-socthi-vms.ads, g-hesora.adb, g-bubsor.adb,
- g-hesora.ads, g-bubsor.ads, g-md5.adb, g-md5.ads, s-intman-irix.adb,
- s-htable.adb, s-osinte-vms.adb, s-htable.ads, s-osinte-vms.ads,
- s-taprob.adb, g-bytswa.adb, g-bytswa.ads, s-osinte-solaris-posix.ads,
- a-suenco.adb, g-comver.adb, g-comver.ads, g-exctra.adb,
- s-osinte-solaris.adb, g-exctra.ads, s-osinte-irix.ads,
- s-osinte-solaris.ads, a-caldel-vms.adb, g-socthi-vxworks.adb,
- g-expect.adb, g-socthi-vxworks.ads, g-expect.ads, g-comlin.ads,
- g-heasor.adb, g-heasor.ads, g-traceb.adb, g-traceb.ads, g-decstr.adb,
- g-spipat.adb, g-decstr.ads, g-spipat.ads, s-mastop-tru64.adb,
- g-except.ads, g-thread.adb, g-hesorg.adb, g-thread.ads, g-hesorg.ads,
- g-expect-vms.adb, a-stuten.ads, g-spchge.adb, g-spchge.ads,
- g-u3spch.adb, g-u3spch.ads, g-spitbo.adb, g-spitbo.ads,
- s-osinte-dummy.ads, s-osinte-posix.adb, g-pehage.adb, g-pehage.ads,
- s-gloloc-mingw.adb, g-sha1.ads, s-traceb-hpux.adb,
- g-trasym-unimplemented.adb, g-trasym-unimplemented.ads, g-io_aux.adb,
- g-regexp.adb, g-io_aux.ads, g-socthi-mingw.adb, g-regexp.ads,
- s-osinte-hpux-dce.adb, g-socthi-mingw.ads, g-cgi.adb,
- s-osinte-hpux-dce.ads, g-cgi.ads, g-byorma.adb, g-boumai.ads,
- g-byorma.ads, a-caldel.adb, s-regexp.adb, s-regexp.ads,
- g-soliop-mingw.ads, g-sptavs.ads, s-osinte-tru64.ads, g-speche.adb,
- g-speche.ads, g-socthi.adb, g-stsifd-sockets.adb, g-socthi.ads,
- s-osinte-darwin.ads, i-vxwork-x86.ads, g-awk.adb, i-vxwork.ads,
- g-awk.ads, g-zspche.adb, g-zspche.ads, g-socket.adb, g-sptabo.ads,
- g-socket.ads, g-semaph.adb, g-semaph.ads, s-taspri-posix.ads,
- g-enblsp-vms-ia64.adb, g-cgideb.adb, g-cgideb.ads, g-sothco.adb,
- s-osinte-freebsd.ads, g-sothco.ads, g-catiio.adb, g-casuti.adb,
- g-catiio.ads, g-casuti.ads, g-trasym.adb, g-trasym.ads, s-casuti.adb,
- g-os_lib.adb, s-traceb-mastop.adb, g-busora.adb, s-interr-dummy.adb,
- g-busora.ads, g-enutst.ads, s-os_lib.adb, a-tasatt.adb,
- s-osinte-mingw.ads: Update to GPLv3 run-time license.
- Use GNAT instead of GNARL.
-
-2011-08-01 Bob Duff <duff@adacore.com>
-
- * a-cdlili.ads, a-cihama.ads, a-coinve.ads, a-ciorse.ads, a-coorma.ads,
- a-cidlli.ads, a-ciormu.ads, a-cihase.ads, a-cohama.ads, a-coorse.ads,
- a-ciorma.ads, a-coormu.ads, a-convec.ads, a-cohase.ads: Minor
- reformatting.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * debug.adb (d.D) reverve flag for the SPARK mode
- (d.E) reverve flag for SPARK generation mode
- (d.F) reverve flag for Why generation mode
- * opt.ads, opt.adb (ALFA_Mode, ALFA_Through_SPARK_Mode,
- ALFA_Through_Why_Mode, Formal_Verification_Mode, SPARK_Mode): New
- functions which return True when the corresponding modes are set
- (Formal_Language): return "spark" or "alfa" when in formal verification
- mode.
- * sem_util.ads, sem_util.adb (Formal_Error_Msg): new wrapper on
- Error_Msg to prefix the error message with a tag giving the formal
- language
- (Formal_Error_Msg_N): new wrapper on Error_Msg_N to prefix the error
- message with a tag giving the formal language
- * sem_ch5.adb (Analyze_Block_Statement): issue error in formal mode on
- block statement
- (Analyze_Case_Statement): issue error in formal mode on case statement
- with a single "others" case alternative
- (Analyze_Exit_Statement): issue errors in formal mode on exit
- statements which do not respect SPARK restrictions
- (Analyze_Goto_Statement): issue error in formal mode on goto statement
- (Check_Unreachable_Code): always issue an error (not a warning) in
- formal mode on unreachable code (concerns both code after an infinite
- loop and after an unconditional jump, both not allowed in SPARK)
- * sem_ch6.adb (Analyze_Return_Statement): add call to
- Set_Return_Present for a procedure containing a return statement
- (already done for functions in Analyze_Function_Return)
- (Analyze_Function_Return): issue error in formal mode on extended
- return or if return is not last statement in function
- (Check_Missing_Return): issue error in formal mode if function does
- not end with return or if procedure contains a return
- * sem_ch8.ads, sem_ch8.adb (Has_Loop_In_Inner_Open_Scopes): new
- function to detect if there is an inner scope of its parameter S which
- is a loop.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * sem_ch6.ads: Minor reformatting.
-
-2011-08-01 Javier Miranda <miranda@adacore.com>
-
- * sem_util.adb (Abstract_Interface_List): Complete condition when
- processing private type declarations to avoid reading unavailable
- attribute.
- (Is_Synchronized_Tagged_Type): Complete condition when processing
- private extension declaration nodes to avoid reading unavailable
- attribute.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * sem_ch3.adb: Minor reformatting.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * s-parame-ae653.ads, s-parame-vms-alpha.ads, s-parame-hpux.ads,
- i-cpoint.adb, i-cstrin.adb, i-cpoint.ads, i-cstrin.ads,
- s-parame-vms-ia64.ads, s-parame.ads, i-c.ads, s-parame-vxworks.ads,
- s-parame-vms-restrict.ads: Remove duplicated Interfaces.C.* packages
- for VMS, instead parametrize the common implementation with
- System.Parameters declarations.
-
-2011-08-01 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat_rm.texi: Document limitation of Pragma No_Strict_Aliasing.
-
-2011-08-01 Tristan Gingold <gingold@adacore.com>
-
- * seh_init.c: Fix SEH handler installation on win64.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch3.adb (Access_Subprogram_Declaration): in Asis mode, prevent
- double analysis of an anonymous access to subprogram, because it can
- lead to improper sharing of profiles and a back-end crash.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * make.adb, sem_ch4.adb: Minor reformatting.
- * gcc-interface/Make-lang.in: Update dependencies.
- * sem_util.adb, exp_ch5.adb: Minor reformatting.
-
-2011-08-01 Arnaud Charlet <charlet@adacore.com>
-
- * gnat_rm.texi: Fix definition of Long_Integer.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * exp_aggr.adb: check limit size of static aggregate unconditionally,
- to prevent storage exhaustion.
- * exp_ch7.adb (Clean_Simple_Protected_Objects): if the scope being
- finalized is a function body, insert the cleanup code before the final
- return statement, to prevent spurious warnings.
- * s-pooglo.ads: add overriding indicator.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch4.adb (Operator_Check): improve error message when both a
- with_clause and a use_clause are needed to make operator usage legal.
- * sem_util.ads, sem_util.adb (Unit_Is_Visible): new predicate to
- determine whether a compilation unit is visible within an other,
- either through a with_clause in the current unit, or a with_clause in
- its library unit or one one of its parents.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * exp_ch5.adb (Expand_N_Iterator_Loop): handle properly an iterator
- over an arbitrary expression of an array or container type.
- * lib-xref.adb: clarify comment.
-
-2011-08-01 Bob Duff <duff@adacore.com>
-
- * einfo.ads: Minor reformatting.
- * debug.adb: Minor comment improvement.
-
-2011-08-01 Javier Miranda <miranda@adacore.com>
-
- * sem_ch4.adb (Try_Object_Operation): For class-wide subprograms do not
- consider hidden subprograms as valid candidates.
-
-2011-08-01 Arnaud Charlet <charlet@adacore.com>
-
- * make.adb (Compile): Strip -mxxx switches in CodePeer mode.
-
-2011-08-01 Vasiliy Fofanov <fofanov@adacore.com>
-
- * gnat_ugn.texi: Fix typo.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * i-cstrin.adb, sem_util.adb, exp_ch11.adb, sem_ch8.adb,
- lib-xref.adb: Minor reformatting
-
-2011-08-01 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch6.adb (Expand_N_Extended_Return_Statement): Replace test of
- when to generate a call to Move_Final_List.
- (Has_Controlled_Parts): Remove this function.
-
-2011-08-01 Geert Bosch <bosch@adacore.com>
-
- * par-ch3.adb (P_Discrete_Choice_List): Improve error message for extra
- "," in choice list.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * exp_ch11.adb (Expand_N_Raise_Statement): Mark N_Raise_xxx_Error for
- explicit raise of a predefined exception as Comes_From_Source if the
- original N_Raise_Statement comes from source.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * sinfo.ads: Add comment.
- * sem_ch6.adb: Minor reformatting.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * freeze.adb (Freeze_Entity): Refine check for bad component size
- clause to avoid rejecting confirming clause when atomic/aliased present.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch8.adb (Find_Direct_Name, Analyze_Expanded_Name): use Is_LHS to
- better determine whether an entity reference is a write.
- * sem_util.adb (Is_LHS): refine predicate to handle assignment to a
- subcomponent.
- * lib-xref.adb (Output_References): Do no suppress a read reference at
- the same location as an immediately preceeding modify-reference, to
- handle properly in-out actuals.
-
-2011-08-01 Tristan Gingold <gingold@adacore.com>
-
- * env.c (__gnat_setenv) [VMS]: Refine previous change.
-
-2011-08-01 Quentin Ochem <ochem@adacore.com>
-
- * i-cstrin.adb (New_String): Changed implementation, now uses only the
- heap to compute the result.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * atree.ads: Minor reformatting.
-
-2011-08-01 Emmanuel Briot <briot@adacore.com>
-
- * g-expect.adb (Get_Command_Output): Fix memory leak.
-
-2011-08-01 Geert Bosch <bosch@adacore.com>
-
- * cstand.adb (P_Float_Type): New procedure to print the definition of
- predefined fpt types.
- (P_Mixed_Name): New procedure to print a name using mixed case
- (Print_Standard): Use P_Float_Type for printing floating point types
- * einfo.adb (Machine_Emax_Value): Add preliminary support for quad
- precision IEEE float.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * sem_ch3.adb: Minor reformatting.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch6.adb (Analyze_Parameterized_Expression): If the expression is
- the completion of a generic function, insert the new body rather than
- rewriting the original.
-
-2011-08-01 Yannick Moy <moy@adacore.com>
-
- * sinfo.ads, errout.ads: Typos in comments.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * par-endh.adb: Minor reformatting.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * aspects.ads, aspects.adb: Add aspects for library unit pragmas
- (Pre_Post_Aspects): New subtype.
- * par-ch12.adb (P_Generic): New syntax for aspects in packages
- * par-ch13.adb (P_Aspect_Specifications): Add Semicolon parameter
- * par-ch7.adb (P_Package): Remove Decl parameter
- (P_Package): Handle new syntax for aspects (before IS)
- * par-ch9.adb (P_Protected_Definition): Remove Decl parameter, handle
- new aspect syntax
- (P_Task_Definition): Remove Decl parameter, handle new aspect syntax
- * par.adb (P_Aspect_Specifications): Add Semicolon parameter
- (P_Package): Remove Decl parameter
- * sem_ch13.adb (Analyze_Aspect_Specifications): Handle library unit
- aspects
- * sem_ch7.adb (Analyze_Package_Declaration): Analyze new format aspect
- specs
- * sem_util.ads, sem_util.adb (Static_Boolean): New function
- * sinfo.ads: Document new syntax for aspects in packages etc.
- * sprint.adb: Handle new syntax of aspects before IS in package
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * atree.ads: Minor reformatting.
- * sem_prag.adb: Minor reformatting.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * exp_util.adb (Insert_Actions): Fix error in handling Actions for
- case expr alternative.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb: Fix typo.
-
-2011-08-01 Geert Bosch <bosch@adacore.com>
-
- * sem_prag.adb (Check_No_Link_Name): New procedure.
- (Process_Import_Or_Interface): Use Check_No_Link_Name.
- * cstand.adb (Create_Standard): Use Esize (Standard_Long_Long_Float)
- instead of Standard_Long_Long_Float_Size global. Preparation for
- eventual removal of per type constants.
- * exp_util.ads (Get_Stream_Size): New function returning the stream
- size value of subtype E.
- * exp_util.adb (Get_Stream_Size): Implement new function.
- * exp_strm.adb (Build_Elementary_Input_Call): Use Get_Stream_Size
- function.
- * exp_attr.adb (Attribute_Stream_Size): Use Get_Stream_Size
- * einfo.adb:
- (Machine_Mantissa_Value): Handle 128-bit quad precision IEEE floats
-
-2011-08-01 Geert Bosch <bosch@adacore.com>
-
- * cstand.adb: Fix comments.
- * sem_prag.adb (Analyze_Pragma): Use List_Length instead of explicit
- count of arguments.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * exp_ch4.adb, sem_cat.adb: Minor reformatting.
-
-2011-08-01 Geert Bosch <bosch@adacore.com>
-
- * atree.ads: Fix comment.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * aspects.ads, aspects.adb (Aspect_Names): Moved from body to spec.
- * par-ch13.adb (P_Aspect_Specifications): Check misspelled aspect name.
- * par.adb: Add with for Namet.Sp.
- * par-tchk.adb: Minor reformatting.
-
-2011-08-01 Vincent Celier <celier@adacore.com>
-
- * mlib-tgt-specific-vms-alpha.adb, mlib-tgt-specific-vms-ia64.adb
- (Build_Dynamic_Library): Use new function Init_Proc_Name to get the name
- of the init procedure of a SAL.
- * mlib-tgt-vms_common.ads, mlib-tgt-vms_common.adb (Init_Proc_Name):
- New procedure.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * exp_ch4.adb, s-tasini.ads, sem_attr.adb, s-soflin.ads: Minor
- reformatting.
-
-2011-08-01 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
-
- * adaint.c (__gnat_file_time_name_attr): Get rid of warning.
-
-2011-08-01 Thomas Quinot <quinot@adacore.com>
-
- * sem_util.adb, sem_util.ads (Has_Overriding_Initialize): Make function
- conformant with its spec (return True only for types that have
- an overriding Initialize primitive operation that prevents them from
- having preelaborable initialization).
- * sem_cat.adb (Validate_Object_Declaration): Fix test for preelaborable
- initialization for controlled types in Ada 2005 or later mode.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * aspects.ads, aspects.adb: Add aspect Type_Invariant, Precondition,
- Postcondition.
- (Same_Aspect): New function.
- * sem_ch13.adb (Analyze_Aspect_Specifications): Add aspect
- Type_Invariant, Precondition, Postcondition.
- * snames.ads-tmpl: Add Name_Type_Invariant.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * freeze.adb (Freeze_Entity): Don't call Check_Aspect_At_Freeze_Point
- here.
- (Freeze_All_Ent): Fix error in handling inherited aspects.
- * sem_ch13.adb (Analyze_Aspect_Specifications): Skip aspect that is
- already analyzed, but don't skip entire processing of a declaration,
- that's wrong in some cases of declarations being rewritten.
- (Analyze_Aspect_Specification): Set Is_Delayed_Aspect in aspects.
- Don't delay for integer, string literals
- Treat predicates in usual manner for delay, remove special case code,
- not needed.
- (Analyze_Freeze_Entity): Make call to Check_Aspect_At_Freeze_Point
- (Build_Predicate_Function): Update saved expression in aspect
- (Build_Invariant_Procedure): Update saved expression in aspect
- * exp_ch4.adb (Expand_N_Selected_Component): Only do the optimization
- of replacement of discriminant references if the reference is simple.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * aspects.ads, aspects.adb: Add Static_Predicate and Dynamic_Predicate.
- * sem_ch13.adb (Analyze_Aspect_Specification): Add processing for
- Static_Predicate and Dynamic_Predicate.
- (Build_Predicate_Function): Add processing for Static_Predicate
- and Dynamic_Predicate.
- * sinfo.ads, sinfo.adb (From_Dynamic_Predicate): New flag
- (From_Static_Predicate): New flag
- * snames.ads-tmpl: Add Name_Static_Predicate and Name_Dynamic_Predicate
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * usage.adb: Documentation cleanup for Ada version modes in usage.
- * expander.adb: Minor reformatting.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * atree.ads: Minor comment fix.
- * a-stwifi.adb, a-stzfix.adb, a-strfix.adb, a-ztexio.ads, a-textio.ads,
- a-witeio.ads, sem_prag.adb: Minor reformatting.
-
-2011-08-01 Doug Rupp <rupp@adacore.com>
-
- * env.c (__gnat_setenv) [VMS]: Force 32bit on item list structure
- pointers. Use descrip.h header file for convenience. Add some
- comments.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * freeze.adb (Freeze_Entity): Call Check_Aspect_At_Freeze_Point
- (Freeze_All): Call Check_Aspect_At_End_Of_Declarations
- * sem_ch13.ads, sem_ch13.adb (Check_Aspect_At_Freeze_Point):
- New procedure.
- (Check_Aspect_At_End_Of_Declarations): New procedure
- (Analye_Aspect_Specification): Minor changes for above procedures
- * sinfo.ads, sinfo.adb (Is_Delayed_Aspect): Now set in aspect
- specification node as well.
-
-2011-08-01 Pascal Obry <obry@adacore.com>
-
- * adaint.c (_gnat_stat): GetFilesAttributesEx() would fail on special
- Windows files. Use GetFilesAttributes() in this case to check for file
- existence instead of returning with an error code.
-
-2011-08-01 Vincent Celier <celier@adacore.com>
-
- * a-stzfix.adb, a-stwifi.adb (Replace_Slice): Fixed computation when
- High is above Source length.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * a-ztexio.ads, a-textio.ads, a-witeio.ads: Fix comment.
-
-2011-08-01 Robert Dewar <dewar@adacore.com>
-
- * aspects.ads (Boolean_Aspects): New subtype.
- * exp_ch13.adb (Expand_Freeze_Entity): Fix errors in handling aspects
- for derived types in cases where the parent type and derived type have
- aspects.
- * freeze.adb (Freeze_Entity): Fix problems in handling derived type
- with aspects when parent type also has aspects.
- (Freeze_Entity): Deal with delay of boolean aspects (must evaluate
- boolean expression at this point).
- * sem_ch13.adb (Analyze_Aspect_Specifications): Delay all aspects in
- accordance with final decision on the Ada 2012 feature.
- * sinfo.ads, sinfo.adb (Is_Boolean_Aspect): New flag.
-
-2011-08-01 Matthew Heaney <heaney@adacore.com>
-
- * a-chtgbo.adb (Delete_Node_Sans_Free): Replace iterator with selector.
-
-2011-08-01 Pascal Obry <obry@adacore.com>
-
- * a-stzunb-shared.adb, a-strunb-shared.adb, a-stwiun-shared.adb:
- Fix Replace_Slice when High is above current string size.
- (Replace_Slice): Fix DL computation when High is above current
- string length.
-
-2011-08-01 Gary Dismukes <dismukes@adacore.com>
-
- * gnat_rm.texi: Add documentation for pragma Static_Elaboration_Desired.
-
-2011-08-01 Matthew Heaney <heaney@adacore.com>
-
- * a-rbtgbo.adb (Delete_Node_Sans_Free): Fixed assignment to left child
- of node.
-
-2011-08-01 Pascal Obry <obry@adacore.com>
-
- * a-stzunb-shared.adb, a-strunb-shared.adb, a-stwiun-shared.adb: Minor
- reformatting.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute, case 'Access): Handle properly named
- access to protected subprograms in generic bodies.
- * sem_ch6.adb (Analyze_Subprogram_Declaration): If the context is a
- protected type, indicate that the convention of the subprogram is
- Convention_Protected, because it may be used in subsequent declarations
- within the protected declaration.
-
-2011-08-01 Vincent Celier <celier@adacore.com>
-
- * mlib-prj.adb (Build_Library): Use "ada_" as the prefix for the "init"
- and "final" procedures when the name of the library is "ada", to avoid
- duplicate symbols "adainit" and "adafinal" in executables.
-
-2011-08-01 Ed Schonberg <schonberg@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute, case 'Result): Handle properly a
- quantified expression that appears within a postcondition and uses the
- Ada2012 'Result attribute.
-
-2011-07-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * init.c (__gnat_error_handler): Cast reason to int.
- (__gnat_install_handler): Explain sa_sigaction use.
-
-2011-07-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: If the
- subprogram has copy-in copy-out parameters, try to promote the mode of
- the return type if it is passed in registers.
-
-2011-07-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils2.c (build_binary_op) <ARRAY_REF>: Do not mark the
- left operand as addressable.
-
-2011-07-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (build_function_stub): Remove.
- (build_return_expr): Likewise.
- (convert_vms_descriptor): Declare.
- * gcc-interface/utils.c (convert_vms_descriptor): Make global.
- (build_function_stub): Move to...
- * gcc-interface/utils2.c (build_return_expr): Move to...
- * gcc-interface/trans.c (build_function_stub): ...here.
- (build_return_expr): ...here.
- (Subprogram_Body_to_gnu): Add local variable for language_function.
- Disconnect the parameter attributes cache, if any, once done with it.
- Call end_subprog_body only after setting the end_locus.
- Build the stub associated with the function, if any, at the very end.
- (gnat_to_gnu) <N_Return_Statement>: Remove couple of useless local
- variables and streamline control flow.
-
-2011-07-23 Arnaud Charlet <charlet@adacore.com>
-
- PR ada/49819
- * gcc-interface/Makefile.in (powerpc-linux): Remove reference to
- g-trasym-dwarf.adb.
-
-2011-07-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- PR bootstrap/49794
- * init.c [sun && __SVR4 && !__vxworks] (__gnat_install_handler):
- Assign to act.sa_sigaction.
- * tracebak.c [USE_GENERIC_UNWINDER] (__gnat_backtrace): Cast
- current->return_address to char * before arithmetic.
-
-2011-07-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * init.c [sgi] (__gnat_error_handler): Update sigaction(2) citation.
- Correct argument types.
- Extract code from reason.
- (__gnat_install_handler): Assign to act.sa_sigaction.
-
-2011-07-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/Make-lang.in (GNAT1_ADA_OBJS): Move ada/b_gnat1.o to...
- (GNAT1_OBJS): ...here.
-
-2011-07-15 Eric Botcazou <ebotcazou@adacore.com>
-
- PR ada/48711
- * g-socthi-mingw.adb (Fill): Fix formatting.
-
- * gcc-interface/gigi.h: Move around comment.
-
-2011-07-14 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-
- PR ada/46350
- * s-taprop-hpux-dce.adb (Abort_Task): Remove unnecessary cast.
-
-2011-07-14 Florian Weimer <fw@deneb.enyo.de>
-
- PR ada/48711
- * g-socthi-mingw.adb (Fill): Guard against invalid MSG_WAITALL.
-
-2011-07-13 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils.c (build_vms_descriptor32): Skip the 32-bit
- range comparison if Pmode is SImode.
-
-2011-07-12 Laurent GUERBY <laurent@guerby.net>
- Eric Botcazou <ebotcazou@adacore.com>
-
- * adadecode.c: Wrap up in extern "C" block.
- * adadecode.h: Likewise.
- * adaint.c: Likewise. Remove 'const' keyword.
- * adaint.h: Likewise.
- * argv.c: Likewise.
- * atree.h: Likewise.
- * cio.c: Likewise.
- * cstreams.c: Likewise.
- * env.c: Likewise.
- * exit.c: Likewise.
- * fe.h: Likewise.
- * final.c: Likewise.
- * init.c: Likewise.
- * initialize.c: Likewise.
- * link.c: Likewise.
- * namet.h: Likewise.
- * nlists.h: Likewise.
- * raise.c: Likewise.
- * raise.h: Likewise.
- * repinfo.h: Likewise.
- * seh_init.c: Likewise.
- * targext.c: Likewise.
- * tracebak.c: Likewise.
- * uintp.h: Likewise.
- * urealp.h: Likewise.
- * xeinfo.adb: Wrap up generated C code in extern "C" block.
- * xsinfo.adb: Likewise.
- * xsnamest.adb: Likewise.
- * gcc-interface/gadaint.h: Wrap up in extern "C" block.
- * gcc-interface/gigi.h: Wrap up some prototypes in extern "C" block.
- * gcc-interface/misc.c: Likewise.
- * gcc-interface/Make-lang.in (GCC_LINK): Use LINKER.
- (GNAT1_C_OBJS): Remove ada/b_gnat1.o. List ada/seh_init.o and
- ada/targext.o here...
- (GNAT_ADA_OBJS): ...and not here.
- (GNAT1_ADA_OBJS): Add ada/b_gnat1.o.
- (GNATBIND_OBJS): Reorder.
-
-2011-07-07 Richard Henderson <rth@redhat.com>
-
- * gcc-interface/misc.c (gnat_init_gcc_eh): Don't call
- dwarf2out_frame_init.
-
-2011-07-07 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c (gnat_init): Tweak previous change.
-
-2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- PR target/39150
- * gcc-interface/Makefile.in: Handle x86_64-solaris2.
-
-2011-07-06 Richard Guenther <rguenther@suse.de>
-
- * gcc-interface/misc.c (gnat_init): Merge calls to
- build_common_tree_nodes and build_common_tree_nodes_2.
- Re-initialize boolean_false_node.
-
-2011-07-02 Eric Botcazou <ebotcazou@adacore.com>
- Olivier Hainque <hainque@adacore.com>
- Nicolas Setton <setton@adacore.com>
-
- * gcc-interface/utils.c (record_builtin_type): Set TYPE_ARTIFICIAL on
- the type according to the ARTIFICIAL_P parameter.
- (create_type_decl): Likewise.
- (create_type_stub_decl): Set TYPE_ARTIFICIAL on the type to 1.
-
-2011-07-01 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/Make-lang.in (gnat1): Prepend '+' to the command.
- (gnatbind): Likewise.
-
-2011-06-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * gcc-interface/Makefile.in (TOOLS_LIBS): Add $(LIBINTL).
-
-2011-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_component_type): Use GNAT_TYPE
- local variable throughout. Remove useless call to Base_Type.
- (gnat_to_gnu_field): Use GNAT_FIELD_TYPE local variable throughout.
- Take it also into account for the volatileness of the field. Set the
- TREE_SIDE_EFFECTS flag as well in this case. Reorder some warnings.
-
-2011-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Identifier_to_gnu): Don't set TREE_THIS_NOTRAP
- on a dereference built for a by-ref object if it has an address clause.
-
-2011-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Address_Taken): Document use for the second argument of
- Asm_Input and Asm_Output attributes.
- * sem_attr.adb (Analyze_Attribute) <Attribute_Asm_Input>: If the second
- argument is an entity name, then set Address_Taken on it.
- <Attribute_Asm_Output>: Likewise.
- * gcc-interface/trans.c (lvalue_required_for_attribute_p): Handle the
- Attr_Asm_Input and Attr_Asm_Output attributes explicitly.
- (gnat_to_gnu) <N_Code_Statement>: If an operand is going to end up in
- memory and is a CONST_DECL, retrieve its corresponding VAR_DECL.
-
-2011-06-16 Joern Rennecke <joern.rennecke@embecosm.com>
-
- PR middle-end/46500
- * gcc-interface/decl.c (gnat_to_gnu_param): Use pack_cumulative_args.
-
-2011-06-14 Joseph Myers <joseph@codesourcery.com>
-
- * gcc-interface/Make-lang.in (gnatbind$(exeext)): Use ggc-none.o.
- (ada/utils.o): Update dependencies.
- * gcc-interface/Makefile.in (EXTRA_GNATTOOLS_OBJS): Add
- ../../../libcpp/libcpp.a.
- * gcc-interface/utils.c: Include common/common-target.h.
- (process_attributes): Use targetm_common.have_named_sections.
-
-2011-06-07 Richard Guenther <rguenther@suse.de>
-
- * gcc-interface/misc.c (gnat_init): Do not set size_type_node or call
- set_sizetype.
-
-2011-06-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils2.c (gnat_stabilize_reference): Propagate the
- TREE_THIS_NOTRAP flag.
-
-2011-06-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils2.c (gnat_stabilize_reference) <COMPOUND_EXPR>:
- Fix thinko.
-
-2011-06-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Identifier_to_gnu): Also handle deferred
- constants whose full view has discriminants specially.
-
-2011-06-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils.c: Include diagnostic.h.
- (gnat_write_global_declarations): Output debug information for all
- global type declarations before finalizing the compilation unit.
- * gcc-interface/Make-lang.in (ada/utils.o): Add dependency.
-
-2011-05-25 Jakub Jelinek <jakub@redhat.com>
-
- * gcc-interface/utils.c (def_fn_type): Remove extra va_end.
-
-2011-05-25 Kai Tietz <ktietz@redhat.com>
-
- * adaint.c (__gnat_to_canonical_file_list_next): Use array
- initialization instead of const/none-const pointer assignment.
-
-2011-05-24 Joseph Myers <joseph@codesourcery.com>
-
- * gcc-interface/Make-lang.in (GNAT1_OBJS): Don't include
- $(EXTRA_GNAT1_OBJS).
- (GNATBIND_OBJS): Don't include $(EXTRA_GNATBIND_OBJS).
- (EXTRA_GNAT1_OBJS, EXTRA_GNATBIND_OBJS): Remove.
- (gnat1$(exeext), gnatbind$(exeext)): Use libcommon-target.a.
- * gcc-interface/Makefile.in (EXTRA_GNATTOOLS_OBJS): Use
- libcommon-target.a instead of prefix.o.
-
-2011-05-21 Joseph Myers <joseph@codesourcery.com>
-
- PR ada/49097
- * gcc-interface/Make-lang.in (gnatbind$(exeext)): Depend on $(LIBDEPS).
-
-2011-05-20 Joseph Myers <joseph@codesourcery.com>
-
- * gcc-interface/Make-lang.in (EXTRA_GNATBIND_OBJS): Remove version.o.
- * gcc-interface/Makefile.in (EXTRA_GNATTOOLS_OBJS): Use libcommon.a
- instead of version.o.
-
-2011-05-18 Kai Tietz <ktietz@redhat.com>
-
- * gcc-interface/trans.c (Exception_Handler_to_gnu_sjlj): Use
- boolean_false_node instead of integer_zero_node.
- (convert_with_check): Likewise.
- * gcc-interface/decl.c (choices_to_gnu): Likewise.
-
-2011-05-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (call_to_gnu): In the by-reference case, if the
- type of the parameter is an unconstrained array, convert the actual to
- the type of the formal in the In Out and Out cases as well.
-
-2011-05-11 Nathan Froyd <froydnj@codesourcery.com>
-
- * gcc-interface/utils.c (def_fn_type): Don't call build_function_type;
- call build_function_type_array or build_varargs_function_type_array
- instead.
- (create_subprog_type): Don't call build_function_type; call
- build_function_type_vec instead.
-
-2011-05-11 Nathan Froyd <froydnj@codesourcery.com>
-
- * gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE): Use TYPE_MINVAL.
- (TYPE_GCC_MIN_VALUE): Use TYPE_MINVAL.
- (TYPE_GCC_MAX_VALUE): Use TYPE_MAXVAL.
-
-2011-05-07 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (intrin_arglists_compatible_p): Remove spaces.
-
- * gcc-interface/gigi.h (global_bindings_p): Adjust prototype.
- * gcc-interface/utils.c (global_bindings_p): Return bool and simplify.
-
-2011-05-05 Nathan Froyd <froydnj@codesourcery.com>
-
- * gcc-interface/trans.c (Case_Statement_to_gnu): Call build_case_label.
-
-2011-05-05 Nathan Froyd <froydnj@codesourcery.com>
-
- * gcc-interface/decl.c (intrin_arglists_compatible_p): Use iterators
- instead of accessing TYPE_ARG_TYPES directly.
- * gcc-interface/utils.c (handle_nonnull_attribute): Likewise.
-
-2011-05-05 Eric Botcazou <ebotcazou@adacore.com>
-
- PR ada/48844
- * gcc-interface/gigi.h (get_variant_part): Declare.
- * gcc-interface/decl.c (get_variant_part): Make global.
- * gcc-interface/utils2.c (find_common_type): Do not return T1 if the
- types have the same constant size, are record types and T1 has a
- variant part while T2 doesn't.
-
-2011-05-05 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils.c (begin_subprog_body): Do not call
- get_pending_sizes.
- (end_subprog_body): Likewise.
-
-2011-05-04 Richard Guenther <rguenther@suse.de>
-
- * gcc-interface/trans.c (gnat_to_gnu): Remove zero notrunc argument to
- int_const_binop.
- (pos_to_constructor): Likewise.
-
-2011-05-03 Nathan Froyd <froydnj@codesourcery.com>
- Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gigi): Call build_function_type_list instead
- of build_function_type. Adjust calls to...
- (build_raise_check): ...this. Do not take a void_tree parameter.
- Call build_function_type_list instead of build_function_type.
- Fix head comment and swap couple of conditional blocks.
-
-2011-04-30 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnatvsn.ads (Library_Version): Bump to 4.7.
- (Current_Year): Bump to 2011.
-
-2011-04-29 Michael Matz <matz@suse.de>
-
- * gcc-interface/misc.c (gnat_handle_option): Set
- warn_maybe_uninitialized.
-
-2011-04-23 Gerald Pfeifer <gerald@pfeifer.com>
-
- * gnat_ugn.texi (Complexity Metrics Control): Update link to
- the Watson/McCabe paper.
-
-2011-04-23 Jim Meyering <meyering@redhat.com>
-
- * gnat_ugn.texi (Examples of gnatxref Usage): Fix typo: s/it it/it is/
-
-2011-04-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (make_packable_type): Copy DECL_PARALLEL_TYPE
- onto the new type.
-
-2011-04-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (create_subprog_decl): Add ARTIFICIAL_FLAG
- parameter.
- * gcc-interface/utils.c (create_subprog_decl): Likewise. Set
- DECL_ARTIFICIAL and DECL_NO_INLINE_WARNING_P on the DECL accordingly.
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Add
- ARTIFICIAL_FLAG local variable and pass it to create_subprog_decl.
- <all>: Do not set flags on the reused DECL node coming from an alias.
- Set DECL_IGNORED_P on the DECL node built for subprograms if they
- don't need debug info here...
- * gcc-interface/trans.c (Subprogram_Body_to_gnu): ...and not here.
- (gigi): Adjust calls to create_subprog_decl.
- (build_raise_check): Likewise.
- (establish_gnat_vms_condition_handler): Likewise.
- (Compilation_Unit_to_gnu): Likewise.
- (gnat_to_gnu): Likewise.
-
-2011-04-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/Makefile.in (NO_SIBLING_ADAFLAGS): Always define.
- (NO_REORDER_ADAFLAGS): New variable.
- (EXTRA_GNATTOOLS): Always define.
- (../stamp-gnatlib1-$(RTSDIR): Copy tsystem.h.
- Clean up and adjust list of files compiled with special options.
- * gcc-interface/Make-lang.in: Likewise.
- (ada/decl.o): Cosmetical change.
- (ada/misc.o): Remove dependency on $(PLUGIN_H).
-
-2011-04-20 Jim Meyering <meyering@redhat.com>
-
- * initialize.c (__gnat_initialize): Remove useless if-before-free.
-
-2011-04-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/Make-lang.in (gnatbind): Replace $(ALL_CFLAGS) with
- $(CFLAGS) on the link line.
-
-2011-04-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: Declare the
- padded type built for the return type if it is unconstrained.
-
-2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
-
- * gcc-interface/utils.c (gnat_poplevel): Use block_chainon.
-
-2011-04-12 Nathan Froyd <froydnj@codesourcery.com>
-
- * gcc-interface/ada-tree.h (union lang_tree_node): Check for TS_COMMON
- before calling TREE_CHAIN.
- * gcc-interface/misc.c (gnat_init_ts): New function.
- (LANG_HOOKS_INIT_TS): Define.
-
-2011-04-12 Martin Jambor <mjambor@suse.cz>
-
- * gcc-interface/utils.c (end_subprog_body): Call cgraph_get_create_node
- instead of cgraph_node.
-
-2011-04-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set minimum
- alignment on fields of the RETURN type built for the Copy-In Copy-Out
- mechanism.
-
-2011-04-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Identifier_to_gnu): Do not return initializers
- of aggregate types that contain a placeholder.
-
-2011-04-08 Nathan Froyd <froydnj@codesourcery.com>
-
- * gcc-interface/utils.c (handle_sentinel_attribute): Don't use
- TYPE_ARG_TYPES.
- (handle_type_generic_attribute): Likewise.
-
-2011-04-04 Eric Botcazou <ebotcazou@adacore.com>
-
- PR ada/47163
- * s-oscons-tmplt.c (MSG_WAITALL): Fix thinko in previous change.
-
-2011-04-04 Kai Tietz <ktietz@redhat.com>
-
- PR ada/47163
- * s-oscons-tmplt.c (MSG_WAITALL): Define it for native windows targets
- to flag value.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils2.c (build_allocator): In the unconstrained array
- type case, do not strip a padding type around the array type.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils.c (update_pointer_to): Finalize named pointer
- types.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/lang.opt (feliminate-unused-debug-types): Delete.
- * gcc-interface/misc.c (gnat_handle_option): Remove special handling
- code for -feliminate-unused-debug-types.
- (gnat_post_options): Likewise.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils.c (gnat_pushdecl): If this is a non-artificial
- declaration of a pointer type, then set DECL_ORIGINAL_TYPE to a
- distinct copy.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity): Do not force the
- DECL_ARTIFICIAL flag on enumeration types.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Do not make
- fat pointer types artificial unconditionally.
- <E_Array_Subtype>: Attach the base array type as a parallel type if it
- isn't artificial.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (get_dummy_type): Declare.
- (build_dummy_unc_pointer_types): Likewise.
- (finish_fat_pointer_type): Likewise.
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: If a dummy
- fat pointer type has been built, complete it in place.
- <E_Access_Type>: Call build_dummy_unc_pointer_types to build dummy fat
- and thin pointers. Remove useless variable.
- (finish_fat_pointer_type): Make global and move to...
- * gcc-interface/utils.c (finish_fat_pointer_type): ...here.
- (get_dummy_type): New function.
- (build_dummy_unc_pointer_types): Likewise.
- (gnat_pushdecl): Propage the name to the anonymous variants only.
- (update_pointer_to): Only adjust the pointer types in the unconstrained
- array case.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/ada-tree.h (DECL_TAFT_TYPE_P): New flag.
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Incomplete_Type>: Set it
- if this is a Taft amendment type and the full declaration is available.
- * gcc-interface/trans.c (process_type): Likewise.
- If there is an old type, mark the new one as used if DECL_TAFT_TYPE_P.
- (process_freeze_entity): Likewise.
- * gcc-interface/utils.c (dummy_global): New static variable.
- (gnat_write_global_declarations): If there are types declared as used
- at the global level, insert them in the global hash table.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (record_builtin_type): Add ARTIFICIAL_P param.
- * gcc-interface/utils.c (gnat_pushdecl): If this is a non-artificial
- declaration of an array type, then set DECL_ORIGINAL_TYPE to a distinct
- copy.
- (record_builtin_type): Add ARTIFICIAL_P parameter. Set DECL_ARTIFICIAL
- flag of the type accordingly.
- * gcc-interface/trans.c (gigi): Adjust calls to record_builtin_type.
-
-2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Defer
- finalizing types when updating the pointers to the designated type.
- <all>: Finalize the deferred types even if we didn't defer processing
- of incomplete types in this invocation.
-
-2011-04-01 Olivier Hainque <hainque@adacore.com>
- Nicolas Setton <setton@adacore.com>
- Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c (gnat_descriptive_type): New function.
- (LANG_HOOKS_DESCRIPTIVE_TYPE): Redefine to gnat_descriptive_type.
-
-2011-03-28 Kai Tietz <ktietz@redhat.com>
-
- * gcc-interface/Makefile.in (SO_LIB): Handle multilib build for native
- Windows targets.
- (EH_MECHANISM): Use GCC exception mechanism for native Windows targets.
- * system-mingw.ads (System): Change ZCX_By_Default default to True.
-
- * raise-gcc.c (PERSONALITY_FUNCTION): Add prototype.
-
-2011-03-28 Tristan Gingold <gingold@adacore.com>
-
- PR ada/44431
- * gcc-interface/Make-lang.in (ada/b_gnat1.adb): Replace ada/b_gnat1.c.
- Use ada output of gnatbind.
- (ada/b_gnatb.adb): Ditto.
- (ada/b_gnat1.o, ada/b_gnatb.o): New rules.
- (ada.mostlyclean, ada.stage1)
- (ada.stage2, ada.stage3, ada.stage4, ada.stageprofile)
- (ada.stagefeedback): Adjust.
- * gcc-interface/Makefile.in (b_gnatl.adb): Replace b_gnatl.c.
- Use ada output of gnatbind.
- (b_gnatm.adb): Ditto.
- (b_gnatl.o, b_gnatm.o): New rules.
-
-2011-03-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Create TYPE_DECL
- for the padded type built to support a specified size or alignment.
-
-2011-03-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (finalize_from_with_types): Adjust comment.
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Defer
- unconditionally to the end of the unit when the designated type is
- limited_with'ed.
- <all>: Rename local variable. Attempt to un-defer types only and do it
- for limited_with'ed types as well.
- (finalize_from_with_types): Adjust comment. Rename variable and tidy.
- * gcc-interface/trans.c (Compilation_Unit_to_gnu): Use GNAT_UNIT
- consistently and remove redundant call to finalize_from_with_types.
-
-2011-03-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * inline.adb (Back_End_Cannot_Inline): Lift restriction on calls to
- subprograms without a previous spec declared in the same unit.
- * gcc-interface/trans.c (Compilation_Unit_to_gnu): Process inlined
- subprograms at the end of the unit instead of at the beginning.
- * gcc-interface/utils.c (create_subprog_decl): Check that the entity
- isn't public for the special handling of non-inline functions nested
- inside inline external functions.
-
-2011-03-25 Jeff Law <law@redhat.com>
-
- * gcc-interface/utils.c (def_fn_type): Add missing va_end.
-
-2011-03-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Size_Depends_On_Discriminant): Adjust description.
- * layout.adb (Compute_Size_Depends_On_Discriminant): New procedure
- to compute Set_Size_Depends_On_Discriminant.
- (Layout_Type): Call it on array types in back-end layout mode.
- * sem_util.adb (Requires_Transient_Scope): Return true for array
- types only if the size depends on the value of discriminants.
- * gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Use the RHS
- type if the RHS is a call to a function that returns an unconstrained
- type with default discriminant.
-
-2011-03-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gnat_to_gnu): Remove obsolete case of
- non-conversion to the nominal result type at the end.
-
-2011-03-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (create_temporary): New function taken from...
- (create_init_temporary): ...here. Call it.
- (call_to_gnu): Create the temporary for the return value early, if any.
- Create it for a function with copy-in/copy-out parameters if there is
- no target; in other cases of copy-in/copy-out, use another temporary.
- Push the new binding level lazily. Add and rename local variables.
-
-2011-03-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (validate_size): Improve comments and tweak
- error message.
- (set_rm_size): Likewise.
-
-2011-03-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Create TYPE_DECL
- for the padded type built in order to support a specified alignment.
- Fix incorrect formatting.
-
-2011-03-21 Eric Botcazou <ebotcazou@adacore.com>
-
- PR bootstrap/48216
- * gcc-interface/decl.c (elaborate_expression_1): Localize GNU_DECL.
-
-2011-03-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (components_to_record): Add REORDER parameter,
- rename DEBUG_INFO_P into DEBUG_INFO and move P_GNU_REP_LIST parameter
- to the end of the list. Adjust recursive call. Rename local variable.
- If REORDER is true, reorder components of the record type.
- (gnat_to_gnu_entity): Pass OK_To_Reorder_Components flag as argument to
- components_to_record and adjust the parameter list.
-
-2011-03-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (elaborate_expression_1): When optimization is
- disabled, use the variable for bounds of loop iteration scheme.
-
-2011-03-21 Kai Tietz <ktietz@redhat.com>
-
- PR target/12171
- * gcc-interface/utils.c (gnat_internal_attribute_table): Add column.
-
-2011-03-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (elaborate_expression_1): Try harder to find
- out whether the expression is read-only. Short-circuit placeholder
- case and rename a couple of local variables.
-
-2011-03-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (smaller_form_type_p): Declare.
- * gcc-interface/trans.c (smaller_form_type_p): Make global and move...
- * gcc-interface/utils.c (smaller_form_type_p): ...to here.
- (convert): Deal with conversions from a smaller form type specially.
-
-2011-02-14 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c (gnat_init_options): Do not concatenate -I and
- its argument, except for the special -I- switch.
-
-2011-02-12 Gerald Pfeifer <gerald@pfeifer.com>
-
- * gnat_ugn.texi (Compiling Different Versions of Ada): Update link to
- "Ada Issues".
-
-2011-02-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/Makefile.in (x86-64 darwin): Handle multilibs.
-
-2011-02-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (fill_vms_descriptor): Take GNU_TYPE instead of
- GNAT_FORMAL.
- * gcc-interface/utils2.c (fill_vms_descriptor): Move from here to...
- * gcc-interface/utils.c (fill_vms_descriptor): ...here. Take GNU_TYPE
- instead of GNAT_FORMAL. Protect the expression against multiple uses.
- Do not generate the check directly, instead instantiate the template
- check present in the descriptor.
- (make_descriptor_field): Move around.
- (build_vms_descriptor32): Build a template check in the POINTER field.
- (build_vms_descriptor): Remove useless suffixes.
- * gcc-interface/trans.c (call_to_gnu): Adjust fill_vms_descriptor call.
-
-2011-01-26 Eric Botcazou <ebotcazou@adacore.com>
-
- PR bootstrap/47467
- * targext.c: Include target files if IN_RTS is defined.
-
-2011-01-26 Richard Guenther <rguenther@suse.de>
-
- PR bootstrap/47467
- * targext.c: Include config.h.
- * gcc-interface/Make-lang.in (ada/targext.o): Add $(CONFIG_H)
- dependency.
-
-2011-01-04 Pascal Obry <obry@adacore.com>
- Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c: Disable Stdcall convention handling for 64-bit.
-
-2011-01-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Case_Statement_to_gnu): Put the SLOC of the
- end-of-case on the end label and its associated gotos, if any.
-
-2011-01-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Subprogram_Body_to_gnu): Evaluate the
- expressions of the parameter cache within the statement group of
- the CICO mechanism.
-
-2011-01-04 Olivier Hainque <hainque@adacore.com>
- Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (BLOCK_SOURCE_END_LOCATION): Provide default.
- (set_end_locus_from_node): New function.
- (Subprogram_Body_to_gnu): Use it to mark both the inner BIND_EXPR we
- make and the function end_locus.
- (Compilation_Unit_to_gnu): Call it instead of a straight Sloc_to_locus
- for the elaboration subprogram.
- (set_gnu_expr_location_from_node) <default case>: Use it to attempt to
- set the end_locus of the expression as well.
-
-2011-01-04 Eric Botcazou <ebotcazou@adacore.com>
-
- PR ada/47131
- * gcc-interface/trans.c (Identifier_to_gnu): In SJLJ mode, do not make
- variables that are referenced in exception handlers volatile.
-
-
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-
-Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
index d3212b20559..144e91469d4 100644
--- a/gcc/ada/Makefile.rtl
+++ b/gcc/ada/Makefile.rtl
@@ -483,6 +483,7 @@ GNATRTL_NONTASKING_OBJS= \
s-auxdec$(objext) \
s-bitops$(objext) \
s-boarop$(objext) \
+ s-bytswa$(objext) \
s-carsi8$(objext) \
s-carun8$(objext) \
s-casi16$(objext) \
diff --git a/gcc/ada/a-cfdlli.ads b/gcc/ada/a-cfdlli.ads
index 8bf8a3d61a3..67ff3af8f48 100644
--- a/gcc/ada/a-cfdlli.ads
+++ b/gcc/ada/a-cfdlli.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -307,6 +307,9 @@ private
Node : Count_Type := 0;
end record;
+ type Constant_Reference_Type
+ (Element : not null access constant Element_Type) is null record;
+
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Cursor);
@@ -323,7 +326,4 @@ private
No_Element : constant Cursor := (Node => 0);
- type Constant_Reference_Type
- (Element : not null access constant Element_Type) is null record;
-
end Ada.Containers.Formal_Doubly_Linked_Lists;
diff --git a/gcc/ada/a-cidlli.adb b/gcc/ada/a-cidlli.adb
index cc93b4c2fc0..fafe6719170 100644
--- a/gcc/ada/a-cidlli.adb
+++ b/gcc/ada/a-cidlli.adb
@@ -888,9 +888,19 @@ package body Ada.Containers.Indefinite_Doubly_Linked_Lists is
end if;
declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
+ -- allocator in the loop below, because the one in this block would
+ -- have failed already.
+
+ pragma Unsuppress (Accessibility_Check);
+
Element : Element_Access := new Element_Type'(New_Item);
+
begin
New_Node := new Node_Type'(Element, null, null);
+
exception
when others =>
Free (Element);
@@ -1461,6 +1471,12 @@ package body Ada.Containers.Indefinite_Doubly_Linked_Lists is
pragma Assert (Vet (Position), "bad cursor in Replace_Element");
declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
X : Element_Access := Position.Node.Element;
begin
diff --git a/gcc/ada/a-cihama.adb b/gcc/ada/a-cihama.adb
index 1d30d0443e4..2ea73b9f960 100644
--- a/gcc/ada/a-cihama.adb
+++ b/gcc/ada/a-cihama.adb
@@ -694,8 +694,16 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
Position.Node.Key := new Key_Type'(Key);
+ declare
+ -- The element allocator may need an accessibility check in the
+ -- case the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Position.Node.Element := new Element_Type'(New_Item);
+
exception
when others =>
Free_Key (K);
@@ -731,9 +739,16 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
K : Key_Access := new Key_Type'(Key);
E : Element_Access;
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
E := new Element_Type'(New_Item);
return new Node_Type'(K, E, Next);
+
exception
when others =>
Free_Key (K);
@@ -1166,8 +1181,16 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
Node.Key := new Key_Type'(Key);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Node.Element := new Element_Type'(New_Item);
+
exception
when others =>
Free_Key (K);
@@ -1215,6 +1238,12 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
declare
X : Element_Access := Position.Node.Element;
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Position.Node.Element := new Element_Type'(New_Item);
Free_Element (X);
diff --git a/gcc/ada/a-cihase.adb b/gcc/ada/a-cihase.adb
index 735179415c1..9d96b6c6452 100644
--- a/gcc/ada/a-cihase.adb
+++ b/gcc/ada/a-cihase.adb
@@ -185,6 +185,13 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
procedure Assign (Node : Node_Access; Item : Element_Type) is
X : Element_Access := Node.Element;
+
+ -- The element allocator may need an accessibility check in the case the
+ -- actual type is class-wide or has access discriminants (RM 4.8(10.1)
+ -- and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Node.Element := new Element_Type'(Item);
Free_Element (X);
@@ -194,10 +201,10 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
begin
if Target'Address = Source'Address then
return;
+ else
+ Target.Clear;
+ Target.Union (Source);
end if;
-
- Target.Clear;
- Target.Union (Source);
end Assign;
--------------
@@ -807,7 +814,16 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
X := Position.Node.Element;
- Position.Node.Element := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in the
+ -- case the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Position.Node.Element := new Element_Type'(New_Item);
+ end;
Free_Element (X);
end if;
@@ -863,9 +879,18 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
--------------
function New_Node (Next : Node_Access) return Node_Access is
+
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
Element : Element_Access := new Element_Type'(New_Item);
+
begin
return new Node_Type'(Element, Next);
+
exception
when others =>
Free_Element (Element);
@@ -881,9 +906,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
Local_Insert (HT, New_Item, Node, Inserted);
- if Inserted
- and then HT.Length > HT_Ops.Capacity (HT)
- then
+ if Inserted and then HT.Length > HT_Ops.Capacity (HT) then
HT_Ops.Reserve_Capacity (HT, HT.Length);
end if;
end Insert;
@@ -1317,7 +1340,16 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
X := Node.Element;
- Node.Element := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Node.Element := new Element_Type'(New_Item);
+ end;
Free_Element (X);
end Replace;
diff --git a/gcc/ada/a-cimutr.adb b/gcc/ada/a-cimutr.adb
index 050c0395dee..e249c6a68d6 100644
--- a/gcc/ada/a-cimutr.adb
+++ b/gcc/ada/a-cimutr.adb
@@ -291,7 +291,19 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
with "attempt to tamper with cursors (tree is busy)";
end if;
- Element := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
+ -- allocator in the loop below, because the one in this block would
+ -- have failed already.
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Element := new Element_Type'(New_Item);
+ end;
+
First := new Tree_Node_Type'(Parent => Parent.Node,
Element => Element,
others => <>);
@@ -1240,7 +1252,19 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
Position.Container := Parent.Container;
- Element := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
+ -- allocator in the loop below, because the one in this block would
+ -- have failed already.
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Element := new Element_Type'(New_Item);
+ end;
+
Position.Node := new Tree_Node_Type'(Parent => Parent.Node,
Element => Element,
others => <>);
@@ -1805,7 +1829,19 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
with "attempt to tamper with cursors (tree is busy)";
end if;
- Element := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
+ -- allocator in the loop below, because the one in this block would
+ -- have failed already.
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Element := new Element_Type'(New_Item);
+ end;
+
First := new Tree_Node_Type'(Parent => Parent.Node,
Element => Element,
others => <>);
@@ -2163,7 +2199,16 @@ package body Ada.Containers.Indefinite_Multiway_Trees is
with "attempt to tamper with elements (tree is locked)";
end if;
- E := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ E := new Element_Type'(New_Item);
+ end;
X := Position.Node.Element;
Position.Node.Element := E;
diff --git a/gcc/ada/a-ciorma.adb b/gcc/ada/a-ciorma.adb
index e955dec8915..472c912d27b 100644
--- a/gcc/ada/a-ciorma.adb
+++ b/gcc/ada/a-ciorma.adb
@@ -812,8 +812,16 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
Position.Node.Key := new Key_Type'(Key);
+ declare
+ -- The element allocator may need an accessibility check in the
+ -- case the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Position.Node.Element := new Element_Type'(New_Item);
+
exception
when others =>
Free_Key (K);
@@ -852,6 +860,12 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
function New_Node return Node_Access is
Node : Node_Access := new Node_Type;
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Node.Key := new Key_Type'(Key);
Node.Element := new Element_Type'(New_Item);
@@ -860,9 +874,10 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
exception
when others =>
- -- On exception, deallocate key and elem
+ -- On exception, deallocate key and elem. Note that free
+ -- deallocates both the key and the elem.
- Free (Node); -- Note that Free deallocates key and elem too
+ Free (Node);
raise;
end New_Node;
@@ -1492,8 +1507,16 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
Node.Key := new Key_Type'(Key);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Node.Element := new Element_Type'(New_Item);
+
exception
when others =>
Free_Key (K);
@@ -1542,6 +1565,12 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
declare
X : Element_Access := Position.Node.Element;
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Position.Node.Element := new Element_Type'(New_Item);
Free_Element (X);
diff --git a/gcc/ada/a-ciormu.adb b/gcc/ada/a-ciormu.adb
index 928ba9924c4..7bd1aa1e557 100644
--- a/gcc/ada/a-ciormu.adb
+++ b/gcc/ada/a-ciormu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -1167,6 +1167,12 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
--------------
function New_Node return Node_Access is
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
Element : Element_Access := new Element_Type'(New_Item);
begin
@@ -1175,6 +1181,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
Right => null,
Color => Red_Black_Trees.Red,
Element => Element);
+
exception
when others =>
Free_Element (Element);
@@ -1768,6 +1775,13 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
declare
X : Element_Access := Node.Element;
+
+ -- The element allocator may need an accessibility check in the
+ -- case the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Node.Element := new Element_Type'(Item);
Free_Element (X);
@@ -1793,6 +1807,13 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
--------------
function New_Node return Node_Access is
+
+ -- The element allocator may need an accessibility check in the
+ -- case the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Node.Element := new Element_Type'(Item); -- OK if fails
Node.Color := Red_Black_Trees.Red;
diff --git a/gcc/ada/a-ciorse.adb b/gcc/ada/a-ciorse.adb
index 7b919494a17..885c6b6568b 100644
--- a/gcc/ada/a-ciorse.adb
+++ b/gcc/ada/a-ciorse.adb
@@ -1173,9 +1173,18 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
"attempt to tamper with elements (set is locked)";
end if;
- X := Position.Node.Element;
- Position.Node.Element := new Element_Type'(New_Item);
- Free_Element (X);
+ declare
+ -- The element allocator may need an accessibility check in the
+ -- case the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ X := Position.Node.Element;
+ Position.Node.Element := new Element_Type'(New_Item);
+ Free_Element (X);
+ end;
end if;
end Include;
@@ -1238,6 +1247,12 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
--------------
function New_Node return Node_Access is
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
Element : Element_Access := new Element_Type'(New_Item);
begin
@@ -1246,6 +1261,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
Right => null,
Color => Red_Black_Trees.Red,
Element => Element);
+
exception
when others =>
Free_Element (Element);
@@ -1818,9 +1834,18 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
"attempt to tamper with elements (set is locked)";
end if;
- X := Node.Element;
- Node.Element := new Element_Type'(New_Item);
- Free_Element (X);
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ X := Node.Element;
+ Node.Element := new Element_Type'(New_Item);
+ Free_Element (X);
+ end;
end Replace;
---------------------
@@ -1854,6 +1879,13 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
--------------
function New_Node return Node_Access is
+
+ -- The element allocator may need an accessibility check in the case
+ -- the actual type is class-wide or has access discriminants (see
+ -- RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Node.Element := new Element_Type'(Item); -- OK if fails
Node.Color := Red;
@@ -1872,9 +1904,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
-- Start of processing for Replace_Element
begin
- if Item < Node.Element.all
- or else Node.Element.all < Item
- then
+ if Item < Node.Element.all or else Node.Element.all < Item then
null;
else
@@ -1883,8 +1913,17 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
"attempt to tamper with elements (set is locked)";
end if;
- Node.Element := new Element_Type'(Item);
- Free_Element (X);
+ declare
+ -- The element allocator may need an accessibility check in the
+ -- case the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Node.Element := new Element_Type'(Item);
+ Free_Element (X);
+ end;
return;
end if;
@@ -1901,8 +1940,17 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
"attempt to tamper with elements (set is locked)";
end if;
- Node.Element := new Element_Type'(Item);
- Free_Element (X);
+ declare
+ -- The element allocator may need an accessibility check in the
+ -- case actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Node.Element := new Element_Type'(Item);
+ Free_Element (X);
+ end;
return;
end if;
diff --git a/gcc/ada/a-coinho.adb b/gcc/ada/a-coinho.adb
index b6c38b098b6..0d0d40064e9 100644
--- a/gcc/ada/a-coinho.adb
+++ b/gcc/ada/a-coinho.adb
@@ -2,11 +2,11 @@
-- --
-- GNAT LIBRARY COMPONENTS --
-- --
--- A D A . C O N T A I N E R S . B O U N D E D _ V E C T O R S --
+-- A D A . C O N T A I N E R S . I N D E F I N I T E _ H O L D E R S --
-- --
-- B o d y --
-- --
--- Copyright (C) 2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -220,8 +220,19 @@ package body Ada.Containers.Indefinite_Holders is
raise Program_Error with "attempt to tamper with elements";
end if;
- Free (Container.Element);
- Container.Element := new Element_Type'(New_Item);
+ declare
+ X : Element_Access := Container.Element;
+
+ -- Element allocator may need an accessibility check in case actual
+ -- type is class-wide or has access discriminants (RM 4.8(10.1) and
+ -- AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Container.Element := new Element_Type'(New_Item);
+ Free (X);
+ end;
end Replace_Element;
---------------
@@ -229,6 +240,12 @@ package body Ada.Containers.Indefinite_Holders is
---------------
function To_Holder (New_Item : Element_Type) return Holder is
+ -- The element allocator may need an accessibility check in the case the
+ -- actual type is class-wide or has access discriminants (RM 4.8(10.1)
+ -- and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
return (AF.Controlled with new Element_Type'(New_Item), 0);
end To_Holder;
diff --git a/gcc/ada/a-coinve.adb b/gcc/ada/a-coinve.adb
index 0627af1b94e..e615ad17efd 100644
--- a/gcc/ada/a-coinve.adb
+++ b/gcc/ada/a-coinve.adb
@@ -1698,7 +1698,16 @@ package body Ada.Containers.Indefinite_Vectors is
-- value, in case the allocation fails (either because there is no
-- storage available, or because element initialization fails).
- Container.Elements.EA (Idx) := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in the
+ -- case actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Container.Elements.EA (Idx) := new Element_Type'(New_Item);
+ end;
-- The allocation of the element succeeded, so it is now safe to
-- update the Last index, restoring container invariants.
@@ -1744,7 +1753,16 @@ package body Ada.Containers.Indefinite_Vectors is
-- because there is no storage available, or because element
-- initialization fails).
- E (Idx) := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check
+ -- in case the actual type is class-wide or has access
+ -- discriminants (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ E (Idx) := new Element_Type'(New_Item);
+ end;
-- The allocation of the element succeeded, so it is now
-- safe to update the Last index, restoring container
@@ -1780,6 +1798,14 @@ package body Ada.Containers.Indefinite_Vectors is
-- K always has a value if the exception handler triggers.
K := Before;
+
+ declare
+ -- The element allocator may need an accessibility check in
+ -- the case the actual type is class-wide or has access
+ -- discriminants (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
while K < Index loop
E (K) := new Element_Type'(New_Item);
@@ -1885,7 +1911,16 @@ package body Ada.Containers.Indefinite_Vectors is
-- because there is no storage available, or because element
-- initialization fails).
- Dst.EA (Idx) := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in
+ -- the case the actual type is class-wide or has access
+ -- discriminants (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Dst.EA (Idx) := new Element_Type'(New_Item);
+ end;
-- The allocation of the element succeeded, so it is now safe
-- to update the Last index, restoring container invariants.
@@ -1925,7 +1960,16 @@ package body Ada.Containers.Indefinite_Vectors is
-- already been updated), so if this allocation fails we simply
-- let it propagate.
- Dst.EA (Idx) := new Element_Type'(New_Item);
+ declare
+ -- The element allocator may need an accessibility check in
+ -- the case the actual type is class-wide or has access
+ -- discriminants (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
+ begin
+ Dst.EA (Idx) := new Element_Type'(New_Item);
+ end;
end loop;
end if;
end;
@@ -3174,6 +3218,13 @@ package body Ada.Containers.Indefinite_Vectors is
declare
X : Element_Access := Container.Elements.EA (Index);
+
+ -- The element allocator may need an accessibility check in the case
+ -- where the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Container.Elements.EA (Index) := new Element_Type'(New_Item);
Free (X);
@@ -3205,6 +3256,13 @@ package body Ada.Containers.Indefinite_Vectors is
declare
X : Element_Access := Container.Elements.EA (Position.Index);
+
+ -- The element allocator may need an accessibility check in the case
+ -- where the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
Container.Elements.EA (Position.Index) := new Element_Type'(New_Item);
Free (X);
@@ -3949,6 +4007,13 @@ package body Ada.Containers.Indefinite_Vectors is
Last := Index_Type'First;
+ declare
+ -- The element allocator may need an accessibility check in the case
+ -- where the actual type is class-wide or has access discriminants
+ -- (see RM 4.8(10.1) and AI12-0035).
+
+ pragma Unsuppress (Accessibility_Check);
+
begin
loop
Elements.EA (Last) := new Element_Type'(New_Item);
diff --git a/gcc/ada/a-direct.adb b/gcc/ada/a-direct.adb
index cac87afcbfe..e166c9f8f32 100644
--- a/gcc/ada/a-direct.adb
+++ b/gcc/ada/a-direct.adb
@@ -395,13 +395,8 @@ package body Ada.Directories is
(New_Directory : String;
Form : String := "")
is
- pragma Unreferenced (Form);
-
C_Dir_Name : constant String := New_Directory & ASCII.NUL;
- function mkdir (Dir_Name : String) return Integer;
- pragma Import (C, mkdir, "__gnat_mkdir");
-
begin
-- First, the invalid case
@@ -410,10 +405,34 @@ package body Ada.Directories is
"invalid new directory path name """ & New_Directory & '"';
else
- if mkdir (C_Dir_Name) /= 0 then
- raise Use_Error with
- "creation of new directory """ & New_Directory & """ failed";
- end if;
+ -- Acquire setting of encoding parameter
+
+ declare
+ Formstr : constant String := To_Lower (Form);
+
+ Encoding : CRTL.Filename_Encoding;
+ -- Filename encoding specified into the form parameter
+
+ V1, V2 : Natural;
+
+ begin
+ Form_Parameter (Formstr, "encoding", V1, V2);
+
+ if V1 = 0 then
+ Encoding := CRTL.Unspecified;
+ elsif Formstr (V1 .. V2) = "utf8" then
+ Encoding := CRTL.UTF8;
+ elsif Formstr (V1 .. V2) = "8bits" then
+ Encoding := CRTL.ASCII_8bits;
+ else
+ raise Use_Error with "invalid Form";
+ end if;
+
+ if CRTL.mkdir (C_Dir_Name, Encoding) /= 0 then
+ raise Use_Error with
+ "creation of new directory """ & New_Directory & """ failed";
+ end if;
+ end;
end if;
end Create_Directory;
@@ -425,8 +444,6 @@ package body Ada.Directories is
(New_Directory : String;
Form : String := "")
is
- pragma Unreferenced (Form);
-
New_Dir : String (1 .. New_Directory'Length + 1);
Last : Positive := 1;
Start : Positive := 1;
@@ -487,7 +504,8 @@ package body Ada.Directories is
"file """ & New_Dir (1 .. Last) & """ already exists";
else
- Create_Directory (New_Directory => New_Dir (1 .. Last));
+ Create_Directory
+ (New_Directory => New_Dir (1 .. Last), Form => Form);
end if;
end if;
end loop;
diff --git a/gcc/ada/a-except-2005.adb b/gcc/ada/a-except-2005.adb
index a42c82efa09..4c5f6662985 100644
--- a/gcc/ada/a-except-2005.adb
+++ b/gcc/ada/a-except-2005.adb
@@ -116,26 +116,27 @@ package body Ada.Exceptions is
---------------------------------
procedure Set_Exception_C_Msg
- (Id : Exception_Id;
+ (Excep : EOA;
+ Id : Exception_Id;
Msg1 : System.Address;
Line : Integer := 0;
Column : Integer := 0;
Msg2 : System.Address := System.Null_Address);
- -- This routine is called to setup the exception referenced by the
- -- Current_Excep field in the TSD to contain the indicated Id value
- -- and message. Msg1 is a null terminated string which is generated
- -- as the exception message. If line is non-zero, then a colon and
- -- the decimal representation of this integer is appended to the
- -- message. Ditto for Column. When Msg2 is non-null, a space and this
- -- additional null terminated string is added to the message.
+ -- This routine is called to setup the exception referenced by X
+ -- to contain the indicated Id value and message. Msg1 is a null
+ -- terminated string which is generated as the exception message. If
+ -- line is non-zero, then a colon and the decimal representation of
+ -- this integer is appended to the message. Ditto for Column. When Msg2
+ -- is non-null, a space and this additional null terminated string is
+ -- added to the message.
procedure Set_Exception_Msg
- (Id : Exception_Id;
+ (Excep : EOA;
+ Id : Exception_Id;
Message : String);
- -- This routine is called to setup the exception referenced by the
- -- Current_Excep field in the TSD to contain the indicated Id value
- -- and message. Message is a string which is generated as the
- -- exception message.
+ -- This routine is called to setup the exception referenced by X
+ -- to contain the indicated Id value and message. Message is a string
+ -- which is generated as the exception message.
--------------------------------------
-- Exception information subprogram --
@@ -208,19 +209,19 @@ package body Ada.Exceptions is
-- exported to be usable by the Ada exception handling personality
-- routine when the GCC 3 mechanism is used.
- procedure Notify_Handled_Exception;
+ procedure Notify_Handled_Exception (Excep : EOA);
pragma Export
(C, Notify_Handled_Exception, "__gnat_notify_handled_exception");
-- This routine is called for a handled occurrence is about to be
-- propagated.
- procedure Notify_Unhandled_Exception;
+ procedure Notify_Unhandled_Exception (Excep : EOA);
pragma Export
(C, Notify_Unhandled_Exception, "__gnat_notify_unhandled_exception");
-- This routine is called when an unhandled occurrence is about to be
-- propagated.
- procedure Unhandled_Exception_Terminate;
+ procedure Unhandled_Exception_Terminate (Excep : EOA);
pragma No_Return (Unhandled_Exception_Terminate);
-- This procedure is called to terminate execution following an
-- unhandled exception. The exception information, including
@@ -232,18 +233,16 @@ package body Ada.Exceptions is
package Exception_Propagation is
- use Exception_Traces;
- -- Imports Notify_Unhandled_Exception and
- -- Unhandled_Exception_Terminate
-
------------------------------------
-- Exception propagation routines --
------------------------------------
- procedure Propagate_Exception;
+ function Allocate_Occurrence return EOA;
+ -- Allocate an exception occurence (as well as the machine occurence)
+
+ procedure Propagate_Exception (Excep : EOA);
pragma No_Return (Propagate_Exception);
- -- This procedure propagates the exception represented by the occurrence
- -- referenced by Current_Excep in the TSD for the current task.
+ -- This procedure propagates the exception represented by Excep
end Exception_Propagation;
@@ -264,17 +263,32 @@ package body Ada.Exceptions is
end Stream_Attributes;
- procedure Raise_Current_Excep (E : Exception_Id);
- pragma No_Return (Raise_Current_Excep);
- pragma Export (C, Raise_Current_Excep, "__gnat_raise_nodefer_with_msg");
- -- This is a simple wrapper to Exception_Propagation.Propagate_Exception.
- --
- -- This external name for Raise_Current_Excep is historical, and probably
- -- should be changed but for now we keep it, because gdb and gigi know
- -- about it.
+ procedure Complete_Occurrence (X : EOA);
+ -- Finish building the occurrence: save the call chain and notify the
+ -- debugger.
+
+ procedure Complete_And_Propagate_Occurrence (X : EOA);
+ pragma No_Return (Complete_And_Propagate_Occurrence);
+ -- This is a simple wrapper to Complete_Occurrence and
+ -- Exception_Propagation.Propagate_Exception.
+
+ function Create_Occurrence_From_Signal_Handler
+ (E : Exception_Id;
+ M : System.Address) return EOA;
+ -- Create and build an exception occurrence using exception id E and
+ -- nul-terminated message M.
+
+ function Create_Machine_Occurrence_From_Signal_Handler
+ (E : Exception_Id;
+ M : System.Address) return System.Address;
+ pragma Export (C, Create_Machine_Occurrence_From_Signal_Handler,
+ "__gnat_create_machine_occurrence_from_signal_handler");
+ -- Create and build an exception occurrence using exception id E and
+ -- nul-terminated message M. Return the machine occurrence.
procedure Raise_Exception_No_Defer
- (E : Exception_Id; Message : String := "");
+ (E : Exception_Id;
+ Message : String := "");
pragma Export
(Ada, Raise_Exception_No_Defer,
"ada__exceptions__raise_exception_no_defer");
@@ -372,7 +386,7 @@ package body Ada.Exceptions is
-- | | | |
-- | | | Set_E_C_Msg(i)
-- | | |
- -- Raise_Current_Excep
+ -- Complete_And_Propagate_Occurrence
procedure Reraise;
pragma No_Return (Reraise);
@@ -380,15 +394,16 @@ package body Ada.Exceptions is
-- Reraises the exception referenced by the Current_Excep field of
-- the TSD (all fields of this exception occurrence are set). Abort
-- is deferred before the reraise operation.
+ -- Called from System.Tasking.RendezVous.Exceptional_Complete_RendezVous
procedure Transfer_Occurrence
(Target : Exception_Occurrence_Access;
Source : Exception_Occurrence);
pragma Export (C, Transfer_Occurrence, "__gnat_transfer_occurrence");
- -- Called from System.Tasking.RendezVous.Exceptional_Complete_RendezVous
- -- to setup Target from Source as an exception to be propagated in the
- -- caller task. Target is expected to be a pointer to the fixed TSD
- -- occurrence for this task.
+ -- Called from s-tasren.adb:Local_Complete_RendezVous and
+ -- s-tpobop.adb:Exceptional_Complete_Entry_Body to setup Target from
+ -- Source as an exception to be propagated in the caller task. Target is
+ -- expected to be a pointer to the fixed TSD occurrence for this task.
-----------------------------
-- Run-Time Check Routines --
@@ -887,14 +902,47 @@ package body Ada.Exceptions is
end Raise_Constraint_Error_Msg;
-------------------------
- -- Raise_Current_Excep --
+ -- Complete_Occurrence --
-------------------------
- procedure Raise_Current_Excep (E : Exception_Id) is
+ procedure Complete_Occurrence (X : EOA) is
+ begin
+ -- Compute the backtrace for this occurrence if the corresponding
+ -- binder option has been set. Call_Chain takes care of the reraise
+ -- case.
+
+ -- ??? Using Call_Chain here means we are going to walk up the stack
+ -- once only for backtracing purposes before doing it again for the
+ -- propagation per se.
+
+ -- The first inspection is much lighter, though, as it only requires
+ -- partial unwinding of each frame. Additionally, although we could use
+ -- the personality routine to record the addresses while propagating,
+ -- this method has two drawbacks:
+
+ -- 1) the trace is incomplete if the exception is handled since we
+ -- don't walk past the frame with the handler,
+
+ -- and
+
+ -- 2) we would miss the frames for which our personality routine is not
+ -- called, e.g. if C or C++ calls are on the way.
+
+ Call_Chain (X);
+
+ -- Notify the debugger
+ Debug_Raise_Exception (E => SSL.Exception_Data_Ptr (X.Id));
+ end Complete_Occurrence;
+
+ ---------------------------------------
+ -- Complete_And_Propagate_Occurrence --
+ ---------------------------------------
+
+ procedure Complete_And_Propagate_Occurrence (X : EOA) is
begin
- Debug_Raise_Exception (E => SSL.Exception_Data_Ptr (E));
- Exception_Propagation.Propagate_Exception;
- end Raise_Current_Excep;
+ Complete_Occurrence (X);
+ Exception_Propagation.Propagate_Exception (X);
+ end Complete_And_Propagate_Occurrence;
---------------------
-- Raise_Exception --
@@ -905,7 +953,6 @@ package body Ada.Exceptions is
Message : String := "")
is
EF : Exception_Id := E;
-
begin
-- Raise CE if E = Null_ID (AI-446)
@@ -915,13 +962,7 @@ package body Ada.Exceptions is
-- Go ahead and raise appropriate exception
- Exception_Data.Set_Exception_Msg (EF, Message);
-
- if not ZCX_By_Default then
- Abort_Defer.all;
- end if;
-
- Raise_Current_Excep (EF);
+ Raise_Exception_Always (EF, Message);
end Raise_Exception;
----------------------------
@@ -932,12 +973,13 @@ package body Ada.Exceptions is
(E : Exception_Id;
Message : String := "")
is
+ X : constant EOA := Exception_Propagation.Allocate_Occurrence;
begin
- Exception_Data.Set_Exception_Msg (E, Message);
+ Exception_Data.Set_Exception_Msg (X, E, Message);
if not ZCX_By_Default then
Abort_Defer.all;
end if;
- Raise_Current_Excep (E);
+ Complete_And_Propagate_Occurrence (X);
end Raise_Exception_Always;
------------------------------
@@ -948,12 +990,13 @@ package body Ada.Exceptions is
(E : Exception_Id;
Message : String := "")
is
+ X : constant EOA := Exception_Propagation.Allocate_Occurrence;
begin
- Exception_Data.Set_Exception_Msg (E, Message);
+ Exception_Data.Set_Exception_Msg (X, E, Message);
-- Do not call Abort_Defer.all, as specified by the spec
- Raise_Current_Excep (E);
+ Complete_And_Propagate_Occurrence (X);
end Raise_Exception_No_Defer;
-------------------------------------
@@ -1001,22 +1044,50 @@ package body Ada.Exceptions is
end if;
end Raise_From_Controlled_Operation;
- -------------------------------
- -- Raise_From_Signal_Handler --
- -------------------------------
+ -------------------------------------------
+ -- Create_Occurrence_From_Signal_Handler --
+ -------------------------------------------
- procedure Raise_From_Signal_Handler
+ function Create_Occurrence_From_Signal_Handler
(E : Exception_Id;
- M : System.Address)
+ M : System.Address) return EOA
is
+ X : constant EOA := Exception_Propagation.Allocate_Occurrence;
+
begin
- Exception_Data.Set_Exception_C_Msg (E, M);
+ Exception_Data.Set_Exception_C_Msg (X, E, M);
if not ZCX_By_Default then
Abort_Defer.all;
end if;
- Raise_Current_Excep (E);
+ Complete_Occurrence (X);
+ return X;
+ end Create_Occurrence_From_Signal_Handler;
+
+ ---------------------------------------------------
+ -- Create_Machine_Occurrence_From_Signal_Handler --
+ ---------------------------------------------------
+
+ function Create_Machine_Occurrence_From_Signal_Handler
+ (E : Exception_Id;
+ M : System.Address) return System.Address
+ is
+ begin
+ return Create_Occurrence_From_Signal_Handler (E, M).Machine_Occurrence;
+ end Create_Machine_Occurrence_From_Signal_Handler;
+
+ -------------------------------
+ -- Raise_From_Signal_Handler --
+ -------------------------------
+
+ procedure Raise_From_Signal_Handler
+ (E : Exception_Id;
+ M : System.Address)
+ is
+ begin
+ Exception_Propagation.Propagate_Exception
+ (Create_Occurrence_From_Signal_Handler (E, M));
end Raise_From_Signal_Handler;
-------------------------
@@ -1082,14 +1153,15 @@ package body Ada.Exceptions is
C : Integer := 0;
M : System.Address := System.Null_Address)
is
+ X : constant EOA := Exception_Propagation.Allocate_Occurrence;
begin
- Exception_Data.Set_Exception_C_Msg (E, F, L, C, M);
+ Exception_Data.Set_Exception_C_Msg (X, E, F, L, C, M);
if not ZCX_By_Default then
Abort_Defer.all;
end if;
- Raise_Current_Excep (E);
+ Complete_And_Propagate_Occurrence (X);
end Raise_With_Location_And_Msg;
--------------------
@@ -1097,14 +1169,20 @@ package body Ada.Exceptions is
--------------------
procedure Raise_With_Msg (E : Exception_Id) is
- Excep : constant EOA := Get_Current_Excep.all;
-
+ Excep : constant EOA := Exception_Propagation.Allocate_Occurrence;
+ Ex : constant Exception_Occurrence_Access := Get_Current_Excep.all;
begin
Excep.Exception_Raised := False;
Excep.Id := E;
Excep.Num_Tracebacks := 0;
Excep.Pid := Local_Partition_ID;
+ -- Copy the message from the current exception
+ -- Change the interface to be called with an occurrence ???
+
+ Excep.Msg_Length := Ex.Msg_Length;
+ Excep.Msg (1 .. Excep.Msg_Length) := Ex.Msg (1 .. Ex.Msg_Length);
+
-- The following is a common pattern, should be abstracted
-- into a procedure call ???
@@ -1112,7 +1190,7 @@ package body Ada.Exceptions is
Abort_Defer.all;
end if;
- Raise_Current_Excep (E);
+ Complete_And_Propagate_Occurrence (Excep);
end Raise_With_Msg;
--------------------------------------
@@ -1400,7 +1478,7 @@ package body Ada.Exceptions is
procedure Rcheck_PE_Finalize_Raised_Exception
(File : System.Address; Line : Integer)
is
- E : constant Exception_Id := Program_Error_Def'Access;
+ X : constant EOA := Exception_Propagation.Allocate_Occurrence;
begin
-- This is "finalize/adjust raised exception". This subprogram is always
@@ -1409,8 +1487,9 @@ package body Ada.Exceptions is
-- This is consistent with Raise_From_Controlled_Operation
- Exception_Data.Set_Exception_C_Msg (E, File, Line, 0, Rmsg_22'Address);
- Raise_Current_Excep (E);
+ Exception_Data.Set_Exception_C_Msg
+ (X, Program_Error_Def'Access, File, Line, 0, Rmsg_22'Address);
+ Complete_And_Propagate_Occurrence (X);
end Rcheck_PE_Finalize_Raised_Exception;
-------------
@@ -1418,12 +1497,15 @@ package body Ada.Exceptions is
-------------
procedure Reraise is
- Excep : constant EOA := Get_Current_Excep.all;
+ Excep : constant EOA := Exception_Propagation.Allocate_Occurrence;
+ Saved_MO : constant System.Address := Excep.Machine_Occurrence;
begin
if not ZCX_By_Default then
Abort_Defer.all;
end if;
- Raise_Current_Excep (Excep.Id);
+ Save_Occurrence (Excep.all, Get_Current_Excep.all.all);
+ Excep.Machine_Occurrence := Saved_MO;
+ Complete_And_Propagate_Occurrence (Excep);
end Reraise;
--------------------------------------
@@ -1451,14 +1533,11 @@ package body Ada.Exceptions is
procedure Reraise_Occurrence (X : Exception_Occurrence) is
begin
- if X.Id /= null then
- if not ZCX_By_Default then
- Abort_Defer.all;
- end if;
-
- Save_Occurrence (Get_Current_Excep.all.all, X);
- Raise_Current_Excep (X.Id);
+ if X.Id = null then
+ return;
end if;
+
+ Reraise_Occurrence_Always (X);
end Reraise_Occurrence;
-------------------------------
@@ -1471,8 +1550,7 @@ package body Ada.Exceptions is
Abort_Defer.all;
end if;
- Save_Occurrence (Get_Current_Excep.all.all, X);
- Raise_Current_Excep (X.Id);
+ Reraise_Occurrence_No_Defer (X);
end Reraise_Occurrence_Always;
---------------------------------
@@ -1480,9 +1558,12 @@ package body Ada.Exceptions is
---------------------------------
procedure Reraise_Occurrence_No_Defer (X : Exception_Occurrence) is
+ Excep : constant EOA := Exception_Propagation.Allocate_Occurrence;
+ Saved_MO : constant System.Address := Excep.Machine_Occurrence;
begin
- Save_Occurrence (Get_Current_Excep.all.all, X);
- Raise_Current_Excep (X.Id);
+ Save_Occurrence (Excep.all, X);
+ Excep.Machine_Occurrence := Saved_MO;
+ Complete_And_Propagate_Occurrence (Excep);
end Reraise_Occurrence_No_Defer;
---------------------
@@ -1494,10 +1575,14 @@ package body Ada.Exceptions is
Source : Exception_Occurrence)
is
begin
- Target.Id := Source.Id;
- Target.Msg_Length := Source.Msg_Length;
- Target.Num_Tracebacks := Source.Num_Tracebacks;
- Target.Pid := Source.Pid;
+ -- As the machine occurrence might be a data that must be finalized
+ -- (outside any Ada mechanism), do not copy it
+
+ Target.Id := Source.Id;
+ Target.Machine_Occurrence := System.Null_Address;
+ Target.Msg_Length := Source.Msg_Length;
+ Target.Num_Tracebacks := Source.Num_Tracebacks;
+ Target.Pid := Source.Pid;
Target.Msg (1 .. Target.Msg_Length) :=
Source.Msg (1 .. Target.Msg_Length);
diff --git a/gcc/ada/a-except-2005.ads b/gcc/ada/a-except-2005.ads
index 3f4b17a8d3a..bb597ed0982 100644
--- a/gcc/ada/a-except-2005.ads
+++ b/gcc/ada/a-except-2005.ads
@@ -301,10 +301,10 @@ private
type Exception_Occurrence is record
Id : Exception_Id;
-- Exception_Identity for this exception occurrence
- --
- -- WARNING System.System.Finalization_Implementation.Finalize_List
- -- relies on the fact that this field is always first in the exception
- -- occurrence
+
+ Machine_Occurrence : System.Address;
+ -- The underlying machine occurrence. For GCC, this corresponds to the
+ -- _Unwind_Exception structure address.
Msg_Length : Natural := 0;
-- Length of message (zero = no message)
@@ -343,12 +343,13 @@ private
-- Functions for implementing Exception_Occurrence stream attributes
Null_Occurrence : constant Exception_Occurrence := (
- Id => null,
- Msg_Length => 0,
- Msg => (others => ' '),
- Exception_Raised => False,
- Pid => 0,
- Num_Tracebacks => 0,
- Tracebacks => (others => TBE.Null_TB_Entry));
+ Id => null,
+ Machine_Occurrence => System.Null_Address,
+ Msg_Length => 0,
+ Msg => (others => ' '),
+ Exception_Raised => False,
+ Pid => 0,
+ Num_Tracebacks => 0,
+ Tracebacks => (others => TBE.Null_TB_Entry));
end Ada.Exceptions;
diff --git a/gcc/ada/a-except.adb b/gcc/ada/a-except.adb
index 6c05b6e6482..3d3ba615cc7 100644
--- a/gcc/ada/a-except.adb
+++ b/gcc/ada/a-except.adb
@@ -93,7 +93,8 @@ package body Ada.Exceptions is
---------------------------------
procedure Set_Exception_C_Msg
- (Id : Exception_Id;
+ (Excep : EOA;
+ Id : Exception_Id;
Msg1 : System.Address;
Line : Integer := 0;
Column : Integer := 0;
@@ -107,7 +108,8 @@ package body Ada.Exceptions is
-- additional null terminated string is added to the message.
procedure Set_Exception_Msg
- (Id : Exception_Id;
+ (Excep : EOA;
+ Id : Exception_Id;
Message : String);
-- This routine is called to setup the exception referenced by the
-- Current_Excep field in the TSD to contain the indicated Id value and
@@ -187,19 +189,19 @@ package body Ada.Exceptions is
-- exported to be usable by the Ada exception handling personality
-- routine when the GCC 3 mechanism is used.
- procedure Notify_Handled_Exception;
+ procedure Notify_Handled_Exception (Excep : EOA);
pragma Export
(C, Notify_Handled_Exception, "__gnat_notify_handled_exception");
-- This routine is called for a handled occurrence is about to be
-- propagated.
- procedure Notify_Unhandled_Exception;
+ procedure Notify_Unhandled_Exception (Excep : EOA);
pragma Export
(C, Notify_Unhandled_Exception, "__gnat_notify_unhandled_exception");
-- This routine is called when an unhandled occurrence is about to be
-- propagated.
- procedure Unhandled_Exception_Terminate;
+ procedure Unhandled_Exception_Terminate (Excep : EOA);
pragma No_Return (Unhandled_Exception_Terminate);
-- This procedure is called to terminate program execution following an
-- unhandled exception. The exception information, including traceback
@@ -893,14 +895,14 @@ package body Ada.Exceptions is
if Jumpbuf_Ptr /= Null_Address then
if not Excep.Exception_Raised then
Excep.Exception_Raised := True;
- Exception_Traces.Notify_Handled_Exception;
+ Exception_Traces.Notify_Handled_Exception (Excep);
end if;
builtin_longjmp (Jumpbuf_Ptr, 1);
else
- Exception_Traces.Notify_Unhandled_Exception;
- Exception_Traces.Unhandled_Exception_Terminate;
+ Exception_Traces.Notify_Unhandled_Exception (Excep);
+ Exception_Traces.Unhandled_Exception_Terminate (Excep);
end if;
end Process_Raise_Exception;
@@ -966,8 +968,8 @@ package body Ada.Exceptions is
(E : Exception_Id;
Message : String := "")
is
- EF : Exception_Id := E;
-
+ EF : Exception_Id := E;
+ Excep : constant EOA := Get_Current_Excep.all;
begin
-- Raise CE if E = Null_ID (AI-446)
@@ -977,7 +979,7 @@ package body Ada.Exceptions is
-- Go ahead and raise appropriate exception
- Exception_Data.Set_Exception_Msg (EF, Message);
+ Exception_Data.Set_Exception_Msg (Excep, EF, Message);
Abort_Defer.all;
Raise_Current_Excep (EF);
end Raise_Exception;
@@ -990,8 +992,9 @@ package body Ada.Exceptions is
(E : Exception_Id;
Message : String := "")
is
+ Excep : constant EOA := Get_Current_Excep.all;
begin
- Exception_Data.Set_Exception_Msg (E, Message);
+ Exception_Data.Set_Exception_Msg (Excep, E, Message);
Abort_Defer.all;
Raise_Current_Excep (E);
end Raise_Exception_Always;
@@ -1004,8 +1007,9 @@ package body Ada.Exceptions is
(E : Exception_Id;
Message : String := "")
is
+ Excep : constant EOA := Get_Current_Excep.all;
begin
- Exception_Data.Set_Exception_Msg (E, Message);
+ Exception_Data.Set_Exception_Msg (Excep, E, Message);
-- Do not call Abort_Defer.all, as specified by the spec
@@ -1065,8 +1069,9 @@ package body Ada.Exceptions is
(E : Exception_Id;
M : System.Address)
is
+ Excep : constant EOA := Get_Current_Excep.all;
begin
- Exception_Data.Set_Exception_C_Msg (E, M);
+ Exception_Data.Set_Exception_C_Msg (Excep, E, M);
Abort_Defer.all;
Process_Raise_Exception (E);
end Raise_From_Signal_Handler;
@@ -1135,8 +1140,9 @@ package body Ada.Exceptions is
L : Integer;
M : System.Address := System.Null_Address)
is
+ Excep : constant EOA := Get_Current_Excep.all;
begin
- Exception_Data.Set_Exception_C_Msg (E, F, L, Msg2 => M);
+ Exception_Data.Set_Exception_C_Msg (Excep, E, F, L, Msg2 => M);
Abort_Defer.all;
Raise_Current_Excep (E);
end Raise_With_Location_And_Msg;
@@ -1402,8 +1408,8 @@ package body Ada.Exceptions is
procedure Rcheck_PE_Finalize_Raised_Exception
(File : System.Address; Line : Integer)
is
- E : constant Exception_Id := Program_Error_Def'Access;
-
+ E : constant Exception_Id := Program_Error_Def'Access;
+ Excep : constant EOA := Get_Current_Excep.all;
begin
-- This is "finalize/adjust raised exception". This subprogram is always
-- called with abort deferred, unlike all other Rcheck_* routines, it
@@ -1411,7 +1417,8 @@ package body Ada.Exceptions is
-- This is consistent with Raise_From_Controlled_Operation
- Exception_Data.Set_Exception_C_Msg (E, File, Line, 0, Rmsg_22'Address);
+ Exception_Data.Set_Exception_C_Msg (Excep, E, File, Line, 0,
+ Rmsg_22'Address);
Raise_Current_Excep (E);
end Rcheck_PE_Finalize_Raised_Exception;
diff --git a/gcc/ada/a-except.ads b/gcc/ada/a-except.ads
index 0561fb74a11..e395cf4f3b0 100644
--- a/gcc/ada/a-except.ads
+++ b/gcc/ada/a-except.ads
@@ -271,9 +271,6 @@ private
type Exception_Occurrence is record
Id : Exception_Id;
-- Exception_Identity for this exception occurrence
- -- WARNING System.System.Finalization_Implementation.Finalize_List
- -- relies on the fact that this field is always first in the exception
- -- occurrence
Msg_Length : Natural := 0;
-- Length of message (zero = no message)
diff --git a/gcc/ada/a-exexda.adb b/gcc/ada/a-exexda.adb
index 37cb115988d..aa91cdcfe8f 100644
--- a/gcc/ada/a-exexda.adb
+++ b/gcc/ada/a-exexda.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -558,13 +558,13 @@ package body Exception_Data is
-------------------------
procedure Set_Exception_C_Msg
- (Id : Exception_Id;
+ (Excep : EOA;
+ Id : Exception_Id;
Msg1 : System.Address;
Line : Integer := 0;
Column : Integer := 0;
Msg2 : System.Address := System.Null_Address)
is
- Excep : constant EOA := Get_Current_Excep.all;
Remind : Integer;
Ptr : Natural;
@@ -654,13 +654,13 @@ package body Exception_Data is
-----------------------
procedure Set_Exception_Msg
- (Id : Exception_Id;
+ (Excep : EOA;
+ Id : Exception_Id;
Message : String)
is
Len : constant Natural :=
Natural'Min (Message'Length, Exception_Msg_Max_Length);
First : constant Integer := Message'First;
- Excep : constant EOA := Get_Current_Excep.all;
begin
Excep.Exception_Raised := False;
Excep.Msg_Length := Len;
diff --git a/gcc/ada/a-exexpr-gcc.adb b/gcc/ada/a-exexpr-gcc.adb
index 2f2e7a76cba..e62ffd2ef93 100644
--- a/gcc/ada/a-exexpr-gcc.adb
+++ b/gcc/ada/a-exexpr-gcc.adb
@@ -39,14 +39,14 @@ with System.Storage_Elements; use System.Storage_Elements;
separate (Ada.Exceptions)
package body Exception_Propagation is
+ use Exception_Traces;
+
------------------------------------------------
-- Entities to interface with the GCC runtime --
------------------------------------------------
-- These come from "C++ ABI for Itanium: Exception handling", which is
- -- the reference for GCC. They are used only when we are relying on
- -- back-end tables for exception propagation, which in turn is currently
- -- only the case for Zero_Cost_Exceptions in GNAT5.
+ -- the reference for GCC.
-- Return codes from the GCC runtime functions used to propagate
-- an exception.
@@ -63,7 +63,8 @@ package body Exception_Propagation is
URC_CONTINUE_UNWIND);
pragma Unreferenced
- (URC_FOREIGN_EXCEPTION_CAUGHT,
+ (URC_NO_REASON,
+ URC_FOREIGN_EXCEPTION_CAUGHT,
URC_PHASE2_ERROR,
URC_PHASE1_ERROR,
URC_NORMAL_STOP,
@@ -83,13 +84,14 @@ package body Exception_Propagation is
UA_CLEANUP_PHASE : constant Unwind_Action := 2;
UA_HANDLER_FRAME : constant Unwind_Action := 4;
UA_FORCE_UNWIND : constant Unwind_Action := 8;
- UA_END_OF_STACK : constant Unwind_Action := 16; -- GCC extension ?
+ UA_END_OF_STACK : constant Unwind_Action := 16; -- GCC extension
pragma Unreferenced
(UA_SEARCH_PHASE,
UA_CLEANUP_PHASE,
UA_HANDLER_FRAME,
- UA_FORCE_UNWIND);
+ UA_FORCE_UNWIND,
+ UA_END_OF_STACK);
-- Mandatory common header for any exception object handled by the
-- GCC unwinding runtime.
@@ -110,7 +112,7 @@ package body Exception_Propagation is
Private2 : Unwind_Word;
-- Usual exception structure has only two private fields, but the SEH
- -- one has six. To avoid makeing this file more complex, we use six
+ -- one has six. To avoid making this file more complex, we use six
-- fields on all platforms, wasting a few bytes on some.
Private3 : Unwind_Word;
@@ -151,7 +153,7 @@ package body Exception_Propagation is
Header : Unwind_Exception;
-- ABI Exception header first
- Occurrence : Exception_Occurrence;
+ Occurrence : aliased Exception_Occurrence;
-- The Ada occurrence
end record;
@@ -177,7 +179,7 @@ package body Exception_Propagation is
type GNAT_GCC_Exception_Access is access all GNAT_GCC_Exception;
function To_GCC_Exception is new
- Unchecked_Conversion (GNAT_GCC_Exception_Access, GCC_Exception_Access);
+ Unchecked_Conversion (System.Address, GCC_Exception_Access);
function To_GNAT_GCC_Exception is new
Unchecked_Conversion (GCC_Exception_Access, GNAT_GCC_Exception_Access);
@@ -200,11 +202,20 @@ package body Exception_Propagation is
-- Called to implement raise without exception, ie reraise. Called
-- directly from gigi.
- procedure Setup_Current_Excep
- (GCC_Exception : not null GCC_Exception_Access);
+ function Setup_Current_Excep
+ (GCC_Exception : not null GCC_Exception_Access) return EOA;
pragma Export (C, Setup_Current_Excep, "__gnat_setup_current_excep");
-- Write Get_Current_Excep.all from GCC_Exception
+ procedure Unhandled_Except_Handler
+ (GCC_Exception : not null GCC_Exception_Access);
+ pragma No_Return (Unhandled_Except_Handler);
+ pragma Export (C, Unhandled_Except_Handler,
+ "__gnat_unhandled_except_handler");
+ -- Called for handle unhandled exceptions, ie the last chance handler
+ -- on platforms (such as SEH) that never returns after throwing an
+ -- exception. Called directly by gigi.
+
function CleanupUnwind_Handler
(UW_Version : Integer;
UW_Phases : Unwind_Action;
@@ -212,6 +223,8 @@ package body Exception_Propagation is
UW_Exception : not null GCC_Exception_Access;
UW_Context : System.Address;
UW_Argument : System.Address) return Unwind_Reason_Code;
+ pragma Import (C, CleanupUnwind_Handler,
+ "__gnat_cleanupunwind_handler");
-- Hook called at each step of the forced unwinding we perform to
-- trigger cleanups found during the propagation of an unhandled
-- exception.
@@ -280,6 +293,30 @@ package body Exception_Propagation is
All_Others_Value : constant Integer := 16#7FFF#;
pragma Export (C, All_Others_Value, "__gnat_all_others_value");
+ Unhandled_Others_Value : constant Integer := 16#7FFF#;
+ pragma Export (C, Unhandled_Others_Value, "__gnat_unhandled_others_value");
+ -- Special choice (emitted by gigi) to catch and notify unhandled
+ -- exceptions on targets which always handle exceptions (such as SEH).
+ -- The handler will simply call Unhandled_Except_Handler.
+
+ -------------------------
+ -- Allocate_Occurrence --
+ -------------------------
+
+ function Allocate_Occurrence return EOA is
+ Res : GNAT_GCC_Exception_Access;
+ begin
+ Res :=
+ new GNAT_GCC_Exception'
+ (Header => (Class => GNAT_Exception_Class,
+ Cleanup => GNAT_GCC_Exception_Cleanup'Address,
+ others => 0),
+ Occurrence => (others => <>));
+ Res.Occurrence.Machine_Occurrence := Res.all'Address;
+
+ return Res.Occurrence'Access;
+ end Allocate_Occurrence;
+
--------------------------------
-- GNAT_GCC_Exception_Cleanup --
--------------------------------
@@ -301,41 +338,12 @@ package body Exception_Propagation is
Free (Copy);
end GNAT_GCC_Exception_Cleanup;
- ---------------------------
- -- CleanupUnwind_Handler --
- ---------------------------
-
- function CleanupUnwind_Handler
- (UW_Version : Integer;
- UW_Phases : Unwind_Action;
- UW_Eclass : Exception_Class;
- UW_Exception : not null GCC_Exception_Access;
- UW_Context : System.Address;
- UW_Argument : System.Address) return Unwind_Reason_Code
- is
- pragma Unreferenced (UW_Version, UW_Eclass, UW_Context, UW_Argument);
-
- begin
- -- Terminate when the end of the stack is reached
-
- if UW_Phases >= UA_END_OF_STACK then
- Setup_Current_Excep (UW_Exception);
- Unhandled_Exception_Terminate;
- end if;
-
- -- We know there is at least one cleanup further up. Return so that it
- -- is searched and entered, after which Unwind_Resume will be called
- -- and this hook will gain control again.
-
- return URC_NO_REASON;
- end CleanupUnwind_Handler;
-
-------------------------
-- Setup_Current_Excep --
-------------------------
- procedure Setup_Current_Excep
- (GCC_Exception : not null GCC_Exception_Access)
+ function Setup_Current_Excep
+ (GCC_Exception : not null GCC_Exception_Access) return EOA
is
Excep : constant EOA := Get_Current_Excep.all;
@@ -351,16 +359,21 @@ package body Exception_Propagation is
To_GNAT_GCC_Exception (GCC_Exception);
begin
Excep.all := GNAT_Occurrence.Occurrence;
+
+ return GNAT_Occurrence.Occurrence'Access;
end;
else
-- A default one
Excep.Id := Foreign_Exception'Access;
+ Excep.Machine_Occurrence := GCC_Exception.all'Address;
Excep.Msg_Length := 0;
Excep.Exception_Raised := True;
Excep.Pid := Local_Partition_ID;
Excep.Num_Tracebacks := 0;
+
+ return Excep;
end if;
end Setup_Current_Excep;
@@ -411,6 +424,8 @@ package body Exception_Propagation is
procedure Propagate_GCC_Exception
(GCC_Exception : not null GCC_Exception_Access)
is
+ Excep : EOA;
+
begin
-- Perform a standard raise first. If a regular handler is found, it
-- will be entered after all the intermediate cleanups have run. If
@@ -423,8 +438,8 @@ package body Exception_Propagation is
-- the necessary steps to enable the debugger to gain control while the
-- stack is still intact.
- Setup_Current_Excep (GCC_Exception);
- Notify_Unhandled_Exception;
+ Excep := Setup_Current_Excep (GCC_Exception);
+ Notify_Unhandled_Exception (Excep);
-- Now, un a forced unwind to trigger cleanups. Control should not
-- resume there, if there are cleanups and in any cases as the
@@ -438,59 +453,30 @@ package body Exception_Propagation is
-- We get here in case of error. The debugger has been notified before
-- the second step above.
- Setup_Current_Excep (GCC_Exception);
- Unhandled_Exception_Terminate;
+ Unhandled_Except_Handler (GCC_Exception);
end Propagate_GCC_Exception;
-------------------------
-- Propagate_Exception --
-------------------------
- -- Build an object suitable for the libgcc processing and call
- -- Unwind_RaiseException to actually do the raise, taking care of
- -- handling the two phase scheme it implements.
-
- procedure Propagate_Exception is
- Excep : constant EOA := Get_Current_Excep.all;
- GCC_Exception : GNAT_GCC_Exception_Access;
-
+ procedure Propagate_Exception (Excep : EOA) is
begin
- -- Compute the backtrace for this occurrence if the corresponding
- -- binder option has been set. Call_Chain takes care of the reraise
- -- case.
-
- -- ??? Using Call_Chain here means we are going to walk up the stack
- -- once only for backtracing purposes before doing it again for the
- -- propagation per se.
-
- -- The first inspection is much lighter, though, as it only requires
- -- partial unwinding of each frame. Additionally, although we could use
- -- the personality routine to record the addresses while propagating,
- -- this method has two drawbacks:
-
- -- 1) the trace is incomplete if the exception is handled since we
- -- don't walk past the frame with the handler,
-
- -- and
-
- -- 2) we would miss the frames for which our personality routine is not
- -- called, e.g. if C or C++ calls are on the way.
-
- Call_Chain (Excep);
-
- -- Allocate the GCC exception
-
- GCC_Exception :=
- new GNAT_GCC_Exception'
- (Header => (Class => GNAT_Exception_Class,
- Cleanup => GNAT_GCC_Exception_Cleanup'Address,
- others => 0),
- Occurrence => Excep.all);
+ Propagate_GCC_Exception (To_GCC_Exception (Excep.Machine_Occurrence));
+ end Propagate_Exception;
- -- Propagate it
+ ------------------------------
+ -- Unhandled_Except_Handler --
+ ------------------------------
- Propagate_GCC_Exception (To_GCC_Exception (GCC_Exception));
- end Propagate_Exception;
+ procedure Unhandled_Except_Handler
+ (GCC_Exception : not null GCC_Exception_Access)
+ is
+ Excep : EOA;
+ begin
+ Excep := Setup_Current_Excep (GCC_Exception);
+ Unhandled_Exception_Terminate (Excep);
+ end Unhandled_Except_Handler;
-------------
-- EID_For --
diff --git a/gcc/ada/a-exexpr.adb b/gcc/ada/a-exexpr.adb
index cbe8a5c1c38..e2fd7d70e1e 100644
--- a/gcc/ada/a-exexpr.adb
+++ b/gcc/ada/a-exexpr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -43,42 +43,30 @@ package body Exception_Propagation is
pragma No_Return (builtin_longjmp);
pragma Import (Intrinsic, builtin_longjmp, "__builtin_longjmp");
+ procedure Propagate_Continue (E : Exception_Id);
+ pragma No_Return (Propagate_Continue);
+ pragma Export (C, Propagate_Continue, "__gnat_raise_nodefer_with_msg");
+ -- A call to this procedure is inserted automatically by GIGI, in order
+ -- to continue the propagation when the exception was not handled.
+ -- The linkage name is historical.
+
-------------------------
- -- Propagate_Exception --
+ -- Allocate_Occurrence --
-------------------------
- procedure Propagate_Exception
- is
- Jumpbuf_Ptr : constant Address := Get_Jmpbuf_Address.all;
- Excep : constant EOA := Get_Current_Excep.all;
+ function Allocate_Occurrence return EOA is
begin
- -- Compute the backtrace for this occurrence if corresponding binder
- -- option has been set. Call_Chain takes care of the reraise case.
-
- Call_Chain (Excep);
-
- -- Note on above call to Call_Chain:
-
- -- We used to only do this if From_Signal_Handler was not set,
- -- based on the assumption that backtracing from a signal handler
- -- would not work due to stack layout oddities. However, since
-
- -- 1. The flag is never set in tasking programs (Notify_Exception
- -- performs regular raise statements), and
-
- -- 2. No problem has shown up in tasking programs around here so
- -- far, this turned out to be too strong an assumption.
-
- -- As, in addition, the test was
+ return Get_Current_Excep.all;
+ end Allocate_Occurrence;
- -- 1. preventing the production of backtraces in non-tasking
- -- programs, and
-
- -- 2. introducing a behavior inconsistency between
- -- the tasking and non-tasking cases,
+ -------------------------
+ -- Propagate_Exception --
+ -------------------------
- -- we have simply removed it
+ procedure Propagate_Exception (Excep : EOA) is
+ Jumpbuf_Ptr : constant Address := Get_Jmpbuf_Address.all;
+ begin
-- If the jump buffer pointer is non-null, transfer control using
-- it. Otherwise announce an unhandled exception (note that this
-- means that we have no finalizations to do other than at the outer
@@ -87,15 +75,25 @@ package body Exception_Propagation is
if Jumpbuf_Ptr /= Null_Address then
if not Excep.Exception_Raised then
Excep.Exception_Raised := True;
- Exception_Traces.Notify_Handled_Exception;
+ Exception_Traces.Notify_Handled_Exception (Excep);
end if;
builtin_longjmp (Jumpbuf_Ptr, 1);
else
- Exception_Traces.Notify_Unhandled_Exception;
- Exception_Traces.Unhandled_Exception_Terminate;
+ Exception_Traces.Notify_Unhandled_Exception (Excep);
+ Exception_Traces.Unhandled_Exception_Terminate (Excep);
end if;
end Propagate_Exception;
+ ------------------------
+ -- Propagate_Continue --
+ ------------------------
+
+ procedure Propagate_Continue (E : Exception_Id) is
+ pragma Unreferenced (E);
+ begin
+ Propagate_Exception (Get_Current_Excep.all);
+ end Propagate_Continue;
+
end Exception_Propagation;
diff --git a/gcc/ada/a-exextr.adb b/gcc/ada/a-exextr.adb
index d8f4072e402..fe4b706f7ee 100644
--- a/gcc/ada/a-exextr.adb
+++ b/gcc/ada/a-exextr.adb
@@ -72,17 +72,6 @@ package body Exception_Traces is
-- latter case because Notify_Handled_Exception may be called for an
-- actually unhandled occurrence in the Front-End-SJLJ case.
- --------------------------------
- -- Import Run-Time C Routines --
- --------------------------------
-
- -- The purpose of the following pragma Import is to ensure that we
- -- generate appropriate subprogram descriptors for all C routines in
- -- the standard GNAT library that can raise exceptions. This ensures
- -- that the exception propagation can properly find these routines
-
- pragma Propagate_Exceptions;
-
----------------------
-- Notify_Exception --
----------------------
@@ -132,18 +121,16 @@ package body Exception_Traces is
-- Notify_Handled_Exception --
------------------------------
- procedure Notify_Handled_Exception is
+ procedure Notify_Handled_Exception (Excep : EOA) is
begin
- Notify_Exception (Get_Current_Excep.all, Is_Unhandled => False);
+ Notify_Exception (Excep, Is_Unhandled => False);
end Notify_Handled_Exception;
--------------------------------
-- Notify_Unhandled_Exception --
--------------------------------
- procedure Notify_Unhandled_Exception is
- Excep : constant EOA := Get_Current_Excep.all;
-
+ procedure Notify_Unhandled_Exception (Excep : EOA) is
begin
-- Check whether there is any termination handler to be executed for
-- the environment task, and execute it if needed. Here we handle both
@@ -161,8 +148,8 @@ package body Exception_Traces is
-- Unhandled_Exception_Terminate --
-----------------------------------
- procedure Unhandled_Exception_Terminate is
- Excep : Exception_Occurrence;
+ procedure Unhandled_Exception_Terminate (Excep : EOA) is
+ Occ : Exception_Occurrence;
-- This occurrence will be used to display a message after finalization.
-- It is necessary to save a copy here, or else the designated value
-- could be overwritten if an exception is raised during finalization
@@ -172,8 +159,8 @@ package body Exception_Traces is
-- that there is enough room on the stack however.
begin
- Save_Occurrence (Excep, Get_Current_Excep.all.all);
- Last_Chance_Handler (Excep);
+ Save_Occurrence (Occ, Excep.all);
+ Last_Chance_Handler (Occ);
end Unhandled_Exception_Terminate;
------------------------------------
diff --git a/gcc/ada/a-ngelfu.adb b/gcc/ada/a-ngelfu.adb
index ae95d66547b..cd426ca7511 100644
--- a/gcc/ada/a-ngelfu.adb
+++ b/gcc/ada/a-ngelfu.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -31,9 +31,7 @@
-- This body is specifically for using an Ada interface to C math.h to get
-- the computation engine. Many special cases are handled locally to avoid
--- unnecessary calls. This is not a "strict" implementation, but takes full
--- advantage of the C functions, e.g. in providing interface to hardware
--- provided versions of the elementary functions.
+-- unnecessary calls or to meet Annex G strict mode requirements.
-- Uses functions sqrt, exp, log, pow, sin, asin, cos, acos, tan, atan, sinh,
-- cosh, tanh from C library via math.h
diff --git a/gcc/ada/a-ststio.ads b/gcc/ada/a-ststio.ads
index d14dd3e2380..4049163fa8f 100644
--- a/gcc/ada/a-ststio.ads
+++ b/gcc/ada/a-ststio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -37,6 +37,7 @@ with Ada.IO_Exceptions;
with System.File_Control_Block;
package Ada.Streams.Stream_IO is
+ pragma Preelaborate;
type Stream_Access is access all Root_Stream_Type'Class;
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index b76b3c6c4ce..54244bdf2af 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -80,7 +80,6 @@ extern "C" {
#ifdef IN_RTS
#include "tconfig.h"
#include "tsystem.h"
-
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
index 8c46aed1773..6097e61f882 100644
--- a/gcc/ada/adaint.h
+++ b/gcc/ada/adaint.h
@@ -120,7 +120,7 @@ extern int __gnat_symlink (char *, char *);
extern int __gnat_try_lock (char *, char *);
extern int __gnat_open_new (char *, int);
extern int __gnat_open_new_temp (char *, int);
-extern int __gnat_mkdir (char *);
+extern int __gnat_mkdir (char *, int);
extern int __gnat_stat (char *,
GNAT_STRUCT_STAT *);
extern int __gnat_unlink (char *);
diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb
index 28307ac72a4..86ad184de2b 100644
--- a/gcc/ada/ali.adb
+++ b/gcc/ada/ali.adb
@@ -135,7 +135,7 @@ package body ALI is
Ignore_Errors : Boolean := False;
Directly_Scanned : Boolean := False) return ALI_Id
is
- P : Text_Ptr := T'First;
+ P : Text_Ptr := T'First;
Line : Logical_Line_Number := 1;
Id : ALI_Id;
C : Character;
@@ -1154,7 +1154,7 @@ package body ALI is
C := Getc;
Check_Unknown_Line;
- -- Acquire first restrictions line
+ -- Loop to skip to first restrictions line
while C /= 'R' loop
if Ignore_Errors then
@@ -1169,10 +1169,15 @@ package body ALI is
end if;
end loop;
+ -- Ignore all 'R' lines if that is required
+
if Ignore ('R') then
- Skip_Line;
+ while C = 'R' loop
+ Skip_Line;
+ C := Getc;
+ end loop;
- -- Process restrictions line
+ -- Here we process the restrictions lines (other than unit name cases)
else
Scan_Restrictions : declare
@@ -1182,16 +1187,191 @@ package body ALI is
Bad_R_Line : exception;
-- Signal bad restrictions line (raised on unexpected character)
- begin
- Checkc (' ');
- Skip_Space;
+ Typ : Character;
+ R : Restriction_Id;
+ N : Natural;
- -- Acquire information for boolean restrictions
+ begin
+ -- Named restriction case
- for R in All_Boolean_Restrictions loop
+ if Nextc = 'N' then
+ Skip_Line;
C := Getc;
- case C is
+ -- Loop through RR and RV lines
+
+ while C = 'R' and then Nextc /= ' ' loop
+ Typ := Getc;
+ Checkc (' ');
+
+ -- Acquire restriction name
+
+ Name_Len := 0;
+ while not At_Eol and then Nextc /= '=' loop
+ Name_Len := Name_Len + 1;
+ Name_Buffer (Name_Len) := Getc;
+ end loop;
+
+ -- Now search list of restrictions to find match
+
+ declare
+ RN : String renames Name_Buffer (1 .. Name_Len);
+
+ begin
+ R := Restriction_Id'First;
+ while R < Not_A_Restriction_Id loop
+ if Restriction_Id'Image (R) = RN then
+ goto R_Found;
+ end if;
+
+ R := Restriction_Id'Succ (R);
+ end loop;
+
+ -- We don't recognize the restriction. This might be
+ -- thought of as an error, and it really is, but we
+ -- want to allow building with inconsistent versions
+ -- of the binder and ali files (see comments at the
+ -- start of package System.Rident), so we just ignore
+ -- this situation.
+
+ goto Done_With_Restriction_Line;
+ end;
+
+ <<R_Found>>
+
+ case R is
+
+ -- Boolean restriction case
+
+ when All_Boolean_Restrictions =>
+ case Typ is
+ when 'V' =>
+ ALIs.Table (Id).Restrictions.Violated (R) :=
+ True;
+ Cumulative_Restrictions.Violated (R) := True;
+
+ when 'R' =>
+ ALIs.Table (Id).Restrictions.Set (R) := True;
+ Cumulative_Restrictions.Set (R) := True;
+
+ when others =>
+ raise Bad_R_Line;
+ end case;
+
+ -- Parameter restriction case
+
+ when All_Parameter_Restrictions =>
+ if At_Eol or else Nextc /= '=' then
+ raise Bad_R_Line;
+ else
+ Skipc;
+ end if;
+
+ N := Natural (Get_Nat);
+
+ case Typ is
+
+ -- Restriction set
+
+ when 'R' =>
+ ALIs.Table (Id).Restrictions.Set (R) := True;
+ ALIs.Table (Id).Restrictions.Value (R) := N;
+
+ if Cumulative_Restrictions.Set (R) then
+ Cumulative_Restrictions.Value (R) :=
+ Integer'Min
+ (Cumulative_Restrictions.Value (R), N);
+ else
+ Cumulative_Restrictions.Set (R) := True;
+ Cumulative_Restrictions.Value (R) := N;
+ end if;
+
+ -- Restriction violated
+
+ when 'V' =>
+ ALIs.Table (Id).Restrictions.Violated (R) :=
+ True;
+ Cumulative_Restrictions.Violated (R) := True;
+ ALIs.Table (Id).Restrictions.Count (R) := N;
+
+ -- Checked Max_Parameter case
+
+ if R in Checked_Max_Parameter_Restrictions then
+ Cumulative_Restrictions.Count (R) :=
+ Integer'Max
+ (Cumulative_Restrictions.Count (R), N);
+
+ -- Other checked parameter cases
+
+ else
+ declare
+ pragma Unsuppress (Overflow_Check);
+
+ begin
+ Cumulative_Restrictions.Count (R) :=
+ Cumulative_Restrictions.Count (R) + N;
+
+ exception
+ when Constraint_Error =>
+
+ -- A constraint error comes from the
+ -- additionh. We reset to the maximum
+ -- and indicate that the real value is
+ -- now unknown.
+
+ Cumulative_Restrictions.Value (R) :=
+ Integer'Last;
+ Cumulative_Restrictions.Unknown (R) :=
+ True;
+ end;
+ end if;
+
+ -- Deal with + case
+
+ if Nextc = '+' then
+ Skipc;
+ ALIs.Table (Id).Restrictions.Unknown (R) :=
+ True;
+ Cumulative_Restrictions.Unknown (R) := True;
+ end if;
+
+ -- Other than 'R' or 'V'
+
+ when others =>
+ raise Bad_R_Line;
+ end case;
+
+ if not At_Eol then
+ raise Bad_R_Line;
+ end if;
+
+ -- Bizarre error case NOT_A_RESTRICTION
+
+ when Not_A_Restriction_Id =>
+ raise Bad_R_Line;
+ end case;
+
+ if not At_Eol then
+ raise Bad_R_Line;
+ end if;
+
+ <<Done_With_Restriction_Line>>
+ Skip_Line;
+ C := Getc;
+ end loop;
+
+ -- Positional restriction case
+
+ else
+ Checkc (' ');
+ Skip_Space;
+
+ -- Acquire information for boolean restrictions
+
+ for R in All_Boolean_Restrictions loop
+ C := Getc;
+
+ case C is
when 'v' =>
ALIs.Table (Id).Restrictions.Violated (R) := True;
Cumulative_Restrictions.Violated (R) := True;
@@ -1205,44 +1385,42 @@ package body ALI is
when others =>
raise Bad_R_Line;
- end case;
- end loop;
-
- -- Acquire information for parameter restrictions
+ end case;
+ end loop;
- for RP in All_Parameter_Restrictions loop
+ -- Acquire information for parameter restrictions
- -- Acquire restrictions pragma information
+ for RP in All_Parameter_Restrictions loop
+ case Getc is
+ when 'n' =>
+ null;
- case Getc is
- when 'n' =>
- null;
+ when 'r' =>
+ ALIs.Table (Id).Restrictions.Set (RP) := True;
- when 'r' =>
- ALIs.Table (Id).Restrictions.Set (RP) := True;
+ declare
+ N : constant Integer := Integer (Get_Nat);
+ begin
+ ALIs.Table (Id).Restrictions.Value (RP) := N;
- declare
- N : constant Integer := Integer (Get_Nat);
- begin
- ALIs.Table (Id).Restrictions.Value (RP) := N;
+ if Cumulative_Restrictions.Set (RP) then
+ Cumulative_Restrictions.Value (RP) :=
+ Integer'Min
+ (Cumulative_Restrictions.Value (RP), N);
+ else
+ Cumulative_Restrictions.Set (RP) := True;
+ Cumulative_Restrictions.Value (RP) := N;
+ end if;
+ end;
- if Cumulative_Restrictions.Set (RP) then
- Cumulative_Restrictions.Value (RP) :=
- Integer'Min
- (Cumulative_Restrictions.Value (RP), N);
- else
- Cumulative_Restrictions.Set (RP) := True;
- Cumulative_Restrictions.Value (RP) := N;
- end if;
- end;
+ when others =>
+ raise Bad_R_Line;
+ end case;
- when others =>
- raise Bad_R_Line;
- end case;
+ -- Acquire restrictions violations information
- -- Acquire restrictions violations information
+ case Getc is
- case Getc is
when 'n' =>
null;
@@ -1252,7 +1430,6 @@ package body ALI is
declare
N : constant Integer := Integer (Get_Nat);
- pragma Unsuppress (Overflow_Check);
begin
ALIs.Table (Id).Restrictions.Count (RP) := N;
@@ -1261,34 +1438,47 @@ package body ALI is
Cumulative_Restrictions.Count (RP) :=
Integer'Max
(Cumulative_Restrictions.Count (RP), N);
+
else
- Cumulative_Restrictions.Count (RP) :=
- Cumulative_Restrictions.Count (RP) + N;
- end if;
+ declare
+ pragma Unsuppress (Overflow_Check);
- exception
- when Constraint_Error =>
+ begin
+ Cumulative_Restrictions.Count (RP) :=
+ Cumulative_Restrictions.Count (RP) + N;
+
+ exception
+ when Constraint_Error =>
- -- A constraint error comes from the addition in
- -- the else branch. We reset to the maximum and
- -- indicate that the real value is now unknown.
+ -- A constraint error comes from the add. We
+ -- reset to the maximum and indicate that the
+ -- real value is now unknown.
+
+ Cumulative_Restrictions.Value (RP) :=
+ Integer'Last;
+ Cumulative_Restrictions.Unknown (RP) := True;
+ end;
+ end if;
- Cumulative_Restrictions.Value (RP) := Integer'Last;
+ if Nextc = '+' then
+ Skipc;
+ ALIs.Table (Id).Restrictions.Unknown (RP) := True;
Cumulative_Restrictions.Unknown (RP) := True;
+ end if;
end;
- if Nextc = '+' then
- Skipc;
- ALIs.Table (Id).Restrictions.Unknown (RP) := True;
- Cumulative_Restrictions.Unknown (RP) := True;
- end if;
-
when others =>
raise Bad_R_Line;
- end case;
- end loop;
+ end case;
+ end loop;
- Skip_Eol;
+ if not At_Eol then
+ raise Bad_R_Line;
+ else
+ Skip_Line;
+ C := Getc;
+ end if;
+ end if;
-- Here if error during scanning of restrictions line
@@ -1296,25 +1486,29 @@ package body ALI is
when Bad_R_Line =>
-- In Ignore_Errors mode, undo any changes to restrictions
- -- from this unit, and continue on.
+ -- from this unit, and continue on, skipping remaining R
+ -- lines for this unit.
if Ignore_Errors then
Cumulative_Restrictions := Save_R;
ALIs.Table (Id).Restrictions := No_Restrictions;
- Skip_Eol;
+
+ loop
+ Skip_Eol;
+ C := Getc;
+ exit when C /= 'R';
+ end loop;
-- In normal mode, this is a fatal error
else
Fatal_Error;
end if;
-
end Scan_Restrictions;
end if;
-- Acquire additional restrictions (No_Dependence) lines if present
- C := Getc;
while C = 'R' loop
if Ignore ('R') then
Skip_Line;
diff --git a/gcc/ada/aspects.ads b/gcc/ada/aspects.ads
index b21b1e23973..ebe71aec0c3 100644
--- a/gcc/ada/aspects.ads
+++ b/gcc/ada/aspects.ads
@@ -184,6 +184,10 @@ package Aspects is
Aspect_Lock_Free);
+ subtype Aspect_Id_Exclude_No_Aspect is
+ Aspect_Id range Aspect_Id'Succ (No_Aspect) .. Aspect_Id'Last;
+ -- Aspect_Id's excluding No_Aspect
+
-- The following array indicates aspects that accept 'Class
Class_Aspect_OK : constant array (Aspect_Id) of Boolean :=
diff --git a/gcc/ada/back_end.adb b/gcc/ada/back_end.adb
index 6c4b63ff75f..fa7c54d2f19 100644
--- a/gcc/ada/back_end.adb
+++ b/gcc/ada/back_end.adb
@@ -237,7 +237,7 @@ package body Back_End is
elsif Switch_Chars (First .. Last) = "fpreserve-control-flow" then
Opt.Suppress_Control_Flow_Optimizations := True;
- -- Back end switcg -fdump-scos, which exists primarily for C, is
+ -- Back end switch -fdump-scos, which exists primarily for C, is
-- also accepted for Ada as a synonym of -gnateS.
elsif Switch_Chars (First .. Last) = "fdump-scos" then
diff --git a/gcc/ada/bindusg.adb b/gcc/ada/bindusg.adb
index 23840d3048c..e9d39504af1 100644
--- a/gcc/ada/bindusg.adb
+++ b/gcc/ada/bindusg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -76,9 +76,10 @@ package body Bindusg is
Write_Line (" -a Automatically initialize elaboration " &
"procedure");
- -- Line for -A switch
+ -- Lines for -A switch
Write_Line (" -A Give list of ALI files in partition");
+ Write_Line (" -A=file Write ALI file list to named file");
-- Line for -b switch
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index 195b69e1be8..b086c754807 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -322,7 +322,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Access_Check);
else
- return Scope_Suppress (Access_Check);
+ return Scope_Suppress.Suppress (Access_Check);
end if;
end Access_Checks_Suppressed;
@@ -335,7 +335,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Accessibility_Check);
else
- return Scope_Suppress (Accessibility_Check);
+ return Scope_Suppress.Suppress (Accessibility_Check);
end if;
end Accessibility_Checks_Suppressed;
@@ -378,7 +378,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Alignment_Check);
else
- return Scope_Suppress (Alignment_Check);
+ return Scope_Suppress.Suppress (Alignment_Check);
end if;
end Alignment_Checks_Suppressed;
@@ -2616,7 +2616,7 @@ package body Checks is
-- Otherwise result depends on current scope setting
else
- return Scope_Suppress (Atomic_Synchronization);
+ return Scope_Suppress.Suppress (Atomic_Synchronization);
end if;
end Atomic_Synchronization_Disabled;
@@ -3151,6 +3151,9 @@ package body Checks is
Cindex : Cache_Index;
-- Used to search cache
+ Btyp : Entity_Id;
+ -- Base type
+
function OK_Operands return Boolean;
-- Used for binary operators. Determines the ranges of the left and
-- right operands, and if they are both OK, returns True, and puts
@@ -3267,6 +3270,15 @@ package body Checks is
Typ := Underlying_Type (Base_Type (Typ));
end if;
+ -- Retrieve the base type. Handle the case where the base type is a
+ -- private enumeration type.
+
+ Btyp := Base_Type (Typ);
+
+ if Is_Private_Type (Btyp) and then Present (Full_View (Btyp)) then
+ Btyp := Full_View (Btyp);
+ end if;
+
-- We use the actual bound unless it is dynamic, in which case use the
-- corresponding base type bound if possible. If we can't get a bound
-- then we figure we can't determine the range (a peculiar case, that
@@ -3280,8 +3292,8 @@ package body Checks is
if Compile_Time_Known_Value (Bound) then
Lo := Expr_Value (Bound);
- elsif Compile_Time_Known_Value (Type_Low_Bound (Base_Type (Typ))) then
- Lo := Expr_Value (Type_Low_Bound (Base_Type (Typ)));
+ elsif Compile_Time_Known_Value (Type_Low_Bound (Btyp)) then
+ Lo := Expr_Value (Type_Low_Bound (Btyp));
else
OK := False;
@@ -3296,8 +3308,8 @@ package body Checks is
-- always be compile time known. Again, it is not clear that this
-- can ever be false, but no point in bombing.
- if Compile_Time_Known_Value (Type_High_Bound (Base_Type (Typ))) then
- Hbound := Expr_Value (Type_High_Bound (Base_Type (Typ)));
+ if Compile_Time_Known_Value (Type_High_Bound (Btyp)) then
+ Hbound := Expr_Value (Type_High_Bound (Btyp));
Hi := Hbound;
else
@@ -3629,7 +3641,7 @@ package body Checks is
end if;
end if;
- return Scope_Suppress (Discriminant_Check);
+ return Scope_Suppress.Suppress (Discriminant_Check);
end Discriminant_Checks_Suppressed;
--------------------------------
@@ -3641,7 +3653,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Division_Check);
else
- return Scope_Suppress (Division_Check);
+ return Scope_Suppress.Suppress (Division_Check);
end if;
end Division_Checks_Suppressed;
@@ -3670,10 +3682,10 @@ package body Checks is
end if;
end if;
- if Scope_Suppress (Elaboration_Check) then
+ if Scope_Suppress.Suppress (Elaboration_Check) then
return True;
elsif Dynamic_Elaboration_Checks then
- return Scope_Suppress (All_Checks);
+ return Scope_Suppress.Suppress (All_Checks);
else
return False;
end if;
@@ -4744,17 +4756,17 @@ package body Checks is
-- associated subtype.
Insert_Action (N,
- Make_Raise_Constraint_Error (Loc,
- Condition =>
- Make_Not_In (Loc,
- Left_Opnd =>
- Convert_To (Base_Type (Etype (Sub)),
- Duplicate_Subexpr_Move_Checks (Sub)),
- Right_Opnd =>
- Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Etype (A), Loc),
- Attribute_Name => Name_Range)),
- Reason => CE_Index_Check_Failed));
+ Make_Raise_Constraint_Error (Loc,
+ Condition =>
+ Make_Not_In (Loc,
+ Left_Opnd =>
+ Convert_To (Base_Type (Etype (Sub)),
+ Duplicate_Subexpr_Move_Checks (Sub)),
+ Right_Opnd =>
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Reference_To (Etype (A), Loc),
+ Attribute_Name => Name_Range)),
+ Reason => CE_Index_Check_Failed));
end if;
-- General case
@@ -4831,14 +4843,14 @@ package body Checks is
end if;
Insert_Action (N,
- Make_Raise_Constraint_Error (Loc,
- Condition =>
- Make_Not_In (Loc,
- Left_Opnd =>
- Convert_To (Base_Type (Etype (Sub)),
- Duplicate_Subexpr_Move_Checks (Sub)),
- Right_Opnd => Range_N),
- Reason => CE_Index_Check_Failed));
+ Make_Raise_Constraint_Error (Loc,
+ Condition =>
+ Make_Not_In (Loc,
+ Left_Opnd =>
+ Convert_To (Base_Type (Etype (Sub)),
+ Duplicate_Subexpr_Move_Checks (Sub)),
+ Right_Opnd => Range_N),
+ Reason => CE_Index_Check_Failed));
end if;
A_Idx := Next_Index (A_Idx);
@@ -5293,7 +5305,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Index_Check);
else
- return Scope_Suppress (Index_Check);
+ return Scope_Suppress.Suppress (Index_Check);
end if;
end Index_Checks_Suppressed;
@@ -5809,7 +5821,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Length_Check);
else
- return Scope_Suppress (Length_Check);
+ return Scope_Suppress.Suppress (Length_Check);
end if;
end Length_Checks_Suppressed;
@@ -5822,7 +5834,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Overflow_Check);
else
- return Scope_Suppress (Overflow_Check);
+ return Scope_Suppress.Suppress (Overflow_Check);
end if;
end Overflow_Checks_Suppressed;
@@ -5846,7 +5858,7 @@ package body Checks is
end if;
end if;
- return Scope_Suppress (Range_Check);
+ return Scope_Suppress.Suppress (Range_Check);
end Range_Checks_Suppressed;
-----------------------------------------
@@ -5863,7 +5875,10 @@ package body Checks is
begin
-- Immediate return if scope checks suppressed for either check
- if Scope_Suppress (Range_Check) or Scope_Suppress (Validity_Check) then
+ if Scope_Suppress.Suppress (Range_Check)
+ or
+ Scope_Suppress.Suppress (Validity_Check)
+ then
return True;
end if;
@@ -6648,12 +6663,6 @@ package body Checks is
LB := New_Occurrence_Of (Discriminal (Entity (LB)), Loc);
end if;
- if Nkind (HB) = N_Identifier
- and then Ekind (Entity (HB)) = E_Discriminant
- then
- HB := New_Occurrence_Of (Discriminal (Entity (HB)), Loc);
- end if;
-
Left_Opnd :=
Make_Op_Lt (Loc,
Left_Opnd =>
@@ -6665,28 +6674,10 @@ package body Checks is
(Base_Type (Typ),
Get_E_First_Or_Last (Loc, Typ, 0, Name_First)));
- if Base_Type (Typ) = Typ then
- return Left_Opnd;
-
- elsif Compile_Time_Known_Value (High_Bound (Scalar_Range (Typ)))
- and then
- Compile_Time_Known_Value (High_Bound (Scalar_Range
- (Base_Type (Typ))))
+ if Nkind (HB) = N_Identifier
+ and then Ekind (Entity (HB)) = E_Discriminant
then
- if Is_Floating_Point_Type (Typ) then
- if Expr_Value_R (High_Bound (Scalar_Range (Typ))) =
- Expr_Value_R (High_Bound (Scalar_Range (Base_Type (Typ))))
- then
- return Left_Opnd;
- end if;
-
- else
- if Expr_Value (High_Bound (Scalar_Range (Typ))) =
- Expr_Value (High_Bound (Scalar_Range (Base_Type (Typ))))
- then
- return Left_Opnd;
- end if;
- end if;
+ HB := New_Occurrence_Of (Discriminal (Entity (HB)), Loc);
end if;
Right_Opnd :=
@@ -7368,7 +7359,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Storage_Check);
else
- return Scope_Suppress (Storage_Check);
+ return Scope_Suppress.Suppress (Storage_Check);
end if;
end Storage_Checks_Suppressed;
@@ -7384,7 +7375,7 @@ package body Checks is
return Is_Check_Suppressed (E, Tag_Check);
end if;
- return Scope_Suppress (Tag_Check);
+ return Scope_Suppress.Suppress (Tag_Check);
end Tag_Checks_Suppressed;
--------------------------
@@ -7410,7 +7401,7 @@ package body Checks is
if Present (E) and then Checks_May_Be_Suppressed (E) then
return Is_Check_Suppressed (E, Validity_Check);
else
- return Scope_Suppress (Validity_Check);
+ return Scope_Suppress.Suppress (Validity_Check);
end if;
end Validity_Checks_Suppressed;
diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb
index cbcdf0cbb51..33f99c68cff 100644
--- a/gcc/ada/debug.adb
+++ b/gcc/ada/debug.adb
@@ -135,7 +135,7 @@ package body Debug is
-- d.O Dump internal SCO tables
-- d.P Previous (non-optimized) handling of length comparisons
-- d.Q
- -- d.R
+ -- d.R Restrictions in ali files in positional form
-- d.S Force Optimize_Alignment (Space)
-- d.T Force Optimize_Alignment (Time)
-- d.U Ignore indirect calls for static elaboration
@@ -642,6 +642,11 @@ package body Debug is
-- This is there in case we find a situation where the optimization
-- malfunctions, to provide a work around.
+ -- d.R As documented in lib-writ.ads, restrictions in the ali file can
+ -- have two forms, positional and named. The named notation is the
+ -- current preferred form, but the use of this debug switch will force
+ -- the use of the obsolescent positional form.
+
-- d.S Force Optimize_Alignment (Space) mode as the default
-- d.T Force Optimize_Alignment (Time) mode as the default
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
index d5fad3ecf54..6ef644a94cf 100644
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -2602,7 +2602,7 @@ package body Einfo is
function Reverse_Storage_Order (Id : E) return B is
begin
- pragma Assert (Is_Record_Type (Id));
+ pragma Assert (Is_Record_Type (Id) or else Is_Array_Type (Id));
return Flag93 (Base_Type (Id));
end Reverse_Storage_Order;
@@ -5163,7 +5163,8 @@ package body Einfo is
procedure Set_Reverse_Storage_Order (Id : E; V : B := True) is
begin
pragma Assert
- (Is_Record_Type (Id) and then Is_Base_Type (Id));
+ (Is_Base_Type (Id)
+ and then (Is_Record_Type (Id) or else Is_Array_Type (Id)));
Set_Flag93 (Id, V);
end Set_Reverse_Storage_Order;
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index 0f8250ac7ab..3da53018fae 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -3535,11 +3535,12 @@ package Einfo is
-- Ada 2005 AI-133), or must occupy an integral number of storage units.
-- Reverse_Storage_Order (Flag93) [base type only]
--- Present in all record type entities. Set if entity has a
+-- Present in all record and array type entities. Set if entity has a
-- Scalar_Storage_Order aspect (set by an aspect clause or attribute
-- definition clause) that has reversed the order of storage elements
--- from the default value. When this flag is set, the Bit_Order aspect
--- must be set to the same value.
+-- from the default value. When this flag is set for a record type,
+-- the Bit_Order aspect must be set to the same value (either explicitly
+-- or as the target default value).
-- RM_Size (Uint13)
-- Present in all type and subtype entities. Contains the value of
@@ -5020,6 +5021,7 @@ package Einfo is
-- Has_Component_Size_Clause (Flag68) (base type only)
-- Has_Pragma_Pack (Flag121) (impl base type only)
-- Is_Constrained (Flag12)
+ -- Reverse_Storage_Order (Flag93) (base type only)
-- Next_Index (synth)
-- Number_Dimensions (synth)
-- (plus type attributes)
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index aae88942453..bcfca25c6b0 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -238,6 +238,14 @@ package body Exp_Aggr is
-- This is the top-level routine to perform array aggregate expansion.
-- N is the N_Aggregate node to be expanded.
+ function Is_Two_Dim_Packed_Array (Typ : Entity_Id) return Boolean;
+
+ -- For two-dimensional packed aggregates with constant bounds and constant
+ -- components, it is preferable to pack the inner aggregates because the
+ -- whole matrix can then be presented to the back-end as a one-dimensional
+ -- list of literals. This is much more efficient than expanding into single
+ -- component assignments.
+
function Late_Expansion
(N : Node_Id;
Typ : Entity_Id;
@@ -275,6 +283,13 @@ package body Exp_Aggr is
-- the assignment can be done in place even if bounds are not static,
-- by converting it into a loop over the discrete range of the slice.
+ function Two_Dim_Packed_Array_Handled (N : Node_Id) return Boolean;
+ -- If the type of the aggregate is a two-dimensional bit_packed array
+ -- it may be transformed into an array of bytes with constant values,
+ -- and presented to the back-end as a static value. The function returns
+ -- false if this transformation cannot be performed. THis is similar to,
+ -- and reuses part of the machinery in Packed_Array_Aggregate_Handled.
+
------------------
-- Aggr_Size_OK --
------------------
@@ -294,15 +309,28 @@ package body Exp_Aggr is
-- The normal limit is 5000, but we increase this limit to 2**24 (about
-- 16 million) if Restrictions (No_Elaboration_Code) or Restrictions
- -- (No_Implicit_Loops) is specified, since in either case, we are at
- -- risk of declaring the program illegal because of this limit.
+ -- (No_Implicit_Loops) is specified, since in either case we are at
+ -- risk of declaring the program illegal because of this limit. We also
+ -- increase the limit when Static_Elaboration_Desired, given that this
+ -- means that objects are intended to be placed in data memory.
+
+ -- We also increase the limit if the aggregate is for a packed two-
+ -- dimensional array, because if components are static it is much more
+ -- efficient to construct a one-dimensional equivalent array with static
+ -- components.
Max_Aggr_Size : constant Nat :=
5000 + (2 ** 24 - 5000) *
Boolean'Pos
(Restriction_Active (No_Elaboration_Code)
- or else
- Restriction_Active (No_Implicit_Loops));
+ or else
+ Restriction_Active (No_Implicit_Loops)
+ or else
+ Is_Two_Dim_Packed_Array (Typ)
+ or else
+ ((Ekind (Current_Scope) = E_Package
+ and then
+ Static_Elaboration_Desired (Current_Scope))));
function Component_Count (T : Entity_Id) return Int;
-- The limit is applied to the total number of components that the
@@ -3511,11 +3539,12 @@ package body Exp_Aggr is
-- Check for maximum others replication. Note that
-- we skip this test if either of the restrictions
-- No_Elaboration_Code or No_Implicit_Loops is
- -- active, if this is a preelaborable unit or a
- -- predefined unit. This ensures that predefined
- -- units get the same level of constant folding in
- -- Ada 95 and Ada 2005, where their categorization
- -- has changed.
+ -- active, if this is a preelaborable unit or
+ -- a predefined unit, or if the unit must be
+ -- placed in data memory. This also ensures that
+ -- predefined units get the same level of constant
+ -- folding in Ada 95 and Ada 2005, where their
+ -- categorization has changed.
declare
P : constant Entity_Id :=
@@ -3527,6 +3556,11 @@ package body Exp_Aggr is
if Restriction_Active (No_Elaboration_Code)
or else Restriction_Active (No_Implicit_Loops)
+ or else
+ (Ekind (Current_Scope) = E_Package
+ and then
+ Static_Elaboration_Desired
+ (Current_Scope))
or else Is_Preelaborated (P)
or else (Ekind (P) = E_Package_Body
and then
@@ -3717,6 +3751,43 @@ package body Exp_Aggr is
Analyze_And_Resolve (N, Typ);
end if;
+
+ -- Is Static_Eaboration_Desired has been specified, diagnose aggregates
+ -- that will still require initialization code.
+
+ if (Ekind (Current_Scope) = E_Package
+ and then Static_Elaboration_Desired (Current_Scope))
+ and then Nkind (Parent (N)) = N_Object_Declaration
+ then
+ declare
+ Expr : Node_Id;
+
+ begin
+ if Nkind (N) = N_Aggregate and then Present (Expressions (N)) then
+ Expr := First (Expressions (N));
+ while Present (Expr) loop
+ if Nkind_In (Expr, N_Integer_Literal, N_Real_Literal)
+ or else
+ (Is_Entity_Name (Expr)
+ and then Ekind (Entity (Expr)) = E_Enumeration_Literal)
+ then
+ null;
+
+ else
+ Error_Msg_N
+ ("non-static object requires elaboration code?", N);
+ exit;
+ end if;
+
+ Next (Expr);
+ end loop;
+
+ if Present (Component_Associations (N)) then
+ Error_Msg_N ("object requires elaboration code?", N);
+ end if;
+ end if;
+ end;
+ end if;
end Convert_To_Positional;
----------------------------
@@ -4735,8 +4806,9 @@ package body Exp_Aggr is
if Nkind (N) /= N_Aggregate then
return;
- -- We are also done if the result is an analyzed aggregate
- -- This case could use more comments ???
+ -- We are also done if the result is an analyzed aggregate, indicating
+ -- that Convert_To_Positional succeeded and reanalyzed the rewritten
+ -- aggregate.
elsif Analyzed (N)
and then N /= Original_Node (N)
@@ -5843,6 +5915,19 @@ package body Exp_Aggr is
and then Typ = RTE (RE_Interface_Data_Element)));
end Is_Static_Dispatch_Table_Aggregate;
+ -----------------------------
+ -- Is_Two_Dim_Packed_Array --
+ -----------------------------
+
+ function Is_Two_Dim_Packed_Array (Typ : Entity_Id) return Boolean is
+ C : constant Int := UI_To_Int (Component_Size (Typ));
+ begin
+ return Number_Dimensions (Typ) = 2
+ and then Is_Bit_Packed_Array (Typ)
+ and then
+ (C = 1 or else C = 2 or else C = 4);
+ end Is_Two_Dim_Packed_Array;
+
--------------------
-- Late_Expansion --
--------------------
@@ -5922,11 +6007,14 @@ package body Exp_Aggr is
-- The current version of this procedure will handle at compile time
-- any array aggregate that meets these conditions:
- -- One dimensional, bit packed
+ -- One and two dimensional, bit packed
-- Underlying packed type is modular type
-- Bounds are within 32-bit Int range
-- All bounds and values are static
+ -- Note: for now, in the 2-D case, we only handle component sizes of
+ -- 1, 2, 4 (cases where an integral number of elements occupies a byte).
+
function Packed_Array_Aggregate_Handled (N : Node_Id) return Boolean is
Loc : constant Source_Ptr := Sloc (N);
Typ : constant Entity_Id := Etype (N);
@@ -5936,15 +6024,26 @@ package body Exp_Aggr is
-- Exception raised if this aggregate cannot be handled
begin
- -- For now, handle only one dimensional bit packed arrays
+ -- Handle one- or two dimensional bit packed array
if not Is_Bit_Packed_Array (Typ)
- or else Number_Dimensions (Typ) > 1
- or else not Is_Modular_Integer_Type (Packed_Array_Type (Typ))
+ or else Number_Dimensions (Typ) > 2
then
return False;
end if;
+ -- If two-dimensional, check whether it can be folded, and transformed
+ -- into a one-dimensional aggregate for the Packed_Array_Type of the
+ -- original type.
+
+ if Number_Dimensions (Typ) = 2 then
+ return Two_Dim_Packed_Array_Handled (N);
+ end if;
+
+ if not Is_Modular_Integer_Type (Packed_Array_Type (Typ)) then
+ return False;
+ end if;
+
if not Is_Scalar_Type (Component_Type (Typ))
and then Has_Non_Standard_Rep (Component_Type (Typ))
then
@@ -6038,8 +6137,9 @@ package body Exp_Aggr is
-- If the aggregate is not fully positional at this stage, then
-- convert it to positional form. Either this will fail, in which
-- case we can do nothing, or it will succeed, in which case we have
- -- succeeded in handling the aggregate, or it will stay an aggregate,
- -- in which case we have failed to handle this case.
+ -- succeeded in handling the aggregate and transforming it into a
+ -- modular value, or it will stay an aggregate, in which case we
+ -- have failed to create a packed value for it.
if Present (Component_Associations (N)) then
Convert_To_Positional
@@ -6077,35 +6177,7 @@ package body Exp_Aggr is
Expr : Node_Id;
-- Next expression from positional parameters of aggregate
- Enclosing_Aggregate : Node_Id;
-
- In_Reverse_Storage_Order_Record : Boolean;
- -- True if we are within an aggregate of a record type with
- -- reversed storage order.
-
begin
- -- Determine whether we are in a reversed storage order record
- -- aggregate.
-
- In_Reverse_Storage_Order_Record := False;
- Enclosing_Aggregate := Parent (N);
- while Present (Enclosing_Aggregate) loop
- if Nkind (Enclosing_Aggregate) = N_Component_Association then
- null;
-
- elsif Nkind (Enclosing_Aggregate) /= N_Aggregate then
- exit;
-
- elsif Is_Record_Type (Etype (Enclosing_Aggregate))
- and then Reverse_Storage_Order (Etype (Enclosing_Aggregate))
- then
- In_Reverse_Storage_Order_Record := True;
- exit;
- end if;
-
- Enclosing_Aggregate := Parent (Enclosing_Aggregate);
- end loop;
-
-- For little endian, we fill up the low order bits of the target
-- value. For big endian we fill up the high order bits of the
-- target value (which is a left justified modular value).
@@ -6118,7 +6190,7 @@ package body Exp_Aggr is
if Bytes_Big_Endian
xor Debug_Flag_8
- xor In_Reverse_Storage_Order_Record
+ xor Reverse_Storage_Order (Base_Type (Typ))
then
Shift := Csiz * (Len - 1);
Incr := -Csiz;
@@ -6145,9 +6217,7 @@ package body Exp_Aggr is
-- Now we can rewrite with the proper value
- Lit :=
- Make_Integer_Literal (Loc,
- Intval => Aggregate_Val);
+ Lit := Make_Integer_Literal (Loc, Intval => Aggregate_Val);
Set_Print_In_Hex (Lit);
-- Construct the expression using this literal. Note that it is
@@ -6266,7 +6336,8 @@ package body Exp_Aggr is
return False;
else
return Expr_Value (L1) /= Expr_Value (L2)
- or else Expr_Value (H1) /= Expr_Value (H2);
+ or else
+ Expr_Value (H1) /= Expr_Value (H2);
end if;
end if;
end Must_Slide;
@@ -6335,6 +6406,179 @@ package body Exp_Aggr is
end if;
end Safe_Slice_Assignment;
+ ----------------------------------
+ -- Two_Dim_Packed_Array_Handled --
+ ----------------------------------
+
+ function Two_Dim_Packed_Array_Handled (N : Node_Id) return Boolean is
+ Loc : constant Source_Ptr := Sloc (N);
+ Typ : constant Entity_Id := Etype (N);
+ Ctyp : constant Entity_Id := Component_Type (Typ);
+ Comp_Size : constant Int := UI_To_Int (Component_Size (Typ));
+ Packed_Array : constant Entity_Id := Packed_Array_Type (Base_Type (Typ));
+
+ One_Comp : Node_Id;
+ -- Expression in original aggregate
+
+ One_Dim : Node_Id;
+ -- One-dimensional subaggregate
+
+ begin
+
+ -- For now, only deal with cases where an integral number of elements
+ -- fit in a single byte. This includes the most common boolean case.
+
+ if not (Comp_Size = 1 or else
+ Comp_Size = 2 or else
+ Comp_Size = 4)
+ then
+ return False;
+ end if;
+
+ Convert_To_Positional
+ (N, Max_Others_Replicate => 64, Handle_Bit_Packed => True);
+
+ -- Verify that all components are static
+
+ if Nkind (N) = N_Aggregate
+ and then Compile_Time_Known_Aggregate (N)
+ then
+ null;
+
+ -- The aggregate may have been re-analyzed and converted already
+
+ elsif Nkind (N) /= N_Aggregate then
+ return True;
+
+ -- If component associations remain, the aggregate is not static
+
+ elsif Present (Component_Associations (N)) then
+ return False;
+
+ else
+ One_Dim := First (Expressions (N));
+ while Present (One_Dim) loop
+ if Present (Component_Associations (One_Dim)) then
+ return False;
+ end if;
+
+ One_Comp := First (Expressions (One_Dim));
+ while Present (One_Comp) loop
+ if not Is_OK_Static_Expression (One_Comp) then
+ return False;
+ end if;
+
+ Next (One_Comp);
+ end loop;
+
+ Next (One_Dim);
+ end loop;
+ end if;
+
+ -- Two-dimensional aggregate is now fully positional so pack one
+ -- dimension to create a static one-dimensional array, and rewrite
+ -- as an unchecked conversion to the original type.
+
+ declare
+ Byte_Size : constant Int := UI_To_Int (Component_Size (Packed_Array));
+ -- The packed array type is a byte array
+
+ Packed_Num : Int;
+ -- Number of components accumulated in current byte
+
+ Comps : List_Id;
+ -- Assembled list of packed values for equivalent aggregate
+
+ Comp_Val : Uint;
+ -- integer value of component
+
+ Incr : Int;
+ -- Step size for packing
+
+ Init_Shift : Int;
+ -- Endian-dependent start position for packing
+
+ Shift : Int;
+ -- Current insertion position
+
+ Val : Int;
+ -- Component of packed array being assembled.
+
+ begin
+ Comps := New_List;
+ Val := 0;
+ Packed_Num := 0;
+
+ -- Account for endianness. See corresponding comment in
+ -- Packed_Array_Aggregate_Handled concerning the following.
+
+ if Bytes_Big_Endian
+ xor Debug_Flag_8
+ xor Reverse_Storage_Order (Base_Type (Typ))
+ then
+ Init_Shift := Byte_Size - Comp_Size;
+ Incr := -Comp_Size;
+ else
+ Init_Shift := 0;
+ Incr := +Comp_Size;
+ end if;
+
+ Shift := Init_Shift;
+ One_Dim := First (Expressions (N));
+
+ -- Iterate over each subaggregate
+
+ while Present (One_Dim) loop
+ One_Comp := First (Expressions (One_Dim));
+
+ while Present (One_Comp) loop
+ if Packed_Num = Byte_Size / Comp_Size then
+
+ -- Byte is complete, add to list of expressions
+
+ Append (Make_Integer_Literal (Sloc (One_Dim), Val), Comps);
+ Val := 0;
+ Shift := Init_Shift;
+ Packed_Num := 0;
+
+ else
+ Comp_Val := Expr_Rep_Value (One_Comp);
+
+ -- Adjust for bias, and strip proper number of bits
+
+ if Has_Biased_Representation (Ctyp) then
+ Comp_Val := Comp_Val - Expr_Value (Type_Low_Bound (Ctyp));
+ end if;
+
+ Comp_Val := Comp_Val mod Uint_2 ** Comp_Size;
+ Val := UI_To_Int (Val + Comp_Val * Uint_2 ** Shift);
+ Shift := Shift + Incr;
+ One_Comp := Next (One_Comp);
+ Packed_Num := Packed_Num + 1;
+ end if;
+ end loop;
+
+ One_Dim := Next (One_Dim);
+ end loop;
+
+ if Packed_Num > 0 then
+
+ -- Add final incomplete byte if present
+
+ Append (Make_Integer_Literal (Sloc (One_Dim), Val), Comps);
+ end if;
+
+ Rewrite (N,
+ Unchecked_Convert_To (Typ,
+ Make_Qualified_Expression (Loc,
+ Subtype_Mark => New_Occurrence_Of (Packed_Array, Loc),
+ Expression =>
+ Make_Aggregate (Loc, Expressions => Comps))));
+ Analyze_And_Resolve (N);
+ return True;
+ end;
+ end Two_Dim_Packed_Array_Handled;
+
---------------------
-- Sort_Case_Table --
---------------------
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 54ce3ee0baa..105df466bec 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -815,11 +815,19 @@ package body Exp_Attr is
-- rewrite into reference to current instance.
if Is_Protected_Self_Reference (Pref)
- and then not
- (Nkind_In (Parent (N), N_Index_Or_Discriminant_Constraint,
- N_Discriminant_Association)
- and then Nkind (Parent (Parent (Parent (Parent (N))))) =
+ and then not
+ (Nkind_In (Parent (N), N_Index_Or_Discriminant_Constraint,
+ N_Discriminant_Association)
+ and then Nkind (Parent (Parent (Parent (Parent (N))))) =
N_Component_Definition)
+
+ -- No action needed for these attributes since the current instance
+ -- will be rewritten to be the name of the _object parameter
+ -- associated with the enclosing protected subprogram (see below).
+
+ and then Id /= Attribute_Access
+ and then Id /= Attribute_Unchecked_Access
+ and then Id /= Attribute_Unrestricted_Access
then
Rewrite (Pref, Concurrent_Ref (Pref));
Analyze (Pref);
@@ -827,6 +835,11 @@ package body Exp_Attr is
-- Remaining processing depends on specific attribute
+ -- Note: individual sections of the following case statement are
+ -- allowed to assume there is no code after the case statement, and
+ -- are legitimately allowed to execute return statements if they have
+ -- nothing more to do.
+
case Id is
-- Attributes related to Ada 2012 iterators (placeholder ???)
@@ -835,13 +848,14 @@ package body Exp_Attr is
Attribute_Default_Iterator |
Attribute_Implicit_Dereference |
Attribute_Iterator_Element |
- Attribute_Variable_Indexing => null;
+ Attribute_Variable_Indexing =>
+ null;
- -- Attributes related to Ada 2012 aspects
+ -- Internal attributes used to deal with Ada 2012 delayed aspects. These
+ -- were already rejected by the parser. Thus they shouldn't appear here.
- when Attribute_CPU |
- Attribute_Dispatching_Domain |
- Attribute_Interrupt_Priority => null;
+ when Internal_Attribute_Id =>
+ raise Program_Error;
------------
-- Access --
@@ -1027,10 +1041,36 @@ package body Exp_Attr is
New_Occurrence_Of (Formal, Loc)));
Set_Etype (N, Typ);
- -- The expression must appear in a default expression,
- -- (which in the initialization procedure is the
- -- right-hand side of an assignment), and not in a
- -- discriminant constraint.
+ elsif Is_Protected_Type (Entity (Pref)) then
+
+ -- No action needed for current instance located in a
+ -- component definition (expansion will occur in the
+ -- init proc)
+
+ if Is_Protected_Type (Current_Scope) then
+ null;
+
+ -- If the current instance reference is located in a
+ -- protected subprogram or entry then rewrite the access
+ -- attribute to be the name of the "_object" parameter.
+ -- An unchecked conversion is applied to ensure a type
+ -- match in cases of expander-generated calls (e.g. init
+ -- procs).
+
+ else
+ Formal :=
+ First_Entity
+ (Protected_Body_Subprogram (Current_Scope));
+ Rewrite (N,
+ Unchecked_Convert_To (Typ,
+ New_Occurrence_Of (Formal, Loc)));
+ Set_Etype (N, Typ);
+ end if;
+
+ -- The expression must appear in a default expression,
+ -- (which in the initialization procedure is the right-hand
+ -- side of an assignment), and not in a discriminant
+ -- constraint.
else
Par := Parent (N);
@@ -3065,29 +3105,6 @@ package body Exp_Attr is
end if;
end;
- ---------------
- -- Lock_Free --
- ---------------
-
- -- Rewrite the attribute reference with the value of Uses_Lock_Free
-
- when Attribute_Lock_Free => Lock_Free : declare
- Val : Entity_Id;
-
- begin
- if Uses_Lock_Free (Ptyp) then
- Val := Standard_True;
-
- else
- Val := Standard_False;
- end if;
-
- Rewrite (N,
- New_Occurrence_Of (Val, Loc));
-
- Analyze_And_Resolve (N, Standard_Boolean);
- end Lock_Free;
-
-------------
-- Machine --
-------------
@@ -3176,9 +3193,26 @@ package body Exp_Attr is
-- Max_Size_In_Storage_Elements --
----------------------------------
- when Attribute_Max_Size_In_Storage_Elements =>
+ when Attribute_Max_Size_In_Storage_Elements => declare
+ Typ : constant Entity_Id := Etype (N);
+ Attr : Node_Id;
+
+ Conversion_Added : Boolean := False;
+ -- A flag which tracks whether the original attribute has been
+ -- wrapped inside a type conversion.
+
+ begin
Apply_Universal_Integer_Attribute_Checks (N);
+ -- The universal integer check may sometimes add a type conversion,
+ -- retrieve the original attribute reference from the expression.
+
+ Attr := N;
+ if Nkind (Attr) = N_Type_Conversion then
+ Attr := Expression (Attr);
+ Conversion_Added := True;
+ end if;
+
-- Heap-allocated controlled objects contain two extra pointers which
-- are not part of the actual type. Transform the attribute reference
-- into a runtime expression to add the size of the hidden header.
@@ -3187,20 +3221,20 @@ package body Exp_Attr is
-- two pointers are already present in the type.
if VM_Target = No_VM
- and then Nkind (N) = N_Attribute_Reference
+ and then Nkind (Attr) = N_Attribute_Reference
and then Needs_Finalization (Ptyp)
- and then not Header_Size_Added (N)
+ and then not Header_Size_Added (Attr)
then
- Set_Header_Size_Added (N);
+ Set_Header_Size_Added (Attr);
-- Generate:
-- P'Max_Size_In_Storage_Elements +
-- Universal_Integer
-- (Header_Size_With_Padding (Ptyp'Alignment))
- Rewrite (N,
+ Rewrite (Attr,
Make_Op_Add (Loc,
- Left_Opnd => Relocate_Node (N),
+ Left_Opnd => Relocate_Node (Attr),
Right_Opnd =>
Convert_To (Universal_Integer,
Make_Function_Call (Loc,
@@ -3214,9 +3248,19 @@ package body Exp_Attr is
New_Reference_To (Ptyp, Loc),
Attribute_Name => Name_Alignment))))));
- Analyze (N);
+ -- Add a conversion to the target type
+
+ if not Conversion_Added then
+ Rewrite (Attr,
+ Make_Type_Conversion (Loc,
+ Subtype_Mark => New_Reference_To (Typ, Loc),
+ Expression => Relocate_Node (Attr)));
+ end if;
+
+ Analyze (Attr);
return;
end if;
+ end;
--------------------
-- Mechanism_Code --
@@ -3340,6 +3384,13 @@ package body Exp_Attr is
Asn_Stm : Node_Id;
begin
+ -- If assertions are disabled, no need to create the declaration
+ -- that preserves the value.
+
+ if not Assertions_Enabled then
+ return;
+ end if;
+
-- Find the nearest subprogram body, ignoring _Preconditions
Subp := N;
@@ -5320,6 +5371,13 @@ package body Exp_Attr is
Validity_Checks_On := False;
+ -- Retrieve the base type. Handle the case where the base type is a
+ -- private enumeration type.
+
+ if Is_Private_Type (Btyp) and then Present (Full_View (Btyp)) then
+ Btyp := Full_View (Btyp);
+ end if;
+
-- Floating-point case. This case is handled by the Valid attribute
-- code in the floating-point attribute run-time library.
@@ -5420,15 +5478,14 @@ package body Exp_Attr is
-- (X >= type(X)'First and then type(X)'Last <= X)
elsif Is_Enumeration_Type (Ptyp)
- and then Present (Enum_Pos_To_Rep (Base_Type (Ptyp)))
+ and then Present (Enum_Pos_To_Rep (Btyp))
then
Tst :=
Make_Op_Ge (Loc,
Left_Opnd =>
Make_Function_Call (Loc,
Name =>
- New_Reference_To
- (TSS (Base_Type (Ptyp), TSS_Rep_To_Pos), Loc),
+ New_Reference_To (TSS (Btyp, TSS_Rep_To_Pos), Loc),
Parameter_Associations => New_List (
Pref,
New_Occurrence_Of (Standard_False, Loc))),
@@ -5960,6 +6017,7 @@ package body Exp_Attr is
when Attribute_Abort_Signal |
Attribute_Address_Size |
+ Attribute_Atomic_Always_Lock_Free |
Attribute_Base |
Attribute_Class |
Attribute_Compiler_Version |
@@ -5977,6 +6035,7 @@ package body Exp_Attr is
Attribute_Has_Tagged_Values |
Attribute_Large |
Attribute_Last_Valid |
+ Attribute_Lock_Free |
Attribute_Machine_Emax |
Attribute_Machine_Emin |
Attribute_Machine_Mantissa |
@@ -6020,6 +6079,11 @@ package body Exp_Attr is
null;
end case;
+ -- Note: as mentioned earlier, individual sections of the above case
+ -- statement assume there is no code after the case statement, and are
+ -- legitimately allowed to execute return statements if they have nothing
+ -- more to do, so DO NOT add code at this point.
+
exception
when RE_Not_Available =>
return;
diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb
index e4584753fec..56cf190e2a8 100644
--- a/gcc/ada/exp_ch11.adb
+++ b/gcc/ada/exp_ch11.adb
@@ -1916,7 +1916,7 @@ package body Exp_Ch11 is
begin
if LCN = Statements (P)
or else
- LCN = SSE.Actions_To_Be_Wrapped_Before
+ LCN = SSE.Actions_To_Be_Wrapped_Before
or else
LCN = SSE.Actions_To_Be_Wrapped_After
then
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index 7f7aa6f6bb7..066b37d1775 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -202,6 +202,9 @@ package body Exp_Ch3 is
-- Check if E is defined in the RTL (in a child of Ada or System). Used
-- to avoid to bring in the overhead of _Input, _Output for tagged types.
+ function Is_User_Defined_Equality (Prim : Node_Id) return Boolean;
+ -- Returns true if Prim is a user defined equality function
+
function Is_Variable_Size_Array (E : Entity_Id) return Boolean;
-- Returns true if E has variable size components
@@ -237,6 +240,11 @@ package body Exp_Ch3 is
-- formals at some upper level). E provides the Sloc to be used for the
-- generated code.
+ function Make_Neq_Body (Tag_Typ : Entity_Id) return Node_Id;
+ -- Search for a renaming of the inequality dispatching primitive of
+ -- this tagged type. If found then build and return the corresponding
+ -- rename-as-body inequality subprogram; otherwise return Empty.
+
procedure Make_Predefined_Primitive_Specs
(Tag_Typ : Entity_Id;
Predef_List : out List_Id;
@@ -510,11 +518,11 @@ package body Exp_Ch3 is
---------------------------
procedure Build_Array_Init_Proc (A_Type : Entity_Id; Nod : Node_Id) is
- Loc : constant Source_Ptr := Sloc (Nod);
Comp_Type : constant Entity_Id := Component_Type (A_Type);
Body_Stmts : List_Id;
Has_Default_Init : Boolean;
Index_List : List_Id;
+ Loc : Source_Ptr;
Proc_Id : Entity_Id;
function Init_Component return List_Id;
@@ -623,6 +631,19 @@ package body Exp_Ch3 is
-- Start of processing for Build_Array_Init_Proc
begin
+ -- The init proc is created when analyzing the freeze node for the type,
+ -- but it properly belongs with the array type declaration. However, if
+ -- the freeze node is for a subtype of a type declared in another unit
+ -- it seems preferable to use the freeze node as the source location of
+ -- of the init proc. In any case this is preferable for gcov usage, and
+ -- the Sloc is not otherwise used by the compiler.
+
+ if In_Open_Scopes (Scope (A_Type)) then
+ Loc := Sloc (A_Type);
+ else
+ Loc := Sloc (Nod);
+ end if;
+
-- Nothing to generate in the following cases:
-- 1. Initialization is suppressed for the type
@@ -760,6 +781,140 @@ package body Exp_Ch3 is
end Build_Array_Init_Proc;
--------------------------------
+ -- Build_Array_Invariant_Proc --
+ --------------------------------
+
+ procedure Build_Array_Invariant_Proc (A_Type : Entity_Id; Nod : Node_Id) is
+ Loc : constant Source_Ptr := Sloc (Nod);
+
+ Object_Name : constant Name_Id := New_Internal_Name ('I');
+ -- Name for argument of invariant procedure
+
+ Object_Entity : constant Node_Id :=
+ Make_Defining_Identifier (Loc, Object_Name);
+ -- The procedure declaration entity for the argument
+
+ Body_Stmts : List_Id;
+ Index_List : List_Id;
+ Proc_Id : Entity_Id;
+ Proc_Body : Node_Id;
+
+ function Build_Component_Invariant_Call return Node_Id;
+ -- Create one statement to verify invariant on one array component,
+ -- designated by a full set of indexes.
+
+ function Check_One_Dimension (N : Int) return List_Id;
+ -- Create loop to check on one dimension of the array. The single
+ -- statement in the loop body checks the inner dimensions if any, or
+ -- else a single component. This procedure is called recursively, with
+ -- N being the dimension to be initialized. A call with N greater than
+ -- the number of dimensions generates the component initialization
+ -- and terminates the recursion.
+
+ ------------------------------------
+ -- Build_Component_Invariant_Call --
+ ------------------------------------
+
+ function Build_Component_Invariant_Call return Node_Id is
+ Comp : Node_Id;
+ begin
+ Comp :=
+ Make_Indexed_Component (Loc,
+ Prefix => New_Occurrence_Of (Object_Entity, Loc),
+ Expressions => Index_List);
+ return
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Invariant_Procedure (Component_Type (A_Type)), Loc),
+ Parameter_Associations => New_List (Comp));
+ end Build_Component_Invariant_Call;
+
+ -------------------------
+ -- Check_One_Dimension --
+ -------------------------
+
+ function Check_One_Dimension (N : Int) return List_Id is
+ Index : Entity_Id;
+
+ begin
+ -- If all dimensions dealt with, we simply check invariant of the
+ -- component.
+
+ if N > Number_Dimensions (A_Type) then
+ return New_List (Build_Component_Invariant_Call);
+
+ -- Else generate one loop and recurse
+
+ else
+ Index :=
+ Make_Defining_Identifier (Loc, New_External_Name ('J', N));
+
+ Append (New_Reference_To (Index, Loc), Index_List);
+
+ return New_List (
+ Make_Implicit_Loop_Statement (Nod,
+ Identifier => Empty,
+ Iteration_Scheme =>
+ Make_Iteration_Scheme (Loc,
+ Loop_Parameter_Specification =>
+ Make_Loop_Parameter_Specification (Loc,
+ Defining_Identifier => Index,
+ Discrete_Subtype_Definition =>
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ New_Occurrence_Of (Object_Entity, Loc),
+ Attribute_Name => Name_Range,
+ Expressions => New_List (
+ Make_Integer_Literal (Loc, N))))),
+ Statements => Check_One_Dimension (N + 1)));
+ end if;
+ end Check_One_Dimension;
+
+ -- Start of processing for Build_Array_Invariant_Proc
+
+ begin
+ Index_List := New_List;
+
+ Proc_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_External_Name (Chars (A_Type), "Invariant"));
+ Set_Has_Invariants (Proc_Id);
+ Set_Invariant_Procedure (A_Type, Proc_Id);
+
+ Body_Stmts := Check_One_Dimension (1);
+
+ Proc_Body :=
+ Make_Subprogram_Body (Loc,
+ Specification =>
+ Make_Procedure_Specification (Loc,
+ Defining_Unit_Name => Proc_Id,
+ Parameter_Specifications => New_List (
+ Make_Parameter_Specification (Loc,
+ Defining_Identifier => Object_Entity,
+ Parameter_Type => New_Occurrence_Of (A_Type, Loc)))),
+
+ Declarations => Empty_List,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => Body_Stmts));
+
+ Set_Ekind (Proc_Id, E_Procedure);
+ Set_Is_Public (Proc_Id, Is_Public (A_Type));
+ Set_Is_Internal (Proc_Id);
+ Set_Has_Completion (Proc_Id);
+
+ if not Debug_Generated_Code then
+ Set_Debug_Info_Off (Proc_Id);
+ end if;
+
+ -- The procedure body is placed after the freeze node for the type.
+
+ Insert_After (Nod, Proc_Body);
+ Analyze (Proc_Body);
+ end Build_Array_Invariant_Proc;
+
+ --------------------------------
-- Build_Discr_Checking_Funcs --
--------------------------------
@@ -2986,7 +3141,7 @@ package body Exp_Ch3 is
-- to make it a valid Ada tree.
if Is_Empty_List (Stmts) then
- Append (New_Node (N_Null_Statement, Loc), Stmts);
+ Append (Make_Null_Statement (Loc), Stmts);
end if;
return Stmts;
@@ -5505,6 +5660,10 @@ package body Exp_Ch3 is
then
Build_Array_Init_Proc (Base, N);
end if;
+
+ if Has_Invariants (Component_Type (Base)) then
+ Build_Array_Invariant_Proc (Base, N);
+ end if;
end Expand_Freeze_Array_Type;
-----------------------------------
@@ -7677,6 +7836,18 @@ package body Exp_Ch3 is
end loop;
end Init_Secondary_Tags;
+ ------------------------
+ -- Is_User_Defined_Eq --
+ ------------------------
+
+ function Is_User_Defined_Equality (Prim : Node_Id) return Boolean is
+ begin
+ return Chars (Prim) = Name_Op_Eq
+ and then Etype (First_Formal (Prim)) =
+ Etype (Next_Formal (First_Formal (Prim)))
+ and then Base_Type (Etype (Prim)) = Standard_Boolean;
+ end Is_User_Defined_Equality;
+
----------------------------
-- Is_Variable_Size_Array --
----------------------------
@@ -8140,6 +8311,175 @@ package body Exp_Ch3 is
end if;
end Make_Eq_If;
+ --------------------
+ -- Make_Neq_Body --
+ --------------------
+
+ function Make_Neq_Body (Tag_Typ : Entity_Id) return Node_Id is
+
+ function Is_Predefined_Neq_Renaming (Prim : Node_Id) return Boolean;
+ -- Returns true if Prim is a renaming of an unresolved predefined
+ -- inequality operation.
+
+ --------------------------------
+ -- Is_Predefined_Neq_Renaming --
+ --------------------------------
+
+ function Is_Predefined_Neq_Renaming (Prim : Node_Id) return Boolean is
+ begin
+ return Chars (Prim) /= Name_Op_Ne
+ and then Present (Alias (Prim))
+ and then Comes_From_Source (Prim)
+ and then Is_Intrinsic_Subprogram (Alias (Prim))
+ and then Chars (Alias (Prim)) = Name_Op_Ne;
+ end Is_Predefined_Neq_Renaming;
+
+ -- Local variables
+
+ Loc : constant Source_Ptr := Sloc (Parent (Tag_Typ));
+ Stmts : constant List_Id := New_List;
+ Decl : Node_Id;
+ Eq_Prim : Entity_Id;
+ Left_Op : Entity_Id;
+ Renaming_Prim : Entity_Id;
+ Right_Op : Entity_Id;
+ Target : Entity_Id;
+
+ -- Start of processing for Make_Neq_Body
+
+ begin
+ -- For a call on a renaming of a dispatching subprogram that is
+ -- overridden, if the overriding occurred before the renaming, then
+ -- the body executed is that of the overriding declaration, even if the
+ -- overriding declaration is not visible at the place of the renaming;
+ -- otherwise, the inherited or predefined subprogram is called, see
+ -- (RM 8.5.4(8))
+
+ -- Stage 1: Search for a renaming of the inequality primitive and also
+ -- search for an overriding of the equality primitive located before the
+ -- renaming declaration.
+
+ declare
+ Elmt : Elmt_Id;
+ Prim : Node_Id;
+
+ begin
+ Eq_Prim := Empty;
+ Renaming_Prim := Empty;
+
+ Elmt := First_Elmt (Primitive_Operations (Tag_Typ));
+ while Present (Elmt) loop
+ Prim := Node (Elmt);
+
+ if Is_User_Defined_Equality (Prim)
+ and then No (Alias (Prim))
+ then
+ if No (Renaming_Prim) then
+ pragma Assert (No (Eq_Prim));
+ Eq_Prim := Prim;
+ end if;
+
+ elsif Is_Predefined_Neq_Renaming (Prim) then
+ Renaming_Prim := Prim;
+ end if;
+
+ Next_Elmt (Elmt);
+ end loop;
+ end;
+
+ -- No further action needed if no renaming was found
+
+ if No (Renaming_Prim) then
+ return Empty;
+ end if;
+
+ -- Stage 2: Replace the renaming declaration by a subprogram declaration
+ -- (required to add its body)
+
+ Decl := Parent (Parent (Renaming_Prim));
+ Rewrite (Decl,
+ Make_Subprogram_Declaration (Loc,
+ Specification => Specification (Decl)));
+ Set_Analyzed (Decl);
+
+ -- Remove the decoration of intrinsic renaming subprogram
+
+ Set_Is_Intrinsic_Subprogram (Renaming_Prim, False);
+ Set_Convention (Renaming_Prim, Convention_Ada);
+ Set_Alias (Renaming_Prim, Empty);
+ Set_Has_Completion (Renaming_Prim, False);
+
+ -- Stage 3: Build the corresponding body
+
+ Left_Op := First_Formal (Renaming_Prim);
+ Right_Op := Next_Formal (Left_Op);
+
+ Decl :=
+ Predef_Spec_Or_Body (Loc,
+ Tag_Typ => Tag_Typ,
+ Name => Chars (Renaming_Prim),
+ Profile => New_List (
+ Make_Parameter_Specification (Loc,
+ Defining_Identifier =>
+ Make_Defining_Identifier (Loc, Chars (Left_Op)),
+ Parameter_Type => New_Reference_To (Tag_Typ, Loc)),
+
+ Make_Parameter_Specification (Loc,
+ Defining_Identifier =>
+ Make_Defining_Identifier (Loc, Chars (Right_Op)),
+ Parameter_Type => New_Reference_To (Tag_Typ, Loc))),
+
+ Ret_Type => Standard_Boolean,
+ For_Body => True);
+
+ -- If the overriding of the equality primitive occurred before the
+ -- renaming, then generate:
+
+ -- function <Neq_Name> (X : Y : Typ) return Boolean is
+ -- begin
+ -- return not Oeq (X, Y);
+ -- end;
+
+ if Present (Eq_Prim) then
+ Target := Eq_Prim;
+
+ -- Otherwise build a nested subprogram which performs the predefined
+ -- evaluation of the equality operator. That is, generate:
+
+ -- function <Neq_Name> (X : Y : Typ) return Boolean is
+ -- function Oeq (X : Y) return Boolean is
+ -- begin
+ -- <<body of default implementation>>
+ -- end;
+ -- begin
+ -- return not Oeq (X, Y);
+ -- end;
+
+ else
+ declare
+ Local_Subp : Node_Id;
+ begin
+ Local_Subp := Make_Eq_Body (Tag_Typ, Name_Op_Eq);
+ Set_Declarations (Decl, New_List (Local_Subp));
+ Target := Defining_Entity (Local_Subp);
+ end;
+ end if;
+
+ Append_To (Stmts,
+ Make_Simple_Return_Statement (Loc,
+ Expression =>
+ Make_Op_Not (Loc,
+ Make_Function_Call (Loc,
+ Name => New_Reference_To (Target, Loc),
+ Parameter_Associations => New_List (
+ Make_Identifier (Loc, Chars (Left_Op)),
+ Make_Identifier (Loc, Chars (Right_Op)))))));
+
+ Set_Handled_Statement_Sequence
+ (Decl, Make_Handled_Sequence_Of_Statements (Loc, Stmts));
+ return Decl;
+ end Make_Neq_Body;
+
-------------------------------
-- Make_Null_Procedure_Specs --
-------------------------------
@@ -8238,13 +8578,6 @@ package body Exp_Ch3 is
Predef_List : out List_Id;
Renamed_Eq : out Entity_Id)
is
- Loc : constant Source_Ptr := Sloc (Tag_Typ);
- Res : constant List_Id := New_List;
- Eq_Name : Name_Id := Name_Op_Eq;
- Eq_Needed : Boolean;
- Eq_Spec : Node_Id;
- Prim : Elmt_Id;
-
function Is_Predefined_Eq_Renaming (Prim : Node_Id) return Boolean;
-- Returns true if Prim is a renaming of an unresolved predefined
-- equality operation.
@@ -8262,6 +8595,19 @@ package body Exp_Ch3 is
and then Chars (Alias (Prim)) = Name_Op_Eq;
end Is_Predefined_Eq_Renaming;
+ -- Local variables
+
+ Loc : constant Source_Ptr := Sloc (Tag_Typ);
+ Res : constant List_Id := New_List;
+ Eq_Name : Name_Id := Name_Op_Eq;
+ Eq_Needed : Boolean;
+ Eq_Spec : Node_Id;
+ Prim : Elmt_Id;
+
+ Has_Predef_Eq_Renaming : Boolean := False;
+ -- Set to True if Tag_Typ has a primitive that renames the predefined
+ -- equality operator. Used to implement (RM 8-5-4(8)).
+
-- Start of processing for Make_Predefined_Primitive_Specs
begin
@@ -8299,9 +8645,9 @@ package body Exp_Ch3 is
end loop;
end;
- -- Spec of "=" is expanded if the type is not limited and if a
- -- user defined "=" was not already declared for the non-full
- -- view of a private extension
+ -- Spec of "=" is expanded if the type is not limited and if a user
+ -- defined "=" was not already declared for the non-full view of a
+ -- private extension
if not Is_Limited_Type (Tag_Typ) then
Eq_Needed := True;
@@ -8311,21 +8657,18 @@ package body Exp_Ch3 is
-- If a primitive is encountered that renames the predefined
-- equality operator before reaching any explicit equality
-- primitive, then we still need to create a predefined equality
- -- function, because calls to it can occur via the renaming. A new
- -- name is created for the equality to avoid conflicting with any
- -- user-defined equality. (Note that this doesn't account for
+ -- function, because calls to it can occur via the renaming. A
+ -- new name is created for the equality to avoid conflicting with
+ -- any user-defined equality. (Note that this doesn't account for
-- renamings of equality nested within subpackages???)
if Is_Predefined_Eq_Renaming (Node (Prim)) then
+ Has_Predef_Eq_Renaming := True;
Eq_Name := New_External_Name (Chars (Node (Prim)), 'E');
-- User-defined equality
- elsif Chars (Node (Prim)) = Name_Op_Eq
- and then Etype (First_Formal (Node (Prim))) =
- Etype (Next_Formal (First_Formal (Node (Prim))))
- and then Base_Type (Etype (Node (Prim))) = Standard_Boolean
- then
+ elsif Is_User_Defined_Equality (Node (Prim)) then
if No (Alias (Node (Prim)))
or else Nkind (Unit_Declaration_Node (Node (Prim))) =
N_Subprogram_Renaming_Declaration
@@ -8394,7 +8737,7 @@ package body Exp_Ch3 is
Ret_Type => Standard_Boolean);
Append_To (Res, Eq_Spec);
- if Eq_Name /= Name_Op_Eq then
+ if Has_Predef_Eq_Renaming then
Renamed_Eq := Defining_Unit_Name (Specification (Eq_Spec));
Prim := First_Elmt (Primitive_Operations (Tag_Typ));
@@ -8966,6 +9309,14 @@ package body Exp_Ch3 is
Append_To (Res, Decl);
end if;
+ -- Body for inequality (if required!)
+
+ Decl := Make_Neq_Body (Tag_Typ);
+
+ if Present (Decl) then
+ Append_To (Res, Decl);
+ end if;
+
-- Body for dispatching assignment
Decl :=
diff --git a/gcc/ada/exp_ch3.ads b/gcc/ada/exp_ch3.ads
index 8cedc0b05cd..1abc4567a33 100644
--- a/gcc/ada/exp_ch3.ads
+++ b/gcc/ada/exp_ch3.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -46,6 +46,12 @@ package Exp_Ch3 is
procedure Expand_Record_Extension (T : Entity_Id; Def : Node_Id);
-- Add a field _parent in the extension part of the record
+ procedure Build_Array_Invariant_Proc (A_Type : Entity_Id; Nod : Node_Id);
+ -- If the component of type of array type has invariants, build procedure
+ -- that checks invariant on all components of the array. Ada 2012 specifies
+ -- that an invariant on some type T must be applied to in-out parameters
+ -- and return values that include a part of type T.
+
procedure Build_Discr_Checking_Funcs (N : Node_Id);
-- Builds function which checks whether the component name is consistent
-- with the current discriminants. N is the full type declaration node,
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 5ed4e8afaca..9cc8865b64d 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -659,7 +659,7 @@ package body Exp_Ch4 is
-- Ada 2005 (AI-344): For an allocator with a class-wide designated
-- type, generate an accessibility check to verify that the level of the
-- type of the created object is not deeper than the level of the access
- -- type. If the type of the qualified expression is class- wide, then
+ -- type. If the type of the qualified expression is class-wide, then
-- always generate the check (except in the case where it is known to be
-- unnecessary, see comment below). Otherwise, only generate the check
-- if the level of the qualified expression type is statically deeper
@@ -690,17 +690,22 @@ package body Exp_Ch4 is
(Ref : Node_Id;
Built_In_Place : Boolean := False)
is
- New_Node : Node_Id;
+ Pool_Id : constant Entity_Id := Associated_Storage_Pool (PtrT);
+ Cond : Node_Id;
+ Free_Stmt : Node_Id;
+ Obj_Ref : Node_Id;
+ Stmts : List_Id;
begin
if Ada_Version >= Ada_2005
and then Is_Class_Wide_Type (DesigT)
- and then not Scope_Suppress (Accessibility_Check)
+ and then not Scope_Suppress.Suppress (Accessibility_Check)
and then
(Type_Access_Level (Etype (Exp)) > Type_Access_Level (PtrT)
or else
(Is_Class_Wide_Type (Etype (Exp))
and then Scope (PtrT) /= Current_Scope))
+ and then (Tagged_Type_Expansion or else VM_Target /= No_VM)
then
-- If the allocator was built in place, Ref is already a reference
-- to the access object initialized to the result of the allocator
@@ -712,39 +717,109 @@ package body Exp_Ch4 is
if Built_In_Place then
Remove_Side_Effects (Ref);
- New_Node := New_Copy (Ref);
+ Obj_Ref := New_Copy (Ref);
else
- New_Node := New_Reference_To (Ref, Loc);
+ Obj_Ref := New_Reference_To (Ref, Loc);
end if;
- New_Node :=
+ -- Step 1: Create the object clean up code
+
+ Stmts := New_List;
+
+ -- Create an explicit free statement to clean up the allocated
+ -- object in case the accessibility check fails. Generate:
+
+ -- Free (Obj_Ref);
+
+ Free_Stmt := Make_Free_Statement (Loc, New_Copy (Obj_Ref));
+ Set_Storage_Pool (Free_Stmt, Pool_Id);
+
+ Append_To (Stmts, Free_Stmt);
+
+ -- Finalize the object (if applicable), but wrap the call inside
+ -- a block to ensure that the object would still be deallocated in
+ -- case the finalization fails. Generate:
+
+ -- begin
+ -- [Deep_]Finalize (Obj_Ref.all);
+ -- exception
+ -- when others =>
+ -- Free (Obj_Ref);
+ -- raise;
+ -- end;
+
+ if Needs_Finalization (DesigT) then
+ Prepend_To (Stmts,
+ Make_Block_Statement (Loc,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => New_List (
+ Make_Final_Call (
+ Obj_Ref =>
+ Make_Explicit_Dereference (Loc,
+ Prefix => New_Copy (Obj_Ref)),
+ Typ => DesigT)),
+
+ Exception_Handlers => New_List (
+ Make_Exception_Handler (Loc,
+ Exception_Choices => New_List (
+ Make_Others_Choice (Loc)),
+ Statements => New_List (
+ New_Copy_Tree (Free_Stmt),
+ Make_Raise_Statement (Loc)))))));
+ end if;
+
+ -- Signal the accessibility failure through a Program_Error
+
+ Append_To (Stmts,
+ Make_Raise_Program_Error (Loc,
+ Condition => New_Reference_To (Standard_True, Loc),
+ Reason => PE_Accessibility_Check_Failed));
+
+ -- Step 2: Create the accessibility comparison
+
+ -- Generate:
+ -- Ref'Tag
+
+ Obj_Ref :=
Make_Attribute_Reference (Loc,
- Prefix => New_Node,
+ Prefix => Obj_Ref,
Attribute_Name => Name_Tag);
+ -- For tagged types, determine the accessibility level by looking
+ -- at the type specific data of the dispatch table. Generate:
+
+ -- Type_Specific_Data (Address (Ref'Tag)).Access_Level
+
if Tagged_Type_Expansion then
- New_Node := Build_Get_Access_Level (Loc, New_Node);
+ Cond := Build_Get_Access_Level (Loc, Obj_Ref);
- elsif VM_Target /= No_VM then
- New_Node :=
- Make_Function_Call (Loc,
- Name => New_Reference_To (RTE (RE_Get_Access_Level), Loc),
- Parameter_Associations => New_List (New_Node));
+ -- Use a runtime call to determine the accessibility level when
+ -- compiling on virtual machine targets. Generate:
- -- Cannot generate the runtime check
+ -- Get_Access_Level (Ref'Tag)
else
- return;
+ Cond :=
+ Make_Function_Call (Loc,
+ Name =>
+ New_Reference_To (RTE (RE_Get_Access_Level), Loc),
+ Parameter_Associations => New_List (Obj_Ref));
end if;
+ Cond :=
+ Make_Op_Gt (Loc,
+ Left_Opnd => Cond,
+ Right_Opnd =>
+ Make_Integer_Literal (Loc, Type_Access_Level (PtrT)));
+
+ -- Due to the complexity and side effects of the check, utilize an
+ -- if statement instead of the regular Program_Error circuitry.
+
Insert_Action (N,
- Make_Raise_Program_Error (Loc,
- Condition =>
- Make_Op_Gt (Loc,
- Left_Opnd => New_Node,
- Right_Opnd =>
- Make_Integer_Literal (Loc, Type_Access_Level (PtrT))),
- Reason => PE_Accessibility_Check_Failed));
+ Make_If_Statement (Loc,
+ Condition => Cond,
+ Then_Statements => Stmts));
end if;
end Apply_Accessibility_Check;
@@ -11327,12 +11402,7 @@ package body Exp_Ch4 is
if AV = False then
if True_Result or False_Result then
- if True_Result then
- Result := Standard_True;
- else
- Result := Standard_False;
- end if;
-
+ Result := Boolean_Literals (True_Result);
Rewrite (N,
Convert_To (Typ,
New_Occurrence_Of (Result, Sloc (N))));
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index a9f6ce46e5e..a1aaa37363e 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -344,15 +344,6 @@ package body Exp_Ch5 is
elsif Has_Controlled_Component (L_Type) then
Loop_Required := True;
- -- If changing scalar storage order and assigning a bit packed array,
- -- force loop expansion.
-
- elsif Is_Bit_Packed_Array (L_Type)
- and then (In_Reverse_Storage_Order_Record (Rhs) /=
- In_Reverse_Storage_Order_Record (Lhs))
- then
- Loop_Required := True;
-
-- If object is atomic, we cannot tolerate a loop
elsif Is_Atomic_Object (Act_Lhs)
@@ -3213,6 +3204,13 @@ package body Exp_Ch5 is
Statements => Stats,
End_Label => Empty);
+ -- If present, preserve identifier of loop, which can be used in
+ -- an exit statement in the body.
+
+ if Present (Identifier (N)) then
+ Set_Identifier (New_Loop, Relocate_Node (Identifier (N)));
+ end if;
+
-- Create the declarations for Iterator and cursor and insert them
-- before the source loop. Given that the domain of iteration is
-- already an entity, the iterator is just a renaming of that
@@ -3389,6 +3387,13 @@ package body Exp_Ch5 is
end loop;
end if;
+ -- If original loop has a name, preserve it so it can be recognized by
+ -- an exit statement in the body of the rewritten loop.
+
+ if Present (Identifier (N)) then
+ Set_Identifier (Core_Loop, Relocate_Node (Identifier (N)));
+ end if;
+
Rewrite (N, Core_Loop);
Analyze (N);
end Expand_Iterator_Loop_Over_Array;
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index eb37fa3c2fa..930f82befc0 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -4835,8 +4835,8 @@ package body Exp_Ch6 is
Ret_Type := Etype (Subp);
end if;
- -- Create temporaries for the actuals that are expressions, or that
- -- are scalars and require copying to preserve semantics.
+ -- Create temporaries for the actuals that are expressions, or that are
+ -- scalars and require copying to preserve semantics.
F := First_Formal (Subp);
A := First_Actual (N);
@@ -4846,6 +4846,14 @@ package body Exp_Ch6 is
return;
end if;
+ -- Reset Last_Assignment for any parameters of mode out or in out, to
+ -- prevent spurious warnings about overwriting for assignments to the
+ -- formal in the inlined code.
+
+ if Is_Entity_Name (A) and then Ekind (F) /= E_In_Parameter then
+ Set_Last_Assignment (Entity (A), Empty);
+ end if;
+
-- If the argument may be a controlling argument in a call within
-- the inlined body, we must preserve its classwide nature to insure
-- that dynamic dispatching take place subsequently. If the formal
@@ -4878,9 +4886,9 @@ package body Exp_Ch6 is
(not Is_Scalar_Type (Etype (A))
or else Ekind (Entity (A)) = E_Enumeration_Literal))
- -- When the actual is an identifier and the corresponding formal
- -- is used only once in the original body, the formal can be
- -- substituted directly with the actual parameter.
+ -- When the actual is an identifier and the corresponding formal is
+ -- used only once in the original body, the formal can be substituted
+ -- directly with the actual parameter.
or else (Nkind (A) = N_Identifier
and then Formal_Is_Used_Once (F))
@@ -4926,8 +4934,8 @@ package body Exp_Ch6 is
Set_Sloc (New_A, Sloc (N));
- -- If the actual has a by-reference type, it cannot be copied, so
- -- its value is captured in a renaming declaration. Otherwise
+ -- If the actual has a by-reference type, it cannot be copied,
+ -- so its value is captured in a renaming declaration. Otherwise
-- declare a local constant initialized with the actual.
-- We also use a renaming declaration for expressions of an array
@@ -5151,8 +5159,8 @@ package body Exp_Ch6 is
end if;
end if;
- -- Analyze Blk with In_Inlined_Body set, to avoid spurious errors on
- -- conflicting private views that Gigi would ignore. If this is a
+ -- Analyze Blk with In_Inlined_Body set, to avoid spurious errors
+ -- on conflicting private views that Gigi would ignore. If this is a
-- predefined unit, analyze with checks off, as is done in the non-
-- inlined run-time units.
@@ -7466,7 +7474,7 @@ package body Exp_Ch6 is
elsif Ada_Version >= Ada_2005
and then Tagged_Type_Expansion
and then Is_Class_Wide_Type (R_Type)
- and then not Scope_Suppress (Accessibility_Check)
+ and then not Scope_Suppress.Suppress (Accessibility_Check)
and then
(Is_Class_Wide_Type (Etype (Exp))
or else Nkind_In (Exp, N_Type_Conversion,
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index a1d5634bb47..725cd2ac4b6 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -2645,7 +2645,18 @@ package body Exp_Ch7 is
Obj_Ref => Obj_Ref,
Typ => Obj_Typ);
- if Exceptions_OK then
+ -- For CodePeer, the exception handlers normally generated here
+ -- generate complex flowgraphs which result in capacity problems.
+ -- Omitting these handlers for CodePeer is justified as follows:
+
+ -- If a handler is dead, then omitting it is surely ok
+
+ -- If a handler is live, then CodePeer should flag the
+ -- potentially-exception-raising construct that causes it
+ -- to be live. That is what we are interested in, not what
+ -- happens after the exception is raised.
+
+ if Exceptions_OK and not CodePeer_Mode then
Fin_Stmts := New_List (
Make_Block_Statement (Loc,
Handled_Statement_Sequence =>
@@ -4334,9 +4345,13 @@ package body Exp_Ch7 is
------------------------------------
procedure Insert_Actions_In_Scope_Around (N : Node_Id) is
- SE : Scope_Stack_Entry renames Scope_Stack.Table (Scope_Stack.Last);
- After : List_Id renames SE.Actions_To_Be_Wrapped_After;
- Before : List_Id renames SE.Actions_To_Be_Wrapped_Before;
+ After : constant List_Id :=
+ Scope_Stack.Table (Scope_Stack.Last).Actions_To_Be_Wrapped_After;
+ Before : constant List_Id :=
+ Scope_Stack.Table (Scope_Stack.Last).Actions_To_Be_Wrapped_Before;
+ -- Note: We used to use renamings of Scope_Stack.Table (Scope_Stack.
+ -- Last), but this was incorrect as Process_Transient_Object may
+ -- introduce new scopes and cause a reallocation of Scope_Stack.Table.
procedure Process_Transient_Objects
(First_Object : Node_Id;
@@ -4369,12 +4384,16 @@ package body Exp_Ch7 is
function Requires_Hooking return Boolean is
begin
-- The context is either a procedure or function call or an object
- -- declaration initialized by a function call. In all these cases,
- -- the calls might raise an exception.
+ -- declaration initialized by a function call. Note that in the
+ -- latter case, a function call that returns on the secondary
+ -- stack is usually rewritten into something else. Its proper
+ -- detection requires examination of the original initialization
+ -- expression.
return Nkind (N) in N_Subprogram_Call
- or else (Nkind (N) = N_Object_Declaration
- and then Nkind (Expression (N)) = N_Function_Call);
+ or else (Nkind (N) = N_Object_Declaration
+ and then Nkind (Original_Node (Expression (N))) =
+ N_Function_Call);
end Requires_Hooking;
-- Local variables
@@ -4390,10 +4409,13 @@ package body Exp_Ch7 is
Obj_Id : Entity_Id;
Obj_Ref : Node_Id;
Obj_Typ : Entity_Id;
+ Prev_Fin : Node_Id := Empty;
Stmt : Node_Id;
Stmts : List_Id;
Temp_Id : Entity_Id;
+ -- Start of processing for Process_Transient_Objects
+
begin
-- Examine all objects in the list First_Object .. Last_Object
@@ -4428,7 +4450,6 @@ package body Exp_Ch7 is
Fin_Decls := New_List;
Build_Object_Declarations (Fin_Data, Fin_Decls, Loc);
- Insert_List_Before_And_Analyze (First_Object, Fin_Decls);
Built := True;
end if;
@@ -4560,56 +4581,33 @@ package body Exp_Ch7 is
Exception_Handlers => New_List (
Build_Exception_Handler (Fin_Data))));
- Insert_After_And_Analyze (Last_Object, Fin_Block);
+ -- The single raise statement must be inserted after all the
+ -- finalization blocks, and we put everything into a wrapper
+ -- block to clearly expose the construct to the back-end.
+
+ -- This requirement for "clearly expose" must be properly
+ -- documented in sinfo/einfo ???
- -- The raise statement must be inserted after all the
- -- finalization blocks.
+ if Present (Prev_Fin) then
+ Insert_Before_And_Analyze (Prev_Fin, Fin_Block);
+ else
+ Insert_After_And_Analyze (Last_Object,
+ Make_Block_Statement (Loc,
+ Declarations => Fin_Decls,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => New_List (Fin_Block))));
- if No (Last_Fin) then
Last_Fin := Fin_Block;
end if;
- -- When the associated node is an array object, the expander may
- -- sometimes generate a loop and create transient objects inside
- -- the loop.
-
- elsif Nkind (Related_Node) = N_Object_Declaration
- and then Is_Array_Type
- (Base_Type
- (Etype (Defining_Identifier (Related_Node))))
- and then Nkind (Stmt) = N_Loop_Statement
- then
- declare
- Block_HSS : Node_Id := First (Statements (Stmt));
-
- begin
- -- The loop statements may have been wrapped in a block by
- -- Process_Statements_For_Controlled_Objects, inspect the
- -- handled sequence of statements.
-
- if Nkind (Block_HSS) = N_Block_Statement
- and then No (Next (Block_HSS))
- then
- Block_HSS := Handled_Statement_Sequence (Block_HSS);
-
- Process_Transient_Objects
- (First_Object => First (Statements (Block_HSS)),
- Last_Object => Last (Statements (Block_HSS)),
- Related_Node => Related_Node);
-
- -- Inspect the statements of the loop
-
- else
- Process_Transient_Objects
- (First_Object => First (Statements (Stmt)),
- Last_Object => Last (Statements (Stmt)),
- Related_Node => Related_Node);
- end if;
- end;
+ Prev_Fin := Fin_Block;
+ end if;
- -- Terminate the scan after the last object has been processed
+ -- Terminate the scan after the last object has been processed to
+ -- avoid touching unrelated code.
- elsif Stmt = Last_Object then
+ if Stmt = Last_Object then
exit;
end if;
@@ -4637,10 +4635,10 @@ package body Exp_Ch7 is
end if;
declare
- Node_To_Wrap : constant Node_Id := Node_To_Be_Wrapped;
- First_Obj : Node_Id;
- Last_Obj : Node_Id;
- Target : Node_Id;
+ Node_To_Wrap : constant Node_Id := Node_To_Be_Wrapped;
+ First_Obj : Node_Id;
+ Last_Obj : Node_Id;
+ Target : Node_Id;
begin
-- If the node to be wrapped is the trigger of an asynchronous
@@ -4700,11 +4698,13 @@ package body Exp_Ch7 is
-- Reset the action lists
if Present (Before) then
- Before := No_List;
+ Scope_Stack.Table (Scope_Stack.Last).
+ Actions_To_Be_Wrapped_Before := No_List;
end if;
if Present (After) then
- After := No_List;
+ Scope_Stack.Table (Scope_Stack.Last).
+ Actions_To_Be_Wrapped_After := No_List;
end if;
end;
end Insert_Actions_In_Scope_Around;
diff --git a/gcc/ada/exp_ch8.adb b/gcc/ada/exp_ch8.adb
index a0e9d4cf1be..3b5c7d3ae64 100644
--- a/gcc/ada/exp_ch8.adb
+++ b/gcc/ada/exp_ch8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -239,8 +239,52 @@ package body Exp_Ch8 is
----------------------------------------------
procedure Expand_N_Subprogram_Renaming_Declaration (N : Node_Id) is
+ Loc : constant Source_Ptr := Sloc (N);
+ Id : constant Entity_Id := Defining_Entity (N);
+
+ function Build_Body_For_Renaming return Node_Id;
+ -- Build and return the body for the renaming declaration of an equality
+ -- or inequality operator.
+
+ -----------------------------
+ -- Build_Body_For_Renaming --
+ -----------------------------
+
+ function Build_Body_For_Renaming return Node_Id is
+ Body_Id : Entity_Id;
+ Decl : Node_Id;
+
+ begin
+ Set_Alias (Id, Empty);
+ Set_Has_Completion (Id, False);
+ Rewrite (N,
+ Make_Subprogram_Declaration (Sloc (N),
+ Specification => Specification (N)));
+ Set_Has_Delayed_Freeze (Id);
+
+ Body_Id := Make_Defining_Identifier (Sloc (N), Chars (Id));
+ Set_Debug_Info_Needed (Body_Id);
+
+ Decl :=
+ Make_Subprogram_Body (Loc,
+ Specification =>
+ Make_Function_Specification (Loc,
+ Defining_Unit_Name => Body_Id,
+ Parameter_Specifications => Copy_Parameter_List (Id),
+ Result_Definition =>
+ New_Occurrence_Of (Standard_Boolean, Loc)),
+ Declarations => Empty_List,
+ Handled_Statement_Sequence => Empty);
+
+ return Decl;
+ end Build_Body_For_Renaming;
+
+ -- Local variables
+
Nam : constant Node_Id := Name (N);
+ -- Start of processing for Expand_N_Subprogram_Renaming_Declaration
+
begin
-- When the prefix of the name is a function call, we must force the
-- call to be made by removing side effects from the call, since we
@@ -259,25 +303,24 @@ package body Exp_Ch8 is
Force_Evaluation (Prefix (Nam));
end if;
- -- Check whether this is a renaming of a predefined equality on an
- -- untagged record type (AI05-0123).
+ -- Handle cases where we build a body for a renamed equality
if Is_Entity_Name (Nam)
and then Chars (Entity (Nam)) = Name_Op_Eq
and then Scope (Entity (Nam)) = Standard_Standard
- and then Ada_Version >= Ada_2012
then
declare
- Loc : constant Source_Ptr := Sloc (N);
- Id : constant Entity_Id := Defining_Entity (N);
- Typ : constant Entity_Id := Etype (First_Formal (Id));
-
- Decl : Node_Id;
- Body_Id : constant Entity_Id :=
- Make_Defining_Identifier (Sloc (N), Chars (Id));
+ Left : constant Entity_Id := First_Formal (Id);
+ Right : constant Entity_Id := Next_Formal (Left);
+ Typ : constant Entity_Id := Etype (Left);
+ Decl : Node_Id;
begin
- if Is_Record_Type (Typ)
+ -- Check whether this is a renaming of a predefined equality on an
+ -- untagged record type (AI05-0123).
+
+ if Ada_Version >= Ada_2012
+ and then Is_Record_Type (Typ)
and then not Is_Tagged_Type (Typ)
and then not Is_Frozen (Typ)
then
@@ -288,23 +331,7 @@ package body Exp_Ch8 is
-- declaration, and the body is inserted at the end of the
-- current declaration list to prevent premature freezing.
- Set_Alias (Id, Empty);
- Set_Has_Completion (Id, False);
- Rewrite (N,
- Make_Subprogram_Declaration (Sloc (N),
- Specification => Specification (N)));
- Set_Has_Delayed_Freeze (Id);
-
- Decl := Make_Subprogram_Body (Loc,
- Specification =>
- Make_Function_Specification (Loc,
- Defining_Unit_Name => Body_Id,
- Parameter_Specifications =>
- Copy_Parameter_List (Id),
- Result_Definition =>
- New_Occurrence_Of (Standard_Boolean, Loc)),
- Declarations => Empty_List,
- Handled_Statement_Sequence => Empty);
+ Decl := Build_Body_For_Renaming;
Set_Handled_Statement_Sequence (Decl,
Make_Handled_Sequence_Of_Statements (Loc,
@@ -313,16 +340,12 @@ package body Exp_Ch8 is
Expression =>
Expand_Record_Equality
(Id,
- Typ => Typ,
- Lhs =>
- Make_Identifier (Loc, Chars (First_Formal (Id))),
- Rhs =>
- Make_Identifier
- (Loc, Chars (Next_Formal (First_Formal (Id)))),
+ Typ => Typ,
+ Lhs => Make_Identifier (Loc, Chars (Left)),
+ Rhs => Make_Identifier (Loc, Chars (Right)),
Bodies => Declarations (Decl))))));
Append (Decl, List_Containing (N));
- Set_Debug_Info_Needed (Body_Id);
end if;
end;
end if;
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb
index 620efc96ad7..248984d89a9 100644
--- a/gcc/ada/exp_ch9.adb
+++ b/gcc/ada/exp_ch9.adb
@@ -339,6 +339,17 @@ package body Exp_Ch9 is
-- step of the expansion must to be done after private data has been moved
-- to its final resting scope to ensure proper visibility of debug objects.
+ procedure Ensure_Statement_Present (Loc : Source_Ptr; Alt : Node_Id);
+ -- If control flow optimizations are suppressed, and Alt is an accept,
+ -- delay, or entry call alternative with no trailing statements, insert a
+ -- null trailing statement with the given Loc (which is the sloc of the
+ -- accept, delay, or entry call statement). There might not be any
+ -- generated code for the accept, delay, or entry call itself (the
+ -- effect of these statements is part of the general processsing done
+ -- for the enclosing selective accept, timed entry call, or asynchronous
+ -- select), and the null statement is there to carry the sloc of that
+ -- statement to the back-end for trace-based coverage analysis purposes.
+
procedure Extract_Dispatching_Call
(N : Node_Id;
Call_Ent : out Entity_Id;
@@ -2955,26 +2966,40 @@ package body Exp_Ch9 is
-- manner:
-- procedure P (...) is
- -- <original declarations>
+ -- Expected_Comp : constant Comp_Type :=
+ -- Comp_Type
+ -- (System.Atomic_Primitives.Lock_Free_Read_N
+ -- (_Object.Comp'Address));
-- begin
-- loop
-- declare
- -- Saved_Comp : constant ... :=
- -- Atomic_Load (Comp'Address, Relaxed);
- -- Current_Comp : ... := Saved_Comp;
+ -- <original declarations before the object renaming declaration
+ -- of Comp>
+ --
+ -- Desired_Comp : Comp_Type := Expected_Comp;
+ -- Comp : Comp_Type renames Desired_Comp;
+ --
+ -- <original delarations after the object renaming declaration
+ -- of Comp>
+ --
-- begin
-- <original statements>
- -- exit when Atomic_Compare (Comp, Saved_Comp, Current_Comp);
+ -- exit when System.Atomic_Primitives.Lock_Free_Try_Write_N
+ -- (_Object.Comp'Address,
+ -- Interfaces.Unsigned_N (Expected_Comp),
+ -- Interfaces.Unsigned_N (Desired_Comp));
-- end;
- -- <<L0>>
-- end loop;
-- end P;
- -- References to Comp which appear in the original statements are replaced
- -- with references to Current_Comp. Each return and raise statement of P is
- -- transformed into an atomic status check:
+ -- Each return and raise statement of P is transformed into an atomic
+ -- status check:
- -- if Atomic_Compare (Comp, Saved_Comp, Current_Comp) then
+ -- if System.Atomic_Primitives.Lock_Free_Try_Write_N
+ -- (_Object.Comp'Address,
+ -- Interfaces.Unsigned_N (Expected_Comp),
+ -- Interfaces.Unsigned_N (Desired_Comp));
+ -- then
-- <original statement>
-- else
-- goto L0;
@@ -2985,180 +3010,31 @@ package body Exp_Ch9 is
-- manner:
-- function F (...) return ... is
- -- <original declarations>
- -- Saved_Comp : constant ... := Atomic_Load (Comp'Address);
+ -- <original declarations before the object renaming declaration
+ -- of Comp>
+ --
+ -- Expected_Comp : constant Comp_Type :=
+ -- Comp_Type
+ -- (System.Atomic_Primitives.Lock_Free_Read_N
+ -- (_Object.Comp'Address));
+ -- Comp : Comp_Type renames Expected_Comp;
+ --
+ -- <original delarations after the object renaming declaration of
+ -- Comp>
+ --
-- begin
-- <original statements>
-- end F;
- -- References to Comp which appear in the original statements are replaced
- -- with references to Saved_Comp.
-
function Build_Lock_Free_Unprotected_Subprogram_Body
(N : Node_Id;
Prot_Typ : Node_Id) return Node_Id
is
- Is_Procedure : constant Boolean :=
- Ekind (Corresponding_Spec (N)) = E_Procedure;
- Loc : constant Source_Ptr := Sloc (N);
- Label_Id : Entity_Id := Empty;
-
- procedure Process_Stmts
- (Stmts : List_Id;
- Compare : Entity_Id;
- Unsigned : Entity_Id;
- Comp : Entity_Id;
- Saved_Comp : Entity_Id;
- Current_Comp : Entity_Id);
- -- Given a statement sequence Stmts, wrap any return or raise statements
- -- in the following manner:
- --
- -- if System.Atomic_Primitives.Atomic_Compare_Exchange
- -- (Comp'Address,
- -- Interfaces.Unsigned (Saved_Comp),
- -- Interfaces.Unsigned (Current_Comp))
- -- then
- -- <Stmt>;
- -- else
- -- goto L0;
- -- end if;
- --
- -- Replace all references to Comp with a reference to Current_Comp.
-
function Referenced_Component (N : Node_Id) return Entity_Id;
-- Subprograms which meet the lock-free implementation criteria are
-- allowed to reference only one unique component. Return the prival
-- of the said component.
- -------------------
- -- Process_Stmts --
- -------------------
-
- procedure Process_Stmts
- (Stmts : List_Id;
- Compare : Entity_Id;
- Unsigned : Entity_Id;
- Comp : Entity_Id;
- Saved_Comp : Entity_Id;
- Current_Comp : Entity_Id)
- is
- function Process_Node (N : Node_Id) return Traverse_Result;
- -- Transform a single node if it is a return statement, a raise
- -- statement or a reference to Comp.
-
- ------------------
- -- Process_Node --
- ------------------
-
- function Process_Node (N : Node_Id) return Traverse_Result is
-
- procedure Wrap_Statement (Stmt : Node_Id);
- -- Wrap an arbitrary statement inside an if statement where the
- -- condition does an atomic check on the state of the object.
-
- --------------------
- -- Wrap_Statement --
- --------------------
-
- procedure Wrap_Statement (Stmt : Node_Id) is
- begin
- -- The first time through, create the declaration of a label
- -- which is used to skip the remainder of source statements if
- -- the state of the object has changed.
-
- if No (Label_Id) then
- Label_Id :=
- Make_Identifier (Loc, New_External_Name ('L', 0));
- Set_Entity (Label_Id,
- Make_Defining_Identifier (Loc, Chars (Label_Id)));
- end if;
-
- -- Generate:
-
- -- if System.Atomic_Primitives.Atomic_Compare_Exchange
- -- (Comp'Address,
- -- Interfaces.Unsigned (Saved_Comp),
- -- Interfaces.Unsigned (Current_Comp))
- -- then
- -- <Stmt>;
- -- else
- -- goto L0;
- -- end if;
-
- Rewrite (Stmt,
- Make_If_Statement (Loc,
- Condition =>
- Make_Function_Call (Loc,
- Name =>
- New_Reference_To (Compare, Loc),
- Parameter_Associations => New_List (
- Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Comp, Loc),
- Attribute_Name => Name_Address),
-
- Unchecked_Convert_To (Unsigned,
- New_Reference_To (Saved_Comp, Loc)),
-
- Unchecked_Convert_To (Unsigned,
- New_Reference_To (Current_Comp, Loc)))),
-
- Then_Statements => New_List (Relocate_Node (Stmt)),
-
- Else_Statements => New_List (
- Make_Goto_Statement (Loc,
- Name => New_Reference_To (Entity (Label_Id), Loc)))));
- end Wrap_Statement;
-
- -- Start of processing for Process_Node
-
- begin
- -- Wrap each return and raise statement that appear inside a
- -- procedure. Skip the last return statement which is added by
- -- default since it is transformed into an exit statement.
-
- if Is_Procedure
- and then Nkind_In (N, N_Simple_Return_Statement,
- N_Extended_Return_Statement,
- N_Raise_Statement)
- and then Nkind (Last (Stmts)) /= N_Simple_Return_Statement
- then
- Wrap_Statement (N);
- return Skip;
-
- -- Replace all references to the original component by a reference
- -- to the current state of the component.
-
- elsif Nkind (N) = N_Identifier
- and then Present (Entity (N))
- and then Entity (N) = Comp
- then
- Rewrite (N, Make_Identifier (Loc, Chars (Current_Comp)));
- return Skip;
- end if;
-
- -- Force reanalysis
-
- Set_Analyzed (N, False);
-
- return OK;
- end Process_Node;
-
- procedure Process_Nodes is new Traverse_Proc (Process_Node);
-
- -- Local variables
-
- Stmt : Node_Id;
-
- -- Start of processing for Process_Stmts
-
- begin
- Stmt := First (Stmts);
- while Present (Stmt) loop
- Process_Nodes (Stmt);
- Next (Stmt);
- end loop;
- end Process_Stmts;
-
--------------------------
-- Referenced_Component --
--------------------------
@@ -3214,152 +3090,311 @@ package body Exp_Ch9 is
-- Local variables
- Comp : constant Entity_Id := Referenced_Component (N);
- Decls : constant List_Id := Declarations (N);
- Stmts : List_Id;
+ Comp : constant Entity_Id := Referenced_Component (N);
+ Loc : constant Source_Ptr := Sloc (N);
+ Hand_Stmt_Seq : Node_Id := Handled_Statement_Sequence (N);
+ Decls : List_Id := Declarations (N);
-- Start of processing for Build_Lock_Free_Unprotected_Subprogram_Body
begin
- Stmts := New_Copy_List (Statements (Handled_Statement_Sequence (N)));
+ -- Add renamings for the protection object, discriminals, privals and
+ -- the entry index constant for use by debugger.
+
+ Debug_Private_Data_Declarations (Decls);
-- Perform the lock-free expansion when the subprogram references a
-- protected component.
if Present (Comp) then
- declare
+ Protected_Component_Ref : declare
+ Comp_Decl : constant Node_Id := Parent (Comp);
+ Comp_Sel_Nam : constant Node_Id := Name (Comp_Decl);
Comp_Type : constant Entity_Id := Etype (Comp);
- Block_Decls : List_Id;
- Compare : Entity_Id;
- Current_Comp : Entity_Id;
- Decl : Node_Id;
- Label : Node_Id;
- Load : Entity_Id;
- Load_Params : List_Id;
- Saved_Comp : Entity_Id;
- Stmt : Node_Id;
- Typ_Size : Int;
- Unsigned : Entity_Id;
+
+ Is_Procedure : constant Boolean :=
+ Ekind (Corresponding_Spec (N)) = E_Procedure;
+ -- Indicates if N is a protected procedure body
+
+ Block_Decls : List_Id;
+ Try_Write : Entity_Id;
+ Desired_Comp : Entity_Id;
+ Decl : Node_Id;
+ Label : Node_Id;
+ Label_Id : Entity_Id := Empty;
+ Read : Entity_Id;
+ Expected_Comp : Entity_Id;
+ Stmt : Node_Id;
+ Stmts : List_Id :=
+ New_Copy_List (Statements (Hand_Stmt_Seq));
+ Typ_Size : Int;
+ Unsigned : Entity_Id;
+
+ function Process_Node (N : Node_Id) return Traverse_Result;
+ -- Transform a single node if it is a return statement, a raise
+ -- statement or a reference to Comp.
+
+ procedure Process_Stmts (Stmts : List_Id);
+ -- Given a statement sequence Stmts, wrap any return or raise
+ -- statements in the following manner:
+ --
+ -- if System.Atomic_Primitives.Lock_Free_Try_Write_N
+ -- (_Object.Comp'Address,
+ -- Interfaces.Unsigned_N (Expected_Comp),
+ -- Interfaces.Unsigned_N (Desired_Comp))
+ -- then
+ -- <Stmt>;
+ -- else
+ -- goto L0;
+ -- end if;
+
+ ------------------
+ -- Process_Node --
+ ------------------
+
+ function Process_Node (N : Node_Id) return Traverse_Result is
+
+ procedure Wrap_Statement (Stmt : Node_Id);
+ -- Wrap an arbitrary statement inside an if statement where the
+ -- condition does an atomic check on the state of the object.
+
+ --------------------
+ -- Wrap_Statement --
+ --------------------
+
+ procedure Wrap_Statement (Stmt : Node_Id) is
+ begin
+ -- The first time through, create the declaration of a label
+ -- which is used to skip the remainder of source statements
+ -- if the state of the object has changed.
+
+ if No (Label_Id) then
+ Label_Id :=
+ Make_Identifier (Loc, New_External_Name ('L', 0));
+ Set_Entity (Label_Id,
+ Make_Defining_Identifier (Loc, Chars (Label_Id)));
+ end if;
+
+ -- Generate:
+ -- if System.Atomic_Primitives.Lock_Free_Try_Write_N
+ -- (_Object.Comp'Address,
+ -- Interfaces.Unsigned_N (Expected_Comp),
+ -- Interfaces.Unsigned_N (Desired_Comp))
+ -- then
+ -- <Stmt>;
+ -- else
+ -- goto L0;
+ -- end if;
+
+ Rewrite (Stmt,
+ Make_Implicit_If_Statement (N,
+ Condition =>
+ Make_Function_Call (Loc,
+ Name =>
+ New_Reference_To (Try_Write, Loc),
+ Parameter_Associations => New_List (
+ Make_Attribute_Reference (Loc,
+ Prefix => Relocate_Node (Comp_Sel_Nam),
+ Attribute_Name => Name_Address),
+
+ Unchecked_Convert_To (Unsigned,
+ New_Reference_To (Expected_Comp, Loc)),
+
+ Unchecked_Convert_To (Unsigned,
+ New_Reference_To (Desired_Comp, Loc)))),
+
+ Then_Statements => New_List (Relocate_Node (Stmt)),
+
+ Else_Statements => New_List (
+ Make_Goto_Statement (Loc,
+ Name =>
+ New_Reference_To (Entity (Label_Id), Loc)))));
+ end Wrap_Statement;
+
+ -- Start of processing for Process_Node
+
+ begin
+ -- Wrap each return and raise statement that appear inside a
+ -- procedure. Skip the last return statement which is added by
+ -- default since it is transformed into an exit statement.
+
+ if Is_Procedure
+ and then ((Nkind (N) = N_Simple_Return_Statement
+ and then N /= Last (Stmts))
+ or else Nkind (N) = N_Extended_Return_Statement
+ or else (Nkind_In (N, N_Raise_Constraint_Error,
+ N_Raise_Program_Error,
+ N_Raise_Statement,
+ N_Raise_Storage_Error)
+ and then Comes_From_Source (N)))
+ then
+ Wrap_Statement (N);
+ return Skip;
+ end if;
+
+ -- Force reanalysis
+
+ Set_Analyzed (N, False);
+
+ return OK;
+ end Process_Node;
+
+ procedure Process_Nodes is new Traverse_Proc (Process_Node);
+
+ -------------------
+ -- Process_Stmts --
+ -------------------
+
+ procedure Process_Stmts (Stmts : List_Id) is
+ Stmt : Node_Id;
+ begin
+ Stmt := First (Stmts);
+ while Present (Stmt) loop
+ Process_Nodes (Stmt);
+ Next (Stmt);
+ end loop;
+ end Process_Stmts;
+
+ -- Start of processing for Protected_Component_Ref
begin
-- Get the type size
- -- Surely this should be Known_Static_Esize if you are about
- -- to assume you can do UI_To_Int on it! ???
-
- if Known_Esize (Comp_Type) then
+ if Known_Static_Esize (Comp_Type) then
Typ_Size := UI_To_Int (Esize (Comp_Type));
-- If the Esize (Object_Size) is unknown at compile-time, look at
-- the RM_Size (Value_Size) since it may have been set by an
-- explicit representation clause.
- -- And how do we know this is statically known???
+ elsif Known_Static_RM_Size (Comp_Type) then
+ Typ_Size := UI_To_Int (RM_Size (Comp_Type));
+
+ -- Should not happen since this has already been checked in
+ -- Allows_Lock_Free_Implementation (see Sem_Ch9).
else
- Typ_Size := UI_To_Int (RM_Size (Comp_Type));
+ raise Program_Error;
end if;
-- Retrieve all relevant atomic routines and types
case Typ_Size is
when 8 =>
- Compare := RTE (RE_Atomic_Compare_Exchange_8);
- Load := RTE (RE_Atomic_Load_8);
- Unsigned := RTE (RE_Uint8);
+ Try_Write := RTE (RE_Lock_Free_Try_Write_8);
+ Read := RTE (RE_Lock_Free_Read_8);
+ Unsigned := RTE (RE_Uint8);
when 16 =>
- Compare := RTE (RE_Atomic_Compare_Exchange_16);
- Load := RTE (RE_Atomic_Load_16);
- Unsigned := RTE (RE_Uint16);
+ Try_Write := RTE (RE_Lock_Free_Try_Write_16);
+ Read := RTE (RE_Lock_Free_Read_16);
+ Unsigned := RTE (RE_Uint16);
when 32 =>
- Compare := RTE (RE_Atomic_Compare_Exchange_32);
- Load := RTE (RE_Atomic_Load_32);
- Unsigned := RTE (RE_Uint32);
+ Try_Write := RTE (RE_Lock_Free_Try_Write_32);
+ Read := RTE (RE_Lock_Free_Read_32);
+ Unsigned := RTE (RE_Uint32);
when 64 =>
- Compare := RTE (RE_Atomic_Compare_Exchange_64);
- Load := RTE (RE_Atomic_Load_64);
- Unsigned := RTE (RE_Uint64);
+ Try_Write := RTE (RE_Lock_Free_Try_Write_64);
+ Read := RTE (RE_Lock_Free_Read_64);
+ Unsigned := RTE (RE_Uint64);
when others =>
raise Program_Error;
end case;
-- Generate:
- -- For functions:
-
- -- Saved_Comp : constant Comp_Type :=
- -- Comp_Type (Atomic_Load (Comp'Address));
-
- -- For procedures:
+ -- Expected_Comp : constant Comp_Type :=
+ -- Comp_Type
+ -- (System.Atomic_Primitives.Lock_Free_Read_N
+ -- (_Object.Comp'Address));
- -- Saved_Comp : constant Comp_Type :=
- -- Comp_Type (Atomic_Load (Comp'Address),
- -- Relaxed);
-
- Saved_Comp :=
+ Expected_Comp :=
Make_Defining_Identifier (Loc,
New_External_Name (Chars (Comp), Suffix => "_saved"));
- Load_Params := New_List (
- Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Comp, Loc),
- Attribute_Name => Name_Address));
-
- -- For protected procedures, set the memory model to be relaxed
-
- if Is_Procedure then
- Append_To (Load_Params,
- New_Reference_To (RTE (RE_Relaxed), Loc));
- end if;
-
Decl :=
Make_Object_Declaration (Loc,
- Defining_Identifier => Saved_Comp,
- Constant_Present => True,
+ Defining_Identifier => Expected_Comp,
Object_Definition => New_Reference_To (Comp_Type, Loc),
+ Constant_Present => True,
Expression =>
Unchecked_Convert_To (Comp_Type,
Make_Function_Call (Loc,
- Name => New_Reference_To (Load, Loc),
- Parameter_Associations => Load_Params)));
+ Name => New_Reference_To (Read, Loc),
+ Parameter_Associations => New_List (
+ Make_Attribute_Reference (Loc,
+ Prefix => Relocate_Node (Comp_Sel_Nam),
+ Attribute_Name => Name_Address)))));
-- Protected procedures
if Is_Procedure then
- Block_Decls := New_List (Decl);
+ -- Move the original declarations inside the generated block
+
+ Block_Decls := Decls;
+
+ -- Reset the declarations list of the protected procedure to
+ -- contain only Decl.
+
+ Decls := New_List (Decl);
-- Generate:
- -- Current_Comp : Comp_Type := Saved_Comp;
+ -- Desired_Comp : Comp_Type := Expected_Comp;
- Current_Comp :=
+ Desired_Comp :=
Make_Defining_Identifier (Loc,
New_External_Name (Chars (Comp), Suffix => "_current"));
- Append_To (Block_Decls,
+ -- Insert the declarations of Expected_Comp and Desired_Comp in
+ -- the block declarations right before the renaming of the
+ -- protected component.
+
+ Insert_Before (Comp_Decl,
Make_Object_Declaration (Loc,
- Defining_Identifier => Current_Comp,
+ Defining_Identifier => Desired_Comp,
Object_Definition => New_Reference_To (Comp_Type, Loc),
- Expression => New_Reference_To (Saved_Comp, Loc)));
+ Expression =>
+ New_Reference_To (Expected_Comp, Loc)));
-- Protected function
else
- Append_To (Decls, Decl);
- Current_Comp := Saved_Comp;
+ Desired_Comp := Expected_Comp;
+
+ -- Insert the declaration of Expected_Comp in the function
+ -- declarations right before the renaming of the protected
+ -- component.
+
+ Insert_Before (Comp_Decl, Decl);
end if;
- Process_Stmts
- (Stmts, Compare, Unsigned, Comp, Saved_Comp, Current_Comp);
+ -- Rewrite the protected component renaming declaration to be a
+ -- renaming of Desired_Comp.
-- Generate:
+ -- Comp : Comp_Type renames Desired_Comp;
+
+ Rewrite (Comp_Decl,
+ Make_Object_Renaming_Declaration (Loc,
+ Defining_Identifier =>
+ Defining_Identifier (Comp_Decl),
+ Subtype_Mark =>
+ New_Occurrence_Of (Comp_Type, Loc),
+ Name =>
+ New_Reference_To (Desired_Comp, Loc)));
+
+ -- Wrap any return or raise statements in Stmts in same the manner
+ -- described in Process_Stmts.
- -- exit when System.Atomic_Primitives.Atomic_Compare_Exchange
- -- (Comp'Address,
- -- Interfaces.Unsigned (Saved_Comp),
- -- Interfaces.Unsigned (Current_Comp))
+ Process_Stmts (Stmts);
+
+ -- Generate:
+ -- exit when System.Atomic_Primitives.Lock_Free_Try_Write_N
+ -- (_Object.Comp'Address,
+ -- Interfaces.Unsigned_N (Expected_Comp),
+ -- Interfaces.Unsigned_N (Desired_Comp))
if Is_Procedure then
Stmt :=
@@ -3367,17 +3402,17 @@ package body Exp_Ch9 is
Condition =>
Make_Function_Call (Loc,
Name =>
- New_Reference_To (Compare, Loc),
+ New_Reference_To (Try_Write, Loc),
Parameter_Associations => New_List (
Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Comp, Loc),
+ Prefix => Relocate_Node (Comp_Sel_Nam),
Attribute_Name => Name_Address),
Unchecked_Convert_To (Unsigned,
- New_Reference_To (Saved_Comp, Loc)),
+ New_Reference_To (Expected_Comp, Loc)),
Unchecked_Convert_To (Unsigned,
- New_Reference_To (Current_Comp, Loc)))));
+ New_Reference_To (Desired_Comp, Loc)))));
-- Small optimization: transform the default return statement
-- of a procedure into the atomic exit statement.
@@ -3402,7 +3437,6 @@ package body Exp_Ch9 is
end if;
-- Generate:
-
-- loop
-- declare
-- <Decls>
@@ -3412,26 +3446,22 @@ package body Exp_Ch9 is
-- end loop;
if Is_Procedure then
- Stmts := New_List (
- Make_Procedure_Call_Statement (Loc,
- Name =>
- New_Reference_To (RTE (RE_Atomic_Synchronize), Loc)),
- Make_Loop_Statement (Loc,
- Statements => New_List (
- Make_Block_Statement (Loc,
- Declarations => Block_Decls,
- Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc,
- Statements => Stmts))),
- End_Label => Empty));
+ Stmts :=
+ New_List (
+ Make_Loop_Statement (Loc,
+ Statements => New_List (
+ Make_Block_Statement (Loc,
+ Declarations => Block_Decls,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => Stmts))),
+ End_Label => Empty));
end if;
- end;
- end if;
-
- -- Add renamings for the protection object, discriminals, privals and
- -- the entry index constant for use by debugger.
- Debug_Private_Data_Declarations (Decls);
+ Hand_Stmt_Seq :=
+ Make_Handled_Sequence_Of_Statements (Loc, Statements => Stmts);
+ end Protected_Component_Ref;
+ end if;
-- Make an unprotected version of the subprogram for use within the same
-- object, with new name and extra parameter representing the object.
@@ -3441,8 +3471,7 @@ package body Exp_Ch9 is
Specification =>
Build_Protected_Sub_Specification (N, Prot_Typ, Unprotected_Mode),
Declarations => Decls,
- Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc, Statements => Stmts));
+ Handled_Statement_Sequence => Hand_Stmt_Seq);
end Build_Lock_Free_Unprotected_Subprogram_Body;
-------------------------
@@ -4767,7 +4796,7 @@ package body Exp_Ch9 is
Rewrite (N,
Make_Block_Statement (Loc,
- Declarations => Decls,
+ Declarations => Decls,
Handled_Statement_Sequence =>
Make_Handled_Sequence_Of_Statements (Loc,
Statements => Stats)));
@@ -4817,7 +4846,7 @@ package body Exp_Ch9 is
Name => Name,
Parameter_Associations =>
New_List (Make_Attribute_Reference (Loc,
- Prefix => New_Occurrence_Of (Chain, Loc),
+ Prefix => New_Occurrence_Of (Chain, Loc),
Attribute_Name => Name_Unchecked_Access)));
if Nkind (N) = N_Package_Declaration then
@@ -4933,7 +4962,7 @@ package body Exp_Ch9 is
Name => New_Reference_To (RTE (RE_Activate_Tasks), Loc),
Parameter_Associations => New_List (
Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Chain, Loc),
+ Prefix => New_Reference_To (Chain, Loc),
Attribute_Name => Name_Unchecked_Access))))),
Has_Created_Identifier => True,
@@ -4970,7 +4999,7 @@ package body Exp_Ch9 is
Name => New_Reference_To (RTE (RE_Activate_Tasks), Loc),
Parameter_Associations => New_List (
Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Chain, Loc),
+ Prefix => New_Reference_To (Chain, Loc),
Attribute_Name => Name_Unchecked_Access))));
Block :=
@@ -5208,8 +5237,8 @@ package body Exp_Ch9 is
Formal : Entity_Id;
begin
- -- If the result type is an access_to_subprogram, we must create
- -- new entities for its spec.
+ -- If the result type is an access_to_subprogram, we must create new
+ -- entities for its spec.
if Nkind (New_Res) = N_Access_Definition
and then Present (Access_To_Subprogram_Definition (New_Res))
@@ -5333,9 +5362,7 @@ package body Exp_Ch9 is
Make_Explicit_Dereference (Loc, N)),
Selector_Name => Make_Identifier (Loc, Sel));
- elsif Is_Entity_Name (N)
- and then Is_Concurrent_Type (Entity (N))
- then
+ elsif Is_Entity_Name (N) and then Is_Concurrent_Type (Entity (N)) then
if Is_Task_Type (Entity (N)) then
if Is_Current_Task (Entity (N)) then
@@ -5421,9 +5448,7 @@ package body Exp_Ch9 is
begin
Decl := First (Decls);
- while Present (Decl)
- and then not Comes_From_Source (Decl)
- loop
+ while Present (Decl) and then not Comes_From_Source (Decl) loop
-- Declaration for concurrent entity _object and its access type,
-- along with the entry index subtype:
-- type prot_typVP is access prot_typV;
@@ -5455,6 +5480,31 @@ package body Exp_Ch9 is
end loop;
end Debug_Private_Data_Declarations;
+ ------------------------------
+ -- Ensure_Statement_Present --
+ ------------------------------
+
+ procedure Ensure_Statement_Present (Loc : Source_Ptr; Alt : Node_Id) is
+ Stmt : Node_Id;
+
+ begin
+ if Opt.Suppress_Control_Flow_Optimizations
+ and then Is_Empty_List (Statements (Alt))
+ then
+ Stmt := Make_Null_Statement (Loc);
+
+ -- Mark NULL statement as coming from source so that it is not
+ -- eliminated by GIGI.
+
+ -- Another covert channel! If this is a requirement, it must be
+ -- documented in sinfo/einfo ???
+
+ Set_Comes_From_Source (Stmt, True);
+
+ Set_Statements (Alt, New_List (Stmt));
+ end if;
+ end Ensure_Statement_Present;
+
----------------------------
-- Entry_Index_Expression --
----------------------------
@@ -5515,8 +5565,8 @@ package body Exp_Ch9 is
Sloc,
Make_Attribute_Reference (Sloc,
Attribute_Name => Name_Pos,
- Prefix => New_Reference_To (Base_Type (S), Sloc),
- Expressions => New_List (Relocate_Node (Index))),
+ Prefix => New_Reference_To (Base_Type (S), Sloc),
+ Expressions => New_List (Relocate_Node (Index))),
Type_Low_Bound (S),
Ttyp,
False));
@@ -5638,7 +5688,6 @@ package body Exp_Ch9 is
Stats : constant Node_Id := Handled_Statement_Sequence (N);
Ann : Entity_Id := Empty;
Adecl : Node_Id;
- Lab_Id : Node_Id;
Lab : Node_Id;
Ldecl : Node_Id;
Ldecl2 : Node_Id;
@@ -5671,8 +5720,7 @@ package body Exp_Ch9 is
begin
Ent := Make_Temporary (Loc, 'L');
- Lab_Id := New_Reference_To (Ent, Loc);
- Lab := Make_Label (Loc, Lab_Id);
+ Lab := Make_Label (Loc, New_Reference_To (Ent, Loc));
Ldecl :=
Make_Implicit_Label_Declaration (Loc,
Defining_Identifier => Ent,
@@ -5680,8 +5728,7 @@ package body Exp_Ch9 is
Append (Lab, Statements (Handled_Statement_Sequence (N)));
Ent := Make_Temporary (Loc, 'L');
- Lab_Id := New_Reference_To (Ent, Loc);
- Lab := Make_Label (Loc, Lab_Id);
+ Lab := Make_Label (Loc, New_Reference_To (Ent, Loc));
Ldecl2 :=
Make_Implicit_Label_Declaration (Loc,
Defining_Identifier => Ent,
@@ -5690,7 +5737,7 @@ package body Exp_Ch9 is
end;
else
- Ldecl := Empty;
+ Ldecl := Empty;
Ldecl2 := Empty;
end if;
@@ -5704,17 +5751,12 @@ package body Exp_Ch9 is
Adecl :=
Make_Object_Declaration (Loc,
Defining_Identifier => Ann,
- Object_Definition =>
+ Object_Definition =>
New_Reference_To (RTE (RE_Address), Loc));
- Insert_Before (N, Adecl);
- Analyze (Adecl);
-
- Insert_Before (N, Ldecl);
- Analyze (Ldecl);
-
- Insert_Before (N, Ldecl2);
- Analyze (Ldecl2);
+ Insert_Before_And_Analyze (N, Adecl);
+ Insert_Before_And_Analyze (N, Ldecl);
+ Insert_Before_And_Analyze (N, Ldecl2);
end if;
-- Case of accept statement which is in an accept alternative
@@ -5760,11 +5802,10 @@ package body Exp_Ch9 is
Adecl :=
Make_Object_Declaration (Loc,
Defining_Identifier => Ann,
- Object_Definition =>
+ Object_Definition =>
New_Reference_To (RTE (RE_Address), Loc));
- Insert_Before (Sel_Acc, Adecl);
- Analyze (Adecl);
+ Insert_Before_And_Analyze (Sel_Acc, Adecl);
-- If we are not the first accept statement, then find the Ann
-- variable allocated by the first accept and use it.
@@ -5809,8 +5850,7 @@ package body Exp_Ch9 is
while Present (Formal) loop
Comp := Entry_Component (Formal);
- New_F :=
- Make_Defining_Identifier (Loc, Chars (Formal));
+ New_F := Make_Defining_Identifier (Loc, Chars (Formal));
Set_Etype (New_F, Etype (Formal));
Set_Scope (New_F, Ent);
@@ -5894,10 +5934,9 @@ package body Exp_Ch9 is
Decl1 :=
Make_Full_Type_Declaration (Loc,
Defining_Identifier => D_T2,
- Type_Definition => Def1);
+ Type_Definition => Def1);
- Insert_After (N, Decl1);
- Analyze (Decl1);
+ Insert_After_And_Analyze (N, Decl1);
-- Associate the access to subprogram with its original access to
-- protected subprogram type. Needed by the backend to know that this
@@ -5913,7 +5952,7 @@ package body Exp_Ch9 is
Defining_Identifier => Make_Temporary (Loc, 'P'),
Component_Definition =>
Make_Component_Definition (Loc,
- Aliased_Present => False,
+ Aliased_Present => False,
Subtype_Indication =>
New_Occurrence_Of (RTE (RE_Address), Loc))),
@@ -5932,8 +5971,7 @@ package body Exp_Ch9 is
Component_List =>
Make_Component_List (Loc, Component_Items => Comps)));
- Insert_After (Decl1, Decl2);
- Analyze (Decl2);
+ Insert_After_And_Analyze (Decl1, Decl2);
Set_Equivalent_Type (T, E_T);
end Expand_Access_Protected_Subprogram_Type;
@@ -6003,9 +6041,7 @@ package body Exp_Ch9 is
-- condition does not reference any of the generated renamings
-- within the function.
- if Full_Expander_Active
- and then Scope (Entity (Cond)) /= Func
- then
+ if Full_Expander_Active and then Scope (Entity (Cond)) /= Func then
Set_Declarations (B_F, Empty_List);
end if;
@@ -6073,8 +6109,7 @@ package body Exp_Ch9 is
then
Append_To (Component_Associations (Aggr),
Make_Component_Association (Loc,
- Choices => New_List (
- Make_Integer_Literal (Loc, Count)),
+ Choices => New_List (Make_Integer_Literal (Loc, Count)),
Expression =>
-- Task_Id (Tasknm._disp_get_task_id)
@@ -6082,7 +6117,7 @@ package body Exp_Ch9 is
Make_Unchecked_Type_Conversion (Loc,
Subtype_Mark =>
New_Reference_To (RTE (RO_ST_Task_Id), Loc),
- Expression =>
+ Expression =>
Make_Selected_Component (Loc,
Prefix => New_Copy_Tree (Tasknm),
Selector_Name =>
@@ -6091,8 +6126,7 @@ package body Exp_Ch9 is
else
Append_To (Component_Associations (Aggr),
Make_Component_Association (Loc,
- Choices => New_List (
- Make_Integer_Literal (Loc, Count)),
+ Choices => New_List (Make_Integer_Literal (Loc, Count)),
Expression => Concurrent_Ref (Tasknm)));
end if;
@@ -6105,7 +6139,7 @@ package body Exp_Ch9 is
Parameter_Associations => New_List (
Make_Qualified_Expression (Loc,
Subtype_Mark => New_Reference_To (RTE (RE_Task_List), Loc),
- Expression => Aggr))));
+ Expression => Aggr))));
Analyze (N);
end Expand_N_Abort_Statement;
@@ -6183,11 +6217,9 @@ package body Exp_Ch9 is
Call : Node_Id;
Block : Node_Id;
- -- Start of processing for Expand_N_Accept_Statement
-
begin
- -- If accept statement is not part of a list, then its parent must be
- -- an accept alternative, and, as described above, we do not do any
+ -- If the accept statement is not part of a list, then its parent must
+ -- be an accept alternative, and, as described above, we do not do any
-- expansion for such accept statements at this level.
if not Is_List_Member (N) then
@@ -6279,9 +6311,7 @@ package body Exp_Ch9 is
if Parent (Stats) = N then
Prepend (Call, Statements (Stats));
else
- Set_Declarations
- (Parent (Stats),
- New_List (Call));
+ Set_Declarations (Parent (Stats), New_List (Call));
end if;
Analyze (Call);
@@ -6594,7 +6624,7 @@ package body Exp_Ch9 is
Abortable_Block : Node_Id;
Actuals : List_Id;
Astats : List_Id;
- Blk_Ent : Entity_Id;
+ Blk_Ent : constant Entity_Id := Make_Temporary (Loc, 'A');
Blk_Typ : Entity_Id;
Call : Node_Id;
Call_Ent : Entity_Id;
@@ -6639,15 +6669,16 @@ package body Exp_Ch9 is
Process_Statements_For_Controlled_Objects (Trig);
Process_Statements_For_Controlled_Objects (Abrt);
+ Ecall := Triggering_Statement (Trig);
+
+ Ensure_Statement_Present (Sloc (Ecall), Trig);
+
-- Retrieve Astats and Tstats now because the finalization machinery may
-- wrap them in blocks.
Astats := Statements (Abrt);
Tstats := Statements (Trig);
- Blk_Ent := Make_Temporary (Loc, 'A');
- Ecall := Triggering_Statement (Trig);
-
-- The arguments in the call may require dynamic allocation, and the
-- call statement may have been transformed into a block. The block
-- may contain additional declarations for internal entities, and the
@@ -6776,10 +6807,8 @@ package body Exp_Ch9 is
New_Copy_Tree (Obj), -- <object>
New_Reference_To (S, Loc), -- S
Make_Attribute_Reference (Loc, -- P'Address
- Prefix =>
- New_Reference_To (P, Loc),
- Attribute_Name =>
- Name_Address),
+ Prefix => New_Reference_To (P, Loc),
+ Attribute_Name => Name_Address),
Make_Identifier (Loc, Name_uD), -- D
New_Reference_To (B, Loc)))); -- B
@@ -6789,14 +6818,13 @@ package body Exp_Ch9 is
-- end if;
Append_To (Cleanup_Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Function_Call (Loc,
Name =>
New_Reference_To (RTE (RE_Enqueued), Loc),
Parameter_Associations =>
- New_List (
- New_Reference_To (Bnn, Loc))),
+ New_List (New_Reference_To (Bnn, Loc))),
Then_Statements =>
New_Copy_List_Tree (Astats)));
@@ -6835,8 +6863,7 @@ package body Exp_Ch9 is
ProtE_Stmts :=
New_List (
Make_Implicit_Label_Declaration (Loc,
- Defining_Identifier =>
- Abort_Block_Ent),
+ Defining_Identifier => Abort_Block_Ent),
Build_Abort_Block
(Loc, Abort_Block_Ent, Cleanup_Block_Ent, Cleanup_Block));
@@ -6847,7 +6874,7 @@ package body Exp_Ch9 is
-- end if;
Append_To (ProtE_Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Op_Not (Loc,
Right_Opnd =>
@@ -6855,8 +6882,7 @@ package body Exp_Ch9 is
Name =>
New_Reference_To (RTE (RE_Cancelled), Loc),
Parameter_Associations =>
- New_List (
- New_Reference_To (Bnn, Loc)))),
+ New_List (New_Reference_To (Bnn, Loc)))),
Then_Statements =>
New_Copy_List_Tree (Tstats)));
@@ -6895,15 +6921,14 @@ package body Exp_Ch9 is
Find_Prim_Op (Etype (Etype (Obj)),
Name_uDisp_Asynchronous_Select),
Loc),
+
Parameter_Associations =>
New_List (
New_Copy_Tree (Obj), -- <object>
New_Reference_To (S, Loc), -- S
Make_Attribute_Reference (Loc, -- P'Address
- Prefix =>
- New_Reference_To (P, Loc),
- Attribute_Name =>
- Name_Address),
+ Prefix => New_Reference_To (P, Loc),
+ Attribute_Name => Name_Address),
Make_Identifier (Loc, Name_uD), -- D
New_Reference_To (B, Loc)))); -- B
@@ -6912,10 +6937,8 @@ package body Exp_Ch9 is
Prepend_To (TaskE_Stmts,
Make_Procedure_Call_Statement (Loc,
- Name =>
- New_Reference_To (RTE (RE_Abort_Defer), Loc),
- Parameter_Associations =>
- No_List));
+ Name => New_Reference_To (RTE (RE_Abort_Defer), Loc),
+ Parameter_Associations => No_List));
-- Generate:
-- Abort_Undefer;
@@ -6925,10 +6948,8 @@ package body Exp_Ch9 is
Prepend_To (Cleanup_Stmts,
Make_Procedure_Call_Statement (Loc,
- Name =>
- New_Reference_To (RTE (RE_Abort_Undefer), Loc),
- Parameter_Associations =>
- No_List));
+ Name => New_Reference_To (RTE (RE_Abort_Undefer), Loc),
+ Parameter_Associations => No_List));
-- Wrap the statements in a block. Exp_Ch7.Expand_Cleanup_Actions
-- will generate a _clean for the additional status flag.
@@ -6974,11 +6995,9 @@ package body Exp_Ch9 is
-- end if;
Append_To (TaskE_Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
- Make_Op_Not (Loc,
- Right_Opnd =>
- New_Reference_To (T, Loc)),
+ Make_Op_Not (Loc, Right_Opnd => New_Reference_To (T, Loc)),
Then_Statements =>
New_Copy_List_Tree (Tstats)));
@@ -7027,10 +7046,10 @@ package body Exp_Ch9 is
-- end if;
Append_To (Conc_Typ_Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Op_Eq (Loc,
- Left_Opnd =>
+ Left_Opnd =>
New_Reference_To (C, Loc),
Right_Opnd =>
New_Reference_To (RTE (RE_POK_Protected_Entry), Loc)),
@@ -7043,7 +7062,7 @@ package body Exp_Ch9 is
Make_Elsif_Part (Loc,
Condition =>
Make_Op_Eq (Loc,
- Left_Opnd =>
+ Left_Opnd =>
New_Reference_To (C, Loc),
Right_Opnd =>
New_Reference_To (RTE (RE_POK_Task_Entry), Loc)),
@@ -7069,10 +7088,10 @@ package body Exp_Ch9 is
-- end if;
Append_To (Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Op_Eq (Loc,
- Left_Opnd =>
+ Left_Opnd =>
New_Reference_To (K, Loc),
Right_Opnd =>
New_Reference_To (RTE (RE_TK_Limited_Tagged), Loc)),
@@ -7117,7 +7136,7 @@ package body Exp_Ch9 is
Append_To (Parameter_Associations (Ecall),
Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Dblock_Ent, Loc),
+ Prefix => New_Reference_To (Dblock_Ent, Loc),
Attribute_Name => Name_Unchecked_Access));
-- Create the inner block to protect the abortable part
@@ -7141,9 +7160,10 @@ package body Exp_Ch9 is
Rewrite (Ecall,
Make_Implicit_If_Statement (N,
- Condition => Make_Function_Call (Loc,
- Name => Enqueue_Call,
- Parameter_Associations => Parameter_Associations (Ecall)),
+ Condition =>
+ Make_Function_Call (Loc,
+ Name => Enqueue_Call,
+ Parameter_Associations => Parameter_Associations (Ecall)),
Then_Statements =>
New_List (Make_Block_Statement (Loc,
Handled_Statement_Sequence =>
@@ -7161,13 +7181,14 @@ package body Exp_Ch9 is
Append_To (Stmts,
Make_Implicit_If_Statement (N,
- Condition => Make_Function_Call (Loc,
- Name => New_Reference_To (
- RTE (RE_Timed_Out), Loc),
- Parameter_Associations => New_List (
- Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Dblock_Ent, Loc),
- Attribute_Name => Name_Unchecked_Access))),
+ Condition =>
+ Make_Function_Call (Loc,
+ Name => New_Reference_To (
+ RTE (RE_Timed_Out), Loc),
+ Parameter_Associations => New_List (
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Reference_To (Dblock_Ent, Loc),
+ Attribute_Name => Name_Unchecked_Access))),
Then_Statements => Tstats));
-- The result is the new block
@@ -7179,8 +7200,8 @@ package body Exp_Ch9 is
Declarations => New_List (
Make_Object_Declaration (Loc,
Defining_Identifier => Dblock_Ent,
- Aliased_Present => True,
- Object_Definition => New_Reference_To (
+ Aliased_Present => True,
+ Object_Definition => New_Reference_To (
RTE (RE_Delay_Block), Loc))),
Handled_Statement_Sequence =>
@@ -7257,18 +7278,18 @@ package body Exp_Ch9 is
Append_To (Stmts,
Make_Implicit_If_Statement (N,
- Condition => Make_Function_Call (Loc,
- Name => New_Reference_To (RTE (RE_Enqueued), Loc),
- Parameter_Associations => New_List (
- New_Reference_To (Cancel_Param, Loc))),
+ Condition =>
+ Make_Function_Call (Loc,
+ Name => New_Reference_To (RTE (RE_Enqueued), Loc),
+ Parameter_Associations => New_List (
+ New_Reference_To (Cancel_Param, Loc))),
Then_Statements => Astats));
Abortable_Block :=
Make_Block_Statement (Loc,
Identifier => New_Reference_To (Blk_Ent, Loc),
Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc,
- Statements => Stmts),
+ Make_Handled_Sequence_Of_Statements (Loc, Statements => Stmts),
Has_Created_Identifier => True,
Is_Asynchronous_Call_Block => True);
@@ -7346,7 +7367,7 @@ package body Exp_Ch9 is
Prepend_To (Decls,
Make_Object_Declaration (Loc,
Defining_Identifier => B,
- Object_Definition => New_Reference_To (Standard_Boolean, Loc)));
+ Object_Definition => New_Reference_To (Standard_Boolean, Loc)));
Cancel_Param := Make_Defining_Identifier (Loc, Name_uC);
@@ -7355,7 +7376,7 @@ package body Exp_Ch9 is
Prepend_To (Decls,
Make_Object_Declaration (Loc,
Defining_Identifier => Cancel_Param,
- Object_Definition => New_Reference_To (Standard_Boolean, Loc)));
+ Object_Definition => New_Reference_To (Standard_Boolean, Loc)));
-- Remove and save the call to Call_Simple
@@ -7381,11 +7402,10 @@ package body Exp_Ch9 is
Abortable_Block :=
Make_Block_Statement (Loc,
- Identifier => New_Reference_To (Blk_Ent, Loc),
+ Identifier => New_Reference_To (Blk_Ent, Loc),
Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc,
- Statements => Astats),
- Has_Created_Identifier => True,
+ Make_Handled_Sequence_Of_Statements (Loc, Statements => Astats),
+ Has_Created_Identifier => True,
Is_Asynchronous_Call_Block => True);
Insert_After (Call,
@@ -7394,10 +7414,8 @@ package body Exp_Ch9 is
Make_Handled_Sequence_Of_Statements (Loc,
Statements => New_List (
Make_Implicit_Label_Declaration (Loc,
- Defining_Identifier =>
- Blk_Ent,
- Label_Construct =>
- Abortable_Block),
+ Defining_Identifier => Blk_Ent,
+ Label_Construct => Abortable_Block),
Abortable_Block),
Exception_Handlers => Hdle)));
@@ -7407,13 +7425,11 @@ package body Exp_Ch9 is
Append_To (Params,
New_Reference_To (RTE (RE_Asynchronous_Call), Loc));
- Append_To (Params,
- New_Reference_To (B, Loc));
+ Append_To (Params, New_Reference_To (B, Loc));
Rewrite (Call,
Make_Procedure_Call_Statement (Loc,
- Name =>
- New_Reference_To (RTE (RE_Task_Entry_Call), Loc),
+ Name => New_Reference_To (RTE (RE_Task_Entry_Call), Loc),
Parameter_Associations => Params));
-- Construct statement sequence for new block
@@ -7421,8 +7437,7 @@ package body Exp_Ch9 is
Append_To (Stmts,
Make_Implicit_If_Statement (N,
Condition =>
- Make_Op_Not (Loc,
- New_Reference_To (Cancel_Param, Loc)),
+ Make_Op_Not (Loc, New_Reference_To (Cancel_Param, Loc)),
Then_Statements => Tstats));
-- Protected the call against abort
@@ -7650,10 +7665,8 @@ package body Exp_Ch9 is
New_Copy_Tree (Obj), -- <object>
New_Reference_To (S, Loc), -- S
Make_Attribute_Reference (Loc, -- P'Address
- Prefix =>
- New_Reference_To (P, Loc),
- Attribute_Name =>
- Name_Address),
+ Prefix => New_Reference_To (P, Loc),
+ Attribute_Name => Name_Address),
New_Reference_To (C, Loc), -- C
New_Reference_To (B, Loc)))); -- B
@@ -7673,8 +7686,7 @@ package body Exp_Ch9 is
if Present (Unpack) then
Append_To (Conc_Typ_Stmts,
- Make_If_Statement (Loc,
-
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Or_Else (Loc,
Left_Opnd =>
@@ -7684,6 +7696,7 @@ package body Exp_Ch9 is
Right_Opnd =>
New_Reference_To (RTE (
RE_POK_Protected_Entry), Loc)),
+
Right_Opnd =>
Make_Op_Eq (Loc,
Left_Opnd =>
@@ -7691,8 +7704,7 @@ package body Exp_Ch9 is
Right_Opnd =>
New_Reference_To (RTE (RE_POK_Task_Entry), Loc))),
- Then_Statements =>
- Unpack));
+ Then_Statements => Unpack));
end if;
-- Generate:
@@ -7711,7 +7723,7 @@ package body Exp_Ch9 is
N_Stats := New_Copy_List_Tree (Statements (Alt));
Prepend_To (N_Stats,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Or_Else (Loc,
Left_Opnd =>
@@ -7743,8 +7755,8 @@ package body Exp_Ch9 is
New_List (Blk)));
Append_To (Conc_Typ_Stmts,
- Make_If_Statement (Loc,
- Condition => New_Reference_To (B, Loc),
+ Make_Implicit_If_Statement (N,
+ Condition => New_Reference_To (B, Loc),
Then_Statements => N_Stats,
Else_Statements => Else_Statements (N)));
@@ -7763,7 +7775,7 @@ package body Exp_Ch9 is
-- end if;
Append_To (Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Op_Eq (Loc,
Left_Opnd =>
@@ -7784,7 +7796,7 @@ package body Exp_Ch9 is
Handled_Statement_Sequence =>
Make_Handled_Sequence_Of_Statements (Loc, Stmts)));
- -- As described above, The entry alternative is transformed into a
+ -- As described above, the entry alternative is transformed into a
-- block that contains the gnulli call, and possibly assignment
-- statements for in-out parameters. The gnulli call may itself be
-- rewritten into a transient block if some unconstrained parameters
@@ -7861,7 +7873,7 @@ package body Exp_Ch9 is
Prepend_To (Declarations (Blk),
Make_Object_Declaration (Loc,
Defining_Identifier => B,
- Object_Definition =>
+ Object_Definition =>
New_Reference_To (Standard_Boolean, Loc)));
-- Create new call statement
@@ -7879,7 +7891,7 @@ package body Exp_Ch9 is
Append_To (Stmts,
Make_Implicit_If_Statement (N,
- Condition => New_Reference_To (B, Loc),
+ Condition => New_Reference_To (B, Loc),
Then_Statements => Statements (Alt),
Else_Statements => Else_Statements (N)));
end if;
@@ -9693,7 +9705,7 @@ package body Exp_Ch9 is
-- or else C = POK_Task_Entry
-- then
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Op_Or (Loc,
Left_Opnd =>
@@ -10001,8 +10013,8 @@ package body Exp_Ch9 is
Alts : constant List_Id := Select_Alternatives (N);
-- Note: in the below declarations a lot of new lists are allocated
- -- unconditionally which may well not end up being used. That's
- -- not a good idea since it wastes space gratuitously ???
+ -- unconditionally which may well not end up being used. That's not
+ -- a good idea since it wastes space gratuitously ???
Accept_Case : List_Id;
Accept_List : constant List_Id := New_List;
@@ -10012,7 +10024,6 @@ package body Exp_Ch9 is
Alt_Stats : List_Id;
Ann : Entity_Id := Empty;
- Block : Node_Id;
Check_Guard : Boolean := True;
Decls : constant List_Id := New_List;
@@ -10045,9 +10056,7 @@ package body Exp_Ch9 is
Num_Alts : Int;
Num_Accept : Nat := 0;
Proc : Node_Id;
- Q : Node_Id;
Time_Type : Entity_Id;
- X : Node_Id;
Select_Call : Node_Id;
Qnam : constant Entity_Id :=
@@ -10131,25 +10140,24 @@ package body Exp_Ch9 is
Stats := New_List (
Make_Implicit_Loop_Statement (N,
- Identifier => Empty,
Iteration_Scheme =>
Make_Iteration_Scheme (Loc,
Loop_Parameter_Specification =>
Make_Loop_Parameter_Specification (Loc,
- Defining_Identifier => J,
+ Defining_Identifier => J,
Discrete_Subtype_Definition =>
Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Qnam, Loc),
+ Prefix => New_Reference_To (Qnam, Loc),
Attribute_Name => Name_Range,
- Expressions => New_List (
+ Expressions => New_List (
Make_Integer_Literal (Loc, 1))))),
- Statements => New_List (
+ Statements => New_List (
Make_Implicit_If_Statement (N,
- Condition => Cond,
+ Condition => Cond,
Then_Statements => New_List (
Make_Select_Call (
- New_Reference_To (RTE (RE_Simple_Mode), Loc)),
+ New_Reference_To (RTE (RE_Simple_Mode), Loc)),
Make_Exit_Statement (Loc))))));
Append_To (Stats,
@@ -10217,12 +10225,12 @@ package body Exp_Ch9 is
Proc_Body :=
Make_Subprogram_Body (Eloc,
- Specification =>
+ Specification =>
Make_Procedure_Specification (Eloc,
Defining_Unit_Name => PB_Ent),
- Declarations => Declarations (Acc_Stm),
- Handled_Statement_Sequence =>
- Build_Accept_Body (Accept_Statement (Alt)));
+ Declarations => Declarations (Acc_Stm),
+ Handled_Statement_Sequence =>
+ Build_Accept_Body (Accept_Statement (Alt)));
-- During the analysis of the body of the accept statement, any
-- zero cost exception handler records were collected in the
@@ -10266,7 +10274,7 @@ package body Exp_Ch9 is
Make_Implicit_Label_Declaration (Loc,
Defining_Identifier =>
Make_Defining_Identifier (Loc, Chars (Lab_Id)),
- Label_Construct => Lab));
+ Label_Construct => Lab));
return Lab;
end Make_And_Declare_Label;
@@ -10281,11 +10289,11 @@ package body Exp_Ch9 is
begin
Append (
Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Qnam, Loc),
+ Prefix => New_Reference_To (Qnam, Loc),
Attribute_Name => Name_Unchecked_Access),
Params);
- Append (Select_Mode, Params);
- Append (New_Reference_To (Ann, Loc), Params);
+ Append (Select_Mode, Params);
+ Append (New_Reference_To (Ann, Loc), Params);
Append (New_Reference_To (Xnam, Loc), Params);
return
@@ -10303,60 +10311,54 @@ package body Exp_Ch9 is
Index : Int;
Proc : Node_Id)
is
- Choices : List_Id := No_List;
+ Astmt : constant Node_Id := Accept_Statement (Alt);
Alt_Stats : List_Id;
begin
Adjust_Condition (Condition (Alt));
- Alt_Stats := No_List;
-
- if Present (Handled_Statement_Sequence (Accept_Statement (Alt))) then
- Choices := New_List (
- Make_Integer_Literal (Loc, Index));
-
- Alt_Stats := New_List (
- Make_Procedure_Call_Statement (Sloc (Proc),
- Name => New_Reference_To (
- Defining_Unit_Name (Specification (Proc)), Sloc (Proc))));
- end if;
- if Statements (Alt) /= Empty_List then
+ -- Accept with body
- if No (Alt_Stats) then
+ if Present (Handled_Statement_Sequence (Astmt)) then
+ Alt_Stats :=
+ New_List (
+ Make_Procedure_Call_Statement (Sloc (Proc),
+ Name =>
+ New_Reference_To
+ (Defining_Unit_Name (Specification (Proc)),
+ Sloc (Proc))));
- -- Accept with no body, followed by trailing statements
+ -- Accept with no body (followed by trailing statements)
- Choices := New_List (
- Make_Integer_Literal (Loc, Index));
+ else
+ Alt_Stats := Empty_List;
+ end if;
- Alt_Stats := New_List;
- end if;
+ Ensure_Statement_Present (Sloc (Astmt), Alt);
- -- After the call, if any, branch to trailing statements. We
- -- create a label for each, as well as the corresponding label
- -- declaration.
+ -- After the call, if any, branch to trailing statements, if any.
+ -- We create a label for each, as well as the corresponding label
+ -- declaration.
+ if not Is_Empty_List (Statements (Alt)) then
Lab := Make_And_Declare_Label (Index);
- Append_To (Alt_Stats,
- Make_Goto_Statement (Loc,
- Name => New_Copy (Identifier (Lab))));
-
Append (Lab, Trailing_List);
Append_List (Statements (Alt), Trailing_List);
Append_To (Trailing_List,
Make_Goto_Statement (Loc,
Name => New_Copy (Identifier (End_Lab))));
- end if;
- if Present (Alt_Stats) then
+ else
+ Lab := End_Lab;
+ end if;
- -- Procedure call. and/or trailing statements
+ Append_To (Alt_Stats,
+ Make_Goto_Statement (Loc, Name => New_Copy (Identifier (Lab))));
- Append_To (Alt_List,
- Make_Case_Statement_Alternative (Loc,
- Discrete_Choices => Choices,
- Statements => Alt_Stats));
- end if;
+ Append_To (Alt_List,
+ Make_Case_Statement_Alternative (Loc,
+ Discrete_Choices => New_List (Make_Integer_Literal (Loc, Index)),
+ Statements => Alt_Stats));
end Process_Accept_Alternative;
-------------------------------
@@ -10364,7 +10366,7 @@ package body Exp_Ch9 is
-------------------------------
procedure Process_Delay_Alternative (Alt : Node_Id; Index : Int) is
- Choices : List_Id;
+ Dloc : constant Source_Ptr := Sloc (Delay_Statement (Alt));
Cond : Node_Id;
Delay_Alt : List_Id;
@@ -10388,14 +10390,12 @@ package body Exp_Ch9 is
-- The enclosing if-statement is omitted if there is no guard
- if Delay_Count = 1
- or else First_Delay
- then
+ if Delay_Count = 1 or else First_Delay then
First_Delay := False;
Delay_Alt := New_List (
Make_Assignment_Statement (Loc,
- Name => New_Reference_To (Delay_Min, Loc),
+ Name => New_Reference_To (Delay_Min, Loc),
Expression => Expression (Delay_Statement (Alt))));
if Delay_Count > 1 then
@@ -10408,7 +10408,7 @@ package body Exp_Ch9 is
else
Delay_Alt := New_List (
Make_Assignment_Statement (Loc,
- Name => New_Reference_To (Delay_Val, Loc),
+ Name => New_Reference_To (Delay_Val, Loc),
Expression => Expression (Delay_Statement (Alt))));
if Time_Type = Standard_Duration then
@@ -10426,10 +10426,11 @@ package body Exp_Ch9 is
Cond :=
Make_Function_Call (Loc,
Name => Make_Selected_Component (Loc,
- Prefix => New_Reference_To (Scope (Time_Type), Loc),
+ Prefix =>
+ New_Reference_To (Scope (Time_Type), Loc),
Selector_Name =>
Make_Operator_Symbol (Loc,
- Chars => Name_Op_Lt,
+ Chars => Name_Op_Lt,
Strval => No_String)),
Parameter_Associations =>
New_List (
@@ -10455,35 +10456,35 @@ package body Exp_Ch9 is
if Check_Guard then
Append_To (Delay_Alt,
Make_Assignment_Statement (Loc,
- Name => New_Reference_To (Guard_Open, Loc),
+ Name => New_Reference_To (Guard_Open, Loc),
Expression => New_Reference_To (Standard_True, Loc)));
end if;
if Present (Condition (Alt)) then
Delay_Alt := New_List (
Make_Implicit_If_Statement (N,
- Condition => Condition (Alt),
+ Condition => Condition (Alt),
Then_Statements => Delay_Alt));
end if;
Append_List (Delay_Alt, Delay_List);
+ Ensure_Statement_Present (Dloc, Alt);
+
-- If the delay alternative has a statement part, add choice to the
-- case statements for delays.
- if Present (Statements (Alt)) then
+ if not Is_Empty_List (Statements (Alt)) then
if Delay_Count = 1 then
Append_List (Statements (Alt), Delay_Alt_List);
else
- Choices := New_List (
- Make_Integer_Literal (Loc, Index));
-
Append_To (Delay_Alt_List,
Make_Case_Statement_Alternative (Loc,
- Discrete_Choices => Choices,
- Statements => Statements (Alt)));
+ Discrete_Choices => New_List (
+ Make_Integer_Literal (Loc, Index)),
+ Statements => Statements (Alt)));
end if;
elsif Delay_Count = 1 then
@@ -10588,36 +10589,30 @@ package body Exp_Ch9 is
-- If a guard is statically known to be false, the entry can simply
-- be omitted from the accept list.
- Q :=
+ Append_To (Decls,
Make_Object_Declaration (Loc,
Defining_Identifier => Qnam,
- Object_Definition =>
- New_Reference_To (RTE (RE_Accept_List), Loc),
- Aliased_Present => True,
-
- Expression =>
+ Object_Definition => New_Reference_To (RTE (RE_Accept_List), Loc),
+ Aliased_Present => True,
+ Expression =>
Make_Qualified_Expression (Loc,
Subtype_Mark =>
New_Reference_To (RTE (RE_Accept_List), Loc),
- Expression =>
- Make_Aggregate (Loc, Expressions => Accept_List)));
-
- Append (Q, Decls);
+ Expression =>
+ Make_Aggregate (Loc, Expressions => Accept_List))));
-- Then we declare the variable that holds the index for the accept
-- that will be selected for service:
-- Xnn : Select_Index;
- X :=
+ Append_To (Decls,
Make_Object_Declaration (Loc,
Defining_Identifier => Xnam,
Object_Definition =>
New_Reference_To (RTE (RE_Select_Index), Loc),
Expression =>
- New_Reference_To (RTE (RE_No_Rendezvous), Loc));
-
- Append (X, Decls);
+ New_Reference_To (RTE (RE_No_Rendezvous), Loc)));
-- After this follow procedure declarations for each accept body
@@ -10723,7 +10718,7 @@ package body Exp_Ch9 is
Append_To (Decls,
Make_Object_Declaration (Loc,
Defining_Identifier => D,
- Object_Definition =>
+ Object_Definition =>
New_Reference_To (Standard_Duration, Loc)));
Append_To (Decls,
@@ -10839,7 +10834,7 @@ package body Exp_Ch9 is
Append_To (Alt_List,
Make_Case_Statement_Alternative (Loc,
Discrete_Choices => Choices,
- Statements => Alt_Stats));
+ Statements => Alt_Stats));
-- We make use of the fact that Accept_Index is an integer type, and
-- generate successive literals for entries for each accept. Only those
@@ -10884,7 +10879,6 @@ package body Exp_Ch9 is
Alternatives => Alt_List));
Append_List (Trailing_List, Accept_Case);
- Append (End_Lab, Accept_Case);
Append_List (Body_List, Decls);
-- Construct case statement for trailing statements of delay
@@ -10957,7 +10951,7 @@ package body Exp_Ch9 is
end if;
Stmt := Make_Assignment_Statement (Loc,
- Name => New_Reference_To (D, Loc),
+ Name => New_Reference_To (D, Loc),
Expression => Conv);
-- Change the value for Accept_Modes. (Else_Mode -> Delay_Mode)
@@ -10965,9 +10959,7 @@ package body Exp_Ch9 is
Parms := Parameter_Associations (Select_Call);
Parm := First (Parms);
- while Present (Parm)
- and then Parm /= Select_Mode
- loop
+ while Present (Parm) and then Parm /= Select_Mode loop
Next (Parm);
end loop;
@@ -10997,10 +10989,10 @@ package body Exp_Ch9 is
if Check_Guard then
Stmt :=
Make_Implicit_If_Statement (N,
- Condition => New_Reference_To (Guard_Open, Loc),
- Then_Statements =>
- New_List (New_Copy_Tree (Stmt),
- New_Copy_Tree (Select_Call)),
+ Condition => New_Reference_To (Guard_Open, Loc),
+ Then_Statements => New_List (
+ New_Copy_Tree (Stmt),
+ New_Copy_Tree (Select_Call)),
Else_Statements => Accept_Or_Raise);
Rewrite (Select_Call, Stmt);
else
@@ -11020,17 +11012,15 @@ package body Exp_Ch9 is
Append (Cases, Stats);
end;
end if;
+ Append (End_Lab, Stats);
-- Replace accept statement with appropriate block
- Block :=
+ Rewrite (N,
Make_Block_Statement (Loc,
- Declarations => Decls,
+ Declarations => Decls,
Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc,
- Statements => Stats));
-
- Rewrite (N, Block);
+ Make_Handled_Sequence_Of_Statements (Loc, Statements => Stats)));
Analyze (N);
-- Note: have to worry more about abort deferral in above code ???
@@ -11783,11 +11773,11 @@ package body Exp_Ch9 is
-- T.E;
-- S1;
-- or
- -- Delay D;
+ -- delay D;
-- S2;
-- end select;
- -- is expanded as follow:
+ -- is expanded as follows:
-- 1) When T.E is a task entry_call;
@@ -11888,14 +11878,16 @@ package body Exp_Ch9 is
Call_Ent : Entity_Id;
Conc_Typ_Stmts : List_Id;
Concval : Node_Id;
+ D_Alt : constant Node_Id := Delay_Alternative (N);
D_Conv : Node_Id;
D_Disc : Node_Id;
- D_Stat : Node_Id;
+ D_Stat : Node_Id := Delay_Statement (D_Alt);
D_Stats : List_Id;
D_Type : Entity_Id;
Decls : List_Id;
Dummy : Node_Id;
- E_Call : Node_Id;
+ E_Alt : constant Node_Id := Entry_Call_Alternative (N);
+ E_Call : Node_Id := Entry_Call_Statement (E_Alt);
E_Stats : List_Id;
Ename : Node_Id;
Formals : List_Id;
@@ -11926,17 +11918,16 @@ package body Exp_Ch9 is
return;
end if;
- E_Call := Entry_Call_Statement (Entry_Call_Alternative (N));
- D_Stat := Delay_Statement (Delay_Alternative (N));
+ Process_Statements_For_Controlled_Objects (E_Alt);
+ Process_Statements_For_Controlled_Objects (D_Alt);
- Process_Statements_For_Controlled_Objects (Entry_Call_Alternative (N));
- Process_Statements_For_Controlled_Objects (Delay_Alternative (N));
+ Ensure_Statement_Present (Sloc (D_Stat), D_Alt);
-- Retrieve E_Stats and D_Stats now because the finalization machinery
-- may wrap them in blocks.
- E_Stats := Statements (Entry_Call_Alternative (N));
- D_Stats := Statements (Delay_Alternative (N));
+ E_Stats := Statements (E_Alt);
+ D_Stats := Statements (D_Alt);
-- The arguments in the call may require dynamic allocation, and the
-- call statement may have been transformed into a block. The block
@@ -12134,7 +12125,7 @@ package body Exp_Ch9 is
if Present (Unpack) then
Append_To (Conc_Typ_Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Or_Else (Loc,
@@ -12171,7 +12162,7 @@ package body Exp_Ch9 is
N_Stats := Copy_Separate_List (E_Stats);
Prepend_To (N_Stats,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Or_Else (Loc,
@@ -12199,7 +12190,7 @@ package body Exp_Ch9 is
Then_Statements => New_List (E_Call)));
Append_To (Conc_Typ_Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition => New_Reference_To (B, Loc),
Then_Statements => N_Stats,
Else_Statements => D_Stats));
@@ -12219,7 +12210,7 @@ package body Exp_Ch9 is
-- end if;
Append_To (Stmts,
- Make_If_Statement (Loc,
+ Make_Implicit_If_Statement (N,
Condition =>
Make_Op_Eq (Loc,
Left_Opnd => New_Reference_To (K, Loc),
@@ -13955,13 +13946,10 @@ package body Exp_Ch9 is
-- will allocate an array to hold the string names of task entries.
if not Restricted_Profile then
- if Has_Entries (Ttyp)
- and then Entry_Names_OK
- then
- Append_To (Args, New_Reference_To (Standard_True, Loc));
- else
- Append_To (Args, New_Reference_To (Standard_False, Loc));
- end if;
+ Append_To (Args,
+ New_Reference_To
+ (Boolean_Literals (Has_Entries (Ttyp) and then Entry_Names_OK),
+ Loc));
end if;
if Restricted_Profile then
diff --git a/gcc/ada/exp_dbug.ads b/gcc/ada/exp_dbug.ads
index ac722d7876f..0290168ff01 100644
--- a/gcc/ada/exp_dbug.ads
+++ b/gcc/ada/exp_dbug.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -411,14 +411,6 @@ package Exp_Dbug is
-- Conversion between Entities and External Names --
----------------------------------------------------
- No_Dollar_In_Label : constant Boolean := True;
- -- True iff the target does not allow dollar signs ("$") in external names
- -- ??? We want to migrate all platforms to use the same convention. As a
- -- first step, we force this constant to always be True. This constant will
- -- eventually be deleted after we have verified that the migration does not
- -- cause any unforeseen adverse impact. We chose "__" because it is
- -- supported on all platforms, which is not the case of "$".
-
procedure Get_External_Name
(Entity : Entity_Id;
Has_Suffix : Boolean);
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index fd175bd02c3..f2482826356 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -803,6 +803,11 @@ package body Exp_Disp is
Subp_Ptr_Typ := Create_Itype (E_Access_Subprogram_Type, Call_Node);
Set_Etype (Subp_Typ, Res_Typ);
Set_Returns_By_Ref (Subp_Typ, Returns_By_Ref (Subp));
+ Set_Convention (Subp_Typ, Convention (Subp));
+
+ -- Notify gigi that the designated type is a dispatching primitive
+
+ Set_Is_Dispatch_Table_Entity (Subp_Typ);
-- Create a new list of parameters which is a copy of the old formal
-- list including the creation of a new set of matching entities.
@@ -1850,6 +1855,7 @@ package body Exp_Disp is
Thunk_Id := Make_Temporary (Loc, 'T');
Set_Is_Thunk (Thunk_Id);
+ Set_Convention (Thunk_Id, Convention (Prim));
-- Procedure case
@@ -5771,7 +5777,7 @@ package body Exp_Disp is
Prefix => New_Reference_To (TSD, Loc),
Attribute_Name => Name_Address));
- -- Stage 2: Initialize the table of primitive operations
+ -- Stage 2: Initialize the table of user-defined primitive operations
Prim_Ops_Aggr_List := New_List;
@@ -6249,12 +6255,6 @@ package body Exp_Disp is
Elmt : Elmt_Id;
begin
- -- Ensure that entities Prim_Ptr and Predef_Prims_Table_Ptr have
- -- the decoration required by the backend
-
- Set_Is_Dispatch_Table_Entity (RTE (RE_Prim_Ptr));
- Set_Is_Dispatch_Table_Entity (RTE (RE_Predef_Prims_Table_Ptr));
-
-- Object declarations
Elmt := First_Elmt (DT_Decl);
@@ -7131,6 +7131,15 @@ package body Exp_Disp is
Set_Ekind (DT_Ptr, E_Variable);
Set_Related_Type (DT_Ptr, Typ);
+ -- Ensure that entities Prim_Ptr and Predef_Prims_Table_Ptr have
+ -- the decoration required by the backend.
+
+ -- Odd comment, the back end cannot require anything not properly
+ -- documented in einfo! ???
+
+ Set_Is_Dispatch_Table_Entity (RTE (RE_Prim_Ptr));
+ Set_Is_Dispatch_Table_Entity (RTE (RE_Predef_Prims_Table_Ptr));
+
-- For CPP types there is no need to build the dispatch tables since
-- they are imported from the C++ side. If the CPP type has an IP then
-- we declare now the variable that will store the copy of the C++ tag.
@@ -8468,8 +8477,9 @@ package body Exp_Disp is
Set_Init_Proc (Typ, Init);
Set_Is_Imported (Init);
+ Set_Is_Constructor (Init);
Set_Interface_Name (Init, Interface_Name (E));
- Set_Convention (Init, Convention_C);
+ Set_Convention (Init, Convention_CPP);
Set_Is_Public (Init);
Set_Has_Completion (Init);
end if;
@@ -8562,8 +8572,9 @@ package body Exp_Disp is
Parameter_Specifications => Parms));
Set_Is_Imported (Constructor_Id);
+ Set_Is_Constructor (Constructor_Id);
Set_Interface_Name (Constructor_Id, Interface_Name (E));
- Set_Convention (Constructor_Id, Convention_C);
+ Set_Convention (Constructor_Id, Convention_CPP);
Set_Is_Public (Constructor_Id);
Set_Has_Completion (Constructor_Id);
@@ -8849,7 +8860,8 @@ package body Exp_Disp is
-- If the DTC_Entity attribute is already set we can also output
-- the name of the interface covered by this primitive (if any).
- if Present (DTC_Entity (Alias (Prim)))
+ if Ekind_In (Alias (Prim), E_Function, E_Procedure)
+ and then Present (DTC_Entity (Alias (Prim)))
and then Is_Interface (Scope (DTC_Entity (Alias (Prim))))
then
Write_Str (" from interface ");
diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb
index 73befd16742..0d9ed4ee19d 100644
--- a/gcc/ada/exp_pakd.adb
+++ b/gcc/ada/exp_pakd.adb
@@ -543,6 +543,41 @@ package body Exp_Pakd is
-- array type on the fly). Such actions are inserted into the tree
-- directly using Insert_Action.
+ function Byte_Swap (N : Node_Id) return Node_Id;
+ -- Wrap N in a call to a byte swapping function, with appropriate type
+ -- conversions.
+
+ ---------------
+ -- Byte_Swap --
+ ---------------
+
+ function Byte_Swap (N : Node_Id) return Node_Id is
+ Loc : constant Source_Ptr := Sloc (N);
+ T : constant Entity_Id := Etype (N);
+ Swap_RE : RE_Id;
+ Swap_F : Entity_Id;
+
+ begin
+ pragma Assert (Esize (T) > 8);
+
+ if Esize (T) <= 16 then
+ Swap_RE := RE_Bswap_16;
+ elsif Esize (T) <= 32 then
+ Swap_RE := RE_Bswap_32;
+ else pragma Assert (Esize (T) <= 64);
+ Swap_RE := RE_Bswap_64;
+ end if;
+
+ Swap_F := RTE (Swap_RE);
+
+ return
+ Unchecked_Convert_To (T,
+ Make_Function_Call (Loc,
+ Name => New_Occurrence_Of (Swap_F, Loc),
+ Parameter_Associations =>
+ New_List (Unchecked_Convert_To (Etype (Swap_F), N))));
+ end Byte_Swap;
+
------------------------------
-- Compute_Linear_Subscript --
------------------------------
@@ -1304,6 +1339,12 @@ package body Exp_Pakd is
-- contains the value. Otherwise Rhs_Val_Known is set False, and
-- the Rhs_Val is undefined.
+ Require_Byte_Swapping : Boolean := False;
+ -- True if byte swapping required, for the Reverse_Storage_Order case
+ -- when the packed array is a free-standing object. (If it is part
+ -- of a composite type, and therefore potentially not aligned on a byte
+ -- boundary, the swapping is done by the back-end).
+
function Get_Shift return Node_Id;
-- Function used to get the value of Shift, making sure that it
-- gets duplicated if the function is called more than once.
@@ -1415,6 +1456,11 @@ package body Exp_Pakd is
-- Obj := atyp!((Obj and Mask1) or (shift_left (rhs, Shift)))
+ -- or in the case of a freestanding Reverse_Storage_Order object,
+
+ -- Obj := Swap (atyp!((Swap (Obj) and Mask1)
+ -- or (shift_left (rhs, Shift))))
+
-- where Mask1 is obtained by shifting Cmask left Shift bits
-- and then complementing the result.
@@ -1485,6 +1531,14 @@ package body Exp_Pakd is
Set_Etype (Obj, T);
Set_Etype (New_Lhs, T);
Set_Etype (New_Rhs, T);
+
+ if Reverse_Storage_Order (Base_Type (Atyp))
+ and then Esize (T) > 8
+ and then not In_Reverse_Storage_Order_Object (Obj)
+ then
+ Require_Byte_Swapping := True;
+ New_Rhs := Byte_Swap (New_Rhs);
+ end if;
end;
-- First we deal with the "and"
@@ -1593,8 +1647,7 @@ package body Exp_Pakd is
-- Note that Rhs_Val has already been normalized to
-- be an unsigned value with the proper number of bits.
- Rhs :=
- Make_Integer_Literal (Loc, Rhs_Val);
+ Rhs := Make_Integer_Literal (Loc, Rhs_Val);
-- Otherwise we need an unchecked conversion
@@ -1616,6 +1669,11 @@ package body Exp_Pakd is
end;
end if;
+ if Require_Byte_Swapping then
+ Set_Etype (New_Rhs, Etype (Obj));
+ New_Rhs := Byte_Swap (New_Rhs);
+ end if;
+
-- Now do the rewrite
Rewrite (N,
@@ -1978,6 +2036,17 @@ package body Exp_Pakd is
Lit := Make_Integer_Literal (Loc, Cmask);
Set_Print_In_Hex (Lit);
+ -- Byte swapping required for the Reverse_Storage_Order case, but
+ -- only for a free-standing object (see note on Require_Byte_Swapping
+ -- in Expand_Bit_Packed_Element_Set).
+
+ if Reverse_Storage_Order (Atyp)
+ and then Esize (Atyp) > 8
+ and then not In_Reverse_Storage_Order_Object (Obj)
+ then
+ Obj := Byte_Swap (Obj);
+ end if;
+
-- We generate a shift right to position the field, followed by a
-- masking operation to extract the bit field, and we finally do an
-- unchecked conversion to convert the result to the required target.
@@ -2727,7 +2796,7 @@ package body Exp_Pakd is
-- We also have to adjust if the storage order is reversed
- if Bytes_Big_Endian xor In_Reverse_Storage_Order_Record (Obj) then
+ if Bytes_Big_Endian xor Reverse_Storage_Order (Base_Type (Atyp)) then
Shift :=
Make_Op_Subtract (Loc,
Left_Opnd => Make_Integer_Literal (Loc, Osiz - Csiz),
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index a732da215c4..f7b9d450128 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -3818,20 +3818,20 @@ package body Exp_Util is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Insert_Actions (Assoc_Node, Ins_Actions);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Insert_Actions (Assoc_Node, Ins_Actions);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Insert_Actions;
@@ -6272,9 +6272,9 @@ package body Exp_Util is
Name_Req : Boolean := False;
Variable_Ref : Boolean := False)
is
- Loc : constant Source_Ptr := Sloc (Exp);
- Exp_Type : constant Entity_Id := Etype (Exp);
- Svg_Suppress : constant Suppress_Array := Scope_Suppress;
+ Loc : constant Source_Ptr := Sloc (Exp);
+ Exp_Type : constant Entity_Id := Etype (Exp);
+ Svg_Suppress : constant Suppress_Record := Scope_Suppress;
Def_Id : Entity_Id;
E : Node_Id;
New_Exp : Node_Id;
@@ -6705,7 +6705,7 @@ package body Exp_Util is
-- All this must not have any checks
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
-- If it is a scalar type and we need to capture the value, just make
-- a copy. Likewise for a function call, an attribute reference, an
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 5464462a229..ad9f06a0675 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -42,7 +42,7 @@ with Nmake; use Nmake;
with Opt; use Opt;
with Restrict; use Restrict;
with Rident; use Rident;
-with Rtsfind; use Rtsfind;
+with Rtsfind; use Rtsfind;
with Sem; use Sem;
with Sem_Aux; use Sem_Aux;
with Sem_Cat; use Sem_Cat;
@@ -88,6 +88,14 @@ package body Freeze is
-- Apply legality checks to address clauses for object declarations,
-- at the point the object is frozen.
+ procedure Check_Component_Storage_Order
+ (Encl_Type : Entity_Id;
+ Comp : Entity_Id);
+ -- For an Encl_Type that has a Scalar_Storage_Order attribute definition
+ -- clause, verify that the component type is compatible. For arrays,
+ -- Comp is Empty; for records, it is the entity of the component under
+ -- consideration.
+
procedure Check_Strict_Alignment (E : Entity_Id);
-- E is a base type. If E is tagged or has a component that is aliased
-- or tagged or contains something this is aliased or tagged, set
@@ -1008,6 +1016,76 @@ package body Freeze is
Set_Size_Known_At_Compile_Time (T, Size_Known (T));
end Check_Compile_Time_Size;
+ -----------------------------------
+ -- Check_Component_Storage_Order --
+ -----------------------------------
+
+ procedure Check_Component_Storage_Order
+ (Encl_Type : Entity_Id;
+ Comp : Entity_Id)
+ is
+ Comp_Type : Entity_Id;
+ Comp_Def : Node_Id;
+ Err_Node : Node_Id;
+ ADC : Node_Id;
+
+ Comp_Byte_Aligned : Boolean;
+ -- Set True for the record case, when Comp starts on a byte boundary
+ -- (in which case it is allowed to have different storage order).
+
+ begin
+ -- Record case
+
+ if Present (Comp) then
+ Err_Node := Comp;
+ Comp_Type := Etype (Comp);
+ Comp_Def := Component_Definition (Parent (Comp));
+
+ Comp_Byte_Aligned :=
+ Present (Component_Clause (Comp))
+ and then Normalized_First_Bit (Comp) mod System_Storage_Unit = 0;
+
+ -- Array case
+
+ else
+ Err_Node := Encl_Type;
+ Comp_Type := Component_Type (Encl_Type);
+ Comp_Def := Component_Definition
+ (Type_Definition (Declaration_Node (Encl_Type)));
+
+ Comp_Byte_Aligned := False;
+ end if;
+
+ -- Note: the Reverse_Storage_Order flag is set on the base type, but
+ -- the attribute definition clause is attached to the first subtype.
+
+ Comp_Type := Base_Type (Comp_Type);
+ ADC := Get_Attribute_Definition_Clause
+ (First_Subtype (Comp_Type),
+ Attribute_Scalar_Storage_Order);
+
+ if Is_Record_Type (Comp_Type) or else Is_Array_Type (Comp_Type) then
+ if No (ADC) then
+ Error_Msg_N ("nested composite must have explicit scalar "
+ & "storage order", Err_Node);
+
+ elsif (Reverse_Storage_Order (Encl_Type)
+ /=
+ Reverse_Storage_Order (Etype (Comp_Type)))
+ and then not Comp_Byte_Aligned
+ then
+ Error_Msg_N
+ ("type of non-byte-aligned component must have same scalar "
+ & "storage order as enclosing composite", Err_Node);
+ end if;
+
+ elsif Aliased_Present (Comp_Def) then
+ Error_Msg_N
+ ("aliased component not permitted for type with "
+ & "explicit Scalar_Storage_Order", Err_Node);
+ end if;
+ end Check_Component_Storage_Order;
+
-----------------------------
-- Check_Debug_Info_Needed --
-----------------------------
@@ -1814,6 +1892,11 @@ package body Freeze is
Junk : Boolean;
pragma Warnings (Off, Junk);
+ Rec_Pushed : Boolean := False;
+ -- Set True if the record type scope Rec has been pushed on the scope
+ -- stack. Needed for the analysis of delayed aspects specified to the
+ -- components of Rec.
+
Unplaced_Component : Boolean := False;
-- Set True if we find at least one component with no component
-- clause (used to warn about useless Pack pragmas).
@@ -1901,17 +1984,56 @@ package body Freeze is
-- Start of processing for Freeze_Record_Type
begin
+ -- Deal with delayed aspect specifications for components. The
+ -- analysis of the aspect is required to be delayed to the freeze
+ -- point, thus we analyze the pragma or attribute definition
+ -- clause in the tree at this point. We also analyze the aspect
+ -- specification node at the freeze point when the aspect doesn't
+ -- correspond to pragma/attribute definition clause.
+
+ Comp := First_Entity (Rec);
+ while Present (Comp) loop
+ if Ekind (Comp) = E_Component
+ and then Has_Delayed_Aspects (Comp)
+ then
+ if not Rec_Pushed then
+ Push_Scope (Rec);
+ Rec_Pushed := True;
+
+ -- The visibility to the discriminants must be restored in
+ -- order to properly analyze the aspects.
+
+ if Has_Discriminants (Rec) then
+ Install_Discriminants (Rec);
+ end if;
+ end if;
+
+ Analyze_Aspects_At_Freeze_Point (Comp);
+ end if;
+
+ Next_Entity (Comp);
+ end loop;
+
+ -- Pop the scope if Rec scope has been pushed on the scope stack
+ -- during the delayed aspect analysis process.
+
+ if Rec_Pushed then
+ if Has_Discriminants (Rec) then
+ Uninstall_Discriminants (Rec);
+ end if;
+
+ Pop_Scope;
+ end if;
+
-- Freeze components and embedded subtypes
Comp := First_Entity (Rec);
Prev := Empty;
while Present (Comp) loop
- -- First handle the component case
+ -- Handle the component and discriminant case
- if Ekind (Comp) = E_Component
- or else Ekind (Comp) = E_Discriminant
- then
+ if Ekind_In (Comp, E_Component, E_Discriminant) then
declare
CC : constant Node_Id := Component_Clause (Comp);
@@ -2158,12 +2280,21 @@ package body Freeze is
end if;
-- Warn if there is a Scalar_Storage_Order but no component clause
+ -- (or pragma Pack).
- if not Placed_Component then
+ if not (Placed_Component or else Is_Packed (Rec)) then
Error_Msg_N
("?scalar storage order specified but no component clause",
ADC);
end if;
+
+ -- Check attribute on component types
+
+ Comp := First_Component (Rec);
+ while Present (Comp) loop
+ Check_Component_Storage_Order (Rec, Comp);
+ Next_Component (Comp);
+ end loop;
end if;
-- Deal with Bit_Order aspect specifying a non-default bit order
@@ -2171,7 +2302,7 @@ package body Freeze is
ADC := Get_Attribute_Definition_Clause (Rec, Attribute_Bit_Order);
if Present (ADC) and then Base_Type (Rec) = Rec then
- if not Placed_Component then
+ if not (Placed_Component or else Is_Packed (Rec)) then
Error_Msg_N ("?bit order specification has no effect", ADC);
Error_Msg_N
("\?since no component clauses were specified", ADC);
@@ -2895,6 +3026,23 @@ package body Freeze is
end if;
end if;
end;
+
+ -- Pre/post conditions are implemented through a subprogram in
+ -- the corresponding body, and therefore are not checked on an
+ -- imported subprogram for which the body is not available.
+
+ -- Could consider generating a wrapper to take care of this???
+
+ if Is_Subprogram (E)
+ and then Is_Imported (E)
+ and then Present (Contract (E))
+ and then Present (Spec_PPC_List (Contract (E)))
+ then
+ Error_Msg_NE ("pre/post conditions on imported subprogram "
+ & "are not enforced?",
+ E, Spec_PPC_List (Contract (E)));
+ end if;
+
end if;
-- Must freeze its parent first if it is a derived subprogram
@@ -3286,11 +3434,22 @@ package body Freeze is
end if;
end if;
+ -- A subtype inherits all the type-related representation aspects
+ -- from its parents (RM 13.1(8)).
+
+ Inherit_Aspects_At_Freeze_Point (E);
+
-- For a derived type, freeze its parent type first (RM 13.14(15))
elsif Is_Derived_Type (E) then
Freeze_And_Append (Etype (E), N, Result);
Freeze_And_Append (First_Subtype (Etype (E)), N, Result);
+
+ -- A derived type inherits each type-related representation aspect
+ -- of its parent type that was directly specified before the
+ -- declaration of the derived type (RM 13.1(15)).
+
+ Inherit_Aspects_At_Freeze_Point (E);
end if;
-- For array type, freeze index types and component type first
@@ -3628,6 +3787,14 @@ package body Freeze is
end if;
end if;
+ -- Check for scalar storage order
+
+ if Present (Get_Attribute_Definition_Clause
+ (E, Attribute_Scalar_Storage_Order))
+ then
+ Check_Component_Storage_Order (E, Empty);
+ end if;
+
-- Processing that is done only for subtypes
else
@@ -3737,11 +3904,19 @@ package body Freeze is
return Result;
end if;
- -- If the Class_Wide_Type is an Itype (when type is the anonymous
- -- parent of a derived type) and it is a library-level entity,
- -- generate an itype reference for it. Otherwise, its first
- -- explicit reference may be in an inner scope, which will be
- -- rejected by the back-end.
+ -- The equivalent type associated with a class-wide subtype needs
+ -- to be frozen to ensure that its layout is done.
+
+ if Ekind (E) = E_Class_Wide_Subtype
+ and then Present (Equivalent_Type (E))
+ then
+ Freeze_And_Append (Equivalent_Type (E), N, Result);
+ end if;
+
+ -- Generate an itype reference for a library-level class-wide type
+ -- at the freeze point. Otherwise the first explicit reference to
+ -- the type may appear in an inner scope which will be rejected by
+ -- the back-end.
if Is_Itype (E)
and then Is_Compilation_Unit (Scope (E))
@@ -3751,28 +3926,29 @@ package body Freeze is
begin
Set_Itype (Ref, E);
- Add_To_Result (Ref);
- end;
- end if;
- -- The equivalent type associated with a class-wide subtype needs
- -- to be frozen to ensure that its layout is done.
+ -- From a gigi point of view, a class-wide subtype derives
+ -- from its record equivalent type. As a result, the itype
+ -- reference must appear after the freeze node of the
+ -- equivalent type or gigi will reject the reference.
- if Ekind (E) = E_Class_Wide_Subtype
- and then Present (Equivalent_Type (E))
- then
- Freeze_And_Append (Equivalent_Type (E), N, Result);
+ if Ekind (E) = E_Class_Wide_Subtype
+ and then Present (Equivalent_Type (E))
+ then
+ Insert_After (Freeze_Node (Equivalent_Type (E)), Ref);
+ else
+ Add_To_Result (Ref);
+ end if;
+ end;
end if;
- -- For a record (sub)type, freeze all the component types (RM
- -- 13.14(15). We test for E_Record_(sub)Type here, rather than using
- -- Is_Record_Type, because we don't want to attempt the freeze for
- -- the case of a private type with record extension (we will do that
- -- later when the full type is frozen).
+ -- For a record type or record subtype, freeze all component types
+ -- (RM 13.14(15)). We test for E_Record_(sub)Type here, rather than
+ -- using Is_Record_Type, because we don't want to attempt the freeze
+ -- for the case of a private type with record extension (we will do
+ -- that later when the full type is frozen).
- elsif Ekind (E) = E_Record_Type
- or else Ekind (E) = E_Record_Subtype
- then
+ elsif Ekind_In (E, E_Record_Type, E_Record_Subtype) then
Freeze_Record_Type (E);
-- For a concurrent type, freeze corresponding record type. This
@@ -4036,13 +4212,17 @@ package body Freeze is
Check_Suspicious_Modulus (E);
end if;
- elsif Is_Access_Type (E) then
-
+ elsif Is_Access_Type (E)
+ and then not Is_Access_Subprogram_Type (E)
+ then
-- If a pragma Default_Storage_Pool applies, and this type has no
-- Storage_Pool or Storage_Size clause (which must have occurred
-- before the freezing point), then use the default. This applies
-- only to base types.
+ -- None of this applies to access to subprograms, for which there
+ -- are clearly no pools.
+
if Present (Default_Pool)
and then Is_Base_Type (E)
and then not Has_Storage_Size_Clause (E)
@@ -4697,16 +4877,17 @@ package body Freeze is
else
Id := Defining_Unit_Name (Specification (P));
+ -- Following complex conditional could use comments ???
+
if Nkind (Id) = N_Defining_Identifier
- and then (Is_Init_Proc (Id) or else
- Is_TSS (Id, TSS_Stream_Input) or else
- Is_TSS (Id, TSS_Stream_Output) or else
- Is_TSS (Id, TSS_Stream_Read) or else
- Is_TSS (Id, TSS_Stream_Write) or else
- Nkind (Original_Node (P)) =
- N_Subprogram_Renaming_Declaration or else
- Nkind (Original_Node (P)) =
- N_Expression_Function)
+ and then (Is_Init_Proc (Id)
+ or else Is_TSS (Id, TSS_Stream_Input)
+ or else Is_TSS (Id, TSS_Stream_Output)
+ or else Is_TSS (Id, TSS_Stream_Read)
+ or else Is_TSS (Id, TSS_Stream_Write)
+ or else Nkind_In (Original_Node (P),
+ N_Subprogram_Renaming_Declaration,
+ N_Expression_Function))
then
return True;
else
@@ -5122,7 +5303,7 @@ package body Freeze is
if not Is_Compilation_Unit (Current_Scope)
and then (Is_Record_Type (Scope (Current_Scope))
or else Nkind (Parent (Current_Scope)) =
- N_Quantified_Expression)
+ N_Quantified_Expression)
then
Pos := Pos - 1;
end if;
diff --git a/gcc/ada/frontend.adb b/gcc/ada/frontend.adb
index 35e7d9e769b..749e94875d7 100644
--- a/gcc/ada/frontend.adb
+++ b/gcc/ada/frontend.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -283,6 +283,12 @@ begin
if Config_Pragmas /= Error_List
and then Operating_Mode /= Check_Syntax
+
+ -- Do not attempt to process deferred configuration pragmas if the main
+ -- unit failed to load, to avoid cascaded inconsistencies that can lead
+ -- to a compiler crash.
+
+ and then not Fatal_Error (Main_Unit)
then
-- Pragmas that require some semantic activity, such as
-- Interrupt_State, cannot be processed until the main unit
diff --git a/gcc/ada/g-bytswa.adb b/gcc/ada/g-bytswa.adb
index 329c078fff4..9628bbc5da9 100644
--- a/gcc/ada/g-bytswa.adb
+++ b/gcc/ada/g-bytswa.adb
@@ -34,20 +34,9 @@
with Ada.Unchecked_Conversion; use Ada;
-package body GNAT.Byte_Swapping is
-
- type U16 is mod 2**16;
- type U32 is mod 2**32;
- type U64 is mod 2**64;
-
- function Bswap_16 (X : U16) return U16 is (X / 256 or X * 256);
- -- The above is an idiom recognized by GCC
-
- function Bswap_32 (X : U32) return U32;
- pragma Import (Intrinsic, Bswap_32, "__builtin_bswap32");
+with System.Byte_Swapping; use System.Byte_Swapping;
- function Bswap_64 (X : U64) return U64;
- pragma Import (Intrinsic, Bswap_64, "__builtin_bswap64");
+package body GNAT.Byte_Swapping is
--------------
-- Swapped2 --
@@ -56,9 +45,6 @@ package body GNAT.Byte_Swapping is
function Swapped2 (Input : Item) return Item is
function As_U16 is new Unchecked_Conversion (Item, U16);
function As_Item is new Unchecked_Conversion (U16, Item);
-
- function Bswap_16 (X : U16) return U16 is (X / 256 or X * 256);
- -- ??? Need to have function local here to allow inlining
pragma Compile_Time_Error (Item'Max_Size_In_Storage_Elements /= 2,
"storage size must be 2 bytes");
begin
@@ -123,4 +109,5 @@ package body GNAT.Byte_Swapping is
begin
X := Bswap_64 (X);
end Swap8;
+
end GNAT.Byte_Swapping;
diff --git a/gcc/ada/g-bytswa.ads b/gcc/ada/g-bytswa.ads
index 7e0dd8fc46d..35656fc8045 100644
--- a/gcc/ada/g-bytswa.ads
+++ b/gcc/ada/g-bytswa.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2011, AdaCore --
+-- Copyright (C) 2006-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/g-debpoo.adb b/gcc/ada/g-debpoo.adb
index ef7ce9e3dbd..5ee63d9896f 100644
--- a/gcc/ada/g-debpoo.adb
+++ b/gcc/ada/g-debpoo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -668,9 +668,8 @@ package body GNAT.Debug_Pools is
-- terms of wasted memory). To do that, all we should have to do it to
-- set the size of this array to the page size. See mprotect().
- P : Ptr;
-
Current : Byte_Count;
+ P : Ptr;
Trace : Traceback_Htable_Elem_Ptr;
begin
@@ -693,7 +692,9 @@ package body GNAT.Debug_Pools is
-- Use standard (i.e. through malloc) allocations. This automatically
-- raises Storage_Error if needed. We also try once more to physically
-- release memory, so that even marked blocks, in the advanced scanning,
- -- are freed.
+ -- are freed. Note that we do not initialize the storage array since it
+ -- is not necessary to do so (however this will cause bogus valgrind
+ -- warnings, which should simply be ignored).
begin
P := new Local_Storage_Array;
diff --git a/gcc/ada/g-dirope.adb b/gcc/ada/g-dirope.adb
index d68db87a9c4..bf579f57da4 100644
--- a/gcc/ada/g-dirope.adb
+++ b/gcc/ada/g-dirope.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2010, AdaCore --
+-- Copyright (C) 1998-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -604,12 +604,8 @@ package body GNAT.Directory_Operations is
procedure Make_Dir (Dir_Name : Dir_Name_Str) is
C_Dir_Name : constant String := Dir_Name & ASCII.NUL;
-
- function mkdir (Dir_Name : String) return Integer;
- pragma Import (C, mkdir, "__gnat_mkdir");
-
begin
- if mkdir (C_Dir_Name) /= 0 then
+ if CRTL.mkdir (C_Dir_Name, Unspecified) /= 0 then
raise Directory_Error;
end if;
end Make_Dir;
diff --git a/gcc/ada/g-sercom-linux.adb b/gcc/ada/g-sercom-linux.adb
index db1aec76553..d485c1b75e3 100644
--- a/gcc/ada/g-sercom-linux.adb
+++ b/gcc/ada/g-sercom-linux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2010, AdaCore --
+-- Copyright (C) 2007-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -38,11 +38,14 @@ with Ada.Unchecked_Deallocation;
with System; use System;
with System.Communication; use System.Communication;
with System.CRTL; use System.CRTL;
+with System.OS_Constants;
with GNAT.OS_Lib; use GNAT.OS_Lib;
package body GNAT.Serial_Communications is
+ package OSC renames System.OS_Constants;
+
use type Interfaces.C.unsigned;
type Port_Data is new int;
@@ -54,43 +57,26 @@ package body GNAT.Serial_Communications is
function fcntl (fd : int; cmd : int; value : int) return int;
pragma Import (C, fcntl, "fcntl");
- O_RDWR : constant := 8#02#;
- O_NOCTTY : constant := 8#0400#;
- O_NDELAY : constant := 8#04000#;
- FNDELAY : constant := O_NDELAY;
- F_SETFL : constant := 4;
- TCSANOW : constant := 0;
- TCIFLUSH : constant := 0;
- CLOCAL : constant := 8#04000#;
- CREAD : constant := 8#0200#;
- CSTOPB : constant := 8#0100#;
- CRTSCTS : constant := 8#020000000000#;
- PARENB : constant := 8#00400#;
- PARODD : constant := 8#01000#;
-
- -- c_cc indexes
-
- VTIME : constant := 5;
- VMIN : constant := 6;
-
C_Data_Rate : constant array (Data_Rate) of unsigned :=
- (B1200 => 8#000011#,
- B2400 => 8#000013#,
- B4800 => 8#000014#,
- B9600 => 8#000015#,
- B19200 => 8#000016#,
- B38400 => 8#000017#,
- B57600 => 8#010001#,
- B115200 => 8#010002#);
+ (B1200 => OSC.B1200,
+ B2400 => OSC.B2400,
+ B4800 => OSC.B4800,
+ B9600 => OSC.B9600,
+ B19200 => OSC.B19200,
+ B38400 => OSC.B38400,
+ B57600 => OSC.B57600,
+ B115200 => OSC.B115200);
C_Bits : constant array (Data_Bits) of unsigned :=
- (CS7 => 8#040#, CS8 => 8#060#);
+ (CS7 => OSC.CS7, CS8 => OSC.CS8);
C_Stop_Bits : constant array (Stop_Bits_Number) of unsigned :=
- (One => 0, Two => CSTOPB);
+ (One => 0, Two => OSC.CSTOPB);
C_Parity : constant array (Parity_Check) of unsigned :=
- (None => 0, Odd => PARENB or PARODD, Even => PARENB);
+ (None => 0,
+ Odd => OSC.PARENB or OSC.PARODD,
+ Even => OSC.PARENB);
procedure Raise_Error (Message : String; Error : Integer := Errno);
pragma No_Return (Raise_Error);
@@ -114,6 +100,8 @@ package body GNAT.Serial_Communications is
(Port : out Serial_Port;
Name : Port_Name)
is
+ use OSC;
+
C_Name : constant String := String (Name) & ASCII.NUL;
Res : int;
@@ -184,8 +172,12 @@ package body GNAT.Serial_Communications is
Stop_Bits : Stop_Bits_Number := One;
Parity : Parity_Check := None;
Block : Boolean := True;
+ Local : Boolean := True;
+ Flow : Flow_Control := None;
Timeout : Duration := 10.0)
is
+ use OSC;
+
type termios is record
c_iflag : unsigned;
c_oflag : unsigned;
@@ -229,12 +221,24 @@ package body GNAT.Serial_Communications is
or C_Bits (Bits)
or C_Stop_Bits (Stop_Bits)
or C_Parity (Parity)
- or CLOCAL
- or CREAD
- or CRTSCTS;
- Current.c_lflag := 0;
+ or CREAD;
Current.c_iflag := 0;
+ Current.c_lflag := 0;
Current.c_oflag := 0;
+
+ if Local then
+ Current.c_cflag := Current.c_cflag or CLOCAL;
+ end if;
+
+ case Flow is
+ when None =>
+ null;
+ when RTS_CTS =>
+ Current.c_cflag := Current.c_cflag or CRTSCTS;
+ when Xon_Xoff =>
+ Current.c_iflag := Current.c_iflag or IXON;
+ end case;
+
Current.c_ispeed := Data_Rate_Value (Rate);
Current.c_ospeed := Data_Rate_Value (Rate);
Current.c_cc (VMIN) := char'Val (0);
diff --git a/gcc/ada/g-sercom-mingw.adb b/gcc/ada/g-sercom-mingw.adb
index df3754b685a..afc4d4773be 100644
--- a/gcc/ada/g-sercom-mingw.adb
+++ b/gcc/ada/g-sercom-mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2010, AdaCore --
+-- Copyright (C) 2007-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -37,11 +37,14 @@ with Ada.Streams; use Ada.Streams;
with System; use System;
with System.Communication; use System.Communication;
with System.CRTL; use System.CRTL;
+with System.OS_Constants;
with System.Win32; use System.Win32;
with System.Win32.Ext; use System.Win32.Ext;
package body GNAT.Serial_Communications is
+ package OSC renames System.OS_Constants;
+
-- Common types
type Port_Data is new HANDLE;
@@ -175,8 +178,12 @@ package body GNAT.Serial_Communications is
Stop_Bits : Stop_Bits_Number := One;
Parity : Parity_Check := None;
Block : Boolean := True;
+ Local : Boolean := True;
+ Flow : Flow_Control := None;
Timeout : Duration := 10.0)
is
+ pragma Unreferenced (Local);
+
Success : BOOL;
Com_Time_Out : aliased COMMTIMEOUTS;
Com_Settings : aliased DCB;
@@ -197,13 +204,26 @@ package body GNAT.Serial_Communications is
Com_Settings.BaudRate := DWORD (Data_Rate_Value (Rate));
Com_Settings.fParity := 1;
Com_Settings.fBinary := Bits1 (System.Win32.TRUE);
- Com_Settings.fOutxCtsFlow := 0;
Com_Settings.fOutxDsrFlow := 0;
Com_Settings.fDsrSensitivity := 0;
- Com_Settings.fDtrControl := DTR_CONTROL_DISABLE;
- Com_Settings.fOutX := 0;
+ Com_Settings.fDtrControl := OSC.DTR_CONTROL_ENABLE;
Com_Settings.fInX := 0;
- Com_Settings.fRtsControl := RTS_CONTROL_DISABLE;
+ Com_Settings.fRtsControl := OSC.RTS_CONTROL_ENABLE;
+
+ case Flow is
+ when None =>
+ Com_Settings.fOutX := 0;
+ Com_Settings.fOutxCtsFlow := 0;
+
+ when RTS_CTS =>
+ Com_Settings.fOutX := 0;
+ Com_Settings.fOutxCtsFlow := 1;
+
+ when Xon_Xoff =>
+ Com_Settings.fOutX := 1;
+ Com_Settings.fOutxCtsFlow := 0;
+ end case;
+
Com_Settings.fAbortOnError := 0;
Com_Settings.ByteSize := BYTE (C_Bits (Bits));
Com_Settings.Parity := BYTE (C_Parity (Parity));
diff --git a/gcc/ada/g-sercom.adb b/gcc/ada/g-sercom.adb
index 0df096522f7..c2b511c59c7 100644
--- a/gcc/ada/g-sercom.adb
+++ b/gcc/ada/g-sercom.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2010, AdaCore --
+-- Copyright (C) 2007-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -82,6 +82,8 @@ package body GNAT.Serial_Communications is
Stop_Bits : Stop_Bits_Number := One;
Parity : Parity_Check := None;
Block : Boolean := True;
+ Local : Boolean := True;
+ Flow : Flow_Control := None;
Timeout : Duration := 10.0)
is
begin
diff --git a/gcc/ada/g-sercom.ads b/gcc/ada/g-sercom.ads
index 5ea1bb2f7c3..573eba280b6 100644
--- a/gcc/ada/g-sercom.ads
+++ b/gcc/ada/g-sercom.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2010, AdaCore --
+-- Copyright (C) 2007-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -62,6 +62,9 @@ package GNAT.Serial_Communications is
type Parity_Check is (None, Even, Odd);
-- Either no parity check or an even or odd parity
+ type Flow_Control is (None, RTS_CTS, Xon_Xoff);
+ -- No flow control, hardware flow control, software flow control
+
type Serial_Port is new Ada.Streams.Root_Stream_Type with private;
procedure Open
@@ -77,12 +80,17 @@ package GNAT.Serial_Communications is
Stop_Bits : Stop_Bits_Number := One;
Parity : Parity_Check := None;
Block : Boolean := True;
+ Local : Boolean := True;
+ Flow : Flow_Control := None;
Timeout : Duration := 10.0);
-- The communication port settings. If Block is set then a read call
-- will wait for the whole buffer to be filed. If Block is not set then
- -- the given Timeout (in seconds) is used. Note that the timeout precision
- -- may be limited on some implementation (e.g. on GNU/Linux the maximum
- -- precision is a tenth of seconds).
+ -- the given Timeout (in seconds) is used. If Local is set then modem
+ -- control lines (in particular DCD) are ignored (not supported on
+ -- Windows). Flow indicates the flow control type as defined above.
+ --
+ -- Note that the timeout precision may be limited on some implementation
+ -- (e.g. on GNU/Linux the maximum precision is a tenth of seconds).
overriding procedure Read
(Port : in out Serial_Port;
diff --git a/gcc/ada/g-socket.adb b/gcc/ada/g-socket.adb
index d48065a23f5..ac03f42165e 100644
--- a/gcc/ada/g-socket.adb
+++ b/gcc/ada/g-socket.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2011, AdaCore --
+-- Copyright (C) 2001-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -480,9 +480,7 @@ package body GNAT.Sockets is
-- no check required. Warnings suppressed because condition
-- is known at compile time.
- pragma Warnings (Off);
if Target_OS = Windows then
- pragma Warnings (On);
return;
@@ -1112,6 +1110,7 @@ package body GNAT.Sockets is
Level : Level_Type := Socket_Level;
Name : Option_Name) return Option_Type
is
+ use SOSC;
use type C.unsigned_char;
V8 : aliased Two_Ints;
@@ -1144,8 +1143,19 @@ package body GNAT.Sockets is
when Send_Timeout |
Receive_Timeout =>
- Len := VT'Size / 8;
- Add := VT'Address;
+
+ -- The standard argument for SO_RCVTIMEO and SO_SNDTIMEO is a
+ -- struct timeval, but on Windows it is a milliseconds count in
+ -- a DWORD.
+
+ if Target_OS = Windows then
+ Len := V4'Size / 8;
+ Add := V4'Address;
+
+ else
+ Len := VT'Size / 8;
+ Add := VT'Address;
+ end if;
when Linger |
Add_Membership |
@@ -1201,7 +1211,21 @@ package body GNAT.Sockets is
when Send_Timeout |
Receive_Timeout =>
- Opt.Timeout := To_Duration (VT);
+
+ if Target_OS = Windows then
+
+ -- Timeout is in milliseconds, actual value is 500 ms +
+ -- returned value (unless it is 0).
+
+ if V4 = 0 then
+ Opt.Timeout := 0.0;
+ else
+ Opt.Timeout := Natural (V4) * 0.001 + 0.500;
+ end if;
+
+ else
+ Opt.Timeout := To_Duration (VT);
+ end if;
end case;
return Opt;
@@ -1705,8 +1729,6 @@ package body GNAT.Sockets is
Item : out Ada.Streams.Stream_Element_Array;
Last : out Ada.Streams.Stream_Element_Offset)
is
- pragma Warnings (Off, Stream);
-
First : Ada.Streams.Stream_Element_Offset := Item'First;
Index : Ada.Streams.Stream_Element_Offset := First - 1;
Max : constant Ada.Streams.Stream_Element_Offset := Item'Last;
@@ -2176,6 +2198,8 @@ package body GNAT.Sockets is
Level : Level_Type := Socket_Level;
Option : Option_Type)
is
+ use SOSC;
+
V8 : aliased Two_Ints;
V4 : aliased C.int;
V1 : aliased C.unsigned_char;
@@ -2236,9 +2260,30 @@ package body GNAT.Sockets is
when Send_Timeout |
Receive_Timeout =>
- VT := To_Timeval (Option.Timeout);
- Len := VT'Size / 8;
- Add := VT'Address;
+
+ if Target_OS = Windows then
+
+ -- On Windows, the timeout is a DWORD in milliseconds, and
+ -- the actual timeout is 500 ms + the given value (unless it
+ -- is 0).
+
+ V4 := C.int (Option.Timeout / 0.001);
+
+ if V4 > 500 then
+ V4 := V4 - 500;
+
+ elsif V4 > 0 then
+ V4 := 1;
+ end if;
+
+ Len := V4'Size / 8;
+ Add := V4'Address;
+
+ else
+ VT := To_Timeval (Option.Timeout);
+ Len := VT'Size / 8;
+ Add := VT'Address;
+ end if;
end case;
@@ -2261,17 +2306,12 @@ package body GNAT.Sockets is
use type C.unsigned_short;
begin
- -- Big-endian case. No conversion needed. On these platforms,
- -- htons() defaults to a null procedure.
-
- pragma Warnings (Off);
- -- Since the test can generate "always True/False" warning
+ -- Big-endian case. No conversion needed. On these platforms, htons()
+ -- defaults to a null procedure.
if Default_Bit_Order = High_Order_First then
return S;
- pragma Warnings (On);
-
-- Little-endian case. We must swap the high and low bytes of this
-- short to make the port number network compliant.
diff --git a/gcc/ada/g-spitbo.adb b/gcc/ada/g-spitbo.adb
index 22677d72695..22677149ee1 100644
--- a/gcc/ada/g-spitbo.adb
+++ b/gcc/ada/g-spitbo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2010, AdaCore --
+-- Copyright (C) 1998-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -305,7 +305,7 @@ package body GNAT.Spitbol is
begin
if Start > Str'Length then
raise Index_Error;
- elsif Start + Len > Str'Length then
+ elsif Start + Len - 1 > Str'Length then
raise Length_Error;
else
return
diff --git a/gcc/ada/g-spitbo.ads b/gcc/ada/g-spitbo.ads
index 94068f83af0..e97bb62d033 100644
--- a/gcc/ada/g-spitbo.ads
+++ b/gcc/ada/g-spitbo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1997-2010, AdaCore --
+-- Copyright (C) 1997-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -180,7 +180,7 @@ package GNAT.Spitbol is
-- Returns the substring starting at the given character position (which
-- is always counted from the start of the string, regardless of bounds,
-- e.g. 2 means starting with the second character of the string), and
- -- with the length (Len) given. Indexing_Error is raised if the starting
+ -- with the length (Len) given. Index_Error is raised if the starting
-- position is out of range, and Length_Error is raised if Len is too long.
function Trim (Str : VString) return VString;
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index c9ddd9bfc4d..ba5148abdaa 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -1024,7 +1024,7 @@ ada/trans.o : ada/gcc-interface/trans.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
ada/utils.o : ada/gcc-interface/utils.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(FLAGS_H) toplev.h $(RTL_H) output.h debug.h convert.h \
$(TARGET_H) $(COMMON_TARGET_H) function.h langhooks.h \
- $(CGRAPH_H) $(DIAGNOSTIC_H) \
+ $(CGRAPH_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
$(TREE_DUMP_H) $(TREE_INLINE_H) tree-iterator.h \
ada/gcc-interface/ada.h ada/types.h ada/atree.h ada/elists.h ada/namet.h \
ada/nlists.h ada/stringt.h ada/uintp.h ada/fe.h ada/sinfo.h ada/einfo.h \
@@ -1116,12 +1116,12 @@ ada/ali.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
ada/namet.adb ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-htable.adb ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+ ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
ada/alloc.o : ada/alloc.ads ada/system.ads
@@ -1193,12 +1193,12 @@ ada/binde.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
ada/namet.adb ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
ada/system.ads ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/widechar.ads
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
ada/binderr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/binderr.ads ada/binderr.adb \
@@ -1216,12 +1216,12 @@ ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/g-hesora.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/osint.ads ada/osint-b.ads ada/output.ads \
ada/rident.ads ada/system.ads ada/s-casuti.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
- ada/unchconv.ads ada/unchdeal.ads
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/bindusg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/bindusg.ads ada/bindusg.adb \
@@ -2348,35 +2348,30 @@ ada/gnat.o : ada/gnat.ads ada/system.ads
ada/gnat1drv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.adb ada/back_end.ads ada/casing.ads ada/comperr.ads \
- ada/csets.ads ada/debug.ads ada/debug_a.ads ada/einfo.ads ada/einfo.adb \
- ada/elists.ads ada/elists.adb ada/err_vars.ads ada/errout.ads \
- ada/erroutc.ads ada/exp_cg.ads ada/exp_ch6.ads ada/exp_tss.ads \
- ada/expander.ads ada/fmap.ads ada/fname.ads ada/fname-uf.ads \
+ ada/csets.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
+ ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_cg.ads \
+ ada/exp_ch6.ads ada/fmap.ads ada/fname.ads ada/fname-uf.ads \
ada/frontend.ads ada/get_targ.ads ada/gnat.ads ada/g-byorma.ads \
ada/g-hesorg.ads ada/g-table.ads ada/g-table.adb ada/gnat1drv.ads \
ada/gnat1drv.adb ada/gnatvsn.ads ada/hostparm.ads ada/inline.ads \
- ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-load.ads \
- ada/lib-sort.adb ada/lib-util.ads ada/lib-writ.ads ada/lib-xref.ads \
- ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/opt.ads \
- ada/osint.ads ada/output.ads ada/par_sco.ads ada/prepcomp.ads \
- ada/put_alfa.ads ada/repinfo.ads ada/restrict.ads ada/rident.ads \
- ada/rtsfind.ads ada/scans.ads ada/scos.ads ada/sem.ads ada/sem.adb \
- ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch10.ads ada/sem_ch11.ads \
- ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch3.ads \
- ada/sem_ch4.ads ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch7.ads \
- ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_elim.ads ada/sem_eval.ads \
- ada/sem_prag.ads ada/sem_type.ads ada/sem_util.ads ada/sinfo.ads \
- ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/sinput-l.ads \
- ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
- ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-bitops.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tree_gen.ads \
- ada/tree_io.ads ada/treepr.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/usage.ads ada/validsw.ads ada/widechar.ads
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
+ ada/lib-util.ads ada/lib-writ.ads ada/lib-xref.ads ada/namet.ads \
+ ada/nlists.ads ada/opt.ads ada/osint.ads ada/output.ads ada/par_sco.ads \
+ ada/prepcomp.ads ada/put_alfa.ads ada/repinfo.ads ada/restrict.ads \
+ ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/scos.ads ada/sem.ads \
+ ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch8.ads ada/sem_elim.ads \
+ ada/sem_eval.ads ada/sem_type.ads ada/sinfo.ads ada/sinfo.adb \
+ ada/sinput.ads ada/sinput.adb ada/sinput-l.ads ada/snames.ads \
+ ada/sprint.ads ada/stand.ads ada/stringt.ads ada/stylesw.ads \
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tree_gen.ads ada/tree_io.ads ada/treepr.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/usage.ads \
+ ada/validsw.ads ada/widechar.ads
ada/gnatbind.o : ada/ada.ads ada/a-comlin.ads ada/a-clrefi.ads \
ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads ada/ali.ads \
@@ -2737,20 +2732,21 @@ ada/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/par_sco.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
- ada/fname.ads ada/gnat.ads ada/g-byorma.ads ada/g-hesorg.ads \
- ada/g-hesorg.adb ada/g-htable.ads ada/g-table.ads ada/g-table.adb \
- ada/hostparm.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-sort.adb ada/lib-util.ads ada/lib-util.adb ada/namet.ads \
- ada/nlists.ads ada/nlists.adb ada/opt.ads ada/osint.ads ada/osint-c.ads \
- ada/output.ads ada/par_sco.ads ada/par_sco.adb ada/put_scos.ads \
- ada/put_scos.adb ada/scans.ads ada/scos.ads ada/scos.adb ada/sinfo.ads \
- ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/fname.ads \
+ ada/gnat.ads ada/g-byorma.ads ada/g-hesorg.ads ada/g-hesorg.adb \
+ ada/g-htable.ads ada/g-table.ads ada/g-table.adb ada/hostparm.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
+ ada/lib-util.ads ada/lib-util.adb ada/namet.ads ada/nlists.ads \
+ ada/nlists.adb ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads \
+ ada/par_sco.ads ada/par_sco.adb ada/put_scos.ads ada/put_scos.adb \
+ ada/scans.ads ada/scos.ads ada/scos.adb ada/sinfo.ads ada/sinfo.adb \
+ ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
+ ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/prep.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -3336,23 +3332,24 @@ ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
ada/output.ads ada/put_alfa.ads ada/restrict.ads ada/rident.ads \
ada/rtsfind.ads ada/rtsfind.adb ada/scans.ads ada/sem.ads \
- ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch13.ads \
- ada/sem_ch13.adb ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch7.ads \
- ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_dim.ads ada/sem_disp.ads \
- ada/sem_dist.ads ada/sem_eval.ads ada/sem_eval.adb ada/sem_prag.ads \
- ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
- ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
- ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
- ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
- ada/validsw.ads ada/warnsw.ads ada/widechar.ads
+ ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_cat.ads \
+ ada/sem_ch13.ads ada/sem_ch13.adb ada/sem_ch3.ads ada/sem_ch6.ads \
+ ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_dim.ads \
+ ada/sem_disp.ads ada/sem_dist.ads ada/sem_eval.ads ada/sem_eval.adb \
+ ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
+ ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
+ ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
+ ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
+ ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/urealp.adb ada/validsw.ads ada/warnsw.ads \
+ ada/widechar.ads
ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3449,31 +3446,32 @@ ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/exp_disp.ads ada/exp_pakd.ads ada/exp_tss.ads ada/exp_util.ads \
ada/exp_util.adb ada/expander.ads ada/fname.ads ada/fname-uf.ads \
ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-hesorg.ads \
- ada/g-htable.ads ada/hostparm.ads ada/inline.ads ada/itypes.ads \
- ada/lib.ads ada/lib-load.ads ada/lib-util.ads ada/lib-xref.ads \
- ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
- ada/opt.ads ada/output.ads ada/par_sco.ads ada/put_alfa.ads \
- ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
- ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_aggr.ads ada/sem_attr.ads \
- ada/sem_aux.ads ada/sem_case.ads ada/sem_case.adb ada/sem_cat.ads \
- ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads \
- ada/sem_ch2.ads ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch5.ads \
- ada/sem_ch5.adb ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads \
- ada/sem_ch9.ads ada/sem_dim.ads ada/sem_disp.ads ada/sem_dist.ads \
- ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads ada/sem_eval.adb \
- ada/sem_intr.ads ada/sem_prag.ads ada/sem_res.ads ada/sem_res.adb \
- ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
- ada/sem_warn.adb ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
- ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
- ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+ ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads ada/inline.ads \
+ ada/itypes.ads ada/lib.ads ada/lib-load.ads ada/lib-util.ads \
+ ada/lib-xref.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
+ ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads \
+ ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \
+ ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb \
+ ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_case.ads \
+ ada/sem_case.adb ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch11.ads \
+ ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch3.ads \
+ ada/sem_ch4.ads ada/sem_ch5.ads ada/sem_ch5.adb ada/sem_ch6.ads \
+ ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_dim.ads \
+ ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads \
+ ada/sem_eval.ads ada/sem_eval.adb ada/sem_intr.ads ada/sem_prag.ads \
+ ada/sem_res.ads ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads \
+ ada/sem_util.adb ada/sem_warn.ads ada/sem_warn.adb ada/sinfo.ads \
+ ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads \
+ ada/sprint.ads ada/stand.ads ada/stringt.ads ada/style.ads \
+ ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3576,39 +3574,40 @@ ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
- ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
- ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
- ada/csets.ads ada/debug.ads ada/debug_a.ads ada/einfo.ads ada/einfo.adb \
- ada/elists.ads ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
- ada/eval_fat.ads ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch4.ads \
- ada/exp_ch6.ads ada/exp_ch7.ads ada/exp_ch9.ads ada/exp_disp.ads \
- ada/exp_pakd.ads ada/exp_tss.ads ada/exp_util.ads ada/expander.ads \
- ada/fname.ads ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads \
- ada/gnat.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \
- ada/inline.ads ada/itypes.ads ada/layout.ads ada/lib.ads \
- ada/lib-load.ads ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
- ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
- ada/opt.adb ada/output.ads ada/put_alfa.ads ada/restrict.ads \
- ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/scans.ads \
- ada/sem.ads ada/sem.adb ada/sem_aggr.ads ada/sem_attr.ads \
- ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch11.ads \
- ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch3.ads \
- ada/sem_ch4.ads ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch7.ads \
- ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_ch9.adb ada/sem_dim.ads \
- ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads \
- ada/sem_eval.ads ada/sem_intr.ads ada/sem_prag.ads ada/sem_res.ads \
- ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
- ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
- ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
- ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
+ ada/atree.ads ada/atree.adb ada/casing.ads ada/checks.ads \
+ ada/checks.adb ada/csets.ads ada/debug.ads ada/debug_a.ads \
+ ada/einfo.ads ada/einfo.adb ada/elists.ads ada/err_vars.ads \
+ ada/errout.ads ada/erroutc.ads ada/eval_fat.ads ada/exp_ch11.ads \
+ ada/exp_ch2.ads ada/exp_ch4.ads ada/exp_ch6.ads ada/exp_ch7.ads \
+ ada/exp_ch9.ads ada/exp_disp.ads ada/exp_pakd.ads ada/exp_tss.ads \
+ ada/exp_util.ads ada/expander.ads ada/fname.ads ada/fname-uf.ads \
+ ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-htable.ads \
+ ada/gnatvsn.ads ada/hostparm.ads ada/inline.ads ada/itypes.ads \
+ ada/layout.ads ada/lib.ads ada/lib-load.ads ada/lib-util.ads \
+ ada/lib-xref.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
+ ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads \
+ ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+ ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_aggr.ads \
+ ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch10.ads \
+ ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch2.ads \
+ ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch5.ads ada/sem_ch6.ads \
+ ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_ch9.adb \
+ ada/sem_dim.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads \
+ ada/sem_elim.ads ada/sem_eval.ads ada/sem_intr.ads ada/sem_prag.ads \
+ ada/sem_res.ads ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads \
+ ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
+ ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/sprint.ads \
+ ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/validsw.ads
ada/sem_dim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index 11dfa7199a5..887a62fd37f 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -784,16 +784,32 @@ ifeq ($(strip $(filter-out sparc% wrs vx%,$(targ))),)
s-tasinf.ads<s-tasinf-vxworks.ads \
s-taspri.ads<s-taspri-vxworks.ads \
s-tpopsp.adb<s-tpopsp-vxworks.adb \
- s-vxwork.ads<s-vxwork-sparcv9.ads \
g-socthi.ads<g-socthi-vxworks.ads \
g-socthi.adb<g-socthi-vxworks.adb \
- g-stsifd.adb<g-stsifd-sockets.adb \
- system.ads<system-vxworks-sparcv9.ads \
+ g-stsifd.adb<g-stsifd-sockets.adb
TOOLS_TARGET_PAIRS=\
mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
indepsw.adb<indepsw-gnu.adb
+ ifeq ($(arch),sparc)
+ # 32-bits
+ LIBGNAT_TARGET_PAIRS += \
+ s-vxwork.ads<s-vxwork-sparc.ads \
+ system.ads<system-vxworks-sparc-kernel.ads
+ else
+ # 64-bits
+ LIBGNAT_TARGET_PAIRS += \
+ s-vxwork.ads<s-vxwork-sparcv9.ads \
+ system.ads<system-vxworks-sparcv9.ads
+ endif
+
+ ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
+ LIBGNAT_TARGET_PAIRS += \
+ s-vxwext.ads<s-vxwext-kernel.ads \
+ s-vxwext.adb<s-vxwext-kernel.adb
+ endif
+
EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o s-vxwext.o
@@ -2014,7 +2030,7 @@ ifeq ($(strip $(filter-out ia64% hp hpux%,$(targ))),)
s-osinte.ads<s-osinte-hpux.ads \
s-osprim.adb<s-osprim-posix.adb \
s-taprop.adb<s-taprop-posix.adb \
- s-taspri.ads<s-taspri-posix-noaltstack.ads \
+ s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
system.ads<system-hpux-ia64.ads \
$(ATOMICS_TARGET_PAIRS) \
@@ -2024,10 +2040,11 @@ ifeq ($(strip $(filter-out ia64% hp hpux%,$(targ))),)
mlib-tgt-specific.adb<mlib-tgt-specific-ia64-hpux.adb
MISCLIB=
+ EH_MECHANISM=-gcc
THREADSLIB=-lpthread
GNATLIB_SHARED=gnatlib-shared-dual
GMEM_LIB = gmemlib
- soext = .sl
+ soext = .so
SO_OPTS = -Wl,+h,
LIBRARY_VERSION := $(LIB_VERSION)
endif
@@ -2799,15 +2816,18 @@ gnatlib-shared:
$(GNATLIB_SHARED)
# When building a SJLJ runtime for VxWorks, in addition to forcing
-# ZCX_By_default to True, we need to ensure that -crtbe linker options
-# is not passed. Otherwise we will end with weak symbols on
-# __register_frame_info and __deregister_frame_info. The VxWorks 5.x
-# will issue an error on weak symbols.
+# ZCX_By_default to False, we need to ensure that extra linker options
+# are not passed to prevent the inclusion of useless objects and
+# potential troubles from the presence of extra symbols and references
+# in some configurations. The inhibition is performed by commenting
+# the pragma instead of deleting the line, as the latter might result
+# in getting multiple blank lines, hence a style check error, as a
+# result.
gnatlib-sjlj:
$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \
THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
- cat $(RTSDIR)/s.ads | grep -v "Linker_Options.*-crtbe" > $(RTSDIR)/s2.ads
+ sed -e 's/\(pragma Linker.*crtbe.*\)/-- \1/' $(RTSDIR)/s.ads > $(RTSDIR)/s2.ads
$(RM) $(RTSDIR)/s.ads
$(MV) $(RTSDIR)/s2.ads $(RTSDIR)/system.ads
$(MAKE) $(FLAGS_TO_PASS) \
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 169e03eea8a..cb0f074d7d2 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -50,19 +50,23 @@
#include "ada-tree.h"
#include "gigi.h"
-/* Convention_Stdcall should be processed in a specific way on 32 bits
- Windows targets only. The macro below is a helper to avoid having to
- check for a Windows specific attribute throughout this unit. */
+/* "stdcall" and "thiscall" conventions should be processed in a specific way
+ on 32-bit x86/Windows only. The macros below are helpers to avoid having
+ to check for a Windows specific attribute throughout this unit. */
#if TARGET_DLLIMPORT_DECL_ATTRIBUTES
#ifdef TARGET_64BIT
#define Has_Stdcall_Convention(E) \
(!TARGET_64BIT && Convention (E) == Convention_Stdcall)
+#define Has_Thiscall_Convention(E) \
+ (!TARGET_64BIT && is_cplusplus_method (E))
#else
#define Has_Stdcall_Convention(E) (Convention (E) == Convention_Stdcall)
+#define Has_Thiscall_Convention(E) (is_cplusplus_method (E))
#endif
#else
#define Has_Stdcall_Convention(E) 0
+#define Has_Thiscall_Convention(E) 0
#endif
/* Stack realignment is necessary for functions with foreign conventions when
@@ -891,6 +895,16 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
debug_info_p);
}
+ /* ??? If this is an object of CW type initialized to a value, try to
+ ensure that the object is sufficient aligned for this value, but
+ without pessimizing the allocation. This is a kludge necessary
+ because we don't support dynamic alignment. */
+ if (align == 0
+ && Ekind (Etype (gnat_entity)) == E_Class_Wide_Subtype
+ && No (Renamed_Object (gnat_entity))
+ && No (Address_Clause (gnat_entity)))
+ align = get_target_system_allocator_alignment () * BITS_PER_UNIT;
+
#ifdef MINIMUM_ATOMIC_ALIGNMENT
/* If the size is a constant and no alignment is specified, force
the alignment to be the minimum valid atomic alignment. The
@@ -900,7 +914,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
necessary and can interfere with constant replacement. Finally,
do not do it for Out parameters since that creates an
size inconsistency with In parameters. */
- if (align == 0 && MINIMUM_ATOMIC_ALIGNMENT > TYPE_ALIGN (gnu_type)
+ if (align == 0
+ && MINIMUM_ATOMIC_ALIGNMENT > TYPE_ALIGN (gnu_type)
&& !FLOAT_TYPE_P (gnu_type)
&& !const_flag && No (Renamed_Object (gnat_entity))
&& !imported_p && No (Address_Clause (gnat_entity))
@@ -2973,6 +2988,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
if (Present (Parent_Subtype (gnat_entity)))
{
Entity_Id gnat_parent = Parent_Subtype (gnat_entity);
+ tree gnu_dummy_parent_type = make_node (RECORD_TYPE);
tree gnu_parent;
/* A major complexity here is that the parent subtype will
@@ -2984,11 +3000,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
each of those discriminants to a COMPONENT_REF of the above
dummy parent referencing the corresponding discriminant of the
base type of the parent subtype. */
- gnu_get_parent = build3 (COMPONENT_REF, void_type_node,
+ gnu_get_parent = build3 (COMPONENT_REF, gnu_dummy_parent_type,
build0 (PLACEHOLDER_EXPR, gnu_type),
build_decl (input_location,
FIELD_DECL, NULL_TREE,
- void_type_node),
+ gnu_dummy_parent_type),
NULL_TREE);
if (has_discr)
@@ -3283,9 +3299,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
else
gnu_unpad_base_type = gnu_base_type;
- /* Look for a REP part in the base type. */
- gnu_rep_part = get_rep_part (gnu_unpad_base_type);
-
/* Look for a variant part in the base type. */
gnu_variant_part = get_variant_part (gnu_unpad_base_type);
@@ -3411,7 +3424,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
and put the field either in the new type if there is a
selected variant or in one of the new variants. */
if (gnu_context == gnu_unpad_base_type
- || (gnu_rep_part
+ || ((gnu_rep_part = get_rep_part (gnu_unpad_base_type))
&& gnu_context == TREE_TYPE (gnu_rep_part)))
gnu_cont_type = gnu_type;
else
@@ -3421,7 +3434,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
t = NULL_TREE;
FOR_EACH_VEC_ELT (variant_desc, gnu_variant_list, i, v)
- if (v->type == gnu_context)
+ if (gnu_context == v->type
+ || ((gnu_rep_part = get_rep_part (v->type))
+ && gnu_context == TREE_TYPE (gnu_rep_part)))
{
t = v->type;
break;
@@ -4413,6 +4428,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
(&attr_list, ATTR_MACHINE_ATTRIBUTE,
get_identifier ("stdcall"), NULL_TREE,
gnat_entity);
+ else if (Has_Thiscall_Convention (gnat_entity))
+ prepend_one_attribute_to
+ (&attr_list, ATTR_MACHINE_ATTRIBUTE,
+ get_identifier ("thiscall"), NULL_TREE,
+ gnat_entity);
/* If we should request stack realignment for a foreign convention
subprogram, do so. Note that this applies to task entry points in
@@ -5276,6 +5296,10 @@ get_minimal_subprog_decl (Entity_Id gnat_entity)
prepend_one_attribute_to (&attr_list, ATTR_MACHINE_ATTRIBUTE,
get_identifier ("stdcall"), NULL_TREE,
gnat_entity);
+ else if (Has_Thiscall_Convention (gnat_entity))
+ prepend_one_attribute_to (&attr_list, ATTR_MACHINE_ATTRIBUTE,
+ get_identifier ("thiscall"), NULL_TREE,
+ gnat_entity);
if (No (Interface_Name (gnat_entity)) && gnu_ext_name == gnu_entity_name)
gnu_ext_name = NULL_TREE;
@@ -5285,6 +5309,39 @@ get_minimal_subprog_decl (Entity_Id gnat_entity)
false, true, true, true, attr_list, gnat_entity);
}
+/* Return whether the E_Subprogram_Type/E_Function/E_Procedure GNAT_ENTITY is
+ a C++ imported method or equivalent.
+
+ We use the predicate on 32-bit x86/Windows to find out whether we need to
+ use the "thiscall" calling convention for GNAT_ENTITY. This convention is
+ used for C++ methods (functions with METHOD_TYPE) by the back-end. */
+
+bool
+is_cplusplus_method (Entity_Id gnat_entity)
+{
+ if (Convention (gnat_entity) != Convention_CPP)
+ return False;
+
+ /* This is the main case: C++ method imported as a primitive operation. */
+ if (Is_Dispatching_Operation (gnat_entity))
+ return True;
+
+ /* A thunk needs to be handled like its associated primitive operation. */
+ if (Is_Subprogram (gnat_entity) && Is_Thunk (gnat_entity))
+ return True;
+
+ /* C++ classes with no virtual functions can be imported as limited
+ record types, but we need to return true for the constructors. */
+ if (Is_Constructor (gnat_entity))
+ return True;
+
+ /* This is set on the E_Subprogram_Type built for a dispatching call. */
+ if (Is_Dispatch_Table_Entity (gnat_entity))
+ return True;
+
+ return False;
+}
+
/* Finalize the processing of From_With_Type incomplete types. */
void
@@ -8000,6 +8057,10 @@ intrin_return_compatible_p (intrin_binding_t * inb)
&& !VOID_TYPE_P (btin_return_type))
return true;
+ /* If return type is Address (integer type), map it to void *. */
+ if (Is_Descendent_Of_Address (Etype (inb->gnat_entity)))
+ ada_return_type = ptr_void_type_node;
+
/* Check return types compatibility otherwise. Note that this
handles void/void as well. */
if (intrin_types_incompatible_p (btin_return_type, ada_return_type))
@@ -8122,7 +8183,8 @@ get_rep_part (tree record_type)
/* The REP part is the first field, internal, another record, and its name
starts with an 'R'. */
- if (DECL_INTERNAL_P (field)
+ if (field
+ && DECL_INTERNAL_P (field)
&& TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE
&& IDENTIFIER_POINTER (DECL_NAME (field)) [0] == 'R')
return field;
diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h
index cfa52b069db..6edead04b6b 100644
--- a/gcc/ada/gcc-interface/gigi.h
+++ b/gcc/ada/gcc-interface/gigi.h
@@ -116,6 +116,10 @@ extern tree get_unpadded_type (Entity_Id gnat_entity);
alias is already present, in which case it is returned instead. */
extern tree get_minimal_subprog_decl (Entity_Id gnat_entity);
+/* Return whether the E_Subprogram_Type/E_Function/E_Procedure GNAT_ENTITY is
+ a C++ imported method or equivalent. */
+extern bool is_cplusplus_method (Entity_Id gnat_entity);
+
/* Create a record type that contains a SIZE bytes long field of TYPE with a
starting bit position so that it is aligned to ALIGN bits, and leaving at
least ROOM bytes free before the field. BASE_ALIGN is the alignment the
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 27750a6e4a4..cd35cd1b123 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -244,6 +244,7 @@ static void add_cleanup (tree, Node_Id);
static void add_stmt_list (List_Id);
static void push_exception_label_stack (VEC(tree,gc) **, Entity_Id);
static tree build_stmt_group (List_Id, bool);
+static inline bool stmt_group_may_fallthru (void);
static enum gimplify_status gnat_gimplify_stmt (tree *);
static void elaborate_all_entities (Node_Id);
static void process_freeze_entity (Node_Id);
@@ -1424,6 +1425,15 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
TREE_NO_TRAMPOLINE (gnu_expr) = TREE_CONSTANT (gnu_expr) = 1;
}
+ /* For 'Access, issue an error message if the prefix is a C++ method
+ since it can use a special calling convention on some platforms,
+ which cannot be propagated to the access type. */
+ else if (attribute == Attr_Access
+ && Nkind (Prefix (gnat_node)) == N_Identifier
+ && is_cplusplus_method (Entity (Prefix (gnat_node))))
+ post_error ("access to C++ constructor or member function not allowed",
+ gnat_node);
+
/* For other address attributes applied to a nested function,
find an inner ADDR_EXPR and annotate it so that we can issue
a useful warning with -Wtrampolines. */
@@ -2911,7 +2921,7 @@ finalize_nrv_unc_r (tree *tp, int *walk_subtrees, void *data)
= VEC_index (constructor_elt,
CONSTRUCTOR_ELTS
(TREE_OPERAND (TREE_OPERAND (ret_val, 0), 1)),
- 1)->value;
+ 1).value;
else
ret_val = TREE_OPERAND (TREE_OPERAND (ret_val, 0), 1);
}
@@ -2970,7 +2980,7 @@ finalize_nrv_unc_r (tree *tp, int *walk_subtrees, void *data)
TREE_OPERAND (alloc, 0),
VEC_index (constructor_elt,
CONSTRUCTOR_ELTS (TREE_OPERAND (alloc, 1)),
- 0)->value);
+ 0).value);
/* Build a modified CONSTRUCTOR that references NEW_VAR. */
p_array = TYPE_FIELDS (TREE_TYPE (alloc));
@@ -2980,7 +2990,7 @@ finalize_nrv_unc_r (tree *tp, int *walk_subtrees, void *data)
VEC_index (constructor_elt,
CONSTRUCTOR_ELTS
(TREE_OPERAND (alloc, 1)),
- 1)->value);
+ 1).value);
new_ret = build_constructor (TREE_TYPE (alloc), v);
}
else
@@ -4075,7 +4085,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
/* The first entry is for the actual return value if this is a
function, so skip it. */
- if (TREE_VALUE (gnu_cico_list) == void_type_node)
+ if (function_call)
gnu_cico_list = TREE_CHAIN (gnu_cico_list);
if (Nkind (Name (gnat_node)) == N_Explicit_Dereference)
@@ -4179,8 +4189,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
return value from it and update the return type. */
if (TYPE_CI_CO_LIST (gnu_subprog_type))
{
- tree gnu_elmt = value_member (void_type_node,
- TYPE_CI_CO_LIST (gnu_subprog_type));
+ tree gnu_elmt = TYPE_CI_CO_LIST (gnu_subprog_type);
gnu_call = build_component_ref (gnu_call, NULL_TREE,
TREE_PURPOSE (gnu_elmt), false);
gnu_result_type = TREE_TYPE (gnu_call);
@@ -4447,6 +4456,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
else if (gcc_zcx)
{
tree gnu_handlers;
+ location_t locus;
/* First make a block containing the handlers. */
start_stmt_group ();
@@ -4459,6 +4469,14 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
/* Now make the TRY_CATCH_EXPR for the block. */
gnu_result = build2 (TRY_CATCH_EXPR, void_type_node,
gnu_inner_block, gnu_handlers);
+ /* Set a location. We need to find a uniq location for the dispatching
+ code, otherwise we can get coverage or debugging issues. Try with
+ the location of the end label. */
+ if (Present (End_Label (gnat_node))
+ && Sloc_to_locus (Sloc (End_Label (gnat_node)), &locus))
+ SET_EXPR_LOCATION (gnu_result, locus);
+ else
+ set_expr_location_from_node (gnu_result, gnat_node);
}
else
gnu_result = gnu_inner_block;
@@ -6189,12 +6207,18 @@ gnat_to_gnu (Node_Id gnat_node)
break;
case N_Block_Statement:
- start_stmt_group ();
- gnat_pushlevel ();
- process_decls (Declarations (gnat_node), Empty, Empty, true, true);
- add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
- gnat_poplevel ();
- gnu_result = end_stmt_group ();
+ /* The only way to enter the block is to fall through to it. */
+ if (stmt_group_may_fallthru ())
+ {
+ start_stmt_group ();
+ gnat_pushlevel ();
+ process_decls (Declarations (gnat_node), Empty, Empty, true, true);
+ add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
+ gnat_poplevel ();
+ gnu_result = end_stmt_group ();
+ }
+ else
+ gnu_result = alloc_stmt_list ();
break;
case N_Exit_Statement:
@@ -7232,6 +7256,17 @@ end_stmt_group (void)
return gnu_retval;
}
+/* Return whether the current statement group may fall through. */
+
+static inline bool
+stmt_group_may_fallthru (void)
+{
+ if (current_stmt_group->stmt_list)
+ return block_may_fallthru (current_stmt_group->stmt_list);
+ else
+ return true;
+}
+
/* Add a list of statements from GNAT_LIST, a possibly-empty list of
statements.*/
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index d2183bbe160..4cca41bbf39 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -40,6 +40,7 @@
#include "langhooks.h"
#include "cgraph.h"
#include "diagnostic.h"
+#include "timevar.h"
#include "tree-dump.h"
#include "tree-inline.h"
#include "tree-iterator.h"
@@ -612,6 +613,7 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
if (TREE_CODE (t) == POINTER_TYPE)
TYPE_NEXT_PTR_TO (t) = tt;
TYPE_NAME (tt) = DECL_NAME (decl);
+ TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (t);
DECL_ORIGINAL_TYPE (decl) = tt;
}
@@ -621,6 +623,7 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
/* We need a variant for the placeholder machinery to work. */
tree tt = build_variant_type_copy (t);
TYPE_NAME (tt) = decl;
+ TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
TREE_USED (tt) = TREE_USED (t);
TREE_TYPE (decl) = tt;
if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
@@ -640,7 +643,10 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
if (t)
for (t = TYPE_MAIN_VARIANT (t); t; t = TYPE_NEXT_VARIANT (t))
if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL))
- TYPE_NAME (t) = decl;
+ {
+ TYPE_NAME (t) = decl;
+ TYPE_CONTEXT (t) = DECL_CONTEXT (decl);
+ }
}
}
@@ -1363,7 +1369,8 @@ void
finish_fat_pointer_type (tree record_type, tree field_list)
{
/* Make sure we can put it into a register. */
- TYPE_ALIGN (record_type) = MIN (BIGGEST_ALIGNMENT, 2 * POINTER_SIZE);
+ if (STRICT_ALIGNMENT)
+ TYPE_ALIGN (record_type) = MIN (BIGGEST_ALIGNMENT, 2 * POINTER_SIZE);
/* Show what it really is. */
TYPE_FAT_POINTER_P (record_type) = 1;
@@ -4485,10 +4492,10 @@ convert (tree type, tree expr)
inner expression. */
if (TREE_CODE (expr) == CONSTRUCTOR
&& !VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (expr))
- && VEC_index (constructor_elt, CONSTRUCTOR_ELTS (expr), 0)->index
+ && VEC_index (constructor_elt, CONSTRUCTOR_ELTS (expr), 0).index
== TYPE_FIELDS (etype))
unpadded
- = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (expr), 0)->value;
+ = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (expr), 0).value;
/* Otherwise, build an explicit component reference. */
else
@@ -5041,7 +5048,7 @@ remove_conversions (tree exp, bool true_address)
&& TYPE_JUSTIFIED_MODULAR_P (TREE_TYPE (exp)))
return
remove_conversions (VEC_index (constructor_elt,
- CONSTRUCTOR_ELTS (exp), 0)->value,
+ CONSTRUCTOR_ELTS (exp), 0).value,
true);
break;
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index c7dfe98fce2..4578114f4a7 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -441,7 +441,7 @@ compare_fat_pointers (location_t loc, tree result_type, tree p1, tree p2)
/* The constant folder doesn't fold fat pointer types so we do it here. */
if (TREE_CODE (p1) == CONSTRUCTOR)
- p1_array = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p1), 0)->value;
+ p1_array = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p1), 0).value;
else
p1_array = build_component_ref (p1, NULL_TREE,
TYPE_FIELDS (TREE_TYPE (p1)), true);
@@ -452,7 +452,7 @@ compare_fat_pointers (location_t loc, tree result_type, tree p1, tree p2)
null_pointer_node));
if (TREE_CODE (p2) == CONSTRUCTOR)
- p2_array = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p2), 0)->value;
+ p2_array = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p2), 0).value;
else
p2_array = build_component_ref (p2, NULL_TREE,
TYPE_FIELDS (TREE_TYPE (p2)), true);
@@ -473,14 +473,14 @@ compare_fat_pointers (location_t loc, tree result_type, tree p1, tree p2)
= fold_build2_loc (loc, EQ_EXPR, result_type, p1_array, p2_array);
if (TREE_CODE (p1) == CONSTRUCTOR)
- p1_bounds = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p1), 1)->value;
+ p1_bounds = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p1), 1).value;
else
p1_bounds
= build_component_ref (p1, NULL_TREE,
DECL_CHAIN (TYPE_FIELDS (TREE_TYPE (p1))), true);
if (TREE_CODE (p2) == CONSTRUCTOR)
- p2_bounds = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p2), 1)->value;
+ p2_bounds = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (p2), 1).value;
else
p2_bounds
= build_component_ref (p2, NULL_TREE,
@@ -1336,7 +1336,7 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand)
{
result = VEC_index (constructor_elt,
CONSTRUCTOR_ELTS (operand),
- 0)->value;
+ 0).value;
result = convert (build_pointer_type (TREE_TYPE (operand)),
build_unary_op (ADDR_EXPR, NULL_TREE, result));
break;
@@ -1912,10 +1912,12 @@ build_simple_component_ref (tree record_variable, tree component,
break;
/* Next, see if we're looking for an inherited component in an extension.
- If so, look thru the extension directly. */
+ If so, look thru the extension directly, but not if the type contains
+ a placeholder, as it might be needed for a later substitution. */
if (!new_field
&& TREE_CODE (record_variable) == VIEW_CONVERT_EXPR
&& TYPE_ALIGN_OK (record_type)
+ && !type_contains_placeholder_p (record_type)
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (record_variable, 0)))
== RECORD_TYPE
&& TYPE_ALIGN_OK (TREE_TYPE (TREE_OPERAND (record_variable, 0))))
@@ -2642,10 +2644,7 @@ gnat_stabilize_reference (tree ref, bool force, bool *success)
result = build3 (BIT_FIELD_REF, type,
gnat_stabilize_reference (TREE_OPERAND (ref, 0), force,
success),
- gnat_stabilize_reference_1 (TREE_OPERAND (ref, 1),
- force),
- gnat_stabilize_reference_1 (TREE_OPERAND (ref, 2),
- force));
+ TREE_OPERAND (ref, 1), TREE_OPERAND (ref, 2));
break;
case ARRAY_REF:
@@ -2677,9 +2676,9 @@ gnat_stabilize_reference (tree ref, bool force, bool *success)
&& VEC_length (constructor_elt, CONSTRUCTOR_ELTS (ref)) == 1)
{
tree index
- = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ref), 0)->index;
+ = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ref), 0).index;
tree value
- = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ref), 0)->value;
+ = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ref), 0).value;
result
= build_constructor_single (type, index,
gnat_stabilize_reference_1 (value,
diff --git a/gcc/ada/gnat-style.texi b/gcc/ada/gnat-style.texi
index 1bba7030935..43e6b4310a1 100644
--- a/gcc/ada/gnat-style.texi
+++ b/gcc/ada/gnat-style.texi
@@ -7,14 +7,14 @@
@c o
@c G N A T C O D I N G S T Y L E o
@c o
-@c GNAT is maintained by Ada Core Technologies Inc (http://www.gnat.com). o
+@c Copyright (C) 1992-2012, AdaCore o
@c o
@c oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
@setfilename gnat-style.info
@copying
-Copyright @copyright{} 1992-2008, Free Software Foundation, Inc.
+Copyright @copyright{} 1992-2012, AdaCore
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -350,6 +350,24 @@ that give useful information instead.
Local names can be shorter, because they are used only within
one context, where comments explain their purpose.
+@item
+When starting an initialization or default expression on the line that follows
+the declaration line, use 2 characters for indentation.
+
+@smallexample @c adanocomment
+ Entity1 : Integer :=
+ Function_Name (Parameters, For_Call);
+@end smallexample
+
+@item
+If an initialization or default expression needs to be continued on subsequent
+lines, the continuations should be indented from the start of the expression.
+
+@smallexample @c adanocomment
+ Entity1 : Integer := Long_Function_Name
+ (parameters for call);
+@end smallexample
+
@end itemize
@@ -720,7 +738,10 @@ also be used as headers for sections of comments, or collections
of declarations that are related.
@item
-Every subprogram body must have a preceding @syntax{subprogram_declaration}.
+Every subprogram body must have a preceding @syntax{subprogram_declaration},
+which includes proper client documentation so that you do not need to
+read the subprogram body in order to understand what the subprogram does and
+how to call it. All subprograms should be documented, without exceptions.
@item
@cindex Blank lines (in subprogram bodies)
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index 241671776fc..b2f371f3973 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -104,11 +104,6 @@ procedure Gnat1drv is
-- Called when we are not generating code, to check if -gnatR was requested
-- and if so, explain that we will not be honoring the request.
- procedure Check_Library_Items;
- -- For debugging -- checks the behavior of Walk_Library_Items
- pragma Warnings (Off, Check_Library_Items);
- -- In case the call below is commented out
-
----------------------------
-- Adjust_Global_Switches --
----------------------------
@@ -198,13 +193,16 @@ procedure Gnat1drv is
-- Enable all other language checks
Suppress_Options :=
- (Access_Check => True,
- Alignment_Check => True,
- Division_Check => True,
- Elaboration_Check => True,
- Overflow_Check => True,
- others => False);
- Enable_Overflow_Checks := False;
+ (Suppress => (Access_Check => True,
+ Alignment_Check => True,
+ Division_Check => True,
+ Elaboration_Check => True,
+ Overflow_Check => True,
+ others => False),
+ Overflow_Checks_General => Suppress,
+ Overflow_Checks_Assertions => Suppress);
+
+ Enable_Overflow_Checks := False;
Dynamic_Elaboration_Checks := False;
-- Kill debug of generated code, since it messes up sloc values
@@ -344,9 +342,11 @@ procedure Gnat1drv is
and
Targparm.Backend_Overflow_Checks_On_Target))
then
- Suppress_Options (Overflow_Check) := False;
+ Suppress_Options.Suppress (Overflow_Check) := False;
else
- Suppress_Options (Overflow_Check) := True;
+ Suppress_Options.Suppress (Overflow_Check) := True;
+ Suppress_Options.Overflow_Checks_General := Check_All;
+ Suppress_Options.Overflow_Checks_Assertions := Check_All;
end if;
-- Set default for atomic synchronization. As this synchronization
@@ -354,7 +354,8 @@ procedure Gnat1drv is
-- on some targets, an optional target parameter can turn the option
-- off. Note Atomic Synchronization is implemented as check.
- Suppress_Options (Atomic_Synchronization) := not Atomic_Sync_Default;
+ Suppress_Options.Suppress (Atomic_Synchronization) :=
+ not Atomic_Sync_Default;
-- Set switch indicating if we can use N_Expression_With_Actions
@@ -431,12 +432,12 @@ procedure Gnat1drv is
Restrict.Restrictions.Set (No_Initialize_Scalars) := True;
-- Suppress all language checks since they are handled implicitly by
- -- the formal verification backend.
+ -- the formal verification backend.
-- Turn off dynamic elaboration checks.
-- Turn off alignment checks.
-- Turn off validity checking.
- Suppress_Options := (others => True);
+ Suppress_Options := Suppress_All;
Enable_Overflow_Checks := False;
Dynamic_Elaboration_Checks := False;
Reset_Validity_Check_Options;
@@ -659,35 +660,6 @@ procedure Gnat1drv is
end if;
end Check_Bad_Body;
- -------------------------
- -- Check_Library_Items --
- -------------------------
-
- -- Walk_Library_Items has plenty of assertions, so all we need to do is
- -- call it, just for these assertions, not actually doing anything else.
-
- procedure Check_Library_Items is
-
- procedure Action (Item : Node_Id);
- -- Action passed to Walk_Library_Items to do nothing
-
- ------------
- -- Action --
- ------------
-
- procedure Action (Item : Node_Id) is
- begin
- null;
- end Action;
-
- procedure Walk is new Sem.Walk_Library_Items (Action);
-
- -- Start of processing for Check_Library_Items
-
- begin
- Walk;
- end Check_Library_Items;
-
--------------------
-- Check_Rep_Info --
--------------------
@@ -1136,14 +1108,6 @@ begin
Namet.Lock;
Stringt.Lock;
- -- ???Check_Library_Items under control of a debug flag, because it
- -- currently does not work if the -gnatn switch (back end inlining) is
- -- used.
-
- if Debug_Flag_Dot_WW then
- Check_Library_Items;
- end if;
-
-- Here we call the back end to generate the output code
Generating_Code := True;
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index 3b05e4779a0..eb0b4219c1a 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -1869,8 +1869,6 @@ functions (see pragma @code{CPP_Constructor}). Such types are implicitly
limited if not explicitly declared as limited or derived from a limited
type, and an error is issued in that case.
-Pragma @code{CPP_Class} is intended primarily for automatic generation
-using an automatic binding generator tool.
See @ref{Interfacing to C++} for related information.
Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
@@ -1927,7 +1925,8 @@ If no constructors are imported, it is impossible to create any objects
on the Ada side and the type is implicitly declared abstract.
Pragma @code{CPP_Constructor} is intended primarily for automatic generation
-using an automatic binding generator tool.
+using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
+GCC switch).
See @ref{Interfacing to C++} for more related information.
Note: The use of functions returning class-wide types for constructors is
@@ -6709,7 +6708,7 @@ this attribute.
@cindex Scalar storage order
@findex Scalar_Storage_Order
@noindent
-For every record subtype @var{S}, the representation attribute
+For every array or record type @var{S}, the representation attribute
@code{Scalar_Storage_Order} denotes the order in which storage elements
that make up scalar components are ordered within S. Other properties are
as for standard representation attribute @code{Bit_Order}, as defined by
@@ -6721,15 +6720,22 @@ equal to @code{@var{S}'Bit_Order}. Note: This means that if a
then the type's @code{Bit_Order} shall be specified explicitly and set to
the same value.
+If a component of S has itself a record or array type, then it shall also
+have a @code{Scalar_Storage_Order} attribute definition clause. In addition,
+if the component does not start on a byte boundary, then the scalar storage
+order specified for S and for the nested component type shall be identical.
+
+No component of a type that has a @code{Scalar_Storage_Order} attribute
+definition may be aliased.
+
A confirming @code{Scalar_Storage_Order} attribute definition clause (i.e.
with a value equal to @code{System.Default_Bit_Order}) has no effect.
-If the opposite storage order is specified, then whenever the
-value of a scalar component of S is read, the storage elements of the
-enclosing machine scalar are first reversed (before retrieving the
-component value, possibly applying some shift and mask operatings on the
-enclosing machine scalar), and the opposite operation is done for
-writes.
+If the opposite storage order is specified, then whenever the value of
+a scalar component of S is read, the storage elements of the enclosing
+machine scalar are first reversed (before retrieving the component value,
+possibly applying some shift and mask operatings on the enclosing machine
+scalar), and the opposite operation is done for writes.
In that case, the restrictions set forth in 13.5.1(10.3/2) for scalar components
are relaxed. Instead, the following rules apply:
@@ -13700,7 +13706,9 @@ ENCODING=[UTF8|8BITS]
@end smallexample
@noindent
-The use of these parameters is described later in this section.
+The use of these parameters is described later in this section. If an
+unrecognized keyword appears in a form string, it is silently ignored
+and not considered invalid.
@node Direct_IO
@section Direct_IO
@@ -16608,8 +16616,7 @@ of the length corresponding to the @code{@var{type}'Size} value in Ada.
@noindent
The interface to C++ makes use of the following pragmas, which are
primarily intended to be constructed automatically using a binding generator
-tool, although it is possible to construct them by hand. No suitable binding
-generator tool is supplied with GNAT though.
+tool, although it is possible to construct them by hand.
Using these pragmas it is possible to achieve complete
inter-operability between Ada tagged types and C++ class definitions.
@@ -16631,6 +16638,12 @@ This pragma identifies an imported function (imported in the usual way
with pragma @code{Import}) as corresponding to a C++ constructor.
@end table
+In addition, C++ exceptions are propagated and can be handled in an
+@code{others} choice of an exception handler. The corresponding Ada
+occurrence has no message, and the simple name of the exception identity
+contains @samp{Foreign_Exception}. Finalization and awaiting dependent
+tasks works properly when such foreign exceptions are propagated.
+
@node Interfacing to COBOL
@section Interfacing to COBOL
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 4a1baf2aadf..e440ed517ed 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -487,7 +487,9 @@ Creating Unit Tests Using gnattest
* Tagged Types Substitutability Testing::
* Testing with Contracts::
* Additional Tests::
+@ifclear vms
* Support for other platforms/run-times::
+@end ifclear
* Current Limitations::
Other Utility Programs
@@ -4306,10 +4308,8 @@ means that no limit applies.
@cindex @option{-gnatn} (@command{gcc})
Activate inlining for subprograms for which pragma @code{Inline} is
specified. This inlining is performed by the GCC back-end. An optional
-digit sets the inlining level: 1 for moderate inlining across modules,
-which is a good compromise between compilation times and performances
-at run time, and 2 for full inlining across modules, which may bring
-about longer compilation times. If no inlining level is specified,
+digit sets the inlining level: 1 for moderate inlining across modules
+or 2 for full inlining across modules. If no inlining level is specified,
the compiler will pick it based on the optimization level.
@item -gnatN
@@ -7335,21 +7335,28 @@ For the source file naming rules, @xref{File Naming Rules}.
@table @option
@c !sort!
-@item -gnatn
+@item -gnatn[12]
@cindex @option{-gnatn} (@command{gcc})
@ifclear vms
The @code{n} here is intended to suggest the first syllable of the
word ``inline''.
@end ifclear
GNAT recognizes and processes @code{Inline} pragmas. However, for the
-inlining to actually occur, optimization must be enabled. To enable
-inlining of subprograms specified by pragma @code{Inline},
+inlining to actually occur, optimization must be enabled and, in order
+to enable inlining of subprograms specified by pragma @code{Inline},
you must also specify this switch.
In the absence of this switch, GNAT does not attempt
inlining and does not need to access the bodies of
subprograms for which @code{pragma Inline} is specified if they are not
in the current unit.
+You can optionally specify the inlining level: 1 for moderate inlining across
+modules, which is a good compromise between compilation times and performances
+at run time, or 2 for full inlining across modules, which may bring about
+longer compilation times. If no inlining level is specified, the compiler will
+pick it based on the optimization level: 1 for @option{-O1}, @option{-O2} or
+@option{-Os} and 2 for @option{-O3}.
+
If you specify this switch the compiler will access these bodies,
creating an extra source dependency for the resulting object file, and
where possible, the call will be inlined.
@@ -10733,19 +10740,22 @@ Note: The @option{-fno-inline-functions-called-once} switch
can be used to prevent inlining of subprograms local to the unit
and called once from within it if @option{-O1} is used.
-Note regarding the use of @option{-O3}: There is no difference in inlining
-behavior between @option{-O2} and @option{-O3} for subprograms with an explicit
-pragma @code{Inline} assuming the use of @option{-gnatn}
-or @option{-gnatN} (the switches that activate inlining). If you have used
-pragma @code{Inline} in appropriate cases, then it is usually much better
-to use @option{-O2} and @option{-gnatn} and avoid the use of @option{-O3} which
-in this case only has the effect of inlining subprograms you did not
-think should be inlined. We often find that the use of @option{-O3} slows
-down code by performing excessive inlining, leading to increased instruction
-cache pressure from the increased code size. So the bottom line here is
-that you should not automatically assume that @option{-O3} is better than
-@option{-O2}, and indeed you should use @option{-O3} only if tests show that
-it actually improves performance.
+Note regarding the use of @option{-O3}: @option{-gnatn} is made up of two
+sub-switches @option{-gnatn1} and @option{-gnatn2} that can be directly
+specified in lieu of it, @option{-gnatn} being translated into one of them
+based on the optimization level. With @option{-O2} or below, @option{-gnatn}
+is equivalent to @option{-gnatn1} which activates pragma @code{Inline} with
+moderate inlining across modules. With @option{-O3}, @option{-gnatn} is
+equivalent to @option{-gnatn2} which activates pragma @code{Inline} with
+full inlining across modules. If you have used pragma @code{Inline} in appropriate cases, then it is usually much better to use @option{-O2} and @option{-gnatn} and avoid the use of @option{-O3} which has the additional
+effect of inlining subprograms you did not think should be inlined. We have
+found that the use of @option{-O3} may slow down the compilation and increase
+the code size by performing excessive inlining, leading to increased
+instruction cache pressure from the increased code size and thus minor
+performance improvements. So the bottom line here is that you should not
+automatically assume that @option{-O3} is better than @option{-O2}, and
+indeed you should use @option{-O3} only if tests show that it actually
+improves performance for your program.
@node Vectorization of loops
@subsection Vectorization of loops
@@ -18099,7 +18109,9 @@ is installed at its default location.
* Tagged Types Substitutability Testing::
* Testing with Contracts::
* Additional Tests::
+@ifclear vms
* Support for other platforms/run-times::
+@end ifclear
* Current Limitations::
@end menu
@@ -18408,7 +18420,7 @@ as passed to gnattest when generating the test driver.
Passing it to the driver generated on the first example:
@smallexample
-test_runner --stub-default=pass
+test_runner --skeleton-default=pass
@end smallexample
makes both tests pass, even the unimplemented one.
@@ -18613,6 +18625,7 @@ gnatmake -Pmixing/test_driver.gpr
mixing/test_runner
@end smallexample
+@ifclear vms
@node Support for other platforms/run-times
@section Support for other platforms/run-times
@@ -18625,12 +18638,15 @@ such as Zero FootPrint (ZFP), a simplified harness is generated.
Two variables are used to tell the underlying AUnit framework how to generate
the test harness: @code{PLATFORM}, which identifies the target, and
@code{RUNTIME}, used to determine the run-time library for which the harness
-is generated. For example, the following options are used to generate the
-AUnit test harness for a PowerPC ELF target using the ZFP run-time library:
+is generated. Corresponding prefix should also be used when calling
+@command{gnattest} for non-native targets. For example, the following options
+are used to generate the AUnit test harness for a PowerPC ELF target using
+the ZFP run-time library:
@smallexample
-gnattest -Psimple.gpr -XPLATFORM=powerpc-elf -XRUNTIME=zfp
+powerpc-elf-gnattest -Psimple.gpr -XPLATFORM=powerpc-elf -XRUNTIME=zfp
@end smallexample
+@end ifclear
@node Current Limitations
@section Current Limitations
@@ -18642,7 +18658,6 @@ The tool currently does not support following features:
@itemize @bullet
@item generic tests for generic packages and package instantiations
@item tests for protected subprograms and entries
-@item generating test packages for code that is not conformant with ada 2005
@end itemize
@@ -18676,13 +18691,13 @@ package, in file s-dimmks.ads.
type Mks_Type is new Long_Long_Float
with
Dimension_System => (
- (Meter, 'm'),
- (Kilogram, "kg"),
- (Second, 's'),
- (Ampere, 'A'),
- (Kelvin, 'K'),
- (Mole, "mol"),
- (Candela, "cd"));
+ (Unit_Name => Meter, Unit_Symbol => 'm', Dim_Symbol => 'L'),
+ (Unit_Name => Kilogram, Unit_Symbol => "kg", Dim_Symbol => 'M'),
+ (Unit_Name => Second, Unit_Symbol => 's', Dim_Symbol => 'T'),
+ (Unit_Name => Ampere, Unit_Symbol => 'A', Dim_Symbol => 'I'),
+ (Unit_Name => Kelvin, Unit_Symbol => 'K', Dim_Symbol => "Theta"),
+ (Unit_Name => Mole, Unit_Symbol => "mol", Dim_Symbol => 'N'),
+ (Unit_Name => Candela, Unit_Symbol => "cd", Dim_Symbol => 'J'));
@end smallexample
@noindent
@@ -18691,8 +18706,8 @@ conventional units. For example:
@smallexample @c ada
subtype Length is Mks_Type
with
- Dimension => ('m',
- Meter => 1,
+ Dimension => (Symbol => 'm',
+ Meter => 1,
others => 0);
@end smallexample
@noindent
@@ -18704,10 +18719,10 @@ The package also defines conventional names for values of each unit, for
example:
@smallexample @c ada
- m : constant Length := 1.0;
- kg : constant Mass := 1.0;
- s : constant Time := 1.0;
- A : constant Electric_Current := 1.0;
+ m : constant Length := 1.0;
+ kg : constant Mass := 1.0;
+ s : constant Time := 1.0;
+ A : constant Electric_Current := 1.0;
@end smallexample
@noindent
@@ -18775,13 +18790,13 @@ are rejected with the following diagnoses:
@smallexample
Distance := 5.0;
>>> dimensions mismatch in assignment
- >>> left-hand side has dimensions (1, 0, 0, 0, 0, 0, 0)
+ >>> left-hand side has dimension [L]
>>> right-hand side is dimensionless
Distance := 5.0 * kg:
>>> dimensions mismatch in assignment
- >>> left-hand side has dimensions (1, 0, 0, 0, 0, 0, 0)
- >>> right-hand side has dimensions (0, 1, 0, 0, 0, 0, 0)
+ >>> left-hand side has dimension [L]
+ >>> right-hand side has dimension [M]
@end smallexample
@noindent
diff --git a/gcc/ada/gnatcmd.adb b/gcc/ada/gnatcmd.adb
index 87983997a7a..82e3f4593b4 100644
--- a/gcc/ada/gnatcmd.adb
+++ b/gcc/ada/gnatcmd.adb
@@ -238,12 +238,7 @@ procedure GNATCmd is
function Configuration_Pragmas_File return Path_Name_Type;
-- Return an argument, if there is a configuration pragmas file to be
- -- specified for Project, otherwise return No_Name. Used for gnatstub (GNAT
- -- STUB), gnatpp (GNAT PRETTY), gnatelim (GNAT ELIM), and gnatmetric (GNAT
- -- METRIC).
-
- function Mapping_File return Path_Name_Type;
- -- Create and return the path name of a mapping file. Used for gnatstub
+ -- specified for Project, otherwise return No_Name. Used for gnatstub
-- (GNAT STUB), gnatpp (GNAT PRETTY), gnatelim (GNAT ELIM), and gnatmetric
-- (GNAT METRIC).
@@ -251,10 +246,22 @@ procedure GNATCmd is
-- Delete all temporary config files. The caller is responsible for
-- ensuring that Keep_Temporary_Files is False.
+ procedure Ensure_Absolute_Path
+ (Switch : in out String_Access;
+ Parent : String);
+ -- Test if Switch is a relative search path switch. If it is and it
+ -- includes directory information, prepend the path with Parent. This
+ -- subprogram is only called when using project files.
+
procedure Get_Closure;
-- Get the sources in the closure of the ASIS_Main and add them to the
-- list of arguments.
+ function Mapping_File return Path_Name_Type;
+ -- Create and return the path name of a mapping file. Used for gnatstub
+ -- (GNAT STUB), gnatpp (GNAT PRETTY), gnatelim (GNAT ELIM), and gnatmetric
+ -- (GNAT METRIC).
+
procedure Non_VMS_Usage;
-- Display usage for platforms other than VMS
@@ -268,17 +275,9 @@ procedure GNATCmd is
-- If Project is a library project, add the correct -L and -l switches to
-- the linker invocation.
- procedure Set_Libraries is
- new For_Every_Project_Imported (Boolean, Set_Library_For);
- -- Add the -L and -l switches to the linker for all of the library
- -- projects.
-
- procedure Test_If_Relative_Path
- (Switch : in out String_Access;
- Parent : String);
- -- Test if Switch is a relative search path switch. If it is and it
- -- includes directory information, prepend the path with Parent. This
- -- subprogram is only called when using project files.
+ procedure Set_Libraries is new
+ For_Every_Project_Imported (Boolean, Set_Library_For);
+ -- Add the -L and -l switches to the linker for all the library projects
--------------------------
-- Add_To_Carg_Switches --
@@ -789,6 +788,22 @@ procedure GNATCmd is
end if;
end Delete_Temp_Config_Files;
+ ---------------------------
+ -- Ensure_Absolute_Path --
+ ---------------------------
+
+ procedure Ensure_Absolute_Path
+ (Switch : in out String_Access;
+ Parent : String)
+ is
+ begin
+ Makeutl.Ensure_Absolute_Path
+ (Switch, Parent,
+ Do_Fail => Osint.Fail'Access,
+ Including_Non_Switch => False,
+ Including_RTS => True);
+ end Ensure_Absolute_Path;
+
-----------------
-- Get_Closure --
-----------------
@@ -962,6 +977,59 @@ procedure GNATCmd is
return Result;
end Mapping_File;
+ -------------------
+ -- Non_VMS_Usage --
+ -------------------
+
+ procedure Non_VMS_Usage is
+ begin
+ Output_Version;
+ New_Line;
+ Put_Line ("List of available commands");
+ New_Line;
+
+ for C in Command_List'Range loop
+
+ -- No usage for VMS only command or for Sync
+
+ if not Command_List (C).VMS_Only and then C /= Sync then
+ if Targparm.AAMP_On_Target then
+ Put ("gnaampcmd ");
+ else
+ Put ("gnat ");
+ end if;
+
+ Put (To_Lower (Command_List (C).Cname.all));
+ Set_Col (25);
+
+ -- Never call gnatstack with a prefix
+
+ if C = Stack then
+ Put (Command_List (C).Unixcmd.all);
+ else
+ Put (Program_Name (Command_List (C).Unixcmd.all, "gnat").all);
+ end if;
+
+ declare
+ Sws : Argument_List_Access renames Command_List (C).Unixsws;
+ begin
+ if Sws /= null then
+ for J in Sws'Range loop
+ Put (' ');
+ Put (Sws (J).all);
+ end loop;
+ end if;
+ end;
+
+ New_Line;
+ end if;
+ end loop;
+
+ New_Line;
+ Put_Line ("All commands except chop, krunch and preprocess " &
+ "accept project file switches -vPx, -Pprj and -Xnam=val");
+ New_Line;
+ end Non_VMS_Usage;
------------------
-- Process_Link --
------------------
@@ -1302,76 +1370,6 @@ procedure GNATCmd is
end if;
end Set_Library_For;
- ---------------------------
- -- Test_If_Relative_Path --
- ---------------------------
-
- procedure Test_If_Relative_Path
- (Switch : in out String_Access;
- Parent : String)
- is
- begin
- Makeutl.Test_If_Relative_Path
- (Switch, Parent,
- Do_Fail => Osint.Fail'Access,
- Including_Non_Switch => False,
- Including_RTS => True);
- end Test_If_Relative_Path;
-
- -------------------
- -- Non_VMS_Usage --
- -------------------
-
- procedure Non_VMS_Usage is
- begin
- Output_Version;
- New_Line;
- Put_Line ("List of available commands");
- New_Line;
-
- for C in Command_List'Range loop
-
- -- No usage for VMS only command or for Sync
-
- if not Command_List (C).VMS_Only and then C /= Sync then
- if Targparm.AAMP_On_Target then
- Put ("gnaampcmd ");
- else
- Put ("gnat ");
- end if;
-
- Put (To_Lower (Command_List (C).Cname.all));
- Set_Col (25);
-
- -- Never call gnatstack with a prefix
-
- if C = Stack then
- Put (Command_List (C).Unixcmd.all);
- else
- Put (Program_Name (Command_List (C).Unixcmd.all, "gnat").all);
- end if;
-
- declare
- Sws : Argument_List_Access renames Command_List (C).Unixsws;
- begin
- if Sws /= null then
- for J in Sws'Range loop
- Put (' ');
- Put (Sws (J).all);
- end loop;
- end if;
- end;
-
- New_Line;
- end if;
- end loop;
-
- New_Line;
- Put_Line ("All commands except chop, krunch and preprocess " &
- "accept project file switches -vPx, -Pprj and -Xnam=val");
- New_Line;
- end Non_VMS_Usage;
-
-- Start of processing for GNATCmd
begin
@@ -2387,7 +2385,7 @@ begin
-- arguments.
for J in 1 .. Last_Switches.Last loop
- GNATCmd.Test_If_Relative_Path
+ GNATCmd.Ensure_Absolute_Path
(Last_Switches.Table (J), Current_Work_Dir);
end loop;
@@ -2397,7 +2395,7 @@ begin
Project_Dir : constant String := Name_Buffer (1 .. Name_Len);
begin
for J in 1 .. First_Switches.Last loop
- GNATCmd.Test_If_Relative_Path
+ GNATCmd.Ensure_Absolute_Path
(First_Switches.Table (J), Project_Dir);
end loop;
end;
diff --git a/gcc/ada/gnatlink.adb b/gcc/ada/gnatlink.adb
index d6834ab5ae2..9562b3bbc8d 100644
--- a/gcc/ada/gnatlink.adb
+++ b/gcc/ada/gnatlink.adb
@@ -904,6 +904,7 @@ procedure Gnatlink is
procedure Write_RF (S : String) is
Success : Boolean := True;
+
begin
-- If a GNU response file is used, space and backslash need to be
-- escaped because they are interpreted as a string separator and
@@ -912,17 +913,18 @@ procedure Gnatlink is
-- they are interpreted as string delimiters on both sides.
if Using_GNU_response_file then
- for I in S'Range loop
- if S (I) = ' ' or else S (I) = '\' then
+ for J in S'Range loop
+ if S (J) = ' ' or else S (J) = '\' then
if Write (Tname_FD, ASCII.BACK_SLASH'Address, 1) /= 1 then
Success := False;
end if;
end if;
- if Write (Tname_FD, S (I)'Address, 1) /= 1 then
+ if Write (Tname_FD, S (J)'Address, 1) /= 1 then
Success := False;
end if;
end loop;
+
else
if Write (Tname_FD, S'Address, S'Length) /= S'Length then
Success := False;
@@ -973,9 +975,9 @@ procedure Gnatlink is
Linker_Objects.Increment_Last;
- -- Mark the positions of first and last object files in case
- -- they need to be placed with a named file on systems having
- -- linker line limitations.
+ -- Mark the positions of first and last object files in case they
+ -- need to be placed with a named file on systems having linker
+ -- line limitations.
if Objs_Begin = 0 then
Objs_Begin := Linker_Objects.Last;
@@ -1016,9 +1018,9 @@ procedure Gnatlink is
and then Link_Bytes > Link_Max)
then
-- Create a temporary file containing the Ada user object files
- -- needed by the link. This list is taken from the bind file
- -- and is output one object per line for maximal compatibility with
- -- linkers supporting this option.
+ -- needed by the link. This list is taken from the bind file and is
+ -- output one object per line for maximal compatibility with linkers
+ -- supporting this option.
Create_Temp_File (Tname_FD, Tname);
@@ -1045,9 +1047,9 @@ procedure Gnatlink is
Tname (Tname'First .. Tname'Last - 1));
-- The slots containing these object file names are then removed
- -- from the objects table so they do not appear in the link. They
- -- are removed by moving up the linker options and non-Ada object
- -- files appearing after the Ada object list in the table.
+ -- from the objects table so they do not appear in the link. They are
+ -- removed by moving up the linker options and non-Ada object files
+ -- appearing after the Ada object list in the table.
declare
N : Integer;
@@ -1082,8 +1084,8 @@ procedure Gnatlink is
elsif Next_Line (Nfirst .. Nlast) = "-shared" then
GNAT_Shared := True;
- -- Add binder options only if not already set on the command
- -- line. This rule is a way to control the linker options order.
+ -- Add binder options only if not already set on the command line.
+ -- This rule is a way to control the linker options order.
-- The following test needs comments, why is it VMS specific.
-- The above comment looks out of date ???
@@ -1095,8 +1097,8 @@ procedure Gnatlink is
if Nlast > Nfirst + 2 and then
Next_Line (Nfirst .. Nfirst + 1) = "-L"
then
- -- Construct a library search path for use later
- -- to locate static gnatlib libraries.
+ -- Construct a library search path for use later to locate
+ -- static gnatlib libraries.
if Libpath.Last > 1 then
Libpath.Increment_Last;
@@ -2208,6 +2210,7 @@ begin
System.OS_Lib.Spawn (Linker_Path.all, Args, Success);
if Success then
+
-- Delete the temporary file used in conjunction with linking
-- if one was created. See Process_Bind_File for details.
diff --git a/gcc/ada/i-cstrea.ads b/gcc/ada/i-cstrea.ads
index 5c997bd75be..37d8ab733db 100644
--- a/gcc/ada/i-cstrea.ads
+++ b/gcc/ada/i-cstrea.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -228,9 +228,10 @@ package Interfaces.C_Streams is
-- pass an actual parameter for buffer that is big enough for any full
-- path name. Use max_path_len given below as the size of buffer.
- max_path_len : Integer;
- -- Maximum length of an allowable full path name on the system,
- -- including a terminating NUL character.
+ max_path_len : constant Integer;
+ -- Maximum length of an allowable full path name on the system,including a
+ -- terminating NUL character. Declared as a constant to allow references
+ -- from other preelaborated GNAT library packages.
private
-- The following functions are specialized in the body depending on the
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 4db5789526c..8a27a601617 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -304,6 +304,27 @@ __gnat_install_handler (void)
#include <signal.h>
#include <sys/ucontext.h>
+#if defined (IN_RTS) && defined (__ia64__)
+
+#include <sys/uc_access.h>
+
+#define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
+
+void
+__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
+{
+ ucontext_t *uc = (ucontext_t *) ucontext;
+ uint64_t ip;
+
+ /* Adjust on itanium, as GetIPInfo is not supported. */
+ __uc_get_ip (uc, &ip);
+ __uc_set_ip (uc, ip + 1);
+}
+#endif /* IN_RTS && __ia64__ */
+
+/* Tasking and Non-tasking signal handler. Map SIGnal to Ada exception
+ propagation after the required low level adjustments. */
+
static void
__gnat_error_handler (int sig,
siginfo_t *si ATTRIBUTE_UNUSED,
@@ -312,6 +333,8 @@ __gnat_error_handler (int sig,
struct Exception_Data *exception;
const char *msg;
+ __gnat_adjust_context_for_raise (sig, ucontext);
+
switch (sig)
{
case SIGSEGV:
diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c
index 90f35a0a9b4..7e1141a9be7 100644
--- a/gcc/ada/initialize.c
+++ b/gcc/ada/initialize.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2011, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2012, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -221,7 +221,8 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED)
FindClose (hDir);
- free (dir);
+ if (dir != NULL)
+ free (dir);
}
}
else
@@ -280,58 +281,6 @@ void
__gnat_initialize (void *eh)
{
__gnat_init_float ();
-
- /* On targets where we use the ZCX scheme, we need to register the frame
- tables at load/startup time.
-
- For applications loaded as a set of "modules", the crtstuff objects
- linked in (crtbegin.o/end.o) are tailored to provide this service
- automatically, a-la C++ constructor fashion, triggered by the VxWorks
- loader thanks to a special variable declaration in crtbegin.o (_ctors).
-
- Automatic de-registration is handled symmetrically, a-la C++ destructor
- fashion (with a _dtors variable also in crtbegin.o) triggered by the
- dynamic unloader.
-
- Note that since the tables shall be registered against a common
- data structure, libgcc should be one of the modules (vs being partially
- linked against all the others at build time) and shall be loaded first.
-
- For applications linked with the kernel, the scheme above would lead to
- duplicated symbols because the VxWorks kernel build "munches" by default,
- so we link against crtbeginT.o instead of crtbegin.o, which doesn't
- include the special variables. We know which set of crt objects is used
- thanks to a boolean indicator present in both sets (__module_has_ctors),
- and directly call the appropriate function here in the not-automatic
- case. We'll never unload that, so there is no de-registration to worry
- about.
-
- For whole applications loaded as a single module, we may use one scheme
- or the other, except for the mixed Ada/C++ case in which the first scheme
- would fail for the same reason as in the linked-with-kernel situation.
-
- The crt set selection is controlled by command line options via GCC's
- STARTFILE_SPEC in rs6000/vxworks.h. This is tightly synchronized with a
- number of other GCC configuration and crtstuff changes, and we need to
- ensure that those changes are there to activate this circuitry. */
-
-#if (__GNUC__ >= 3) && (defined (_ARCH_PPC) || defined (__ppc))
- {
- /* The scheme described above is only useful for the actual ZCX case, and
- we don't want any reference to the crt provided symbols otherwise. We
- may not link with any of the crt objects in the non-ZCX case, e.g. from
- documented procedures instructing the use of -nostdlib, and references
- to the ctors symbols here would just remain unsatisfied.
-
- We have no way to avoid those references in the right conditions in this
- C module, because we have nothing like a IN_ZCX_RTS macro. This aspect
- is then deferred to an Ada routine, which can do that based on a test
- against a constant System flag value. */
-
- extern void __gnat_vxw_setup_for_eh (void);
- __gnat_vxw_setup_for_eh ();
- }
-#endif
}
#elif defined(_T_HPUX10) || (!defined(IN_RTS) && defined(_X_HPUX10))
diff --git a/gcc/ada/inline.ads b/gcc/ada/inline.ads
index 63c043def68..f3750a83aa2 100644
--- a/gcc/ada/inline.ads
+++ b/gcc/ada/inline.ads
@@ -70,7 +70,7 @@ package Inline is
-- be restored when compiling the body, to insure that internal enti-
-- ties use the same counter and are unique over spec and body.
- Scope_Suppress : Suppress_Array;
+ Scope_Suppress : Suppress_Record;
Local_Suppress_Stack_Top : Suppress_Stack_Entry_Ptr;
-- Save suppress information at the point of instantiation. Used to
-- properly inherit check status active at this point (see RM 11.5
diff --git a/gcc/ada/layout.adb b/gcc/ada/layout.adb
index 9b6c0ce9f94..60a44a90f87 100644
--- a/gcc/ada/layout.adb
+++ b/gcc/ada/layout.adb
@@ -2452,18 +2452,22 @@ package body Layout is
Init_Size (E, 2 * System_Address_Size);
-- When the target is AAMP, access-to-subprogram types are fat
- -- pointers consisting of the subprogram address and a static link
- -- (with the exception of library-level access types, where a simple
- -- subprogram address is used).
+ -- pointers consisting of the subprogram address and a static link,
+ -- with the exception of library-level access types (including
+ -- library-level anonymous access types, such as for components),
+ -- where a simple subprogram address is used.
elsif AAMP_On_Target
and then
- (Ekind (E) = E_Anonymous_Access_Subprogram_Type
- or else (Ekind (E) = E_Access_Subprogram_Type
- and then Present (Enclosing_Subprogram (E))))
+ ((Ekind (E) = E_Access_Subprogram_Type
+ and then Present (Enclosing_Subprogram (E)))
+ or else
+ (Ekind (E) = E_Anonymous_Access_Subprogram_Type
+ and then
+ (not Is_Local_Anonymous_Access (E)
+ or else Present (Enclosing_Subprogram (E)))))
then
Init_Size (E, 2 * System_Address_Size);
-
else
Init_Size (E, System_Address_Size);
end if;
@@ -3103,11 +3107,34 @@ package body Layout is
-- the type, or the maximum allowed alignment.
declare
- S : constant Int := UI_To_Int (Esize (E)) / SSU;
- A : Nat;
+ S : Int;
+ A : Nat;
+
Max_Alignment : Nat;
begin
+ -- The given Esize may be larger that int'last because of a previous
+ -- error, and the call to UI_To_Int will fail, so use default.
+
+ if Esize (E) / SSU > Ttypes.Maximum_Alignment then
+ S := Ttypes.Maximum_Alignment;
+
+ -- If this is an access type and the target doesn't have strict
+ -- alignment and we are not doing front end layout, then cap the
+ -- alignment to that of a regular access type. This will avoid
+ -- giving fat pointers twice the usual alignment for no practical
+ -- benefit since the misalignment doesn't really matter.
+
+ elsif Is_Access_Type (E)
+ and then not Target_Strict_Alignment
+ and then not Frontend_Layout_On_Target
+ then
+ S := System_Address_Size / SSU;
+
+ else
+ S := UI_To_Int (Esize (E)) / SSU;
+ end if;
+
-- If the default alignment of "double" floating-point types is
-- specifically capped, enforce the cap.
diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb
index 29b435a1bc5..1c55a06aa3e 100644
--- a/gcc/ada/lib-writ.adb
+++ b/gcc/ada/lib-writ.adb
@@ -26,6 +26,7 @@
with ALI; use ALI;
with Atree; use Atree;
with Casing; use Casing;
+with Debug; use Debug;
with Einfo; use Einfo;
with Errout; use Errout;
with Fname; use Fname;
@@ -1140,52 +1141,128 @@ package body Lib.Writ is
end if;
end loop;
- -- Output first restrictions line
+ -- Positional case (only if debug flag -gnatd.R is set)
- Write_Info_Initiate ('R');
- Write_Info_Char (' ');
+ if Debug_Flag_Dot_RR then
- -- First the information for the boolean restrictions
+ -- Output first restrictions line
- for R in All_Boolean_Restrictions loop
- if Main_Restrictions.Set (R)
- and then not Restriction_Warnings (R)
- then
- Write_Info_Char ('r');
- elsif Main_Restrictions.Violated (R) then
- Write_Info_Char ('v');
- else
- Write_Info_Char ('n');
- end if;
- end loop;
+ Write_Info_Initiate ('R');
+ Write_Info_Char (' ');
- -- And now the information for the parameter restrictions
+ -- First the information for the boolean restrictions
- for RP in All_Parameter_Restrictions loop
- if Main_Restrictions.Set (RP)
- and then not Restriction_Warnings (RP)
- then
- Write_Info_Char ('r');
- Write_Info_Nat (Nat (Main_Restrictions.Value (RP)));
- else
- Write_Info_Char ('n');
- end if;
+ for R in All_Boolean_Restrictions loop
+ if Main_Restrictions.Set (R)
+ and then not Restriction_Warnings (R)
+ then
+ Write_Info_Char ('r');
+ elsif Main_Restrictions.Violated (R) then
+ Write_Info_Char ('v');
+ else
+ Write_Info_Char ('n');
+ end if;
+ end loop;
- if not Main_Restrictions.Violated (RP)
- or else RP not in Checked_Parameter_Restrictions
- then
- Write_Info_Char ('n');
- else
- Write_Info_Char ('v');
- Write_Info_Nat (Nat (Main_Restrictions.Count (RP)));
+ -- And now the information for the parameter restrictions
+
+ for RP in All_Parameter_Restrictions loop
+ if Main_Restrictions.Set (RP)
+ and then not Restriction_Warnings (RP)
+ then
+ Write_Info_Char ('r');
+ Write_Info_Nat (Nat (Main_Restrictions.Value (RP)));
+ else
+ Write_Info_Char ('n');
+ end if;
+
+ if not Main_Restrictions.Violated (RP)
+ or else RP not in Checked_Parameter_Restrictions
+ then
+ Write_Info_Char ('n');
+ else
+ Write_Info_Char ('v');
+ Write_Info_Nat (Nat (Main_Restrictions.Count (RP)));
- if Main_Restrictions.Unknown (RP) then
- Write_Info_Char ('+');
+ if Main_Restrictions.Unknown (RP) then
+ Write_Info_Char ('+');
+ end if;
end if;
- end if;
- end loop;
+ end loop;
- Write_Info_EOL;
+ Write_Info_EOL;
+
+ -- Named case (if debug flag -gnatd.R is not set)
+
+ else
+ declare
+ C : Character;
+
+ begin
+ -- Write RN header line with preceding blank line
+
+ Write_Info_EOL;
+ Write_Info_Initiate ('R');
+ Write_Info_Char ('N');
+ Write_Info_EOL;
+
+ -- First the lines for the boolean restrictions
+
+ for R in All_Boolean_Restrictions loop
+ if Main_Restrictions.Set (R)
+ and then not Restriction_Warnings (R)
+ then
+ C := 'R';
+ elsif Main_Restrictions.Violated (R) then
+ C := 'V';
+ else
+ goto Continue;
+ end if;
+
+ Write_Info_Initiate ('R');
+ Write_Info_Char (C);
+ Write_Info_Char (' ');
+ Write_Info_Str (All_Boolean_Restrictions'Image (R));
+ Write_Info_EOL;
+
+ <<Continue>>
+ null;
+ end loop;
+ end;
+
+ -- And now the lines for the parameter restrictions
+
+ for RP in All_Parameter_Restrictions loop
+ if Main_Restrictions.Set (RP)
+ and then not Restriction_Warnings (RP)
+ then
+ Write_Info_Initiate ('R');
+ Write_Info_Str ("R ");
+ Write_Info_Str (All_Parameter_Restrictions'Image (RP));
+ Write_Info_Char ('=');
+ Write_Info_Nat (Nat (Main_Restrictions.Value (RP)));
+ Write_Info_EOL;
+ end if;
+
+ if not Main_Restrictions.Violated (RP)
+ or else RP not in Checked_Parameter_Restrictions
+ then
+ null;
+ else
+ Write_Info_Initiate ('R');
+ Write_Info_Str ("V ");
+ Write_Info_Str (All_Parameter_Restrictions'Image (RP));
+ Write_Info_Char ('=');
+ Write_Info_Nat (Nat (Main_Restrictions.Count (RP)));
+
+ if Main_Restrictions.Unknown (RP) then
+ Write_Info_Char ('+');
+ end if;
+
+ Write_Info_EOL;
+ end if;
+ end loop;
+ end if;
-- Output R lines for No_Dependence entries
diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads
index d7bea5ea2c4..fdc99482afe 100644
--- a/gcc/ada/lib-writ.ads
+++ b/gcc/ada/lib-writ.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -262,6 +262,28 @@ package Lib.Writ is
-- -- R Restrictions --
-- ---------------------
+ -- There are two forms for R lines, positional and named. The positional
+ -- notation is now considered obsolescent, it is not generated by the most
+ -- recent versions of the compiler except under control of the debug switch
+ -- -gnatdR, but is still recognized by the binder.
+
+ -- The recognition by the binder is to ease the transition, and better deal
+ -- with some cases of inconsistent builds using incompatible versions of
+ -- the compiler and binder. The named notation is the current preferred
+ -- approach.
+
+ -- Note that R lines are generated using the information in unit Rident,
+ -- and intepreted by the binder using the information in System.Rident.
+ -- Normally these two units should be effectively identical. However in
+ -- some cases of inconsistent builds, they may be different. This may lead
+ -- to binder diagnostics, which can be suppressed using the -C switch for
+ -- the binder, which results in ignoring unrecognized restrictions in the
+ -- ali files.
+
+ -- ---------------------------------------
+ -- -- R Restrictions (Positional Form) --
+ -- ---------------------------------------
+
-- The first R line records the status of restrictions generated by pragma
-- Restrictions encountered, as well as information on what the compiler
-- has been able to determine with respect to restrictions violations.
@@ -348,6 +370,74 @@ package Lib.Writ is
-- signal a fatal error if it is missing. This means that future
-- changes to the ALI file format must retain the R line.
+ -- ----------------------------------
+ -- -- R Restrictions (Named Form) --
+ -- ----------------------------------
+
+ -- The first R line for named form announces that named notation will be
+ -- used, and also assures that there is at least one R line present, which
+ -- makes parsing of ali files simpler. A blank line preceds the RN line.
+
+ -- RN
+
+ -- In named notation, the restrictions are given as a series of lines, one
+ -- per retrictions that is specified or violated (no information is present
+ -- for restrictions that are not specified or violated). In the following
+ -- name is the name of the restriction in all upper case.
+
+ -- For boolean restrictions, we have only two possibilities. A restrictions
+ -- pragma is present, or a violation is detected:
+
+ -- RR name
+
+ -- A restriction pragma is present for the named boolean restriction.
+ -- No violations were detected by the compiler (or the unit in question
+ -- would have been found to be illegal).
+
+ -- RV name
+
+ -- No restriction pragma is present for the named boolean restriction.
+ -- However, the compiler did detect one or more violations of this
+ -- restriction, which may require a binder consistency check.
+
+ -- For the case of restrictions that take a parameter, we need both the
+ -- information from pragma if present, and the actual information about
+ -- what possible violations occur. For example, we can have a unit with
+ -- a pragma Restrictions (Max_Tasks => 4), where the compiler can detect
+ -- that there are exactly three tasks declared. Both of these pieces
+ -- of information must be passed to the binder. The parameter of 4 is
+ -- important in case the total number of tasks in the partition is greater
+ -- than 4. The parameter of 3 is important in case some other unit has a
+ -- restrictions pragma with Max_Tasks=>2.
+
+ -- RR name=N
+
+ -- A restriction pragma is present for the named restriction which is
+ -- one of the restrictions taking a parameter. The value N (a decimal
+ -- integer) is the value given in the restriction pragma.
+
+ -- RV name=N
+
+ -- A restriction pragma may or may not be present for the restriction
+ -- given by name (one of the restrictions taking a parameter). But in
+ -- either case, the compiler detected possible violations. N (a decimal
+ -- integer) is the maximum or total count of violations (depending
+ -- on the checking type) in all the units represented by the ali file).
+ -- The value here is known to be exact by the compiler and is in the
+ -- range of Natural. Note that if an RR line is present for the same
+ -- restriction, then the value in the RV line cannot exceed the value
+ -- in the RR line (since otherwise the compiler would have detected a
+ -- violation of the restriction).
+
+ -- RV name=N+
+
+ -- Similar to the above, but the compiler cannot determine the exact
+ -- count of violations, but it is at least N.
+
+ -- -------------------------------------------------
+ -- -- R Restrictions (No_Dependence Information) --
+ -- -------------------------------------------------
+
-- Subsequent R lines are present only if pragma Restriction No_Dependence
-- is used. There is one such line for each such pragma appearing in the
-- extended main unit. The format is:
@@ -517,18 +607,25 @@ package Lib.Writ is
--
-- The attributes may appear in any order, separated by spaces.
- -- ---------------------
- -- -- W Withed Units --
- -- ---------------------
+ -- -----------------------------
+ -- -- W, Y and Z Withed Units --
+ -- -----------------------------
-- Following each U line, is a series of lines of the form
-- W unit-name [source-name lib-name] [E] [EA] [ED] [AD]
- --
- -- One of these lines is present for each unit that is mentioned in an
- -- explicit with clause by the current unit. The first parameter is the
- -- unit name in internal format. The second parameter is the file name
- -- of the file that must be compiled to compile this unit. It is
+ -- or
+ -- Y unit-name [source-name lib-name] [E] [EA] [ED] [AD]
+ -- or
+ -- Z unit-name [source-name lib-name] [E] [EA] [ED] [AD]
+ --
+ -- One W line is present for each unit that is mentioned in an explicit
+ -- non-limited with clause by the current unit. One Y line is present
+ -- for each unit that is mentioned in an explicit limited with clause
+ -- by the current unit. One Z line is present for each unit that is
+ -- only implicitly withed by the current unit. The first parameter is
+ -- the unit name in internal format. The second parameter is the file
+ -- name of the file that must be compiled to compile this unit. It is
-- usually the file for the body, except for packages which have no
-- body. For units that need a body, if the source file for the body
-- cannot be found, the file name of the spec is used instead. The
@@ -555,8 +652,6 @@ package Lib.Writ is
-- generic unit compiled with earlier versions of GNAT which did not
-- generate object or ali files for generics.
- -- In fact W lines include implicit withs ???
-
-- -----------------------
-- -- L Linker_Options --
-- -----------------------
diff --git a/gcc/ada/lib.ads b/gcc/ada/lib.ads
index d7607ee097b..f2cc330fdb9 100644
--- a/gcc/ada/lib.ads
+++ b/gcc/ada/lib.ads
@@ -661,7 +661,7 @@ package Lib is
-- one with no code, but the ALI file has the normal form, and we need
-- this ALI file so that the binder can work out a correct order of
-- elaboration.
-
+ --
-- However, ancient versions of GNAT used to not generate code or ALI
-- files for generic units, and this would yield complex order of
-- elaboration issues. These were fixed in GNAT 3.10. The support for not
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index e43495bd238..d45ee140b11 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -2366,7 +2366,7 @@ package body Make is
Last_New := Last_New + 1;
New_Args (Last_New) :=
new String'(Name_Buffer (1 .. Name_Len));
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(New_Args (Last_New),
Do_Fail => Make_Failed'Access,
Parent => Dir_Path,
@@ -2399,7 +2399,7 @@ package body Make is
Directory.Display_Name);
begin
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(New_Args (1),
Do_Fail => Make_Failed'Access,
Parent => Dir_Path,
@@ -4435,6 +4435,13 @@ package body Make is
declare
Success : Boolean := False;
begin
+ -- If gnatmake was invoked with --subdirs and no project file,
+ -- put the executable in the subdirectory specified.
+
+ if Prj.Subdirs /= null and then Main_Project = No_Project then
+ Change_Dir (Object_Directory_Path.all);
+ end if;
+
Link (Main_ALI_File,
Link_With_Shared_Libgcc.all &
Args (Args'First .. Last_Arg),
@@ -4571,6 +4578,13 @@ package body Make is
end if;
end if;
+ -- If gnatmake was invoked with --subdirs and no project file, put the
+ -- binder generated files in the subdirectory specified.
+
+ if Main_Project = No_Project and then Prj.Subdirs /= null then
+ Change_Dir (Object_Directory_Path.all);
+ end if;
+
begin
Bind (Main_ALI_File,
Bind_Shared.all & Args (Args'First .. Last_Arg));
@@ -4807,10 +4821,13 @@ package body Make is
return;
end if;
- -- Regenerate libraries, if there are any and if object files
- -- have been regenerated.
+ -- Regenerate libraries, if there are any and if object files have been
+ -- regenerated. Note that we skip this in CodePeer mode because we don't
+ -- need libraries in this case, and more importantly, the object files
+ -- may not be present.
if Main_Project /= No_Project
+ and then not CodePeer_Mode
and then MLib.Tgt.Support_For_Libraries /= Prj.None
and then (Do_Bind_Step
or Unique_Compile_All_Projects
@@ -5011,36 +5028,36 @@ package body Make is
Get_Name_String (Main_Project.Directory.Display_Name);
begin
for J in 1 .. Binder_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Binder_Switches.Table (J),
Do_Fail => Make_Failed'Access,
- Parent => Dir_Path, Including_L_Switch => False);
+ Parent => Dir_Path, For_Gnatbind => True);
end loop;
for J in 1 .. Saved_Binder_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Saved_Binder_Switches.Table (J),
- Do_Fail => Make_Failed'Access,
- Parent => Current_Work_Dir,
- Including_L_Switch => False);
+ Do_Fail => Make_Failed'Access,
+ Parent => Current_Work_Dir,
+ For_Gnatbind => True);
end loop;
for J in 1 .. Linker_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Linker_Switches.Table (J),
Parent => Dir_Path,
Do_Fail => Make_Failed'Access);
end loop;
for J in 1 .. Saved_Linker_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Saved_Linker_Switches.Table (J),
Do_Fail => Make_Failed'Access,
Parent => Current_Work_Dir);
end loop;
for J in 1 .. Gcc_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Gcc_Switches.Table (J),
Do_Fail => Make_Failed'Access,
Parent => Dir_Path,
@@ -5048,7 +5065,7 @@ package body Make is
end loop;
for J in 1 .. Saved_Gcc_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Saved_Gcc_Switches.Table (J),
Parent => Current_Work_Dir,
Do_Fail => Make_Failed'Access,
@@ -5370,14 +5387,14 @@ package body Make is
Get_Name_String (Main_Project.Directory.Display_Name);
begin
for J in Last_Binder_Switch + 1 .. Binder_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Binder_Switches.Table (J),
Do_Fail => Make_Failed'Access,
- Parent => Dir_Path, Including_L_Switch => False);
+ Parent => Dir_Path, For_Gnatbind => True);
end loop;
for J in Last_Linker_Switch + 1 .. Linker_Switches.Last loop
- Test_If_Relative_Path
+ Ensure_Absolute_Path
(Linker_Switches.Table (J),
Parent => Dir_Path,
Do_Fail => Make_Failed'Access);
diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb
index bc3a0ee1409..cdbe1aa134c 100644
--- a/gcc/ada/makeutl.adb
+++ b/gcc/ada/makeutl.adb
@@ -507,6 +507,109 @@ package body Makeutl is
return Name_Find;
end Create_Name;
+ ---------------------------
+ -- Ensure_Absolute_Path --
+ ---------------------------
+
+ procedure Ensure_Absolute_Path
+ (Switch : in out String_Access;
+ Parent : String;
+ Do_Fail : Fail_Proc;
+ For_Gnatbind : Boolean := False;
+ Including_Non_Switch : Boolean := True;
+ Including_RTS : Boolean := False)
+ is
+ begin
+ if Switch /= null then
+ declare
+ Sw : String (1 .. Switch'Length);
+ Start : Positive;
+
+ begin
+ Sw := Switch.all;
+
+ if Sw (1) = '-' then
+ if Sw'Length >= 3
+ and then (Sw (2) = 'I'
+ or else (not For_Gnatbind
+ and then (Sw (2) = 'L'
+ or else Sw (2) = 'A')))
+ then
+ Start := 3;
+
+ if Sw = "-I-" then
+ return;
+ end if;
+
+ elsif Sw'Length >= 4
+ and then (Sw (2 .. 3) = "aL"
+ or else
+ Sw (2 .. 3) = "aO"
+ or else
+ Sw (2 .. 3) = "aI"
+ or else
+ (For_Gnatbind and then Sw (2 .. 3) = "A="))
+ then
+ Start := 4;
+
+ elsif Including_RTS
+ and then Sw'Length >= 7
+ and then Sw (2 .. 6) = "-RTS="
+ then
+ Start := 7;
+
+ else
+ return;
+ end if;
+
+ -- Because relative path arguments to --RTS= may be relative to
+ -- the search directory prefix, those relative path arguments
+ -- are converted only when they include directory information.
+
+ if not Is_Absolute_Path (Sw (Start .. Sw'Last)) then
+ if Parent'Length = 0 then
+ Do_Fail
+ ("relative search path switches ("""
+ & Sw
+ & """) are not allowed");
+
+ elsif Including_RTS then
+ for J in Start .. Sw'Last loop
+ if Sw (J) = Directory_Separator then
+ Switch :=
+ new String'
+ (Sw (1 .. Start - 1) &
+ Parent &
+ Directory_Separator &
+ Sw (Start .. Sw'Last));
+ return;
+ end if;
+ end loop;
+
+ else
+ Switch :=
+ new String'
+ (Sw (1 .. Start - 1) &
+ Parent &
+ Directory_Separator &
+ Sw (Start .. Sw'Last));
+ end if;
+ end if;
+
+ elsif Including_Non_Switch then
+ if not Is_Absolute_Path (Sw) then
+ if Parent'Length = 0 then
+ Do_Fail
+ ("relative paths (""" & Sw & """) are not allowed");
+ else
+ Switch := new String'(Parent & Directory_Separator & Sw);
+ end if;
+ end if;
+ end if;
+ end;
+ end if;
+ end Ensure_Absolute_Path;
+
----------------------------
-- Executable_Prefix_Path --
----------------------------
@@ -1316,11 +1419,12 @@ package body Makeutl is
-- Object files and -L switches specified with relative
-- paths must be converted to absolute paths.
- Test_If_Relative_Path
- (Switch => Linker_Options_Buffer (Last_Linker_Option),
- Parent => Dir_Path,
- Do_Fail => Do_Fail,
- Including_L_Switch => True);
+ Ensure_Absolute_Path
+ (Switch =>
+ Linker_Options_Buffer (Last_Linker_Option),
+ Parent => Dir_Path,
+ Do_Fail => Do_Fail,
+ For_Gnatbind => False);
end if;
Options := In_Tree.Shared.String_Elements.Table (Options).Next;
@@ -1935,106 +2039,6 @@ package body Makeutl is
end if;
end Path_Or_File_Name;
- ---------------------------
- -- Test_If_Relative_Path --
- ---------------------------
-
- procedure Test_If_Relative_Path
- (Switch : in out String_Access;
- Parent : String;
- Do_Fail : Fail_Proc;
- Including_L_Switch : Boolean := True;
- Including_Non_Switch : Boolean := True;
- Including_RTS : Boolean := False)
- is
- begin
- if Switch /= null then
- declare
- Sw : String (1 .. Switch'Length);
- Start : Positive;
-
- begin
- Sw := Switch.all;
-
- if Sw (1) = '-' then
- if Sw'Length >= 3
- and then (Sw (2) = 'A'
- or else Sw (2) = 'I'
- or else (Including_L_Switch and then Sw (2) = 'L'))
- then
- Start := 3;
-
- if Sw = "-I-" then
- return;
- end if;
-
- elsif Sw'Length >= 4
- and then (Sw (2 .. 3) = "aL"
- or else
- Sw (2 .. 3) = "aO"
- or else
- Sw (2 .. 3) = "aI")
- then
- Start := 4;
-
- elsif Including_RTS
- and then Sw'Length >= 7
- and then Sw (2 .. 6) = "-RTS="
- then
- Start := 7;
-
- else
- return;
- end if;
-
- -- Because relative path arguments to --RTS= may be relative to
- -- the search directory prefix, those relative path arguments
- -- are converted only when they include directory information.
-
- if not Is_Absolute_Path (Sw (Start .. Sw'Last)) then
- if Parent'Length = 0 then
- Do_Fail
- ("relative search path switches ("""
- & Sw
- & """) are not allowed");
-
- elsif Including_RTS then
- for J in Start .. Sw'Last loop
- if Sw (J) = Directory_Separator then
- Switch :=
- new String'
- (Sw (1 .. Start - 1) &
- Parent &
- Directory_Separator &
- Sw (Start .. Sw'Last));
- return;
- end if;
- end loop;
-
- else
- Switch :=
- new String'
- (Sw (1 .. Start - 1) &
- Parent &
- Directory_Separator &
- Sw (Start .. Sw'Last));
- end if;
- end if;
-
- elsif Including_Non_Switch then
- if not Is_Absolute_Path (Sw) then
- if Parent'Length = 0 then
- Do_Fail
- ("relative paths (""" & Sw & """) are not allowed");
- else
- Switch := new String'(Parent & Directory_Separator & Sw);
- end if;
- end if;
- end if;
- end;
- end if;
- end Test_If_Relative_Path;
-
-------------------
-- Unit_Index_Of --
-------------------
diff --git a/gcc/ada/makeutl.ads b/gcc/ada/makeutl.ads
index 3ddb2085dd8..1b899c1bb45 100644
--- a/gcc/ada/makeutl.ads
+++ b/gcc/ada/makeutl.ads
@@ -128,6 +128,21 @@ package Makeutl is
-- source files are still associated with the same units). Return the name
-- of the unit if everything is still valid. Return No_Name otherwise.
+ procedure Ensure_Absolute_Path
+ (Switch : in out String_Access;
+ Parent : String;
+ Do_Fail : Fail_Proc;
+ For_Gnatbind : Boolean := False;
+ Including_Non_Switch : Boolean := True;
+ Including_RTS : Boolean := False);
+ -- Do nothing if Switch is an absolute path switch. If relative, fail if
+ -- Parent is the empty string, otherwise prepend the path with Parent. This
+ -- subprogram is only used when using project files. If For_Gnatbind is
+ -- True, consider gnatbind specific syntax for -L (not a path, left
+ -- unchanged) and -A (path is optional, preceded with "=" if present).
+ -- If Including_RTS is True, process also switches --RTS=. Do_Fail is
+ -- called in case of error. Using Osint.Fail might be appropriate.
+
function Is_Subunit (Source : Source_Id) return Boolean;
-- Return True if source is a subunit
@@ -151,26 +166,6 @@ package Makeutl is
-- entered by a call to Prj.Ext.Add, so that in a project file, External
-- ("name") will return "value".
- procedure Verbose_Msg
- (N1 : Name_Id;
- S1 : String;
- N2 : Name_Id := No_Name;
- S2 : String := "";
- Prefix : String := " -> ";
- Minimum_Verbosity : Opt.Verbosity_Level_Type := Opt.Low);
- procedure Verbose_Msg
- (N1 : File_Name_Type;
- S1 : String;
- N2 : File_Name_Type := No_File;
- S2 : String := "";
- Prefix : String := " -> ";
- Minimum_Verbosity : Opt.Verbosity_Level_Type := Opt.Low);
- -- If the verbose flag (Verbose_Mode) is set and the verbosity level is at
- -- least equal to Minimum_Verbosity, then print Prefix to standard output
- -- followed by N1 and S1. If N2 /= No_Name then N2 is printed after S1. S2
- -- is printed last. Both N1 and N2 are printed in quotation marks. The two
- -- forms differ only in taking Name_Id or File_name_Type arguments.
-
type Name_Ids is array (Positive range <>) of Name_Id;
No_Names : constant Name_Ids := (1 .. 0 => No_Name);
-- Name_Ids is used for list of language names in procedure Get_Directories
@@ -231,27 +226,32 @@ package Makeutl is
-- of project Project, in project tree In_Tree, and in the projects that
-- it imports directly or indirectly, and returns the result.
+ function Path_Or_File_Name (Path : Path_Name_Type) return String;
+ -- Returns a file name if -df is used, otherwise return a path name
+
function Unit_Index_Of (ALI_File : File_Name_Type) return Int;
-- Find the index of a unit in a source file. Return zero if the file is
-- not a multi-unit source file.
- procedure Test_If_Relative_Path
- (Switch : in out String_Access;
- Parent : String;
- Do_Fail : Fail_Proc;
- Including_L_Switch : Boolean := True;
- Including_Non_Switch : Boolean := True;
- Including_RTS : Boolean := False);
- -- Test if Switch is a relative search path switch. If so, fail if Parent
- -- is the empty string, otherwise prepend the path with Parent. This
- -- subprogram is only used when using project files. For gnatbind switches,
- -- Including_L_Switch is False, because the argument of the -L switch is
- -- not a path. If Including_RTS is True, process also switches --RTS=.
- -- Do_Fail is called in case of error. Using Osint.Fail might be
- -- appropriate.
-
- function Path_Or_File_Name (Path : Path_Name_Type) return String;
- -- Returns a file name if -df is used, otherwise return a path name
+ procedure Verbose_Msg
+ (N1 : Name_Id;
+ S1 : String;
+ N2 : Name_Id := No_Name;
+ S2 : String := "";
+ Prefix : String := " -> ";
+ Minimum_Verbosity : Opt.Verbosity_Level_Type := Opt.Low);
+ procedure Verbose_Msg
+ (N1 : File_Name_Type;
+ S1 : String;
+ N2 : File_Name_Type := No_File;
+ S2 : String := "";
+ Prefix : String := " -> ";
+ Minimum_Verbosity : Opt.Verbosity_Level_Type := Opt.Low);
+ -- If the verbose flag (Verbose_Mode) is set and the verbosity level is at
+ -- least equal to Minimum_Verbosity, then print Prefix to standard output
+ -- followed by N1 and S1. If N2 /= No_Name then N2 is printed after S1. S2
+ -- is printed last. Both N1 and N2 are printed in quotation marks. The two
+ -- forms differ only in taking Name_Id or File_name_Type arguments.
-------------------------
-- Program termination --
@@ -280,10 +280,11 @@ package Makeutl is
For_Lang : Name_Id;
For_Builder : Boolean;
Has_Global_Compilation_Switches : Boolean) return Boolean;
- -- For_Builder is true if we have a builder switch
- -- This function should return True in case of success (the switch is
- -- valid), False otherwise. The error message will be displayed by
+ -- For_Builder is true if we have a builder switch. This function
+ -- should return True in case of success (the switch is valid),
+ -- False otherwise. The error message will be displayed by
-- Compute_Builder_Switches itself.
+ --
-- Has_Global_Compilation_Switches is True if the attribute
-- Global_Compilation_Switches is defined in the project.
@@ -292,10 +293,10 @@ package Makeutl is
Root_Environment : in out Prj.Tree.Environment;
Main_Project : Project_Id;
Only_For_Lang : Name_Id := No_Name);
- -- Compute the builder switches and global compilation switches.
- -- Every time a switch is found in the project, it is passed to Add_Switch.
- -- You can provide a value for Only_For_Lang so that we only look for
- -- this language when parsing the global compilation switches.
+ -- Compute the builder switches and global compilation switches. Every time
+ -- a switch is found in the project, it is passed to Add_Switch. You can
+ -- provide a value for Only_For_Lang so that we only look for this language
+ -- when parsing the global compilation switches.
-----------------------
-- Project_Tree data --
diff --git a/gcc/ada/mkdir.c b/gcc/ada/mkdir.c
index debd8067779..b8dba597240 100644
--- a/gcc/ada/mkdir.c
+++ b/gcc/ada/mkdir.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2002-2009, Free Software Foundation, Inc. *
+ * Copyright (C) 2002-2012, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -58,14 +58,20 @@
/* This function provides a portable binding to the mkdir function. */
int
-__gnat_mkdir (char *dir_name)
+__gnat_mkdir (char *dir_name, int encoding ATTRIBUTE_UNUSED)
{
#if defined (__vxworks) && !(defined (__RTP__) && (_WRS_VXWORKS_MINOR != 0))
return mkdir (dir_name);
#elif defined (__MINGW32__)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSC (wname, dir_name, GNAT_MAX_PATH_LEN + 2);
+ if (encoding == Encoding_Unspecified)
+ S2WSC (wname, dir_name, GNAT_MAX_PATH_LEN);
+ else if (encoding == Encoding_UTF8)
+ S2WSU (wname, dir_name, GNAT_MAX_PATH_LEN);
+ else
+ S2WS (wname, dir_name, GNAT_MAX_PATH_LEN);
+
return _tmkdir (wname);
#else
return mkdir (dir_name, S_IRWXU | S_IRWXG | S_IRWXO);
diff --git a/gcc/ada/mlib-utl.adb b/gcc/ada/mlib-utl.adb
index 2e3f0c0c108..edd6749d1c7 100644
--- a/gcc/ada/mlib-utl.adb
+++ b/gcc/ada/mlib-utl.adb
@@ -355,8 +355,10 @@ package body MLib.Utl is
-- The linker option which specifies the response file as a string
Using_GNU_response_file : constant Boolean :=
- Object_File_Option'Length > 0
- and then Object_File_Option (Object_File_Option'Last) = '@';
+ Object_File_Option'Length > 0
+ and then
+ Object_File_Option
+ (Object_File_Option'Last) = '@';
-- Whether a GNU response file is used
Tname : String_Access;
@@ -395,6 +397,7 @@ package body MLib.Utl is
procedure Write_RF (S : String) is
Success : Boolean := True;
+
begin
-- If a GNU response file is used, space and backslash need to be
-- escaped because they are interpreted as a string separator and
@@ -403,17 +406,18 @@ package body MLib.Utl is
-- they are interpreted as string delimiters on both sides.
if Using_GNU_response_file then
- for I in S'Range loop
- if S (I) = ' ' or else S (I) = '\' then
+ for J in S'Range loop
+ if S (J) = ' ' or else S (J) = '\' then
if Write (Tname_FD, ASCII.BACK_SLASH'Address, 1) /= 1 then
Success := False;
end if;
end if;
- if Write (Tname_FD, S (I)'Address, 1) /= 1 then
+ if Write (Tname_FD, S (J)'Address, 1) /= 1 then
Success := False;
end if;
end loop;
+
else
if Write (Tname_FD, S'Address, S'Length) /= S'Length then
Success := False;
@@ -429,6 +433,8 @@ package body MLib.Utl is
end if;
end Write_RF;
+ -- Start of processing for Gcc
+
begin
if Driver_Name = No_Name then
if Gcc_Exec = null then
@@ -544,6 +550,7 @@ package body MLib.Utl is
end loop;
if Object_List_File_Supported and then Link_Bytes > Link_Max then
+
-- Create a temporary file containing the object files, one object
-- file per line for maximal compatibility with linkers supporting
-- this option.
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index 97e7ba7897a..a6c0cf3dff2 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -1070,8 +1070,9 @@ package Opt is
Overflow_Checks_Unsuppressed : Boolean := False;
-- GNAT
- -- Set to True if at least one occurrence of pragma Unsuppress
- -- (All_Checks|Overflow_Checks) has been processed.
+ -- This flag is True if there has been at least one pragma with the
+ -- effect of unsuppressing overflow checks, meaning that a more careful
+ -- check of the current mode is required.
Persistent_BSS_Mode : Boolean := False;
-- GNAT
@@ -1249,7 +1250,7 @@ package Opt is
-- GNAT
-- Set to True if -gnatp (suppress all checks) switch present.
- Suppress_Options : Suppress_Array;
+ Suppress_Options : Suppress_Record;
-- GNAT
-- Flags set True to suppress corresponding check, i.e. add an implicit
-- pragma Suppress at the outer level of each unit compiled. Note that
diff --git a/gcc/ada/osint.adb b/gcc/ada/osint.adb
index 9a2e7ee26f3..3e452b5d6de 100644
--- a/gcc/ada/osint.adb
+++ b/gcc/ada/osint.adb
@@ -1659,7 +1659,7 @@ package body Osint is
-- be reset later (turning some on if -gnato is not specified, and
-- turning all of them on if -gnatp is specified).
- Suppress_Options := (others => False);
+ Suppress_Options := ((others => False), Check_All, Check_All);
-- Reserve the first slot in the search paths table. This is the
-- directory of the main source file or main library file and is filled
@@ -3103,9 +3103,9 @@ package body Osint is
return null;
end To_Canonical_Path_Spec;
- ---------------------------
+ ----------------------
-- To_Host_Dir_Spec --
- ---------------------------
+ ----------------------
function To_Host_Dir_Spec
(Canonical_Dir : String;
@@ -3138,9 +3138,9 @@ package body Osint is
end if;
end To_Host_Dir_Spec;
- ----------------------------
+ -----------------------
-- To_Host_File_Spec --
- ----------------------------
+ -----------------------
function To_Host_File_Spec
(Canonical_File : String) return String_Access
diff --git a/gcc/ada/par-ch13.adb b/gcc/ada/par-ch13.adb
index 9526e325e0a..d3ed8515c38 100644
--- a/gcc/ada/par-ch13.adb
+++ b/gcc/ada/par-ch13.adb
@@ -132,6 +132,251 @@ package body Ch13 is
return Result;
end Aspect_Specifications_Present;
+ -------------------------------
+ -- Get_Aspect_Specifications --
+ -------------------------------
+
+ function Get_Aspect_Specifications
+ (Semicolon : Boolean := True) return List_Id
+ is
+ Aspects : List_Id;
+ Aspect : Node_Id;
+ A_Id : Aspect_Id;
+ OK : Boolean;
+
+ begin
+ Aspects := Empty_List;
+
+ -- Check if aspect specification present
+
+ if not Aspect_Specifications_Present then
+ if Semicolon then
+ TF_Semicolon;
+ end if;
+
+ return Aspects;
+ end if;
+
+ Scan; -- past WITH
+ Aspects := Empty_List;
+
+ loop
+ OK := True;
+
+ if Token /= Tok_Identifier then
+ Error_Msg_SC ("aspect identifier expected");
+
+ if Semicolon then
+ Resync_Past_Semicolon;
+ end if;
+
+ return Aspects;
+ end if;
+
+ -- We have an identifier (which should be an aspect identifier)
+
+ A_Id := Get_Aspect_Id (Token_Name);
+ Aspect :=
+ Make_Aspect_Specification (Token_Ptr,
+ Identifier => Token_Node);
+
+ -- No valid aspect identifier present
+
+ if A_Id = No_Aspect then
+ Error_Msg_SC ("aspect identifier expected");
+
+ -- Check bad spelling
+
+ for J in Aspect_Id_Exclude_No_Aspect loop
+ if Is_Bad_Spelling_Of (Token_Name, Aspect_Names (J)) then
+ Error_Msg_Name_1 := Aspect_Names (J);
+ Error_Msg_SC -- CODEFIX
+ ("\possible misspelling of%");
+ exit;
+ end if;
+ end loop;
+
+ Scan; -- past incorrect identifier
+
+ if Token = Tok_Apostrophe then
+ Scan; -- past '
+ Scan; -- past presumably CLASS
+ end if;
+
+ if Token = Tok_Arrow then
+ Scan; -- Past arrow
+ Set_Expression (Aspect, P_Expression);
+ OK := False;
+
+ elsif Token = Tok_Comma then
+ OK := False;
+
+ else
+ if Semicolon then
+ Resync_Past_Semicolon;
+ end if;
+
+ return Aspects;
+ end if;
+
+ -- OK aspect scanned
+
+ else
+ Scan; -- past identifier
+
+ -- Check for 'Class present
+
+ if Token = Tok_Apostrophe then
+ if not Class_Aspect_OK (A_Id) then
+ Error_Msg_Node_1 := Identifier (Aspect);
+ Error_Msg_SC ("aspect& does not permit attribute here");
+ Scan; -- past apostrophe
+ Scan; -- past presumed CLASS
+ OK := False;
+
+ else
+ Scan; -- past apostrophe
+
+ if Token /= Tok_Identifier
+ or else Token_Name /= Name_Class
+ then
+ Error_Msg_SC ("Class attribute expected here");
+ OK := False;
+
+ if Token = Tok_Identifier then
+ Scan; -- past identifier not CLASS
+ end if;
+
+ else
+ Scan; -- past CLASS
+ Set_Class_Present (Aspect);
+ end if;
+ end if;
+ end if;
+
+ -- Test case of missing aspect definition
+
+ if Token = Tok_Comma
+ or else Token = Tok_Semicolon
+ then
+ if Aspect_Argument (A_Id) /= Optional then
+ Error_Msg_Node_1 := Identifier (Aspect);
+ Error_Msg_AP ("aspect& requires an aspect definition");
+ OK := False;
+ end if;
+
+ elsif not Semicolon and then Token /= Tok_Arrow then
+ if Aspect_Argument (A_Id) /= Optional then
+
+ -- The name or expression may be there, but the arrow is
+ -- missing. Skip to the end of the declaration.
+
+ T_Arrow;
+ Resync_To_Semicolon;
+ end if;
+
+ -- Here we have an aspect definition
+
+ else
+ if Token = Tok_Arrow then
+ Scan; -- past arrow
+ else
+ T_Arrow;
+ OK := False;
+ end if;
+
+ if Aspect_Argument (A_Id) = Name then
+ Set_Expression (Aspect, P_Name);
+ else
+ Set_Expression (Aspect, P_Expression);
+ end if;
+ end if;
+
+ -- If OK clause scanned, add it to the list
+
+ if OK then
+ Append (Aspect, Aspects);
+ end if;
+
+ if Token = Tok_Comma then
+ Scan; -- past comma
+ goto Continue;
+
+ -- Recognize the case where a comma is missing between two
+ -- aspects, issue an error and proceed with next aspect.
+
+ elsif Token = Tok_Identifier
+ and then Get_Aspect_Id (Token_Name) /= No_Aspect
+ then
+ declare
+ Scan_State : Saved_Scan_State;
+
+ begin
+ Save_Scan_State (Scan_State);
+ Scan; -- past identifier
+
+ if Token = Tok_Arrow then
+ Restore_Scan_State (Scan_State);
+ Error_Msg_AP -- CODEFIX
+ ("|missing "",""");
+ goto Continue;
+
+ else
+ Restore_Scan_State (Scan_State);
+ end if;
+ end;
+
+ -- Recognize the case where a semicolon was mistyped for a comma
+ -- between two aspects, issue an error and proceed with next
+ -- aspect.
+
+ elsif Token = Tok_Semicolon then
+ declare
+ Scan_State : Saved_Scan_State;
+
+ begin
+ Save_Scan_State (Scan_State);
+ Scan; -- past semicolon
+
+ if Token = Tok_Identifier
+ and then Get_Aspect_Id (Token_Name) /= No_Aspect
+ then
+ Scan; -- past identifier
+
+ if Token = Tok_Arrow then
+ Restore_Scan_State (Scan_State);
+ Error_Msg_SC -- CODEFIX
+ ("|"";"" should be "",""");
+ Scan; -- past semicolon
+ goto Continue;
+
+ else
+ Restore_Scan_State (Scan_State);
+ end if;
+
+ else
+ Restore_Scan_State (Scan_State);
+ end if;
+ end;
+ end if;
+
+ -- Must be terminator character
+
+ if Semicolon then
+ T_Semicolon;
+ end if;
+
+ exit;
+
+ <<Continue>>
+ null;
+ end if;
+ end loop;
+
+ return Aspects;
+
+ end Get_Aspect_Specifications;
+
--------------------------------------------
-- 13.1 Representation Clause (also I.7) --
--------------------------------------------
@@ -221,7 +466,14 @@ package body Ch13 is
if Token = Tok_Identifier then
Attr_Name := Token_Name;
- if not Is_Attribute_Name (Attr_Name) then
+ -- Note that the parser must complain in case of an internal
+ -- attribute name that comes from source since internal names
+ -- are meant to be used only by the compiler.
+
+ if not Is_Attribute_Name (Attr_Name)
+ and then (not Is_Internal_Attribute_Name (Attr_Name)
+ or else Comes_From_Source (Token_Node))
+ then
Signal_Bad_Attribute;
end if;
@@ -390,244 +642,18 @@ package body Ch13 is
Semicolon : Boolean := True)
is
Aspects : List_Id;
- Aspect : Node_Id;
- A_Id : Aspect_Id;
- OK : Boolean;
Ptr : Source_Ptr;
begin
- -- Check if aspect specification present
-
- if not Aspect_Specifications_Present then
- if Semicolon then
- TF_Semicolon;
- end if;
-
- return;
- end if;
-
-- Aspect Specification is present
Ptr := Token_Ptr;
- Scan; -- past WITH
-- Here we have an aspect specification to scan, note that we don't
-- set the flag till later, because it may turn out that we have no
-- valid aspects in the list.
- Aspects := Empty_List;
- loop
- OK := True;
-
- if Token /= Tok_Identifier then
- Error_Msg_SC ("aspect identifier expected");
-
- if Semicolon then
- Resync_Past_Semicolon;
- end if;
-
- return;
- end if;
-
- -- We have an identifier (which should be an aspect identifier)
-
- A_Id := Get_Aspect_Id (Token_Name);
- Aspect :=
- Make_Aspect_Specification (Token_Ptr,
- Identifier => Token_Node);
-
- -- No valid aspect identifier present
-
- if A_Id = No_Aspect then
- Error_Msg_SC ("aspect identifier expected");
-
- -- Check bad spelling
-
- for J in Aspect_Id loop
- if Is_Bad_Spelling_Of (Token_Name, Aspect_Names (J)) then
- Error_Msg_Name_1 := Aspect_Names (J);
- Error_Msg_SC -- CODEFIX
- ("\possible misspelling of%");
- exit;
- end if;
- end loop;
-
- Scan; -- past incorrect identifier
-
- if Token = Tok_Apostrophe then
- Scan; -- past '
- Scan; -- past presumably CLASS
- end if;
-
- if Token = Tok_Arrow then
- Scan; -- Past arrow
- Set_Expression (Aspect, P_Expression);
- OK := False;
-
- elsif Token = Tok_Comma then
- OK := False;
-
- else
- if Semicolon then
- Resync_Past_Semicolon;
- end if;
-
- return;
- end if;
-
- -- OK aspect scanned
-
- else
- Scan; -- past identifier
-
- -- Check for 'Class present
-
- if Token = Tok_Apostrophe then
- if not Class_Aspect_OK (A_Id) then
- Error_Msg_Node_1 := Identifier (Aspect);
- Error_Msg_SC ("aspect& does not permit attribute here");
- Scan; -- past apostrophe
- Scan; -- past presumed CLASS
- OK := False;
-
- else
- Scan; -- past apostrophe
-
- if Token /= Tok_Identifier
- or else Token_Name /= Name_Class
- then
- Error_Msg_SC ("Class attribute expected here");
- OK := False;
-
- if Token = Tok_Identifier then
- Scan; -- past identifier not CLASS
- end if;
-
- else
- Scan; -- past CLASS
- Set_Class_Present (Aspect);
- end if;
- end if;
- end if;
-
- -- Test case of missing aspect definition
-
- if Token = Tok_Comma
- or else Token = Tok_Semicolon
- then
- if Aspect_Argument (A_Id) /= Optional then
- Error_Msg_Node_1 := Identifier (Aspect);
- Error_Msg_AP ("aspect& requires an aspect definition");
- OK := False;
- end if;
-
- elsif not Semicolon and then Token /= Tok_Arrow then
- if Aspect_Argument (A_Id) /= Optional then
-
- -- The name or expression may be there, but the arrow is
- -- missing. Skip to the end of the declaration.
-
- T_Arrow;
- Resync_To_Semicolon;
- end if;
-
- -- Here we have an aspect definition
-
- else
- if Token = Tok_Arrow then
- Scan; -- past arrow
- else
- T_Arrow;
- OK := False;
- end if;
-
- if Aspect_Argument (A_Id) = Name then
- Set_Expression (Aspect, P_Name);
- else
- Set_Expression (Aspect, P_Expression);
- end if;
- end if;
-
- -- If OK clause scanned, add it to the list
-
- if OK then
- Append (Aspect, Aspects);
- end if;
-
- if Token = Tok_Comma then
- Scan; -- past comma
- goto Continue;
-
- -- Recognize the case where a comma is missing between two
- -- aspects, issue an error and proceed with next aspect.
-
- elsif Token = Tok_Identifier
- and then Get_Aspect_Id (Token_Name) /= No_Aspect
- then
- declare
- Scan_State : Saved_Scan_State;
-
- begin
- Save_Scan_State (Scan_State);
- Scan; -- past identifier
-
- if Token = Tok_Arrow then
- Restore_Scan_State (Scan_State);
- Error_Msg_AP -- CODEFIX
- ("|missing "",""");
- goto Continue;
-
- else
- Restore_Scan_State (Scan_State);
- end if;
- end;
-
- -- Recognize the case where a semicolon was mistyped for a comma
- -- between two aspects, issue an error and proceed with next
- -- aspect.
-
- elsif Token = Tok_Semicolon then
- declare
- Scan_State : Saved_Scan_State;
-
- begin
- Save_Scan_State (Scan_State);
- Scan; -- past semicolon
-
- if Token = Tok_Identifier
- and then Get_Aspect_Id (Token_Name) /= No_Aspect
- then
- Scan; -- past identifier
-
- if Token = Tok_Arrow then
- Restore_Scan_State (Scan_State);
- Error_Msg_SC -- CODEFIX
- ("|"";"" should be "",""");
- Scan; -- past semicolon
- goto Continue;
-
- else
- Restore_Scan_State (Scan_State);
- end if;
-
- else
- Restore_Scan_State (Scan_State);
- end if;
- end;
- end if;
-
- -- Must be terminator character
-
- if Semicolon then
- T_Semicolon;
- end if;
-
- exit;
-
- <<Continue>>
- null;
- end if;
- end loop;
+ Aspects := Get_Aspect_Specifications (Semicolon);
-- Here if aspects present
@@ -807,11 +833,10 @@ package body Ch13 is
-- Otherwise we have an illegal range attribute. Note that P_Name
-- ensures that Token = Tok_Range is the only possibility left here.
- else -- Token = Tok_Range
+ else
Error_Msg_SC ("RANGE attribute illegal here!");
raise Error_Resync;
end if;
-
end P_Code_Statement;
end Ch13;
diff --git a/gcc/ada/par-ch6.adb b/gcc/ada/par-ch6.adb
index f527dbe81cb..4f6ccb52339 100644
--- a/gcc/ada/par-ch6.adb
+++ b/gcc/ada/par-ch6.adb
@@ -154,6 +154,7 @@ package body Ch6 is
function P_Subprogram (Pf_Flags : Pf_Rec) return Node_Id is
Specification_Node : Node_Id;
Name_Node : Node_Id;
+ Aspects : List_Id;
Fpart_List : List_Id;
Fpart_Sloc : Source_Ptr;
Result_Not_Null : Boolean := False;
@@ -186,6 +187,8 @@ package body Ch6 is
Scope.Table (Scope.Last).Ecol := Start_Column;
Scope.Table (Scope.Last).Lreq := False;
+ Aspects := Empty_List;
+
-- Ada 2005: Scan leading NOT OVERRIDING indicator
if Token = Tok_Not then
@@ -810,6 +813,16 @@ package body Ch6 is
New_Node (N_Subprogram_Body, Sloc (Specification_Node));
Set_Specification (Body_Node, Specification_Node);
+ -- If aspects are present, the specification is parsed as
+ -- a subprogram declaration, and we jump here after seeing
+ -- the keyword IS. Attach asspects previously collected to
+ -- the body.
+
+ if Is_Non_Empty_List (Aspects) then
+ Set_Parent (Aspects, Body_Node);
+ Set_Aspect_Specifications (Body_Node, Aspects);
+ end if;
+
-- In SPARK, a HIDE directive can be placed at the beginning
-- of a subprogram implementation, thus hiding the
-- subprogram body from SPARK tool-set. No violation of the
@@ -841,7 +854,24 @@ package body Ch6 is
Decl_Node :=
New_Node (N_Subprogram_Declaration, Sloc (Specification_Node));
Set_Specification (Decl_Node, Specification_Node);
- P_Aspect_Specifications (Decl_Node);
+ Aspects := Get_Aspect_Specifications (Semicolon => False);
+
+ -- Aspects may be present on a subprogram body. The source parsed
+ -- so far is that of its specification, go parse the body and attach
+ -- the collected aspects, if any, to the body.
+
+ if Token = Tok_Is then
+ Scan;
+ goto Subprogram_Body;
+
+ else
+ if Is_Non_Empty_List (Aspects) then
+ Set_Parent (Aspects, Decl_Node);
+ Set_Aspect_Specifications (Decl_Node, Aspects);
+ end if;
+
+ TF_Semicolon;
+ end if;
-- If this is a context in which a subprogram body is permitted,
-- set active SIS entry in case (see section titled "Handling
@@ -1532,7 +1562,12 @@ package body Ch6 is
("(style) IN should be omitted");
end if;
- if Token = Tok_Access then
+ -- Since Ada 2005, formal objects can have an anonymous access type,
+ -- and of course carry a mode indicator.
+
+ if Token = Tok_Access
+ and then Nkind (Node) /= N_Formal_Object_Declaration
+ then
Error_Msg_SP ("IN not allowed together with ACCESS");
Scan; -- past ACCESS
end if;
diff --git a/gcc/ada/par-endh.adb b/gcc/ada/par-endh.adb
index 12f7015f6a5..e6d4e19d6ac 100644
--- a/gcc/ada/par-endh.adb
+++ b/gcc/ada/par-endh.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -199,7 +199,7 @@ package body Endh is
End_OK := True;
Scan; -- past END
- -- Set End_Span if expected. note that this will be useless
+ -- Set End_Span if expected. Note that this will be useless
-- if we do not have the right ending keyword, but in this
-- case we have a malformed program anyway, and the setting
-- of End_Span will simply be unreliable in this case anyway.
diff --git a/gcc/ada/par-util.adb b/gcc/ada/par-util.adb
index f281c7964f0..efcf70bf352 100644
--- a/gcc/ada/par-util.adb
+++ b/gcc/ada/par-util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/par.adb b/gcc/ada/par.adb
index 3f9d541ef7f..892aac86bfd 100644
--- a/gcc/ada/par.adb
+++ b/gcc/ada/par.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -876,6 +876,12 @@ function Par (Configuration_Pragmas : Boolean) return List_Id is
-- for aspects so it does not matter whether the aspect specifications
-- are terminated by semicolon or some other character.
+ function Get_Aspect_Specifications
+ (Semicolon : Boolean := True) return List_Id;
+ -- Parse a list of aspects but do not attach them to a declaration node.
+ -- Subsidiary to the following procedure. Used when parsing a subprogram
+ -- specification that may be a declaration or a body.
+
procedure P_Aspect_Specifications
(Decl : Node_Id;
Semicolon : Boolean := True);
diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb
index 28fa18681ce..78ff71bfd3b 100644
--- a/gcc/ada/par_sco.adb
+++ b/gcc/ada/par_sco.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -25,6 +25,7 @@
with Atree; use Atree;
with Debug; use Debug;
+with Errout; use Errout;
with Lib; use Lib;
with Lib.Util; use Lib.Util;
with Namet; use Namet;
@@ -69,9 +70,9 @@ package body Par_SCO is
-- We need to be able to get to conditions quickly for handling the calls
-- to Set_SCO_Condition efficiently, and similarly to get to pragmas to
- -- handle calls to Set_SCO_Pragma_Enabled. For this purpose we identify
- -- the conditions and pragmas in the table by their starting sloc, and use
- -- this hash table to map from these sloc values to SCO_Table indexes.
+ -- handle calls to Set_SCO_Pragma_Enabled. For this purpose we identify the
+ -- conditions and pragmas in the table by their starting sloc, and use this
+ -- hash table to map from these sloc values to SCO_Table indexes.
type Header_Num is new Integer range 0 .. 996;
-- Type for hash table headers
@@ -133,13 +134,16 @@ package body Par_SCO is
-- F/T/S/E for a valid dominance marker, or ' ' for no dominant
N : Node_Id;
- -- Node providing the sloc(s) for the dominance marker
+ -- Node providing the Sloc(s) for the dominance marker
end record;
No_Dominant : constant Dominant_Info := (' ', Empty);
procedure Traverse_Declarations_Or_Statements
(L : List_Id;
- D : Dominant_Info := No_Dominant);
+ D : Dominant_Info := No_Dominant;
+ P : Node_Id := Empty);
+ -- Process L, a list of statements or declarations dominated by D.
+ -- If P is present, it is processed as though it had been prepended to L.
procedure Traverse_Generic_Instantiation (N : Node_Id);
procedure Traverse_Generic_Package_Declaration (N : Node_Id);
@@ -328,9 +332,7 @@ package body Par_SCO is
function Is_Logical_Operator (N : Node_Id) return Boolean is
begin
- return Nkind_In (N, N_Op_Not,
- N_And_Then,
- N_Or_Else);
+ return Nkind_In (N, N_Op_Not, N_And_Then, N_Or_Else);
end Is_Logical_Operator;
-----------------------
@@ -475,7 +477,7 @@ package body Par_SCO is
procedure Output_Header (T : Character) is
Loc : Source_Ptr := No_Location;
- -- Node whose sloc is used for the decision
+ -- Node whose Sloc is used for the decision
begin
case T is
@@ -488,13 +490,27 @@ package body Par_SCO is
when 'G' | 'P' =>
- -- For entry, the token sloc is from the N_Entry_Body. For
- -- PRAGMA, we must get the location from the pragma node.
- -- Argument N is the pragma argument, and we have to go up two
- -- levels (through the pragma argument association) to get to
- -- the pragma node itself.
-
- Loc := Sloc (Parent (Parent (N)));
+ -- For entry guard, the token sloc is from the N_Entry_Body.
+ -- For PRAGMA, we must get the location from the pragma node.
+ -- Argument N is the pragma argument, and we have to go up
+ -- two levels (through the pragma argument association) to
+ -- get to the pragma node itself. For the guard on a select
+ -- alternative, we do not have access to the token location for
+ -- the WHEN, so we use the first sloc of the condition itself
+ -- (note: we use First_Sloc, not Sloc, because this is what is
+ -- referenced by dominance markers).
+
+ -- Doesn't this requirement of using First_Sloc need to be
+ -- documented in the spec ???
+
+ if Nkind_In (Parent (N), N_Accept_Alternative,
+ N_Delay_Alternative,
+ N_Terminate_Alternative)
+ then
+ Loc := First_Sloc (N);
+ else
+ Loc := Sloc (Parent (Parent (N)));
+ end if;
when 'X' =>
@@ -547,10 +563,7 @@ package body Par_SCO is
-- Logical operators, output table entries and then process
-- operands recursively to deal with nested conditions.
- when N_And_Then |
- N_Or_Else |
- N_Op_Not =>
-
+ when N_And_Then | N_Or_Else | N_Op_Not =>
declare
T : Character;
@@ -1036,7 +1049,8 @@ package body Par_SCO is
procedure Traverse_Declarations_Or_Statements
(L : List_Id;
- D : Dominant_Info := No_Dominant)
+ D : Dominant_Info := No_Dominant;
+ P : Node_Id := Empty)
is
Current_Dominant : Dominant_Info := D;
-- Dominance information for the current basic block
@@ -1044,8 +1058,7 @@ package body Par_SCO is
Current_Test : Node_Id;
-- Conditional node (N_If_Statement or N_Elsiif being processed
- N : Node_Id;
- Dummy : Source_Ptr;
+ N : Node_Id;
SC_First : constant Nat := SC.Last + 1;
SD_First : constant Nat := SD.Last + 1;
@@ -1056,15 +1069,6 @@ package body Par_SCO is
-- is the letter that identifies the type of statement/declaration that
-- is being added to the sequence.
- procedure Extend_Statement_Sequence
- (From : Node_Id;
- To : Node_Id;
- Typ : Character);
- -- This version extends the current statement sequence with an entry
- -- that starts with the first token of From, and ends with the last
- -- token of To. It is used for example in a CASE statement to cover
- -- the range from the CASE token to the last token of the expression.
-
procedure Set_Statement_Entry;
-- Output CS entries for all statements saved in table SC, and end the
-- current CS sequence.
@@ -1080,6 +1084,9 @@ package body Par_SCO is
pragma Inline (Process_Decisions_Defer);
-- Same case for list arguments, deferred call to Process_Decisions
+ procedure Traverse_One (N : Node_Id);
+ -- Traverse one declaration or statement
+
-------------------------
-- Set_Statement_Entry --
-------------------------
@@ -1180,24 +1187,50 @@ package body Par_SCO is
-------------------------------
procedure Extend_Statement_Sequence (N : Node_Id; Typ : Character) is
- F : Source_Ptr;
- T : Source_Ptr;
+ F : Source_Ptr;
+ T : Source_Ptr;
+ Dummy : Source_Ptr;
+ To_Node : Node_Id := Empty;
+
begin
Sloc_Range (N, F, T);
- SC.Append ((N, F, T, Typ));
- end Extend_Statement_Sequence;
- procedure Extend_Statement_Sequence
- (From : Node_Id;
- To : Node_Id;
- Typ : Character)
- is
- F : Source_Ptr;
- T : Source_Ptr;
- begin
- Sloc_Range (From, F, Dummy);
- Sloc_Range (To, Dummy, T);
- SC.Append ((From, F, T, Typ));
+ case Nkind (N) is
+ when N_Accept_Statement =>
+ if Present (Parameter_Specifications (N)) then
+ To_Node := Last (Parameter_Specifications (N));
+ elsif Present (Entry_Index (N)) then
+ To_Node := Entry_Index (N);
+ end if;
+
+ when N_Case_Statement =>
+ To_Node := Expression (N);
+
+ when N_If_Statement | N_Elsif_Part =>
+ To_Node := Condition (N);
+
+ when N_Extended_Return_Statement =>
+ To_Node := Last (Return_Object_Declarations (N));
+
+ when N_Loop_Statement =>
+ To_Node := Iteration_Scheme (N);
+
+ when N_Selective_Accept |
+ N_Timed_Entry_Call |
+ N_Conditional_Entry_Call |
+ N_Asynchronous_Select =>
+ T := F;
+
+ when others =>
+ null;
+
+ end case;
+
+ if Present (To_Node) then
+ Sloc_Range (To_Node, Dummy, T);
+ end if;
+
+ SC.Append ((N, F, T, Typ));
end Extend_Statement_Sequence;
-----------------------------
@@ -1214,430 +1247,554 @@ package body Par_SCO is
SD.Append ((Empty, L, T, Current_Pragma_Sloc));
end Process_Decisions_Defer;
- -- Start of processing for Traverse_Declarations_Or_Statements
+ ------------------
+ -- Traverse_One --
+ ------------------
- begin
- if Is_Non_Empty_List (L) then
+ procedure Traverse_One (N : Node_Id) is
+ begin
+ -- Initialize or extend current statement sequence. Note that for
+ -- special cases such as IF and Case statements we will modify
+ -- the range to exclude internal statements that should not be
+ -- counted as part of the current statement sequence.
- -- Loop through statements or declarations
+ case Nkind (N) is
- N := First (L);
- while Present (N) loop
+ -- Package declaration
- -- Initialize or extend current statement sequence. Note that for
- -- special cases such as IF and Case statements we will modify
- -- the range to exclude internal statements that should not be
- -- counted as part of the current statement sequence.
+ when N_Package_Declaration =>
+ Set_Statement_Entry;
+ Traverse_Package_Declaration (N);
- case Nkind (N) is
+ -- Generic package declaration
- -- Package declaration
+ when N_Generic_Package_Declaration =>
+ Set_Statement_Entry;
+ Traverse_Generic_Package_Declaration (N);
- when N_Package_Declaration =>
- Set_Statement_Entry;
- Traverse_Package_Declaration (N);
+ -- Package body
- -- Generic package declaration
+ when N_Package_Body =>
+ Set_Statement_Entry;
+ Traverse_Package_Body (N);
- when N_Generic_Package_Declaration =>
- Set_Statement_Entry;
- Traverse_Generic_Package_Declaration (N);
+ -- Subprogram declaration
- -- Package body
+ when N_Subprogram_Declaration =>
+ Process_Decisions_Defer
+ (Parameter_Specifications (Specification (N)), 'X');
- when N_Package_Body =>
- Set_Statement_Entry;
- Traverse_Package_Body (N);
+ -- Generic subprogram declaration
+
+ when N_Generic_Subprogram_Declaration =>
+ Process_Decisions_Defer
+ (Generic_Formal_Declarations (N), 'X');
+ Process_Decisions_Defer
+ (Parameter_Specifications (Specification (N)), 'X');
- -- Subprogram declaration
+ -- Task or subprogram body
- when N_Subprogram_Declaration =>
- Process_Decisions_Defer
- (Parameter_Specifications (Specification (N)), 'X');
+ when N_Task_Body | N_Subprogram_Body =>
+ Set_Statement_Entry;
+ Traverse_Subprogram_Or_Task_Body (N);
- -- Generic subprogram declaration
+ -- Entry body
- when N_Generic_Subprogram_Declaration =>
- Process_Decisions_Defer
- (Generic_Formal_Declarations (N), 'X');
- Process_Decisions_Defer
- (Parameter_Specifications (Specification (N)), 'X');
+ when N_Entry_Body =>
+ declare
+ Cond : constant Node_Id :=
+ Condition (Entry_Body_Formal_Part (N));
- -- Task or subprogram body
+ Inner_Dominant : Dominant_Info := No_Dominant;
- when N_Task_Body | N_Subprogram_Body =>
+ begin
Set_Statement_Entry;
- Traverse_Subprogram_Or_Task_Body (N);
- -- Entry body
+ if Present (Cond) then
+ Process_Decisions_Defer (Cond, 'G');
- when N_Entry_Body =>
- declare
- Cond : constant Node_Id :=
- Condition (Entry_Body_Formal_Part (N));
- Inner_Dominant : Dominant_Info := No_Dominant;
- begin
- Set_Statement_Entry;
+ -- For an entry body with a barrier, the entry body
+ -- is dominanted by a True evaluation of the barrier.
- if Present (Cond) then
- Process_Decisions_Defer (Cond, 'G');
+ Inner_Dominant := ('T', N);
+ end if;
- -- For an entry body with a barrier, the entry body
- -- is dominanted by a True evaluation of the barrier.
+ Traverse_Subprogram_Or_Task_Body (N, Inner_Dominant);
+ end;
- Inner_Dominant := ('T', N);
- end if;
+ -- Protected body
- Traverse_Subprogram_Or_Task_Body (N, Inner_Dominant);
- end;
+ when N_Protected_Body =>
+ Set_Statement_Entry;
+ Traverse_Protected_Body (N);
- -- Protected body
+ -- Exit statement, which is an exit statement in the SCO sense,
+ -- so it is included in the current statement sequence, but
+ -- then it terminates this sequence. We also have to process
+ -- any decisions in the exit statement expression.
- when N_Protected_Body =>
- Set_Statement_Entry;
- Traverse_Protected_Body (N);
+ when N_Exit_Statement =>
+ Extend_Statement_Sequence (N, ' ');
+ Process_Decisions_Defer (Condition (N), 'E');
+ Set_Statement_Entry;
- -- Exit statement, which is an exit statement in the SCO sense,
- -- so it is included in the current statement sequence, but
- -- then it terminates this sequence. We also have to process
- -- any decisions in the exit statement expression.
+ -- If condition is present, then following statement is
+ -- only executed if the condition evaluates to False.
- when N_Exit_Statement =>
- Extend_Statement_Sequence (N, ' ');
- Process_Decisions_Defer (Condition (N), 'E');
- Set_Statement_Entry;
+ if Present (Condition (N)) then
+ Current_Dominant := ('F', N);
+ else
+ Current_Dominant := No_Dominant;
+ end if;
- -- If condition is present, then following statement is
- -- only executed if the condition evaluates to False.
+ -- Label, which breaks the current statement sequence, but the
+ -- label itself is not included in the next statement sequence,
+ -- since it generates no code.
- if Present (Condition (N)) then
- Current_Dominant := ('F', N);
- else
- Current_Dominant := No_Dominant;
- end if;
+ when N_Label =>
+ Set_Statement_Entry;
+ Current_Dominant := No_Dominant;
- -- Label, which breaks the current statement sequence, but the
- -- label itself is not included in the next statement sequence,
- -- since it generates no code.
+ -- Block statement, which breaks the current statement sequence
- when N_Label =>
- Set_Statement_Entry;
- Current_Dominant := No_Dominant;
+ when N_Block_Statement =>
+ Set_Statement_Entry;
+ Traverse_Declarations_Or_Statements
+ (L => Declarations (N),
+ D => Current_Dominant);
+ Traverse_Handled_Statement_Sequence
+ (N => Handled_Statement_Sequence (N),
+ D => Current_Dominant);
- -- Block statement, which breaks the current statement sequence
+ -- If statement, which breaks the current statement sequence,
+ -- but we include the condition in the current sequence.
- when N_Block_Statement =>
- Set_Statement_Entry;
- Traverse_Declarations_Or_Statements
- (L => Declarations (N),
- D => Current_Dominant);
- Traverse_Handled_Statement_Sequence
- (N => Handled_Statement_Sequence (N),
- D => Current_Dominant);
+ when N_If_Statement =>
+ Current_Test := N;
+ Extend_Statement_Sequence (N, 'I');
+ Process_Decisions_Defer (Condition (N), 'I');
+ Set_Statement_Entry;
- -- If statement, which breaks the current statement sequence,
- -- but we include the condition in the current sequence.
+ -- Now we traverse the statements in the THEN part
- when N_If_Statement =>
- Current_Test := N;
- Extend_Statement_Sequence (N, Condition (N), 'I');
- Process_Decisions_Defer (Condition (N), 'I');
- Set_Statement_Entry;
+ Traverse_Declarations_Or_Statements
+ (L => Then_Statements (N),
+ D => ('T', N));
- -- Now we traverse the statements in the THEN part
+ -- Loop through ELSIF parts if present
- Traverse_Declarations_Or_Statements
- (L => Then_Statements (N),
- D => ('T', N));
+ if Present (Elsif_Parts (N)) then
+ declare
+ Saved_Dominant : constant Dominant_Info :=
+ Current_Dominant;
- -- Loop through ELSIF parts if present
+ Elif : Node_Id := First (Elsif_Parts (N));
- if Present (Elsif_Parts (N)) then
- declare
- Saved_Dominant : constant Dominant_Info :=
- Current_Dominant;
- Elif : Node_Id := First (Elsif_Parts (N));
+ begin
+ while Present (Elif) loop
- begin
- while Present (Elif) loop
+ -- An Elsif is executed only if the previous test
+ -- got a FALSE outcome.
- -- An Elsif is executed only if the previous test
- -- got a FALSE outcome.
+ Current_Dominant := ('F', Current_Test);
- Current_Dominant := ('F', Current_Test);
+ -- Now update current test information
- -- Now update current test information
+ Current_Test := Elif;
- Current_Test := Elif;
+ -- We generate a statement sequence for the
+ -- construct "ELSIF condition", so that we have
+ -- a statement for the resulting decisions.
- -- We generate a statement sequence for the
- -- construct "ELSIF condition", so that we have
- -- a statement for the resulting decisions.
+ Extend_Statement_Sequence (Elif, 'I');
+ Process_Decisions_Defer (Condition (Elif), 'I');
+ Set_Statement_Entry;
- Extend_Statement_Sequence
- (Elif, Condition (Elif), 'I');
- Process_Decisions_Defer (Condition (Elif), 'I');
- Set_Statement_Entry;
+ -- An ELSIF part is never guaranteed to have
+ -- been executed, following statements are only
+ -- dominated by the initial IF statement.
- -- An ELSIF part is never guaranteed to have
- -- been executed, following statements are only
- -- dominated by the initial IF statement.
+ Current_Dominant := Saved_Dominant;
- Current_Dominant := Saved_Dominant;
+ -- Traverse the statements in the ELSIF
- -- Traverse the statements in the ELSIF
+ Traverse_Declarations_Or_Statements
+ (L => Then_Statements (Elif),
+ D => ('T', Elif));
+ Next (Elif);
+ end loop;
+ end;
+ end if;
- Traverse_Declarations_Or_Statements
- (L => Then_Statements (Elif),
- D => ('T', Elif));
- Next (Elif);
- end loop;
- end;
- end if;
+ -- Finally traverse the ELSE statements if present
- -- Finally traverse the ELSE statements if present
+ Traverse_Declarations_Or_Statements
+ (L => Else_Statements (N),
+ D => ('F', Current_Test));
- Traverse_Declarations_Or_Statements
- (L => Else_Statements (N),
- D => ('F', Current_Test));
+ -- CASE statement, which breaks the current statement sequence,
+ -- but we include the expression in the current sequence.
- -- Case statement, which breaks the current statement sequence,
- -- but we include the expression in the current sequence.
+ when N_Case_Statement =>
+ Extend_Statement_Sequence (N, 'C');
+ Process_Decisions_Defer (Expression (N), 'X');
+ Set_Statement_Entry;
- when N_Case_Statement =>
- Extend_Statement_Sequence (N, Expression (N), 'C');
- Process_Decisions_Defer (Expression (N), 'X');
- Set_Statement_Entry;
+ -- Process case branches, all of which are dominated by the
+ -- CASE statement.
- -- Process case branches, all of which are dominated by the
- -- CASE statement.
+ declare
+ Alt : Node_Id;
+ begin
+ Alt := First (Alternatives (N));
+ while Present (Alt) loop
+ Traverse_Declarations_Or_Statements
+ (L => Statements (Alt),
+ D => Current_Dominant);
+ Next (Alt);
+ end loop;
+ end;
- declare
- Alt : Node_Id;
- begin
- Alt := First (Alternatives (N));
- while Present (Alt) loop
- Traverse_Declarations_Or_Statements
- (L => Statements (Alt),
- D => Current_Dominant);
- Next (Alt);
- end loop;
- end;
+ -- ACCEPT statement
- -- Unconditional exit points, which are included in the current
- -- statement sequence, but then terminate it
+ when N_Accept_Statement =>
+ Extend_Statement_Sequence (N, 'A');
+ Set_Statement_Entry;
- when N_Requeue_Statement |
- N_Goto_Statement |
- N_Raise_Statement =>
- Extend_Statement_Sequence (N, ' ');
- Set_Statement_Entry;
- Current_Dominant := No_Dominant;
+ -- Process sequence of statements, dominant is the ACCEPT
+ -- statement.
- -- Simple return statement. which is an exit point, but we
- -- have to process the return expression for decisions.
+ Traverse_Handled_Statement_Sequence
+ (N => Handled_Statement_Sequence (N),
+ D => Current_Dominant);
- when N_Simple_Return_Statement =>
- Extend_Statement_Sequence (N, ' ');
- Process_Decisions_Defer (Expression (N), 'X');
- Set_Statement_Entry;
- Current_Dominant := No_Dominant;
+ -- SELECT
- -- Extended return statement
+ when N_Selective_Accept =>
+ Extend_Statement_Sequence (N, 'S');
+ Set_Statement_Entry;
- when N_Extended_Return_Statement =>
- Extend_Statement_Sequence
- (N, Last (Return_Object_Declarations (N)), 'R');
- Process_Decisions_Defer
- (Return_Object_Declarations (N), 'X');
- Set_Statement_Entry;
+ -- Process alternatives
- Traverse_Handled_Statement_Sequence
- (N => Handled_Statement_Sequence (N),
- D => Current_Dominant);
+ declare
+ Alt : Node_Id;
+ Guard : Node_Id;
+ S_Dom : Dominant_Info;
- Current_Dominant := No_Dominant;
+ begin
+ Alt := First (Select_Alternatives (N));
+ while Present (Alt) loop
+ S_Dom := Current_Dominant;
+ Guard := Condition (Alt);
+
+ if Present (Guard) then
+ Process_Decisions
+ (Guard,
+ 'G',
+ Pragma_Sloc => No_Location);
+ Current_Dominant := ('T', Guard);
+ end if;
- -- Loop ends the current statement sequence, but we include
- -- the iteration scheme if present in the current sequence.
- -- But the body of the loop starts a new sequence, since it
- -- may not be executed as part of the current sequence.
+ Traverse_One (Alt);
- when N_Loop_Statement =>
- declare
- ISC : constant Node_Id := Iteration_Scheme (N);
- Inner_Dominant : Dominant_Info := No_Dominant;
+ Current_Dominant := S_Dom;
+ Next (Alt);
+ end loop;
+ end;
- begin
- if Present (ISC) then
+ Traverse_Declarations_Or_Statements
+ (L => Else_Statements (N),
+ D => Current_Dominant);
- -- If iteration scheme present, extend the current
- -- statement sequence to include the iteration scheme
- -- and process any decisions it contains.
+ when N_Timed_Entry_Call | N_Conditional_Entry_Call =>
+ Extend_Statement_Sequence (N, 'S');
+ Set_Statement_Entry;
- -- While loop
+ -- Process alternatives
- if Present (Condition (ISC)) then
- Extend_Statement_Sequence (N, ISC, 'W');
- Process_Decisions_Defer (Condition (ISC), 'W');
+ Traverse_One (Entry_Call_Alternative (N));
- -- Set more specific dominant for inner statements
- -- (the control sloc for the decision is that of
- -- the WHILE token).
+ if Nkind (N) = N_Timed_Entry_Call then
+ Traverse_One (Delay_Alternative (N));
+ else
+ Traverse_Declarations_Or_Statements
+ (L => Else_Statements (N),
+ D => Current_Dominant);
+ end if;
- Inner_Dominant := ('T', ISC);
+ when N_Asynchronous_Select =>
+ Extend_Statement_Sequence (N, 'S');
+ Set_Statement_Entry;
- -- For loop
+ Traverse_One (Triggering_Alternative (N));
+ Traverse_Declarations_Or_Statements
+ (L => Statements (Abortable_Part (N)),
+ D => Current_Dominant);
- else
- Extend_Statement_Sequence (N, ISC, 'F');
- Process_Decisions_Defer
- (Loop_Parameter_Specification (ISC), 'X');
- end if;
- end if;
+ when N_Accept_Alternative =>
+ Traverse_Declarations_Or_Statements
+ (L => Statements (N),
+ D => Current_Dominant,
+ P => Accept_Statement (N));
- Set_Statement_Entry;
+ when N_Entry_Call_Alternative =>
+ Traverse_Declarations_Or_Statements
+ (L => Statements (N),
+ D => Current_Dominant,
+ P => Entry_Call_Statement (N));
- if Inner_Dominant = No_Dominant then
- Inner_Dominant := Current_Dominant;
- end if;
+ when N_Delay_Alternative =>
+ Traverse_Declarations_Or_Statements
+ (L => Statements (N),
+ D => Current_Dominant,
+ P => Delay_Statement (N));
- Traverse_Declarations_Or_Statements
- (L => Statements (N),
- D => Inner_Dominant);
- end;
+ when N_Triggering_Alternative =>
+ Traverse_Declarations_Or_Statements
+ (L => Statements (N),
+ D => Current_Dominant,
+ P => Triggering_Statement (N));
- -- Pragma
+ when N_Terminate_Alternative =>
- when N_Pragma =>
+ -- It is dubious to emit a statement SCO for a TERMINATE
+ -- alternative, since no code is actually executed if the
+ -- alternative is selected -- the tasking runtime call just
+ -- never returns???
- -- Record sloc of pragma (pragmas don't nest)
+ Extend_Statement_Sequence (N, ' ');
+ Set_Statement_Entry;
- pragma Assert (Current_Pragma_Sloc = No_Location);
- Current_Pragma_Sloc := Sloc (N);
+ -- Unconditional exit points, which are included in the current
+ -- statement sequence, but then terminate it
- -- Processing depends on the kind of pragma
+ when N_Requeue_Statement |
+ N_Goto_Statement |
+ N_Raise_Statement =>
+ Extend_Statement_Sequence (N, ' ');
+ Set_Statement_Entry;
+ Current_Dominant := No_Dominant;
- declare
- Nam : constant Name_Id := Pragma_Name (N);
- Arg : Node_Id := First (Pragma_Argument_Associations (N));
- Typ : Character;
+ -- Simple return statement. which is an exit point, but we
+ -- have to process the return expression for decisions.
- begin
- case Nam is
- when Name_Assert |
- Name_Check |
- Name_Precondition |
- Name_Postcondition =>
-
- -- For Assert/Check/Precondition/Postcondition, we
- -- must generate a P entry for the decision. Note
- -- that this is done unconditionally at this stage.
- -- Output for disabled pragmas is suppressed later
- -- on when we output the decision line in Put_SCOs,
- -- depending on setting by Set_SCO_Pragma_Enabled.
-
- if Nam = Name_Check then
- Next (Arg);
- end if;
+ when N_Simple_Return_Statement =>
+ Extend_Statement_Sequence (N, ' ');
+ Process_Decisions_Defer (Expression (N), 'X');
+ Set_Statement_Entry;
+ Current_Dominant := No_Dominant;
- Process_Decisions_Defer (Expression (Arg), 'P');
- Typ := 'p';
+ -- Extended return statement
- when Name_Debug =>
- if Present (Arg) and then Present (Next (Arg)) then
+ when N_Extended_Return_Statement =>
+ Extend_Statement_Sequence (N, 'R');
+ Process_Decisions_Defer
+ (Return_Object_Declarations (N), 'X');
+ Set_Statement_Entry;
- -- Case of a dyadic pragma Debug: first argument
- -- is a P decision, any nested decision in the
- -- second argument is an X decision.
+ Traverse_Handled_Statement_Sequence
+ (N => Handled_Statement_Sequence (N),
+ D => Current_Dominant);
- Process_Decisions_Defer (Expression (Arg), 'P');
- Next (Arg);
- end if;
+ Current_Dominant := No_Dominant;
- Process_Decisions_Defer (Expression (Arg), 'X');
- Typ := 'p';
+ -- Loop ends the current statement sequence, but we include
+ -- the iteration scheme if present in the current sequence.
+ -- But the body of the loop starts a new sequence, since it
+ -- may not be executed as part of the current sequence.
- -- For all other pragmas, we generate decision entries
- -- for any embedded expressions, and the pragma is
- -- never disabled.
+ when N_Loop_Statement =>
+ declare
+ ISC : constant Node_Id := Iteration_Scheme (N);
+ Inner_Dominant : Dominant_Info := No_Dominant;
- when others =>
- Process_Decisions_Defer (N, 'X');
- Typ := 'P';
- end case;
+ begin
+ if Present (ISC) then
- -- Add statement SCO
+ -- If iteration scheme present, extend the current
+ -- statement sequence to include the iteration scheme
+ -- and process any decisions it contains.
- Extend_Statement_Sequence (N, Typ);
+ -- While loop
- Current_Pragma_Sloc := No_Location;
- end;
+ if Present (Condition (ISC)) then
+ Extend_Statement_Sequence (N, 'W');
+ Process_Decisions_Defer (Condition (ISC), 'W');
- -- Object declaration. Ignored if Prev_Ids is set, since the
- -- parser generates multiple instances of the whole declaration
- -- if there is more than one identifier declared, and we only
- -- want one entry in the SCO's, so we take the first, for which
- -- Prev_Ids is False.
+ -- Set more specific dominant for inner statements
+ -- (the control sloc for the decision is that of
+ -- the WHILE token).
- when N_Object_Declaration =>
- if not Prev_Ids (N) then
- Extend_Statement_Sequence (N, 'o');
+ Inner_Dominant := ('T', ISC);
- if Has_Decision (N) then
- Process_Decisions_Defer (N, 'X');
+ -- For loop
+
+ else
+ Extend_Statement_Sequence (N, 'F');
+ Process_Decisions_Defer
+ (Loop_Parameter_Specification (ISC), 'X');
end if;
end if;
- -- All other cases, which extend the current statement sequence
- -- but do not terminate it, even if they have nested decisions.
+ Set_Statement_Entry;
- when others =>
+ if Inner_Dominant = No_Dominant then
+ Inner_Dominant := Current_Dominant;
+ end if;
- -- Determine required type character code, or ASCII.NUL if
- -- no SCO should be generated for this node.
+ Traverse_Declarations_Or_Statements
+ (L => Statements (N),
+ D => Inner_Dominant);
+ end;
- declare
- Typ : Character;
+ -- Pragma
- begin
- case Nkind (N) is
- when N_Full_Type_Declaration |
- N_Incomplete_Type_Declaration |
- N_Private_Type_Declaration |
- N_Private_Extension_Declaration =>
- Typ := 't';
+ when N_Pragma =>
- when N_Subtype_Declaration =>
- Typ := 's';
+ -- Record sloc of pragma (pragmas don't nest)
- when N_Renaming_Declaration =>
- Typ := 'r';
+ pragma Assert (Current_Pragma_Sloc = No_Location);
+ Current_Pragma_Sloc := Sloc (N);
- when N_Generic_Instantiation =>
- Typ := 'i';
+ -- Processing depends on the kind of pragma
- when N_Representation_Clause |
- N_Use_Package_Clause |
- N_Use_Type_Clause =>
- Typ := ASCII.NUL;
+ declare
+ Nam : constant Name_Id := Pragma_Name (N);
+ Arg : Node_Id :=
+ First (Pragma_Argument_Associations (N));
+ Typ : Character;
- when others =>
- Typ := ' ';
- end case;
+ begin
+ case Nam is
+ when Name_Assert |
+ Name_Check |
+ Name_Precondition |
+ Name_Postcondition =>
+
+ -- For Assert/Check/Precondition/Postcondition, we
+ -- must generate a P entry for the decision. Note
+ -- that this is done unconditionally at this stage.
+ -- Output for disabled pragmas is suppressed later
+ -- on when we output the decision line in Put_SCOs,
+ -- depending on setting by Set_SCO_Pragma_Enabled.
+
+ if Nam = Name_Check then
+ Next (Arg);
+ end if;
- if Typ /= ASCII.NUL then
- Extend_Statement_Sequence (N, Typ);
- end if;
- end;
+ Process_Decisions_Defer (Expression (Arg), 'P');
+ Typ := 'p';
- -- Process any embedded decisions
+ when Name_Debug =>
+ if Present (Arg) and then Present (Next (Arg)) then
+
+ -- Case of a dyadic pragma Debug: first argument
+ -- is a P decision, any nested decision in the
+ -- second argument is an X decision.
+
+ Process_Decisions_Defer (Expression (Arg), 'P');
+ Next (Arg);
+ end if;
+
+ Process_Decisions_Defer (Expression (Arg), 'X');
+ Typ := 'p';
+
+ -- For all other pragmas, we generate decision entries
+ -- for any embedded expressions, and the pragma is
+ -- never disabled.
+
+ when others =>
+ Process_Decisions_Defer (N, 'X');
+ Typ := 'P';
+ end case;
+
+ -- Add statement SCO
+
+ Extend_Statement_Sequence (N, Typ);
+
+ Current_Pragma_Sloc := No_Location;
+ end;
+
+ -- Object declaration. Ignored if Prev_Ids is set, since the
+ -- parser generates multiple instances of the whole declaration
+ -- if there is more than one identifier declared, and we only
+ -- want one entry in the SCO's, so we take the first, for which
+ -- Prev_Ids is False.
+
+ when N_Object_Declaration =>
+ if not Prev_Ids (N) then
+ Extend_Statement_Sequence (N, 'o');
if Has_Decision (N) then
Process_Decisions_Defer (N, 'X');
end if;
- end case;
+ end if;
+
+ -- All other cases, which extend the current statement sequence
+ -- but do not terminate it, even if they have nested decisions.
+
+ when others =>
+
+ -- Determine required type character code, or ASCII.NUL if
+ -- no SCO should be generated for this node.
+
+ declare
+ Typ : Character;
+
+ begin
+ case Nkind (N) is
+ when N_Full_Type_Declaration |
+ N_Incomplete_Type_Declaration |
+ N_Private_Type_Declaration |
+ N_Private_Extension_Declaration =>
+ Typ := 't';
+
+ when N_Subtype_Declaration =>
+ Typ := 's';
+
+ when N_Renaming_Declaration =>
+ Typ := 'r';
+
+ when N_Generic_Instantiation =>
+ Typ := 'i';
+
+ when N_Representation_Clause |
+ N_Use_Package_Clause |
+ N_Use_Type_Clause =>
+ Typ := ASCII.NUL;
+
+ when others =>
+ Typ := ' ';
+ end case;
+
+ if Typ /= ASCII.NUL then
+ Extend_Statement_Sequence (N, Typ);
+ end if;
+ end;
+
+ -- Process any embedded decisions
+
+ if Has_Decision (N) then
+ Process_Decisions_Defer (N, 'X');
+ end if;
+ end case;
+
+ end Traverse_One;
+ -- Start of processing for Traverse_Declarations_Or_Statements
+
+ begin
+ if Present (P) then
+ Traverse_One (P);
+ end if;
+
+ if Is_Non_Empty_List (L) then
+
+ -- Loop through statements or declarations
+
+ N := First (L);
+ while Present (N) loop
+ Traverse_One (N);
Next (N);
end loop;
diff --git a/gcc/ada/par_sco.ads b/gcc/ada/par_sco.ads
index 450d76938cb..a57f5c5b982 100644
--- a/gcc/ada/par_sco.ads
+++ b/gcc/ada/par_sco.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2009-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -24,7 +24,7 @@
------------------------------------------------------------------------------
-- This package contains the routines used to deal with generation and output
--- of Soure Coverage Obligations (SCO's) used for coverage analysis purposes.
+-- of Source Coverage Obligations (SCO's) used for coverage analysis purposes.
-- See package SCOs for full documentation of format of SCO information.
with Types; use Types;
diff --git a/gcc/ada/prj-attr.adb b/gcc/ada/prj-attr.adb
index 0321533fc18..f2af8379100 100644
--- a/gcc/ada/prj-attr.adb
+++ b/gcc/ada/prj-attr.adb
@@ -851,7 +851,7 @@ package body Prj.Attr is
for Index in Package_Attributes.First .. Package_Attributes.Last loop
if Package_Attributes.Table (Index).Name = Pkg_Name then
- Fail ("cannot register a package with a non unique name"""
+ Fail ("cannot register a package with a non unique name """
& Name
& """");
Id := Empty_Package;
@@ -889,7 +889,7 @@ package body Prj.Attr is
for Index in Package_Attributes.First .. Package_Attributes.Last loop
if Package_Attributes.Table (Index).Name = Pkg_Name then
- Fail ("cannot register a package with a non unique name"""
+ Fail ("cannot register a package with a non unique name """
& Name
& """");
raise Project_Error;
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index cd62bc9bf44..77d1cfd1cde 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -165,6 +165,7 @@ package body Prj.Nmsc is
type Lib_Data is record
Name : Name_Id;
Proj : Project_Id;
+ Tree : Project_Tree_Ref;
end record;
package Lib_Data_Table is new GNAT.Table
@@ -3639,7 +3640,9 @@ package body Prj.Nmsc is
-- Check if the same library name is used in an other library project
for J in 1 .. Lib_Data_Table.Last loop
- if Lib_Data_Table.Table (J).Name = Project.Library_Name then
+ if Lib_Data_Table.Table (J).Name = Project.Library_Name
+ and then Lib_Data_Table.Table (J).Tree = Data.Tree
+ then
Error_Msg_Name_1 := Lib_Data_Table.Table (J).Proj.Name;
Error_Msg
(Data.Flags,
@@ -3656,7 +3659,9 @@ package body Prj.Nmsc is
-- Record the library name
Lib_Data_Table.Append
- ((Name => Project.Library_Name, Proj => Project));
+ ((Name => Project.Library_Name,
+ Proj => Project,
+ Tree => Data.Tree));
end if;
end Check_Library_Attributes;
@@ -4204,22 +4209,25 @@ package body Prj.Nmsc is
Lang_Id := Lang_Id.Next;
end loop;
- -- Get the naming exceptions for all languages
+ -- Get the naming exceptions for all languages, but not for virtual
+ -- projects.
- for Kind in Spec_Or_Body loop
- Lang_Id := Project.Languages;
- while Lang_Id /= No_Language_Index loop
- case Lang_Id.Config.Kind is
+ if not Project.Virtual then
+ for Kind in Spec_Or_Body loop
+ Lang_Id := Project.Languages;
+ while Lang_Id /= No_Language_Index loop
+ case Lang_Id.Config.Kind is
when File_Based =>
Process_Exceptions_File_Based (Lang_Id, Kind);
when Unit_Based =>
Process_Exceptions_Unit_Based (Lang_Id, Kind);
- end case;
+ end case;
- Lang_Id := Lang_Id.Next;
+ Lang_Id := Lang_Id.Next;
+ end loop;
end loop;
- end loop;
+ end if;
end Check_Naming;
----------------------------
diff --git a/gcc/ada/prj-util.adb b/gcc/ada/prj-util.adb
index 9454f9ff418..1ad1aff58a7 100644
--- a/gcc/ada/prj-util.adb
+++ b/gcc/ada/prj-util.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -23,11 +23,14 @@
-- --
------------------------------------------------------------------------------
+with Ada.Containers.Indefinite_Ordered_Sets;
+with Ada.Directories;
with Ada.Unchecked_Deallocation;
with GNAT.Case_Util; use GNAT.Case_Util;
with GNAT.Regexp; use GNAT.Regexp;
+with ALI; use ALI;
with Osint; use Osint;
with Output; use Output;
with Opt;
@@ -390,6 +393,149 @@ package body Prj.Util is
return Add_Suffix (Name_Find);
end Executable_Of;
+ ---------------------------
+ -- For_Interface_Sources --
+ ---------------------------
+
+ procedure For_Interface_Sources
+ (Tree : Project_Tree_Ref;
+ Project : Project_Id)
+ is
+ use Ada;
+ use type Ada.Containers.Count_Type;
+
+ package Dep_Names is new Containers.Indefinite_Ordered_Sets (String);
+
+ function Load_ALI (Filename : String) return ALI_Id;
+ -- Load an ALI file and return its id
+
+ --------------
+ -- Load_ALI --
+ --------------
+
+ function Load_ALI (Filename : String) return ALI_Id is
+ Result : ALI_Id := No_ALI_Id;
+ Text : Text_Buffer_Ptr;
+ Lib_File : File_Name_Type;
+
+ begin
+ if Directories.Exists (Filename) then
+ Name_Len := 0;
+ Add_Str_To_Name_Buffer (Filename);
+ Lib_File := Name_Find;
+ Text := Osint.Read_Library_Info (Lib_File);
+ Result :=
+ ALI.Scan_ALI
+ (Lib_File,
+ Text,
+ Ignore_ED => False,
+ Err => True,
+ Read_Lines => "UD");
+ Free (Text);
+ end if;
+
+ return Result;
+ end Load_ALI;
+
+ -- Local declarations
+
+ Iter : Source_Iterator := For_Each_Source (Tree, Project);
+ Sid : Source_Id;
+ ALI : ALI_Id;
+
+ First_Unit : Unit_Id;
+ Second_Unit : Unit_Id;
+ Body_Needed : Boolean;
+ Deps : Dep_Names.Set;
+
+ -- Start of processing for For_Interface_Sources
+
+ begin
+ -- First look at each spec, check if the body is needed
+
+ loop
+ Sid := Element (Iter);
+ exit when Sid = No_Source;
+
+ -- Skip sources that are removed/excluded and sources not part of
+ -- the interface for standalone libraries.
+
+ if Sid.Kind = Spec
+ and then not Sid.Locally_Removed
+ and then (Project.Standalone_Library = No
+ or else Sid.Declared_In_Interfaces)
+ then
+ Action (Sid);
+
+ -- Check ALI for dependencies on body and sep
+
+ ALI :=
+ Load_ALI
+ (Get_Name_String (Get_Object_Directory (Sid.Project, True))
+ & Get_Name_String (Sid.Dep_Name));
+
+ if ALI /= No_ALI_Id then
+ First_Unit := ALIs.Table (ALI).First_Unit;
+ Second_Unit := No_Unit_Id;
+ Body_Needed := True;
+
+ -- If there is both a spec and a body, check if both needed
+
+ if Units.Table (First_Unit).Utype = Is_Body then
+ Second_Unit := ALIs.Table (ALI).Last_Unit;
+
+ -- If the body is not needed, then reset First_Unit
+
+ if not Units.Table (Second_Unit).Body_Needed_For_SAL then
+ Body_Needed := False;
+ end if;
+
+ elsif Units.Table (First_Unit).Utype = Is_Spec_Only then
+ Body_Needed := False;
+ end if;
+
+ -- Handle all the separates, if any
+
+ if Body_Needed then
+ if Other_Part (Sid) /= null then
+ Deps.Include (Get_Name_String (Other_Part (Sid).File));
+ end if;
+
+ for Dep in ALIs.Table (ALI).First_Sdep ..
+ ALIs.Table (ALI).Last_Sdep
+ loop
+ if Sdep.Table (Dep).Subunit_Name /= No_Name then
+ Deps.Include
+ (Get_Name_String (Sdep.Table (Dep).Sfile));
+ end if;
+ end loop;
+ end if;
+ end if;
+ end if;
+
+ Next (Iter);
+ end loop;
+
+ -- Now handle the bodies and separates if needed
+
+ if Deps.Length /= 0 then
+ Iter := For_Each_Source (Tree, Project);
+
+ loop
+ Sid := Element (Iter);
+ exit when Sid = No_Source;
+
+ if Sid.Kind /= Spec
+ and then Deps.Contains (Get_Name_String (Sid.File))
+ then
+ Action (Sid);
+ end if;
+
+ Next (Iter);
+ end loop;
+ end if;
+ end For_Interface_Sources;
+
--------------
-- Get_Line --
--------------
diff --git a/gcc/ada/prj-util.ads b/gcc/ada/prj-util.ads
index 89a6491618f..892db282a57 100644
--- a/gcc/ada/prj-util.ads
+++ b/gcc/ada/prj-util.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -60,8 +60,8 @@ package Prj.Util is
-- Describe parameters???
procedure Duplicate
- (This : in out Name_List_Index;
- Shared : Shared_Project_Tree_Data_Access);
+ (This : in out Name_List_Index;
+ Shared : Shared_Project_Tree_Data_Access);
-- Duplicate a name list
function Value_Of
@@ -203,14 +203,14 @@ package Prj.Util is
-- the flag Source_Info_File_Exists to True for the tree.
type Source_Info_Data is record
- Project : Name_Id;
- Language : Name_Id;
- Kind : Source_Kind;
- Display_Path_Name : Name_Id;
- Path_Name : Name_Id;
- Unit_Name : Name_Id := No_Name;
- Index : Int := 0;
- Naming_Exception : Naming_Exception_Type := No;
+ Project : Name_Id;
+ Language : Name_Id;
+ Kind : Source_Kind;
+ Display_Path_Name : Name_Id;
+ Path_Name : Name_Id;
+ Unit_Name : Name_Id := No_Name;
+ Index : Int := 0;
+ Naming_Exception : Naming_Exception_Type := No;
end record;
-- Data read from a source info file for a single source
@@ -233,6 +233,18 @@ package Prj.Util is
procedure Next (Iter : in out Source_Info_Iterator);
-- Advance the iterator to the next source in the project
+ generic
+ with procedure Action (Source : Source_Id);
+ procedure For_Interface_Sources
+ (Tree : Project_Tree_Ref;
+ Project : Project_Id);
+ -- Call Action for every sources that are needed to use Project. This is
+ -- either the sources corresponding to the units in attribute Interfaces
+ -- or all sources of the project. Note that only the bodies that are
+ -- needed (because the unit is generic or contains some inline pragmas)
+ -- are handled. This routine must be called only when the project has
+ -- been built successfully.
+
private
type Text_File_Data is record
FD : File_Descriptor := Invalid_FD;
diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb
index 9a5e2607aa1..150d524d30f 100644
--- a/gcc/ada/prj.adb
+++ b/gcc/ada/prj.adb
@@ -584,8 +584,63 @@ package body Prj is
In_Aggregate_Lib : Boolean;
From_Encapsulated_Lib : Boolean)
is
+
+ function Has_Sources (P : Project_Id) return Boolean;
+ -- Returns True if P has sources
+
+ function Get_From_Tree (P : Project_Id) return Project_Id;
+ -- Get project P from Tree. If P has no sources get another
+ -- instance of this project with sources. If P has sources,
+ -- returns it.
+
+ -----------------
+ -- Has_Sources --
+ -----------------
+
+ function Has_Sources (P : Project_Id) return Boolean is
+ Lang : Language_Ptr;
+
+ begin
+ Lang := P.Languages;
+ while Lang /= No_Language_Index loop
+ if Lang.First_Source /= No_Source then
+ return True;
+ end if;
+
+ Lang := Lang.Next;
+ end loop;
+
+ return False;
+ end Has_Sources;
+
+ -------------------
+ -- Get_From_Tree --
+ -------------------
+
+ function Get_From_Tree (P : Project_Id) return Project_Id is
+ List : Project_List := Tree.Projects;
+
+ begin
+ if not Has_Sources (P) then
+ while List /= null loop
+ if List.Project.Name = P.Name
+ and then Has_Sources (List.Project)
+ then
+ return List.Project;
+ end if;
+
+ List := List.Next;
+ end loop;
+ end if;
+
+ return P;
+ end Get_From_Tree;
+
+ -- Local variables
+
List : Project_List;
- T : Project_Tree_Ref;
+
+ -- Start of processing for Recursive_Check
begin
if not Seen_Name.Contains (Project.Name) then
@@ -597,7 +652,7 @@ package body Prj is
if not Imported_First then
Action
- (Project,
+ (Get_From_Tree (Project),
Tree,
Project_Context'(In_Aggregate_Lib, From_Encapsulated_Lib),
With_State);
@@ -640,23 +695,20 @@ package body Prj is
-- of the aggregate library.
if Project.Qualifier = Aggregate_Library then
- T := Tree;
Recursive_Check
- (Agg.Project, T,
+ (Agg.Project, Tree,
True,
From_Encapsulated_Lib
or else
Project.Standalone_Library = Encapsulated);
else
- T := Agg.Tree;
-
-- Use a new context as we want to returns the same
-- project in different project tree for aggregated
-- projects.
Recursive_Check_Context
- (Agg.Project, T, False, False);
+ (Agg.Project, Agg.Tree, False, False);
end if;
Agg := Agg.Next;
@@ -666,7 +718,7 @@ package body Prj is
if Imported_First then
Action
- (Project,
+ (Get_From_Tree (Project),
Tree,
Project_Context'(In_Aggregate_Lib, From_Encapsulated_Lib),
With_State);
diff --git a/gcc/ada/projects.texi b/gcc/ada/projects.texi
index 1c0c593ac15..2fff4eb1fab 100644
--- a/gcc/ada/projects.texi
+++ b/gcc/ada/projects.texi
@@ -342,8 +342,8 @@ locating the specified source files in the specified source directories.
is explicitly specified.
@xref{Naming Schemes}.
-@item @code{Source Files}
- @cindex @code{Source_Files}
+@item @code{Source_Files}
+@cindex @code{Source_Files}
In some cases, source directories might contain files that should not be
included in a project. One can specify the explicit list of file names to
be considered through the @b{Source_Files} attribute.
diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c
index 74983ae093e..4da4bd286e5 100644
--- a/gcc/ada/raise-gcc.c
+++ b/gcc/ada/raise-gcc.c
@@ -32,7 +32,10 @@
/* Code related to the integration of the GCC mechanism for exception
handling. */
-#ifdef IN_RTS
+#ifndef IN_RTS
+#error "RTS unit only"
+#endif
+
#include "tconfig.h"
#include "tsystem.h"
#include <sys/stat.h>
@@ -40,10 +43,6 @@
typedef char bool;
# define true 1
# define false 0
-#else
-#include "config.h"
-#include "system.h"
-#endif
#include "adaint.h"
#include "raise.h"
@@ -56,49 +55,33 @@ typedef char bool;
#endif
#endif
+#if defined (__hpux__) && defined (USE_LIBUNWIND_EXCEPTIONS)
+/* HP-UX B.11.31 ia64 libunwind doesn't have _Unwind_GetIPInfo. */
+#undef HAVE_GETIPINFO
+#define _UA_END_OF_STACK 0
+#endif
+
/* The names of a couple of "standard" routines for unwinding/propagation
actually vary depending on the underlying GCC scheme for exception handling
(SJLJ or DWARF). We need a consistently named interface to import from
- a-except, so wrappers are defined here.
-
- Besides, even though the compiler is never setup to use the GCC propagation
- circuitry, it still relies on exceptions internally and part of the sources
- to handle to exceptions are shared with the run-time library. We need
- dummy definitions for the wrappers to satisfy the linker in this case.
-
- The types to be used by those wrappers in the run-time library are target
- types exported by unwind.h. We used to piggyback on them for the compiler
- stubs, but there is no guarantee that unwind.h is always in sight so we
- define our own set below. These are dummy types as the wrappers are never
- called in the compiler case. */
-
-#ifdef IN_RTS
+ a-except, so wrappers are defined here. */
#include "unwind.h"
typedef struct _Unwind_Context _Unwind_Context;
typedef struct _Unwind_Exception _Unwind_Exception;
-#else
-
-typedef void _Unwind_Context;
-typedef void _Unwind_Exception;
-typedef int _Unwind_Reason_Code;
-
-#endif
-
_Unwind_Reason_Code
__gnat_Unwind_RaiseException (_Unwind_Exception *);
_Unwind_Reason_Code
__gnat_Unwind_ForcedUnwind (_Unwind_Exception *, void *, void *);
-extern void __gnat_setup_current_excep (_Unwind_Exception *);
-
-#ifdef IN_RTS /* For eh personality routine */
+extern struct Exception_Occurrence *__gnat_setup_current_excep
+ (_Unwind_Exception *);
+extern void __gnat_unhandled_except_handler (_Unwind_Exception *);
#include "dwarf2.h"
-#include "unwind-dw2-fde.h"
#include "unwind-pe.h"
/* The known and handled exception classes. */
@@ -164,31 +147,19 @@ db_indent (int requests)
static int current_indentation_level = 0;
if (requests & DB_INDENT_RESET)
- {
- current_indentation_level = 0;
- }
+ current_indentation_level = 0;
if (requests & DB_INDENT_INCREASE)
- {
- current_indentation_level ++;
- }
+ current_indentation_level ++;
if (requests & DB_INDENT_DECREASE)
- {
- current_indentation_level --;
- }
+ current_indentation_level --;
if (requests & DB_INDENT_NEWLINE)
- {
- fprintf (stderr, "\n");
- }
+ fprintf (stderr, "\n");
if (requests & DB_INDENT_OUTPUT)
- {
- fprintf (stderr, "%*s",
- current_indentation_level * DB_INDENT_UNIT, " ");
- }
-
+ fprintf (stderr, "%*s", current_indentation_level * DB_INDENT_UNIT, " ");
}
static void ATTRIBUTE_PRINTF_2
@@ -236,6 +207,10 @@ db_phases (int phases)
* Tables for the dwarf zero cost case *
=======================================
+ They are fully documented in:
+ http://sourcery.mentor.com/public/cxx-abi/exceptions.pdf
+ Here is a shorter presentation, with some specific comments for Ada.
+
call_site []
-------------------------------------------------------------------
* region-start | region-length | landing-pad | first-action-index *
@@ -264,7 +239,8 @@ db_phases (int phases)
This table contains lists (called action chains) of possible actions
associated with call-site entries described in the call-site [] table.
- There is at most one action list per call-site entry.
+ There is at most one action list per call-site entry. It is SLEB128
+ encoded.
A null action-filter indicates a cleanup.
@@ -272,28 +248,37 @@ db_phases (int phases)
(see below), from which information may be retrieved to check if it
matches the exception being propagated.
- action-filter > 0 means there is a regular handler to be run,
-
- action-filter < 0 means there is a some "exception_specification"
- data to retrieve, which is only relevant for C++
- and should never show up for Ada.
-
- next-action indexes the next entry in the list. 0 indicates there is
- no other entry.
+ * action-filter > 0:
+ means there is a regular handler to be run The value is also passed
+ to the landing pad to dispatch the exception.
+
+ * action-filter < 0:
+ means there is a some "exception_specification" data to retrieve,
+ which is only relevant for C++ and should never show up for Ada.
+ (Exception specification specifies which exceptions can be thrown
+ by a function. Such filter is emitted around the body of C++
+ functions defined like:
+ void foo ([...]) throw (A, B) { [...] }
+ These can be viewed as negativ filter: the landing pad is branched
+ to for exceptions that doesn't match the filter and usually aborts
+ the program).
+
+ * next-action
+ points to the next entry in the list using a relative byte offset. 0
+ indicates there is no other entry.
ttypes []
---------------
* ttype-value *
---------------
- A null value indicates a catch-all handler in C++, and an "others"
- handler in Ada.
+ This table is an array of addresses.
+
+ A null value indicates a catch-all handler. (Not used by Ada)
Non null values are used to match the exception being propagated:
In C++ this is a pointer to some rtti data, while in Ada this is an
- exception id.
-
- The special id value 1 indicates an "all_others" handler.
+ exception id (with a fake id for others).
For C++, this table is actually also used to store "exception
specification" data. The differentiation between the two kinds
@@ -339,9 +324,9 @@ db_phases (int phases)
+=====================+ | the actual base.
| ttype-value | |
+============+=====================+ |
- | | 0 => "others" | |
- | ... | 1 => "all others" | <---+
- | | X => exception id |
+ | | ... | |
+ | ... | exception id | <---+
+ | | ... |
| handlers +---------------------+
| | ... |
| ... | ... |
@@ -441,7 +426,7 @@ db_phases (int phases)
|
+--> get_region_description_for (context)
|
- +--> get_action_description_for (context, exception, region)
+ +--> get_action_description_for (ip, exception, region)
| |
| +--> get_call_site_action_for (context, region)
| (one version for each underlying scheme)
@@ -475,6 +460,9 @@ extern const int __gnat_others_value;
extern const int __gnat_all_others_value;
#define GNAT_ALL_OTHERS ((_Unwind_Ptr) &__gnat_all_others_value)
+extern const int __gnat_unhandled_others_value;
+#define GNAT_UNHANDLED_OTHERS ((_Unwind_Ptr) &__gnat_unhandled_others_value)
+
/* Describe the useful region data associated with an unwind context. */
typedef struct
@@ -526,15 +514,11 @@ get_ip_from_context (_Unwind_Context *uw_context)
}
static void
-db_region_for (region_descriptor *region, _Unwind_Context *uw_context)
+db_region_for (region_descriptor *region, _Unwind_Ptr ip)
{
- _Unwind_Ptr ip;
-
if (! (db_accepted_codes () & DB_REGIONS))
return;
- ip = get_ip_from_context (uw_context);
-
db (DB_REGIONS, "For ip @ %p => ", (void *)ip);
if (region->lsda)
@@ -619,7 +603,7 @@ get_region_description_for (_Unwind_Context *uw_context,
/* Describe an action to be taken when propagating an exception up to
some context. */
-typedef enum
+enum action_kind
{
/* Found some call site base data, but need to analyze further
before being able to decide. */
@@ -632,8 +616,12 @@ typedef enum
cleanup,
/* There is a handler for the exception in this context. */
- handler
-} action_kind;
+ handler,
+
+ /* There is a handler for the exception, but it is only for catching
+ unhandled exceptions. */
+ unhandler
+};
/* filter value for cleanup actions. */
static const int cleanup_filter = 0;
@@ -641,7 +629,7 @@ static const int cleanup_filter = 0;
typedef struct
{
/* The kind of action to be taken. */
- action_kind kind;
+ enum action_kind kind;
/* A pointer to the action record entry. */
const unsigned char *table_entry;
@@ -653,15 +641,12 @@ typedef struct
/* If we have a handler matching our exception, these are the filter to
trigger it and the corresponding id. */
_Unwind_Sword ttype_filter;
- _Unwind_Ptr ttype_entry;
} action_descriptor;
static void
-db_action_for (action_descriptor *action, _Unwind_Context *uw_context)
+db_action_for (action_descriptor *action, _Unwind_Ptr ip)
{
- _Unwind_Ptr ip = get_ip_from_context (uw_context);
-
db (DB_ACTIONS, "For ip @ %p => ", (void *)ip);
switch (action->kind)
@@ -704,12 +689,10 @@ db_action_for (action_descriptor *action, _Unwind_Context *uw_context)
#define __builtin_eh_return_data_regno(x) x
static void
-get_call_site_action_for (_Unwind_Context *uw_context,
+get_call_site_action_for (_Unwind_Ptr call_site,
region_descriptor *region,
action_descriptor *action)
{
- _Unwind_Ptr call_site = get_ip_from_context (uw_context);
-
/* call_site is a direct index into the call-site table, with two special
values : -1 for no-action and 0 for "terminate". The latter should never
show up for Ada. To test for the former, beware that _Unwind_Ptr might
@@ -718,17 +701,16 @@ get_call_site_action_for (_Unwind_Context *uw_context,
if ((int)call_site < 0)
{
action->kind = nothing;
- return;
}
else if (call_site == 0)
{
db (DB_ERR, "========> Err, null call_site for Ada/sjlj\n");
action->kind = nothing;
- return;
}
else
{
_uleb128_t cs_lp, cs_action;
+ const unsigned char *p;
/* Let the caller know there may be an action to take, but let it
determine the kind. */
@@ -738,13 +720,13 @@ get_call_site_action_for (_Unwind_Context *uw_context,
made of leb128 values, the encoding length of which is variable. We
can't merely compute an offset from the index, then, but have to read
all the entries before the one of interest. */
-
- const unsigned char *p = region->call_site_table;
-
- do {
- p = read_uleb128 (p, &cs_lp);
- p = read_uleb128 (p, &cs_action);
- } while (--call_site);
+ p = region->call_site_table;
+ do
+ {
+ p = read_uleb128 (p, &cs_lp);
+ p = read_uleb128 (p, &cs_action);
+ }
+ while (--call_site);
action->landing_pad = cs_lp + 1;
@@ -752,20 +734,17 @@ get_call_site_action_for (_Unwind_Context *uw_context,
action->table_entry = region->action_table + cs_action - 1;
else
action->table_entry = 0;
-
- return;
}
}
#else /* !__USING_SJLJ_EXCEPTIONS__ */
static void
-get_call_site_action_for (_Unwind_Context *uw_context,
+get_call_site_action_for (_Unwind_Ptr ip,
region_descriptor *region,
action_descriptor *action)
{
const unsigned char *p = region->call_site_table;
- _Unwind_Ptr ip = get_ip_from_context (uw_context);
/* Unless we are able to determine otherwise... */
action->kind = nothing;
@@ -837,23 +816,28 @@ extern Exception_Code Import_Code_For (_Unwind_Ptr eid);
extern Exception_Id EID_For (_GNAT_Exception * e);
-static int
+static enum action_kind
is_handled_by (_Unwind_Ptr choice, _GNAT_Exception * propagated_exception)
{
+ if (choice == GNAT_ALL_OTHERS)
+ return handler;
+
if (propagated_exception->common.exception_class == GNAT_EXCEPTION_CLASS)
{
/* Pointer to the GNAT exception data corresponding to the propagated
occurrence. */
_Unwind_Ptr E = (_Unwind_Ptr) EID_For (propagated_exception);
+ if (choice == GNAT_UNHANDLED_OTHERS)
+ return unhandler;
+
+ E = (_Unwind_Ptr) EID_For (propagated_exception);
+
/* Base matching rules: An exception data (id) matches itself, "when
all_others" matches anything and "when others" matches anything
unless explicitly stated otherwise in the propagated occurrence. */
-
- bool is_handled =
- choice == E
- || choice == GNAT_ALL_OTHERS
- || (choice == GNAT_OTHERS && Is_Handled_By_Others (E));
+ if (choice == E || (choice == GNAT_OTHERS && Is_Handled_By_Others (E)))
+ return handler;
/* In addition, on OpenVMS, Non_Ada_Error matches VMS exceptions, and we
may have different exception data pointers that should match for the
@@ -866,43 +850,44 @@ is_handled_by (_Unwind_Ptr choice, _GNAT_Exception * propagated_exception)
# define Non_Ada_Error system__aux_dec__non_ada_error
extern struct Exception_Data Non_Ada_Error;
- is_handled |=
- (Language_For (E) == 'V'
- && choice != GNAT_OTHERS && choice != GNAT_ALL_OTHERS
- && ((Language_For (choice) == 'V' && Import_Code_For (choice) != 0
- && Import_Code_For (choice) == Import_Code_For (E))
- || choice == (_Unwind_Ptr)&Non_Ada_Error));
+ if ((Language_For (E) == 'V'
+ && choice != GNAT_OTHERS
+ && ((Language_For (choice) == 'V'
+ && Import_Code_For (choice) != 0
+ && Import_Code_For (choice) == Import_Code_For (E))
+ || choice == (_Unwind_Ptr)&Non_Ada_Error)))
+ return handler;
#endif
-
- return is_handled;
}
else
{
-# define Foreign_Exception system__exceptions__foreign_exception;
+# define Foreign_Exception system__exceptions__foreign_exception
extern struct Exception_Data Foreign_Exception;
- return choice == GNAT_ALL_OTHERS
- || choice == GNAT_OTHERS
- || choice == (_Unwind_Ptr)&Foreign_Exception;
+ if (choice == GNAT_ALL_OTHERS
+ || choice == GNAT_OTHERS
+ || choice == (_Unwind_Ptr) &Foreign_Exception)
+ return handler;
}
+ return nothing;
}
/* Fill out the ACTION to be taken from propagating UW_EXCEPTION up to
UW_CONTEXT in REGION. */
static void
-get_action_description_for (_Unwind_Context *uw_context,
+get_action_description_for (_Unwind_Ptr ip,
_Unwind_Exception *uw_exception,
_Unwind_Action uw_phase,
region_descriptor *region,
action_descriptor *action)
{
- _GNAT_Exception * gnat_exception = (_GNAT_Exception *) uw_exception;
+ _GNAT_Exception *gnat_exception = (_GNAT_Exception *) uw_exception;
/* Search the call site table first, which may get us a landing pad as well
as the head of an action record list. */
- get_call_site_action_for (uw_context, region, action);
- db_action_for (action, uw_context);
+ get_call_site_action_for (ip, region, action);
+ db_action_for (action, ip);
/* If there is not even a call_site entry, we are done. */
if (action->kind == nothing)
@@ -962,15 +947,17 @@ get_action_description_for (_Unwind_Context *uw_context,
passed (to follow the ABI). */
if (!(uw_phase & _UA_FORCE_UNWIND))
{
+ enum action_kind act;
+
/* See if the filter we have is for an exception which
matches the one we are propagating. */
_Unwind_Ptr choice = get_ttype_entry_for (region, ar_filter);
- if (is_handled_by (choice, gnat_exception))
+ act = is_handled_by (choice, gnat_exception);
+ if (act != nothing)
{
- action->kind = handler;
+ action->kind = act;
action->ttype_filter = ar_filter;
- action->ttype_entry = choice;
return;
}
}
@@ -1018,7 +1005,8 @@ setup_to_install (_Unwind_Context *uw_context,
/* The following is defined from a-except.adb. Its purpose is to enable
automatic backtraces upon exception raise, as provided through the
GNAT.Traceback facilities. */
-extern void __gnat_notify_handled_exception (void);
+extern void __gnat_notify_handled_exception (struct Exception_Occurrence *);
+extern void __gnat_notify_unhandled_exception (struct Exception_Occurrence *);
/* Below is the eh personality routine per se. We currently assume that only
GNU-Ada exceptions are met. */
@@ -1085,6 +1073,7 @@ PERSONALITY_FUNCTION (version_arg_t version_arg,
_Unwind_Action uw_phases = (_Unwind_Action) phases_arg;
region_descriptor region;
action_descriptor action;
+ _Unwind_Ptr ip;
/* Check that we're called from the ABI context we expect, with a major
possible variation on VMS for IA64. */
@@ -1117,7 +1106,8 @@ PERSONALITY_FUNCTION (version_arg_t version_arg,
will tell us if there is some lsda, call_site, action and/or ttype data
for the associated ip. */
get_region_description_for (uw_context, &region);
- db_region_for (&region, uw_context);
+ ip = get_ip_from_context (uw_context);
+ db_region_for (&region, ip);
/* No LSDA => no handlers or cleanups => we shall unwind further up. */
if (! region.lsda)
@@ -1125,9 +1115,8 @@ PERSONALITY_FUNCTION (version_arg_t version_arg,
/* Search the call-site and action-record tables for the action associated
with this IP. */
- get_action_description_for (uw_context, uw_exception, uw_phases,
- &region, &action);
- db_action_for (&action, uw_context);
+ get_action_description_for (ip, uw_exception, uw_phases, &region, &action);
+ db_action_for (&action, ip);
/* Whatever the phase, if there is nothing relevant in this frame,
unwinding should just go on. */
@@ -1146,11 +1135,16 @@ PERSONALITY_FUNCTION (version_arg_t version_arg,
}
else
{
+ struct Exception_Occurrence *excep;
+
/* Trigger the appropriate notification routines before the second
phase starts, which ensures the stack is still intact.
First, setup the Ada occurrence. */
- __gnat_setup_current_excep (uw_exception);
- __gnat_notify_handled_exception ();
+ excep = __gnat_setup_current_excep (uw_exception);
+ if (action.kind == unhandler)
+ __gnat_notify_unhandled_exception (excep);
+ else
+ __gnat_notify_handled_exception (excep);
return _URC_HANDLER_FOUND;
}
@@ -1170,79 +1164,241 @@ PERSONALITY_FUNCTION (version_arg_t version_arg,
return _URC_INSTALL_CONTEXT;
}
-/* Define the consistently named wrappers imported by Propagate_Exception. */
+/* Callback routine called by Unwind_ForcedUnwind to execute all the cleanup
+ before exiting the task. */
-#ifdef __USING_SJLJ_EXCEPTIONS__
+_Unwind_Reason_Code
+__gnat_cleanupunwind_handler (int version ATTRIBUTE_UNUSED,
+ _Unwind_Action phases,
+ _Unwind_Exception_Class eclass ATTRIBUTE_UNUSED,
+ struct _Unwind_Exception *exception,
+ struct _Unwind_Context *context ATTRIBUTE_UNUSED,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ /* Terminate when the end of the stack is reached. */
+ if ((phases & _UA_END_OF_STACK) != 0
+#if defined (__ia64__) && defined (__hpux__) && defined (USE_LIBUNWIND_EXCEPTIONS)
+ /* Strictely follow the ia64 ABI: when end of stack is reached,
+ the callback will be called with a NULL stack pointer.
+ No need for that when using libgcc unwinder. */
+ || _Unwind_GetGR (context, 12) == 0
+#endif
+ )
+ __gnat_unhandled_except_handler (exception);
-#undef _Unwind_RaiseException
+ /* We know there is at least one cleanup further up. Return so that it
+ is searched and entered, after which Unwind_Resume will be called
+ and this hook will gain control again. */
+ return _URC_NO_REASON;
+}
+
+/* Define the consistently named wrappers imported by Propagate_Exception. */
_Unwind_Reason_Code
__gnat_Unwind_RaiseException (_Unwind_Exception *e)
{
+#ifdef __USING_SJLJ_EXCEPTIONS__
return _Unwind_SjLj_RaiseException (e);
+#else
+ return _Unwind_RaiseException (e);
+#endif
}
-
-#undef _Unwind_ForcedUnwind
-
_Unwind_Reason_Code
__gnat_Unwind_ForcedUnwind (_Unwind_Exception *e,
- void * handler,
- void * argument)
+ void *handler,
+ void *argument)
{
+#ifdef __USING_SJLJ_EXCEPTIONS__
return _Unwind_SjLj_ForcedUnwind (e, handler, argument);
+#else
+ return _Unwind_ForcedUnwind (e, handler, argument);
+#endif
}
+#ifdef __SEH__
-#else /* __USING_SJLJ_EXCEPTIONS__ */
+#define STATUS_USER_DEFINED (1U << 29)
+
+/* From unwind-seh.c. */
+#define GCC_MAGIC (('G' << 16) | ('C' << 8) | 'C')
+#define GCC_EXCEPTION(TYPE) \
+ (STATUS_USER_DEFINED | ((TYPE) << 24) | GCC_MAGIC)
+#define STATUS_GCC_THROW GCC_EXCEPTION (0)
+
+EXCEPTION_DISPOSITION __gnat_SEH_error_handler
+ (struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
+
+struct Exception_Data *
+__gnat_map_SEH (EXCEPTION_RECORD* ExceptionRecord, const char **msg);
+
+struct _Unwind_Exception *
+__gnat_create_machine_occurrence_from_signal_handler (Exception_Id,
+ const char *);
+
+/* Unwind opcodes. */
+#define UWOP_PUSH_NONVOL 0
+#define UWOP_ALLOC_LARGE 1
+#define UWOP_ALLOC_SMALL 2
+#define UWOP_SET_FPREG 3
+#define UWOP_SAVE_NONVOL 4
+#define UWOP_SAVE_NONVOL_FAR 5
+#define UWOP_SAVE_XMM128 8
+#define UWOP_SAVE_XMM128_FAR 9
+#define UWOP_PUSH_MACHFRAME 10
+
+/* Modify the IP value saved in the machine frame. This is really a kludge,
+ that will be removed if we could propagate the Windows exception (and not
+ the GCC one).
+ What is very wrong is that the Windows unwinder will try to decode the
+ instruction at IP, which isn't valid anymore after the adjust. */
-_Unwind_Reason_Code
-__gnat_Unwind_RaiseException (_Unwind_Exception *e)
+static void
+__gnat_adjust_context (unsigned char *unw, ULONG64 rsp)
{
- return _Unwind_RaiseException (e);
-}
+ unsigned int len;
-_Unwind_Reason_Code
-__gnat_Unwind_ForcedUnwind (_Unwind_Exception *e,
- void * handler,
- void * argument)
-{
- return _Unwind_ForcedUnwind (e, handler, argument);
+ /* Version = 1, no flags, no prolog. */
+ if (unw[0] != 1 || unw[1] != 0)
+ return;
+ len = unw[2];
+ /* No frame pointer. */
+ if (unw[3] != 0)
+ return;
+ unw += 4;
+ while (len > 0)
+ {
+ /* Offset in prolog = 0. */
+ if (unw[0] != 0)
+ return;
+ switch (unw[1] & 0xf)
+ {
+ case UWOP_ALLOC_LARGE:
+ /* Expect < 512KB. */
+ if ((unw[1] & 0xf0) != 0)
+ return;
+ rsp += *(unsigned short *)(unw + 2) * 8;
+ len--;
+ unw += 2;
+ break;
+ case UWOP_SAVE_NONVOL:
+ case UWOP_SAVE_XMM128:
+ len--;
+ unw += 2;
+ break;
+ case UWOP_PUSH_MACHFRAME:
+ {
+ ULONG64 *rip;
+ rip = (ULONG64 *)rsp;
+ if ((unw[1] & 0xf0) == 0x10)
+ rip++;
+ /* Adjust rip. */
+ (*rip)++;
+ }
+ return;
+ default:
+ /* Unexpected. */
+ return;
+ }
+ unw += 2;
+ len--;
+ }
}
-#endif /* __USING_SJLJ_EXCEPTIONS__ */
-
-#ifdef __SEH__
EXCEPTION_DISPOSITION
__gnat_personality_seh0 (PEXCEPTION_RECORD ms_exc, void *this_frame,
PCONTEXT ms_orig_context,
PDISPATCHER_CONTEXT ms_disp)
{
- return _GCC_specific_handler (ms_exc, this_frame, ms_orig_context,
- ms_disp, __gnat_personality_imp);
-}
-#endif /* SEH */
-#else
-/* ! IN_RTS */
+ /* Possibly transform run-time errors into Ada exceptions. As a small
+ optimization, we call __gnat_SEH_error_handler only on non-user
+ exceptions. */
+ if (!(ms_exc->ExceptionCode & STATUS_USER_DEFINED))
+ {
+ struct Exception_Data *exception;
+ const char *msg;
+ ULONG64 excpip = (ULONG64) ms_exc->ExceptionAddress;
+
+ if (excpip != 0
+ && excpip >= (ms_disp->ImageBase
+ + ms_disp->FunctionEntry->BeginAddress)
+ && excpip < (ms_disp->ImageBase
+ + ms_disp->FunctionEntry->EndAddress))
+ {
+ /* This is a fault in this function. We need to adjust the return
+ address before raising the GCC exception. */
+ CONTEXT context;
+ PRUNTIME_FUNCTION mf_func = NULL;
+ ULONG64 mf_imagebase;
+ ULONG64 mf_rsp = 0;
-/* Define the corresponding stubs for the compiler. */
+ /* Get the context. */
+ RtlCaptureContext (&context);
-/* We don't want fancy_abort here. */
-#undef abort
+ while (1)
+ {
+ PRUNTIME_FUNCTION RuntimeFunction;
+ ULONG64 ImageBase;
+ VOID *HandlerData;
+ ULONG64 EstablisherFrame;
+
+ /* Get function metadata. */
+ RuntimeFunction = RtlLookupFunctionEntry
+ (context.Rip, &ImageBase, ms_disp->HistoryTable);
+ if (RuntimeFunction == ms_disp->FunctionEntry)
+ break;
+ mf_func = RuntimeFunction;
+ mf_imagebase = ImageBase;
+ mf_rsp = context.Rsp;
+
+ if (!RuntimeFunction)
+ {
+ /* In case of failure, assume this is a leaf function. */
+ context.Rip = *(ULONG64 *) context.Rsp;
+ context.Rsp += 8;
+ }
+ else
+ {
+ /* Unwind. */
+ RtlVirtualUnwind (0, ImageBase, context.Rip, RuntimeFunction,
+ &context, &HandlerData, &EstablisherFrame,
+ NULL);
+ }
+
+ /* 0 means bottom of the stack. */
+ if (context.Rip == 0)
+ {
+ mf_func = NULL;
+ break;
+ }
+ }
+ if (mf_func != NULL)
+ __gnat_adjust_context
+ ((unsigned char *)(mf_imagebase + mf_func->UnwindData), mf_rsp);
+ }
-_Unwind_Reason_Code
-__gnat_Unwind_RaiseException (_Unwind_Exception *e ATTRIBUTE_UNUSED)
-{
- abort ();
-}
+ exception = __gnat_map_SEH (ms_exc, &msg);
+ if (exception != NULL)
+ {
+ struct _Unwind_Exception *exc;
+
+ /* Directly convert the system exception to a GCC one.
+ This is really breaking the API, but is necessary for stack size
+ reasons: the normal way is to call Raise_From_Signal_Handler,
+ which build the exception and calls _Unwind_RaiseException, which
+ unwinds the stack and will call this personality routine. But
+ the Windows unwinder needs about 2KB of stack. */
+ exc = __gnat_create_machine_occurrence_from_signal_handler
+ (exception, msg);
+ memset (exc->private_, 0, sizeof (exc->private_));
+ ms_exc->ExceptionCode = STATUS_GCC_THROW;
+ ms_exc->NumberParameters = 1;
+ ms_exc->ExceptionInformation[0] = (ULONG_PTR)exc;
+ }
+ }
-_Unwind_Reason_Code
-__gnat_Unwind_ForcedUnwind (_Unwind_Exception *e ATTRIBUTE_UNUSED,
- void * handler ATTRIBUTE_UNUSED,
- void * argument ATTRIBUTE_UNUSED)
-{
- abort ();
+ return _GCC_specific_handler (ms_exc, this_frame, ms_orig_context,
+ ms_disp, __gnat_personality_imp);
}
-
-#endif /* IN_RTS */
+#endif /* SEH */
diff --git a/gcc/ada/raise.h b/gcc/ada/raise.h
index d8c245f0983..57611542350 100644
--- a/gcc/ada/raise.h
+++ b/gcc/ada/raise.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2011, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2012, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -49,6 +49,8 @@ struct Exception_Data
typedef struct Exception_Data *Exception_Id;
+struct Exception_Occurrence;
+
extern void _gnat_builtin_longjmp (void *, int);
extern void __gnat_unhandled_terminate (void);
extern void *__gnat_malloc (__SIZE_TYPE__);
diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb
index ee45e05473d..14ab452b477 100644
--- a/gcc/ada/restrict.adb
+++ b/gcc/ada/restrict.adb
@@ -541,10 +541,10 @@ package body Restrict is
then
null;
- -- Here if restriction set, check for violation (either this is a
- -- Boolean restriction, or a parameter restriction with a value of
- -- zero and an unknown count, or a parameter restriction with a
- -- known value that exceeds the restriction count).
+ -- Here if restriction set, check for violation (this is a Boolean
+ -- restriction, or a parameter restriction with a value of zero and an
+ -- unknown count, or a parameter restriction with a known value that
+ -- exceeds the restriction count).
elsif R in All_Boolean_Restrictions
or else (Restrictions.Unknown (R)
@@ -1259,8 +1259,7 @@ package body Restrict is
(N : Node_Id;
Warning : Boolean)
is
- A_Id : constant Aspect_Id := Get_Aspect_Id (Chars (N));
- pragma Assert (A_Id /= No_Aspect);
+ A_Id : constant Aspect_Id_Exclude_No_Aspect := Get_Aspect_Id (Chars (N));
begin
No_Specification_Of_Aspects (A_Id) := Sloc (N);
diff --git a/gcc/ada/restrict.ads b/gcc/ada/restrict.ads
index 5d03f831267..1d9d67f910e 100644
--- a/gcc/ada/restrict.ads
+++ b/gcc/ada/restrict.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/rident.ads b/gcc/ada/rident.ads
index 6f771145fe7..615e17bfc78 100644
--- a/gcc/ada/rident.ads
+++ b/gcc/ada/rident.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads
index 5b7345f3af4..05983814a5e 100644
--- a/gcc/ada/rtsfind.ads
+++ b/gcc/ada/rtsfind.ads
@@ -215,6 +215,7 @@ package Rtsfind is
System_Aux_DEC,
System_Bit_Ops,
System_Boolean_Array_Operations,
+ System_Byte_Swapping,
System_Checked_Pools,
System_Compare_Array_Signed_16,
System_Compare_Array_Signed_32,
@@ -731,16 +732,14 @@ package Rtsfind is
RE_Assert_Failure, -- System.Assertions
RE_Raise_Assert_Failure, -- System.Assertions
- RE_Atomic_Compare_Exchange_8, -- System.Atomic_Primitives
- RE_Atomic_Compare_Exchange_16, -- System.Atomic_Primitives
- RE_Atomic_Compare_Exchange_32, -- System.Atomic_Primitives
- RE_Atomic_Compare_Exchange_64, -- System.Atomic_Primitives
- RE_Atomic_Load_8, -- System.Atomic_Primitives
- RE_Atomic_Load_16, -- System.Atomic_Primitives
- RE_Atomic_Load_32, -- System.Atomic_Primitives
- RE_Atomic_Load_64, -- System.Atomic_Primitives
- RE_Atomic_Synchronize, -- System.Atomic_Primitives
- RE_Relaxed, -- System.Atomic_Primitives
+ RE_Lock_Free_Read_8, -- System.Atomic_Primitives
+ RE_Lock_Free_Read_16, -- System.Atomic_Primitives
+ RE_Lock_Free_Read_32, -- System.Atomic_Primitives
+ RE_Lock_Free_Read_64, -- System.Atomic_Primitives
+ RE_Lock_Free_Try_Write_8, -- System.Atomic_Primitives
+ RE_Lock_Free_Try_Write_16, -- System.Atomic_Primitives
+ RE_Lock_Free_Try_Write_32, -- System.Atomic_Primitives
+ RE_Lock_Free_Try_Write_64, -- System.Atomic_Primitives
RE_Uint8, -- System.Atomic_Primitives
RE_Uint16, -- System.Atomic_Primitives
RE_Uint32, -- System.Atomic_Primitives
@@ -774,6 +773,10 @@ package Rtsfind is
RE_Vector_Nxor, -- System_Boolean_Array_Operations,
RE_Vector_Xor, -- System_Boolean_Array_Operations,
+ RE_Bswap_16, -- System.Byte_Swapping
+ RE_Bswap_32, -- System.Byte_Swapping
+ RE_Bswap_64, -- System.Byte_Swapping
+
RE_Checked_Pool, -- System.Checked_Pools
RE_Compare_Array_S8, -- System.Compare_Array_Signed_8
@@ -1955,16 +1958,14 @@ package Rtsfind is
RE_Assert_Failure => System_Assertions,
RE_Raise_Assert_Failure => System_Assertions,
- RE_Atomic_Compare_Exchange_8 => System_Atomic_Primitives,
- RE_Atomic_Compare_Exchange_16 => System_Atomic_Primitives,
- RE_Atomic_Compare_Exchange_32 => System_Atomic_Primitives,
- RE_Atomic_Compare_Exchange_64 => System_Atomic_Primitives,
- RE_Atomic_Load_8 => System_Atomic_Primitives,
- RE_Atomic_Load_16 => System_Atomic_Primitives,
- RE_Atomic_Load_32 => System_Atomic_Primitives,
- RE_Atomic_Load_64 => System_Atomic_Primitives,
- RE_Atomic_Synchronize => System_Atomic_Primitives,
- RE_Relaxed => System_Atomic_Primitives,
+ RE_Lock_Free_Read_8 => System_Atomic_Primitives,
+ RE_Lock_Free_Read_16 => System_Atomic_Primitives,
+ RE_Lock_Free_Read_32 => System_Atomic_Primitives,
+ RE_Lock_Free_Read_64 => System_Atomic_Primitives,
+ RE_Lock_Free_Try_Write_8 => System_Atomic_Primitives,
+ RE_Lock_Free_Try_Write_16 => System_Atomic_Primitives,
+ RE_Lock_Free_Try_Write_32 => System_Atomic_Primitives,
+ RE_Lock_Free_Try_Write_64 => System_Atomic_Primitives,
RE_Uint8 => System_Atomic_Primitives,
RE_Uint16 => System_Atomic_Primitives,
RE_Uint32 => System_Atomic_Primitives,
@@ -2000,6 +2001,10 @@ package Rtsfind is
RE_Vector_Nxor => System_Boolean_Array_Operations,
RE_Vector_Xor => System_Boolean_Array_Operations,
+ RE_Bswap_16 => System_Byte_Swapping,
+ RE_Bswap_32 => System_Byte_Swapping,
+ RE_Bswap_64 => System_Byte_Swapping,
+
RE_Compare_Array_S8 => System_Compare_Array_Signed_8,
RE_Compare_Array_S8_Unaligned => System_Compare_Array_Signed_8,
diff --git a/gcc/ada/s-assert.ads b/gcc/ada/s-assert.ads
index 433e276c600..c19f7c18a74 100644
--- a/gcc/ada/s-assert.ads
+++ b/gcc/ada/s-assert.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -29,7 +29,9 @@
-- --
------------------------------------------------------------------------------
--- This package provides support for the GNAT assert pragma
+-- This package provides support for assertions (including pragma Assert,
+-- pragma Debug, and Precondition/Postcondition/Predicate/Invariant aspects
+-- and their corresponding pragmas).
-- This unit may be used directly from an application program by providing
-- an appropriate WITH, and the interface can be expected to remain stable.
diff --git a/gcc/ada/s-atopri.adb b/gcc/ada/s-atopri.adb
new file mode 100644
index 00000000000..145cbb6c9db
--- /dev/null
+++ b/gcc/ada/s-atopri.adb
@@ -0,0 +1,201 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- S Y S T E M . A T O M I C _ P R I M I T I V E S --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2012, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+package body System.Atomic_Primitives is
+
+ ----------------------
+ -- Lock_Free_Read_8 --
+ ----------------------
+
+ function Lock_Free_Read_8 (Ptr : Address) return uint8 is
+ begin
+ if uint8'Atomic_Always_Lock_Free then
+ return Atomic_Load_8 (Ptr, Acquire);
+ else
+ raise Program_Error;
+ end if;
+ end Lock_Free_Read_8;
+
+ -----------------------
+ -- Lock_Free_Read_16 --
+ -----------------------
+
+ function Lock_Free_Read_16 (Ptr : Address) return uint16 is
+ begin
+ if uint16'Atomic_Always_Lock_Free then
+ return Atomic_Load_16 (Ptr, Acquire);
+ else
+ raise Program_Error;
+ end if;
+ end Lock_Free_Read_16;
+
+ -----------------------
+ -- Lock_Free_Read_32 --
+ -----------------------
+
+ function Lock_Free_Read_32 (Ptr : Address) return uint32 is
+ begin
+ if uint32'Atomic_Always_Lock_Free then
+ return Atomic_Load_32 (Ptr, Acquire);
+ else
+ raise Program_Error;
+ end if;
+ end Lock_Free_Read_32;
+
+ -----------------------
+ -- Lock_Free_Read_64 --
+ -----------------------
+
+ function Lock_Free_Read_64 (Ptr : Address) return uint64 is
+ begin
+ if uint64'Atomic_Always_Lock_Free then
+ return Atomic_Load_64 (Ptr, Acquire);
+ else
+ raise Program_Error;
+ end if;
+ end Lock_Free_Read_64;
+
+ ---------------------------
+ -- Lock_Free_Try_Write_8 --
+ ---------------------------
+
+ function Lock_Free_Try_Write_8
+ (Ptr : Address;
+ Expected : in out uint8;
+ Desired : uint8) return Boolean
+ is
+ Actual : uint8;
+
+ begin
+ if Expected /= Desired then
+
+ if uint8'Atomic_Always_Lock_Free then
+ Actual := Sync_Compare_And_Swap_8 (Ptr, Expected, Desired);
+ else
+ raise Program_Error;
+ end if;
+
+ if Actual /= Expected then
+ Expected := Actual;
+ return False;
+ end if;
+ end if;
+
+ return True;
+ end Lock_Free_Try_Write_8;
+
+ ----------------------------
+ -- Lock_Free_Try_Write_16 --
+ ----------------------------
+
+ function Lock_Free_Try_Write_16
+ (Ptr : Address;
+ Expected : in out uint16;
+ Desired : uint16) return Boolean
+ is
+ Actual : uint16;
+
+ begin
+ if Expected /= Desired then
+
+ if uint16'Atomic_Always_Lock_Free then
+ Actual := Sync_Compare_And_Swap_16 (Ptr, Expected, Desired);
+ else
+ raise Program_Error;
+ end if;
+
+ if Actual /= Expected then
+ Expected := Actual;
+ return False;
+ end if;
+ end if;
+
+ return True;
+ end Lock_Free_Try_Write_16;
+
+ ----------------------------
+ -- Lock_Free_Try_Write_32 --
+ ----------------------------
+
+ function Lock_Free_Try_Write_32
+ (Ptr : Address;
+ Expected : in out uint32;
+ Desired : uint32) return Boolean
+ is
+ Actual : uint32;
+
+ begin
+ if Expected /= Desired then
+
+ if uint32'Atomic_Always_Lock_Free then
+ Actual := Sync_Compare_And_Swap_32 (Ptr, Expected, Desired);
+ else
+ raise Program_Error;
+ end if;
+
+ if Actual /= Expected then
+ Expected := Actual;
+ return False;
+ end if;
+ end if;
+
+ return True;
+ end Lock_Free_Try_Write_32;
+
+ ----------------------------
+ -- Lock_Free_Try_Write_64 --
+ ----------------------------
+
+ function Lock_Free_Try_Write_64
+ (Ptr : Address;
+ Expected : in out uint64;
+ Desired : uint64) return Boolean
+ is
+ Actual : uint64;
+
+ begin
+ if Expected /= Desired then
+
+ if uint64'Atomic_Always_Lock_Free then
+ Actual := Sync_Compare_And_Swap_64 (Ptr, Expected, Desired);
+ else
+ raise Program_Error;
+ end if;
+
+ if Actual /= Expected then
+ Expected := Actual;
+ return False;
+ end if;
+ end if;
+
+ return True;
+ end Lock_Free_Try_Write_64;
+end System.Atomic_Primitives;
diff --git a/gcc/ada/s-atopri.ads b/gcc/ada/s-atopri.ads
index 3b87eb28125..ba4b73351aa 100644
--- a/gcc/ada/s-atopri.ads
+++ b/gcc/ada/s-atopri.ads
@@ -29,14 +29,15 @@
-- --
------------------------------------------------------------------------------
--- This package contains atomic primitives defined from gcc built-in functions
-
--- For now, these operations are only used by the compiler to generate the
--- lock-free implementation of protected objects.
+-- This package contains both atomic primitives defined from gcc built-in
+-- functions and operations used by the compiler to generate the lock-free
+-- implementation of protected objects.
package System.Atomic_Primitives is
pragma Preelaborate;
+ type uint is mod 2 ** Long_Integer'Size;
+
type uint8 is mod 2**8
with Size => 8;
@@ -59,69 +60,121 @@ package System.Atomic_Primitives is
subtype Mem_Model is Integer range Relaxed .. Last;
- function Atomic_Compare_Exchange_8
- (X : Address;
- X_Old : uint8;
- X_Copy : uint8) return Boolean;
+ ------------------------------------
+ -- GCC built-in atomic primitives --
+ ------------------------------------
+
+ function Atomic_Load_8
+ (Ptr : Address;
+ Model : Mem_Model := Seq_Cst) return uint8;
+ pragma Import (Intrinsic, Atomic_Load_8, "__atomic_load_1");
+
+ function Atomic_Load_16
+ (Ptr : Address;
+ Model : Mem_Model := Seq_Cst) return uint16;
+ pragma Import (Intrinsic, Atomic_Load_16, "__atomic_load_2");
+
+ function Atomic_Load_32
+ (Ptr : Address;
+ Model : Mem_Model := Seq_Cst) return uint32;
+ pragma Import (Intrinsic, Atomic_Load_32, "__atomic_load_4");
+
+ function Atomic_Load_64
+ (Ptr : Address;
+ Model : Mem_Model := Seq_Cst) return uint64;
+ pragma Import (Intrinsic, Atomic_Load_64, "__atomic_load_8");
+
+ function Sync_Compare_And_Swap_8
+ (Ptr : Address;
+ Expected : uint8;
+ Desired : uint8) return uint8;
pragma Import (Intrinsic,
- Atomic_Compare_Exchange_8,
- "__sync_bool_compare_and_swap_1");
+ Sync_Compare_And_Swap_8,
+ "__sync_val_compare_and_swap_1");
-- ??? Should use __atomic_compare_exchange_1 (doesn't work yet):
- -- function Atomic_Compare_Exchange_8
- -- (X : Address;
- -- X_Old : Address;
- -- X_Copy : uint8;
+ -- function Sync_Compare_And_Swap_8
+ -- (Ptr : Address;
+ -- Expected : Address;
+ -- Desired : uint8;
+ -- Weak : Boolean := False;
-- Success_Model : Mem_Model := Seq_Cst;
-- Failure_Model : Mem_Model := Seq_Cst) return Boolean;
-- pragma Import (Intrinsic,
- -- Atomic_Compare_Exchange_8,
+ -- Sync_Compare_And_Swap_8,
-- "__atomic_compare_exchange_1");
- function Atomic_Compare_Exchange_16
- (X : Address;
- X_Old : uint16;
- X_Copy : uint16) return Boolean;
+ function Sync_Compare_And_Swap_16
+ (Ptr : Address;
+ Expected : uint16;
+ Desired : uint16) return uint16;
pragma Import (Intrinsic,
- Atomic_Compare_Exchange_16,
- "__sync_bool_compare_and_swap_2");
+ Sync_Compare_And_Swap_16,
+ "__sync_val_compare_and_swap_2");
- function Atomic_Compare_Exchange_32
- (X : Address;
- X_Old : uint32;
- X_Copy : uint32) return Boolean;
+ function Sync_Compare_And_Swap_32
+ (Ptr : Address;
+ Expected : uint32;
+ Desired : uint32) return uint32;
pragma Import (Intrinsic,
- Atomic_Compare_Exchange_32,
- "__sync_bool_compare_and_swap_4");
+ Sync_Compare_And_Swap_32,
+ "__sync_val_compare_and_swap_4");
- function Atomic_Compare_Exchange_64
- (X : Address;
- X_Old : uint64;
- X_Copy : uint64) return Boolean;
+ function Sync_Compare_And_Swap_64
+ (Ptr : Address;
+ Expected : uint64;
+ Desired : uint64) return uint64;
pragma Import (Intrinsic,
- Atomic_Compare_Exchange_64,
- "__sync_bool_compare_and_swap_8");
+ Sync_Compare_And_Swap_64,
+ "__sync_val_compare_and_swap_8");
- function Atomic_Load_8
- (X : Address;
- Model : Mem_Model := Seq_Cst) return uint8;
- pragma Import (Intrinsic, Atomic_Load_8, "__atomic_load_1");
+ --------------------------
+ -- Lock-free operations --
+ --------------------------
- function Atomic_Load_16
- (X : Address;
- Model : Mem_Model := Seq_Cst) return uint16;
- pragma Import (Intrinsic, Atomic_Load_16, "__atomic_load_2");
+ -- The lock-free implementation uses two atomic instructions for the
+ -- expansion of protected operations:
- function Atomic_Load_32
- (X : Address;
- Model : Mem_Model := Seq_Cst) return uint32;
- pragma Import (Intrinsic, Atomic_Load_32, "__atomic_load_4");
+ -- * Lock_Free_Read_N atomically loads the value of the protected component
+ -- accessed by the current protected operation.
- function Atomic_Load_64
- (X : Address;
- Model : Mem_Model := Seq_Cst) return uint64;
- pragma Import (Intrinsic, Atomic_Load_64, "__atomic_load_8");
+ -- * Lock_Free_Try_Write_N tries to write the Desired value into Ptr only
+ -- if Expected and Desired mismatch.
+
+ function Lock_Free_Read_8 (Ptr : Address) return uint8;
+
+ function Lock_Free_Read_16 (Ptr : Address) return uint16;
+
+ function Lock_Free_Read_32 (Ptr : Address) return uint32;
+
+ function Lock_Free_Read_64 (Ptr : Address) return uint64;
+
+ function Lock_Free_Try_Write_8
+ (Ptr : Address;
+ Expected : in out uint8;
+ Desired : uint8) return Boolean;
+
+ function Lock_Free_Try_Write_16
+ (Ptr : Address;
+ Expected : in out uint16;
+ Desired : uint16) return Boolean;
+
+ function Lock_Free_Try_Write_32
+ (Ptr : Address;
+ Expected : in out uint32;
+ Desired : uint32) return Boolean;
+
+ function Lock_Free_Try_Write_64
+ (Ptr : Address;
+ Expected : in out uint64;
+ Desired : uint64) return Boolean;
- procedure Atomic_Synchronize;
- pragma Import (Intrinsic, Atomic_Synchronize, "__sync_synchronize");
+ pragma Inline (Lock_Free_Read_8);
+ pragma Inline (Lock_Free_Read_16);
+ pragma Inline (Lock_Free_Read_32);
+ pragma Inline (Lock_Free_Read_64);
+ pragma Inline (Lock_Free_Try_Write_8);
+ pragma Inline (Lock_Free_Try_Write_16);
+ pragma Inline (Lock_Free_Try_Write_32);
+ pragma Inline (Lock_Free_Try_Write_64);
end System.Atomic_Primitives;
diff --git a/gcc/ada/s-bytswa.ads b/gcc/ada/s-bytswa.ads
new file mode 100644
index 00000000000..675e7d8ee5a
--- /dev/null
+++ b/gcc/ada/s-bytswa.ads
@@ -0,0 +1,53 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- S Y S T E M . B Y T E _ S W A P P I N G --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2006-2012, AdaCore --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- Intrinsic routines for byte swapping. These are used by the expanded code
+-- (supporting alternative byte ordering), and by the GNAT.Byte_Swapping run
+-- time package which provides user level routines for byte swapping.
+
+package System.Byte_Swapping is
+
+ pragma Pure;
+
+ type U16 is mod 2**16;
+ type U32 is mod 2**32;
+ type U64 is mod 2**64;
+
+ function Bswap_16 (X : U16) return U16;
+ pragma Import (Intrinsic, Bswap_16, "__builtin_bswap16");
+
+ function Bswap_32 (X : U32) return U32;
+ pragma Import (Intrinsic, Bswap_32, "__builtin_bswap32");
+
+ function Bswap_64 (X : U64) return U64;
+ pragma Import (Intrinsic, Bswap_64, "__builtin_bswap64");
+
+end System.Byte_Swapping;
diff --git a/gcc/ada/s-commun.ads b/gcc/ada/s-commun.ads
index c59a2c7e4dc..1255efd6b7d 100644
--- a/gcc/ada/s-commun.ads
+++ b/gcc/ada/s-commun.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2009, AdaCore --
+-- Copyright (C) 2001-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -35,6 +35,7 @@ with Ada.Streams;
with System.CRTL;
package System.Communication is
+ pragma Preelaborate;
function Last_Index
(First : Ada.Streams.Stream_Element_Offset;
diff --git a/gcc/ada/s-crtl.ads b/gcc/ada/s-crtl.ads
index 345e9a570ea..c02d23023eb 100644
--- a/gcc/ada/s-crtl.ads
+++ b/gcc/ada/s-crtl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -165,6 +165,11 @@ package System.CRTL is
function chdir (dir_name : String) return int;
pragma Import (C, chdir, "__gnat_chdir");
+ function mkdir
+ (dir_name : String;
+ encoding : Filename_Encoding := Unspecified) return int;
+ pragma Import (C, mkdir, "__gnat_mkdir");
+
function setvbuf
(stream : FILEs;
buffer : chars;
diff --git a/gcc/ada/s-dimmks.ads b/gcc/ada/s-dimmks.ads
index 50553d1d195..fd0fc0060eb 100644
--- a/gcc/ada/s-dimmks.ads
+++ b/gcc/ada/s-dimmks.ads
@@ -64,31 +64,37 @@ package System.Dim.Mks is
Dimension => (Symbol => 'm',
Meter => 1,
others => 0);
+
subtype Mass is Mks_Type
with
Dimension => (Symbol => "kg",
Kilogram => 1,
others => 0);
+
subtype Time is Mks_Type
with
Dimension => (Symbol => 's',
Second => 1,
others => 0);
+
subtype Electric_Current is Mks_Type
with
Dimension => (Symbol => 'A',
Ampere => 1,
others => 0);
+
subtype Thermodynamic_Temperature is Mks_Type
with
Dimension => (Symbol => 'K',
Kelvin => 1,
others => 0);
+
subtype Amount_Of_Substance is Mks_Type
with
Dimension => (Symbol => "mol",
Mole => 1,
others => 0);
+
subtype Luminous_Intensity is Mks_Type
with
Dimension => (Symbol => "cd",
@@ -122,6 +128,7 @@ package System.Dim.Mks is
Dimension => (Symbol => "Hz",
Second => -1,
others => 0);
+
subtype Force is Mks_Type
with
Dimension => (Symbol => 'N',
@@ -129,6 +136,7 @@ package System.Dim.Mks is
Kilogram => 1,
Second => -2,
others => 0);
+
subtype Pressure is Mks_Type
with
Dimension => (Symbol => "Pa",
@@ -136,6 +144,7 @@ package System.Dim.Mks is
Kilogram => 1,
Second => -2,
others => 0);
+
subtype Energy is Mks_Type
with
Dimension => (Symbol => 'J',
@@ -143,6 +152,7 @@ package System.Dim.Mks is
Kilogram => 1,
Second => -2,
others => 0);
+
subtype Power is Mks_Type
with
Dimension => (Symbol => 'W',
@@ -150,12 +160,14 @@ package System.Dim.Mks is
Kilogram => 1,
Second => -3,
others => 0);
+
subtype Electric_Charge is Mks_Type
with
Dimension => (Symbol => 'C',
Second => 1,
Ampere => 1,
others => 0);
+
subtype Electric_Potential_Difference is Mks_Type
with
Dimension => (Symbol => 'V',
@@ -164,6 +176,7 @@ package System.Dim.Mks is
Second => -3,
Ampere => -1,
others => 0);
+
subtype Electric_Capacitance is Mks_Type
with
Dimension => (Symbol => 'F',
@@ -172,6 +185,7 @@ package System.Dim.Mks is
Second => 4,
Ampere => 2,
others => 0);
+
subtype Electric_Resistance is Mks_Type
with
Dimension => (Symbol => "Ω",
@@ -180,6 +194,7 @@ package System.Dim.Mks is
Second => -3,
Ampere => -2,
others => 0);
+
subtype Electric_Conductance is Mks_Type
with
Dimension => (Symbol => 'S',
@@ -188,6 +203,7 @@ package System.Dim.Mks is
Second => 3,
Ampere => 2,
others => 0);
+
subtype Magnetic_Flux is Mks_Type
with
Dimension => (Symbol => "Wb",
@@ -196,6 +212,7 @@ package System.Dim.Mks is
Second => -2,
Ampere => -1,
others => 0);
+
subtype Magnetic_Flux_Density is Mks_Type
with
Dimension => (Symbol => 'T',
@@ -203,6 +220,7 @@ package System.Dim.Mks is
Second => -2,
Ampere => -1,
others => 0);
+
subtype Inductance is Mks_Type
with
Dimension => (Symbol => 'H',
@@ -211,39 +229,46 @@ package System.Dim.Mks is
Second => -2,
Ampere => -2,
others => 0);
+
subtype Celsius_Temperature is Mks_Type
with
Dimension => (Symbol => "°C",
Kelvin => 1,
others => 0);
+
subtype Luminous_Flux is Mks_Type
with
Dimension => (Symbol => "lm",
Candela => 1,
others => 0);
+
subtype Illuminance is Mks_Type
with
Dimension => (Symbol => "lx",
Meter => -2,
Candela => 1,
others => 0);
+
subtype Radioactivity is Mks_Type
with
Dimension => (Symbol => "Bq",
Second => -1,
others => 0);
+
subtype Absorbed_Dose is Mks_Type
with
Dimension => (Symbol => "Gy",
Meter => 2,
Second => -2,
others => 0);
+
subtype Equivalent_Dose is Mks_Type
with
Dimension => (Symbol => "Sv",
Meter => 2,
Second => -2,
others => 0);
+
subtype Catalytic_Activity is Mks_Type
with
Dimension => (Symbol => "kat",
diff --git a/gcc/ada/s-ficobl.ads b/gcc/ada/s-ficobl.ads
index d3e5ef26ed2..cd3d0cbe37f 100644
--- a/gcc/ada/s-ficobl.ads
+++ b/gcc/ada/s-ficobl.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -40,6 +40,7 @@ with Interfaces.C_Streams;
with System.CRTL;
package System.File_Control_Block is
+ pragma Preelaborate;
----------------------------
-- Ada File Control Block --
diff --git a/gcc/ada/s-fileio.adb b/gcc/ada/s-fileio.adb
index a11d83311e5..88bad49f76e 100644
--- a/gcc/ada/s-fileio.adb
+++ b/gcc/ada/s-fileio.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -98,14 +98,6 @@ package body System.File_IO is
(C, text_translation_required, "__gnat_text_translation_required");
-- If true, add appropriate suffix to control string for Open
- function Get_Case_Sensitive return Integer;
- pragma Import (C, Get_Case_Sensitive,
- "__gnat_get_file_names_case_sensitive");
- File_Names_Case_Sensitive : constant Boolean := Get_Case_Sensitive /= 0;
- -- Set to indicate whether the operating system convention is for file
- -- names to be case sensitive (e.g., in Unix, set True), or non case
- -- sensitive (e.g., in Windows, set False).
-
-----------------------
-- Local Subprograms --
-----------------------
@@ -634,7 +626,6 @@ package body System.File_IO is
then
Start := J + 1;
Stop := Start - 1;
-
while Form (Stop + 1) /= ASCII.NUL
and then Form (Stop + 1) /= ','
loop
@@ -757,6 +748,17 @@ package body System.File_IO is
pragma Import (C, Tmp_Name, "__gnat_tmp_name");
-- Set buffer (a String address) with a temporary filename
+ function Get_Case_Sensitive return Integer;
+ pragma Import (C, Get_Case_Sensitive,
+ "__gnat_get_file_names_case_sensitive");
+
+ File_Names_Case_Sensitive : constant Boolean := Get_Case_Sensitive /= 0;
+ -- Set to indicate whether the operating system convention is for file
+ -- names to be case sensitive (e.g., in Unix, set True), or not case
+ -- sensitive (e.g., in Windows, set False). Declared locally to avoid
+ -- breaking the Preelaborate rule that disallows function calls at the
+ -- library level.
+
Stream : FILEs := C_Stream;
-- Stream which we open in response to this request
diff --git a/gcc/ada/s-fileio.ads b/gcc/ada/s-fileio.ads
index 5ee0c5b99d9..f084d8dc573 100644
--- a/gcc/ada/s-fileio.ads
+++ b/gcc/ada/s-fileio.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -37,6 +37,7 @@ with Interfaces.C_Streams;
with System.File_Control_Block;
package System.File_IO is
+ pragma Preelaborate;
package FCB renames System.File_Control_Block;
package ICS renames Interfaces.C_Streams;
diff --git a/gcc/ada/s-htable.adb b/gcc/ada/s-htable.adb
index e2b5235f054..b8116f9437d 100644
--- a/gcc/ada/s-htable.adb
+++ b/gcc/ada/s-htable.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2011, AdaCore --
+-- Copyright (C) 1995-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -62,7 +62,6 @@ package body System.HTable is
begin
Elmt := Table (Hash (K));
-
loop
if Elmt = Null_Ptr then
return Null_Ptr;
@@ -96,10 +95,10 @@ package body System.HTable is
begin
if not Iterator_Started then
return Null_Ptr;
+ else
+ Iterator_Ptr := Next (Iterator_Ptr);
+ return Get_Non_Null;
end if;
-
- Iterator_Ptr := Next (Iterator_Ptr);
- return Get_Non_Null;
end Get_Next;
------------------
@@ -183,7 +182,6 @@ package body System.HTable is
procedure Set (E : Elmt_Ptr) is
Index : Header_Num;
-
begin
Index := Hash (Get_Key (E));
Set_Next (E, Table (Index));
diff --git a/gcc/ada/s-os_lib.ads b/gcc/ada/s-os_lib.ads
index d0b83ae05f4..9848cb82c82 100644
--- a/gcc/ada/s-os_lib.ads
+++ b/gcc/ada/s-os_lib.ads
@@ -54,7 +54,7 @@ with System;
with System.Strings;
package System.OS_Lib is
- pragma Elaborate_Body (OS_Lib);
+ pragma Preelaborate;
-----------------------
-- String Operations --
diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c
index 6ea57752dc4..eef71b4b719 100644
--- a/gcc/ada/s-oscons-tmplt.c
+++ b/gcc/ada/s-oscons-tmplt.c
@@ -156,6 +156,10 @@ pragma Style_Checks ("M32766");
# include <signal.h>
#endif
+#ifdef __MINGW32__
+# include <winbase.h>
+#endif
+
#ifdef NATIVE
#include <stdio.h>
@@ -169,6 +173,9 @@ int counter = 0;
#define CND(name,comment) \
printf ("\n->CND:$%d:" #name ":$%d:" comment, __LINE__, ((int) _VAL (name)));
+#define CNU(name,comment) \
+ printf ("\n->CNU:$%d:" #name ":$%u:" comment, __LINE__, ((unsigned int) _VAL (name)));
+
#define CNS(name,comment) \
printf ("\n->CNS:$%d:" #name ":" name ":" comment, __LINE__);
@@ -185,6 +192,13 @@ int counter = 0;
: : "i" (__LINE__), "i" ((int) name));
/* Decimal constant in the range of type "int" */
+#define CNU(name, comment) \
+ asm volatile("\n->CNU:%0:" #name ":%1:" comment \
+ : : "i" (__LINE__), "i" ((int) name));
+/* Decimal constant in the range of type "unsigned int" (note, assembler
+ * always wants a signed int, we convert back in xoscons).
+ */
+
#define CNS(name, comment) \
asm volatile("\n->CNS:%0:" #name ":" name ":" comment \
: : "i" (__LINE__));
@@ -250,9 +264,9 @@ package System.OS_Constants is
/*
- -----------------------------
- -- Platform identification --
- -----------------------------
+ ---------------------------------
+ -- General platform parameters --
+ ---------------------------------
type OS_Type is (Windows, VMS, Other_OS);
*/
@@ -264,8 +278,19 @@ package System.OS_Constants is
# define TARGET_OS "Other_OS"
#endif
C("Target_OS", OS_Type, TARGET_OS, "")
+/*
+ pragma Warnings (Off, Target_OS);
+ -- Suppress warnings on Target_OS since it is in general tested for
+ -- equality with a constant value to implement conditional compilation,
+ -- which normally generates a constant condition warning.
+
+*/
#define Target_Name TARGET
CST(Target_Name, "")
+
+#define sizeof_unsigned_int sizeof (unsigned int)
+CND(sizeof_unsigned_int, "Size of unsigned int")
+
/*
-------------------
@@ -589,12 +614,21 @@ CND(ETOOMANYREFS, "Too many references")
#endif
CND(EWOULDBLOCK, "Operation would block")
+#ifndef E2BIG
+# define E2BIG -1
+#endif
+CND(E2BIG, "Argument list too long")
+
+#ifndef EILSEQ
+# define EILSEQ -1
+#endif
+CND(EILSEQ, "Illegal byte sequence")
+
/**
- ** Terminal I/O constants
+ ** Terminal/serial I/O constants
**/
-#ifdef HAVE_TERMIOS
-
+#if defined(HAVE_TERMIOS) || defined(__MINGW32__)
/*
----------------------
@@ -602,6 +636,9 @@ CND(EWOULDBLOCK, "Operation would block")
----------------------
*/
+#endif
+
+#ifdef HAVE_TERMIOS
#ifndef TCSANOW
# define TCSANOW -1
@@ -613,210 +650,215 @@ CND(TCSANOW, "Immediate")
#endif
CND(TCIFLUSH, "Flush input")
+#ifndef IXON
+# define IXON -1
+#endif
+CNU(IXON, "Output sw flow control")
+
#ifndef CLOCAL
# define CLOCAL -1
#endif
-CND(CLOCAL, "Local")
+CNU(CLOCAL, "Local")
#ifndef CRTSCTS
# define CRTSCTS -1
#endif
-CND(CRTSCTS, "Hardware flow control")
+CNU(CRTSCTS, "Output hw flow control")
#ifndef CREAD
# define CREAD -1
#endif
-CND(CREAD, "Read")
+CNU(CREAD, "Read")
#ifndef CS5
# define CS5 -1
#endif
-CND(CS5, "5 data bits")
+CNU(CS5, "5 data bits")
#ifndef CS6
# define CS6 -1
#endif
-CND(CS6, "6 data bits")
+CNU(CS6, "6 data bits")
#ifndef CS7
# define CS7 -1
#endif
-CND(CS7, "7 data bits")
+CNU(CS7, "7 data bits")
#ifndef CS8
# define CS8 -1
#endif
-CND(CS8, "8 data bits")
+CNU(CS8, "8 data bits")
#ifndef CSTOPB
# define CSTOPB -1
#endif
-CND(CSTOPB, "2 stop bits")
+CNU(CSTOPB, "2 stop bits")
#ifndef PARENB
# define PARENB -1
#endif
-CND(PARENB, "Parity enable")
+CNU(PARENB, "Parity enable")
#ifndef PARODD
# define PARODD -1
#endif
-CND(PARODD, "Parity odd")
+CNU(PARODD, "Parity odd")
#ifndef B0
# define B0 -1
#endif
-CND(B0, "0 bps")
+CNU(B0, "0 bps")
#ifndef B50
# define B50 -1
#endif
-CND(B50, "50 bps")
+CNU(B50, "50 bps")
#ifndef B75
# define B75 -1
#endif
-CND(B75, "75 bps")
+CNU(B75, "75 bps")
#ifndef B110
# define B110 -1
#endif
-CND(B110, "110 bps")
+CNU(B110, "110 bps")
#ifndef B134
# define B134 -1
#endif
-CND(B134, "134 bps")
+CNU(B134, "134 bps")
#ifndef B150
# define B150 -1
#endif
-CND(B150, "150 bps")
+CNU(B150, "150 bps")
#ifndef B200
# define B200 -1
#endif
-CND(B200, "200 bps")
+CNU(B200, "200 bps")
#ifndef B300
# define B300 -1
#endif
-CND(B300, "300 bps")
+CNU(B300, "300 bps")
#ifndef B600
# define B600 -1
#endif
-CND(B600, "600 bps")
+CNU(B600, "600 bps")
#ifndef B1200
# define B1200 -1
#endif
-CND(B1200, "1200 bps")
+CNU(B1200, "1200 bps")
#ifndef B1800
# define B1800 -1
#endif
-CND(B1800, "1800 bps")
+CNU(B1800, "1800 bps")
#ifndef B2400
# define B2400 -1
#endif
-CND(B2400, "2400 bps")
+CNU(B2400, "2400 bps")
#ifndef B4800
# define B4800 -1
#endif
-CND(B4800, "4800 bps")
+CNU(B4800, "4800 bps")
#ifndef B9600
# define B9600 -1
#endif
-CND(B9600, "9600 bps")
+CNU(B9600, "9600 bps")
#ifndef B19200
# define B19200 -1
#endif
-CND(B19200, "19200 bps")
+CNU(B19200, "19200 bps")
#ifndef B38400
# define B38400 -1
#endif
-CND(B38400, "38400 bps")
+CNU(B38400, "38400 bps")
#ifndef B57600
# define B57600 -1
#endif
-CND(B57600, "57600 bps")
+CNU(B57600, "57600 bps")
#ifndef B115200
# define B115200 -1
#endif
-CND(B115200, "115200 bps")
+CNU(B115200, "115200 bps")
#ifndef B230400
# define B230400 -1
#endif
-CND(B230400, "230400 bps")
+CNU(B230400, "230400 bps")
#ifndef B460800
# define B460800 -1
#endif
-CND(B460800, "460800 bps")
+CNU(B460800, "460800 bps")
#ifndef B500000
# define B500000 -1
#endif
-CND(B500000, "500000 bps")
+CNU(B500000, "500000 bps")
#ifndef B576000
# define B576000 -1
#endif
-CND(B576000, "576000 bps")
+CNU(B576000, "576000 bps")
#ifndef B921600
# define B921600 -1
#endif
-CND(B921600, "921600 bps")
+CNU(B921600, "921600 bps")
#ifndef B1000000
# define B1000000 -1
#endif
-CND(B1000000, "1000000 bps")
+CNU(B1000000, "1000000 bps")
#ifndef B1152000
# define B1152000 -1
#endif
-CND(B1152000, "1152000 bps")
+CNU(B1152000, "1152000 bps")
#ifndef B1500000
# define B1500000 -1
#endif
-CND(B1500000, "1500000 bps")
+CNU(B1500000, "1500000 bps")
#ifndef B2000000
# define B2000000 -1
#endif
-CND(B2000000, "2000000 bps")
+CNU(B2000000, "2000000 bps")
#ifndef B2500000
# define B2500000 -1
#endif
-CND(B2500000, "2500000 bps")
+CNU(B2500000, "2500000 bps")
#ifndef B3000000
# define B3000000 -1
#endif
-CND(B3000000, "3000000 bps")
+CNU(B3000000, "3000000 bps")
#ifndef B3500000
# define B3500000 -1
#endif
-CND(B3500000, "3500000 bps")
+CNU(B3500000, "3500000 bps")
#ifndef B4000000
# define B4000000 -1
#endif
-CND(B4000000, "4000000 bps")
+CNU(B4000000, "4000000 bps")
/*
@@ -913,6 +955,11 @@ CND(VEOL2, "Alternative EOL")
#endif /* HAVE_TERMIOS */
+#ifdef __MINGW32__
+CNU(DTR_CONTROL_ENABLE, "Enable DTR flow ctrl")
+CNU(RTS_CONTROL_ENABLE, "Enable RTS flow ctrl")
+#endif
+
/*
-----------------------------
diff --git a/gcc/ada/s-osinte-hpux.ads b/gcc/ada/s-osinte-hpux.ads
index 55729f877ab..b916b8db940 100644
--- a/gcc/ada/s-osinte-hpux.ads
+++ b/gcc/ada/s-osinte-hpux.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -290,7 +290,7 @@ package System.OS_Interface is
pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
-- The alternate signal stack for stack overflows
- Alternate_Stack_Size : constant := 16 * 1024;
+ Alternate_Stack_Size : constant := 128 * 1024;
-- This must be in keeping with init.c:__gnat_alternate_stack
Stack_Base_Available : constant Boolean := False;
diff --git a/gcc/ada/s-regexp.adb b/gcc/ada/s-regexp.adb
index e1f5f317cb5..56c38a8a5ee 100644
--- a/gcc/ada/s-regexp.adb
+++ b/gcc/ada/s-regexp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2010, AdaCore --
+-- Copyright (C) 1999-2012, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -100,10 +100,12 @@ package body System.Regexp is
Tmp : Regexp_Access;
begin
- Tmp := new Regexp_Value (Alphabet_Size => R.R.Alphabet_Size,
- Num_States => R.R.Num_States);
- Tmp.all := R.R.all;
- R.R := Tmp;
+ if R.R /= null then
+ Tmp := new Regexp_Value (Alphabet_Size => R.R.Alphabet_Size,
+ Num_States => R.R.Num_States);
+ Tmp.all := R.R.all;
+ R.R := Tmp;
+ end if;
end Adjust;
-------------
diff --git a/gcc/ada/s-rident.ads b/gcc/ada/s-rident.ads
index d067f3d7f4f..880a7291505 100644
--- a/gcc/ada/s-rident.ads
+++ b/gcc/ada/s-rident.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -41,6 +41,34 @@
-- so we can do the instantiation under control of Discard_Names to remove
-- the tables.
+---------------------------------------------------
+-- Note On Compile/Run-Time Consistency Checking --
+---------------------------------------------------
+
+-- This unit is with'ed by the run-time (to make System.Restrictions which is
+-- used for run-time access to restriction information), by the compiler (to
+-- determine what restrictions are implemented and what their category is) and
+-- by the binder (in processing ali files, and generating the information used
+-- at run-time to access restriction information).
+
+-- Normally the version of System.Rident referenced in all three contexts
+-- should be the same. However, problems could arise in certain inconsistent
+-- builds that used inconsistent versions of the compiler and run-time. This
+-- sort of thing is not strictly correct, but it does arise when short-cuts
+-- are taken in build procedures.
+
+-- Previously, this kind of inconsistency could cause a significant problem.
+-- If versions of System.Rident accessed by the compiler and binder differed,
+-- then the binder could fail to recognize the R (restrictions line) in the
+-- ali file, leading to bind errors when restrictions were added or removed.
+
+-- The latest implementation avoids both this problem by using a named
+-- scheme for recording restrictions, rather than a positional scheme which
+-- fails completely if restrictions are added or subtracted. Now the worst
+-- that happens at bind time in incosistent builds is that unrecognized
+-- restrictions are ignored, and the consistency checking for restrictions
+-- might be incomplete, which is no big deal.
+
pragma Compiler_Unit;
generic
diff --git a/gcc/ada/s-taprop-mingw.adb b/gcc/ada/s-taprop-mingw.adb
index 2aa5fd7c0b6..75d81cb6327 100644
--- a/gcc/ada/s-taprop-mingw.adb
+++ b/gcc/ada/s-taprop-mingw.adb
@@ -716,57 +716,30 @@ package body System.Task_Primitives.Operations is
-- Set_Priority --
------------------
- type Prio_Array_Type is array (System.Any_Priority) of Integer;
- pragma Atomic_Components (Prio_Array_Type);
-
- Prio_Array : Prio_Array_Type;
- -- Global array containing the id of the currently running task for
- -- each priority.
- --
- -- Note: we assume that we are on a single processor with run-til-blocked
- -- scheduling.
-
procedure Set_Priority
(T : Task_Id;
Prio : System.Any_Priority;
Loss_Of_Inheritance : Boolean := False)
is
- Res : BOOL;
- Array_Item : Integer;
+ Res : BOOL;
+ pragma Unreferenced (Loss_Of_Inheritance);
begin
- Res := SetThreadPriority
- (T.Common.LL.Thread, Interfaces.C.int (Underlying_Priorities (Prio)));
+ Res :=
+ SetThreadPriority
+ (T.Common.LL.Thread,
+ Interfaces.C.int (Underlying_Priorities (Prio)));
pragma Assert (Res = Win32.TRUE);
- if Dispatching_Policy = 'F' or else Get_Policy (Prio) = 'F' then
-
- -- Annex D requirement [RM D.2.2 par. 9]:
- -- If the task drops its priority due to the loss of inherited
- -- priority, it is added at the head of the ready queue for its
- -- new active priority.
-
- if Loss_Of_Inheritance
- and then Prio < T.Common.Current_Priority
- then
- Array_Item := Prio_Array (T.Common.Base_Priority) + 1;
- Prio_Array (T.Common.Base_Priority) := Array_Item;
-
- loop
- -- Let some processes a chance to arrive
-
- Yield;
+ -- Note: Annex D (RM D.2.3(5/2)) requires the task to be placed at the
+ -- head of its priority queue when decreasing its priority as a result
+ -- of a loss of inherited priority. This is not the case, but we
+ -- consider it an acceptable variation (RM 1.1.3(6)), given this is
+ -- the built-in behavior offered by the Windows operating system.
- -- Then wait for our turn to proceed
-
- exit when Array_Item = Prio_Array (T.Common.Base_Priority)
- or else Prio_Array (T.Common.Base_Priority) = 1;
- end loop;
-
- Prio_Array (T.Common.Base_Priority) :=
- Prio_Array (T.Common.Base_Priority) - 1;
- end if;
- end if;
+ -- In older versions we attempted to better approximate the Annex D
+ -- required behavior, but this simulation was not entirely accurate,
+ -- and it seems better to live with the standard Windows semantics.
T.Common.Current_Priority := Prio;
end Set_Priority;
diff --git a/gcc/ada/s-tarest.adb b/gcc/ada/s-tarest.adb
index aab0ac7319e..9643a181b5b 100644
--- a/gcc/ada/s-tarest.adb
+++ b/gcc/ada/s-tarest.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1999-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2012, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -483,6 +483,12 @@ package body System.Tasking.Restricted.Stages is
then Self_ID.Common.Base_Priority
else System.Any_Priority (Priority));
+ -- Legal values of CPU are the special Unspecified_CPU value which is
+ -- inserted by the compiler for tasks without CPU aspect, and those in
+ -- the range of CPU_Range but no greater than Number_Of_CPUs. Otherwise
+ -- the task is defined to have failed, and it becomes a completed task
+ -- (RM D.16(14/3)).
+
if CPU /= Unspecified_CPU
and then (CPU < Integer (System.Multiprocessors.CPU_Range'First)
or else CPU > Integer (System.Multiprocessors.CPU_Range'Last)
@@ -492,6 +498,13 @@ package body System.Tasking.Restricted.Stages is
-- Normal CPU affinity
else
+ -- When the application code says nothing about the task affinity
+ -- (task without CPU aspect) then the compiler inserts the
+ -- Unspecified_CPU value which indicates to the run-time library that
+ -- the task will activate and execute on the same processor as its
+ -- activating task if the activating task is assigned a processor
+ -- (RM D.16(14/3)).
+
Base_CPU :=
(if CPU = Unspecified_CPU
then Self_ID.Common.Base_CPU
diff --git a/gcc/ada/s-tasinf-linux.ads b/gcc/ada/s-tasinf-linux.ads
index db274f89f52..740c6bb3646 100644
--- a/gcc/ada/s-tasinf-linux.ads
+++ b/gcc/ada/s-tasinf-linux.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2007-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 2007-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -48,10 +48,10 @@ package System.Task_Info is
pragma Elaborate_Body;
-- To ensure that a body is allowed
- -- Windows provides a way to define the ideal processor to use for a given
- -- thread. The ideal processor is not necessarily the one that will be used
- -- by the OS but the OS will always try to schedule this thread to the
- -- specified processor if it is available.
+ -- The Linux kernel provides a way to define the ideal processor to use for
+ -- a given thread. The ideal processor is not necessarily the one that will
+ -- be used by the OS but the OS will always try to schedule this thread to
+ -- the specified processor if it is available.
-- The Task_Info pragma:
diff --git a/gcc/ada/s-tassta.adb b/gcc/ada/s-tassta.adb
index 410cc8c0f06..57c28be4ee5 100644
--- a/gcc/ada/s-tassta.adb
+++ b/gcc/ada/s-tassta.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -527,6 +527,12 @@ package body System.Tasking.Stages is
then Self_ID.Common.Base_Priority
else System.Any_Priority (Priority));
+ -- Legal values of CPU are the special Unspecified_CPU value which is
+ -- inserted by the compiler for tasks without CPU aspect, and those in
+ -- the range of CPU_Range but no greater than Number_Of_CPUs. Otherwise
+ -- the task is defined to have failed, and it becomes a completed task
+ -- (RM D.16(14/3)).
+
if CPU /= Unspecified_CPU
and then (CPU < Integer (System.Multiprocessors.CPU_Range'First)
or else
@@ -539,6 +545,13 @@ package body System.Tasking.Stages is
-- Normal CPU affinity
else
+ -- When the application code says nothing about the task affinity
+ -- (task without CPU aspect) then the compiler inserts the
+ -- Unspecified_CPU value which indicates to the run-time library that
+ -- the task will activate and execute on the same processor as its
+ -- activating task if the activating task is assigned a processor
+ -- (RM D.16(14/3)).
+
Base_CPU :=
(if CPU = Unspecified_CPU
then Self_ID.Common.Base_CPU
diff --git a/gcc/ada/scos.ads b/gcc/ada/scos.ads
index e0e31b66673..9f478985284 100644
--- a/gcc/ada/scos.ads
+++ b/gcc/ada/scos.ads
@@ -152,14 +152,16 @@ package SCOs is
-- o object declaration
-- r renaming declaration
-- i generic instantiation
- -- C CASE statement (from CASE through end of expression)
+ -- A ACCEPT statement (from ACCEPT to end of parameter profile)
+ -- C CASE statement (from CASE to end of expression)
-- E EXIT statement
- -- F FOR loop (from FOR through end of iteration scheme)
- -- I IF statement (from IF through end of condition)
+ -- F FOR loop (from FOR to end of iteration scheme)
+ -- I IF statement (from IF to end of condition)
-- P[name:] PRAGMA with the indicated name
-- p[name:] disabled PRAGMA with the indicated name
-- R extended RETURN statement
- -- W WHILE loop statement (from WHILE through end of condition)
+ -- S SELECT statement
+ -- W WHILE loop statement (from WHILE to end of condition)
-- Note: for I and W, condition above is in the RM syntax sense (this
-- condition is a decision in SCO terminology).
diff --git a/gcc/ada/seh_init.c b/gcc/ada/seh_init.c
index fa5310ffe71..772dab0aa84 100644
--- a/gcc/ada/seh_init.c
+++ b/gcc/ada/seh_init.c
@@ -68,20 +68,21 @@ extern void Raise_From_Signal_Handler (struct Exception_Data *, const char *);
#include <windows.h>
#include <excpt.h>
+/* Prototypes. */
extern void _global_unwind2 (void *);
EXCEPTION_DISPOSITION __gnat_SEH_error_handler
(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
-EXCEPTION_DISPOSITION
-__gnat_SEH_error_handler (struct _EXCEPTION_RECORD* ExceptionRecord,
- void *EstablisherFrame,
- struct _CONTEXT* ContextRecord ATTRIBUTE_UNUSED,
- void *DispatcherContext ATTRIBUTE_UNUSED)
-{
- struct Exception_Data *exception;
- const char *msg;
+struct Exception_Data *
+__gnat_map_SEH (EXCEPTION_RECORD* ExceptionRecord, const char **msg);
+/* Convert an SEH exception to an Ada one. Return the exception ID
+ and set MSG with the corresponding message. */
+
+struct Exception_Data *
+__gnat_map_SEH (EXCEPTION_RECORD* ExceptionRecord, const char **msg)
+{
switch (ExceptionRecord->ExceptionCode)
{
case EXCEPTION_ACCESS_VIOLATION:
@@ -92,93 +93,97 @@ __gnat_SEH_error_handler (struct _EXCEPTION_RECORD* ExceptionRecord,
|| IsBadCodePtr
((void *)(ExceptionRecord->ExceptionInformation[1] + 4096)))
{
- exception = &program_error;
- msg = "EXCEPTION_ACCESS_VIOLATION";
+ *msg = "EXCEPTION_ACCESS_VIOLATION";
+ return &program_error;
}
else
{
/* otherwise it is a stack overflow */
- exception = &storage_error;
- msg = "stack overflow or erroneous memory access";
+ *msg = "stack overflow or erroneous memory access";
+ return &storage_error;
}
- break;
case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
- exception = &constraint_error;
- msg = "EXCEPTION_ARRAY_BOUNDS_EXCEEDED";
- break;
+ *msg = "EXCEPTION_ARRAY_BOUNDS_EXCEEDED";
+ return &constraint_error;
case EXCEPTION_DATATYPE_MISALIGNMENT:
- exception = &constraint_error;
- msg = "EXCEPTION_DATATYPE_MISALIGNMENT";
- break;
+ *msg = "EXCEPTION_DATATYPE_MISALIGNMENT";
+ return &constraint_error;
case EXCEPTION_FLT_DENORMAL_OPERAND:
- exception = &constraint_error;
- msg = "EXCEPTION_FLT_DENORMAL_OPERAND";
- break;
+ *msg = "EXCEPTION_FLT_DENORMAL_OPERAND";
+ return &constraint_error;
case EXCEPTION_FLT_DIVIDE_BY_ZERO:
- exception = &constraint_error;
- msg = "EXCEPTION_FLT_DENORMAL_OPERAND";
- break;
+ *msg = "EXCEPTION_FLT_DENORMAL_OPERAND";
+ return &constraint_error;
case EXCEPTION_FLT_INVALID_OPERATION:
- exception = &constraint_error;
- msg = "EXCEPTION_FLT_INVALID_OPERATION";
- break;
+ *msg = "EXCEPTION_FLT_INVALID_OPERATION";
+ return &constraint_error;
case EXCEPTION_FLT_OVERFLOW:
- exception = &constraint_error;
- msg = "EXCEPTION_FLT_OVERFLOW";
- break;
+ *msg = "EXCEPTION_FLT_OVERFLOW";
+ return &constraint_error;
case EXCEPTION_FLT_STACK_CHECK:
- exception = &program_error;
- msg = "EXCEPTION_FLT_STACK_CHECK";
- break;
+ *msg = "EXCEPTION_FLT_STACK_CHECK";
+ return &program_error;
case EXCEPTION_FLT_UNDERFLOW:
- exception = &constraint_error;
- msg = "EXCEPTION_FLT_UNDERFLOW";
- break;
+ *msg = "EXCEPTION_FLT_UNDERFLOW";
+ return &constraint_error;
case EXCEPTION_INT_DIVIDE_BY_ZERO:
- exception = &constraint_error;
- msg = "EXCEPTION_INT_DIVIDE_BY_ZERO";
- break;
+ *msg = "EXCEPTION_INT_DIVIDE_BY_ZERO";
+ return &constraint_error;
case EXCEPTION_INT_OVERFLOW:
- exception = &constraint_error;
- msg = "EXCEPTION_INT_OVERFLOW";
- break;
+ *msg = "EXCEPTION_INT_OVERFLOW";
+ return &constraint_error;
case EXCEPTION_INVALID_DISPOSITION:
- exception = &program_error;
- msg = "EXCEPTION_INVALID_DISPOSITION";
- break;
+ *msg = "EXCEPTION_INVALID_DISPOSITION";
+ return &program_error;
case EXCEPTION_NONCONTINUABLE_EXCEPTION:
- exception = &program_error;
- msg = "EXCEPTION_NONCONTINUABLE_EXCEPTION";
- break;
+ *msg = "EXCEPTION_NONCONTINUABLE_EXCEPTION";
+ return &program_error;
case EXCEPTION_PRIV_INSTRUCTION:
- exception = &program_error;
- msg = "EXCEPTION_PRIV_INSTRUCTION";
- break;
+ *msg = "EXCEPTION_PRIV_INSTRUCTION";
+ return &program_error;
case EXCEPTION_SINGLE_STEP:
- exception = &program_error;
- msg = "EXCEPTION_SINGLE_STEP";
- break;
+ *msg = "EXCEPTION_SINGLE_STEP";
+ return &program_error;
case EXCEPTION_STACK_OVERFLOW:
- exception = &storage_error;
- msg = "EXCEPTION_STACK_OVERFLOW";
- break;
+ *msg = "EXCEPTION_STACK_OVERFLOW";
+ return &storage_error;
- default:
+ default:
+ *msg = NULL;
+ return NULL;
+ }
+}
+
+#if !(defined (_WIN64) && defined (__SEH__))
+
+EXCEPTION_DISPOSITION
+__gnat_SEH_error_handler (struct _EXCEPTION_RECORD* ExceptionRecord,
+ void *EstablisherFrame ATTRIBUTE_UNUSED,
+ struct _CONTEXT* ContextRecord ATTRIBUTE_UNUSED,
+ void *DispatcherContext ATTRIBUTE_UNUSED)
+{
+ struct Exception_Data *exception;
+ const char *msg;
+
+ exception = __gnat_map_SEH (ExceptionRecord, &msg);
+
+ if (exception == NULL)
+ {
exception = &program_error;
msg = "unhandled signal";
}
@@ -195,6 +200,7 @@ __gnat_SEH_error_handler (struct _EXCEPTION_RECORD* ExceptionRecord,
Raise_From_Signal_Handler (exception, msg);
return 0; /* This is never reached, avoid compiler warning */
}
+#endif /* !(defined (_WIN64) && defined (__SEH__)) */
#if defined (_WIN64)
/* On x86_64 windows exception mechanism is no more based on a chained list
diff --git a/gcc/ada/sem.adb b/gcc/ada/sem.adb
index 352665af23f..46fd546fa76 100644
--- a/gcc/ada/sem.adb
+++ b/gcc/ada/sem.adb
@@ -722,20 +722,20 @@ package body Sem is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Analyze (N);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Analyze (N);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Analyze;
@@ -761,20 +761,20 @@ package body Sem is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Analyze_List (L);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Analyze_List (L);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Analyze_List;
@@ -1022,20 +1022,20 @@ package body Sem is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Insert_After_And_Analyze (N, M);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Insert_After_And_Analyze (N, M);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Insert_After_And_Analyze;
@@ -1082,20 +1082,20 @@ package body Sem is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Insert_Before_And_Analyze (N, M);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Insert_Before_And_Analyze (N, M);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Insert_Before_And_Analyze;
@@ -1141,20 +1141,20 @@ package body Sem is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Insert_List_After_And_Analyze (N, L);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Insert_List_After_And_Analyze (N, L);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Insert_List_After_And_Analyze;
@@ -1199,20 +1199,20 @@ package body Sem is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Insert_List_Before_And_Analyze (N, L);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Insert_List_Before_And_Analyze (N, L);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Insert_List_Before_And_Analyze;
@@ -1264,9 +1264,9 @@ package body Sem is
-- the All_Checks flag.
if C in Predefined_Check_Id then
- return Scope_Suppress (C);
+ return Scope_Suppress.Suppress (C);
else
- return Scope_Suppress (All_Checks);
+ return Scope_Suppress.Suppress (All_Checks);
end if;
end Is_Check_Suppressed;
diff --git a/gcc/ada/sem.ads b/gcc/ada/sem.ads
index 00babf3b371..00bce6969b6 100644
--- a/gcc/ada/sem.ads
+++ b/gcc/ada/sem.ads
@@ -310,8 +310,8 @@ package Sem is
-- that are applicable to all entities. A similar search is needed for any
-- non-predefined check even if no specific entity is involved.
- Scope_Suppress : Suppress_Array := Suppress_Options;
- -- This array contains the current scope based settings of the suppress
+ Scope_Suppress : Suppress_Record := Suppress_Options;
+ -- This variable contains the current scope based settings of the suppress
-- switches. It is initialized from the options as shown, and then modified
-- by pragma Suppress. On entry to each scope, the current setting is saved
-- the scope stack, and then restored on exit from the scope. This record
@@ -449,7 +449,7 @@ package Sem is
-- Pointer to name of last subprogram body in this scope. Used for
-- testing proper alpha ordering of subprogram bodies in scope.
- Save_Scope_Suppress : Suppress_Array;
+ Save_Scope_Suppress : Suppress_Record;
-- Save contents of Scope_Suppress on entry
Save_Local_Suppress_Stack_Top : Suppress_Stack_Entry_Ptr;
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index a5d7bee3212..737ede23845 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -2215,13 +2215,11 @@ package body Sem_Attr is
Attribute_Variable_Indexing =>
Error_Msg_N ("illegal attribute", N);
- -- Attributes related to Ada 2012 aspects. Attribute definition clause
- -- exists for these, but they cannot be queried.
+ -- Internal attributes used to deal with Ada 2012 delayed aspects. These
+ -- were already rejected by the parser. Thus they shouldn't appear here.
- when Attribute_CPU |
- Attribute_Dispatching_Domain |
- Attribute_Interrupt_Priority =>
- Error_Msg_N ("illegal attribute", N);
+ when Internal_Attribute_Id =>
+ raise Program_Error;
------------------
-- Abort_Signal --
@@ -2575,6 +2573,15 @@ package body Sem_Attr is
Set_Etype (N, RTE (RE_AST_Handler));
end AST_Entry;
+ -----------------------------
+ -- Atomic_Always_Lock_Free --
+ -----------------------------
+
+ when Attribute_Atomic_Always_Lock_Free =>
+ Check_E0;
+ Check_Type;
+ Set_Etype (N, Standard_Boolean);
+
----------
-- Base --
----------
@@ -3296,12 +3303,7 @@ package body Sem_Attr is
when Attribute_Fast_Math =>
Check_Standard_Prefix;
-
- if Opt.Fast_Math then
- Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
- else
- Rewrite (N, New_Occurrence_Of (Standard_False, Loc));
- end if;
+ Rewrite (N, New_Occurrence_Of (Boolean_Literals (Fast_Math), Loc));
-----------
-- First --
@@ -4033,14 +4035,21 @@ package body Sem_Attr is
-- an entity in the enclosing subprogram. If it is a component of
-- a formal its expansion might generate actual subtypes that may
-- be referenced in an inner context, and which must be elaborated
- -- within the subprogram itself. As a result we create a
- -- declaration for it and insert it at the start of the enclosing
- -- subprogram. This is properly an expansion activity but it has
- -- to be performed now to prevent out-of-order issues.
-
- if Nkind (P) = N_Selected_Component
- and then Has_Discriminants (Etype (Prefix (P)))
- then
+ -- within the subprogram itself. If the prefix includes a function
+ -- call it may involve finalization actions that should only be
+ -- inserted when the attribute has been rewritten as a declarations.
+ -- As a result, if the prefix is not a simple name we create
+ -- a declaration for it now, and insert it at the start of the
+ -- enclosing subprogram. This is properly an expansion activity
+ -- but it has to be performed now to prevent out-of-order issues.
+
+ -- This expansion is both harmful and not needed in Alfa mode, since
+ -- the formal verification backend relies on the types of nodes
+ -- (hence is not robust w.r.t. a change to base type here), and does
+ -- not suffer from the out-of-order issue described above. Thus, this
+ -- expansion is skipped in Alfa mode.
+
+ if not Is_Entity_Name (P) and then not Alfa_Mode then
P_Type := Base_Type (P_Type);
Set_Etype (N, P_Type);
Set_Etype (P, P_Type);
@@ -4480,9 +4489,9 @@ package body Sem_Attr is
Check_Decimal_Fixed_Point_Type;
Set_Etype (N, P_Base_Type);
- -- Because the context is universal_real (3.5.10(12)) it is a legal
- -- context for a universal fixed expression. This is the only
- -- attribute whose functional description involves U_R.
+ -- Because the context is universal_real (3.5.10(12)) it is a
+ -- legal context for a universal fixed expression. This is the
+ -- only attribute whose functional description involves U_R.
if Etype (E1) = Universal_Fixed then
declare
@@ -4574,8 +4583,9 @@ package body Sem_Attr is
Check_E0;
Check_Type;
- if not Is_Record_Type (P_Type) then
- Error_Attr_P ("prefix of % attribute must be record type");
+ if not Is_Record_Type (P_Type) or else Is_Array_Type (P_Type) then
+ Error_Attr_P
+ ("prefix of % attribute must be record or array type");
end if;
if Bytes_Big_Endian xor Reverse_Storage_Order (P_Type) then
@@ -4776,8 +4786,8 @@ package body Sem_Attr is
Validate_Remote_Access_To_Class_Wide_Type (N);
- -- The prefix is allowed to be an implicit dereference
- -- of an access value designating a task.
+ -- The prefix is allowed to be an implicit dereference of an
+ -- access value designating a task.
else
Check_Task_Prefix;
@@ -5870,7 +5880,7 @@ package body Sem_Attr is
begin
if No (E1) then
if C in Predefined_Check_Id then
- R := Scope_Suppress (C);
+ R := Scope_Suppress.Suppress (C);
else
R := Is_Check_Suppressed (Empty, C);
end if;
@@ -5879,11 +5889,7 @@ package body Sem_Attr is
R := Is_Check_Suppressed (Entity (E1), C);
end if;
- if R then
- Rewrite (N, New_Occurrence_Of (Standard_False, Loc));
- else
- Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
- end if;
+ Rewrite (N, New_Occurrence_Of (Boolean_Literals (not R), Loc));
end;
end if;
@@ -5959,6 +5965,13 @@ package body Sem_Attr is
return;
end if;
+ -- For Lock_Free, we apply the attribute to the type of the object.
+ -- This is allowed since we have already verified that the type is a
+ -- protected type.
+
+ elsif Id = Attribute_Lock_Free then
+ P_Entity := Etype (P);
+
-- No other attributes for objects are folded
else
@@ -6024,10 +6037,13 @@ package body Sem_Attr is
-- Definite must be folded if the prefix is not a generic type,
-- that is to say if we are within an instantiation. Same processing
- -- applies to the GNAT attributes Has_Discriminants, Type_Class,
- -- Has_Tagged_Value, and Unconstrained_Array.
+ -- applies to the GNAT attributes Atomic_Always_Lock_Free,
+ -- Has_Discriminants, Lock_Free, Type_Class, Has_Tagged_Value, and
+ -- Unconstrained_Array.
- elsif (Id = Attribute_Definite
+ elsif (Id = Attribute_Atomic_Always_Lock_Free
+ or else
+ Id = Attribute_Definite
or else
Id = Attribute_Has_Access_Values
or else
@@ -6035,6 +6051,8 @@ package body Sem_Attr is
or else
Id = Attribute_Has_Tagged_Values
or else
+ Id = Attribute_Lock_Free
+ or else
Id = Attribute_Type_Class
or else
Id = Attribute_Unconstrained_Array
@@ -6139,16 +6157,19 @@ package body Sem_Attr is
-- since we can't do anything with unconstrained arrays. In addition,
-- only the First, Last and Length attributes are possibly static.
- -- Definite, Has_Access_Values, Has_Discriminants, Has_Tagged_Values,
- -- Type_Class, and Unconstrained_Array are again exceptions, because
- -- they apply as well to unconstrained types.
+ -- Atomic_Always_Lock_Free, Definite, Has_Access_Values,
+ -- Has_Discriminants, Has_Tagged_Values, Lock_Free, Type_Class, and
+ -- Unconstrained_Array are again exceptions, because they apply as well
+ -- to unconstrained types.
-- In addition Component_Size is an exception since it is possibly
-- foldable, even though it is never static, and it does apply to
-- unconstrained arrays. Furthermore, it is essential to fold this
-- in the packed case, since otherwise the value will be incorrect.
- elsif Id = Attribute_Definite
+ elsif Id = Attribute_Atomic_Always_Lock_Free
+ or else
+ Id = Attribute_Definite
or else
Id = Attribute_Has_Access_Values
or else
@@ -6156,6 +6177,8 @@ package body Sem_Attr is
or else
Id = Attribute_Has_Tagged_Values
or else
+ Id = Attribute_Lock_Free
+ or else
Id = Attribute_Type_Class
or else
Id = Attribute_Unconstrained_Array
@@ -6332,11 +6355,12 @@ package body Sem_Attr is
Attribute_Iterator_Element |
Attribute_Variable_Indexing => null;
- -- Atributes related to Ada 2012 aspects
+ -- Internal attributes used to deal with Ada 2012 delayed aspects.
+ -- These were already rejected by the parser. Thus they shouldn't
+ -- appear here.
- when Attribute_CPU |
- Attribute_Dispatching_Domain |
- Attribute_Interrupt_Priority => null;
+ when Internal_Attribute_Id =>
+ raise Program_Error;
--------------
-- Adjacent --
@@ -6383,6 +6407,30 @@ package body Sem_Attr is
null;
end if;
+ -----------------------------
+ -- Atomic_Always_Lock_Free --
+ -----------------------------
+
+ -- Atomic_Always_Lock_Free attribute is a Boolean, thus no need to fold
+ -- here.
+
+ when Attribute_Atomic_Always_Lock_Free => Atomic_Always_Lock_Free :
+ declare
+ V : constant Entity_Id :=
+ Boolean_Literals
+ (Support_Atomic_Primitives_On_Target
+ and then Support_Atomic_Primitives (P_Type));
+
+ begin
+ Rewrite (N, New_Occurrence_Of (V, Loc));
+
+ -- Analyze and resolve as boolean. Note that this attribute is a
+ -- static attribute in GNAT.
+
+ Analyze_And_Resolve (N, Standard_Boolean);
+ Static := True;
+ end Atomic_Always_Lock_Free;
+
---------
-- Bit --
---------
@@ -6803,10 +6851,18 @@ package body Sem_Attr is
-- Lock_Free --
---------------
- -- Lock_Free attribute is a Boolean, thus no need to fold here.
+ when Attribute_Lock_Free => Lock_Free : declare
+ V : constant Entity_Id := Boolean_Literals (Uses_Lock_Free (P_Type));
- when Attribute_Lock_Free =>
- null;
+ begin
+ Rewrite (N, New_Occurrence_Of (V, Loc));
+
+ -- Analyze and resolve as boolean. Note that this attribute is a
+ -- static attribute in GNAT.
+
+ Analyze_And_Resolve (N, Standard_Boolean);
+ Static := True;
+ end Lock_Free;
----------
-- Last --
diff --git a/gcc/ada/sem_aux.adb b/gcc/ada/sem_aux.adb
index d729519003e..bb24fc2e21a 100644
--- a/gcc/ada/sem_aux.adb
+++ b/gcc/ada/sem_aux.adb
@@ -489,6 +489,40 @@ package body Sem_Aux is
return Empty;
end Get_Rep_Item;
+ function Get_Rep_Item
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Node_Id
+ is
+ Nam1_Item : constant Node_Id := Get_Rep_Item (E, Nam1, Check_Parents);
+ Nam2_Item : constant Node_Id := Get_Rep_Item (E, Nam2, Check_Parents);
+
+ N : Node_Id;
+
+ begin
+ -- Check both Nam1_Item and Nam2_Item are present
+
+ if No (Nam1_Item) then
+ return Nam2_Item;
+ elsif No (Nam2_Item) then
+ return Nam1_Item;
+ end if;
+
+ -- Return the first node encountered in the list
+
+ N := First_Rep_Item (E);
+ while Present (N) loop
+ if N = Nam1_Item or else N = Nam2_Item then
+ return N;
+ end if;
+
+ Next_Rep_Item (N);
+ end loop;
+
+ return Empty;
+ end Get_Rep_Item;
+
--------------------
-- Get_Rep_Pragma --
--------------------
@@ -501,31 +535,41 @@ package body Sem_Aux is
N : Node_Id;
begin
- N := First_Rep_Item (E);
- while Present (N) loop
- if Nkind (N) = N_Pragma
- and then
- (Pragma_Name (N) = Nam
- or else (Nam = Name_Interrupt_Priority
- and then Pragma_Name (N) = Name_Priority))
- then
- if Check_Parents then
- return N;
+ N := Get_Rep_Item (E, Nam, Check_Parents);
- -- If Check_Parents is False, return N if the pragma doesn't
- -- appear in the Rep_Item chain of the parent.
+ if Present (N) and then Nkind (N) = N_Pragma then
+ return N;
+ end if;
- else
- declare
- Par : constant Entity_Id := Nearest_Ancestor (E);
- -- This node represents the parent type of type E (if any)
+ return Empty;
+ end Get_Rep_Pragma;
- begin
- if No (Par) or else not Present_In_Rep_Item (Par, N) then
- return N;
- end if;
- end;
- end if;
+ function Get_Rep_Pragma
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Node_Id
+ is
+ Nam1_Item : constant Node_Id := Get_Rep_Pragma (E, Nam1, Check_Parents);
+ Nam2_Item : constant Node_Id := Get_Rep_Pragma (E, Nam2, Check_Parents);
+
+ N : Node_Id;
+
+ begin
+ -- Check both Nam1_Item and Nam2_Item are present
+
+ if No (Nam1_Item) then
+ return Nam2_Item;
+ elsif No (Nam2_Item) then
+ return Nam1_Item;
+ end if;
+
+ -- Return the first node encountered in the list
+
+ N := First_Rep_Item (E);
+ while Present (N) loop
+ if N = Nam1_Item or else N = Nam2_Item then
+ return N;
end if;
Next_Rep_Item (N);
@@ -547,6 +591,16 @@ package body Sem_Aux is
return Present (Get_Rep_Item (E, Nam, Check_Parents));
end Has_Rep_Item;
+ function Has_Rep_Item
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Boolean
+ is
+ begin
+ return Present (Get_Rep_Item (E, Nam1, Nam2, Check_Parents));
+ end Has_Rep_Item;
+
--------------------
-- Has_Rep_Pragma --
--------------------
@@ -560,6 +614,16 @@ package body Sem_Aux is
return Present (Get_Rep_Pragma (E, Nam, Check_Parents));
end Has_Rep_Pragma;
+ function Has_Rep_Pragma
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Boolean
+ is
+ begin
+ return Present (Get_Rep_Pragma (E, Nam1, Nam2, Check_Parents));
+ end Has_Rep_Pragma;
+
-------------------------------
-- Initialization_Suppressed --
-------------------------------
diff --git a/gcc/ada/sem_aux.ads b/gcc/ada/sem_aux.ads
index bf09e99ba5a..fafd70f7f45 100644
--- a/gcc/ada/sem_aux.ads
+++ b/gcc/ada/sem_aux.ads
@@ -168,18 +168,47 @@ package Sem_Aux is
-- otherwise Empty is returned. A special case is that when Nam is
-- Name_Priority, the call will also find Interrupt_Priority.
+ function Get_Rep_Item
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Node_Id;
+ -- Searches the Rep_Item chain for a given entity E, for an instance of a
+ -- rep item (pragma, attribute definition clause, or aspect specification)
+ -- whose name matches one of the given names Nam1 or Nam2. If Check_Parents
+ -- is False then it only returns rep item that has been directly specified
+ -- for E (and not inherited from its parents, if any). If one is found, it
+ -- is returned, otherwise Empty is returned. A special case is that when
+ -- one of the given names is Name_Priority, the call will also find
+ -- Interrupt_Priority.
+
function Get_Rep_Pragma
(E : Entity_Id;
Nam : Name_Id;
Check_Parents : Boolean := True) return Node_Id;
- -- Searches the Rep_Item chain for a given entity E, for an instance
- -- of a representation pragma whose name matches the given name Nam. If
+ -- Searches the Rep_Item chain for a given entity E, for an instance of a
+ -- representation pragma whose name matches the given name Nam. If
-- Check_Parents is False then it only returns representation pragma that
-- has been directly specified for E (and not inherited from its parents,
- -- if any). If one is found, it is returned, otherwise Empty is returned. A
- -- special case is that when Nam is Name_Priority, the call will also find
+ -- if any). If one is found and if it is the first rep item in the list
+ -- that matches Nam, it is returned, otherwise Empty is returned. A special
+ -- case is that when Nam is Name_Priority, the call will also find
-- Interrupt_Priority.
+ function Get_Rep_Pragma
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Node_Id;
+ -- Searches the Rep_Item chain for a given entity E, for an instance of a
+ -- representation pragma whose name matches one of the given names Nam1 or
+ -- Nam2. If Check_Parents is False then it only returns representation
+ -- pragma that has been directly specified for E (and not inherited from
+ -- its parents, if any). If one is found and if it is the first rep item in
+ -- the list that matches one of the given names, it is returned, otherwise
+ -- Empty is returned. A special case is that when one of the given names is
+ -- Name_Priority, the call will also find Interrupt_Priority.
+
function Has_Rep_Item
(E : Entity_Id;
Nam : Name_Id;
@@ -191,6 +220,18 @@ package Sem_Aux is
-- from its parents, if any). If found then True is returned, otherwise
-- False indicates that no matching entry was found.
+ function Has_Rep_Item
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Boolean;
+ -- Searches the Rep_Item chain for the given entity E, for an instance of a
+ -- rep item (pragma, attribute definition clause, or aspect specification)
+ -- with the given names Nam1 or Nam2. If Check_Parents is False then it
+ -- only checks for a rep item that has been directly specified for E (and
+ -- not inherited from its parents, if any). If found then True is returned,
+ -- otherwise False indicates that no matching entry was found.
+
function Has_Rep_Pragma
(E : Entity_Id;
Nam : Name_Id;
@@ -199,8 +240,21 @@ package Sem_Aux is
-- representation pragma with the given name Nam. If Check_Parents is False
-- then it only checks for a representation pragma that has been directly
-- specified for E (and not inherited from its parents, if any). If found
- -- then True is returned, otherwise False indicates that no matching entry
- -- was found.
+ -- and if it is the first rep item in the list that matches Nam then True
+ -- is returned, otherwise False indicates that no matching entry was found.
+
+ function Has_Rep_Pragma
+ (E : Entity_Id;
+ Nam1 : Name_Id;
+ Nam2 : Name_Id;
+ Check_Parents : Boolean := True) return Boolean;
+ -- Searches the Rep_Item chain for the given entity E, for an instance of a
+ -- representation pragma with the given names Nam1 or Nam2. If
+ -- Check_Parents is False then it only checks for a rep item that has been
+ -- directly specified for E (and not inherited from its parents, if any).
+ -- If found and if it is the first rep item in the list that matches one of
+ -- the given names then True is returned, otherwise False indicates that no
+ -- matching entry was found.
function In_Generic_Body (Id : Entity_Id) return Boolean;
-- Determine whether entity Id appears inside a generic body
diff --git a/gcc/ada/sem_case.adb b/gcc/ada/sem_case.adb
index 8fa307442a6..3dd3b617820 100644
--- a/gcc/ada/sem_case.adb
+++ b/gcc/ada/sem_case.adb
@@ -162,9 +162,7 @@ package body Sem_Case is
-- AI05-0188 : within an instance the non-others choices do not
-- have to belong to the actual subtype.
- if Ada_Version >= Ada_2012
- and then In_Instance
- then
+ if Ada_Version >= Ada_2012 and then In_Instance then
return;
end if;
@@ -714,7 +712,8 @@ package body Sem_Case is
-- Do not insert non static choices in the table to be sorted
elsif not Is_Static_Expression (Lo)
- or else not Is_Static_Expression (Hi)
+ or else
+ not Is_Static_Expression (Hi)
then
Process_Non_Static_Choice (Choice);
return;
@@ -727,12 +726,10 @@ package body Sem_Case is
Raises_CE := True;
return;
- -- AI05-0188 : within an instance the non-others choices do not
+ -- AI05-0188 : Within an instance the non-others choices do not
-- have to belong to the actual subtype.
- elsif Ada_Version >= Ada_2012
- and then In_Instance
- then
+ elsif Ada_Version >= Ada_2012 and then In_Instance then
return;
-- Otherwise we have an OK static choice
diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb
index e53645e45de..4d8b8ffc5d0 100644
--- a/gcc/ada/sem_cat.adb
+++ b/gcc/ada/sem_cat.adb
@@ -219,10 +219,15 @@ package body Sem_Cat is
then
null;
- -- Special case: Remote_Types can depend on Preelaborated per
- -- Ada 2005 AI 0206.
+ -- Special case: Remote_Types and Remote_Call_Interface declarations
+ -- can depend on a preelaborated unit via a private with_clause, per
+ -- AI05-0206.
- elsif Unit_Category = Remote_Types
+ elsif (Unit_Category = Remote_Types
+ or else
+ Unit_Category = Remote_Call_Interface)
+ and then Nkind (N) = N_With_Clause
+ and then Private_Present (N)
and then Is_Preelaborated (Depended_Entity)
then
null;
@@ -263,6 +268,18 @@ package body Sem_Cat is
then
return;
+ -- Dependence of Remote_Types or Remote_Call_Interface declaration
+ -- on a preelaborated unit with a normal with_clause.
+
+ elsif (Unit_Category = Remote_Types
+ or else
+ Unit_Category = Remote_Call_Interface)
+ and then Is_Preelaborated (Depended_Entity)
+ then
+ Error_Msg_NE
+ ("<must use private with clause for preelaborated unit& ",
+ N, Depended_Entity);
+
-- Subunit case
elsif Is_Subunit then
diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb
index 6ed11b87766..31e8e5564e5 100644
--- a/gcc/ada/sem_ch10.adb
+++ b/gcc/ada/sem_ch10.adb
@@ -1964,7 +1964,7 @@ package body Sem_Ch10 is
Num_Scopes : Int := 0;
Use_Clauses : array (1 .. Scope_Stack.Last) of Node_Id;
Enclosing_Child : Entity_Id := Empty;
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
Save_Cunit_Restrictions : constant Save_Cunit_Boolean_Restrictions :=
Cunit_Boolean_Restrictions_Save;
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index c4351fce11a..60edce32f2d 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -7068,6 +7068,8 @@ package body Sem_Ch12 is
D2 : Integer := 0;
P1 : Node_Id := N1;
P2 : Node_Id := N2;
+ T1 : Source_Ptr;
+ T2 : Source_Ptr;
-- Start of processing for Earlier
@@ -7208,19 +7210,21 @@ package body Sem_Ch12 is
-- At this point either both nodes came from source or we approximated
-- their source locations through neighbouring source statements.
+ T1 := Top_Level_Location (Sloc (P1));
+ T2 := Top_Level_Location (Sloc (P2));
+
-- When two nodes come from the same instance, they have identical top
-- level locations. To determine proper relation within the tree, check
-- their locations within the template.
- if Top_Level_Location (Sloc (P1)) = Top_Level_Location (Sloc (P2)) then
+ if T1 = T2 then
return Sloc (P1) < Sloc (P2);
-- The two nodes either come from unrelated instances or do not come
-- from instantiated code at all.
else
- return Top_Level_Location (Sloc (P1))
- < Top_Level_Location (Sloc (P2));
+ return T1 < T2;
end if;
end Earlier;
@@ -7852,9 +7856,9 @@ package body Sem_Ch12 is
(N : Node_Id;
F_Node : Node_Id)
is
- Inst : constant Entity_Id := Entity (F_Node);
Decl : Node_Id;
Decls : List_Id;
+ Inst : Entity_Id;
Par_N : Node_Id;
function Enclosing_Body (N : Node_Id) return Node_Id;
@@ -7921,9 +7925,18 @@ package body Sem_Ch12 is
begin
if not Is_List_Member (F_Node) then
+ Decl := N;
Decls := List_Containing (N);
+ Inst := Entity (F_Node);
Par_N := Parent (Decls);
- Decl := N;
+
+ -- When processing a subprogram instantiation, utilize the actual
+ -- subprogram instantiation rather than its package wrapper as it
+ -- carries all the context information.
+
+ if Is_Wrapper_Package (Inst) then
+ Inst := Related_Instance (Inst);
+ end if;
-- If this is a package instance, check whether the generic is
-- declared in a previous instance and the current instance is
@@ -10811,8 +10824,8 @@ package body Sem_Ch12 is
pragma Assert (Present (Ancestor));
- -- the ancestor itself may be a previous formal that
- -- has been instantiated.
+ -- The ancestor itself may be a previous formal that has been
+ -- instantiated.
Ancestor := Get_Instance_Of (Ancestor);
@@ -10821,6 +10834,17 @@ package body Sem_Ch12 is
Get_Instance_Of (Base_Type (Get_Instance_Of (A_Gen_T)));
end if;
+ -- An unusual case: the actual is a type declared in a parent unit,
+ -- but is not a formal type so there is no instance_of for it.
+ -- Retrieve it by analyzing the record extension.
+
+ elsif Is_Child_Unit (Scope (A_Gen_T))
+ and then In_Open_Scopes (Scope (Act_T))
+ and then Is_Generic_Instance (Scope (Act_T))
+ then
+ Analyze (Subtype_Mark (Def));
+ Ancestor := Entity (Subtype_Mark (Def));
+
else
Ancestor := Get_Instance_Of (Etype (Base_Type (A_Gen_T)));
end if;
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index e177f930f6b..fff9bded522 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -48,6 +48,7 @@ with Sem_Ch6; use Sem_Ch6;
with Sem_Ch8; use Sem_Ch8;
with Sem_Ch9; use Sem_Ch9;
with Sem_Dim; use Sem_Dim;
+with Sem_Disp; use Sem_Disp;
with Sem_Eval; use Sem_Eval;
with Sem_Res; use Sem_Res;
with Sem_Type; use Sem_Type;
@@ -850,23 +851,20 @@ package body Sem_Ch13 is
Set_Is_Delayed_Aspect (Prag);
Set_Parent (Prag, ASN);
end if;
-
end Make_Pragma_From_Boolean_Aspect;
-- Start of processing for Analyze_Aspects_At_Freeze_Point
begin
- -- Must be declared in current scope. This is need for a generic
- -- context.
+ -- Must be visible in current scope.
- if Scope (E) /= Current_Scope then
+ if not Scope_Within_Or_Same (Current_Scope, Scope (E)) then
return;
end if;
-- Look for aspect specification entries for this entity
ASN := First_Rep_Item (E);
-
while Present (ASN) loop
if Nkind (ASN) = N_Aspect_Specification
and then Entity (ASN) = E
@@ -875,6 +873,7 @@ package body Sem_Ch13 is
A_Id := Get_Aspect_Id (Chars (Identifier (ASN)));
case A_Id is
+
-- For aspects whose expression is an optional Boolean, make
-- the corresponding pragma at the freezing point.
@@ -889,7 +888,8 @@ package body Sem_Ch13 is
Aspect_Default_Component_Value =>
Analyze_Aspect_Default_Value (ASN);
- when others => null;
+ when others =>
+ null;
end case;
Ritem := Aspect_Rep_Item (ASN);
@@ -1098,29 +1098,7 @@ package body Sem_Ch13 is
("aspect `%''Class` for & previously given#",
Id, E);
end if;
-
- -- Case of Pre and Pre'Class both specified
-
- elsif Nam = Name_Pre then
- if Class_Present (Aspect) then
- Error_Msg_NE
- ("aspect `Pre''Class` for & is not allowed here",
- Id, E);
- Error_Msg_NE
- ("\since aspect `Pre` previously given#",
- Id, E);
-
- else
- Error_Msg_NE
- ("aspect `Pre` for & is not allowed here",
- Id, E);
- Error_Msg_NE
- ("\since aspect `Pre''Class` previously given#",
- Id, E);
- end if;
end if;
-
- -- Allowed case of X and X'Class both specified
end if;
Next (Anod);
@@ -1171,17 +1149,14 @@ package body Sem_Ch13 is
Aspect_Bit_Order |
Aspect_Component_Size |
Aspect_Constant_Indexing |
- Aspect_CPU |
Aspect_Default_Iterator |
Aspect_Dispatching_Domain |
Aspect_External_Tag |
Aspect_Input |
- Aspect_Interrupt_Priority |
Aspect_Iterator_Element |
Aspect_Machine_Radix |
Aspect_Object_Size |
Aspect_Output |
- Aspect_Priority |
Aspect_Read |
Aspect_Scalar_Storage_Order |
Aspect_Size |
@@ -1362,6 +1337,29 @@ package body Sem_Ch13 is
Make_Identifier (Loc, P_Name));
end;
+ -- The following three aspects can be specified for a
+ -- subprogram body, in which case we generate pragmas for them
+ -- and insert them ahead of local declarations, rather than
+ -- after the body.
+
+ when Aspect_CPU |
+ Aspect_Interrupt_Priority |
+ Aspect_Priority =>
+ if Nkind (N) = N_Subprogram_Body then
+ Aitem :=
+ Make_Pragma (Loc,
+ Pragma_Argument_Associations =>
+ New_List (Relocate_Node (Expr)),
+ Pragma_Identifier =>
+ Make_Identifier (Sloc (Id), Chars (Id)));
+ else
+ Aitem :=
+ Make_Attribute_Definition_Clause (Loc,
+ Name => Ent,
+ Chars => Chars (Id),
+ Expression => Relocate_Node (Expr));
+ end if;
+
when Aspect_Warnings =>
-- Construct the pragma
@@ -1650,6 +1648,7 @@ package body Sem_Ch13 is
if A_Id = Aspect_Lock_Free then
if Ekind (E) /= E_Protected_Type then
+ Error_Msg_Name_1 := Nam;
Error_Msg_N
("aspect % only applies to a protected object",
Aspect);
@@ -1746,7 +1745,8 @@ package body Sem_Ch13 is
-- In the context of a compilation unit, we directly put the
-- pragma in the Pragmas_After list of the
- -- N_Compilation_Unit_Aux node. No delay is required here.
+ -- N_Compilation_Unit_Aux node (No delay is required here)
+ -- except for aspects on a subprogram body (see below).
if Nkind (Parent (N)) = N_Compilation_Unit
and then (Present (Aitem) or else Is_Boolean_Aspect (Aspect))
@@ -1778,11 +1778,25 @@ package body Sem_Ch13 is
end if;
end if;
- if No (Pragmas_After (Aux)) then
- Set_Pragmas_After (Aux, Empty_List);
+ -- If the aspect is on a subprogram body (relevant aspects
+ -- are Inline and Priority), add the pragma in front of
+ -- the declarations.
+
+ if Nkind (N) = N_Subprogram_Body then
+ if No (Declarations (N)) then
+ Set_Declarations (N, New_List);
+ end if;
+
+ Prepend (Aitem, Declarations (N));
+
+ else
+ if No (Pragmas_After (Aux)) then
+ Set_Pragmas_After (Aux, Empty_List);
+ end if;
+
+ Append (Aitem, Pragmas_After (Aux));
end if;
- Append (Aitem, Pragmas_After (Aux));
goto Continue;
end;
end if;
@@ -1852,8 +1866,8 @@ package body Sem_Ch13 is
Chars => Name_Address,
Expression => Expression (N)));
- -- We preserve Comes_From_Source, since logically the clause still
- -- comes from the source program even though it is changed in form.
+ -- We preserve Comes_From_Source, since logically the clause still comes
+ -- from the source program even though it is changed in form.
Set_Comes_From_Source (N, CS);
@@ -2420,11 +2434,12 @@ package body Sem_Ch13 is
return;
-- Must be declared in current scope or in case of an aspect
- -- specification, must be the current scope.
+ -- specification, must be visible in current scope.
elsif Scope (Ent) /= Current_Scope
- and then (not From_Aspect_Specification (N)
- or else Ent /= Current_Scope)
+ and then
+ not (From_Aspect_Specification (N)
+ and then Scope_Within_Or_Same (Current_Scope, Scope (Ent)))
then
Error_Msg_N ("entity must be declared in this scope", Nam);
return;
@@ -2671,8 +2686,8 @@ package body Sem_Ch13 is
-- Legality checks on the address clause for initialized
-- objects is deferred until the freeze point, because
- -- a subsequent pragma might indicate that the object is
- -- imported and thus not initialized.
+ -- a subsequent pragma might indicate that the object
+ -- is imported and thus not initialized.
Set_Has_Delayed_Freeze (U_Ent);
@@ -3106,8 +3121,8 @@ package body Sem_Ch13 is
when Attribute_Implicit_Dereference =>
- -- Legality checks already performed at the point of
- -- the type declaration, aspect is not delayed.
+ -- Legality checks already performed at the point of the type
+ -- declaration, aspect is not delayed.
null;
@@ -3264,10 +3279,11 @@ package body Sem_Ch13 is
if From_Aspect_Specification (N) then
if not (Is_Protected_Type (U_Ent)
- or else Is_Task_Type (U_Ent))
+ or else Is_Task_Type (U_Ent)
+ or else Ekind (U_Ent) = E_Procedure)
then
Error_Msg_N
- ("Priority can only be defined for task and protected" &
+ ("Priority can only be defined for task and protected " &
"object",
Nam);
@@ -3312,10 +3328,10 @@ package body Sem_Ch13 is
when Attribute_Scalar_Storage_Order => Scalar_Storage_Order : declare
begin
- if not Is_Record_Type (U_Ent) then
+ if not (Is_Record_Type (U_Ent) or else Is_Array_Type (U_Ent)) then
Error_Msg_N
- ("Scalar_Storage_Order can only be defined for record type",
- Nam);
+ ("Scalar_Storage_Order can only be defined for "
+ & "record or array type", Nam);
elsif Duplicate_Clause then
null;
@@ -3332,7 +3348,7 @@ package body Sem_Ch13 is
else
if (Expr_Value (Expr) = 0) /= Bytes_Big_Endian then
- Set_Reverse_Storage_Order (U_Ent, True);
+ Set_Reverse_Storage_Order (Base_Type (U_Ent), True);
end if;
end if;
end if;
@@ -4344,6 +4360,46 @@ package body Sem_Ch13 is
end;
end if;
+ -- Check Ada derivation of CPP type
+
+ if Expander_Active
+ and then Tagged_Type_Expansion
+ and then Ekind (E) = E_Record_Type
+ and then Etype (E) /= E
+ and then Is_CPP_Class (Etype (E))
+ and then CPP_Num_Prims (Etype (E)) > 0
+ and then not Is_CPP_Class (E)
+ and then not Has_CPP_Constructors (Etype (E))
+ then
+ -- If the parent has C++ primitives but it has no constructor then
+ -- check that all the primitives are overridden in this derivation;
+ -- otherwise the constructor of the parent is needed to build the
+ -- dispatch table.
+
+ declare
+ Elmt : Elmt_Id;
+ Prim : Node_Id;
+
+ begin
+ Elmt := First_Elmt (Primitive_Operations (E));
+ while Present (Elmt) loop
+ Prim := Node (Elmt);
+
+ if not Is_Abstract_Subprogram (Prim)
+ and then No (Interface_Alias (Prim))
+ and then Find_Dispatching_Type (Ultimate_Alias (Prim)) /= E
+ then
+ Error_Msg_Name_1 := Chars (Etype (E));
+ Error_Msg_N
+ ("'C'P'P constructor required for parent type %", E);
+ exit;
+ end if;
+
+ Next_Elmt (Elmt);
+ end loop;
+ end;
+ end if;
+
Inside_Freezing_Actions := Inside_Freezing_Actions - 1;
-- If we have a type with predicates, build predicate function
@@ -6350,25 +6406,18 @@ package body Sem_Ch13 is
-- but Expression (Ident) is a preanalyzed copy of the expression,
-- preanalyzed just after the freeze point.
- begin
- -- Case of aspects Dimension, Dimension_System and Synchronization
-
- if A_Id = Aspect_Synchronization then
- return;
-
- -- Case of stream attributes, just have to compare entities. However,
- -- the expression is just a name (possibly overloaded), and there may
- -- be stream operations declared for unrelated types, so we just need
- -- to verify that one of these interpretations is the one available at
- -- at the freeze point.
+ procedure Check_Overloaded_Name;
+ -- For aspects whose expression is simply a name, this routine checks if
+ -- the name is overloaded or not. If so, it verifies there is an
+ -- interpretation that matches the entity obtained at the freeze point,
+ -- otherwise the compiler complains.
- elsif A_Id = Aspect_Input or else
- A_Id = Aspect_Output or else
- A_Id = Aspect_Read or else
- A_Id = Aspect_Write
- then
- Analyze (End_Decl_Expr);
+ ---------------------------
+ -- Check_Overloaded_Name --
+ ---------------------------
+ procedure Check_Overloaded_Name is
+ begin
if not Is_Overloaded (End_Decl_Expr) then
Err := Entity (End_Decl_Expr) /= Entity (Freeze_Expr);
@@ -6391,6 +6440,29 @@ package body Sem_Ch13 is
end loop;
end;
end if;
+ end Check_Overloaded_Name;
+
+ -- Start of processing for Check_Aspect_At_End_Of_Declarations
+
+ begin
+ -- Case of aspects Dimension, Dimension_System and Synchronization
+
+ if A_Id = Aspect_Synchronization then
+ return;
+
+ -- Case of stream attributes, just have to compare entities. However,
+ -- the expression is just a name (possibly overloaded), and there may
+ -- be stream operations declared for unrelated types, so we just need
+ -- to verify that one of these interpretations is the one available at
+ -- at the freeze point.
+
+ elsif A_Id = Aspect_Input or else
+ A_Id = Aspect_Output or else
+ A_Id = Aspect_Read or else
+ A_Id = Aspect_Write
+ then
+ Analyze (End_Decl_Expr);
+ Check_Overloaded_Name;
elsif A_Id = Aspect_Variable_Indexing or else
A_Id = Aspect_Constant_Indexing or else
@@ -6402,16 +6474,16 @@ package body Sem_Ch13 is
Set_Is_Frozen (Ent, False);
Analyze (End_Decl_Expr);
- Analyze (Aspect_Rep_Item (ASN));
Set_Is_Frozen (Ent, True);
-- If the end of declarations comes before any other freeze
-- point, the Freeze_Expr is not analyzed: no check needed.
- Err :=
- Analyzed (Freeze_Expr)
- and then not In_Instance
- and then Entity (End_Decl_Expr) /= Entity (Freeze_Expr);
+ if Analyzed (Freeze_Expr) and then not In_Instance then
+ Check_Overloaded_Name;
+ else
+ Err := False;
+ end if;
-- All other cases
@@ -7719,6 +7791,19 @@ package body Sem_Ch13 is
begin
Biased := False;
+ -- Reject patently improper size values.
+
+ if Is_Elementary_Type (T)
+ and then Siz > UI_From_Int (Int'Last)
+ then
+ Error_Msg_N ("Size value too large for elementary type", N);
+
+ if Nkind (Original_Node (N)) = N_Op_Expon then
+ Error_Msg_N
+ ("\maybe '* was meant, rather than '*'*", Original_Node (N));
+ end if;
+ end if;
+
-- Dismiss cases for generic types or types with previous errors
if No (UT)
@@ -7857,6 +7942,223 @@ package body Sem_Ch13 is
end if;
end Get_Alignment_Value;
+ -------------------------------------
+ -- Inherit_Aspects_At_Freeze_Point --
+ -------------------------------------
+
+ procedure Inherit_Aspects_At_Freeze_Point (Typ : Entity_Id) is
+ function Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Rep_Item : Node_Id) return Boolean;
+ -- This routine checks if Rep_Item is either a pragma or an aspect
+ -- specification node whose correponding pragma (if any) is present in
+ -- the Rep Item chain of the entity it has been specified to.
+
+ --------------------------------------------------
+ -- Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item --
+ --------------------------------------------------
+
+ function Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Rep_Item : Node_Id) return Boolean
+ is
+ begin
+ return Nkind (Rep_Item) = N_Pragma
+ or else Present_In_Rep_Item
+ (Entity (Rep_Item), Aspect_Rep_Item (Rep_Item));
+ end Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item;
+
+ begin
+ -- A representation item is either subtype-specific (Size and Alignment
+ -- clauses) or type-related (all others). Subtype-specific aspects may
+ -- differ for different subtypes of the same type.(RM 13.1.8)
+
+ -- A derived type inherits each type-related representation aspect of
+ -- its parent type that was directly specified before the declaration of
+ -- the derived type. (RM 13.1.15)
+
+ -- A derived subtype inherits each subtype-specific representation
+ -- aspect of its parent subtype that was directly specified before the
+ -- declaration of the derived type .(RM 13.1.15)
+
+ -- The general processing involves inheriting a representation aspect
+ -- from a parent type whenever the first rep item (aspect specification,
+ -- attribute definition clause, pragma) corresponding to the given
+ -- representation aspect in the rep item chain of Typ, if any, isn't
+ -- directly specified to Typ but to one of its parents.
+
+ -- ??? Note that, for now, just a limited number of representation
+ -- aspects have been inherited here so far. Many of them are still
+ -- inherited in Sem_Ch3. This will be fixed soon. Here is a
+ -- non-exhaustive list of aspects that likely also need to be moved to
+ -- this routine: Alignment, Component_Alignment, Component_Size,
+ -- Machine_Radix, Object_Size, Pack, Predicates,
+ -- Preelaborable_Initialization, RM_Size and Small.
+
+ if Nkind (Parent (Typ)) = N_Private_Extension_Declaration then
+ return;
+ end if;
+
+ -- Ada_05/Ada_2005
+
+ if not Has_Rep_Item (Typ, Name_Ada_05, Name_Ada_2005, False)
+ and then Has_Rep_Item (Typ, Name_Ada_05, Name_Ada_2005)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Ada_05, Name_Ada_2005))
+ then
+ Set_Is_Ada_2005_Only (Typ);
+ end if;
+
+ -- Ada_12/Ada_2012
+
+ if not Has_Rep_Item (Typ, Name_Ada_12, Name_Ada_2012, False)
+ and then Has_Rep_Item (Typ, Name_Ada_12, Name_Ada_2012)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Ada_12, Name_Ada_2012))
+ then
+ Set_Is_Ada_2012_Only (Typ);
+ end if;
+
+ -- Atomic/Shared
+
+ if not Has_Rep_Item (Typ, Name_Atomic, Name_Shared, False)
+ and then Has_Rep_Pragma (Typ, Name_Atomic, Name_Shared)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Atomic, Name_Shared))
+ then
+ Set_Is_Atomic (Typ);
+ Set_Treat_As_Volatile (Typ);
+ Set_Is_Volatile (Typ);
+ end if;
+
+ -- Default_Component_Value.
+
+ if Is_Array_Type (Typ)
+ and then Has_Rep_Item (Typ, Name_Default_Component_Value, False)
+ and then Has_Rep_Item (Typ, Name_Default_Component_Value)
+ then
+ Set_Default_Aspect_Component_Value (Typ,
+ Default_Aspect_Component_Value
+ (Entity (Get_Rep_Item (Typ, Name_Default_Component_Value))));
+ end if;
+
+ -- Default_Value.
+
+ if Is_Scalar_Type (Typ)
+ and then Has_Rep_Item (Typ, Name_Default_Value, False)
+ and then Has_Rep_Item (Typ, Name_Default_Value)
+ then
+ Set_Default_Aspect_Value (Typ,
+ Default_Aspect_Value
+ (Entity (Get_Rep_Item (Typ, Name_Default_Value))));
+ end if;
+
+ -- Discard_Names
+
+ if not Has_Rep_Item (Typ, Name_Discard_Names, False)
+ and then Has_Rep_Item (Typ, Name_Discard_Names)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Discard_Names))
+ then
+ Set_Discard_Names (Typ);
+ end if;
+
+ -- Invariants
+
+ if not Has_Rep_Item (Typ, Name_Invariant, False)
+ and then Has_Rep_Item (Typ, Name_Invariant)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Invariant))
+ then
+ Set_Has_Invariants (Typ);
+
+ if Class_Present (Get_Rep_Item (Typ, Name_Invariant)) then
+ Set_Has_Inheritable_Invariants (Typ);
+ end if;
+ end if;
+
+ -- Volatile
+
+ if not Has_Rep_Item (Typ, Name_Volatile, False)
+ and then Has_Rep_Item (Typ, Name_Volatile)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Volatile))
+ then
+ Set_Treat_As_Volatile (Typ);
+ Set_Is_Volatile (Typ);
+ end if;
+
+ -- Inheritance for derived types only
+
+ if Is_Derived_Type (Typ) then
+ declare
+ Bas_Typ : constant Entity_Id := Base_Type (Typ);
+ Imp_Bas_Typ : constant Entity_Id := Implementation_Base_Type (Typ);
+
+ begin
+ -- Atomic_Components
+
+ if not Has_Rep_Item (Typ, Name_Atomic_Components, False)
+ and then Has_Rep_Item (Typ, Name_Atomic_Components)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Atomic_Components))
+ then
+ Set_Has_Atomic_Components (Imp_Bas_Typ);
+ end if;
+
+ -- Volatile_Components
+
+ if not Has_Rep_Item (Typ, Name_Volatile_Components, False)
+ and then Has_Rep_Item (Typ, Name_Volatile_Components)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Volatile_Components))
+ then
+ Set_Has_Volatile_Components (Imp_Bas_Typ);
+ end if;
+
+ -- Finalize_Storage_Only.
+
+ if not Has_Rep_Pragma (Typ, Name_Finalize_Storage_Only, False)
+ and then Has_Rep_Pragma (Typ, Name_Finalize_Storage_Only)
+ then
+ Set_Finalize_Storage_Only (Bas_Typ);
+ end if;
+
+ -- Universal_Aliasing
+
+ if not Has_Rep_Item (Typ, Name_Universal_Aliasing, False)
+ and then Has_Rep_Item (Typ, Name_Universal_Aliasing)
+ and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
+ (Get_Rep_Item (Typ, Name_Universal_Aliasing))
+ then
+ Set_Universal_Aliasing (Imp_Bas_Typ);
+ end if;
+
+ -- Record type specific aspects
+
+ if Is_Record_Type (Typ) then
+ -- Bit_Order
+
+ if not Has_Rep_Item (Typ, Name_Bit_Order, False)
+ and then Has_Rep_Item (Typ, Name_Bit_Order)
+ then
+ Set_Reverse_Bit_Order (Bas_Typ,
+ Reverse_Bit_Order (Entity (Name
+ (Get_Rep_Item (Typ, Name_Bit_Order)))));
+ end if;
+
+ -- Scalar_Storage_Order
+
+ if not Has_Rep_Item (Typ, Name_Scalar_Storage_Order, False)
+ and then Has_Rep_Item (Typ, Name_Scalar_Storage_Order)
+ then
+ Set_Reverse_Storage_Order (Bas_Typ,
+ Reverse_Storage_Order (Entity (Name
+ (Get_Rep_Item (Typ, Name_Scalar_Storage_Order)))));
+ end if;
+ end if;
+ end;
+ end if;
+ end Inherit_Aspects_At_Freeze_Point;
+
----------------
-- Initialize --
----------------
diff --git a/gcc/ada/sem_ch13.ads b/gcc/ada/sem_ch13.ads
index ba335e19585..0ac7386e878 100644
--- a/gcc/ada/sem_ch13.ads
+++ b/gcc/ada/sem_ch13.ads
@@ -310,4 +310,8 @@ package Sem_Ch13 is
-- Performs the processing described above at the freeze all point, and
-- issues appropriate error messages if the visibility has indeed changed.
-- Again, ASN is the N_Aspect_Specification node for the aspect.
+
+ procedure Inherit_Aspects_At_Freeze_Point (Typ : Entity_Id);
+ -- Given an entity Typ that denotes a derived type or a subtype, this
+ -- routine performs the inheritance of aspects at the freeze point.
end Sem_Ch13;
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index b58c21f6ca9..b61821e6549 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -3078,8 +3078,11 @@ package body Sem_Ch3 is
-- in the RM is removed) because accessibility checks are sufficient
-- to make handlers not at the library level illegal.
+ -- AI05-0303: the AI is in fact a binding interpretation, and thus
+ -- applies to the '95 version of the language as well.
+
if Has_Interrupt_Handler (T)
- and then Ada_Version < Ada_2005
+ and then Ada_Version < Ada_95
then
Error_Msg_N
("interrupt object can only be declared at library level", Id);
@@ -4045,12 +4048,9 @@ package body Sem_Ch3 is
-- Inherit common attributes
- Set_Is_Generic_Type (Id, Is_Generic_Type (Base_Type (T)));
Set_Is_Volatile (Id, Is_Volatile (T));
Set_Treat_As_Volatile (Id, Treat_As_Volatile (T));
- Set_Is_Atomic (Id, Is_Atomic (T));
- Set_Is_Ada_2005_Only (Id, Is_Ada_2005_Only (T));
- Set_Is_Ada_2012_Only (Id, Is_Ada_2012_Only (T));
+ Set_Is_Generic_Type (Id, Is_Generic_Type (Base_Type (T)));
Set_Convention (Id, Convention (T));
-- If ancestor has predicates then so does the subtype, and in addition
@@ -4973,6 +4973,13 @@ package body Sem_Ch3 is
("the type of a component cannot be abstract",
Subtype_Indication (Component_Def));
end if;
+
+ -- Ada 2012: if the element type has invariants we must create an
+ -- invariant procedure for the array type as well.
+
+ if Has_Invariants (Element_Type) then
+ Set_Has_Invariants (T);
+ end if;
end Array_Type_Declaration;
------------------------------------------------------
@@ -5422,7 +5429,8 @@ package body Sem_Ch3 is
elsif Constraint_Present then
- -- Build constrained subtype and derive from it
+ -- Build constrained subtype, copying the constraint, and derive
+ -- from it to create a derived constrained type.
declare
Loc : constant Source_Ptr := Sloc (N);
@@ -5436,7 +5444,7 @@ package body Sem_Ch3 is
Make_Subtype_Declaration (Loc,
Defining_Identifier => Anon,
Subtype_Indication =>
- Subtype_Indication (Type_Definition (N)));
+ New_Copy_Tree (Subtype_Indication (Type_Definition (N))));
Insert_Before (N, Decl);
Analyze (Decl);
@@ -5844,13 +5852,6 @@ package body Sem_Ch3 is
Analyze (N);
- -- If pragma Discard_Names applies on the first subtype of the parent
- -- type, then it must be applied on this subtype as well.
-
- if Einfo.Discard_Names (First_Subtype (Parent_Type)) then
- Set_Discard_Names (Derived_Type);
- end if;
-
-- Apply a range check. Since this range expression doesn't have an
-- Etype, we have to specifically pass the Source_Typ parameter. Is
-- this right???
@@ -7655,8 +7656,6 @@ package body Sem_Ch3 is
-- Fields inherited from the Parent_Type
- Set_Discard_Names
- (Derived_Type, Einfo.Discard_Names (Parent_Type));
Set_Has_Specified_Layout
(Derived_Type, Has_Specified_Layout (Parent_Type));
Set_Is_Limited_Composite
@@ -7700,20 +7699,9 @@ package body Sem_Ch3 is
Set_OK_To_Reorder_Components
(Derived_Type, OK_To_Reorder_Components (Parent_Full));
- Set_Reverse_Bit_Order
- (Derived_Type, Reverse_Bit_Order (Parent_Full));
- Set_Reverse_Storage_Order
- (Derived_Type, Reverse_Storage_Order (Parent_Full));
end;
end if;
- -- Direct controlled types do not inherit Finalize_Storage_Only flag
-
- if not Is_Controlled (Parent_Type) then
- Set_Finalize_Storage_Only
- (Derived_Type, Finalize_Storage_Only (Parent_Type));
- end if;
-
-- Set fields for private derived types
if Is_Private_Type (Derived_Type) then
@@ -8032,11 +8020,6 @@ package body Sem_Ch3 is
-- they are inherited from the parent type, and these invariants can
-- be further inherited, so both flags are set.
- if Has_Inheritable_Invariants (Parent_Type) then
- Set_Has_Inheritable_Invariants (Derived_Type);
- Set_Has_Invariants (Derived_Type);
- end if;
-
-- We similarly inherit predicates
if Has_Predicates (Parent_Type) then
@@ -12207,7 +12190,6 @@ package body Sem_Ch3 is
Set_Component_Type (T1, Component_Type (T2));
Set_Component_Size (T1, Component_Size (T2));
Set_Has_Controlled_Component (T1, Has_Controlled_Component (T2));
- Set_Finalize_Storage_Only (T1, Finalize_Storage_Only (T2));
Set_Has_Non_Standard_Rep (T1, Has_Non_Standard_Rep (T2));
Set_Has_Task (T1, Has_Task (T2));
Set_Is_Packed (T1, Is_Packed (T2));
@@ -12226,7 +12208,6 @@ package body Sem_Ch3 is
Set_First_Index (T1, First_Index (T2));
Set_Is_Aliased (T1, Is_Aliased (T2));
- Set_Is_Atomic (T1, Is_Atomic (T2));
Set_Is_Volatile (T1, Is_Volatile (T2));
Set_Treat_As_Volatile (T1, Treat_As_Volatile (T2));
Set_Is_Constrained (T1, Is_Constrained (T2));
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 563d5b80c21..d1cdeeabf5f 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -253,7 +253,7 @@ package body Sem_Ch4 is
function Try_Container_Indexing
(N : Node_Id;
Prefix : Node_Id;
- Expr : Node_Id) return Boolean;
+ Exprs : List_Id) return Boolean;
-- AI05-0139: Generalized indexing to support iterators over containers
function Try_Indexed_Call
@@ -2114,7 +2114,7 @@ package body Sem_Ch4 is
then
return;
- elsif Try_Container_Indexing (N, P, Exp) then
+ elsif Try_Container_Indexing (N, P, Exprs) then
return;
elsif Array_Type = Any_Type then
@@ -2276,7 +2276,7 @@ package body Sem_Ch4 is
end;
end if;
- elsif Try_Container_Indexing (N, P, First (Exprs)) then
+ elsif Try_Container_Indexing (N, P, Exprs) then
return;
end if;
@@ -4222,13 +4222,22 @@ package body Sem_Ch4 is
-- Duplicate the call. This is required to avoid problems with
-- the tree transformations performed by Try_Object_Operation.
+ -- Set properly the parent of the copied call, because it is
+ -- about to be reanalyzed.
- and then
- Try_Object_Operation
- (N => Sinfo.Name (New_Copy_Tree (Parent (N))),
- CW_Test_Only => True)
then
- return;
+ declare
+ Par : constant Node_Id := New_Copy_Tree (Parent (N));
+
+ begin
+ Set_Parent (Par, Parent (Parent (N)));
+
+ if Try_Object_Operation
+ (Sinfo.Name (Par), CW_Test_Only => True)
+ then
+ return;
+ end if;
+ end;
end if;
end if;
@@ -4334,10 +4343,21 @@ package body Sem_Ch4 is
-- Emit appropriate message. Gigi will replace the
-- node subsequently with the appropriate Raise.
- Apply_Compile_Time_Constraint_Error
- (N, "component not present in }?",
- CE_Discriminant_Check_Failed,
- Ent => Prefix_Type, Rep => False);
+ -- In Alfa mode, this is made into an error to simplify
+ -- the processing of the formal verification backend.
+
+ if Alfa_Mode then
+ Apply_Compile_Time_Constraint_Error
+ (N, "component not present in }",
+ CE_Discriminant_Check_Failed,
+ Ent => Prefix_Type, Rep => False);
+ else
+ Apply_Compile_Time_Constraint_Error
+ (N, "component not present in }?",
+ CE_Discriminant_Check_Failed,
+ Ent => Prefix_Type, Rep => False);
+ end if;
+
Set_Raises_Constraint_Error (N);
return;
end if;
@@ -6475,9 +6495,10 @@ package body Sem_Ch4 is
function Try_Container_Indexing
(N : Node_Id;
Prefix : Node_Id;
- Expr : Node_Id) return Boolean
+ Exprs : List_Id) return Boolean
is
Loc : constant Source_Ptr := Sloc (N);
+ Assoc : List_Id;
Disc : Entity_Id;
Func : Entity_Id;
Func_Name : Node_Id;
@@ -6508,19 +6529,34 @@ package body Sem_Ch4 is
if Has_Implicit_Dereference (Etype (Prefix)) then
Build_Explicit_Dereference
(Prefix, First_Discriminant (Etype (Prefix)));
- return Try_Container_Indexing (N, Prefix, Expr);
+ return Try_Container_Indexing (N, Prefix, Exprs);
else
return False;
end if;
end if;
+ Assoc := New_List (Relocate_Node (Prefix));
+
+ -- A generalized iterator may have nore than one index expression, so
+ -- transfer all of them to the argument list to be used in the call.
+
+ declare
+ Arg : Node_Id;
+ begin
+ Arg := First (Exprs);
+ while Present (Arg) loop
+ Append (Relocate_Node (Arg), Assoc);
+ Next (Arg);
+ end loop;
+ end;
+
if not Is_Overloaded (Func_Name) then
Func := Entity (Func_Name);
- Indexing := Make_Function_Call (Loc,
- Name => New_Occurrence_Of (Func, Loc),
- Parameter_Associations =>
- New_List (Relocate_Node (Prefix), Relocate_Node (Expr)));
+ Indexing :=
+ Make_Function_Call (Loc,
+ Name => New_Occurrence_Of (Func, Loc),
+ Parameter_Associations => Assoc);
Rewrite (N, Indexing);
Analyze (N);
@@ -6544,8 +6580,7 @@ package body Sem_Ch4 is
else
Indexing := Make_Function_Call (Loc,
Name => Make_Identifier (Loc, Chars (Func_Name)),
- Parameter_Associations =>
- New_List (Relocate_Node (Prefix), Relocate_Node (Expr)));
+ Parameter_Associations => Assoc);
Rewrite (N, Indexing);
@@ -6586,7 +6621,8 @@ package body Sem_Ch4 is
end if;
if Etype (N) = Any_Type then
- Error_Msg_NE ("container cannot be indexed with&", N, Etype (Expr));
+ Error_Msg_NE
+ ("container cannot be indexed with&", N, Etype (First (Exprs)));
Rewrite (N, New_Occurrence_Of (Any_Id, Loc));
else
Analyze (N);
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb
index 749393b5d78..f3df8c5c6ab 100644
--- a/gcc/ada/sem_ch5.adb
+++ b/gcc/ada/sem_ch5.adb
@@ -1665,16 +1665,21 @@ package body Sem_Ch5 is
-- If the domain of iteration is an expression, create a declaration for
-- it, so that finalization actions are introduced outside of the loop.
-- The declaration must be a renaming because the body of the loop may
- -- assign to elements. When the context is a quantified expression, the
- -- renaming declaration is delayed until the expansion phase.
+ -- assign to elements.
if not Is_Entity_Name (Iter_Name)
+
+ -- When the context is a quantified expression, the renaming
+ -- declaration is delayed until the expansion phase if we are
+ -- doing expansion.
+
and then (Nkind (Parent (N)) /= N_Quantified_Expression
+ or else Operating_Mode = Check_Semantics)
- -- The following two tests need comments ???
+ -- Do not perform this expansion in Alfa mode, since the formal
+ -- verification directly deals with the source form of the iterator.
- or else Operating_Mode = Check_Semantics
- or else Alfa_Mode)
+ and then not Alfa_Mode
then
declare
Id : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name);
@@ -1711,7 +1716,7 @@ package body Sem_Ch5 is
-- Container is an entity or an array with uncontrolled components, or
-- else it is a container iterator given by a function call, typically
-- called Iterate in the case of predefined containers, even though
- -- Iterate is not a reserved name. What matter is that the return type
+ -- Iterate is not a reserved name. What matters is that the return type
-- of the function is an iterator type.
elsif Is_Entity_Name (Iter_Name) then
@@ -2226,18 +2231,8 @@ package body Sem_Ch5 is
-- Ada 2012: If the domain of iteration is a function call, it is the
-- new iterator form.
- -- We have also implemented the shorter form : for X in S for Alfa
- -- use. In this case, 'Old and 'Result must be treated as entity
- -- names over which iterators are legal.
-
if Nkind (DS_Copy) = N_Function_Call
or else
- (Alfa_Mode
- and then (Nkind (DS_Copy) = N_Attribute_Reference
- and then
- (Attribute_Name (DS_Copy) = Name_Result
- or else Attribute_Name (DS_Copy) = Name_Old)))
- or else
(Is_Entity_Name (DS_Copy)
and then not Is_Type (Entity (DS_Copy)))
then
@@ -2633,14 +2628,14 @@ package body Sem_Ch5 is
-- types the actual subtype of the components will only be determined
-- when the cursor declaration is analyzed.
- -- If the expander is not active, then we want to analyze the loop body
- -- now even in the Ada 2012 iterator case, since the rewriting will not
- -- be done. Insert the loop variable in the current scope, if not done
- -- when analysing the iteration scheme.
+ -- If the expander is not active, or in Alfa mode, then we want to
+ -- analyze the loop body now even in the Ada 2012 iterator case, since
+ -- the rewriting will not be done. Insert the loop variable in the
+ -- current scope, if not done when analysing the iteration scheme.
if No (Iter)
or else No (Iterator_Specification (Iter))
- or else not Expander_Active
+ or else not Full_Expander_Active
then
if Present (Iter)
and then Present (Iterator_Specification (Iter))
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index d0f918df397..d48dd10e524 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -1260,9 +1260,7 @@ package body Sem_Ch6 is
-- rewritten if the original call was in prefix notation) then error
-- has been emitted already, mark node and return.
- if Error_Posted (N)
- or else Etype (Name (N)) = Any_Type
- then
+ if Error_Posted (N) or else Etype (Name (N)) = Any_Type then
Set_Etype (N, Any_Type);
return;
end if;
@@ -1282,9 +1280,9 @@ package body Sem_Ch6 is
-- Special processing for Elab_Spec, Elab_Body and Elab_Subp_Body calls
if Nkind (P) = N_Attribute_Reference
- and then (Attribute_Name (P) = Name_Elab_Spec
- or else Attribute_Name (P) = Name_Elab_Body
- or else Attribute_Name (P) = Name_Elab_Subp_Body)
+ and then (Attribute_Name (P) = Name_Elab_Spec or else
+ Attribute_Name (P) = Name_Elab_Body or else
+ Attribute_Name (P) = Name_Elab_Subp_Body)
then
if Present (Actuals) then
Error_Msg_N
@@ -1806,7 +1804,6 @@ package body Sem_Ch6 is
procedure Analyze_Subprogram_Body_Helper (N : Node_Id) is
Loc : constant Source_Ptr := Sloc (N);
- Body_Deleted : constant Boolean := False;
Body_Spec : constant Node_Id := Specification (N);
Body_Id : Entity_Id := Defining_Entity (Body_Spec);
Prev_Id : constant Entity_Id := Current_Entity_In_Scope (Body_Id);
@@ -2078,9 +2075,8 @@ package body Sem_Ch6 is
Set_Has_Missing_Return (Id);
end if;
- elsif (Is_Generic_Subprogram (Id)
- or else not Is_Machine_Code_Subprogram (Id))
- and then not Body_Deleted
+ elsif Is_Generic_Subprogram (Id)
+ or else not Is_Machine_Code_Subprogram (Id)
then
Error_Msg_N ("missing RETURN statement in function body", N);
end if;
@@ -2506,6 +2502,19 @@ package body Sem_Ch6 is
end if;
end if;
+ -- Ada 2012 aspects may appear in a subprogram body, but only if there
+ -- is no previous spec.
+
+ if Has_Aspects (N) then
+ if Present (Corresponding_Spec (N)) then
+ Error_Msg_N
+ ("aspect specifications must appear in subprogram declaration",
+ N);
+ else
+ Analyze_Aspect_Specifications (N, Body_Id);
+ end if;
+ end if;
+
-- Previously we scanned the body to look for nested subprograms, and
-- rejected an inline directive if nested subprograms were present,
-- because the back-end would generate conflicting symbols for the
@@ -3122,13 +3131,9 @@ package body Sem_Ch6 is
end loop;
end if;
- -- Check references in body unless it was deleted. Note that the
- -- check of Body_Deleted here is not just for efficiency, it is
- -- necessary to avoid junk warnings on formal parameters.
+ -- Check references in body
- if not Body_Deleted then
- Check_References (Body_Id);
- end if;
+ Check_References (Body_Id);
end;
end Analyze_Subprogram_Body_Helper;
@@ -5503,12 +5508,10 @@ package body Sem_Ch6 is
end if;
end if;
- -- Ada 2012: mode conformance also requires that formal parameters
+ -- Ada 2012: Mode conformance also requires that formal parameters
-- be both aliased, or neither.
- if Ctype >= Mode_Conformant
- and then Ada_Version >= Ada_2012
- then
+ if Ctype >= Mode_Conformant and then Ada_Version >= Ada_2012 then
if Is_Aliased (Old_Formal) /= Is_Aliased (New_Formal) then
Conformance_Error
("\aliased parameter mismatch!", New_Formal);
@@ -6637,6 +6640,11 @@ package body Sem_Ch6 is
and then Exception_Junk (Last_Stm))
or else Nkind (Last_Stm) in N_Push_xxx_Label
or else Nkind (Last_Stm) in N_Pop_xxx_Label
+
+ -- Inserted code, such as finalization calls, is irrelevant: we only
+ -- need to check original source.
+
+ or else Is_Rewrite_Insertion (Last_Stm)
loop
Prev (Last_Stm);
end loop;
@@ -7242,7 +7250,9 @@ package body Sem_Ch6 is
N1, N2 : Natural;
begin
- -- Remove trailing numeric parts
+ -- Deal with special case where names are identical except for a
+ -- numerical suffix. These are handled specially, taking the numeric
+ -- ordering from the suffix into account.
L1 := S1'Last;
while S1 (L1) in '0' .. '9' loop
@@ -7254,13 +7264,10 @@ package body Sem_Ch6 is
L2 := L2 - 1;
end loop;
- -- If non-numeric parts non-equal, that's decisive
-
- if S1 (S1'First .. L1) < S2 (S2'First .. L2) then
- return False;
+ -- If non-numeric parts non-equal, do straight compare
- elsif S1 (S1'First .. L1) > S2 (S2'First .. L2) then
- return True;
+ if S1 (S1'First .. L1) /= S2 (S2'First .. L2) then
+ return S1 > S2;
-- If non-numeric parts equal, compare suffixed numeric parts. Note
-- that a missing suffix is treated as numeric zero in this test.
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index fd90b72d636..b4348c5bdbe 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -7223,7 +7223,7 @@ package body Sem_Ch8 is
-- If the actions to be wrapped are still there they will get lost
-- causing incomplete code to be generated. It is better to abort in
-- this case (and we do the abort even with assertions off since the
- -- penalty is incorrect code generation)
+ -- penalty is incorrect code generation).
if SST.Actions_To_Be_Wrapped_Before /= No_List
or else
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb
index 58a27c93256..6ee0bceeb81 100644
--- a/gcc/ada/sem_ch9.adb
+++ b/gcc/ada/sem_ch9.adb
@@ -23,6 +23,7 @@
-- --
------------------------------------------------------------------------------
+with Aspects; use Aspects;
with Atree; use Atree;
with Checks; use Checks;
with Debug; use Debug;
@@ -67,25 +68,31 @@ package body Sem_Ch9 is
-----------------------
function Allows_Lock_Free_Implementation
- (N : Node_Id;
- Complain : Boolean := False) return Boolean;
+ (N : Node_Id;
+ Lock_Free_Given : Boolean := False) return Boolean;
-- This routine returns True iff N satisfies the following list of lock-
-- free restrictions for protected type declaration and protected body:
--
-- 1) Protected type declaration
-- May not contain entries
- -- Component types must support atomic compare and exchange
+ -- Protected subprogram declarations may not have non-elementary
+ -- parameters.
--
-- 2) Protected Body
-- Each protected subprogram body within N must satisfy:
-- May reference only one protected component
-- May not reference non-constant entities outside the protected
-- subprogram scope.
- -- May not reference non-elementary out parameters
- -- May not contain loop statements or procedure calls
+ -- May not contain address representation items, allocators and
+ -- quantified expressions.
+ -- May not contain delay, goto, loop and procedure call
+ -- statements.
+ -- May not contain exported and imported entities
+ -- May not dereference access values
-- Function calls and attribute references must be static
--
- -- If Complain is True, an error message is issued when False is returned
+ -- If Lock_Free_Given is True, an error message is issued when False is
+ -- returned.
procedure Check_Max_Entries (D : Node_Id; R : All_Parameter_Restrictions);
-- Given either a protected definition or a task definition in D, check
@@ -115,22 +122,31 @@ package body Sem_Ch9 is
-------------------------------------
function Allows_Lock_Free_Implementation
- (N : Node_Id;
- Complain : Boolean := False) return Boolean
+ (N : Node_Id;
+ Lock_Free_Given : Boolean := False) return Boolean
is
+ Errors_Count : Nat;
+ -- Errors_Count is a count of errors detected by the compiler so far
+ -- when Lock_Free_Given is True.
+
begin
- pragma Assert (Nkind_In (N,
- N_Protected_Type_Declaration,
- N_Protected_Body));
+ pragma Assert (Nkind_In (N, N_Protected_Type_Declaration,
+ N_Protected_Body));
-- The lock-free implementation is currently enabled through a debug
- -- flag. When Complain is True, an aspect Lock_Free forces the lock-free
- -- implementation. In that case, the debug flag is not needed.
+ -- flag. When Lock_Free_Given is True, an aspect Lock_Free forces the
+ -- lock-free implementation. In that case, the debug flag is not needed.
- if not Complain and then not Debug_Flag_9 then
+ if not Lock_Free_Given and then not Debug_Flag_9 then
return False;
end if;
+ -- Get the number of errors detected by the compiler so far
+
+ if Lock_Free_Given then
+ Errors_Count := Serious_Errors_Detected;
+ end if;
+
-- Protected type declaration case
if Nkind (N) = N_Protected_Type_Declaration then
@@ -138,88 +154,71 @@ package body Sem_Ch9 is
Pdef : constant Node_Id := Protected_Definition (N);
Priv_Decls : constant List_Id := Private_Declarations (Pdef);
Vis_Decls : constant List_Id := Visible_Declarations (Pdef);
-
- Comp_Id : Entity_Id;
- Comp_Size : Int;
- Comp_Type : Entity_Id;
Decl : Node_Id;
begin
- -- Examine the visible declarations. Entries and entry families
- -- are not allowed by the lock-free restrictions.
+ -- Examine the visible and the private declarations
Decl := First (Vis_Decls);
while Present (Decl) loop
- if Nkind (Decl) = N_Entry_Declaration then
- if Complain then
- Error_Msg_N ("entry not allowed for lock-free " &
- "implementation",
- Decl);
- end if;
-
- return False;
- end if;
-
- Next (Decl);
- end loop;
-
- -- Examine the private declarations
-
- Decl := First (Priv_Decls);
- while Present (Decl) loop
-
- -- The protected type must define at least one scalar component
- if Nkind (Decl) = N_Component_Declaration then
- Comp_Id := Defining_Identifier (Decl);
- Comp_Type := Etype (Comp_Id);
-
- -- Make sure the protected component type has size and
- -- alignment fields set at this point whenever this is
- -- possible.
-
- Layout_Type (Comp_Type);
-
- if Known_Esize (Comp_Type) then
- Comp_Size := UI_To_Int (Esize (Comp_Type));
-
- -- If the Esize (Object_Size) is unknown at compile-time,
- -- look at the RM_Size (Value_Size) since it may have been
- -- set by an explicit representation clause.
+ -- Entries and entry families are not allowed by the lock-free
+ -- restrictions.
+ if Nkind (Decl) = N_Entry_Declaration then
+ if Lock_Free_Given then
+ Error_Msg_N
+ ("entry not allowed when Lock_Free given", Decl);
else
- Comp_Size := UI_To_Int (RM_Size (Comp_Type));
+ return False;
end if;
- -- Check that the size of the component is 8, 16, 32 or 64
- -- bits.
-
- case Comp_Size is
- when 8 | 16 | 32 | 64 =>
- null;
- when others =>
- if Complain then
- Error_Msg_N ("must support atomic operations for " &
- "lock-free implementation",
- Decl);
- end if;
+ -- Non-elementary parameters in protected procedure are not
+ -- allowed by the lock-free restrictions.
- return False;
- end case;
+ elsif Nkind (Decl) = N_Subprogram_Declaration
+ and then
+ Nkind (Specification (Decl)) = N_Procedure_Specification
+ and then
+ Present (Parameter_Specifications (Specification (Decl)))
+ then
+ declare
+ Par_Specs : constant List_Id :=
+ Parameter_Specifications
+ (Specification (Decl));
- -- Entries and entry families are not allowed
+ Par : Node_Id;
- elsif Nkind (Decl) = N_Entry_Declaration then
- if Complain then
- Error_Msg_N ("entry not allowed for lock-free " &
- "implementation",
- Decl);
- end if;
+ begin
+ Par := First (Par_Specs);
+ while Present (Par) loop
+ if not Is_Elementary_Type
+ (Etype (Defining_Identifier (Par)))
+ then
+ if Lock_Free_Given then
+ Error_Msg_NE
+ ("non-elementary parameter& not allowed "
+ & "when Lock_Free given",
+ Par, Defining_Identifier (Par));
+ else
+ return False;
+ end if;
+ end if;
- return False;
+ Next (Par);
+ end loop;
+ end;
end if;
- Next (Decl);
+ -- Examine private declarations after visible declarations
+
+ if No (Next (Decl))
+ and then List_Containing (Decl) = Vis_Decls
+ then
+ Decl := First (Priv_Decls);
+ else
+ Next (Decl);
+ end if;
end loop;
end;
@@ -248,9 +247,18 @@ package body Sem_Ch9 is
function Satisfies_Lock_Free_Requirements
(Sub_Body : Node_Id) return Boolean
is
+ Is_Procedure : constant Boolean :=
+ Ekind (Corresponding_Spec (Sub_Body)) =
+ E_Procedure;
+ -- Indicates if Sub_Body is a procedure body
+
Comp : Entity_Id := Empty;
-- Track the current component which the body references
+ Errors_Count : Nat;
+ -- Errors_Count is a count of errors detected by the compiler
+ -- so far when Lock_Free_Given is True.
+
function Check_Node (N : Node_Id) return Traverse_Result;
-- Check that node N meets the lock free restrictions
@@ -259,153 +267,361 @@ package body Sem_Ch9 is
----------------
function Check_Node (N : Node_Id) return Traverse_Result is
- begin
- -- Function calls and attribute references must be static
+ Kind : constant Node_Kind := Nkind (N);
- if Nkind (N) = N_Attribute_Reference
- and then not Is_Static_Expression (N)
- then
- if Complain then
- Error_Msg_N
- ("non-static attribute reference not allowed",
- N);
- end if;
+ -- The following function belongs in sem_eval ???
- return Abandon;
+ function Is_Static_Function (Attr : Node_Id) return Boolean;
+ -- Given an attribute reference node Attr, return True if
+ -- Attr denotes a static function according to the rules in
+ -- (RM 4.9 (22)).
- elsif Nkind (N) = N_Function_Call
- and then not Is_Static_Expression (N)
- then
- if Complain then
- Error_Msg_N ("non-static function call not allowed",
- N);
- end if;
+ ------------------------
+ -- Is_Static_Function --
+ ------------------------
- return Abandon;
+ function Is_Static_Function
+ (Attr : Node_Id) return Boolean
+ is
+ Para : Node_Id;
- -- Loop statements and procedure calls are prohibited
+ begin
+ pragma Assert (Nkind (Attr) = N_Attribute_Reference);
+
+ case Attribute_Name (Attr) is
+ when Name_Min |
+ Name_Max |
+ Name_Pred |
+ Name_Succ |
+ Name_Value |
+ Name_Wide_Value |
+ Name_Wide_Wide_Value =>
+
+ -- A language-defined attribute denotes a static
+ -- function if the prefix denotes a static scalar
+ -- subtype, and if the parameter and result types
+ -- are scalar (RM 4.9 (22)).
+
+ if Is_Scalar_Type (Etype (Attr))
+ and then Is_Scalar_Type (Etype (Prefix (Attr)))
+ and then Is_Static_Subtype (Etype (Prefix (Attr)))
+ then
+ Para := First (Expressions (Attr));
+
+ while Present (Para) loop
+ if not Is_Scalar_Type (Etype (Para)) then
+ return False;
+ end if;
- elsif Nkind (N) = N_Loop_Statement then
- if Complain then
- Error_Msg_N ("loop not allowed", N);
- end if;
+ Next (Para);
+ end loop;
- return Abandon;
+ return True;
- elsif Nkind (N) = N_Procedure_Call_Statement then
- if Complain then
- Error_Msg_N ("procedure call not allowed", N);
- end if;
+ else
+ return False;
+ end if;
- return Abandon;
+ when others => return False;
+ end case;
+ end Is_Static_Function;
- -- References
+ -- Start of processing for Check_Node
- elsif Nkind (N) = N_Identifier
- and then Present (Entity (N))
- then
- declare
- Id : constant Entity_Id := Entity (N);
- Sub_Id : constant Entity_Id :=
- Corresponding_Spec (Sub_Body);
+ begin
+ if Is_Procedure then
+ -- Allocators restricted
- begin
- -- Prohibit references to non-constant entities
- -- outside the protected subprogram scope.
-
- if Ekind (Id) in Assignable_Kind
- and then not Scope_Within_Or_Same (Scope (Id),
- Sub_Id)
- and then not Scope_Within_Or_Same (Scope (Id),
- Protected_Body_Subprogram (Sub_Id))
- then
- if Complain then
- Error_Msg_NE
- ("reference to global variable& not allowed",
- N, Id);
+ if Kind = N_Allocator then
+ if Lock_Free_Given then
+ Error_Msg_N ("allocator not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- Aspects Address, Export and Import restricted
+
+ elsif Kind = N_Aspect_Specification then
+ declare
+ Asp_Name : constant Name_Id :=
+ Chars (Identifier (N));
+ Asp_Id : constant Aspect_Id :=
+ Get_Aspect_Id (Asp_Name);
+
+ begin
+ if Asp_Id = Aspect_Address or else
+ Asp_Id = Aspect_Export or else
+ Asp_Id = Aspect_Import
+ then
+ Error_Msg_Name_1 := Asp_Name;
+
+ if Lock_Free_Given then
+ Error_Msg_N ("aspect% not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
end if;
+ end;
- return Abandon;
+ -- Address attribute definition clause restricted
- -- Prohibit non-scalar out parameters (scalar
- -- parameters are passed by copy).
+ elsif Kind = N_Attribute_Definition_Clause
+ and then Get_Attribute_Id (Chars (N)) =
+ Attribute_Address
+ then
+ Error_Msg_Name_1 := Chars (N);
- elsif Ekind_In (Id, E_Out_Parameter,
- E_In_Out_Parameter)
- and then not Is_Elementary_Type (Etype (Id))
- and then Scope_Within_Or_Same (Scope (Id), Sub_Id)
- then
- if Complain then
- Error_Msg_NE
- ("non-elementary out parameter& not allowed",
- N, Id);
+ if Lock_Free_Given then
+ if From_Aspect_Specification (N) then
+ Error_Msg_N ("aspect% not allowed", N);
+ else
+ Error_Msg_N ("% clause not allowed", N);
end if;
- return Abandon;
-
- -- A protected subprogram may reference only one
- -- component of the protected type.
-
- elsif Ekind (Id) = E_Component then
- declare
- Comp_Decl : constant Node_Id := Parent (Id);
- begin
- if Nkind (Comp_Decl) = N_Component_Declaration
- and then Is_List_Member (Comp_Decl)
- and then List_Containing (Comp_Decl) =
- Priv_Decls
- then
- if No (Comp) then
- Comp := Id;
-
- -- Check if another protected component has
- -- already been accessed by the subprogram
- -- body.
-
- elsif Comp /= Id then
- if Complain then
- Error_Msg_N
- ("only one protected component " &
- "allowed",
- N);
- end if;
+ return Skip;
+ end if;
- return Abandon;
+ return Abandon;
+
+ -- Non-static Attribute references that don't denote a
+ -- static function restricted.
+
+ elsif Kind = N_Attribute_Reference
+ and then not Is_Static_Expression (N)
+ and then not Is_Static_Function (N)
+ then
+ if Lock_Free_Given then
+ Error_Msg_N
+ ("non-static attribute reference not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- Delay statements restricted
+
+ elsif Kind in N_Delay_Statement then
+ if Lock_Free_Given then
+ Error_Msg_N ("delay not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- Dereferences of access values restricted
+
+ elsif Kind = N_Explicit_Dereference
+ or else (Kind = N_Selected_Component
+ and then Is_Access_Type (Etype (Prefix (N))))
+ then
+ if Lock_Free_Given then
+ Error_Msg_N
+ ("dereference of access value not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- Non-static function calls restricted
+
+ elsif Kind = N_Function_Call
+ and then not Is_Static_Expression (N)
+ then
+ if Lock_Free_Given then
+ Error_Msg_N
+ ("non-static function call not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- Goto statements restricted
+
+ elsif Kind = N_Goto_Statement then
+ if Lock_Free_Given then
+ Error_Msg_N ("goto statement not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- References
+
+ elsif Kind = N_Identifier
+ and then Present (Entity (N))
+ then
+ declare
+ Id : constant Entity_Id := Entity (N);
+ Sub_Id : constant Entity_Id :=
+ Corresponding_Spec (Sub_Body);
+
+ begin
+ -- Prohibit references to non-constant entities
+ -- outside the protected subprogram scope.
+
+ if Ekind (Id) in Assignable_Kind
+ and then not
+ Scope_Within_Or_Same (Scope (Id), Sub_Id)
+ and then not
+ Scope_Within_Or_Same
+ (Scope (Id),
+ Protected_Body_Subprogram (Sub_Id))
+ then
+ if Lock_Free_Given then
+ Error_Msg_NE
+ ("reference to global variable& not " &
+ "allowed", N, Id);
+ return Skip;
+ end if;
+
+ return Abandon;
+ end if;
+ end;
+
+ -- Loop statements restricted
+
+ elsif Kind = N_Loop_Statement then
+ if Lock_Free_Given then
+ Error_Msg_N ("loop not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- Pragmas Export and Import restricted
+
+ elsif Kind = N_Pragma then
+ declare
+ Prag_Name : constant Name_Id := Pragma_Name (N);
+ Prag_Id : constant Pragma_Id :=
+ Get_Pragma_Id (Prag_Name);
+
+ begin
+ if Prag_Id = Pragma_Export
+ or else Prag_Id = Pragma_Import
+ then
+ Error_Msg_Name_1 := Prag_Name;
+
+ if Lock_Free_Given then
+ if From_Aspect_Specification (N) then
+ Error_Msg_N ("aspect% not allowed", N);
+ else
+ Error_Msg_N ("pragma% not allowed", N);
end if;
+
+ return Skip;
end if;
- end;
+
+ return Abandon;
+ end if;
+ end;
+
+ -- Procedure call statements restricted
+
+ elsif Kind = N_Procedure_Call_Statement then
+ if Lock_Free_Given then
+ Error_Msg_N ("procedure call not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+
+ -- Quantified expression restricted. Note that we have
+ -- to check the original node as well, since at this
+ -- stage, it may have been rewritten.
+
+ elsif Kind = N_Quantified_Expression
+ or else
+ Nkind (Original_Node (N)) = N_Quantified_Expression
+ then
+ if Lock_Free_Given then
+ Error_Msg_N
+ ("quantified expression not allowed", N);
+ return Skip;
+ end if;
+
+ return Abandon;
+ end if;
+ end if;
+
+ -- A protected subprogram (function or procedure) may
+ -- reference only one component of the protected type, plus
+ -- the type of the component must support atomic operation.
+
+ if Kind = N_Identifier
+ and then Present (Entity (N))
+ then
+ declare
+ Id : constant Entity_Id := Entity (N);
+ Comp_Decl : Node_Id;
+ Comp_Id : Entity_Id := Empty;
+ Comp_Type : Entity_Id;
+
+ begin
+ if Ekind (Id) = E_Component then
+ Comp_Id := Id;
elsif Ekind_In (Id, E_Constant, E_Variable)
and then Present (Prival_Link (Id))
then
- declare
- Comp_Decl : constant Node_Id :=
- Parent (Prival_Link (Id));
- begin
- if Nkind (Comp_Decl) = N_Component_Declaration
- and then Is_List_Member (Comp_Decl)
- and then List_Containing (Comp_Decl) =
- Priv_Decls
- then
- if No (Comp) then
- Comp := Prival_Link (Id);
-
- -- Check if another protected component has
- -- already been accessed by the subprogram
- -- body.
-
- elsif Comp /= Prival_Link (Id) then
- if Complain then
- Error_Msg_N
- ("only one protected component " &
- "allowed",
- N);
+ Comp_Id := Prival_Link (Id);
+ end if;
+
+ if Present (Comp_Id) then
+ Comp_Decl := Parent (Comp_Id);
+ Comp_Type := Etype (Comp_Id);
+
+ if Nkind (Comp_Decl) = N_Component_Declaration
+ and then Is_List_Member (Comp_Decl)
+ and then List_Containing (Comp_Decl) = Priv_Decls
+ then
+ -- Skip generic types since, in that case, we
+ -- will not build a body anyway (in the generic
+ -- template), and the size in the template may
+ -- have a fake value.
+
+ if not Is_Generic_Type (Comp_Type) then
+
+ -- Make sure the protected component type has
+ -- size and alignment fields set at this
+ -- point whenever this is possible.
+
+ Layout_Type (Comp_Type);
+
+ if not
+ Support_Atomic_Primitives (Comp_Type)
+ then
+ if Lock_Free_Given then
+ Error_Msg_NE
+ ("type of& must support atomic " &
+ "operations",
+ N, Comp_Id);
+ return Skip;
end if;
return Abandon;
end if;
end if;
- end;
+
+ -- Check if another protected component has
+ -- already been accessed by the subprogram body.
+
+ if No (Comp) then
+ Comp := Comp_Id;
+
+ elsif Comp /= Comp_Id then
+ if Lock_Free_Given then
+ Error_Msg_N
+ ("only one protected component allowed",
+ N);
+ return Skip;
+ end if;
+
+ return Abandon;
+ end if;
+ end if;
end if;
end;
end if;
@@ -418,8 +634,16 @@ package body Sem_Ch9 is
-- Start of processing for Satisfies_Lock_Free_Requirements
begin
- if Check_All_Nodes (Sub_Body) = OK then
+ -- Get the number of errors detected by the compiler so far
+ if Lock_Free_Given then
+ Errors_Count := Serious_Errors_Detected;
+ end if;
+
+ if Check_All_Nodes (Sub_Body) = OK
+ and then (not Lock_Free_Given
+ or else Errors_Count = Serious_Errors_Detected)
+ then
-- Establish a relation between the subprogram body and the
-- unique protected component it references.
@@ -438,17 +662,16 @@ package body Sem_Ch9 is
begin
Decl := First (Decls);
-
while Present (Decl) loop
if Nkind (Decl) = N_Subprogram_Body
and then not Satisfies_Lock_Free_Requirements (Decl)
then
- if Complain then
- Error_Msg_N ("body prevents lock-free implementation",
- Decl);
+ if Lock_Free_Given then
+ Error_Msg_N
+ ("illegal body when Lock_Free given", Decl);
+ else
+ return False;
end if;
-
- return False;
end if;
Next (Decl);
@@ -456,6 +679,15 @@ package body Sem_Ch9 is
end Protected_Body_Case;
end if;
+ -- When Lock_Free is given, check if no error has been detected during
+ -- the process.
+
+ if Lock_Free_Given
+ and then Errors_Count /= Serious_Errors_Detected
+ then
+ return False;
+ end if;
+
return True;
end Allows_Lock_Free_Implementation;
@@ -484,7 +716,7 @@ package body Sem_Ch9 is
else
if Ada_Version >= Ada_2005 then
Error_Msg_N ("expect task name or task interface class-wide "
- & "object for ABORT", T_Name);
+ & "object for ABORT", T_Name);
else
Error_Msg_N ("expect task name for ABORT", T_Name);
end if;
@@ -1455,14 +1687,17 @@ package body Sem_Ch9 is
begin
if Present (Ritem) then
+
-- Pragma with one argument
if Nkind (Ritem) = N_Pragma
and then Present (Pragma_Argument_Associations (Ritem))
then
return
- Is_False (Static_Boolean
- (Expression (First (Pragma_Argument_Associations (Ritem)))));
+ Is_False
+ (Static_Boolean
+ (Expression
+ (First (Pragma_Argument_Associations (Ritem)))));
-- Aspect Specification with expression present
@@ -1548,7 +1783,7 @@ package body Sem_Ch9 is
-- otherwise Allows_Lock_Free_Implementation issues an error message.
if Uses_Lock_Free (Spec_Id) then
- if not Allows_Lock_Free_Implementation (N, Complain => True) then
+ if not Allows_Lock_Free_Implementation (N, True) then
return;
end if;
@@ -1784,7 +2019,46 @@ package body Sem_Ch9 is
-- issued by Allows_Lock_Free_Implementation.
if Uses_Lock_Free (Defining_Identifier (N)) then
- if not Allows_Lock_Free_Implementation (N, Complain => True) then
+
+ -- Complain when there is an explicit aspect/pragma Priority (or
+ -- Interrupt_Priority) while the lock-free implementation is forced
+ -- by an aspect/pragma.
+
+ declare
+ Id : constant Entity_Id :=
+ Defining_Identifier (Original_Node (N));
+ -- The warning must be issued on the original identifier in order
+ -- to deal properly with the case of a single protected object.
+
+ Prio_Item : constant Node_Id :=
+ Get_Rep_Item
+ (Defining_Identifier (N),
+ Name_Priority,
+ Check_Parents => False);
+
+ begin
+ if Present (Prio_Item) then
+
+ -- Aspect case
+
+ if Nkind (Prio_Item) = N_Aspect_Specification
+ or else From_Aspect_Specification (Prio_Item)
+ then
+ Error_Msg_Name_1 := Chars (Identifier (Prio_Item));
+ Error_Msg_NE ("?aspect% for & has no effect when Lock_Free" &
+ " given", Prio_Item, Id);
+
+ -- Pragma case
+
+ else
+ Error_Msg_Name_1 := Pragma_Name (Prio_Item);
+ Error_Msg_NE ("?pragma% for & has no effect when Lock_Free" &
+ " given", Prio_Item, Id);
+ end if;
+ end if;
+ end;
+
+ if not Allows_Lock_Free_Implementation (N, True) then
return;
end if;
end if;
diff --git a/gcc/ada/sem_dim.adb b/gcc/ada/sem_dim.adb
index 49f29a3423b..a2dd53c4087 100644
--- a/gcc/ada/sem_dim.adb
+++ b/gcc/ada/sem_dim.adb
@@ -116,6 +116,8 @@ package body Sem_Dim is
No_Symbols : constant Symbol_Array := (others => No_String);
+ -- The following record should be documented field by field
+
type System_Type is record
Type_Decl : Node_Id;
Unit_Names : Name_Array;
@@ -430,7 +432,7 @@ package body Sem_Dim is
------------------------------
-- with Dimension => (
- -- [Symbol =>] SYMBOL,
+ -- [[Symbol =>] SYMBOL,]
-- DIMENSION_VALUE
-- [, DIMENSION_VALUE]
-- [, DIMENSION_VALUE]
@@ -543,8 +545,7 @@ package body Sem_Dim is
Errors_Count : Nat;
-- Errors_Count is a count of errors detected by the compiler so far
-- just before the extraction of symbol, names and values in the
- -- aggregate
- -- (Step 2).
+ -- aggregate (Step 2).
--
-- At the end of the analysis, there is a check to verify that this
-- count equals to Serious_Errors_Detected i.e. no erros have been
@@ -614,9 +615,8 @@ package body Sem_Dim is
Assoc := First (Component_Associations (Aggr));
Choice := First (Choices (Assoc));
- if No (Next (Choice))
- and then Nkind (Choice) = N_Identifier
- then
+ if No (Next (Choice)) and then Nkind (Choice) = N_Identifier then
+
-- Symbol component association is present
if Chars (Choice) = Name_Symbol then
@@ -629,9 +629,9 @@ package body Sem_Dim is
N_String_Literal)
then
Symbol_Expr := Empty;
- Error_Msg_N ("symbol expression must be character or " &
- "string",
- Symbol_Expr);
+ Error_Msg_N
+ ("symbol expression must be character or string",
+ Symbol_Expr);
end if;
-- Special error if no Symbol choice but expression is string
@@ -656,9 +656,7 @@ package body Sem_Dim is
-- Skip the symbol expression when present
- if Present (Symbol_Expr)
- and then Num_Choices = 0
- then
+ if Present (Symbol_Expr) and then Num_Choices = 0 then
Expr := Next (Expr);
end if;
@@ -689,9 +687,9 @@ package body Sem_Dim is
end if;
while Present (Assoc) loop
- Expr := Expression (Assoc);
- Choice := First (Choices (Assoc));
+ Expr := Expression (Assoc);
+ Choice := First (Choices (Assoc));
while Present (Choice) loop
-- Identifier case: NAME => EXPRESSION
@@ -747,9 +745,7 @@ package body Sem_Dim is
-- Others case: OTHERS => EXPRESSION
elsif Nkind (Choice) = N_Others_Choice then
- if Present (Next (Choice))
- or else Present (Prev (Choice))
- then
+ if Present (Next (Choice)) or else Present (Prev (Choice)) then
Error_Msg_N
("OTHERS must appear alone in a choice list", Choice);
@@ -828,11 +824,10 @@ package body Sem_Dim is
-- Check that no errors have been detected during the analysis
if Errors_Count = Serious_Errors_Detected then
- -- useless declaration
- if Symbol = No_String
- and then not Exists (Dimensions)
- then
+ -- Check for useless declaration
+
+ if Symbol = No_String and then not Exists (Dimensions) then
Error_Msg_N ("useless dimension declaration", Aggr);
end if;
@@ -968,6 +963,7 @@ package body Sem_Dim is
-- Named dimension aggregate
if Present (Component_Associations (Dim_Aggr)) then
+
-- Check first argument denotes the unit name
Assoc := First (Component_Associations (Dim_Aggr));
@@ -1326,9 +1322,12 @@ package body Sem_Dim is
-- value of the exponent must be known compile time. Otherwise,
-- the exponentiation evaluation will return an error message.
- if L_Has_Dimensions
- and then Compile_Time_Known_Value (R)
- then
+ if L_Has_Dimensions then
+ if not Compile_Time_Known_Value (R) then
+ Error_Msg_N ("exponent of dimensioned operand must be " &
+ "known at compile-time", N);
+ end if;
+
declare
Exponent_Value : Rational := Zero;
@@ -1589,8 +1588,7 @@ package body Sem_Dim is
Dims_Of_Actual := Dimensions_Of (Actual);
if Exists (Dims_Of_Actual) then
- Error_Msg_NE ("parameter should be dimensionless for " &
- "elementary function&",
+ Error_Msg_NE ("parameter of& must be dimensionless",
Actual, Name_Call);
Error_Msg_N ("\parameter " & Dimensions_Msg_Of (Actual),
Actual);
@@ -1622,6 +1620,14 @@ package body Sem_Dim is
if Exists (Dims_Of_Etyp) then
Set_Dimensions (N, Dims_Of_Etyp);
+
+ -- Propagation of the dimensions from the entity for identifier whose
+ -- entity is a non-dimensionless consant.
+
+ elsif Nkind (N) = N_Identifier
+ and then Exists (Dimensions_Of (Entity (N)))
+ then
+ Set_Dimensions (N, Dimensions_Of (Entity (N)));
end if;
-- Removal of dimensions in expression
@@ -1697,7 +1703,7 @@ package body Sem_Dim is
if Present (Expr) then
Dim_Of_Expr := Dimensions_Of (Expr);
- -- case when expression is not a literal and when dimensions of the
+ -- Case when expression is not a literal and when dimensions of the
-- expression and of the type mismatch
if not Nkind_In (Original_Node (Expr),
@@ -1705,7 +1711,18 @@ package body Sem_Dim is
N_Integer_Literal)
and then Dim_Of_Expr /= Dim_Of_Etyp
then
- Error_Dim_Msg_For_Object_Declaration (N, Etyp, Expr);
+ -- Propagate the dimension from the expression to the object
+ -- entity when the object is a constant whose type is a
+ -- dimensioned type.
+
+ if Constant_Present (N) and then not Exists (Dim_Of_Etyp) then
+ Set_Dimensions (Id, Dim_Of_Expr);
+
+ -- Otherwise, issue an error message
+
+ else
+ Error_Dim_Msg_For_Object_Declaration (N, Etyp, Expr);
+ end if;
end if;
-- Removal of dimensions in expression
@@ -2235,11 +2252,11 @@ package body Sem_Dim is
-- Expand_Put_Call_With_Symbol --
---------------------------------
- -- For procedure Put (resp. Put_Dim_Of) defined in
- -- System.Dim.Float_IO/System.Dim.Integer_IO, the default string parameter
- -- must be rewritten to include the unit symbols (resp. dimension symbols)
- -- in the output of a dimensioned object. Note that if a value is already
- -- supplied for parameter Symbol, this routine doesn't do anything.
+ -- For procedure Put (resp. Put_Dim_Of) defined in System.Dim.Float_IO
+ -- (System.Dim.Integer_IO), the default string parameter must be rewritten
+ -- to include the unit symbols (resp. dimension symbols) in the output
+ -- of a dimensioned object. Note that if a value is already supplied for
+ -- parameter Symbol, this routine doesn't do anything.
-- Case 1. Item is dimensionless
@@ -2330,22 +2347,20 @@ package body Sem_Dim is
if Nkind (Actual) = N_Parameter_Association
and then Chars (Selector_Name (Actual)) = Name_Symbol
then
-
- -- return True if the actual comes from source or if the string
- -- of symbols doesn't have the default value (i.e "").
+ -- Return True if the actual comes from source or if the string
+ -- of symbols doesn't have the default value (i.e. it is "").
return Comes_From_Source (Actual)
- or else String_Length
- (Strval
- (Explicit_Actual_Parameter (Actual))) /= 0;
+ or else
+ String_Length
+ (Strval (Explicit_Actual_Parameter (Actual))) /= 0;
end if;
Next (Actual);
end loop;
- -- At this point, the call has no parameter association
- -- Look to the last actual since the symbols parameter is the last
- -- one.
+ -- At this point, the call has no parameter association. Look to the
+ -- last actual since the symbols parameter is the last one.
return Nkind (Last (Actuals)) = N_String_Literal;
end Has_Symbols;
@@ -2441,6 +2456,7 @@ package body Sem_Dim is
-- Put_Dim_Of case
if Is_Put_Dim_Of then
+
-- Check that the item is not dimensionless
-- Create the new String_Literal with the new String_Id generated
@@ -2536,11 +2552,10 @@ package body Sem_Dim is
-- From_Dim_To_Str_Of_Dim_Symbols --
------------------------------------
- -- Given a dimension vector and the corresponding dimension system,
- -- create a String_Id to output the dimension symbols corresponding to the
- -- dimensions Dims. If In_Error_Msg is True, there is a special handling
- -- for character asterisk * which is an insertion character in error
- -- messages.
+ -- Given a dimension vector and the corresponding dimension system, create
+ -- a String_Id to output dimension symbols corresponding to the dimensions
+ -- Dims. If In_Error_Msg is True, there is a special handling for character
+ -- asterisk * which is an insertion character in error messages.
function From_Dim_To_Str_Of_Dim_Symbols
(Dims : Dimension_Type;
@@ -2551,9 +2566,9 @@ package body Sem_Dim is
First_Dim : Boolean := True;
procedure Store_String_Oexpon;
- -- Store the expon operator symbol "**" to the string. In error
- -- messages, asterisk * is a special character and must be precede by a
- -- quote ' to be placed literally into the message.
+ -- Store the expon operator symbol "**" in the string. In error
+ -- messages, asterisk * is a special character and must be quoted
+ -- to be placed literally into the message.
-------------------------
-- Store_String_Oexpon --
@@ -2563,7 +2578,6 @@ package body Sem_Dim is
begin
if In_Error_Msg then
Store_String_Chars ("'*'*");
-
else
Store_String_Chars ("**");
end if;
@@ -2639,7 +2653,6 @@ package body Sem_Dim is
end loop;
Store_String_Char (']');
-
return End_String;
end From_Dim_To_Str_Of_Dim_Symbols;
@@ -2669,6 +2682,7 @@ package body Sem_Dim is
for Position in Dimension_Type'Range loop
Dim_Power := Dims (Position);
+
if Dim_Power /= Zero then
if First_Dim then
@@ -2682,6 +2696,7 @@ package body Sem_Dim is
-- Positive dimension case
if Dim_Power.Numerator > 0 then
+
-- Integer case
if Dim_Power.Denominator = 1 then
@@ -2956,4 +2971,5 @@ package body Sem_Dim is
return Null_System;
end System_Of;
+
end Sem_Dim;
diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb
index c4dd8ede6ba..988a78f5781 100644
--- a/gcc/ada/sem_disp.adb
+++ b/gcc/ada/sem_disp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -493,8 +493,34 @@ package body Sem_Disp is
procedure Check_Dispatching_Context is
Subp : constant Entity_Id := Entity (Name (N));
+ Typ : constant Entity_Id := Etype (Subp);
Par : Node_Id;
+ procedure Abstract_Context_Error;
+ -- Error for abstract call dispatching on result is not dispatching
+
+ ----------------------------
+ -- Abstract_Context_Error --
+ ----------------------------
+
+ procedure Abstract_Context_Error is
+ begin
+ if Ekind (Subp) = E_Function then
+ Error_Msg_N
+ ("call to abstract function must be dispatching", N);
+
+ -- This error can occur for a procedure in the case of a call to
+ -- an abstract formal procedure with a statically tagged operand.
+
+ else
+ Error_Msg_N
+ ("call to abstract procedure must be dispatching",
+ N);
+ end if;
+ end Abstract_Context_Error;
+
+ -- Start of processing for Check_Dispatching_Context
+
begin
if Is_Abstract_Subprogram (Subp)
and then No (Controlling_Argument (N))
@@ -510,38 +536,85 @@ package body Sem_Disp is
return;
else
+ -- We need to determine whether the context of the call
+ -- provides a tag to make the call dispatching. This requires
+ -- the call to be the actual in an enclosing call, and that
+ -- actual must be controlling. If the call is an operand of
+ -- equality, the other operand must not ve abstract.
+
+ if not Is_Tagged_Type (Typ)
+ and then not
+ (Ekind (Typ) = E_Anonymous_Access_Type
+ and then Is_Tagged_Type (Designated_Type (Typ)))
+ then
+ Abstract_Context_Error;
+ return;
+ end if;
+
Par := Parent (N);
+
+ if Nkind (Par) = N_Parameter_Association then
+ Par := Parent (Par);
+ end if;
+
while Present (Par) loop
if Nkind_In (Par, N_Function_Call,
- N_Procedure_Call_Statement,
- N_Assignment_Statement,
- N_Op_Eq,
- N_Op_Ne)
- and then Is_Tagged_Type (Etype (Subp))
+ N_Procedure_Call_Statement)
+ and then Is_Entity_Name (Name (Par))
then
- return;
+ declare
+ A : Node_Id;
+ F : Entity_Id;
+
+ begin
+ -- Find formal for which call is the actual.
+
+ F := First_Formal (Entity (Name (Par)));
+ A := First_Actual (Par);
+ while Present (F) loop
+ if Is_Controlling_Formal (F)
+ and then (N = A or else Parent (N) = A)
+ then
+ return;
+ end if;
- elsif Nkind (Par) = N_Qualified_Expression
- or else Nkind (Par) = N_Unchecked_Type_Conversion
- then
- Par := Parent (Par);
+ Next_Formal (F);
+ Next_Actual (A);
+ end loop;
- else
- if Ekind (Subp) = E_Function then
Error_Msg_N
("call to abstract function must be dispatching", N);
+ return;
+ end;
- -- This error can occur for a procedure in the case of a
- -- call to an abstract formal procedure with a statically
- -- tagged operand.
+ -- For equalitiy operators, one of the operands must be
+ -- statically or dynamically tagged.
- else
- Error_Msg_N
- ("call to abstract procedure must be dispatching",
- N);
+ elsif Nkind_In (Par, N_Op_Eq, N_Op_Ne) then
+ if N = Right_Opnd (Par)
+ and then Is_Tag_Indeterminate (Left_Opnd (Par))
+ then
+ Abstract_Context_Error;
+
+ elsif N = Left_Opnd (Par)
+ and then Is_Tag_Indeterminate (Right_Opnd (Par))
+ then
+ Abstract_Context_Error;
end if;
return;
+
+ elsif Nkind (Par) = N_Assignment_Statement then
+ return;
+
+ elsif Nkind (Par) = N_Qualified_Expression
+ or else Nkind (Par) = N_Unchecked_Type_Conversion
+ then
+ Par := Parent (Par);
+
+ else
+ Abstract_Context_Error;
+ return;
end if;
end loop;
end if;
@@ -591,17 +664,17 @@ package body Sem_Disp is
-- If the call doesn't have a controlling actual but does have an
-- indeterminate actual that requires dispatching treatment, then an
- -- object is needed that will serve as the controlling argument for a
- -- dispatching call on the indeterminate actual. This can only occur
- -- in the unusual situation of a default actual given by a
- -- tag-indeterminate call and where the type of the call is an
+ -- object is needed that will serve as the controlling argument for
+ -- a dispatching call on the indeterminate actual. This can only
+ -- occur in the unusual situation of a default actual given by
+ -- a tag-indeterminate call and where the type of the call is an
-- ancestor of the type associated with a containing call to an
-- inherited operation (see AI-239).
- -- Rather than create an object of the tagged type, which would be
- -- problematic for various reasons (default initialization,
- -- discriminants), the tag of the containing call's associated tagged
- -- type is directly used to control the dispatching.
+ -- Rather than create an object of the tagged type, which would
+ -- be problematic for various reasons (default initialization,
+ -- discriminants), the tag of the containing call's associated
+ -- tagged type is directly used to control the dispatching.
if No (Control)
and then Indeterm_Ancestor_Call
@@ -640,8 +713,8 @@ package body Sem_Disp is
-- The tag is inherited from the enclosing call (the node
-- we are currently analyzing). Explicitly expand the
-- actual, since the previous call to Expand (from
- -- Resolve_Call) had no way of knowing about the required
- -- dispatching.
+ -- Resolve_Call) had no way of knowing about the
+ -- required dispatching.
Propagate_Tag (Control, Actual);
@@ -958,16 +1031,16 @@ package body Sem_Disp is
Decl_Item : Node_Id;
begin
- -- ??? The checks here for whether the type has been
- -- frozen prior to the new body are not complete. It's
- -- not simple to check frozenness at this point since
- -- the body has already caused the type to be prematurely
- -- frozen in Analyze_Declarations, but we're forced to
- -- recheck this here because of the odd rule interpretation
- -- that allows the overriding if the type wasn't frozen
- -- prior to the body. The freezing action should probably
- -- be delayed until after the spec is seen, but that's
- -- a tricky change to the delicate freezing code.
+ -- ??? The checks here for whether the type has been frozen
+ -- prior to the new body are not complete. It's not simple
+ -- to check frozenness at this point since the body has
+ -- already caused the type to be prematurely frozen in
+ -- Analyze_Declarations, but we're forced to recheck this
+ -- here because of the odd rule interpretation that allows
+ -- the overriding if the type wasn't frozen prior to the
+ -- body. The freezing action should probably be delayed
+ -- until after the spec is seen, but that's a tricky
+ -- change to the delicate freezing code.
-- Look at each declaration following the type up until the
-- new subprogram body. If any of the declarations is a body
@@ -1005,7 +1078,7 @@ package body Sem_Disp is
elsif Is_Frozen (Subp) then
-- The subprogram body declares a primitive operation.
- -- if the subprogram is already frozen, we must update
+ -- If the subprogram is already frozen, we must update
-- its dispatching information explicitly here. The
-- information is taken from the overridden subprogram.
-- We must also generate a cross-reference entry because
@@ -1073,8 +1146,8 @@ package body Sem_Disp is
-- (3.2.3(6)). Only report cases where the type and subprogram are
-- in the same declaration list (by checking the enclosing parent
-- declarations), to avoid spurious warnings on subprograms in
- -- instance bodies when the type is declared in the instance spec but
- -- hasn't been frozen by the instance body.
+ -- instance bodies when the type is declared in the instance spec
+ -- but hasn't been frozen by the instance body.
elsif not Is_Frozen (Tagged_Type)
and then In_Same_List (Parent (Tagged_Type), Parent (Parent (Subp)))
@@ -1567,12 +1640,12 @@ package body Sem_Disp is
then
Set_Alias (Old_Subp, Alias (Subp));
- -- The derived subprogram should inherit the abstractness
- -- of the parent subprogram (except in the case of a function
+ -- The derived subprogram should inherit the abstractness of
+ -- the parent subprogram (except in the case of a function
-- returning the type). This sets the abstractness properly
- -- for cases where a private extension may have inherited
- -- an abstract operation, but the full type is derived from
- -- a descendant type and inherits a nonabstract version.
+ -- for cases where a private extension may have inherited an
+ -- abstract operation, but the full type is derived from a
+ -- descendant type and inherits a nonabstract version.
if Etype (Subp) /= Tagged_Type then
Set_Is_Abstract_Subprogram
@@ -1696,7 +1769,9 @@ package body Sem_Disp is
Ctrl_Type : Entity_Id;
begin
- if Present (DTC_Entity (Subp)) then
+ if Ekind_In (Subp, E_Function, E_Procedure)
+ and then Present (DTC_Entity (Subp))
+ then
return Scope (DTC_Entity (Subp));
-- For subprograms internally generated by derivations of tagged types
@@ -1868,9 +1943,9 @@ package body Sem_Disp is
E := Homonym (E);
end loop;
- -- Search in the list of primitives of the type. Required to locate the
- -- covering primitive if the covering primitive is not visible (for
- -- example, non-visible inherited primitive of private type).
+ -- Search in the list of primitives of the type. Required to locate
+ -- the covering primitive if the covering primitive is not visible
+ -- (for example, non-visible inherited primitive of private type).
El := First_Elmt (Primitive_Operations (Tagged_Type));
while Present (El) loop
@@ -2197,8 +2272,8 @@ package body Sem_Disp is
and then Has_Interfaces (Tagged_Type)
then
-- Ada 2005 (AI-251): Update the attribute alias of all the aliased
- -- entities of the overridden primitive to reference New_Op, and also
- -- propagate the proper value of Is_Abstract_Subprogram. Verify
+ -- entities of the overridden primitive to reference New_Op, and
+ -- also propagate the proper value of Is_Abstract_Subprogram. Verify
-- that the new operation is subtype conformant with the interface
-- operations that it implements (for operations inherited from the
-- parent itself, this check is made when building the derived type).
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
index 4a98db6f1d9..d1b5f7c6b55 100644
--- a/gcc/ada/sem_elab.adb
+++ b/gcc/ada/sem_elab.adb
@@ -325,11 +325,13 @@ package body Sem_Elab is
-- Given two scopes E1 and E2, returns True if E1 is equal to E2, or is one
-- of its contained scopes, False otherwise.
- function Within_Elaborate_All (E : Entity_Id) return Boolean;
- -- Before emitting a warning on a scope E for a missing elaborate_all,
- -- check whether E may be in the context of a directly visible unit U to
- -- which the pragma applies. This prevents spurious warnings when the
- -- called entity is renamed within U.
+ function Within_Elaborate_All
+ (Unit : Unit_Number_Type;
+ E : Entity_Id) return Boolean;
+ -- Return True if we are within the scope of an Elaborate_All for E, or if
+ -- we are within the scope of an Elaborate_All for some other unit U, and U
+ -- with's E. This prevents spurious warnings when the called entity is
+ -- renamed within U, or in case of generic instances.
--------------------------------------
-- Activate_Elaborate_All_Desirable --
@@ -831,7 +833,7 @@ package body Sem_Elab is
end loop;
end if;
- if Within_Elaborate_All (E_Scope) then
+ if Within_Elaborate_All (Current_Sem_Unit, E_Scope) then
return;
end if;
@@ -1229,9 +1231,8 @@ package body Sem_Elab is
P := Parent (N);
while Present (P) loop
- if Nkind (P) = N_Parameter_Specification
- or else
- Nkind (P) = N_Component_Declaration
+ if Nkind_In (P, N_Parameter_Specification,
+ N_Component_Declaration)
then
return;
@@ -3282,46 +3283,121 @@ package body Sem_Elab is
-- Within_Elaborate_All --
--------------------------
- function Within_Elaborate_All (E : Entity_Id) return Boolean is
- Item : Node_Id;
- Item2 : Node_Id;
- Elab_Id : Entity_Id;
- Par : Node_Id;
+ function Within_Elaborate_All
+ (Unit : Unit_Number_Type;
+ E : Entity_Id) return Boolean
+ is
+ type Unit_Number_Set is array (Main_Unit .. Last_Unit) of Boolean;
+ pragma Pack (Unit_Number_Set);
- begin
- Item := First (Context_Items (Cunit (Current_Sem_Unit)));
- while Present (Item) loop
- if Nkind (Item) = N_Pragma
- and then Pragma_Name (Item) = Name_Elaborate_All
- then
- -- Return if some previous error on the pragma itself
+ Seen : Unit_Number_Set := (others => False);
+ -- Seen (X) is True after we have seen unit X in the walk. This is used
+ -- to prevent processing the same unit more than once.
- if Error_Posted (Item) then
- return False;
+ Result : Boolean := False;
+
+ procedure Helper (Unit : Unit_Number_Type);
+ -- This helper procedure does all the work for Within_Elaborate_All. It
+ -- walks the dependency graph, and sets Result to True if it finds an
+ -- appropriate Elaborate_All.
+
+ ------------
+ -- Helper --
+ ------------
+
+ procedure Helper (Unit : Unit_Number_Type) is
+ CU : constant Node_Id := Cunit (Unit);
+
+ Item : Node_Id;
+ Item2 : Node_Id;
+ Elab_Id : Entity_Id;
+ Par : Node_Id;
+
+ begin
+ if Seen (Unit) then
+ return;
+ else
+ Seen (Unit) := True;
+ end if;
+
+ -- First, check for Elaborate_Alls on this unit
+
+ Item := First (Context_Items (CU));
+ while Present (Item) loop
+ if Nkind (Item) = N_Pragma
+ and then Pragma_Name (Item) = Name_Elaborate_All
+ then
+ -- Return if some previous error on the pragma itself
+
+ if Error_Posted (Item) then
+ return;
+ end if;
+
+ Elab_Id :=
+ Entity
+ (Expression (First (Pragma_Argument_Associations (Item))));
+
+ if E = Elab_Id then
+ Result := True;
+ return;
+ end if;
+
+ Par := Parent (Unit_Declaration_Node (Elab_Id));
+
+ Item2 := First (Context_Items (Par));
+ while Present (Item2) loop
+ if Nkind (Item2) = N_With_Clause
+ and then Entity (Name (Item2)) = E
+ and then not Limited_Present (Item2)
+ then
+ Result := True;
+ return;
+ end if;
+
+ Next (Item2);
+ end loop;
end if;
- Elab_Id :=
- Entity
- (Expression (First (Pragma_Argument_Associations (Item))));
+ Next (Item);
+ end loop;
- Par := Parent (Unit_Declaration_Node (Elab_Id));
+ -- Second, recurse on with's. We could do this as part of the above
+ -- loop, but it's probably more efficient to have two loops, because
+ -- the relevant Elaborate_All is likely to be on the initial unit. In
+ -- other words, we're walking the with's breadth-first. This part is
+ -- only necessary in the dynamic elaboration model.
- Item2 := First (Context_Items (Par));
- while Present (Item2) loop
- if Nkind (Item2) = N_With_Clause
- and then Entity (Name (Item2)) = E
+ if Dynamic_Elaboration_Checks then
+ Item := First (Context_Items (CU));
+ while Present (Item) loop
+ if Nkind (Item) = N_With_Clause
+ and then not Limited_Present (Item)
then
- return True;
+ -- Note: the following call to Get_Cunit_Unit_Number does a
+ -- linear search, which could be slow, but it's OK because
+ -- we're about to give a warning anyway. Also, there might
+ -- be hundreds of units, but not millions. If it turns out
+ -- to be a problem, we could store the Get_Cunit_Unit_Number
+ -- in each N_Compilation_Unit node, but that would involve
+ -- rearranging N_Compilation_Unit_Aux to make room.
+
+ Helper (Get_Cunit_Unit_Number (Library_Unit (Item)));
+
+ if Result then
+ return;
+ end if;
end if;
- Next (Item2);
+ Next (Item);
end loop;
end if;
+ end Helper;
- Next (Item);
- end loop;
+ -- Start of processing for Within_Elaborate_All
- return False;
+ begin
+ Helper (Unit);
+ return Result;
end Within_Elaborate_All;
end Sem_Elab;
diff --git a/gcc/ada/sem_elim.adb b/gcc/ada/sem_elim.adb
index 3d1bd14eb7c..fdf9ba354c8 100644
--- a/gcc/ada/sem_elim.adb
+++ b/gcc/ada/sem_elim.adb
@@ -832,8 +832,8 @@ package body Sem_Elim is
function OK_Selected_Component (N : Node_Id) return Boolean;
-- Test if N is a selected component with all identifiers, or a selected
- -- component whose selector is an operator symbol. As a side effect if
- -- result is True, sets Num_Names to the number of names present
+ -- component whose selector is an operator symbol. As a side effect
+ -- if result is True, sets Num_Names to the number of names present
-- (identifiers, and operator if any).
---------------------------
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index cecdbef46ab..8553ce62875 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -214,6 +214,16 @@ package body Sem_Eval is
-- e.g. in the two operand case below, for string comparison, the result
-- is not static even though the two operands are static. In such cases,
-- the caller must reset the Is_Static_Expression flag in N.
+ --
+ -- If Fold and Stat are both set to False then this routine performs also
+ -- the following extra actions:
+ --
+ -- If either operand is Any_Type then propagate it to result to
+ -- prevent cascaded errors.
+ --
+ -- If some operand raises constraint error, then replace the node N
+ -- with the raise constraint error node. This replacement inherits the
+ -- Is_Static_Expression flag from the operands.
procedure Test_Expression_Is_Foldable
(N : Node_Id;
@@ -2702,8 +2712,6 @@ package body Sem_Eval is
Typ : constant Entity_Id := Etype (Left);
Otype : Entity_Id := Empty;
Result : Boolean;
- Stat : Boolean;
- Fold : Boolean;
begin
-- One special case to deal with first. If we can tell that the result
@@ -2919,128 +2927,144 @@ package body Sem_Eval is
end Length_Mismatch;
end if;
- -- Test for expression being foldable
-
- Test_Expression_Is_Foldable (N, Left, Right, Stat, Fold);
-
- -- Only comparisons of scalars can give static results. In particular,
- -- comparisons of strings never yield a static result, even if both
- -- operands are static strings.
-
- if not Is_Scalar_Type (Typ) then
- Stat := False;
- Set_Is_Static_Expression (N, False);
- end if;
+ declare
+ Is_Static_Expression : Boolean;
+ Is_Foldable : Boolean;
+ pragma Unreferenced (Is_Foldable);
- -- For operators on universal numeric types called as functions with
- -- an explicit scope, determine appropriate specific numeric type, and
- -- diagnose possible ambiguity.
+ begin
+ -- Initialize the value of Is_Static_Expression. The value of
+ -- Is_Foldable returned by Test_Expression_Is_Foldable is not needed
+ -- since, even when some operand is a variable, we can still perform
+ -- the static evaluation of the expression in some cases (for
+ -- example, for a variable of a subtype of Integer we statically
+ -- know that any value stored in such variable is smaller than
+ -- Integer'Last).
+
+ Test_Expression_Is_Foldable
+ (N, Left, Right, Is_Static_Expression, Is_Foldable);
+
+ -- Only comparisons of scalars can give static results. In
+ -- particular, comparisons of strings never yield a static
+ -- result, even if both operands are static strings.
+
+ if not Is_Scalar_Type (Typ) then
+ Is_Static_Expression := False;
+ Set_Is_Static_Expression (N, False);
+ end if;
- if Is_Universal_Numeric_Type (Etype (Left))
- and then
- Is_Universal_Numeric_Type (Etype (Right))
- then
- Otype := Find_Universal_Operator_Type (N);
- end if;
+ -- For operators on universal numeric types called as functions with
+ -- an explicit scope, determine appropriate specific numeric type,
+ -- and diagnose possible ambiguity.
- -- For static real type expressions, we cannot use Compile_Time_Compare
- -- since it worries about run-time results which are not exact.
+ if Is_Universal_Numeric_Type (Etype (Left))
+ and then
+ Is_Universal_Numeric_Type (Etype (Right))
+ then
+ Otype := Find_Universal_Operator_Type (N);
+ end if;
- if Stat and then Is_Real_Type (Typ) then
- declare
- Left_Real : constant Ureal := Expr_Value_R (Left);
- Right_Real : constant Ureal := Expr_Value_R (Right);
+ -- For static real type expressions, we cannot use
+ -- Compile_Time_Compare since it worries about run-time
+ -- results which are not exact.
- begin
- case Nkind (N) is
- when N_Op_Eq => Result := (Left_Real = Right_Real);
- when N_Op_Ne => Result := (Left_Real /= Right_Real);
- when N_Op_Lt => Result := (Left_Real < Right_Real);
- when N_Op_Le => Result := (Left_Real <= Right_Real);
- when N_Op_Gt => Result := (Left_Real > Right_Real);
- when N_Op_Ge => Result := (Left_Real >= Right_Real);
+ if Is_Static_Expression and then Is_Real_Type (Typ) then
+ declare
+ Left_Real : constant Ureal := Expr_Value_R (Left);
+ Right_Real : constant Ureal := Expr_Value_R (Right);
- when others =>
- raise Program_Error;
- end case;
+ begin
+ case Nkind (N) is
+ when N_Op_Eq => Result := (Left_Real = Right_Real);
+ when N_Op_Ne => Result := (Left_Real /= Right_Real);
+ when N_Op_Lt => Result := (Left_Real < Right_Real);
+ when N_Op_Le => Result := (Left_Real <= Right_Real);
+ when N_Op_Gt => Result := (Left_Real > Right_Real);
+ when N_Op_Ge => Result := (Left_Real >= Right_Real);
+
+ when others =>
+ raise Program_Error;
+ end case;
- Fold_Uint (N, Test (Result), True);
- end;
+ Fold_Uint (N, Test (Result), True);
+ end;
- -- For all other cases, we use Compile_Time_Compare to do the compare
+ -- For all other cases, we use Compile_Time_Compare to do the compare
- else
- declare
- CR : constant Compare_Result :=
- Compile_Time_Compare (Left, Right, Assume_Valid => False);
+ else
+ declare
+ CR : constant Compare_Result :=
+ Compile_Time_Compare
+ (Left, Right, Assume_Valid => False);
- begin
- if CR = Unknown then
- return;
- end if;
+ begin
+ if CR = Unknown then
+ return;
+ end if;
- case Nkind (N) is
- when N_Op_Eq =>
- if CR = EQ then
- Result := True;
- elsif CR = NE or else CR = GT or else CR = LT then
- Result := False;
- else
- return;
- end if;
+ case Nkind (N) is
+ when N_Op_Eq =>
+ if CR = EQ then
+ Result := True;
+ elsif CR = NE or else CR = GT or else CR = LT then
+ Result := False;
+ else
+ return;
+ end if;
- when N_Op_Ne =>
- if CR = NE or else CR = GT or else CR = LT then
- Result := True;
- elsif CR = EQ then
- Result := False;
- else
- return;
- end if;
+ when N_Op_Ne =>
+ if CR = NE or else CR = GT or else CR = LT then
+ Result := True;
+ elsif CR = EQ then
+ Result := False;
+ else
+ return;
+ end if;
- when N_Op_Lt =>
- if CR = LT then
- Result := True;
- elsif CR = EQ or else CR = GT or else CR = GE then
- Result := False;
- else
- return;
- end if;
+ when N_Op_Lt =>
+ if CR = LT then
+ Result := True;
+ elsif CR = EQ or else CR = GT or else CR = GE then
+ Result := False;
+ else
+ return;
+ end if;
- when N_Op_Le =>
- if CR = LT or else CR = EQ or else CR = LE then
- Result := True;
- elsif CR = GT then
- Result := False;
- else
- return;
- end if;
+ when N_Op_Le =>
+ if CR = LT or else CR = EQ or else CR = LE then
+ Result := True;
+ elsif CR = GT then
+ Result := False;
+ else
+ return;
+ end if;
- when N_Op_Gt =>
- if CR = GT then
- Result := True;
- elsif CR = EQ or else CR = LT or else CR = LE then
- Result := False;
- else
- return;
- end if;
+ when N_Op_Gt =>
+ if CR = GT then
+ Result := True;
+ elsif CR = EQ or else CR = LT or else CR = LE then
+ Result := False;
+ else
+ return;
+ end if;
- when N_Op_Ge =>
- if CR = GT or else CR = EQ or else CR = GE then
- Result := True;
- elsif CR = LT then
- Result := False;
- else
- return;
- end if;
+ when N_Op_Ge =>
+ if CR = GT or else CR = EQ or else CR = GE then
+ Result := True;
+ elsif CR = LT then
+ Result := False;
+ else
+ return;
+ end if;
- when others =>
- raise Program_Error;
- end case;
- end;
+ when others =>
+ raise Program_Error;
+ end case;
+ end;
- Fold_Uint (N, Test (Result), Stat);
- end if;
+ Fold_Uint (N, Test (Result), Is_Static_Expression);
+ end if;
+ end;
-- For the case of a folded relational operator on a specific numeric
-- type, freeze operand type now.
@@ -4130,7 +4154,7 @@ package body Sem_Eval is
-- Never in range if both types are not scalar. Don't know if this can
-- actually happen, but just in case.
- elsif not Is_Scalar_Type (T1) or else not Is_Scalar_Type (T1) then
+ elsif not Is_Scalar_Type (T1) or else not Is_Scalar_Type (T2) then
return False;
-- If T1 has infinities but T2 doesn't have infinities, then T1 is
diff --git a/gcc/ada/sem_eval.ads b/gcc/ada/sem_eval.ads
index 6e70021db29..a2f69feac33 100644
--- a/gcc/ada/sem_eval.ads
+++ b/gcc/ada/sem_eval.ads
@@ -225,7 +225,7 @@ package Sem_Eval is
-- are statically matching subtypes (RM 4.9.1(1-2)).
function Compile_Time_Known_Value (Op : Node_Id) return Boolean;
- -- Returns true if Op is an expression not raising constraint error whose
+ -- Returns true if Op is an expression not raising Constraint_Error whose
-- value is known at compile time. This is true if Op is a static
-- expression, but can also be true for expressions which are technically
-- non-static but which are in fact known at compile time, such as the
@@ -236,9 +236,12 @@ package Sem_Eval is
function Compile_Time_Known_Value_Or_Aggr (Op : Node_Id) return Boolean;
-- Similar to Compile_Time_Known_Value, but also returns True if the value
- -- is a compile time known aggregate, i.e. an aggregate all of whose
- -- constituent expressions are either compile time known values or compile
- -- time known aggregates.
+ -- is a compile-time-known aggregate, i.e. an aggregate all of whose
+ -- constituent expressions are either compile-time-known values (based on
+ -- calling Compile_Time_Known_Value) or compile-time-known aggregates.
+ -- Note that the aggregate could still involve run-time checks that might
+ -- fail (such as for subtype checks in component associations), but the
+ -- evaluation of the expressions themselves will not raise an exception.
function Compile_Time_Known_Bounds (T : Entity_Id) return Boolean;
-- If T is an array whose index bounds are all known at compile time, then
diff --git a/gcc/ada/sem_mech.adb b/gcc/ada/sem_mech.adb
index d21e6ae6fa5..6bd498ef9fc 100644
--- a/gcc/ada/sem_mech.adb
+++ b/gcc/ada/sem_mech.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1996-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -352,13 +352,13 @@ package body Sem_Mech is
-- Access parameters (RM B.3(68))
-- Access to subprogram types (RM B.3(71))
- -- Note: in the case of access parameters, it is the
- -- pointer that is passed by value. In GNAT access
- -- parameters are treated as IN parameters of an
- -- anonymous access type, so this falls out free.
+ -- Note: in the case of access parameters, it is the pointer
+ -- that is passed by value. In GNAT access parameters are
+ -- treated as IN parameters of an anonymous access type, so
+ -- this falls out free.
- -- The bottom line is that all IN elementary types
- -- are passed by copy in GNAT.
+ -- The bottom line is that all IN elementary types are
+ -- passed by copy in GNAT.
if Is_Elementary_Type (Typ) then
if Ekind (Formal) = E_In_Parameter then
@@ -385,10 +385,21 @@ package body Sem_Mech is
if Convention (Typ) /= Convention_C then
Set_Mechanism (Formal, By_Reference);
- -- If convention C_Pass_By_Copy was specified for
- -- the record type, then we pass by copy.
+ -- OUT and IN OUT parameters of record types are passed
+ -- by reference regardless of pragmas (RM B.3 (69/2)).
- elsif C_Pass_By_Copy (Typ) then
+ elsif Ekind_In (Formal, E_Out_Parameter,
+ E_In_Out_Parameter)
+ then
+ Set_Mechanism (Formal, By_Reference);
+
+ -- IN parameters of record types are passed by copy only
+ -- when the related type has convention C_Pass_By_Copy
+ -- (RM B.3 (68.1/2)).
+
+ elsif Ekind (Formal) = E_In_Parameter
+ and then C_Pass_By_Copy (Typ)
+ then
Set_Mechanism (Formal, By_Copy);
-- Otherwise, for a C convention record, we set the
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 8b2eb1c908c..4d377585e5f 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -2011,8 +2011,7 @@ package body Sem_Prag is
---------------
procedure Chain_PPC (PO : Node_Id) is
- S : Entity_Id;
- P : Node_Id;
+ S : Entity_Id;
begin
if Nkind (PO) = N_Abstract_Subprogram_Declaration then
@@ -2060,60 +2059,6 @@ package body Sem_Prag is
S := Defining_Unit_Name (Specification (PO));
end if;
- -- Make sure we do not have the case of a precondition pragma when
- -- the Pre'Class aspect is present.
-
- -- We do this by looking at pragmas already chained to the entity
- -- since the aspect derived pragma will be put on this list first.
-
- if Pragma_Name (N) = Name_Precondition then
- if not From_Aspect_Specification (N) then
- P := Spec_PPC_List (Contract (S));
- while Present (P) loop
- if Pragma_Name (P) = Name_Precondition
- and then From_Aspect_Specification (P)
- and then Class_Present (P)
- then
- Error_Msg_Sloc := Sloc (P);
- Error_Pragma
- ("pragma% not allowed, `Pre''Class` aspect given#");
- end if;
-
- P := Next_Pragma (P);
- end loop;
- end if;
- end if;
-
- -- Similarly check for Pre with inherited Pre'Class. Note that
- -- we cover the aspect case as well here.
-
- if Pragma_Name (N) = Name_Precondition
- and then not Class_Present (N)
- then
- declare
- Inherited : constant Subprogram_List :=
- Inherited_Subprograms (S);
- P : Node_Id;
-
- begin
- for J in Inherited'Range loop
- P := Spec_PPC_List (Contract (Inherited (J)));
- while Present (P) loop
- if Pragma_Name (P) = Name_Precondition
- and then Class_Present (P)
- then
- Error_Msg_Sloc := Sloc (P);
- Error_Pragma
- ("pragma% not allowed, `Pre''Class` "
- & "aspect inherited from#");
- end if;
-
- P := Next_Pragma (P);
- end loop;
- end loop;
- end;
- end if;
-
-- Note: we do not analyze the pragma at this point. Instead we
-- delay this analysis until the end of the declarative part in
-- which the pragma appears. This implements the required delay
@@ -4610,10 +4555,12 @@ package body Sem_Prag is
null;
-- Verify that the homonym is in the same declarative part (not
- -- just the same scope).
+ -- just the same scope). If the pragma comes from an aspect
+ -- specification we know that it is part of the declaration.
elsif Parent (Unit_Declaration_Node (Def_Id)) /= Parent (N)
and then Nkind (Parent (N)) /= N_Compilation_Unit_Aux
+ and then not From_Aspect_Specification (N)
then
exit;
@@ -4745,6 +4692,12 @@ package body Sem_Prag is
Get_Pragma_Arg (Arg2));
end if;
+ if Etype (Def_Id) /= Def_Id
+ and then not Is_CPP_Class (Root_Type (Def_Id))
+ then
+ Error_Msg_N ("root type must be a 'C'P'P type", Arg1);
+ end if;
+
Set_Is_CPP_Class (Def_Id);
-- Imported CPP types must not have discriminants (because C++
@@ -4988,6 +4941,15 @@ package body Sem_Prag is
then
Error_Msg_N
("Inline cannot apply to a formal subprogram", N);
+
+ -- If Subp is a renaming, it is the renamed entity that
+ -- will appear in any call, and be inlined. However, for
+ -- ASIS uses it is convenient to indicate that the renaming
+ -- itself is an inlined subprogram, so that some gnatcheck
+ -- rules can be applied in the absence of expansion.
+
+ elsif Nkind (Decl) = N_Subprogram_Renaming_Declaration then
+ Set_Inline_Flags (Subp);
end if;
end if;
@@ -5523,9 +5485,9 @@ package body Sem_Prag is
-- affected by this processing).
if R_Id = No_Exceptions and then not Warn then
- for J in Scope_Suppress'Range loop
+ for J in Scope_Suppress.Suppress'Range loop
if J /= Atomic_Synchronization then
- Scope_Suppress (J) := True;
+ Scope_Suppress.Suppress (J) := True;
end if;
end loop;
end if;
@@ -5667,9 +5629,7 @@ package body Sem_Prag is
-- If this is a first subtype, and the base type is distinct,
-- then also set the suppress flags on the base type.
- if Is_First_Subtype (E)
- and then Etype (E) /= E
- then
+ if Is_First_Subtype (E) and then Etype (E) /= E then
Suppress_Unsuppress_Echeck (Etype (E), C);
end if;
end Suppress_Unsuppress_Echeck;
@@ -5681,9 +5641,7 @@ package body Sem_Prag is
-- user code: we want to generate checks for analysis purposes, as
-- set respectively by -gnatC and -gnatd.F
- if (CodePeer_Mode or Alfa_Mode)
- and then Comes_From_Source (N)
- then
+ if (CodePeer_Mode or Alfa_Mode) and then Comes_From_Source (N) then
return;
end if;
@@ -5706,10 +5664,17 @@ package body Sem_Prag is
("argument of pragma% is not valid check name", Arg1);
end if;
- if not Suppress_Case
- and then (C = All_Checks or else C = Overflow_Check)
- then
- Opt.Overflow_Checks_Unsuppressed := True;
+ -- Special processing for overflow check case
+
+ if C = All_Checks or else C = Overflow_Check then
+ if Suppress_Case then
+ Scope_Suppress.Overflow_Checks_General := Suppress;
+ Scope_Suppress.Overflow_Checks_Assertions := Suppress;
+ else
+ Scope_Suppress.Overflow_Checks_General := Check_All;
+ Scope_Suppress.Overflow_Checks_Assertions := Check_All;
+ Opt.Overflow_Checks_Unsuppressed := True;
+ end if;
end if;
if Arg_Count = 1 then
@@ -5727,11 +5692,12 @@ package body Sem_Prag is
-- Atomic_Synchronization is also not affected, since this is
-- not a real check.
- for J in Scope_Suppress'Range loop
+ for J in Scope_Suppress.Suppress'Range loop
if J /= Elaboration_Check
- and then J /= Atomic_Synchronization
+ and then
+ J /= Atomic_Synchronization
then
- Scope_Suppress (J) := Suppress_Case;
+ Scope_Suppress.Suppress (J) := Suppress_Case;
end if;
end loop;
@@ -5744,7 +5710,7 @@ package body Sem_Prag is
and then (not Comes_From_Source (N)
or else C /= Atomic_Synchronization)
then
- Scope_Suppress (C) := Suppress_Case;
+ Scope_Suppress.Suppress (C) := Suppress_Case;
end if;
-- Also make an entry in the Local_Entity_Suppress table
@@ -7706,109 +7672,27 @@ package body Sem_Prag is
-- pragma CPP_Class ([Entity =>] local_NAME)
when Pragma_CPP_Class => CPP_Class : declare
- Arg : Node_Id;
- Typ : Entity_Id;
-
begin
- if Warn_On_Obsolescent_Feature then
- Error_Msg_N
- ("'G'N'A'T pragma cpp'_class is now obsolete; replace it" &
- " by pragma import?", N);
- end if;
-
GNAT_Pragma;
- Check_Arg_Count (1);
- Check_Optional_Identifier (Arg1, Name_Entity);
- Check_Arg_Is_Local_Name (Arg1);
-
- Arg := Get_Pragma_Arg (Arg1);
- Analyze (Arg);
- if Etype (Arg) = Any_Type then
- return;
- end if;
-
- if not Is_Entity_Name (Arg)
- or else not Is_Type (Entity (Arg))
- then
- Error_Pragma_Arg ("pragma% requires a type mark", Arg1);
- end if;
-
- Typ := Entity (Arg);
-
- if not Is_Tagged_Type (Typ) then
- Error_Pragma_Arg ("pragma% applicable to tagged types ", Arg1);
- end if;
-
- -- Types treated as CPP classes must be declared limited (note:
- -- this used to be a warning but there is no real benefit to it
- -- since we did effectively intend to treat the type as limited
- -- anyway).
-
- if not Is_Limited_Type (Typ) then
- Error_Msg_N
- ("imported 'C'P'P type must be limited",
- Get_Pragma_Arg (Arg1));
- end if;
-
- Set_Is_CPP_Class (Typ);
- Set_Convention (Typ, Convention_CPP);
-
- -- Imported CPP types must not have discriminants (because C++
- -- classes do not have discriminants).
-
- if Has_Discriminants (Typ) then
+ if Warn_On_Obsolescent_Feature then
+ -- Following message is obsolete ???
Error_Msg_N
- ("imported 'C'P'P type cannot have discriminants",
- First (Discriminant_Specifications
- (Declaration_Node (Typ))));
+ ("'G'N'A'T pragma cpp'_class is now obsolete and has no " &
+ "effect; replace it by pragma import?", N);
end if;
- -- Components of imported CPP types must not have default
- -- expressions because the constructor (if any) is in the
- -- C++ side.
-
- if Is_Incomplete_Or_Private_Type (Typ)
- and then No (Underlying_Type (Typ))
- then
- -- It should be an error to apply pragma CPP to a private
- -- type if the underlying type is not visible (as it is
- -- for any representation item). For now, for backward
- -- compatibility we do nothing but we cannot check components
- -- because they are not available at this stage. All this code
- -- will be removed when we cleanup this obsolete GNAT pragma???
-
- null;
-
- else
- declare
- Tdef : constant Node_Id :=
- Type_Definition (Declaration_Node (Typ));
- Clist : Node_Id;
- Comp : Node_Id;
-
- begin
- if Nkind (Tdef) = N_Record_Definition then
- Clist := Component_List (Tdef);
- else
- pragma Assert (Nkind (Tdef) = N_Derived_Type_Definition);
- Clist := Component_List (Record_Extension_Part (Tdef));
- end if;
-
- if Present (Clist) then
- Comp := First (Component_Items (Clist));
- while Present (Comp) loop
- if Present (Expression (Comp)) then
- Error_Msg_N
- ("component of imported 'C'P'P type cannot have" &
- " default expression", Expression (Comp));
- end if;
+ Check_Arg_Count (1);
- Next (Comp);
- end loop;
- end if;
- end;
- end if;
+ Rewrite (N,
+ Make_Pragma (Loc,
+ Chars => Name_Import,
+ Pragma_Argument_Associations =>
+ New_List (
+ Make_Pragma_Argument_Association (Loc,
+ Expression => Make_Identifier (Loc, Name_CPP)),
+ New_Copy (First (Pragma_Argument_Associations (N))))));
+ Analyze (N);
end CPP_Class;
---------------------
@@ -7857,6 +7741,12 @@ package body Sem_Prag is
and then
Is_CPP_Class (Root_Type (Etype (Def_Id)))))
then
+ if Scope (Def_Id) /= Scope (Etype (Def_Id)) then
+ Error_Msg_N
+ ("'C'P'P constructor must be defined in the scope of " &
+ "its returned type", Arg1);
+ end if;
+
if Arg_Count >= 2 then
Set_Imported (Def_Id);
Set_Is_Public (Def_Id);
@@ -7865,6 +7755,7 @@ package body Sem_Prag is
Set_Has_Completion (Def_Id);
Set_Is_Constructor (Def_Id);
+ Set_Convention (Def_Id, Convention_CPP);
-- Imported C++ constructors are not dispatching primitives
-- because in C++ they don't have a dispatch table slot.
@@ -7876,8 +7767,8 @@ package body Sem_Prag is
if Is_Tagged_Type (Etype (Def_Id))
and then not Is_Class_Wide_Type (Etype (Def_Id))
+ and then Is_Dispatching_Operation (Def_Id)
then
- pragma Assert (Is_Dispatching_Operation (Def_Id));
Tag_Typ := Etype (Def_Id);
Elmt := First_Elmt (Primitive_Operations (Tag_Typ));
@@ -11145,8 +11036,7 @@ package body Sem_Prag is
Arg := Get_Pragma_Arg (Arg1);
Val := Is_True (Static_Boolean (Arg));
- -- Zero argument. In this case the expression is considered to
- -- be True.
+ -- No arguments (expression is considered to be True)
else
Val := True;
@@ -11159,7 +11049,7 @@ package body Sem_Prag is
Record_Rep_Item (Ent, N);
Set_Uses_Lock_Free (Ent, Val);
- -- Anything else is incorrect
+ -- Anything else is incorrect placement
else
Pragma_Misplaced;
@@ -11177,6 +11067,7 @@ package body Sem_Prag is
range First_Locking_Policy_Name .. Last_Locking_Policy_Name;
LP_Val : LP_Range;
LP : Character;
+
begin
Check_Ada_83_Warning;
Check_Arg_Count (1);
@@ -11186,9 +11077,12 @@ package body Sem_Prag is
LP_Val := Chars (Get_Pragma_Arg (Arg1));
case LP_Val is
- when Name_Ceiling_Locking => LP := 'C';
- when Name_Inheritance_Locking => LP := 'I';
- when Name_Concurrent_Readers_Locking => LP := 'R';
+ when Name_Ceiling_Locking =>
+ LP := 'C';
+ when Name_Inheritance_Locking =>
+ LP := 'I';
+ when Name_Concurrent_Readers_Locking =>
+ LP := 'R';
end case;
if Locking_Policy /= ' '
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 28832237997..21d3e145d33 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -334,21 +334,20 @@ package body Sem_Res is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Analyze_And_Resolve (N, Typ);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
-
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Analyze_And_Resolve (N, Typ);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
@@ -375,27 +374,24 @@ package body Sem_Res is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Analyze_And_Resolve (N);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
-
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Analyze_And_Resolve (N);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
- if Current_Scope /= Scop
- and then Scope_Is_Transient
- then
+ if Current_Scope /= Scop and then Scope_Is_Transient then
Scope_Stack.Table (Scope_Stack.Last).Save_Scope_Suppress :=
Scope_Suppress;
end if;
@@ -2904,20 +2900,20 @@ package body Sem_Res is
begin
if Suppress = All_Checks then
declare
- Svg : constant Suppress_Array := Scope_Suppress;
+ Svg : constant Suppress_Record := Scope_Suppress;
begin
- Scope_Suppress := (others => True);
+ Scope_Suppress := Suppress_All;
Resolve (N, Typ);
Scope_Suppress := Svg;
end;
else
declare
- Svg : constant Boolean := Scope_Suppress (Suppress);
+ Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
begin
- Scope_Suppress (Suppress) := True;
+ Scope_Suppress.Suppress (Suppress) := True;
Resolve (N, Typ);
- Scope_Suppress (Suppress) := Svg;
+ Scope_Suppress.Suppress (Suppress) := Svg;
end;
end if;
end Resolve;
@@ -5839,9 +5835,9 @@ package body Sem_Res is
Check_Restriction (No_Relative_Delay, N);
end if;
- -- Issue an error for a call to an eliminated subprogram.
- -- The routine will not perform the check if the call appears within
- -- a default expression.
+ -- Issue an error for a call to an eliminated subprogram. This routine
+ -- will not perform the check if the call appears within a default
+ -- expression.
Check_For_Eliminated_Subprogram (Subp, Nam);
@@ -7057,26 +7053,48 @@ package body Sem_Res is
Loc : constant Source_Ptr := Sloc (N);
New_N : Node_Id;
P : constant Node_Id := Prefix (N);
+
+ P_Typ : Entity_Id;
+ -- The candidate prefix type, if overloaded
+
I : Interp_Index;
It : Interp;
begin
Check_Fully_Declared_Prefix (Typ, P);
+ P_Typ := Empty;
if Is_Overloaded (P) then
-- Use the context type to select the prefix that has the correct
- -- designated type.
+ -- designated type. Keep the first match, which will be the inner-
+ -- most.
Get_First_Interp (P, I, It);
+
while Present (It.Typ) loop
- exit when Is_Access_Type (It.Typ)
- and then Covers (Typ, Designated_Type (It.Typ));
+ if Is_Access_Type (It.Typ)
+ and then Covers (Typ, Designated_Type (It.Typ))
+ then
+ if No (P_Typ) then
+ P_Typ := It.Typ;
+ end if;
+
+ -- Remove access types that do not match, but preserve access
+ -- to subprogram interpretations, in case a further dereference
+ -- is needed (see below).
+
+ elsif Ekind (It.Typ) /= E_Access_Subprogram_Type then
+ Remove_Interp (I);
+ end if;
+
Get_Next_Interp (I, It);
end loop;
- if Present (It.Typ) then
- Resolve (P, It.Typ);
+ if Present (P_Typ) then
+ Resolve (P, P_Typ);
+ Set_Etype (N, Designated_Type (P_Typ));
+
else
-- If no interpretation covers the designated type of the prefix,
-- this is the pathological case where not all implementations of
@@ -7107,7 +7125,7 @@ package body Sem_Res is
return;
end if;
- Set_Etype (N, Designated_Type (It.Typ));
+ -- If not overloaded, resolve P with its own type
else
Resolve (P);
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index f42c7547816..9d095309f82 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -4500,7 +4500,8 @@ package body Sem_Util is
Pos : Uint;
Loc : Source_Ptr) return Node_Id
is
- Lit : Node_Id;
+ Btyp : Entity_Id := Base_Type (T);
+ Lit : Node_Id;
begin
-- In the case where the literal is of type Character, Wide_Character
@@ -4522,7 +4523,11 @@ package body Sem_Util is
--
else
- Lit := First_Literal (Base_Type (T));
+ if Is_Private_Type (Btyp) and then Present (Full_View (Btyp)) then
+ Btyp := Full_View (Btyp);
+ end if;
+
+ Lit := First_Literal (Btyp);
for J in 1 .. UI_To_Int (Pos) loop
Next_Literal (Lit);
end loop;
@@ -6306,16 +6311,17 @@ package body Sem_Util is
end In_Parameter_Specification;
-------------------------------------
- -- In_Reverse_Storage_Order_Record --
+ -- In_Reverse_Storage_Order_Object --
-------------------------------------
- function In_Reverse_Storage_Order_Record (N : Node_Id) return Boolean is
+ function In_Reverse_Storage_Order_Object (N : Node_Id) return Boolean is
Pref : Node_Id;
- begin
- Pref := N;
+ Btyp : Entity_Id := Empty;
+ begin
-- Climb up indexed components
+ Pref := N;
loop
case Nkind (Pref) is
when N_Selected_Component =>
@@ -6331,10 +6337,15 @@ package body Sem_Util is
end case;
end loop;
- return Present (Pref)
- and then Is_Record_Type (Etype (Pref))
- and then Reverse_Storage_Order (Etype (Pref));
- end In_Reverse_Storage_Order_Record;
+ if Present (Pref) then
+ Btyp := Base_Type (Etype (Pref));
+ end if;
+
+ return
+ Present (Btyp)
+ and then (Is_Record_Type (Btyp) or else Is_Array_Type (Btyp))
+ and then Reverse_Storage_Order (Btyp);
+ end In_Reverse_Storage_Order_Object;
--------------------------------------
-- In_Subprogram_Or_Concurrent_Unit --
@@ -12822,6 +12833,47 @@ package body Sem_Util is
end if;
end Subprogram_Access_Level;
+ -------------------------------
+ -- Support_Atomic_Primitives --
+ -------------------------------
+
+ function Support_Atomic_Primitives (Typ : Entity_Id) return Boolean is
+ Size : Int;
+
+ begin
+ -- Verify the alignment of Typ is known
+
+ if not Known_Alignment (Typ) then
+ return False;
+ end if;
+
+ if Known_Static_Esize (Typ) then
+ Size := UI_To_Int (Esize (Typ));
+
+ -- If the Esize (Object_Size) is unknown at compile-time, look at the
+ -- RM_Size (Value_Size) since it may have been set by an explicit rep
+ -- item.
+
+ elsif Known_Static_RM_Size (Typ) then
+ Size := UI_To_Int (RM_Size (Typ));
+
+ -- Otherwise, the size is considered to be unknown.
+
+ else
+ return False;
+ end if;
+
+ -- Check that the size of the component is 8, 16, 32 or 64 bits and that
+ -- Typ is properly aligned.
+
+ case Size is
+ when 8 | 16 | 32 | 64 =>
+ return Size = UI_To_Int (Alignment (Typ)) * 8;
+ when others =>
+ return False;
+ end case;
+ end Support_Atomic_Primitives;
+
-----------------
-- Trace_Scope --
-----------------
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index d6e0770b364..8d1f7cfadb2 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -742,9 +742,9 @@ package Sem_Util is
function In_Parameter_Specification (N : Node_Id) return Boolean;
-- Returns True if node N belongs to a parameter specification
- function In_Reverse_Storage_Order_Record (N : Node_Id) return Boolean;
- -- Returns True if N denotes a component or subcomponent in a record object
- -- that has Reverse_Storage_Order.
+ function In_Reverse_Storage_Order_Object (N : Node_Id) return Boolean;
+ -- Returns True if N denotes a component or subcomponent in a record or
+ -- array that has Reverse_Storage_Order.
function In_Subprogram_Or_Concurrent_Unit return Boolean;
-- Determines if the current scope is within a subprogram compilation unit
@@ -1477,6 +1477,10 @@ package Sem_Util is
function Subprogram_Access_Level (Subp : Entity_Id) return Uint;
-- Return the accessibility level of the view denoted by Subp
+ function Support_Atomic_Primitives (Typ : Entity_Id) return Boolean;
+ -- Return True if Typ supports the GCC built-in atomic operations (i.e. if
+ -- Typ is properly sized and aligned).
+
procedure Trace_Scope (N : Node_Id; E : Entity_Id; Msg : String);
-- Print debugging information on entry to each unit being analyzed
diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb
index d1c1480858a..d2413ad2c1b 100644
--- a/gcc/ada/sinfo.adb
+++ b/gcc/ada/sinfo.adb
@@ -2844,14 +2844,6 @@ package body Sinfo is
return List3 (N);
end Statements;
- function Static_Processing_OK
- (N : Node_Id) return Boolean is
- begin
- pragma Assert (False
- or else NT (N).Nkind = N_Aggregate);
- return Flag4 (N);
- end Static_Processing_OK;
-
function Storage_Pool
(N : Node_Id) return Node_Id is
begin
@@ -5905,14 +5897,6 @@ package body Sinfo is
Set_List3_With_Parent (N, Val);
end Set_Statements;
- procedure Set_Static_Processing_OK
- (N : Node_Id; Val : Boolean) is
- begin
- pragma Assert (False
- or else NT (N).Nkind = N_Aggregate);
- Set_Flag4 (N, Val);
- end Set_Static_Processing_OK;
-
procedure Set_Storage_Pool
(N : Node_Id; Val : Node_Id) is
begin
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index cfaa82842c9..560d6c24b95 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -669,8 +669,8 @@ package Sinfo is
-- Present in N_Aggregate nodes. Set for aggregates which can be fully
-- evaluated at compile time without raising constraint error. Such
-- aggregates can be passed as is to Gigi without any expansion. See
- -- Sem_Aggr for the specific conditions under which an aggregate has this
- -- flag set. See also the flag Static_Processing_OK.
+ -- Exp_Aggr for the specific conditions under which an aggregate has this
+ -- flag set.
-- Componentwise_Assignment (Flag14-Sem)
-- Present in N_Assignment_Statement nodes. Set for a record assignment
@@ -1725,17 +1725,6 @@ package Sinfo is
-- This flag is set in both the N_Aspect_Specification node itself,
-- and in the pragma which is generated from this node.
- -- Static_Processing_OK (Flag4-Sem)
- -- Present in N_Aggregate nodes. When the Compile_Time_Known_Aggregate
- -- flag is set, the full value of the aggregate can be determined at
- -- compile time and the aggregate can be passed as is to the back-end.
- -- In this event it is irrelevant whether this flag is set or not.
- -- However, if the flag Compile_Time_Known_Aggregate is not set but
- -- Static_Processing_OK is set, the aggregate can (but need not) be
- -- converted into a compile time known aggregate by the expander. See
- -- Sem_Aggr for the specific conditions under which an aggregate has its
- -- Static_Processing_OK flag set.
-
-- Storage_Pool (Node1-Sem)
-- Present in N_Allocator, N_Free_Statement, N_Simple_Return_Statement,
-- and N_Extended_Return_Statement nodes. References the entity for the
@@ -3391,7 +3380,6 @@ package Sinfo is
-- Null_Record_Present (Flag17)
-- Aggregate_Bounds (Node3-Sem)
-- Associated_Node (Node4-Sem)
- -- Static_Processing_OK (Flag4-Sem)
-- Compile_Time_Known_Aggregate (Flag18-Sem)
-- Expansion_Delayed (Flag11-Sem)
-- Has_Self_Reference (Flag13-Sem)
@@ -4119,7 +4107,7 @@ package Sinfo is
-- Then_Statements (List2)
-- Elsif_Parts (List3) (set to No_List if none present)
-- Else_Statements (List4) (set to No_List if no else part present)
- -- End_Span (Uint5) (set to No_Uint if expander generated)
+ -- End_Span (Uint5) (set to Uint_0 if expander generated)
-- N_Elsif_Part
-- Sloc points to ELSIF
@@ -4151,7 +4139,7 @@ package Sinfo is
-- Sloc points to CASE
-- Expression (Node3)
-- Alternatives (List4)
- -- End_Span (Uint5) (set to No_Uint if expander generated)
+ -- End_Span (Uint5) (set to Uint_0 if expander generated)
-- Note: Before Ada 2012, a pragma in a statement sequence is always
-- followed by a statement, and this is true in the tree even in Ada
@@ -5796,9 +5784,11 @@ package Sinfo is
-- Unreferenced_In_Spec (Flag7-Sem)
-- No_Entities_Ref_In_Spec (Flag8-Sem)
- -- Note: Limited_Present and Limited_View_Installed give support to
- -- Ada 2005 (AI-50217).
- -- Similarly, Private_Present gives support to AI-50262.
+ -- Note: Limited_Present and Limited_View_Installed are used to support
+ -- the implementation of Ada 2005 (AI-50217).
+
+ -- Similarly, Private_Present is used to support the implementation of
+ -- Ada 2005 (AI-50262).
----------------------
-- With_Type clause --
@@ -5806,8 +5796,9 @@ package Sinfo is
-- This is a GNAT extension, used to implement mutually recursive
-- types declared in different packages.
+
-- Note: this is now obsolete. The functionality of this construct
- -- is now implemented by the Ada 2005 Limited_with_Clause.
+ -- is now implemented by the Ada 2005 limited_with_clause.
---------------------
-- 10.2 Body stub --
@@ -8966,9 +8957,6 @@ package Sinfo is
function Statements
(N : Node_Id) return List_Id; -- List3
- function Static_Processing_OK
- (N : Node_Id) return Boolean; -- Flag4
-
function Storage_Pool
(N : Node_Id) return Node_Id; -- Node1
@@ -9941,9 +9929,6 @@ package Sinfo is
procedure Set_Statements
(N : Node_Id; Val : List_Id); -- List3
- procedure Set_Static_Processing_OK
- (N : Node_Id; Val : Boolean); -- Flag4
-
procedure Set_Storage_Pool
(N : Node_Id; Val : Node_Id); -- Node1
@@ -12071,7 +12056,6 @@ package Sinfo is
pragma Inline (Specification);
pragma Inline (Split_PPC);
pragma Inline (Statements);
- pragma Inline (Static_Processing_OK);
pragma Inline (Storage_Pool);
pragma Inline (Subpool_Handle_Name);
pragma Inline (Strval);
@@ -12391,7 +12375,6 @@ package Sinfo is
pragma Inline (Set_Specification);
pragma Inline (Set_Split_PPC);
pragma Inline (Set_Statements);
- pragma Inline (Set_Static_Processing_OK);
pragma Inline (Set_Storage_Pool);
pragma Inline (Set_Subpool_Handle_Name);
pragma Inline (Set_Strval);
diff --git a/gcc/ada/snames.adb-tmpl b/gcc/ada/snames.adb-tmpl
index 4ac3c220549..05d427743a8 100644
--- a/gcc/ada/snames.adb-tmpl
+++ b/gcc/ada/snames.adb-tmpl
@@ -127,7 +127,15 @@ package body Snames is
function Get_Attribute_Id (N : Name_Id) return Attribute_Id is
begin
- return Attribute_Id'Val (N - First_Attribute_Name);
+ if N = Name_CPU then
+ return Attribute_CPU;
+ elsif N = Name_Dispatching_Domain then
+ return Attribute_Dispatching_Domain;
+ elsif N = Name_Interrupt_Priority then
+ return Attribute_Interrupt_Priority;
+ else
+ return Attribute_Id'Val (N - First_Attribute_Name);
+ end if;
end Get_Attribute_Id;
-----------------------
@@ -392,6 +400,16 @@ package body Snames is
or else N not in Ada_2012_Reserved_Words);
end Is_Keyword_Name;
+ --------------------------------
+ -- Is_Internal_Attribute_Name --
+ --------------------------------
+
+ function Is_Internal_Attribute_Name (N : Name_Id) return Boolean is
+ begin
+ return
+ N in First_Internal_Attribute_Name .. Last_Internal_Attribute_Name;
+ end Is_Internal_Attribute_Name;
+
----------------------------
-- Is_Locking_Policy_Name --
----------------------------
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index bffc4207619..d0c20153b0a 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -766,6 +766,7 @@ package Snames is
Name_Asm_Input : constant Name_Id := N + $; -- GNAT
Name_Asm_Output : constant Name_Id := N + $; -- GNAT
Name_AST_Entry : constant Name_Id := N + $; -- VMS
+ Name_Atomic_Always_Lock_Free : constant Name_Id := N + $; -- GNAT
Name_Bit : constant Name_Id := N + $; -- GNAT
Name_Bit_Order : constant Name_Id := N + $;
Name_Bit_Position : constant Name_Id := N + $; -- GNAT
@@ -779,7 +780,6 @@ package Snames is
Name_Constant_Indexing : constant Name_Id := N + $; -- GNAT
Name_Constrained : constant Name_Id := N + $;
Name_Count : constant Name_Id := N + $;
- Name_CPU : constant Name_Id := N + $; -- Ada 12
Name_Default_Bit_Order : constant Name_Id := N + $; -- GNAT
Name_Default_Iterator : constant Name_Id := N + $; -- GNAT
Name_Definite : constant Name_Id := N + $;
@@ -787,7 +787,6 @@ package Snames is
Name_Denorm : constant Name_Id := N + $;
Name_Descriptor_Size : constant Name_Id := N + $;
Name_Digits : constant Name_Id := N + $;
- Name_Dispatching_Domain : constant Name_Id := N + $; -- Ada 12
Name_Elaborated : constant Name_Id := N + $; -- GNAT
Name_Emax : constant Name_Id := N + $; -- Ada 83
Name_Enabled : constant Name_Id := N + $; -- GNAT
@@ -809,7 +808,6 @@ package Snames is
Name_Img : constant Name_Id := N + $; -- GNAT
Name_Implicit_Dereference : constant Name_Id := N + $; -- GNAT
Name_Integer_Value : constant Name_Id := N + $; -- GNAT
- Name_Interrupt_Priority : constant Name_Id := N + $; -- Ada 12
Name_Invalid_Value : constant Name_Id := N + $; -- GNAT
Name_Iterator_Element : constant Name_Id := N + $; -- GNAT
Name_Large : constant Name_Id := N + $; -- Ada 83
@@ -955,6 +953,27 @@ package Snames is
Last_Entity_Attribute_Name : constant Name_Id := N + $;
Last_Attribute_Name : constant Name_Id := N + $;
+ -- Names of internal attributes. They are not real attributes but special
+ -- names used internally by GNAT in order to deal with delayed aspects
+ -- (Aspect_CPU, Aspect_Dispatching_Domain, Aspect_Interrupt_Priority) that
+ -- don't have corresponding pragmas or user-referencable attributes.
+
+ -- It is convenient to have these internal attributes available for
+ -- processing the aspects, since the normal approach is to convert an
+ -- aspect into its corresponding pragma or attribute specification.
+
+ -- These attributes do have Attribute_Id values so that case statements
+ -- on Attribute_Id include these cases, but they are NOT included in the
+ -- Attribute_Name subtype defined above, which is typically used in the
+ -- front end for checking syntax of submitted programs (where the use of
+ -- internal attributes is not permitted).
+
+ First_Internal_Attribute_Name : constant Name_Id := N + $;
+ Name_CPU : constant Name_Id := N + $;
+ Name_Dispatching_Domain : constant Name_Id := N + $;
+ Name_Interrupt_Priority : constant Name_Id := N + $;
+ Last_Internal_Attribute_Name : constant Name_Id := N + $;
+
-- Names of recognized locking policy identifiers
First_Locking_Policy_Name : constant Name_Id := N + $;
@@ -1345,6 +1364,7 @@ package Snames is
Attribute_Asm_Input,
Attribute_Asm_Output,
Attribute_AST_Entry,
+ Attribute_Atomic_Always_Lock_Free,
Attribute_Bit,
Attribute_Bit_Order,
Attribute_Bit_Position,
@@ -1358,7 +1378,6 @@ package Snames is
Attribute_Constant_Indexing,
Attribute_Constrained,
Attribute_Count,
- Attribute_CPU,
Attribute_Default_Bit_Order,
Attribute_Default_Iterator,
Attribute_Definite,
@@ -1366,7 +1385,6 @@ package Snames is
Attribute_Denorm,
Attribute_Descriptor_Size,
Attribute_Digits,
- Attribute_Dispatching_Domain,
Attribute_Elaborated,
Attribute_Emax,
Attribute_Enabled,
@@ -1388,7 +1406,6 @@ package Snames is
Attribute_Img,
Attribute_Implicit_Dereference,
Attribute_Integer_Value,
- Attribute_Interrupt_Priority,
Attribute_Invalid_Value,
Attribute_Iterator_Element,
Attribute_Large,
@@ -1518,7 +1535,18 @@ package Snames is
Attribute_Base,
Attribute_Class,
- Attribute_Stub_Type);
+ Attribute_Stub_Type,
+
+ -- The internal attributes are on their own, out of order, because of
+ -- the special processing required to deal with the fact that their
+ -- names are not attribute names.
+
+ Attribute_CPU,
+ Attribute_Dispatching_Domain,
+ Attribute_Interrupt_Priority);
+
+ subtype Internal_Attribute_Id is Attribute_Id range
+ Attribute_CPU .. Attribute_Interrupt_Priority;
type Attribute_Class_Array is array (Attribute_Id) of Boolean;
-- Type used to build attribute classification flag arrays
@@ -1826,6 +1854,10 @@ package Snames is
-- Test to see if the name N is the name of a recognized entity attribute,
-- i.e. an attribute reference that returns an entity.
+ function Is_Internal_Attribute_Name (N : Name_Id) return Boolean;
+ -- Test to see if the name N is the name of an INT attribute (Name_CPU,
+ -- Name_Dispatching_Domain, Name_Interrupt_Priority).
+
function Is_Procedure_Attribute_Name (N : Name_Id) return Boolean;
-- Test to see if the name N is the name of a recognized attribute that
-- designates a procedure (and can therefore appear as a statement).
@@ -1885,7 +1917,9 @@ package Snames is
function Get_Attribute_Id (N : Name_Id) return Attribute_Id;
-- Returns Id of attribute corresponding to given name. It is an error to
- -- call this function with a name that is not the name of a attribute.
+ -- call this function with a name that is not the name of a attribute. Note
+ -- that the function also works correctly for internal attribute names even
+ -- though there are not included in the main list of attribute Names.
function Get_Convention_Id (N : Name_Id) return Convention_Id;
-- Returns Id of language convention corresponding to given name. It is
diff --git a/gcc/ada/switch-c.adb b/gcc/ada/switch-c.adb
index 51cec6e02c4..4815c097302 100644
--- a/gcc/ada/switch-c.adb
+++ b/gcc/ada/switch-c.adb
@@ -443,7 +443,8 @@ package body Switch.C is
-- -gnated switch (disable atomic synchronization)
when 'd' =>
- Suppress_Options (Atomic_Synchronization) := True;
+ Suppress_Options.Suppress (Atomic_Synchronization) :=
+ True;
-- -gnateD switch (preprocessing symbol definition)
@@ -754,7 +755,9 @@ package body Switch.C is
when 'o' =>
Ptr := Ptr + 1;
- Suppress_Options (Overflow_Check) := False;
+ Suppress_Options.Suppress (Overflow_Check) := False;
+ Suppress_Options.Overflow_Checks_General := Check_All;
+ Suppress_Options.Overflow_Checks_Assertions := Check_All;
Opt.Enable_Overflow_Checks := True;
-- Processing for O switch
@@ -782,12 +785,16 @@ package body Switch.C is
-- exclude Atomic_Synchronization, since this is not a real
-- check.
- for J in Suppress_Options'Range loop
+ for J in Suppress_Options.Suppress'Range loop
if J /= Elaboration_Check
- and then J /= Atomic_Synchronization
+ and then
+ J /= Atomic_Synchronization
then
- Suppress_Options (J) := True;
+ Suppress_Options.Suppress (J) := True;
end if;
+
+ Suppress_Options.Overflow_Checks_General := Suppress;
+ Suppress_Options.Overflow_Checks_Assertions := Suppress;
end loop;
Validity_Checks_On := False;
diff --git a/gcc/ada/switch-m.adb b/gcc/ada/switch-m.adb
index 3dbecc31cc9..d082c905f86 100644
--- a/gcc/ada/switch-m.adb
+++ b/gcc/ada/switch-m.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -236,9 +236,9 @@ package body Switch.M is
-- One-letter switches
when 'a' | 'A' | 'b' | 'B' | 'c' | 'C' | 'E' | 'f' |
- 'F' | 'g' | 'h' | 'H' | 'I' | 'L' | 'n' | 'N' |
- 'o' | 'p' | 'P' | 'q' | 'Q' | 'r' | 's' | 'S' |
- 't' | 'u' | 'U' | 'v' | 'x' | 'X' | 'Z' =>
+ 'F' | 'g' | 'h' | 'H' | 'I' | 'L' | 'N' | 'o' |
+ 'p' | 'P' | 'q' | 'Q' | 'r' | 's' | 'S' | 't' |
+ 'u' | 'U' | 'v' | 'x' | 'X' | 'Z' =>
Storing (First_Stored) := C;
Add_Switch_Component
(Storing (Storing'First .. First_Stored));
@@ -423,6 +423,24 @@ package body Switch.M is
return;
end if;
+ -- -gnatn may be -gnatn, -gnatn1, or -gnatn2
+
+ when 'n' =>
+ Last_Stored := First_Stored;
+ Storing (Last_Stored) := 'n';
+ Ptr := Ptr + 1;
+
+ if Ptr <= Max
+ and then Switch_Chars (Ptr) in '1' .. '2'
+ then
+ Last_Stored := Last_Stored + 1;
+ Storing (Last_Stored) := Switch_Chars (Ptr);
+ Ptr := Ptr + 1;
+ end if;
+
+ Add_Switch_Component
+ (Storing (Storing'First .. Last_Stored));
+
-- -gnatR may be followed by '0', '1', '2' or '3',
-- then by 's'
diff --git a/gcc/ada/system-aix.ads b/gcc/ada/system-aix.ads
index 3f91af51ecc..19d65bdfcdd 100644
--- a/gcc/ada/system-aix.ads
+++ b/gcc/ada/system-aix.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (AIX/PPC Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-aix64.ads b/gcc/ada/system-aix64.ads
index 4ad3756042b..568c24f2569 100644
--- a/gcc/ada/system-aix64.ads
+++ b/gcc/ada/system-aix64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (PPC/AIX64 Version) --
-- --
--- Copyright (C) 2009-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2009-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-darwin-ppc.ads b/gcc/ada/system-darwin-ppc.ads
index 79894e5c360..d45ab4ee846 100644
--- a/gcc/ada/system-darwin-ppc.ads
+++ b/gcc/ada/system-darwin-ppc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Darwin/PPC Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-darwin-ppc64.ads b/gcc/ada/system-darwin-ppc64.ads
index 6d4c61651d8..feaff2ed3ea 100644
--- a/gcc/ada/system-darwin-ppc64.ads
+++ b/gcc/ada/system-darwin-ppc64.ads
@@ -137,6 +137,7 @@ private
Stack_Check_Limits : constant Boolean := False;
Support_64_Bit_Divides : constant Boolean := True;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-darwin-x86.ads b/gcc/ada/system-darwin-x86.ads
index efd93f63c20..908cf50de15 100644
--- a/gcc/ada/system-darwin-x86.ads
+++ b/gcc/ada/system-darwin-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Darwin/x86 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -158,6 +158,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-darwin-x86_64.ads b/gcc/ada/system-darwin-x86_64.ads
index 27f1241616d..0e5e8c02727 100644
--- a/gcc/ada/system-darwin-x86_64.ads
+++ b/gcc/ada/system-darwin-x86_64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Darwin/x86_64 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -158,6 +158,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-freebsd-x86.ads b/gcc/ada/system-freebsd-x86.ads
index cb03d56d434..57bff62938b 100644
--- a/gcc/ada/system-freebsd-x86.ads
+++ b/gcc/ada/system-freebsd-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (FreeBSD/x86 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -132,6 +132,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-freebsd-x86_64.ads b/gcc/ada/system-freebsd-x86_64.ads
index 8f523a20ff8..e99578d97f6 100644
--- a/gcc/ada/system-freebsd-x86_64.ads
+++ b/gcc/ada/system-freebsd-x86_64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (FreeBSD/x86_64 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -132,6 +132,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-hpux-ia64.ads b/gcc/ada/system-hpux-ia64.ads
index c9cf952e806..c1f2f94962b 100644
--- a/gcc/ada/system-hpux-ia64.ads
+++ b/gcc/ada/system-hpux-ia64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (HP-UX/ia64 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -132,12 +132,13 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
Always_Compatible_Rep : constant Boolean := True;
Suppress_Standard_Library : constant Boolean := False;
Use_Ada_Main_Program_Name : constant Boolean := False;
- ZCX_By_Default : constant Boolean := False;
+ ZCX_By_Default : constant Boolean := True;
end System;
diff --git a/gcc/ada/system-hpux.ads b/gcc/ada/system-hpux.ads
index f32ea6f4948..47793e55f67 100644
--- a/gcc/ada/system-hpux.ads
+++ b/gcc/ada/system-hpux.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (HP-UX Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-alpha.ads b/gcc/ada/system-linux-alpha.ads
index 154c01bf6c5..5d845020446 100644
--- a/gcc/ada/system-linux-alpha.ads
+++ b/gcc/ada/system-linux-alpha.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/alpha Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-hppa.ads b/gcc/ada/system-linux-hppa.ads
index 3b4bb270036..5ec908708bb 100644
--- a/gcc/ada/system-linux-hppa.ads
+++ b/gcc/ada/system-linux-hppa.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU/Linux-HPPA Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-ia64.ads b/gcc/ada/system-linux-ia64.ads
index 11be8491d27..c0cb6643c92 100644
--- a/gcc/ada/system-linux-ia64.ads
+++ b/gcc/ada/system-linux-ia64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/ia64 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -140,6 +140,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-linux-ppc.ads b/gcc/ada/system-linux-ppc.ads
index cbd814341ed..fac85a52fe5 100644
--- a/gcc/ada/system-linux-ppc.ads
+++ b/gcc/ada/system-linux-ppc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/PPC Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-s390.ads b/gcc/ada/system-linux-s390.ads
index 19ad00025ad..28107a0b464 100644
--- a/gcc/ada/system-linux-s390.ads
+++ b/gcc/ada/system-linux-s390.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/s390 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-s390x.ads b/gcc/ada/system-linux-s390x.ads
index 6ed5749aafd..135b5a3b174 100644
--- a/gcc/ada/system-linux-s390x.ads
+++ b/gcc/ada/system-linux-s390x.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/s390x Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-sh4.ads b/gcc/ada/system-linux-sh4.ads
index 344b7ef541e..8ee07e374db 100644
--- a/gcc/ada/system-linux-sh4.ads
+++ b/gcc/ada/system-linux-sh4.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/sh4 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-sparc.ads b/gcc/ada/system-linux-sparc.ads
index 1f4f2207d45..ff93463cf86 100644
--- a/gcc/ada/system-linux-sparc.ads
+++ b/gcc/ada/system-linux-sparc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU/Linux-SPARC Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-linux-x86.ads b/gcc/ada/system-linux-x86.ads
index c0bd494d020..270ed06cae6 100644
--- a/gcc/ada/system-linux-x86.ads
+++ b/gcc/ada/system-linux-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/x86 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -140,6 +140,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-linux-x86_64.ads b/gcc/ada/system-linux-x86_64.ads
index 1fd23fc4a12..4c315d11cc0 100644
--- a/gcc/ada/system-linux-x86_64.ads
+++ b/gcc/ada/system-linux-x86_64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/x86-64 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -140,6 +140,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-lynxos-ppc.ads b/gcc/ada/system-lynxos-ppc.ads
index 8d718c83fe8..3f701b2dcf9 100644
--- a/gcc/ada/system-lynxos-ppc.ads
+++ b/gcc/ada/system-lynxos-ppc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (LynxOS PPC Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-lynxos-x86.ads b/gcc/ada/system-lynxos-x86.ads
index 18a4a3606b0..70adfa98e19 100644
--- a/gcc/ada/system-lynxos-x86.ads
+++ b/gcc/ada/system-lynxos-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (LynxOS x86 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -146,6 +146,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-mingw-x86_64.ads b/gcc/ada/system-mingw-x86_64.ads
index 9464259f68f..b0b122216a8 100644
--- a/gcc/ada/system-mingw-x86_64.ads
+++ b/gcc/ada/system-mingw-x86_64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Windows Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -132,6 +132,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-mingw.ads b/gcc/ada/system-mingw.ads
index 9753650e918..dfb485208cf 100644
--- a/gcc/ada/system-mingw.ads
+++ b/gcc/ada/system-mingw.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Windows Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-solaris-sparc.ads b/gcc/ada/system-solaris-sparc.ads
index 1afb18b1f47..ac695c543fe 100644
--- a/gcc/ada/system-solaris-sparc.ads
+++ b/gcc/ada/system-solaris-sparc.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (SUN Solaris Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-solaris-sparcv9.ads b/gcc/ada/system-solaris-sparcv9.ads
index 4929c75a1db..6c059244e97 100644
--- a/gcc/ada/system-solaris-sparcv9.ads
+++ b/gcc/ada/system-solaris-sparcv9.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (Solaris Sparcv9 Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-solaris-x86.ads b/gcc/ada/system-solaris-x86.ads
index cd722e349fb..3987ea87ea1 100644
--- a/gcc/ada/system-solaris-x86.ads
+++ b/gcc/ada/system-solaris-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (x86 Solaris Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -132,6 +132,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-solaris-x86_64.ads b/gcc/ada/system-solaris-x86_64.ads
index 4f336780791..ed78923483f 100644
--- a/gcc/ada/system-solaris-x86_64.ads
+++ b/gcc/ada/system-solaris-x86_64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (x86-64 Solaris Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -132,6 +132,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-vms-ia64.ads b/gcc/ada/system-vms-ia64.ads
index 010de3d13de..f8ed51afad8 100644
--- a/gcc/ada/system-vms-ia64.ads
+++ b/gcc/ada/system-vms-ia64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (OpenVMS 64bit Itanium GCC_ZCX DEC Threads Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -150,6 +150,7 @@ private
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/system-vms_64.ads b/gcc/ada/system-vms_64.ads
index 11f2853ad2d..946f0341d1c 100644
--- a/gcc/ada/system-vms_64.ads
+++ b/gcc/ada/system-vms_64.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (OpenVMS 64bit GCC_ZCX DEC Threads Version) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-vxworks-arm.ads b/gcc/ada/system-vxworks-arm.ads
index 484d40d95c7..ae8ddd51065 100644
--- a/gcc/ada/system-vxworks-arm.ads
+++ b/gcc/ada/system-vxworks-arm.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks Version ARM) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-vxworks-m68k.ads b/gcc/ada/system-vxworks-m68k.ads
index 429ca5d5a57..d747792a56e 100644
--- a/gcc/ada/system-vxworks-m68k.ads
+++ b/gcc/ada/system-vxworks-m68k.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks version M68K) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-vxworks-mips.ads b/gcc/ada/system-vxworks-mips.ads
index 3dbb835704d..47b46fa2f7d 100644
--- a/gcc/ada/system-vxworks-mips.ads
+++ b/gcc/ada/system-vxworks-mips.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks Version Mips) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-vxworks-ppc.ads b/gcc/ada/system-vxworks-ppc.ads
index 6c24b971db3..62d604f6319 100644
--- a/gcc/ada/system-vxworks-ppc.ads
+++ b/gcc/ada/system-vxworks-ppc.ads
@@ -115,8 +115,14 @@ package System is
private
- pragma Linker_Options ("-crtbe");
- -- Required by ZCX on VxWorks kernel
+ -- Note: we now more closely rely on the VxWorks mechanisms to register
+ -- exception tables for ZCX support in kernel mode, thanks to crt objects
+ -- featuring dedicated constructors triggered by linker options below.
+
+ -- Commenting the pragma for the sjlj runtimes is performed automatically
+ -- by our Makefiles, so this line needs to be manipulated with care.
+
+ pragma Linker_Options ("-crtbe" & ASCII.NUL & "-auto-register");
type Address is mod Memory_Size;
Null_Address : constant Address := 0;
diff --git a/gcc/ada/system-vxworks-sparcv9.ads b/gcc/ada/system-vxworks-sparcv9.ads
index 856161f1006..96601676a24 100644
--- a/gcc/ada/system-vxworks-sparcv9.ads
+++ b/gcc/ada/system-vxworks-sparcv9.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks Version Sparc/64) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
diff --git a/gcc/ada/system-vxworks-x86.ads b/gcc/ada/system-vxworks-x86.ads
index 14388d87207..a2df22b038c 100644
--- a/gcc/ada/system-vxworks-x86.ads
+++ b/gcc/ada/system-vxworks-x86.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (VxWorks 5 Version x86) --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -145,6 +145,7 @@ private
Stack_Check_Probes : constant Boolean := False;
Stack_Check_Limits : constant Boolean := True;
Support_Aggregates : constant Boolean := True;
+ Support_Atomic_Primitives : constant Boolean := True;
Support_Composite_Assign : constant Boolean := True;
Support_Composite_Compare : constant Boolean := True;
Support_Long_Shifts : constant Boolean := True;
diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb
index 193858ac898..ae801555d0b 100644
--- a/gcc/ada/targparm.adb
+++ b/gcc/ada/targparm.adb
@@ -57,6 +57,7 @@ package body Targparm is
PAS, -- Preallocated_Stacks
RTX, -- RTX_RTSS_Kernel_Module
SAG, -- Support_Aggregates
+ SAP, -- Support_Atomic_Primitives
SCA, -- Support_Composite_Assign
SCC, -- Support_Composite_Compare
SCD, -- Stack_Check_Default
@@ -93,6 +94,7 @@ package body Targparm is
PAS_Str : aliased constant Source_Buffer := "Preallocated_Stacks";
RTX_Str : aliased constant Source_Buffer := "RTX_RTSS_Kernel_Module";
SAG_Str : aliased constant Source_Buffer := "Support_Aggregates";
+ SAP_Str : aliased constant Source_Buffer := "Support_Atomic_Primitives";
SCA_Str : aliased constant Source_Buffer := "Support_Composite_Assign";
SCC_Str : aliased constant Source_Buffer := "Support_Composite_Compare";
SCD_Str : aliased constant Source_Buffer := "Stack_Check_Default";
@@ -129,6 +131,7 @@ package body Targparm is
PAS_Str'Access,
RTX_Str'Access,
SAG_Str'Access,
+ SAP_Str'Access,
SCA_Str'Access,
SCC_Str'Access,
SCD_Str'Access,
@@ -586,6 +589,7 @@ package body Targparm is
when PAS => Preallocated_Stacks_On_Target := Result;
when RTX => RTX_RTSS_Kernel_Module_On_Target := Result;
when SAG => Support_Aggregates_On_Target := Result;
+ when SAP => Support_Atomic_Primitives_On_Target := Result;
when SCA => Support_Composite_Assign_On_Target := Result;
when SCC => Support_Composite_Compare_On_Target := Result;
when SCD => Stack_Check_Default_On_Target := Result;
diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads
index be1c9af0218..e3210c93664 100644
--- a/gcc/ada/targparm.ads
+++ b/gcc/ada/targparm.ads
@@ -408,6 +408,14 @@ package Targparm is
-- are available. If any of these routines is not available, then
-- this flag is False, and the use of aggregates is not permitted.
+ Support_Atomic_Primitives_On_Target : Boolean := False;
+ -- If this flag is True, then the back-end support GCC built-in atomic
+ -- operations for memory model such as atomic load or atomic compare
+ -- exchange (see the GCC manual for more information). If the flag is
+ -- False, then the back-end doesn't provide this support. Note this flag is
+ -- set to True only if the target supports all atomic primitives up to 64
+ -- bits. ??? To be modified.
+
Support_Composite_Assign_On_Target : Boolean := True;
-- The assignment of composite objects other than small records and
-- arrays whose size is 64-bits or less and is set by an explicit
diff --git a/gcc/ada/tb-gcc.c b/gcc/ada/tb-gcc.c
index 7b7c27ad24c..737f29a479b 100644
--- a/gcc/ada/tb-gcc.c
+++ b/gcc/ada/tb-gcc.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2004-2011, Free Software Foundation, Inc. *
+ * Copyright (C) 2004-2012, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -64,7 +64,7 @@ trace_callback (struct _Unwind_Context * uw_context, uw_data_t * uw_data)
{
char * pc;
-#if defined (__ia64__) && defined (__hpux__)
+#if defined (__ia64__) && defined (__hpux__) && defined (USE_LIBUNWIND_EXCEPTIONS)
/* Work around problem with _Unwind_GetIP on ia64 HP-UX. */
uwx_get_reg ((struct uwx_env *) uw_context, UWX_REG_IP, (uint64_t *) &pc);
#else
diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c
index ff2a3b6cfdb..2c8335de68b 100644
--- a/gcc/ada/tracebak.c
+++ b/gcc/ada/tracebak.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2000-2011, Free Software Foundation, Inc. *
+ * Copyright (C) 2000-2012, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -106,6 +106,76 @@ extern void (*Unlock_Task) (void);
#include "tb-ivms.c"
+#elif defined (_WIN64) && defined (__SEH__)
+
+#include <windows.h>
+
+int
+__gnat_backtrace (void **array,
+ int size,
+ void *exclude_min,
+ void *exclude_max,
+ int skip_frames)
+{
+ CONTEXT context;
+ UNWIND_HISTORY_TABLE history;
+ int i;
+
+ /* Get the context. */
+ RtlCaptureContext (&context);
+
+ /* Setup unwind history table (a cached to speed-up unwinding). */
+ memset (&history, 0, sizeof (history));
+
+ i = 0;
+ while (1)
+ {
+ PRUNTIME_FUNCTION RuntimeFunction;
+ KNONVOLATILE_CONTEXT_POINTERS NvContext;
+ ULONG64 ImageBase;
+ VOID *HandlerData;
+ ULONG64 EstablisherFrame;
+
+ /* Get function metadata. */
+ RuntimeFunction = RtlLookupFunctionEntry
+ (context.Rip, &ImageBase, &history);
+
+ if (!RuntimeFunction)
+ {
+ /* In case of failure, assume this is a leaf function. */
+ context.Rip = *(ULONG64 *) context.Rsp;
+ context.Rsp += 8;
+ }
+ else
+ {
+ /* Unwind. */
+ memset (&NvContext, 0, sizeof (KNONVOLATILE_CONTEXT_POINTERS));
+ RtlVirtualUnwind (0, ImageBase, context.Rip, RuntimeFunction,
+ &context, &HandlerData, &EstablisherFrame,
+ &NvContext);
+ }
+
+ /* 0 means bottom of the stack. */
+ if (context.Rip == 0)
+ break;
+
+ /* Skip frames. */
+ if (skip_frames > 1)
+ {
+ skip_frames--;
+ continue;
+ }
+ /* Excluded frames. */
+ if ((void *)context.Rip >= exclude_min
+ && (void *)context.Rip <= exclude_max)
+ continue;
+
+ array[i++] = (void *)(context.Rip - 2);
+ if (i >= size)
+ break;
+ }
+ return i;
+}
#else
/* No target specific implementation. */
diff --git a/gcc/ada/tree_io.ads b/gcc/ada/tree_io.ads
index 12c1ae545fe..9fa2121f4cd 100644
--- a/gcc/ada/tree_io.ads
+++ b/gcc/ada/tree_io.ads
@@ -47,7 +47,7 @@ package Tree_IO is
Tree_Format_Error : exception;
-- Raised if a format error is detected in the input file
- ASIS_Version_Number : constant := 28;
+ ASIS_Version_Number : constant := 29;
-- ASIS Version. This is used to check for consistency between the compiler
-- used to generate trees and an ASIS application that is reading the
-- trees. It must be incremented whenever a change is made to the tree
@@ -56,6 +56,8 @@ package Tree_IO is
--
-- 27 Changes in the tree structures for expression functions
-- 28 Changes in Snames
+ -- 29 Changes in Sem_Ch3 (tree copying in case of discriminant constraint
+ -- for concurrent types).
procedure Tree_Read_Initialize (Desc : File_Descriptor);
-- Called to initialize reading of a tree file. This call must be made
diff --git a/gcc/ada/treepr.adb b/gcc/ada/treepr.adb
index ed827ccdfcf..0f61b04c291 100644
--- a/gcc/ada/treepr.adb
+++ b/gcc/ada/treepr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/treepr.ads b/gcc/ada/treepr.ads
index 6e9541a8e9f..212c49155b5 100644
--- a/gcc/ada/treepr.ads
+++ b/gcc/ada/treepr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/types.ads b/gcc/ada/types.ads
index 011afda0868..03370cff666 100644
--- a/gcc/ada/types.ads
+++ b/gcc/ada/types.ads
@@ -646,9 +646,9 @@ package Types is
TS : out Time_Stamp_Type);
-- Given the components of a time stamp, initialize the value
- -----------------------------------------------
- -- Types used for Pragma Suppress Management --
- -----------------------------------------------
+ -------------------------------------
+ -- Types used for Check Management --
+ -------------------------------------
type Check_Id is new Nat;
-- Type used to represent a check id
@@ -703,6 +703,56 @@ package Types is
-- 4. Add a new Do_xxx_Check flag to Sinfo (if required)
-- 5. Add appropriate checks for the new test
+ -- The following provides precise details on the mode used to check
+ -- intermediate overflows in expressions for signed integer arithmetic.
+
+ type Overflow_Check_Type is
+ (Suppress,
+ -- Intermediate overflow suppressed. If an arithmetic operation creates
+ -- an overflow, no exception is raised, and the program is erroneous.
+
+ Check_All,
+ -- All intermediate operations are checked. If the result of any
+ -- arithmetic operation gives a result outside the range of the base
+ -- type, then a Constraint_Error exception is raised.
+
+ Minimize,
+ -- Where appropriate, arithmetic operations are performed with an
+ -- extended range, using Long_Long_Integer if necessary. As long as
+ -- the result fits in this extended range, then no exception is raised
+ -- and computation continues with the extended result. The final value
+ -- of an expression must fit in the base type of the whole expression.
+ -- If an intermediate result is outside the range of Long_Long_Integer
+ -- then a Constraint_Error exception is raised.
+
+ Eliminate);
+ -- In this mode arbitrary precision arithmetic is used as needed to
+ -- ensure that it is impossible for intermediate arithmetic to cause
+ -- an overflow. Again the final value of an expression must fit in
+ -- the base type of the whole expression.
+
+ -- The following structure captures the state of check suppression or
+ -- activation at a particular point in the program execution.
+
+ type Suppress_Record is record
+ Suppress : Suppress_Array;
+ -- Indicates suppression status of each possible check
+
+ Overflow_Checks_General : Overflow_Check_Type;
+ -- This field is relevant only if Suppress (Overflow_Check) is False.
+ -- It indicates the mode of overflow checking to be applied to general
+ -- expressions outside assertions.
+
+ Overflow_Checks_Assertions : Overflow_Check_Type;
+ -- This field is relevant only if Suppress (Overflow_Check) is False.
+ -- It indicates the mode of overflow checking to be applied to any
+ -- expressions occuring inside assertions.
+ end record;
+
+ Suppress_All : constant Suppress_Record :=
+ ((others => True), Suppress, Suppress);
+ -- Constant used to initialize Suppress_Record value to all suppressed.
+
-----------------------------------
-- Global Exception Declarations --
-----------------------------------
diff --git a/gcc/ada/ug_words b/gcc/ada/ug_words
index 9901b8477a0..29c4ee0f21e 100644
--- a/gcc/ada/ug_words
+++ b/gcc/ada/ug_words
@@ -84,6 +84,8 @@ gcc -c ^ GNAT COMPILE
-gnatm ^ /ERROR_LIMIT
-gnatm2 ^ /ERROR_LIMIT=2
-gnatn ^ /INLINE=PRAGMA
+-gnatn1 ^ /INLINE=PRAGMA_LEVEL_1
+-gnatn2 ^ /INLINE=PRAGMA_LEVEL_2
-gnatN ^ /INLINE=FULL
-gnato ^ /CHECKS=OVERFLOW
-gnatp ^ /CHECKS=SUPPRESS_ALL
diff --git a/gcc/ada/uintp.adb b/gcc/ada/uintp.adb
index ca7127970d0..a98bd9f376b 100644
--- a/gcc/ada/uintp.adb
+++ b/gcc/ada/uintp.adb
@@ -1188,7 +1188,7 @@ package body Uintp is
if D > Int_1 then
- -- Multiply Dividend by D
+ -- Multiply Dividend by d
Carry := 0;
for J in reverse Dividend'Range loop
@@ -2213,6 +2213,8 @@ package body Uintp is
----------------
function UI_To_Int (Input : Uint) return Int is
+ pragma Assert (Input /= No_Uint);
+
begin
if Direct (Input) then
return Direct_Val (Input);
diff --git a/gcc/ada/usage.adb b/gcc/ada/usage.adb
index f95e318e3af..59a5899a658 100644
--- a/gcc/ada/usage.adb
+++ b/gcc/ada/usage.adb
@@ -298,8 +298,8 @@ begin
-- Line for -gnatn switch
- Write_Switch_Char ("n[1|2]");
- Write_Line ("Enable pragma Inline (both within and across units)");
+ Write_Switch_Char ("n[?]");
+ Write_Line ("Enable pragma Inline (both within and across units, ?=1/2)");
-- Line for -gnatN switch
diff --git a/gcc/ada/vms_data.ads b/gcc/ada/vms_data.ads
index 01525b76d4b..80c6eaf641c 100644
--- a/gcc/ada/vms_data.ads
+++ b/gcc/ada/vms_data.ads
@@ -1789,6 +1789,10 @@ package VMS_Data is
S_GCC_Inline : aliased constant S := "/INLINE=" &
"PRAGMA " &
"-gnatn " &
+ "PRAGMA_LEVEL_1 " &
+ "-gnatn1 " &
+ "PRAGMA_LEVEL_2 " &
+ "-gnatn2 " &
"FULL " &
"-gnatN " &
"SUPPRESS " &
@@ -1822,6 +1826,14 @@ package VMS_Data is
-- (/OPTIMIZE=SOME) or higher (/OPTIMIZE=UNROLL_LOOPS)
-- levels of optimization.
--
+ -- PRAGMA_LEVEL_1
+ -- Direct control of the level of "Inline" pragmas
+ -- optimization with moderate inlining across modules.
+ --
+ -- PRAGMA_LEVEL_2
+ -- Direct control of the level of "Inline" pragmas
+ -- optimization with full inlining across modules.
+ --
-- FULL Front end inlining. The front end inlining activated
-- by this switch is generally more extensive, and quite
-- often more effective than the standard PRAGMA inlining
diff --git a/gcc/ada/xoscons.adb b/gcc/ada/xoscons.adb
index 56ea8a877d9..c740aa25383 100644
--- a/gcc/ada/xoscons.adb
+++ b/gcc/ada/xoscons.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -45,7 +45,7 @@ pragma Warnings (On);
with GNAT.Table;
-with XUtil; use XUtil;
+with XUtil; use XUtil;
procedure XOSCons is
@@ -73,13 +73,18 @@ procedure XOSCons is
type Asm_Info_Kind is
(CND, -- Named number (decimal)
+ CNU, -- Named number (decimal, unsigned)
CNS, -- Named number (freeform text)
C, -- Constant object
TXT); -- Literal text
-- Recognized markers found in assembly file. These markers are produced by
-- the same-named macros from the C template.
+ subtype Asm_Int_Kind is Asm_Info_Kind range CND .. CNU;
+ -- Asm_Info_Kind values with int values in input
+
subtype Named_Number is Asm_Info_Kind range CND .. CNS;
+ -- Asm_Info_Kind values with named numbers in output
type Asm_Info (Kind : Asm_Info_Kind := TXT) is record
Line_Number : Integer;
@@ -98,7 +103,7 @@ procedure XOSCons is
-- Value for CNS / C constant
Int_Value : Int_Value_Type;
- -- Value for CND constant
+ -- Value for CND / CNU constant
Comment : String_Access;
-- Additional descriptive comment for constant, or free-form text (TXT)
@@ -116,6 +121,9 @@ procedure XOSCons is
Max_Constant_Type_Len : Natural := 0;
-- Lengths of longest name and longest value
+ Size_Of_Unsigned_Int : Integer := 0;
+ -- Size of unsigned int on target
+
type Language is (Lang_Ada, Lang_C);
procedure Output_Info
@@ -170,10 +178,12 @@ procedure XOSCons is
Put (OFile, S);
end Put;
+ -- Start of processing for Output_Info
+
begin
- if Info.Kind /= TXT then
- -- TXT case is handled by the common code below
+ -- Case of non-TXT case (TXT case handled by common code below)
+ if Info.Kind /= TXT then
case Lang is
when Lang_Ada =>
Put (" " & Info.Constant_Name.all);
@@ -195,21 +205,26 @@ procedure XOSCons is
- Info.Constant_Name'Length));
end case;
- if Info.Kind = CND then
+ if Info.Kind in Asm_Int_Kind then
if not Info.Int_Value.Positive then
Put ("-");
end if;
+
Put (Trim (Info.Int_Value.Abs_Value'Img, Side => Left));
+
else
declare
Is_String : constant Boolean :=
Info.Kind = C
and then Info.Constant_Type.all = "String";
+
begin
if Is_String then
Put ("""");
end if;
+
Put (Info.Text_Value.all);
+
if Is_String then
Put ("""");
end if;
@@ -246,7 +261,7 @@ procedure XOSCons is
procedure Find_Colon (Index : in out Integer);
-- Increment Index until the next colon in Line
- function Parse_Int (S : String) return Int_Value_Type;
+ function Parse_Int (S : String; K : Asm_Int_Kind) return Int_Value_Type;
-- Parse a decimal number, preceded by an optional '$' or '#' character,
-- and return its value.
@@ -275,9 +290,13 @@ procedure XOSCons is
-- Parse_Int --
---------------
- function Parse_Int (S : String) return Int_Value_Type is
+ function Parse_Int
+ (S : String;
+ K : Asm_Int_Kind) return Int_Value_Type
+ is
First : Integer := S'First;
- Positive : Boolean;
+ Result : Int_Value_Type;
+
begin
-- On some platforms, immediate integer values are prefixed with
-- a $ or # character in assembly output.
@@ -287,17 +306,29 @@ procedure XOSCons is
end if;
if S (First) = '-' then
- Positive := False;
- First := First + 1;
+ Result.Positive := False;
+ First := First + 1;
else
- Positive := True;
+ Result.Positive := True;
+ end if;
+
+ Result.Abs_Value := Long_Unsigned'Value (S (First .. S'Last));
+
+ if not Result.Positive and then K = CNU then
+
+ -- Negative value, but unsigned expected: take 2's complement
+ -- reciprocical value.
+
+ Result.Abs_Value := ((not Result.Abs_Value) + 1)
+ and
+ (Shift_Left (1, Size_Of_Unsigned_Int) - 1);
+ Result.Positive := True;
end if;
- return (Positive => Positive,
- Abs_Value => Long_Unsigned'Value (S (First .. S'Last)));
+ return Result;
exception
- when E : others =>
+ when others =>
Put_Line (Standard_Error, "can't parse decimal value: " & S);
raise;
end Parse_Int;
@@ -315,14 +346,15 @@ procedure XOSCons is
Find_Colon (Index2);
Info.Line_Number :=
- Integer (Parse_Int (Line (Index1 .. Index2 - 1)).Abs_Value);
+ Integer (Parse_Int (Line (Index1 .. Index2 - 1), CNU).Abs_Value);
case Info.Kind is
- when CND | CNS | C =>
+ when CND | CNU | CNS | C =>
Index1 := Index2 + 1;
Find_Colon (Index2);
Info.Constant_Name := Field_Alloc;
+
if Info.Constant_Name'Length > Max_Constant_Name_Len then
Max_Constant_Name_Len := Info.Constant_Name'Length;
end if;
@@ -332,6 +364,7 @@ procedure XOSCons is
if Info.Kind = C then
Info.Constant_Type := Field_Alloc;
+
if Info.Constant_Type'Length > Max_Constant_Type_Len then
Max_Constant_Type_Len := Info.Constant_Type'Length;
end if;
@@ -340,15 +373,25 @@ procedure XOSCons is
Find_Colon (Index2);
end if;
- if Info.Kind = CND then
- Info.Int_Value := Parse_Int (Line (Index1 .. Index2 - 1));
- Info.Value_Len := Index2 - Index1 - 1;
+ if Info.Kind = CND or else Info.Kind = CNU then
+ Info.Int_Value :=
+ Parse_Int (Line (Index1 .. Index2 - 1), Info.Kind);
+ Info.Value_Len := Info.Int_Value.Abs_Value'Img'Length - 1;
+
+ if not Info.Int_Value.Positive then
+ Info.Value_Len := Info.Value_Len + 1;
+ end if;
else
Info.Text_Value := Field_Alloc;
Info.Value_Len := Info.Text_Value'Length;
end if;
+ if Info.Constant_Name.all = "sizeof_unsigned_int" then
+ Size_Of_Unsigned_Int :=
+ 8 * Integer (Info.Int_Value.Abs_Value);
+ end if;
+
when others =>
null;
end case;
@@ -371,12 +414,13 @@ procedure XOSCons is
Asm_Infos.Append (Info);
end;
+
exception
when E : others =>
- Put_Line (Standard_Error,
- "can't parse " & Line);
- Put_Line (Standard_Error,
- "exception raised: " & Exception_Information (E));
+ Put_Line
+ (Standard_Error, "can't parse " & Line);
+ Put_Line
+ (Standard_Error, "exception raised: " & Exception_Information (E));
end Parse_Asm_Line;
------------
@@ -401,8 +445,8 @@ procedure XOSCons is
-- Output files
- Ada_File_Name : constant String := Unit_Name & ".ads";
- C_File_Name : constant String := Unit_Name & ".h";
+ Ada_File_Name : constant String := Unit_Name & ".ads";
+ C_File_Name : constant String := Unit_Name & ".h";
Asm_File : Ada.Text_IO.File_Type;
Tmpl_File : Ada.Text_IO.File_Type;
@@ -424,7 +468,6 @@ begin
-- Load values from assembly file
Open (Asm_File, In_File, Asm_File_Name);
-
while not End_Of_File (Asm_File) loop
Get_Line (Asm_File, Line, Last);
if Last > 2 and then Line (1 .. 2) = "->" then
@@ -450,8 +493,10 @@ begin
if Last >= 2 and then Line (1 .. 2) = "# " then
declare
- Index : Integer := 3;
+ Index : Integer;
+
begin
+ Index := 3;
while Index <= Last and then Line (Index) in '0' .. '9' loop
Index := Index + 1;
end loop;
diff --git a/gcc/alias.c b/gcc/alias.c
index b6aca343f06..c1d5c8a8f36 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -39,9 +39,9 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "langhooks.h"
#include "timevar.h"
+#include "dumpfile.h"
#include "target.h"
#include "cgraph.h"
-#include "tree-pass.h"
#include "df.h"
#include "tree-ssa-alias.h"
#include "pointer-set.h"
@@ -168,7 +168,10 @@ static void memory_modified_1 (rtx, const_rtx, void *);
#define SIZE_FOR_MODE(X) (GET_MODE_SIZE (GET_MODE (X)))
/* Cap the number of passes we make over the insns propagating alias
- information through set chains. 10 is a completely arbitrary choice. */
+ information through set chains.
+ ??? 10 is a completely arbitrary choice. This should be based on the
+ maximum loop depth in the CFG, but we do not have this information
+ available (even if current_loops _is_ available). */
#define MAX_ALIAS_LOOP_PASSES 10
/* reg_base_value[N] gives an address to which register N is related.
@@ -852,8 +855,8 @@ new_alias_set (void)
if (flag_strict_aliasing)
{
if (alias_sets == 0)
- VEC_safe_push (alias_set_entry, gc, alias_sets, 0);
- VEC_safe_push (alias_set_entry, gc, alias_sets, 0);
+ VEC_safe_push (alias_set_entry, gc, alias_sets, (alias_set_entry) 0);
+ VEC_safe_push (alias_set_entry, gc, alias_sets, (alias_set_entry) 0);
return VEC_length (alias_set_entry, alias_sets) - 1;
}
else
@@ -1486,9 +1489,7 @@ rtx_equal_for_memref_p (const_rtx x, const_rtx y)
return XSTR (x, 0) == XSTR (y, 0);
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
/* There's no need to compare the contents of CONST_DOUBLEs or
CONST_INTs because pointer equality is a good enough
comparison for these nodes. */
@@ -2107,7 +2108,7 @@ memrefs_conflict_p (int xsize, rtx x, int ysize, rtx y, HOST_WIDE_INT c)
if (xsize > 0 && sc < 0 && -uc == (uc & -uc))
{
xsize -= sc + 1;
- c -= sc;
+ c -= sc + 1;
return memrefs_conflict_p (xsize, canon_rtx (XEXP (x, 0)),
ysize, y, c);
}
@@ -2119,7 +2120,7 @@ memrefs_conflict_p (int xsize, rtx x, int ysize, rtx y, HOST_WIDE_INT c)
if (ysize > 0 && sc < 0 && -uc == (uc & -uc))
{
ysize -= sc + 1;
- c += sc;
+ c += sc + 1;
return memrefs_conflict_p (xsize, x,
ysize, canon_rtx (XEXP (y, 0)), c);
}
@@ -2764,6 +2765,8 @@ init_alias_analysis (void)
int i;
unsigned int ui;
rtx insn, val;
+ int rpo_cnt;
+ int *rpo;
timevar_push (TV_ALIAS_ANALYSIS);
@@ -2786,6 +2789,9 @@ init_alias_analysis (void)
"constant" information from the previous pass to propagate alias
information through another level of assignments.
+ The propagation is done on the CFG in reverse post-order, to propagate
+ things forward as far as possible in each iteration.
+
This could get expensive if the assignment chains are long. Maybe
we should throttle the number of iterations, possibly based on
the optimization level or flag_expensive_optimizations.
@@ -2801,6 +2807,9 @@ init_alias_analysis (void)
The state of the arrays for the set chain in question does not matter
since the program has undefined behavior. */
+ rpo = XNEWVEC (int, n_basic_blocks);
+ rpo_cnt = pre_and_rev_post_order_compute (NULL, rpo, false);
+
pass = 0;
do
{
@@ -2833,80 +2842,84 @@ init_alias_analysis (void)
FIRST_PSEUDO_REGISTER * sizeof (rtx));
/* Walk the insns adding values to the new_reg_base_value array. */
- for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+ for (i = 0; i < rpo_cnt; i++)
{
- if (INSN_P (insn))
+ basic_block bb = BASIC_BLOCK (rpo[i]);
+ FOR_BB_INSNS (bb, insn)
{
- rtx note, set;
+ if (NONDEBUG_INSN_P (insn))
+ {
+ rtx note, set;
#if defined (HAVE_prologue) || defined (HAVE_epilogue)
- /* The prologue/epilogue insns are not threaded onto the
- insn chain until after reload has completed. Thus,
- there is no sense wasting time checking if INSN is in
- the prologue/epilogue until after reload has completed. */
- if (reload_completed
- && prologue_epilogue_contains (insn))
- continue;
+ /* The prologue/epilogue insns are not threaded onto the
+ insn chain until after reload has completed. Thus,
+ there is no sense wasting time checking if INSN is in
+ the prologue/epilogue until after reload has completed. */
+ if (reload_completed
+ && prologue_epilogue_contains (insn))
+ continue;
#endif
- /* If this insn has a noalias note, process it, Otherwise,
- scan for sets. A simple set will have no side effects
- which could change the base value of any other register. */
+ /* If this insn has a noalias note, process it, Otherwise,
+ scan for sets. A simple set will have no side effects
+ which could change the base value of any other register. */
- if (GET_CODE (PATTERN (insn)) == SET
- && REG_NOTES (insn) != 0
- && find_reg_note (insn, REG_NOALIAS, NULL_RTX))
- record_set (SET_DEST (PATTERN (insn)), NULL_RTX, NULL);
- else
- note_stores (PATTERN (insn), record_set, NULL);
+ if (GET_CODE (PATTERN (insn)) == SET
+ && REG_NOTES (insn) != 0
+ && find_reg_note (insn, REG_NOALIAS, NULL_RTX))
+ record_set (SET_DEST (PATTERN (insn)), NULL_RTX, NULL);
+ else
+ note_stores (PATTERN (insn), record_set, NULL);
- set = single_set (insn);
+ set = single_set (insn);
- if (set != 0
- && REG_P (SET_DEST (set))
- && REGNO (SET_DEST (set)) >= FIRST_PSEUDO_REGISTER)
- {
- unsigned int regno = REGNO (SET_DEST (set));
- rtx src = SET_SRC (set);
- rtx t;
-
- note = find_reg_equal_equiv_note (insn);
- if (note && REG_NOTE_KIND (note) == REG_EQUAL
- && DF_REG_DEF_COUNT (regno) != 1)
- note = NULL_RTX;
-
- if (note != NULL_RTX
- && GET_CODE (XEXP (note, 0)) != EXPR_LIST
- && ! rtx_varies_p (XEXP (note, 0), 1)
- && ! reg_overlap_mentioned_p (SET_DEST (set),
- XEXP (note, 0)))
- {
- set_reg_known_value (regno, XEXP (note, 0));
- set_reg_known_equiv_p (regno,
- REG_NOTE_KIND (note) == REG_EQUIV);
- }
- else if (DF_REG_DEF_COUNT (regno) == 1
- && GET_CODE (src) == PLUS
- && REG_P (XEXP (src, 0))
- && (t = get_reg_known_value (REGNO (XEXP (src, 0))))
- && CONST_INT_P (XEXP (src, 1)))
- {
- t = plus_constant (GET_MODE (src), t,
- INTVAL (XEXP (src, 1)));
- set_reg_known_value (regno, t);
- set_reg_known_equiv_p (regno, false);
- }
- else if (DF_REG_DEF_COUNT (regno) == 1
- && ! rtx_varies_p (src, 1))
+ if (set != 0
+ && REG_P (SET_DEST (set))
+ && REGNO (SET_DEST (set)) >= FIRST_PSEUDO_REGISTER)
{
- set_reg_known_value (regno, src);
- set_reg_known_equiv_p (regno, false);
+ unsigned int regno = REGNO (SET_DEST (set));
+ rtx src = SET_SRC (set);
+ rtx t;
+
+ note = find_reg_equal_equiv_note (insn);
+ if (note && REG_NOTE_KIND (note) == REG_EQUAL
+ && DF_REG_DEF_COUNT (regno) != 1)
+ note = NULL_RTX;
+
+ if (note != NULL_RTX
+ && GET_CODE (XEXP (note, 0)) != EXPR_LIST
+ && ! rtx_varies_p (XEXP (note, 0), 1)
+ && ! reg_overlap_mentioned_p (SET_DEST (set),
+ XEXP (note, 0)))
+ {
+ set_reg_known_value (regno, XEXP (note, 0));
+ set_reg_known_equiv_p (regno,
+ REG_NOTE_KIND (note) == REG_EQUIV);
+ }
+ else if (DF_REG_DEF_COUNT (regno) == 1
+ && GET_CODE (src) == PLUS
+ && REG_P (XEXP (src, 0))
+ && (t = get_reg_known_value (REGNO (XEXP (src, 0))))
+ && CONST_INT_P (XEXP (src, 1)))
+ {
+ t = plus_constant (GET_MODE (src), t,
+ INTVAL (XEXP (src, 1)));
+ set_reg_known_value (regno, t);
+ set_reg_known_equiv_p (regno, false);
+ }
+ else if (DF_REG_DEF_COUNT (regno) == 1
+ && ! rtx_varies_p (src, 1))
+ {
+ set_reg_known_value (regno, src);
+ set_reg_known_equiv_p (regno, false);
+ }
}
}
+ else if (NOTE_P (insn)
+ && NOTE_KIND (insn) == NOTE_INSN_FUNCTION_BEG)
+ copying_arguments = false;
}
- else if (NOTE_P (insn)
- && NOTE_KIND (insn) == NOTE_INSN_FUNCTION_BEG)
- copying_arguments = false;
}
/* Now propagate values from new_reg_base_value to reg_base_value. */
@@ -2925,6 +2938,7 @@ init_alias_analysis (void)
}
}
while (changed && ++pass < MAX_ALIAS_LOOP_PASSES);
+ XDELETEVEC (rpo);
/* Fill in the remaining entries. */
FOR_EACH_VEC_ELT (rtx, reg_known_value, i, val)
diff --git a/gcc/alias.h b/gcc/alias.h
index 9e0d1872658..026dbe603cd 100644
--- a/gcc/alias.h
+++ b/gcc/alias.h
@@ -21,8 +21,6 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_ALIAS_H
#define GCC_ALIAS_H
-#include "coretypes.h"
-
/* The type of an alias set. Code currently assumes that variables of
this type can take the values 0 (the alias set which aliases
everything) and -1 (sometimes indicating that the alias set is
diff --git a/gcc/alloc-pool.c b/gcc/alloc-pool.c
index 4dbd0fd570d..bedcf1f8bff 100644
--- a/gcc/alloc-pool.c
+++ b/gcc/alloc-pool.c
@@ -62,8 +62,6 @@ typedef struct allocation_object_def
static ALLOC_POOL_ID_TYPE last_id;
#endif
-#ifdef GATHER_STATISTICS
-
/* Store information about each particular alloc_pool. Note that this
will underestimate the amount the amount of storage used by a small amount:
1) The overhead in a pool is not accounted for.
@@ -123,7 +121,6 @@ alloc_pool_descriptor (const char *name)
(*slot)->name = name;
return *slot;
}
-#endif
/* Create a pool of things of size SIZE, with NUM in each block we
allocate. */
@@ -133,9 +130,6 @@ create_alloc_pool (const char *name, size_t size, size_t num)
{
alloc_pool pool;
size_t header_size;
-#ifdef GATHER_STATISTICS
- struct alloc_pool_descriptor *desc;
-#endif
gcc_checking_assert (name);
@@ -159,14 +153,16 @@ create_alloc_pool (const char *name, size_t size, size_t num)
/* Now init the various pieces of our pool structure. */
pool->name = /*xstrdup (name)*/name;
-#ifdef GATHER_STATISTICS
- desc = alloc_pool_descriptor (name);
- desc->elt_size = size;
- desc->created++;
-#endif
pool->elt_size = size;
pool->elts_per_block = num;
+ if (GATHER_STATISTICS)
+ {
+ struct alloc_pool_descriptor *desc = alloc_pool_descriptor (name);
+ desc->elt_size = size;
+ desc->created++;
+ }
+
/* List header size should be a multiple of 8. */
header_size = align_eight (sizeof (struct alloc_pool_list_def));
@@ -197,9 +193,6 @@ void
empty_alloc_pool (alloc_pool pool)
{
alloc_pool_list block, next_block;
-#ifdef GATHER_STATISTICS
- struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
-#endif
gcc_checking_assert (pool);
@@ -210,9 +203,12 @@ empty_alloc_pool (alloc_pool pool)
free (block);
}
-#ifdef GATHER_STATISTICS
- desc->current -= (pool->elts_allocated - pool->elts_free) * pool->elt_size;
-#endif
+ if (GATHER_STATISTICS)
+ {
+ struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
+ desc->current -= (pool->elts_allocated - pool->elts_free) * pool->elt_size;
+ }
+
pool->returned_free_list = NULL;
pool->virgin_free_list = NULL;
pool->virgin_elts_remaining = 0;
@@ -251,16 +247,24 @@ void *
pool_alloc (alloc_pool pool)
{
alloc_pool_list header;
-#ifdef GATHER_STATISTICS
- struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
-
- desc->allocated += pool->elt_size;
- desc->current += pool->elt_size;
- if (desc->peak < desc->current)
- desc->peak = desc->current;
+#ifdef ENABLE_VALGRIND_CHECKING
+ int size;
#endif
+ if (GATHER_STATISTICS)
+ {
+ struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
+
+ desc->allocated += pool->elt_size;
+ desc->current += pool->elt_size;
+ if (desc->peak < desc->current)
+ desc->peak = desc->current;
+ }
+
gcc_checking_assert (pool);
+#ifdef ENABLE_VALGRIND_CHECKING
+ size = pool->elt_size - offsetof (allocation_object, u.data);
+#endif
/* If there are no more free elements, make some more!. */
if (!pool->returned_free_list)
@@ -300,6 +304,7 @@ pool_alloc (alloc_pool pool)
/* Mark the element to be free. */
((allocation_object *) block)->id = 0;
#endif
+ VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS (header,size));
pool->returned_free_list = header;
pool->virgin_free_list += pool->elt_size;
pool->virgin_elts_remaining--;
@@ -308,6 +313,7 @@ pool_alloc (alloc_pool pool)
/* Pull the first free element from the free list, and return it. */
header = pool->returned_free_list;
+ VALGRIND_DISCARD (VALGRIND_MAKE_MEM_DEFINED (header, sizeof(*header)));
pool->returned_free_list = header->next;
pool->elts_free--;
@@ -315,6 +321,7 @@ pool_alloc (alloc_pool pool)
/* Set the ID for element. */
ALLOCATION_OBJECT_PTR_FROM_USER_PTR (header)->id = pool->id;
#endif
+ VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (header, size));
return ((void *) header);
}
@@ -324,11 +331,11 @@ void
pool_free (alloc_pool pool, void *ptr)
{
alloc_pool_list header;
-#ifdef GATHER_STATISTICS
- struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
+#if defined(ENABLE_VALGRIND_CHECKING) || defined(ENABLE_CHECKING)
+ int size;
+ size = pool->elt_size - offsetof (allocation_object, u.data);
#endif
-
#ifdef ENABLE_CHECKING
gcc_assert (ptr
/* Check if we free more than we allocated, which is Bad (TM). */
@@ -336,25 +343,26 @@ pool_free (alloc_pool pool, void *ptr)
/* Check whether the PTR was allocated from POOL. */
&& pool->id == ALLOCATION_OBJECT_PTR_FROM_USER_PTR (ptr)->id);
- memset (ptr, 0xaf, pool->elt_size - offsetof (allocation_object, u.data));
+ memset (ptr, 0xaf, size);
/* Mark the element to be free. */
ALLOCATION_OBJECT_PTR_FROM_USER_PTR (ptr)->id = 0;
-#else
#endif
header = (alloc_pool_list) ptr;
header->next = pool->returned_free_list;
pool->returned_free_list = header;
+ VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS (ptr, size));
pool->elts_free++;
-#ifdef GATHER_STATISTICS
- desc->current -= pool->elt_size;
-#endif
-
+ if (GATHER_STATISTICS)
+ {
+ struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
+ desc->current -= pool->elt_size;
+ }
}
+
/* Output per-alloc_pool statistics. */
-#ifdef GATHER_STATISTICS
/* Used to accumulate statistics about alloc_pool sizes. */
struct output_info
@@ -382,15 +390,16 @@ print_statistics (void **slot, void *b)
}
return 1;
}
-#endif
/* Output per-alloc_pool memory usage statistics. */
void
dump_alloc_pool_statistics (void)
{
-#ifdef GATHER_STATISTICS
struct output_info info;
+ if (! GATHER_STATISTICS)
+ return;
+
if (!alloc_pool_hash)
return;
@@ -403,5 +412,4 @@ dump_alloc_pool_statistics (void)
fprintf (stderr, "%-22s %7lu %10lu\n",
"Total", info.total_created, info.total_allocated);
fprintf (stderr, "--------------------------------------------------------------------------------------------------------------\n");
-#endif
}
diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h
index fa9848a2b9b..4593b70f4b3 100644
--- a/gcc/alloc-pool.h
+++ b/gcc/alloc-pool.h
@@ -61,7 +61,7 @@ extern alloc_pool create_alloc_pool (const char *, size_t, size_t);
extern void free_alloc_pool (alloc_pool);
extern void empty_alloc_pool (alloc_pool);
extern void free_alloc_pool_if_empty (alloc_pool *);
-extern void *pool_alloc (alloc_pool);
+extern void *pool_alloc (alloc_pool) ATTRIBUTE_MALLOC;
extern void pool_free (alloc_pool, void *);
extern void dump_alloc_pool_statistics (void);
#endif
diff --git a/gcc/auto-inc-dec.c b/gcc/auto-inc-dec.c
index f64dbe0dcca..b1074f943b2 100644
--- a/gcc/auto-inc-dec.c
+++ b/gcc/auto-inc-dec.c
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "recog.h"
#include "expr.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
#include "dbgcnt.h"
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 348f150ab6d..09b5eb0a77c 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -33,19 +33,19 @@ along with GCC; see the file COPYING3. If not see
typedef HOST_WIDEST_INT gcov_type;
/* Control flow edge information. */
-struct GTY(()) edge_def {
+struct GTY((user)) edge_def {
/* The two blocks at the ends of the edge. */
- struct basic_block_def *src;
- struct basic_block_def *dest;
+ basic_block src;
+ basic_block dest;
/* Instructions queued on the edge. */
union edge_def_insns {
- gimple_seq GTY ((tag ("true"))) g;
- rtx GTY ((tag ("false"))) r;
- } GTY ((desc ("current_ir_type () == IR_GIMPLE"))) insns;
+ gimple_seq g;
+ rtx r;
+ } insns;
/* Auxiliary info specific to a pass. */
- PTR GTY ((skip (""))) aux;
+ PTR aux;
/* Location of any goto implicit in the edge and associated BLOCK. */
tree goto_block;
@@ -55,7 +55,7 @@ struct GTY(()) edge_def {
dest->preds. */
unsigned int dest_idx;
- int flags; /* see EDGE_* below */
+ int flags; /* see cfg-flags.def */
int probability; /* biased by REG_BR_PROB_BASE */
gcov_type count; /* Expected number of executions calculated
in profile.c */
@@ -65,32 +65,25 @@ DEF_VEC_P(edge);
DEF_VEC_ALLOC_P(edge,gc);
DEF_VEC_ALLOC_P(edge,heap);
-/* Always update the table in cfg.c dump_edge_info. */
-#define EDGE_FALLTHRU 0x0001 /* 'Straight line' flow */
-#define EDGE_ABNORMAL 0x0002 /* Strange flow, like computed
- label, or eh */
-#define EDGE_ABNORMAL_CALL 0x0004 /* Call with abnormal exit
- like an exception, or sibcall */
-#define EDGE_EH 0x0008 /* Exception throw */
-#define EDGE_FAKE 0x0010 /* Not a real edge (profile.c) */
-#define EDGE_DFS_BACK 0x0020 /* A backwards edge */
-#define EDGE_CAN_FALLTHRU 0x0040 /* Candidate for straight line
- flow. */
-#define EDGE_IRREDUCIBLE_LOOP 0x0080 /* Part of irreducible loop. */
-#define EDGE_SIBCALL 0x0100 /* Edge from sibcall to exit. */
-#define EDGE_LOOP_EXIT 0x0200 /* Exit of a loop. */
-#define EDGE_TRUE_VALUE 0x0400 /* Edge taken when controlling
- predicate is nonzero. */
-#define EDGE_FALSE_VALUE 0x0800 /* Edge taken when controlling
- predicate is zero. */
-#define EDGE_EXECUTABLE 0x1000 /* Edge is executable. Only
- valid during SSA-CCP. */
-#define EDGE_CROSSING 0x2000 /* Edge crosses between hot
- and cold sections, when we
- do partitioning. */
-#define EDGE_PRESERVE 0x4000 /* Never merge blocks via this edge. */
-#define EDGE_ALL_FLAGS 0x7fff
+/* Garbage collection and PCH support for edge_def. */
+extern void gt_ggc_mx (edge_def *e);
+extern void gt_pch_nx (edge_def *e);
+extern void gt_pch_nx (edge_def *e, gt_pointer_operator, void *);
+
+/* Masks for edge.flags. */
+#define DEF_EDGE_FLAG(NAME,IDX) EDGE_##NAME = 1 << IDX ,
+enum cfg_edge_flags {
+#include "cfg-flags.def"
+ LAST_CFG_EDGE_FLAG /* this is only used for EDGE_ALL_FLAGS */
+};
+#undef DEF_EDGE_FLAG
+/* Bit mask for all edge flags. */
+#define EDGE_ALL_FLAGS ((LAST_CFG_EDGE_FLAG - 1) * 2 - 1)
+
+/* The following four flags all indicate something special about an edge.
+ Test the edge flags on EDGE_COMPLEX to detect all forms of "strange"
+ control flow transfers. */
#define EDGE_COMPLEX \
(EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH | EDGE_PRESERVE)
@@ -120,7 +113,7 @@ struct GTY(()) gimple_bb_info {
gimple_seq phi_nodes;
};
-/* A basic block is a sequence of instructions with only entry and
+/* A basic block is a sequence of instructions with only one entry and
only one exit. If any one of the instructions are executed, they
will all be executed, and in sequence from first to last.
@@ -161,8 +154,8 @@ struct GTY((chain_next ("%h.next_bb"), chain_prev ("%h.prev_bb"))) basic_block_d
struct et_node * GTY ((skip (""))) dom[2];
/* Previous and next blocks in the chain. */
- struct basic_block_def *prev_bb;
- struct basic_block_def *next_bb;
+ basic_block prev_bb;
+ basic_block next_bb;
union basic_block_il_dependent {
struct gimple_bb_info GTY ((tag ("0"))) gimple;
@@ -172,23 +165,22 @@ struct GTY((chain_next ("%h.next_bb"), chain_prev ("%h.prev_bb"))) basic_block_d
} GTY ((tag ("1"))) x;
} GTY ((desc ("((%1.flags & BB_RTL) != 0)"))) il;
- /* Expected number of executions: calculated in profile.c. */
- gcov_type count;
+ /* Various flags. See cfg-flags.def. */
+ int flags;
/* The index of this block. */
int index;
- /* The loop depth of this block. */
- int loop_depth;
+ /* Expected number of executions: calculated in profile.c. */
+ gcov_type count;
/* Expected frequency. Normalized to be in range 0 to BB_FREQ_MAX. */
int frequency;
- /* The discriminator for this block. */
+ /* The discriminator for this block. The discriminator distinguishes
+ among several basic blocks that share a common locus, allowing for
+ more accurate sample-based profiling. */
int discriminator;
-
- /* Various flags. See BB_* below. */
- int flags;
};
/* This ensures that struct gimple_bb_info is smaller than
@@ -204,74 +196,25 @@ DEF_VEC_ALLOC_P(basic_block,heap);
#define BB_FREQ_MAX 10000
-/* Masks for basic_block.flags.
-
- BB_HOT_PARTITION and BB_COLD_PARTITION should be preserved throughout
- the compilation, so they are never cleared.
-
- All other flags may be cleared by clear_bb_flags(). It is generally
- a bad idea to rely on any flags being up-to-date.
-
- Always update the table in cfg.c dump_bb_info. */
-
-enum bb_flags
+/* Masks for basic_block.flags. */
+#define DEF_BASIC_BLOCK_FLAG(NAME,IDX) BB_##NAME = 1 << IDX ,
+enum cfg_bb_flags
{
- /* Only set on blocks that have just been created by create_bb. */
- BB_NEW = 1 << 0,
-
- /* Set by find_unreachable_blocks. Do not rely on this being set in any
- pass. */
- BB_REACHABLE = 1 << 1,
-
- /* Set for blocks in an irreducible loop by loop analysis. */
- BB_IRREDUCIBLE_LOOP = 1 << 2,
-
- /* Set on blocks that may actually not be single-entry single-exit block. */
- BB_SUPERBLOCK = 1 << 3,
-
- /* Set on basic blocks that the scheduler should not touch. This is used
- by SMS to prevent other schedulers from messing with the loop schedule. */
- BB_DISABLE_SCHEDULE = 1 << 4,
-
- /* Set on blocks that should be put in a hot section. */
- BB_HOT_PARTITION = 1 << 5,
-
- /* Set on blocks that should be put in a cold section. */
- BB_COLD_PARTITION = 1 << 6,
-
- /* Set on block that was duplicated. */
- BB_DUPLICATED = 1 << 7,
-
- /* Set if the label at the top of this block is the target of a non-local goto. */
- BB_NON_LOCAL_GOTO_TARGET = 1 << 8,
-
- /* Set on blocks that are in RTL format. */
- BB_RTL = 1 << 9 ,
-
- /* Set on blocks that are forwarder blocks.
- Only used in cfgcleanup.c. */
- BB_FORWARDER_BLOCK = 1 << 10,
-
- /* Set on blocks that cannot be threaded through.
- Only used in cfgcleanup.c. */
- BB_NONTHREADABLE_BLOCK = 1 << 11,
-
- /* Set on blocks that were modified in some way. This bit is set in
- df_set_bb_dirty, but not cleared by df_analyze, so it can be used
- to test whether a block has been modified prior to a df_analyze
- call. */
- BB_MODIFIED = 1 << 12,
+#include "cfg-flags.def"
+ LAST_CFG_BB_FLAG /* this is only used for BB_ALL_FLAGS */
+};
+#undef DEF_BASIC_BLOCK_FLAG
- /* A general visited flag for passes to use. */
- BB_VISITED = 1 << 13,
+/* Bit mask for all basic block flags. */
+#define BB_ALL_FLAGS ((LAST_CFG_BB_FLAG - 1) * 2 - 1)
- /* Set on blocks that are in a transaction. This is calculated on
- demand, and is available after calling
- compute_transaction_bits(). */
- BB_IN_TRANSACTION = 1 << 14
-};
+/* Bit mask for all basic block flags that must be preserved. These are
+ the bit masks that are *not* cleared by clear_bb_flags. */
+#define BB_FLAGS_TO_PRESERVE \
+ (BB_DISABLE_SCHEDULE | BB_RTL | BB_NON_LOCAL_GOTO_TARGET \
+ | BB_HOT_PARTITION | BB_COLD_PARTITION)
-/* Dummy flag for convenience in the hot/cold partitioning code. */
+/* Dummy bitmask for convenience in the hot/cold partitioning code. */
#define BB_UNPARTITIONED 0
/* Partitions, to be used when partitioning hot and cold basic blocks into
@@ -448,10 +391,6 @@ basic_block split_edge_and_insert (edge, rtx);
extern void commit_one_edge_insertion (edge e);
extern void commit_edge_insertions (void);
-extern void remove_fake_edges (void);
-extern void remove_fake_exit_edges (void);
-extern void add_noreturn_fake_exit_edges (void);
-extern void connect_infinite_loops_to_exit (void);
extern edge unchecked_make_edge (basic_block, basic_block, int);
extern edge cached_make_edge (sbitmap, basic_block, basic_block, int);
extern edge make_edge (basic_block, basic_block, int);
@@ -462,17 +401,9 @@ extern edge redirect_edge_succ_nodup (edge, basic_block);
extern void redirect_edge_pred (edge, basic_block);
extern basic_block create_basic_block_structure (rtx, rtx, rtx, basic_block);
extern void clear_bb_flags (void);
-extern int post_order_compute (int *, bool, bool);
-extern int inverted_post_order_compute (int *);
-extern int pre_and_rev_post_order_compute (int *, int *, bool);
-extern int dfs_enumerate_from (basic_block, int,
- bool (*)(const_basic_block, const void *),
- basic_block *, int, const void *);
-extern void compute_dominance_frontiers (struct bitmap_head_def *);
-extern bitmap compute_idf (bitmap, struct bitmap_head_def *);
-extern void dump_bb_info (basic_block, bool, bool, int, const char *, FILE *);
-extern void dump_edge_info (FILE *, edge, int);
-extern void brief_dump_cfg (FILE *);
+extern void dump_bb_info (FILE *, basic_block, int, int, bool, bool);
+extern void dump_edge_info (FILE *, edge, int, int);
+extern void brief_dump_cfg (FILE *, int);
extern void clear_edges (void);
extern void scale_bbs_frequencies_int (basic_block *, int, int, int);
extern void scale_bbs_frequencies_gcov_type (basic_block *, int, gcov_type,
@@ -501,9 +432,9 @@ typedef struct ce_if_block
} ce_if_block_t;
/* This structure maintains an edge list vector. */
+/* FIXME: Make this a VEC(edge). */
struct edge_list
{
- int num_blocks;
int num_edges;
edge *index_to_edge;
};
@@ -734,13 +665,6 @@ ei_cond (edge_iterator ei, edge *p)
ei_cond ((ITER), &(EDGE)); \
ei_next (&(ITER)))
-struct edge_list * create_edge_list (void);
-void free_edge_list (struct edge_list *);
-void print_edge_list (FILE *, struct edge_list *);
-void verify_edge_list (FILE *, struct edge_list *);
-int find_edge_index (struct edge_list *, basic_block, basic_block);
-edge find_edge (basic_block, basic_block);
-
#define CLEANUP_EXPENSIVE 1 /* Do relatively expensive optimizations
except for edge forwarding */
#define CLEANUP_CROSSJUMP 2 /* Do crossjumping. */
@@ -752,6 +676,12 @@ edge find_edge (basic_block, basic_block);
#define CLEANUP_CFGLAYOUT 32 /* Do cleanup in cfglayout mode. */
#define CLEANUP_CFG_CHANGED 64 /* The caller changed the CFG. */
+/* In cfganal.c */
+extern void sbitmap_intersection_of_succs (sbitmap, sbitmap *, basic_block);
+extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, basic_block);
+extern void sbitmap_union_of_succs (sbitmap, sbitmap *, basic_block);
+extern void sbitmap_union_of_preds (sbitmap, sbitmap *, basic_block);
+
/* In lcm.c */
extern struct edge_list *pre_edge_lcm (int, sbitmap *, sbitmap *,
sbitmap *, sbitmap *, sbitmap **,
@@ -763,9 +693,9 @@ extern struct edge_list *pre_edge_rev_lcm (int, sbitmap *,
extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
/* In predict.c */
-extern bool maybe_hot_bb_p (const_basic_block);
+extern bool maybe_hot_bb_p (struct function *, const_basic_block);
extern bool maybe_hot_edge_p (edge);
-extern bool probably_never_executed_bb_p (const_basic_block);
+extern bool probably_never_executed_bb_p (struct function *, const_basic_block);
extern bool optimize_bb_for_size_p (const_basic_block);
extern bool optimize_bb_for_speed_p (const_basic_block);
extern bool optimize_edge_for_size_p (edge);
@@ -789,6 +719,7 @@ extern bool predictable_edge_p (edge);
extern void init_flow (struct function *);
extern void debug_bb (basic_block);
extern basic_block debug_bb_n (int);
+extern void dump_flow_info (FILE *, int);
extern void expunge_block (basic_block);
extern void link_block (basic_block, basic_block);
extern void unlink_block (basic_block);
@@ -804,11 +735,25 @@ extern void free_aux_for_edges (void);
/* In cfganal.c */
extern void find_unreachable_blocks (void);
-extern bool forwarder_block_p (const_basic_block);
-extern bool can_fallthru (basic_block, basic_block);
-extern bool could_fall_through (basic_block, basic_block);
-extern void flow_nodes_print (const char *, const_sbitmap, FILE *);
-extern void flow_edge_list_print (const char *, const edge *, int, FILE *);
+extern bool mark_dfs_back_edges (void);
+struct edge_list * create_edge_list (void);
+void free_edge_list (struct edge_list *);
+void print_edge_list (FILE *, struct edge_list *);
+void verify_edge_list (FILE *, struct edge_list *);
+int find_edge_index (struct edge_list *, basic_block, basic_block);
+edge find_edge (basic_block, basic_block);
+extern void remove_fake_edges (void);
+extern void remove_fake_exit_edges (void);
+extern void add_noreturn_fake_exit_edges (void);
+extern void connect_infinite_loops_to_exit (void);
+extern int post_order_compute (int *, bool, bool);
+extern int inverted_post_order_compute (int *);
+extern int pre_and_rev_post_order_compute (int *, int *, bool);
+extern int dfs_enumerate_from (basic_block, int,
+ bool (*)(const_basic_block, const void *),
+ basic_block *, int, const void *);
+extern void compute_dominance_frontiers (struct bitmap_head_def *);
+extern bitmap compute_idf (bitmap, struct bitmap_head_def *);
/* In cfgrtl.c */
extern rtx block_label (basic_block);
@@ -817,6 +762,8 @@ extern bool purge_all_dead_edges (void);
extern bool purge_dead_edges (basic_block);
extern bool fixup_abnormal_edges (void);
extern basic_block force_nonfallthru_and_redirect (edge, basic_block, rtx);
+extern bool forwarder_block_p (const_basic_block);
+extern bool can_fallthru (basic_block, basic_block);
/* In cfgbuild.c. */
extern void find_many_sub_basic_blocks (sbitmap);
@@ -833,8 +780,6 @@ extern int flow_find_head_matching_sequence (basic_block, basic_block,
extern bool delete_unreachable_blocks (void);
-extern bool mark_dfs_back_edges (void);
-extern void set_edge_can_fallthru_flag (void);
extern void update_br_prob_note (basic_block);
extern bool inside_basic_block_p (const_rtx);
extern bool control_flow_insn_p (const_rtx);
@@ -885,7 +830,6 @@ unsigned bb_dom_dfs_out (enum cdi_direction, basic_block);
extern edge try_redirect_by_replacing_jump (edge, basic_block, bool);
extern void break_superblocks (void);
extern void relink_block_chain (bool);
-extern void check_bb_profile (basic_block, FILE *);
extern void update_bb_profile_for_threading (basic_block, int, gcov_type, edge);
extern void init_rtl_bb_info (basic_block);
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index 143bdd0c168..c282fb2fe30 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -72,7 +72,6 @@
#include "rtl.h"
#include "regs.h"
#include "flags.h"
-#include "timevar.h"
#include "output.h"
#include "fibheap.h"
#include "target.h"
@@ -227,7 +226,7 @@ push_to_next_round_p (const_basic_block bb, int round, int number_of_rounds,
block_not_hot_enough = (bb->frequency < exec_th
|| bb->count < count_th
- || probably_never_executed_bb_p (bb));
+ || probably_never_executed_bb_p (cfun, bb));
if (there_exists_another_round
&& block_not_hot_enough)
@@ -824,7 +823,7 @@ bb_to_key (basic_block bb)
/* Do not start in probably never executed blocks. */
if (BB_PARTITION (bb) == BB_COLD_PARTITION
- || probably_never_executed_bb_p (bb))
+ || probably_never_executed_bb_p (cfun, bb))
return BB_FREQ_MAX;
/* Prefer blocks whose predecessor is an end of some trace
@@ -1309,7 +1308,7 @@ find_rarely_executed_basic_blocks_and_crossing_edges (void)
/* Mark which partition (hot/cold) each basic block belongs in. */
FOR_EACH_BB (bb)
{
- if (probably_never_executed_bb_p (bb))
+ if (probably_never_executed_bb_p (cfun, bb))
BB_SET_PARTITION (bb, BB_COLD_PARTITION);
else
BB_SET_PARTITION (bb, BB_HOT_PARTITION);
@@ -1384,6 +1383,41 @@ find_rarely_executed_basic_blocks_and_crossing_edges (void)
return crossing_edges;
}
+/* Set the flag EDGE_CAN_FALLTHRU for edges that can be fallthru. */
+
+static void
+set_edge_can_fallthru_flag (void)
+{
+ basic_block bb;
+
+ FOR_EACH_BB (bb)
+ {
+ edge e;
+ edge_iterator ei;
+
+ FOR_EACH_EDGE (e, ei, bb->succs)
+ {
+ e->flags &= ~EDGE_CAN_FALLTHRU;
+
+ /* The FALLTHRU edge is also CAN_FALLTHRU edge. */
+ if (e->flags & EDGE_FALLTHRU)
+ e->flags |= EDGE_CAN_FALLTHRU;
+ }
+
+ /* If the BB ends with an invertible condjump all (2) edges are
+ CAN_FALLTHRU edges. */
+ if (EDGE_COUNT (bb->succs) != 2)
+ continue;
+ if (!any_condjump_p (BB_END (bb)))
+ continue;
+ if (!invert_jump (BB_END (bb), JUMP_LABEL (BB_END (bb)), 0))
+ continue;
+ invert_jump (BB_END (bb), JUMP_LABEL (BB_END (bb)), 0);
+ EDGE_SUCC (bb, 0)->flags |= EDGE_CAN_FALLTHRU;
+ EDGE_SUCC (bb, 1)->flags |= EDGE_CAN_FALLTHRU;
+ }
+}
+
/* If any destination of a crossing edge does not have a label, add label;
Convert any easy fall-through crossing edges to unconditional jumps. */
@@ -1959,7 +1993,11 @@ reorder_basic_blocks (void)
relink_block_chain (/*stay_in_cfglayout_mode=*/true);
if (dump_file)
- dump_flow_info (dump_file, dump_flags);
+ {
+ if (dump_flags & TDF_DETAILS)
+ dump_reg_info (dump_file);
+ dump_flow_info (dump_file, dump_flags);
+ }
if (flag_reorder_blocks_and_partition)
verify_hot_cold_block_grouping ();
diff --git a/gcc/bitmap.c b/gcc/bitmap.c
index 8d7f1b2aa95..1a28788bc3e 100644
--- a/gcc/bitmap.c
+++ b/gcc/bitmap.c
@@ -1,6 +1,5 @@
/* Functions to support general ended bitmaps.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -26,8 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "bitmap.h"
#include "hashtab.h"
-#ifdef GATHER_STATISTICS
-
/* Store information about each particular bitmap. */
struct bitmap_descriptor
{
@@ -70,7 +67,7 @@ eq_descriptor (const void *p1, const void *p2)
/* For given file and line, return descriptor, create new if needed. */
static struct bitmap_descriptor *
-bitmap_descriptor (const char *file, const char *function, int line)
+bitmap_descriptor (const char *file, int line, const char *function)
{
struct bitmap_descriptor **slot;
struct loc loc;
@@ -99,7 +96,7 @@ bitmap_descriptor (const char *file, const char *function, int line)
void
bitmap_register (bitmap b MEM_STAT_DECL)
{
- b->desc = bitmap_descriptor (_loc_name, _loc_function, _loc_line);
+ b->desc = bitmap_descriptor (ALONE_FINAL_PASS_MEM_STAT);
b->desc->created++;
}
@@ -114,7 +111,6 @@ register_overhead (bitmap b, int amount)
if (b->desc->peak < b->desc->current)
b->desc->peak = b->desc->current;
}
-#endif
/* Global data */
bitmap_element bitmap_zero_bits; /* An element of all zero bits. */
@@ -180,9 +176,10 @@ bitmap_element_free (bitmap head, bitmap_element *elt)
else
head->indx = 0;
}
-#ifdef GATHER_STATISTICS
- register_overhead (head, -((int)sizeof (bitmap_element)));
-#endif
+
+ if (GATHER_STATISTICS)
+ register_overhead (head, -((int)sizeof (bitmap_element)));
+
bitmap_elem_to_freelist (head, elt);
}
@@ -230,9 +227,9 @@ bitmap_element_allocate (bitmap head)
element = ggc_alloc_bitmap_element_def ();
}
-#ifdef GATHER_STATISTICS
- register_overhead (head, sizeof (bitmap_element));
-#endif
+ if (GATHER_STATISTICS)
+ register_overhead (head, sizeof (bitmap_element));
+
memset (element->bits, 0, sizeof (element->bits));
return element;
@@ -245,17 +242,16 @@ bitmap_elt_clear_from (bitmap head, bitmap_element *elt)
{
bitmap_element *prev;
bitmap_obstack *bit_obstack = head->obstack;
-#ifdef GATHER_STATISTICS
- int n;
-#endif
if (!elt) return;
-#ifdef GATHER_STATISTICS
- n = 0;
- for (prev = elt; prev; prev = prev->next)
- n++;
- register_overhead (head, -sizeof (bitmap_element) * n);
-#endif
+
+ if (GATHER_STATISTICS)
+ {
+ int n = 0;
+ for (prev = elt; prev; prev = prev->next)
+ n++;
+ register_overhead (head, -sizeof (bitmap_element) * n);
+ }
prev = elt->prev;
if (prev)
@@ -358,9 +354,9 @@ bitmap_obstack_alloc_stat (bitmap_obstack *bit_obstack MEM_STAT_DECL)
else
map = XOBNEW (&bit_obstack->obstack, bitmap_head);
bitmap_initialize_stat (map, bit_obstack PASS_MEM_STAT);
-#ifdef GATHER_STATISTICS
- register_overhead (map, sizeof (bitmap_head));
-#endif
+
+ if (GATHER_STATISTICS)
+ register_overhead (map, sizeof (bitmap_head));
return map;
}
@@ -374,9 +370,9 @@ bitmap_gc_alloc_stat (ALONE_MEM_STAT_DECL)
map = ggc_alloc_bitmap_head_def ();
bitmap_initialize_stat (map, NULL PASS_MEM_STAT);
-#ifdef GATHER_STATISTICS
- register_overhead (map, sizeof (bitmap_head));
-#endif
+
+ if (GATHER_STATISTICS)
+ register_overhead (map, sizeof (bitmap_head));
return map;
}
@@ -390,9 +386,10 @@ bitmap_obstack_free (bitmap map)
{
bitmap_clear (map);
map->first = (bitmap_element *) map->obstack->heads;
-#ifdef GATHER_STATISTICS
- register_overhead (map, -((int)sizeof (bitmap_head)));
-#endif
+
+ if (GATHER_STATISTICS)
+ register_overhead (map, -((int)sizeof (bitmap_head)));
+
map->obstack->heads = map;
}
}
@@ -557,9 +554,9 @@ bitmap_find_bit (bitmap head, unsigned int bit)
if (head->current == 0
|| head->indx == indx)
return head->current;
-#ifdef GATHER_STATISTICS
- head->desc->nsearches++;
-#endif
+
+ if (GATHER_STATISTICS)
+ head->desc->nsearches++;
if (head->indx < indx)
/* INDX is beyond head->indx. Search from head->current
@@ -567,11 +564,10 @@ bitmap_find_bit (bitmap head, unsigned int bit)
for (element = head->current;
element->next != 0 && element->indx < indx;
element = element->next)
-#ifdef GATHER_STATISTICS
- head->desc->search_iter++;
-#else
- ;
-#endif
+ {
+ if (GATHER_STATISTICS)
+ head->desc->search_iter++;
+ }
else if (head->indx / 2 < indx)
/* INDX is less than head->indx and closer to head->indx than to
@@ -579,11 +575,10 @@ bitmap_find_bit (bitmap head, unsigned int bit)
for (element = head->current;
element->prev != 0 && element->indx > indx;
element = element->prev)
-#ifdef GATHER_STATISTICS
- head->desc->search_iter++;
-#else
- ;
-#endif
+ {
+ if (GATHER_STATISTICS)
+ head->desc->search_iter++;
+ }
else
/* INDX is less than head->indx and closer to 0 than to
@@ -591,11 +586,10 @@ bitmap_find_bit (bitmap head, unsigned int bit)
for (element = head->first;
element->next != 0 && element->indx < indx;
element = element->next)
-#ifdef GATHER_STATISTICS
- head->desc->search_iter++;
-#else
- ;
-#endif
+ if (GATHER_STATISTICS)
+ {
+ head->desc->search_iter++;
+ }
/* `element' is the nearest to the one we want. If it's not the one we
want, the one we want doesn't exist. */
@@ -2032,6 +2026,24 @@ bitmap_ior_and_into (bitmap a, const_bitmap b, const_bitmap c)
a->indx = a->current->indx;
return changed;
}
+
+/* Compute hash of bitmap (for purposes of hashing). */
+hashval_t
+bitmap_hash (const_bitmap head)
+{
+ const bitmap_element *ptr;
+ BITMAP_WORD hash = 0;
+ int ix;
+
+ for (ptr = head->first; ptr; ptr = ptr->next)
+ {
+ hash ^= ptr->indx;
+ for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
+ hash ^= ptr->bits[ix];
+ }
+ return (hashval_t)hash;
+}
+
/* Debugging function to print out the contents of a bitmap. */
@@ -2099,7 +2111,6 @@ bitmap_print (FILE *file, const_bitmap head, const char *prefix, const char *suf
}
fputs (suffix, file);
}
-#ifdef GATHER_STATISTICS
/* Used to accumulate statistics about bitmap sizes. */
@@ -2135,14 +2146,16 @@ print_statistics (void **slot, void *b)
}
return 1;
}
-#endif
+
/* Output per-bitmap memory usage statistics. */
void
dump_bitmap_statistics (void)
{
-#ifdef GATHER_STATISTICS
struct output_info info;
+ if (! GATHER_STATISTICS)
+ return;
+
if (!bitmap_desc_hash)
return;
@@ -2157,24 +2170,6 @@ dump_bitmap_statistics (void)
fprintf (stderr, "%-40s %9d %15"HOST_WIDEST_INT_PRINT"d\n",
"Total", info.count, info.size);
fprintf (stderr, "---------------------------------------------------------------------------------\n");
-#endif
-}
-
-/* Compute hash of bitmap (for purposes of hashing). */
-hashval_t
-bitmap_hash (const_bitmap head)
-{
- const bitmap_element *ptr;
- BITMAP_WORD hash = 0;
- int ix;
-
- for (ptr = head->first; ptr; ptr = ptr->next)
- {
- hash ^= ptr->indx;
- for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
- hash ^= ptr->bits[ix];
- }
- return (hashval_t)hash;
}
#include "gt-bitmap.h"
diff --git a/gcc/bitmap.h b/gcc/bitmap.h
index 411443f360f..1c39cd49efd 100644
--- a/gcc/bitmap.h
+++ b/gcc/bitmap.h
@@ -1,6 +1,5 @@
/* Functions to support general ended bitmaps.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -20,6 +19,114 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_BITMAP_H
#define GCC_BITMAP_H
+
+/* Implementation of sparse integer sets as a linked list.
+
+ This sparse set representation is suitable for sparse sets with an
+ unknown (a priori) universe. The set is represented as a double-linked
+ list of container nodes (struct bitmap_element_def). Each node consists
+ of an index for the first member that could be held in the container,
+ a small array of integers that represent the members in the container,
+ and pointers to the next and previous element in the linked list. The
+ elements in the list are sorted in ascending order, i.e. the head of
+ the list holds the element with the smallest member of the set.
+
+ For a given member I in the set:
+ - the element for I will have index is I / (bits per element)
+ - the position for I within element is I % (bits per element)
+
+ This representation is very space-efficient for large sparse sets, and
+ the size of the set can be changed dynamically without much overhead.
+ An important parameter is the number of bits per element. In this
+ implementation, there are 128 bits per element. This results in a
+ high storage overhead *per element*, but a small overall overhead if
+ the set is very sparse.
+
+ The downside is that many operations are relatively slow because the
+ linked list has to be traversed to test membership (i.e. member_p/
+ add_member/remove_member). To improve the performance of this set
+ representation, the last accessed element and its index are cached.
+ For membership tests on members close to recently accessed members,
+ the cached last element improves membership test to a constant-time
+ operation.
+
+ The following operations can always be performed in O(1) time:
+
+ * clear : bitmap_clear
+ * choose_one : (not implemented, but could be
+ implemented in constant time)
+
+ The following operations can be performed in O(E) time worst-case (with
+ E the number of elements in the linked list), but in O(1) time with a
+ suitable access patterns:
+
+ * member_p : bitmap_bit_p
+ * add_member : bitmap_set_bit
+ * remove_member : bitmap_clear_bit
+
+ The following operations can be performed in O(E) time:
+
+ * cardinality : bitmap_count_bits
+ * set_size : bitmap_last_set_bit (but this could
+ in constant time with a pointer to
+ the last element in the chain)
+
+ Additionally, the linked-list sparse set representation supports
+ enumeration of the members in O(E) time:
+
+ * forall : EXECUTE_IF_SET_IN_BITMAP
+ * set_copy : bitmap_copy
+ * set_intersection : bitmap_intersect_p /
+ bitmap_and / bitmap_and_into /
+ EXECUTE_IF_AND_IN_BITMAP
+ * set_union : bitmap_ior / bitmap_ior_into
+ * set_difference : bitmap_intersect_compl_p /
+ bitmap_and_comp / bitmap_and_comp_into /
+ EXECUTE_IF_AND_COMPL_IN_BITMAP
+ * set_disjuction : bitmap_xor_comp / bitmap_xor_comp_into
+ * set_compare : bitmap_equal_p
+
+ Some operations on 3 sets that occur frequently in in data flow problems
+ are also implemented:
+
+ * A | (B & C) : bitmap_ior_and_into
+ * A | (B & ~C) : bitmap_ior_and_compl /
+ bitmap_ior_and_compl_into
+
+ The storage requirements for linked-list sparse sets are O(E), with E->N
+ in the worst case (a sparse set with large distances between the values
+ of the set members).
+
+ The linked-list set representation works well for problems involving very
+ sparse sets. The canonical example in GCC is, of course, the "set of
+ sets" for some CFG-based data flow problems (liveness analysis, dominance
+ frontiers, etc.).
+
+ This representation also works well for data flow problems where the size
+ of the set may grow dynamically, but care must be taken that the member_p,
+ add_member, and remove_member operations occur with a suitable access
+ pattern.
+
+ For random-access sets with a known, relatively small universe size, the
+ SparseSet or simple bitmap representations may be more efficient than a
+ linked-list set. For random-access sets of unknown universe, a hash table
+ or a balanced binary tree representation is likely to be a more suitable
+ choice.
+
+ Traversing linked lists is usually cache-unfriendly, even with the last
+ accessed element cached.
+
+ Cache performance can be improved by keeping the elements in the set
+ grouped together in memory, using a dedicated obstack for a set (or group
+ of related sets). Elements allocated on obstacks are released to a
+ free-list and taken off the free list. If multiple sets are allocated on
+ the same obstack, elements freed from one set may be re-used for one of
+ the other sets. This usually helps avoid cache misses.
+
+ A single free-list is used for all sets allocated in GGC space. This is
+ bad for persistent sets, so persistent sets should be allocated on an
+ obstack whenever possible. */
+
#include "hashtab.h"
#include "statistics.h"
#include "obstack.h"
@@ -60,9 +167,9 @@ typedef struct GTY (()) bitmap_obstack {
bitmap_elt_clear_from to be implemented in unit time rather than
linear in the number of elements to be freed. */
-typedef struct GTY(()) bitmap_element_def {
- struct bitmap_element_def *next; /* Next element. */
- struct bitmap_element_def *prev; /* Previous element. */
+typedef struct GTY((chain_next ("%h.next"), chain_prev ("%h.prev"))) bitmap_element_def {
+ struct bitmap_element_def *next; /* Next element. */
+ struct bitmap_element_def *prev; /* Previous element. */
unsigned int indx; /* regno/BITMAP_ELEMENT_ALL_BITS. */
BITMAP_WORD bits[BITMAP_ELEMENT_WORDS]; /* Bits that are set. */
} bitmap_element;
@@ -70,17 +177,17 @@ typedef struct GTY(()) bitmap_element_def {
struct bitmap_descriptor;
/* Head of bitmap linked list. gengtype ignores ifdefs, but for
statistics we need to add a bitmap descriptor pointer. As it is
- not collected, we can just GTY((skip)) it. */
+ not collected, we can just GTY((skip(""))) it. Likewise current
+ points to something already pointed to by the chain started by first,
+ no need to walk it again. */
typedef struct GTY(()) bitmap_head_def {
- bitmap_element *first; /* First element in linked list. */
- bitmap_element *current; /* Last element looked at. */
- unsigned int indx; /* Index of last element looked at. */
- bitmap_obstack *obstack; /* Obstack to allocate elements from.
- If NULL, then use GGC allocation. */
-#ifdef GATHER_STATISTICS
- struct bitmap_descriptor GTY((skip)) *desc;
-#endif
+ bitmap_element *first; /* First element in linked list. */
+ bitmap_element * GTY((skip(""))) current; /* Last element looked at. */
+ unsigned int indx; /* Index of last element looked at. */
+ bitmap_obstack *obstack; /* Obstack to allocate elements from.
+ If NULL, then use GGC allocation. */
+ struct bitmap_descriptor GTY((skip(""))) *desc;
} bitmap_head;
/* Global data */
@@ -132,9 +239,11 @@ extern void bitmap_xor_into (bitmap, const_bitmap);
/* DST = A | (B & C). Return true if DST changes. */
extern bool bitmap_ior_and_into (bitmap DST, const_bitmap B, const_bitmap C);
/* DST = A | (B & ~C). Return true if DST changes. */
-extern bool bitmap_ior_and_compl (bitmap DST, const_bitmap A, const_bitmap B, const_bitmap C);
+extern bool bitmap_ior_and_compl (bitmap DST, const_bitmap A,
+ const_bitmap B, const_bitmap C);
/* A |= (B & ~C). Return true if A changes. */
-extern bool bitmap_ior_and_compl_into (bitmap DST, const_bitmap B, const_bitmap C);
+extern bool bitmap_ior_and_compl_into (bitmap A,
+ const_bitmap B, const_bitmap C);
/* Clear a single bit in a bitmap. Return true if the bit changed. */
extern bool bitmap_clear_bit (bitmap, int);
@@ -166,9 +275,8 @@ bitmap_initialize_stat (bitmap head, bitmap_obstack *obstack MEM_STAT_DECL)
{
head->first = head->current = NULL;
head->obstack = obstack;
-#ifdef GATHER_STATISTICS
- bitmap_register (head PASS_MEM_STAT);
-#endif
+ if (GATHER_STATISTICS)
+ bitmap_register (head PASS_MEM_STAT);
}
#define bitmap_initialize(h,o) bitmap_initialize_stat (h,o MEM_STAT_INFO)
@@ -331,7 +439,8 @@ bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
*/
static inline void
-bmp_iter_and_compl_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
+bmp_iter_and_compl_init (bitmap_iterator *bi,
+ const_bitmap map1, const_bitmap map2,
unsigned start_bit, unsigned *bit_no)
{
bi->elt1 = map1->first;
diff --git a/gcc/bt-load.c b/gcc/bt-load.c
index 7ec4454746d..385bc6c45ac 100644
--- a/gcc/bt-load.c
+++ b/gcc/bt-load.c
@@ -37,6 +37,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "recog.h"
#include "df.h"
+#include "cfgloop.h"
/* Target register optimizations - these are performed after reload. */
@@ -650,7 +651,7 @@ compute_out (sbitmap *bb_out, sbitmap *bb_gen, sbitmap *bb_kill, int max_uid)
changed = 0;
for (i = NUM_FIXED_BLOCKS; i < last_basic_block; i++)
{
- sbitmap_union_of_preds (bb_in, bb_out, i);
+ sbitmap_union_of_preds (bb_in, bb_out, BASIC_BLOCK (i));
changed |= sbitmap_union_of_diff_cg (bb_out[i], bb_gen[i],
bb_in, bb_kill[i]);
}
@@ -673,7 +674,7 @@ link_btr_uses (btr_def *def_array, btr_user *use_array, sbitmap *bb_out,
rtx insn;
rtx last;
- sbitmap_union_of_preds (reaching_defs, bb_out, i);
+ sbitmap_union_of_preds (reaching_defs, bb_out, BASIC_BLOCK (i));
for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb));
insn != last;
insn = NEXT_INSN (insn))
@@ -1408,7 +1409,7 @@ migrate_btr_defs (enum reg_class btr_class, int allow_callee_save)
fprintf(dump_file,
"Basic block %d: count = " HOST_WIDEST_INT_PRINT_DEC
" loop-depth = %d idom = %d\n",
- i, (HOST_WIDEST_INT) bb->count, bb->loop_depth,
+ i, (HOST_WIDEST_INT) bb->count, bb_loop_depth (bb),
get_immediate_dominator (CDI_DOMINATORS, bb)->index);
}
}
diff --git a/gcc/builtins.c b/gcc/builtins.c
index c12eb29aa02..4b177c48e65 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -273,11 +273,14 @@ called_as_built_in (tree node)
on the address at which an object is actually located. These two
addresses are not always the same. For example, on ARM targets,
the address &foo of a Thumb function foo() has the lowest bit set,
- whereas foo() itself starts on an even address. */
+ whereas foo() itself starts on an even address.
-bool
-get_object_alignment_1 (tree exp, unsigned int *alignp,
- unsigned HOST_WIDE_INT *bitposp)
+ If ADDR_P is true we are taking the address of the memory reference EXP
+ and thus cannot rely on the access taking place. */
+
+static bool
+get_object_alignment_2 (tree exp, unsigned int *alignp,
+ unsigned HOST_WIDE_INT *bitposp, bool addr_p)
{
HOST_WIDE_INT bitsize, bitpos;
tree offset;
@@ -293,48 +296,40 @@ get_object_alignment_1 (tree exp, unsigned int *alignp,
/* Extract alignment information from the innermost object and
possibly adjust bitpos and offset. */
- if (TREE_CODE (exp) == CONST_DECL)
- exp = DECL_INITIAL (exp);
- if (DECL_P (exp)
- && TREE_CODE (exp) != LABEL_DECL)
- {
- if (TREE_CODE (exp) == FUNCTION_DECL)
- {
- /* Function addresses can encode extra information besides their
- alignment. However, if TARGET_PTRMEMFUNC_VBIT_LOCATION
- allows the low bit to be used as a virtual bit, we know
- that the address itself must be 2-byte aligned. */
- if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn)
- {
- known_alignment = true;
- align = 2 * BITS_PER_UNIT;
- }
- }
- else
- {
- known_alignment = true;
- align = DECL_ALIGN (exp);
- }
+ if (TREE_CODE (exp) == FUNCTION_DECL)
+ {
+ /* Function addresses can encode extra information besides their
+ alignment. However, if TARGET_PTRMEMFUNC_VBIT_LOCATION
+ allows the low bit to be used as a virtual bit, we know
+ that the address itself must be at least 2-byte aligned. */
+ if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn)
+ align = 2 * BITS_PER_UNIT;
}
- else if (CONSTANT_CLASS_P (exp))
+ else if (TREE_CODE (exp) == LABEL_DECL)
+ ;
+ else if (TREE_CODE (exp) == CONST_DECL)
{
- known_alignment = true;
+ /* The alignment of a CONST_DECL is determined by its initializer. */
+ exp = DECL_INITIAL (exp);
align = TYPE_ALIGN (TREE_TYPE (exp));
#ifdef CONSTANT_ALIGNMENT
- align = (unsigned)CONSTANT_ALIGNMENT (exp, align);
+ if (CONSTANT_CLASS_P (exp))
+ align = (unsigned) CONSTANT_ALIGNMENT (exp, align);
#endif
+ known_alignment = true;
}
- else if (TREE_CODE (exp) == VIEW_CONVERT_EXPR)
+ else if (DECL_P (exp))
{
+ align = DECL_ALIGN (exp);
known_alignment = true;
- align = TYPE_ALIGN (TREE_TYPE (exp));
}
- else if (TREE_CODE (exp) == INDIRECT_REF)
+ else if (TREE_CODE (exp) == VIEW_CONVERT_EXPR)
{
- known_alignment = true;
align = TYPE_ALIGN (TREE_TYPE (exp));
}
- else if (TREE_CODE (exp) == MEM_REF)
+ else if (TREE_CODE (exp) == INDIRECT_REF
+ || TREE_CODE (exp) == MEM_REF
+ || TREE_CODE (exp) == TARGET_MEM_REF)
{
tree addr = TREE_OPERAND (exp, 0);
unsigned ptr_align;
@@ -343,58 +338,59 @@ get_object_alignment_1 (tree exp, unsigned int *alignp,
if (TREE_CODE (addr) == BIT_AND_EXPR
&& TREE_CODE (TREE_OPERAND (addr, 1)) == INTEGER_CST)
{
- known_alignment = true;
align = (TREE_INT_CST_LOW (TREE_OPERAND (addr, 1))
& -TREE_INT_CST_LOW (TREE_OPERAND (addr, 1)));
align *= BITS_PER_UNIT;
addr = TREE_OPERAND (addr, 0);
}
- if (get_pointer_alignment_1 (addr, &ptr_align, &ptr_bitpos))
- {
- known_alignment = true;
- bitpos += ptr_bitpos & ~(align - 1);
- align = MAX (ptr_align, align);
- }
-
- bitpos += mem_ref_offset (exp).low * BITS_PER_UNIT;
- }
- else if (TREE_CODE (exp) == TARGET_MEM_REF)
- {
- unsigned ptr_align;
- unsigned HOST_WIDE_INT ptr_bitpos;
- tree addr = TMR_BASE (exp);
-
- if (TREE_CODE (addr) == BIT_AND_EXPR
- && TREE_CODE (TREE_OPERAND (addr, 1)) == INTEGER_CST)
- {
- known_alignment = true;
- align = (TREE_INT_CST_LOW (TREE_OPERAND (addr, 1))
- & -TREE_INT_CST_LOW (TREE_OPERAND (addr, 1)));
- align *= BITS_PER_UNIT;
- addr = TREE_OPERAND (addr, 0);
- }
+ known_alignment
+ = get_pointer_alignment_1 (addr, &ptr_align, &ptr_bitpos);
+ align = MAX (ptr_align, align);
- if (get_pointer_alignment_1 (addr, &ptr_align, &ptr_bitpos))
+ /* The alignment of the pointer operand in a TARGET_MEM_REF
+ has to take the variable offset parts into account. */
+ if (TREE_CODE (exp) == TARGET_MEM_REF)
{
- known_alignment = true;
- bitpos += ptr_bitpos & ~(align - 1);
- align = MAX (ptr_align, align);
+ if (TMR_INDEX (exp))
+ {
+ unsigned HOST_WIDE_INT step = 1;
+ if (TMR_STEP (exp))
+ step = TREE_INT_CST_LOW (TMR_STEP (exp));
+ align = MIN (align, (step & -step) * BITS_PER_UNIT);
+ }
+ if (TMR_INDEX2 (exp))
+ align = BITS_PER_UNIT;
+ known_alignment = false;
}
- if (TMR_OFFSET (exp))
- bitpos += TREE_INT_CST_LOW (TMR_OFFSET (exp)) * BITS_PER_UNIT;
- if (TMR_INDEX (exp) && TMR_STEP (exp))
+ /* When EXP is an actual memory reference then we can use
+ TYPE_ALIGN of a pointer indirection to derive alignment.
+ Do so only if get_pointer_alignment_1 did not reveal absolute
+ alignment knowledge and if using that alignment would
+ improve the situation. */
+ if (!addr_p && !known_alignment
+ && TYPE_ALIGN (TREE_TYPE (exp)) > align)
+ align = TYPE_ALIGN (TREE_TYPE (exp));
+ else
{
- unsigned HOST_WIDE_INT step = TREE_INT_CST_LOW (TMR_STEP (exp));
- align = MIN (align, (step & -step) * BITS_PER_UNIT);
- known_alignment = true;
+ /* Else adjust bitpos accordingly. */
+ bitpos += ptr_bitpos;
+ if (TREE_CODE (exp) == MEM_REF
+ || TREE_CODE (exp) == TARGET_MEM_REF)
+ bitpos += mem_ref_offset (exp).low * BITS_PER_UNIT;
}
- else if (TMR_INDEX (exp))
- known_alignment = false;
-
- if (TMR_INDEX2 (exp))
- known_alignment = false;
+ }
+ else if (TREE_CODE (exp) == STRING_CST)
+ {
+ /* STRING_CST are the only constant objects we allow to be not
+ wrapped inside a CONST_DECL. */
+ align = TYPE_ALIGN (TREE_TYPE (exp));
+#ifdef CONSTANT_ALIGNMENT
+ if (CONSTANT_CLASS_P (exp))
+ align = (unsigned) CONSTANT_ALIGNMENT (exp, align);
+#endif
+ known_alignment = true;
}
/* If there is a non-constant offset part extract the maximum
@@ -435,29 +431,32 @@ get_object_alignment_1 (tree exp, unsigned int *alignp,
}
else
{
- known_alignment = false;
+ inner = MIN (inner, BITS_PER_UNIT);
break;
}
offset = next_offset;
}
+ /* Alignment is innermost object alignment adjusted by the constant
+ and non-constant offset parts. */
+ align = MIN (align, inner);
- if (known_alignment)
- {
- /* Alignment is innermost object alignment adjusted by the constant
- and non-constant offset parts. */
- align = MIN (align, inner);
- bitpos = bitpos & (align - 1);
- *alignp = align;
- }
- else
- {
- bitpos = bitpos & (BITS_PER_UNIT - 1);
- *alignp = BITS_PER_UNIT;
- }
- *bitposp = bitpos;
+ *alignp = align;
+ *bitposp = bitpos & (*alignp - 1);
return known_alignment;
}
+/* For a memory reference expression EXP compute values M and N such that M
+ divides (&EXP - N) and such that N < M. If these numbers can be determined,
+ store M in alignp and N in *BITPOSP and return true. Otherwise return false
+ and store BITS_PER_UNIT to *alignp and any bit-offset to *bitposp. */
+
+bool
+get_object_alignment_1 (tree exp, unsigned int *alignp,
+ unsigned HOST_WIDE_INT *bitposp)
+{
+ return get_object_alignment_2 (exp, alignp, bitposp, false);
+}
+
/* Return the alignment in bits of EXP, an object. */
unsigned int
@@ -476,36 +475,10 @@ get_object_alignment (tree exp)
return align;
}
-/* Return the alignment of object EXP, also considering its type when we do
- not know of explicit misalignment. Only handle MEM_REF and TARGET_MEM_REF.
-
- ??? Note that, in the general case, the type of an expression is not kept
- consistent with misalignment information by the front-end, for example when
- taking the address of a member of a packed structure. However, in most of
- the cases, expressions have the alignment of their type so we optimistically
- fall back to this alignment when we cannot compute a misalignment. */
-
-unsigned int
-get_object_or_type_alignment (tree exp)
-{
- unsigned HOST_WIDE_INT misalign;
- unsigned int align;
- bool known_alignment;
-
- gcc_assert (TREE_CODE (exp) == MEM_REF || TREE_CODE (exp) == TARGET_MEM_REF);
- known_alignment = get_object_alignment_1 (exp, &align, &misalign);
- if (misalign != 0)
- align = (misalign & -misalign);
- else if (!known_alignment)
- align = TYPE_ALIGN (TREE_TYPE (exp));
-
- return align;
-}
-
/* For a pointer valued expression EXP compute values M and N such that M
divides (EXP - N) and such that N < M. If these numbers can be determined,
- store M in alignp and N in *BITPOSP and return true. Otherwise return false
- and store BITS_PER_UNIT to *alignp and any bit-offset to *bitposp.
+ store M in alignp and N in *BITPOSP and return true. Return false if
+ the results are just a conservative approximation.
If EXP is not a pointer, false is returned too. */
@@ -516,7 +489,8 @@ get_pointer_alignment_1 (tree exp, unsigned int *alignp,
STRIP_NOPS (exp);
if (TREE_CODE (exp) == ADDR_EXPR)
- return get_object_alignment_1 (TREE_OPERAND (exp, 0), alignp, bitposp);
+ return get_object_alignment_2 (TREE_OPERAND (exp, 0),
+ alignp, bitposp, true);
else if (TREE_CODE (exp) == SSA_NAME
&& POINTER_TYPE_P (TREE_TYPE (exp)))
{
@@ -527,6 +501,7 @@ get_pointer_alignment_1 (tree exp, unsigned int *alignp,
{
*bitposp = ptr_misalign * BITS_PER_UNIT;
*alignp = ptr_align * BITS_PER_UNIT;
+ /* We cannot really tell whether this result is an approximation. */
return true;
}
else
@@ -536,6 +511,13 @@ get_pointer_alignment_1 (tree exp, unsigned int *alignp,
return false;
}
}
+ else if (TREE_CODE (exp) == INTEGER_CST)
+ {
+ *alignp = BIGGEST_ALIGNMENT;
+ *bitposp = ((TREE_INT_CST_LOW (exp) * BITS_PER_UNIT)
+ & (BIGGEST_ALIGNMENT - 1));
+ return true;
+ }
*bitposp = 0;
*alignp = BITS_PER_UNIT;
@@ -2378,7 +2360,7 @@ static enum insn_code
interclass_mathfn_icode (tree arg, tree fndecl)
{
bool errno_set = false;
- optab builtin_optab = 0;
+ optab builtin_optab = unknown_optab;
enum machine_mode mode;
switch (DECL_FUNCTION_CODE (fndecl))
@@ -5394,6 +5376,7 @@ expand_builtin_atomic_compare_exchange (enum machine_mode mode, tree exp,
expect = expand_normal (CALL_EXPR_ARG (exp, 1));
expect = convert_memory_address (Pmode, expect);
+ expect = gen_rtx_MEM (mode, expect);
desired = expand_expr_force_mode (CALL_EXPR_ARG (exp, 2), mode);
weak = CALL_EXPR_ARG (exp, 3);
@@ -5401,14 +5384,15 @@ expand_builtin_atomic_compare_exchange (enum machine_mode mode, tree exp,
if (host_integerp (weak, 0) && tree_low_cst (weak, 0) != 0)
is_weak = true;
- oldval = copy_to_reg (gen_rtx_MEM (mode, expect));
-
+ oldval = expect;
if (!expand_atomic_compare_and_swap ((target == const0_rtx ? NULL : &target),
&oldval, mem, oldval, desired,
is_weak, success, failure))
return NULL_RTX;
- emit_move_insn (gen_rtx_MEM (mode, expect), oldval);
+ if (oldval != expect)
+ emit_move_insn (expect, oldval);
+
return target;
}
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index e19e703ddeb..642ff7dc8d5 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,64 @@
+2012-08-23 Arnaud Charlet <charlet@adacore.com>
+
+ * c-ada-spec.c (dump_generic_ada_node): Fix handling of name_only
+ for pointers, and add missing Convention C pragma.
+ (print_ada_struct_decl): Add missing aliased keyword.
+ (dump_ads): Add pragma Ada_2005 and Style_Checks (Off).
+
+2012-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * c-common.c (sizeof_pointer_memaccess_warning): New function.
+ * c.opt (-Wsizeof-pointer-memaccess): Add new option.
+ * c-opts.c (c_common_handle_option): Enable it for -Wall.
+ * c-common.h (sizeof_pointer_memaccess_warning): Add prototype.
+ * c-common.def (SIZEOF_EXPR): Moved here from cp-tree.def.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * c-pretty-print.c (pp_c_expression): Handle anonymous SSA names.
+
+2012-08-07 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-pretty-print.c (pp_c_function_definition): Use pp_newline_and_flush
+ instead of separate pp_newline and pp_flush.
+ (print_c_tree): Likewise.
+
+2012-07-26 Richard Henderson <rth@redhat.com>
+
+ * c-common.c (handle_hot_attribute): Allow labels.
+ (handle_cold_attribute): Likewise.
+
+2012-07-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/28656
+ * c-common.c (check_function_nonnull): Handle multiple nonnull
+ attributes properly.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-gimplify.c: Include dumpfile.h instead of tree-dump.h.
+ * c-ada-spec.c: Likewise.
+ * c-dump.c (dump_stmt): Move to cp/dump.c, the only user.
+
+2012-07-14 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-pch.c (CHECK_NO_ASM_OUT_DURING_PCH): Do not define.
+ Remove code conditional on it.
+
+2012-07-11 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-gimplify.c: Do not include basic-block.h.
+ * c-common.c: Do not include linfuncs.h.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-common.h: Include tree.h.
+
+2012-07-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/53524
+ * c-common.c (get_priority): Call default_conversion.
+
2012-07-01 Uros Bizjak <ubizjak@gmail.com>
* c-pch.c (c_common_write_pch): Remove unused variables.
diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c
index 8946624be23..cc6f2608d21 100644
--- a/gcc/c-family/c-ada-spec.c
+++ b/gcc/c-family/c-ada-spec.c
@@ -24,7 +24,7 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
-#include "tree-pass.h" /* For TDI_ada and friends. */
+#include "dumpfile.h"
#include "c-ada-spec.h"
#include "cpplib.h"
#include "c-pragma.h"
@@ -1947,7 +1947,12 @@ dump_generic_ada_node (pretty_printer *buffer, tree node, tree type,
case POINTER_TYPE:
case REFERENCE_TYPE:
- if (TREE_CODE (TREE_TYPE (node)) == FUNCTION_TYPE)
+ if (name_only && TYPE_NAME (node))
+ dump_generic_ada_node
+ (buffer, TYPE_NAME (node), node, cpp_check,
+ spc, limited_access, true);
+
+ else if (TREE_CODE (TREE_TYPE (node)) == FUNCTION_TYPE)
{
tree fnode = TREE_TYPE (node);
bool is_function;
@@ -1975,17 +1980,25 @@ dump_generic_ada_node (pretty_printer *buffer, tree node, tree type,
dump_generic_ada_node
(buffer, TREE_TYPE (fnode), type, cpp_check, spc, 0, true);
}
+
+ /* If we are dumping the full type, it means we are part of a
+ type definition and need also a Convention C pragma. */
+ if (!name_only)
+ {
+ pp_semicolon (buffer);
+ newline_and_indent (buffer, spc);
+ pp_string (buffer, "pragma Convention (C, ");
+ dump_generic_ada_node
+ (buffer, type, 0, cpp_check, spc, false, true);
+ pp_string (buffer, ")");
+ }
}
else
{
int is_access = false;
unsigned int quals = TYPE_QUALS (TREE_TYPE (node));
- if (name_only && TYPE_NAME (node))
- dump_generic_ada_node
- (buffer, TYPE_NAME (node), node, cpp_check,
- spc, limited_access, true);
- else if (VOID_TYPE_P (TREE_TYPE (node)))
+ if (VOID_TYPE_P (TREE_TYPE (node)))
{
if (!name_only)
pp_string (buffer, "new ");
@@ -3087,10 +3100,10 @@ print_ada_struct_decl (pretty_printer *buffer, tree node, tree type,
INDENT (field_spc);
if (field_num == 0)
- pp_string (buffer, "parent : ");
+ pp_string (buffer, "parent : aliased ");
else
{
- sprintf (buf, "field_%d : ", field_num + 1);
+ sprintf (buf, "field_%d : aliased ", field_num + 1);
pp_string (buffer, buf);
}
dump_ada_decl_name
@@ -3262,6 +3275,10 @@ dump_ads (const char *source_file,
/* Dump all references. */
dump_ada_nodes (&pp, source_file, cpp_check);
+ /* Requires Ada 2005 syntax, so generate corresponding pragma.
+ Also, disable style checks since this file is auto-generated. */
+ fprintf (f, "pragma Ada_2005;\npragma Style_Checks (Off);\n\n");
+
/* Dump withs. */
dump_ada_withs (f);
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index 61d756760e3..502613ae8df 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -45,7 +45,6 @@ along with GCC; see the file COPYING3. If not see
#include "opts.h"
#include "cgraph.h"
#include "target-def.h"
-#include "libfuncs.h"
cpp_reader *parse_in; /* Declared in c-pragma.h. */
@@ -1842,6 +1841,149 @@ strict_aliasing_warning (tree otype, tree type, tree expr)
return false;
}
+/* Warn about memset (&a, 0, sizeof (&a)); and similar mistakes with
+ sizeof as last operand of certain builtins. */
+
+void
+sizeof_pointer_memaccess_warning (location_t loc, tree callee,
+ VEC(tree, gc) *params, tree sizeof_arg,
+ bool (*comp_types) (tree, tree))
+{
+ tree type, dest = NULL_TREE, src = NULL_TREE, tem;
+ bool strop = false;
+
+ if (TREE_CODE (callee) != FUNCTION_DECL
+ || DECL_BUILT_IN_CLASS (callee) != BUILT_IN_NORMAL
+ || sizeof_arg == error_mark_node
+ || VEC_length (tree, params) <= 1)
+ return;
+
+ type = TYPE_P (sizeof_arg) ? sizeof_arg : TREE_TYPE (sizeof_arg);
+ if (!POINTER_TYPE_P (type))
+ return;
+
+ switch (DECL_FUNCTION_CODE (callee))
+ {
+ case BUILT_IN_STRNCMP:
+ case BUILT_IN_STRNCASECMP:
+ case BUILT_IN_STRNCPY:
+ case BUILT_IN_STRNCAT:
+ strop = true;
+ /* FALLTHRU */
+ case BUILT_IN_MEMCPY:
+ case BUILT_IN_MEMMOVE:
+ case BUILT_IN_MEMCMP:
+ if (VEC_length (tree, params) < 3)
+ return;
+ src = VEC_index (tree, params, 1);
+ dest = VEC_index (tree, params, 0);
+ break;
+ case BUILT_IN_MEMSET:
+ if (VEC_length (tree, params) < 3)
+ return;
+ dest = VEC_index (tree, params, 0);
+ break;
+ case BUILT_IN_STRNDUP:
+ src = VEC_index (tree, params, 0);
+ strop = true;
+ break;
+ default:
+ break;
+ }
+
+ if (dest
+ && (tem = tree_strip_nop_conversions (dest))
+ && POINTER_TYPE_P (TREE_TYPE (tem))
+ && comp_types (TREE_TYPE (TREE_TYPE (tem)), type))
+ return;
+
+ if (src
+ && (tem = tree_strip_nop_conversions (src))
+ && POINTER_TYPE_P (TREE_TYPE (tem))
+ && comp_types (TREE_TYPE (TREE_TYPE (tem)), type))
+ return;
+
+ if (dest)
+ {
+ if (!TYPE_P (sizeof_arg)
+ && operand_equal_p (dest, sizeof_arg, 0)
+ && comp_types (TREE_TYPE (dest), type))
+ {
+ if (TREE_CODE (sizeof_arg) == ADDR_EXPR && !strop)
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "expression as the destination; did you mean to "
+ "remove the addressof?", callee);
+ else if ((TYPE_PRECISION (TREE_TYPE (type))
+ == TYPE_PRECISION (char_type_node))
+ || strop)
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "expression as the destination; did you mean to "
+ "provide an explicit length?", callee);
+ else
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "expression as the destination; did you mean to "
+ "dereference it?", callee);
+ return;
+ }
+
+ if (POINTER_TYPE_P (TREE_TYPE (dest))
+ && !strop
+ && comp_types (TREE_TYPE (dest), type)
+ && !VOID_TYPE_P (TREE_TYPE (type)))
+ {
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "pointer type %qT as the destination; expected %qT "
+ "or an explicit length", callee, TREE_TYPE (dest),
+ TREE_TYPE (TREE_TYPE (dest)));
+ return;
+ }
+ }
+
+ if (src)
+ {
+ if (!TYPE_P (sizeof_arg)
+ && operand_equal_p (src, sizeof_arg, 0)
+ && comp_types (TREE_TYPE (src), type))
+ {
+ if (TREE_CODE (sizeof_arg) == ADDR_EXPR && !strop)
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "expression as the source; did you mean to "
+ "remove the addressof?", callee);
+ else if ((TYPE_PRECISION (TREE_TYPE (type))
+ == TYPE_PRECISION (char_type_node))
+ || strop)
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "expression as the source; did you mean to "
+ "provide an explicit length?", callee);
+ else
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "expression as the source; did you mean to "
+ "dereference it?", callee);
+ return;
+ }
+
+ if (POINTER_TYPE_P (TREE_TYPE (src))
+ && !strop
+ && comp_types (TREE_TYPE (src), type)
+ && !VOID_TYPE_P (TREE_TYPE (type)))
+ {
+ warning_at (loc, OPT_Wsizeof_pointer_memaccess,
+ "argument to %<sizeof%> in %qD call is the same "
+ "pointer type %qT as the source; expected %qT "
+ "or an explicit length", callee, TREE_TYPE (src),
+ TREE_TYPE (TREE_TYPE (src)));
+ return;
+ }
+ }
+}
+
/* Warn for unlikely, improbable, or stupid DECL declarations
of `main'. */
@@ -6170,7 +6312,8 @@ static tree
handle_hot_attribute (tree *node, tree name, tree ARG_UNUSED (args),
int ARG_UNUSED (flags), bool *no_add_attrs)
{
- if (TREE_CODE (*node) == FUNCTION_DECL)
+ if (TREE_CODE (*node) == FUNCTION_DECL
+ || TREE_CODE (*node) == LABEL_DECL)
{
if (lookup_attribute ("cold", DECL_ATTRIBUTES (*node)) != NULL)
{
@@ -6189,6 +6332,7 @@ handle_hot_attribute (tree *node, tree name, tree ARG_UNUSED (args),
return NULL_TREE;
}
+
/* Handle a "cold" and attribute; arguments as in
struct attribute_spec.handler. */
@@ -6196,7 +6340,8 @@ static tree
handle_cold_attribute (tree *node, tree name, tree ARG_UNUSED (args),
int ARG_UNUSED (flags), bool *no_add_attrs)
{
- if (TREE_CODE (*node) == FUNCTION_DECL)
+ if (TREE_CODE (*node) == FUNCTION_DECL
+ || TREE_CODE (*node) == LABEL_DECL)
{
if (lookup_attribute ("hot", DECL_ATTRIBUTES (*node)) != NULL)
{
@@ -6587,11 +6732,12 @@ get_priority (tree args, bool is_destructor)
}
arg = TREE_VALUE (args);
+ arg = default_conversion (arg);
if (!host_integerp (arg, /*pos=*/0)
|| !INTEGRAL_TYPE_P (TREE_TYPE (arg)))
goto invalid;
- pri = tree_low_cst (TREE_VALUE (args), /*pos=*/0);
+ pri = tree_low_cst (arg, /*pos=*/0);
if (pri < 0 || pri > MAX_INIT_PRIORITY)
goto invalid;
@@ -8051,26 +8197,42 @@ handle_nonnull_attribute (tree *node, tree ARG_UNUSED (name),
static void
check_function_nonnull (tree attrs, int nargs, tree *argarray)
{
- tree a, args;
+ tree a;
int i;
- for (a = attrs; a; a = TREE_CHAIN (a))
+ attrs = lookup_attribute ("nonnull", attrs);
+ if (attrs == NULL_TREE)
+ return;
+
+ a = attrs;
+ /* See if any of the nonnull attributes has no arguments. If so,
+ then every pointer argument is checked (in which case the check
+ for pointer type is done in check_nonnull_arg). */
+ if (TREE_VALUE (a) != NULL_TREE)
+ do
+ a = lookup_attribute ("nonnull", TREE_CHAIN (a));
+ while (a != NULL_TREE && TREE_VALUE (a) != NULL_TREE);
+
+ if (a != NULL_TREE)
+ for (i = 0; i < nargs; i++)
+ check_function_arguments_recurse (check_nonnull_arg, NULL, argarray[i],
+ i + 1);
+ else
{
- if (is_attribute_p ("nonnull", TREE_PURPOSE (a)))
+ /* Walk the argument list. If we encounter an argument number we
+ should check for non-null, do it. */
+ for (i = 0; i < nargs; i++)
{
- args = TREE_VALUE (a);
-
- /* Walk the argument list. If we encounter an argument number we
- should check for non-null, do it. If the attribute has no args,
- then every pointer argument is checked (in which case the check
- for pointer type is done in check_nonnull_arg). */
- for (i = 0; i < nargs; i++)
+ for (a = attrs; ; a = TREE_CHAIN (a))
{
- if (!args || nonnull_check_p (args, i + 1))
- check_function_arguments_recurse (check_nonnull_arg, NULL,
- argarray[i],
- i + 1);
+ a = lookup_attribute ("nonnull", a);
+ if (a == NULL_TREE || nonnull_check_p (TREE_VALUE (a), i + 1))
+ break;
}
+
+ if (a != NULL_TREE)
+ check_function_arguments_recurse (check_nonnull_arg, NULL,
+ argarray[i], i + 1);
}
}
}
@@ -8373,7 +8535,7 @@ parse_optimize_options (tree args, bool attr_p)
/* Build up argv vector. Just in case the string is stored away, use garbage
collected strings. */
VEC_truncate (const_char_p, optimize_args, 0);
- VEC_safe_push (const_char_p, gc, optimize_args, NULL);
+ VEC_safe_push (const_char_p, gc, optimize_args, (const_char_p)NULL);
for (ap = args; ap != NULL_TREE; ap = TREE_CHAIN (ap))
{
@@ -9371,10 +9533,10 @@ complete_array_type (tree *ptype, tree initial_value, bool do_default)
constructor_elt *ce;
bool fold_p = false;
- if (VEC_index (constructor_elt, v, 0)->index)
+ if (VEC_index (constructor_elt, v, 0).index)
maxindex = fold_convert_loc (input_location, sizetype,
VEC_index (constructor_elt,
- v, 0)->index);
+ v, 0).index);
curindex = maxindex;
for (cnt = 1;
diff --git a/gcc/c-family/c-common.def b/gcc/c-family/c-common.def
index 2a7df882d0a..b6df9a3f3ee 100644
--- a/gcc/c-family/c-common.def
+++ b/gcc/c-family/c-common.def
@@ -2,7 +2,7 @@
additional tree codes used in the GNU C compiler (see tree.def
for the standard codes).
Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998,
- 1999, 2000, 2001, 2004, 2005, 2007, 2009, 2010
+ 1999, 2000, 2001, 2004, 2005, 2007, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Written by Benjamin Chelf <chelf@codesourcery.com>
@@ -53,6 +53,10 @@ DEFTREECODE (EXCESS_PRECISION_EXPR, "excess_precision_expr", tcc_expression, 1)
number. */
DEFTREECODE (USERDEF_LITERAL, "userdef_literal", tcc_exceptional, 3)
+/* Represents a 'sizeof' expression during C++ template expansion,
+ or for the purpose of -Wsizeof-pointer-memaccess warning. */
+DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", tcc_expression, 1)
+
/*
Local variables:
mode:c
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index 11f58e98bba..9298e3d8170 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -1,6 +1,6 @@
/* Definitions for c-common.c.
- Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002,
+ 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see
#include "splay-tree.h"
#include "cpplib.h"
#include "ggc.h"
+#include "tree.h"
/* In order for the format checking to accept the C frontend
diagnostic framework extensions, you must include this file before
@@ -767,6 +768,9 @@ extern tree fix_string_type (tree);
extern void constant_expression_warning (tree);
extern void constant_expression_error (tree);
extern bool strict_aliasing_warning (tree, tree, tree);
+extern void sizeof_pointer_memaccess_warning (location_t, tree,
+ VEC(tree, gc) *, tree,
+ bool (*) (tree, tree));
extern void warnings_for_convert_and_check (tree, tree, tree);
extern tree convert_and_check (tree, tree);
extern void overflow_warning (location_t, tree);
diff --git a/gcc/c-family/c-dump.c b/gcc/c-family/c-dump.c
index c698f6d189a..c581755cca9 100644
--- a/gcc/c-family/c-dump.c
+++ b/gcc/c-family/c-dump.c
@@ -26,15 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-dump.h"
#include "c-common.h"
-/* Dump information common to statements from STMT. */
-
-void
-dump_stmt (dump_info_p di, const_tree t)
-{
- if (EXPR_HAS_LOCATION (t))
- dump_int (di, "line", EXPR_LINENO (t));
-}
-
/* Dump any C-specific tree codes and attributes of common codes. */
bool
diff --git a/gcc/c-family/c-gimplify.c b/gcc/c-family/c-gimplify.c
index b39201c215d..821c5d5d1ff 100644
--- a/gcc/c-family/c-gimplify.c
+++ b/gcc/c-family/c-gimplify.c
@@ -31,13 +31,12 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "c-common.h"
#include "gimple.h"
-#include "basic-block.h"
#include "tree-inline.h"
#include "diagnostic-core.h"
#include "langhooks.h"
#include "langhooks-def.h"
#include "flags.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "c-pretty-print.h"
#include "cgraph.h"
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 2fa59dc9795..29121b5d474 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -1,6 +1,6 @@
/* C/ObjC/C++ command line option handling.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+ 2012 Free Software Foundation, Inc.
Contributed by Neil Booth.
This file is part of GCC.
@@ -374,6 +374,7 @@ c_common_handle_option (size_t scode, const char *arg, int value,
warn_return_type = value;
warn_sequence_point = value; /* Was C only. */
warn_switch = value;
+ warn_sizeof_pointer_memaccess = value;
if (warn_strict_aliasing == -1)
set_Wstrict_aliasing (&global_options, value);
warn_address = value;
diff --git a/gcc/c-family/c-pch.c b/gcc/c-family/c-pch.c
index 0a4d4a85a4f..3a588f08b39 100644
--- a/gcc/c-family/c-pch.c
+++ b/gcc/c-family/c-pch.c
@@ -35,24 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "opts.h"
#include "timevar.h"
-/* PCH was introduced before unit-at-a-time became the only supported
- compilation mode. To exactly replay the content parsed at PCH generate
- time, anything written to asm_out_file was read back in and stored in
- the PCH, and written back out to asm_out_file while reading a PCH.
-
- Nowadays, ideally no action by a front end should never result in output
- to asm_out_file, and front-end files should not include output.h. For
- now assert that nothing is written to asm_out_file while a PCH is being
- generated. Before GCC 4.8 is released, this code should be removed.
- FIXME. */
-#define CHECK_NO_ASM_OUT_DURING_PCH
-#ifdef CHECK_NO_ASM_OUT_DURING_PCH
-extern FILE *asm_out_file;
-
-/* The position in the assembler output file when pch_init was called. */
-static long asm_file_startpos;
-#endif
-
/* This is a list of flag variables that must match exactly, and their
names for the error message. The possible values for *flag_var must
fit in a 'signed char'. */
@@ -112,9 +94,7 @@ get_ident (void)
}
/* Prepare to write a PCH file, if one is being written. This is
- called at the start of compilation.
-
- Also, print out the executable checksum if -fverbose-asm is in effect. */
+ called at the start of compilation. */
void
pch_init (void)
@@ -153,10 +133,6 @@ pch_init (void)
|| fwrite (target_validity, v.target_data_length, 1, f) != 1)
fatal_error ("can%'t write to %s: %m", pch_file);
-#ifdef CHECK_NO_ASM_OUT_DURING_PCH
- asm_file_startpos = ftell (asm_out_file);
-#endif
-
/* Let the debugging format deal with the PCHness. */
(*debug_hooks->handle_pch) (0);
@@ -177,10 +153,6 @@ c_common_write_pch (void)
cpp_write_pch_deps (parse_in, pch_outfile);
-#ifdef CHECK_NO_ASM_OUT_DURING_PCH
- gcc_assert (ftell (asm_out_file) - asm_file_startpos == 0);
-#endif
-
gt_pch_save (pch_outfile);
timevar_push (TV_PCH_CPP_SAVE);
diff --git a/gcc/c-family/c-pragma.c b/gcc/c-family/c-pragma.c
index 830ca81a0d5..77ed0f03325 100644
--- a/gcc/c-family/c-pragma.c
+++ b/gcc/c-family/c-pragma.c
@@ -1209,9 +1209,9 @@ c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
+ VEC_length (pragma_ns_name, registered_pp_pragmas)))
{
*space = VEC_index (pragma_ns_name, registered_pp_pragmas,
- id - PRAGMA_FIRST_EXTERNAL)->space;
+ id - PRAGMA_FIRST_EXTERNAL).space;
*name = VEC_index (pragma_ns_name, registered_pp_pragmas,
- id - PRAGMA_FIRST_EXTERNAL)->name;
+ id - PRAGMA_FIRST_EXTERNAL).name;
return;
}
@@ -1334,7 +1334,7 @@ c_invoke_pragma_handler (unsigned int id)
pragma_handler_2arg handler_2arg;
id -= PRAGMA_FIRST_EXTERNAL;
- ihandler = VEC_index (internal_pragma_handler, registered_pragmas, id);
+ ihandler = &VEC_index (internal_pragma_handler, registered_pragmas, id);
if (ihandler->extra_data)
{
handler_2arg = ihandler->handler.handler_2arg;
diff --git a/gcc/c-family/c-pretty-print.c b/gcc/c-family/c-pretty-print.c
index d445187907d..edeccce7a12 100644
--- a/gcc/c-family/c-pretty-print.c
+++ b/gcc/c-family/c-pretty-print.c
@@ -846,8 +846,7 @@ pp_c_function_definition (c_pretty_printer *pp, tree t)
pp_declarator (pp, t);
pp_needs_newline (pp) = true;
pp_statement (pp, DECL_SAVED_TREE (t));
- pp_newline (pp);
- pp_flush (pp);
+ pp_newline_and_flush (pp);
}
@@ -2142,7 +2141,8 @@ pp_c_expression (c_pretty_printer *pp, tree e)
break;
case SSA_NAME:
- if (!DECL_ARTIFICIAL (SSA_NAME_VAR (e)))
+ if (SSA_NAME_VAR (e)
+ && !DECL_ARTIFICIAL (SSA_NAME_VAR (e)))
pp_c_expression (pp, SSA_NAME_VAR (e));
else
pp_c_ws_string (pp, M_("<unknown>"));
@@ -2361,8 +2361,7 @@ print_c_tree (FILE *file, tree t)
pp_statement (pp, t);
- pp_newline (pp);
- pp_flush (pp);
+ pp_newline_and_flush (pp);
}
/* Print the tree T in full, on stderr. */
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 981b7abc78c..914d110597d 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -474,6 +474,9 @@ Wmissing-field-initializers
C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
Warn about missing fields in struct initializers
+Wsizeof-pointer-memaccess
+C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning
+
Wsuggest-attribute=format
C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
Warn about functions which might be candidates for format attributes
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index f8572aaa13f..108c0d316f1 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,32 @@
+2012-08-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/54355
+ * c-decl.c (c_parser_label): Pass true as nested and fix up comments
+ for nested and empty_ok arguments in the call to
+ c_parser_declaration_or_fndef.
+
+2012-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * c-tree.h (c_last_sizeof_arg): Declare.
+ * c-parser.c (struct c_tree_loc_pair): New type.
+ (c_parser_expr_list): Add sizeof_arg argument. Fill it in if
+ non-NULL.
+ (c_parser_attributes, c_parser_objc_keywordexpr): Adjust callers.
+ (c_parser_postfix_expression_after_primary): Likewise. Call
+ sizeof_pointer_memaccess_warning if needed.
+ (sizeof_ptr_memacc_comptypes): New function.
+ * c-typeck.c (c_last_sizeof_arg): New global variable.
+ (c_expr_sizeof_expr, c_expr_sizeof_type): Initialize it.
+
+2012-07-24 Uros Bizjak <ubizjak@gmail.com>
+
+ * c-lang.h (lang_decl): Add variable_size GTY option.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-decl.c: Include dumpfile.h instead of tree-dump.h.
+ * Make-lang.in: Fix dependencies.
+
2012-06-29 Steven Bosscher <steven@gcc.gnu.org>
* Make-lang.in: New file, rules migrated from gcc/Makefile.in
diff --git a/gcc/c/Make-lang.in b/gcc/c/Make-lang.in
index 08b1ba1a919..a39c91cc0c6 100644
--- a/gcc/c/Make-lang.in
+++ b/gcc/c/Make-lang.in
@@ -163,7 +163,7 @@ c/c-decl.o : c/c-decl.c c/c-lang.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
output.h debug.h toplev.h intl.h $(TM_P_H) $(TREE_INLINE_H) \
$(TIMEVAR_H) $(OPTS_H) $(C_PRAGMA_H) gt-c-c-decl.h $(CGRAPH_H) \
$(HASHTAB_H) $(LANGHOOKS_DEF_H) \
- $(TREE_DUMP_H) $(C_COMMON_H) $(CPPLIB_H) $(DIAGNOSTIC_CORE_H) \
+ dumpfile.h $(C_COMMON_H) $(CPPLIB_H) $(DIAGNOSTIC_CORE_H) \
$(INPUT_H) langhooks.h pointer-set.h tree-iterator.h \
$(PLUGIN_H) c-family/c-ada-spec.h c-family/c-objc.h
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index 711b2dd1750..e5d17b7ec99 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -51,7 +51,7 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "tree-iterator.h"
#include "diagnostic-core.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "cgraph.h"
#include "hashtab.h"
#include "langhooks-def.h"
@@ -3932,7 +3932,7 @@ add_flexible_array_elts_to_size (tree decl, tree init)
if (VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (init)))
return;
- elt = VEC_last (constructor_elt, CONSTRUCTOR_ELTS (init))->value;
+ elt = VEC_last (constructor_elt, CONSTRUCTOR_ELTS (init)).value;
type = TREE_TYPE (elt);
if (TREE_CODE (type) == ARRAY_TYPE
&& TYPE_SIZE (type) == NULL_TREE
diff --git a/gcc/c/c-lang.h b/gcc/c/c-lang.h
index 256a269fe0b..33271dc4bc7 100644
--- a/gcc/c/c-lang.h
+++ b/gcc/c/c-lang.h
@@ -36,7 +36,7 @@ struct GTY((variable_size)) lang_type {
tree objc_info;
};
-struct GTY(()) lang_decl {
+struct GTY((variable_size)) lang_decl {
char dummy;
};
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index 2237749e4a3..bea9791925c 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -1111,6 +1111,12 @@ enum c_parser_prec {
NUM_PRECS
};
+/* Expression and its location. */
+struct c_tree_loc_pair {
+ tree expr;
+ location_t loc;
+};
+
static void c_parser_external_declaration (c_parser *);
static void c_parser_asm_definition (c_parser *);
static void c_parser_declaration_or_fndef (c_parser *, bool, bool, bool,
@@ -1179,7 +1185,8 @@ static tree c_parser_transaction_cancel (c_parser *);
static struct c_expr c_parser_expression (c_parser *);
static struct c_expr c_parser_expression_conv (c_parser *);
static VEC(tree,gc) *c_parser_expr_list (c_parser *, bool, bool,
- VEC(tree,gc) **);
+ VEC(tree,gc) **,
+ struct c_tree_loc_pair *);
static void c_parser_omp_construct (c_parser *);
static void c_parser_omp_threadprivate (c_parser *);
static void c_parser_omp_barrier (c_parser *);
@@ -3578,7 +3585,8 @@ c_parser_attributes (c_parser *parser)
{
tree tree_list;
c_parser_consume_token (parser);
- expr_list = c_parser_expr_list (parser, false, true, NULL);
+ expr_list = c_parser_expr_list (parser, false, true,
+ NULL, NULL);
tree_list = build_tree_list_vec (expr_list);
attr_args = tree_cons (NULL_TREE, arg1, tree_list);
release_tree_vector (expr_list);
@@ -3590,7 +3598,8 @@ c_parser_attributes (c_parser *parser)
attr_args = NULL_TREE;
else
{
- expr_list = c_parser_expr_list (parser, false, true, NULL);
+ expr_list = c_parser_expr_list (parser, false, true,
+ NULL, NULL);
attr_args = build_tree_list_vec (expr_list);
release_tree_vector (expr_list);
}
@@ -4318,7 +4327,7 @@ c_parser_label (c_parser *parser)
"a declaration is not a statement");
c_parser_declaration_or_fndef (parser, /*fndef_ok*/ false,
/*static_assert_ok*/ true,
- /*nested*/ true, /*empty_ok*/ false,
+ /*empty_ok*/ true, /*nested*/ true,
/*start_attr_ok*/ true, NULL);
}
}
@@ -6529,9 +6538,9 @@ c_parser_postfix_expression (c_parser *parser)
break;
}
- e1_p = VEC_index (c_expr_t, cexpr_list, 0);
- e2_p = VEC_index (c_expr_t, cexpr_list, 1);
- e3_p = VEC_index (c_expr_t, cexpr_list, 2);
+ e1_p = &VEC_index (c_expr_t, cexpr_list, 0);
+ e2_p = &VEC_index (c_expr_t, cexpr_list, 1);
+ e3_p = &VEC_index (c_expr_t, cexpr_list, 2);
c = e1_p->value;
mark_exp_read (e2_p->value);
@@ -6611,8 +6620,8 @@ c_parser_postfix_expression (c_parser *parser)
break;
}
- e1_p = VEC_index (c_expr_t, cexpr_list, 0);
- e2_p = VEC_index (c_expr_t, cexpr_list, 1);
+ e1_p = &VEC_index (c_expr_t, cexpr_list, 0);
+ e2_p = &VEC_index (c_expr_t, cexpr_list, 1);
mark_exp_read (e1_p->value);
if (TREE_CODE (e1_p->value) == EXCESS_PRECISION_EXPR)
@@ -6671,15 +6680,15 @@ c_parser_postfix_expression (c_parser *parser)
if (VEC_length (c_expr_t, cexpr_list) == 2)
expr.value =
c_build_vec_perm_expr
- (loc, VEC_index (c_expr_t, cexpr_list, 0)->value,
- NULL_TREE, VEC_index (c_expr_t, cexpr_list, 1)->value);
+ (loc, VEC_index (c_expr_t, cexpr_list, 0).value,
+ NULL_TREE, VEC_index (c_expr_t, cexpr_list, 1).value);
else if (VEC_length (c_expr_t, cexpr_list) == 3)
expr.value =
c_build_vec_perm_expr
- (loc, VEC_index (c_expr_t, cexpr_list, 0)->value,
- VEC_index (c_expr_t, cexpr_list, 1)->value,
- VEC_index (c_expr_t, cexpr_list, 2)->value);
+ (loc, VEC_index (c_expr_t, cexpr_list, 0).value,
+ VEC_index (c_expr_t, cexpr_list, 1).value,
+ VEC_index (c_expr_t, cexpr_list, 2).value);
else
{
error_at (loc, "wrong number of arguments to "
@@ -6845,6 +6854,15 @@ c_parser_postfix_expression_after_paren_type (c_parser *parser,
return c_parser_postfix_expression_after_primary (parser, start_loc, expr);
}
+/* Callback function for sizeof_pointer_memaccess_warning to compare
+ types. */
+
+static bool
+sizeof_ptr_memacc_comptypes (tree type1, tree type2)
+{
+ return comptypes (type1, type2) == 1;
+}
+
/* Parse a postfix expression after the initial primary or compound
literal; that is, parse a series of postfix operators.
@@ -6857,6 +6875,7 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
{
struct c_expr orig_expr;
tree ident, idx;
+ struct c_tree_loc_pair sizeof_arg;
VEC(tree,gc) *exprlist;
VEC(tree,gc) *origtypes;
while (true)
@@ -6877,14 +6896,22 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
case CPP_OPEN_PAREN:
/* Function call. */
c_parser_consume_token (parser);
+ sizeof_arg.expr = NULL_TREE;
if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
exprlist = NULL;
else
- exprlist = c_parser_expr_list (parser, true, false, &origtypes);
+ exprlist = c_parser_expr_list (parser, true, false, &origtypes,
+ &sizeof_arg);
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
"expected %<)%>");
orig_expr = expr;
mark_exp_read (expr.value);
+ if (warn_sizeof_pointer_memaccess
+ && sizeof_arg.expr != NULL_TREE)
+ sizeof_pointer_memaccess_warning (sizeof_arg.loc,
+ expr.value, exprlist,
+ sizeof_arg.expr,
+ sizeof_ptr_memacc_comptypes);
/* FIXME diagnostics: Ideally we want the FUNCNAME, not the
"(" after the FUNCNAME, which is what we have now. */
expr.value = build_function_call_vec (op_loc, expr.value, exprlist,
@@ -7045,12 +7072,14 @@ c_parser_expression_conv (c_parser *parser)
static VEC(tree,gc) *
c_parser_expr_list (c_parser *parser, bool convert_p, bool fold_p,
- VEC(tree,gc) **p_orig_types)
+ VEC(tree,gc) **p_orig_types,
+ struct c_tree_loc_pair *sizeof_arg)
{
VEC(tree,gc) *ret;
VEC(tree,gc) *orig_types;
struct c_expr expr;
location_t loc = c_parser_peek_token (parser)->location;
+ location_t sizeof_arg_loc = UNKNOWN_LOCATION;
ret = make_tree_vector ();
if (p_orig_types == NULL)
@@ -7058,6 +7087,9 @@ c_parser_expr_list (c_parser *parser, bool convert_p, bool fold_p,
else
orig_types = make_tree_vector ();
+ if (sizeof_arg != NULL
+ && c_parser_next_token_is_keyword (parser, RID_SIZEOF))
+ sizeof_arg_loc = c_parser_peek_2nd_token (parser)->location;
expr = c_parser_expr_no_commas (parser, NULL);
if (convert_p)
expr = default_function_array_read_conversion (loc, expr);
@@ -7070,6 +7102,11 @@ c_parser_expr_list (c_parser *parser, bool convert_p, bool fold_p,
{
c_parser_consume_token (parser);
loc = c_parser_peek_token (parser)->location;
+ if (sizeof_arg != NULL
+ && c_parser_next_token_is_keyword (parser, RID_SIZEOF))
+ sizeof_arg_loc = c_parser_peek_2nd_token (parser)->location;
+ else
+ sizeof_arg_loc = UNKNOWN_LOCATION;
expr = c_parser_expr_no_commas (parser, NULL);
if (convert_p)
expr = default_function_array_read_conversion (loc, expr);
@@ -7079,6 +7116,20 @@ c_parser_expr_list (c_parser *parser, bool convert_p, bool fold_p,
if (orig_types != NULL)
VEC_safe_push (tree, gc, orig_types, expr.original_type);
}
+ if (sizeof_arg != NULL)
+ {
+ if (sizeof_arg_loc != UNKNOWN_LOCATION
+ && expr.original_code == SIZEOF_EXPR)
+ {
+ sizeof_arg->expr = c_last_sizeof_arg;
+ sizeof_arg->loc = sizeof_arg_loc;
+ }
+ else
+ {
+ sizeof_arg->expr = NULL_TREE;
+ sizeof_arg->loc = UNKNOWN_LOCATION;
+ }
+ }
if (orig_types != NULL)
*p_orig_types = orig_types;
return ret;
@@ -8157,7 +8208,8 @@ static tree
c_parser_objc_keywordexpr (c_parser *parser)
{
tree ret;
- VEC(tree,gc) *expr_list = c_parser_expr_list (parser, true, true, NULL);
+ VEC(tree,gc) *expr_list = c_parser_expr_list (parser, true, true,
+ NULL, NULL);
if (VEC_length (tree, expr_list) == 1)
{
/* Just return the expression, remove a level of
diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h
index 145df357af9..c07d994975d 100644
--- a/gcc/c/c-tree.h
+++ b/gcc/c/c-tree.h
@@ -1,7 +1,7 @@
/* Definitions for C parsing and type checking.
Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011,
+ 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -573,6 +573,8 @@ extern int in_alignof;
extern int in_sizeof;
extern int in_typeof;
+extern tree c_last_sizeof_arg;
+
extern struct c_switch *c_switch_stack;
extern tree c_objc_common_truthvalue_conversion (location_t, tree);
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index c2f713eb02d..99920ef288b 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -1,7 +1,7 @@
/* Build expressions with type checking for C compiler.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -67,6 +67,10 @@ int in_sizeof;
/* The level of nesting inside "typeof". */
int in_typeof;
+/* The argument of last parsed sizeof expression, only to be tested
+ if expr.original_code == SIZEOF_EXPR. */
+tree c_last_sizeof_arg;
+
/* Nonzero if we've already printed a "missing braces around initializer"
message within this initializer. */
static int missing_braces_mentioned;
@@ -2603,7 +2607,8 @@ c_expr_sizeof_expr (location_t loc, struct c_expr expr)
tree folded_expr = c_fully_fold (expr.value, require_constant_value,
&expr_const_operands);
ret.value = c_sizeof (loc, TREE_TYPE (folded_expr));
- ret.original_code = ERROR_MARK;
+ c_last_sizeof_arg = expr.value;
+ ret.original_code = SIZEOF_EXPR;
ret.original_type = NULL;
if (c_vla_type_p (TREE_TYPE (folded_expr)))
{
@@ -2631,7 +2636,8 @@ c_expr_sizeof_type (location_t loc, struct c_type_name *t)
bool type_expr_const = true;
type = groktypename (t, &type_expr, &type_expr_const);
ret.value = c_sizeof (loc, type);
- ret.original_code = ERROR_MARK;
+ c_last_sizeof_arg = type;
+ ret.original_code = SIZEOF_EXPR;
ret.original_type = NULL;
if ((type_expr || TREE_CODE (ret.value) == INTEGER_CST)
&& c_vla_type_p (type))
@@ -6950,7 +6956,7 @@ pop_init_level (int implicit, struct obstack * braced_init_obstack)
bool constructor_zeroinit =
(VEC_length (constructor_elt, constructor_elements) == 1
&& integer_zerop
- (VEC_index (constructor_elt, constructor_elements, 0)->value));
+ (VEC_index (constructor_elt, constructor_elements, 0).value));
/* Do not warn for flexible array members or zero-length arrays. */
while (constructor_unfilled_fields
@@ -6997,10 +7003,10 @@ pop_init_level (int implicit, struct obstack * braced_init_obstack)
else if (VEC_length (constructor_elt,constructor_elements) != 1)
{
error_init ("extra elements in scalar initializer");
- ret.value = VEC_index (constructor_elt,constructor_elements,0)->value;
+ ret.value = VEC_index (constructor_elt,constructor_elements,0).value;
}
else
- ret.value = VEC_index (constructor_elt,constructor_elements,0)->value;
+ ret.value = VEC_index (constructor_elt,constructor_elements,0).value;
}
else
{
@@ -7671,9 +7677,9 @@ find_init_member (tree field, struct obstack * braced_init_obstack)
else if (TREE_CODE (constructor_type) == UNION_TYPE)
{
if (!VEC_empty (constructor_elt, constructor_elements)
- && (VEC_last (constructor_elt, constructor_elements)->index
+ && (VEC_last (constructor_elt, constructor_elements).index
== field))
- return VEC_last (constructor_elt, constructor_elements)->value;
+ return VEC_last (constructor_elt, constructor_elements).value;
}
return 0;
}
@@ -7856,7 +7862,7 @@ output_init_element (tree value, tree origtype, bool strict_string, tree type,
if (!implicit)
{
if (TREE_SIDE_EFFECTS (VEC_last (constructor_elt,
- constructor_elements)->value))
+ constructor_elements).value))
warning_init (0,
"initialized field with side-effects overwritten");
else if (warn_override_init)
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index ecb862b079c..77d299f36cc 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -38,6 +38,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "addresses.h"
#include "ggc.h"
+#include "dumpfile.h"
#define MOVE_MAX_WORDS (MOVE_MAX / UNITS_PER_WORD)
diff --git a/gcc/calls.c b/gcc/calls.c
index d4bcd7b67d4..5bc1b1ebb87 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1850,7 +1850,7 @@ mem_overlaps_already_clobbered_arg_p (rtx addr, unsigned HOST_WIDE_INT size)
unsigned HOST_WIDE_INT k;
for (k = 0; k < size; k++)
- if (i + k < stored_args_map->n_bits
+ if (i + k < SBITMAP_SIZE (stored_args_map)
&& TEST_BIT (stored_args_map, i + k))
return true;
}
diff --git a/gcc/cfg-flags.def b/gcc/cfg-flags.def
new file mode 100644
index 00000000000..839b9b358cf
--- /dev/null
+++ b/gcc/cfg-flags.def
@@ -0,0 +1,178 @@
+/* Flags on basic blocks and edges.
+ Copyright (C) 2012 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+/* This file defines flags that may appear on basic blocks or on
+ edges. Source files define DEF_BASIC_BLOCK_FLAG or DEF_EDGE_FLAG
+ appropriately before including this file. */
+
+#if !defined(DEF_BASIC_BLOCK_FLAG) && !defined(DEF_EDGE_FLAG)
+#error "You must define DEF_BASIC_BLOCK_FLAG or DEF_EDGE_FLAG"
+#endif
+
+#ifdef DEF_BASIC_BLOCK_FLAG
+
+/* Masks for basic_block.flags.
+
+ The format of this file is: DEF_BASIC_BLOCK_FLAG(NAME, IDX).
+ NAME is the name of the basic block flag. A flag BB_#NAME will be
+ created and the name is used in dump_edge_info.
+ IDX is a sequence number that is used to determine the value
+ of the flag, which is 1 << IDX).
+
+ BB_HOT_PARTITION and BB_COLD_PARTITION should be preserved throughout
+ the compilation, so they are never cleared.
+
+ All other flags may be cleared by clear_bb_flags(). It is generally
+ a bad idea to rely on any flags being up-to-date. */
+
+/* Only set on blocks that have just been created by create_bb. */
+DEF_BASIC_BLOCK_FLAG(NEW, 0)
+
+/* Set by find_unreachable_blocks. Do not rely on this being set in any
+ pass. */
+DEF_BASIC_BLOCK_FLAG(REACHABLE, 1)
+
+/* Set for blocks in an irreducible loop by loop analysis. */
+DEF_BASIC_BLOCK_FLAG(IRREDUCIBLE_LOOP, 2)
+
+/* Set on blocks that may actually not be single-entry single-exit block. */
+DEF_BASIC_BLOCK_FLAG(SUPERBLOCK, 3)
+
+/* Set on basic blocks that the scheduler should not touch. This is used
+ by SMS to prevent other schedulers from messing with the loop schedule. */
+DEF_BASIC_BLOCK_FLAG(DISABLE_SCHEDULE, 4)
+
+/* Set on blocks that should be put in a hot section. */
+DEF_BASIC_BLOCK_FLAG(HOT_PARTITION, 5)
+
+/* Set on blocks that should be put in a cold section. */
+DEF_BASIC_BLOCK_FLAG(COLD_PARTITION, 6)
+
+/* Set on block that was duplicated. */
+DEF_BASIC_BLOCK_FLAG(DUPLICATED, 7)
+
+/* Set if the label at the top of this block is the target of a non-local goto. */
+DEF_BASIC_BLOCK_FLAG(NON_LOCAL_GOTO_TARGET, 8)
+
+/* Set on blocks that are in RTL format. */
+DEF_BASIC_BLOCK_FLAG(RTL, 9)
+
+/* Set on blocks that are forwarder blocks.
+ Only used in cfgcleanup.c. */
+DEF_BASIC_BLOCK_FLAG(FORWARDER_BLOCK, 10)
+
+/* Set on blocks that cannot be threaded through.
+ Only used in cfgcleanup.c. */
+DEF_BASIC_BLOCK_FLAG(NONTHREADABLE_BLOCK, 11)
+
+/* Set on blocks that were modified in some way. This bit is set in
+ df_set_bb_dirty, but not cleared by df_analyze, so it can be used
+ to test whether a block has been modified prior to a df_analyze call. */
+DEF_BASIC_BLOCK_FLAG(MODIFIED, 12)
+
+/* A general visited flag for passes to use. */
+DEF_BASIC_BLOCK_FLAG(VISITED, 13)
+
+/* Set on blocks that are in a transaction. This is calculated on
+ demand, and is available after calling compute_transaction_bits(). */
+DEF_BASIC_BLOCK_FLAG(IN_TRANSACTION, 14)
+
+#endif
+
+#ifdef DEF_EDGE_FLAG
+
+/* Masks for edge.flags.
+
+ The format of this file is: DEF_EDGE_FLAG(NAME, IDX, STRING).
+ NAME is the name of the edge flag. A flag EDGE_#NAME will be
+ created and the name is used in dump_edge_info.
+ IDX is a sequence number that is used to determine the value
+ of the flag, which is 1 << IDX). */
+
+/* 'Straight line' flow. In GIMPLE and in cfglayout mode, all normal
+ edges are fallthru edges. In cfgrtl mode, this flag really means
+ that control flow falls through to the next basic block in the line. */
+DEF_EDGE_FLAG(FALLTHRU, 0)
+
+/* Strange flow, like a computed jump or exception handling. Usually
+ this means that the edge cannot be split. */
+DEF_EDGE_FLAG(ABNORMAL, 1)
+
+/* Edge out of a basic block that ends with a CALL_INSN with abnormal
+ exit, like an exception, or a sibcall.
+ This flag is only used for the RTL CFG. */
+DEF_EDGE_FLAG(ABNORMAL_CALL, 2)
+
+/* Exception edge. Exception handling edges represent possible control
+ transfers from a trapping instruction to an exception handler. EH
+ edges also have EDGE_ABNORMAL set. */
+DEF_EDGE_FLAG(EH, 3)
+
+/* Never merge blocks via this edge. This is used for exception handling,
+ to prevent merging away edges to the post-landing-pad basic block.
+ This flag is only used for the RTL CFG. */
+DEF_EDGE_FLAG(PRESERVE, 4)
+
+/* Not a real edge. This is used to connect parts of the CFG that do
+ not halt, such as infinite loops and noreturn functions, to the
+ EXIT_BLOCK, so that traversing of the reverse CFG is possible. */
+DEF_EDGE_FLAG(FAKE, 5)
+
+/* A back edge, marked in a depth-first search of the CFG. Back edges
+ are hints that this edge may be part of a loop in the CFG. */
+DEF_EDGE_FLAG(DFS_BACK, 6)
+
+/* Edge in a part of the CFG that is an irreducible loop. */
+DEF_EDGE_FLAG(IRREDUCIBLE_LOOP, 7)
+
+/* Edge taken when controlling predicate is nonzero.
+ This is only used for the GIMPLE CFG. */
+DEF_EDGE_FLAG(TRUE_VALUE, 8)
+
+/* Edge taken when controlling predicate is zero.
+ This is only used for the GIMPLE CFG. */
+DEF_EDGE_FLAG(FALSE_VALUE, 9)
+
+/* Edge is executable. This is only used in GIMPLE SSA-CCP and VRP.
+ This is only used for the GIMPLE CFG. */
+DEF_EDGE_FLAG(EXECUTABLE, 10)
+
+/* Edge crosses between hot and cold sections, when we do partitioning.
+ This flag is only used for the RTL CFG. */
+DEF_EDGE_FLAG(CROSSING, 11)
+
+/* Edge from a sibcall CALL_INSN to exit.
+ This flag is only used for the RTL CFG. */
+DEF_EDGE_FLAG(SIBCALL, 12)
+
+/* Candidate for straight line flow. Only used in bb-reorder.c.
+ This flag is only used for the RTL CFG. */
+DEF_EDGE_FLAG(CAN_FALLTHRU, 13)
+
+/* Exit of a loop. This is only used in ifcvt.c.
+ This flag is only used for the RTL CFG. */
+DEF_EDGE_FLAG(LOOP_EXIT, 14)
+
+#endif
+
+/*
+Local variables:
+mode:c
+End:
+*/
diff --git a/gcc/cfg.c b/gcc/cfg.c
index 667e0977b4f..3f14d49a72d 100644
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -43,37 +43,24 @@ along with GCC; see the file COPYING3. If not see
verify_flow_info
- Dumping and debugging
print_rtl_with_bb, dump_bb, debug_bb, debug_bb_n
+
+ TODO: Document these "Available functionality" functions in the files
+ that implement them.
*/
#include "config.h"
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
-#include "tree.h"
-#include "rtl.h"
-#include "hard-reg-set.h"
-#include "regs.h"
-#include "flags.h"
-#include "function.h"
-#include "except.h"
-#include "diagnostic-core.h"
-#include "tm_p.h"
#include "obstack.h"
-#include "timevar.h"
-#include "tree-pass.h"
#include "ggc.h"
#include "hashtab.h"
#include "alloc-pool.h"
+#include "tree.h"
+#include "basic-block.h"
#include "df.h"
-#include "cfgloop.h"
-#include "tree-flow.h"
-
-/* The obstack on which the flow graph components are allocated. */
+#include "cfgloop.h" /* FIXME: For struct loop. */
+#include "dumpfile.h"
-struct bitmap_obstack reg_obstack;
-
-void debug_flow_info (void);
-static void free_edge (edge);
#define RDIV(X,Y) (((X) + (Y) / 2) / (Y))
@@ -98,10 +85,10 @@ init_flow (struct function *the_fun)
}
/* Helper function for remove_edge and clear_edges. Frees edge structure
- without actually unlinking it from the pred/succ lists. */
+ without actually removing it from the pred/succ arrays. */
static void
-free_edge (edge e ATTRIBUTE_UNUSED)
+free_edge (edge e)
{
n_edges--;
ggc_free (e);
@@ -363,9 +350,6 @@ remove_edge_raw (edge e)
disconnect_src (e);
disconnect_dest (e);
- /* This is probably not needed, but it doesn't hurt. */
- redirect_edge_var_map_clear (e);
-
free_edge (e);
}
@@ -386,31 +370,6 @@ redirect_edge_succ (edge e, basic_block new_succ)
execute_on_growing_pred (e);
}
-/* Like previous but avoid possible duplicate edge. */
-
-edge
-redirect_edge_succ_nodup (edge e, basic_block new_succ)
-{
- edge s;
-
- s = find_edge (e->src, new_succ);
- if (s && s != e)
- {
- s->flags |= e->flags;
- s->probability += e->probability;
- if (s->probability > REG_BR_PROB_BASE)
- s->probability = REG_BR_PROB_BASE;
- s->count += e->count;
- redirect_edge_var_map_dup (s, e);
- remove_edge (e);
- e = s;
- }
- else
- redirect_edge_succ (e, new_succ);
-
- return e;
-}
-
/* Redirect an edge's predecessor from one block to another. */
void
@@ -424,16 +383,14 @@ redirect_edge_pred (edge e, basic_block new_pred)
connect_src (e);
}
-/* Clear all basic block flags, with the exception of partitioning and
- setjmp_target. */
+/* Clear all basic block flags that do not have to be preserved. */
void
clear_bb_flags (void)
{
basic_block bb;
FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
- bb->flags = (BB_PARTITION (bb)
- | (bb->flags & (BB_DISABLE_SCHEDULE + BB_RTL + BB_NON_LOCAL_GOTO_TARGET)));
+ bb->flags &= BB_FLAGS_TO_PRESERVE;
}
/* Check the consistency of profile information. We can't do that
@@ -441,289 +398,99 @@ clear_bb_flags (void)
solved graphs, later eliminating of conditionals or roundoff errors.
It is still practical to have them reported for debugging of simple
testcases. */
-void
-check_bb_profile (basic_block bb, FILE * file)
+static void
+check_bb_profile (basic_block bb, FILE * file, int indent, int flags)
{
edge e;
int sum = 0;
gcov_type lsum;
edge_iterator ei;
+ struct function *fun = DECL_STRUCT_FUNCTION (current_function_decl);
+ char *s_indent = (char *) alloca ((size_t) indent + 1);
+ memset ((void *) s_indent, ' ', (size_t) indent);
+ s_indent[indent] = '\0';
- if (profile_status == PROFILE_ABSENT)
+ if (profile_status_for_function (fun) == PROFILE_ABSENT)
return;
- if (bb != EXIT_BLOCK_PTR)
+ if (bb != EXIT_BLOCK_PTR_FOR_FUNCTION (fun))
{
FOR_EACH_EDGE (e, ei, bb->succs)
sum += e->probability;
if (EDGE_COUNT (bb->succs) && abs (sum - REG_BR_PROB_BASE) > 100)
- fprintf (file, "Invalid sum of outgoing probabilities %.1f%%\n",
+ fprintf (file, "%s%sInvalid sum of outgoing probabilities %.1f%%\n",
+ (flags & TDF_COMMENT) ? ";; " : "", s_indent,
sum * 100.0 / REG_BR_PROB_BASE);
lsum = 0;
FOR_EACH_EDGE (e, ei, bb->succs)
lsum += e->count;
if (EDGE_COUNT (bb->succs)
&& (lsum - bb->count > 100 || lsum - bb->count < -100))
- fprintf (file, "Invalid sum of outgoing counts %i, should be %i\n",
+ fprintf (file, "%s%sInvalid sum of outgoing counts %i, should be %i\n",
+ (flags & TDF_COMMENT) ? ";; " : "", s_indent,
(int) lsum, (int) bb->count);
}
- if (bb != ENTRY_BLOCK_PTR)
+ if (bb != ENTRY_BLOCK_PTR_FOR_FUNCTION (fun))
{
sum = 0;
FOR_EACH_EDGE (e, ei, bb->preds)
sum += EDGE_FREQUENCY (e);
if (abs (sum - bb->frequency) > 100)
fprintf (file,
- "Invalid sum of incoming frequencies %i, should be %i\n",
+ "%s%sInvalid sum of incoming frequencies %i, should be %i\n",
+ (flags & TDF_COMMENT) ? ";; " : "", s_indent,
sum, bb->frequency);
lsum = 0;
FOR_EACH_EDGE (e, ei, bb->preds)
lsum += e->count;
if (lsum - bb->count > 100 || lsum - bb->count < -100)
- fprintf (file, "Invalid sum of incoming counts %i, should be %i\n",
+ fprintf (file, "%s%sInvalid sum of incoming counts %i, should be %i\n",
+ (flags & TDF_COMMENT) ? ";; " : "", s_indent,
(int) lsum, (int) bb->count);
}
}
-/* Write information about registers and basic blocks into FILE.
- This is part of making a debugging dump. */
-
void
-dump_regset (regset r, FILE *outf)
-{
- unsigned i;
- reg_set_iterator rsi;
-
- if (r == NULL)
- {
- fputs (" (nil)", outf);
- return;
- }
-
- EXECUTE_IF_SET_IN_REG_SET (r, 0, i, rsi)
- {
- fprintf (outf, " %d", i);
- if (i < FIRST_PSEUDO_REGISTER)
- fprintf (outf, " [%s]",
- reg_names[i]);
- }
-}
-
-/* Print a human-readable representation of R on the standard error
- stream. This function is designed to be used from within the
- debugger. */
-
-DEBUG_FUNCTION void
-debug_regset (regset r)
-{
- dump_regset (r, stderr);
- putc ('\n', stderr);
-}
-
-/* Emit basic block information for BB. HEADER is true if the user wants
- the generic information and the predecessors, FOOTER is true if they want
- the successors. FLAGS is the dump flags of interest; TDF_DETAILS emit
- global register liveness information. PREFIX is put in front of every
- line. The output is emitted to FILE. */
-void
-dump_bb_info (basic_block bb, bool header, bool footer, int flags,
- const char *prefix, FILE *file)
-{
- edge e;
- edge_iterator ei;
-
- if (header)
- {
- fprintf (file, "\n%sBasic block %d ", prefix, bb->index);
- if (bb->prev_bb)
- fprintf (file, ", prev %d", bb->prev_bb->index);
- if (bb->next_bb)
- fprintf (file, ", next %d", bb->next_bb->index);
- fprintf (file, ", loop_depth %d, count ", bb->loop_depth);
- fprintf (file, HOST_WIDEST_INT_PRINT_DEC, bb->count);
- fprintf (file, ", freq %i", bb->frequency);
- /* Both maybe_hot_bb_p & probably_never_executed_bb_p functions
- crash without cfun. */
- if (cfun && maybe_hot_bb_p (bb))
- fputs (", maybe hot", file);
- if (cfun && probably_never_executed_bb_p (bb))
- fputs (", probably never executed", file);
- if (bb->flags)
- {
- static const char * const bits[] = {
- "new", "reachable", "irr_loop", "superblock", "disable_sched",
- "hot_partition", "cold_partition", "duplicated",
- "non_local_goto_target", "rtl", "forwarder", "nonthreadable",
- "modified"
- };
- unsigned int flags;
-
- fputs (", flags:", file);
- for (flags = bb->flags; flags ; flags &= flags - 1)
- {
- unsigned i = ctz_hwi (flags);
- if (i < ARRAY_SIZE (bits))
- fprintf (file, " %s", bits[i]);
- else
- fprintf (file, " <%d>", i);
- }
- }
- fputs (".\n", file);
-
- fprintf (file, "%sPredecessors: ", prefix);
- FOR_EACH_EDGE (e, ei, bb->preds)
- dump_edge_info (file, e, 0);
-
- if ((flags & TDF_DETAILS)
- && (bb->flags & BB_RTL)
- && df)
- {
- putc ('\n', file);
- df_dump_top (bb, file);
- }
- }
-
- if (footer)
- {
- fprintf (file, "\n%sSuccessors: ", prefix);
- FOR_EACH_EDGE (e, ei, bb->succs)
- dump_edge_info (file, e, 1);
-
- if ((flags & TDF_DETAILS)
- && (bb->flags & BB_RTL)
- && df)
- {
- putc ('\n', file);
- df_dump_bottom (bb, file);
- }
- }
-
- putc ('\n', file);
-}
-
-/* Dump the register info to FILE. */
-
-void
-dump_reg_info (FILE *file)
-{
- unsigned int i, max = max_reg_num ();
- if (reload_completed)
- return;
-
- if (reg_info_p_size < max)
- max = reg_info_p_size;
-
- fprintf (file, "%d registers.\n", max);
- for (i = FIRST_PSEUDO_REGISTER; i < max; i++)
- {
- enum reg_class rclass, altclass;
-
- if (regstat_n_sets_and_refs)
- fprintf (file, "\nRegister %d used %d times across %d insns",
- i, REG_N_REFS (i), REG_LIVE_LENGTH (i));
- else if (df)
- fprintf (file, "\nRegister %d used %d times across %d insns",
- i, DF_REG_USE_COUNT (i) + DF_REG_DEF_COUNT (i), REG_LIVE_LENGTH (i));
-
- if (REG_BASIC_BLOCK (i) >= NUM_FIXED_BLOCKS)
- fprintf (file, " in block %d", REG_BASIC_BLOCK (i));
- if (regstat_n_sets_and_refs)
- fprintf (file, "; set %d time%s", REG_N_SETS (i),
- (REG_N_SETS (i) == 1) ? "" : "s");
- else if (df)
- fprintf (file, "; set %d time%s", DF_REG_DEF_COUNT (i),
- (DF_REG_DEF_COUNT (i) == 1) ? "" : "s");
- if (regno_reg_rtx[i] != NULL && REG_USERVAR_P (regno_reg_rtx[i]))
- fputs ("; user var", file);
- if (REG_N_DEATHS (i) != 1)
- fprintf (file, "; dies in %d places", REG_N_DEATHS (i));
- if (REG_N_CALLS_CROSSED (i) == 1)
- fputs ("; crosses 1 call", file);
- else if (REG_N_CALLS_CROSSED (i))
- fprintf (file, "; crosses %d calls", REG_N_CALLS_CROSSED (i));
- if (REG_FREQ_CALLS_CROSSED (i))
- fprintf (file, "; crosses call with %d frequency", REG_FREQ_CALLS_CROSSED (i));
- if (regno_reg_rtx[i] != NULL
- && PSEUDO_REGNO_BYTES (i) != UNITS_PER_WORD)
- fprintf (file, "; %d bytes", PSEUDO_REGNO_BYTES (i));
-
- rclass = reg_preferred_class (i);
- altclass = reg_alternate_class (i);
- if (rclass != GENERAL_REGS || altclass != ALL_REGS)
- {
- if (altclass == ALL_REGS || rclass == ALL_REGS)
- fprintf (file, "; pref %s", reg_class_names[(int) rclass]);
- else if (altclass == NO_REGS)
- fprintf (file, "; %s or none", reg_class_names[(int) rclass]);
- else
- fprintf (file, "; pref %s, else %s",
- reg_class_names[(int) rclass],
- reg_class_names[(int) altclass]);
- }
-
- if (regno_reg_rtx[i] != NULL && REG_POINTER (regno_reg_rtx[i]))
- fputs ("; pointer", file);
- fputs (".\n", file);
- }
-}
-
-
-void
-dump_flow_info (FILE *file, int flags)
-{
- basic_block bb;
-
- /* There are no pseudo registers after reload. Don't dump them. */
- if (reg_info_p_size && (flags & TDF_DETAILS) != 0)
- dump_reg_info (file);
-
- fprintf (file, "\n%d basic blocks, %d edges.\n", n_basic_blocks, n_edges);
- FOR_ALL_BB (bb)
- {
- dump_bb_info (bb, true, true, flags, "", file);
- check_bb_profile (bb, file);
- }
-
- putc ('\n', file);
-}
-
-DEBUG_FUNCTION void
-debug_flow_info (void)
-{
- dump_flow_info (stderr, TDF_DETAILS);
-}
-
-void
-dump_edge_info (FILE *file, edge e, int do_succ)
+dump_edge_info (FILE *file, edge e, int flags, int do_succ)
{
basic_block side = (do_succ ? e->dest : e->src);
- /* both ENTRY_BLOCK_PTR & EXIT_BLOCK_PTR depend upon cfun. */
- if (cfun && side == ENTRY_BLOCK_PTR)
+ bool do_details = false;
+
+ if ((flags & TDF_DETAILS) != 0
+ && (flags & TDF_SLIM) == 0)
+ do_details = true;
+
+ /* ENTRY_BLOCK_PTR/EXIT_BLOCK_PTR depend on cfun.
+ Compare against ENTRY_BLOCK/EXIT_BLOCK to avoid that dependency. */
+ if (side->index == ENTRY_BLOCK)
fputs (" ENTRY", file);
- else if (cfun && side == EXIT_BLOCK_PTR)
+ else if (side->index == EXIT_BLOCK)
fputs (" EXIT", file);
else
fprintf (file, " %d", side->index);
- if (e->probability)
+ if (e->probability && do_details)
fprintf (file, " [%.1f%%] ", e->probability * 100.0 / REG_BR_PROB_BASE);
- if (e->count)
+ if (e->count && do_details)
{
fputs (" count:", file);
fprintf (file, HOST_WIDEST_INT_PRINT_DEC, e->count);
}
- if (e->flags)
+ if (e->flags && do_details)
{
- static const char * const bitnames[] = {
- "fallthru", "ab", "abcall", "eh", "fake", "dfs_back",
- "can_fallthru", "irreducible", "sibcall", "loop_exit",
- "true", "false", "exec", "crossing", "preserve"
- };
- int comma = 0;
+ static const char * const bitnames[] =
+ {
+#define DEF_EDGE_FLAG(NAME,IDX) #NAME ,
+#include "cfg-flags.def"
+ NULL
+#undef DEF_EDGE_FLAG
+ };
+ bool comma = false;
int i, flags = e->flags;
+ gcc_assert (e->flags <= EDGE_ALL_FLAGS);
fputs (" (", file);
for (i = 0; flags; i++)
if (flags & (1 << i))
@@ -732,11 +499,8 @@ dump_edge_info (FILE *file, edge e, int do_succ)
if (comma)
fputc (',', file);
- if (i < (int) ARRAY_SIZE (bitnames))
- fputs (bitnames[i], file);
- else
- fprintf (file, "%d", i);
- comma = 1;
+ fputs (bitnames[i], file);
+ comma = true;
}
fputc (')', file);
@@ -890,69 +654,151 @@ free_aux_for_edges (void)
DEBUG_FUNCTION void
debug_bb (basic_block bb)
{
- dump_bb (bb, stderr, 0);
+ dump_bb (stderr, bb, 0, dump_flags);
}
DEBUG_FUNCTION basic_block
debug_bb_n (int n)
{
basic_block bb = BASIC_BLOCK (n);
- dump_bb (bb, stderr, 0);
+ debug_bb (bb);
return bb;
}
-/* Dumps cfg related information about basic block BB to FILE. */
+/* Dumps cfg related information about basic block BB to OUTF.
+ If HEADER is true, dump things that appear before the instructions
+ contained in BB. If FOOTER is true, dump things that appear after.
+ Flags are the TDF_* masks as documented in dumpfile.h.
+ NB: With TDF_DETAILS, it is assumed that cfun is available, so
+ that maybe_hot_bb_p and probably_never_executed_bb_p don't ICE. */
-static void
-dump_cfg_bb_info (FILE *file, basic_block bb)
+void
+dump_bb_info (FILE *outf, basic_block bb, int indent, int flags,
+ bool do_header, bool do_footer)
{
- unsigned i;
edge_iterator ei;
- bool first = true;
+ edge e;
static const char * const bb_bitnames[] =
{
- "new", "reachable", "irreducible_loop", "superblock",
- "nosched", "hot", "cold", "dup", "xlabel", "rtl",
- "fwdr", "nothrd"
+#define DEF_BASIC_BLOCK_FLAG(NAME,IDX) #NAME ,
+#include "cfg-flags.def"
+ NULL
+#undef DEF_BASIC_BLOCK_FLAG
};
const unsigned n_bitnames = sizeof (bb_bitnames) / sizeof (char *);
- edge e;
+ bool first;
+ char *s_indent = (char *) alloca ((size_t) indent + 1);
+ memset ((void *) s_indent, ' ', (size_t) indent);
+ s_indent[indent] = '\0';
- fprintf (file, "Basic block %d", bb->index);
- for (i = 0; i < n_bitnames; i++)
- if (bb->flags & (1 << i))
- {
- if (first)
- fputs (" (", file);
- else
- fputs (", ", file);
- first = false;
- fputs (bb_bitnames[i], file);
- }
- if (!first)
- putc (')', file);
- putc ('\n', file);
-
- fputs ("Predecessors: ", file);
- FOR_EACH_EDGE (e, ei, bb->preds)
- dump_edge_info (file, e, 0);
-
- fprintf (file, "\nSuccessors: ");
- FOR_EACH_EDGE (e, ei, bb->succs)
- dump_edge_info (file, e, 1);
- fputs ("\n\n", file);
+ gcc_assert (bb->flags <= BB_ALL_FLAGS);
+
+ if (do_header)
+ {
+ unsigned i;
+
+ if (flags & TDF_COMMENT)
+ fputs (";; ", outf);
+ fprintf (outf, "%sbasic block %d, loop depth %d",
+ s_indent, bb->index, bb_loop_depth (bb));
+ if (flags & TDF_DETAILS)
+ {
+ struct function *fun = DECL_STRUCT_FUNCTION (current_function_decl);
+ fprintf (outf, ", count " HOST_WIDEST_INT_PRINT_DEC,
+ (HOST_WIDEST_INT) bb->count);
+ fprintf (outf, ", freq %i", bb->frequency);
+ if (maybe_hot_bb_p (fun, bb))
+ fputs (", maybe hot", outf);
+ if (probably_never_executed_bb_p (fun, bb))
+ fputs (", probably never executed", outf);
+ }
+ fputc ('\n', outf);
+ if (TDF_DETAILS)
+ check_bb_profile (bb, outf, indent, flags);
+
+ if (flags & TDF_DETAILS)
+ {
+ if (flags & TDF_COMMENT)
+ fputs (";; ", outf);
+ fprintf (outf, "%s prev block ", s_indent);
+ if (bb->prev_bb)
+ fprintf (outf, "%d", bb->prev_bb->index);
+ else
+ fprintf (outf, "(nil)");
+ fprintf (outf, ", next block ");
+ if (bb->next_bb)
+ fprintf (outf, "%d", bb->next_bb->index);
+ else
+ fprintf (outf, "(nil)");
+
+ fputs (", flags:", outf);
+ first = true;
+ for (i = 0; i < n_bitnames; i++)
+ if (bb->flags & (1 << i))
+ {
+ if (first)
+ fputs (" (", outf);
+ else
+ fputs (", ", outf);
+ first = false;
+ fputs (bb_bitnames[i], outf);
+ }
+ if (!first)
+ fputc (')', outf);
+ fputc ('\n', outf);
+ }
+
+ if (flags & TDF_COMMENT)
+ fputs (";; ", outf);
+ fprintf (outf, "%s pred: ", s_indent);
+ first = true;
+ FOR_EACH_EDGE (e, ei, bb->preds)
+ {
+ if (! first)
+ {
+ if (flags & TDF_COMMENT)
+ fputs (";; ", outf);
+ fprintf (outf, "%s ", s_indent);
+ }
+ first = false;
+ dump_edge_info (outf, e, flags, 0);
+ fputc ('\n', outf);
+ }
+ }
+
+ if (do_footer)
+ {
+ if (flags & TDF_COMMENT)
+ fputs (";; ", outf);
+ fprintf (outf, "%s succ: ", s_indent);
+ first = true;
+ FOR_EACH_EDGE (e, ei, bb->succs)
+ {
+ if (! first)
+ {
+ if (flags & TDF_COMMENT)
+ fputs (";; ", outf);
+ fprintf (outf, "%s ", s_indent);
+ }
+ first = false;
+ dump_edge_info (outf, e, flags, 1);
+ fputc ('\n', outf);
+ }
+ }
}
/* Dumps a brief description of cfg to FILE. */
void
-brief_dump_cfg (FILE *file)
+brief_dump_cfg (FILE *file, int flags)
{
basic_block bb;
FOR_EACH_BB (bb)
{
- dump_cfg_bb_info (file, bb);
+ dump_bb_info (file, bb, 0,
+ flags & (TDF_COMMENT | TDF_DETAILS),
+ true, true);
}
}
diff --git a/gcc/cfganal.c b/gcc/cfganal.c
index d361ff08f98..7cf9ca85606 100644
--- a/gcc/cfganal.c
+++ b/gcc/cfganal.c
@@ -1,7 +1,5 @@
/* Control flow graph analysis code for GNU compiler.
- Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1987-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -20,24 +18,16 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* This file contains various simple utilities to analyze the CFG. */
+
#include "config.h"
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
-#include "rtl.h"
-#include "obstack.h"
-#include "hard-reg-set.h"
#include "basic-block.h"
-#include "insn-config.h"
-#include "recog.h"
-#include "diagnostic-core.h"
-#include "tm_p.h"
#include "vec.h"
#include "vecprim.h"
#include "bitmap.h"
#include "sbitmap.h"
#include "timevar.h"
-#include "cfgloop.h"
/* Store the data structures necessary for depth-first search. */
struct depth_first_search_dsS {
@@ -59,106 +49,6 @@ static void flow_dfs_compute_reverse_add_bb (depth_first_search_ds,
static basic_block flow_dfs_compute_reverse_execute (depth_first_search_ds,
basic_block);
static void flow_dfs_compute_reverse_finish (depth_first_search_ds);
-static bool flow_active_insn_p (const_rtx);
-
-/* Like active_insn_p, except keep the return value clobber around
- even after reload. */
-
-static bool
-flow_active_insn_p (const_rtx insn)
-{
- if (active_insn_p (insn))
- return true;
-
- /* A clobber of the function return value exists for buggy
- programs that fail to return a value. Its effect is to
- keep the return value from being live across the entire
- function. If we allow it to be skipped, we introduce the
- possibility for register lifetime confusion. */
- if (GET_CODE (PATTERN (insn)) == CLOBBER
- && REG_P (XEXP (PATTERN (insn), 0))
- && REG_FUNCTION_VALUE_P (XEXP (PATTERN (insn), 0)))
- return true;
-
- return false;
-}
-
-/* Return true if the block has no effect and only forwards control flow to
- its single destination. */
-
-bool
-forwarder_block_p (const_basic_block bb)
-{
- rtx insn;
-
- if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR
- || !single_succ_p (bb))
- return false;
-
- /* Protect loop latches, headers and preheaders. */
- if (current_loops)
- {
- basic_block dest;
- if (bb->loop_father->header == bb)
- return false;
- dest = EDGE_SUCC (bb, 0)->dest;
- if (dest->loop_father->header == dest)
- return false;
- }
-
- for (insn = BB_HEAD (bb); insn != BB_END (bb); insn = NEXT_INSN (insn))
- if (INSN_P (insn) && flow_active_insn_p (insn))
- return false;
-
- return (!INSN_P (insn)
- || (JUMP_P (insn) && simplejump_p (insn))
- || !flow_active_insn_p (insn));
-}
-
-/* Return nonzero if we can reach target from src by falling through. */
-
-bool
-can_fallthru (basic_block src, basic_block target)
-{
- rtx insn = BB_END (src);
- rtx insn2;
- edge e;
- edge_iterator ei;
-
- if (target == EXIT_BLOCK_PTR)
- return true;
- if (src->next_bb != target)
- return 0;
- FOR_EACH_EDGE (e, ei, src->succs)
- if (e->dest == EXIT_BLOCK_PTR
- && e->flags & EDGE_FALLTHRU)
- return 0;
-
- insn2 = BB_HEAD (target);
- if (insn2 && !active_insn_p (insn2))
- insn2 = next_active_insn (insn2);
-
- /* ??? Later we may add code to move jump tables offline. */
- return next_active_insn (insn) == insn2;
-}
-
-/* Return nonzero if we could reach target from src by falling through,
- if the target was made adjacent. If we already have a fall-through
- edge to the exit block, we can't do that. */
-bool
-could_fall_through (basic_block src, basic_block target)
-{
- edge e;
- edge_iterator ei;
-
- if (target == EXIT_BLOCK_PTR)
- return true;
- FOR_EACH_EDGE (e, ei, src->succs)
- if (e->dest == EXIT_BLOCK_PTR
- && e->flags & EDGE_FALLTHRU)
- return 0;
- return true;
-}
/* Mark the back edges in DFS traversal.
Return nonzero if a loop (natural or otherwise) is present.
@@ -252,41 +142,6 @@ mark_dfs_back_edges (void)
return found;
}
-/* Set the flag EDGE_CAN_FALLTHRU for edges that can be fallthru. */
-
-void
-set_edge_can_fallthru_flag (void)
-{
- basic_block bb;
-
- FOR_EACH_BB (bb)
- {
- edge e;
- edge_iterator ei;
-
- FOR_EACH_EDGE (e, ei, bb->succs)
- {
- e->flags &= ~EDGE_CAN_FALLTHRU;
-
- /* The FALLTHRU edge is also CAN_FALLTHRU edge. */
- if (e->flags & EDGE_FALLTHRU)
- e->flags |= EDGE_CAN_FALLTHRU;
- }
-
- /* If the BB ends with an invertible condjump all (2) edges are
- CAN_FALLTHRU edges. */
- if (EDGE_COUNT (bb->succs) != 2)
- continue;
- if (!any_condjump_p (BB_END (bb)))
- continue;
- if (!invert_jump (BB_END (bb), JUMP_LABEL (BB_END (bb)), 0))
- continue;
- invert_jump (BB_END (bb), JUMP_LABEL (BB_END (bb)), 0);
- EDGE_SUCC (bb, 0)->flags |= EDGE_CAN_FALLTHRU;
- EDGE_SUCC (bb, 1)->flags |= EDGE_CAN_FALLTHRU;
- }
-}
-
/* Find unreachable blocks. An unreachable block will have 0 in
the reachable bit in block->flags. A nonzero value indicates the
block is reachable. */
@@ -357,23 +212,18 @@ create_edge_list (void)
struct edge_list *elist;
edge e;
int num_edges;
- int block_count;
basic_block bb;
edge_iterator ei;
- block_count = n_basic_blocks; /* Include the entry and exit blocks. */
-
- num_edges = 0;
-
/* Determine the number of edges in the flow graph by counting successor
edges on each basic block. */
+ num_edges = 0;
FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, next_bb)
{
num_edges += EDGE_COUNT (bb->succs);
}
elist = XNEW (struct edge_list);
- elist->num_blocks = block_count;
elist->num_edges = num_edges;
elist->index_to_edge = XNEWVEC (edge, num_edges);
@@ -407,7 +257,7 @@ print_edge_list (FILE *f, struct edge_list *elist)
int x;
fprintf (f, "Compressed edge list, %d BBs + entry & exit, and %d edges\n",
- elist->num_blocks, elist->num_edges);
+ n_basic_blocks, elist->num_edges);
for (x = 0; x < elist->num_edges; x++)
{
@@ -459,7 +309,7 @@ verify_edge_list (FILE *f, struct edge_list *elist)
}
/* We've verified that all the edges are in the list, now lets make sure
- there are no spurious edges in the list. */
+ there are no spurious edges in the list. This is an expensive check! */
FOR_BB_BETWEEN (p, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, next_bb)
FOR_BB_BETWEEN (s, ENTRY_BLOCK_PTR->next_bb, NULL, next_bb)
@@ -531,42 +381,6 @@ find_edge_index (struct edge_list *edge_list, basic_block pred, basic_block succ
return (EDGE_INDEX_NO_EDGE);
}
-
-/* Dump the list of basic blocks in the bitmap NODES. */
-
-void
-flow_nodes_print (const char *str, const_sbitmap nodes, FILE *file)
-{
- unsigned int node = 0;
- sbitmap_iterator sbi;
-
- if (! nodes)
- return;
-
- fprintf (file, "%s { ", str);
- EXECUTE_IF_SET_IN_SBITMAP (nodes, 0, node, sbi)
- fprintf (file, "%d ", node);
- fputs ("}\n", file);
-}
-
-/* Dump the list of edges in the array EDGE_LIST. */
-
-void
-flow_edge_list_print (const char *str, const edge *edge_list, int num_edges, FILE *file)
-{
- int i;
-
- if (! edge_list)
- return;
-
- fprintf (file, "%s { ", str);
- for (i = 0; i < num_edges; i++)
- fprintf (file, "%d->%d ", edge_list[i]->src->index,
- edge_list[i]->dest->index);
-
- fputs ("}\n", file);
-}
-
/* This routine will remove any fake predecessor edges for a basic block.
When the edge is removed, it is also removed from whatever successor
@@ -843,7 +657,7 @@ inverted_post_order_compute (int *post_order)
sbitmap_zero (visited);
/* Put all blocks that have no successor into the initial work list. */
- FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
+ FOR_ALL_BB (bb)
if (EDGE_COUNT (bb->succs) == 0)
{
/* Push the initial edge on to the stack. */
@@ -1205,7 +1019,7 @@ dfs_enumerate_from (basic_block bb, int reverse,
v_size = size;
}
- st = XCNEWVEC (basic_block, rslt_max);
+ st = XNEWVEC (basic_block, rslt_max);
rslt[tv++] = st[sp++] = bb;
MARK_VISITED (bb);
while (sp)
@@ -1368,4 +1182,177 @@ compute_idf (bitmap def_blocks, bitmap_head *dfs)
return phi_insertion_points;
}
+/* Intersection and union of preds/succs for sbitmap based data flow
+ solvers. All four functions defined below take the same arguments:
+ B is the basic block to perform the operation for. DST is the
+ target sbitmap, i.e. the result. SRC is an sbitmap vector of size
+ last_basic_block so that it can be indexed with basic block indices.
+ DST may be (but does not have to be) SRC[B->index]. */
+
+/* Set the bitmap DST to the intersection of SRC of successors of
+ basic block B. */
+
+void
+sbitmap_intersection_of_succs (sbitmap dst, sbitmap *src,
+ basic_block b)
+{
+ unsigned int set_size = dst->size;
+ edge e;
+ unsigned ix;
+
+ gcc_assert (!dst->popcount);
+
+ for (e = NULL, ix = 0; ix < EDGE_COUNT (b->succs); ix++)
+ {
+ e = EDGE_SUCC (b, ix);
+ if (e->dest == EXIT_BLOCK_PTR)
+ continue;
+
+ sbitmap_copy (dst, src[e->dest->index]);
+ break;
+ }
+
+ if (e == 0)
+ sbitmap_ones (dst);
+ else
+ for (++ix; ix < EDGE_COUNT (b->succs); ix++)
+ {
+ unsigned int i;
+ SBITMAP_ELT_TYPE *p, *r;
+
+ e = EDGE_SUCC (b, ix);
+ if (e->dest == EXIT_BLOCK_PTR)
+ continue;
+
+ p = src[e->dest->index]->elms;
+ r = dst->elms;
+ for (i = 0; i < set_size; i++)
+ *r++ &= *p++;
+ }
+}
+
+/* Set the bitmap DST to the intersection of SRC of predecessors of
+ basic block B. */
+
+void
+sbitmap_intersection_of_preds (sbitmap dst, sbitmap *src,
+ basic_block b)
+{
+ unsigned int set_size = dst->size;
+ edge e;
+ unsigned ix;
+
+ gcc_assert (!dst->popcount);
+
+ for (e = NULL, ix = 0; ix < EDGE_COUNT (b->preds); ix++)
+ {
+ e = EDGE_PRED (b, ix);
+ if (e->src == ENTRY_BLOCK_PTR)
+ continue;
+
+ sbitmap_copy (dst, src[e->src->index]);
+ break;
+ }
+
+ if (e == 0)
+ sbitmap_ones (dst);
+ else
+ for (++ix; ix < EDGE_COUNT (b->preds); ix++)
+ {
+ unsigned int i;
+ SBITMAP_ELT_TYPE *p, *r;
+
+ e = EDGE_PRED (b, ix);
+ if (e->src == ENTRY_BLOCK_PTR)
+ continue;
+
+ p = src[e->src->index]->elms;
+ r = dst->elms;
+ for (i = 0; i < set_size; i++)
+ *r++ &= *p++;
+ }
+}
+
+/* Set the bitmap DST to the union of SRC of successors of
+ basic block B. */
+
+void
+sbitmap_union_of_succs (sbitmap dst, sbitmap *src,
+ basic_block b)
+{
+ unsigned int set_size = dst->size;
+ edge e;
+ unsigned ix;
+
+ gcc_assert (!dst->popcount);
+
+ for (ix = 0; ix < EDGE_COUNT (b->succs); ix++)
+ {
+ e = EDGE_SUCC (b, ix);
+ if (e->dest == EXIT_BLOCK_PTR)
+ continue;
+
+ sbitmap_copy (dst, src[e->dest->index]);
+ break;
+ }
+
+ if (ix == EDGE_COUNT (b->succs))
+ sbitmap_zero (dst);
+ else
+ for (ix++; ix < EDGE_COUNT (b->succs); ix++)
+ {
+ unsigned int i;
+ SBITMAP_ELT_TYPE *p, *r;
+
+ e = EDGE_SUCC (b, ix);
+ if (e->dest == EXIT_BLOCK_PTR)
+ continue;
+
+ p = src[e->dest->index]->elms;
+ r = dst->elms;
+ for (i = 0; i < set_size; i++)
+ *r++ |= *p++;
+ }
+}
+
+/* Set the bitmap DST to the union of SRC of predecessors of
+ basic block B. */
+
+void
+sbitmap_union_of_preds (sbitmap dst, sbitmap *src,
+ basic_block b)
+{
+ unsigned int set_size = dst->size;
+ edge e;
+ unsigned ix;
+
+ gcc_assert (!dst->popcount);
+
+ for (ix = 0; ix < EDGE_COUNT (b->preds); ix++)
+ {
+ e = EDGE_PRED (b, ix);
+ if (e->src== ENTRY_BLOCK_PTR)
+ continue;
+
+ sbitmap_copy (dst, src[e->src->index]);
+ break;
+ }
+ if (ix == EDGE_COUNT (b->preds))
+ sbitmap_zero (dst);
+ else
+ for (ix++; ix < EDGE_COUNT (b->preds); ix++)
+ {
+ unsigned int i;
+ SBITMAP_ELT_TYPE *p, *r;
+
+ e = EDGE_PRED (b, ix);
+ if (e->src == ENTRY_BLOCK_PTR)
+ continue;
+
+ p = src[e->src->index]->elms;
+ r = dst->elms;
+ for (i = 0; i < set_size; i++)
+ *r++ |= *p++;
+ }
+}
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 909d3462d74..331d87efa8b 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
#include "rtl.h"
#include "hard-reg-set.h"
#include "regs.h"
-#include "timevar.h"
#include "insn-config.h"
#include "flags.h"
#include "recog.h"
@@ -2797,7 +2796,7 @@ delete_unreachable_blocks (void)
have dominators information, walking blocks backward gets us a
better chance of retaining most debug information than
otherwise. */
- if (MAY_HAVE_DEBUG_STMTS && current_ir_type () == IR_GIMPLE
+ if (MAY_HAVE_DEBUG_INSNS && current_ir_type () == IR_GIMPLE
&& dom_info_available_p (CDI_DOMINATORS))
{
for (b = EXIT_BLOCK_PTR->prev_bb; b != ENTRY_BLOCK_PTR; b = prev_bb)
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index ad2f66738cc..91457eb2455 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -1,5 +1,5 @@
/* A pass for lowering trees to RTL.
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -30,13 +30,10 @@ along with GCC; see the file COPYING3. If not see
#include "expr.h"
#include "langhooks.h"
#include "tree-flow.h"
-#include "timevar.h"
-#include "tree-dump.h"
#include "tree-pass.h"
#include "except.h"
#include "flags.h"
#include "diagnostic.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "toplev.h"
#include "debug.h"
@@ -188,6 +185,10 @@ static size_t stack_vars_alloc;
static size_t stack_vars_num;
static struct pointer_map_t *decl_to_stack_part;
+/* Conflict bitmaps go on this obstack. This allows us to destroy
+ all of them in one big sweep. */
+static bitmap_obstack stack_var_bitmap_obstack;
+
/* An array of indices such that stack_vars[stack_vars_sorted[i]].size
is non-decreasing. */
static size_t *stack_vars_sorted;
@@ -302,9 +303,9 @@ add_stack_var_conflict (size_t x, size_t y)
struct stack_var *a = &stack_vars[x];
struct stack_var *b = &stack_vars[y];
if (!a->conflicts)
- a->conflicts = BITMAP_ALLOC (NULL);
+ a->conflicts = BITMAP_ALLOC (&stack_var_bitmap_obstack);
if (!b->conflicts)
- b->conflicts = BITMAP_ALLOC (NULL);
+ b->conflicts = BITMAP_ALLOC (&stack_var_bitmap_obstack);
bitmap_set_bit (a->conflicts, y);
bitmap_set_bit (b->conflicts, x);
}
@@ -432,10 +433,10 @@ add_scope_conflicts_1 (basic_block bb, bitmap work, bool for_conflict)
unsigned i;
EXECUTE_IF_SET_IN_BITMAP (work, 0, i, bi)
{
- unsigned j;
- bitmap_iterator bj;
- EXECUTE_IF_SET_IN_BITMAP (work, i + 1, j, bj)
- add_stack_var_conflict (i, j);
+ struct stack_var *a = &stack_vars[i];
+ if (!a->conflicts)
+ a->conflicts = BITMAP_ALLOC (&stack_var_bitmap_obstack);
+ bitmap_ior_into (a->conflicts, work);
}
visit = visit_conflict;
}
@@ -453,6 +454,8 @@ add_scope_conflicts (void)
basic_block bb;
bool changed;
bitmap work = BITMAP_ALLOC (NULL);
+ int *rpo;
+ int n_bbs;
/* We approximate the live range of a stack variable by taking the first
mention of its name as starting point(s), and by the end-of-scope
@@ -465,15 +468,21 @@ add_scope_conflicts (void)
We then do a mostly classical bitmap liveness algorithm. */
FOR_ALL_BB (bb)
- bb->aux = BITMAP_ALLOC (NULL);
+ bb->aux = BITMAP_ALLOC (&stack_var_bitmap_obstack);
+
+ rpo = XNEWVEC (int, last_basic_block);
+ n_bbs = pre_and_rev_post_order_compute (NULL, rpo, false);
changed = true;
while (changed)
{
+ int i;
changed = false;
- FOR_EACH_BB (bb)
+ for (i = 0; i < n_bbs; i++)
{
- bitmap active = (bitmap)bb->aux;
+ bitmap active;
+ bb = BASIC_BLOCK (rpo[i]);
+ active = (bitmap)bb->aux;
add_scope_conflicts_1 (bb, work, false);
if (bitmap_ior_into (active, work))
changed = true;
@@ -483,6 +492,7 @@ add_scope_conflicts (void)
FOR_EACH_BB (bb)
add_scope_conflicts_1 (bb, work, true);
+ free (rpo);
BITMAP_FREE (work);
FOR_ALL_BB (bb)
BITMAP_FREE (bb->aux);
@@ -623,13 +633,6 @@ update_alias_info_with_stack_vars (void)
{
tree decl = stack_vars[j].decl;
unsigned int uid = DECL_PT_UID (decl);
- /* We should never end up partitioning SSA names (though they
- may end up on the stack). Neither should we allocate stack
- space to something that is unused and thus unreferenced, except
- for -O0 where we are preserving even unreferenced variables. */
- gcc_assert (DECL_P (decl)
- && (!optimize
- || referenced_var_lookup (cfun, DECL_UID (decl))));
bitmap_set_bit (part, uid);
*((bitmap *) pointer_map_insert (decls_to_partitions,
(void *)(size_t) uid)) = part;
@@ -648,7 +651,7 @@ update_alias_info_with_stack_vars (void)
{
unsigned i;
struct pointer_set_t *visited = pointer_set_create ();
- bitmap temp = BITMAP_ALLOC (NULL);
+ bitmap temp = BITMAP_ALLOC (&stack_var_bitmap_obstack);
for (i = 1; i < num_ssa_names; i++)
{
@@ -1354,7 +1357,7 @@ add_stack_protection_conflicts (void)
for (i = 0; i < n; ++i)
{
unsigned char ph_i = phase[i];
- for (j = 0; j < i; ++j)
+ for (j = i + 1; j < n; ++j)
if (ph_i != phase[j])
add_stack_var_conflict (i, j);
}
@@ -1379,14 +1382,11 @@ create_stack_guard (void)
static void
init_vars_expansion (void)
{
- tree t;
- unsigned ix;
- /* Set TREE_USED on all variables in the local_decls. */
- FOR_EACH_LOCAL_DECL (cfun, ix, t)
- TREE_USED (t) = 1;
+ /* Conflict bitmaps, and a few related temporary bitmaps, go here. */
+ bitmap_obstack_initialize (&stack_var_bitmap_obstack);
- /* Clear TREE_USED on all variables associated with a block scope. */
- clear_tree_used (DECL_INITIAL (current_function_decl));
+ /* A map from decl to stack partition. */
+ decl_to_stack_part = pointer_map_create ();
/* Initialize local stack smashing state. */
has_protected_decls = false;
@@ -1397,12 +1397,13 @@ init_vars_expansion (void)
static void
fini_vars_expansion (void)
{
- size_t i, n = stack_vars_num;
- for (i = 0; i < n; i++)
- BITMAP_FREE (stack_vars[i].conflicts);
- XDELETEVEC (stack_vars);
- XDELETEVEC (stack_vars_sorted);
+ bitmap_obstack_release (&stack_var_bitmap_obstack);
+ if (stack_vars)
+ XDELETEVEC (stack_vars);
+ if (stack_vars_sorted)
+ XDELETEVEC (stack_vars_sorted);
stack_vars = NULL;
+ stack_vars_sorted = NULL;
stack_vars_alloc = stack_vars_num = 0;
pointer_map_destroy (decl_to_stack_part);
decl_to_stack_part = NULL;
@@ -1423,15 +1424,16 @@ estimated_stack_frame_size (struct cgraph_node *node)
size_t i;
tree var;
tree old_cur_fun_decl = current_function_decl;
- referenced_var_iterator rvi;
struct function *fn = DECL_STRUCT_FUNCTION (node->symbol.decl);
current_function_decl = node->symbol.decl;
push_cfun (fn);
- gcc_checking_assert (gimple_referenced_vars (fn));
- FOR_EACH_REFERENCED_VAR (fn, var, rvi)
- size += expand_one_var (var, true, false);
+ init_vars_expansion ();
+
+ FOR_EACH_LOCAL_DECL (fn, i, var)
+ if (auto_var_in_fn_p (var, fn->decl))
+ size += expand_one_var (var, true, false);
if (stack_vars_num > 0)
{
@@ -1440,8 +1442,9 @@ estimated_stack_frame_size (struct cgraph_node *node)
for (i = 0; i < stack_vars_num; ++i)
stack_vars_sorted[i] = i;
size += account_stack_vars ();
- fini_vars_expansion ();
}
+
+ fini_vars_expansion ();
pop_cfun ();
current_function_decl = old_cur_fun_decl;
return size;
@@ -1454,6 +1457,7 @@ expand_used_vars (void)
{
tree var, outer_block = DECL_INITIAL (current_function_decl);
VEC(tree,heap) *maybe_local_decls = NULL;
+ struct pointer_map_t *ssa_name_decls;
unsigned i;
unsigned len;
@@ -1464,13 +1468,31 @@ expand_used_vars (void)
frame_phase = off ? align - off : 0;
}
+ /* Set TREE_USED on all variables in the local_decls. */
+ FOR_EACH_LOCAL_DECL (cfun, i, var)
+ TREE_USED (var) = 1;
+ /* Clear TREE_USED on all variables associated with a block scope. */
+ clear_tree_used (DECL_INITIAL (current_function_decl));
+
init_vars_expansion ();
+ ssa_name_decls = pointer_map_create ();
for (i = 0; i < SA.map->num_partitions; i++)
{
tree var = partition_to_var (SA.map, i);
- gcc_assert (is_gimple_reg (var));
+ gcc_assert (!virtual_operand_p (var));
+
+ /* Assign decls to each SSA name partition, share decls for partitions
+ we could have coalesced (those with the same type). */
+ if (SSA_NAME_VAR (var) == NULL_TREE)
+ {
+ void **slot = pointer_map_insert (ssa_name_decls, TREE_TYPE (var));
+ if (!*slot)
+ *slot = (void *) create_tmp_reg (TREE_TYPE (var), NULL);
+ replace_ssa_name_symbol (var, (tree) *slot);
+ }
+
if (TREE_CODE (SSA_NAME_VAR (var)) == VAR_DECL)
expand_one_var (var, true, true);
else
@@ -1487,6 +1509,7 @@ expand_used_vars (void)
}
}
}
+ pointer_map_destroy (ssa_name_decls);
/* At this point all variables on the local_decls with TREE_USED
set are not associated with any block scope. Lay them out. */
@@ -1600,10 +1623,10 @@ expand_used_vars (void)
}
expand_stack_vars (NULL);
-
- fini_vars_expansion ();
}
+ fini_vars_expansion ();
+
/* If there were any artificial non-ignored vars without rtl
found earlier, see if deferred stack allocation hasn't assigned
rtl to them. */
@@ -3410,6 +3433,8 @@ expand_debug_expr (tree exp)
case VEC_UNPACK_LO_EXPR:
case VEC_WIDEN_MULT_HI_EXPR:
case VEC_WIDEN_MULT_LO_EXPR:
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
case VEC_WIDEN_LSHIFT_HI_EXPR:
case VEC_WIDEN_LSHIFT_LO_EXPR:
case VEC_PERM_EXPR:
@@ -3636,7 +3661,7 @@ expand_debug_locations (void)
|| (GET_MODE (val) == VOIDmode
&& (CONST_INT_P (val)
|| GET_CODE (val) == CONST_FIXED
- || GET_CODE (val) == CONST_DOUBLE
+ || CONST_DOUBLE_AS_INT_P (val)
|| GET_CODE (val) == LABEL_REF)));
}
@@ -4319,8 +4344,7 @@ gimple_expand_cfg (void)
timevar_push (TV_OUT_OF_SSA);
rewrite_out_of_ssa (&SA);
timevar_pop (TV_OUT_OF_SSA);
- SA.partition_to_pseudo = (rtx *)xcalloc (SA.map->num_partitions,
- sizeof (rtx));
+ SA.partition_to_pseudo = XCNEWVEC (rtx, SA.map->num_partitions);
/* Make sure all values used by the optimization passes have sane
defaults. */
@@ -4449,7 +4473,6 @@ gimple_expand_cfg (void)
rtx r;
if (!name
- || !POINTER_TYPE_P (TREE_TYPE (name))
/* We might have generated new SSA names in
update_alias_info_with_stack_vars. They will have a NULL
defining statements, and won't be part of the partitioning,
@@ -4459,6 +4482,18 @@ gimple_expand_cfg (void)
part = var_to_partition (SA.map, name);
if (part == NO_PARTITION)
continue;
+
+ /* Adjust all partition members to get the underlying decl of
+ the representative which we might have created in expand_one_var. */
+ if (SSA_NAME_VAR (name) == NULL_TREE)
+ {
+ tree leader = partition_to_var (SA.map, part);
+ gcc_assert (SSA_NAME_VAR (leader) != NULL_TREE);
+ replace_ssa_name_symbol (name, SSA_NAME_VAR (leader));
+ }
+ if (!POINTER_TYPE_P (TREE_TYPE (name)))
+ continue;
+
r = SA.partition_to_pseudo[part];
if (REG_P (r))
mark_reg_pointer (r, get_pointer_alignment (name));
diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c
index 5b49d64f090..1417e48299d 100644
--- a/gcc/cfghooks.c
+++ b/gcc/cfghooks.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
#include "coretypes.h"
+#include "dumpfile.h"
#include "tm.h"
#include "tree.h"
#include "rtl.h"
@@ -183,9 +184,9 @@ verify_flow_info (void)
error ("verify_flow_info: Basic block %d succ edge is corrupted",
bb->index);
fprintf (stderr, "Predecessor: ");
- dump_edge_info (stderr, e, 0);
+ dump_edge_info (stderr, e, TDF_DETAILS, 0);
fprintf (stderr, "\nSuccessor: ");
- dump_edge_info (stderr, e, 1);
+ dump_edge_info (stderr, e, TDF_DETAILS, 1);
fprintf (stderr, "\n");
err = 1;
}
@@ -204,9 +205,9 @@ verify_flow_info (void)
{
error ("basic block %d pred edge is corrupted", bb->index);
fputs ("Predecessor: ", stderr);
- dump_edge_info (stderr, e, 0);
+ dump_edge_info (stderr, e, TDF_DETAILS, 0);
fputs ("\nSuccessor: ", stderr);
- dump_edge_info (stderr, e, 1);
+ dump_edge_info (stderr, e, TDF_DETAILS, 1);
fputc ('\n', stderr);
err = 1;
}
@@ -217,9 +218,9 @@ verify_flow_info (void)
error ("its dest_idx should be %d, not %d",
ei.index, e->dest_idx);
fputs ("Predecessor: ", stderr);
- dump_edge_info (stderr, e, 0);
+ dump_edge_info (stderr, e, TDF_DETAILS, 0);
fputs ("\nSuccessor: ", stderr);
- dump_edge_info (stderr, e, 1);
+ dump_edge_info (stderr, e, TDF_DETAILS, 1);
fputc ('\n', stderr);
err = 1;
}
@@ -260,50 +261,44 @@ verify_flow_info (void)
timevar_pop (TV_CFG_VERIFY);
}
-/* Print out one basic block. This function takes care of the purely
- graph related information. The cfg hook for the active representation
- should dump representation-specific information. */
+/* Print out one basic block BB to file OUTF. INDENT is printed at the
+ start of each new line. FLAGS are the TDF_* flags in dumpfile.h.
+
+ This function takes care of the purely graph related information.
+ The cfg hook for the active representation should dump
+ representation-specific information. */
void
-dump_bb (basic_block bb, FILE *outf, int indent)
+dump_bb (FILE *outf, basic_block bb, int indent, int flags)
{
- edge e;
- edge_iterator ei;
- char *s_indent;
-
- s_indent = (char *) alloca ((size_t) indent + 1);
- memset (s_indent, ' ', (size_t) indent);
- s_indent[indent] = '\0';
-
- fprintf (outf, ";;%s basic block %d, loop depth %d, count ",
- s_indent, bb->index, bb->loop_depth);
- fprintf (outf, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) bb->count);
- putc ('\n', outf);
+ if (flags & TDF_BLOCKS)
+ dump_bb_info (outf, bb, indent, flags, true, false);
+ if (cfg_hooks->dump_bb)
+ cfg_hooks->dump_bb (outf, bb, indent, flags);
+ if (flags & TDF_BLOCKS)
+ dump_bb_info (outf, bb, indent, flags, false, true);
+ fputc ('\n', outf);
+}
- fprintf (outf, ";;%s prev block ", s_indent);
- if (bb->prev_bb)
- fprintf (outf, "%d, ", bb->prev_bb->index);
- else
- fprintf (outf, "(nil), ");
- fprintf (outf, "next block ");
- if (bb->next_bb)
- fprintf (outf, "%d", bb->next_bb->index);
- else
- fprintf (outf, "(nil)");
- putc ('\n', outf);
+/* Dump the complete CFG to FILE. FLAGS are the TDF_* flags in dumpfile.h. */
+void
+dump_flow_info (FILE *file, int flags)
+{
+ basic_block bb;
- fprintf (outf, ";;%s pred: ", s_indent);
- FOR_EACH_EDGE (e, ei, bb->preds)
- dump_edge_info (outf, e, 0);
- putc ('\n', outf);
+ fprintf (file, "\n%d basic blocks, %d edges.\n", n_basic_blocks, n_edges);
+ FOR_ALL_BB (bb)
+ dump_bb (file, bb, 0, flags);
- fprintf (outf, ";;%s succ: ", s_indent);
- FOR_EACH_EDGE (e, ei, bb->succs)
- dump_edge_info (outf, e, 1);
- putc ('\n', outf);
+ putc ('\n', file);
+}
- if (cfg_hooks->dump_bb)
- cfg_hooks->dump_bb (bb, outf, indent, 0);
+/* Like above, but dump to stderr. To be called from debuggers. */
+void debug_flow_info (void);
+DEBUG_FUNCTION void
+debug_flow_info (void)
+{
+ dump_flow_info (stderr, TDF_DETAILS);
}
/* Redirect edge E to the given basic block DEST and update underlying program
@@ -377,9 +372,40 @@ remove_edge (edge e)
if (current_loops != NULL)
rescan_loop_exit (e, false, true);
+ /* This is probably not needed, but it doesn't hurt. */
+ /* FIXME: This should be called via a remove_edge hook. */
+ if (current_ir_type () == IR_GIMPLE)
+ redirect_edge_var_map_clear (e);
+
remove_edge_raw (e);
}
+/* Like redirect_edge_succ but avoid possible duplicate edge. */
+
+edge
+redirect_edge_succ_nodup (edge e, basic_block new_succ)
+{
+ edge s;
+
+ s = find_edge (e->src, new_succ);
+ if (s && s != e)
+ {
+ s->flags |= e->flags;
+ s->probability += e->probability;
+ if (s->probability > REG_BR_PROB_BASE)
+ s->probability = REG_BR_PROB_BASE;
+ s->count += e->count;
+ /* FIXME: This should be called via a hook and only for IR_GIMPLE. */
+ redirect_edge_var_map_dup (s, e);
+ remove_edge (e);
+ e = s;
+ }
+ else
+ redirect_edge_succ (e, new_succ);
+
+ return e;
+}
+
/* Redirect the edge E to basic block DEST even if it requires creating
of a new basic block; then it returns the newly created basic block.
Aborts when redirection is impossible. */
@@ -436,7 +462,6 @@ split_block (basic_block bb, void *i)
new_bb->count = bb->count;
new_bb->frequency = bb->frequency;
- new_bb->loop_depth = bb->loop_depth;
new_bb->discriminator = bb->discriminator;
if (dom_info_available_p (CDI_DOMINATORS))
@@ -959,7 +984,6 @@ duplicate_block (basic_block bb, edge e, basic_block after)
if (after)
move_block_after (new_bb, after);
- new_bb->loop_depth = bb->loop_depth;
new_bb->flags = bb->flags;
FOR_EACH_EDGE (s, ei, bb->succs)
{
diff --git a/gcc/cfghooks.h b/gcc/cfghooks.h
index adf6a893b00..cd4bd4165ec 100644
--- a/gcc/cfghooks.h
+++ b/gcc/cfghooks.h
@@ -28,7 +28,7 @@ struct cfg_hooks
/* Debugging. */
int (*verify_flow_info) (void);
- void (*dump_bb) (basic_block, FILE *, int, int);
+ void (*dump_bb) (FILE *, basic_block, int, int);
/* Basic CFG manipulation. */
@@ -141,7 +141,7 @@ struct cfg_hooks
};
extern void verify_flow_info (void);
-extern void dump_bb (basic_block, FILE *, int);
+extern void dump_bb (FILE *, basic_block, int, int);
extern edge redirect_edge_and_branch (edge, basic_block);
extern basic_block redirect_edge_and_branch_force (edge, basic_block);
extern bool can_remove_branch_p (const_edge);
diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c
index 8b3cde691e5..44df99b8f33 100644
--- a/gcc/cfgloop.c
+++ b/gcc/cfgloop.c
@@ -23,8 +23,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
-#include "hard-reg-set.h"
-#include "obstack.h"
#include "function.h"
#include "basic-block.h"
#include "cfgloop.h"
@@ -34,6 +32,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "pointer-set.h"
#include "ggc.h"
+#include "dumpfile.h"
static void flow_loops_cfg_dump (FILE *);
@@ -230,10 +229,8 @@ flow_loop_nodes_find (basic_block header, struct loop *loop)
int num_nodes = 1;
edge latch;
edge_iterator latch_ei;
- unsigned depth = loop_depth (loop);
header->loop_father = loop;
- header->loop_depth = depth;
FOR_EACH_EDGE (latch, latch_ei, loop->header->preds)
{
@@ -244,7 +241,6 @@ flow_loop_nodes_find (basic_block header, struct loop *loop)
num_nodes++;
VEC_safe_push (basic_block, heap, stack, latch->src);
latch->src->loop_father = loop;
- latch->src->loop_depth = depth;
while (!VEC_empty (basic_block, stack))
{
@@ -261,7 +257,6 @@ flow_loop_nodes_find (basic_block header, struct loop *loop)
if (ancestor->loop_father != loop)
{
ancestor->loop_father = loop;
- ancestor->loop_depth = depth;
num_nodes++;
VEC_safe_push (basic_block, heap, stack, ancestor);
}
@@ -366,7 +361,7 @@ init_loops_structure (struct loops *loops, unsigned num_loops)
}
/* Find all the natural loops in the function and save in LOOPS structure and
- recalculate loop_depth information in basic block structures.
+ recalculate loop_father information in basic block structures.
Return the number of natural loops found. */
int
@@ -405,8 +400,6 @@ flow_loops_find (struct loops *loops)
{
edge_iterator ei;
- header->loop_depth = 0;
-
/* If we have an abnormal predecessor, do not consider the
loop (not worth the problems). */
if (bb_has_abnormal_pred (header))
@@ -812,7 +805,7 @@ get_loop_body (const struct loop *loop)
gcc_assert (loop->num_nodes);
- body = XCNEWVEC (basic_block, loop->num_nodes);
+ body = XNEWVEC (basic_block, loop->num_nodes);
if (loop->latch == EXIT_BLOCK_PTR)
{
@@ -872,7 +865,7 @@ get_loop_body_in_dom_order (const struct loop *loop)
gcc_assert (loop->num_nodes);
- tovisit = XCNEWVEC (basic_block, loop->num_nodes);
+ tovisit = XNEWVEC (basic_block, loop->num_nodes);
gcc_assert (loop->latch != EXIT_BLOCK_PTR);
@@ -911,7 +904,7 @@ get_loop_body_in_bfs_order (const struct loop *loop)
gcc_assert (loop->num_nodes);
gcc_assert (loop->latch != EXIT_BLOCK_PTR);
- blocks = XCNEWVEC (basic_block, loop->num_nodes);
+ blocks = XNEWVEC (basic_block, loop->num_nodes);
visited = BITMAP_ALLOC (NULL);
bb = loop->header;
@@ -1186,7 +1179,6 @@ add_bb_to_loop (basic_block bb, struct loop *loop)
gcc_assert (bb->loop_father == NULL);
bb->loop_father = loop;
- bb->loop_depth = loop_depth (loop);
loop->num_nodes++;
FOR_EACH_VEC_ELT (loop_p, loop->superloops, i, ploop)
ploop->num_nodes++;
@@ -1216,7 +1208,6 @@ remove_bb_from_loops (basic_block bb)
FOR_EACH_VEC_ELT (loop_p, loop->superloops, i, ploop)
ploop->num_nodes--;
bb->loop_father = NULL;
- bb->loop_depth = 0;
FOR_EACH_EDGE (e, ei, bb->succs)
{
@@ -1303,6 +1294,7 @@ cancel_loop_tree (struct loop *loop)
-- loop header have just single entry edge and single latch edge
-- loop latches have only single successor that is header of their loop
-- irreducible loops are correctly marked
+ -- the cached loop depth and loop father of each bb is correct
*/
DEBUG_FUNCTION void
verify_loop_structure (void)
@@ -1317,6 +1309,7 @@ verify_loop_structure (void)
loop_iterator li;
struct loop_exit *exit, *mexit;
bool dom_available = dom_info_available_p (CDI_DOMINATORS);
+ sbitmap visited = sbitmap_alloc (last_basic_block);
/* We need up-to-date dominators, compute or verify them. */
if (!dom_available)
@@ -1353,11 +1346,34 @@ verify_loop_structure (void)
if (!flow_bb_inside_loop_p (loop, bbs[j]))
{
error ("bb %d do not belong to loop %d",
- bbs[j]->index, loop->num);
+ bbs[j]->index, loop->num);
err = 1;
}
free (bbs);
}
+ sbitmap_zero (visited);
+ FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
+ {
+ bbs = get_loop_body (loop);
+
+ for (j = 0; j < loop->num_nodes; j++)
+ {
+ bb = bbs[j];
+
+ /* Ignore this block if it is in an inner loop. */
+ if (TEST_BIT (visited, bb->index))
+ continue;
+ SET_BIT (visited, bb->index);
+
+ if (bb->loop_father != loop)
+ {
+ error ("bb %d has father loop %d, should be loop %d",
+ bb->index, bb->loop_father->num, loop->num);
+ err = 1;
+ }
+ }
+ free (bbs);
+ }
/* Check headers and latches. */
FOR_EACH_LOOP (li, loop, 0)
@@ -1565,6 +1581,7 @@ verify_loop_structure (void)
gcc_assert (!err);
+ sbitmap_free (visited);
free (sizes);
if (!dom_available)
free_dominance_info (CDI_DOMINATORS);
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index a731354f6bc..ed6ef3d5c87 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -80,7 +80,7 @@ struct GTY ((chain_next ("%h.next"))) nb_iter_bound {
struct GTY (()) loop_exit {
/* The exit edge. */
- struct edge_def *e;
+ edge e;
/* Previous and next exit in the list of the exits of the loop. */
struct loop_exit *prev;
@@ -114,10 +114,10 @@ struct GTY ((chain_next ("%h.next"))) loop {
unsigned ninsns;
/* Basic block of loop header. */
- struct basic_block_def *header;
+ basic_block header;
/* Basic block of loop latch. */
- struct basic_block_def *latch;
+ basic_block latch;
/* For loop unrolling/peeling decision. */
struct lpt_decision lpt_decision;
@@ -445,6 +445,14 @@ loop_depth (const struct loop *loop)
return VEC_length (loop_p, loop->superloops);
}
+/* Returns the loop depth of the loop BB belongs to. */
+
+static inline int
+bb_loop_depth (const_basic_block bb)
+{
+ return bb->loop_father ? loop_depth (bb->loop_father) : 0;
+}
+
/* Returns the immediate superloop of LOOP, or NULL if LOOP is the outermost
loop. */
@@ -641,7 +649,7 @@ fel_init (loop_iterator *li, loop_p *loop, unsigned flags)
#define FOR_EACH_LOOP_BREAK(LI) \
{ \
- VEC_free (int, heap, (LI)->to_visit); \
+ VEC_free (int, heap, (LI).to_visit); \
break; \
}
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index 75d721d6956..d84a56de193 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -23,11 +23,10 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
-#include "hard-reg-set.h"
-#include "obstack.h"
#include "basic-block.h"
#include "cfgloop.h"
#include "tree-flow.h"
+#include "dumpfile.h"
static void copy_loops_to (struct loop **, int,
struct loop *);
@@ -72,7 +71,7 @@ find_path (edge e, basic_block **bbs)
gcc_assert (EDGE_COUNT (e->dest->preds) <= 1);
/* Find bbs in the path. */
- *bbs = XCNEWVEC (basic_block, n_basic_blocks);
+ *bbs = XNEWVEC (basic_block, n_basic_blocks);
return dfs_enumerate_from (e->dest, 0, rpe_enum_p, *bbs,
n_basic_blocks, e->dest);
}
@@ -323,7 +322,7 @@ remove_path (edge e)
nrem = find_path (e, &rem_bbs);
n_bord_bbs = 0;
- bord_bbs = XCNEWVEC (basic_block, n_basic_blocks);
+ bord_bbs = XNEWVEC (basic_block, n_basic_blocks);
seen = sbitmap_alloc (last_basic_block);
sbitmap_zero (seen);
@@ -1136,7 +1135,7 @@ duplicate_loop_to_header_edge (struct loop *loop, edge e,
n_orig_loops = 0;
for (aloop = loop->inner; aloop; aloop = aloop->next)
n_orig_loops++;
- orig_loops = XCNEWVEC (struct loop *, n_orig_loops);
+ orig_loops = XNEWVEC (struct loop *, n_orig_loops);
for (aloop = loop->inner, i = 0; aloop; aloop = aloop->next, i++)
orig_loops[i] = aloop;
@@ -1641,6 +1640,9 @@ fix_loop_structure (bitmap changed_bbs)
bool record_exits = false;
struct loop **superloop = XNEWVEC (struct loop *, number_of_loops ());
+ /* We need exact and fast dominance info to be available. */
+ gcc_assert (dom_info_state (CDI_DOMINATORS) == DOM_OK);
+
/* Remove the old bb -> loop mapping. Remember the depth of the blocks in
the loop hierarchy, so that we can recognize blocks whose loop nesting
relationship has changed. */
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 69cf86dc954..c62b5bce33f 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -88,7 +88,7 @@ static void rtl_delete_block (basic_block);
static basic_block rtl_redirect_edge_and_branch_force (edge, basic_block);
static edge rtl_redirect_edge_and_branch (edge, basic_block);
static basic_block rtl_split_block (basic_block, void *);
-static void rtl_dump_bb (basic_block, FILE *, int, int);
+static void rtl_dump_bb (FILE *, basic_block, int, int);
static int rtl_verify_flow_info_1 (void);
static void rtl_make_forwarder_block (edge);
@@ -517,6 +517,107 @@ update_bb_for_insn (basic_block bb)
}
+/* Like active_insn_p, except keep the return value clobber around
+ even after reload. */
+
+static bool
+flow_active_insn_p (const_rtx insn)
+{
+ if (active_insn_p (insn))
+ return true;
+
+ /* A clobber of the function return value exists for buggy
+ programs that fail to return a value. Its effect is to
+ keep the return value from being live across the entire
+ function. If we allow it to be skipped, we introduce the
+ possibility for register lifetime confusion. */
+ if (GET_CODE (PATTERN (insn)) == CLOBBER
+ && REG_P (XEXP (PATTERN (insn), 0))
+ && REG_FUNCTION_VALUE_P (XEXP (PATTERN (insn), 0)))
+ return true;
+
+ return false;
+}
+
+/* Return true if the block has no effect and only forwards control flow to
+ its single destination. */
+/* FIXME: Make this a cfg hook. */
+
+bool
+forwarder_block_p (const_basic_block bb)
+{
+ rtx insn;
+
+ if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR
+ || !single_succ_p (bb))
+ return false;
+
+ /* Protect loop latches, headers and preheaders. */
+ if (current_loops)
+ {
+ basic_block dest;
+ if (bb->loop_father->header == bb)
+ return false;
+ dest = EDGE_SUCC (bb, 0)->dest;
+ if (dest->loop_father->header == dest)
+ return false;
+ }
+
+ for (insn = BB_HEAD (bb); insn != BB_END (bb); insn = NEXT_INSN (insn))
+ if (INSN_P (insn) && flow_active_insn_p (insn))
+ return false;
+
+ return (!INSN_P (insn)
+ || (JUMP_P (insn) && simplejump_p (insn))
+ || !flow_active_insn_p (insn));
+}
+
+/* Return nonzero if we can reach target from src by falling through. */
+/* FIXME: Make this a cfg hook. */
+
+bool
+can_fallthru (basic_block src, basic_block target)
+{
+ rtx insn = BB_END (src);
+ rtx insn2;
+ edge e;
+ edge_iterator ei;
+
+ if (target == EXIT_BLOCK_PTR)
+ return true;
+ if (src->next_bb != target)
+ return 0;
+ FOR_EACH_EDGE (e, ei, src->succs)
+ if (e->dest == EXIT_BLOCK_PTR
+ && e->flags & EDGE_FALLTHRU)
+ return 0;
+
+ insn2 = BB_HEAD (target);
+ if (insn2 && !active_insn_p (insn2))
+ insn2 = next_active_insn (insn2);
+
+ /* ??? Later we may add code to move jump tables offline. */
+ return next_active_insn (insn) == insn2;
+}
+
+/* Return nonzero if we could reach target from src by falling through,
+ if the target was made adjacent. If we already have a fall-through
+ edge to the exit block, we can't do that. */
+static bool
+could_fall_through (basic_block src, basic_block target)
+{
+ edge e;
+ edge_iterator ei;
+
+ if (target == EXIT_BLOCK_PTR)
+ return true;
+ FOR_EACH_EDGE (e, ei, src->succs)
+ if (e->dest == EXIT_BLOCK_PTR
+ && e->flags & EDGE_FALLTHRU)
+ return 0;
+ return true;
+}
+
/* Return the NOTE_INSN_BASIC_BLOCK of BB. */
rtx
bb_note (basic_block bb)
@@ -1264,8 +1365,8 @@ force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
one and create separate abnormal edge to original destination.
This allows bb-reorder to make such edge non-fallthru. */
gcc_assert (e->dest == target);
- abnormal_edge_flags = e->flags & ~(EDGE_FALLTHRU | EDGE_CAN_FALLTHRU);
- e->flags &= EDGE_FALLTHRU | EDGE_CAN_FALLTHRU;
+ abnormal_edge_flags = e->flags & ~EDGE_FALLTHRU;
+ e->flags &= EDGE_FALLTHRU;
}
else
{
@@ -1337,7 +1438,6 @@ force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
jump_block = create_basic_block (note, NULL, e->src);
jump_block->count = count;
jump_block->frequency = EDGE_FREQUENCY (e);
- jump_block->loop_depth = target->loop_depth;
/* Make sure new block ends up in correct hot/cold section. */
@@ -1735,10 +1835,11 @@ commit_edge_insertions (void)
/* Print out RTL-specific basic block information (live information
- at start and end). */
+ at start and end with TDF_DETAILS). FLAGS are the TDF_* masks
+ documented in dumpfile.h. */
static void
-rtl_dump_bb (basic_block bb, FILE *outf, int indent, int flags ATTRIBUTE_UNUSED)
+rtl_dump_bb (FILE *outf, basic_block bb, int indent, int flags)
{
rtx insn;
rtx last;
@@ -1748,7 +1849,7 @@ rtl_dump_bb (basic_block bb, FILE *outf, int indent, int flags ATTRIBUTE_UNUSED)
memset (s_indent, ' ', (size_t) indent);
s_indent[indent] = '\0';
- if (df)
+ if (df && (flags & TDF_DETAILS))
{
df_dump_top (bb, outf);
putc ('\n', outf);
@@ -1757,9 +1858,15 @@ rtl_dump_bb (basic_block bb, FILE *outf, int indent, int flags ATTRIBUTE_UNUSED)
if (bb->index != ENTRY_BLOCK && bb->index != EXIT_BLOCK)
for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); insn != last;
insn = NEXT_INSN (insn))
- print_rtl_single (outf, insn);
+ {
+ if (! (flags & TDF_SLIM))
+ print_rtl_single (outf, insn);
+ else
+ dump_insn_slim (outf, insn);
- if (df)
+ }
+
+ if (df && (flags & TDF_DETAILS))
{
df_dump_bottom (bb, outf);
putc ('\n', outf);
@@ -1767,11 +1874,12 @@ rtl_dump_bb (basic_block bb, FILE *outf, int indent, int flags ATTRIBUTE_UNUSED)
}
-/* Like print_rtl, but also print out live information for the start of each
- basic block. */
+/* Like dump_function_to_file, but for RTL. Print out dataflow information
+ for the start of each basic block. FLAGS are the TDF_* masks documented
+ in dumpfile.h. */
void
-print_rtl_with_bb (FILE *outf, const_rtx rtx_first)
+print_rtl_with_bb (FILE *outf, const_rtx rtx_first, int flags)
{
const_rtx tmp_rtx;
if (rtx_first == 0)
@@ -1783,53 +1891,75 @@ print_rtl_with_bb (FILE *outf, const_rtx rtx_first)
basic_block *start = XCNEWVEC (basic_block, max_uid);
basic_block *end = XCNEWVEC (basic_block, max_uid);
enum bb_state *in_bb_p = XCNEWVEC (enum bb_state, max_uid);
-
basic_block bb;
+ /* After freeing the CFG, we still have BLOCK_FOR_INSN set on most
+ insns, but the CFG is not maintained so the basic block info
+ is not reliable. Therefore it's omitted from the dumps. */
+ if (! (cfun->curr_properties & PROP_cfg))
+ flags &= ~TDF_BLOCKS;
+
if (df)
df_dump_start (outf);
- FOR_EACH_BB_REVERSE (bb)
+ if (flags & TDF_BLOCKS)
{
- rtx x;
-
- start[INSN_UID (BB_HEAD (bb))] = bb;
- end[INSN_UID (BB_END (bb))] = bb;
- for (x = BB_HEAD (bb); x != NULL_RTX; x = NEXT_INSN (x))
+ FOR_EACH_BB_REVERSE (bb)
{
- enum bb_state state = IN_MULTIPLE_BB;
+ rtx x;
- if (in_bb_p[INSN_UID (x)] == NOT_IN_BB)
- state = IN_ONE_BB;
- in_bb_p[INSN_UID (x)] = state;
+ start[INSN_UID (BB_HEAD (bb))] = bb;
+ end[INSN_UID (BB_END (bb))] = bb;
+ for (x = BB_HEAD (bb); x != NULL_RTX; x = NEXT_INSN (x))
+ {
+ enum bb_state state = IN_MULTIPLE_BB;
- if (x == BB_END (bb))
- break;
+ if (in_bb_p[INSN_UID (x)] == NOT_IN_BB)
+ state = IN_ONE_BB;
+ in_bb_p[INSN_UID (x)] = state;
+
+ if (x == BB_END (bb))
+ break;
+ }
}
}
for (tmp_rtx = rtx_first; NULL != tmp_rtx; tmp_rtx = NEXT_INSN (tmp_rtx))
{
- int did_output;
-
- bb = start[INSN_UID (tmp_rtx)];
- if (bb != NULL)
- dump_bb_info (bb, true, false, dump_flags, ";; ", outf);
-
- if (in_bb_p[INSN_UID (tmp_rtx)] == NOT_IN_BB
- && !NOTE_P (tmp_rtx)
- && !BARRIER_P (tmp_rtx))
- fprintf (outf, ";; Insn is not within a basic block\n");
- else if (in_bb_p[INSN_UID (tmp_rtx)] == IN_MULTIPLE_BB)
- fprintf (outf, ";; Insn is in multiple basic blocks\n");
-
- did_output = print_rtl_single (outf, tmp_rtx);
-
- bb = end[INSN_UID (tmp_rtx)];
- if (bb != NULL)
- dump_bb_info (bb, false, true, dump_flags, ";; ", outf);
- if (did_output)
- putc ('\n', outf);
+ if (flags & TDF_BLOCKS)
+ {
+ bb = start[INSN_UID (tmp_rtx)];
+ if (bb != NULL)
+ {
+ dump_bb_info (outf, bb, 0, dump_flags | TDF_COMMENT, true, false);
+ if (df && (flags & TDF_DETAILS))
+ df_dump_top (bb, outf);
+ }
+
+ if (in_bb_p[INSN_UID (tmp_rtx)] == NOT_IN_BB
+ && !NOTE_P (tmp_rtx)
+ && !BARRIER_P (tmp_rtx))
+ fprintf (outf, ";; Insn is not within a basic block\n");
+ else if (in_bb_p[INSN_UID (tmp_rtx)] == IN_MULTIPLE_BB)
+ fprintf (outf, ";; Insn is in multiple basic blocks\n");
+ }
+
+ if (! (flags & TDF_SLIM))
+ print_rtl_single (outf, tmp_rtx);
+ else
+ dump_insn_slim (outf, tmp_rtx);
+
+ if (flags & TDF_BLOCKS)
+ {
+ bb = end[INSN_UID (tmp_rtx)];
+ if (bb != NULL)
+ {
+ dump_bb_info (outf, bb, 0, dump_flags | TDF_COMMENT, false, true);
+ if (df && (flags & TDF_DETAILS))
+ df_dump_bottom (bb, outf);
+ putc ('\n', outf);
+ }
+ }
}
free (start);
@@ -1846,6 +1976,8 @@ print_rtl_with_bb (FILE *outf, const_rtx rtx_first)
}
}
+/* Update the branch probability of BB if a REG_BR_PROB is present. */
+
void
update_br_prob_note (basic_block bb)
{
@@ -2893,7 +3025,13 @@ struct rtl_opt_pass pass_outof_cfg_layout_mode =
some transformations while in cfglayout mode. The required sequence
of the basic blocks is in a linked list along the bb->aux field.
This functions re-links the basic block prev_bb and next_bb pointers
- accordingly, and it compacts and renumbers the blocks. */
+ accordingly, and it compacts and renumbers the blocks.
+
+ FIXME: This currently works only for RTL, but the only RTL-specific
+ bits are the STAY_IN_CFGLAYOUT_MODE bits. The tracer pass was moved
+ to GIMPLE a long time ago, but it doesn't relink the basic block
+ chain. It could do that (to give better initial RTL) if this function
+ is made IR-agnostic (and moved to cfganal.c or cfg.c while at it). */
void
relink_block_chain (bool stay_in_cfglayout_mode)
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 217644df74a..c09d319e06f 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -41,7 +41,8 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "intl.h"
#include "gimple.h"
-#include "tree-dump.h"
+#include "timevar.h"
+#include "dumpfile.h"
#include "tree-flow.h"
#include "value-prof.h"
#include "except.h"
@@ -53,6 +54,9 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "gimple-pretty-print.h"
+/* FIXME: Only for PROP_loops, but cgraph shouldn't have to know about this. */
+#include "tree-pass.h"
+
static void cgraph_node_remove_callers (struct cgraph_node *node);
static inline void cgraph_edge_remove_caller (struct cgraph_edge *e);
static inline void cgraph_edge_remove_callee (struct cgraph_edge *e);
@@ -509,7 +513,7 @@ cgraph_node_for_asm (tree asmname)
return NULL;
}
-/* Returns a hash value for X (which really is a die_struct). */
+/* Returns a hash value for X (which really is a cgraph_edge). */
static hashval_t
edge_hash (const void *x)
@@ -517,7 +521,7 @@ edge_hash (const void *x)
return htab_hash_pointer (((const struct cgraph_edge *) x)->call_stmt);
}
-/* Return nonzero if decl_id of die_struct X is the same as UID of decl *Y. */
+/* Return nonzero if the call_stmt of of cgraph_edge X is stmt *Y. */
static int
edge_eq (const void *x, const void *y)
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 7b9098bad04..0d2ad41c43a 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -273,6 +273,10 @@ struct GTY(()) cgraph_node {
unsigned tm_clone : 1;
};
+DEF_VEC_P(symtab_node);
+DEF_VEC_ALLOC_P(symtab_node,heap);
+DEF_VEC_ALLOC_P(symtab_node,gc);
+
typedef struct cgraph_node *cgraph_node_ptr;
DEF_VEC_P(cgraph_node_ptr);
@@ -338,9 +342,11 @@ typedef enum cgraph_inline_failed_enum {
struct GTY(()) cgraph_indirect_call_info
{
- /* Offset accumulated from ancestor jump functions of inlined call graph
- edges. */
- HOST_WIDE_INT anc_offset;
+ /* When polymorphic is set, this field contains offset where the object which
+ was actually used in the polymorphic resides within a larger structure.
+ If agg_contents is set, the field contains the offset within the aggregate
+ from which the address to call was loaded. */
+ HOST_WIDE_INT offset;
/* OBJ_TYPE_REF_TOKEN of a polymorphic call (if polymorphic is set). */
HOST_WIDE_INT otr_token;
/* Type of the object from OBJ_TYPE_REF_OBJECT. */
@@ -353,6 +359,12 @@ struct GTY(()) cgraph_indirect_call_info
/* Set when the call is a virtual call with the parameter being the
associated object pointer rather than a simple direct call. */
unsigned polymorphic : 1;
+ /* Set when the call is a call of a pointer loaded from contents of an
+ aggregate at offset. */
+ unsigned agg_contents : 1;
+ /* When the previous bit is set, this one determines whether the destination
+ is loaded from a parameter passed by reference. */
+ unsigned by_ref : 1;
};
struct GTY((chain_next ("%h.next_caller"), chain_prev ("%h.prev_caller"))) cgraph_edge {
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 1a32328c46e..730e70b08e0 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -82,15 +82,12 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "cgraph.h"
#include "diagnostic.h"
-#include "timevar.h"
#include "params.h"
-#include "fibheap.h"
#include "intl.h"
#include "function.h"
#include "ipa-prop.h"
#include "gimple.h"
#include "tree-iterator.h"
-#include "tree-pass.h"
#include "tree-dump.h"
#include "gimple-pretty-print.h"
#include "coverage.h"
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index e47008f969c..2dd0871e736 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -34,7 +34,7 @@ along with GCC; see the file COPYING3. If not see
(There is one exception needed for implementing GCC extern inline
function.)
- - varpool_finalize_variable
+ - varpool_finalize_decl
This function has same behavior as the above but is used for static
variables.
@@ -176,7 +176,6 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "cgraph.h"
#include "diagnostic.h"
-#include "timevar.h"
#include "params.h"
#include "fibheap.h"
#include "intl.h"
@@ -1229,8 +1228,7 @@ init_lowered_empty_function (tree decl)
DECL_SAVED_TREE (decl) = error_mark_node;
cfun->curr_properties |=
- (PROP_gimple_lcf | PROP_gimple_leh | PROP_cfg | PROP_referenced_vars |
- PROP_ssa | PROP_gimple_any);
+ (PROP_gimple_lcf | PROP_gimple_leh | PROP_cfg | PROP_ssa | PROP_gimple_any);
/* Create BB for body of the function and connect it properly. */
bb = create_basic_block (NULL, (void *) 0, ENTRY_BLOCK_PTR);
@@ -1282,7 +1280,7 @@ thunk_adjust (gimple_stmt_iterator * bsi,
}
vtabletmp =
- make_rename_temp (build_pointer_type
+ create_tmp_reg (build_pointer_type
(build_pointer_type (vtable_entry_type)), "vptr");
/* The vptr is always at offset zero in the object. */
@@ -1292,7 +1290,7 @@ thunk_adjust (gimple_stmt_iterator * bsi,
gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
/* Form the vtable address. */
- vtabletmp2 = make_rename_temp (TREE_TYPE (TREE_TYPE (vtabletmp)),
+ vtabletmp2 = create_tmp_reg (TREE_TYPE (TREE_TYPE (vtabletmp)),
"vtableaddr");
stmt = gimple_build_assign (vtabletmp2,
build_simple_mem_ref (vtabletmp));
@@ -1306,7 +1304,7 @@ thunk_adjust (gimple_stmt_iterator * bsi,
gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
/* Get the offset itself. */
- vtabletmp3 = make_rename_temp (TREE_TYPE (TREE_TYPE (vtabletmp2)),
+ vtabletmp3 = create_tmp_reg (TREE_TYPE (TREE_TYPE (vtabletmp2)),
"vcalloffset");
stmt = gimple_build_assign (vtabletmp3,
build_simple_mem_ref (vtabletmp2));
@@ -1328,7 +1326,7 @@ thunk_adjust (gimple_stmt_iterator * bsi,
ptrtmp = ptr;
else
{
- ptrtmp = make_rename_temp (TREE_TYPE (ptr), "ptr");
+ ptrtmp = create_tmp_reg (TREE_TYPE (ptr), "ptr");
stmt = gimple_build_assign (ptrtmp, ptr);
gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
}
@@ -1337,7 +1335,7 @@ thunk_adjust (gimple_stmt_iterator * bsi,
}
/* Emit the statement and gimplify the adjustment expression. */
- ret = make_rename_temp (TREE_TYPE (ptr), "adjusted_this");
+ ret = create_tmp_reg (TREE_TYPE (ptr), "adjusted_this");
stmt = gimple_build_assign (ret, ptr);
gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
@@ -1383,6 +1381,10 @@ assemble_thunk (struct cgraph_node *node)
init_function_start (thunk_fndecl);
cfun->is_thunk = 1;
assemble_start_function (thunk_fndecl, fnname);
+ (*debug_hooks->source_line) (DECL_SOURCE_LINE (thunk_fndecl),
+ DECL_SOURCE_FILE (thunk_fndecl),
+ /* discriminator */ 0,
+ /* is_stmt */ 1);
targetm.asm_out.output_mi_thunk (asm_out_file, thunk_fndecl,
fixed_offset, virtual_value, alias);
@@ -1442,7 +1444,7 @@ assemble_thunk (struct cgraph_node *node)
BLOCK_VARS (DECL_INITIAL (current_function_decl)) = restmp;
}
else
- restmp = make_rename_temp (restype, "retval");
+ restmp = create_tmp_reg (restype, "retval");
}
for (arg = a; arg; arg = DECL_CHAIN (arg))
@@ -1455,16 +1457,8 @@ assemble_thunk (struct cgraph_node *node)
virtual_offset));
else
VEC_quick_push (tree, vargs, a);
- add_referenced_var (a);
- if (is_gimple_reg (a))
- mark_sym_for_renaming (a);
for (i = 1, arg = DECL_CHAIN (a); i < nargs; i++, arg = DECL_CHAIN (arg))
- {
- add_referenced_var (arg);
- if (is_gimple_reg (arg))
- mark_sym_for_renaming (arg);
- VEC_quick_push (tree, vargs, arg);
- }
+ VEC_quick_push (tree, vargs, arg);
call = gimple_build_call_vec (build_fold_addr_expr_loc (0, alias), vargs);
VEC_free (tree, heap, vargs);
gimple_call_set_from_thunk (call, true);
diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c
index 65e8f0444a7..ff660967566 100644
--- a/gcc/combine-stack-adj.c
+++ b/gcc/combine-stack-adj.c
@@ -57,7 +57,6 @@ along with GCC; see the file COPYING3. If not see
#include "df.h"
#include "except.h"
#include "reload.h"
-#include "timevar.h"
#include "tree-pass.h"
diff --git a/gcc/combine.c b/gcc/combine.c
index 70b80bca738..18b79623b1c 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -98,9 +98,9 @@ along with GCC; see the file COPYING3. If not see
#include "insn-codes.h"
#include "rtlhooks-def.h"
#include "params.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
+#include "valtrack.h"
#include "cgraph.h"
#include "obstack.h"
@@ -425,7 +425,6 @@ static const_rtx expand_field_assignment (const_rtx);
static rtx make_extraction (enum machine_mode, rtx, HOST_WIDE_INT,
rtx, unsigned HOST_WIDE_INT, int, int, int);
static rtx extract_left_shift (rtx, int);
-static rtx make_compound_operation (rtx, enum rtx_code);
static int get_pos_from_mask (unsigned HOST_WIDE_INT,
unsigned HOST_WIDE_INT *);
static rtx canon_reg_for_combine (rtx, rtx);
@@ -532,12 +531,10 @@ find_single_use_1 (rtx dest, rtx *loc)
switch (code)
{
- case CONST_INT:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CLOBBER:
return 0;
@@ -1588,7 +1585,7 @@ set_nonzero_bits_and_sign_copies (rtx x, const_rtx set, void *data)
(DF_LR_IN (ENTRY_BLOCK_PTR->next_bb), REGNO (x))
&& HWI_COMPUTABLE_MODE_P (GET_MODE (x)))
{
- reg_stat_type *rsp = VEC_index (reg_stat_type, reg_stat, REGNO (x));
+ reg_stat_type *rsp = &VEC_index (reg_stat_type, reg_stat, REGNO (x));
if (set == 0 || GET_CODE (set) == CLOBBER)
{
@@ -2358,161 +2355,6 @@ reg_subword_p (rtx x, rtx reg)
&& GET_MODE_CLASS (GET_MODE (x)) == MODE_INT;
}
-#ifdef AUTO_INC_DEC
-/* Replace auto-increment addressing modes with explicit operations to access
- the same addresses without modifying the corresponding registers. */
-
-static rtx
-cleanup_auto_inc_dec (rtx src, enum machine_mode mem_mode)
-{
- rtx x = src;
- const RTX_CODE code = GET_CODE (x);
- int i;
- const char *fmt;
-
- switch (code)
- {
- case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
- case SYMBOL_REF:
- case CODE_LABEL:
- case PC:
- case CC0:
- case SCRATCH:
- /* SCRATCH must be shared because they represent distinct values. */
- return x;
- case CLOBBER:
- if (REG_P (XEXP (x, 0)) && REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER)
- return x;
- break;
-
- case CONST:
- if (shared_const_p (x))
- return x;
- break;
-
- case MEM:
- mem_mode = GET_MODE (x);
- break;
-
- case PRE_INC:
- case PRE_DEC:
- gcc_assert (mem_mode != VOIDmode && mem_mode != BLKmode);
- return gen_rtx_PLUS (GET_MODE (x),
- cleanup_auto_inc_dec (XEXP (x, 0), mem_mode),
- GEN_INT (code == PRE_INC
- ? GET_MODE_SIZE (mem_mode)
- : -GET_MODE_SIZE (mem_mode)));
-
- case POST_INC:
- case POST_DEC:
- case PRE_MODIFY:
- case POST_MODIFY:
- return cleanup_auto_inc_dec (code == PRE_MODIFY
- ? XEXP (x, 1) : XEXP (x, 0),
- mem_mode);
-
- default:
- break;
- }
-
- /* Copy the various flags, fields, and other information. We assume
- that all fields need copying, and then clear the fields that should
- not be copied. That is the sensible default behavior, and forces
- us to explicitly document why we are *not* copying a flag. */
- x = shallow_copy_rtx (x);
-
- /* We do not copy the USED flag, which is used as a mark bit during
- walks over the RTL. */
- RTX_FLAG (x, used) = 0;
-
- /* We do not copy FRAME_RELATED for INSNs. */
- if (INSN_P (x))
- RTX_FLAG (x, frame_related) = 0;
-
- fmt = GET_RTX_FORMAT (code);
- for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
- if (fmt[i] == 'e')
- XEXP (x, i) = cleanup_auto_inc_dec (XEXP (x, i), mem_mode);
- else if (fmt[i] == 'E' || fmt[i] == 'V')
- {
- int j;
- XVEC (x, i) = rtvec_alloc (XVECLEN (x, i));
- for (j = 0; j < XVECLEN (x, i); j++)
- XVECEXP (x, i, j)
- = cleanup_auto_inc_dec (XVECEXP (src, i, j), mem_mode);
- }
-
- return x;
-}
-#endif
-
-/* Auxiliary data structure for propagate_for_debug_stmt. */
-
-struct rtx_subst_pair
-{
- rtx to;
- bool adjusted;
-};
-
-/* DATA points to an rtx_subst_pair. Return the value that should be
- substituted. */
-
-static rtx
-propagate_for_debug_subst (rtx from, const_rtx old_rtx, void *data)
-{
- struct rtx_subst_pair *pair = (struct rtx_subst_pair *)data;
-
- if (!rtx_equal_p (from, old_rtx))
- return NULL_RTX;
- if (!pair->adjusted)
- {
- pair->adjusted = true;
-#ifdef AUTO_INC_DEC
- pair->to = cleanup_auto_inc_dec (pair->to, VOIDmode);
-#else
- pair->to = copy_rtx (pair->to);
-#endif
- pair->to = make_compound_operation (pair->to, SET);
- return pair->to;
- }
- return copy_rtx (pair->to);
-}
-
-/* Replace all the occurrences of DEST with SRC in DEBUG_INSNs between INSN
- and LAST, not including INSN, but including LAST. Also stop at the end
- of THIS_BASIC_BLOCK. */
-
-static void
-propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src)
-{
- rtx next, loc, end = NEXT_INSN (BB_END (this_basic_block));
-
- struct rtx_subst_pair p;
- p.to = src;
- p.adjusted = false;
-
- next = NEXT_INSN (insn);
- last = NEXT_INSN (last);
- while (next != last && next != end)
- {
- insn = next;
- next = NEXT_INSN (insn);
- if (DEBUG_INSN_P (insn))
- {
- loc = simplify_replace_fn_rtx (INSN_VAR_LOCATION_LOC (insn),
- dest, propagate_for_debug_subst, &p);
- if (loc == INSN_VAR_LOCATION_LOC (insn))
- continue;
- INSN_VAR_LOCATION_LOC (insn) = loc;
- df_insn_rescan (insn);
- }
- }
-}
-
/* Delete the unconditional jump INSN and adjust the CFG correspondingly.
Note that the INSN should be deleted *after* removing dead edges, so
that the kept edge is the fallthrough edge for a (set (pc) (pc))
@@ -2776,10 +2618,10 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
if (i1 == 0
&& (temp = single_set (i2)) != 0
&& (CONST_INT_P (SET_SRC (temp))
- || GET_CODE (SET_SRC (temp)) == CONST_DOUBLE)
+ || CONST_DOUBLE_AS_INT_P (SET_SRC (temp)))
&& GET_CODE (PATTERN (i3)) == SET
&& (CONST_INT_P (SET_SRC (PATTERN (i3)))
- || GET_CODE (SET_SRC (PATTERN (i3))) == CONST_DOUBLE)
+ || CONST_DOUBLE_AS_INT_P (SET_SRC (PATTERN (i3))))
&& reg_subword_p (SET_DEST (PATTERN (i3)), SET_DEST (temp)))
{
rtx dest = SET_DEST (PATTERN (i3));
@@ -3791,21 +3633,21 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
&& ! (temp = SET_DEST (XVECEXP (newpat, 0, 1)),
(REG_P (temp)
&& VEC_index (reg_stat_type, reg_stat,
- REGNO (temp))->nonzero_bits != 0
+ REGNO (temp)).nonzero_bits != 0
&& GET_MODE_PRECISION (GET_MODE (temp)) < BITS_PER_WORD
&& GET_MODE_PRECISION (GET_MODE (temp)) < HOST_BITS_PER_INT
&& (VEC_index (reg_stat_type, reg_stat,
- REGNO (temp))->nonzero_bits
+ REGNO (temp)).nonzero_bits
!= GET_MODE_MASK (word_mode))))
&& ! (GET_CODE (SET_DEST (XVECEXP (newpat, 0, 1))) == SUBREG
&& (temp = SUBREG_REG (SET_DEST (XVECEXP (newpat, 0, 1))),
(REG_P (temp)
&& VEC_index (reg_stat_type, reg_stat,
- REGNO (temp))->nonzero_bits != 0
+ REGNO (temp)).nonzero_bits != 0
&& GET_MODE_PRECISION (GET_MODE (temp)) < BITS_PER_WORD
&& GET_MODE_PRECISION (GET_MODE (temp)) < HOST_BITS_PER_INT
&& (VEC_index (reg_stat_type, reg_stat,
- REGNO (temp))->nonzero_bits
+ REGNO (temp)).nonzero_bits
!= GET_MODE_MASK (word_mode)))))
&& ! reg_overlap_mentioned_p (SET_DEST (XVECEXP (newpat, 0, 1)),
SET_SRC (XVECEXP (newpat, 0, 1)))
@@ -3972,7 +3814,8 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
i2src while its original mode is temporarily
restored, and then clear i2scratch so that we don't
do it again later. */
- propagate_for_debug (i2, last_combined_insn, reg, i2src);
+ propagate_for_debug (i2, last_combined_insn, reg, i2src,
+ this_basic_block);
i2scratch = false;
/* Put back the new mode. */
adjust_reg_mode (reg, new_mode);
@@ -4006,10 +3849,12 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
with this copy we have created; then, replace the
copy with the SUBREG of the original shared reg,
once again changed to the new mode. */
- propagate_for_debug (first, last, reg, tempreg);
+ propagate_for_debug (first, last, reg, tempreg,
+ this_basic_block);
adjust_reg_mode (reg, new_mode);
propagate_for_debug (first, last, tempreg,
- lowpart_subreg (old_mode, reg, new_mode));
+ lowpart_subreg (old_mode, reg, new_mode),
+ this_basic_block);
}
}
}
@@ -4221,14 +4066,16 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
if (newi2pat)
{
if (MAY_HAVE_DEBUG_INSNS && i2scratch)
- propagate_for_debug (i2, last_combined_insn, i2dest, i2src);
+ propagate_for_debug (i2, last_combined_insn, i2dest, i2src,
+ this_basic_block);
INSN_CODE (i2) = i2_code_number;
PATTERN (i2) = newi2pat;
}
else
{
if (MAY_HAVE_DEBUG_INSNS && i2src)
- propagate_for_debug (i2, last_combined_insn, i2dest, i2src);
+ propagate_for_debug (i2, last_combined_insn, i2dest, i2src,
+ this_basic_block);
SET_INSN_DELETED (i2);
}
@@ -4237,7 +4084,8 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
LOG_LINKS (i1) = NULL;
REG_NOTES (i1) = 0;
if (MAY_HAVE_DEBUG_INSNS)
- propagate_for_debug (i1, last_combined_insn, i1dest, i1src);
+ propagate_for_debug (i1, last_combined_insn, i1dest, i1src,
+ this_basic_block);
SET_INSN_DELETED (i1);
}
@@ -4246,7 +4094,8 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
LOG_LINKS (i0) = NULL;
REG_NOTES (i0) = 0;
if (MAY_HAVE_DEBUG_INSNS)
- propagate_for_debug (i0, last_combined_insn, i0dest, i0src);
+ propagate_for_debug (i0, last_combined_insn, i0dest, i0src,
+ this_basic_block);
SET_INSN_DELETED (i0);
}
@@ -5254,8 +5103,7 @@ subst (rtx x, rtx from, rtx to, int in_dest, int in_cond, int unique_copy)
return new_rtx;
if (GET_CODE (x) == SUBREG
- && (CONST_INT_P (new_rtx)
- || GET_CODE (new_rtx) == CONST_DOUBLE))
+ && (CONST_INT_P (new_rtx) || CONST_DOUBLE_AS_INT_P (new_rtx)))
{
enum machine_mode mode = GET_MODE (x);
@@ -7283,8 +7131,7 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
if (mode == tmode)
return new_rtx;
- if (CONST_INT_P (new_rtx)
- || GET_CODE (new_rtx) == CONST_DOUBLE)
+ if (CONST_INT_P (new_rtx) || CONST_DOUBLE_AS_INT_P (new_rtx))
return simplify_unary_operation (unsignedp ? ZERO_EXTEND : SIGN_EXTEND,
mode, new_rtx, tmode);
@@ -7597,7 +7444,7 @@ extract_left_shift (rtx x, int count)
being kludges), it is MEM. When processing the arguments of a comparison
or a COMPARE against zero, it is COMPARE. */
-static rtx
+rtx
make_compound_operation (rtx x, enum rtx_code in_code)
{
enum rtx_code code = GET_CODE (x);
@@ -8433,6 +8280,7 @@ force_to_mode (rtx x, enum machine_mode mode, unsigned HOST_WIDE_INT mask,
in OP_MODE. */
if (CONST_INT_P (XEXP (x, 1))
+ && INTVAL (XEXP (x, 1)) >= 0
&& INTVAL (XEXP (x, 1)) < HOST_BITS_PER_WIDE_INT
&& HWI_COMPUTABLE_MODE_P (op_mode))
{
@@ -9575,7 +9423,7 @@ reg_nonzero_bits_for_combine (const_rtx x, enum machine_mode mode,
value. Otherwise, use the previously-computed global nonzero bits
for this register. */
- rsp = VEC_index (reg_stat_type, reg_stat, REGNO (x));
+ rsp = &VEC_index (reg_stat_type, reg_stat, REGNO (x));
if (rsp->last_set_value != 0
&& (rsp->last_set_mode == mode
|| (GET_MODE_CLASS (rsp->last_set_mode) == MODE_INT
@@ -9644,7 +9492,7 @@ reg_num_sign_bit_copies_for_combine (const_rtx x, enum machine_mode mode,
rtx tem;
reg_stat_type *rsp;
- rsp = VEC_index (reg_stat_type, reg_stat, REGNO (x));
+ rsp = &VEC_index (reg_stat_type, reg_stat, REGNO (x));
if (rsp->last_set_value != 0
&& rsp->last_set_mode == mode
&& ((rsp->last_set_label >= label_tick_ebb_start
@@ -10784,19 +10632,10 @@ gen_lowpart_for_combine (enum machine_mode omode, rtx x)
if (omode == imode)
return x;
- /* Return identity if this is a CONST or symbolic reference. */
- if (omode == Pmode
- && (GET_CODE (x) == CONST
- || GET_CODE (x) == SYMBOL_REF
- || GET_CODE (x) == LABEL_REF))
- return x;
-
/* We can only support MODE being wider than a word if X is a
constant integer or has a mode the same size. */
if (GET_MODE_SIZE (omode) > UNITS_PER_WORD
- && ! ((imode == VOIDmode
- && (CONST_INT_P (x)
- || GET_CODE (x) == CONST_DOUBLE))
+ && ! ((CONST_INT_P (x) || CONST_DOUBLE_AS_INT_P (x))
|| isize == osize))
goto fail;
@@ -12192,7 +12031,7 @@ update_table_tick (rtx x)
for (r = regno; r < endregno; r++)
{
- reg_stat_type *rsp = VEC_index (reg_stat_type, reg_stat, r);
+ reg_stat_type *rsp = &VEC_index (reg_stat_type, reg_stat, r);
rsp->last_set_table_tick = label_tick;
}
@@ -12294,7 +12133,7 @@ record_value_for_reg (rtx reg, rtx insn, rtx value)
register. */
for (i = regno; i < endregno; i++)
{
- rsp = VEC_index (reg_stat_type, reg_stat, i);
+ rsp = &VEC_index (reg_stat_type, reg_stat, i);
if (insn)
rsp->last_set = insn;
@@ -12320,7 +12159,7 @@ record_value_for_reg (rtx reg, rtx insn, rtx value)
for (i = regno; i < endregno; i++)
{
- rsp = VEC_index (reg_stat_type, reg_stat, i);
+ rsp = &VEC_index (reg_stat_type, reg_stat, i);
rsp->last_set_label = label_tick;
if (!insn
|| (value && rsp->last_set_table_tick >= label_tick_ebb_start))
@@ -12332,7 +12171,7 @@ record_value_for_reg (rtx reg, rtx insn, rtx value)
/* The value being assigned might refer to X (like in "x++;"). In that
case, we must replace it with (clobber (const_int 0)) to prevent
infinite loops. */
- rsp = VEC_index (reg_stat_type, reg_stat, regno);
+ rsp = &VEC_index (reg_stat_type, reg_stat, regno);
if (value && !get_last_value_validate (&value, insn, label_tick, 0))
{
value = copy_rtx (value);
@@ -12430,7 +12269,7 @@ record_dead_and_set_regs (rtx insn)
{
reg_stat_type *rsp;
- rsp = VEC_index (reg_stat_type, reg_stat, i);
+ rsp = &VEC_index (reg_stat_type, reg_stat, i);
rsp->last_death = insn;
}
}
@@ -12445,7 +12284,7 @@ record_dead_and_set_regs (rtx insn)
{
reg_stat_type *rsp;
- rsp = VEC_index (reg_stat_type, reg_stat, i);
+ rsp = &VEC_index (reg_stat_type, reg_stat, i);
rsp->last_set_invalid = 1;
rsp->last_set = insn;
rsp->last_set_value = 0;
@@ -12503,7 +12342,7 @@ record_promoted_value (rtx insn, rtx subreg)
continue;
}
- rsp = VEC_index (reg_stat_type, reg_stat, regno);
+ rsp = &VEC_index (reg_stat_type, reg_stat, regno);
if (rsp->last_set == insn)
{
if (SUBREG_PROMOTED_UNSIGNED_P (subreg) > 0)
@@ -12528,7 +12367,7 @@ record_promoted_value (rtx insn, rtx subreg)
static bool
reg_truncated_to_mode (enum machine_mode mode, const_rtx x)
{
- reg_stat_type *rsp = VEC_index (reg_stat_type, reg_stat, REGNO (x));
+ reg_stat_type *rsp = &VEC_index (reg_stat_type, reg_stat, REGNO (x));
enum machine_mode truncated = rsp->truncated_to_mode;
if (truncated == 0
@@ -12573,7 +12412,7 @@ record_truncated_value (rtx *p, void *data ATTRIBUTE_UNUSED)
else
return 0;
- rsp = VEC_index (reg_stat_type, reg_stat, REGNO (x));
+ rsp = &VEC_index (reg_stat_type, reg_stat, REGNO (x));
if (rsp->truncated_to_mode == 0
|| rsp->truncation_label < label_tick_ebb_start
|| (GET_MODE_SIZE (truncated_mode)
@@ -12652,7 +12491,7 @@ get_last_value_validate (rtx *loc, rtx insn, int tick, int replace)
for (j = regno; j < endregno; j++)
{
- reg_stat_type *rsp = VEC_index (reg_stat_type, reg_stat, j);
+ reg_stat_type *rsp = &VEC_index (reg_stat_type, reg_stat, j);
if (rsp->last_set_invalid
/* If this is a pseudo-register that was only set once and not
live at the beginning of the function, it is always valid. */
@@ -12756,7 +12595,7 @@ get_last_value (const_rtx x)
return 0;
regno = REGNO (x);
- rsp = VEC_index (reg_stat_type, reg_stat, regno);
+ rsp = &VEC_index (reg_stat_type, reg_stat, regno);
value = rsp->last_set_value;
/* If we don't have a value, or if it isn't for this basic block and
@@ -12820,7 +12659,7 @@ use_crosses_set_p (const_rtx x, int from_luid)
#endif
for (; regno < endreg; regno++)
{
- reg_stat_type *rsp = VEC_index (reg_stat_type, reg_stat, regno);
+ reg_stat_type *rsp = &VEC_index (reg_stat_type, reg_stat, regno);
if (rsp->last_set
&& rsp->last_set_label == label_tick
&& DF_INSN_LUID (rsp->last_set) > from_luid)
@@ -12947,10 +12786,8 @@ mark_used_regs_combine (rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case PC:
case ADDR_VEC:
case ADDR_DIFF_VEC:
@@ -13068,7 +12905,7 @@ move_deaths (rtx x, rtx maybe_kill_insn, int from_luid, rtx to_insn,
if (code == REG)
{
unsigned int regno = REGNO (x);
- rtx where_dead = VEC_index (reg_stat_type, reg_stat, regno)->last_death;
+ rtx where_dead = VEC_index (reg_stat_type, reg_stat, regno).last_death;
/* Don't move the register if it gets killed in between from and to. */
if (maybe_kill_insn && reg_set_p (x, maybe_kill_insn)
@@ -13683,7 +13520,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
if (place && REG_NOTE_KIND (note) == REG_DEAD)
{
unsigned int regno = REGNO (XEXP (note, 0));
- reg_stat_type *rsp = VEC_index (reg_stat_type, reg_stat, regno);
+ reg_stat_type *rsp = &VEC_index (reg_stat_type, reg_stat, regno);
if (dead_or_set_p (place, XEXP (note, 0))
|| reg_bitfield_target_p (XEXP (note, 0), PATTERN (place)))
diff --git a/gcc/common.opt b/gcc/common.opt
index 0c90c09e7cf..894236dd80f 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1366,6 +1366,10 @@ floop-flatten
Common Ignore
Does nothing. Preserved for backward compatibility.
+floop-nest-optimize
+Common Report Var(flag_loop_optimize_isl) Optimization
+Enable the ISL based loop nest optimizer
+
fstrict-volatile-bitfields
Common Report Var(flag_strict_volatile_bitfields) Init(-1)
Force bitfield accesses to match their type width
@@ -1390,6 +1394,22 @@ fif-conversion2
Common Report Var(flag_if_conversion2) Optimization
Perform conversion of conditional jumps to conditional execution
+fstack-reuse=
+Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL)
+-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
+
+Enum
+Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
+
+EnumValue
+Enum(stack_reuse_level) String(all) Value(SR_ALL)
+
+EnumValue
+Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
+
+EnumValue
+Enum(stack_reuse_level) String(none) Value(SR_NONE)
+
ftree-loop-if-convert
Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
Convert conditional jumps in innermost loops to branchless equivalents
@@ -1476,9 +1496,8 @@ Common Report Var(flag_ipa_reference) Init(0) Optimization
Discover readonly and non addressable static variables
fipa-matrix-reorg
-Common Report Var(flag_ipa_matrix_reorg) Optimization
-Perform matrix layout flattening and transposing based
-on profiling information.
+Common Ignore
+Does nothing. Preserved for backward compatibility.
fipa-struct-reorg
Common Ignore
@@ -2207,6 +2226,10 @@ ftree-sink
Common Report Var(flag_tree_sink) Optimization
Enable SSA code sinking on trees
+ftree-slsr
+Common Report Var(flag_tree_slsr) Optimization
+Perform straight-line strength reduction
+
ftree-sra
Common Report Var(flag_tree_sra) Optimization
Perform scalar replacement of aggregates
diff --git a/gcc/common/config/arm/arm-common.c b/gcc/common/config/arm/arm-common.c
index b8348bfb9f2..d17b60ed5a8 100644
--- a/gcc/common/config/arm/arm-common.c
+++ b/gcc/common/config/arm/arm-common.c
@@ -35,6 +35,7 @@ static const struct default_options arm_option_optimization_table[] =
/* Enable section anchors by default at -O1 or higher. */
{ OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 },
+ { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 },
{ OPT_LEVELS_NONE, 0, NULL, 0 }
};
diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c
index 70b7eb792f6..e05cd562f44 100644
--- a/gcc/common/config/i386/i386-common.c
+++ b/gcc/common/config/i386/i386-common.c
@@ -55,6 +55,9 @@ along with GCC; see the file COPYING3. If not see
#define OPTION_MASK_ISA_AVX2_SET \
(OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX_SET)
#define OPTION_MASK_ISA_RTM_SET OPTION_MASK_ISA_RTM
+#define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW
+#define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED
+#define OPTION_MASK_ISA_ADX_SET OPTION_MASK_ISA_ADX
/* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
as -msse4.2. */
@@ -123,6 +126,9 @@ along with GCC; see the file COPYING3. If not see
#define OPTION_MASK_ISA_FMA_UNSET OPTION_MASK_ISA_FMA
#define OPTION_MASK_ISA_AVX2_UNSET OPTION_MASK_ISA_AVX2
#define OPTION_MASK_ISA_RTM_UNSET OPTION_MASK_ISA_RTM
+#define OPTION_MASK_ISA_PRFCHW_UNSET OPTION_MASK_ISA_PRFCHW
+#define OPTION_MASK_ISA_RDSEED_UNSET OPTION_MASK_ISA_RDSEED
+#define OPTION_MASK_ISA_ADX_UNSET OPTION_MASK_ISA_ADX
/* SSE4 includes both SSE4.1 and SSE4.2. -mno-sse4 should the same
as -mno-sse4.1. */
@@ -568,6 +574,45 @@ ix86_handle_option (struct gcc_options *opts,
}
return true;
+ case OPT_mrdseed:
+ if (value)
+ {
+ opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RDSEED_SET;
+ opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDSEED_SET;
+ }
+ else
+ {
+ opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_RDSEED_UNSET;
+ opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDSEED_UNSET;
+ }
+ return true;
+
+ case OPT_mprfchw:
+ if (value)
+ {
+ opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PRFCHW_SET;
+ opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PRFCHW_SET;
+ }
+ else
+ {
+ opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PRFCHW_UNSET;
+ opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PRFCHW_UNSET;
+ }
+ return true;
+
+ case OPT_madx:
+ if (value)
+ {
+ opts->x_ix86_isa_flags |= OPTION_MASK_ISA_ADX_SET;
+ opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ADX_SET;
+ }
+ else
+ {
+ opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_ADX_UNSET;
+ opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ADX_UNSET;
+ }
+ return true;
+
/* Comes from final.c -- no real reason to change it. */
#define MAX_CODE_ALIGN 16
@@ -667,6 +712,30 @@ ix86_supports_split_stack (bool report ATTRIBUTE_UNUSED,
return ret;
}
+/* Implement TARGET_EXCEPT_UNWIND_INFO. */
+
+static enum unwind_info_type
+i386_except_unwind_info (struct gcc_options *opts)
+{
+ /* Honor the --enable-sjlj-exceptions configure switch. */
+#ifdef CONFIG_SJLJ_EXCEPTIONS
+ if (CONFIG_SJLJ_EXCEPTIONS)
+ return UI_SJLJ;
+#endif
+
+ /* On windows 64, prefer SEH exceptions over anything else. */
+ if (TARGET_64BIT && DEFAULT_ABI == MS_ABI && opts->x_flag_unwind_tables)
+ return UI_SEH;
+
+ if (DWARF2_UNWIND_INFO)
+ return UI_DWARF2;
+
+ return UI_SJLJ;
+}
+
+#undef TARGET_EXCEPT_UNWIND_INFO
+#define TARGET_EXCEPT_UNWIND_INFO i386_except_unwind_info
+
#undef TARGET_DEFAULT_TARGET_FLAGS
#define TARGET_DEFAULT_TARGET_FLAGS \
(TARGET_DEFAULT \
diff --git a/gcc/common/config/rs6000/rs6000-common.c b/gcc/common/config/rs6000/rs6000-common.c
index f40b69e3676..c903ba3983d 100644
--- a/gcc/common/config/rs6000/rs6000-common.c
+++ b/gcc/common/config/rs6000/rs6000-common.c
@@ -1,7 +1,5 @@
/* Common hooks for IBM RS/6000.
- Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1991-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -83,18 +81,6 @@ rs6000_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
switch (code)
{
- case OPT_mno_power:
- opts->x_target_flags &= ~(MASK_POWER | MASK_POWER2
- | MASK_MULTIPLE | MASK_STRING);
- opts_set->x_target_flags |= (MASK_POWER | MASK_POWER2
- | MASK_MULTIPLE | MASK_STRING);
- break;
- case OPT_mno_powerpc:
- opts->x_target_flags &= ~(MASK_POWERPC | MASK_PPC_GPOPT
- | MASK_PPC_GFXOPT | MASK_POWERPC64);
- opts_set->x_target_flags |= (MASK_POWERPC | MASK_PPC_GPOPT
- | MASK_PPC_GFXOPT | MASK_POWERPC64);
- break;
case OPT_mfull_toc:
opts->x_target_flags &= ~MASK_MINIMAL_TOC;
opts->x_TARGET_NO_FP_IN_TOC = 0;
@@ -121,9 +107,9 @@ rs6000_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
#else
case OPT_m64:
#endif
- opts->x_target_flags |= MASK_POWERPC64 | MASK_POWERPC;
+ opts->x_target_flags |= MASK_POWERPC64;
opts->x_target_flags |= ~opts_set->x_target_flags & MASK_PPC_GFXOPT;
- opts_set->x_target_flags |= MASK_POWERPC64 | MASK_POWERPC;
+ opts_set->x_target_flags |= MASK_POWERPC64;
break;
#ifdef TARGET_USES_AIX64_OPT
@@ -143,31 +129,8 @@ rs6000_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
}
break;
- case OPT_mpower:
- if (value == 1)
- {
- opts->x_target_flags |= (MASK_MULTIPLE | MASK_STRING);
- opts_set->x_target_flags |= (MASK_MULTIPLE | MASK_STRING);
- }
- break;
-
- case OPT_mpower2:
- if (value == 1)
- {
- opts->x_target_flags |= (MASK_POWER | MASK_MULTIPLE | MASK_STRING);
- opts_set->x_target_flags |= (MASK_POWER
- | MASK_MULTIPLE
- | MASK_STRING);
- }
- break;
-
case OPT_mpowerpc_gpopt:
case OPT_mpowerpc_gfxopt:
- if (value == 1)
- {
- opts->x_target_flags |= MASK_POWERPC;
- opts_set->x_target_flags |= MASK_POWERPC;
- }
break;
case OPT_mdebug_:
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 40d513f9d25..9ec8a412033 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -361,7 +361,7 @@ i[34567]86-*-*)
ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h
- xtestintrin.h"
+ xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h"
;;
x86_64-*-*)
cpu_type=i386
@@ -375,7 +375,7 @@ x86_64-*-*)
ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
lzcntintrin.h bmiintrin.h tbmintrin.h bmi2intrin.h
avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h
- xtestintrin.h"
+ xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h"
need_64bit_hwint=yes
;;
ia64-*-*)
@@ -1214,7 +1214,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
need_64bit_isa=yes
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver2|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1223,7 +1223,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver2 bdver1 btver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver2 bdver1 btver2 btver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -1335,7 +1335,7 @@ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
tmake_file="$tmake_file i386/t-sol2-64"
need_64bit_isa=yes
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver2|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1344,7 +1344,7 @@ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver2 bdver1 btver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver2 bdver1 btver2 btver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -1401,7 +1401,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
if test x$enable_targets = xall; then
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver2|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1410,7 +1410,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 corei7 Xcorei7-avx nocona x86-64 bdver2 bdver1 btver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 Xcorei7-avx nocona x86-64 bdver2 bdver1 btver2 btver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -2096,12 +2096,14 @@ rx-*-elf*)
tmake_file="${tmake_file} rx/t-rx"
;;
s390-*-linux*)
+ default_gnu_indirect_function=yes
tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
if test x$enable_targets = xall; then
tmake_file="${tmake_file} s390/t-linux64"
fi
;;
s390x-*-linux*)
+ default_gnu_indirect_function=yes
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
tm_p_file=s390/s390-protos.h
md_file=s390/s390.md
@@ -2438,6 +2440,7 @@ tilegx-*-linux*)
extra_objs="mul-tables.o"
c_target_objs="tilegx-c.o"
cxx_target_objs="tilegx-c.o"
+ extra_headers="feedback.h"
;;
tilepro-*-linux*)
tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}"
@@ -2445,6 +2448,17 @@ tilepro-*-linux*)
extra_objs="mul-tables.o"
c_target_objs="tilepro-c.o"
cxx_target_objs="tilepro-c.o"
+ extra_headers="feedback.h"
+ ;;
+v850-*-rtems*)
+ target_cpu_default="TARGET_CPU_generic"
+ tm_file="dbxelf.h elfos.h v850/v850.h"
+ tm_file="${tm_file} rtems.h v850/rtems.h newlib-stdint.h"
+ tmake_file="${tmake_file} v850/t-v850"
+ tmake_file="${tmake_file} t-rtems v850/t-rtems"
+ use_collect2=no
+ c_target_objs="v850-c.o"
+ cxx_target_objs="v850-c.o"
;;
v850*-*-*)
case ${target} in
@@ -2628,6 +2642,10 @@ case ${target} in
arch=btver1
cpu=btver1
;;
+ btver2-*)
+ arch=btver2
+ cpu=btver2
+ ;;
amdfam10-*|barcelona-*)
arch=amdfam10
cpu=amdfam10
@@ -2725,6 +2743,10 @@ case ${target} in
arch=btver1
cpu=btver1
;;
+ btver2-*)
+ arch=btver2
+ cpu=btver2
+ ;;
amdfam10-*|barcelona-*)
arch=amdfam10
cpu=amdfam10
@@ -3159,7 +3181,7 @@ case "${target}" in
;;
"" | x86-64 | generic | native \
| k8 | k8-sse3 | athlon64 | athlon64-sse3 | opteron \
- | opteron-sse3 | athlon-fx | bdver2 | bdver1 | btver1 \
+ | opteron-sse3 | athlon-fx | bdver2 | bdver1 | btver2 | btver1 \
| amdfam10 | barcelona | nocona | core2 | corei7 \
| corei7-avx | core-avx-i | core-avx2 | atom)
# OK
diff --git a/gcc/config.in b/gcc/config.in
index 7b12b4bd3c7..7fe6485c3af 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -45,12 +45,6 @@
#endif
-/* Define if building with C++. */
-#ifndef USED_FOR_TARGET
-#undef ENABLE_BUILD_WITH_CXX
-#endif
-
-
/* Define if you want more run-time sanity checks. This one gets a grab bag of
miscellaneous but relatively cheap checks. */
#ifndef USED_FOR_TARGET
@@ -627,6 +621,12 @@
#endif
+/* Define to 1 if we found a declaration for 'ffs', otherwise define to 0. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_DECL_FFS
+#endif
+
+
/* Define to 1 if we found a declaration for 'fgetc_unlocked', otherwise
define to 0. */
#ifndef USED_FOR_TARGET
@@ -1266,6 +1266,12 @@
#endif
+/* Define to 1 if you have the <libintl.h> header file. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_LIBINTL_H
+#endif
+
+
/* Define to 1 if you have the <limits.h> header file. */
#ifndef USED_FOR_TARGET
#undef HAVE_LIMITS_H
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 5617ea313de..0aab4539b50 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -1038,6 +1038,16 @@ alpha_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
return new_x ? new_x : x;
}
+/* Return true if ADDR has an effect that depends on the machine mode it
+ is used for. On the Alpha this is true only for the unaligned modes.
+ We can simplify the test since we know that the address must be valid. */
+
+static bool
+alpha_mode_dependent_address_p (const_rtx addr)
+{
+ return GET_CODE (addr) == AND;
+}
+
/* Primarily this is required for TLS symbols, but given that our move
patterns *ought* to be able to handle any symbol at any time, we
should never be spilling symbolic operands to the constant pool, ever. */
@@ -5932,7 +5942,7 @@ alpha_stdarg_optimize_hook (struct stdarg_info *si, const_gimple stmt)
base = get_base_address (base);
if (TREE_CODE (base) != VAR_DECL
- || !bitmap_bit_p (si->va_list_vars, DECL_UID (base)))
+ || !bitmap_bit_p (si->va_list_vars, DECL_UID (base) + num_ssa_names))
return false;
offset = gimple_op (stmt, 1 + offset_arg);
@@ -9248,17 +9258,18 @@ alpha_align_insns (unsigned int max_align,
}
}
-/* Insert an unop between a noreturn function call and GP load. */
+/* Insert an unop between sibcall or noreturn function call and GP load. */
static void
-alpha_pad_noreturn (void)
+alpha_pad_function_end (void)
{
rtx insn, next;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
{
if (! (CALL_P (insn)
- && find_reg_note (insn, REG_NORETURN, NULL_RTX)))
+ && (SIBLING_CALL_P (insn)
+ || find_reg_note (insn, REG_NORETURN, NULL_RTX))))
continue;
/* Make sure we do not split a call and its corresponding
@@ -9290,8 +9301,28 @@ alpha_pad_noreturn (void)
static void
alpha_reorg (void)
{
- /* Workaround for a linker error that triggers when an
- exception handler immediatelly follows a noreturn function.
+ /* Workaround for a linker error that triggers when an exception
+ handler immediatelly follows a sibcall or a noreturn function.
+
+In the sibcall case:
+
+ The instruction stream from an object file:
+
+ 1d8: 00 00 fb 6b jmp (t12)
+ 1dc: 00 00 ba 27 ldah gp,0(ra)
+ 1e0: 00 00 bd 23 lda gp,0(gp)
+ 1e4: 00 00 7d a7 ldq t12,0(gp)
+ 1e8: 00 40 5b 6b jsr ra,(t12),1ec <__funcZ+0x1ec>
+
+ was converted in the final link pass to:
+
+ 12003aa88: 67 fa ff c3 br 120039428 <...>
+ 12003aa8c: 00 00 fe 2f unop
+ 12003aa90: 00 00 fe 2f unop
+ 12003aa94: 48 83 7d a7 ldq t12,-31928(gp)
+ 12003aa98: 00 40 5b 6b jsr ra,(t12),12003aa9c <__func+0x1ec>
+
+And in the noreturn case:
The instruction stream from an object file:
@@ -9311,11 +9342,11 @@ alpha_reorg (void)
GP load instructions were wrongly cleared by the linker relaxation
pass. This workaround prevents removal of GP loads by inserting
- an unop instruction between a noreturn function call and
+ an unop instruction between a sibcall or noreturn function call and
exception handler prologue. */
if (current_function_has_exception_handlers ())
- alpha_pad_noreturn ();
+ alpha_pad_function_end ();
if (alpha_tp != ALPHA_TP_PROG || flag_exceptions)
alpha_handle_trap_shadows ();
@@ -9709,6 +9740,8 @@ alpha_conditional_register_usage (void)
#undef TARGET_LEGITIMIZE_ADDRESS
#define TARGET_LEGITIMIZE_ADDRESS alpha_legitimize_address
+#undef TARGET_MODE_DEPENDENT_ADDRESS_P
+#define TARGET_MODE_DEPENDENT_ADDRESS_P alpha_mode_dependent_address_p
#undef TARGET_ASM_FILE_START
#define TARGET_ASM_FILE_START alpha_file_start
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 8520ea82f45..cdb7c49b007 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -851,13 +851,6 @@ do { \
} \
} while (0)
-/* Go to LABEL if ADDR (a legitimate address expression)
- has an effect that depends on the machine mode it is used for.
- On the Alpha this is true only for the unaligned modes. We can
- simplify this test since we know that the address must be valid. */
-
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL) \
-{ if (GET_CODE (ADDR) == AND) goto LABEL; }
/* Specify the machine mode that this machine uses
for the index in the tablejump instruction. */
diff --git a/gcc/config/arm/aout.h b/gcc/config/arm/aout.h
index c60adb9a329..0be3de3f006 100644
--- a/gcc/config/arm/aout.h
+++ b/gcc/config/arm/aout.h
@@ -51,30 +51,24 @@
(each of which is overlaid on two S registers), although there are no
actual single-precision registers which correspond to D16-D31. */
#ifndef REGISTER_NAMES
-#define REGISTER_NAMES \
-{ \
- "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \
- "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc", \
- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
- "cc", "sfp", "afp", \
- "mv0", "mv1", "mv2", "mv3", \
- "mv4", "mv5", "mv6", "mv7", \
- "mv8", "mv9", "mv10", "mv11", \
- "mv12", "mv13", "mv14", "mv15", \
- "wcgr0", "wcgr1", "wcgr2", "wcgr3", \
- "wr0", "wr1", "wr2", "wr3", \
- "wr4", "wr5", "wr6", "wr7", \
- "wr8", "wr9", "wr10", "wr11", \
- "wr12", "wr13", "wr14", "wr15", \
- "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", \
- "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \
- "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \
- "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31", \
- "d16", "?16", "d17", "?17", "d18", "?18", "d19", "?19", \
- "d20", "?20", "d21", "?21", "d22", "?22", "d23", "?23", \
- "d24", "?24", "d25", "?25", "d26", "?26", "d27", "?27", \
- "d28", "?28", "d29", "?29", "d30", "?30", "d31", "?31", \
- "vfpcc" \
+#define REGISTER_NAMES \
+{ \
+ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \
+ "r8", "r9", "r10", "fp", "ip", "sp", "lr", "pc", \
+ "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", \
+ "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \
+ "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \
+ "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31", \
+ "d16", "?16", "d17", "?17", "d18", "?18", "d19", "?19", \
+ "d20", "?20", "d21", "?21", "d22", "?22", "d23", "?23", \
+ "d24", "?24", "d25", "?25", "d26", "?26", "d27", "?27", \
+ "d28", "?28", "d29", "?29", "d30", "?30", "d31", "?31", \
+ "wr0", "wr1", "wr2", "wr3", \
+ "wr4", "wr5", "wr6", "wr7", \
+ "wr8", "wr9", "wr10", "wr11", \
+ "wr12", "wr13", "wr14", "wr15", \
+ "wcgr0", "wcgr1", "wcgr2", "wcgr3", \
+ "cc", "vfpcc", "sfp", "afp" \
}
#endif
@@ -91,117 +85,53 @@
{"v4", 7}, \
{"v5", 8}, \
{"v6", 9}, \
- {"rfp", 9}, /* Gcc used to call it this */ \
- {"sb", 9}, \
+ {"rfp", 9}, /* Historical. */ \
+ {"sb", 9}, /* Historical. */ \
{"v7", 10}, \
- {"r10", 10}, /* sl */ \
+ {"sl", 10}, /* Historical. */ \
{"r11", 11}, /* fp */ \
{"r12", 12}, /* ip */ \
{"r13", 13}, /* sp */ \
{"r14", 14}, /* lr */ \
- {"r15", 15}, /* pc */ \
- {"mvf0", 27}, \
- {"mvf1", 28}, \
- {"mvf2", 29}, \
- {"mvf3", 30}, \
- {"mvf4", 31}, \
- {"mvf5", 32}, \
- {"mvf6", 33}, \
- {"mvf7", 34}, \
- {"mvf8", 35}, \
- {"mvf9", 36}, \
- {"mvf10", 37}, \
- {"mvf11", 38}, \
- {"mvf12", 39}, \
- {"mvf13", 40}, \
- {"mvf14", 41}, \
- {"mvf15", 42}, \
- {"mvd0", 27}, \
- {"mvd1", 28}, \
- {"mvd2", 29}, \
- {"mvd3", 30}, \
- {"mvd4", 31}, \
- {"mvd5", 32}, \
- {"mvd6", 33}, \
- {"mvd7", 34}, \
- {"mvd8", 35}, \
- {"mvd9", 36}, \
- {"mvd10", 37}, \
- {"mvd11", 38}, \
- {"mvd12", 39}, \
- {"mvd13", 40}, \
- {"mvd14", 41}, \
- {"mvd15", 42}, \
- {"mvfx0", 27}, \
- {"mvfx1", 28}, \
- {"mvfx2", 29}, \
- {"mvfx3", 30}, \
- {"mvfx4", 31}, \
- {"mvfx5", 32}, \
- {"mvfx6", 33}, \
- {"mvfx7", 34}, \
- {"mvfx8", 35}, \
- {"mvfx9", 36}, \
- {"mvfx10", 37}, \
- {"mvfx11", 38}, \
- {"mvfx12", 39}, \
- {"mvfx13", 40}, \
- {"mvfx14", 41}, \
- {"mvfx15", 42}, \
- {"mvdx0", 27}, \
- {"mvdx1", 28}, \
- {"mvdx2", 29}, \
- {"mvdx3", 30}, \
- {"mvdx4", 31}, \
- {"mvdx5", 32}, \
- {"mvdx6", 33}, \
- {"mvdx7", 34}, \
- {"mvdx8", 35}, \
- {"mvdx9", 36}, \
- {"mvdx10", 37}, \
- {"mvdx11", 38}, \
- {"mvdx12", 39}, \
- {"mvdx13", 40}, \
- {"mvdx14", 41}, \
- {"mvdx15", 42} \
+ {"r15", 15} /* pc */ \
}
#endif
#ifndef OVERLAPPING_REGISTER_NAMES
#define OVERLAPPING_REGISTER_NAMES \
{ \
- {"d0", 63, 2}, \
- {"d1", 65, 2}, \
- {"d2", 67, 2}, \
- {"d3", 69, 2}, \
- {"d4", 71, 2}, \
- {"d5", 73, 2}, \
- {"d6", 75, 2}, \
- {"d7", 77, 2}, \
- {"d8", 79, 2}, \
- {"d9", 81, 2}, \
- {"d10", 83, 2}, \
- {"d11", 85, 2}, \
- {"d12", 87, 2}, \
- {"d13", 89, 2}, \
- {"d14", 91, 2}, \
- {"d15", 93, 2}, \
- {"q0", 63, 4}, \
- {"q1", 67, 4}, \
- {"q2", 71, 4}, \
- {"q3", 75, 4}, \
- {"q4", 79, 4}, \
- {"q5", 83, 4}, \
- {"q6", 87, 4}, \
- {"q7", 91, 4}, \
- {"q8", 95, 4}, \
- {"q9", 99, 4}, \
- {"q10", 103, 4}, \
- {"q11", 107, 4}, \
- {"q12", 111, 4}, \
- {"q13", 115, 4}, \
- {"q14", 119, 4}, \
- {"q15", 123, 4} \
+ {"d0", FIRST_VFP_REGNUM + 0, 2}, \
+ {"d1", FIRST_VFP_REGNUM + 2, 2}, \
+ {"d2", FIRST_VFP_REGNUM + 4, 2}, \
+ {"d3", FIRST_VFP_REGNUM + 6, 2}, \
+ {"d4", FIRST_VFP_REGNUM + 8, 2}, \
+ {"d5", FIRST_VFP_REGNUM + 10, 2}, \
+ {"d6", FIRST_VFP_REGNUM + 12, 2}, \
+ {"d7", FIRST_VFP_REGNUM + 14, 2}, \
+ {"d8", FIRST_VFP_REGNUM + 16, 2}, \
+ {"d9", FIRST_VFP_REGNUM + 18, 2}, \
+ {"d10", FIRST_VFP_REGNUM + 20, 2}, \
+ {"d11", FIRST_VFP_REGNUM + 22, 2}, \
+ {"d12", FIRST_VFP_REGNUM + 24, 2}, \
+ {"d13", FIRST_VFP_REGNUM + 26, 2}, \
+ {"d14", FIRST_VFP_REGNUM + 28, 2}, \
+ {"d15", FIRST_VFP_REGNUM + 30, 2}, \
+ {"q0", FIRST_VFP_REGNUM + 0, 4}, \
+ {"q1", FIRST_VFP_REGNUM + 4, 4}, \
+ {"q2", FIRST_VFP_REGNUM + 8, 4}, \
+ {"q3", FIRST_VFP_REGNUM + 12, 4}, \
+ {"q4", FIRST_VFP_REGNUM + 16, 4}, \
+ {"q5", FIRST_VFP_REGNUM + 20, 4}, \
+ {"q6", FIRST_VFP_REGNUM + 24, 4}, \
+ {"q7", FIRST_VFP_REGNUM + 28, 4}, \
+ {"q8", FIRST_VFP_REGNUM + 32, 4}, \
+ {"q9", FIRST_VFP_REGNUM + 36, 4}, \
+ {"q10", FIRST_VFP_REGNUM + 40, 4}, \
+ {"q11", FIRST_VFP_REGNUM + 44, 4}, \
+ {"q12", FIRST_VFP_REGNUM + 48, 4}, \
+ {"q13", FIRST_VFP_REGNUM + 52, 4}, \
+ {"q14", FIRST_VFP_REGNUM + 56, 4}, \
+ {"q15", FIRST_VFP_REGNUM + 60, 4} \
}
#endif
diff --git a/gcc/config/arm/arm-arches.def b/gcc/config/arm/arm-arches.def
index fc62e51e268..f83639df83b 100644
--- a/gcc/config/arm/arm-arches.def
+++ b/gcc/config/arm/arm-arches.def
@@ -55,6 +55,5 @@ ARM_ARCH("armv7-a", cortexa8, 7A, FL_CO_PROC | FL_FOR_ARCH7A)
ARM_ARCH("armv7-r", cortexr4, 7R, FL_CO_PROC | FL_FOR_ARCH7R)
ARM_ARCH("armv7-m", cortexm3, 7M, FL_CO_PROC | FL_FOR_ARCH7M)
ARM_ARCH("armv7e-m", cortexm4, 7EM, FL_CO_PROC | FL_FOR_ARCH7EM)
-ARM_ARCH("ep9312", ep9312, 4T, FL_LDSCHED | FL_CIRRUS | FL_FOR_ARCH4)
ARM_ARCH("iwmmxt", iwmmxt, 5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT)
ARM_ARCH("iwmmxt2", iwmmxt2, 5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2)
diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def
index 140777109ee..9eb42628693 100644
--- a/gcc/config/arm/arm-cores.def
+++ b/gcc/config/arm/arm-cores.def
@@ -89,7 +89,7 @@ ARM_CORE("arm920", arm920, 4T, FL_LDSCHED, fastm
ARM_CORE("arm920t", arm920t, 4T, FL_LDSCHED, fastmul)
ARM_CORE("arm922t", arm922t, 4T, FL_LDSCHED, fastmul)
ARM_CORE("arm940t", arm940t, 4T, FL_LDSCHED, fastmul)
-ARM_CORE("ep9312", ep9312, 4T, FL_LDSCHED | FL_CIRRUS, fastmul)
+ARM_CORE("ep9312", ep9312, 4T, FL_LDSCHED, fastmul)
/* V5T Architecture Processors */
ARM_CORE("arm10tdmi", arm10tdmi, 5T, FL_LDSCHED, fastmul)
@@ -129,7 +129,7 @@ ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, cortex_a5)
ARM_CORE("cortex-a7", cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex)
ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, cortex)
ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, cortex_a9)
-ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex)
+ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15)
ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, cortex)
ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, cortex)
ARM_CORE("cortex-r5", cortexr5, 7R, FL_LDSCHED | FL_ARM_DIV, cortex)
diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
index 3cc4adb8e37..c590ef420eb 100644
--- a/gcc/config/arm/arm-protos.h
+++ b/gcc/config/arm/arm-protos.h
@@ -67,7 +67,6 @@ extern int thumb1_legitimate_address_p (enum machine_mode, rtx, int);
extern bool ldm_stm_operation_p (rtx, bool, enum machine_mode mode,
bool, bool);
extern int arm_const_double_rtx (rtx);
-extern int neg_const_double_rtx_ok_for_fpa (rtx);
extern int vfp3_const_double_rtx (rtx);
extern int neon_immediate_valid_for_move (rtx, enum machine_mode, rtx *, int *);
extern int neon_immediate_valid_for_logic (rtx, enum machine_mode, int, rtx *,
@@ -95,7 +94,6 @@ extern enum reg_class coproc_secondary_reload_class (enum machine_mode, rtx,
bool);
extern bool arm_tls_referenced_p (rtx);
-extern int cirrus_memory_offset (rtx);
extern int arm_coproc_mem_operand (rtx, bool);
extern int neon_vector_mem_operand (rtx, int);
extern int neon_struct_mem_operand (rtx);
@@ -134,11 +132,7 @@ extern void arm_emit_call_insn (rtx, rtx);
extern const char *output_call (rtx *);
extern const char *output_call_mem (rtx *);
void arm_emit_movpair (rtx, rtx);
-extern const char *output_mov_long_double_fpa_from_arm (rtx *);
-extern const char *output_mov_long_double_arm_from_fpa (rtx *);
extern const char *output_mov_long_double_arm_from_arm (rtx *);
-extern const char *output_mov_double_fpa_from_arm (rtx *);
-extern const char *output_mov_double_arm_from_fpa (rtx *);
extern const char *output_move_double (rtx *, bool, int *count);
extern const char *output_move_quad (rtx *);
extern int arm_count_output_move_double_insns (rtx *);
@@ -179,8 +173,6 @@ extern int arm_apply_result_size (void);
#endif /* RTX_CODE */
-extern int arm_float_words_big_endian (void);
-
/* Thumb functions. */
extern void arm_init_expanders (void);
extern const char *thumb1_unexpanded_epilogue (void);
@@ -246,6 +238,8 @@ struct tune_params
int l1_cache_line_size;
bool prefer_constant_pool;
int (*branch_cost) (bool, bool);
+ /* Prefer STRD/LDRD instructions over PUSH/POP/LDM/STM. */
+ bool prefer_ldrd_strd;
};
extern const struct tune_params *current_tune;
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index acdfbe912cb..5f9369553e0 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -347,13 +347,10 @@ EnumValue
Enum(arm_arch) String(armv7e-m) Value(22)
EnumValue
-Enum(arm_arch) String(ep9312) Value(23)
+Enum(arm_arch) String(iwmmxt) Value(23)
EnumValue
-Enum(arm_arch) String(iwmmxt) Value(24)
-
-EnumValue
-Enum(arm_arch) String(iwmmxt2) Value(25)
+Enum(arm_arch) String(iwmmxt2) Value(24)
Enum
Name(arm_fpu) Type(int)
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 6472b6147cd..2805b7c7bf3 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -55,6 +55,7 @@
#include "libfuncs.h"
#include "params.h"
#include "opts.h"
+#include "dumpfile.h"
/* Forward definitions of types. */
typedef struct minipool_node Mnode;
@@ -86,7 +87,6 @@ inline static int thumb1_index_register_rtx_p (rtx, int);
static bool arm_legitimate_address_p (enum machine_mode, rtx, bool);
static int thumb_far_jump_used_p (void);
static bool thumb_force_lr_save (void);
-static rtx emit_sfm (int, int);
static unsigned arm_size_return_regs (void);
static bool arm_assemble_integer (rtx, unsigned int, int);
static void arm_print_operand (FILE *, rtx, int);
@@ -236,6 +236,7 @@ static int arm_issue_rate (void);
static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
static bool arm_output_addr_const_extra (FILE *, rtx);
static bool arm_allocate_stack_slots_for_args (void);
+static bool arm_warn_func_return (tree);
static const char *arm_invalid_parameter_type (const_tree t);
static const char *arm_invalid_return_type (const_tree t);
static tree arm_promoted_type (const_tree t);
@@ -254,6 +255,7 @@ static bool arm_array_mode_supported_p (enum machine_mode,
unsigned HOST_WIDE_INT);
static enum machine_mode arm_preferred_simd_mode (enum machine_mode);
static bool arm_class_likely_spilled_p (reg_class_t);
+static HOST_WIDE_INT arm_vector_alignment (const_tree type);
static bool arm_vector_alignment_reachable (const_tree type, bool is_packed);
static bool arm_builtin_support_vector_misalignment (enum machine_mode mode,
const_tree type,
@@ -458,6 +460,9 @@ static const struct attribute_spec arm_attribute_table[] =
#undef TARGET_TRAMPOLINE_ADJUST_ADDRESS
#define TARGET_TRAMPOLINE_ADJUST_ADDRESS arm_trampoline_adjust_address
+#undef TARGET_WARN_FUNC_RETURN
+#define TARGET_WARN_FUNC_RETURN arm_warn_func_return
+
#undef TARGET_DEFAULT_SHORT_ENUMS
#define TARGET_DEFAULT_SHORT_ENUMS arm_default_short_enums
@@ -602,6 +607,9 @@ static const struct attribute_spec arm_attribute_table[] =
#undef TARGET_CLASS_LIKELY_SPILLED_P
#define TARGET_CLASS_LIKELY_SPILLED_P arm_class_likely_spilled_p
+#undef TARGET_VECTOR_ALIGNMENT
+#define TARGET_VECTOR_ALIGNMENT arm_vector_alignment
+
#undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
#define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE \
arm_vector_alignment_reachable
@@ -661,7 +669,7 @@ static int thumb_call_reg_needed;
#define FL_STRONG (1 << 8) /* StrongARM */
#define FL_ARCH5E (1 << 9) /* DSP extensions to v5 */
#define FL_XSCALE (1 << 10) /* XScale */
-#define FL_CIRRUS (1 << 11) /* Cirrus/DSP. */
+/* spare (1 << 11) */
#define FL_ARCH6 (1 << 12) /* Architecture rel 6. Adds
media instructions. */
#define FL_VFPV2 (1 << 13) /* Vector Floating Point V2. */
@@ -760,9 +768,6 @@ int arm_ld_sched = 0;
/* Nonzero if this chip is a StrongARM. */
int arm_tune_strongarm = 0;
-/* Nonzero if this chip is a Cirrus variant. */
-int arm_arch_cirrus = 0;
-
/* Nonzero if this chip supports Intel Wireless MMX technology. */
int arm_arch_iwmmxt = 0;
@@ -878,7 +883,8 @@ const struct tune_params arm_slowmul_tune =
5, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
true, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
const struct tune_params arm_fastmul_tune =
@@ -889,7 +895,8 @@ const struct tune_params arm_fastmul_tune =
5, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
true, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
/* StrongARM has early execution of branches, so a sequence that is worth
@@ -903,7 +910,8 @@ const struct tune_params arm_strongarm_tune =
3, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
true, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
const struct tune_params arm_xscale_tune =
@@ -914,7 +922,8 @@ const struct tune_params arm_xscale_tune =
3, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
true, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
const struct tune_params arm_9e_tune =
@@ -925,7 +934,8 @@ const struct tune_params arm_9e_tune =
5, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
true, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
const struct tune_params arm_v6t2_tune =
@@ -936,7 +946,8 @@ const struct tune_params arm_v6t2_tune =
5, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
false, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
/* Generic Cortex tuning. Use more specific tunings if appropriate. */
@@ -948,7 +959,20 @@ const struct tune_params arm_cortex_tune =
5, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
false, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
+};
+
+const struct tune_params arm_cortex_a15_tune =
+{
+ arm_9e_rtx_costs,
+ NULL,
+ 1, /* Constant limit. */
+ 5, /* Max cond insns. */
+ ARM_PREFETCH_NOT_BENEFICIAL,
+ false, /* Prefer constant pool. */
+ arm_default_branch_cost,
+ true /* Prefer LDRD/STRD. */
};
/* Branches can be dual-issued on Cortex-A5, so conditional execution is
@@ -962,7 +986,8 @@ const struct tune_params arm_cortex_a5_tune =
1, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
false, /* Prefer constant pool. */
- arm_cortex_a5_branch_cost
+ arm_cortex_a5_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
const struct tune_params arm_cortex_a9_tune =
@@ -973,7 +998,8 @@ const struct tune_params arm_cortex_a9_tune =
5, /* Max cond insns. */
ARM_PREFETCH_BENEFICIAL(4,32,32),
false, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
const struct tune_params arm_fa726te_tune =
@@ -984,7 +1010,8 @@ const struct tune_params arm_fa726te_tune =
5, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
true, /* Prefer constant pool. */
- arm_default_branch_cost
+ arm_default_branch_cost,
+ false /* Prefer LDRD/STRD. */
};
@@ -1714,7 +1741,6 @@ arm_option_override (void)
arm_arch7em = (insn_flags & FL_ARCH7EM) != 0;
arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0;
arm_arch_xscale = (insn_flags & FL_XSCALE) != 0;
- arm_arch_cirrus = (insn_flags & FL_CIRRUS) != 0;
arm_ld_sched = (tune_flags & FL_LDSCHED) != 0;
arm_tune_strongarm = (tune_flags & FL_STRONG) != 0;
@@ -1774,10 +1800,7 @@ arm_option_override (void)
#ifdef FPUTYPE_DEFAULT
target_fpu_name = FPUTYPE_DEFAULT;
#else
- if (arm_arch_cirrus)
- target_fpu_name = "maverick";
- else
- target_fpu_name = "fpe2";
+ target_fpu_name = "vfp";
#endif
ok = opt_enum_arg_to_value (OPT_mfpu_, target_fpu_name, &arm_fpu_index,
@@ -1789,19 +1812,6 @@ arm_option_override (void)
switch (arm_fpu_desc->model)
{
- case ARM_FP_MODEL_FPA:
- if (arm_fpu_desc->rev == 2)
- arm_fpu_attr = FPU_FPE2;
- else if (arm_fpu_desc->rev == 3)
- arm_fpu_attr = FPU_FPE3;
- else
- arm_fpu_attr = FPU_FPA;
- break;
-
- case ARM_FP_MODEL_MAVERICK:
- arm_fpu_attr = FPU_MAVERICK;
- break;
-
case ARM_FP_MODEL_VFP:
arm_fpu_attr = FPU_VFP;
break;
@@ -1810,10 +1820,6 @@ arm_option_override (void)
gcc_unreachable();
}
- if (TARGET_AAPCS_BASED
- && (arm_fpu_desc->model == ARM_FP_MODEL_FPA))
- error ("FPA is unsupported in the AAPCS");
-
if (TARGET_AAPCS_BASED)
{
if (TARGET_CALLER_INTERWORKING)
@@ -1823,11 +1829,6 @@ arm_option_override (void)
error ("AAPCS does not support -mcallee-super-interworking");
}
- /* FPA and iWMMXt are incompatible because the insn encodings overlap.
- VFP and iWMMXt however can coexist. */
- if (TARGET_IWMMXT && TARGET_HARD_FLOAT && !TARGET_VFP)
- error ("iWMMXt and non-VFP floating point unit are incompatible");
-
/* iWMMXt and NEON are incompatible. */
if (TARGET_IWMMXT && TARGET_NEON)
error ("iWMMXt and NEON are incompatible");
@@ -1866,11 +1867,9 @@ arm_option_override (void)
arm_pcs_default = ARM_PCS_ATPCS;
}
- /* For arm2/3 there is no need to do any scheduling if there is only
- a floating point emulator, or we are doing software floating-point. */
- if ((TARGET_SOFT_FLOAT
- || (TARGET_FPA && arm_fpu_desc->rev))
- && (tune_flags & FL_MODE32) == 0)
+ /* For arm2/3 there is no need to do any scheduling if we are doing
+ software floating-point. */
+ if (TARGET_SOFT_FLOAT && (tune_flags & FL_MODE32) == 0)
flag_schedule_insns = flag_schedule_insns_after_reload = 0;
/* Use the cp15 method if it is available. */
@@ -2040,6 +2039,11 @@ arm_option_override (void)
global_options.x_param_values,
global_options_set.x_param_values);
+ /* Use the alternative scheduling-pressure algorithm by default. */
+ maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2,
+ global_options.x_param_values,
+ global_options_set.x_param_values);
+
/* Register global variables with the garbage collector. */
arm_add_gc_roots ();
}
@@ -2172,6 +2176,14 @@ arm_allocate_stack_slots_for_args (void)
return !IS_NAKED (arm_current_func_type ());
}
+static bool
+arm_warn_func_return (tree decl)
+{
+ /* Naked functions are implemented entirely in assembly, including the
+ return sequence, so suppress warnings about this. */
+ return lookup_attribute ("naked", DECL_ATTRIBUTES (decl)) == NULL_TREE;
+}
+
/* Output assembler code for a block containing the constant parts
of a trampoline, leaving space for the variable parts.
@@ -2362,14 +2374,8 @@ use_return_insn (int iscond, rtx sibling)
if (saved_int_regs && !(saved_int_regs & (1 << LR_REGNUM)))
return 0;
- /* Can't be done if any of the FPA regs are pushed,
+ /* Can't be done if any of the VFP regs are pushed,
since this also requires an insn. */
- if (TARGET_HARD_FLOAT && TARGET_FPA)
- for (regno = FIRST_FPA_REGNUM; regno <= LAST_FPA_REGNUM; regno++)
- if (df_regs_ever_live_p (regno) && !call_used_regs[regno])
- return 0;
-
- /* Likewise VFP regs. */
if (TARGET_HARD_FLOAT && TARGET_VFP)
for (regno = FIRST_VFP_REGNUM; regno <= LAST_VFP_REGNUM; regno++)
if (df_regs_ever_live_p (regno) && !call_used_regs[regno])
@@ -2976,6 +2982,31 @@ arm_gen_constant (enum rtx_code code, enum machine_mode mode, rtx cond,
return 1;
}
+ /* On targets with UXTH/UBFX, we can deal with AND (2^N)-1 in a single
+ insn. */
+ if (code == AND && (i = exact_log2 (remainder + 1)) > 0
+ && (arm_arch_thumb2 || (i == 16 && arm_arch6 && mode == SImode)))
+ {
+ if (generate)
+ {
+ if (mode == SImode && i == 16)
+ /* Use UXTH in preference to UBFX, since on Thumb2 it's a
+ smaller insn. */
+ emit_constant_insn (cond,
+ gen_zero_extendhisi2
+ (target, gen_lowpart (HImode, source)));
+ else
+ /* Extz only supports SImode, but we can coerce the operands
+ into that mode. */
+ emit_constant_insn (cond,
+ gen_extzv_t2 (gen_lowpart (SImode, target),
+ gen_lowpart (SImode, source),
+ GEN_INT (i), const0_rtx));
+ }
+
+ return 1;
+ }
+
/* Calculate a few attributes that may be useful for specific
optimizations. */
/* Count number of leading zeros. */
@@ -3494,11 +3525,6 @@ arm_canonicalize_comparison (enum rtx_code code, rtx *op0, rtx *op1)
{
rtx tem;
- /* To keep things simple, always use the Cirrus cfcmp64 if it is
- available. */
- if (TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK)
- return code;
-
if (code == GT || code == LE
|| (!TARGET_ARM && (code == GTU || code == LEU)))
{
@@ -3748,16 +3774,6 @@ arm_libcall_value_1 (enum machine_mode mode)
{
if (TARGET_AAPCS_BASED)
return aapcs_libcall_value (mode);
- else if (TARGET_32BIT
- && TARGET_HARD_FLOAT_ABI
- && TARGET_FPA
- && GET_MODE_CLASS (mode) == MODE_FLOAT)
- return gen_rtx_REG (mode, FIRST_FPA_REGNUM);
- else if (TARGET_32BIT
- && TARGET_HARD_FLOAT_ABI
- && TARGET_MAVERICK
- && GET_MODE_CLASS (mode) == MODE_FLOAT)
- return gen_rtx_REG (mode, FIRST_CIRRUS_FP_REGNUM);
else if (TARGET_IWMMXT_ABI
&& arm_vector_mode_supported_p (mode))
return gen_rtx_REG (mode, FIRST_IWMMXT_REGNUM);
@@ -3795,16 +3811,8 @@ arm_function_value_regno_p (const unsigned int regno)
&& TARGET_VFP
&& TARGET_HARD_FLOAT
&& regno == FIRST_VFP_REGNUM)
- || (TARGET_32BIT
- && TARGET_HARD_FLOAT_ABI
- && TARGET_MAVERICK
- && regno == FIRST_CIRRUS_FP_REGNUM)
|| (TARGET_IWMMXT_ABI
- && regno == FIRST_IWMMXT_REGNUM)
- || (TARGET_32BIT
- && TARGET_HARD_FLOAT_ABI
- && TARGET_FPA
- && regno == FIRST_FPA_REGNUM))
+ && regno == FIRST_IWMMXT_REGNUM))
return true;
return false;
@@ -3819,15 +3827,8 @@ arm_apply_result_size (void)
if (TARGET_32BIT)
{
- if (TARGET_HARD_FLOAT_ABI)
- {
- if (TARGET_VFP)
- size += 32;
- if (TARGET_FPA)
- size += 12;
- if (TARGET_MAVERICK)
- size += 8;
- }
+ if (TARGET_HARD_FLOAT_ABI && TARGET_VFP)
+ size += 32;
if (TARGET_IWMMXT_ABI)
size += 8;
}
@@ -3978,28 +3979,6 @@ arm_return_in_memory (const_tree type, const_tree fntype)
return true;
}
-/* Indicate whether or not words of a double are in big-endian order. */
-
-int
-arm_float_words_big_endian (void)
-{
- if (TARGET_MAVERICK)
- return 0;
-
- /* For FPA, float words are always big-endian. For VFP, floats words
- follow the memory system mode. */
-
- if (TARGET_FPA)
- {
- return 1;
- }
-
- if (TARGET_VFP)
- return (TARGET_BIG_END ? 1 : 0);
-
- return 1;
-}
-
const struct pcs_attribute_arg
{
const char *arg;
@@ -5879,9 +5858,8 @@ arm_legitimate_index_p (enum machine_mode mode, rtx index, RTX_CODE outer,
/* Standard coprocessor addressing modes. */
if (TARGET_HARD_FLOAT
- && (TARGET_VFP || TARGET_FPA || TARGET_MAVERICK)
- && (mode == SFmode || mode == DFmode
- || (TARGET_MAVERICK && mode == DImode)))
+ && TARGET_VFP
+ && (mode == SFmode || mode == DFmode))
return (code == CONST_INT && INTVAL (index) < 1024
&& INTVAL (index) > -1024
&& (INTVAL (index) & 3) == 0);
@@ -6000,9 +5978,8 @@ thumb2_legitimate_index_p (enum machine_mode mode, rtx index, int strict_p)
/* ??? Combine arm and thumb2 coprocessor addressing modes. */
/* Standard coprocessor addressing modes. */
if (TARGET_HARD_FLOAT
- && (TARGET_VFP || TARGET_FPA || TARGET_MAVERICK)
- && (mode == SFmode || mode == DFmode
- || (TARGET_MAVERICK && mode == DImode)))
+ && TARGET_VFP
+ && (mode == SFmode || mode == DFmode))
return (code == CONST_INT && INTVAL (index) < 1024
/* Thumb-2 allows only > -256 index range for it's core register
load/stores. Since we allow SF/DF in core registers, we have
@@ -6715,9 +6692,8 @@ arm_legitimize_reload_address (rtx *p,
/* Detect coprocessor load/stores. */
bool coproc_p = ((TARGET_HARD_FLOAT
- && (TARGET_VFP || TARGET_FPA || TARGET_MAVERICK)
- && (mode == SFmode || mode == DFmode
- || (mode == DImode && TARGET_MAVERICK)))
+ && TARGET_VFP
+ && (mode == SFmode || mode == DFmode))
|| (TARGET_REALLY_IWMMXT
&& VALID_IWMMXT_REG_MODE (mode))
|| (TARGET_NEON
@@ -7701,6 +7677,17 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed)
}
return true;
+ case CONST_VECTOR:
+ if (TARGET_NEON
+ && TARGET_HARD_FLOAT
+ && outer == SET
+ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
+ && neon_immediate_valid_for_move (x, mode, NULL, NULL))
+ *total = COSTS_N_INSNS (1);
+ else
+ *total = COSTS_N_INSNS (4);
+ return true;
+
default:
*total = COSTS_N_INSNS (4);
return false;
@@ -8041,6 +8028,17 @@ arm_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code,
*total = COSTS_N_INSNS (4);
return true;
+ case CONST_VECTOR:
+ if (TARGET_NEON
+ && TARGET_HARD_FLOAT
+ && outer_code == SET
+ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
+ && neon_immediate_valid_for_move (x, mode, NULL, NULL))
+ *total = COSTS_N_INSNS (1);
+ else
+ *total = COSTS_N_INSNS (4);
+ return true;
+
case HIGH:
case LO_SUM:
/* We prefer constant pool entries to MOVW/MOVT pairs, so bump the
@@ -8573,7 +8571,6 @@ fa726te_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost)
/* Implement TARGET_REGISTER_MOVE_COST.
- Moves between FPA_REGS and GENERAL_REGS are two memory insns.
Moves between VFP_REGS and GENERAL_REGS are a single insn, but
it is typically more expensive than a single memory access. We set
the cost to less than two memory accesses so that floating
@@ -8585,20 +8582,14 @@ arm_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED,
{
if (TARGET_32BIT)
{
- if ((from == FPA_REGS && to != FPA_REGS)
- || (from != FPA_REGS && to == FPA_REGS))
- return 20;
- else if ((IS_VFP_CLASS (from) && !IS_VFP_CLASS (to))
- || (!IS_VFP_CLASS (from) && IS_VFP_CLASS (to)))
+ if ((IS_VFP_CLASS (from) && !IS_VFP_CLASS (to))
+ || (!IS_VFP_CLASS (from) && IS_VFP_CLASS (to)))
return 15;
else if ((from == IWMMXT_REGS && to != IWMMXT_REGS)
|| (from != IWMMXT_REGS && to == IWMMXT_REGS))
return 4;
else if (from == IWMMXT_GR_REGS || to == IWMMXT_GR_REGS)
return 20;
- else if ((from == CIRRUS_REGS && to != CIRRUS_REGS)
- || (from != CIRRUS_REGS && to == CIRRUS_REGS))
- return 20;
else
return 2;
}
@@ -8656,7 +8647,7 @@ arm_adjust_cost (rtx insn, rtx link, rtx dep, int cost)
return cost;
}
- /* XXX This is not strictly true for the FPA. */
+ /* XXX Is this strictly true? */
if (REG_NOTE_KIND (link) == REG_DEP_ANTI
|| REG_NOTE_KIND (link) == REG_DEP_OUTPUT)
return 0;
@@ -8868,11 +8859,14 @@ vfp3_const_double_rtx (rtx x)
vmov i64 17 aaaaaaaa bbbbbbbb cccccccc dddddddd
eeeeeeee ffffffff gggggggg hhhhhhhh
vmov f32 18 aBbbbbbc defgh000 00000000 00000000
+ vmov f32 19 00000000 00000000 00000000 00000000
For case 18, B = !b. Representable values are exactly those accepted by
vfp3_const_double_index, but are output as floating-point numbers rather
than indices.
+ For case 19, we will change it to vmov.i32 when assembling.
+
Variants 0-5 (inclusive) may also be used as immediates for the second
operand of VORR/VBIC instructions.
@@ -8929,7 +8923,7 @@ neon_valid_immediate (rtx op, enum machine_mode mode, int inverse,
rtx el0 = CONST_VECTOR_ELT (op, 0);
REAL_VALUE_TYPE r0;
- if (!vfp3_const_double_rtx (el0))
+ if (!vfp3_const_double_rtx (el0) && el0 != CONST0_RTX (GET_MODE (el0)))
return -1;
REAL_VALUE_FROM_CONST_DOUBLE (r0, el0);
@@ -8951,7 +8945,10 @@ neon_valid_immediate (rtx op, enum machine_mode mode, int inverse,
if (elementwidth)
*elementwidth = 0;
- return 18;
+ if (el0 == CONST0_RTX (GET_MODE (el0)))
+ return 19;
+ else
+ return 18;
}
/* Splat vector constant out into a byte vector. */
@@ -9505,43 +9502,6 @@ neon_element_bits (enum machine_mode mode)
/* Predicates for `match_operand' and `match_operator'. */
-/* Return nonzero if OP is a valid Cirrus memory address pattern. */
-int
-cirrus_memory_offset (rtx op)
-{
- /* Reject eliminable registers. */
- if (! (reload_in_progress || reload_completed)
- && ( reg_mentioned_p (frame_pointer_rtx, op)
- || reg_mentioned_p (arg_pointer_rtx, op)
- || reg_mentioned_p (virtual_incoming_args_rtx, op)
- || reg_mentioned_p (virtual_outgoing_args_rtx, op)
- || reg_mentioned_p (virtual_stack_dynamic_rtx, op)
- || reg_mentioned_p (virtual_stack_vars_rtx, op)))
- return 0;
-
- if (GET_CODE (op) == MEM)
- {
- rtx ind;
-
- ind = XEXP (op, 0);
-
- /* Match: (mem (reg)). */
- if (GET_CODE (ind) == REG)
- return 1;
-
- /* Match:
- (mem (plus (reg)
- (const))). */
- if (GET_CODE (ind) == PLUS
- && GET_CODE (XEXP (ind, 0)) == REG
- && REG_MODE_OK_FOR_BASE_P (XEXP (ind, 0), VOIDmode)
- && GET_CODE (XEXP (ind, 1)) == CONST_INT)
- return 1;
- }
-
- return 0;
-}
-
/* Return TRUE if OP is a valid coprocessor memory address pattern.
WB is true if full writeback address modes are allowed and is false
if limited writeback address modes (POST_INC and PRE_DEC) are
@@ -11641,8 +11601,6 @@ arm_select_cc_mode (enum rtx_code op, rtx x, rtx y)
case LE:
case GT:
case GE:
- if (TARGET_HARD_FLOAT && TARGET_MAVERICK)
- return CCFPmode;
return CCFPEmode;
default:
@@ -11747,11 +11705,6 @@ arm_select_cc_mode (enum rtx_code op, rtx x, rtx y)
if (GET_MODE (x) == DImode || GET_MODE (y) == DImode)
{
- /* To keep things simple, always use the Cirrus cfcmp64 if it is
- available. */
- if (TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK)
- return CCmode;
-
switch (op)
{
case EQ:
@@ -11819,7 +11772,6 @@ arm_gen_compare_reg (enum rtx_code code, rtx x, rtx y, rtx scratch)
cc_reg = gen_rtx_REG (mode, CC_REGNUM);
if (dimode_comparison
- && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)
&& mode != CC_CZmode)
{
rtx clobber, set;
@@ -13357,6 +13309,13 @@ thumb2_reorg (void)
switch (GET_CODE (src))
{
case PLUS:
+ /* Adding two registers and storing the result
+ in the first source is already a 16-bit
+ operation. */
+ if (rtx_equal_p (dst, op0)
+ && register_operand (op1, SImode))
+ break;
+
if (low_register_operand (op0, SImode))
{
/* ADDS <Rd>,<Rn>,<Rm> */
@@ -13504,6 +13463,13 @@ arm_reorg (void)
if (TARGET_THUMB2)
thumb2_reorg ();
+ /* Ensure all insns that must be split have been split at this point.
+ Otherwise, the pool placement code below may compute incorrect
+ insn lengths. Note that when optimizing, all insns have already
+ been split at this point. */
+ if (!optimize)
+ split_all_insns_noflow ();
+
minipool_fix_head = minipool_fix_tail = NULL;
/* The first insn must always be a note, or the code below won't
@@ -13962,47 +13928,6 @@ output_call_mem (rtx *operands)
}
-/* Output a move from arm registers to an fpa registers.
- OPERANDS[0] is an fpa register.
- OPERANDS[1] is the first registers of an arm register pair. */
-const char *
-output_mov_long_double_fpa_from_arm (rtx *operands)
-{
- int arm_reg0 = REGNO (operands[1]);
- rtx ops[3];
-
- gcc_assert (arm_reg0 != IP_REGNUM);
-
- ops[0] = gen_rtx_REG (SImode, arm_reg0);
- ops[1] = gen_rtx_REG (SImode, 1 + arm_reg0);
- ops[2] = gen_rtx_REG (SImode, 2 + arm_reg0);
-
- output_asm_insn ("stm%(fd%)\t%|sp!, {%0, %1, %2}", ops);
- output_asm_insn ("ldf%?e\t%0, [%|sp], #12", operands);
-
- return "";
-}
-
-/* Output a move from an fpa register to arm registers.
- OPERANDS[0] is the first registers of an arm register pair.
- OPERANDS[1] is an fpa register. */
-const char *
-output_mov_long_double_arm_from_fpa (rtx *operands)
-{
- int arm_reg0 = REGNO (operands[0]);
- rtx ops[3];
-
- gcc_assert (arm_reg0 != IP_REGNUM);
-
- ops[0] = gen_rtx_REG (SImode, arm_reg0);
- ops[1] = gen_rtx_REG (SImode, 1 + arm_reg0);
- ops[2] = gen_rtx_REG (SImode, 2 + arm_reg0);
-
- output_asm_insn ("stf%?e\t%1, [%|sp, #-12]!", operands);
- output_asm_insn ("ldm%(fd%)\t%|sp!, {%0, %1, %2}", ops);
- return "";
-}
-
/* Output a move from arm registers to arm registers of a long double
OPERANDS[0] is the destination.
OPERANDS[1] is the source. */
@@ -14055,42 +13980,6 @@ arm_emit_movpair (rtx dest, rtx src)
emit_set_insn (dest, gen_rtx_LO_SUM (SImode, dest, src));
}
-/* Output a move from arm registers to an fpa registers.
- OPERANDS[0] is an fpa register.
- OPERANDS[1] is the first registers of an arm register pair. */
-const char *
-output_mov_double_fpa_from_arm (rtx *operands)
-{
- int arm_reg0 = REGNO (operands[1]);
- rtx ops[2];
-
- gcc_assert (arm_reg0 != IP_REGNUM);
-
- ops[0] = gen_rtx_REG (SImode, arm_reg0);
- ops[1] = gen_rtx_REG (SImode, 1 + arm_reg0);
- output_asm_insn ("stm%(fd%)\t%|sp!, {%0, %1}", ops);
- output_asm_insn ("ldf%?d\t%0, [%|sp], #8", operands);
- return "";
-}
-
-/* Output a move from an fpa register to arm registers.
- OPERANDS[0] is the first registers of an arm register pair.
- OPERANDS[1] is an fpa register. */
-const char *
-output_mov_double_arm_from_fpa (rtx *operands)
-{
- int arm_reg0 = REGNO (operands[0]);
- rtx ops[2];
-
- gcc_assert (arm_reg0 != IP_REGNUM);
-
- ops[0] = gen_rtx_REG (SImode, arm_reg0);
- ops[1] = gen_rtx_REG (SImode, 1 + arm_reg0);
- output_asm_insn ("stf%?d\t%1, [%|sp, #-8]!", operands);
- output_asm_insn ("ldm%(fd%)\t%|sp!, {%0, %1}", ops);
- return "";
-}
-
/* Output a move between double words. It must be REG<-MEM
or MEM<-REG. */
const char *
@@ -16133,68 +16022,7 @@ arm_size_return_regs (void)
return GET_MODE_SIZE (mode);
}
-static rtx
-emit_sfm (int base_reg, int count)
-{
- rtx par;
- rtx dwarf;
- rtx tmp, reg;
- int i;
-
- par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count));
- dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (count + 1));
-
- reg = gen_rtx_REG (XFmode, base_reg++);
-
- XVECEXP (par, 0, 0)
- = gen_rtx_SET (VOIDmode,
- gen_frame_mem
- (BLKmode,
- gen_rtx_PRE_MODIFY (Pmode,
- stack_pointer_rtx,
- plus_constant
- (Pmode, stack_pointer_rtx,
- -12 * count))
- ),
- gen_rtx_UNSPEC (BLKmode,
- gen_rtvec (1, reg),
- UNSPEC_PUSH_MULT));
- tmp = gen_rtx_SET (VOIDmode,
- gen_frame_mem (XFmode, stack_pointer_rtx), reg);
- RTX_FRAME_RELATED_P (tmp) = 1;
- XVECEXP (dwarf, 0, 1) = tmp;
-
- for (i = 1; i < count; i++)
- {
- reg = gen_rtx_REG (XFmode, base_reg++);
- XVECEXP (par, 0, i) = gen_rtx_USE (VOIDmode, reg);
-
- tmp = gen_rtx_SET (VOIDmode,
- gen_frame_mem (XFmode,
- plus_constant (Pmode,
- stack_pointer_rtx,
- i * 12)),
- reg);
- RTX_FRAME_RELATED_P (tmp) = 1;
- XVECEXP (dwarf, 0, i + 1) = tmp;
- }
-
- tmp = gen_rtx_SET (VOIDmode,
- stack_pointer_rtx,
- plus_constant (Pmode, stack_pointer_rtx, -12 * count));
-
- RTX_FRAME_RELATED_P (tmp) = 1;
- XVECEXP (dwarf, 0, 0) = tmp;
-
- par = emit_insn (par);
- add_reg_note (par, REG_FRAME_RELATED_EXPR, dwarf);
-
- return par;
-}
-
-
/* Return true if the current function needs to save/restore LR. */
-
static bool
thumb_force_lr_save (void)
{
@@ -16207,7 +16035,6 @@ thumb_force_lr_save (void)
/* Return true if r3 is used by any of the tail call insns in the
current function. */
-
static bool
any_sibcall_uses_r3 (void)
{
@@ -16345,17 +16172,10 @@ arm_get_frame_offsets (void)
}
func_type = arm_current_func_type ();
- if (! IS_VOLATILE (func_type))
- {
- /* Space for saved FPA registers. */
- for (regno = FIRST_FPA_REGNUM; regno <= LAST_FPA_REGNUM; regno++)
- if (df_regs_ever_live_p (regno) && ! call_used_regs[regno])
- saved += 12;
-
- /* Space for saved VFP registers. */
- if (TARGET_HARD_FLOAT && TARGET_VFP)
- saved += arm_get_vfp_saved_size ();
- }
+ /* Space for saved VFP registers. */
+ if (! IS_VOLATILE (func_type)
+ && TARGET_HARD_FLOAT && TARGET_VFP)
+ saved += arm_get_vfp_saved_size ();
}
else /* TARGET_THUMB1 */
{
@@ -16406,7 +16226,11 @@ arm_get_frame_offsets (void)
else
for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++)
{
- if ((offsets->saved_regs_mask & (1 << i)) == 0)
+ /* Avoid fixed registers; they may be changed at
+ arbitrary times so it's unsafe to restore them
+ during the epilogue. */
+ if (!fixed_regs[i]
+ && (offsets->saved_regs_mask & (1 << i)) == 0)
{
reg = i;
break;
@@ -16551,55 +16375,6 @@ arm_save_coproc_regs(void)
saved_size += 8;
}
- /* Save any floating point call-saved registers used by this
- function. */
- if (TARGET_FPA_EMU2)
- {
- for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--)
- if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
- {
- insn = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx);
- insn = gen_rtx_MEM (XFmode, insn);
- insn = emit_set_insn (insn, gen_rtx_REG (XFmode, reg));
- RTX_FRAME_RELATED_P (insn) = 1;
- saved_size += 12;
- }
- }
- else
- {
- start_reg = LAST_FPA_REGNUM;
-
- for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--)
- {
- if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
- {
- if (start_reg - reg == 3)
- {
- insn = emit_sfm (reg, 4);
- RTX_FRAME_RELATED_P (insn) = 1;
- saved_size += 48;
- start_reg = reg - 1;
- }
- }
- else
- {
- if (start_reg != reg)
- {
- insn = emit_sfm (reg + 1, start_reg - reg);
- RTX_FRAME_RELATED_P (insn) = 1;
- saved_size += (start_reg - reg) * 12;
- }
- start_reg = reg - 1;
- }
- }
-
- if (start_reg != reg)
- {
- insn = emit_sfm (reg + 1, start_reg - reg);
- saved_size += (start_reg - reg) * 12;
- RTX_FRAME_RELATED_P (insn) = 1;
- }
- }
if (TARGET_HARD_FLOAT && TARGET_VFP)
{
start_reg = FIRST_VFP_REGNUM;
@@ -17156,16 +16931,6 @@ arm_print_operand (FILE *stream, rtx x, int code)
fprintf (stream, "%s", arithmetic_instr (x, 1));
return;
- /* Truncate Cirrus shift counts. */
- case 's':
- if (GET_CODE (x) == CONST_INT)
- {
- fprintf (stream, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) & 0x3f);
- return;
- }
- arm_print_operand (stream, x, 0);
- return;
-
case 'I':
fprintf (stream, "%s", arithmetic_instr (x, 0));
return;
@@ -17352,44 +17117,15 @@ arm_print_operand (FILE *stream, rtx x, int code)
stream);
return;
- /* Cirrus registers can be accessed in a variety of ways:
- single floating point (f)
- double floating point (d)
- 32bit integer (fx)
- 64bit integer (dx). */
- case 'W': /* Cirrus register in F mode. */
- case 'X': /* Cirrus register in D mode. */
- case 'Y': /* Cirrus register in FX mode. */
- case 'Z': /* Cirrus register in DX mode. */
- gcc_assert (GET_CODE (x) == REG
- && REGNO_REG_CLASS (REGNO (x)) == CIRRUS_REGS);
-
- fprintf (stream, "mv%s%s",
- code == 'W' ? "f"
- : code == 'X' ? "d"
- : code == 'Y' ? "fx" : "dx", reg_names[REGNO (x)] + 2);
-
- return;
-
- /* Print cirrus register in the mode specified by the register's mode. */
+ case 's':
case 'V':
- {
- int mode = GET_MODE (x);
-
- if (GET_CODE (x) != REG || REGNO_REG_CLASS (REGNO (x)) != CIRRUS_REGS)
- {
- output_operand_lossage ("invalid operand for code '%c'", code);
- return;
- }
-
- fprintf (stream, "mv%s%s",
- mode == DFmode ? "d"
- : mode == SImode ? "fx"
- : mode == DImode ? "dx"
- : "f", reg_names[REGNO (x)] + 2);
-
- return;
- }
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ /* Former Maverick support, removed after GCC-4.7. */
+ output_operand_lossage ("obsolete Maverick format code '%c'", code);
+ return;
case 'U':
if (GET_CODE (x) != REG
@@ -17732,7 +17468,7 @@ arm_print_operand_address (FILE *stream, rtx x)
int is_minus = GET_CODE (x) == MINUS;
if (GET_CODE (x) == REG)
- asm_fprintf (stream, "[%r, #0]", REGNO (x));
+ asm_fprintf (stream, "[%r]", REGNO (x));
else if (GET_CODE (x) == PLUS || is_minus)
{
rtx base = XEXP (x, 0);
@@ -18074,9 +17810,7 @@ maybe_get_arm_condition_code (rtx comparison)
case CCFPEmode:
case CCFPmode:
- /* These encodings assume that AC=1 in the FPA system control
- byte. This allows us to handle all cases except UNEQ and
- LTGT. */
+ /* We can handle all cases except UNEQ and LTGT. */
switch (comp_code)
{
case GE: return ARM_GE;
@@ -18576,15 +18310,6 @@ arm_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode)
start of an even numbered register pair. */
return (ARM_NUM_REGS (mode) < 2) || (regno < LAST_LO_REGNUM);
- if (TARGET_HARD_FLOAT && TARGET_MAVERICK
- && IS_CIRRUS_REGNUM (regno))
- /* We have outlawed SI values in Cirrus registers because they
- reside in the lower 32 bits, but SF values reside in the
- upper 32 bits. This causes gcc all sorts of grief. We can't
- even split the registers into pairs because Cirrus SI values
- get sign extended to 64bits-- aldyh. */
- return (GET_MODE_CLASS (mode) == MODE_FLOAT) || (mode == DImode);
-
if (TARGET_HARD_FLOAT && TARGET_VFP
&& IS_VFP_REGNUM (regno))
{
@@ -18634,12 +18359,7 @@ arm_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode)
/* We only allow integers in the fake hard registers. */
return GET_MODE_CLASS (mode) == MODE_INT;
- /* The only registers left are the FPA registers
- which we only allow to hold FP values. */
- return (TARGET_HARD_FLOAT && TARGET_FPA
- && GET_MODE_CLASS (mode) == MODE_FLOAT
- && regno >= FIRST_FPA_REGNUM
- && regno <= LAST_FPA_REGNUM);
+ return FALSE;
}
/* Implement MODES_TIEABLE_P. */
@@ -18693,9 +18413,6 @@ arm_regno_class (int regno)
if (regno == CC_REGNUM || regno == VFPCC_REGNUM)
return TARGET_THUMB2 ? CC_REG : NO_REGS;
- if (IS_CIRRUS_REGNUM (regno))
- return CIRRUS_REGS;
-
if (IS_VFP_REGNUM (regno))
{
if (regno <= D7_VFP_REGNUM)
@@ -18712,7 +18429,7 @@ arm_regno_class (int regno)
if (IS_IWMMXT_GR_REGNUM (regno))
return IWMMXT_GR_REGS;
- return FPA_REGS;
+ return NO_REGS;
}
/* Handle a special case when computing the offset
@@ -23645,10 +23362,7 @@ arm_file_start (void)
if (TARGET_SOFT_FLOAT)
{
- if (TARGET_VFP)
- fpu_name = "softvfp";
- else
- fpu_name = "softfpa";
+ fpu_name = "softvfp";
}
else
{
@@ -24060,7 +23774,12 @@ arm_early_load_addr_dep (rtx producer, rtx consumer)
if (GET_CODE (addr) == COND_EXEC)
addr = COND_EXEC_CODE (addr);
if (GET_CODE (addr) == PARALLEL)
- addr = XVECEXP (addr, 0, 0);
+ {
+ if (GET_CODE (XVECEXP (addr, 0, 0)) == RETURN)
+ addr = XVECEXP (addr, 0, 1);
+ else
+ addr = XVECEXP (addr, 0, 0);
+ }
addr = XEXP (addr, 1);
return reg_overlap_mentioned_p (value, addr);
@@ -24550,11 +24269,6 @@ arm_dbx_register_number (unsigned int regno)
if (regno < 16)
return regno;
- /* TODO: Legacy targets output FPA regs as registers 16-23 for backwards
- compatibility. The EABI defines them as registers 96-103. */
- if (IS_FPA_REGNUM (regno))
- return (TARGET_AAPCS_BASED ? 96 : 16) + regno - FIRST_FPA_REGNUM;
-
if (IS_VFP_REGNUM (regno))
{
/* See comment in arm_dwarf_register_span. */
@@ -24656,12 +24370,6 @@ arm_unwind_emit_sequence (FILE * asm_out_file, rtx p)
reg_size = 8;
fprintf (asm_out_file, "\t.vsave {");
}
- else if (reg >= FIRST_FPA_REGNUM && reg <= LAST_FPA_REGNUM)
- {
- /* FPA registers are done differently. */
- asm_fprintf (asm_out_file, "\t.save %r, %wd\n", reg, nregs);
- return;
- }
else
/* Unknown register type. */
abort ();
@@ -25358,7 +25066,7 @@ arm_mangle_type (const_tree type)
static const int thumb_core_reg_alloc_order[] =
{
3, 2, 1, 0, 4, 5, 6, 7,
- 14, 12, 8, 9, 10, 11, 13, 15
+ 14, 12, 8, 9, 10, 11
};
/* Adjust register allocation order when compiling for Thumb. */
@@ -25391,6 +25099,18 @@ arm_have_conditional_execution (void)
return !TARGET_THUMB1;
}
+/* The AAPCS sets the maximum alignment of a vector to 64 bits. */
+static HOST_WIDE_INT
+arm_vector_alignment (const_tree type)
+{
+ HOST_WIDE_INT align = tree_low_cst (TYPE_SIZE (type), 0);
+
+ if (TARGET_AAPCS_BASED)
+ align = MIN (align, 64);
+
+ return align;
+}
+
static unsigned int
arm_autovectorize_vector_sizes (void)
{
@@ -25441,13 +25161,6 @@ arm_conditional_register_usage (void)
{
int regno;
- if (TARGET_SOFT_FLOAT || TARGET_THUMB1 || !TARGET_FPA)
- {
- for (regno = FIRST_FPA_REGNUM;
- regno <= LAST_FPA_REGNUM; ++regno)
- fixed_regs[regno] = call_used_regs[regno] = 1;
- }
-
if (TARGET_THUMB1 && optimize_size)
{
/* When optimizing for size on Thumb-1, it's better not
@@ -25464,32 +25177,17 @@ arm_conditional_register_usage (void)
if (TARGET_THUMB1)
fixed_regs[LR_REGNUM] = call_used_regs[LR_REGNUM] = 1;
- if (TARGET_32BIT && TARGET_HARD_FLOAT)
+ if (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP)
{
- if (TARGET_MAVERICK)
- {
- for (regno = FIRST_FPA_REGNUM;
- regno <= LAST_FPA_REGNUM; ++ regno)
- fixed_regs[regno] = call_used_regs[regno] = 1;
- for (regno = FIRST_CIRRUS_FP_REGNUM;
- regno <= LAST_CIRRUS_FP_REGNUM; ++ regno)
- {
- fixed_regs[regno] = 0;
- call_used_regs[regno] = regno < FIRST_CIRRUS_FP_REGNUM + 4;
- }
- }
- if (TARGET_VFP)
+ /* VFPv3 registers are disabled when earlier VFP
+ versions are selected due to the definition of
+ LAST_VFP_REGNUM. */
+ for (regno = FIRST_VFP_REGNUM;
+ regno <= LAST_VFP_REGNUM; ++ regno)
{
- /* VFPv3 registers are disabled when earlier VFP
- versions are selected due to the definition of
- LAST_VFP_REGNUM. */
- for (regno = FIRST_VFP_REGNUM;
- regno <= LAST_VFP_REGNUM; ++ regno)
- {
- fixed_regs[regno] = 0;
- call_used_regs[regno] = regno < FIRST_VFP_REGNUM + 16
- || regno >= FIRST_VFP_REGNUM + 32;
- }
+ fixed_regs[regno] = 0;
+ call_used_regs[regno] = regno < FIRST_VFP_REGNUM + 16
+ || regno >= FIRST_VFP_REGNUM + 32;
}
}
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index b83f341f6a9..8acde0e6267 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -139,8 +139,6 @@ extern char arm_arch_name[];
builtin_assert ("machine=arm"); \
\
builtin_define (arm_arch_name); \
- if (arm_arch_cirrus) \
- builtin_define ("__MAVERICK__"); \
if (arm_arch_xscale) \
builtin_define ("__XSCALE__"); \
if (arm_arch_iwmmxt) \
@@ -243,8 +241,6 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
#define TARGET_HARD_FLOAT (arm_float_abi != ARM_FLOAT_ABI_SOFT)
/* Use hardware floating point calling convention. */
#define TARGET_HARD_FLOAT_ABI (arm_float_abi == ARM_FLOAT_ABI_HARD)
-#define TARGET_FPA (arm_fpu_desc->model == ARM_FP_MODEL_FPA)
-#define TARGET_MAVERICK (arm_fpu_desc->model == ARM_FP_MODEL_MAVERICK)
#define TARGET_VFP (arm_fpu_desc->model == ARM_FP_MODEL_VFP)
#define TARGET_IWMMXT (arm_arch_iwmmxt)
#define TARGET_IWMMXT2 (arm_arch_iwmmxt2)
@@ -272,8 +268,6 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
#define TARGET_THUMB2 (TARGET_THUMB && arm_arch_thumb2)
/* Thumb-1 only. */
#define TARGET_THUMB1_ONLY (TARGET_THUMB1 && !arm_arch_notm)
-/* FPA emulator without LFM. */
-#define TARGET_FPA_EMU2 (TARGET_FPA && arm_fpu_desc->rev == 2)
/* The following two macros concern the ability to execute coprocessor
instructions for VFPv3 or NEON. TARGET_VFP3/TARGET_VFPD32 are currently
@@ -386,10 +380,6 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
enum arm_fp_model
{
ARM_FP_MODEL_UNKNOWN,
- /* FPA model (Hardware or software). */
- ARM_FP_MODEL_FPA,
- /* Cirrus Maverick floating point model. */
- ARM_FP_MODEL_MAVERICK,
/* VFP floating point model. */
ARM_FP_MODEL_VFP
};
@@ -501,9 +491,6 @@ extern int thumb1_code;
/* Nonzero if this chip is a StrongARM. */
extern int arm_tune_strongarm;
-/* Nonzero if this chip is a Cirrus variant. */
-extern int arm_arch_cirrus;
-
/* Nonzero if this chip supports Intel XScale with Wireless MMX technology. */
extern int arm_arch_iwmmxt;
@@ -604,11 +591,6 @@ extern int arm_arch_thumb_hwdiv;
This is always false, even when in big-endian mode. */
#define WORDS_BIG_ENDIAN (BYTES_BIG_ENDIAN && ! TARGET_LITTLE_WORDS)
-/* Define this if most significant word of doubles is the lowest numbered.
- The rules are different based on whether or not we use FPA-format,
- VFP-format or some other floating point co-processor's format doubles. */
-#define FLOAT_WORDS_BIG_ENDIAN (arm_float_words_big_endian ())
-
#define UNITS_PER_WORD 4
/* True if natural alignment is used for doubleword types. */
@@ -727,7 +709,7 @@ extern int arm_arch_thumb_hwdiv;
/* Standard register usage. */
-/* Register allocation in ARM Procedure Call Standard (as used on RISCiX):
+/* Register allocation in ARM Procedure Call Standard
(S - saved over call).
r0 * argument word/integer result
@@ -743,11 +725,6 @@ extern int arm_arch_thumb_hwdiv;
r14 (lr) link address/workspace
r15 F (pc) program counter
- f0 floating point result
- f1-f3 floating point scratch
-
- f4-f7 S floating point variable
-
cc This is NOT a real register, but is used internally
to represent things that use or set the condition
codes.
@@ -761,11 +738,6 @@ extern int arm_arch_thumb_hwdiv;
*: See TARGET_CONDITIONAL_REGISTER_USAGE */
-/*
- mvf0 Cirrus floating point result
- mvf1-mvf3 Cirrus floating point scratch
- mvf4-mvf15 S Cirrus floating point variable. */
-
/* s0-s15 VFP scratch (aka d0-d7).
s16-s31 S VFP variable (aka d8-d15).
vfpcc Not a real register. Represents the VFP condition
@@ -787,34 +759,30 @@ extern int arm_arch_thumb_hwdiv;
[| saved r2 value |]
[| saved r1 value |]
[| saved r0 value |]
- [| saved f7 value |] three words
- [| saved f6 value |] three words
- [| saved f5 value |] three words
- [| saved f4 value |] three words
r0-r3 are not normally saved in a C function. */
/* 1 for registers that have pervasive standard uses
and are not available for the register allocator. */
-#define FIXED_REGISTERS \
-{ \
- 0,0,0,0,0,0,0,0, \
- 0,0,0,0,0,1,0,1, \
- 0,0,0,0,0,0,0,0, \
- 1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1 \
+#define FIXED_REGISTERS \
+{ \
+ /* Core regs. */ \
+ 0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,1,0,1, \
+ /* VFP regs. */ \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ /* IWMMXT regs. */ \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1, \
+ /* Specials. */ \
+ 1,1,1,1 \
}
/* 1 for registers not available across function calls.
@@ -825,26 +793,26 @@ extern int arm_arch_thumb_hwdiv;
Aside from that, you can include as many other registers as you like.
The CC is not preserved over function calls on the ARM 6, so it is
easier to assume this for all. SFP is preserved, since FP is. */
-#define CALL_USED_REGISTERS \
-{ \
- 1,1,1,1,0,0,0,0, \
- 0,0,0,0,1,1,1,1, \
- 1,1,1,1,0,0,0,0, \
- 1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1,1,1,1,1,1,1,1, \
- 1 \
+#define CALL_USED_REGISTERS \
+{ \
+ /* Core regs. */ \
+ 1,1,1,1,0,0,0,0, \
+ 0,0,0,0,1,1,1,1, \
+ /* VFP Regs. */ \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ /* IWMMXT regs. */ \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1,1,1,1,1, \
+ 1,1,1,1, \
+ /* Specials. */ \
+ 1,1,1,1 \
}
#ifndef SUBTARGET_CONDITIONAL_REGISTER_USAGE
@@ -961,34 +929,24 @@ extern int arm_arch_thumb_hwdiv;
/* Register to use for pushing function arguments. */
#define STACK_POINTER_REGNUM SP_REGNUM
-/* ARM floating pointer registers. */
-#define FIRST_FPA_REGNUM 16
-#define LAST_FPA_REGNUM 23
-#define IS_FPA_REGNUM(REGNUM) \
- (((REGNUM) >= FIRST_FPA_REGNUM) && ((REGNUM) <= LAST_FPA_REGNUM))
+#define FIRST_IWMMXT_REGNUM (LAST_HI_VFP_REGNUM + 1)
+#define LAST_IWMMXT_REGNUM (FIRST_IWMMXT_REGNUM + 15)
+#define FIRST_IWMMXT_GR_REGNUM (LAST_IWMMXT_REGNUM + 1)
+#define LAST_IWMMXT_GR_REGNUM (FIRST_IWMMXT_GR_REGNUM + 3)
-#define FIRST_IWMMXT_GR_REGNUM 43
-#define LAST_IWMMXT_GR_REGNUM 46
-#define FIRST_IWMMXT_REGNUM 47
-#define LAST_IWMMXT_REGNUM 62
#define IS_IWMMXT_REGNUM(REGNUM) \
(((REGNUM) >= FIRST_IWMMXT_REGNUM) && ((REGNUM) <= LAST_IWMMXT_REGNUM))
#define IS_IWMMXT_GR_REGNUM(REGNUM) \
(((REGNUM) >= FIRST_IWMMXT_GR_REGNUM) && ((REGNUM) <= LAST_IWMMXT_GR_REGNUM))
/* Base register for access to local variables of the function. */
-#define FRAME_POINTER_REGNUM 25
+#define FRAME_POINTER_REGNUM 102
/* Base register for access to arguments of the function. */
-#define ARG_POINTER_REGNUM 26
+#define ARG_POINTER_REGNUM 103
-#define FIRST_CIRRUS_FP_REGNUM 27
-#define LAST_CIRRUS_FP_REGNUM 42
-#define IS_CIRRUS_REGNUM(REGNUM) \
- (((REGNUM) >= FIRST_CIRRUS_FP_REGNUM) && ((REGNUM) <= LAST_CIRRUS_FP_REGNUM))
-
-#define FIRST_VFP_REGNUM 63
-#define D7_VFP_REGNUM 78 /* Registers 77 and 78 == VFP reg D7. */
+#define FIRST_VFP_REGNUM 16
+#define D7_VFP_REGNUM (FIRST_VFP_REGNUM + 15)
#define LAST_VFP_REGNUM \
(TARGET_VFPD32 ? LAST_HI_VFP_REGNUM : LAST_LO_VFP_REGNUM)
@@ -1001,9 +959,9 @@ extern int arm_arch_thumb_hwdiv;
in various parts of the backend, we implement as "fake" single-precision
registers (which would be S32-S63, but cannot be used in that way). The
following macros define these ranges of registers. */
-#define LAST_LO_VFP_REGNUM 94
-#define FIRST_HI_VFP_REGNUM 95
-#define LAST_HI_VFP_REGNUM 126
+#define LAST_LO_VFP_REGNUM (FIRST_VFP_REGNUM + 31)
+#define FIRST_HI_VFP_REGNUM (LAST_LO_VFP_REGNUM + 1)
+#define LAST_HI_VFP_REGNUM (FIRST_HI_VFP_REGNUM + 31)
#define VFP_REGNO_OK_FOR_SINGLE(REGNUM) \
((REGNUM) <= LAST_LO_VFP_REGNUM)
@@ -1024,11 +982,10 @@ extern int arm_arch_thumb_hwdiv;
((((REGNUM) - FIRST_VFP_REGNUM) & 3) == 0 \
&& (LAST_VFP_REGNUM - (REGNUM) >= 2 * (N) - 1))
-/* The number of hard registers is 16 ARM + 8 FPA + 1 CC + 1 SFP + 1 AFP. */
-/* + 16 Cirrus registers take us up to 43. */
+/* The number of hard registers is 16 ARM + 1 CC + 1 SFP + 1 AFP. */
/* Intel Wireless MMX Technology registers add 16 + 4 more. */
-/* VFP (VFP3) adds 32 (64) + 1 more. */
-#define FIRST_PSEUDO_REGISTER 128
+/* VFP (VFP3) adds 32 (64) + 1 VFPCC. */
+#define FIRST_PSEUDO_REGISTER 104
#define DBX_REGISTER_NUMBER(REGNO) arm_dbx_register_number (REGNO)
@@ -1048,11 +1005,10 @@ extern int arm_arch_thumb_hwdiv;
This is ordinarily the length in words of a value of mode MODE
but can be less for certain modes in special long registers.
- On the ARM regs are UNITS_PER_WORD bits wide; FPA regs can hold any FP
- mode. */
+ On the ARM core regs are UNITS_PER_WORD bits wide. */
#define HARD_REGNO_NREGS(REGNO, MODE) \
((TARGET_32BIT \
- && REGNO >= FIRST_FPA_REGNUM \
+ && REGNO > PC_REGNUM \
&& REGNO != FRAME_POINTER_REGNUM \
&& REGNO != ARG_POINTER_REGNUM) \
&& !IS_VFP_REGNUM (REGNO) \
@@ -1096,26 +1052,44 @@ extern int arm_regs_in_sequence[];
pressure when both single- and double-precision registers are used in a
function. */
+#define VREG(X) (FIRST_VFP_REGNUM + (X))
+#define WREG(X) (FIRST_IWMMXT_REGNUM + (X))
+#define WGREG(X) (FIRST_IWMMXT_GR_REGNUM + (X))
+
#define REG_ALLOC_ORDER \
{ \
- 3, 2, 1, 0, 12, 14, 4, 5, \
- 6, 7, 8, 10, 9, 11, 13, 15, \
- 16, 17, 18, 19, 20, 21, 22, 23, \
- 27, 28, 29, 30, 31, 32, 33, 34, \
- 35, 36, 37, 38, 39, 40, 41, 42, \
- 43, 44, 45, 46, 47, 48, 49, 50, \
- 51, 52, 53, 54, 55, 56, 57, 58, \
- 59, 60, 61, 62, \
- 24, 25, 26, \
- 95, 96, 97, 98, 99, 100, 101, 102, \
- 103, 104, 105, 106, 107, 108, 109, 110, \
- 111, 112, 113, 114, 115, 116, 117, 118, \
- 119, 120, 121, 122, 123, 124, 125, 126, \
- 78, 77, 76, 75, 74, 73, 72, 71, \
- 70, 69, 68, 67, 66, 65, 64, 63, \
- 79, 80, 81, 82, 83, 84, 85, 86, \
- 87, 88, 89, 90, 91, 92, 93, 94, \
- 127 \
+ /* General registers. */ \
+ 3, 2, 1, 0, 12, 14, 4, 5, \
+ 6, 7, 8, 9, 10, 11, \
+ /* High VFP registers. */ \
+ VREG(32), VREG(33), VREG(34), VREG(35), \
+ VREG(36), VREG(37), VREG(38), VREG(39), \
+ VREG(40), VREG(41), VREG(42), VREG(43), \
+ VREG(44), VREG(45), VREG(46), VREG(47), \
+ VREG(48), VREG(49), VREG(50), VREG(51), \
+ VREG(52), VREG(53), VREG(54), VREG(55), \
+ VREG(56), VREG(57), VREG(58), VREG(59), \
+ VREG(60), VREG(61), VREG(62), VREG(63), \
+ /* VFP argument registers. */ \
+ VREG(15), VREG(14), VREG(13), VREG(12), \
+ VREG(11), VREG(10), VREG(9), VREG(8), \
+ VREG(7), VREG(6), VREG(5), VREG(4), \
+ VREG(3), VREG(2), VREG(1), VREG(0), \
+ /* VFP call-saved registers. */ \
+ VREG(16), VREG(17), VREG(18), VREG(19), \
+ VREG(20), VREG(21), VREG(22), VREG(23), \
+ VREG(24), VREG(25), VREG(26), VREG(27), \
+ VREG(28), VREG(29), VREG(30), VREG(31), \
+ /* IWMMX registers. */ \
+ WREG(0), WREG(1), WREG(2), WREG(3), \
+ WREG(4), WREG(5), WREG(6), WREG(7), \
+ WREG(8), WREG(9), WREG(10), WREG(11), \
+ WREG(12), WREG(13), WREG(14), WREG(15), \
+ WGREG(0), WGREG(1), WGREG(2), WGREG(3), \
+ /* Registers not for general use. */ \
+ CC_REGNUM, VFPCC_REGNUM, \
+ FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, \
+ SP_REGNUM, PC_REGNUM \
}
/* Use different register alloc ordering for Thumb. */
@@ -1134,27 +1108,26 @@ extern int arm_regs_in_sequence[];
/* Register and constant classes. */
-/* Register classes: used to be simple, just all ARM regs or all FPA regs
- Now that the Thumb is involved it has become more complicated. */
+/* Register classes. */
enum reg_class
{
NO_REGS,
- FPA_REGS,
- CIRRUS_REGS,
+ LO_REGS,
+ STACK_REG,
+ BASE_REGS,
+ HI_REGS,
+ GENERAL_REGS,
+ CORE_REGS,
VFP_D0_D7_REGS,
VFP_LO_REGS,
VFP_HI_REGS,
VFP_REGS,
- IWMMXT_GR_REGS,
IWMMXT_REGS,
- LO_REGS,
- STACK_REG,
- BASE_REGS,
- HI_REGS,
+ IWMMXT_GR_REGS,
CC_REG,
VFPCC_REG,
- GENERAL_REGS,
- CORE_REGS,
+ SFP_REG,
+ AFP_REG,
ALL_REGS,
LIM_REG_CLASSES
};
@@ -1165,22 +1138,20 @@ enum reg_class
#define REG_CLASS_NAMES \
{ \
"NO_REGS", \
- "FPA_REGS", \
- "CIRRUS_REGS", \
+ "LO_REGS", \
+ "STACK_REG", \
+ "BASE_REGS", \
+ "HI_REGS", \
+ "GENERAL_REGS", \
+ "CORE_REGS", \
"VFP_D0_D7_REGS", \
"VFP_LO_REGS", \
"VFP_HI_REGS", \
"VFP_REGS", \
- "IWMMXT_GR_REGS", \
"IWMMXT_REGS", \
- "LO_REGS", \
- "STACK_REG", \
- "BASE_REGS", \
- "HI_REGS", \
+ "IWMMXT_GR_REGS", \
"CC_REG", \
"VFPCC_REG", \
- "GENERAL_REGS", \
- "CORE_REGS", \
"ALL_REGS", \
}
@@ -1190,23 +1161,23 @@ enum reg_class
#define REG_CLASS_CONTENTS \
{ \
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */ \
- { 0x00FF0000, 0x00000000, 0x00000000, 0x00000000 }, /* FPA_REGS */ \
- { 0xF8000000, 0x000007FF, 0x00000000, 0x00000000 }, /* CIRRUS_REGS */ \
- { 0x00000000, 0x80000000, 0x00007FFF, 0x00000000 }, /* VFP_D0_D7_REGS */ \
- { 0x00000000, 0x80000000, 0x7FFFFFFF, 0x00000000 }, /* VFP_LO_REGS */ \
- { 0x00000000, 0x00000000, 0x80000000, 0x7FFFFFFF }, /* VFP_HI_REGS */ \
- { 0x00000000, 0x80000000, 0xFFFFFFFF, 0x7FFFFFFF }, /* VFP_REGS */ \
- { 0x00000000, 0x00007800, 0x00000000, 0x00000000 }, /* IWMMXT_GR_REGS */ \
- { 0x00000000, 0x7FFF8000, 0x00000000, 0x00000000 }, /* IWMMXT_REGS */ \
{ 0x000000FF, 0x00000000, 0x00000000, 0x00000000 }, /* LO_REGS */ \
{ 0x00002000, 0x00000000, 0x00000000, 0x00000000 }, /* STACK_REG */ \
{ 0x000020FF, 0x00000000, 0x00000000, 0x00000000 }, /* BASE_REGS */ \
- { 0x0000DF00, 0x00000000, 0x00000000, 0x00000000 }, /* HI_REGS */ \
- { 0x01000000, 0x00000000, 0x00000000, 0x00000000 }, /* CC_REG */ \
- { 0x00000000, 0x00000000, 0x00000000, 0x80000000 }, /* VFPCC_REG */ \
- { 0x0000DFFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \
- { 0x0000FFFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */ \
- { 0xFAFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF } /* ALL_REGS */ \
+ { 0x00005F00, 0x00000000, 0x00000000, 0x00000000 }, /* HI_REGS */ \
+ { 0x00005FFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \
+ { 0x00007FFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */ \
+ { 0xFFFF0000, 0x00000000, 0x00000000, 0x00000000 }, /* VFP_D0_D7_REGS */ \
+ { 0xFFFF0000, 0x0000FFFF, 0x00000000, 0x00000000 }, /* VFP_LO_REGS */ \
+ { 0x00000000, 0xFFFF0000, 0x0000FFFF, 0x00000000 }, /* VFP_HI_REGS */ \
+ { 0xFFFF0000, 0xFFFFFFFF, 0x0000FFFF, 0x00000000 }, /* VFP_REGS */ \
+ { 0x00000000, 0x00000000, 0xFFFF0000, 0x00000000 }, /* IWMMXT_REGS */ \
+ { 0x00000000, 0x00000000, 0x00000000, 0x0000000F }, /* IWMMXT_GR_REGS */ \
+ { 0x00000000, 0x00000000, 0x00000000, 0x00000010 }, /* CC_REG */ \
+ { 0x00000000, 0x00000000, 0x00000000, 0x00000020 }, /* VFPCC_REG */ \
+ { 0x00000000, 0x00000000, 0x00000000, 0x00000040 }, /* SFP_REG */ \
+ { 0x00000000, 0x00000000, 0x00000000, 0x00000080 }, /* AFP_REG */ \
+ { 0xFFFF7FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000 } /* ALL_REGS */ \
}
/* Any of the VFP register classes. */
@@ -1220,14 +1191,11 @@ enum reg_class
or could index an array. */
#define REGNO_REG_CLASS(REGNO) arm_regno_class (REGNO)
-/* FPA registers can't do subreg as all values are reformatted to internal
- precision. In VFPv1, VFP registers could only be accessed in the mode
- they were set, so subregs would be invalid there too. However, we don't
- support VFPv1 at the moment, and the restriction was lifted in VFPv2. */
-#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
- (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
- ? reg_classes_intersect_p (FPA_REGS, (CLASS)) \
- : 0)
+/* In VFPv1, VFP registers could only be accessed in the mode they
+ were set, so subregs would be invalid there. However, we don't
+ support VFPv1 at the moment, and the restriction was lifted in
+ VFPv2. */
+#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) 0
/* The class value for index registers, and the one for base regs. */
#define INDEX_REG_CLASS (TARGET_THUMB1 ? LO_REGS : GENERAL_REGS)
@@ -1289,21 +1257,16 @@ enum reg_class
? coproc_secondary_reload_class (MODE, X, FALSE) : \
(TARGET_IWMMXT && (CLASS) == IWMMXT_REGS) ? \
coproc_secondary_reload_class (MODE, X, TRUE) : \
- /* Cannot load constants into Cirrus registers. */ \
- (TARGET_MAVERICK && TARGET_HARD_FLOAT \
- && (CLASS) == CIRRUS_REGS \
- && (CONSTANT_P (X) || GET_CODE (X) == SYMBOL_REF)) \
+ (TARGET_32BIT ? \
+ (((CLASS) == IWMMXT_REGS || (CLASS) == IWMMXT_GR_REGS) \
+ && CONSTANT_P (X)) \
? GENERAL_REGS : \
- (TARGET_32BIT ? \
- (((CLASS) == IWMMXT_REGS || (CLASS) == IWMMXT_GR_REGS) \
- && CONSTANT_P (X)) \
- ? GENERAL_REGS : \
- (((MODE) == HImode && ! arm_arch4 \
- && (GET_CODE (X) == MEM \
- || ((GET_CODE (X) == REG || GET_CODE (X) == SUBREG) \
- && true_regnum (X) == -1))) \
- ? GENERAL_REGS : NO_REGS) \
- : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)))
+ (((MODE) == HImode && ! arm_arch4 \
+ && (GET_CODE (X) == MEM \
+ || ((GET_CODE (X) == REG || GET_CODE (X) == SUBREG) \
+ && true_regnum (X) == -1))) \
+ ? GENERAL_REGS : NO_REGS) \
+ : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)))
/* Try a machine-dependent way of reloading an illegitimate address
operand. If we find one, push the reload and jump to WIN. This
@@ -1347,9 +1310,10 @@ do { \
/* Return the maximum number of consecutive registers
needed to represent mode MODE in a register of class CLASS.
- ARM regs are UNITS_PER_WORD bits while FPA regs can hold any FP mode */
+ ARM regs are UNITS_PER_WORD bits.
+ FIXME: Is this true for iWMMX? */
#define CLASS_MAX_NREGS(CLASS, MODE) \
- (((CLASS) == FPA_REGS || (CLASS) == CIRRUS_REGS) ? 1 : ARM_NUM_REGS (MODE))
+ (ARM_NUM_REGS (MODE))
/* If defined, gives a class of registers that cannot be used as the
operand of a SUBREG that changes the mode of the object illegally. */
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 15d2ce502cb..6a642bfc01e 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -28,18 +28,17 @@
;;---------------------------------------------------------------------------
;; Constants
-;; Register numbers
+;; Register numbers -- All machine registers should be defined here
(define_constants
- [(R0_REGNUM 0) ; First CORE register
- (R1_REGNUM 1) ; Second CORE register
- (IP_REGNUM 12) ; Scratch register
- (SP_REGNUM 13) ; Stack pointer
- (LR_REGNUM 14) ; Return address register
- (PC_REGNUM 15) ; Program counter
- (CC_REGNUM 24) ; Condition code pseudo register
- (LAST_ARM_REGNUM 15) ;
- (FPA_F0_REGNUM 16) ; FIRST_FPA_REGNUM
- (FPA_F7_REGNUM 23) ; LAST_FPA_REGNUM
+ [(R0_REGNUM 0) ; First CORE register
+ (R1_REGNUM 1) ; Second CORE register
+ (IP_REGNUM 12) ; Scratch register
+ (SP_REGNUM 13) ; Stack pointer
+ (LR_REGNUM 14) ; Return address register
+ (PC_REGNUM 15) ; Program counter
+ (LAST_ARM_REGNUM 15) ;
+ (CC_REGNUM 100) ; Condition code pseudo register
+ (VFPCC_REGNUM 101) ; VFP Condition code pseudo register
]
)
;; 3rd operand to select_dominance_cc_mode
@@ -178,7 +177,7 @@
; Floating Point Unit. If we only have floating point emulation, then there
; is no point in scheduling the floating point insns. (Well, for best
; performance we should try and group them together).
-(define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp"
+(define_attr "fpu" "none,vfp"
(const (symbol_ref "arm_fpu_attr")))
; LENGTH of an instruction (in bytes)
@@ -398,8 +397,6 @@
(define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched")))
;; Classification of NEON instructions for scheduling purposes.
-;; Do not set this attribute and the "type" attribute together in
-;; any one instruction pattern.
(define_attr "neon_type"
"neon_int_1,\
neon_int_2,\
@@ -749,11 +746,12 @@
;; (plus (reg rN) (reg sp)) into (reg rN). In this case reload will
;; put the duplicated register first, and not try the commutative version.
(define_insn_and_split "*arm_addsi3"
- [(set (match_operand:SI 0 "s_register_operand" "=r, k,r,r, k, r, k,k,r, k, r")
- (plus:SI (match_operand:SI 1 "s_register_operand" "%rk,k,r,rk,k, rk,k,r,rk,k, rk")
- (match_operand:SI 2 "reg_or_int_operand" "rI,rI,k,Pj,Pj,L, L,L,PJ,PJ,?n")))]
+ [(set (match_operand:SI 0 "s_register_operand" "=rk, r,k, r,r, k, r, k,k,r, k, r")
+ (plus:SI (match_operand:SI 1 "s_register_operand" "%0, rk,k, r,rk,k, rk,k,r,rk,k, rk")
+ (match_operand:SI 2 "reg_or_int_operand" "rk, rI,rI,k,Pj,Pj,L, L,L,PJ,PJ,?n")))]
"TARGET_32BIT"
"@
+ add%?\\t%0, %0, %2
add%?\\t%0, %1, %2
add%?\\t%0, %1, %2
add%?\\t%0, %2, %1
@@ -776,9 +774,9 @@
operands[1], 0);
DONE;
"
- [(set_attr "length" "4,4,4,4,4,4,4,4,4,4,16")
+ [(set_attr "length" "2,4,4,4,4,4,4,4,4,4,4,16")
(set_attr "predicable" "yes")
- (set_attr "arch" "*,*,*,t2,t2,*,*,a,t2,t2,*")]
+ (set_attr "arch" "t2,*,*,*,t2,t2,*,*,a,t2,t2,*")]
)
(define_insn_and_split "*thumb1_addsi3"
@@ -5476,14 +5474,6 @@
optimize && can_create_pseudo_p ());
DONE;
}
-
- if (TARGET_USE_MOVT && !target_word_relocations
- && GET_CODE (operands[1]) == SYMBOL_REF
- && !flag_pic && !arm_tls_referenced_p (operands[1]))
- {
- arm_emit_movpair (operands[0], operands[1]);
- DONE;
- }
}
else /* TARGET_THUMB1... */
{
@@ -5592,6 +5582,24 @@
"
)
+;; Split symbol_refs at the later stage (after cprop), instead of generating
+;; movt/movw pair directly at expand. Otherwise corresponding high_sum
+;; and lo_sum would be merged back into memory load at cprop. However,
+;; if the default is to prefer movt/movw rather than a load from the constant
+;; pool, the performance is better.
+(define_split
+ [(set (match_operand:SI 0 "arm_general_register_operand" "")
+ (match_operand:SI 1 "general_operand" ""))]
+ "TARGET_32BIT
+ && TARGET_USE_MOVT && GET_CODE (operands[1]) == SYMBOL_REF
+ && !flag_pic && !target_word_relocations
+ && !arm_tls_referenced_p (operands[1])"
+ [(clobber (const_int 0))]
+{
+ arm_emit_movpair (operands[0], operands[1]);
+ DONE;
+})
+
(define_insn "*thumb1_movsi_insn"
[(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*l*h*k")
(match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*l*h*k"))]
diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
index 0567895912b..b486d57be9c 100644
--- a/gcc/config/arm/arm_neon.h
+++ b/gcc/config/arm/arm_neon.h
@@ -7047,217 +7047,217 @@ vextq_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)
__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
vrev64_s8 (int8x8_t __a)
{
- return (int8x8_t)__builtin_neon_vrev64v8qi (__a, 1);
+ return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
}
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vrev64_s16 (int16x4_t __a)
{
- return (int16x4_t)__builtin_neon_vrev64v4hi (__a, 1);
+ return (int16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
}
__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
vrev64_s32 (int32x2_t __a)
{
- return (int32x2_t)__builtin_neon_vrev64v2si (__a, 1);
+ return (int32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
}
__extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
vrev64_f32 (float32x2_t __a)
{
- return (float32x2_t)__builtin_neon_vrev64v2sf (__a, 3);
+ return (float32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
}
__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
vrev64_u8 (uint8x8_t __a)
{
- return (uint8x8_t)__builtin_neon_vrev64v8qi ((int8x8_t) __a, 0);
+ return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vrev64_u16 (uint16x4_t __a)
{
- return (uint16x4_t)__builtin_neon_vrev64v4hi ((int16x4_t) __a, 0);
+ return (uint16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
}
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vrev64_u32 (uint32x2_t __a)
{
- return (uint32x2_t)__builtin_neon_vrev64v2si ((int32x2_t) __a, 0);
+ return (uint32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
}
__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
vrev64_p8 (poly8x8_t __a)
{
- return (poly8x8_t)__builtin_neon_vrev64v8qi ((int8x8_t) __a, 2);
+ return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
}
__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
vrev64_p16 (poly16x4_t __a)
{
- return (poly16x4_t)__builtin_neon_vrev64v4hi ((int16x4_t) __a, 2);
+ return (poly16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
}
__extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
vrev64q_s8 (int8x16_t __a)
{
- return (int8x16_t)__builtin_neon_vrev64v16qi (__a, 1);
+ return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
}
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vrev64q_s16 (int16x8_t __a)
{
- return (int16x8_t)__builtin_neon_vrev64v8hi (__a, 1);
+ return (int16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
}
__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
vrev64q_s32 (int32x4_t __a)
{
- return (int32x4_t)__builtin_neon_vrev64v4si (__a, 1);
+ return (int32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
}
__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
vrev64q_f32 (float32x4_t __a)
{
- return (float32x4_t)__builtin_neon_vrev64v4sf (__a, 3);
+ return (float32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
}
__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
vrev64q_u8 (uint8x16_t __a)
{
- return (uint8x16_t)__builtin_neon_vrev64v16qi ((int8x16_t) __a, 0);
+ return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vrev64q_u16 (uint16x8_t __a)
{
- return (uint16x8_t)__builtin_neon_vrev64v8hi ((int16x8_t) __a, 0);
+ return (uint16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
}
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
vrev64q_u32 (uint32x4_t __a)
{
- return (uint32x4_t)__builtin_neon_vrev64v4si ((int32x4_t) __a, 0);
+ return (uint32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
}
__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
vrev64q_p8 (poly8x16_t __a)
{
- return (poly8x16_t)__builtin_neon_vrev64v16qi ((int8x16_t) __a, 2);
+ return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
}
__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
vrev64q_p16 (poly16x8_t __a)
{
- return (poly16x8_t)__builtin_neon_vrev64v8hi ((int16x8_t) __a, 2);
+ return (poly16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
}
__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
vrev32_s8 (int8x8_t __a)
{
- return (int8x8_t)__builtin_neon_vrev32v8qi (__a, 1);
+ return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
}
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vrev32_s16 (int16x4_t __a)
{
- return (int16x4_t)__builtin_neon_vrev32v4hi (__a, 1);
+ return (int16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
}
__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
vrev32_u8 (uint8x8_t __a)
{
- return (uint8x8_t)__builtin_neon_vrev32v8qi ((int8x8_t) __a, 0);
+ return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vrev32_u16 (uint16x4_t __a)
{
- return (uint16x4_t)__builtin_neon_vrev32v4hi ((int16x4_t) __a, 0);
+ return (uint16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
}
__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
vrev32_p8 (poly8x8_t __a)
{
- return (poly8x8_t)__builtin_neon_vrev32v8qi ((int8x8_t) __a, 2);
+ return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
}
__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
vrev32_p16 (poly16x4_t __a)
{
- return (poly16x4_t)__builtin_neon_vrev32v4hi ((int16x4_t) __a, 2);
+ return (poly16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
}
__extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
vrev32q_s8 (int8x16_t __a)
{
- return (int8x16_t)__builtin_neon_vrev32v16qi (__a, 1);
+ return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
}
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vrev32q_s16 (int16x8_t __a)
{
- return (int16x8_t)__builtin_neon_vrev32v8hi (__a, 1);
+ return (int16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
}
__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
vrev32q_u8 (uint8x16_t __a)
{
- return (uint8x16_t)__builtin_neon_vrev32v16qi ((int8x16_t) __a, 0);
+ return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vrev32q_u16 (uint16x8_t __a)
{
- return (uint16x8_t)__builtin_neon_vrev32v8hi ((int16x8_t) __a, 0);
+ return (uint16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
}
__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
vrev32q_p8 (poly8x16_t __a)
{
- return (poly8x16_t)__builtin_neon_vrev32v16qi ((int8x16_t) __a, 2);
+ return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
}
__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
vrev32q_p16 (poly16x8_t __a)
{
- return (poly16x8_t)__builtin_neon_vrev32v8hi ((int16x8_t) __a, 2);
+ return (poly16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
}
__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
vrev16_s8 (int8x8_t __a)
{
- return (int8x8_t)__builtin_neon_vrev16v8qi (__a, 1);
+ return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
}
__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
vrev16_u8 (uint8x8_t __a)
{
- return (uint8x8_t)__builtin_neon_vrev16v8qi ((int8x8_t) __a, 0);
+ return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
}
__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
vrev16_p8 (poly8x8_t __a)
{
- return (poly8x8_t)__builtin_neon_vrev16v8qi ((int8x8_t) __a, 2);
+ return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
}
__extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
vrev16q_s8 (int8x16_t __a)
{
- return (int8x16_t)__builtin_neon_vrev16v16qi (__a, 1);
+ return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
}
__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
vrev16q_u8 (uint8x16_t __a)
{
- return (uint8x16_t)__builtin_neon_vrev16v16qi ((int8x16_t) __a, 0);
+ return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
}
__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
vrev16q_p8 (poly8x16_t __a)
{
- return (poly8x16_t)__builtin_neon_vrev16v16qi ((int8x16_t) __a, 2);
+ return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
}
__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
@@ -7396,7 +7396,8 @@ __extension__ static __inline int8x8x2_t __attribute__ ((__always_inline__))
vtrn_s8 (int8x8_t __a, int8x8_t __b)
{
int8x8x2_t __rv;
- __builtin_neon_vtrnv8qi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 8, 2, 10, 4, 12, 6, 14 });
+ __rv.val[1] = (int8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 1, 9, 3, 11, 5, 13, 7, 15 });
return __rv;
}
@@ -7404,23 +7405,8 @@ __extension__ static __inline int16x4x2_t __attribute__ ((__always_inline__))
vtrn_s16 (int16x4_t __a, int16x4_t __b)
{
int16x4x2_t __rv;
- __builtin_neon_vtrnv4hi (&__rv.val[0], __a, __b);
- return __rv;
-}
-
-__extension__ static __inline int32x2x2_t __attribute__ ((__always_inline__))
-vtrn_s32 (int32x2_t __a, int32x2_t __b)
-{
- int32x2x2_t __rv;
- __builtin_neon_vtrnv2si (&__rv.val[0], __a, __b);
- return __rv;
-}
-
-__extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
-vtrn_f32 (float32x2_t __a, float32x2_t __b)
-{
- float32x2x2_t __rv;
- __builtin_neon_vtrnv2sf (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
+ __rv.val[1] = (int16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
return __rv;
}
@@ -7428,7 +7414,8 @@ __extension__ static __inline uint8x8x2_t __attribute__ ((__always_inline__))
vtrn_u8 (uint8x8_t __a, uint8x8_t __b)
{
uint8x8x2_t __rv;
- __builtin_neon_vtrnv8qi ((int8x8_t *) &__rv.val[0], (int8x8_t) __a, (int8x8_t) __b);
+ __rv.val[0] = (uint8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 8, 2, 10, 4, 12, 6, 14 });
+ __rv.val[1] = (uint8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 1, 9, 3, 11, 5, 13, 7, 15 });
return __rv;
}
@@ -7436,15 +7423,8 @@ __extension__ static __inline uint16x4x2_t __attribute__ ((__always_inline__))
vtrn_u16 (uint16x4_t __a, uint16x4_t __b)
{
uint16x4x2_t __rv;
- __builtin_neon_vtrnv4hi ((int16x4_t *) &__rv.val[0], (int16x4_t) __a, (int16x4_t) __b);
- return __rv;
-}
-
-__extension__ static __inline uint32x2x2_t __attribute__ ((__always_inline__))
-vtrn_u32 (uint32x2_t __a, uint32x2_t __b)
-{
- uint32x2x2_t __rv;
- __builtin_neon_vtrnv2si ((int32x2_t *) &__rv.val[0], (int32x2_t) __a, (int32x2_t) __b);
+ __rv.val[0] = (uint16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
+ __rv.val[1] = (uint16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
return __rv;
}
@@ -7452,7 +7432,8 @@ __extension__ static __inline poly8x8x2_t __attribute__ ((__always_inline__))
vtrn_p8 (poly8x8_t __a, poly8x8_t __b)
{
poly8x8x2_t __rv;
- __builtin_neon_vtrnv8qi ((int8x8_t *) &__rv.val[0], (int8x8_t) __a, (int8x8_t) __b);
+ __rv.val[0] = (poly8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 8, 2, 10, 4, 12, 6, 14 });
+ __rv.val[1] = (poly8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 1, 9, 3, 11, 5, 13, 7, 15 });
return __rv;
}
@@ -7460,7 +7441,35 @@ __extension__ static __inline poly16x4x2_t __attribute__ ((__always_inline__))
vtrn_p16 (poly16x4_t __a, poly16x4_t __b)
{
poly16x4x2_t __rv;
- __builtin_neon_vtrnv4hi ((int16x4_t *) &__rv.val[0], (int16x4_t) __a, (int16x4_t) __b);
+ __rv.val[0] = (poly16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
+ __rv.val[1] = (poly16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
+ return __rv;
+}
+
+__extension__ static __inline int32x2x2_t __attribute__ ((__always_inline__))
+vtrn_s32 (int32x2_t __a, int32x2_t __b)
+{
+ int32x2x2_t __rv;
+ __rv.val[0] = (int32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (int32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
+ return __rv;
+}
+
+__extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
+vtrn_f32 (float32x2_t __a, float32x2_t __b)
+{
+ float32x2x2_t __rv;
+ __rv.val[0] = (float32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (float32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
+ return __rv;
+}
+
+__extension__ static __inline uint32x2x2_t __attribute__ ((__always_inline__))
+vtrn_u32 (uint32x2_t __a, uint32x2_t __b)
+{
+ uint32x2x2_t __rv;
+ __rv.val[0] = (uint32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (uint32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
return __rv;
}
@@ -7468,7 +7477,8 @@ __extension__ static __inline int8x16x2_t __attribute__ ((__always_inline__))
vtrnq_s8 (int8x16_t __a, int8x16_t __b)
{
int8x16x2_t __rv;
- __builtin_neon_vtrnv16qi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
+ __rv.val[1] = (int8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
return __rv;
}
@@ -7476,7 +7486,8 @@ __extension__ static __inline int16x8x2_t __attribute__ ((__always_inline__))
vtrnq_s16 (int16x8_t __a, int16x8_t __b)
{
int16x8x2_t __rv;
- __builtin_neon_vtrnv8hi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 8, 2, 10, 4, 12, 6, 14 });
+ __rv.val[1] = (int16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 1, 9, 3, 11, 5, 13, 7, 15 });
return __rv;
}
@@ -7484,7 +7495,8 @@ __extension__ static __inline int32x4x2_t __attribute__ ((__always_inline__))
vtrnq_s32 (int32x4_t __a, int32x4_t __b)
{
int32x4x2_t __rv;
- __builtin_neon_vtrnv4si (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
+ __rv.val[1] = (int32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
return __rv;
}
@@ -7492,7 +7504,8 @@ __extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__))
vtrnq_f32 (float32x4_t __a, float32x4_t __b)
{
float32x4x2_t __rv;
- __builtin_neon_vtrnv4sf (&__rv.val[0], __a, __b);
+ __rv.val[0] = (float32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
+ __rv.val[1] = (float32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
return __rv;
}
@@ -7500,7 +7513,8 @@ __extension__ static __inline uint8x16x2_t __attribute__ ((__always_inline__))
vtrnq_u8 (uint8x16_t __a, uint8x16_t __b)
{
uint8x16x2_t __rv;
- __builtin_neon_vtrnv16qi ((int8x16_t *) &__rv.val[0], (int8x16_t) __a, (int8x16_t) __b);
+ __rv.val[0] = (uint8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
+ __rv.val[1] = (uint8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
return __rv;
}
@@ -7508,7 +7522,8 @@ __extension__ static __inline uint16x8x2_t __attribute__ ((__always_inline__))
vtrnq_u16 (uint16x8_t __a, uint16x8_t __b)
{
uint16x8x2_t __rv;
- __builtin_neon_vtrnv8hi ((int16x8_t *) &__rv.val[0], (int16x8_t) __a, (int16x8_t) __b);
+ __rv.val[0] = (uint16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 8, 2, 10, 4, 12, 6, 14 });
+ __rv.val[1] = (uint16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 1, 9, 3, 11, 5, 13, 7, 15 });
return __rv;
}
@@ -7516,7 +7531,8 @@ __extension__ static __inline uint32x4x2_t __attribute__ ((__always_inline__))
vtrnq_u32 (uint32x4_t __a, uint32x4_t __b)
{
uint32x4x2_t __rv;
- __builtin_neon_vtrnv4si ((int32x4_t *) &__rv.val[0], (int32x4_t) __a, (int32x4_t) __b);
+ __rv.val[0] = (uint32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
+ __rv.val[1] = (uint32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
return __rv;
}
@@ -7524,7 +7540,8 @@ __extension__ static __inline poly8x16x2_t __attribute__ ((__always_inline__))
vtrnq_p8 (poly8x16_t __a, poly8x16_t __b)
{
poly8x16x2_t __rv;
- __builtin_neon_vtrnv16qi ((int8x16_t *) &__rv.val[0], (int8x16_t) __a, (int8x16_t) __b);
+ __rv.val[0] = (poly8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
+ __rv.val[1] = (poly8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
return __rv;
}
@@ -7532,7 +7549,8 @@ __extension__ static __inline poly16x8x2_t __attribute__ ((__always_inline__))
vtrnq_p16 (poly16x8_t __a, poly16x8_t __b)
{
poly16x8x2_t __rv;
- __builtin_neon_vtrnv8hi ((int16x8_t *) &__rv.val[0], (int16x8_t) __a, (int16x8_t) __b);
+ __rv.val[0] = (poly16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 8, 2, 10, 4, 12, 6, 14 });
+ __rv.val[1] = (poly16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 1, 9, 3, 11, 5, 13, 7, 15 });
return __rv;
}
@@ -7540,7 +7558,8 @@ __extension__ static __inline int8x8x2_t __attribute__ ((__always_inline__))
vzip_s8 (int8x8_t __a, int8x8_t __b)
{
int8x8x2_t __rv;
- __builtin_neon_vzipv8qi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 8, 1, 9, 2, 10, 3, 11 });
+ __rv.val[1] = (int8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 4, 12, 5, 13, 6, 14, 7, 15 });
return __rv;
}
@@ -7548,23 +7567,8 @@ __extension__ static __inline int16x4x2_t __attribute__ ((__always_inline__))
vzip_s16 (int16x4_t __a, int16x4_t __b)
{
int16x4x2_t __rv;
- __builtin_neon_vzipv4hi (&__rv.val[0], __a, __b);
- return __rv;
-}
-
-__extension__ static __inline int32x2x2_t __attribute__ ((__always_inline__))
-vzip_s32 (int32x2_t __a, int32x2_t __b)
-{
- int32x2x2_t __rv;
- __builtin_neon_vzipv2si (&__rv.val[0], __a, __b);
- return __rv;
-}
-
-__extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
-vzip_f32 (float32x2_t __a, float32x2_t __b)
-{
- float32x2x2_t __rv;
- __builtin_neon_vzipv2sf (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
+ __rv.val[1] = (int16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
return __rv;
}
@@ -7572,7 +7576,8 @@ __extension__ static __inline uint8x8x2_t __attribute__ ((__always_inline__))
vzip_u8 (uint8x8_t __a, uint8x8_t __b)
{
uint8x8x2_t __rv;
- __builtin_neon_vzipv8qi ((int8x8_t *) &__rv.val[0], (int8x8_t) __a, (int8x8_t) __b);
+ __rv.val[0] = (uint8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 8, 1, 9, 2, 10, 3, 11 });
+ __rv.val[1] = (uint8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 4, 12, 5, 13, 6, 14, 7, 15 });
return __rv;
}
@@ -7580,15 +7585,8 @@ __extension__ static __inline uint16x4x2_t __attribute__ ((__always_inline__))
vzip_u16 (uint16x4_t __a, uint16x4_t __b)
{
uint16x4x2_t __rv;
- __builtin_neon_vzipv4hi ((int16x4_t *) &__rv.val[0], (int16x4_t) __a, (int16x4_t) __b);
- return __rv;
-}
-
-__extension__ static __inline uint32x2x2_t __attribute__ ((__always_inline__))
-vzip_u32 (uint32x2_t __a, uint32x2_t __b)
-{
- uint32x2x2_t __rv;
- __builtin_neon_vzipv2si ((int32x2_t *) &__rv.val[0], (int32x2_t) __a, (int32x2_t) __b);
+ __rv.val[0] = (uint16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
+ __rv.val[1] = (uint16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
return __rv;
}
@@ -7596,7 +7594,8 @@ __extension__ static __inline poly8x8x2_t __attribute__ ((__always_inline__))
vzip_p8 (poly8x8_t __a, poly8x8_t __b)
{
poly8x8x2_t __rv;
- __builtin_neon_vzipv8qi ((int8x8_t *) &__rv.val[0], (int8x8_t) __a, (int8x8_t) __b);
+ __rv.val[0] = (poly8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 8, 1, 9, 2, 10, 3, 11 });
+ __rv.val[1] = (poly8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 4, 12, 5, 13, 6, 14, 7, 15 });
return __rv;
}
@@ -7604,7 +7603,35 @@ __extension__ static __inline poly16x4x2_t __attribute__ ((__always_inline__))
vzip_p16 (poly16x4_t __a, poly16x4_t __b)
{
poly16x4x2_t __rv;
- __builtin_neon_vzipv4hi ((int16x4_t *) &__rv.val[0], (int16x4_t) __a, (int16x4_t) __b);
+ __rv.val[0] = (poly16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
+ __rv.val[1] = (poly16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
+ return __rv;
+}
+
+__extension__ static __inline int32x2x2_t __attribute__ ((__always_inline__))
+vzip_s32 (int32x2_t __a, int32x2_t __b)
+{
+ int32x2x2_t __rv;
+ __rv.val[0] = (int32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (int32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
+ return __rv;
+}
+
+__extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
+vzip_f32 (float32x2_t __a, float32x2_t __b)
+{
+ float32x2x2_t __rv;
+ __rv.val[0] = (float32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (float32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
+ return __rv;
+}
+
+__extension__ static __inline uint32x2x2_t __attribute__ ((__always_inline__))
+vzip_u32 (uint32x2_t __a, uint32x2_t __b)
+{
+ uint32x2x2_t __rv;
+ __rv.val[0] = (uint32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (uint32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
return __rv;
}
@@ -7612,7 +7639,8 @@ __extension__ static __inline int8x16x2_t __attribute__ ((__always_inline__))
vzipq_s8 (int8x16_t __a, int8x16_t __b)
{
int8x16x2_t __rv;
- __builtin_neon_vzipv16qi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+ __rv.val[1] = (int8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
return __rv;
}
@@ -7620,7 +7648,8 @@ __extension__ static __inline int16x8x2_t __attribute__ ((__always_inline__))
vzipq_s16 (int16x8_t __a, int16x8_t __b)
{
int16x8x2_t __rv;
- __builtin_neon_vzipv8hi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 8, 1, 9, 2, 10, 3, 11 });
+ __rv.val[1] = (int16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 4, 12, 5, 13, 6, 14, 7, 15 });
return __rv;
}
@@ -7628,7 +7657,8 @@ __extension__ static __inline int32x4x2_t __attribute__ ((__always_inline__))
vzipq_s32 (int32x4_t __a, int32x4_t __b)
{
int32x4x2_t __rv;
- __builtin_neon_vzipv4si (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
+ __rv.val[1] = (int32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
return __rv;
}
@@ -7636,7 +7666,8 @@ __extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__))
vzipq_f32 (float32x4_t __a, float32x4_t __b)
{
float32x4x2_t __rv;
- __builtin_neon_vzipv4sf (&__rv.val[0], __a, __b);
+ __rv.val[0] = (float32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
+ __rv.val[1] = (float32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
return __rv;
}
@@ -7644,7 +7675,8 @@ __extension__ static __inline uint8x16x2_t __attribute__ ((__always_inline__))
vzipq_u8 (uint8x16_t __a, uint8x16_t __b)
{
uint8x16x2_t __rv;
- __builtin_neon_vzipv16qi ((int8x16_t *) &__rv.val[0], (int8x16_t) __a, (int8x16_t) __b);
+ __rv.val[0] = (uint8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+ __rv.val[1] = (uint8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
return __rv;
}
@@ -7652,7 +7684,8 @@ __extension__ static __inline uint16x8x2_t __attribute__ ((__always_inline__))
vzipq_u16 (uint16x8_t __a, uint16x8_t __b)
{
uint16x8x2_t __rv;
- __builtin_neon_vzipv8hi ((int16x8_t *) &__rv.val[0], (int16x8_t) __a, (int16x8_t) __b);
+ __rv.val[0] = (uint16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 8, 1, 9, 2, 10, 3, 11 });
+ __rv.val[1] = (uint16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 4, 12, 5, 13, 6, 14, 7, 15 });
return __rv;
}
@@ -7660,7 +7693,8 @@ __extension__ static __inline uint32x4x2_t __attribute__ ((__always_inline__))
vzipq_u32 (uint32x4_t __a, uint32x4_t __b)
{
uint32x4x2_t __rv;
- __builtin_neon_vzipv4si ((int32x4_t *) &__rv.val[0], (int32x4_t) __a, (int32x4_t) __b);
+ __rv.val[0] = (uint32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
+ __rv.val[1] = (uint32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
return __rv;
}
@@ -7668,7 +7702,8 @@ __extension__ static __inline poly8x16x2_t __attribute__ ((__always_inline__))
vzipq_p8 (poly8x16_t __a, poly8x16_t __b)
{
poly8x16x2_t __rv;
- __builtin_neon_vzipv16qi ((int8x16_t *) &__rv.val[0], (int8x16_t) __a, (int8x16_t) __b);
+ __rv.val[0] = (poly8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+ __rv.val[1] = (poly8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
return __rv;
}
@@ -7676,7 +7711,8 @@ __extension__ static __inline poly16x8x2_t __attribute__ ((__always_inline__))
vzipq_p16 (poly16x8_t __a, poly16x8_t __b)
{
poly16x8x2_t __rv;
- __builtin_neon_vzipv8hi ((int16x8_t *) &__rv.val[0], (int16x8_t) __a, (int16x8_t) __b);
+ __rv.val[0] = (poly16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 8, 1, 9, 2, 10, 3, 11 });
+ __rv.val[1] = (poly16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 4, 12, 5, 13, 6, 14, 7, 15 });
return __rv;
}
@@ -7684,7 +7720,8 @@ __extension__ static __inline int8x8x2_t __attribute__ ((__always_inline__))
vuzp_s8 (int8x8_t __a, int8x8_t __b)
{
int8x8x2_t __rv;
- __builtin_neon_vuzpv8qi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 2, 4, 6, 8, 10, 12, 14 });
+ __rv.val[1] = (int8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 1, 3, 5, 7, 9, 11, 13, 15 });
return __rv;
}
@@ -7692,7 +7729,8 @@ __extension__ static __inline int16x4x2_t __attribute__ ((__always_inline__))
vuzp_s16 (int16x4_t __a, int16x4_t __b)
{
int16x4x2_t __rv;
- __builtin_neon_vuzpv4hi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
+ __rv.val[1] = (int16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
return __rv;
}
@@ -7700,7 +7738,8 @@ __extension__ static __inline int32x2x2_t __attribute__ ((__always_inline__))
vuzp_s32 (int32x2_t __a, int32x2_t __b)
{
int32x2x2_t __rv;
- __builtin_neon_vuzpv2si (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (int32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
return __rv;
}
@@ -7708,7 +7747,8 @@ __extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
vuzp_f32 (float32x2_t __a, float32x2_t __b)
{
float32x2x2_t __rv;
- __builtin_neon_vuzpv2sf (&__rv.val[0], __a, __b);
+ __rv.val[0] = (float32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (float32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
return __rv;
}
@@ -7716,7 +7756,8 @@ __extension__ static __inline uint8x8x2_t __attribute__ ((__always_inline__))
vuzp_u8 (uint8x8_t __a, uint8x8_t __b)
{
uint8x8x2_t __rv;
- __builtin_neon_vuzpv8qi ((int8x8_t *) &__rv.val[0], (int8x8_t) __a, (int8x8_t) __b);
+ __rv.val[0] = (uint8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 2, 4, 6, 8, 10, 12, 14 });
+ __rv.val[1] = (uint8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 1, 3, 5, 7, 9, 11, 13, 15 });
return __rv;
}
@@ -7724,7 +7765,8 @@ __extension__ static __inline uint16x4x2_t __attribute__ ((__always_inline__))
vuzp_u16 (uint16x4_t __a, uint16x4_t __b)
{
uint16x4x2_t __rv;
- __builtin_neon_vuzpv4hi ((int16x4_t *) &__rv.val[0], (int16x4_t) __a, (int16x4_t) __b);
+ __rv.val[0] = (uint16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
+ __rv.val[1] = (uint16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
return __rv;
}
@@ -7732,7 +7774,8 @@ __extension__ static __inline uint32x2x2_t __attribute__ ((__always_inline__))
vuzp_u32 (uint32x2_t __a, uint32x2_t __b)
{
uint32x2x2_t __rv;
- __builtin_neon_vuzpv2si ((int32x2_t *) &__rv.val[0], (int32x2_t) __a, (int32x2_t) __b);
+ __rv.val[0] = (uint32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
+ __rv.val[1] = (uint32x2_t) __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
return __rv;
}
@@ -7740,7 +7783,8 @@ __extension__ static __inline poly8x8x2_t __attribute__ ((__always_inline__))
vuzp_p8 (poly8x8_t __a, poly8x8_t __b)
{
poly8x8x2_t __rv;
- __builtin_neon_vuzpv8qi ((int8x8_t *) &__rv.val[0], (int8x8_t) __a, (int8x8_t) __b);
+ __rv.val[0] = (poly8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 0, 2, 4, 6, 8, 10, 12, 14 });
+ __rv.val[1] = (poly8x8_t) __builtin_shuffle (__a, __b, (uint8x8_t) { 1, 3, 5, 7, 9, 11, 13, 15 });
return __rv;
}
@@ -7748,7 +7792,8 @@ __extension__ static __inline poly16x4x2_t __attribute__ ((__always_inline__))
vuzp_p16 (poly16x4_t __a, poly16x4_t __b)
{
poly16x4x2_t __rv;
- __builtin_neon_vuzpv4hi ((int16x4_t *) &__rv.val[0], (int16x4_t) __a, (int16x4_t) __b);
+ __rv.val[0] = (poly16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
+ __rv.val[1] = (poly16x4_t) __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
return __rv;
}
@@ -7756,7 +7801,8 @@ __extension__ static __inline int8x16x2_t __attribute__ ((__always_inline__))
vuzpq_s8 (int8x16_t __a, int8x16_t __b)
{
int8x16x2_t __rv;
- __builtin_neon_vuzpv16qi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
+ __rv.val[1] = (int8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
return __rv;
}
@@ -7764,7 +7810,8 @@ __extension__ static __inline int16x8x2_t __attribute__ ((__always_inline__))
vuzpq_s16 (int16x8_t __a, int16x8_t __b)
{
int16x8x2_t __rv;
- __builtin_neon_vuzpv8hi (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 2, 4, 6, 8, 10, 12, 14 });
+ __rv.val[1] = (int16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 1, 3, 5, 7, 9, 11, 13, 15 });
return __rv;
}
@@ -7772,7 +7819,8 @@ __extension__ static __inline int32x4x2_t __attribute__ ((__always_inline__))
vuzpq_s32 (int32x4_t __a, int32x4_t __b)
{
int32x4x2_t __rv;
- __builtin_neon_vuzpv4si (&__rv.val[0], __a, __b);
+ __rv.val[0] = (int32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
+ __rv.val[1] = (int32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
return __rv;
}
@@ -7780,7 +7828,8 @@ __extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__))
vuzpq_f32 (float32x4_t __a, float32x4_t __b)
{
float32x4x2_t __rv;
- __builtin_neon_vuzpv4sf (&__rv.val[0], __a, __b);
+ __rv.val[0] = (float32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
+ __rv.val[1] = (float32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
return __rv;
}
@@ -7788,7 +7837,8 @@ __extension__ static __inline uint8x16x2_t __attribute__ ((__always_inline__))
vuzpq_u8 (uint8x16_t __a, uint8x16_t __b)
{
uint8x16x2_t __rv;
- __builtin_neon_vuzpv16qi ((int8x16_t *) &__rv.val[0], (int8x16_t) __a, (int8x16_t) __b);
+ __rv.val[0] = (uint8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
+ __rv.val[1] = (uint8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
return __rv;
}
@@ -7796,7 +7846,8 @@ __extension__ static __inline uint16x8x2_t __attribute__ ((__always_inline__))
vuzpq_u16 (uint16x8_t __a, uint16x8_t __b)
{
uint16x8x2_t __rv;
- __builtin_neon_vuzpv8hi ((int16x8_t *) &__rv.val[0], (int16x8_t) __a, (int16x8_t) __b);
+ __rv.val[0] = (uint16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 2, 4, 6, 8, 10, 12, 14 });
+ __rv.val[1] = (uint16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 1, 3, 5, 7, 9, 11, 13, 15 });
return __rv;
}
@@ -7804,7 +7855,8 @@ __extension__ static __inline uint32x4x2_t __attribute__ ((__always_inline__))
vuzpq_u32 (uint32x4_t __a, uint32x4_t __b)
{
uint32x4x2_t __rv;
- __builtin_neon_vuzpv4si ((int32x4_t *) &__rv.val[0], (int32x4_t) __a, (int32x4_t) __b);
+ __rv.val[0] = (uint32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
+ __rv.val[1] = (uint32x4_t) __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
return __rv;
}
@@ -7812,7 +7864,8 @@ __extension__ static __inline poly8x16x2_t __attribute__ ((__always_inline__))
vuzpq_p8 (poly8x16_t __a, poly8x16_t __b)
{
poly8x16x2_t __rv;
- __builtin_neon_vuzpv16qi ((int8x16_t *) &__rv.val[0], (int8x16_t) __a, (int8x16_t) __b);
+ __rv.val[0] = (poly8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
+ __rv.val[1] = (poly8x16_t) __builtin_shuffle (__a, __b, (uint8x16_t) { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
return __rv;
}
@@ -7820,7 +7873,8 @@ __extension__ static __inline poly16x8x2_t __attribute__ ((__always_inline__))
vuzpq_p16 (poly16x8_t __a, poly16x8_t __b)
{
poly16x8x2_t __rv;
- __builtin_neon_vuzpv8hi ((int16x8_t *) &__rv.val[0], (int16x8_t) __a, (int16x8_t) __b);
+ __rv.val[0] = (poly16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 0, 2, 4, 6, 8, 10, 12, 14 });
+ __rv.val[1] = (poly16x8_t) __builtin_shuffle (__a, __b, (uint16x8_t) { 1, 3, 5, 7, 9, 11, 13, 15 });
return __rv;
}
diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
index 7d8e508acad..f6d1a3df72c 100644
--- a/gcc/config/arm/bpabi.h
+++ b/gcc/config/arm/bpabi.h
@@ -55,15 +55,27 @@
#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*"\
"|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx}"
+#if TARGET_BIG_ENDIAN_DEFAULT
#define BE8_LINK_SPEC \
- " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5 \
- |mcpu=cortex-a7 \
- |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \
- |mcpu=generic-armv7-a \
- |march=armv7-m|mcpu=cortex-m3 \
- |march=armv7e-m|mcpu=cortex-m4 \
- |march=armv6-m|mcpu=cortex-m0 \
+ " %{!mlittle-endian:%{march=armv7-a|mcpu=cortex-a5 \
+ |mcpu=cortex-a7 \
+ |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \
+ |mcpu=generic-armv7-a \
+ |march=armv7-m|mcpu=cortex-m3 \
+ |march=armv7e-m|mcpu=cortex-m4 \
+ |march=armv6-m|mcpu=cortex-m0 \
:%{!r:--be8}}}"
+#else
+#define BE8_LINK_SPEC \
+ " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5 \
+ |mcpu=cortex-a7 \
+ |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \
+ |mcpu=generic-armv7-a \
+ |march=armv7-m|mcpu=cortex-m3 \
+ |march=armv7e-m|mcpu=cortex-m4 \
+ |march=armv6-m|mcpu=cortex-m0 \
+ :%{!r:--be8}}}"
+#endif
/* Tell the assembler to build BPABI binaries. */
#undef SUBTARGET_EXTRA_ASM_SPEC
diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md
index 795a5ee1634..def8d9f9692 100644
--- a/gcc/config/arm/iterators.md
+++ b/gcc/config/arm/iterators.md
@@ -42,6 +42,9 @@
;; A list of the 32bit and 64bit integer modes
(define_mode_iterator SIDI [SI DI])
+;; A list of modes which the VFP unit can handle
+(define_mode_iterator SDF [(SF "TARGET_VFP") (DF "TARGET_VFP_DOUBLE")])
+
;; Integer element sizes implemented by IWMMXT.
(define_mode_iterator VMMX [V2SI V4HI V8QI])
@@ -245,7 +248,8 @@
(V4HI "P") (V8HI "q")
(V2SI "P") (V4SI "q")
(V2SF "P") (V4SF "q")
- (DI "P") (V2DI "q")])
+ (DI "P") (V2DI "q")
+ (SF "") (DF "P")])
;; Wider modes with the same number of elements.
(define_mode_attr V_widen [(V8QI "V8HI") (V4HI "V4SI") (V2SI "V2DI")])
@@ -303,7 +307,8 @@
(V4HI "i16") (V8HI "i16")
(V2SI "i32") (V4SI "i32")
(DI "i64") (V2DI "i64")
- (V2SF "f32") (V4SF "f32")])
+ (V2SF "f32") (V4SF "f32")
+ (SF "f32") (DF "f64")])
;; Same, but for operations which work on signed values.
(define_mode_attr V_s_elem [(V8QI "s8") (V16QI "s8")
@@ -423,6 +428,10 @@
;; Mode attribute for vshll.
(define_mode_attr V_innermode [(V8QI "QI") (V4HI "HI") (V2SI "SI")])
+;; Mode attributes used for fused-multiply-accumulate VFP support
+(define_mode_attr F_constraint [(SF "t") (DF "w")])
+(define_mode_attr F_fma_type [(SF "fmacs") (DF "fmacd")])
+
;;----------------------------------------------------------------------------
;; Code attributes
;;----------------------------------------------------------------------------
diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
index 270e12bc55c..82b4bfc7b74 100644
--- a/gcc/config/arm/linux-elf.h
+++ b/gcc/config/arm/linux-elf.h
@@ -92,9 +92,8 @@
} \
while (0)
-/* NWFPE always understands FPA instructions. */
#undef FPUTYPE_DEFAULT
-#define FPUTYPE_DEFAULT "fpe3"
+#define FPUTYPE_DEFAULT "vfp"
/* Call the function profiler with a given profile label. */
#undef ARM_FUNCTION_PROFILER
diff --git a/gcc/config/arm/mmintrin.h b/gcc/config/arm/mmintrin.h
index 4df221cc591..6b21e821862 100644
--- a/gcc/config/arm/mmintrin.h
+++ b/gcc/config/arm/mmintrin.h
@@ -1670,7 +1670,7 @@ _mm_torvscw ()
{
__asm __volatile ("torvscw r15");
}
-#endif
+#endif /* __IWMMXT2__ */
static __inline __m64
_mm_tbcst_pi8 (int value)
@@ -1832,5 +1832,5 @@ _mm_tbcst_pi32 (int value)
#if defined __cplusplus
}; /* End "C" */
#endif /* __cplusplus */
-#endif /* __IWMMXT__ */
+
#endif /* _MMINTRIN_H_INCLUDED */
diff --git a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml
index 112c8be6e3b..29679aaca0f 100644
--- a/gcc/config/arm/neon-gen.ml
+++ b/gcc/config/arm/neon-gen.ml
@@ -91,15 +91,14 @@ let print_function arity fnname body =
end;
open_braceblock ffmt;
let rec print_lines = function
- [] -> ()
+ [] -> ()
+ | "" :: lines -> print_lines lines
| [line] -> Format.printf "%s" line
- | line::lines -> Format.printf "%s@," line; print_lines lines in
+ | line::lines -> Format.printf "%s@," line ; print_lines lines in
print_lines body;
close_braceblock ffmt;
end_function ffmt
-let return_by_ptr features = List.mem ReturnPtr features
-
let union_string num elts base =
let itype = inttype_for_array num elts in
let iname = string_of_inttype itype
@@ -141,29 +140,76 @@ let cast_for_return to_ty = "(" ^ (string_of_vectype to_ty) ^ ")"
(* Return a tuple of a list of declarations to go at the start of the function,
and a list of statements needed to return THING. *)
-let return arity return_by_ptr thing =
+let return arity thing =
match arity with
Arity0 (ret) | Arity1 (ret, _) | Arity2 (ret, _, _) | Arity3 (ret, _, _, _)
| Arity4 (ret, _, _, _, _) ->
- match ret with
- T_arrayof (num, vec) ->
- if return_by_ptr then
- let sname = string_of_vectype ret in
- [Printf.sprintf "%s __rv;" sname],
- [thing ^ ";"; "return __rv;"]
- else
+ begin match ret with
+ T_arrayof (num, vec) ->
let uname = union_string num vec "__rv" in
[uname ^ ";"], ["__rv.__o = " ^ thing ^ ";"; "return __rv.__i;"]
- | T_void -> [], [thing ^ ";"]
- | _ ->
- [], ["return " ^ (cast_for_return ret) ^ thing ^ ";"]
+ | T_void ->
+ [], [thing ^ ";"]
+ | _ ->
+ [], ["return " ^ (cast_for_return ret) ^ thing ^ ";"]
+ end
+
+let mask_shape_for_shuffle = function
+ All (num, reg) -> All (num, reg)
+ | Pair_result reg -> All (2, reg)
+ | _ -> failwith "mask_for_shuffle"
+
+let mask_elems shuffle shape elttype part =
+ let elem_size = elt_width elttype in
+ let num_elems =
+ match regmap shape 0 with
+ Dreg -> 64 / elem_size
+ | Qreg -> 128 / elem_size
+ | _ -> failwith "mask_elems" in
+ shuffle elem_size num_elems part
+
+(* Return a tuple of a list of declarations 0and a list of statements needed
+ to implement an intrinsic using __builtin_shuffle. SHUFFLE is a function
+ which returns a list of elements suitable for using as a mask. *)
+
+let shuffle_fn shuffle shape arity elttype =
+ let mshape = mask_shape_for_shuffle shape in
+ let masktype = type_for_elt mshape (unsigned_of_elt elttype) 0 in
+ let masktype_str = string_of_vectype masktype in
+ let shuffle_res = type_for_elt mshape elttype 0 in
+ let shuffle_res_str = string_of_vectype shuffle_res in
+ match arity with
+ Arity0 (ret) | Arity1 (ret, _) | Arity2 (ret, _, _) | Arity3 (ret, _, _, _)
+ | Arity4 (ret, _, _, _, _) ->
+ begin match ret with
+ T_arrayof (num, vec) ->
+ let elems1 = mask_elems shuffle mshape elttype `lo
+ and elems2 = mask_elems shuffle mshape elttype `hi in
+ let mask1 = (String.concat ", " (List.map string_of_int elems1))
+ and mask2 = (String.concat ", " (List.map string_of_int elems2)) in
+ let shuf1 = Printf.sprintf
+ "__rv.val[0] = (%s) __builtin_shuffle (__a, __b, (%s) { %s });"
+ shuffle_res_str masktype_str mask1
+ and shuf2 = Printf.sprintf
+ "__rv.val[1] = (%s) __builtin_shuffle (__a, __b, (%s) { %s });"
+ shuffle_res_str masktype_str mask2 in
+ [Printf.sprintf "%s __rv;" (string_of_vectype ret);],
+ [shuf1; shuf2; "return __rv;"]
+ | _ ->
+ let elems = mask_elems shuffle mshape elttype `lo in
+ let mask = (String.concat ", " (List.map string_of_int elems)) in
+ let shuf = Printf.sprintf
+ "return (%s) __builtin_shuffle (__a, (%s) { %s });" shuffle_res_str masktype_str mask in
+ [""],
+ [shuf]
+ end
let rec element_type ctype =
match ctype with
T_arrayof (_, v) -> element_type v
| _ -> ctype
-let params return_by_ptr ps =
+let params ps =
let pdecls = ref [] in
let ptype t p =
match t with
@@ -180,13 +226,7 @@ let params return_by_ptr ps =
| Arity3 (_, t1, t2, t3) -> [ptype t1 "__a"; ptype t2 "__b"; ptype t3 "__c"]
| Arity4 (_, t1, t2, t3, t4) ->
[ptype t1 "__a"; ptype t2 "__b"; ptype t3 "__c"; ptype t4 "__d"] in
- match ps with
- Arity0 ret | Arity1 (ret, _) | Arity2 (ret, _, _) | Arity3 (ret, _, _, _)
- | Arity4 (ret, _, _, _, _) ->
- if return_by_ptr then
- !pdecls, add_cast (T_ptrto (element_type ret)) "&__rv.val[0]" :: plist
- else
- !pdecls, plist
+ !pdecls, plist
let modify_params features plist =
let is_flipped =
@@ -239,17 +279,27 @@ let rec mode_suffix elttype shape =
and srcmode = mode_of_elt src shape in
string_of_mode dstmode ^ string_of_mode srcmode
+let get_shuffle features =
+ try
+ match List.find (function Use_shuffle _ -> true | _ -> false) features with
+ Use_shuffle fn -> Some fn
+ | _ -> None
+ with Not_found -> None
+
let print_variant opcode features shape name (ctype, asmtype, elttype) =
let bits = infoword_value elttype features in
let modesuf = mode_suffix elttype shape in
- let return_by_ptr = return_by_ptr features in
- let pdecls, paramlist = params return_by_ptr ctype in
- let paramlist' = modify_params features paramlist in
- let paramlist'' = extra_word shape features paramlist' bits in
- let parstr = String.concat ", " paramlist'' in
- let builtin = Printf.sprintf "__builtin_neon_%s%s (%s)"
- (builtin_name features name) modesuf parstr in
- let rdecls, stmts = return ctype return_by_ptr builtin in
+ let pdecls, paramlist = params ctype in
+ let rdecls, stmts =
+ match get_shuffle features with
+ Some shuffle -> shuffle_fn shuffle shape ctype elttype
+ | None ->
+ let paramlist' = modify_params features paramlist in
+ let paramlist'' = extra_word shape features paramlist' bits in
+ let parstr = String.concat ", " paramlist'' in
+ let builtin = Printf.sprintf "__builtin_neon_%s%s (%s)"
+ (builtin_name features name) modesuf parstr in
+ return ctype builtin in
let body = pdecls @ rdecls @ stmts
and fnname = (intrinsic_name name) ^ "_" ^ (string_of_elt elttype) in
print_function ctype fnname body
diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md
index 168b5be1e44..a9295465faf 100644
--- a/gcc/config/arm/neon.md
+++ b/gcc/config/arm/neon.md
@@ -434,10 +434,9 @@
elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
operands[2] = GEN_INT (elt);
- return "vmov%?.<V_sz_elem>\t%P0[%c2], %1";
+ return "vmov.<V_sz_elem>\t%P0[%c2], %1";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_mcr")])
+ [(set_attr "neon_type" "neon_mcr")])
(define_insn "vec_set<mode>_internal"
[(set (match_operand:VQ 0 "s_register_operand" "=w")
@@ -460,10 +459,9 @@
operands[0] = gen_rtx_REG (<V_HALF>mode, regno + hi);
operands[2] = GEN_INT (elt);
- return "vmov%?.<V_sz_elem>\t%P0[%c2], %1";
+ return "vmov.<V_sz_elem>\t%P0[%c2], %1";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_mcr")]
+ [(set_attr "neon_type" "neon_mcr")]
)
(define_insn "vec_setv2di_internal"
@@ -480,10 +478,9 @@
operands[0] = gen_rtx_REG (DImode, regno);
- return "vmov%?\t%P0, %Q1, %R1";
+ return "vmov\t%P0, %Q1, %R1";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_mcr_2_mcrr")]
+ [(set_attr "neon_type" "neon_mcr_2_mcrr")]
)
(define_expand "vec_set<mode>"
@@ -511,10 +508,9 @@
elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
operands[2] = GEN_INT (elt);
}
- return "vmov%?.<V_uf_sclr>\t%0, %P1[%c2]";
+ return "vmov.<V_uf_sclr>\t%0, %P1[%c2]";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_insn "vec_extract<mode>"
@@ -535,10 +531,9 @@
operands[1] = gen_rtx_REG (<V_HALF>mode, regno + hi);
operands[2] = GEN_INT (elt);
- return "vmov%?.<V_uf_sclr>\t%0, %P1[%c2]";
+ return "vmov.<V_uf_sclr>\t%0, %P1[%c2]";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_insn "vec_extractv2di"
@@ -552,10 +547,9 @@
operands[1] = gen_rtx_REG (DImode, regno);
- return "vmov%?\t%Q0, %R0, %P1 @ v2di";
+ return "vmov\t%Q0, %R0, %P1 @ v2di";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_int_1")]
+ [(set_attr "neon_type" "neon_int_1")]
)
(define_expand "vec_init<mode>"
@@ -2337,11 +2331,11 @@
(define_insn "neon_vaba<mode>"
[(set (match_operand:VDQIW 0 "s_register_operand" "=w")
- (plus:VDQIW (match_operand:VDQIW 1 "s_register_operand" "0")
- (unspec:VDQIW [(match_operand:VDQIW 2 "s_register_operand" "w")
+ (plus:VDQIW (unspec:VDQIW [(match_operand:VDQIW 2 "s_register_operand" "w")
(match_operand:VDQIW 3 "s_register_operand" "w")
(match_operand:SI 4 "immediate_operand" "i")]
- UNSPEC_VABD)))]
+ UNSPEC_VABD)
+ (match_operand:VDQIW 1 "s_register_operand" "0")))]
"TARGET_NEON"
"vaba.%T4%#<V_sz_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
[(set (attr "neon_type")
@@ -2351,11 +2345,11 @@
(define_insn "neon_vabal<mode>"
[(set (match_operand:<V_widen> 0 "s_register_operand" "=w")
- (plus:<V_widen> (match_operand:<V_widen> 1 "s_register_operand" "0")
- (unspec:<V_widen> [(match_operand:VW 2 "s_register_operand" "w")
+ (plus:<V_widen> (unspec:<V_widen> [(match_operand:VW 2 "s_register_operand" "w")
(match_operand:VW 3 "s_register_operand" "w")
(match_operand:SI 4 "immediate_operand" "i")]
- UNSPEC_VABDL)))]
+ UNSPEC_VABDL)
+ (match_operand:<V_widen> 1 "s_register_operand" "0")))]
"TARGET_NEON"
"vabal.%T4%#<V_sz_elem>\t%q0, %P2, %P3"
[(set_attr "neon_type" "neon_vaba")]
@@ -2622,10 +2616,9 @@
elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
operands[2] = GEN_INT (elt);
}
- return "vmov%?.s<V_sz_elem>\t%0, %P1[%c2]";
+ return "vmov.s<V_sz_elem>\t%0, %P1[%c2]";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_insn "neon_vget_lane<mode>_zext_internal"
@@ -2642,10 +2635,9 @@
elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
operands[2] = GEN_INT (elt);
}
- return "vmov%?.u<V_sz_elem>\t%0, %P1[%c2]";
+ return "vmov.u<V_sz_elem>\t%0, %P1[%c2]";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_insn "neon_vget_lane<mode>_sext_internal"
@@ -2668,12 +2660,11 @@
ops[0] = operands[0];
ops[1] = gen_rtx_REG (<V_HALF>mode, regno + 2 * (elt / halfelts));
ops[2] = GEN_INT (elt_adj);
- output_asm_insn ("vmov%?.s<V_sz_elem>\t%0, %P1[%c2]", ops);
+ output_asm_insn ("vmov.s<V_sz_elem>\t%0, %P1[%c2]", ops);
return "";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_insn "neon_vget_lane<mode>_zext_internal"
@@ -2696,12 +2687,11 @@
ops[0] = operands[0];
ops[1] = gen_rtx_REG (<V_HALF>mode, regno + 2 * (elt / halfelts));
ops[2] = GEN_INT (elt_adj);
- output_asm_insn ("vmov%?.u<V_sz_elem>\t%0, %P1[%c2]", ops);
+ output_asm_insn ("vmov.u<V_sz_elem>\t%0, %P1[%c2]", ops);
return "";
}
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_expand "neon_vget_lane<mode>"
@@ -2832,10 +2822,9 @@
[(set (match_operand:VX 0 "s_register_operand" "=w")
(vec_duplicate:VX (match_operand:<V_elem> 1 "s_register_operand" "r")))]
"TARGET_NEON"
- "vdup%?.<V_sz_elem>\t%<V_reg>0, %1"
+ "vdup.<V_sz_elem>\t%<V_reg>0, %1"
;; Assume this schedules like vmov.
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_insn "neon_vdup_n<mode>"
@@ -2843,11 +2832,10 @@
(vec_duplicate:V32 (match_operand:<V_elem> 1 "s_register_operand" "r,t")))]
"TARGET_NEON"
"@
- vdup%?.<V_sz_elem>\t%<V_reg>0, %1
- vdup%?.<V_sz_elem>\t%<V_reg>0, %y1"
+ vdup.<V_sz_elem>\t%<V_reg>0, %1
+ vdup.<V_sz_elem>\t%<V_reg>0, %y1"
;; Assume this schedules like vmov.
- [(set_attr "predicable" "yes")
- (set_attr "neon_type" "neon_bp_simple")]
+ [(set_attr "neon_type" "neon_bp_simple")]
)
(define_expand "neon_vdup_ndi"
@@ -2865,10 +2853,9 @@
(vec_duplicate:V2DI (match_operand:DI 1 "s_register_operand" "r,w")))]
"TARGET_NEON"
"@
- vmov%?\t%e0, %Q1, %R1\;vmov%?\t%f0, %Q1, %R1
- vmov%?\t%e0, %P1\;vmov%?\t%f0, %P1"
- [(set_attr "predicable" "yes")
- (set_attr "length" "8")
+ vmov\t%e0, %Q1, %R1\;vmov\t%f0, %Q1, %R1
+ vmov\t%e0, %P1\;vmov\t%f0, %P1"
+ [(set_attr "length" "8")
(set_attr "neon_type" "neon_bp_simple")]
)
@@ -4806,7 +4793,7 @@
ops[2] = gen_rtx_REG (DImode, regno + 4);
ops[3] = operands[1];
ops[4] = operands[3];
- output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, %A3",
+ output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, %3",
ops);
return "";
}
@@ -4838,7 +4825,7 @@
ops[2] = gen_rtx_REG (DImode, regno + 8);
ops[3] = operands[1];
ops[4] = GEN_INT (lane);
- output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, %A3",
+ output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, %3",
ops);
return "";
}
@@ -4860,7 +4847,7 @@
ops[1] = gen_rtx_REG (DImode, regno + 2);
ops[2] = gen_rtx_REG (DImode, regno + 4);
ops[3] = operands[1];
- output_asm_insn ("vld3.<V_sz_elem>\t{%P0[], %P1[], %P2[]}, %A3", ops);
+ output_asm_insn ("vld3.<V_sz_elem>\t{%P0[], %P1[], %P2[]}, %3", ops);
return "";
}
else
@@ -4978,7 +4965,7 @@
ops[2] = gen_rtx_REG (DImode, regno + 2);
ops[3] = gen_rtx_REG (DImode, regno + 4);
ops[4] = operands[2];
- output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, %A0",
+ output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, %0",
ops);
return "";
}
@@ -5010,7 +4997,7 @@
ops[2] = gen_rtx_REG (DImode, regno + 4);
ops[3] = gen_rtx_REG (DImode, regno + 8);
ops[4] = GEN_INT (lane);
- output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, %A0",
+ output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, %0",
ops);
return "";
}
diff --git a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml
index 677468876af..56869c03c40 100644
--- a/gcc/config/arm/neon.ml
+++ b/gcc/config/arm/neon.ml
@@ -201,6 +201,42 @@ type opcode =
(* Reinterpret casts. *)
| Vreinterp
+let rev_elems revsize elsize nelts _ =
+ let mask = (revsize / elsize) - 1 in
+ let arr = Array.init nelts
+ (fun i -> i lxor mask) in
+ Array.to_list arr
+
+let permute_range i stride nelts increment =
+ let rec build i = function
+ 0 -> []
+ | nelts -> i :: (i + stride) :: build (i + increment) (pred nelts) in
+ build i nelts
+
+(* Generate a list of integers suitable for vzip. *)
+let zip_range i stride nelts = permute_range i stride nelts 1
+
+(* Generate a list of integers suitable for vunzip. *)
+let uzip_range i stride nelts = permute_range i stride nelts 4
+
+(* Generate a list of integers suitable for trn. *)
+let trn_range i stride nelts = permute_range i stride nelts 2
+
+let zip_elems _ nelts part =
+ match part with
+ `lo -> zip_range 0 nelts (nelts / 2)
+ | `hi -> zip_range (nelts / 2) nelts (nelts / 2)
+
+let uzip_elems _ nelts part =
+ match part with
+ `lo -> uzip_range 0 2 (nelts / 2)
+ | `hi -> uzip_range 1 2 (nelts / 2)
+
+let trn_elems _ nelts part =
+ match part with
+ `lo -> trn_range 0 nelts (nelts / 2)
+ | `hi -> trn_range 1 nelts (nelts / 2)
+
(* Features used for documentation, to distinguish between some instruction
variants, and to signal special requirements (e.g. swapping arguments). *)
@@ -214,7 +250,10 @@ type features =
| Flipped of string (* Builtin name to use with flipped arguments. *)
| InfoWord (* Pass an extra word for signage/rounding etc. (always passed
for All _, Long, Wide, Narrow shape_forms. *)
- | ReturnPtr (* Pass explicit pointer to return value as first argument. *)
+ (* Implement builtin as shuffle. The parameter is a function which returns
+ masks suitable for __builtin_shuffle: arguments are (element size,
+ number of elements, high/low part selector). *)
+ | Use_shuffle of (int -> int -> [`lo|`hi] -> int list)
(* A specification as to the shape of instruction expected upon
disassembly, used if it differs from the shape used to build the
intrinsic prototype. Multiple entries in the constructor's argument
@@ -706,8 +745,10 @@ let u_8_32 = [U8; U16; U32]
let su_8_32 = [S8; S16; S32; U8; U16; U32]
let su_8_64 = S64 :: U64 :: su_8_32
let su_16_64 = [S16; S32; S64; U16; U32; U64]
+let pf_su_8_16 = [P8; P16; S8; S16; U8; U16]
let pf_su_8_32 = P8 :: P16 :: F32 :: su_8_32
let pf_su_8_64 = P8 :: P16 :: F32 :: su_8_64
+let suf_32 = [S32; U32; F32]
let ops =
[
@@ -1317,12 +1358,18 @@ let ops =
pf_su_8_64;
(* Reverse elements. *)
- Vrev64, [], All (2, Dreg), "vrev64", bits_1, P8 :: P16 :: F32 :: su_8_32;
- Vrev64, [], All (2, Qreg), "vrev64Q", bits_1, P8 :: P16 :: F32 :: su_8_32;
- Vrev32, [], All (2, Dreg), "vrev32", bits_1, [P8; P16; S8; U8; S16; U16];
- Vrev32, [], All (2, Qreg), "vrev32Q", bits_1, [P8; P16; S8; U8; S16; U16];
- Vrev16, [], All (2, Dreg), "vrev16", bits_1, [P8; S8; U8];
- Vrev16, [], All (2, Qreg), "vrev16Q", bits_1, [P8; S8; U8];
+ Vrev64, [Use_shuffle (rev_elems 64)], All (2, Dreg), "vrev64", bits_1,
+ P8 :: P16 :: F32 :: su_8_32;
+ Vrev64, [Use_shuffle (rev_elems 64)], All (2, Qreg), "vrev64Q", bits_1,
+ P8 :: P16 :: F32 :: su_8_32;
+ Vrev32, [Use_shuffle (rev_elems 32)], All (2, Dreg), "vrev32", bits_1,
+ [P8; P16; S8; U8; S16; U16];
+ Vrev32, [Use_shuffle (rev_elems 32)], All (2, Qreg), "vrev32Q", bits_1,
+ [P8; P16; S8; U8; S16; U16];
+ Vrev16, [Use_shuffle (rev_elems 16)], All (2, Dreg), "vrev16", bits_1,
+ [P8; S8; U8];
+ Vrev16, [Use_shuffle (rev_elems 16)], All (2, Qreg), "vrev16Q", bits_1,
+ [P8; S8; U8];
(* Bit selection. *)
Vbsl,
@@ -1336,25 +1383,19 @@ let ops =
Use_operands [| Qreg; Qreg; Qreg; Qreg |], "vbslQ", bit_select,
pf_su_8_64;
- (* Transpose elements. **NOTE** ReturnPtr goes some of the way towards
- generating good code for intrinsics which return structure types --
- builtins work well by themselves (and understand that the values being
- stored on e.g. the stack also reside in registers, so can optimise the
- stores away entirely if the results are used immediately), but
- intrinsics are very much less efficient. Maybe something can be improved
- re: inlining, or tweaking the ABI used for intrinsics (a special call
- attribute?).
- *)
- Vtrn, [ReturnPtr], Pair_result Dreg, "vtrn", bits_2, pf_su_8_32;
- Vtrn, [ReturnPtr], Pair_result Qreg, "vtrnQ", bits_2, pf_su_8_32;
-
+ Vtrn, [Use_shuffle trn_elems], Pair_result Dreg, "vtrn", bits_2, pf_su_8_16;
+ Vtrn, [Use_shuffle trn_elems; Instruction_name ["vuzp"]], Pair_result Dreg, "vtrn", bits_2, suf_32;
+ Vtrn, [Use_shuffle trn_elems], Pair_result Qreg, "vtrnQ", bits_2, pf_su_8_32;
(* Zip elements. *)
- Vzip, [ReturnPtr], Pair_result Dreg, "vzip", bits_2, pf_su_8_32;
- Vzip, [ReturnPtr], Pair_result Qreg, "vzipQ", bits_2, pf_su_8_32;
+ Vzip, [Use_shuffle zip_elems], Pair_result Dreg, "vzip", bits_2, pf_su_8_16;
+ Vzip, [Use_shuffle zip_elems; Instruction_name ["vuzp"]], Pair_result Dreg, "vzip", bits_2, suf_32;
+ Vzip, [Use_shuffle zip_elems], Pair_result Qreg, "vzipQ", bits_2, pf_su_8_32;
(* Unzip elements. *)
- Vuzp, [ReturnPtr], Pair_result Dreg, "vuzp", bits_2, pf_su_8_32;
- Vuzp, [ReturnPtr], Pair_result Qreg, "vuzpQ", bits_2, pf_su_8_32;
+ Vuzp, [Use_shuffle uzip_elems], Pair_result Dreg, "vuzp", bits_2,
+ pf_su_8_32;
+ Vuzp, [Use_shuffle uzip_elems], Pair_result Qreg, "vuzpQ", bits_2,
+ pf_su_8_32;
(* Element/structure loads. VLD1 variants. *)
Vldx 1,
@@ -1404,8 +1445,10 @@ let ops =
CstPtrTo Corereg |]]],
Use_operands [| Qreg; CstPtrTo Corereg |], "vld1Q_dup",
bits_1, pf_su_8_32;
+ (* Treated identically to vld1_dup above as we now
+ do a single load followed by a duplicate. *)
Vldx_dup 1,
- [Disassembles_as [Use_operands [| VecArray (2, Dreg);
+ [Disassembles_as [Use_operands [| VecArray (1, Dreg);
CstPtrTo Corereg |]]],
Use_operands [| Qreg; CstPtrTo Corereg |], "vld1Q_dup",
bits_1, [S64; U64];
diff --git a/gcc/config/arm/t-arm b/gcc/config/arm/t-arm
index ecc25039fbe..731b6146e76 100644
--- a/gcc/config/arm/t-arm
+++ b/gcc/config/arm/t-arm
@@ -75,7 +75,7 @@ $(srcdir)/config/arm/arm-tables.opt: $(srcdir)/config/arm/genopt.sh \
arm.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) $(OBSTACK_H) $(REGS_H) hard-reg-set.h \
- insn-config.h conditions.h output.h \
+ insn-config.h conditions.h output.h dumpfile.h \
$(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_H) \
$(EXPR_H) $(OPTABS_H) $(RECOG_H) $(CGRAPH_H) \
$(GGC_H) except.h $(C_PRAGMA_H) $(TM_P_H) \
diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
index 20614144d29..4a56d57d7b7 100644
--- a/gcc/config/arm/vfp.md
+++ b/gcc/config/arm/vfp.md
@@ -19,11 +19,6 @@
;; along with GCC; see the file COPYING3. If not see
;; <http://www.gnu.org/licenses/>. */
-;; Additional register numbers
-(define_constants
- [(VFPCC_REGNUM 127)]
-)
-
;; The VFP "type" attributes differ from those used in the FPA model.
;; fcpys Single precision cpy.
;; ffariths Single precision abs, neg.
@@ -83,6 +78,7 @@
"
[(set_attr "predicable" "yes")
(set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores")
+ (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
(set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*")
(set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*")
(set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")]
@@ -125,6 +121,7 @@
"
[(set_attr "predicable" "yes")
(set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores")
+ (set_attr "neon_type" "*,*,*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
(set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*,*,*")
(set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,*,1020,*")
(set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")]
@@ -217,6 +214,7 @@
}
"
[(set_attr "type" "*,*,*,*,load2,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
+ (set_attr "neon_type" "*,*,*,*,*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
(set (attr "length") (cond [(eq_attr "alternative" "1") (const_int 8)
(eq_attr "alternative" "2") (const_int 12)
(eq_attr "alternative" "3") (const_int 16)
@@ -375,6 +373,7 @@
[(set_attr "predicable" "yes")
(set_attr "type"
"r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*")
+ (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
(set_attr "insn" "*,*,*,*,*,*,*,*,mov")
(set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*")
(set_attr "neg_pool_range" "*,*,*,1008,*,4080,*,*,*")]
@@ -412,6 +411,7 @@
[(set_attr "predicable" "yes")
(set_attr "type"
"r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*")
+ (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
(set_attr "insn" "*,*,*,*,*,*,*,*,mov")
(set_attr "pool_range" "*,*,*,1020,*,4092,*,*,*")
(set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")]
@@ -455,6 +455,7 @@
"
[(set_attr "type"
"r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
+ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
(set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
(eq_attr "alternative" "7")
(if_then_else
@@ -498,6 +499,7 @@
"
[(set_attr "type"
"r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
+ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
(set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
(eq_attr "alternative" "7")
(if_then_else
@@ -532,7 +534,8 @@
fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
[(set_attr "conds" "use")
(set_attr "length" "4,4,8,4,4,8,4,4,8")
- (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
+ (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
)
(define_insn "*thumb2_movsfcc_vfp"
@@ -555,7 +558,8 @@
ite\\t%D3\;fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
[(set_attr "conds" "use")
(set_attr "length" "6,6,10,6,6,10,6,6,10")
- (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
+ (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
)
(define_insn "*movdfcc_vfp"
@@ -578,7 +582,8 @@
fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
[(set_attr "conds" "use")
(set_attr "length" "4,4,8,4,4,8,4,4,8")
- (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
+ (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
)
(define_insn "*thumb2_movdfcc_vfp"
@@ -601,7 +606,8 @@
ite\\t%D3\;fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
[(set_attr "conds" "use")
(set_attr "length" "6,6,10,6,6,10,6,6,10")
- (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
+ (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
)
@@ -890,6 +896,54 @@
(set_attr "type" "fmacd")]
)
+;; Fused-multiply-accumulate
+
+(define_insn "fma<SDF:mode>4"
+ [(set (match_operand:SDF 0 "register_operand" "=<F_constraint>")
+ (fma:SDF (match_operand:SDF 1 "register_operand" "<F_constraint>")
+ (match_operand:SDF 2 "register_operand" "<F_constraint>")
+ (match_operand:SDF 3 "register_operand" "0")))]
+ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA"
+ "vfma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+ [(set_attr "predicable" "yes")
+ (set_attr "type" "<F_fma_type>")]
+)
+
+(define_insn "*fmsub<SDF:mode>4"
+ [(set (match_operand:SDF 0 "register_operand" "=<F_constraint>")
+ (fma:SDF (neg:SDF (match_operand:SDF 1 "register_operand"
+ "<F_constraint>"))
+ (match_operand:SDF 2 "register_operand" "<F_constraint>")
+ (match_operand:SDF 3 "register_operand" "0")))]
+ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA"
+ "vfms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+ [(set_attr "predicable" "yes")
+ (set_attr "type" "<F_fma_type>")]
+)
+
+(define_insn "*fnmsub<SDF:mode>4"
+ [(set (match_operand:SDF 0 "register_operand" "=<F_constraint>")
+ (fma:SDF (match_operand:SDF 1 "register_operand" "<F_constraint>")
+ (match_operand:SDF 2 "register_operand" "<F_constraint>")
+ (neg:SDF (match_operand:SDF 3 "register_operand" "0"))))]
+ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA"
+ "vfnms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+ [(set_attr "predicable" "yes")
+ (set_attr "type" "<F_fma_type>")]
+)
+
+(define_insn "*fnmadd<SDF:mode>4"
+ [(set (match_operand:SDF 0 "register_operand" "=<F_constraint>")
+ (fma:SDF (neg:SDF (match_operand:SDF 1 "register_operand"
+ "<F_constraint>"))
+ (match_operand:SDF 2 "register_operand" "<F_constraint>")
+ (neg:SDF (match_operand:SDF 3 "register_operand" "0"))))]
+ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA"
+ "vfnma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+ [(set_attr "predicable" "yes")
+ (set_attr "type" "<F_fma_type>")]
+)
+
;; Conversion routines
diff --git a/gcc/config/avr/avr-dimode.md b/gcc/config/avr/avr-dimode.md
index 3db069b3ad7..ed5752319eb 100644
--- a/gcc/config/avr/avr-dimode.md
+++ b/gcc/config/avr/avr-dimode.md
@@ -47,44 +47,58 @@
[(ACC_A 18)
(ACC_B 10)])
+;; Supported modes that are 8 bytes wide
+(define_mode_iterator ALL8 [(DI "")
+ (DQ "") (UDQ "")
+ (DA "") (UDA "")
+ (TA "") (UTA "")])
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Addition
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_expand "adddi3"
- [(parallel [(match_operand:DI 0 "general_operand" "")
- (match_operand:DI 1 "general_operand" "")
- (match_operand:DI 2 "general_operand" "")])]
+;; "adddi3"
+;; "adddq3" "addudq3"
+;; "addda3" "adduda3"
+;; "addta3" "adduta3"
+(define_expand "add<mode>3"
+ [(parallel [(match_operand:ALL8 0 "general_operand" "")
+ (match_operand:ALL8 1 "general_operand" "")
+ (match_operand:ALL8 2 "general_operand" "")])]
"avr_have_dimode"
{
- rtx acc_a = gen_rtx_REG (DImode, ACC_A);
+ rtx acc_a = gen_rtx_REG (<MODE>mode, ACC_A);
emit_move_insn (acc_a, operands[1]);
- if (s8_operand (operands[2], VOIDmode))
+ if (DImode == <MODE>mode
+ && s8_operand (operands[2], VOIDmode))
{
emit_move_insn (gen_rtx_REG (QImode, REG_X), operands[2]);
emit_insn (gen_adddi3_const8_insn ());
}
- else if (CONST_INT_P (operands[2])
- || CONST_DOUBLE_P (operands[2]))
+ else if (const_operand (operands[2], GET_MODE (operands[2])))
{
- emit_insn (gen_adddi3_const_insn (operands[2]));
+ emit_insn (gen_add<mode>3_const_insn (operands[2]));
}
else
{
- emit_move_insn (gen_rtx_REG (DImode, ACC_B), operands[2]);
- emit_insn (gen_adddi3_insn ());
+ emit_move_insn (gen_rtx_REG (<MODE>mode, ACC_B), operands[2]);
+ emit_insn (gen_add<mode>3_insn ());
}
emit_move_insn (operands[0], acc_a);
DONE;
})
-(define_insn "adddi3_insn"
- [(set (reg:DI ACC_A)
- (plus:DI (reg:DI ACC_A)
- (reg:DI ACC_B)))]
+;; "adddi3_insn"
+;; "adddq3_insn" "addudq3_insn"
+;; "addda3_insn" "adduda3_insn"
+;; "addta3_insn" "adduta3_insn"
+(define_insn "add<mode>3_insn"
+ [(set (reg:ALL8 ACC_A)
+ (plus:ALL8 (reg:ALL8 ACC_A)
+ (reg:ALL8 ACC_B)))]
"avr_have_dimode"
"%~call __adddi3"
[(set_attr "adjust_len" "call")
@@ -99,10 +113,14 @@
[(set_attr "adjust_len" "call")
(set_attr "cc" "clobber")])
-(define_insn "adddi3_const_insn"
- [(set (reg:DI ACC_A)
- (plus:DI (reg:DI ACC_A)
- (match_operand:DI 0 "const_double_operand" "n")))]
+;; "adddi3_const_insn"
+;; "adddq3_const_insn" "addudq3_const_insn"
+;; "addda3_const_insn" "adduda3_const_insn"
+;; "addta3_const_insn" "adduta3_const_insn"
+(define_insn "add<mode>3_const_insn"
+ [(set (reg:ALL8 ACC_A)
+ (plus:ALL8 (reg:ALL8 ACC_A)
+ (match_operand:ALL8 0 "const_operand" "n Ynn")))]
"avr_have_dimode
&& !s8_operand (operands[0], VOIDmode)"
{
@@ -116,30 +134,62 @@
;; Subtraction
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_expand "subdi3"
- [(parallel [(match_operand:DI 0 "general_operand" "")
- (match_operand:DI 1 "general_operand" "")
- (match_operand:DI 2 "general_operand" "")])]
+;; "subdi3"
+;; "subdq3" "subudq3"
+;; "subda3" "subuda3"
+;; "subta3" "subuta3"
+(define_expand "sub<mode>3"
+ [(parallel [(match_operand:ALL8 0 "general_operand" "")
+ (match_operand:ALL8 1 "general_operand" "")
+ (match_operand:ALL8 2 "general_operand" "")])]
"avr_have_dimode"
{
- rtx acc_a = gen_rtx_REG (DImode, ACC_A);
+ rtx acc_a = gen_rtx_REG (<MODE>mode, ACC_A);
emit_move_insn (acc_a, operands[1]);
- emit_move_insn (gen_rtx_REG (DImode, ACC_B), operands[2]);
- emit_insn (gen_subdi3_insn ());
+
+ if (const_operand (operands[2], GET_MODE (operands[2])))
+ {
+ emit_insn (gen_sub<mode>3_const_insn (operands[2]));
+ }
+ else
+ {
+ emit_move_insn (gen_rtx_REG (<MODE>mode, ACC_B), operands[2]);
+ emit_insn (gen_sub<mode>3_insn ());
+ }
+
emit_move_insn (operands[0], acc_a);
DONE;
})
-(define_insn "subdi3_insn"
- [(set (reg:DI ACC_A)
- (minus:DI (reg:DI ACC_A)
- (reg:DI ACC_B)))]
+;; "subdi3_insn"
+;; "subdq3_insn" "subudq3_insn"
+;; "subda3_insn" "subuda3_insn"
+;; "subta3_insn" "subuta3_insn"
+(define_insn "sub<mode>3_insn"
+ [(set (reg:ALL8 ACC_A)
+ (minus:ALL8 (reg:ALL8 ACC_A)
+ (reg:ALL8 ACC_B)))]
"avr_have_dimode"
"%~call __subdi3"
[(set_attr "adjust_len" "call")
(set_attr "cc" "set_czn")])
+;; "subdi3_const_insn"
+;; "subdq3_const_insn" "subudq3_const_insn"
+;; "subda3_const_insn" "subuda3_const_insn"
+;; "subta3_const_insn" "subuta3_const_insn"
+(define_insn "sub<mode>3_const_insn"
+ [(set (reg:ALL8 ACC_A)
+ (minus:ALL8 (reg:ALL8 ACC_A)
+ (match_operand:ALL8 0 "const_operand" "n Ynn")))]
+ "avr_have_dimode"
+ {
+ return avr_out_minus64 (operands[0], NULL);
+ }
+ [(set_attr "adjust_len" "minus64")
+ (set_attr "cc" "clobber")])
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Negation
@@ -180,15 +230,19 @@
(pc)))]
"avr_have_dimode")
-(define_expand "cbranchdi4"
- [(parallel [(match_operand:DI 1 "register_operand" "")
- (match_operand:DI 2 "nonmemory_operand" "")
+;; "cbranchdi4"
+;; "cbranchdq4" "cbranchudq4"
+;; "cbranchda4" "cbranchuda4"
+;; "cbranchta4" "cbranchuta4"
+(define_expand "cbranch<mode>4"
+ [(parallel [(match_operand:ALL8 1 "register_operand" "")
+ (match_operand:ALL8 2 "nonmemory_operand" "")
(match_operator 0 "ordered_comparison_operator" [(cc0)
(const_int 0)])
(label_ref (match_operand 3 "" ""))])]
"avr_have_dimode"
{
- rtx acc_a = gen_rtx_REG (DImode, ACC_A);
+ rtx acc_a = gen_rtx_REG (<MODE>mode, ACC_A);
emit_move_insn (acc_a, operands[1]);
@@ -197,25 +251,28 @@
emit_move_insn (gen_rtx_REG (QImode, REG_X), operands[2]);
emit_insn (gen_compare_const8_di2 ());
}
- else if (CONST_INT_P (operands[2])
- || CONST_DOUBLE_P (operands[2]))
+ else if (const_operand (operands[2], GET_MODE (operands[2])))
{
- emit_insn (gen_compare_const_di2 (operands[2]));
+ emit_insn (gen_compare_const_<mode>2 (operands[2]));
}
else
{
- emit_move_insn (gen_rtx_REG (DImode, ACC_B), operands[2]);
- emit_insn (gen_compare_di2 ());
+ emit_move_insn (gen_rtx_REG (<MODE>mode, ACC_B), operands[2]);
+ emit_insn (gen_compare_<mode>2 ());
}
emit_jump_insn (gen_conditional_jump (operands[0], operands[3]));
DONE;
})
-(define_insn "compare_di2"
+;; "compare_di2"
+;; "compare_dq2" "compare_udq2"
+;; "compare_da2" "compare_uda2"
+;; "compare_ta2" "compare_uta2"
+(define_insn "compare_<mode>2"
[(set (cc0)
- (compare (reg:DI ACC_A)
- (reg:DI ACC_B)))]
+ (compare (reg:ALL8 ACC_A)
+ (reg:ALL8 ACC_B)))]
"avr_have_dimode"
"%~call __cmpdi2"
[(set_attr "adjust_len" "call")
@@ -230,10 +287,14 @@
[(set_attr "adjust_len" "call")
(set_attr "cc" "compare")])
-(define_insn "compare_const_di2"
+;; "compare_const_di2"
+;; "compare_const_dq2" "compare_const_udq2"
+;; "compare_const_da2" "compare_const_uda2"
+;; "compare_const_ta2" "compare_const_uta2"
+(define_insn "compare_const_<mode>2"
[(set (cc0)
- (compare (reg:DI ACC_A)
- (match_operand:DI 0 "const_double_operand" "n")))
+ (compare (reg:ALL8 ACC_A)
+ (match_operand:ALL8 0 "const_operand" "n Ynn")))
(clobber (match_scratch:QI 1 "=&d"))]
"avr_have_dimode
&& !s8_operand (operands[0], VOIDmode)"
@@ -254,29 +315,39 @@
;; Shift functions from libgcc are called without defining these insns,
;; but with them we can describe their reduced register footprint.
-;; "ashldi3"
-;; "ashrdi3"
-;; "lshrdi3"
-;; "rotldi3"
-(define_expand "<code_stdname>di3"
- [(parallel [(match_operand:DI 0 "general_operand" "")
- (di_shifts:DI (match_operand:DI 1 "general_operand" "")
- (match_operand:QI 2 "general_operand" ""))])]
+;; "ashldi3" "ashrdi3" "lshrdi3" "rotldi3"
+;; "ashldq3" "ashrdq3" "lshrdq3" "rotldq3"
+;; "ashlda3" "ashrda3" "lshrda3" "rotlda3"
+;; "ashlta3" "ashrta3" "lshrta3" "rotlta3"
+;; "ashludq3" "ashrudq3" "lshrudq3" "rotludq3"
+;; "ashluda3" "ashruda3" "lshruda3" "rotluda3"
+;; "ashluta3" "ashruta3" "lshruta3" "rotluta3"
+(define_expand "<code_stdname><mode>3"
+ [(parallel [(match_operand:ALL8 0 "general_operand" "")
+ (di_shifts:ALL8 (match_operand:ALL8 1 "general_operand" "")
+ (match_operand:QI 2 "general_operand" ""))])]
"avr_have_dimode"
{
- rtx acc_a = gen_rtx_REG (DImode, ACC_A);
+ rtx acc_a = gen_rtx_REG (<MODE>mode, ACC_A);
emit_move_insn (acc_a, operands[1]);
emit_move_insn (gen_rtx_REG (QImode, 16), operands[2]);
- emit_insn (gen_<code_stdname>di3_insn ());
+ emit_insn (gen_<code_stdname><mode>3_insn ());
emit_move_insn (operands[0], acc_a);
DONE;
})
-(define_insn "<code_stdname>di3_insn"
- [(set (reg:DI ACC_A)
- (di_shifts:DI (reg:DI ACC_A)
- (reg:QI 16)))]
+;; "ashldi3_insn" "ashrdi3_insn" "lshrdi3_insn" "rotldi3_insn"
+;; "ashldq3_insn" "ashrdq3_insn" "lshrdq3_insn" "rotldq3_insn"
+;; "ashlda3_insn" "ashrda3_insn" "lshrda3_insn" "rotlda3_insn"
+;; "ashlta3_insn" "ashrta3_insn" "lshrta3_insn" "rotlta3_insn"
+;; "ashludq3_insn" "ashrudq3_insn" "lshrudq3_insn" "rotludq3_insn"
+;; "ashluda3_insn" "ashruda3_insn" "lshruda3_insn" "rotluda3_insn"
+;; "ashluta3_insn" "ashruta3_insn" "lshruta3_insn" "rotluta3_insn"
+(define_insn "<code_stdname><mode>3_insn"
+ [(set (reg:ALL8 ACC_A)
+ (di_shifts:ALL8 (reg:ALL8 ACC_A)
+ (reg:QI 16)))]
"avr_have_dimode"
"%~call __<code_stdname>di3"
[(set_attr "adjust_len" "call")
diff --git a/gcc/config/avr/avr-fixed.md b/gcc/config/avr/avr-fixed.md
new file mode 100644
index 00000000000..bfbdaecf215
--- /dev/null
+++ b/gcc/config/avr/avr-fixed.md
@@ -0,0 +1,287 @@
+;; This file contains instructions that support fixed-point operations
+;; for Atmel AVR micro controllers.
+;; Copyright (C) 2012
+;; Free Software Foundation, Inc.
+;;
+;; Contributed by Sean D'Epagnier (sean@depagnier.com)
+;; Georg-Johann Lay (avr@gjlay.de)
+
+;; This file is part of GCC.
+;;
+;; GCC is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GCC is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GCC; see the file COPYING3. If not see
+;; <http://www.gnu.org/licenses/>.
+
+(define_mode_iterator ALL1Q [(QQ "") (UQQ "")])
+(define_mode_iterator ALL2Q [(HQ "") (UHQ "")])
+(define_mode_iterator ALL2A [(HA "") (UHA "")])
+(define_mode_iterator ALL2QA [(HQ "") (UHQ "")
+ (HA "") (UHA "")])
+(define_mode_iterator ALL4A [(SA "") (USA "")])
+
+;;; Conversions
+
+(define_mode_iterator FIXED_A
+ [(QQ "") (UQQ "")
+ (HQ "") (UHQ "") (HA "") (UHA "")
+ (SQ "") (USQ "") (SA "") (USA "")
+ (DQ "") (UDQ "") (DA "") (UDA "")
+ (TA "") (UTA "")
+ (QI "") (HI "") (SI "") (DI "")])
+
+;; Same so that be can build cross products
+
+(define_mode_iterator FIXED_B
+ [(QQ "") (UQQ "")
+ (HQ "") (UHQ "") (HA "") (UHA "")
+ (SQ "") (USQ "") (SA "") (USA "")
+ (DQ "") (UDQ "") (DA "") (UDA "")
+ (TA "") (UTA "")
+ (QI "") (HI "") (SI "") (DI "")])
+
+(define_insn "fract<FIXED_B:mode><FIXED_A:mode>2"
+ [(set (match_operand:FIXED_A 0 "register_operand" "=r")
+ (fract_convert:FIXED_A
+ (match_operand:FIXED_B 1 "register_operand" "r")))]
+ "<FIXED_B:MODE>mode != <FIXED_A:MODE>mode"
+ {
+ return avr_out_fract (insn, operands, true, NULL);
+ }
+ [(set_attr "cc" "clobber")
+ (set_attr "adjust_len" "sfract")])
+
+(define_insn "fractuns<FIXED_B:mode><FIXED_A:mode>2"
+ [(set (match_operand:FIXED_A 0 "register_operand" "=r")
+ (unsigned_fract_convert:FIXED_A
+ (match_operand:FIXED_B 1 "register_operand" "r")))]
+ "<FIXED_B:MODE>mode != <FIXED_A:MODE>mode"
+ {
+ return avr_out_fract (insn, operands, false, NULL);
+ }
+ [(set_attr "cc" "clobber")
+ (set_attr "adjust_len" "ufract")])
+
+;******************************************************************************
+; mul
+
+;; "mulqq3" "muluqq3"
+(define_expand "mul<mode>3"
+ [(parallel [(match_operand:ALL1Q 0 "register_operand" "")
+ (match_operand:ALL1Q 1 "register_operand" "")
+ (match_operand:ALL1Q 2 "register_operand" "")])]
+ ""
+ {
+ emit_insn (AVR_HAVE_MUL
+ ? gen_mul<mode>3_enh (operands[0], operands[1], operands[2])
+ : gen_mul<mode>3_nomul (operands[0], operands[1], operands[2]));
+ DONE;
+ })
+
+(define_insn "mulqq3_enh"
+ [(set (match_operand:QQ 0 "register_operand" "=r")
+ (mult:QQ (match_operand:QQ 1 "register_operand" "a")
+ (match_operand:QQ 2 "register_operand" "a")))]
+ "AVR_HAVE_MUL"
+ "fmuls %1,%2\;dec r1\;brvs 0f\;inc r1\;0:\;mov %0,r1\;clr __zero_reg__"
+ [(set_attr "length" "6")
+ (set_attr "cc" "clobber")])
+
+(define_insn "muluqq3_enh"
+ [(set (match_operand:UQQ 0 "register_operand" "=r")
+ (mult:UQQ (match_operand:UQQ 1 "register_operand" "r")
+ (match_operand:UQQ 2 "register_operand" "r")))]
+ "AVR_HAVE_MUL"
+ "mul %1,%2\;mov %0,r1\;clr __zero_reg__"
+ [(set_attr "length" "3")
+ (set_attr "cc" "clobber")])
+
+(define_expand "mulqq3_nomul"
+ [(set (reg:QQ 24)
+ (match_operand:QQ 1 "register_operand" ""))
+ (set (reg:QQ 25)
+ (match_operand:QQ 2 "register_operand" ""))
+ ;; "*mulqq3.call"
+ (parallel [(set (reg:QQ 23)
+ (mult:QQ (reg:QQ 24)
+ (reg:QQ 25)))
+ (clobber (reg:QI 22))
+ (clobber (reg:HI 24))])
+ (set (match_operand:QQ 0 "register_operand" "")
+ (reg:QQ 23))]
+ "!AVR_HAVE_MUL")
+
+(define_expand "muluqq3_nomul"
+ [(set (reg:UQQ 22)
+ (match_operand:UQQ 1 "register_operand" ""))
+ (set (reg:UQQ 24)
+ (match_operand:UQQ 2 "register_operand" ""))
+ ;; "*umulqihi3.call"
+ (parallel [(set (reg:HI 24)
+ (mult:HI (zero_extend:HI (reg:QI 22))
+ (zero_extend:HI (reg:QI 24))))
+ (clobber (reg:QI 21))
+ (clobber (reg:HI 22))])
+ (set (match_operand:UQQ 0 "register_operand" "")
+ (reg:UQQ 25))]
+ "!AVR_HAVE_MUL")
+
+(define_insn "*mulqq3.call"
+ [(set (reg:QQ 23)
+ (mult:QQ (reg:QQ 24)
+ (reg:QQ 25)))
+ (clobber (reg:QI 22))
+ (clobber (reg:HI 24))]
+ "!AVR_HAVE_MUL"
+ "%~call __mulqq3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
+
+;; "mulhq3" "muluhq3"
+;; "mulha3" "muluha3"
+(define_expand "mul<mode>3"
+ [(set (reg:ALL2QA 18)
+ (match_operand:ALL2QA 1 "register_operand" ""))
+ (set (reg:ALL2QA 26)
+ (match_operand:ALL2QA 2 "register_operand" ""))
+ ;; "*mulhq3.call.enh"
+ (parallel [(set (reg:ALL2QA 24)
+ (mult:ALL2QA (reg:ALL2QA 18)
+ (reg:ALL2QA 26)))
+ (clobber (reg:HI 22))])
+ (set (match_operand:ALL2QA 0 "register_operand" "")
+ (reg:ALL2QA 24))]
+ "AVR_HAVE_MUL")
+
+;; "*mulhq3.call" "*muluhq3.call"
+;; "*mulha3.call" "*muluha3.call"
+(define_insn "*mul<mode>3.call"
+ [(set (reg:ALL2QA 24)
+ (mult:ALL2QA (reg:ALL2QA 18)
+ (reg:ALL2QA 26)))
+ (clobber (reg:HI 22))]
+ "AVR_HAVE_MUL"
+ "%~call __mul<mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
+
+;; On the enhanced core, don't clobber either input and use a separate output
+
+;; "mulsa3" "mulusa3"
+(define_expand "mul<mode>3"
+ [(set (reg:ALL4A 16)
+ (match_operand:ALL4A 1 "register_operand" ""))
+ (set (reg:ALL4A 20)
+ (match_operand:ALL4A 2 "register_operand" ""))
+ (set (reg:ALL4A 24)
+ (mult:ALL4A (reg:ALL4A 16)
+ (reg:ALL4A 20)))
+ (set (match_operand:ALL4A 0 "register_operand" "")
+ (reg:ALL4A 24))]
+ "AVR_HAVE_MUL")
+
+;; "*mulsa3.call" "*mulusa3.call"
+(define_insn "*mul<mode>3.call"
+ [(set (reg:ALL4A 24)
+ (mult:ALL4A (reg:ALL4A 16)
+ (reg:ALL4A 20)))]
+ "AVR_HAVE_MUL"
+ "%~call __mul<mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
+; / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
+; div
+
+(define_code_iterator usdiv [udiv div])
+
+;; "divqq3" "udivuqq3"
+(define_expand "<code><mode>3"
+ [(set (reg:ALL1Q 25)
+ (match_operand:ALL1Q 1 "register_operand" ""))
+ (set (reg:ALL1Q 22)
+ (match_operand:ALL1Q 2 "register_operand" ""))
+ (parallel [(set (reg:ALL1Q 24)
+ (usdiv:ALL1Q (reg:ALL1Q 25)
+ (reg:ALL1Q 22)))
+ (clobber (reg:QI 25))])
+ (set (match_operand:ALL1Q 0 "register_operand" "")
+ (reg:ALL1Q 24))])
+
+;; "*divqq3.call" "*udivuqq3.call"
+(define_insn "*<code><mode>3.call"
+ [(set (reg:ALL1Q 24)
+ (usdiv:ALL1Q (reg:ALL1Q 25)
+ (reg:ALL1Q 22)))
+ (clobber (reg:QI 25))]
+ ""
+ "%~call __<code><mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
+;; "divhq3" "udivuhq3"
+;; "divha3" "udivuha3"
+(define_expand "<code><mode>3"
+ [(set (reg:ALL2QA 26)
+ (match_operand:ALL2QA 1 "register_operand" ""))
+ (set (reg:ALL2QA 22)
+ (match_operand:ALL2QA 2 "register_operand" ""))
+ (parallel [(set (reg:ALL2QA 24)
+ (usdiv:ALL2QA (reg:ALL2QA 26)
+ (reg:ALL2QA 22)))
+ (clobber (reg:HI 26))
+ (clobber (reg:QI 21))])
+ (set (match_operand:ALL2QA 0 "register_operand" "")
+ (reg:ALL2QA 24))])
+
+;; "*divhq3.call" "*udivuhq3.call"
+;; "*divha3.call" "*udivuha3.call"
+(define_insn "*<code><mode>3.call"
+ [(set (reg:ALL2QA 24)
+ (usdiv:ALL2QA (reg:ALL2QA 26)
+ (reg:ALL2QA 22)))
+ (clobber (reg:HI 26))
+ (clobber (reg:QI 21))]
+ ""
+ "%~call __<code><mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
+;; Note the first parameter gets passed in already offset by 2 bytes
+
+;; "divsa3" "udivusa3"
+(define_expand "<code><mode>3"
+ [(set (reg:ALL4A 24)
+ (match_operand:ALL4A 1 "register_operand" ""))
+ (set (reg:ALL4A 18)
+ (match_operand:ALL4A 2 "register_operand" ""))
+ (parallel [(set (reg:ALL4A 22)
+ (usdiv:ALL4A (reg:ALL4A 24)
+ (reg:ALL4A 18)))
+ (clobber (reg:HI 26))
+ (clobber (reg:HI 30))])
+ (set (match_operand:ALL4A 0 "register_operand" "")
+ (reg:ALL4A 22))])
+
+;; "*divsa3.call" "*udivusa3.call"
+(define_insn "*<code><mode>3.call"
+ [(set (reg:ALL4A 22)
+ (usdiv:ALL4A (reg:ALL4A 24)
+ (reg:ALL4A 18)))
+ (clobber (reg:HI 26))
+ (clobber (reg:HI 30))]
+ ""
+ "%~call __<code><mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
diff --git a/gcc/config/avr/avr-log.c b/gcc/config/avr/avr-log.c
index 828c5effb38..f86165d4c8e 100644
--- a/gcc/config/avr/avr-log.c
+++ b/gcc/config/avr/avr-log.c
@@ -28,7 +28,7 @@
#include "input.h"
#include "function.h"
#include "tm_p.h"
-#include "tree-pass.h"
+#include "tree-pass.h" /* for current_pass */
/* This file supplies some functions for AVR back-end developers
with a printf-like interface. The functions are called through
@@ -284,15 +284,15 @@ avr_log_vadump (FILE *file, const char *fmt, va_list ap)
break;
case 'm':
- fputs (GET_MODE_NAME (va_arg (ap, enum machine_mode)), file);
+ fputs (GET_MODE_NAME ((enum machine_mode) va_arg (ap, int)), file);
break;
case 'C':
- fputs (rtx_name[va_arg (ap, enum rtx_code)], file);
+ fputs (rtx_name[va_arg (ap, int)], file);
break;
case 'R':
- fputs (reg_class_names[va_arg (ap, enum reg_class)], file);
+ fputs (reg_class_names[va_arg (ap, int)], file);
break;
case 'F':
diff --git a/gcc/config/avr/avr-modes.def b/gcc/config/avr/avr-modes.def
index 4a16f888ddf..09e6b4983f0 100644
--- a/gcc/config/avr/avr-modes.def
+++ b/gcc/config/avr/avr-modes.def
@@ -1 +1,28 @@
FRACTIONAL_INT_MODE (PSI, 24, 3);
+
+/* On 8 bit machines it requires fewer instructions for fixed point
+ routines if the decimal place is on a byte boundary which is not
+ the default for signed accum types. */
+
+ADJUST_IBIT (HA, 7);
+ADJUST_FBIT (HA, 8);
+
+ADJUST_IBIT (SA, 15);
+ADJUST_FBIT (SA, 16);
+
+ADJUST_IBIT (DA, 31);
+ADJUST_FBIT (DA, 32);
+
+/* Make TA and UTA 64 bits wide.
+ 128 bit wide modes would be insane on a 8-bit machine.
+ This needs special treatment in avr.c and avr-lib.h. */
+
+ADJUST_BYTESIZE (TA, 8);
+ADJUST_ALIGNMENT (TA, 1);
+ADJUST_IBIT (TA, 15);
+ADJUST_FBIT (TA, 48);
+
+ADJUST_BYTESIZE (UTA, 8);
+ADJUST_ALIGNMENT (UTA, 1);
+ADJUST_IBIT (UTA, 16);
+ADJUST_FBIT (UTA, 48);
diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h
index 7b9b05effa6..5d6fabb6b6d 100644
--- a/gcc/config/avr/avr-protos.h
+++ b/gcc/config/avr/avr-protos.h
@@ -79,6 +79,9 @@ extern const char* avr_load_lpm (rtx, rtx*, int*);
extern bool avr_rotate_bytes (rtx operands[]);
+extern const char* avr_out_fract (rtx, rtx[], bool, int*);
+extern rtx avr_to_int_mode (rtx);
+
extern void expand_prologue (void);
extern void expand_epilogue (bool);
extern bool avr_emit_movmemhi (rtx*);
@@ -92,6 +95,8 @@ extern const char* avr_out_plus (rtx*, int*, int*);
extern const char* avr_out_plus_noclobber (rtx*, int*, int*);
extern const char* avr_out_plus64 (rtx, int*);
extern const char* avr_out_addto_sp (rtx*, int*);
+extern const char* avr_out_minus (rtx*, int*, int*);
+extern const char* avr_out_minus64 (rtx, int*);
extern const char* avr_out_xload (rtx, rtx*, int*);
extern const char* avr_out_movmem (rtx, rtx*, int*);
extern const char* avr_out_insert_bits (rtx*, int*);
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 68048b603e8..c17533000c7 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -49,6 +49,10 @@
#include "params.h"
#include "df.h"
+#ifndef CONST_FIXED_P
+#define CONST_FIXED_P(X) (CONST_FIXED == GET_CODE (X))
+#endif
+
/* Maximal allowed offset for an address in the LD command */
#define MAX_LD_OFFSET(MODE) (64 - (signed)GET_MODE_SIZE (MODE))
@@ -264,6 +268,23 @@ avr_popcount_each_byte (rtx xval, int n_bytes, int pop_mask)
return true;
}
+
+/* Access some RTX as INT_MODE. If X is a CONST_FIXED we can get
+ the bit representation of X by "casting" it to CONST_INT. */
+
+rtx
+avr_to_int_mode (rtx x)
+{
+ enum machine_mode mode = GET_MODE (x);
+
+ return VOIDmode == mode
+ ? x
+ : simplify_gen_subreg (int_mode_for_mode (mode), x, mode, 0);
+}
+
+
+/* Implement `TARGET_OPTION_OVERRIDE'. */
+
static void
avr_option_override (void)
{
@@ -389,9 +410,14 @@ avr_regno_reg_class (int r)
}
+/* Implement `TARGET_SCALAR_MODE_SUPPORTED_P'. */
+
static bool
avr_scalar_mode_supported_p (enum machine_mode mode)
{
+ if (ALL_FIXED_POINT_MODE_P (mode))
+ return true;
+
if (PSImode == mode)
return true;
@@ -686,6 +712,17 @@ avr_can_eliminate (const int from, const int to)
&& !frame_pointer_needed));
}
+
+/* Implement TARGET_WARN_FUNC_RETURN. */
+
+static bool
+avr_warn_func_return (tree decl)
+{
+ /* Naked functions are implemented entirely in assembly, including the
+ return sequence, so suppress warnings about this. */
+ return !avr_naked_function_p (decl);
+}
+
/* Compute offset between arg_pointer and frame_pointer. */
int
@@ -704,6 +741,58 @@ avr_initial_elimination_offset (int from, int to)
}
}
+
+/* Helper for the function below. */
+
+static void
+avr_adjust_type_node (tree *node, enum machine_mode mode, int sat_p)
+{
+ *node = make_node (FIXED_POINT_TYPE);
+ TYPE_SATURATING (*node) = sat_p;
+ TYPE_UNSIGNED (*node) = UNSIGNED_FIXED_POINT_MODE_P (mode);
+ TYPE_IBIT (*node) = GET_MODE_IBIT (mode);
+ TYPE_FBIT (*node) = GET_MODE_FBIT (mode);
+ TYPE_PRECISION (*node) = GET_MODE_BITSIZE (mode);
+ TYPE_ALIGN (*node) = 8;
+ SET_TYPE_MODE (*node, mode);
+
+ layout_type (*node);
+}
+
+
+/* Implement `TARGET_BUILD_BUILTIN_VA_LIST'. */
+
+static tree
+avr_build_builtin_va_list (void)
+{
+ /* avr-modes.def adjusts [U]TA to be 64-bit modes with 48 fractional bits.
+ This is more appropriate for the 8-bit machine AVR than 128-bit modes.
+ The ADJUST_IBIT/FBIT are handled in toplev:init_adjust_machine_modes()
+ which is auto-generated by genmodes, but the compiler assigns [U]DAmode
+ to the long long accum modes instead of the desired [U]TAmode.
+
+ Fix this now, right after node setup in tree.c:build_common_tree_nodes().
+ This must run before c-cppbuiltin.c:builtin_define_fixed_point_constants()
+ which built-in defines macros like __ULLACCUM_FBIT__ that are used by
+ libgcc to detect IBIT and FBIT. */
+
+ avr_adjust_type_node (&ta_type_node, TAmode, 0);
+ avr_adjust_type_node (&uta_type_node, UTAmode, 0);
+ avr_adjust_type_node (&sat_ta_type_node, TAmode, 1);
+ avr_adjust_type_node (&sat_uta_type_node, UTAmode, 1);
+
+ unsigned_long_long_accum_type_node = uta_type_node;
+ long_long_accum_type_node = ta_type_node;
+ sat_unsigned_long_long_accum_type_node = sat_uta_type_node;
+ sat_long_long_accum_type_node = sat_ta_type_node;
+
+ /* Dispatch to the default handler. */
+
+ return std_build_builtin_va_list ();
+}
+
+
+/* Implement `TARGET_BUILTIN_SETJMP_FRAME_VALUE'. */
/* Actual start of frame is virtual_stack_vars_rtx this is offset from
frame pointer by +STARTING_FRAME_OFFSET.
Using saved frame = virtual_stack_vars_rtx - STARTING_FRAME_OFFSET
@@ -712,10 +801,13 @@ avr_initial_elimination_offset (int from, int to)
static rtx
avr_builtin_setjmp_frame_value (void)
{
- return gen_rtx_MINUS (Pmode, virtual_stack_vars_rtx,
- gen_int_mode (STARTING_FRAME_OFFSET, Pmode));
+ rtx xval = gen_reg_rtx (Pmode);
+ emit_insn (gen_subhi3 (xval, virtual_stack_vars_rtx,
+ gen_int_mode (STARTING_FRAME_OFFSET, Pmode)));
+ return xval;
}
+
/* Return contents of MEM at frame pointer + stack size + 1 (+2 if 3 byte PC).
This is return address of function. */
rtx
@@ -1569,7 +1661,7 @@ avr_legitimate_address_p (enum machine_mode mode, rtx x, bool strict)
MEM, strict);
if (strict
- && DImode == mode
+ && GET_MODE_SIZE (mode) > 4
&& REG_X == REGNO (x))
{
ok = false;
@@ -1730,7 +1822,7 @@ avr_legitimize_reload_address (rtx *px, enum machine_mode mode,
push_reload (XEXP (mem, 0), NULL_RTX, &XEXP (mem, 0), NULL,
POINTER_REGS, Pmode, VOIDmode, 0, 0,
- 1, addr_type);
+ 1, (enum reload_type) addr_type);
if (avr_log.legitimize_reload_address)
avr_edump (" RCLASS.2 = %R\n IN = %r\n OUT = %r\n",
@@ -1738,7 +1830,7 @@ avr_legitimize_reload_address (rtx *px, enum machine_mode mode,
push_reload (mem, NULL_RTX, &XEXP (x, 0), NULL,
BASE_POINTER_REGS, GET_MODE (x), VOIDmode, 0, 0,
- opnum, type);
+ opnum, (enum reload_type) type);
if (avr_log.legitimize_reload_address)
avr_edump (" RCLASS.2 = %R\n IN = %r\n OUT = %r\n",
@@ -1752,7 +1844,7 @@ avr_legitimize_reload_address (rtx *px, enum machine_mode mode,
{
push_reload (x, NULL_RTX, px, NULL,
POINTER_REGS, GET_MODE (x), VOIDmode, 0, 0,
- opnum, type);
+ opnum, (enum reload_type) type);
if (avr_log.legitimize_reload_address)
avr_edump (" RCLASS.3 = %R\n IN = %r\n OUT = %r\n",
@@ -2070,6 +2162,14 @@ avr_print_operand (FILE *file, rtx x, int code)
/* Use normal symbol for direct address no linker trampoline needed */
output_addr_const (file, x);
}
+ else if (GET_CODE (x) == CONST_FIXED)
+ {
+ HOST_WIDE_INT ival = INTVAL (avr_to_int_mode (x));
+ if (code != 0)
+ output_operand_lossage ("Unsupported code '%c'for fixed-point:",
+ code);
+ fprintf (file, HOST_WIDE_INT_PRINT_DEC, ival);
+ }
else if (GET_CODE (x) == CONST_DOUBLE)
{
long val;
@@ -2105,6 +2205,7 @@ notice_update_cc (rtx body ATTRIBUTE_UNUSED, rtx insn)
case CC_OUT_PLUS:
case CC_OUT_PLUS_NOCLOBBER:
+ case CC_MINUS:
case CC_LDI:
{
rtx *op = recog_data.operand;
@@ -2128,6 +2229,11 @@ notice_update_cc (rtx body ATTRIBUTE_UNUSED, rtx insn)
cc = (enum attr_cc) icc;
break;
+ case CC_MINUS:
+ avr_out_minus (op, &len_dummy, &icc);
+ cc = (enum attr_cc) icc;
+ break;
+
case CC_LDI:
cc = (op[1] == CONST0_RTX (GET_MODE (op[0]))
@@ -2768,9 +2874,11 @@ output_movqi (rtx insn, rtx operands[], int *real_l)
if (real_l)
*real_l = 1;
- if (register_operand (dest, QImode))
+ gcc_assert (1 == GET_MODE_SIZE (GET_MODE (dest)));
+
+ if (REG_P (dest))
{
- if (register_operand (src, QImode)) /* mov r,r */
+ if (REG_P (src)) /* mov r,r */
{
if (test_hard_reg_class (STACK_REG, dest))
return "out %0,%1";
@@ -2792,7 +2900,7 @@ output_movqi (rtx insn, rtx operands[], int *real_l)
rtx xop[2];
xop[0] = dest;
- xop[1] = src == const0_rtx ? zero_reg_rtx : src;
+ xop[1] = src == CONST0_RTX (GET_MODE (dest)) ? zero_reg_rtx : src;
return out_movqi_mr_r (insn, xop, real_l);
}
@@ -2814,6 +2922,8 @@ output_movhi (rtx insn, rtx xop[], int *plen)
return avr_out_lpm (insn, xop, plen);
}
+ gcc_assert (2 == GET_MODE_SIZE (GET_MODE (dest)));
+
if (REG_P (dest))
{
if (REG_P (src)) /* mov r,r */
@@ -2832,7 +2942,6 @@ output_movhi (rtx insn, rtx xop[], int *plen)
return TARGET_NO_INTERRUPTS
? avr_asm_len ("out __SP_H__,%B1" CR_TAB
"out __SP_L__,%A1", xop, plen, -2)
-
: avr_asm_len ("in __tmp_reg__,__SREG__" CR_TAB
"cli" CR_TAB
"out __SP_H__,%B1" CR_TAB
@@ -2869,7 +2978,7 @@ output_movhi (rtx insn, rtx xop[], int *plen)
rtx xop[2];
xop[0] = dest;
- xop[1] = src == const0_rtx ? zero_reg_rtx : src;
+ xop[1] = src == CONST0_RTX (GET_MODE (dest)) ? zero_reg_rtx : src;
return out_movhi_mr_r (insn, xop, plen);
}
@@ -3392,9 +3501,10 @@ output_movsisf (rtx insn, rtx operands[], int *l)
if (!l)
l = &dummy;
- if (register_operand (dest, VOIDmode))
+ gcc_assert (4 == GET_MODE_SIZE (GET_MODE (dest)));
+ if (REG_P (dest))
{
- if (register_operand (src, VOIDmode)) /* mov r,r */
+ if (REG_P (src)) /* mov r,r */
{
if (true_regnum (dest) > true_regnum (src))
{
@@ -3429,10 +3539,10 @@ output_movsisf (rtx insn, rtx operands[], int *l)
{
return output_reload_insisf (operands, NULL_RTX, real_l);
}
- else if (GET_CODE (src) == MEM)
+ else if (MEM_P (src))
return out_movsi_r_mr (insn, operands, real_l); /* mov r,m */
}
- else if (GET_CODE (dest) == MEM)
+ else if (MEM_P (dest))
{
const char *templ;
@@ -4115,14 +4225,25 @@ avr_out_compare (rtx insn, rtx *xop, int *plen)
rtx xval = xop[1];
/* MODE of the comparison. */
- enum machine_mode mode = GET_MODE (xreg);
+ enum machine_mode mode;
/* Number of bytes to operate on. */
- int i, n_bytes = GET_MODE_SIZE (mode);
+ int i, n_bytes = GET_MODE_SIZE (GET_MODE (xreg));
/* Value (0..0xff) held in clobber register xop[2] or -1 if unknown. */
int clobber_val = -1;
+ /* Map fixed mode operands to integer operands with the same binary
+ representation. They are easier to handle in the remainder. */
+
+ if (CONST_FIXED == GET_CODE (xval))
+ {
+ xreg = avr_to_int_mode (xop[0]);
+ xval = avr_to_int_mode (xop[1]);
+ }
+
+ mode = GET_MODE (xreg);
+
gcc_assert (REG_P (xreg));
gcc_assert ((CONST_INT_P (xval) && n_bytes <= 4)
|| (const_double_operand (xval, VOIDmode) && n_bytes == 8));
@@ -4132,7 +4253,7 @@ avr_out_compare (rtx insn, rtx *xop, int *plen)
/* Comparisons == +/-1 and != +/-1 can be done similar to camparing
against 0 by ORing the bytes. This is one instruction shorter.
- Notice that DImode comparisons are always against reg:DI 18
+ Notice that 64-bit comparisons are always against reg:ALL8 18 (ACC_A)
and therefore don't use this. */
if (!test_hard_reg_class (LD_REGS, xreg)
@@ -5873,6 +5994,9 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc)
/* MODE of the operation. */
enum machine_mode mode = GET_MODE (xop[0]);
+ /* INT_MODE of the same size. */
+ enum machine_mode imode = int_mode_for_mode (mode);
+
/* Number of bytes to operate on. */
int i, n_bytes = GET_MODE_SIZE (mode);
@@ -5897,8 +6021,11 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc)
*pcc = (MINUS == code) ? CC_SET_CZN : CC_CLOBBER;
+ if (CONST_FIXED_P (xval))
+ xval = avr_to_int_mode (xval);
+
if (MINUS == code)
- xval = simplify_unary_operation (NEG, mode, xval, mode);
+ xval = simplify_unary_operation (NEG, imode, xval, imode);
op[2] = xop[3];
@@ -5909,7 +6036,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc)
{
/* We operate byte-wise on the destination. */
rtx reg8 = simplify_gen_subreg (QImode, xop[0], mode, i);
- rtx xval8 = simplify_gen_subreg (QImode, xval, mode, i);
+ rtx xval8 = simplify_gen_subreg (QImode, xval, imode, i);
/* 8-bit value to operate with this byte. */
unsigned int val8 = UINTVAL (xval8) & GET_MODE_MASK (QImode);
@@ -5930,7 +6057,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc)
&& i + 2 <= n_bytes
&& test_hard_reg_class (ADDW_REGS, reg8))
{
- rtx xval16 = simplify_gen_subreg (HImode, xval, mode, i);
+ rtx xval16 = simplify_gen_subreg (HImode, xval, imode, i);
unsigned int val16 = UINTVAL (xval16) & GET_MODE_MASK (HImode);
/* Registers R24, X, Y, Z can use ADIW/SBIW with constants < 64
@@ -6074,6 +6201,41 @@ avr_out_plus_noclobber (rtx *xop, int *plen, int *pcc)
}
+/* Output subtraction of register XOP[0] and compile time constant XOP[2]:
+
+ XOP[0] = XOP[0] - XOP[2]
+
+ This is basically the same as `avr_out_plus' except that we subtract.
+ It's needed because (minus x const) is not mapped to (plus x -const)
+ for the fixed point modes. */
+
+const char*
+avr_out_minus (rtx *xop, int *plen, int *pcc)
+{
+ rtx op[4];
+
+ if (pcc)
+ *pcc = (int) CC_SET_CZN;
+
+ if (REG_P (xop[2]))
+ return avr_asm_len ("sub %A0,%A2" CR_TAB
+ "sbc %B0,%B2", xop, plen, -2);
+
+ if (!CONST_INT_P (xop[2])
+ && !CONST_FIXED_P (xop[2]))
+ return avr_asm_len ("subi %A0,lo8(%2)" CR_TAB
+ "sbci %B0,hi8(%2)", xop, plen, -2);
+
+ op[0] = avr_to_int_mode (xop[0]);
+ op[1] = avr_to_int_mode (xop[1]);
+ op[2] = gen_int_mode (-INTVAL (avr_to_int_mode (xop[2])),
+ GET_MODE (op[0]));
+ op[3] = xop[3];
+
+ return avr_out_plus (op, plen, pcc);
+}
+
+
/* Prepare operands of adddi3_const_insn to be used with avr_out_plus_1. */
const char*
@@ -6092,6 +6254,19 @@ avr_out_plus64 (rtx addend, int *plen)
return "";
}
+
+/* Prepare operands of subdi3_const_insn to be used with avr_out_plus64. */
+
+const char*
+avr_out_minus64 (rtx subtrahend, int *plen)
+{
+ rtx xneg = avr_to_int_mode (subtrahend);
+ xneg = simplify_unary_operation (NEG, DImode, xneg, DImode);
+
+ return avr_out_plus64 (xneg, plen);
+}
+
+
/* Output bit operation (IOR, AND, XOR) with register XOP[0] and compile
time constant XOP[2]:
@@ -6431,6 +6606,349 @@ avr_rotate_bytes (rtx operands[])
return true;
}
+
+/* Outputs instructions needed for fixed point type conversion.
+ This includes converting between any fixed point type, as well
+ as converting to any integer type. Conversion between integer
+ types is not supported.
+
+ The number of instructions generated depends on the types
+ being converted and the registers assigned to them.
+
+ The number of instructions required to complete the conversion
+ is least if the registers for source and destination are overlapping
+ and are aligned at the decimal place as actual movement of data is
+ completely avoided. In some cases, the conversion may already be
+ complete without any instructions needed.
+
+ When converting to signed types from signed types, sign extension
+ is implemented.
+
+ Converting signed fractional types requires a bit shift if converting
+ to or from any unsigned fractional type because the decimal place is
+ shifted by 1 bit. When the destination is a signed fractional, the sign
+ is stored in either the carry or T bit. */
+
+const char*
+avr_out_fract (rtx insn, rtx operands[], bool intsigned, int *plen)
+{
+ int i;
+ bool sbit[2];
+ /* ilen: Length of integral part (in bytes)
+ flen: Length of fractional part (in bytes)
+ tlen: Length of operand (in bytes)
+ blen: Length of operand (in bits) */
+ int ilen[2], flen[2], tlen[2], blen[2];
+ int rdest, rsource, offset;
+ int start, end, dir;
+ bool sign_in_T = false, sign_in_Carry = false, sign_done = false;
+ bool widening_sign_extend = false;
+ int clrword = -1, lastclr = 0, clr = 0;
+ rtx xop[6];
+
+ const int dest = 0;
+ const int src = 1;
+
+ xop[dest] = operands[dest];
+ xop[src] = operands[src];
+
+ if (plen)
+ *plen = 0;
+
+ /* Determine format (integer and fractional parts)
+ of types needing conversion. */
+
+ for (i = 0; i < 2; i++)
+ {
+ enum machine_mode mode = GET_MODE (xop[i]);
+
+ tlen[i] = GET_MODE_SIZE (mode);
+ blen[i] = GET_MODE_BITSIZE (mode);
+
+ if (SCALAR_INT_MODE_P (mode))
+ {
+ sbit[i] = intsigned;
+ ilen[i] = GET_MODE_SIZE (mode);
+ flen[i] = 0;
+ }
+ else if (ALL_SCALAR_FIXED_POINT_MODE_P (mode))
+ {
+ sbit[i] = SIGNED_SCALAR_FIXED_POINT_MODE_P (mode);
+ ilen[i] = (GET_MODE_IBIT (mode) + 1) / 8;
+ flen[i] = (GET_MODE_FBIT (mode) + 1) / 8;
+ }
+ else
+ fatal_insn ("unsupported fixed-point conversion", insn);
+ }
+
+ /* Perform sign extension if source and dest are both signed,
+ and there are more integer parts in dest than in source. */
+
+ widening_sign_extend = sbit[dest] && sbit[src] && ilen[dest] > ilen[src];
+
+ rdest = REGNO (xop[dest]);
+ rsource = REGNO (xop[src]);
+ offset = flen[src] - flen[dest];
+
+ /* Position of MSB resp. sign bit. */
+
+ xop[2] = GEN_INT (blen[dest] - 1);
+ xop[3] = GEN_INT (blen[src] - 1);
+
+ /* Store the sign bit if the destination is a signed fract and the source
+ has a sign in the integer part. */
+
+ if (sbit[dest] && ilen[dest] == 0 && sbit[src] && ilen[src] > 0)
+ {
+ /* To avoid using BST and BLD if the source and destination registers
+ overlap or the source is unused after, we can use LSL to store the
+ sign bit in carry since we don't need the integral part of the source.
+ Restoring the sign from carry saves one BLD instruction below. */
+
+ if (reg_unused_after (insn, xop[src])
+ || (rdest < rsource + tlen[src]
+ && rdest + tlen[dest] > rsource))
+ {
+ avr_asm_len ("lsl %T1%t3", xop, plen, 1);
+ sign_in_Carry = true;
+ }
+ else
+ {
+ avr_asm_len ("bst %T1%T3", xop, plen, 1);
+ sign_in_T = true;
+ }
+ }
+
+ /* Pick the correct direction to shift bytes. */
+
+ if (rdest < rsource + offset)
+ {
+ dir = 1;
+ start = 0;
+ end = tlen[dest];
+ }
+ else
+ {
+ dir = -1;
+ start = tlen[dest] - 1;
+ end = -1;
+ }
+
+ /* Perform conversion by moving registers into place, clearing
+ destination registers that do not overlap with any source. */
+
+ for (i = start; i != end; i += dir)
+ {
+ int destloc = rdest + i;
+ int sourceloc = rsource + i + offset;
+
+ /* Source register location is outside range of source register,
+ so clear this byte in the dest. */
+
+ if (sourceloc < rsource
+ || sourceloc >= rsource + tlen[src])
+ {
+ if (AVR_HAVE_MOVW
+ && i + dir != end
+ && (sourceloc + dir < rsource
+ || sourceloc + dir >= rsource + tlen[src])
+ && ((dir == 1 && !(destloc % 2) && !(sourceloc % 2))
+ || (dir == -1 && (destloc % 2) && (sourceloc % 2)))
+ && clrword != -1)
+ {
+ /* Use already cleared word to clear two bytes at a time. */
+
+ int even_i = i & ~1;
+ int even_clrword = clrword & ~1;
+
+ xop[4] = GEN_INT (8 * even_i);
+ xop[5] = GEN_INT (8 * even_clrword);
+ avr_asm_len ("movw %T0%t4,%T0%t5", xop, plen, 1);
+ i += dir;
+ }
+ else
+ {
+ if (i == tlen[dest] - 1
+ && widening_sign_extend
+ && blen[src] - 1 - 8 * offset < 0)
+ {
+ /* The SBRC below that sign-extends would come
+ up with a negative bit number because the sign
+ bit is out of reach. ALso avoid some early-clobber
+ situations because of premature CLR. */
+
+ if (reg_unused_after (insn, xop[src]))
+ avr_asm_len ("lsl %T1%t3" CR_TAB
+ "sbc %T0%t2,%T0%t2", xop, plen, 2);
+ else
+ avr_asm_len ("mov __tmp_reg__,%T1%t3" CR_TAB
+ "lsl __tmp_reg__" CR_TAB
+ "sbc %T0%t2,%T0%t2", xop, plen, 3);
+ sign_done = true;
+
+ continue;
+ }
+
+ /* Do not clear the register if it is going to get
+ sign extended with a MOV later. */
+
+ if (sbit[dest] && sbit[src]
+ && i != tlen[dest] - 1
+ && i >= flen[dest])
+ {
+ continue;
+ }
+
+ xop[4] = GEN_INT (8 * i);
+ avr_asm_len ("clr %T0%t4", xop, plen, 1);
+
+ /* If the last byte was cleared too, we have a cleared
+ word we can MOVW to clear two bytes at a time. */
+
+ if (lastclr)
+ clrword = i;
+
+ clr = 1;
+ }
+ }
+ else if (destloc == sourceloc)
+ {
+ /* Source byte is already in destination: Nothing needed. */
+
+ continue;
+ }
+ else
+ {
+ /* Registers do not line up and source register location
+ is within range: Perform move, shifting with MOV or MOVW. */
+
+ if (AVR_HAVE_MOVW
+ && i + dir != end
+ && sourceloc + dir >= rsource
+ && sourceloc + dir < rsource + tlen[src]
+ && ((dir == 1 && !(destloc % 2) && !(sourceloc % 2))
+ || (dir == -1 && (destloc % 2) && (sourceloc % 2))))
+ {
+ int even_i = i & ~1;
+ int even_i_plus_offset = (i + offset) & ~1;
+
+ xop[4] = GEN_INT (8 * even_i);
+ xop[5] = GEN_INT (8 * even_i_plus_offset);
+ avr_asm_len ("movw %T0%t4,%T1%t5", xop, plen, 1);
+ i += dir;
+ }
+ else
+ {
+ xop[4] = GEN_INT (8 * i);
+ xop[5] = GEN_INT (8 * (i + offset));
+ avr_asm_len ("mov %T0%t4,%T1%t5", xop, plen, 1);
+ }
+ }
+
+ lastclr = clr;
+ clr = 0;
+ }
+
+ /* Perform sign extension if source and dest are both signed,
+ and there are more integer parts in dest than in source. */
+
+ if (widening_sign_extend)
+ {
+ if (!sign_done)
+ {
+ xop[4] = GEN_INT (blen[src] - 1 - 8 * offset);
+
+ /* Register was cleared above, so can become 0xff and extended.
+ Note: Instead of the CLR/SBRC/COM the sign extension could
+ be performed after the LSL below by means of a SBC if only
+ one byte has to be shifted left. */
+
+ avr_asm_len ("sbrc %T0%T4" CR_TAB
+ "com %T0%t2", xop, plen, 2);
+ }
+
+ /* Sign extend additional bytes by MOV and MOVW. */
+
+ start = tlen[dest] - 2;
+ end = flen[dest] + ilen[src] - 1;
+
+ for (i = start; i != end; i--)
+ {
+ if (AVR_HAVE_MOVW && i != start && i-1 != end)
+ {
+ i--;
+ xop[4] = GEN_INT (8 * i);
+ xop[5] = GEN_INT (8 * (tlen[dest] - 2));
+ avr_asm_len ("movw %T0%t4,%T0%t5", xop, plen, 1);
+ }
+ else
+ {
+ xop[4] = GEN_INT (8 * i);
+ xop[5] = GEN_INT (8 * (tlen[dest] - 1));
+ avr_asm_len ("mov %T0%t4,%T0%t5", xop, plen, 1);
+ }
+ }
+ }
+
+ /* If destination is a signed fract, and the source was not, a shift
+ by 1 bit is needed. Also restore sign from carry or T. */
+
+ if (sbit[dest] && !ilen[dest] && (!sbit[src] || ilen[src]))
+ {
+ /* We have flen[src] non-zero fractional bytes to shift.
+ Because of the right shift, handle one byte more so that the
+ LSB won't be lost. */
+
+ int nonzero = flen[src] + 1;
+
+ /* If the LSB is in the T flag and there are no fractional
+ bits, the high byte is zero and no shift needed. */
+
+ if (flen[src] == 0 && sign_in_T)
+ nonzero = 0;
+
+ start = flen[dest] - 1;
+ end = start - nonzero;
+
+ for (i = start; i > end && i >= 0; i--)
+ {
+ xop[4] = GEN_INT (8 * i);
+ if (i == start && !sign_in_Carry)
+ avr_asm_len ("lsr %T0%t4", xop, plen, 1);
+ else
+ avr_asm_len ("ror %T0%t4", xop, plen, 1);
+ }
+
+ if (sign_in_T)
+ {
+ avr_asm_len ("bld %T0%T2", xop, plen, 1);
+ }
+ }
+ else if (sbit[src] && !ilen[src] && (!sbit[dest] || ilen[dest]))
+ {
+ /* If source was a signed fract and dest was not, shift 1 bit
+ other way. */
+
+ start = flen[dest] - flen[src];
+
+ if (start < 0)
+ start = 0;
+
+ for (i = start; i < flen[dest]; i++)
+ {
+ xop[4] = GEN_INT (8 * i);
+
+ if (i == start)
+ avr_asm_len ("lsl %T0%t4", xop, plen, 1);
+ else
+ avr_asm_len ("rol %T0%t4", xop, plen, 1);
+ }
+ }
+
+ return "";
+}
+
+
/* Modifies the length assigned to instruction INSN
LEN is the initially computed length of the insn. */
@@ -6478,6 +6996,8 @@ adjust_insn_length (rtx insn, int len)
case ADJUST_LEN_OUT_PLUS: avr_out_plus (op, &len, NULL); break;
case ADJUST_LEN_PLUS64: avr_out_plus64 (op[0], &len); break;
+ case ADJUST_LEN_MINUS: avr_out_minus (op, &len, NULL); break;
+ case ADJUST_LEN_MINUS64: avr_out_minus64 (op[0], &len); break;
case ADJUST_LEN_OUT_PLUS_NOCLOBBER:
avr_out_plus_noclobber (op, &len, NULL); break;
@@ -6491,6 +7011,9 @@ adjust_insn_length (rtx insn, int len)
case ADJUST_LEN_XLOAD: avr_out_xload (insn, op, &len); break;
case ADJUST_LEN_LOAD_LPM: avr_load_lpm (insn, op, &len); break;
+ case ADJUST_LEN_SFRACT: avr_out_fract (insn, op, true, &len); break;
+ case ADJUST_LEN_UFRACT: avr_out_fract (insn, op, false, &len); break;
+
case ADJUST_LEN_TSTHI: avr_out_tsthi (insn, op, &len); break;
case ADJUST_LEN_TSTPSI: avr_out_tstpsi (insn, op, &len); break;
case ADJUST_LEN_TSTSI: avr_out_tstsi (insn, op, &len); break;
@@ -6672,6 +7195,20 @@ avr_assemble_integer (rtx x, unsigned int size, int aligned_p)
return true;
}
+ else if (CONST_FIXED_P (x))
+ {
+ unsigned n;
+
+ /* varasm fails to handle big fixed modes that don't fit in hwi. */
+
+ for (n = 0; n < size; n++)
+ {
+ rtx xn = simplify_gen_subreg (QImode, x, GET_MODE (x), n);
+ default_assemble_integer (xn, 1, aligned_p);
+ }
+
+ return true;
+ }
return default_assemble_integer (x, size, aligned_p);
}
@@ -7478,6 +8015,7 @@ avr_operand_rtx_cost (rtx x, enum machine_mode mode, enum rtx_code outer,
return 0;
case CONST_INT:
+ case CONST_FIXED:
case CONST_DOUBLE:
return COSTS_N_INSNS (GET_MODE_SIZE (mode));
@@ -7507,6 +8045,7 @@ avr_rtx_costs_1 (rtx x, int codearg, int outer_code ATTRIBUTE_UNUSED,
switch (code)
{
case CONST_INT:
+ case CONST_FIXED:
case CONST_DOUBLE:
case SYMBOL_REF:
case CONST:
@@ -8435,11 +8974,17 @@ avr_compare_pattern (rtx insn)
if (pattern
&& NONJUMP_INSN_P (insn)
&& SET_DEST (pattern) == cc0_rtx
- && GET_CODE (SET_SRC (pattern)) == COMPARE
- && DImode != GET_MODE (XEXP (SET_SRC (pattern), 0))
- && DImode != GET_MODE (XEXP (SET_SRC (pattern), 1)))
+ && GET_CODE (SET_SRC (pattern)) == COMPARE)
{
- return pattern;
+ enum machine_mode mode0 = GET_MODE (XEXP (SET_SRC (pattern), 0));
+ enum machine_mode mode1 = GET_MODE (XEXP (SET_SRC (pattern), 1));
+
+ /* The 64-bit comparisons have fixed operands ACC_A and ACC_B.
+ They must not be swapped, thus skip them. */
+
+ if ((mode0 == VOIDmode || GET_MODE_SIZE (mode0) <= 4)
+ && (mode1 == VOIDmode || GET_MODE_SIZE (mode1) <= 4))
+ return pattern;
}
return NULL_RTX;
@@ -8777,6 +9322,8 @@ avr_2word_insn_p (rtx insn)
return false;
case CODE_FOR_movqi_insn:
+ case CODE_FOR_movuqq_insn:
+ case CODE_FOR_movqq_insn:
{
rtx set = single_set (insn);
rtx src = SET_SRC (set);
@@ -8785,7 +9332,7 @@ avr_2word_insn_p (rtx insn)
/* Factor out LDS and STS from movqi_insn. */
if (MEM_P (dest)
- && (REG_P (src) || src == const0_rtx))
+ && (REG_P (src) || src == CONST0_RTX (GET_MODE (dest))))
{
return CONSTANT_ADDRESS_P (XEXP (dest, 0));
}
@@ -9010,7 +9557,7 @@ output_reload_in_const (rtx *op, rtx clobber_reg, int *len, bool clear_p)
if (NULL_RTX == clobber_reg
&& !test_hard_reg_class (LD_REGS, dest)
- && (! (CONST_INT_P (src) || CONST_DOUBLE_P (src))
+ && (! (CONST_INT_P (src) || CONST_FIXED_P (src) || CONST_DOUBLE_P (src))
|| !avr_popcount_each_byte (src, n_bytes,
(1 << 0) | (1 << 1) | (1 << 8))))
{
@@ -9037,6 +9584,7 @@ output_reload_in_const (rtx *op, rtx clobber_reg, int *len, bool clear_p)
ldreg_p = test_hard_reg_class (LD_REGS, xdest[n]);
if (!CONST_INT_P (src)
+ && !CONST_FIXED_P (src)
&& !CONST_DOUBLE_P (src))
{
static const char* const asm_code[][2] =
@@ -9228,6 +9776,7 @@ output_reload_insisf (rtx *op, rtx clobber_reg, int *len)
if (AVR_HAVE_MOVW
&& !test_hard_reg_class (LD_REGS, op[0])
&& (CONST_INT_P (op[1])
+ || CONST_FIXED_P (op[1])
|| CONST_DOUBLE_P (op[1])))
{
int len_clr, len_noclr;
@@ -10327,7 +10876,7 @@ avr_bdesc[AVR_BUILTIN_COUNT] =
{
#define DEF_BUILTIN(NAME, N_ARGS, ID, TYPE, ICODE) \
- { ICODE, NAME, N_ARGS, NULL_TREE },
+ { (enum insn_code) ICODE, NAME, N_ARGS, NULL_TREE },
#include "builtins.def"
#undef DEF_BUILTIN
};
@@ -10790,6 +11339,9 @@ avr_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *arg,
#undef TARGET_CAN_ELIMINATE
#define TARGET_CAN_ELIMINATE avr_can_eliminate
+#undef TARGET_WARN_FUNC_RETURN
+#define TARGET_WARN_FUNC_RETURN avr_warn_func_return
+
#undef TARGET_CLASS_LIKELY_SPILLED_P
#define TARGET_CLASS_LIKELY_SPILLED_P avr_class_likely_spilled_p
@@ -10820,6 +11372,12 @@ avr_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *arg,
#undef TARGET_SCALAR_MODE_SUPPORTED_P
#define TARGET_SCALAR_MODE_SUPPORTED_P avr_scalar_mode_supported_p
+#undef TARGET_BUILD_BUILTIN_VA_LIST
+#define TARGET_BUILD_BUILTIN_VA_LIST avr_build_builtin_va_list
+
+#undef TARGET_FIXED_POINT_SUPPORTED_P
+#define TARGET_FIXED_POINT_SUPPORTED_P hook_bool_void_true
+
#undef TARGET_ADDR_SPACE_SUBSET_P
#define TARGET_ADDR_SPACE_SUBSET_P avr_addr_space_subset_p
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 48fd49544f8..f8686685b2f 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -95,7 +95,7 @@ struct mcu_type_s {
const char *const name;
/* Index in avr_arch_types[]. */
- int arch;
+ enum avr_arch arch;
/* Must lie outside user's namespace. NULL == no macro. */
const char *const macro;
@@ -261,6 +261,7 @@ enum
#define FLOAT_TYPE_SIZE 32
#define DOUBLE_TYPE_SIZE 32
#define LONG_DOUBLE_TYPE_SIZE 32
+#define LONG_LONG_ACCUM_TYPE_SIZE 64
#define DEFAULT_SIGNED_CHAR 1
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 2b1a83c607a..6146fe6a013 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -88,10 +88,10 @@
(include "predicates.md")
(include "constraints.md")
-
+
;; Condition code settings.
(define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber,
- out_plus, out_plus_noclobber,ldi"
+ out_plus, out_plus_noclobber,ldi,minus"
(const_string "none"))
(define_attr "type" "branch,branch1,arith,xcall"
@@ -139,8 +139,10 @@
(define_attr "adjust_len"
"out_bitop, out_plus, out_plus_noclobber, plus64, addto_sp,
+ minus, minus64,
tsthi, tstpsi, tstsi, compare, compare64, call,
mov8, mov16, mov24, mov32, reload_in16, reload_in24, reload_in32,
+ ufract, sfract,
xload, movmem, load_lpm,
ashlqi, ashrqi, lshrqi,
ashlhi, ashrhi, lshrhi,
@@ -225,8 +227,20 @@
(define_mode_iterator QIDI [(QI "") (HI "") (PSI "") (SI "") (DI "")])
(define_mode_iterator HISI [(HI "") (PSI "") (SI "")])
+(define_mode_iterator ALL1 [(QI "") (QQ "") (UQQ "")])
+(define_mode_iterator ALL2 [(HI "") (HQ "") (UHQ "") (HA "") (UHA "")])
+(define_mode_iterator ALL4 [(SI "") (SQ "") (USQ "") (SA "") (USA "")])
+
;; All supported move-modes
-(define_mode_iterator MOVMODE [(QI "") (HI "") (SI "") (SF "") (PSI "")])
+(define_mode_iterator MOVMODE [(QI "") (HI "") (SI "") (SF "") (PSI "")
+ (QQ "") (UQQ "")
+ (HQ "") (UHQ "") (HA "") (UHA "")
+ (SQ "") (USQ "") (SA "") (USA "")])
+
+;; Supported ordered modes that are 2, 3, 4 bytes wide
+(define_mode_iterator ORDERED234 [(HI "") (SI "") (PSI "")
+ (HQ "") (UHQ "") (HA "") (UHA "")
+ (SQ "") (USQ "") (SA "") (USA "")])
;; Define code iterators
;; Define two incarnations so that we can build the cross product.
@@ -317,9 +331,11 @@
DONE;
})
-(define_insn "pushqi1"
- [(set (mem:QI (post_dec:HI (reg:HI REG_SP)))
- (match_operand:QI 0 "reg_or_0_operand" "r,L"))]
+;; "pushqi1"
+;; "pushqq1" "pushuqq1"
+(define_insn "push<mode>1"
+ [(set (mem:ALL1 (post_dec:HI (reg:HI REG_SP)))
+ (match_operand:ALL1 0 "reg_or_0_operand" "r,Y00"))]
""
"@
push %0
@@ -334,7 +350,11 @@
(PSI "")
(SI "") (CSI "")
(DI "") (CDI "")
- (SF "") (SC "")])
+ (SF "") (SC "")
+ (HA "") (UHA "") (HQ "") (UHQ "")
+ (SA "") (USA "") (SQ "") (USQ "")
+ (DA "") (UDA "") (DQ "") (UDQ "")
+ (TA "") (UTA "")])
(define_expand "push<mode>1"
[(match_operand:MPUSH 0 "" "")]
@@ -422,12 +442,14 @@
(set_attr "cc" "clobber")])
-(define_insn_and_split "xload8_A"
- [(set (match_operand:QI 0 "register_operand" "=r")
- (match_operand:QI 1 "memory_operand" "m"))
+;; "xload8qi_A"
+;; "xload8qq_A" "xload8uqq_A"
+(define_insn_and_split "xload8<mode>_A"
+ [(set (match_operand:ALL1 0 "register_operand" "=r")
+ (match_operand:ALL1 1 "memory_operand" "m"))
(clobber (reg:HI REG_Z))]
"can_create_pseudo_p()
- && !avr_xload_libgcc_p (QImode)
+ && !avr_xload_libgcc_p (<MODE>mode)
&& avr_mem_memx_p (operands[1])
&& REG_P (XEXP (operands[1], 0))"
{ gcc_unreachable(); }
@@ -441,16 +463,16 @@
emit_move_insn (reg_z, simplify_gen_subreg (HImode, addr, PSImode, 0));
emit_move_insn (hi8, simplify_gen_subreg (QImode, addr, PSImode, 2));
- insn = emit_insn (gen_xload_8 (operands[0], hi8));
+ insn = emit_insn (gen_xload<mode>_8 (operands[0], hi8));
set_mem_addr_space (SET_SRC (single_set (insn)),
MEM_ADDR_SPACE (operands[1]));
DONE;
})
-;; "xloadqi_A"
-;; "xloadhi_A"
+;; "xloadqi_A" "xloadqq_A" "xloaduqq_A"
+;; "xloadhi_A" "xloadhq_A" "xloaduhq_A" "xloadha_A" "xloaduha_A"
+;; "xloadsi_A" "xloadsq_A" "xloadusq_A" "xloadsa_A" "xloadusa_A"
;; "xloadpsi_A"
-;; "xloadsi_A"
;; "xloadsf_A"
(define_insn_and_split "xload<mode>_A"
[(set (match_operand:MOVMODE 0 "register_operand" "=r")
@@ -488,11 +510,13 @@
;; Move value from address space memx to a register
;; These insns must be prior to respective generic move insn.
-(define_insn "xload_8"
- [(set (match_operand:QI 0 "register_operand" "=&r,r")
- (mem:QI (lo_sum:PSI (match_operand:QI 1 "register_operand" "r,r")
- (reg:HI REG_Z))))]
- "!avr_xload_libgcc_p (QImode)"
+;; "xloadqi_8"
+;; "xloadqq_8" "xloaduqq_8"
+(define_insn "xload<mode>_8"
+ [(set (match_operand:ALL1 0 "register_operand" "=&r,r")
+ (mem:ALL1 (lo_sum:PSI (match_operand:QI 1 "register_operand" "r,r")
+ (reg:HI REG_Z))))]
+ "!avr_xload_libgcc_p (<MODE>mode)"
{
return avr_out_xload (insn, operands, NULL);
}
@@ -504,11 +528,11 @@
;; R21:Z : 24-bit source address
;; R22 : 1-4 byte output
-;; "xload_qi_libgcc"
-;; "xload_hi_libgcc"
-;; "xload_psi_libgcc"
-;; "xload_si_libgcc"
+;; "xload_qi_libgcc" "xload_qq_libgcc" "xload_uqq_libgcc"
+;; "xload_hi_libgcc" "xload_hq_libgcc" "xload_uhq_libgcc" "xload_ha_libgcc" "xload_uha_libgcc"
+;; "xload_si_libgcc" "xload_sq_libgcc" "xload_usq_libgcc" "xload_sa_libgcc" "xload_usa_libgcc"
;; "xload_sf_libgcc"
+;; "xload_psi_libgcc"
(define_insn "xload_<mode>_libgcc"
[(set (reg:MOVMODE 22)
(mem:MOVMODE (lo_sum:PSI (reg:QI 21)
@@ -528,9 +552,9 @@
;; General move expanders
-;; "movqi"
-;; "movhi"
-;; "movsi"
+;; "movqi" "movqq" "movuqq"
+;; "movhi" "movhq" "movuhq" "movha" "movuha"
+;; "movsi" "movsq" "movusq" "movsa" "movusa"
;; "movsf"
;; "movpsi"
(define_expand "mov<mode>"
@@ -546,8 +570,7 @@
/* One of the operands has to be in a register. */
if (!register_operand (dest, <MODE>mode)
- && !(register_operand (src, <MODE>mode)
- || src == CONST0_RTX (<MODE>mode)))
+ && !reg_or_0_operand (src, <MODE>mode))
{
operands[1] = src = copy_to_mode_reg (<MODE>mode, src);
}
@@ -560,7 +583,9 @@
src = replace_equiv_address (src, copy_to_mode_reg (PSImode, addr));
if (!avr_xload_libgcc_p (<MODE>mode))
- emit_insn (gen_xload8_A (dest, src));
+ /* ; No <mode> here because gen_xload8<mode>_A only iterates over ALL1.
+ ; insn-emit does not depend on the mode, it' all about operands. */
+ emit_insn (gen_xload8qi_A (dest, src));
else
emit_insn (gen_xload<mode>_A (dest, src));
@@ -627,12 +652,13 @@
;; are call-saved registers, and most of LD_REGS are call-used registers,
;; so this may still be a win for registers live across function calls.
-(define_insn "movqi_insn"
- [(set (match_operand:QI 0 "nonimmediate_operand" "=r ,d,Qm,r ,q,r,*r")
- (match_operand:QI 1 "nox_general_operand" "rL,i,rL,Qm,r,q,i"))]
- "register_operand (operands[0], QImode)
- || register_operand (operands[1], QImode)
- || const0_rtx == operands[1]"
+;; "movqi_insn"
+;; "movqq_insn" "movuqq_insn"
+(define_insn "mov<mode>_insn"
+ [(set (match_operand:ALL1 0 "nonimmediate_operand" "=r ,d ,Qm ,r ,q,r,*r")
+ (match_operand:ALL1 1 "nox_general_operand" "r Y00,n Ynn,r Y00,Qm,r,q,i"))]
+ "register_operand (operands[0], <MODE>mode)
+ || reg_or_0_operand (operands[1], <MODE>mode)"
{
return output_movqi (insn, operands, NULL);
}
@@ -643,9 +669,11 @@
;; This is used in peephole2 to optimize loading immediate constants
;; if a scratch register from LD_REGS happens to be available.
-(define_insn "*reload_inqi"
- [(set (match_operand:QI 0 "register_operand" "=l")
- (match_operand:QI 1 "immediate_operand" "i"))
+;; "*reload_inqi"
+;; "*reload_inqq" "*reload_inuqq"
+(define_insn "*reload_in<mode>"
+ [(set (match_operand:ALL1 0 "register_operand" "=l")
+ (match_operand:ALL1 1 "const_operand" "i"))
(clobber (match_operand:QI 2 "register_operand" "=&d"))]
"reload_completed"
"ldi %2,lo8(%1)
@@ -655,14 +683,15 @@
(define_peephole2
[(match_scratch:QI 2 "d")
- (set (match_operand:QI 0 "l_register_operand" "")
- (match_operand:QI 1 "immediate_operand" ""))]
- "(operands[1] != const0_rtx
- && operands[1] != const1_rtx
- && operands[1] != constm1_rtx)"
- [(parallel [(set (match_dup 0) (match_dup 1))
- (clobber (match_dup 2))])]
- "")
+ (set (match_operand:ALL1 0 "l_register_operand" "")
+ (match_operand:ALL1 1 "const_operand" ""))]
+ ; No need for a clobber reg for 0x0, 0x01 or 0xff
+ "!satisfies_constraint_Y00 (operands[1])
+ && !satisfies_constraint_Y01 (operands[1])
+ && !satisfies_constraint_Ym1 (operands[1])"
+ [(parallel [(set (match_dup 0)
+ (match_dup 1))
+ (clobber (match_dup 2))])])
;;============================================================================
;; move word (16 bit)
@@ -693,18 +722,20 @@
(define_peephole2
[(match_scratch:QI 2 "d")
- (set (match_operand:HI 0 "l_register_operand" "")
- (match_operand:HI 1 "immediate_operand" ""))]
- "(operands[1] != const0_rtx
- && operands[1] != constm1_rtx)"
- [(parallel [(set (match_dup 0) (match_dup 1))
- (clobber (match_dup 2))])]
- "")
+ (set (match_operand:ALL2 0 "l_register_operand" "")
+ (match_operand:ALL2 1 "const_or_immediate_operand" ""))]
+ "operands[1] != CONST0_RTX (<MODE>mode)"
+ [(parallel [(set (match_dup 0)
+ (match_dup 1))
+ (clobber (match_dup 2))])])
;; '*' because it is not used in rtl generation, only in above peephole
-(define_insn "*reload_inhi"
- [(set (match_operand:HI 0 "register_operand" "=r")
- (match_operand:HI 1 "immediate_operand" "i"))
+;; "*reload_inhi"
+;; "*reload_inhq" "*reload_inuhq"
+;; "*reload_inha" "*reload_inuha"
+(define_insn "*reload_in<mode>"
+ [(set (match_operand:ALL2 0 "l_register_operand" "=l")
+ (match_operand:ALL2 1 "immediate_operand" "i"))
(clobber (match_operand:QI 2 "register_operand" "=&d"))]
"reload_completed"
{
@@ -712,14 +743,16 @@
}
[(set_attr "length" "4")
(set_attr "adjust_len" "reload_in16")
- (set_attr "cc" "none")])
+ (set_attr "cc" "clobber")])
-(define_insn "*movhi"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m ,d,*r,q,r")
- (match_operand:HI 1 "nox_general_operand" "r,L,m,rL,i,i ,r,q"))]
- "register_operand (operands[0], HImode)
- || register_operand (operands[1], HImode)
- || const0_rtx == operands[1]"
+;; "*movhi"
+;; "*movhq" "*movuhq"
+;; "*movha" "*movuha"
+(define_insn "*mov<mode>"
+ [(set (match_operand:ALL2 0 "nonimmediate_operand" "=r,r ,r,m ,d,*r,q,r")
+ (match_operand:ALL2 1 "nox_general_operand" "r,Y00,m,r Y00,i,i ,r,q"))]
+ "register_operand (operands[0], <MODE>mode)
+ || reg_or_0_operand (operands[1], <MODE>mode)"
{
return output_movhi (insn, operands, NULL);
}
@@ -728,28 +761,30 @@
(set_attr "cc" "none,none,clobber,clobber,none,clobber,none,none")])
(define_peephole2 ; movw
- [(set (match_operand:QI 0 "even_register_operand" "")
- (match_operand:QI 1 "even_register_operand" ""))
- (set (match_operand:QI 2 "odd_register_operand" "")
- (match_operand:QI 3 "odd_register_operand" ""))]
+ [(set (match_operand:ALL1 0 "even_register_operand" "")
+ (match_operand:ALL1 1 "even_register_operand" ""))
+ (set (match_operand:ALL1 2 "odd_register_operand" "")
+ (match_operand:ALL1 3 "odd_register_operand" ""))]
"(AVR_HAVE_MOVW
&& REGNO (operands[0]) == REGNO (operands[2]) - 1
&& REGNO (operands[1]) == REGNO (operands[3]) - 1)"
- [(set (match_dup 4) (match_dup 5))]
+ [(set (match_dup 4)
+ (match_dup 5))]
{
operands[4] = gen_rtx_REG (HImode, REGNO (operands[0]));
operands[5] = gen_rtx_REG (HImode, REGNO (operands[1]));
})
(define_peephole2 ; movw_r
- [(set (match_operand:QI 0 "odd_register_operand" "")
- (match_operand:QI 1 "odd_register_operand" ""))
- (set (match_operand:QI 2 "even_register_operand" "")
- (match_operand:QI 3 "even_register_operand" ""))]
+ [(set (match_operand:ALL1 0 "odd_register_operand" "")
+ (match_operand:ALL1 1 "odd_register_operand" ""))
+ (set (match_operand:ALL1 2 "even_register_operand" "")
+ (match_operand:ALL1 3 "even_register_operand" ""))]
"(AVR_HAVE_MOVW
&& REGNO (operands[2]) == REGNO (operands[0]) - 1
&& REGNO (operands[3]) == REGNO (operands[1]) - 1)"
- [(set (match_dup 4) (match_dup 5))]
+ [(set (match_dup 4)
+ (match_dup 5))]
{
operands[4] = gen_rtx_REG (HImode, REGNO (operands[2]));
operands[5] = gen_rtx_REG (HImode, REGNO (operands[3]));
@@ -801,19 +836,21 @@
(define_peephole2 ; *reload_insi
[(match_scratch:QI 2 "d")
- (set (match_operand:SI 0 "l_register_operand" "")
- (match_operand:SI 1 "const_int_operand" ""))
+ (set (match_operand:ALL4 0 "l_register_operand" "")
+ (match_operand:ALL4 1 "immediate_operand" ""))
(match_dup 2)]
- "(operands[1] != const0_rtx
- && operands[1] != constm1_rtx)"
- [(parallel [(set (match_dup 0) (match_dup 1))
- (clobber (match_dup 2))])]
- "")
+ "operands[1] != CONST0_RTX (<MODE>mode)"
+ [(parallel [(set (match_dup 0)
+ (match_dup 1))
+ (clobber (match_dup 2))])])
;; '*' because it is not used in rtl generation.
+;; "*reload_insi"
+;; "*reload_insq" "*reload_inusq"
+;; "*reload_insa" "*reload_inusa"
(define_insn "*reload_insi"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (match_operand:SI 1 "const_int_operand" "n"))
+ [(set (match_operand:ALL4 0 "register_operand" "=r")
+ (match_operand:ALL4 1 "immediate_operand" "n Ynn"))
(clobber (match_operand:QI 2 "register_operand" "=&d"))]
"reload_completed"
{
@@ -824,12 +861,14 @@
(set_attr "cc" "clobber")])
-(define_insn "*movsi"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r ,Qm,!d,r")
- (match_operand:SI 1 "nox_general_operand" "r,L,Qm,rL,i ,i"))]
- "register_operand (operands[0], SImode)
- || register_operand (operands[1], SImode)
- || const0_rtx == operands[1]"
+;; "*movsi"
+;; "*movsq" "*movusq"
+;; "*movsa" "*movusa"
+(define_insn "*mov<mode>"
+ [(set (match_operand:ALL4 0 "nonimmediate_operand" "=r,r ,r ,Qm ,!d,r")
+ (match_operand:ALL4 1 "nox_general_operand" "r,Y00,Qm,r Y00,i ,i"))]
+ "register_operand (operands[0], <MODE>mode)
+ || reg_or_0_operand (operands[1], <MODE>mode)"
{
return output_movsisf (insn, operands, NULL);
}
@@ -844,8 +883,7 @@
[(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,r ,Qm,!d,r")
(match_operand:SF 1 "nox_general_operand" "r,G,Qm,rG,F ,F"))]
"register_operand (operands[0], SFmode)
- || register_operand (operands[1], SFmode)
- || operands[1] == CONST0_RTX (SFmode)"
+ || reg_or_0_operand (operands[1], SFmode)"
{
return output_movsisf (insn, operands, NULL);
}
@@ -861,8 +899,7 @@
"operands[1] != CONST0_RTX (SFmode)"
[(parallel [(set (match_dup 0)
(match_dup 1))
- (clobber (match_dup 2))])]
- "")
+ (clobber (match_dup 2))])])
;; '*' because it is not used in rtl generation.
(define_insn "*reload_insf"
@@ -1015,9 +1052,10 @@
(set (match_dup 4)
(plus:HI (match_dup 4)
(const_int -1)))
- (set (match_operand:HI 0 "register_operand" "")
- (minus:HI (match_dup 4)
- (match_dup 5)))]
+ (parallel [(set (match_operand:HI 0 "register_operand" "")
+ (minus:HI (match_dup 4)
+ (match_dup 5)))
+ (clobber (scratch:QI))])]
""
{
rtx addr;
@@ -1043,10 +1081,12 @@
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; add bytes
-(define_insn "addqi3"
- [(set (match_operand:QI 0 "register_operand" "=r,d,r,r,r,r")
- (plus:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0,0")
- (match_operand:QI 2 "nonmemory_operand" "r,i,P,N,K,Cm2")))]
+;; "addqi3"
+;; "addqq3" "adduqq3"
+(define_insn "add<mode>3"
+ [(set (match_operand:ALL1 0 "register_operand" "=r,d ,r ,r ,r ,r")
+ (plus:ALL1 (match_operand:ALL1 1 "register_operand" "%0,0 ,0 ,0 ,0 ,0")
+ (match_operand:ALL1 2 "nonmemory_operand" "r,n Ynn,Y01,Ym1,Y02,Ym2")))]
""
"@
add %0,%2
@@ -1058,11 +1098,13 @@
[(set_attr "length" "1,1,1,1,2,2")
(set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")])
-
-(define_expand "addhi3"
- [(set (match_operand:HI 0 "register_operand" "")
- (plus:HI (match_operand:HI 1 "register_operand" "")
- (match_operand:HI 2 "nonmemory_operand" "")))]
+;; "addhi3"
+;; "addhq3" "adduhq3"
+;; "addha3" "adduha3"
+(define_expand "add<mode>3"
+ [(set (match_operand:ALL2 0 "register_operand" "")
+ (plus:ALL2 (match_operand:ALL2 1 "register_operand" "")
+ (match_operand:ALL2 2 "nonmemory_or_const_operand" "")))]
""
{
if (CONST_INT_P (operands[2]))
@@ -1079,6 +1121,12 @@
DONE;
}
}
+
+ if (CONST_FIXED == GET_CODE (operands[2]))
+ {
+ emit_insn (gen_add<mode>3_clobber (operands[0], operands[1], operands[2]));
+ DONE;
+ }
})
@@ -1124,24 +1172,22 @@
[(set_attr "length" "6")
(set_attr "adjust_len" "addto_sp")])
-(define_insn "*addhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,d,!w,d")
- (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0 ,0")
- (match_operand:HI 2 "nonmemory_operand" "r,s,IJ,n")))]
+;; "*addhi3"
+;; "*addhq3" "*adduhq3"
+;; "*addha3" "*adduha3"
+(define_insn "*add<mode>3"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,d,!w ,d")
+ (plus:ALL2 (match_operand:ALL2 1 "register_operand" "%0,0,0 ,0")
+ (match_operand:ALL2 2 "nonmemory_or_const_operand" "r,s,IJ YIJ,n Ynn")))]
""
{
- static const char * const asm_code[] =
- {
- "add %A0,%A2\;adc %B0,%B2",
- "subi %A0,lo8(-(%2))\;sbci %B0,hi8(-(%2))",
- "",
- ""
- };
-
- if (*asm_code[which_alternative])
- return asm_code[which_alternative];
-
- return avr_out_plus_noclobber (operands, NULL, NULL);
+ if (REG_P (operands[2]))
+ return "add %A0,%A2\;adc %B0,%B2";
+ else if (CONST_INT_P (operands[2])
+ || CONST_FIXED == GET_CODE (operands[2]))
+ return avr_out_plus_noclobber (operands, NULL, NULL);
+ else
+ return "subi %A0,lo8(-(%2))\;sbci %B0,hi8(-(%2))";
}
[(set_attr "length" "2,2,2,2")
(set_attr "adjust_len" "*,*,out_plus_noclobber,out_plus_noclobber")
@@ -1152,41 +1198,44 @@
;; itself because that insn is special to reload.
(define_peephole2 ; addhi3_clobber
- [(set (match_operand:HI 0 "d_register_operand" "")
- (match_operand:HI 1 "const_int_operand" ""))
- (set (match_operand:HI 2 "l_register_operand" "")
- (plus:HI (match_dup 2)
- (match_dup 0)))]
+ [(set (match_operand:ALL2 0 "d_register_operand" "")
+ (match_operand:ALL2 1 "const_operand" ""))
+ (set (match_operand:ALL2 2 "l_register_operand" "")
+ (plus:ALL2 (match_dup 2)
+ (match_dup 0)))]
"peep2_reg_dead_p (2, operands[0])"
[(parallel [(set (match_dup 2)
- (plus:HI (match_dup 2)
- (match_dup 1)))
+ (plus:ALL2 (match_dup 2)
+ (match_dup 1)))
(clobber (match_dup 3))])]
{
- operands[3] = simplify_gen_subreg (QImode, operands[0], HImode, 0);
+ operands[3] = simplify_gen_subreg (QImode, operands[0], <MODE>mode, 0);
})
;; Same, but with reload to NO_LD_REGS
;; Combine *reload_inhi with *addhi3
(define_peephole2 ; addhi3_clobber
- [(parallel [(set (match_operand:HI 0 "l_register_operand" "")
- (match_operand:HI 1 "const_int_operand" ""))
+ [(parallel [(set (match_operand:ALL2 0 "l_register_operand" "")
+ (match_operand:ALL2 1 "const_operand" ""))
(clobber (match_operand:QI 2 "d_register_operand" ""))])
- (set (match_operand:HI 3 "l_register_operand" "")
- (plus:HI (match_dup 3)
- (match_dup 0)))]
+ (set (match_operand:ALL2 3 "l_register_operand" "")
+ (plus:ALL2 (match_dup 3)
+ (match_dup 0)))]
"peep2_reg_dead_p (2, operands[0])"
[(parallel [(set (match_dup 3)
- (plus:HI (match_dup 3)
- (match_dup 1)))
+ (plus:ALL2 (match_dup 3)
+ (match_dup 1)))
(clobber (match_dup 2))])])
-(define_insn "addhi3_clobber"
- [(set (match_operand:HI 0 "register_operand" "=!w,d,r")
- (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0")
- (match_operand:HI 2 "const_int_operand" "IJ,n,n")))
- (clobber (match_scratch:QI 3 "=X,X,&d"))]
+;; "addhi3_clobber"
+;; "addhq3_clobber" "adduhq3_clobber"
+;; "addha3_clobber" "adduha3_clobber"
+(define_insn "add<mode>3_clobber"
+ [(set (match_operand:ALL2 0 "register_operand" "=!w ,d ,r")
+ (plus:ALL2 (match_operand:ALL2 1 "register_operand" "%0 ,0 ,0")
+ (match_operand:ALL2 2 "const_operand" "IJ YIJ,n Ynn,n Ynn")))
+ (clobber (match_scratch:QI 3 "=X ,X ,&d"))]
""
{
gcc_assert (REGNO (operands[0]) == REGNO (operands[1]));
@@ -1198,29 +1247,24 @@
(set_attr "cc" "out_plus")])
-(define_insn "addsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,d ,d,r")
- (plus:SI (match_operand:SI 1 "register_operand" "%0,0 ,0,0")
- (match_operand:SI 2 "nonmemory_operand" "r,s ,n,n")))
- (clobber (match_scratch:QI 3 "=X,X ,X,&d"))]
+;; "addsi3"
+;; "addsq3" "addusq3"
+;; "addsa3" "addusa3"
+(define_insn "add<mode>3"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,d ,r")
+ (plus:ALL4 (match_operand:ALL4 1 "register_operand" "%0,0 ,0")
+ (match_operand:ALL4 2 "nonmemory_operand" "r,i ,n Ynn")))
+ (clobber (match_scratch:QI 3 "=X,X ,&d"))]
""
{
- static const char * const asm_code[] =
- {
- "add %A0,%A2\;adc %B0,%B2\;adc %C0,%C2\;adc %D0,%D2",
- "subi %0,lo8(-(%2))\;sbci %B0,hi8(-(%2))\;sbci %C0,hlo8(-(%2))\;sbci %D0,hhi8(-(%2))",
- "",
- ""
- };
-
- if (*asm_code[which_alternative])
- return asm_code[which_alternative];
+ if (REG_P (operands[2]))
+ return "add %A0,%A2\;adc %B0,%B2\;adc %C0,%C2\;adc %D0,%D2";
return avr_out_plus (operands, NULL, NULL);
}
- [(set_attr "length" "4,4,4,8")
- (set_attr "adjust_len" "*,*,out_plus,out_plus")
- (set_attr "cc" "set_n,set_czn,out_plus,out_plus")])
+ [(set_attr "length" "4,4,8")
+ (set_attr "adjust_len" "*,out_plus,out_plus")
+ (set_attr "cc" "set_n,out_plus,out_plus")])
(define_insn "*addpsi3_zero_extend.qi"
[(set (match_operand:PSI 0 "register_operand" "=r")
@@ -1329,27 +1373,38 @@
;-----------------------------------------------------------------------------
; sub bytes
-(define_insn "subqi3"
- [(set (match_operand:QI 0 "register_operand" "=r,d")
- (minus:QI (match_operand:QI 1 "register_operand" "0,0")
- (match_operand:QI 2 "nonmemory_operand" "r,i")))]
+
+;; "subqi3"
+;; "subqq3" "subuqq3"
+(define_insn "sub<mode>3"
+ [(set (match_operand:ALL1 0 "register_operand" "=r,d ,r ,r ,r ,r")
+ (minus:ALL1 (match_operand:ALL1 1 "register_operand" "0,0 ,0 ,0 ,0 ,0")
+ (match_operand:ALL1 2 "nonmemory_or_const_operand" "r,n Ynn,Y01,Ym1,Y02,Ym2")))]
""
"@
sub %0,%2
- subi %0,lo8(%2)"
- [(set_attr "length" "1,1")
- (set_attr "cc" "set_czn,set_czn")])
+ subi %0,lo8(%2)
+ dec %0
+ inc %0
+ dec %0\;dec %0
+ inc %0\;inc %0"
+ [(set_attr "length" "1,1,1,1,2,2")
+ (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")])
-(define_insn "subhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,d")
- (minus:HI (match_operand:HI 1 "register_operand" "0,0")
- (match_operand:HI 2 "nonmemory_operand" "r,i")))]
+;; "subhi3"
+;; "subhq3" "subuhq3"
+;; "subha3" "subuha3"
+(define_insn "sub<mode>3"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,d ,*r")
+ (minus:ALL2 (match_operand:ALL2 1 "register_operand" "0,0 ,0")
+ (match_operand:ALL2 2 "nonmemory_or_const_operand" "r,i Ynn,Ynn")))
+ (clobber (match_scratch:QI 3 "=X,X ,&d"))]
""
- "@
- sub %A0,%A2\;sbc %B0,%B2
- subi %A0,lo8(%2)\;sbci %B0,hi8(%2)"
- [(set_attr "length" "2,2")
- (set_attr "cc" "set_czn,set_czn")])
+ {
+ return avr_out_minus (operands, NULL, NULL);
+ }
+ [(set_attr "adjust_len" "minus")
+ (set_attr "cc" "minus")])
(define_insn "*subhi3_zero_extend1"
[(set (match_operand:HI 0 "register_operand" "=r")
@@ -1373,13 +1428,23 @@
[(set_attr "length" "5")
(set_attr "cc" "clobber")])
-(define_insn "subsi3"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (minus:SI (match_operand:SI 1 "register_operand" "0")
- (match_operand:SI 2 "register_operand" "r")))]
+;; "subsi3"
+;; "subsq3" "subusq3"
+;; "subsa3" "subusa3"
+(define_insn "sub<mode>3"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,d ,r")
+ (minus:ALL4 (match_operand:ALL4 1 "register_operand" "0,0 ,0")
+ (match_operand:ALL4 2 "nonmemory_or_const_operand" "r,n Ynn,Ynn")))
+ (clobber (match_scratch:QI 3 "=X,X ,&d"))]
""
- "sub %0,%2\;sbc %B0,%B2\;sbc %C0,%C2\;sbc %D0,%D2"
+ {
+ if (REG_P (operands[2]))
+ return "sub %0,%2\;sbc %B0,%B2\;sbc %C0,%C2\;sbc %D0,%D2";
+
+ return avr_out_minus (operands, NULL, NULL);
+ }
[(set_attr "length" "4")
+ (set_attr "adjust_len" "*,minus,minus")
(set_attr "cc" "set_czn")])
(define_insn "*subsi3_zero_extend"
@@ -1515,8 +1580,18 @@
adc %A0,__zero_reg__\;adc %B0,__zero_reg__\;adc %C0,__zero_reg__\;adc %D0,__zero_reg__"
[(set_attr "length" "6")
(set_attr "cc" "clobber")])
-
+(define_insn "*umulqihi3.call"
+ [(set (reg:HI 24)
+ (mult:HI (zero_extend:HI (reg:QI 22))
+ (zero_extend:HI (reg:QI 24))))
+ (clobber (reg:QI 21))
+ (clobber (reg:HI 22))]
+ "!AVR_HAVE_MUL"
+ "%~call __umulqihi3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
;; "umulqihi3"
;; "mulqihi3"
(define_insn "<extend_u>mulqihi3"
@@ -3303,44 +3378,58 @@
;;<< << << << << << << << << << << << << << << << << << << << << << << << << <<
;; arithmetic shift left
-(define_expand "ashlqi3"
- [(set (match_operand:QI 0 "register_operand" "")
- (ashift:QI (match_operand:QI 1 "register_operand" "")
- (match_operand:QI 2 "nop_general_operand" "")))])
+;; "ashlqi3"
+;; "ashlqq3" "ashluqq3"
+(define_expand "ashl<mode>3"
+ [(set (match_operand:ALL1 0 "register_operand" "")
+ (ashift:ALL1 (match_operand:ALL1 1 "register_operand" "")
+ (match_operand:QI 2 "nop_general_operand" "")))])
(define_split ; ashlqi3_const4
- [(set (match_operand:QI 0 "d_register_operand" "")
- (ashift:QI (match_dup 0)
- (const_int 4)))]
+ [(set (match_operand:ALL1 0 "d_register_operand" "")
+ (ashift:ALL1 (match_dup 0)
+ (const_int 4)))]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (and:QI (match_dup 0) (const_int -16)))]
- "")
+ [(set (match_dup 1)
+ (rotate:QI (match_dup 1)
+ (const_int 4)))
+ (set (match_dup 1)
+ (and:QI (match_dup 1)
+ (const_int -16)))]
+ {
+ operands[1] = avr_to_int_mode (operands[0]);
+ })
(define_split ; ashlqi3_const5
- [(set (match_operand:QI 0 "d_register_operand" "")
- (ashift:QI (match_dup 0)
- (const_int 5)))]
+ [(set (match_operand:ALL1 0 "d_register_operand" "")
+ (ashift:ALL1 (match_dup 0)
+ (const_int 5)))]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 1)))
- (set (match_dup 0) (and:QI (match_dup 0) (const_int -32)))]
- "")
+ [(set (match_dup 1) (rotate:QI (match_dup 1) (const_int 4)))
+ (set (match_dup 1) (ashift:QI (match_dup 1) (const_int 1)))
+ (set (match_dup 1) (and:QI (match_dup 1) (const_int -32)))]
+ {
+ operands[1] = avr_to_int_mode (operands[0]);
+ })
(define_split ; ashlqi3_const6
- [(set (match_operand:QI 0 "d_register_operand" "")
- (ashift:QI (match_dup 0)
- (const_int 6)))]
+ [(set (match_operand:ALL1 0 "d_register_operand" "")
+ (ashift:ALL1 (match_dup 0)
+ (const_int 6)))]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 2)))
- (set (match_dup 0) (and:QI (match_dup 0) (const_int -64)))]
- "")
+ [(set (match_dup 1) (rotate:QI (match_dup 1) (const_int 4)))
+ (set (match_dup 1) (ashift:QI (match_dup 1) (const_int 2)))
+ (set (match_dup 1) (and:QI (match_dup 1) (const_int -64)))]
+ {
+ operands[1] = avr_to_int_mode (operands[0]);
+ })
-(define_insn "*ashlqi3"
- [(set (match_operand:QI 0 "register_operand" "=r,r,r,r,!d,r,r")
- (ashift:QI (match_operand:QI 1 "register_operand" "0,0,0,0,0 ,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,K,n ,n,Qm")))]
+;; "*ashlqi3"
+;; "*ashlqq3" "*ashluqq3"
+(define_insn "*ashl<mode>3"
+ [(set (match_operand:ALL1 0 "register_operand" "=r,r,r,r,!d,r,r")
+ (ashift:ALL1 (match_operand:ALL1 1 "register_operand" "0,0,0,0,0 ,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,K,n ,n,Qm")))]
""
{
return ashlqi3_out (insn, operands, NULL);
@@ -3349,10 +3438,10 @@
(set_attr "adjust_len" "ashlqi")
(set_attr "cc" "clobber,none,set_czn,set_czn,set_czn,set_czn,clobber")])
-(define_insn "ashlhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r,r,r")
- (ashift:HI (match_operand:HI 1 "register_operand" "0,0,0,r,0,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
+(define_insn "ashl<mode>3"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r,r,r")
+ (ashift:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,0,r,0,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
""
{
return ashlhi3_out (insn, operands, NULL);
@@ -3377,8 +3466,7 @@
""
[(set (match_dup 0)
(ashift:QI (match_dup 1)
- (match_dup 2)))]
- "")
+ (match_dup 2)))])
;; ??? Combiner does not recognize that it could split the following insn;
;; presumably because he has no register handy?
@@ -3443,10 +3531,13 @@
})
-(define_insn "ashlsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r")
- (ashift:SI (match_operand:SI 1 "register_operand" "0,0,0,r,0,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
+;; "ashlsi3"
+;; "ashlsq3" "ashlusq3"
+;; "ashlsa3" "ashlusa3"
+(define_insn "ashl<mode>3"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,r,r,r,r,r,r")
+ (ashift:ALL4 (match_operand:ALL4 1 "register_operand" "0,0,0,r,0,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
""
{
return ashlsi3_out (insn, operands, NULL);
@@ -3458,55 +3549,65 @@
;; Optimize if a scratch register from LD_REGS happens to be available.
(define_peephole2 ; ashlqi3_l_const4
- [(set (match_operand:QI 0 "l_register_operand" "")
- (ashift:QI (match_dup 0)
- (const_int 4)))
+ [(set (match_operand:ALL1 0 "l_register_operand" "")
+ (ashift:ALL1 (match_dup 0)
+ (const_int 4)))
(match_scratch:QI 1 "d")]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
+ [(set (match_dup 2) (rotate:QI (match_dup 2) (const_int 4)))
(set (match_dup 1) (const_int -16))
- (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))]
- "")
+ (set (match_dup 2) (and:QI (match_dup 2) (match_dup 1)))]
+ {
+ operands[2] = avr_to_int_mode (operands[0]);
+ })
(define_peephole2 ; ashlqi3_l_const5
- [(set (match_operand:QI 0 "l_register_operand" "")
- (ashift:QI (match_dup 0)
- (const_int 5)))
+ [(set (match_operand:ALL1 0 "l_register_operand" "")
+ (ashift:ALL1 (match_dup 0)
+ (const_int 5)))
(match_scratch:QI 1 "d")]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 1)))
+ [(set (match_dup 2) (rotate:QI (match_dup 2) (const_int 4)))
+ (set (match_dup 2) (ashift:QI (match_dup 2) (const_int 1)))
(set (match_dup 1) (const_int -32))
- (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))]
- "")
+ (set (match_dup 2) (and:QI (match_dup 2) (match_dup 1)))]
+ {
+ operands[2] = avr_to_int_mode (operands[0]);
+ })
(define_peephole2 ; ashlqi3_l_const6
- [(set (match_operand:QI 0 "l_register_operand" "")
- (ashift:QI (match_dup 0)
- (const_int 6)))
+ [(set (match_operand:ALL1 0 "l_register_operand" "")
+ (ashift:ALL1 (match_dup 0)
+ (const_int 6)))
(match_scratch:QI 1 "d")]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 2)))
+ [(set (match_dup 2) (rotate:QI (match_dup 2) (const_int 4)))
+ (set (match_dup 2) (ashift:QI (match_dup 2) (const_int 2)))
(set (match_dup 1) (const_int -64))
- (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))]
- "")
+ (set (match_dup 2) (and:QI (match_dup 2) (match_dup 1)))]
+ {
+ operands[2] = avr_to_int_mode (operands[0]);
+ })
(define_peephole2
[(match_scratch:QI 3 "d")
- (set (match_operand:HI 0 "register_operand" "")
- (ashift:HI (match_operand:HI 1 "register_operand" "")
- (match_operand:QI 2 "const_int_operand" "")))]
+ (set (match_operand:ALL2 0 "register_operand" "")
+ (ashift:ALL2 (match_operand:ALL2 1 "register_operand" "")
+ (match_operand:QI 2 "const_int_operand" "")))]
""
- [(parallel [(set (match_dup 0) (ashift:HI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 3))])]
- "")
-
-(define_insn "*ashlhi3_const"
- [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
- (ashift:HI (match_operand:HI 1 "register_operand" "0,0,r,0,0")
- (match_operand:QI 2 "const_int_operand" "L,P,O,K,n")))
- (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))]
+ [(parallel [(set (match_dup 0)
+ (ashift:ALL2 (match_dup 1)
+ (match_dup 2)))
+ (clobber (match_dup 3))])])
+
+;; "*ashlhi3_const"
+;; "*ashlhq3_const" "*ashluhq3_const"
+;; "*ashlha3_const" "*ashluha3_const"
+(define_insn "*ashl<mode>3_const"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r")
+ (ashift:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,r,0,0")
+ (match_operand:QI 2 "const_int_operand" "L,P,O,K,n")))
+ (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))]
"reload_completed"
{
return ashlhi3_out (insn, operands, NULL);
@@ -3517,19 +3618,24 @@
(define_peephole2
[(match_scratch:QI 3 "d")
- (set (match_operand:SI 0 "register_operand" "")
- (ashift:SI (match_operand:SI 1 "register_operand" "")
- (match_operand:QI 2 "const_int_operand" "")))]
+ (set (match_operand:ALL4 0 "register_operand" "")
+ (ashift:ALL4 (match_operand:ALL4 1 "register_operand" "")
+ (match_operand:QI 2 "const_int_operand" "")))]
""
- [(parallel [(set (match_dup 0) (ashift:SI (match_dup 1) (match_dup 2)))
+ [(parallel [(set (match_dup 0)
+ (ashift:ALL4 (match_dup 1)
+ (match_dup 2)))
(clobber (match_dup 3))])]
"")
-(define_insn "*ashlsi3_const"
- [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
- (ashift:SI (match_operand:SI 1 "register_operand" "0,0,r,0")
- (match_operand:QI 2 "const_int_operand" "L,P,O,n")))
- (clobber (match_scratch:QI 3 "=X,X,X,&d"))]
+;; "*ashlsi3_const"
+;; "*ashlsq3_const" "*ashlusq3_const"
+;; "*ashlsa3_const" "*ashlusa3_const"
+(define_insn "*ashl<mode>3_const"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,r,r,r")
+ (ashift:ALL4 (match_operand:ALL4 1 "register_operand" "0,0,r,0")
+ (match_operand:QI 2 "const_int_operand" "L,P,O,n")))
+ (clobber (match_scratch:QI 3 "=X,X,X,&d"))]
"reload_completed"
{
return ashlsi3_out (insn, operands, NULL);
@@ -3580,10 +3686,12 @@
;; >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>
;; arithmetic shift right
-(define_insn "ashrqi3"
- [(set (match_operand:QI 0 "register_operand" "=r,r,r,r,r ,r ,r")
- (ashiftrt:QI (match_operand:QI 1 "register_operand" "0,0,0,0,0 ,0 ,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,K,C03 C04 C05,C06 C07,Qm")))]
+;; "ashrqi3"
+;; "ashrqq3" "ashruqq3"
+(define_insn "ashr<mode>3"
+ [(set (match_operand:ALL1 0 "register_operand" "=r,r,r,r,r ,r ,r")
+ (ashiftrt:ALL1 (match_operand:ALL1 1 "register_operand" "0,0,0,0,0 ,0 ,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,K,C03 C04 C05,C06 C07,Qm")))]
""
{
return ashrqi3_out (insn, operands, NULL);
@@ -3592,10 +3700,13 @@
(set_attr "adjust_len" "ashrqi")
(set_attr "cc" "clobber,none,set_czn,set_czn,set_czn,clobber,clobber")])
-(define_insn "ashrhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r,r,r")
- (ashiftrt:HI (match_operand:HI 1 "register_operand" "0,0,0,r,0,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
+;; "ashrhi3"
+;; "ashrhq3" "ashruhq3"
+;; "ashrha3" "ashruha3"
+(define_insn "ashr<mode>3"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r,r,r")
+ (ashiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,0,r,0,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
""
{
return ashrhi3_out (insn, operands, NULL);
@@ -3616,10 +3727,13 @@
[(set_attr "adjust_len" "ashrpsi")
(set_attr "cc" "clobber")])
-(define_insn "ashrsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r")
- (ashiftrt:SI (match_operand:SI 1 "register_operand" "0,0,0,r,0,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
+;; "ashrsi3"
+;; "ashrsq3" "ashrusq3"
+;; "ashrsa3" "ashrusa3"
+(define_insn "ashr<mode>3"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,r,r,r,r,r,r")
+ (ashiftrt:ALL4 (match_operand:ALL4 1 "register_operand" "0,0,0,r,0,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
""
{
return ashrsi3_out (insn, operands, NULL);
@@ -3632,19 +3746,23 @@
(define_peephole2
[(match_scratch:QI 3 "d")
- (set (match_operand:HI 0 "register_operand" "")
- (ashiftrt:HI (match_operand:HI 1 "register_operand" "")
- (match_operand:QI 2 "const_int_operand" "")))]
+ (set (match_operand:ALL2 0 "register_operand" "")
+ (ashiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "")
+ (match_operand:QI 2 "const_int_operand" "")))]
""
- [(parallel [(set (match_dup 0) (ashiftrt:HI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 3))])]
- "")
-
-(define_insn "*ashrhi3_const"
- [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
- (ashiftrt:HI (match_operand:HI 1 "register_operand" "0,0,r,0,0")
- (match_operand:QI 2 "const_int_operand" "L,P,O,K,n")))
- (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))]
+ [(parallel [(set (match_dup 0)
+ (ashiftrt:ALL2 (match_dup 1)
+ (match_dup 2)))
+ (clobber (match_dup 3))])])
+
+;; "*ashrhi3_const"
+;; "*ashrhq3_const" "*ashruhq3_const"
+;; "*ashrha3_const" "*ashruha3_const"
+(define_insn "*ashr<mode>3_const"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r")
+ (ashiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,r,0,0")
+ (match_operand:QI 2 "const_int_operand" "L,P,O,K,n")))
+ (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))]
"reload_completed"
{
return ashrhi3_out (insn, operands, NULL);
@@ -3655,19 +3773,23 @@
(define_peephole2
[(match_scratch:QI 3 "d")
- (set (match_operand:SI 0 "register_operand" "")
- (ashiftrt:SI (match_operand:SI 1 "register_operand" "")
- (match_operand:QI 2 "const_int_operand" "")))]
+ (set (match_operand:ALL4 0 "register_operand" "")
+ (ashiftrt:ALL4 (match_operand:ALL4 1 "register_operand" "")
+ (match_operand:QI 2 "const_int_operand" "")))]
""
- [(parallel [(set (match_dup 0) (ashiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 3))])]
- "")
-
-(define_insn "*ashrsi3_const"
- [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
- (ashiftrt:SI (match_operand:SI 1 "register_operand" "0,0,r,0")
- (match_operand:QI 2 "const_int_operand" "L,P,O,n")))
- (clobber (match_scratch:QI 3 "=X,X,X,&d"))]
+ [(parallel [(set (match_dup 0)
+ (ashiftrt:ALL4 (match_dup 1)
+ (match_dup 2)))
+ (clobber (match_dup 3))])])
+
+;; "*ashrsi3_const"
+;; "*ashrsq3_const" "*ashrusq3_const"
+;; "*ashrsa3_const" "*ashrusa3_const"
+(define_insn "*ashr<mode>3_const"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,r,r,r")
+ (ashiftrt:ALL4 (match_operand:ALL4 1 "register_operand" "0,0,r,0")
+ (match_operand:QI 2 "const_int_operand" "L,P,O,n")))
+ (clobber (match_scratch:QI 3 "=X,X,X,&d"))]
"reload_completed"
{
return ashrsi3_out (insn, operands, NULL);
@@ -3679,44 +3801,59 @@
;; >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>
;; logical shift right
-(define_expand "lshrqi3"
- [(set (match_operand:QI 0 "register_operand" "")
- (lshiftrt:QI (match_operand:QI 1 "register_operand" "")
- (match_operand:QI 2 "nop_general_operand" "")))])
+;; "lshrqi3"
+;; "lshrqq3 "lshruqq3"
+(define_expand "lshr<mode>3"
+ [(set (match_operand:ALL1 0 "register_operand" "")
+ (lshiftrt:ALL1 (match_operand:ALL1 1 "register_operand" "")
+ (match_operand:QI 2 "nop_general_operand" "")))])
(define_split ; lshrqi3_const4
- [(set (match_operand:QI 0 "d_register_operand" "")
- (lshiftrt:QI (match_dup 0)
- (const_int 4)))]
+ [(set (match_operand:ALL1 0 "d_register_operand" "")
+ (lshiftrt:ALL1 (match_dup 0)
+ (const_int 4)))]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (and:QI (match_dup 0) (const_int 15)))]
- "")
+ [(set (match_dup 1)
+ (rotate:QI (match_dup 1)
+ (const_int 4)))
+ (set (match_dup 1)
+ (and:QI (match_dup 1)
+ (const_int 15)))]
+ {
+ operands[1] = avr_to_int_mode (operands[0]);
+ })
(define_split ; lshrqi3_const5
- [(set (match_operand:QI 0 "d_register_operand" "")
- (lshiftrt:QI (match_dup 0)
- (const_int 5)))]
+ [(set (match_operand:ALL1 0 "d_register_operand" "")
+ (lshiftrt:ALL1 (match_dup 0)
+ (const_int 5)))]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 1)))
- (set (match_dup 0) (and:QI (match_dup 0) (const_int 7)))]
- "")
+ [(set (match_dup 1) (rotate:QI (match_dup 1) (const_int 4)))
+ (set (match_dup 1) (lshiftrt:QI (match_dup 1) (const_int 1)))
+ (set (match_dup 1) (and:QI (match_dup 1) (const_int 7)))]
+ {
+ operands[1] = avr_to_int_mode (operands[0]);
+ })
(define_split ; lshrqi3_const6
[(set (match_operand:QI 0 "d_register_operand" "")
(lshiftrt:QI (match_dup 0)
(const_int 6)))]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 2)))
- (set (match_dup 0) (and:QI (match_dup 0) (const_int 3)))]
- "")
+ [(set (match_dup 1) (rotate:QI (match_dup 1) (const_int 4)))
+ (set (match_dup 1) (lshiftrt:QI (match_dup 1) (const_int 2)))
+ (set (match_dup 1) (and:QI (match_dup 1) (const_int 3)))]
+ {
+ operands[1] = avr_to_int_mode (operands[0]);
+ })
-(define_insn "*lshrqi3"
- [(set (match_operand:QI 0 "register_operand" "=r,r,r,r,!d,r,r")
- (lshiftrt:QI (match_operand:QI 1 "register_operand" "0,0,0,0,0 ,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,K,n ,n,Qm")))]
+;; "*lshrqi3"
+;; "*lshrqq3"
+;; "*lshruqq3"
+(define_insn "*lshr<mode>3"
+ [(set (match_operand:ALL1 0 "register_operand" "=r,r,r,r,!d,r,r")
+ (lshiftrt:ALL1 (match_operand:ALL1 1 "register_operand" "0,0,0,0,0 ,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,K,n ,n,Qm")))]
""
{
return lshrqi3_out (insn, operands, NULL);
@@ -3725,10 +3862,13 @@
(set_attr "adjust_len" "lshrqi")
(set_attr "cc" "clobber,none,set_czn,set_czn,set_czn,set_czn,clobber")])
-(define_insn "lshrhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r,r,r")
- (lshiftrt:HI (match_operand:HI 1 "register_operand" "0,0,0,r,0,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
+;; "lshrhi3"
+;; "lshrhq3" "lshruhq3"
+;; "lshrha3" "lshruha3"
+(define_insn "lshr<mode>3"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r,r,r")
+ (lshiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,0,r,0,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
""
{
return lshrhi3_out (insn, operands, NULL);
@@ -3749,10 +3889,13 @@
[(set_attr "adjust_len" "lshrpsi")
(set_attr "cc" "clobber")])
-(define_insn "lshrsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r")
- (lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0,0,r,0,0,0")
- (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
+;; "lshrsi3"
+;; "lshrsq3" "lshrusq3"
+;; "lshrsa3" "lshrusa3"
+(define_insn "lshr<mode>3"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,r,r,r,r,r,r")
+ (lshiftrt:ALL4 (match_operand:ALL4 1 "register_operand" "0,0,0,r,0,0,0")
+ (match_operand:QI 2 "nop_general_operand" "r,L,P,O,K,n,Qm")))]
""
{
return lshrsi3_out (insn, operands, NULL);
@@ -3764,55 +3907,65 @@
;; Optimize if a scratch register from LD_REGS happens to be available.
(define_peephole2 ; lshrqi3_l_const4
- [(set (match_operand:QI 0 "l_register_operand" "")
- (lshiftrt:QI (match_dup 0)
- (const_int 4)))
+ [(set (match_operand:ALL1 0 "l_register_operand" "")
+ (lshiftrt:ALL1 (match_dup 0)
+ (const_int 4)))
(match_scratch:QI 1 "d")]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
+ [(set (match_dup 2) (rotate:QI (match_dup 2) (const_int 4)))
(set (match_dup 1) (const_int 15))
- (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))]
- "")
+ (set (match_dup 2) (and:QI (match_dup 2) (match_dup 1)))]
+ {
+ operands[2] = avr_to_int_mode (operands[0]);
+ })
(define_peephole2 ; lshrqi3_l_const5
- [(set (match_operand:QI 0 "l_register_operand" "")
- (lshiftrt:QI (match_dup 0)
- (const_int 5)))
+ [(set (match_operand:ALL1 0 "l_register_operand" "")
+ (lshiftrt:ALL1 (match_dup 0)
+ (const_int 5)))
(match_scratch:QI 1 "d")]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 1)))
+ [(set (match_dup 2) (rotate:QI (match_dup 2) (const_int 4)))
+ (set (match_dup 2) (lshiftrt:QI (match_dup 2) (const_int 1)))
(set (match_dup 1) (const_int 7))
- (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))]
- "")
+ (set (match_dup 2) (and:QI (match_dup 2) (match_dup 1)))]
+ {
+ operands[2] = avr_to_int_mode (operands[0]);
+ })
(define_peephole2 ; lshrqi3_l_const6
- [(set (match_operand:QI 0 "l_register_operand" "")
- (lshiftrt:QI (match_dup 0)
- (const_int 6)))
+ [(set (match_operand:ALL1 0 "l_register_operand" "")
+ (lshiftrt:ALL1 (match_dup 0)
+ (const_int 6)))
(match_scratch:QI 1 "d")]
""
- [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4)))
- (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 2)))
+ [(set (match_dup 2) (rotate:QI (match_dup 2) (const_int 4)))
+ (set (match_dup 2) (lshiftrt:QI (match_dup 2) (const_int 2)))
(set (match_dup 1) (const_int 3))
- (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))]
- "")
+ (set (match_dup 2) (and:QI (match_dup 2) (match_dup 1)))]
+ {
+ operands[2] = avr_to_int_mode (operands[0]);
+ })
(define_peephole2
[(match_scratch:QI 3 "d")
- (set (match_operand:HI 0 "register_operand" "")
- (lshiftrt:HI (match_operand:HI 1 "register_operand" "")
- (match_operand:QI 2 "const_int_operand" "")))]
+ (set (match_operand:ALL2 0 "register_operand" "")
+ (lshiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "")
+ (match_operand:QI 2 "const_int_operand" "")))]
""
- [(parallel [(set (match_dup 0) (lshiftrt:HI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 3))])]
- "")
-
-(define_insn "*lshrhi3_const"
- [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
- (lshiftrt:HI (match_operand:HI 1 "register_operand" "0,0,r,0,0")
- (match_operand:QI 2 "const_int_operand" "L,P,O,K,n")))
- (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))]
+ [(parallel [(set (match_dup 0)
+ (lshiftrt:ALL2 (match_dup 1)
+ (match_dup 2)))
+ (clobber (match_dup 3))])])
+
+;; "*lshrhi3_const"
+;; "*lshrhq3_const" "*lshruhq3_const"
+;; "*lshrha3_const" "*lshruha3_const"
+(define_insn "*lshr<mode>3_const"
+ [(set (match_operand:ALL2 0 "register_operand" "=r,r,r,r,r")
+ (lshiftrt:ALL2 (match_operand:ALL2 1 "register_operand" "0,0,r,0,0")
+ (match_operand:QI 2 "const_int_operand" "L,P,O,K,n")))
+ (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))]
"reload_completed"
{
return lshrhi3_out (insn, operands, NULL);
@@ -3823,19 +3976,23 @@
(define_peephole2
[(match_scratch:QI 3 "d")
- (set (match_operand:SI 0 "register_operand" "")
- (lshiftrt:SI (match_operand:SI 1 "register_operand" "")
- (match_operand:QI 2 "const_int_operand" "")))]
+ (set (match_operand:ALL4 0 "register_operand" "")
+ (lshiftrt:ALL4 (match_operand:ALL4 1 "register_operand" "")
+ (match_operand:QI 2 "const_int_operand" "")))]
""
- [(parallel [(set (match_dup 0) (lshiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 3))])]
- "")
-
-(define_insn "*lshrsi3_const"
- [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
- (lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0,r,0")
- (match_operand:QI 2 "const_int_operand" "L,P,O,n")))
- (clobber (match_scratch:QI 3 "=X,X,X,&d"))]
+ [(parallel [(set (match_dup 0)
+ (lshiftrt:ALL4 (match_dup 1)
+ (match_dup 2)))
+ (clobber (match_dup 3))])])
+
+;; "*lshrsi3_const"
+;; "*lshrsq3_const" "*lshrusq3_const"
+;; "*lshrsa3_const" "*lshrusa3_const"
+(define_insn "*lshr<mode>3_const"
+ [(set (match_operand:ALL4 0 "register_operand" "=r,r,r,r")
+ (lshiftrt:ALL4 (match_operand:ALL4 1 "register_operand" "0,0,r,0")
+ (match_operand:QI 2 "const_int_operand" "L,P,O,n")))
+ (clobber (match_scratch:QI 3 "=X,X,X,&d"))]
"reload_completed"
{
return lshrsi3_out (insn, operands, NULL);
@@ -4278,24 +4435,29 @@
[(set_attr "cc" "compare")
(set_attr "length" "4")])
-(define_insn "*reversed_tstsi"
+;; "*reversed_tstsi"
+;; "*reversed_tstsq" "*reversed_tstusq"
+;; "*reversed_tstsa" "*reversed_tstusa"
+(define_insn "*reversed_tst<mode>"
[(set (cc0)
- (compare (const_int 0)
- (match_operand:SI 0 "register_operand" "r")))
- (clobber (match_scratch:QI 1 "=X"))]
- ""
- "cp __zero_reg__,%A0
- cpc __zero_reg__,%B0
- cpc __zero_reg__,%C0
- cpc __zero_reg__,%D0"
+ (compare (match_operand:ALL4 0 "const0_operand" "Y00")
+ (match_operand:ALL4 1 "register_operand" "r")))
+ (clobber (match_scratch:QI 2 "=X"))]
+ ""
+ "cp __zero_reg__,%A1
+ cpc __zero_reg__,%B1
+ cpc __zero_reg__,%C1
+ cpc __zero_reg__,%D1"
[(set_attr "cc" "compare")
(set_attr "length" "4")])
-(define_insn "*cmpqi"
+;; "*cmpqi"
+;; "*cmpqq" "*cmpuqq"
+(define_insn "*cmp<mode>"
[(set (cc0)
- (compare (match_operand:QI 0 "register_operand" "r,r,d")
- (match_operand:QI 1 "nonmemory_operand" "L,r,i")))]
+ (compare (match_operand:ALL1 0 "register_operand" "r ,r,d")
+ (match_operand:ALL1 1 "nonmemory_operand" "Y00,r,i")))]
""
"@
tst %0
@@ -4313,11 +4475,14 @@
[(set_attr "cc" "compare")
(set_attr "length" "1")])
-(define_insn "*cmphi"
+;; "*cmphi"
+;; "*cmphq" "*cmpuhq"
+;; "*cmpha" "*cmpuha"
+(define_insn "*cmp<mode>"
[(set (cc0)
- (compare (match_operand:HI 0 "register_operand" "!w,r,r,d ,r ,d,r")
- (match_operand:HI 1 "nonmemory_operand" "L ,L,r,s ,s ,M,n")))
- (clobber (match_scratch:QI 2 "=X ,X,X,&d,&d ,X,&d"))]
+ (compare (match_operand:ALL2 0 "register_operand" "!w ,r ,r,d ,r ,d,r")
+ (match_operand:ALL2 1 "nonmemory_operand" "Y00,Y00,r,s ,s ,M,n Ynn")))
+ (clobber (match_scratch:QI 2 "=X ,X ,X,&d,&d ,X,&d"))]
""
{
switch (which_alternative)
@@ -4330,11 +4495,15 @@
return "cp %A0,%A1\;cpc %B0,%B1";
case 3:
+ if (<MODE>mode != HImode)
+ break;
return reg_unused_after (insn, operands[0])
? "subi %A0,lo8(%1)\;sbci %B0,hi8(%1)"
: "ldi %2,hi8(%1)\;cpi %A0,lo8(%1)\;cpc %B0,%2";
case 4:
+ if (<MODE>mode != HImode)
+ break;
return "ldi %2,lo8(%1)\;cp %A0,%2\;ldi %2,hi8(%1)\;cpc %B0,%2";
}
@@ -4374,11 +4543,14 @@
(set_attr "length" "3,3,5,6,3,7")
(set_attr "adjust_len" "tstpsi,*,*,*,compare,compare")])
-(define_insn "*cmpsi"
+;; "*cmpsi"
+;; "*cmpsq" "*cmpusq"
+;; "*cmpsa" "*cmpusa"
+(define_insn "*cmp<mode>"
[(set (cc0)
- (compare (match_operand:SI 0 "register_operand" "r,r ,d,r ,r")
- (match_operand:SI 1 "nonmemory_operand" "L,r ,M,M ,n")))
- (clobber (match_scratch:QI 2 "=X,X ,X,&d,&d"))]
+ (compare (match_operand:ALL4 0 "register_operand" "r ,r ,d,r ,r")
+ (match_operand:ALL4 1 "nonmemory_operand" "Y00,r ,M,M ,n Ynn")))
+ (clobber (match_scratch:QI 2 "=X ,X ,X,&d,&d"))]
""
{
if (0 == which_alternative)
@@ -4398,55 +4570,33 @@
;; ----------------------------------------------------------------------
;; Conditional jump instructions
-(define_expand "cbranchsi4"
- [(parallel [(set (cc0)
- (compare (match_operand:SI 1 "register_operand" "")
- (match_operand:SI 2 "nonmemory_operand" "")))
- (clobber (match_scratch:QI 4 ""))])
+;; "cbranchqi4"
+;; "cbranchqq4" "cbranchuqq4"
+(define_expand "cbranch<mode>4"
+ [(set (cc0)
+ (compare (match_operand:ALL1 1 "register_operand" "")
+ (match_operand:ALL1 2 "nonmemory_operand" "")))
(set (pc)
(if_then_else
- (match_operator 0 "ordered_comparison_operator" [(cc0)
- (const_int 0)])
- (label_ref (match_operand 3 "" ""))
- (pc)))]
- "")
-
-(define_expand "cbranchpsi4"
- [(parallel [(set (cc0)
- (compare (match_operand:PSI 1 "register_operand" "")
- (match_operand:PSI 2 "nonmemory_operand" "")))
- (clobber (match_scratch:QI 4 ""))])
- (set (pc)
- (if_then_else (match_operator 0 "ordered_comparison_operator" [(cc0)
- (const_int 0)])
- (label_ref (match_operand 3 "" ""))
- (pc)))]
- "")
+ (match_operator 0 "ordered_comparison_operator" [(cc0)
+ (const_int 0)])
+ (label_ref (match_operand 3 "" ""))
+ (pc)))])
-(define_expand "cbranchhi4"
+;; "cbranchhi4" "cbranchhq4" "cbranchuhq4" "cbranchha4" "cbranchuha4"
+;; "cbranchsi4" "cbranchsq4" "cbranchusq4" "cbranchsa4" "cbranchusa4"
+;; "cbranchpsi4"
+(define_expand "cbranch<mode>4"
[(parallel [(set (cc0)
- (compare (match_operand:HI 1 "register_operand" "")
- (match_operand:HI 2 "nonmemory_operand" "")))
+ (compare (match_operand:ORDERED234 1 "register_operand" "")
+ (match_operand:ORDERED234 2 "nonmemory_operand" "")))
(clobber (match_scratch:QI 4 ""))])
(set (pc)
(if_then_else
- (match_operator 0 "ordered_comparison_operator" [(cc0)
- (const_int 0)])
- (label_ref (match_operand 3 "" ""))
- (pc)))]
- "")
-
-(define_expand "cbranchqi4"
- [(set (cc0)
- (compare (match_operand:QI 1 "register_operand" "")
- (match_operand:QI 2 "nonmemory_operand" "")))
- (set (pc)
- (if_then_else
- (match_operator 0 "ordered_comparison_operator" [(cc0)
- (const_int 0)])
- (label_ref (match_operand 3 "" ""))
- (pc)))]
- "")
+ (match_operator 0 "ordered_comparison_operator" [(cc0)
+ (const_int 0)])
+ (label_ref (match_operand 3 "" ""))
+ (pc)))])
;; Test a single bit in a QI/HI/SImode register.
@@ -4477,7 +4627,7 @@
(const_int 4))))
(set_attr "cc" "clobber")])
-;; Same test based on Bitwise AND RTL. Keep this incase gcc changes patterns.
+;; Same test based on bitwise AND. Keep this in case gcc changes patterns.
;; or for old peepholes.
;; Fixme - bitwise Mask will not work for DImode
@@ -4492,12 +4642,12 @@
(label_ref (match_operand 3 "" ""))
(pc)))]
""
-{
+ {
HOST_WIDE_INT bitnumber;
bitnumber = exact_log2 (GET_MODE_MASK (<MODE>mode) & INTVAL (operands[2]));
operands[2] = GEN_INT (bitnumber);
return avr_out_sbxx_branch (insn, operands);
-}
+ }
[(set (attr "length")
(if_then_else (and (ge (minus (pc) (match_dup 3)) (const_int -2046))
(le (minus (pc) (match_dup 3)) (const_int 2046)))
@@ -4837,9 +4987,10 @@
(define_expand "casesi"
- [(set (match_dup 6)
- (minus:HI (subreg:HI (match_operand:SI 0 "register_operand" "") 0)
- (match_operand:HI 1 "register_operand" "")))
+ [(parallel [(set (match_dup 6)
+ (minus:HI (subreg:HI (match_operand:SI 0 "register_operand" "") 0)
+ (match_operand:HI 1 "register_operand" "")))
+ (clobber (scratch:QI))])
(parallel [(set (cc0)
(compare (match_dup 6)
(match_operand:HI 2 "register_operand" "")))
@@ -5201,8 +5352,8 @@
(define_peephole ; "*cpse.eq"
[(set (cc0)
- (compare (match_operand:QI 1 "register_operand" "r,r")
- (match_operand:QI 2 "reg_or_0_operand" "r,L")))
+ (compare (match_operand:ALL1 1 "register_operand" "r,r")
+ (match_operand:ALL1 2 "reg_or_0_operand" "r,Y00")))
(set (pc)
(if_then_else (eq (cc0)
(const_int 0))
@@ -5236,8 +5387,8 @@
(define_peephole ; "*cpse.ne"
[(set (cc0)
- (compare (match_operand:QI 1 "register_operand" "")
- (match_operand:QI 2 "reg_or_0_operand" "")))
+ (compare (match_operand:ALL1 1 "register_operand" "")
+ (match_operand:ALL1 2 "reg_or_0_operand" "")))
(set (pc)
(if_then_else (ne (cc0)
(const_int 0))
@@ -5246,7 +5397,7 @@
"!AVR_HAVE_JMP_CALL
|| !avr_current_device->errata_skip"
{
- if (operands[2] == const0_rtx)
+ if (operands[2] == CONST0_RTX (<MODE>mode))
operands[2] = zero_reg_rtx;
return 3 == avr_jump_mode (operands[0], insn)
@@ -6265,4 +6416,8 @@
})
+;; Fixed-point instructions
+(include "avr-fixed.md")
+
+;; Operations on 64-bit registers
(include "avr-dimode.md")
diff --git a/gcc/config/avr/constraints.md b/gcc/config/avr/constraints.md
index 57e259db6d1..5a1c9f1aef1 100644
--- a/gcc/config/avr/constraints.md
+++ b/gcc/config/avr/constraints.md
@@ -192,3 +192,47 @@
"32-bit integer constant where no nibble equals 0xf."
(and (match_code "const_int")
(match_test "!avr_has_nibble_0xf (op)")))
+
+;; CONST_FIXED is no element of 'n' so cook our own.
+;; "i" or "s" would match but because the insn uses iterators that cover
+;; INT_MODE, "i" or "s" is not always possible.
+
+(define_constraint "Ynn"
+ "Fixed-point constant known at compile time."
+ (match_code "const_fixed"))
+
+(define_constraint "Y00"
+ "Fixed-point or integer constant with bit representation 0x0"
+ (and (match_code "const_fixed,const_int")
+ (match_test "op == CONST0_RTX (GET_MODE (op))")))
+
+(define_constraint "Y01"
+ "Fixed-point or integer constant with bit representation 0x1"
+ (ior (and (match_code "const_fixed")
+ (match_test "1 == INTVAL (avr_to_int_mode (op))"))
+ (match_test "satisfies_constraint_P (op)")))
+
+(define_constraint "Ym1"
+ "Fixed-point or integer constant with bit representation -0x1"
+ (ior (and (match_code "const_fixed")
+ (match_test "-1 == INTVAL (avr_to_int_mode (op))"))
+ (match_test "satisfies_constraint_N (op)")))
+
+(define_constraint "Y02"
+ "Fixed-point or integer constant with bit representation 0x2"
+ (ior (and (match_code "const_fixed")
+ (match_test "2 == INTVAL (avr_to_int_mode (op))"))
+ (match_test "satisfies_constraint_K (op)")))
+
+(define_constraint "Ym2"
+ "Fixed-point or integer constant with bit representation -0x2"
+ (ior (and (match_code "const_fixed")
+ (match_test "-2 == INTVAL (avr_to_int_mode (op))"))
+ (match_test "satisfies_constraint_Cm2 (op)")))
+
+;; Similar to "IJ" used with ADIW/SBIW, but for CONST_FIXED.
+
+(define_constraint "YIJ"
+ "Fixed-point constant from @minus{}0x003f to 0x003f."
+ (and (match_code "const_fixed")
+ (match_test "IN_RANGE (INTVAL (avr_to_int_mode (op)), -63, 63)")))
diff --git a/gcc/config/avr/gen-avr-mmcu-texi.c b/gcc/config/avr/gen-avr-mmcu-texi.c
index b5cb3c4a8a4..f4cb24e289f 100644
--- a/gcc/config/avr/gen-avr-mmcu-texi.c
+++ b/gcc/config/avr/gen-avr-mmcu-texi.c
@@ -50,7 +50,7 @@ print_mcus (size_t n_mcus)
int main (void)
{
- enum avr_arch arch = 0;
+ enum avr_arch arch = ARCH_UNKNOWN;
size_t i, n_mcus = 0;
const struct mcu_type_s *mcu;
diff --git a/gcc/config/avr/predicates.md b/gcc/config/avr/predicates.md
index f6563c6751d..04587ae491f 100644
--- a/gcc/config/avr/predicates.md
+++ b/gcc/config/avr/predicates.md
@@ -74,7 +74,7 @@
;; Return 1 if OP is the zero constant for MODE.
(define_predicate "const0_operand"
- (and (match_code "const_int,const_double")
+ (and (match_code "const_int,const_fixed,const_double")
(match_test "op == CONST0_RTX (mode)")))
;; Return 1 if OP is the one constant integer for MODE.
@@ -248,3 +248,21 @@
(define_predicate "o16_operand"
(and (match_code "const_int")
(match_test "IN_RANGE (INTVAL (op), -(1<<16), -1)")))
+
+;; Const int, fixed, or double operand
+(define_predicate "const_operand"
+ (ior (match_code "const_fixed")
+ (match_code "const_double")
+ (match_operand 0 "const_int_operand")))
+
+;; Const int, const fixed, or const double operand
+(define_predicate "nonmemory_or_const_operand"
+ (ior (match_code "const_fixed")
+ (match_code "const_double")
+ (match_operand 0 "nonmemory_operand")))
+
+;; Immediate, const fixed, or const double operand
+(define_predicate "const_or_immediate_operand"
+ (ior (match_code "const_fixed")
+ (match_code "const_double")
+ (match_operand 0 "immediate_operand")))
diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr
index 5da9ef2edda..98f4c3db8be 100644
--- a/gcc/config/avr/t-avr
+++ b/gcc/config/avr/t-avr
@@ -19,20 +19,20 @@
driver-avr.o: $(srcdir)/config/avr/driver-avr.c \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
+ $(COMPILER) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
avr-devices.o: $(srcdir)/config/avr/avr-devices.c \
$(srcdir)/config/avr/avr-mcus.def \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
+ $(COMPILER) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
avr-c.o: $(srcdir)/config/avr/avr-c.c \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_COMMON_H)
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
+ $(COMPILER) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
avr-log.o: $(srcdir)/config/avr/avr-log.c \
- $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(INPUT_H)
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
+ $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(INPUT_H) dumpfile.h
+ $(COMPILER) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
avr.o avr-c.o: $(srcdir)/config/avr/builtins.def
diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
index dd141ed7bb1..3a4b8af9f9b 100644
--- a/gcc/config/bfin/bfin.c
+++ b/gcc/config/bfin/bfin.c
@@ -56,6 +56,7 @@
#include "sel-sched.h"
#include "hw-doloop.h"
#include "opts.h"
+#include "dumpfile.h"
/* A C structure for machine-specific, per-function data.
This is added to the cfun structure. */
diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c
index 81e43ca9780..1905504f923 100644
--- a/gcc/config/c6x/c6x.c
+++ b/gcc/config/c6x/c6x.c
@@ -51,6 +51,7 @@
#include "opts.h"
#include "hw-doloop.h"
#include "regrename.h"
+#include "dumpfile.h"
/* Table of supported architecture variants. */
typedef struct
@@ -125,7 +126,7 @@ DEF_VEC_ALLOC_O(c6x_sched_insn_info, heap);
static VEC(c6x_sched_insn_info, heap) *insn_info;
#define INSN_INFO_LENGTH (VEC_length (c6x_sched_insn_info, insn_info))
-#define INSN_INFO_ENTRY(N) (*VEC_index (c6x_sched_insn_info, insn_info, (N)))
+#define INSN_INFO_ENTRY(N) (VEC_index (c6x_sched_insn_info, insn_info, (N)))
static bool done_cfi_sections;
@@ -3447,8 +3448,8 @@ try_rename_operands (rtx head, rtx tail, unit_req_table reqs, rtx insn,
{
unsigned int mask1, mask2, mask_changed;
int count, side1, side2, req1, req2;
- insn_rr_info *this_rr = VEC_index (insn_rr_info, insn_rr,
- INSN_UID (chain->insn));
+ insn_rr_info *this_rr = &VEC_index (insn_rr_info, insn_rr,
+ INSN_UID (chain->insn));
count = get_unit_reqs (chain->insn, &req1, &side1, &req2, &side2);
@@ -3554,7 +3555,7 @@ reshuffle_units (basic_block loop)
if (!get_unit_operand_masks (insn, &mask1, &mask2))
continue;
- info = VEC_index (insn_rr_info, insn_rr, INSN_UID (insn));
+ info = &VEC_index (insn_rr_info, insn_rr, INSN_UID (insn));
if (info->op_info == NULL)
continue;
diff --git a/gcc/config/cr16/cr16.h b/gcc/config/cr16/cr16.h
index 54794e1fd27..cf5bdf143ca 100644
--- a/gcc/config/cr16/cr16.h
+++ b/gcc/config/cr16/cr16.h
@@ -460,10 +460,6 @@ struct cumulative_args
#define REG_OK_FOR_INDEX_P(X) 1
#endif /* not REG_OK_STRICT. */
-/* Go to LABEL if ADDR (a legitimate address expression) has
- an effect that depends on the machine mode it is used for. */
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-
/* Assume best case (branch predicted). */
#define BRANCH_COST(speed_p, predictable_p) 2
diff --git a/gcc/config/cris/cris-protos.h b/gcc/config/cris/cris-protos.h
index d08dac5dab0..167f14c6e9c 100644
--- a/gcc/config/cris/cris-protos.h
+++ b/gcc/config/cris/cris-protos.h
@@ -40,6 +40,7 @@ extern bool cris_base_p (const_rtx, bool);
extern bool cris_base_or_autoincr_p (const_rtx, bool);
extern bool cris_bdap_index_p (const_rtx, bool);
extern bool cris_biap_index_p (const_rtx, bool);
+extern bool cris_legitimate_address_p (enum machine_mode, rtx, bool);
extern bool cris_store_multiple_op_p (rtx);
extern bool cris_movem_load_rest_p (rtx, int);
extern void cris_asm_output_symbol_ref (FILE *, rtx);
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index 1bc998165b1..4a73c816833 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -127,8 +127,6 @@ static void cris_init_libfuncs (void);
static reg_class_t cris_preferred_reload_class (rtx, reg_class_t);
-static bool cris_legitimate_address_p (enum machine_mode, rtx, bool);
-
static int cris_register_move_cost (enum machine_mode, reg_class_t, reg_class_t);
static int cris_memory_move_cost (enum machine_mode, reg_class_t, bool);
static bool cris_rtx_costs (rtx, int, int, int, int *, bool);
@@ -155,6 +153,7 @@ static void cris_trampoline_init (rtx, tree, rtx);
static rtx cris_function_value(const_tree, const_tree, bool);
static rtx cris_libcall_value (enum machine_mode, const_rtx);
static bool cris_function_value_regno_p (const unsigned int);
+static void cris_file_end (void);
/* This is the parsed result of the "-max-stack-stackframe=" option. If
it (still) is zero, then there was no such option given. */
@@ -201,6 +200,8 @@ int cris_cpu_version = CRIS_DEFAULT_CPU_VERSION;
#undef TARGET_ASM_FILE_START
#define TARGET_ASM_FILE_START cris_file_start
+#undef TARGET_ASM_FILE_END
+#define TARGET_ASM_FILE_END cris_file_end
#undef TARGET_INIT_LIBFUNCS
#define TARGET_INIT_LIBFUNCS cris_init_libfuncs
@@ -981,6 +982,53 @@ cris_print_operand (FILE *file, rtx x, int code)
fprintf (file, INTVAL (operand) < 0 ? "adds.w" : "addq");
return;
+ case 'P':
+ /* For const_int operands, print the additive mnemonic and the
+ modified operand (byte-sized operands don't save anything):
+ N=MIN_INT..-65536: add.d N
+ -65535..-64: subu.w -N
+ -63..-1: subq -N
+ 0..63: addq N
+ 64..65535: addu.w N
+ 65536..MAX_INT: add.d N.
+ (Emitted mnemonics are capitalized to simplify testing.)
+ For anything else (N.B: only register is valid), print "add.d". */
+ if (REG_P (operand))
+ {
+ fprintf (file, "Add.d ");
+
+ /* Deal with printing the operand by dropping through to the
+ normal path. */
+ break;
+ }
+ else
+ {
+ int val;
+ gcc_assert (CONST_INT_P (operand));
+
+ val = INTVAL (operand);
+ if (!IN_RANGE (val, -65535, 65535))
+ fprintf (file, "Add.d %d", val);
+ else if (val <= -64)
+ fprintf (file, "Subu.w %d", -val);
+ else if (val <= -1)
+ fprintf (file, "Subq %d", -val);
+ else if (val <= 63)
+ fprintf (file, "Addq %d", val);
+ else if (val <= 65535)
+ fprintf (file, "Addu.w %d", val);
+ return;
+ }
+ break;
+
+ case 'q':
+ /* If the operand is an integer -31..31, print "q" else ".d". */
+ if (CONST_INT_P (operand) && IN_RANGE (INTVAL (operand), -31, 31))
+ fprintf (file, "q");
+ else
+ fprintf (file, ".d");
+ return;
+
case 'd':
/* If this is a GOT symbol, force it to be emitted as :GOT and
:GOTPLT regardless of -fpic (i.e. not as :GOT16, :GOTPLT16).
@@ -1367,7 +1415,7 @@ cris_biap_index_p (const_rtx x, bool strict)
here (but is thankfully a general_operand in itself). A local PIC
symbol is valid for the plain "symbol + offset" case. */
-static bool
+bool
cris_legitimate_address_p (enum machine_mode mode, rtx x, bool strict)
{
const_rtx x1, x2;
@@ -1503,6 +1551,7 @@ cris_preferred_reload_class (rtx x ATTRIBUTE_UNUSED, reg_class_t rclass)
{
if (rclass != ACR_REGS
&& rclass != MOF_REGS
+ && rclass != MOF_SRP_REGS
&& rclass != SRP_REGS
&& rclass != CC0_REGS
&& rclass != SPECIAL_REGS)
@@ -2474,10 +2523,6 @@ cris_legitimate_pic_operand (rtx x)
void
cris_asm_output_ident (const char *string)
{
- const char *section_asm_op;
- int size;
- char *buf;
-
if (cgraph_state != CGRAPH_STATE_PARSING)
return;
@@ -2705,6 +2750,17 @@ cris_file_start (void)
default_file_start ();
}
+/* Output that goes at the end of the file, similarly. */
+
+static void
+cris_file_end (void)
+{
+ /* For CRIS, the default is to assume *no* executable stack, so output
+ an executable-stack-note only when needed. */
+ if (TARGET_LINUX && trampolines_created)
+ file_end_indicate_exec_stack ();
+}
+
/* Rename the function calls for integer multiply and divide. */
static void
cris_init_libfuncs (void)
@@ -2714,6 +2770,16 @@ cris_init_libfuncs (void)
set_optab_libfunc (udiv_optab, SImode, "__Udiv");
set_optab_libfunc (smod_optab, SImode, "__Mod");
set_optab_libfunc (umod_optab, SImode, "__Umod");
+
+ /* Atomic data being unaligned is unfortunately a reality.
+ Deal with it. */
+ if (TARGET_ATOMICS_MAY_CALL_LIBFUNCS)
+ {
+ set_optab_libfunc (sync_compare_and_swap_optab, SImode,
+ "__cris_atcmpxchgr32");
+ set_optab_libfunc (sync_compare_and_swap_optab, HImode,
+ "__cris_atcmpxchgr16");
+ }
}
/* The INIT_EXPANDERS worker sets the per-function-data initializer and
diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h
index b0bc57f7c0f..646ba90b4b9 100644
--- a/gcc/config/cris/cris.h
+++ b/gcc/config/cris/cris.h
@@ -316,6 +316,11 @@ extern int cris_cpu_version;
#define TARGET_TRAP_USING_BREAK8 \
(cris_trap_using_break8 == 2 ? TARGET_HAS_BREAK : cris_trap_using_break8)
+/* Call library functions by default for GNU/Linux. */
+#define TARGET_ATOMICS_MAY_CALL_LIBFUNCS \
+ (cris_atomics_calling_libfunc == 2 \
+ ? TARGET_LINUX : cris_atomics_calling_libfunc)
+
/* The < v10 atomics turn off interrupts, so they don't need alignment.
Incidentally, by default alignment is off there causing variables to
be default unaligned all over, so we'd have to make support
@@ -773,6 +778,9 @@ struct cum_args {int regs;};
#define HAVE_POST_INCREMENT 1
+#define CONSTANT_ADDRESS_P(X) \
+ (CONSTANT_P (X) && cris_legitimate_address_p (QImode, X, false))
+
/* Must be a compile-time constant, so we go with the highest value
among all CRIS variants. */
#define MAX_REGS_PER_ADDRESS 2
@@ -1047,8 +1055,6 @@ enum cris_pic_symbol_type
/* FIXME: Investigate CASE_VECTOR_SHORTEN_MODE to make sure HImode is not
used when broken-.word could possibly fail (plus testcase). */
-#define FIXUNS_TRUNC_LIKE_FIX_TRUNC
-
/* This is the number of bytes that can be moved in one
reasonably fast instruction sequence. For CRIS, this is two
instructions: mem => reg, reg => mem. */
diff --git a/gcc/config/cris/cris.opt b/gcc/config/cris/cris.opt
index ebbddaa422e..d4433a77399 100644
--- a/gcc/config/cris/cris.opt
+++ b/gcc/config/cris/cris.opt
@@ -183,6 +183,10 @@ mtrap-unaligned-atomic
Target Report Var(cris_trap_unaligned_atomic) Init(2)
Emit checks causing \"break 8\" instructions to execute when applying atomic builtins on misaligned memory
+munaligned-atomic-may-use-library
+Target Report Var(cris_atomics_calling_libfunc) Init(2)
+Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic.
+
; TARGET_SVINTO: Currently this just affects alignment. FIXME:
; Redundant with TARGET_ALIGN_BY_32, or put machine stuff here?
; This and the others below could just as well be variables and
diff --git a/gcc/config/cris/sync.md b/gcc/config/cris/sync.md
index d0cc3b28e4e..b3424841514 100644
--- a/gcc/config/cris/sync.md
+++ b/gcc/config/cris/sync.md
@@ -73,31 +73,50 @@
(define_code_attr atomic_op_name
[(plus "add") (minus "sub") (and "and") (ior "or") (xor "xor") (mult "nand")])
+;; The operator nonatomic-operand can be memory, constant or register
+;; for all but xor. We can't use memory or addressing modes with
+;; side-effects though, so just use registers and literal constants.
+(define_code_attr atomic_op_op_cnstr
+ [(plus "ri") (minus "ri") (and "ri") (ior "ri") (xor "r") (mult "ri")])
+
+(define_code_attr atomic_op_op_pred
+ [(plus "nonmemory_operand") (minus "nonmemory_operand")
+ (and "nonmemory_operand") (ior "nonmemory_operand")
+ (xor "register_operand") (mult "nonmemory_operand")])
+
;; Pairs of these are used to insert the "not" after the "and" for nand.
-(define_code_attr atomic_op_mnem_pre ;; Upper-case only to sinplify testing.
- [(plus "Add.d") (minus "Sub.d") (and "And.d") (ior "Or.d") (xor "Xor")
- (mult "aNd.d")])
+(define_code_attr atomic_op_mnem_pre_op2 ;; Upper-case only to simplify testing.
+ [(plus "%P2") (minus "Sub.d %2") (and "And%q2 %2") (ior "Or%q2 %2") (xor "Xor %2")
+ (mult "aNd%q2 %2")])
+
(define_code_attr atomic_op_mnem_post_op3
[(plus "") (minus "") (and "") (ior "") (xor "") (mult "not %3\;")])
+;; For SImode, emit "q" for operands -31..31.
+(define_mode_attr qm3 [(SI "%q3") (HI ".w") (QI ".b")])
+
(define_expand "atomic_fetch_<atomic_op_name><mode>"
[(match_operand:BWD 0 "register_operand")
(match_operand:BWD 1 "memory_operand")
- (match_operand:BWD 2 "register_operand")
+ (match_operand:BWD 2 "<atomic_op_op_pred>")
(match_operand 3)
(atomic_op:BWD (match_dup 0) (match_dup 1))]
- ""
+ "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
{
enum memmodel mmodel = (enum memmodel) INTVAL (operands[3]);
if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC)
cris_emit_trap_for_misalignment (operands[1]);
- expand_mem_thread_fence (mmodel);
+ if (need_atomic_barrier_p (mmodel, true))
+ expand_mem_thread_fence (mmodel);
+
emit_insn (gen_cris_atomic_fetch_<atomic_op_name><mode>_1 (operands[0],
operands[1],
operands[2]));
- expand_mem_thread_fence (mmodel);
+ if (need_atomic_barrier_p (mmodel, false))
+ expand_mem_thread_fence (mmodel);
+
DONE;
})
@@ -105,12 +124,13 @@
[(set (match_operand:BWD 1 "memory_operand" "+Q")
(atomic_op:BWD
(unspec_volatile:BWD [(match_dup 1)] CRIS_UNSPEC_ATOMIC_OP)
- ;; FIXME: relax this for plus, minus, and, ior.
- (match_operand:BWD 2 "register_operand" "r")))
+ ;; FIXME: improve constants more for plus, minus, and, ior.
+ ;; FIXME: handle memory operands without side-effects.
+ (match_operand:BWD 2 "<atomic_op_op_pred>" "<atomic_op_op_cnstr>")))
(set (match_operand:BWD 0 "register_operand" "=&r")
(match_dup 1))
(clobber (match_scratch:SI 3 "=&r"))]
- ""
+ "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
{
/* Can't be too sure; better ICE if this happens. */
gcc_assert (!reg_overlap_mentioned_p (operands[2], operands[1]));
@@ -121,7 +141,7 @@
".Lsync.%=:\;"
"move<m> %1,%0\;"
"move.d %0,%3\;"
- "<atomic_op_mnem_pre> %2,%3\;<atomic_op_mnem_post_op3>"
+ "<atomic_op_mnem_pre_op2>,%3\;<atomic_op_mnem_post_op3>"
"ax\;"
"move<m> %3,%1\;"
"bcs .Lsync.%=\;"
@@ -132,7 +152,7 @@
".Lsync.%=:\;"
"move<m> %1,%0\;"
"move.d %0,%3\;"
- "<atomic_op_mnem_pre> %2,%3\;<atomic_op_mnem_post_op3>"
+ "<atomic_op_mnem_pre_op2>,%3\;<atomic_op_mnem_post_op3>"
"ax\;"
"move<m> %3,%1\;"
"bwf .Lsync.%=\;"
@@ -163,12 +183,12 @@
"bmi .Lsync.irqon.%=\;"
"move.d %0,%3\;"
- "<atomic_op_mnem_pre> %2,%3\;<atomic_op_mnem_post_op3>"
+ "<atomic_op_mnem_pre_op2>,%3\;<atomic_op_mnem_post_op3>"
"ba .Lsync.irqoff.%=\;"
"move<m> %3,%1\n"
".Lsync.irqon.%=:\;"
- "<atomic_op_mnem_pre> %2,%3\;<atomic_op_mnem_post_op3>"
+ "<atomic_op_mnem_pre_op2>,%3\;<atomic_op_mnem_post_op3>"
"move<m> %3,%1\;"
"ei\n"
".Lsync.irqoff.%=:";
@@ -180,29 +200,34 @@
;; can_compare_and_swap_p call in omp-low.c, 4.8 era). We'd slightly
;; prefer atomic_exchange<mode> over this, but having both would be
;; redundant.
+;; FIXME: handle memory without side-effects for operand[3].
(define_expand "atomic_compare_and_swap<mode>"
[(match_operand:SI 0 "register_operand")
(match_operand:BWD 1 "register_operand")
(match_operand:BWD 2 "memory_operand")
- (match_operand:BWD 3 "general_operand")
+ (match_operand:BWD 3 "nonmemory_operand")
(match_operand:BWD 4 "register_operand")
(match_operand 5)
(match_operand 6)
(match_operand 7)]
- ""
+ "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
{
enum memmodel mmodel = (enum memmodel) INTVAL (operands[6]);
if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC)
cris_emit_trap_for_misalignment (operands[2]);
- expand_mem_thread_fence (mmodel);
+ if (need_atomic_barrier_p (mmodel, true))
+ expand_mem_thread_fence (mmodel);
+
emit_insn (gen_cris_atomic_compare_and_swap<mode>_1 (operands[0],
operands[1],
operands[2],
operands[3],
operands[4]));
- expand_mem_thread_fence (mmodel);
+ if (need_atomic_barrier_p (mmodel, false))
+ expand_mem_thread_fence (mmodel);
+
DONE;
})
@@ -210,7 +235,7 @@
[(set (match_operand:SI 0 "register_operand" "=&r")
(unspec_volatile:SI
[(match_operand:BWD 2 "memory_operand" "+Q")
- (match_operand:BWD 3 "general_operand" "g")]
+ (match_operand:BWD 3 "nonmemory_operand" "ri")]
CRIS_UNSPEC_ATOMIC_SWAP_BOOL))
(set (match_operand:BWD 1 "register_operand" "=&r") (match_dup 2))
(set (match_dup 2)
@@ -219,36 +244,34 @@
(match_dup 3)
(match_operand:BWD 4 "register_operand" "r")]
CRIS_UNSPEC_ATOMIC_SWAP_MEM))]
- ""
+ "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
{
if (TARGET_V32)
return
- "clearf p\n"
- ".Lsync.repeat.%=:\;"
+ "\n.Lsync.repeat.%=:\;"
+ "clearf p\;"
"move<m> %2,%1\;"
- "cmp<m> %3,%1\;"
+ "cmp<qm3> %3,%1\;"
"bne .Lsync.after.%=\;"
- "seq %0\;"
-
"ax\;"
+
"move<m> %4,%2\;"
- "bcs .Lsync.repeat.%=\;"
- "clearf p\n"
- ".Lsync.after.%=:";
+ "bcs .Lsync.repeat.%=\n"
+ ".Lsync.after.%=:\;"
+ "seq %0";
else if (cris_cpu_version == 10)
return
- "clearf\n"
- ".Lsync.repeat.%=:\;"
+ "\n.Lsync.repeat.%=:\;"
+ "clearf\;"
"move<m> %2,%1\;"
- "cmp<m> %3,%1\;"
+ "cmp<qm3> %3,%1\;"
"bne .Lsync.after.%=\;"
- "seq %0\;"
-
"ax\;"
+
"move<m> %4,%2\;"
- "bwf .Lsync.repeat.%=\;"
- "clearf\n"
- ".Lsync.after.%=:";
+ "bwf .Lsync.repeat.%=\n"
+ ".Lsync.after.%=:\;"
+ "seq %0";
else
{
/* This one is for CRIS versions without load-locked-store-conditional
@@ -275,14 +298,14 @@
"bmi .Lsync.irqon.%=\;"
"nop\;"
- "cmp<m> %3,%1\;"
+ "cmp<qm3> %3,%1\;"
"bne .Lsync.after.%=\;"
"seq %0\;"
"ba .Lsync.after.%=\;"
"move<m> %4,%2\n"
".Lsync.irqon.%=:\;"
- "cmp<m> %3,%1\;"
+ "cmp<qm3> %3,%1\;"
"bne .Lsync.after.%=\;"
"seq %0\;"
"move<m> %4,%2\;"
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 6805cf1264e..33a831f89dc 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -3007,6 +3007,18 @@ darwin_override_options (void)
flag_reorder_blocks = 1;
}
+ /* FIXME: flag_objc_sjlj_exceptions is no longer needed since there is only
+ one valid choice of exception scheme for each runtime. */
+ if (!global_options_set.x_flag_objc_sjlj_exceptions)
+ global_options.x_flag_objc_sjlj_exceptions =
+ flag_next_runtime && !TARGET_64BIT;
+
+ /* FIXME: and this could be eliminated then too. */
+ if (!global_options_set.x_flag_exceptions
+ && flag_objc_exceptions
+ && TARGET_64BIT)
+ flag_exceptions = 1;
+
if (flag_mkernel || flag_apple_kext)
{
/* -mkernel implies -fapple-kext for C++ */
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index d2f47f8cbb4..2b1a4268e3d 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -140,9 +140,6 @@ extern GTY(()) int darwin_ms_struct;
} while (0)
#define SUBTARGET_C_COMMON_OVERRIDE_OPTIONS do { \
- if (!global_options_set.x_flag_objc_sjlj_exceptions) \
- global_options.x_flag_objc_sjlj_exceptions = \
- flag_next_runtime && !TARGET_64BIT; \
if (flag_mkernel || flag_apple_kext) \
{ \
if (flag_use_cxa_atexit == 2) \
@@ -905,7 +902,7 @@ void add_framework_path (char *);
#define TARGET_KEXTABI flag_apple_kext
/* We have target-specific builtins. */
-#define TARGET_FOLD_BUILTIN darwin_fold_builtin
+#define SUBTARGET_FOLD_BUILTIN darwin_fold_builtin
#define TARGET_N_FORMAT_TYPES 1
#define TARGET_FORMAT_TYPES darwin_additional_format_types
diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c
index 14c96dc4a3f..b4a193a7e1a 100644
--- a/gcc/config/epiphany/epiphany.c
+++ b/gcc/config/epiphany/epiphany.c
@@ -45,7 +45,7 @@ along with GCC; see the file COPYING3. If not see
#include "insn-codes.h"
#include "ggc.h"
#include "tm-constrs.h"
-#include "tree-pass.h"
+#include "tree-pass.h" /* for current_pass */
/* Which cpu we're compiling for. */
int epiphany_cpu_type;
diff --git a/gcc/config/epiphany/epiphany.h b/gcc/config/epiphany/epiphany.h
index 92b781f5cea..b1b5e8b956b 100644
--- a/gcc/config/epiphany/epiphany.h
+++ b/gcc/config/epiphany/epiphany.h
@@ -888,8 +888,8 @@ enum epiphany_function_type
#define MODE_ENTRY(ENTITY) (epiphany_mode_entry_exit ((ENTITY), false))
#define MODE_EXIT(ENTITY) (epiphany_mode_entry_exit ((ENTITY), true))
-#define MODE_AFTER(LAST_MODE, INSN) \
- (epiphany_mode_after (e, (LAST_MODE), (INSN)))
+#define MODE_AFTER(ENTITY, LAST_MODE, INSN) \
+ (epiphany_mode_after ((ENTITY), (LAST_MODE), (INSN)))
#define TARGET_INSERT_MODE_SWITCH_USE epiphany_insert_mode_switch_use
diff --git a/gcc/config/fr30/fr30.md b/gcc/config/fr30/fr30.md
index 6b35599837f..63382710688 100644
--- a/gcc/config/fr30/fr30.md
+++ b/gcc/config/fr30/fr30.md
@@ -940,7 +940,7 @@
(compare:CC (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "nonmemory_operand" "")))
(set (pc)
- (if_then_else (match_operator:CC 0 "ordered_comparison_operator"
+ (if_then_else (match_operator 0 "ordered_comparison_operator"
[(reg:CC 16) (const_int 0)])
(label_ref (match_operand 3 "" ""))
(pc)))]
@@ -980,9 +980,9 @@
(define_insn "*branch_true"
[(set (pc)
- (if_then_else (match_operator:CC 0 "comparison_operator"
- [(reg:CC 16)
- (const_int 0)])
+ (if_then_else (match_operator 0 "comparison_operator"
+ [(reg:CC 16)
+ (const_int 0)])
(label_ref (match_operand 1 "" ""))
(pc)))]
""
@@ -1034,9 +1034,9 @@
;; branch occurs if the test is false, so the %B operator is used.
(define_insn "*branch_false"
[(set (pc)
- (if_then_else (match_operator:CC 0 "comparison_operator"
- [(reg:CC 16)
- (const_int 0)])
+ (if_then_else (match_operator 0 "comparison_operator"
+ [(reg:CC 16)
+ (const_int 0)])
(pc)
(label_ref (match_operand 1 "" ""))))]
""
diff --git a/gcc/config/frv/frv-protos.h b/gcc/config/frv/frv-protos.h
index 62e2506f31e..4ee2d047365 100644
--- a/gcc/config/frv/frv-protos.h
+++ b/gcc/config/frv/frv-protos.h
@@ -1,6 +1,6 @@
/* Frv prototypes.
Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010,
- 2011
+ 2011, 2012
Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
@@ -26,6 +26,7 @@ extern void frv_expand_epilogue (bool);
extern frv_stack_t *frv_stack_info (void);
extern void frv_debug_stack (frv_stack_t *);
extern int frv_initial_elimination_offset (int, int);
+extern void frv_ifcvt_machdep_init (void *);
#ifdef RTX_CODE
extern int frv_legitimate_address_p_1 (enum machine_mode, rtx,
diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c
index a31cf8bd6a1..6c3f45d5528 100644
--- a/gcc/config/frv/frv.c
+++ b/gcc/config/frv/frv.c
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see
#include "targhooks.h"
#include "langhooks.h"
#include "df.h"
+#include "dumpfile.h"
#ifndef FRV_INLINE
#define FRV_INLINE inline
@@ -1760,6 +1761,9 @@ frv_expand_prologue (void)
if (TARGET_DEBUG_STACK)
frv_debug_stack (info);
+ if (flag_stack_usage_info)
+ current_function_static_stack_size = info->total_size;
+
if (info->total_size == 0)
return;
@@ -5225,7 +5229,7 @@ frv_clear_registers_used (rtx *ptr, void *data)
On the FR-V, we don't have any extra fields per se, but it is useful hook to
initialize the static storage. */
void
-frv_ifcvt_machdep_init (ce_if_block_t *ce_info ATTRIBUTE_UNUSED)
+frv_ifcvt_machdep_init (void *ce_info ATTRIBUTE_UNUSED)
{
frv_ifcvt.added_insns_list = NULL_RTX;
frv_ifcvt.cur_scratch_regs = 0;
@@ -8434,7 +8438,7 @@ frv_init_builtins (void)
build_function_type_list (RET, T1, T2, T3, NULL_TREE)
#define QUAD(RET, T1, T2, T3, T4) \
- build_function_type_list (RET, T1, T2, T3, NULL_TREE)
+ build_function_type_list (RET, T1, T2, T3, T4, NULL_TREE)
tree void_ftype_void = build_function_type_list (voidt, NULL_TREE);
diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h
index 82e55f6628b..61e0dd2f846 100644
--- a/gcc/config/h8300/h8300.h
+++ b/gcc/config/h8300/h8300.h
@@ -566,10 +566,6 @@ struct cum_arg
are unsigned. */
#define DEFAULT_SIGNED_CHAR 0
-/* This flag, if defined, says the same insns that convert to a signed fixnum
- also convert validly to an unsigned one. */
-#define FIXUNS_TRUNC_LIKE_FIX_TRUNC
-
/* Max number of bytes we can move from memory to memory
in one reasonably fast instruction. */
#define MOVE_MAX (TARGET_H8300H || TARGET_H8300S ? 4 : 2)
diff --git a/gcc/config/i386/adxintrin.h b/gcc/config/i386/adxintrin.h
new file mode 100644
index 00000000000..a68566d1a6f
--- /dev/null
+++ b/gcc/config/i386/adxintrin.h
@@ -0,0 +1,49 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
+# error "Never use <adxintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef _ADXINTRIN_H_INCLUDED
+#define _ADXINTRIN_H_INCLUDED
+
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_addcarryx_u32 (unsigned char __CF, unsigned int __X,
+ unsigned int __Y, unsigned int *__P)
+{
+ return __builtin_ia32_addcarryx_u32 (__CF, __X, __Y, __P);
+}
+
+#ifdef __x86_64__
+extern __inline unsigned char
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_addcarryx_u64 (unsigned char __CF, unsigned long __X,
+ unsigned long __Y, unsigned long long *__P)
+{
+ return __builtin_ia32_addcarryx_u64 (__CF, __X, __Y, __P);
+}
+#endif
+
+#endif /* _ADXINTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md
index fda1a0488e8..b73cf5c32db 100644
--- a/gcc/config/i386/constraints.md
+++ b/gcc/config/i386/constraints.md
@@ -19,7 +19,7 @@
;;; Unused letters:
;;; B H T
-;;; h k v
+;;; h jk v
;; Integer register constraints.
;; It is not necessary to define 'r' here.
@@ -133,11 +133,6 @@
(and (not (match_test "TARGET_X32"))
(match_operand 0 "memory_operand")))
-(define_address_constraint "j"
- "@internal Address operand that can be zero extended in LEA instruction."
- (and (not (match_code "const_int"))
- (match_operand 0 "address_operand")))
-
;; Integer constant constraints.
(define_constraint "I"
"Integer constant in the range 0 @dots{} 31, for 32-bit shifts."
diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h
index a9d25c565cf..a26dc9b4156 100644
--- a/gcc/config/i386/cpuid.h
+++ b/gcc/config/i386/cpuid.h
@@ -1,5 +1,6 @@
/*
- * Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012
+ * Free Software Foundation, Inc.
*
* This file is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -52,6 +53,7 @@
#define bit_LAHF_LM (1 << 0)
#define bit_ABM (1 << 5)
#define bit_SSE4a (1 << 6)
+#define bit_PRFCHW (1 << 8)
#define bit_XOP (1 << 11)
#define bit_LWP (1 << 15)
#define bit_FMA4 (1 << 16)
@@ -65,11 +67,13 @@
/* Extended Features (%eax == 7) */
#define bit_FSGSBASE (1 << 0)
-#define bit_BMI (1 << 3)
-#define bit_HLE (1 << 4)
+#define bit_BMI (1 << 3)
+#define bit_HLE (1 << 4)
#define bit_AVX2 (1 << 5)
#define bit_BMI2 (1 << 8)
-#define bit_RTM (1 << 11)
+#define bit_RTM (1 << 11)
+#define bit_RDSEED (1 << 18)
+#define bit_ADX (1 << 19)
#if defined(__i386__) && defined(__PIC__)
/* %ebx may be the PIC register. */
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
index 2eccda9d81f..8455a67b7a5 100644
--- a/gcc/config/i386/cygming.h
+++ b/gcc/config/i386/cygming.h
@@ -48,6 +48,10 @@ along with GCC; see the file COPYING3. If not see
#define TARGET_ASM_UNWIND_EMIT_BEFORE_INSN false
#undef TARGET_ASM_FUNCTION_END_PROLOGUE
#define TARGET_ASM_FUNCTION_END_PROLOGUE i386_pe_seh_end_prologue
+#undef TARGET_ASM_EMIT_EXCEPT_PERSONALITY
+#define TARGET_ASM_EMIT_EXCEPT_PERSONALITY i386_pe_seh_emit_except_personality
+#undef TARGET_ASM_INIT_SECTIONS
+#define TARGET_ASM_INIT_SECTIONS i386_pe_seh_init_sections
#define SUBTARGET_ASM_UNWIND_INIT i386_pe_seh_init
#undef DEFAULT_ABI
@@ -225,6 +229,11 @@ do { \
#define SUBTARGET_ENCODE_SECTION_INFO i386_pe_encode_section_info
+/* Local and global relocs can be placed always into readonly memory
+ for PE-COFF targets. */
+#undef TARGET_ASM_RELOC_RW_MASK
+#define TARGET_ASM_RELOC_RW_MASK i386_pe_reloc_rw_mask
+
/* Output a common block. */
#undef ASM_OUTPUT_ALIGNED_DECL_COMMON
#define ASM_OUTPUT_ALIGNED_DECL_COMMON \
diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
index 94f38199f10..b5ae18f18b3 100644
--- a/gcc/config/i386/driver-i386.c
+++ b/gcc/config/i386/driver-i386.c
@@ -1,5 +1,6 @@
/* Subroutines for the gcc driver.
- Copyright (C) 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2010, 2011, 2012
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -399,6 +400,7 @@ const char *host_detect_local_cpu (int argc, const char **argv)
unsigned int has_bmi = 0, has_bmi2 = 0, has_tbm = 0, has_lzcnt = 0;
unsigned int has_hle = 0, has_rtm = 0;
unsigned int has_rdrnd = 0, has_f16c = 0, has_fsgsbase = 0;
+ unsigned int has_rdseed = 0, has_prfchw = 0, has_adx = 0;
bool arch;
@@ -465,6 +467,8 @@ const char *host_detect_local_cpu (int argc, const char **argv)
has_avx2 = ebx & bit_AVX2;
has_bmi2 = ebx & bit_BMI2;
has_fsgsbase = ebx & bit_FSGSBASE;
+ has_rdseed = ebx & bit_RDSEED;
+ has_adx = ebx & bit_ADX;
}
/* Check cpuid level of extended features. */
@@ -484,6 +488,7 @@ const char *host_detect_local_cpu (int argc, const char **argv)
has_xop = ecx & bit_XOP;
has_tbm = ecx & bit_TBM;
has_lzcnt = ecx & bit_LZCNT;
+ has_prfchw = ecx & bit_PRFCHW;
has_longmode = edx & bit_LM;
has_3dnowp = edx & bit_3DNOWP;
@@ -514,6 +519,8 @@ const char *host_detect_local_cpu (int argc, const char **argv)
if (name == SIG_GEODE)
processor = PROCESSOR_GEODE;
+ else if (has_movbe)
+ processor = PROCESSOR_BTVER2;
else if (has_bmi)
processor = PROCESSOR_BDVER2;
else if (has_xop)
@@ -687,6 +694,9 @@ const char *host_detect_local_cpu (int argc, const char **argv)
case PROCESSOR_BTVER1:
cpu = "btver1";
break;
+ case PROCESSOR_BTVER2:
+ cpu = "btver2";
+ break;
default:
/* Use something reasonable. */
@@ -740,11 +750,14 @@ const char *host_detect_local_cpu (int argc, const char **argv)
const char *rdrnd = has_rdrnd ? " -mrdrnd" : " -mno-rdrnd";
const char *f16c = has_f16c ? " -mf16c" : " -mno-f16c";
const char *fsgsbase = has_fsgsbase ? " -mfsgsbase" : " -mno-fsgsbase";
+ const char *rdseed = has_rdseed ? " -mrdseed" : " -mno-rdseed";
+ const char *prfchw = has_prfchw ? " -mprfchw" : " -mno-prfchw";
+ const char *adx = has_adx ? " -madx" : " -mno-adx";
options = concat (options, cx16, sahf, movbe, ase, pclmul,
popcnt, abm, lwp, fma, fma4, xop, bmi, bmi2,
tbm, avx, avx2, sse4_2, sse4_1, lzcnt, rtm,
- hle, rdrnd, f16c, fsgsbase, NULL);
+ hle, rdrnd, f16c, fsgsbase, rdseed, prfchw, adx, NULL);
}
done:
diff --git a/gcc/config/i386/i386-builtin-types.def b/gcc/config/i386/i386-builtin-types.def
index 398bf0af07d..8a199c0a7f8 100644
--- a/gcc/config/i386/i386-builtin-types.def
+++ b/gcc/config/i386/i386-builtin-types.def
@@ -446,6 +446,9 @@ DEF_FUNCTION_TYPE (V16QI, V16QI, INT, V16QI, INT, INT)
DEF_FUNCTION_TYPE (V8QI, QI, QI, QI, QI, QI, QI, QI, QI)
+DEF_FUNCTION_TYPE (UCHAR, UCHAR, UINT, UINT, PUNSIGNED)
+DEF_FUNCTION_TYPE (UCHAR, UCHAR, ULONGLONG, ULONGLONG, PULONGLONG)
+
DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE, V4SI, V2DF, INT)
DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V4SI, V4DF, INT)
DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V8SI, V4DF, INT)
diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c
index 0f78d8928ed..edd64ff7ae3 100644
--- a/gcc/config/i386/i386-c.c
+++ b/gcc/config/i386/i386-c.c
@@ -118,6 +118,10 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag,
def_or_undef (parse_in, "__btver1");
def_or_undef (parse_in, "__btver1__");
break;
+ case PROCESSOR_BTVER2:
+ def_or_undef (parse_in, "__btver2");
+ def_or_undef (parse_in, "__btver2__");
+ break;
case PROCESSOR_PENTIUM4:
def_or_undef (parse_in, "__pentium4");
def_or_undef (parse_in, "__pentium4__");
@@ -208,6 +212,9 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag,
case PROCESSOR_BTVER1:
def_or_undef (parse_in, "__tune_btver1__");
break;
+ case PROCESSOR_BTVER2:
+ def_or_undef (parse_in, "__tune_btver2__");
+ break;
case PROCESSOR_PENTIUM4:
def_or_undef (parse_in, "__tune_pentium4__");
break;
@@ -289,6 +296,12 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag,
def_or_undef (parse_in, "__RDRND__");
if (isa_flag & OPTION_MASK_ISA_F16C)
def_or_undef (parse_in, "__F16C__");
+ if (isa_flag & OPTION_MASK_ISA_RDSEED)
+ def_or_undef (parse_in, "__RDSEED__");
+ if (isa_flag & OPTION_MASK_ISA_PRFCHW)
+ def_or_undef (parse_in, "__PRFCHW__");
+ if (isa_flag & OPTION_MASK_ISA_ADX)
+ def_or_undef (parse_in, "__ADX__");
if ((fpmath & FPMATH_SSE) && (isa_flag & OPTION_MASK_ISA_SSE))
def_or_undef (parse_in, "__SSE_MATH__");
if ((fpmath & FPMATH_SSE) && (isa_flag & OPTION_MASK_ISA_SSE2))
@@ -396,6 +409,9 @@ ix86_target_macros (void)
builtin_define_std ("i386");
}
+ if (TARGET_LONG_DOUBLE_64)
+ cpp_define (parse_in, "__LONG_DOUBLE_64__");
+
cpp_define_formatted (parse_in, "__ATOMIC_HLE_ACQUIRE=%d", IX86_HLE_ACQUIRE);
cpp_define_formatted (parse_in, "__ATOMIC_HLE_RELEASE=%d", IX86_HLE_RELEASE);
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
index 581b25c5199..29bd69a4715 100644
--- a/gcc/config/i386/i386-protos.h
+++ b/gcc/config/i386/i386-protos.h
@@ -92,12 +92,10 @@ extern void ix86_fixup_binary_operands_no_copy (enum rtx_code,
extern void ix86_expand_binary_operator (enum rtx_code,
enum machine_mode, rtx[]);
extern bool ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[]);
-extern bool ix86_lea_outperforms (rtx, unsigned int, unsigned int,
- unsigned int, unsigned int);
extern bool ix86_avoid_lea_for_add (rtx, rtx[]);
extern bool ix86_use_lea_for_mov (rtx, rtx[]);
extern bool ix86_avoid_lea_for_addr (rtx, rtx[]);
-extern void ix86_split_lea_for_addr (rtx[], enum machine_mode);
+extern void ix86_split_lea_for_addr (rtx, rtx[], enum machine_mode);
extern bool ix86_lea_for_add_ok (rtx, rtx[]);
extern bool ix86_vec_interleave_v2df_operator_ok (rtx operands[3], bool high);
extern bool ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn);
@@ -258,12 +256,16 @@ extern tree i386_pe_mangle_assembler_name (const char *);
extern void i386_pe_seh_init (FILE *);
extern void i386_pe_seh_end_prologue (FILE *);
extern void i386_pe_seh_unwind_emit (FILE *, rtx);
+extern void i386_pe_seh_emit_except_personality (rtx);
+extern void i386_pe_seh_init_sections (void);
/* In winnt-cxx.c and winnt-stubs.c */
extern void i386_pe_adjust_class_at_definition (tree);
extern bool i386_pe_type_dllimport_p (tree);
extern bool i386_pe_type_dllexport_p (tree);
+extern int i386_pe_reloc_rw_mask (void);
+
extern rtx maybe_get_pool_constant (rtx);
extern char internal_label_prefix[16];
@@ -288,7 +290,6 @@ extern void x86_elf_aligned_common (FILE *, const char *,
extern void ix86_fp_comparison_codes (enum rtx_code code, enum rtx_code *,
enum rtx_code *, enum rtx_code *);
extern enum rtx_code ix86_fp_compare_code_to_integer (enum rtx_code);
-extern rtx construct_plt_address (rtx);
#endif
extern int asm_preferred_eh_data_format (int, int);
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index aae8a4d5814..c7be00185dc 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -61,6 +61,7 @@ along with GCC; see the file COPYING3. If not see
#include "fibheap.h"
#include "opts.h"
#include "diagnostic.h"
+#include "dumpfile.h"
enum upper_128bits_state
{
@@ -1508,6 +1509,85 @@ struct processor_costs btver1_cost = {
1, /* cond_not_taken_branch_cost. */
};
+struct processor_costs btver2_cost = {
+ COSTS_N_INSNS (1), /* cost of an add instruction */
+ COSTS_N_INSNS (2), /* cost of a lea instruction */
+ COSTS_N_INSNS (1), /* variable shift costs */
+ COSTS_N_INSNS (1), /* constant shift costs */
+ {COSTS_N_INSNS (3), /* cost of starting multiply for QI */
+ COSTS_N_INSNS (4), /* HI */
+ COSTS_N_INSNS (3), /* SI */
+ COSTS_N_INSNS (4), /* DI */
+ COSTS_N_INSNS (5)}, /* other */
+ 0, /* cost of multiply per each bit set */
+ {COSTS_N_INSNS (19), /* cost of a divide/mod for QI */
+ COSTS_N_INSNS (35), /* HI */
+ COSTS_N_INSNS (51), /* SI */
+ COSTS_N_INSNS (83), /* DI */
+ COSTS_N_INSNS (83)}, /* other */
+ COSTS_N_INSNS (1), /* cost of movsx */
+ COSTS_N_INSNS (1), /* cost of movzx */
+ 8, /* "large" insn */
+ 9, /* MOVE_RATIO */
+ 4, /* cost for loading QImode using movzbl */
+ {3, 4, 3}, /* cost of loading integer registers
+ in QImode, HImode and SImode.
+ Relative to reg-reg move (2). */
+ {3, 4, 3}, /* cost of storing integer registers */
+ 4, /* cost of reg,reg fld/fst */
+ {4, 4, 12}, /* cost of loading fp registers
+ in SFmode, DFmode and XFmode */
+ {6, 6, 8}, /* cost of storing fp registers
+ in SFmode, DFmode and XFmode */
+ 2, /* cost of moving MMX register */
+ {3, 3}, /* cost of loading MMX registers
+ in SImode and DImode */
+ {4, 4}, /* cost of storing MMX registers
+ in SImode and DImode */
+ 2, /* cost of moving SSE register */
+ {4, 4, 3}, /* cost of loading SSE registers
+ in SImode, DImode and TImode */
+ {4, 4, 5}, /* cost of storing SSE registers
+ in SImode, DImode and TImode */
+ 3, /* MMX or SSE register to integer */
+ /* On K8:
+ MOVD reg64, xmmreg Double FSTORE 4
+ MOVD reg32, xmmreg Double FSTORE 4
+ On AMDFAM10:
+ MOVD reg64, xmmreg Double FADD 3
+ 1/1 1/1
+ MOVD reg32, xmmreg Double FADD 3
+ 1/1 1/1 */
+ 32, /* size of l1 cache. */
+ 2048, /* size of l2 cache. */
+ 64, /* size of prefetch block */
+ 100, /* number of parallel prefetches */
+ 2, /* Branch cost */
+ COSTS_N_INSNS (4), /* cost of FADD and FSUB insns. */
+ COSTS_N_INSNS (4), /* cost of FMUL instruction. */
+ COSTS_N_INSNS (19), /* cost of FDIV instruction. */
+ COSTS_N_INSNS (2), /* cost of FABS instruction. */
+ COSTS_N_INSNS (2), /* cost of FCHS instruction. */
+ COSTS_N_INSNS (35), /* cost of FSQRT instruction. */
+
+ {{libcall, {{6, loop}, {14, unrolled_loop}, {-1, rep_prefix_4_byte}}},
+ {libcall, {{16, loop}, {8192, rep_prefix_8_byte}, {-1, libcall}}}},
+ {{libcall, {{8, loop}, {24, unrolled_loop},
+ {2048, rep_prefix_4_byte}, {-1, libcall}}},
+ {libcall, {{48, unrolled_loop}, {8192, rep_prefix_8_byte}, {-1, libcall}}}},
+ 4, /* scalar_stmt_cost. */
+ 2, /* scalar load_cost. */
+ 2, /* scalar_store_cost. */
+ 6, /* vec_stmt_cost. */
+ 0, /* vec_to_scalar_cost. */
+ 2, /* scalar_to_vec_cost. */
+ 2, /* vec_align_load_cost. */
+ 2, /* vec_unalign_load_cost. */
+ 2, /* vec_store_cost. */
+ 2, /* cond_taken_branch_cost. */
+ 1, /* cond_not_taken_branch_cost. */
+};
+
static const
struct processor_costs pentium4_cost = {
COSTS_N_INSNS (1), /* cost of an add instruction */
@@ -1908,8 +1988,10 @@ const struct processor_costs *ix86_cost = &pentium_cost;
#define m_BDVER1 (1<<PROCESSOR_BDVER1)
#define m_BDVER2 (1<<PROCESSOR_BDVER2)
#define m_BDVER (m_BDVER1 | m_BDVER2)
+#define m_BTVER (m_BTVER1 | m_BTVER2)
#define m_BTVER1 (1<<PROCESSOR_BTVER1)
-#define m_AMD_MULTIPLE (m_ATHLON_K8 | m_AMDFAM10 | m_BDVER | m_BTVER1)
+#define m_BTVER2 (1<<PROCESSOR_BTVER2)
+#define m_AMD_MULTIPLE (m_ATHLON_K8 | m_AMDFAM10 | m_BDVER | m_BTVER)
#define m_GENERIC32 (1<<PROCESSOR_GENERIC32)
#define m_GENERIC64 (1<<PROCESSOR_GENERIC64)
@@ -1949,7 +2031,7 @@ static unsigned int initial_ix86_tune_features[X86_TUNE_LAST] = {
~m_386,
/* X86_TUNE_USE_SAHF */
- m_PPRO | m_P4_NOCONA | m_CORE2I7 | m_ATOM | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER1 | m_GENERIC,
+ m_PPRO | m_P4_NOCONA | m_CORE2I7 | m_ATOM | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER | m_GENERIC,
/* X86_TUNE_MOVX: Enable to zero extend integer registers to avoid
partial dependencies. */
@@ -2055,7 +2137,7 @@ static unsigned int initial_ix86_tune_features[X86_TUNE_LAST] = {
m_PPRO | m_P4_NOCONA | m_CORE2I7 | m_ATOM | m_AMDFAM10 | m_BDVER | m_GENERIC,
/* X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL */
- m_COREI7 | m_AMDFAM10 | m_BDVER | m_BTVER1,
+ m_COREI7 | m_AMDFAM10 | m_BDVER | m_BTVER,
/* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL */
m_COREI7 | m_BDVER,
@@ -2130,11 +2212,11 @@ static unsigned int initial_ix86_tune_features[X86_TUNE_LAST] = {
/* X86_TUNE_SLOW_IMUL_IMM32_MEM: Imul of 32-bit constant and memory is
vector path on AMD machines. */
- m_CORE2I7_64 | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER1 | m_GENERIC64,
+ m_CORE2I7_64 | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER | m_GENERIC64,
/* X86_TUNE_SLOW_IMUL_IMM8: Imul of 8-bit constant is vector path on AMD
machines. */
- m_CORE2I7_64 | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER1 | m_GENERIC64,
+ m_CORE2I7_64 | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER | m_GENERIC64,
/* X86_TUNE_MOVE_M1_VIA_OR: On pentiums, it is faster to load -1 via OR
than a MOV. */
@@ -2605,6 +2687,7 @@ static const struct ptt processor_target_table[PROCESSOR_max] =
{&bdver1_cost, 32, 24, 32, 7, 32},
{&bdver2_cost, 32, 24, 32, 7, 32},
{&btver1_cost, 32, 24, 32, 7, 32},
+ {&btver2_cost, 32, 24, 32, 7, 32},
{&atom_cost, 16, 15, 16, 7, 16}
};
@@ -2635,7 +2718,8 @@ static const char *const cpu_names[TARGET_CPU_DEFAULT_max] =
"amdfam10",
"bdver1",
"bdver2",
- "btver1"
+ "btver1",
+ "btver2"
};
/* Return true if a red-zone is in use. */
@@ -2664,7 +2748,7 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
preceding options while match those first. */
static struct ix86_target_opts isa_opts[] =
{
- { "-mfma4", OPTION_MASK_ISA_FMA4 },
+ { "-mfma4", OPTION_MASK_ISA_FMA4 },
{ "-mfma", OPTION_MASK_ISA_FMA },
{ "-mxop", OPTION_MASK_ISA_XOP },
{ "-mlwp", OPTION_MASK_ISA_LWP },
@@ -2672,17 +2756,20 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
{ "-msse4.2", OPTION_MASK_ISA_SSE4_2 },
{ "-msse4.1", OPTION_MASK_ISA_SSE4_1 },
{ "-mssse3", OPTION_MASK_ISA_SSSE3 },
- { "-msse3", OPTION_MASK_ISA_SSE3 },
- { "-msse2", OPTION_MASK_ISA_SSE2 },
+ { "-msse3", OPTION_MASK_ISA_SSE3 },
+ { "-msse2", OPTION_MASK_ISA_SSE2 },
{ "-msse", OPTION_MASK_ISA_SSE },
{ "-m3dnow", OPTION_MASK_ISA_3DNOW },
{ "-m3dnowa", OPTION_MASK_ISA_3DNOW_A },
{ "-mmmx", OPTION_MASK_ISA_MMX },
{ "-mabm", OPTION_MASK_ISA_ABM },
{ "-mbmi", OPTION_MASK_ISA_BMI },
- { "-mbmi2", OPTION_MASK_ISA_BMI2 },
+ { "-mbmi2", OPTION_MASK_ISA_BMI2 },
{ "-mlzcnt", OPTION_MASK_ISA_LZCNT },
{ "-mhle", OPTION_MASK_ISA_HLE },
+ { "-mrdseed", OPTION_MASK_ISA_RDSEED },
+ { "-mprfchw", OPTION_MASK_ISA_PRFCHW },
+ { "-madx", OPTION_MASK_ISA_ADX },
{ "-mtbm", OPTION_MASK_ISA_TBM },
{ "-mpopcnt", OPTION_MASK_ISA_POPCNT },
{ "-mmovbe", OPTION_MASK_ISA_MOVBE },
@@ -2691,7 +2778,7 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
{ "-mpclmul", OPTION_MASK_ISA_PCLMUL },
{ "-mfsgsbase", OPTION_MASK_ISA_FSGSBASE },
{ "-mrdrnd", OPTION_MASK_ISA_RDRND },
- { "-mf16c", OPTION_MASK_ISA_F16C },
+ { "-mf16c", OPTION_MASK_ISA_F16C },
{ "-mrtm", OPTION_MASK_ISA_RTM },
};
@@ -2699,6 +2786,7 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
static struct ix86_target_opts flag_opts[] =
{
{ "-m128bit-long-double", MASK_128BIT_LONG_DOUBLE },
+ { "-mlong-double-64", MASK_LONG_DOUBLE_64 },
{ "-m80387", MASK_80387 },
{ "-maccumulate-outgoing-args", MASK_ACCUMULATE_OUTGOING_ARGS },
{ "-malign-double", MASK_ALIGN_DOUBLE },
@@ -2958,7 +3046,10 @@ ix86_option_override_internal (bool main_args_p)
#define PTA_AVX2 (HOST_WIDE_INT_1 << 30)
#define PTA_BMI2 (HOST_WIDE_INT_1 << 31)
#define PTA_RTM (HOST_WIDE_INT_1 << 32)
-#define PTA_HLE (HOST_WIDE_INT_1 << 33)
+#define PTA_HLE (HOST_WIDE_INT_1 << 33)
+#define PTA_PRFCHW (HOST_WIDE_INT_1 << 34)
+#define PTA_RDSEED (HOST_WIDE_INT_1 << 35)
+#define PTA_ADX (HOST_WIDE_INT_1 << 36)
/* if this reaches 64, need to widen struct pta flags below */
static struct pta
@@ -3081,6 +3172,11 @@ ix86_option_override_internal (bool main_args_p)
| PTA_SSSE3 | PTA_SSE4A |PTA_ABM | PTA_CX16},
{"generic32", PROCESSOR_GENERIC32, CPU_PENTIUMPRO,
PTA_HLE /* flags are only used for -march switch. */ },
+ {"btver2", PROCESSOR_BTVER2, CPU_GENERIC64,
+ PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
+ | PTA_SSSE3 | PTA_SSE4A |PTA_ABM | PTA_CX16 | PTA_SSE4_1
+ | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX
+ | PTA_BMI | PTA_F16C | PTA_MOVBE},
{"generic64", PROCESSOR_GENERIC64, CPU_GENERIC64,
PTA_64BIT
| PTA_HLE /* flags are only used for -march switch. */ },
@@ -3283,7 +3379,7 @@ ix86_option_override_internal (bool main_args_p)
"large", "32");
else if (TARGET_X32)
error ("code model %qs not supported in x32 mode",
- "medium");
+ "large");
break;
case CM_32:
@@ -3439,6 +3535,15 @@ ix86_option_override_internal (bool main_args_p)
if (processor_alias_table[i].flags & PTA_HLE
&& !(ix86_isa_flags_explicit & OPTION_MASK_ISA_HLE))
ix86_isa_flags |= OPTION_MASK_ISA_HLE;
+ if (processor_alias_table[i].flags & PTA_PRFCHW
+ && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_PRFCHW))
+ ix86_isa_flags |= OPTION_MASK_ISA_PRFCHW;
+ if (processor_alias_table[i].flags & PTA_RDSEED
+ && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_RDSEED))
+ ix86_isa_flags |= OPTION_MASK_ISA_RDSEED;
+ if (processor_alias_table[i].flags & PTA_ADX
+ && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_ADX))
+ ix86_isa_flags |= OPTION_MASK_ISA_ADX;
if (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE))
x86_prefetch_sse = true;
@@ -3646,10 +3751,11 @@ ix86_option_override_internal (bool main_args_p)
/* Turn on MMX builtins for -msse. */
if (TARGET_SSE)
- {
- ix86_isa_flags |= OPTION_MASK_ISA_MMX & ~ix86_isa_flags_explicit;
- x86_prefetch_sse = true;
- }
+ ix86_isa_flags |= OPTION_MASK_ISA_MMX & ~ix86_isa_flags_explicit;
+
+ /* Enable SSE prefetch. */
+ if (TARGET_SSE || TARGET_PRFCHW)
+ x86_prefetch_sse = true;
/* Turn on popcnt instruction for -msse4.2 or -mabm. */
if (TARGET_SSE4_2 || TARGET_ABM)
@@ -3979,6 +4085,11 @@ ix86_option_override_internal (bool main_args_p)
else if (target_flags_explicit & MASK_RECIP)
recip_mask &= ~(RECIP_MASK_ALL & ~recip_mask_explicit);
+ /* Default long double to 64-bit for Bionic. */
+ if (TARGET_HAS_BIONIC
+ && !(target_flags_explicit & MASK_LONG_DOUBLE_64))
+ target_flags |= MASK_LONG_DOUBLE_64;
+
/* Save the initial options in case the user does function specific
options. */
if (main_args_p)
@@ -4030,43 +4141,42 @@ ix86_option_override (void)
static void
ix86_conditional_register_usage (void)
{
- int i;
+ int i, c_mask;
unsigned int j;
- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- {
- if (fixed_regs[i] > 1)
- fixed_regs[i] = (fixed_regs[i] == (TARGET_64BIT ? 3 : 2));
- if (call_used_regs[i] > 1)
- call_used_regs[i] = (call_used_regs[i] == (TARGET_64BIT ? 3 : 2));
- }
-
/* The PIC register, if it exists, is fixed. */
j = PIC_OFFSET_TABLE_REGNUM;
if (j != INVALID_REGNUM)
fixed_regs[j] = call_used_regs[j] = 1;
- /* The 64-bit MS_ABI changes the set of call-used registers. */
- if (TARGET_64BIT_MS_ABI)
+ /* For 32-bit targets, squash the REX registers. */
+ if (! TARGET_64BIT)
{
- call_used_regs[SI_REG] = 0;
- call_used_regs[DI_REG] = 0;
- call_used_regs[XMM6_REG] = 0;
- call_used_regs[XMM7_REG] = 0;
+ for (i = FIRST_REX_INT_REG; i <= LAST_REX_INT_REG; i++)
+ fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = "";
for (i = FIRST_REX_SSE_REG; i <= LAST_REX_SSE_REG; i++)
- call_used_regs[i] = 0;
+ fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = "";
}
- /* The default setting of CLOBBERED_REGS is for 32-bit; add in the
- other call-clobbered regs for 64-bit. */
- if (TARGET_64BIT)
+ /* See the definition of CALL_USED_REGISTERS in i386.h. */
+ c_mask = (TARGET_64BIT_MS_ABI ? (1 << 3)
+ : TARGET_64BIT ? (1 << 2)
+ : (1 << 1));
+
+ CLEAR_HARD_REG_SET (reg_class_contents[(int)CLOBBERED_REGS]);
+
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
{
- CLEAR_HARD_REG_SET (reg_class_contents[(int)CLOBBERED_REGS]);
+ /* Set/reset conditionally defined registers from
+ CALL_USED_REGISTERS initializer. */
+ if (call_used_regs[i] > 1)
+ call_used_regs[i] = !!(call_used_regs[i] & c_mask);
- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- if (TEST_HARD_REG_BIT (reg_class_contents[(int)GENERAL_REGS], i)
- && call_used_regs[i])
- SET_HARD_REG_BIT (reg_class_contents[(int)CLOBBERED_REGS], i);
+ /* Calculate registers of CLOBBERED_REGS register set
+ as call used registers from GENERAL_REGS register set. */
+ if (TEST_HARD_REG_BIT (reg_class_contents[(int)GENERAL_REGS], i)
+ && call_used_regs[i])
+ SET_HARD_REG_BIT (reg_class_contents[(int)CLOBBERED_REGS], i);
}
/* If MMX is disabled, squash the registers. */
@@ -4086,15 +4196,6 @@ ix86_conditional_register_usage (void)
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (TEST_HARD_REG_BIT (reg_class_contents[(int)FLOAT_REGS], i))
fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = "";
-
- /* If 32-bit, squash the 64-bit registers. */
- if (! TARGET_64BIT)
- {
- for (i = FIRST_REX_INT_REG; i <= LAST_REX_INT_REG; i++)
- reg_names[i] = "";
- for (i = FIRST_REX_SSE_REG; i <= LAST_REX_SSE_REG; i++)
- reg_names[i] = "";
- }
}
@@ -4259,6 +4360,9 @@ ix86_valid_target_attribute_inner_p (tree args, char *p_strings[],
IX86_ATTR_ISA ("f16c", OPT_mf16c),
IX86_ATTR_ISA ("rtm", OPT_mrtm),
IX86_ATTR_ISA ("hle", OPT_mhle),
+ IX86_ATTR_ISA ("prfchw", OPT_mprfchw),
+ IX86_ATTR_ISA ("rdseed", OPT_mrdseed),
+ IX86_ATTR_ISA ("adx", OPT_madx),
/* enum options */
IX86_ATTR_ENUM ("fpmath=", OPT_mfpmath_),
@@ -5300,7 +5404,7 @@ ix86_function_regparm (const_tree type, const_tree decl)
so less registers should be used for argument passing.
This functionality can be overriden by an explicit
regparm value. */
- for (regno = 0; regno <= DI_REG; regno++)
+ for (regno = AX_REG; regno <= DI_REG; regno++)
if (fixed_regs[regno])
globals++;
@@ -7447,6 +7551,18 @@ ix86_promote_function_mode (const_tree type, enum machine_mode mode,
for_return);
}
+/* Return true if a structure, union or array with MODE containing FIELD
+ should be accessed using BLKmode. */
+
+static bool
+ix86_member_type_forces_blk (const_tree field, enum machine_mode mode)
+{
+ /* Union with XFmode must be in BLKmode. */
+ return (mode == XFmode
+ && (TREE_CODE (DECL_FIELD_CONTEXT (field)) == UNION_TYPE
+ || TREE_CODE (DECL_FIELD_CONTEXT (field)) == QUAL_UNION_TYPE));
+}
+
rtx
ix86_libcall_value (enum machine_mode mode)
{
@@ -11555,6 +11671,10 @@ ix86_address_subreg_operand (rtx op)
if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
return false;
+ /* simplify_subreg does not handle stack pointer. */
+ if (REGNO (op) == STACK_POINTER_REGNUM)
+ return false;
+
/* Allow only SUBREGs of non-eliminable hard registers. */
return register_no_elim_operand (op, mode);
}
@@ -11581,7 +11701,11 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
{
if (GET_CODE (addr) == ZERO_EXTEND
&& GET_MODE (XEXP (addr, 0)) == SImode)
- addr = XEXP (addr, 0);
+ {
+ addr = XEXP (addr, 0);
+ if (CONST_INT_P (addr))
+ return 0;
+ }
else if (GET_CODE (addr) == AND
&& const_32bit_mask (XEXP (addr, 1), DImode))
{
@@ -11590,7 +11714,11 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
/* Adjust SUBREGs. */
if (GET_CODE (addr) == SUBREG
&& GET_MODE (SUBREG_REG (addr)) == SImode)
- addr = SUBREG_REG (addr);
+ {
+ addr = SUBREG_REG (addr);
+ if (CONST_INT_P (addr))
+ return 0;
+ }
else if (GET_MODE (addr) == DImode)
addr = gen_rtx_SUBREG (SImode, addr, 0);
else if (GET_MODE (addr) != VOIDmode)
@@ -11598,6 +11726,19 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
}
}
+ /* Allow SImode subregs of DImode addresses,
+ they will be emitted with addr32 prefix. */
+ if (TARGET_64BIT && GET_MODE (addr) == SImode)
+ {
+ if (GET_CODE (addr) == SUBREG
+ && GET_MODE (SUBREG_REG (addr)) == DImode)
+ {
+ addr = SUBREG_REG (addr);
+ if (CONST_INT_P (addr))
+ return 0;
+ }
+ }
+
if (REG_P (addr))
base = addr;
else if (GET_CODE (addr) == SUBREG)
@@ -11711,6 +11852,19 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
scale = 1 << scale;
retval = -1;
}
+ else if (CONST_INT_P (addr))
+ {
+ if (!x86_64_immediate_operand (addr, VOIDmode))
+ return 0;
+
+ /* Constant addresses are sign extended to 64bit, we have to
+ prevent addresses from 0x80000000 to 0xffffffff in x32 mode. */
+ if (TARGET_X32
+ && val_signbit_known_set_p (SImode, INTVAL (addr)))
+ return 0;
+
+ disp = addr;
+ }
else
disp = addr; /* displacement */
@@ -12220,13 +12374,6 @@ ix86_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED,
rtx base, index, disp;
HOST_WIDE_INT scale;
- /* Since constant address in x32 is signed extended to 64bit,
- we have to prevent addresses from 0x80000000 to 0xffffffff. */
- if (TARGET_X32
- && CONST_INT_P (addr)
- && INTVAL (addr) < 0)
- return false;
-
if (ix86_decompose_address (addr, &parts) <= 0)
/* Decomposition failed. */
return false;
@@ -14066,7 +14213,7 @@ ix86_print_operand (FILE *file, rtx x, int code)
output_address (x);
return;
-
+
case 'L':
if (ASSEMBLER_DIALECT == ASM_ATT)
putc ('l', file);
@@ -14694,6 +14841,7 @@ ix86_print_operand_address (FILE *file, rtx addr)
rtx tmp = SUBREG_REG (parts.base);
parts.base = simplify_subreg (GET_MODE (parts.base),
tmp, GET_MODE (tmp), 0);
+ gcc_assert (parts.base != NULL_RTX);
}
if (parts.index && GET_CODE (parts.index) == SUBREG)
@@ -14701,6 +14849,7 @@ ix86_print_operand_address (FILE *file, rtx addr)
rtx tmp = SUBREG_REG (parts.index);
parts.index = simplify_subreg (GET_MODE (parts.index),
tmp, GET_MODE (tmp), 0);
+ gcc_assert (parts.index != NULL_RTX);
}
base = parts.base;
@@ -14754,12 +14903,20 @@ ix86_print_operand_address (FILE *file, rtx addr)
}
else
{
- /* Print SImode register names for zero-extended
- addresses to force addr32 prefix. */
- if (TARGET_64BIT
- && (GET_CODE (addr) == ZERO_EXTEND
- || GET_CODE (addr) == AND))
+ /* Print SImode register names to force addr32 prefix. */
+ if (GET_CODE (addr) == SUBREG)
+ {
+ gcc_assert (TARGET_64BIT);
+ gcc_assert (GET_MODE (addr) == SImode);
+ gcc_assert (GET_MODE (SUBREG_REG (addr)) == DImode);
+ gcc_assert (!code);
+ code = 'l';
+ }
+ else if (GET_CODE (addr) == ZERO_EXTEND
+ || GET_CODE (addr) == AND)
{
+ gcc_assert (TARGET_64BIT);
+ gcc_assert (GET_MODE (addr) == DImode);
gcc_assert (!code);
code = 'l';
}
@@ -15397,7 +15554,7 @@ output_387_ffreep (rtx *operands ATTRIBUTE_UNUSED, int opno)
static char retval[32];
int regno = REGNO (operands[opno]);
- gcc_assert (FP_REGNO_P (regno));
+ gcc_assert (STACK_REGNO_P (regno));
regno -= FIRST_STACK_REG;
@@ -16775,9 +16932,9 @@ distance_agu_use (unsigned int regno0, rtx insn)
over a sequence of instructions. Instructions sequence has
SPLIT_COST cycles higher latency than lea latency. */
-bool
+static bool
ix86_lea_outperforms (rtx insn, unsigned int regno0, unsigned int regno1,
- unsigned int regno2, unsigned int split_cost)
+ unsigned int regno2, int split_cost)
{
int dist_define, dist_use;
@@ -16803,9 +16960,9 @@ ix86_lea_outperforms (rtx insn, unsigned int regno0, unsigned int regno1,
dist_define += split_cost + IX86_LEA_PRIORITY;
/* If there is no use in memory addess then we just check
- that split cost does not exceed AGU stall. */
+ that split cost exceeds AGU stall. */
if (dist_use < 0)
- return dist_define >= LEA_MAX_STALL;
+ return dist_define > LEA_MAX_STALL;
/* If this insn has both backward non-agu dependence and forward
agu dependence, the one with short distance takes effect. */
@@ -16850,9 +17007,7 @@ ix86_ok_to_clobber_flags (rtx insn)
bool
ix86_avoid_lea_for_add (rtx insn, rtx operands[])
{
- unsigned int regno0 = true_regnum (operands[0]);
- unsigned int regno1 = true_regnum (operands[1]);
- unsigned int regno2 = true_regnum (operands[2]);
+ unsigned int regno0, regno1, regno2;
/* Check if we need to optimize. */
if (!TARGET_OPT_AGU || optimize_function_for_size_p (cfun))
@@ -16862,6 +17017,10 @@ ix86_avoid_lea_for_add (rtx insn, rtx operands[])
if (!ix86_ok_to_clobber_flags(insn))
return false;
+ regno0 = true_regnum (operands[0]);
+ regno1 = true_regnum (operands[1]);
+ regno2 = true_regnum (operands[2]);
+
/* We need to split only adds with non destructive
destination operand. */
if (regno0 == regno1 || regno0 == regno2)
@@ -16876,8 +17035,7 @@ ix86_avoid_lea_for_add (rtx insn, rtx operands[])
bool
ix86_use_lea_for_mov (rtx insn, rtx operands[])
{
- unsigned int regno0;
- unsigned int regno1;
+ unsigned int regno0, regno1;
/* Check if we need to optimize. */
if (!TARGET_OPT_AGU || optimize_function_for_size_p (cfun))
@@ -16890,7 +17048,7 @@ ix86_use_lea_for_mov (rtx insn, rtx operands[])
regno0 = true_regnum (operands[0]);
regno1 = true_regnum (operands[1]);
- return ix86_lea_outperforms (insn, regno0, regno1, -1, 0);
+ return ix86_lea_outperforms (insn, regno0, regno1, INVALID_REGNUM, 0);
}
/* Return true if we need to split lea into a sequence of
@@ -16899,10 +17057,8 @@ ix86_use_lea_for_mov (rtx insn, rtx operands[])
bool
ix86_avoid_lea_for_addr (rtx insn, rtx operands[])
{
- unsigned int regno0 = true_regnum (operands[0]) ;
- unsigned int regno1 = -1;
- unsigned int regno2 = -1;
- unsigned int split_cost = 0;
+ unsigned int regno0, regno1, regno2;
+ int split_cost;
struct ix86_address parts;
int ok;
@@ -16917,16 +17073,27 @@ ix86_avoid_lea_for_addr (rtx insn, rtx operands[])
ok = ix86_decompose_address (operands[1], &parts);
gcc_assert (ok);
+ /* There should be at least two components in the address. */
+ if ((parts.base != NULL_RTX) + (parts.index != NULL_RTX)
+ + (parts.disp != NULL_RTX) + (parts.scale > 1) < 2)
+ return false;
+
/* We should not split into add if non legitimate pic
operand is used as displacement. */
if (parts.disp && flag_pic && !LEGITIMATE_PIC_OPERAND_P (parts.disp))
return false;
+ regno0 = true_regnum (operands[0]) ;
+ regno1 = INVALID_REGNUM;
+ regno2 = INVALID_REGNUM;
+
if (parts.base)
regno1 = true_regnum (parts.base);
if (parts.index)
regno2 = true_regnum (parts.index);
+ split_cost = 0;
+
/* Compute how many cycles we will add to execution time
if split lea into a sequence of instructions. */
if (parts.base || parts.index)
@@ -16978,38 +17145,71 @@ ix86_emit_binop (enum rtx_code code, enum machine_mode mode,
emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, op, clob)));
}
+/* Return true if regno1 def is nearest to the insn. */
+
+static bool
+find_nearest_reg_def (rtx insn, int regno1, int regno2)
+{
+ rtx prev = insn;
+ rtx start = BB_HEAD (BLOCK_FOR_INSN (insn));
+
+ if (insn == start)
+ return false;
+ while (prev && prev != start)
+ {
+ if (!INSN_P (prev) || !NONDEBUG_INSN_P (prev))
+ {
+ prev = PREV_INSN (prev);
+ continue;
+ }
+ if (insn_defines_reg (regno1, INVALID_REGNUM, prev))
+ return true;
+ else if (insn_defines_reg (regno2, INVALID_REGNUM, prev))
+ return false;
+ prev = PREV_INSN (prev);
+ }
+
+ /* None of the regs is defined in the bb. */
+ return false;
+}
+
/* Split lea instructions into a sequence of instructions
which are executed on ALU to avoid AGU stalls.
It is assumed that it is allowed to clobber flags register
at lea position. */
-extern void
-ix86_split_lea_for_addr (rtx operands[], enum machine_mode mode)
+void
+ix86_split_lea_for_addr (rtx insn, rtx operands[], enum machine_mode mode)
{
- unsigned int regno0 = true_regnum (operands[0]) ;
- unsigned int regno1 = INVALID_REGNUM;
- unsigned int regno2 = INVALID_REGNUM;
+ unsigned int regno0, regno1, regno2;
struct ix86_address parts;
- rtx tmp;
+ rtx target, tmp;
int ok, adds;
ok = ix86_decompose_address (operands[1], &parts);
gcc_assert (ok);
+ target = gen_lowpart (mode, operands[0]);
+
+ regno0 = true_regnum (target);
+ regno1 = INVALID_REGNUM;
+ regno2 = INVALID_REGNUM;
+
if (parts.base)
{
- if (GET_MODE (parts.base) != mode)
- parts.base = gen_rtx_SUBREG (mode, parts.base, 0);
+ parts.base = gen_lowpart (mode, parts.base);
regno1 = true_regnum (parts.base);
}
if (parts.index)
{
- if (GET_MODE (parts.index) != mode)
- parts.index = gen_rtx_SUBREG (mode, parts.index, 0);
+ parts.index = gen_lowpart (mode, parts.index);
regno2 = true_regnum (parts.index);
}
+ if (parts.disp)
+ parts.disp = gen_lowpart (mode, parts.disp);
+
if (parts.scale > 1)
{
/* Case r1 = r1 + ... */
@@ -17022,41 +17222,41 @@ ix86_split_lea_for_addr (rtx operands[], enum machine_mode mode)
gcc_assert (regno2 != regno0);
for (adds = parts.scale; adds > 0; adds--)
- ix86_emit_binop (PLUS, mode, operands[0], parts.index);
+ ix86_emit_binop (PLUS, mode, target, parts.index);
}
else
{
/* r1 = r2 + r3 * C case. Need to move r3 into r1. */
if (regno0 != regno2)
- emit_insn (gen_rtx_SET (VOIDmode, operands[0], parts.index));
+ emit_insn (gen_rtx_SET (VOIDmode, target, parts.index));
/* Use shift for scaling. */
- ix86_emit_binop (ASHIFT, mode, operands[0],
+ ix86_emit_binop (ASHIFT, mode, target,
GEN_INT (exact_log2 (parts.scale)));
if (parts.base)
- ix86_emit_binop (PLUS, mode, operands[0], parts.base);
+ ix86_emit_binop (PLUS, mode, target, parts.base);
if (parts.disp && parts.disp != const0_rtx)
- ix86_emit_binop (PLUS, mode, operands[0], parts.disp);
+ ix86_emit_binop (PLUS, mode, target, parts.disp);
}
}
else if (!parts.base && !parts.index)
{
gcc_assert(parts.disp);
- emit_insn (gen_rtx_SET (VOIDmode, operands[0], parts.disp));
+ emit_insn (gen_rtx_SET (VOIDmode, target, parts.disp));
}
else
{
if (!parts.base)
{
if (regno0 != regno2)
- emit_insn (gen_rtx_SET (VOIDmode, operands[0], parts.index));
+ emit_insn (gen_rtx_SET (VOIDmode, target, parts.index));
}
else if (!parts.index)
{
if (regno0 != regno1)
- emit_insn (gen_rtx_SET (VOIDmode, operands[0], parts.base));
+ emit_insn (gen_rtx_SET (VOIDmode, target, parts.base));
}
else
{
@@ -17066,15 +17266,29 @@ ix86_split_lea_for_addr (rtx operands[], enum machine_mode mode)
tmp = parts.base;
else
{
- emit_insn (gen_rtx_SET (VOIDmode, operands[0], parts.base));
- tmp = parts.index;
+ rtx tmp1;
+
+ /* Find better operand for SET instruction, depending
+ on which definition is farther from the insn. */
+ if (find_nearest_reg_def (insn, regno1, regno2))
+ tmp = parts.index, tmp1 = parts.base;
+ else
+ tmp = parts.base, tmp1 = parts.index;
+
+ emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
+
+ if (parts.disp && parts.disp != const0_rtx)
+ ix86_emit_binop (PLUS, mode, target, parts.disp);
+
+ ix86_emit_binop (PLUS, mode, target, tmp1);
+ return;
}
- ix86_emit_binop (PLUS, mode, operands[0], tmp);
+ ix86_emit_binop (PLUS, mode, target, tmp);
}
if (parts.disp && parts.disp != const0_rtx)
- ix86_emit_binop (PLUS, mode, operands[0], parts.disp);
+ ix86_emit_binop (PLUS, mode, target, parts.disp);
}
}
@@ -20535,7 +20749,9 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
parts[2] = gen_int_mode (l[2], SImode);
break;
case XFmode:
- REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l);
+ /* We can't use REAL_VALUE_TO_TARGET_LONG_DOUBLE since
+ long double may not be 80-bit. */
+ real_to_target (l, &r, mode);
parts[2] = gen_int_mode (l[2], SImode);
break;
case DFmode:
@@ -23090,7 +23306,7 @@ ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align)
/* For given symbol (function) construct code to compute address of it's PLT
entry in large x86-64 PIC model. */
-rtx
+static rtx
construct_plt_address (rtx symbol)
{
rtx tmp, unspec;
@@ -23642,6 +23858,7 @@ ix86_issue_rate (void)
case PROCESSOR_PENTIUM:
case PROCESSOR_ATOM:
case PROCESSOR_K6:
+ case PROCESSOR_BTVER2:
return 2;
case PROCESSOR_PENTIUMPRO:
@@ -23848,6 +24065,7 @@ ix86_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost)
case PROCESSOR_BDVER1:
case PROCESSOR_BDVER2:
case PROCESSOR_BTVER1:
+ case PROCESSOR_BTVER2:
case PROCESSOR_ATOM:
case PROCESSOR_GENERIC32:
case PROCESSOR_GENERIC64:
@@ -23905,6 +24123,7 @@ ia32_multipass_dfa_lookahead (void)
case PROCESSOR_CORE2_64:
case PROCESSOR_COREI7_32:
case PROCESSOR_COREI7_64:
+ case PROCESSOR_ATOM:
/* Generally, we want haifa-sched:max_issue() to look ahead as far
as many instructions can be executed on a cycle, i.e.,
issue_rate. I wonder why tuning for many CPUs does not do this. */
@@ -25754,14 +25973,6 @@ enum ix86_builtins
IX86_BUILTIN_CPYSGNPS256,
IX86_BUILTIN_CPYSGNPD256,
- IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V4SI,
- IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V8SI,
- IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V4SI,
- IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V8SI,
- IX86_BUILTIN_VEC_WIDEN_SMUL_EVEN_V4SI,
- IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V4SI,
- IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V8SI,
-
/* FMA4 instructions. */
IX86_BUILTIN_VFMADDSS,
IX86_BUILTIN_VFMADDSD,
@@ -25955,6 +26166,10 @@ enum ix86_builtins
IX86_BUILTIN_PEXT32,
IX86_BUILTIN_PEXT64,
+ /* ADX instructions. */
+ IX86_BUILTIN_ADDCARRYX32,
+ IX86_BUILTIN_ADDCARRYX64,
+
/* FSGSBASE instructions. */
IX86_BUILTIN_RDFSBASE32,
IX86_BUILTIN_RDFSBASE64,
@@ -25970,6 +26185,11 @@ enum ix86_builtins
IX86_BUILTIN_RDRAND32_STEP,
IX86_BUILTIN_RDRAND64_STEP,
+ /* RDSEED instructions. */
+ IX86_BUILTIN_RDSEED16_STEP,
+ IX86_BUILTIN_RDSEED32_STEP,
+ IX86_BUILTIN_RDSEED64_STEP,
+
/* F16C instructions. */
IX86_BUILTIN_CVTPH2PS,
IX86_BUILTIN_CVTPH2PS256,
@@ -26619,11 +26839,7 @@ static const struct builtin_description bdesc_args[] =
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_psadbw, "__builtin_ia32_psadbw128", IX86_BUILTIN_PSADBW128, UNKNOWN, (int) V2DI_FTYPE_V16QI_V16QI },
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_umulv1siv1di3, "__builtin_ia32_pmuludq", IX86_BUILTIN_PMULUDQ, UNKNOWN, (int) V1DI_FTYPE_V2SI_V2SI },
- { OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_umulv2siv2di3, "__builtin_ia32_pmuludq128", IX86_BUILTIN_PMULUDQ128, UNKNOWN, (int) V2DI_FTYPE_V4SI_V4SI },
- { OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_umulv2siv2di3, "__builtin_vw_umul_even_v4si", IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V4SI, UNKNOWN, (int) V2UDI_FTYPE_V4USI_V4USI },
- { OPTION_MASK_ISA_SSE2, CODE_FOR_vec_widen_smult_even_v4si, "__builtin_ia32_vw_smul_even_v4si", IX86_BUILTIN_VEC_WIDEN_SMUL_EVEN_V4SI, UNKNOWN, (int) V2DI_FTYPE_V4SI_V4SI },
- { OPTION_MASK_ISA_SSE2, CODE_FOR_vec_widen_umult_odd_v4si, "__builtin_ia32_vw_umul_odd_v4si", IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V4SI, UNKNOWN, (int) V2UDI_FTYPE_V4USI_V4USI },
- { OPTION_MASK_ISA_SSE2, CODE_FOR_vec_widen_smult_odd_v4si, "__builtin_ia32_vw_smul_odd_v4si", IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V4SI, UNKNOWN, (int) V2DI_FTYPE_V4SI_V4SI },
+ { OPTION_MASK_ISA_SSE2, CODE_FOR_vec_widen_umult_even_v4si, "__builtin_ia32_pmuludq128", IX86_BUILTIN_PMULUDQ128, UNKNOWN, (int) V2DI_FTYPE_V4SI_V4SI },
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_pmaddwd, "__builtin_ia32_pmaddwd128", IX86_BUILTIN_PMADDWD128, UNKNOWN, (int) V4SI_FTYPE_V8HI_V8HI },
@@ -27015,16 +27231,13 @@ static const struct builtin_description bdesc_args[] =
{ OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_zero_extendv8hiv8si2 , "__builtin_ia32_pmovzxwd256", IX86_BUILTIN_PMOVZXWD256, UNKNOWN, (int) V8SI_FTYPE_V8HI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_zero_extendv4hiv4di2 , "__builtin_ia32_pmovzxwq256", IX86_BUILTIN_PMOVZXWQ256, UNKNOWN, (int) V4DI_FTYPE_V8HI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_zero_extendv4siv4di2 , "__builtin_ia32_pmovzxdq256", IX86_BUILTIN_PMOVZXDQ256, UNKNOWN, (int) V4DI_FTYPE_V4SI },
- { OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_mulv4siv4di3 , "__builtin_ia32_pmuldq256" , IX86_BUILTIN_PMULDQ256 , UNKNOWN, (int) V4DI_FTYPE_V8SI_V8SI },
- { OPTION_MASK_ISA_AVX2, CODE_FOR_vec_widen_smult_odd_v8si, "__builtin_ia32_vw_smul_odd_v8si", IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V8SI, UNKNOWN, (int) V4DI_FTYPE_V8SI_V8SI },
+ { OPTION_MASK_ISA_AVX2, CODE_FOR_vec_widen_smult_even_v8si, "__builtin_ia32_pmuldq256", IX86_BUILTIN_PMULDQ256, UNKNOWN, (int) V4DI_FTYPE_V8SI_V8SI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_umulhrswv16hi3 , "__builtin_ia32_pmulhrsw256", IX86_BUILTIN_PMULHRSW256, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_umulv16hi3_highpart, "__builtin_ia32_pmulhuw256" , IX86_BUILTIN_PMULHUW256 , UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_smulv16hi3_highpart, "__builtin_ia32_pmulhw256" , IX86_BUILTIN_PMULHW256 , UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_mulv16hi3, "__builtin_ia32_pmullw256" , IX86_BUILTIN_PMULLW256 , UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_mulv8si3, "__builtin_ia32_pmulld256" , IX86_BUILTIN_PMULLD256 , UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI },
- { OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_umulv4siv4di3 , "__builtin_ia32_pmuludq256" , IX86_BUILTIN_PMULUDQ256 , UNKNOWN, (int) V4DI_FTYPE_V8SI_V8SI },
- { OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_umulv4siv4di3 , "__builtin_i386_vw_umul_even_v8si" , IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V8SI, UNKNOWN, (int) V4UDI_FTYPE_V8USI_V8USI },
- { OPTION_MASK_ISA_AVX2, CODE_FOR_vec_widen_umult_odd_v8si, "__builtin_ia32_vw_umul_odd_v8si", IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V8SI, UNKNOWN, (int) V4UDI_FTYPE_V8USI_V8USI },
+ { OPTION_MASK_ISA_AVX2, CODE_FOR_vec_widen_umult_even_v8si, "__builtin_ia32_pmuludq256", IX86_BUILTIN_PMULUDQ256, UNKNOWN, (int) V4DI_FTYPE_V8SI_V8SI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_iorv4di3, "__builtin_ia32_por256", IX86_BUILTIN_POR256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_psadbw, "__builtin_ia32_psadbw256", IX86_BUILTIN_PSADBW256, UNKNOWN, (int) V16HI_FTYPE_V32QI_V32QI },
{ OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_pshufbv32qi3, "__builtin_ia32_pshufb256", IX86_BUILTIN_PSHUFB256, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI },
@@ -27798,6 +28011,23 @@ ix86_init_mmx_sse_builtins (void)
def_builtin_const (OPTION_MASK_ISA_SSE4_1, "__builtin_ia32_vec_set_v16qi",
V16QI_FTYPE_V16QI_QI_INT, IX86_BUILTIN_VEC_SET_V16QI);
+ /* RDSEED */
+ def_builtin (OPTION_MASK_ISA_RDSEED, "__builtin_ia32_rdseed_hi_step",
+ INT_FTYPE_PUSHORT, IX86_BUILTIN_RDSEED16_STEP);
+ def_builtin (OPTION_MASK_ISA_RDSEED, "__builtin_ia32_rdseed_si_step",
+ INT_FTYPE_PUNSIGNED, IX86_BUILTIN_RDSEED32_STEP);
+ def_builtin (OPTION_MASK_ISA_RDSEED | OPTION_MASK_ISA_64BIT,
+ "__builtin_ia32_rdseed_di_step",
+ INT_FTYPE_PULONGLONG, IX86_BUILTIN_RDSEED64_STEP);
+
+ /* ADCX */
+ def_builtin (0, "__builtin_ia32_addcarryx_u32",
+ UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED, IX86_BUILTIN_ADDCARRYX32);
+ def_builtin (OPTION_MASK_ISA_64BIT,
+ "__builtin_ia32_addcarryx_u64",
+ UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG,
+ IX86_BUILTIN_ADDCARRYX64);
+
/* Add FMA4 multi-arg argument instructions */
for (i = 0, d = bdesc_multi_arg; i < ARRAY_SIZE (bdesc_multi_arg); i++, d++)
{
@@ -28097,6 +28327,10 @@ ix86_fold_builtin (tree fndecl, int n_args,
}
}
+#ifdef SUBTARGET_FOLD_BUILTIN
+ return SUBTARGET_FOLD_BUILTIN (fndecl, n_args, args, ignore);
+#endif
+
return NULL_TREE;
}
@@ -29309,6 +29543,10 @@ ix86_expand_args_builtin (const struct builtin_description *d,
nargs = 4;
nargs_constant = 2;
break;
+ case UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED:
+ case UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG:
+ nargs = 4;
+ break;
default:
gcc_unreachable ();
}
@@ -30118,6 +30356,101 @@ rdrand_step:
gen_rtx_IF_THEN_ELSE (SImode, pat, op2, op1)));
return target;
+ case IX86_BUILTIN_RDSEED16_STEP:
+ icode = CODE_FOR_rdseedhi_1;
+ mode0 = HImode;
+ goto rdseed_step;
+
+ case IX86_BUILTIN_RDSEED32_STEP:
+ icode = CODE_FOR_rdseedsi_1;
+ mode0 = SImode;
+ goto rdseed_step;
+
+ case IX86_BUILTIN_RDSEED64_STEP:
+ icode = CODE_FOR_rdseeddi_1;
+ mode0 = DImode;
+
+rdseed_step:
+ op0 = gen_reg_rtx (mode0);
+ emit_insn (GEN_FCN (icode) (op0));
+
+ arg0 = CALL_EXPR_ARG (exp, 0);
+ op1 = expand_normal (arg0);
+ if (!address_operand (op1, VOIDmode))
+ {
+ op1 = convert_memory_address (Pmode, op1);
+ op1 = copy_addr_to_reg (op1);
+ }
+ emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
+
+ op2 = gen_reg_rtx (QImode);
+
+ pat = gen_rtx_LTU (QImode, gen_rtx_REG (CCCmode, FLAGS_REG),
+ const0_rtx);
+ emit_insn (gen_rtx_SET (VOIDmode, op2, pat));
+
+ if (target == 0)
+ target = gen_reg_rtx (SImode);
+
+ emit_insn (gen_zero_extendqisi2 (target, op2));
+ return target;
+
+ case IX86_BUILTIN_ADDCARRYX32:
+ icode = TARGET_ADX ? CODE_FOR_adcxsi3 : CODE_FOR_addsi3_carry;
+ mode0 = SImode;
+ goto addcarryx;
+
+ case IX86_BUILTIN_ADDCARRYX64:
+ icode = TARGET_ADX ? CODE_FOR_adcxdi3 : CODE_FOR_adddi3_carry;
+ mode0 = DImode;
+
+addcarryx:
+ arg0 = CALL_EXPR_ARG (exp, 0); /* unsigned char c_in. */
+ arg1 = CALL_EXPR_ARG (exp, 1); /* unsigned int src1. */
+ arg2 = CALL_EXPR_ARG (exp, 2); /* unsigned int src2. */
+ arg3 = CALL_EXPR_ARG (exp, 3); /* unsigned int *sum_out. */
+
+ op0 = gen_reg_rtx (QImode);
+
+ /* Generate CF from input operand. */
+ op1 = expand_normal (arg0);
+ if (GET_MODE (op1) != QImode)
+ op1 = convert_to_mode (QImode, op1, 1);
+ op1 = copy_to_mode_reg (QImode, op1);
+ emit_insn (gen_addqi3_cc (op0, op1, constm1_rtx));
+
+ /* Gen ADCX instruction to compute X+Y+CF. */
+ op2 = expand_normal (arg1);
+ op3 = expand_normal (arg2);
+
+ if (!REG_P (op2))
+ op2 = copy_to_mode_reg (mode0, op2);
+ if (!REG_P (op3))
+ op3 = copy_to_mode_reg (mode0, op3);
+
+ op0 = gen_reg_rtx (mode0);
+
+ op4 = gen_rtx_REG (CCCmode, FLAGS_REG);
+ pat = gen_rtx_LTU (VOIDmode, op4, const0_rtx);
+ emit_insn (GEN_FCN (icode) (op0, op2, op3, op4, pat));
+
+ /* Store the result. */
+ op4 = expand_normal (arg3);
+ if (!address_operand (op4, VOIDmode))
+ {
+ op4 = convert_memory_address (Pmode, op4);
+ op4 = copy_addr_to_reg (op4);
+ }
+ emit_move_insn (gen_rtx_MEM (mode0, op4), op0);
+
+ /* Return current CF value. */
+ if (target == 0)
+ target = gen_reg_rtx (QImode);
+
+ PUT_MODE (pat, QImode);
+ emit_insn (gen_rtx_SET (VOIDmode, target, pat));
+ return target;
+
case IX86_BUILTIN_GATHERSIV2DF:
icode = CODE_FOR_avx2_gathersiv2df;
goto gather_gen;
@@ -31059,62 +31392,6 @@ ix86_builtin_reciprocal (unsigned int fn, bool md_fn,
return NULL_TREE;
}
}
-
-static tree
-ix86_builtin_mul_widen_even (tree type)
-{
- bool uns_p = TYPE_UNSIGNED (type);
- enum ix86_builtins code;
-
- switch (TYPE_MODE (type))
- {
- case V4SImode:
- if (!TARGET_SSE2)
- return NULL;
- code = (uns_p ? IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V4SI
- : IX86_BUILTIN_VEC_WIDEN_SMUL_EVEN_V4SI);
- break;
-
- case V8SImode:
- if (!TARGET_AVX2)
- return NULL;
- code = (uns_p ? IX86_BUILTIN_VEC_WIDEN_UMUL_EVEN_V8SI
- : IX86_BUILTIN_PMULDQ256);
- break;
-
- default:
- return NULL;
- }
- return ix86_builtins[code];
-}
-
-static tree
-ix86_builtin_mul_widen_odd (tree type)
-{
- bool uns_p = TYPE_UNSIGNED (type);
- enum ix86_builtins code;
-
- switch (TYPE_MODE (type))
- {
- case V4SImode:
- if (!TARGET_SSE2)
- return NULL;
- code = (uns_p ? IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V4SI
- : IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V4SI);
- break;
-
- case V8SImode:
- if (!TARGET_AVX2)
- return NULL;
- code = (uns_p ? IX86_BUILTIN_VEC_WIDEN_UMUL_ODD_V8SI
- : IX86_BUILTIN_VEC_WIDEN_SMUL_ODD_V8SI);
- break;
-
- default:
- return NULL;
- }
- return ix86_builtins[code];
-}
/* Helper for avx_vpermilps256_operand et al. This is also used by
the expansion functions to turn the parallel back into a mask.
@@ -31892,7 +32169,7 @@ ix86_hard_regno_mode_ok (int regno, enum machine_mode mode)
|| GET_MODE_CLASS (mode) == MODE_RANDOM
|| GET_MODE_CLASS (mode) == MODE_PARTIAL_INT)
return false;
- if (FP_REGNO_P (regno))
+ if (STACK_REGNO_P (regno))
return VALID_FP_MODE_P (mode);
if (SSE_REGNO_P (regno))
{
@@ -31920,7 +32197,7 @@ ix86_hard_regno_mode_ok (int regno, enum machine_mode mode)
{
/* Take care for QImode values - they can be in non-QI regs,
but then they do cause partial register stalls. */
- if (regno <= BX_REG || TARGET_64BIT)
+ if (TARGET_64BIT || QI_REGNO_P (regno))
return true;
if (!TARGET_PARTIAL_REG_STALL)
return true;
@@ -32029,7 +32306,7 @@ ix86_set_reg_reg_cost (enum machine_mode mode)
break;
case MODE_FLOAT:
- if ((TARGET_SSE2 && mode == TFmode)
+ if ((TARGET_SSE && mode == TFmode)
|| (TARGET_80387 && mode == XFmode)
|| ((TARGET_80387 || TARGET_SSE2) && mode == DFmode)
|| ((TARGET_80387 || TARGET_SSE) && mode == SFmode))
@@ -32037,7 +32314,7 @@ ix86_set_reg_reg_cost (enum machine_mode mode)
break;
case MODE_COMPLEX_FLOAT:
- if ((TARGET_SSE2 && mode == TCmode)
+ if ((TARGET_SSE && mode == TCmode)
|| (TARGET_80387 && mode == XCmode)
|| ((TARGET_80387 || TARGET_SSE2) && mode == DCmode)
|| ((TARGET_80387 || TARGET_SSE) && mode == SCmode))
@@ -32931,6 +33208,18 @@ x86_output_mi_thunk (FILE *file,
{
rtx this_param = x86_this_parameter (function);
rtx this_reg, tmp, fnaddr;
+ unsigned int tmp_regno;
+
+ if (TARGET_64BIT)
+ tmp_regno = R10_REG;
+ else
+ {
+ unsigned int ccvt = ix86_get_callcvt (TREE_TYPE (function));
+ if ((ccvt & (IX86_CALLCVT_FASTCALL | IX86_CALLCVT_THISCALL)) != 0)
+ tmp_regno = AX_REG;
+ else
+ tmp_regno = CX_REG;
+ }
emit_note (NOTE_INSN_PROLOGUE_END);
@@ -32957,7 +33246,7 @@ x86_output_mi_thunk (FILE *file,
{
if (!x86_64_general_operand (delta_rtx, Pmode))
{
- tmp = gen_rtx_REG (Pmode, R10_REG);
+ tmp = gen_rtx_REG (Pmode, tmp_regno);
emit_move_insn (tmp, delta_rtx);
delta_rtx = tmp;
}
@@ -32970,18 +33259,7 @@ x86_output_mi_thunk (FILE *file,
if (vcall_offset)
{
rtx vcall_addr, vcall_mem, this_mem;
- unsigned int tmp_regno;
- if (TARGET_64BIT)
- tmp_regno = R10_REG;
- else
- {
- unsigned int ccvt = ix86_get_callcvt (TREE_TYPE (function));
- if ((ccvt & (IX86_CALLCVT_FASTCALL | IX86_CALLCVT_THISCALL)) != 0)
- tmp_regno = AX_REG;
- else
- tmp_regno = CX_REG;
- }
tmp = gen_rtx_REG (Pmode, tmp_regno);
this_mem = gen_rtx_MEM (ptr_mode, this_reg);
@@ -33056,6 +33334,19 @@ x86_output_mi_thunk (FILE *file,
emit_jump_insn (gen_indirect_jump (fnaddr));
else
{
+ if (ix86_cmodel == CM_LARGE_PIC && SYMBOLIC_CONST (fnaddr))
+ fnaddr = legitimize_pic_address (fnaddr,
+ gen_rtx_REG (Pmode, tmp_regno));
+
+ if (!sibcall_insn_operand (fnaddr, word_mode))
+ {
+ tmp = gen_rtx_REG (word_mode, tmp_regno);
+ if (GET_MODE (fnaddr) != word_mode)
+ fnaddr = gen_rtx_ZERO_EXTEND (word_mode, fnaddr);
+ emit_move_insn (tmp, fnaddr);
+ fnaddr = tmp;
+ }
+
tmp = gen_rtx_MEM (QImode, fnaddr);
tmp = gen_rtx_CALL (VOIDmode, tmp, const0_rtx);
tmp = emit_call_insn (tmp);
@@ -33507,8 +33798,8 @@ x86_extended_QIreg_mentioned_p (rtx insn)
int i;
extract_insn_cached (insn);
for (i = 0; i < recog_data.n_operands; i++)
- if (REG_P (recog_data.operand[i])
- && REGNO (recog_data.operand[i]) > BX_REG)
+ if (GENERAL_REG_P (recog_data.operand[i])
+ && !QI_REGNO_P (REGNO (recog_data.operand[i])))
return true;
return false;
}
@@ -38785,19 +39076,14 @@ ix86_expand_mul_widen_evenodd (rtx dest, rtx op1, rtx op2,
if (mode == V8SImode)
{
if (uns_p)
- x = gen_avx2_umulv4siv4di3 (dest, op1, op2);
+ x = gen_vec_widen_umult_even_v8si (dest, op1, op2);
else
- x = gen_avx2_mulv4siv4di3 (dest, op1, op2);
+ x = gen_vec_widen_smult_even_v8si (dest, op1, op2);
}
else if (uns_p)
- x = gen_sse2_umulv2siv2di3 (dest, op1, op2);
+ x = gen_vec_widen_umult_even_v4si (dest, op1, op2);
else if (TARGET_SSE4_1)
x = gen_sse4_1_mulv2siv2di3 (dest, op1, op2);
- else if (TARGET_XOP)
- {
- x = force_reg (wmode, CONST0_RTX (wmode));
- x = gen_xop_pmacsdql (dest, op1, op2, x);
- }
else
{
rtx s1, s2, t0, t1, t2;
@@ -38815,12 +39101,12 @@ ix86_expand_mul_widen_evenodd (rtx dest, rtx op1, rtx op2,
/* Multiply LO(A) * HI(B), and vice-versa. */
t1 = gen_reg_rtx (wmode);
t2 = gen_reg_rtx (wmode);
- emit_insn (gen_sse2_umulv2siv2di3 (t1, s1, op2));
- emit_insn (gen_sse2_umulv2siv2di3 (t2, s2, op1));
+ emit_insn (gen_vec_widen_umult_even_v4si (t1, s1, op2));
+ emit_insn (gen_vec_widen_umult_even_v4si (t2, s2, op1));
/* Multiply LO(A) * LO(B). */
t0 = gen_reg_rtx (wmode);
- emit_insn (gen_sse2_umulv2siv2di3 (t0, op1, op2));
+ emit_insn (gen_vec_widen_umult_even_v4si (t0, op1, op2));
/* Combine and shift the highparts into place. */
t1 = expand_binop (wmode, add_optab, t1, t2, t1, 1, OPTAB_DIRECT);
@@ -38995,12 +39281,12 @@ ix86_expand_sse2_mulvxdi3 (rtx op0, rtx op1, rtx op2)
if (mode == V2DImode)
{
- umul = gen_sse2_umulv2siv2di3;
+ umul = gen_vec_widen_umult_even_v4si;
nmode = V4SImode;
}
else if (mode == V4DImode)
{
- umul = gen_avx2_umulv4siv4di3;
+ umul = gen_vec_widen_umult_even_v8si;
nmode = V8SImode;
}
else
@@ -40122,6 +40408,64 @@ ix86_autovectorize_vector_sizes (void)
return (TARGET_AVX && !TARGET_PREFER_AVX128) ? 32 | 16 : 0;
}
+/* Implement targetm.vectorize.init_cost. */
+
+static void *
+ix86_init_cost (struct loop *loop_info ATTRIBUTE_UNUSED)
+{
+ unsigned *cost = XNEWVEC (unsigned, 3);
+ cost[vect_prologue] = cost[vect_body] = cost[vect_epilogue] = 0;
+ return cost;
+}
+
+/* Implement targetm.vectorize.add_stmt_cost. */
+
+static unsigned
+ix86_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
+ struct _stmt_vec_info *stmt_info, int misalign,
+ enum vect_cost_model_location where)
+{
+ unsigned *cost = (unsigned *) data;
+ unsigned retval = 0;
+
+ if (flag_vect_cost_model)
+ {
+ tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
+ int stmt_cost = ix86_builtin_vectorization_cost (kind, vectype, misalign);
+
+ /* Statements in an inner loop relative to the loop being
+ vectorized are weighted more heavily. The value here is
+ arbitrary and could potentially be improved with analysis. */
+ if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info))
+ count *= 50; /* FIXME. */
+
+ retval = (unsigned) (count * stmt_cost);
+ cost[where] += retval;
+ }
+
+ return retval;
+}
+
+/* Implement targetm.vectorize.finish_cost. */
+
+static void
+ix86_finish_cost (void *data, unsigned *prologue_cost,
+ unsigned *body_cost, unsigned *epilogue_cost)
+{
+ unsigned *cost = (unsigned *) data;
+ *prologue_cost = cost[vect_prologue];
+ *body_cost = cost[vect_body];
+ *epilogue_cost = cost[vect_epilogue];
+}
+
+/* Implement targetm.vectorize.destroy_cost_data. */
+
+static void
+ix86_destroy_cost_data (void *data)
+{
+ free (data);
+}
+
/* Validate target specific memory model bits in VAL. */
static unsigned HOST_WIDE_INT
@@ -40191,11 +40535,6 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
#undef TARGET_VECTORIZE_BUILTIN_GATHER
#define TARGET_VECTORIZE_BUILTIN_GATHER ix86_vectorize_builtin_gather
-#undef TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN
-#define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN ix86_builtin_mul_widen_even
-#undef TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD
-#define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD ix86_builtin_mul_widen_odd
-
#undef TARGET_BUILTIN_RECIPROCAL
#define TARGET_BUILTIN_RECIPROCAL ix86_builtin_reciprocal
@@ -40407,6 +40746,9 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
#undef TARGET_PROMOTE_FUNCTION_MODE
#define TARGET_PROMOTE_FUNCTION_MODE ix86_promote_function_mode
+#undef TARGET_MEMBER_TYPE_FORCES_BLK
+#define TARGET_MEMBER_TYPE_FORCES_BLK ix86_member_type_forces_blk
+
#undef TARGET_SECONDARY_RELOAD
#define TARGET_SECONDARY_RELOAD ix86_secondary_reload
@@ -40432,6 +40774,14 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
#undef TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES
#define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES \
ix86_autovectorize_vector_sizes
+#undef TARGET_VECTORIZE_INIT_COST
+#define TARGET_VECTORIZE_INIT_COST ix86_init_cost
+#undef TARGET_VECTORIZE_ADD_STMT_COST
+#define TARGET_VECTORIZE_ADD_STMT_COST ix86_add_stmt_cost
+#undef TARGET_VECTORIZE_FINISH_COST
+#define TARGET_VECTORIZE_FINISH_COST ix86_finish_cost
+#undef TARGET_VECTORIZE_DESTROY_COST_DATA
+#define TARGET_VECTORIZE_DESTROY_COST_DATA ix86_destroy_cost_data
#undef TARGET_SET_CURRENT_FUNCTION
#define TARGET_SET_CURRENT_FUNCTION ix86_set_current_function
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index ca767b578d9..53ca7a5bfe8 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -76,6 +76,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define TARGET_F16C OPTION_ISA_F16C
#define TARGET_RTM OPTION_ISA_RTM
#define TARGET_HLE OPTION_ISA_HLE
+#define TARGET_RDSEED OPTION_ISA_RDSEED
+#define TARGET_PRFCHW OPTION_ISA_PRFCHW
+#define TARGET_ADX OPTION_ISA_ADX
#define TARGET_LP64 OPTION_ABI_64
#define TARGET_X32 OPTION_ABI_X32
@@ -249,6 +252,7 @@ extern const struct processor_costs ix86_size_cost;
#define TARGET_BDVER1 (ix86_tune == PROCESSOR_BDVER1)
#define TARGET_BDVER2 (ix86_tune == PROCESSOR_BDVER2)
#define TARGET_BTVER1 (ix86_tune == PROCESSOR_BTVER1)
+#define TARGET_BTVER2 (ix86_tune == PROCESSOR_BTVER2)
#define TARGET_ATOM (ix86_tune == PROCESSOR_ATOM)
/* Feature tests against the various tunings. */
@@ -608,6 +612,7 @@ enum target_cpu_default
TARGET_CPU_DEFAULT_bdver1,
TARGET_CPU_DEFAULT_bdver2,
TARGET_CPU_DEFAULT_btver1,
+ TARGET_CPU_DEFAULT_btver2,
TARGET_CPU_DEFAULT_max
};
@@ -666,9 +671,17 @@ enum target_cpu_default
#define LONG_LONG_TYPE_SIZE 64
#define FLOAT_TYPE_SIZE 32
#define DOUBLE_TYPE_SIZE 64
-#define LONG_DOUBLE_TYPE_SIZE 80
+#define LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_64 ? 64 : 80)
-#define WIDEST_HARDWARE_FP_SIZE LONG_DOUBLE_TYPE_SIZE
+/* Define this to set long double type size to use in libgcc2.c, which can
+ not depend on target_flags. */
+#ifdef __LONG_DOUBLE_64__
+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64
+#else
+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 80
+#endif
+
+#define WIDEST_HARDWARE_FP_SIZE 80
#if defined (TARGET_BI_ARCH) || TARGET_64BIT_DEFAULT
#define MAX_BITS_PER_WORD 64
@@ -916,12 +929,9 @@ enum target_cpu_default
and are not available for the register allocator.
On the 80386, the stack pointer is such, as is the arg pointer.
- The value is zero if the register is not fixed on either 32 or
- 64 bit targets, one if the register if fixed on both 32 and 64
- bit targets, two if it is only fixed on 32bit targets and three
- if its only fixed on 64bit targets.
- Proper values are computed in TARGET_CONDITIONAL_REGISTER_USAGE.
- */
+ REX registers are disabled for 32bit targets in
+ TARGET_CONDITIONAL_REGISTER_USAGE. */
+
#define FIXED_REGISTERS \
/*ax,dx,cx,bx,si,di,bp,sp,st,st1,st2,st3,st4,st5,st6,st7*/ \
{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
@@ -932,10 +942,9 @@ enum target_cpu_default
/* mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7*/ \
0, 0, 0, 0, 0, 0, 0, 0, \
/* r8, r9, r10, r11, r12, r13, r14, r15*/ \
- 2, 2, 2, 2, 2, 2, 2, 2, \
+ 0, 0, 0, 0, 0, 0, 0, 0, \
/*xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15*/ \
- 2, 2, 2, 2, 2, 2, 2, 2 }
-
+ 0, 0, 0, 0, 0, 0, 0, 0 }
/* 1 for registers not available across function calls.
These must include the FIXED_REGISTERS and also any
@@ -944,25 +953,26 @@ enum target_cpu_default
and the register where structure-value addresses are passed.
Aside from that, you can include as many other registers as you like.
- The value is zero if the register is not call used on either 32 or
- 64 bit targets, one if the register if call used on both 32 and 64
- bit targets, two if it is only call used on 32bit targets and three
- if its only call used on 64bit targets.
- Proper values are computed in TARGET_CONDITIONAL_REGISTER_USAGE.
-*/
+ Value is set to 1 if the register is call used unconditionally.
+ Bit one is set if the register is call used on TARGET_32BIT ABI.
+ Bit two is set if the register is call used on TARGET_64BIT ABI.
+ Bit three is set if the register is call used on TARGET_64BIT_MS_ABI.
+
+ Proper values are computed in TARGET_CONDITIONAL_REGISTER_USAGE. */
+
#define CALL_USED_REGISTERS \
/*ax,dx,cx,bx,si,di,bp,sp,st,st1,st2,st3,st4,st5,st6,st7*/ \
-{ 1, 1, 1, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
+{ 1, 1, 1, 0, 4, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
/*arg,flags,fpsr,fpcr,frame*/ \
1, 1, 1, 1, 1, \
/*xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7*/ \
- 1, 1, 1, 1, 1, 1, 1, 1, \
+ 1, 1, 1, 1, 1, 1, 6, 6, \
/* mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7*/ \
1, 1, 1, 1, 1, 1, 1, 1, \
/* r8, r9, r10, r11, r12, r13, r14, r15*/ \
1, 1, 1, 1, 2, 2, 2, 2, \
/*xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15*/ \
- 1, 1, 1, 1, 1, 1, 1, 1 }
+ 6, 6, 6, 6, 6, 6, 6, 6 }
/* Order in which to allocate registers. Each register must be
listed once, even those in FIXED_REGISTERS. List frame pointer
@@ -998,7 +1008,7 @@ enum target_cpu_default
applied to them. */
#define HARD_REGNO_NREGS(REGNO, MODE) \
- (FP_REGNO_P (REGNO) || SSE_REGNO_P (REGNO) || MMX_REGNO_P (REGNO) \
+ (STACK_REGNO_P (REGNO) || SSE_REGNO_P (REGNO) || MMX_REGNO_P (REGNO) \
? (COMPLEX_MODE_P (MODE) ? 2 : 1) \
: ((MODE) == XFmode \
? (TARGET_64BIT ? 2 : 3) \
@@ -1008,7 +1018,7 @@ enum target_cpu_default
#define HARD_REGNO_NREGS_HAS_PADDING(REGNO, MODE) \
((TARGET_128BIT_LONG_DOUBLE && !TARGET_64BIT) \
- ? (FP_REGNO_P (REGNO) || SSE_REGNO_P (REGNO) || MMX_REGNO_P (REGNO) \
+ ? (STACK_REGNO_P (REGNO) || SSE_REGNO_P (REGNO) || MMX_REGNO_P (REGNO) \
? 0 \
: ((MODE) == XFmode || (MODE) == XCmode)) \
: 0)
@@ -1087,7 +1097,7 @@ enum target_cpu_default
: (MODE) == VOIDmode && (NREGS) != 1 ? VOIDmode \
: (MODE) == VOIDmode ? choose_hard_reg_mode ((REGNO), (NREGS), false) \
: (MODE) == HImode && !TARGET_PARTIAL_REG_STALL ? SImode \
- : (MODE) == QImode && (REGNO) > BX_REG && !TARGET_64BIT ? SImode \
+ : (MODE) == QImode && !(TARGET_64BIT || QI_REGNO_P (REGNO)) ? SImode \
: (MODE))
/* The only ABI that saves SSE registers across calls is Win64 (thus no
@@ -1198,11 +1208,11 @@ enum reg_class
NO_REGS,
AREG, DREG, CREG, BREG, SIREG, DIREG,
AD_REGS, /* %eax/%edx for DImode */
- CLOBBERED_REGS, /* call-clobbered integers */
Q_REGS, /* %eax %ebx %ecx %edx */
NON_Q_REGS, /* %esi %edi %ebp %esp */
INDEX_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp */
LEGACY_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp */
+ CLOBBERED_REGS, /* call-clobbered integer registers */
GENERAL_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp
%r8 %r9 %r10 %r11 %r12 %r13 %r14 %r15 */
FP_TOP_REG, FP_SECOND_REG, /* %st(0) %st(1) */
@@ -1248,10 +1258,10 @@ enum reg_class
"AREG", "DREG", "CREG", "BREG", \
"SIREG", "DIREG", \
"AD_REGS", \
- "CLOBBERED_REGS", \
"Q_REGS", "NON_Q_REGS", \
"INDEX_REGS", \
"LEGACY_REGS", \
+ "CLOBBERED_REGS", \
"GENERAL_REGS", \
"FP_TOP_REG", "FP_SECOND_REG", \
"FLOAT_REGS", \
@@ -1269,9 +1279,8 @@ enum reg_class
/* Define which registers fit in which classes. This is an initializer
for a vector of HARD_REG_SET of length N_REG_CLASSES.
- Note that the default setting of CLOBBERED_REGS is for 32-bit; this
- is adjusted by TARGET_CONDITIONAL_REGISTER_USAGE for the 64-bit ABI
- in effect. */
+ Note that CLOBBERED_REGS are calculated by
+ TARGET_CONDITIONAL_REGISTER_USAGE. */
#define REG_CLASS_CONTENTS \
{ { 0x00, 0x0 }, \
@@ -1279,11 +1288,11 @@ enum reg_class
{ 0x04, 0x0 }, { 0x08, 0x0 }, /* CREG, BREG */ \
{ 0x10, 0x0 }, { 0x20, 0x0 }, /* SIREG, DIREG */ \
{ 0x03, 0x0 }, /* AD_REGS */ \
- { 0x07, 0x0 }, /* CLOBBERED_REGS */ \
{ 0x0f, 0x0 }, /* Q_REGS */ \
{ 0x1100f0, 0x1fe0 }, /* NON_Q_REGS */ \
{ 0x7f, 0x1fe0 }, /* INDEX_REGS */ \
{ 0x1100ff, 0x0 }, /* LEGACY_REGS */ \
+ { 0x00, 0x0 }, /* CLOBBERED_REGS */ \
{ 0x1100ff, 0x1fe0 }, /* GENERAL_REGS */ \
{ 0x100, 0x0 }, { 0x0200, 0x0 },/* FP_TOP_REG, FP_SECOND_REG */\
{ 0xff00, 0x0 }, /* FLOAT_REGS */ \
@@ -1293,9 +1302,9 @@ enum reg_class
{ 0x1fe00100,0x1fe000 }, /* FP_TOP_SSE_REG */ \
{ 0x1fe00200,0x1fe000 }, /* FP_SECOND_SSE_REG */ \
{ 0x1fe0ff00,0x1fe000 }, /* FLOAT_SSE_REGS */ \
- { 0x1ffff, 0x1fe0 }, /* FLOAT_INT_REGS */ \
-{ 0x1fe100ff,0x1fffe0 }, /* INT_SSE_REGS */ \
-{ 0x1fe1ffff,0x1fffe0 }, /* FLOAT_INT_SSE_REGS */ \
+ { 0x11ffff, 0x1fe0 }, /* FLOAT_INT_REGS */ \
+{ 0x1ff100ff,0x1fffe0 }, /* INT_SSE_REGS */ \
+{ 0x1ff1ffff,0x1fffe0 }, /* FLOAT_INT_SSE_REGS */ \
{ 0xffffffff,0x1fffff } \
}
@@ -1312,29 +1321,32 @@ enum reg_class
registers. */
#define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true
-#define QI_REG_P(X) (REG_P (X) && REGNO (X) <= BX_REG)
-
-#define GENERAL_REGNO_P(N) \
- ((N) <= STACK_POINTER_REGNUM || REX_INT_REGNO_P (N))
+#define QI_REG_P(X) (REG_P (X) && QI_REGNO_P (REGNO (X)))
+#define QI_REGNO_P(N) IN_RANGE ((N), AX_REG, BX_REG)
#define GENERAL_REG_P(X) \
(REG_P (X) && GENERAL_REGNO_P (REGNO (X)))
+#define GENERAL_REGNO_P(N) \
+ (IN_RANGE ((N), AX_REG, SP_REG) || REX_INT_REGNO_P (N))
-#define ANY_QI_REG_P(X) (TARGET_64BIT ? GENERAL_REG_P(X) : QI_REG_P (X))
+#define ANY_QI_REG_P(X) (REG_P (X) && ANY_QI_REGNO_P (REGNO (X)))
+#define ANY_QI_REGNO_P(N) \
+ (TARGET_64BIT ? GENERAL_REGNO_P (N) : QI_REGNO_P (N))
+#define REX_INT_REG_P(X) (REG_P (X) && REX_INT_REGNO_P (REGNO (X)))
#define REX_INT_REGNO_P(N) \
IN_RANGE ((N), FIRST_REX_INT_REG, LAST_REX_INT_REG)
-#define REX_INT_REG_P(X) (REG_P (X) && REX_INT_REGNO_P (REGNO (X)))
-#define FP_REG_P(X) (REG_P (X) && FP_REGNO_P (REGNO (X)))
-#define FP_REGNO_P(N) IN_RANGE ((N), FIRST_STACK_REG, LAST_STACK_REG)
+#define STACK_REG_P(X) (REG_P (X) && STACK_REGNO_P (REGNO (X)))
+#define STACK_REGNO_P(N) IN_RANGE ((N), FIRST_STACK_REG, LAST_STACK_REG)
+
#define ANY_FP_REG_P(X) (REG_P (X) && ANY_FP_REGNO_P (REGNO (X)))
-#define ANY_FP_REGNO_P(N) (FP_REGNO_P (N) || SSE_REGNO_P (N))
+#define ANY_FP_REGNO_P(N) (STACK_REGNO_P (N) || SSE_REGNO_P (N))
#define X87_FLOAT_MODE_P(MODE) \
(TARGET_80387 && ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode))
-#define SSE_REG_P(N) (REG_P (N) && SSE_REGNO_P (REGNO (N)))
+#define SSE_REG_P(X) (REG_P (X) && SSE_REGNO_P (REGNO (X)))
#define SSE_REGNO_P(N) \
(IN_RANGE ((N), FIRST_SSE_REG, LAST_SSE_REG) \
|| REX_SSE_REGNO_P (N))
@@ -1352,13 +1364,10 @@ enum reg_class
(TARGET_FMA4 && ((MODE) == V4SFmode || (MODE) == V2DFmode \
|| (MODE) == V8SFmode || (MODE) == V4DFmode))
-#define MMX_REG_P(XOP) (REG_P (XOP) && MMX_REGNO_P (REGNO (XOP)))
+#define MMX_REG_P(X) (REG_P (X) && MMX_REGNO_P (REGNO (X)))
#define MMX_REGNO_P(N) IN_RANGE ((N), FIRST_MMX_REG, LAST_MMX_REG)
-#define STACK_REG_P(XOP) (REG_P (XOP) && STACK_REGNO_P (REGNO (XOP)))
-#define STACK_REGNO_P(N) IN_RANGE ((N), FIRST_STACK_REG, LAST_STACK_REG)
-
-#define STACK_TOP_P(XOP) (REG_P (XOP) && REGNO (XOP) == FIRST_STACK_REG)
+#define STACK_TOP_P(X) (REG_P (X) && REGNO (X) == FIRST_STACK_REG)
#define CC_REG_P(X) (REG_P (X) && CC_REGNO_P (REGNO (X)))
#define CC_REGNO_P(X) ((X) == FLAGS_REG || (X) == FPSR_REG)
@@ -1370,13 +1379,27 @@ enum reg_class
/* Place additional restrictions on the register class to use when it
is necessary to be able to hold a value of mode MODE in a reload
- register for which class CLASS would ordinarily be used. */
-
-#define LIMIT_RELOAD_CLASS(MODE, CLASS) \
- ((MODE) == QImode && !TARGET_64BIT \
- && ((CLASS) == ALL_REGS || (CLASS) == GENERAL_REGS \
- || (CLASS) == LEGACY_REGS || (CLASS) == INDEX_REGS) \
- ? Q_REGS : (CLASS))
+ register for which class CLASS would ordinarily be used.
+
+ We avoid classes containing registers from multiple units due to
+ the limitation in ix86_secondary_memory_needed. We limit these
+ classes to their "natural mode" single unit register class, depending
+ on the unit availability.
+
+ Please note that reg_class_subset_p is not commutative, so these
+ conditions mean "... if (CLASS) includes ALL registers from the
+ register set." */
+
+#define LIMIT_RELOAD_CLASS(MODE, CLASS) \
+ (((MODE) == QImode && !TARGET_64BIT \
+ && reg_class_subset_p (Q_REGS, (CLASS))) ? Q_REGS \
+ : (((MODE) == SImode || (MODE) == DImode) \
+ && reg_class_subset_p (GENERAL_REGS, (CLASS))) ? GENERAL_REGS \
+ : (SSE_FLOAT_MODE_P (MODE) && TARGET_SSE_MATH \
+ && reg_class_subset_p (SSE_REGS, (CLASS))) ? SSE_REGS \
+ : (X87_FLOAT_MODE_P (MODE) \
+ && reg_class_subset_p (FLOAT_REGS, (CLASS))) ? FLOAT_REGS \
+ : (CLASS))
/* If we are copying between general and FP registers, we need a memory
location. The same is true for SSE and MMX registers. */
@@ -1798,6 +1821,10 @@ do { \
#define BRANCH_COST(speed_p, predictable_p) \
(!(speed_p) ? 2 : (predictable_p) ? 0 : ix86_branch_cost)
+/* An integer expression for the size in bits of the largest integer machine
+ mode that should actually be used. We allow pairs of registers. */
+#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (TARGET_64BIT ? TImode : DImode)
+
/* Define this macro as a C expression which is nonzero if accessing
less than a word of memory (i.e. a `char' or a `short') is no
faster than accessing a word of memory, i.e., if such access
@@ -2067,6 +2094,7 @@ enum processor_type
PROCESSOR_BDVER1,
PROCESSOR_BDVER2,
PROCESSOR_BTVER1,
+ PROCESSOR_BTVER2,
PROCESSOR_ATOM,
PROCESSOR_max
};
@@ -2173,8 +2201,7 @@ enum ix86_stack_slot
??? Maybe Pentium chips benefits from renaming, someone can try.... */
-#define HARD_REGNO_RENAME_OK(SRC, TARGET) \
- (! IN_RANGE ((SRC), FIRST_STACK_REG, LAST_STACK_REG))
+#define HARD_REGNO_RENAME_OK(SRC, TARGET) !STACK_REGNO_P (SRC)
#define FASTCALL_PREFIX '@'
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 60aa65a88bf..33000174fca 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -206,6 +206,9 @@
;; For RDRAND support
UNSPECV_RDRAND
+ ;; For RDSEED support
+ UNSPECV_RDSEED
+
;; For RTM support
UNSPECV_XBEGIN
UNSPECV_XEND
@@ -310,7 +313,7 @@
;; Processor type.
(define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,corei7,
- atom,generic64,amdfam10,bdver1,bdver2,btver1"
+ atom,generic64,amdfam10,bdver1,bdver2,btver1,btver2"
(const (symbol_ref "ix86_schedule")))
;; A basic instruction type. Refinements due to arguments to be
@@ -638,7 +641,8 @@
(define_attr "movu" "0,1" (const_string "0"))
;; Used to control the "enabled" attribute on a per-instruction basis.
-(define_attr "isa" "base,sse2,sse2_noavx,sse3,sse4,sse4_noavx,noavx,avx,avx2,noavx2,bmi2"
+(define_attr "isa" "base,sse2,sse2_noavx,sse3,sse4,sse4_noavx,noavx,avx,
+ avx2,noavx2,bmi2,fma,fma4"
(const_string "base"))
(define_attr "enabled" ""
@@ -654,6 +658,12 @@
(eq_attr "isa" "avx2") (symbol_ref "TARGET_AVX2")
(eq_attr "isa" "noavx2") (symbol_ref "!TARGET_AVX2")
(eq_attr "isa" "bmi2") (symbol_ref "TARGET_BMI2")
+ (eq_attr "isa" "fma") (symbol_ref "TARGET_FMA")
+ ;; Disable generation of FMA4 instructions for generic code
+ ;; since FMA3 is preferred for targets that implement both
+ ;; instruction sets.
+ (eq_attr "isa" "fma4")
+ (symbol_ref "TARGET_FMA4 && !TARGET_FMA")
]
(const_int 1)))
@@ -3378,7 +3388,7 @@
int r = REGNO (operands[0]);
if ((SSE_REGNO_P (r) && !standard_sse_constant_p (c))
- || (FP_REGNO_P (r) && standard_80387_constant_p (c) < 1))
+ || (STACK_REGNO_P (r) && standard_80387_constant_p (c) < 1))
FAIL;
})
@@ -3396,7 +3406,7 @@
int r = REGNO (operands[0]);
if ((SSE_REGNO_P (r) && !standard_sse_constant_p (c))
- || (FP_REGNO_P (r) && standard_80387_constant_p (c) < 1))
+ || (STACK_REGNO_P (r) && standard_80387_constant_p (c) < 1))
FAIL;
})
@@ -3474,13 +3484,28 @@
(match_operand:SI 1 "x86_64_zext_general_operand"
"rmWz,0,r ,m ,r ,m")))]
"TARGET_64BIT"
- "@
- mov{l}\t{%1, %k0|%k0, %1}
- #
- movd\t{%1, %0|%0, %1}
- movd\t{%1, %0|%0, %1}
- %vmovd\t{%1, %0|%0, %1}
- %vmovd\t{%1, %0|%0, %1}"
+{
+ switch (get_attr_type (insn))
+ {
+ case TYPE_IMOVX:
+ if (ix86_use_lea_for_mov (insn, operands))
+ return "lea{l}\t{%E1, %k0|%k0, %E1}";
+ else
+ return "mov{l}\t{%1, %k0|%k0, %1}";
+
+ case TYPE_MULTI:
+ return "#";
+
+ case TYPE_MMXMOV:
+ return "movd\t{%1, %0|%0, %1}";
+
+ case TYPE_SSEMOV:
+ return "%vmovd\t{%1, %0|%0, %1}";
+
+ default:
+ gcc_unreachable ();
+ }
+}
[(set_attr "type" "imovx,multi,mmxmov,mmxmov,ssemov,ssemov")
(set_attr "prefix" "orig,*,orig,orig,maybe_vex,maybe_vex")
(set_attr "prefix_0f" "0,*,*,*,*,*")
@@ -5450,6 +5475,57 @@
DONE;
})
+;; Load effective address instructions
+
+(define_insn_and_split "*lea<mode>"
+ [(set (match_operand:SWI48 0 "register_operand" "=r")
+ (match_operand:SWI48 1 "lea_address_operand" "p"))]
+ ""
+{
+ rtx addr = operands[1];
+
+ if (GET_CODE (addr) == SUBREG)
+ {
+ gcc_assert (TARGET_64BIT);
+ gcc_assert (<MODE>mode == SImode);
+ gcc_assert (GET_MODE (SUBREG_REG (addr)) == DImode);
+ return "lea{l}\t{%E1, %0|%0, %E1}";
+ }
+ else if (GET_CODE (addr) == ZERO_EXTEND
+ || GET_CODE (addr) == AND)
+ {
+ gcc_assert (TARGET_64BIT);
+ gcc_assert (<MODE>mode == DImode);
+ return "lea{l}\t{%E1, %k0|%k0, %E1}";
+ }
+ else
+ return "lea{<imodesuffix>}\t{%E1, %0|%0, %E1}";
+}
+ "reload_completed && ix86_avoid_lea_for_addr (insn, operands)"
+ [(const_int 0)]
+{
+ enum machine_mode mode = <MODE>mode;
+ rtx pat;
+
+ /* ix86_avoid_lea_for_addr re-recognizes insn and may
+ change operands[] array behind our back. */
+ pat = PATTERN (curr_insn);
+
+ operands[0] = SET_DEST (pat);
+ operands[1] = SET_SRC (pat);
+
+ /* Emit all operations in SImode for zero-extended addresses. Recall
+ that x86_64 inheretly zero-extends SImode operations to DImode. */
+ if (GET_CODE (operands[1]) == ZERO_EXTEND
+ || GET_CODE (operands[1]) == AND)
+ mode = SImode;
+
+ ix86_split_lea_for_addr (curr_insn, operands, mode);
+ DONE;
+}
+ [(set_attr "type" "lea")
+ (set_attr "mode" "<MODE>")])
+
;; Add instructions
(define_expand "add<mode>3"
@@ -5508,72 +5584,6 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
-(define_insn_and_split "*lea_1"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (subreg:SI (match_operand:DI 1 "lea_address_operand" "p") 0))]
- "TARGET_64BIT"
- "lea{l}\t{%E1, %0|%0, %E1}"
- "&& reload_completed && ix86_avoid_lea_for_addr (insn, operands)"
- [(const_int 0)]
-{
- ix86_split_lea_for_addr (operands, SImode);
- DONE;
-}
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
-(define_insn_and_split "*lea<mode>_2"
- [(set (match_operand:SWI48 0 "register_operand" "=r")
- (match_operand:SWI48 1 "lea_address_operand" "p"))]
- ""
- "lea{<imodesuffix>}\t{%E1, %0|%0, %E1}"
- "reload_completed && ix86_avoid_lea_for_addr (insn, operands)"
- [(const_int 0)]
-{
- ix86_split_lea_for_addr (operands, <MODE>mode);
- DONE;
-}
- [(set_attr "type" "lea")
- (set_attr "mode" "<MODE>")])
-
-(define_insn "*lea_3_zext"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (zero_extend:DI
- (subreg:SI (match_operand:DI 1 "lea_address_operand" "j") 0)))]
- "TARGET_64BIT"
- "lea{l}\t{%E1, %k0|%k0, %E1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
-(define_insn "*lea_4_zext"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (zero_extend:DI
- (match_operand:SI 1 "lea_address_operand" "j")))]
- "TARGET_64BIT"
- "lea{l}\t{%E1, %k0|%k0, %E1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
-(define_insn "*lea_5_zext"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (and:DI
- (subreg:DI (match_operand:SI 1 "lea_address_operand" "p") 0)
- (match_operand:DI 2 "const_32bit_mask" "n")))]
- "TARGET_64BIT"
- "lea{l}\t{%E1, %k0|%k0, %E1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
-(define_insn "*lea_6_zext"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (and:DI
- (match_operand:DI 1 "lea_address_operand" "p")
- (match_operand:DI 2 "const_32bit_mask" "n")))]
- "TARGET_64BIT"
- "lea{l}\t{%E1, %k0|%k0, %E1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
(define_insn "*add<mode>_1"
[(set (match_operand:SWI48 0 "nonimmediate_operand" "=r,rm,r,r")
(plus:SWI48
@@ -5838,11 +5848,11 @@
(define_split
[(set (match_operand:SWI48 0 "register_operand")
(plus:SWI48 (match_operand:SWI48 1 "register_operand")
- (match_operand:SWI48 2 "nonmemory_operand")))
+ (match_operand:SWI48 2 "x86_64_nonmemory_operand")))
(clobber (reg:CC FLAGS_REG))]
"reload_completed && ix86_avoid_lea_for_add (insn, operands)"
[(set (match_dup 0) (match_dup 1))
- (parallel [(set (match_dup 0) (plus:<MODE> (match_dup 0) (match_dup 2)))
+ (parallel [(set (match_dup 0) (plus:SWI48 (match_dup 0) (match_dup 2)))
(clobber (reg:CC FLAGS_REG))])])
;; Convert add to the lea pattern to avoid flags dependency.
@@ -5871,6 +5881,21 @@
DONE;
})
+;; Split non destructive adds if we cannot use lea.
+(define_split
+ [(set (match_operand:DI 0 "register_operand")
+ (zero_extend:DI
+ (plus:SI (match_operand:SI 1 "register_operand")
+ (match_operand:SI 2 "x86_64_nonmemory_operand"))))
+ (clobber (reg:CC FLAGS_REG))]
+ "TARGET_64BIT
+ && reload_completed && ix86_avoid_lea_for_add (insn, operands)"
+ [(set (match_dup 3) (match_dup 1))
+ (parallel [(set (match_dup 0)
+ (zero_extend:DI (plus:SI (match_dup 3) (match_dup 2))))
+ (clobber (reg:CC FLAGS_REG))])]
+ "operands[3] = gen_lowpart (SImode, operands[0]);")
+
;; Convert add to the lea pattern to avoid flags dependency.
(define_split
[(set (match_operand:DI 0 "register_operand")
@@ -6615,6 +6640,29 @@
(set_attr "pent_pair" "pu")
(set_attr "mode" "SI")])
+;; ADCX instruction
+
+(define_insn "adcx<mode>3"
+ [(set (reg:CCC FLAGS_REG)
+ (compare:CCC
+ (plus:SWI48
+ (match_operand:SWI48 1 "nonimmediate_operand" "%0")
+ (plus:SWI48
+ (match_operator 4 "ix86_carry_flag_operator"
+ [(match_operand 3 "flags_reg_operand") (const_int 0)])
+ (match_operand:SWI48 2 "nonimmediate_operand" "rm")))
+ (const_int 0)))
+ (set (match_operand:SWI48 0 "register_operand" "=r")
+ (plus:SWI48 (match_dup 1)
+ (plus:SWI48 (match_op_dup 4
+ [(match_dup 3) (const_int 0)])
+ (match_dup 2))))]
+ "TARGET_ADX && ix86_binary_operator_ok (PLUS, <MODE>mode, operands)"
+ "adcx\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "use_carry" "1")
+ (set_attr "mode" "<MODE>")])
+
;; Overflow setting add and subtract instructions
(define_insn "*add<mode>3_cconly_overflow"
@@ -11904,7 +11952,7 @@
[(simple_return)
(unspec [(const_int 0)] UNSPEC_REP)]
"reload_completed"
- "rep\;ret"
+ "rep%; ret"
[(set_attr "length" "2")
(set_attr "atom_unit" "jeu")
(set_attr "length_immediate" "0")
@@ -11945,7 +11993,7 @@
{
int num = INTVAL (operands[0]);
- gcc_assert (num >= 1 && num <= 8);
+ gcc_assert (IN_RANGE (num, 1, 8));
while (num--)
fputs ("\tnop\n", asm_out_file);
@@ -12236,8 +12284,8 @@
else if (optimize_function_for_size_p (cfun))
;
else if (TARGET_GENERIC)
- /* tzcnt expands to rep;bsf and we can use it even if !TARGET_BMI. */
- return "rep; bsf{<imodesuffix>}\t{%1, %0|%0, %1}";
+ /* tzcnt expands to 'rep bsf' and we can use it even if !TARGET_BMI. */
+ return "rep%; bsf{<imodesuffix>}\t{%1, %0|%0, %1}";
return "bsf{<imodesuffix>}\t{%1, %0|%0, %1}";
}
@@ -16372,25 +16420,34 @@
[(set_attr "type" "icmov")
(set_attr "mode" "<MODE>")])
-(define_insn_and_split "*movqicc_noc"
+(define_insn "*movqicc_noc"
[(set (match_operand:QI 0 "register_operand" "=r,r")
(if_then_else:QI (match_operator 1 "ix86_comparison_operator"
- [(match_operand 4 "flags_reg_operand")
- (const_int 0)])
+ [(reg FLAGS_REG) (const_int 0)])
(match_operand:QI 2 "register_operand" "r,0")
(match_operand:QI 3 "register_operand" "0,r")))]
"TARGET_CMOVE && !TARGET_PARTIAL_REG_STALL"
"#"
- "&& reload_completed"
- [(set (match_dup 0)
- (if_then_else:SI (match_op_dup 1 [(match_dup 4) (const_int 0)])
- (match_dup 2)
- (match_dup 3)))]
- "operands[0] = gen_lowpart (SImode, operands[0]);
- operands[2] = gen_lowpart (SImode, operands[2]);
- operands[3] = gen_lowpart (SImode, operands[3]);"
[(set_attr "type" "icmov")
- (set_attr "mode" "SI")])
+ (set_attr "mode" "QI")])
+
+(define_split
+ [(set (match_operand 0 "register_operand")
+ (if_then_else (match_operator 1 "ix86_comparison_operator"
+ [(reg FLAGS_REG) (const_int 0)])
+ (match_operand 2 "register_operand")
+ (match_operand 3 "register_operand")))]
+ "TARGET_CMOVE && !TARGET_PARTIAL_REG_STALL
+ && (GET_MODE (operands[0]) == QImode
+ || GET_MODE (operands[0]) == HImode)
+ && reload_completed"
+ [(set (match_dup 0)
+ (if_then_else:SI (match_dup 1) (match_dup 2) (match_dup 3)))]
+{
+ operands[0] = gen_lowpart (SImode, operands[0]);
+ operands[2] = gen_lowpart (SImode, operands[2]);
+ operands[3] = gen_lowpart (SImode, operands[3]);
+})
(define_expand "mov<mode>cc"
[(set (match_operand:X87MODEF 0 "register_operand")
@@ -16450,21 +16507,16 @@
(define_split
[(set (match_operand:DF 0 "register_and_not_any_fp_reg_operand")
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator"
- [(match_operand 4 "flags_reg_operand")
- (const_int 0)])
+ [(reg FLAGS_REG) (const_int 0)])
(match_operand:DF 2 "nonimmediate_operand")
(match_operand:DF 3 "nonimmediate_operand")))]
"!TARGET_64BIT && reload_completed"
[(set (match_dup 2)
- (if_then_else:SI (match_op_dup 1 [(match_dup 4) (const_int 0)])
- (match_dup 5)
- (match_dup 6)))
+ (if_then_else:SI (match_dup 1) (match_dup 4) (match_dup 5)))
(set (match_dup 3)
- (if_then_else:SI (match_op_dup 1 [(match_dup 4) (const_int 0)])
- (match_dup 7)
- (match_dup 8)))]
+ (if_then_else:SI (match_dup 1) (match_dup 6) (match_dup 7)))]
{
- split_double_mode (DImode, &operands[2], 2, &operands[5], &operands[7]);
+ split_double_mode (DImode, &operands[2], 2, &operands[4], &operands[6]);
split_double_mode (DImode, &operands[0], 1, &operands[2], &operands[3]);
})
@@ -16871,25 +16923,6 @@
operands[0] = gen_lowpart (SImode, operands[0]);
operands[1] = gen_lowpart (SImode, operands[1]);
})
-
-(define_split
- [(set (match_operand 0 "register_operand")
- (if_then_else (match_operator 1 "ordered_comparison_operator"
- [(reg FLAGS_REG) (const_int 0)])
- (match_operand 2 "register_operand")
- (match_operand 3 "register_operand")))]
- "! TARGET_PARTIAL_REG_STALL && TARGET_CMOVE
- && (GET_MODE (operands[0]) == HImode
- || (GET_MODE (operands[0]) == QImode
- && (TARGET_PROMOTE_QImode
- || optimize_insn_for_size_p ())))"
- [(set (match_dup 0)
- (if_then_else:SI (match_dup 1) (match_dup 2) (match_dup 3)))]
-{
- operands[0] = gen_lowpart (SImode, operands[0]);
- operands[2] = gen_lowpart (SImode, operands[2]);
- operands[3] = gen_lowpart (SImode, operands[3]);
-})
;; RTL Peephole optimizations, run before sched2. These primarily look to
;; transform a complex memory operation into two memory to register operations.
@@ -17291,12 +17324,24 @@
;; Attempt to convert simple lea to add/shift.
;; These can be created by move expanders.
+;; Disable PLUS peepholes on TARGET_OPT_AGU, since all
+;; relevant lea instructions were already split.
(define_peephole2
[(set (match_operand:SWI48 0 "register_operand")
(plus:SWI48 (match_dup 0)
(match_operand:SWI48 1 "<nonmemory_operand>")))]
- "peep2_regno_dead_p (0, FLAGS_REG)"
+ "!TARGET_OPT_AGU
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0) (plus:SWI48 (match_dup 0) (match_dup 1)))
+ (clobber (reg:CC FLAGS_REG))])])
+
+(define_peephole2
+ [(set (match_operand:SWI48 0 "register_operand")
+ (plus:SWI48 (match_operand:SWI48 1 "<nonmemory_operand>")
+ (match_dup 0)))]
+ "!TARGET_OPT_AGU
+ && peep2_regno_dead_p (0, FLAGS_REG)"
[(parallel [(set (match_dup 0) (plus:SWI48 (match_dup 0) (match_dup 1)))
(clobber (reg:CC FLAGS_REG))])])
@@ -17304,27 +17349,92 @@
[(set (match_operand:SI 0 "register_operand")
(subreg:SI (plus:DI (match_operand:DI 1 "register_operand")
(match_operand:DI 2 "nonmemory_operand")) 0))]
- "TARGET_64BIT
- && peep2_regno_dead_p (0, FLAGS_REG)
- && REGNO (operands[0]) == REGNO (operands[1])"
+ "TARGET_64BIT && !TARGET_OPT_AGU
+ && REGNO (operands[0]) == REGNO (operands[1])
+ && peep2_regno_dead_p (0, FLAGS_REG)"
[(parallel [(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))
(clobber (reg:CC FLAGS_REG))])]
"operands[2] = gen_lowpart (SImode, operands[2]);")
(define_peephole2
+ [(set (match_operand:SI 0 "register_operand")
+ (subreg:SI (plus:DI (match_operand:DI 1 "nonmemory_operand")
+ (match_operand:DI 2 "register_operand")) 0))]
+ "TARGET_64BIT && !TARGET_OPT_AGU
+ && REGNO (operands[0]) == REGNO (operands[2])
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 1)))
+ (clobber (reg:CC FLAGS_REG))])]
+ "operands[1] = gen_lowpart (SImode, operands[1]);")
+
+(define_peephole2
+ [(set (match_operand:DI 0 "register_operand")
+ (zero_extend:DI
+ (plus:SI (match_operand:SI 1 "register_operand")
+ (match_operand:SI 2 "nonmemory_operand"))))]
+ "TARGET_64BIT && !TARGET_OPT_AGU
+ && REGNO (operands[0]) == REGNO (operands[1])
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0)
+ (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))
+ (clobber (reg:CC FLAGS_REG))])])
+
+(define_peephole2
+ [(set (match_operand:DI 0 "register_operand")
+ (zero_extend:DI
+ (plus:SI (match_operand:SI 1 "nonmemory_operand")
+ (match_operand:SI 2 "register_operand"))))]
+ "TARGET_64BIT && !TARGET_OPT_AGU
+ && REGNO (operands[0]) == REGNO (operands[2])
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0)
+ (zero_extend:DI (plus:SI (match_dup 2) (match_dup 1))))
+ (clobber (reg:CC FLAGS_REG))])])
+
+(define_peephole2
+ [(set (match_operand:DI 0 "register_operand")
+ (zero_extend:DI
+ (subreg:SI (plus:DI (match_dup 0)
+ (match_operand:DI 1 "nonmemory_operand")) 0)))]
+ "TARGET_64BIT && !TARGET_OPT_AGU
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0)
+ (zero_extend:DI (plus:SI (match_dup 2) (match_dup 1))))
+ (clobber (reg:CC FLAGS_REG))])]
+{
+ operands[1] = gen_lowpart (SImode, operands[1]);
+ operands[2] = gen_lowpart (SImode, operands[0]);
+})
+
+(define_peephole2
+ [(set (match_operand:DI 0 "register_operand")
+ (zero_extend:DI
+ (subreg:SI (plus:DI (match_operand:DI 1 "nonmemory_operand")
+ (match_dup 0)) 0)))]
+ "TARGET_64BIT && !TARGET_OPT_AGU
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0)
+ (zero_extend:DI (plus:SI (match_dup 2) (match_dup 1))))
+ (clobber (reg:CC FLAGS_REG))])]
+{
+ operands[1] = gen_lowpart (SImode, operands[1]);
+ operands[2] = gen_lowpart (SImode, operands[0]);
+})
+
+(define_peephole2
[(set (match_operand:SWI48 0 "register_operand")
(mult:SWI48 (match_dup 0)
(match_operand:SWI48 1 "const_int_operand")))]
"exact_log2 (INTVAL (operands[1])) >= 0
&& peep2_regno_dead_p (0, FLAGS_REG)"
- [(parallel [(set (match_dup 0) (ashift:SWI48 (match_dup 0) (match_dup 2)))
+ [(parallel [(set (match_dup 0) (ashift:SWI48 (match_dup 0) (match_dup 1)))
(clobber (reg:CC FLAGS_REG))])]
- "operands[2] = GEN_INT (exact_log2 (INTVAL (operands[1])));")
+ "operands[1] = GEN_INT (exact_log2 (INTVAL (operands[1])));")
(define_peephole2
[(set (match_operand:SI 0 "register_operand")
(subreg:SI (mult:DI (match_operand:DI 1 "register_operand")
- (match_operand:DI 2 "const_int_operand")) 0))]
+ (match_operand:DI 2 "const_int_operand")) 0))]
"TARGET_64BIT
&& exact_log2 (INTVAL (operands[2])) >= 0
&& REGNO (operands[0]) == REGNO (operands[1])
@@ -17333,6 +17443,36 @@
(clobber (reg:CC FLAGS_REG))])]
"operands[2] = GEN_INT (exact_log2 (INTVAL (operands[2])));")
+(define_peephole2
+ [(set (match_operand:DI 0 "register_operand")
+ (zero_extend:DI
+ (mult:SI (match_operand:SI 1 "register_operand")
+ (match_operand:SI 2 "const_int_operand"))))]
+ "TARGET_64BIT
+ && exact_log2 (INTVAL (operands[2])) >= 0
+ && REGNO (operands[0]) == REGNO (operands[1])
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0)
+ (zero_extend (ashift:SI (match_dup 1) (match_dup 2))))
+ (clobber (reg:CC FLAGS_REG))])]
+ "operands[2] = GEN_INT (exact_log2 (INTVAL (operands[2])));")
+
+(define_peephole2
+ [(set (match_operand:DI 0 "register_operand")
+ (zero_extend:DI
+ (subreg:SI (mult:DI (match_dup 0)
+ (match_operand:DI 1 "const_int_operand")) 0)))]
+ "TARGET_64BIT
+ && exact_log2 (INTVAL (operands[2])) >= 0
+ && peep2_regno_dead_p (0, FLAGS_REG)"
+ [(parallel [(set (match_dup 0)
+ (zero_extend:DI (ashift:SI (match_dup 2) (match_dup 1))))
+ (clobber (reg:CC FLAGS_REG))])]
+{
+ operands[1] = GEN_INT (exact_log2 (INTVAL (operands[1])));
+ operands[2] = gen_lowpart (SImode, operands[0]);
+})
+
;; The ESP adjustments can be done by the push and pop instructions. Resulting
;; code is shorter, since push is only 1 byte, while add imm, %esp is 3 bytes.
;; On many CPUs it is also faster, since special hardware to avoid esp
@@ -17653,12 +17793,14 @@
gcc_assert (locality >= 0 && locality <= 3);
gcc_assert (GET_MODE (operands[0]) == Pmode
|| GET_MODE (operands[0]) == VOIDmode);
+ if (TARGET_PRFCHW && rw)
+ operands[2] = GEN_INT (3);
/* Use 3dNOW prefetch in case we are asking for write prefetch not
supported by SSE counterpart or the SSE prefetch is not available
(K6 machines). Otherwise use SSE prefetch as it allows specifying
of locality. */
- if (TARGET_3DNOW && (!TARGET_PREFETCH_SSE || rw))
+ else if (TARGET_3DNOW && (!TARGET_PREFETCH_SSE || rw))
operands[2] = GEN_INT (3);
else
operands[1] = const0_rtx;
@@ -17689,7 +17831,7 @@
[(prefetch (match_operand:P 0 "address_operand" "p")
(match_operand:SI 1 "const_int_operand" "n")
(const_int 3))]
- "TARGET_3DNOW"
+ "TARGET_3DNOW || TARGET_PRFCHW"
{
if (INTVAL (operands[1]) == 0)
return "prefetch\t%a0";
@@ -17704,7 +17846,7 @@
(define_expand "stack_protect_set"
[(match_operand 0 "memory_operand")
(match_operand 1 "memory_operand")]
- ""
+ "!TARGET_HAS_BIONIC"
{
rtx (*insn)(rtx, rtx);
@@ -17729,7 +17871,7 @@
UNSPEC_SP_SET))
(set (match_scratch:PTR 2 "=&r") (const_int 0))
(clobber (reg:CC FLAGS_REG))]
- ""
+ "!TARGET_HAS_BIONIC"
"mov{<imodesuffix>}\t{%1, %2|%2, %1}\;mov{<imodesuffix>}\t{%2, %0|%0, %2}\;xor{l}\t%k2, %k2"
[(set_attr "type" "multi")])
@@ -17747,7 +17889,7 @@
[(match_operand 0 "memory_operand")
(match_operand 1 "memory_operand")
(match_operand 2)]
- ""
+ "!TARGET_HAS_BIONIC"
{
rtx flags = gen_rtx_REG (CCZmode, FLAGS_REG);
@@ -17777,7 +17919,7 @@
(match_operand:PTR 2 "memory_operand" "m")]
UNSPEC_SP_TEST))
(clobber (match_scratch:PTR 3 "=&r"))]
- ""
+ "!TARGET_HAS_BIONIC"
"mov{<imodesuffix>}\t{%1, %3|%3, %1}\;xor{<imodesuffix>}\t{%2, %3|%3, %2}"
[(set_attr "type" "multi")])
@@ -18116,6 +18258,16 @@
[(set_attr "type" "other")
(set_attr "prefix_extra" "1")])
+(define_insn "rdseed<mode>_1"
+ [(set (match_operand:SWI248 0 "register_operand" "=r")
+ (unspec_volatile:SWI248 [(const_int 0)] UNSPECV_RDSEED))
+ (set (reg:CCC FLAGS_REG)
+ (unspec_volatile:CCC [(const_int 0)] UNSPECV_RDSEED))]
+ "TARGET_RDSEED"
+ "rdseed\t%0"
+ [(set_attr "type" "other")
+ (set_attr "prefix_extra" "1")])
+
(define_expand "pause"
[(set (match_dup 0)
(unspec:BLK [(match_dup 0)] UNSPEC_PAUSE))]
@@ -18131,7 +18283,7 @@
[(set (match_operand:BLK 0)
(unspec:BLK [(match_dup 0)] UNSPEC_PAUSE))]
""
- "rep; nop"
+ "rep%; nop"
[(set_attr "length" "2")
(set_attr "memory" "unknown")])
diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
index db34e1fc073..6a389947d90 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -86,6 +86,14 @@ m96bit-long-double
Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
sizeof(long double) is 12
+mlong-double-80
+Target Report RejectNegative InverseMask(LONG_DOUBLE_64) Save
+Use 80-bit long double
+
+mlong-double-64
+Target Report RejectNegative Mask(LONG_DOUBLE_64) Save
+Use 64-bit long double
+
maccumulate-outgoing-args
Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
Reserve space for outgoing arguments in the function prologue
@@ -532,6 +540,18 @@ mhle
Target Report Mask(ISA_HLE) Var(ix86_isa_flags) Save
Support Hardware Lock Elision prefixes
+mrdseed
+Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
+Support RDSEED instruction
+
+mprfchw
+Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
+Support PREFETCHW instruction
+
+madx
+Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
+Support flag-preserving add-carry instructions
+
mtbm
Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
Support TBM built-in functions and code generation
diff --git a/gcc/config/i386/i386elf.h b/gcc/config/i386/i386elf.h
index 1bf3feb7479..78920a9f479 100644
--- a/gcc/config/i386/i386elf.h
+++ b/gcc/config/i386/i386elf.h
@@ -73,7 +73,7 @@ along with GCC; see the file COPYING3. If not see
fputc ('\n', (FILE)); \
bytes_in_chunk = 0; \
} \
- ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \
+ ASM_OUTPUT_LIMITED_STRING ((FILE), (const char *) _ascii_bytes); \
_ascii_bytes = p; \
} \
else \
diff --git a/gcc/config/i386/lzcntintrin.h b/gcc/config/i386/lzcntintrin.h
index 31db7dc086c..31a7163838e 100644
--- a/gcc/config/i386/lzcntintrin.h
+++ b/gcc/config/i386/lzcntintrin.h
@@ -44,12 +44,24 @@ __lzcnt32 (unsigned int __X)
return __builtin_clz (__X);
}
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_lzcnt_u32 (unsigned int __X)
+{
+ return __builtin_clz (__X);
+}
+
#ifdef __x86_64__
extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
__lzcnt64 (unsigned long long __X)
{
return __builtin_clzll (__X);
}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_lzcnt_u64 (unsigned long long __X)
+{
+ return __builtin_clzll (__X);
+}
#endif
#endif /* _LZCNTINTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
index 4fdef2664bd..0e3751f4e19 100644
--- a/gcc/config/i386/mingw32.h
+++ b/gcc/config/i386/mingw32.h
@@ -150,6 +150,11 @@ along with GCC; see the file COPYING3. If not see
#define STANDARD_STARTFILE_PREFIX_2 ""
#endif
+/* For native mingw-version we need to take care that NATIVE_SYSTEM_HEADER_DIR
+ macro contains POSIX-style path. See bug 52947. */
+#undef NATIVE_SYSTEM_HEADER_DIR
+#define NATIVE_SYSTEM_HEADER_DIR "/mingw/include"
+
/* Output STRING, a string representing a filename, to FILE.
We canonicalize it to be in Unix format (backslashes are replaced
forward slashes. */
diff --git a/gcc/config/i386/mm3dnow.h b/gcc/config/i386/mm3dnow.h
index 0d0735c9a72..c2cc01c7f18 100644
--- a/gcc/config/i386/mm3dnow.h
+++ b/gcc/config/i386/mm3dnow.h
@@ -30,6 +30,7 @@
#ifdef __3dNOW__
#include <mmintrin.h>
+#include <prfchwintrin.h>
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_femms (void)
@@ -157,12 +158,6 @@ _m_prefetch (void *__P)
__builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);
}
-extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_m_prefetchw (void *__P)
-{
- __builtin_prefetch (__P, 1, 3 /* _MM_HINT_T0 */);
-}
-
extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_from_float (float __A)
{
diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md
index 92db80912be..55e4b5610df 100644
--- a/gcc/config/i386/predicates.md
+++ b/gcc/config/i386/predicates.md
@@ -26,7 +26,7 @@
;; Return true if OP is an i387 fp register.
(define_predicate "fp_register_operand"
(and (match_code "reg")
- (match_test "FP_REGNO_P (REGNO (op))")))
+ (match_test "STACK_REGNO_P (REGNO (op))")))
;; Return true if OP is a non-fp register_operand.
(define_predicate "register_and_not_any_fp_reg_operand"
@@ -36,7 +36,7 @@
;; Return true if OP is a register operand other than an i387 fp register.
(define_predicate "register_and_not_fp_reg_operand"
(and (match_code "reg")
- (not (match_test "FP_REGNO_P (REGNO (op))"))))
+ (not (match_test "STACK_REGNO_P (REGNO (op))"))))
;; True if the operand is an MMX register.
(define_predicate "mmx_reg_operand"
@@ -830,11 +830,6 @@
struct ix86_address parts;
int ok;
- /* LEA handles zero-extend by itself. */
- if (GET_CODE (op) == ZERO_EXTEND
- || GET_CODE (op) == AND)
- return false;
-
ok = ix86_decompose_address (op, &parts);
gcc_assert (ok);
return parts.seg == SEG_DEFAULT;
@@ -976,6 +971,9 @@
struct ix86_address parts;
int ok;
+ if (TARGET_64BIT || !flag_pic)
+ return true;
+
ok = ix86_decompose_address (XEXP (op, 0), &parts);
gcc_assert (ok);
diff --git a/gcc/config/i386/prfchwintrin.h b/gcc/config/i386/prfchwintrin.h
new file mode 100644
index 00000000000..6d4c7220156
--- /dev/null
+++ b/gcc/config/i386/prfchwintrin.h
@@ -0,0 +1,42 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#if !defined _X86INTRIN_H_INCLUDED && !defined _MM3DNOW_H_INCLUDED
+# error "Never use <prfchwintrin.h> directly; include <x86intrin.h> or <mm3dnow.h> instead."
+#endif
+
+
+#if !defined (__PRFCHW__) && !defined (__3dNOW__)
+# error "PRFCHW instruction not enabled"
+#endif /* __PRFCHW__ or __3dNOW__*/
+
+#ifndef _PRFCHWINTRIN_H_INCLUDED
+#define _PRFCHWINTRIN_H_INCLUDED
+
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_m_prefetchw (void *__P)
+{
+ __builtin_prefetch (__P, 1, 3 /* _MM_HINT_T0 */);
+}
+
+#endif /* _PRFCHWINTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/rdseedintrin.h b/gcc/config/i386/rdseedintrin.h
new file mode 100644
index 00000000000..afd6ce8a50e
--- /dev/null
+++ b/gcc/config/i386/rdseedintrin.h
@@ -0,0 +1,58 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#if !defined _X86INTRIN_H_INCLUDED
+# error "Never use <rdseedintrin.h> directly; include <x86intrin.h> instead."
+#endif
+
+#ifndef __RDSEED__
+# error "RDSEED instruction not enabled"
+#endif /* __RDSEED__ */
+
+#ifndef _RDSEEDINTRIN_H_INCLUDED
+#define _RDSEEDINTRIN_H_INCLUDED
+
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdseed16_step (unsigned short *p)
+{
+ return __builtin_ia32_rdseed_hi_step (p);
+}
+
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdseed32_step (unsigned int *p)
+{
+ return __builtin_ia32_rdseed_si_step (p);
+}
+
+#ifdef __x86_64__
+extern __inline int
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_rdseed64_step (unsigned long long *p)
+{
+ return __builtin_ia32_rdseed_di_step (p);
+}
+#endif
+
+#endif /* _RDSEEDINTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/rtmintrin.h b/gcc/config/i386/rtmintrin.h
index 6dad9e09ac2..e69e68249df 100644
--- a/gcc/config/i386/rtmintrin.h
+++ b/gcc/config/i386/rtmintrin.h
@@ -71,7 +71,7 @@ _xabort (const unsigned int imm)
__builtin_ia32_xabort (imm);
}
#else
-#define _xabort(N) __builtin_ia32_xabort (N);
+#define _xabort(N) __builtin_ia32_xabort (N)
#endif /* __OPTIMIZE__ */
#endif /* _RTMINTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 754b8b4a7bc..51d77e02ec8 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -403,8 +403,6 @@
;; Mix-n-match
(define_mode_iterator AVX256MODE2P [V8SI V8SF V4DF])
-(define_mode_iterator FMAMODE [SF DF V4SF V2DF V8SF V4DF])
-
;; Mapping of immediate bits for blend instructions
(define_mode_attr blendbits
[(V8SF "255") (V4SF "15") (V4DF "15") (V2DF "3")])
@@ -1886,28 +1884,12 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
-;; FMA4 floating point multiply/accumulate instructions. This
-;; includes the scalar version of the instructions as well as the
-;; vector.
+;; FMA floating point multiply/accumulate instructions. These include
+;; scalar versions of the instructions as well as vector versions.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; In order to match (*a * *b) + *c, particularly when vectorizing, allow
-;; combine to generate a multiply/add with two memory references. We then
-;; split this insn, into loading up the destination register with one of the
-;; memory operations. If we don't manage to split the insn, reload will
-;; generate the appropriate moves. The reason this is needed, is that combine
-;; has already folded one of the memory references into both the multiply and
-;; add insns, and it can't generate a new pseudo. I.e.:
-;; (set (reg1) (mem (addr1)))
-;; (set (reg2) (mult (reg1) (mem (addr2))))
-;; (set (reg3) (plus (reg2) (mem (addr3))))
-;;
-;; ??? This is historic, pre-dating the gimple fma transformation.
-;; We could now properly represent that only one memory operand is
-;; allowed and not be penalized during optimization.
-
-;; Intrinsic FMA operations.
+(define_mode_iterator FMAMODE [SF DF V4SF V2DF V8SF V4DF])
;; The standard names for fma is only available with SSE math enabled.
(define_expand "fma<mode>4"
@@ -1942,7 +1924,7 @@
(neg:FMAMODE (match_operand:FMAMODE 3 "nonimmediate_operand"))))]
"(TARGET_FMA || TARGET_FMA4) && TARGET_SSE_MATH")
-;; The builtin for fma4intrin.h is not constrained by SSE math enabled.
+;; The builtin for intrinsics is not constrained by SSE math enabled.
(define_expand "fma4i_fmadd_<mode>"
[(set (match_operand:FMAMODE 0 "register_operand")
(fma:FMAMODE
@@ -1951,70 +1933,137 @@
(match_operand:FMAMODE 3 "nonimmediate_operand")))]
"TARGET_FMA || TARGET_FMA4")
-(define_insn "*fma4i_fmadd_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x")
+(define_insn "*fma_fmadd_<mode>"
+ [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x,x,x")
(fma:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%x,x")
- (match_operand:FMAMODE 2 "nonimmediate_operand" " x,m")
- (match_operand:FMAMODE 3 "nonimmediate_operand" "xm,x")))]
- "TARGET_FMA4"
- "vfmadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
- [(set_attr "type" "ssemuladd")
+ (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x, x,x")
+ (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm,x,m")
+ (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0,xm,x")))]
+ "TARGET_FMA || TARGET_FMA4"
+ "@
+ vfmadd132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
+ vfmadd213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
+ vfmadd231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}
+ vfmadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}
+ vfmadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
+ [(set_attr "isa" "fma,fma,fma,fma4,fma4")
+ (set_attr "type" "ssemuladd")
(set_attr "mode" "<MODE>")])
-(define_insn "*fma4i_fmsub_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x")
+(define_insn "*fma_fmsub_<mode>"
+ [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x,x,x")
(fma:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%x,x")
- (match_operand:FMAMODE 2 "nonimmediate_operand" " x,m")
+ (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x, x,x")
+ (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm,x,m")
(neg:FMAMODE
- (match_operand:FMAMODE 3 "nonimmediate_operand" "xm,x"))))]
- "TARGET_FMA4"
- "vfmsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
- [(set_attr "type" "ssemuladd")
+ (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0,xm,x"))))]
+ "TARGET_FMA || TARGET_FMA4"
+ "@
+ vfmsub132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
+ vfmsub213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
+ vfmsub231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}
+ vfmsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}
+ vfmsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
+ [(set_attr "isa" "fma,fma,fma,fma4,fma4")
+ (set_attr "type" "ssemuladd")
(set_attr "mode" "<MODE>")])
-(define_insn "*fma4i_fnmadd_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x")
+(define_insn "*fma_fnmadd_<mode>"
+ [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x,x,x")
(fma:FMAMODE
(neg:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%x,x"))
- (match_operand:FMAMODE 2 "nonimmediate_operand" " x,m")
- (match_operand:FMAMODE 3 "nonimmediate_operand" "xm,x")))]
- "TARGET_FMA4"
- "vfnmadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
- [(set_attr "type" "ssemuladd")
+ (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x, x,x"))
+ (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm,x,m")
+ (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0,xm,x")))]
+ "TARGET_FMA || TARGET_FMA4"
+ "@
+ vfnmadd132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
+ vfnmadd213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
+ vfnmadd231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}
+ vfnmadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}
+ vfnmadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
+ [(set_attr "isa" "fma,fma,fma,fma4,fma4")
+ (set_attr "type" "ssemuladd")
(set_attr "mode" "<MODE>")])
-(define_insn "*fma4i_fnmsub_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x")
+(define_insn "*fma_fnmsub_<mode>"
+ [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x,x,x")
(fma:FMAMODE
(neg:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%x,x"))
- (match_operand:FMAMODE 2 "nonimmediate_operand" " x,m")
+ (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x, x,x"))
+ (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm,x,m")
(neg:FMAMODE
- (match_operand:FMAMODE 3 "nonimmediate_operand" "xm,x"))))]
- "TARGET_FMA4"
- "vfnmsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
- [(set_attr "type" "ssemuladd")
+ (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0,xm,x"))))]
+ "TARGET_FMA || TARGET_FMA4"
+ "@
+ vfnmsub132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
+ vfnmsub213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
+ vfnmsub231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}
+ vfnmsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}
+ vfnmsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
+ [(set_attr "isa" "fma,fma,fma,fma4,fma4")
+ (set_attr "type" "ssemuladd")
(set_attr "mode" "<MODE>")])
-;; Scalar versions of the above. Unlike ADDSS et al, these write the
-;; entire destination register, with the high-order elements zeroed.
+;; FMA parallel floating point multiply addsub and subadd operations.
-(define_expand "fma4i_vmfmadd_<mode>"
- [(set (match_operand:VF_128 0 "register_operand")
- (vec_merge:VF_128
- (fma:VF_128
- (match_operand:VF_128 1 "nonimmediate_operand")
- (match_operand:VF_128 2 "nonimmediate_operand")
- (match_operand:VF_128 3 "nonimmediate_operand"))
- (match_dup 4)
- (const_int 1)))]
- "TARGET_FMA4"
-{
- operands[4] = CONST0_RTX (<MODE>mode);
-})
+;; It would be possible to represent these without the UNSPEC as
+;;
+;; (vec_merge
+;; (fma op1 op2 op3)
+;; (fma op1 op2 (neg op3))
+;; (merge-const))
+;;
+;; But this doesn't seem useful in practice.
+
+(define_expand "fmaddsub_<mode>"
+ [(set (match_operand:VF 0 "register_operand")
+ (unspec:VF
+ [(match_operand:VF 1 "nonimmediate_operand")
+ (match_operand:VF 2 "nonimmediate_operand")
+ (match_operand:VF 3 "nonimmediate_operand")]
+ UNSPEC_FMADDSUB))]
+ "TARGET_FMA || TARGET_FMA4")
+
+(define_insn "*fma_fmaddsub_<mode>"
+ [(set (match_operand:VF 0 "register_operand" "=x,x,x,x,x")
+ (unspec:VF
+ [(match_operand:VF 1 "nonimmediate_operand" "%0, 0,x, x,x")
+ (match_operand:VF 2 "nonimmediate_operand" "xm, x,xm,x,m")
+ (match_operand:VF 3 "nonimmediate_operand" " x,xm,0,xm,x")]
+ UNSPEC_FMADDSUB))]
+ "TARGET_FMA || TARGET_FMA4"
+ "@
+ vfmaddsub132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
+ vfmaddsub213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
+ vfmaddsub231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}
+ vfmaddsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}
+ vfmaddsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
+ [(set_attr "isa" "fma,fma,fma,fma4,fma4")
+ (set_attr "type" "ssemuladd")
+ (set_attr "mode" "<MODE>")])
+
+(define_insn "*fma_fmsubadd_<mode>"
+ [(set (match_operand:VF 0 "register_operand" "=x,x,x,x,x")
+ (unspec:VF
+ [(match_operand:VF 1 "nonimmediate_operand" "%0, 0,x, x,x")
+ (match_operand:VF 2 "nonimmediate_operand" "xm, x,xm,x,m")
+ (neg:VF
+ (match_operand:VF 3 "nonimmediate_operand" " x,xm,0,xm,x"))]
+ UNSPEC_FMADDSUB))]
+ "TARGET_FMA || TARGET_FMA4"
+ "@
+ vfmsubadd132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
+ vfmsubadd213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
+ vfmsubadd231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}
+ vfmsubadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}
+ vfmsubadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
+ [(set_attr "isa" "fma,fma,fma,fma4,fma4")
+ (set_attr "type" "ssemuladd")
+ (set_attr "mode" "<MODE>")])
+
+;; FMA3 floating point scalar intrinsics. These merge result with
+;; high-order elements from the destination register.
(define_expand "fmai_vmfmadd_<mode>"
[(set (match_operand:VF_128 0 "register_operand")
@@ -2099,6 +2148,21 @@
[(set_attr "type" "ssemuladd")
(set_attr "mode" "<MODE>")])
+;; FMA4 floating point scalar intrinsics. These write the
+;; entire destination register, with the high-order elements zeroed.
+
+(define_expand "fma4i_vmfmadd_<mode>"
+ [(set (match_operand:VF_128 0 "register_operand")
+ (vec_merge:VF_128
+ (fma:VF_128
+ (match_operand:VF_128 1 "nonimmediate_operand")
+ (match_operand:VF_128 2 "nonimmediate_operand")
+ (match_operand:VF_128 3 "nonimmediate_operand"))
+ (match_dup 4)
+ (const_int 1)))]
+ "TARGET_FMA4"
+ "operands[4] = CONST0_RTX (<MODE>mode);")
+
(define_insn "*fma4i_vmfmadd_<mode>"
[(set (match_operand:VF_128 0 "register_operand" "=x,x")
(vec_merge:VF_128
@@ -2161,152 +2225,6 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
-;; FMA4 Parallel floating point multiply addsub and subadd operations.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; It would be possible to represent these without the UNSPEC as
-;;
-;; (vec_merge
-;; (fma op1 op2 op3)
-;; (fma op1 op2 (neg op3))
-;; (merge-const))
-;;
-;; But this doesn't seem useful in practice.
-
-(define_expand "fmaddsub_<mode>"
- [(set (match_operand:VF 0 "register_operand")
- (unspec:VF
- [(match_operand:VF 1 "nonimmediate_operand")
- (match_operand:VF 2 "nonimmediate_operand")
- (match_operand:VF 3 "nonimmediate_operand")]
- UNSPEC_FMADDSUB))]
- "TARGET_FMA || TARGET_FMA4")
-
-(define_insn "*fma4_fmaddsub_<mode>"
- [(set (match_operand:VF 0 "register_operand" "=x,x")
- (unspec:VF
- [(match_operand:VF 1 "nonimmediate_operand" "%x,x")
- (match_operand:VF 2 "nonimmediate_operand" " x,m")
- (match_operand:VF 3 "nonimmediate_operand" "xm,x")]
- UNSPEC_FMADDSUB))]
- "TARGET_FMA4"
- "vfmaddsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-(define_insn "*fma4_fmsubadd_<mode>"
- [(set (match_operand:VF 0 "register_operand" "=x,x")
- (unspec:VF
- [(match_operand:VF 1 "nonimmediate_operand" "%x,x")
- (match_operand:VF 2 "nonimmediate_operand" " x,m")
- (neg:VF
- (match_operand:VF 3 "nonimmediate_operand" "xm,x"))]
- UNSPEC_FMADDSUB))]
- "TARGET_FMA4"
- "vfmsubadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; FMA3 floating point multiply/accumulate instructions.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define_insn "*fma_fmadd_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x")
- (fma:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x")
- (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm")
- (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0")))]
- "TARGET_FMA"
- "@
- vfmadd132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
- vfmadd213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
- vfmadd231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-(define_insn "*fma_fmsub_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x")
- (fma:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x")
- (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm")
- (neg:FMAMODE
- (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0"))))]
- "TARGET_FMA"
- "@
- vfmsub132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
- vfmsub213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
- vfmsub231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-(define_insn "*fma_fnmadd_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x")
- (fma:FMAMODE
- (neg:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x"))
- (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm")
- (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0")))]
- "TARGET_FMA"
- "@
- vfnmadd132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
- vfnmadd213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
- vfnmadd231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-(define_insn "*fma_fnmsub_<mode>"
- [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x")
- (fma:FMAMODE
- (neg:FMAMODE
- (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0,x"))
- (match_operand:FMAMODE 2 "nonimmediate_operand" "xm, x,xm")
- (neg:FMAMODE
- (match_operand:FMAMODE 3 "nonimmediate_operand" " x,xm,0"))))]
- "TARGET_FMA"
- "@
- vfnmsub132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
- vfnmsub213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
- vfnmsub231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-(define_insn "*fma_fmaddsub_<mode>"
- [(set (match_operand:VF 0 "register_operand" "=x,x,x")
- (unspec:VF
- [(match_operand:VF 1 "nonimmediate_operand" "%0, 0,x")
- (match_operand:VF 2 "nonimmediate_operand" "xm, x,xm")
- (match_operand:VF 3 "nonimmediate_operand" " x,xm,0")]
- UNSPEC_FMADDSUB))]
- "TARGET_FMA"
- "@
- vfmaddsub132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
- vfmaddsub213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
- vfmaddsub231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-(define_insn "*fma_fmsubadd_<mode>"
- [(set (match_operand:VF 0 "register_operand" "=x,x,x")
- (unspec:VF
- [(match_operand:VF 1 "nonimmediate_operand" "%0, 0,x")
- (match_operand:VF 2 "nonimmediate_operand" "xm, x,xm")
- (neg:VF
- (match_operand:VF 3 "nonimmediate_operand" " x,xm,0"))]
- UNSPEC_FMADDSUB))]
- "TARGET_FMA"
- "@
- vfmsubadd132<ssemodesuffix>\t{%2, %3, %0|%0, %3, %2}
- vfmsubadd213<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3}
- vfmsubadd231<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssemuladd")
- (set_attr "mode" "<MODE>")])
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
;; Parallel single-precision floating point conversion operations
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -5277,7 +5195,7 @@
(set_attr "prefix" "orig,vex")
(set_attr "mode" "<sseinsnmode>")])
-(define_expand "avx2_umulv4siv4di3"
+(define_expand "vec_widen_umult_even_v8si"
[(set (match_operand:V4DI 0 "register_operand")
(mult:V4DI
(zero_extend:V4DI
@@ -5293,7 +5211,7 @@
"TARGET_AVX2"
"ix86_fixup_binary_operands_no_copy (MULT, V8SImode, operands);")
-(define_insn "*avx_umulv4siv4di3"
+(define_insn "*vec_widen_umult_even_v8si"
[(set (match_operand:V4DI 0 "register_operand" "=x")
(mult:V4DI
(zero_extend:V4DI
@@ -5312,7 +5230,7 @@
(set_attr "prefix" "vex")
(set_attr "mode" "OI")])
-(define_expand "sse2_umulv2siv2di3"
+(define_expand "vec_widen_umult_even_v4si"
[(set (match_operand:V2DI 0 "register_operand")
(mult:V2DI
(zero_extend:V2DI
@@ -5326,7 +5244,7 @@
"TARGET_SSE2"
"ix86_fixup_binary_operands_no_copy (MULT, V4SImode, operands);")
-(define_insn "*sse2_umulv2siv2di3"
+(define_insn "*vec_widen_umult_even_v4si"
[(set (match_operand:V2DI 0 "register_operand" "=x,x")
(mult:V2DI
(zero_extend:V2DI
@@ -5347,7 +5265,7 @@
(set_attr "prefix" "orig,vex")
(set_attr "mode" "TI")])
-(define_expand "avx2_mulv4siv4di3"
+(define_expand "vec_widen_smult_even_v8si"
[(set (match_operand:V4DI 0 "register_operand")
(mult:V4DI
(sign_extend:V4DI
@@ -5363,7 +5281,7 @@
"TARGET_AVX2"
"ix86_fixup_binary_operands_no_copy (MULT, V8SImode, operands);")
-(define_insn "*avx2_mulv4siv4di3"
+(define_insn "*vec_widen_smult_even_v8si"
[(set (match_operand:V4DI 0 "register_operand" "=x")
(mult:V4DI
(sign_extend:V4DI
@@ -5564,12 +5482,6 @@
operands[2] = force_const_mem (<MODE>mode, operands[2]);
ix86_fixup_binary_operands_no_copy (MULT, <MODE>mode, operands);
}
- else if (TARGET_XOP)
- {
- rtx z = force_reg (<MODE>mode, CONST0_RTX (<MODE>mode));
- emit_insn (gen_xop_pmacsdd (operands[0], operands[1], operands[2], z));
- DONE;
- }
else
{
ix86_expand_sse2_mulv4si3 (operands[0], operands[1], operands[2]);
@@ -9635,9 +9547,6 @@
(define_code_attr madcs [(plus "madcs") (ss_plus "madcss")])
;; XOP parallel integer multiply/add instructions.
-;; Note the XOP multiply/add instructions
-;; a[i] = b[i] * c[i] + d[i];
-;; do not allow the value being added to be a memory operation.
(define_insn "xop_p<macs><ssemodesuffix><ssemodesuffix>"
[(set (match_operand:VI24_128 0 "register_operand" "=x")
@@ -9645,7 +9554,7 @@
(mult:VI24_128
(match_operand:VI24_128 1 "nonimmediate_operand" "%x")
(match_operand:VI24_128 2 "nonimmediate_operand" "xm"))
- (match_operand:VI24_128 3 "nonimmediate_operand" "x")))]
+ (match_operand:VI24_128 3 "register_operand" "x")))]
"TARGET_XOP"
"vp<macs><ssemodesuffix><ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "ssemuladd")
@@ -9663,7 +9572,7 @@
(vec_select:V2SI
(match_operand:V4SI 2 "nonimmediate_operand" "xm")
(parallel [(const_int 0) (const_int 2)]))))
- (match_operand:V2DI 3 "nonimmediate_operand" "x")))]
+ (match_operand:V2DI 3 "register_operand" "x")))]
"TARGET_XOP"
"vp<macs>dql\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "ssemuladd")
@@ -9681,7 +9590,7 @@
(vec_select:V2SI
(match_operand:V4SI 2 "nonimmediate_operand" "xm")
(parallel [(const_int 1) (const_int 3)]))))
- (match_operand:V2DI 3 "nonimmediate_operand" "x")))]
+ (match_operand:V2DI 3 "register_operand" "x")))]
"TARGET_XOP"
"vp<macs>dqh\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "ssemuladd")
@@ -9702,7 +9611,7 @@
(match_operand:V8HI 2 "nonimmediate_operand" "xm")
(parallel [(const_int 1) (const_int 3)
(const_int 5) (const_int 7)]))))
- (match_operand:V4SI 3 "nonimmediate_operand" "x")))]
+ (match_operand:V4SI 3 "register_operand" "x")))]
"TARGET_XOP"
"vp<macs>wd\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "ssemuladd")
@@ -9734,7 +9643,7 @@
(match_dup 2)
(parallel [(const_int 1) (const_int 3)
(const_int 5) (const_int 7)])))))
- (match_operand:V4SI 3 "nonimmediate_operand" "x")))]
+ (match_operand:V4SI 3 "register_operand" "x")))]
"TARGET_XOP"
"vp<madcs>wd\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "ssemuladd")
@@ -9810,39 +9719,39 @@
(any_extend:V2DI
(vec_select:V2QI
(match_operand:V16QI 1 "nonimmediate_operand" "xm")
- (parallel [(const_int 0) (const_int 4)])))
+ (parallel [(const_int 0) (const_int 8)])))
(any_extend:V2DI
(vec_select:V2QI
(match_dup 1)
- (parallel [(const_int 1) (const_int 5)]))))
+ (parallel [(const_int 1) (const_int 9)]))))
(plus:V2DI
(any_extend:V2DI
(vec_select:V2QI
(match_dup 1)
- (parallel [(const_int 2) (const_int 6)])))
+ (parallel [(const_int 2) (const_int 10)])))
(any_extend:V2DI
(vec_select:V2QI
(match_dup 1)
- (parallel [(const_int 3) (const_int 7)])))))
+ (parallel [(const_int 3) (const_int 11)])))))
(plus:V2DI
(plus:V2DI
(any_extend:V2DI
(vec_select:V2QI
(match_dup 1)
- (parallel [(const_int 8) (const_int 12)])))
+ (parallel [(const_int 4) (const_int 12)])))
(any_extend:V2DI
(vec_select:V2QI
(match_dup 1)
- (parallel [(const_int 9) (const_int 13)]))))
+ (parallel [(const_int 5) (const_int 13)]))))
(plus:V2DI
(any_extend:V2DI
(vec_select:V2QI
(match_dup 1)
- (parallel [(const_int 10) (const_int 14)])))
+ (parallel [(const_int 6) (const_int 14)])))
(any_extend:V2DI
(vec_select:V2QI
(match_dup 1)
- (parallel [(const_int 11) (const_int 15)])))))))]
+ (parallel [(const_int 7) (const_int 15)])))))))]
"TARGET_XOP"
"vphadd<u>bq\t{%1, %0|%0, %1}"
[(set_attr "type" "sseiadd1")])
diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md
index e02a949631e..50bedcf0dff 100644
--- a/gcc/config/i386/sync.md
+++ b/gcc/config/i386/sync.md
@@ -28,10 +28,7 @@
])
(define_c_enum "unspecv" [
- UNSPECV_CMPXCHG_1
- UNSPECV_CMPXCHG_2
- UNSPECV_CMPXCHG_3
- UNSPECV_CMPXCHG_4
+ UNSPECV_CMPXCHG
UNSPECV_XCHG
UNSPECV_LOCK
])
@@ -181,7 +178,7 @@
if (MEM_P (dst))
mem = dst;
- if (FP_REG_P (tmp))
+ if (STACK_REG_P (tmp))
{
emit_insn (gen_loaddi_via_fpu (tmp, src));
emit_insn (gen_storedi_via_fpu (mem, tmp));
@@ -261,7 +258,7 @@
src = mem;
}
- if (FP_REG_P (tmp))
+ if (STACK_REG_P (tmp))
{
emit_insn (gen_loaddi_via_fpu (tmp, src));
emit_insn (gen_storedi_via_fpu (dst, tmp));
@@ -316,7 +313,7 @@
"TARGET_CMPXCHG"
{
emit_insn
- (gen_atomic_compare_and_swap_single<mode>
+ (gen_atomic_compare_and_swap<mode>_1
(operands[1], operands[2], operands[3], operands[4], operands[6]));
ix86_expand_setcc (operands[0], EQ, gen_rtx_REG (CCZmode, FLAGS_REG),
const0_rtx);
@@ -326,11 +323,7 @@
(define_mode_iterator CASMODE
[(DI "TARGET_64BIT || TARGET_CMPXCHG8B")
(TI "TARGET_64BIT && TARGET_CMPXCHG16B")])
-(define_mode_iterator DCASMODE
- [(DI "!TARGET_64BIT && TARGET_CMPXCHG8B && !flag_pic")
- (TI "TARGET_64BIT && TARGET_CMPXCHG16B")])
-(define_mode_attr doublemodesuffix [(DI "8") (TI "16")])
-(define_mode_attr DCASHMODE [(DI "SI") (TI "DI")])
+(define_mode_attr CASHMODE [(DI "SI") (TI "DI")])
(define_expand "atomic_compare_and_swap<mode>"
[(match_operand:QI 0 "register_operand") ;; bool success output
@@ -346,12 +339,12 @@
if (<MODE>mode == DImode && TARGET_64BIT)
{
emit_insn
- (gen_atomic_compare_and_swap_singledi
+ (gen_atomic_compare_and_swapdi_1
(operands[1], operands[2], operands[3], operands[4], operands[6]));
}
else
{
- enum machine_mode hmode = <DCASHMODE>mode;
+ enum machine_mode hmode = <CASHMODE>mode;
rtx lo_o, lo_e, lo_n, hi_o, hi_e, hi_n, mem;
lo_o = operands[1];
@@ -365,32 +358,31 @@
lo_e = gen_lowpart (hmode, lo_e);
lo_n = gen_lowpart (hmode, lo_n);
- if (<MODE>mode == DImode
- && !TARGET_64BIT
- && flag_pic
- && !cmpxchg8b_pic_memory_operand (mem, DImode))
- mem = replace_equiv_address (mem, force_reg (Pmode, XEXP (mem, 0)));
+ if (!cmpxchg8b_pic_memory_operand (mem, <MODE>mode))
+ mem = replace_equiv_address (mem, force_reg (Pmode, XEXP (mem, 0)));
- emit_insn (gen_atomic_compare_and_swap_double<mode>
- (lo_o, hi_o, mem, lo_e, hi_e, lo_n, hi_n, operands[6]));
+ emit_insn
+ (gen_atomic_compare_and_swap<mode>_doubleword
+ (lo_o, hi_o, mem, lo_e, hi_e, lo_n, hi_n, operands[6]));
}
+
ix86_expand_setcc (operands[0], EQ, gen_rtx_REG (CCZmode, FLAGS_REG),
const0_rtx);
DONE;
})
-(define_insn "atomic_compare_and_swap_single<mode>"
+(define_insn "atomic_compare_and_swap<mode>_1"
[(set (match_operand:SWI 0 "register_operand" "=a")
(unspec_volatile:SWI
[(match_operand:SWI 1 "memory_operand" "+m")
(match_operand:SWI 2 "register_operand" "0")
(match_operand:SWI 3 "register_operand" "<r>")
(match_operand:SI 4 "const_int_operand")]
- UNSPECV_CMPXCHG_1))
+ UNSPECV_CMPXCHG))
(set (match_dup 1)
- (unspec_volatile:SWI [(const_int 0)] UNSPECV_CMPXCHG_2))
+ (unspec_volatile:SWI [(const_int 0)] UNSPECV_CMPXCHG))
(set (reg:CCZ FLAGS_REG)
- (unspec_volatile:CCZ [(const_int 0)] UNSPECV_CMPXCHG_3))]
+ (unspec_volatile:CCZ [(const_int 0)] UNSPECV_CMPXCHG))]
"TARGET_CMPXCHG"
"lock{%;} %K4cmpxchg{<imodesuffix>}\t{%3, %1|%1, %3}")
@@ -399,52 +391,47 @@
;; not match the gcc register numbering, so the pair must be CX:BX.
;; That said, in order to take advantage of possible lower-subreg opts,
;; treat all of the integral operands in the same way.
-(define_insn "atomic_compare_and_swap_double<mode>"
- [(set (match_operand:<DCASHMODE> 0 "register_operand" "=a")
- (unspec_volatile:<DCASHMODE>
- [(match_operand:DCASMODE 2 "memory_operand" "+m")
- (match_operand:<DCASHMODE> 3 "register_operand" "0")
- (match_operand:<DCASHMODE> 4 "register_operand" "1")
- (match_operand:<DCASHMODE> 5 "register_operand" "b")
- (match_operand:<DCASHMODE> 6 "register_operand" "c")
- (match_operand:SI 7 "const_int_operand")]
- UNSPECV_CMPXCHG_1))
- (set (match_operand:<DCASHMODE> 1 "register_operand" "=d")
- (unspec_volatile:<DCASHMODE> [(const_int 0)] UNSPECV_CMPXCHG_2))
- (set (match_dup 2)
- (unspec_volatile:DCASMODE [(const_int 0)] UNSPECV_CMPXCHG_3))
- (set (reg:CCZ FLAGS_REG)
- (unspec_volatile:CCZ [(const_int 0)] UNSPECV_CMPXCHG_4))]
- ""
- "lock{%;} %K7cmpxchg<doublemodesuffix>b\t%2")
-
-;; Theoretically we'd like to use constraint "r" (any reg) for op5,
-;; but that includes ecx. If op5 and op6 are the same (like when
-;; the input is -1LL) GCC might chose to allocate op5 to ecx, like
-;; op6. This breaks, as the xchg will move the PIC register contents
-;; to %ecx then --> boom. Operands 5 and 6 really need to be different
-;; registers, which in this case means op5 must not be ecx. Instead
-;; of playing tricks with fake early clobbers or the like we just
-;; enumerate all regs possible here, which (as this is !TARGET_64BIT)
-;; are just esi and edi.
-(define_insn "*atomic_compare_and_swap_doubledi_pic"
- [(set (match_operand:SI 0 "register_operand" "=a")
- (unspec_volatile:SI
- [(match_operand:DI 2 "cmpxchg8b_pic_memory_operand" "+m")
- (match_operand:SI 3 "register_operand" "0")
- (match_operand:SI 4 "register_operand" "1")
- (match_operand:SI 5 "register_operand" "SD")
- (match_operand:SI 6 "register_operand" "c")
+
+;; Operands 5 and 6 really need to be different registers, which in
+;; this case means op5 must not be ecx. If op5 and op6 are the same
+;; (like when the input is -1LL) GCC might chose to allocate op5 to ecx,
+;; like op6. This breaks, as the xchg will move the PIC register
+;; contents to %ecx then --> boom.
+
+(define_mode_attr doublemodesuffix [(SI "8") (DI "16")])
+(define_mode_attr regprefix [(SI "e") (DI "r")])
+
+(define_insn "atomic_compare_and_swap<dwi>_doubleword"
+ [(set (match_operand:DWIH 0 "register_operand" "=a,a")
+ (unspec_volatile:DWIH
+ [(match_operand:<DWI> 2 "cmpxchg8b_pic_memory_operand" "+m,m")
+ (match_operand:DWIH 3 "register_operand" "0,0")
+ (match_operand:DWIH 4 "register_operand" "1,1")
+ (match_operand:DWIH 5 "register_operand" "b,!*r")
+ (match_operand:DWIH 6 "register_operand" "c,c")
(match_operand:SI 7 "const_int_operand")]
- UNSPECV_CMPXCHG_1))
- (set (match_operand:SI 1 "register_operand" "=d")
- (unspec_volatile:SI [(const_int 0)] UNSPECV_CMPXCHG_2))
+ UNSPECV_CMPXCHG))
+ (set (match_operand:DWIH 1 "register_operand" "=d,d")
+ (unspec_volatile:DWIH [(const_int 0)] UNSPECV_CMPXCHG))
(set (match_dup 2)
- (unspec_volatile:DI [(const_int 0)] UNSPECV_CMPXCHG_3))
+ (unspec_volatile:<DWI> [(const_int 0)] UNSPECV_CMPXCHG))
(set (reg:CCZ FLAGS_REG)
- (unspec_volatile:CCZ [(const_int 0)] UNSPECV_CMPXCHG_4))]
- "!TARGET_64BIT && TARGET_CMPXCHG8B && flag_pic"
- "xchg{l}\t%%ebx, %5\;lock{%;} %K7cmpxchg8b\t%2\;xchg{l}\t%%ebx, %5")
+ (unspec_volatile:CCZ [(const_int 0)] UNSPECV_CMPXCHG))
+ (clobber (match_scratch:DWIH 8 "=X,&5"))]
+ "TARGET_CMPXCHG<doublemodesuffix>B"
+{
+ bool swap = REGNO (operands[5]) != BX_REG;
+
+ if (swap)
+ output_asm_insn ("xchg{<imodesuffix>}\t%%<regprefix>bx, %5", operands);
+
+ output_asm_insn ("lock{%;} %K7cmpxchg<doublemodesuffix>b\t%2", operands);
+
+ if (swap)
+ output_asm_insn ("xchg{<imodesuffix>}\t%%<regprefix>bx, %5", operands);
+
+ return "";
+})
;; For operand 2 nonmemory_operand predicate is used instead of
;; register_operand to allow combiner to better optimize atomic
@@ -495,29 +482,33 @@
(define_insn "*atomic_fetch_add_cmp<mode>"
[(set (reg:CCZ FLAGS_REG)
- (compare:CCZ (unspec_volatile:SWI
- [(match_operand:SWI 0 "memory_operand" "+m")
- (match_operand:SI 3 "const_int_operand")]
- UNSPECV_XCHG)
- (match_operand:SWI 2 "const_int_operand" "i")))
+ (compare:CCZ
+ (unspec_volatile:SWI
+ [(match_operand:SWI 0 "memory_operand" "+m")
+ (match_operand:SI 3 "const_int_operand")] ;; model
+ UNSPECV_XCHG)
+ (match_operand:SWI 2 "const_int_operand" "i")))
(set (match_dup 0)
(plus:SWI (match_dup 0)
(match_operand:SWI 1 "const_int_operand" "i")))]
"(unsigned HOST_WIDE_INT) INTVAL (operands[1])
== -(unsigned HOST_WIDE_INT) INTVAL (operands[2])"
{
- if (TARGET_USE_INCDEC)
+ if (incdec_operand (operands[1], <MODE>mode))
{
if (operands[1] == const1_rtx)
- return "lock{%;} inc{<imodesuffix>}\t%0";
- if (operands[1] == constm1_rtx)
- return "lock{%;} dec{<imodesuffix>}\t%0";
+ return "lock{%;} %K3inc{<imodesuffix>}\t%0";
+ else
+ {
+ gcc_assert (operands[1] == constm1_rtx);
+ return "lock{%;} %K3dec{<imodesuffix>}\t%0";
+ }
}
if (x86_maybe_negate_const_int (&operands[1], <MODE>mode))
- return "lock{%;} sub{<imodesuffix>}\t{%1, %0|%0, %1}";
+ return "lock{%;} %K3sub{<imodesuffix>}\t{%1, %0|%0, %1}";
- return "lock{%;} add{<imodesuffix>}\t{%1, %0|%0, %1}";
+ return "lock{%;} %K3add{<imodesuffix>}\t{%1, %0|%0, %1}";
})
;; Recall that xchg implicitly sets LOCK#, so adding it again wastes space.
@@ -543,12 +534,15 @@
(clobber (reg:CC FLAGS_REG))]
""
{
- if (TARGET_USE_INCDEC)
+ if (incdec_operand (operands[1], <MODE>mode))
{
if (operands[1] == const1_rtx)
return "lock{%;} %K2inc{<imodesuffix>}\t%0";
- if (operands[1] == constm1_rtx)
- return "lock{%;} %K2dec{<imodesuffix>}\t%0";
+ else
+ {
+ gcc_assert (operands[1] == constm1_rtx);
+ return "lock{%;} %K2dec{<imodesuffix>}\t%0";
+ }
}
if (x86_maybe_negate_const_int (&operands[1], <MODE>mode))
@@ -567,12 +561,15 @@
(clobber (reg:CC FLAGS_REG))]
""
{
- if (TARGET_USE_INCDEC)
+ if (incdec_operand (operands[1], <MODE>mode))
{
if (operands[1] == const1_rtx)
return "lock{%;} %K2dec{<imodesuffix>}\t%0";
- if (operands[1] == constm1_rtx)
- return "lock{%;} %K2inc{<imodesuffix>}\t%0";
+ else
+ {
+ gcc_assert (operands[1] == constm1_rtx);
+ return "lock{%;} %K2inc{<imodesuffix>}\t%0";
+ }
}
if (x86_maybe_negate_const_int (&operands[1], <MODE>mode))
diff --git a/gcc/config/i386/t-i386 b/gcc/config/i386/t-i386
index d51006561ac..ea0115c2aa6 100644
--- a/gcc/config/i386/t-i386
+++ b/gcc/config/i386/t-i386
@@ -16,7 +16,7 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-i386.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+i386.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h dumpfile.h $(TM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(REGS_H) hard-reg-set.h \
$(REAL_H) insn-config.h conditions.h output.h insn-codes.h \
$(INSN_ATTR_H) $(FLAGS_H) $(C_COMMON_H) except.h $(FUNCTION_H) \
diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
index 10cdee80022..17ee1375107 100644
--- a/gcc/config/i386/winnt.c
+++ b/gcc/config/i386/winnt.c
@@ -421,6 +421,14 @@ i386_pe_unique_section (tree decl, int reloc)
DECL_SECTION_NAME (decl) = build_string (len, string);
}
+/* Local and global relocs can be placed always into readonly memory for
+ memory for PE-COFF targets. */
+int
+i386_pe_reloc_rw_mask (void)
+{
+ return 0;
+}
+
/* Select a set of attributes for section NAME based on the properties
of DECL and whether or not RELOC indicates that DECL's initializer
might contain runtime relocations.
@@ -1135,6 +1143,48 @@ i386_pe_seh_unwind_emit (FILE *asm_out_file, rtx insn)
found:
seh_frame_related_expr (asm_out_file, seh, pat);
}
+
+void
+i386_pe_seh_emit_except_personality (rtx personality)
+{
+ int flags = 0;
+
+ if (!TARGET_SEH)
+ return;
+
+ fputs ("\t.seh_handler\t", asm_out_file);
+ output_addr_const (asm_out_file, personality);
+
+#if 0
+ /* ??? The current implementation of _GCC_specific_handler requires
+ both except and unwind handling, regardless of which sorts the
+ user-level function requires. */
+ eh_region r;
+ FOR_ALL_EH_REGION(r)
+ {
+ if (r->type == ERT_CLEANUP)
+ flags |= 1;
+ else
+ flags |= 2;
+ }
+#else
+ flags = 3;
+#endif
+
+ if (flags & 1)
+ fputs (", @unwind", asm_out_file);
+ if (flags & 2)
+ fputs (", @except", asm_out_file);
+ fputc ('\n', asm_out_file);
+}
+
+void
+i386_pe_seh_init_sections (void)
+{
+ if (TARGET_SEH)
+ exception_section = get_unnamed_section (0, output_section_asm_op,
+ "\t.seh_handlerdata");
+}
void
i386_pe_start_function (FILE *f, const char *name, tree decl)
diff --git a/gcc/config/i386/x86intrin.h b/gcc/config/i386/x86intrin.h
index e01ecd2a1ea..fae6491c49f 100644
--- a/gcc/config/i386/x86intrin.h
+++ b/gcc/config/i386/x86intrin.h
@@ -97,4 +97,14 @@
#include <popcntintrin.h>
#endif
+#ifdef __RDSEED__
+#include <rdseedintrin.h>
+#endif
+
+#ifdef __PRFCHW__
+#include <prfchwintrin.h>
+#endif
+
+#include <adxintrin.h>
+
#endif /* _X86INTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h
index 5aefa9db0c2..b3a8c3e1cda 100644
--- a/gcc/config/i386/xmmintrin.h
+++ b/gcc/config/i386/xmmintrin.h
@@ -1225,7 +1225,7 @@ _mm_sfence (void)
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_pause (void)
{
- __asm__ __volatile__ ("rep; nop" : : );
+ __builtin_ia32_pause ();
}
/* Transpose the 4x4 matrix composed of row[0-3]. */
diff --git a/gcc/config/ia64/hpux.h b/gcc/config/ia64/hpux.h
index ad106b4dee2..d9ae109aeba 100644
--- a/gcc/config/ia64/hpux.h
+++ b/gcc/config/ia64/hpux.h
@@ -115,9 +115,6 @@ do { \
#define TARGET_DEFAULT \
(MASK_DWARF2_ASM | MASK_BIG_ENDIAN | MASK_ILP32)
-/* ??? Might not be needed anymore. */
-#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) ((MODE) == TFmode)
-
/* ASM_OUTPUT_EXTERNAL_LIBCALL defaults to just a globalize_label call,
but that doesn't put out the @function type information which causes
shared library problems. */
diff --git a/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h
index 458b1201c94..39d34d41594 100644
--- a/gcc/config/ia64/ia64-protos.h
+++ b/gcc/config/ia64/ia64-protos.h
@@ -43,7 +43,6 @@ extern bool ia64_expand_vecint_minmax (enum rtx_code, enum machine_mode, rtx[]);
extern void ia64_unpack_assemble (rtx, rtx, rtx, bool);
extern void ia64_expand_unpack (rtx [], bool, bool);
extern void ia64_expand_widen_sum (rtx[], bool);
-extern void ia64_expand_dot_prod_v8qi (rtx[], bool);
extern void ia64_expand_call (rtx, rtx, rtx, int);
extern void ia64_split_call (rtx, rtx, rtx, rtx, rtx, int, int);
extern void ia64_reload_gp (void);
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 0e5b37363cb..f2f02c8e97a 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -60,8 +60,8 @@ along with GCC; see the file COPYING3. If not see
#include "tm-constrs.h"
#include "sel-sched.h"
#include "reload.h"
-#include "dwarf2out.h"
#include "opts.h"
+#include "dumpfile.h"
/* This is used for communication between ASM_OUTPUT_LABEL and
ASM_OUTPUT_LABELREF. */
@@ -319,6 +319,7 @@ static const char *ia64_invalid_binary_op (int, const_tree, const_tree);
static enum machine_mode ia64_c_mode_for_suffix (char);
static void ia64_trampoline_init (rtx, tree, rtx);
static void ia64_override_options_after_change (void);
+static bool ia64_member_type_forces_blk (const_tree, enum machine_mode);
static tree ia64_builtin_decl (unsigned, bool);
@@ -570,6 +571,9 @@ static const struct attribute_spec ia64_attribute_table[] =
#undef TARGET_GET_RAW_ARG_MODE
#define TARGET_GET_RAW_ARG_MODE ia64_get_reg_raw_mode
+#undef TARGET_MEMBER_TYPE_FORCES_BLK
+#define TARGET_MEMBER_TYPE_FORCES_BLK ia64_member_type_forces_blk
+
#undef TARGET_GIMPLIFY_VA_ARG_EXPR
#define TARGET_GIMPLIFY_VA_ARG_EXPR ia64_gimplify_va_arg
@@ -2096,46 +2100,6 @@ ia64_expand_widen_sum (rtx operands[3], bool unsignedp)
emit_move_insn (operands[0], t);
}
-/* Emit a signed or unsigned V8QI dot product operation. */
-
-void
-ia64_expand_dot_prod_v8qi (rtx operands[4], bool unsignedp)
-{
- rtx op1, op2, sn1, sn2, l1, l2, h1, h2;
- rtx p1, p2, p3, p4, s1, s2, s3;
-
- op1 = operands[1];
- op2 = operands[2];
- sn1 = ia64_unpack_sign (op1, unsignedp);
- sn2 = ia64_unpack_sign (op2, unsignedp);
-
- l1 = gen_reg_rtx (V4HImode);
- l2 = gen_reg_rtx (V4HImode);
- h1 = gen_reg_rtx (V4HImode);
- h2 = gen_reg_rtx (V4HImode);
- ia64_unpack_assemble (l1, op1, sn1, false);
- ia64_unpack_assemble (l2, op2, sn2, false);
- ia64_unpack_assemble (h1, op1, sn1, true);
- ia64_unpack_assemble (h2, op2, sn2, true);
-
- p1 = gen_reg_rtx (V2SImode);
- p2 = gen_reg_rtx (V2SImode);
- p3 = gen_reg_rtx (V2SImode);
- p4 = gen_reg_rtx (V2SImode);
- emit_insn (gen_pmpy2_even (p1, l1, l2));
- emit_insn (gen_pmpy2_even (p2, h1, h2));
- emit_insn (gen_pmpy2_odd (p3, l1, l2));
- emit_insn (gen_pmpy2_odd (p4, h1, h2));
-
- s1 = gen_reg_rtx (V2SImode);
- s2 = gen_reg_rtx (V2SImode);
- s3 = gen_reg_rtx (V2SImode);
- emit_insn (gen_addv2si3 (s1, p1, p2));
- emit_insn (gen_addv2si3 (s2, p3, p4));
- emit_insn (gen_addv2si3 (s3, s1, operands[3]));
- emit_insn (gen_addv2si3 (operands[0], s2, s3));
-}
-
/* Emit the appropriate sequence for a call. */
void
@@ -11193,6 +11157,15 @@ ia64_get_reg_raw_mode (int regno)
return default_get_reg_raw_mode(regno);
}
+/* Implement TARGET_MEMBER_TYPE_FORCES_BLK. ??? Might not be needed
+ anymore. */
+
+bool
+ia64_member_type_forces_blk (const_tree, enum machine_mode mode)
+{
+ return TARGET_HPUX && mode == TFmode;
+}
+
/* Always default to .text section until HP-UX linker is fixed. */
ATTRIBUTE_UNUSED static section *
diff --git a/gcc/config/ia64/t-ia64 b/gcc/config/ia64/t-ia64
index 398aba1019f..4b9846b0b7e 100644
--- a/gcc/config/ia64/t-ia64
+++ b/gcc/config/ia64/t-ia64
@@ -26,4 +26,4 @@ ia64-c.o: $(srcdir)/config/ia64/ia64-c.c $(CONFIG_H) $(SYSTEM_H) \
# genattrtab generates very long string literals.
insn-attrtab.o-warn = -Wno-error
-ia64.o: debug.h $(PARAMS_H) sel-sched.h reload.h $(OPTS_H)
+ia64.o: debug.h $(PARAMS_H) sel-sched.h reload.h $(OPTS_H) dumpfile.h
diff --git a/gcc/config/ia64/vect.md b/gcc/config/ia64/vect.md
index aa77b01e7e3..4d85aa01815 100644
--- a/gcc/config/ia64/vect.md
+++ b/gcc/config/ia64/vect.md
@@ -278,7 +278,29 @@
"pmpyshr2.u %0 = %1, %2, %3"
[(set_attr "itanium_class" "mmmul")])
-(define_insn "pmpy2_even"
+(define_expand "smulv4hi3_highpart"
+ [(match_operand:V4HI 0 "gr_register_operand")
+ (match_operand:V4HI 1 "gr_register_operand")
+ (match_operand:V4HI 2 "gr_register_operand")]
+ ""
+{
+ emit_insn (gen_pmpyshr2 (operands[0], operands[1],
+ operands[2], GEN_INT (16)));
+ DONE;
+})
+
+(define_expand "umulv4hi3_highpart"
+ [(match_operand:V4HI 0 "gr_register_operand")
+ (match_operand:V4HI 1 "gr_register_operand")
+ (match_operand:V4HI 2 "gr_register_operand")]
+ ""
+{
+ emit_insn (gen_pmpyshr2_u (operands[0], operands[1],
+ operands[2], GEN_INT (16)));
+ DONE;
+})
+
+(define_insn "vec_widen_smult_even_v4hi"
[(set (match_operand:V2SI 0 "gr_register_operand" "=r")
(mult:V2SI
(vec_select:V2SI
@@ -299,7 +321,7 @@
}
[(set_attr "itanium_class" "mmshf")])
-(define_insn "pmpy2_odd"
+(define_insn "vec_widen_smult_odd_v4hi"
[(set (match_operand:V2SI 0 "gr_register_operand" "=r")
(mult:V2SI
(vec_select:V2SI
@@ -602,68 +624,6 @@
DONE;
})
-(define_expand "udot_prodv8qi"
- [(match_operand:V2SI 0 "gr_register_operand" "")
- (match_operand:V8QI 1 "gr_register_operand" "")
- (match_operand:V8QI 2 "gr_register_operand" "")
- (match_operand:V2SI 3 "gr_register_operand" "")]
- ""
-{
- ia64_expand_dot_prod_v8qi (operands, true);
- DONE;
-})
-
-(define_expand "sdot_prodv8qi"
- [(match_operand:V2SI 0 "gr_register_operand" "")
- (match_operand:V8QI 1 "gr_register_operand" "")
- (match_operand:V8QI 2 "gr_register_operand" "")
- (match_operand:V2SI 3 "gr_register_operand" "")]
- ""
-{
- ia64_expand_dot_prod_v8qi (operands, false);
- DONE;
-})
-
-(define_expand "sdot_prodv4hi"
- [(match_operand:V2SI 0 "gr_register_operand" "")
- (match_operand:V4HI 1 "gr_register_operand" "")
- (match_operand:V4HI 2 "gr_register_operand" "")
- (match_operand:V2SI 3 "gr_register_operand" "")]
- ""
-{
- rtx e, o, t;
-
- e = gen_reg_rtx (V2SImode);
- o = gen_reg_rtx (V2SImode);
- t = gen_reg_rtx (V2SImode);
-
- emit_insn (gen_pmpy2_even (e, operands[1], operands[2]));
- emit_insn (gen_pmpy2_odd (o, operands[1], operands[2]));
- emit_insn (gen_addv2si3 (t, e, operands[3]));
- emit_insn (gen_addv2si3 (operands[0], t, o));
- DONE;
-})
-
-(define_expand "udot_prodv4hi"
- [(match_operand:V2SI 0 "gr_register_operand" "")
- (match_operand:V4HI 1 "gr_register_operand" "")
- (match_operand:V4HI 2 "gr_register_operand" "")
- (match_operand:V2SI 3 "gr_register_operand" "")]
- ""
-{
- rtx l, h, t;
-
- l = gen_reg_rtx (V2SImode);
- h = gen_reg_rtx (V2SImode);
- t = gen_reg_rtx (V2SImode);
-
- emit_insn (gen_vec_widen_umult_lo_v4hi (l, operands[1], operands[2]));
- emit_insn (gen_vec_widen_umult_hi_v4hi (h, operands[1], operands[2]));
- emit_insn (gen_addv2si3 (t, l, operands[3]));
- emit_insn (gen_addv2si3 (operands[0], t, h));
- DONE;
-})
-
(define_expand "vcond<mode><mode>"
[(set (match_operand:VECINT 0 "gr_register_operand" "")
(if_then_else:VECINT
diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c
index e75eb2f806a..ab55a154f06 100644
--- a/gcc/config/iq2000/iq2000.c
+++ b/gcc/config/iq2000/iq2000.c
@@ -1076,7 +1076,7 @@ gen_conditional_branch (rtx operands[], enum machine_mode mode)
emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
gen_rtx_IF_THEN_ELSE (VOIDmode,
gen_rtx_fmt_ee (test_code,
- mode,
+ VOIDmode,
cmp0, cmp1),
label1, label2)));
}
@@ -1140,7 +1140,7 @@ iq2000_function_arg_advance (cumulative_args_t cum_v, enum machine_mode mode,
"function_adv({gp reg found = %d, arg # = %2d, words = %2d}, %4s, ",
cum->gp_reg_found, cum->arg_number, cum->arg_words,
GET_MODE_NAME (mode));
- fprintf (stderr, "%p", CONST_CAST2 (void *, const_tree, type));
+ fprintf (stderr, "%p", type);
fprintf (stderr, ", %d )\n\n", named);
}
diff --git a/gcc/config/iq2000/iq2000.md b/gcc/config/iq2000/iq2000.md
index 51fbe22fbe2..59a97d42b0a 100644
--- a/gcc/config/iq2000/iq2000.md
+++ b/gcc/config/iq2000/iq2000.md
@@ -1001,10 +1001,10 @@
(define_expand "cbranchsi4"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "ordered_comparison_operator"
- [(match_operand:SI 1 "register_operand")
- (match_operand:SI 2 "reg_or_const_operand")])
- (label_ref (match_operand:SI 3 ""))
+ (match_operator 0 "ordered_comparison_operator"
+ [(match_operand:SI 1 "register_operand")
+ (match_operand:SI 2 "reg_or_const_operand")])
+ (label_ref (match_operand 3 ""))
(pc)))]
""
"
@@ -1019,9 +1019,9 @@
(define_insn "branch_zero"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "cmp_op"
- [(match_operand:SI 2 "register_operand" "d")
- (const_int 0)])
+ (match_operator 0 "cmp_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (const_int 0)])
(label_ref (match_operand 1 "" ""))
(pc)))]
""
@@ -1040,9 +1040,9 @@
(define_insn "branch_zero_inverted"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "cmp_op"
- [(match_operand:SI 2 "register_operand" "d")
- (const_int 0)])
+ (match_operator 0 "cmp_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (const_int 0)])
(pc)
(label_ref (match_operand 1 "" ""))))]
""
@@ -1063,9 +1063,9 @@
(define_insn "branch_equality"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "equality_op"
- [(match_operand:SI 2 "register_operand" "d")
- (match_operand:SI 3 "register_operand" "d")])
+ (match_operator 0 "equality_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (match_operand:SI 3 "register_operand" "d")])
(label_ref (match_operand 1 "" ""))
(pc)))]
""
@@ -1084,9 +1084,9 @@
(define_insn "branch_equality_inverted"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "equality_op"
- [(match_operand:SI 2 "register_operand" "d")
- (match_operand:SI 3 "register_operand" "d")])
+ (match_operator 0 "equality_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (match_operand:SI 3 "register_operand" "d")])
(pc)
(label_ref (match_operand 1 "" ""))))]
""
@@ -1145,7 +1145,7 @@
(const_int 0))
(match_operand 2 "pc_or_label_operand" "")
(match_operand 3 "pc_or_label_operand" "")))]
- ""
+ "0"
"bb%A2\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
(set_attr "type" "branch")])
@@ -1159,7 +1159,7 @@
(const_int 0))
(match_operand 2 "pc_or_label_operand" "")
(match_operand 3 "pc_or_label_operand" "")))]
- ""
+ "0"
"bb%A3\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
(set_attr "type" "branch")])
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
index dbbeea5c7fd..fb459e68028 100644
--- a/gcc/config/linux.h
+++ b/gcc/config/linux.h
@@ -104,3 +104,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Whether we have sincos that follows the GNU extension. */
#undef TARGET_HAS_SINCOS
#define TARGET_HAS_SINCOS (OPTION_GLIBC || OPTION_BIONIC)
+
+/* Whether we have Bionic libc runtime */
+#undef TARGET_HAS_BIONIC
+#define TARGET_HAS_BIONIC (OPTION_BIONIC)
diff --git a/gcc/config/m32c/cond.md b/gcc/config/m32c/cond.md
index c751070e716..5886a7da963 100644
--- a/gcc/config/m32c/cond.md
+++ b/gcc/config/m32c/cond.md
@@ -152,14 +152,31 @@
;; These are the pre-split patterns for the conditional sets.
-(define_insn_and_split "cstore<mode>4"
+(define_expand "cstore<mode>4"
+ [(set (match_operand:QI 0 "register_operand")
+ (match_operator:QI 1 "ordered_comparison_operator"
+ [(match_operand:QHPSI 2 "mra_operand")
+ (match_operand:QHPSI 3 "mrai_operand")]))]
+ ""
+{
+ if (TARGET_A24)
+ {
+ rtx o = gen_reg_rtx (HImode);
+ emit_insn (gen_cstore<mode>4_24 (o, operands[1],
+ operands[2], operands[3]));
+ emit_move_insn (operands[0], gen_lowpart (QImode, o));
+ DONE;
+ }
+})
+
+(define_insn_and_split "*cstore<mode>4_16"
[(set (match_operand:QI 0 "register_operand" "=Rqi")
(match_operator:QI 1 "ordered_comparison_operator"
[(match_operand:QHPSI 2 "mra_operand" "RraSd")
(match_operand:QHPSI 3 "mrai_operand" "RraSdi")]))]
"TARGET_A16"
"#"
- "reload_completed"
+ "&& reload_completed"
[(set (reg:CC FLG_REGNO)
(compare (match_dup 2)
(match_dup 3)))
@@ -176,7 +193,7 @@
(match_operand:QHPSI 3 "mrai_operand" "RraSdi")]))]
"TARGET_A24"
"#"
- "reload_completed"
+ "&& reload_completed"
[(set (reg:CC FLG_REGNO)
(compare (match_dup 2)
(match_dup 3)))
diff --git a/gcc/config/m32c/constraints.md b/gcc/config/m32c/constraints.md
new file mode 100644
index 00000000000..da7dda42e16
--- /dev/null
+++ b/gcc/config/m32c/constraints.md
@@ -0,0 +1,225 @@
+;; m32c constraints
+;; Copyright (C) 2012 Free Software Foundation, Inc.
+;;
+;; This file is part of GCC.
+;;
+;; GCC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GCC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+;; License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GCC; see the file COPYING3. If not see
+;; <http://www.gnu.org/licenses/>.
+
+(define_register_constraint "Rsp" "SP_REGS"
+ "@internal")
+
+(define_register_constraint "Rfb" "FB_REGS"
+ "@internal")
+
+(define_register_constraint "Rsb" "SB_REGS"
+ "@internal")
+
+(define_register_constraint "Rcr" "TARGET_A16 ? CR_REGS : NO_REGS"
+ "@internal")
+
+(define_register_constraint "Rcl" "TARGET_A24 ? CR_REGS : NO_REGS"
+ "@internal")
+
+(define_register_constraint "R0w" "R0_REGS"
+ "@internal")
+
+(define_register_constraint "R1w" "R1_REGS"
+ "@internal")
+
+(define_register_constraint "R2w" "R2_REGS"
+ "@internal")
+
+(define_register_constraint "R3w" "R3_REGS"
+ "@internal")
+
+(define_register_constraint "R02" "R02_REGS"
+ "@internal")
+
+(define_register_constraint "R13" "R13_REGS"
+ "@internal")
+
+(define_register_constraint "R03" "R03_REGS"
+ "@internal")
+
+(define_register_constraint "Rdi" "DI_REGS"
+ "@internal")
+
+(define_register_constraint "Rhl" "HL_REGS"
+ "@internal")
+
+(define_register_constraint "R23" "R23_REGS"
+ "@internal")
+
+(define_register_constraint "Ra0" "A0_REGS"
+ "@internal")
+
+(define_register_constraint "Ra1" "A1_REGS"
+ "@internal")
+
+(define_register_constraint "Raa" "A_REGS"
+ "@internal")
+
+(define_register_constraint "Raw" "TARGET_A16 ? A_REGS : NO_REGS"
+ "@internal")
+
+(define_register_constraint "Ral" "TARGET_A24 ? A_REGS : NO_REGS"
+ "@internal")
+
+(define_register_constraint "Rqi" "QI_REGS"
+ "@internal")
+
+(define_register_constraint "Rad" "AD_REGS"
+ "@internal")
+
+(define_register_constraint "Rsi" "SI_REGS"
+ "@internal")
+
+(define_register_constraint "Rhi" "HI_REGS"
+ "@internal")
+
+(define_register_constraint "Rhc" "HC_REGS"
+ "@internal")
+
+(define_register_constraint "Rra" "RA_REGS"
+ "@internal")
+
+(define_register_constraint "Rfl" "FLG_REGS"
+ "@internal")
+
+(define_register_constraint "Rmm" "fixed_regs[MEM0_REGNO] ? NO_REGS : MEM_REGS"
+ "@internal")
+
+(define_register_constraint "Rpi" "TARGET_A16 ? HI_REGS : RA_REGS"
+ "@internal")
+
+;;; For integer constant constraints:
+;;; s=signed u=unsigned n=nonzero m=minus l=log2able,
+;;; [sun] bits [SUN] bytes, p=pointer size
+;;; I[-0-9][0-9] matches that number
+
+(define_constraint "Is3"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -8, 7)")))
+
+(define_constraint "IS1"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -128, 127)")))
+
+(define_constraint "IS2"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -32768, 32767)")))
+
+(define_constraint "IU2"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, 0, 65535)")))
+
+(define_constraint "IU3"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, 0, 0x00ffffff)")))
+
+(define_constraint "In4"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -8, 8) && ival")))
+
+(define_constraint "In5"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -16, 16) && ival")))
+
+(define_constraint "In6"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -32, 32) && ival")))
+
+(define_constraint "IM2"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -65536, -1)")))
+
+(define_constraint "Ilb"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (exact_log2 (ival), 0, 7)")))
+
+(define_constraint "Imb"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (exact_log2 ((ival ^ 0xff) & 0xff), 0, 7)")))
+
+(define_constraint "ImB"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (exact_log2 ((ival ^ 0xffff) & 0xffff), 0, 7)")))
+
+(define_constraint "Ilw"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (exact_log2 (ival), 0, 15)")))
+
+(define_constraint "Imw"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (exact_log2 ((ival ^ 0xffff) & 0xffff), 0, 15)")))
+
+(define_constraint "I00"
+ "@internal"
+ (and (match_code "const_int")
+ (match_test "ival == 0")))
+
+(define_memory_constraint "SF"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_SF)"))
+
+(define_memory_constraint "Sd"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sd)"))
+
+(define_memory_constraint "Sa"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sa)"))
+
+(define_memory_constraint "Si"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Si)"))
+
+(define_memory_constraint "Ss"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Ss)"))
+
+(define_memory_constraint "Sf"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sf)"))
+
+(define_memory_constraint "Sb"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sb)"))
+
+(define_memory_constraint "Sp"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Sp)"))
+
+(define_memory_constraint "S1"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_S1)"))
+
+(define_constraint "Rpa"
+ "@internal"
+ (match_test "m32c_matches_constraint_p (op, CONSTRAINT_Rpa)"))
diff --git a/gcc/config/m32c/m32c-protos.h b/gcc/config/m32c/m32c-protos.h
index 9c247dcfd5b..1f70da1df22 100644
--- a/gcc/config/m32c/m32c-protos.h
+++ b/gcc/config/m32c/m32c-protos.h
@@ -20,21 +20,17 @@
<http://www.gnu.org/licenses/>. */
void m32c_conditional_register_usage (void);
-int m32c_const_ok_for_constraint_p (HOST_WIDE_INT, char, const char *);
unsigned int m32c_dwarf_frame_regnum (int);
int m32c_eh_return_data_regno (int);
void m32c_emit_epilogue (void);
void m32c_emit_prologue (void);
int m32c_epilogue_uses (int);
-int m32c_extra_address_constraint (char, const char *);
-int m32c_extra_memory_constraint (char, const char *);
int m32c_function_arg_regno_p (int);
void m32c_init_expanders (void);
int m32c_initial_elimination_offset (int, int);
void m32c_output_reg_pop (FILE *, int);
void m32c_output_reg_push (FILE *, int);
unsigned int m32c_push_rounding (int);
-int m32c_reg_class_from_constraint (char, const char *);
void m32c_register_pragmas (void);
void m32c_note_pragma_address (const char *, unsigned);
int m32c_regno_ok_for_base_p (int);
@@ -53,8 +49,7 @@ int m32c_expand_movmemhi (rtx *);
int m32c_expand_movstr (rtx *);
void m32c_expand_neg_mulpsi3 (rtx *);
int m32c_expand_setmemhi (rtx *);
-int m32c_extra_constraint_p (rtx, char, const char *);
-int m32c_extra_constraint_p2 (rtx, char, const char *);
+bool m32c_matches_constraint_p (rtx, int);
int m32c_hard_regno_nregs (int, enum machine_mode);
int m32c_hard_regno_ok (int, enum machine_mode);
bool m32c_illegal_subreg_p (rtx);
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index 79b03fa0650..23791788522 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -48,6 +48,7 @@
#include "langhooks.h"
#include "gimple.h"
#include "df.h"
+#include "tm-constrs.h"
/* Prototypes */
@@ -629,94 +630,6 @@ m32c_regno_reg_class (int regno)
}
}
-/* Implements REG_CLASS_FROM_CONSTRAINT. Note that some constraints only match
- for certain chip families. */
-int
-m32c_reg_class_from_constraint (char c ATTRIBUTE_UNUSED, const char *s)
-{
- if (memcmp (s, "Rsp", 3) == 0)
- return SP_REGS;
- if (memcmp (s, "Rfb", 3) == 0)
- return FB_REGS;
- if (memcmp (s, "Rsb", 3) == 0)
- return SB_REGS;
- if (memcmp (s, "Rcr", 3) == 0)
- return TARGET_A16 ? CR_REGS : NO_REGS;
- if (memcmp (s, "Rcl", 3) == 0)
- return TARGET_A24 ? CR_REGS : NO_REGS;
- if (memcmp (s, "R0w", 3) == 0)
- return R0_REGS;
- if (memcmp (s, "R1w", 3) == 0)
- return R1_REGS;
- if (memcmp (s, "R2w", 3) == 0)
- return R2_REGS;
- if (memcmp (s, "R3w", 3) == 0)
- return R3_REGS;
- if (memcmp (s, "R02", 3) == 0)
- return R02_REGS;
- if (memcmp (s, "R13", 3) == 0)
- return R13_REGS;
- if (memcmp (s, "R03", 3) == 0)
- return R03_REGS;
- if (memcmp (s, "Rdi", 3) == 0)
- return DI_REGS;
- if (memcmp (s, "Rhl", 3) == 0)
- return HL_REGS;
- if (memcmp (s, "R23", 3) == 0)
- return R23_REGS;
- if (memcmp (s, "Ra0", 3) == 0)
- return A0_REGS;
- if (memcmp (s, "Ra1", 3) == 0)
- return A1_REGS;
- if (memcmp (s, "Raa", 3) == 0)
- return A_REGS;
- if (memcmp (s, "Raw", 3) == 0)
- return TARGET_A16 ? A_REGS : NO_REGS;
- if (memcmp (s, "Ral", 3) == 0)
- return TARGET_A24 ? A_REGS : NO_REGS;
- if (memcmp (s, "Rqi", 3) == 0)
- return QI_REGS;
- if (memcmp (s, "Rad", 3) == 0)
- return AD_REGS;
- if (memcmp (s, "Rsi", 3) == 0)
- return SI_REGS;
- if (memcmp (s, "Rhi", 3) == 0)
- return HI_REGS;
- if (memcmp (s, "Rhc", 3) == 0)
- return HC_REGS;
- if (memcmp (s, "Rra", 3) == 0)
- return RA_REGS;
- if (memcmp (s, "Rfl", 3) == 0)
- return FLG_REGS;
- if (memcmp (s, "Rmm", 3) == 0)
- {
- if (fixed_regs[MEM0_REGNO])
- return NO_REGS;
- return MEM_REGS;
- }
-
- /* PSImode registers - i.e. whatever can hold a pointer. */
- if (memcmp (s, "Rpi", 3) == 0)
- {
- if (TARGET_A16)
- return HI_REGS;
- else
- return RA_REGS; /* r2r0 and r3r1 can hold pointers. */
- }
-
- /* We handle this one as an EXTRA_CONSTRAINT. */
- if (memcmp (s, "Rpa", 3) == 0)
- return NO_REGS;
-
- if (*s == 'R')
- {
- fprintf(stderr, "unrecognized R constraint: %.3s\n", s);
- gcc_unreachable();
- }
-
- return NO_REGS;
-}
-
/* Implements REGNO_OK_FOR_BASE_P. */
int
m32c_regno_ok_for_base_p (int regno)
@@ -926,141 +839,57 @@ m32c_cannot_change_mode_class (enum machine_mode from,
&& (REGNO (rtx) == AP_REGNO \
|| REGNO (rtx) >= FIRST_PSEUDO_REGISTER))
-/* Implements CONST_OK_FOR_CONSTRAINT_P. Currently, all constant
- constraints start with 'I', with the next two characters indicating
- the type and size of the range allowed. */
-int
-m32c_const_ok_for_constraint_p (HOST_WIDE_INT value,
- char c ATTRIBUTE_UNUSED, const char *str)
-{
- /* s=signed u=unsigned n=nonzero m=minus l=log2able,
- [sun] bits [SUN] bytes, p=pointer size
- I[-0-9][0-9] matches that number */
- if (memcmp (str, "Is3", 3) == 0)
- {
- return (-8 <= value && value <= 7);
- }
- if (memcmp (str, "IS1", 3) == 0)
- {
- return (-128 <= value && value <= 127);
- }
- if (memcmp (str, "IS2", 3) == 0)
- {
- return (-32768 <= value && value <= 32767);
- }
- if (memcmp (str, "IU2", 3) == 0)
- {
- return (0 <= value && value <= 65535);
- }
- if (memcmp (str, "IU3", 3) == 0)
- {
- return (0 <= value && value <= 0x00ffffff);
- }
- if (memcmp (str, "In4", 3) == 0)
- {
- return (-8 <= value && value && value <= 8);
- }
- if (memcmp (str, "In5", 3) == 0)
- {
- return (-16 <= value && value && value <= 16);
- }
- if (memcmp (str, "In6", 3) == 0)
- {
- return (-32 <= value && value && value <= 32);
- }
- if (memcmp (str, "IM2", 3) == 0)
- {
- return (-65536 <= value && value && value <= -1);
- }
- if (memcmp (str, "Ilb", 3) == 0)
- {
- int b = exact_log2 (value);
- return (b >= 0 && b <= 7);
- }
- if (memcmp (str, "Imb", 3) == 0)
- {
- int b = exact_log2 ((value ^ 0xff) & 0xff);
- return (b >= 0 && b <= 7);
- }
- if (memcmp (str, "ImB", 3) == 0)
- {
- int b = exact_log2 ((value ^ 0xffff) & 0xffff);
- return (b >= 0 && b <= 7);
- }
- if (memcmp (str, "Ilw", 3) == 0)
- {
- int b = exact_log2 (value);
- return (b >= 0 && b <= 15);
- }
- if (memcmp (str, "Imw", 3) == 0)
- {
- int b = exact_log2 ((value ^ 0xffff) & 0xffff);
- return (b >= 0 && b <= 15);
- }
- if (memcmp (str, "I00", 3) == 0)
- {
- return (value == 0);
- }
- return 0;
-}
-
#define A0_OR_PSEUDO(x) (IS_REG(x, A0_REGNO) || REGNO (x) >= FIRST_PSEUDO_REGISTER)
/* Implements EXTRA_CONSTRAINT_STR (see next function too). 'S' is
for memory constraints, plus "Rpa" for PARALLEL rtx's we use for
call return values. */
-int
-m32c_extra_constraint_p2 (rtx value, char c ATTRIBUTE_UNUSED, const char *str)
+bool
+m32c_matches_constraint_p (rtx value, int constraint)
{
encode_pattern (value);
- if (far_addr_space_p (value))
- {
- if (memcmp (str, "SF", 2) == 0)
- {
- return ( (RTX_IS ("mr")
- && A0_OR_PSEUDO (patternr[1])
- && GET_MODE (patternr[1]) == SImode)
- || (RTX_IS ("m+^Sri")
- && A0_OR_PSEUDO (patternr[4])
- && GET_MODE (patternr[4]) == HImode)
- || (RTX_IS ("m+^Srs")
- && A0_OR_PSEUDO (patternr[4])
- && GET_MODE (patternr[4]) == HImode)
- || (RTX_IS ("m+^S+ris")
- && A0_OR_PSEUDO (patternr[5])
- && GET_MODE (patternr[5]) == HImode)
- || RTX_IS ("ms")
- );
- }
- return 0;
- }
-
- if (memcmp (str, "Sd", 2) == 0)
+ switch (constraint) {
+ case CONSTRAINT_SF:
+ return (far_addr_space_p (value)
+ && ((RTX_IS ("mr")
+ && A0_OR_PSEUDO (patternr[1])
+ && GET_MODE (patternr[1]) == SImode)
+ || (RTX_IS ("m+^Sri")
+ && A0_OR_PSEUDO (patternr[4])
+ && GET_MODE (patternr[4]) == HImode)
+ || (RTX_IS ("m+^Srs")
+ && A0_OR_PSEUDO (patternr[4])
+ && GET_MODE (patternr[4]) == HImode)
+ || (RTX_IS ("m+^S+ris")
+ && A0_OR_PSEUDO (patternr[5])
+ && GET_MODE (patternr[5]) == HImode)
+ || RTX_IS ("ms")));
+ case CONSTRAINT_Sd:
{
/* This is the common "src/dest" address */
rtx r;
if (GET_CODE (value) == MEM && CONSTANT_P (XEXP (value, 0)))
- return 1;
+ return true;
if (RTX_IS ("ms") || RTX_IS ("m+si"))
- return 1;
+ return true;
if (RTX_IS ("m++rii"))
{
if (REGNO (patternr[3]) == FB_REGNO
&& INTVAL (patternr[4]) == 0)
- return 1;
+ return true;
}
if (RTX_IS ("mr"))
r = patternr[1];
else if (RTX_IS ("m+ri") || RTX_IS ("m+rs") || RTX_IS ("m+r+si"))
r = patternr[2];
else
- return 0;
+ return false;
if (REGNO (r) == SP_REGNO)
- return 0;
+ return false;
return m32c_legitimate_address_p (GET_MODE (value), XEXP (value, 0), 1);
}
- else if (memcmp (str, "Sa", 2) == 0)
+ case CONSTRAINT_Sa:
{
rtx r;
if (RTX_IS ("mr"))
@@ -1068,81 +897,34 @@ m32c_extra_constraint_p2 (rtx value, char c ATTRIBUTE_UNUSED, const char *str)
else if (RTX_IS ("m+ri"))
r = patternr[2];
else
- return 0;
+ return false;
return (IS_REG (r, A0_REGNO) || IS_REG (r, A1_REGNO));
}
- else if (memcmp (str, "Si", 2) == 0)
- {
- return (RTX_IS ("mi") || RTX_IS ("ms") || RTX_IS ("m+si"));
- }
- else if (memcmp (str, "Ss", 2) == 0)
- {
- return ((RTX_IS ("mr")
- && (IS_REG (patternr[1], SP_REGNO)))
- || (RTX_IS ("m+ri") && (IS_REG (patternr[2], SP_REGNO))));
- }
- else if (memcmp (str, "Sf", 2) == 0)
- {
- return ((RTX_IS ("mr")
- && (IS_REG (patternr[1], FB_REGNO)))
- || (RTX_IS ("m+ri") && (IS_REG (patternr[2], FB_REGNO))));
- }
- else if (memcmp (str, "Sb", 2) == 0)
- {
- return ((RTX_IS ("mr")
- && (IS_REG (patternr[1], SB_REGNO)))
- || (RTX_IS ("m+ri") && (IS_REG (patternr[2], SB_REGNO))));
- }
- else if (memcmp (str, "Sp", 2) == 0)
- {
- /* Absolute addresses 0..0x1fff used for bit addressing (I/O ports) */
- return (RTX_IS ("mi")
- && !(INTVAL (patternr[1]) & ~0x1fff));
- }
- else if (memcmp (str, "S1", 2) == 0)
- {
- return r1h_operand (value, QImode);
- }
- else if (memcmp (str, "SF", 2) == 0)
- {
- return 0;
- }
-
- gcc_assert (str[0] != 'S');
-
- if (memcmp (str, "Rpa", 2) == 0)
+ case CONSTRAINT_Si:
+ return (RTX_IS ("mi") || RTX_IS ("ms") || RTX_IS ("m+si"));
+ case CONSTRAINT_Ss:
+ return ((RTX_IS ("mr")
+ && (IS_REG (patternr[1], SP_REGNO)))
+ || (RTX_IS ("m+ri") && (IS_REG (patternr[2], SP_REGNO))));
+ case CONSTRAINT_Sf:
+ return ((RTX_IS ("mr")
+ && (IS_REG (patternr[1], FB_REGNO)))
+ || (RTX_IS ("m+ri") && (IS_REG (patternr[2], FB_REGNO))));
+ case CONSTRAINT_Sb:
+ return ((RTX_IS ("mr")
+ && (IS_REG (patternr[1], SB_REGNO)))
+ || (RTX_IS ("m+ri") && (IS_REG (patternr[2], SB_REGNO))));
+ case CONSTRAINT_Sp:
+ /* Absolute addresses 0..0x1fff used for bit addressing (I/O ports) */
+ return (RTX_IS ("mi")
+ && !(INTVAL (patternr[1]) & ~0x1fff));
+ case CONSTRAINT_S1:
+ return r1h_operand (value, QImode);
+ case CONSTRAINT_Rpa:
return GET_CODE (value) == PARALLEL;
-
- return 0;
-}
-
-/* This is for when we're debugging the above. */
-int
-m32c_extra_constraint_p (rtx value, char c, const char *str)
-{
- int rv = m32c_extra_constraint_p2 (value, c, str);
-#if DEBUG0
- fprintf (stderr, "\nconstraint %.*s: %d\n", CONSTRAINT_LEN (c, str), str,
- rv);
- debug_rtx (value);
-#endif
- return rv;
-}
-
-/* Implements EXTRA_MEMORY_CONSTRAINT. Currently, we only use strings
- starting with 'S'. */
-int
-m32c_extra_memory_constraint (char c, const char *str ATTRIBUTE_UNUSED)
-{
- return c == 'S';
-}
-
-/* Implements EXTRA_ADDRESS_CONSTRAINT. We reserve 'A' strings for these,
- but don't currently define any. */
-int
-m32c_extra_address_constraint (char c, const char *str ATTRIBUTE_UNUSED)
-{
- return c == 'A';
+ default:
+ return false;
+ }
}
/* STACK AND CALLING */
@@ -1857,25 +1639,6 @@ m32c_trampoline_init (rtx m_tramp, tree fndecl, rtx chainval)
#undef A0
}
-/* Implicit Calls to Library Routines */
-
-#undef TARGET_INIT_LIBFUNCS
-#define TARGET_INIT_LIBFUNCS m32c_init_libfuncs
-static void
-m32c_init_libfuncs (void)
-{
- /* We do this because the M32C has an HImode operand, but the
- M16C has an 8-bit operand. Since gcc looks at the match data
- and not the expanded rtl, we have to reset the optab so that
- the right modes are found. */
- if (TARGET_A24)
- {
- set_optab_handler (cstore_optab, QImode, CODE_FOR_cstoreqi4_24);
- set_optab_handler (cstore_optab, HImode, CODE_FOR_cstorehi4_24);
- set_optab_handler (cstore_optab, PSImode, CODE_FOR_cstorepsi4_24);
- }
-}
-
/* Addressing Modes */
/* The r8c/m32c family supports a wide range of non-orthogonal
@@ -3686,7 +3449,7 @@ m32c_split_move (rtx * operands, enum machine_mode mode, int split_all)
point, so it's safe to set it to 3 even with define_insn. */
/* None of the chips can move SI operands to sp-relative addresses,
so we always split those. */
- if (m32c_extra_constraint_p (operands[0], 'S', "Ss"))
+ if (satisfies_constraint_Ss (operands[0]))
split_all = 3;
if (TARGET_A16
diff --git a/gcc/config/m32c/m32c.h b/gcc/config/m32c/m32c.h
index 00f8a2c52a1..1efbd36bbdd 100644
--- a/gcc/config/m32c/m32c.h
+++ b/gcc/config/m32c/m32c.h
@@ -405,15 +405,6 @@ enum reg_class
A - addresses (currently unused)
*/
-#define CONSTRAINT_LEN(CHAR,STR) \
- ((CHAR) == 'I' ? 3 \
- : (CHAR) == 'R' ? 3 \
- : (CHAR) == 'S' ? 2 \
- : (CHAR) == 'A' ? 2 \
- : DEFAULT_CONSTRAINT_LEN(CHAR,STR))
-#define REG_CLASS_FROM_CONSTRAINT(CHAR,STR) \
- (enum reg_class) m32c_reg_class_from_constraint (CHAR, STR)
-
#define REGNO_OK_FOR_BASE_P(NUM) m32c_regno_ok_for_base_p (NUM)
#define REGNO_OK_FOR_INDEX_P(NUM) 0
@@ -427,16 +418,6 @@ enum reg_class
#define CANNOT_CHANGE_MODE_CLASS(F,T,C) m32c_cannot_change_mode_class(F,T,C)
-#define CONST_OK_FOR_CONSTRAINT_P(VALUE,C,STR) \
- m32c_const_ok_for_constraint_p (VALUE, C, STR)
-#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(VALUE,C,STR) 0
-#define EXTRA_CONSTRAINT_STR(VALUE,C,STR) \
- m32c_extra_constraint_p (VALUE, C, STR)
-#define EXTRA_MEMORY_CONSTRAINT(C,STR) \
- m32c_extra_memory_constraint (C, STR)
-#define EXTRA_ADDRESS_CONSTRAINT(C,STR) \
- m32c_extra_address_constraint (C, STR)
-
/* STACK AND CALLING */
/* Frame Layout */
diff --git a/gcc/config/m32c/predicates.md b/gcc/config/m32c/predicates.md
index 9293baa65f1..9045cb5f1c8 100644
--- a/gcc/config/m32c/predicates.md
+++ b/gcc/config/m32c/predicates.md
@@ -183,12 +183,12 @@
; TRUE for memory operands that are not indexed
(define_predicate "memsym_operand"
(and (match_operand 0 "memory_operand" "")
- (match_test "m32c_extra_constraint_p (op, 'S', \"Si\")")))
+ (match_test "satisfies_constraint_Si (op)")))
; TRUE for memory operands with small integer addresses
(define_predicate "memimmed_operand"
(and (match_operand 0 "memory_operand" "")
- (match_test "m32c_extra_constraint_p (op, 'S', \"Sp\")")))
+ (match_test "satisfies_constraint_Sp (op)")))
; TRUE for r1h. This is complicated since r1h isn't a register GCC
; normally knows about.
@@ -274,22 +274,22 @@
; TRUE for constants we can multiply pointers by
(define_predicate "m32c_psi_scale"
(and (match_operand 0 "const_int_operand")
- (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"Ilb\")")))
+ (match_test "satisfies_constraint_Ilb (op)")))
; TRUE for one bit set (bit) or clear (mask) out of N bits.
(define_predicate "m32c_1bit8_operand"
(and (match_operand 0 "const_int_operand")
- (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"Ilb\")")))
+ (match_test "satisfies_constraint_Ilb (op)")))
(define_predicate "m32c_1bit16_operand"
(and (match_operand 0 "const_int_operand")
- (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"Ilw\")")))
+ (match_test "satisfies_constraint_Ilw (op)")))
(define_predicate "m32c_1mask8_operand"
(and (match_operand 0 "const_int_operand")
- (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"ImB\")")))
+ (match_test "satisfies_constraint_ImB (op)")))
(define_predicate "m32c_1mask16_operand"
(and (match_operand 0 "const_int_operand")
- (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"Imw\")")))
+ (match_test "satisfies_constraint_Imw (op)")))
diff --git a/gcc/config/m32c/t-m32c b/gcc/config/m32c/t-m32c
index 1e4ed6b7113..d5f1bf41b8e 100644
--- a/gcc/config/m32c/t-m32c
+++ b/gcc/config/m32c/t-m32c
@@ -23,7 +23,7 @@
md_file = md
-MD_FILES = m32c predicates addsub bitops blkmov cond jump minmax mov muldiv prologue shift
+MD_FILES = m32c constraints predicates addsub bitops blkmov cond jump minmax mov muldiv prologue shift
# Doing it this way lets the gen* programs report the right line numbers.
diff --git a/gcc/config/m68k/m68k-protos.h b/gcc/config/m68k/m68k-protos.h
index c77958812dc..a6b5dee1817 100644
--- a/gcc/config/m68k/m68k-protos.h
+++ b/gcc/config/m68k/m68k-protos.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. Sun 68000/68020 version.
- Copyright (C) 2000, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2000, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -68,6 +68,7 @@ extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool);
extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool);
extern void m68k_final_prescan_insn (rtx, rtx *, int);
+extern bool m68k_epilogue_uses (int);
/* Functions from m68k.c used in constraints.md. */
extern rtx m68k_unwrap_symbol (rtx, bool);
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 8684d0ab0b8..0e55e1c2309 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for Motorola 68000 family.
Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -618,6 +618,12 @@ m68k_option_override (void)
}
#endif
+ if (stack_limit_rtx != NULL_RTX && !TARGET_68020)
+ {
+ warning (0, "-fstack-limit- options are not supported on this cpu");
+ stack_limit_rtx = NULL_RTX;
+ }
+
SUBTARGET_OVERRIDE_OPTIONS;
/* Setup scheduling options. */
@@ -6500,4 +6506,14 @@ m68k_init_sync_libfuncs (void)
init_sync_libfuncs (UNITS_PER_WORD);
}
+/* Implements EPILOGUE_USES. All registers are live on exit from an
+ interrupt routine. */
+bool
+m68k_epilogue_uses (int regno ATTRIBUTE_UNUSED)
+{
+ return (reload_completed
+ && (m68k_get_function_kind (current_function_decl)
+ == m68k_fk_interrupt_handler));
+}
+
#include "gt-m68k.h"
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index b8d8d9ce922..8be0879e282 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -802,11 +802,7 @@ do { if (cc_prev_status.flags & CC_IN_68881) \
/* Before the prologue, the top of the frame is at 4(%sp). */
#define INCOMING_FRAME_SP_OFFSET 4
-/* All registers are live on exit from an interrupt routine. */
-#define EPILOGUE_USES(REGNO) \
- (reload_completed \
- && (m68k_get_function_kind (current_function_decl) \
- == m68k_fk_interrupt_handler))
+#define EPILOGUE_USES(REGNO) m68k_epilogue_uses (REGNO)
/* Describe how we implement __builtin_eh_return. */
#define EH_RETURN_DATA_REGNO(N) \
diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c
index 9b8cf020ef3..c592964e96b 100644
--- a/gcc/config/mcore/mcore.c
+++ b/gcc/config/mcore/mcore.c
@@ -138,6 +138,7 @@ static unsigned int mcore_function_arg_boundary (enum machine_mode,
const_tree);
static void mcore_asm_trampoline_template (FILE *);
static void mcore_trampoline_init (rtx, tree, rtx);
+static bool mcore_warn_func_return (tree);
static void mcore_option_override (void);
static bool mcore_legitimate_constant_p (enum machine_mode, rtx);
@@ -228,6 +229,9 @@ static const struct attribute_spec mcore_attribute_table[] =
#undef TARGET_LEGITIMATE_CONSTANT_P
#define TARGET_LEGITIMATE_CONSTANT_P mcore_legitimate_constant_p
+#undef TARGET_WARN_FUNC_RETURN
+#define TARGET_WARN_FUNC_RETURN mcore_warn_func_return
+
struct gcc_target targetm = TARGET_INITIALIZER;
/* Adjust the stack and return the number of bytes taken to do it. */
@@ -2580,9 +2584,6 @@ conditionalize_optimization (void)
continue;
}
-static int saved_warn_return_type = -1;
-static int saved_warn_return_type_count = 0;
-
/* This is to handle loads from the constant pool. */
static void
@@ -2591,21 +2592,6 @@ mcore_reorg (void)
/* Reset this variable. */
current_function_anonymous_args = 0;
- /* Restore the warn_return_type if it has been altered. */
- if (saved_warn_return_type != -1)
- {
- /* Only restore the value if we have reached another function.
- The test of warn_return_type occurs in final_function () in
- c-decl.c a long time after the code for the function is generated,
- so we need a counter to tell us when we have finished parsing that
- function and can restore the flag. */
- if (--saved_warn_return_type_count == 0)
- {
- warn_return_type = saved_warn_return_type;
- saved_warn_return_type = -1;
- }
- }
-
if (optimize == 0)
return;
@@ -3056,25 +3042,7 @@ static tree
mcore_handle_naked_attribute (tree * node, tree name, tree args ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED, bool * no_add_attrs)
{
- if (TREE_CODE (*node) == FUNCTION_DECL)
- {
- /* PR14310 - don't complain about lack of return statement
- in naked functions. The solution here is a gross hack
- but this is the only way to solve the problem without
- adding a new feature to GCC. I did try submitting a patch
- that would add such a new feature, but it was (rightfully)
- rejected on the grounds that it was creeping featurism,
- so hence this code. */
- if (warn_return_type)
- {
- saved_warn_return_type = warn_return_type;
- warn_return_type = 0;
- saved_warn_return_type_count = 2;
- }
- else if (saved_warn_return_type_count)
- saved_warn_return_type_count = 2;
- }
- else
+ if (TREE_CODE (*node) != FUNCTION_DECL)
{
warning (OPT_Wattributes, "%qE attribute only applies to functions",
name);
@@ -3126,6 +3094,14 @@ mcore_naked_function_p (void)
return lookup_attribute ("naked", DECL_ATTRIBUTES (current_function_decl)) != NULL_TREE;
}
+static bool
+mcore_warn_func_return (tree decl)
+{
+ /* Naked functions are implemented entirely in assembly, including the
+ return sequence, so suppress warnings about this. */
+ return lookup_attribute ("naked", DECL_ATTRIBUTES (decl)) == NULL_TREE;
+}
+
#ifdef OBJECT_FORMAT_ELF
static void
mcore_asm_named_section (const char *name,
diff --git a/gcc/config/mcore/mcore.md b/gcc/config/mcore/mcore.md
index 805de2b2326..68169f5a32f 100644
--- a/gcc/config/mcore/mcore.md
+++ b/gcc/config/mcore/mcore.md
@@ -1502,7 +1502,7 @@
(define_expand "cbranchsi4"
[(set (pc)
- (if_then_else (match_operator:SI 0 "ordered_comparison_operator"
+ (if_then_else (match_operator 0 "ordered_comparison_operator"
[(match_operand:SI 1 "mcore_compare_operand")
(match_operand:SI 2 "nonmemory_operand")])
(label_ref (match_operand 3 ""))
diff --git a/gcc/config/mep/mep-protos.h b/gcc/config/mep/mep-protos.h
index edfbaf7575c..f0f34968741 100644
--- a/gcc/config/mep/mep-protos.h
+++ b/gcc/config/mep/mep-protos.h
@@ -20,9 +20,6 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
extern int mep_regno_reg_class (int);
-extern int mep_reg_class_from_constraint (int, const char *);
-extern bool mep_const_ok_for_letter_p (HOST_WIDE_INT, int);
-extern bool mep_extra_constraint (rtx, int);
extern rtx mep_mulr_source (rtx, rtx, rtx, rtx);
extern bool mep_reuse_lo_p (rtx, rtx, rtx, bool);
extern bool mep_use_post_modify_p (rtx, rtx, rtx);
diff --git a/gcc/config/mep/mep.c b/gcc/config/mep/mep.c
index a6615edcd0b..5089e033316 100644
--- a/gcc/config/mep/mep.c
+++ b/gcc/config/mep/mep.c
@@ -51,6 +51,7 @@ along with GCC; see the file COPYING3. If not see
#include "df.h"
#include "gimple.h"
#include "opts.h"
+#include "dumpfile.h"
/* Structure of this file:
@@ -595,132 +596,6 @@ mep_regno_reg_class (int regno)
return NO_REGS;
}
-#if 0
-int
-mep_reg_class_from_constraint (int c, const char *str)
-{
- switch (c)
- {
- case 'a':
- return SP_REGS;
- case 'b':
- return TP_REGS;
- case 'c':
- return CONTROL_REGS;
- case 'd':
- return HILO_REGS;
- case 'e':
- {
- switch (str[1])
- {
- case 'm':
- return LOADABLE_CR_REGS;
- case 'x':
- return mep_have_copro_copro_moves_p ? CR_REGS : NO_REGS;
- case 'r':
- return mep_have_core_copro_moves_p ? CR_REGS : NO_REGS;
- default:
- return NO_REGS;
- }
- }
- case 'h':
- return HI_REGS;
- case 'j':
- return RPC_REGS;
- case 'l':
- return LO_REGS;
- case 't':
- return TPREL_REGS;
- case 'v':
- return GP_REGS;
- case 'x':
- return CR_REGS;
- case 'y':
- return CCR_REGS;
- case 'z':
- return R0_REGS;
-
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- {
- enum reg_class which = c - 'A' + USER0_REGS;
- return (reg_class_size[which] > 0 ? which : NO_REGS);
- }
-
- default:
- return NO_REGS;
- }
-}
-
-bool
-mep_const_ok_for_letter_p (HOST_WIDE_INT value, int c)
-{
- switch (c)
- {
- case 'I': return value >= -32768 && value < 32768;
- case 'J': return value >= 0 && value < 65536;
- case 'K': return value >= 0 && value < 0x01000000;
- case 'L': return value >= -32 && value < 32;
- case 'M': return value >= 0 && value < 32;
- case 'N': return value >= 0 && value < 16;
- case 'O':
- if (value & 0xffff)
- return false;
- return value >= -2147483647-1 && value <= 2147483647;
- default:
- gcc_unreachable ();
- }
-}
-
-bool
-mep_extra_constraint (rtx value, int c)
-{
- encode_pattern (value);
-
- switch (c)
- {
- case 'R':
- /* For near symbols, like what call uses. */
- if (GET_CODE (value) == REG)
- return 0;
- return mep_call_address_operand (value, GET_MODE (value));
-
- case 'S':
- /* For signed 8-bit immediates. */
- return (GET_CODE (value) == CONST_INT
- && INTVAL (value) >= -128
- && INTVAL (value) <= 127);
-
- case 'T':
- /* For tp/gp relative symbol values. */
- return (RTX_IS ("u3s") || RTX_IS ("u2s")
- || RTX_IS ("+u3si") || RTX_IS ("+u2si"));
-
- case 'U':
- /* Non-absolute memories. */
- return GET_CODE (value) == MEM && ! CONSTANT_P (XEXP (value, 0));
-
- case 'W':
- /* %hi(sym) */
- return RTX_IS ("Hs");
-
- case 'Y':
- /* Register indirect. */
- return RTX_IS ("mr");
-
- case 'Z':
- return mep_section_tag (value) == 'c' && RTX_IS ("ms");
- }
-
- return false;
-}
-#endif
-
-#undef PASS
-#undef FAIL
-
static bool
const_in_range (rtx x, int minv, int maxv)
{
@@ -5022,7 +4897,7 @@ mep_reorg_regmove (rtx insns)
done = 1;
for (insn = insns; insn; insn = next)
{
- next = NEXT_INSN (insn);
+ next = next_nonnote_nondebug_insn (insn);
if (GET_CODE (insn) != INSN)
continue;
pat = PATTERN (insn);
@@ -5035,7 +4910,7 @@ mep_reorg_regmove (rtx insns)
&& find_regno_note (insn, REG_DEAD, REGNO (SET_SRC (pat)))
&& mep_compatible_reg_class (REGNO (SET_SRC (pat)), REGNO (SET_DEST (pat))))
{
- follow = next_nonnote_insn (insn);
+ follow = next_nonnote_nondebug_insn (insn);
if (dump_file)
fprintf (dump_file, "superfluous moves: considering %d\n", INSN_UID (insn));
@@ -5096,7 +4971,7 @@ mep_reorg_regmove (rtx insns)
follow, where))
{
count ++;
- next = delete_insn (insn);
+ delete_insn (insn);
if (dump_file)
{
fprintf (dump_file, "\n----- Success! new insn:\n\n");
diff --git a/gcc/config/mep/mep.h b/gcc/config/mep/mep.h
index ad5b36d375d..9a382e68185 100644
--- a/gcc/config/mep/mep.h
+++ b/gcc/config/mep/mep.h
@@ -408,11 +408,6 @@ enum reg_class
#define BASE_REG_CLASS GENERAL_REGS
#define INDEX_REG_CLASS GENERAL_REGS
-#if 0
-#define REG_CLASS_FROM_CONSTRAINT(CHAR, STRING) \
- mep_reg_class_from_constraint (CHAR, STRING)
-#endif
-
#define REGNO_OK_FOR_BASE_P(NUM) (GR_REGNO_P (NUM) \
|| (NUM) == ARG_POINTER_REGNUM \
|| (NUM) >= FIRST_PSEUDO_REGISTER)
@@ -428,16 +423,6 @@ enum reg_class
#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \
mep_secondary_memory_needed (CLASS1, CLASS2, MODE)
-#if 0
-#define CONST_OK_FOR_LETTER_P(VALUE, C) mep_const_ok_for_letter_p (VALUE, C)
-
-#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-
-#define CONSTRAINT_LEN(C, STR) \
- ((C) == 'e' ? 2 : DEFAULT_CONSTRAINT_LEN (C, STR))
-#define EXTRA_CONSTRAINT(VALUE, C) mep_extra_constraint (VALUE, C)
-#endif
-
#define WANT_GCC_DECLARATIONS
#include "mep-intrin.h"
#undef WANT_GCC_DECLARATIONS
@@ -561,8 +546,6 @@ typedef struct
if (mep_legitimize_reload_address (&(X), (MODE), (OPNUM), (TYPE), (IND_LEVELS))) \
goto WIN
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-
#define SELECT_CC_MODE(OP, X, Y) CCmode
diff --git a/gcc/config/mep/t-mep b/gcc/config/mep/t-mep
index 96542c4782c..cbc19fc671e 100644
--- a/gcc/config/mep/t-mep
+++ b/gcc/config/mep/t-mep
@@ -30,7 +30,7 @@ mep-pragma.o: $(srcdir)/config/mep/mep-pragma.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(RTL_H) $(C_PRAGMA_H) \
$(CPPLIB_H) hard-reg-set.h output.h $(srcdir)/config/mep/mep-protos.h \
function.h insn-config.h reload.h $(TARGET_H)
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
+ $(COMPILER) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
MULTILIB_OPTIONS = mel mall-opts mfar
MULTILIB_DIRNAMES = el allopt far
@@ -40,7 +40,7 @@ MD_INCLUDES = \
$(srcdir)/config/mep/predicates.md \
$(srcdir)/config/mep/constraints.md
-mep.o : $(srcdir)/config/mep/mep-intrin.h
+mep.o : $(srcdir)/config/mep/mep-intrin.h dumpfile.h
# begin-isas
MEP_CORE = ext_core1
diff --git a/gcc/config/mips/10000.md b/gcc/config/mips/10000.md
index ad21e9e936e..ae376b05a61 100644
--- a/gcc/config/mips/10000.md
+++ b/gcc/config/mips/10000.md
@@ -68,21 +68,19 @@
;; Miscellaneous arith goes here too (this is a guess).
(define_insn_reservation "r10k_arith" 1
(and (eq_attr "cpu" "r10000")
- (eq_attr "type" "arith,mthilo,slt,clz,const,nop,trap,logical"))
+ (eq_attr "type" "arith,mthi,mtlo,slt,clz,const,nop,trap,logical"))
"r10k_alu1 | r10k_alu2")
;; We treat mfhilo differently, because we need to know when
;; it's HI and when it's LO.
(define_insn_reservation "r10k_mfhi" 1
(and (eq_attr "cpu" "r10000")
- (and (eq_attr "type" "mfhilo")
- (not (match_operand 1 "lo_operand"))))
+ (eq_attr "type" "mfhi"))
"r10k_alu1 | r10k_alu2")
(define_insn_reservation "r10k_mflo" 1
(and (eq_attr "cpu" "r10000")
- (and (eq_attr "type" "mfhilo")
- (match_operand 1 "lo_operand")))
+ (eq_attr "type" "mflo"))
"r10k_alu1 | r10k_alu2")
@@ -249,5 +247,5 @@
;; Handle unknown/multi insns here (this is a guess).
(define_insn_reservation "r10k_unknown" 1
(and (eq_attr "cpu" "r10000")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"r10k_alu1 + r10k_alu2")
diff --git a/gcc/config/mips/20kc.md b/gcc/config/mips/20kc.md
index 1d3aadf69a3..5c0088ce467 100644
--- a/gcc/config/mips/20kc.md
+++ b/gcc/config/mips/20kc.md
@@ -195,12 +195,12 @@
;; cycle latency. Repeat rate is 3 for both.
(define_insn_reservation "r20kc_imthilo" 3
(and (eq_attr "cpu" "20kc")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"r20kc_impydiv+(r20kc_impydiv_iter*3)")
(define_insn_reservation "r20kc_imfhilo" 1
(and (eq_attr "cpu" "20kc")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"r20kc_impydiv+(r20kc_impydiv_iter*3)")
;; Move to fp coprocessor.
@@ -280,5 +280,5 @@
;; Force single-dispatch for unknown or multi.
(define_insn_reservation "r20kc_unknown" 1
(and (eq_attr "cpu" "20kc")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"r20kc_single_dispatch")
diff --git a/gcc/config/mips/24k.md b/gcc/config/mips/24k.md
index 5df8a32dc59..3860d1eef0d 100644
--- a/gcc/config/mips/24k.md
+++ b/gcc/config/mips/24k.md
@@ -94,13 +94,13 @@
;; mfhi, mflo, mflhxu - deliver result to gpr in 5 cycles
(define_insn_reservation "r24k_int_mfhilo" 5
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
;; mthi, mtlo, mtlhx - deliver result to hi/lo, thence madd, handled as bypass
(define_insn_reservation "r24k_int_mthilo" 1
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
;; div - default to 36 cycles for 32bit operands. Faster for 24bit, 16bit and
@@ -122,18 +122,7 @@
;; 6. Store
(define_insn_reservation "r24k_int_store" 1
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
- (and (eq_attr "type" "store")
- (eq_attr "mode" "!unknown")))
- "r24k_iss+r24k_ixu_arith")
-
-;; 6.1 Special case - matches the cprestore pattern which don't set the mode
-;; attrib. This avoids being set as r24k_int_store and have it checked
-;; against store_data_bypass_p, which would then fail because cprestore
-;; does not have a normal SET pattern.
-(define_insn_reservation "r24k_unknown_store" 1
- (and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
- (and (eq_attr "type" "store")
- (eq_attr "mode" "unknown")))
+ (eq_attr "type" "store"))
"r24k_iss+r24k_ixu_arith")
@@ -149,7 +138,7 @@
;; scheduling via log links, but not used here).
(define_insn_reservation "r24k_int_unknown" 0
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
- (eq_attr "type" "unknown"))
+ (eq_attr "type" "unknown,atomic,syncloop"))
"r24k_iss")
@@ -169,7 +158,7 @@
;; load->store base: 3 cycles
;; load->prefetch: 3 cycles
(define_bypass 3 "r24k_int_load" "r24k_int_load")
-(define_bypass 3 "r24k_int_load" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 3 "r24k_int_load" "r24k_int_store" "!mips_store_data_bypass_p")
(define_bypass 3 "r24k_int_load" "r24k_int_prefetch")
;; arith->next use : 1 cycles (Default)
@@ -177,14 +166,14 @@
;; arith->store base: 2 cycles
;; arith->prefetch: 2 cycles
(define_bypass 2 "r24k_int_arith" "r24k_int_load")
-(define_bypass 2 "r24k_int_arith" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 2 "r24k_int_arith" "r24k_int_store" "!mips_store_data_bypass_p")
(define_bypass 2 "r24k_int_arith" "r24k_int_prefetch")
;; mul3->next use : 5 cycles (default)
;; mul3->l/s base : 6 cycles
;; mul3->prefetch : 6 cycles
(define_bypass 6 "r24k_int_mul3" "r24k_int_load")
-(define_bypass 6 "r24k_int_mul3" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 6 "r24k_int_mul3" "r24k_int_store" "!mips_store_data_bypass_p")
(define_bypass 6 "r24k_int_mul3" "r24k_int_prefetch")
;; mul3->madd/msub : 1 cycle
@@ -195,24 +184,121 @@
;; mfhilo->prefetch : 6 cycles
;; mthilo->madd/msub : 2 cycle (only for mthi/lo not mfhi/lo)
(define_bypass 6 "r24k_int_mfhilo" "r24k_int_load")
-(define_bypass 6 "r24k_int_mfhilo" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 6 "r24k_int_mfhilo" "r24k_int_store"
+ "!mips_store_data_bypass_p")
(define_bypass 6 "r24k_int_mfhilo" "r24k_int_prefetch")
(define_bypass 2 "r24k_int_mthilo" "r24k_int_madd")
;; cop->next use : 3 cycles (Default)
;; cop->l/s base : 4 cycles
;; (define_bypass 4 "r24k_int_cop" "r24k_int_load")
-;; (define_bypass 4 "r24k_int_cop" "r24k_int_store" "!store_data_bypass_p")
+;; (define_bypass 4 "r24k_int_cop" "r24k_int_store"
+;; "!mips_store_data_bypass_p")
;; multi->next use : 1 cycles (Default)
;; multi->l/s base : 2 cycles
;; multi->prefetch : 2 cycles
(define_bypass 2 "r24k_int_multi" "r24k_int_load")
-(define_bypass 2 "r24k_int_multi" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 2 "r24k_int_multi" "r24k_int_store" "!mips_store_data_bypass_p")
(define_bypass 2 "r24k_int_multi" "r24k_int_prefetch")
;; --------------------------------------------------------------
+;; DSP instructions
+;; --------------------------------------------------------------
+
+;; absq, addq, addsc, addu, addwc, bitrev, cmp, cmpgu, cmpu, insv, modsub,
+;; packrl, pick, preceq, preceu, precequ, precrq, precrqu, raddu, rddsp, repl,
+;; replv, shll, shllv, shra, shrav, shrl, shrlv, subq, subu, wrdsp
+(define_insn_reservation "r24k_dsp_alu" 2
+ (and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
+ (eq_attr "type" "dspalu,dspalusat"))
+ "r24k_iss+r24k_ixu_arith")
+
+;; dpaq_s, dpau, dpsq_s, dpsu, maq_s, mulsaq
+(define_insn_reservation "r24k_dsp_mac" 1
+ (and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
+ (eq_attr "type" "dspmac"))
+ "r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
+
+;; dpaq_sa, dpsq_sa, maq_sa
+(define_insn_reservation "r24k_dsp_mac_sat" 1
+ (and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
+ (eq_attr "type" "dspmacsat"))
+ "r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
+
+;; extp, extpdp, extpdpv, extpv, extr, extrv
+(define_insn_reservation "r24k_dsp_acc_ext" 5
+ (and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
+ (eq_attr "type" "accext"))
+ "r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
+
+;; mthlip, shilo, shilov
+(define_insn_reservation "r24k_dsp_acc_mod" 1
+ (and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
+ (eq_attr "type" "accmod"))
+ "r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
+
+
+;; mult/madd->dsp_acc_ext : 4 cycles
+;; mult/madd->dsp_acc_mod : 4 cycles
+(define_bypass 4 "r24k_int_mult" "r24k_dsp_acc_ext")
+(define_bypass 4 "r24k_int_mult" "r24k_dsp_acc_mod")
+
+;; mthilo->dsp_acc_ext : 4 cycles
+;; mthilo->dsp_acc_ext : 4 cycles
+(define_bypass 4 "r24k_int_mthilo" "r24k_dsp_acc_ext")
+(define_bypass 4 "r24k_int_mthilo" "r24k_dsp_acc_mod")
+
+;; dsp_mac->next use : 1 cycles (default)
+;; dsp_mac->dsp_acc_ext : 4 cycles
+;; dsp_mac->dsp_acc_mod : 4 cycles
+(define_bypass 4 "r24k_dsp_mac" "r24k_dsp_acc_ext")
+(define_bypass 4 "r24k_dsp_mac" "r24k_dsp_acc_mod")
+
+;; dsp_mac_sat->next use : 1 cycles (default)
+;; dsp_mac_sat->mult/madd : 2 cycles
+;; dsp_mac_sat->dsp_mac : 2 cycles
+;; dsp_mac_sat->dsp_mac_sat : 2 cycles
+;; dsp_mac_sat->dsp_acc_ext : 4 cycles
+;; dsp_mac_sat->dsp_acc_mod : 4 cycles
+(define_bypass 2 "r24k_dsp_mac_sat" "r24k_int_mult")
+(define_bypass 2 "r24k_dsp_mac_sat" "r24k_dsp_mac")
+(define_bypass 2 "r24k_dsp_mac_sat" "r24k_dsp_mac_sat")
+(define_bypass 4 "r24k_dsp_mac_sat" "r24k_dsp_acc_ext")
+(define_bypass 4 "r24k_dsp_mac_sat" "r24k_dsp_acc_mod")
+
+;; dsp_acc_ext->next use : 5 cycles (default)
+;; dsp_acc_ext->l/s base : 6 cycles
+;; dsp_acc_ext->prefetch : 6 cycles
+(define_bypass 6 "r24k_dsp_acc_ext" "r24k_int_load")
+(define_bypass 6 "r24k_dsp_acc_ext" "r24k_int_store"
+ "!mips_store_data_bypass_p")
+(define_bypass 6 "r24k_dsp_acc_ext" "r24k_int_prefetch")
+
+;; dsp_acc_mod->next use : 1 cycles (default)
+;; dsp_acc_mod->mult/madd : 2 cycles
+;; dsp_acc_mod->dsp_mac : 2 cycles
+;; dsp_acc_mod->dsp_mac_sat : 2 cycles
+;; dsp_acc_mod->dsp_acc_ext : 4 cycles
+;; dsp_acc_mod->dsp_acc_mod : 4 cycles
+(define_bypass 2 "r24k_dsp_acc_mod" "r24k_int_mult")
+(define_bypass 2 "r24k_dsp_acc_mod" "r24k_dsp_mac")
+(define_bypass 2 "r24k_dsp_acc_mod" "r24k_dsp_mac_sat")
+(define_bypass 4 "r24k_dsp_acc_mod" "r24k_dsp_acc_ext")
+(define_bypass 4 "r24k_dsp_acc_mod" "r24k_dsp_acc_mod")
+
+;; dspalu->next use : 2 cycles (default)
+;; dspalu->l/s base : 3 cycles
+;; dspalu->prefetch : 3 cycles
+;; some pairs of dspalu (addsc/addwc, cmp/pick, wrdsp/insv) : 1 cycle
+(define_bypass 3 "r24k_dsp_alu" "r24k_int_load")
+(define_bypass 3 "r24k_dsp_alu" "r24k_int_store" "!mips_store_data_bypass_p")
+(define_bypass 3 "r24k_dsp_alu" "r24k_int_prefetch")
+(define_bypass 1 "r24k_dsp_alu" "r24k_dsp_alu" "mips_dspalu_bypass_p")
+
+
+;; --------------------------------------------------------------
;; Floating Point Instructions
;; --------------------------------------------------------------
@@ -330,13 +416,14 @@
;; r24kf2_1_fcvt_f2i->l/s base : 11 cycles
;; r24kf2_1_fcvt_f2i->prefetch : 11 cycles
(define_bypass 11 "r24kf2_1_fcvt_f2i" "r24k_int_load")
-(define_bypass 11 "r24kf2_1_fcvt_f2i" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 11 "r24kf2_1_fcvt_f2i" "r24k_int_store"
+ "!mips_store_data_bypass_p")
(define_bypass 11 "r24kf2_1_fcvt_f2i" "r24k_int_prefetch")
;; r24kf2_1_fxfer->l/s base : 5 cycles
;; r24kf2_1_fxfer->prefetch : 5 cycles
(define_bypass 5 "r24kf2_1_fxfer" "r24k_int_load")
-(define_bypass 5 "r24kf2_1_fxfer" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 5 "r24kf2_1_fxfer" "r24k_int_store" "!mips_store_data_bypass_p")
(define_bypass 5 "r24kf2_1_fxfer" "r24k_int_prefetch")
;; --------------------------------------------------------------
@@ -446,12 +533,13 @@
;; r24kf1_1_fcvt_f2i->l/s base : 6 cycles
;; r24kf1_1_fcvt_f2i->prefetch : 6 cycles
(define_bypass 6 "r24kf1_1_fcvt_f2i" "r24k_int_load")
-(define_bypass 6 "r24kf1_1_fcvt_f2i" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 6 "r24kf1_1_fcvt_f2i" "r24k_int_store"
+ "!mips_store_data_bypass_p")
(define_bypass 6 "r24kf1_1_fcvt_f2i" "r24k_int_prefetch")
;; r24kf1_1_fxfer->l/s base : 3 cycles
;; r24kf1_1_fxfer->prefetch : 3 cycles
(define_bypass 3 "r24kf1_1_fxfer" "r24k_int_load")
-(define_bypass 3 "r24kf1_1_fxfer" "r24k_int_store" "!store_data_bypass_p")
+(define_bypass 3 "r24kf1_1_fxfer" "r24k_int_store" "!mips_store_data_bypass_p")
(define_bypass 3 "r24kf1_1_fxfer" "r24k_int_prefetch")
diff --git a/gcc/config/mips/4130.md b/gcc/config/mips/4130.md
index 6de814fc7c8..fd1001fde68 100644
--- a/gcc/config/mips/4130.md
+++ b/gcc/config/mips/4130.md
@@ -72,13 +72,13 @@
(cond [(eq_attr "type" "load,store")
(const_string "mem")
- (eq_attr "type" "mfhilo,mthilo,imul,imul3,imadd,idiv")
+ (eq_attr "type" "mfhi,mflo,mthi,mtlo,imul,imul3,imadd,idiv")
(const_string "mul")]
(const_string "alu")))
(define_insn_reservation "vr4130_multi" 1
(and (eq_attr "cpu" "r4130")
- (eq_attr "type" "multi,unknown"))
+ (eq_attr "type" "multi,unknown,atomic,syncloop"))
"vr4130_alu1 + vr4130_alu2 + vr4130_dcache + vr4130_muldiv")
(define_insn_reservation "vr4130_int" 1
@@ -98,12 +98,12 @@
(define_insn_reservation "vr4130_mfhilo" 3
(and (eq_attr "cpu" "r4130")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"vr4130_muldiv")
(define_insn_reservation "vr4130_mthilo" 1
(and (eq_attr "cpu" "r4130")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"vr4130_muldiv")
;; The product is available in LO & HI after one cycle. Moving the result
diff --git a/gcc/config/mips/4k.md b/gcc/config/mips/4k.md
index 88cdbd195a1..3733047f5af 100644
--- a/gcc/config/mips/4k.md
+++ b/gcc/config/mips/4k.md
@@ -114,13 +114,13 @@
;; Move to HI/LO -> MADD/MSUB,MFHI/MFLO has a 1 cycle latency.
(define_insn_reservation "r4k_int_mthilo" 1
(and (eq_attr "cpu" "4kc,4kp")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"r4k_ixu_arith+r4k_ixu_mpydiv")
;; Move from HI/LO -> integer operation has a 2 cycle latency.
(define_insn_reservation "r4k_int_mfhilo" 2
(and (eq_attr "cpu" "4kc,4kp")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"r4k_ixu_arith+r4k_ixu_mpydiv")
;; All other integer insns.
@@ -149,5 +149,5 @@
;; Unknown or multi - single issue
(define_insn_reservation "r4k_unknown" 1
(and (eq_attr "cpu" "4kc,4kp")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"r4k_ixu_arith+r4k_ixu_mpydiv")
diff --git a/gcc/config/mips/5400.md b/gcc/config/mips/5400.md
index 362999d7b5d..f85a311f2de 100644
--- a/gcc/config/mips/5400.md
+++ b/gcc/config/mips/5400.md
@@ -33,7 +33,7 @@
(define_insn_reservation "ir_vr54_unknown" 1
(and (eq_attr "cpu" "r5400")
- (eq_attr "type" "unknown"))
+ (eq_attr "type" "unknown,atomic,syncloop"))
"vr54_dp0+vr54_dp1+vr54_mem+vr54_mac")
;; Assume prediction fails.
@@ -73,7 +73,7 @@
(define_insn_reservation "ir_vr54_hilo" 1
(and (eq_attr "cpu" "r5400")
- (eq_attr "type" "mthilo,mfhilo"))
+ (eq_attr "type" "mthi,mtlo,mfhi,mflo"))
"vr54_dp0|vr54_dp1")
(define_insn_reservation "ir_vr54_arith" 1
diff --git a/gcc/config/mips/5500.md b/gcc/config/mips/5500.md
index 0b59af15d1e..b254a9bec67 100644
--- a/gcc/config/mips/5500.md
+++ b/gcc/config/mips/5500.md
@@ -35,7 +35,7 @@
(define_insn_reservation "ir_vr55_unknown" 1
(and (eq_attr "cpu" "r5500")
- (eq_attr "type" "unknown"))
+ (eq_attr "type" "unknown,atomic,syncloop"))
"vr55_dp0+vr55_dp1+vr55_mem+vr55_mac+vr55_fp+vr55_bru")
;; Assume prediction fails.
@@ -84,12 +84,12 @@
(define_insn_reservation "ir_vr55_mthilo" 1
(and (eq_attr "cpu" "r5500")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"vr55_mac")
(define_insn_reservation "ir_vr55_mfhilo" 5
(and (eq_attr "cpu" "r5500")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"vr55_mac")
;; The default latency is for the GPR result of a mul. Bypasses handle the
diff --git a/gcc/config/mips/5k.md b/gcc/config/mips/5k.md
index ade06ec448c..7a0689b2e43 100644
--- a/gcc/config/mips/5k.md
+++ b/gcc/config/mips/5k.md
@@ -88,13 +88,13 @@
;; Move to HI/LO -> MADD/MSUB,MFHI/MFLO has a 1 cycle latency.
(define_insn_reservation "r5k_int_mthilo" 1
(and (eq_attr "cpu" "5kc,5kf")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"r5k_ixu_arith+r5k_ixu_mpydiv")
;; Move from HI/LO -> integer operation has a 2 cycle latency.
(define_insn_reservation "r5k_int_mfhilo" 2
(and (eq_attr "cpu" "5kc,5kf")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"r5k_ixu_arith+r5k_ixu_mpydiv")
;; All other integer insns.
@@ -127,7 +127,7 @@
;; Unknown or multi - single issue
(define_insn_reservation "r5k_int_unknown" 1
(and (eq_attr "cpu" "5kc,5kf")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"r5k_ixu_arith+r5k_ixu_mpydiv")
diff --git a/gcc/config/mips/7000.md b/gcc/config/mips/7000.md
index 6c91d0472db..d7265f4fe80 100644
--- a/gcc/config/mips/7000.md
+++ b/gcc/config/mips/7000.md
@@ -134,12 +134,12 @@
;; Move to/from HI/LO.
(define_insn_reservation "rm7_mthilo" 3
(and (eq_attr "cpu" "r7000")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"rm7_impydiv")
(define_insn_reservation "rm7_mfhilo" 1
(and (eq_attr "cpu" "r7000")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"rm7_impydiv")
;; Move to/from fp coprocessor.
@@ -210,5 +210,5 @@
;; Force single-dispatch for unknown or multi.
(define_insn_reservation "rm7_unknown" 1
(and (eq_attr "cpu" "r7000")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"rm7_single_dispatch")
diff --git a/gcc/config/mips/74k.md b/gcc/config/mips/74k.md
index b75bfc4b917..721834c7d9e 100644
--- a/gcc/config/mips/74k.md
+++ b/gcc/config/mips/74k.md
@@ -80,13 +80,13 @@
;; mfhi, mflo, mflhxu - deliver result to gpr in 7 cycles
(define_insn_reservation "r74k_int_mfhilo" 7
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"r74k_alu+r74k_mul")
;; mthi, mtlo, mtlhx - deliver result to hi/lo, thence madd, handled as bypass
(define_insn_reservation "r74k_int_mthilo" 7
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"r74k_alu+r74k_mul")
;; div - default to 50 cycles for 32bit operands. Faster for 8 bit,
@@ -118,8 +118,7 @@
;; stores
(define_insn_reservation "r74k_int_store" 1
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
- (and (eq_attr "type" "store")
- (eq_attr "mode" "!unknown")))
+ (eq_attr "type" "store"))
"r74k_agen")
@@ -129,7 +128,7 @@
;;
(define_insn_reservation "r74k_unknown" 1
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
- (eq_attr "type" "unknown"))
+ (eq_attr "type" "unknown,atomic,syncloop"))
"r74k_alu")
(define_insn_reservation "r74k_multi" 10
@@ -145,25 +144,27 @@
;; load->load base: 4 cycles
;; load->store base: 4 cycles
(define_bypass 4 "r74k_int_load" "r74k_int_load")
-(define_bypass 4 "r74k_int_load" "r74k_int_store" "!store_data_bypass_p")
+(define_bypass 4 "r74k_int_load" "r74k_int_store" "!mips_store_data_bypass_p")
;; logical/move/slt/signext->next use : 1 cycles (Default)
;; logical/move/slt/signext->load base: 2 cycles
;; logical/move/slt/signext->store base: 2 cycles
(define_bypass 2 "r74k_int_logical" "r74k_int_load")
-(define_bypass 2 "r74k_int_logical" "r74k_int_store" "!store_data_bypass_p")
+(define_bypass 2 "r74k_int_logical" "r74k_int_store"
+ "!mips_store_data_bypass_p")
;; arith->next use : 2 cycles (Default)
;; arith->load base: 3 cycles
;; arith->store base: 3 cycles
(define_bypass 3 "r74k_int_arith" "r74k_int_load")
-(define_bypass 3 "r74k_int_arith" "r74k_int_store" "!store_data_bypass_p")
+(define_bypass 3 "r74k_int_arith" "r74k_int_store" "!mips_store_data_bypass_p")
;; cmove->next use : 4 cycles (Default)
;; cmove->load base: 5 cycles
;; cmove->store base: 5 cycles
(define_bypass 5 "r74k_int_cmove" "r74k_int_load")
-(define_bypass 5 "r74k_int_cmove" "r74k_int_store" "!store_data_bypass_p")
+(define_bypass 5 "r74k_int_cmove" "r74k_int_store"
+ "!mips_store_data_bypass_p")
;; mult/madd/msub->int_mfhilo : 4 cycles (default)
;; mult->madd/msub : 1 cycles
@@ -173,6 +174,88 @@
(define_bypass 1 "r74k_int_madd" "r74k_int_madd"
"mips_linked_madd_p")
+
+;; --------------------------------------------------------------
+;; DSP instructions
+;; --------------------------------------------------------------
+
+;; Non-saturating insn have the same latency as normal ALU operations,
+(define_insn_reservation "r74k_dsp_alu" 2
+ (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
+ (eq_attr "type" "dspalu"))
+ "r74k_alu")
+
+;; Saturating insn takes an extra cycle.
+(define_insn_reservation "r74k_dsp_alu_sat" 3
+ (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
+ (eq_attr "type" "dspalusat"))
+ "r74k_alu")
+
+;; dpaq_s, dpau, dpsq_s, dpsu, maq_s, mulsaq
+;; - delivers result to hi/lo in 6 cycle (bypass at M4)
+(define_insn_reservation "r74k_dsp_mac" 6
+ (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
+ (eq_attr "type" "dspmac"))
+ "r74k_alu+r74k_mul")
+
+;; dpaq_sa, dpsq_sa, maq_sa
+;; - delivers result to hi/lo in 7 cycle (bypass at WB)
+(define_insn_reservation "r74k_dsp_mac_sat" 7
+ (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
+ (eq_attr "type" "dspmacsat"))
+ "r74k_alu+r74k_mul")
+
+;; extp, extpdp, extpdpv, extpv, extr, extrv
+;; - same latency as "mul"
+(define_insn_reservation "r74k_dsp_acc_ext" 7
+ (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
+ (eq_attr "type" "accext"))
+ "r74k_alu+r74k_mul")
+
+;; mthlip, shilo, shilov
+;; - same latency as "mul"
+(define_insn_reservation "r74k_dsp_acc_mod" 7
+ (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
+ (eq_attr "type" "accmod"))
+ "r74k_alu+r74k_mul")
+
+;; dspalu ->load/store base
+;; dspalusat->load/store base
+;; - we should never see these in real life.
+
+;; dsp_mac->dsp_mac : 1 cycles (repeat rate of 1)
+;; dsp_mac->dsp_mac_sat : 1 cycles (repeat rate of 1)
+(define_bypass 1 "r74k_dsp_mac" "r74k_dsp_mac")
+(define_bypass 1 "r74k_dsp_mac" "r74k_dsp_mac_sat")
+
+;; dsp_mac_sat->dsp_mac_sat : 2 cycles (repeat rate of 2)
+;; dsp_mac_sat->dsp_mac : 2 cycles (repeat rate of 2)
+(define_bypass 2 "r74k_dsp_mac_sat" "r74k_dsp_mac_sat")
+(define_bypass 2 "r74k_dsp_mac_sat" "r74k_dsp_mac")
+
+(define_bypass 1 "r74k_int_mult" "r74k_dsp_mac")
+(define_bypass 1 "r74k_int_mult" "r74k_dsp_mac_sat")
+
+(define_bypass 1 "r74k_int_mul3" "r74k_dsp_mac" "mips_linked_madd_p")
+(define_bypass 1 "r74k_int_mul3" "r74k_dsp_mac_sat" "mips_linked_madd_p")
+
+;; Assuming the following is true (bypass at M4)
+;; AP AF AM MB M1 M2 M3 M4 WB GR GC
+;; AP AF AM MB M1 M2 M3 M4 WB GR GC
+;; dsp_mac->dsp_acc_ext : 4 cycles
+;; dsp_mac->dsp_acc_mod : 4 cycles
+(define_bypass 4 "r74k_dsp_mac" "r74k_dsp_acc_ext")
+(define_bypass 4 "r74k_dsp_mac" "r74k_dsp_acc_mod")
+
+;; Assuming the following is true (bypass at WB)
+;; AP AF AM MB M1 M2 M3 M4 WB GR GC
+;; AP AF AM MB M1 M2 M3 M4 WB GR GC
+;; dsp_mac_sat->dsp_acc_ext : 5 cycles
+;; dsp_mac_sat->dsp_acc_mod : 5 cycles
+(define_bypass 5 "r74k_dsp_mac_sat" "r74k_dsp_acc_ext")
+(define_bypass 5 "r74k_dsp_mac_sat" "r74k_dsp_acc_mod")
+
+
;; --------------------------------------------------------------
;; Floating Point Instructions
;; --------------------------------------------------------------
diff --git a/gcc/config/mips/9000.md b/gcc/config/mips/9000.md
index c0c8d3ac822..09f55b4783c 100644
--- a/gcc/config/mips/9000.md
+++ b/gcc/config/mips/9000.md
@@ -87,12 +87,12 @@
(define_insn_reservation "rm9k_mfhilo" 1
(and (eq_attr "cpu" "r9000")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"rm9k_f_int")
(define_insn_reservation "rm9k_mthilo" 5
(and (eq_attr "cpu" "r9000")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"rm9k_f_int")
(define_insn_reservation "rm9k_xfer" 2
@@ -147,5 +147,5 @@
(define_insn_reservation "rm9k_unknown" 1
(and (eq_attr "cpu" "r9000")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"rm9k_m + rm9k_f_int + rm9k_any1 + rm9k_any2")
diff --git a/gcc/config/mips/generic.md b/gcc/config/mips/generic.md
index d61511f33d6..c197ecff34e 100644
--- a/gcc/config/mips/generic.md
+++ b/gcc/config/mips/generic.md
@@ -43,7 +43,7 @@
"alu")
(define_insn_reservation "generic_hilo" 1
- (eq_attr "type" "mfhilo,mthilo")
+ (eq_attr "type" "mfhi,mflo,mthi,mtlo")
"imuldiv*3")
(define_insn_reservation "generic_imul" 17
@@ -103,3 +103,19 @@
(define_insn_reservation "generic_frecip_fsqrt_step" 5
(eq_attr "type" "frdiv1,frdiv2,frsqrt1,frsqrt2")
"alu")
+
+(define_insn_reservation "generic_atomic" 10
+ (eq_attr "type" "atomic")
+ "alu")
+
+;; Sync loop consists of (in order)
+;; (1) optional sync,
+;; (2) LL instruction,
+;; (3) branch and 1-2 ALU instructions,
+;; (4) SC instruction,
+;; (5) branch and ALU instruction.
+;; The net result of this reservation is a big delay with a flush of
+;; ALU pipeline.
+(define_insn_reservation "generic_sync_loop" 40
+ (eq_attr "type" "syncloop")
+ "alu*39")
diff --git a/gcc/config/mips/loongson2ef.md b/gcc/config/mips/loongson2ef.md
index fa5ae7e9fe8..ef9dd3899a8 100644
--- a/gcc/config/mips/loongson2ef.md
+++ b/gcc/config/mips/loongson2ef.md
@@ -98,7 +98,7 @@
;; ls2_[f]alu{1,2}_turn_enabled units according to this attribute.
;; These instructions are used in mips.c: sched_ls2_dfa_post_advance_cycle.
-(define_attr "ls2_turn_type" "alu1,alu2,falu1,falu2,unknown"
+(define_attr "ls2_turn_type" "alu1,alu2,falu1,falu2,unknown,atomic,syncloop"
(const_string "unknown"))
;; Subscribe ls2_alu1_turn_enabled.
@@ -154,8 +154,8 @@
;; Reservation for integer instructions.
(define_insn_reservation "ls2_alu" 2
(and (eq_attr "cpu" "loongson_2e,loongson_2f")
- (eq_attr "type" "arith,condmove,const,logical,mfhilo,move,
- mthilo,nop,shift,signext,slt"))
+ (eq_attr "type" "arith,condmove,const,logical,mfhi,mflo,move,
+ mthi,mtlo,nop,shift,signext,slt"))
"ls2_alu")
;; Reservation for branch instructions.
diff --git a/gcc/config/mips/loongson3a.md b/gcc/config/mips/loongson3a.md
index c584f42f0e0..f1f87629e21 100644
--- a/gcc/config/mips/loongson3a.md
+++ b/gcc/config/mips/loongson3a.md
@@ -53,7 +53,7 @@
(define_insn_reservation "ls3a_mfhilo" 1
(and (eq_attr "cpu" "loongson_3a")
- (eq_attr "type" "mfhilo,mthilo"))
+ (eq_attr "type" "mfhi,mflo,mthi,mtlo"))
"ls3a_alu2")
;; Operation imul3nc is fully pipelined.
@@ -131,7 +131,7 @@
;; Force single-dispatch for unknown or multi.
(define_insn_reservation "ls3a_unknown" 1
(and (eq_attr "cpu" "loongson_3a")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"ls3a_alu1 + ls3a_alu2 + ls3a_falu1 + ls3a_falu2 + ls3a_mem")
;; End of DFA-based pipeline description for loongson_3a
diff --git a/gcc/config/mips/mips-cpus.def b/gcc/config/mips/mips-cpus.def
index 356d3e543b2..e8dc5a7a036 100644
--- a/gcc/config/mips/mips-cpus.def
+++ b/gcc/config/mips/mips-cpus.def
@@ -120,6 +120,7 @@ MIPS_CPU ("34kf", PROCESSOR_24KF2_1, 33, 0)
MIPS_CPU ("34kf1_1", PROCESSOR_24KF1_1, 33, 0)
MIPS_CPU ("34kfx", PROCESSOR_24KF1_1, 33, 0)
MIPS_CPU ("34kx", PROCESSOR_24KF1_1, 33, 0)
+MIPS_CPU ("34kn", PROCESSOR_24KC, 33, 0) /* 34K with MT but no DSP. */
MIPS_CPU ("74kc", PROCESSOR_74KC, 33, 0) /* 74K with DSPr2. */
MIPS_CPU ("74kf2_1", PROCESSOR_74KF2_1, 33, 0)
@@ -141,7 +142,7 @@ MIPS_CPU ("20kc", PROCESSOR_20KC, 64, PTF_AVOID_BRANCHLIKELY)
MIPS_CPU ("sb1", PROCESSOR_SB1, 64, PTF_AVOID_BRANCHLIKELY)
MIPS_CPU ("sb1a", PROCESSOR_SB1A, 64, PTF_AVOID_BRANCHLIKELY)
MIPS_CPU ("sr71000", PROCESSOR_SR71000, 64, PTF_AVOID_BRANCHLIKELY)
-MIPS_CPU ("xlr", PROCESSOR_XLR, 64, 0)
+MIPS_CPU ("xlr", PROCESSOR_XLR, 64, PTF_AVOID_BRANCHLIKELY)
MIPS_CPU ("loongson3a", PROCESSOR_LOONGSON_3A, 64, PTF_AVOID_BRANCHLIKELY)
/* MIPS64 Release 2 processors. */
diff --git a/gcc/config/mips/mips-dsp.md b/gcc/config/mips/mips-dsp.md
index 1b60ad23c59..4d9bcd52e44 100644
--- a/gcc/config/mips/mips-dsp.md
+++ b/gcc/config/mips/mips-dsp.md
@@ -135,7 +135,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ))])]
"ISA_HAS_DSP"
"add<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>"
@@ -148,7 +148,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ_S))])]
"ISA_HAS_DSP"
"add<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
;; SUBQ*
@@ -161,7 +161,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ))])]
"ISA_HAS_DSP"
"sub<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>"
@@ -174,7 +174,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ_S))])]
"ISA_HAS_DSP"
"sub<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
;; ADDSC
@@ -188,7 +188,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDSC))])]
"ISA_HAS_DSP"
"addsc\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; ADDWC
@@ -203,7 +203,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDWC))])]
"ISA_HAS_DSP"
"addwc\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; MODSUB
@@ -214,7 +214,7 @@
UNSPEC_MODSUB))]
"ISA_HAS_DSP"
"modsub\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; RADDU*
@@ -224,7 +224,7 @@
UNSPEC_RADDU_W_QB))]
"ISA_HAS_DSP"
"raddu.w.qb\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; ABSQ*
@@ -237,7 +237,7 @@
(unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S))])]
"ISA_HAS_DSP"
"absq_s.<DSPQ:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
;; PRECRQ*
@@ -248,7 +248,7 @@
UNSPEC_PRECRQ_QB_PH))]
"ISA_HAS_DSP"
"precrq.qb.ph\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_precrq_ph_w"
@@ -258,7 +258,7 @@
UNSPEC_PRECRQ_PH_W))]
"ISA_HAS_DSP"
"precrq.ph.w\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_precrq_rs_ph_w"
@@ -272,7 +272,7 @@
UNSPEC_PRECRQ_RS_PH_W))])]
"ISA_HAS_DSP"
"precrq_rs.ph.w\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; PRECRQU*
@@ -287,7 +287,7 @@
UNSPEC_PRECRQU_S_QB_PH))])]
"ISA_HAS_DSP"
"precrqu_s.qb.ph\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
;; PRECEQ*
@@ -297,7 +297,7 @@
UNSPEC_PRECEQ_W_PHL))]
"ISA_HAS_DSP"
"preceq.w.phl\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_preceq_w_phr"
@@ -306,7 +306,7 @@
UNSPEC_PRECEQ_W_PHR))]
"ISA_HAS_DSP"
"preceq.w.phr\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; PRECEQU*
@@ -316,7 +316,7 @@
UNSPEC_PRECEQU_PH_QBL))]
"ISA_HAS_DSP"
"precequ.ph.qbl\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_precequ_ph_qbr"
@@ -325,7 +325,7 @@
UNSPEC_PRECEQU_PH_QBR))]
"ISA_HAS_DSP"
"precequ.ph.qbr\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_precequ_ph_qbla"
@@ -334,7 +334,7 @@
UNSPEC_PRECEQU_PH_QBLA))]
"ISA_HAS_DSP"
"precequ.ph.qbla\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_precequ_ph_qbra"
@@ -343,7 +343,7 @@
UNSPEC_PRECEQU_PH_QBRA))]
"ISA_HAS_DSP"
"precequ.ph.qbra\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; PRECEU*
@@ -353,7 +353,7 @@
UNSPEC_PRECEU_PH_QBL))]
"ISA_HAS_DSP"
"preceu.ph.qbl\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_preceu_ph_qbr"
@@ -362,7 +362,7 @@
UNSPEC_PRECEU_PH_QBR))]
"ISA_HAS_DSP"
"preceu.ph.qbr\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_preceu_ph_qbla"
@@ -371,7 +371,7 @@
UNSPEC_PRECEU_PH_QBLA))]
"ISA_HAS_DSP"
"preceu.ph.qbla\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_preceu_ph_qbra"
@@ -380,7 +380,7 @@
UNSPEC_PRECEU_PH_QBRA))]
"ISA_HAS_DSP"
"preceu.ph.qbra\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; Table 2-2. MIPS DSP ASE Instructions: Shift
@@ -404,7 +404,7 @@
}
return "shllv.<DSPV:dspfmt2>\t%0,%1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_shll_s_<DSPQ:dspfmt2>"
@@ -426,7 +426,7 @@
}
return "shllv_s.<DSPQ:dspfmt2>\t%0,%1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
;; SHRL*
@@ -445,7 +445,7 @@
}
return "shrlv.qb\t%0,%1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; SHRA*
@@ -464,7 +464,7 @@
}
return "shrav.ph\t%0,%1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_shra_r_<DSPQ:dspfmt2>"
@@ -483,7 +483,7 @@
}
return "shrav_r.<DSPQ:dspfmt2>\t%0,%1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; Table 2-3. MIPS DSP ASE Instructions: Multiply
@@ -569,7 +569,8 @@
UNSPEC_DPAU_H_QBL))]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpau.h.qbl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dpau_h_qbr"
@@ -580,7 +581,8 @@
UNSPEC_DPAU_H_QBR))]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpau.h.qbr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; DPSU*
@@ -592,7 +594,8 @@
UNSPEC_DPSU_H_QBL))]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpsu.h.qbl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dpsu_h_qbr"
@@ -603,7 +606,8 @@
UNSPEC_DPSU_H_QBR))]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpsu.h.qbr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; DPAQ*
@@ -619,7 +623,8 @@
UNSPEC_DPAQ_S_W_PH))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpaq_s.w.ph\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; DPSQ*
@@ -635,7 +640,8 @@
UNSPEC_DPSQ_S_W_PH))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpsq_s.w.ph\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; MULSAQ*
@@ -651,7 +657,8 @@
UNSPEC_MULSAQ_S_W_PH))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"mulsaq_s.w.ph\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; DPAQ*
@@ -667,7 +674,8 @@
UNSPEC_DPAQ_SA_L_W))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpaq_sa.l.w\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmacsat")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; DPSQ*
@@ -683,7 +691,8 @@
UNSPEC_DPSQ_SA_L_W))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"dpsq_sa.l.w\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmacsat")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; MAQ*
@@ -699,7 +708,8 @@
UNSPEC_MAQ_S_W_PHL))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"maq_s.w.phl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_maq_s_w_phr"
@@ -714,7 +724,8 @@
UNSPEC_MAQ_S_W_PHR))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"maq_s.w.phr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; MAQ_SA*
@@ -730,7 +741,8 @@
UNSPEC_MAQ_SA_W_PHL))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"maq_sa.w.phl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmacsat")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_maq_sa_w_phr"
@@ -745,7 +757,8 @@
UNSPEC_MAQ_SA_W_PHR))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"maq_sa.w.phr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmacsat")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; Table 2-4. MIPS DSP ASE Instructions: General Bit/Manipulation
@@ -756,7 +769,7 @@
UNSPEC_BITREV))]
"ISA_HAS_DSP"
"bitrev\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; INSV
@@ -769,7 +782,7 @@
UNSPEC_INSV))]
"ISA_HAS_DSP"
"insv\t%0,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; REPL*
@@ -787,7 +800,7 @@
}
return "replv.qb\t%0,%1";
}
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_repl_ph"
@@ -798,7 +811,7 @@
"@
repl.ph\t%0,%1
replv.ph\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; Table 2-5. MIPS DSP ASE Instructions: Compare-Pick
@@ -811,7 +824,7 @@
UNSPEC_CMP_EQ))]
"ISA_HAS_DSP"
"cmp<DSPV:dspfmt1_1>.eq.<DSPV:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>"
@@ -822,7 +835,7 @@
UNSPEC_CMP_LT))]
"ISA_HAS_DSP"
"cmp<DSPV:dspfmt1_1>.lt.<DSPV:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>"
@@ -833,7 +846,7 @@
UNSPEC_CMP_LE))]
"ISA_HAS_DSP"
"cmp<DSPV:dspfmt1_1>.le.<DSPV:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmpgu_eq_qb"
@@ -843,7 +856,7 @@
UNSPEC_CMPGU_EQ_QB))]
"ISA_HAS_DSP"
"cmpgu.eq.qb\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmpgu_lt_qb"
@@ -853,7 +866,7 @@
UNSPEC_CMPGU_LT_QB))]
"ISA_HAS_DSP"
"cmpgu.lt.qb\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmpgu_le_qb"
@@ -863,7 +876,7 @@
UNSPEC_CMPGU_LE_QB))]
"ISA_HAS_DSP"
"cmpgu.le.qb\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; PICK*
@@ -875,7 +888,7 @@
UNSPEC_PICK))]
"ISA_HAS_DSP"
"pick.<DSPV:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; PACKRL*
@@ -886,7 +899,7 @@
UNSPEC_PACKRL_PH))]
"ISA_HAS_DSP"
"packrl.ph\t%0,%1,%2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; Table 2-6. MIPS DSP ASE Instructions: Accumulator and DSPControl Access
@@ -909,7 +922,7 @@
}
return "extrv.w\t%0,%q1,%2";
}
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accext")
(set_attr "mode" "SI")])
(define_insn "mips_extr_r_w"
@@ -930,7 +943,7 @@
}
return "extrv_r.w\t%0,%q1,%2";
}
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accext")
(set_attr "mode" "SI")])
(define_insn "mips_extr_rs_w"
@@ -951,7 +964,7 @@
}
return "extrv_rs.w\t%0,%q1,%2";
}
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accext")
(set_attr "mode" "SI")])
;; EXTR*_S.H
@@ -973,7 +986,7 @@
}
return "extrv_s.h\t%0,%q1,%2";
}
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accext")
(set_attr "mode" "SI")])
;; EXTP*
@@ -996,7 +1009,7 @@
}
return "extpv\t%0,%q1,%2";
}
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accext")
(set_attr "mode" "SI")])
(define_insn "mips_extpdp"
@@ -1021,7 +1034,7 @@
}
return "extpdpv\t%0,%q1,%2";
}
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accext")
(set_attr "mode" "SI")])
;; SHILO*
@@ -1040,7 +1053,7 @@
}
return "shilov\t%q0,%2";
}
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accmod")
(set_attr "mode" "SI")])
;; MTHLIP*
@@ -1056,7 +1069,7 @@
(reg:CCDSP CCDSP_PO_REGNUM)] UNSPEC_MTHLIP))])]
"ISA_HAS_DSP && !TARGET_64BIT"
"mthlip\t%2,%q0"
- [(set_attr "type" "mfhilo")
+ [(set_attr "type" "accmod")
(set_attr "mode" "SI")])
;; WRDSP
@@ -1078,7 +1091,7 @@
(unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))])]
"ISA_HAS_DSP"
"wrdsp\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; RDDSP
@@ -1094,7 +1107,7 @@
UNSPEC_RDDSP))]
"ISA_HAS_DSP"
"rddsp\t%0,%1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
;; Table 2-7. MIPS DSP ASE Instructions: Indexed-Load
diff --git a/gcc/config/mips/mips-dspr2.md b/gcc/config/mips/mips-dspr2.md
index 108f51be6c0..0d025809907 100644
--- a/gcc/config/mips/mips-dspr2.md
+++ b/gcc/config/mips/mips-dspr2.md
@@ -79,7 +79,7 @@
(unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])]
"ISA_HAS_DSPR2"
"absq_s.qb\t%0,%z1"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
(define_insn "mips_addu_ph"
@@ -91,7 +91,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])]
"ISA_HAS_DSPR2"
"addu.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_addu_s_ph"
@@ -104,7 +104,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])]
"ISA_HAS_DSPR2"
"addu_s.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
(define_insn "mips_adduh_qb"
@@ -114,7 +114,7 @@
UNSPEC_ADDUH_QB))]
"ISA_HAS_DSPR2"
"adduh.qb\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_adduh_r_qb"
@@ -124,7 +124,7 @@
UNSPEC_ADDUH_R_QB))]
"ISA_HAS_DSPR2"
"adduh_r.qb\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
(define_insn "mips_append"
@@ -139,7 +139,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
return "append\t%0,%z2,%3";
}
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_balign"
@@ -154,7 +154,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 3);
return "balign\t%0,%z2,%3";
}
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmpgdu_eq_qb"
@@ -169,7 +169,7 @@
UNSPEC_CMPGDU_EQ_QB))])]
"ISA_HAS_DSPR2"
"cmpgdu.eq.qb\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmpgdu_lt_qb"
@@ -184,7 +184,7 @@
UNSPEC_CMPGDU_LT_QB))])]
"ISA_HAS_DSPR2"
"cmpgdu.lt.qb\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_cmpgdu_le_qb"
@@ -199,7 +199,7 @@
UNSPEC_CMPGDU_LE_QB))])]
"ISA_HAS_DSPR2"
"cmpgdu.le.qb\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_dpa_w_ph"
@@ -210,7 +210,8 @@
UNSPEC_DPA_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpa.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dps_w_ph"
@@ -221,7 +222,8 @@
UNSPEC_DPS_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dps.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mulv2hi3"
@@ -301,7 +303,8 @@
UNSPEC_MULSA_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"mulsa.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_precr_qb_ph"
@@ -311,7 +314,7 @@
UNSPEC_PRECR_QB_PH))]
"ISA_HAS_DSPR2"
"precr.qb.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_precr_sra_ph_w"
@@ -326,7 +329,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
return "precr_sra.ph.w\t%0,%z2,%3";
}
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_precr_sra_r_ph_w"
@@ -341,7 +344,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
return "precr_sra_r.ph.w\t%0,%z2,%3";
}
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_prepend"
@@ -356,7 +359,7 @@
operands[3] = GEN_INT (INTVAL (operands[3]) & 31);
return "prepend\t%0,%z2,%3";
}
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_shra_qb"
@@ -374,7 +377,7 @@
}
return "shrav.qb\t%0,%z1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
@@ -393,7 +396,7 @@
}
return "shrav_r.qb\t%0,%z1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_shrl_ph"
@@ -411,7 +414,7 @@
}
return "shrlv.ph\t%0,%z1,%2";
}
- [(set_attr "type" "shift")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_subu_ph"
@@ -424,7 +427,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])]
"ISA_HAS_DSPR2"
"subu.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_subu_s_ph"
@@ -437,7 +440,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])]
"ISA_HAS_DSPR2"
"subu_s.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")])
(define_insn "mips_subuh_qb"
@@ -447,7 +450,7 @@
UNSPEC_SUBUH_QB))]
"ISA_HAS_DSPR2"
"subuh.qb\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_subuh_r_qb"
@@ -457,7 +460,7 @@
UNSPEC_SUBUH_R_QB))]
"ISA_HAS_DSPR2"
"subuh_r.qb\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_addqh_ph"
@@ -467,7 +470,7 @@
UNSPEC_ADDQH_PH))]
"ISA_HAS_DSPR2"
"addqh.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_addqh_r_ph"
@@ -477,7 +480,7 @@
UNSPEC_ADDQH_R_PH))]
"ISA_HAS_DSPR2"
"addqh_r.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_addqh_w"
@@ -487,7 +490,7 @@
UNSPEC_ADDQH_W))]
"ISA_HAS_DSPR2"
"addqh.w\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_addqh_r_w"
@@ -497,7 +500,7 @@
UNSPEC_ADDQH_R_W))]
"ISA_HAS_DSPR2"
"addqh_r.w\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_subqh_ph"
@@ -507,7 +510,7 @@
UNSPEC_SUBQH_PH))]
"ISA_HAS_DSPR2"
"subqh.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_subqh_r_ph"
@@ -517,7 +520,7 @@
UNSPEC_SUBQH_R_PH))]
"ISA_HAS_DSPR2"
"subqh_r.ph\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_subqh_w"
@@ -527,7 +530,7 @@
UNSPEC_SUBQH_W))]
"ISA_HAS_DSPR2"
"subqh.w\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_subqh_r_w"
@@ -537,7 +540,7 @@
UNSPEC_SUBQH_R_W))]
"ISA_HAS_DSPR2"
"subqh_r.w\t%0,%z1,%z2"
- [(set_attr "type" "arith")
+ [(set_attr "type" "dspalu")
(set_attr "mode" "SI")])
(define_insn "mips_dpax_w_ph"
@@ -548,7 +551,8 @@
UNSPEC_DPAX_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpax.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dpsx_w_ph"
@@ -559,7 +563,8 @@
UNSPEC_DPSX_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpsx.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dpaqx_s_w_ph"
@@ -574,7 +579,8 @@
UNSPEC_DPAQX_S_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpaqx_s.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dpaqx_sa_w_ph"
@@ -589,7 +595,8 @@
UNSPEC_DPAQX_SA_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpaqx_sa.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmacsat")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dpsqx_s_w_ph"
@@ -604,7 +611,8 @@
UNSPEC_DPSQX_S_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpsqx_s.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmac")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
(define_insn "mips_dpsqx_sa_w_ph"
@@ -619,5 +627,6 @@
UNSPEC_DPSQX_SA_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpsqx_sa.w.ph\t%q0,%z2,%z3"
- [(set_attr "type" "imadd")
+ [(set_attr "type" "dspmacsat")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
diff --git a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h
index d1fa160ff1c..2584bc76c8e 100644
--- a/gcc/config/mips/mips-protos.h
+++ b/gcc/config/mips/mips-protos.h
@@ -190,6 +190,7 @@ extern rtx mips_pic_base_register (rtx);
extern rtx mips_got_load (rtx, rtx, enum mips_symbol_type);
extern bool mips_split_symbol (rtx, rtx, enum machine_mode, rtx *);
extern rtx mips_unspec_address (rtx, enum mips_symbol_type);
+extern rtx mips_strip_unspec_address (rtx);
extern void mips_move_integer (rtx, rtx, unsigned HOST_WIDE_INT);
extern bool mips_legitimize_move (enum machine_mode, rtx, rtx);
@@ -241,7 +242,7 @@ extern bool mips_pad_arg_upward (enum machine_mode, const_tree);
extern bool mips_pad_reg_upward (enum machine_mode, tree);
extern bool mips_expand_ext_as_unaligned_load (rtx, rtx, HOST_WIDE_INT,
- HOST_WIDE_INT);
+ HOST_WIDE_INT, bool);
extern bool mips_expand_ins_as_unaligned_store (rtx, rtx, HOST_WIDE_INT,
HOST_WIDE_INT);
extern bool mips_mem_fits_mode_p (enum machine_mode mode, rtx x);
@@ -297,6 +298,7 @@ extern const char *mips_output_division (const char *, rtx *);
extern unsigned int mips_hard_regno_nregs (int, enum machine_mode);
extern bool mips_linked_madd_p (rtx, rtx);
extern bool mips_store_data_bypass_p (rtx, rtx);
+extern int mips_dspalu_bypass_p (rtx, rtx);
extern rtx mips_prefetch_cookie (rtx, rtx);
extern const char *current_section_name (void);
diff --git a/gcc/config/mips/mips-tables.opt b/gcc/config/mips/mips-tables.opt
index 75e742ea43b..3f21bcb3910 100644
--- a/gcc/config/mips/mips-tables.opt
+++ b/gcc/config/mips/mips-tables.opt
@@ -505,116 +505,122 @@ EnumValue
Enum(mips_arch_opt_value) String(r34kx) Value(61)
EnumValue
-Enum(mips_arch_opt_value) String(74kc) Value(62) Canonical
+Enum(mips_arch_opt_value) String(34kn) Value(62) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r74kc) Value(62)
+Enum(mips_arch_opt_value) String(r34kn) Value(62)
EnumValue
-Enum(mips_arch_opt_value) String(74kf2_1) Value(63) Canonical
+Enum(mips_arch_opt_value) String(74kc) Value(63) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r74kf2_1) Value(63)
+Enum(mips_arch_opt_value) String(r74kc) Value(63)
EnumValue
-Enum(mips_arch_opt_value) String(74kf) Value(64) Canonical
+Enum(mips_arch_opt_value) String(74kf2_1) Value(64) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r74kf) Value(64)
+Enum(mips_arch_opt_value) String(r74kf2_1) Value(64)
EnumValue
-Enum(mips_arch_opt_value) String(74kf1_1) Value(65) Canonical
+Enum(mips_arch_opt_value) String(74kf) Value(65) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r74kf1_1) Value(65)
+Enum(mips_arch_opt_value) String(r74kf) Value(65)
EnumValue
-Enum(mips_arch_opt_value) String(74kfx) Value(66) Canonical
+Enum(mips_arch_opt_value) String(74kf1_1) Value(66) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r74kfx) Value(66)
+Enum(mips_arch_opt_value) String(r74kf1_1) Value(66)
EnumValue
-Enum(mips_arch_opt_value) String(74kx) Value(67) Canonical
+Enum(mips_arch_opt_value) String(74kfx) Value(67) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r74kx) Value(67)
+Enum(mips_arch_opt_value) String(r74kfx) Value(67)
EnumValue
-Enum(mips_arch_opt_value) String(74kf3_2) Value(68) Canonical
+Enum(mips_arch_opt_value) String(74kx) Value(68) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r74kf3_2) Value(68)
+Enum(mips_arch_opt_value) String(r74kx) Value(68)
EnumValue
-Enum(mips_arch_opt_value) String(1004kc) Value(69) Canonical
+Enum(mips_arch_opt_value) String(74kf3_2) Value(69) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r1004kc) Value(69)
+Enum(mips_arch_opt_value) String(r74kf3_2) Value(69)
EnumValue
-Enum(mips_arch_opt_value) String(1004kf2_1) Value(70) Canonical
+Enum(mips_arch_opt_value) String(1004kc) Value(70) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r1004kf2_1) Value(70)
+Enum(mips_arch_opt_value) String(r1004kc) Value(70)
EnumValue
-Enum(mips_arch_opt_value) String(1004kf) Value(71) Canonical
+Enum(mips_arch_opt_value) String(1004kf2_1) Value(71) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r1004kf) Value(71)
+Enum(mips_arch_opt_value) String(r1004kf2_1) Value(71)
EnumValue
-Enum(mips_arch_opt_value) String(1004kf1_1) Value(72) Canonical
+Enum(mips_arch_opt_value) String(1004kf) Value(72) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r1004kf1_1) Value(72)
+Enum(mips_arch_opt_value) String(r1004kf) Value(72)
EnumValue
-Enum(mips_arch_opt_value) String(5kc) Value(73) Canonical
+Enum(mips_arch_opt_value) String(1004kf1_1) Value(73) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r5kc) Value(73)
+Enum(mips_arch_opt_value) String(r1004kf1_1) Value(73)
EnumValue
-Enum(mips_arch_opt_value) String(5kf) Value(74) Canonical
+Enum(mips_arch_opt_value) String(5kc) Value(74) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r5kf) Value(74)
+Enum(mips_arch_opt_value) String(r5kc) Value(74)
EnumValue
-Enum(mips_arch_opt_value) String(20kc) Value(75) Canonical
+Enum(mips_arch_opt_value) String(5kf) Value(75) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(r20kc) Value(75)
+Enum(mips_arch_opt_value) String(r5kf) Value(75)
EnumValue
-Enum(mips_arch_opt_value) String(sb1) Value(76) Canonical
+Enum(mips_arch_opt_value) String(20kc) Value(76) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(sb1a) Value(77) Canonical
+Enum(mips_arch_opt_value) String(r20kc) Value(76)
EnumValue
-Enum(mips_arch_opt_value) String(sr71000) Value(78) Canonical
+Enum(mips_arch_opt_value) String(sb1) Value(77) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(sr71k) Value(78)
+Enum(mips_arch_opt_value) String(sb1a) Value(78) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(xlr) Value(79) Canonical
+Enum(mips_arch_opt_value) String(sr71000) Value(79) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(loongson3a) Value(80) Canonical
+Enum(mips_arch_opt_value) String(sr71k) Value(79)
EnumValue
-Enum(mips_arch_opt_value) String(octeon) Value(81) Canonical
+Enum(mips_arch_opt_value) String(xlr) Value(80) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(octeon+) Value(82) Canonical
+Enum(mips_arch_opt_value) String(loongson3a) Value(81) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(octeon2) Value(83) Canonical
+Enum(mips_arch_opt_value) String(octeon) Value(82) Canonical
EnumValue
-Enum(mips_arch_opt_value) String(xlp) Value(84) Canonical
+Enum(mips_arch_opt_value) String(octeon+) Value(83) Canonical
+
+EnumValue
+Enum(mips_arch_opt_value) String(octeon2) Value(84) Canonical
+
+EnumValue
+Enum(mips_arch_opt_value) String(xlp) Value(85) Canonical
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 7356ce541f0..7721a7c1ce1 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -321,6 +321,10 @@ struct GTY(()) mips_frame_info {
};
struct GTY(()) machine_function {
+ /* The next floating-point condition-code register to allocate
+ for ISA_HAS_8CC targets, relative to ST_REG_FIRST. */
+ unsigned int next_fcc;
+
/* The register returned by mips16_gp_pseudo_reg; see there for details. */
rtx mips16_gp_pseudo_rtx;
@@ -2563,7 +2567,7 @@ mips_unspec_address (rtx address, enum mips_symbol_type symbol_type)
/* If OP is an UNSPEC address, return the address to which it refers,
otherwise return OP itself. */
-static rtx
+rtx
mips_strip_unspec_address (rtx op)
{
rtx base, offset;
@@ -3677,6 +3681,18 @@ mips_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
+ set_src_cost (XEXP (x, 0), speed));
return true;
}
+ if (ISA_HAS_CINS && CONST_INT_P (XEXP (x, 1)))
+ {
+ rtx op = XEXP (x, 0);
+ if (GET_CODE (op) == ASHIFT
+ && CONST_INT_P (XEXP (op, 1))
+ && mask_low_and_shift_p (mode, XEXP (x, 1), XEXP (op, 1), 32))
+ {
+ *total = COSTS_N_INSNS (1) + set_src_cost (XEXP (op, 0), speed);
+ return true;
+ }
+ }
+
/* Fall through. */
case IOR:
@@ -3825,7 +3841,7 @@ mips_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
? mips_cost->int_mult_si * 3 + 6
: COSTS_N_INSNS (ISA_HAS_MUL3 ? 7 : 9));
else if (!speed)
- *total = (ISA_HAS_MUL3 ? 1 : 2);
+ *total = COSTS_N_INSNS (ISA_HAS_MUL3 ? 1 : 2);
else if (mode == DImode)
*total = mips_cost->int_mult_di;
else
@@ -3971,7 +3987,8 @@ mips_multi_start (void)
static struct mips_multi_member *
mips_multi_add (void)
{
- return VEC_safe_push (mips_multi_member, heap, mips_multi_members, 0);
+ return VEC_safe_push (mips_multi_member, heap, mips_multi_members,
+ (struct mips_multi_member *) 0);
}
/* Add a normal insn with the given asm format to the current multi-insn
@@ -4026,7 +4043,7 @@ mips_multi_copy_insn (unsigned int i)
struct mips_multi_member *member;
member = mips_multi_add ();
- memcpy (member, VEC_index (mips_multi_member, mips_multi_members, i),
+ memcpy (member, &VEC_index (mips_multi_member, mips_multi_members, i),
sizeof (*member));
gcc_assert (!member->is_label_p);
}
@@ -4038,7 +4055,7 @@ mips_multi_copy_insn (unsigned int i)
static void
mips_multi_set_operand (unsigned int i, unsigned int op, rtx x)
{
- VEC_index (mips_multi_member, mips_multi_members, i)->operands[op] = x;
+ VEC_index (mips_multi_member, mips_multi_members, i).operands[op] = x;
}
/* Write out the asm code for the current multi-insn sequence. */
@@ -4271,9 +4288,6 @@ mips_output_move (rtx dest, rtx src)
retval[4] = COPNUM_AS_CHAR_FROM_REGNUM (REGNO (src));
return dbl_p ? retval : retval + 1;
}
-
- if (ST_REG_P (REGNO (src)) && ISA_HAS_8CC)
- return "lui\t%0,0x3f80\n\tmovf\t%0,%.,%1";
}
if (src_code == MEM)
@@ -4514,6 +4528,63 @@ mips_reversed_fp_cond (enum rtx_code *code)
}
}
+/* Allocate a floating-point condition-code register of mode MODE.
+
+ These condition code registers are used for certain kinds
+ of compound operation, such as compare and branches, vconds,
+ and built-in functions. At expand time, their use is entirely
+ controlled by MIPS-specific code and is entirely internal
+ to these compound operations.
+
+ We could (and did in the past) expose condition-code values
+ as pseudo registers and leave the register allocator to pick
+ appropriate registers. The problem is that it is not practically
+ possible for the rtl optimizers to guarantee that no spills will
+ be needed, even when AVOID_CCMODE_COPIES is defined. We would
+ therefore need spill and reload sequences to handle the worst case.
+
+ Although such sequences do exist, they are very expensive and are
+ not something we'd want to use. This is especially true of CCV2 and
+ CCV4, where all the shuffling would greatly outweigh whatever benefit
+ the vectorization itself provides.
+
+ The main benefit of having more than one condition-code register
+ is to allow the pipelining of operations, especially those involving
+ comparisons and conditional moves. We don't really expect the
+ registers to be live for long periods, and certainly never want
+ them to be live across calls.
+
+ Also, there should be no penalty attached to using all the available
+ registers. They are simply bits in the same underlying FPU control
+ register.
+
+ We therefore expose the hardware registers from the outset and use
+ a simple round-robin allocation scheme. */
+
+static rtx
+mips_allocate_fcc (enum machine_mode mode)
+{
+ unsigned int regno, count;
+
+ gcc_assert (TARGET_HARD_FLOAT && ISA_HAS_8CC);
+
+ if (mode == CCmode)
+ count = 1;
+ else if (mode == CCV2mode)
+ count = 2;
+ else if (mode == CCV4mode)
+ count = 4;
+ else
+ gcc_unreachable ();
+
+ cfun->machine->next_fcc += -cfun->machine->next_fcc & (count - 1);
+ if (cfun->machine->next_fcc > ST_REG_LAST - ST_REG_FIRST)
+ cfun->machine->next_fcc = 0;
+ regno = ST_REG_FIRST + cfun->machine->next_fcc;
+ cfun->machine->next_fcc += count;
+ return gen_rtx_REG (mode, regno);
+}
+
/* Convert a comparison into something that can be used in a branch or
conditional move. On entry, *OP0 and *OP1 are the values being
compared and *CODE is the code used to compare them.
@@ -4577,7 +4648,7 @@ mips_emit_compare (enum rtx_code *code, rtx *op0, rtx *op1, bool need_eq_ne_p)
cmp_code = *code;
*code = mips_reversed_fp_cond (&cmp_code) ? EQ : NE;
*op0 = (ISA_HAS_8CC
- ? gen_reg_rtx (CCmode)
+ ? mips_allocate_fcc (CCmode)
: gen_rtx_REG (CCmode, FPSW_REGNUM));
*op1 = const0_rtx;
mips_emit_binary (cmp_code, *op0, cmp_op0, cmp_op1);
@@ -4644,7 +4715,7 @@ mips_expand_vcondv2sf (rtx dest, rtx true_src, rtx false_src,
bool reversed_p;
reversed_p = mips_reversed_fp_cond (&cond);
- cmp_result = gen_reg_rtx (CCV2mode);
+ cmp_result = mips_allocate_fcc (CCV2mode);
emit_insn (gen_scc_ps (cmp_result,
gen_rtx_fmt_ee (cond, VOIDmode, cmp_op0, cmp_op1)));
if (reversed_p)
@@ -6916,7 +6987,7 @@ mips_block_move_straight (rtx dest, rtx src, HOST_WIDE_INT length)
else
{
rtx part = adjust_address (src, BLKmode, offset);
- if (!mips_expand_ext_as_unaligned_load (regs[i], part, bits, 0))
+ if (!mips_expand_ext_as_unaligned_load (regs[i], part, bits, 0, 0))
gcc_unreachable ();
}
}
@@ -7217,9 +7288,10 @@ mips_get_unaligned_mem (rtx *op, HOST_WIDE_INT width, HOST_WIDE_INT bitpos,
if (MEM_ALIGN (*op) >= width)
return false;
- /* Adjust *OP to refer to the whole field. This also has the effect
- of legitimizing *OP's address for BLKmode, possibly simplifying it. */
- *op = adjust_address (*op, BLKmode, 0);
+ /* Create a copy of *OP that refers to the whole field. This also has
+ the effect of legitimizing *OP's address for BLKmode, possibly
+ simplifying it. */
+ *op = copy_rtx (adjust_address (*op, BLKmode, 0));
set_mem_size (*op, width / BITS_PER_UNIT);
/* Get references to both ends of the field. We deliberately don't
@@ -7248,9 +7320,10 @@ mips_get_unaligned_mem (rtx *op, HOST_WIDE_INT width, HOST_WIDE_INT bitpos,
bool
mips_expand_ext_as_unaligned_load (rtx dest, rtx src, HOST_WIDE_INT width,
- HOST_WIDE_INT bitpos)
+ HOST_WIDE_INT bitpos, bool unsigned_p)
{
rtx left, right, temp;
+ rtx dest1 = NULL_RTX;
/* If TARGET_64BIT, the destination of a 32-bit "extz" or "extzv" will
be a paradoxical word_mode subreg. This is the only case in which
@@ -7260,6 +7333,16 @@ mips_expand_ext_as_unaligned_load (rtx dest, rtx src, HOST_WIDE_INT width,
&& GET_MODE (SUBREG_REG (dest)) == SImode)
dest = SUBREG_REG (dest);
+ /* If TARGET_64BIT, the destination of a 32-bit "extz" or "extzv" will
+ be a DImode, create a new temp and emit a zero extend at the end. */
+ if (GET_MODE (dest) == DImode
+ && REG_P (dest)
+ && GET_MODE_BITSIZE (SImode) == width)
+ {
+ dest1 = dest;
+ dest = gen_reg_rtx (SImode);
+ }
+
/* After the above adjustment, the destination must be the same
width as the source. */
if (GET_MODE_BITSIZE (GET_MODE (dest)) != width)
@@ -7279,6 +7362,16 @@ mips_expand_ext_as_unaligned_load (rtx dest, rtx src, HOST_WIDE_INT width,
emit_insn (gen_mov_lwl (temp, src, left));
emit_insn (gen_mov_lwr (dest, copy_rtx (src), right, temp));
}
+
+ /* If we were loading 32bits and the original register was DI then
+ sign/zero extend into the orignal dest. */
+ if (dest1)
+ {
+ if (unsigned_p)
+ emit_insn (gen_zero_extendsidi2 (dest1, dest));
+ else
+ emit_insn (gen_extendsidi2 (dest1, dest));
+ }
return true;
}
@@ -8284,6 +8377,36 @@ mips_dwarf_register_span (rtx reg)
return NULL_RTX;
}
+/* DSP ALU can bypass data with no delays for the following pairs. */
+enum insn_code dspalu_bypass_table[][2] =
+{
+ {CODE_FOR_mips_addsc, CODE_FOR_mips_addwc},
+ {CODE_FOR_mips_cmpu_eq_qb, CODE_FOR_mips_pick_qb},
+ {CODE_FOR_mips_cmpu_lt_qb, CODE_FOR_mips_pick_qb},
+ {CODE_FOR_mips_cmpu_le_qb, CODE_FOR_mips_pick_qb},
+ {CODE_FOR_mips_cmp_eq_ph, CODE_FOR_mips_pick_ph},
+ {CODE_FOR_mips_cmp_lt_ph, CODE_FOR_mips_pick_ph},
+ {CODE_FOR_mips_cmp_le_ph, CODE_FOR_mips_pick_ph},
+ {CODE_FOR_mips_wrdsp, CODE_FOR_mips_insv}
+};
+
+int
+mips_dspalu_bypass_p (rtx out_insn, rtx in_insn)
+{
+ int i;
+ int num_bypass = ARRAY_SIZE (dspalu_bypass_table);
+ enum insn_code out_icode = (enum insn_code) INSN_CODE (out_insn);
+ enum insn_code in_icode = (enum insn_code) INSN_CODE (in_insn);
+
+ for (i = 0; i < num_bypass; i++)
+ {
+ if (out_icode == dspalu_bypass_table[i][0]
+ && in_icode == dspalu_bypass_table[i][1])
+ return true;
+ }
+
+ return false;
+}
/* Implement ASM_OUTPUT_ASCII. */
void
@@ -11033,14 +11156,7 @@ mips_hard_regno_mode_ok_p (unsigned int regno, enum machine_mode mode)
&& (regno - ST_REG_FIRST) % 4 == 0);
if (mode == CCmode)
- {
- if (!ISA_HAS_8CC)
- return regno == FPSW_REGNUM;
-
- return (ST_REG_P (regno)
- || GP_REG_P (regno)
- || FP_REG_P (regno));
- }
+ return ISA_HAS_8CC ? ST_REG_P (regno) : regno == FPSW_REGNUM;
size = GET_MODE_SIZE (mode);
mclass = GET_MODE_CLASS (mode);
@@ -11052,10 +11168,6 @@ mips_hard_regno_mode_ok_p (unsigned int regno, enum machine_mode mode)
&& (((regno - FP_REG_FIRST) % MAX_FPRS_PER_FMT) == 0
|| (MIN_FPRS_PER_FMT == 1 && size <= UNITS_PER_FPREG)))
{
- /* Allow TFmode for CCmode reloads. */
- if (mode == TFmode && ISA_HAS_8CC)
- return true;
-
/* Allow 64-bit vector modes for Loongson-2E/2F. */
if (TARGET_LOONGSON_VECTORS
&& (mode == V2SImode
@@ -12349,25 +12461,24 @@ mips_output_division (const char *division, rtx *operands)
bool
mips_linked_madd_p (rtx out_insn, rtx in_insn)
{
- rtx x;
+ enum attr_accum_in accum_in;
+ int accum_in_opnum;
+ rtx accum_in_op;
- x = single_set (in_insn);
- if (x == 0)
+ if (recog_memoized (in_insn) < 0)
return false;
- x = SET_SRC (x);
+ accum_in = get_attr_accum_in (in_insn);
+ if (accum_in == ACCUM_IN_NONE)
+ return false;
- if (GET_CODE (x) == PLUS
- && GET_CODE (XEXP (x, 0)) == MULT
- && reg_set_p (XEXP (x, 1), out_insn))
- return true;
+ accum_in_opnum = accum_in - ACCUM_IN_0;
- if (GET_CODE (x) == MINUS
- && GET_CODE (XEXP (x, 1)) == MULT
- && reg_set_p (XEXP (x, 0), out_insn))
- return true;
+ extract_insn (in_insn);
+ gcc_assert (accum_in_opnum < recog_data.n_operands);
+ accum_in_op = recog_data.operand[accum_in_opnum];
- return false;
+ return reg_set_p (accum_in_op, out_insn);
}
/* True if the dependency between OUT_INSN and IN_INSN is on the store
@@ -12480,6 +12591,9 @@ mips_issue_rate (void)
case PROCESSOR_LOONGSON_3A:
return 4;
+ case PROCESSOR_XLP:
+ return (reload_completed ? 4 : 3);
+
default:
return 1;
}
@@ -13671,15 +13785,16 @@ mips_expand_builtin_compare_1 (enum insn_code icode,
tree exp, int nargs)
{
struct expand_operand ops[MAX_RECOG_OPERANDS];
+ rtx output;
int opno, argno;
/* The instruction should have a target operand, an operand for each
argument, and an operand for COND. */
gcc_assert (nargs + 2 == insn_data[(int) icode].n_generator_args);
+ output = mips_allocate_fcc (insn_data[(int) icode].operand[0].mode);
opno = 0;
- create_output_operand (&ops[opno++], NULL_RTX,
- insn_data[(int) icode].operand[0].mode);
+ create_fixed_operand (&ops[opno++], output);
for (argno = 0; argno < nargs; argno++)
mips_prepare_builtin_arg (&ops[opno++], exp, argno);
create_integer_operand (&ops[opno++], (int) cond);
@@ -14045,7 +14160,7 @@ mips16_rewrite_pool_constant (struct mips16_constant_pool *pool, rtx *x)
split_const (*x, &base, &offset);
if (GET_CODE (base) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (base))
{
- label = mips16_add_constant (pool, get_pool_constant (base),
+ label = mips16_add_constant (pool, copy_rtx (get_pool_constant (base)),
get_pool_mode (base));
base = gen_rtx_LABEL_REF (Pmode, label);
*x = mips_unspec_address_offset (base, offset, SYMBOL_PC_RELATIVE);
@@ -14101,10 +14216,11 @@ mips_cfg_in_reorg (void)
|| TARGET_RELAX_PIC_CALLS);
}
-/* Build MIPS16 constant pools. */
+/* Build MIPS16 constant pools. Split the instructions if SPLIT_P,
+ otherwise assume that they are already split. */
static void
-mips16_lay_out_constants (void)
+mips16_lay_out_constants (bool split_p)
{
struct mips16_constant_pool pool;
struct mips16_rewrite_pool_refs_info info;
@@ -14113,10 +14229,13 @@ mips16_lay_out_constants (void)
if (!TARGET_MIPS16_PCREL_LOADS)
return;
- if (mips_cfg_in_reorg ())
- split_all_insns ();
- else
- split_all_insns_noflow ();
+ if (split_p)
+ {
+ if (mips_cfg_in_reorg ())
+ split_all_insns ();
+ else
+ split_all_insns_noflow ();
+ }
barrier = 0;
memset (&pool, 0, sizeof (pool));
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
@@ -14327,17 +14446,18 @@ r10k_safe_address_p (rtx x, rtx insn)
static bool
r10k_safe_mem_expr_p (tree expr, HOST_WIDE_INT offset)
{
- if (offset < 0 || offset >= int_size_in_bytes (TREE_TYPE (expr)))
- return false;
+ HOST_WIDE_INT bitoffset, bitsize;
+ tree inner, var_offset;
+ enum machine_mode mode;
+ int unsigned_p, volatile_p;
- while (TREE_CODE (expr) == COMPONENT_REF)
- {
- expr = TREE_OPERAND (expr, 0);
- if (expr == NULL_TREE)
- return false;
- }
+ inner = get_inner_reference (expr, &bitsize, &bitoffset, &var_offset, &mode,
+ &unsigned_p, &volatile_p, false);
+ if (!DECL_P (inner) || !DECL_SIZE_UNIT (inner) || var_offset)
+ return false;
- return DECL_P (expr);
+ offset += bitoffset / BITS_PER_UNIT;
+ return offset >= 0 && offset < tree_low_cst (DECL_SIZE_UNIT (inner), 1);
}
/* A for_each_rtx callback for which DATA points to the instruction
@@ -14586,13 +14706,13 @@ mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p)
{
rtx note, src, symbol;
- /* First, look at REG_EQUAL/EQUIV notes. */
- note = find_reg_equal_equiv_note (def_insn);
- if (note && GET_CODE (XEXP (note, 0)) == SYMBOL_REF)
- return XEXP (note, 0);
-
- /* For %call16 references we don't have REG_EQUAL. */
+ /* First see whether the source is a plain symbol. This is used
+ when calling symbols that are not lazily bound. */
src = SET_SRC (set);
+ if (GET_CODE (src) == SYMBOL_REF)
+ return src;
+
+ /* Handle %call16 references. */
symbol = mips_strip_unspec_call (src);
if (symbol)
{
@@ -14600,6 +14720,12 @@ mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p)
return symbol;
}
+ /* If we have something more complicated, look for a
+ REG_EQUAL or REG_EQUIV note. */
+ note = find_reg_equal_equiv_note (def_insn);
+ if (note && GET_CODE (XEXP (note, 0)) == SYMBOL_REF)
+ return XEXP (note, 0);
+
/* Follow at most one simple register copy. Such copies are
interesting in cases like:
@@ -15025,7 +15151,8 @@ vr4130_align_insns (void)
the fly to avoid a separate instruction walk. */
vr4130_avoid_branch_rt_conflict (insn);
- if (USEFUL_INSN_P (insn))
+ length = get_attr_length (insn);
+ if (length > 0 && USEFUL_INSN_P (insn))
FOR_EACH_SUBINSN (subinsn, insn)
{
mips_sim_wait_insn (&state, subinsn);
@@ -15060,6 +15187,7 @@ vr4130_align_insns (void)
issuing at the same time as the branch. We therefore
insert a nop before the branch in order to align its
delay slot. */
+ gcc_assert (last2);
emit_insn_after (gen_nop (), last2);
aligned_p = false;
}
@@ -15068,6 +15196,7 @@ vr4130_align_insns (void)
/* SUBINSN is the delay slot of INSN, but INSN is
currently unaligned. Insert a nop between
LAST and INSN to align it. */
+ gcc_assert (last);
emit_insn_after (gen_nop (), last);
aligned_p = true;
}
@@ -15406,23 +15535,15 @@ mips_reorg_process_insns (void)
htab_delete (htab);
}
-/* If we are using a GOT, but have not decided to use a global pointer yet,
- see whether we need one to implement long branches. Convert the ghost
- global-pointer instructions into real ones if so. */
+/* Return true if the function has a long branch instruction. */
static bool
-mips_expand_ghost_gp_insns (void)
+mips_has_long_branch_p (void)
{
- rtx insn;
+ rtx insn, subinsn;
int normal_length;
- /* Quick exit if we already know that we will or won't need a
- global pointer. */
- if (!TARGET_USE_GOT
- || cfun->machine->global_pointer == INVALID_REGNUM
- || mips_must_initialize_gp_p ())
- return false;
-
+ /* We need up-to-date instruction lengths. */
shorten_branches (get_insns ());
/* Look for a branch that is longer than normal. The normal length for
@@ -15431,12 +15552,32 @@ mips_expand_ghost_gp_insns (void)
but they have no delay slot. */
normal_length = (TARGET_MIPS16 ? 4 : 8);
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
- if (JUMP_P (insn)
- && USEFUL_INSN_P (insn)
- && get_attr_length (insn) > normal_length)
- break;
+ FOR_EACH_SUBINSN (subinsn, insn)
+ if (JUMP_P (subinsn)
+ && USEFUL_INSN_P (subinsn)
+ && get_attr_length (subinsn) > normal_length
+ && (any_condjump_p (subinsn) || any_uncondjump_p (subinsn)))
+ return true;
- if (insn == NULL_RTX)
+ return false;
+}
+
+/* If we are using a GOT, but have not decided to use a global pointer yet,
+ see whether we need one to implement long branches. Convert the ghost
+ global-pointer instructions into real ones if so. */
+
+static bool
+mips_expand_ghost_gp_insns (void)
+{
+ /* Quick exit if we already know that we will or won't need a
+ global pointer. */
+ if (!TARGET_USE_GOT
+ || cfun->machine->global_pointer == INVALID_REGNUM
+ || mips_must_initialize_gp_p ())
+ return false;
+
+ /* Run a full check for long branches. */
+ if (!mips_has_long_branch_p ())
return false;
/* We've now established that we need $gp. */
@@ -15465,6 +15606,111 @@ mips_df_reorg (void)
df_finish_pass (false);
}
+/* Emit code to load LABEL_REF SRC into MIPS16 register DEST. This is
+ called very late in mips_reorg, but the caller is required to run
+ mips16_lay_out_constants on the result. */
+
+static void
+mips16_load_branch_target (rtx dest, rtx src)
+{
+ if (TARGET_ABICALLS && !TARGET_ABSOLUTE_ABICALLS)
+ {
+ rtx page, low;
+
+ if (mips_cfun_has_cprestore_slot_p ())
+ mips_emit_move (dest, mips_cprestore_slot (dest, true));
+ else
+ mips_emit_move (dest, pic_offset_table_rtx);
+ page = mips_unspec_address (src, SYMBOL_GOTOFF_PAGE);
+ low = mips_unspec_address (src, SYMBOL_GOT_PAGE_OFST);
+ emit_insn (gen_rtx_SET (VOIDmode, dest,
+ PMODE_INSN (gen_unspec_got, (dest, page))));
+ emit_insn (gen_rtx_SET (VOIDmode, dest,
+ gen_rtx_LO_SUM (Pmode, dest, low)));
+ }
+ else
+ {
+ src = mips_unspec_address (src, SYMBOL_ABSOLUTE);
+ mips_emit_move (dest, src);
+ }
+}
+
+/* If we're compiling a MIPS16 function, look for and split any long branches.
+ This must be called after all other instruction modifications in
+ mips_reorg. */
+
+static void
+mips16_split_long_branches (void)
+{
+ bool something_changed;
+
+ if (!TARGET_MIPS16)
+ return;
+
+ /* Loop until the alignments for all targets are sufficient. */
+ do
+ {
+ rtx insn;
+
+ shorten_branches (get_insns ());
+ something_changed = false;
+ for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+ if (JUMP_P (insn)
+ && USEFUL_INSN_P (insn)
+ && get_attr_length (insn) > 8
+ && (any_condjump_p (insn) || any_uncondjump_p (insn)))
+ {
+ rtx old_label, new_label, temp, saved_temp;
+ rtx target, jump, jump_sequence;
+
+ start_sequence ();
+
+ /* Free up a MIPS16 register by saving it in $1. */
+ saved_temp = gen_rtx_REG (Pmode, AT_REGNUM);
+ temp = gen_rtx_REG (Pmode, GP_REG_FIRST + 2);
+ emit_move_insn (saved_temp, temp);
+
+ /* Load the branch target into TEMP. */
+ old_label = JUMP_LABEL (insn);
+ target = gen_rtx_LABEL_REF (Pmode, old_label);
+ mips16_load_branch_target (temp, target);
+
+ /* Jump to the target and restore the register's
+ original value. */
+ jump = emit_jump_insn (PMODE_INSN (gen_indirect_jump_and_restore,
+ (temp, temp, saved_temp)));
+ JUMP_LABEL (jump) = old_label;
+ LABEL_NUSES (old_label)++;
+
+ /* Rewrite any symbolic references that are supposed to use
+ a PC-relative constant pool. */
+ mips16_lay_out_constants (false);
+
+ if (simplejump_p (insn))
+ /* We're going to replace INSN with a longer form. */
+ new_label = NULL_RTX;
+ else
+ {
+ /* Create a branch-around label for the original
+ instruction. */
+ new_label = gen_label_rtx ();
+ emit_label (new_label);
+ }
+
+ jump_sequence = get_insns ();
+ end_sequence ();
+
+ emit_insn_after (jump_sequence, insn);
+ if (new_label)
+ invert_jump (insn, new_label, false);
+ else
+ delete_insn (insn);
+ something_changed = true;
+ }
+ }
+ while (something_changed);
+}
+
/* Implement TARGET_MACHINE_DEPENDENT_REORG. */
static void
@@ -15475,7 +15721,7 @@ mips_reorg (void)
to date if the CFG is available. */
if (mips_cfg_in_reorg ())
compute_bb_for_insn ();
- mips16_lay_out_constants ();
+ mips16_lay_out_constants (true);
if (mips_cfg_in_reorg ())
{
mips_df_reorg ();
@@ -15494,6 +15740,7 @@ mips_reorg (void)
/* The expansion could invalidate some of the VR4130 alignment
optimizations, but this should be an extremely rare case anyhow. */
mips_reorg_process_insns ();
+ mips16_split_long_branches ();
}
/* Implement TARGET_ASM_OUTPUT_MI_THUNK. Generate rtl rather than asm text
@@ -15614,7 +15861,7 @@ mips_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED,
insn = get_insns ();
insn_locators_alloc ();
split_all_insns_noflow ();
- mips16_lay_out_constants ();
+ mips16_lay_out_constants (true);
shorten_branches (insn);
final_start_function (insn, file, 1);
final (insn, file, 1);
@@ -15652,6 +15899,9 @@ mips_set_mips16_mode (int mips16_p)
/* Switch to MIPS16 mode. */
target_flags |= MASK_MIPS16;
+ /* Turn off SYNCI if it was on, MIPS16 doesn't support it. */
+ target_flags &= ~MASK_SYNCI;
+
/* Don't run the scheduler before reload, since it tends to
increase register pressure. */
flag_schedule_insns = 0;
@@ -16025,6 +16275,16 @@ mips_option_override (void)
target_flags &= ~MASK_ABICALLS;
}
+ /* PIC requires -mabicalls. */
+ if (flag_pic)
+ {
+ if (mips_abi == ABI_EABI)
+ error ("cannot generate position-independent code for %qs",
+ "-mabi=eabi");
+ else if (!TARGET_ABICALLS)
+ error ("position-independent code requires %qs", "-mabicalls");
+ }
+
if (TARGET_ABICALLS_PIC2)
/* We need to set flag_pic for executables as well as DSOs
because we may reference symbols that are not defined in
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 6ee6b6e0e49..caad3c36db8 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -386,6 +386,9 @@ struct mips_cpu_info {
if (TARGET_SMARTMIPS) \
builtin_define ("__mips_smartmips"); \
\
+ if (TARGET_MCU) \
+ builtin_define ("__mips_mcu"); \
+ \
if (TARGET_DSP) \
{ \
builtin_define ("__mips_dsp"); \
@@ -710,9 +713,9 @@ struct mips_cpu_info {
link-compatible. */
#define MIPS_ARCH_FLOAT_SPEC \
- "%{mhard-float|msoft-float|march=mips*:; \
+ "%{mhard-float|msoft-float|mno-float|march=mips*:; \
march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
- |march=34kc|march=74kc|march=1004kc|march=5kc \
+ |march=34kc|march=34kn|march=74kc|march=1004kc|march=5kc \
|march=octeon|march=xlr: -msoft-float; \
march=*: -mhard-float}"
@@ -760,7 +763,7 @@ struct mips_cpu_info {
/* A spec that infers the -mdsp setting from an -march argument. */
#define BASE_DRIVER_SELF_SPECS \
"%{!mno-dsp: \
- %{march=24ke*|march=34k*|march=1004k*: -mdsp} \
+ %{march=24ke*|march=34kc*|march=34kf*|march=34kx*|march=1004k*: -mdsp} \
%{march=74k*:%{!mno-dspr2: -mdspr2 -mdsp}}}"
#define DRIVER_SELF_SPECS BASE_DRIVER_SELF_SPECS
@@ -1120,6 +1123,7 @@ struct mips_cpu_info {
%{mdmx} %{mno-mdmx:-no-mdmx} \
%{mdsp} %{mno-dsp} \
%{mdspr2} %{mno-dspr2} \
+%{mmcu} %{mno-mcu} \
%{msmartmips} %{mno-smartmips} \
%{mmt} %{mno-mt} \
%{mfix-vr4120} %{mfix-vr4130} \
@@ -2326,13 +2330,19 @@ typedef struct mips_args {
/* True if we're generating a form of MIPS16 code in which jump tables
are stored in the text section and encoded as 16-bit PC-relative
offsets. This is only possible when general text loads are allowed,
- since the table access itself will be an "lh" instruction. */
-/* ??? 16-bit offsets can overflow in large functions. */
+ since the table access itself will be an "lh" instruction. If the
+ PC-relative offsets grow too large, 32-bit offsets are used instead. */
#define TARGET_MIPS16_SHORT_JUMP_TABLES TARGET_MIPS16_TEXT_LOADS
#define JUMP_TABLES_IN_TEXT_SECTION TARGET_MIPS16_SHORT_JUMP_TABLES
-#define CASE_VECTOR_MODE (TARGET_MIPS16_SHORT_JUMP_TABLES ? HImode : ptr_mode)
+#define CASE_VECTOR_MODE (TARGET_MIPS16_SHORT_JUMP_TABLES ? SImode : ptr_mode)
+
+/* Only use short offsets if their range will not overflow. */
+#define CASE_VECTOR_SHORTEN_MODE(MIN, MAX, BODY) \
+ (!TARGET_MIPS16_SHORT_JUMP_TABLES ? ptr_mode \
+ : ((MIN) >= -32768 && (MAX) < 32768) ? HImode \
+ : SImode)
#define CASE_VECTOR_PC_RELATIVE TARGET_MIPS16_SHORT_JUMP_TABLES
@@ -2385,12 +2395,8 @@ typedef struct mips_args {
#define FUNCTION_MODE SImode
-
-/* Define if copies to/from condition code registers should be avoided.
-
- This is needed for the MIPS because reload_outcc is not complete;
- it needs to handle cases where the source is a general or another
- condition code register. */
+/* We allocate $fcc registers by hand and can't cope with moves of
+ CCmode registers to and from pseudos (or memory). */
#define AVOID_CCMODE_COPIES
/* A C expression for the cost of a branch instruction. A value of
@@ -2632,8 +2638,14 @@ while (0)
#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL) \
do { \
if (TARGET_MIPS16_SHORT_JUMP_TABLES) \
- fprintf (STREAM, "\t.half\t%sL%d-%sL%d\n", \
- LOCAL_LABEL_PREFIX, VALUE, LOCAL_LABEL_PREFIX, REL); \
+ { \
+ if (GET_MODE (BODY) == HImode) \
+ fprintf (STREAM, "\t.half\t%sL%d-%sL%d\n", \
+ LOCAL_LABEL_PREFIX, VALUE, LOCAL_LABEL_PREFIX, REL); \
+ else \
+ fprintf (STREAM, "\t.word\t%sL%d-%sL%d\n", \
+ LOCAL_LABEL_PREFIX, VALUE, LOCAL_LABEL_PREFIX, REL); \
+ } \
else if (TARGET_GPWORD) \
fprintf (STREAM, "\t%s\t%sL%d\n", \
ptr_mode == DImode ? ".gpdword" : ".gpword", \
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 5b1735fe7f5..86d2c55c55d 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -134,10 +134,14 @@
;; Used in a call expression in place of args_size. It's present for PIC
;; indirect calls where it contains args_size and the function symbol.
UNSPEC_CALL_ATTR
+
+ ;; MIPS16 casesi jump table dispatch.
+ UNSPEC_CASESI_DISPATCH
])
(define_constants
[(TLS_GET_TP_REGNUM 3)
+ (MIPS16_T_REGNUM 24)
(PIC_FUNCTION_ADDR_REGNUM 25)
(RETURN_ADDR_REGNUM 31)
(CPRESTORE_SLOT_REGNUM 76)
@@ -194,16 +198,15 @@
;; loadpool move a constant into a MIPS16 register by loading it
;; from the pool
;; shift_shift a shift left followed by a shift right
-;; lui_movf an LUI followed by a MOVF (for d<-z CC moves)
;;
;; This attribute is used to determine the instruction's length and
;; scheduling type. For doubleword moves, the attribute always describes
;; the split instructions; in some cases, it is more appropriate for the
;; scheduling type to be "multi" instead.
(define_attr "move_type"
- "unknown,load,fpload,store,fpstore,mtc,mfc,mthilo,mfhilo,move,fmove,
+ "unknown,load,fpload,store,fpstore,mtc,mfc,mtlo,mflo,move,fmove,
const,constN,signext,ext_ins,logical,arith,sll0,andi,loadpool,
- shift_shift,lui_movf"
+ shift_shift"
(const_string "unknown"))
(define_attr "alu_type" "unknown,add,sub,not,nor,and,or,xor"
@@ -224,6 +227,59 @@
(const_string "yes")]
(const_string "no")))
+;; Attributes describing a sync loop. These loops have the form:
+;;
+;; if (RELEASE_BARRIER == YES) sync
+;; 1: OLDVAL = *MEM
+;; if ((OLDVAL & INCLUSIVE_MASK) != REQUIRED_OLDVAL) goto 2
+;; CMP = 0 [delay slot]
+;; $TMP1 = OLDVAL & EXCLUSIVE_MASK
+;; $TMP2 = INSN1 (OLDVAL, INSN1_OP2)
+;; $TMP3 = INSN2 ($TMP2, INCLUSIVE_MASK)
+;; $AT |= $TMP1 | $TMP3
+;; if (!commit (*MEM = $AT)) goto 1.
+;; if (INSN1 != MOVE && INSN1 != LI) NEWVAL = $TMP3 [delay slot]
+;; CMP = 1
+;; if (ACQUIRE_BARRIER == YES) sync
+;; 2:
+;;
+;; where "$" values are temporaries and where the other values are
+;; specified by the attributes below. Values are specified as operand
+;; numbers and insns are specified as enums. If no operand number is
+;; specified, the following values are used instead:
+;;
+;; - OLDVAL: $AT
+;; - CMP: NONE
+;; - NEWVAL: $AT
+;; - INCLUSIVE_MASK: -1
+;; - REQUIRED_OLDVAL: OLDVAL & INCLUSIVE_MASK
+;; - EXCLUSIVE_MASK: 0
+;;
+;; MEM and INSN1_OP2 are required.
+;;
+;; Ideally, the operand attributes would be integers, with -1 meaning "none",
+;; but the gen* programs don't yet support that.
+(define_attr "sync_mem" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_oldval" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_cmp" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_newval" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_inclusive_mask" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_exclusive_mask" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_required_oldval" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_insn1_op2" "none,0,1,2,3,4,5" (const_string "none"))
+(define_attr "sync_insn1" "move,li,addu,addiu,subu,and,andi,or,ori,xor,xori"
+ (const_string "move"))
+(define_attr "sync_insn2" "nop,and,xor,not"
+ (const_string "nop"))
+;; Memory model specifier.
+;; "0"-"9" values specify the operand that stores the memory model value.
+;; "10" specifies MEMMODEL_ACQ_REL,
+;; "11" specifies MEMMODEL_ACQUIRE.
+(define_attr "sync_memmodel" "" (const_int 10))
+
+;; Accumulator operand for madd patterns.
+(define_attr "accum_in" "none,0,1,2,3,4,5" (const_string "none"))
+
;; Classification of each insn.
;; branch conditional branch
;; jump unconditional jump
@@ -239,8 +295,10 @@
;; condmove conditional moves
;; mtc transfer to coprocessor
;; mfc transfer from coprocessor
-;; mthilo transfer to hi/lo registers
-;; mfhilo transfer from hi/lo registers
+;; mthi transfer to a hi register
+;; mtlo transfer to a lo register
+;; mfhi transfer from a hi register
+;; mflo transfer from a lo register
;; const load constant
;; arith integer arithmetic instructions
;; logical integer logical instructions
@@ -273,15 +331,24 @@
;; frsqrt floating point reciprocal square root
;; frsqrt1 floating point reciprocal square root step1
;; frsqrt2 floating point reciprocal square root step2
+;; dspmac DSP MAC instructions not saturating the accumulator
+;; dspmacsat DSP MAC instructions that saturate the accumulator
+;; accext DSP accumulator extract instructions
+;; accmod DSP accumulator modify instructions
+;; dspalu DSP ALU instructions not saturating the result
+;; dspalusat DSP ALU instructions that saturate the result
;; multi multiword sequence (or user asm statements)
+;; atomic atomic memory update instruction
+;; syncloop memory atomic operation implemented as a sync loop
;; nop no operation
;; ghost an instruction that produces no real code
(define_attr "type"
"unknown,branch,jump,call,load,fpload,fpidxload,store,fpstore,fpidxstore,
- prefetch,prefetchx,condmove,mtc,mfc,mthilo,mfhilo,const,arith,logical,
+ prefetch,prefetchx,condmove,mtc,mfc,mthi,mtlo,mfhi,mflo,const,arith,logical,
shift,slt,signext,clz,pop,trap,imul,imul3,imul3nc,imadd,idiv,idiv3,move,
fmove,fadd,fmul,fmadd,fdiv,frdiv,frdiv1,frdiv2,fabs,fneg,fcmp,fcvt,fsqrt,
- frsqrt,frsqrt1,frsqrt2,multi,nop,ghost"
+ frsqrt,frsqrt1,frsqrt2,dspmac,dspmacsat,accext,accmod,dspalu,dspalusat,
+ multi,atomic,syncloop,nop,ghost"
(cond [(eq_attr "jal" "!unset") (const_string "call")
(eq_attr "got" "load") (const_string "load")
@@ -298,8 +365,8 @@
(eq_attr "move_type" "fpstore") (const_string "fpstore")
(eq_attr "move_type" "mtc") (const_string "mtc")
(eq_attr "move_type" "mfc") (const_string "mfc")
- (eq_attr "move_type" "mthilo") (const_string "mthilo")
- (eq_attr "move_type" "mfhilo") (const_string "mfhilo")
+ (eq_attr "move_type" "mtlo") (const_string "mtlo")
+ (eq_attr "move_type" "mflo") (const_string "mflo")
;; These types of move are always single insns.
(eq_attr "move_type" "fmove") (const_string "fmove")
@@ -320,9 +387,8 @@
(eq_attr "dword_mode" "yes"))
(const_string "multi")
(eq_attr "move_type" "move") (const_string "move")
- (eq_attr "move_type" "const") (const_string "const")]
- ;; We classify "lui_movf" as "unknown" rather than "multi"
- ;; because we don't split it. FIXME: we should split instead.
+ (eq_attr "move_type" "const") (const_string "const")
+ (eq_attr "sync_mem" "!none") (const_string "syncloop")]
(const_string "unknown")))
;; Mode for conversion types (fcvt)
@@ -344,63 +410,9 @@
(const_string "yes")
(const_string "no")))
-;; Attributes describing a sync loop. These loops have the form:
-;;
-;; if (RELEASE_BARRIER == YES) sync
-;; 1: OLDVAL = *MEM
-;; if ((OLDVAL & INCLUSIVE_MASK) != REQUIRED_OLDVAL) goto 2
-;; CMP = 0 [delay slot]
-;; $TMP1 = OLDVAL & EXCLUSIVE_MASK
-;; $TMP2 = INSN1 (OLDVAL, INSN1_OP2)
-;; $TMP3 = INSN2 ($TMP2, INCLUSIVE_MASK)
-;; $AT |= $TMP1 | $TMP3
-;; if (!commit (*MEM = $AT)) goto 1.
-;; if (INSN1 != MOVE && INSN1 != LI) NEWVAL = $TMP3 [delay slot]
-;; CMP = 1
-;; if (ACQUIRE_BARRIER == YES) sync
-;; 2:
-;;
-;; where "$" values are temporaries and where the other values are
-;; specified by the attributes below. Values are specified as operand
-;; numbers and insns are specified as enums. If no operand number is
-;; specified, the following values are used instead:
-;;
-;; - OLDVAL: $AT
-;; - CMP: NONE
-;; - NEWVAL: $AT
-;; - INCLUSIVE_MASK: -1
-;; - REQUIRED_OLDVAL: OLDVAL & INCLUSIVE_MASK
-;; - EXCLUSIVE_MASK: 0
-;;
-;; MEM and INSN1_OP2 are required.
-;;
-;; Ideally, the operand attributes would be integers, with -1 meaning "none",
-;; but the gen* programs don't yet support that.
-(define_attr "sync_mem" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_oldval" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_cmp" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_newval" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_inclusive_mask" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_exclusive_mask" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_required_oldval" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_insn1_op2" "none,0,1,2,3,4,5" (const_string "none"))
-(define_attr "sync_insn1" "move,li,addu,addiu,subu,and,andi,or,ori,xor,xori"
- (const_string "move"))
-(define_attr "sync_insn2" "nop,and,xor,not"
- (const_string "nop"))
-;; Memory model specifier.
-;; "0"-"9" values specify the operand that stores the memory model value.
-;; "10" specifies MEMMODEL_ACQ_REL,
-;; "11" specifies MEMMODEL_ACQUIRE.
-(define_attr "sync_memmodel" "" (const_int 10))
-
;; Length of instruction in bytes.
(define_attr "length" ""
- (cond [(and (eq_attr "extended_mips16" "yes")
- (match_test "TARGET_MIPS16"))
- (const_int 8)
-
- ;; Direct branch instructions have a range of [-0x20000,0x1fffc],
+ (cond [;; Direct branch instructions have a range of [-0x20000,0x1fffc],
;; relative to the address of the delay slot. If a branch is
;; outside this range, we have a choice of two sequences.
;; For PIC, an out-of-range branch like:
@@ -425,14 +437,21 @@
;; using la/jr in this case too, but we do not do so at
;; present.
;;
- ;; Note that this value does not account for the delay slot
+ ;; The value we specify here does not account for the delay slot
;; instruction, whose length is added separately. If the RTL
;; pattern has no explicit delay slot, mips_adjust_insn_length
- ;; will add the length of the implicit nop. The values for
- ;; forward and backward branches will be different as well.
- (eq_attr "type" "branch")
+ ;; will add the length of the implicit nop. The range of
+ ;; [-0x20000, 0x1fffc] from the address of the delay slot
+ ;; therefore translates to a range of:
+ ;;
+ ;; [-(0x20000 - sizeof (branch)), 0x1fffc - sizeof (slot)]
+ ;; == [-0x1fffc, 0x1fff8]
+ ;;
+ ;; from the shorten_branches reference address.
+ (and (eq_attr "type" "branch")
+ (not (match_test "TARGET_MIPS16")))
(cond [(and (le (minus (match_dup 0) (pc)) (const_int 131064))
- (le (minus (pc) (match_dup 0)) (const_int 131068)))
+ (le (minus (pc) (match_dup 0)) (const_int 131068)))
(const_int 4)
;; The non-PIC case: branch, first delay slot, and J.
@@ -447,6 +466,100 @@
;; of an insn.
(const_int MAX_PIC_BRANCH_LENGTH))
+ ;; An unextended MIPS16 branch has a range of [-0x100, 0xfe]
+ ;; from the address of the following instruction, which leads
+ ;; to a range of:
+ ;;
+ ;; [-(0x100 - sizeof (branch)), 0xfe]
+ ;; == [-0xfe, 0xfe]
+ ;;
+ ;; from the shorten_branches reference address. Extended branches
+ ;; likewise have a range of [-0x10000, 0xfffe] from the address
+ ;; of the following instruction, which leads to a range of:
+ ;;
+ ;; [-(0x10000 - sizeof (branch)), 0xfffe]
+ ;; == [-0xfffc, 0xfffe]
+ ;;
+ ;; from the reference address.
+ ;;
+ ;; When a branch is out of range, mips_reorg splits it into a form
+ ;; that uses in-range branches. There are four basic sequences:
+ ;;
+ ;; (1) Absolute addressing with a readable text segment
+ ;; (32-bit addresses):
+ ;;
+ ;; b... foo 2 bytes
+ ;; move $1,$2 2 bytes
+ ;; lw $2,label 2 bytes
+ ;; jr $2 2 bytes
+ ;; move $2,$1 2 bytes
+ ;; .align 2 0 or 2 bytes
+ ;; label:
+ ;; .word target 4 bytes
+ ;; foo:
+ ;; (16 bytes in the worst case)
+ ;;
+ ;; (2) Absolute addressing with a readable text segment
+ ;; (64-bit addresses):
+ ;;
+ ;; b... foo 2 bytes
+ ;; move $1,$2 2 bytes
+ ;; ld $2,label 2 bytes
+ ;; jr $2 2 bytes
+ ;; move $2,$1 2 bytes
+ ;; .align 3 0 to 6 bytes
+ ;; label:
+ ;; .dword target 8 bytes
+ ;; foo:
+ ;; (24 bytes in the worst case)
+ ;;
+ ;; (3) Absolute addressing without a readable text segment
+ ;; (which requires 32-bit addresses at present):
+ ;;
+ ;; b... foo 2 bytes
+ ;; move $1,$2 2 bytes
+ ;; lui $2,%hi(target) 4 bytes
+ ;; sll $2,8 2 bytes
+ ;; sll $2,8 2 bytes
+ ;; addiu $2,%lo(target) 4 bytes
+ ;; jr $2 2 bytes
+ ;; move $2,$1 2 bytes
+ ;; foo:
+ ;; (20 bytes)
+ ;;
+ ;; (4) PIC addressing (which requires 32-bit addresses at present):
+ ;;
+ ;; b... foo 2 bytes
+ ;; move $1,$2 2 bytes
+ ;; lw $2,cprestore 0, 2 or 4 bytes
+ ;; lw $2,%got(target)($2) 4 bytes
+ ;; addiu $2,%lo(target) 4 bytes
+ ;; jr $2 2 bytes
+ ;; move $2,$1 2 bytes
+ ;; foo:
+ ;; (20 bytes in the worst case)
+ ;;
+ ;; Note that the conditions test adjusted lengths, whereas the
+ ;; result is an unadjusted length, and is thus twice the true value.
+ (and (eq_attr "type" "branch")
+ (match_test "TARGET_MIPS16"))
+ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 254))
+ (le (minus (pc) (match_dup 0)) (const_int 254)))
+ (const_int 4)
+ (and (le (minus (match_dup 0) (pc)) (const_int 65534))
+ (le (minus (pc) (match_dup 0)) (const_int 65532)))
+ (const_int 8)
+ (and (match_test "TARGET_ABICALLS")
+ (not (match_test "TARGET_ABSOLUTE_ABICALLS")))
+ (const_int 40)
+ (match_test "Pmode == SImode")
+ (const_int 32)
+ ] (const_int 48))
+
+ (and (eq_attr "extended_mips16" "yes")
+ (match_test "TARGET_MIPS16"))
+ (const_int 8)
+
;; "Ghost" instructions occupy no space.
(eq_attr "type" "ghost")
(const_int 0)
@@ -462,10 +575,6 @@
(eq_attr "move_type" "loadpool")
(const_int 8)
- ;; LUI_MOVFs are decomposed into two separate instructions.
- (eq_attr "move_type" "lui_movf")
- (const_int 8)
-
;; SHIFT_SHIFTs are decomposed into two separate instructions.
;; They are extended instructions on MIPS16 targets.
(eq_attr "move_type" "shift_shift")
@@ -475,7 +584,7 @@
;; Check for doubleword moves that are decomposed into two
;; instructions.
- (and (eq_attr "move_type" "mtc,mfc,mthilo,mfhilo,move")
+ (and (eq_attr "move_type" "mtc,mfc,mtlo,mflo,move")
(eq_attr "dword_mode" "yes"))
(const_int 8)
@@ -557,7 +666,7 @@
(match_test "TARGET_FIX_R4000"))
(const_string "hilo")
- (and (eq_attr "type" "mfhilo")
+ (and (eq_attr "type" "mfhi,mflo")
(not (match_test "ISA_HAS_HILO_INTERLOCKS")))
(const_string "hilo")]
(const_string "none")))
@@ -585,7 +694,7 @@
;; True if an instruction might assign to hi or lo when reloaded.
;; This is used by the TUNE_MACC_CHAINS code.
(define_attr "may_clobber_hilo" "no,yes"
- (if_then_else (eq_attr "type" "imul,imul3,imadd,idiv,mthilo")
+ (if_then_else (eq_attr "type" "imul,imul3,imadd,idiv,mthi,mtlo")
(const_string "yes")
(const_string "no")))
@@ -936,6 +1045,7 @@
(include "sb1.md")
(include "sr71k.md")
(include "xlr.md")
+(include "xlp.md")
(include "generic.md")
;;
@@ -1498,6 +1608,7 @@
madd\t%1,%2
#"
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "SI")
(set_attr "length" "4,8")])
@@ -1516,6 +1627,7 @@
madd\t%0,%1,%2
#"
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "SI")
(set_attr "length" "4,4,8")])
@@ -1554,6 +1666,7 @@
return "%[macc\t%@,%1,%2%]";
}
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "SI")])
(define_insn "*msac"
@@ -1572,6 +1685,7 @@
return "msac\t$0,%2,%3";
}
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")])
;; An msac-like instruction implemented using negation and a macc.
@@ -1595,6 +1709,7 @@
(clobber (match_dup 4))])]
""
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "1")
(set_attr "length" "8")])
;; Patterns generated by the define_peephole2 below.
@@ -1611,6 +1726,7 @@
"ISA_HAS_MACC && reload_completed"
"macc\t%3,%1,%2"
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "0")
(set_attr "mode" "SI")])
(define_insn "*msac2"
@@ -1625,6 +1741,7 @@
"ISA_HAS_MSAC && reload_completed"
"msac\t%3,%1,%2"
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "0")
(set_attr "mode" "SI")])
;; Convert macc $0,<r1>,<r2> & mflo <r3> into macc <r3>,<r1>,<r2>
@@ -1727,6 +1844,7 @@
msub\t%2,%3
#"
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "1")
(set_attr "mode" "SI")
(set_attr "length" "4,8")])
@@ -1936,6 +2054,7 @@
return "msac<u>\t$0,%1,%2";
}
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "SI")])
;; _highpart patterns
@@ -2156,6 +2275,7 @@
"TARGET_MAD"
"mad\t%1,%2"
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "0")
(set_attr "mode" "SI")])
;; See the comment above <u>msubsidi4 for the relationship between
@@ -2180,6 +2300,7 @@
return "%[macc<u>\t%@,%1,%2%]";
}
[(set_attr "type" "imadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "SI")])
;; Floating point multiply accumulate instructions.
@@ -2192,6 +2313,7 @@
"ISA_HAS_FP_MADD4_MSUB4 && TARGET_FUSED_MADD"
"madd.<fmt>\t%0,%3,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*madd3<mode>"
@@ -2202,6 +2324,7 @@
"ISA_HAS_FP_MADD3_MSUB3 && TARGET_FUSED_MADD"
"madd.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*msub4<mode>"
@@ -2212,6 +2335,7 @@
"ISA_HAS_FP_MADD4_MSUB4 && TARGET_FUSED_MADD"
"msub.<fmt>\t%0,%3,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*msub3<mode>"
@@ -2222,6 +2346,7 @@
"ISA_HAS_FP_MADD3_MSUB3 && TARGET_FUSED_MADD"
"msub.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmadd4<mode>"
@@ -2236,6 +2361,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmadd.<fmt>\t%0,%3,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmadd3<mode>"
@@ -2250,6 +2376,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmadd.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmadd4<mode>_fastmath"
@@ -2264,6 +2391,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmadd.<fmt>\t%0,%3,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmadd3<mode>_fastmath"
@@ -2278,6 +2406,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmadd.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "3")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmsub4<mode>"
@@ -2292,6 +2421,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmsub.<fmt>\t%0,%1,%2,%3"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "1")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmsub3<mode>"
@@ -2306,6 +2436,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmsub.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "1")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmsub4<mode>_fastmath"
@@ -2320,6 +2451,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmsub.<fmt>\t%0,%1,%2,%3"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "1")
(set_attr "mode" "<UNITMODE>")])
(define_insn "*nmsub3<mode>_fastmath"
@@ -2334,6 +2466,7 @@
&& !HONOR_NANS (<MODE>mode)"
"nmsub.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
+ (set_attr "accum_in" "1")
(set_attr "mode" "<UNITMODE>")])
;;
@@ -2637,6 +2770,16 @@
"<d>pop\t%0,%1"
[(set_attr "type" "pop")
(set_attr "mode" "<MODE>")])
+
+;; The POP instruction is special as it does not take into account the upper
+;; 32bits and is documented that way.
+(define_insn "*popcountdi2_trunc"
+ [(set (match_operand:SI 0 "register_operand" "=d")
+ (popcount:SI (truncate:SI (match_operand:DI 1 "register_operand" "d"))))]
+ "ISA_HAS_POP && TARGET_64BIT"
+ "pop\t%0,%1"
+ [(set_attr "type" "pop")
+ (set_attr "mode" "SI")])
;;
;; ....................
@@ -3651,7 +3794,8 @@
{
if (mips_expand_ext_as_unaligned_load (operands[0], operands[1],
INTVAL (operands[2]),
- INTVAL (operands[3])))
+ INTVAL (operands[3]),
+ /*unsigned=*/ false))
DONE;
else if (register_operand (operands[1], GET_MODE (operands[0]))
&& ISA_HAS_EXTS && UINTVAL (operands[2]) <= 32)
@@ -3688,7 +3832,8 @@
{
if (mips_expand_ext_as_unaligned_load (operands[0], operands[1],
INTVAL (operands[2]),
- INTVAL (operands[3])))
+ INTVAL (operands[3]),
+ /*unsigned=*/true))
DONE;
else if (mips_use_ins_ext_p (operands[1], INTVAL (operands[2]),
INTVAL (operands[3])))
@@ -4115,7 +4260,7 @@
&& (register_operand (operands[0], DImode)
|| reg_or_0_operand (operands[1], DImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,const,load,store,mthilo,mfhilo,mtc,fpload,mfc,fpstore,mtc,fpload,mfc,fpstore")
+ [(set_attr "move_type" "move,const,load,store,mtlo,mflo,mtc,fpload,mfc,fpstore,mtc,fpload,mfc,fpstore")
(set_attr "mode" "DI")])
(define_insn "*movdi_32bit_mips16"
@@ -4125,7 +4270,7 @@
&& (register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,move,move,const,constN,load,store,mfhilo")
+ [(set_attr "move_type" "move,move,move,const,constN,load,store,mflo")
(set_attr "mode" "DI")])
(define_insn "*movdi_64bit"
@@ -4135,7 +4280,7 @@
&& (register_operand (operands[0], DImode)
|| reg_or_0_operand (operands[1], DImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,const,const,load,store,mtc,fpload,mfc,fpstore,mthilo,mfhilo,mtc,fpload,mfc,fpstore")
+ [(set_attr "move_type" "move,const,const,load,store,mtc,fpload,mfc,fpstore,mtlo,mflo,mtc,fpload,mfc,fpstore")
(set_attr "mode" "DI")])
(define_insn "*movdi_64bit_mips16"
@@ -4145,7 +4290,7 @@
&& (register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,move,move,const,constN,const,loadpool,load,store,mfhilo")
+ [(set_attr "move_type" "move,move,move,const,constN,const,loadpool,load,store,mflo")
(set_attr "mode" "DI")])
;; On the mips16, we can split ld $r,N($r) into an add and a load,
@@ -4213,7 +4358,7 @@
&& (register_operand (operands[0], <MODE>mode)
|| reg_or_0_operand (operands[1], <MODE>mode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,const,const,load,store,mtc,fpload,mfc,fpstore,mfc,mtc,mthilo,mfhilo,mtc,fpload,mfc,fpstore")
+ [(set_attr "move_type" "move,const,const,load,store,mtc,fpload,mfc,fpstore,mfc,mtc,mtlo,mflo,mtc,fpload,mfc,fpstore")
(set_attr "mode" "SI")])
(define_insn "*mov<mode>_mips16"
@@ -4223,7 +4368,7 @@
&& (register_operand (operands[0], <MODE>mode)
|| register_operand (operands[1], <MODE>mode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,move,move,const,constN,const,loadpool,load,store,mfhilo")
+ [(set_attr "move_type" "move,move,move,const,constN,const,loadpool,load,store,mflo")
(set_attr "mode" "SI")])
;; On the mips16, we can split lw $r,N($r) into an add and a load,
@@ -4284,53 +4429,6 @@
operands[2] = GEN_INT (val - 0xff);
})
-;; This insn handles moving CCmode values. It's really just a
-;; slightly simplified copy of movsi_internal2, with additional cases
-;; to move a condition register to a general register and to move
-;; between the general registers and the floating point registers.
-
-(define_insn "movcc"
- [(set (match_operand:CC 0 "nonimmediate_operand" "=d,*d,*d,*m,*d,*f,*f,*f,*m")
- (match_operand:CC 1 "general_operand" "z,*d,*m,*d,*f,*d,*f,*m,*f"))]
- "ISA_HAS_8CC && TARGET_HARD_FLOAT"
- { return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "lui_movf,move,load,store,mfc,mtc,fmove,fpload,fpstore")
- (set_attr "mode" "SI")])
-
-;; Reload condition code registers. reload_incc and reload_outcc
-;; both handle moves from arbitrary operands into condition code
-;; registers. reload_incc handles the more common case in which
-;; a source operand is constrained to be in a condition-code
-;; register, but has not been allocated to one.
-;;
-;; Sometimes, such as in movcc, we have a CCmode destination whose
-;; constraints do not include 'z'. reload_outcc handles the case
-;; when such an operand is allocated to a condition-code register.
-;;
-;; Note that reloads from a condition code register to some
-;; other location can be done using ordinary moves. Moving
-;; into a GPR takes a single movcc, moving elsewhere takes
-;; two. We can leave these cases to the generic reload code.
-(define_expand "reload_incc"
- [(set (match_operand:CC 0 "fcc_reload_operand" "=z")
- (match_operand:CC 1 "general_operand" ""))
- (clobber (match_operand:TF 2 "register_operand" "=&f"))]
- "ISA_HAS_8CC && TARGET_HARD_FLOAT"
-{
- mips_expand_fcc_reload (operands[0], operands[1], operands[2]);
- DONE;
-})
-
-(define_expand "reload_outcc"
- [(set (match_operand:CC 0 "fcc_reload_operand" "=z")
- (match_operand:CC 1 "register_operand" ""))
- (clobber (match_operand:TF 2 "register_operand" "=&f"))]
- "ISA_HAS_8CC && TARGET_HARD_FLOAT"
-{
- mips_expand_fcc_reload (operands[0], operands[1], operands[2]);
- DONE;
-})
-
;; MIPS4 supports loading and storing a floating point register from
;; the sum of two general registers. We use two versions for each of
;; these four instructions: one where the two general registers are
@@ -4400,7 +4498,7 @@
&& (register_operand (operands[0], HImode)
|| reg_or_0_operand (operands[1], HImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,const,load,store,mthilo,mfhilo")
+ [(set_attr "move_type" "move,const,load,store,mtlo,mflo")
(set_attr "mode" "HI")])
(define_insn "*movhi_mips16"
@@ -4410,7 +4508,7 @@
&& (register_operand (operands[0], HImode)
|| register_operand (operands[1], HImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,move,move,const,constN,load,store,mfhilo")
+ [(set_attr "move_type" "move,move,move,const,constN,load,store,mflo")
(set_attr "mode" "HI")])
;; On the mips16, we can split lh $r,N($r) into an add and a load,
@@ -4475,7 +4573,7 @@
&& (register_operand (operands[0], QImode)
|| reg_or_0_operand (operands[1], QImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,const,load,store,mthilo,mfhilo")
+ [(set_attr "move_type" "move,const,load,store,mtlo,mflo")
(set_attr "mode" "QI")])
(define_insn "*movqi_mips16"
@@ -4485,7 +4583,7 @@
&& (register_operand (operands[0], QImode)
|| register_operand (operands[1], QImode))"
{ return mips_output_move (operands[0], operands[1]); }
- [(set_attr "move_type" "move,move,move,const,constN,load,store,mfhilo")
+ [(set_attr "move_type" "move,move,move,const,constN,load,store,mflo")
(set_attr "mode" "QI")])
;; On the mips16, we can split lb $r,N($r) into an add and a load,
@@ -4616,7 +4714,7 @@
&& (register_operand (operands[0], TImode)
|| reg_or_0_operand (operands[1], TImode))"
"#"
- [(set_attr "move_type" "move,const,load,store,mthilo,mfhilo")
+ [(set_attr "move_type" "move,const,load,store,mtlo,mflo")
(set_attr "mode" "TI")])
(define_insn "*movti_mips16"
@@ -4627,7 +4725,7 @@
&& (register_operand (operands[0], TImode)
|| register_operand (operands[1], TImode))"
"#"
- [(set_attr "move_type" "move,move,move,const,constN,load,store,mfhilo")
+ [(set_attr "move_type" "move,move,move,const,constN,load,store,mflo")
(set_attr "mode" "TI")])
;; 128-bit floating point moves
@@ -4734,7 +4832,7 @@
UNSPEC_MFHI))]
""
{ return ISA_HAS_MACCHI ? "<GPR:d>macchi\t%0,%.,%." : "mfhi\t%0"; }
- [(set_attr "move_type" "mfhilo")
+ [(set_attr "type" "mfhi")
(set_attr "mode" "<GPR:MODE>")])
;; Set the high part of a HI/LO value, given that the low part has
@@ -4747,7 +4845,7 @@
UNSPEC_MTHI))]
""
"mthi\t%z1"
- [(set_attr "move_type" "mthilo")
+ [(set_attr "type" "mthi")
(set_attr "mode" "SI")])
;; Emit a doubleword move in which exactly one of the operands is
@@ -5381,28 +5479,29 @@
(define_insn "*branch_equality<mode>_mips16"
[(set (pc)
(if_then_else
- (match_operator 0 "equality_operator"
- [(match_operand:GPR 1 "register_operand" "d,t")
+ (match_operator 1 "equality_operator"
+ [(match_operand:GPR 2 "register_operand" "d,t")
(const_int 0)])
- (match_operand 2 "pc_or_label_operand" "")
- (match_operand 3 "pc_or_label_operand" "")))]
+ (label_ref (match_operand 0 "" ""))
+ (pc)))]
"TARGET_MIPS16"
-{
- if (operands[2] != pc_rtx)
- {
- if (which_alternative == 0)
- return "b%C0z\t%1,%2";
- else
- return "bt%C0z\t%2";
- }
- else
- {
- if (which_alternative == 0)
- return "b%N0z\t%1,%3";
- else
- return "bt%N0z\t%3";
- }
-}
+ "@
+ b%C1z\t%2,%0
+ bt%C1z\t%0"
+ [(set_attr "type" "branch")])
+
+(define_insn "*branch_equality<mode>_mips16_inverted"
+ [(set (pc)
+ (if_then_else
+ (match_operator 1 "equality_operator"
+ [(match_operand:GPR 2 "register_operand" "d,t")
+ (const_int 0)])
+ (pc)
+ (label_ref (match_operand 0 "" ""))))]
+ "TARGET_MIPS16"
+ "@
+ b%N1z\t%2,%0
+ bt%N1z\t%0"
[(set_attr "type" "branch")])
(define_expand "cbranch<mode>4"
@@ -5698,7 +5797,30 @@
(label_ref (match_operand 0 "" "")))]
"TARGET_MIPS16"
"b\t%l0"
- [(set_attr "type" "branch")])
+ [(set_attr "type" "branch")
+ (set (attr "length")
+ ;; This calculation is like the normal branch one, but the
+ ;; range of the unextended instruction is [-0x800, 0x7fe] rather
+ ;; than [-0x100, 0xfe]. This translates to a range of:
+ ;;
+ ;; [-(0x800 - sizeof (branch)), 0x7fe]
+ ;; == [-0x7fe, 0x7fe]
+ ;;
+ ;; from the shorten_branches reference address. Long-branch
+ ;; sequences will replace this one, so the minimum length
+ ;; is one instruction shorter than for conditional branches.
+ (cond [(and (le (minus (match_dup 0) (pc)) (const_int 2046))
+ (le (minus (pc) (match_dup 0)) (const_int 2046)))
+ (const_int 4)
+ (and (le (minus (match_dup 0) (pc)) (const_int 65534))
+ (le (minus (pc) (match_dup 0)) (const_int 65532)))
+ (const_int 8)
+ (and (match_test "TARGET_ABICALLS")
+ (not (match_test "TARGET_ABSOLUTE_ABICALLS")))
+ (const_int 36)
+ (match_test "Pmode == SImode")
+ (const_int 28)
+ ] (const_int 44)))])
(define_expand "indirect_jump"
[(set (pc) (match_operand 0 "register_operand"))]
@@ -5716,18 +5838,25 @@
[(set_attr "type" "jump")
(set_attr "mode" "none")])
+;; A combined jump-and-move instruction, used for MIPS16 long-branch
+;; sequences. Having a dedicated pattern is more convenient than
+;; creating a SEQUENCE for this special case.
+(define_insn "indirect_jump_and_restore_<mode>"
+ [(set (pc) (match_operand:P 1 "register_operand" "d"))
+ (set (match_operand:P 0 "register_operand" "=d")
+ (match_operand:P 2 "register_operand" "y"))]
+ ""
+ "%(%<jr\t%1\;move\t%0,%2%>%)"
+ [(set_attr "type" "multi")
+ (set_attr "extended_mips16" "yes")])
+
(define_expand "tablejump"
[(set (pc)
(match_operand 0 "register_operand"))
(use (label_ref (match_operand 1 "")))]
- ""
+ "!TARGET_MIPS16_SHORT_JUMP_TABLES"
{
- if (TARGET_MIPS16_SHORT_JUMP_TABLES)
- operands[0] = expand_binop (Pmode, add_optab,
- convert_to_mode (Pmode, operands[0], false),
- gen_rtx_LABEL_REF (Pmode, operands[1]),
- 0, 0, OPTAB_WIDEN);
- else if (TARGET_GPWORD)
+ if (TARGET_GPWORD)
operands[0] = expand_binop (Pmode, add_optab, operands[0],
pic_offset_table_rtx, 0, 0, OPTAB_WIDEN);
else if (TARGET_RTP_PIC)
@@ -5753,6 +5882,94 @@
[(set_attr "type" "jump")
(set_attr "mode" "none")])
+;; For MIPS16, we don't know whether a given jump table will use short or
+;; word-sized offsets until late in compilation, when we are able to determine
+;; the sizes of the insns which comprise the containing function. This
+;; necessitates the use of the casesi rather than the tablejump pattern, since
+;; the latter tries to calculate the index of the offset to jump through early
+;; in compilation, i.e. at expand time, when nothing is known about the
+;; eventual function layout.
+
+(define_expand "casesi"
+ [(match_operand:SI 0 "register_operand" "") ; index to jump on
+ (match_operand:SI 1 "const_int_operand" "") ; lower bound
+ (match_operand:SI 2 "const_int_operand" "") ; total range
+ (match_operand 3 "" "") ; table label
+ (match_operand 4 "" "")] ; out of range label
+ "TARGET_MIPS16_SHORT_JUMP_TABLES"
+{
+ if (operands[1] != const0_rtx)
+ {
+ rtx reg = gen_reg_rtx (SImode);
+ rtx offset = gen_int_mode (-INTVAL (operands[1]), SImode);
+
+ if (!arith_operand (offset, SImode))
+ offset = force_reg (SImode, offset);
+
+ emit_insn (gen_addsi3 (reg, operands[0], offset));
+ operands[0] = reg;
+ }
+
+ if (!arith_operand (operands[0], SImode))
+ operands[0] = force_reg (SImode, operands[0]);
+
+ operands[2] = GEN_INT (INTVAL (operands[2]) + 1);
+
+ emit_jump_insn (PMODE_INSN (gen_casesi_internal_mips16,
+ (operands[0], operands[2],
+ operands[3], operands[4])));
+
+ DONE;
+})
+
+(define_insn "casesi_internal_mips16_<mode>"
+ [(set (pc)
+ (if_then_else
+ (leu (match_operand:SI 0 "register_operand" "d")
+ (match_operand:SI 1 "arith_operand" "dI"))
+ (unspec:P
+ [(match_dup 0)
+ (label_ref (match_operand 2 "" ""))]
+ UNSPEC_CASESI_DISPATCH)
+ (label_ref (match_operand 3 "" ""))))
+ (clobber (match_scratch:P 4 "=d"))
+ (clobber (match_scratch:P 5 "=d"))
+ (clobber (reg:SI MIPS16_T_REGNUM))]
+ "TARGET_MIPS16_SHORT_JUMP_TABLES"
+{
+ rtx diff_vec = PATTERN (next_real_insn (operands[2]));
+
+ gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
+
+ output_asm_insn ("sltu\t%0, %1", operands);
+ output_asm_insn ("bteqz\t%3", operands);
+
+ switch (GET_MODE (diff_vec))
+ {
+ case HImode:
+ output_asm_insn ("sll\t%5, %0, 1", operands);
+ output_asm_insn ("la\t%4, %2", operands);
+ output_asm_insn ("<d>addu\t%5, %4, %5", operands);
+ output_asm_insn ("lh\t%5, 0(%5)", operands);
+ break;
+
+ case SImode:
+ output_asm_insn ("sll\t%5, %0, 2", operands);
+ output_asm_insn ("la\t%4, %2", operands);
+ output_asm_insn ("<d>addu\t%5, %4, %5", operands);
+ output_asm_insn ("lw\t%5, 0(%5)", operands);
+ break;
+
+ default:
+ gcc_unreachable ();
+ }
+
+ output_asm_insn ("addu\t%4, %4, %5", operands);
+
+ return "j\t%4";
+}
+ [(set_attr "length" "32")])
+
;; For TARGET_USE_GOT, we save the gp in the jmp_buf as well.
;; While it is possible to either pull it off the stack (in the
;; o32 case) or recalculate it given t9 and our target label,
@@ -6530,7 +6747,8 @@
UNSPEC_CONSTTABLE_INT)]
"TARGET_MIPS16"
{
- assemble_integer (operands[0], INTVAL (operands[1]),
+ assemble_integer (mips_strip_unspec_address (operands[0]),
+ INTVAL (operands[1]),
BITS_PER_UNIT * INTVAL (operands[1]), 1);
return "";
}
diff --git a/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt
index e3294a7f7fe..2e91970d1c7 100644
--- a/gcc/config/mips/mips.opt
+++ b/gcc/config/mips/mips.opt
@@ -269,6 +269,10 @@ mno-float
Target Report RejectNegative Var(TARGET_NO_FLOAT) Condition(TARGET_SUPPORTS_NO_FLOAT)
Prevent the use of all floating-point operations
+mmcu
+Target Report Var(TARGET_MCU)
+Use MCU instructions
+
mno-flush-func
Target RejectNegative
Do not use a cache-flushing function before calling stack trampolines
diff --git a/gcc/config/mips/octeon.md b/gcc/config/mips/octeon.md
index 566beea26d5..2a57881f71d 100644
--- a/gcc/config/mips/octeon.md
+++ b/gcc/config/mips/octeon.md
@@ -83,22 +83,22 @@
(define_insn_reservation "octeon_imul_o1" 2
(and (eq_attr "cpu" "octeon")
- (eq_attr "type" "imul,mthilo"))
+ (eq_attr "type" "imul,mthi,mtlo"))
"(octeon_pipe0 | octeon_pipe1) + octeon_mult, octeon_mult")
(define_insn_reservation "octeon_imul_o2" 1
(and (eq_attr "cpu" "octeon2")
- (eq_attr "type" "imul,mthilo"))
+ (eq_attr "type" "imul,mthi,mtlo"))
"octeon_pipe1 + octeon_mult")
(define_insn_reservation "octeon_mfhilo_o1" 5
(and (eq_attr "cpu" "octeon")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"(octeon_pipe0 | octeon_pipe1) + octeon_mult")
(define_insn_reservation "octeon_mfhilo_o2" 6
(and (eq_attr "cpu" "octeon2")
- (eq_attr "type" "mfhilo"))
+ (eq_attr "type" "mfhi,mflo"))
"octeon_pipe1 + octeon_mult")
(define_insn_reservation "octeon_imadd_o1" 4
@@ -133,5 +133,5 @@
(define_insn_reservation "octeon_unknown" 1
(and (eq_attr "cpu" "octeon,octeon2")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"octeon_pipe0 + octeon_pipe1")
diff --git a/gcc/config/mips/predicates.md b/gcc/config/mips/predicates.md
index 97971e9a205..31c43a53ebb 100644
--- a/gcc/config/mips/predicates.md
+++ b/gcc/config/mips/predicates.md
@@ -139,9 +139,6 @@
(match_operand 0 "hilo_operand")
(match_operand 0 "register_operand")))
-(define_special_predicate "pc_or_label_operand"
- (match_code "pc,label_ref"))
-
(define_predicate "const_call_insn_operand"
(match_code "const,symbol_ref,label_ref")
{
diff --git a/gcc/config/mips/sb1.md b/gcc/config/mips/sb1.md
index 2d36c2212fa..f4c4f03b058 100644
--- a/gcc/config/mips/sb1.md
+++ b/gcc/config/mips/sb1.md
@@ -108,7 +108,7 @@
(define_insn_reservation "ir_sb1_unknown" 1
(and (eq_attr "cpu" "sb1,sb1a")
- (eq_attr "type" "unknown,multi"))
+ (eq_attr "type" "unknown,multi,atomic,syncloop"))
"sb1_ls0+sb1_ls1+sb1_ex0+sb1_ex1+sb1_fp0+sb1_fp1")
;; predicted taken branch causes 2 cycle ifetch bubble. predicted not
@@ -295,21 +295,19 @@
(define_insn_reservation "ir_sb1_mfhi" 1
(and (eq_attr "cpu" "sb1,sb1a")
- (and (eq_attr "type" "mfhilo")
- (not (match_operand 1 "lo_operand"))))
+ (eq_attr "type" "mfhi"))
"sb1_ex1")
(define_insn_reservation "ir_sb1_mflo" 1
(and (eq_attr "cpu" "sb1,sb1a")
- (and (eq_attr "type" "mfhilo")
- (match_operand 1 "lo_operand")))
+ (eq_attr "type" "mflo"))
"sb1_ex1")
;; mt{hi,lo} to mul/div is 4 cycles.
(define_insn_reservation "ir_sb1_mthilo" 4
(and (eq_attr "cpu" "sb1,sb1a")
- (eq_attr "type" "mthilo"))
+ (eq_attr "type" "mthi,mtlo"))
"sb1_ex1")
;; mt{hi,lo} to mf{hi,lo} is 3 cycles.
diff --git a/gcc/config/mips/sr71k.md b/gcc/config/mips/sr71k.md
index 9b2a784b1c1..58013ca4425 100644
--- a/gcc/config/mips/sr71k.md
+++ b/gcc/config/mips/sr71k.md
@@ -144,7 +144,7 @@
(define_insn_reservation "ir_sr70_unknown" 1
(and (eq_attr "cpu" "sr71000")
- (eq_attr "type" "unknown"))
+ (eq_attr "type" "unknown,atomic,syncloop"))
"serial_dispatch")
@@ -201,7 +201,7 @@
(define_insn_reservation "ir_sr70_hilo" 1
(and (eq_attr "cpu" "sr71000")
- (eq_attr "type" "mthilo,mfhilo"))
+ (eq_attr "type" "mthi,mtlo,mfhi,mflo"))
"ri_insns")
(define_insn_reservation "ir_sr70_arith" 1
diff --git a/gcc/config/mips/sync.md b/gcc/config/mips/sync.md
index 0a7905a3300..4c8dde92859 100644
--- a/gcc/config/mips/sync.md
+++ b/gcc/config/mips/sync.md
@@ -654,7 +654,8 @@
(unspec_volatile:GPR [(match_operand:GPR 2 "register_operand" "0")]
UNSPEC_ATOMIC_EXCHANGE))]
"ISA_HAS_SWAP"
- "swap<size>\t%0,%b1")
+ "swap<size>\t%0,%b1"
+ [(set_attr "type" "atomic")])
(define_expand "atomic_fetch_add<mode>"
[(match_operand:GPR 0 "register_operand")
@@ -712,4 +713,5 @@
(match_operand:GPR 2 "register_operand" "0"))]
UNSPEC_ATOMIC_FETCH_OP))]
"ISA_HAS_LDADD"
- "ldadd<size>\t%0,%b1")
+ "ldadd<size>\t%0,%b1"
+ [(set_attr "type" "atomic")])
diff --git a/gcc/config/mips/xlp.md b/gcc/config/mips/xlp.md
new file mode 100644
index 00000000000..994c9b16df8
--- /dev/null
+++ b/gcc/config/mips/xlp.md
@@ -0,0 +1,213 @@
+;; DFA-based pipeline description for the XLP.
+;; Copyright (C) 2012 Free Software Foundation, Inc.
+;;
+;; xlp.md Machine Description for the Broadcom XLP Microprocessor
+;; This file is part of GCC.
+
+;; GCC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; GCC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+;; License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GCC; see the file COPYING3. If not see
+;; <http://www.gnu.org/licenses/>.
+
+(define_automaton "xlp_cpu")
+
+;; CPU function units.
+(define_cpu_unit "xlp_ex0" "xlp_cpu")
+(define_cpu_unit "xlp_ex1" "xlp_cpu")
+(define_cpu_unit "xlp_ex2" "xlp_cpu")
+(define_cpu_unit "xlp_ex3" "xlp_cpu")
+
+;; Integer Multiply Unit
+(define_cpu_unit "xlp_div" "xlp_cpu")
+
+;; ALU2 completion port.
+(define_cpu_unit "xlp_ex2_wrb" "xlp_cpu")
+
+(define_automaton "xlp_fpu")
+
+;; Floating-point units.
+(define_cpu_unit "xlp_fp" "xlp_fpu")
+
+;; Floating Point Sqrt/Divide
+(define_cpu_unit "xlp_divsq" "xlp_fpu")
+
+;; FPU completion port.
+(define_cpu_unit "xlp_fp_wrb" "xlp_fpu")
+
+;; Define reservations for common combinations.
+
+;;
+;; The ordering of the instruction-execution-path/resource-usage
+;; descriptions (also known as reservation RTL) is roughly ordered
+;; based on the define attribute RTL for the "type" classification.
+;; When modifying, remember that the first test that matches is the
+;; reservation used!
+;;
+(define_insn_reservation "ir_xlp_unknown" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "unknown,multi"))
+ "xlp_ex0+xlp_ex1+xlp_ex2+xlp_ex3")
+
+(define_insn_reservation "ir_xlp_branch" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "branch,jump,call"))
+ "xlp_ex3")
+
+(define_insn_reservation "ir_xlp_prefetch" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "prefetch,prefetchx"))
+ "xlp_ex0|xlp_ex1")
+
+(define_insn_reservation "ir_xlp_load" 4
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "load"))
+ "xlp_ex0|xlp_ex1")
+
+(define_insn_reservation "ir_xlp_fpload" 5
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "fpload,fpidxload"))
+ "xlp_ex0|xlp_ex1")
+
+(define_insn_reservation "ir_xlp_alu" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "const,arith,shift,slt,clz,signext,logical,move,trap,nop"))
+ "xlp_ex0|xlp_ex1|(xlp_ex2,xlp_ex2_wrb)|xlp_ex3")
+
+(define_insn_reservation "ir_xlp_condmov" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "condmove")
+ (eq_attr "mode" "SI,DI"))
+ "xlp_ex2,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_mul" 5
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "imul,imadd"))
+ "xlp_ex2,nothing*4,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_mul3" 3
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "imul3"))
+ "xlp_ex2,nothing*2,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_div" 24
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "SI")
+ (eq_attr "type" "idiv"))
+ "xlp_ex2+xlp_div,xlp_div*23,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_ddiv" 48
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "DI")
+ (eq_attr "type" "idiv"))
+ "xlp_ex2+xlp_div,xlp_div*47,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_store" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "store,fpstore,fpidxstore"))
+ "xlp_ex0|xlp_ex1")
+
+(define_insn_reservation "ir_xlp_fpmove" 2
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "mfc"))
+ "xlp_ex3,xlp_fp,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_mfhi" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "mfhi"))
+ "xlp_ex2,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_mflo" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "mflo"))
+ "xlp_ex2,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_mthi" 1
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "mthi"))
+ "xlp_ex2,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_mtlo" 3
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "mtlo"))
+ "xlp_ex2,nothing*2,xlp_ex2_wrb")
+
+(define_insn_reservation "ir_xlp_fp2" 2
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "fmove,fneg,fabs,condmove"))
+ "xlp_fp,nothing,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fp3" 3
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "fcmp"))
+ "xlp_fp,nothing*2,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fp4" 4
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "fcvt"))
+ "xlp_fp,nothing*3,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fp5" 5
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "SF")
+ (eq_attr "type" "fadd,fmul"))
+ "xlp_fp,nothing*4,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fp6" 6
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "DF")
+ (eq_attr "type" "fadd,fmul"))
+ "xlp_fp,nothing*5,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fp9" 9
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "SF")
+ (eq_attr "type" "fmadd"))
+ "xlp_fp,nothing*3,xlp_fp,nothing*3,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fp11" 11
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "DF")
+ (eq_attr "type" "fmadd"))
+ "xlp_fp,nothing*4,xlp_fp,nothing*4,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fpcomplex_s" 23
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "SF")
+ (eq_attr "type" "fdiv,frdiv,frdiv1,frdiv2,fsqrt,frsqrt,frsqrt1,frsqrt2"))
+ "xlp_fp+xlp_divsq,xlp_divsq*22,xlp_fp_wrb")
+
+(define_insn_reservation "ir_xlp_fpcomplex_d" 38
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "mode" "DF")
+ (eq_attr "type" "fdiv,frdiv,frdiv1,frdiv2,fsqrt,frsqrt,frsqrt1,frsqrt2"))
+ "xlp_fp+xlp_divsq,xlp_divsq*37,xlp_fp_wrb")
+
+(define_bypass 3 "ir_xlp_mul" "ir_xlp_mfhi")
+
+(define_insn_reservation "ir_xlp_atomic" 15
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "atomic"))
+ "xlp_ex0|xlp_ex1")
+
+;; Sync loop consists of (in order)
+;; (1) optional sync,
+;; (2) LL instruction,
+;; (3) branch and 1-2 ALU instructions,
+;; (4) SC instruction,
+;; (5) optional sync,
+;; (6) branch and ALU instruction.
+;; The net result of this reservation is a big delay with flush of
+;; ALU pipeline and outgoing reservations discouraging use of EX3.
+(define_insn_reservation "ir_xlp_sync_loop" 40
+ (and (eq_attr "cpu" "xlp")
+ (eq_attr "type" "syncloop"))
+ "(xlp_ex0+xlp_ex1+xlp_ex2+xlp_ex3)*39,xlp_ex3+(xlp_ex0|xlp_ex1|(xlp_ex2,xlp_ex2_wrb))")
diff --git a/gcc/config/mips/xlr.md b/gcc/config/mips/xlr.md
index 69913b7b2fb..59f863323f2 100644
--- a/gcc/config/mips/xlr.md
+++ b/gcc/config/mips/xlr.md
@@ -28,10 +28,15 @@
(eq_attr "type" "slt"))
"xlr_main_pipe")
+(define_insn_reservation "ir_xlr_alu_clz" 2
+ (and (eq_attr "cpu" "xlr")
+ (eq_attr "type" "clz"))
+ "xlr_main_pipe")
+
;; Integer arithmetic instructions.
(define_insn_reservation "ir_xlr_alu" 1
(and (eq_attr "cpu" "xlr")
- (eq_attr "type" "move,arith,shift,clz,logical,signext,const,unknown,multi,nop,trap"))
+ (eq_attr "type" "move,arith,shift,logical,signext,const,unknown,multi,nop,trap,atomic,syncloop"))
"xlr_main_pipe")
;; Integer arithmetic instructions.
@@ -85,5 +90,5 @@
(define_insn_reservation "xlr_hilo" 2
(and (eq_attr "cpu" "xlr")
- (eq_attr "type" "mfhilo,mthilo"))
+ (eq_attr "type" "mfhi,mflo,mthi,mtlo"))
"xlr_imuldiv_nopipe")
diff --git a/gcc/config/mn10300/mn10300-protos.h b/gcc/config/mn10300/mn10300-protos.h
index fe0452b8825..b6760e8e407 100644
--- a/gcc/config/mn10300/mn10300-protos.h
+++ b/gcc/config/mn10300/mn10300-protos.h
@@ -25,7 +25,7 @@ extern int mn10300_legitimate_pic_operand_p (rtx);
extern rtx mn10300_legitimize_reload_address (rtx, enum machine_mode,
int, int, int);
extern bool mn10300_function_value_regno_p (const unsigned int);
-extern int mn10300_get_live_callee_saved_regs (void);
+extern unsigned int mn10300_get_live_callee_saved_regs (unsigned int *);
extern bool mn10300_hard_regno_mode_ok (unsigned int, enum machine_mode);
extern bool mn10300_modes_tieable (enum machine_mode, enum machine_mode);
extern const char *mn10300_output_add (rtx[3], bool);
diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c
index 5b9f0699469..769e883f01b 100644
--- a/gcc/config/mn10300/mn10300.c
+++ b/gcc/config/mn10300/mn10300.c
@@ -46,6 +46,7 @@
#include "df.h"
#include "opts.h"
#include "cfgloop.h"
+#include "dumpfile.h"
/* This is used in the am33_2.0-linux-gnu port, in which global symbol
names are not prefixed by underscores, to tell whether to prefix a
@@ -56,18 +57,6 @@ int mn10300_protect_label;
/* Selected processor type for tuning. */
enum processor_type mn10300_tune_cpu = PROCESSOR_DEFAULT;
-/* The size of the callee register save area. Right now we save everything
- on entry since it costs us nothing in code size. It does cost us from a
- speed standpoint, so we want to optimize this sooner or later. */
-#define REG_SAVE_BYTES (4 * df_regs_ever_live_p (2) \
- + 4 * df_regs_ever_live_p (3) \
- + 4 * df_regs_ever_live_p (6) \
- + 4 * df_regs_ever_live_p (7) \
- + 16 * (df_regs_ever_live_p (14) \
- || df_regs_ever_live_p (15) \
- || df_regs_ever_live_p (16) \
- || df_regs_ever_live_p (17)))
-
#define CC_FLAG_Z 1
#define CC_FLAG_N 2
#define CC_FLAG_C 4
@@ -634,20 +623,35 @@ mn10300_can_use_rets_insn (void)
/* Returns the set of live, callee-saved registers as a bitmask. The
callee-saved extended registers cannot be stored individually, so
- all of them will be included in the mask if any one of them is used. */
+ Also returns the number of bytes in the registers in the mask if
+ BYTES_SAVED is not NULL. */
-int
-mn10300_get_live_callee_saved_regs (void)
+unsigned int
+mn10300_get_live_callee_saved_regs (unsigned int * bytes_saved)
{
int mask;
int i;
+ unsigned int count;
- mask = 0;
+ count = mask = 0;
for (i = 0; i <= LAST_EXTENDED_REGNUM; i++)
if (df_regs_ever_live_p (i) && ! call_really_used_regs[i])
- mask |= (1 << i);
+ {
+ mask |= (1 << i);
+ ++ count;
+ }
+
if ((mask & 0x3c000) != 0)
- mask |= 0x3c000;
+ {
+ for (i = 0x04000; i < 0x40000; i <<= 1)
+ if ((mask & i) == 0)
+ ++ count;
+
+ mask |= 0x3c000;
+ }
+
+ if (bytes_saved)
+ * bytes_saved = count * UNITS_PER_WORD;
return mask;
}
@@ -740,8 +744,11 @@ mn10300_expand_prologue (void)
{
HOST_WIDE_INT size = mn10300_frame_size ();
+ if (flag_stack_usage_info)
+ current_function_static_stack_size = size;
+
/* If we use any of the callee-saved registers, save them now. */
- mn10300_gen_multiple_store (mn10300_get_live_callee_saved_regs ());
+ mn10300_gen_multiple_store (mn10300_get_live_callee_saved_regs (NULL));
if (TARGET_AM33_2 && fp_regs_to_save ())
{
@@ -998,8 +1005,10 @@ void
mn10300_expand_epilogue (void)
{
HOST_WIDE_INT size = mn10300_frame_size ();
- int reg_save_bytes = REG_SAVE_BYTES;
-
+ unsigned int reg_save_bytes;
+
+ mn10300_get_live_callee_saved_regs (& reg_save_bytes);
+
if (TARGET_AM33_2 && fp_regs_to_save ())
{
int num_regs_to_save = fp_regs_to_save (), i;
@@ -1219,7 +1228,7 @@ mn10300_expand_epilogue (void)
if (mn10300_can_use_rets_insn ())
emit_jump_insn (ret_rtx);
else
- emit_jump_insn (gen_return_ret (GEN_INT (size + REG_SAVE_BYTES)));
+ emit_jump_insn (gen_return_ret (GEN_INT (size + reg_save_bytes)));
}
/* Recognize the PARALLEL rtx generated by mn10300_gen_multiple_store().
@@ -1434,7 +1443,10 @@ mn10300_initial_offset (int from, int to)
is the size of the callee register save area. */
if (from == ARG_POINTER_REGNUM)
{
- diff += REG_SAVE_BYTES;
+ unsigned int reg_save_bytes;
+
+ mn10300_get_live_callee_saved_regs (& reg_save_bytes);
+ diff += reg_save_bytes;
diff += 4 * fp_regs_to_save ();
}
@@ -2468,12 +2480,15 @@ mn10300_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
may access it using GOTOFF instead of GOT. */
static void
-mn10300_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
+mn10300_encode_section_info (tree decl, rtx rtl, int first)
{
rtx symbol;
+ default_encode_section_info (decl, rtl, first);
+
if (! MEM_P (rtl))
return;
+
symbol = XEXP (rtl, 0);
if (GET_CODE (symbol) != SYMBOL_REF)
return;
@@ -3175,7 +3190,7 @@ mn10300_insert_setlb_lcc (rtx label, rtx branch)
}
static bool
-mn10300_block_contains_call (struct basic_block_def * block)
+mn10300_block_contains_call (basic_block block)
{
rtx insn;
diff --git a/gcc/config/mn10300/mn10300.h b/gcc/config/mn10300/mn10300.h
index 79b20f5a4d8..eb4f2f9f42f 100644
--- a/gcc/config/mn10300/mn10300.h
+++ b/gcc/config/mn10300/mn10300.h
@@ -703,10 +703,6 @@ do { \
#define LOAD_EXTEND_OP(MODE) ZERO_EXTEND
-/* This flag, if defined, says the same insns that convert to a signed fixnum
- also convert validly to an unsigned one. */
-#define FIXUNS_TRUNC_LIKE_FIX_TRUNC
-
/* Max number of bytes we can move from memory to memory
in one reasonably fast instruction. */
#define MOVE_MAX 4
diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md
index a1cbc7a9fd4..ee92b68a535 100644
--- a/gcc/config/mn10300/mn10300.md
+++ b/gcc/config/mn10300/mn10300.md
@@ -2048,7 +2048,7 @@
{
/* The RETF insn is up to 3 cycles faster than RET. */
fputs ((mn10300_can_use_retf_insn () ? "\tretf " : "\tret "), asm_out_file);
- mn10300_print_reg_list (asm_out_file, mn10300_get_live_callee_saved_regs ());
+ mn10300_print_reg_list (asm_out_file, mn10300_get_live_callee_saved_regs (NULL));
fprintf (asm_out_file, ",%d\n", (int) INTVAL (operands[0]));
return "";
})
diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c
index 83c59b017af..990c1bb8139 100644
--- a/gcc/config/rl78/rl78.c
+++ b/gcc/config/rl78/rl78.c
@@ -1,5 +1,5 @@
/* Subroutines used for code generation on Renesas RL78 processors.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011, 2012 Free Software Foundation, Inc.
Contributed by Red Hat.
This file is part of GCC.
@@ -47,6 +47,7 @@
#include "target-def.h"
#include "langhooks.h"
#include "rl78-protos.h"
+#include "dumpfile.h"
#include "tree-pass.h"
static inline bool is_interrupt_func (const_tree decl);
@@ -2216,7 +2217,8 @@ rl78_alloc_physical_registers (void)
&& GET_CODE (PATTERN (insn)) != CALL)
continue;
- if (GET_CODE (SET_SRC (PATTERN (insn))) == ASM_OPERANDS)
+ if (GET_CODE (PATTERN (insn)) == SET
+ && GET_CODE (SET_SRC (PATTERN (insn))) == ASM_OPERANDS)
continue;
valloc_method = get_attr_valloc (insn);
@@ -2643,7 +2645,7 @@ rl78_remove_unused_sets (void)
dest = SET_DEST (insn);
- if (REGNO (dest) > 23)
+ if (GET_CODE (dest) != REG || REGNO (dest) > 23)
continue;
if (find_regno_note (insn, REG_UNUSED, REGNO (dest)))
@@ -2663,7 +2665,7 @@ rl78_reorg (void)
if (dump_file)
{
fprintf (dump_file, "\n================DEVIRT:=AFTER=ALLOC=PHYSICAL=REGISTERS================\n");
- print_rtl_with_bb (dump_file, get_insns ());
+ print_rtl_with_bb (dump_file, get_insns (), 0);
}
rl78_propogate_register_origins ();
@@ -2672,7 +2674,7 @@ rl78_reorg (void)
if (dump_file)
{
fprintf (dump_file, "\n================DEVIRT:=AFTER=PROPOGATION=============================\n");
- print_rtl_with_bb (dump_file, get_insns ());
+ print_rtl_with_bb (dump_file, get_insns (), 0);
fprintf (dump_file, "\n======================================================================\n");
}
diff --git a/gcc/config/rs6000/601.md b/gcc/config/rs6000/601.md
new file mode 100644
index 00000000000..52644f2d9b3
--- /dev/null
+++ b/gcc/config/rs6000/601.md
@@ -0,0 +1,136 @@
+;; Scheduling description for PowerPC 601 processor.
+;; Copyright (C) 2003-2012 Free Software Foundation, Inc.
+;;
+;; This file is part of GCC.
+
+;; GCC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; GCC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+;; License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GCC; see the file COPYING3. If not see
+;; <http://www.gnu.org/licenses/>.
+
+(define_automaton "ppc601,ppc601fp")
+(define_cpu_unit "iu_ppc601" "ppc601")
+(define_cpu_unit "fpu_ppc601" "ppc601fp")
+(define_cpu_unit "bpu_ppc601" "ppc601")
+
+;; PPC601 32-bit IU, FPU, BPU
+
+(define_insn_reservation "ppc601-load" 2
+ (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,\
+ load_l,store_c,sync")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601")
+
+(define_insn_reservation "ppc601-store" 2
+ (and (eq_attr "type" "store,store_ux,store_u")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601")
+
+(define_insn_reservation "ppc601-fpload" 3
+ (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601")
+
+(define_insn_reservation "ppc601-fpstore" 3
+ (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601+fpu_ppc601")
+
+(define_insn_reservation "ppc601-integer" 1
+ (and (eq_attr "type" "integer,insert_word,insert_dword,shift,\
+ trap,var_shift_rotate,cntlz,exts,isel")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601")
+
+(define_insn_reservation "ppc601-two" 1
+ (and (eq_attr "type" "two")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601,iu_ppc601")
+
+(define_insn_reservation "ppc601-three" 1
+ (and (eq_attr "type" "three")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601,iu_ppc601,iu_ppc601")
+
+(define_insn_reservation "ppc601-imul" 5
+ (and (eq_attr "type" "imul,imul2,imul3,imul_compare")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601*5")
+
+(define_insn_reservation "ppc601-idiv" 36
+ (and (eq_attr "type" "idiv")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601*36")
+
+; compare executes on integer unit, but feeds insns which
+; execute on the branch unit.
+(define_insn_reservation "ppc601-compare" 3
+ (and (eq_attr "type" "cmp,compare,delayed_compare,\
+ var_delayed_compare")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601,nothing,bpu_ppc601")
+
+(define_insn_reservation "ppc601-fpcompare" 5
+ (and (eq_attr "type" "fpcompare")
+ (eq_attr "cpu" "ppc601"))
+ "(fpu_ppc601+iu_ppc601*2),nothing*2,bpu_ppc601")
+
+(define_insn_reservation "ppc601-fp" 4
+ (and (eq_attr "type" "fp")
+ (eq_attr "cpu" "ppc601"))
+ "fpu_ppc601")
+
+(define_insn_reservation "ppc601-dmul" 5
+ (and (eq_attr "type" "dmul")
+ (eq_attr "cpu" "ppc601"))
+ "fpu_ppc601*2")
+
+(define_insn_reservation "ppc601-sdiv" 17
+ (and (eq_attr "type" "sdiv")
+ (eq_attr "cpu" "ppc601"))
+ "fpu_ppc601*17")
+
+(define_insn_reservation "ppc601-ddiv" 31
+ (and (eq_attr "type" "ddiv")
+ (eq_attr "cpu" "ppc601"))
+ "fpu_ppc601*31")
+
+(define_insn_reservation "ppc601-mfcr" 2
+ (and (eq_attr "type" "mfcr")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601,bpu_ppc601")
+
+(define_insn_reservation "ppc601-mtcr" 4
+ (and (eq_attr "type" "mtcr")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601,bpu_ppc601")
+
+(define_insn_reservation "ppc601-crlogical" 4
+ (and (eq_attr "type" "cr_logical,delayed_cr")
+ (eq_attr "cpu" "ppc601"))
+ "bpu_ppc601")
+
+(define_insn_reservation "ppc601-mtjmpr" 4
+ (and (eq_attr "type" "mtjmpr")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601,bpu_ppc601")
+
+(define_insn_reservation "ppc601-mfjmpr" 2
+ (and (eq_attr "type" "mfjmpr")
+ (eq_attr "cpu" "ppc601"))
+ "iu_ppc601,bpu_ppc601")
+
+(define_insn_reservation "ppc601-branch" 1
+ (and (eq_attr "type" "jmpreg,branch,isync")
+ (eq_attr "cpu" "ppc601"))
+ "bpu_ppc601")
+
diff --git a/gcc/config/rs6000/aix43.h b/gcc/config/rs6000/aix43.h
index 936176cb34e..c1a69dc3a5a 100644
--- a/gcc/config/rs6000/aix43.h
+++ b/gcc/config/rs6000/aix43.h
@@ -1,7 +1,6 @@
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 POWER running AIX version 4.3.
- Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
- 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1998-2012 Free Software Foundation, Inc.
Contributed by David Edelsohn (edelsohn@gnu.org).
This file is part of GCC.
@@ -23,14 +22,8 @@
/* The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
get control in TARGET_OPTION_OVERRIDE. */
-#define NON_POWERPC_MASKS (MASK_POWER | MASK_POWER2)
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
- if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \
- { \
- target_flags &= ~NON_POWERPC_MASKS; \
- warning (0, "-maix64 and POWER architecture are incompatible"); \
- } \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
target_flags |= MASK_POWERPC64; \
@@ -56,22 +49,11 @@ do { \
#undef ASM_CPU_SPEC
#define ASM_CPU_SPEC \
"%{!mcpu*: %{!maix64: \
- %{mpower: %{!mpower2: -mpwr}} \
- %{mpower2: -mpwr2} \
- %{mpowerpc*: %{!mpowerpc64: -mppc}} \
- %{mpowerpc64: -mppc64} \
- %{!mpower*: %{!mpowerpc*: %(asm_default)}}}} \
-%{mcpu=common: -mcom} \
-%{mcpu=power: -mpwr} \
-%{mcpu=power2: -mpwr2} \
+ %{!mpowerpc64: %(asm_default)} \
+ %{mpowerpc64: -mppc64}}} \
%{mcpu=power3: -m620} \
%{mcpu=power4: -m620} \
%{mcpu=powerpc: -mppc} \
-%{mcpu=rios: -mpwr} \
-%{mcpu=rios1: -mpwr} \
-%{mcpu=rios2: -mpwr2} \
-%{mcpu=rsc: -mpwr} \
-%{mcpu=rsc1: -mpwr} \
%{mcpu=rs64a: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
@@ -83,7 +65,7 @@ do { \
%{mcpu=630: -m620}"
#undef ASM_DEFAULT_SPEC
-#define ASM_DEFAULT_SPEC "-mcom"
+#define ASM_DEFAULT_SPEC "-mppc"
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
@@ -111,7 +93,7 @@ do { \
%{pthread: -D_THREAD_SAFE}"
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT MASK_NEW_MNEMONICS
+#define TARGET_DEFAULT 0
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_PPC604e
@@ -164,7 +146,7 @@ do { \
and "cror 31,31,31" for POWER architecture. */
#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "{cror 31,31,31|nop}"
+#define RS6000_CALL_GLUE "nop"
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
diff --git a/gcc/config/rs6000/aix51.h b/gcc/config/rs6000/aix51.h
index 90d504f61b6..6ea30c1fba1 100644
--- a/gcc/config/rs6000/aix51.h
+++ b/gcc/config/rs6000/aix51.h
@@ -1,7 +1,6 @@
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 POWER running AIX V5.
- Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2001-2012 Free Software Foundation, Inc.
Contributed by David Edelsohn (edelsohn@gnu.org).
This file is part of GCC.
@@ -23,14 +22,8 @@
/* The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
get control in TARGET_OPTION_OVERRIDE. */
-#define NON_POWERPC_MASKS (MASK_POWER | MASK_POWER2)
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
- if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \
- { \
- target_flags &= ~NON_POWERPC_MASKS; \
- warning (0, "-maix64 and POWER architecture are incompatible"); \
- } \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
target_flags |= MASK_POWERPC64; \
@@ -50,22 +43,11 @@ do { \
#undef ASM_CPU_SPEC
#define ASM_CPU_SPEC \
"%{!mcpu*: %{!maix64: \
- %{mpower: %{!mpower2: -mpwr}} \
- %{mpower2: -mpwr2} \
- %{mpowerpc*: %{!mpowerpc64: -mppc}} \
- %{mpowerpc64: -mppc64} \
- %{!mpower*: %{!mpowerpc*: %(asm_default)}}}} \
-%{mcpu=common: -mcom} \
-%{mcpu=power: -mpwr} \
-%{mcpu=power2: -mpwr2} \
+ %{!mpowerpc64: %(asm_default)} \
+ %{mpowerpc64: -mppc64}}} \
%{mcpu=power3: -m620} \
%{mcpu=power4: -m620} \
%{mcpu=powerpc: -mppc} \
-%{mcpu=rios: -mpwr} \
-%{mcpu=rios1: -mpwr} \
-%{mcpu=rios2: -mpwr2} \
-%{mcpu=rsc: -mpwr} \
-%{mcpu=rsc1: -mpwr} \
%{mcpu=rs64a: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
@@ -79,7 +61,7 @@ do { \
%{mcpu=G5: -m620}"
#undef ASM_DEFAULT_SPEC
-#define ASM_DEFAULT_SPEC "-mcom"
+#define ASM_DEFAULT_SPEC "-mppc"
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
@@ -108,7 +90,7 @@ do { \
%{pthread: -D_THREAD_SAFE}"
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT MASK_NEW_MNEMONICS
+#define TARGET_DEFAULT 0
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_PPC604e
@@ -168,7 +150,7 @@ do { \
and "cror 31,31,31" for POWER architecture. */
#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "{cror 31,31,31|nop}"
+#define RS6000_CALL_GLUE "nop"
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
diff --git a/gcc/config/rs6000/aix52.h b/gcc/config/rs6000/aix52.h
index c6585711916..1c9e77f9626 100644
--- a/gcc/config/rs6000/aix52.h
+++ b/gcc/config/rs6000/aix52.h
@@ -1,7 +1,6 @@
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 POWER running AIX V5.2.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2002-2012 Free Software Foundation, Inc.
Contributed by David Edelsohn (edelsohn@gnu.org).
This file is part of GCC.
@@ -23,14 +22,8 @@
/* The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
get control in TARGET_OPTION_OVERRIDE. */
-#define NON_POWERPC_MASKS (MASK_POWER | MASK_POWER2)
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
- if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \
- { \
- target_flags &= ~NON_POWERPC_MASKS; \
- warning (0, "-maix64 and POWER architecture are incompatible"); \
- } \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
target_flags |= MASK_POWERPC64; \
@@ -57,7 +50,7 @@ do { \
#define ASM_CPU_SPEC \
"%{!mcpu*: %{!maix64: \
%{mpowerpc64: -mppc64} \
- %{!mpower64: %(asm_default)}}} \
+ %{!mpowerpc64: %(asm_default)}}} \
%{mcpu=power3: -m620} \
%{mcpu=power4: -m620} \
%{mcpu=power5: -m620} \
@@ -106,16 +99,13 @@ do { \
%{pthread: -D_THREAD_SAFE}"
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
+#define TARGET_DEFAULT 0
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_POWER4
#undef PROCESSOR_DEFAULT64
#define PROCESSOR_DEFAULT64 PROCESSOR_POWER4
-#undef TARGET_POWER
-#define TARGET_POWER 0
-
/* AIX does not support Altivec. */
#undef TARGET_ALTIVEC
#define TARGET_ALTIVEC 0
@@ -172,7 +162,7 @@ do { \
and "cror 31,31,31" for POWER architecture. */
#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "{cror 31,31,31|nop}"
+#define RS6000_CALL_GLUE "nop"
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
diff --git a/gcc/config/rs6000/aix53.h b/gcc/config/rs6000/aix53.h
index 36af0850502..d1a99e9c035 100644
--- a/gcc/config/rs6000/aix53.h
+++ b/gcc/config/rs6000/aix53.h
@@ -1,7 +1,6 @@
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 POWER running AIX V5.3.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2002-2012 Free Software Foundation, Inc.
Contributed by David Edelsohn (edelsohn@gnu.org).
This file is part of GCC.
@@ -23,14 +22,8 @@
/* The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
get control in TARGET_OPTION_OVERRIDE. */
-#define NON_POWERPC_MASKS (MASK_POWER | MASK_POWER2)
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
- if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \
- { \
- target_flags &= ~NON_POWERPC_MASKS; \
- warning (0, "-maix64 and POWER architecture are incompatible"); \
- } \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
target_flags |= MASK_POWERPC64; \
@@ -60,7 +53,7 @@ do { \
"%{!mcpu*: %{!maix64: \
%{mpowerpc64: -mppc64} \
%{maltivec: -m970} \
- %{!maltivec: %{!mpower64: %(asm_default)}}}} \
+ %{!maltivec: %{!mpowerpc64: %(asm_default)}}}} \
%{mcpu=native: %(asm_cpu_native)} \
%{mcpu=power3: -m620} \
%{mcpu=power4: -mpwr4} \
@@ -112,16 +105,13 @@ do { \
%{pthread: -D_THREAD_SAFE}"
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
+#define TARGET_DEFAULT 0
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_POWER5
#undef PROCESSOR_DEFAULT64
#define PROCESSOR_DEFAULT64 PROCESSOR_POWER5
-#undef TARGET_POWER
-#define TARGET_POWER 0
-
/* Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are
defaults for this target and thus do not need to be handled
@@ -170,7 +160,7 @@ do { \
and "cror 31,31,31" for POWER architecture. */
#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "{cror 31,31,31|nop}"
+#define RS6000_CALL_GLUE "nop"
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
diff --git a/gcc/config/rs6000/aix61.h b/gcc/config/rs6000/aix61.h
index f04c712aa15..663777c47cf 100644
--- a/gcc/config/rs6000/aix61.h
+++ b/gcc/config/rs6000/aix61.h
@@ -1,7 +1,6 @@
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 POWER running AIX V6.1.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2002-2012 Free Software Foundation, Inc.
Contributed by David Edelsohn (edelsohn@gnu.org).
This file is part of GCC.
@@ -23,14 +22,8 @@
/* The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
get control in TARGET_OPTION_OVERRIDE. */
-#define NON_POWERPC_MASKS (MASK_POWER | MASK_POWER2)
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
- if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \
- { \
- target_flags &= ~NON_POWERPC_MASKS; \
- warning (0, "-maix64 and POWER architecture are incompatible"); \
- } \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
target_flags |= MASK_POWERPC64; \
@@ -60,7 +53,7 @@ do { \
"%{!mcpu*: %{!maix64: \
%{mpowerpc64: -mppc64} \
%{maltivec: -m970} \
- %{!maltivec: %{!mpower64: %(asm_default)}}}} \
+ %{!maltivec: %{!mpowerpc64: %(asm_default)}}}} \
%{mcpu=native: %(asm_cpu_native)} \
%{mcpu=power3: -m620} \
%{mcpu=power4: -mpwr4} \
@@ -113,16 +106,13 @@ do { \
%{pthread: -D_THREAD_SAFE}"
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
+#define TARGET_DEFAULT 0
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_POWER7
#undef PROCESSOR_DEFAULT64
#define PROCESSOR_DEFAULT64 PROCESSOR_POWER7
-#undef TARGET_POWER
-#define TARGET_POWER 0
-
/* Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are
defaults for this target and thus do not need to be handled
@@ -171,7 +161,7 @@ do { \
and "cror 31,31,31" for POWER architecture. */
#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "{cror 31,31,31|nop}"
+#define RS6000_CALL_GLUE "nop"
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index fd4bc9d353b..8c168c85daf 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -643,7 +643,7 @@
convert_move (small_swap, swap, 0);
low_product = gen_reg_rtx (V4SImode);
- emit_insn (gen_altivec_vmulouh (low_product, one, two));
+ emit_insn (gen_vec_widen_umult_odd_v8hi (low_product, one, two));
high_product = gen_reg_rtx (V4SImode);
emit_insn (gen_altivec_vmsumuhm (high_product, one, small_swap, zero));
@@ -667,8 +667,8 @@
rtx high = gen_reg_rtx (V4SImode);
rtx low = gen_reg_rtx (V4SImode);
- emit_insn (gen_altivec_vmulesh (even, operands[1], operands[2]));
- emit_insn (gen_altivec_vmulosh (odd, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v8hi (even, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v8hi (odd, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghw (high, even, odd));
emit_insn (gen_altivec_vmrglw (low, even, odd));
@@ -936,7 +936,7 @@
"vmrglw %0,%1,%2"
[(set_attr "type" "vecperm")])
-(define_insn "altivec_vmuleub"
+(define_insn "vec_widen_umult_even_v16qi"
[(set (match_operand:V8HI 0 "register_operand" "=v")
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
(match_operand:V16QI 2 "register_operand" "v")]
@@ -945,7 +945,7 @@
"vmuleub %0,%1,%2"
[(set_attr "type" "veccomplex")])
-(define_insn "altivec_vmulesb"
+(define_insn "vec_widen_smult_even_v16qi"
[(set (match_operand:V8HI 0 "register_operand" "=v")
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
(match_operand:V16QI 2 "register_operand" "v")]
@@ -954,7 +954,7 @@
"vmulesb %0,%1,%2"
[(set_attr "type" "veccomplex")])
-(define_insn "altivec_vmuleuh"
+(define_insn "vec_widen_umult_even_v8hi"
[(set (match_operand:V4SI 0 "register_operand" "=v")
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
(match_operand:V8HI 2 "register_operand" "v")]
@@ -963,7 +963,7 @@
"vmuleuh %0,%1,%2"
[(set_attr "type" "veccomplex")])
-(define_insn "altivec_vmulesh"
+(define_insn "vec_widen_smult_even_v8hi"
[(set (match_operand:V4SI 0 "register_operand" "=v")
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
(match_operand:V8HI 2 "register_operand" "v")]
@@ -972,7 +972,7 @@
"vmulesh %0,%1,%2"
[(set_attr "type" "veccomplex")])
-(define_insn "altivec_vmuloub"
+(define_insn "vec_widen_umult_odd_v16qi"
[(set (match_operand:V8HI 0 "register_operand" "=v")
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
(match_operand:V16QI 2 "register_operand" "v")]
@@ -981,7 +981,7 @@
"vmuloub %0,%1,%2"
[(set_attr "type" "veccomplex")])
-(define_insn "altivec_vmulosb"
+(define_insn "vec_widen_smult_odd_v16qi"
[(set (match_operand:V8HI 0 "register_operand" "=v")
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
(match_operand:V16QI 2 "register_operand" "v")]
@@ -990,7 +990,7 @@
"vmulosb %0,%1,%2"
[(set_attr "type" "veccomplex")])
-(define_insn "altivec_vmulouh"
+(define_insn "vec_widen_umult_odd_v8hi"
[(set (match_operand:V4SI 0 "register_operand" "=v")
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
(match_operand:V8HI 2 "register_operand" "v")]
@@ -999,7 +999,7 @@
"vmulouh %0,%1,%2"
[(set_attr "type" "veccomplex")])
-(define_insn "altivec_vmulosh"
+(define_insn "vec_widen_smult_odd_v8hi"
[(set (match_operand:V4SI 0 "register_operand" "=v")
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
(match_operand:V8HI 2 "register_operand" "v")]
@@ -2175,8 +2175,8 @@
rtx ve = gen_reg_rtx (V8HImode);
rtx vo = gen_reg_rtx (V8HImode);
- emit_insn (gen_altivec_vmuleub (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmuloub (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
DONE;
}")
@@ -2192,8 +2192,8 @@
rtx ve = gen_reg_rtx (V8HImode);
rtx vo = gen_reg_rtx (V8HImode);
- emit_insn (gen_altivec_vmuleub (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmuloub (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
DONE;
}")
@@ -2209,8 +2209,8 @@
rtx ve = gen_reg_rtx (V8HImode);
rtx vo = gen_reg_rtx (V8HImode);
- emit_insn (gen_altivec_vmulesb (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmulosb (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
DONE;
}")
@@ -2226,8 +2226,8 @@
rtx ve = gen_reg_rtx (V8HImode);
rtx vo = gen_reg_rtx (V8HImode);
- emit_insn (gen_altivec_vmulesb (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmulosb (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
DONE;
}")
@@ -2243,8 +2243,8 @@
rtx ve = gen_reg_rtx (V4SImode);
rtx vo = gen_reg_rtx (V4SImode);
- emit_insn (gen_altivec_vmuleuh (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmulouh (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghw (operands[0], ve, vo));
DONE;
}")
@@ -2260,8 +2260,8 @@
rtx ve = gen_reg_rtx (V4SImode);
rtx vo = gen_reg_rtx (V4SImode);
- emit_insn (gen_altivec_vmuleuh (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmulouh (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglw (operands[0], ve, vo));
DONE;
}")
@@ -2277,8 +2277,8 @@
rtx ve = gen_reg_rtx (V4SImode);
rtx vo = gen_reg_rtx (V4SImode);
- emit_insn (gen_altivec_vmulesh (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmulosh (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghw (operands[0], ve, vo));
DONE;
}")
@@ -2294,8 +2294,8 @@
rtx ve = gen_reg_rtx (V4SImode);
rtx vo = gen_reg_rtx (V4SImode);
- emit_insn (gen_altivec_vmulesh (ve, operands[1], operands[2]));
- emit_insn (gen_altivec_vmulosh (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglw (operands[0], ve, vo));
DONE;
}")
diff --git a/gcc/config/rs6000/constraints.md b/gcc/config/rs6000/constraints.md
index ef80595f299..4a153d4c20e 100644
--- a/gcc/config/rs6000/constraints.md
+++ b/gcc/config/rs6000/constraints.md
@@ -1,5 +1,5 @@
;; Constraint definitions for RS6000
-;; Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2012 Free Software Foundation, Inc.
;;
;; This file is part of GCC.
;;
@@ -17,7 +17,7 @@
;; along with GCC; see the file COPYING3. If not see
;; <http://www.gnu.org/licenses/>.
-;; Available constraint letters: "e", "k", "u", "A", "B", "C", "D"
+;; Available constraint letters: "e", "k", "q", "u", "A", "B", "C", "D"
;; Register constraints
@@ -33,9 +33,6 @@
(define_register_constraint "h" "SPECIAL_REGS"
"@internal")
-(define_register_constraint "q" "MQ_REGS"
- "@internal")
-
(define_register_constraint "c" "CTR_REGS"
"@internal")
@@ -150,8 +147,9 @@ to use @samp{m} or @samp{es} in @code{asm} statements)"
(match_test "GET_CODE (XEXP (op, 0)) == REG")))
(define_memory_constraint "Y"
- "Indexed or word-aligned displacement memory operand"
- (match_operand 0 "word_offset_memref_operand"))
+ "memory operand for 8 byte and 16 byte gpr load/store"
+ (and (match_code "mem")
+ (match_operand 0 "mem_operand_gpr")))
(define_memory_constraint "Z"
"Memory operand that is an indexed or indirect from a register (it is
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 3e311b40f54..48f9fcc0e12 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -1,6 +1,5 @@
/* Target definitions for PowerPC running Darwin (Mac OS X).
- Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2010,
- 2011, 2012 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
Contributed by Apple Computer Inc.
This file is part of GCC.
@@ -281,12 +280,9 @@ extern int darwin_emit_branch_islands;
default as well. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_MULTIPLE | MASK_NEW_MNEMONICS \
- | MASK_PPC_GFXOPT)
+#define TARGET_DEFAULT (MASK_MULTIPLE | MASK_PPC_GFXOPT)
-/* Darwin only runs on PowerPC, so short-circuit POWER patterns. */
-#undef TARGET_POWER
-#define TARGET_POWER 0
+/* Darwin always uses IBM long double, never IEEE long double. */
#undef TARGET_IEEEQUAD
#define TARGET_IEEEQUAD 0
@@ -422,3 +418,7 @@ do { \
rs6000_builtin_decls[(unsigned) (RS6000_BUILTIN_CFSTRING)] \
= darwin_init_cfstring_builtins ((unsigned) (RS6000_BUILTIN_CFSTRING)); \
} while(0)
+
+/* So far, there is no rs6000_fold_builtin, if one is introduced, then
+ this will need to be modified similar to the x86 case. */
+#define TARGET_FOLD_BUILTIN SUBTARGET_FOLD_BUILTIN
diff --git a/gcc/config/rs6000/darwin.md b/gcc/config/rs6000/darwin.md
index e811822223a..5ecde22802f 100644
--- a/gcc/config/rs6000/darwin.md
+++ b/gcc/config/rs6000/darwin.md
@@ -1,5 +1,5 @@
/* Machine description patterns for PowerPC running Darwin (Mac OS X).
- Copyright (C) 2004, 2005, 2007, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2004-2012 Free Software Foundation, Inc.
Contributed by Apple Computer Inc.
This file is part of GCC.
@@ -23,7 +23,7 @@ You should have received a copy of the GNU General Public License
(plus:DI (match_operand:DI 1 "gpc_reg_operand" "b")
(high:DI (match_operand 2 "" ""))))]
"TARGET_MACHO && TARGET_64BIT"
- "{cau|addis} %0,%1,ha16(%2)"
+ "addis %0,%1,ha16(%2)"
[(set_attr "length" "4")])
(define_insn "movdf_low_si"
@@ -44,9 +44,9 @@ You should have received a copy of the GNU General Public License
return \"ld %0,lo16(%2)(%1)\";
else
{
- output_asm_insn (\"{cal|la} %0,lo16(%2)(%1)\", operands);
- output_asm_insn (\"{l|lwz} %L0,4(%0)\", operands);
- return (\"{l|lwz} %0,0(%0)\");
+ output_asm_insn (\"la %0,lo16(%2)(%1)\", operands);
+ output_asm_insn (\"lwz %L0,4(%0)\", operands);
+ return (\"lwz %0,0(%0)\");
}
}
default:
@@ -102,7 +102,7 @@ You should have received a copy of the GNU General Public License
"TARGET_MACHO && TARGET_HARD_FLOAT && TARGET_FPRS && ! TARGET_64BIT"
"@
lfs %0,lo16(%2)(%1)
- {l|lwz} %0,lo16(%2)(%1)"
+ lwz %0,lo16(%2)(%1)"
[(set_attr "type" "load")
(set_attr "length" "4")])
@@ -113,7 +113,7 @@ You should have received a copy of the GNU General Public License
"TARGET_MACHO && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_64BIT"
"@
lfs %0,lo16(%2)(%1)
- {l|lwz} %0,lo16(%2)(%1)"
+ lwz %0,lo16(%2)(%1)"
[(set_attr "type" "load")
(set_attr "length" "4")])
@@ -124,7 +124,7 @@ You should have received a copy of the GNU General Public License
"TARGET_MACHO && TARGET_HARD_FLOAT && TARGET_FPRS && ! TARGET_64BIT"
"@
stfs %0,lo16(%2)(%1)
- {st|stw} %0,lo16(%2)(%1)"
+ stw %0,lo16(%2)(%1)"
[(set_attr "type" "store")
(set_attr "length" "4")])
@@ -135,7 +135,7 @@ You should have received a copy of the GNU General Public License
"TARGET_MACHO && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_64BIT"
"@
stfs %0,lo16(%2)(%1)
- {st|stw} %0,lo16(%2)(%1)"
+ stw %0,lo16(%2)(%1)"
[(set_attr "type" "store")
(set_attr "length" "4")])
@@ -146,7 +146,7 @@ You should have received a copy of the GNU General Public License
(match_operand 2 "" ""))))]
"TARGET_MACHO && TARGET_64BIT"
"@
- {l|ld} %0,lo16(%2)(%1)
+ ld %0,lo16(%2)(%1)
lfd %0,lo16(%2)(%1)"
[(set_attr "type" "load")
(set_attr "length" "4")])
@@ -156,7 +156,7 @@ You should have received a copy of the GNU General Public License
(match_operand 2 "" "")))
(match_operand:SI 0 "gpc_reg_operand" "r"))]
"TARGET_MACHO && ! TARGET_64BIT"
- "{st|stw} %0,lo16(%2)(%1)"
+ "stw %0,lo16(%2)(%1)"
[(set_attr "type" "store")
(set_attr "length" "4")])
@@ -166,7 +166,7 @@ You should have received a copy of the GNU General Public License
(match_operand:DI 0 "gpc_reg_operand" "r,*!d"))]
"TARGET_MACHO && TARGET_64BIT"
"@
- {st|std} %0,lo16(%2)(%1)
+ std %0,lo16(%2)(%1)
stfd %0,lo16(%2)(%1)"
[(set_attr "type" "store")
(set_attr "length" "4")])
@@ -189,14 +189,14 @@ You should have received a copy of the GNU General Public License
[(set (match_operand:SI 0 "gpc_reg_operand" "=b*r")
(high:SI (match_operand 1 "" "")))]
"TARGET_MACHO && ! TARGET_64BIT"
- "{liu|lis} %0,ha16(%1)")
+ "lis %0,ha16(%1)")
(define_insn "macho_high_di"
[(set (match_operand:DI 0 "gpc_reg_operand" "=b*r")
(high:DI (match_operand 1 "" "")))]
"TARGET_MACHO && TARGET_64BIT"
- "{liu|lis} %0,ha16(%1)")
+ "lis %0,ha16(%1)")
(define_expand "macho_low"
[(set (match_operand 0 "" "")
@@ -218,8 +218,8 @@ You should have received a copy of the GNU General Public License
(match_operand 2 "" "")))]
"TARGET_MACHO && ! TARGET_64BIT"
"@
- {cal %0,%a2@l(%1)|la %0,lo16(%2)(%1)}
- {cal %0,%a2@l(%1)|addic %0,%1,lo16(%2)}")
+ la %0,lo16(%2)(%1)
+ addic %0,%1,lo16(%2)")
(define_insn "macho_low_di"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -227,8 +227,8 @@ You should have received a copy of the GNU General Public License
(match_operand 2 "" "")))]
"TARGET_MACHO && TARGET_64BIT"
"@
- {cal %0,%a2@l(%1)|la %0,lo16(%2)(%1)}
- {cal %0,%a2@l(%1)|addic %0,%1,lo16(%2)}")
+ la %0,lo16(%2)(%1)
+ addic %0,%1,lo16(%2)")
(define_split
[(set (mem:V4SI (plus:DI (match_operand:DI 0 "gpc_reg_operand" "")
diff --git a/gcc/config/rs6000/darwin64.h b/gcc/config/rs6000/darwin64.h
index f97cc29a217..1a1fcf02e08 100644
--- a/gcc/config/rs6000/darwin64.h
+++ b/gcc/config/rs6000/darwin64.h
@@ -1,5 +1,5 @@
/* Target definitions for PowerPC running Darwin (Mac OS X).
- Copyright (C) 2006, 2007, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2006-2012 Free Software Foundation, Inc.
Contributed by Apple Computer Inc.
This file is part of GCC.
@@ -19,8 +19,8 @@
<http://www.gnu.org/licenses/>. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_POWERPC64 | MASK_64BIT \
- | MASK_MULTIPLE | MASK_NEW_MNEMONICS | MASK_PPC_GFXOPT)
+#define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \
+ | MASK_MULTIPLE | MASK_PPC_GFXOPT)
#undef DARWIN_ARCH_SPEC
#define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}"
diff --git a/gcc/config/rs6000/default64.h b/gcc/config/rs6000/default64.h
index 0ff49aab9b1..bc336d82c69 100644
--- a/gcc/config/rs6000/default64.h
+++ b/gcc/config/rs6000/default64.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for 64 bit powerpc linux defaulting to -m64.
- Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -19,6 +19,4 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
- (MASK_POWERPC | MASK_PPC_GFXOPT | \
- MASK_POWERPC64 | MASK_64BIT | MASK_NEW_MNEMONICS)
+#define TARGET_DEFAULT (MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_64BIT)
diff --git a/gcc/config/rs6000/dfp.md b/gcc/config/rs6000/dfp.md
index 4fc7310636f..9dadf6fa4a5 100644
--- a/gcc/config/rs6000/dfp.md
+++ b/gcc/config/rs6000/dfp.md
@@ -1,6 +1,5 @@
;; Decimal Floating Point (DFP) patterns.
-;; Copyright (C) 2007, 2008, 2010, 2011
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2007-2012 Free Software Foundation, Inc.
;; Contributed by Ben Elliston (bje@au.ibm.com) and Peter Bergner
;; (bergner@vnet.ibm.com).
@@ -62,46 +61,44 @@
}")
(define_insn "movsd_hardfloat"
- [(set (match_operand:SD 0 "nonimmediate_operand" "=r,r,m,f,*c*l,*q,!r,*h,!r,!r")
- (match_operand:SD 1 "input_operand" "r,m,r,f,r,r,h,0,G,Fn"))]
+ [(set (match_operand:SD 0 "nonimmediate_operand" "=r,r,m,f,*c*l,!r,*h,!r,!r")
+ (match_operand:SD 1 "input_operand" "r,m,r,f,r,h,0,G,Fn"))]
"(gpc_reg_operand (operands[0], SDmode)
|| gpc_reg_operand (operands[1], SDmode))
&& (TARGET_HARD_FLOAT && TARGET_FPRS)"
"@
mr %0,%1
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%X0|stw%U0%X0} %1,%0
+ lwz%U1%X1 %0,%1
+ stw%U0%X0 %1,%0
fmr %0,%1
mt%0 %1
- mt%0 %1
mf%1 %0
- {cror 0,0,0|nop}
+ nop
#
#"
- [(set_attr "type" "*,load,store,fp,mtjmpr,*,mfjmpr,*,*,*")
- (set_attr "length" "4,4,4,4,4,4,4,4,4,8")])
+ [(set_attr "type" "*,load,store,fp,mtjmpr,mfjmpr,*,*,*")
+ (set_attr "length" "4,4,4,4,4,4,4,4,8")])
(define_insn "movsd_softfloat"
- [(set (match_operand:SD 0 "nonimmediate_operand" "=r,cl,q,r,r,m,r,r,r,r,r,*h")
- (match_operand:SD 1 "input_operand" "r,r,r,h,m,r,I,L,R,G,Fn,0"))]
+ [(set (match_operand:SD 0 "nonimmediate_operand" "=r,cl,r,r,m,r,r,r,r,r,*h")
+ (match_operand:SD 1 "input_operand" "r,r,h,m,r,I,L,R,G,Fn,0"))]
"(gpc_reg_operand (operands[0], SDmode)
|| gpc_reg_operand (operands[1], SDmode))
&& (TARGET_SOFT_FLOAT || !TARGET_FPRS)"
"@
mr %0,%1
mt%0 %1
- mt%0 %1
mf%1 %0
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%X0|stw%U0%X0} %1,%0
- {lil|li} %0,%1
- {liu|lis} %0,%v1
- {cal|la} %0,%a1
+ lwz%U1%X1 %0,%1
+ stw%U0%X0 %1,%0
+ li %0,%1
+ lis %0,%v1
+ la %0,%a1
#
#
- {cror 0,0,0|nop}"
- [(set_attr "type" "*,mtjmpr,*,mfjmpr,load,store,*,*,*,*,*,*")
- (set_attr "length" "4,4,4,4,4,4,4,4,4,4,8,4")])
+ nop"
+ [(set_attr "type" "*,mtjmpr,mfjmpr,load,store,*,*,*,*,*,*")
+ (set_attr "length" "4,4,4,4,4,4,4,4,4,8,4")])
(define_insn "movsd_store"
[(set (match_operand:DD 0 "nonimmediate_operand" "=m")
@@ -338,7 +335,7 @@
stfd%U0%X0 %1,%0
mt%0 %1
mf%1 %0
- {cror 0,0,0|nop}
+ nop
#
#
#
@@ -364,7 +361,7 @@
stfd%U0%X0 %1,%0
mt%0 %1
mf%1 %0
- {cror 0,0,0|nop}
+ nop
#
#
#"
@@ -386,7 +383,7 @@
#
#
#
- {cror 0,0,0|nop}"
+ nop"
[(set_attr "type" "load,store,*,mtjmpr,mfjmpr,*,*,*,*")
(set_attr "length" "4,4,4,4,4,8,12,16,4")])
diff --git a/gcc/config/rs6000/driver-rs6000.c b/gcc/config/rs6000/driver-rs6000.c
index 11e76ea968f..5f24ee7d23d 100644
--- a/gcc/config/rs6000/driver-rs6000.c
+++ b/gcc/config/rs6000/driver-rs6000.c
@@ -1,5 +1,5 @@
/* Subroutines for the gcc driver.
- Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -295,15 +295,6 @@ detect_processor_aix (void)
{
switch (_system_configuration.implementation)
{
- case 0x0001:
- return "rios1";
-
- case 0x0002:
- return "rsc";
-
- case 0x0004:
- return "rios2";
-
case 0x0008:
return "601";
@@ -377,13 +368,10 @@ static const struct asm_name asm_names[] = {
%{!maix64: \
%{mpowerpc64: -mppc64} \
%{maltivec: -m970} \
-%{!maltivec: %{!mpower64: %(asm_default)}}}" },
+%{!maltivec: %{!mpowerpc64: %(asm_default)}}}" },
#else
- { "common", "-mcom" },
{ "cell", "-mcell" },
- { "power", "-mpwr" },
- { "power2", "-mpwrx" },
{ "power3", "-mppc64" },
{ "power4", "-mpower4" },
{ "power5", "%(asm_cpu_power5)" },
@@ -392,11 +380,6 @@ static const struct asm_name asm_names[] = {
{ "power6x", "%(asm_cpu_power6) -maltivec" },
{ "power7", "%(asm_cpu_power7)" },
{ "powerpc", "-mppc" },
- { "rios", "-mpwr" },
- { "rios1", "-mpwr" },
- { "rios2", "-mpwrx" },
- { "rsc", "-mpwr" },
- { "rsc1", "-mpwr" },
{ "rs64a", "-mppc64" },
{ "401", "-mppc" },
{ "403", "-m403" },
@@ -434,12 +417,8 @@ static const struct asm_name asm_names[] = {
{ "e300c3", "-me300" },
{ "e500mc", "-me500mc" },
{ NULL, "\
-%{mpower: %{!mpower2: -mpwr}} \
-%{mpower2: -mpwrx} \
%{mpowerpc64*: -mppc64} \
-%{!mpowerpc64*: %{mpowerpc*: -mppc}} \
-%{mno-power: %{!mpowerpc*: -mcom}} \
-%{!mno-power: %{!mpower*: %(asm_default)}}" },
+%{!mpowerpc64*: %(asm_default)}" },
#endif
};
diff --git a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h
index 82dec71e958..7318aa21423 100644
--- a/gcc/config/rs6000/eabi.h
+++ b/gcc/config/rs6000/eabi.h
@@ -1,7 +1,6 @@
/* Core target definitions for GNU compiler
for IBM RS/6000 PowerPC targeted to embedded ELF systems.
- Copyright (C) 1995, 1996, 2000, 2003, 2004, 2007, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GCC.
@@ -22,7 +21,7 @@
/* Add -meabi to target flags. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
+#define TARGET_DEFAULT MASK_EABI
/* Invoke an initializer function to set up the GOT. */
#define NAME__MAIN "__eabi"
diff --git a/gcc/config/rs6000/eabialtivec.h b/gcc/config/rs6000/eabialtivec.h
index 0883f23fa00..a52262e49c0 100644
--- a/gcc/config/rs6000/eabialtivec.h
+++ b/gcc/config/rs6000/eabialtivec.h
@@ -1,6 +1,6 @@
/* Core target definitions for GNU compiler
for PowerPC targeted systems with AltiVec support.
- Copyright (C) 2001, 2003, 2007, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2001-2012 Free Software Foundation, Inc.
Contributed by Aldy Hernandez (aldyh@redhat.com).
This file is part of GCC.
@@ -21,7 +21,7 @@
/* Add -meabi and -maltivec to target flags. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI | MASK_ALTIVEC)
+#define TARGET_DEFAULT (MASK_EABI | MASK_ALTIVEC)
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
#define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1
diff --git a/gcc/config/rs6000/eabispe.h b/gcc/config/rs6000/eabispe.h
index e7ffbe3decb..55b57e74ea3 100644
--- a/gcc/config/rs6000/eabispe.h
+++ b/gcc/config/rs6000/eabispe.h
@@ -1,7 +1,6 @@
/* Core target definitions for GNU compiler
for PowerPC embedded targeted systems with SPE support.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2002-2012 Free Software Foundation, Inc.
Contributed by Aldy Hernandez (aldyh@redhat.com).
This file is part of GCC.
@@ -21,8 +20,7 @@
<http://www.gnu.org/licenses/>. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
- (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_STRICT_ALIGN | MASK_EABI)
+#define TARGET_DEFAULT (MASK_STRICT_ALIGN | MASK_EABI)
#undef ASM_DEFAULT_SPEC
#define ASM_DEFAULT_SPEC "-mppc -mspe -me500"
diff --git a/gcc/config/rs6000/linuxaltivec.h b/gcc/config/rs6000/linuxaltivec.h
index 41155c33a78..ef3f0ada0ee 100644
--- a/gcc/config/rs6000/linuxaltivec.h
+++ b/gcc/config/rs6000/linuxaltivec.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for AltiVec enhanced PowerPC machines running GNU/Linux.
- Copyright (C) 2001, 2003, 2007, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2001-2012 Free Software Foundation, Inc.
Contributed by Aldy Hernandez (aldyh@redhat.com).
This file is part of GCC.
@@ -21,7 +21,7 @@
/* Override rs6000.h and sysv4.h definition. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_ALTIVEC)
+#define TARGET_DEFAULT MASK_ALTIVEC
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
#define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1
diff --git a/gcc/config/rs6000/linuxspe.h b/gcc/config/rs6000/linuxspe.h
index 74f7b060633..9eb7b2c7ded 100644
--- a/gcc/config/rs6000/linuxspe.h
+++ b/gcc/config/rs6000/linuxspe.h
@@ -1,7 +1,6 @@
/* Definitions of target machine for GNU compiler,
for PowerPC e500 machines running GNU/Linux.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2003-2012 Free Software Foundation, Inc.
Contributed by Aldy Hernandez (aldy@quesejoda.com).
This file is part of GCC.
@@ -22,8 +21,7 @@
/* Override rs6000.h and sysv4.h definition. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
- (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_STRICT_ALIGN)
+#define TARGET_DEFAULT MASK_STRICT_ALIGN
#undef ASM_DEFAULT_SPEC
#define ASM_DEFAULT_SPEC "-mppc -mspe -me500"
diff --git a/gcc/config/rs6000/power4.md b/gcc/config/rs6000/power4.md
index 60dbffd58c9..1a51dacb123 100644
--- a/gcc/config/rs6000/power4.md
+++ b/gcc/config/rs6000/power4.md
@@ -141,12 +141,10 @@
(eq_attr "cpu" "power4"))
"((du1_power4+du2_power4,lsu1_power4)\
|(du2_power4+du3_power4,lsu2_power4)\
- |(du3_power4+du4_power4,lsu2_power4)\
|(du3_power4+du4_power4,lsu2_power4))+\
- ((nothing,iu2_power4,iu1_power4)\
+ ((nothing,iu1_power4,iu2_power4)\
|(nothing,iu2_power4,iu2_power4)\
- |(nothing,iu1_power4,iu2_power4)\
- |(nothing,iu1_power4,iu2_power4))")
+ |(nothing,iu2_power4,iu1_power4))")
(define_insn_reservation "power4-store-update-indexed" 12
(and (eq_attr "type" "store_ux")
@@ -212,7 +210,7 @@
((iu1_power4,nothing,iu2_power4,nothing,iu2_power4)\
|(iu2_power4,nothing,iu2_power4,nothing,iu1_power4)\
|(iu2_power4,nothing,iu1_power4,nothing,iu1_power4)\
- |(iu1_power4,nothing,iu2_power4,nothing,iu2_power4))")
+ |(iu1_power4,nothing,iu1_power4,nothing,iu2_power4))")
(define_insn_reservation "power4-insert" 4
(and (eq_attr "type" "insert_word")
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 70a4d2ca708..e2c3e70d226 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -1,6 +1,5 @@
;; Predicate definitions for POWER and PowerPC.
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2005-2012 Free Software Foundation, Inc.
;;
;; This file is part of GCC.
;;
@@ -128,7 +127,8 @@
(match_test "(GET_CODE (op) != REG
|| (REGNO (op) >= ARG_POINTER_REGNUM
&& !CA_REGNO_P (REGNO (op)))
- || REGNO (op) < MQ_REGNO)
+ || INT_REGNO_P (REGNO (op))
+ || FP_REGNO_P (REGNO (op)))
&& !((TARGET_E500_DOUBLE || TARGET_SPE)
&& invalid_e500_subreg (op, mode))")))
@@ -432,29 +432,6 @@
(and (match_operand 0 "memory_operand")
(match_test "offsettable_nonstrict_memref_p (op)")))
-;; Return 1 if the operand is a memory operand with an address divisible by 4
-(define_predicate "word_offset_memref_operand"
- (match_operand 0 "memory_operand")
-{
- /* Address inside MEM. */
- op = XEXP (op, 0);
-
- /* Extract address from auto-inc/dec. */
- if (GET_CODE (op) == PRE_INC
- || GET_CODE (op) == PRE_DEC)
- op = XEXP (op, 0);
- else if (GET_CODE (op) == PRE_MODIFY)
- op = XEXP (op, 1);
- else if (GET_CODE (op) == LO_SUM
- && GET_CODE (XEXP (op, 0)) == REG
- && GET_CODE (XEXP (op, 1)) == CONST)
- op = XEXP (XEXP (op, 1), 0);
-
- return (GET_CODE (op) != PLUS
- || GET_CODE (XEXP (op, 1)) != CONST_INT
- || INTVAL (XEXP (op, 1)) % 4 == 0);
-})
-
;; Return 1 if the operand is an indexed or indirect memory operand.
(define_predicate "indexed_or_indirect_operand"
(match_code "mem")
@@ -892,7 +869,8 @@
return input_operand (op, mode);
})
-;; Return true if OP is an invalid SUBREG operation on the e500.
+;; Return true if OP is a non-immediate operand and not an invalid
+;; SUBREG operation on the e500.
(define_predicate "rs6000_nonimmediate_operand"
(match_code "reg,subreg,mem")
{
@@ -1325,7 +1303,7 @@
if (base_regno == 0)
return 0;
}
- else if (rs6000_legitimate_offset_address_p (SImode, src_addr, 0))
+ else if (rs6000_legitimate_offset_address_p (SImode, src_addr, false, false))
{
offset = INTVAL (XEXP (src_addr, 1));
base_regno = REGNO (XEXP (src_addr, 0));
@@ -1353,7 +1331,7 @@
newoffset = 0;
addr_reg = newaddr;
}
- else if (rs6000_legitimate_offset_address_p (SImode, newaddr, 0))
+ else if (rs6000_legitimate_offset_address_p (SImode, newaddr, false, false))
{
addr_reg = XEXP (newaddr, 0);
newoffset = INTVAL (XEXP (newaddr, 1));
@@ -1400,7 +1378,7 @@
if (base_regno == 0)
return 0;
}
- else if (rs6000_legitimate_offset_address_p (SImode, dest_addr, 0))
+ else if (rs6000_legitimate_offset_address_p (SImode, dest_addr, false, false))
{
offset = INTVAL (XEXP (dest_addr, 1));
base_regno = REGNO (XEXP (dest_addr, 0));
@@ -1428,7 +1406,7 @@
newoffset = 0;
addr_reg = newaddr;
}
- else if (rs6000_legitimate_offset_address_p (SImode, newaddr, 0))
+ else if (rs6000_legitimate_offset_address_p (SImode, newaddr, false, false))
{
addr_reg = XEXP (newaddr, 0);
newoffset = INTVAL (XEXP (newaddr, 1));
diff --git a/gcc/config/rs6000/rios1.md b/gcc/config/rs6000/rios1.md
deleted file mode 100644
index 9ad9ce3e161..00000000000
--- a/gcc/config/rs6000/rios1.md
+++ /dev/null
@@ -1,191 +0,0 @@
-;; Scheduling description for IBM POWER processor.
-;; Copyright (C) 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
-;;
-;; This file is part of GCC.
-
-;; GCC is free software; you can redistribute it and/or modify it
-;; under the terms of the GNU General Public License as published
-;; by the Free Software Foundation; either version 3, or (at your
-;; option) any later version.
-
-;; GCC is distributed in the hope that it will be useful, but WITHOUT
-;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
-;; License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GCC; see the file COPYING3. If not see
-;; <http://www.gnu.org/licenses/>.
-
-(define_automaton "rios1,rios1fp")
-(define_cpu_unit "iu_rios1" "rios1")
-(define_cpu_unit "fpu_rios1" "rios1fp")
-(define_cpu_unit "bpu_rios1" "rios1")
-
-;; RIOS1 32-bit IU, FPU, BPU
-
-(define_insn_reservation "rios1-load" 2
- (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,\
- load_l,store_c,sync")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1")
-
-(define_insn_reservation "rios1-store" 2
- (and (eq_attr "type" "store,store_ux,store_u")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1")
-
-(define_insn_reservation "rios1-fpload" 2
- (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
- (eq_attr "cpu" "rios1"))
- "iu_rios1")
-
-(define_insn_reservation "ppc601-fpload" 3
- (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
- (eq_attr "cpu" "ppc601"))
- "iu_rios1")
-
-(define_insn_reservation "rios1-fpstore" 3
- (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1+fpu_rios1")
-
-(define_insn_reservation "rios1-integer" 1
- (and (eq_attr "type" "integer,insert_word,insert_dword,shift,\
- trap,var_shift_rotate,cntlz,exts,isel")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1")
-
-(define_insn_reservation "rios1-two" 1
- (and (eq_attr "type" "two")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1,iu_rios1")
-
-(define_insn_reservation "rios1-three" 1
- (and (eq_attr "type" "three")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1,iu_rios1,iu_rios1")
-
-(define_insn_reservation "rios1-imul" 5
- (and (eq_attr "type" "imul,imul_compare")
- (eq_attr "cpu" "rios1"))
- "iu_rios1*5")
-
-(define_insn_reservation "rios1-imul2" 4
- (and (eq_attr "type" "imul2")
- (eq_attr "cpu" "rios1"))
- "iu_rios1*4")
-
-(define_insn_reservation "rios1-imul3" 3
- (and (eq_attr "type" "imul")
- (eq_attr "cpu" "rios1"))
- "iu_rios1*3")
-
-(define_insn_reservation "ppc601-imul" 5
- (and (eq_attr "type" "imul,imul2,imul3,imul_compare")
- (eq_attr "cpu" "ppc601"))
- "iu_rios1*5")
-
-(define_insn_reservation "rios1-idiv" 19
- (and (eq_attr "type" "idiv")
- (eq_attr "cpu" "rios1"))
- "iu_rios1*19")
-
-(define_insn_reservation "ppc601-idiv" 36
- (and (eq_attr "type" "idiv")
- (eq_attr "cpu" "ppc601"))
- "iu_rios1*36")
-
-; compare executes on integer unit, but feeds insns which
-; execute on the branch unit.
-(define_insn_reservation "rios1-compare" 4
- (and (eq_attr "type" "cmp,fast_compare,compare")
- (eq_attr "cpu" "rios1"))
- "iu_rios1,nothing*2,bpu_rios1")
-
-(define_insn_reservation "rios1-delayed_compare" 5
- (and (eq_attr "type" "delayed_compare,var_delayed_compare")
- (eq_attr "cpu" "rios1"))
- "iu_rios1,nothing*3,bpu_rios1")
-
-(define_insn_reservation "ppc601-compare" 3
- (and (eq_attr "type" "cmp,compare,delayed_compare,\
- var_delayed_compare")
- (eq_attr "cpu" "ppc601"))
- "iu_rios1,nothing,bpu_rios1")
-
-(define_insn_reservation "rios1-fpcompare" 9
- (and (eq_attr "type" "fpcompare")
- (eq_attr "cpu" "rios1"))
- "fpu_rios1,nothing*3,bpu_rios1")
-
-(define_insn_reservation "ppc601-fpcompare" 5
- (and (eq_attr "type" "fpcompare")
- (eq_attr "cpu" "ppc601"))
- "(fpu_rios1+iu_rios1*2),nothing*2,bpu_rios1")
-
-(define_insn_reservation "rios1-fp" 2
- (and (eq_attr "type" "fp,dmul")
- (eq_attr "cpu" "rios1"))
- "fpu_rios1")
-
-(define_insn_reservation "ppc601-fp" 4
- (and (eq_attr "type" "fp")
- (eq_attr "cpu" "ppc601"))
- "fpu_rios1")
-
-(define_insn_reservation "rios1-dmul" 5
- (and (eq_attr "type" "dmul")
- (eq_attr "cpu" "ppc601"))
- "fpu_rios1*2")
-
-(define_insn_reservation "rios1-sdiv" 19
- (and (eq_attr "type" "sdiv,ddiv")
- (eq_attr "cpu" "rios1"))
- "fpu_rios1*19")
-
-(define_insn_reservation "ppc601-sdiv" 17
- (and (eq_attr "type" "sdiv")
- (eq_attr "cpu" "ppc601"))
- "fpu_rios1*17")
-
-(define_insn_reservation "ppc601-ddiv" 31
- (and (eq_attr "type" "ddiv")
- (eq_attr "cpu" "ppc601"))
- "fpu_rios1*31")
-
-(define_insn_reservation "rios1-mfcr" 2
- (and (eq_attr "type" "mfcr")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1,bpu_rios1")
-
-(define_insn_reservation "rios1-mtcr" 4
- (and (eq_attr "type" "mtcr")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1,bpu_rios1")
-
-(define_insn_reservation "rios1-crlogical" 4
- (and (eq_attr "type" "cr_logical,delayed_cr")
- (eq_attr "cpu" "rios1,ppc601"))
- "bpu_rios1")
-
-(define_insn_reservation "rios1-mtjmpr" 5
- (and (eq_attr "type" "mtjmpr")
- (eq_attr "cpu" "rios1"))
- "iu_rios1,bpu_rios1")
-
-(define_insn_reservation "ppc601-mtjmpr" 4
- (and (eq_attr "type" "mtjmpr")
- (eq_attr "cpu" "ppc601"))
- "iu_rios1,bpu_rios1")
-
-(define_insn_reservation "rios1-mfjmpr" 2
- (and (eq_attr "type" "mfjmpr")
- (eq_attr "cpu" "rios1,ppc601"))
- "iu_rios1,bpu_rios1")
-
-(define_insn_reservation "rios1-branch" 1
- (and (eq_attr "type" "jmpreg,branch,isync")
- (eq_attr "cpu" "rios1,ppc601"))
- "bpu_rios1")
-
diff --git a/gcc/config/rs6000/rios2.md b/gcc/config/rs6000/rios2.md
deleted file mode 100644
index 96633af2f8e..00000000000
--- a/gcc/config/rs6000/rios2.md
+++ /dev/null
@@ -1,129 +0,0 @@
-;; Scheduling description for IBM Power2 processor.
-;; Copyright (C) 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
-;;
-;; This file is part of GCC.
-
-;; GCC is free software; you can redistribute it and/or modify it
-;; under the terms of the GNU General Public License as published
-;; by the Free Software Foundation; either version 3, or (at your
-;; option) any later version.
-
-;; GCC is distributed in the hope that it will be useful, but WITHOUT
-;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
-;; License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GCC; see the file COPYING3. If not see
-;; <http://www.gnu.org/licenses/>.
-
-(define_automaton "rios2,rios2fp")
-(define_cpu_unit "iu1_rios2,iu2_rios2" "rios2")
-(define_cpu_unit "fpu1_rios2,fpu2_rios2" "rios2fp")
-(define_cpu_unit "bpu_rios2" "rios2")
-
-;; RIOS2 32-bit 2xIU, 2xFPU, BPU
-;; IU1 can perform all integer operations
-;; IU2 can perform all integer operations except imul and idiv
-
-(define_insn_reservation "rios2-load" 2
- (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,\
- load_ux,load_u,fpload,fpload_ux,fpload_u,\
- load_l,store_c,sync")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2|iu2_rios2")
-
-(define_insn_reservation "rios2-store" 2
- (and (eq_attr "type" "store,store_ux,store_u,fpstore,fpstore_ux,fpstore_u")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2|iu2_rios2")
-
-(define_insn_reservation "rios2-integer" 1
- (and (eq_attr "type" "integer,insert_word,insert_dword,shift,trap,\
- var_shift_rotate,cntlz,exts,isel")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2|iu2_rios2")
-
-(define_insn_reservation "rios2-two" 1
- (and (eq_attr "type" "two")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2|iu2_rios2,iu1_rios2|iu2_rios2")
-
-(define_insn_reservation "rios2-three" 1
- (and (eq_attr "type" "three")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2|iu2_rios2,iu1_rios2|iu2_rios2,iu1_rios2|iu2_rios2")
-
-(define_insn_reservation "rios2-imul" 2
- (and (eq_attr "type" "imul,imul2,imul3,imul_compare")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2*2")
-
-(define_insn_reservation "rios2-idiv" 13
- (and (eq_attr "type" "idiv")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2*13")
-
-; compare executes on integer unit, but feeds insns which
-; execute on the branch unit.
-(define_insn_reservation "rios2-compare" 3
- (and (eq_attr "type" "cmp,fast_compare,compare,delayed_compare,\
- var_delayed_compare")
- (eq_attr "cpu" "rios2"))
- "(iu1_rios2|iu2_rios2),nothing,bpu_rios2")
-
-(define_insn_reservation "rios2-fp" 2
- (and (eq_attr "type" "fp")
- (eq_attr "cpu" "rios2"))
- "fpu1_rios2|fpu2_rios2")
-
-(define_insn_reservation "rios2-fpcompare" 5
- (and (eq_attr "type" "fpcompare")
- (eq_attr "cpu" "rios2"))
- "(fpu1_rios2|fpu2_rios2),nothing*3,bpu_rios2")
-
-(define_insn_reservation "rios2-dmul" 2
- (and (eq_attr "type" "dmul")
- (eq_attr "cpu" "rios2"))
- "fpu1_rios2|fpu2_rios2")
-
-(define_insn_reservation "rios2-sdiv" 17
- (and (eq_attr "type" "sdiv,ddiv")
- (eq_attr "cpu" "rios2"))
- "(fpu1_rios2*17)|(fpu2_rios2*17)")
-
-(define_insn_reservation "rios2-ssqrt" 26
- (and (eq_attr "type" "ssqrt,dsqrt")
- (eq_attr "cpu" "rios2"))
- "(fpu1_rios2*26)|(fpu2_rios2*26)")
-
-(define_insn_reservation "rios2-mfcr" 2
- (and (eq_attr "type" "mfcr")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2,bpu_rios2")
-
-(define_insn_reservation "rios2-mtcr" 3
- (and (eq_attr "type" "mtcr")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2,bpu_rios2")
-
-(define_insn_reservation "rios2-crlogical" 3
- (and (eq_attr "type" "cr_logical,delayed_cr")
- (eq_attr "cpu" "rios2"))
- "bpu_rios2")
-
-(define_insn_reservation "rios2-mtjmpr" 5
- (and (eq_attr "type" "mtjmpr")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2,bpu_rios2")
-
-(define_insn_reservation "rios2-mfjmpr" 2
- (and (eq_attr "type" "mfjmpr")
- (eq_attr "cpu" "rios2"))
- "iu1_rios2,bpu_rios2")
-
-(define_insn_reservation "rios2-branch" 1
- (and (eq_attr "type" "jmpreg,branch,isync")
- (eq_attr "cpu" "rios2"))
- "bpu_rios2")
-
diff --git a/gcc/config/rs6000/rs6000-builtin.def b/gcc/config/rs6000/rs6000-builtin.def
index 2fd51af458f..c8f8f86f417 100644
--- a/gcc/config/rs6000/rs6000-builtin.def
+++ b/gcc/config/rs6000/rs6000-builtin.def
@@ -1,6 +1,5 @@
/* Builtin functions for rs6000/powerpc.
- Copyright (C) 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2009-2012 Free Software Foundation, Inc.
Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
This file is part of GCC.
@@ -503,18 +502,18 @@ BU_ALTIVEC_2 (VMINSH, "vminsh", CONST, sminv8hi3)
BU_ALTIVEC_2 (VMINUW, "vminuw", CONST, uminv4si3)
BU_ALTIVEC_2 (VMINSW, "vminsw", CONST, sminv4si3)
BU_ALTIVEC_2 (VMINFP, "vminfp", CONST, sminv4sf3)
-BU_ALTIVEC_2 (VMULEUB, "vmuleub", CONST, altivec_vmuleub)
-BU_ALTIVEC_2 (VMULEUB_UNS, "vmuleub_uns", CONST, altivec_vmuleub)
-BU_ALTIVEC_2 (VMULESB, "vmulesb", CONST, altivec_vmulesb)
-BU_ALTIVEC_2 (VMULEUH, "vmuleuh", CONST, altivec_vmuleuh)
-BU_ALTIVEC_2 (VMULEUH_UNS, "vmuleuh_uns", CONST, altivec_vmuleuh)
-BU_ALTIVEC_2 (VMULESH, "vmulesh", CONST, altivec_vmulesh)
-BU_ALTIVEC_2 (VMULOUB, "vmuloub", CONST, altivec_vmuloub)
-BU_ALTIVEC_2 (VMULOUB_UNS, "vmuloub_uns", CONST, altivec_vmuloub)
-BU_ALTIVEC_2 (VMULOSB, "vmulosb", CONST, altivec_vmulosb)
-BU_ALTIVEC_2 (VMULOUH, "vmulouh", CONST, altivec_vmulouh)
-BU_ALTIVEC_2 (VMULOUH_UNS, "vmulouh_uns", CONST, altivec_vmulouh)
-BU_ALTIVEC_2 (VMULOSH, "vmulosh", CONST, altivec_vmulosh)
+BU_ALTIVEC_2 (VMULEUB, "vmuleub", CONST, vec_widen_umult_even_v16qi)
+BU_ALTIVEC_2 (VMULEUB_UNS, "vmuleub_uns", CONST, vec_widen_umult_even_v16qi)
+BU_ALTIVEC_2 (VMULESB, "vmulesb", CONST, vec_widen_smult_even_v16qi)
+BU_ALTIVEC_2 (VMULEUH, "vmuleuh", CONST, vec_widen_umult_even_v8hi)
+BU_ALTIVEC_2 (VMULEUH_UNS, "vmuleuh_uns", CONST, vec_widen_umult_even_v8hi)
+BU_ALTIVEC_2 (VMULESH, "vmulesh", CONST, vec_widen_smult_even_v8hi)
+BU_ALTIVEC_2 (VMULOUB, "vmuloub", CONST, vec_widen_umult_odd_v16qi)
+BU_ALTIVEC_2 (VMULOUB_UNS, "vmuloub_uns", CONST, vec_widen_umult_odd_v16qi)
+BU_ALTIVEC_2 (VMULOSB, "vmulosb", CONST, vec_widen_smult_odd_v16qi)
+BU_ALTIVEC_2 (VMULOUH, "vmulouh", CONST, vec_widen_umult_odd_v8hi)
+BU_ALTIVEC_2 (VMULOUH_UNS, "vmulouh_uns", CONST, vec_widen_umult_odd_v8hi)
+BU_ALTIVEC_2 (VMULOSH, "vmulosh", CONST, vec_widen_smult_odd_v8hi)
BU_ALTIVEC_2 (VNOR, "vnor", CONST, norv4si3)
BU_ALTIVEC_2 (VOR, "vor", CONST, iorv4si3)
BU_ALTIVEC_2 (VPKUHUM, "vpkuhum", CONST, altivec_vpkuhum)
@@ -1431,5 +1430,5 @@ BU_SPECIAL_X (RS6000_BUILTIN_RSQRTF, "__builtin_rsqrtf", RS6000_BTM_FRSQRTES,
RS6000_BTC_FP)
/* Darwin CfString builtin. */
-BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_POWERPC,
+BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_ALWAYS,
RS6000_BTC_MISC)
diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c
index 0717b91b2bc..a2ef08e17ca 100644
--- a/gcc/config/rs6000/rs6000-c.c
+++ b/gcc/config/rs6000/rs6000-c.c
@@ -1,6 +1,5 @@
-/* Subroutines for the C front end on the POWER and PowerPC architectures.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+/* Subroutines for the C front end on the PowerPC architecture.
+ Copyright (C) 2002-2012 Free Software Foundation, Inc.
Contributed by Zack Weinberg <zack@codesourcery.com>
and Paolo Bonzini <bonzini@gnu.org>
@@ -294,12 +293,7 @@ rs6000_target_modify_macros (bool define_p, int flags, unsigned bu_mask)
(unsigned) flags, bu_mask);
/* target_flags based options. */
- if ((flags & MASK_POWER2) != 0)
- rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR2");
- else if ((flags & MASK_POWER) != 0)
- rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR");
- if ((flags & MASK_POWERPC) != 0)
- rs6000_define_or_undefine_macro (define_p, "_ARCH_PPC");
+ rs6000_define_or_undefine_macro (define_p, "_ARCH_PPC");
if ((flags & MASK_PPC_GPOPT) != 0)
rs6000_define_or_undefine_macro (define_p, "_ARCH_PPCSQ");
if ((flags & MASK_PPC_GFXOPT) != 0)
@@ -351,10 +345,6 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile)
rs6000_target_modify_macros (true, target_flags,
rs6000_builtin_mask_calculate ());
- /* _ARCH_COM does not fit in the framework of target_modify_macros, so handle
- it specially. */
- if (! TARGET_POWER && ! TARGET_POWER2 && ! TARGET_POWERPC)
- builtin_define ("_ARCH_COM");
if (TARGET_FRE)
builtin_define ("__RECIP__");
if (TARGET_FRES)
diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def
index 6f4e055a657..cfac0e732e0 100644
--- a/gcc/config/rs6000/rs6000-cpus.def
+++ b/gcc/config/rs6000/rs6000-cpus.def
@@ -1,7 +1,5 @@
/* IBM RS/6000 CPU names..
- Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1991-2012 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GCC.
@@ -34,110 +32,78 @@
where the arguments are the fields of struct rs6000_ptt. */
-RS6000_CPU ("401", PROCESSOR_PPC403, POWERPC_BASE_MASK | MASK_SOFT_FLOAT)
-RS6000_CPU ("403", PROCESSOR_PPC403,
- POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_STRICT_ALIGN)
-RS6000_CPU ("405", PROCESSOR_PPC405,
- POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("405fp", PROCESSOR_PPC405,
- POWERPC_BASE_MASK | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("440", PROCESSOR_PPC440,
- POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("440fp", PROCESSOR_PPC440,
- POWERPC_BASE_MASK | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("464", PROCESSOR_PPC440,
- POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("464fp", PROCESSOR_PPC440,
- POWERPC_BASE_MASK | MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("401", PROCESSOR_PPC403, MASK_SOFT_FLOAT)
+RS6000_CPU ("403", PROCESSOR_PPC403, MASK_SOFT_FLOAT | MASK_STRICT_ALIGN)
+RS6000_CPU ("405", PROCESSOR_PPC405, MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("405fp", PROCESSOR_PPC405, MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("440", PROCESSOR_PPC440, MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("440fp", PROCESSOR_PPC440, MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("464", PROCESSOR_PPC440, MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("464fp", PROCESSOR_PPC440, MASK_MULHW | MASK_DLMZB)
RS6000_CPU ("476", PROCESSOR_PPC476,
- POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_PPC_GFXOPT | MASK_MFCRF
- | MASK_POPCNTB | MASK_FPRND | MASK_CMPB | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("476fp", PROCESSOR_PPC476,
- POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB
+ MASK_SOFT_FLOAT | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB
| MASK_FPRND | MASK_CMPB | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("505", PROCESSOR_MPCCORE, POWERPC_BASE_MASK)
-RS6000_CPU ("601", PROCESSOR_PPC601,
- MASK_POWER | POWERPC_BASE_MASK | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("602", PROCESSOR_PPC603, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
-RS6000_CPU ("603", PROCESSOR_PPC603, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
-RS6000_CPU ("603e", PROCESSOR_PPC603, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
-RS6000_CPU ("604", PROCESSOR_PPC604, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
-RS6000_CPU ("604e", PROCESSOR_PPC604e, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
-RS6000_CPU ("620", PROCESSOR_PPC620,
- POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64)
-RS6000_CPU ("630", PROCESSOR_PPC630,
- POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64)
-RS6000_CPU ("740", PROCESSOR_PPC750, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
+RS6000_CPU ("476fp", PROCESSOR_PPC476,
+ MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
+ | MASK_CMPB | MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("505", PROCESSOR_MPCCORE, 0)
+RS6000_CPU ("601", PROCESSOR_PPC601, MASK_MULTIPLE | MASK_STRING)
+RS6000_CPU ("602", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
+RS6000_CPU ("603", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
+RS6000_CPU ("603e", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
+RS6000_CPU ("604", PROCESSOR_PPC604, MASK_PPC_GFXOPT)
+RS6000_CPU ("604e", PROCESSOR_PPC604e, MASK_PPC_GFXOPT)
+RS6000_CPU ("620", PROCESSOR_PPC620, MASK_PPC_GFXOPT | MASK_POWERPC64)
+RS6000_CPU ("630", PROCESSOR_PPC630, MASK_PPC_GFXOPT | MASK_POWERPC64)
+RS6000_CPU ("740", PROCESSOR_PPC750, MASK_PPC_GFXOPT)
RS6000_CPU ("7400", PROCESSOR_PPC7400, POWERPC_7400_MASK)
RS6000_CPU ("7450", PROCESSOR_PPC7450, POWERPC_7400_MASK)
-RS6000_CPU ("750", PROCESSOR_PPC750, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
-RS6000_CPU ("801", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT)
-RS6000_CPU ("821", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT)
-RS6000_CPU ("823", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT)
-RS6000_CPU ("8540", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN
- | MASK_ISEL)
-RS6000_CPU ("8548", PROCESSOR_PPC8548, POWERPC_BASE_MASK | MASK_STRICT_ALIGN
- | MASK_ISEL)
+RS6000_CPU ("750", PROCESSOR_PPC750, MASK_PPC_GFXOPT)
+RS6000_CPU ("801", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
+RS6000_CPU ("821", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
+RS6000_CPU ("823", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
+RS6000_CPU ("8540", PROCESSOR_PPC8540, MASK_STRICT_ALIGN | MASK_ISEL)
+RS6000_CPU ("8548", PROCESSOR_PPC8548, MASK_STRICT_ALIGN | MASK_ISEL)
RS6000_CPU ("a2", PROCESSOR_PPCA2,
- POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_POPCNTB
- | MASK_CMPB | MASK_NO_UPDATE)
-RS6000_CPU ("e300c2", PROCESSOR_PPCE300C2, POWERPC_BASE_MASK | MASK_SOFT_FLOAT)
-RS6000_CPU ("e300c3", PROCESSOR_PPCE300C3, POWERPC_BASE_MASK)
-RS6000_CPU ("e500mc", PROCESSOR_PPCE500MC, POWERPC_BASE_MASK | MASK_PPC_GFXOPT
- | MASK_ISEL)
+ MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_POPCNTB | MASK_CMPB
+ | MASK_NO_UPDATE)
+RS6000_CPU ("e300c2", PROCESSOR_PPCE300C2, MASK_SOFT_FLOAT)
+RS6000_CPU ("e300c3", PROCESSOR_PPCE300C3, 0)
+RS6000_CPU ("e500mc", PROCESSOR_PPCE500MC, MASK_PPC_GFXOPT | MASK_ISEL)
RS6000_CPU ("e500mc64", PROCESSOR_PPCE500MC64,
- POWERPC_BASE_MASK | MASK_POWERPC64 | MASK_PPC_GFXOPT | MASK_ISEL)
-RS6000_CPU ("e5500", PROCESSOR_PPCE5500, POWERPC_BASE_MASK | MASK_POWERPC64
- | MASK_PPC_GFXOPT | MASK_ISEL)
+ MASK_POWERPC64 | MASK_PPC_GFXOPT | MASK_ISEL)
+RS6000_CPU ("e5500", PROCESSOR_PPCE5500,
+ MASK_POWERPC64 | MASK_PPC_GFXOPT | MASK_ISEL)
RS6000_CPU ("e6500", PROCESSOR_PPCE6500, POWERPC_7400_MASK | MASK_POWERPC64
| MASK_MFCRF | MASK_ISEL)
-RS6000_CPU ("860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT)
+RS6000_CPU ("860", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
RS6000_CPU ("970", PROCESSOR_POWER4,
POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64)
RS6000_CPU ("cell", PROCESSOR_CELL,
POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64)
-RS6000_CPU ("common", PROCESSOR_COMMON, MASK_NEW_MNEMONICS)
-RS6000_CPU ("ec603e", PROCESSOR_PPC603, POWERPC_BASE_MASK | MASK_SOFT_FLOAT)
-RS6000_CPU ("G3", PROCESSOR_PPC750, POWERPC_BASE_MASK | MASK_PPC_GFXOPT)
+RS6000_CPU ("ec603e", PROCESSOR_PPC603, MASK_SOFT_FLOAT)
+RS6000_CPU ("G3", PROCESSOR_PPC750, MASK_PPC_GFXOPT)
RS6000_CPU ("G4", PROCESSOR_PPC7450, POWERPC_7400_MASK)
RS6000_CPU ("G5", PROCESSOR_POWER4,
POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64)
-RS6000_CPU ("titan", PROCESSOR_TITAN,
- POWERPC_BASE_MASK | MASK_MULHW | MASK_DLMZB)
-RS6000_CPU ("power", PROCESSOR_POWER, MASK_POWER | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("power2", PROCESSOR_POWER,
- MASK_POWER | MASK_POWER2 | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("power3", PROCESSOR_PPC630,
- POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64)
-RS6000_CPU ("power4", PROCESSOR_POWER4,
- POWERPC_BASE_MASK | MASK_POWERPC64 | MASK_PPC_GPOPT
+RS6000_CPU ("titan", PROCESSOR_TITAN, MASK_MULHW | MASK_DLMZB)
+RS6000_CPU ("power3", PROCESSOR_PPC630, MASK_PPC_GFXOPT | MASK_POWERPC64)
+RS6000_CPU ("power4", PROCESSOR_POWER4, MASK_POWERPC64 | MASK_PPC_GPOPT
| MASK_PPC_GFXOPT | MASK_MFCRF)
-RS6000_CPU ("power5", PROCESSOR_POWER5,
- POWERPC_BASE_MASK | MASK_POWERPC64 | MASK_PPC_GPOPT
+RS6000_CPU ("power5", PROCESSOR_POWER5, MASK_POWERPC64 | MASK_PPC_GPOPT
| MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB)
-RS6000_CPU ("power5+", PROCESSOR_POWER5,
- POWERPC_BASE_MASK | MASK_POWERPC64 | MASK_PPC_GPOPT
+RS6000_CPU ("power5+", PROCESSOR_POWER5, MASK_POWERPC64 | MASK_PPC_GPOPT
| MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND)
-RS6000_CPU ("power6", PROCESSOR_POWER6,
- POWERPC_BASE_MASK | MASK_POWERPC64 | MASK_PPC_GPOPT
+RS6000_CPU ("power6", PROCESSOR_POWER6, MASK_POWERPC64 | MASK_PPC_GPOPT
| MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
| MASK_CMPB | MASK_DFP | MASK_RECIP_PRECISION)
-RS6000_CPU ("power6x", PROCESSOR_POWER6,
- POWERPC_BASE_MASK | MASK_POWERPC64 | MASK_PPC_GPOPT
+RS6000_CPU ("power6x", PROCESSOR_POWER6, MASK_POWERPC64 | MASK_PPC_GPOPT
| MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
| MASK_CMPB | MASK_DFP | MASK_MFPGPR | MASK_RECIP_PRECISION)
RS6000_CPU ("power7", PROCESSOR_POWER7, /* Don't add MASK_ISEL by default */
POWERPC_7400_MASK | MASK_POWERPC64 | MASK_PPC_GPOPT | MASK_MFCRF
| MASK_POPCNTB | MASK_FPRND | MASK_CMPB | MASK_DFP | MASK_POPCNTD
| MASK_VSX | MASK_RECIP_PRECISION)
-RS6000_CPU ("powerpc", PROCESSOR_POWERPC, POWERPC_BASE_MASK)
-RS6000_CPU ("powerpc64", PROCESSOR_POWERPC64,
- POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64)
-RS6000_CPU ("rios", PROCESSOR_RIOS1, MASK_POWER | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("rios1", PROCESSOR_RIOS1, MASK_POWER | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("rios2", PROCESSOR_RIOS2,
- MASK_POWER | MASK_POWER2 | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("rsc", PROCESSOR_PPC601, MASK_POWER | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("rsc1", PROCESSOR_PPC601, MASK_POWER | MASK_MULTIPLE | MASK_STRING)
-RS6000_CPU ("rs64", PROCESSOR_RS64A,
- POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64)
+RS6000_CPU ("powerpc", PROCESSOR_POWERPC, 0)
+RS6000_CPU ("powerpc64", PROCESSOR_POWERPC64, MASK_PPC_GFXOPT | MASK_POWERPC64)
+RS6000_CPU ("rs64", PROCESSOR_RS64A, MASK_PPC_GFXOPT | MASK_POWERPC64)
diff --git a/gcc/config/rs6000/rs6000-opts.h b/gcc/config/rs6000/rs6000-opts.h
index 604fe171f97..ea5f10120c4 100644
--- a/gcc/config/rs6000/rs6000-opts.h
+++ b/gcc/config/rs6000/rs6000-opts.h
@@ -1,7 +1,6 @@
/* Definitions of target machine needed for option handling for GNU compiler,
for IBM RS/6000.
- Copyright (C) 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2010-2012 Free Software Foundation, Inc.
Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
This file is part of GCC.
@@ -31,8 +30,6 @@
/* Processor type. Order must match cpu attribute in MD file. */
enum processor_type
{
- PROCESSOR_RIOS1,
- PROCESSOR_RIOS2,
PROCESSOR_RS64A,
PROCESSOR_MPCCORE,
PROCESSOR_PPC403,
diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h
index 119482fbafc..09c1e0ecf22 100644
--- a/gcc/config/rs6000/rs6000-protos.h
+++ b/gcc/config/rs6000/rs6000-protos.h
@@ -38,6 +38,7 @@ extern bool macho_lo_sum_memory_operand (rtx, enum machine_mode);
extern int num_insns_constant (rtx, enum machine_mode);
extern int num_insns_constant_wide (HOST_WIDE_INT);
extern int small_data_operand (rtx, enum machine_mode);
+extern bool mem_operand_gpr (rtx, enum machine_mode);
extern bool toc_relative_expr_p (const_rtx, bool);
extern bool invalid_e500_subreg (rtx, enum machine_mode);
extern void validate_condition_mode (enum rtx_code, enum machine_mode);
@@ -83,7 +84,7 @@ extern bool (*rs6000_cannot_change_mode_class_ptr) (enum machine_mode,
enum machine_mode,
enum reg_class);
extern void rs6000_secondary_reload_inner (rtx, rtx, rtx, bool);
-extern void rs6000_secondary_reload_ppc64 (rtx, rtx, rtx, bool);
+extern void rs6000_secondary_reload_gpr (rtx, rtx, rtx, bool);
extern int paired_emit_vector_cond_expr (rtx, rtx, rtx,
rtx, rtx, rtx);
extern void paired_expand_vector_move (rtx operands[]);
@@ -121,9 +122,9 @@ extern void rs6000_emit_move (rtx, rtx, enum machine_mode);
extern rtx rs6000_secondary_memory_needed_rtx (enum machine_mode);
extern rtx (*rs6000_legitimize_reload_address_ptr) (rtx, enum machine_mode,
int, int, int, int *);
-extern bool rs6000_legitimate_offset_address_p (enum machine_mode, rtx, int);
+extern bool rs6000_legitimate_offset_address_p (enum machine_mode, rtx,
+ bool, bool);
extern rtx rs6000_find_base_term (rtx);
-extern bool rs6000_offsettable_memref_p (rtx);
extern rtx rs6000_return_addr (int, rtx);
extern void rs6000_output_symbol_ref (FILE*, rtx);
extern HOST_WIDE_INT rs6000_initial_elimination_offset (int, int);
diff --git a/gcc/config/rs6000/rs6000-tables.opt b/gcc/config/rs6000/rs6000-tables.opt
index ccf2b851f11..f63d9c4f6cc 100644
--- a/gcc/config/rs6000/rs6000-tables.opt
+++ b/gcc/config/rs6000/rs6000-tables.opt
@@ -141,71 +141,47 @@ EnumValue
Enum(rs6000_cpu_opt_value) String(cell) Value(37)
EnumValue
-Enum(rs6000_cpu_opt_value) String(common) Value(38)
+Enum(rs6000_cpu_opt_value) String(ec603e) Value(38)
EnumValue
-Enum(rs6000_cpu_opt_value) String(ec603e) Value(39)
+Enum(rs6000_cpu_opt_value) String(G3) Value(39)
EnumValue
-Enum(rs6000_cpu_opt_value) String(G3) Value(40)
+Enum(rs6000_cpu_opt_value) String(G4) Value(40)
EnumValue
-Enum(rs6000_cpu_opt_value) String(G4) Value(41)
+Enum(rs6000_cpu_opt_value) String(G5) Value(41)
EnumValue
-Enum(rs6000_cpu_opt_value) String(G5) Value(42)
+Enum(rs6000_cpu_opt_value) String(titan) Value(42)
EnumValue
-Enum(rs6000_cpu_opt_value) String(titan) Value(43)
+Enum(rs6000_cpu_opt_value) String(power3) Value(43)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power) Value(44)
+Enum(rs6000_cpu_opt_value) String(power4) Value(44)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power2) Value(45)
+Enum(rs6000_cpu_opt_value) String(power5) Value(45)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power3) Value(46)
+Enum(rs6000_cpu_opt_value) String(power5+) Value(46)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power4) Value(47)
+Enum(rs6000_cpu_opt_value) String(power6) Value(47)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power5) Value(48)
+Enum(rs6000_cpu_opt_value) String(power6x) Value(48)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power5+) Value(49)
+Enum(rs6000_cpu_opt_value) String(power7) Value(49)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power6) Value(50)
+Enum(rs6000_cpu_opt_value) String(powerpc) Value(50)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power6x) Value(51)
+Enum(rs6000_cpu_opt_value) String(powerpc64) Value(51)
EnumValue
-Enum(rs6000_cpu_opt_value) String(power7) Value(52)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(powerpc) Value(53)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(powerpc64) Value(54)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(rios) Value(55)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(rios1) Value(56)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(rios2) Value(57)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(rsc) Value(58)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(rsc1) Value(59)
-
-EnumValue
-Enum(rs6000_cpu_opt_value) String(rs64) Value(60)
+Enum(rs6000_cpu_opt_value) String(rs64) Value(52)
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index c124c639e0d..6c58307a60f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -1,8 +1,5 @@
/* Subroutines used for code generation on IBM RS/6000.
- Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
- 2012
- Free Software Foundation, Inc.
+ Copyright (C) 1991-2012 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GCC.
@@ -60,6 +57,7 @@
#include "params.h"
#include "tm-constrs.h"
#include "opts.h"
+#include "tree-vectorizer.h"
#if TARGET_XCOFF
#include "xcoffout.h" /* get declarations of xcoff_*_section_name */
#endif
@@ -354,44 +352,6 @@ struct processor_costs size64_cost = {
0,
};
-/* Instruction costs on RIOS1 processors. */
-static const
-struct processor_costs rios1_cost = {
- COSTS_N_INSNS (5), /* mulsi */
- COSTS_N_INSNS (4), /* mulsi_const */
- COSTS_N_INSNS (3), /* mulsi_const9 */
- COSTS_N_INSNS (5), /* muldi */
- COSTS_N_INSNS (19), /* divsi */
- COSTS_N_INSNS (19), /* divdi */
- COSTS_N_INSNS (2), /* fp */
- COSTS_N_INSNS (2), /* dmul */
- COSTS_N_INSNS (19), /* sdiv */
- COSTS_N_INSNS (19), /* ddiv */
- 128, /* cache line size */
- 64, /* l1 cache */
- 512, /* l2 cache */
- 0, /* streams */
-};
-
-/* Instruction costs on RIOS2 processors. */
-static const
-struct processor_costs rios2_cost = {
- COSTS_N_INSNS (2), /* mulsi */
- COSTS_N_INSNS (2), /* mulsi_const */
- COSTS_N_INSNS (2), /* mulsi_const9 */
- COSTS_N_INSNS (2), /* muldi */
- COSTS_N_INSNS (13), /* divsi */
- COSTS_N_INSNS (13), /* divdi */
- COSTS_N_INSNS (2), /* fp */
- COSTS_N_INSNS (2), /* dmul */
- COSTS_N_INSNS (17), /* sdiv */
- COSTS_N_INSNS (17), /* ddiv */
- 256, /* cache line size */
- 256, /* l1 cache */
- 1024, /* l2 cache */
- 0, /* streams */
-};
-
/* Instruction costs on RS64A processors. */
static const
struct processor_costs rs64a_cost = {
@@ -1273,10 +1233,6 @@ static const struct attribute_spec rs6000_attribute_table[] =
#undef TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD
#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD rs6000_builtin_mask_for_load
-#undef TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN
-#define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN rs6000_builtin_mul_widen_even
-#undef TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD
-#define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD rs6000_builtin_mul_widen_odd
#undef TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT
#define TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT \
rs6000_builtin_support_vector_misalignment
@@ -1288,6 +1244,14 @@ static const struct attribute_spec rs6000_attribute_table[] =
#undef TARGET_VECTORIZE_PREFERRED_SIMD_MODE
#define TARGET_VECTORIZE_PREFERRED_SIMD_MODE \
rs6000_preferred_simd_mode
+#undef TARGET_VECTORIZE_INIT_COST
+#define TARGET_VECTORIZE_INIT_COST rs6000_init_cost
+#undef TARGET_VECTORIZE_ADD_STMT_COST
+#define TARGET_VECTORIZE_ADD_STMT_COST rs6000_add_stmt_cost
+#undef TARGET_VECTORIZE_FINISH_COST
+#define TARGET_VECTORIZE_FINISH_COST rs6000_finish_cost
+#undef TARGET_VECTORIZE_DESTROY_COST_DATA
+#define TARGET_VECTORIZE_DESTROY_COST_DATA rs6000_destroy_cost_data
#undef TARGET_INIT_BUILTINS
#define TARGET_INIT_BUILTINS rs6000_init_builtins
@@ -1338,6 +1302,9 @@ static const struct attribute_spec rs6000_attribute_table[] =
#undef TARGET_INIT_DWARF_REG_SIZES_EXTRA
#define TARGET_INIT_DWARF_REG_SIZES_EXTRA rs6000_init_dwarf_reg_sizes_extra
+#undef TARGET_MEMBER_TYPE_FORCES_BLK
+#define TARGET_MEMBER_TYPE_FORCES_BLK rs6000_member_type_forces_blk
+
/* On rs6000, function arguments are promoted, as are function return
values. */
#undef TARGET_PROMOTE_FUNCTION_MODE
@@ -1493,8 +1460,7 @@ static const struct attribute_spec rs6000_attribute_table[] =
/* Simplifications for entries below. */
enum {
- POWERPC_BASE_MASK = MASK_POWERPC | MASK_NEW_MNEMONICS,
- POWERPC_7400_MASK = POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_ALTIVEC
+ POWERPC_7400_MASK = MASK_PPC_GFXOPT | MASK_ALTIVEC
};
/* Some OSs don't support saving the high part of 64-bit registers on context
@@ -1504,8 +1470,7 @@ enum {
the user's specification. */
enum {
- POWER_MASKS = MASK_POWER | MASK_POWER2 | MASK_MULTIPLE | MASK_STRING,
- POWERPC_MASKS = (POWERPC_BASE_MASK | MASK_PPC_GPOPT | MASK_STRICT_ALIGN
+ POWERPC_MASKS = (MASK_PPC_GPOPT | MASK_STRICT_ALIGN
| MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_ALTIVEC
| MASK_MFCRF | MASK_POPCNTB | MASK_FPRND | MASK_MULHW
| MASK_DLMZB | MASK_CMPB | MASK_MFPGPR | MASK_DFP
@@ -1788,7 +1753,6 @@ rs6000_debug_reg_global (void)
rs6000_debug_reg_print (LR_REGNO, LR_REGNO, "lr");
rs6000_debug_reg_print (CTR_REGNO, CTR_REGNO, "ctr");
rs6000_debug_reg_print (CR0_REGNO, CR7_REGNO, "cr");
- rs6000_debug_reg_print (MQ_REGNO, MQ_REGNO, "mq");
rs6000_debug_reg_print (CA_REGNO, CA_REGNO, "ca");
rs6000_debug_reg_print (VRSAVE_REGNO, VRSAVE_REGNO, "vrsave");
rs6000_debug_reg_print (VSCR_REGNO, VSCR_REGNO, "vscr");
@@ -2011,7 +1975,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
for (r = CR1_REGNO; r <= CR7_REGNO; ++r)
rs6000_regno_regclass[r] = CR_REGS;
- rs6000_regno_regclass[MQ_REGNO] = MQ_REGS;
rs6000_regno_regclass[LR_REGNO] = LINK_REGS;
rs6000_regno_regclass[CTR_REGNO] = CTR_REGS;
rs6000_regno_regclass[CA_REGNO] = CA_REGS;
@@ -2401,7 +2364,6 @@ rs6000_builtin_mask_calculate (void)
| ((TARGET_FRSQRTE) ? RS6000_BTM_FRSQRTE : 0)
| ((TARGET_FRSQRTES) ? RS6000_BTM_FRSQRTES : 0)
| ((TARGET_POPCNTD) ? RS6000_BTM_POPCNTD : 0)
- | ((TARGET_POWERPC) ? RS6000_BTM_POWERPC : 0)
| ((rs6000_cpu == PROCESSOR_CELL) ? RS6000_BTM_CELL : 0));
}
@@ -2454,7 +2416,7 @@ rs6000_option_override_internal (bool global_init_p)
rs6000_pointer_size = 32;
}
- set_masks = POWER_MASKS | POWERPC_MASKS | MASK_SOFT_FLOAT;
+ set_masks = POWERPC_MASKS | MASK_SOFT_FLOAT;
#ifdef OS_MISSING_POWERPC64
if (OS_MISSING_POWERPC64)
set_masks &= ~MASK_POWERPC64;
@@ -2997,14 +2959,6 @@ rs6000_option_override_internal (bool global_init_p)
else
switch (rs6000_cpu)
{
- case PROCESSOR_RIOS1:
- rs6000_cost = &rios1_cost;
- break;
-
- case PROCESSOR_RIOS2:
- rs6000_cost = &rios2_cost;
- break;
-
case PROCESSOR_RS64A:
rs6000_cost = &rs64a_cost;
break;
@@ -3285,53 +3239,6 @@ rs6000_loop_align_max_skip (rtx label)
return (1 << rs6000_loop_align (label)) - 1;
}
-/* Implement targetm.vectorize.builtin_mul_widen_even. */
-static tree
-rs6000_builtin_mul_widen_even (tree type)
-{
- if (!TARGET_ALTIVEC)
- return NULL_TREE;
-
- switch (TYPE_MODE (type))
- {
- case V8HImode:
- return TYPE_UNSIGNED (type)
- ? rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULEUH_UNS]
- : rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULESH];
-
- case V16QImode:
- return TYPE_UNSIGNED (type)
- ? rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULEUB_UNS]
- : rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULESB];
- default:
- return NULL_TREE;
- }
-}
-
-/* Implement targetm.vectorize.builtin_mul_widen_odd. */
-static tree
-rs6000_builtin_mul_widen_odd (tree type)
-{
- if (!TARGET_ALTIVEC)
- return NULL_TREE;
-
- switch (TYPE_MODE (type))
- {
- case V8HImode:
- return TYPE_UNSIGNED (type)
- ? rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULOUH_UNS]
- : rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULOSH];
-
- case V16QImode:
- return TYPE_UNSIGNED (type)
- ? rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULOUB_UNS]
- : rs6000_builtin_decls[ALTIVEC_BUILTIN_VMULOSB];
- default:
- return NULL_TREE;
- }
-}
-
-
/* Return true iff, data reference of TYPE can reach vector alignment (16)
after applying N number of iterations. This routine does not determine
how may iterations are required to reach desired alignment. */
@@ -3421,13 +3328,13 @@ rs6000_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
case vec_perm:
if (TARGET_VSX)
- return 4;
+ return 3;
else
return 1;
case vec_promote_demote:
if (TARGET_VSX)
- return 5;
+ return 4;
else
return 1;
@@ -3563,6 +3470,126 @@ rs6000_preferred_simd_mode (enum machine_mode mode)
return word_mode;
}
+typedef struct _rs6000_cost_data
+{
+ struct loop *loop_info;
+ unsigned cost[3];
+} rs6000_cost_data;
+
+/* Test for likely overcommitment of vector hardware resources. If a
+ loop iteration is relatively large, and too large a percentage of
+ instructions in the loop are vectorized, the cost model may not
+ adequately reflect delays from unavailable vector resources.
+ Penalize the loop body cost for this case. */
+
+static void
+rs6000_density_test (rs6000_cost_data *data)
+{
+ const int DENSITY_PCT_THRESHOLD = 85;
+ const int DENSITY_SIZE_THRESHOLD = 70;
+ const int DENSITY_PENALTY = 10;
+ struct loop *loop = data->loop_info;
+ basic_block *bbs = get_loop_body (loop);
+ int nbbs = loop->num_nodes;
+ int vec_cost = data->cost[vect_body], not_vec_cost = 0;
+ int i, density_pct;
+
+ for (i = 0; i < nbbs; i++)
+ {
+ basic_block bb = bbs[i];
+ gimple_stmt_iterator gsi;
+
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gimple stmt = gsi_stmt (gsi);
+ stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+
+ if (!STMT_VINFO_RELEVANT_P (stmt_info)
+ && !STMT_VINFO_IN_PATTERN_P (stmt_info))
+ not_vec_cost++;
+ }
+ }
+
+ free (bbs);
+ density_pct = (vec_cost * 100) / (vec_cost + not_vec_cost);
+
+ if (density_pct > DENSITY_PCT_THRESHOLD
+ && vec_cost + not_vec_cost > DENSITY_SIZE_THRESHOLD)
+ {
+ data->cost[vect_body] = vec_cost * (100 + DENSITY_PENALTY) / 100;
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump,
+ "density %d%%, cost %d exceeds threshold, penalizing "
+ "loop body cost by %d%%", density_pct,
+ vec_cost + not_vec_cost, DENSITY_PENALTY);
+ }
+}
+
+/* Implement targetm.vectorize.init_cost. */
+
+static void *
+rs6000_init_cost (struct loop *loop_info)
+{
+ rs6000_cost_data *data = XNEW (struct _rs6000_cost_data);
+ data->loop_info = loop_info;
+ data->cost[vect_prologue] = 0;
+ data->cost[vect_body] = 0;
+ data->cost[vect_epilogue] = 0;
+ return data;
+}
+
+/* Implement targetm.vectorize.add_stmt_cost. */
+
+static unsigned
+rs6000_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
+ struct _stmt_vec_info *stmt_info, int misalign,
+ enum vect_cost_model_location where)
+{
+ rs6000_cost_data *cost_data = (rs6000_cost_data*) data;
+ unsigned retval = 0;
+
+ if (flag_vect_cost_model)
+ {
+ tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
+ int stmt_cost = rs6000_builtin_vectorization_cost (kind, vectype,
+ misalign);
+ /* Statements in an inner loop relative to the loop being
+ vectorized are weighted more heavily. The value here is
+ arbitrary and could potentially be improved with analysis. */
+ if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info))
+ count *= 50; /* FIXME. */
+
+ retval = (unsigned) (count * stmt_cost);
+ cost_data->cost[where] += retval;
+ }
+
+ return retval;
+}
+
+/* Implement targetm.vectorize.finish_cost. */
+
+static void
+rs6000_finish_cost (void *data, unsigned *prologue_cost,
+ unsigned *body_cost, unsigned *epilogue_cost)
+{
+ rs6000_cost_data *cost_data = (rs6000_cost_data*) data;
+
+ if (cost_data->loop_info)
+ rs6000_density_test (cost_data);
+
+ *prologue_cost = cost_data->cost[vect_prologue];
+ *body_cost = cost_data->cost[vect_body];
+ *epilogue_cost = cost_data->cost[vect_epilogue];
+}
+
+/* Implement targetm.vectorize.destroy_cost_data. */
+
+static void
+rs6000_destroy_cost_data (void *data)
+{
+ free (data);
+}
+
/* Handler for the Mathematical Acceleration Subsystem (mass) interface to a
library with vectorized intrinsics. */
@@ -3999,11 +4026,11 @@ direct_return (void)
int
num_insns_constant_wide (HOST_WIDE_INT value)
{
- /* signed constant loadable with {cal|addi} */
+ /* signed constant loadable with addi */
if ((unsigned HOST_WIDE_INT) (value + 0x8000) < 0x10000)
return 1;
- /* constant loadable with {cau|addis} */
+ /* constant loadable with addis */
else if ((value & 0xffff) == 0
&& (value >> 31 == -1 || value >> 31 == 0))
return 1;
@@ -5007,6 +5034,78 @@ gpr_or_gpr_p (rtx op0, rtx op1)
|| (REG_P (op1) && INT_REGNO_P (REGNO (op1))));
}
+/* Given an address, return a constant offset term if one exists. */
+
+static rtx
+address_offset (rtx op)
+{
+ if (GET_CODE (op) == PRE_INC
+ || GET_CODE (op) == PRE_DEC)
+ op = XEXP (op, 0);
+ else if (GET_CODE (op) == PRE_MODIFY
+ || GET_CODE (op) == LO_SUM)
+ op = XEXP (op, 1);
+
+ if (GET_CODE (op) == CONST)
+ op = XEXP (op, 0);
+
+ if (GET_CODE (op) == PLUS)
+ op = XEXP (op, 1);
+
+ if (CONST_INT_P (op))
+ return op;
+
+ return NULL_RTX;
+}
+
+/* Return true if the MEM operand is a memory operand suitable for use
+ with a (full width, possibly multiple) gpr load/store. On
+ powerpc64 this means the offset must be divisible by 4.
+ Implements 'Y' constraint.
+
+ Accept direct, indexed, offset, lo_sum and tocref. Since this is
+ a constraint function we know the operand has satisfied a suitable
+ memory predicate. Also accept some odd rtl generated by reload
+ (see rs6000_legitimize_reload_address for various forms). It is
+ important that reload rtl be accepted by appropriate constraints
+ but not by the operand predicate.
+
+ Offsetting a lo_sum should not be allowed, except where we know by
+ alignment that a 32k boundary is not crossed, but see the ???
+ comment in rs6000_legitimize_reload_address. Note that by
+ "offsetting" here we mean a further offset to access parts of the
+ MEM. It's fine to have a lo_sum where the inner address is offset
+ from a sym, since the same sym+offset will appear in the high part
+ of the address calculation. */
+
+bool
+mem_operand_gpr (rtx op, enum machine_mode mode)
+{
+ unsigned HOST_WIDE_INT offset;
+ int extra;
+ rtx addr = XEXP (op, 0);
+
+ op = address_offset (addr);
+ if (op == NULL_RTX)
+ return true;
+
+ offset = INTVAL (op);
+ if (TARGET_POWERPC64 && (offset & 3) != 0)
+ return false;
+
+ if (GET_CODE (addr) == LO_SUM)
+ /* We know by alignment that ABI_AIX medium/large model toc refs
+ will not cross a 32k boundary, since all entries in the
+ constant pool are naturally aligned and we check alignment for
+ other medium model toc-relative addresses. For ABI_V4 and
+ ABI_DARWIN lo_sum addresses, we just check that 64-bit
+ offsets are 4-byte aligned. */
+ return true;
+
+ extra = GET_MODE_SIZE (mode) - UNITS_PER_WORD;
+ gcc_assert (extra >= 0);
+ return offset + 0x8000 < 0x10000u - extra;
+}
/* Subroutines of rs6000_legitimize_address and rs6000_legitimate_address_p. */
@@ -5224,13 +5323,15 @@ legitimate_small_data_p (enum machine_mode mode, rtx x)
#define SPE_CONST_OFFSET_OK(x) (((x) & ~0xf8) == 0)
bool
-rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict)
+rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x,
+ bool strict, bool worst_case)
{
- unsigned HOST_WIDE_INT offset, extra;
+ unsigned HOST_WIDE_INT offset;
+ unsigned int extra;
if (GET_CODE (x) != PLUS)
return false;
- if (GET_CODE (XEXP (x, 0)) != REG)
+ if (!REG_P (XEXP (x, 0)))
return false;
if (!INT_REG_OK_FOR_BASE_P (XEXP (x, 0), strict))
return false;
@@ -5253,14 +5354,6 @@ rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict)
return SPE_CONST_OFFSET_OK (offset);
case DFmode:
- if (TARGET_E500_DOUBLE)
- return SPE_CONST_OFFSET_OK (offset);
-
- /* If we are using VSX scalar loads, restrict ourselves to reg+reg
- addressing. */
- if (VECTOR_MEM_VSX_P (DFmode))
- return false;
-
case DDmode:
case DImode:
/* On e500v2, we may have:
@@ -5271,25 +5364,33 @@ rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict)
if (TARGET_E500_DOUBLE)
return SPE_CONST_OFFSET_OK (offset);
- if (mode == DFmode || mode == DDmode || !TARGET_POWERPC64)
+ /* If we are using VSX scalar loads, restrict ourselves to reg+reg
+ addressing. */
+ if (mode == DFmode && VECTOR_MEM_VSX_P (DFmode))
+ return false;
+
+ if (!worst_case)
+ break;
+ if (!TARGET_POWERPC64)
extra = 4;
else if (offset & 3)
return false;
break;
case TFmode:
+ case TDmode:
+ case TImode:
if (TARGET_E500_DOUBLE)
return (SPE_CONST_OFFSET_OK (offset)
&& SPE_CONST_OFFSET_OK (offset + 8));
- case TDmode:
- case TImode:
- if (mode == TFmode || mode == TDmode || !TARGET_POWERPC64)
+ extra = 8;
+ if (!worst_case)
+ break;
+ if (!TARGET_POWERPC64)
extra = 12;
else if (offset & 3)
return false;
- else
- extra = 8;
break;
default:
@@ -5369,9 +5470,7 @@ legitimate_lo_sum_address_p (enum machine_mode mode, rtx x, int strict)
if (!INT_REG_OK_FOR_BASE_P (XEXP (x, 0), strict))
return false;
/* Restrict addressing for DI because of our SUBREG hackery. */
- if (TARGET_E500_DOUBLE && (mode == DFmode || mode == TFmode
- || mode == DDmode || mode == TDmode
- || mode == DImode))
+ if (TARGET_E500_DOUBLE && GET_MODE_SIZE (mode) > UNITS_PER_WORD)
return false;
x = XEXP (x, 1);
@@ -5383,10 +5482,10 @@ legitimate_lo_sum_address_p (enum machine_mode mode, rtx x, int strict)
return false;
if (GET_MODE_NUNITS (mode) != 1)
return false;
- if (GET_MODE_BITSIZE (mode) > 64
- || (GET_MODE_BITSIZE (mode) > 32 && !TARGET_POWERPC64
- && !(TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
- && (mode == DFmode || mode == DDmode))))
+ if (GET_MODE_SIZE (mode) > UNITS_PER_WORD
+ && !(/* ??? Assume floating point reg based on mode? */
+ TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
+ && (mode == DFmode || mode == DDmode)))
return false;
return CONSTANT_P (x);
@@ -5421,7 +5520,7 @@ static rtx
rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
enum machine_mode mode)
{
- unsigned int extra = 0;
+ unsigned int extra;
if (!reg_offset_addressing_ok_p (mode))
{
@@ -5448,22 +5547,18 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
return rs6000_legitimize_tls_address (x, model);
}
+ extra = 0;
switch (mode)
{
- case DFmode:
- case DDmode:
- extra = 4;
- break;
- case DImode:
- if (!TARGET_POWERPC64)
- extra = 4;
- break;
case TFmode:
case TDmode:
- extra = 12;
- break;
case TImode:
- extra = TARGET_POWERPC64 ? 8 : 12;
+ /* As in legitimate_offset_address_p we do not assume
+ worst-case. The mode here is just a hint as to the registers
+ used. A TImode is usually in gprs, but may actually be in
+ fprs. Leave worst-case scenario for reload to handle via
+ insn constraints. */
+ extra = 8;
break;
default:
break;
@@ -5474,13 +5569,8 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
&& GET_CODE (XEXP (x, 1)) == CONST_INT
&& ((unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000)
>= 0x10000 - extra)
- && !((TARGET_POWERPC64
- && (mode == DImode || mode == TImode)
- && (INTVAL (XEXP (x, 1)) & 3) != 0)
- || SPE_VECTOR_MODE (mode)
- || (TARGET_E500_DOUBLE && (mode == DFmode || mode == TFmode
- || mode == DImode || mode == DDmode
- || mode == TDmode))))
+ && !(SPE_VECTOR_MODE (mode)
+ || (TARGET_E500_DOUBLE && GET_MODE_SIZE (mode) > UNITS_PER_WORD)))
{
HOST_WIDE_INT high_int, low_int;
rtx sum;
@@ -5496,23 +5586,17 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
&& GET_CODE (XEXP (x, 0)) == REG
&& GET_CODE (XEXP (x, 1)) != CONST_INT
&& GET_MODE_NUNITS (mode) == 1
- && ((TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT)
- || TARGET_POWERPC64
- || ((mode != DImode && mode != DFmode && mode != DDmode)
- || (TARGET_E500_DOUBLE && mode != DDmode)))
- && (TARGET_POWERPC64 || mode != DImode)
- && !avoiding_indexed_address_p (mode)
- && mode != TImode
- && mode != TFmode
- && mode != TDmode)
+ && (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
+ || (/* ??? Assume floating point reg based on mode? */
+ (TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT)
+ && (mode == DFmode || mode == DDmode)))
+ && !avoiding_indexed_address_p (mode))
{
return gen_rtx_PLUS (Pmode, XEXP (x, 0),
force_reg (Pmode, force_operand (XEXP (x, 1), 0)));
}
else if (SPE_VECTOR_MODE (mode)
- || (TARGET_E500_DOUBLE && (mode == DFmode || mode == TFmode
- || mode == DDmode || mode == TDmode
- || mode == DImode)))
+ || (TARGET_E500_DOUBLE && GET_MODE_SIZE (mode) > UNITS_PER_WORD))
{
if (mode == DImode)
return x;
@@ -5545,7 +5629,11 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
return force_reg (Pmode, x);
}
- else if (TARGET_ELF
+ else if ((TARGET_ELF
+#if TARGET_MACHO
+ || !MACHO_DYNAMIC_NO_PIC_P
+#endif
+ )
&& TARGET_32BIT
&& TARGET_NO_TOC
&& ! flag_pic
@@ -5553,30 +5641,16 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
&& GET_CODE (x) != CONST_DOUBLE
&& CONSTANT_P (x)
&& GET_MODE_NUNITS (mode) == 1
- && (GET_MODE_BITSIZE (mode) <= 32
- || ((TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT)
+ && (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
+ || (/* ??? Assume floating point reg based on mode? */
+ (TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT)
&& (mode == DFmode || mode == DDmode))))
{
rtx reg = gen_reg_rtx (Pmode);
- emit_insn (gen_elf_high (reg, x));
- return gen_rtx_LO_SUM (Pmode, reg, x);
- }
- else if (TARGET_MACHO && TARGET_32BIT && TARGET_NO_TOC
- && ! flag_pic
-#if TARGET_MACHO
- && ! MACHO_DYNAMIC_NO_PIC_P
-#endif
- && GET_CODE (x) != CONST_INT
- && GET_CODE (x) != CONST_DOUBLE
- && CONSTANT_P (x)
- && GET_MODE_NUNITS (mode) == 1
- && ((TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT)
- || (mode != DFmode && mode != DDmode))
- && mode != DImode
- && mode != TImode)
- {
- rtx reg = gen_reg_rtx (Pmode);
- emit_insn (gen_macho_high (reg, x));
+ if (TARGET_ELF)
+ emit_insn (gen_elf_high (reg, x));
+ else
+ emit_insn (gen_macho_high (reg, x));
return gen_rtx_LO_SUM (Pmode, reg, x);
}
else if (TARGET_TOC
@@ -6167,7 +6241,18 @@ rs6000_legitimize_reload_address (rtx x, enum machine_mode mode,
#endif
/* Don't do this for TFmode or TDmode, since the result isn't offsettable.
The same goes for DImode without 64-bit gprs and DFmode and DDmode
- without fprs. */
+ without fprs.
+ ??? Assume floating point reg based on mode? This assumption is
+ violated by eg. powerpc-linux -m32 compile of gcc.dg/pr28796-2.c
+ where reload ends up doing a DFmode load of a constant from
+ mem using two gprs. Unfortunately, at this point reload
+ hasn't yet selected regs so poking around in reload data
+ won't help and even if we could figure out the regs reliably,
+ we'd still want to allow this transformation when the mem is
+ naturally aligned. Since we say the address is good here, we
+ can't disable offsets from LO_SUMs in mem_operand_gpr.
+ FIXME: Allow offset from lo_sum for other modes too, when
+ mem is sufficiently aligned. */
&& mode != TFmode
&& mode != TDmode
&& (mode != DImode || TARGET_POWERPC64)
@@ -6317,7 +6402,7 @@ rs6000_legitimate_address_p (enum machine_mode mode, rtx x, bool reg_ok_strict)
|| XEXP (x, 0) == arg_pointer_rtx)
&& GET_CODE (XEXP (x, 1)) == CONST_INT)
return 1;
- if (rs6000_legitimate_offset_address_p (mode, x, reg_ok_strict))
+ if (rs6000_legitimate_offset_address_p (mode, x, reg_ok_strict, false))
return 1;
if (mode != TImode
&& mode != TFmode
@@ -6345,7 +6430,8 @@ rs6000_legitimate_address_p (enum machine_mode mode, rtx x, bool reg_ok_strict)
&& (mode == DFmode || mode == DDmode || mode == DImode))
&& TARGET_UPDATE
&& legitimate_indirect_address_p (XEXP (x, 0), reg_ok_strict)
- && (rs6000_legitimate_offset_address_p (mode, XEXP (x, 1), reg_ok_strict)
+ && (rs6000_legitimate_offset_address_p (mode, XEXP (x, 1),
+ reg_ok_strict, false)
|| (!avoiding_indexed_address_p (mode)
&& legitimate_indexed_address_p (XEXP (x, 1), reg_ok_strict)))
&& rtx_equal_p (XEXP (XEXP (x, 1), 0), XEXP (x, 0)))
@@ -6409,7 +6495,7 @@ rs6000_mode_dependent_address (const_rtx addr)
&& GET_CODE (XEXP (addr, 1)) == CONST_INT)
{
unsigned HOST_WIDE_INT val = INTVAL (XEXP (addr, 1));
- return val + 12 + 0x8000 >= 0x10000;
+ return val + 0x8000 >= 0x10000 - (TARGET_POWERPC64 ? 8 : 12);
}
break;
@@ -6479,14 +6565,16 @@ rs6000_find_base_term (rtx op)
in 32-bit mode, that the recog predicate rejects. */
-bool
-rs6000_offsettable_memref_p (rtx op)
+static bool
+rs6000_offsettable_memref_p (rtx op, enum machine_mode reg_mode)
{
+ bool worst_case;
+
if (!MEM_P (op))
return false;
/* First mimic offsettable_memref_p. */
- if (offsettable_address_p (1, GET_MODE (op), XEXP (op, 0)))
+ if (offsettable_address_p (true, GET_MODE (op), XEXP (op, 0)))
return true;
/* offsettable_address_p invokes rs6000_mode_dependent_address, but
@@ -6494,8 +6582,13 @@ rs6000_offsettable_memref_p (rtx op)
reference and, therefore, assumes that it is the largest supported
mode (TFmode). As a consequence, legitimate offsettable memory
references are rejected. rs6000_legitimate_offset_address_p contains
- the correct logic for the PLUS case of rs6000_mode_dependent_address. */
- return rs6000_legitimate_offset_address_p (GET_MODE (op), XEXP (op, 0), 1);
+ the correct logic for the PLUS case of rs6000_mode_dependent_address,
+ at least with a little bit of help here given that we know the
+ actual registers used. */
+ worst_case = ((TARGET_POWERPC64 && GET_MODE_CLASS (reg_mode) == MODE_INT)
+ || GET_MODE_SIZE (reg_mode) == 4);
+ return rs6000_legitimate_offset_address_p (GET_MODE (op), XEXP (op, 0),
+ true, worst_case);
}
/* Change register usage conditional on target flags. */
@@ -6507,11 +6600,9 @@ rs6000_conditional_register_usage (void)
if (TARGET_DEBUG_TARGET)
fprintf (stderr, "rs6000_conditional_register_usage called\n");
- /* Set MQ register fixed (already call_used) if not POWER
- architecture (RIOS1, RIOS2, RSC, and PPC601) so that it will not
- be allocated. */
- if (! TARGET_POWER)
- fixed_regs[64] = 1;
+ /* Set MQ register fixed (already call_used) so that it will not be
+ allocated. */
+ fixed_regs[64] = 1;
/* 64-bit AIX and Linux reserve GPR13 for thread-private data. */
if (TARGET_64BIT)
@@ -6864,32 +6955,6 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
&& !gpc_reg_operand (operands[1], mode))
operands[1] = force_reg (mode, operands[1]);
- if (mode == SFmode && ! TARGET_POWERPC
- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
- && GET_CODE (operands[0]) == MEM)
- {
- int regnum;
-
- if (reload_in_progress || reload_completed)
- regnum = true_regnum (operands[1]);
- else if (GET_CODE (operands[1]) == REG)
- regnum = REGNO (operands[1]);
- else
- regnum = -1;
-
- /* If operands[1] is a register, on POWER it may have
- double-precision data in it, so truncate it to single
- precision. */
- if (FP_REGNO_P (regnum) || regnum >= FIRST_PSEUDO_REGISTER)
- {
- rtx newreg;
- newreg = (!can_create_pseudo_p () ? copy_rtx (operands[1])
- : gen_reg_rtx (mode));
- emit_insn (gen_aux_truncdfsf2 (newreg, operands[1]));
- operands[1] = newreg;
- }
- }
-
/* Recognize the case where operand[1] is a reference to thread-local
data and load its address to a register. */
if (rs6000_tls_referenced_p (operands[1]))
@@ -7183,17 +7248,6 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
case TImode:
rs6000_eliminate_indexed_memrefs (operands);
-
- if (TARGET_POWER)
- {
- emit_insn (gen_rtx_PARALLEL (VOIDmode,
- gen_rtvec (2,
- gen_rtx_SET (VOIDmode,
- operands[0], operands[1]),
- gen_rtx_CLOBBER (VOIDmode,
- gen_rtx_SCRATCH (SImode)))));
- return;
- }
break;
default:
@@ -7209,6 +7263,26 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
emit_set:
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1]));
}
+
+/* Return true if a structure, union or array containing FIELD should be
+ accessed using `BLKMODE'.
+
+ For the SPE, simd types are V2SI, and gcc can be tempted to put the
+ entire thing in a DI and use subregs to access the internals.
+ store_bit_field() will force (subreg:DI (reg:V2SI x))'s to the
+ back-end. Because a single GPR can hold a V2SI, but not a DI, the
+ best thing to do is set structs to BLKmode and avoid Severe Tire
+ Damage.
+
+ On e500 v2, DF and DI modes suffer from the same anomaly. DF can
+ fit into 1, whereas DI still needs two. */
+
+static bool
+rs6000_member_type_forces_blk (const_tree field, enum machine_mode mode)
+{
+ return ((TARGET_SPE && TREE_CODE (TREE_TYPE (field)) == VECTOR_TYPE)
+ || (TARGET_E500_DOUBLE && mode == DFmode));
+}
/* Nonzero if we can use a floating-point register to pass this arg. */
#define USE_FP_FOR_ARG_P(CUM,MODE,TYPE) \
@@ -12607,16 +12681,6 @@ rs6000_common_init_builtins (void)
static void
rs6000_init_libfuncs (void)
{
- if (DEFAULT_ABI != ABI_V4 && TARGET_XCOFF
- && !TARGET_POWER2 && !TARGET_POWERPC)
- {
- /* AIX library routines for float->int conversion. */
- set_conv_libfunc (sfix_optab, SImode, DFmode, "__itrunc");
- set_conv_libfunc (ufix_optab, SImode, DFmode, "__uitrunc");
- set_conv_libfunc (sfix_optab, SImode, TFmode, "_qitrunc");
- set_conv_libfunc (ufix_optab, SImode, TFmode, "_quitrunc");
- }
-
if (!TARGET_IEEEQUAD)
/* AIX/Darwin/64-bit Linux quad floating point routines. */
if (!TARGET_XL_COMPAT)
@@ -12665,7 +12729,7 @@ rs6000_init_libfuncs (void)
set_optab_libfunc (neg_optab, TFmode, "_q_neg");
set_optab_libfunc (smul_optab, TFmode, "_q_mul");
set_optab_libfunc (sdiv_optab, TFmode, "_q_div");
- if (TARGET_PPC_GPOPT || TARGET_POWER2)
+ if (TARGET_PPC_GPOPT)
set_optab_libfunc (sqrt_optab, TFmode, "_q_sqrt");
set_optab_libfunc (eq_optab, TFmode, "_q_feq");
@@ -12986,7 +13050,7 @@ rs6000_output_load_multiple (rtx operands[3])
rtx xop[10];
if (XVECLEN (operands[0], 0) == 1)
- return "{l|lwz} %2,0(%1)";
+ return "lwz %2,0(%1)";
for (i = 0; i < words; i++)
if (refers_to_regno_p (REGNO (operands[2]) + i,
@@ -12997,7 +13061,7 @@ rs6000_output_load_multiple (rtx operands[3])
xop[0] = GEN_INT (4 * (words-1));
xop[1] = operands[1];
xop[2] = operands[2];
- output_asm_insn ("{lsi|lswi} %2,%1,%0\n\t{l|lwz} %1,%0(%1)", xop);
+ output_asm_insn ("lswi %2,%1,%0\n\tlwz %1,%0(%1)", xop);
return "";
}
else if (i == 0)
@@ -13005,7 +13069,7 @@ rs6000_output_load_multiple (rtx operands[3])
xop[0] = GEN_INT (4 * (words-1));
xop[1] = operands[1];
xop[2] = gen_rtx_REG (SImode, REGNO (operands[2]) + 1);
- output_asm_insn ("{cal %1,4(%1)|addi %1,%1,4}\n\t{lsi|lswi} %2,%1,%0\n\t{l|lwz} %1,-4(%1)", xop);
+ output_asm_insn ("addi %1,%1,4\n\tlswi %2,%1,%0\n\tlwz %1,-4(%1)", xop);
return "";
}
else
@@ -13016,16 +13080,16 @@ rs6000_output_load_multiple (rtx operands[3])
xop[0] = GEN_INT (j * 4);
xop[1] = operands[1];
xop[2] = gen_rtx_REG (SImode, REGNO (operands[2]) + j);
- output_asm_insn ("{l|lwz} %2,%0(%1)", xop);
+ output_asm_insn ("lwz %2,%0(%1)", xop);
}
xop[0] = GEN_INT (i * 4);
xop[1] = operands[1];
- output_asm_insn ("{l|lwz} %1,%0(%1)", xop);
+ output_asm_insn ("lwz %1,%0(%1)", xop);
return "";
}
}
- return "{lsi|lswi} %2,%1,%N0";
+ return "lswi %2,%1,%N0";
}
@@ -13506,7 +13570,8 @@ rs6000_secondary_reload (bool in_p,
if (rclass == GENERAL_REGS || rclass == BASE_REGS)
{
if (!legitimate_indirect_address_p (addr, false)
- && !rs6000_legitimate_offset_address_p (TImode, addr, false))
+ && !rs6000_legitimate_offset_address_p (TImode, addr,
+ false, true))
{
sri->icode = icode;
/* account for splitting the loads, and converting the
@@ -13579,18 +13644,12 @@ rs6000_secondary_reload (bool in_p,
&& MEM_P (x)
&& GET_MODE_SIZE (GET_MODE (x)) >= UNITS_PER_WORD)
{
- rtx addr = XEXP (x, 0);
+ rtx off = address_offset (XEXP (x, 0));
+ unsigned int extra = GET_MODE_SIZE (GET_MODE (x)) - UNITS_PER_WORD;
- if (GET_CODE (addr) == PRE_MODIFY)
- addr = XEXP (addr, 1);
- else if (GET_CODE (addr) == LO_SUM
- && GET_CODE (XEXP (addr, 0)) == REG
- && GET_CODE (XEXP (addr, 1)) == CONST)
- addr = XEXP (XEXP (addr, 1), 0);
-
- if (GET_CODE (addr) == PLUS
- && GET_CODE (XEXP (addr, 1)) == CONST_INT
- && (INTVAL (XEXP (addr, 1)) & 3) != 0)
+ if (off != NULL_RTX
+ && (INTVAL (off) & 3) != 0
+ && (unsigned HOST_WIDE_INT) INTVAL (off) + 0x8000 < 0x10000 - extra)
{
if (in_p)
sri->icode = CODE_FOR_reload_di_load;
@@ -13602,6 +13661,34 @@ rs6000_secondary_reload (bool in_p,
else
default_p = true;
}
+ else if (!TARGET_POWERPC64
+ && rs6000_reload_register_type (rclass) == GPR_REGISTER_TYPE
+ && MEM_P (x)
+ && GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD)
+ {
+ rtx off = address_offset (XEXP (x, 0));
+ unsigned int extra = GET_MODE_SIZE (GET_MODE (x)) - UNITS_PER_WORD;
+
+ /* We need a secondary reload only when our legitimate_address_p
+ says the address is good (as otherwise the entire address
+ will be reloaded). So for mode sizes of 8 and 16 this will
+ be when the offset is in the ranges [0x7ffc,0x7fff] and
+ [0x7ff4,0x7ff7] respectively. Note that the address we see
+ here may have been manipulated by legitimize_reload_address. */
+ if (off != NULL_RTX
+ && ((unsigned HOST_WIDE_INT) INTVAL (off) - (0x8000 - extra)
+ < UNITS_PER_WORD))
+ {
+ if (in_p)
+ sri->icode = CODE_FOR_reload_si_load;
+ else
+ sri->icode = CODE_FOR_reload_si_store;
+ sri->extra_cost = 2;
+ ret = NO_REGS;
+ }
+ else
+ default_p = true;
+ }
else
default_p = true;
@@ -13690,8 +13777,9 @@ rs6000_secondary_reload_inner (rtx reg, rtx mem, rtx scratch, bool store_p)
}
if (GET_CODE (addr) == PLUS
- && (!rs6000_legitimate_offset_address_p (TImode, addr, false)
- || and_op2 != NULL_RTX))
+ && (and_op2 != NULL_RTX
+ || !rs6000_legitimate_offset_address_p (TImode, addr,
+ false, true)))
{
addr_op1 = XEXP (addr, 0);
addr_op2 = XEXP (addr, 1);
@@ -13723,7 +13811,8 @@ rs6000_secondary_reload_inner (rtx reg, rtx mem, rtx scratch, bool store_p)
scratch_or_premodify = scratch;
}
else if (!legitimate_indirect_address_p (addr, false)
- && !rs6000_legitimate_offset_address_p (TImode, addr, false))
+ && !rs6000_legitimate_offset_address_p (TImode, addr,
+ false, true))
{
if (TARGET_DEBUG_ADDR)
{
@@ -13782,7 +13871,7 @@ rs6000_secondary_reload_inner (rtx reg, rtx mem, rtx scratch, bool store_p)
&& GET_MODE_SIZE (mode) == 8
&& and_op2 == NULL_RTX
&& scratch_or_premodify == scratch
- && rs6000_legitimate_offset_address_p (mode, addr, false)))
+ && rs6000_legitimate_offset_address_p (mode, addr, false, false)))
;
else if (GET_CODE (addr) == PLUS)
@@ -13891,10 +13980,11 @@ rs6000_secondary_reload_inner (rtx reg, rtx mem, rtx scratch, bool store_p)
}
/* Convert reloads involving 64-bit gprs and misaligned offset
- addressing to use indirect addressing. */
+ addressing, or multiple 32-bit gprs and offsets that are too large,
+ to use indirect addressing. */
void
-rs6000_secondary_reload_ppc64 (rtx reg, rtx mem, rtx scratch, bool store_p)
+rs6000_secondary_reload_gpr (rtx reg, rtx mem, rtx scratch, bool store_p)
{
int regno = true_regnum (reg);
enum reg_class rclass;
@@ -13903,7 +13993,7 @@ rs6000_secondary_reload_ppc64 (rtx reg, rtx mem, rtx scratch, bool store_p)
if (TARGET_DEBUG_ADDR)
{
- fprintf (stderr, "\nrs6000_secondary_reload_ppc64, type = %s\n",
+ fprintf (stderr, "\nrs6000_secondary_reload_gpr, type = %s\n",
store_p ? "store" : "load");
fprintf (stderr, "reg:\n");
debug_rtx (reg);
@@ -14890,7 +14980,7 @@ print_operand (FILE *file, rtx x, int code)
&& REGNO (x) != CTR_REGNO))
output_operand_lossage ("invalid %%T value");
else if (REGNO (x) == LR_REGNO)
- fputs (TARGET_NEW_MNEMONICS ? "lr" : "r", file);
+ fputs ("lr", file);
else
fputs ("ctr", file);
return;
@@ -15855,8 +15945,7 @@ output_cbranch (rtx op, const char *label, int reversed, rtx insn)
gcc_unreachable ();
}
- /* Maybe we have a guess as to how likely the branch is.
- The old mnemonics don't have a way to specify this information. */
+ /* Maybe we have a guess as to how likely the branch is. */
pred = "";
note = find_reg_note (insn, REG_BR_PROB, NULL_RTX);
if (note != NULL_RTX)
@@ -15883,9 +15972,9 @@ output_cbranch (rtx op, const char *label, int reversed, rtx insn)
}
if (label == NULL)
- s += sprintf (s, "{b%sr|b%slr%s} ", ccode, ccode, pred);
+ s += sprintf (s, "b%slr%s ", ccode, pred);
else
- s += sprintf (s, "{b%s|b%s%s} ", ccode, ccode, pred);
+ s += sprintf (s, "b%s%s ", ccode, pred);
/* We need to escape any '%' characters in the reg_names string.
Assume they'd only be the first character.... */
@@ -16983,7 +17072,7 @@ rs6000_split_multireg_move (rtx dst, rtx src)
emit_insn (gen_add3_insn (breg, breg, delta_rtx));
src = replace_equiv_address (src, breg);
}
- else if (! rs6000_offsettable_memref_p (src))
+ else if (! rs6000_offsettable_memref_p (src, reg_mode))
{
if (GET_CODE (XEXP (src, 0)) == PRE_MODIFY)
{
@@ -17049,7 +17138,7 @@ rs6000_split_multireg_move (rtx dst, rtx src)
emit_insn (gen_add3_insn (breg, breg, delta_rtx));
dst = replace_equiv_address (dst, breg);
}
- else if (!rs6000_offsettable_memref_p (dst)
+ else if (!rs6000_offsettable_memref_p (dst, reg_mode)
&& GET_CODE (XEXP (dst, 0)) != LO_SUM)
{
if (GET_CODE (XEXP (dst, 0)) == PRE_MODIFY)
@@ -17087,7 +17176,7 @@ rs6000_split_multireg_move (rtx dst, rtx src)
}
}
else if (GET_CODE (XEXP (dst, 0)) != LO_SUM)
- gcc_assert (rs6000_offsettable_memref_p (dst));
+ gcc_assert (rs6000_offsettable_memref_p (dst, reg_mode));
}
for (i = 0; i < nregs; i++)
@@ -18721,9 +18810,9 @@ output_probe_stack_range (rtx reg1, rtx reg2)
xops[0] = reg1;
xops[1] = reg2;
if (TARGET_64BIT)
- output_asm_insn ("{cmp|cmpd} 0,%0,%1", xops);
+ output_asm_insn ("cmpd 0,%0,%1", xops);
else
- output_asm_insn ("{cmp|cmpw} 0,%0,%1", xops);
+ output_asm_insn ("cmpw 0,%0,%1", xops);
fputs ("\tbeq 0,", asm_out_file);
assemble_name_raw (asm_out_file, end_lab);
@@ -18731,11 +18820,11 @@ output_probe_stack_range (rtx reg1, rtx reg2)
/* TEST_ADDR = TEST_ADDR + PROBE_INTERVAL. */
xops[1] = GEN_INT (-PROBE_INTERVAL);
- output_asm_insn ("{cal %0,%1(%0)|addi %0,%0,%1}", xops);
+ output_asm_insn ("addi %0,%0,%1", xops);
/* Probe at TEST_ADDR and branch. */
xops[1] = gen_rtx_REG (Pmode, 0);
- output_asm_insn ("{st|stw} %1,0(%0)", xops);
+ output_asm_insn ("stw %1,0(%0)", xops);
fprintf (asm_out_file, "\tb ");
assemble_name_raw (asm_out_file, loop_lab);
fputc ('\n', asm_out_file);
@@ -20202,18 +20291,6 @@ rs6000_output_function_prologue (FILE *file,
}
}
- /* Write .extern for AIX common mode routines, if needed. */
- if (! TARGET_POWER && ! TARGET_POWERPC && ! common_mode_defined)
- {
- fputs ("\t.extern __mulh\n", file);
- fputs ("\t.extern __mull\n", file);
- fputs ("\t.extern __divss\n", file);
- fputs ("\t.extern __divus\n", file);
- fputs ("\t.extern __quoss\n", file);
- fputs ("\t.extern __quous\n", file);
- common_mode_defined = 1;
- }
-
rs6000_pic_labelno++;
}
@@ -22296,7 +22373,7 @@ output_function_profiler (FILE *file, int labelno)
fprintf (file, "\tmflr %s\n", reg_names[0]);
if (NO_PROFILE_COUNTERS)
{
- asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
+ asm_fprintf (file, "\tstw %s,4(%s)\n",
reg_names[0], reg_names[1]);
}
else if (TARGET_SECURE_PLT && flag_pic)
@@ -22309,29 +22386,29 @@ output_function_profiler (FILE *file, int labelno)
}
else
asm_fprintf (file, "\tbcl 20,31,1f\n1:\n");
- asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
+ asm_fprintf (file, "\tstw %s,4(%s)\n",
reg_names[0], reg_names[1]);
asm_fprintf (file, "\tmflr %s\n", reg_names[12]);
- asm_fprintf (file, "\t{cau|addis} %s,%s,",
+ asm_fprintf (file, "\taddis %s,%s,",
reg_names[12], reg_names[12]);
assemble_name (file, buf);
- asm_fprintf (file, "-1b@ha\n\t{cal|la} %s,", reg_names[0]);
+ asm_fprintf (file, "-1b@ha\n\tla %s,", reg_names[0]);
assemble_name (file, buf);
asm_fprintf (file, "-1b@l(%s)\n", reg_names[12]);
}
else if (flag_pic == 1)
{
fputs ("\tbl _GLOBAL_OFFSET_TABLE_@local-4\n", file);
- asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
+ asm_fprintf (file, "\tstw %s,4(%s)\n",
reg_names[0], reg_names[1]);
asm_fprintf (file, "\tmflr %s\n", reg_names[12]);
- asm_fprintf (file, "\t{l|lwz} %s,", reg_names[0]);
+ asm_fprintf (file, "\tlwz %s,", reg_names[0]);
assemble_name (file, buf);
asm_fprintf (file, "@got(%s)\n", reg_names[12]);
}
else if (flag_pic > 1)
{
- asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
+ asm_fprintf (file, "\tstw %s,4(%s)\n",
reg_names[0], reg_names[1]);
/* Now, we need to get the address of the label. */
if (TARGET_LINK_STACK)
@@ -22352,19 +22429,19 @@ output_function_profiler (FILE *file, int labelno)
fputs ("-.\n1:", file);
asm_fprintf (file, "\tmflr %s\n", reg_names[11]);
}
- asm_fprintf (file, "\t{l|lwz} %s,0(%s)\n",
+ asm_fprintf (file, "\tlwz %s,0(%s)\n",
reg_names[0], reg_names[11]);
- asm_fprintf (file, "\t{cax|add} %s,%s,%s\n",
+ asm_fprintf (file, "\tadd %s,%s,%s\n",
reg_names[0], reg_names[0], reg_names[11]);
}
else
{
- asm_fprintf (file, "\t{liu|lis} %s,", reg_names[12]);
+ asm_fprintf (file, "\tlis %s,", reg_names[12]);
assemble_name (file, buf);
fputs ("@ha\n", file);
- asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
+ asm_fprintf (file, "\tstw %s,4(%s)\n",
reg_names[0], reg_names[1]);
- asm_fprintf (file, "\t{cal|la} %s,", reg_names[0]);
+ asm_fprintf (file, "\tla %s,", reg_names[0]);
assemble_name (file, buf);
asm_fprintf (file, "@l(%s)\n", reg_names[12]);
}
@@ -22506,7 +22583,7 @@ rs6000_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost)
scheduling pass will not know about this latency since
the mtctr instruction, which has the latency associated
to it, will be generated by reload. */
- return TARGET_POWER ? 5 : 4;
+ return 4;
case TYPE_BRANCH:
/* Leave some extra cycles between a compare and its
dependent branch, to inhibit expensive mispredicts. */
@@ -23079,7 +23156,6 @@ rs6000_issue_rate (void)
return 1;
switch (rs6000_cpu_attr) {
- case CPU_RIOS1: /* ? */
case CPU_RS64A:
case CPU_PPC601: /* ? */
case CPU_PPC7450:
@@ -23099,7 +23175,6 @@ rs6000_issue_rate (void)
case CPU_PPCE6500:
case CPU_TITAN:
return 2;
- case CPU_RIOS2:
case CPU_PPC476:
case CPU_PPC604:
case CPU_PPC604E:
@@ -24851,7 +24926,7 @@ macho_branch_islands (void)
while (!VEC_empty (branch_island, branch_islands))
{
- branch_island *bi = VEC_last (branch_island, branch_islands);
+ branch_island *bi = &VEC_last (branch_island, branch_islands);
const char *label = IDENTIFIER_POINTER (bi->label_name);
const char *name = IDENTIFIER_POINTER (bi->function_name);
char name_buf[512];
@@ -27150,8 +27225,6 @@ rs6000_dbx_register_number (unsigned int regno)
{
if (regno <= 63 || write_symbols != DWARF2_DEBUG)
return regno;
- if (regno == MQ_REGNO)
- return 100;
if (regno == LR_REGNO)
return 108;
if (regno == CTR_REGNO)
@@ -27320,9 +27393,6 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] =
#ifdef MASK_STRICT_ALIGN
{ "strict-align", MASK_STRICT_ALIGN, false, false },
#endif
- { "power", MASK_POWER, false, false },
- { "power2", MASK_POWER2, false, false },
- { "powerpc", MASK_POWERPC, false, false },
{ "soft-float", MASK_SOFT_FLOAT, false, false },
{ "string", MASK_STRING, false, false },
};
@@ -27339,7 +27409,6 @@ static struct rs6000_opt_mask const rs6000_builtin_mask_names[] =
{ "frsqrte", RS6000_BTM_FRSQRTE, false, false },
{ "frsqrtes", RS6000_BTM_FRSQRTES, false, false },
{ "popcntd", RS6000_BTM_POPCNTD, false, false },
- { "powerpc", RS6000_BTM_POWERPC, false, false },
{ "cell", RS6000_BTM_CELL, false, false },
};
@@ -27925,7 +27994,7 @@ rs6000_allocate_stack_temp (enum machine_mode mode,
if (!legitimate_indirect_address_p (addr, strict_p))
{
if (offsettable_p
- && !rs6000_legitimate_offset_address_p (mode, addr, strict_p))
+ && !rs6000_legitimate_offset_address_p (mode, addr, strict_p, true))
stack = replace_equiv_address (stack, copy_addr_to_reg (addr));
else if (reg_reg_p && !legitimate_indexed_address_p (addr, strict_p))
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 97d551c2b29..4e33611baf4 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -1,8 +1,5 @@
/* Definitions of target machine for GNU compiler, for IBM RS/6000.
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1992-2012 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GCC.
@@ -104,17 +101,10 @@
you make changes here, make them also there. */
#define ASM_CPU_SPEC \
"%{!mcpu*: \
- %{mpower: %{!mpower2: -mpwr}} \
- %{mpower2: -mpwrx} \
%{mpowerpc64*: -mppc64} \
- %{!mpowerpc64*: %{mpowerpc*: -mppc}} \
- %{mno-power: %{!mpowerpc*: -mcom}} \
- %{!mno-power: %{!mpower*: %(asm_default)}}} \
+ %{!mpowerpc64*: %(asm_default)}} \
%{mcpu=native: %(asm_cpu_native)} \
-%{mcpu=common: -mcom} \
%{mcpu=cell: -mcell} \
-%{mcpu=power: -mpwr} \
-%{mcpu=power2: -mpwrx} \
%{mcpu=power3: -mppc64} \
%{mcpu=power4: -mpower4} \
%{mcpu=power5: %(asm_cpu_power5)} \
@@ -124,11 +114,6 @@
%{mcpu=power7: %(asm_cpu_power7)} \
%{mcpu=a2: -ma2} \
%{mcpu=powerpc: -mppc} \
-%{mcpu=rios: -mpwr} \
-%{mcpu=rios1: -mpwr} \
-%{mcpu=rios2: -mpwrx} \
-%{mcpu=rsc: -mpwr} \
-%{mcpu=rsc1: -mpwr} \
%{mcpu=rs64a: -mppc64} \
%{mcpu=401: -mppc} \
%{mcpu=403: -m403} \
@@ -340,7 +325,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
/* The option machinery will define this. */
#endif
-#define TARGET_DEFAULT (MASK_POWER | MASK_MULTIPLE | MASK_STRING)
+#define TARGET_DEFAULT (MASK_MULTIPLE | MASK_STRING)
/* FPU operations supported.
Each use of TARGET_SINGLE_FLOAT or TARGET_DOUBLE_FLOAT must
@@ -356,18 +341,13 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
/* Define generic processor types based upon current deployment. */
#define PROCESSOR_COMMON PROCESSOR_PPC601
-#define PROCESSOR_POWER PROCESSOR_RIOS1
#define PROCESSOR_POWERPC PROCESSOR_PPC604
#define PROCESSOR_POWERPC64 PROCESSOR_RS64A
/* Define the default processor. This is overridden by other tm.h files. */
-#define PROCESSOR_DEFAULT PROCESSOR_RIOS1
+#define PROCESSOR_DEFAULT PROCESSOR_PPC603
#define PROCESSOR_DEFAULT64 PROCESSOR_RS64A
-/* Specify the dialect of assembler to use. New mnemonics is dialect one
- and the old mnemonics are dialect zero. */
-#define ASSEMBLER_DIALECT (TARGET_NEW_MNEMONICS ? 1 : 0)
-
/* Debug support */
#define MASK_DEBUG_STACK 0x01 /* debug stack applications */
#define MASK_DEBUG_ARG 0x02 /* debug argument handling */
@@ -715,22 +695,6 @@ extern unsigned rs6000_pointer_size;
/* Every structure's size must be a multiple of this. */
#define STRUCTURE_SIZE_BOUNDARY 8
-/* Return 1 if a structure or array containing FIELD should be
- accessed using `BLKMODE'.
-
- For the SPE, simd types are V2SI, and gcc can be tempted to put the
- entire thing in a DI and use subregs to access the internals.
- store_bit_field() will force (subreg:DI (reg:V2SI x))'s to the
- back-end. Because a single GPR can hold a V2SI, but not a DI, the
- best thing to do is set structs to BLKmode and avoid Severe Tire
- Damage.
-
- On e500 v2, DF and DI modes suffer from the same anomaly. DF can
- fit into 1, whereas DI still needs two. */
-#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) \
- ((TARGET_SPE && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
- || (TARGET_E500_DOUBLE && (MODE) == DFmode))
-
/* A bit-field declared as `int' forces `int' alignment for the struct. */
#define PCC_BITFIELD_TYPE_MATTERS 1
@@ -786,9 +750,9 @@ extern unsigned rs6000_pointer_size;
even those that are not normally considered general registers.
RS/6000 has 32 fixed-point registers, 32 floating-point registers,
- an MQ register, a count register, a link register, and 8 condition
- register fields, which we view here as separate registers. AltiVec
- adds 32 vector registers and a VRsave register.
+ a count register, a link register, and 8 condition register fields,
+ which we view here as separate registers. AltiVec adds 32 vector
+ registers and a VRsave register.
In addition, the difference between the frame and argument pointers is
a function of the number of registers saved, so we need to have a
@@ -932,7 +896,6 @@ extern unsigned rs6000_pointer_size;
r0 (not saved; cannot be base reg)
r31 - r13 (saved; order given to save least number)
r12 (not saved; if used for DImode or DFmode would use r13)
- mq (not saved; best to use it if we can)
ctr (not saved; when we have the choice ctr is better)
lr (saved)
cr5, r1, r2, ap, ca (fixed)
@@ -974,7 +937,7 @@ extern unsigned rs6000_pointer_size;
3, EARLY_R12 11, 0, \
31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, \
18, 17, 16, 15, 14, 13, LATE_R12 \
- 64, 66, 65, \
+ 66, 65, \
73, 1, MAYBE_R2_FIXED 67, 76, \
/* AltiVec registers. */ \
77, 78, \
@@ -1172,7 +1135,7 @@ extern unsigned rs6000_pointer_size;
class that represents their union. */
/* The RS/6000 has three types of registers, fixed-point, floating-point, and
- condition registers, plus three special registers, MQ, CTR, and the link
+ condition registers, plus three special registers, CTR, and the link
register. AltiVec adds a vector register class. VSX registers overlap the
FPR registers and the Altivec registers.
@@ -1195,7 +1158,6 @@ enum reg_class
SPE_ACC_REGS,
SPEFSCR_REGS,
NON_SPECIAL_REGS,
- MQ_REGS,
LINK_REGS,
CTR_REGS,
LINK_OR_CTR_REGS,
@@ -1226,7 +1188,6 @@ enum reg_class
"SPE_ACC_REGS", \
"SPEFSCR_REGS", \
"NON_SPECIAL_REGS", \
- "MQ_REGS", \
"LINK_REGS", \
"CTR_REGS", \
"LINK_OR_CTR_REGS", \
@@ -1256,17 +1217,16 @@ enum reg_class
{ 0x00000000, 0x00000000, 0x00000000, 0x00008000 }, /* SPE_ACC_REGS */ \
{ 0x00000000, 0x00000000, 0x00000000, 0x00010000 }, /* SPEFSCR_REGS */ \
{ 0xffffffff, 0xffffffff, 0x00000008, 0x00020000 }, /* NON_SPECIAL_REGS */ \
- { 0x00000000, 0x00000000, 0x00000001, 0x00000000 }, /* MQ_REGS */ \
{ 0x00000000, 0x00000000, 0x00000002, 0x00000000 }, /* LINK_REGS */ \
{ 0x00000000, 0x00000000, 0x00000004, 0x00000000 }, /* CTR_REGS */ \
{ 0x00000000, 0x00000000, 0x00000006, 0x00000000 }, /* LINK_OR_CTR_REGS */ \
- { 0x00000000, 0x00000000, 0x00000007, 0x00002000 }, /* SPECIAL_REGS */ \
- { 0xffffffff, 0x00000000, 0x0000000f, 0x00022000 }, /* SPEC_OR_GEN_REGS */ \
+ { 0x00000000, 0x00000000, 0x00000006, 0x00002000 }, /* SPECIAL_REGS */ \
+ { 0xffffffff, 0x00000000, 0x0000000e, 0x00022000 }, /* SPEC_OR_GEN_REGS */ \
{ 0x00000000, 0x00000000, 0x00000010, 0x00000000 }, /* CR0_REGS */ \
{ 0x00000000, 0x00000000, 0x00000ff0, 0x00000000 }, /* CR_REGS */ \
- { 0xffffffff, 0x00000000, 0x00000fff, 0x00020000 }, /* NON_FLOAT_REGS */ \
+ { 0xffffffff, 0x00000000, 0x00000ffe, 0x00020000 }, /* NON_FLOAT_REGS */ \
{ 0x00000000, 0x00000000, 0x00001000, 0x00000000 }, /* CA_REGS */ \
- { 0xffffffff, 0xffffffff, 0xffffffff, 0x0003ffff } /* ALL_REGS */ \
+ { 0xffffffff, 0xffffffff, 0xfffffffe, 0x0003ffff } /* ALL_REGS */ \
}
/* The same information, inverted:
@@ -1821,11 +1781,6 @@ do { \
/* Define this as 1 if `char' should by default be signed; else as 0. */
#define DEFAULT_SIGNED_CHAR 0
-/* This flag, if defined, says the same insns that convert to a signed fixnum
- also convert validly to an unsigned one. */
-
-/* #define FIXUNS_TRUNC_LIKE_FIX_TRUNC */
-
/* An integer expression for the size in bits of the largest integer machine
mode that should actually be used. */
@@ -1890,8 +1845,7 @@ extern unsigned rs6000_pmode;
The sle and sre instructions which allow SHIFT_COUNT_TRUNCATED
have been dropped from the PowerPC architecture. */
-
-#define SHIFT_COUNT_TRUNCATED (TARGET_POWER ? 1 : 0)
+#define SHIFT_COUNT_TRUNCATED 0
/* Adjust the length of an INSN. LENGTH is the currently-computed length and
should be adjusted to reflect any required changes. This macro is used when
@@ -2124,7 +2078,7 @@ extern char rs6000_reg_names[][8]; /* register names (0 vs. %r0). */
&rs6000_reg_names[62][0], /* fr30 */ \
&rs6000_reg_names[63][0], /* fr31 */ \
\
- &rs6000_reg_names[64][0], /* mq */ \
+ &rs6000_reg_names[64][0], /* was mq */ \
&rs6000_reg_names[65][0], /* lr */ \
&rs6000_reg_names[66][0], /* ctr */ \
&rs6000_reg_names[67][0], /* ap */ \
@@ -2208,7 +2162,7 @@ extern char rs6000_reg_names[][8]; /* register names (0 vs. %r0). */
{"v28", 105},{"v29", 106},{"v30", 107},{"v31", 108}, \
{"vrsave", 109}, {"vscr", 110}, \
{"spe_acc", 111}, {"spefscr", 112}, \
- /* no additional names for: mq, lr, ctr, ap */ \
+ /* no additional names for: lr, ctr, ap */ \
{"cr0", 68}, {"cr1", 69}, {"cr2", 70}, {"cr3", 71}, \
{"cr4", 72}, {"cr5", 73}, {"cr6", 74}, {"cr7", 75}, \
{"cc", 68}, {"sp", 1}, {"toc", 2}, \
@@ -2326,6 +2280,7 @@ extern int frame_pointer_needed;
/* Builtin targets. For now, we reuse the masks for those options that are in
target flags, and pick two random bits for SPE and paired which aren't in
target_flags. */
+#define RS6000_BTM_ALWAYS 0 /* Always enabled. */
#define RS6000_BTM_ALTIVEC MASK_ALTIVEC /* VMX/altivec vectors. */
#define RS6000_BTM_VSX MASK_VSX /* VSX (vector/scalar). */
#define RS6000_BTM_SPE MASK_STRING /* E500 */
@@ -2335,7 +2290,6 @@ extern int frame_pointer_needed;
#define RS6000_BTM_FRSQRTE MASK_PPC_GFXOPT /* FRSQRTE instruction. */
#define RS6000_BTM_FRSQRTES MASK_POPCNTB /* FRSQRTES instruction. */
#define RS6000_BTM_POPCNTD MASK_POPCNTD /* Target supports ISA 2.06. */
-#define RS6000_BTM_POWERPC MASK_POWERPC /* Target is powerpc. */
#define RS6000_BTM_CELL MASK_FPRND /* Target is cell powerpc. */
#define RS6000_BTM_COMMON (RS6000_BTM_ALTIVEC \
@@ -2345,7 +2299,6 @@ extern int frame_pointer_needed;
| RS6000_BTM_FRSQRTE \
| RS6000_BTM_FRSQRTES \
| RS6000_BTM_POPCNTD \
- | RS6000_BTM_POWERPC \
| RS6000_BTM_CELL)
/* Define builtin enum index. */
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index b264221cc7a..d5ffd81b068 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -1,8 +1,5 @@
;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
-;; Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-;; 2011, 2012
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1990-2012 Free Software Foundation, Inc.
;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
;; This file is part of GCC.
@@ -32,7 +29,6 @@
(TOC_REGNUM 2)
(STATIC_CHAIN_REGNUM 11)
(HARD_FRAME_POINTER_REGNUM 31)
- (MQ_REGNO 64)
(LR_REGNO 65)
(CTR_REGNO 66)
(ARG_POINTER_REGNUM 67)
@@ -167,7 +163,7 @@
;; Processor type -- this attribute must exactly match the processor_type
;; enumeration in rs6000.h.
-(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc476,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,ppc8548,ppce300c2,ppce300c3,ppce500mc,ppce500mc64,ppce5500,ppce6500,power4,power5,power6,power7,cell,ppca2,titan"
+(define_attr "cpu" "rs64a,mpccore,ppc403,ppc405,ppc440,ppc476,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,ppc8548,ppce300c2,ppce300c3,ppce500mc,ppce500mc64,ppce5500,ppce6500,power4,power5,power6,power7,cell,ppca2,titan"
(const (symbol_ref "rs6000_cpu_attr")))
@@ -180,13 +176,12 @@
(automata_option "ndfa")
-(include "rios1.md")
-(include "rios2.md")
(include "rs64.md")
(include "mpc.md")
(include "40x.md")
(include "440.md")
(include "476.md")
+(include "601.md")
(include "603.md")
(include "6xx.md")
(include "7xx.md")
@@ -293,7 +288,7 @@
(define_mode_attr mptrsize [(SI "si")
(DI "di")])
-(define_mode_attr ptrload [(SI "{l|lwz}")
+(define_mode_attr ptrload [(SI "lwz")
(DI "ld")])
(define_mode_attr rreg [(SF "f")
@@ -602,7 +597,7 @@
""
"@
lbz%U1%X1 %0,%1
- {rlinm|rlwinm} %0,%1,0,0xff"
+ rlwinm %0,%1,0,0xff"
[(set_attr "type" "load,*")])
(define_insn ""
@@ -612,7 +607,7 @@
(clobber (match_scratch:SI 2 "=r,r"))]
""
"@
- {andil.|andi.} %2,%1,0xff
+ andi. %2,%1,0xff
#"
[(set_attr "type" "fast_compare,compare")
(set_attr "length" "4,8")])
@@ -638,7 +633,7 @@
(zero_extend:SI (match_dup 1)))]
""
"@
- {andil.|andi.} %0,%1,0xff
+ andi. %0,%1,0xff
#"
[(set_attr "type" "fast_compare,compare")
(set_attr "length" "4,8")])
@@ -657,25 +652,10 @@
(const_int 0)))]
"")
-(define_expand "extendqisi2"
- [(use (match_operand:SI 0 "gpc_reg_operand" ""))
- (use (match_operand:QI 1 "gpc_reg_operand" ""))]
- ""
- "
-{
- if (TARGET_POWERPC)
- emit_insn (gen_extendqisi2_ppc (operands[0], operands[1]));
- else if (TARGET_POWER)
- emit_insn (gen_extendqisi2_power (operands[0], operands[1]));
- else
- emit_insn (gen_extendqisi2_no_power (operands[0], operands[1]));
- DONE;
-}")
-
-(define_insn "extendqisi2_ppc"
+(define_insn "extendqisi2"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(sign_extend:SI (match_operand:QI 1 "gpc_reg_operand" "r")))]
- "TARGET_POWERPC"
+ ""
"extsb %0,%1"
[(set_attr "type" "exts")])
@@ -684,7 +664,7 @@
(compare:CC (sign_extend:SI (match_operand:QI 1 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 2 "=r,r"))]
- "TARGET_POWERPC"
+ ""
"@
extsb. %2,%1
#"
@@ -696,7 +676,7 @@
(compare:CC (sign_extend:SI (match_operand:QI 1 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 2 ""))]
- "TARGET_POWERPC && reload_completed"
+ "reload_completed"
[(set (match_dup 2)
(sign_extend:SI (match_dup 1)))
(set (match_dup 0)
@@ -710,7 +690,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(sign_extend:SI (match_dup 1)))]
- "TARGET_POWERPC"
+ ""
"@
extsb. %0,%1
#"
@@ -723,7 +703,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(sign_extend:SI (match_dup 1)))]
- "TARGET_POWERPC && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(sign_extend:SI (match_dup 1)))
(set (match_dup 2)
@@ -731,45 +711,13 @@
(const_int 0)))]
"")
-(define_expand "extendqisi2_power"
- [(parallel [(set (match_dup 2)
- (ashift:SI (match_operand:QI 1 "gpc_reg_operand" "")
- (const_int 24)))
- (clobber (scratch:SI))])
- (parallel [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (ashiftrt:SI (match_dup 2)
- (const_int 24)))
- (clobber (scratch:SI))])]
- "TARGET_POWER"
- "
-{ operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_reg_rtx (SImode); }")
-
-(define_expand "extendqisi2_no_power"
- [(set (match_dup 2)
- (ashift:SI (match_operand:QI 1 "gpc_reg_operand" "")
- (const_int 24)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ashiftrt:SI (match_dup 2)
- (const_int 24)))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "
-{ operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_reg_rtx (SImode); }")
-
-(define_expand "zero_extendqihi2"
- [(set (match_operand:HI 0 "gpc_reg_operand" "")
- (zero_extend:HI (match_operand:QI 1 "gpc_reg_operand" "")))]
- ""
- "")
-
(define_insn ""
[(set (match_operand:HI 0 "gpc_reg_operand" "=r,r")
(zero_extend:HI (match_operand:QI 1 "reg_or_mem_operand" "m,r")))]
""
"@
lbz%U1%X1 %0,%1
- {rlinm|rlwinm} %0,%1,0,0xff"
+ rlwinm %0,%1,0,0xff"
[(set_attr "type" "load,*")])
(define_insn ""
@@ -779,7 +727,7 @@
(clobber (match_scratch:HI 2 "=r,r"))]
""
"@
- {andil.|andi.} %2,%1,0xff
+ andi. %2,%1,0xff
#"
[(set_attr "type" "fast_compare,compare")
(set_attr "length" "4,8")])
@@ -805,7 +753,7 @@
(zero_extend:HI (match_dup 1)))]
""
"@
- {andil.|andi.} %0,%1,0xff
+ andi. %0,%1,0xff
#"
[(set_attr "type" "fast_compare,compare")
(set_attr "length" "4,8")])
@@ -824,25 +772,10 @@
(const_int 0)))]
"")
-(define_expand "extendqihi2"
- [(use (match_operand:HI 0 "gpc_reg_operand" ""))
- (use (match_operand:QI 1 "gpc_reg_operand" ""))]
- ""
- "
-{
- if (TARGET_POWERPC)
- emit_insn (gen_extendqihi2_ppc (operands[0], operands[1]));
- else if (TARGET_POWER)
- emit_insn (gen_extendqihi2_power (operands[0], operands[1]));
- else
- emit_insn (gen_extendqihi2_no_power (operands[0], operands[1]));
- DONE;
-}")
-
-(define_insn "extendqihi2_ppc"
+(define_insn "extendqihi2"
[(set (match_operand:HI 0 "gpc_reg_operand" "=r")
(sign_extend:HI (match_operand:QI 1 "gpc_reg_operand" "r")))]
- "TARGET_POWERPC"
+ ""
"extsb %0,%1"
[(set_attr "type" "exts")])
@@ -851,7 +784,7 @@
(compare:CC (sign_extend:HI (match_operand:QI 1 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:HI 2 "=r,r"))]
- "TARGET_POWERPC"
+ ""
"@
extsb. %2,%1
#"
@@ -863,7 +796,7 @@
(compare:CC (sign_extend:HI (match_operand:QI 1 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:HI 2 ""))]
- "TARGET_POWERPC && reload_completed"
+ "reload_completed"
[(set (match_dup 2)
(sign_extend:HI (match_dup 1)))
(set (match_dup 0)
@@ -877,7 +810,7 @@
(const_int 0)))
(set (match_operand:HI 0 "gpc_reg_operand" "=r,r")
(sign_extend:HI (match_dup 1)))]
- "TARGET_POWERPC"
+ ""
"@
extsb. %0,%1
#"
@@ -890,7 +823,7 @@
(const_int 0)))
(set (match_operand:HI 0 "gpc_reg_operand" "")
(sign_extend:HI (match_dup 1)))]
- "TARGET_POWERPC && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(sign_extend:HI (match_dup 1)))
(set (match_dup 2)
@@ -898,34 +831,6 @@
(const_int 0)))]
"")
-(define_expand "extendqihi2_power"
- [(parallel [(set (match_dup 2)
- (ashift:SI (match_operand:QI 1 "gpc_reg_operand" "")
- (const_int 24)))
- (clobber (scratch:SI))])
- (parallel [(set (match_operand:HI 0 "gpc_reg_operand" "")
- (ashiftrt:SI (match_dup 2)
- (const_int 24)))
- (clobber (scratch:SI))])]
- "TARGET_POWER"
- "
-{ operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_reg_rtx (SImode); }")
-
-(define_expand "extendqihi2_no_power"
- [(set (match_dup 2)
- (ashift:SI (match_operand:QI 1 "gpc_reg_operand" "")
- (const_int 24)))
- (set (match_operand:HI 0 "gpc_reg_operand" "")
- (ashiftrt:SI (match_dup 2)
- (const_int 24)))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "
-{ operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_reg_rtx (SImode); }")
-
(define_expand "zero_extendhisi2"
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(zero_extend:SI (match_operand:HI 1 "gpc_reg_operand" "")))]
@@ -938,7 +843,7 @@
""
"@
lhz%U1%X1 %0,%1
- {rlinm|rlwinm} %0,%1,0,0xffff"
+ rlwinm %0,%1,0,0xffff"
[(set_attr "type" "load,*")])
(define_insn ""
@@ -948,7 +853,7 @@
(clobber (match_scratch:SI 2 "=r,r"))]
""
"@
- {andil.|andi.} %2,%1,0xffff
+ andi. %2,%1,0xffff
#"
[(set_attr "type" "fast_compare,compare")
(set_attr "length" "4,8")])
@@ -974,7 +879,7 @@
(zero_extend:SI (match_dup 1)))]
""
"@
- {andil.|andi.} %0,%1,0xffff
+ andi. %0,%1,0xffff
#"
[(set_attr "type" "fast_compare,compare")
(set_attr "length" "4,8")])
@@ -1005,14 +910,14 @@
"rs6000_gen_cell_microcode"
"@
lha%U1%X1 %0,%1
- {exts|extsh} %0,%1"
+ extsh %0,%1"
[(set_attr "type" "load_ext,exts")])
(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(sign_extend:SI (match_operand:HI 1 "gpc_reg_operand" "r")))]
"!rs6000_gen_cell_microcode"
- "{exts|extsh} %0,%1"
+ "extsh %0,%1"
[(set_attr "type" "exts")])
(define_insn ""
@@ -1022,7 +927,7 @@
(clobber (match_scratch:SI 2 "=r,r"))]
""
"@
- {exts.|extsh.} %2,%1
+ extsh. %2,%1
#"
[(set_attr "type" "compare")
(set_attr "length" "4,8")])
@@ -1048,7 +953,7 @@
(sign_extend:SI (match_dup 1)))]
""
"@
- {exts.|extsh.} %0,%1
+ extsh. %0,%1
#"
[(set_attr "type" "compare")
(set_attr "length" "4,8")])
@@ -1642,10 +1547,10 @@
(match_operand:GPR 2 "add_operand" "r,I,I,L")))]
"!DECIMAL_FLOAT_MODE_P (GET_MODE (operands[0])) && !DECIMAL_FLOAT_MODE_P (GET_MODE (operands[1]))"
"@
- {cax|add} %0,%1,%2
- {cal %0,%2(%1)|addi %0,%1,%2}
- {ai|addic} %0,%1,%2
- {cau|addis} %0,%1,%v2"
+ add %0,%1,%2
+ addi %0,%1,%2
+ addic %0,%1,%2
+ addis %0,%1,%v2"
[(set_attr "length" "4,4,4,4")])
(define_insn "addsi3_high"
@@ -1653,7 +1558,7 @@
(plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
(high:SI (match_operand 2 "" ""))))]
"TARGET_MACHO && !TARGET_64BIT"
- "{cau|addis} %0,%1,ha16(%2)"
+ "addis %0,%1,ha16(%2)"
[(set_attr "length" "4")])
(define_insn "*add<mode>3_internal2"
@@ -1664,8 +1569,8 @@
(clobber (match_scratch:P 3 "=r,r,r,r"))]
""
"@
- {cax.|add.} %3,%1,%2
- {ai.|addic.} %3,%1,%2
+ add. %3,%1,%2
+ addic. %3,%1,%2
#
#"
[(set_attr "type" "fast_compare,compare,compare,compare")
@@ -1696,8 +1601,8 @@
(match_dup 2)))]
""
"@
- {cax.|add.} %0,%1,%2
- {ai.|addic.} %0,%1,%2
+ add. %0,%1,%2
+ addic. %0,%1,%2
#
#"
[(set_attr "type" "fast_compare,compare,compare,compare")
@@ -1808,41 +1713,21 @@
"")
(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (minus:SI (match_operand:SI 1 "reg_or_short_operand" "rI")
- (match_operand:SI 2 "gpc_reg_operand" "r")))]
- "! TARGET_POWERPC"
- "{sf%I1|subf%I1c} %0,%2,%1")
-
-(define_insn ""
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
(minus:GPR (match_operand:GPR 1 "reg_or_short_operand" "r,I")
(match_operand:GPR 2 "gpc_reg_operand" "r,r")))]
- "TARGET_POWERPC"
+ ""
"@
subf %0,%2,%1
subfic %0,%2,%1")
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
- (compare:CC (minus:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC"
- "@
- {sf.|subfc.} %3,%2,%1
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "4,8")])
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
(compare:CC (minus:P (match_operand:P 1 "gpc_reg_operand" "r,r")
(match_operand:P 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:P 3 "=r,r"))]
- "TARGET_POWERPC"
+ ""
"@
subf. %3,%2,%1
#"
@@ -1866,27 +1751,13 @@
(define_insn ""
[(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
- (compare:CC (minus:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (minus:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC"
- "@
- {sf.|subfc.} %0,%2,%1
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "4,8")])
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
(compare:CC (minus:P (match_operand:P 1 "gpc_reg_operand" "r,r")
(match_operand:P 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(set (match_operand:P 0 "gpc_reg_operand" "=r,r")
(minus:P (match_dup 1)
(match_dup 2)))]
- "TARGET_POWERPC"
+ ""
"@
subf. %0,%2,%1
#"
@@ -1925,11 +1796,6 @@
}
}")
-;; For SMIN, SMAX, UMIN, and UMAX, we use DEFINE_EXPAND's that involve a doz[i]
-;; instruction and some auxiliary computations. Then we just have a single
-;; DEFINE_INSN for doz[i] and the define_splits to make them if made by
-;; combine.
-
(define_expand "sminsi3"
[(set (match_dup 3)
(if_then_else:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
@@ -1938,32 +1804,14 @@
(minus:SI (match_dup 2) (match_dup 1))))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(minus:SI (match_dup 2) (match_dup 3)))]
- "TARGET_POWER || TARGET_ISEL"
+ "TARGET_ISEL"
"
{
- if (TARGET_ISEL)
- {
- operands[2] = force_reg (SImode, operands[2]);
- rs6000_emit_minmax (operands[0], SMIN, operands[1], operands[2]);
- DONE;
- }
-
- operands[3] = gen_reg_rtx (SImode);
+ operands[2] = force_reg (SImode, operands[2]);
+ rs6000_emit_minmax (operands[0], SMIN, operands[1], operands[2]);
+ DONE;
}")
-(define_split
- [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (smin:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" "")))
- (clobber (match_operand:SI 3 "gpc_reg_operand" ""))]
- "TARGET_POWER"
- [(set (match_dup 3)
- (if_then_else:SI (gt:SI (match_dup 1) (match_dup 2))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1))))
- (set (match_dup 0) (minus:SI (match_dup 2) (match_dup 3)))]
- "")
-
(define_expand "smaxsi3"
[(set (match_dup 3)
(if_then_else:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
@@ -1972,31 +1820,14 @@
(minus:SI (match_dup 2) (match_dup 1))))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(plus:SI (match_dup 3) (match_dup 1)))]
- "TARGET_POWER || TARGET_ISEL"
+ "TARGET_ISEL"
"
{
- if (TARGET_ISEL)
- {
- operands[2] = force_reg (SImode, operands[2]);
- rs6000_emit_minmax (operands[0], SMAX, operands[1], operands[2]);
- DONE;
- }
- operands[3] = gen_reg_rtx (SImode);
+ operands[2] = force_reg (SImode, operands[2]);
+ rs6000_emit_minmax (operands[0], SMAX, operands[1], operands[2]);
+ DONE;
}")
-(define_split
- [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (smax:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" "")))
- (clobber (match_operand:SI 3 "gpc_reg_operand" ""))]
- "TARGET_POWER"
- [(set (match_dup 3)
- (if_then_else:SI (gt:SI (match_dup 1) (match_dup 2))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1))))
- (set (match_dup 0) (plus:SI (match_dup 3) (match_dup 1)))]
- "")
-
(define_expand "uminsi3"
[(set (match_dup 3) (xor:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_dup 5)))
@@ -2007,17 +1838,11 @@
(minus:SI (match_dup 4) (match_dup 3))))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(minus:SI (match_dup 2) (match_dup 3)))]
- "TARGET_POWER || TARGET_ISEL"
+ "TARGET_ISEL"
"
{
- if (TARGET_ISEL)
- {
- rs6000_emit_minmax (operands[0], UMIN, operands[1], operands[2]);
- DONE;
- }
- operands[3] = gen_reg_rtx (SImode);
- operands[4] = gen_reg_rtx (SImode);
- operands[5] = GEN_INT (-2147483647 - 1);
+ rs6000_emit_minmax (operands[0], UMIN, operands[1], operands[2]);
+ DONE;
}")
(define_expand "umaxsi3"
@@ -2030,104 +1855,13 @@
(minus:SI (match_dup 4) (match_dup 3))))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(plus:SI (match_dup 3) (match_dup 1)))]
- "TARGET_POWER || TARGET_ISEL"
+ "TARGET_ISEL"
"
{
- if (TARGET_ISEL)
- {
- rs6000_emit_minmax (operands[0], UMAX, operands[1], operands[2]);
- DONE;
- }
- operands[3] = gen_reg_rtx (SImode);
- operands[4] = gen_reg_rtx (SImode);
- operands[5] = GEN_INT (-2147483647 - 1);
+ rs6000_emit_minmax (operands[0], UMAX, operands[1], operands[2]);
+ DONE;
}")
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (if_then_else:SI (gt (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "rI"))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1))))]
- "TARGET_POWER"
- "doz%I2 %0,%1,%2")
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
- (compare:CC
- (if_then_else:SI (gt (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1)))
- (const_int 0)))
- (clobber (match_scratch:SI 3 "=r,r"))]
- "TARGET_POWER"
- "@
- doz%I2. %3,%1,%2
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (if_then_else:SI (gt (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1)))
- (const_int 0)))
- (clobber (match_scratch:SI 3 ""))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 3)
- (if_then_else:SI (gt (match_dup 1) (match_dup 2))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1))))
- (set (match_dup 0)
- (compare:CC (match_dup 3)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
- (compare:CC
- (if_then_else:SI (gt (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1)))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (if_then_else:SI (gt (match_dup 1) (match_dup 2))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1))))]
- "TARGET_POWER"
- "@
- doz%I2. %0,%1,%2
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (if_then_else:SI (gt (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1)))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (if_then_else:SI (gt (match_dup 1) (match_dup 2))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1))))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (if_then_else:SI (gt (match_dup 1) (match_dup 2))
- (const_int 0)
- (minus:SI (match_dup 2) (match_dup 1))))
- (set (match_dup 3)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
;; We don't need abs with condition code because such comparisons should
;; never be done.
(define_expand "abssi2"
@@ -2141,19 +1875,13 @@
emit_insn (gen_abssi2_isel (operands[0], operands[1]));
DONE;
}
- else if (! TARGET_POWER)
+ else
{
emit_insn (gen_abssi2_nopower (operands[0], operands[1]));
DONE;
}
}")
-(define_insn "*abssi2_power"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r")))]
- "TARGET_POWER"
- "abs %0,%1")
-
(define_insn_and_split "abs<mode>2_isel"
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(abs:GPR (match_operand:GPR 1 "gpc_reg_operand" "b")))
@@ -2196,7 +1924,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=&r,r")
(abs:SI (match_operand:SI 1 "gpc_reg_operand" "r,0")))
(clobber (match_scratch:SI 2 "=&r,&r"))]
- "! TARGET_POWER && ! TARGET_ISEL"
+ "! TARGET_ISEL"
"#"
"&& reload_completed"
[(set (match_dup 2) (ashiftrt:SI (match_dup 1) (const_int 31)))
@@ -2204,17 +1932,11 @@
(set (match_dup 0) (minus:SI (match_dup 0) (match_dup 2)))]
"")
-(define_insn "*nabs_power"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (neg:SI (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r"))))]
- "TARGET_POWER"
- "nabs %0,%1")
-
(define_insn_and_split "*nabs_nopower"
[(set (match_operand:SI 0 "gpc_reg_operand" "=&r,r")
(neg:SI (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r,0"))))
(clobber (match_scratch:SI 2 "=&r,&r"))]
- "! TARGET_POWER"
+ ""
"#"
"&& reload_completed"
[(set (match_dup 2) (ashiftrt:SI (match_dup 1) (const_int 31)))
@@ -2290,7 +2012,7 @@
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(clz:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")))]
""
- "{cntlz|cntlz<wd>} %0,%1"
+ "cntlz<wd> %0,%1"
[(set_attr "type" "cntlz")])
(define_expand "ctz<mode>2"
@@ -2383,7 +2105,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(zero_extend:SI
(bswap:HI (match_operand:HI 1 "memory_operand" "Z"))))]
- "TARGET_POWERPC"
+ ""
"lhbrx %0,%y1"
[(set_attr "length" "4")
(set_attr "type" "load")])
@@ -2393,7 +2115,7 @@
(bswap:HI
(match_operand:HI 1 "reg_or_mem_operand" "")))
(clobber (match_scratch:SI 2 ""))])]
- "TARGET_POWERPC"
+ ""
{
if (!REG_P (operands[0]) && !REG_P (operands[1]))
operands[1] = force_reg (HImode, operands[1]);
@@ -2404,7 +2126,7 @@
(bswap:HI
(match_operand:HI 1 "reg_or_mem_operand" "Z,r,r")))
(clobber (match_scratch:SI 2 "=X,X,&r"))]
- "TARGET_POWERPC"
+ ""
"@
lhbrx %0,%y1
sthbrx %1,%y0
@@ -2416,7 +2138,7 @@
[(set (match_operand:HI 0 "gpc_reg_operand" "")
(bswap:HI (match_operand:HI 1 "gpc_reg_operand" "")))
(clobber (match_operand:SI 2 "gpc_reg_operand" ""))]
- "TARGET_POWERPC && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(zero_extract:SI (match_dup 4)
(const_int 8)
@@ -2459,8 +2181,8 @@
(match_operand:SI 1 "reg_or_mem_operand" "Z,r,r")))]
""
"@
- {lbrx|lwbrx} %0,%y1
- {stbrx|stwbrx} %1,%y0
+ lwbrx %0,%y1
+ stwbrx %1,%y0
#"
[(set_attr "length" "4,4,12")
(set_attr "type" "load,store,*")])
@@ -2820,44 +2542,14 @@
emit_insn (gen_bswapsi2 (dest_low, src_high));
}")
-(define_expand "mulsi3"
- [(use (match_operand:SI 0 "gpc_reg_operand" ""))
- (use (match_operand:SI 1 "gpc_reg_operand" ""))
- (use (match_operand:SI 2 "reg_or_short_operand" ""))]
- ""
- "
-{
- if (TARGET_POWER)
- emit_insn (gen_mulsi3_mq (operands[0], operands[1], operands[2]));
- else
- emit_insn (gen_mulsi3_no_mq (operands[0], operands[1], operands[2]));
- DONE;
-}")
-
-(define_insn "mulsi3_mq"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,I")))
- (clobber (match_scratch:SI 3 "=q,q"))]
- "TARGET_POWER"
- "@
- {muls|mullw} %0,%1,%2
- {muli|mulli} %0,%1,%2"
- [(set (attr "type")
- (cond [(match_operand:SI 2 "s8bit_cint_operand" "")
- (const_string "imul3")
- (match_operand:SI 2 "short_cint_operand" "")
- (const_string "imul2")]
- (const_string "imul")))])
-
-(define_insn "mulsi3_no_mq"
+(define_insn "mulsi3"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,I")))]
- "! TARGET_POWER"
+ ""
"@
- {muls|mullw} %0,%1,%2
- {muli|mulli} %0,%1,%2"
+ mullw %0,%1,%2
+ mulli %0,%1,%2"
[(set (attr "type")
(cond [(match_operand:SI 2 "s8bit_cint_operand" "")
(const_string "imul3")
@@ -2865,45 +2557,15 @@
(const_string "imul2")]
(const_string "imul")))])
-(define_insn "*mulsi3_mq_internal1"
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
- (compare:CC (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r")
- (match_operand:SI 2 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (clobber (match_scratch:SI 3 "=r,r"))
- (clobber (match_scratch:SI 4 "=q,q"))]
- "TARGET_POWER"
- "@
- {muls.|mullw.} %3,%1,%2
- #"
- [(set_attr "type" "imul_compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC (mult:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "gpc_reg_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 3 ""))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 3)
- (mult:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 0)
- (compare:CC (match_dup 3)
- (const_int 0)))]
- "")
-
-(define_insn "*mulsi3_no_mq_internal1"
+(define_insn "*mulsi3_internal1"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
(compare:CC (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r")
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWER"
+ ""
"@
- {muls.|mullw.} %3,%1,%2
+ mullw. %3,%1,%2
#"
[(set_attr "type" "imul_compare")
(set_attr "length" "4,8")])
@@ -2914,7 +2576,7 @@
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWER && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(mult:SI (match_dup 1) (match_dup 2)))
(set (match_dup 0)
@@ -2922,48 +2584,16 @@
(const_int 0)))]
"")
-(define_insn "*mulsi3_mq_internal2"
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
- (compare:CC (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r")
- (match_operand:SI 2 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (mult:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 "=q,q"))]
- "TARGET_POWER"
- "@
- {muls.|mullw.} %0,%1,%2
- #"
- [(set_attr "type" "imul_compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
- (compare:CC (mult:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "gpc_reg_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (mult:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 0)
- (mult:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 3)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn "*mulsi3_no_mq_internal2"
+(define_insn "*mulsi3_internal2"
[(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
(compare:CC (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r")
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(mult:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER"
+ ""
"@
- {muls.|mullw.} %0,%1,%2
+ mullw. %0,%1,%2
#"
[(set_attr "type" "imul_compare")
(set_attr "length" "4,8")])
@@ -2975,7 +2605,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(mult:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(mult:SI (match_dup 1) (match_dup 2)))
(set (match_dup 3)
@@ -2983,76 +2613,12 @@
(const_int 0)))]
"")
-;; Operand 1 is divided by operand 2; quotient goes to operand
-;; 0 and remainder to operand 3.
-;; ??? At some point, see what, if anything, we can do about if (x % y == 0).
-
-(define_expand "divmodsi4"
- [(parallel [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (div:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "gpc_reg_operand" "")))
- (set (match_operand:SI 3 "register_operand" "")
- (mod:SI (match_dup 1) (match_dup 2)))])]
- "TARGET_POWER || (! TARGET_POWER && ! TARGET_POWERPC)"
- "
-{
- if (! TARGET_POWER && ! TARGET_POWERPC)
- {
- emit_move_insn (gen_rtx_REG (SImode, 3), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 4), operands[2]);
- emit_insn (gen_divss_call ());
- emit_move_insn (operands[0], gen_rtx_REG (SImode, 3));
- emit_move_insn (operands[3], gen_rtx_REG (SImode, 4));
- DONE;
- }
-}")
-
-(define_insn "*divmodsi4_internal"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (div:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "gpc_reg_operand" "r")))
- (set (match_operand:SI 3 "register_operand" "=q")
- (mod:SI (match_dup 1) (match_dup 2)))]
- "TARGET_POWER"
- "divs %0,%1,%2"
- [(set_attr "type" "idiv")])
-
-(define_expand "udiv<mode>3"
- [(set (match_operand:GPR 0 "gpc_reg_operand" "")
- (udiv:GPR (match_operand:GPR 1 "gpc_reg_operand" "")
- (match_operand:GPR 2 "gpc_reg_operand" "")))]
- "TARGET_POWERPC || (! TARGET_POWER && ! TARGET_POWERPC)"
- "
-{
- if (! TARGET_POWER && ! TARGET_POWERPC)
- {
- emit_move_insn (gen_rtx_REG (SImode, 3), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 4), operands[2]);
- emit_insn (gen_quous_call ());
- emit_move_insn (operands[0], gen_rtx_REG (SImode, 3));
- DONE;
- }
- else if (TARGET_POWER)
- {
- emit_insn (gen_udivsi3_mq (operands[0], operands[1], operands[2]));
- DONE;
- }
-}")
-(define_insn "udivsi3_mq"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (udiv:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "gpc_reg_operand" "r")))
- (clobber (match_scratch:SI 3 "=q"))]
- "TARGET_POWERPC && TARGET_POWER"
- "divwu %0,%1,%2"
- [(set_attr "type" "idiv")])
-
-(define_insn "*udivsi3_no_mq"
+(define_insn "udiv<mode>3"
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(udiv:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
(match_operand:GPR 2 "gpc_reg_operand" "r")))]
- "TARGET_POWERPC && ! TARGET_POWER"
+ ""
"div<wd>u %0,%1,%2"
[(set (attr "type")
(cond [(match_operand:SI 0 "" "")
@@ -3061,55 +2627,25 @@
;; For powers of two we can do srai/aze for divide and then adjust for
-;; modulus. If it isn't a power of two, FAIL on POWER so divmodsi4 will be
-;; used; for PowerPC, force operands into register and do a normal divide;
-;; for AIX common-mode, use quoss call on register operands.
+;; modulus. If it isn't a power of two, force operands into register and do
+;; a normal divide.
(define_expand "div<mode>3"
[(set (match_operand:GPR 0 "gpc_reg_operand" "")
(div:GPR (match_operand:GPR 1 "gpc_reg_operand" "")
(match_operand:GPR 2 "reg_or_cint_operand" "")))]
""
- "
{
- if (GET_CODE (operands[2]) == CONST_INT
- && INTVAL (operands[2]) > 0
- && exact_log2 (INTVAL (operands[2])) >= 0)
- ;
- else if (TARGET_POWERPC)
- {
- operands[2] = force_reg (<MODE>mode, operands[2]);
- if (TARGET_POWER)
- {
- emit_insn (gen_divsi3_mq (operands[0], operands[1], operands[2]));
- DONE;
- }
- }
- else if (TARGET_POWER)
- FAIL;
- else
- {
- emit_move_insn (gen_rtx_REG (SImode, 3), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 4), operands[2]);
- emit_insn (gen_quoss_call ());
- emit_move_insn (operands[0], gen_rtx_REG (SImode, 3));
- DONE;
- }
-}")
+ if (GET_CODE (operands[2]) != CONST_INT
+ || INTVAL (operands[2]) <= 0
+ || exact_log2 (INTVAL (operands[2])) < 0)
+ operands[2] = force_reg (<MODE>mode, operands[2]);
+})
-(define_insn "divsi3_mq"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (div:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "gpc_reg_operand" "r")))
- (clobber (match_scratch:SI 3 "=q"))]
- "TARGET_POWERPC && TARGET_POWER"
- "divw %0,%1,%2"
- [(set_attr "type" "idiv")])
-
-(define_insn "*div<mode>3_no_mq"
+(define_insn "*div<mode>3"
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(div:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
(match_operand:GPR 2 "gpc_reg_operand" "r")))]
- "TARGET_POWERPC && ! TARGET_POWER"
+ ""
"div<wd> %0,%1,%2"
[(set (attr "type")
(cond [(match_operand:SI 0 "" "")
@@ -3146,7 +2682,7 @@
(div:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
(match_operand:GPR 2 "exact_log2_cint_operand" "N")))]
""
- "{srai|sra<wd>i} %0,%1,%p2\;{aze|addze} %0,%0"
+ "sra<wd>i %0,%1,%p2\;addze %0,%0"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -3158,7 +2694,7 @@
(clobber (match_scratch:P 3 "=r,r"))]
""
"@
- {srai|sra<wd>i} %3,%1,%p2\;{aze.|addze.} %3,%3
+ sra<wd>i %3,%1,%p2\;addze. %3,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")
@@ -3188,7 +2724,7 @@
(div:P (match_dup 1) (match_dup 2)))]
""
"@
- {srai|sra<wd>i} %0,%1,%p2\;{aze.|addze.} %0,%0
+ sra<wd>i %0,%1,%p2\;addze. %0,%0
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")
@@ -3209,176 +2745,6 @@
(compare:CC (match_dup 0)
(const_int 0)))]
"")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (udiv:SI
- (plus:DI (ashift:DI
- (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "r"))
- (const_int 32))
- (zero_extend:DI (match_operand:SI 4 "register_operand" "2")))
- (match_operand:SI 3 "gpc_reg_operand" "r")))
- (set (match_operand:SI 2 "register_operand" "=*q")
- (umod:SI
- (plus:DI (ashift:DI
- (zero_extend:DI (match_dup 1)) (const_int 32))
- (zero_extend:DI (match_dup 4)))
- (match_dup 3)))]
- "TARGET_POWER"
- "div %0,%1,%3"
- [(set_attr "type" "idiv")])
-
-;; To do unsigned divide we handle the cases of the divisor looking like a
-;; negative number. If it is a constant that is less than 2**31, we don't
-;; have to worry about the branches. So make a few subroutines here.
-;;
-;; First comes the normal case.
-(define_expand "udivmodsi4_normal"
- [(set (match_dup 4) (const_int 0))
- (parallel [(set (match_operand:SI 0 "" "")
- (udiv:SI (plus:DI (ashift:DI (zero_extend:DI (match_dup 4))
- (const_int 32))
- (zero_extend:DI (match_operand:SI 1 "" "")))
- (match_operand:SI 2 "" "")))
- (set (match_operand:SI 3 "" "")
- (umod:SI (plus:DI (ashift:DI (zero_extend:DI (match_dup 4))
- (const_int 32))
- (zero_extend:DI (match_dup 1)))
- (match_dup 2)))])]
- "TARGET_POWER"
- "
-{ operands[4] = gen_reg_rtx (SImode); }")
-
-;; This handles the branches.
-(define_expand "udivmodsi4_tests"
- [(set (match_operand:SI 0 "" "") (const_int 0))
- (set (match_operand:SI 3 "" "") (match_operand:SI 1 "" ""))
- (set (match_dup 5) (compare:CCUNS (match_dup 1) (match_operand:SI 2 "" "")))
- (set (pc) (if_then_else (ltu (match_dup 5) (const_int 0))
- (label_ref (match_operand:SI 4 "" "")) (pc)))
- (set (match_dup 0) (const_int 1))
- (set (match_dup 3) (minus:SI (match_dup 1) (match_dup 2)))
- (set (match_dup 6) (compare:CC (match_dup 2) (const_int 0)))
- (set (pc) (if_then_else (lt (match_dup 6) (const_int 0))
- (label_ref (match_dup 4)) (pc)))]
- "TARGET_POWER"
- "
-{ operands[5] = gen_reg_rtx (CCUNSmode);
- operands[6] = gen_reg_rtx (CCmode);
-}")
-
-(define_expand "udivmodsi4"
- [(parallel [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (udiv:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" "")))
- (set (match_operand:SI 3 "gpc_reg_operand" "")
- (umod:SI (match_dup 1) (match_dup 2)))])]
- ""
- "
-{
- rtx label = 0;
-
- if (! TARGET_POWER)
- {
- if (! TARGET_POWERPC)
- {
- emit_move_insn (gen_rtx_REG (SImode, 3), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 4), operands[2]);
- emit_insn (gen_divus_call ());
- emit_move_insn (operands[0], gen_rtx_REG (SImode, 3));
- emit_move_insn (operands[3], gen_rtx_REG (SImode, 4));
- DONE;
- }
- else
- FAIL;
- }
-
- if (GET_CODE (operands[2]) != CONST_INT || INTVAL (operands[2]) < 0)
- {
- operands[2] = force_reg (SImode, operands[2]);
- label = gen_label_rtx ();
- emit (gen_udivmodsi4_tests (operands[0], operands[1], operands[2],
- operands[3], label));
- }
- else
- operands[2] = force_reg (SImode, operands[2]);
-
- emit (gen_udivmodsi4_normal (operands[0], operands[1], operands[2],
- operands[3]));
- if (label)
- emit_label (label);
-
- DONE;
-}")
-
-;; AIX architecture-independent common-mode multiply (DImode),
-;; divide/modulus, and quotient subroutine calls. Input operands in R3 and
-;; R4; results in R3 and sometimes R4; link register always clobbered by bla
-;; instruction; R0 sometimes clobbered; also, MQ sometimes clobbered but
-;; assumed unused if generating common-mode, so ignore.
-(define_insn "mulh_call"
- [(set (reg:SI 3)
- (truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI (reg:SI 3))
- (sign_extend:DI (reg:SI 4)))
- (const_int 32))))
- (clobber (reg:SI LR_REGNO))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "bla __mulh"
- [(set_attr "type" "imul")])
-
-(define_insn "mull_call"
- [(set (reg:DI 3)
- (mult:DI (sign_extend:DI (reg:SI 3))
- (sign_extend:DI (reg:SI 4))))
- (clobber (reg:SI LR_REGNO))
- (clobber (reg:SI 0))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "bla __mull"
- [(set_attr "type" "imul")])
-
-(define_insn "divss_call"
- [(set (reg:SI 3)
- (div:SI (reg:SI 3) (reg:SI 4)))
- (set (reg:SI 4)
- (mod:SI (reg:SI 3) (reg:SI 4)))
- (clobber (reg:SI LR_REGNO))
- (clobber (reg:SI 0))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "bla __divss"
- [(set_attr "type" "idiv")])
-
-(define_insn "divus_call"
- [(set (reg:SI 3)
- (udiv:SI (reg:SI 3) (reg:SI 4)))
- (set (reg:SI 4)
- (umod:SI (reg:SI 3) (reg:SI 4)))
- (clobber (reg:SI LR_REGNO))
- (clobber (reg:SI 0))
- (clobber (match_scratch:CC 0 "=x"))
- (clobber (reg:CC CR1_REGNO))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "bla __divus"
- [(set_attr "type" "idiv")])
-
-(define_insn "quoss_call"
- [(set (reg:SI 3)
- (div:SI (reg:SI 3) (reg:SI 4)))
- (clobber (reg:SI LR_REGNO))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "bla __quoss"
- [(set_attr "type" "idiv")])
-
-(define_insn "quous_call"
- [(set (reg:SI 3)
- (udiv:SI (reg:SI 3) (reg:SI 4)))
- (clobber (reg:SI LR_REGNO))
- (clobber (reg:SI 0))
- (clobber (match_scratch:CC 0 "=x"))
- (clobber (reg:CC CR1_REGNO))]
- "! TARGET_POWER && ! TARGET_POWERPC"
- "bla __quous"
- [(set_attr "type" "idiv")])
;; Logical instructions
;; The logical instructions are mostly combined by using match_operator,
@@ -3403,9 +2769,9 @@
"rs6000_gen_cell_microcode"
"@
and %0,%1,%2
- {rlinm|rlwinm} %0,%1,0,%m2,%M2
- {andil.|andi.} %0,%1,%b2
- {andiu.|andis.} %0,%1,%u2"
+ rlwinm %0,%1,0,%m2,%M2
+ andi. %0,%1,%b2
+ andis. %0,%1,%u2"
[(set_attr "type" "*,*,fast_compare,fast_compare")])
(define_insn "andsi3_nomc"
@@ -3416,7 +2782,7 @@
"!rs6000_gen_cell_microcode"
"@
and %0,%1,%2
- {rlinm|rlwinm} %0,%1,0,%m2,%M2")
+ rlwinm %0,%1,0,%m2,%M2")
(define_insn "andsi3_internal0_nomc"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
@@ -3425,7 +2791,7 @@
"!rs6000_gen_cell_microcode"
"@
and %0,%1,%2
- {rlinm|rlwinm} %0,%1,0,%m2,%M2")
+ rlwinm %0,%1,0,%m2,%M2")
;; Note to set cr's other than cr0 we do the and immediate and then
@@ -3442,9 +2808,9 @@
"TARGET_32BIT && rs6000_gen_cell_microcode"
"@
and. %3,%1,%2
- {andil.|andi.} %3,%1,%b2
- {andiu.|andis.} %3,%1,%u2
- {rlinm.|rlwinm.} %3,%1,0,%m2,%M2
+ andi. %3,%1,%b2
+ andis. %3,%1,%u2
+ rlwinm. %3,%1,0,%m2,%M2
#
#
#
@@ -3463,9 +2829,9 @@
"TARGET_64BIT && rs6000_gen_cell_microcode"
"@
#
- {andil.|andi.} %3,%1,%b2
- {andiu.|andis.} %3,%1,%u2
- {rlinm.|rlwinm.} %3,%1,0,%m2,%M2
+ andi. %3,%1,%b2
+ andis. %3,%1,%u2
+ rlwinm. %3,%1,0,%m2,%M2
#
#
#
@@ -3523,9 +2889,9 @@
"TARGET_32BIT && rs6000_gen_cell_microcode"
"@
and. %0,%1,%2
- {andil.|andi.} %0,%1,%b2
- {andiu.|andis.} %0,%1,%u2
- {rlinm.|rlwinm.} %0,%1,0,%m2,%M2
+ andi. %0,%1,%b2
+ andis. %0,%1,%u2
+ rlwinm. %0,%1,0,%m2,%M2
#
#
#
@@ -3546,9 +2912,9 @@
"TARGET_64BIT && rs6000_gen_cell_microcode"
"@
#
- {andil.|andi.} %0,%1,%b2
- {andiu.|andis.} %0,%1,%u2
- {rlinm.|rlwinm.} %0,%1,0,%m2,%M2
+ andi. %0,%1,%b2
+ andis. %0,%1,%u2
+ rlwinm. %0,%1,0,%m2,%M2
#
#
#
@@ -3671,8 +3037,8 @@
""
"@
%q3 %0,%1,%2
- {%q3il|%q3i} %0,%1,%b2
- {%q3iu|%q3is} %0,%1,%u2")
+ %q3i %0,%1,%b2
+ %q3is %0,%1,%u2")
(define_insn "*boolsi3_internal2"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
@@ -3885,198 +3251,6 @@
(compare:CC (match_dup 0)
(const_int 0)))]
"")
-
-;; maskir insn. We need four forms because things might be in arbitrary
-;; orders. Don't define forms that only set CR fields because these
-;; would modify an input register.
-
-(define_insn "*maskir_internal1"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (ior:SI (and:SI (not:SI (match_operand:SI 2 "gpc_reg_operand" "r"))
- (match_operand:SI 1 "gpc_reg_operand" "0"))
- (and:SI (match_dup 2)
- (match_operand:SI 3 "gpc_reg_operand" "r"))))]
- "TARGET_POWER"
- "maskir %0,%3,%2")
-
-(define_insn "*maskir_internal2"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (ior:SI (and:SI (not:SI (match_operand:SI 2 "gpc_reg_operand" "r"))
- (match_operand:SI 1 "gpc_reg_operand" "0"))
- (and:SI (match_operand:SI 3 "gpc_reg_operand" "r")
- (match_dup 2))))]
- "TARGET_POWER"
- "maskir %0,%3,%2")
-
-(define_insn "*maskir_internal3"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (ior:SI (and:SI (match_operand:SI 2 "gpc_reg_operand" "r")
- (match_operand:SI 3 "gpc_reg_operand" "r"))
- (and:SI (not:SI (match_dup 2))
- (match_operand:SI 1 "gpc_reg_operand" "0"))))]
- "TARGET_POWER"
- "maskir %0,%3,%2")
-
-(define_insn "*maskir_internal4"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (ior:SI (and:SI (match_operand:SI 3 "gpc_reg_operand" "r")
- (match_operand:SI 2 "gpc_reg_operand" "r"))
- (and:SI (not:SI (match_dup 2))
- (match_operand:SI 1 "gpc_reg_operand" "0"))))]
- "TARGET_POWER"
- "maskir %0,%3,%2")
-
-(define_insn "*maskir_internal5"
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (ior:SI (and:SI (not:SI (match_operand:SI 2 "gpc_reg_operand" "r,r"))
- (match_operand:SI 1 "gpc_reg_operand" "0,0"))
- (and:SI (match_dup 2)
- (match_operand:SI 3 "gpc_reg_operand" "r,r")))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (ior:SI (and:SI (not:SI (match_dup 2)) (match_dup 1))
- (and:SI (match_dup 2) (match_dup 3))))]
- "TARGET_POWER"
- "@
- maskir. %0,%3,%2
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (ior:SI (and:SI (not:SI (match_operand:SI 2 "gpc_reg_operand" ""))
- (match_operand:SI 1 "gpc_reg_operand" ""))
- (and:SI (match_dup 2)
- (match_operand:SI 3 "gpc_reg_operand" "")))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ior:SI (and:SI (not:SI (match_dup 2)) (match_dup 1))
- (and:SI (match_dup 2) (match_dup 3))))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (ior:SI (and:SI (not:SI (match_dup 2)) (match_dup 1))
- (and:SI (match_dup 2) (match_dup 3))))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn "*maskir_internal6"
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (ior:SI (and:SI (not:SI (match_operand:SI 2 "gpc_reg_operand" "r,r"))
- (match_operand:SI 1 "gpc_reg_operand" "0,0"))
- (and:SI (match_operand:SI 3 "gpc_reg_operand" "r,r")
- (match_dup 2)))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (ior:SI (and:SI (not:SI (match_dup 2)) (match_dup 1))
- (and:SI (match_dup 3) (match_dup 2))))]
- "TARGET_POWER"
- "@
- maskir. %0,%3,%2
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (ior:SI (and:SI (not:SI (match_operand:SI 2 "gpc_reg_operand" ""))
- (match_operand:SI 1 "gpc_reg_operand" ""))
- (and:SI (match_operand:SI 3 "gpc_reg_operand" "")
- (match_dup 2)))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ior:SI (and:SI (not:SI (match_dup 2)) (match_dup 1))
- (and:SI (match_dup 3) (match_dup 2))))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (ior:SI (and:SI (not:SI (match_dup 2)) (match_dup 1))
- (and:SI (match_dup 3) (match_dup 2))))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn "*maskir_internal7"
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (ior:SI (and:SI (match_operand:SI 2 "gpc_reg_operand" "r,r")
- (match_operand:SI 3 "gpc_reg_operand" "r,r"))
- (and:SI (not:SI (match_dup 2))
- (match_operand:SI 1 "gpc_reg_operand" "0,0")))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (ior:SI (and:SI (match_dup 2) (match_dup 3))
- (and:SI (not:SI (match_dup 2)) (match_dup 1))))]
- "TARGET_POWER"
- "@
- maskir. %0,%3,%2
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (ior:SI (and:SI (match_operand:SI 2 "gpc_reg_operand" "")
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (and:SI (not:SI (match_dup 2))
- (match_operand:SI 1 "gpc_reg_operand" "")))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ior:SI (and:SI (match_dup 2) (match_dup 3))
- (and:SI (not:SI (match_dup 2)) (match_dup 1))))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (ior:SI (and:SI (match_dup 2) (match_dup 3))
- (and:SI (not:SI (match_dup 2)) (match_dup 1))))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn "*maskir_internal8"
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (ior:SI (and:SI (match_operand:SI 3 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "gpc_reg_operand" "r,r"))
- (and:SI (not:SI (match_dup 2))
- (match_operand:SI 1 "gpc_reg_operand" "0,0")))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (ior:SI (and:SI (match_dup 3) (match_dup 2))
- (and:SI (not:SI (match_dup 2)) (match_dup 1))))]
- "TARGET_POWER"
- "@
- maskir. %0,%3,%2
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "4,8")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (ior:SI (and:SI (match_operand:SI 3 "gpc_reg_operand" "")
- (match_operand:SI 2 "gpc_reg_operand" ""))
- (and:SI (not:SI (match_dup 2))
- (match_operand:SI 1 "gpc_reg_operand" "")))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ior:SI (and:SI (match_dup 3) (match_dup 2))
- (and:SI (not:SI (match_dup 2)) (match_dup 1))))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (ior:SI (and:SI (match_dup 3) (match_dup 2))
- (and:SI (not:SI (match_dup 2)) (match_dup 1))))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
;; Rotate and shift insns, in all their variants. These support shifts,
;; field inserts and extracts, and various combinations thereof.
@@ -4118,7 +3292,7 @@
operands[4] = GEN_INT (32 - start - size);
operands[1] = GEN_INT (start + size - 1);
- return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
+ return \"rlwimi %0,%3,%h4,%h2,%h1\";
}"
[(set_attr "type" "insert_word")])
@@ -4137,7 +3311,7 @@
operands[4] = GEN_INT (shift - start - size);
operands[1] = GEN_INT (start + size - 1);
- return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
+ return \"rlwimi %0,%3,%h4,%h2,%h1\";
}"
[(set_attr "type" "insert_word")])
@@ -4156,7 +3330,7 @@
operands[4] = GEN_INT (32 - shift - start - size);
operands[1] = GEN_INT (start + size - 1);
- return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
+ return \"rlwimi %0,%3,%h4,%h2,%h1\";
}"
[(set_attr "type" "insert_word")])
@@ -4175,7 +3349,7 @@
operands[4] = GEN_INT (32 - shift - start - size);
operands[1] = GEN_INT (start + size - 1);
- return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
+ return \"rlwimi %0,%3,%h4,%h2,%h1\";
}"
[(set_attr "type" "insert_word")])
@@ -4197,7 +3371,7 @@
/* Align extract field with insert field */
operands[5] = GEN_INT (extract_start + extract_size - insert_start - insert_size);
operands[1] = GEN_INT (insert_start + insert_size - 1);
- return \"{rlimi|rlwimi} %0,%3,%h5,%h2,%h1\";
+ return \"rlwimi %0,%3,%h5,%h2,%h1\";
}"
[(set_attr "type" "insert_word")])
@@ -4209,7 +3383,7 @@
(and:SI (lshiftrt:SI (match_operand:SI 3 "gpc_reg_operand" "r")
(match_operand:SI 2 "const_int_operand" "i"))
(match_operand:SI 5 "mask_operand" "i"))))]
- "TARGET_POWERPC && INTVAL(operands[1]) == ~INTVAL(operands[5])"
+ "INTVAL(operands[1]) == ~INTVAL(operands[5])"
"*
{
int me = extract_ME(operands[5]);
@@ -4217,7 +3391,7 @@
operands[4] = GEN_INT(32 - INTVAL(operands[2]));
operands[2] = GEN_INT(mb);
operands[1] = GEN_INT(me);
- return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
+ return \"rlwimi %0,%3,%h4,%h2,%h1\";
}"
[(set_attr "type" "insert_word")])
@@ -4228,7 +3402,7 @@
(match_operand:SI 5 "mask_operand" "i"))
(and:SI (match_operand:SI 4 "gpc_reg_operand" "0")
(match_operand:SI 1 "mask_operand" "i"))))]
- "TARGET_POWERPC && INTVAL(operands[1]) == ~INTVAL(operands[5])"
+ "INTVAL(operands[1]) == ~INTVAL(operands[5])"
"*
{
int me = extract_ME(operands[5]);
@@ -4236,7 +3410,7 @@
operands[4] = GEN_INT(32 - INTVAL(operands[2]));
operands[2] = GEN_INT(mb);
operands[1] = GEN_INT(me);
- return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
+ return \"rlwimi %0,%3,%h4,%h2,%h1\";
}"
[(set_attr "type" "insert_word")])
@@ -4333,7 +3507,7 @@
operands[3] = const0_rtx;
else
operands[3] = GEN_INT (start + size);
- return \"{rlinm|rlwinm} %0,%1,%3,%s2,31\";
+ return \"rlwinm %0,%1,%3,%s2,31\";
}")
(define_insn "*extzvsi_internal1"
@@ -4364,16 +3538,16 @@
operands[3] = GEN_INT (((1 << (16 - (start & 15)))
- (1 << (16 - (start & 15) - size))));
if (start < 16)
- return \"{andiu.|andis.} %4,%1,%3\";
+ return \"andis. %4,%1,%3\";
else
- return \"{andil.|andi.} %4,%1,%3\";
+ return \"andi. %4,%1,%3\";
}
if (start + size >= 32)
operands[3] = const0_rtx;
else
operands[3] = GEN_INT (start + size);
- return \"{rlinm.|rlwinm.} %4,%1,%3,%s2,31\";
+ return \"rlwinm. %4,%1,%3,%s2,31\";
}"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -4417,14 +3591,14 @@
if (start >= 16 && start + size == 32)
{
operands[3] = GEN_INT ((1 << size) - 1);
- return \"{andil.|andi.} %0,%1,%3\";
+ return \"andi. %0,%1,%3\";
}
if (start + size >= 32)
operands[3] = const0_rtx;
else
operands[3] = GEN_INT (start + size);
- return \"{rlinm.|rlwinm.} %0,%1,%3,%s2,31\";
+ return \"rlwinm. %0,%1,%3,%s2,31\";
}"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -4515,8 +3689,8 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i")))]
""
"@
- {rlnm|rlwnm} %0,%1,%2,0xffffffff
- {rlinm|rlwinm} %0,%1,%h2,0xffffffff"
+ rlwnm %0,%1,%2,0xffffffff
+ rlwinm %0,%1,%h2,0xffffffff"
[(set_attr "type" "var_shift_rotate,integer")])
(define_insn "*rotlsi3_64"
@@ -4526,8 +3700,8 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i"))))]
"TARGET_64BIT"
"@
- {rlnm|rlwnm} %0,%1,%2,0xffffffff
- {rlinm|rlwinm} %0,%1,%h2,0xffffffff"
+ rlwnm %0,%1,%2,0xffffffff
+ rlwinm %0,%1,%h2,0xffffffff"
[(set_attr "type" "var_shift_rotate,integer")])
(define_insn "*rotlsi3_internal2"
@@ -4538,8 +3712,8 @@
(clobber (match_scratch:SI 3 "=r,r,r,r"))]
""
"@
- {rlnm.|rlwnm.} %3,%1,%2,0xffffffff
- {rlinm.|rlwinm.} %3,%1,%h2,0xffffffff
+ rlwnm. %3,%1,%2,0xffffffff
+ rlwinm. %3,%1,%h2,0xffffffff
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4568,8 +3742,8 @@
(rotate:SI (match_dup 1) (match_dup 2)))]
""
"@
- {rlnm.|rlwnm.} %0,%1,%2,0xffffffff
- {rlinm.|rlwinm.} %0,%1,%h2,0xffffffff
+ rlwnm. %0,%1,%2,0xffffffff
+ rlwinm. %0,%1,%h2,0xffffffff
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4597,8 +3771,8 @@
(match_operand:SI 3 "mask_operand" "n,n")))]
""
"@
- {rlnm|rlwnm} %0,%1,%2,%m3,%M3
- {rlinm|rlwinm} %0,%1,%h2,%m3,%M3"
+ rlwnm %0,%1,%2,%m3,%M3
+ rlwinm %0,%1,%h2,%m3,%M3"
[(set_attr "type" "var_shift_rotate,integer")])
(define_insn "*rotlsi3_internal5"
@@ -4611,8 +3785,8 @@
(clobber (match_scratch:SI 4 "=r,r,r,r"))]
""
"@
- {rlnm.|rlwnm.} %4,%1,%2,%m3,%M3
- {rlinm.|rlwinm.} %4,%1,%h2,%m3,%M3
+ rlwnm. %4,%1,%2,%m3,%M3
+ rlwinm. %4,%1,%h2,%m3,%M3
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4647,8 +3821,8 @@
(and:SI (rotate:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
""
"@
- {rlnm.|rlwnm.} %0,%1,%2,%m3,%M3
- {rlinm.|rlwinm.} %0,%1,%h2,%m3,%M3
+ rlwnm. %0,%1,%2,%m3,%M3
+ rlwinm. %0,%1,%h2,%m3,%M3
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4678,7 +3852,7 @@
(rotate:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_cint_operand" "ri")) 0)))]
""
- "{rl%I2nm|rlw%I2nm} %0,%1,%h2,0xff"
+ "rlw%I2nm %0,%1,%h2,0xff"
[(set (attr "cell_micro")
(if_then_else (match_operand:SI 2 "const_int_operand" "")
(const_string "not")
@@ -4694,8 +3868,8 @@
(clobber (match_scratch:SI 3 "=r,r,r,r"))]
""
"@
- {rlnm.|rlwnm.} %3,%1,%2,0xff
- {rlinm.|rlwinm.} %3,%1,%h2,0xff
+ rlwnm. %3,%1,%2,0xff
+ rlwinm. %3,%1,%h2,0xff
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4730,8 +3904,8 @@
(zero_extend:SI (subreg:QI (rotate:SI (match_dup 1) (match_dup 2)) 0)))]
""
"@
- {rlnm.|rlwnm.} %0,%1,%2,0xff
- {rlinm.|rlwinm.} %0,%1,%h2,0xff
+ rlwnm. %0,%1,%2,0xff
+ rlwinm. %0,%1,%h2,0xff
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4762,8 +3936,8 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i")) 0)))]
""
"@
- {rlnm|rlwnm} %0,%1,%2,0xffff
- {rlinm|rlwinm} %0,%1,%h2,0xffff"
+ rlwnm %0,%1,%2,0xffff
+ rlwinm %0,%1,%h2,0xffff"
[(set_attr "type" "var_shift_rotate,integer")])
@@ -4777,8 +3951,8 @@
(clobber (match_scratch:SI 3 "=r,r,r,r"))]
""
"@
- {rlnm.|rlwnm.} %3,%1,%2,0xffff
- {rlinm.|rlwinm.} %3,%1,%h2,0xffff
+ rlwnm. %3,%1,%2,0xffff
+ rlwinm. %3,%1,%h2,0xffff
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4813,8 +3987,8 @@
(zero_extend:SI (subreg:HI (rotate:SI (match_dup 1) (match_dup 2)) 0)))]
""
"@
- {rlnm.|rlwnm.} %0,%1,%2,0xffff
- {rlinm.|rlwinm.} %0,%1,%h2,0xffff
+ rlwnm. %0,%1,%2,0xffff
+ rlwinm. %0,%1,%h2,0xffff
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4837,41 +4011,14 @@
(const_int 0)))]
"")
-;; Note that we use "sle." instead of "sl." so that we can set
-;; SHIFT_COUNT_TRUNCATED.
-
-(define_expand "ashlsi3"
- [(use (match_operand:SI 0 "gpc_reg_operand" ""))
- (use (match_operand:SI 1 "gpc_reg_operand" ""))
- (use (match_operand:SI 2 "reg_or_cint_operand" ""))]
- ""
- "
-{
- if (TARGET_POWER)
- emit_insn (gen_ashlsi3_power (operands[0], operands[1], operands[2]));
- else
- emit_insn (gen_ashlsi3_no_power (operands[0], operands[1], operands[2]));
- DONE;
-}")
-
-(define_insn "ashlsi3_power"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (ashift:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,i")))
- (clobber (match_scratch:SI 3 "=q,X"))]
- "TARGET_POWER"
- "@
- sle %0,%1,%2
- {sli|slwi} %0,%1,%h2")
-
-(define_insn "ashlsi3_no_power"
+(define_insn "ashlsi3"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(ashift:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_cint_operand" "r,i")))]
- "! TARGET_POWER"
+ ""
"@
- {sl|slw} %0,%1,%2
- {sli|slwi} %0,%1,%h2"
+ slw %0,%1,%2
+ slwi %0,%1,%h2"
[(set_attr "type" "var_shift_rotate,shift")])
(define_insn "*ashlsi3_64"
@@ -4881,8 +4028,8 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i"))))]
"TARGET_POWERPC64"
"@
- {sl|slw} %0,%1,%2
- {sli|slwi} %0,%1,%h2"
+ slw %0,%1,%2
+ slwi %0,%1,%h2"
[(set_attr "type" "var_shift_rotate,shift")])
(define_insn ""
@@ -4890,43 +4037,11 @@
(compare:CC (ashift:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
(const_int 0)))
- (clobber (match_scratch:SI 3 "=r,r,r,r"))
- (clobber (match_scratch:SI 4 "=q,X,q,X"))]
- "TARGET_POWER"
- "@
- sle. %3,%1,%2
- {sli.|slwi.} %3,%1,%h2
- #
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,4,8,8")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC (ashift:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 3 ""))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 3)
- (ashift:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 0)
- (compare:CC (match_dup 3)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
- (compare:CC (ashift:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
- (const_int 0)))
(clobber (match_scratch:SI 3 "=r,r,r,r"))]
- "! TARGET_POWER && TARGET_32BIT"
+ "TARGET_32BIT"
"@
- {sl.|slw.} %3,%1,%2
- {sli.|slwi.} %3,%1,%h2
+ slw. %3,%1,%2
+ slwi. %3,%1,%h2
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -4938,7 +4053,7 @@
(match_operand:SI 2 "reg_or_cint_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWER && TARGET_32BIT && reload_completed"
+ "TARGET_32BIT && reload_completed"
[(set (match_dup 3)
(ashift:SI (match_dup 1) (match_dup 2)))
(set (match_dup 0)
@@ -4952,45 +4067,11 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
- (ashift:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 "=q,X,q,X"))]
- "TARGET_POWER"
- "@
- sle. %0,%1,%2
- {sli.|slwi.} %0,%1,%h2
- #
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,4,8,8")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
- (compare:CC (ashift:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ashift:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 0)
- (ashift:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 3)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,x,?y,?y")
- (compare:CC (ashift:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
(ashift:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && TARGET_32BIT"
+ "TARGET_32BIT"
"@
- {sl.|slw.} %0,%1,%2
- {sli.|slwi.} %0,%1,%h2
+ slw. %0,%1,%2
+ slwi. %0,%1,%h2
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -5003,7 +4084,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(ashift:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && TARGET_32BIT && reload_completed"
+ "TARGET_32BIT && reload_completed"
[(set (match_dup 0)
(ashift:SI (match_dup 1) (match_dup 2)))
(set (match_dup 3)
@@ -5017,7 +4098,7 @@
(match_operand:SI 2 "const_int_operand" "i"))
(match_operand:SI 3 "mask_operand" "n")))]
"includes_lshift_p (operands[2], operands[3])"
- "{rlinm|rlwinm} %0,%1,%h2,%m3,%M3")
+ "rlwinm %0,%1,%h2,%m3,%M3")
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
@@ -5029,7 +4110,7 @@
(clobber (match_scratch:SI 4 "=r,r"))]
"includes_lshift_p (operands[2], operands[3])"
"@
- {rlinm.|rlwinm.} %4,%1,%h2,%m3,%M3
+ rlwinm. %4,%1,%h2,%m3,%M3
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5062,7 +4143,7 @@
(and:SI (ashift:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"includes_lshift_p (operands[2], operands[3])"
"@
- {rlinm.|rlwinm.} %0,%1,%h2,%m3,%M3
+ rlwinm. %0,%1,%h2,%m3,%M3
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5084,42 +4165,15 @@
(const_int 0)))]
"")
-;; The AIX assembler mis-handles "sri x,x,0", so write that case as
-;; "sli x,x,0".
-(define_expand "lshrsi3"
- [(use (match_operand:SI 0 "gpc_reg_operand" ""))
- (use (match_operand:SI 1 "gpc_reg_operand" ""))
- (use (match_operand:SI 2 "reg_or_cint_operand" ""))]
- ""
- "
-{
- if (TARGET_POWER)
- emit_insn (gen_lshrsi3_power (operands[0], operands[1], operands[2]));
- else
- emit_insn (gen_lshrsi3_no_power (operands[0], operands[1], operands[2]));
- DONE;
-}")
-
-(define_insn "lshrsi3_power"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
- (lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,O,i")))
- (clobber (match_scratch:SI 3 "=q,X,X"))]
- "TARGET_POWER"
- "@
- sre %0,%1,%2
- mr %0,%1
- {s%A2i|s%A2wi} %0,%1,%h2")
-
-(define_insn "lshrsi3_no_power"
+(define_insn "lshrsi3"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
(lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r")
(match_operand:SI 2 "reg_or_cint_operand" "O,r,i")))]
- "! TARGET_POWER"
+ ""
"@
mr %0,%1
- {sr|srw} %0,%1,%2
- {sri|srwi} %0,%1,%h2"
+ srw %0,%1,%2
+ srwi %0,%1,%h2"
[(set_attr "type" "integer,var_shift_rotate,shift")])
(define_insn "*lshrsi3_64"
@@ -5129,55 +4183,21 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i"))))]
"TARGET_POWERPC64"
"@
- {sr|srw} %0,%1,%2
- {sri|srwi} %0,%1,%h2"
+ srw %0,%1,%2
+ srwi %0,%1,%h2"
[(set_attr "type" "var_shift_rotate,shift")])
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x,?y,?y,?y")
(compare:CC (lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,O,i,r,O,i"))
- (const_int 0)))
- (clobber (match_scratch:SI 3 "=r,X,r,r,X,r"))
- (clobber (match_scratch:SI 4 "=q,X,X,q,X,X"))]
- "TARGET_POWER"
- "@
- sre. %3,%1,%2
- mr. %1,%1
- {s%A2i.|s%A2wi.} %3,%1,%h2
- #
- #
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,4,4,8,8,8")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC (lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 3 ""))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 3)
- (lshiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 0)
- (compare:CC (match_dup 3)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x,?y,?y,?y")
- (compare:CC (lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r,r,r")
(match_operand:SI 2 "reg_or_cint_operand" "O,r,i,O,r,i"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=X,r,r,X,r,r"))]
- "! TARGET_POWER && TARGET_32BIT"
+ "TARGET_32BIT"
"@
mr. %1,%1
- {sr.|srw.} %3,%1,%2
- {sri.|srwi.} %3,%1,%h2
+ srw. %3,%1,%2
+ srwi. %3,%1,%h2
#
#
#"
@@ -5190,7 +4210,7 @@
(match_operand:SI 2 "reg_or_cint_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWER && TARGET_32BIT && reload_completed"
+ "TARGET_32BIT && reload_completed"
[(set (match_dup 3)
(lshiftrt:SI (match_dup 1) (match_dup 2)))
(set (match_dup 0)
@@ -5201,51 +4221,15 @@
(define_insn ""
[(set (match_operand:CC 3 "cc_reg_operand" "=x,x,x,?y,?y,?y")
(compare:CC (lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,O,i,r,O,i"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r,r")
- (lshiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 "=q,X,X,q,X,X"))]
- "TARGET_POWER"
- "@
- sre. %0,%1,%2
- mr. %0,%1
- {s%A2i.|s%A2wi.} %0,%1,%h2
- #
- #
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,4,4,8,8,8")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
- (compare:CC (lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (lshiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 0)
- (lshiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 3)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,x,x,?y,?y,?y")
- (compare:CC (lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r,r,r")
(match_operand:SI 2 "reg_or_cint_operand" "O,r,i,O,r,i"))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r,r")
(lshiftrt:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && TARGET_32BIT"
+ "TARGET_32BIT"
"@
mr. %0,%1
- {sr.|srw.} %0,%1,%2
- {sri.|srwi.} %0,%1,%h2
+ srw. %0,%1,%2
+ srwi. %0,%1,%h2
#
#
#"
@@ -5259,7 +4243,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(lshiftrt:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && TARGET_32BIT && reload_completed"
+ "TARGET_32BIT && reload_completed"
[(set (match_dup 0)
(lshiftrt:SI (match_dup 1) (match_dup 2)))
(set (match_dup 3)
@@ -5273,7 +4257,7 @@
(match_operand:SI 2 "const_int_operand" "i"))
(match_operand:SI 3 "mask_operand" "n")))]
"includes_rshift_p (operands[2], operands[3])"
- "{rlinm|rlwinm} %0,%1,%s2,%m3,%M3")
+ "rlwinm %0,%1,%s2,%m3,%M3")
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
@@ -5285,7 +4269,7 @@
(clobber (match_scratch:SI 4 "=r,r"))]
"includes_rshift_p (operands[2], operands[3])"
"@
- {rlinm.|rlwinm.} %4,%1,%s2,%m3,%M3
+ rlwinm. %4,%1,%s2,%m3,%M3
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5318,7 +4302,7 @@
(and:SI (lshiftrt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"includes_rshift_p (operands[2], operands[3])"
"@
- {rlinm.|rlwinm.} %0,%1,%s2,%m3,%M3
+ rlwinm. %0,%1,%s2,%m3,%M3
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5347,7 +4331,7 @@
(lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "const_int_operand" "i")) 0)))]
"includes_rshift_p (operands[2], GEN_INT (255))"
- "{rlinm|rlwinm} %0,%1,%s2,0xff")
+ "rlwinm %0,%1,%s2,0xff")
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
@@ -5360,7 +4344,7 @@
(clobber (match_scratch:SI 3 "=r,r"))]
"includes_rshift_p (operands[2], GEN_INT (255))"
"@
- {rlinm.|rlwinm.} %3,%1,%s2,0xff
+ rlwinm. %3,%1,%s2,0xff
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5396,7 +4380,7 @@
(zero_extend:SI (subreg:QI (lshiftrt:SI (match_dup 1) (match_dup 2)) 0)))]
"includes_rshift_p (operands[2], GEN_INT (255))"
"@
- {rlinm.|rlwinm.} %0,%1,%s2,0xff
+ rlwinm. %0,%1,%s2,0xff
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5426,7 +4410,7 @@
(lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "const_int_operand" "i")) 0)))]
"includes_rshift_p (operands[2], GEN_INT (65535))"
- "{rlinm|rlwinm} %0,%1,%s2,0xffff")
+ "rlwinm %0,%1,%s2,0xffff")
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
@@ -5439,7 +4423,7 @@
(clobber (match_scratch:SI 3 "=r,r"))]
"includes_rshift_p (operands[2], GEN_INT (65535))"
"@
- {rlinm.|rlwinm.} %3,%1,%s2,0xffff
+ rlwinm. %3,%1,%s2,0xffff
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5475,7 +4459,7 @@
(zero_extend:SI (subreg:HI (lshiftrt:SI (match_dup 1) (match_dup 2)) 0)))]
"includes_rshift_p (operands[2], GEN_INT (65535))"
"@
- {rlinm.|rlwinm.} %0,%1,%s2,0xffff
+ rlwinm. %0,%1,%s2,0xffff
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "4,8")])
@@ -5498,67 +4482,14 @@
(const_int 0)))]
"")
-(define_insn ""
- [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
- (const_int 1)
- (match_operand:SI 1 "gpc_reg_operand" "r"))
- (ashiftrt:SI (match_operand:SI 2 "gpc_reg_operand" "r")
- (const_int 31)))]
- "TARGET_POWER"
- "rrib %0,%1,%2")
-
-(define_insn ""
- [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
- (const_int 1)
- (match_operand:SI 1 "gpc_reg_operand" "r"))
- (lshiftrt:SI (match_operand:SI 2 "gpc_reg_operand" "r")
- (const_int 31)))]
- "TARGET_POWER"
- "rrib %0,%1,%2")
-
-(define_insn ""
- [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
- (const_int 1)
- (match_operand:SI 1 "gpc_reg_operand" "r"))
- (zero_extract:SI (match_operand:SI 2 "gpc_reg_operand" "r")
- (const_int 1)
- (const_int 0)))]
- "TARGET_POWER"
- "rrib %0,%1,%2")
-
-(define_expand "ashrsi3"
- [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" "")))]
- ""
- "
-{
- if (TARGET_POWER)
- emit_insn (gen_ashrsi3_power (operands[0], operands[1], operands[2]));
- else
- emit_insn (gen_ashrsi3_no_power (operands[0], operands[1], operands[2]));
- DONE;
-}")
-
-(define_insn "ashrsi3_power"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,i")))
- (clobber (match_scratch:SI 3 "=q,X"))]
- "TARGET_POWER"
- "@
- srea %0,%1,%2
- {srai|srawi} %0,%1,%h2"
- [(set_attr "type" "shift")])
-
-(define_insn "ashrsi3_no_power"
+(define_insn "ashrsi3"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_cint_operand" "r,i")))]
- "! TARGET_POWER"
+ ""
"@
- {sra|sraw} %0,%1,%2
- {srai|srawi} %0,%1,%h2"
+ sraw %0,%1,%2
+ srawi %0,%1,%h2"
[(set_attr "type" "var_shift_rotate,shift")])
(define_insn "*ashrsi3_64"
@@ -5568,8 +4499,8 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i"))))]
"TARGET_POWERPC64"
"@
- {sra|sraw} %0,%1,%2
- {srai|srawi} %0,%1,%h2"
+ sraw %0,%1,%2
+ srawi %0,%1,%h2"
[(set_attr "type" "var_shift_rotate,shift")])
(define_insn ""
@@ -5577,43 +4508,11 @@
(compare:CC (ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
(const_int 0)))
- (clobber (match_scratch:SI 3 "=r,r,r,r"))
- (clobber (match_scratch:SI 4 "=q,X,q,X"))]
- "TARGET_POWER"
- "@
- srea. %3,%1,%2
- {srai.|srawi.} %3,%1,%h2
- #
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,4,8,8")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC (ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 3 ""))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 3)
- (ashiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 0)
- (compare:CC (match_dup 3)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
- (compare:CC (ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
- (const_int 0)))
(clobber (match_scratch:SI 3 "=r,r,r,r"))]
- "! TARGET_POWER"
+ ""
"@
- {sra.|sraw.} %3,%1,%2
- {srai.|srawi.} %3,%1,%h2
+ sraw. %3,%1,%2
+ srawi. %3,%1,%h2
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -5625,7 +4524,7 @@
(match_operand:SI 2 "reg_or_cint_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWER && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(ashiftrt:SI (match_dup 1) (match_dup 2)))
(set (match_dup 0)
@@ -5639,45 +4538,11 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
- (ashiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 "=q,X,q,X"))]
- "TARGET_POWER"
- "@
- srea. %0,%1,%2
- {srai.|srawi.} %0,%1,%h2
- #
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "4,4,8,8")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
- (compare:CC (ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_cint_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ashiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 0)
- (ashiftrt:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 4))])
- (set (match_dup 3)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,x,?y,?y")
- (compare:CC (ashiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,i,r,i"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
(ashiftrt:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER"
+ ""
"@
- {sra.|sraw.} %0,%1,%2
- {srai.|srawi.} %0,%1,%h2
+ sraw. %0,%1,%2
+ srawi. %0,%1,%h2
#
#"
[(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
@@ -5729,7 +4594,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(ashiftrt:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(ashiftrt:SI (match_dup 1) (match_dup 2)))
(set (match_dup 3)
@@ -5788,13 +4653,6 @@
"frsp %0,%1"
[(set_attr "type" "fp")])
-(define_insn "aux_truncdfsf2"
- [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
- (unspec:SF [(match_operand:SF 1 "gpc_reg_operand" "f")] UNSPEC_FRSP))]
- "! TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS"
- "frsp %0,%1"
- [(set_attr "type" "fp")])
-
(define_expand "negsf2"
[(set (match_operand:SF 0 "gpc_reg_operand" "")
(neg:SF (match_operand:SF 1 "gpc_reg_operand" "")))]
@@ -5839,19 +4697,11 @@
[(set (match_operand:SF 0 "gpc_reg_operand" "=f")
(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
(match_operand:SF 2 "gpc_reg_operand" "f")))]
- "TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
+ "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
"fadds %0,%1,%2"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_addsub_s")])
-(define_insn ""
- [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
- (plus:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
- (match_operand:SF 2 "gpc_reg_operand" "f")))]
- "! TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS"
- "{fa|fadd} %0,%1,%2"
- [(set_attr "type" "fp")])
-
(define_expand "subsf3"
[(set (match_operand:SF 0 "gpc_reg_operand" "")
(minus:SF (match_operand:SF 1 "gpc_reg_operand" "")
@@ -5863,19 +4713,11 @@
[(set (match_operand:SF 0 "gpc_reg_operand" "=f")
(minus:SF (match_operand:SF 1 "gpc_reg_operand" "f")
(match_operand:SF 2 "gpc_reg_operand" "f")))]
- "TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
+ "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
"fsubs %0,%1,%2"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_addsub_s")])
-(define_insn ""
- [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
- (minus:SF (match_operand:SF 1 "gpc_reg_operand" "f")
- (match_operand:SF 2 "gpc_reg_operand" "f")))]
- "! TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS"
- "{fs|fsub} %0,%1,%2"
- [(set_attr "type" "fp")])
-
(define_expand "mulsf3"
[(set (match_operand:SF 0 "gpc_reg_operand" "")
(mult:SF (match_operand:SF 1 "gpc_reg_operand" "")
@@ -5887,19 +4729,11 @@
[(set (match_operand:SF 0 "gpc_reg_operand" "=f")
(mult:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
(match_operand:SF 2 "gpc_reg_operand" "f")))]
- "TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
+ "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
"fmuls %0,%1,%2"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_mul_s")])
-(define_insn ""
- [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
- (mult:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
- (match_operand:SF 2 "gpc_reg_operand" "f")))]
- "! TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS"
- "{fm|fmul} %0,%1,%2"
- [(set_attr "type" "dmul")])
-
(define_expand "divsf3"
[(set (match_operand:SF 0 "gpc_reg_operand" "")
(div:SF (match_operand:SF 1 "gpc_reg_operand" "")
@@ -5911,20 +4745,11 @@
[(set (match_operand:SF 0 "gpc_reg_operand" "=f")
(div:SF (match_operand:SF 1 "gpc_reg_operand" "f")
(match_operand:SF 2 "gpc_reg_operand" "f")))]
- "TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS
+ "TARGET_HARD_FLOAT && TARGET_FPRS
&& TARGET_SINGLE_FLOAT && !TARGET_SIMPLE_FPU"
"fdivs %0,%1,%2"
[(set_attr "type" "sdiv")])
-(define_insn ""
- [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
- (div:SF (match_operand:SF 1 "gpc_reg_operand" "f")
- (match_operand:SF 2 "gpc_reg_operand" "f")))]
- "! TARGET_POWERPC && TARGET_HARD_FLOAT && TARGET_FPRS
- && TARGET_SINGLE_FLOAT && !TARGET_SIMPLE_FPU"
- "{fd|fdiv} %0,%1,%2"
- [(set_attr "type" "ddiv")])
-
(define_insn "fres"
[(set (match_operand:SF 0 "gpc_reg_operand" "=f")
(unspec:SF [(match_operand:SF 1 "gpc_reg_operand" "f")] UNSPEC_FRES))]
@@ -5939,11 +4764,7 @@
(match_operand:SF 2 "gpc_reg_operand" "f")
(match_operand:SF 3 "gpc_reg_operand" "f")))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
-{
- return (TARGET_POWERPC
- ? "fmadds %0,%1,%2,%3"
- : "{fma|fmadd} %0,%1,%2,%3");
-}
+ "fmadds %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_s")])
@@ -5953,11 +4774,7 @@
(match_operand:SF 2 "gpc_reg_operand" "f")
(neg:SF (match_operand:SF 3 "gpc_reg_operand" "f"))))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
-{
- return (TARGET_POWERPC
- ? "fmsubs %0,%1,%2,%3"
- : "{fms|fmsub} %0,%1,%2,%3");
-}
+ "fmsubs %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_s")])
@@ -5967,11 +4784,7 @@
(match_operand:SF 2 "gpc_reg_operand" "f")
(match_operand:SF 3 "gpc_reg_operand" "f"))))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
-{
- return (TARGET_POWERPC
- ? "fnmadds %0,%1,%2,%3"
- : "{fnma|fnmadd} %0,%1,%2,%3");
-}
+ "fnmadds %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_s")])
@@ -5981,18 +4794,14 @@
(match_operand:SF 2 "gpc_reg_operand" "f")
(neg:SF (match_operand:SF 3 "gpc_reg_operand" "f")))))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT"
-{
- return (TARGET_POWERPC
- ? "fnmsubs %0,%1,%2,%3"
- : "{fnms|fnmsub} %0,%1,%2,%3");
-}
+ "fnmsubs %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_s")])
(define_expand "sqrtsf2"
[(set (match_operand:SF 0 "gpc_reg_operand" "")
(sqrt:SF (match_operand:SF 1 "gpc_reg_operand" "")))]
- "(TARGET_PPC_GPOPT || TARGET_POWER2 || TARGET_XILINX_FPU)
+ "(TARGET_PPC_GPOPT || TARGET_XILINX_FPU)
&& TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT
&& !TARGET_SIMPLE_FPU"
"")
@@ -6005,14 +4814,6 @@
"fsqrts %0,%1"
[(set_attr "type" "ssqrt")])
-(define_insn ""
- [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
- (sqrt:SF (match_operand:SF 1 "gpc_reg_operand" "f")))]
- "TARGET_POWER2 && TARGET_HARD_FLOAT && TARGET_FPRS
- && TARGET_SINGLE_FLOAT && !TARGET_SIMPLE_FPU"
- "fsqrt %0,%1"
- [(set_attr "type" "dsqrt")])
-
(define_insn "*rsqrtsf_internal1"
[(set (match_operand:SF 0 "gpc_reg_operand" "=f")
(unspec:SF [(match_operand:SF 1 "gpc_reg_operand" "f")]
@@ -6264,7 +5065,7 @@
(match_operand:DF 2 "gpc_reg_operand" "d")))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& !VECTOR_UNIT_VSX_P (DFmode)"
- "{fa|fadd} %0,%1,%2"
+ "fadd %0,%1,%2"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_addsub_d")])
@@ -6281,7 +5082,7 @@
(match_operand:DF 2 "gpc_reg_operand" "d")))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& !VECTOR_UNIT_VSX_P (DFmode)"
- "{fs|fsub} %0,%1,%2"
+ "fsub %0,%1,%2"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_addsub_d")])
@@ -6298,7 +5099,7 @@
(match_operand:DF 2 "gpc_reg_operand" "d")))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& !VECTOR_UNIT_VSX_P (DFmode)"
- "{fm|fmul} %0,%1,%2"
+ "fmul %0,%1,%2"
[(set_attr "type" "dmul")
(set_attr "fp_type" "fp_mul_d")])
@@ -6317,7 +5118,7 @@
(match_operand:DF 2 "gpc_reg_operand" "d")))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT && !TARGET_SIMPLE_FPU
&& !VECTOR_UNIT_VSX_P (DFmode)"
- "{fd|fdiv} %0,%1,%2"
+ "fdiv %0,%1,%2"
[(set_attr "type" "ddiv")])
(define_insn "*fred_fpr"
@@ -6343,7 +5144,7 @@
(match_operand:DF 3 "gpc_reg_operand" "f")))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& VECTOR_UNIT_NONE_P (DFmode)"
- "{fma|fmadd} %0,%1,%2,%3"
+ "fmadd %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
@@ -6354,7 +5155,7 @@
(neg:DF (match_operand:DF 3 "gpc_reg_operand" "f"))))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& VECTOR_UNIT_NONE_P (DFmode)"
- "{fms|fmsub} %0,%1,%2,%3"
+ "fmsub %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
@@ -6365,7 +5166,7 @@
(match_operand:DF 3 "gpc_reg_operand" "f"))))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& VECTOR_UNIT_NONE_P (DFmode)"
- "{fnma|fnmadd} %0,%1,%2,%3"
+ "fnmadd %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
@@ -6376,22 +5177,20 @@
(neg:DF (match_operand:DF 3 "gpc_reg_operand" "f")))))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& VECTOR_UNIT_NONE_P (DFmode)"
- "{fnms|fnmsub} %0,%1,%2,%3"
+ "fnmsub %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
(define_expand "sqrtdf2"
[(set (match_operand:DF 0 "gpc_reg_operand" "")
(sqrt:DF (match_operand:DF 1 "gpc_reg_operand" "")))]
- "(TARGET_PPC_GPOPT || TARGET_POWER2) && TARGET_HARD_FLOAT && TARGET_FPRS
- && TARGET_DOUBLE_FLOAT"
+ "TARGET_PPC_GPOPT && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT"
"")
(define_insn "*sqrtdf2_fpr"
[(set (match_operand:DF 0 "gpc_reg_operand" "=d")
(sqrt:DF (match_operand:DF 1 "gpc_reg_operand" "d")))]
- "(TARGET_PPC_GPOPT || TARGET_POWER2) && TARGET_HARD_FLOAT && TARGET_FPRS
- && TARGET_DOUBLE_FLOAT
+ "TARGET_PPC_GPOPT && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& !VECTOR_UNIT_VSX_P (DFmode)"
"fsqrt %0,%1"
[(set_attr "type" "dsqrt")])
@@ -6813,8 +5612,7 @@
(define_expand "fix_trunc<mode>si2"
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "")))]
- "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT
- && ((TARGET_FPRS && <TARGET_FLOAT>) || <E500_CONVERT>)"
+ "TARGET_HARD_FLOAT && ((TARGET_FPRS && <TARGET_FLOAT>) || <E500_CONVERT>)"
"
{
if (!<E500_CONVERT>)
@@ -6884,8 +5682,7 @@
(fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d,<rreg>")))
(clobber (match_operand:DI 2 "gpc_reg_operand" "=1,d"))
(clobber (match_operand:DI 3 "offsettable_mem_operand" "=o,o"))]
- "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT && TARGET_FPRS
- && TARGET_DOUBLE_FLOAT"
+ "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT"
"#"
""
[(pc)]
@@ -6996,9 +5793,8 @@
[(set (match_operand:DI 0 "gpc_reg_operand" "=d")
(unspec:DI [(fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d"))]
UNSPEC_FCTIWZ))]
- "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT && TARGET_FPRS
- && TARGET_DOUBLE_FLOAT"
- "{fcirz|fctiwz} %0,%1"
+ "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT"
+ "fctiwz %0,%1"
[(set_attr "type" "fp")])
(define_insn "fctiwuz_<mode>"
@@ -7415,12 +6211,12 @@
{
if (WORDS_BIG_ENDIAN)
return (GET_CODE (operands[2])) != CONST_INT
- ? \"{a|addc} %L0,%L1,%L2\;{ae|adde} %0,%1,%2\"
- : \"{ai|addic} %L0,%L1,%2\;{a%G2e|add%G2e} %0,%1\";
+ ? \"addc %L0,%L1,%L2\;adde %0,%1,%2\"
+ : \"addic %L0,%L1,%2\;add%G2e %0,%1\";
else
return (GET_CODE (operands[2])) != CONST_INT
- ? \"{a|addc} %0,%1,%2\;{ae|adde} %L0,%L1,%L2\"
- : \"{ai|addic} %0,%1,%2\;{a%G2e|add%G2e} %L0,%L1\";
+ ? \"addc %0,%1,%2\;adde %L0,%L1,%L2\"
+ : \"addic %0,%1,%2\;add%G2e %L0,%L1\";
}"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -7434,12 +6230,12 @@
{
if (WORDS_BIG_ENDIAN)
return (GET_CODE (operands[1]) != CONST_INT)
- ? \"{sf|subfc} %L0,%L2,%L1\;{sfe|subfe} %0,%2,%1\"
- : \"{sfi|subfic} %L0,%L2,%1\;{sf%G1e|subf%G1e} %0,%2\";
+ ? \"subfc %L0,%L2,%L1\;subfe %0,%2,%1\"
+ : \"subfic %L0,%L2,%1\;subf%G1e %0,%2\";
else
return (GET_CODE (operands[1]) != CONST_INT)
- ? \"{sf|subfc} %0,%2,%1\;{sfe|subfe} %L0,%L2,%L1\"
- : \"{sfi|subfic} %0,%2,%1\;{sf%G1e|subf%G1e} %L0,%L2\";
+ ? \"subfc %0,%2,%1\;subfe %L0,%L2,%L1\"
+ : \"subfic %0,%2,%1\;subf%G1e %L0,%L2\";
}"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -7451,63 +6247,22 @@
"*
{
return (WORDS_BIG_ENDIAN)
- ? \"{sfi|subfic} %L0,%L1,0\;{sfze|subfze} %0,%1\"
- : \"{sfi|subfic} %0,%1,0\;{sfze|subfze} %L0,%L1\";
+ ? \"subfic %L0,%L1,0\;subfze %0,%1\"
+ : \"subfic %0,%1,0\;subfze %L0,%L1\";
}"
[(set_attr "type" "two")
(set_attr "length" "8")])
-(define_expand "mulsidi3"
- [(set (match_operand:DI 0 "gpc_reg_operand" "")
- (mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" ""))
- (sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))]
- "! TARGET_POWERPC64"
- "
-{
- if (! TARGET_POWER && ! TARGET_POWERPC)
- {
- emit_move_insn (gen_rtx_REG (SImode, 3), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 4), operands[2]);
- emit_insn (gen_mull_call ());
- if (WORDS_BIG_ENDIAN)
- emit_move_insn (operands[0], gen_rtx_REG (DImode, 3));
- else
- {
- emit_move_insn (operand_subword (operands[0], 0, 0, DImode),
- gen_rtx_REG (SImode, 3));
- emit_move_insn (operand_subword (operands[0], 1, 0, DImode),
- gen_rtx_REG (SImode, 4));
- }
- DONE;
- }
- else if (TARGET_POWER)
- {
- emit_insn (gen_mulsidi3_mq (operands[0], operands[1], operands[2]));
- DONE;
- }
-}")
-
-(define_insn "mulsidi3_mq"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
- (sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))
- (clobber (match_scratch:SI 3 "=q"))]
- "TARGET_POWER"
- "mul %0,%1,%2\;mfmq %L0"
- [(set_attr "type" "imul")
- (set_attr "length" "8")])
-
-(define_insn "*mulsidi3_no_mq"
+(define_insn "mulsidi3"
[(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
(mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
(sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))]
- "TARGET_POWERPC && ! TARGET_POWER && ! TARGET_POWERPC64"
- "*
+ "! TARGET_POWERPC64"
{
return (WORDS_BIG_ENDIAN)
? \"mulhw %0,%1,%2\;mullw %L0,%1,%2\"
: \"mulhw %L0,%1,%2\;mullw %0,%1,%2\";
-}"
+}
[(set_attr "type" "imul")
(set_attr "length" "8")])
@@ -7515,7 +6270,7 @@
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" ""))
(sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))]
- "TARGET_POWERPC && ! TARGET_POWERPC64 && reload_completed"
+ "! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 3)
(truncate:SI
(lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
@@ -7531,40 +6286,11 @@
operands[4] = operand_subword (operands[0], 1 - endian, 0, DImode);
}")
-(define_expand "umulsidi3"
- [(set (match_operand:DI 0 "gpc_reg_operand" "")
- (mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" ""))
- (zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))]
- "TARGET_POWERPC && ! TARGET_POWERPC64"
- "
-{
- if (TARGET_POWER)
- {
- emit_insn (gen_umulsidi3_mq (operands[0], operands[1], operands[2]));
- DONE;
- }
-}")
-
-(define_insn "umulsidi3_mq"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
- (mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
- (zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))
- (clobber (match_scratch:SI 3 "=q"))]
- "TARGET_POWERPC && TARGET_POWER"
- "*
-{
- return (WORDS_BIG_ENDIAN)
- ? \"mulhwu %0,%1,%2\;mullw %L0,%1,%2\"
- : \"mulhwu %L0,%1,%2\;mullw %0,%1,%2\";
-}"
- [(set_attr "type" "imul")
- (set_attr "length" "8")])
-
-(define_insn "*umulsidi3_no_mq"
+(define_insn "umulsidi3"
[(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
(mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
(zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))]
- "TARGET_POWERPC && ! TARGET_POWER && ! TARGET_POWERPC64"
+ "! TARGET_POWERPC64"
"*
{
return (WORDS_BIG_ENDIAN)
@@ -7578,7 +6304,7 @@
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" ""))
(zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))]
- "TARGET_POWERPC && ! TARGET_POWERPC64 && reload_completed"
+ "! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 3)
(truncate:SI
(lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1))
@@ -7594,46 +6320,7 @@
operands[4] = operand_subword (operands[0], 1 - endian, 0, DImode);
}")
-(define_expand "smulsi3_highpart"
- [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI
- (match_operand:SI 1 "gpc_reg_operand" ""))
- (sign_extend:DI
- (match_operand:SI 2 "gpc_reg_operand" "")))
- (const_int 32))))]
- ""
- "
-{
- if (! TARGET_POWER && ! TARGET_POWERPC)
- {
- emit_move_insn (gen_rtx_REG (SImode, 3), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 4), operands[2]);
- emit_insn (gen_mulh_call ());
- emit_move_insn (operands[0], gen_rtx_REG (SImode, 3));
- DONE;
- }
- else if (TARGET_POWER)
- {
- emit_insn (gen_smulsi3_highpart_mq (operands[0], operands[1], operands[2]));
- DONE;
- }
-}")
-
-(define_insn "smulsi3_highpart_mq"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (truncate:SI
- (lshiftrt:DI (mult:DI (sign_extend:DI
- (match_operand:SI 1 "gpc_reg_operand" "%r"))
- (sign_extend:DI
- (match_operand:SI 2 "gpc_reg_operand" "r")))
- (const_int 32))))
- (clobber (match_scratch:SI 3 "=q"))]
- "TARGET_POWER"
- "mul %0,%1,%2"
- [(set_attr "type" "imul")])
-
-(define_insn "*smulsi3_highpart_no_mq"
+(define_insn "smulsi3_highpart"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(truncate:SI
(lshiftrt:DI (mult:DI (sign_extend:DI
@@ -7641,42 +6328,11 @@
(sign_extend:DI
(match_operand:SI 2 "gpc_reg_operand" "r")))
(const_int 32))))]
- "TARGET_POWERPC && ! TARGET_POWER"
+ ""
"mulhw %0,%1,%2"
[(set_attr "type" "imul")])
-(define_expand "umulsi3_highpart"
- [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (truncate:SI
- (lshiftrt:DI (mult:DI (zero_extend:DI
- (match_operand:SI 1 "gpc_reg_operand" ""))
- (zero_extend:DI
- (match_operand:SI 2 "gpc_reg_operand" "")))
- (const_int 32))))]
- "TARGET_POWERPC"
- "
-{
- if (TARGET_POWER)
- {
- emit_insn (gen_umulsi3_highpart_mq (operands[0], operands[1], operands[2]));
- DONE;
- }
-}")
-
-(define_insn "umulsi3_highpart_mq"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (truncate:SI
- (lshiftrt:DI (mult:DI (zero_extend:DI
- (match_operand:SI 1 "gpc_reg_operand" "%r"))
- (zero_extend:DI
- (match_operand:SI 2 "gpc_reg_operand" "r")))
- (const_int 32))))
- (clobber (match_scratch:SI 3 "=q"))]
- "TARGET_POWERPC && TARGET_POWER"
- "mulhwu %0,%1,%2"
- [(set_attr "type" "imul")])
-
-(define_insn "*umulsi3_highpart_no_mq"
+(define_insn "umulsi3_highpart"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(truncate:SI
(lshiftrt:DI (mult:DI (zero_extend:DI
@@ -7684,61 +6340,20 @@
(zero_extend:DI
(match_operand:SI 2 "gpc_reg_operand" "r")))
(const_int 32))))]
- "TARGET_POWERPC && ! TARGET_POWER"
+ ""
"mulhwu %0,%1,%2"
[(set_attr "type" "imul")])
-;; If operands 0 and 2 are in the same register, we have a problem. But
-;; operands 0 and 1 (the usual case) can be in the same register. That's
-;; why we have the strange constraints below.
-(define_insn "ashldi3_power"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r,&r")
- (ashift:DI (match_operand:DI 1 "gpc_reg_operand" "r,r,0,r")
- (match_operand:SI 2 "reg_or_cint_operand" "M,i,r,r")))
- (clobber (match_scratch:SI 3 "=X,q,q,q"))]
- "TARGET_POWER"
- "@
- {sli|slwi} %0,%L1,%h2\;{cal %L0,0(0)|li %L0,0}
- sl%I2q %L0,%L1,%h2\;sll%I2q %0,%1,%h2
- sl%I2q %L0,%L1,%h2\;sll%I2q %0,%1,%h2
- sl%I2q %L0,%L1,%h2\;sll%I2q %0,%1,%h2"
- [(set_attr "length" "8")])
-
-(define_insn "lshrdi3_power"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r,&r")
- (lshiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r,0,r")
- (match_operand:SI 2 "reg_or_cint_operand" "M,i,r,r")))
- (clobber (match_scratch:SI 3 "=X,q,q,q"))]
- "TARGET_POWER"
- "@
- {s%A2i|s%A2wi} %L0,%1,%h2\;{cal %0,0(0)|li %0,0}
- sr%I2q %0,%1,%h2\;srl%I2q %L0,%L1,%h2
- sr%I2q %0,%1,%h2\;srl%I2q %L0,%L1,%h2
- sr%I2q %0,%1,%h2\;srl%I2q %L0,%L1,%h2"
- [(set_attr "length" "8")])
-
;; Shift by a variable amount is too complex to be worth open-coding. We
;; just handle shifts by constants.
-(define_insn "ashrdi3_power"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=&r,r")
- (ashiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "const_int_operand" "M,i")))
- (clobber (match_scratch:SI 3 "=X,q"))]
- "TARGET_POWER"
- "@
- {srai|srawi} %0,%1,31\;{srai|srawi} %L0,%1,%h2
- sraiq %0,%1,%h2\;srliq %L0,%L1,%h2"
- [(set_attr "type" "shift")
- (set_attr "length" "8")])
-
(define_insn "ashrdi3_no_power"
[(set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r")
(ashiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "const_int_operand" "M,i")))]
- "TARGET_32BIT && !TARGET_POWERPC64 && !TARGET_POWER && WORDS_BIG_ENDIAN"
+ "TARGET_32BIT && !TARGET_POWERPC64 && WORDS_BIG_ENDIAN"
"@
- {srai|srawi} %0,%1,31\;{srai|srawi} %L0,%1,%h2
- {sri|srwi} %L0,%L1,%h2\;insrwi %L0,%1,%h2,0\;{srai|srawi} %0,%1,%h2"
+ srawi %0,%1,31\;srawi %L0,%1,%h2
+ srwi %L0,%L1,%h2\;insrwi %L0,%1,%h2,0\;srawi %0,%1,%h2"
[(set_attr "type" "two,three")
(set_attr "length" "8,12")])
@@ -8292,19 +6907,8 @@
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(ashift:DI (match_operand:DI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_cint_operand" "")))]
- "TARGET_POWERPC64 || TARGET_POWER"
- "
-{
- if (TARGET_POWERPC64)
- ;
- else if (TARGET_POWER)
- {
- emit_insn (gen_ashldi3_power (operands[0], operands[1], operands[2]));
- DONE;
- }
- else
- FAIL;
-}")
+ "TARGET_POWERPC64"
+ "")
(define_insn "*ashldi3_internal1"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -8532,19 +7136,8 @@
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(lshiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_cint_operand" "")))]
- "TARGET_POWERPC64 || TARGET_POWER"
- "
-{
- if (TARGET_POWERPC64)
- ;
- else if (TARGET_POWER)
- {
- emit_insn (gen_lshrdi3_power (operands[0], operands[1], operands[2]));
- DONE;
- }
- else
- FAIL;
-}")
+ "TARGET_POWERPC64"
+ "")
(define_insn "*lshrdi3_internal1"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -8625,11 +7218,6 @@
{
if (TARGET_POWERPC64)
;
- else if (TARGET_POWER && GET_CODE (operands[2]) == CONST_INT)
- {
- emit_insn (gen_ashrdi3_power (operands[0], operands[1], operands[2]));
- DONE;
- }
else if (TARGET_32BIT && GET_CODE (operands[2]) == CONST_INT
&& WORDS_BIG_ENDIAN)
{
@@ -9281,7 +7869,7 @@
(match_operand:SI 2 "gpc_reg_operand" "b")]
UNSPEC_MOVSI_GOT))]
"DEFAULT_ABI == ABI_V4 && flag_pic == 1"
- "{l|lwz} %0,%a1@got(%2)"
+ "lwz %0,%a1@got(%2)"
[(set_attr "type" "load")])
;; Used by sched, shorten_branches and final when the GOT pseudo reg
@@ -9308,53 +7896,51 @@
(mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
(match_operand 2 "" ""))))]
"TARGET_MACHO && ! TARGET_64BIT"
- "{l|lwz} %0,lo16(%2)(%1)"
+ "lwz %0,lo16(%2)(%1)"
[(set_attr "type" "load")
(set_attr "length" "4")])
(define_insn "*movsi_internal1"
- [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "=r,r,r,m,r,r,r,r,*q,*c*l,*h,*h")
- (match_operand:SI 1 "input_operand" "r,U,m,r,I,L,n,*h,r,r,r,0"))]
+ [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "=r,r,r,m,r,r,r,r,*c*l,*h,*h")
+ (match_operand:SI 1 "input_operand" "r,U,m,r,I,L,n,*h,r,r,0"))]
"!TARGET_SINGLE_FPU &&
(gpc_reg_operand (operands[0], SImode) || gpc_reg_operand (operands[1], SImode))"
"@
mr %0,%1
- {cal|la} %0,%a1
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%X0|stw%U0%X0} %1,%0
- {lil|li} %0,%1
- {liu|lis} %0,%v1
+ la %0,%a1
+ lwz%U1%X1 %0,%1
+ stw%U0%X0 %1,%0
+ li %0,%1
+ lis %0,%v1
#
mf%1 %0
mt%0 %1
mt%0 %1
- mt%0 %1
- {cror 0,0,0|nop}"
- [(set_attr "type" "*,*,load,store,*,*,*,mfjmpr,*,mtjmpr,*,*")
- (set_attr "length" "4,4,4,4,4,4,8,4,4,4,4,4")])
+ nop"
+ [(set_attr "type" "*,*,load,store,*,*,*,mfjmpr,mtjmpr,*,*")
+ (set_attr "length" "4,4,4,4,4,4,8,4,4,4,4")])
(define_insn "*movsi_internal1_single"
- [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "=r,r,r,m,r,r,r,r,*q,*c*l,*h,*h,m,*f")
- (match_operand:SI 1 "input_operand" "r,U,m,r,I,L,n,*h,r,r,r,0,f,m"))]
+ [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "=r,r,r,m,r,r,r,r,*c*l,*h,*h,m,*f")
+ (match_operand:SI 1 "input_operand" "r,U,m,r,I,L,n,*h,r,r,0,f,m"))]
"TARGET_SINGLE_FPU &&
(gpc_reg_operand (operands[0], SImode) || gpc_reg_operand (operands[1], SImode))"
"@
mr %0,%1
- {cal|la} %0,%a1
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%X0|stw%U0%X0} %1,%0
- {lil|li} %0,%1
- {liu|lis} %0,%v1
+ la %0,%a1
+ lwz%U1%X1 %0,%1
+ stw%U0%X0 %1,%0
+ li %0,%1
+ lis %0,%v1
#
mf%1 %0
mt%0 %1
mt%0 %1
- mt%0 %1
- {cror 0,0,0|nop}
+ nop
stfs%U0%X0 %1, %0
lfs%U1%X1 %0, %1"
- [(set_attr "type" "*,*,load,store,*,*,*,mfjmpr,*,mtjmpr,*,*,*,*")
- (set_attr "length" "4,4,4,4,4,4,8,4,4,4,4,4,4,4")])
+ [(set_attr "type" "*,*,load,store,*,*,*,mfjmpr,mtjmpr,*,*,*,*")
+ (set_attr "length" "4,4,4,4,4,4,8,4,4,4,4,4,4")])
;; Split a load of a large constant into the appropriate two-insn
;; sequence.
@@ -9385,7 +7971,7 @@
(set (match_operand:P 0 "gpc_reg_operand" "=r,r,r") (match_dup 1))]
""
"@
- {cmpi|cmp<wd>i} %2,%0,0
+ cmp<wd>i %2,%0,0
mr. %0,%1
#"
[(set_attr "type" "cmp,compare,cmp")
@@ -9404,20 +7990,19 @@
"")
(define_insn "*movhi_internal"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r,r,*q,*c*l,*h")
- (match_operand:HI 1 "input_operand" "r,m,r,i,*h,r,r,0"))]
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r,r,*c*l,*h")
+ (match_operand:HI 1 "input_operand" "r,m,r,i,*h,r,0"))]
"gpc_reg_operand (operands[0], HImode)
|| gpc_reg_operand (operands[1], HImode)"
"@
mr %0,%1
lhz%U1%X1 %0,%1
sth%U0%X0 %1,%0
- {lil|li} %0,%w1
+ li %0,%w1
mf%1 %0
mt%0 %1
- mt%0 %1
- {cror 0,0,0|nop}"
- [(set_attr "type" "*,load,store,*,mfjmpr,*,mtjmpr,*")])
+ nop"
+ [(set_attr "type" "*,load,store,*,mfjmpr,mtjmpr,*")])
(define_expand "mov<mode>"
[(set (match_operand:INT 0 "general_operand" "")
@@ -9426,20 +8011,19 @@
"{ rs6000_emit_move (operands[0], operands[1], <MODE>mode); DONE; }")
(define_insn "*movqi_internal"
- [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m,r,r,*q,*c*l,*h")
- (match_operand:QI 1 "input_operand" "r,m,r,i,*h,r,r,0"))]
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m,r,r,*c*l,*h")
+ (match_operand:QI 1 "input_operand" "r,m,r,i,*h,r,0"))]
"gpc_reg_operand (operands[0], QImode)
|| gpc_reg_operand (operands[1], QImode)"
"@
mr %0,%1
lbz%U1%X1 %0,%1
stb%U0%X0 %1,%0
- {lil|li} %0,%1
+ li %0,%1
mf%1 %0
mt%0 %1
- mt%0 %1
- {cror 0,0,0|nop}"
- [(set_attr "type" "*,load,store,*,mfjmpr,*,mtjmpr,*")])
+ nop"
+ [(set_attr "type" "*,load,store,*,mfjmpr,mtjmpr,*")])
;; Here is how to move condition codes around. When we store CC data in
;; an integer register or memory, we store just the high-order 4 bits.
@@ -9451,44 +8035,43 @@
"")
(define_insn "*movcc_internal1"
- [(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,y,r,r,r,r,r,q,cl,r,m")
- (match_operand:CC 1 "general_operand" "y,r,r,O,x,y,r,I,h,r,r,m,r"))]
+ [(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,y,r,r,r,r,r,cl,r,m")
+ (match_operand:CC 1 "general_operand" "y,r,r,O,x,y,r,I,h,r,m,r"))]
"register_operand (operands[0], CCmode)
|| register_operand (operands[1], CCmode)"
"@
mcrf %0,%1
mtcrf 128,%1
- {rlinm|rlwinm} %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;{rlinm|rlwinm} %1,%1,%f0,0xffffffff
+ rlwinm %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;rlwinm %1,%1,%f0,0xffffffff
crxor %0,%0,%0
mfcr %0%Q1
- mfcr %0%Q1\;{rlinm|rlwinm} %0,%0,%f1,0xf0000000
+ mfcr %0%Q1\;rlwinm %0,%0,%f1,0xf0000000
mr %0,%1
- {lil|li} %0,%1
+ li %0,%1
mf%1 %0
mt%0 %1
- mt%0 %1
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%U1|stw%U0%U1} %1,%0"
+ lwz%U1%X1 %0,%1
+ stw%U0%U1 %1,%0"
[(set (attr "type")
(cond [(eq_attr "alternative" "0,3")
(const_string "cr_logical")
(eq_attr "alternative" "1,2")
(const_string "mtcr")
- (eq_attr "alternative" "6,7,9")
+ (eq_attr "alternative" "6,7")
(const_string "integer")
(eq_attr "alternative" "8")
(const_string "mfjmpr")
- (eq_attr "alternative" "10")
+ (eq_attr "alternative" "9")
(const_string "mtjmpr")
- (eq_attr "alternative" "11")
+ (eq_attr "alternative" "10")
(const_string "load")
- (eq_attr "alternative" "12")
+ (eq_attr "alternative" "11")
(const_string "store")
(match_test "TARGET_MFCRF")
(const_string "mfcrf")
]
(const_string "mfcr")))
- (set_attr "length" "4,4,12,4,4,8,4,4,4,4,4,4,4")])
+ (set_attr "length" "4,4,12,4,4,8,4,4,4,4,4,4")])
;; For floating-point, we normally deal with the floating-point registers
;; unless -msoft-float is used. The sole exception is that parameter passing
@@ -9527,47 +8110,45 @@
}")
(define_insn "*movsf_hardfloat"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,*c*l,*q,!r,*h,!r,!r")
- (match_operand:SF 1 "input_operand" "r,m,r,f,m,f,r,r,h,0,G,Fn"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,*c*l,!r,*h,!r,!r")
+ (match_operand:SF 1 "input_operand" "r,m,r,f,m,f,r,h,0,G,Fn"))]
"(gpc_reg_operand (operands[0], SFmode)
|| gpc_reg_operand (operands[1], SFmode))
&& (TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT)"
"@
mr %0,%1
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%X0|stw%U0%X0} %1,%0
+ lwz%U1%X1 %0,%1
+ stw%U0%X0 %1,%0
fmr %0,%1
lfs%U1%X1 %0,%1
stfs%U0%X0 %1,%0
mt%0 %1
- mt%0 %1
mf%1 %0
- {cror 0,0,0|nop}
+ nop
#
#"
- [(set_attr "type" "*,load,store,fp,fpload,fpstore,mtjmpr,*,mfjmpr,*,*,*")
- (set_attr "length" "4,4,4,4,4,4,4,4,4,4,4,8")])
+ [(set_attr "type" "*,load,store,fp,fpload,fpstore,mtjmpr,mfjmpr,*,*,*")
+ (set_attr "length" "4,4,4,4,4,4,4,4,4,4,8")])
(define_insn "*movsf_softfloat"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=r,cl,q,r,r,m,r,r,r,r,*h")
- (match_operand:SF 1 "input_operand" "r,r,r,h,m,r,I,L,G,Fn,0"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=r,cl,r,r,m,r,r,r,r,*h")
+ (match_operand:SF 1 "input_operand" "r,r,h,m,r,I,L,G,Fn,0"))]
"(gpc_reg_operand (operands[0], SFmode)
|| gpc_reg_operand (operands[1], SFmode))
&& (TARGET_SOFT_FLOAT || !TARGET_FPRS)"
"@
mr %0,%1
mt%0 %1
- mt%0 %1
mf%1 %0
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%X0|stw%U0%X0} %1,%0
- {lil|li} %0,%1
- {liu|lis} %0,%v1
+ lwz%U1%X1 %0,%1
+ stw%U0%X0 %1,%0
+ li %0,%1
+ lis %0,%v1
#
#
- {cror 0,0,0|nop}"
- [(set_attr "type" "*,mtjmpr,*,mfjmpr,load,store,*,*,*,*,*")
- (set_attr "length" "4,4,4,4,4,4,4,4,4,8,4")])
+ nop"
+ [(set_attr "type" "*,mtjmpr,mfjmpr,load,store,*,*,*,*,*")
+ (set_attr "length" "4,4,4,4,4,4,4,4,8,4")])
(define_expand "movdf"
@@ -9659,15 +8240,12 @@
#endif
}")
-;; Don't have reload use general registers to load a constant. First,
-;; it might not work if the output operand is the equivalent of
-;; a non-offsettable memref, but also it is less efficient than loading
-;; the constant into an FP register, since it will probably be used there.
-;; The "??" is a kludge until we can figure out a more reasonable way
-;; of handling these non-offsettable values.
+;; Don't have reload use general registers to load a constant. It is
+;; less efficient than loading the constant into an FP register, since
+;; it will probably be used there.
(define_insn "*movdf_hardfloat32"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,m,ws,?wa,ws,?wa,Z,?Z,d,d,m,wa,!r,!r,!r")
- (match_operand:DF 1 "input_operand" "r,m,r,ws,wa,Z,Z,ws,wa,d,m,d,j,G,H,F"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,ws,?wa,ws,?wa,Z,?Z,m,d,d,wa,!r,!r,!r")
+ (match_operand:DF 1 "input_operand" "r,Y,r,ws,wa,Z,Z,ws,wa,d,m,d,j,G,H,F"))]
"! TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
@@ -9691,11 +8269,11 @@
case 8:
return \"stxsd%U0x %x1,%y0\";
case 9:
- return \"fmr %0,%1\";
+ return \"stfd%U0%X0 %1,%0\";
case 10:
return \"lfd%U1%X1 %0,%1\";
case 11:
- return \"stfd%U0%X0 %1,%0\";
+ return \"fmr %0,%1\";
case 12:
return \"xxlxor %x0,%x0,%x0\";
case 13:
@@ -9704,46 +8282,47 @@
return \"#\";
}
}"
- [(set_attr "type" "two,load,store,fp,fp,fpload,fpload,fpstore,fpstore,fp,fpload,fpstore,vecsimple,*,*,*")
- (set_attr "length" "8,16,16,4,4,4,4,4,4,4,4,4,4,8,12,16")])
+ [(set_attr "type" "store,load,two,fp,fp,fpload,fpload,fpstore,fpstore,fpstore,fpload,fp,vecsimple,*,*,*")
+ (set_attr "length" "8,8,8,4,4,4,4,4,4,4,4,4,4,8,12,16")])
(define_insn "*movdf_softfloat32"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m,r,r,r")
- (match_operand:DF 1 "input_operand" "r,m,r,G,H,F"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,r,r,r,r")
+ (match_operand:DF 1 "input_operand" "r,Y,r,G,H,F"))]
"! TARGET_POWERPC64
&& ((TARGET_FPRS && TARGET_SINGLE_FLOAT)
|| TARGET_SOFT_FLOAT || TARGET_E500_SINGLE)
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
"#"
- [(set_attr "type" "two,load,store,*,*,*")
+ [(set_attr "type" "store,load,two,*,*,*")
(set_attr "length" "8,8,8,8,12,16")])
;; Reload patterns to support gpr load/store with misaligned mem.
-(define_expand "reload_di_store"
+;; and multiple gpr load/store at offset >= 0xfffc
+(define_expand "reload_<mode>_store"
[(parallel [(match_operand 0 "memory_operand" "=m")
(match_operand 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "register_operand" "=&b")])]
- "TARGET_POWERPC64"
+ (match_operand:GPR 2 "register_operand" "=&b")])]
+ ""
{
- rs6000_secondary_reload_ppc64 (operands[1], operands[0], operands[2], true);
+ rs6000_secondary_reload_gpr (operands[1], operands[0], operands[2], true);
DONE;
})
-(define_expand "reload_di_load"
+(define_expand "reload_<mode>_load"
[(parallel [(match_operand 0 "gpc_reg_operand" "=r")
(match_operand 1 "memory_operand" "m")
- (match_operand:DI 2 "register_operand" "=b")])]
- "TARGET_POWERPC64"
+ (match_operand:GPR 2 "register_operand" "=b")])]
+ ""
{
- rs6000_secondary_reload_ppc64 (operands[0], operands[1], operands[2], false);
+ rs6000_secondary_reload_gpr (operands[0], operands[1], operands[2], false);
DONE;
})
; ld/std require word-aligned displacements -> 'Y' constraint.
; List Y->r and r->Y before r->r for reload.
(define_insn "*movdf_hardfloat64_mfpgpr"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,ws,?wa,ws,?wa,Z,?Z,d,d,m,wa,*c*l,!r,*h,!r,!r,!r,r,d")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,ws,?wa,ws,?wa,Z,?Z,m,d,d,wa,*c*l,!r,*h,!r,!r,!r,r,d")
(match_operand:DF 1 "input_operand" "r,Y,r,ws,?wa,Z,Z,ws,wa,d,m,d,j,r,h,0,G,H,F,d,r"))]
"TARGET_POWERPC64 && TARGET_MFPGPR && TARGET_HARD_FLOAT && TARGET_FPRS
&& TARGET_DOUBLE_FLOAT
@@ -9759,25 +8338,25 @@
lxsd%U1x %x0,%y1
stxsd%U0x %x1,%y0
stxsd%U0x %x1,%y0
- fmr %0,%1
- lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0
+ lfd%U1%X1 %0,%1
+ fmr %0,%1
xxlxor %x0,%x0,%x0
mt%0 %1
mf%1 %0
- {cror 0,0,0|nop}
+ nop
#
#
#
mftgpr %0,%1
mffgpr %0,%1"
- [(set_attr "type" "store,load,*,fp,fp,fpload,fpload,fpstore,fpstore,fp,fpload,fpstore,vecsimple,mtjmpr,mfjmpr,*,*,*,*,mftgpr,mffgpr")
+ [(set_attr "type" "store,load,*,fp,fp,fpload,fpload,fpstore,fpstore,fpstore,fpload,fp,vecsimple,mtjmpr,mfjmpr,*,*,*,*,mftgpr,mffgpr")
(set_attr "length" "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,12,16,4,4")])
; ld/std require word-aligned displacements -> 'Y' constraint.
; List Y->r and r->Y before r->r for reload.
(define_insn "*movdf_hardfloat64"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,ws,?wa,ws,?wa,Z,?Z,d,d,m,wa,*c*l,!r,*h,!r,!r,!r")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,ws,?wa,ws,?wa,Z,?Z,m,d,d,wa,*c*l,!r,*h,!r,!r,!r")
(match_operand:DF 1 "input_operand" "r,Y,r,ws,wa,Z,Z,ws,wa,d,m,d,j,r,h,0,G,H,F"))]
"TARGET_POWERPC64 && !TARGET_MFPGPR && TARGET_HARD_FLOAT && TARGET_FPRS
&& TARGET_DOUBLE_FLOAT
@@ -9793,36 +8372,36 @@
lxsd%U1x %x0,%y1
stxsd%U0x %x1,%y0
stxsd%U0x %x1,%y0
- fmr %0,%1
- lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0
+ lfd%U1%X1 %0,%1
+ fmr %0,%1
xxlxor %x0,%x0,%x0
mt%0 %1
mf%1 %0
- {cror 0,0,0|nop}
+ nop
#
#
#"
- [(set_attr "type" "store,load,*,fp,fp,fpload,fpload,fpstore,fpstore,fp,fpload,fpstore,vecsimple,mtjmpr,mfjmpr,*,*,*,*")
+ [(set_attr "type" "store,load,*,fp,fp,fpload,fpload,fpstore,fpstore,fpstore,fpload,fp,vecsimple,mtjmpr,mfjmpr,*,*,*,*")
(set_attr "length" "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,12,16")])
(define_insn "*movdf_softfloat64"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=r,Y,r,cl,r,r,r,r,*h")
- (match_operand:DF 1 "input_operand" "Y,r,r,r,h,G,H,F,0"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,r,cl,r,r,r,r,*h")
+ (match_operand:DF 1 "input_operand" "r,Y,r,r,h,G,H,F,0"))]
"TARGET_POWERPC64 && (TARGET_SOFT_FLOAT || !TARGET_FPRS)
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
"@
- ld%U1%X1 %0,%1
std%U0%X0 %1,%0
+ ld%U1%X1 %0,%1
mr %0,%1
mt%0 %1
mf%1 %0
#
#
#
- {cror 0,0,0|nop}"
- [(set_attr "type" "load,store,*,mtjmpr,mfjmpr,*,*,*,*")
+ nop"
+ [(set_attr "type" "store,load,*,mtjmpr,mfjmpr,*,*,*,*")
(set_attr "length" "4,4,4,4,4,8,12,16,4")])
(define_expand "movtf"
@@ -9831,12 +8410,12 @@
"!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128"
"{ rs6000_emit_move (operands[0], operands[1], TFmode); DONE; }")
-; It's important to list the o->f and f->o moves before f->f because
-; otherwise reload, given m->f, will try to pick f->f and reload it,
-; which doesn't make progress. Likewise r->Y must be before r->r.
+;; It's important to list Y->r and r->Y before r->r because otherwise
+;; reload, given m->r, will try to pick r->r and reload it, which
+;; doesn't make progress.
(define_insn_and_split "*movtf_internal"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=o,d,d,r,Y,r")
- (match_operand:TF 1 "input_operand" "d,o,d,YGHF,r,r"))]
+ [(set (match_operand:TF 0 "nonimmediate_operand" "=m,d,d,Y,r,r")
+ (match_operand:TF 1 "input_operand" "d,m,d,r,YGHF,r"))]
"!TARGET_IEEEQUAD
&& TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128
&& (gpc_reg_operand (operands[0], TFmode)
@@ -9848,8 +8427,8 @@
[(set_attr "length" "8,8,8,20,20,16")])
(define_insn_and_split "*movtf_softfloat"
- [(set (match_operand:TF 0 "rs6000_nonimmediate_operand" "=r,Y,r")
- (match_operand:TF 1 "input_operand" "YGHF,r,r"))]
+ [(set (match_operand:TF 0 "rs6000_nonimmediate_operand" "=Y,r,r")
+ (match_operand:TF 1 "input_operand" "r,YGHF,r"))]
"!TARGET_IEEEQUAD
&& (TARGET_SOFT_FLOAT || !TARGET_FPRS) && TARGET_LONG_DOUBLE_128
&& (gpc_reg_operand (operands[0], TFmode)
@@ -9890,9 +8469,9 @@
})
(define_insn_and_split "*extenddftf2_internal"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=o,d,&d,r")
- (float_extend:TF (match_operand:DF 1 "input_operand" "dr,md,md,rmGHF")))
- (use (match_operand:DF 2 "zero_reg_mem_operand" "rd,m,d,n"))]
+ [(set (match_operand:TF 0 "nonimmediate_operand" "=m,Y,d,&d,r")
+ (float_extend:TF (match_operand:DF 1 "input_operand" "d,r,md,md,rmGHF")))
+ (use (match_operand:DF 2 "zero_reg_mem_operand" "d,r,m,d,n"))]
"!TARGET_IEEEQUAD
&& TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
&& TARGET_LONG_DOUBLE_128"
@@ -10017,11 +8596,8 @@
(define_expand "fix_trunctfsi2"
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(fix:SI (match_operand:TF 1 "gpc_reg_operand" "")))]
- "!TARGET_IEEEQUAD
- && (TARGET_POWER2 || TARGET_POWERPC)
- && TARGET_HARD_FLOAT
- && (TARGET_FPRS || TARGET_E500_DOUBLE)
- && TARGET_LONG_DOUBLE_128"
+ "!TARGET_IEEEQUAD && TARGET_HARD_FLOAT
+ && (TARGET_FPRS || TARGET_E500_DOUBLE) && TARGET_LONG_DOUBLE_128"
{
if (TARGET_E500_DOUBLE)
emit_insn (gen_spe_fix_trunctfsi2 (operands[0], operands[1]));
@@ -10038,7 +8614,6 @@
(clobber (match_dup 4))
(clobber (match_dup 5))])]
"!TARGET_IEEEQUAD
- && (TARGET_POWER2 || TARGET_POWERPC)
&& TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128"
{
operands[2] = gen_reg_rtx (DFmode);
@@ -10145,11 +8720,13 @@
;; Next come the multi-word integer load and store and the load and store
;; multiple insns.
-; List r->r after r->"o<>", otherwise reload will try to reload a
-; non-offsettable address by using r->r which won't make progress.
+;; List r->r after r->Y, otherwise reload will try to reload a
+;; non-offsettable address by using r->r which won't make progress.
+;; Use of fprs is disparaged slightly otherwise reload prefers to reload
+;; a gpr into a fpr instead of reloading an invalid 'Y' address
(define_insn "*movdi_internal32"
- [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" "=o<>,r,r,*d,*d,m,r,?wa")
- (match_operand:DI 1 "input_operand" "r,r,m,d,m,d,IJKnGHF,O"))]
+ [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" "=Y,r,r,?m,?*d,?*d,r,?wa")
+ (match_operand:DI 1 "input_operand" "r,Y,r,d,m,d,IJKnGHF,O"))]
"! TARGET_POWERPC64
&& (gpc_reg_operand (operands[0], DImode)
|| gpc_reg_operand (operands[1], DImode))"
@@ -10157,12 +8734,12 @@
#
#
#
- fmr %0,%1
- lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0
+ lfd%U1%X1 %0,%1
+ fmr %0,%1
#
xxlxor %x0,%x0,%x0"
- [(set_attr "type" "load,*,store,fp,fpload,fpstore,*,vecsimple")])
+ [(set_attr "type" "store,load,*,fpstore,fpload,fp,*,vecsimple")])
(define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "")
@@ -10195,50 +8772,50 @@
{ rs6000_split_multireg_move (operands[0], operands[1]); DONE; })
(define_insn "*movdi_mfpgpr"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,*d,*d,m,r,*h,*h,r,*d")
- (match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,d,m,d,*h,r,0,*d,r"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=Y,r,r,r,r,r,?m,?*d,?*d,r,*h,*h,r,?*d")
+ (match_operand:DI 1 "input_operand" "r,Y,r,I,L,nF,d,m,d,*h,r,0,*d,r"))]
"TARGET_POWERPC64 && TARGET_MFPGPR && TARGET_HARD_FLOAT && TARGET_FPRS
&& (gpc_reg_operand (operands[0], DImode)
|| gpc_reg_operand (operands[1], DImode))"
"@
- mr %0,%1
- ld%U1%X1 %0,%1
std%U0%X0 %1,%0
+ ld%U1%X1 %0,%1
+ mr %0,%1
li %0,%1
lis %0,%v1
#
- fmr %0,%1
- lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0
+ lfd%U1%X1 %0,%1
+ fmr %0,%1
mf%1 %0
mt%0 %1
- {cror 0,0,0|nop}
+ nop
mftgpr %0,%1
mffgpr %0,%1"
- [(set_attr "type" "*,load,store,*,*,*,fp,fpload,fpstore,mfjmpr,mtjmpr,*,mftgpr,mffgpr")
+ [(set_attr "type" "store,load,*,*,*,*,fpstore,fpload,fp,mfjmpr,mtjmpr,*,mftgpr,mffgpr")
(set_attr "length" "4,4,4,4,4,20,4,4,4,4,4,4,4,4")])
(define_insn "*movdi_internal64"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,*d,*d,m,r,*h,*h,?wa")
- (match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,d,m,d,*h,r,0,O"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=Y,r,r,r,r,r,?m,?*d,?*d,r,*h,*h,?wa")
+ (match_operand:DI 1 "input_operand" "r,Y,r,I,L,nF,d,m,d,*h,r,0,O"))]
"TARGET_POWERPC64 && (!TARGET_MFPGPR || !TARGET_HARD_FLOAT || !TARGET_FPRS)
&& (gpc_reg_operand (operands[0], DImode)
|| gpc_reg_operand (operands[1], DImode))"
"@
- mr %0,%1
- ld%U1%X1 %0,%1
std%U0%X0 %1,%0
+ ld%U1%X1 %0,%1
+ mr %0,%1
li %0,%1
lis %0,%v1
#
- fmr %0,%1
- lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0
+ lfd%U1%X1 %0,%1
+ fmr %0,%1
mf%1 %0
mt%0 %1
- {cror 0,0,0|nop}
+ nop
xxlxor %x0,%x0,%x0"
- [(set_attr "type" "*,load,store,*,*,*,fp,fpload,fpstore,mfjmpr,mtjmpr,*,vecsimple")
+ [(set_attr "type" "store,load,*,*,*,*,fpstore,fpload,fp,mfjmpr,mtjmpr,*,vecsimple")
(set_attr "length" "4,4,4,4,4,20,4,4,4,4,4,4,4")])
;; immediate value valid for a single instruction hiding in a const_double
@@ -10303,52 +8880,12 @@
}")
;; TImode is similar, except that we usually want to compute the address into
-;; a register and use lsi/stsi (the exception is during reload). MQ is also
-;; clobbered in stsi for POWER, so we need a SCRATCH for it.
-
-;; We say that MQ is clobbered in the last alternative because the first
-;; alternative would never get used otherwise since it would need a reload
-;; while the 2nd alternative would not. We put memory cases first so they
-;; are preferred. Otherwise, we'd try to reload the output instead of
-;; giving the SCRATCH mq.
-
-(define_insn "*movti_power"
- [(set (match_operand:TI 0 "reg_or_mem_operand" "=Q,m,????r,????r,????r,r")
- (match_operand:TI 1 "input_operand" "r,r,r,Q,m,n"))
- (clobber (match_scratch:SI 2 "=q,q#X,X,X,X,X"))]
- "TARGET_POWER && ! TARGET_POWERPC64
- && (gpc_reg_operand (operands[0], TImode) || gpc_reg_operand (operands[1], TImode))"
- "*
-{
- switch (which_alternative)
- {
- default:
- gcc_unreachable ();
-
- case 0:
- if (TARGET_STRING)
- return \"{stsi|stswi} %1,%P0,16\";
- case 1:
- case 2:
- return \"#\";
- case 3:
- /* If the address is not used in the output, we can use lsi. Otherwise,
- fall through to generating four loads. */
- if (TARGET_STRING
- && ! reg_overlap_mentioned_p (operands[0], operands[1]))
- return \"{lsi|lswi} %0,%P1,16\";
- /* ... fall through ... */
- case 4:
- case 5:
- return \"#\";
- }
-}"
- [(set_attr "type" "store,store,*,load,load,*")])
+;; a register and use lsi/stsi (the exception is during reload).
(define_insn "*movti_string"
- [(set (match_operand:TI 0 "reg_or_mem_operand" "=Q,o<>,????r,????r,????r,r")
- (match_operand:TI 1 "input_operand" "r,r,r,Q,m,n"))]
- "! TARGET_POWER && ! TARGET_POWERPC64
+ [(set (match_operand:TI 0 "reg_or_mem_operand" "=Q,Y,????r,????r,????r,r")
+ (match_operand:TI 1 "input_operand" "r,r,Q,Y,r,n"))]
+ "! TARGET_POWERPC64
&& (gpc_reg_operand (operands[0], TImode) || gpc_reg_operand (operands[1], TImode))"
"*
{
@@ -10358,35 +8895,35 @@
gcc_unreachable ();
case 0:
if (TARGET_STRING)
- return \"{stsi|stswi} %1,%P0,16\";
+ return \"stswi %1,%P0,16\";
case 1:
- case 2:
return \"#\";
- case 3:
+ case 2:
/* If the address is not used in the output, we can use lsi. Otherwise,
fall through to generating four loads. */
if (TARGET_STRING
&& ! reg_overlap_mentioned_p (operands[0], operands[1]))
- return \"{lsi|lswi} %0,%P1,16\";
+ return \"lswi %0,%P1,16\";
/* ... fall through ... */
+ case 3:
case 4:
case 5:
return \"#\";
}
}"
- [(set_attr "type" "store_ux,store_ux,*,load_ux,load_ux,*")
+ [(set_attr "type" "store_ux,store_ux,load_ux,load_ux,*,*")
(set (attr "cell_micro") (if_then_else (match_test "TARGET_STRING")
(const_string "always")
(const_string "conditional")))])
(define_insn "*movti_ppc64"
- [(set (match_operand:TI 0 "nonimmediate_operand" "=r,o<>,r")
- (match_operand:TI 1 "input_operand" "r,r,m"))]
+ [(set (match_operand:TI 0 "nonimmediate_operand" "=Y,r,r")
+ (match_operand:TI 1 "input_operand" "r,Y,r"))]
"(TARGET_POWERPC64 && (gpc_reg_operand (operands[0], TImode)
|| gpc_reg_operand (operands[1], TImode)))
&& VECTOR_MEM_NONE_P (TImode)"
"#"
- [(set_attr "type" "*,store,load")])
+ [(set_attr "type" "store,load,*")])
(define_split
[(set (match_operand:TI 0 "gpc_reg_operand" "")
@@ -10635,8 +9172,8 @@
(match_operand:SI 9 "gpc_reg_operand" "r"))
(set (mem:SI (plus:SI (match_dup 1) (const_int 28)))
(match_operand:SI 10 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 9"
- "{stsi|stswi} %2,%1,%O0"
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 9"
+ "stswi %2,%1,%O0"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")])
@@ -10657,8 +9194,8 @@
(match_operand:SI 8 "gpc_reg_operand" "r"))
(set (mem:SI (plus:SI (match_dup 1) (const_int 24)))
(match_operand:SI 9 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 8"
- "{stsi|stswi} %2,%1,%O0"
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 8"
+ "stswi %2,%1,%O0"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")])
@@ -10677,8 +9214,8 @@
(match_operand:SI 7 "gpc_reg_operand" "r"))
(set (mem:SI (plus:SI (match_dup 1) (const_int 20)))
(match_operand:SI 8 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 7"
- "{stsi|stswi} %2,%1,%O0"
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 7"
+ "stswi %2,%1,%O0"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")])
@@ -10695,8 +9232,8 @@
(match_operand:SI 6 "gpc_reg_operand" "r"))
(set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
(match_operand:SI 7 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 6"
- "{stsi|stswi} %2,%1,%O0"
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 6"
+ "stswi %2,%1,%O0"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")])
@@ -10711,8 +9248,8 @@
(match_operand:SI 5 "gpc_reg_operand" "r"))
(set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
(match_operand:SI 6 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 5"
- "{stsi|stswi} %2,%1,%O0"
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 5"
+ "stswi %2,%1,%O0"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")])
@@ -10725,122 +9262,8 @@
(match_operand:SI 4 "gpc_reg_operand" "r"))
(set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
(match_operand:SI 5 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 4"
- "{stsi|stswi} %2,%1,%O0"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")])
-
-(define_insn "*stmsi8_power"
- [(match_parallel 0 "store_multiple_operation"
- [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
- (match_operand:SI 2 "gpc_reg_operand" "r"))
- (clobber (match_scratch:SI 3 "=q"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
- (match_operand:SI 4 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
- (match_operand:SI 5 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
- (match_operand:SI 6 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
- (match_operand:SI 7 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 20)))
- (match_operand:SI 8 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 24)))
- (match_operand:SI 9 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 28)))
- (match_operand:SI 10 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 9"
- "{stsi|stswi} %2,%1,%O0"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")])
-
-(define_insn "*stmsi7_power"
- [(match_parallel 0 "store_multiple_operation"
- [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
- (match_operand:SI 2 "gpc_reg_operand" "r"))
- (clobber (match_scratch:SI 3 "=q"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
- (match_operand:SI 4 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
- (match_operand:SI 5 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
- (match_operand:SI 6 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
- (match_operand:SI 7 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 20)))
- (match_operand:SI 8 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 24)))
- (match_operand:SI 9 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 8"
- "{stsi|stswi} %2,%1,%O0"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")])
-
-(define_insn "*stmsi6_power"
- [(match_parallel 0 "store_multiple_operation"
- [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
- (match_operand:SI 2 "gpc_reg_operand" "r"))
- (clobber (match_scratch:SI 3 "=q"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
- (match_operand:SI 4 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
- (match_operand:SI 5 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
- (match_operand:SI 6 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
- (match_operand:SI 7 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 20)))
- (match_operand:SI 8 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 7"
- "{stsi|stswi} %2,%1,%O0"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")])
-
-(define_insn "*stmsi5_power"
- [(match_parallel 0 "store_multiple_operation"
- [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
- (match_operand:SI 2 "gpc_reg_operand" "r"))
- (clobber (match_scratch:SI 3 "=q"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
- (match_operand:SI 4 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
- (match_operand:SI 5 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
- (match_operand:SI 6 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
- (match_operand:SI 7 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 6"
- "{stsi|stswi} %2,%1,%O0"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")])
-
-(define_insn "*stmsi4_power"
- [(match_parallel 0 "store_multiple_operation"
- [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
- (match_operand:SI 2 "gpc_reg_operand" "r"))
- (clobber (match_scratch:SI 3 "=q"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
- (match_operand:SI 4 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
- (match_operand:SI 5 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
- (match_operand:SI 6 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 5"
- "{stsi|stswi} %2,%1,%O0"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")])
-
-(define_insn "*stmsi3_power"
- [(match_parallel 0 "store_multiple_operation"
- [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
- (match_operand:SI 2 "gpc_reg_operand" "r"))
- (clobber (match_scratch:SI 3 "=q"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
- (match_operand:SI 4 "gpc_reg_operand" "r"))
- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
- (match_operand:SI 5 "gpc_reg_operand" "r"))])]
- "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 4"
- "{stsi|stswi} %2,%1,%O0"
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 4"
+ "stswi %2,%1,%O0"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")])
@@ -10903,31 +9326,6 @@
"")
(define_insn ""
- [(set (mem:BLK (match_operand:SI 0 "gpc_reg_operand" "b"))
- (mem:BLK (match_operand:SI 1 "gpc_reg_operand" "b")))
- (use (match_operand:SI 2 "immediate_operand" "i"))
- (use (match_operand:SI 3 "immediate_operand" "i"))
- (clobber (match_operand:SI 4 "gpc_reg_operand" "=&r"))
- (clobber (reg:SI 6))
- (clobber (reg:SI 7))
- (clobber (reg:SI 8))
- (clobber (reg:SI 9))
- (clobber (reg:SI 10))
- (clobber (reg:SI 11))
- (clobber (reg:SI 12))
- (clobber (match_scratch:SI 5 "=q"))]
- "TARGET_STRING && TARGET_POWER
- && ((INTVAL (operands[2]) > 24 && INTVAL (operands[2]) < 32)
- || INTVAL (operands[2]) == 0)
- && (REGNO (operands[0]) < 5 || REGNO (operands[0]) > 12)
- && (REGNO (operands[1]) < 5 || REGNO (operands[1]) > 12)
- && REGNO (operands[4]) == 5"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")
- (set_attr "length" "8")])
-
-(define_insn ""
[(set (mem:BLK (match_operand:P 0 "gpc_reg_operand" "b"))
(mem:BLK (match_operand:P 1 "gpc_reg_operand" "b")))
(use (match_operand:SI 2 "immediate_operand" "i"))
@@ -10941,13 +9339,13 @@
(clobber (reg:SI 11))
(clobber (reg:SI 12))
(clobber (match_scratch:SI 5 "=X"))]
- "TARGET_STRING && ! TARGET_POWER
+ "TARGET_STRING
&& ((INTVAL (operands[2]) > 24 && INTVAL (operands[2]) < 32)
|| INTVAL (operands[2]) == 0)
&& (REGNO (operands[0]) < 5 || REGNO (operands[0]) > 12)
&& (REGNO (operands[1]) < 5 || REGNO (operands[1]) > 12)
&& REGNO (operands[4]) == 5"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
+ "lswi %4,%1,%2\;stswi %4,%0,%2"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")
(set_attr "length" "8")])
@@ -10971,28 +9369,6 @@
"")
(define_insn ""
- [(set (mem:BLK (match_operand:SI 0 "gpc_reg_operand" "b"))
- (mem:BLK (match_operand:SI 1 "gpc_reg_operand" "b")))
- (use (match_operand:SI 2 "immediate_operand" "i"))
- (use (match_operand:SI 3 "immediate_operand" "i"))
- (clobber (match_operand:SI 4 "gpc_reg_operand" "=&r"))
- (clobber (reg:SI 6))
- (clobber (reg:SI 7))
- (clobber (reg:SI 8))
- (clobber (reg:SI 9))
- (clobber (reg:SI 10))
- (clobber (match_scratch:SI 5 "=q"))]
- "TARGET_STRING && TARGET_POWER
- && INTVAL (operands[2]) > 16 && INTVAL (operands[2]) <= 24
- && (REGNO (operands[0]) < 5 || REGNO (operands[0]) > 10)
- && (REGNO (operands[1]) < 5 || REGNO (operands[1]) > 10)
- && REGNO (operands[4]) == 5"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")
- (set_attr "length" "8")])
-
-(define_insn ""
[(set (mem:BLK (match_operand:P 0 "gpc_reg_operand" "b"))
(mem:BLK (match_operand:P 1 "gpc_reg_operand" "b")))
(use (match_operand:SI 2 "immediate_operand" "i"))
@@ -11004,12 +9380,12 @@
(clobber (reg:SI 9))
(clobber (reg:SI 10))
(clobber (match_scratch:SI 5 "=X"))]
- "TARGET_STRING && ! TARGET_POWER
+ "TARGET_STRING
&& INTVAL (operands[2]) > 16 && INTVAL (operands[2]) <= 32
&& (REGNO (operands[0]) < 5 || REGNO (operands[0]) > 10)
&& (REGNO (operands[1]) < 5 || REGNO (operands[1]) > 10)
&& REGNO (operands[4]) == 5"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
+ "lswi %4,%1,%2\;stswi %4,%0,%2"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")
(set_attr "length" "8")])
@@ -11031,26 +9407,6 @@
"")
(define_insn ""
- [(set (mem:BLK (match_operand:SI 0 "gpc_reg_operand" "b"))
- (mem:BLK (match_operand:SI 1 "gpc_reg_operand" "b")))
- (use (match_operand:SI 2 "immediate_operand" "i"))
- (use (match_operand:SI 3 "immediate_operand" "i"))
- (clobber (match_operand:SI 4 "gpc_reg_operand" "=&r"))
- (clobber (reg:SI 6))
- (clobber (reg:SI 7))
- (clobber (reg:SI 8))
- (clobber (match_scratch:SI 5 "=q"))]
- "TARGET_STRING && TARGET_POWER
- && INTVAL (operands[2]) > 8 && INTVAL (operands[2]) <= 16
- && (REGNO (operands[0]) < 5 || REGNO (operands[0]) > 8)
- && (REGNO (operands[1]) < 5 || REGNO (operands[1]) > 8)
- && REGNO (operands[4]) == 5"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")
- (set_attr "length" "8")])
-
-(define_insn ""
[(set (mem:BLK (match_operand:P 0 "gpc_reg_operand" "b"))
(mem:BLK (match_operand:P 1 "gpc_reg_operand" "b")))
(use (match_operand:SI 2 "immediate_operand" "i"))
@@ -11060,12 +9416,12 @@
(clobber (reg:SI 7))
(clobber (reg:SI 8))
(clobber (match_scratch:SI 5 "=X"))]
- "TARGET_STRING && ! TARGET_POWER
+ "TARGET_STRING
&& INTVAL (operands[2]) > 8 && INTVAL (operands[2]) <= 16
&& (REGNO (operands[0]) < 5 || REGNO (operands[0]) > 8)
&& (REGNO (operands[1]) < 5 || REGNO (operands[1]) > 8)
&& REGNO (operands[4]) == 5"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
+ "lswi %4,%1,%2\;stswi %4,%0,%2"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")
(set_attr "length" "8")])
@@ -11087,24 +9443,10 @@
(use (match_operand:SI 2 "immediate_operand" "i"))
(use (match_operand:SI 3 "immediate_operand" "i"))
(clobber (match_scratch:DI 4 "=&r"))
- (clobber (match_scratch:SI 5 "=q"))]
- "TARGET_STRING && TARGET_POWER && ! TARGET_POWERPC64
- && INTVAL (operands[2]) > 4 && INTVAL (operands[2]) <= 8"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")
- (set_attr "length" "8")])
-
-(define_insn ""
- [(set (mem:BLK (match_operand:SI 0 "gpc_reg_operand" "b"))
- (mem:BLK (match_operand:SI 1 "gpc_reg_operand" "b")))
- (use (match_operand:SI 2 "immediate_operand" "i"))
- (use (match_operand:SI 3 "immediate_operand" "i"))
- (clobber (match_scratch:DI 4 "=&r"))
(clobber (match_scratch:SI 5 "=X"))]
- "TARGET_STRING && ! TARGET_POWER && ! TARGET_POWERPC64
+ "TARGET_STRING && ! TARGET_POWERPC64
&& INTVAL (operands[2]) > 4 && INTVAL (operands[2]) <= 8"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
+ "lswi %4,%1,%2\;stswi %4,%0,%2"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")
(set_attr "length" "8")])
@@ -11121,29 +9463,14 @@
"")
(define_insn ""
- [(set (mem:BLK (match_operand:SI 0 "gpc_reg_operand" "b"))
- (mem:BLK (match_operand:SI 1 "gpc_reg_operand" "b")))
- (use (match_operand:SI 2 "immediate_operand" "i"))
- (use (match_operand:SI 3 "immediate_operand" "i"))
- (clobber (match_scratch:SI 4 "=&r"))
- (clobber (match_scratch:SI 5 "=q"))]
- "TARGET_STRING && TARGET_POWER
- && INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 4"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
- [(set_attr "type" "store_ux")
- (set_attr "cell_micro" "always")
- (set_attr "length" "8")])
-
-(define_insn ""
[(set (mem:BLK (match_operand:P 0 "gpc_reg_operand" "b"))
(mem:BLK (match_operand:P 1 "gpc_reg_operand" "b")))
(use (match_operand:SI 2 "immediate_operand" "i"))
(use (match_operand:SI 3 "immediate_operand" "i"))
(clobber (match_scratch:SI 4 "=&r"))
(clobber (match_scratch:SI 5 "=X"))]
- "TARGET_STRING && ! TARGET_POWER
- && INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 4"
- "{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
+ "TARGET_STRING && INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 4"
+ "lswi %4,%1,%2\;stswi %4,%0,%2"
[(set_attr "type" "store_ux")
(set_attr "cell_micro" "always")
(set_attr "length" "8")])
@@ -11211,8 +9538,8 @@
&& (!avoiding_indexed_address_p (SImode)
|| !gpc_reg_operand (operands[2], SImode))"
"@
- {lux|lwzux} %3,%0,%2
- {lu|lwzu} %3,%2(%0)"
+ lwzux %3,%0,%2
+ lwzu %3,%2(%0)"
[(set_attr "type" "load_ux,load_u")])
(define_insn "*movsi_update2"
@@ -11239,8 +9566,8 @@
|| (REG_P (operands[0])
&& REGNO (operands[0]) == STACK_POINTER_REGNUM))"
"@
- {stux|stwux} %3,%0,%2
- {stu|stwu} %3,%2(%0)"
+ stwux %3,%0,%2
+ stwu %3,%2(%0)"
[(set_attr "type" "store_ux,store_u")])
;; This is an unconditional pattern; needed for stack allocation, even
@@ -11253,8 +9580,8 @@
(plus:SI (match_dup 1) (match_dup 2)))]
""
"@
- {stux|stwux} %3,%0,%2
- {stu|stwu} %3,%2(%0)"
+ stwux %3,%0,%2
+ stwu %3,%2(%0)"
[(set_attr "type" "store_ux,store_u")])
(define_insn "*movhi_update1"
@@ -11396,8 +9723,8 @@
&& (!avoiding_indexed_address_p (SImode)
|| !gpc_reg_operand (operands[2], SImode))"
"@
- {lux|lwzux} %3,%0,%2
- {lu|lwzu} %3,%2(%0)"
+ lwzux %3,%0,%2
+ lwzu %3,%2(%0)"
[(set_attr "type" "load_ux,load_u")])
(define_insn "*movsf_update4"
@@ -11410,8 +9737,8 @@
&& (!avoiding_indexed_address_p (SImode)
|| !gpc_reg_operand (operands[2], SImode))"
"@
- {stux|stwux} %3,%0,%2
- {stu|stwu} %3,%2(%0)"
+ stwux %3,%0,%2
+ stwu %3,%2(%0)"
[(set_attr "type" "store_ux,store_u")])
(define_insn "*movdf_update1"
@@ -11442,50 +9769,6 @@
stfdu %3,%2(%0)"
[(set_attr "type" "fpstore_ux,fpstore_u")])
-;; Peephole to convert two consecutive FP loads or stores into lfq/stfq.
-
-(define_insn "*lfq_power2"
- [(set (match_operand:V2DF 0 "gpc_reg_operand" "=f")
- (match_operand:V2DF 1 "memory_operand" ""))]
- "TARGET_POWER2
- && TARGET_HARD_FLOAT && TARGET_FPRS"
- "lfq%U1%X1 %0,%1")
-
-(define_peephole2
- [(set (match_operand:DF 0 "gpc_reg_operand" "")
- (match_operand:DF 1 "memory_operand" ""))
- (set (match_operand:DF 2 "gpc_reg_operand" "")
- (match_operand:DF 3 "memory_operand" ""))]
- "TARGET_POWER2
- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
- && registers_ok_for_quad_peep (operands[0], operands[2])
- && mems_ok_for_quad_peep (operands[1], operands[3])"
- [(set (match_dup 0)
- (match_dup 1))]
- "operands[1] = widen_memory_access (operands[1], V2DFmode, 0);
- operands[0] = gen_rtx_REG (V2DFmode, REGNO (operands[0]));")
-
-(define_insn "*stfq_power2"
- [(set (match_operand:V2DF 0 "memory_operand" "")
- (match_operand:V2DF 1 "gpc_reg_operand" "f"))]
- "TARGET_POWER2
- && TARGET_HARD_FLOAT && TARGET_FPRS"
- "stfq%U0%X0 %1,%0")
-
-
-(define_peephole2
- [(set (match_operand:DF 0 "memory_operand" "")
- (match_operand:DF 1 "gpc_reg_operand" ""))
- (set (match_operand:DF 2 "memory_operand" "")
- (match_operand:DF 3 "gpc_reg_operand" ""))]
- "TARGET_POWER2
- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
- && registers_ok_for_quad_peep (operands[1], operands[3])
- && mems_ok_for_quad_peep (operands[0], operands[2])"
- [(set (match_dup 0)
- (match_dup 1))]
- "operands[0] = widen_memory_access (operands[0], V2DFmode, 0);
- operands[1] = gen_rtx_REG (V2DFmode, REGNO (operands[1]));")
;; After inserting conditional returns we can sometimes have
;; unnecessary register moves. Unfortunately we cannot have a
@@ -12099,7 +10382,7 @@
ASM_GENERATE_INTERNAL_LABEL (buf, \"LCTOC\", 1);
operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
operands[2] = gen_rtx_REG (Pmode, 2);
- return \"{l|lwz} %0,%1(%2)\";
+ return \"lwz %0,%1(%2)\";
}"
[(set_attr "type" "load")])
@@ -12214,7 +10497,7 @@
(minus:SI (match_operand:SI 2 "immediate_operand" "s")
(match_operand:SI 3 "immediate_operand" "s")))))]
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
- "{l|lwz} %0,%2-%3(%1)"
+ "lwz %0,%2-%3(%1)"
[(set_attr "type" "load")])
(define_insn "load_toc_v4_PIC_3b"
@@ -12224,7 +10507,7 @@
(minus:SI (match_operand:SI 2 "symbol_ref_operand" "s")
(match_operand:SI 3 "symbol_ref_operand" "s")))))]
"TARGET_ELF && TARGET_SECURE_PLT && DEFAULT_ABI != ABI_AIX && flag_pic"
- "{cau|addis} %0,%1,%2-%3@ha")
+ "addis %0,%1,%2-%3@ha")
(define_insn "load_toc_v4_PIC_3c"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
@@ -12232,7 +10515,7 @@
(minus:SI (match_operand:SI 2 "symbol_ref_operand" "s")
(match_operand:SI 3 "symbol_ref_operand" "s"))))]
"TARGET_ELF && TARGET_SECURE_PLT && DEFAULT_ABI != ABI_AIX && flag_pic"
- "{cal %0,%2-%3@l(%1)|addi %0,%1,%2-%3@l}")
+ "addi %0,%1,%2-%3@l")
;; If the TOC is shared over a translation unit, as happens with all
;; the kinds of PIC that we support, we need to restore the TOC
@@ -12277,7 +10560,7 @@
(match_operand:DI 2 "gpc_reg_operand" "b")]
UNSPEC_TOCREL)))]
"TARGET_ELF && TARGET_CMODEL != CMODEL_SMALL"
- "{cau|addis} %0,%2,%1@toc@ha")
+ "addis %0,%2,%1@toc@ha")
(define_insn "*largetoc_high_plus"
[(set (match_operand:DI 0 "gpc_reg_operand" "=b*r")
@@ -12288,7 +10571,7 @@
UNSPEC_TOCREL)
(match_operand 3 "const_int_operand" "n"))))]
"TARGET_ELF && TARGET_CMODEL != CMODEL_SMALL"
- "{cau|addis} %0,%2,%1+%3@toc@ha")
+ "addis %0,%2,%1+%3@toc@ha")
(define_insn "*largetoc_low"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -12296,14 +10579,14 @@
(match_operand:DI 2 "" "")))]
"TARGET_ELF && TARGET_CMODEL != CMODEL_SMALL"
"@
- {cal %0,%2@l(%1)|addi %0,%1,%2@l}
- {ai|addic} %0,%1,%2@l")
+ addi %0,%1,%2@l
+ addic %0,%1,%2@l")
(define_insn_and_split "*tocref<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=b*r")
(match_operand:P 1 "small_toc_ref" "R"))]
"TARGET_TOC"
- "{cal|la} %0,%a1"
+ "la %0,%a1"
"&& TARGET_ELF && TARGET_CMODEL != CMODEL_SMALL && reload_completed"
[(set (match_dup 0) (high:P (match_dup 1)))
(set (match_dup 0) (lo_sum:P (match_dup 0) (match_dup 1)))])
@@ -12316,7 +10599,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=b*r")
(high:SI (match_operand 1 "" "")))]
"TARGET_ELF && ! TARGET_64BIT"
- "{liu|lis} %0,%1@ha")
+ "lis %0,%1@ha")
(define_insn "elf_low"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
@@ -12324,8 +10607,8 @@
(match_operand 2 "" "")))]
"TARGET_ELF && ! TARGET_64BIT"
"@
- {cal|la} %0,%2@l(%1)
- {ai|addic} %0,%1,%K2")
+ la %0,%2@l(%1)
+ addic %0,%1,%K2")
;; Call and call_value insns
(define_expand "call"
@@ -13085,7 +11368,7 @@
"*
{
operands[1] = gen_rtx_REG (Pmode, 0);
- return \"{st%U0%X0|stw%U0%X0} %1,%0\";
+ return \"stw%U0%X0 %1,%0\";
}"
[(set_attr "type" "store")
(set_attr "length" "4")])
@@ -13210,16 +11493,16 @@
(unspec:SI [(match_operand:SI 1 "memory_operand" "m")] UNSPEC_SP_SET))
(set (match_scratch:SI 2 "=&r") (const_int 0))]
"TARGET_32BIT"
- "{l%U1%X1|lwz%U1%X1} %2,%1\;{st%U0%X0|stw%U0%X0} %2,%0\;{lil|li} %2,0"
+ "lwz%U1%X1 %2,%1\;stw%U0%X0 %2,%0\;li %2,0"
[(set_attr "type" "three")
(set_attr "length" "12")])
(define_insn "stack_protect_setdi"
- [(set (match_operand:DI 0 "memory_operand" "=m")
- (unspec:DI [(match_operand:DI 1 "memory_operand" "m")] UNSPEC_SP_SET))
+ [(set (match_operand:DI 0 "memory_operand" "=Y")
+ (unspec:DI [(match_operand:DI 1 "memory_operand" "Y")] UNSPEC_SP_SET))
(set (match_scratch:DI 2 "=&r") (const_int 0))]
"TARGET_64BIT"
- "ld%U1%X1 %2,%1\;std%U0%X0 %2,%0\;{lil|li} %2,0"
+ "ld%U1%X1 %2,%1\;std%U0%X0 %2,%0\;li %2,0"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -13251,21 +11534,21 @@
(clobber (match_scratch:SI 3 "=&r,&r"))]
"TARGET_32BIT"
"@
- {l%U1%X1|lwz%U1%X1} %3,%1\;{l%U2%X2|lwz%U2%X2} %4,%2\;xor. %3,%3,%4\;{lil|li} %4,0
- {l%U1%X1|lwz%U1%X1} %3,%1\;{l%U2%X2|lwz%U2%X2} %4,%2\;{cmpl|cmplw} %0,%3,%4\;{lil|li} %3,0\;{lil|li} %4,0"
+ lwz%U1%X1 %3,%1\;lwz%U2%X2 %4,%2\;xor. %3,%3,%4\;li %4,0
+ lwz%U1%X1 %3,%1\;lwz%U2%X2 %4,%2\;cmplw %0,%3,%4\;li %3,0\;li %4,0"
[(set_attr "length" "16,20")])
(define_insn "stack_protect_testdi"
[(set (match_operand:CCEQ 0 "cc_reg_operand" "=x,?y")
- (unspec:CCEQ [(match_operand:DI 1 "memory_operand" "m,m")
- (match_operand:DI 2 "memory_operand" "m,m")]
+ (unspec:CCEQ [(match_operand:DI 1 "memory_operand" "Y,Y")
+ (match_operand:DI 2 "memory_operand" "Y,Y")]
UNSPEC_SP_TEST))
(set (match_scratch:DI 4 "=r,r") (const_int 0))
(clobber (match_scratch:DI 3 "=&r,&r"))]
"TARGET_64BIT"
"@
- ld%U1%X1 %3,%1\;ld%U2%X2 %4,%2\;xor. %3,%3,%4\;{lil|li} %4,0
- ld%U1%X1 %3,%1\;ld%U2%X2 %4,%2\;cmpld %0,%3,%4\;{lil|li} %3,0\;{lil|li} %4,0"
+ ld%U1%X1 %3,%1\;ld%U2%X2 %4,%2\;xor. %3,%3,%4\;li %4,0
+ ld%U1%X1 %3,%1\;ld%U2%X2 %4,%2\;cmpld %0,%3,%4\;li %3,0\;li %4,0"
[(set_attr "length" "16,20")])
@@ -13275,7 +11558,7 @@
(compare:CC (match_operand:GPR 1 "gpc_reg_operand" "r")
(match_operand:GPR 2 "reg_or_short_operand" "rI")))]
""
- "{cmp%I2|cmp<wd>%I2} %0,%1,%2"
+ "cmp<wd>%I2 %0,%1,%2"
[(set_attr "type" "cmp")])
;; If we are comparing a register for equality with a large constant,
@@ -13326,7 +11609,7 @@
(compare:CCUNS (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_u_short_operand" "rK")))]
""
- "{cmpl%I2|cmplw%I2} %0,%1,%b2"
+ "cmplw%I2 %0,%1,%b2"
[(set_attr "type" "cmp")])
(define_insn "*cmpdi_internal2"
@@ -13484,7 +11767,7 @@
[(match_operand 2 "cc_reg_operand" "y")
(const_int 0)]))]
""
- "mfcr %0%Q2\;{rlinm|rlwinm} %0,%0,%J1,1"
+ "mfcr %0%Q2\;rlwinm %0,%0,%J1,1"
[(set (attr "type")
(cond [(match_test "TARGET_MFCRF")
(const_string "mfcrf")
@@ -13497,7 +11780,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(unspec:SI [(match_operand 1 "cc_reg_operand" "y")] UNSPEC_MV_CR_GT))]
"TARGET_HARD_FLOAT && !TARGET_FPRS"
- "mfcr %0\;{rlinm|rlwinm} %0,%0,%D1,31,31"
+ "mfcr %0\;rlwinm %0,%0,%D1,31,31"
[(set_attr "type" "mfcr")
(set_attr "length" "8")])
@@ -13506,7 +11789,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(unspec:SI [(match_operand 1 "cc_reg_operand" "y")] UNSPEC_MV_CR_OV))]
"TARGET_ISEL"
- "mfcr %0\;{rlinm|rlwinm} %0,%0,%t1,1"
+ "mfcr %0\;rlwinm %0,%0,%t1,1"
[(set_attr "type" "mfcr")
(set_attr "length" "8")])
@@ -13516,7 +11799,7 @@
[(match_operand 2 "cc_reg_operand" "y")
(const_int 0)]))]
"TARGET_POWERPC64"
- "mfcr %0%Q2\;{rlinm|rlwinm} %0,%0,%J1,1"
+ "mfcr %0%Q2\;rlwinm %0,%0,%J1,1"
[(set (attr "type")
(cond [(match_test "TARGET_MFCRF")
(const_string "mfcrf")
@@ -13534,7 +11817,7 @@
(match_op_dup 1 [(match_dup 2) (const_int 0)]))]
"TARGET_32BIT"
"@
- mfcr %3%Q2\;{rlinm.|rlwinm.} %3,%3,%J1,1
+ mfcr %3%Q2\;rlwinm. %3,%3,%J1,1
#"
[(set_attr "type" "delayed_compare")
(set_attr "length" "8,16")])
@@ -13576,7 +11859,7 @@
operands[4] = GEN_INT (count);
operands[5] = GEN_INT (put_bit);
- return \"mfcr %0%Q2\;{rlinm|rlwinm} %0,%0,%4,%5,%5\";
+ return \"mfcr %0%Q2\;rlwinm %0,%0,%4,%5,%5\";
}"
[(set (attr "type")
(cond [(match_test "TARGET_MFCRF")
@@ -13615,7 +11898,7 @@
operands[5] = GEN_INT (count);
operands[6] = GEN_INT (put_bit);
- return \"mfcr %4%Q2\;{rlinm.|rlwinm.} %4,%4,%5,%6,%6\";
+ return \"mfcr %4%Q2\;rlwinm. %4,%4,%5,%6,%6\";
}"
[(set_attr "type" "delayed_compare")
(set_attr "length" "8,16")])
@@ -13653,7 +11936,7 @@
[(match_operand 5 "cc_reg_operand" "y")
(const_int 0)]))]
"REGNO (operands[2]) != REGNO (operands[5])"
- "mfcr %3\;{rlinm|rlwinm} %0,%3,%J1,1\;{rlinm|rlwinm} %3,%3,%J4,1"
+ "mfcr %3\;rlwinm %0,%3,%J1,1\;rlwinm %3,%3,%J4,1"
[(set_attr "type" "mfcr")
(set_attr "length" "12")])
@@ -13667,7 +11950,7 @@
[(match_operand 5 "cc_reg_operand" "y")
(const_int 0)]))]
"TARGET_POWERPC64 && REGNO (operands[2]) != REGNO (operands[5])"
- "mfcr %3\;{rlinm|rlwinm} %0,%3,%J1,1\;{rlinm|rlwinm} %3,%3,%J4,1"
+ "mfcr %3\;rlwinm %0,%3,%J1,1\;rlwinm %3,%3,%J4,1"
[(set_attr "type" "mfcr")
(set_attr "length" "12")])
@@ -13692,9 +11975,9 @@
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(eq:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
(match_operand:GPR 2 "scc_eq_operand" "<scc_eq_op2>")))]
- "!TARGET_POWER"
+ ""
"#"
- "!TARGET_POWER"
+ ""
[(set (match_dup 0)
(clz:GPR (match_dup 3)))
(set (match_dup 0)
@@ -13729,9 +12012,9 @@
(const_int 0)))
(set (match_operand:P 0 "gpc_reg_operand" "=r")
(eq:P (match_dup 1) (match_dup 2)))]
- "!TARGET_POWER && optimize_size"
+ "optimize_size"
"#"
- "!TARGET_POWER && optimize_size"
+ "optimize_size"
[(set (match_dup 0)
(clz:P (match_dup 4)))
(parallel [(set (match_dup 3)
@@ -13761,21 +12044,6 @@
operands[5] = GEN_INT (exact_log2 (GET_MODE_BITSIZE (<MODE>mode)));
})
-(define_insn "*eqsi_power"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r")
- (eq:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r,r,r,r")
- (match_operand:SI 2 "reg_or_cint_operand" "r,O,K,L,I")))
- (clobber (match_scratch:SI 3 "=r,&r,r,r,r"))]
- "TARGET_POWER"
- "@
- xor %0,%1,%2\;{sfi|subfic} %3,%0,0\;{ae|adde} %0,%3,%0
- {sfi|subfic} %3,%1,0\;{ae|adde} %0,%3,%1
- {xoril|xori} %0,%1,%b2\;{sfi|subfic} %3,%0,0\;{ae|adde} %0,%3,%0
- {xoriu|xoris} %0,%1,%u2\;{sfi|subfic} %3,%0,0\;{ae|adde} %0,%3,%0
- {sfi|subfic} %0,%1,%2\;{sfi|subfic} %3,%0,0\;{ae|adde} %0,%3,%0"
- [(set_attr "type" "three,two,three,three,three")
- (set_attr "length" "12,8,12,12,12")])
-
;; We have insns of the form shown by the first define_insn below. If
;; there is something inside the comparison operation, we must split it.
(define_split
@@ -13798,11 +12066,11 @@
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r,r")))]
"TARGET_32BIT"
"@
- xor %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3
- {sfi|subfic} %0,%1,0\;{aze|addze} %0,%3
- {xoril|xori} %0,%1,%b2\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3
- {xoriu|xoris} %0,%1,%u2\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3
- {sfi|subfic} %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3"
+ xor %0,%1,%2\;subfic %0,%0,0\;addze %0,%3
+ subfic %0,%1,0\;addze %0,%3
+ xori %0,%1,%b2\;subfic %0,%0,0\;addze %0,%3
+ xoris %0,%1,%u2\;subfic %0,%0,0\;addze %0,%3
+ subfic %0,%1,%2\;subfic %0,%0,0\;addze %0,%3"
[(set_attr "type" "three,two,three,three,three")
(set_attr "length" "12,8,12,12,12")])
@@ -13817,11 +12085,11 @@
(clobber (match_scratch:SI 4 "=&r,&r,&r,&r,&r,&r,&r,&r,&r,&r"))]
"TARGET_32BIT && optimize_size"
"@
- xor %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %4,%3
- {sfi|subfic} %4,%1,0\;{aze.|addze.} %4,%3
- {xoril|xori} %4,%1,%b2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %4,%3
- {xoriu|xoris} %4,%1,%u2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %4,%3
- {sfi|subfic} %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %4,%3
+ xor %4,%1,%2\;subfic %4,%4,0\;addze. %4,%3
+ subfic %4,%1,0\;addze. %4,%3
+ xori %4,%1,%b2\;subfic %4,%4,0\;addze. %4,%3
+ xoris %4,%1,%u2\;subfic %4,%4,0\;addze. %4,%3
+ subfic %4,%1,%2\;subfic %4,%4,0\;addze. %4,%3
#
#
#
@@ -13861,11 +12129,11 @@
(plus:SI (eq:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_32BIT && optimize_size"
"@
- xor %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
- {sfi|subfic} %0,%1,0\;{aze.|addze.} %0,%3
- {xoril|xori} %0,%1,%b2\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
- {xoriu|xoris} %0,%1,%u2\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
- {sfi|subfic} %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
+ xor %0,%1,%2\;subfic %0,%0,0\;addze. %0,%3
+ subfic %0,%1,0\;addze. %0,%3
+ xori %0,%1,%b2\;subfic %0,%0,0\;addze. %0,%3
+ xoris %0,%1,%u2\;subfic %0,%0,0\;addze. %0,%3
+ subfic %0,%1,%2\;subfic %0,%0,0\;addze. %0,%3
#
#
#
@@ -13897,7 +12165,7 @@
(neg:P (eq:P (match_operand:P 1 "gpc_reg_operand" "r")
(const_int 0))))]
""
- "{ai|addic} %0,%1,-1\;{sfe|subfe} %0,%0,%0"
+ "addic %0,%1,-1\;subfe %0,%0,%0"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -13936,8 +12204,8 @@
(lshiftrt:SI (neg:SI (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r")))
(const_int 31)))
(clobber (match_scratch:SI 2 "=&r"))]
- "! TARGET_POWER && TARGET_32BIT && !TARGET_ISEL"
- "{ai|addic} %2,%1,-1\;{sfe|subfe} %0,%2,%1"
+ "TARGET_32BIT && !TARGET_ISEL"
+ "addic %2,%1,-1\;subfe %0,%2,%1"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -13960,7 +12228,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r")))
(clobber (match_scratch:SI 3 "=&r"))]
"TARGET_32BIT"
- "{ai|addic} %3,%1,-1\;{aze|addze} %0,%2"
+ "addic %3,%1,-1\;addze %0,%2"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -13988,7 +12256,7 @@
(clobber (match_scratch:SI 4 "=X,&r"))]
"TARGET_32BIT"
"@
- {ai|addic} %3,%1,-1\;{aze.|addze.} %3,%2
+ addic %3,%1,-1\;addze. %3,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")])
@@ -14063,7 +12331,7 @@
(clobber (match_scratch:SI 3 "=&r,&r"))]
"TARGET_32BIT"
"@
- {ai|addic} %3,%1,-1\;{aze.|addze.} %0,%2
+ addic %3,%1,-1\;addze. %0,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")])
@@ -14131,149 +12399,12 @@
(const_int 0)))]
"")
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,O")))
- (clobber (match_scratch:SI 3 "=r,X"))]
- "TARGET_POWER"
- "@
- doz %3,%2,%1\;{sfi|subfic} %0,%3,0\;{ae|adde} %0,%0,%3
- {ai|addic} %0,%1,-1\;{aze|addze} %0,%0\;{sri|srwi} %0,%0,31"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
- (compare:CC
- (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,O,r,O"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
- (le:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 3 "=r,X,r,X"))]
- "TARGET_POWER"
- "@
- doz %3,%2,%1\;{sfi|subfic} %0,%3,0\;{ae.|adde.} %0,%0,%3
- {ai|addic} %0,%1,-1\;{aze|addze} %0,%0\;{sri.|srwi.} %0,%0,31
- #
- #"
- [(set_attr "type" "compare,delayed_compare,compare,delayed_compare")
- (set_attr "length" "12,12,16,16")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (le:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (le:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 3 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 0)
- (le:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 3))])
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
- (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,O"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r")))]
- "TARGET_POWER"
- "@
- doz %0,%2,%1\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3
- {srai|srawi} %0,%1,31\;{sf|subfc} %0,%1,%0\;{aze|addze} %0,%3"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
- (compare:CC
- (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,O,r,O"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
- (const_int 0)))
- (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
- "TARGET_POWER"
- "@
- doz %4,%2,%1\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %4,%3
- {srai|srawi} %4,%1,31\;{sf|subfc} %4,%1,%4\;{aze.|addze.} %4,%3
- #
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,12,16,16")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 4)
- (plus:SI (le:SI (match_dup 1) (match_dup 2))
- (match_dup 3)))
- (set (match_dup 0)
- (compare:CC (match_dup 4)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
- (compare:CC
- (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,O,r,O"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r")
- (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER"
- "@
- doz %0,%2,%1\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
- {srai|srawi} %0,%1,31\;{sf|subfc} %0,%1,%0\;{aze.|addze.} %0,%3
- #
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,12,16,16")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (neg:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,O"))))]
- "TARGET_POWER"
- "@
- doz %0,%2,%1\;{ai|addic} %0,%0,-1\;{sfe|subfe} %0,%0,%0
- {ai|addic} %0,%1,-1\;{aze|addze} %0,%0\;{srai|srawi} %0,%0,31"
- [(set_attr "length" "12")])
-
(define_insn "*leu<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=r")
(leu:P (match_operand:P 1 "gpc_reg_operand" "r")
(match_operand:P 2 "reg_or_short_operand" "rI")))]
""
- "{sf%I2|subf%I2c} %0,%1,%2\;{cal %0,0(0)|li %0,0}\;{ae|adde} %0,%0,%0"
+ "subf%I2c %0,%1,%2\;li %0,0\;adde %0,%0,%0"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -14287,7 +12418,7 @@
(leu:P (match_dup 1) (match_dup 2)))]
""
"@
- {sf%I2|subf%I2c} %0,%1,%2\;{cal %0,0(0)|li %0,0}\;{ae.|adde.} %0,%0,%0
+ subf%I2c %0,%1,%2\;li %0,0\;adde. %0,%0,%0
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
@@ -14314,7 +12445,7 @@
(match_operand:P 2 "reg_or_short_operand" "rI"))
(match_operand:P 3 "gpc_reg_operand" "r")))]
""
- "{sf%I2|subf%I2c} %0,%1,%2\;{aze|addze} %0,%3"
+ "subf%I2c %0,%1,%2\;addze %0,%3"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -14328,7 +12459,7 @@
(clobber (match_scratch:SI 4 "=&r,&r"))]
"TARGET_32BIT"
"@
- {sf%I2|subf%I2c} %4,%1,%2\;{aze.|addze.} %4,%3
+ subf%I2c %4,%1,%2\;addze. %4,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")])
@@ -14361,7 +12492,7 @@
(plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_32BIT"
"@
- {sf%I2|subf%I2c} %0,%1,%2\;{aze.|addze.} %0,%3
+ subf%I2c %0,%1,%2\;addze. %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")])
@@ -14388,7 +12519,7 @@
(neg:P (leu:P (match_operand:P 1 "gpc_reg_operand" "r")
(match_operand:P 2 "reg_or_short_operand" "rI"))))]
""
- "{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;nand %0,%0,%0"
+ "subf%I2c %0,%1,%2\;subfe %0,%0,%0\;nand %0,%0,%0"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -14399,7 +12530,7 @@
(match_operand:P 2 "reg_or_short_operand" "rI")))
(match_operand:P 3 "gpc_reg_operand" "r")))]
""
- "{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0"
+ "subf%I2c %0,%1,%2\;subfe %0,%0,%0\;andc %0,%3,%0"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -14414,7 +12545,7 @@
(clobber (match_scratch:SI 4 "=&r,&r"))]
"TARGET_32BIT"
"@
- {sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc. %4,%3,%4
+ subf%I2c %4,%1,%2\;subfe %4,%4,%4\;andc. %4,%3,%4
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
@@ -14449,7 +12580,7 @@
(and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))]
"TARGET_32BIT"
"@
- {sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0
+ subf%I2c %0,%1,%2\;subfe %0,%0,%0\;andc. %0,%3,%0
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
@@ -14473,127 +12604,6 @@
(const_int 0)))]
"")
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "rI")))]
- "TARGET_POWER"
- "doz%I2 %0,%1,%2\;nabs %0,%0\;{sri|srwi} %0,%0,31"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
- (compare:CC
- (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (lt:SI (match_dup 1) (match_dup 2)))]
- "TARGET_POWER"
- "@
- doz%I2 %0,%1,%2\;nabs %0,%0\;{sri.|srwi.} %0,%0,31
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (lt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (lt:SI (match_dup 1) (match_dup 2)))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (lt:SI (match_dup 1) (match_dup 2)))
- (set (match_dup 3)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
- (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "rI"))
- (match_operand:SI 3 "gpc_reg_operand" "r")))]
- "TARGET_POWER"
- "doz%I2 %0,%1,%2\;{ai|addic} %0,%0,-1\;{aze|addze} %0,%3"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
- (compare:CC
- (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (clobber (match_scratch:SI 4 "=&r,&r"))]
- "TARGET_POWER"
- "@
- doz%I2 %4,%1,%2\;{ai|addic} %4,%4,-1\;{aze.|addze.} %4,%3
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 4)
- (plus:SI (lt:SI (match_dup 1) (match_dup 2))
- (match_dup 3)))
- (set (match_dup 0)
- (compare:CC (match_dup 4)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
- (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER"
- "@
- doz%I2 %0,%1,%2\;{ai|addic} %0,%0,-1\;{aze.|addze.} %0,%3
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (neg:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "rI"))))]
- "TARGET_POWER"
- "doz%I2 %0,%1,%2\;nabs %0,%0\;{srai|srawi} %0,%0,31"
- [(set_attr "length" "12")])
-
(define_insn_and_split "*ltu<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=r,r")
(ltu:P (match_operand:P 1 "gpc_reg_operand" "r,r")
@@ -14659,144 +12669,19 @@
(match_operand:P 2 "reg_or_neg_short_operand" "r,P"))))]
""
"@
- {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0
- {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0"
+ subfc %0,%2,%1\;subfe %0,%0,%0
+ addic %0,%1,%n2\;subfe %0,%0,%0"
[(set_attr "type" "two")
(set_attr "length" "8")])
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "rI")))
- (clobber (match_scratch:SI 3 "=r"))]
- "TARGET_POWER"
- "doz%I2 %3,%1,%2\;{sfi|subfic} %0,%3,0\;{ae|adde} %0,%0,%3"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (ge:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 3 "=r,r"))]
- "TARGET_POWER"
- "@
- doz%I2 %3,%1,%2\;{sfi|subfic} %0,%3,0\;{ae.|adde.} %0,%0,%3
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (ge:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (ge:SI (match_dup 1) (match_dup 2)))
- (clobber (match_scratch:SI 3 ""))]
- "TARGET_POWER && reload_completed"
- [(parallel [(set (match_dup 0)
- (ge:SI (match_dup 1) (match_dup 2)))
- (clobber (match_dup 3))])
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
- (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "rI"))
- (match_operand:SI 3 "gpc_reg_operand" "r")))]
- "TARGET_POWER"
- "doz%I2 %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
- (compare:CC
- (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (clobber (match_scratch:SI 4 "=&r,&r"))]
- "TARGET_POWER"
- "@
- doz%I2 %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %4,%3
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 4)
- (plus:SI (ge:SI (match_dup 1) (match_dup 2))
- (match_dup 3)))
- (set (match_dup 0)
- (compare:CC (match_dup 4)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
- (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER"
- "@
- doz%I2 %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (neg:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "rI"))))]
- "TARGET_POWER"
- "doz%I2 %0,%1,%2\;{ai|addic} %0,%0,-1\;{sfe|subfe} %0,%0,%0"
- [(set_attr "length" "12")])
-
(define_insn "*geu<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=r,r")
(geu:P (match_operand:P 1 "gpc_reg_operand" "r,r")
(match_operand:P 2 "reg_or_neg_short_operand" "r,P")))]
""
"@
- {sf|subfc} %0,%2,%1\;{cal %0,0(0)|li %0,0}\;{ae|adde} %0,%0,%0
- {ai|addic} %0,%1,%n2\;{cal %0,0(0)|li %0,0}\;{ae|adde} %0,%0,%0"
+ subfc %0,%2,%1\;li %0,0\;adde %0,%0,%0
+ addic %0,%1,%n2\;li %0,0\;adde %0,%0,%0"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -14810,8 +12695,8 @@
(geu:P (match_dup 1) (match_dup 2)))]
""
"@
- {sf|subfc} %0,%2,%1\;{cal %0,0(0)|li %0,0}\;{ae.|adde.} %0,%0,%0
- {ai|addic} %0,%1,%n2\;{cal %0,0(0)|li %0,0}\;{ae.|adde.} %0,%0,%0
+ subfc %0,%2,%1\;li %0,0\;adde. %0,%0,%0
+ addic %0,%1,%n2\;li %0,0\;adde. %0,%0,%0
#
#"
[(set_attr "type" "compare")
@@ -14840,8 +12725,8 @@
(match_operand:P 3 "gpc_reg_operand" "r,r")))]
""
"@
- {sf|subfc} %0,%2,%1\;{aze|addze} %0,%3
- {ai|addic} %0,%1,%n2\;{aze|addze} %0,%3"
+ subfc %0,%2,%1\;addze %0,%3
+ addic %0,%1,%n2\;addze %0,%3"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -14855,8 +12740,8 @@
(clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
"TARGET_32BIT"
"@
- {sf|subfc} %4,%2,%1\;{aze.|addze.} %4,%3
- {ai|addic} %4,%1,%n2\;{aze.|addze.} %4,%3
+ subfc %4,%2,%1\;addze. %4,%3
+ addic %4,%1,%n2\;addze. %4,%3
#
#"
[(set_attr "type" "compare")
@@ -14890,8 +12775,8 @@
(plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_32BIT"
"@
- {sf|subfc} %0,%2,%1\;{aze.|addze.} %0,%3
- {ai|addic} %0,%1,%n2\;{aze.|addze.} %0,%3
+ subfc %0,%2,%1\;addze. %0,%3
+ addic %0,%1,%n2\;addze. %0,%3
#
#"
[(set_attr "type" "compare")
@@ -14920,8 +12805,8 @@
(match_operand:P 2 "reg_or_short_operand" "r,I"))))]
""
"@
- {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;nand %0,%0,%0
- {sfi|subfic} %0,%1,-1\;{a%I2|add%I2c} %0,%0,%2\;{sfe|subfe} %0,%0,%0"
+ subfc %0,%2,%1\;subfe %0,%0,%0\;nand %0,%0,%0
+ subfic %0,%1,-1\;add%I2c %0,%0,%2\;subfe %0,%0,%0"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -14933,8 +12818,8 @@
(match_operand:P 3 "gpc_reg_operand" "r,r")))]
""
"@
- {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0
- {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0"
+ subfc %0,%2,%1\;subfe %0,%0,%0\;andc %0,%3,%0
+ addic %0,%1,%n2\;subfe %0,%0,%0\;andc %0,%3,%0"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -14949,8 +12834,8 @@
(clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
"TARGET_32BIT"
"@
- {sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc. %4,%3,%4
- {ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc. %4,%3,%4
+ subfc %4,%2,%1\;subfe %4,%4,%4\;andc. %4,%3,%4
+ addic %4,%1,%n2\;subfe %4,%4,%4\;andc. %4,%3,%4
#
#"
[(set_attr "type" "compare")
@@ -14986,8 +12871,8 @@
(and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))]
"TARGET_32BIT"
"@
- {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0
- {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0
+ subfc %0,%2,%1\;subfe %0,%0,%0\;andc. %0,%3,%0
+ addic %0,%1,%n2\;subfe %0,%0,%0\;andc. %0,%3,%0
#
#"
[(set_attr "type" "compare")
@@ -15011,52 +12896,13 @@
(const_int 0)))]
"")
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "r")))]
- "TARGET_POWER"
- "doz %0,%2,%1\;nabs %0,%0\;{sri|srwi} %0,%0,31"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
- (compare:CC
- (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
- (gt:SI (match_dup 1) (match_dup 2)))]
- "TARGET_POWER"
- "@
- doz %0,%2,%1\;nabs %0,%0\;{sri.|srwi.} %0,%0,31
- #"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (gt:SI (match_dup 1) (match_dup 2)))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (gt:SI (match_dup 1) (match_dup 2)))
- (set (match_dup 3)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
(define_insn "*plus_gt0<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=&r")
(plus:P (gt:P (match_operand:P 1 "gpc_reg_operand" "r")
(const_int 0))
(match_operand:P 2 "gpc_reg_operand" "r")))]
""
- "{a|addc} %0,%1,%1\;{sfe|subfe} %0,%1,%0\;{aze|addze} %0,%2"
+ "addc %0,%1,%1\;subfe %0,%1,%0\;addze %0,%2"
[(set_attr "type" "three")
(set_attr "length" "12")])
@@ -15070,7 +12916,7 @@
(clobber (match_scratch:SI 3 "=&r,&r"))]
"TARGET_32BIT"
"@
- {a|addc} %3,%1,%1\;{sfe|subfe} %3,%1,%3\;{aze.|addze.} %3,%2
+ addc %3,%1,%1\;subfe %3,%1,%3\;addze. %3,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
@@ -15135,7 +12981,7 @@
(plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))]
"TARGET_32BIT"
"@
- {a|addc} %0,%1,%1\;{sfe|subfe} %0,%1,%0\;{aze.|addze.} %0,%2
+ addc %0,%1,%1\;subfe %0,%1,%0\;addze. %0,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
@@ -15190,87 +13036,6 @@
(const_int 0)))]
"")
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
- (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "r"))
- (match_operand:SI 3 "gpc_reg_operand" "r")))]
- "TARGET_POWER"
- "doz %0,%2,%1\;{ai|addic} %0,%0,-1\;{aze|addze} %0,%3"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y")
- (compare:CC
- (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,r"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (clobber (match_scratch:SI 4 "=&r,&r"))]
- "TARGET_POWER"
- "@
- doz %4,%2,%1\;{ai|addic} %4,%4,-1\;{aze.|addze.} %4,%3
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 0 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (clobber (match_scratch:SI 4 ""))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 4)
- (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (set (match_dup 0)
- (compare:CC (match_dup 4)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
- (compare:CC
- (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
- (match_operand:SI 2 "reg_or_short_operand" "r,r"))
- (match_operand:SI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
- (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER"
- "@
- doz %0,%2,%1\;{ai|addic} %0,%0,-1\;{aze.|addze.} %0,%3
- #"
- [(set_attr "type" "compare")
- (set_attr "length" "12,16")])
-
-(define_split
- [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
- (compare:CC
- (plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "reg_or_short_operand" ""))
- (match_operand:SI 3 "gpc_reg_operand" ""))
- (const_int 0)))
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "TARGET_POWER && reload_completed"
- [(set (match_dup 0)
- (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (set (match_dup 4)
- (compare:CC (match_dup 0)
- (const_int 0)))]
- "")
-
-(define_insn ""
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (neg:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_short_operand" "r"))))]
- "TARGET_POWER"
- "doz %0,%2,%1\;nabs %0,%0\;{srai|srawi} %0,%0,31"
- [(set_attr "length" "12")])
-
(define_insn_and_split "*gtu<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=r")
(gtu:P (match_operand:P 1 "gpc_reg_operand" "r")
@@ -15335,7 +13100,7 @@
(neg:P (gtu:P (match_operand:P 1 "gpc_reg_operand" "r")
(match_operand:P 2 "reg_or_short_operand" "rI"))))]
""
- "{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0"
+ "subf%I2c %0,%1,%2\;subfe %0,%0,%0"
[(set_attr "type" "two")
(set_attr "length" "8")])
@@ -15462,7 +13227,7 @@
(const_int 0)])
(const_int 0)))]
""
- "{crnor %E0,%j1,%j1|crnot %E0,%j1}"
+ "crnot %E0,%j1"
[(set_attr "type" "cr_logical,delayed_cr")])
;; If we are comparing the result of two comparisons, this can be done
@@ -15531,7 +13296,7 @@
(define_insn "<return_str>return"
[(any_return)]
"<return_pred>"
- "{br|blr}"
+ "blr"
[(set_attr "type" "jmpreg")])
(define_expand "indirect_jump"
@@ -15542,7 +13307,7 @@
""
"@
bctr
- {br|blr}"
+ blr"
[(set_attr "type" "jmpreg")])
;; Table jump for switch statements:
@@ -15594,13 +13359,13 @@
""
"@
bctr
- {br|blr}"
+ blr"
[(set_attr "type" "jmpreg")])
(define_insn "nop"
[(const_int 0)]
""
- "{cror 0,0,0|nop}")
+ "nop")
(define_insn "group_ending_nop"
[(unspec [(const_int 0)] UNSPEC_GRP_END_NOP)]
@@ -15668,7 +13433,7 @@
(const_int 1))
(label_ref (match_operand 0 "" ""))
(pc)))
- (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*q*c*l")
+ (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*c*l")
(plus:P (match_dup 1)
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
@@ -15679,7 +13444,7 @@
if (which_alternative != 0)
return \"#\";
else if (get_attr_length (insn) == 4)
- return \"{bdn|bdnz} %l0\";
+ return \"bdnz %l0\";
else
return \"bdz $+8\;b %l0\";
}"
@@ -15692,7 +13457,7 @@
(const_int 1))
(pc)
(label_ref (match_operand 0 "" ""))))
- (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*q*c*l")
+ (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*c*l")
(plus:P (match_dup 1)
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
@@ -15705,7 +13470,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
- return \"{bdn|bdnz} $+8\;b %l0\";
+ return \"bdnz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16,16")])
@@ -15718,7 +13483,7 @@
(const_int 1))
(label_ref (match_operand 0 "" ""))
(pc)))
- (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*q*c*l")
+ (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*c*l")
(plus:P (match_dup 1)
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
@@ -15731,7 +13496,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
- return \"{bdn|bdnz} $+8\;b %l0\";
+ return \"bdnz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16,16")])
@@ -15742,7 +13507,7 @@
(const_int 1))
(pc)
(label_ref (match_operand 0 "" ""))))
- (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*q*c*l")
+ (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*c*l")
(plus:P (match_dup 1)
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
@@ -15753,7 +13518,7 @@
if (which_alternative != 0)
return \"#\";
else if (get_attr_length (insn) == 4)
- return \"{bdn|bdnz} %l0\";
+ return \"bdnz %l0\";
else
return \"bdz $+8\;b %l0\";
}"
@@ -15819,7 +13584,7 @@
(define_insn "trap"
[(trap_if (const_int 1) (const_int 0))]
""
- "{t 31,0,0|trap}"
+ "trap"
[(set_attr "type" "trap")])
(define_expand "ctrap<mode>4"
@@ -15836,7 +13601,7 @@
(match_operand:GPR 2 "reg_or_short_operand" "rI")])
(const_int 0))]
""
- "{t|t<wd>}%V0%I2 %1,%2"
+ "t<wd>%V0%I2 %1,%2"
[(set_attr "type" "trap")])
;; Insns related to generating the function prologue and epilogue.
@@ -15888,7 +13653,7 @@
[(set (match_operand:SI 1 "memory_operand" "=m")
(match_operand:SI 2 "gpc_reg_operand" "r"))])]
"TARGET_MULTIPLE"
- "{stm|stmw} %2,%1"
+ "stmw %2,%1"
[(set_attr "type" "store_ux")])
; The following comment applies to:
@@ -16047,7 +13812,7 @@
[(set (match_operand:SI 1 "gpc_reg_operand" "=r")
(match_operand:SI 2 "memory_operand" "m"))])]
"TARGET_MULTIPLE"
- "{lm|lmw} %1,%2"
+ "lmw %1,%2"
[(set_attr "type" "load_ux")
(set_attr "cell_micro" "always")])
@@ -16252,7 +14017,7 @@
[(prefetch (match_operand 0 "indexed_or_indirect_address" "a")
(match_operand:SI 1 "const_int_operand" "n")
(match_operand:SI 2 "const_int_operand" "n"))]
- "TARGET_POWERPC"
+ ""
"*
{
if (GET_CODE (operands[0]) == REG)
diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt
index d428133cc74..878b0fb4777 100644
--- a/gcc/config/rs6000/rs6000.opt
+++ b/gcc/config/rs6000/rs6000.opt
@@ -1,7 +1,6 @@
; Options for the rs6000 port of the compiler
;
-; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-; Foundation, Inc.
+; Copyright (C) 2005-2012 Free Software Foundation, Inc.
; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
;
; This file is part of GCC.
@@ -25,7 +24,7 @@ config/rs6000/rs6000-opts.h
;; Current processor
TargetVariable
-enum processor_type rs6000_cpu = PROCESSOR_RIOS1
+enum processor_type rs6000_cpu = PROCESSOR_PPC603
;; Always emit branch hint bits.
TargetVariable
@@ -91,25 +90,9 @@ unsigned int rs6000_debug
TargetSave
int rs6000_target_flags_explicit
-mpower
-Target Report RejectNegative Mask(POWER)
-Use POWER instruction set
-
-mno-power
-Target Report RejectNegative
-Do not use POWER instruction set
-
-mpower2
-Target Report Mask(POWER2)
-Use POWER2 instruction set
-
+;; This option existed in the past, but now is always on.
mpowerpc
-Target Report RejectNegative Mask(POWERPC)
-Use PowerPC instruction set
-
-mno-powerpc
-Target Report RejectNegative
-Do not use PowerPC instruction set
+Target RejectNegative Undocumented Ignore
mpowerpc64
Target Report Mask(POWERPC64)
@@ -167,14 +150,6 @@ mstring
Target Report Mask(STRING) Save
Generate string instructions for block moves
-mnew-mnemonics
-Target Report RejectNegative Mask(NEW_MNEMONICS)
-Use new mnemonics for PowerPC architecture
-
-mold-mnemonics
-Target Report RejectNegative InverseMask(NEW_MNEMONICS)
-Use old mnemonics for PowerPC architecture
-
msoft-float
Target Report RejectNegative Mask(SOFT_FLOAT)
Do not use hardware floating point
diff --git a/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md
index 43cdbfa92f2..bf59b6cf552 100644
--- a/gcc/config/rs6000/spe.md
+++ b/gcc/config/rs6000/spe.md
@@ -2289,9 +2289,9 @@
known to be dead. */
if (refers_to_regno_p (REGNO (operands[0]), REGNO (operands[0]) + 1,
operands[1], 0))
- return \"{l|lwz} %L0,%L1\;{l|lwz} %0,%1\";
+ return \"lwz %L0,%L1\;lwz %0,%1\";
else
- return \"{l%U1%X1|lwz%U1%X1} %0,%1\;{l|lwz} %L0,%L1\";
+ return \"lwz%U1%X1 %0,%1\;lwz %L0,%L1\";
}
}"
[(set_attr "length" "8,8")])
@@ -2315,9 +2315,9 @@
return \"evldd%X1 %Z0,%y1\;evmergehi %Y0,%Z0,%Z0\";
if (refers_to_regno_p (REGNO (operands[0]), REGNO (operands[0]) + 1,
operands[1], 0))
- return \"{l|lwz} %Z0,%L1\;{l|lwz} %Y0,%1\";
+ return \"lwz %Z0,%L1\;lwz %Y0,%1\";
else
- return \"{l%U1%X1|lwz%U1%X1} %Y0,%1\;{l|lwz} %Z0,%L1\";
+ return \"lwz%U1%X1 %Y0,%1\;lwz %Z0,%L1\";
}
}"
[(set_attr "length" "8,8")])
@@ -2336,7 +2336,7 @@
|| (TARGET_SPE && <MODE>mode != DFmode && <MODE>mode != TFmode)"
"@
evmergelo %0,%1,%0
- evmergelohi %0,%0,%0\;{l%U1%X1|lwz%U1%X1} %0,%1\;evmergelohi %0,%0,%0"
+ evmergelohi %0,%0,%0\;lwz%U1%X1 %0,%1\;evmergelohi %0,%0,%0"
[(set_attr "length" "4,12")])
(define_insn_and_split "*mov_si<mode>_e500_subreg0_elf_low"
@@ -2366,7 +2366,7 @@
|| (TARGET_SPE && <MODE>mode != DFmode && <MODE>mode != TFmode)"
"@
evmergehi %0,%0,%1
- evmergelohi %1,%1,%1\;{st%U0%X0|stw%U0%X0} %1,%0"
+ evmergelohi %1,%1,%1\;stw%U0%X0 %1,%0"
[(set_attr "length" "4,8")])
(define_insn "*mov_si<mode>_e500_subreg4"
@@ -2376,7 +2376,7 @@
|| (TARGET_SPE && <MODE>mode != DFmode && <MODE>mode != TFmode)"
"@
mr %0,%1
- {l%U1%X1|lwz%U1%X1} %0,%1")
+ lwz%U1%X1 %0,%1")
(define_insn "*mov_si<mode>_e500_subreg4_elf_low"
[(set (subreg:SI (match_operand:SPE64TF 0 "register_operand" "+r") 4)
@@ -2385,7 +2385,7 @@
"((TARGET_E500_DOUBLE && (<MODE>mode == DFmode || <MODE>mode == TFmode))
|| (TARGET_SPE && <MODE>mode != DFmode && <MODE>mode != TFmode))
&& TARGET_ELF && !TARGET_64BIT"
- "{ai|addic} %0,%1,%K2")
+ "addic %0,%1,%K2")
(define_insn "*mov_si<mode>_e500_subreg4_2"
[(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "+r,m")
@@ -2394,7 +2394,7 @@
|| (TARGET_SPE && <MODE>mode != DFmode && <MODE>mode != TFmode)"
"@
mr %0,%1
- {st%U0%X0|stw%U0%X0} %1,%0")
+ stw%U0%X0 %1,%0")
(define_insn "*mov_sitf_e500_subreg8"
[(set (subreg:SI (match_operand:TF 0 "register_operand" "+r,&r") 8)
@@ -2402,7 +2402,7 @@
"TARGET_E500_DOUBLE"
"@
evmergelo %L0,%1,%L0
- evmergelohi %L0,%L0,%L0\;{l%U1%X1|lwz%U1%X1} %L0,%1\;evmergelohi %L0,%L0,%L0"
+ evmergelohi %L0,%L0,%L0\;lwz%U1%X1 %L0,%1\;evmergelohi %L0,%L0,%L0"
[(set_attr "length" "4,12")])
(define_insn "*mov_sitf_e500_subreg8_2"
@@ -2411,7 +2411,7 @@
"TARGET_E500_DOUBLE"
"@
evmergehi %0,%0,%L1
- evmergelohi %L1,%L1,%L1\;{st%U0%X0|stw%U0%X0} %L1,%0"
+ evmergelohi %L1,%L1,%L1\;stw%U0%X0 %L1,%0"
[(set_attr "length" "4,8")])
(define_insn "*mov_sitf_e500_subreg12"
@@ -2420,7 +2420,7 @@
"TARGET_E500_DOUBLE"
"@
mr %L0,%1
- {l%U1%X1|lwz%U1%X1} %L0,%1")
+ lwz%U1%X1 %L0,%1")
(define_insn "*mov_sitf_e500_subreg12_2"
[(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "+r,m")
@@ -2428,7 +2428,7 @@
"TARGET_E500_DOUBLE"
"@
mr %0,%L1
- {st%U0%X0|stw%U0%X0} %L1,%0")
+ stw%U0%X0 %L1,%0")
;; FIXME: Allow r=CONST0.
(define_insn "*movdf_e500_double"
diff --git a/gcc/config/rs6000/sync.md b/gcc/config/rs6000/sync.md
index 5b794289ca7..ab60cbcd483 100644
--- a/gcc/config/rs6000/sync.md
+++ b/gcc/config/rs6000/sync.md
@@ -1,6 +1,5 @@
;; Machine description for PowerPC synchronization instructions.
-;; Copyright (C) 2005, 2007, 2008, 2009, 2011
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2005-2012 Free Software Foundation, Inc.
;; Contributed by Geoffrey Keating.
;; This file is part of GCC.
@@ -66,7 +65,7 @@
[(set (match_operand:BLK 0 "" "")
(unspec:BLK [(match_dup 0)] UNSPEC_SYNC))]
""
- "{dcs|sync}"
+ "sync"
[(set_attr "type" "sync")])
(define_expand "lwsync"
@@ -96,7 +95,7 @@
(define_insn "isync"
[(unspec_volatile:BLK [(const_int 0)] UNSPECV_ISYNC)]
""
- "{ics|isync}"
+ "isync"
[(set_attr "type" "isync")])
;; The control dependency used for load dependency described
@@ -172,7 +171,7 @@
[(set (match_operand:ATOMIC 0 "gpc_reg_operand" "=r")
(unspec_volatile:ATOMIC
[(match_operand:ATOMIC 1 "memory_operand" "Z")] UNSPECV_LL))]
- "TARGET_POWERPC"
+ ""
"<larx> %0,%y1"
[(set_attr "type" "load_l")])
@@ -181,7 +180,7 @@
(unspec_volatile:CC [(const_int 0)] UNSPECV_SC))
(set (match_operand:ATOMIC 1 "memory_operand" "=Z")
(match_operand:ATOMIC 2 "gpc_reg_operand" "r"))]
- "TARGET_POWERPC"
+ ""
"<stcx> %2,%y1"
[(set_attr "type" "store_c")])
@@ -194,7 +193,7 @@
(match_operand:SI 5 "const_int_operand" "") ;; is_weak
(match_operand:SI 6 "const_int_operand" "") ;; model succ
(match_operand:SI 7 "const_int_operand" "")] ;; model fail
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_compare_and_swap (operands);
DONE;
@@ -205,7 +204,7 @@
(match_operand:INT1 1 "memory_operand" "") ;; memory
(match_operand:INT1 2 "gpc_reg_operand" "") ;; input
(match_operand:SI 3 "const_int_operand" "")] ;; model
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_exchange (operands);
DONE;
@@ -216,7 +215,7 @@
(FETCHOP:INT1 (match_dup 0)
(match_operand:INT1 1 "<fetchop_pred>" "")) ;; operand
(match_operand:SI 2 "const_int_operand" "")] ;; model
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_op (<CODE>, operands[0], operands[1],
NULL_RTX, NULL_RTX, operands[2]);
@@ -227,7 +226,7 @@
[(match_operand:INT1 0 "memory_operand" "") ;; memory
(match_operand:INT1 1 "gpc_reg_operand" "") ;; operand
(match_operand:SI 2 "const_int_operand" "")] ;; model
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_op (NOT, operands[0], operands[1],
NULL_RTX, NULL_RTX, operands[2]);
@@ -240,7 +239,7 @@
(FETCHOP:INT1 (match_dup 1)
(match_operand:INT1 2 "<fetchop_pred>" "")) ;; operand
(match_operand:SI 3 "const_int_operand" "")] ;; model
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_op (<CODE>, operands[1], operands[2],
operands[0], NULL_RTX, operands[3]);
@@ -252,7 +251,7 @@
(match_operand:INT1 1 "memory_operand" "") ;; memory
(match_operand:INT1 2 "gpc_reg_operand" "") ;; operand
(match_operand:SI 3 "const_int_operand" "")] ;; model
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_op (NOT, operands[1], operands[2],
operands[0], NULL_RTX, operands[3]);
@@ -265,7 +264,7 @@
(FETCHOP:INT1 (match_dup 1)
(match_operand:INT1 2 "<fetchop_pred>" "")) ;; operand
(match_operand:SI 3 "const_int_operand" "")] ;; model
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_op (<CODE>, operands[1], operands[2],
NULL_RTX, operands[0], operands[3]);
@@ -277,7 +276,7 @@
(match_operand:INT1 1 "memory_operand" "") ;; memory
(match_operand:INT1 2 "gpc_reg_operand" "") ;; operand
(match_operand:SI 3 "const_int_operand" "")] ;; model
- "TARGET_POWERPC"
+ ""
{
rs6000_expand_atomic_op (NOT, operands[1], operands[2],
NULL_RTX, operands[0], operands[3]);
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index 204f394cb59..978ba31ab6b 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -1,7 +1,5 @@
/* Target definitions for GNU compiler for PowerPC running System V.4
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
- Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GCC.
@@ -222,16 +220,12 @@ do { \
/* Override rs6000.h definition. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
+#define TARGET_DEFAULT 0
/* Override rs6000.h definition. */
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_PPC750
-/* SVR4 only defined for PowerPC, so short-circuit POWER patterns. */
-#undef TARGET_POWER
-#define TARGET_POWER 0
-
#define FIXED_R2 1
/* System V.4 uses register 13 as a pointer to the small data area,
so it is not available to the normal user. */
@@ -456,7 +450,7 @@ do { \
do { \
if (DEFAULT_ABI == ABI_V4) \
asm_fprintf (FILE, \
- "\t{stu|stwu} %s,-16(%s)\n\t{st|stw} %s,12(%s)\n", \
+ "\tstwu %s,-16(%s)\n\tstw %s,12(%s)\n", \
reg_names[1], reg_names[1], reg_names[REGNO], \
reg_names[1]); \
} while (0)
@@ -468,7 +462,7 @@ do { \
do { \
if (DEFAULT_ABI == ABI_V4) \
asm_fprintf (FILE, \
- "\t{l|lwz} %s,12(%s)\n\t{ai|addic} %s,%s,16\n", \
+ "\tlwz %s,12(%s)\n\taddic %s,%s,16\n", \
reg_names[REGNO], reg_names[1], reg_names[1], \
reg_names[1]); \
} while (0)
diff --git a/gcc/config/rs6000/sysv4le.h b/gcc/config/rs6000/sysv4le.h
index 15597776680..74fb65fe991 100644
--- a/gcc/config/rs6000/sysv4le.h
+++ b/gcc/config/rs6000/sysv4le.h
@@ -1,6 +1,6 @@
/* Target definitions for GCC for a little endian PowerPC
running System V.4
- Copyright (C) 1995, 2000, 2003, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GCC.
@@ -20,7 +20,7 @@
<http://www.gnu.org/licenses/>. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_LITTLE_ENDIAN)
+#define TARGET_DEFAULT MASK_LITTLE_ENDIAN
#undef CC1_ENDIAN_DEFAULT_SPEC
#define CC1_ENDIAN_DEFAULT_SPEC "%(cc1_endian_little)"
diff --git a/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43
index 97ce70ecca3..08b59b9f2e9 100644
--- a/gcc/config/rs6000/t-aix43
+++ b/gcc/config/rs6000/t-aix43
@@ -1,5 +1,4 @@
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -21,20 +20,14 @@
# different processor models
MULTILIB_OPTIONS = pthread \
- mcpu=common/mcpu=power/mcpu=powerpc/maix64
+ mcpu=common/mcpu=powerpc/maix64
MULTILIB_DIRNAMES = pthread \
- common power powerpc ppc64
+ common powerpc ppc64
-MULTILIB_MATCHES = mcpu?power=mcpu?power \
- mcpu?power=mcpu?power2 \
- mcpu?powerpc=mcpu?power3 \
+MULTILIB_MATCHES = mcpu?powerpc=mcpu?power3 \
mcpu?powerpc=mcpu?power4 \
mcpu?powerpc=mcpu?powerpc \
- mcpu?power=mcpu?rios1 \
- mcpu?power=mcpu?rios2 \
- mcpu?power=mcpu?rsc \
- mcpu?power=mcpu?rsc1 \
mcpu?powerpc=mcpu?rs64a \
mcpu?powerpc=mcpu?601 \
mcpu?powerpc=mcpu?602 \
diff --git a/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000
index 100dccc7075..8acc3399ca1 100644
--- a/gcc/config/rs6000/t-rs6000
+++ b/gcc/config/rs6000/t-rs6000
@@ -1,7 +1,6 @@
# General rules that all rs6000/ targets must have.
#
-# Copyright (C) 1995, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2008, 2009,
-# 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -44,12 +43,11 @@ $(srcdir)/config/rs6000/rs6000-tables.opt: $(srcdir)/config/rs6000/genopt.sh \
# The rs6000 backend doesn't cause warnings in these files.
insn-conditions.o-warn =
-MD_INCLUDES = $(srcdir)/config/rs6000/rios1.md \
- $(srcdir)/config/rs6000/rios2.md \
- $(srcdir)/config/rs6000/rs64.md \
+MD_INCLUDES = $(srcdir)/config/rs6000/rs64.md \
$(srcdir)/config/rs6000/mpc.md \
$(srcdir)/config/rs6000/40x.md \
$(srcdir)/config/rs6000/440.md \
+ $(srcdir)/config/rs6000/601.md \
$(srcdir)/config/rs6000/603.md \
$(srcdir)/config/rs6000/6xx.md \
$(srcdir)/config/rs6000/7xx.md \
diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
index 37cb2486c8d..58db3cfb9bf 100644
--- a/gcc/config/rs6000/vsx.md
+++ b/gcc/config/rs6000/vsx.md
@@ -545,7 +545,7 @@
xsmaddmdp %x0,%x1,%x3
xsmaddadp %x0,%x1,%x2
xsmaddmdp %x0,%x1,%x3
- {fma|fmadd} %0,%1,%2,%3"
+ fmadd %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
@@ -591,7 +591,7 @@
xsmsubmdp %x0,%x1,%x3
xsmsubadp %x0,%x1,%x2
xsmsubmdp %x0,%x1,%x3
- {fms|fmsub} %0,%1,%2,%3"
+ fmsub %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
@@ -623,7 +623,7 @@
xsnmaddmdp %x0,%x1,%x3
xsnmaddadp %x0,%x1,%x2
xsnmaddmdp %x0,%x1,%x3
- {fnma|fnmadd} %0,%1,%2,%3"
+ fnmadd %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
@@ -657,7 +657,7 @@
xsnmsubmdp %x0,%x1,%x3
xsnmsubadp %x0,%x1,%x2
xsnmsubmdp %x0,%x1,%x3
- {fnms|fnmsub} %0,%1,%2,%3"
+ fnmsub %0,%1,%2,%3"
[(set_attr "type" "fp")
(set_attr "fp_type" "fp_maddsub_d")])
diff --git a/gcc/config/rs6000/vxworks.h b/gcc/config/rs6000/vxworks.h
index 6169f166059..13bfc4a03f6 100644
--- a/gcc/config/rs6000/vxworks.h
+++ b/gcc/config/rs6000/vxworks.h
@@ -1,6 +1,5 @@
/* Definitions of target machine for GNU compiler. Vxworks PowerPC version.
- Copyright (C) 1996, 2000, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1996-2012 Free Software Foundation, Inc.
Contributed by CodeSourcery, LLC.
This file is part of GCC.
@@ -99,8 +98,7 @@ VXWORKS_ADDITIONAL_CPP_SPEC
#undef MULTILIB_DEFAULTS
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
- (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI | MASK_STRICT_ALIGN)
+#define TARGET_DEFAULT (MASK_EABI | MASK_STRICT_ALIGN)
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_PPC604
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
index 4a6afdc3b05..146e7c94a8b 100644
--- a/gcc/config/rx/rx.c
+++ b/gcc/config/rx/rx.c
@@ -2629,6 +2629,14 @@ rx_func_attr_inlinable (const_tree decl)
&& ! is_naked_func (decl);
}
+static bool
+rx_warn_func_return (tree decl)
+{
+ /* Naked functions are implemented entirely in assembly, including the
+ return sequence, so suppress warnings about this. */
+ return !is_naked_func (decl);
+}
+
/* Return nonzero if it is ok to make a tail-call to DECL,
a function_decl or NULL if this is an indirect call, using EXP */
@@ -3282,6 +3290,9 @@ rx_adjust_insn_length (rtx insn, int current_length)
#undef TARGET_LEGITIMIZE_ADDRESS
#define TARGET_LEGITIMIZE_ADDRESS rx_legitimize_address
+#undef TARGET_WARN_FUNC_RETURN
+#define TARGET_WARN_FUNC_RETURN rx_warn_func_return
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-rx.h"
diff --git a/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h
index 01a3584fe86..79673d6d835 100644
--- a/gcc/config/s390/s390-protos.h
+++ b/gcc/config/s390/s390-protos.h
@@ -80,12 +80,13 @@ extern void s390_reload_symref_address (rtx , rtx , rtx , bool);
extern void s390_expand_plus_operand (rtx, rtx, rtx);
extern void emit_symbolic_move (rtx *);
extern void s390_load_address (rtx, rtx);
-extern void s390_expand_movmem (rtx, rtx, rtx);
+extern bool s390_expand_movmem (rtx, rtx, rtx);
extern void s390_expand_setmem (rtx, rtx, rtx);
-extern void s390_expand_cmpmem (rtx, rtx, rtx, rtx);
+extern bool s390_expand_cmpmem (rtx, rtx, rtx, rtx);
extern bool s390_expand_addcc (enum rtx_code, rtx, rtx, rtx, rtx, rtx);
extern bool s390_expand_insv (rtx, rtx, rtx, rtx);
-extern void s390_expand_cs_hqi (enum machine_mode, rtx, rtx, rtx, rtx);
+extern void s390_expand_cs_hqi (enum machine_mode, rtx, rtx, rtx,
+ rtx, rtx, bool);
extern void s390_expand_atomic (enum machine_mode, enum rtx_code,
rtx, rtx, rtx, bool);
extern rtx s390_return_addr_rtx (int, rtx);
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index ca33d4e3498..d67c0eb5c57 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -896,10 +896,12 @@ s390_emit_compare (enum rtx_code code, rtx op0, rtx op1)
conditional branch testing the result. */
static rtx
-s390_emit_compare_and_swap (enum rtx_code code, rtx old, rtx mem, rtx cmp, rtx new_rtx)
+s390_emit_compare_and_swap (enum rtx_code code, rtx old, rtx mem,
+ rtx cmp, rtx new_rtx)
{
- emit_insn (gen_sync_compare_and_swapsi (old, mem, cmp, new_rtx));
- return s390_emit_compare (code, gen_rtx_REG (CCZ1mode, CC_REGNUM), const0_rtx);
+ emit_insn (gen_atomic_compare_and_swapsi_internal (old, mem, cmp, new_rtx));
+ return s390_emit_compare (code, gen_rtx_REG (CCZ1mode, CC_REGNUM),
+ const0_rtx);
}
/* Emit a jump instruction to TARGET. If COND is NULL_RTX, emit an
@@ -1654,6 +1656,16 @@ s390_option_override (void)
maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2,
global_options.x_param_values,
global_options_set.x_param_values);
+
+ if (TARGET_TPF)
+ {
+ /* Don't emit DWARF3/4 unless specifically selected. The TPF
+ debuggers do not yet support DWARF 3/4. */
+ if (!global_options_set.x_dwarf_strict)
+ dwarf_strict = 1;
+ if (!global_options_set.x_dwarf_version)
+ dwarf_version = 2;
+ }
}
/* Map for smallest class containing reg regno. */
@@ -3986,9 +3998,16 @@ legitimize_reload_address (rtx ad, enum machine_mode mode ATTRIBUTE_UNUSED,
/* Emit code to move LEN bytes from DST to SRC. */
-void
+bool
s390_expand_movmem (rtx dst, rtx src, rtx len)
{
+ /* When tuning for z10 or higher we rely on the Glibc functions to
+ do the right thing. Only for constant lengths below 64k we will
+ generate inline code. */
+ if (s390_tune >= PROCESSOR_2097_Z10
+ && (GET_CODE (len) != CONST_INT || INTVAL (len) > (1<<16)))
+ return false;
+
if (GET_CODE (len) == CONST_INT && INTVAL (len) >= 0 && INTVAL (len) <= 256)
{
if (INTVAL (len) > 0)
@@ -4080,6 +4099,7 @@ s390_expand_movmem (rtx dst, rtx src, rtx len)
convert_to_mode (Pmode, count, 1)));
emit_label (end_label);
}
+ return true;
}
/* Emit code to set LEN bytes at DST to VAL.
@@ -4218,12 +4238,19 @@ s390_expand_setmem (rtx dst, rtx len, rtx val)
/* Emit code to compare LEN bytes at OP0 with those at OP1,
and return the result in TARGET. */
-void
+bool
s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
{
rtx ccreg = gen_rtx_REG (CCUmode, CC_REGNUM);
rtx tmp;
+ /* When tuning for z10 or higher we rely on the Glibc functions to
+ do the right thing. Only for constant lengths below 64k we will
+ generate inline code. */
+ if (s390_tune >= PROCESSOR_2097_Z10
+ && (GET_CODE (len) != CONST_INT || INTVAL (len) > (1<<16)))
+ return false;
+
/* As the result of CMPINT is inverted compared to what we need,
we have to swap the operands. */
tmp = op0; op0 = op1; op1 = tmp;
@@ -4331,6 +4358,7 @@ s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
emit_insn (gen_cmpint (target, ccreg));
}
+ return true;
}
@@ -4522,106 +4550,145 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
{
int bitsize = INTVAL (op1);
int bitpos = INTVAL (op2);
+ enum machine_mode mode = GET_MODE (dest);
+ enum machine_mode smode;
+ int smode_bsize, mode_bsize;
+ rtx op, clobber;
- /* On z10 we can use the risbg instruction to implement insv. */
- if (TARGET_Z10
- && ((GET_MODE (dest) == DImode && GET_MODE (src) == DImode)
- || (GET_MODE (dest) == SImode && GET_MODE (src) == SImode)))
+ /* Generate INSERT IMMEDIATE (IILL et al). */
+ /* (set (ze (reg)) (const_int)). */
+ if (TARGET_ZARCH
+ && register_operand (dest, word_mode)
+ && (bitpos % 16) == 0
+ && (bitsize % 16) == 0
+ && const_int_operand (src, VOIDmode))
{
- rtx op;
- rtx clobber;
+ HOST_WIDE_INT val = INTVAL (src);
+ int regpos = bitpos + bitsize;
- op = gen_rtx_SET (GET_MODE(src),
- gen_rtx_ZERO_EXTRACT (GET_MODE (dest), dest, op1, op2),
- src);
- clobber = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, CC_REGNUM));
- emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, op, clobber)));
+ while (regpos > bitpos)
+ {
+ enum machine_mode putmode;
+ int putsize;
+ if (TARGET_EXTIMM && (regpos % 32 == 0) && (regpos >= bitpos + 32))
+ putmode = SImode;
+ else
+ putmode = HImode;
+
+ putsize = GET_MODE_BITSIZE (putmode);
+ regpos -= putsize;
+ emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest,
+ GEN_INT (putsize),
+ GEN_INT (regpos)),
+ gen_int_mode (val, putmode));
+ val >>= putsize;
+ }
+ gcc_assert (regpos == bitpos);
return true;
}
- /* We need byte alignment. */
- if (bitsize % BITS_PER_UNIT)
- return false;
+ smode = smallest_mode_for_size (bitsize, MODE_INT);
+ smode_bsize = GET_MODE_BITSIZE (smode);
+ mode_bsize = GET_MODE_BITSIZE (mode);
+ /* Generate STORE CHARACTERS UNDER MASK (STCM et al). */
if (bitpos == 0
- && memory_operand (dest, VOIDmode)
+ && (bitsize % BITS_PER_UNIT) == 0
+ && MEM_P (dest)
&& (register_operand (src, word_mode)
|| const_int_operand (src, VOIDmode)))
{
/* Emit standard pattern if possible. */
- enum machine_mode mode = smallest_mode_for_size (bitsize, MODE_INT);
- if (GET_MODE_BITSIZE (mode) == bitsize)
- emit_move_insn (adjust_address (dest, mode, 0), gen_lowpart (mode, src));
+ if (smode_bsize == bitsize)
+ {
+ emit_move_insn (adjust_address (dest, smode, 0),
+ gen_lowpart (smode, src));
+ return true;
+ }
/* (set (ze (mem)) (const_int)). */
else if (const_int_operand (src, VOIDmode))
{
int size = bitsize / BITS_PER_UNIT;
- rtx src_mem = adjust_address (force_const_mem (word_mode, src), BLKmode,
- GET_MODE_SIZE (word_mode) - size);
+ rtx src_mem = adjust_address (force_const_mem (word_mode, src),
+ BLKmode,
+ UNITS_PER_WORD - size);
dest = adjust_address (dest, BLKmode, 0);
set_mem_size (dest, size);
s390_expand_movmem (dest, src_mem, GEN_INT (size));
+ return true;
}
/* (set (ze (mem)) (reg)). */
else if (register_operand (src, word_mode))
{
- if (bitsize <= GET_MODE_BITSIZE (SImode))
+ if (bitsize <= 32)
emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest, op1,
const0_rtx), src);
else
{
/* Emit st,stcmh sequence. */
- int stcmh_width = bitsize - GET_MODE_BITSIZE (SImode);
+ int stcmh_width = bitsize - 32;
int size = stcmh_width / BITS_PER_UNIT;
emit_move_insn (adjust_address (dest, SImode, size),
gen_lowpart (SImode, src));
set_mem_size (dest, size);
- emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest, GEN_INT
- (stcmh_width), const0_rtx),
- gen_rtx_LSHIFTRT (word_mode, src, GEN_INT
- (GET_MODE_BITSIZE (SImode))));
+ emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest,
+ GEN_INT (stcmh_width),
+ const0_rtx),
+ gen_rtx_LSHIFTRT (word_mode, src, GEN_INT (32)));
}
+ return true;
}
- else
- return false;
+ }
- return true;
+ /* Generate INSERT CHARACTERS UNDER MASK (IC, ICM et al). */
+ if ((bitpos % BITS_PER_UNIT) == 0
+ && (bitsize % BITS_PER_UNIT) == 0
+ && (bitpos & 32) == ((bitpos + bitsize - 1) & 32)
+ && MEM_P (src)
+ && (mode == DImode || mode == SImode)
+ && register_operand (dest, mode))
+ {
+ /* Emit a strict_low_part pattern if possible. */
+ if (smode_bsize == bitsize && bitpos == mode_bsize - smode_bsize)
+ {
+ op = gen_rtx_STRICT_LOW_PART (VOIDmode, gen_lowpart (smode, dest));
+ op = gen_rtx_SET (VOIDmode, op, gen_lowpart (smode, src));
+ clobber = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, CC_REGNUM));
+ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, op, clobber)));
+ return true;
+ }
+
+ /* ??? There are more powerful versions of ICM that are not
+ completely represented in the md file. */
}
- /* (set (ze (reg)) (const_int)). */
- if (TARGET_ZARCH
- && register_operand (dest, word_mode)
- && (bitpos % 16) == 0
- && (bitsize % 16) == 0
- && const_int_operand (src, VOIDmode))
+ /* For z10, generate ROTATE THEN INSERT SELECTED BITS (RISBG et al). */
+ if (TARGET_Z10 && (mode == DImode || mode == SImode))
{
- HOST_WIDE_INT val = INTVAL (src);
- int regpos = bitpos + bitsize;
+ enum machine_mode mode_s = GET_MODE (src);
- while (regpos > bitpos)
+ if (mode_s == VOIDmode)
{
- enum machine_mode putmode;
- int putsize;
+ /* Assume const_int etc already in the proper mode. */
+ src = force_reg (mode, src);
+ }
+ else if (mode_s != mode)
+ {
+ gcc_assert (GET_MODE_BITSIZE (mode_s) >= bitsize);
+ src = force_reg (mode_s, src);
+ src = gen_lowpart (mode, src);
+ }
- if (TARGET_EXTIMM && (regpos % 32 == 0) && (regpos >= bitpos + 32))
- putmode = SImode;
- else
- putmode = HImode;
+ op = gen_rtx_ZERO_EXTRACT (mode, dest, op1, op2),
+ op = gen_rtx_SET (VOIDmode, op, src);
+ clobber = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, CC_REGNUM));
+ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, op, clobber)));
- putsize = GET_MODE_BITSIZE (putmode);
- regpos -= putsize;
- emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest,
- GEN_INT (putsize),
- GEN_INT (regpos)),
- gen_int_mode (val, putmode));
- val >>= putsize;
- }
- gcc_assert (regpos == bitpos);
return true;
}
@@ -4691,92 +4758,137 @@ init_alignment_context (struct alignment_context *ac, rtx mem,
/* As we already have some offset, evaluate the remaining distance. */
ac->shift = expand_simple_binop (SImode, MINUS, ac->shift, byteoffset,
NULL_RTX, 1, OPTAB_DIRECT);
-
}
+
/* Shift is the byte count, but we need the bitcount. */
- ac->shift = expand_simple_binop (SImode, MULT, ac->shift, GEN_INT (BITS_PER_UNIT),
- NULL_RTX, 1, OPTAB_DIRECT);
+ ac->shift = expand_simple_binop (SImode, ASHIFT, ac->shift, GEN_INT (3),
+ NULL_RTX, 1, OPTAB_DIRECT);
+
/* Calculate masks. */
ac->modemask = expand_simple_binop (SImode, ASHIFT,
- GEN_INT (GET_MODE_MASK (mode)), ac->shift,
- NULL_RTX, 1, OPTAB_DIRECT);
- ac->modemaski = expand_simple_unop (SImode, NOT, ac->modemask, NULL_RTX, 1);
+ GEN_INT (GET_MODE_MASK (mode)),
+ ac->shift, NULL_RTX, 1, OPTAB_DIRECT);
+ ac->modemaski = expand_simple_unop (SImode, NOT, ac->modemask,
+ NULL_RTX, 1);
+}
+
+/* A subroutine of s390_expand_cs_hqi. Insert INS into VAL. If possible,
+ use a single insv insn into SEQ2. Otherwise, put prep insns in SEQ1 and
+ perform the merge in SEQ2. */
+
+static rtx
+s390_two_part_insv (struct alignment_context *ac, rtx *seq1, rtx *seq2,
+ enum machine_mode mode, rtx val, rtx ins)
+{
+ rtx tmp;
+
+ if (ac->aligned)
+ {
+ start_sequence ();
+ tmp = copy_to_mode_reg (SImode, val);
+ if (s390_expand_insv (tmp, GEN_INT (GET_MODE_BITSIZE (mode)),
+ const0_rtx, ins))
+ {
+ *seq1 = NULL;
+ *seq2 = get_insns ();
+ end_sequence ();
+ return tmp;
+ }
+ end_sequence ();
+ }
+
+ /* Failed to use insv. Generate a two part shift and mask. */
+ start_sequence ();
+ tmp = s390_expand_mask_and_shift (ins, mode, ac->shift);
+ *seq1 = get_insns ();
+ end_sequence ();
+
+ start_sequence ();
+ tmp = expand_simple_binop (SImode, IOR, tmp, val, NULL_RTX, 1, OPTAB_DIRECT);
+ *seq2 = get_insns ();
+ end_sequence ();
+
+ return tmp;
}
/* Expand an atomic compare and swap operation for HImode and QImode. MEM is
- the memory location, CMP the old value to compare MEM with and NEW_RTX the value
- to set if CMP == MEM.
- CMP is never in memory for compare_and_swap_cc because
- expand_bool_compare_and_swap puts it into a register for later compare. */
+ the memory location, CMP the old value to compare MEM with and NEW_RTX the
+ value to set if CMP == MEM. */
void
-s390_expand_cs_hqi (enum machine_mode mode, rtx target, rtx mem, rtx cmp, rtx new_rtx)
+s390_expand_cs_hqi (enum machine_mode mode, rtx btarget, rtx vtarget, rtx mem,
+ rtx cmp, rtx new_rtx, bool is_weak)
{
struct alignment_context ac;
- rtx cmpv, newv, val, resv, cc;
+ rtx cmpv, newv, val, cc, seq0, seq1, seq2, seq3;
rtx res = gen_reg_rtx (SImode);
- rtx csloop = gen_label_rtx ();
- rtx csend = gen_label_rtx ();
+ rtx csloop = NULL, csend = NULL;
- gcc_assert (register_operand (target, VOIDmode));
gcc_assert (MEM_P (mem));
init_alignment_context (&ac, mem, mode);
- /* Shift the values to the correct bit positions. */
- if (!(ac.aligned && MEM_P (cmp)))
- cmp = s390_expand_mask_and_shift (cmp, mode, ac.shift);
- if (!(ac.aligned && MEM_P (new_rtx)))
- new_rtx = s390_expand_mask_and_shift (new_rtx, mode, ac.shift);
-
/* Load full word. Subsequent loads are performed by CS. */
val = expand_simple_binop (SImode, AND, ac.memsi, ac.modemaski,
NULL_RTX, 1, OPTAB_DIRECT);
+ /* Prepare insertions of cmp and new_rtx into the loaded value. When
+ possible, we try to use insv to make this happen efficiently. If
+ that fails we'll generate code both inside and outside the loop. */
+ cmpv = s390_two_part_insv (&ac, &seq0, &seq2, mode, val, cmp);
+ newv = s390_two_part_insv (&ac, &seq1, &seq3, mode, val, new_rtx);
+
+ if (seq0)
+ emit_insn (seq0);
+ if (seq1)
+ emit_insn (seq1);
+
/* Start CS loop. */
- emit_label (csloop);
+ if (!is_weak)
+ {
+ /* Begin assuming success. */
+ emit_move_insn (btarget, const1_rtx);
+
+ csloop = gen_label_rtx ();
+ csend = gen_label_rtx ();
+ emit_label (csloop);
+ }
+
/* val = "<mem>00..0<mem>"
* cmp = "00..0<cmp>00..0"
* new = "00..0<new>00..0"
*/
- /* Patch cmp and new with val at correct position. */
- if (ac.aligned && MEM_P (cmp))
- {
- cmpv = force_reg (SImode, val);
- store_bit_field (cmpv, GET_MODE_BITSIZE (mode), 0,
- 0, 0, SImode, cmp);
- }
+ emit_insn (seq2);
+ emit_insn (seq3);
+
+ cc = s390_emit_compare_and_swap (EQ, res, ac.memsi, cmpv, newv);
+ if (is_weak)
+ emit_insn (gen_cstorecc4 (btarget, cc, XEXP (cc, 0), XEXP (cc, 1)));
else
- cmpv = force_reg (SImode, expand_simple_binop (SImode, IOR, cmp, val,
- NULL_RTX, 1, OPTAB_DIRECT));
- if (ac.aligned && MEM_P (new_rtx))
{
- newv = force_reg (SImode, val);
- store_bit_field (newv, GET_MODE_BITSIZE (mode), 0,
- 0, 0, SImode, new_rtx);
- }
- else
- newv = force_reg (SImode, expand_simple_binop (SImode, IOR, new_rtx, val,
- NULL_RTX, 1, OPTAB_DIRECT));
+ rtx tmp;
- /* Jump to end if we're done (likely?). */
- s390_emit_jump (csend, s390_emit_compare_and_swap (EQ, res, ac.memsi,
- cmpv, newv));
+ /* Jump to end if we're done (likely?). */
+ s390_emit_jump (csend, cc);
- /* Check for changes outside mode. */
- resv = expand_simple_binop (SImode, AND, res, ac.modemaski,
- NULL_RTX, 1, OPTAB_DIRECT);
- cc = s390_emit_compare (NE, resv, val);
- emit_move_insn (val, resv);
- /* Loop internal if so. */
- s390_emit_jump (csloop, cc);
+ /* Check for changes outside mode, and loop internal if so.
+ Arrange the moves so that the compare is adjacent to the
+ branch so that we can generate CRJ. */
+ tmp = copy_to_reg (val);
+ force_expand_binop (SImode, and_optab, res, ac.modemaski, val,
+ 1, OPTAB_DIRECT);
+ cc = s390_emit_compare (NE, val, tmp);
+ s390_emit_jump (csloop, cc);
- emit_label (csend);
+ /* Failed. */
+ emit_move_insn (btarget, const0_rtx);
+ emit_label (csend);
+ }
/* Return the correct part of the bitfield. */
- convert_move (target, expand_simple_binop (SImode, LSHIFTRT, res, ac.shift,
- NULL_RTX, 1, OPTAB_DIRECT), 1);
+ convert_move (vtarget, expand_simple_binop (SImode, LSHIFTRT, res, ac.shift,
+ NULL_RTX, 1, OPTAB_DIRECT), 1);
}
/* Expand an atomic operation CODE of mode MODE. MEM is the memory location
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index a467d4a10ec..b3d096c9ef7 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -84,6 +84,7 @@
; Atomic Support
UNSPEC_MB
+ UNSPEC_MOVA
; TLS relocation specifiers
UNSPEC_TLSGD
@@ -349,21 +350,19 @@
(define_mode_iterator DD_DF [DF DD])
(define_mode_iterator TD_TF [TF TD])
-;; This mode iterator allows 31-bit and 64-bit TDSI patterns to be generated
-;; from the same template.
-(define_mode_iterator TDSI [(TI "TARGET_64BIT") DI SI])
-
;; These mode iterators allow 31-bit and 64-bit GPR patterns to be generated
;; from the same template.
(define_mode_iterator GPR [(DI "TARGET_ZARCH") SI])
+(define_mode_iterator DGPR [(TI "TARGET_ZARCH") DI SI])
(define_mode_iterator DSI [DI SI])
+(define_mode_iterator TDI [TI DI])
;; These mode iterators allow :P to be used for patterns that operate on
;; pointer-sized quantities. Exactly one of the two alternatives will match.
(define_mode_iterator P [(DI "TARGET_64BIT") (SI "!TARGET_64BIT")])
-;; These macros refer to the actual word_mode of the configuration. This is equal
-;; to Pmode except on 31-bit machines in zarch mode.
+;; These macros refer to the actual word_mode of the configuration.
+;; This is equal to Pmode except on 31-bit machines in zarch mode.
(define_mode_iterator DW [(TI "TARGET_ZARCH") (DI "!TARGET_ZARCH")])
(define_mode_iterator W [(DI "TARGET_ZARCH") (SI "!TARGET_ZARCH")])
@@ -379,6 +378,7 @@
;; same template.
(define_mode_iterator INT [(DI "TARGET_ZARCH") SI HI QI])
(define_mode_iterator INTALL [TI DI SI HI QI])
+(define_mode_iterator DINT [(TI "TARGET_ZARCH") DI SI HI QI])
;; This iterator allows some 'ashift' and 'lshiftrt' pattern to be defined from
;; the same template.
@@ -487,6 +487,9 @@
;; and "cds" in DImode.
(define_mode_attr tg [(TI "g") (DI "")])
+;; In TDI templates, a string like "c<d>sg".
+(define_mode_attr td [(TI "d") (DI "")])
+
;; In GPR templates, a string like "c<gf>dbr" will expand to "cgdbr" in DImode
;; and "cfdbr" in SImode.
(define_mode_attr gf [(DI "g") (SI "f")])
@@ -2640,7 +2643,12 @@
(use (match_operand:GPR 2 "general_operand" "")) ; count
(match_operand 3 "" "")]
""
- "s390_expand_movmem (operands[0], operands[1], operands[2]); DONE;")
+{
+ if (s390_expand_movmem (operands[0], operands[1], operands[2]))
+ DONE;
+ else
+ FAIL;
+})
; Move a block that is up to 256 bytes in length.
; The block length is taken as (operands[2] % 256) + 1.
@@ -3017,8 +3025,13 @@
(use (match_operand:SI 3 "general_operand" ""))
(use (match_operand:SI 4 "" ""))]
""
- "s390_expand_cmpmem (operands[0], operands[1],
- operands[2], operands[3]); DONE;")
+{
+ if (s390_expand_cmpmem (operands[0], operands[1],
+ operands[2], operands[3]))
+ DONE;
+ else
+ FAIL;
+})
; Compare a block that is up to 256 bytes in length.
; The block length is taken as (operands[2] % 256) + 1.
@@ -8729,164 +8742,337 @@
;;
;
-; memory barrier pattern.
+; memory barrier patterns.
;
-(define_expand "memory_barrier"
- [(set (match_dup 0)
- (unspec:BLK [(match_dup 0)] UNSPEC_MB))]
+(define_expand "mem_signal_fence"
+ [(match_operand:SI 0 "const_int_operand")] ;; model
""
{
- operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
- MEM_VOLATILE_P (operands[0]) = 1;
+ /* The s390 memory model is strong enough not to require any
+ barrier in order to synchronize a thread with itself. */
+ DONE;
+})
+
+(define_expand "mem_thread_fence"
+ [(match_operand:SI 0 "const_int_operand")] ;; model
+ ""
+{
+ /* Unless this is a SEQ_CST fence, the s390 memory model is strong
+ enough not to require barriers of any kind. */
+ if (INTVAL (operands[0]) == MEMMODEL_SEQ_CST)
+ {
+ rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
+ MEM_VOLATILE_P (mem) = 1;
+ emit_insn (gen_mem_thread_fence_1 (mem));
+ }
+ DONE;
})
-(define_insn "*memory_barrier"
+; Although bcr is superscalar on Z10, this variant will never
+; become part of an execution group.
+(define_insn "mem_thread_fence_1"
[(set (match_operand:BLK 0 "" "")
(unspec:BLK [(match_dup 0)] UNSPEC_MB))]
""
"bcr\t15,0"
[(set_attr "op_type" "RR")])
-; Although bcr is superscalar on Z10, this variant will never become part of
-; an execution group.
+;
+; atomic load/store operations
+;
+
+; Atomic loads need not examine the memory model at all.
+(define_expand "atomic_load<mode>"
+ [(match_operand:DINT 0 "register_operand") ;; output
+ (match_operand:DINT 1 "memory_operand") ;; memory
+ (match_operand:SI 2 "const_int_operand")] ;; model
+ ""
+{
+ if (<MODE>mode == TImode)
+ emit_insn (gen_atomic_loadti_1 (operands[0], operands[1]));
+ else if (<MODE>mode == DImode && !TARGET_ZARCH)
+ emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1]));
+ else
+ emit_move_insn (operands[0], operands[1]);
+ DONE;
+})
+
+; Different from movdi_31 in that we want no splitters.
+(define_insn "atomic_loaddi_1"
+ [(set (match_operand:DI 0 "register_operand" "=d,d,!*f,!*f")
+ (unspec:DI [(match_operand:DI 1 "memory_operand" "Q,S,R,T")]
+ UNSPEC_MOVA))]
+ "!TARGET_ZARCH"
+ "@
+ lm\t%0,%M0,%S1
+ lmy\t%0,%M0,%S1
+ ld\t%0,%1
+ ldy\t%0,%1"
+ [(set_attr "op_type" "RS,RSY,RS,RSY")
+ (set_attr "type" "lm,lm,floaddf,floaddf")])
+
+(define_insn "atomic_loadti_1"
+ [(set (match_operand:TI 0 "register_operand" "=r")
+ (unspec:TI [(match_operand:TI 1 "memory_operand" "RT")]
+ UNSPEC_MOVA))]
+ "TARGET_ZARCH"
+ "lpq\t%0,%1"
+ [(set_attr "op_type" "RXY")
+ (set_attr "type" "other")])
+
+; Atomic stores must(?) enforce sequential consistency.
+(define_expand "atomic_store<mode>"
+ [(match_operand:DINT 0 "memory_operand") ;; memory
+ (match_operand:DINT 1 "register_operand") ;; input
+ (match_operand:SI 2 "const_int_operand")] ;; model
+ ""
+{
+ enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+
+ if (<MODE>mode == TImode)
+ emit_insn (gen_atomic_storeti_1 (operands[0], operands[1]));
+ else if (<MODE>mode == DImode && !TARGET_ZARCH)
+ emit_insn (gen_atomic_storedi_1 (operands[0], operands[1]));
+ else
+ emit_move_insn (operands[0], operands[1]);
+ if (model == MEMMODEL_SEQ_CST)
+ emit_insn (gen_mem_thread_fence (operands[2]));
+ DONE;
+})
+
+; Different from movdi_31 in that we want no splitters.
+(define_insn "atomic_storedi_1"
+ [(set (match_operand:DI 0 "memory_operand" "=Q,S,R,T")
+ (unspec:DI [(match_operand:DI 1 "register_operand" "d,d,!*f,!*f")]
+ UNSPEC_MOVA))]
+ "!TARGET_ZARCH"
+ "@
+ stm\t%1,%N1,%S0
+ stmy\t%1,%N1,%S0
+ std %1,%0
+ stdy %1,%0"
+ [(set_attr "op_type" "RS,RSY,RS,RSY")
+ (set_attr "type" "stm,stm,fstoredf,fstoredf")])
+
+(define_insn "atomic_storeti_1"
+ [(set (match_operand:TI 0 "memory_operand" "=RT")
+ (unspec:TI [(match_operand:TI 1 "register_operand" "r")]
+ UNSPEC_MOVA))]
+ "TARGET_ZARCH"
+ "stpq\t%1,%0"
+ [(set_attr "op_type" "RXY")
+ (set_attr "type" "other")])
;
; compare and swap patterns.
;
-(define_expand "sync_compare_and_swap<mode>"
- [(parallel
- [(set (match_operand:TDSI 0 "register_operand" "")
- (match_operand:TDSI 1 "memory_operand" ""))
- (set (match_dup 1)
- (unspec_volatile:TDSI
- [(match_dup 1)
- (match_operand:TDSI 2 "register_operand" "")
- (match_operand:TDSI 3 "register_operand" "")]
- UNSPECV_CAS))
- (set (reg:CCZ1 CC_REGNUM)
- (compare:CCZ1 (match_dup 1) (match_dup 2)))])]
- "")
+(define_expand "atomic_compare_and_swap<mode>"
+ [(match_operand:SI 0 "register_operand") ;; bool success output
+ (match_operand:DGPR 1 "nonimmediate_operand");; oldval output
+ (match_operand:DGPR 2 "memory_operand") ;; memory
+ (match_operand:DGPR 3 "register_operand") ;; expected intput
+ (match_operand:DGPR 4 "register_operand") ;; newval intput
+ (match_operand:SI 5 "const_int_operand") ;; is_weak
+ (match_operand:SI 6 "const_int_operand") ;; success model
+ (match_operand:SI 7 "const_int_operand")] ;; failure model
+ ""
+{
+ rtx cc, cmp, output = operands[1];
-(define_expand "sync_compare_and_swap<mode>"
- [(parallel
- [(set (match_operand:HQI 0 "register_operand" "")
- (match_operand:HQI 1 "memory_operand" ""))
- (set (match_dup 1)
- (unspec_volatile:HQI
- [(match_dup 1)
- (match_operand:HQI 2 "general_operand" "")
- (match_operand:HQI 3 "general_operand" "")]
- UNSPECV_CAS))
- (clobber (reg:CC CC_REGNUM))])]
+ if (!register_operand (output, <MODE>mode))
+ output = gen_reg_rtx (<MODE>mode);
+
+ emit_insn (gen_atomic_compare_and_swap<mode>_internal
+ (output, operands[2], operands[3], operands[4]));
+
+ /* We deliberately accept non-register operands in the predicate
+ to ensure the write back to the output operand happens *before*
+ the store-flags code below. This makes it easier for combine
+ to merge the store-flags code with a potential test-and-branch
+ pattern following (immediately!) afterwards. */
+ if (output != operands[1])
+ emit_move_insn (operands[1], output);
+
+ cc = gen_rtx_REG (CCZ1mode, CC_REGNUM);
+ cmp = gen_rtx_EQ (SImode, cc, const0_rtx);
+ emit_insn (gen_cstorecc4 (operands[0], cmp, cc, const0_rtx));
+ DONE;
+})
+
+(define_expand "atomic_compare_and_swap<mode>"
+ [(match_operand:SI 0 "register_operand") ;; bool success output
+ (match_operand:HQI 1 "nonimmediate_operand") ;; oldval output
+ (match_operand:HQI 2 "memory_operand") ;; memory
+ (match_operand:HQI 3 "general_operand") ;; expected intput
+ (match_operand:HQI 4 "general_operand") ;; newval intput
+ (match_operand:SI 5 "const_int_operand") ;; is_weak
+ (match_operand:SI 6 "const_int_operand") ;; success model
+ (match_operand:SI 7 "const_int_operand")] ;; failure model
""
- "s390_expand_cs_hqi (<MODE>mode, operands[0], operands[1],
- operands[2], operands[3]); DONE;")
+{
+ s390_expand_cs_hqi (<MODE>mode, operands[0], operands[1], operands[2],
+ operands[3], operands[4], INTVAL (operands[5]));
+ DONE;
+})
-; cds, cdsg
-(define_insn "*sync_compare_and_swap<mode>"
- [(set (match_operand:DW 0 "register_operand" "=r")
- (match_operand:DW 1 "memory_operand" "+Q"))
+(define_expand "atomic_compare_and_swap<mode>_internal"
+ [(parallel
+ [(set (match_operand:DGPR 0 "register_operand")
+ (match_operand:DGPR 1 "memory_operand"))
+ (set (match_dup 1)
+ (unspec_volatile:DGPR
+ [(match_dup 1)
+ (match_operand:DGPR 2 "register_operand")
+ (match_operand:DGPR 3 "register_operand")]
+ UNSPECV_CAS))
+ (set (reg:CCZ1 CC_REGNUM)
+ (compare:CCZ1 (match_dup 1) (match_dup 2)))])]
+ "")
+
+; cdsg, csg
+(define_insn "*atomic_compare_and_swap<mode>_1"
+ [(set (match_operand:TDI 0 "register_operand" "=r")
+ (match_operand:TDI 1 "memory_operand" "+QS"))
(set (match_dup 1)
- (unspec_volatile:DW
+ (unspec_volatile:TDI
[(match_dup 1)
- (match_operand:DW 2 "register_operand" "0")
- (match_operand:DW 3 "register_operand" "r")]
+ (match_operand:TDI 2 "register_operand" "0")
+ (match_operand:TDI 3 "register_operand" "r")]
UNSPECV_CAS))
(set (reg:CCZ1 CC_REGNUM)
(compare:CCZ1 (match_dup 1) (match_dup 2)))]
- ""
- "cds<tg>\t%0,%3,%S1"
- [(set_attr "op_type" "RS<TE>")
+ "TARGET_ZARCH"
+ "c<td>sg\t%0,%3,%S1"
+ [(set_attr "op_type" "RSY")
(set_attr "type" "sem")])
-; cs, csg
-(define_insn "*sync_compare_and_swap<mode>"
- [(set (match_operand:GPR 0 "register_operand" "=r")
- (match_operand:GPR 1 "memory_operand" "+Q"))
+; cds, cdsy
+(define_insn "*atomic_compare_and_swapdi_2"
+ [(set (match_operand:DI 0 "register_operand" "=r,r")
+ (match_operand:DI 1 "memory_operand" "+Q,S"))
(set (match_dup 1)
- (unspec_volatile:GPR
+ (unspec_volatile:DI
[(match_dup 1)
- (match_operand:GPR 2 "register_operand" "0")
- (match_operand:GPR 3 "register_operand" "r")]
+ (match_operand:DI 2 "register_operand" "0,0")
+ (match_operand:DI 3 "register_operand" "r,r")]
+ UNSPECV_CAS))
+ (set (reg:CCZ1 CC_REGNUM)
+ (compare:CCZ1 (match_dup 1) (match_dup 2)))]
+ "!TARGET_ZARCH"
+ "@
+ cds\t%0,%3,%S1
+ cdsy\t%0,%3,%S1"
+ [(set_attr "op_type" "RS,RSY")
+ (set_attr "type" "sem")])
+
+; cs, csy
+(define_insn "*atomic_compare_and_swapsi_3"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (match_operand:SI 1 "memory_operand" "+Q,S"))
+ (set (match_dup 1)
+ (unspec_volatile:SI
+ [(match_dup 1)
+ (match_operand:SI 2 "register_operand" "0,0")
+ (match_operand:SI 3 "register_operand" "r,r")]
UNSPECV_CAS))
(set (reg:CCZ1 CC_REGNUM)
(compare:CCZ1 (match_dup 1) (match_dup 2)))]
""
- "cs<g>\t%0,%3,%S1"
- [(set_attr "op_type" "RS<E>")
+ "@
+ cs\t%0,%3,%S1
+ csy\t%0,%3,%S1"
+ [(set_attr "op_type" "RS,RSY")
(set_attr "type" "sem")])
-
;
; Other atomic instruction patterns.
;
-(define_expand "sync_lock_test_and_set<mode>"
- [(match_operand:HQI 0 "register_operand")
- (match_operand:HQI 1 "memory_operand")
- (match_operand:HQI 2 "general_operand")]
- ""
- "s390_expand_atomic (<MODE>mode, SET, operands[0], operands[1],
- operands[2], false); DONE;")
-
; z196 load and add, xor, or and and instructions
-; lan, lang, lao, laog, lax, laxg, laa, laag
-(define_insn "sync_<atomic><mode>"
- [(parallel
- [(set (match_operand:GPR 0 "memory_operand" "+QS")
- (unspec_volatile:GPR
- [(ATOMIC_Z196:GPR (match_dup 0)
- (match_operand:GPR 1 "general_operand" "d"))]
- UNSPECV_ATOMIC_OP))
- (clobber (match_scratch:GPR 2 "=d"))
- (clobber (reg:CC CC_REGNUM))])]
+(define_expand "atomic_fetch_<atomic><mode>"
+ [(match_operand:GPR 0 "register_operand") ;; val out
+ (ATOMIC_Z196:GPR
+ (match_operand:GPR 1 "memory_operand") ;; memory
+ (match_operand:GPR 2 "register_operand")) ;; val in
+ (match_operand:SI 3 "const_int_operand")] ;; model
"TARGET_Z196"
- "la<noxa><g>\t%2,%1,%0")
+{
+ emit_insn (gen_atomic_fetch_<atomic><mode>_iaf
+ (operands[0], operands[1], operands[2]));
+ DONE;
+})
; lan, lang, lao, laog, lax, laxg, laa, laag
-(define_insn "sync_old_<atomic><mode>"
- [(parallel
- [(set (match_operand:GPR 0 "register_operand" "=d")
- (match_operand:GPR 1 "memory_operand" "+QS"))
- (set (match_dup 1)
- (unspec_volatile:GPR
- [(ATOMIC_Z196:GPR (match_dup 1)
- (match_operand:GPR 2 "general_operand" "d"))]
- UNSPECV_ATOMIC_OP))
- (clobber (reg:CC CC_REGNUM))])]
+(define_insn "atomic_fetch_<atomic><mode>_iaf"
+ [(set (match_operand:GPR 0 "register_operand" "=d")
+ (match_operand:GPR 1 "memory_operand" "+QS"))
+ (set (match_dup 1)
+ (unspec_volatile:GPR
+ [(ATOMIC_Z196:GPR (match_dup 1)
+ (match_operand:GPR 2 "general_operand" "d"))]
+ UNSPECV_ATOMIC_OP))
+ (clobber (reg:CC CC_REGNUM))]
"TARGET_Z196"
- "la<noxa><g>\t%0,%2,%1")
+ "la<noxa><g>\t%0,%2,%1"
+ [(set_attr "op_type" "RSY")
+ (set_attr "type" "sem")])
+;; For SImode and larger, the optabs.c code will do just fine in
+;; expanding a compare-and-swap loop. For QI/HImode, we can do
+;; better by expanding our own loop.
-(define_expand "sync_<atomic><mode>"
- [(set (match_operand:HQI 0 "memory_operand")
- (ATOMIC:HQI (match_dup 0)
- (match_operand:HQI 1 "general_operand")))]
+(define_expand "atomic_<atomic><mode>"
+ [(ATOMIC:HQI
+ (match_operand:HQI 0 "memory_operand") ;; memory
+ (match_operand:HQI 1 "general_operand")) ;; val in
+ (match_operand:SI 2 "const_int_operand")] ;; model
""
- "s390_expand_atomic (<MODE>mode, <CODE>, NULL_RTX, operands[0],
- operands[1], false); DONE;")
+{
+ s390_expand_atomic (<MODE>mode, <CODE>, NULL_RTX, operands[0],
+ operands[1], false);
+ DONE;
+})
-(define_expand "sync_old_<atomic><mode>"
- [(set (match_operand:HQI 0 "register_operand")
- (match_operand:HQI 1 "memory_operand"))
- (set (match_dup 1)
- (ATOMIC:HQI (match_dup 1)
- (match_operand:HQI 2 "general_operand")))]
+(define_expand "atomic_fetch_<atomic><mode>"
+ [(match_operand:HQI 0 "register_operand") ;; val out
+ (ATOMIC:HQI
+ (match_operand:HQI 1 "memory_operand") ;; memory
+ (match_operand:HQI 2 "general_operand")) ;; val in
+ (match_operand:SI 3 "const_int_operand")] ;; model
+ ""
+{
+ s390_expand_atomic (<MODE>mode, <CODE>, operands[0], operands[1],
+ operands[2], false);
+ DONE;
+})
+
+(define_expand "atomic_<atomic>_fetch<mode>"
+ [(match_operand:HQI 0 "register_operand") ;; val out
+ (ATOMIC:HQI
+ (match_operand:HQI 1 "memory_operand") ;; memory
+ (match_operand:HQI 2 "general_operand")) ;; val in
+ (match_operand:SI 3 "const_int_operand")] ;; model
""
- "s390_expand_atomic (<MODE>mode, <CODE>, operands[0], operands[1],
- operands[2], false); DONE;")
-
-(define_expand "sync_new_<atomic><mode>"
- [(set (match_operand:HQI 0 "register_operand")
- (ATOMIC:HQI (match_operand:HQI 1 "memory_operand")
- (match_operand:HQI 2 "general_operand")))
- (set (match_dup 1) (ATOMIC:HQI (match_dup 1) (match_dup 2)))]
+{
+ s390_expand_atomic (<MODE>mode, <CODE>, operands[0], operands[1],
+ operands[2], true);
+ DONE;
+})
+
+(define_expand "atomic_exchange<mode>"
+ [(match_operand:HQI 0 "register_operand") ;; val out
+ (match_operand:HQI 1 "memory_operand") ;; memory
+ (match_operand:HQI 2 "general_operand") ;; val in
+ (match_operand:SI 3 "const_int_operand")] ;; model
""
- "s390_expand_atomic (<MODE>mode, <CODE>, operands[0], operands[1],
- operands[2], true); DONE;")
+{
+ s390_expand_atomic (<MODE>mode, SET, operands[0], operands[1],
+ operands[2], false);
+ DONE;
+})
;;
;;- Miscellaneous instructions.
diff --git a/gcc/config/sh/constraints.md b/gcc/config/sh/constraints.md
index 6c9bc5ecc95..47350dff22b 100644
--- a/gcc/config/sh/constraints.md
+++ b/gcc/config/sh/constraints.md
@@ -31,6 +31,8 @@
;; IJKLMNOP: CONT_INT constants
;; Ixx: signed xx bit
;; J16: 0xffffffff00000000 | 0x00000000ffffffff
+;; Jmb: 0x000000FF
+;; Jmw: 0x0000FFFF
;; Kxx: unsigned xx bit
;; M: 1
;; N: 0
@@ -47,6 +49,7 @@
;; Sbw: QImode address with 12 bit displacement
;; Snd: address without displacement
;; Sdd: address with displacement
+;; Sra: simple register address
;; W: vector
;; Z: zero in any mode
;;
@@ -135,6 +138,16 @@
(and (match_code "const_int")
(match_test "CONST_OK_FOR_J16 (ival)")))
+(define_constraint "Jmb"
+ "Low byte mask constant 0x000000FF"
+ (and (match_code "const_int")
+ (match_test "ival == 0xFF")))
+
+(define_constraint "Jmw"
+ "Low word mask constant 0x0000FFFF"
+ (and (match_code "const_int")
+ (match_test "ival == 0xFFFF")))
+
(define_constraint "K03"
"An unsigned 3-bit constant, as used in SH2A bclr, bset, etc."
(and (match_code "const_int")
@@ -295,3 +308,8 @@
(match_test "GET_MODE (op) == QImode")
(match_test "satisfies_constraint_K12 (XEXP (XEXP (op, 0), 1))")))
+(define_memory_constraint "Sra"
+ "A memory reference that uses a simple register addressing."
+ (and (match_test "MEM_P (op)")
+ (match_test "REG_P (XEXP (op, 0))")))
+
diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md
index f75675ec096..92a7b689c84 100644
--- a/gcc/config/sh/predicates.md
+++ b/gcc/config/sh/predicates.md
@@ -368,6 +368,34 @@
: nonimmediate_operand) (op, mode);
})
+;; Returns 1 if OP is a simple register address.
+(define_predicate "simple_mem_operand"
+ (and (match_code "mem")
+ (match_test "arith_reg_operand (XEXP (op, 0), SImode)")))
+
+;; Returns 1 if OP is a valid displacement address.
+(define_predicate "displacement_mem_operand"
+ (and (match_code "mem")
+ (match_test "GET_CODE (XEXP (op, 0)) == PLUS")
+ (match_test "arith_reg_operand (XEXP (XEXP (op, 0), 0), SImode)")
+ (match_test "sh_legitimate_index_p (GET_MODE (op),
+ XEXP (XEXP (op, 0), 1),
+ TARGET_SH2A, true)")))
+
+;; Returns 1 if the operand can be used in an SH2A movu.{b|w} insn.
+(define_predicate "zero_extend_movu_operand"
+ (and (match_operand 0 "displacement_mem_operand")
+ (match_test "GET_MODE (op) == QImode || GET_MODE (op) == HImode")))
+
+;; Returns 1 if the operand can be used in a zero_extend.
+(define_predicate "zero_extend_operand"
+ (ior (and (match_test "TARGET_SHMEDIA")
+ (match_operand 0 "general_extend_operand"))
+ (and (match_test "! TARGET_SHMEDIA")
+ (match_operand 0 "arith_reg_operand"))
+ (and (match_test "TARGET_SH2A")
+ (match_operand 0 "zero_extend_movu_operand"))))
+
;; Returns 1 if OP can be source of a simple move operation. Same as
;; general_operand, but a LABEL_REF is valid, PRE_DEC is invalid as
;; are subregs of system registers.
@@ -375,6 +403,9 @@
(define_predicate "general_movsrc_operand"
(match_code "subreg,reg,const_int,const_double,mem,symbol_ref,label_ref,const,const_vector")
{
+ if (t_reg_operand (op, mode))
+ return 0;
+
if (MEM_P (op))
{
rtx inside = XEXP (op, 0);
@@ -418,28 +449,12 @@
return general_operand (op, mode);
})
-;; Same as movsrc_operand, but rejects displacement addressing.
+;; Returns 1 if OP is a MEM that does not use displacement addressing.
(define_predicate "movsrc_no_disp_mem_operand"
- (match_code "subreg,reg,const_int,const_double,mem,symbol_ref,label_ref,const,const_vector")
+ (match_code "mem")
{
- if (!general_movsrc_operand (op, mode))
- return 0;
-
- if ((mode == QImode || mode == HImode)
- && mode == GET_MODE (op)
- && (MEM_P (op)
- || (GET_CODE (op) == SUBREG && MEM_P (SUBREG_REG (op)))))
- {
- rtx x = XEXP ((MEM_P (op) ? op : SUBREG_REG (op)), 0);
-
- if (GET_CODE (x) == PLUS
- && REG_P (XEXP (x, 0))
- && CONST_INT_P (XEXP (x, 1)))
- return 0;
- }
-
- return 1;
+ return general_movsrc_operand (op, mode) && satisfies_constraint_Snd (op);
})
;; Returns 1 if OP can be a destination of a move. Same as
@@ -448,6 +463,9 @@
(define_predicate "general_movdst_operand"
(match_code "subreg,reg,mem")
{
+ if (t_reg_operand (op, mode))
+ return 0;
+
/* Only pre dec allowed. */
if (MEM_P (op) && GET_CODE (XEXP (op, 0)) == POST_INC)
return 0;
@@ -510,6 +528,34 @@
return 0;
})
+;; Returns 1 if OP is a MEM that can be used in "index_disp" combiner
+;; patterns.
+(define_predicate "mem_index_disp_operand"
+ (match_code "mem")
+{
+ rtx plus0_rtx, plus1_rtx, mult_rtx;
+
+ plus0_rtx = XEXP (op, 0);
+ if (GET_CODE (plus0_rtx) != PLUS)
+ return 0;
+
+ plus1_rtx = XEXP (plus0_rtx, 0);
+ if (GET_CODE (plus1_rtx) != PLUS)
+ return 0;
+ if (! arith_reg_operand (XEXP (plus1_rtx, 1), GET_MODE (XEXP (plus1_rtx, 1))))
+ return 0;
+
+ mult_rtx = XEXP (plus1_rtx, 0);
+ if (GET_CODE (mult_rtx) != MULT)
+ return 0;
+ if (! arith_reg_operand (XEXP (mult_rtx, 0), GET_MODE (XEXP (mult_rtx, 0)))
+ || ! CONST_INT_P (XEXP (mult_rtx, 1)))
+ return 0;
+
+ return exact_log2 (INTVAL (XEXP (mult_rtx, 1))) > 0
+ && sh_legitimate_index_p (mode, XEXP (plus0_rtx, 1), TARGET_SH2A, true);
+})
+
;; TODO: Add a comment here.
(define_predicate "greater_comparison_operator"
@@ -574,6 +620,21 @@
return 0;
})
+;; Like logical_operand but allows additional constant values which can be
+;; done with zero extensions. Used for the second operand of and insns.
+(define_predicate "logical_and_operand"
+ (match_code "subreg,reg,const_int")
+{
+ if (logical_operand (op, mode))
+ return 1;
+
+ if (! TARGET_SHMEDIA
+ && (satisfies_constraint_Jmb (op) || satisfies_constraint_Jmw (op)))
+ return 1;
+
+ return 0;
+})
+
;; TODO: Add a comment here.
(define_predicate "logical_operator"
@@ -727,6 +788,13 @@
(define_predicate "shift_count_operand"
(match_code "const_int,const_double,const,symbol_ref,label_ref,subreg,reg,zero_extend,sign_extend")
{
+ /* Allow T_REG as shift count for dynamic shifts, although it is not
+ really possible. It will then be copied to a general purpose reg. */
+ if (! TARGET_SHMEDIA)
+ return const_int_operand (op, mode)
+ || (TARGET_DYNSHIFT && (arith_reg_operand (op, mode)
+ || t_reg_operand (op, mode)));
+
return (CONSTANT_P (op)
? (CONST_INT_P (op)
? (unsigned) INTVAL (op) < GET_MODE_BITSIZE (mode)
@@ -757,6 +825,29 @@
return arith_reg_operand (op, mode);
})
+;; Predicates for matching operands that are constant shift
+;; amounts 1, 2, 8, 16.
+(define_predicate "p27_shift_count_operand"
+ (and (match_code "const_int")
+ (match_test "satisfies_constraint_P27 (op)")))
+
+(define_predicate "not_p27_shift_count_operand"
+ (and (match_code "const_int")
+ (match_test "! satisfies_constraint_P27 (op)")))
+
+;; For right shifts the constant 1 is a special case because the shlr insn
+;; clobbers the T_REG and is handled by the T_REG clobbering version of the
+;; insn, which is also used for non-P27 shift sequences.
+(define_predicate "p27_rshift_count_operand"
+ (and (match_code "const_int")
+ (match_test "satisfies_constraint_P27 (op)")
+ (match_test "! satisfies_constraint_M (op)")))
+
+(define_predicate "not_p27_rshift_count_operand"
+ (and (match_code "const_int")
+ (ior (match_test "! satisfies_constraint_P27 (op)")
+ (match_test "satisfies_constraint_M (op)"))))
+
;; TODO: Add a comment here.
(define_predicate "shift_operator"
@@ -898,3 +989,42 @@
(match_test "mode != HImode")
(match_test "TARGET_SH4A_ARCH"))))
+;; A predicate describing the T bit register in any form.
+(define_predicate "t_reg_operand"
+ (match_code "reg,subreg,sign_extend,zero_extend")
+{
+ switch (GET_CODE (op))
+ {
+ case REG:
+ return REGNO (op) == T_REG;
+
+ case SUBREG:
+ return REGNO (SUBREG_REG (op)) == T_REG;
+
+ case ZERO_EXTEND:
+ case SIGN_EXTEND:
+ return GET_CODE (XEXP (op, 0)) == SUBREG
+ && REGNO (SUBREG_REG (XEXP (op, 0))) == T_REG;
+
+ default:
+ return 0;
+ }
+})
+
+;; A predicate describing a negated T bit register.
+(define_predicate "negt_reg_operand"
+ (match_code "subreg,xor")
+{
+ switch (GET_CODE (op))
+ {
+ case XOR:
+ return t_reg_operand (XEXP (op, 0), GET_MODE (XEXP (op, 0)))
+ && satisfies_constraint_M (XEXP (op, 1));
+
+ case SUBREG:
+ return negt_reg_operand (XEXP (op, 0), GET_MODE (XEXP (op, 0)));
+
+ default:
+ return 0;
+ }
+})
diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h
index cb9ad0f203f..8cc5cc6b488 100644
--- a/gcc/config/sh/sh-protos.h
+++ b/gcc/config/sh/sh-protos.h
@@ -73,9 +73,8 @@ extern void sh_emit_scc_to_t (enum rtx_code, rtx, rtx);
extern rtx sh_emit_cheap_store_flag (enum machine_mode, enum rtx_code, rtx, rtx);
extern void sh_emit_compare_and_branch (rtx *, enum machine_mode);
extern void sh_emit_compare_and_set (rtx *, enum machine_mode);
-extern int shift_insns_rtx (rtx);
-extern void gen_ashift (int, int, rtx);
-extern void gen_ashift_hi (int, int, rtx);
+extern bool sh_ashlsi_clobbers_t_reg_p (rtx);
+extern bool sh_lshrsi_clobbers_t_reg_p (rtx);
extern void gen_shifty_op (int, rtx *);
extern void gen_shifty_hi_op (int, rtx *);
extern bool expand_ashiftrt (rtx *);
@@ -106,9 +105,11 @@ extern void sh_expand_binop_v2sf (enum rtx_code, rtx, rtx, rtx);
extern bool sh_expand_t_scc (rtx *);
extern rtx sh_gen_truncate (enum machine_mode, rtx, int);
extern bool sh_vector_mode_supported_p (enum machine_mode);
+extern bool sh_cfun_trap_exit_p (void);
#endif /* RTX_CODE */
extern const char *output_jump_label_table (void);
+extern rtx get_t_reg_rtx (void);
extern rtx get_fpscr_rtx (void);
extern int sh_media_register_for_return (void);
extern void sh_expand_prologue (void);
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 7e0c2c17515..3851ec6d50f 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -63,6 +63,9 @@ int code_for_indirect_jump_scratch = CODE_FOR_indirect_jump_scratch;
#define LSW (TARGET_LITTLE_ENDIAN ? 0 : 1)
/* These are some macros to abstract register modes. */
+#define CONST_OK_FOR_I10(VALUE) (((HOST_WIDE_INT)(VALUE)) >= -512 \
+ && ((HOST_WIDE_INT)(VALUE)) <= 511)
+
#define CONST_OK_FOR_ADD(size) \
(TARGET_SHMEDIA ? CONST_OK_FOR_I10 (size) : CONST_OK_FOR_I08 (size))
#define GEN_MOV (*(TARGET_SHMEDIA64 ? gen_movdi : gen_movsi))
@@ -303,6 +306,7 @@ static int mov_insn_size (enum machine_mode, bool);
static int max_mov_insn_displacement (enum machine_mode, bool);
static int mov_insn_alignment_mask (enum machine_mode, bool);
static HOST_WIDE_INT disp_addr_displacement (rtx);
+static bool sequence_insn_p (rtx);
static void sh_init_sync_libfuncs (void) ATTRIBUTE_UNUSED;
@@ -595,11 +599,6 @@ sh_option_override (void)
SUBTARGET_OVERRIDE_OPTIONS;
if (optimize > 1 && !optimize_size)
target_flags |= MASK_SAVE_ALL_TARGET_REGS;
- if (flag_finite_math_only == 2)
- flag_finite_math_only
- = !flag_signaling_nans && TARGET_SH2E && ! TARGET_IEEE;
- if (TARGET_SH2E && !flag_finite_math_only)
- target_flags |= MASK_IEEE;
sh_cpu = PROCESSOR_SH1;
assembler_dialect = 0;
if (TARGET_SH2)
@@ -742,6 +741,10 @@ sh_option_override (void)
sh_branch_cost = 2;
}
+ /* Set -mzdcbranch for SH4 / SH4A if not otherwise specified by the user. */
+ if (! global_options_set.x_TARGET_ZDCBRANCH && TARGET_HARD_SH4)
+ TARGET_ZDCBRANCH = 1;
+
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
if (! VALID_REGISTER_P (regno))
sh_register_names[regno][0] = '\0';
@@ -885,6 +888,11 @@ sh_option_override (void)
&& flag_unsafe_math_optimizations
&& flag_finite_math_only;
+ /* If the -mieee option was not explicitly set by the user, turn it on
+ unless -ffinite-math-only was specified. See also PR 33135. */
+ if (! global_options_set.x_TARGET_IEEE)
+ TARGET_IEEE = ! flag_finite_math_only;
+
if (sh_fixed_range_str)
sh_fix_range (sh_fixed_range_str);
@@ -1874,7 +1882,7 @@ prepare_cbranch_operands (rtx *operands, enum machine_mode mode,
void
expand_cbranchsi4 (rtx *operands, enum rtx_code comparison, int probability)
{
- rtx (*branch_expander) (rtx) = gen_branch_true;
+ rtx (*branch_expander) (rtx, rtx) = gen_branch_true;
rtx jump;
comparison = prepare_cbranch_operands (operands, SImode, comparison);
@@ -1885,10 +1893,10 @@ expand_cbranchsi4 (rtx *operands, enum rtx_code comparison, int probability)
branch_expander = gen_branch_false;
default: ;
}
- emit_insn (gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, T_REG),
+ emit_insn (gen_rtx_SET (VOIDmode, get_t_reg_rtx (),
gen_rtx_fmt_ee (comparison, SImode,
operands[1], operands[2])));
- jump = emit_jump_insn (branch_expander (operands[3]));
+ jump = emit_jump_insn (branch_expander (operands[3], get_t_reg_rtx ()));
if (probability >= 0)
add_reg_note (jump, REG_BR_PROB, GEN_INT (probability));
@@ -1941,7 +1949,7 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison)
if (TARGET_CMPEQDI_T)
{
emit_insn (gen_cmpeqdi_t (operands[1], operands[2]));
- emit_jump_insn (gen_branch_true (operands[3]));
+ emit_jump_insn (gen_branch_true (operands[3], get_t_reg_rtx ()));
return true;
}
msw_skip = NE;
@@ -1969,7 +1977,7 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison)
if (TARGET_CMPEQDI_T)
{
emit_insn (gen_cmpeqdi_t (operands[1], operands[2]));
- emit_jump_insn (gen_branch_false (operands[3]));
+ emit_jump_insn (gen_branch_false (operands[3], get_t_reg_rtx ()));
return true;
}
msw_taken = NE;
@@ -2121,7 +2129,7 @@ sh_emit_set_t_insn (rtx insn, enum machine_mode mode)
void
sh_emit_scc_to_t (enum rtx_code code, rtx op0, rtx op1)
{
- rtx t_reg = gen_rtx_REG (SImode, T_REG);
+ rtx t_reg = get_t_reg_rtx ();
enum rtx_code oldcode = code;
enum machine_mode mode;
@@ -2296,7 +2304,7 @@ sh_emit_compare_and_branch (rtx *operands, enum machine_mode mode)
}
insn = gen_rtx_SET (VOIDmode,
- gen_rtx_REG (SImode, T_REG),
+ get_t_reg_rtx (),
gen_rtx_fmt_ee (branch_code, SImode, op0, op1));
sh_emit_set_t_insn (insn, mode);
@@ -2304,9 +2312,9 @@ sh_emit_compare_and_branch (rtx *operands, enum machine_mode mode)
sh_emit_set_t_insn (gen_ieee_ccmpeqsf_t (op0, op1), mode);
if (branch_code == code)
- emit_jump_insn (gen_branch_true (operands[3]));
+ emit_jump_insn (gen_branch_true (operands[3], get_t_reg_rtx ()));
else
- emit_jump_insn (gen_branch_false (operands[3]));
+ emit_jump_insn (gen_branch_false (operands[3], get_t_reg_rtx ()));
}
void
@@ -2340,7 +2348,7 @@ sh_emit_compare_and_set (rtx *operands, enum machine_mode mode)
{
lab = gen_label_rtx ();
sh_emit_scc_to_t (EQ, op0, op1);
- emit_jump_insn (gen_branch_true (lab));
+ emit_jump_insn (gen_branch_true (lab, get_t_reg_rtx ()));
code = GT;
}
else
@@ -2361,9 +2369,9 @@ sh_emit_compare_and_set (rtx *operands, enum machine_mode mode)
if (lab)
emit_label (lab);
if (invert)
- emit_insn (gen_movnegt (operands[0]));
+ emit_insn (gen_movnegt (operands[0], get_t_reg_rtx ()));
else
- emit_move_insn (operands[0], gen_rtx_REG (SImode, T_REG));
+ emit_move_insn (operands[0], get_t_reg_rtx ());
}
/* Functions to output assembly code. */
@@ -2778,72 +2786,166 @@ sh_cannot_copy_insn_p (rtx insn)
return false;
}
-/* Actual number of instructions used to make a shift by N. */
+/* Number of instructions used to make an arithmetic right shift by N. */
static const char ashiftrt_insns[] =
{ 0,1,2,3,4,5,8,8,8,8,8,8,8,8,8,8,2,3,4,5,8,8,8,8,8,8,8,8,8,8,8,2};
-/* Left shift and logical right shift are the same. */
-static const char shift_insns[] =
- { 0,1,1,2,2,3,3,4,1,2,2,3,3,4,3,3,1,2,2,3,3,4,3,3,2,3,3,4,4,4,3,3};
-
-/* Individual shift amounts needed to get the above length sequences.
- One bit right shifts clobber the T bit, so when possible, put one bit
- shifts in the middle of the sequence, so the ends are eligible for
- branch delay slots. */
-static const short shift_amounts[32][5] = {
- {0}, {1}, {2}, {2, 1},
- {2, 2}, {2, 1, 2}, {2, 2, 2}, {2, 2, 1, 2},
- {8}, {8, 1}, {8, 2}, {8, 1, 2},
- {8, 2, 2}, {8, 2, 1, 2}, {8, -2, 8}, {8, -1, 8},
- {16}, {16, 1}, {16, 2}, {16, 1, 2},
- {16, 2, 2}, {16, 2, 1, 2}, {16, -2, 8}, {16, -1, 8},
- {16, 8}, {16, 1, 8}, {16, 8, 2}, {16, 8, 1, 2},
- {16, 8, 2, 2}, {16, -1, -2, 16}, {16, -2, 16}, {16, -1, 16}};
-
-/* Likewise, but for shift amounts < 16, up to three highmost bits
- might be clobbered. This is typically used when combined with some
+/* Description of a logical left or right shift, when expanded to a sequence
+ of 1/2/8/16 shifts.
+ Notice that one bit right shifts clobber the T bit. One bit left shifts
+ are done with an 'add Rn,Rm' insn and thus do not clobber the T bit. */
+enum
+{
+ ASHL_CLOBBERS_T = 1 << 0,
+ LSHR_CLOBBERS_T = 1 << 1
+};
+
+struct ashl_lshr_sequence
+{
+ char insn_count;
+ char amount[6];
+ char clobbers_t;
+};
+
+static const struct ashl_lshr_sequence ashl_lshr_seq[32] =
+{
+ { 0, { 0 }, 0 },
+ { 1, { 1 }, LSHR_CLOBBERS_T },
+ { 1, { 2 }, 0 },
+ { 2, { 2, 1 }, LSHR_CLOBBERS_T },
+ { 2, { 2, 2 }, 0 },
+ { 3, { 2, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 2, 2, 2 }, 0 },
+ { 4, { 2, 2, 1, 2 }, LSHR_CLOBBERS_T },
+ { 1, { 8 }, 0 },
+ { 2, { 8, 1 }, LSHR_CLOBBERS_T },
+ { 2, { 8, 2 }, 0 },
+ { 3, { 8, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 8, 2, 2 }, 0 },
+ { 4, { 8, 2, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 8, -2, 8 }, 0 },
+ { 3, { 8, -1, 8 }, ASHL_CLOBBERS_T },
+ { 1, { 16 }, 0 },
+ { 2, { 16, 1 }, LSHR_CLOBBERS_T },
+ { 2, { 16, 2 }, 0 },
+ { 3, { 16, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 16, 2, 2 }, 0 },
+ { 4, { 16, 2, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 16, -2, 8 }, 0 },
+ { 3, { 16, -1, 8 }, ASHL_CLOBBERS_T },
+ { 2, { 16, 8 }, 0 },
+ { 3, { 16, 1, 8 }, LSHR_CLOBBERS_T },
+ { 3, { 16, 8, 2 }, 0 },
+ { 4, { 16, 8, 1, 2 }, LSHR_CLOBBERS_T },
+ { 4, { 16, 8, 2, 2 }, 0 },
+ { 4, { 16, -1, -2, 16 }, ASHL_CLOBBERS_T },
+ { 3, { 16, -2, 16 }, 0 },
+
+ /* For a right shift by 31 a 2 insn shll-movt sequence can be used.
+ For a left shift by 31 a 2 insn and-rotl sequences can be used.
+ However, the shift-and combiner code needs this entry here to be in
+ terms of real shift insns. */
+ { 3, { 16, -1, 16 }, ASHL_CLOBBERS_T }
+};
+
+/* Individual shift amounts for shift amounts < 16, up to three highmost
+ bits might be clobbered. This is typically used when combined with some
kind of sign or zero extension. */
+static const struct ashl_lshr_sequence ext_ashl_lshr_seq[32] =
+{
+ { 0, { 0 }, 0 },
+ { 1, { 1 }, LSHR_CLOBBERS_T },
+ { 1, { 2 }, 0 },
+ { 2, { 2, 1 }, LSHR_CLOBBERS_T },
+ { 2, { 2, 2 }, 0 },
+ { 3, { 2, 1, 2 }, LSHR_CLOBBERS_T },
+ { 2, { 8, -2 }, 0 },
+ { 2, { 8, -1 }, ASHL_CLOBBERS_T },
+ { 1, { 8 }, 0 },
+ { 2, { 8, 1 }, LSHR_CLOBBERS_T },
+ { 2, { 8, 2 }, 0 },
+ { 3, { 8, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 8, 2, 2 }, 0 },
+ { 3, { 16, -2, -1 }, ASHL_CLOBBERS_T },
+ { 2, { 16, -2 }, 0 },
+ { 2, { 16, -1 }, ASHL_CLOBBERS_T },
+ { 1, { 16 }, 0 },
+ { 2, { 16, 1 }, LSHR_CLOBBERS_T },
+ { 2, { 16, 2 }, 0 },
+ { 3, { 16, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 16, 2, 2 }, 0 },
+ { 4, { 16, 2, 1, 2 }, LSHR_CLOBBERS_T },
+ { 3, { 16, -2, 8 }, 0 },
+ { 3, { 16, -1, 8 }, ASHL_CLOBBERS_T },
+ { 2, { 16, 8 }, 0 },
+ { 3, { 16, 1, 8 }, LSHR_CLOBBERS_T },
+ { 3, { 16, 8, 2 }, 0 },
+ { 4, { 16, 8, 1, 2 }, LSHR_CLOBBERS_T },
+ { 4, { 16, 8, 2, 2 }, 0 },
+ { 4, { 16, -1, -2, 16 }, ASHL_CLOBBERS_T },
+ { 3, { 16, -2, 16 }, 0 },
+ { 3, { 16, -1, 16 }, ASHL_CLOBBERS_T }
+};
-static const char ext_shift_insns[] =
- { 0,1,1,2,2,3,2,2,1,2,2,3,3,3,2,2,1,2,2,3,3,4,3,3,2,3,3,4,4,4,3,3};
+/* Return true if a shift left consisting of 1/2/8/16 shift instructions
+ will clobber the T bit. */
+bool
+sh_ashlsi_clobbers_t_reg_p (rtx shift_amount)
+{
+ gcc_assert (CONST_INT_P (shift_amount));
+
+ const int shift_amount_i = INTVAL (shift_amount) & 31;
-static const short ext_shift_amounts[32][4] = {
- {0}, {1}, {2}, {2, 1},
- {2, 2}, {2, 1, 2}, {8, -2}, {8, -1},
- {8}, {8, 1}, {8, 2}, {8, 1, 2},
- {8, 2, 2}, {16, -2, -1}, {16, -2}, {16, -1},
- {16}, {16, 1}, {16, 2}, {16, 1, 2},
- {16, 2, 2}, {16, 2, 1, 2}, {16, -2, 8}, {16, -1, 8},
- {16, 8}, {16, 1, 8}, {16, 8, 2}, {16, 8, 1, 2},
- {16, 8, 2, 2}, {16, -1, -2, 16}, {16, -2, 16}, {16, -1, 16}};
+ /* Special case for shift count of 31: use and-rotl sequence. */
+ if (shift_amount_i == 31)
+ return true;
-/* Assuming we have a value that has been sign-extended by at least one bit,
- can we use the ext_shift_amounts with the last shift turned to an arithmetic shift
- to shift it by N without data loss, and quicker than by other means? */
-#define EXT_SHIFT_SIGNED(n) (((n) | 8) == 15)
+ return (ashl_lshr_seq[shift_amount_i].clobbers_t
+ & ASHL_CLOBBERS_T) != 0;
+}
+
+bool
+sh_lshrsi_clobbers_t_reg_p (rtx shift_amount)
+{
+ gcc_assert (CONST_INT_P (shift_amount));
-/* This is used in length attributes in sh.md to help compute the length
- of arbitrary constant shift instructions. */
+ const int shift_amount_i = INTVAL (shift_amount) & 31;
+
+ /* Special case for shift count of 31: use shll-movt sequence. */
+ if (shift_amount_i == 31)
+ return true;
-int
-shift_insns_rtx (rtx insn)
+ return (ashl_lshr_seq[shift_amount_i].clobbers_t
+ & LSHR_CLOBBERS_T) != 0;
+}
+
+/* Return true if it is potentially beneficial to use a dynamic shift
+ instruction (shad / shar) instead of a combination of 1/2/8/16
+ shift instructions for the specified shift count.
+ If dynamic shifts are not available, always return false. */
+bool
+sh_dynamicalize_shift_p (rtx count)
{
- rtx set_src = SET_SRC (XVECEXP (PATTERN (insn), 0, 0));
- int shift_count = INTVAL (XEXP (set_src, 1)) & 31;
- enum rtx_code shift_code = GET_CODE (set_src);
+ gcc_assert (CONST_INT_P (count));
- switch (shift_code)
- {
- case ASHIFTRT:
- return ashiftrt_insns[shift_count];
- case LSHIFTRT:
- case ASHIFT:
- return shift_insns[shift_count];
- default:
- gcc_unreachable ();
- }
+ const int shift_amount_i = INTVAL (count) & 31;
+ int insn_count;
+
+ /* For left and right shifts, there are shorter 2 insn sequences for
+ shift amounts of 31. */
+ if (shift_amount_i == 31)
+ insn_count = 2;
+ else
+ insn_count = ashl_lshr_seq[shift_amount_i].insn_count;
+
+ return TARGET_DYNSHIFT && (insn_count > 1 + SH_DYNAMIC_SHIFT_COST);
}
+/* Assuming we have a value that has been sign-extended by at least one bit,
+ can we use the ext_shift_amounts with the last shift turned to an arithmetic shift
+ to shift it by N without data loss, and quicker than by other means? */
+#define EXT_SHIFT_SIGNED(n) (((n) | 8) == 15)
+
/* Return the cost of a shift. */
static inline int
@@ -2851,26 +2953,22 @@ shiftcosts (rtx x)
{
int value;
- /* There is no pattern for constant first operand. */
- if (CONST_INT_P (XEXP (x, 0)))
- return MAX_COST;
-
if (TARGET_SHMEDIA)
- return COSTS_N_INSNS (1);
+ return 1;
if (GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD)
{
if (GET_MODE (x) == DImode
&& CONST_INT_P (XEXP (x, 1))
&& INTVAL (XEXP (x, 1)) == 1)
- return COSTS_N_INSNS (2);
+ return 2;
/* Everything else is invalid, because there is no pattern for it. */
- return MAX_COST;
+ return -1;
}
/* If shift by a non constant, then this will be expensive. */
if (!CONST_INT_P (XEXP (x, 1)))
- return COSTS_N_INSNS (SH_DYNAMIC_SHIFT_COST);
+ return SH_DYNAMIC_SHIFT_COST;
/* Otherwise, return the true cost in instructions. Cope with out of range
shift counts more or less arbitrarily. */
@@ -2879,13 +2977,14 @@ shiftcosts (rtx x)
if (GET_CODE (x) == ASHIFTRT)
{
int cost = ashiftrt_insns[value];
- /* If SH3, then we put the constant in a reg and use shad. */
+ /* If dynamic shifts are available and profitable in this case, then we
+ put the constant in a reg and use shad. */
if (cost > 1 + SH_DYNAMIC_SHIFT_COST)
cost = 1 + SH_DYNAMIC_SHIFT_COST;
- return COSTS_N_INSNS (cost);
+ return cost;
}
else
- return COSTS_N_INSNS (shift_insns[value]);
+ return ashl_lshr_seq[value].insn_count;
}
/* Return the cost of an AND/XOR/IOR operation. */
@@ -3136,11 +3235,40 @@ sh_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
*total = COSTS_N_INSNS (multcosts (x));
return true;
+ case LT:
+ case GE:
+ /* div0s sign comparison. */
+ if (GET_CODE (XEXP (x, 0)) == XOR
+ && REG_P ((XEXP (XEXP (x, 0), 0)))
+ && REG_P ((XEXP (XEXP (x, 0), 1)))
+ && satisfies_constraint_Z (XEXP (x, 1)))
+ {
+ *total = COSTS_N_INSNS (1);
+ return true;
+ }
+ else
+ return false;
+
+ case LSHIFTRT:
+ /* div0s sign comparison. */
+ if (GET_CODE (XEXP (x, 0)) == XOR
+ && REG_P ((XEXP (XEXP (x, 0), 0)))
+ && REG_P ((XEXP (XEXP (x, 0), 1)))
+ && CONST_INT_P (XEXP (x, 1)) && INTVAL (XEXP (x, 1)) == 31)
+ {
+ *total = COSTS_N_INSNS (1);
+ return true;
+ }
+ /* Fall through to shiftcosts. */
case ASHIFT:
case ASHIFTRT:
- case LSHIFTRT:
- *total = shiftcosts (x);
- return true;
+ {
+ int cost = shiftcosts (x);
+ if (cost < 0)
+ return false;
+ *total = COSTS_N_INSNS (cost);
+ return true;
+ }
case DIV:
case UDIV:
@@ -3273,9 +3401,11 @@ sh_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
/* Code to expand a shift. */
-void
+static void
gen_ashift (int type, int n, rtx reg)
{
+ rtx n_rtx;
+
/* Negative values here come from the shift_amounts array. */
if (n < 0)
{
@@ -3286,26 +3416,30 @@ gen_ashift (int type, int n, rtx reg)
n = -n;
}
+ n_rtx = GEN_INT (n);
+ gcc_assert (satisfies_constraint_P27 (n_rtx));
+
switch (type)
{
case ASHIFTRT:
- emit_insn (gen_ashrsi3_k (reg, reg, GEN_INT (n)));
+ emit_insn (gen_ashrsi3_k (reg, reg, n_rtx));
break;
case LSHIFTRT:
if (n == 1)
- emit_insn (gen_lshrsi3_m (reg, reg, GEN_INT (n)));
+ emit_insn (gen_shlr (reg, reg));
else
- emit_insn (gen_lshrsi3_k (reg, reg, GEN_INT (n)));
+ emit_insn (gen_lshrsi3_k (reg, reg, n_rtx));
break;
case ASHIFT:
- emit_insn (gen_ashlsi3_std (reg, reg, GEN_INT (n)));
+ emit_insn (gen_ashlsi3_k (reg, reg, n_rtx));
break;
+ default:
+ gcc_unreachable ();
}
}
/* Same for HImode */
-
-void
+static void
gen_ashift_hi (int type, int n, rtx reg)
{
/* Negative values here come from the shift_amounts array. */
@@ -3360,7 +3494,7 @@ gen_shifty_op (int code, rtx *operands)
if (code == LSHIFTRT)
{
emit_insn (gen_rotlsi3_1 (operands[0], operands[0]));
- emit_insn (gen_movt (operands[0]));
+ emit_insn (gen_movt (operands[0], get_t_reg_rtx ()));
return;
}
else if (code == ASHIFT)
@@ -3384,9 +3518,9 @@ gen_shifty_op (int code, rtx *operands)
return;
}
- max = shift_insns[value];
+ max = ashl_lshr_seq[value].insn_count;
for (i = 0; i < max; i++)
- gen_ashift (code, shift_amounts[value][i], operands[0]);
+ gen_ashift (code, ashl_lshr_seq[value].amount[i], operands[0]);
}
/* Same as above, but optimized for values where the topmost bits don't
@@ -3411,15 +3545,15 @@ gen_shifty_hi_op (int code, rtx *operands)
gen_fun = GET_MODE (operands[0]) == HImode ? gen_ashift_hi : gen_ashift;
if (code == ASHIFT)
{
- max = ext_shift_insns[value];
+ max = ext_ashl_lshr_seq[value].insn_count;
for (i = 0; i < max; i++)
- gen_fun (code, ext_shift_amounts[value][i], operands[0]);
+ gen_fun (code, ext_ashl_lshr_seq[value].amount[i], operands[0]);
}
else
/* When shifting right, emit the shifts in reverse order, so that
solitary negative values come first. */
- for (i = ext_shift_insns[value] - 1; i >= 0; i--)
- gen_fun (code, ext_shift_amounts[value][i], operands[0]);
+ for (i = ext_ashl_lshr_seq[value].insn_count - 1; i >= 0; i--)
+ gen_fun (code, ext_ashl_lshr_seq[value].amount[i], operands[0]);
}
/* Output RTL for an arithmetic right shift. */
@@ -3433,7 +3567,7 @@ expand_ashiftrt (rtx *operands)
char func[18];
int value;
- if (TARGET_SH3 || TARGET_SH2A)
+ if (TARGET_DYNSHIFT)
{
if (!CONST_INT_P (operands[2]))
{
@@ -3465,7 +3599,7 @@ expand_ashiftrt (rtx *operands)
{
emit_insn (gen_cmpgtsi_t (force_reg (SImode, CONST0_RTX (SImode)),
operands[1]));
- emit_insn (gen_mov_neg_si_t (operands[0]));
+ emit_insn (gen_mov_neg_si_t (operands[0], get_t_reg_rtx ()));
return true;
}
emit_insn (gen_ashrsi2_31 (operands[0], operands[1]));
@@ -3503,12 +3637,6 @@ expand_ashiftrt (rtx *operands)
return true;
}
-bool
-sh_dynamicalize_shift_p (rtx count)
-{
- return shift_insns[INTVAL (count) & 31] > 1 + SH_DYNAMIC_SHIFT_COST;
-}
-
/* Try to find a good way to implement the combiner pattern
[(set (match_operand:SI 0 "register_operand" "r")
(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
@@ -3553,12 +3681,14 @@ shl_and_kind (rtx left_rtx, rtx mask_rtx, int *attrp)
lsb2 = ((mask2 ^ (mask2 - 1)) >> 1) + 1;
/* mask has no zeroes but trailing zeroes <==> ! mask2 */
if (! mask2)
- best_cost = shift_insns[right] + shift_insns[right + left];
+ best_cost = ashl_lshr_seq[right].insn_count
+ + ashl_lshr_seq[right + left].insn_count;
/* mask has no trailing zeroes <==> ! right */
else if (! right && mask2 == ~(lsb2 - 1))
{
int late_right = exact_log2 (lsb2);
- best_cost = shift_insns[left + late_right] + shift_insns[late_right];
+ best_cost = ashl_lshr_seq[left + late_right].insn_count
+ + ashl_lshr_seq[late_right].insn_count;
}
/* Try to use zero extend. */
if (mask2 == ~(lsb2 - 1))
@@ -3570,8 +3700,8 @@ shl_and_kind (rtx left_rtx, rtx mask_rtx, int *attrp)
/* Can we zero-extend right away? */
if (lsb2 == (unsigned HOST_WIDE_INT) 1 << width)
{
- cost
- = 1 + ext_shift_insns[right] + ext_shift_insns[left + right];
+ cost = 1 + ext_ashl_lshr_seq[right].insn_count
+ + ext_ashl_lshr_seq[left + right].insn_count;
if (cost < best_cost)
{
best = 1;
@@ -3590,8 +3720,10 @@ shl_and_kind (rtx left_rtx, rtx mask_rtx, int *attrp)
first = width - exact_log2 (lsb2) + right;
if (first >= 0 && right + left - first >= 0)
{
- cost = ext_shift_insns[right] + ext_shift_insns[first] + 1
- + ext_shift_insns[right + left - first];
+ cost = ext_ashl_lshr_seq[right].insn_count
+ + ext_ashl_lshr_seq[first].insn_count + 1
+ + ext_ashl_lshr_seq[right + left - first].insn_count;
+
if (cost < best_cost)
{
best = 1;
@@ -3611,7 +3743,7 @@ shl_and_kind (rtx left_rtx, rtx mask_rtx, int *attrp)
break;
if (! CONST_OK_FOR_K08 (mask >> i))
continue;
- cost = (i != 0) + 2 + ext_shift_insns[left + i];
+ cost = (i != 0) + 2 + ext_ashl_lshr_seq[left + i].insn_count;
if (cost < best_cost)
{
best = 2;
@@ -3627,7 +3759,9 @@ shl_and_kind (rtx left_rtx, rtx mask_rtx, int *attrp)
if (i > right)
break;
cost = (i != 0) + (CONST_OK_FOR_I08 (mask >> i) ? 2 : 3)
- + (can_ext ? ext_shift_insns : shift_insns)[left + i];
+ + (can_ext
+ ? ext_ashl_lshr_seq
+ : ashl_lshr_seq)[left + i].insn_count;
if (cost < best_cost)
{
best = 4 - can_ext;
@@ -3666,11 +3800,11 @@ int
shl_and_scr_length (rtx insn)
{
rtx set_src = SET_SRC (XVECEXP (PATTERN (insn), 0, 0));
- int len = shift_insns[INTVAL (XEXP (set_src, 1)) & 31];
+ int len = ashl_lshr_seq[INTVAL (XEXP (set_src, 1)) & 31].insn_count;
rtx op = XEXP (set_src, 0);
- len += shift_insns[INTVAL (XEXP (op, 1)) & 31] + 1;
+ len += ashl_lshr_seq[INTVAL (XEXP (op, 1)) & 31].insn_count + 1;
op = XEXP (XEXP (op, 0), 0);
- return len + shift_insns[INTVAL (XEXP (op, 1)) & 31];
+ return len + ashl_lshr_seq[INTVAL (XEXP (op, 1)) & 31].insn_count;
}
/* Generate rtl for instructions for which shl_and_kind advised a particular
@@ -3771,9 +3905,9 @@ gen_shl_and (rtx dest, rtx left_rtx, rtx mask_rtx, rtx source)
int neg = 0;
if (kind != 4 && total_shift < 16)
{
- neg = -ext_shift_amounts[total_shift][1];
+ neg = -ext_ashl_lshr_seq[total_shift].amount[1];
if (neg > 0)
- neg -= ext_shift_amounts[total_shift][2];
+ neg -= ext_ashl_lshr_seq[total_shift].amount[2];
else
neg = 0;
}
@@ -3820,11 +3954,13 @@ shl_sext_kind (rtx left_rtx, rtx size_rtx, int *costp)
gcc_assert (insize > 0);
/* Default to left / right shift. */
kind = 0;
- best_cost = shift_insns[32 - insize] + ashiftrt_insns[32 - size];
+ best_cost = ashl_lshr_seq[32 - insize].insn_count
+ + ashl_lshr_seq[32 - size].insn_count;
if (size <= 16)
{
/* 16 bit shift / sign extend / 16 bit shift */
- cost = shift_insns[16 - insize] + 1 + ashiftrt_insns[16 - size];
+ cost = ashl_lshr_seq[16 - insize].insn_count + 1
+ + ashl_lshr_seq[16 - size].insn_count;
/* If ashiftrt_insns[16 - size] is 8, this choice will be overridden
below, by alternative 3 or something even better. */
if (cost < best_cost)
@@ -3838,7 +3974,8 @@ shl_sext_kind (rtx left_rtx, rtx size_rtx, int *costp)
{
if (ext <= size)
{
- cost = ext_shift_insns[ext - insize] + 1 + shift_insns[size - ext];
+ cost = ext_ashl_lshr_seq[ext - insize].insn_count + 1
+ + ashl_lshr_seq[size - ext].insn_count;
if (cost < best_cost)
{
kind = ext / (unsigned) 8;
@@ -3848,12 +3985,14 @@ shl_sext_kind (rtx left_rtx, rtx size_rtx, int *costp)
/* Check if we can do a sloppy shift with a final signed shift
restoring the sign. */
if (EXT_SHIFT_SIGNED (size - ext))
- cost = ext_shift_insns[ext - insize] + ext_shift_insns[size - ext] + 1;
+ cost = ext_ashl_lshr_seq[ext - insize].insn_count
+ + ext_ashl_lshr_seq[size - ext].insn_count + 1;
/* If not, maybe it's still cheaper to do the second shift sloppy,
and do a final sign extend? */
else if (size <= 16)
- cost = ext_shift_insns[ext - insize] + 1
- + ext_shift_insns[size > ext ? size - ext : ext - size] + 1;
+ cost = ext_ashl_lshr_seq[ext - insize].insn_count + 1
+ + ext_ashl_lshr_seq[size > ext ? size - ext : ext - size].insn_count
+ + 1;
else
continue;
if (cost < best_cost)
@@ -3865,7 +4004,7 @@ shl_sext_kind (rtx left_rtx, rtx size_rtx, int *costp)
/* Check if we can sign extend in r0 */
if (insize < 8)
{
- cost = 3 + shift_insns[left];
+ cost = 3 + ashl_lshr_seq[left].insn_count;
if (cost < best_cost)
{
kind = 6;
@@ -3874,7 +4013,7 @@ shl_sext_kind (rtx left_rtx, rtx size_rtx, int *costp)
/* Try the same with a final signed shift. */
if (left < 31)
{
- cost = 3 + ext_shift_insns[left + 1] + 1;
+ cost = 3 + ext_ashl_lshr_seq[left + 1].insn_count + 1;
if (cost < best_cost)
{
kind = 7;
@@ -3882,10 +4021,10 @@ shl_sext_kind (rtx left_rtx, rtx size_rtx, int *costp)
}
}
}
- if (TARGET_SH3 || TARGET_SH2A)
+ if (TARGET_DYNSHIFT)
{
/* Try to use a dynamic shift. */
- cost = shift_insns[32 - insize] + 1 + SH_DYNAMIC_SHIFT_COST;
+ cost = ashl_lshr_seq[32 - insize].insn_count + 1 + SH_DYNAMIC_SHIFT_COST;
if (cost < best_cost)
{
kind = 0;
@@ -4794,7 +4933,7 @@ find_barrier (int num_mova, rtx mova, rtx from)
delay slot scheduler. */
if (JUMP_P (from) && !JUMP_TABLE_DATA_P (from)
&& get_attr_type (from) == TYPE_CBRANCH
- && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (from)))) != SEQUENCE)
+ && ! sequence_insn_p (from))
inc += 2;
if (found_si)
@@ -5300,6 +5439,7 @@ gen_far_branch (struct far_branch *bp)
}
else
jump = emit_jump_insn_after (gen_return (), insn);
+
/* Emit a barrier so that reorg knows that any following instructions
are not reachable via a fall-through path.
But don't do this when not optimizing, since we wouldn't suppress the
@@ -5308,10 +5448,19 @@ gen_far_branch (struct far_branch *bp)
if (optimize)
emit_barrier_after (jump);
emit_label_after (bp->near_label, insn);
- JUMP_LABEL (jump) = bp->far_label;
+
+ if (bp->far_label)
+ JUMP_LABEL (jump) = bp->far_label;
+ else
+ {
+ rtx pat = PATTERN (jump);
+ gcc_assert (ANY_RETURN_P (pat));
+ JUMP_LABEL (jump) = pat;
+ }
+
ok = invert_jump (insn, label, 1);
gcc_assert (ok);
-
+
/* If we are branching around a jump (rather than a return), prevent
reorg from using an insn from the jump target as the delay slot insn -
when reorg did this, it pessimized code (we rather hide the delay slot)
@@ -9309,6 +9458,15 @@ sh_cfun_resbank_handler_p (void)
!= NULL_TREE) && TARGET_SH2A);
}
+/* Returns true if the current function has a "trap_exit" attribute set. */
+
+bool
+sh_cfun_trap_exit_p (void)
+{
+ return lookup_attribute ("trap_exit", DECL_ATTRIBUTES (current_function_decl))
+ != NULL_TREE;
+}
+
/* Implement TARGET_CHECK_PCH_TARGET_FLAGS. */
static const char *
@@ -9504,6 +9662,15 @@ reg_unused_after (rtx reg, rtx insn)
#include "ggc.h"
+static GTY(()) rtx t_reg_rtx;
+rtx
+get_t_reg_rtx (void)
+{
+ if (! t_reg_rtx)
+ t_reg_rtx = gen_rtx_REG (SImode, T_REG);
+ return t_reg_rtx;
+}
+
static GTY(()) rtx fpscr_rtx;
rtx
get_fpscr_rtx (void)
@@ -9643,6 +9810,26 @@ fpscr_set_from_mem (int mode, HARD_REG_SET regs_live)
#define IS_ASM_LOGICAL_LINE_SEPARATOR(C, STR) ((C) == ';')
#endif
+static bool
+sequence_insn_p (rtx insn)
+{
+ rtx prev, next, pat;
+
+ prev = PREV_INSN (insn);
+ if (prev == NULL)
+ return false;
+
+ next = NEXT_INSN (prev);
+ if (next == NULL)
+ return false;
+
+ pat = PATTERN (next);
+ if (pat == NULL)
+ return false;
+
+ return GET_CODE (pat) == SEQUENCE;
+}
+
int
sh_insn_length_adjustment (rtx insn)
{
@@ -9653,7 +9840,7 @@ sh_insn_length_adjustment (rtx insn)
&& GET_CODE (PATTERN (insn)) != CLOBBER)
|| CALL_P (insn)
|| (JUMP_P (insn) && !JUMP_TABLE_DATA_P (insn)))
- && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (insn)))) != SEQUENCE
+ && ! sequence_insn_p (insn)
&& get_attr_needs_delay_slot (insn) == NEEDS_DELAY_SLOT_YES)
return 2;
@@ -9662,7 +9849,7 @@ sh_insn_length_adjustment (rtx insn)
if (sh_cpu_attr == CPU_SH2E
&& JUMP_P (insn) && !JUMP_TABLE_DATA_P (insn)
&& get_attr_type (insn) == TYPE_CBRANCH
- && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (insn)))) != SEQUENCE)
+ && ! sequence_insn_p (insn))
return 2;
/* sh-dsp parallel processing insn take four bytes instead of two. */
@@ -9737,7 +9924,7 @@ sh_legitimate_index_p (enum machine_mode mode, rtx op, bool consider_sh2a,
/* Check if this is the address of an unaligned load / store. */
if (mode == VOIDmode)
- return CONST_OK_FOR_I06 (INTVAL (op));
+ return satisfies_constraint_I06 (op);
size = GET_MODE_SIZE (mode);
return (!(INTVAL (op) & (size - 1))
@@ -12049,9 +12236,9 @@ sh_expand_t_scc (rtx operands[])
result = gen_reg_rtx (SImode);
val = INTVAL (op1);
if ((code == EQ && val == 1) || (code == NE && val == 0))
- emit_insn (gen_movt (result));
+ emit_insn (gen_movt (result, get_t_reg_rtx ()));
else if ((code == EQ && val == 0) || (code == NE && val == 1))
- emit_insn (gen_movnegt (result));
+ emit_insn (gen_movnegt (result, get_t_reg_rtx ()));
else if (code == EQ || code == NE)
emit_insn (gen_move_insn (result, GEN_INT (code == NE)));
else
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index b5f20f90558..af7fe0bf545 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -338,8 +338,8 @@ do { \
#endif
#define SH_ASM_SPEC \
- "%(subtarget_asm_endian_spec) %{mrelax:-relax %(subtarget_asm_relax_spec)}\
-%(subtarget_asm_isa_spec) %(subtarget_asm_spec)\
+ "%(subtarget_asm_endian_spec) %{mrelax:-relax %(subtarget_asm_relax_spec)} \
+%(subtarget_asm_isa_spec) %(subtarget_asm_spec) \
%{m2a:--isa=sh2a} \
%{m2a-single:--isa=sh2a} \
%{m2a-single-only:--isa=sh2a} \
@@ -1213,12 +1213,8 @@ extern enum reg_class regno_reg_class[FIRST_PSEUDO_REGISTER];
/* Defines for sh.md and constraints.md. */
-#define CONST_OK_FOR_I06(VALUE) (((HOST_WIDE_INT)(VALUE)) >= -32 \
- && ((HOST_WIDE_INT)(VALUE)) <= 31)
#define CONST_OK_FOR_I08(VALUE) (((HOST_WIDE_INT)(VALUE))>= -128 \
&& ((HOST_WIDE_INT)(VALUE)) <= 127)
-#define CONST_OK_FOR_I10(VALUE) (((HOST_WIDE_INT)(VALUE)) >= -512 \
- && ((HOST_WIDE_INT)(VALUE)) <= 511)
#define CONST_OK_FOR_I16(VALUE) (((HOST_WIDE_INT)(VALUE)) >= -32768 \
&& ((HOST_WIDE_INT)(VALUE)) <= 32767)
@@ -1932,6 +1928,13 @@ struct sh_args {
/* Nonzero if access to memory by bytes is no faster than for words. */
#define SLOW_BYTE_ACCESS 1
+/* Nonzero if the target supports dynamic shift instructions
+ like shad and shld. */
+#define TARGET_DYNSHIFT (TARGET_SH3 || TARGET_SH2A)
+
+#define SH_DYNAMIC_SHIFT_COST \
+ (TARGET_HARD_SH4 ? 1 : TARGET_DYNSHIFT ? (optimize_size ? 1 : 2) : 20)
+
/* Immediate shift counts are truncated by the output routines (or was it
the assembler?). Shift counts in a register are truncated by SH. Note
that the native compiler puts too large (> 32) immediate shift counts
@@ -2321,11 +2324,6 @@ extern int current_function_interrupt;
prologue rather than duplicate around each call. */
#define ACCUMULATE_OUTGOING_ARGS TARGET_ACCUMULATE_OUTGOING_ARGS
-#define SH_DYNAMIC_SHIFT_COST \
- (TARGET_HARD_SH4 ? 1 \
- : (TARGET_SH3 || TARGET_SH2A) ? (optimize_size ? 1 : 2) : 20)
-
-
#define NUM_MODES_FOR_MODE_SWITCHING { FP_MODE_NONE }
#define OPTIMIZE_MODE_SWITCHING(ENTITY) (TARGET_SH4 || TARGET_SH2A_DOUBLE)
@@ -2351,7 +2349,7 @@ extern int current_function_interrupt;
? get_attr_fp_mode (INSN) \
: FP_MODE_NONE)
-#define MODE_AFTER(MODE, INSN) \
+#define MODE_AFTER(ENTITY, MODE, INSN) \
(TARGET_HITACHI \
&& recog_memoized (INSN) >= 0 \
&& get_attr_fp_set (INSN) != FP_SET_NONE \
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 852f9fd36ea..ede916effb4 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -541,12 +541,10 @@
;; On the SH and SH2, the rte instruction reads the return pc from the stack,
;; and thus we can't put a pop instruction in its delay slot.
-;; ??? On the SH3, the rte instruction does not use the stack, so a pop
+;; On the SH3 and SH4, the rte instruction does not use the stack, so a pop
;; instruction can go in the delay slot.
-
;; Since a normal return (rts) implicitly uses the PR register,
;; we can't allow PR register loads in an rts delay slot.
-
(define_delay
(eq_attr "type" "return")
[(and (eq_attr "in_delay_slot" "yes")
@@ -742,12 +740,6 @@
}
[(set_attr "type" "mt_group")])
-;; ??? Perhaps should only accept reg/constant if the register is reg 0.
-;; That would still allow reload to create cmpi instructions, but would
-;; perhaps allow forcing the constant into a register when that is better.
-;; Probably should use r0 for mem/imm compares, but force constant into a
-;; register for pseudo/imm compares.
-
(define_insn "cmpeqsi_t"
[(set (reg:SI T_REG)
(eq:SI (match_operand:SI 0 "arith_reg_operand" "r,z,r")
@@ -759,26 +751,118 @@
cmp/eq %1,%0"
[(set_attr "type" "mt_group")])
+;; FIXME: For some reason, on SH4A and SH2A combine fails to simplify this
+;; pattern by itself. What this actually does is:
+;; x == 0: (1 >> 0-0) & 1 = 1
+;; x != 0: (1 >> 0-x) & 1 = 0
+;; Without this the test pr51244-8.c fails on SH2A and SH4A.
+(define_insn_and_split "*cmpeqsi_t"
+ [(set (reg:SI T_REG)
+ (and:SI (lshiftrt:SI
+ (const_int 1)
+ (neg:SI (match_operand:SI 0 "arith_reg_operand" "r")))
+ (const_int 1)))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(set (reg:SI T_REG) (eq:SI (match_dup 0) (const_int 0)))])
+
(define_insn "cmpgtsi_t"
[(set (reg:SI T_REG)
(gt:SI (match_operand:SI 0 "arith_reg_operand" "r,r")
- (match_operand:SI 1 "arith_reg_or_0_operand" "r,N")))]
+ (match_operand:SI 1 "arith_reg_or_0_operand" "N,r")))]
"TARGET_SH1"
"@
- cmp/gt %1,%0
- cmp/pl %0"
+ cmp/pl %0
+ cmp/gt %1,%0"
[(set_attr "type" "mt_group")])
(define_insn "cmpgesi_t"
[(set (reg:SI T_REG)
(ge:SI (match_operand:SI 0 "arith_reg_operand" "r,r")
- (match_operand:SI 1 "arith_reg_or_0_operand" "r,N")))]
+ (match_operand:SI 1 "arith_reg_or_0_operand" "N,r")))]
"TARGET_SH1"
"@
- cmp/ge %1,%0
- cmp/pz %0"
+ cmp/pz %0
+ cmp/ge %1,%0"
+ [(set_attr "type" "mt_group")])
+
+;; FIXME: This is actually wrong. There is no way to literally move a
+;; general reg to t reg. Luckily, it seems that this pattern will be only
+;; used when the general reg is known be either '0' or '1' during combine.
+;; What we actually need is reg != 0 -> T, but we have only reg == 0 -> T.
+;; Due to interactions with other patterns, combine fails to pick the latter
+;; and invert the dependent logic.
+(define_insn "*negtstsi"
+ [(set (reg:SI T_REG) (match_operand:SI 0 "arith_reg_operand" "r"))]
+ "TARGET_SH1"
+ "cmp/pl %0"
[(set_attr "type" "mt_group")])
+;; Some integer sign comparison patterns can be realized with the div0s insn.
+;; div0s Rm,Rn T = (Rm >> 31) ^ (Rn >> 31)
+(define_insn "cmp_div0s_0"
+ [(set (reg:SI T_REG)
+ (lshiftrt:SI (xor:SI (match_operand:SI 0 "arith_reg_operand" "%r")
+ (match_operand:SI 1 "arith_reg_operand" "r"))
+ (const_int 31)))]
+ "TARGET_SH1"
+ "div0s %0,%1"
+ [(set_attr "type" "arith")])
+
+(define_insn "cmp_div0s_1"
+ [(set (reg:SI T_REG)
+ (lt:SI (xor:SI (match_operand:SI 0 "arith_reg_operand" "%r")
+ (match_operand:SI 1 "arith_reg_operand" "r"))
+ (const_int 0)))]
+ "TARGET_SH1"
+ "div0s %0,%1"
+ [(set_attr "type" "arith")])
+
+(define_insn_and_split "*cmp_div0s_0"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (lshiftrt:SI (xor:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "arith_reg_operand" ""))
+ (const_int 31)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(set (reg:SI T_REG)
+ (lshiftrt:SI (xor:SI (match_dup 1) (match_dup 2)) (const_int 31)))
+ (set (match_dup 0) (reg:SI T_REG))])
+
+(define_insn_and_split "*cmp_div0s_1"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (ge:SI (xor:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "arith_reg_operand" ""))
+ (const_int 0)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& can_create_pseudo_p ()"
+ [(const_int 0)]
+;; We have to go through the movnegt expander here which will handle the
+;; SH2A vs non-SH2A cases.
+{
+ emit_insn (gen_cmp_div0s_1 (operands[1], operands[2]));
+ emit_insn (gen_movnegt (operands[0], get_t_reg_rtx ()));
+ DONE;
+})
+
+(define_insn_and_split "*cmp_div0s_1"
+ [(set (reg:SI T_REG)
+ (ge:SI (xor:SI (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_operand" ""))
+ (const_int 0)))]
+ "TARGET_SH1"
+ "#"
+ "&& can_create_pseudo_p ()"
+ [(set (reg:SI T_REG) (lt:SI (xor:SI (match_dup 0) (match_dup 1))
+ (const_int 0)))
+ (set (reg:SI T_REG) (xor:SI (reg:SI T_REG) (const_int 1)))])
+
+
;; -------------------------------------------------------------------------
;; SImode compare and branch
;; -------------------------------------------------------------------------
@@ -803,6 +887,156 @@
DONE;
})
+;; Combine patterns to invert compare and branch operations for which we
+;; don't have actual comparison insns. These patterns are used in cases
+;; which appear after the initial cbranchsi expansion, which also does
+;; some condition inversion.
+
+(define_split
+ [(set (pc)
+ (if_then_else (ne (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_or_0_operand" ""))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ [(set (reg:SI T_REG) (eq:SI (match_dup 0) (match_dup 1)))
+ (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+;; FIXME: Similar to the *cmpeqsi_t pattern above, for some reason, on SH4A
+;; and SH2A combine fails to simplify this pattern by itself.
+;; What this actually does is:
+;; x == 0: (1 >> 0-0) & 1 = 1
+;; x != 0: (1 >> 0-x) & 1 = 0
+;; Without this the test pr51244-8.c fails on SH2A and SH4A.
+(define_split
+ [(set (pc)
+ (if_then_else
+ (eq (and:SI (lshiftrt:SI
+ (const_int 1)
+ (neg:SI (match_operand:SI 0 "arith_reg_operand" "")))
+ (const_int 1))
+ (const_int 0))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ [(set (reg:SI T_REG) (eq:SI (match_dup 0) (const_int 0)))
+ (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+(define_split
+ [(set (pc)
+ (if_then_else (le (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_or_0_operand" ""))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ [(set (reg:SI T_REG) (gt:SI (match_dup 0) (match_dup 1)))
+ (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+(define_split
+ [(set (pc)
+ (if_then_else (lt (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_or_0_operand" ""))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ [(set (reg:SI T_REG) (ge:SI (match_dup 0) (match_dup 1)))
+ (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+(define_split
+ [(set (pc)
+ (if_then_else (leu (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_operand" ""))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ [(set (reg:SI T_REG) (gtu:SI (match_dup 0) (match_dup 1)))
+ (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+(define_split
+ [(set (pc)
+ (if_then_else (ltu (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_operand" ""))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ [(set (reg:SI T_REG) (geu:SI (match_dup 0) (match_dup 1)))
+ (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+;; Compare and branch combine patterns for div0s comparisons.
+(define_insn_and_split "*cbranch_div0s"
+ [(set (pc)
+ (if_then_else (lt (xor:SI (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_operand" ""))
+ (const_int 0))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(set (reg:SI T_REG)
+ (lt:SI (xor:SI (match_dup 0) (match_dup 1)) (const_int 0)))
+ (set (pc)
+ (if_then_else (ne (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+(define_insn_and_split "*cbranch_div0s"
+ [(set (pc)
+ (if_then_else (ge (xor:SI (match_operand:SI 0 "arith_reg_operand" "")
+ (match_operand:SI 1 "arith_reg_operand" ""))
+ (const_int 0))
+ (label_ref (match_operand 2))
+ (pc)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(set (reg:SI T_REG)
+ (lt:SI (xor:SI (match_dup 0) (match_dup 1)) (const_int 0)))
+ (set (pc)
+ (if_then_else (eq (reg:SI T_REG) (const_int 0))
+ (label_ref (match_dup 2))
+ (pc)))])
+
+;; Conditional move combine pattern for div0s comparisons.
+;; This is used when TARGET_PRETEND_CMOVE is in effect.
+(define_insn_and_split "*movsicc_div0s"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (if_then_else:SI (ge (xor:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "arith_reg_operand" ""))
+ (const_int 0))
+ (match_operand:SI 3 "arith_reg_operand" "")
+ (match_operand:SI 4 "general_movsrc_operand" "")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_PRETEND_CMOVE"
+ "#"
+ "&& 1"
+ [(set (reg:SI T_REG) (lt:SI (xor:SI (match_dup 1) (match_dup 2))
+ (const_int 0)))
+ (set (match_dup 0)
+ (if_then_else (ne (reg:SI T_REG) (const_int 0))
+ (match_dup 4)
+ (match_dup 3)))])
+
;; -------------------------------------------------------------------------
;; SImode unsigned integer comparisons
;; -------------------------------------------------------------------------
@@ -813,13 +1047,10 @@
(match_operand:SI 1 "arith_reg_or_0_operand" "rN")))]
"TARGET_SH1"
"cmp/hs %1,%0"
- "&& operands[1] == CONST0_RTX (SImode)"
- [(pc)]
-{
- emit_insn (gen_sett ());
- DONE;
-}
- [(set_attr "type" "mt_group")])
+ "&& satisfies_constraint_Z (operands[0])"
+ [(set (reg:SI T_REG) (const_int 1))]
+ ""
+ [(set_attr "type" "mt_group")])
(define_insn "cmpgtusi_t"
[(set (reg:SI T_REG)
@@ -827,7 +1058,7 @@
(match_operand:SI 1 "arith_reg_operand" "r")))]
"TARGET_SH1"
"cmp/hi %1,%0"
- [(set_attr "type" "mt_group")])
+ [(set_attr "type" "mt_group")])
;; -------------------------------------------------------------------------
@@ -921,9 +1152,21 @@
(eq:SI (match_operand:DI 0 "arith_reg_operand" "r,r")
(match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))]
"TARGET_SH1"
- "@
- tst %S0,%S0\;bf %,Ldi%=\;tst %R0,%R0\\n%,Ldi%=:
- cmp/eq %S1,%S0\;bf %,Ldi%=\;cmp/eq %R1,%R0\\n%,Ldi%=:"
+{
+ static const char* alt[] =
+ {
+ "tst %S0,%S0" "\n"
+ " bf 0f" "\n"
+ " tst %R0,%R0" "\n"
+ "0:",
+
+ "cmp/eq %S1,%S0" "\n"
+ " bf 0f" "\n"
+ " cmp/eq %R1,%R0" "\n"
+ "0:"
+ };
+ return alt[which_alternative];
+}
[(set_attr "length" "6")
(set_attr "type" "arith3b")])
@@ -956,9 +1199,23 @@
(gt:SI (match_operand:DI 0 "arith_reg_operand" "r,r")
(match_operand:DI 1 "arith_reg_or_0_operand" "r,N")))]
"TARGET_SH2"
- "@
- cmp/eq\\t%S1,%S0\;bf{.|/}s\\t%,Ldi%=\;cmp/gt\\t%S1,%S0\;cmp/hi\\t%R1,%R0\\n%,Ldi%=:
- tst\\t%S0,%S0\;bf{.|/}s\\t%,Ldi%=\;cmp/pl\\t%S0\;cmp/hi\\t%S0,%R0\\n%,Ldi%=:"
+{
+ static const char* alt[] =
+ {
+ "cmp/eq %S1,%S0" "\n"
+ " bf{.|/}s 0f" "\n"
+ " cmp/gt %S1,%S0" "\n"
+ " cmp/hi %R1,%R0" "\n"
+ "0:",
+
+ "tst %S0,%S0" "\n"
+ " bf{.|/}s 0f" "\n"
+ " cmp/pl %S0" "\n"
+ " cmp/hi %S0,%R0" "\n"
+ "0:"
+ };
+ return alt[which_alternative];
+}
[(set_attr "length" "8")
(set_attr "type" "arith3")])
@@ -967,9 +1224,19 @@
(ge:SI (match_operand:DI 0 "arith_reg_operand" "r,r")
(match_operand:DI 1 "arith_reg_or_0_operand" "r,N")))]
"TARGET_SH2"
- "@
- cmp/eq\\t%S1,%S0\;bf{.|/}s\\t%,Ldi%=\;cmp/ge\\t%S1,%S0\;cmp/hs\\t%R1,%R0\\n%,Ldi%=:
- cmp/pz\\t%S0"
+{
+ static const char* alt[] =
+ {
+ "cmp/eq %S1,%S0" "\n"
+ " bf{.|/}s 0f" "\n"
+ " cmp/ge %S1,%S0" "\n"
+ " cmp/hs %R1,%R0" "\n"
+ "0:",
+
+ "cmp/pz %S0"
+ };
+ return alt[which_alternative];
+}
[(set_attr "length" "8,2")
(set_attr "type" "arith3,mt_group")])
@@ -982,7 +1249,13 @@
(geu:SI (match_operand:DI 0 "arith_reg_operand" "r")
(match_operand:DI 1 "arith_reg_operand" "r")))]
"TARGET_SH2"
- "cmp/eq\\t%S1,%S0\;bf{.|/}s\\t%,Ldi%=\;cmp/hs\\t%S1,%S0\;cmp/hs\\t%R1,%R0\\n%,Ldi%=:"
+{
+ return "cmp/eq %S1,%S0" "\n"
+ " bf{.|/}s 0f" "\n"
+ " cmp/hs %S1,%S0" "\n"
+ " cmp/hs %R1,%R0" "\n"
+ "0:";
+}
[(set_attr "length" "8")
(set_attr "type" "arith3")])
@@ -991,7 +1264,13 @@
(gtu:SI (match_operand:DI 0 "arith_reg_operand" "r")
(match_operand:DI 1 "arith_reg_operand" "r")))]
"TARGET_SH2"
- "cmp/eq\\t%S1,%S0\;bf{.|/}s\\t%,Ldi%=\;cmp/hi\\t%S1,%S0\;cmp/hi\\t%R1,%R0\\n%,Ldi%=:"
+{
+ return "cmp/eq %S1,%S0" "\n"
+ " bf{.|/}s 0f" "\n"
+ " cmp/hi %S1,%S0" "\n"
+ " cmp/hi %R1,%R0" "\n"
+ "0:";
+}
[(set_attr "length" "8")
(set_attr "type" "arith3")])
@@ -1043,7 +1322,7 @@
"cmpgtu %N1, %N2, %0"
[(set_attr "type" "cmp_media")])
-; These two patterns are for combine.
+; This pattern is for combine.
(define_insn "*cmpne0sisi_media"
[(set (match_operand:SI 0 "register_operand" "=r")
(ne:SI (match_operand:SI 1 "arith_reg_operand" "r") (const_int 0)))]
@@ -1294,7 +1573,11 @@
&& (arith_reg_operand (operands[1], SImode)
|| (immediate_operand (operands[1], SImode)
&& satisfies_constraint_I08 (operands[1])))"
- "bt 0f\;mov %1,%0\\n0:"
+{
+ return "bt 0f" "\n"
+ " mov %1,%0" "\n"
+ "0:";
+}
[(set_attr "type" "mt_group,arith") ;; poor approximation
(set_attr "length" "4")])
@@ -1307,7 +1590,11 @@
&& (arith_reg_operand (operands[1], SImode)
|| (immediate_operand (operands[1], SImode)
&& satisfies_constraint_I08 (operands[1])))"
- "bf 0f\;mov %1,%0\\n0:"
+{
+ return "bf 0f" "\n"
+ " mov %1,%0" "\n"
+ "0:";
+}
[(set_attr "type" "mt_group,arith") ;; poor approximation
(set_attr "length" "4")])
@@ -1431,21 +1718,14 @@
[(set_attr "type" "arith_media")
(set_attr "highpart" "ignore")])
-(define_insn "adddi3_compact"
+(define_insn_and_split "adddi3_compact"
[(set (match_operand:DI 0 "arith_reg_dest" "=&r")
(plus:DI (match_operand:DI 1 "arith_reg_operand" "%0")
(match_operand:DI 2 "arith_reg_operand" "r")))
(clobber (reg:SI T_REG))]
"TARGET_SH1"
"#"
- [(set_attr "length" "6")])
-
-(define_split
- [(set (match_operand:DI 0 "arith_reg_dest" "")
- (plus:DI (match_operand:DI 1 "arith_reg_operand" "")
- (match_operand:DI 2 "arith_reg_operand" "")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1 && reload_completed"
+ "&& reload_completed"
[(const_int 0)]
{
rtx high0 = gen_highpart (SImode, operands[0]);
@@ -1454,13 +1734,13 @@
emit_insn (gen_clrt ());
emit_insn (gen_addc (low0, low0, gen_lowpart (SImode, operands[2])));
- emit_insn (gen_addc1 (high0, high0, high2));
+ emit_insn (gen_addc (high0, high0, high2));
DONE;
})
(define_insn "addc"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (plus:SI (plus:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (plus:SI (plus:SI (match_operand:SI 1 "arith_reg_operand" "%0")
(match_operand:SI 2 "arith_reg_operand" "r"))
(reg:SI T_REG)))
(set (reg:SI T_REG)
@@ -1469,16 +1749,76 @@
"addc %2,%0"
[(set_attr "type" "arith")])
-(define_insn "addc1"
+;; A simplified version of the addc insn, where the exact value of the
+;; T bit doesn't matter. This is easier for combine to pick up.
+;; We allow a reg or 0 for one of the operands in order to be able to
+;; do 'reg + T' sequences. Reload will load the constant 0 into the reg
+;; as needed.
+(define_insn "*addc"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (plus:SI (plus:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (match_operand:SI 2 "arith_reg_operand" "r"))
- (reg:SI T_REG)))
+ (plus:SI (plus:SI (match_operand:SI 1 "arith_reg_operand" "%0")
+ (match_operand:SI 2 "arith_reg_or_0_operand" "r"))
+ (match_operand:SI 3 "t_reg_operand" "")))
(clobber (reg:SI T_REG))]
"TARGET_SH1"
"addc %2,%0"
[(set_attr "type" "arith")])
+;; Split 'reg + reg + 1' into a sett addc sequence, as it can be scheduled
+;; better, if the sett insn can be done early.
+(define_insn_and_split "*addc"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (plus:SI (plus:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "arith_reg_operand" ""))
+ (const_int 1)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(set (reg:SI T_REG) (const_int 1))
+ (parallel [(set (match_dup 0) (plus:SI (plus:SI (match_dup 1) (match_dup 2))
+ (reg:SI T_REG)))
+ (clobber (reg:SI T_REG))])])
+
+;; Sometimes combine will try to do 'reg + (0-reg) + 1' if the *addc pattern
+;; matched. Split this up into a simple sub add sequence, as this will save
+;; us one sett insn.
+(define_insn_and_split "*minus_plus_one"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (plus:SI (minus:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "arith_reg_operand" ""))
+ (const_int 1)))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))
+ (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1)))])
+
+;; Split 'reg + T' into 'reg + 0 + T' to utilize the addc insn.
+;; If the 0 constant can be CSE-ed, this becomes a one instruction
+;; operation, as opposed to sequences such as
+;; movt r2
+;; add r2,r3
+;;
+;; Even if the constant is not CSE-ed, a sequence such as
+;; mov #0,r2
+;; addc r2,r3
+;; can be scheduled much better since the load of the constant can be
+;; done earlier, before any comparison insns that store the result in
+;; the T bit.
+(define_insn_and_split "*addc"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (plus:SI (match_operand:SI 1 "t_reg_operand" "")
+ (match_operand:SI 2 "arith_reg_operand" "")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(parallel [(set (match_dup 0)
+ (plus:SI (plus:SI (match_dup 2) (const_int 0))
+ (match_dup 1)))
+ (clobber (reg:SI T_REG))])])
+
(define_expand "addsi3"
[(set (match_operand:SI 0 "arith_reg_operand" "")
(plus:SI (match_operand:SI 1 "arith_operand" "")
@@ -1556,21 +1896,14 @@
[(set_attr "type" "arith_media")
(set_attr "highpart" "ignore")])
-(define_insn "subdi3_compact"
+(define_insn_and_split "subdi3_compact"
[(set (match_operand:DI 0 "arith_reg_dest" "=&r")
(minus:DI (match_operand:DI 1 "arith_reg_operand" "0")
(match_operand:DI 2 "arith_reg_operand" "r")))
(clobber (reg:SI T_REG))]
"TARGET_SH1"
"#"
- [(set_attr "length" "6")])
-
-(define_split
- [(set (match_operand:DI 0 "arith_reg_dest" "")
- (minus:DI (match_operand:DI 1 "arith_reg_operand" "")
- (match_operand:DI 2 "arith_reg_operand" "")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1 && reload_completed"
+ "&& reload_completed"
[(const_int 0)]
{
rtx high0 = gen_highpart (SImode, operands[0]);
@@ -1579,7 +1912,7 @@
emit_insn (gen_clrt ());
emit_insn (gen_subc (low0, low0, gen_lowpart (SImode, operands[2])));
- emit_insn (gen_subc1 (high0, high0, high2));
+ emit_insn (gen_subc (high0, high0, high2));
DONE;
})
@@ -1596,24 +1929,62 @@
"subc %2,%0"
[(set_attr "type" "arith")])
-(define_insn "subc1"
+;; A simplified version of the subc insn, where the exact value of the
+;; T bit doesn't matter. This is easier for combine to pick up.
+;; We allow a reg or 0 for one of the operands in order to be able to
+;; do 'reg - T' sequences. Reload will load the constant 0 into the reg
+;; as needed.
+(define_insn "*subc"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
(minus:SI (minus:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (match_operand:SI 2 "arith_reg_operand" "r"))
- (reg:SI T_REG)))
+ (match_operand:SI 2 "arith_reg_or_0_operand" "r"))
+ (match_operand:SI 3 "t_reg_operand" "")))
(clobber (reg:SI T_REG))]
"TARGET_SH1"
"subc %2,%0"
[(set_attr "type" "arith")])
-;; life_analysis thinks rn is live before subc rn,rn, so make a special
-;; pattern for this case. This helps multimedia applications that compute
-;; the sum of absolute differences.
-(define_insn "mov_neg_si_t"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r") (neg:SI (reg:SI T_REG)))]
+;; Split reg - reg - 1 into a sett subc sequence, as it can be scheduled
+;; better, if the sett insn can be done early.
+;; Notice that combine turns 'a - b - 1' into 'a + (~b)'.
+(define_insn_and_split "*subc"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (plus:SI (not:SI (match_operand:SI 1 "arith_reg_operand" ""))
+ (match_operand:SI 2 "arith_reg_operand" "")))
+ (clobber (reg:SI T_REG))]
"TARGET_SH1"
- "subc %0,%0"
- [(set_attr "type" "arith")])
+ "#"
+ "&& 1"
+ [(set (reg:SI T_REG) (const_int 1))
+ (parallel [(set (match_dup 0)
+ (minus:SI (minus:SI (match_dup 2) (match_dup 1))
+ (reg:SI T_REG)))
+ (clobber (reg:SI T_REG))])])
+
+;; Split 'reg - T' into 'reg - 0 - T' to utilize the subc insn.
+;; If the 0 constant can be CSE-ed, this becomes a one instruction
+;; operation, as opposed to sequences such as
+;; movt r2
+;; sub r2,r3
+;;
+;; Even if the constant is not CSE-ed, a sequence such as
+;; mov #0,r2
+;; subc r2,r3
+;; can be scheduled much better since the load of the constant can be
+;; done earlier, before any comparison insns that store the result in
+;; the T bit.
+(define_insn_and_split "*subc"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (minus:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "t_reg_operand" "")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(parallel [(set (match_dup 0)
+ (minus:SI (minus:SI (match_dup 1) (const_int 0))
+ (match_dup 2)))
+ (clobber (reg:SI T_REG))])])
(define_insn "*subsi3_internal"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
@@ -2264,8 +2635,7 @@
(match_operand:DI 2 "register_operand" "r")]
UNSPEC_DIV_INV_TABLE)))]
"TARGET_SHMEDIA"
- "@
- ldx.ub %1, %2, %0"
+ "ldx.ub %1, %2, %0"
[(set_attr "type" "load_media")
(set_attr "highpart" "user")])
@@ -2276,8 +2646,7 @@
(match_operand:DI 2 "register_operand" "r")]
UNSPEC_DIV_INV_TABLE)))]
"TARGET_SHMEDIA"
- "@
- ldx.w %1, %2, %0"
+ "ldx.w %1, %2, %0"
[(set_attr "type" "load_media")
(set_attr "highpart" "user")])
@@ -2607,19 +2976,33 @@ norm32: r25
label:
sub result, round_scratch, result */
- int likely = TARGET_DIVIDE_INV20L;
-
- if (! likely) output_asm_insn ("muls.l\t%2, %1 , %8", operands);
- output_asm_insn ("muls.l\t%2, %3, %0\;xor\t%12, %5, %7", operands);
- output_asm_insn (likely
- ? "bge/l\t%4, %6, %10\;muls.l\t%2, %1 , %8"
- : "bge/u\t%4, %6, %10", operands);
- output_asm_insn ("shari\t%8, 16, %8\;muls.l\t%8, %2, %8", operands);
- if (! likely) output_asm_insn ("sub\t%0, %7, %0", operands);
- output_asm_insn ("shari\t%3, 14, %9\;shari\t%8, 30, %8", operands);
- return (likely
- ? "muls.l\t%8, %9, %8\;sub\t%0, %8, %0\n%11:\tadd\t%0, %7, %0"
- : "muls.l\t%8, %9, %7\n%11:\tsub\t%0, %7, %0");
+ const bool likely = TARGET_DIVIDE_INV20L;
+ if (likely)
+ return
+ "muls.l %2, %3, %0" "\n"
+ " xor %12, %5, %7" "\n"
+ " bge/l %4, %6, %10" "\n"
+ " muls.l %2, %1, %8" "\n"
+ " shari %8, 16, %8" "\n"
+ " muls.l %8, %2, %8" "\n"
+ " shari %3, 14, %9" "\n"
+ " shari %8, 30, %8" "\n"
+ " muls.l %8, %9, %8" "\n"
+ " sub %0, %8, %0" "\n"
+ "%11: add %0, %7, %0";
+ else
+ return
+ "muls.l %2, %1, %8" "\n"
+ " muls.l %2, %3, %0" "\n"
+ " xor %12, %5, %7" "\n"
+ " bge/u %4, %6, %10" "\n"
+ " shari %8, 16, %8" "\n"
+ " muls.l %8, %2, %8" "\n"
+ " sub %0, %7, %0" "\n"
+ " shari %3, 14, %9" "\n"
+ " shari %8, 30, %8" "\n"
+ " muls.l %8, %9, %7" "\n"
+ "%11: sub %0, %7, %0";
})
(define_insn_and_split "divsi_inv_fp"
@@ -2861,9 +3244,9 @@ label:
[(set_attr "type" "dmpy")])
(define_expand "mulsidi3"
- [(set (match_operand:DI 0 "arith_reg_operand" "=r")
- (mult:DI (sign_extend:DI (match_operand:SI 1 "arith_reg_operand" "r"))
- (sign_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))]
+ [(set (match_operand:DI 0 "arith_reg_dest" "")
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "arith_reg_operand" ""))
+ (sign_extend:DI (match_operand:SI 2 "arith_reg_operand" ""))))]
"TARGET_SH2 || TARGET_SHMEDIA"
{
if (TARGET_SH2)
@@ -2882,7 +3265,7 @@ label:
[(set_attr "type" "dmpy_media")
(set_attr "highpart" "ignore")])
-(define_insn "mulsidi3_compact"
+(define_insn_and_split "mulsidi3_compact"
[(set (match_operand:DI 0 "arith_reg_dest" "=r")
(mult:DI
(sign_extend:DI (match_operand:SI 1 "arith_reg_operand" "r"))
@@ -2890,16 +3273,8 @@ label:
(clobber (reg:SI MACH_REG))
(clobber (reg:SI MACL_REG))]
"TARGET_SH2"
- "#")
-
-(define_split
- [(set (match_operand:DI 0 "arith_reg_dest" "")
- (mult:DI
- (sign_extend:DI (match_operand:SI 1 "arith_reg_operand" ""))
- (sign_extend:DI (match_operand:SI 2 "arith_reg_operand" ""))))
- (clobber (reg:SI MACH_REG))
- (clobber (reg:SI MACL_REG))]
- "TARGET_SH2"
+ "#"
+ "&& 1"
[(const_int 0)]
{
rtx low_dst = gen_lowpart (SImode, operands[0]);
@@ -2930,9 +3305,9 @@ label:
[(set_attr "type" "dmpy")])
(define_expand "umulsidi3"
- [(set (match_operand:DI 0 "arith_reg_operand" "=r")
- (mult:DI (zero_extend:DI (match_operand:SI 1 "arith_reg_operand" "r"))
- (zero_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))]
+ [(set (match_operand:DI 0 "arith_reg_dest" "")
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "arith_reg_operand" ""))
+ (zero_extend:DI (match_operand:SI 2 "arith_reg_operand" ""))))]
"TARGET_SH2 || TARGET_SHMEDIA"
{
if (TARGET_SH2)
@@ -2951,7 +3326,7 @@ label:
[(set_attr "type" "dmpy_media")
(set_attr "highpart" "ignore")])
-(define_insn "umulsidi3_compact"
+(define_insn_and_split "umulsidi3_compact"
[(set (match_operand:DI 0 "arith_reg_dest" "=r")
(mult:DI
(zero_extend:DI (match_operand:SI 1 "arith_reg_operand" "r"))
@@ -2959,15 +3334,8 @@ label:
(clobber (reg:SI MACH_REG))
(clobber (reg:SI MACL_REG))]
"TARGET_SH2"
- "#")
-
-(define_split
- [(set (match_operand:DI 0 "arith_reg_dest" "")
- (mult:DI (zero_extend:DI (match_operand:SI 1 "arith_reg_operand" ""))
- (zero_extend:DI (match_operand:SI 2 "arith_reg_operand" ""))))
- (clobber (reg:SI MACH_REG))
- (clobber (reg:SI MACL_REG))]
- "TARGET_SH2"
+ "#"
+ "&& 1"
[(const_int 0)]
{
rtx low_dst = gen_lowpart (SImode, operands[0]);
@@ -3113,12 +3481,55 @@ label:
;; Logical operations
;; -------------------------------------------------------------------------
-(define_insn "*andsi3_compact"
- [(set (match_operand:SI 0 "arith_reg_dest" "=z,r")
- (and:SI (match_operand:SI 1 "arith_reg_operand" "%0,0")
- (match_operand:SI 2 "logical_operand" "K08,r")))]
+(define_expand "andsi3"
+ [(set (match_operand:SI 0 "arith_reg_operand" "")
+ (and:SI (match_operand:SI 1 "logical_reg_operand" "")
+ (match_operand:SI 2 "logical_and_operand" "")))]
+ ""
+{
+ /* If it is possible to turn the and insn into a zero extension
+ already, redundant zero extensions will be folded, which results
+ in better code.
+ Ideally the splitter of *andsi_compact would be enough, if reundant
+ zero extensions were detected after the combine pass, which does not
+ happen at the moment. */
+ if (TARGET_SH1)
+ {
+ if (satisfies_constraint_Jmb (operands[2]))
+ {
+ emit_insn (gen_zero_extendqisi2 (operands[0],
+ gen_lowpart (QImode, operands[1])));
+ DONE;
+ }
+ else if (satisfies_constraint_Jmw (operands[2]))
+ {
+ emit_insn (gen_zero_extendhisi2 (operands[0],
+ gen_lowpart (HImode, operands[1])));
+ DONE;
+ }
+ }
+})
+
+(define_insn_and_split "*andsi_compact"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r,r,z,r")
+ (and:SI (match_operand:SI 1 "arith_reg_operand" "%r,r,0,0")
+ (match_operand:SI 2 "logical_and_operand" "Jmb,Jmw,K08,r")))]
"TARGET_SH1"
- "and %2,%0"
+ "@
+ extu.b %1,%0
+ extu.w %1,%0
+ and %2,%0
+ and %2,%0"
+ "&& 1"
+ [(set (match_dup 0) (zero_extend:SI (match_dup 1)))]
+{
+ if (satisfies_constraint_Jmb (operands[2]))
+ operands[1] = gen_lowpart (QImode, operands[1]);
+ else if (satisfies_constraint_Jmw (operands[2]))
+ operands[1] = gen_lowpart (HImode, operands[1]);
+ else
+ FAIL;
+}
[(set_attr "type" "arith")])
(define_insn "*andsi3_media"
@@ -3136,27 +3547,9 @@ label:
(and:SI (match_operand:SI 1 "arith_reg_operand" "%0")
(match_operand:SI 2 "const_int_operand" "Psz")))]
"TARGET_SH2A && satisfies_constraint_Psz (operands[2])"
- "bclr\\t%W2,%0"
+ "bclr %W2,%0"
[(set_attr "type" "arith")])
-;; If the constant is 255, then emit an extu.b instruction instead of an
-;; and, since that will give better code.
-
-(define_expand "andsi3"
- [(set (match_operand:SI 0 "arith_reg_operand" "")
- (and:SI (match_operand:SI 1 "logical_reg_operand" "")
- (match_operand:SI 2 "logical_operand" "")))]
- ""
-{
- if (TARGET_SH1
- && CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 255)
- {
- emit_insn (gen_zero_extendqisi2 (operands[0],
- gen_lowpart (QImode, operands[1])));
- DONE;
- }
-})
-
(define_insn_and_split "anddi3"
[(set (match_operand:DI 0 "arith_reg_dest" "=r,r,r")
(and:DI (match_operand:DI 1 "arith_reg_operand" "%r,r,r")
@@ -3225,7 +3618,7 @@ label:
(ior:SI (match_operand:SI 1 "arith_reg_operand" "%0")
(match_operand:SI 2 "const_int_operand" "Pso")))]
"TARGET_SH2A && satisfies_constraint_Pso (operands[2])"
- "bset\\t%V2,%0"
+ "bset %V2,%0"
[(set_attr "type" "arith")])
(define_insn "iordi3"
@@ -3341,11 +3734,14 @@ label:
;; -------------------------------------------------------------------------
(define_expand "rotldi3"
- [(set (match_operand:DI 0 "arith_reg_dest" "=r")
- (rotate:DI (match_operand:DI 1 "arith_reg_operand" "r")
- (match_operand:HI 2 "mextr_bit_offset" "i")))]
+ [(set (match_operand:DI 0 "arith_reg_dest" "")
+ (rotate:DI (match_operand:DI 1 "arith_reg_operand" "")
+ (match_operand:HI 2 "mextr_bit_offset" "")))]
"TARGET_SHMEDIA"
- "if (! mextr_bit_offset (operands[2], HImode)) FAIL;")
+{
+ if (! mextr_bit_offset (operands[2], HImode))
+ FAIL;
+})
(define_insn "rotldi3_mextr"
[(set (match_operand:DI 0 "arith_reg_dest" "=r")
@@ -3354,17 +3750,16 @@ label:
"TARGET_SHMEDIA"
{
static char templ[16];
-
- sprintf (templ, "mextr%d\\t%%1,%%1,%%0",
+ sprintf (templ, "mextr%d %%1,%%1,%%0",
8 - (int) (INTVAL (operands[2]) >> 3));
return templ;
}
[(set_attr "type" "arith_media")])
(define_expand "rotrdi3"
- [(set (match_operand:DI 0 "arith_reg_dest" "=r")
- (rotatert:DI (match_operand:DI 1 "arith_reg_operand" "r")
- (match_operand:HI 2 "mextr_bit_offset" "i")))]
+ [(set (match_operand:DI 0 "arith_reg_dest" "")
+ (rotatert:DI (match_operand:DI 1 "arith_reg_operand" "")
+ (match_operand:HI 2 "mextr_bit_offset" "")))]
"TARGET_SHMEDIA"
{
if (! mextr_bit_offset (operands[2], HImode))
@@ -3378,8 +3773,7 @@ label:
"TARGET_SHMEDIA"
{
static char templ[16];
-
- sprintf (templ, "mextr%d\\t%%1,%%1,%%0", (int) INTVAL (operands[2]) >> 3);
+ sprintf (templ, "mextr%d %%1,%%1,%%0", (int) INTVAL (operands[2]) >> 3);
return templ;
}
[(set_attr "type" "arith_media")])
@@ -3500,93 +3894,107 @@ label:
FAIL;
})
-;;
-;; shift left
-
-;; This pattern is used by init_expmed for computing the costs of shift
-;; insns.
-
-(define_insn_and_split "ashlsi3_std"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r,r,r,r")
- (ashift:SI (match_operand:SI 1 "arith_reg_operand" "0,0,0,0")
- (match_operand:SI 2 "nonmemory_operand" "r,M,P27,?ri")))
- (clobber (match_scratch:SI 3 "=X,X,X,&r"))]
- "(TARGET_SH3 || TARGET_SH2A)
- || (TARGET_SH1 && satisfies_constraint_P27 (operands[2]))"
- "@
- shld %2,%0
- add %0,%0
- shll%O2 %0
- #"
- "(TARGET_SH3 || TARGET_SH2A)
- && reload_completed
- && CONST_INT_P (operands[2])
- && ! satisfies_constraint_P27 (operands[2])"
- [(set (match_dup 3) (match_dup 2))
- (parallel
- [(set (match_dup 0) (ashift:SI (match_dup 1) (match_dup 3)))
- (clobber (match_dup 4))])]
-{
- operands[4] = gen_rtx_SCRATCH (SImode);
-}
- [(set_attr "length" "*,*,*,4")
- (set_attr "type" "dyn_shift,arith,arith,arith")])
-
-(define_insn "ashlhi3_k"
- [(set (match_operand:HI 0 "arith_reg_dest" "=r,r")
- (ashift:HI (match_operand:HI 1 "arith_reg_operand" "0,0")
- (match_operand:HI 2 "const_int_operand" "M,P27")))]
- "TARGET_SH1 && satisfies_constraint_P27 (operands[2])"
- "@
- add %0,%0
- shll%O2 %0"
+;; The rotcr insn is used primarily in DImode right shifts (arithmetic
+;; and logical). It can also be used to implement things like
+;; bool t = a == b;
+;; int x = (y >> 1) | (t << 31);
+(define_insn "rotcr"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (ior:SI (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (const_int 1))
+ (ashift:SI (match_operand:SI 2 "t_reg_operand")
+ (const_int 31))))
+ (set (reg:SI T_REG)
+ (and:SI (match_dup 1) (const_int 1)))]
+ "TARGET_SH1"
+ "rotcr %0"
[(set_attr "type" "arith")])
-(define_insn "ashlsi3_n"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (ashift:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (match_operand:SI 2 "const_int_operand" "n")))
+;; Simplified rotcr version for combine, which allows arbitrary shift
+;; amounts for the reg. If the shift amount is '1' rotcr can be used
+;; directly. Otherwise we have to insert a shift in between.
+(define_insn_and_split "*rotcr"
+ [(set (match_operand:SI 0 "arith_reg_dest")
+ (ior:SI (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand")
+ (match_operand:SI 2 "const_int_operand"))
+ (ashift:SI (match_operand:SI 3 "t_reg_operand")
+ (const_int 31))))
(clobber (reg:SI T_REG))]
- "TARGET_SH1 && ! sh_dynamicalize_shift_p (operands[2])"
+ "TARGET_SH1"
"#"
- [(set (attr "length")
- (cond [(match_test "shift_insns_rtx (insn)")
- (const_string "2")
- (eq (symbol_ref "shift_insns_rtx (insn)") (const_int 2))
- (const_string "4")
- (eq (symbol_ref "shift_insns_rtx (insn)") (const_int 3))
- (const_string "6")]
- (const_string "8")))
- (set_attr "type" "arith")])
-
-(define_split
- [(set (match_operand:SI 0 "arith_reg_dest" "")
- (ashift:SI (match_operand:SI 1 "arith_reg_operand" "")
- (match_operand:SI 2 "const_int_operand" "")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1 && reload_completed"
- [(use (reg:SI R0_REG))]
+ "&& can_create_pseudo_p ()"
+ [(const_int 0)]
{
- gen_shifty_op (ASHIFT, operands);
+ if (INTVAL (operands[2]) > 1)
+ {
+ /* use plus_constant function ?? */
+ const int shift_count = INTVAL (operands[2]) - 1;
+ const rtx shift_count_rtx = GEN_INT (shift_count);
+ rtx shift_res = gen_reg_rtx (SImode);
+
+ rtx prev_set_t_insn = NULL_RTX;
+ rtx tmp_t_reg = NULL_RTX;
+
+ /* If we're going to emit a shift sequence that clobbers the T_REG,
+ try to find the previous insn that sets the T_REG and emit the
+ shift insn before that insn, to remove the T_REG dependency.
+ If the insn that sets the T_REG cannot be found, store the T_REG
+ in a temporary reg and restore it after the shift. */
+ if (sh_lshrsi_clobbers_t_reg_p (shift_count_rtx)
+ && ! sh_dynamicalize_shift_p (shift_count_rtx))
+ {
+ prev_set_t_insn = prev_nonnote_insn_bb (curr_insn);
+ if (! (prev_set_t_insn != NULL_RTX
+ && reg_set_p (get_t_reg_rtx (), prev_set_t_insn)
+ && ! reg_referenced_p (get_t_reg_rtx (),
+ PATTERN (prev_set_t_insn))))
+ {
+ prev_set_t_insn = NULL_RTX;
+ tmp_t_reg = gen_reg_rtx (SImode);
+ emit_insn (gen_move_insn (tmp_t_reg, get_t_reg_rtx ()));
+ }
+ }
+
+ rtx shift_rtx = gen_lshrsi3 (shift_res, operands[1], shift_count_rtx);
+ operands[1] = shift_res;
+
+ /* Emit the shift insn before the insn that sets T_REG, if possible. */
+ if (prev_set_t_insn != NULL_RTX)
+ emit_insn_before (shift_rtx, prev_set_t_insn);
+ else
+ emit_insn (shift_rtx);
+
+ /* Restore T_REG if it has been saved before. */
+ if (tmp_t_reg != NULL_RTX)
+ emit_insn (gen_cmpgtsi_t (tmp_t_reg, const0_rtx));
+ }
+
+ emit_insn (gen_rotcr (operands[0], operands[1], operands[3]));
DONE;
})
-(define_insn "ashlsi3_media"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
- (ashift:SI (match_operand:SI 1 "extend_reg_operand" "r,r")
- (match_operand:SI 2 "shift_count_operand" "r,n")))]
- "TARGET_SHMEDIA"
- "@
- shlld.l %1, %2, %0
- shlli.l %1, %2, %0"
- [(set_attr "type" "arith_media")
- (set_attr "highpart" "ignore")])
+;; rotcr combine bridge pattern which will make combine try out more
+;; complex patterns.
+(define_insn_and_split "*rotcr"
+ [(set (match_operand:SI 0 "arith_reg_dest")
+ (ashift:SI (match_operand:SI 1 "t_reg_operand") (const_int 31)))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(set (match_dup 0) (match_dup 1))
+ (parallel [(set (match_dup 0)
+ (ior:SI (lshiftrt:SI (match_dup 0) (const_int 1))
+ (ashift:SI (match_dup 1) (const_int 31))))
+ (set (reg:SI T_REG)
+ (and:SI (match_dup 0) (const_int 1)))])])
+
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; SImode shift left
(define_expand "ashlsi3"
- [(parallel [(set (match_operand:SI 0 "arith_reg_operand" "")
- (ashift:SI (match_operand:SI 1 "arith_reg_operand" "")
- (match_operand:SI 2 "nonmemory_operand" "")))
- (clobber (reg:SI T_REG))])]
+ [(set (match_operand:SI 0 "arith_reg_operand" "")
+ (ashift:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "shift_count_operand" "")))]
""
{
if (TARGET_SHMEDIA)
@@ -3594,138 +4002,121 @@ label:
emit_insn (gen_ashlsi3_media (operands[0], operands[1], operands[2]));
DONE;
}
+ if (TARGET_DYNSHIFT
+ && CONST_INT_P (operands[2]) && sh_dynamicalize_shift_p (operands[2]))
+ operands[2] = force_reg (SImode, operands[2]);
+
+ /* If the ashlsi3_* insn is going to clobber the T_REG it must be
+ expanded here. */
if (CONST_INT_P (operands[2])
- && sh_dynamicalize_shift_p (operands[2]))
- operands[2] = force_reg (SImode, operands[2]);
- if (TARGET_SH3 || TARGET_SH2A)
+ && sh_ashlsi_clobbers_t_reg_p (operands[2])
+ && ! sh_dynamicalize_shift_p (operands[2]))
{
- emit_insn (gen_ashlsi3_std (operands[0], operands[1], operands[2]));
+ emit_insn (gen_ashlsi3_n_clobbers_t (operands[0], operands[1],
+ operands[2]));
DONE;
}
- if (! immediate_operand (operands[2], GET_MODE (operands[2])))
- FAIL;
})
-(define_insn "*ashlhi3_n"
- [(set (match_operand:HI 0 "arith_reg_dest" "=r")
- (ashift:HI (match_operand:HI 1 "arith_reg_operand" "0")
- (match_operand:HI 2 "const_int_operand" "n")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1"
- "#"
- [(set (attr "length")
- (cond [(match_test "shift_insns_rtx (insn)")
- (const_string "2")
- (eq (symbol_ref "shift_insns_rtx (insn)") (const_int 2))
- (const_string "4")]
- (const_string "6")))
- (set_attr "type" "arith")])
-
-(define_expand "ashlhi3"
- [(parallel [(set (match_operand:HI 0 "arith_reg_operand" "")
- (ashift:HI (match_operand:HI 1 "arith_reg_operand" "")
- (match_operand:SI 2 "nonmemory_operand" "")))
- (clobber (reg:SI T_REG))])]
+(define_insn "ashlsi3_k"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
+ (ashift:SI (match_operand:SI 1 "arith_reg_operand" "0,0")
+ (match_operand:SI 2 "p27_shift_count_operand" "M,P27")))]
"TARGET_SH1"
-{
- if (!CONST_INT_P (operands[2]))
- FAIL;
- /* It may be possible to call gen_ashlhi3 directly with more generic
- operands. Make sure operands[1] is a HImode register here. */
- if (!arith_reg_operand (operands[1], HImode))
- operands[1] = copy_to_mode_reg (HImode, operands[1]);
-})
-
-(define_split
- [(set (match_operand:HI 0 "arith_reg_dest" "")
- (ashift:HI (match_operand:HI 1 "arith_reg_operand" "")
- (match_operand:HI 2 "const_int_operand" "")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1 && reload_completed"
- [(use (reg:SI R0_REG))]
-{
- gen_shifty_hi_op (ASHIFT, operands);
- DONE;
-})
-
-;;
-;; arithmetic shift right
-;;
-
-(define_insn "ashrsi3_k"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (match_operand:SI 2 "const_int_operand" "M")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1 && INTVAL (operands[2]) == 1"
- "shar %0"
+ "@
+ add %0,%0
+ shll%O2 %0"
[(set_attr "type" "arith")])
-;; We can't do HImode right shifts correctly unless we start out with an
-;; explicit zero / sign extension; doing that would result in worse overall
-;; code, so just let the machine independent code widen the mode.
-;; That's why we don't have ashrhi3_k / lshrhi3_k / lshrhi3_m / lshrhi3 .
-
-
-;; ??? This should be a define expand.
-
-(define_insn "ashrsi2_16"
+(define_insn_and_split "ashlsi3_d"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "r")
- (const_int 16)))]
- "TARGET_SH1"
- "#"
- [(set_attr "length" "4")])
-
-(define_split
- [(set (match_operand:SI 0 "arith_reg_dest" "")
- (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
- (const_int 16)))]
- "TARGET_SH1"
- [(set (match_dup 0) (rotate:SI (match_dup 1) (const_int 16)))
- (set (match_dup 0) (sign_extend:SI (match_dup 2)))]
+ (ashift:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (match_operand:SI 2 "shift_count_operand" "r")))]
+ "TARGET_DYNSHIFT"
+ "shld %2,%0"
+ "&& CONST_INT_P (operands[2]) && ! sh_dynamicalize_shift_p (operands[2])
+ && ! sh_ashlsi_clobbers_t_reg_p (operands[2])"
+ [(const_int 0)]
{
- operands[2] = gen_lowpart (HImode, operands[0]);
-})
+ if (satisfies_constraint_P27 (operands[2]))
+ {
+ emit_insn (gen_ashlsi3_k (operands[0], operands[1], operands[2]));
+ DONE;
+ }
+ else if (! satisfies_constraint_P27 (operands[2]))
+ {
+ /* This must happen before reload, otherwise the constant will be moved
+ into a register due to the "r" constraint, after which this split
+ cannot be done anymore.
+ Unfortunately the move insn will not always be eliminated.
+ Also, here we must not create a shift sequence that clobbers the
+ T_REG. */
+ emit_move_insn (operands[0], operands[1]);
+ gen_shifty_op (ASHIFT, operands);
+ DONE;
+ }
-;; ??? This should be a define expand.
+ FAIL;
+}
+ [(set_attr "type" "dyn_shift")])
-(define_insn "ashrsi2_31"
+(define_insn_and_split "ashlsi3_n"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (const_int 31)))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1"
+ (ashift:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (match_operand:SI 2 "not_p27_shift_count_operand" "")))]
+ "TARGET_SH1 && ! sh_ashlsi_clobbers_t_reg_p (operands[2])"
"#"
- [(set_attr "length" "4")])
-
-(define_split
- [(set (match_operand:SI 0 "arith_reg_dest" "")
- (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
- (const_int 31)))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1"
+ "&& (reload_completed
+ || (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ()))"
[(const_int 0)]
{
- emit_insn (gen_ashlsi_c (operands[0], operands[1]));
- emit_insn (gen_mov_neg_si_t (copy_rtx (operands[0])));
+ if (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ())
+ {
+ /* If this pattern was picked and dynamic shifts are supported, switch
+ to dynamic shift pattern before reload. */
+ operands[2] = force_reg (SImode, operands[2]);
+ emit_insn (gen_ashlsi3_d (operands[0], operands[1], operands[2]));
+ }
+ else
+ gen_shifty_op (ASHIFT, operands);
+
DONE;
})
-(define_peephole2
- [(set (match_operand:SI 0 "arith_reg_dest" "") (const_int 0))
- (set (reg:SI T_REG)
- (gt:SI (match_dup 0) (match_operand:SI 1 "arith_reg_operand" "")))]
- "TARGET_SH1
- && peep2_reg_dead_p (2, operands[0])
- && peep2_reg_dead_p (2, operands[1])"
+(define_insn_and_split "ashlsi3_n_clobbers_t"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (ashift:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (match_operand:SI 2 "not_p27_shift_count_operand" "")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1 && sh_ashlsi_clobbers_t_reg_p (operands[2])"
+ "#"
+ "&& (reload_completed || INTVAL (operands[2]) == 31
+ || (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ()))"
[(const_int 0)]
{
- emit_insn (gen_ashlsi_c (operands[1], operands[1]));
+ if (INTVAL (operands[2]) == 31)
+ {
+ /* If the shift amount is 31 we split into a different sequence before
+ reload so that it gets a chance to allocate R0 for the sequence.
+ If it fails to do so (due to pressure on R0), it will take one insn
+ more for the and. */
+ emit_insn (gen_andsi3 (operands[0], operands[1], const1_rtx));
+ emit_insn (gen_rotlsi3_31 (operands[0], operands[0]));
+ }
+ else if (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ())
+ {
+ /* If this pattern was picked and dynamic shifts are supported, switch
+ to dynamic shift pattern before reload. */
+ operands[2] = force_reg (SImode, operands[2]);
+ emit_insn (gen_ashlsi3_d (operands[0], operands[1], operands[2]));
+ }
+ else
+ gen_shifty_op (ASHIFT, operands);
+
DONE;
})
-(define_insn "ashlsi_c"
+(define_insn "shll"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
(ashift:SI (match_operand:SI 1 "arith_reg_operand" "0") (const_int 1)))
(set (reg:SI T_REG)
@@ -3742,166 +4133,102 @@ label:
"shll %0"
[(set_attr "type" "arith")])
-(define_insn "ashrsi3_d"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (neg:SI (match_operand:SI 2 "arith_reg_operand" "r"))))]
- "TARGET_SH3 || TARGET_SH2A"
- "shad %2,%0"
- [(set_attr "type" "dyn_shift")])
-
-(define_insn "ashrsi3_n"
- [(set (reg:SI R4_REG)
- (ashiftrt:SI (reg:SI R4_REG)
- (match_operand:SI 0 "const_int_operand" "i")))
- (clobber (reg:SI T_REG))
- (clobber (reg:SI PR_REG))
- (use (match_operand:SI 1 "arith_reg_operand" "r"))]
- "TARGET_SH1"
- "jsr @%1%#"
- [(set_attr "type" "sfunc")
- (set_attr "needs_delay_slot" "yes")])
+(define_peephole2
+ [(set (match_operand:SI 0 "arith_reg_dest" "") (const_int 0))
+ (set (reg:SI T_REG)
+ (gt:SI (match_dup 0) (match_operand:SI 1 "arith_reg_operand" "")))]
+ "TARGET_SH1
+ && peep2_reg_dead_p (2, operands[0])
+ && peep2_reg_dead_p (2, operands[1])"
+ [(const_int 0)]
+{
+ emit_insn (gen_shll (operands[1], operands[1]));
+ DONE;
+})
-(define_insn "ashrsi3_media"
+(define_insn "ashlsi3_media"
[(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
- (ashiftrt:SI (match_operand:SI 1 "extend_reg_operand" "r,r")
- (match_operand:SI 2 "shift_count_operand" "r,n")))]
+ (ashift:SI (match_operand:SI 1 "extend_reg_operand" "r,r")
+ (match_operand:SI 2 "shift_count_operand" "r,n")))]
"TARGET_SHMEDIA"
"@
- shard.l %1, %2, %0
- shari.l %1, %2, %0"
+ shlld.l %1, %2, %0
+ shlli.l %1, %2, %0"
[(set_attr "type" "arith_media")
(set_attr "highpart" "ignore")])
-(define_expand "ashrsi3"
- [(parallel [(set (match_operand:SI 0 "arith_reg_operand" "")
- (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
- (match_operand:SI 2 "nonmemory_operand" "")))
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; HImode shift left
+
+(define_expand "ashlhi3"
+ [(parallel [(set (match_operand:HI 0 "arith_reg_operand" "")
+ (ashift:HI (match_operand:HI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "nonmemory_operand" "")))
(clobber (reg:SI T_REG))])]
- ""
+ "TARGET_SH1"
{
- if (TARGET_SHMEDIA)
- {
- emit_insn (gen_ashrsi3_media (operands[0], operands[1], operands[2]));
- DONE;
- }
- if (expand_ashiftrt (operands))
- DONE;
- else
+ if (!CONST_INT_P (operands[2]))
FAIL;
+ /* It may be possible to call gen_ashlhi3 directly with more generic
+ operands. Make sure operands[1] is a HImode register here. */
+ if (!arith_reg_operand (operands[1], HImode))
+ operands[1] = copy_to_mode_reg (HImode, operands[1]);
})
-;; logical shift right
-
-(define_insn "lshrsi3_d"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (neg:SI (match_operand:SI 2 "arith_reg_operand" "r"))))]
- "TARGET_SH3 || TARGET_SH2A"
- "shld %2,%0"
- [(set_attr "type" "dyn_shift")])
-
-;; Only the single bit shift clobbers the T bit.
-
-(define_insn "lshrsi3_m"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (match_operand:SI 2 "const_int_operand" "M")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1 && satisfies_constraint_M (operands[2])"
- "shlr %0"
- [(set_attr "type" "arith")])
-
-(define_insn "lshrsi3_k"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (match_operand:SI 2 "const_int_operand" "P27")))]
- "TARGET_SH1 && satisfies_constraint_P27 (operands[2])
- && ! satisfies_constraint_M (operands[2])"
- "shlr%O2 %0"
+(define_insn "ashlhi3_k"
+ [(set (match_operand:HI 0 "arith_reg_dest" "=r,r")
+ (ashift:HI (match_operand:HI 1 "arith_reg_operand" "0,0")
+ (match_operand:HI 2 "const_int_operand" "M,P27")))]
+ "TARGET_SH1 && satisfies_constraint_P27 (operands[2])"
+ "@
+ add %0,%0
+ shll%O2 %0"
[(set_attr "type" "arith")])
-(define_insn "lshrsi3_n"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
- (match_operand:SI 2 "const_int_operand" "n")))
+(define_insn_and_split "*ashlhi3_n"
+ [(set (match_operand:HI 0 "arith_reg_dest" "=r")
+ (ashift:HI (match_operand:HI 1 "arith_reg_operand" "0")
+ (match_operand:HI 2 "const_int_operand" "n")))
(clobber (reg:SI T_REG))]
- "TARGET_SH1 && ! sh_dynamicalize_shift_p (operands[2])"
+ "TARGET_SH1"
"#"
- [(set (attr "length")
- (cond [(match_test "shift_insns_rtx (insn)")
- (const_string "2")
- (eq (symbol_ref "shift_insns_rtx (insn)") (const_int 2))
- (const_string "4")
- (eq (symbol_ref "shift_insns_rtx (insn)") (const_int 3))
- (const_string "6")]
- (const_string "8")))
- (set_attr "type" "arith")])
-
-(define_split
- [(set (match_operand:SI 0 "arith_reg_dest" "")
- (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
- (match_operand:SI 2 "const_int_operand" "")))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1 && reload_completed"
+ "&& reload_completed"
[(use (reg:SI R0_REG))]
{
- gen_shifty_op (LSHIFTRT, operands);
+ gen_shifty_hi_op (ASHIFT, operands);
DONE;
})
-(define_insn "lshrsi3_media"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
- (lshiftrt:SI (match_operand:SI 1 "extend_reg_operand" "r,r")
- (match_operand:SI 2 "shift_count_operand" "r,n")))]
- "TARGET_SHMEDIA"
- "@
- shlrd.l %1, %2, %0
- shlri.l %1, %2, %0"
- [(set_attr "type" "arith_media")
- (set_attr "highpart" "ignore")])
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; DImode shift left
-(define_expand "lshrsi3"
- [(parallel [(set (match_operand:SI 0 "arith_reg_dest" "")
- (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
- (match_operand:SI 2 "nonmemory_operand" "")))
+(define_expand "ashldi3"
+ [(parallel [(set (match_operand:DI 0 "arith_reg_operand" "")
+ (ashift:DI (match_operand:DI 1 "arith_reg_operand" "")
+ (match_operand:DI 2 "immediate_operand" "")))
(clobber (reg:SI T_REG))])]
""
{
if (TARGET_SHMEDIA)
{
- emit_insn (gen_lshrsi3_media (operands[0], operands[1], operands[2]));
+ emit_insn (gen_ashldi3_media (operands[0], operands[1], operands[2]));
DONE;
}
- if (CONST_INT_P (operands[2])
- && sh_dynamicalize_shift_p (operands[2]))
- operands[2] = force_reg (SImode, operands[2]);
- if ((TARGET_SH3 || TARGET_SH2A)
- && arith_reg_operand (operands[2], GET_MODE (operands[2])))
- {
- rtx count = copy_to_mode_reg (SImode, operands[2]);
- emit_insn (gen_negsi2 (count, count));
- emit_insn (gen_lshrsi3_d (operands[0], operands[1], count));
+ if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1)
+ {
+ emit_insn (gen_ashldi3_k (operands[0], operands[1]));
+ DONE;
+ }
+ else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) < 32)
+ {
+ emit_insn (gen_ashldi3_std (operands[0], operands[1], operands[2]));
DONE;
}
- if (! immediate_operand (operands[2], GET_MODE (operands[2])))
+ else
FAIL;
})
-;; ??? This should be a define expand.
-
-(define_insn "ashldi3_k"
- [(set (match_operand:DI 0 "arith_reg_dest" "=r")
- (ashift:DI (match_operand:DI 1 "arith_reg_operand" "0")
- (const_int 1)))
- (clobber (reg:SI T_REG))]
- "TARGET_SH1"
- "shll %R0\;rotcl %S0"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
-
;; Expander for DImode shift left with SImode operations.
-
(define_expand "ashldi3_std"
[(set (match_operand:DI 0 "arith_reg_dest" "=r")
(ashift:DI (match_operand:DI 1 "arith_reg_operand" "r")
@@ -3924,6 +4251,17 @@ label:
DONE;
})
+;; This should be an define_insn_and_split.
+(define_insn "ashldi3_k"
+ [(set (match_operand:DI 0 "arith_reg_dest" "=r")
+ (ashift:DI (match_operand:DI 1 "arith_reg_operand" "0")
+ (const_int 1)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "shll %R0\;rotcl %S0"
+ [(set_attr "length" "4")
+ (set_attr "type" "arith")])
+
(define_insn "ashldi3_media"
[(set (match_operand:DI 0 "arith_reg_dest" "=r,r")
(ashift:DI (match_operand:DI 1 "arith_reg_operand" "r,r")
@@ -3943,92 +4281,145 @@ label:
[(set_attr "type" "arith_media")
(set_attr "highpart" "ignore")])
-(define_expand "ashldi3"
- [(parallel [(set (match_operand:DI 0 "arith_reg_operand" "")
- (ashift:DI (match_operand:DI 1 "arith_reg_operand" "")
- (match_operand:DI 2 "immediate_operand" "")))
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; SImode arithmetic shift right
+;;
+;; We can't do HImode right shifts correctly unless we start out with an
+;; explicit zero / sign extension; doing that would result in worse overall
+;; code, so just let the machine independent code widen the mode.
+;; That's why we don't have ashrhi3_k / lshrhi3_k / lshrhi3_m / lshrhi3 .
+
+(define_expand "ashrsi3"
+ [(parallel [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "nonmemory_operand" "")))
(clobber (reg:SI T_REG))])]
""
{
if (TARGET_SHMEDIA)
{
- emit_insn (gen_ashldi3_media (operands[0], operands[1], operands[2]));
- DONE;
- }
- if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1)
- {
- emit_insn (gen_ashldi3_k (operands[0], operands[1]));
- DONE;
- }
- else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) < 32)
- {
- emit_insn (gen_ashldi3_std (operands[0], operands[1], operands[2]));
+ emit_insn (gen_ashrsi3_media (operands[0], operands[1], operands[2]));
DONE;
}
+ if (expand_ashiftrt (operands))
+ DONE;
else
FAIL;
})
-;; ??? This should be a define expand.
-
-(define_insn "lshrdi3_k"
- [(set (match_operand:DI 0 "arith_reg_dest" "=r")
- (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "0")
+(define_insn "shar"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
(const_int 1)))
+ (set (reg:SI T_REG)
+ (and:SI (match_dup 1) (const_int 1)))]
+ "TARGET_SH1"
+ "shar %0"
+ [(set_attr "type" "arith")])
+
+(define_insn "ashrsi3_k"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (match_operand:SI 2 "const_int_operand" "M")))
(clobber (reg:SI T_REG))]
+ "TARGET_SH1 && INTVAL (operands[2]) == 1"
+ "shar %0"
+ [(set_attr "type" "arith")])
+
+(define_insn_and_split "ashrsi2_16"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "r")
+ (const_int 16)))]
"TARGET_SH1"
- "shlr %S0\;rotcr %R0"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
+ "#"
+ "&& 1"
+ [(set (match_dup 0) (rotate:SI (match_dup 1) (const_int 16)))
+ (set (match_dup 0) (sign_extend:SI (match_dup 2)))]
+{
+ operands[2] = gen_lowpart (HImode, operands[0]);
+})
-(define_insn "lshrdi3_media"
- [(set (match_operand:DI 0 "ext_dest_operand" "=r,r")
- (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "r,r")
- (match_operand:DI 2 "shift_count_operand" "r,n")))]
- "TARGET_SHMEDIA
- && (arith_reg_dest (operands[0], DImode)
- || (CONST_INT_P (operands[2]) && INTVAL (operands[2]) > 32))"
- "@
- shlrd %1, %2, %0
- shlri %1, %2, %0"
- [(set_attr "type" "arith_media")])
+(define_insn_and_split "ashrsi2_31"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (const_int 31)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& 1"
+ [(const_int 0)]
+{
+ emit_insn (gen_shll (operands[0], operands[1]));
+ emit_insn (gen_mov_neg_si_t (operands[0], get_t_reg_rtx ()));
+ DONE;
+})
-(define_insn "*lshrdisi3_media"
- [(set (subreg:DI (match_operand:SI 0 "arith_reg_operand" "=r") 0)
- (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "r")
- (match_operand:DI 2 "const_int_operand" "n")))]
- "TARGET_SHMEDIA && INTVAL (operands[2]) < 32"
- "shlri.l %1, %2, %0"
+(define_insn "ashrsi3_d"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (ashiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (neg:SI (match_operand:SI 2 "arith_reg_operand" "r"))))]
+ "TARGET_DYNSHIFT"
+ "shad %2,%0"
+ [(set_attr "type" "dyn_shift")])
+
+(define_insn "ashrsi3_n"
+ [(set (reg:SI R4_REG)
+ (ashiftrt:SI (reg:SI R4_REG)
+ (match_operand:SI 0 "const_int_operand" "i")))
+ (clobber (reg:SI T_REG))
+ (clobber (reg:SI PR_REG))
+ (use (match_operand:SI 1 "arith_reg_operand" "r"))]
+ "TARGET_SH1"
+ "jsr @%1%#"
+ [(set_attr "type" "sfunc")
+ (set_attr "needs_delay_slot" "yes")])
+
+(define_insn "ashrsi3_media"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
+ (ashiftrt:SI (match_operand:SI 1 "extend_reg_operand" "r,r")
+ (match_operand:SI 2 "shift_count_operand" "r,n")))]
+ "TARGET_SHMEDIA"
+ "@
+ shard.l %1, %2, %0
+ shari.l %1, %2, %0"
[(set_attr "type" "arith_media")
(set_attr "highpart" "ignore")])
-(define_expand "lshrdi3"
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; DImode arithmetic shift right
+
+(define_expand "ashrdi3"
[(parallel [(set (match_operand:DI 0 "arith_reg_operand" "")
- (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "")
- (match_operand:DI 2 "immediate_operand" "")))
- (clobber (reg:SI T_REG))])]
+ (ashiftrt:DI (match_operand:DI 1 "arith_reg_operand" "")
+ (match_operand:DI 2 "immediate_operand" "")))
+ (clobber (reg:SI T_REG))])]
""
{
if (TARGET_SHMEDIA)
{
- emit_insn (gen_lshrdi3_media (operands[0], operands[1], operands[2]));
+ emit_insn (gen_ashrdi3_media (operands[0], operands[1], operands[2]));
DONE;
}
if (!CONST_INT_P (operands[2]) || INTVAL (operands[2]) != 1)
FAIL;
})
-;; ??? This should be a define expand.
-
-(define_insn "ashrdi3_k"
+(define_insn_and_split "ashrdi3_k"
[(set (match_operand:DI 0 "arith_reg_dest" "=r")
(ashiftrt:DI (match_operand:DI 1 "arith_reg_operand" "0")
(const_int 1)))
(clobber (reg:SI T_REG))]
"TARGET_SH1"
- "shar %S0\;rotcr %R0"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
+ "#"
+ "&& reload_completed"
+ [(const_int 0)]
+{
+ rtx high = gen_highpart (SImode, operands[0]);
+ rtx low = gen_lowpart (SImode, operands[0]);
+ emit_insn (gen_shar (high, high));
+ emit_insn (gen_rotcr (low, low, get_t_reg_rtx ()));
+ DONE;
+})
(define_insn "ashrdi3_media"
[(set (match_operand:DI 0 "ext_dest_operand" "=r,r")
@@ -4069,23 +4460,231 @@ label:
"shari %1, %2, %0"
[(set_attr "type" "arith_media")])
-(define_expand "ashrdi3"
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; SImode logical shift right
+
+(define_expand "lshrsi3"
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
+ (match_operand:SI 2 "shift_count_operand" "")))]
+ ""
+{
+ if (TARGET_SHMEDIA)
+ {
+ emit_insn (gen_lshrsi3_media (operands[0], operands[1], operands[2]));
+ DONE;
+ }
+
+ /* If a dynamic shift is supposed to be used, expand the lshrsi3_d insn
+ here, otherwise the pattern will never match due to the shift amount reg
+ negation. */
+ if (TARGET_DYNSHIFT
+ && CONST_INT_P (operands[2]) && sh_dynamicalize_shift_p (operands[2]))
+ {
+ rtx neg_count = force_reg (SImode,
+ gen_int_mode (- INTVAL (operands[2]), SImode));
+ emit_insn (gen_lshrsi3_d (operands[0], operands[1], neg_count));
+ DONE;
+ }
+
+ if (TARGET_DYNSHIFT && ! CONST_INT_P (operands[2]))
+ {
+ rtx neg_count = gen_reg_rtx (SImode);
+ emit_insn (gen_negsi2 (neg_count, operands[2]));
+ emit_insn (gen_lshrsi3_d (operands[0], operands[1], neg_count));
+ DONE;
+ }
+
+ /* If the lshrsi3_* insn is going to clobber the T_REG it must be
+ expanded here. */
+ if (CONST_INT_P (operands[2])
+ && sh_lshrsi_clobbers_t_reg_p (operands[2])
+ && ! sh_dynamicalize_shift_p (operands[2]))
+ {
+ emit_insn (gen_lshrsi3_n_clobbers_t (operands[0], operands[1],
+ operands[2]));
+ DONE;
+ }
+})
+
+(define_insn "lshrsi3_k"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (match_operand:SI 2 "p27_rshift_count_operand" "P27")))]
+ "TARGET_SH1"
+ "shlr%O2 %0"
+ [(set_attr "type" "arith")])
+
+(define_insn_and_split "lshrsi3_d"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (neg:SI (match_operand:SI 2 "shift_count_operand" "r"))))]
+ "TARGET_DYNSHIFT"
+ "shld %2,%0"
+ "&& CONST_INT_P (operands[2]) && ! sh_dynamicalize_shift_p (operands[2])
+ && ! sh_lshrsi_clobbers_t_reg_p (operands[2])"
+ [(const_int 0)]
+{
+ if (satisfies_constraint_P27 (operands[2]))
+ {
+ /* This will not be done for a shift amount of 1, because it would
+ clobber the T_REG. */
+ emit_insn (gen_lshrsi3_k (operands[0], operands[1], operands[2]));
+ DONE;
+ }
+ else if (! satisfies_constraint_P27 (operands[2]))
+ {
+ /* This must happen before reload, otherwise the constant will be moved
+ into a register due to the "r" constraint, after which this split
+ cannot be done anymore.
+ Unfortunately the move insn will not always be eliminated.
+ Also, here we must not create a shift sequence that clobbers the
+ T_REG. */
+ emit_move_insn (operands[0], operands[1]);
+ gen_shifty_op (LSHIFTRT, operands);
+ DONE;
+ }
+
+ FAIL;
+}
+ [(set_attr "type" "dyn_shift")])
+
+(define_insn_and_split "lshrsi3_n"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (match_operand:SI 2 "not_p27_rshift_count_operand")))]
+ "TARGET_SH1 && ! sh_lshrsi_clobbers_t_reg_p (operands[2])"
+ "#"
+ "&& (reload_completed
+ || (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ()))"
+ [(const_int 0)]
+{
+ if (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ())
+ {
+ /* If this pattern was picked and dynamic shifts are supported, switch
+ to dynamic shift pattern before reload. */
+ operands[2] = force_reg (SImode,
+ gen_int_mode (- INTVAL (operands[2]), SImode));
+ emit_insn (gen_lshrsi3_d (operands[0], operands[1], operands[2]));
+ }
+ else
+ gen_shifty_op (LSHIFTRT, operands);
+
+ DONE;
+})
+
+;; The lshrsi3_n_clobbers_t pattern also works as a simplified version of
+;; the shlr pattern.
+(define_insn_and_split "lshrsi3_n_clobbers_t"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (match_operand:SI 2 "not_p27_rshift_count_operand")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1 && sh_lshrsi_clobbers_t_reg_p (operands[2])"
+ "#"
+ "&& (reload_completed || INTVAL (operands[2]) == 31
+ || (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ()))"
+ [(const_int 0)]
+{
+ if (INTVAL (operands[2]) == 31)
+ {
+ emit_insn (gen_shll (operands[0], operands[1]));
+ emit_insn (gen_movt (operands[0], get_t_reg_rtx ()));
+ }
+ else if (sh_dynamicalize_shift_p (operands[2]) && can_create_pseudo_p ())
+ {
+ /* If this pattern was picked and dynamic shifts are supported, switch
+ to dynamic shift pattern before reload. */
+ operands[2] = force_reg (SImode,
+ gen_int_mode (- INTVAL (operands[2]), SImode));
+ emit_insn (gen_lshrsi3_d (operands[0], operands[1], operands[2]));
+ }
+ else
+ gen_shifty_op (LSHIFTRT, operands);
+
+ DONE;
+})
+
+(define_insn "shlr"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
+ (const_int 1)))
+ (set (reg:SI T_REG)
+ (and:SI (match_dup 1) (const_int 1)))]
+ "TARGET_SH1"
+ "shlr %0"
+ [(set_attr "type" "arith")])
+
+(define_insn "lshrsi3_media"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
+ (lshiftrt:SI (match_operand:SI 1 "extend_reg_operand" "r,r")
+ (match_operand:SI 2 "shift_count_operand" "r,n")))]
+ "TARGET_SHMEDIA"
+ "@
+ shlrd.l %1, %2, %0
+ shlri.l %1, %2, %0"
+ [(set_attr "type" "arith_media")
+ (set_attr "highpart" "ignore")])
+
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; DImode logical shift right
+
+(define_expand "lshrdi3"
[(parallel [(set (match_operand:DI 0 "arith_reg_operand" "")
- (ashiftrt:DI (match_operand:DI 1 "arith_reg_operand" "")
- (match_operand:DI 2 "immediate_operand" "")))
- (clobber (reg:SI T_REG))])]
+ (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "")
+ (match_operand:DI 2 "immediate_operand" "")))
+ (clobber (reg:SI T_REG))])]
""
{
if (TARGET_SHMEDIA)
{
- emit_insn (gen_ashrdi3_media (operands[0], operands[1], operands[2]));
+ emit_insn (gen_lshrdi3_media (operands[0], operands[1], operands[2]));
DONE;
}
if (!CONST_INT_P (operands[2]) || INTVAL (operands[2]) != 1)
FAIL;
})
-;; combined left/right shift
+(define_insn_and_split "lshrdi3_k"
+ [(set (match_operand:DI 0 "arith_reg_dest" "=r")
+ (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "0")
+ (const_int 1)))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& reload_completed"
+ [(const_int 0)]
+{
+ rtx high = gen_highpart (SImode, operands[0]);
+ rtx low = gen_lowpart (SImode, operands[0]);
+ emit_insn (gen_shlr (high, high));
+ emit_insn (gen_rotcr (low, low, get_t_reg_rtx ()));
+ DONE;
+})
+
+(define_insn "lshrdi3_media"
+ [(set (match_operand:DI 0 "ext_dest_operand" "=r,r")
+ (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "r,r")
+ (match_operand:DI 2 "shift_count_operand" "r,n")))]
+ "TARGET_SHMEDIA
+ && (arith_reg_dest (operands[0], DImode)
+ || (CONST_INT_P (operands[2]) && INTVAL (operands[2]) > 32))"
+ "@
+ shlrd %1, %2, %0
+ shlri %1, %2, %0"
+ [(set_attr "type" "arith_media")])
+
+(define_insn "*lshrdisi3_media"
+ [(set (subreg:DI (match_operand:SI 0 "arith_reg_operand" "=r") 0)
+ (lshiftrt:DI (match_operand:DI 1 "arith_reg_operand" "r")
+ (match_operand:DI 2 "const_int_operand" "n")))]
+ "TARGET_SHMEDIA && INTVAL (operands[2]) < 32"
+ "shlri.l %1, %2, %0"
+ [(set_attr "type" "arith_media")
+ (set_attr "highpart" "ignore")])
+
+;; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+;; Combined left/right shifts
(define_split
[(set (match_operand:SI 0 "register_operand" "")
@@ -4314,17 +4913,7 @@ label:
;; Unary arithmetic
;; -------------------------------------------------------------------------
-(define_expand "negc"
- [(parallel [(set (match_operand:SI 0 "arith_reg_dest" "")
- (neg:SI (plus:SI (reg:SI T_REG)
- (match_operand:SI 1 "arith_reg_operand" ""))))
- (set (reg:SI T_REG)
- (ne:SI (ior:SI (reg:SI T_REG) (match_dup 1))
- (const_int 0)))])]
- ""
- "")
-
-(define_insn "*negc"
+(define_insn "negc"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
(neg:SI (plus:SI (reg:SI T_REG)
(match_operand:SI 1 "arith_reg_operand" "r"))))
@@ -4335,6 +4924,19 @@ label:
"negc %1,%0"
[(set_attr "type" "arith")])
+;; A simplified version of the negc insn, where the exact value of the
+;; T bit doesn't matter. This is easier for combine to pick up.
+;; Notice that '0 - x - 1' is the same as '~x', thus we don't specify
+;; extra patterns for this case.
+(define_insn "*negc"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (minus:SI (neg:SI (match_operand:SI 1 "arith_reg_operand" "r"))
+ (match_operand:SI 2 "t_reg_operand" "")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "negc %1,%0"
+ [(set_attr "type" "arith")])
+
(define_insn "*negdi_media"
[(set (match_operand:DI 0 "arith_reg_dest" "=r")
(neg:DI (match_operand:DI 1 "arith_reg_operand" "r")))]
@@ -4438,11 +5040,21 @@ label:
(match_operand:SI 3 "const_int_operand" "M,N"))
(match_operand:SI 1 "arith_reg_operand" "0,0")
(neg:SI (match_operand:SI 2 "arith_reg_operand" "r,r"))))]
- "TARGET_HARD_SH4"
- "@
- bt\\t0f\;neg\\t%2,%0\\n0:
- bf\\t0f\;neg\\t%2,%0\\n0:"
- "!TARGET_HARD_SH4"
+ "TARGET_SH1 && TARGET_ZDCBRANCH"
+{
+ static const char* alt[] =
+ {
+ "bt 0f" "\n"
+ " neg %2,%0" "\n"
+ "0:",
+
+ "bf 0f" "\n"
+ " neg %2,%0" "\n"
+ "0:"
+ };
+ return alt[which_alternative];
+}
+ "TARGET_SH1 && ! TARGET_ZDCBRANCH"
[(const_int 0)]
{
rtx skip_neg_label = gen_label_rtx ();
@@ -4450,8 +5062,8 @@ label:
emit_insn (gen_movsi (operands[0], operands[1]));
emit_jump_insn (INTVAL (operands[3])
- ? gen_branch_true (skip_neg_label)
- : gen_branch_false (skip_neg_label));
+ ? gen_branch_true (skip_neg_label, get_t_reg_rtx ())
+ : gen_branch_false (skip_neg_label, get_t_reg_rtx ()));
emit_label_after (skip_neg_label,
emit_insn (gen_negsi2 (operands[0], operands[1])));
@@ -4519,8 +5131,8 @@ label:
emit_insn (gen_movsi (high_dst, high_src));
emit_jump_insn (INTVAL (operands[3])
- ? gen_branch_true (skip_neg_label)
- : gen_branch_false (skip_neg_label));
+ ? gen_branch_true (skip_neg_label, get_t_reg_rtx ())
+ : gen_branch_false (skip_neg_label, get_t_reg_rtx ()));
if (!INTVAL (operands[3]))
emit_insn (gen_clrt ());
@@ -4700,13 +5312,8 @@ label:
(const_string "ignore")))])
(define_expand "zero_extendhisi2"
- [(set (match_operand:SI 0 "arith_reg_operand" "")
- (zero_extend:SI (match_operand:HI 1 "general_extend_operand" "")))]
- ""
-{
- if (! TARGET_SHMEDIA && ! arith_reg_operand (operands[1], HImode))
- operands[1] = copy_to_mode_reg (HImode, operands[1]);
-})
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (zero_extend:SI (match_operand:HI 1 "zero_extend_operand" "")))])
(define_insn "*zero_extendhisi2_compact"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
@@ -4745,13 +5352,8 @@ label:
})
(define_expand "zero_extendqisi2"
- [(set (match_operand:SI 0 "arith_reg_operand" "")
- (zero_extend:SI (match_operand:QI 1 "general_extend_operand" "")))]
- ""
-{
- if (! TARGET_SHMEDIA && ! arith_reg_operand (operands[1], QImode))
- operands[1] = copy_to_mode_reg (QImode, operands[1]);
-})
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (zero_extend:SI (match_operand:QI 1 "zero_extend_operand" "")))])
(define_insn "*zero_extendqisi2_compact"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
@@ -4780,6 +5382,88 @@ label:
"extu.b %1,%0"
[(set_attr "type" "arith")])
+;; SH2A supports two zero extending load instructions: movu.b and movu.w.
+;; They could also be used for simple memory addresses like @Rn by setting
+;; the displacement value to zero. However, doing so too early results in
+;; missed opportunities for other optimizations such as post-inc or index
+;; addressing loads.
+;; Although the 'zero_extend_movu_operand' predicate does not allow simple
+;; register addresses (an address without a displacement, index, post-inc),
+;; zero-displacement addresses might be generated during reload, wich are
+;; simplified to simple register addresses in turn. Thus, we have to
+;; provide the Sdd and Sra alternatives in the patterns.
+(define_insn "*zero_extendqisi2_disp_mem"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
+ (zero_extend:SI
+ (match_operand:QI 1 "zero_extend_movu_operand" "Sdd,Sra")))]
+ "TARGET_SH2A"
+ "@
+ movu.b %1,%0
+ movu.b @(0,%t1),%0"
+ [(set_attr "type" "load")
+ (set_attr "length" "4")])
+
+(define_insn "*zero_extendhisi2_disp_mem"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
+ (zero_extend:SI
+ (match_operand:HI 1 "zero_extend_movu_operand" "Sdd,Sra")))]
+ "TARGET_SH2A"
+ "@
+ movu.w %1,%0
+ movu.w @(0,%t1),%0"
+ [(set_attr "type" "load")
+ (set_attr "length" "4")])
+
+;; Convert the zero extending loads in sequences such as:
+;; movu.b @(1,r5),r0 movu.w @(2,r5),r0
+;; mov.b r0,@(1,r4) mov.b r0,@(1,r4)
+;;
+;; back to sign extending loads like:
+;; mov.b @(1,r5),r0 mov.w @(2,r5),r0
+;; mov.b r0,@(1,r4) mov.b r0,@(1,r4)
+;;
+;; if the extension type is irrelevant. The sign extending mov.{b|w} insn
+;; is only 2 bytes in size if the displacement is {K04|K05}.
+;; If the displacement is greater it doesn't matter, so we convert anyways.
+(define_peephole2
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (zero_extend:SI (match_operand 1 "displacement_mem_operand" "")))
+ (set (match_operand 2 "general_operand" "")
+ (match_operand 3 "arith_reg_operand" ""))]
+ "TARGET_SH2A
+ && REGNO (operands[0]) == REGNO (operands[3])
+ && peep2_reg_dead_p (2, operands[0])
+ && GET_MODE_SIZE (GET_MODE (operands[2]))
+ <= GET_MODE_SIZE (GET_MODE (operands[1]))"
+ [(set (match_dup 0) (sign_extend:SI (match_dup 1)))
+ (set (match_dup 2) (match_dup 3))])
+
+;; Fold sequences such as
+;; mov.b @r3,r7
+;; extu.b r7,r7
+;; into
+;; movu.b @(0,r3),r7
+;; This does not reduce the code size but the number of instructions is
+;; halved, which results in faster code.
+(define_peephole2
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (sign_extend:SI (match_operand 1 "simple_mem_operand" "")))
+ (set (match_operand:SI 2 "arith_reg_dest" "")
+ (zero_extend:SI (match_operand 3 "arith_reg_operand" "")))]
+ "TARGET_SH2A
+ && GET_MODE (operands[1]) == GET_MODE (operands[3])
+ && (GET_MODE (operands[1]) == QImode || GET_MODE (operands[1]) == HImode)
+ && REGNO (operands[0]) == REGNO (operands[3])
+ && (REGNO (operands[2]) == REGNO (operands[0])
+ || peep2_reg_dead_p (2, operands[0]))"
+ [(set (match_dup 2) (zero_extend:SI (match_dup 4)))]
+{
+ operands[4]
+ = replace_equiv_address (operands[1],
+ gen_rtx_PLUS (SImode, XEXP (operands[1], 0),
+ const0_rtx));
+})
+
;; -------------------------------------------------------------------------
;; Sign extension instructions
;; -------------------------------------------------------------------------
@@ -4892,22 +5576,18 @@ label:
})
(define_insn "*extendqisi2_compact_reg"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
- (sign_extend:SI (match_operand:QI 1 "register_operand" "r,t")))]
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (sign_extend:SI (match_operand:QI 1 "arith_reg_operand" "r")))]
"TARGET_SH1"
- "@
- exts.b %1,%0
- movt %0"
- [(set_attr "type" "arith,arith")])
+ "exts.b %1,%0"
+ [(set_attr "type" "arith")])
(define_insn "*extendhisi2_compact_reg"
- [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
- (sign_extend:SI (match_operand:HI 1 "register_operand" "r,t")))]
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (sign_extend:SI (match_operand:HI 1 "arith_reg_operand" "r")))]
"TARGET_SH1"
- "@
- exts.w %1,%0
- movt %0"
- [(set_attr "type" "arith,arith")])
+ "exts.w %1,%0"
+ [(set_attr "type" "arith")])
;; FIXME: Fold non-SH2A and SH2A alternatives with "enabled" attribute.
;; See movqi insns.
@@ -5044,9 +5724,16 @@ label:
[(set (match_operand:HI 0 "general_movdst_operand" "=?r,m")
(truncate:HI (match_operand:DI 1 "register_operand" "r,r")))]
"TARGET_SHMEDIA"
- "@
- shlli\\t%1,48,%0\;shlri\\t%0,48,%0
- st%M0.w %m0, %1"
+{
+ static const char* alt[] =
+ {
+ "shlli %1,48,%0" "\n"
+ " shlri %0,48,%0",
+
+ "st%M0.w %m0, %1"
+ };
+ return alt[which_alternative];
+}
[(set_attr "type" "arith_media,store_media")
(set_attr "length" "8,4")
(set (attr "highpart")
@@ -5162,19 +5849,194 @@ label:
DONE;
})
-;; These two patterns can happen as the result of optimization, when
-;; comparisons get simplified to a move of zero or 1 into the T reg.
-;; They don't disappear completely, because the T reg is a fixed hard reg.
+;; The clrt and sett patterns can happen as the result of optimization and
+;; insn expansion.
+;; Comparisons might get simplified to a move of zero or 1 into the T reg.
+;; In this case they might not disappear completely, because the T reg is
+;; a fixed hard reg.
+;; When DImode operations that use the T reg as carry/borrow are split into
+;; individual SImode operations, the T reg is usually cleared before the
+;; first SImode insn.
(define_insn "clrt"
[(set (reg:SI T_REG) (const_int 0))]
"TARGET_SH1"
- "clrt")
+ "clrt"
+ [(set_attr "type" "mt_group")])
(define_insn "sett"
[(set (reg:SI T_REG) (const_int 1))]
"TARGET_SH1"
- "sett")
+ "sett"
+ [(set_attr "type" "mt_group")])
+
+;; Use the combine pass to transform sequences such as
+;; mov r5,r0
+;; add #1,r0
+;; shll2 r0
+;; mov.l @(r0,r4),r0
+;; into
+;; shll2 r5
+;; add r4,r5
+;; mov.l @(4,r5),r0
+;;
+;; See also PR 39423.
+;; Notice that these patterns have a T_REG clobber, because the shift
+;; sequence that will be split out might clobber the T_REG. Ideally, the
+;; clobber would be added conditionally, depending on the result of
+;; sh_ashlsi_clobbers_t_reg_p. When splitting out the shifts we must go
+;; through the ashlsi3 expander in order to get the right shift insn --
+;; a T_REG clobbering or non-clobbering shift sequence or dynamic shift.
+;; FIXME: Fold copy pasted patterns somehow.
+;; FIXME: Combine never tries this kind of patterns for DImode.
+(define_insn_and_split "*movsi_index_disp"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (match_operand:SI 1 "mem_index_disp_operand" "m"))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& can_create_pseudo_p ()"
+ [(set (match_dup 6) (plus:SI (match_dup 5) (match_dup 3)))
+ (set (match_dup 0) (match_dup 7))]
+{
+ rtx mem = operands[1];
+ rtx plus0_rtx = XEXP (mem, 0);
+ rtx plus1_rtx = XEXP (plus0_rtx, 0);
+ rtx mult_rtx = XEXP (plus1_rtx, 0);
+
+ operands[1] = XEXP (mult_rtx, 0);
+ operands[2] = GEN_INT (exact_log2 (INTVAL (XEXP (mult_rtx, 1))));
+ operands[3] = XEXP (plus1_rtx, 1);
+ operands[4] = XEXP (plus0_rtx, 1);
+ operands[5] = gen_reg_rtx (SImode);
+ operands[6] = gen_reg_rtx (SImode);
+ operands[7] =
+ replace_equiv_address (mem,
+ gen_rtx_PLUS (SImode, operands[6], operands[4]));
+
+ emit_insn (gen_ashlsi3 (operands[5], operands[1], operands[2]));
+})
+
+(define_insn_and_split "*movhi_index_disp"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (sign_extend:SI (match_operand:HI 1 "mem_index_disp_operand" "m")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& can_create_pseudo_p ()"
+ [(set (match_dup 6) (plus:SI (match_dup 5) (match_dup 3)))
+ (set (match_dup 0) (sign_extend:SI (match_dup 7)))]
+{
+ rtx mem = operands[1];
+ rtx plus0_rtx = XEXP (mem, 0);
+ rtx plus1_rtx = XEXP (plus0_rtx, 0);
+ rtx mult_rtx = XEXP (plus1_rtx, 0);
+
+ operands[1] = XEXP (mult_rtx, 0);
+ operands[2] = GEN_INT (exact_log2 (INTVAL (XEXP (mult_rtx, 1))));
+ operands[3] = XEXP (plus1_rtx, 1);
+ operands[4] = XEXP (plus0_rtx, 1);
+ operands[5] = gen_reg_rtx (SImode);
+ operands[6] = gen_reg_rtx (SImode);
+ operands[7] =
+ replace_equiv_address (mem,
+ gen_rtx_PLUS (SImode, operands[6], operands[4]));
+
+ emit_insn (gen_ashlsi3 (operands[5], operands[1], operands[2]));
+})
+
+(define_insn_and_split "*movhi_index_disp"
+ [(set (match_operand:SI 0 "arith_reg_dest")
+ (zero_extend:SI (match_operand:HI 1 "mem_index_disp_operand")))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& can_create_pseudo_p ()"
+ [(const_int 0)]
+{
+ rtx mem = operands[1];
+ rtx plus0_rtx = XEXP (mem, 0);
+ rtx plus1_rtx = XEXP (plus0_rtx, 0);
+ rtx mult_rtx = XEXP (plus1_rtx, 0);
+
+ rtx op_1 = XEXP (mult_rtx, 0);
+ rtx op_2 = GEN_INT (exact_log2 (INTVAL (XEXP (mult_rtx, 1))));
+ rtx op_3 = XEXP (plus1_rtx, 1);
+ rtx op_4 = XEXP (plus0_rtx, 1);
+ rtx op_5 = gen_reg_rtx (SImode);
+ rtx op_6 = gen_reg_rtx (SImode);
+ rtx op_7 = replace_equiv_address (mem, gen_rtx_PLUS (SImode, op_6, op_4));
+
+ emit_insn (gen_ashlsi3 (op_5, op_1, op_2));
+ emit_insn (gen_addsi3 (op_6, op_5, op_3));
+
+ /* On SH2A the movu.w insn can be used for zero extending loads. */
+ if (TARGET_SH2A)
+ emit_insn (gen_zero_extendhisi2 (operands[0], op_7));
+ else
+ {
+ emit_insn (gen_extendhisi2 (operands[0], op_7));
+ emit_insn (gen_zero_extendhisi2 (operands[0],
+ gen_lowpart (HImode, operands[0])));
+ }
+ DONE;
+})
+
+(define_insn_and_split "*movsi_index_disp"
+ [(set (match_operand:SI 0 "mem_index_disp_operand" "=m")
+ (match_operand:SI 1 "arith_reg_operand" "r"))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& can_create_pseudo_p ()"
+ [(set (match_dup 6) (plus:SI (match_dup 5) (match_dup 3)))
+ (set (match_dup 7) (match_dup 1))]
+{
+ rtx mem = operands[0];
+ rtx plus0_rtx = XEXP (mem, 0);
+ rtx plus1_rtx = XEXP (plus0_rtx, 0);
+ rtx mult_rtx = XEXP (plus1_rtx, 0);
+
+ operands[0] = XEXP (mult_rtx, 0);
+ operands[2] = GEN_INT (exact_log2 (INTVAL (XEXP (mult_rtx, 1))));
+ operands[3] = XEXP (plus1_rtx, 1);
+ operands[4] = XEXP (plus0_rtx, 1);
+ operands[5] = gen_reg_rtx (SImode);
+ operands[6] = gen_reg_rtx (SImode);
+ operands[7] =
+ replace_equiv_address (mem,
+ gen_rtx_PLUS (SImode, operands[6], operands[4]));
+
+ emit_insn (gen_ashlsi3 (operands[5], operands[0], operands[2]));
+})
+
+(define_insn_and_split "*movsi_index_disp"
+ [(set (match_operand:HI 0 "mem_index_disp_operand" "=m")
+ (match_operand:HI 1 "arith_reg_operand" "r"))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1"
+ "#"
+ "&& can_create_pseudo_p ()"
+ [(set (match_dup 6) (plus:SI (match_dup 5) (match_dup 3)))
+ (set (match_dup 7) (match_dup 1))]
+{
+ rtx mem = operands[0];
+ rtx plus0_rtx = XEXP (mem, 0);
+ rtx plus1_rtx = XEXP (plus0_rtx, 0);
+ rtx mult_rtx = XEXP (plus1_rtx, 0);
+
+ operands[0] = XEXP (mult_rtx, 0);
+ operands[2] = GEN_INT (exact_log2 (INTVAL (XEXP (mult_rtx, 1))));
+ operands[3] = XEXP (plus1_rtx, 1);
+ operands[4] = XEXP (plus0_rtx, 1);
+ operands[5] = gen_reg_rtx (SImode);
+ operands[6] = gen_reg_rtx (SImode);
+ operands[7] =
+ replace_equiv_address (mem,
+ gen_rtx_PLUS (SImode, operands[6], operands[4]));
+
+ emit_insn (gen_ashlsi3 (operands[5], operands[0], operands[2]));
+})
;; Define additional pop for SH1 and SH2 so it does not get
;; placed in the delay slot.
@@ -5184,9 +6046,9 @@ label:
"(TARGET_SH1 || TARGET_SH2E || TARGET_SH2A)
&& ! TARGET_SH3"
"@
- mov.l %1,%0
- lds.l %1,%0
- lds.l %1,%0"
+ mov.l %1,%0
+ lds.l %1,%0
+ lds.l %1,%0"
[(set_attr "type" "load_si,mem_mac,pload")
(set_attr "length" "2,2,2")
(set_attr "in_delay_slot" "no,no,no")])
@@ -5196,9 +6058,9 @@ label:
;; (made from (set (subreg:SI (reg:QI ###) 0) ) into T.
(define_insn "movsi_i"
[(set (match_operand:SI 0 "general_movdst_operand"
- "=r,r,r,t,r,r,r,r,m,<,<,x,l,x,l,r")
+ "=r,r,r,r,r,r,m,<,<,x,l,x,l,r")
(match_operand:SI 1 "general_movsrc_operand"
- "Q,r,I08,r,mr,x,l,t,r,x,l,r,r,>,>,i"))]
+ "Q,r,I08,mr,x,l,r,x,l,r,r,>,>,i"))]
"TARGET_SH1
&& ! TARGET_SH2E
&& ! TARGET_SH2A
@@ -5208,11 +6070,9 @@ label:
mov.l %1,%0
mov %1,%0
mov %1,%0
- cmp/pl %1
mov.l %1,%0
sts %1,%0
sts %1,%0
- movt %0
mov.l %1,%0
sts.l %1,%0
sts.l %1,%0
@@ -5221,8 +6081,8 @@ label:
lds.l %1,%0
lds.l %1,%0
fake %1,%0"
- [(set_attr "type" "pcload_si,move,movi8,mt_group,load_si,mac_gp,prget,arith,store,mac_mem,pstore,gp_mac,prset,mem_mac,pload,pcload_si")
- (set_attr "length" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*")])
+ [(set_attr "type" "pcload_si,move,movi8,load_si,mac_gp,prget,store,mac_mem,pstore,gp_mac,prset,mem_mac,pload,pcload_si")
+ (set_attr "length" "*,*,*,*,*,*,*,*,*,*,*,*,*,*")])
;; t/r must come after r/r, lest reload will try to reload stuff like
;; (subreg:SI (reg:SF FR14_REG) 0) into T (compiling stdlib/strtod.c -m3e -O2)
@@ -5232,9 +6092,9 @@ label:
;; TARGET_FMOVD is in effect, and mode switching is done before reload.
(define_insn "movsi_ie"
[(set (match_operand:SI 0 "general_movdst_operand"
- "=r,r,r,r,r,t,r,r,r,r,m,<,<,x,l,x,l,y,<,r,y,r,*f,y,*f,y")
+ "=r,r,r,r,r,r,r,r,m,<,<,x,l,x,l,y,<,r,y,r,*f,y,*f,y")
(match_operand:SI 1 "general_movsrc_operand"
- "Q,r,I08,I20,I28,r,mr,x,l,t,r,x,l,r,r,>,>,>,y,i,r,y,y,*f,*f,y"))]
+ "Q,r,I08,I20,I28,mr,x,l,r,x,l,r,r,>,>,>,y,i,r,y,y,*f,*f,y"))]
"(TARGET_SH2E || TARGET_SH2A)
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode))"
@@ -5244,11 +6104,9 @@ label:
mov %1,%0
movi20 %1,%0
movi20s %1,%0
- cmp/pl %1
mov.l %1,%0
sts %1,%0
sts %1,%0
- movt %0
mov.l %1,%0
sts.l %1,%0
sts.l %1,%0
@@ -5265,21 +6123,19 @@ label:
flds %1,fpul
fmov %1,%0
! move optimized away"
- [(set_attr "type" "pcload_si,move,movi8,move,move,*,load_si,mac_gp,prget,arith,store,mac_mem,pstore,gp_mac,prset,mem_mac,pload,load,fstore,pcload_si,gp_fpul,fpul_gp,fmove,fmove,fmove,nil")
- (set_attr "late_fp_use" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes,*,*,yes,*,*,*,*")
+ [(set_attr "type" "pcload_si,move,movi8,move,move,load_si,mac_gp,prget,store,mac_mem,pstore,gp_mac,prset,mem_mac,pload,load,fstore,pcload_si,gp_fpul,fpul_gp,fmove,fmove,fmove,nil")
+ (set_attr "late_fp_use" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes,*,*,yes,*,*,*,*")
(set_attr_alternative "length"
[(const_int 2)
(const_int 2)
(const_int 2)
(const_int 4)
(const_int 4)
- (const_int 2)
(if_then_else
(match_test "TARGET_SH2A")
(const_int 4) (const_int 2))
(const_int 2)
(const_int 2)
- (const_int 2)
(if_then_else
(match_test "TARGET_SH2A")
(const_int 4) (const_int 2))
@@ -5300,8 +6156,8 @@ label:
(const_int 0)])])
(define_insn "movsi_i_lowpart"
- [(set (strict_low_part (match_operand:SI 0 "general_movdst_operand" "+r,r,r,r,r,r,r,m,r"))
- (match_operand:SI 1 "general_movsrc_operand" "Q,r,I08,mr,x,l,t,r,i"))]
+ [(set (strict_low_part (match_operand:SI 0 "general_movdst_operand" "+r,r,r,r,r,r,m,r"))
+ (match_operand:SI 1 "general_movsrc_operand" "Q,r,I08,mr,x,l,r,i"))]
"TARGET_SH1
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode))"
@@ -5312,10 +6168,9 @@ label:
mov.l %1,%0
sts %1,%0
sts %1,%0
- movt %0
mov.l %1,%0
fake %1,%0"
- [(set_attr "type" "pcload,move,arith,load,mac_gp,prget,arith,store,pcload")])
+ [(set_attr "type" "pcload,move,arith,load,mac_gp,prget,store,pcload")])
(define_insn_and_split "load_ra"
[(set (match_operand:SI 0 "general_movdst_operand" "")
@@ -5495,7 +6350,12 @@ label:
UNSPEC_ICACHE)
(clobber (match_scratch:SI 2 "=&r"))]
"TARGET_HARD_SH4"
- "ocbwb\\t@%0\;extu.w\\t%0,%2\;or\\t%1,%2\;mov.l\\t%0,@%2"
+{
+ return "ocbwb @%0" "\n"
+ " extu.w %0,%2" "\n"
+ " or %1,%2" "\n"
+ " mov.l %0,@%2";
+}
[(set_attr "length" "8")
(set_attr "type" "cwb")])
@@ -5503,8 +6363,12 @@ label:
[(unspec_volatile [(match_operand:SI 0 "register_operand" "r")]
UNSPEC_ICACHE)]
"TARGET_SH4A_ARCH || TARGET_SH4_300"
- "ocbwb\\t@%0\;synco\;icbi\\t@%0"
- [(set_attr "length" "16")
+{
+ return "ocbwb @%0" "\n"
+ " synco" "\n"
+ " icbi @%0";
+}
+ [(set_attr "length" "16") ;; FIXME: Why 16 and not 6? Looks like typo.
(set_attr "type" "cwb")])
;; ??? could make arg 0 an offsettable memory operand to allow to save
@@ -5513,7 +6377,12 @@ label:
[(unspec_volatile [(match_operand 0 "any_register_operand" "r")]
UNSPEC_ICACHE)]
"TARGET_SHMEDIA"
- "ocbwb %0,0\;synco\;icbi %0, 0\;synci"
+{
+ return "ocbwb %0,0" "\n"
+ " synco" "\n"
+ " icbi %0,0" "\n"
+ " synci";
+}
[(set_attr "length" "16")
(set_attr "type" "invalidate_line_media")])
@@ -5582,22 +6451,18 @@ label:
;; try other insns and not stick to movqi_reg_reg.
;; The same applies to the movhi variants.
(define_insn "*movqi_reg_reg"
- [(set (match_operand:QI 0 "arith_reg_dest" "=r,r")
- (match_operand:QI 1 "register_operand" "r,t"))]
+ [(set (match_operand:QI 0 "arith_reg_dest" "=r")
+ (match_operand:QI 1 "register_operand" "r"))]
"TARGET_SH1"
- "@
- mov %1,%0
- movt %0"
- [(set_attr "type" "move,arith")])
+ "mov %1,%0"
+ [(set_attr "type" "move")])
(define_insn "*movhi_reg_reg"
- [(set (match_operand:HI 0 "arith_reg_dest" "=r,r")
- (match_operand:HI 1 "register_operand" "r,t"))]
+ [(set (match_operand:HI 0 "arith_reg_dest" "=r")
+ (match_operand:HI 1 "register_operand" "r"))]
"TARGET_SH1"
- "@
- mov %1,%0
- movt %0"
- [(set_attr "type" "move,arith")])
+ "mov %1,%0"
+ [(set_attr "type" "move")])
;; FIXME: The non-SH2A and SH2A variants should be combined by adding
;; "enabled" attribute as it is done in other targets.
@@ -6241,9 +7106,11 @@ label:
if (TARGET_FMOVD)
return "fmov %1,%0";
else if (REGNO (operands[0]) != REGNO (operands[1]) + 1)
- return "fmov %R1,%R0\n\tfmov %S1,%S0";
+ return "fmov %R1,%R0" "\n"
+ " fmov %S1,%S0";
else
- return "fmov %S1,%S0\n\tfmov %R1,%R0";
+ return "fmov %S1,%S0" "\n"
+ " fmov %R1,%R0";
case 3:
case 4:
return "fmov.d %1,%0";
@@ -6668,63 +7535,6 @@ label:
FAIL;
})
-;; If a base address generated by LEGITIMIZE_ADDRESS for SImode is
-;; used only once, let combine add in the index again.
-
-(define_split
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operand:SI 1 "" ""))
- (clobber (match_operand 2 "register_operand" ""))]
- "TARGET_SH1 && ! reload_in_progress && ! reload_completed
- && ALLOW_INDEXED_ADDRESS"
- [(use (reg:SI R0_REG))]
-{
- rtx addr, reg, const_int;
-
- if (!MEM_P (operands[1]))
- FAIL;
- addr = XEXP (operands[1], 0);
- if (GET_CODE (addr) != PLUS)
- FAIL;
- reg = XEXP (addr, 0);
- const_int = XEXP (addr, 1);
- if (! (BASE_REGISTER_RTX_P (reg) && INDEX_REGISTER_RTX_P (operands[2])
- && CONST_INT_P (const_int)))
- FAIL;
- emit_move_insn (operands[2], const_int);
- emit_move_insn (operands[0],
- change_address (operands[1], VOIDmode,
- gen_rtx_PLUS (SImode, reg, operands[2])));
- DONE;
-})
-
-(define_split
- [(set (match_operand:SI 1 "" "")
- (match_operand:SI 0 "register_operand" ""))
- (clobber (match_operand 2 "register_operand" ""))]
- "TARGET_SH1 && ! reload_in_progress && ! reload_completed
- && ALLOW_INDEXED_ADDRESS"
- [(use (reg:SI R0_REG))]
-{
- rtx addr, reg, const_int;
-
- if (!MEM_P (operands[1]))
- FAIL;
- addr = XEXP (operands[1], 0);
- if (GET_CODE (addr) != PLUS)
- FAIL;
- reg = XEXP (addr, 0);
- const_int = XEXP (addr, 1);
- if (! (BASE_REGISTER_RTX_P (reg) && INDEX_REGISTER_RTX_P (operands[2])
- && CONST_INT_P (const_int)))
- FAIL;
- emit_move_insn (operands[2], const_int);
- emit_move_insn (change_address (operands[1], VOIDmode,
- gen_rtx_PLUS (SImode, reg, operands[2])),
- operands[0]);
- DONE;
-})
-
(define_expand "movdf"
[(set (match_operand:DF 0 "general_movdst_operand" "")
(match_operand:DF 1 "general_movsrc_operand" ""))]
@@ -7195,66 +8005,44 @@ label:
;; ------------------------------------------------------------------------
(define_insn "branch_true"
- [(set (pc) (if_then_else (ne (reg:SI T_REG) (const_int 0))
- (label_ref (match_operand 0 "" ""))
- (pc)))]
- "TARGET_SH1"
-{
- return output_branch (1, insn, operands);
-}
- [(set_attr "type" "cbranch")])
-
-;; The *branch_true patterns help combine when trying to invert conditions.
-(define_insn "*branch_true"
- [(set (pc) (if_then_else (ne (zero_extend:SI (subreg:QI (reg:SI T_REG) 0))
+ [(set (pc) (if_then_else (ne (match_operand 1 "t_reg_operand" "")
(const_int 0))
(label_ref (match_operand 0 "" ""))
(pc)))]
- "TARGET_SH1 && TARGET_LITTLE_ENDIAN"
+ "TARGET_SH1"
{
return output_branch (1, insn, operands);
}
[(set_attr "type" "cbranch")])
-(define_insn "*branch_true"
- [(set (pc) (if_then_else (ne (zero_extend:SI (subreg:QI (reg:SI T_REG) 3))
- (const_int 0))
+(define_insn "*branch_true_eq"
+ [(set (pc) (if_then_else (eq (match_operand 1 "t_reg_operand" "")
+ (const_int 1))
(label_ref (match_operand 0 "" ""))
(pc)))]
- "TARGET_SH1 && ! TARGET_LITTLE_ENDIAN"
+ "TARGET_SH1"
{
return output_branch (1, insn, operands);
}
[(set_attr "type" "cbranch")])
(define_insn "branch_false"
- [(set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
- (label_ref (match_operand 0 "" ""))
- (pc)))]
- "TARGET_SH1"
-{
- return output_branch (0, insn, operands);
-}
- [(set_attr "type" "cbranch")])
-
-;; The *branch_false patterns help combine when trying to invert conditions.
-(define_insn "*branch_false"
- [(set (pc) (if_then_else (eq (zero_extend:SI (subreg:QI (reg:SI T_REG) 0))
+ [(set (pc) (if_then_else (eq (match_operand 1 "t_reg_operand" "")
(const_int 0))
(label_ref (match_operand 0 "" ""))
(pc)))]
- "TARGET_SH1 && TARGET_LITTLE_ENDIAN"
+ "TARGET_SH1"
{
return output_branch (0, insn, operands);
}
[(set_attr "type" "cbranch")])
-(define_insn "*branch_false"
- [(set (pc) (if_then_else (eq (zero_extend:SI (subreg:QI (reg:SI T_REG) 3))
- (const_int 0))
+(define_insn "*branch_false_ne"
+ [(set (pc) (if_then_else (ne (match_operand 1 "t_reg_operand" "")
+ (const_int 1))
(label_ref (match_operand 0 "" ""))
(pc)))]
- "TARGET_SH1 && ! TARGET_LITTLE_ENDIAN"
+ "TARGET_SH1"
{
return output_branch (0, insn, operands);
}
@@ -7585,9 +8373,9 @@ label:
"TARGET_SH1"
{
if (TARGET_SH2A && (dbr_sequence_length () == 0))
- return "jsr/n\\t@%0";
+ return "jsr/n @%0";
else
- return "jsr\\t@%0%#";
+ return "jsr @%0%#";
}
[(set_attr "type" "call")
(set (attr "fp_mode")
@@ -7611,7 +8399,7 @@ label:
vect_num = sh2a_get_function_vector_number (operands[0]);
operands[2] = GEN_INT (vect_num * 4);
- return "jsr/n\\t@@(%O2,tbr)";
+ return "jsr/n @@(%O2,tbr)";
}
[(set_attr "type" "call")
(set (attr "fp_mode")
@@ -7630,7 +8418,10 @@ label:
(use (match_operand 2 "" ""))
(clobber (reg:SI PR_REG))]
"TARGET_SH2"
- "bsrf %0\\n%O2:%#"
+{
+ return "bsrf %0" "\n"
+ "%O2:%#";
+}
[(set_attr "type" "call")
(set (attr "fp_mode")
(if_then_else (eq_attr "fpu_single" "yes")
@@ -7716,9 +8507,9 @@ label:
"TARGET_SH1"
{
if (TARGET_SH2A && (dbr_sequence_length () == 0))
- return "jsr/n\\t@%1";
+ return "jsr/n @%1";
else
- return "jsr\\t@%1%#";
+ return "jsr @%1%#";
}
[(set_attr "type" "call")
(set (attr "fp_mode")
@@ -7743,7 +8534,7 @@ label:
vect_num = sh2a_get_function_vector_number (operands[1]);
operands[3] = GEN_INT (vect_num * 4);
- return "jsr/n\\t@@(%O3,tbr)";
+ return "jsr/n @@(%O3,tbr)";
}
[(set_attr "type" "call")
(set (attr "fp_mode")
@@ -7761,7 +8552,10 @@ label:
(use (match_operand 3 "" ""))
(clobber (reg:SI PR_REG))]
"TARGET_SH2"
- "bsrf %1\\n%O3:%#"
+{
+ return "bsrf %1" "\n"
+ "%O3:%#";
+}
[(set_attr "type" "call")
(set (attr "fp_mode")
(if_then_else (eq_attr "fpu_single" "yes")
@@ -8147,7 +8941,10 @@ label:
(use (reg:PSI FPSCR_REG))
(return)]
"TARGET_SH2"
- "braf %0\\n%O2:%#"
+{
+ return "braf %0" "\n"
+ "%O2:%#";
+}
[(set_attr "needs_delay_slot" "yes")
(set (attr "fp_mode")
(if_then_else (eq_attr "fpu_single" "yes")
@@ -8207,9 +9004,16 @@ label:
;; because sibcall_epilogue may clobber MACL_REG.
(clobber (reg:SI MACL_REG))]
"TARGET_SHCOMPACT"
- "@
- jmp @%0%#
- jmp @%0\\n sts %2, r0"
+{
+ static const char* alt[] =
+ {
+ "jmp @%0%#",
+
+ "jmp @%0" "\n"
+ " sts %2,r0"
+ };
+ return alt[which_alternative];
+}
[(set_attr "needs_delay_slot" "yes,no")
(set_attr "length" "2,4")
(set (attr "fp_mode") (const_string "single"))
@@ -8344,7 +9148,10 @@ label:
(use (reg:PSI FPSCR_REG))
(return)]
"TARGET_SH2"
- "braf %1\\n%O3:%#"
+{
+ return "braf %1" "\n"
+ "%O3:%#";
+}
[(set_attr "needs_delay_slot" "yes")
(set (attr "fp_mode")
(if_then_else (eq_attr "fpu_single" "yes")
@@ -8392,9 +9199,16 @@ label:
;; because sibcall_epilogue may clobber MACL_REG.
(clobber (reg:SI MACL_REG))]
"TARGET_SHCOMPACT"
- "@
- jmp @%1%#
- jmp @%1\\n sts %3, r0"
+{
+ static const char* alt[] =
+ {
+ "jmp @%1%#",
+
+ "jmp @%1" "\n"
+ " sts %3,r0"
+ };
+ return alt[which_alternative];
+}
[(set_attr "needs_delay_slot" "yes,no")
(set_attr "length" "2,4")
(set (attr "fp_mode") (const_string "single"))
@@ -9318,13 +10132,18 @@ label:
switch (GET_MODE (diff_vec))
{
case SImode:
- return "shll2 %1\;mov.l @(r0,%1),%0";
+ return "shll2 %1" "\n"
+ " mov.l @(r0,%1),%0";
case HImode:
- return "add %1,%1\;mov.w @(r0,%1),%0";
+ return "add %1,%1" "\n"
+ " mov.w @(r0,%1),%0";
case QImode:
if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
- return "mov.b @(r0,%1),%0\;extu.b %0,%0";
- return "mov.b @(r0,%1),%0";
+ return "mov.b @(r0,%1),%0" "\n"
+ " extu.b %0,%0";
+ else
+ return "mov.b @(r0,%1),%0";
+
default:
gcc_unreachable ();
}
@@ -9341,29 +10160,33 @@ label:
"TARGET_SH2 && reload_completed && flag_pic"
{
rtx diff_vec = PATTERN (next_real_insn (operands[2]));
- const char *load;
-
gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
switch (GET_MODE (diff_vec))
{
case SImode:
- output_asm_insn ("shll2 %1", operands);
- load = "mov.l @(r0,%1),%0"; break;
+ return "shll2 %1" "\n"
+ " add r0,%1" "\n"
+ " mova %O3,r0" "\n"
+ " mov.l @(r0,%1),%0";
case HImode:
- output_asm_insn ("add %1,%1", operands);
- load = "mov.w @(r0,%1),%0"; break;
+ return "add %1,%1" "\n"
+ " add r0,%1" "\n"
+ " mova %O3,r0" "\n"
+ " mov.w @(r0,%1),%0";
case QImode:
if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
- load = "mov.b @(r0,%1),%0\;extu.b %0,%0";
+ return "add r0,%1" "\n"
+ " mova %O3,r0" "\n"
+ " mov.b @(r0,%1),%0" "\n"
+ " extu.b %0,%0";
else
- load = "mov.b @(r0,%1),%0";
- break;
+ return "add r0,%1" "\n"
+ " mova %O3,r0" "\n"
+ " mov.b @(r0,%1),%0";
default:
gcc_unreachable ();
}
- output_asm_insn ("add\tr0,%1\;mova\t%O3,r0\\n", operands);
- return load;
}
[(set_attr "length" "8")])
@@ -9449,8 +10272,7 @@ label:
&& (crtl->args.info.call_cookie
& CALL_COOKIE_RET_TRAMP (1)))
&& reload_completed
- && lookup_attribute (\"trap_exit\",
- DECL_ATTRIBUTES (current_function_decl)) == NULL_TREE"
+ && ! sh_cfun_trap_exit_p ()"
{
if (TARGET_SH2A && (dbr_sequence_length () == 0)
&& !current_function_interrupt)
@@ -9648,7 +10470,7 @@ label:
(set (mem:SI (plus:SI (match_dup 0) (const_int 4))) (reg:SI R1_REG))
(set (mem:SI (plus:SI (match_dup 0) (const_int 0))) (reg:SI R0_REG))]
"TARGET_SH2A && REGNO (operands[0]) == 15"
- "movml.l\tr7,@-r15"
+ "movml.l r7,@-r15"
[(set_attr "in_delay_slot" "no")])
(define_insn "movml_pop_banked"
@@ -9663,7 +10485,7 @@ label:
(set (reg:SI R6_REG) (mem:SI (plus:SI (match_dup 0) (const_int -8))))
(set (reg:SI R7_REG) (mem:SI (plus:SI (match_dup 0) (const_int -4))))]
"TARGET_SH2A && REGNO (operands[0]) == 15"
- "movml.l\t@r15+,r7"
+ "movml.l @r15+,r7"
[(set_attr "in_delay_slot" "no")])
;; ------------------------------------------------------------------------
@@ -9672,14 +10494,14 @@ label:
(define_insn "movt"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (eq:SI (reg:SI T_REG) (const_int 1)))]
+ (match_operand:SI 1 "t_reg_operand"))]
"TARGET_SH1"
"movt %0"
[(set_attr "type" "arith")])
(define_insn "movrt"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (xor:SI (reg:SI T_REG) (const_int 1)))]
+ (xor:SI (match_operand:SI 1 "t_reg_operand" "") (const_int 1)))]
"TARGET_SH2A"
"movrt %0"
[(set_attr "type" "arith")])
@@ -9832,83 +10654,153 @@ label:
(define_expand "movnegt"
[(set (match_operand:SI 0 "arith_reg_dest" "")
- (xor:SI (reg:SI T_REG) (const_int 1)))]
- ""
+ (xor:SI (match_operand:SI 1 "t_reg_operand" "") (const_int 1)))]
+ "TARGET_SH1"
{
if (TARGET_SH2A)
- emit_insn (gen_movrt (operands[0]));
+ emit_insn (gen_movrt (operands[0], operands[1]));
else
{
rtx val = force_reg (SImode, gen_int_mode (-1, SImode));
- emit_insn (gen_movrt_negc (operands[0], val));
+ emit_insn (gen_movrt_negc (operands[0], operands[1], val));
}
DONE;
})
(define_insn "movrt_negc"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (xor:SI (reg:SI T_REG) (const_int 1)))
+ (xor:SI (match_operand:SI 1 "t_reg_operand" "") (const_int 1)))
(set (reg:SI T_REG) (const_int 1))
- (use (match_operand:SI 1 "arith_reg_operand" "r"))]
+ (use (match_operand:SI 2 "arith_reg_operand" "r"))]
"TARGET_SH1"
- "negc %1,%0"
+ "negc %2,%0"
[(set_attr "type" "arith")])
-;; The *negnegt patterns help the combine pass to figure out how to fold
-;; an explicit double T bit negation.
-(define_insn_and_split "*negnegt"
- [(set (reg:SI T_REG)
- (eq:SI (subreg:QI (xor:SI (reg:SI T_REG) (const_int 1)) 3)
- (const_int 0)))]
- "! TARGET_LITTLE_ENDIAN"
+;; The -1 constant will not be CSE-ed for the *movrt_negc pattern, but the
+;; pattern can be used by the combine pass. Using a scratch reg for the
+;; -1 constant results in slightly better register allocations compared to
+;; generating a pseudo reg before reload.
+(define_insn_and_split "*movrt_negc"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (xor:SI (match_operand:SI 1 "t_reg_operand" "") (const_int 1)))
+ (clobber (match_scratch:SI 2 "=r"))
+ (clobber (reg:SI T_REG))]
+ "TARGET_SH1 && ! TARGET_SH2A"
"#"
- ""
- [(const_int 0)])
+ "&& reload_completed"
+ [(set (match_dup 2) (const_int -1))
+ (parallel
+ [(set (match_dup 0) (xor:SI (match_dup 1) (const_int 1)))
+ (set (reg:SI T_REG) (const_int 1))
+ (use (match_dup 2))])])
+
+;; In some cases the zero extension does not get combined away and a
+;; sequence like the following might remain:
+;; mov #-1,r2
+;; tst r1,r1
+;; negc r2,r1
+;; extu.b r1,r1
+(define_peephole2
+ [(parallel
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (xor:SI (match_operand:SI 1 "t_reg_operand" "") (const_int 1)))
+ (set (reg:SI T_REG) (const_int 1))
+ (use (match_operand:SI 2 "arith_reg_operand" ""))])
+ (set (match_dup 0)
+ (zero_extend:SI (match_operand 3 "arith_reg_operand" "")))]
+ "TARGET_SH1 && REGNO (operands[0]) == REGNO (operands[3])"
+ [(parallel
+ [(set (match_dup 0) (xor:SI (match_dup 1) (const_int 1)))
+ (set (reg:SI T_REG) (const_int 1))
+ (use (match_dup 2))])])
+;; The *negnegt pattern helps the combine pass to figure out how to fold
+;; an explicit double T bit negation.
(define_insn_and_split "*negnegt"
[(set (reg:SI T_REG)
- (eq:SI (subreg:QI (xor:SI (reg:SI T_REG) (const_int 1)) 0)
- (const_int 0)))]
- "TARGET_LITTLE_ENDIAN"
+ (eq:SI (match_operand 0 "negt_reg_operand" "") (const_int 0)))]
+ "TARGET_SH1"
"#"
""
[(const_int 0)])
-;; The *movtt patterns eliminate redundant T bit to T bit moves / tests.
+;; Store T bit as all zeros or ones in a reg.
+(define_insn "mov_neg_si_t"
+ [(set (match_operand:SI 0 "arith_reg_dest" "=r")
+ (neg:SI (match_operand 1 "t_reg_operand" "")))]
+ "TARGET_SH1"
+ "subc %0,%0"
+ [(set_attr "type" "arith")])
+
+;; Store negated T bit as all zeros or ones in a reg.
+;; Use the following sequence:
+;; subc Rn,Rn ! Rn = Rn - Rn - T; T = T
+;; not Rn,Rn ! Rn = 0 - Rn
+(define_split
+ [(set (match_operand:SI 0 "arith_reg_dest" "")
+ (neg:SI (match_operand 1 "negt_reg_operand" "")))]
+ "TARGET_SH1"
+ [(set (match_dup 0) (neg:SI (reg:SI T_REG)))
+ (set (match_dup 0) (not:SI (match_dup 0)))])
+
+;; The *movtt pattern eliminates redundant T bit to T bit moves / tests.
(define_insn_and_split "*movtt"
[(set (reg:SI T_REG)
- (eq:SI (zero_extend:SI (subreg:QI (reg:SI T_REG) 3))
- (const_int 1)))]
- "! TARGET_LITTLE_ENDIAN"
+ (eq:SI (match_operand 0 "t_reg_operand" "") (const_int 1)))]
+ "TARGET_SH1"
"#"
""
[(const_int 0)])
-(define_insn_and_split "*movtt"
+(define_insn_and_split "nott"
[(set (reg:SI T_REG)
- (eq:SI (zero_extend:SI (subreg:QI (reg:SI T_REG) 0))
- (const_int 1)))]
- "TARGET_LITTLE_ENDIAN"
- "#"
- ""
- [(const_int 0)])
+ (xor:SI (match_operand:SI 0 "t_reg_operand" "") (const_int 1)))]
+ "TARGET_SH1"
+{
+ gcc_assert (TARGET_SH2A);
+ return "nott";
+}
+ "! TARGET_SH2A && can_create_pseudo_p ()"
+ [(set (match_dup 0) (reg:SI T_REG))
+ (set (reg:SI T_REG) (eq:SI (match_dup 0) (const_int 0)))]
+{
+ operands[0] = gen_reg_rtx (SImode);
+})
-;; The *movt_qi patterns help the combine pass convert a movrt_negc pattern
-;; into a movt Rn, xor #1 Rn pattern. This can happen when e.g. a function
-;; returns the inverted T bit value.
-(define_insn "*movt_qi"
+;; The *cset_zero patterns convert optimizations such as
+;; "if (test) x = 0;" to "x &= -(test == 0);"
+;; back to conditional branch sequences if zero-displacement branches
+;; are enabled.
+;; FIXME: These patterns can be removed when conditional execution patterns
+;; are implemented, since ifcvt will not perform these optimizations if
+;; conditional execution is supported.
+(define_insn "*cset_zero"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (zero_extend:SI (subreg:QI (reg:SI T_REG) 3)))]
- "! TARGET_LITTLE_ENDIAN"
- "movt %0"
- [(set_attr "type" "arith")])
+ (and:SI (plus:SI (match_operand:SI 1 "t_reg_operand")
+ (const_int -1))
+ (match_operand:SI 2 "arith_reg_operand" "0")))]
+ "TARGET_SH1 && TARGET_ZDCBRANCH"
+{
+ return "bf 0f" "\n"
+ " mov #0,%0" "\n"
+ "0:";
+}
+ [(set_attr "type" "arith") ;; poor approximation
+ (set_attr "length" "4")])
-(define_insn "*movt_qi"
+(define_insn "*cset_zero"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
- (zero_extend:SI (subreg:QI (reg:SI T_REG) 0)))]
- "TARGET_LITTLE_ENDIAN"
- "movt %0"
- [(set_attr "type" "arith")])
+ (if_then_else:SI (match_operand:SI 1 "t_reg_operand")
+ (match_operand:SI 2 "arith_reg_operand" "0")
+ (const_int 0)))]
+ "TARGET_SH1 && TARGET_ZDCBRANCH"
+{
+ return "bt 0f" "\n"
+ " mov #0,%0" "\n"
+ "0:";
+}
+ [(set_attr "type" "arith") ;; poor approximation
+ (set_attr "length" "4")])
(define_expand "cstoresf4"
[(set (match_operand:SI 0 "register_operand" "=r")
@@ -10426,7 +11318,14 @@ label:
(mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "")
(match_operand:SF 2 "fp_arith_reg_operand" "")))]
"TARGET_SH2E || TARGET_SHMEDIA_FPU"
- "")
+{
+ if (TARGET_SH2E)
+ {
+ emit_insn (gen_mulsf3_i (operands[0], operands[1], operands[2],
+ get_fpscr_rtx ()));
+ DONE;
+ }
+})
(define_insn "*mulsf3_media"
[(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
@@ -10436,30 +11335,7 @@ label:
"fmul.s %1, %2, %0"
[(set_attr "type" "fparith_media")])
-;; FIXME: These fmac combine pass assisting specifics are obsolete since
-;; we now use the FMA patterns, which do not depend on the combine
-;; pass anymore.
-;; Unfortunately, the combiner is unable to cope with the USE of the FPSCR
-;; register in feeding fp instructions. Thus, in order to generate fmac,
-;; we start out with a mulsf pattern that does not depend on fpscr.
-;; This is split after combine to introduce the dependency, in order to
-;; get mode switching and scheduling right.
-(define_insn_and_split "mulsf3_ie"
- [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
- (mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%0")
- (match_operand:SF 2 "fp_arith_reg_operand" "f")))]
- "TARGET_SH2E"
- "fmul %2,%0"
- "TARGET_SH4 || TARGET_SH2A_SINGLE"
- [(const_int 0)]
-{
- emit_insn (gen_mulsf3_i4 (operands[0], operands[1], operands[2],
- get_fpscr_rtx ()));
- DONE;
-}
- [(set_attr "type" "fp")])
-
-(define_insn "mulsf3_i4"
+(define_insn "mulsf3_i"
[(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
(mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%0")
(match_operand:SF 2 "fp_arith_reg_operand" "f")))
@@ -11527,8 +12403,8 @@ label:
(match_dup 0)))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- bclr.b\\t%1,%0
- bclr.b\\t%1,@(0,%t0)"
+ bclr.b %1,%0
+ bclr.b %1,@(0,%t0)"
[(set_attr "length" "4,4")])
(define_insn "bclrmem_m2a"
@@ -11537,8 +12413,8 @@ label:
(match_operand:QI 1 "const_int_operand" "Psz,Psz")))]
"TARGET_SH2A && satisfies_constraint_Psz (operands[1]) && TARGET_BITOPS"
"@
- bclr.b\\t%W1,%0
- bclr.b\\t%W1,@(0,%t0)"
+ bclr.b %W1,%0
+ bclr.b %W1,@(0,%t0)"
[(set_attr "length" "4,4")])
;; Set a bit in a memory location.
@@ -11550,8 +12426,8 @@ label:
(match_dup 0)))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- bset.b\\t%1,%0
- bset.b\\t%1,@(0,%t0)"
+ bset.b %1,%0
+ bset.b %1,@(0,%t0)"
[(set_attr "length" "4,4")])
(define_insn "bsetmem_m2a"
@@ -11560,8 +12436,8 @@ label:
(match_operand:QI 1 "const_int_operand" "Pso,Pso")))]
"TARGET_SH2A && satisfies_constraint_Pso (operands[1]) && TARGET_BITOPS"
"@
- bset.b\\t%V1,%0
- bset.b\\t%V1,@(0,%t0)"
+ bset.b %V1,%0
+ bset.b %V1,@(0,%t0)"
[(set_attr "length" "4,4")])
;;; Transfer the contents of the T bit to a specified bit of memory.
@@ -11577,8 +12453,8 @@ label:
(match_dup 0))))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- bst.b\\t%1,%0
- bst.b\\t%1,@(0,%t0)"
+ bst.b %1,%0
+ bst.b %1,@(0,%t0)"
[(set_attr "length" "4")])
;; Store a specified bit of memory in the T bit.
@@ -11590,8 +12466,8 @@ label:
(match_operand 1 "const_int_operand" "K03,K03")))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- bld.b\\t%1,%0
- bld.b\\t%1,@(0,%t0)"
+ bld.b %1,%0
+ bld.b %1,@(0,%t0)"
[(set_attr "length" "4,4")])
;; Store a specified bit of memory in the T bit.
@@ -11603,8 +12479,8 @@ label:
(match_operand 1 "const_int_operand" "K03,K03")))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- bld.b\\t%1,%0
- bld.b\\t%1,@(0,%t0)"
+ bld.b %1,%0
+ bld.b %1,@(0,%t0)"
[(set_attr "length" "4,4")])
;; Store a specified bit of the LSB 8 bits of a register in the T bit.
@@ -11614,7 +12490,7 @@ label:
(const_int 1)
(match_operand 1 "const_int_operand" "K03")))]
"TARGET_SH2A"
- "bld\\t%1,%0")
+ "bld %1,%0")
(define_insn "*bld_regqi"
[(set (reg:SI T_REG)
@@ -11622,7 +12498,7 @@ label:
(const_int 1)
(match_operand 1 "const_int_operand" "K03")))]
"TARGET_SH2A"
- "bld\\t%1,%0")
+ "bld %1,%0")
;; Take logical and of a specified bit of memory with the T bit and
;; store its result in the T bit.
@@ -11635,8 +12511,8 @@ label:
(match_operand 1 "const_int_operand" "K03,K03"))))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- band.b\\t%1,%0
- band.b\\t%1,@(0,%t0)"
+ band.b %1,%0
+ band.b %1,@(0,%t0)"
[(set_attr "length" "4,4")])
(define_insn "bandreg_m2a"
@@ -11647,9 +12523,17 @@ label:
(match_operand 2 "const_int_operand" "K03,K03"))
(match_operand:SI 3 "register_operand" "r,r")))]
"TARGET_SH2A && TARGET_BITOPS"
- "@
- band.b\\t%2,%1\;movt\\t%0
- band.b\\t%2,@(0,%t1)\;movt\\t%0"
+{
+ static const char* alt[] =
+ {
+ "band.b %2,%1" "\n"
+ " movt %0",
+
+ "band.b %2,@(0,%t1)" "\n"
+ " movt %0"
+ };
+ return alt[which_alternative];
+}
[(set_attr "length" "6,6")])
;; Take logical or of a specified bit of memory with the T bit and
@@ -11663,8 +12547,8 @@ label:
(match_operand 1 "const_int_operand" "K03,K03"))))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- bor.b\\t%1,%0
- bor.b\\t%1,@(0,%t0)"
+ bor.b %1,%0
+ bor.b %1,@(0,%t0)"
[(set_attr "length" "4,4")])
(define_insn "borreg_m2a"
@@ -11675,9 +12559,17 @@ label:
(match_operand 2 "const_int_operand" "K03,K03"))
(match_operand:SI 3 "register_operand" "=r,r")))]
"TARGET_SH2A && TARGET_BITOPS"
- "@
- bor.b\\t%2,%1\;movt\\t%0
- bor.b\\t%2,@(0,%t1)\;movt\\t%0"
+{
+ static const char* alt[] =
+ {
+ "bor.b %2,%1" "\n"
+ " movt %0",
+
+ "bor.b %2,@(0,%t1)" "\n"
+ " movt %0"
+ };
+ return alt[which_alternative];
+}
[(set_attr "length" "6,6")])
;; Take exclusive or of a specified bit of memory with the T bit and
@@ -11691,8 +12583,8 @@ label:
(match_operand 1 "const_int_operand" "K03,K03"))))]
"TARGET_SH2A && TARGET_BITOPS"
"@
- bxor.b\\t%1,%0
- bxor.b\\t%1,@(0,%t0)"
+ bxor.b %1,%0
+ bxor.b %1,@(0,%t0)"
[(set_attr "length" "4,4")])
(define_insn "bxorreg_m2a"
@@ -11703,9 +12595,17 @@ label:
(match_operand 2 "const_int_operand" "K03,K03"))
(match_operand:SI 3 "register_operand" "=r,r")))]
"TARGET_SH2A && TARGET_BITOPS"
- "@
- bxor.b\\t%2,%1\;movt\\t%0
- bxor.b\\t%2,@(0,%t1)\;movt\\t%0"
+{
+ static const char* alt[] =
+ {
+ "bxor.b %2,%1" "\n"
+ " movt %0",
+
+ "bxor.b %2,@(0,%t1)" "\n"
+ " movt %0"
+ };
+ return alt[which_alternative];
+}
[(set_attr "length" "6,6")])
@@ -11888,70 +12788,6 @@ label:
(mem:HI (plus:SI (match_dup 1) (match_dup 2))))]
"")
-;; These convert sequences such as `mov #k,r0; add r15,r0; mov.l @r0,rn'
-;; to `mov #k,r0; mov.l @(r0,r15),rn'. These sequences are generated by
-;; reload when the constant is too large for a reg+offset address.
-
-;; ??? We would get much better code if this was done in reload. This would
-;; require modifying find_reloads_address to recognize that if the constant
-;; is out-of-range for an immediate add, then we get better code by reloading
-;; the constant into a register than by reloading the sum into a register,
-;; since the former is one instruction shorter if the address does not need
-;; to be offsettable. Unfortunately this does not work, because there is
-;; only one register, r0, that can be used as an index register. This register
-;; is also the function return value register. So, if we try to force reload
-;; to use double-reg addresses, then we end up with some instructions that
-;; need to use r0 twice. The only way to fix this is to change the calling
-;; convention so that r0 is not used to return values.
-
-(define_peephole
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (match_dup 0) (match_operand:SI 1 "register_operand" "r")))
- (set (mem:SI (match_dup 0))
- (match_operand:SI 2 "general_movsrc_operand" ""))]
- "TARGET_SH1 && REGNO (operands[0]) == 0 && reg_unused_after (operands[0], insn)"
- "mov.l %2,@(%0,%1)")
-
-(define_peephole
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (match_dup 0) (match_operand:SI 1 "register_operand" "r")))
- (set (match_operand:SI 2 "general_movdst_operand" "")
- (mem:SI (match_dup 0)))]
- "TARGET_SH1 && REGNO (operands[0]) == 0 && reg_unused_after (operands[0], insn)"
- "mov.l @(%0,%1),%2")
-
-(define_peephole
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (match_dup 0) (match_operand:SI 1 "register_operand" "r")))
- (set (mem:HI (match_dup 0))
- (match_operand:HI 2 "general_movsrc_operand" ""))]
- "TARGET_SH1 && REGNO (operands[0]) == 0 && reg_unused_after (operands[0], insn)"
- "mov.w %2,@(%0,%1)")
-
-(define_peephole
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (match_dup 0) (match_operand:SI 1 "register_operand" "r")))
- (set (match_operand:HI 2 "general_movdst_operand" "")
- (mem:HI (match_dup 0)))]
- "TARGET_SH1 && REGNO (operands[0]) == 0 && reg_unused_after (operands[0], insn)"
- "mov.w @(%0,%1),%2")
-
-(define_peephole
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (match_dup 0) (match_operand:SI 1 "register_operand" "r")))
- (set (mem:QI (match_dup 0))
- (match_operand:QI 2 "general_movsrc_operand" ""))]
- "TARGET_SH1 && REGNO (operands[0]) == 0 && reg_unused_after (operands[0], insn)"
- "mov.b %2,@(%0,%1)")
-
-(define_peephole
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (match_dup 0) (match_operand:SI 1 "register_operand" "r")))
- (set (match_operand:QI 2 "general_movdst_operand" "")
- (mem:QI (match_dup 0)))]
- "TARGET_SH1 && REGNO (operands[0]) == 0 && reg_unused_after (operands[0], insn)"
- "mov.b @(%0,%1),%2")
-
(define_peephole
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (match_dup 0) (match_operand:SI 1 "register_operand" "r")))
@@ -12004,23 +12840,28 @@ label:
&& reg_unused_after (operands[0], insn)"
"fmov{.s|} @(%0,%1),%2")
-;; Switch to a new stack with its address in sp_switch (a SYMBOL_REF). */
+;; Switch to a new stack with its address in sp_switch (a SYMBOL_REF).
(define_insn "sp_switch_1"
[(const_int 1) (match_operand:SI 0 "symbol_ref_operand" "s")]
"TARGET_SH1"
{
- output_asm_insn ("mov.l r0,@-r15\;mov.l %0,r0", operands);
- output_asm_insn ("mov.l @r0,r0\;mov.l r15,@-r0", operands);
- return "mov r0,r15";
+ return "mov.l r0,@-r15" "\n"
+ " mov.l %0,r0" "\n"
+ " mov.l @r0,r0" "\n"
+ " mov.l r15,@-r0" "\n"
+ " mov r0,r15";
}
[(set_attr "length" "10")])
;; Switch back to the original stack for interrupt functions with the
-;; sp_switch attribute. */
+;; sp_switch attribute.
(define_insn "sp_switch_2"
[(const_int 2)]
"TARGET_SH1"
- "mov.l @r15+,r15\;mov.l @r15+,r0"
+{
+ return "mov.l @r15+,r15" "\n"
+ " mov.l @r15+,r0";
+}
[(set_attr "length" "4")])
;; Integer vector moves
@@ -12377,7 +13218,8 @@ label:
"TARGET_SHMEDIA && INTVAL (operands[3]) + INTVAL (operands[4]) == 64"
{
static char templ[21];
- sprintf (templ, "mextr%d\\t%%N1, %%N2, %%0", (int) INTVAL (operands[3]) >> 3);
+ sprintf (templ, "mextr%d %%N1, %%N2, %%0",
+ (int) INTVAL (operands[3]) >> 3);
return templ;
}
[(set_attr "type" "arith_media")])
@@ -12391,7 +13233,8 @@ label:
"TARGET_SHMEDIA && INTVAL (operands[3]) + INTVAL (operands[4]) == 64"
{
static char templ[21];
- sprintf (templ, "mextr%d\\t%%N2, %%N1, %%0", (int) INTVAL (operands[4]) >> 3);
+ sprintf (templ, "mextr%d %%N2, %%N1, %%0",
+ (int) INTVAL (operands[4]) >> 3);
return templ;
}
[(set_attr "type" "arith_media")])
@@ -13812,44 +14655,36 @@ label:
"byterev %1, %0"
[(set_attr "type" "arith_media")])
-(define_insn "*prefetch_media"
- [(prefetch (match_operand:QI 0 "address_operand" "p")
- (match_operand:SI 1 "const_int_operand" "n")
- (match_operand:SI 2 "const_int_operand" "n"))]
- "TARGET_SHMEDIA"
-{
- operands[0] = gen_rtx_MEM (QImode, operands[0]);
- output_asm_insn ("ld%M0.b %m0,r63", operands);
- return "";
-}
- [(set_attr "type" "other")])
-
;; In user mode, the "pref" instruction will raise a RADDERR exception
;; for accesses to [0x80000000,0xffffffff]. This makes it an unsuitable
;; implementation of __builtin_prefetch for VxWorks RTPs.
(define_expand "prefetch"
- [(prefetch (match_operand 0 "address_operand" "p")
- (match_operand:SI 1 "const_int_operand" "n")
- (match_operand:SI 2 "const_int_operand" "n"))]
- "TARGET_SH2A || ((TARGET_HARD_SH4 || TARGET_SH5)
- && (TARGET_SHMEDIA || !TARGET_VXWORKS_RTP))"
-{
- if (GET_MODE (operands[0]) != Pmode
- || !CONST_INT_P (operands[1])
- || !CONST_INT_P (operands[2]))
- FAIL;
- if (! TARGET_SHMEDIA)
- operands[0] = force_reg (Pmode, operands[0]);
-})
+ [(prefetch (match_operand 0 "address_operand" "")
+ (match_operand:SI 1 "const_int_operand" "")
+ (match_operand:SI 2 "const_int_operand" ""))]
+ "(TARGET_SH2A || TARGET_SH3 || TARGET_SH5)
+ && (TARGET_SHMEDIA || ! TARGET_VXWORKS_RTP)")
(define_insn "*prefetch"
[(prefetch (match_operand:SI 0 "register_operand" "r")
(match_operand:SI 1 "const_int_operand" "n")
(match_operand:SI 2 "const_int_operand" "n"))]
- "(TARGET_SH2A || TARGET_HARD_SH4 || TARGET_SHCOMPACT) && !TARGET_VXWORKS_RTP"
+ "(TARGET_SH2A || TARGET_SH3 || TARGET_SHCOMPACT) && ! TARGET_VXWORKS_RTP"
"pref @%0"
[(set_attr "type" "other")])
+(define_insn "*prefetch_media"
+ [(prefetch (match_operand:QI 0 "address_operand" "p")
+ (match_operand:SI 1 "const_int_operand" "n")
+ (match_operand:SI 2 "const_int_operand" "n"))]
+ "TARGET_SHMEDIA"
+{
+ operands[0] = gen_rtx_MEM (QImode, operands[0]);
+ output_asm_insn ("ld%M0.b %m0,r63", operands);
+ return "";
+}
+ [(set_attr "type" "other")])
+
(define_insn "alloco_i"
[(set (mem:BLK (match_operand:QI 0 "cache_address_operand" "p"))
(unspec:BLK [(const_int 0)] UNSPEC_ALLOCO))]
@@ -13910,7 +14745,11 @@ label:
(unspec:SI [(match_operand:SI 1 "memory_operand" "m")] UNSPEC_SP_SET))
(set (match_scratch:SI 2 "=&r") (const_int 0))]
"!TARGET_SHMEDIA"
- "mov.l\t%1, %2\;mov.l\t%2, %0\;mov\t#0, %2"
+{
+ return "mov.l %1,%2" "\n"
+ " mov.l %2,%0" "\n"
+ " mov #0,%2";
+}
[(set_attr "type" "other")
(set_attr "length" "6")])
@@ -13919,7 +14758,11 @@ label:
(unspec:SI [(match_operand:SI 1 "memory_operand" "m")] UNSPEC_SP_SET))
(set (match_scratch:SI 2 "=&r") (const_int 0))]
"TARGET_SHMEDIA"
- "ld%M1.l\t%m1, %2\;st%M0.l\t%m0, %2\;movi\t0, %2"
+{
+ return "ld%M1.l %m1,%2" "\n"
+ " st%M0.l %m0,%2" "\n"
+ " movi 0,%2";
+}
[(set_attr "type" "other")
(set_attr "length" "12")])
@@ -13928,7 +14771,11 @@ label:
(unspec:DI [(match_operand:DI 1 "memory_operand" "m")] UNSPEC_SP_SET))
(set (match_scratch:DI 2 "=&r") (const_int 0))]
"TARGET_SHMEDIA64"
- "ld%M1.q\t%m1, %2\;st%M0.q\t%m0, %2\;movi\t0, %2"
+{
+ return "ld%M1.q %m1,%2" "\n"
+ " st%M0.q %m0,%2" "\n"
+ " movi 0,%2";
+}
[(set_attr "type" "other")
(set_attr "length" "12")])
@@ -13960,7 +14807,7 @@ label:
else
{
emit_insn (gen_stack_protect_test_si (operands[0], operands[1]));
- emit_jump_insn (gen_branch_true (operands[2]));
+ emit_jump_insn (gen_branch_true (operands[2], get_t_reg_rtx ()));
}
DONE;
@@ -13974,7 +14821,13 @@ label:
(set (match_scratch:SI 2 "=&r") (const_int 0))
(set (match_scratch:SI 3 "=&r") (const_int 0))]
"!TARGET_SHMEDIA"
- "mov.l\t%0, %2\;mov.l\t%1, %3\;cmp/eq\t%2, %3\;mov\t#0, %2\;mov\t#0, %3"
+{
+ return "mov.l %0,%2" "\n"
+ " mov.l %1,%3" "\n"
+ " cmp/eq %2,%3" "\n"
+ " mov #0,%2" "\n"
+ " mov #0,%3";
+}
[(set_attr "type" "other")
(set_attr "length" "10")])
@@ -13985,7 +14838,12 @@ label:
UNSPEC_SP_TEST))
(set (match_scratch:SI 3 "=&r") (const_int 0))]
"TARGET_SHMEDIA"
- "ld%M1.l\t%m1, %0\;ld%M2.l\t%m2, %3\;cmpeq\t%0, %3, %0\;movi\t0, %3"
+{
+ return "ld%M1.l %m1,%0" "\n"
+ " ld%M2.l %m2,%3" "\n"
+ " cmpeq %0,%3,%0" "\n"
+ " movi 0,%3";
+}
[(set_attr "type" "other")
(set_attr "length" "16")])
@@ -13996,7 +14854,12 @@ label:
UNSPEC_SP_TEST))
(set (match_scratch:DI 3 "=&r") (const_int 0))]
"TARGET_SHMEDIA64"
- "ld%M1.q\t%m1, %0\;ld%M2.q\t%m2, %3\;cmpeq\t%0, %3, %0\;movi\t0, %3"
+{
+ return "ld%M1.q %m1,%0" "\n"
+ " ld%M2.q %m2,%3" "\n"
+ " cmpeq %0,%3,%0" "\n"
+ " movi 0,%3";
+}
[(set_attr "type" "other")
(set_attr "length" "16")])
diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt
index 76e66e28899..70b7e09721f 100644
--- a/gcc/config/sh/sh.opt
+++ b/gcc/config/sh/sh.opt
@@ -225,6 +225,10 @@ mbranch-cost=
Target RejectNegative Joined UInteger Var(sh_branch_cost) Init(-1)
Cost to assume for a branch insn
+mzdcbranch
+Target Var(TARGET_ZDCBRANCH)
+Assume that zero displacement conditional branches are fast
+
mcbranchdi
Target Var(TARGET_CBRANCHDI4)
Enable cbranchdi4 pattern
@@ -266,8 +270,8 @@ Target Report RejectNegative Mask(HITACHI)
Follow Renesas (formerly Hitachi) / SuperH calling conventions
mieee
-Target Report Mask(IEEE)
-Increase the IEEE compliance for floating-point code
+Target Var(TARGET_IEEE)
+Increase the IEEE compliance for floating-point comparisons
mindexed-addressing
Target Report Mask(ALLOW_INDEXED_ADDRESS) Condition(SUPPORT_ANY_SH5_32MEDIA)
diff --git a/gcc/config/sh/sync.md b/gcc/config/sh/sync.md
index 79cd765d87f..6dabf873c17 100644
--- a/gcc/config/sh/sync.md
+++ b/gcc/config/sh/sync.md
@@ -830,7 +830,7 @@
/* The result of the test op is the inverse of what we are
supposed to return. Thus invert the T bit. The inversion will be
potentially optimized away and integrated into surrounding code. */
- emit_insn (gen_movnegt (operands[0]));
+ emit_insn (gen_movnegt (operands[0], get_t_reg_rtx ()));
DONE;
})
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 6835d6914c7..59ce3d014ca 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
#include "reload.h"
#include "params.h"
#include "df.h"
-#include "dwarf2out.h"
#include "opts.h"
/* Processor costs */
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index 387e50b5009..8f861000716 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -475,7 +475,6 @@ extern enum cmodel sparc_cmodel;
#endif
/* Now define the sizes of the C data types. */
-
#define SHORT_TYPE_SIZE 16
#define INT_TYPE_SIZE 32
#define LONG_TYPE_SIZE (TARGET_ARCH64 ? 64 : 32)
@@ -512,7 +511,6 @@ extern enum cmodel sparc_cmodel;
#define SPARC_STACK_BOUNDARY_HACK (TARGET_ARCH64 && TARGET_STACK_BIAS)
/* ALIGN FRAMES on double word boundaries */
-
#define SPARC_STACK_ALIGN(LOC) \
(TARGET_ARCH64 ? (((LOC)+15) & ~15) : (((LOC)+7) & ~7))
@@ -551,6 +549,10 @@ extern enum cmodel sparc_cmodel;
: MAX ((COMPUTED), (SPECIFIED))) \
: MAX ((COMPUTED), (SPECIFIED)))
+/* An integer expression for the size in bits of the largest integer machine
+ mode that should actually be used. We allow pairs of registers. */
+#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (TARGET_ARCH64 ? TImode : DImode)
+
/* We need 2 words, so we can save the stack pointer and the return register
of the function containing a non-local goto target. */
#define STACK_SAVEAREA_MODE(LEVEL) \
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 5cc6c677ccb..8f19efab45d 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -3528,7 +3528,7 @@
})
(define_insn_and_split "*adddi3_insn_sp32"
- [(set (match_operand:DI 0 "register_operand" "=r")
+ [(set (match_operand:DI 0 "register_operand" "=&r")
(plus:DI (match_operand:DI 1 "arith_double_operand" "%r")
(match_operand:DI 2 "arith_double_operand" "rHI")))
(clobber (reg:CC CC_REG))]
diff --git a/gcc/config/sparc/t-sparc b/gcc/config/sparc/t-sparc
index b7d4dacdcb6..432eb3e0e53 100644
--- a/gcc/config/sparc/t-sparc
+++ b/gcc/config/sparc/t-sparc
@@ -24,7 +24,7 @@ sparc.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(FUNCTION_H) $(EXCEPT_H) $(EXPR_H) $(OPTABS_H) $(RECOG_H) \
$(DIAGNOSTIC_CORE_H) $(GGC_H) $(TM_P_H) debug.h $(TARGET_H) \
$(TARGET_DEF_H) $(COMMON_TARGET_H) $(GIMPLE_H) \
- langhooks.h reload.h $(PARAMS_H) $(DF_H) dwarf2out.h $(OPTS_H) \
+ langhooks.h reload.h $(PARAMS_H) $(DF_H) $(OPTS_H) \
gt-sparc.h
sparc-c.o: $(srcdir)/config/sparc/sparc-c.c \
diff --git a/gcc/config/spu/spu-builtins.def b/gcc/config/spu/spu-builtins.def
index 4d01d945cf5..6095e9cbc3c 100644
--- a/gcc/config/spu/spu-builtins.def
+++ b/gcc/config/spu/spu-builtins.def
@@ -62,15 +62,15 @@ DEF_BUILTIN (SI_SFI, CODE_FOR_spu_sf, "si_sfi", B_INSN,
DEF_BUILTIN (SI_SFX, CODE_FOR_spu_sfx, "si_sfx", B_INSN, _A4(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
DEF_BUILTIN (SI_BG, CODE_FOR_spu_bg, "si_bg", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
DEF_BUILTIN (SI_BGX, CODE_FOR_spu_bgx, "si_bgx", B_INSN, _A4(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
-DEF_BUILTIN (SI_MPY, CODE_FOR_spu_mpy, "si_mpy", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
-DEF_BUILTIN (SI_MPYU, CODE_FOR_spu_mpyu, "si_mpyu", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
-DEF_BUILTIN (SI_MPYI, CODE_FOR_spu_mpy, "si_mpyi", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_S10))
-DEF_BUILTIN (SI_MPYUI, CODE_FOR_spu_mpyu, "si_mpyui", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_S10))
+DEF_BUILTIN (SI_MPY, CODE_FOR_vec_widen_smult_odd_v8hi, "si_mpy", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
+DEF_BUILTIN (SI_MPYU, CODE_FOR_vec_widen_umult_odd_v8hi, "si_mpyu", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
+DEF_BUILTIN (SI_MPYI, CODE_FOR_vec_widen_smult_odd_v8hi, "si_mpyi", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_S10))
+DEF_BUILTIN (SI_MPYUI, CODE_FOR_vec_widen_umult_odd_v8hi, "si_mpyui", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_S10))
DEF_BUILTIN (SI_MPYA, CODE_FOR_spu_mpya, "si_mpya", B_INSN, _A4(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
DEF_BUILTIN (SI_MPYH, CODE_FOR_spu_mpyh, "si_mpyh", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
DEF_BUILTIN (SI_MPYS, CODE_FOR_spu_mpys, "si_mpys", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
-DEF_BUILTIN (SI_MPYHH, CODE_FOR_spu_mpyhh, "si_mpyhh", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
-DEF_BUILTIN (SI_MPYHHU, CODE_FOR_spu_mpyhhu, "si_mpyhhu", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
+DEF_BUILTIN (SI_MPYHH, CODE_FOR_vec_widen_smult_even_v8hi, "si_mpyhh", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
+DEF_BUILTIN (SI_MPYHHU, CODE_FOR_vec_widen_umult_even_v8hi, "si_mpyhhu", B_INSN, _A3(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
DEF_BUILTIN (SI_MPYHHA, CODE_FOR_spu_mpyhha, "si_mpyhha", B_INSN, _A4(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
DEF_BUILTIN (SI_MPYHHAU, CODE_FOR_spu_mpyhhau, "si_mpyhhau", B_INSN, _A4(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
DEF_BUILTIN (SI_CLZ, CODE_FOR_clzv4si2, "si_clz", B_INSN, _A2(SPU_BTI_QUADWORD, SPU_BTI_QUADWORD))
@@ -295,16 +295,16 @@ DEF_BUILTIN (SPU_MHHADD, CODE_FOR_nothing, "spu_mhhadd",
DEF_BUILTIN (SPU_MHHADD_0, CODE_FOR_spu_mpyhhau, "spu_mhhadd_0", B_INTERNAL, _A4(SPU_BTI_UV4SI, SPU_BTI_UV8HI, SPU_BTI_UV8HI, SPU_BTI_UV4SI))
DEF_BUILTIN (SPU_MHHADD_1, CODE_FOR_spu_mpyhha, "spu_mhhadd_1", B_INTERNAL, _A4(SPU_BTI_V4SI, SPU_BTI_V8HI, SPU_BTI_V8HI, SPU_BTI_V4SI))
DEF_BUILTIN (SPU_MULE, CODE_FOR_nothing, "spu_mule", B_OVERLOAD, _A1(SPU_BTI_VOID))
-DEF_BUILTIN (SPU_MULE_0, CODE_FOR_spu_mpyhhu, "spu_mule_0", B_INTERNAL, _A3(SPU_BTI_UV4SI, SPU_BTI_UV8HI, SPU_BTI_UV8HI))
-DEF_BUILTIN (SPU_MULE_1, CODE_FOR_spu_mpyhh, "spu_mule_1", B_INTERNAL, _A3(SPU_BTI_V4SI, SPU_BTI_V8HI, SPU_BTI_V8HI))
+DEF_BUILTIN (SPU_MULE_0, CODE_FOR_vec_widen_umult_even_v8hi, "spu_mule_0", B_INTERNAL, _A3(SPU_BTI_UV4SI, SPU_BTI_UV8HI, SPU_BTI_UV8HI))
+DEF_BUILTIN (SPU_MULE_1, CODE_FOR_vec_widen_smult_even_v8hi, "spu_mule_1", B_INTERNAL, _A3(SPU_BTI_V4SI, SPU_BTI_V8HI, SPU_BTI_V8HI))
DEF_BUILTIN (SPU_MUL, CODE_FOR_nothing, "spu_mul", B_OVERLOAD, _A1(SPU_BTI_VOID))
DEF_BUILTIN (SPU_MUL_0, CODE_FOR_mulv4sf3, "spu_mul_0", B_INTERNAL, _A3(SPU_BTI_V4SF, SPU_BTI_V4SF, SPU_BTI_V4SF))
DEF_BUILTIN (SPU_MUL_1, CODE_FOR_mulv2df3, "spu_mul_1", B_INTERNAL, _A3(SPU_BTI_V2DF, SPU_BTI_V2DF, SPU_BTI_V2DF))
DEF_BUILTIN (SPU_MULO, CODE_FOR_nothing, "spu_mulo", B_OVERLOAD, _A1(SPU_BTI_VOID))
-DEF_BUILTIN (SPU_MULO_0, CODE_FOR_spu_mpy, "spu_mulo_0", B_INTERNAL, _A3(SPU_BTI_V4SI, SPU_BTI_V8HI, SPU_BTI_V8HI))
-DEF_BUILTIN (SPU_MULO_1, CODE_FOR_spu_mpyu, "spu_mulo_1", B_INTERNAL, _A3(SPU_BTI_UV4SI, SPU_BTI_UV8HI, SPU_BTI_UV8HI))
-DEF_BUILTIN (SPU_MULO_2, CODE_FOR_spu_mpy, "spu_mulo_2", B_INTERNAL, _A3(SPU_BTI_V4SI, SPU_BTI_V8HI, SPU_BTI_INTHI))
-DEF_BUILTIN (SPU_MULO_3, CODE_FOR_spu_mpyu, "spu_mulo_3", B_INTERNAL, _A3(SPU_BTI_UV4SI, SPU_BTI_UV8HI, SPU_BTI_UINTHI))
+DEF_BUILTIN (SPU_MULO_0, CODE_FOR_vec_widen_smult_odd_v8hi, "spu_mulo_0", B_INTERNAL, _A3(SPU_BTI_V4SI, SPU_BTI_V8HI, SPU_BTI_V8HI))
+DEF_BUILTIN (SPU_MULO_1, CODE_FOR_vec_widen_umult_odd_v8hi, "spu_mulo_1", B_INTERNAL, _A3(SPU_BTI_UV4SI, SPU_BTI_UV8HI, SPU_BTI_UV8HI))
+DEF_BUILTIN (SPU_MULO_2, CODE_FOR_vec_widen_smult_odd_v8hi, "spu_mulo_2", B_INTERNAL, _A3(SPU_BTI_V4SI, SPU_BTI_V8HI, SPU_BTI_INTHI))
+DEF_BUILTIN (SPU_MULO_3, CODE_FOR_vec_widen_umult_odd_v8hi, "spu_mulo_3", B_INTERNAL, _A3(SPU_BTI_UV4SI, SPU_BTI_UV8HI, SPU_BTI_UINTHI))
DEF_BUILTIN (SPU_NMSUB, CODE_FOR_nothing, "spu_nmsub", B_OVERLOAD, _A1(SPU_BTI_VOID))
DEF_BUILTIN (SPU_NMSUB_0, CODE_FOR_fnmav4sf4, "spu_nmsub_0", B_INTERNAL, _A4(SPU_BTI_V4SF, SPU_BTI_V4SF, SPU_BTI_V4SF, SPU_BTI_V4SF))
DEF_BUILTIN (SPU_NMSUB_1, CODE_FOR_nfmsv2df4, "spu_nmsub_1", B_INTERNAL, _A4(SPU_BTI_V2DF, SPU_BTI_V2DF, SPU_BTI_V2DF, SPU_BTI_V2DF))
diff --git a/gcc/config/spu/spu-builtins.md b/gcc/config/spu/spu-builtins.md
index ac3a3336106..6f7baadb295 100644
--- a/gcc/config/spu/spu-builtins.md
+++ b/gcc/config/spu/spu-builtins.md
@@ -197,41 +197,6 @@
""
"")
-;; integer multiply
-(define_insn "spu_mpy"
- [(set (match_operand:V4SI 0 "spu_reg_operand" "=r,r")
- (mult:V4SI
- (sign_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 1 "spu_reg_operand" "r,r")
- (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))
- (sign_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 2 "spu_arith_operand" "r,B")
- (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))))]
- ""
- "@
- mpy\t%0,%1,%2
- mpyi\t%0,%1,%2"
- [(set_attr "type" "fp7")])
-
-(define_insn "spu_mpyu"
- [(set (match_operand:V4SI 0 "spu_reg_operand" "=r,r")
- (mult:V4SI
- (zero_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 1 "spu_reg_operand" "r,r")
- (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))
- (zero_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 2 "spu_arith_operand" "r,B")
- (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))))]
- ""
- "@
- mpyu\t%0,%1,%2
- mpyui\t%0,%1,%2"
- [(set_attr "type" "fp7")])
-
(define_insn "spu_mpya"
[(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
(plus:V4SI
@@ -283,36 +248,6 @@
"mpys\t%0,%1,%2"
[(set_attr "type" "fp7")])
-(define_insn "spu_mpyhhu"
- [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
- (mult:V4SI
- (zero_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 1 "spu_reg_operand" "r")
- (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))
- (zero_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 2 "spu_reg_operand" "r")
- (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))))]
- ""
- "mpyhhu\t%0,%1,%2"
- [(set_attr "type" "fp7")])
-
-(define_insn "spu_mpyhh"
- [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
- (mult:V4SI
- (sign_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 1 "spu_reg_operand" "r")
- (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))
- (sign_extend:V4SI
- (vec_select:V4HI
- (match_operand:V8HI 2 "spu_reg_operand" "r")
- (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))))]
- ""
- "mpyhh\t%0,%1,%2"
- [(set_attr "type" "fp7")])
-
(define_insn "spu_mpyhhau"
[(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
(plus:V4SI
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index 3e0135fb592..51e0dfbb083 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -52,6 +52,8 @@
#include "sbitmap.h"
#include "timevar.h"
#include "df.h"
+#include "dumpfile.h"
+#include "cfgloop.h"
/* Builtin types, data and prototypes. */
@@ -146,90 +148,11 @@ static struct spu_builtin_range spu_builtin_range[] = {
char regs_ever_allocated[FIRST_PSEUDO_REGISTER];
/* Prototypes and external defs. */
-static void spu_option_override (void);
-static void spu_init_builtins (void);
-static tree spu_builtin_decl (unsigned, bool);
-static bool spu_scalar_mode_supported_p (enum machine_mode mode);
-static bool spu_vector_mode_supported_p (enum machine_mode mode);
-static bool spu_legitimate_address_p (enum machine_mode, rtx, bool);
-static bool spu_addr_space_legitimate_address_p (enum machine_mode, rtx,
- bool, addr_space_t);
-static rtx adjust_operand (rtx op, HOST_WIDE_INT * start);
-static rtx get_pic_reg (void);
-static int need_to_save_reg (int regno, int saving);
-static rtx frame_emit_store (int regno, rtx addr, HOST_WIDE_INT offset);
-static rtx frame_emit_load (int regno, rtx addr, HOST_WIDE_INT offset);
-static rtx frame_emit_add_imm (rtx dst, rtx src, HOST_WIDE_INT imm,
- rtx scratch);
-static void emit_nop_for_insn (rtx insn);
-static bool insn_clobbers_hbr (rtx insn);
-static void spu_emit_branch_hint (rtx before, rtx branch, rtx target,
- int distance, sbitmap blocks);
-static rtx spu_emit_vector_compare (enum rtx_code rcode, rtx op0, rtx op1,
- enum machine_mode dmode);
-static rtx get_branch_target (rtx branch);
-static void spu_machine_dependent_reorg (void);
-static int spu_sched_issue_rate (void);
-static int spu_sched_variable_issue (FILE * dump, int verbose, rtx insn,
- int can_issue_more);
static int get_pipe (rtx insn);
-static int spu_sched_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost);
-static void spu_sched_init_global (FILE *, int, int);
-static void spu_sched_init (FILE *, int, int);
-static int spu_sched_reorder (FILE *, int, rtx *, int *, int);
-static tree spu_handle_fndecl_attribute (tree * node, tree name, tree args,
- int flags,
- bool *no_add_attrs);
-static tree spu_handle_vector_attribute (tree * node, tree name, tree args,
- int flags,
- bool *no_add_attrs);
static int spu_naked_function_p (tree func);
-static bool spu_pass_by_reference (cumulative_args_t cum,
- enum machine_mode mode,
- const_tree type, bool named);
-static rtx spu_function_arg (cumulative_args_t cum, enum machine_mode mode,
- const_tree type, bool named);
-static void spu_function_arg_advance (cumulative_args_t cum,
- enum machine_mode mode,
- const_tree type, bool named);
-static tree spu_build_builtin_va_list (void);
-static void spu_va_start (tree, rtx);
-static tree spu_gimplify_va_arg_expr (tree valist, tree type,
- gimple_seq * pre_p, gimple_seq * post_p);
-static int store_with_one_insn_p (rtx mem);
static int mem_is_padded_component_ref (rtx x);
-static int reg_aligned_for_addr (rtx x);
-static bool spu_assemble_integer (rtx x, unsigned int size, int aligned_p);
-static void spu_asm_globalize_label (FILE * file, const char *name);
-static bool spu_rtx_costs (rtx x, int code, int outer_code, int opno,
- int *total, bool speed);
-static bool spu_function_ok_for_sibcall (tree decl, tree exp);
-static void spu_init_libfuncs (void);
-static bool spu_return_in_memory (const_tree type, const_tree fntype);
static void fix_range (const char *);
-static void spu_encode_section_info (tree, rtx, int);
-static rtx spu_legitimize_address (rtx, rtx, enum machine_mode);
-static rtx spu_addr_space_legitimize_address (rtx, rtx, enum machine_mode,
- addr_space_t);
-static tree spu_builtin_mul_widen_even (tree);
-static tree spu_builtin_mul_widen_odd (tree);
-static tree spu_builtin_mask_for_load (void);
-static int spu_builtin_vectorization_cost (enum vect_cost_for_stmt, tree, int);
-static bool spu_vector_alignment_reachable (const_tree, bool);
-static enum machine_mode spu_addr_space_pointer_mode (addr_space_t);
-static enum machine_mode spu_addr_space_address_mode (addr_space_t);
-static bool spu_addr_space_subset_p (addr_space_t, addr_space_t);
-static rtx spu_addr_space_convert (rtx, tree, tree);
-static int spu_sms_res_mii (struct ddg *g);
-static unsigned int spu_section_type_flags (tree, const char *, int);
-static section *spu_select_section (tree, int, unsigned HOST_WIDE_INT);
-static void spu_unique_section (tree, int);
static rtx spu_expand_load (rtx, rtx, rtx, int);
-static void spu_trampoline_init (rtx, tree, rtx);
-static void spu_conditional_register_usage (void);
-static bool spu_ref_may_alias_errno (ao_ref *);
-static void spu_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
- HOST_WIDE_INT, tree);
/* Which instruction set architecture to use. */
int spu_arch;
@@ -273,227 +196,10 @@ static int cpat_info(unsigned char *arr, int size, int *prun, int *pstart);
static enum immediate_class classify_immediate (rtx op,
enum machine_mode mode);
-static enum machine_mode spu_unwind_word_mode (void);
-
-static enum machine_mode
-spu_libgcc_cmp_return_mode (void);
-
-static enum machine_mode
-spu_libgcc_shift_count_mode (void);
-
/* Pointer mode for __ea references. */
#define EAmode (spu_ea_model != 32 ? DImode : SImode)
-/* Table of machine attributes. */
-static const struct attribute_spec spu_attribute_table[] =
-{
- /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler,
- affects_type_identity } */
- { "naked", 0, 0, true, false, false, spu_handle_fndecl_attribute,
- false },
- { "spu_vector", 0, 0, false, true, false, spu_handle_vector_attribute,
- false },
- { NULL, 0, 0, false, false, false, NULL, false }
-};
-
-/* TARGET overrides. */
-
-#undef TARGET_ADDR_SPACE_POINTER_MODE
-#define TARGET_ADDR_SPACE_POINTER_MODE spu_addr_space_pointer_mode
-
-#undef TARGET_ADDR_SPACE_ADDRESS_MODE
-#define TARGET_ADDR_SPACE_ADDRESS_MODE spu_addr_space_address_mode
-
-#undef TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P
-#define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P \
- spu_addr_space_legitimate_address_p
-
-#undef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS
-#define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS spu_addr_space_legitimize_address
-
-#undef TARGET_ADDR_SPACE_SUBSET_P
-#define TARGET_ADDR_SPACE_SUBSET_P spu_addr_space_subset_p
-
-#undef TARGET_ADDR_SPACE_CONVERT
-#define TARGET_ADDR_SPACE_CONVERT spu_addr_space_convert
-
-#undef TARGET_INIT_BUILTINS
-#define TARGET_INIT_BUILTINS spu_init_builtins
-#undef TARGET_BUILTIN_DECL
-#define TARGET_BUILTIN_DECL spu_builtin_decl
-
-#undef TARGET_EXPAND_BUILTIN
-#define TARGET_EXPAND_BUILTIN spu_expand_builtin
-
-#undef TARGET_UNWIND_WORD_MODE
-#define TARGET_UNWIND_WORD_MODE spu_unwind_word_mode
-
-#undef TARGET_LEGITIMIZE_ADDRESS
-#define TARGET_LEGITIMIZE_ADDRESS spu_legitimize_address
-
-/* The current assembler doesn't like .4byte foo@ppu, so use the normal .long
- and .quad for the debugger. When it is known that the assembler is fixed,
- these can be removed. */
-#undef TARGET_ASM_UNALIGNED_SI_OP
-#define TARGET_ASM_UNALIGNED_SI_OP "\t.long\t"
-
-#undef TARGET_ASM_ALIGNED_DI_OP
-#define TARGET_ASM_ALIGNED_DI_OP "\t.quad\t"
-
-/* The .8byte directive doesn't seem to work well for a 32 bit
- architecture. */
-#undef TARGET_ASM_UNALIGNED_DI_OP
-#define TARGET_ASM_UNALIGNED_DI_OP NULL
-
-#undef TARGET_RTX_COSTS
-#define TARGET_RTX_COSTS spu_rtx_costs
-
-#undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
-
-#undef TARGET_SCHED_ISSUE_RATE
-#define TARGET_SCHED_ISSUE_RATE spu_sched_issue_rate
-
-#undef TARGET_SCHED_INIT_GLOBAL
-#define TARGET_SCHED_INIT_GLOBAL spu_sched_init_global
-
-#undef TARGET_SCHED_INIT
-#define TARGET_SCHED_INIT spu_sched_init
-
-#undef TARGET_SCHED_VARIABLE_ISSUE
-#define TARGET_SCHED_VARIABLE_ISSUE spu_sched_variable_issue
-
-#undef TARGET_SCHED_REORDER
-#define TARGET_SCHED_REORDER spu_sched_reorder
-
-#undef TARGET_SCHED_REORDER2
-#define TARGET_SCHED_REORDER2 spu_sched_reorder
-
-#undef TARGET_SCHED_ADJUST_COST
-#define TARGET_SCHED_ADJUST_COST spu_sched_adjust_cost
-
-#undef TARGET_ATTRIBUTE_TABLE
-#define TARGET_ATTRIBUTE_TABLE spu_attribute_table
-
-#undef TARGET_ASM_INTEGER
-#define TARGET_ASM_INTEGER spu_assemble_integer
-
-#undef TARGET_SCALAR_MODE_SUPPORTED_P
-#define TARGET_SCALAR_MODE_SUPPORTED_P spu_scalar_mode_supported_p
-
-#undef TARGET_VECTOR_MODE_SUPPORTED_P
-#define TARGET_VECTOR_MODE_SUPPORTED_P spu_vector_mode_supported_p
-
-#undef TARGET_FUNCTION_OK_FOR_SIBCALL
-#define TARGET_FUNCTION_OK_FOR_SIBCALL spu_function_ok_for_sibcall
-
-#undef TARGET_ASM_GLOBALIZE_LABEL
-#define TARGET_ASM_GLOBALIZE_LABEL spu_asm_globalize_label
-
-#undef TARGET_PASS_BY_REFERENCE
-#define TARGET_PASS_BY_REFERENCE spu_pass_by_reference
-
-#undef TARGET_FUNCTION_ARG
-#define TARGET_FUNCTION_ARG spu_function_arg
-
-#undef TARGET_FUNCTION_ARG_ADVANCE
-#define TARGET_FUNCTION_ARG_ADVANCE spu_function_arg_advance
-
-#undef TARGET_MUST_PASS_IN_STACK
-#define TARGET_MUST_PASS_IN_STACK must_pass_in_stack_var_size
-
-#undef TARGET_BUILD_BUILTIN_VA_LIST
-#define TARGET_BUILD_BUILTIN_VA_LIST spu_build_builtin_va_list
-
-#undef TARGET_EXPAND_BUILTIN_VA_START
-#define TARGET_EXPAND_BUILTIN_VA_START spu_va_start
-
-static void spu_setup_incoming_varargs (cumulative_args_t cum,
- enum machine_mode mode,
- tree type, int *pretend_size,
- int no_rtl);
-#undef TARGET_SETUP_INCOMING_VARARGS
-#define TARGET_SETUP_INCOMING_VARARGS spu_setup_incoming_varargs
-
-#undef TARGET_MACHINE_DEPENDENT_REORG
-#define TARGET_MACHINE_DEPENDENT_REORG spu_machine_dependent_reorg
-
-#undef TARGET_GIMPLIFY_VA_ARG_EXPR
-#define TARGET_GIMPLIFY_VA_ARG_EXPR spu_gimplify_va_arg_expr
-
-#undef TARGET_INIT_LIBFUNCS
-#define TARGET_INIT_LIBFUNCS spu_init_libfuncs
-
-#undef TARGET_RETURN_IN_MEMORY
-#define TARGET_RETURN_IN_MEMORY spu_return_in_memory
-
-#undef TARGET_ENCODE_SECTION_INFO
-#define TARGET_ENCODE_SECTION_INFO spu_encode_section_info
-
-#undef TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN
-#define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN spu_builtin_mul_widen_even
-
-#undef TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD
-#define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD spu_builtin_mul_widen_odd
-
-#undef TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD
-#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD spu_builtin_mask_for_load
-
-#undef TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
-#define TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST spu_builtin_vectorization_cost
-
-#undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
-#define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE spu_vector_alignment_reachable
-
-#undef TARGET_LIBGCC_CMP_RETURN_MODE
-#define TARGET_LIBGCC_CMP_RETURN_MODE spu_libgcc_cmp_return_mode
-
-#undef TARGET_LIBGCC_SHIFT_COUNT_MODE
-#define TARGET_LIBGCC_SHIFT_COUNT_MODE spu_libgcc_shift_count_mode
-
-#undef TARGET_SCHED_SMS_RES_MII
-#define TARGET_SCHED_SMS_RES_MII spu_sms_res_mii
-
-#undef TARGET_SECTION_TYPE_FLAGS
-#define TARGET_SECTION_TYPE_FLAGS spu_section_type_flags
-
-#undef TARGET_ASM_SELECT_SECTION
-#define TARGET_ASM_SELECT_SECTION spu_select_section
-
-#undef TARGET_ASM_UNIQUE_SECTION
-#define TARGET_ASM_UNIQUE_SECTION spu_unique_section
-
-#undef TARGET_LEGITIMATE_ADDRESS_P
-#define TARGET_LEGITIMATE_ADDRESS_P spu_legitimate_address_p
-
-#undef TARGET_LEGITIMATE_CONSTANT_P
-#define TARGET_LEGITIMATE_CONSTANT_P spu_legitimate_constant_p
-
-#undef TARGET_TRAMPOLINE_INIT
-#define TARGET_TRAMPOLINE_INIT spu_trampoline_init
-
-#undef TARGET_OPTION_OVERRIDE
-#define TARGET_OPTION_OVERRIDE spu_option_override
-
-#undef TARGET_CONDITIONAL_REGISTER_USAGE
-#define TARGET_CONDITIONAL_REGISTER_USAGE spu_conditional_register_usage
-
-#undef TARGET_REF_MAY_ALIAS_ERRNO
-#define TARGET_REF_MAY_ALIAS_ERRNO spu_ref_may_alias_errno
-
-#undef TARGET_ASM_OUTPUT_MI_THUNK
-#define TARGET_ASM_OUTPUT_MI_THUNK spu_output_mi_thunk
-#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
-#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_const_tree_hwi_hwi_const_tree_true
-
-/* Variable tracking should be run after all optimizations which
- change order of insns. It also needs a valid CFG. */
-#undef TARGET_DELAY_VARTRACK
-#define TARGET_DELAY_VARTRACK true
-
-struct gcc_target targetm = TARGET_INITIALIZER;
-
/* Define the structure for the machine field in struct function. */
struct GTY(()) machine_function
{
@@ -2753,6 +2459,10 @@ spu_machine_dependent_reorg (void)
in_spu_reorg = 1;
compute_bb_for_insn ();
+ /* (Re-)discover loops so that bb->loop_father can be used
+ in the analysis below. */
+ loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
+
compact_blocks ();
spu_bb_info =
@@ -2857,14 +2567,13 @@ spu_machine_dependent_reorg (void)
fallthru block. This catches the cases when it is a simple
loop or when there is an initial branch into the loop. */
if (prev && (loop_exit || simple_loop)
- && prev->loop_depth <= bb->loop_depth)
+ && bb_loop_depth (prev) <= bb_loop_depth (bb))
prop = prev;
/* If there is only one adjacent predecessor. Don't propagate
- outside this loop. This loop_depth test isn't perfect, but
- I'm not sure the loop_father member is valid at this point. */
+ outside this loop. */
else if (prev && single_pred_p (bb)
- && prev->loop_depth == bb->loop_depth)
+ && prev->loop_father == bb->loop_father)
prop = prev;
/* If this is the JOIN block of a simple IF-THEN then
@@ -2873,7 +2582,7 @@ spu_machine_dependent_reorg (void)
&& EDGE_COUNT (bb->preds) == 2
&& EDGE_COUNT (prev->preds) == 1
&& EDGE_PRED (prev, 0)->src == prev2
- && prev2->loop_depth == bb->loop_depth
+ && prev2->loop_father == bb->loop_father
&& GET_CODE (branch_target) != REG)
prop = prev;
@@ -2895,7 +2604,7 @@ spu_machine_dependent_reorg (void)
if (dump_file)
fprintf (dump_file, "propagate from %i to %i (loop depth %i) "
"for %i (loop_exit %i simple_loop %i dist %i)\n",
- bb->index, prop->index, bb->loop_depth,
+ bb->index, prop->index, bb_loop_depth (bb),
INSN_UID (branch), loop_exit, simple_loop,
branch_addr - INSN_ADDRESSES (INSN_UID (bbend)));
@@ -2952,6 +2661,8 @@ spu_machine_dependent_reorg (void)
spu_var_tracking ();
+ loop_optimizer_finalize ();
+
free_bb_for_insn ();
in_spu_reorg = 0;
@@ -3883,7 +3594,7 @@ spu_addr_space_legitimate_address_p (enum machine_mode mode, rtx x,
/* When the address is reg + const_int, force the const_int into a
register. */
-rtx
+static rtx
spu_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
enum machine_mode mode ATTRIBUTE_UNUSED)
{
@@ -6176,6 +5887,14 @@ spu_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt)
emit_insn (gen_sync ());
}
+static bool
+spu_warn_func_return (tree decl)
+{
+ /* Naked functions are implemented entirely in assembly, including the
+ return sequence, so suppress warnings about this. */
+ return !spu_naked_function_p (decl);
+}
+
void
spu_expand_sign_extend (rtx ops[])
{
@@ -6863,40 +6582,6 @@ spu_expand_builtin (tree exp,
abort ();
}
-/* Implement targetm.vectorize.builtin_mul_widen_even. */
-static tree
-spu_builtin_mul_widen_even (tree type)
-{
- switch (TYPE_MODE (type))
- {
- case V8HImode:
- if (TYPE_UNSIGNED (type))
- return spu_builtin_decls[SPU_MULE_0];
- else
- return spu_builtin_decls[SPU_MULE_1];
- break;
- default:
- return NULL_TREE;
- }
-}
-
-/* Implement targetm.vectorize.builtin_mul_widen_odd. */
-static tree
-spu_builtin_mul_widen_odd (tree type)
-{
- switch (TYPE_MODE (type))
- {
- case V8HImode:
- if (TYPE_UNSIGNED (type))
- return spu_builtin_decls[SPU_MULO_1];
- else
- return spu_builtin_decls[SPU_MULO_0];
- break;
- default:
- return NULL_TREE;
- }
-}
-
/* Implement targetm.vectorize.builtin_mask_for_load. */
static tree
spu_builtin_mask_for_load (void)
@@ -6947,6 +6632,64 @@ spu_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
}
}
+/* Implement targetm.vectorize.init_cost. */
+
+static void *
+spu_init_cost (struct loop *loop_info ATTRIBUTE_UNUSED)
+{
+ unsigned *cost = XNEWVEC (unsigned, 3);
+ cost[vect_prologue] = cost[vect_body] = cost[vect_epilogue] = 0;
+ return cost;
+}
+
+/* Implement targetm.vectorize.add_stmt_cost. */
+
+static unsigned
+spu_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
+ struct _stmt_vec_info *stmt_info, int misalign,
+ enum vect_cost_model_location where)
+{
+ unsigned *cost = (unsigned *) data;
+ unsigned retval = 0;
+
+ if (flag_vect_cost_model)
+ {
+ tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
+ int stmt_cost = spu_builtin_vectorization_cost (kind, vectype, misalign);
+
+ /* Statements in an inner loop relative to the loop being
+ vectorized are weighted more heavily. The value here is
+ arbitrary and could potentially be improved with analysis. */
+ if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info))
+ count *= 50; /* FIXME. */
+
+ retval = (unsigned) (count * stmt_cost);
+ cost[where] += retval;
+ }
+
+ return retval;
+}
+
+/* Implement targetm.vectorize.finish_cost. */
+
+static void
+spu_finish_cost (void *data, unsigned *prologue_cost,
+ unsigned *body_cost, unsigned *epilogue_cost)
+{
+ unsigned *cost = (unsigned *) data;
+ *prologue_cost = cost[vect_prologue];
+ *body_cost = cost[vect_body];
+ *epilogue_cost = cost[vect_epilogue];
+}
+
+/* Implement targetm.vectorize.destroy_cost_data. */
+
+static void
+spu_destroy_cost_data (void *data)
+{
+ free (data);
+}
+
/* Return true iff, data reference of TYPE can reach vector alignment (16)
after applying N number of iterations. This routine does not determine
how may iterations are required to reach desired alignment. */
@@ -7352,4 +7095,219 @@ spu_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
final_end_function ();
}
+
+/* Table of machine attributes. */
+static const struct attribute_spec spu_attribute_table[] =
+{
+ /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler,
+ affects_type_identity } */
+ { "naked", 0, 0, true, false, false, spu_handle_fndecl_attribute,
+ false },
+ { "spu_vector", 0, 0, false, true, false, spu_handle_vector_attribute,
+ false },
+ { NULL, 0, 0, false, false, false, NULL, false }
+};
+
+/* TARGET overrides. */
+
+#undef TARGET_ADDR_SPACE_POINTER_MODE
+#define TARGET_ADDR_SPACE_POINTER_MODE spu_addr_space_pointer_mode
+
+#undef TARGET_ADDR_SPACE_ADDRESS_MODE
+#define TARGET_ADDR_SPACE_ADDRESS_MODE spu_addr_space_address_mode
+
+#undef TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P
+#define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P \
+ spu_addr_space_legitimate_address_p
+
+#undef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS
+#define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS spu_addr_space_legitimize_address
+
+#undef TARGET_ADDR_SPACE_SUBSET_P
+#define TARGET_ADDR_SPACE_SUBSET_P spu_addr_space_subset_p
+
+#undef TARGET_ADDR_SPACE_CONVERT
+#define TARGET_ADDR_SPACE_CONVERT spu_addr_space_convert
+
+#undef TARGET_INIT_BUILTINS
+#define TARGET_INIT_BUILTINS spu_init_builtins
+#undef TARGET_BUILTIN_DECL
+#define TARGET_BUILTIN_DECL spu_builtin_decl
+
+#undef TARGET_EXPAND_BUILTIN
+#define TARGET_EXPAND_BUILTIN spu_expand_builtin
+
+#undef TARGET_UNWIND_WORD_MODE
+#define TARGET_UNWIND_WORD_MODE spu_unwind_word_mode
+
+#undef TARGET_LEGITIMIZE_ADDRESS
+#define TARGET_LEGITIMIZE_ADDRESS spu_legitimize_address
+
+/* The current assembler doesn't like .4byte foo@ppu, so use the normal .long
+ and .quad for the debugger. When it is known that the assembler is fixed,
+ these can be removed. */
+#undef TARGET_ASM_UNALIGNED_SI_OP
+#define TARGET_ASM_UNALIGNED_SI_OP "\t.long\t"
+
+#undef TARGET_ASM_ALIGNED_DI_OP
+#define TARGET_ASM_ALIGNED_DI_OP "\t.quad\t"
+
+/* The .8byte directive doesn't seem to work well for a 32 bit
+ architecture. */
+#undef TARGET_ASM_UNALIGNED_DI_OP
+#define TARGET_ASM_UNALIGNED_DI_OP NULL
+
+#undef TARGET_RTX_COSTS
+#define TARGET_RTX_COSTS spu_rtx_costs
+
+#undef TARGET_ADDRESS_COST
+#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+
+#undef TARGET_SCHED_ISSUE_RATE
+#define TARGET_SCHED_ISSUE_RATE spu_sched_issue_rate
+
+#undef TARGET_SCHED_INIT_GLOBAL
+#define TARGET_SCHED_INIT_GLOBAL spu_sched_init_global
+
+#undef TARGET_SCHED_INIT
+#define TARGET_SCHED_INIT spu_sched_init
+
+#undef TARGET_SCHED_VARIABLE_ISSUE
+#define TARGET_SCHED_VARIABLE_ISSUE spu_sched_variable_issue
+
+#undef TARGET_SCHED_REORDER
+#define TARGET_SCHED_REORDER spu_sched_reorder
+
+#undef TARGET_SCHED_REORDER2
+#define TARGET_SCHED_REORDER2 spu_sched_reorder
+
+#undef TARGET_SCHED_ADJUST_COST
+#define TARGET_SCHED_ADJUST_COST spu_sched_adjust_cost
+
+#undef TARGET_ATTRIBUTE_TABLE
+#define TARGET_ATTRIBUTE_TABLE spu_attribute_table
+
+#undef TARGET_ASM_INTEGER
+#define TARGET_ASM_INTEGER spu_assemble_integer
+
+#undef TARGET_SCALAR_MODE_SUPPORTED_P
+#define TARGET_SCALAR_MODE_SUPPORTED_P spu_scalar_mode_supported_p
+
+#undef TARGET_VECTOR_MODE_SUPPORTED_P
+#define TARGET_VECTOR_MODE_SUPPORTED_P spu_vector_mode_supported_p
+
+#undef TARGET_FUNCTION_OK_FOR_SIBCALL
+#define TARGET_FUNCTION_OK_FOR_SIBCALL spu_function_ok_for_sibcall
+
+#undef TARGET_ASM_GLOBALIZE_LABEL
+#define TARGET_ASM_GLOBALIZE_LABEL spu_asm_globalize_label
+
+#undef TARGET_PASS_BY_REFERENCE
+#define TARGET_PASS_BY_REFERENCE spu_pass_by_reference
+
+#undef TARGET_FUNCTION_ARG
+#define TARGET_FUNCTION_ARG spu_function_arg
+
+#undef TARGET_FUNCTION_ARG_ADVANCE
+#define TARGET_FUNCTION_ARG_ADVANCE spu_function_arg_advance
+
+#undef TARGET_MUST_PASS_IN_STACK
+#define TARGET_MUST_PASS_IN_STACK must_pass_in_stack_var_size
+
+#undef TARGET_BUILD_BUILTIN_VA_LIST
+#define TARGET_BUILD_BUILTIN_VA_LIST spu_build_builtin_va_list
+
+#undef TARGET_EXPAND_BUILTIN_VA_START
+#define TARGET_EXPAND_BUILTIN_VA_START spu_va_start
+
+#undef TARGET_SETUP_INCOMING_VARARGS
+#define TARGET_SETUP_INCOMING_VARARGS spu_setup_incoming_varargs
+
+#undef TARGET_MACHINE_DEPENDENT_REORG
+#define TARGET_MACHINE_DEPENDENT_REORG spu_machine_dependent_reorg
+
+#undef TARGET_GIMPLIFY_VA_ARG_EXPR
+#define TARGET_GIMPLIFY_VA_ARG_EXPR spu_gimplify_va_arg_expr
+
+#undef TARGET_INIT_LIBFUNCS
+#define TARGET_INIT_LIBFUNCS spu_init_libfuncs
+
+#undef TARGET_RETURN_IN_MEMORY
+#define TARGET_RETURN_IN_MEMORY spu_return_in_memory
+
+#undef TARGET_ENCODE_SECTION_INFO
+#define TARGET_ENCODE_SECTION_INFO spu_encode_section_info
+
+#undef TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD
+#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD spu_builtin_mask_for_load
+
+#undef TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
+#define TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST spu_builtin_vectorization_cost
+
+#undef TARGET_VECTORIZE_INIT_COST
+#define TARGET_VECTORIZE_INIT_COST spu_init_cost
+
+#undef TARGET_VECTORIZE_ADD_STMT_COST
+#define TARGET_VECTORIZE_ADD_STMT_COST spu_add_stmt_cost
+
+#undef TARGET_VECTORIZE_FINISH_COST
+#define TARGET_VECTORIZE_FINISH_COST spu_finish_cost
+
+#undef TARGET_VECTORIZE_DESTROY_COST_DATA
+#define TARGET_VECTORIZE_DESTROY_COST_DATA spu_destroy_cost_data
+
+#undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
+#define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE spu_vector_alignment_reachable
+
+#undef TARGET_LIBGCC_CMP_RETURN_MODE
+#define TARGET_LIBGCC_CMP_RETURN_MODE spu_libgcc_cmp_return_mode
+
+#undef TARGET_LIBGCC_SHIFT_COUNT_MODE
+#define TARGET_LIBGCC_SHIFT_COUNT_MODE spu_libgcc_shift_count_mode
+
+#undef TARGET_SCHED_SMS_RES_MII
+#define TARGET_SCHED_SMS_RES_MII spu_sms_res_mii
+
+#undef TARGET_SECTION_TYPE_FLAGS
+#define TARGET_SECTION_TYPE_FLAGS spu_section_type_flags
+
+#undef TARGET_ASM_SELECT_SECTION
+#define TARGET_ASM_SELECT_SECTION spu_select_section
+
+#undef TARGET_ASM_UNIQUE_SECTION
+#define TARGET_ASM_UNIQUE_SECTION spu_unique_section
+
+#undef TARGET_LEGITIMATE_ADDRESS_P
+#define TARGET_LEGITIMATE_ADDRESS_P spu_legitimate_address_p
+
+#undef TARGET_LEGITIMATE_CONSTANT_P
+#define TARGET_LEGITIMATE_CONSTANT_P spu_legitimate_constant_p
+
+#undef TARGET_TRAMPOLINE_INIT
+#define TARGET_TRAMPOLINE_INIT spu_trampoline_init
+
+#undef TARGET_WARN_FUNC_RETURN
+#define TARGET_WARN_FUNC_RETURN spu_warn_func_return
+
+#undef TARGET_OPTION_OVERRIDE
+#define TARGET_OPTION_OVERRIDE spu_option_override
+
+#undef TARGET_CONDITIONAL_REGISTER_USAGE
+#define TARGET_CONDITIONAL_REGISTER_USAGE spu_conditional_register_usage
+
+#undef TARGET_REF_MAY_ALIAS_ERRNO
+#define TARGET_REF_MAY_ALIAS_ERRNO spu_ref_may_alias_errno
+
+#undef TARGET_ASM_OUTPUT_MI_THUNK
+#define TARGET_ASM_OUTPUT_MI_THUNK spu_output_mi_thunk
+#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
+#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_const_tree_hwi_hwi_const_tree_true
+
+/* Variable tracking should be run after all optimizations which
+ change order of insns. It also needs a valid CFG. */
+#undef TARGET_DELAY_VARTRACK
+#define TARGET_DELAY_VARTRACK true
+
+struct gcc_target targetm = TARGET_INITIALIZER;
+
#include "gt-spu.h"
diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md
index 03ed4575591..ee5fced6665 100644
--- a/gcc/config/spu/spu.md
+++ b/gcc/config/spu/spu.md
@@ -1387,8 +1387,8 @@
rtx mask = gen_reg_rtx (V4SImode);
emit_move_insn (mask, spu_const (V4SImode, 0x0000ffff));
- emit_insn (gen_spu_mpyhh (high, operands[1], operands[2]));
- emit_insn (gen_spu_mpy (low, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v8hi (high, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v8hi (low, operands[1], operands[2]));
emit_insn (gen_vashlv4si3 (shift, high, spu_const(V4SImode, 16)));
emit_insn (gen_selb (result, shift, low, mask));
DONE;
@@ -1482,7 +1482,7 @@
rtx op2 = simplify_gen_subreg (V8HImode, operands[2], V4SImode, 0);
emit_insn (gen_spu_mpyh(a, op1, op2));
emit_insn (gen_spu_mpyh(b, op2, op1));
- emit_insn (gen_spu_mpyu(c, op1, op2));
+ emit_insn (gen_vec_widen_umult_odd_v8hi (c, op1, op2));
emit_insn (gen_addv4si3(d, a, b));
emit_insn (gen_addv4si3(operands[0], d, c));
DONE;
@@ -4612,6 +4612,70 @@ selb\t%0,%4,%0,%3"
DONE;
}")
+(define_insn "vec_widen_smult_odd_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r,r")
+ (mult:V4SI
+ (sign_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r,r")
+ (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))
+ (sign_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 2 "spu_arith_operand" "r,B")
+ (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))))]
+ ""
+ "@
+ mpy\t%0,%1,%2
+ mpyi\t%0,%1,%2"
+ [(set_attr "type" "fp7")])
+
+(define_insn "vec_widen_umult_odd_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r,r")
+ (mult:V4SI
+ (zero_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r,r")
+ (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))
+ (zero_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 2 "spu_arith_operand" "r,B")
+ (parallel [(const_int 1)(const_int 3)(const_int 5)(const_int 7)])))))]
+ ""
+ "@
+ mpyu\t%0,%1,%2
+ mpyui\t%0,%1,%2"
+ [(set_attr "type" "fp7")])
+
+(define_insn "vec_widen_smult_even_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
+ (mult:V4SI
+ (sign_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))
+ (sign_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 2 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))))]
+ ""
+ "mpyhh\t%0,%1,%2"
+ [(set_attr "type" "fp7")])
+
+(define_insn "vec_widen_umult_even_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
+ (mult:V4SI
+ (zero_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))
+ (zero_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 2 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 2)(const_int 4)(const_int 6)])))))]
+ ""
+ "mpyhhu\t%0,%1,%2"
+ [(set_attr "type" "fp7")])
+
(define_expand "vec_widen_umult_hi_v8hi"
[(set (match_operand:V4SI 0 "register_operand" "=r")
(mult:V4SI
@@ -4634,8 +4698,8 @@ selb\t%0,%4,%0,%3"
0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17};
emit_move_insn (mask, array_to_constant (TImode, arr));
- emit_insn (gen_spu_mpyhhu (ve, operands[1], operands[2]));
- emit_insn (gen_spu_mpyu (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_shufb (operands[0], ve, vo, mask));
DONE;
}")
@@ -4662,8 +4726,8 @@ selb\t%0,%4,%0,%3"
0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F};
emit_move_insn (mask, array_to_constant (TImode, arr));
- emit_insn (gen_spu_mpyhhu (ve, operands[1], operands[2]));
- emit_insn (gen_spu_mpyu (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_umult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_shufb (operands[0], ve, vo, mask));
DONE;
}")
@@ -4690,8 +4754,8 @@ selb\t%0,%4,%0,%3"
0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17};
emit_move_insn (mask, array_to_constant (TImode, arr));
- emit_insn (gen_spu_mpyhh (ve, operands[1], operands[2]));
- emit_insn (gen_spu_mpy (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_shufb (operands[0], ve, vo, mask));
DONE;
}")
@@ -4718,8 +4782,8 @@ selb\t%0,%4,%0,%3"
0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F};
emit_move_insn (mask, array_to_constant (TImode, arr));
- emit_insn (gen_spu_mpyhh (ve, operands[1], operands[2]));
- emit_insn (gen_spu_mpy (vo, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_even_v8hi (ve, operands[1], operands[2]));
+ emit_insn (gen_vec_widen_smult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_shufb (operands[0], ve, vo, mask));
DONE;
}")
diff --git a/gcc/config/spu/t-spu-elf b/gcc/config/spu/t-spu-elf
index 0a0f7714a7d..83a16191d18 100644
--- a/gcc/config/spu/t-spu-elf
+++ b/gcc/config/spu/t-spu-elf
@@ -19,11 +19,11 @@
MULTILIB_OPTIONS=mea64
spu.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) $(REGS_H) hard-reg-set.h \
+ $(RTL_H) $(REGS_H) hard-reg-set.h dumpfile.h \
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
$(OBSTACK_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) except.h function.h \
output.h $(BASIC_BLOCK_H) $(GGC_H) $(HASHTAB_H) \
- $(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h \
+ $(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h $(CFGLOOP_H) \
$(srcdir)/config/spu/spu-protos.h \
$(srcdir)/config/spu/spu-builtins.def
diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c
index cd7521258fc..fb0844c69f3 100644
--- a/gcc/config/stormy16/stormy16.c
+++ b/gcc/config/stormy16/stormy16.c
@@ -1035,6 +1035,9 @@ xstormy16_expand_prologue (void)
if (layout.locals_size >= 32768)
error ("local variable memory requirements exceed capacity");
+ if (flag_stack_usage_info)
+ current_function_static_stack_size = layout.frame_size;
+
/* Save the argument registers if necessary. */
if (layout.stdarg_save_size)
for (regno = FIRST_ARGUMENT_REGISTER;
diff --git a/gcc/config/tilegx/feedback.h b/gcc/config/tilegx/feedback.h
new file mode 100644
index 00000000000..34e48ed8895
--- /dev/null
+++ b/gcc/config/tilegx/feedback.h
@@ -0,0 +1,14 @@
+#ifndef _FEEDBACK_H
+#define _FEEDBACK_H 1
+
+#ifdef __ASSEMBLER__
+
+/* Stub defines for feedback instrumentation. */
+#define FEEDBACK_ENTER_EXPLICIT(FUNCNAME, SECNAME, SIZE)
+#define FEEDBACK_ENTER(FUNCNAME)
+#define FEEDBACK_REENTER(FUNCNAME)
+#define FEEDBACK_ENTRY(FUNCNAME, SECNAME, SIZE)
+
+#endif /* __ASSEMBLER__ */
+
+#endif /* _FEEDBACK_H */
diff --git a/gcc/config/tilegx/predicates.md b/gcc/config/tilegx/predicates.md
index 5a493ff6df0..4b385c3700a 100644
--- a/gcc/config/tilegx/predicates.md
+++ b/gcc/config/tilegx/predicates.md
@@ -80,11 +80,14 @@
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2_LAST")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_PCREL")
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2_LAST_PCREL")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_LAST_GOT")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_GOT")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_TLS_GD")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_TLS_IE")
- (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_TLS_LE"))))
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_TLS_LE")
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_PLT_PCREL")
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2_LAST_PLT_PCREL"))))
;; Returns 1 if OP is an unspec wrapper for a symbol, got, or tls
;; reference.
@@ -96,10 +99,13 @@
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW3")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_PCREL")
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_PCREL")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_GOT")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_TLS_GD")
(match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_TLS_IE")
- (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_TLS_LE"))))
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_TLS_LE")
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_PLT_PCREL")
+ (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_PLT_PCREL"))))
;; Return 1 if OP is a 8-element vector constant with identical signed
;; 8-bit elements or any register.
diff --git a/gcc/config/tilegx/sync.md b/gcc/config/tilegx/sync.md
index e4d1e074f1a..9bf61d17dbe 100644
--- a/gcc/config/tilegx/sync.md
+++ b/gcc/config/tilegx/sync.md
@@ -72,7 +72,7 @@
UNSPEC_CMPXCHG))]
""
"cmpexch<four_if_si>\t%0, %1, %r2"
- [(set_attr "type" "X1_L2")])
+ [(set_attr "type" "X1_remote")])
(define_expand "atomic_exchange<mode>"
@@ -101,7 +101,7 @@
UNSPEC_XCHG))]
""
"exch<four_if_si>\t%0, %1, %r2"
- [(set_attr "type" "X1_2cycle")])
+ [(set_attr "type" "X1_remote")])
(define_expand "atomic_fetch_<fetchop_name><mode>"
@@ -137,7 +137,7 @@
UNSPEC_ATOMIC))]
""
"fetch<fetchop_name><four_if_si>\t%0, %1, %r2"
- [(set_attr "type" "X1_2cycle")])
+ [(set_attr "type" "X1_remote")])
(define_expand "atomic_fetch_sub<mode>"
diff --git a/gcc/config/tilegx/tilegx-generic.md b/gcc/config/tilegx/tilegx-generic.md
index 970344aacf4..7dea17ab078 100644
--- a/gcc/config/tilegx/tilegx-generic.md
+++ b/gcc/config/tilegx/tilegx-generic.md
@@ -51,6 +51,10 @@
(eq_attr "type" "X1_L2")
"X1")
+(define_insn_reservation "X1_remote" 50
+ (eq_attr "type" "X1_remote")
+ "X1")
+
(define_insn_reservation "X1_miss" 80
(eq_attr "type" "X1_miss")
"X1")
diff --git a/gcc/config/tilegx/tilegx-opts.h b/gcc/config/tilegx/tilegx-opts.h
new file mode 100644
index 00000000000..77c292edd8e
--- /dev/null
+++ b/gcc/config/tilegx/tilegx-opts.h
@@ -0,0 +1,34 @@
+/* Definitions for option handling for TILE-Gx.
+ Copyright (C) 2012
+ Free Software Foundation, Inc.
+ Contributed by Walter Lee (walt@tilera.com)
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef TILEGX_OPTS_H
+#define TILEGX_OPTS_H
+
+enum cmodel {
+ CM_SMALL, /* Makes various assumpation about sizes of code and
+ data fits. */
+ CM_LARGE, /* No assumptions. */
+ CM_SMALL_PIC, /* Makes various assumpation about sizes of code and
+ data fits. */
+ CM_LARGE_PIC /* No assumptions. */
+};
+
+#endif
diff --git a/gcc/config/tilegx/tilegx-protos.h b/gcc/config/tilegx/tilegx-protos.h
index 56ce617e1f6..cf56af431d8 100644
--- a/gcc/config/tilegx/tilegx-protos.h
+++ b/gcc/config/tilegx/tilegx-protos.h
@@ -23,6 +23,8 @@
#define GCC_TILEGX_PROTOS_H
extern void tilegx_init_expanders (void);
+extern void tilegx_compute_pcrel_address (rtx, rtx);
+extern void tilegx_compute_pcrel_plt_address (rtx, rtx);
extern bool tilegx_legitimate_pic_operand_p (rtx);
extern rtx tilegx_simd_int (rtx, enum machine_mode);
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index 25be30050ec..22209269fd4 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -67,6 +67,29 @@ static bool output_memory_autoinc_first;
static void
tilegx_option_override (void)
{
+ if (global_options_set.x_tilegx_cmodel)
+ {
+ switch (tilegx_cmodel)
+ {
+ case CM_SMALL:
+ case CM_SMALL_PIC:
+ if (flag_pic)
+ tilegx_cmodel = CM_SMALL_PIC;
+ break;
+
+ case CM_LARGE:
+ case CM_LARGE_PIC:
+ if (flag_pic)
+ tilegx_cmodel = CM_LARGE_PIC;
+ break;
+
+ default:
+ gcc_unreachable ();
+ }
+ }
+ else
+ tilegx_cmodel = flag_pic ? CM_SMALL_PIC : CM_SMALL;
+
/* When modulo scheduling is enabled, we still rely on regular
scheduler for bundling. */
if (flag_modulo_sched)
@@ -119,7 +142,8 @@ tilegx_cannot_force_const_mem (enum machine_mode mode ATTRIBUTE_UNUSED,
static bool
tilegx_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
{
- return decl != NULL;
+ return (tilegx_cmodel != CM_LARGE && tilegx_cmodel != CM_LARGE_PIC
+ && (decl != NULL));
}
@@ -144,7 +168,7 @@ tilegx_return_in_memory (const_tree type, const_tree fndecl ATTRIBUTE_UNUSED)
}
-/* TARGET_MODE_REP_EXTENDED. */
+/* Implement TARGET_MODE_REP_EXTENDED. */
static int
tilegx_mode_rep_extended (enum machine_mode mode, enum machine_mode mode_rep)
{
@@ -406,7 +430,7 @@ tilegx_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
addr = create_tmp_var (ptr_type_node, "va_arg");
- /* if an object is dynamically sized, a pointer to it is passed
+ /* If an object is dynamically sized, a pointer to it is passed
instead of the object itself. */
pass_by_reference_p = pass_by_reference (NULL, TYPE_MODE (type), type,
false);
@@ -458,11 +482,11 @@ tilegx_rtx_costs (rtx x, int code, int outer_code, int opno, int *total,
{
case CONST_INT:
/* If this is an 8-bit constant, return zero since it can be
- used nearly anywhere with no cost. If it is a valid operand
- for an ADD or AND, likewise return 0 if we know it will be
- used in that context. Otherwise, return 2 since it might be
- used there later. All other constants take at least two
- insns. */
+ used nearly anywhere with no cost. If it is a valid operand
+ for an ADD or AND, likewise return 0 if we know it will be
+ used in that context. Otherwise, return 2 since it might be
+ used there later. All other constants take at least two
+ insns. */
if (satisfies_constraint_I (x))
{
*total = 0;
@@ -507,8 +531,8 @@ tilegx_rtx_costs (rtx x, int code, int outer_code, int opno, int *total,
case MEM:
/* If outer-code was a sign or zero extension, a cost of
- COSTS_N_INSNS (1) was already added in, so account for
- that. */
+ COSTS_N_INSNS (1) was already added in, so account for
+ that. */
if (outer_code == ZERO_EXTEND || outer_code == SIGN_EXTEND)
*total = COSTS_N_INSNS (1);
else
@@ -636,7 +660,7 @@ tilegx_rtx_costs (rtx x, int code, int outer_code, int opno, int *total,
static rtx
create_temp_reg_if_possible (enum machine_mode mode, rtx default_reg)
{
- return can_create_pseudo_p ()? gen_reg_rtx (mode) : default_reg;
+ return can_create_pseudo_p () ? gen_reg_rtx (mode) : default_reg;
}
@@ -1024,12 +1048,12 @@ tilegx_legitimize_tls_address (rtx addr)
/* Returns a register that points to ADDR, a symbolic address, by
computing its address relative to tilegx_text_label_symbol. */
-static void
-compute_pcrel_address (rtx result, rtx addr)
+void
+tilegx_compute_pcrel_address (rtx result, rtx addr)
{
rtx text_label_symbol = tilegx_text_label_symbol ();
rtx text_label_rtx = tilegx_text_label_rtx ();
- rtx temp, temp2;
+ rtx temp, temp2, temp3;
temp = create_temp_reg_if_possible (Pmode, result);
temp2 = create_temp_reg_if_possible (Pmode, result);
@@ -1043,6 +1067,18 @@ compute_pcrel_address (rtx result, rtx addr)
text_label_rtx,
addr, text_label_symbol));
}
+ else if (tilegx_cmodel == CM_LARGE_PIC)
+ {
+ temp3 = create_temp_reg_if_possible (Pmode, result);
+ emit_insn (gen_mov_large_pcrel_step1 (temp, addr, text_label_symbol));
+ emit_insn (gen_mov_large_pcrel_step2 (temp2, temp, addr,
+ text_label_symbol));
+ emit_insn (gen_mov_large_pcrel_step3 (temp3, temp2, addr,
+ text_label_symbol));
+ emit_insn (gen_mov_large_pcrel_step4 (result, temp3,
+ text_label_rtx,
+ addr, text_label_symbol));
+ }
else
{
emit_insn (gen_mov_pcrel_step1 (temp, addr, text_label_symbol));
@@ -1054,6 +1090,41 @@ compute_pcrel_address (rtx result, rtx addr)
}
+/* Returns a register that points to the plt entry of ADDR, a symbolic
+ address, by computing its address relative to
+ tilegx_text_label_symbol. */
+void
+tilegx_compute_pcrel_plt_address (rtx result, rtx addr)
+{
+ rtx text_label_symbol = tilegx_text_label_symbol ();
+ rtx text_label_rtx = tilegx_text_label_rtx ();
+ rtx temp, temp2, temp3;
+
+ temp = create_temp_reg_if_possible (Pmode, result);
+ temp2 = create_temp_reg_if_possible (Pmode, result);
+
+ if (TARGET_32BIT)
+ {
+ emit_insn (gen_mov_plt_pcrel_step1_32bit (temp, addr,
+ text_label_symbol));
+ emit_insn (gen_mov_plt_pcrel_step2_32bit (temp2, temp, addr,
+ text_label_symbol));
+ emit_move_insn (result, gen_rtx_PLUS (Pmode, temp2, text_label_rtx));
+ }
+ else
+ {
+ temp3 = create_temp_reg_if_possible (Pmode, result);
+
+ emit_insn (gen_mov_plt_pcrel_step1 (temp, addr, text_label_symbol));
+ emit_insn (gen_mov_plt_pcrel_step2 (temp2, temp, addr,
+ text_label_symbol));
+ emit_insn (gen_mov_plt_pcrel_step3 (temp3, temp2, addr,
+ text_label_symbol));
+ emit_move_insn (result, gen_rtx_PLUS (Pmode, temp3, text_label_rtx));
+ }
+}
+
+
/* Legitimize PIC addresses. If the address is already
position-independent, we return ORIG. Newly generated
position-independent addresses go into a reg. This is REG if
@@ -1079,7 +1150,7 @@ tilegx_legitimize_pic_address (rtx orig,
loading in the address, so that these instructions can be
optimized properly. */
rtx temp_reg = create_temp_reg_if_possible (Pmode, reg);
- compute_pcrel_address (temp_reg, orig);
+ tilegx_compute_pcrel_address (temp_reg, orig);
/* Note: this is conservative. We use the text_label but we
don't use the pic_offset_table. However, in some cases
@@ -1193,13 +1264,13 @@ tilegx_legitimize_pic_address (rtx orig,
}
/* If not during reload, allocate another temp reg here for
- loading in the address, so that these instructions can be
- optimized properly. */
+ loading in the address, so that these instructions can be
+ optimized properly. */
temp_reg = create_temp_reg_if_possible (Pmode, reg);
- compute_pcrel_address (temp_reg, orig);
+ tilegx_compute_pcrel_address (temp_reg, orig);
/* Note: this is conservative. We use the text_label but we
- don't use the pic_offset_table. */
+ don't use the pic_offset_table. */
crtl->uses_pic_offset_table = 1;
address = temp_reg;
@@ -1250,7 +1321,13 @@ tilegx_delegitimize_address (rtx x)
case UNSPEC_HW1_LAST:
case UNSPEC_HW2_LAST:
case UNSPEC_HW0_PCREL:
+ case UNSPEC_HW1_PCREL:
case UNSPEC_HW1_LAST_PCREL:
+ case UNSPEC_HW2_LAST_PCREL:
+ case UNSPEC_HW0_PLT_PCREL:
+ case UNSPEC_HW1_PLT_PCREL:
+ case UNSPEC_HW1_LAST_PLT_PCREL:
+ case UNSPEC_HW2_LAST_PLT_PCREL:
case UNSPEC_HW0_GOT:
case UNSPEC_HW0_LAST_GOT:
case UNSPEC_HW1_LAST_GOT:
@@ -1290,7 +1367,7 @@ load_pic_register (bool delay_pic_helper ATTRIBUTE_UNUSED)
emit_insn (gen_insn_lnk_and_label (text_label_rtx, text_label_symbol));
}
- compute_pcrel_address (tilegx_got_rtx (), got_symbol);
+ tilegx_compute_pcrel_address (tilegx_got_rtx (), got_symbol);
flag_pic = orig_flag_pic;
@@ -1336,8 +1413,8 @@ tilegx_simd_int (rtx num, enum machine_mode mode)
/* Returns true iff VAL can be moved into a register in one
- instruction. And if it can, it emits the code to move the
- constant into DEST_REG.
+ instruction. And if it can, it emits the code to move the constant
+ into DEST_REG.
If THREE_WIDE_ONLY is true, this insists on an instruction that
works in a bundle containing three instructions. */
@@ -1397,7 +1474,7 @@ tilegx_bitfield_operand_p (HOST_WIDE_INT n, int *first_bit, int *last_bit)
continue;
/* See if x is a power of two minus one, i.e. only consecutive 1
- bits starting from bit 0. */
+ bits starting from bit 0. */
if ((x & (x + 1)) == 0)
{
if (first_bit != NULL)
@@ -1481,8 +1558,8 @@ expand_set_cint64 (rtx dest_reg, rtx src_val)
if (expand_set_cint64_one_inst (temp, r, three_wide_only))
{
/* 0xFFFFFFFFFFA5FFFF becomes:
- movei temp, 0xFFFFFFFFFFFFFFA5
- rotli dest, temp, 16 */
+ movei temp, 0xFFFFFFFFFFFFFFA5
+ rotli dest, temp, 16 */
emit_move_insn (dest_reg,
gen_rtx_ROTATE (DImode, temp, GEN_INT (count)));
return;
@@ -1531,11 +1608,11 @@ expand_set_cint64 (rtx dest_reg, rtx src_val)
unsigned HOST_WIDE_INT leftover;
/* Recursively create the constant above the lowest 16 zero
- bits. */
+ bits. */
expand_set_cint64 (temp, GEN_INT (val >> shift));
/* See if we can easily insert the remaining bits, or if we need
- to fall through to the more general case. */
+ to fall through to the more general case. */
leftover = val - ((val >> shift) << shift);
if (leftover == 0)
{
@@ -1572,8 +1649,8 @@ expand_set_cint64 (rtx dest_reg, rtx src_val)
else
{
/* Set as many high 16-bit blocks as we can with a single
- instruction. We'll insert the remaining 16-bit blocks
- below. */
+ instruction. We'll insert the remaining 16-bit blocks
+ below. */
for (shift = 16;; shift += 16)
{
gcc_assert (shift < 64);
@@ -1616,10 +1693,10 @@ tilegx_expand_set_const64 (rtx op0, rtx op1)
if (CONST_INT_P (op1))
{
/* TODO: I don't know if we want to split large constants
- now, or wait until later (with a define_split).
+ now, or wait until later (with a define_split).
- Does splitting early help CSE? Does it harm other
- optimizations that might fold loads? */
+ Does splitting early help CSE? Does it harm other
+ optimizations that might fold loads? */
expand_set_cint64 (op0, op1);
}
else
@@ -1717,7 +1794,7 @@ tilegx_expand_unaligned_load (rtx dest_reg, rtx mem, HOST_WIDE_INT bitsize,
if (bitsize == 2 * BITS_PER_UNIT && (bit_offset % BITS_PER_UNIT) == 0)
{
/* When just loading a two byte value, we can load the two bytes
- individually and combine them efficiently. */
+ individually and combine them efficiently. */
mem_lo = adjust_address (mem, QImode, byte_offset);
mem_hi = adjust_address (mem, QImode, byte_offset + 1);
@@ -2054,6 +2131,7 @@ tilegx_expand_const_muldi (rtx op0, rtx op1, long long multiplier)
return false;
}
+
/* Expand the muldi pattern. */
bool
tilegx_expand_muldi (rtx op0, rtx op1, rtx op2)
@@ -2228,7 +2306,7 @@ tilegx_emit_setcc_internal (rtx res, enum rtx_code code, rtx op0, rtx op1,
case GEU:
case GTU:
/* We do not have these compares, so we reverse the
- operands. */
+ operands. */
swap = true;
break;
@@ -2323,7 +2401,7 @@ tilegx_emit_cc_test (enum rtx_code code, rtx op0, rtx op1,
case GEU:
case GTU:
/* These must be reversed (except NE, but let's
- canonicalize). */
+ canonicalize). */
code = reverse_condition (code);
branch_code = EQ;
break;
@@ -2353,7 +2431,7 @@ tilegx_emit_cc_test (enum rtx_code code, rtx op0, rtx op1,
|| (REG_P (op0) && REG_POINTER (op0))))
{
/* TODO: Use a SIMD add immediate to hit zero for tiled
- constants in a single instruction. */
+ constants in a single instruction. */
if (GET_MODE (op0) != DImode)
{
/* Convert to DImode so we can use addli. Note that
@@ -2577,7 +2655,7 @@ tilegx_expand_tablejump (rtx op0, rtx op1)
rtx temp = gen_reg_rtx (Pmode);
rtx temp2 = gen_reg_rtx (Pmode);
- compute_pcrel_address (temp, gen_rtx_LABEL_REF (Pmode, op1));
+ tilegx_compute_pcrel_address (temp, gen_rtx_LABEL_REF (Pmode, op1));
emit_move_insn (temp2,
gen_rtx_PLUS (Pmode,
convert_to_mode (Pmode, op0, false),
@@ -3377,47 +3455,47 @@ tilegx_expand_builtin (tree exp,
opnum = nonvoid;
FOR_EACH_CALL_EXPR_ARG (arg, iter, exp)
- {
- const struct insn_operand_data *insn_op;
+ {
+ const struct insn_operand_data *insn_op;
- if (arg == error_mark_node)
- return NULL_RTX;
- if (opnum > MAX_BUILTIN_ARGS)
- return NULL_RTX;
+ if (arg == error_mark_node)
+ return NULL_RTX;
+ if (opnum > MAX_BUILTIN_ARGS)
+ return NULL_RTX;
- insn_op = &insn_data[icode].operand[opnum];
+ insn_op = &insn_data[icode].operand[opnum];
- op[opnum] = expand_expr (arg, NULL_RTX, insn_op->mode, EXPAND_NORMAL);
+ op[opnum] = expand_expr (arg, NULL_RTX, insn_op->mode, EXPAND_NORMAL);
- if (!(*insn_op->predicate) (op[opnum], insn_op->mode))
- {
- enum machine_mode opmode = insn_op->mode;
+ if (!(*insn_op->predicate) (op[opnum], insn_op->mode))
+ {
+ enum machine_mode opmode = insn_op->mode;
- /* pointer_operand and pmode_register_operand operands do
- not specify a mode, so use the operand's mode instead
- (which should always be right by the time we get here,
- except for constants, which are VOIDmode). */
- if (opmode == VOIDmode)
- {
- enum machine_mode m = GET_MODE (op[opnum]);
- gcc_assert (m == Pmode || m == VOIDmode);
- opmode = Pmode;
- }
+ /* pointer_operand and pmode_register_operand operands do
+ not specify a mode, so use the operand's mode instead
+ (which should always be right by the time we get here,
+ except for constants, which are VOIDmode). */
+ if (opmode == VOIDmode)
+ {
+ enum machine_mode m = GET_MODE (op[opnum]);
+ gcc_assert (m == Pmode || m == VOIDmode);
+ opmode = Pmode;
+ }
- op[opnum] = copy_to_mode_reg (opmode, op[opnum]);
- }
+ op[opnum] = copy_to_mode_reg (opmode, op[opnum]);
+ }
- if (!(*insn_op->predicate) (op[opnum], insn_op->mode))
- {
- /* We still failed to meet the predicate even after moving
- into a register. Assume we needed an immediate. */
- error_at (EXPR_LOCATION (exp),
- "operand must be an immediate of the right size");
- return const0_rtx;
- }
+ if (!(*insn_op->predicate) (op[opnum], insn_op->mode))
+ {
+ /* We still failed to meet the predicate even after moving
+ into a register. Assume we needed an immediate. */
+ error_at (EXPR_LOCATION (exp),
+ "operand must be an immediate of the right size");
+ return const0_rtx;
+ }
- opnum++;
- }
+ opnum++;
+ }
if (nonvoid)
{
@@ -3851,7 +3929,7 @@ tilegx_expand_prologue (void)
REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = STACK_BOUNDARY;
/* fp holds a copy of the incoming sp, in case we need to store
- it. */
+ it. */
sp_copy_regno = HARD_FRAME_POINTER_REGNUM;
}
else if (!tilegx_current_function_is_leaf ())
@@ -4046,7 +4124,7 @@ tilegx_expand_epilogue (bool sibcall_p)
if (frame_pointer_needed)
{
/* Restore the old stack pointer by copying from the frame
- pointer. */
+ pointer. */
if (TARGET_32BIT)
{
insn = emit_insn (gen_sp_restore_32bit (stack_pointer_rtx,
@@ -4243,6 +4321,7 @@ get_jump_target (rtx branch)
return 0;
}
+
/* Implement TARGET_SCHED_ADJUST_COST. */
static int
tilegx_sched_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost)
@@ -4288,37 +4367,37 @@ tilegx_gen_bundles (void)
{
basic_block bb;
FOR_EACH_BB (bb)
- {
- rtx insn, next;
- rtx end = NEXT_INSN (BB_END (bb));
+ {
+ rtx insn, next;
+ rtx end = NEXT_INSN (BB_END (bb));
- for (insn = next_insn_to_bundle (BB_HEAD (bb), end); insn; insn = next)
- {
- next = next_insn_to_bundle (NEXT_INSN (insn), end);
+ for (insn = next_insn_to_bundle (BB_HEAD (bb), end); insn; insn = next)
+ {
+ next = next_insn_to_bundle (NEXT_INSN (insn), end);
- /* Never wrap {} around inline asm. */
- if (GET_CODE (PATTERN (insn)) != ASM_INPUT)
- {
- if (next == NULL_RTX || GET_MODE (next) == TImode
- /* NOTE: The scheduler incorrectly believes a call
- insn can execute in the same cycle as the insn
- after the call. This is of course impossible.
- Really we need to fix the scheduler somehow, so
- the code after the call gets scheduled
- optimally. */
- || CALL_P (insn))
- {
- /* Mark current insn as the end of a bundle. */
- PUT_MODE (insn, QImode);
- }
- else
- {
- /* Mark it as part of a bundle. */
- PUT_MODE (insn, SImode);
- }
- }
- }
- }
+ /* Never wrap {} around inline asm. */
+ if (GET_CODE (PATTERN (insn)) != ASM_INPUT)
+ {
+ if (next == NULL_RTX || GET_MODE (next) == TImode
+ /* NOTE: The scheduler incorrectly believes a call
+ insn can execute in the same cycle as the insn
+ after the call. This is of course impossible.
+ Really we need to fix the scheduler somehow, so
+ the code after the call gets scheduled
+ optimally. */
+ || CALL_P (insn))
+ {
+ /* Mark current insn as the end of a bundle. */
+ PUT_MODE (insn, QImode);
+ }
+ else
+ {
+ /* Mark it as part of a bundle. */
+ PUT_MODE (insn, SImode);
+ }
+ }
+ }
+ }
}
@@ -4883,7 +4962,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
switch (code)
{
case 'c':
- /* Print the compare operator opcode for conditional moves. */
+ /* Print the compare operator opcode for conditional moves. */
switch (GET_CODE (x))
{
case EQ:
@@ -4898,7 +4977,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
return;
case 'C':
- /* Print the compare operator opcode for conditional moves. */
+ /* Print the compare operator opcode for conditional moves. */
switch (GET_CODE (x))
{
case EQ:
@@ -4914,7 +4993,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
case 'd':
{
- /* Print the compare operator opcode for conditional moves. */
+ /* Print the compare operator opcode for conditional moves. */
switch (GET_CODE (x))
{
case EQ:
@@ -4931,7 +5010,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
case 'D':
{
- /* Print the compare operator opcode for conditional moves. */
+ /* Print the compare operator opcode for conditional moves. */
switch (GET_CODE (x))
{
case EQ:
@@ -4961,6 +5040,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
opstr = "hw0";
break;
case UNSPEC_HW1:
+ case UNSPEC_HW1_PCREL:
opstr = "hw1";
break;
case UNSPEC_HW2:
@@ -4977,6 +5057,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
opstr = "hw1_last";
break;
case UNSPEC_HW2_LAST:
+ case UNSPEC_HW2_LAST_PCREL:
opstr = "hw2_last";
break;
case UNSPEC_HW0_GOT:
@@ -5006,6 +5087,18 @@ tilegx_print_operand (FILE *file, rtx x, int code)
case UNSPEC_HW1_LAST_TLS_LE:
opstr = "hw1_last_tls_le";
break;
+ case UNSPEC_HW0_PLT_PCREL:
+ opstr = "hw0_plt";
+ break;
+ case UNSPEC_HW1_PLT_PCREL:
+ opstr = "hw1_plt";
+ break;
+ case UNSPEC_HW1_LAST_PLT_PCREL:
+ opstr = "hw1_last_plt";
+ break;
+ case UNSPEC_HW2_LAST_PLT_PCREL:
+ opstr = "hw2_last_plt";
+ break;
default:
output_operand_lossage ("invalid %%H specifier");
}
@@ -5015,7 +5108,13 @@ tilegx_print_operand (FILE *file, rtx x, int code)
output_addr_const (file, addr);
if (unspec == UNSPEC_HW0_PCREL
- || unspec == UNSPEC_HW1_LAST_PCREL)
+ || unspec == UNSPEC_HW1_PCREL
+ || unspec == UNSPEC_HW1_LAST_PCREL
+ || unspec == UNSPEC_HW2_LAST_PCREL
+ || unspec == UNSPEC_HW0_PLT_PCREL
+ || unspec == UNSPEC_HW1_PLT_PCREL
+ || unspec == UNSPEC_HW1_LAST_PLT_PCREL
+ || unspec == UNSPEC_HW2_LAST_PLT_PCREL)
{
rtx addr2 = XVECEXP (XEXP (x, 0), 0, 1);
fputs (" - " , file);
@@ -5173,7 +5272,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
case 'r':
/* In this case we need a register. Use 'zero' if the operand
- is const0_rtx. */
+ is const0_rtx. */
if (x == const0_rtx
|| (GET_MODE (x) != VOIDmode && x == CONST0_RTX (GET_MODE (x))))
{
@@ -5260,7 +5359,7 @@ tilegx_final_prescan_insn (rtx insn)
}
-/* While emitting asm, are we currently inside '{' for a bundle? */
+/* While emitting asm, are we currently inside '{' for a bundle? */
static bool tilegx_in_bundle = false;
/* Implement ASM_OUTPUT_OPCODE. Prepend/append curly braces as
@@ -5313,7 +5412,7 @@ tilegx_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
fprintf (file,
"\t{\n"
"\tmove\tr10, lr\n"
- "\tjal\t%s@plt\n"
+ "\tjal\tplt(%s)\n"
"\t}\n", MCOUNT_NAME);
}
else
@@ -5322,7 +5421,7 @@ tilegx_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
"\t{\n"
"\tmove\tr10, lr\n"
"\tjal\t%s\n"
- "\t}\t\n", MCOUNT_NAME);
+ "\t}\n", MCOUNT_NAME);
}
tilegx_in_bundle = false;
@@ -5435,7 +5534,7 @@ tilegx_file_end (void)
#undef TARGET_BUILTIN_DECL
#define TARGET_BUILTIN_DECL tilegx_builtin_decl
-#undef TARGET_EXPAND_BUILTIN
+#undef TARGET_EXPAND_BUILTIN
#define TARGET_EXPAND_BUILTIN tilegx_expand_builtin
#undef TARGET_CONDITIONAL_REGISTER_USAGE
diff --git a/gcc/config/tilegx/tilegx.h b/gcc/config/tilegx/tilegx.h
index ac69061d85c..061008ff42d 100644
--- a/gcc/config/tilegx/tilegx.h
+++ b/gcc/config/tilegx/tilegx.h
@@ -31,6 +31,8 @@
} \
while (0)
+#include "config/tilegx/tilegx-opts.h"
+
/* Target CPU builtins. */
#define TARGET_CPU_CPP_BUILTINS() \
@@ -480,6 +482,19 @@ enum reg_class
assemble_name ((FILE), (NAME)), \
fprintf ((FILE), ",%u\n", (unsigned int)(ROUNDED)))
+#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
+static void __attribute__((__used__)) \
+call_ ## FUNC (void) \
+{ \
+ asm (SECTION_OP); \
+ asm ("{ moveli r0, hw2_last(" #FUNC " - . - 8); lnk r1 }\n"); \
+ asm ("shl16insli r0, r0, hw1(" #FUNC " - .)\n"); \
+ asm ("shl16insli r0, r0, hw0(" #FUNC " - . + 8)\n"); \
+ asm ("add r0, r1, r0\n"); \
+ asm ("jalr r0\n"); \
+ asm (TEXT_SECTION_ASM_OP); \
+}
+
#define INIT_EXPANDERS tilegx_init_expanders ()
diff --git a/gcc/config/tilegx/tilegx.md b/gcc/config/tilegx/tilegx.md
index 033d125a99b..92a6d651eda 100644
--- a/gcc/config/tilegx/tilegx.md
+++ b/gcc/config/tilegx/tilegx.md
@@ -150,42 +150,43 @@
;; Insns generating difference of two labels
(UNSPEC_MOV_PCREL_STEP3 204)
+ (UNSPEC_MOV_LARGE_PCREL_STEP4 205)
;; Latency specifying loads.
- (UNSPEC_LATENCY_L2 205)
- (UNSPEC_LATENCY_MISS 206)
+ (UNSPEC_LATENCY_L2 206)
+ (UNSPEC_LATENCY_MISS 207)
;; A pseudo-op that prevents network operations from being ordered.
- (UNSPEC_NETWORK_BARRIER 207)
+ (UNSPEC_NETWORK_BARRIER 208)
;; Operations that access network registers.
- (UNSPEC_NETWORK_RECEIVE 208)
- (UNSPEC_NETWORK_SEND 209)
+ (UNSPEC_NETWORK_RECEIVE 209)
+ (UNSPEC_NETWORK_SEND 210)
;; Stack protector operations
- (UNSPEC_SP_SET 210)
- (UNSPEC_SP_TEST 211)
+ (UNSPEC_SP_SET 211)
+ (UNSPEC_SP_TEST 212)
;; This is used to move a value to a SPR.
- (UNSPEC_SPR_MOVE 212)
+ (UNSPEC_SPR_MOVE 213)
;; A call to __tls_get_addr
- (UNSPEC_TLS_GD_CALL 213)
+ (UNSPEC_TLS_GD_CALL 214)
;; An opaque TLS "add" operation for TLS general dynamic model
;; access.
- (UNSPEC_TLS_GD_ADD 214)
+ (UNSPEC_TLS_GD_ADD 215)
;; An opaque TLS "load" operation for TLS initial exec model access.
- (UNSPEC_TLS_IE_LOAD 215)
+ (UNSPEC_TLS_IE_LOAD 216)
;; An opaque TLS "add" operation for TLS access.
- (UNSPEC_TLS_ADD 216)
+ (UNSPEC_TLS_ADD 217)
;; Atomics
- (UNSPEC_ATOMIC 217)
- (UNSPEC_CMPXCHG 218)
- (UNSPEC_XCHG 219)
+ (UNSPEC_ATOMIC 218)
+ (UNSPEC_CMPXCHG 219)
+ (UNSPEC_XCHG 220)
;;
;; The following are operands.
@@ -199,24 +200,32 @@
(UNSPEC_HW2_LAST 306)
(UNSPEC_HW0_PCREL 307)
- (UNSPEC_HW1_LAST_PCREL 308)
+ (UNSPEC_HW1_PCREL 308)
+ (UNSPEC_HW1_LAST_PCREL 309)
+ (UNSPEC_HW2_LAST_PCREL 310)
- (UNSPEC_HW0_GOT 309)
- (UNSPEC_HW0_LAST_GOT 310)
- (UNSPEC_HW1_LAST_GOT 311)
+ (UNSPEC_HW0_GOT 311)
+ (UNSPEC_HW0_LAST_GOT 312)
+ (UNSPEC_HW1_LAST_GOT 313)
- (UNSPEC_HW0_TLS_GD 312)
- (UNSPEC_HW1_LAST_TLS_GD 313)
+ (UNSPEC_HW0_TLS_GD 314)
+ (UNSPEC_HW1_LAST_TLS_GD 315)
- (UNSPEC_HW0_TLS_IE 314)
- (UNSPEC_HW1_LAST_TLS_IE 315)
+ (UNSPEC_HW0_TLS_IE 316)
+ (UNSPEC_HW1_LAST_TLS_IE 317)
- (UNSPEC_HW0_TLS_LE 316)
- (UNSPEC_HW1_LAST_TLS_LE 317)
+ (UNSPEC_HW0_TLS_LE 318)
+ (UNSPEC_HW1_LAST_TLS_LE 319)
+
+ (UNSPEC_HW0_PLT_PCREL 320)
+ (UNSPEC_HW1_PLT_PCREL 321)
+
+ (UNSPEC_HW1_LAST_PLT_PCREL 322)
+ (UNSPEC_HW2_LAST_PLT_PCREL 323)
;; This is used to wrap around the addresses of non-temporal load/store
;; intrinsics.
- (UNSPEC_NON_TEMPORAL 318)
+ (UNSPEC_NON_TEMPORAL 324)
])
;; Mark the last instruction of various latencies, used to
@@ -250,7 +259,7 @@
;; Define an insn type attribute. This defines what pipes things can go in.
(define_attr "type"
- "X0,X0_2cycle,X1,X1_branch,X1_2cycle,X1_L2,X1_miss,X01,Y0,Y0_2cycle,Y1,Y2,Y2_2cycle,Y2_L2,Y2_miss,Y01,cannot_bundle,cannot_bundle_3cycle,cannot_bundle_4cycle,nothing"
+ "X0,X0_2cycle,X1,X1_branch,X1_2cycle,X1_L2,X1_remote,X1_miss,X01,Y0,Y0_2cycle,Y1,Y2,Y2_2cycle,Y2_L2,Y2_miss,Y01,cannot_bundle,cannot_bundle_3cycle,cannot_bundle_4cycle,nothing"
(const_string "Y01"))
(define_attr "length" ""
@@ -408,7 +417,7 @@
(ss_minus "")
(us_minus "")
])
-
+
;; <s> is the load/store extension suffix.
(define_code_attr s [(zero_extend "u")
(sign_extend "s")])
@@ -816,11 +825,11 @@
bit_width = INTVAL (operands[2]);
bit_offset = INTVAL (operands[3]);
- /* Reject bitfields that can be done with a normal load */
+ /* Reject bitfields that can be done with a normal load. */
if (MEM_ALIGN (operands[1]) >= bit_offset + bit_width)
FAIL;
- /* The value in memory cannot span more than 8 bytes. */
+ /* The value in memory cannot span more than 8 bytes. */
first_byte_offset = bit_offset / BITS_PER_UNIT;
last_byte_offset = (bit_offset + bit_width - 1) / BITS_PER_UNIT;
if (last_byte_offset - first_byte_offset > 7)
@@ -845,7 +854,6 @@
HOST_WIDE_INT bit_width = INTVAL (operands[2]);
HOST_WIDE_INT bit_offset = INTVAL (operands[3]);
-
if (MEM_P (operands[1]))
{
HOST_WIDE_INT first_byte_offset, last_byte_offset;
@@ -853,11 +861,11 @@
if (GET_MODE (operands[1]) != QImode)
FAIL;
- /* Reject bitfields that can be done with a normal load */
+ /* Reject bitfields that can be done with a normal load. */
if (MEM_ALIGN (operands[1]) >= bit_offset + bit_width)
FAIL;
- /* The value in memory cannot span more than 8 bytes. */
+ /* The value in memory cannot span more than 8 bytes. */
first_byte_offset = bit_offset / BITS_PER_UNIT;
last_byte_offset = (bit_offset + bit_width - 1) / BITS_PER_UNIT;
if (last_byte_offset - first_byte_offset > 7)
@@ -873,7 +881,7 @@
if (bit_offset == 0)
{
- /* Extracting the low bits is just a bitwise AND. */
+ /* Extracting the low bits is just a bitwise AND. */
HOST_WIDE_INT mask = ((HOST_WIDE_INT)1 << bit_width) - 1;
emit_insn (gen_anddi3 (operands[0], operands[1], GEN_INT (mask)));
DONE;
@@ -885,15 +893,15 @@
;; Addresses
;;
-;; First step of the 3-insn sequence to materialize a symbolic
-;; address.
+;; The next three patterns are used to to materialize a position
+;; independent address by adding the difference of two labels to a base
+;; label in the text segment, assuming that the difference fits in 32
+;; signed bits.
(define_expand "mov_address_step1"
[(set (match_operand:DI 0 "register_operand" "")
(const:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
UNSPEC_HW2_LAST)))])
-
-;; Second step of the 3-insn sequence to materialize a symbolic
-;; address.
+
(define_expand "mov_address_step2"
[(set (match_operand:DI 0 "register_operand" "")
(unspec:DI
@@ -902,8 +910,6 @@
UNSPEC_HW1))]
UNSPEC_INSN_ADDR_SHL16INSLI))])
-;; Third step of the 3-insn sequence to materialize a symbolic
-;; address.
(define_expand "mov_address_step3"
[(set (match_operand:DI 0 "register_operand" "")
(unspec:DI
@@ -947,7 +953,7 @@
"%1 = . + 8\n\tlnk\t%0"
[(set_attr "type" "Y1")])
-;; First step of the 3-insn sequence to materialize a position
+;; The next three patterns are used to to materialize a position
;; independent address by adding the difference of two labels to a
;; base label in the text segment, assuming that the difference fits
;; in 32 signed bits.
@@ -959,10 +965,6 @@
UNSPEC_HW1_LAST_PCREL)))]
"flag_pic")
-;; Second step of the 3-insn sequence to materialize a position
-;; independent address by adding the difference of two labels to a
-;; base label in the text segment, assuming that the difference fits
-;; in 32 signed bits.
(define_expand "mov_pcrel_step2<bitsuffix>"
[(set (match_operand:I48MODE 0 "register_operand" "")
(unspec:I48MODE
@@ -973,11 +975,7 @@
UNSPEC_HW0_PCREL))]
UNSPEC_INSN_ADDR_SHL16INSLI))]
"flag_pic")
-
-;; Third step of the 3-insn sequence to materialize a position
-;; independent address by adding the difference of two labels to a base
-;; label in the text segment, assuming that the difference fits in 32
-;; signed bits.
+
(define_insn "mov_pcrel_step3<bitsuffix>"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
(unspec:I48MODE [(match_operand:I48MODE 1 "reg_or_0_operand" "rO")
@@ -988,6 +986,106 @@
"flag_pic"
"add<x>\t%0, %r1, %r2")
+;; The next three patterns are used to to materialize a position
+;; independent 64-bit address by adding the difference of two labels to
+;; a base label in the text segment, without any limitation on the size
+;; of the difference.
+(define_expand "mov_large_pcrel_step1"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (const:DI (unspec:DI
+ [(match_operand:DI 1 "symbolic_operand" "")
+ (match_operand:DI 2 "symbolic_operand" "")]
+ UNSPEC_HW2_LAST_PCREL)))]
+ "flag_pic")
+
+(define_expand "mov_large_pcrel_step2"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (unspec:DI
+ [(match_operand:DI 1 "reg_or_0_operand" "")
+ (const:DI
+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")
+ (match_operand:DI 3 "symbolic_operand" "")]
+ UNSPEC_HW1_PCREL))]
+ UNSPEC_INSN_ADDR_SHL16INSLI))]
+ "flag_pic")
+
+;; Note: step 3 is same as move_pcrel_step2.
+(define_expand "mov_large_pcrel_step3"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (unspec:DI
+ [(match_operand:DI 1 "reg_or_0_operand" "")
+ (const:DI
+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")
+ (match_operand:DI 3 "symbolic_operand" "")]
+ UNSPEC_HW0_PCREL))]
+ UNSPEC_INSN_ADDR_SHL16INSLI))]
+ "flag_pic")
+
+(define_insn "mov_large_pcrel_step4"
+ [(set (match_operand:DI 0 "register_operand" "=r")
+ (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO")
+ (match_operand:DI 2 "reg_or_0_operand" "rO")
+ (match_operand:DI 3 "symbolic_operand" "in")
+ (match_operand:DI 4 "symbolic_operand" "in")]
+ UNSPEC_MOV_LARGE_PCREL_STEP4))]
+ "flag_pic"
+ "add\t%0, %r1, %r2")
+
+;; The next three patterns are used to materialize a position
+;; independent 64-bit plt address by adding the difference of two
+;; labels to a base label in the text segment.
+(define_expand "mov_plt_pcrel_step1"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (const:DI (unspec:DI
+ [(match_operand:DI 1 "symbolic_operand" "")
+ (match_operand:DI 2 "symbolic_operand" "")]
+ UNSPEC_HW2_LAST_PLT_PCREL)))]
+ "flag_pic")
+
+(define_expand "mov_plt_pcrel_step2"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (unspec:DI
+ [(match_operand:DI 1 "reg_or_0_operand" "")
+ (const:DI
+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")
+ (match_operand:DI 3 "symbolic_operand" "")]
+ UNSPEC_HW1_PLT_PCREL))]
+ UNSPEC_INSN_ADDR_SHL16INSLI))]
+ "flag_pic")
+
+(define_expand "mov_plt_pcrel_step3"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (unspec:DI
+ [(match_operand:DI 1 "reg_or_0_operand" "")
+ (const:DI
+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")
+ (match_operand:DI 3 "symbolic_operand" "")]
+ UNSPEC_HW0_PLT_PCREL))]
+ UNSPEC_INSN_ADDR_SHL16INSLI))]
+ "flag_pic")
+
+;; The next two patterns are used to materialize a position independent
+;; 32-bit plt address by adding the difference of two labels to a base
+;; label in the text segment.
+(define_expand "mov_plt_pcrel_step1_32bit"
+ [(set (match_operand:SI 0 "register_operand" "")
+ (const:SI (unspec:SI
+ [(match_operand:SI 1 "symbolic_operand" "")
+ (match_operand:SI 2 "symbolic_operand" "")]
+ UNSPEC_HW1_LAST_PLT_PCREL)))]
+ "flag_pic")
+
+(define_expand "mov_plt_pcrel_step2_32bit"
+ [(set (match_operand:SI 0 "register_operand" "")
+ (unspec:SI
+ [(match_operand:SI 1 "reg_or_0_operand" "")
+ (const:SI
+ (unspec:SI [(match_operand:SI 2 "symbolic_operand" "")
+ (match_operand:SI 3 "symbolic_operand" "")]
+ UNSPEC_HW0_PLT_PCREL))]
+ UNSPEC_INSN_ADDR_SHL16INSLI))]
+ "flag_pic")
+
(define_expand "add_got16<bitsuffix>"
[(set (match_operand:I48MODE 0 "register_operand" "")
(plus:I48MODE
@@ -1335,7 +1433,6 @@
DONE;
})
-
(define_expand "subdf3"
[(set (match_operand:DF 0 "register_operand" "")
(minus:DF (match_operand:DF 1 "register_operand" "")
@@ -1708,7 +1805,6 @@
"ctz\t%0, %r1"
[(set_attr "type" "Y0")])
-
(define_insn "popcount<mode>2"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
(popcount:I48MODE (match_operand:DI 1 "reg_or_0_operand" "rO")))]
@@ -1937,7 +2033,7 @@
(define_insn "*zero_extendsidi_truncdisi"
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI
- (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "0"))))]
+ (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO"))))]
""
"v4int_l\t%0, zero, %r1"
[(set_attr "type" "X01")])
@@ -2008,7 +2104,7 @@
shruxi\t%0, %r1, %2
shrux\t%0, %r1, %r2"
[(set_attr "type" "X01,X01")])
-
+
(define_insn "*lshrsi_truncdisi2"
[(set (match_operand:SI 0 "register_operand" "=r")
(lshiftrt:SI
@@ -2213,7 +2309,8 @@
;; Loops
;;
-;; Define the subtract-one-and-jump insns so loop.c knows what to generate.
+;; Define the subtract-one-and-jump insns so loop.c knows what to
+;; generate.
(define_expand "doloop_end"
[(use (match_operand 0 "" "")) ;; loop pseudo
(use (match_operand 1 "" "")) ;; iterations; zero if unknown
@@ -2300,7 +2397,29 @@
(use (reg:DI 54))
(clobber (reg:DI 55))])]
""
- "")
+{
+ rtx orig_addr = XEXP (operands[0], 0);
+ rtx addr;
+ if (GET_CODE (orig_addr) == SYMBOL_REF)
+ {
+ if (tilegx_cmodel == CM_LARGE)
+ {
+ addr = gen_reg_rtx (Pmode);
+ tilegx_expand_set_const64 (addr, orig_addr);
+ operands[0] = gen_rtx_MEM (DImode, addr);
+ }
+ else if (tilegx_cmodel == CM_LARGE_PIC)
+ {
+ crtl->uses_pic_offset_table = 1;
+ addr = gen_reg_rtx (Pmode);
+ if (SYMBOL_REF_LOCAL_P (orig_addr))
+ tilegx_compute_pcrel_address (addr, orig_addr);
+ else
+ tilegx_compute_pcrel_plt_address (addr, orig_addr);
+ operands[0] = gen_rtx_MEM (DImode, addr);
+ }
+ }
+})
(define_insn "*call_insn"
[(call (mem:DI (match_operand:I48MODE 0 "call_address_operand" "rO,i"))
@@ -2319,7 +2438,30 @@
(match_operand 2 "" "")))
(use (reg:DI 54))
(clobber (reg:DI 55))])]
- "")
+ ""
+{
+ rtx orig_addr = XEXP (operands[1], 0);
+ rtx addr;
+ if (GET_CODE (orig_addr) == SYMBOL_REF)
+ {
+ if (tilegx_cmodel == CM_LARGE)
+ {
+ addr = gen_reg_rtx (Pmode);
+ tilegx_expand_set_const64 (addr, orig_addr);
+ operands[1] = gen_rtx_MEM (DImode, addr);
+ }
+ else if (tilegx_cmodel == CM_LARGE_PIC)
+ {
+ crtl->uses_pic_offset_table = 1;
+ addr = gen_reg_rtx (Pmode);
+ if (SYMBOL_REF_LOCAL_P (orig_addr))
+ tilegx_compute_pcrel_address (addr, orig_addr);
+ else
+ tilegx_compute_pcrel_plt_address (addr, orig_addr);
+ operands[1] = gen_rtx_MEM (DImode, addr);
+ }
+ }
+})
(define_insn "*call_value_insn"
[(set (match_operand 0 "register_operand" "=r,r")
@@ -2481,8 +2623,8 @@
[(set_attr "type" "*,*,X01")])
;; Used for move sp, r52, to pop a stack frame. We need to make sure
-;; that stack frame memory operations have been issued before we do this.
-;; TODO: see above TODO.
+;; that stack frame memory operations have been issued before we do
+;; this. TODO: see above TODO.
(define_insn "sp_restore<bitsuffix>"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
(match_operand:I48MODE 1 "register_operand" "r"))
@@ -2627,7 +2769,7 @@
"bfextu\t%0, %r1, %2, %3"
[(set_attr "type" "X0")])
-(define_insn "*bfins"
+(define_insn "insn_bfins"
[(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0")
(match_operand:DI 2 "reg_or_0_operand" "rO")
@@ -2638,36 +2780,6 @@
"bfins\t%0, %r2, %3, %4"
[(set_attr "type" "X0")])
-(define_expand "insn_bfins"
- [(set (match_operand:DI 0 "register_operand" "")
- (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "")
- (match_operand:DI 2 "reg_or_0_operand" "")
- (match_operand:DI 3 "u6bit_cint_operand" "")
- (match_operand:DI 4 "u6bit_cint_operand" "")]
- UNSPEC_INSN_BFINS))]
- "INTVAL (operands[3]) != 64"
-{
- HOST_WIDE_INT first = INTVAL (operands[3]);
- HOST_WIDE_INT last = INTVAL (operands[4]);
-
- if (last >= first)
- {
- /* This is not a wacky wraparound case, so we can express this
- as a standard insv. */
- if (operands[0] != operands[1])
- {
- operands[2] = make_safe_from (operands[2], operands[0]);
- emit_move_insn (operands[0], operands[1]);
- }
-
- emit_insn (gen_insv (operands[0],
- GEN_INT (last - first + 1), operands[3],
- operands[2]));
-
- DONE;
- }
-})
-
(define_insn "insn_cmpexch<four_if_si>"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
(mem:I48MODE (match_operand 1 "pointer_operand" "rO")))
@@ -2679,7 +2791,7 @@
UNSPEC_INSN_CMPEXCH))]
""
"cmpexch<four_if_si>\t%0, %r1, %r2"
- [(set_attr "type" "X1_L2")])
+ [(set_attr "type" "X1_remote")])
(define_insn "insn_cmul"
[(set (match_operand:DI 0 "register_operand" "=r")
@@ -2817,7 +2929,7 @@
UNSPEC_INSN_EXCH))]
""
"exch<four_if_si>\t%0, %r1, %r2"
- [(set_attr "type" "X1_2cycle")])
+ [(set_attr "type" "X1_remote")])
(define_insn "insn_fdouble_add_flags"
[(set (match_operand:DI 0 "register_operand" "=r")
@@ -2903,7 +3015,7 @@
(match_operand:I48MODE 2 "reg_or_0_operand" "rO")))]
""
"fetchadd<four_if_si>\t%0, %r1, %r2"
- [(set_attr "type" "X1_2cycle")])
+ [(set_attr "type" "X1_remote")])
(define_insn "insn_fetchaddgez<four_if_si>"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
@@ -2916,7 +3028,7 @@
UNSPEC_INSN_FETCHADDGEZ))]
""
"fetchaddgez<four_if_si>\t%0, %r1, %r2"
- [(set_attr "type" "X1_2cycle")])
+ [(set_attr "type" "X1_remote")])
(define_insn "insn_fetchand<four_if_si>"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
@@ -2928,7 +3040,7 @@
(match_operand:I48MODE 2 "reg_or_0_operand" "rO")))]
""
"fetchand<four_if_si>\t%0, %r1, %r2"
- [(set_attr "type" "X1_2cycle")])
+ [(set_attr "type" "X1_remote")])
(define_insn "insn_fetchor<four_if_si>"
[(set (match_operand:I48MODE 0 "register_operand" "=r")
@@ -2940,7 +3052,7 @@
(match_operand:I48MODE 2 "reg_or_0_operand" "rO")))]
""
"fetchor<four_if_si>\t%0, %r1, %r2"
- [(set_attr "type" "X1_2cycle")])
+ [(set_attr "type" "X1_remote")])
(define_insn "insn_finv"
[(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")]
diff --git a/gcc/config/tilegx/tilegx.opt b/gcc/config/tilegx/tilegx.opt
index 5a65eaec380..932f4842f8a 100644
--- a/gcc/config/tilegx/tilegx.opt
+++ b/gcc/config/tilegx/tilegx.opt
@@ -19,6 +19,9 @@
; along with GCC; see the file COPYING3. If not see
; <http://www.gnu.org/licenses/>.
+HeaderInclude
+config/tilegx/tilegx-opts.h
+
mcpu=
Target RejectNegative Joined Enum(tilegx_cpu) Var(tilegx_cpu) Init(0)
-mcpu=CPU Use features of and schedule code for given CPU
@@ -38,3 +41,16 @@ m64
Target Report RejectNegative Negative(m32) InverseMask(32BIT, 64BIT)
Compile with 64 bit longs and pointers.
+mcmodel=
+Target RejectNegative Joined Enum(cmodel) Var(tilegx_cmodel) Init(CM_SMALL)
+Use given TILE-Gx code model
+
+Enum
+Name(cmodel) Type(enum cmodel)
+Known code models (for use with the -mcmodel= option):
+
+EnumValue
+Enum(cmodel) String(small) Value(CM_SMALL)
+
+EnumValue
+Enum(cmodel) String(large) Value(CM_LARGE)
diff --git a/gcc/config/tilepro/feedback.h b/gcc/config/tilepro/feedback.h
new file mode 100644
index 00000000000..34e48ed8895
--- /dev/null
+++ b/gcc/config/tilepro/feedback.h
@@ -0,0 +1,14 @@
+#ifndef _FEEDBACK_H
+#define _FEEDBACK_H 1
+
+#ifdef __ASSEMBLER__
+
+/* Stub defines for feedback instrumentation. */
+#define FEEDBACK_ENTER_EXPLICIT(FUNCNAME, SECNAME, SIZE)
+#define FEEDBACK_ENTER(FUNCNAME)
+#define FEEDBACK_REENTER(FUNCNAME)
+#define FEEDBACK_ENTRY(FUNCNAME, SECNAME, SIZE)
+
+#endif /* __ASSEMBLER__ */
+
+#endif /* _FEEDBACK_H */
diff --git a/gcc/config/tilepro/tilepro.c b/gcc/config/tilepro/tilepro.c
index 10bf7021a8c..3f336e465f8 100644
--- a/gcc/config/tilepro/tilepro.c
+++ b/gcc/config/tilepro/tilepro.c
@@ -4914,7 +4914,7 @@ tilepro_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
fprintf (file,
"\t{\n"
"\tmove\tr10, lr\n"
- "\tjal\t%s@plt\n"
+ "\tjal\tplt(%s)\n"
"\t}\n", MCOUNT_NAME);
}
else
diff --git a/gcc/config/v850/rtems.h b/gcc/config/v850/rtems.h
new file mode 100644
index 00000000000..397d2e01a70
--- /dev/null
+++ b/gcc/config/v850/rtems.h
@@ -0,0 +1,29 @@
+/* Definitions for rtems targeting a v850 using ELF.
+ Copyright (C) 2012 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+/* Specify predefined symbols in preprocessor. */
+
+#define TARGET_OS_CPP_BUILTINS() do { \
+ builtin_define( "__rtems__" ); \
+ builtin_assert( "system=rtems" ); \
+} while (0)
+
+/* Map mv850e1 and mv850es to mv850e to match MULTILIB_MATCHES */
+#undef ASM_SPEC
+#define ASM_SPEC "%{mv850es:-mv850e} %{mv850e1:-mv850e} %{!mv850es:%{!mv850e1:%{mv*:-mv%*}}}"
diff --git a/gcc/config/v850/t-rtems b/gcc/config/v850/t-rtems
new file mode 100644
index 00000000000..c3f4ee4f836
--- /dev/null
+++ b/gcc/config/v850/t-rtems
@@ -0,0 +1,3 @@
+# Custom multilibs for RTEMS
+
+MULTILIB_MATCHES += mv850e=mv850es
diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h
index f5b64deab2b..10ddd7b13a6 100644
--- a/gcc/config/v850/v850.h
+++ b/gcc/config/v850/v850.h
@@ -812,10 +812,6 @@ typedef enum
/* Byte and short loads sign extend the value to a word. */
#define LOAD_EXTEND_OP(MODE) SIGN_EXTEND
-/* This flag, if defined, says the same insns that convert to a signed fixnum
- also convert validly to an unsigned one. */
-#define FIXUNS_TRUNC_LIKE_FIX_TRUNC
-
/* Max number of bytes we can move from memory to memory
in one reasonably fast instruction. */
#define MOVE_MAX 4
diff --git a/gcc/config/v850/v850.md b/gcc/config/v850/v850.md
index 4ac565383cd..f479ff6322e 100644
--- a/gcc/config/v850/v850.md
+++ b/gcc/config/v850/v850.md
@@ -1938,7 +1938,7 @@
;; float -> int
(define_insn "fix_truncsfsi2"
[(set (match_operand:SI 0 "register_operand" "=r")
- (fix:SI (fix:SF (match_operand:SF 1 "register_operand" "r"))))]
+ (fix:SI (match_operand:SF 1 "register_operand" "r")))]
"TARGET_V850E2V3"
"trncf.sw %1,%0"
[(set_attr "length" "4")
@@ -1947,13 +1947,23 @@
(define_insn "fix_truncdfsi2"
[(set (match_operand:SI 0 "register_operand" "=r")
- (fix:SI (fix:DF (match_operand:DF 1 "even_reg_operand" "r"))))]
+ (fix:SI (match_operand:DF 1 "even_reg_operand" "r")))]
"TARGET_V850E2V3"
"trncf.dw %1,%0"
[(set_attr "length" "4")
(set_attr "cc" "none_0hit")
(set_attr "type" "fpu")])
+(define_expand "fixuns_truncsfsi2"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (fix:SI (match_operand:SF 1 "register_operand" "r")))]
+ "TARGET_V850E2V3")
+
+(define_expand "fixuns_truncdfsi2"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (fix:SI (match_operand:DF 1 "even_reg_operand" "r")))]
+ "TARGET_V850E2V3")
+
;; int -> float
(define_insn "floatsisf2"
[(set (match_operand:SF 0 "register_operand" "=r")
diff --git a/gcc/config/vax/vax-protos.h b/gcc/config/vax/vax-protos.h
index 3f247943314..5363877a36d 100644
--- a/gcc/config/vax/vax-protos.h
+++ b/gcc/config/vax/vax-protos.h
@@ -19,7 +19,6 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
extern bool legitimate_constant_address_p (rtx);
-extern bool vax_mode_dependent_address_p (rtx);
extern void vax_expand_prologue (void);
#ifdef RTX_CODE
diff --git a/gcc/config/vax/vax.c b/gcc/config/vax/vax.c
index aa929ca1e50..aa848108cf7 100644
--- a/gcc/config/vax/vax.c
+++ b/gcc/config/vax/vax.c
@@ -64,6 +64,7 @@ static rtx vax_builtin_setjmp_frame_value (void);
static void vax_asm_trampoline_template (FILE *);
static void vax_trampoline_init (rtx, tree, rtx);
static int vax_return_pops_args (tree, tree, int);
+static bool vax_mode_dependent_address_p (const_rtx);
/* Initialize the GCC target structure. */
#undef TARGET_ASM_ALIGNED_HI_OP
@@ -103,6 +104,8 @@ static int vax_return_pops_args (tree, tree, int);
#undef TARGET_LEGITIMATE_ADDRESS_P
#define TARGET_LEGITIMATE_ADDRESS_P vax_legitimate_address_p
+#undef TARGET_MODE_DEPENDENT_ADDRESS_P
+#define TARGET_MODE_DEPENDENT_ADDRESS_P vax_mode_dependent_address_p
#undef TARGET_FRAME_POINTER_REQUIRED
#define TARGET_FRAME_POINTER_REQUIRED hook_bool_void_true
@@ -1833,8 +1836,8 @@ vax_legitimate_address_p (enum machine_mode mode, rtx x, bool strict)
increment being the length of the operand) and all indexed address depend
thus (because the index scale factor is the length of the operand). */
-bool
-vax_mode_dependent_address_p (rtx x)
+static bool
+vax_mode_dependent_address_p (const_rtx x)
{
rtx xfoo0, xfoo1;
diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h
index 37e3d108f3f..35b8f8ea93a 100644
--- a/gcc/config/vax/vax.h
+++ b/gcc/config/vax/vax.h
@@ -432,11 +432,6 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
#define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X))
#endif
-
-/* Go to LABEL if ADDR (a legitimate address expression)
- has an effect that depends on the machine mode it is used for. */
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL) \
- { if (vax_mode_dependent_address_p (ADDR)) goto LABEL; }
/* Specify the machine mode that this machine uses
for the index in the tablejump instruction. */
@@ -455,10 +450,6 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
/* Define this as 1 if `char' should by default be signed; else as 0. */
#define DEFAULT_SIGNED_CHAR 1
-/* This flag, if defined, says the same insns that convert to a signed fixnum
- also convert validly to an unsigned one. */
-#define FIXUNS_TRUNC_LIKE_FIX_TRUNC
-
/* Max number of bytes we can move from memory to memory
in one reasonably fast instruction. */
#define MOVE_MAX 8
diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md
index 32f50fd3367..afc31293d6d 100644
--- a/gcc/config/vax/vax.md
+++ b/gcc/config/vax/vax.md
@@ -318,9 +318,14 @@
(define_insn "fix_trunc<VAXfp:mode><VAXint:mode>2"
[(set (match_operand:VAXint 0 "nonimmediate_operand" "=g")
- (fix:VAXint (fix:VAXfp (match_operand:VAXfp 1 "general_operand" "gF"))))]
+ (fix:VAXint (match_operand:VAXfp 1 "general_operand" "gF")))]
""
"cvt<VAXfp:fsfx><VAXint:isfx> %1,%0")
+
+(define_expand "fixuns_trunc<VAXfp:mode><VAXint:mode>2"
+ [(set (match_operand:VAXint 0 "nonimmediate_operand" "")
+ (fix:VAXint (match_operand:VAXfp 1 "general_operand")))]
+ "")
;;- All kinds of add instructions.
diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
index fa38008bb0b..6fbb3f6fe31 100644
--- a/gcc/config/xtensa/xtensa.c
+++ b/gcc/config/xtensa/xtensa.c
@@ -175,6 +175,9 @@ static reg_class_t xtensa_secondary_reload (bool, rtx, reg_class_t,
static bool constantpool_address_p (const_rtx addr);
static bool xtensa_legitimate_constant_p (enum machine_mode, rtx);
+static bool xtensa_member_type_forces_blk (const_tree,
+ enum machine_mode mode);
+
static const int reg_nonleaf_alloc_order[FIRST_PSEUDO_REGISTER] =
REG_ALLOC_ORDER;
@@ -210,6 +213,9 @@ static const int reg_nonleaf_alloc_order[FIRST_PSEUDO_REGISTER] =
#undef TARGET_ADDRESS_COST
#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#undef TARGET_MEMBER_TYPE_FORCES_BLK
+#define TARGET_MEMBER_TYPE_FORCES_BLK xtensa_member_type_forces_blk
+
#undef TARGET_BUILD_BUILTIN_VA_LIST
#define TARGET_BUILD_BUILTIN_VA_LIST xtensa_build_builtin_va_list
@@ -2738,6 +2744,18 @@ xtensa_return_addr (int count, rtx frame)
return result;
}
+/* Disable the use of word-sized or smaller complex modes for structures,
+ and for function arguments in particular, where they cause problems with
+ register a7. The xtensa_copy_incoming_a7 function assumes that there is
+ a single reference to an argument in a7, but with small complex modes the
+ real and imaginary components may be extracted separately, leading to two
+ uses of the register, only one of which would be replaced. */
+
+static bool
+xtensa_member_type_forces_blk (const_tree, enum machine_mode mode)
+{
+ return mode == CQImode || mode == CHImode;
+}
/* Create the va_list data type.
diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h
index b1a24c6d86d..50e221a130f 100644
--- a/gcc/config/xtensa/xtensa.h
+++ b/gcc/config/xtensa/xtensa.h
@@ -165,15 +165,6 @@ extern unsigned xtensa_current_frame_size;
bitfields and the structures that contain them. */
#define PCC_BITFIELD_TYPE_MATTERS 1
-/* Disable the use of word-sized or smaller complex modes for structures,
- and for function arguments in particular, where they cause problems with
- register a7. The xtensa_copy_incoming_a7 function assumes that there is
- a single reference to an argument in a7, but with small complex modes the
- real and imaginary components may be extracted separately, leading to two
- uses of the register, only one of which would be replaced. */
-#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) \
- ((MODE) == CQImode || (MODE) == CHImode)
-
/* Align string constants and constructors to at least a word boundary.
The typical use of this macro is to increase alignment for string
constants to be word aligned so that 'strcpy' calls that copy
diff --git a/gcc/configure b/gcc/configure
index 0bdbece6ae8..47106e4f8e9 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -604,8 +604,8 @@ enable_plugin
pluginlibs
CLOOGINC
CLOOGLIBS
-PPLINC
-PPLLIBS
+ISLINC
+ISLLIBS
GMPINC
GMPLIBS
target_cpu_default
@@ -766,7 +766,6 @@ enable_shared
enable_fixed_point
enable_decimal_float
enable_multilib
-ENABLE_BUILD_WITH_CXX
coverage_flags
valgrind_command
valgrind_path_defines
@@ -873,7 +872,6 @@ enable_werror_always
enable_checking
enable_coverage
enable_gather_detailed_mem_stats
-enable_build_with_cxx
with_stabs
enable_multilib
enable___cxa_atexit
@@ -934,8 +932,8 @@ CPP
CXXCPP
GMPLIBS
GMPINC
-PPLLIBS
-PPLINC
+ISLLIBS
+ISLINC
CLOOGLIBS
CLOOGINC'
@@ -1575,7 +1573,6 @@ Optional Features:
Values are opt, noopt, default is noopt
--enable-gather-detailed-mem-stats
enable detailed memory allocation stats gathering
- --enable-build-with-cxx build with C++ compiler instead of C compiler
--enable-multilib enable library support for multiple ABIs
--enable-__cxa_atexit enable __cxa_atexit for C++
--enable-decimal-float={no,yes,bid,dpd}
@@ -1687,8 +1684,8 @@ Some influential environment variables:
CXXCPP C++ preprocessor
GMPLIBS How to link GMP
GMPINC How to find GMP include files
- PPLLIBS How to link PPL
- PPLINC How to find PPL include files
+ ISLLIBS How to link ISL
+ ISLINC How to find ISL include files
CLOOGLIBS How to link CLOOG
CLOOGINC How to find CLOOG include files
@@ -6986,31 +6983,17 @@ else
enable_gather_detailed_mem_stats=no
fi
-if test x$enable_gather_detailed_mem_stats = xyes ; then
+gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
-$as_echo "#define GATHER_STATISTICS 1" >>confdefs.h
+cat >>confdefs.h <<_ACEOF
+#define GATHER_STATISTICS $gather_stats
+_ACEOF
-fi
# -------------------------------
# Miscenalleous configure options
# -------------------------------
-# See if we are building gcc with C++.
-# Check whether --enable-build-with-cxx was given.
-if test "${enable_build_with_cxx+set}" = set; then :
- enableval=$enable_build_with_cxx; ENABLE_BUILD_WITH_CXX=$enableval
-else
- ENABLE_BUILD_WITH_CXX=no
-fi
-
-
-if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
-
-$as_echo "#define ENABLE_BUILD_WITH_CXX 1" >>confdefs.h
-
-fi
-
# With stabs
# Check whether --with-stabs was given.
@@ -7236,6 +7219,17 @@ fi
+if test "x$prefix" = xNONE; then
+ test_prefix=/usr/local
+else
+ test_prefix=$prefix
+fi
+if test "x$exec_prefix" = xNONE; then
+ test_exec_prefix=$test_prefix
+else
+ test_exec_prefix=$exec_prefix
+fi
+
# Check whether --with-sysroot was given.
if test "${with_sysroot+set}" = set; then :
@@ -7248,16 +7242,6 @@ if test "${with_sysroot+set}" = set; then :
TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
- if test "x$prefix" = xNONE; then
- test_prefix=/usr/local
- else
- test_prefix=$prefix
- fi
- if test "x$exec_prefix" = xNONE; then
- test_exec_prefix=$test_prefix
- else
- test_exec_prefix=$exec_prefix
- fi
case ${TARGET_SYSTEM_ROOT} in
"${test_prefix}"|"${test_prefix}/"*|\
"${test_exec_prefix}"|"${test_exec_prefix}/"*|\
@@ -8264,7 +8248,7 @@ fi
for ac_header in limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h
+ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h libintl.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header"
@@ -9514,6 +9498,12 @@ fi
# g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
# iconv() prototype.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
if test "X$prefix" = "XNONE"; then
acl_final_prefix="$ac_default_prefix"
@@ -10055,13 +10045,6 @@ fi
fi
-if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then :
- ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
@@ -10217,169 +10200,12 @@ _ACEOF
fi
- ac_ext=c
+ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-else
-
-
-
-
-
- am_save_CPPFLAGS="$CPPFLAGS"
-
- for element in $INCICONV; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
-$as_echo_n "checking for iconv... " >&6; }
-if test "${am_cv_func_iconv+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
-
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_func_iconv=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$am_save_LIBS"
- fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
-$as_echo "$am_cv_func_iconv" >&6; }
- if test "$am_cv_func_iconv" = yes; then
-
-$as_echo "#define HAVE_ICONV 1" >>confdefs.h
-
- fi
- if test "$am_cv_lib_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
-$as_echo_n "checking how to link with libiconv... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
-$as_echo "$LIBICONV" >&6; }
- else
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
-
-
-
- if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
-$as_echo_n "checking for iconv declaration... " >&6; }
- if test "${am_cv_proto_iconv+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- am_cv_proto_iconv_arg1=""
-else
- am_cv_proto_iconv_arg1="const"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
-fi
-
- am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
- }$am_cv_proto_iconv" >&5
-$as_echo "${ac_t:-
- }$am_cv_proto_iconv" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
-_ACEOF
-
- fi
-
-fi
# Until we have in-tree GNU iconv:
LIBICONV_DEP=
@@ -10462,7 +10288,7 @@ CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include"
for ac_func in getenv atol asprintf sbrk abort atof getcwd getwd \
strsignal strstr stpcpy strverscmp \
errno snprintf vsnprintf vasprintf malloc realloc calloc \
- free basename getopt clock getpagesize clearerr_unlocked feof_unlocked ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked putchar_unlocked putc_unlocked
+ free basename getopt clock getpagesize ffs clearerr_unlocked feof_unlocked ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked putchar_unlocked putc_unlocked
do
ac_tr_decl=`$as_echo "HAVE_DECL_$ac_func" | $as_tr_cpp`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $ac_func is declared" >&5
@@ -10765,14 +10591,13 @@ done
# g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
# prototype.
-if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then :
- ac_ext=cpp
+ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- for ac_func in madvise
+for ac_func in madvise
do
ac_tr_decl=`$as_echo "HAVE_DECL_$ac_func" | $as_tr_cpp`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $ac_func is declared" >&5
@@ -10785,8 +10610,8 @@ else
#undef $ac_tr_decl
#define $ac_tr_decl 1
- #include "ansidecl.h"
- #include "system.h"
+ #include "ansidecl.h"
+ #include "system.h"
int
@@ -10823,66 +10648,12 @@ fi
done
- ac_ext=c
+ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-else
- for ac_func in madvise
-do
- ac_tr_decl=`$as_echo "HAVE_DECL_$ac_func" | $as_tr_cpp`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $ac_func is declared" >&5
-$as_echo_n "checking whether $ac_func is declared... " >&6; }
-if { as_var=gcc_cv_have_decl_$ac_func; eval "test \"\${$as_var+set}\" = set"; }; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#undef $ac_tr_decl
-#define $ac_tr_decl 1
-
- #include "ansidecl.h"
- #include "system.h"
-
-
-int
-main ()
-{
-#ifndef $ac_func
-char *(*pfn) = (char *(*)) $ac_func ;
-#endif
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "gcc_cv_have_decl_$ac_func=yes"
-else
- eval "gcc_cv_have_decl_$ac_func=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-if eval "test \"`echo '$gcc_cv_have_decl_'$ac_func`\" = yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; } ; cat >>confdefs.h <<_ACEOF
-#define $ac_tr_decl 1
-_ACEOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; } ; cat >>confdefs.h <<_ACEOF
-#define $ac_tr_decl 0
-_ACEOF
-
-fi
-
-done
-
-
-fi
# More time-related stuff.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct tms" >&5
@@ -17971,7 +17742,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17974 "configure"
+#line 17745 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -18077,7 +17848,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 18080 "configure"
+#line 17851 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -24790,6 +24561,10 @@ else
gcc_cv_as_ix86_rep_lock_prefix=no
if test x$gcc_cv_as != x; then
$as_echo 'rep movsl
+ rep ret
+ rep nop
+ rep bsf %ecx, %eax
+ rep bsr %ecx, %eax
lock addl %edi, (%eax,%esi)
lock orl $0, (%esp)' > conftest.s
if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
@@ -26627,11 +26402,11 @@ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
if test "x$with_headers" != x; then
target_header_dir=$with_headers
elif test "x$with_sysroot" = x; then
- target_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
+ target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
elif test "x$with_build_sysroot" != "x"; then
target_header_dir="${with_build_sysroot}${native_system_header_dir}"
elif test "x$with_sysroot" = xyes; then
- target_header_dir="${exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
+ target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
else
target_header_dir="${with_sysroot}${native_system_header_dir}"
fi
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 7891fcc39da..7042c9116ec 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -588,27 +588,14 @@ AC_ARG_ENABLE(gather-detailed-mem-stats,
[AS_HELP_STRING([--enable-gather-detailed-mem-stats],
[enable detailed memory allocation stats gathering])], [],
[enable_gather_detailed_mem_stats=no])
-if test x$enable_gather_detailed_mem_stats = xyes ; then
- AC_DEFINE(GATHER_STATISTICS, 1,
- [Define to enable detailed memory allocation stats gathering.])
-fi
+gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
+AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
+[Define to enable detailed memory allocation stats gathering.])
# -------------------------------
# Miscenalleous configure options
# -------------------------------
-# See if we are building gcc with C++.
-AC_ARG_ENABLE(build-with-cxx,
-[AS_HELP_STRING([--enable-build-with-cxx],
- [build with C++ compiler instead of C compiler])],
-ENABLE_BUILD_WITH_CXX=$enableval,
-ENABLE_BUILD_WITH_CXX=no)
-AC_SUBST(ENABLE_BUILD_WITH_CXX)
-if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
- AC_DEFINE(ENABLE_BUILD_WITH_CXX, 1,
- [Define if building with C++.])
-fi
-
# With stabs
AC_ARG_WITH(stabs,
[AS_HELP_STRING([--with-stabs],
@@ -747,6 +734,17 @@ AC_ARG_WITH(build-sysroot,
[SYSROOT_CFLAGS_FOR_TARGET=])
AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
+if test "x$prefix" = xNONE; then
+ test_prefix=/usr/local
+else
+ test_prefix=$prefix
+fi
+if test "x$exec_prefix" = xNONE; then
+ test_exec_prefix=$test_prefix
+else
+ test_exec_prefix=$exec_prefix
+fi
+
AC_ARG_WITH(sysroot,
[AS_HELP_STRING([[--with-sysroot[=DIR]]],
[search for usr/lib, usr/include, et al, within DIR])],
@@ -759,16 +757,6 @@ AC_ARG_WITH(sysroot,
TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
- if test "x$prefix" = xNONE; then
- test_prefix=/usr/local
- else
- test_prefix=$prefix
- fi
- if test "x$exec_prefix" = xNONE; then
- test_exec_prefix=$test_prefix
- else
- test_exec_prefix=$exec_prefix
- fi
case ${TARGET_SYSTEM_ROOT} in
"${test_prefix}"|"${test_prefix}/"*|\
"${test_exec_prefix}"|"${test_exec_prefix}/"*|\
@@ -924,7 +912,7 @@ AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
+ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h libintl.h)
# Check for thread headers.
AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
@@ -1067,11 +1055,9 @@ AC_FUNC_FORK
# g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
# iconv() prototype.
-AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
- [AC_LANG_PUSH([C++])
- AM_ICONV
- AC_LANG_POP([C++])],
- [AM_ICONV])
+AC_LANG_PUSH([C++])
+AM_ICONV
+AC_LANG_POP([C++])
# Until we have in-tree GNU iconv:
LIBICONV_DEP=
@@ -1089,7 +1075,7 @@ CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include"
gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
strsignal strstr stpcpy strverscmp \
errno snprintf vsnprintf vasprintf malloc realloc calloc \
- free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
+ free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
#include "ansidecl.h"
#include "system.h"])
@@ -1140,18 +1126,12 @@ gcc_AC_CHECK_DECLS(sigaltstack, , ,[
# g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
# prototype.
-AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
- [AC_LANG_PUSH([C++])
- gcc_AC_CHECK_DECLS(madvise, , ,[
- #include "ansidecl.h"
- #include "system.h"
- ])
- AC_LANG_POP([C++])],
- [gcc_AC_CHECK_DECLS(madvise, , ,[
- #include "ansidecl.h"
- #include "system.h"
- ])
+AC_LANG_PUSH([C++])
+gcc_AC_CHECK_DECLS(madvise, , ,[
+ #include "ansidecl.h"
+ #include "system.h"
])
+AC_LANG_POP([C++])
# More time-related stuff.
AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
@@ -3641,6 +3621,10 @@ foo: nop
gcc_GAS_CHECK_FEATURE([rep and lock prefix],
gcc_cv_as_ix86_rep_lock_prefix,,,
[rep movsl
+ rep ret
+ rep nop
+ rep bsf %ecx, %eax
+ rep bsr %ecx, %eax
lock addl %edi, (%eax,%esi)
lock orl $0, (%esp)],,
[AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
@@ -4530,11 +4514,11 @@ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
if test "x$with_headers" != x; then
target_header_dir=$with_headers
elif test "x$with_sysroot" = x; then
- target_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
+ target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
elif test "x$with_build_sysroot" != "x"; then
target_header_dir="${with_build_sysroot}${native_system_header_dir}"
elif test "x$with_sysroot" = xyes; then
- target_header_dir="${exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
+ target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
else
target_header_dir="${with_sysroot}${native_system_header_dir}"
fi
@@ -4987,8 +4971,8 @@ fi
AC_ARG_VAR(GMPLIBS,[How to link GMP])
AC_ARG_VAR(GMPINC,[How to find GMP include files])
-AC_ARG_VAR(PPLLIBS,[How to link PPL])
-AC_ARG_VAR(PPLINC,[How to find PPL include files])
+AC_ARG_VAR(ISLLIBS,[How to link ISL])
+AC_ARG_VAR(ISLINC,[How to find ISL include files])
AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
diff --git a/gcc/coretypes.h b/gcc/coretypes.h
index 7e5c0480f2b..a2ca9c8327f 100644
--- a/gcc/coretypes.h
+++ b/gcc/coretypes.h
@@ -116,7 +116,8 @@ enum unwind_info_type
UI_NONE,
UI_SJLJ,
UI_DWARF2,
- UI_TARGET
+ UI_TARGET,
+ UI_SEH
};
/* Callgraph node profile representation. */
@@ -195,5 +196,9 @@ enum memmodel
/* Suppose that higher bits are target dependant. */
#define MEMMODEL_MASK ((1<<16)-1)
+/* Support for user-provided GGC and PCH markers. The first parameter
+ is a pointer to a pointer, the second a cookie. */
+typedef void (*gt_pointer_operator) (void *, void *);
+
#endif /* coretypes.h */
diff --git a/gcc/coverage.c b/gcc/coverage.c
index 8978afc0b82..b4d22dfd9c6 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -43,10 +43,10 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "coverage.h"
#include "langhooks.h"
-#include "hashtab.h"
+#include "hash-table.h"
#include "tree-iterator.h"
#include "cgraph.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "diagnostic-core.h"
#include "intl.h"
#include "filenames.h"
@@ -77,6 +77,12 @@ typedef struct counts_entry
unsigned cfg_checksum;
gcov_type *counts;
struct gcov_ctr_summary summary;
+
+ /* hash_table support. */
+ typedef counts_entry T;
+ static inline hashval_t hash (const counts_entry *);
+ static int equal (const counts_entry *, const counts_entry *);
+ static void remove (counts_entry *);
} counts_entry_t;
static GTY(()) struct coverage_data *functions_head = 0;
@@ -97,27 +103,23 @@ static GTY(()) tree gcov_info_var;
static GTY(()) tree gcov_fn_info_type;
static GTY(()) tree gcov_fn_info_ptr_type;
-/* Name of the output file for coverage output file. If this is NULL
- we're not writing to the notes file. */
+/* Name of the notes (gcno) output file. The "bbg" prefix is for
+ historical reasons, when the notes file contained only the
+ basic block graph notes.
+ If this is NULL we're not writing to the notes file. */
static char *bbg_file_name;
-/* File stamp for graph file. */
+/* File stamp for notes file. */
static unsigned bbg_file_stamp;
-/* Name of the count data file. */
+/* Name of the count data (gcda) file. */
static char *da_file_name;
-/* Hash table of count data. */
-static htab_t counts_hash = NULL;
-
/* The names of merge functions for counters. */
static const char *const ctr_merge_functions[GCOV_COUNTERS] = GCOV_MERGE_FUNCTIONS;
static const char *const ctr_names[GCOV_COUNTERS] = GCOV_COUNTER_NAMES;
/* Forward declarations. */
-static hashval_t htab_counts_entry_hash (const void *);
-static int htab_counts_entry_eq (const void *, const void *);
-static void htab_counts_entry_del (void *);
static void read_counts_file (void);
static tree build_var (tree, tree, int);
static void build_fn_info_type (tree, unsigned, tree);
@@ -147,32 +149,29 @@ get_gcov_unsigned_t (void)
return lang_hooks.types.type_for_mode (mode, true);
}
-static hashval_t
-htab_counts_entry_hash (const void *of)
+inline hashval_t
+counts_entry::hash (const counts_entry_t *entry)
{
- const counts_entry_t *const entry = (const counts_entry_t *) of;
-
return entry->ident * GCOV_COUNTERS + entry->ctr;
}
-static int
-htab_counts_entry_eq (const void *of1, const void *of2)
+inline int
+counts_entry::equal (const counts_entry_t *entry1,
+ const counts_entry_t *entry2)
{
- const counts_entry_t *const entry1 = (const counts_entry_t *) of1;
- const counts_entry_t *const entry2 = (const counts_entry_t *) of2;
-
return entry1->ident == entry2->ident && entry1->ctr == entry2->ctr;
}
-static void
-htab_counts_entry_del (void *of)
+inline void
+counts_entry::remove (counts_entry_t *entry)
{
- counts_entry_t *const entry = (counts_entry_t *) of;
-
free (entry->counts);
free (entry);
}
+/* Hash table of count data. */
+static hash_table <counts_entry> counts_hash;
+
/* Read in the counts file, if available. */
static void
@@ -212,9 +211,7 @@ read_counts_file (void)
tag = gcov_read_unsigned ();
bbg_file_stamp = crc32_unsigned (bbg_file_stamp, tag);
- counts_hash = htab_create (10,
- htab_counts_entry_hash, htab_counts_entry_eq,
- htab_counts_entry_del);
+ counts_hash.create (10);
while ((tag = gcov_read_unsigned ()))
{
gcov_unsigned_t length;
@@ -262,8 +259,7 @@ read_counts_file (void)
elt.ident = fn_ident;
elt.ctr = GCOV_COUNTER_FOR_TAG (tag);
- slot = (counts_entry_t **) htab_find_slot
- (counts_hash, &elt, INSERT);
+ slot = counts_hash.find_slot (&elt, INSERT);
entry = *slot;
if (!entry)
{
@@ -283,14 +279,14 @@ read_counts_file (void)
error ("checksum is (%x,%x) instead of (%x,%x)",
entry->lineno_checksum, entry->cfg_checksum,
lineno_checksum, cfg_checksum);
- htab_delete (counts_hash);
+ counts_hash.dispose ();
break;
}
else if (entry->summary.num != n_counts)
{
error ("Profile data for function %u is corrupted", fn_ident);
error ("number of counters is %d instead of %d", entry->summary.num, n_counts);
- htab_delete (counts_hash);
+ counts_hash.dispose ();
break;
}
else if (elt.ctr >= GCOV_COUNTERS_SUMMABLE)
@@ -316,7 +312,7 @@ read_counts_file (void)
{
error (is_error < 0 ? "%qs has overflowed" : "%qs is corrupted",
da_file_name);
- htab_delete (counts_hash);
+ counts_hash.dispose ();
break;
}
}
@@ -334,7 +330,7 @@ get_coverage_counts (unsigned counter, unsigned expected,
counts_entry_t *entry, elt;
/* No hash table, no counts. */
- if (!counts_hash)
+ if (!counts_hash.is_created ())
{
static int warned = 0;
@@ -348,7 +344,7 @@ get_coverage_counts (unsigned counter, unsigned expected,
elt.ident = current_function_funcdef_no + 1;
elt.ctr = counter;
- entry = (counts_entry_t *) htab_find (counts_hash, &elt);
+ entry = counts_hash.find (&elt);
if (!entry || !entry->summary.num)
/* The function was not emitted, or is weak and not chosen in the
final executable. Silently fail, because there's nothing we
@@ -566,7 +562,7 @@ coverage_compute_cfg_checksum (void)
return chksum;
}
-/* Begin output to the graph file for the current function.
+/* Begin output to the notes file for the current function.
Writes the function header. Returns nonzero if data should be output. */
int
@@ -1079,7 +1075,7 @@ coverage_obj_finish (VEC(constructor_elt,gc) *ctor)
}
/* Perform file-level initialization. Read in data file, generate name
- of graph file. */
+ of notes file. */
void
coverage_init (const char *filename)
@@ -1131,7 +1127,7 @@ coverage_init (const char *filename)
}
}
-/* Performs file-level cleanup. Close graph file, generate coverage
+/* Performs file-level cleanup. Close notes file, generate coverage
variables and constructor. */
void
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9b5b7c163d6..845f0b4ea6c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,421 @@
+2012-08-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51421
+ * decl2.c (mark_used): Consistently return false after errors
+ about uses before deduction of auto.
+ * semantics.c (finish_id_expression): Check mark_used return
+ value and return error_mark_node in case of failure.
+
+2012-08-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/51213 (again)
+ * pt.c (deduction_tsubst_fntype): Remove.
+ (fn_type_unification): Check deduction depth and call
+ instantiate_template here. Handle default argument access checks.
+ (determine_specialization): Suppress access control.
+ (tsubst_decl): Check for excessive deduction depth.
+ (recheck_decl_substitution): Make sure access control is on.
+ (type_unification_real): Don't mess with access deferring here.
+ (get_bindings): Adjust for fn_type_unification return type.
+ * call.c (enum rejection_reason_code): Drop rr_template_instantiation.
+ (template_instantiation_rejection): Remove.
+ (struct rejection_reason): Change targs to num_targs.
+ (template_unification_rejection, print_z_candidate): Adjust.
+ (add_template_candidate_real): Adjust for fn_type_unification change.
+ * class.c (resolve_address_of_overloaded_function): Likewise.
+ * cp-tree.h: Adjust declaration.
+
+ * pt.c (tsubst_default_argument): Indicate where the default
+ argument is being instantiated for.
+ (tsubst_expr): Restore previous location.
+ (tsubst_copy_and_build): Set and restore location.
+ * call.c (build_new_method_call_1): Remember location of call.
+ * semantics.c (finish_call_expr): Here too.
+ * parser.c (cp_parser_omp_for_loop): Remember the location of the
+ increment expression.
+
+ * pt.c (resolve_overloaded_unification): Use coerce_template_parms
+ instead of get_bindings.
+ (resolve_nondeduced_context): Likewise.
+
+ * pt.c (register_specialization): Correct argument to
+ check_specialization_namespace.
+ (determine_specialization): Don't consider members of
+ unspecialized types.
+
+2012-08-23 Jason Merrill <jason@redhat.com>
+
+ * decl.c (compute_array_index_type): Use type_dependent_expression_p.
+
+2012-08-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/20420
+ * name-lookup.c (supplement_binding_1): Handle specially enums
+ only in class templates.
+ (validate_nonmember_using_decl): Enforce 7.3.3/10 about duplicate
+ using declarations at function scope.
+
+2012-08-21 Richard Guenther <rguenther@suse.de>
+
+ * cp-tree.h (TREE_INDIRECT_USING): Use TREE_LANG_FLAG_0 accessor.
+ (ATTR_IS_DEPENDENT): Likewise.
+ (ARGUMENT_PACK_INCOMPLETE_P): Use TREE_ADDRESSABLE instead of
+ TREE_LANG_FLAG_0 on TREE_VECs.
+
+2012-08-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/10416
+ * decl.c (poplevel): Check TYPE_HAS_NONTRIVIAL_DESTRUCTOR for
+ Wunused_variable too.
+
+2012-08-20 Diego Novillo <dnovillo@google.com>
+
+ * decl.c (poplevel): Start TV_NAME_LOOKUP conditionally.
+
+2012-08-20 Richard Guenther <rguenther@suse.de>
+
+ * name-lookup.c (store_binding_p): New predicate, split out from ...
+ (store_binding): ... here. Always store binding and require
+ target vector with enough space.
+ (store_bindings): Collect to store bindings and reserve space
+ for them, then store them.
+ (store_class_bindings): Likewise.
+
+2012-08-19 Mikael Morin <mikael@gcc.gnu.org>
+
+ * Make-lang.in: Fix typo.
+
+2012-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-tree.def (SIZEOF_EXPR): Move to c-common.def.
+
+2012-08-14 Diego Novillo <dnovillo@google.com>
+
+ Merge from cxx-conversion branch. Re-write VEC in C++.
+
+ * call.c (add_function_candidate): Remove const qualifier
+ from call to VEC_index.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * error.c (dump_expr): Handle anonymous SSA names.
+
+2012-08-07 Steven Bosscher <steven@gcc.gnu.org>
+
+ * error.c (print_instantiation_context): Pretty-print a newline before
+ diagnostic_flush_buffer.
+ * cxx-pretty-print.c (pp_cxx_function_definition): Use
+ pp_newline_and_flush instead of separate pp_newline and pp_flush.
+
+2012-08-06 Dodji Seketeli <dodji@redhat.com>
+
+ Avoid crashing on erroneous static_assert usage
+ * semantics.c (finish_static_assert): Don't crash on erroneous
+ message or condition.
+
+2012-08-06 Marc Glisse <marc.glisse@inria.fr>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/54165
+ * typeck.c (build_static_cast_1): Move the conversion to void case
+ before the perform_direct_initialization_if_possible call.
+
+2012-08-03 Marc Glisse <marc.glisse@inria.fr>
+
+ * pt.c (tsubst_copy_and_build): Handle VECTOR_TYPE like scalars.
+ * cp-tree.h (scalarish_type_p): Declare.
+ * tree.c (scalarish_type_p): Make non-static.
+
+2012-08-02 Jason Merrill <jason@redhat.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51213 (again)
+ * pt.c (type_unification_real): Call push_deferring_access_checks /
+ pop_deferring_access_checks around the substitution of default
+ template args.
+ (instantiate_template_1): When the specialization returned by
+ retrieve_specialization has FNDECL_HAS_ACCESS_ERRORS set and we
+ are in a SFINAE context, simply return error_mark_node.
+ * cp-tree.h (FNDECL_RECHECK_ACCESS_P): Rename FNDECL_HAS_ACCESS_ERRORS.
+
+2012-07-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * pt.c (check_default_tmpl_args): Change is_primary and is_partial
+ parameters to bool type, adjust.
+ (push_template_decl_real): Tidy.
+ * parser.c (cp_parser_init_declarator): Adjust.
+ * decl.c (redeclaration_error_message): Likewise.
+ * cp-tree.h (check_default_tmpl_args): Update prototype.
+
+2012-07-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/53624
+ * pt.c (check_default_tmpl_args): Don't check local types.
+
+2012-07-25 Sandra Loosemore <sandra@codesourcery.com>
+ Paul Brook <paul@codesourcery.com>
+
+ PR target/53633
+ * decl.c (finish_function): Check targetm.warn_func_return.
+
+2012-07-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/54086
+ * decl.c (grokdeclarator): Allow const and constexpr together.
+
+ PR c++/54020
+ * semantics.c (potential_constant_expression_1) [COND_EXPR]: Call
+ maybe_constant_value.
+
+ * cp-tree.h (tsubst_flags): Remove tf_no_access_control.
+ * call.c (standard_conversion): Don't set it.
+ * class.c (resolve_address_of_overloaded_function): Don't check it.
+ * decl.c (check_default_argument): Call
+ perform_implicit_conversion_flags.
+
+ * pt.c (print_candidates_1): Use inform instead of error.
+
+2012-07-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * pt.c (convert_template_argument, tsubst): Simplify fourth argument
+ to make_typename_type (complain & tf_error -> complain).
+
+2012-07-24 Steven Bosscher <steven@gcc.gnu.org>
+
+ * class.c (n_vtables, n_vtable_entries, n_vtable_searches,
+ n_vtable_elems, n_convert_harshness, n_compute_conversion_costs,
+ n_inner_fields_searched): Always define.
+ (build_primary_vtable): Convert #ifdef GATHER_STATISTICS to if-code.
+ (print_class_statistics): Convert #ifdef GATHER_STATISTICS to if-code.
+ * tree.c (depth_reached): Always define global.
+ (cxx_print_statistics): Convert #ifdef GATHER_STATISTICS to if-code.
+ * pt.c (depth_reached): Always define.
+ (push_tinst_level): Convert #ifdef GATHER_STATISTICS to if-code.
+ * search.c (n_fields_searched, n_calls_lookup_field,
+ n_calls_lookup_field_1, n_calls_lookup_fnfields,
+ n_calls_lookup_fnfields_1, n_calls_get_base_type,
+ n_outer_fields_searched, n_contexts_saved): Always define.
+ (lookup_field_1): Convert #ifdef GATHER_STATISTICS to if-code.
+ (lookup_member): Likewise.
+ (lookup_fnfields_idx_nolazy): Likewise.
+ (print_search_statistics): Likewise.
+ (reinit_search_statistics): Unconditionally re-set counters.
+ * lex.c (retrofit_lang_decl): Convert #ifdef GATHER_STATISTICS
+ to if-code.
+ (cxx_dup_lang_specific_decl): Likewise.
+ (copy_lang_type): Likewise.
+ (cxx_make_type): Likewise.
+
+2012-07-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/54038
+ * tree.c (build_cplus_array_type): Use build_cplus_array_type to build
+ canonical array type rather than mess with its TYPE_*_VARIANT.
+
+2012-07-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/54026
+ * typeck.c (cp_apply_type_quals_to_decl): Check COMPLETE_TYPE_P.
+
+ PR c++/54021
+ * call.c (build_cxx_call): Set optimize when folding
+ __builtin_constant_p in a constexpr function.
+
+2012-07-18 Jason Merrill <jason@redhat.com>
+
+ * pt.c (instantiate_decl): Don't recheck substitutions.
+
+2012-07-18 Paolo Carlini <paolo.carlini@oracle.com>
+ Jason Merrill <jason@redhat.com>
+
+ DR 1170
+ PR c++/51213
+ * semantics.c (perform_access_checks): Add complain parm, return bool.
+ (perform_deferred_access_checks): Likewise.
+ (perform_or_defer_access_check): Likewise.
+ (speculative_access_check): Remove.
+ * call.c (enforce_access): Add complain parm, return bool.
+ * decl.c, friend.c, class.c, init.c, parser.c: Adjust callers.
+ * search.c: Adjust callers.
+ * cp-tree.h (TINFO_RECHECK_ACCESS_P): New macro.
+ (FNDECL_RECHECK_ACCESS_P): New macro.
+ * method.c (synthesized_method_walk): Stop deferring access checks.
+ * pt.c (recheck_decl_substitution): New.
+ (instantiate_template_1): Set and check FNDECL_RECHECK_ACCESS_P.
+
+2012-07-18 Jason Merrill <jason@redhat.com>
+
+ * method.c (process_subob_fn): Make sure no_implicit_p is non-null
+ before trying to store through it.
+
+2012-07-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/53995
+ * decl.c (finish_enum_value_list): Only call
+ insert_late_enum_def_into_classtype_sorted_fields in class scope.
+
+ PR c++/53989
+ * tree.c (build_cplus_array_type): Also add TYPE_CANONICAL
+ to the list of variants.
+
+ * decl.c (xref_basetypes): Complain about incomplete template base.
+ * class.c (finish_struct): Adjust variants in templates, too.
+
+ PR c++/53549
+ * parser.c (cp_parser_class_head): Call xref_basetypes here.
+ (cp_parser_class_specifier_1): Not here.
+ * pt.c (tsubst_decl) [USING_DECL]: Check uses_template_parms
+ as well as DECL_DEPENDENT_P.
+
+2012-07-16 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (struct deferred_access_check): Add location.
+ * semantics.c (perform_access_checks): Use it.
+ (perform_or_defer_access_check): Store it.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * dump.c (dump_stmt): Moved here from c-dump.c.
+ * optimize.c: Include dumpfile.h instead of tree-dump.h.
+ * class.c: Likewise.
+ * decl2.c: Likewise.
+ * Make-lang.in: Fix dependencies.
+
+2012-07-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/53953
+ * method.c (synthesized_method_walk): Initialize no_implicit_p sooner.
+
+2012-07-12 Jason Merrill <jason@redhat.com>
+
+ * pt.c (instantiate_decl): Check typedefs access here.
+ (instantiate_template_1): Not here.
+
+ * pt.c (deduction_tsubst_fntype): Just suppress access checking.
+ (instantiate_template_1): Set DECL_TI_TEMPLATE before access checking.
+ (push_deduction_access_scope, pop_deduction_access_scope): Remove.
+
+2012-07-11 Jason Merrill <jason@redhat.com>
+
+ DR 1402
+ * method.c (synthesized_method_walk): Replace uses of msg with diag.
+ Correct handling of virtual bases with move operations.
+ (process_subob_fn, walk_field_subobs): Replace uses of msg with diag.
+
+2012-07-11 Steven Bosscher <steven@gcc.gnu.org>
+
+ * method.c: Do not include tree-pass.h.
+
+2012-07-10 Jason Merrill <jason@redhat.com>
+
+ DR 1402
+ PR c++/53733
+ * cp-tree.h (FNDECL_SUPPRESS_IMPLICIT_DECL): New.
+ (struct lang_decl_fn): Add suppress_implicit_decl field.
+ * method.c (implicitly_declare_fn): Check it.
+ (process_subob_fn): Add no_implicit_p parm.
+ (walk_field_subobs, synthesized_method_walk): Likewise.
+ (maybe_explain_implicit_delete): Adjust.
+ (explain_implicit_non_constexpr): Adjust.
+
+ * method.c (synthesized_method_walk): Avoid changing
+ EH spec based on cleanups in other places, too.
+
+2012-07-09 Sterling Augustine <saugustine@google.com>
+
+ * error.c (lang_decl_name): Use TFF_UNQUALIFIED_NAME flag.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * decl.c (cp_finish_decl): Add FIXME at add_local_decl call site.
+
+2012-07-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/53862
+ * pt.c (tsubst_arg_types): Add "end" parameter.
+ (check_undeduced_parms): Use it.
+
+ * cp-tree.h (DECL_DECLARES_TYPE_P): Check DECL_TYPE_TEMPLATE_P.
+
+ PR c++/53858
+ * name-lookup.c (ambiguous_decl): Use DECL_TYPE_TEMPLATE_P.
+
+2012-07-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/53039
+ * pt.c (arg_from_parm_pack_p): Go back to using same_type_p or
+ cp_tree_equal.
+
+ * cp-tree.h (TEMPLATE_PARM_NUM_SIBLINGS): Remove.
+ (struct template_parm_index_s): Remove num_siblings.
+ * pt.c (fixup_template_parms, fixup_template_parm_index): Remove.
+ (fixup_template_type_parm_type): Remove.
+ (build_template_parm_index): Remove num_siblings parm.
+ (process_template_parm): Likewise.
+ * parser.c (cp_parser_template_parameter_list): Adjust.
+ * tree.c (cp_tree_equal): Don't compare num_siblings.
+ * typeck.c (comp_template_parms_position): Likewise.
+
+ PR c++/50852
+ PR c++/53039
+ * tree.c (strip_typedefs_expr): New.
+ * cp-tree.h: Declare it.
+ * pt.c (convert_template_argument, unify): Use it.
+ * parser.c (cp_parser_template_declaration_after_export): Don't call
+ fixup_template_parms.
+
+2012-07-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/53848
+ PR c++/53524
+ * decl.c (build_enumerator): Don't use build_lang_decl_loc.
+
+2012-07-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/53812
+ * semantics.c (finish_goto_stmt): Surround computed goto argument
+ with CLEANUP_POINT_EXPR if needed.
+
+2012-07-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/53619
+ * pt.c (in_template_function): New.
+ * cp-tree.h: Declare it.
+ * class.c (build_base_path, resolves_to_fixed_type_p): Use it.
+
+ PR c++/53783
+ * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Use tsubst
+ for LAMBDA_EXPR_EXTRA_SCOPE.
+
+ PR c++/53788
+ * pt.c (build_non_dependent_expr): Don't wrap a dummy object.
+
+ PR c++/53816
+ * class.c (resolves_to_fixed_type_p): Check uses_template_parms
+ (current_function_decl) instead of processing_template_decl.
+
+ PR c++/53821
+ * semantics.c (maybe_add_lambda_conv_op): Don't set
+ DECL_INTERFACE_KNOWN.
+
+ PR c++/53524
+ * call.c (build_conditional_expr_1): Don't warn about comparison of
+ two enumerators before their enumeration is complete.
+ (build_new_op_1): Call decay_conversion before warn_logical_operator.
+ * decl.c (build_enumerator): Set DECL_CONTEXT of an enumerator to
+ its enumeration.
+ * decl2.c (mark_used): Call used_types_insert for enums.
+ * semantics.c (finish_id_expression): Don't decay CONST_DECL.
+ (finish_member_declaration): Don't change DECL_CONTEXT of enumerators.
+ * class.c (check_field_decls): Don't change DECL_CONTEXT of enums.
+ * typeck.c (convert_for_assignment): Don't decay CONST_DECL.
+ (build_class_member_access_expr): Look through unscoped enums.
+ * search.c (context_for_name_lookup): Look through unscoped enums.
+ * pt.c (tsubst_copy_and_build): Don't decay CONST_DECL.
+ (tsubst_copy): Use DECL_CONTEXT to find the enumeration.
+ * tree.c (decl_linkage): Likewise.
+ * cvt.c (ocp_convert): Check decayed expr for enum range warning.
+
2012-06-29 Steven Bosscher <steven@gcc.gnu.org>
* Make-lang.in: Remove tree-mudflap.o from CXX_AND_OBJCXX_OBJS.
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index f09ff36a743..6233f06c3f9 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -279,7 +279,7 @@ cp/decl.o: cp/decl.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) cp/decl.h \
c-family/c-objc.h
cp/decl2.o: cp/decl2.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) cp/decl.h \
toplev.h $(C_COMMON_H) gt-cp-decl2.h $(CGRAPH_H) \
- $(C_PRAGMA_H) $(TREE_DUMP_H) intl.h $(TARGET_H) $(GIMPLE_H) pointer-set.h \
+ $(C_PRAGMA_H) dumpfile.h intl.h $(TARGET_H) $(GIMPLE_H) pointer-set.h \
$(SPLAY_TREE_H) c-family/c-ada-spec.h \
c-family/c-objc.h
cp/cp-objcp-common.o : cp/cp-objcp-common.c $(CONFIG_H) $(SYSTEM_H) \
@@ -292,7 +292,7 @@ cp/typeck.o: cp/typeck.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) \
toplev.h $(DIAGNOSTIC_H) convert.h $(C_COMMON_H) $(TARGET_H) \
c-family/c-objc.h
cp/class.o: cp/class.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) toplev.h \
- $(TARGET_H) convert.h $(CGRAPH_H) $(TREE_DUMP_H) gt-cp-class.h \
+ $(TARGET_H) convert.h $(CGRAPH_H) dumpfile.h gt-cp-class.h \
$(SPLAY_TREE_H) pointer-set.h
cp/call.o: cp/call.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) toplev.h \
$(DIAGNOSTIC_CORE_H) intl.h gt-cp-call.h convert.h $(TARGET_H) langhooks.h \
@@ -331,12 +331,13 @@ cp/semantics.o: cp/semantics.c $(CXX_TREE_H) $(TM_H) toplev.h \
cp/dump.o: cp/dump.c $(CXX_TREE_H) $(TM_H) $(TREE_DUMP_H)
cp/optimize.o: cp/optimize.c $(CXX_TREE_H) $(TM_H) \
input.h $(PARAMS_H) debug.h $(TREE_INLINE_H) $(GIMPLE_H) \
- $(TARGET_H) tree-iterator.h $(CGRAPH_H) $(DIAGNOSTIC_CORE_H)
+ $(TARGET_H) tree-iterator.h $(CGRAPH_H) $(DIAGNOSTIC_CORE_H) \
+ dumpfile.h
cp/mangle.o: cp/mangle.c $(CXX_TREE_H) $(TM_H) $(REAL_H) \
gt-cp-mangle.h $(TARGET_H) $(TM_P_H) $(CGRAPH_H)
cp/parser.o: cp/parser.c $(CXX_TREE_H) $(TM_H) $(DIAGNOSTIC_CORE_H) \
gt-cp-parser.h $(TARGET_H) $(PLUGIN_H) intl.h \
- c-family/c-objc.h tree-pretty-print.h $(CXX_PARSER_H) $(TIMEVAR.H)
+ c-family/c-objc.h tree-pretty-print.h $(CXX_PARSER_H) $(TIMEVAR_H)
cp/cp-gimplify.o: cp/cp-gimplify.c $(CXX_TREE_H) $(C_COMMON_H) \
$(TM_H) coretypes.h pointer-set.h tree-iterator.h $(SPLAY_TREE_H)
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 09965b321cc..3915738e516 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -451,7 +451,6 @@ enum rejection_reason_code {
rr_arg_conversion,
rr_bad_arg_conversion,
rr_template_unification,
- rr_template_instantiation,
rr_invalid_copy
};
@@ -485,7 +484,7 @@ struct rejection_reason {
struct {
tree tmpl;
tree explicit_targs;
- tree targs;
+ int num_targs;
const tree *args;
unsigned int nargs;
tree return_type;
@@ -688,7 +687,7 @@ template_unification_rejection (tree tmpl, tree explicit_targs, tree targs,
struct rejection_reason *r = alloc_rejection (rr_template_unification);
r->u.template_unification.tmpl = tmpl;
r->u.template_unification.explicit_targs = explicit_targs;
- r->u.template_unification.targs = targs;
+ r->u.template_unification.num_targs = TREE_VEC_LENGTH (targs);
/* Copy args to our own storage. */
memcpy (args1, args, args_n_bytes);
r->u.template_unification.args = args1;
@@ -706,15 +705,6 @@ template_unification_error_rejection (void)
}
static struct rejection_reason *
-template_instantiation_rejection (tree tmpl, tree targs)
-{
- struct rejection_reason *r = alloc_rejection (rr_template_instantiation);
- r->u.template_instantiation.tmpl = tmpl;
- r->u.template_instantiation.targs = targs;
- return r;
-}
-
-static struct rejection_reason *
invalid_copy_with_fn_template_rejection (void)
{
struct rejection_reason *r = alloc_rejection (rr_invalid_copy);
@@ -1095,8 +1085,6 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
&& expr && type_unknown_p (expr))
{
tsubst_flags_t tflags = tf_conv;
- if (!(flags & LOOKUP_PROTECT))
- tflags |= tf_no_access_control;
expr = instantiate_type (to, expr, tflags);
if (expr == error_mark_node)
return NULL;
@@ -1926,7 +1914,8 @@ add_function_candidate (struct z_candidate **candidates,
for (i = 0; i < len; ++i)
{
- tree arg, argtype, to_type;
+ tree argtype, to_type;
+ tree arg;
conversion *t;
int is_this;
@@ -1936,8 +1925,9 @@ add_function_candidate (struct z_candidate **candidates,
if (i == 0 && first_arg != NULL_TREE)
arg = first_arg;
else
- arg = VEC_index (tree, args,
- i + skip - (first_arg != NULL_TREE ? 1 : 0));
+ arg = CONST_CAST_TREE (
+ VEC_index (tree, args,
+ i + skip - (first_arg != NULL_TREE ? 1 : 0)));
argtype = lvalue_type (arg);
is_this = (i == 0 && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
@@ -2873,7 +2863,6 @@ add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
unsigned int ia, ix;
tree arg;
struct z_candidate *cand;
- int i;
tree fn;
struct rejection_reason *reason = NULL;
int errs;
@@ -2920,12 +2909,12 @@ add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
gcc_assert (ia == nargs_without_in_chrg);
errs = errorcount+sorrycount;
- i = fn_type_unification (tmpl, explicit_targs, targs,
- args_without_in_chrg,
- nargs_without_in_chrg,
- return_type, strict, flags, false);
+ fn = fn_type_unification (tmpl, explicit_targs, targs,
+ args_without_in_chrg,
+ nargs_without_in_chrg,
+ return_type, strict, flags, false);
- if (i != 0)
+ if (fn == error_mark_node)
{
/* Don't repeat unification later if it already resulted in errors. */
if (errorcount+sorrycount == errs)
@@ -2938,13 +2927,6 @@ add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
goto fail;
}
- fn = instantiate_template (tmpl, targs, tf_none);
- if (fn == error_mark_node)
- {
- reason = template_instantiation_rejection (tmpl, targs);
- goto fail;
- }
-
/* In [class.copy]:
A member function template is never instantiated to perform the
@@ -3239,7 +3221,8 @@ print_z_candidate (location_t loc, const char *msgstr,
inform (cloc, " template argument deduction/substitution failed:");
fn_type_unification (r->u.template_unification.tmpl,
r->u.template_unification.explicit_targs,
- r->u.template_unification.targs,
+ (make_tree_vec
+ (r->u.template_unification.num_targs)),
r->u.template_unification.args,
r->u.template_unification.nargs,
r->u.template_unification.return_type,
@@ -3247,12 +3230,6 @@ print_z_candidate (location_t loc, const char *msgstr,
r->u.template_unification.flags,
true);
break;
- case rr_template_instantiation:
- /* Re-run template instantiation with diagnostics. */
- instantiate_template (r->u.template_instantiation.tmpl,
- r->u.template_instantiation.targs,
- tf_warning_or_error);
- break;
case rr_invalid_copy:
inform (cloc,
" a constructor taking a single argument of its own "
@@ -3943,15 +3920,19 @@ build_new_function_call (tree fn, VEC(tree,gc) **args, bool koenig_p,
total number of bytes required by the allocation, and is updated if
that is changed here. *COOKIE_SIZE is non-NULL if a cookie should
be used. If this function determines that no cookie should be
- used, after all, *COOKIE_SIZE is set to NULL_TREE. If FN is
- non-NULL, it will be set, upon return, to the allocation function
- called. */
+ used, after all, *COOKIE_SIZE is set to NULL_TREE. If SIZE_CHECK
+ is not NULL_TREE, it is evaluated before calculating the final
+ array size, and if it fails, the array size is replaced with
+ (size_t)-1 (usually triggering a std::bad_alloc exception). If FN
+ is non-NULL, it will be set, upon return, to the allocation
+ function called. */
tree
build_operator_new_call (tree fnname, VEC(tree,gc) **args,
- tree *size, tree *cookie_size,
+ tree *size, tree *cookie_size, tree size_check,
tree *fn, tsubst_flags_t complain)
{
+ tree original_size = *size;
tree fns;
struct z_candidate *candidates;
struct z_candidate *cand;
@@ -3959,6 +3940,10 @@ build_operator_new_call (tree fnname, VEC(tree,gc) **args,
if (fn)
*fn = NULL_TREE;
+ /* Set to (size_t)-1 if the size check fails. */
+ if (size_check != NULL_TREE)
+ *size = fold_build3 (COND_EXPR, sizetype, size_check,
+ original_size, TYPE_MAX_VALUE (sizetype));
VEC_safe_insert (tree, gc, *args, 0, *size);
*args = resolve_args (*args, complain);
if (*args == NULL)
@@ -4022,7 +4007,11 @@ build_operator_new_call (tree fnname, VEC(tree,gc) **args,
if (use_cookie)
{
/* Update the total size. */
- *size = size_binop (PLUS_EXPR, *size, *cookie_size);
+ *size = size_binop (PLUS_EXPR, original_size, *cookie_size);
+ /* Set to (size_t)-1 if the size check fails. */
+ gcc_assert (size_check != NULL_TREE);
+ *size = fold_build3 (COND_EXPR, sizetype, size_check,
+ *size, TYPE_MAX_VALUE (sizetype));
/* Update the argument list to reflect the adjusted size. */
VEC_replace (tree, *args, 0, *size);
}
@@ -4365,6 +4354,7 @@ build_conditional_expr_1 (tree arg1, tree arg2, tree arg3,
struct z_candidate *candidates = 0;
struct z_candidate *cand;
void *p;
+ tree orig_arg2, orig_arg3;
/* As a G++ extension, the second argument to the conditional can be
omitted. (So that `a ? : c' is roughly equivalent to `a ? a :
@@ -4404,6 +4394,8 @@ build_conditional_expr_1 (tree arg1, tree arg2, tree arg3,
array-to-pointer (_conv.array_), and function-to-pointer
(_conv.func_) standard conversions are performed on the second
and third operands. */
+ orig_arg2 = arg2;
+ orig_arg3 = arg3;
arg2_type = unlowered_expr_type (arg2);
arg3_type = unlowered_expr_type (arg3);
if (VOID_TYPE_P (arg2_type) || VOID_TYPE_P (arg3_type))
@@ -4701,7 +4693,12 @@ build_conditional_expr_1 (tree arg1, tree arg2, tree arg3,
if (TREE_CODE (arg2_type) == ENUMERAL_TYPE
&& TREE_CODE (arg3_type) == ENUMERAL_TYPE)
{
- if (complain & tf_warning)
+ if (TREE_CODE (orig_arg2) == CONST_DECL
+ && TREE_CODE (orig_arg3) == CONST_DECL
+ && DECL_CONTEXT (orig_arg2) == DECL_CONTEXT (orig_arg3))
+ /* Two enumerators from the same enumeration can have different
+ types when the enumeration is still being defined. */;
+ else if (complain & tf_warning)
warning (OPT_Wenum_compare,
"enumeral mismatch in conditional expression: %qT vs %qT",
arg2_type, arg3_type);
@@ -5221,16 +5218,20 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1,
if (arg2)
{
+ conv = cand->convs[1];
+ if (conv->kind == ck_ref_bind)
+ conv = next_conversion (conv);
+ else
+ arg2 = decay_conversion (arg2, complain);
+
/* We need to call warn_logical_operator before
- converting arg2 to a boolean_type. */
+ converting arg2 to a boolean_type, but after
+ decaying an enumerator to its value. */
if (complain & tf_warning)
warn_logical_operator (loc, code, boolean_type_node,
code_orig_arg1, arg1,
code_orig_arg2, arg2);
- conv = cand->convs[1];
- if (conv->kind == ck_ref_bind)
- conv = next_conversion (conv);
arg2 = convert_like (conv, arg2, complain);
}
if (arg3)
@@ -5503,7 +5504,8 @@ build_op_delete_call (enum tree_code code, tree addr, tree size,
/* If the FN is a member function, make sure that it is
accessible. */
if (BASELINK_P (fns))
- perform_or_defer_access_check (BASELINK_BINFO (fns), fn, fn);
+ perform_or_defer_access_check (BASELINK_BINFO (fns), fn, fn,
+ complain);
/* Core issue 901: It's ok to new a type with deleted delete. */
if (DECL_DELETED_FN (fn) && alloc_fn)
@@ -5561,19 +5563,23 @@ build_op_delete_call (enum tree_code code, tree addr, tree size,
the declaration to use in the error diagnostic. */
bool
-enforce_access (tree basetype_path, tree decl, tree diag_decl)
+enforce_access (tree basetype_path, tree decl, tree diag_decl,
+ tsubst_flags_t complain)
{
gcc_assert (TREE_CODE (basetype_path) == TREE_BINFO);
if (!accessible_p (basetype_path, decl, true))
{
- if (TREE_PRIVATE (decl))
- error ("%q+#D is private", diag_decl);
- else if (TREE_PROTECTED (decl))
- error ("%q+#D is protected", diag_decl);
- else
- error ("%q+#D is inaccessible", diag_decl);
- error ("within this context");
+ if (complain & tf_error)
+ {
+ if (TREE_PRIVATE (decl))
+ error ("%q+#D is private", diag_decl);
+ else if (TREE_PROTECTED (decl))
+ error ("%q+#D is protected", diag_decl);
+ else
+ error ("%q+#D is inaccessible", diag_decl);
+ error ("within this context");
+ }
return false;
}
@@ -6498,14 +6504,9 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
access_fn = DECL_TI_TEMPLATE (fn);
else
access_fn = fn;
- if (flags & LOOKUP_SPECULATIVE)
- {
- if (!speculative_access_check (cand->access_path, access_fn, fn,
- complain & tf_error))
- return error_mark_node;
- }
- else
- perform_or_defer_access_check (cand->access_path, access_fn, fn);
+ if (!perform_or_defer_access_check (cand->access_path, access_fn,
+ fn, complain))
+ return error_mark_node;
}
/* If we're checking for implicit delete, don't bother with argument
@@ -6888,6 +6889,7 @@ tree
build_cxx_call (tree fn, int nargs, tree *argarray)
{
tree fndecl;
+ int optimize_sav;
/* Remember roughly where this call is. */
location_t loc = EXPR_LOC_OR_HERE (fn);
@@ -6904,8 +6906,15 @@ build_cxx_call (tree fn, int nargs, tree *argarray)
return error_mark_node;
/* Some built-in function calls will be evaluated at compile-time in
- fold (). */
+ fold (). Set optimize to 1 when folding __builtin_constant_p inside
+ a constexpr function so that fold_builtin_1 doesn't fold it to 0. */
+ optimize_sav = optimize;
+ if (!optimize && fndecl && DECL_IS_BUILTIN_CONSTANT_P (fndecl)
+ && current_function_decl
+ && DECL_DECLARED_CONSTEXPR_P (current_function_decl))
+ optimize = 1;
fn = fold_if_not_in_template (fn);
+ optimize = optimize_sav;
if (VOID_TYPE_P (TREE_TYPE (fn)))
return fn;
@@ -7505,6 +7514,7 @@ build_new_method_call_1 (tree instance, tree fns, VEC(tree,gc) **args,
build_min (COMPONENT_REF, TREE_TYPE (CALL_EXPR_FN (call)),
orig_instance, orig_fns, NULL_TREE),
orig_args));
+ SET_EXPR_LOCATION (call, input_location);
call = convert_from_reference (call);
if (cast_to_void)
call = build_nop (void_type_node, call);
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 6307e847a40..3b1906ae64b 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -35,7 +35,7 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "convert.h"
#include "cgraph.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "splay-tree.h"
#include "pointer-set.h"
@@ -212,7 +212,6 @@ static tree get_vcall_index (tree, tree);
/* Variables shared between class.c and call.c. */
-#ifdef GATHER_STATISTICS
int n_vtables = 0;
int n_vtable_entries = 0;
int n_vtable_searches = 0;
@@ -220,7 +219,6 @@ int n_vtable_elems = 0;
int n_convert_harshness = 0;
int n_compute_conversion_costs = 0;
int n_inner_fields_searched = 0;
-#endif
/* Convert to or from a base subobject. EXPR is an expression of type
`A' or `A*', an expression of type `B' or `B*' is returned. To
@@ -325,8 +323,7 @@ build_base_path (enum tree_code code,
up properly yet, and the value doesn't matter there either; we're just
interested in the result of overload resolution. */
if (cp_unevaluated_operand != 0
- || (current_function_decl
- && uses_template_parms (current_function_decl)))
+ || in_template_function ())
{
expr = build_nop (ptr_target_type, expr);
if (!want_pointer)
@@ -837,10 +834,11 @@ build_primary_vtable (tree binfo, tree type)
virtuals = NULL_TREE;
}
-#ifdef GATHER_STATISTICS
- n_vtables += 1;
- n_vtable_elems += list_length (virtuals);
-#endif
+ if (GATHER_STATISTICS)
+ {
+ n_vtables += 1;
+ n_vtable_elems += list_length (virtuals);
+ }
/* Initialize the association list for this type, based
on our first approximation. */
@@ -1190,7 +1188,8 @@ alter_access (tree t, tree fdecl, tree access)
}
else
{
- perform_or_defer_access_check (TYPE_BINFO (t), fdecl, fdecl);
+ perform_or_defer_access_check (TYPE_BINFO (t), fdecl, fdecl,
+ tf_warning_or_error);
DECL_ACCESS (fdecl) = tree_cons (t, access, DECL_ACCESS (fdecl));
return 1;
}
@@ -3114,7 +3113,8 @@ check_field_decls (tree t, tree *access_decls,
/* If we've gotten this far, it's a data member, possibly static,
or an enumerator. */
- DECL_CONTEXT (x) = t;
+ if (TREE_CODE (x) != CONST_DECL)
+ DECL_CONTEXT (x) = t;
/* When this goes into scope, it will be a non-local reference. */
DECL_NONLOCAL (x) = 1;
@@ -6325,6 +6325,15 @@ finish_struct (tree t, tree attributes)
/* Remember current #pragma pack value. */
TYPE_PRECISION (t) = maximum_field_alignment;
+
+ /* Fix up any variants we've already built. */
+ for (x = TYPE_NEXT_VARIANT (t); x; x = TYPE_NEXT_VARIANT (x))
+ {
+ TYPE_SIZE (x) = TYPE_SIZE (t);
+ TYPE_SIZE_UNIT (x) = TYPE_SIZE_UNIT (t);
+ TYPE_FIELDS (x) = TYPE_FIELDS (t);
+ TYPE_METHODS (x) = TYPE_METHODS (t);
+ }
}
else
finish_struct_1 (t);
@@ -6520,7 +6529,9 @@ resolves_to_fixed_type_p (tree instance, int* nonnull)
int cdtorp = 0;
tree fixed;
- if (processing_template_decl)
+ /* processing_template_decl can be false in a template if we're in
+ fold_non_dependent_expr, but we still want to suppress this check. */
+ if (in_template_function ())
{
/* In a template we only care about the type of the result. */
if (nonnull)
@@ -6867,9 +6878,8 @@ pop_lang_context (void)
If OVERLOAD is for one or more member functions, then ACCESS_PATH
is the base path used to reference those member functions. If
- TF_NO_ACCESS_CONTROL is not set in FLAGS, and the address is
- resolved to a member function, access checks will be performed and
- errors issued if appropriate. */
+ the address is resolved to a member function, access checks will be
+ performed and errors issued if appropriate. */
static tree
resolve_address_of_overloaded_function (tree target_type,
@@ -7023,14 +7033,10 @@ resolve_address_of_overloaded_function (tree target_type,
/* Try to do argument deduction. */
targs = make_tree_vec (DECL_NTPARMS (fn));
- if (fn_type_unification (fn, explicit_targs, targs, args, nargs,
- target_ret_type, DEDUCE_EXACT,
- LOOKUP_NORMAL, false))
- /* Argument deduction failed. */
- continue;
-
- /* Instantiate the template. */
- instantiation = instantiate_template (fn, targs, flags);
+ instantiation = fn_type_unification (fn, explicit_targs, targs, args,
+ nargs, target_ret_type,
+ DEDUCE_EXACT, LOOKUP_NORMAL,
+ false);
if (instantiation == error_mark_node)
/* Instantiation failed. */
continue;
@@ -7132,11 +7138,10 @@ resolve_address_of_overloaded_function (tree target_type,
/* We could not check access to member functions when this
expression was originally created since we did not know at that
time to which function the expression referred. */
- if (!(flags & tf_no_access_control)
- && DECL_FUNCTION_MEMBER_P (fn))
+ if (DECL_FUNCTION_MEMBER_P (fn))
{
gcc_assert (access_path);
- perform_or_defer_access_check (access_path, fn, fn);
+ perform_or_defer_access_check (access_path, fn, fn, flags);
}
if (TYPE_PTRFN_P (target_type) || TYPE_PTRMEMFUNC_P (target_type))
@@ -7319,7 +7324,9 @@ get_vfield_name (tree type)
void
print_class_statistics (void)
{
-#ifdef GATHER_STATISTICS
+ if (! GATHER_STATISTICS)
+ return;
+
fprintf (stderr, "convert_harshness = %d\n", n_convert_harshness);
fprintf (stderr, "compute_conversion_costs = %d\n", n_compute_conversion_costs);
if (n_vtables)
@@ -7329,7 +7336,6 @@ print_class_statistics (void)
fprintf (stderr, "vtable entries = %d; vtable elems = %d\n",
n_vtable_entries, n_vtable_elems);
}
-#endif
}
/* Build a dummy reference to ourselves so Derived::Base (and A::A) works,
@@ -8393,12 +8399,12 @@ build_vtbl_initializer (tree binfo,
int new_position = (TARGET_VTABLE_DATA_ENTRY_DISTANCE * ix
+ (TARGET_VTABLE_DATA_ENTRY_DISTANCE - 1));
- VEC_replace (constructor_elt, vid.inits, new_position, e);
+ VEC_replace (constructor_elt, vid.inits, new_position, *e);
for (j = 1; j < TARGET_VTABLE_DATA_ENTRY_DISTANCE; ++j)
{
- constructor_elt *f = VEC_index (constructor_elt, vid.inits,
- new_position - j);
+ constructor_elt *f = &VEC_index (constructor_elt, vid.inits,
+ new_position - j);
f->index = NULL_TREE;
f->value = build1 (NOP_EXPR, vtable_entry_type,
null_pointer_node);
@@ -8419,7 +8425,7 @@ build_vtbl_initializer (tree binfo,
for (ix = VEC_length (constructor_elt, vid.inits) - 1;
VEC_iterate (constructor_elt, vid.inits, ix, e);
ix--, jx++)
- VEC_replace (constructor_elt, *inits, jx, e);
+ VEC_replace (constructor_elt, *inits, jx, *e);
/* Go through all the ordinary virtual functions, building up
initializers. */
diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def
index 83e0b5baab6..b5ed167ca37 100644
--- a/gcc/cp/cp-tree.def
+++ b/gcc/cp/cp-tree.def
@@ -2,7 +2,7 @@
additional tree codes used in the GNU C++ compiler (see tree.def
for the standard codes).
Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998, 2003, 2004, 2005,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2010, 2011
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2010, 2011, 2012
Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
@@ -333,9 +333,6 @@ DEFTREECODE (TAG_DEFN, "tag_defn", tcc_expression, 0)
/* Represents an 'offsetof' expression during template expansion. */
DEFTREECODE (OFFSETOF_EXPR, "offsetof_expr", tcc_expression, 1)
-/* Represents a 'sizeof' expression during template expansion. */
-DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", tcc_expression, 1)
-
/* Represents the -> operator during template expansion. */
DEFTREECODE (ARROW_EXPR, "arrow_expr", tcc_expression, 1)
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index a4b7ae3716d..7ffc929bc97 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -78,6 +78,7 @@ c-common.h, not after.
CONVERT_EXPR_VBASE_PATH (in CONVERT_EXPR)
OVL_ARG_DEPENDENT (in OVERLOAD)
PACK_EXPANSION_LOCAL_P (in *_PACK_EXPANSION)
+ TINFO_RECHECK_ACCESS_P (in TEMPLATE_INFO)
1: IDENTIFIER_VIRTUAL_P (in IDENTIFIER_NODE)
TI_PENDING_TEMPLATE_FLAG.
TEMPLATE_PARMS_FOR_INLINE.
@@ -249,7 +250,6 @@ struct GTY(()) template_parm_index_s {
int index;
int level;
int orig_level;
- int num_siblings;
tree decl;
};
typedef struct template_parm_index_s template_parm_index;
@@ -726,6 +726,14 @@ typedef struct qualified_typedef_usage_s qualified_typedef_usage_t;
DEF_VEC_O (qualified_typedef_usage_t);
DEF_VEC_ALLOC_O (qualified_typedef_usage_t,gc);
+/* Non-zero if this template specialization has access violations that
+ should be rechecked when the function is instantiated outside argument
+ deduction. */
+#define TINFO_HAS_ACCESS_ERRORS(NODE) \
+ (TREE_LANG_FLAG_0 (TEMPLATE_INFO_CHECK (NODE)))
+#define FNDECL_HAS_ACCESS_ERRORS(NODE) \
+ (TINFO_HAS_ACCESS_ERRORS (DECL_TEMPLATE_INFO (NODE)))
+
struct GTY(()) tree_template_info {
struct tree_common common;
VEC(qualified_typedef_usage_t,gc) *typedefs_needing_access_checking;
@@ -1941,7 +1949,7 @@ struct GTY(()) lang_decl_fn {
unsigned thunk_p : 1;
unsigned this_thunk_p : 1;
unsigned hidden_friend_p : 1;
- /* 1 spare bit. */
+ unsigned suppress_implicit_decl : 1;
/* For a non-thunk function decl, this is a tree list of
friendly classes. For a thunk function decl, it is the
@@ -2512,11 +2520,11 @@ struct GTY((variable_size)) lang_decl {
/* In a TREE_LIST concatenating using directives, indicate indirect
directives */
-#define TREE_INDIRECT_USING(NODE) (TREE_LIST_CHECK (NODE)->base.lang_flag_0)
+#define TREE_INDIRECT_USING(NODE) TREE_LANG_FLAG_0 (TREE_LIST_CHECK (NODE))
/* In a TREE_LIST in an attribute list, indicates that the attribute
must be applied at instantiation time. */
-#define ATTR_IS_DEPENDENT(NODE) (TREE_LIST_CHECK (NODE)->base.lang_flag_0)
+#define ATTR_IS_DEPENDENT(NODE) TREE_LANG_FLAG_0 (TREE_LIST_CHECK (NODE))
extern tree decl_shadowed_for_var_lookup (tree);
extern void decl_shadowed_for_var_insert (tree, tree);
@@ -2873,7 +2881,7 @@ extern void decl_shadowed_for_var_insert (tree, tree);
arguments will be placed into the beginning of the argument pack,
but additional arguments might still be deduced. */
#define ARGUMENT_PACK_INCOMPLETE_P(NODE) \
- TREE_LANG_FLAG_0 (ARGUMENT_PACK_ARGS (NODE))
+ TREE_ADDRESSABLE (ARGUMENT_PACK_ARGS (NODE))
/* When ARGUMENT_PACK_INCOMPLETE_P, stores the explicit template
arguments used to fill this pack. */
@@ -3108,6 +3116,12 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter)
#define DECL_HIDDEN_FRIEND_P(NODE) \
(LANG_DECL_FN_CHECK (DECL_COMMON_CHECK (NODE))->hidden_friend_p)
+/* Nonzero if NODE is a FUNCTION_DECL generated by implicitly_declare_fn
+ that we shouldn't actually declare implicitly; it is only used for
+ comparing to an =default declaration. */
+#define FNDECL_SUPPRESS_IMPLICIT_DECL(NODE) \
+ (LANG_DECL_FN_CHECK (DECL_COMMON_CHECK (NODE))->suppress_implicit_decl)
+
/* Nonzero if DECL has been declared threadprivate by
#pragma omp threadprivate. */
#define CP_DECL_THREADPRIVATE_P(DECL) \
@@ -3705,7 +3719,7 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter)
/* Nonzero for a NODE which declares a type. */
#define DECL_DECLARES_TYPE_P(NODE) \
- (TREE_CODE (NODE) == TYPE_DECL || DECL_CLASS_TEMPLATE_P (NODE))
+ (TREE_CODE (NODE) == TYPE_DECL || DECL_TYPE_TEMPLATE_P (NODE))
/* Nonzero if NODE declares a function. */
#define DECL_DECLARES_FUNCTION_P(NODE) \
@@ -4156,8 +4170,6 @@ enum tsubst_flags {
conversion might be permissible,
not actually performing the
conversion. */
- tf_no_access_control = 1 << 7, /* Do not perform access checks, even
- when issuing other errors. */
tf_partial = 1 << 8, /* Doing initial explicit argument
substitution in fn_type_unification. */
/* Convenient substitution flags combinations. */
@@ -4419,9 +4431,7 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, TYPENAME_FLAG };
Used by sythesized_method_walk to determine which functions will
be called to initialize subobjects, in order to determine exception
specification and possible implicit delete.
- This is kind of a hack, but since access control doesn't respect SFINAE
- we can't just use tf_none to avoid access control errors, we need
- another mechanism. Exiting early also avoids problems with trying
+ This is kind of a hack, but exiting early avoids problems with trying
to perform argument conversions when the class isn't complete yet. */
#define LOOKUP_SPECULATIVE (LOOKUP_LIST_ONLY << 1)
/* Used by calls from defaulted functions to limit the overload set to avoid
@@ -4523,9 +4533,6 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, TYPENAME_FLAG };
((template_parm_index*)TEMPLATE_PARM_INDEX_CHECK (NODE))
#define TEMPLATE_PARM_IDX(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->index)
#define TEMPLATE_PARM_LEVEL(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->level)
-/* The Number of sibling parms this template parm has. */
-#define TEMPLATE_PARM_NUM_SIBLINGS(NODE) \
- (TEMPLATE_PARM_INDEX_CAST (NODE)->num_siblings)
#define TEMPLATE_PARM_DESCENDANTS(NODE) (TREE_CHAIN (NODE))
#define TEMPLATE_PARM_ORIG_LEVEL(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->orig_level)
#define TEMPLATE_PARM_DECL(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->decl)
@@ -4879,7 +4886,7 @@ extern tree build_user_type_conversion (tree, tree, int,
extern tree build_new_function_call (tree, VEC(tree,gc) **, bool,
tsubst_flags_t);
extern tree build_operator_new_call (tree, VEC(tree,gc) **, tree *,
- tree *, tree *,
+ tree *, tree, tree *,
tsubst_flags_t);
extern tree build_new_method_call (tree, tree, VEC(tree,gc) **,
tree, int, tree *,
@@ -4899,7 +4906,8 @@ extern bool can_convert_arg (tree, tree, tree, int,
tsubst_flags_t);
extern bool can_convert_arg_bad (tree, tree, tree, int,
tsubst_flags_t);
-extern bool enforce_access (tree, tree, tree);
+extern bool enforce_access (tree, tree, tree,
+ tsubst_flags_t);
extern void push_defarg_context (tree);
extern void pop_defarg_context (void);
extern tree convert_default_arg (tree, tree, tree, int,
@@ -5316,12 +5324,11 @@ extern void append_type_to_template_for_access_check (tree, tree, tree,
extern tree splice_late_return_type (tree, tree);
extern bool is_auto (const_tree);
extern tree process_template_parm (tree, location_t, tree,
- bool, bool, unsigned);
+ bool, bool);
extern tree end_template_parm_list (tree);
-void fixup_template_parms (void);
extern void end_template_decl (void);
extern tree maybe_update_decl_type (tree, tree);
-extern bool check_default_tmpl_args (tree, tree, int, int, int);
+extern bool check_default_tmpl_args (tree, tree, bool, bool, int);
extern tree push_template_decl (tree);
extern tree push_template_decl_real (tree, bool);
extern bool redeclare_class_template (tree, tree);
@@ -5330,9 +5337,10 @@ extern tree lookup_template_class (tree, tree, tree, tree,
extern tree lookup_template_function (tree, tree);
extern int uses_template_parms (tree);
extern int uses_template_parms_level (tree, int);
+extern bool in_template_function (void);
extern tree instantiate_class_template (tree);
extern tree instantiate_template (tree, tree, tsubst_flags_t);
-extern int fn_type_unification (tree, tree, tree,
+extern tree fn_type_unification (tree, tree, tree,
const tree *, unsigned int,
tree, unification_kind_t, int,
bool);
@@ -5482,6 +5490,8 @@ typedef struct GTY(()) deferred_access_check {
tree decl;
/* The declaration that should be used in the error message. */
tree diag_decl;
+ /* The location of this access. */
+ location_t loc;
} deferred_access_check;
DEF_VEC_O(deferred_access_check);
DEF_VEC_ALLOC_O(deferred_access_check,gc);
@@ -5493,10 +5503,11 @@ extern void stop_deferring_access_checks (void);
extern void pop_deferring_access_checks (void);
extern VEC (deferred_access_check,gc)* get_deferred_access_checks (void);
extern void pop_to_parent_deferring_access_checks (void);
-extern void perform_access_checks (VEC (deferred_access_check,gc)*);
-extern void perform_deferred_access_checks (void);
-extern void perform_or_defer_access_check (tree, tree, tree);
-extern bool speculative_access_check (tree, tree, tree, bool);
+extern bool perform_access_checks (VEC (deferred_access_check,gc)*,
+ tsubst_flags_t);
+extern bool perform_deferred_access_checks (tsubst_flags_t);
+extern bool perform_or_defer_access_check (tree, tree, tree,
+ tsubst_flags_t);
extern int stmts_are_full_exprs_p (void);
extern void init_cp_semantics (void);
extern tree do_poplevel (tree);
@@ -5686,11 +5697,13 @@ extern bool layout_pod_type_p (const_tree);
extern bool std_layout_type_p (const_tree);
extern bool trivial_type_p (const_tree);
extern bool trivially_copyable_p (const_tree);
+extern bool scalarish_type_p (const_tree);
extern bool type_has_nontrivial_default_init (const_tree);
extern bool type_has_nontrivial_copy_init (const_tree);
extern bool class_tmpl_impl_spec_p (const_tree);
extern int zero_init_p (const_tree);
extern tree strip_typedefs (tree);
+extern tree strip_typedefs_expr (tree);
extern tree copy_binfo (tree, tree, tree,
tree *, int);
extern int member_p (const_tree);
@@ -5762,10 +5775,10 @@ extern linkage_kind decl_linkage (tree);
extern duration_kind decl_storage_duration (tree);
extern tree cp_walk_subtrees (tree*, int*, walk_tree_fn,
void*, struct pointer_set_t*);
-#define cp_walk_tree(a,b,c,d) \
- walk_tree_1 (a, b, c, d, cp_walk_subtrees)
-#define cp_walk_tree_without_duplicates(a,b,c) \
- walk_tree_without_duplicates_1 (a, b, c, cp_walk_subtrees)
+#define cp_walk_tree(tp,func,data,pset) \
+ walk_tree_1 (tp, func, data, pset, cp_walk_subtrees)
+#define cp_walk_tree_without_duplicates(tp,func,data) \
+ walk_tree_without_duplicates_1 (tp, func, data, cp_walk_subtrees)
extern tree fold_if_not_in_template (tree);
extern tree rvalue (tree);
extern tree convert_bitfield_to_declared_type (tree);
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index 998d4eb345e..9550f1580bb 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -741,8 +741,8 @@ ocp_convert (tree type, tree expr, int convtype, int flags,
values. Otherwise, the resulting enumeration value is
unspecified. */
if ((complain & tf_warning)
- && TREE_CODE (expr) == INTEGER_CST
- && !int_fits_type_p (expr, ENUM_UNDERLYING_TYPE (type)))
+ && TREE_CODE (e) == INTEGER_CST
+ && !int_fits_type_p (e, ENUM_UNDERLYING_TYPE (type)))
warning_at (loc, OPT_Wconversion,
"the result of the conversion is unspecified because "
"%qE is outside the range of type %qT",
diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c
index eef3489e762..03d9149f4cf 100644
--- a/gcc/cp/cxx-pretty-print.c
+++ b/gcc/cp/cxx-pretty-print.c
@@ -1625,11 +1625,8 @@ pp_cxx_function_definition (cxx_pretty_printer *pp, tree t)
if (DECL_SAVED_TREE (t))
pp_cxx_statement (pp, DECL_SAVED_TREE (t));
else
- {
- pp_cxx_semicolon (pp);
- pp_needs_newline (pp) = true;
- }
- pp_flush (pp);
+ pp_cxx_semicolon (pp);
+ pp_newline_and_flush (pp);
pp->enclosing_scope = saved_scope;
}
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index ab560199ced..4b2958c5eee 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -552,7 +552,7 @@ poplevel (int keep, int reverse, int functionbody)
unsigned ix;
cp_label_binding *label_bind;
- timevar_start (TV_NAME_LOOKUP);
+ bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
restart:
block = NULL_TREE;
@@ -621,16 +621,16 @@ poplevel (int keep, int reverse, int functionbody)
if (TREE_CODE (decl) == VAR_DECL
&& (! TREE_USED (decl) || !DECL_READ_P (decl))
&& ! DECL_IN_SYSTEM_HEADER (decl)
- && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl))
+ && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl)
+ && TREE_TYPE (decl) != error_mark_node
+ && (!CLASS_TYPE_P (TREE_TYPE (decl))
+ || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
{
if (! TREE_USED (decl))
warning (OPT_Wunused_variable, "unused variable %q+D", decl);
else if (DECL_CONTEXT (decl) == current_function_decl
- && TREE_TYPE (decl) != error_mark_node
&& TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE
- && errorcount == unused_but_set_errorcount
- && (!CLASS_TYPE_P (TREE_TYPE (decl))
- || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
+ && errorcount == unused_but_set_errorcount)
{
warning (OPT_Wunused_but_set_variable,
"variable %q+D set but not used", decl);
@@ -818,7 +818,7 @@ poplevel (int keep, int reverse, int functionbody)
if (kind == sk_cleanup)
goto restart;
- timevar_stop (TV_NAME_LOOKUP);
+ timevar_cond_stop (TV_NAME_LOOKUP, subtime);
return block;
}
@@ -2480,7 +2480,8 @@ redeclaration_error_message (tree newdecl, tree olddecl)
if ((cxx_dialect != cxx98)
&& TREE_CODE (ot) == FUNCTION_DECL && DECL_FRIEND_P (ot)
&& !check_default_tmpl_args (nt, DECL_TEMPLATE_PARMS (newdecl),
- /*is_primary=*/1, /*is_partial=*/0,
+ /*is_primary=*/true,
+ /*is_partial=*/false,
/*is_friend_decl=*/2))
return G_("redeclaration of friend %q#D "
"may not have default template arguments");
@@ -3306,9 +3307,9 @@ make_typename_type (tree context, tree name, enum tag_types tag_type,
context, name, t);
return error_mark_node;
}
-
- if (complain & tf_error)
- perform_or_defer_access_check (TYPE_BINFO (context), t, t);
+
+ if (!perform_or_defer_access_check (TYPE_BINFO (context), t, t, complain))
+ return error_mark_node;
/* If we are currently parsing a template and if T is a typedef accessed
through CONTEXT then we need to remember and check access of T at
@@ -3378,8 +3379,9 @@ make_unbound_class_template (tree context, tree name, tree parm_list,
return error_mark_node;
}
- if (complain & tf_error)
- perform_or_defer_access_check (TYPE_BINFO (context), tmpl, tmpl);
+ if (!perform_or_defer_access_check (TYPE_BINFO (context), tmpl, tmpl,
+ complain))
+ return error_mark_node;
return tmpl;
}
@@ -5280,7 +5282,7 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p,
&& VEC_length (constructor_elt, CONSTRUCTOR_ELTS (str_init)) == 1)
{
str_init = VEC_index (constructor_elt,
- CONSTRUCTOR_ELTS (str_init), 0)->value;
+ CONSTRUCTOR_ELTS (str_init), 0).value;
}
/* If it's a string literal, then it's the initializer for the array
@@ -5370,7 +5372,7 @@ reshape_init (tree type, tree init, tsubst_flags_t complain)
return init;
/* Recurse on this CONSTRUCTOR. */
- d.cur = VEC_index (constructor_elt, v, 0);
+ d.cur = &VEC_index (constructor_elt, v, 0);
d.end = d.cur + VEC_length (constructor_elt, v);
new_init = reshape_init_r (type, &d, true, complain);
@@ -5915,7 +5917,7 @@ type_dependent_init_p (tree init)
nelts = VEC_length (constructor_elt, elts);
for (i = 0; i < nelts; ++i)
if (type_dependent_init_p (VEC_index (constructor_elt,
- elts, i)->value))
+ elts, i).value))
return true;
}
else
@@ -5945,7 +5947,7 @@ value_dependent_init_p (tree init)
nelts = VEC_length (constructor_elt, elts);
for (i = 0; i < nelts; ++i)
if (value_dependent_init_p (VEC_index (constructor_elt,
- elts, i)->value))
+ elts, i).value))
return true;
}
else
@@ -6190,7 +6192,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
/* Normally local_decls is populated during GIMPLE lowering,
but [cd]tors are never actually compiled directly. We need
to put statics on the list so we can deal with the label
- address extension. */
+ address extension. FIXME. */
add_local_decl (cfun, decl);
}
@@ -6647,7 +6649,8 @@ register_dtor_fn (tree decl)
gcc_assert (idx >= 0);
cleanup = VEC_index (tree, CLASSTYPE_METHOD_VEC (type), idx);
/* Make sure it is accessible. */
- perform_or_defer_access_check (TYPE_BINFO (type), cleanup, cleanup);
+ perform_or_defer_access_check (TYPE_BINFO (type), cleanup, cleanup,
+ tf_warning_or_error);
}
else
{
@@ -6893,7 +6896,7 @@ cp_complete_array_type (tree *ptype, tree initial_value, bool do_default)
&& !VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (initial_value)))
{
VEC(constructor_elt,gc) *v = CONSTRUCTOR_ELTS (initial_value);
- tree value = VEC_index (constructor_elt, v, 0)->value;
+ tree value = VEC_index (constructor_elt, v, 0).value;
if (TREE_CODE (value) == STRING_CST
&& VEC_length (constructor_elt, v) == 1)
@@ -7913,7 +7916,6 @@ stabilize_vla_size (tree size)
tree
compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
{
- tree type;
tree itype;
tree osize = size;
tree abi_1_itype = NULL_TREE;
@@ -7921,10 +7923,10 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
if (error_operand_p (size))
return error_mark_node;
- type = TREE_TYPE (size);
- /* type_dependent_expression_p? */
- if (!dependent_type_p (type))
+ if (!type_dependent_expression_p (size))
{
+ tree type = TREE_TYPE (size);
+
mark_rvalue_use (size);
if (cxx_dialect < cxx0x && TREE_CODE (size) == NOP_EXPR
@@ -7986,7 +7988,7 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
/* We can only call value_dependent_expression_p on integral constant
expressions; treat non-constant expressions as dependent, too. */
if (processing_template_decl
- && (dependent_type_p (type)
+ && (type_dependent_expression_p (size)
|| !TREE_CONSTANT (size) || value_dependent_expression_p (size)))
{
/* We cannot do any checking for a SIZE that isn't known to be
@@ -9526,8 +9528,6 @@ grokdeclarator (const cp_declarator *declarator,
the object as `const'. */
if (constexpr_p && innermost_code != cdk_function)
{
- if (type_quals & TYPE_QUAL_CONST)
- error ("both %<const%> and %<constexpr%> cannot be used here");
if (type_quals & TYPE_QUAL_VOLATILE)
error ("both %<volatile%> and %<constexpr%> cannot be used here");
if (TREE_CODE (type) != REFERENCE_TYPE)
@@ -10600,19 +10600,8 @@ check_default_argument (tree decl, tree arg)
A default argument expression is implicitly converted to the
parameter type. */
- if (!TREE_TYPE (arg)
- || !can_convert_arg (decl_type, TREE_TYPE (arg), arg, LOOKUP_NORMAL,
- tf_warning_or_error))
- {
- if (decl)
- error ("default argument for %q#D has type %qT",
- decl, TREE_TYPE (arg));
- else
- error ("default argument for parameter of type %qT has type %qT",
- decl_type, TREE_TYPE (arg));
-
- return error_mark_node;
- }
+ perform_implicit_conversion_flags (decl_type, arg, tf_warning_or_error,
+ LOOKUP_NORMAL);
if (warn_zero_as_null_pointer_constant
&& c_inhibit_evaluation_warnings == 0
@@ -11843,7 +11832,14 @@ xref_basetypes (tree ref, tree base_list)
{
tree basetype = TREE_VALUE (*basep);
- if (!(processing_template_decl && uses_template_parms (basetype))
+ /* The dependent_type_p call below should really be dependent_scope_p
+ so that we give a hard error about using an incomplete type as a
+ base, but we allow it with a pedwarn for backward
+ compatibility. */
+ if (processing_template_decl
+ && CLASS_TYPE_P (basetype) && TYPE_BEING_DEFINED (basetype))
+ cxx_incomplete_type_diagnostic (NULL_TREE, basetype, DK_PEDWARN);
+ if (!dependent_type_p (basetype)
&& !complete_type_or_else (basetype, NULL))
/* An incomplete type. Remove it from the list. */
*basep = TREE_CHAIN (*basep);
@@ -12385,7 +12381,7 @@ finish_enum_value_list (tree enumtype)
for (t = TYPE_MAIN_VARIANT (enumtype); t; t = TYPE_NEXT_VARIANT (t))
TYPE_VALUES (t) = TYPE_VALUES (enumtype);
- if (current_class_type
+ if (at_class_scope_p ()
&& COMPLETE_TYPE_P (current_class_type)
&& UNSCOPED_ENUM_P (enumtype))
insert_late_enum_def_into_classtype_sorted_fields (enumtype,
@@ -12561,16 +12557,9 @@ incremented enumerator value is too large for %<long%>");
course, if we're processing a template, there may be no value. */
type = value ? TREE_TYPE (value) : NULL_TREE;
- if (context && context == current_class_type)
- /* This enum declaration is local to the class. We need the full
- lang_decl so that we can record DECL_CLASS_CONTEXT, for example. */
- decl = build_lang_decl_loc (loc, CONST_DECL, name, type);
- else
- /* It's a global enum, or it's local to a function. (Note local to
- a function could mean local to a class method. */
- decl = build_decl (loc, CONST_DECL, name, type);
+ decl = build_decl (loc, CONST_DECL, name, type);
- DECL_CONTEXT (decl) = FROB_CONTEXT (context);
+ DECL_CONTEXT (decl) = enumtype;
TREE_CONSTANT (decl) = 1;
TREE_READONLY (decl) = 1;
DECL_INITIAL (decl) = value;
@@ -13586,7 +13575,8 @@ finish_function (int flags)
&& !TREE_NO_WARNING (fndecl)
/* Structor return values (if any) are set by the compiler. */
&& !DECL_CONSTRUCTOR_P (fndecl)
- && !DECL_DESTRUCTOR_P (fndecl))
+ && !DECL_DESTRUCTOR_P (fndecl)
+ && targetm.warn_func_return (fndecl))
{
warning (OPT_Wreturn_type,
"no return statement in function returning non-void");
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index d8c72606f2e..f76b59605ae 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -45,7 +45,7 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "tree-inline.h"
#include "c-family/c-pragma.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "intl.h"
#include "gimple.h"
#include "pointer-set.h"
@@ -4205,6 +4205,10 @@ mark_used (tree decl)
if (DECL_CLONED_FUNCTION_P (decl))
TREE_USED (DECL_CLONED_FUNCTION (decl)) = 1;
+ /* Mark enumeration types as used. */
+ if (TREE_CODE (decl) == CONST_DECL)
+ used_types_insert (DECL_CONTEXT (decl));
+
if (TREE_CODE (decl) == FUNCTION_DECL
&& DECL_DELETED_FN (decl))
{
@@ -4234,7 +4238,10 @@ mark_used (tree decl)
|| DECL_THUNK_P (decl))
{
if (!processing_template_decl && type_uses_auto (TREE_TYPE (decl)))
- error ("use of %qD before deduction of %<auto%>", decl);
+ {
+ error ("use of %qD before deduction of %<auto%>", decl);
+ return false;
+ }
return true;
}
@@ -4280,7 +4287,10 @@ mark_used (tree decl)
}
if (type_uses_auto (TREE_TYPE (decl)))
- error ("use of %qD before deduction of %<auto%>", decl);
+ {
+ error ("use of %qD before deduction of %<auto%>", decl);
+ return false;
+ }
/* If we don't need a value, then we don't need to synthesize DECL. */
if (cp_unevaluated_operand != 0)
diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c
index a461094f504..3e6ef8f7ed5 100644
--- a/gcc/cp/dump.c
+++ b/gcc/cp/dump.c
@@ -202,6 +202,15 @@ dump_op (dump_info_p di, tree t)
}
}
+/* Dump information common to statements from STMT. */
+
+static void
+dump_stmt (dump_info_p di, const_tree t)
+{
+ if (EXPR_HAS_LOCATION (t))
+ dump_int (di, "line", EXPR_LINENO (t));
+}
+
bool
cp_dump_tree (void* dump_info, tree t)
{
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 67ff5130a61..40f96d33f9b 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -1803,7 +1803,8 @@ dump_expr (tree t, int flags)
break;
case SSA_NAME:
- if (!DECL_ARTIFICIAL (SSA_NAME_VAR (t)))
+ if (SSA_NAME_VAR (t)
+ && !DECL_ARTIFICIAL (SSA_NAME_VAR (t)))
dump_expr (SSA_NAME_VAR (t), flags);
else
pp_cxx_ws_string (cxx_pp, M_("<unknown>"));
@@ -2633,7 +2634,7 @@ lang_decl_name (tree decl, int v, bool translate)
dump_function_name (decl, TFF_PLAIN_IDENTIFIER);
else if ((DECL_NAME (decl) == NULL_TREE)
&& TREE_CODE (decl) == NAMESPACE_DECL)
- dump_decl (decl, TFF_PLAIN_IDENTIFIER);
+ dump_decl (decl, TFF_PLAIN_IDENTIFIER | TFF_UNQUALIFIED_NAME);
else
dump_decl (DECL_NAME (decl), TFF_PLAIN_IDENTIFIER);
@@ -3194,6 +3195,7 @@ print_instantiation_context (void)
{
print_instantiation_partial_context
(global_dc, current_instantiation (), input_location);
+ pp_base_newline (global_dc->printer);
diagnostic_flush_buffer (global_dc);
}
diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c
index e68af3d14cd..d0cbaedc581 100644
--- a/gcc/cp/friend.c
+++ b/gcc/cp/friend.c
@@ -166,7 +166,8 @@ add_friend (tree type, tree decl, bool complain)
ctx = DECL_CONTEXT (decl);
if (ctx && CLASS_TYPE_P (ctx) && !uses_template_parms (ctx))
- perform_or_defer_access_check (TYPE_BINFO (ctx), decl, decl);
+ perform_or_defer_access_check (TYPE_BINFO (ctx), decl, decl,
+ tf_warning_or_error);
maybe_add_class_template_decl_list (type, decl, /*friend_p=*/1);
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 5a81643b5d9..09288f87e20 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -1876,9 +1876,11 @@ build_offset_ref (tree type, tree member, bool address_p)
(or any class derived from that class). */
if (address_p && DECL_P (t)
&& DECL_NONSTATIC_MEMBER_P (t))
- perform_or_defer_access_check (TYPE_BINFO (type), t, t);
+ perform_or_defer_access_check (TYPE_BINFO (type), t, t,
+ tf_warning_or_error);
else
- perform_or_defer_access_check (basebinfo, t, t);
+ perform_or_defer_access_check (basebinfo, t, t,
+ tf_warning_or_error);
if (DECL_STATIC_FUNCTION_P (t))
return t;
@@ -1891,7 +1893,8 @@ build_offset_ref (tree type, tree member, bool address_p)
/* We need additional test besides the one in
check_accessibility_of_qualified_id in case it is
a pointer to non-static member. */
- perform_or_defer_access_check (TYPE_BINFO (type), member, member);
+ perform_or_defer_access_check (TYPE_BINFO (type), member, member,
+ tf_warning_or_error);
if (!address_p)
{
@@ -2175,7 +2178,10 @@ build_new_1 (VEC(tree,gc) **placement, tree type, tree nelts,
tree pointer_type;
tree non_const_pointer_type;
tree outer_nelts = NULL_TREE;
+ /* For arrays, a bounds checks on the NELTS parameter. */
+ tree outer_nelts_check = NULL_TREE;
bool outer_nelts_from_type = false;
+ double_int inner_nelts_count = double_int_one;
tree alloc_call, alloc_expr;
/* The address returned by the call to "operator new". This node is
a VAR_DECL and is therefore reusable. */
@@ -2228,7 +2234,22 @@ build_new_1 (VEC(tree,gc) **placement, tree type, tree nelts,
{
tree inner_nelts = array_type_nelts_top (elt_type);
tree inner_nelts_cst = maybe_constant_value (inner_nelts);
- if (!TREE_CONSTANT (inner_nelts_cst))
+ if (TREE_CONSTANT (inner_nelts_cst)
+ && TREE_CODE (inner_nelts_cst) == INTEGER_CST)
+ {
+ double_int result;
+ if (mul_double (TREE_INT_CST_LOW (inner_nelts_cst),
+ TREE_INT_CST_HIGH (inner_nelts_cst),
+ inner_nelts_count.low, inner_nelts_count.high,
+ &result.low, &result.high))
+ {
+ if (complain & tf_error)
+ error ("integer overflow in array size");
+ nelts = error_mark_node;
+ }
+ inner_nelts_count = result;
+ }
+ else
{
if (complain & tf_error)
{
@@ -2318,7 +2339,56 @@ build_new_1 (VEC(tree,gc) **placement, tree type, tree nelts,
size = size_in_bytes (elt_type);
if (array_p)
- size = size_binop (MULT_EXPR, size, convert (sizetype, nelts));
+ {
+ /* Maximum available size in bytes. Half of the address space
+ minus the cookie size. */
+ double_int max_size
+ = double_int_lshift (double_int_one, TYPE_PRECISION (sizetype) - 1,
+ HOST_BITS_PER_DOUBLE_INT, false);
+ /* Size of the inner array elements. */
+ double_int inner_size;
+ /* Maximum number of outer elements which can be allocated. */
+ double_int max_outer_nelts;
+ tree max_outer_nelts_tree;
+
+ gcc_assert (TREE_CODE (size) == INTEGER_CST);
+ cookie_size = targetm.cxx.get_cookie_size (elt_type);
+ gcc_assert (TREE_CODE (cookie_size) == INTEGER_CST);
+ gcc_checking_assert (double_int_ucmp
+ (TREE_INT_CST (cookie_size), max_size) < 0);
+ /* Unconditionally substract the cookie size. This decreases the
+ maximum object size and is safe even if we choose not to use
+ a cookie after all. */
+ max_size = double_int_sub (max_size, TREE_INT_CST (cookie_size));
+ if (mul_double (TREE_INT_CST_LOW (size), TREE_INT_CST_HIGH (size),
+ inner_nelts_count.low, inner_nelts_count.high,
+ &inner_size.low, &inner_size.high)
+ || double_int_ucmp (inner_size, max_size) > 0)
+ {
+ if (complain & tf_error)
+ error ("size of array is too large");
+ return error_mark_node;
+ }
+ max_outer_nelts = double_int_udiv (max_size, inner_size, TRUNC_DIV_EXPR);
+ /* Only keep the top-most seven bits, to simplify encoding the
+ constant in the instruction stream. */
+ {
+ unsigned shift = HOST_BITS_PER_DOUBLE_INT - 7
+ - (max_outer_nelts.high ? clz_hwi (max_outer_nelts.high)
+ : (HOST_BITS_PER_WIDE_INT + clz_hwi (max_outer_nelts.low)));
+ max_outer_nelts
+ = double_int_lshift (double_int_rshift
+ (max_outer_nelts, shift,
+ HOST_BITS_PER_DOUBLE_INT, false),
+ shift, HOST_BITS_PER_DOUBLE_INT, false);
+ }
+ max_outer_nelts_tree = double_int_to_tree (sizetype, max_outer_nelts);
+
+ size = size_binop (MULT_EXPR, size, convert (sizetype, nelts));
+ outer_nelts_check = fold_build2 (LE_EXPR, boolean_type_node,
+ outer_nelts,
+ max_outer_nelts_tree);
+ }
alloc_fn = NULL_TREE;
@@ -2381,10 +2451,13 @@ build_new_1 (VEC(tree,gc) **placement, tree type, tree nelts,
/* Use a class-specific operator new. */
/* If a cookie is required, add some extra space. */
if (array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type))
- {
- cookie_size = targetm.cxx.get_cookie_size (elt_type);
- size = size_binop (PLUS_EXPR, size, cookie_size);
- }
+ size = size_binop (PLUS_EXPR, size, cookie_size);
+ else
+ cookie_size = NULL_TREE;
+ /* Perform the overflow check. */
+ if (outer_nelts_check != NULL_TREE)
+ size = fold_build3 (COND_EXPR, sizetype, outer_nelts_check,
+ size, TYPE_MAX_VALUE (sizetype));
/* Create the argument list. */
VEC_safe_insert (tree, gc, *placement, 0, size);
/* Do name-lookup to find the appropriate operator. */
@@ -2415,13 +2488,12 @@ build_new_1 (VEC(tree,gc) **placement, tree type, tree nelts,
{
/* Use a global operator new. */
/* See if a cookie might be required. */
- if (array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type))
- cookie_size = targetm.cxx.get_cookie_size (elt_type);
- else
+ if (!(array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type)))
cookie_size = NULL_TREE;
alloc_call = build_operator_new_call (fnname, placement,
&size, &cookie_size,
+ outer_nelts_check,
&alloc_fn, complain);
}
}
diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c
index 743f4752c1c..54021f1e351 100644
--- a/gcc/cp/lex.c
+++ b/gcc/cp/lex.c
@@ -571,10 +571,11 @@ retrofit_lang_decl (tree t)
else
gcc_unreachable ();
-#ifdef GATHER_STATISTICS
- tree_node_counts[(int)lang_decl] += 1;
- tree_node_sizes[(int)lang_decl] += size;
-#endif
+ if (GATHER_STATISTICS)
+ {
+ tree_node_counts[(int)lang_decl] += 1;
+ tree_node_sizes[(int)lang_decl] += size;
+ }
}
void
@@ -601,10 +602,11 @@ cxx_dup_lang_specific_decl (tree node)
memcpy (ld, DECL_LANG_SPECIFIC (node), size);
DECL_LANG_SPECIFIC (node) = ld;
-#ifdef GATHER_STATISTICS
- tree_node_counts[(int)lang_decl] += 1;
- tree_node_sizes[(int)lang_decl] += size;
-#endif
+ if (GATHER_STATISTICS)
+ {
+ tree_node_counts[(int)lang_decl] += 1;
+ tree_node_sizes[(int)lang_decl] += size;
+ }
}
/* Copy DECL, including any language-specific parts. */
@@ -638,10 +640,11 @@ copy_lang_type (tree node)
memcpy (lt, TYPE_LANG_SPECIFIC (node), size);
TYPE_LANG_SPECIFIC (node) = lt;
-#ifdef GATHER_STATISTICS
- tree_node_counts[(int)lang_type] += 1;
- tree_node_sizes[(int)lang_type] += size;
-#endif
+ if (GATHER_STATISTICS)
+ {
+ tree_node_counts[(int)lang_type] += 1;
+ tree_node_sizes[(int)lang_type] += size;
+ }
}
/* Copy TYPE, including any language-specific parts. */
@@ -671,10 +674,11 @@ cxx_make_type (enum tree_code code)
TYPE_LANG_SPECIFIC (t) = pi;
pi->u.c.h.is_lang_type_class = 1;
-#ifdef GATHER_STATISTICS
- tree_node_counts[(int)lang_type] += 1;
- tree_node_sizes[(int)lang_type] += sizeof (struct lang_type);
-#endif
+ if (GATHER_STATISTICS)
+ {
+ tree_node_counts[(int)lang_type] += 1;
+ tree_node_sizes[(int)lang_type] += sizeof (struct lang_type);
+ }
}
/* Set up some flags that give proper default behavior. */
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 0237456dcca..c21ae152d6b 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "target.h"
#include "common/common-target.h"
-#include "tree-pass.h"
#include "diagnostic.h"
#include "cgraph.h"
#include "gimple.h"
@@ -922,8 +921,8 @@ get_copy_assign (tree type)
static void
process_subob_fn (tree fn, bool move_p, tree *spec_p, bool *trivial_p,
- bool *deleted_p, bool *constexpr_p,
- const char *msg, tree arg)
+ bool *deleted_p, bool *constexpr_p, bool *no_implicit_p,
+ bool diag, tree arg)
{
if (!fn || fn == error_mark_node)
goto bad;
@@ -943,22 +942,20 @@ process_subob_fn (tree fn, bool move_p, tree *spec_p, bool *trivial_p,
{
if (deleted_p)
*deleted_p = true;
- if (msg)
+ if (diag)
error ("union member %q+D with non-trivial %qD", arg, fn);
}
}
- if (move_p && !move_fn_p (fn) && !trivial_fn_p (fn))
- {
- if (msg)
- error (msg, arg);
- goto bad;
- }
+ /* Core 1402: A non-trivial copy op suppresses the implicit
+ declaration of the move ctor/op=. */
+ if (no_implicit_p && move_p && !move_fn_p (fn) && !trivial_fn_p (fn))
+ *no_implicit_p = true;
if (constexpr_p && !DECL_DECLARED_CONSTEXPR_P (fn))
{
*constexpr_p = false;
- if (msg)
+ if (diag)
{
inform (0, "defaulted constructor calls non-constexpr "
"%q+D", fn);
@@ -980,8 +977,8 @@ static void
walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
int quals, bool copy_arg_p, bool move_p,
bool assign_p, tree *spec_p, bool *trivial_p,
- bool *deleted_p, bool *constexpr_p, const char *msg,
- int flags, tsubst_flags_t complain)
+ bool *deleted_p, bool *constexpr_p, bool *no_implicit_p,
+ bool diag, int flags, tsubst_flags_t complain)
{
tree field;
for (field = fields; field; field = DECL_CHAIN (field))
@@ -998,13 +995,13 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
bool bad = true;
if (CP_TYPE_CONST_P (mem_type) && !CLASS_TYPE_P (mem_type))
{
- if (msg)
+ if (diag)
error ("non-static const member %q#D, can%'t use default "
"assignment operator", field);
}
else if (TREE_CODE (mem_type) == REFERENCE_TYPE)
{
- if (msg)
+ if (diag)
error ("non-static reference member %q#D, can%'t use "
"default assignment operator", field);
}
@@ -1020,7 +1017,7 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
if (DECL_INITIAL (field))
{
- if (msg && DECL_INITIAL (field) == error_mark_node)
+ if (diag && DECL_INITIAL (field) == error_mark_node)
inform (0, "initializer for %q+#D is invalid", field);
if (trivial_p)
*trivial_p = false;
@@ -1043,14 +1040,14 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
if (CP_TYPE_CONST_P (mem_type)
&& default_init_uninitialized_part (mem_type))
{
- if (msg)
+ if (diag)
error ("uninitialized non-static const member %q#D",
field);
bad = true;
}
else if (TREE_CODE (mem_type) == REFERENCE_TYPE)
{
- if (msg)
+ if (diag)
error ("uninitialized non-static reference member %q#D",
field);
bad = true;
@@ -1066,7 +1063,7 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
&& TREE_CODE (DECL_CONTEXT (field)) != UNION_TYPE)
{
*constexpr_p = false;
- if (msg)
+ if (diag)
inform (0, "defaulted default constructor does not "
"initialize %q+#D", field);
}
@@ -1079,7 +1076,8 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
{
walk_field_subobs (TYPE_FIELDS (mem_type), fnname, sfk, quals,
copy_arg_p, move_p, assign_p, spec_p, trivial_p,
- deleted_p, constexpr_p, msg, flags, complain);
+ deleted_p, constexpr_p, no_implicit_p,
+ diag, flags, complain);
continue;
}
@@ -1096,7 +1094,7 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
rval = locate_fn_flags (mem_type, fnname, argtype, flags, complain);
process_subob_fn (rval, move_p, spec_p, trivial_p, deleted_p,
- constexpr_p, msg, field);
+ constexpr_p, no_implicit_p, diag, field);
}
}
@@ -1110,19 +1108,21 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
static void
synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
tree *spec_p, bool *trivial_p, bool *deleted_p,
- bool *constexpr_p, bool diag)
+ bool *constexpr_p, bool *no_implicit_p, bool diag)
{
tree binfo, base_binfo, scope, fnname, rval, argtype;
bool move_p, copy_arg_p, assign_p, expected_trivial, check_vdtor;
VEC(tree,gc) *vbases;
int i, quals, flags;
tsubst_flags_t complain;
- const char *msg;
bool ctor_p;
if (spec_p)
*spec_p = (cxx_dialect >= cxx0x ? noexcept_true_spec : empty_except_spec);
+ if (no_implicit_p)
+ *no_implicit_p = false;
+
if (deleted_p)
{
/* "The closure type associated with a lambda-expression has a deleted
@@ -1225,6 +1225,7 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
++cp_unevaluated_operand;
++c_inhibit_evaluation_warnings;
+ push_deferring_access_checks (dk_no_deferred);
scope = push_scope (ctype);
@@ -1238,25 +1239,21 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
quals = TYPE_UNQUALIFIED;
argtype = NULL_TREE;
- if (!diag)
- msg = NULL;
- else if (assign_p)
- msg = ("base %qT does not have a move assignment operator or trivial "
- "copy assignment operator");
- else
- msg = ("base %qT does not have a move constructor or trivial "
- "copy constructor");
-
for (binfo = TYPE_BINFO (ctype), i = 0;
BINFO_BASE_ITERATE (binfo, i, base_binfo); ++i)
{
tree basetype = BINFO_TYPE (base_binfo);
+
+ if (!assign_p && BINFO_VIRTUAL_P (base_binfo))
+ /* We'll handle virtual bases below. */
+ continue;
+
if (copy_arg_p)
argtype = build_stub_type (basetype, quals, move_p);
rval = locate_fn_flags (base_binfo, fnname, argtype, flags, complain);
process_subob_fn (rval, move_p, spec_p, trivial_p, deleted_p,
- constexpr_p, msg, basetype);
+ constexpr_p, no_implicit_p, diag, basetype);
if (ctor_p && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (basetype))
{
/* In a constructor we also need to check the subobject
@@ -1269,7 +1266,7 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
throw) or exception-specification (a throw from one of the
dtors would be a double-fault). */
process_subob_fn (rval, false, NULL, NULL,
- deleted_p, NULL, NULL,
+ deleted_p, NULL, NULL, false,
basetype);
}
@@ -1286,21 +1283,31 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
}
vbases = CLASSTYPE_VBASECLASSES (ctype);
- if (vbases && assign_p && move_p)
+ if (vbases == NULL)
+ /* No virtual bases to worry about. */;
+ else if (assign_p && move_p && no_implicit_p)
{
+ /* Don't implicitly declare a defaulted move assignment if a virtual
+ base has non-trivial move assignment, since moving the same base
+ more than once is dangerous. */
/* Should the spec be changed to allow vbases that only occur once? */
- if (diag)
- error ("%qT has virtual bases, default move assignment operator "
- "cannot be generated", ctype);
- else if (deleted_p)
- *deleted_p = true;
+ FOR_EACH_VEC_ELT (tree, vbases, i, base_binfo)
+ {
+ tree basetype = BINFO_TYPE (base_binfo);
+ if (copy_arg_p)
+ argtype = build_stub_type (basetype, quals, move_p);
+ rval = locate_fn_flags (base_binfo, fnname, argtype, flags, complain);
+ if (rval && rval != error_mark_node
+ && move_fn_p (rval) && !trivial_fn_p (rval))
+ {
+ *no_implicit_p = true;
+ break;
+ }
+ }
}
else if (!assign_p)
{
- if (diag)
- msg = ("virtual base %qT does not have a move constructor "
- "or trivial copy constructor");
- if (vbases && constexpr_p)
+ if (constexpr_p)
*constexpr_p = false;
FOR_EACH_VEC_ELT (tree, vbases, i, base_binfo)
{
@@ -1310,37 +1317,33 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
rval = locate_fn_flags (base_binfo, fnname, argtype, flags, complain);
process_subob_fn (rval, move_p, spec_p, trivial_p, deleted_p,
- constexpr_p, msg, basetype);
+ constexpr_p, no_implicit_p, diag, basetype);
if (ctor_p && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (basetype))
{
rval = locate_fn_flags (base_binfo, complete_dtor_identifier,
NULL_TREE, flags, complain);
- process_subob_fn (rval, false, spec_p, NULL,
- deleted_p, NULL, NULL,
+ process_subob_fn (rval, false, NULL, NULL,
+ deleted_p, NULL, NULL, false,
basetype);
}
}
}
- if (!diag)
- /* Leave msg null. */;
- else if (assign_p)
- msg = ("non-static data member %qD does not have a move "
- "assignment operator or trivial copy assignment operator");
- else
- msg = ("non-static data member %qD does not have a move "
- "constructor or trivial copy constructor");
+
+ /* Now handle the non-static data members. */
walk_field_subobs (TYPE_FIELDS (ctype), fnname, sfk, quals,
copy_arg_p, move_p, assign_p, spec_p, trivial_p,
- deleted_p, constexpr_p, msg, flags, complain);
+ deleted_p, constexpr_p, no_implicit_p,
+ diag, flags, complain);
if (ctor_p)
walk_field_subobs (TYPE_FIELDS (ctype), complete_dtor_identifier,
sfk_destructor, TYPE_UNQUALIFIED, false,
- false, false, spec_p, NULL,
+ false, false, NULL, NULL,
deleted_p, NULL,
- NULL, flags, complain);
+ NULL, false, flags, complain);
pop_scope (scope);
+ pop_deferring_access_checks ();
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
}
@@ -1407,7 +1410,7 @@ maybe_explain_implicit_delete (tree decl)
"definition would be ill-formed:", decl);
pop_scope (scope);
synthesized_method_walk (ctype, sfk, const_p,
- NULL, NULL, NULL, NULL, true);
+ NULL, NULL, NULL, NULL, NULL, true);
}
input_location = loc;
@@ -1427,7 +1430,7 @@ explain_implicit_non_constexpr (tree decl)
bool dummy;
synthesized_method_walk (DECL_CLASS_CONTEXT (decl),
special_function_p (decl), const_p,
- NULL, NULL, NULL, &dummy, true);
+ NULL, NULL, NULL, &dummy, NULL, true);
}
/* Implicitly declare the special function indicated by KIND, as a
@@ -1451,6 +1454,7 @@ implicitly_declare_fn (special_function_kind kind, tree type, bool const_p)
bool deleted_p;
bool trivial_p;
bool constexpr_p;
+ bool no_implicit_p;
/* Because we create declarations for implicitly declared functions
lazily, we may be creating the declaration for a member of TYPE
@@ -1520,7 +1524,7 @@ implicitly_declare_fn (special_function_kind kind, tree type, bool const_p)
}
synthesized_method_walk (type, kind, const_p, &raises, &trivial_p,
- &deleted_p, &constexpr_p, false);
+ &deleted_p, &constexpr_p, &no_implicit_p, false);
/* Don't bother marking a deleted constructor as constexpr. */
if (deleted_p)
constexpr_p = false;
@@ -1585,6 +1589,7 @@ implicitly_declare_fn (special_function_kind kind, tree type, bool const_p)
DECL_DELETED_FN (fn) = deleted_p;
DECL_DECLARED_CONSTEXPR_P (fn) = constexpr_p;
}
+ FNDECL_SUPPRESS_IMPLICIT_DECL (fn) = no_implicit_p;
DECL_EXTERNAL (fn) = true;
DECL_NOT_REALLY_EXTERN (fn) = 1;
DECL_DECLARED_INLINE_P (fn) = 1;
@@ -1777,6 +1782,10 @@ lazily_declare_fn (special_function_kind sfk, tree type)
|| sfk == sfk_move_assignment))
return NULL_TREE;
+ /* We also suppress implicit move if it would call a non-trivial copy. */
+ if (FNDECL_SUPPRESS_IMPLICIT_DECL (fn))
+ return NULL_TREE;
+
/* A destructor may be virtual. */
if (sfk == sfk_destructor
|| sfk == sfk_move_assignment
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index cc8439c9ccd..22bc5e7c006 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -441,7 +441,8 @@ supplement_binding_1 (cxx_binding *binding, tree decl)
template in order to handle late matching of underlying
type on an opaque-enum-declaration followed by an
enum-specifier. */
- || (TREE_CODE (TREE_TYPE (target_decl)) == ENUMERAL_TYPE
+ || (processing_template_decl
+ && TREE_CODE (TREE_TYPE (target_decl)) == ENUMERAL_TYPE
&& TREE_CODE (TREE_TYPE (target_bval)) == ENUMERAL_TYPE
&& (dependent_type_p (ENUM_UNDERLYING_TYPE
(TREE_TYPE (target_decl)))
@@ -2420,7 +2421,15 @@ validate_nonmember_using_decl (tree decl, tree scope, tree name)
gcc_assert (DECL_P (decl));
/* Make a USING_DECL. */
- return push_using_decl (scope, name);
+ tree using_decl = push_using_decl (scope, name);
+
+ if (using_decl == NULL_TREE
+ && at_function_scope_p ()
+ && TREE_CODE (decl) == VAR_DECL)
+ /* C++11 7.3.3/10. */
+ error ("%qD is already declared in this scope", name);
+
+ return using_decl;
}
/* Process local and global using-declarations. */
@@ -4059,7 +4068,7 @@ ambiguous_decl (struct scope_binding *old, cxx_binding *new_binding, int flags)
/* If we expect types or namespaces, and not templates,
or this is not a template class. */
if ((LOOKUP_QUALIFIERS_ONLY (flags)
- && !DECL_CLASS_TEMPLATE_P (val)))
+ && !DECL_TYPE_TEMPLATE_P (val)))
val = NULL_TREE;
break;
case TYPE_DECL:
@@ -5855,23 +5864,33 @@ pushtag (tree name, tree type, tag_scope scope)
scope isn't enough, because more binding levels may be pushed. */
struct saved_scope *scope_chain;
-/* If ID has not already been marked, add an appropriate binding to
- *OLD_BINDINGS. */
+/* Return true if ID has not already been marked. */
+
+static inline bool
+store_binding_p (tree id)
+{
+ if (!id || !IDENTIFIER_BINDING (id))
+ return false;
+
+ if (IDENTIFIER_MARKED (id))
+ return false;
+
+ return true;
+}
+
+/* Add an appropriate binding to *OLD_BINDINGS which needs to already
+ have enough space reserved. */
static void
store_binding (tree id, VEC(cxx_saved_binding,gc) **old_bindings)
{
cxx_saved_binding *saved;
- if (!id || !IDENTIFIER_BINDING (id))
- return;
-
- if (IDENTIFIER_MARKED (id))
- return;
+ gcc_checking_assert (store_binding_p (id));
IDENTIFIER_MARKED (id) = 1;
- saved = VEC_safe_push (cxx_saved_binding, gc, *old_bindings, NULL);
+ saved = VEC_quick_push (cxx_saved_binding, *old_bindings, NULL);
saved->identifier = id;
saved->binding = IDENTIFIER_BINDING (id);
saved->real_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
@@ -5881,19 +5900,32 @@ store_binding (tree id, VEC(cxx_saved_binding,gc) **old_bindings)
static void
store_bindings (tree names, VEC(cxx_saved_binding,gc) **old_bindings)
{
- tree t;
+ static VEC(tree,heap) *bindings_need_stored = NULL;
+ tree t, id;
+ size_t i;
bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
for (t = names; t; t = TREE_CHAIN (t))
{
- tree id;
-
if (TREE_CODE (t) == TREE_LIST)
id = TREE_PURPOSE (t);
else
id = DECL_NAME (t);
- store_binding (id, old_bindings);
+ if (store_binding_p (id))
+ VEC_safe_push(tree, heap, bindings_need_stored, id);
+ }
+ if (!VEC_empty (tree, bindings_need_stored))
+ {
+ VEC_reserve_exact (cxx_saved_binding, gc, *old_bindings,
+ VEC_length (tree, bindings_need_stored));
+ for (i = 0; VEC_iterate(tree, bindings_need_stored, i, id); ++i)
+ {
+ /* We can appearantly have duplicates in NAMES. */
+ if (store_binding_p (id))
+ store_binding (id, old_bindings);
+ }
+ VEC_truncate (tree, bindings_need_stored, 0);
}
timevar_cond_stop (TV_NAME_LOOKUP, subtime);
}
@@ -5905,12 +5937,23 @@ static void
store_class_bindings (VEC(cp_class_binding,gc) *names,
VEC(cxx_saved_binding,gc) **old_bindings)
{
+ static VEC(tree,heap) *bindings_need_stored = NULL;
size_t i;
cp_class_binding *cb;
bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
for (i = 0; VEC_iterate(cp_class_binding, names, i, cb); ++i)
- store_binding (cb->identifier, old_bindings);
+ if (store_binding_p (cb->identifier))
+ VEC_safe_push (tree, heap, bindings_need_stored, cb->identifier);
+ if (!VEC_empty (tree, bindings_need_stored))
+ {
+ tree id;
+ VEC_reserve_exact (cxx_saved_binding, gc, *old_bindings,
+ VEC_length (tree, bindings_need_stored));
+ for (i = 0; VEC_iterate(tree, bindings_need_stored, i, id); ++i)
+ store_binding (id, old_bindings);
+ VEC_truncate (tree, bindings_need_stored, 0);
+ }
timevar_cond_stop (TV_NAME_LOOKUP, subtime);
}
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index 8f0b3c04502..7011eb6f9f5 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -34,7 +34,7 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "langhooks.h"
#include "diagnostic-core.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "gimple.h"
#include "tree-iterator.h"
#include "cgraph.h"
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 027a7b9d07a..0f897c96f07 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -273,7 +273,7 @@ cp_lexer_dump_tokens (FILE *file, VEC(cp_token,gc) *buffer,
if (start_token > VEC_address (cp_token, buffer))
{
- cp_lexer_print_token (file, VEC_index (cp_token, buffer, 0));
+ cp_lexer_print_token (file, &VEC_index (cp_token, buffer, 0));
fprintf (file, " ... ");
}
@@ -313,8 +313,7 @@ cp_lexer_dump_tokens (FILE *file, VEC(cp_token,gc) *buffer,
if (i == num && i < VEC_length (cp_token, buffer))
{
fprintf (file, " ... ");
- cp_lexer_print_token (file, VEC_index (cp_token, buffer,
- VEC_length (cp_token, buffer) - 1));
+ cp_lexer_print_token (file, &VEC_last (cp_token, buffer));
}
fprintf (file, "\n");
@@ -1723,11 +1722,11 @@ cp_parser_context_new (cp_parser_context* next)
/* Managing the unparsed function queues. */
#define unparsed_funs_with_default_args \
- VEC_last (cp_unparsed_functions_entry, parser->unparsed_queues)->funs_with_default_args
+ VEC_last (cp_unparsed_functions_entry, parser->unparsed_queues).funs_with_default_args
#define unparsed_funs_with_definitions \
- VEC_last (cp_unparsed_functions_entry, parser->unparsed_queues)->funs_with_definitions
+ VEC_last (cp_unparsed_functions_entry, parser->unparsed_queues).funs_with_definitions
#define unparsed_nsdmis \
- VEC_last (cp_unparsed_functions_entry, parser->unparsed_queues)->nsdmis
+ VEC_last (cp_unparsed_functions_entry, parser->unparsed_queues).nsdmis
static void
push_unparsed_function_queues (cp_parser *parser)
@@ -2008,7 +2007,7 @@ static tree cp_parser_class_name
static tree cp_parser_class_specifier
(cp_parser *);
static tree cp_parser_class_head
- (cp_parser *, bool *, tree *);
+ (cp_parser *, bool *);
static enum tag_types cp_parser_class_key
(cp_parser *);
static void cp_parser_member_specification_opt
@@ -8048,7 +8047,7 @@ record_lambda_scope (tree lambda)
static void
finish_lambda_scope (void)
{
- tree_int *p = VEC_last (tree_int, lambda_scope_stack);
+ tree_int *p = &VEC_last (tree_int, lambda_scope_stack);
if (lambda_scope != p->t)
{
lambda_scope = p->t;
@@ -10515,7 +10514,7 @@ cp_parser_simple_declaration (cp_parser* parser,
if (cp_parser_declares_only_class_p (parser))
shadow_tag (&decl_specifiers);
/* Perform any deferred access checks. */
- perform_deferred_access_checks ();
+ perform_deferred_access_checks (tf_warning_or_error);
}
/* Consume the `;'. */
@@ -11993,8 +11992,7 @@ cp_parser_template_parameter_list (cp_parser* parser)
parm_loc,
parameter,
is_non_type,
- is_parameter_pack,
- 0);
+ is_parameter_pack);
else
{
tree err_parm = build_tree_list (parameter, parameter);
@@ -12417,7 +12415,8 @@ cp_parser_template_id (cp_parser *parser,
FOR_EACH_VEC_ELT (deferred_access_check, access_check, i, chk)
perform_or_defer_access_check (chk->binfo,
chk->decl,
- chk->diag_decl);
+ chk->diag_decl,
+ tf_warning_or_error);
}
/* Return the stored value. */
return check_value->value;
@@ -15752,7 +15751,7 @@ cp_parser_init_declarator (cp_parser* parser,
/* Perform the access control checks for the declarator and the
decl-specifiers. */
- perform_deferred_access_checks ();
+ perform_deferred_access_checks (tf_warning_or_error);
/* Restore the saved value. */
if (TREE_CODE (decl) == FUNCTION_DECL)
@@ -15849,8 +15848,8 @@ cp_parser_init_declarator (cp_parser* parser,
/* Core issue #226 (C++0x only): A default template-argument
shall not be specified in a friend class template
declaration. */
- check_default_tmpl_args (decl, current_template_parms, /*is_primary=*/1,
- /*is_partial=*/0, /*is_friend_decl=*/1);
+ check_default_tmpl_args (decl, current_template_parms, /*is_primary=*/true,
+ /*is_partial=*/false, /*is_friend_decl=*/1);
if (!friend_p && pushed_scope)
pop_scope (pushed_scope);
@@ -17962,15 +17961,13 @@ cp_parser_class_specifier_1 (cp_parser* parser)
bool saved_in_unbraced_linkage_specification_p;
tree old_scope = NULL_TREE;
tree scope = NULL_TREE;
- tree bases;
cp_token *closing_brace;
push_deferring_access_checks (dk_no_deferred);
/* Parse the class-head. */
type = cp_parser_class_head (parser,
- &nested_name_specifier_p,
- &bases);
+ &nested_name_specifier_p);
/* If the class-head was a semantic disaster, skip the entire body
of the class. */
if (!type)
@@ -17987,18 +17984,6 @@ cp_parser_class_specifier_1 (cp_parser* parser)
return error_mark_node;
}
- /* Process the base classes. If they're invalid, skip the
- entire class body. */
- if (!xref_basetypes (type, bases))
- {
- /* Consuming the closing brace yields better error messages
- later on. */
- if (cp_parser_skip_to_closing_brace (parser))
- cp_lexer_consume_token (parser->lexer);
- pop_deferring_access_checks ();
- return error_mark_node;
- }
-
/* Issue an error message if type-definitions are forbidden here. */
cp_parser_check_type_definition (parser);
/* Remember that we are defining one more class. */
@@ -18284,14 +18269,14 @@ cp_parser_class_specifier (cp_parser* parser)
static tree
cp_parser_class_head (cp_parser* parser,
- bool* nested_name_specifier_p,
- tree *bases)
+ bool* nested_name_specifier_p)
{
tree nested_name_specifier;
enum tag_types class_key;
tree id = NULL_TREE;
tree type = NULL_TREE;
tree attributes;
+ tree bases;
cp_virt_specifiers virt_specifiers = VIRT_SPEC_UNSPECIFIED;
bool template_id_p = false;
bool qualified_p = false;
@@ -18308,8 +18293,6 @@ cp_parser_class_head (cp_parser* parser,
num_templates = 0;
parser->colon_corrects_to_scope_p = false;
- *bases = NULL_TREE;
-
/* Look for the class-key. */
class_key = cp_parser_class_key (parser);
if (class_key == none_type)
@@ -18672,7 +18655,15 @@ cp_parser_class_head (cp_parser* parser,
/* Get the list of base-classes, if there is one. */
if (cp_lexer_next_token_is (parser->lexer, CPP_COLON))
- *bases = cp_parser_base_clause (parser);
+ bases = cp_parser_base_clause (parser);
+ else
+ bases = NULL_TREE;
+
+ /* If we're really defining a class, process the base classes.
+ If they're invalid, fail. */
+ if (type && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)
+ && !xref_basetypes (type, bases))
+ type = NULL_TREE;
done:
/* Leave the scope given by the nested-name-specifier. We will
@@ -21018,7 +21009,7 @@ cp_parser_function_definition_from_specifiers_and_declarator
did not check, check them now. We must wait until we are in the
scope of the function to perform the checks, since the function
might be a friend. */
- perform_deferred_access_checks ();
+ perform_deferred_access_checks (tf_warning_or_error);
if (!success_p)
{
@@ -21207,7 +21198,6 @@ cp_parser_template_declaration_after_export (cp_parser* parser, bool member_p)
{
/* Parse the template parameters. */
parameter_list = cp_parser_template_parameter_list (parser);
- fixup_template_parms ();
}
/* Get the deferred access checks from the parameter list. These
@@ -21313,7 +21303,7 @@ static void
cp_parser_perform_template_parameter_access_checks (VEC (deferred_access_check,gc)* checks)
{
++processing_template_parmlist;
- perform_access_checks (checks);
+ perform_access_checks (checks, tf_warning_or_error);
--processing_template_parmlist;
}
@@ -22762,7 +22752,7 @@ cp_parser_pre_parsed_nested_name_specifier (cp_parser *parser)
FOR_EACH_VEC_ELT (deferred_access_check, checks, i, chk)
perform_or_defer_access_check (chk->binfo,
chk->decl,
- chk->diag_decl);
+ chk->diag_decl, tf_warning_or_error);
}
/* Set the scope from the stored value. */
parser->scope = check_value->value;
@@ -24020,7 +24010,7 @@ cp_parser_objc_method_definition_list (cp_parser* parser)
if (!(ptk->type == CPP_PLUS || ptk->type == CPP_MINUS
|| ptk->type == CPP_EOF || ptk->keyword == RID_AT_END))
{
- perform_deferred_access_checks ();
+ perform_deferred_access_checks (tf_warning_or_error);
stop_deferring_access_checks ();
meth = cp_parser_function_definition_after_declarator (parser,
false);
@@ -26613,6 +26603,8 @@ cp_parser_omp_for_loop (cp_parser *parser, tree clauses, tree *par_clauses)
incr = cp_parser_omp_for_incr (parser, real_decl);
else
incr = cp_parser_expression (parser, false, NULL);
+ if (CAN_HAVE_LOCATION_P (incr) && !EXPR_HAS_LOCATION (incr))
+ SET_EXPR_LOCATION (incr, input_location);
}
if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN))
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 7e1c46f77c3..f8ff1dfeed6 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -80,6 +80,9 @@ static tree cur_stmt_expr;
local variables. */
static struct pointer_map_t *local_specializations;
+/* True if we've recursed into fn_type_unification too many times. */
+static bool excessive_deduction_depth;
+
typedef struct GTY(()) spec_entry
{
tree tmpl;
@@ -116,8 +119,6 @@ enum template_base_result {
static void push_access_scope (tree);
static void pop_access_scope (tree);
-static void push_deduction_access_scope (tree);
-static void pop_deduction_access_scope (tree);
static bool resolve_overloaded_unification (tree, tree, tree, tree,
unification_kind_t, int,
bool);
@@ -147,7 +148,7 @@ static tree convert_template_argument (tree, tree, tree,
static int for_each_template_parm (tree, tree_fn_t, void*,
struct pointer_set_t*, bool);
static tree expand_template_argument_pack (tree);
-static tree build_template_parm_index (int, int, int, int, tree, tree);
+static tree build_template_parm_index (int, int, int, tree, tree);
static bool inline_needs_template_parms (tree);
static void push_inline_template_parms_recursive (tree, int);
static tree retrieve_local_specialization (tree);
@@ -171,7 +172,7 @@ static tree tsubst_template_parms (tree, tree, tsubst_flags_t);
static void regenerate_decl_from_template (tree, tree);
static tree most_specialized_class (tree, tree, tsubst_flags_t);
static tree tsubst_aggr_type (tree, tree, tsubst_flags_t, tree, int);
-static tree tsubst_arg_types (tree, tree, tsubst_flags_t, tree);
+static tree tsubst_arg_types (tree, tree, tree, tsubst_flags_t, tree);
static tree tsubst_function_type (tree, tree, tsubst_flags_t, tree);
static bool check_specialization_scope (void);
static tree process_partial_specialization (tree);
@@ -203,8 +204,6 @@ static tree listify_autos (tree, tree);
static tree template_parm_to_arg (tree t);
static bool arg_from_parm_pack_p (tree, tree);
static tree current_template_args (void);
-static tree fixup_template_type_parm_type (tree, int);
-static tree fixup_template_parm_index (tree, tree, int);
static tree tsubst_template_parm (tree, tree, tsubst_flags_t);
/* Make the current scope suitable for access checking when we are
@@ -739,7 +738,7 @@ end_explicit_instantiation (void)
processing_explicit_instantiation = false;
}
-/* An explicit specialization or partial specialization TMPL is being
+/* An explicit specialization or partial specialization of TMPL is being
declared. Check that the namespace in which the specialization is
occurring is permissible. Returns false iff it is invalid to
specialize TMPL in the current namespace. */
@@ -1411,7 +1410,7 @@ register_specialization (tree spec, tree tmpl, tree args, bool is_friend,
DECL_SOURCE_LOCATION (clone)
= DECL_SOURCE_LOCATION (fn);
}
- check_specialization_namespace (fn);
+ check_specialization_namespace (tmpl);
return fn;
}
@@ -1722,19 +1721,21 @@ print_candidates_1 (tree fns, bool more, const char **str)
}
else
{
+ tree cand = OVL_CURRENT (fn);
if (!*str)
{
/* Pick the prefix string. */
if (!more && !OVL_NEXT (fns))
{
- error ("candidate is: %+#D", OVL_CURRENT (fn));
+ inform (DECL_SOURCE_LOCATION (cand),
+ "candidate is: %#D", cand);
continue;
}
*str = _("candidates are:");
spaces = get_spaces (*str);
}
- error ("%s %+#D", *str, OVL_CURRENT (fn));
+ inform (DECL_SOURCE_LOCATION (cand), "%s %#D", *str, cand);
*str = spaces ? spaces : *str;
}
@@ -1806,6 +1807,16 @@ determine_specialization (tree template_id,
if (template_id == error_mark_node || decl == error_mark_node)
return error_mark_node;
+ /* We shouldn't be specializing a member template of an
+ unspecialized class template; we already gave an error in
+ check_specialization_scope, now avoid crashing. */
+ if (template_count && DECL_CLASS_SCOPE_P (decl)
+ && template_class_depth (DECL_CONTEXT (decl)) > 0)
+ {
+ gcc_assert (errorcount);
+ return error_mark_node;
+ }
+
fns = TREE_OPERAND (template_id, 0);
explicit_targs = TREE_OPERAND (template_id, 1);
@@ -1912,8 +1923,12 @@ determine_specialization (tree template_id,
}
/* See whether this function might be a specialization of this
- template. */
+ template. Suppress access control because we might be trying
+ to make this specialization a friend, and we have already done
+ access control for the declaration of the specialization. */
+ push_deferring_access_checks (dk_no_check);
targs = get_bindings (fn, decl, explicit_targs, /*check_ret=*/true);
+ pop_deferring_access_checks ();
if (!targs)
/* We cannot deduce template arguments that when used to
@@ -3407,14 +3422,12 @@ check_template_shadow (tree decl)
}
/* Return a new TEMPLATE_PARM_INDEX with the indicated INDEX, LEVEL,
- ORIG_LEVEL, DECL, and TYPE. NUM_SIBLINGS is the total number of
- template parameters. */
+ ORIG_LEVEL, DECL, and TYPE. */
static tree
build_template_parm_index (int index,
int level,
int orig_level,
- int num_siblings,
tree decl,
tree type)
{
@@ -3422,7 +3435,6 @@ build_template_parm_index (int index,
TEMPLATE_PARM_IDX (t) = index;
TEMPLATE_PARM_LEVEL (t) = level;
TEMPLATE_PARM_ORIG_LEVEL (t) = orig_level;
- TEMPLATE_PARM_NUM_SIBLINGS (t) = num_siblings;
TEMPLATE_PARM_DECL (t) = decl;
TREE_TYPE (t) = type;
TREE_CONSTANT (t) = TREE_CONSTANT (decl);
@@ -3488,7 +3500,6 @@ reduce_template_parm_level (tree index, tree type, int levels, tree args,
t = build_template_parm_index (TEMPLATE_PARM_IDX (index),
TEMPLATE_PARM_LEVEL (index) - levels,
TEMPLATE_PARM_ORIG_LEVEL (index),
- TEMPLATE_PARM_NUM_SIBLINGS (index),
decl, type);
TEMPLATE_PARM_DESCENDANTS (index) = t;
TEMPLATE_PARM_PARAMETER_PACK (t)
@@ -3516,8 +3527,7 @@ reduce_template_parm_level (tree index, tree type, int levels, tree args,
tree
process_template_parm (tree list, location_t parm_loc, tree parm,
- bool is_non_type, bool is_parameter_pack,
- unsigned num_template_parms)
+ bool is_non_type, bool is_parameter_pack)
{
tree decl = 0;
tree defval;
@@ -3592,7 +3602,6 @@ process_template_parm (tree list, location_t parm_loc, tree parm,
DECL_INITIAL (parm) = DECL_INITIAL (decl)
= build_template_parm_index (idx, processing_template_decl,
processing_template_decl,
- num_template_parms,
decl, TREE_TYPE (parm));
TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm))
@@ -3626,7 +3635,6 @@ process_template_parm (tree list, location_t parm_loc, tree parm,
TEMPLATE_TYPE_PARM_INDEX (t)
= build_template_parm_index (idx, processing_template_decl,
processing_template_decl,
- num_template_parms,
decl, TREE_TYPE (parm));
TEMPLATE_TYPE_PARAMETER_PACK (t) = is_parameter_pack;
TYPE_CANONICAL (t) = canonical_type_parameter (t);
@@ -3666,305 +3674,6 @@ end_template_parm_list (tree parms)
return saved_parmlist;
}
-/* Create a new type almost identical to TYPE but which has the
- following differences:
-
- 1/ T has a new TEMPLATE_PARM_INDEX that carries the new number of
- template sibling parameters of T.
-
- 2/ T has a new canonical type that matches the new number
- of sibling parms.
-
- 3/ From now on, T is going to be what lookups referring to the
- name of TYPE will return. No lookup should return TYPE anymore.
-
- NUM_PARMS is the new number of sibling parms TYPE belongs to.
-
- This is a subroutine of fixup_template_parms. */
-
-static tree
-fixup_template_type_parm_type (tree type, int num_parms)
-{
- tree orig_idx = TEMPLATE_TYPE_PARM_INDEX (type), idx;
- tree t;
- /* This is the decl which name is inserted into the symbol table for
- the template parm type. So whenever we lookup the type name, this
- is the DECL we get. */
- tree decl;
-
- /* Do not fix up the type twice. */
- if (orig_idx && TEMPLATE_PARM_NUM_SIBLINGS (orig_idx) != 0)
- return type;
-
- t = copy_type (type);
- decl = TYPE_NAME (t);
-
- TYPE_MAIN_VARIANT (t) = t;
- TYPE_NEXT_VARIANT (t)= NULL_TREE;
- TYPE_POINTER_TO (t) = 0;
- TYPE_REFERENCE_TO (t) = 0;
-
- idx = build_template_parm_index (TEMPLATE_PARM_IDX (orig_idx),
- TEMPLATE_PARM_LEVEL (orig_idx),
- TEMPLATE_PARM_ORIG_LEVEL (orig_idx),
- num_parms,
- decl, t);
- TEMPLATE_PARM_DESCENDANTS (idx) = TEMPLATE_PARM_DESCENDANTS (orig_idx);
- TEMPLATE_PARM_PARAMETER_PACK (idx) = TEMPLATE_PARM_PARAMETER_PACK (orig_idx);
- TEMPLATE_TYPE_PARM_INDEX (t) = idx;
-
- TYPE_STUB_DECL (t) = decl;
- TEMPLATE_TYPE_DECL (t) = decl;
- if (TREE_CODE (type) == TEMPLATE_TEMPLATE_PARM)
- TREE_TYPE (DECL_TEMPLATE_RESULT (decl)) = t;
-
- /* Update the type associated to the type name stored in the symbol
- table. Now, whenever the type name is looked up, the resulting
- type is properly fixed up. */
- TREE_TYPE (decl) = t;
-
- TYPE_CANONICAL (t) = canonical_type_parameter (t);
-
- return t;
-}
-
-/* Create and return a new TEMPLATE_PARM_INDEX that is almost
- identical to I, but that is fixed up as to:
-
- 1/ carry the number of sibling parms (NUM_PARMS) of the template
- parm represented by I.
-
- 2/ replace all references to template parm types declared before I
- (in the same template parm list as I) by references to template
- parm types contained in ARGS. ARGS should contain the list of
- template parms that have been fixed up so far, in a form suitable
- to be passed to tsubst.
-
- This is a subroutine of fixup_template_parms. */
-
-static tree
-fixup_template_parm_index (tree i, tree args, int num_parms)
-{
- tree index, decl, type;
-
- if (i == NULL_TREE
- || TREE_CODE (i) != TEMPLATE_PARM_INDEX
- /* Do not fix up the index twice. */
- || (TEMPLATE_PARM_NUM_SIBLINGS (i) != 0))
- return i;
-
- decl = TEMPLATE_PARM_DECL (i);
- type = TREE_TYPE (decl);
-
- index = build_template_parm_index (TEMPLATE_PARM_IDX (i),
- TEMPLATE_PARM_LEVEL (i),
- TEMPLATE_PARM_ORIG_LEVEL (i),
- num_parms,
- decl, type);
-
- TEMPLATE_PARM_DESCENDANTS (index) = TEMPLATE_PARM_DESCENDANTS (i);
- TEMPLATE_PARM_PARAMETER_PACK (index) = TEMPLATE_PARM_PARAMETER_PACK (i);
-
- type = tsubst (type, args, tf_none, NULL_TREE);
-
- TREE_TYPE (decl) = type;
- TREE_TYPE (index) = type;
-
- return index;
-}
-
-/*
- This is a subroutine of fixup_template_parms.
-
- It computes the canonical type of the type of the template
- parameter PARM_DESC and update all references to that type so that
- they use the newly computed canonical type. No access check is
- performed during the fixup. PARM_DESC is a TREE_LIST which
- TREE_VALUE is the template parameter and its TREE_PURPOSE is the
- default argument of the template parm if any. IDX is the index of
- the template parameter, starting at 0. NUM_PARMS is the number of
- template parameters in the set PARM_DESC belongs to. ARGLIST is a
- TREE_VEC containing the full set of template parameters in a form
- suitable to be passed to substs functions as their ARGS
- argument. This is what current_template_args returns for a given
- template. The innermost vector of args in ARGLIST is the set of
- template parms that have been fixed up so far. This function adds
- the fixed up parameter into that vector. */
-
-static void
-fixup_template_parm (tree parm_desc,
- int idx,
- int num_parms,
- tree arglist)
-{
- tree parm = TREE_VALUE (parm_desc);
- tree fixedup_args = INNERMOST_TEMPLATE_ARGS (arglist);
-
- push_deferring_access_checks (dk_no_check);
-
- if (TREE_CODE (parm) == TYPE_DECL)
- {
- /* PARM is a template type parameter. Fix up its type, add
- the fixed-up template parm to the vector of fixed-up
- template parms so far, and substitute the fixed-up
- template parms into the default argument of this
- parameter. */
- tree t =
- fixup_template_type_parm_type (TREE_TYPE (parm), num_parms);
- TREE_TYPE (parm) = t;
-
- TREE_VEC_ELT (fixedup_args, idx) = template_parm_to_arg (parm_desc);
- }
- else if (TREE_CODE (parm) == TEMPLATE_DECL)
- {
- /* PARM is a template template parameter. This is going to
- be interesting. */
- tree tparms, targs, innermost_args, t;
- int j;
-
- /* First, fix up the parms of the template template parm
- because the parms are involved in defining the new canonical
- type of the template template parm. */
-
- /* So we need to substitute the template parm types that have
- been fixed up so far into the template parms of this template
- template parm. E.g, consider this:
-
- template<class T, template<T u> class TT> class S;
-
- In this case we want to substitute T into the
- template parameters of TT.
-
- So let's walk the template parms of PARM here, and
- tsubst ARGLIST into into each of the template
- parms. */
-
- /* For this substitution we need to build the full set of
- template parameters and use that as arguments for the
- tsubsting function. */
- tparms = INNERMOST_TEMPLATE_PARMS (DECL_TEMPLATE_PARMS (parm));
-
- /* This will contain the innermost parms of PARM into which
- we have substituted so far. */
- innermost_args = make_tree_vec (TREE_VEC_LENGTH (tparms));
- targs = add_to_template_args (arglist, innermost_args);
- for (j = 0; j < TREE_VEC_LENGTH (tparms); ++j)
- {
- tree parameter;
-
- parameter = TREE_VEC_ELT (tparms, j);
-
- /* INNERMOST_ARGS needs to have at least the same number
- of elements as the index PARAMETER, ortherwise
- tsubsting into PARAMETER will result in partially
- instantiating it, reducing its tempate parm
- level. Let's tactically fill INNERMOST_ARGS for that
- purpose. */
- TREE_VEC_ELT (innermost_args, j) =
- template_parm_to_arg (parameter);
-
- fixup_template_parm (parameter, j,
- TREE_VEC_LENGTH (tparms),
- targs);
- }
-
- /* Now fix up the type of the template template parm. */
-
- t = fixup_template_type_parm_type (TREE_TYPE (parm), num_parms);
- TREE_TYPE (parm) = t;
-
- TREE_VEC_ELT (fixedup_args, idx) =
- template_parm_to_arg (parm_desc);
- }
- else if (TREE_CODE (parm) == PARM_DECL)
- {
- /* PARM is a non-type template parameter. We need to:
-
- * Fix up its TEMPLATE_PARM_INDEX to make it carry the
- proper number of sibling parameters.
-
- * Make lookups of the template parameter return a reference
- to the fixed-up index. No lookup should return references
- to the former index anymore.
-
- * Substitute the template parms that got fixed up so far
-
- * into the type of PARM. */
-
- tree index = DECL_INITIAL (parm);
-
- /* PUSHED_DECL is the decl added to the symbol table with
- the name of the parameter. E,g:
-
- template<class T, T u> //#0
- auto my_function(T t) -> decltype(u); //#1
-
- Here, when looking up u at //#1, we get the decl of u
- resulting from the declaration in #0. This is what
- PUSHED_DECL is. We need to replace the reference to the
- old TEMPLATE_PARM_INDEX carried by PUSHED_DECL by the
- fixed-up TEMPLATE_PARM_INDEX. */
- tree pushed_decl = TEMPLATE_PARM_DECL (index);
-
- /* Let's fix up the TEMPLATE_PARM_INDEX then. Note that we must
- fixup the type of PUSHED_DECL as well and luckily
- fixup_template_parm_index does it for us too. */
- tree fixed_up_index =
- fixup_template_parm_index (index, arglist, num_parms);
-
- DECL_INITIAL (pushed_decl) = DECL_INITIAL (parm) = fixed_up_index;
-
- /* Add this fixed up PARM to the template parms we've fixed
- up so far and use that to substitute the fixed-up
- template parms into the type of PARM. */
- TREE_VEC_ELT (fixedup_args, idx) =
- template_parm_to_arg (parm_desc);
- TREE_TYPE (parm) = tsubst (TREE_TYPE (parm), arglist,
- tf_none, NULL_TREE);
- }
-
- TREE_PURPOSE (parm_desc) =
- tsubst_template_arg (TREE_PURPOSE (parm_desc),
- arglist, tf_none, parm);
-
- pop_deferring_access_checks ();
-}
-
-/* Walk the current template parms and properly compute the canonical
- types of the dependent types created during
- cp_parser_template_parameter_list. */
-
-void
-fixup_template_parms (void)
-{
- tree arglist;
- tree parameter_vec;
- tree fixedup_args;
- int i, num_parms;
-
- parameter_vec = INNERMOST_TEMPLATE_PARMS (current_template_parms);
- if (parameter_vec == NULL_TREE)
- return;
-
- num_parms = TREE_VEC_LENGTH (parameter_vec);
-
- /* This vector contains the current innermost template parms that
- have been fixed up so far. The form of FIXEDUP_ARGS is suitable
- to be passed to tsubst* functions as their ARGS argument. */
- fixedup_args = make_tree_vec (num_parms);
-
- /* This vector contains the full set of template parms in a form
- suitable to be passed to substs functions as their ARGS
- argument. */
- arglist = current_template_args ();
- arglist = add_outermost_template_args (arglist, fixedup_args);
-
- /* Let's do the proper fixup now. */
- for (i = 0; i < num_parms; ++i)
- fixup_template_parm (TREE_VEC_ELT (parameter_vec, i),
- i, num_parms, arglist);
-}
-
/* end_template_decl is called after a template declaration is seen. */
void
@@ -4068,34 +3777,13 @@ arg_from_parm_pack_p (tree arg_pack, tree parm_pack)
{
tree expansion = TREE_VEC_ELT (ARGUMENT_PACK_ARGS (arg_pack), 0);
tree pattern = PACK_EXPANSION_PATTERN (expansion);
- /* So we have an argument_pack<P...>. We want to test if P
- is actually PARM_PACK. We will not use cp_tree_equal to
- test P and PARM_PACK because during type fixup (by
- fixup_template_parm) P can be a pre-fixup version of a
- type and PARM_PACK be its post-fixup version.
- cp_tree_equal would consider them as different even
- though we would want to consider them compatible for our
- precise purpose here.
-
- Thus we are going to consider that P and PARM_PACK are
- compatible if they have the same DECL. */
- if ((/* If ARG_PACK is a type parameter pack named by the
- same DECL as parm_pack ... */
- (TYPE_P (pattern)
- && TYPE_P (parm_pack)
- && TYPE_NAME (pattern) == TYPE_NAME (parm_pack))
- /* ... or if PARM_PACK is a non-type parameter named by the
- same DECL as ARG_PACK. Note that PARM_PACK being a
- non-type parameter means it's either a PARM_DECL or a
- TEMPLATE_PARM_INDEX. */
- || (TREE_CODE (pattern) == TEMPLATE_PARM_INDEX
- && ((TREE_CODE (parm_pack) == PARM_DECL
- && (TEMPLATE_PARM_DECL (pattern)
- == TEMPLATE_PARM_DECL (DECL_INITIAL (parm_pack))))
- || (TREE_CODE (parm_pack) == TEMPLATE_PARM_INDEX
- && (TEMPLATE_PARM_DECL (pattern)
- == TEMPLATE_PARM_DECL (parm_pack))))))
- && template_parameter_pack_p (pattern))
+ if ((TYPE_P (pattern) && same_type_p (pattern, parm_pack))
+ || (!TYPE_P (pattern) && cp_tree_equal (parm_pack, pattern)))
+ /* The argument pack that the parameter maps to is just an
+ expansion of the parameter itself, such as one would
+ find in the implicit typedef of a class inside the
+ class itself. Consider this parameter "unsubstituted",
+ so that we will maintain the outer pack expansion. */
return true;
}
return false;
@@ -4539,10 +4227,9 @@ process_partial_specialization (tree decl)
/* Check that a template declaration's use of default arguments and
parameter packs is not invalid. Here, PARMS are the template
- parameters. IS_PRIMARY is nonzero if DECL is the thing declared by
- a primary template. IS_PARTIAL is nonzero if DECL is a partial
+ parameters. IS_PRIMARY is true if DECL is the thing declared by
+ a primary template. IS_PARTIAL is true if DECL is a partial
specialization.
-
IS_FRIEND_DECL is nonzero if DECL is a friend function template
declaration (but not a definition); 1 indicates a declaration, 2
@@ -4552,8 +4239,8 @@ process_partial_specialization (tree decl)
Returns TRUE if there were no errors found, FALSE otherwise. */
bool
-check_default_tmpl_args (tree decl, tree parms, int is_primary,
- int is_partial, int is_friend_decl)
+check_default_tmpl_args (tree decl, tree parms, bool is_primary,
+ bool is_partial, int is_friend_decl)
{
const char *msg;
int last_level_to_check;
@@ -4596,7 +4283,8 @@ check_default_tmpl_args (tree decl, tree parms, int is_primary,
/* Core issue 226 (C++0x only): the following only applies to class
templates. */
- if ((cxx_dialect == cxx98) || TREE_CODE (decl) != FUNCTION_DECL)
+ if (is_primary
+ && ((cxx_dialect == cxx98) || TREE_CODE (decl) != FUNCTION_DECL))
{
/* [temp.param]
@@ -4628,8 +4316,7 @@ check_default_tmpl_args (tree decl, tree parms, int is_primary,
TREE_PURPOSE (parm) = error_mark_node;
no_errors = false;
}
- else if (is_primary
- && !is_partial
+ else if (!is_partial
&& !is_friend_decl
/* Don't complain about an enclosing partial
specialization. */
@@ -4785,8 +4472,8 @@ push_template_decl_real (tree decl, bool is_friend)
tree args;
tree info;
tree ctx;
- int primary;
- int is_partial;
+ bool is_primary;
+ bool is_partial;
int new_template_p = 0;
/* True if the template is a member template, in the sense of
[temp.mem]. */
@@ -4828,11 +4515,11 @@ push_template_decl_real (tree decl, bool is_friend)
/* A friend template that specifies a class context, i.e.
template <typename T> friend void A<T>::f();
is not primary. */
- primary = 0;
+ is_primary = false;
else
- primary = template_parm_scope_p ();
+ is_primary = template_parm_scope_p ();
- if (primary)
+ if (is_primary)
{
if (DECL_CLASS_SCOPE_P (decl))
member_template_p = true;
@@ -4885,7 +4572,7 @@ push_template_decl_real (tree decl, bool is_friend)
/* Check to see that the rules regarding the use of default
arguments are not being violated. */
check_default_tmpl_args (decl, current_template_parms,
- primary, is_partial, /*is_friend_decl=*/0);
+ is_primary, is_partial, /*is_friend_decl=*/0);
/* Ensure that there are no parameter packs in the type of this
declaration that have not been expanded. */
@@ -5102,7 +4789,7 @@ template arguments to %qD do not match original template %qD",
}
}
- if (primary)
+ if (is_primary)
{
tree parms = DECL_TEMPLATE_PARMS (tmpl);
int i;
@@ -5144,7 +4831,7 @@ template arguments to %qD do not match original template %qD",
SET_TYPE_TEMPLATE_INFO (TREE_TYPE (tmpl), info);
else
{
- if (primary && !DECL_LANG_SPECIFIC (decl))
+ if (is_primary && !DECL_LANG_SPECIFIC (decl))
retrofit_lang_decl (decl);
if (DECL_LANG_SPECIFIC (decl))
DECL_TEMPLATE_INFO (decl) = info;
@@ -6470,7 +6157,7 @@ convert_template_argument (tree parm,
orig_arg = make_typename_type (TREE_OPERAND (arg, 0),
TREE_OPERAND (arg, 1),
typename_type,
- complain & tf_error);
+ complain);
arg = orig_arg;
is_type = 1;
}
@@ -6600,7 +6287,7 @@ convert_template_argument (tree parm,
argument specification is valid. */
val = convert_nontype_argument (t, orig_arg, complain);
else
- val = orig_arg;
+ val = strip_typedefs_expr (orig_arg);
if (val == NULL_TREE)
val = error_mark_node;
@@ -8027,6 +7714,23 @@ uses_template_parms (tree t)
return dependent_p;
}
+/* Returns true iff current_function_decl is an incompletely instantiated
+ template. Useful instead of processing_template_decl because the latter
+ is set to 0 during fold_non_dependent_expr. */
+
+bool
+in_template_function (void)
+{
+ tree fn = current_function_decl;
+ bool ret;
+ ++processing_template_decl;
+ ret = (fn && DECL_LANG_SPECIFIC (fn)
+ && DECL_TEMPLATE_INFO (fn)
+ && any_dependent_template_arguments_p (DECL_TI_ARGS (fn)));
+ --processing_template_decl;
+ return ret;
+}
+
/* Returns true if T depends on any template parameter with level LEVEL. */
int
@@ -8068,9 +7772,8 @@ limit_bad_template_recursion (tree decl)
static int tinst_depth;
extern int max_tinst_depth;
-#ifdef GATHER_STATISTICS
int depth_reached;
-#endif
+
static GTY(()) struct tinst_level *last_error_tinst_level;
/* We're starting to instantiate D; record the template instantiation context
@@ -8113,10 +7816,8 @@ push_tinst_level (tree d)
current_tinst_level = new_level;
++tinst_depth;
-#ifdef GATHER_STATISTICS
- if (tinst_depth > depth_reached)
+ if (GATHER_STATISTICS && (tinst_depth > depth_reached))
depth_reached = tinst_depth;
-#endif
return 1;
}
@@ -8648,7 +8349,7 @@ apply_late_template_attributes (tree *decl_p, tree attributes, int attr_flags,
/* Perform (or defer) access check for typedefs that were referenced
from within the template TMPL code.
- This is a subroutine of instantiate_template and instantiate_class_template.
+ This is a subroutine of instantiate_decl and instantiate_class_template.
TMPL is the template to consider and TARGS is the list of arguments of
that template. */
@@ -8684,7 +8385,8 @@ perform_typedefs_access_check (tree tmpl, tree targs)
of the use of the typedef. */
input_location = iter->locus;
perform_or_defer_access_check (TYPE_BINFO (type_scope),
- type_decl, type_decl);
+ type_decl, type_decl,
+ tf_warning_or_error);
}
input_location = saved_location;
}
@@ -9191,7 +8893,7 @@ instantiate_class_template_1 (tree type)
added to the template at parsing time. Let's get those and perform
the access checks then. */
perform_typedefs_access_check (pattern, args);
- perform_deferred_access_checks ();
+ perform_deferred_access_checks (tf_warning_or_error);
pop_nested_class ();
maximum_field_alignment = saved_maximum_field_alignment;
if (!fn_context)
@@ -9914,6 +9616,7 @@ tsubst_default_argument (tree fn, tree type, tree arg)
{
tree saved_class_ptr = NULL_TREE;
tree saved_class_ref = NULL_TREE;
+ int errs = errorcount + sorrycount;
/* This can happen in invalid code. */
if (TREE_CODE (arg) == DEFAULT_ARG)
@@ -9961,6 +9664,10 @@ tsubst_default_argument (tree fn, tree type, tree arg)
cp_function_chain->x_current_class_ref = saved_class_ref;
}
+ if (errorcount+sorrycount > errs)
+ inform (input_location,
+ " when instantiating default argument for call to %D", fn);
+
/* Make sure the default argument is reasonable. */
arg = check_default_argument (type, arg);
@@ -10263,6 +9970,11 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
if (type == error_mark_node)
RETURN (error_mark_node);
+ /* If we hit excessive deduction depth, the type is bogus even if
+ it isn't error_mark_node, so don't build a decl. */
+ if (excessive_deduction_depth)
+ RETURN (error_mark_node);
+
/* We do NOT check for matching decls pushed separately at this
point, as they may not represent instantiations of this
template, and in any case are considered separate under the
@@ -10549,8 +10261,12 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
break;
case USING_DECL:
- /* We reach here only for member using decls. */
- if (DECL_DEPENDENT_P (t))
+ /* We reach here only for member using decls. We also need to check
+ uses_template_parms because DECL_DEPENDENT_P is not set for a
+ using-declaration that designates a member of the current
+ instantiation (c++/53549). */
+ if (DECL_DEPENDENT_P (t)
+ || uses_template_parms (USING_DECL_SCOPE (t)))
{
r = do_class_using_decl
(tsubst_copy (USING_DECL_SCOPE (t), args, complain, in_decl),
@@ -10812,11 +10528,14 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
return r;
}
-/* Substitute into the ARG_TYPES of a function type. */
+/* Substitute into the ARG_TYPES of a function type.
+ If END is a TREE_CHAIN, leave it and any following types
+ un-substituted. */
static tree
tsubst_arg_types (tree arg_types,
tree args,
+ tree end,
tsubst_flags_t complain,
tree in_decl)
{
@@ -10826,11 +10545,11 @@ tsubst_arg_types (tree arg_types,
tree expanded_args = NULL_TREE;
tree default_arg;
- if (!arg_types || arg_types == void_list_node)
+ if (!arg_types || arg_types == void_list_node || arg_types == end)
return arg_types;
remaining_arg_types = tsubst_arg_types (TREE_CHAIN (arg_types),
- args, complain, in_decl);
+ args, end, complain, in_decl);
if (remaining_arg_types == error_mark_node)
return error_mark_node;
@@ -10955,7 +10674,7 @@ tsubst_function_type (tree t,
}
/* Substitute the argument types. */
- arg_types = tsubst_arg_types (TYPE_ARG_TYPES (t), args,
+ arg_types = tsubst_arg_types (TYPE_ARG_TYPES (t), args, NULL_TREE,
complain, in_decl);
if (arg_types == error_mark_node)
return error_mark_node;
@@ -11711,7 +11430,7 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
}
f = make_typename_type (ctx, f, typename_type,
- (complain & tf_error) | tf_keep_type_decl);
+ complain | tf_keep_type_decl);
if (f == error_mark_node)
return f;
if (TREE_CODE (f) == TYPE_DECL)
@@ -12128,7 +11847,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
When we instantiate f<7>::S::g(), say, lookup_name is not
clever enough to find f<7>::a. */
enum_type
- = tsubst_aggr_type (TREE_TYPE (t), args, complain, in_decl,
+ = tsubst_aggr_type (DECL_CONTEXT (t), args, complain, in_decl,
/*entering_scope=*/0);
for (v = TYPE_VALUES (enum_type);
@@ -12794,15 +12513,19 @@ static tree
tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
bool integral_constant_expression_p)
{
+#define RETURN(EXP) do { r = (EXP); goto out; } while(0)
#define RECUR(NODE) \
tsubst_expr ((NODE), args, complain, in_decl, \
integral_constant_expression_p)
tree stmt, tmp;
+ tree r;
+ location_t loc;
if (t == NULL_TREE || t == error_mark_node)
return t;
+ loc = input_location;
if (EXPR_HAS_LOCATION (t))
input_location = EXPR_LOCATION (t);
if (STATEMENT_CODE_P (TREE_CODE (t)))
@@ -13314,42 +13037,46 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
stmt = build_transaction_expr (EXPR_LOCATION (t),
RECUR (TRANSACTION_EXPR_BODY (t)),
flags, NULL_TREE);
- return stmt;
+ RETURN (stmt);
}
}
break;
case MUST_NOT_THROW_EXPR:
- return build_must_not_throw_expr (RECUR (TREE_OPERAND (t, 0)),
- RECUR (MUST_NOT_THROW_COND (t)));
+ RETURN (build_must_not_throw_expr (RECUR (TREE_OPERAND (t, 0)),
+ RECUR (MUST_NOT_THROW_COND (t))));
case EXPR_PACK_EXPANSION:
error ("invalid use of pack expansion expression");
- return error_mark_node;
+ RETURN (error_mark_node);
case NONTYPE_ARGUMENT_PACK:
error ("use %<...%> to expand argument pack");
- return error_mark_node;
+ RETURN (error_mark_node);
case COMPOUND_EXPR:
tmp = RECUR (TREE_OPERAND (t, 0));
if (tmp == NULL_TREE)
/* If the first operand was a statement, we're done with it. */
- return RECUR (TREE_OPERAND (t, 1));
- return build_x_compound_expr (EXPR_LOCATION (t), tmp,
+ RETURN (RECUR (TREE_OPERAND (t, 1)));
+ RETURN (build_x_compound_expr (EXPR_LOCATION (t), tmp,
RECUR (TREE_OPERAND (t, 1)),
- complain);
+ complain));
default:
gcc_assert (!STATEMENT_CODE_P (TREE_CODE (t)));
- return tsubst_copy_and_build (t, args, complain, in_decl,
+ RETURN (tsubst_copy_and_build (t, args, complain, in_decl,
/*function_p=*/false,
- integral_constant_expression_p);
+ integral_constant_expression_p));
}
- return NULL_TREE;
+ RETURN (NULL_TREE);
+ out:
+ input_location = loc;
+ return r;
#undef RECUR
+#undef RETURN
}
/* T is a postfix-expression that is not being used in a function
@@ -13382,16 +13109,22 @@ tsubst_copy_and_build (tree t,
bool function_p,
bool integral_constant_expression_p)
{
+#define RETURN(EXP) do { retval = (EXP); goto out; } while(0)
#define RECUR(NODE) \
tsubst_copy_and_build (NODE, args, complain, in_decl, \
/*function_p=*/false, \
integral_constant_expression_p)
- tree op1;
+ tree retval, op1;
+ location_t loc;
if (t == NULL_TREE || t == error_mark_node)
return t;
+ loc = input_location;
+ if (EXPR_HAS_LOCATION (t))
+ input_location = EXPR_LOCATION (t);
+
switch (TREE_CODE (t))
{
case USING_DECL:
@@ -13437,7 +13170,7 @@ tsubst_copy_and_build (tree t,
unqualified_name_lookup_error (decl);
decl = error_mark_node;
}
- return decl;
+ RETURN (decl);
}
case TEMPLATE_ID_EXPR:
@@ -13459,10 +13192,10 @@ tsubst_copy_and_build (tree t,
templ = lookup_template_function (templ, targs);
if (object)
- return build3 (COMPONENT_REF, TREE_TYPE (templ),
- object, templ, NULL_TREE);
+ RETURN (build3 (COMPONENT_REF, TREE_TYPE (templ),
+ object, templ, NULL_TREE));
else
- return baselink_for_fns (templ);
+ RETURN (baselink_for_fns (templ));
}
case INDIRECT_REF:
@@ -13479,13 +13212,13 @@ tsubst_copy_and_build (tree t,
}
else
r = build_x_indirect_ref (input_location, r, RO_UNARY_STAR, complain);
- return r;
+ RETURN (r);
}
case NOP_EXPR:
- return build_nop
+ RETURN (build_nop
(tsubst (TREE_TYPE (t), args, complain, in_decl),
- RECUR (TREE_OPERAND (t, 0)));
+ RECUR (TREE_OPERAND (t, 0))));
case IMPLICIT_CONV_EXPR:
{
@@ -13494,15 +13227,15 @@ tsubst_copy_and_build (tree t,
int flags = LOOKUP_IMPLICIT;
if (IMPLICIT_CONV_EXPR_DIRECT_INIT (t))
flags = LOOKUP_NORMAL;
- return perform_implicit_conversion_flags (type, expr, complain,
- flags);
+ RETURN (perform_implicit_conversion_flags (type, expr, complain,
+ flags));
}
case CONVERT_EXPR:
- return build1
+ RETURN (build1
(CONVERT_EXPR,
tsubst (TREE_TYPE (t), args, complain, in_decl),
- RECUR (TREE_OPERAND (t, 0)));
+ RECUR (TREE_OPERAND (t, 0))));
case CAST_EXPR:
case REINTERPRET_CAST_EXPR:
@@ -13520,7 +13253,7 @@ tsubst_copy_and_build (tree t,
if (complain & tf_error)
error ("a cast to a type other than an integral or "
"enumeration type cannot appear in a constant-expression");
- return error_mark_node;
+ RETURN (error_mark_node);
}
op = RECUR (TREE_OPERAND (t, 0));
@@ -13548,14 +13281,14 @@ tsubst_copy_and_build (tree t,
}
--c_inhibit_evaluation_warnings;
- return r;
+ RETURN (r);
}
case POSTDECREMENT_EXPR:
case POSTINCREMENT_EXPR:
op1 = tsubst_non_call_postfix_expression (TREE_OPERAND (t, 0),
args, complain, in_decl);
- return build_x_unary_op (input_location, TREE_CODE (t), op1, complain);
+ RETURN (build_x_unary_op (input_location, TREE_CODE (t), op1, complain));
case PREDECREMENT_EXPR:
case PREINCREMENT_EXPR:
@@ -13566,25 +13299,25 @@ tsubst_copy_and_build (tree t,
case UNARY_PLUS_EXPR: /* Unary + */
case REALPART_EXPR:
case IMAGPART_EXPR:
- return build_x_unary_op (input_location, TREE_CODE (t),
- RECUR (TREE_OPERAND (t, 0)), complain);
+ RETURN (build_x_unary_op (input_location, TREE_CODE (t),
+ RECUR (TREE_OPERAND (t, 0)), complain));
case FIX_TRUNC_EXPR:
- return cp_build_unary_op (FIX_TRUNC_EXPR, RECUR (TREE_OPERAND (t, 0)),
- 0, complain);
+ RETURN (cp_build_unary_op (FIX_TRUNC_EXPR, RECUR (TREE_OPERAND (t, 0)),
+ 0, complain));
case ADDR_EXPR:
op1 = TREE_OPERAND (t, 0);
if (TREE_CODE (op1) == LABEL_DECL)
- return finish_label_address_expr (DECL_NAME (op1),
- EXPR_LOCATION (op1));
+ RETURN (finish_label_address_expr (DECL_NAME (op1),
+ EXPR_LOCATION (op1)));
if (TREE_CODE (op1) == SCOPE_REF)
op1 = tsubst_qualified_id (op1, args, complain, in_decl,
/*done=*/true, /*address_p=*/true);
else
op1 = tsubst_non_call_postfix_expression (op1, args, complain,
in_decl);
- return build_x_unary_op (input_location, ADDR_EXPR, op1, complain);
+ RETURN (build_x_unary_op (input_location, ADDR_EXPR, op1, complain));
case PLUS_EXPR:
case MINUS_EXPR:
@@ -13639,21 +13372,21 @@ tsubst_copy_and_build (tree t,
--c_inhibit_evaluation_warnings;
- return r;
+ RETURN (r);
}
case SCOPE_REF:
- return tsubst_qualified_id (t, args, complain, in_decl, /*done=*/true,
- /*address_p=*/false);
+ RETURN (tsubst_qualified_id (t, args, complain, in_decl, /*done=*/true,
+ /*address_p=*/false));
case ARRAY_REF:
op1 = tsubst_non_call_postfix_expression (TREE_OPERAND (t, 0),
args, complain, in_decl);
- return build_x_array_ref (EXPR_LOCATION (t), op1,
- RECUR (TREE_OPERAND (t, 1)), complain);
+ RETURN (build_x_array_ref (EXPR_LOCATION (t), op1,
+ RECUR (TREE_OPERAND (t, 1)), complain));
case SIZEOF_EXPR:
if (PACK_EXPANSION_P (TREE_OPERAND (t, 0)))
- return tsubst_copy (t, args, complain, in_decl);
+ RETURN (tsubst_copy (t, args, complain, in_decl));
/* Fall through */
case ALIGNOF_EXPR:
@@ -13677,11 +13410,11 @@ tsubst_copy_and_build (tree t,
--c_inhibit_evaluation_warnings;
}
if (TYPE_P (op1))
- return cxx_sizeof_or_alignof_type (op1, TREE_CODE (t),
- complain & tf_error);
+ RETURN (cxx_sizeof_or_alignof_type (op1, TREE_CODE (t),
+ complain & tf_error));
else
- return cxx_sizeof_or_alignof_expr (op1, TREE_CODE (t),
- complain & tf_error);
+ RETURN (cxx_sizeof_or_alignof_expr (op1, TREE_CODE (t),
+ complain & tf_error));
case AT_ENCODE_EXPR:
{
@@ -13693,7 +13426,7 @@ tsubst_copy_and_build (tree t,
/*integral_constant_expression_p=*/false);
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
- return objc_build_encode_expr (op1);
+ RETURN (objc_build_encode_expr (op1));
}
case NOEXCEPT_EXPR:
@@ -13705,7 +13438,7 @@ tsubst_copy_and_build (tree t,
/*integral_constant_expression_p=*/false);
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
- return finish_noexcept_expr (op1, complain);
+ RETURN (finish_noexcept_expr (op1, complain));
case MODOP_EXPR:
{
@@ -13723,7 +13456,7 @@ tsubst_copy_and_build (tree t,
here. */
if (TREE_NO_WARNING (t))
TREE_NO_WARNING (r) = TREE_NO_WARNING (t);
- return r;
+ RETURN (r);
}
case ARROW_EXPR:
@@ -13732,7 +13465,7 @@ tsubst_copy_and_build (tree t,
/* Remember that there was a reference to this entity. */
if (DECL_P (op1))
mark_used (op1);
- return build_x_arrow (input_location, op1, complain);
+ RETURN (build_x_arrow (input_location, op1, complain));
case NEW_EXPR:
{
@@ -13783,22 +13516,22 @@ tsubst_copy_and_build (tree t,
if (init_vec != NULL)
release_tree_vector (init_vec);
- return ret;
+ RETURN (ret);
}
case DELETE_EXPR:
- return delete_sanity
+ RETURN (delete_sanity
(RECUR (TREE_OPERAND (t, 0)),
RECUR (TREE_OPERAND (t, 1)),
DELETE_EXPR_USE_VEC (t),
DELETE_EXPR_USE_GLOBAL (t),
- complain);
+ complain));
case COMPOUND_EXPR:
- return build_x_compound_expr (EXPR_LOCATION (t),
+ RETURN (build_x_compound_expr (EXPR_LOCATION (t),
RECUR (TREE_OPERAND (t, 0)),
RECUR (TREE_OPERAND (t, 1)),
- complain);
+ complain));
case CALL_EXPR:
{
@@ -13920,7 +13653,7 @@ tsubst_copy_and_build (tree t,
(function, args, complain, in_decl, true,
integral_constant_expression_p));
if (unq == error_mark_node)
- return error_mark_node;
+ RETURN (error_mark_node);
if (unq != function)
{
@@ -13962,7 +13695,7 @@ tsubst_copy_and_build (tree t,
{
unqualified_name_lookup_error (function);
release_tree_vector (call_args);
- return error_mark_node;
+ RETURN (error_mark_node);
}
}
@@ -14005,7 +13738,7 @@ tsubst_copy_and_build (tree t,
release_tree_vector (call_args);
- return ret;
+ RETURN (ret);
}
case COND_EXPR:
@@ -14036,22 +13769,22 @@ tsubst_copy_and_build (tree t,
exp2 = RECUR (TREE_OPERAND (t, 2));
}
- return build_x_conditional_expr (EXPR_LOCATION (t),
- cond, exp1, exp2, complain);
+ RETURN (build_x_conditional_expr (EXPR_LOCATION (t),
+ cond, exp1, exp2, complain));
}
case PSEUDO_DTOR_EXPR:
- return finish_pseudo_destructor_expr
+ RETURN (finish_pseudo_destructor_expr
(RECUR (TREE_OPERAND (t, 0)),
RECUR (TREE_OPERAND (t, 1)),
- tsubst (TREE_OPERAND (t, 2), args, complain, in_decl));
+ tsubst (TREE_OPERAND (t, 2), args, complain, in_decl)));
case TREE_LIST:
{
tree purpose, value, chain;
if (t == void_list_node)
- return t;
+ RETURN (t);
if ((TREE_PURPOSE (t) && PACK_EXPANSION_P (TREE_PURPOSE (t)))
|| (TREE_VALUE (t) && PACK_EXPANSION_P (TREE_VALUE (t))))
@@ -14087,14 +13820,14 @@ tsubst_copy_and_build (tree t,
else
{
/* Since we only performed a partial substitution into
- the argument pack, we only return a single list
+ the argument pack, we only RETURN (a single list
node. */
if (purposevec == TREE_PURPOSE (t)
&& valuevec == TREE_VALUE (t)
&& chain == TREE_CHAIN (t))
- return t;
+ RETURN (t);
- return tree_cons (purposevec, valuevec, chain);
+ RETURN (tree_cons (purposevec, valuevec, chain));
}
/* Convert the argument vectors into a TREE_LIST */
@@ -14113,7 +13846,7 @@ tsubst_copy_and_build (tree t,
chain = tree_cons (purpose, value, chain);
}
- return chain;
+ RETURN (chain);
}
purpose = TREE_PURPOSE (t);
@@ -14128,8 +13861,8 @@ tsubst_copy_and_build (tree t,
if (purpose == TREE_PURPOSE (t)
&& value == TREE_VALUE (t)
&& chain == TREE_CHAIN (t))
- return t;
- return tree_cons (purpose, value, chain);
+ RETURN (t);
+ RETURN (tree_cons (purpose, value, chain));
}
case COMPONENT_REF:
@@ -14153,13 +13886,13 @@ tsubst_copy_and_build (tree t,
else
member = tsubst_copy (member, args, complain, in_decl);
if (member == error_mark_node)
- return error_mark_node;
+ RETURN (error_mark_node);
if (type_dependent_expression_p (object))
/* We can't do much here. */;
else if (!CLASS_TYPE_P (object_type))
{
- if (SCALAR_TYPE_P (object_type))
+ if (scalarish_type_p (object_type))
{
tree s = NULL_TREE;
tree dtor = member;
@@ -14173,7 +13906,7 @@ tsubst_copy_and_build (tree t,
{
dtor = TREE_OPERAND (dtor, 0);
if (TYPE_P (dtor))
- return finish_pseudo_destructor_expr (object, s, dtor);
+ RETURN (finish_pseudo_destructor_expr (object, s, dtor));
}
}
}
@@ -14201,7 +13934,7 @@ tsubst_copy_and_build (tree t,
{
qualified_name_lookup_error (scope, tmpl, member,
input_location);
- return error_mark_node;
+ RETURN (error_mark_node);
}
}
else if (TREE_CODE (member) == SCOPE_REF
@@ -14217,19 +13950,19 @@ tsubst_copy_and_build (tree t,
error ("%qD is not a class or namespace",
TREE_OPERAND (member, 0));
}
- return error_mark_node;
+ RETURN (error_mark_node);
}
else if (TREE_CODE (member) == FIELD_DECL)
- return finish_non_static_data_member (member, object, NULL_TREE);
+ RETURN (finish_non_static_data_member (member, object, NULL_TREE));
- return finish_class_member_access_expr (object, member,
+ RETURN (finish_class_member_access_expr (object, member,
/*template_p=*/false,
- complain);
+ complain));
}
case THROW_EXPR:
- return build_throw
- (RECUR (TREE_OPERAND (t, 0)));
+ RETURN (build_throw
+ (RECUR (TREE_OPERAND (t, 0))));
case CONSTRUCTOR:
{
@@ -14243,11 +13976,11 @@ tsubst_copy_and_build (tree t,
tree r;
if (type == error_mark_node)
- return error_mark_node;
+ RETURN (error_mark_node);
/* digest_init will do the wrong thing if we let it. */
if (type && TYPE_PTRMEMFUNC_P (type))
- return t;
+ RETURN (t);
/* We do not want to process the index of aggregate
initializers as they are identifier nodes which will be
@@ -14309,10 +14042,10 @@ tsubst_copy_and_build (tree t,
CONSTRUCTOR_IS_DIRECT_INIT (r) = CONSTRUCTOR_IS_DIRECT_INIT (t);
if (TREE_HAS_CONSTRUCTOR (t))
- return finish_compound_literal (type, r, complain);
+ RETURN (finish_compound_literal (type, r, complain));
TREE_TYPE (r) = type;
- return r;
+ RETURN (r);
}
case TYPEID_EXPR:
@@ -14321,18 +14054,18 @@ tsubst_copy_and_build (tree t,
if (TYPE_P (operand_0))
{
operand_0 = tsubst (operand_0, args, complain, in_decl);
- return get_typeid (operand_0);
+ RETURN (get_typeid (operand_0));
}
else
{
operand_0 = RECUR (operand_0);
- return build_typeid (operand_0);
+ RETURN (build_typeid (operand_0));
}
}
case VAR_DECL:
if (!args)
- return t;
+ RETURN (t);
/* Fall through */
case PARM_DECL:
@@ -14343,16 +14076,16 @@ tsubst_copy_and_build (tree t,
/* If the original type was a reference, we'll be wrapped in
the appropriate INDIRECT_REF. */
r = convert_from_reference (r);
- return r;
+ RETURN (r);
}
case VA_ARG_EXPR:
- return build_x_va_arg (EXPR_LOCATION (t),
+ RETURN (build_x_va_arg (EXPR_LOCATION (t),
RECUR (TREE_OPERAND (t, 0)),
- tsubst (TREE_TYPE (t), args, complain, in_decl));
+ tsubst (TREE_TYPE (t), args, complain, in_decl)));
case OFFSETOF_EXPR:
- return finish_offsetof (RECUR (TREE_OPERAND (t, 0)));
+ RETURN (finish_offsetof (RECUR (TREE_OPERAND (t, 0))));
case TRAIT_EXPR:
{
@@ -14363,7 +14096,7 @@ tsubst_copy_and_build (tree t,
if (type2)
type2 = tsubst_copy (type2, args, complain, in_decl);
- return finish_trait_expr (TRAIT_EXPR_KIND (t), type1, type2);
+ RETURN (finish_trait_expr (TRAIT_EXPR_KIND (t), type1, type2));
}
case STMT_EXPR:
@@ -14382,20 +14115,9 @@ tsubst_copy_and_build (tree t,
if (empty_expr_stmt_p (stmt_expr))
stmt_expr = void_zero_node;
- return stmt_expr;
+ RETURN (stmt_expr);
}
- case CONST_DECL:
- t = tsubst_copy (t, args, complain, in_decl);
- /* As in finish_id_expression, we resolve enumeration constants
- to their underlying values. */
- if (TREE_CODE (t) == CONST_DECL && !processing_template_decl)
- {
- used_types_insert (TREE_TYPE (t));
- return DECL_INITIAL (t);
- }
- return t;
-
case LAMBDA_EXPR:
{
tree r = build_lambda_expr ();
@@ -14412,7 +14134,7 @@ tsubst_copy_and_build (tree t,
LAMBDA_EXPR_DISCRIMINATOR (r)
= (LAMBDA_EXPR_DISCRIMINATOR (t));
LAMBDA_EXPR_EXTRA_SCOPE (r)
- = RECUR (LAMBDA_EXPR_EXTRA_SCOPE (t));
+ = tsubst (LAMBDA_EXPR_EXTRA_SCOPE (t), args, complain, in_decl);
LAMBDA_EXPR_RETURN_TYPE (r)
= tsubst (LAMBDA_EXPR_RETURN_TYPE (t), args, complain, in_decl);
@@ -14430,7 +14152,7 @@ tsubst_copy_and_build (tree t,
LAMBDA_EXPR_CAPTURE_LIST (r)
= RECUR (LAMBDA_EXPR_CAPTURE_LIST (t));
- return build_lambda_object (r);
+ RETURN (build_lambda_object (r));
}
case TARGET_EXPR:
@@ -14440,12 +14162,12 @@ tsubst_copy_and_build (tree t,
{
tree r = get_target_expr (RECUR (TARGET_EXPR_INITIAL (t)));
TREE_CONSTANT (r) = true;
- return r;
+ RETURN (r);
}
case TRANSACTION_EXPR:
- return tsubst_expr(t, args, complain, in_decl,
- integral_constant_expression_p);
+ RETURN (tsubst_expr(t, args, complain, in_decl,
+ integral_constant_expression_p));
default:
/* Handle Objective-C++ constructs, if appropriate. */
@@ -14454,12 +14176,16 @@ tsubst_copy_and_build (tree t,
= objcp_tsubst_copy_and_build (t, args, complain,
in_decl, /*function_p=*/false);
if (subst)
- return subst;
+ RETURN (subst);
}
- return tsubst_copy (t, args, complain, in_decl);
+ RETURN (tsubst_copy (t, args, complain, in_decl));
}
#undef RECUR
+#undef RETURN
+ out:
+ input_location = loc;
+ return retval;
}
/* Verify that the instantiated ARGS are valid. For type arguments,
@@ -14546,63 +14272,23 @@ check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain)
return result;
}
-/* In C++0x, it's possible to have a function template whose type depends
- on itself recursively. This is most obvious with decltype, but can also
- occur with enumeration scope (c++/48969). So we need to catch infinite
- recursion and reject the substitution at deduction time; this function
- will return error_mark_node for any repeated substitution.
+/* We're out of SFINAE context now, so generate diagnostics for the access
+ errors we saw earlier when instantiating D from TMPL and ARGS. */
- This also catches excessive recursion such as when f<N> depends on
- f<N-1> across all integers, and returns error_mark_node for all the
- substitutions back up to the initial one.
-
- This is, of course, not reentrant. */
-
-static tree
-deduction_tsubst_fntype (tree fn, tree targs, tsubst_flags_t complain)
+static void
+recheck_decl_substitution (tree d, tree tmpl, tree args)
{
- static bool excessive_deduction_depth;
- static int deduction_depth;
- struct pending_template *old_last_pend = last_pending_template;
- struct tinst_level *old_error_tinst = last_error_tinst_level;
-
- tree fntype = TREE_TYPE (fn);
- tree tinst;
- tree r;
-
- if (excessive_deduction_depth)
- return error_mark_node;
-
- tinst = build_tree_list (fn, targs);
- if (!push_tinst_level (tinst))
- {
- excessive_deduction_depth = true;
- ggc_free (tinst);
- return error_mark_node;
- }
-
- input_location = DECL_SOURCE_LOCATION (fn);
- ++deduction_depth;
- push_deduction_access_scope (fn);
- r = tsubst (fntype, targs, complain, NULL_TREE);
- pop_deduction_access_scope (fn);
- --deduction_depth;
-
- if (excessive_deduction_depth)
- {
- r = error_mark_node;
- if (deduction_depth == 0)
- /* Reset once we're all the way out. */
- excessive_deduction_depth = false;
- }
+ tree pattern = DECL_TEMPLATE_RESULT (tmpl);
+ tree type = TREE_TYPE (pattern);
+ location_t loc = input_location;
- pop_tinst_level ();
- /* We can't free this if a pending_template entry or last_error_tinst_level
- is pointing at it. */
- if (last_pending_template == old_last_pend
- && last_error_tinst_level == old_error_tinst)
- ggc_free (tinst);
- return r;
+ push_access_scope (d);
+ push_deferring_access_checks (dk_no_deferred);
+ input_location = DECL_SOURCE_LOCATION (pattern);
+ tsubst (type, args, tf_warning_or_error, d);
+ input_location = loc;
+ pop_deferring_access_checks ();
+ pop_access_scope (d);
}
/* Instantiate the indicated variable or function template TMPL with
@@ -14615,6 +14301,7 @@ instantiate_template_1 (tree tmpl, tree orig_args, tsubst_flags_t complain)
tree fndecl;
tree gen_tmpl;
tree spec;
+ bool access_ok = true;
if (tmpl == error_mark_node)
return error_mark_node;
@@ -14662,7 +14349,15 @@ instantiate_template_1 (tree tmpl, tree orig_args, tsubst_flags_t complain)
|| fndecl == NULL_TREE);
if (spec != NULL_TREE)
- return spec;
+ {
+ if (FNDECL_HAS_ACCESS_ERRORS (spec))
+ {
+ if (complain & tf_error)
+ recheck_decl_substitution (spec, gen_tmpl, targ_ptr);
+ return error_mark_node;
+ }
+ return spec;
+ }
if (check_instantiated_args (gen_tmpl, INNERMOST_TEMPLATE_ARGS (targ_ptr),
complain))
@@ -14692,25 +14387,23 @@ instantiate_template_1 (tree tmpl, tree orig_args, tsubst_flags_t complain)
pop_from_top_level ();
if (fndecl == error_mark_node)
- return error_mark_node;
+ {
+ pop_deferring_access_checks ();
+ return error_mark_node;
+ }
+
+ /* The DECL_TI_TEMPLATE should always be the immediate parent
+ template, not the most general template. */
+ DECL_TI_TEMPLATE (fndecl) = tmpl;
/* Now we know the specialization, compute access previously
deferred. */
push_access_scope (fndecl);
-
- /* Some typedefs referenced from within the template code need to be access
- checked at template instantiation time, i.e now. These types were
- added to the template at parsing time. Let's get those and perfom
- the acces checks then. */
- perform_typedefs_access_check (DECL_TEMPLATE_RESULT (tmpl), targ_ptr);
- perform_deferred_access_checks ();
+ if (!perform_deferred_access_checks (complain))
+ access_ok = false;
pop_access_scope (fndecl);
pop_deferring_access_checks ();
- /* The DECL_TI_TEMPLATE should always be the immediate parent
- template, not the most general template. */
- DECL_TI_TEMPLATE (fndecl) = tmpl;
-
/* If we've just instantiated the main entry point for a function,
instantiate all the alternate entry points as well. We do this
by cloning the instantiation of the main entry point, not by
@@ -14718,6 +14411,16 @@ instantiate_template_1 (tree tmpl, tree orig_args, tsubst_flags_t complain)
if (DECL_CHAIN (gen_tmpl) && DECL_CLONED_FUNCTION_P (DECL_CHAIN (gen_tmpl)))
clone_function_decl (fndecl, /*update_method_vec_p=*/0);
+ if (!access_ok)
+ {
+ if (!(complain & tf_error))
+ {
+ /* Remember to reinstantiate when we're out of SFINAE so the user
+ can see the errors. */
+ FNDECL_HAS_ACCESS_ERRORS (fndecl) = true;
+ }
+ return error_mark_node;
+ }
return fndecl;
}
@@ -14733,36 +14436,6 @@ instantiate_template (tree tmpl, tree orig_args, tsubst_flags_t complain)
return ret;
}
-/* We're going to do deduction substitution on the type of TMPL, a function
- template. In C++11 mode, push into that access scope. In C++03 mode,
- disable access checking. */
-
-static void
-push_deduction_access_scope (tree tmpl)
-{
- if (cxx_dialect >= cxx0x)
- {
- int ptd = processing_template_decl;
- push_access_scope (DECL_TEMPLATE_RESULT (tmpl));
- /* Preserve processing_template_decl across push_to_top_level. */
- if (ptd && !processing_template_decl)
- ++processing_template_decl;
- }
- else
- push_deferring_access_checks (dk_no_check);
-}
-
-/* And pop back out. */
-
-static void
-pop_deduction_access_scope (tree tmpl)
-{
- if (cxx_dialect >= cxx0x)
- pop_access_scope (DECL_TEMPLATE_RESULT (tmpl));
- else
- pop_deferring_access_checks ();
-}
-
/* PARM is a template parameter pack for FN. Returns true iff
PARM is used in a deducible way in the argument list of FN. */
@@ -14828,7 +14501,7 @@ pack_deducible_p (tree parm, tree fn)
as in [temp.expl.spec], or when taking the address of a function
template, as in [temp.deduct.funcaddr]. */
-int
+tree
fn_type_unification (tree fn,
tree explicit_targs,
tree targs,
@@ -14841,7 +14514,38 @@ fn_type_unification (tree fn,
{
tree parms;
tree fntype;
- int result;
+ tree decl = NULL_TREE;
+ tsubst_flags_t complain = (explain_p ? tf_warning_or_error : tf_none);
+ bool ok;
+ static int deduction_depth;
+ struct pending_template *old_last_pend = last_pending_template;
+ struct tinst_level *old_error_tinst = last_error_tinst_level;
+ tree tinst;
+ tree r = error_mark_node;
+
+ if (excessive_deduction_depth)
+ return error_mark_node;
+
+ /* In C++0x, it's possible to have a function template whose type depends
+ on itself recursively. This is most obvious with decltype, but can also
+ occur with enumeration scope (c++/48969). So we need to catch infinite
+ recursion and reject the substitution at deduction time; this function
+ will return error_mark_node for any repeated substitution.
+
+ This also catches excessive recursion such as when f<N> depends on
+ f<N-1> across all integers, and returns error_mark_node for all the
+ substitutions back up to the initial one.
+
+ This is, of course, not reentrant. */
+ tinst = build_tree_list (fn, targs);
+ if (!push_tinst_level (tinst))
+ {
+ excessive_deduction_depth = true;
+ ggc_free (tinst);
+ return error_mark_node;
+ }
+ ++deduction_depth;
+ push_deferring_access_checks (dk_deferred);
gcc_assert (TREE_CODE (fn) == TEMPLATE_DECL);
@@ -14867,21 +14571,20 @@ fn_type_unification (tree fn,
template results in an invalid type, type deduction fails. */
tree tparms = DECL_INNERMOST_TEMPLATE_PARMS (fn);
int i, len = TREE_VEC_LENGTH (tparms);
+ location_t loc = input_location;
tree converted_args;
bool incomplete = false;
if (explicit_targs == error_mark_node)
- return unify_invalid (explain_p);
+ goto fail;
converted_args
= (coerce_template_parms (tparms, explicit_targs, NULL_TREE,
- (explain_p
- ? tf_warning_or_error
- : tf_none),
+ complain,
/*require_all_args=*/false,
/*use_default_args=*/false));
if (converted_args == error_mark_node)
- return 1;
+ goto fail;
/* Substitute the explicit args into the function type. This is
necessary so that, for instance, explicitly declared function
@@ -14930,14 +14633,14 @@ fn_type_unification (tree fn,
}
processing_template_decl += incomplete;
- fntype = deduction_tsubst_fntype (fn, converted_args,
- (explain_p
- ? tf_warning_or_error
- : tf_none) | tf_partial);
+ input_location = DECL_SOURCE_LOCATION (fn);
+ fntype = tsubst (TREE_TYPE (fn), converted_args,
+ complain | tf_partial, NULL_TREE);
+ input_location = loc;
processing_template_decl -= incomplete;
if (fntype == error_mark_node)
- return 1;
+ goto fail;
/* Place the explicitly specified arguments in TARGS. */
for (i = NUM_TMPL_ARGS (converted_args); i--;)
@@ -14963,9 +14666,14 @@ fn_type_unification (tree fn,
because the standard doesn't seem to explicitly prohibit it. Our
callers must be ready to deal with unification failures in any
event. */
- result = type_unification_real (DECL_INNERMOST_TEMPLATE_PARMS (fn),
- targs, parms, args, nargs, /*subr=*/0,
- strict, flags, explain_p);
+
+ pop_tinst_level ();
+ ok = !type_unification_real (DECL_INNERMOST_TEMPLATE_PARMS (fn),
+ targs, parms, args, nargs, /*subr=*/0,
+ strict, flags, explain_p);
+ push_tinst_level (tinst);
+ if (!ok)
+ goto fail;
/* Now that we have bindings for all of the template arguments,
ensure that the arguments deduced for the template template
@@ -14988,48 +14696,75 @@ fn_type_unification (tree fn,
parameter 'T', but 'C' is deduced to 'X' before 'T' is deduced to
'long'. Thus, we can't check that 'C' cannot bind to 'X' at the
time that we deduce 'C'. */
- if (result == 0
- && !template_template_parm_bindings_ok_p
+ if (!template_template_parm_bindings_ok_p
(DECL_INNERMOST_TEMPLATE_PARMS (fn), targs))
- return unify_inconsistent_template_template_parameters (explain_p);
+ {
+ unify_inconsistent_template_template_parameters (explain_p);
+ goto fail;
+ }
+
+ /* All is well so far. Now, check:
- if (result == 0)
- /* All is well so far. Now, check:
+ [temp.deduct]
- [temp.deduct]
+ When all template arguments have been deduced, all uses of
+ template parameters in nondeduced contexts are replaced with
+ the corresponding deduced argument values. If the
+ substitution results in an invalid type, as described above,
+ type deduction fails. */
+ decl = instantiate_template (fn, targs, complain);
+ if (decl == error_mark_node)
+ goto fail;
- When all template arguments have been deduced, all uses of
- template parameters in nondeduced contexts are replaced with
- the corresponding deduced argument values. If the
- substitution results in an invalid type, as described above,
- type deduction fails. */
+ /* Now perform any access checks encountered during deduction, such as
+ for default template arguments. */
+ push_access_scope (decl);
+ ok = perform_deferred_access_checks (complain);
+ pop_access_scope (decl);
+ if (!ok)
+ goto fail;
+
+ /* If we're looking for an exact match, check that what we got
+ is indeed an exact match. It might not be if some template
+ parameters are used in non-deduced contexts. */
+ if (strict == DEDUCE_EXACT)
{
- tree substed = deduction_tsubst_fntype (fn, targs,
- (explain_p
- ? tf_warning_or_error
- : tf_none));
- if (substed == error_mark_node)
- return 1;
+ tree substed = TREE_TYPE (decl);
+ unsigned int i;
- /* If we're looking for an exact match, check that what we got
- is indeed an exact match. It might not be if some template
- parameters are used in non-deduced contexts. */
- if (strict == DEDUCE_EXACT)
- {
- unsigned int i;
-
- tree sarg
- = skip_artificial_parms_for (fn, TYPE_ARG_TYPES (substed));
- if (return_type)
- sarg = tree_cons (NULL_TREE, TREE_TYPE (substed), sarg);
- for (i = 0; i < nargs && sarg; ++i, sarg = TREE_CHAIN (sarg))
- if (!same_type_p (args[i], TREE_VALUE (sarg)))
- return unify_type_mismatch (explain_p, args[i],
- TREE_VALUE (sarg));
- }
+ tree sarg
+ = skip_artificial_parms_for (decl, TYPE_ARG_TYPES (substed));
+ if (return_type)
+ sarg = tree_cons (NULL_TREE, TREE_TYPE (substed), sarg);
+ for (i = 0; i < nargs && sarg; ++i, sarg = TREE_CHAIN (sarg))
+ if (!same_type_p (args[i], TREE_VALUE (sarg)))
+ {
+ unify_type_mismatch (explain_p, args[i],
+ TREE_VALUE (sarg));
+ goto fail;
+ }
}
- return result;
+ r = decl;
+
+ fail:
+ pop_deferring_access_checks ();
+ --deduction_depth;
+ if (excessive_deduction_depth)
+ {
+ if (deduction_depth == 0)
+ /* Reset once we're all the way out. */
+ excessive_deduction_depth = false;
+ }
+
+ pop_tinst_level ();
+ /* We can't free this if a pending_template entry or last_error_tinst_level
+ is pointing at it. */
+ if (last_pending_template == old_last_pend
+ && last_error_tinst_level == old_error_tinst)
+ ggc_free (tinst);
+
+ return r;
}
/* Adjust types before performing type deduction, as described in
@@ -15548,10 +15283,12 @@ resolve_overloaded_unification (tree tparms,
if (TREE_CODE (fn) != TEMPLATE_DECL)
continue;
- ++processing_template_decl;
- subargs = get_bindings (fn, DECL_TEMPLATE_RESULT (fn),
- expl_subargs, /*check_ret=*/false);
- if (subargs && !any_dependent_template_arguments_p (subargs))
+ subargs = coerce_template_parms (DECL_INNERMOST_TEMPLATE_PARMS (fn),
+ expl_subargs, NULL_TREE, tf_none,
+ /*require_all_args=*/true,
+ /*use_default_args=*/true);
+ if (subargs != error_mark_node
+ && !any_dependent_template_arguments_p (subargs))
{
elem = tsubst (TREE_TYPE (fn), subargs, tf_none, NULL_TREE);
if (try_one_overload (tparms, targs, tempargs, parm,
@@ -15564,7 +15301,6 @@ resolve_overloaded_unification (tree tparms,
}
else if (subargs)
++ok;
- --processing_template_decl;
}
/* If no templates (or more than one) are fully resolved by the
explicit arguments, this template-id is a non-deduced context; it
@@ -15669,10 +15405,12 @@ resolve_nondeduced_context (tree orig_expr)
if (TREE_CODE (fn) != TEMPLATE_DECL)
continue;
- ++processing_template_decl;
- subargs = get_bindings (fn, DECL_TEMPLATE_RESULT (fn),
- expl_subargs, /*check_ret=*/false);
- if (subargs && !any_dependent_template_arguments_p (subargs))
+ subargs = coerce_template_parms (DECL_INNERMOST_TEMPLATE_PARMS (fn),
+ expl_subargs, NULL_TREE, tf_none,
+ /*require_all_args=*/true,
+ /*use_default_args=*/true);
+ if (subargs != error_mark_node
+ && !any_dependent_template_arguments_p (subargs))
{
elem = instantiate_template (fn, subargs, tf_none);
if (elem == error_mark_node)
@@ -15686,7 +15424,6 @@ resolve_nondeduced_context (tree orig_expr)
++good;
}
}
- --processing_template_decl;
}
if (good == 1)
{
@@ -15737,6 +15474,9 @@ try_one_overload (tree tparms,
tree tempargs;
int i;
+ if (arg == error_mark_node)
+ return 0;
+
/* [temp.deduct.type] A template-argument can be deduced from a pointer
to function or pointer to member function argument if the set of
overloaded functions does not contain function templates and at most
@@ -16592,6 +16332,7 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict,
&& !TEMPLATE_PARM_PARAMETER_PACK (parm))
return unify_parameter_pack_mismatch (explain_p, parm, arg);
+ arg = strip_typedefs_expr (arg);
TREE_VEC_ELT (INNERMOST_TEMPLATE_ARGS (targs), idx) = arg;
return unify_success (explain_p);
@@ -17079,12 +16820,9 @@ check_undeduced_parms (tree targs, tree args, tree end)
}
if (found)
{
- for (; args != end; args = TREE_CHAIN (args))
- {
- tree substed = tsubst (TREE_VALUE (args), targs, tf_none, NULL_TREE);
- if (substed == error_mark_node)
- return true;
- }
+ tree substed = tsubst_arg_types (args, targs, end, tf_none, NULL_TREE);
+ if (substed == error_mark_node)
+ return true;
}
return false;
}
@@ -17433,40 +17171,13 @@ get_bindings (tree fn, tree decl, tree explicit_args, bool check_rettype)
{
int ntparms = DECL_NTPARMS (fn);
tree targs = make_tree_vec (ntparms);
- tree decl_type;
+ tree decl_type = TREE_TYPE (decl);
tree decl_arg_types;
tree *args;
unsigned int nargs, ix;
tree arg;
- /* Substitute the explicit template arguments into the type of DECL.
- The call to fn_type_unification will handle substitution into the
- FN. */
- decl_type = TREE_TYPE (decl);
- if (explicit_args && decl == DECL_TEMPLATE_RESULT (fn))
- {
- tree tmpl;
- tree converted_args;
-
- if (DECL_TEMPLATE_INFO (decl))
- tmpl = DECL_TI_TEMPLATE (decl);
- else
- /* We can get here for some invalid specializations. */
- return NULL_TREE;
-
- converted_args
- = coerce_template_parms (DECL_INNERMOST_TEMPLATE_PARMS (tmpl),
- explicit_args, NULL_TREE,
- tf_none,
- /*require_all_args=*/false,
- /*use_default_args=*/false);
- if (converted_args == error_mark_node)
- return NULL_TREE;
-
- decl_type = tsubst (decl_type, converted_args, tf_none, NULL_TREE);
- if (decl_type == error_mark_node)
- return NULL_TREE;
- }
+ gcc_assert (decl != DECL_TEMPLATE_RESULT (fn));
/* Never do unification on the 'this' parameter. */
decl_arg_types = skip_artificial_parms_for (decl,
@@ -17483,7 +17194,8 @@ get_bindings (tree fn, tree decl, tree explicit_args, bool check_rettype)
args, ix,
(check_rettype || DECL_CONV_FN_P (fn)
? TREE_TYPE (decl_type) : NULL_TREE),
- DEDUCE_EXACT, LOOKUP_NORMAL, /*explain_p=*/false))
+ DEDUCE_EXACT, LOOKUP_NORMAL, /*explain_p=*/false)
+ == error_mark_node)
return NULL_TREE;
return targs;
@@ -18566,35 +18278,6 @@ instantiate_decl (tree d, int defer_ok,
if (TREE_CODE (d) == FUNCTION_DECL)
maybe_instantiate_noexcept (d);
- /* Recheck the substitutions to obtain any warning messages
- about ignoring cv qualifiers. Don't do this for artificial decls,
- as it breaks the context-sensitive substitution for lambda op(). */
- if (!defer_ok && !DECL_ARTIFICIAL (d))
- {
- tree gen = DECL_TEMPLATE_RESULT (gen_tmpl);
- tree type = TREE_TYPE (gen);
-
- /* Make sure that we can see identifiers, and compute access
- correctly. D is already the target FUNCTION_DECL with the
- right context. */
- push_access_scope (d);
-
- if (TREE_CODE (gen) == FUNCTION_DECL)
- {
- tsubst (DECL_ARGUMENTS (gen), gen_args, tf_warning_or_error, d);
- tsubst_exception_specification (type, gen_args, tf_warning_or_error,
- d, /*defer_ok*/true);
- /* Don't simply tsubst the function type, as that will give
- duplicate warnings about poor parameter qualifications.
- The function arguments are the same as the decl_arguments
- without the top level cv qualifiers. */
- type = TREE_TYPE (type);
- }
- tsubst (type, gen_args, tf_warning_or_error, d);
-
- pop_access_scope (d);
- }
-
/* Defer all other templates, unless we have been explicitly
forbidden from doing so. */
if (/* If there is no definition, we cannot instantiate the
@@ -18748,6 +18431,13 @@ instantiate_decl (tree d, int defer_ok,
/* Set up context. */
start_preparsed_function (d, NULL_TREE, SF_PRE_PARSED);
+ /* Some typedefs referenced from within the template code need to be
+ access checked at template instantiation time, i.e now. These
+ types were added to the template at parsing time. Let's get those
+ and perform the access checks then. */
+ perform_typedefs_access_check (DECL_TEMPLATE_RESULT (gen_tmpl),
+ gen_args);
+
/* Create substitution entries for the parameters. */
subst_decl = DECL_TEMPLATE_RESULT (template_for_substitution (d));
tmpl_parm = DECL_ARGUMENTS (subst_decl);
@@ -20226,6 +19916,10 @@ build_non_dependent_expr (tree expr)
if (BRACE_ENCLOSED_INITIALIZER_P (expr))
return expr;
+ /* Don't wrap a dummy object, we need to be able to test for it. */
+ if (is_dummy_object (expr))
+ return expr;
+
if (TREE_CODE (expr) == COND_EXPR)
return build3 (COND_EXPR,
TREE_TYPE (expr),
@@ -20278,7 +19972,7 @@ make_auto (void)
TYPE_STUB_DECL (au) = TYPE_NAME (au);
TEMPLATE_TYPE_PARM_INDEX (au) = build_template_parm_index
(0, processing_template_decl + 1, processing_template_decl + 1,
- 0, TYPE_NAME (au), NULL_TREE);
+ TYPE_NAME (au), NULL_TREE);
TYPE_CANONICAL (au) = canonical_type_parameter (au);
DECL_ARTIFICIAL (TYPE_NAME (au)) = 1;
SET_DECL_TEMPLATE_PARM_P (TYPE_NAME (au));
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index a19a893c664..51cb5ee9c62 100644
--- a/gcc/cp/rtti.c
+++ b/gcc/cp/rtti.c
@@ -295,7 +295,7 @@ typeid_ok_p (void)
}
pseudo_type_info
- = VEC_index (tinfo_s, tinfo_descs, TK_TYPE_INFO_TYPE)->type;
+ = VEC_index (tinfo_s, tinfo_descs, TK_TYPE_INFO_TYPE).type;
type_info_type = TYPE_MAIN_VARIANT (const_type_info_type_node);
/* Make sure abi::__type_info_pseudo has the same alias set
@@ -422,7 +422,7 @@ get_tinfo_decl (tree type)
if (!d)
{
int ix = get_pseudo_ti_index (type);
- tinfo_s *ti = VEC_index (tinfo_s, tinfo_descs, ix);
+ tinfo_s *ti = &VEC_index (tinfo_s, tinfo_descs, ix);
d = build_lang_decl (VAR_DECL, name, ti->type);
SET_DECL_ASSEMBLER_NAME (d, name);
@@ -1079,7 +1079,7 @@ typeinfo_in_lib_p (tree type)
static tree
get_pseudo_ti_init (tree type, unsigned tk_index)
{
- tinfo_s *ti = VEC_index (tinfo_s, tinfo_descs, tk_index);
+ tinfo_s *ti = &VEC_index (tinfo_s, tinfo_descs, tk_index);
gcc_assert (at_eof);
switch (tk_index)
@@ -1105,7 +1105,7 @@ get_pseudo_ti_init (tree type, unsigned tk_index)
tree tinfo = get_tinfo_ptr (BINFO_TYPE (base_binfo));
/* get_tinfo_ptr might have reallocated the tinfo_descs vector. */
- ti = VEC_index (tinfo_s, tinfo_descs, tk_index);
+ ti = &VEC_index (tinfo_s, tinfo_descs, tk_index);
return class_initializer (ti, type, 1, tinfo);
}
@@ -1160,14 +1160,14 @@ get_pseudo_ti_init (tree type, unsigned tk_index)
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, tinfo);
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, offset);
base_init = build_constructor (init_list_type_node, v);
- e = VEC_index (constructor_elt, init_vec, ix);
+ e = &VEC_index (constructor_elt, init_vec, ix);
e->index = NULL_TREE;
e->value = base_init;
}
base_inits = build_constructor (init_list_type_node, init_vec);
/* get_tinfo_ptr might have reallocated the tinfo_descs vector. */
- ti = VEC_index (tinfo_s, tinfo_descs, tk_index);
+ ti = &VEC_index (tinfo_s, tinfo_descs, tk_index);
return class_initializer (ti, type, 3,
build_int_cst (NULL_TREE, hint),
build_int_cst (NULL_TREE, nbases),
@@ -1214,7 +1214,7 @@ create_pseudo_type_info (int tk, const char *real_name, ...)
fields = build_decl (input_location,
FIELD_DECL, NULL_TREE,
VEC_index (tinfo_s, tinfo_descs,
- TK_TYPE_INFO_TYPE)->type);
+ TK_TYPE_INFO_TYPE).type);
/* Now add the derived fields. */
while ((field_decl = va_arg (ap, tree)))
@@ -1228,7 +1228,7 @@ create_pseudo_type_info (int tk, const char *real_name, ...)
finish_builtin_struct (pseudo_type, pseudo_name, fields, NULL_TREE);
CLASSTYPE_AS_BASE (pseudo_type) = pseudo_type;
- ti = VEC_index (tinfo_s, tinfo_descs, tk);
+ ti = &VEC_index (tinfo_s, tinfo_descs, tk);
ti->type = cp_build_qualified_type (pseudo_type, TYPE_QUAL_CONST);
ti->name = get_identifier (real_name);
ti->vtable = NULL_TREE;
@@ -1321,7 +1321,7 @@ get_pseudo_ti_index (tree type)
while (VEC_iterate (tinfo_s, tinfo_descs, len++, ti))
ti->type = ti->vtable = ti->name = NULL_TREE;
}
- else if (VEC_index (tinfo_s, tinfo_descs, ix)->type)
+ else if (VEC_index (tinfo_s, tinfo_descs, ix).type)
/* already created. */
break;
@@ -1335,7 +1335,7 @@ get_pseudo_ti_index (tree type)
array_domain = build_index_type (size_int (num_bases));
base_array =
build_array_type (VEC_index (tinfo_s, tinfo_descs,
- TK_BASE_TYPE)->type,
+ TK_BASE_TYPE).type,
array_domain);
push_abi_namespace ();
@@ -1387,7 +1387,7 @@ create_tinfo_types (void)
DECL_CHAIN (field) = fields;
fields = field;
- ti = VEC_index (tinfo_s, tinfo_descs, TK_TYPE_INFO_TYPE);
+ ti = &VEC_index (tinfo_s, tinfo_descs, TK_TYPE_INFO_TYPE);
ti->type = make_class_type (RECORD_TYPE);
ti->vtable = NULL_TREE;
ti->name = NULL_TREE;
@@ -1427,7 +1427,7 @@ create_tinfo_types (void)
DECL_CHAIN (field) = fields;
fields = field;
- ti = VEC_index (tinfo_s, tinfo_descs, TK_BASE_TYPE);
+ ti = &VEC_index (tinfo_s, tinfo_descs, TK_BASE_TYPE);
ti->type = make_class_type (RECORD_TYPE);
ti->vtable = NULL_TREE;
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index e6d6be814c6..dc802e4e9a2 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -66,14 +66,12 @@ static tree dfs_get_pure_virtuals (tree, void *);
/* Variables for gathering statistics. */
-#ifdef GATHER_STATISTICS
static int n_fields_searched;
static int n_calls_lookup_field, n_calls_lookup_field_1;
static int n_calls_lookup_fnfields, n_calls_lookup_fnfields_1;
static int n_calls_get_base_type;
static int n_outer_fields_searched;
static int n_contexts_saved;
-#endif /* GATHER_STATISTICS */
/* Data for lookup_base and its workers. */
@@ -407,9 +405,8 @@ lookup_field_1 (tree type, tree name, bool want_type)
{
i = (lo + hi) / 2;
-#ifdef GATHER_STATISTICS
- n_fields_searched++;
-#endif /* GATHER_STATISTICS */
+ if (GATHER_STATISTICS)
+ n_fields_searched++;
if (DECL_NAME (fields[i]) > name)
hi = i;
@@ -454,16 +451,16 @@ lookup_field_1 (tree type, tree name, bool want_type)
field = TYPE_FIELDS (type);
-#ifdef GATHER_STATISTICS
- n_calls_lookup_field_1++;
-#endif /* GATHER_STATISTICS */
+ if (GATHER_STATISTICS)
+ n_calls_lookup_field_1++;
+
for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
{
tree decl = field;
-#ifdef GATHER_STATISTICS
- n_fields_searched++;
-#endif /* GATHER_STATISTICS */
+ if (GATHER_STATISTICS)
+ n_fields_searched++;
+
gcc_assert (DECL_P (field));
if (DECL_NAME (field) == NULL_TREE
&& ANON_AGGR_TYPE_P (TREE_TYPE (field)))
@@ -579,7 +576,8 @@ context_for_name_lookup (tree decl)
declared. */
tree context = DECL_CONTEXT (decl);
- while (context && TYPE_P (context) && ANON_AGGR_TYPE_P (context))
+ while (context && TYPE_P (context)
+ && (ANON_AGGR_TYPE_P (context) || UNSCOPED_ENUM_P (context)))
context = TYPE_CONTEXT (context);
if (!context)
context = global_namespace;
@@ -623,9 +621,7 @@ dfs_access_in_type (tree binfo, void *data)
else
{
/* First, check for an access-declaration that gives us more
- access to the DECL. The CONST_DECL for an enumeration
- constant will not have DECL_LANG_SPECIFIC, and thus no
- DECL_ACCESS. */
+ access to the DECL. */
if (DECL_LANG_SPECIFIC (decl) && !DECL_DISCRIMINATOR_P (decl))
{
tree decl_access = purpose_member (type, DECL_ACCESS (decl));
@@ -1204,9 +1200,8 @@ lookup_member (tree xbasetype, tree name, int protect, bool want_type,
if (!basetype_path)
return NULL_TREE;
-#ifdef GATHER_STATISTICS
- n_calls_lookup_field++;
-#endif /* GATHER_STATISTICS */
+ if (GATHER_STATISTICS)
+ n_calls_lookup_field++;
memset (&lfi, 0, sizeof (lfi));
lfi.type = type;
@@ -1255,8 +1250,10 @@ lookup_member (tree xbasetype, tree name, int protect, bool want_type,
&& !really_overloaded_fn (rval))
{
tree decl = is_overloaded_fn (rval) ? get_first_fn (rval) : rval;
- if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (decl))
- perform_or_defer_access_check (basetype_path, decl, decl);
+ if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (decl)
+ && !perform_or_defer_access_check (basetype_path, decl, decl,
+ complain))
+ rval = error_mark_node;
}
if (errstr && protect)
@@ -1369,9 +1366,8 @@ lookup_fnfields_idx_nolazy (tree type, tree name)
if (!method_vec)
return -1;
-#ifdef GATHER_STATISTICS
- n_calls_lookup_fnfields_1++;
-#endif /* GATHER_STATISTICS */
+ if (GATHER_STATISTICS)
+ n_calls_lookup_fnfields_1++;
/* Constructors are first... */
if (name == ctor_identifier)
@@ -1407,9 +1403,8 @@ lookup_fnfields_idx_nolazy (tree type, tree name)
{
i = (lo + hi) / 2;
-#ifdef GATHER_STATISTICS
- n_outer_fields_searched++;
-#endif /* GATHER_STATISTICS */
+ if (GATHER_STATISTICS)
+ n_outer_fields_searched++;
tmp = VEC_index (tree, method_vec, i);
tmp = DECL_NAME (OVL_CURRENT (tmp));
@@ -1424,9 +1419,8 @@ lookup_fnfields_idx_nolazy (tree type, tree name)
else
for (; VEC_iterate (tree, method_vec, i, fn); ++i)
{
-#ifdef GATHER_STATISTICS
- n_outer_fields_searched++;
-#endif /* GATHER_STATISTICS */
+ if (GATHER_STATISTICS)
+ n_outer_fields_searched++;
if (DECL_NAME (OVL_CURRENT (fn)) == name)
return i;
}
@@ -2206,28 +2200,28 @@ note_debug_info_needed (tree type)
void
print_search_statistics (void)
{
-#ifdef GATHER_STATISTICS
+ if (! GATHER_STATISTICS)
+ {
+ fprintf (stderr, "no search statistics\n");
+ return;
+ }
+
fprintf (stderr, "%d fields searched in %d[%d] calls to lookup_field[_1]\n",
n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1);
fprintf (stderr, "%d fnfields searched in %d calls to lookup_fnfields\n",
n_outer_fields_searched, n_calls_lookup_fnfields);
fprintf (stderr, "%d calls to get_base_type\n", n_calls_get_base_type);
-#else /* GATHER_STATISTICS */
- fprintf (stderr, "no search statistics\n");
-#endif /* GATHER_STATISTICS */
}
void
reinit_search_statistics (void)
{
-#ifdef GATHER_STATISTICS
n_fields_searched = 0;
n_calls_lookup_field = 0, n_calls_lookup_field_1 = 0;
n_calls_lookup_fnfields = 0, n_calls_lookup_fnfields_1 = 0;
n_calls_get_base_type = 0;
n_outer_fields_searched = 0;
n_contexts_saved = 0;
-#endif /* GATHER_STATISTICS */
}
/* Helper for lookup_conversions_r. TO_TYPE is the type converted to
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index d45a6e2cb10..d66accfa934 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -161,7 +161,7 @@ resume_deferring_access_checks (void)
{
if (!deferred_access_no_check)
VEC_last (deferred_access, deferred_access_stack)
- ->deferring_access_checks_kind = dk_deferred;
+ .deferring_access_checks_kind = dk_deferred;
}
/* Stop deferring access checks. */
@@ -171,7 +171,7 @@ stop_deferring_access_checks (void)
{
if (!deferred_access_no_check)
VEC_last (deferred_access, deferred_access_stack)
- ->deferring_access_checks_kind = dk_no_deferred;
+ .deferring_access_checks_kind = dk_no_deferred;
}
/* Discard the current deferred access checks and restore the
@@ -198,7 +198,7 @@ get_deferred_access_checks (void)
return NULL;
else
return (VEC_last (deferred_access, deferred_access_stack)
- ->deferred_access_checks);
+ .deferred_access_checks);
}
/* Take current deferred checks and combine with the
@@ -216,14 +216,14 @@ pop_to_parent_deferring_access_checks (void)
deferred_access *ptr;
checks = (VEC_last (deferred_access, deferred_access_stack)
- ->deferred_access_checks);
+ .deferred_access_checks);
VEC_pop (deferred_access, deferred_access_stack);
- ptr = VEC_last (deferred_access, deferred_access_stack);
+ ptr = &VEC_last (deferred_access, deferred_access_stack);
if (ptr->deferring_access_checks_kind == dk_no_deferred)
{
/* Check access. */
- perform_access_checks (checks);
+ perform_access_checks (checks, tf_warning_or_error);
}
else
{
@@ -252,19 +252,30 @@ pop_to_parent_deferring_access_checks (void)
/* Perform the access checks in CHECKS. The TREE_PURPOSE of each node
is the BINFO indicating the qualifying scope used to access the
- DECL node stored in the TREE_VALUE of the node. */
+ DECL node stored in the TREE_VALUE of the node. If CHECKS is empty
+ or we aren't in SFINAE context or all the checks succeed return TRUE,
+ otherwise FALSE. */
-void
-perform_access_checks (VEC (deferred_access_check,gc)* checks)
+bool
+perform_access_checks (VEC (deferred_access_check,gc)* checks,
+ tsubst_flags_t complain)
{
int i;
deferred_access_check *chk;
+ location_t loc = input_location;
+ bool ok = true;
if (!checks)
- return;
+ return true;
FOR_EACH_VEC_ELT (deferred_access_check, checks, i, chk)
- enforce_access (chk->binfo, chk->decl, chk->diag_decl);
+ {
+ input_location = chk->loc;
+ ok &= enforce_access (chk->binfo, chk->decl, chk->diag_decl, complain);
+ }
+
+ input_location = loc;
+ return (complain & tf_error) ? true : ok;
}
/* Perform the deferred access checks.
@@ -281,19 +292,21 @@ perform_access_checks (VEC (deferred_access_check,gc)* checks)
A::X A::a, x; // No error for `A::a', error for `x'
We have to perform deferred access of `A::X', first with `A::a',
- next with `x'. */
+ next with `x'. Return value like perform_access_checks above. */
-void
-perform_deferred_access_checks (void)
+bool
+perform_deferred_access_checks (tsubst_flags_t complain)
{
- perform_access_checks (get_deferred_access_checks ());
+ return perform_access_checks (get_deferred_access_checks (), complain);
}
/* Defer checking the accessibility of DECL, when looked up in
- BINFO. DIAG_DECL is the declaration to use to print diagnostics. */
+ BINFO. DIAG_DECL is the declaration to use to print diagnostics.
+ Return value like perform_access_checks above. */
-void
-perform_or_defer_access_check (tree binfo, tree decl, tree diag_decl)
+bool
+perform_or_defer_access_check (tree binfo, tree decl, tree diag_decl,
+ tsubst_flags_t complain)
{
int i;
deferred_access *ptr;
@@ -304,17 +317,17 @@ perform_or_defer_access_check (tree binfo, tree decl, tree diag_decl)
/* Exit if we are in a context that no access checking is performed.
*/
if (deferred_access_no_check)
- return;
+ return true;
gcc_assert (TREE_CODE (binfo) == TREE_BINFO);
- ptr = VEC_last (deferred_access, deferred_access_stack);
+ ptr = &VEC_last (deferred_access, deferred_access_stack);
/* If we are not supposed to defer access checks, just check now. */
if (ptr->deferring_access_checks_kind == dk_no_deferred)
{
- enforce_access (binfo, decl, diag_decl);
- return;
+ bool ok = enforce_access (binfo, decl, diag_decl, complain);
+ return (complain & tf_error) ? true : ok;
}
/* See if we are already going to perform this check. */
@@ -324,7 +337,7 @@ perform_or_defer_access_check (tree binfo, tree decl, tree diag_decl)
if (chk->decl == decl && chk->binfo == binfo &&
chk->diag_decl == diag_decl)
{
- return;
+ return true;
}
}
/* If not, record the check. */
@@ -334,28 +347,7 @@ perform_or_defer_access_check (tree binfo, tree decl, tree diag_decl)
new_access->binfo = binfo;
new_access->decl = decl;
new_access->diag_decl = diag_decl;
-}
-
-/* Used by build_over_call in LOOKUP_SPECULATIVE mode: return whether DECL
- is accessible in BINFO, and possibly complain if not. If we're not
- checking access, everything is accessible. */
-
-bool
-speculative_access_check (tree binfo, tree decl, tree diag_decl,
- bool complain)
-{
- if (deferred_access_no_check)
- return true;
-
- /* If we're checking for implicit delete, we don't want access
- control errors. */
- if (!accessible_p (binfo, decl, true))
- {
- /* Unless we're under maybe_explain_implicit_delete. */
- if (complain)
- enforce_access (binfo, decl, diag_decl);
- return false;
- }
+ new_access->loc = input_location;
return true;
}
@@ -571,6 +563,9 @@ finish_goto_stmt (tree destination)
tf_warning_or_error);
if (error_operand_p (destination))
return NULL_TREE;
+ destination
+ = fold_build_cleanup_point_expr (TREE_TYPE (destination),
+ destination);
}
}
@@ -1601,7 +1596,7 @@ finish_non_static_data_member (tree decl, tree object, tree qualifying_scope)
tree access_type = TREE_TYPE (object);
perform_or_defer_access_check (TYPE_BINFO (access_type), decl,
- decl);
+ decl, tf_warning_or_error);
/* If the data member was named `C::M', convert `*this' to `C'
first. */
@@ -1622,7 +1617,7 @@ finish_non_static_data_member (tree decl, tree object, tree qualifying_scope)
/* If we are currently parsing a template and we encountered a typedef
TYPEDEF_DECL that is being accessed though CONTEXT, this function
adds the typedef to a list tied to the current template.
- At tempate instantiatin time, that list is walked and access check
+ At template instantiation time, that list is walked and access check
performed for each typedef.
LOCATION is the location of the usage point of TYPEDEF_DECL. */
@@ -1723,7 +1718,7 @@ check_accessibility_of_qualified_id (tree decl,
&& CLASS_TYPE_P (qualifying_type)
&& !dependent_type_p (qualifying_type))
perform_or_defer_access_check (TYPE_BINFO (qualifying_type), decl,
- decl);
+ decl, tf_warning_or_error);
}
/* EXPR is the result of a qualified-id. The QUALIFYING_CLASS was the
@@ -2067,6 +2062,7 @@ finish_call_expr (tree fn, VEC(tree,gc) **args, bool disallow_virtual,
&& type_dependent_expression_p (current_class_ref)))
{
result = build_nt_call_vec (fn, *args);
+ SET_EXPR_LOCATION (result, EXPR_LOC_OR_HERE (fn));
KOENIG_LOOKUP_P (result) = koenig_p;
if (cfun)
{
@@ -2631,8 +2627,10 @@ finish_member_declaration (tree decl)
TREE_PROTECTED (DECL_TEMPLATE_RESULT (decl)) = TREE_PROTECTED (decl);
}
- /* Mark the DECL as a member of the current class. */
- DECL_CONTEXT (decl) = current_class_type;
+ /* Mark the DECL as a member of the current class, unless it's
+ a member of an enumeration. */
+ if (TREE_CODE (decl) != CONST_DECL)
+ DECL_CONTEXT (decl) = current_class_type;
/* Check for bare parameter packs in the member variable declaration. */
if (TREE_CODE (decl) == FIELD_DECL)
@@ -3060,18 +3058,6 @@ finish_id_expression (tree id_expression,
}
return r;
}
- /* Similarly, we resolve enumeration constants to their
- underlying values. */
- else if (TREE_CODE (decl) == CONST_DECL)
- {
- *idk = CP_ID_KIND_NONE;
- if (!processing_template_decl)
- {
- used_types_insert (TREE_TYPE (decl));
- return DECL_INITIAL (decl);
- }
- return decl;
- }
else
{
bool dependent_p;
@@ -3100,6 +3086,9 @@ finish_id_expression (tree id_expression,
if (!processing_template_decl)
/* No names are dependent outside a template. */
;
+ else if (TREE_CODE (decl) == CONST_DECL)
+ /* We don't want to treat enumerators as dependent. */
+ ;
/* A template-id where the name of the template was not resolved
is definitely dependent. */
else if (TREE_CODE (decl) == TEMPLATE_ID_EXPR
@@ -3232,17 +3221,20 @@ finish_id_expression (tree id_expression,
/* Mark variable-like entities as used. Functions are similarly
marked either below or after overload resolution. */
- if (TREE_CODE (decl) == VAR_DECL
- || TREE_CODE (decl) == PARM_DECL
- || TREE_CODE (decl) == RESULT_DECL)
- mark_used (decl);
+ if ((TREE_CODE (decl) == VAR_DECL
+ || TREE_CODE (decl) == PARM_DECL
+ || TREE_CODE (decl) == CONST_DECL
+ || TREE_CODE (decl) == RESULT_DECL)
+ && !mark_used (decl))
+ return error_mark_node;
/* Only certain kinds of names are allowed in constant
- expression. Enumerators and template parameters have already
+ expression. Template parameters have already
been handled above. */
if (! error_operand_p (decl)
&& integral_constant_expression_p
&& ! decl_constant_var_p (decl)
+ && TREE_CODE (decl) != CONST_DECL
&& ! builtin_valid_in_constant_expr_p (decl))
{
if (!allow_non_integral_constant_expression_p)
@@ -3331,7 +3323,8 @@ finish_id_expression (tree id_expression,
{
tree path = currently_open_derived_class (context);
perform_or_defer_access_check (TYPE_BINFO (path),
- decl, decl);
+ decl, decl,
+ tf_warning_or_error);
}
}
@@ -5108,6 +5101,12 @@ void
finish_static_assert (tree condition, tree message, location_t location,
bool member_p)
{
+ if (message == NULL_TREE
+ || message == error_mark_node
+ || condition == NULL_TREE
+ || condition == error_mark_node)
+ return;
+
if (check_for_bare_parameter_packs (condition))
condition = error_mark_node;
@@ -5951,7 +5950,7 @@ build_constexpr_constructor_member_initializers (tree type, tree body)
if (VEC_length (constructor_elt, vec) > 0)
{
/* In a delegating constructor, return the target. */
- constructor_elt *ce = VEC_index (constructor_elt, vec, 0);
+ constructor_elt *ce = &VEC_index (constructor_elt, vec, 0);
if (ce->index == current_class_ptr)
{
body = ce->value;
@@ -6823,7 +6822,7 @@ cxx_eval_array_reference (const constexpr_call *call, tree t,
}
i = tree_low_cst (index, 0);
if (TREE_CODE (ary) == CONSTRUCTOR)
- return VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ary), i)->value;
+ return VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ary), i).value;
else if (elem_nchars == 1)
return build_int_cst (cv_unqualified (TREE_TYPE (TREE_TYPE (ary))),
TREE_STRING_POINTER (ary)[i]);
@@ -8506,10 +8505,17 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
case TRUTH_ORIF_EXPR:
tmp = boolean_false_node;
truth:
- if (TREE_OPERAND (t, 0) == tmp)
- return potential_constant_expression_1 (TREE_OPERAND (t, 1), rval, flags);
- else
- return potential_constant_expression_1 (TREE_OPERAND (t, 0), rval, flags);
+ {
+ tree op = TREE_OPERAND (t, 0);
+ if (!potential_constant_expression_1 (op, rval, flags))
+ return false;
+ if (!processing_template_decl)
+ op = maybe_constant_value (op);
+ if (tree_int_cst_equal (op, tmp))
+ return potential_constant_expression_1 (TREE_OPERAND (t, 1), rval, flags);
+ else
+ return true;
+ }
case PLUS_EXPR:
case MULT_EXPR:
@@ -8565,7 +8571,9 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
tmp = TREE_OPERAND (t, 0);
if (!potential_constant_expression_1 (tmp, rval, flags))
return false;
- else if (integer_zerop (tmp))
+ if (!processing_template_decl)
+ tmp = maybe_constant_value (tmp);
+ if (integer_zerop (tmp))
return potential_constant_expression_1 (TREE_OPERAND (t, 2),
want_rval, flags);
else if (TREE_CODE (tmp) == INTEGER_CST)
@@ -9341,8 +9349,6 @@ maybe_add_lambda_conv_op (tree type)
DECL_NOT_REALLY_EXTERN (fn) = 1;
DECL_DECLARED_INLINE_P (fn) = 1;
DECL_ARGUMENTS (fn) = build_this_parm (fntype, TYPE_QUAL_CONST);
- if (nested)
- DECL_INTERFACE_KNOWN (fn) = 1;
add_method (type, fn, NULL_TREE);
@@ -9373,8 +9379,6 @@ maybe_add_lambda_conv_op (tree type)
DECL_ARGUMENTS (fn) = copy_list (DECL_CHAIN (DECL_ARGUMENTS (callop)));
for (arg = DECL_ARGUMENTS (fn); arg; arg = DECL_CHAIN (arg))
DECL_CONTEXT (arg) = fn;
- if (nested)
- DECL_INTERFACE_KNOWN (fn) = 1;
add_method (type, fn, NULL_TREE);
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 2b541cd5bd5..7cc2457e3b2 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -795,7 +795,18 @@ build_cplus_array_type (tree elt_type, tree index_type)
}
}
else
- t = build_array_type (elt_type, index_type);
+ {
+ if (!TYPE_STRUCTURAL_EQUALITY_P (elt_type)
+ && !(index_type && TYPE_STRUCTURAL_EQUALITY_P (index_type))
+ && (TYPE_CANONICAL (elt_type) != elt_type
+ || (index_type && TYPE_CANONICAL (index_type) != index_type)))
+ /* Make sure that the canonical type is on the appropriate
+ variants list. */
+ build_cplus_array_type
+ (TYPE_CANONICAL (elt_type),
+ index_type ? TYPE_CANONICAL (index_type) : index_type);
+ t = build_array_type (elt_type, index_type);
+ }
/* We want TYPE_MAIN_VARIANT of an array to strip cv-quals from the
element type as well, so fix it up if needed. */
@@ -803,6 +814,7 @@ build_cplus_array_type (tree elt_type, tree index_type)
{
tree m = build_cplus_array_type (TYPE_MAIN_VARIANT (elt_type),
index_type);
+
if (TYPE_MAIN_VARIANT (t) != m)
{
TYPE_MAIN_VARIANT (t) = m;
@@ -1094,7 +1106,7 @@ cv_unqualified (tree type)
* If T is a type that needs structural equality
its TYPE_CANONICAL (T) will be NULL.
* TYPE_CANONICAL (T) desn't carry type attributes
- and looses template parameter names. */
+ and loses template parameter names. */
tree
strip_typedefs (tree t)
@@ -1184,6 +1196,16 @@ strip_typedefs (tree t)
TYPENAME_TYPE_FULLNAME (t),
typename_type, tf_none);
break;
+ case DECLTYPE_TYPE:
+ result = strip_typedefs_expr (DECLTYPE_TYPE_EXPR (t));
+ if (result == DECLTYPE_TYPE_EXPR (t))
+ return t;
+ else
+ result = (finish_decltype_type
+ (result,
+ DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t),
+ tf_none));
+ break;
default:
break;
}
@@ -1205,6 +1227,186 @@ strip_typedefs (tree t)
return cp_build_qualified_type (result, cp_type_quals (t));
}
+/* Like strip_typedefs above, but works on expressions, so that in
+
+ template<class T> struct A
+ {
+ typedef T TT;
+ B<sizeof(TT)> b;
+ };
+
+ sizeof(TT) is replaced by sizeof(T). */
+
+tree
+strip_typedefs_expr (tree t)
+{
+ unsigned i,n;
+ tree r, type, *ops;
+ enum tree_code code;
+
+ if (t == NULL_TREE || t == error_mark_node)
+ return t;
+
+ if (DECL_P (t) || CONSTANT_CLASS_P (t))
+ return t;
+
+ /* Some expressions have type operands, so let's handle types here rather
+ than check TYPE_P in multiple places below. */
+ if (TYPE_P (t))
+ return strip_typedefs (t);
+
+ code = TREE_CODE (t);
+ switch (code)
+ {
+ case IDENTIFIER_NODE:
+ case TEMPLATE_PARM_INDEX:
+ case OVERLOAD:
+ case BASELINK:
+ case ARGUMENT_PACK_SELECT:
+ return t;
+
+ case TRAIT_EXPR:
+ {
+ tree type1 = strip_typedefs (TRAIT_EXPR_TYPE1 (t));
+ tree type2 = strip_typedefs (TRAIT_EXPR_TYPE2 (t));
+ if (type1 == TRAIT_EXPR_TYPE1 (t)
+ && type2 == TRAIT_EXPR_TYPE2 (t))
+ return t;
+ r = copy_node (t);
+ TRAIT_EXPR_TYPE1 (t) = type1;
+ TRAIT_EXPR_TYPE2 (t) = type2;
+ return r;
+ }
+
+ case TREE_LIST:
+ {
+ VEC(tree,gc) *vec = make_tree_vector ();
+ bool changed = false;
+ tree it;
+ for (it = t; it; it = TREE_CHAIN (it))
+ {
+ tree val = strip_typedefs_expr (TREE_VALUE (t));
+ VEC_safe_push (tree, gc, vec, val);
+ if (val != TREE_VALUE (t))
+ changed = true;
+ gcc_assert (TREE_PURPOSE (it) == NULL_TREE);
+ }
+ if (changed)
+ {
+ r = NULL_TREE;
+ FOR_EACH_VEC_ELT_REVERSE (tree, vec, i, it)
+ r = tree_cons (NULL_TREE, it, r);
+ }
+ else
+ r = t;
+ release_tree_vector (vec);
+ return r;
+ }
+
+ case TREE_VEC:
+ {
+ bool changed = false;
+ VEC(tree,gc)* vec = make_tree_vector ();
+ n = TREE_VEC_LENGTH (t);
+ VEC_reserve (tree, gc, vec, n);
+ for (i = 0; i < n; ++i)
+ {
+ tree op = strip_typedefs_expr (TREE_VEC_ELT (t, i));
+ VEC_quick_push (tree, vec, op);
+ if (op != TREE_VEC_ELT (t, i))
+ changed = true;
+ }
+ if (changed)
+ {
+ r = copy_node (t);
+ for (i = 0; i < n; ++i)
+ TREE_VEC_ELT (r, i) = VEC_index (tree, vec, i);
+ }
+ else
+ r = t;
+ release_tree_vector (vec);
+ return r;
+ }
+
+ case CONSTRUCTOR:
+ {
+ bool changed = false;
+ VEC(constructor_elt,gc) *vec
+ = VEC_copy (constructor_elt, gc, CONSTRUCTOR_ELTS (t));
+ n = CONSTRUCTOR_NELTS (t);
+ type = strip_typedefs (TREE_TYPE (t));
+ for (i = 0; i < n; ++i)
+ {
+ constructor_elt *e = &VEC_index (constructor_elt, vec, i);
+ tree op = strip_typedefs_expr (e->value);
+ if (op != e->value)
+ {
+ changed = true;
+ e->value = op;
+ }
+ gcc_checking_assert (e->index == strip_typedefs_expr (e->index));
+ }
+
+ if (!changed && type == TREE_TYPE (t))
+ {
+ VEC_free (constructor_elt, gc, vec);
+ return t;
+ }
+ else
+ {
+ r = copy_node (t);
+ TREE_TYPE (r) = type;
+ CONSTRUCTOR_ELTS (r) = vec;
+ return r;
+ }
+ }
+
+ case LAMBDA_EXPR:
+ gcc_unreachable ();
+
+ default:
+ break;
+ }
+
+ gcc_assert (EXPR_P (t));
+
+ n = TREE_OPERAND_LENGTH (t);
+ ops = XALLOCAVEC (tree, n);
+ type = TREE_TYPE (t);
+
+ switch (code)
+ {
+ CASE_CONVERT:
+ case IMPLICIT_CONV_EXPR:
+ case DYNAMIC_CAST_EXPR:
+ case STATIC_CAST_EXPR:
+ case CONST_CAST_EXPR:
+ case REINTERPRET_CAST_EXPR:
+ case CAST_EXPR:
+ case NEW_EXPR:
+ type = strip_typedefs (type);
+ /* fallthrough */
+
+ default:
+ for (i = 0; i < n; ++i)
+ ops[i] = strip_typedefs_expr (TREE_OPERAND (t, i));
+ break;
+ }
+
+ /* If nothing changed, return t. */
+ for (i = 0; i < n; ++i)
+ if (ops[i] != TREE_OPERAND (t, i))
+ break;
+ if (i == n && type == TREE_TYPE (t))
+ return t;
+
+ r = copy_node (t);
+ TREE_TYPE (r) = type;
+ for (i = 0; i < n; ++i)
+ TREE_OPERAND (r, i) = ops[i];
+ return r;
+}
+
/* Makes a copy of BINFO and TYPE, which is to be inherited into a
graph dominated by T. If BINFO is NULL, TYPE is a dependent base,
and we do a shallow copy. If BINFO is non-NULL, we do a deep copy.
@@ -1842,9 +2044,7 @@ no_linkage_check (tree t, bool relaxed_p)
}
}
-#ifdef GATHER_STATISTICS
extern int depth_reached;
-#endif
void
cxx_print_statistics (void)
@@ -1852,10 +2052,9 @@ cxx_print_statistics (void)
print_search_statistics ();
print_class_statistics ();
print_template_statistics ();
-#ifdef GATHER_STATISTICS
- fprintf (stderr, "maximum template instantiation depth reached: %d\n",
- depth_reached);
-#endif
+ if (GATHER_STATISTICS)
+ fprintf (stderr, "maximum template instantiation depth reached: %d\n",
+ depth_reached);
}
/* Return, as an INTEGER_CST node, the number of elements for TYPE
@@ -2378,9 +2577,6 @@ cp_tree_equal (tree t1, tree t2)
BASELINK_FUNCTIONS (t2)));
case TEMPLATE_PARM_INDEX:
- if (TEMPLATE_PARM_NUM_SIBLINGS (t1)
- != TEMPLATE_PARM_NUM_SIBLINGS (t2))
- return false;
return (TEMPLATE_PARM_IDX (t1) == TEMPLATE_PARM_IDX (t2)
&& TEMPLATE_PARM_LEVEL (t1) == TEMPLATE_PARM_LEVEL (t2)
&& (TEMPLATE_PARM_PARAMETER_PACK (t1)
@@ -2622,7 +2818,7 @@ is_dummy_object (const_tree ob)
/* Returns 1 iff type T is something we want to treat as a scalar type for
the purpose of deciding whether it is trivial/POD/standard-layout. */
-static bool
+bool
scalarish_type_p (const_tree t)
{
if (t == error_mark_node)
@@ -3212,7 +3408,7 @@ decl_linkage (tree decl)
/* Linkage of a CONST_DECL depends on the linkage of the enumeration
type. */
if (TREE_CODE (decl) == CONST_DECL)
- return decl_linkage (TYPE_NAME (TREE_TYPE (decl)));
+ return decl_linkage (TYPE_NAME (DECL_CONTEXT (decl)));
/* Some things that are not TREE_PUBLIC have external linkage, too.
For example, on targets that don't have weak symbols, we make all
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 971f386e56f..25f37e896fa 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -1140,12 +1140,6 @@ comp_template_parms_position (tree t1, tree t2)
index1 = TEMPLATE_TYPE_PARM_INDEX (TYPE_MAIN_VARIANT (t1));
index2 = TEMPLATE_TYPE_PARM_INDEX (TYPE_MAIN_VARIANT (t2));
- /* If T1 and T2 belong to template parm lists of different size,
- let's assume they are different. */
- if (TEMPLATE_PARM_NUM_SIBLINGS (index1)
- != TEMPLATE_PARM_NUM_SIBLINGS (index2))
- return false;
-
/* Then compare their relative position. */
if (TEMPLATE_PARM_IDX (index1) != TEMPLATE_PARM_IDX (index2)
|| TEMPLATE_PARM_LEVEL (index1) != TEMPLATE_PARM_LEVEL (index2)
@@ -2199,7 +2193,7 @@ build_class_member_access_expr (tree object, tree member,
/* If MEMBER is from an anonymous aggregate, MEMBER_SCOPE will
presently be the anonymous union. Go outwards until we find a
type related to OBJECT_TYPE. */
- while (ANON_AGGR_TYPE_P (member_scope)
+ while ((ANON_AGGR_TYPE_P (member_scope) || UNSCOPED_ENUM_P (member_scope))
&& !same_type_ignoring_top_level_qualifiers_p (member_scope,
object_type))
member_scope = TYPE_CONTEXT (member_scope);
@@ -6059,6 +6053,12 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
/* [expr.static.cast]
+ Any expression can be explicitly converted to type cv void. */
+ if (TREE_CODE (type) == VOID_TYPE)
+ return convert_to_void (expr, ICV_CAST, complain);
+
+ /* [expr.static.cast]
+
An expression e can be explicitly converted to a type T using a
static_cast of the form static_cast<T>(e) if the declaration T
t(e);" is well-formed, for some invented temporary variable
@@ -6080,12 +6080,6 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
/* [expr.static.cast]
- Any expression can be explicitly converted to type cv void. */
- if (TREE_CODE (type) == VOID_TYPE)
- return convert_to_void (expr, ICV_CAST, complain);
-
- /* [expr.static.cast]
-
The inverse of any standard conversion sequence (clause _conv_),
other than the lvalue-to-rvalue (_conv.lval_), array-to-pointer
(_conv.array_), function-to-pointer (_conv.func_), and boolean
@@ -7582,10 +7576,6 @@ convert_for_assignment (tree type, tree rhs,
return error_mark_node;
}
- /* Simplify the RHS if possible. */
- if (TREE_CODE (rhs) == CONST_DECL)
- rhs = DECL_INITIAL (rhs);
-
if (c_dialect_objc ())
{
int parmno;
@@ -8463,9 +8453,9 @@ cp_apply_type_quals_to_decl (int type_quals, tree decl)
constructor can produce constant init, so rely on cp_finish_decl to
clear TREE_READONLY if the variable has non-constant init. */
- /* If the type has a mutable component, that component might be
- modified. */
- if (TYPE_HAS_MUTABLE_P (type))
+ /* If the type has (or might have) a mutable component, that component
+ might be modified. */
+ if (TYPE_HAS_MUTABLE_P (type) || !COMPLETE_TYPE_P (type))
type_quals &= ~TYPE_QUAL_CONST;
c_apply_type_quals_to_decl (type_quals, decl);
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 326f602b0fd..2180535e837 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -1178,7 +1178,7 @@ process_init_constructor_record (tree type, tree init,
if (idx < VEC_length (constructor_elt, CONSTRUCTOR_ELTS (init)))
{
- constructor_elt *ce = VEC_index (constructor_elt,
+ constructor_elt *ce = &VEC_index (constructor_elt,
CONSTRUCTOR_ELTS (init), idx);
if (ce->index)
{
@@ -1305,7 +1305,7 @@ process_init_constructor_union (tree type, tree init,
VEC_block_remove (constructor_elt, CONSTRUCTOR_ELTS (init), 1, len-1);
}
- ce = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (init), 0);
+ ce = &VEC_index (constructor_elt, CONSTRUCTOR_ELTS (init), 0);
/* If this element specifies a field, initialize via that field. */
if (ce->index)
diff --git a/gcc/cppbuiltin.h b/gcc/cppbuiltin.h
index f8845129492..8e0e5883625 100644
--- a/gcc/cppbuiltin.h
+++ b/gcc/cppbuiltin.h
@@ -21,9 +21,6 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_CPPBUILTIN_H
#define GCC_CPPBUILTIN_H
-#include "coretypes.h"
-
-
/* Parse a BASEVER version string of the format "major.minor.patchlevel"
or "major.minor" to extract its components. */
extern void parse_basever (int *, int *, int *);
diff --git a/gcc/cprop.c b/gcc/cprop.c
index 29495e000df..0d3e1f9e09c 100644
--- a/gcc/cprop.c
+++ b/gcc/cprop.c
@@ -41,7 +41,6 @@ along with GCC; see the file COPYING3. If not see
#include "cselib.h"
#include "intl.h"
#include "obstack.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "hashtab.h"
#include "df.h"
@@ -1328,7 +1327,7 @@ implicit_set_cond_p (const_rtx cond)
the optimization can't be performed. */
/* ??? The complex and vector checks are not implemented yet. We just
always return zero for them. */
- if (GET_CODE (cst) == CONST_DOUBLE)
+ if (CONST_DOUBLE_AS_FLOAT_P (cst))
{
REAL_VALUE_TYPE d;
REAL_VALUE_FROM_CONST_DOUBLE (d, cst);
diff --git a/gcc/cse.c b/gcc/cse.c
index 9d5e32eee39..16255988fc5 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -36,7 +36,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "toplev.h"
#include "ggc.h"
-#include "timevar.h"
#include "except.h"
#include "target.h"
#include "params.h"
@@ -44,6 +43,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "df.h"
#include "dbgcnt.h"
+#include "pointer-set.h"
/* The basic idea of common subexpression elimination is to go
through the code, keeping a record of expressions that would
@@ -2623,9 +2623,7 @@ exp_equiv_p (const_rtx x, const_rtx y, int validate, bool for_gcse)
{
case PC:
case CC0:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return x == y;
case LABEL_REF:
@@ -2829,10 +2827,7 @@ canon_reg (rtx x, rtx insn)
case PC:
case CC0:
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
@@ -2898,6 +2893,9 @@ find_comparison_args (enum rtx_code code, rtx *parg1, rtx *parg2,
enum machine_mode *pmode1, enum machine_mode *pmode2)
{
rtx arg1, arg2;
+ struct pointer_set_t *visited = NULL;
+ /* Set nonzero when we find something of interest. */
+ rtx x = NULL;
arg1 = *parg1, arg2 = *parg2;
@@ -2905,11 +2903,18 @@ find_comparison_args (enum rtx_code code, rtx *parg1, rtx *parg2,
while (arg2 == CONST0_RTX (GET_MODE (arg1)))
{
- /* Set nonzero when we find something of interest. */
- rtx x = 0;
int reverse_code = 0;
struct table_elt *p = 0;
+ /* Remember state from previous iteration. */
+ if (x)
+ {
+ if (!visited)
+ visited = pointer_set_create ();
+ pointer_set_insert (visited, x);
+ x = 0;
+ }
+
/* If arg1 is a COMPARE, extract the comparison arguments from it.
On machines with CC0, this is the only case that can occur, since
fold_rtx will return the COMPARE or item being compared with zero
@@ -2986,10 +2991,8 @@ find_comparison_args (enum rtx_code code, rtx *parg1, rtx *parg2,
if (! exp_equiv_p (p->exp, p->exp, 1, false))
continue;
- /* If it's the same comparison we're already looking at, skip it. */
- if (COMPARISON_P (p->exp)
- && XEXP (p->exp, 0) == arg1
- && XEXP (p->exp, 1) == arg2)
+ /* If it's a comparison we've used before, skip it. */
+ if (visited && pointer_set_contains (visited, p->exp))
continue;
if (GET_CODE (p->exp) == COMPARE
@@ -3070,6 +3073,8 @@ find_comparison_args (enum rtx_code code, rtx *parg1, rtx *parg2,
*pmode1 = GET_MODE (arg1), *pmode2 = GET_MODE (arg2);
*parg1 = fold_rtx (arg1, 0), *parg2 = fold_rtx (arg2, 0);
+ if (visited)
+ pointer_set_destroy (visited);
return code;
}
@@ -3123,10 +3128,7 @@ fold_rtx (rtx x, rtx insn)
return x;
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case REG:
@@ -3188,12 +3190,9 @@ fold_rtx (rtx x, rtx insn)
break;
case CONST:
- case CONST_INT:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
const_arg = folded_arg;
break;
@@ -6053,13 +6052,10 @@ cse_process_notes_1 (rtx x, rtx object, bool *changed)
switch (code)
{
- case CONST_INT:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case PC:
case CC0:
case LO_SUM:
@@ -6661,10 +6657,7 @@ count_reg_usage (rtx x, int *counts, rtx dest, int incr)
case PC:
case CC0:
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
return;
diff --git a/gcc/cselib.c b/gcc/cselib.c
index d338c31be1a..e7c4221df3e 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "rtl.h"
+#include "tree.h"/* FIXME: For hashing DEBUG_EXPR & friends. */
#include "tm_p.h"
#include "regs.h"
#include "hard-reg-set.h"
@@ -36,8 +37,9 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "ggc.h"
#include "hashtab.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "cselib.h"
+#include "valtrack.h"
#include "params.h"
#include "alloc-pool.h"
#include "target.h"
@@ -1007,8 +1009,9 @@ rtx_equal_for_cselib_1 (rtx x, rtx y, enum machine_mode memmode)
static rtx
wrap_constant (enum machine_mode mode, rtx x)
{
- if (!CONST_INT_P (x) && GET_CODE (x) != CONST_FIXED
- && (GET_CODE (x) != CONST_DOUBLE || GET_MODE (x) != VOIDmode))
+ if (!CONST_INT_P (x)
+ && GET_CODE (x) != CONST_FIXED
+ && !CONST_DOUBLE_AS_INT_P (x))
return x;
gcc_assert (mode != VOIDmode);
return gen_rtx_CONST (mode, x);
@@ -1600,9 +1603,7 @@ cselib_expand_value_rtx_1 (rtx orig, struct expand_value_data *evd,
}
}
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -1853,10 +1854,7 @@ cselib_subst_to_values (rtx x, enum machine_mode memmode)
break;
return e->val_rtx;
- case CONST_DOUBLE:
- case CONST_VECTOR:
- case CONST_INT:
- case CONST_FIXED:
+ CASE_CONST_ANY:
return x;
case PRE_DEC:
diff --git a/gcc/dbgcnt.c b/gcc/dbgcnt.c
index 532e4d0e57a..f29a9e738fe 100644
--- a/gcc/dbgcnt.c
+++ b/gcc/dbgcnt.c
@@ -23,8 +23,7 @@ See dbgcnt.def for usage information. */
#include "system.h"
#include "coretypes.h"
#include "diagnostic-core.h"
-#include "tm.h"
-#include "rtl.h"
+#include "dumpfile.h"
#include "dbgcnt.h"
diff --git a/gcc/dce.c b/gcc/dce.c
index 2e58e434356..c951865f765 100644
--- a/gcc/dce.c
+++ b/gcc/dce.c
@@ -32,7 +32,7 @@ along with GCC; see the file COPYING3. If not see
#include "df.h"
#include "cselib.h"
#include "dce.h"
-#include "timevar.h"
+#include "valtrack.h"
#include "tree-pass.h"
#include "dbgcnt.h"
#include "tm_p.h"
diff --git a/gcc/defaults.h b/gcc/defaults.h
index cfd44babb0f..6eead33ba6c 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1054,6 +1054,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define TARGET_HAS_SINCOS 0
#endif
+/* Determin whether the target runtime library is Bionic */
+#ifndef TARGET_HAS_BIONIC
+#define TARGET_HAS_BIONIC 0
+#endif
+
/* Indicate that CLZ and CTZ are undefined at zero. */
#ifndef CLZ_DEFINED_VALUE_AT_ZERO
#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0
@@ -1213,13 +1218,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define ATTRIBUTE_ALIGNED_VALUE BIGGEST_ALIGNMENT
#endif
-/* Many ports have no mode-dependent addresses (except possibly autoincrement
- and autodecrement addresses, which are handled by target-independent code
- in recog.c). */
-#ifndef GO_IF_MODE_DEPENDENT_ADDRESS
-#define GO_IF_MODE_DEPENDENT_ADDRESS(X, WIN)
-#endif
-
/* For most ports anything that evaluates to a constant symbolic
or integer value is acceptable as a constant address. */
#ifndef CONSTANT_ADDRESS_P
diff --git a/gcc/df-core.c b/gcc/df-core.c
index 0ca33037450..6613d2aebc3 100644
--- a/gcc/df-core.c
+++ b/gcc/df-core.c
@@ -391,7 +391,6 @@ are write-only operations.
#include "basic-block.h"
#include "sbitmap.h"
#include "bitmap.h"
-#include "timevar.h"
#include "df.h"
#include "tree-pass.h"
#include "params.h"
@@ -403,6 +402,9 @@ static void df_clear_bb_info (struct dataflow *, unsigned int);
static void df_set_clean_cfg (void);
#endif
+/* The obstack on which regsets are allocated. */
+struct bitmap_obstack reg_obstack;
+
/* An obstack for bitmap not related to specific dataflow problems.
This obstack should e.g. be used for bitmaps with a short life time
such as temporary bitmaps. */
@@ -1860,6 +1862,40 @@ df_reg_used (rtx insn, rtx reg)
Debugging and printing functions.
----------------------------------------------------------------------------*/
+/* Write information about registers and basic blocks into FILE.
+ This is part of making a debugging dump. */
+
+void
+dump_regset (regset r, FILE *outf)
+{
+ unsigned i;
+ reg_set_iterator rsi;
+
+ if (r == NULL)
+ {
+ fputs (" (nil)", outf);
+ return;
+ }
+
+ EXECUTE_IF_SET_IN_REG_SET (r, 0, i, rsi)
+ {
+ fprintf (outf, " %d", i);
+ if (i < FIRST_PSEUDO_REGISTER)
+ fprintf (outf, " [%s]",
+ reg_names[i]);
+ }
+}
+
+/* Print a human-readable representation of R on the standard error
+ stream. This function is designed to be used from within the
+ debugger. */
+extern void debug_regset (regset);
+DEBUG_FUNCTION void
+debug_regset (regset r)
+{
+ dump_regset (r, stderr);
+ putc ('\n', stderr);
+}
/* Write information about registers and basic blocks into FILE.
This is part of making a debugging dump. */
diff --git a/gcc/df-problems.c b/gcc/df-problems.c
index 7afbed98283..abeb118dd7e 100644
--- a/gcc/df-problems.c
+++ b/gcc/df-problems.c
@@ -44,13 +44,13 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "dce.h"
#include "vecprim.h"
+#include "valtrack.h"
+#include "dumpfile.h"
/* Note that turning REG_DEAD_DEBUGGING on will cause
gcc.c-torture/unsorted/dump-noaddr.c to fail because it prints
addresses in the dumps. */
-#if 0
-#define REG_DEAD_DEBUGGING
-#endif
+#define REG_DEAD_DEBUGGING 0
#define DF_SPARSE_THRESHOLD 32
@@ -1228,7 +1228,7 @@ df_lr_add_problem (void)
df_add_problem (&problem_LR);
/* These will be initialized when df_scan_blocks processes each
block. */
- df_lr->out_of_date_transfer_functions = BITMAP_ALLOC (NULL);
+ df_lr->out_of_date_transfer_functions = BITMAP_ALLOC (&df_bitmap_obstack);
}
@@ -1757,7 +1757,7 @@ df_live_add_problem (void)
df_add_problem (&problem_LIVE);
/* These will be initialized when df_scan_blocks processes each
block. */
- df_live->out_of_date_transfer_functions = BITMAP_ALLOC (NULL);
+ df_live->out_of_date_transfer_functions = BITMAP_ALLOC (&df_bitmap_obstack);
}
@@ -2283,7 +2283,7 @@ df_chain_add_problem (unsigned int chain_flags)
{
df_add_problem (&problem_CHAIN);
df_chain->local_flags = chain_flags;
- df_chain->out_of_date_transfer_functions = BITMAP_ALLOC (NULL);
+ df_chain->out_of_date_transfer_functions = BITMAP_ALLOC (&df_bitmap_obstack);
}
#undef df_chain_problem_p
@@ -2662,7 +2662,7 @@ df_word_lr_add_problem (void)
df_add_problem (&problem_WORD_LR);
/* These will be initialized when df_scan_blocks processes each
block. */
- df_word_lr->out_of_date_transfer_functions = BITMAP_ALLOC (NULL);
+ df_word_lr->out_of_date_transfer_functions = BITMAP_ALLOC (&df_bitmap_obstack);
}
@@ -2712,7 +2712,7 @@ df_note_alloc (bitmap all_blocks ATTRIBUTE_UNUSED)
df_note->optional_p = true;
}
-#ifdef REG_DEAD_DEBUGGING
+/* This is only used if REG_DEAD_DEBUGGING is in effect. */
static void
df_print_note (const char *prefix, rtx insn, rtx note)
{
@@ -2723,7 +2723,6 @@ df_print_note (const char *prefix, rtx insn, rtx note)
fprintf (dump_file, "\n");
}
}
-#endif
/* After reg-stack, the x86 floating point stack regs are difficult to
@@ -2772,9 +2771,8 @@ df_kill_notes (rtx insn, bitmap live)
else
{
rtx next = XEXP (link, 1);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("deleting: ", insn, link);
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("deleting: ", insn, link);
free_EXPR_LIST_node (link);
*pprev = link = next;
}
@@ -2791,9 +2789,8 @@ df_kill_notes (rtx insn, bitmap live)
else
{
rtx next = XEXP (link, 1);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("deleting: ", insn, link);
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("deleting: ", insn, link);
free_EXPR_LIST_node (link);
*pprev = link = next;
}
@@ -2825,9 +2822,8 @@ df_kill_notes (rtx insn, bitmap live)
if (deleted)
{
rtx next;
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("deleting: ", insn, link);
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("deleting: ", insn, link);
next = XEXP (link, 1);
free_EXPR_LIST_node (link);
*pprev = link = next;
@@ -2900,11 +2896,9 @@ df_set_unused_notes_for_mw (rtx insn, struct df_mw_hardreg *mws,
{
unsigned int r;
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
+ if (REG_DEAD_DEBUGGING && dump_file)
fprintf (dump_file, "mw_set_unused looking at mws[%d..%d]\n",
mws->start_regno, mws->end_regno);
-#endif
if (df_whole_mw_reg_unused_p (mws, live, artificial_uses))
{
@@ -2912,9 +2906,9 @@ df_set_unused_notes_for_mw (rtx insn, struct df_mw_hardreg *mws,
df_set_note (REG_UNUSED, insn, mws->mw_reg);
dead_debug_insert_temp (debug, regno, insn, DEBUG_TEMP_AFTER_WITH_REG);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("adding 1: ", insn, REG_NOTES (insn));
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("adding 1: ", insn, REG_NOTES (insn));
+
bitmap_set_bit (do_not_gen, regno);
/* Only do this if the value is totally dead. */
}
@@ -2926,9 +2920,8 @@ df_set_unused_notes_for_mw (rtx insn, struct df_mw_hardreg *mws,
{
df_set_note (REG_UNUSED, insn, regno_reg_rtx[r]);
dead_debug_insert_temp (debug, r, insn, DEBUG_TEMP_AFTER_WITH_REG);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("adding 2: ", insn, REG_NOTES (insn));
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("adding 2: ", insn, REG_NOTES (insn));
}
bitmap_set_bit (do_not_gen, r);
}
@@ -2978,8 +2971,7 @@ df_set_dead_notes_for_mw (rtx insn, struct df_mw_hardreg *mws,
*added_notes_p = false;
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
+ if (REG_DEAD_DEBUGGING && dump_file)
{
fprintf (dump_file, "mw_set_dead looking at mws[%d..%d]\n do_not_gen =",
mws->start_regno, mws->end_regno);
@@ -2989,7 +2981,6 @@ df_set_dead_notes_for_mw (rtx insn, struct df_mw_hardreg *mws,
fprintf (dump_file, " artificial uses =");
df_print_regset (dump_file, artificial_uses);
}
-#endif
if (df_whole_mw_reg_dead_p (mws, live, artificial_uses, do_not_gen))
{
@@ -3000,9 +2991,8 @@ df_set_dead_notes_for_mw (rtx insn, struct df_mw_hardreg *mws,
}
/* Add a dead note for the entire multi word register. */
df_set_note (REG_DEAD, insn, mws->mw_reg);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("adding 1: ", insn, REG_NOTES (insn));
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("adding 1: ", insn, REG_NOTES (insn));
}
else
{
@@ -3017,9 +3007,8 @@ df_set_dead_notes_for_mw (rtx insn, struct df_mw_hardreg *mws,
return;
}
df_set_note (REG_DEAD, insn, regno_reg_rtx[r]);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("adding 2: ", insn, REG_NOTES (insn));
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("adding 2: ", insn, REG_NOTES (insn));
}
}
return;
@@ -3036,13 +3025,11 @@ df_create_unused_note (rtx insn, df_ref def,
{
unsigned int dregno = DF_REF_REGNO (def);
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
+ if (REG_DEAD_DEBUGGING && dump_file)
{
fprintf (dump_file, " regular looking at def ");
df_ref_debug (def, dump_file);
}
-#endif
if (!((DF_REF_FLAGS (def) & DF_REF_MW_HARDREG)
|| bitmap_bit_p (live, dregno)
@@ -3053,321 +3040,14 @@ df_create_unused_note (rtx insn, df_ref def,
? *DF_REF_REAL_LOC (def): DF_REF_REG (def);
df_set_note (REG_UNUSED, insn, reg);
dead_debug_insert_temp (debug, dregno, insn, DEBUG_TEMP_AFTER_WITH_REG);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("adding 3: ", insn, REG_NOTES (insn));
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("adding 3: ", insn, REG_NOTES (insn));
}
return;
}
-/* Initialize DEBUG to an empty list, and clear USED, if given. */
-void
-dead_debug_init (struct dead_debug *debug, bitmap used)
-{
- debug->head = NULL;
- debug->used = used;
- debug->to_rescan = NULL;
- if (used)
- bitmap_clear (used);
-}
-
-/* Reset all debug uses in HEAD, and clear DEBUG->to_rescan bits of
- each reset insn. DEBUG is not otherwise modified. If HEAD is
- DEBUG->head, DEBUG->head will be set to NULL at the end.
- Otherwise, entries from DEBUG->head that pertain to reset insns
- will be removed, and only then rescanned. */
-
-static void
-dead_debug_reset_uses (struct dead_debug *debug, struct dead_debug_use *head)
-{
- bool got_head = (debug->head == head);
- bitmap rescan;
- struct dead_debug_use **tailp = &debug->head;
- struct dead_debug_use *cur;
- bitmap_iterator bi;
- unsigned int uid;
-
- if (got_head)
- rescan = NULL;
- else
- rescan = BITMAP_ALLOC (NULL);
-
- while (head)
- {
- struct dead_debug_use *next = head->next;
- rtx insn;
-
- insn = DF_REF_INSN (head->use);
- if (!next || DF_REF_INSN (next->use) != insn)
- {
- INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
- if (got_head)
- df_insn_rescan_debug_internal (insn);
- else
- bitmap_set_bit (rescan, INSN_UID (insn));
- if (debug->to_rescan)
- bitmap_clear_bit (debug->to_rescan, INSN_UID (insn));
- }
- XDELETE (head);
- head = next;
- }
-
- if (got_head)
- {
- debug->head = NULL;
- return;
- }
-
- while ((cur = *tailp))
- if (bitmap_bit_p (rescan, INSN_UID (DF_REF_INSN (cur->use))))
- {
- *tailp = cur->next;
- XDELETE (cur);
- }
- else
- tailp = &cur->next;
-
- EXECUTE_IF_SET_IN_BITMAP (rescan, 0, uid, bi)
- {
- struct df_insn_info *insn_info = DF_INSN_UID_SAFE_GET (uid);
- if (insn_info)
- df_insn_rescan_debug_internal (insn_info->insn);
- }
-
- BITMAP_FREE (rescan);
-}
-
-/* Reset all debug insns with pending uses. Release the bitmap in it,
- unless it is USED. USED must be the same bitmap passed to
- dead_debug_init. */
-void
-dead_debug_finish (struct dead_debug *debug, bitmap used)
-{
- if (debug->used != used)
- BITMAP_FREE (debug->used);
-
- dead_debug_reset_uses (debug, debug->head);
-
- if (debug->to_rescan)
- {
- bitmap_iterator bi;
- unsigned int uid;
-
- EXECUTE_IF_SET_IN_BITMAP (debug->to_rescan, 0, uid, bi)
- {
- struct df_insn_info *insn_info = DF_INSN_UID_SAFE_GET (uid);
- if (insn_info)
- df_insn_rescan (insn_info->insn);
- }
- BITMAP_FREE (debug->to_rescan);
- }
-}
-
-/* Add USE to DEBUG. It must be a dead reference to UREGNO in a debug
- insn. Create a bitmap for DEBUG as needed. */
-void
-dead_debug_add (struct dead_debug *debug, df_ref use, unsigned int uregno)
-{
- struct dead_debug_use *newddu = XNEW (struct dead_debug_use);
-
- newddu->use = use;
- newddu->next = debug->head;
- debug->head = newddu;
-
- if (!debug->used)
- debug->used = BITMAP_ALLOC (NULL);
-
- /* ??? If we dealt with split multi-registers below, we should set
- all registers for the used mode in case of hardware
- registers. */
- bitmap_set_bit (debug->used, uregno);
-}
-
-/* If UREGNO is referenced by any entry in DEBUG, emit a debug insn
- before or after INSN (depending on WHERE), that binds a debug temp
- to the widest-mode use of UREGNO, if WHERE is *_WITH_REG, or the
- value stored in UREGNO by INSN otherwise, and replace all uses of
- UREGNO in DEBUG with uses of the debug temp. INSN must be where
- UREGNO dies, if WHERE is *_BEFORE_*, or where it is set otherwise.
- Return the number of debug insns emitted. */
-int
-dead_debug_insert_temp (struct dead_debug *debug, unsigned int uregno,
- rtx insn, enum debug_temp_where where)
-{
- struct dead_debug_use **tailp = &debug->head;
- struct dead_debug_use *cur;
- struct dead_debug_use *uses = NULL;
- struct dead_debug_use **usesp = &uses;
- rtx reg = NULL;
- rtx breg;
- rtx dval;
- rtx bind;
-
- if (!debug->used || !bitmap_clear_bit (debug->used, uregno))
- return 0;
-
- /* Move all uses of uregno from debug->head to uses, setting mode to
- the widest referenced mode. */
- while ((cur = *tailp))
- {
- if (DF_REF_REGNO (cur->use) == uregno)
- {
- *usesp = cur;
- usesp = &cur->next;
- *tailp = cur->next;
- cur->next = NULL;
- if (!reg
- || (GET_MODE_BITSIZE (GET_MODE (reg))
- < GET_MODE_BITSIZE (GET_MODE (*DF_REF_REAL_LOC (cur->use)))))
- reg = *DF_REF_REAL_LOC (cur->use);
- }
- else
- tailp = &(*tailp)->next;
- }
-
- /* We may have dangling bits in debug->used for registers that were part
- of a multi-register use, one component of which has been reset. */
- if (reg == NULL)
- {
- gcc_checking_assert (!uses);
- return 0;
- }
-
- gcc_checking_assert (uses);
-
- breg = reg;
- /* Recover the expression INSN stores in REG. */
- if (where == DEBUG_TEMP_BEFORE_WITH_VALUE)
- {
- rtx set = single_set (insn);
- rtx dest, src;
-
- if (set)
- {
- dest = SET_DEST (set);
- src = SET_SRC (set);
- /* Lose if the REG-setting insn is a CALL. */
- if (GET_CODE (src) == CALL)
- {
- while (uses)
- {
- cur = uses->next;
- XDELETE (uses);
- uses = cur;
- }
- return 0;
- }
- }
-
- /* ??? Should we try to extract it from a PARALLEL? */
- if (!set)
- breg = NULL;
- /* Cool, it's the same REG, we can use SRC. */
- else if (dest == reg)
- breg = copy_rtx (src);
- else if (REG_P (dest))
- {
- /* Hmm... Something's fishy, we should be setting REG here. */
- if (REGNO (dest) != REGNO (reg))
- breg = NULL;
- /* If we're not overwriting all the hardware registers that
- setting REG in its mode would, we won't know what to bind
- the debug temp to. ??? We could bind the debug_expr to a
- CONCAT or PARALLEL with the split multi-registers, and
- replace them as we found the corresponding sets. */
- else if (REGNO (reg) < FIRST_PSEUDO_REGISTER
- && (hard_regno_nregs[REGNO (reg)][GET_MODE (reg)]
- != hard_regno_nregs[REGNO (reg)][GET_MODE (dest)]))
- breg = NULL;
- /* Ok, it's the same (hardware) REG, but with a different
- mode, so SUBREG it. */
- else
- breg = lowpart_subreg (GET_MODE (reg), copy_rtx (src),
- GET_MODE (dest));
- }
- else if (GET_CODE (dest) == SUBREG)
- {
- /* We should be setting REG here. Lose. */
- if (REGNO (SUBREG_REG (dest)) != REGNO (reg))
- breg = NULL;
- /* Lose if we're setting something other than the lowpart of
- REG. */
- else if (!subreg_lowpart_p (dest))
- breg = NULL;
- /* If we're not overwriting all the hardware registers that
- setting REG in its mode would, we won't know what to bind
- the debug temp to. */
- else if (REGNO (reg) < FIRST_PSEUDO_REGISTER
- && (hard_regno_nregs[REGNO (reg)][GET_MODE (reg)]
- != hard_regno_nregs[REGNO (reg)][GET_MODE (dest)]))
- breg = NULL;
- /* Yay, we can use SRC, just adjust its mode. */
- else
- breg = lowpart_subreg (GET_MODE (reg), copy_rtx (src),
- GET_MODE (dest));
- }
- /* Oh well, we're out of luck. */
- else
- breg = NULL;
-
- /* We couldn't figure out the value stored in REG, so reset all
- of its pending debug uses. */
- if (!breg)
- {
- dead_debug_reset_uses (debug, uses);
- return 0;
- }
- }
-
- /* If there's a single (debug) use of an otherwise unused REG, and
- the debug use is not part of a larger expression, then it
- probably doesn't make sense to introduce a new debug temp. */
- if (where == DEBUG_TEMP_AFTER_WITH_REG && !uses->next)
- {
- rtx next = DF_REF_INSN (uses->use);
-
- if (DEBUG_INSN_P (next) && reg == INSN_VAR_LOCATION_LOC (next))
- {
- XDELETE (uses);
- return 0;
- }
- }
-
- /* Create DEBUG_EXPR (and DEBUG_EXPR_DECL). */
- dval = make_debug_expr_from_rtl (reg);
-
- /* Emit a debug bind insn before the insn in which reg dies. */
- bind = gen_rtx_VAR_LOCATION (GET_MODE (reg),
- DEBUG_EXPR_TREE_DECL (dval), breg,
- VAR_INIT_STATUS_INITIALIZED);
-
- if (where == DEBUG_TEMP_AFTER_WITH_REG)
- bind = emit_debug_insn_after (bind, insn);
- else
- bind = emit_debug_insn_before (bind, insn);
- df_insn_rescan (bind);
-
- /* Adjust all uses. */
- while ((cur = uses))
- {
- if (GET_MODE (*DF_REF_REAL_LOC (cur->use)) == GET_MODE (reg))
- *DF_REF_REAL_LOC (cur->use) = dval;
- else
- *DF_REF_REAL_LOC (cur->use)
- = gen_lowpart_SUBREG (GET_MODE (*DF_REF_REAL_LOC (cur->use)), dval);
- /* ??? Should we simplify subreg of subreg? */
- if (debug->to_rescan == NULL)
- debug->to_rescan = BITMAP_ALLOC (NULL);
- bitmap_set_bit (debug->to_rescan, INSN_UID (DF_REF_INSN (cur->use)));
- uses = cur->next;
- XDELETE (cur);
- }
-
- return 1;
-}
-
/* Recompute the REG_DEAD and REG_UNUSED notes and compute register
info: lifetime, bb, and number of defs and uses for basic block
BB. The three bitvectors are scratch regs used here. */
@@ -3387,23 +3067,20 @@ df_note_bb_compute (unsigned int bb_index,
bitmap_copy (live, df_get_live_out (bb));
bitmap_clear (artificial_uses);
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
+ if (REG_DEAD_DEBUGGING && dump_file)
{
fprintf (dump_file, "live at bottom ");
df_print_regset (dump_file, live);
}
-#endif
/* Process the artificial defs and uses at the bottom of the block
to begin processing. */
for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++)
{
df_ref def = *def_rec;
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
+
+ if (REG_DEAD_DEBUGGING && dump_file)
fprintf (dump_file, "artificial def %d\n", DF_REF_REGNO (def));
-#endif
if ((DF_REF_FLAGS (def) & DF_REF_AT_TOP) == 0)
bitmap_clear_bit (live, DF_REF_REGNO (def));
@@ -3423,13 +3100,11 @@ df_note_bb_compute (unsigned int bb_index,
}
}
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
+ if (REG_DEAD_DEBUGGING && dump_file)
{
fprintf (dump_file, "live before artificials out ");
df_print_regset (dump_file, live);
}
-#endif
FOR_BB_INSNS_REVERSE (bb, insn)
{
@@ -3448,13 +3123,12 @@ df_note_bb_compute (unsigned int bb_index,
/* Process the defs. */
if (CALL_P (insn))
{
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
+ if (REG_DEAD_DEBUGGING && dump_file)
{
fprintf (dump_file, "processing call %d\n live =", INSN_UID (insn));
df_print_regset (dump_file, live);
}
-#endif
+
/* We only care about real sets for calls. Clobbers cannot
be depended on to really die. */
mws_rec = DF_INSN_UID_MWS (uid);
@@ -3541,13 +3215,12 @@ df_note_bb_compute (unsigned int bb_index,
df_ref use = *use_rec;
unsigned int uregno = DF_REF_REGNO (use);
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file && !debug_insn)
+ if (REG_DEAD_DEBUGGING && dump_file && !debug_insn)
{
fprintf (dump_file, " regular looking at use ");
df_ref_debug (use, dump_file);
}
-#endif
+
if (!bitmap_bit_p (live, uregno))
{
if (debug_insn)
@@ -3578,9 +3251,8 @@ df_note_bb_compute (unsigned int bb_index,
? *DF_REF_REAL_LOC (use) : DF_REF_REG (use);
df_set_note (REG_DEAD, insn, reg);
-#ifdef REG_DEAD_DEBUGGING
- df_print_note ("adding 4: ", insn, REG_NOTES (insn));
-#endif
+ if (REG_DEAD_DEBUGGING)
+ df_print_note ("adding 4: ", insn, REG_NOTES (insn));
}
/* This register is now live. */
bitmap_set_bit (live, uregno);
@@ -3612,11 +3284,6 @@ df_note_compute (bitmap all_blocks)
bitmap_initialize (&do_not_gen, &df_bitmap_obstack);
bitmap_initialize (&artificial_uses, &df_bitmap_obstack);
-#ifdef REG_DEAD_DEBUGGING
- if (dump_file)
- print_rtl_with_bb (dump_file, get_insns());
-#endif
-
EXECUTE_IF_SET_IN_BITMAP (all_blocks, 0, bb_index, bi)
{
df_note_bb_compute (bb_index, &live, &do_not_gen, &artificial_uses);
@@ -4068,6 +3735,19 @@ can_move_insns_across (rtx from, rtx to, rtx across_from, rtx across_to,
for (insn = across_to; ; insn = next)
{
+ if (CALL_P (insn))
+ {
+ if (RTL_CONST_OR_PURE_CALL_P (insn))
+ /* Pure functions can read from memory. Const functions can
+ read from arguments that the ABI has forced onto the stack.
+ Neither sort of read can be volatile. */
+ memrefs_in_across |= MEMREF_NORMAL;
+ else
+ {
+ memrefs_in_across |= MEMREF_VOLATILE;
+ mem_sets_in_across |= MEMREF_VOLATILE;
+ }
+ }
if (NONDEBUG_INSN_P (insn))
{
memrefs_in_across |= for_each_rtx (&PATTERN (insn), find_memory,
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index 0d36ad13893..0fb1f640d9b 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -38,12 +38,11 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "sbitmap.h"
#include "bitmap.h"
-#include "timevar.h"
+#include "dumpfile.h"
#include "tree.h"
#include "target.h"
#include "target-def.h"
#include "df.h"
-#include "tree-pass.h"
#include "emit-rtl.h" /* FIXME: Can go away once crtl is moved to rtl.h. */
DEF_VEC_P(df_ref);
@@ -3108,11 +3107,8 @@ df_uses_record (struct df_collection_rec *collection_rec,
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case PC:
case CC0:
case ADDR_VEC:
@@ -4478,7 +4474,6 @@ df_entry_block_bitmap_verify (bool abort_if_fail)
if (!is_eq && abort_if_fail)
{
- print_current_pass (stderr);
fprintf (stderr, "entry_block_defs = ");
df_print_regset (stderr, &entry_block_defs);
fprintf (stderr, "df->entry_block_defs = ");
@@ -4508,7 +4503,6 @@ df_exit_block_bitmap_verify (bool abort_if_fail)
if (!is_eq && abort_if_fail)
{
- print_current_pass (stderr);
fprintf (stderr, "exit_block_uses = ");
df_print_regset (stderr, &exit_block_uses);
fprintf (stderr, "df->exit_block_uses = ");
diff --git a/gcc/df.h b/gcc/df.h
index 1b4882d1d16..e59ae126f2e 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -1101,46 +1101,4 @@ extern void union_defs (df_ref, struct web_entry *,
unsigned int *used, struct web_entry *,
bool (*fun) (struct web_entry *, struct web_entry *));
-/* Debug uses of dead regs. */
-
-/* Node of a linked list of uses of dead REGs in debug insns. */
-struct dead_debug_use
-{
- df_ref use;
- struct dead_debug_use *next;
-};
-
-/* Linked list of the above, with a bitmap of the REGs in the
- list. */
-struct dead_debug
-{
- struct dead_debug_use *head;
- bitmap used;
- bitmap to_rescan;
-};
-
-/* This type controls the behavior of dead_debug_insert_temp WRT
- UREGNO and INSN. */
-enum debug_temp_where
- {
- /* Bind a newly-created debug temporary to a REG for UREGNO, and
- insert the debug insn before INSN. REG is expected to die at
- INSN. */
- DEBUG_TEMP_BEFORE_WITH_REG = -1,
- /* Bind a newly-created debug temporary to the value INSN stores
- in REG, and insert the debug insn before INSN. */
- DEBUG_TEMP_BEFORE_WITH_VALUE = 0,
- /* Bind a newly-created debug temporary to a REG for UREGNO, and
- insert the debug insn after INSN. REG is expected to be set at
- INSN. */
- DEBUG_TEMP_AFTER_WITH_REG = 1
- };
-
-extern void dead_debug_init (struct dead_debug *, bitmap);
-extern void dead_debug_finish (struct dead_debug *, bitmap);
-extern void dead_debug_add (struct dead_debug *, df_ref, unsigned int);
-extern int dead_debug_insert_temp (struct dead_debug *,
- unsigned int uregno, rtx insn,
- enum debug_temp_where);
-
#endif /* GCC_DF_H */
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 4913eed9c67..b3ae86c74a8 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -172,7 +172,7 @@ diagnostic_finish (diagnostic_context *context)
pp_verbatim (context->printer,
_("%s: some warnings being treated as errors"),
progname);
- pp_flush (context->printer);
+ pp_newline_and_flush (context->printer);
}
}
@@ -530,7 +530,7 @@ diagnostic_report_diagnostic (diagnostic_context *context,
try to flush out the previous error, then let this one
through. Don't do this more than once. */
if (diagnostic->kind == DK_ICE && context->lock == 1)
- pp_flush (context->printer);
+ pp_newline_and_flush (context->printer);
else
error_recursion (context);
}
@@ -650,7 +650,7 @@ diagnostic_report_diagnostic (diagnostic_context *context,
pp_output_formatted_text (context->printer);
diagnostic_show_locus (context, diagnostic);
(*diagnostic_finalizer (context)) (context, diagnostic);
- pp_flush (context->printer);
+ pp_newline_and_flush (context->printer);
diagnostic_action_after_output (context, diagnostic);
diagnostic->message.format_spec = saved_format_spec;
diagnostic->x_data = NULL;
@@ -708,7 +708,7 @@ verbatim (const char *gmsgid, ...)
text.locus = NULL;
text.x_data = NULL;
pp_format_verbatim (global_dc->printer, &text);
- pp_flush (global_dc->printer);
+ pp_newline_and_flush (global_dc->printer);
va_end (ap);
}
@@ -986,7 +986,7 @@ error_recursion (diagnostic_context *context)
diagnostic_info diagnostic;
if (context->lock < 3)
- pp_flush (context->printer);
+ pp_newline_and_flush (context->printer);
fnotice (stderr,
"Internal compiler error: Error reporting routines re-entered.\n");
diff --git a/gcc/doc/cfg.texi b/gcc/doc/cfg.texi
index d9867fb56f0..4e77cd10299 100644
--- a/gcc/doc/cfg.texi
+++ b/gcc/doc/cfg.texi
@@ -1,6 +1,5 @@
@c -*-texinfo-*-
-@c Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
-@c Foundation, Inc.
+@c Copyright (C) 2001-2012 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -14,7 +13,7 @@
@findex basic-block.h
A control flow graph (CFG) is a data structure built on top of the
-intermediate code representation (the RTL or @code{tree} instruction
+intermediate code representation (the RTL or @code{GIMPLE} instruction
stream) abstracting the control flow behavior of a function that is
being compiled. The CFG is a directed graph where the vertices
represent basic blocks and edges represent possible transfer of
@@ -22,6 +21,20 @@ control flow from one basic block to another. The data structures
used to represent the control flow graph are defined in
@file{basic-block.h}.
+In GCC, the representation of control flow is maintained throughout
+the compilation process, from constructing the CFG early in
+@code{pass_build_cfg} to @code{pass_free_cfg} (see @file{passes.c}).
+The CFG takes various different modes and may undergo extensive
+manipulations, but the graph is always valid between its construction
+and its release. This way, transfer of information such as data flow,
+a measured profile, or the loop tree, can be propagated through the
+passes pipeline, and even from @code{GIMPLE} to @code{RTL}.
+
+Often the CFG may be better viewed as integral part of instruction
+chain, than structure built on the top of it. Updating the compiler's
+intermediate representation for instructions can not be easily done
+without proper maintenance of the CFG simultaneously.
+
@menu
* Basic Blocks:: The definition and representation of basic blocks.
* Edges:: Types of edges and their representation.
@@ -40,16 +53,10 @@ A basic block is a straight-line sequence of code with only one entry
point and only one exit. In GCC, basic blocks are represented using
the @code{basic_block} data type.
-@findex next_bb, prev_bb, FOR_EACH_BB
-Two pointer members of the @code{basic_block} structure are the
-pointers @code{next_bb} and @code{prev_bb}. These are used to keep
-doubly linked chain of basic blocks in the same order as the
-underlying instruction stream. The chain of basic blocks is updated
-transparently by the provided API for manipulating the CFG@. The macro
-@code{FOR_EACH_BB} can be used to visit all the basic blocks in
-lexicographical order. Dominator traversals are also possible using
-@code{walk_dominator_tree}. Given two basic blocks A and B, block A
-dominates block B if A is @emph{always} executed before B@.
+@findex ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR
+Special basic blocks represent possible entry and exit points of a
+function. These blocks are called @code{ENTRY_BLOCK_PTR} and
+@code{EXIT_BLOCK_PTR}. These blocks do not contain any code.
@findex BASIC_BLOCK
The @code{BASIC_BLOCK} array contains all basic blocks in an
@@ -61,39 +68,61 @@ The total number of basic blocks in the function is
the total number of basic blocks may vary during the compilation
process, as passes reorder, create, duplicate, and destroy basic
blocks. The index for any block should never be greater than
-@code{last_basic_block}.
+@code{last_basic_block}. The indices 0 and 1 are special codes
+reserved for @code{ENTRY_BLOCK} and @code{EXIT_BLOCK}, the
+indices of @code{ENTRY_BLOCK_PTR} and @code{EXIT_BLOCK_PTR}.
-@findex ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR
-Special basic blocks represent possible entry and exit points of a
-function. These blocks are called @code{ENTRY_BLOCK_PTR} and
-@code{EXIT_BLOCK_PTR}. These blocks do not contain any code, and are
-not elements of the @code{BASIC_BLOCK} array. Therefore they have
-been assigned unique, negative index numbers.
+@findex next_bb, prev_bb, FOR_EACH_BB, FOR_ALL_BB
+Two pointer members of the @code{basic_block} structure are the
+pointers @code{next_bb} and @code{prev_bb}. These are used to keep
+doubly linked chain of basic blocks in the same order as the
+underlying instruction stream. The chain of basic blocks is updated
+transparently by the provided API for manipulating the CFG@. The macro
+@code{FOR_EACH_BB} can be used to visit all the basic blocks in
+lexicographical order, except @code{ENTRY_BLOCK} and @code{EXIT_BLOCK}.
+The macro @code{FOR_ALL_BB} also visits all basic blocks in
+lexicographical order, including @code{ENTRY_BLOCK} and @code{EXIT_BLOCK}.
+
+@findex post_order_compute, inverted_post_order_compute, walk_dominator_tree
+The functions @code{post_order_compute} and @code{inverted_post_order_compute}
+can be used to compute topological orders of the CFG. The orders are
+stored as vectors of basic block indices. The @code{BASIC_BLOCK} array
+can be used to iterate each basic block by index.
+Dominator traversals are also possible using
+@code{walk_dominator_tree}. Given two basic blocks A and B, block A
+dominates block B if A is @emph{always} executed before B@.
Each @code{basic_block} also contains pointers to the first
instruction (the @dfn{head}) and the last instruction (the @dfn{tail})
or @dfn{end} of the instruction stream contained in a basic block. In
fact, since the @code{basic_block} data type is used to represent
-blocks in both major intermediate representations of GCC (@code{tree}
+blocks in both major intermediate representations of GCC (@code{GIMPLE}
and RTL), there are pointers to the head and end of a basic block for
-both representations.
+both representations, stored in intermediate representation specific
+data in the @code{il} field of @code{struct basic_block_def}.
+
+@findex CODE_LABEL
+@findex NOTE_INSN_BASIC_BLOCK
+For RTL, these pointers are @code{BB_HEAD} and @code{BB_END}.
-@findex NOTE_INSN_BASIC_BLOCK, CODE_LABEL, notes
-For RTL, these pointers are @code{rtx head, end}. In the RTL function
-representation, the head pointer always points either to a
-@code{NOTE_INSN_BASIC_BLOCK} or to a @code{CODE_LABEL}, if present.
+@cindex insn notes, notes
+@findex NOTE_INSN_BASIC_BLOCK
In the RTL representation of a function, the instruction stream
-contains not only the ``real'' instructions, but also @dfn{notes}.
+contains not only the ``real'' instructions, but also @dfn{notes}
+or @dfn{insn notes} (to distinguish them from @dfn{reg notes}).
Any function that moves or duplicates the basic blocks needs
to take care of updating of these notes. Many of these notes expect
-that the instruction stream consists of linear regions, making such
-updates difficult. The @code{NOTE_INSN_BASIC_BLOCK} note is the only
-kind of note that may appear in the instruction stream contained in a
-basic block. The instruction stream of a basic block always follows a
-@code{NOTE_INSN_BASIC_BLOCK}, but zero or more @code{CODE_LABEL}
-nodes can precede the block note. A basic block ends by control flow
-instruction or last instruction before following @code{CODE_LABEL} or
-@code{NOTE_INSN_BASIC_BLOCK}. A @code{CODE_LABEL} cannot appear in
+that the instruction stream consists of linear regions, so updating
+can sometimes be tedious. All types of insn notes are defined
+in @file{insn-notes.def}.
+
+In the RTL function representation, the instructions contained in a
+basic block always follow a @code{NOTE_INSN_BASIC_BLOCK}, but zero
+or more @code{CODE_LABEL} nodes can precede the block note.
+A basic block ends with a control flow instruction or with the last
+instruction before the next @code{CODE_LABEL} or
+@code{NOTE_INSN_BASIC_BLOCK}.
+By definition, a @code{CODE_LABEL} cannot appear in the middle of
the instruction stream of a basic block.
@findex can_fallthru
@@ -110,27 +139,34 @@ Before any edge is made @dfn{fall-thru}, the existence of such
construct in the way needs to be checked by calling
@code{can_fallthru} function.
-@cindex block statement iterators
-For the @code{tree} representation, the head and end of the basic block
-are being pointed to by the @code{stmt_list} field, but this special
-@code{tree} should never be referenced directly. Instead, at the tree
-level abstract containers and iterators are used to access statements
-and expressions in basic blocks. These iterators are called
-@dfn{block statement iterators} (BSIs). Grep for @code{^bsi}
-in the various @file{tree-*} files.
-The following snippet will pretty-print all the statements of the
-program in the GIMPLE representation.
+@cindex GIMPLE statement iterators
+For the @code{GIMPLE} representation, the PHI nodes and statements
+contained in a basic block are in a @code{gimple_seq} pointed to by
+the basic block intermediate language specific pointers.
+Abstract containers and iterators are used to access the PHI nodes
+and statements in a basic blocks. These iterators are called
+@dfn{GIMPLE statement iterators} (GSIs). Grep for @code{^gsi}
+in the various @file{gimple-*} and @file{tree-*} files.
+The following snippet will pretty-print all PHI nodes the statements
+of the current function in the GIMPLE representation.
@smallexample
+basic_block bb;
+
FOR_EACH_BB (bb)
@{
- block_stmt_iterator si;
-
- for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si))
- @{
- tree stmt = bsi_stmt (si);
- print_generic_stmt (stderr, stmt, 0);
- @}
+ gimple_stmt_iterator si;
+
+ for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
+ @{
+ gimple phi = gsi_stmt (si);
+ print_gimple_stmt (dump_file, phi, 0, TDF_SLIM);
+ @}
+ for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
+ @{
+ gimple stmt = gsi_stmt (si);
+ print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
+ @}
@}
@end smallexample
@@ -144,7 +180,7 @@ Edges represent possible control flow transfers from the end of some
basic block A to the head of another basic block B@. We say that A is
a predecessor of B, and B is a successor of A@. Edges are represented
in GCC with the @code{edge} data type. Each @code{edge} acts as a
-link between two basic blocks: the @code{src} member of an edge
+link between two basic blocks: The @code{src} member of an edge
points to the predecessor basic block of the @code{dest} basic block.
The members @code{preds} and @code{succs} of the @code{basic_block} data
type point to type-safe vectors of edges to the predecessors and
@@ -245,7 +281,7 @@ is needed. Note that this may require creation of a new basic block.
Exception handling edges represent possible control transfers from a
trapping instruction to an exception handler. The definition of
``trapping'' varies. In C++, only function calls can throw, but for
-Java, exceptions like division by zero or segmentation fault are
+Java and Ada, exceptions like division by zero or segmentation fault are
defined and thus each instruction possibly throwing this kind of
exception needs to be handled as control flow instruction. Exception
edges have the @code{EDGE_ABNORMAL} and @code{EDGE_EH} flags set.
@@ -260,7 +296,7 @@ anyway. The edges can be eliminated via @code{purge_dead_edges} call.
In the RTL representation, the destination of an exception edge is
specified by @code{REG_EH_REGION} note attached to the insn.
In case of a trapping call the @code{EDGE_ABNORMAL_CALL} flag is set
-too. In the @code{tree} representation, this extra flag is not set.
+too. In the @code{GIMPLE} representation, this extra flag is not set.
@findex may_trap_p, tree_could_trap_p
In the RTL representation, the predicate @code{may_trap_p} may be used
@@ -320,9 +356,11 @@ y:
goto *x;
@end smallexample
+@findex pass_duplicate_computed_gotos
However, the classic problem with this transformation is that it has a
runtime cost in there resulting code: An extra jump. Therefore, the
-computed jumps are un-factored in the later passes of the compiler.
+computed jumps are un-factored in the later passes of the compiler
+(in the pass called @code{pass_duplicate_computed_gotos}).
Be aware of that when you work on passes in that area. There have
been numerous examples already where the compile time for code with
unfactored computed jumps caused some serious headaches.
@@ -343,7 +381,7 @@ edge from the call to the label is created with the
@findex LABEL_ALTERNATE_NAME
By definition, execution of function starts at basic block 0, so there
is always an edge from the @code{ENTRY_BLOCK_PTR} to basic block 0.
-There is no @code{tree} representation for alternate entry points at
+There is no @code{GIMPLE} representation for alternate entry points at
this moment. In RTL, alternate entry points are specified by
@code{CODE_LABEL} with @code{LABEL_ALTERNATE_NAME} defined. This
feature is currently used for multiple entry point prologues and is
@@ -372,7 +410,7 @@ speed. In such cases it is useful to know information about how often
some given block will be executed. That is the purpose for
maintaining profile within the flow graph.
GCC can handle profile information obtained through @dfn{profile
-feedback}, but it can also estimate branch probabilities based on
+feedback}, but it can also estimate branch probabilities based on
statics and heuristics.
@cindex profile feedback
@@ -425,7 +463,7 @@ Each edge also contains a branch probability field: an integer in the
range from 0 to @code{REG_BR_PROB_BASE}. It represents probability of
passing control from the end of the @code{src} basic block to the
@code{dest} basic block, i.e.@: the probability that control will flow
-along this edge. The @code{EDGE_FREQUENCY} macro is available to
+along this edge. The @code{EDGE_FREQUENCY} macro is available to
compute how frequently a given edge is taken. There is a @code{count}
field for each edge as well, representing same information as for a
basic block.
@@ -482,76 +520,63 @@ manipulation routines when necessary. These hooks are defined in
manipulations, including block splitting and merging, edge redirection
and creating and deleting basic blocks. These hooks should provide
everything you need to maintain and manipulate the CFG in both the RTL
-and @code{tree} representation.
+and @code{GIMPLE} representation.
At the moment, the basic block boundaries are maintained transparently
when modifying instructions, so there rarely is a need to move them
manually (such as in case someone wants to output instruction outside
basic block explicitly).
-Often the CFG may be better viewed as integral part of instruction
-chain, than structure built on the top of it. However, in principle
-the control flow graph for the @code{tree} representation is
-@emph{not} an integral part of the representation, in that a function
-tree may be expanded without first building a flow graph for the
-@code{tree} representation at all. This happens when compiling
-without any @code{tree} optimization enabled. When the @code{tree}
-optimizations are enabled and the instruction stream is rewritten in
-SSA form, the CFG is very tightly coupled with the instruction stream.
-In particular, statement insertion and removal has to be done with
-care. In fact, the whole @code{tree} representation can not be easily
-used or maintained without proper maintenance of the CFG
-simultaneously.
-
-@findex BLOCK_FOR_INSN, bb_for_stmt
+
+@findex BLOCK_FOR_INSN, gimple_bb
In the RTL representation, each instruction has a
@code{BLOCK_FOR_INSN} value that represents pointer to the basic block
-that contains the instruction. In the @code{tree} representation, the
-function @code{bb_for_stmt} returns a pointer to the basic block
+that contains the instruction. In the @code{GIMPLE} representation, the
+function @code{gimple_bb} returns a pointer to the basic block
containing the queried statement.
-@cindex block statement iterators
-When changes need to be applied to a function in its @code{tree}
-representation, @dfn{block statement iterators} should be used. These
+@cindex GIMPLE statement iterators
+When changes need to be applied to a function in its @code{GIMPLE}
+representation, @dfn{GIMPLE statement iterators} should be used. These
iterators provide an integrated abstraction of the flow graph and the
instruction stream. Block statement iterators are constructed using
-the @code{block_stmt_iterator} data structure and several modifier are
+the @code{gimple_stmt_iterator} data structure and several modifier are
available, including the following:
@ftable @code
-@item bsi_start
-This function initializes a @code{block_stmt_iterator} that points to
+@item gsi_start
+This function initializes a @code{gimple_stmt_iterator} that points to
the first non-empty statement in a basic block.
-@item bsi_last
-This function initializes a @code{block_stmt_iterator} that points to
+@item gsi_last
+This function initializes a @code{gimple_stmt_iterator} that points to
the last statement in a basic block.
-@item bsi_end_p
-This predicate is @code{true} if a @code{block_stmt_iterator}
+@item gsi_end_p
+This predicate is @code{true} if a @code{gimple_stmt_iterator}
represents the end of a basic block.
-@item bsi_next
-This function takes a @code{block_stmt_iterator} and makes it point to
+@item gsi_next
+This function takes a @code{gimple_stmt_iterator} and makes it point to
its successor.
-@item bsi_prev
-This function takes a @code{block_stmt_iterator} and makes it point to
+@item gsi_prev
+This function takes a @code{gimple_stmt_iterator} and makes it point to
its predecessor.
-@item bsi_insert_after
-This function inserts a statement after the @code{block_stmt_iterator}
+@item gsi_insert_after
+This function inserts a statement after the @code{gimple_stmt_iterator}
passed in. The final parameter determines whether the statement
iterator is updated to point to the newly inserted statement, or left
pointing to the original statement.
-@item bsi_insert_before
-This function inserts a statement before the @code{block_stmt_iterator}
+@item gsi_insert_before
+This function inserts a statement before the @code{gimple_stmt_iterator}
passed in. The final parameter determines whether the statement
iterator is updated to point to the newly inserted statement, or left
pointing to the original statement.
-@item bsi_remove
-This function removes the @code{block_stmt_iterator} passed in and
+@item gsi_remove
+This function removes the @code{gimple_stmt_iterator} passed in and
rechains the remaining statements in a basic block, if any.
@end ftable
@@ -591,8 +616,8 @@ target of a jump or branch instruction.
@findex insert_insn_on_edge
@findex commit_edge_insertions
-@findex bsi_insert_on_edge
-@findex bsi_commit_edge_inserts
+@findex gsi_insert_on_edge
+@findex gsi_commit_edge_inserts
@cindex edge splitting
For a global optimizer, a common operation is to split edges in the
flow graph and insert instructions on them. In the RTL
@@ -602,20 +627,17 @@ representation, this can be easily done using the
call that will take care of moving the inserted instructions off the
edge into the instruction stream contained in a basic block. This
includes the creation of new basic blocks where needed. In the
-@code{tree} representation, the equivalent functions are
-@code{bsi_insert_on_edge} which inserts a block statement
-iterator on an edge, and @code{bsi_commit_edge_inserts} which flushes
+@code{GIMPLE} representation, the equivalent functions are
+@code{gsi_insert_on_edge} which inserts a block statement
+iterator on an edge, and @code{gsi_commit_edge_inserts} which flushes
the instruction to actual instruction stream.
-While debugging the optimization pass, a @code{verify_flow_info}
+@findex verify_flow_info
+@cindex CFG verification
+While debugging the optimization pass, the @code{verify_flow_info}
function may be useful to find bugs in the control flow graph updating
code.
-Note that at present, the representation of control flow in the
-@code{tree} representation is discarded before expanding to RTL@.
-Long term the CFG should be maintained and ``expanded'' to the
-RTL representation along with the function @code{tree} itself.
-
@node Liveness information
@section Liveness information
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 91e7385d87f..cea5ddabd28 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -3345,33 +3345,53 @@ than 2.96.
@item hot
@cindex @code{hot} function attribute
-The @code{hot} attribute is used to inform the compiler that a function is a
-hot spot of the compiled program. The function is optimized more aggressively
-and on many target it is placed into special subsection of the text section so
-all hot functions appears close together improving locality.
+The @code{hot} attribute on a function is used to inform the compiler that
+the function is a hot spot of the compiled program. The function is
+optimized more aggressively and on many target it is placed into special
+subsection of the text section so all hot functions appears close together
+improving locality.
When profile feedback is available, via @option{-fprofile-use}, hot functions
are automatically detected and this attribute is ignored.
-The @code{hot} attribute is not implemented in GCC versions earlier
-than 4.3.
+The @code{hot} attribute on functions is not implemented in GCC versions
+earlier than 4.3.
+
+@cindex @code{hot} label attribute
+The @code{hot} attribute on a label is used to inform the compiler that
+path following the label are more likely than paths that are not so
+annotated. This attribute is used in cases where @code{__builtin_expect}
+cannot be used, for instance with computed goto or @code{asm goto}.
+
+The @code{hot} attribute on labels is not implemented in GCC versions
+earlier than 4.8.
@item cold
@cindex @code{cold} function attribute
-The @code{cold} attribute is used to inform the compiler that a function is
-unlikely executed. The function is optimized for size rather than speed and on
-many targets it is placed into special subsection of the text section so all
-cold functions appears close together improving code locality of non-cold parts
-of program. The paths leading to call of cold functions within code are marked
-as unlikely by the branch prediction mechanism. It is thus useful to mark
-functions used to handle unlikely conditions, such as @code{perror}, as cold to
-improve optimization of hot functions that do call marked functions in rare
-occasions.
-
-When profile feedback is available, via @option{-fprofile-use}, hot functions
+The @code{cold} attribute on functions is used to inform the compiler that
+the function is unlikely to be executed. The function is optimized for
+size rather than speed and on many targets it is placed into special
+subsection of the text section so all cold functions appears close together
+improving code locality of non-cold parts of program. The paths leading
+to call of cold functions within code are marked as unlikely by the branch
+prediction mechanism. It is thus useful to mark functions used to handle
+unlikely conditions, such as @code{perror}, as cold to improve optimization
+of hot functions that do call marked functions in rare occasions.
+
+When profile feedback is available, via @option{-fprofile-use}, cold functions
are automatically detected and this attribute is ignored.
-The @code{cold} attribute is not implemented in GCC versions earlier than 4.3.
+The @code{cold} attribute on functions is not implemented in GCC versions
+earlier than 4.3.
+
+@cindex @code{cold} label attribute
+The @code{cold} attribute on labels is used to inform the compiler that
+the path following the label is unlikely to be executed. This attribute
+is used in cases where @code{__builtin_expect} cannot be used, for instance
+with computed goto or @code{asm goto}.
+
+The @code{cold} attribute on labels is not implemented in GCC versions
+earlier than 4.8.
@item regparm (@var{number})
@cindex @code{regparm} attribute
@@ -7155,7 +7175,7 @@ Full barrier in both directions and synchronizes with acquire loads and
release stores in all threads.
@end table
-When implementing patterns for these built-in functions , the memory model
+When implementing patterns for these built-in functions, the memory model
parameter can be ignored as long as the pattern implements the most
restrictive @code{__ATOMIC_SEQ_CST} model. Any of the other memory models
will execute correctly with this memory model but they may not execute as
@@ -9540,6 +9560,9 @@ AMD family 10h Shanghai CPU.
@item istanbul
AMD family 10h Istanbul CPU.
+@item btver1
+AMD family 14h CPU.
+
@item amdfam15h
AMD family 15h CPU.
@@ -9548,6 +9571,9 @@ AMD family 15h Bulldozer version 1.
@item bdver2
AMD family 15h Bulldozer version 2.
+
+@item btver2
+AMD family 16h CPU.
@end table
Here is an example:
@@ -15527,10 +15553,9 @@ See also @ref{Namespace Association}.
@node Namespace Association
@section Namespace Association
-@strong{Caution:} The semantics of this extension are not fully
-defined. Users should refrain from using this extension as its
-semantics may change subtly over time. It is possible that this
-extension will be removed in future versions of G++.
+@strong{Caution:} The semantics of this extension are equivalent
+to C++ 2011 inline namespaces. Users should use inline namespaces
+instead as this extension will be removed in future versions of G++.
A using-directive with @code{__attribute ((strong))} is stronger
than a normal using-directive in two ways:
diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi
index 7256664c0ee..307137a7864 100644
--- a/gcc/doc/gcov.texi
+++ b/gcc/doc/gcov.texi
@@ -551,20 +551,23 @@ collected at that point to be dumped to @file{.gcda} output files.
@command{gcov} uses two files for profiling. The names of these files
are derived from the original @emph{object} file by substituting the
-file suffix with either @file{.gcno}, or @file{.gcda}. All of these files
-are placed in the same directory as the object file, and contain data
-stored in a platform-independent format.
-
-The @file{.gcno} file is generated when the source file is compiled with
-the GCC @option{-ftest-coverage} option. It contains information to
+file suffix with either @file{.gcno}, or @file{.gcda}. The files
+contain coverage and profile data stored in a platform-independent format.
+The @file{.gcno} files are placed in the same directory as the object
+file. By default, the @file{.gcda} files are also stored in the same
+directory as the object file, but the GCC @option{-profile-dir} option
+may be used to store the @file{.gcda} files in a separate directory.
+
+The @file{.gcno} notes file is generated when the source file is compiled
+with the GCC @option{-ftest-coverage} option. It contains information to
reconstruct the basic block graphs and assign source line numbers to
blocks.
-The @file{.gcda} file is generated when a program containing object files
-built with the GCC @option{-fprofile-arcs} option is executed. A
-separate @file{.gcda} file is created for each object file compiled with
-this option. It contains arc transition counts, and some summary
-information.
+The @file{.gcda} count data file is generated when a program containing
+object files built with the GCC @option{-fprofile-arcs} option is executed.
+A separate @file{.gcda} file is created for each object file compiled with
+this option. It contains arc transition counts, value profile counts, and
+some summary information.
The full details of the file format is specified in @file{gcov-io.h},
and functions provided in that header file should be used to access the
diff --git a/gcc/doc/gty.texi b/gcc/doc/gty.texi
index cff3ffdfc5d..b2214b8053b 100644
--- a/gcc/doc/gty.texi
+++ b/gcc/doc/gty.texi
@@ -13,17 +13,17 @@ involve determining information about GCC's data structures from GCC's
source code and using this information to perform garbage collection and
implement precompiled headers.
-A full C parser would be too complicated for this task, so a limited
-subset of C is interpreted and special markers are used to determine
-what parts of the source to look at. All @code{struct} and
-@code{union} declarations that define data structures that are
-allocated under control of the garbage collector must be marked. All
-global variables that hold pointers to garbage-collected memory must
-also be marked. Finally, all global variables that need to be saved
-and restored by a precompiled header must be marked. (The precompiled
-header mechanism can only save static variables if they're scalar.
-Complex data structures must be allocated in garbage-collected memory
-to be saved in a precompiled header.)
+A full C++ parser would be too complicated for this task, so a limited
+subset of C++ is interpreted and special markers are used to determine
+what parts of the source to look at. All @code{struct}, @code{union}
+and @code{template} structure declarations that define data structures
+that are allocated under control of the garbage collector must be
+marked. All global variables that hold pointers to garbage-collected
+memory must also be marked. Finally, all global variables that need
+to be saved and restored by a precompiled header must be marked. (The
+precompiled header mechanism can only save static variables if they're
+scalar. Complex data structures must be allocated in garbage-collected
+memory to be saved in a precompiled header.)
The full format of a marker is
@smallexample
@@ -68,6 +68,7 @@ These don't need to be marked.
@menu
* GTY Options:: What goes inside a @code{GTY(())}.
* GGC Roots:: Making global variables GGC roots.
+* User GC:: Adding user-provided GC marking routines.
* Files:: How the generated files work.
* Invoking the garbage collector:: How to invoke the garbage collector.
* Troubleshooting:: When something does not work as expected.
@@ -134,8 +135,8 @@ The available options are:
@item length ("@var{expression}")
There are two places the type machinery will need to be explicitly told
-the length of an array. The first case is when a structure ends in a
-variable-length array, like this:
+the length of an array of non-atomic objects. The first case is when a
+structure ends in a variable-length array, like this:
@smallexample
struct GTY(()) rtvec_def @{
int num_elem; /* @r{number of elements} */
@@ -163,6 +164,11 @@ This second use of @code{length} also works on global variables, like:
static GTY((length("reg_known_value_size"))) rtx *reg_known_value;
@end verbatim
+Note that the @code{length} option is only meant for use with arrays of
+non-atomic objects, that is, objects that contain pointers pointing to
+other GTY-managed objects. For other GC-allocated arrays and strings
+you should use @code{atomic}.
+
@findex skip
@item skip
@@ -411,7 +417,7 @@ Here is an example of how to use it:
@smallexample
struct GTY(()) my_struct @{
int number_of_elements;
- unsigned int GTY ((atomic)) * elements;
+ unsigned int * GTY ((atomic)) elements;
@};
@end smallexample
In this case, @code{elements} is a pointer under GC, and the memory it
@@ -435,8 +441,128 @@ The @code{special} option is used to mark types that have to be dealt
with by special case machinery. The parameter is the name of the
special case. See @file{gengtype.c} for further details. Avoid
adding new special cases unless there is no other alternative.
+
+@findex user
+@item user
+
+The @code{user} option indicates that the code to mark structure
+fields is completely handled by user-provided routines. See section
+@ref{User GC} for details on what functions need to be provided.
@end table
+@node User GC
+@section Support for user-provided GC marking routines
+@cindex user gc
+The garbage collector supports types for which no automatic marking
+code is generated. For these types, the user is required to provide
+three functions: one to act as a marker for garbage collection, and
+two functions to act as marker and pointer walker for pre-compiled
+headers.
+
+Given a structure @code{struct GTY((user)) my_struct}, the following functions
+should be defined to mark @code{my_struct}:
+
+@smallexample
+void gt_ggc_mx (my_struct *p)
+@{
+ /* This marks field 'fld'. */
+ gt_ggc_mx (p->fld);
+@}
+
+void gt_pch_nx (my_struct *p)
+@{
+ /* This marks field 'fld'. */
+ gt_pch_nx (tp->fld);
+@}
+
+void gt_pch_nx (my_struct *p, gt_pointer_operator op, void *cookie)
+@{
+ /* For every field 'fld', call the given pointer operator. */
+ op (&(tp->fld), cookie);
+@}
+@end smallexample
+
+In general, each marker @code{M} should call @code{M} for every
+pointer field in the structure. Fields that are not allocated in GC
+or are not pointers must be ignored.
+
+For embedded lists (e.g., structures with a @code{next} or @code{prev}
+pointer), the marker must follow the chain and mark every element in
+it.
+
+Note that the rules for the pointer walker @code{gt_pch_nx (my_struct
+*, gt_pointer_operator, void *)} are slightly different. In this
+case, the operation @code{op} must be applied to the @emph{address} of
+every pointer field.
+
+@section User-provided marking routines for template types
+When a template type @code{TP} is marked with @code{GTY}, all
+instances of that type are considered user-provided types. This means
+that the individual instances of @code{TP} do not need to be marked
+with @code{GTY}. The user needs to provide template functions to mark
+all the fields of the type.
+
+The following code snippets represent all the functions that need to
+be provided. Note that type @code{TP} may reference to more than one
+type. In these snippets, there is only one type @code{T}, but there
+could be more.
+
+@smallexample
+template<typename T>
+void gt_ggc_mx (TP<T> *tp)
+@{
+ extern void gt_ggc_mx (T&);
+
+ /* This marks field 'fld' of type 'T'. */
+ gt_ggc_mx (tp->fld);
+@}
+
+template<typename T>
+void gt_pch_nx (TP<T> *tp)
+@{
+ extern void gt_pch_nx (T&);
+
+ /* This marks field 'fld' of type 'T'. */
+ gt_pch_nx (tp->fld);
+@}
+
+template<typename T>
+void gt_pch_nx (TP<T *> *tp, gt_pointer_operator op, void *cookie)
+@{
+ /* For every field 'fld' of 'tp' with type 'T *', call the given
+ pointer operator. */
+ op (&(tp->fld), cookie);
+@}
+
+template<typename T>
+void gt_pch_nx (TP<T> *tp, gt_pointer_operator, void *cookie)
+@{
+ extern void gt_pch_nx (T *, gt_pointer_operator, void *);
+
+ /* For every field 'fld' of 'tp' with type 'T', call the pointer
+ walker for all the fields of T. */
+ gt_pch_nx (&(tp->fld), op, cookie);
+@}
+@end smallexample
+
+Support for user-defined types is currently limited. The following
+restrictions apply:
+
+@enumerate
+@item Type @code{TP} and all the argument types @code{T} must be
+marked with @code{GTY}.
+
+@item Type @code{TP} can only have type names in its argument list.
+
+@item The pointer walker functions are different for @code{TP<T>} and
+@code{TP<T *>}. In the case of @code{TP<T>}, references to
+@code{T} must be handled by calling @code{gt_pch_nx} (which
+will, in turn, walk all the pointers inside fields of @code{T}).
+In the case of @code{TP<T *>}, references to @code{T *} must be
+handled by calling the @code{op} function on the address of the
+pointer (see the code snippets above).
+@end enumerate
+
@node GGC Roots
@section Marking Roots for the Garbage Collector
@cindex roots, marking
@@ -540,7 +666,7 @@ The GCC build tree is needed to be present in that mode.
The GCC garbage collector GGC is only invoked explicitly. In contrast
with many other garbage collectors, it is not implicitly invoked by
allocation routines when a lot of memory has been consumed. So the
-only way to have GGC reclaim storage it to call the @code{ggc_collect}
+only way to have GGC reclaim storage is to call the @code{ggc_collect}
function explicitly. This call is an expensive operation, as it may
have to scan the entire heap. Beware that local variables (on the GCC
call stack) are not followed by such an invocation (as many other
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 7b5cf1acb4e..d4384e87712 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -149,13 +149,15 @@ Free Documentation License}''.
The latest version of this document is always available at
@uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}.
+It refers to the current development sources, instructions for
+specific released versions are included with the sources.
This document describes the generic installation procedure for GCC as well
as detailing some target specific installation instructions.
GCC includes several components that previously were separate distributions
with their own installation instructions. This document supersedes all
-package specific installation instructions.
+package-specific installation instructions.
@emph{Before} starting the build/install procedure please check the
@ifnothtml
@@ -362,31 +364,24 @@ installed but it is not in your default library search path, the
@option{--with-mpc} configure option should be used. See also
@option{--with-mpc-lib} and @option{--with-mpc-include}.
-@item Parma Polyhedra Library (PPL) version 0.11
+@item ISL Library version 0.10
Necessary to build GCC with the Graphite loop optimizations.
-It can be downloaded from @uref{http://www.cs.unipr.it/ppl/Download/}.
+It can be downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/}.
-The @option{--with-ppl} configure option should be used if PPL is not
+The @option{--with-isl} configure option should be used if ISL is not
installed in your default library search path.
-@item CLooG-PPL version 0.15 or CLooG 0.16
+@item CLooG 0.17.0
-Necessary to build GCC with the Graphite loop optimizations. There
-are two versions available. CLooG-PPL 0.15 as well as CLooG 0.16.
-The former is the default right now. It can be downloaded from
-@uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/} as
-@file{cloog-ppl-0.15.tar.gz}.
-
-CLooG 0.16 support is still in testing stage, but will be the
-default in future GCC releases. It is also available at
-@uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/} as
-@file{cloog-0.16.1.tar.gz}. To use it add the additional configure
-option @option{--enable-cloog-backend=isl}. Even if CLooG 0.16
-does not use PPL, PPL is still required for Graphite.
-
-In both cases @option{--with-cloog} configure option should be used
-if CLooG is not installed in your default library search path.
+Necessary to build GCC with the Graphite loop optimizations. It can be
+downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/} as
+@file{cloog-0.17.0.tar.gz}. The @option{--with-cloog} configure option should
+be used if CLooG is not installed in your default library search path.
+CLooG needs to be built against ISL 0.10, not its included copy of ISL
+which is too old. Use @option{--with-isl=system} to direct CLooG to pick
+up an already installed ISL. CLooG needs to be configured to use GMP
+internally, use @option{--with-bits=gmp} to direct it to do that.
@end table
@@ -1293,16 +1288,6 @@ opposite effect. If neither option is specified, the configure script
will try to guess whether the @code{.init_array} and
@code{.fini_array} sections are supported and, if they are, use them.
-@item --enable-build-with-cxx
-Build GCC using a C++ compiler rather than a C compiler. This is an
-experimental option which may become the default in a later release.
-
-@item --enable-build-poststage1-with-cxx
-When bootstrapping, build stages 2 and 3 of GCC using a C++ compiler
-rather than a C compiler. Stage 1 is still built with a C compiler.
-This is enabled by default and may be disabled using
-@option{--disable-build-poststage1-with-cxx}.
-
@item --enable-maintainer-mode
The build rules that regenerate the Autoconf and Automake output files as
well as the GCC master message catalog @file{gcc.pot} are normally
@@ -1641,14 +1626,14 @@ a cross compiler, they will not be used to configure target libraries.
@itemx --with-cloog=@var{pathname}
@itemx --with-cloog-include=@var{pathname}
@itemx --with-cloog-lib=@var{pathname}
-If you do not have PPL (the Parma Polyhedra Library) and the CLooG
+If you do not have ISL and the CLooG
libraries installed in a standard location and you want to build GCC,
you can explicitly specify the directory where they are installed
-(@samp{--with-ppl=@/@var{pplinstalldir}},
+(@samp{--with-isl=@/@var{islinstalldir}},
@samp{--with-cloog=@/@var{clooginstalldir}}). The
-@option{--with-ppl=@/@var{pplinstalldir}} option is shorthand for
-@option{--with-ppl-lib=@/@var{pplinstalldir}/lib} and
-@option{--with-ppl-include=@/@var{pplinstalldir}/include}. Likewise the
+@option{--with-isl=@/@var{islinstalldir}} option is shorthand for
+@option{--with-isl-lib=@/@var{islinstalldir}/lib} and
+@option{--with-isl-include=@/@var{islinstalldir}/include}. Likewise the
@option{--with-cloog=@/@var{clooginstalldir}} option is shorthand for
@option{--with-cloog-lib=@/@var{clooginstalldir}/lib} and
@option{--with-cloog-include=@/@var{clooginstalldir}/include}. If these
@@ -2981,7 +2966,7 @@ GNU Compiler Collection on your machine.
Note that this list of install notes is @emph{not} a list of supported
hosts or targets. Not all supported hosts and targets are listed
here, only the ones that require host-specific or target-specific
-information are.
+information have to.
@ifhtml
@itemize
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index d8a0be7c8bb..c7c7581aea3 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -263,9 +263,9 @@ Objective-C and Objective-C++ Dialects}.
-Wpointer-arith -Wno-pointer-to-int-cast @gol
-Wredundant-decls @gol
-Wreturn-type -Wsequence-point -Wshadow @gol
--Wsign-compare -Wsign-conversion -Wstack-protector @gol
--Wstack-usage=@var{len} -Wstrict-aliasing -Wstrict-aliasing=n @gol
--Wstrict-overflow -Wstrict-overflow=@var{n} @gol
+-Wsign-compare -Wsign-conversion -Wsizeof-pointer-memaccess @gol
+-Wstack-protector -Wstack-usage=@var{len} -Wstrict-aliasing @gol
+-Wstrict-aliasing=n @gol -Wstrict-overflow -Wstrict-overflow=@var{n} @gol
-Wsuggest-attribute=@r{[}pure@r{|}const@r{|}noreturn@r{|}format@r{]} @gol
-Wmissing-format-attribute @gol
-Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand @gol
@@ -364,16 +364,17 @@ Objective-C and Objective-C++ Dialects}.
-ffast-math -ffinite-math-only -ffloat-store -fexcess-precision=@var{style} @gol
-fforward-propagate -ffp-contract=@var{style} -ffunction-sections @gol
-fgcse -fgcse-after-reload -fgcse-las -fgcse-lm -fgraphite-identity @gol
--fgcse-sm -fif-conversion -fif-conversion2 -findirect-inlining @gol
+-fgcse-sm -fhoist-adjacent-loads -fif-conversion @gol
+-fif-conversion2 -findirect-inlining @gol
-finline-functions -finline-functions-called-once -finline-limit=@var{n} @gol
--finline-small-functions -fipa-cp -fipa-cp-clone -fipa-matrix-reorg @gol
+-finline-small-functions -fipa-cp -fipa-cp-clone @gol
-fipa-pta -fipa-profile -fipa-pure-const -fipa-reference @gol
-fira-algorithm=@var{algorithm} @gol
-fira-region=@var{region} @gol
-fira-loop-pressure -fno-ira-share-save-slots @gol
-fno-ira-share-spill-slots -fira-verbose=@var{n} @gol
-fivopts -fkeep-inline-functions -fkeep-static-consts @gol
--floop-block -floop-interchange -floop-strip-mine @gol
+-floop-block -floop-interchange -floop-strip-mine -floop-nest-optimize @gol
-floop-parallelize-all -flto -flto-compression-level @gol
-flto-partition=@var{alg} -flto-report -fmerge-all-constants @gol
-fmerge-constants -fmodulo-sched -fmodulo-sched-allow-regmoves @gol
@@ -413,8 +414,8 @@ Objective-C and Objective-C++ Dialects}.
-ftree-phiprop -ftree-loop-distribution -ftree-loop-distribute-patterns @gol
-ftree-loop-ivcanon -ftree-loop-linear -ftree-loop-optimize @gol
-ftree-parallelize-loops=@var{n} -ftree-pre -ftree-partial-pre -ftree-pta @gol
--ftree-reassoc @gol
--ftree-sink -ftree-sra -ftree-switch-conversion -ftree-tail-merge @gol
+-ftree-reassoc -ftree-sink -ftree-slsr -ftree-sra @gol
+-ftree-switch-conversion -ftree-tail-merge @gol
-ftree-ter -ftree-vect-loop-version -ftree-vectorize -ftree-vrp @gol
-funit-at-a-time -funroll-all-loops -funroll-loops @gol
-funsafe-loop-optimizations -funsafe-math-optimizations -funswitch-loops @gol
@@ -498,7 +499,8 @@ Objective-C and Objective-C++ Dialects}.
-mcaller-super-interworking -mcallee-super-interworking @gol
-mtp=@var{name} -mtls-dialect=@var{dialect} @gol
-mword-relocations @gol
--mfix-cortex-m3-ldrd}
+-mfix-cortex-m3-ldrd @gol
+-munaligned-access}
@emph{AVR Options}
@gccoptlist{-mmcu=@var{mcu} -maccumulate-args -mbranch-cost=@var{cost} @gol
@@ -635,7 +637,8 @@ Objective-C and Objective-C++ Dialects}.
-mno-align-stringops -minline-all-stringops @gol
-minline-stringops-dynamically -mstringop-strategy=@var{alg} @gol
-mpush-args -maccumulate-outgoing-args -m128bit-long-double @gol
--m96bit-long-double -mregparm=@var{num} -msseregparm @gol
+-m96bit-long-double -mlong-double-64 -mlong-double-80 @gol
+-mregparm=@var{num} -msseregparm @gol
-mveclibabi=@var{type} -mvect8-ret-in-mem @gol
-mpc32 -mpc64 -mpc80 -mstackrealign @gol
-momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol
@@ -732,7 +735,9 @@ Objective-C and Objective-C++ Dialects}.
-mabi=@var{abi} -mabicalls -mno-abicalls @gol
-mshared -mno-shared -mplt -mno-plt -mxgot -mno-xgot @gol
-mgp32 -mgp64 -mfp32 -mfp64 -mhard-float -msoft-float @gol
--msingle-float -mdouble-float -mdsp -mno-dsp -mdspr2 -mno-dspr2 @gol
+-mno-float -msingle-float -mdouble-float @gol
+-mdsp -mno-dsp -mdspr2 -mno-dspr2 @gol
+-mmcu -mmno-mcu @gol
-mfpu=@var{fpu-type} @gol
-msmartmips -mno-smartmips @gol
-mpaired-single -mno-paired-single -mdmx -mno-mdmx @gol
@@ -794,15 +799,13 @@ See RS/6000 and PowerPC Options.
@gccoptlist{-mcpu=@var{cpu-type} @gol
-mtune=@var{cpu-type} @gol
-mcmodel=@var{code-model} @gol
--mpower -mno-power -mpower2 -mno-power2 @gol
--mpowerpc -mpowerpc64 -mno-powerpc @gol
+-mpowerpc64 @gol
-maltivec -mno-altivec @gol
-mpowerpc-gpopt -mno-powerpc-gpopt @gol
-mpowerpc-gfxopt -mno-powerpc-gfxopt @gol
-mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb -mpopcntd -mno-popcntd @gol
-mfprnd -mno-fprnd @gol
-mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr -mhard-dfp -mno-hard-dfp @gol
--mnew-mnemonics -mold-mnemonics @gol
-mfull-toc -mminimal-toc -mno-fp-in-toc -mno-sum-in-toc @gol
-m64 -m32 -mxl-compat -mno-xl-compat -mpe @gol
-malign-power -malign-natural @gol
@@ -882,13 +885,14 @@ See RS/6000 and PowerPC Options.
-m5-compact -m5-compact-nofpu @gol
-mb -ml -mdalign -mrelax @gol
-mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol
--mieee -mbitops -misize -minline-ic_invalidate -mpadstruct -mspace @gol
--mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
+-mieee -mno-ieee -mbitops -misize -minline-ic_invalidate -mpadstruct @gol
+-mspace -mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
-mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol
-mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol
-maccumulate-outgoing-args -minvalid-symbols -msoft-atomic -mhard-atomic @gol
--mbranch-cost=@var{num} -mcbranchdi -mcmpeqdi -mfused-madd -mno-fused-madd @gol
--mfsca -mno-fsca -mfsrra -mno-fsrra -mpretend-cmove -menable-tas}
+-mbranch-cost=@var{num} -mzdcbranch -mno-zdcbranch -mcbranchdi -mcmpeqdi @gol
+-mfused-madd -mno-fused-madd -mfsca -mno-fsca -mfsrra -mno-fsrra @gol
+-mpretend-cmove -menable-tas}
@emph{Solaris 2 Options}
@gccoptlist{-mimpure-text -mno-impure-text @gol
@@ -926,7 +930,7 @@ See RS/6000 and PowerPC Options.
@gccoptlist{-Qy -Qn -YP,@var{paths} -Ym,@var{dir}}
@emph{TILE-Gx Options}
-@gccoptlist{-mcpu=CPU -m32 -m64}
+@gccoptlist{-mcpu=CPU -m32 -m64 -mcmodel=@var{code-model}}
@emph{TILEPro Options}
@gccoptlist{-mcpu=CPU -m32}
@@ -991,6 +995,7 @@ See S/390 and zSeries Options.
-fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol
-fno-stack-limit -fsplit-stack @gol
-fleading-underscore -ftls-model=@var{model} @gol
+-fstack-reuse=@var{reuse_level} @gol
-ftrapv -fwrapv -fbounds-check @gol
-fvisibility -fstrict-volatile-bitfields -fsync-libcalls}
@end table
@@ -2313,7 +2318,7 @@ struct B : public A @{ int f2 : 1; @};
@noindent
In this case, G++ places @code{B::f2} into the same byte
-as@code{A::f1}; other compilers do not. You can avoid this problem
+as @code{A::f1}; other compilers do not. You can avoid this problem
by explicitly padding @code{A} so that its size is a multiple of the
byte size on your platform; that causes G++ and other compilers to
lay out @code{B} identically.
@@ -4328,6 +4333,16 @@ value, like assigning a signed integer expression to an unsigned
integer variable. An explicit cast silences the warning. In C, this
option is enabled also by @option{-Wconversion}.
+@item -Wsizeof-pointer-memaccess
+@opindex Wsizeof-pointer-memaccess
+@opindex Wno-sizeof-pointer-memaccess
+Warn for suspicious length parameters to certain string and memory built-in
+functions if the argument uses @code{sizeof}. This warning warns e.g.@:
+about @code{memset (ptr, 0, sizeof (ptr));} if @code{ptr} is not an array,
+but a pointer, and suggests a possible fix, or about
+@code{memcpy (&foo, ptr, sizeof (&foo));}. This warning is enabled by
+@option{-Wall}.
+
@item -Waddress
@opindex Waddress
@opindex Wno-address
@@ -5602,7 +5617,9 @@ Dump after live range splitting.
@opindex fdump-rtl-dfinish
These dumps are defined but always produce empty files.
-@item -fdump-rtl-all
+@item -da
+@itemx -fdump-rtl-all
+@opindex da
@opindex fdump-rtl-all
Produce all the dumps listed above.
@@ -5619,11 +5636,6 @@ normal output.
@opindex dH
Produce a core dump whenever an error occurs.
-@item -dm
-@opindex dm
-Print statistics on memory usage, at the end of the run, to
-standard error.
-
@item -dp
@opindex dp
Annotate the assembler output with a comment indicating which
@@ -6264,6 +6276,7 @@ compilation time.
-ftree-forwprop @gol
-ftree-fre @gol
-ftree-phiprop @gol
+-ftree-slsr @gol
-ftree-sra @gol
-ftree-pta @gol
-ftree-ter @gol
@@ -6291,6 +6304,7 @@ also turns on the following optimization flags:
-fdevirtualize @gol
-fexpensive-optimizations @gol
-fgcse -fgcse-lm @gol
+-fhoist-adjacent-loads @gol
-finline-small-functions @gol
-findirect-inlining @gol
-fipa-sra @gol
@@ -6316,6 +6330,7 @@ Optimize yet more. @option{-O3} turns on all optimizations specified
by @option{-O2} and also turns on the @option{-finline-functions},
@option{-funswitch-loops}, @option{-fpredictive-commoning},
@option{-fgcse-after-reload}, @option{-ftree-vectorize},
+@option{-fvect-cost-model},
@option{-ftree-partial-pre} and @option{-fipa-cp-clone} options.
@item -O0
@@ -7134,6 +7149,13 @@ This flag is enabled by default at @option{-O} and higher.
Perform hoisting of loads from conditional pointers on trees. This
pass is enabled by default at @option{-O} and higher.
+@item -fhoist-adjacent-loads
+@opindex hoist-adjacent-loads
+Speculatively hoist loads from both branches of an if-then-else if the
+loads are from adjacent locations in the same structure and the target
+architecture has a conditional move instruction. This flag is enabled
+by default at @option{-O2} and higher.
+
@item -ftree-copy-prop
@opindex ftree-copy-prop
Perform copy propagation on trees. This pass eliminates unnecessary
@@ -7186,18 +7208,6 @@ it may significantly increase code size
(see @option{--param ipcp-unit-growth=@var{value}}).
This flag is enabled by default at @option{-O3}.
-@item -fipa-matrix-reorg
-@opindex fipa-matrix-reorg
-Perform matrix flattening and transposing.
-Matrix flattening tries to replace an @math{m}-dimensional matrix
-with its equivalent @math{n}-dimensional matrix, where @math{n < m}.
-This reduces the level of indirection needed for accessing the elements
-of the matrix. The second optimization is matrix transposing, which
-attempts to change the order of the matrix's dimensions in order to
-improve cache locality.
-Both optimizations need the @option{-fwhole-program} flag.
-Transposing is enabled only if profiling information is available.
-
@item -ftree-sink
@opindex ftree-sink
Perform forward store motion on trees. This flag is
@@ -7373,6 +7383,13 @@ GIMPLE -> GRAPHITE -> GIMPLE transformation. Some minimal optimizations
are also performed by the code generator CLooG, like index splitting and
dead code elimination in loops.
+@item -floop-nest-optimize
+@opindex floop-nest-optimize
+Enable the ISL based loop nest optimizer. This is a generic loop nest
+optimizer based on the Pluto optimization algorithms. It calculates a loop
+structure optimized for data-locality and parallelism. This option
+is experimental.
+
@item -floop-parallelize-all
@opindex floop-parallelize-all
Use the Graphite data dependence analysis to identify loops that can
@@ -7527,6 +7544,13 @@ defining expression. This results in non-GIMPLE code, but gives the expanders
much more complex trees to work on resulting in better RTL generation. This is
enabled by default at @option{-O} and higher.
+@item -ftree-slsr
+@opindex ftree-slsr
+Perform straight-line strength reduction on trees. This recognizes related
+expressions involving multiplications and replaces them by less expensive
+calculations when possible. This is enabled by default at @option{-O} and
+higher.
+
@item -ftree-vectorize
@opindex ftree-vectorize
Perform loop vectorization on trees. This flag is enabled by default at
@@ -7548,7 +7572,8 @@ except at level @option{-Os} where it is disabled.
@item -fvect-cost-model
@opindex fvect-cost-model
-Enable cost model for vectorization.
+Enable cost model for vectorization. This option is enabled by default at
+@option{-O3}.
@item -ftree-vrp
@opindex ftree-vrp
@@ -9132,18 +9157,6 @@ Small integer constants can use a shared data structure, reducing the
compiler's memory usage and increasing its speed. This sets the maximum
value of a shared integer constant. The default value is 256.
-@item min-virtual-mappings
-Specifies the minimum number of virtual mappings in the incremental
-SSA updater that should be registered to trigger the virtual mappings
-heuristic defined by virtual-mappings-ratio. The default value is
-100.
-
-@item virtual-mappings-ratio
-If the number of virtual mappings is virtual-mappings-ratio bigger
-than the number of virtual symbols to be updated, then the incremental
-SSA updater switches to a full update for those symbols. The default
-ratio is 3.
-
@item ssp-buffer-size
The minimum size of buffers (i.e.@: arrays) that receive stack smashing
protection when @option{-fstack-protection} is used.
@@ -9212,6 +9225,14 @@ processing. If this limit is hit, SCCVN processing for the whole
function is not done and optimizations depending on it are
disabled. The default maximum SCC size is 10000.
+@item sccvn-max-alias-queries-per-access
+Maximum number of alias-oracle queries we perform when looking for
+redundancies for loads and stores. If this limit is hit the search
+is aborted and the load or store is not considered redundant. The
+number of queries is algorithmically limited to the number of
+stores on all paths from the load to the function entry.
+The default maxmimum number of queries is 1000.
+
@item ira-max-loops-num
IRA uses regional register allocation by default. If a function
contains more loops than the number given by this parameter, only at most
@@ -11047,6 +11068,23 @@ with overlapping destination and base registers are used. This option avoids
generating these instructions. This option is enabled by default when
@option{-mcpu=cortex-m3} is specified.
+@item -munaligned-access
+@itemx -mno-unaligned-access
+@opindex munaligned-access
+@opindex mno-unaligned-access
+Enables (or disables) reading and writing of 16- and 32- bit values
+from addresses that are not 16- or 32- bit aligned. By default
+unaligned access is disabled for all pre-ARMv6 and all ARMv6-M
+architectures, and enabled for all other architectures. If unaligned
+access is not enabled then words in packed data structures will be
+accessed a byte at a time.
+
+The ARM attribute @code{Tag_CPU_unaligned_access} will be set in the
+generated object file to either true or false, depending upon the
+setting of this option. If unaligned access is enabled then the
+preprocessor symbol @code{__ARM_FEATURE_UNALIGNED} will also be
+defined.
+
@end table
@node AVR Options
@@ -13275,6 +13313,11 @@ CPUs based on AMD Family 14h cores with x86-64 instruction set support. (This
supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM and 64-bit
instruction set extensions.)
+@item btver2
+CPUs based on AMD Family 16h cores with x86-64 instruction set support. This
+includes MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM,
+SSE4A, SSSE3, SSE3, SSE2, SSE, MMX and 64-bit instruction set extensions.
+
@item winchip-c6
IDT WinChip C6 CPU, dealt in same way as i486 with additional MMX instruction
set support.
@@ -13478,6 +13521,21 @@ as well as modifying the function calling convention for functions taking
@code{long double}. Hence they are not binary-compatible
with code compiled without that switch.
+@item -mlong-double-64
+@itemx -mlong-double-80
+@opindex mlong-double-64
+@opindex mlong-double-80
+These switches control the size of @code{long double} type. A size
+of 64 bits makes the @code{long double} type equivalent to the @code{double}
+type. This is the default for Bionic C library.
+
+@strong{Warning:} if you override the default value for your target ABI, this
+changes the size of
+structures and arrays containing @code{long double} variables,
+as well as modifying the function calling convention for functions taking
+@code{long double}. Hence they are not binary-compatible
+with code compiled without that switch.
+
@item -mlarge-data-threshold=@var{threshold}
@opindex mlarge-data-threshold
When @option{-mcmodel=medium} is specified, data objects larger than
@@ -15347,7 +15405,7 @@ The processor names are:
@samp{20kc},
@samp{24kc}, @samp{24kf2_1}, @samp{24kf1_1},
@samp{24kec}, @samp{24kef2_1}, @samp{24kef1_1},
-@samp{34kc}, @samp{34kf2_1}, @samp{34kf1_1},
+@samp{34kc}, @samp{34kf2_1}, @samp{34kf1_1}, @samp{34kn},
@samp{74kc}, @samp{74kf2_1}, @samp{74kf1_1}, @samp{74kf3_2},
@samp{1004kc}, @samp{1004kf2_1}, @samp{1004kf1_1},
@samp{loongson2e}, @samp{loongson2f}, @samp{loongson3a},
@@ -15605,6 +15663,18 @@ Use floating-point coprocessor instructions.
Do not use floating-point coprocessor instructions. Implement
floating-point calculations using library calls instead.
+@item -mno-float
+@opindex mno-float
+Equivalent to @option{-msoft-float}, but additionally asserts that the
+program being compiled does not perform any floating-point operations.
+This option is presently supported only by some bare-metal MIPS
+configurations, where it may select a special set of libraries
+that lack all floating-point support (including, for example, the
+floating-point @code{printf} formats).
+If code compiled with @code{-mno-float} accidentally contains
+floating-point operations, it is likely to suffer a link-time
+or run-time failure.
+
@item -msingle-float
@opindex msingle-float
Assume that the floating-point coprocessor only supports single-precision
@@ -15684,6 +15754,12 @@ The option @option{-mips3d} implies @option{-mpaired-single}.
@opindex mno-mt
Use (do not use) MT Multithreading instructions.
+@item -mmcu
+@itemx -mno-mcu
+@opindex mmcu
+@opindex mno-mcu
+Use (do not use) the MIPS MCU ASE instructions.
+
@item -mlong64
@opindex mlong64
Force @code{long} types to be 64 bits wide. See @option{-mlong32} for
@@ -16515,13 +16591,7 @@ standard hardware multiplication defined in the RL78 software manual.
These @samp{-m} options are defined for the IBM RS/6000 and PowerPC:
@table @gcctabopt
-@item -mpower
-@itemx -mno-power
-@itemx -mpower2
-@itemx -mno-power2
-@itemx -mpowerpc
-@itemx -mno-powerpc
-@itemx -mpowerpc-gpopt
+@item -mpowerpc-gpopt
@itemx -mno-powerpc-gpopt
@itemx -mpowerpc-gfxopt
@itemx -mno-powerpc-gfxopt
@@ -16543,12 +16613,6 @@ These @samp{-m} options are defined for the IBM RS/6000 and PowerPC:
@itemx -mno-mfpgpr
@itemx -mhard-dfp
@itemx -mno-hard-dfp
-@opindex mpower
-@opindex mno-power
-@opindex mpower2
-@opindex mno-power2
-@opindex mpowerpc
-@opindex mno-powerpc
@opindex mpowerpc-gpopt
@opindex mno-powerpc-gpopt
@opindex mpowerpc-gfxopt
@@ -16569,17 +16633,6 @@ These @samp{-m} options are defined for the IBM RS/6000 and PowerPC:
@opindex mno-mfpgpr
@opindex mhard-dfp
@opindex mno-hard-dfp
-GCC supports two related instruction set architectures for the
-RS/6000 and PowerPC@. The @dfn{POWER} instruction set are those
-instructions supported by the @samp{rios} chip set used in the original
-RS/6000 systems and the @dfn{PowerPC} instruction set is the
-architecture of the Freescale MPC5xx, MPC6xx, MPC8xx microprocessors, and
-the IBM 4xx, 6xx, and follow-on microprocessors.
-
-Neither architecture is a subset of the other. However there is a
-large common subset of instructions supported by both. An MQ
-register is included in processors supporting the POWER architecture.
-
You use these options to specify which instructions are available on the
processor you are using. The default value of these options is
determined when configuring GCC@. Specifying the
@@ -16587,18 +16640,10 @@ determined when configuring GCC@. Specifying the
options. We recommend you use the @option{-mcpu=@var{cpu_type}} option
rather than the options listed above.
-The @option{-mpower} option allows GCC to generate instructions that
-are found only in the POWER architecture and to use the MQ register.
-Specifying @option{-mpower2} implies @option{-power} and also allows GCC
-to generate instructions that are present in the POWER2 architecture but
-not the original POWER architecture.
-
-The @option{-mpowerpc} option allows GCC to generate instructions that
-are found only in the 32-bit subset of the PowerPC architecture.
-Specifying @option{-mpowerpc-gpopt} implies @option{-mpowerpc} and also allows
+Specifying @option{-mpowerpc-gpopt} allows
GCC to use the optional PowerPC architecture instructions in the
General Purpose group, including floating-point square root. Specifying
-@option{-mpowerpc-gfxopt} implies @option{-mpowerpc} and also allows GCC to
+@option{-mpowerpc-gfxopt} allows GCC to
use the optional PowerPC architecture instructions in the Graphics
group, including floating-point select.
@@ -16631,33 +16676,9 @@ The @option{-mpowerpc64} option allows GCC to generate the additional
and to treat GPRs as 64-bit, doubleword quantities. GCC defaults to
@option{-mno-powerpc64}.
-If you specify both @option{-mno-power} and @option{-mno-powerpc}, GCC
-uses only the instructions in the common subset of both
-architectures plus some special AIX common-mode calls, and does not use
-the MQ register. Specifying both @option{-mpower} and @option{-mpowerpc}
-permits GCC to use any instruction from either architecture and to
-allow use of the MQ register; specify this for the Motorola MPC601.
-
-@item -mnew-mnemonics
-@itemx -mold-mnemonics
-@opindex mnew-mnemonics
-@opindex mold-mnemonics
-Select which mnemonics to use in the generated assembler code. With
-@option{-mnew-mnemonics}, GCC uses the assembler mnemonics defined for
-the PowerPC architecture. With @option{-mold-mnemonics} it uses the
-assembler mnemonics defined for the POWER architecture. Instructions
-defined in only one architecture have only one mnemonic; GCC uses that
-mnemonic irrespective of which of these options is specified.
-
-GCC defaults to the mnemonics appropriate for the architecture in
-use. Specifying @option{-mcpu=@var{cpu_type}} sometimes overrides the
-value of these option. Unless you are building a cross-compiler, you
-should normally not specify either @option{-mnew-mnemonics} or
-@option{-mold-mnemonics}, but should instead accept the default.
-
@item -mcpu=@var{cpu_type}
@opindex mcpu
-Set architecture type, register usage, choice of mnemonics, and
+Set architecture type, register usage, and
instruction scheduling parameters for machine type @var{cpu_type}.
Supported values for @var{cpu_type} are @samp{401}, @samp{403},
@samp{405}, @samp{405fp}, @samp{440}, @samp{440fp}, @samp{464}, @samp{464fp},
@@ -16667,21 +16688,12 @@ Supported values for @var{cpu_type} are @samp{401}, @samp{403},
@samp{860}, @samp{970}, @samp{8540}, @samp{a2}, @samp{e300c2},
@samp{e300c3}, @samp{e500mc}, @samp{e500mc64}, @samp{e5500},
@samp{e6500}, @samp{ec603e}, @samp{G3}, @samp{G4}, @samp{G5},
-@samp{titan}, @samp{power}, @samp{power2}, @samp{power3},
-@samp{power4}, @samp{power5}, @samp{power5+}, @samp{power6},
-@samp{power6x}, @samp{power7}, @samp{common}, @samp{powerpc},
-@samp{powerpc64}, @samp{rios}, @samp{rios1}, @samp{rios2}, @samp{rsc},
-and @samp{rs64}.
-
-@option{-mcpu=common} selects a completely generic processor. Code
-generated under this option runs on any POWER or PowerPC processor.
-GCC uses only the instructions in the common subset of both
-architectures, and does not use the MQ register. GCC assumes a generic
-processor model for scheduling purposes.
-
-@option{-mcpu=power}, @option{-mcpu=power2}, @option{-mcpu=powerpc}, and
-@option{-mcpu=powerpc64} specify generic POWER, POWER2, pure 32-bit
-PowerPC (i.e., not MPC601), and 64-bit PowerPC architecture machine
+@samp{titan}, @samp{power3}, @samp{power4}, @samp{power5}, @samp{power5+},
+@samp{power6}, @samp{power6x}, @samp{power7}, @samp{powerpc},
+@samp{powerpc64}, and @samp{rs64}.
+
+@option{-mcpu=powerpc}, and @option{-mcpu=powerpc64} specify pure 32-bit
+PowerPC and 64-bit PowerPC architecture machine
types, with an appropriate, generic processor model assumed for
scheduling purposes.
@@ -16693,7 +16705,7 @@ The @option{-mcpu} options automatically enable or disable the
following options:
@gccoptlist{-maltivec -mfprnd -mhard-float -mmfcrf -mmultiple @gol
--mnew-mnemonics -mpopcntb -mpopcntd -mpower -mpower2 -mpowerpc64 @gol
+-mpopcntb -mpopcntd -mpowerpc64 @gol
-mpowerpc-gpopt -mpowerpc-gfxopt -msingle-float -mdouble-float @gol
-msimple-fpu -mstring -mmulhw -mdlmzb -mmfpgpr -mvsx}
@@ -16713,11 +16725,11 @@ environment.
@item -mtune=@var{cpu_type}
@opindex mtune
Set the instruction scheduling parameters for machine type
-@var{cpu_type}, but do not set the architecture type, register usage, or
-choice of mnemonics, as @option{-mcpu=@var{cpu_type}} does. The same
+@var{cpu_type}, but do not set the architecture type or register usage,
+as @option{-mcpu=@var{cpu_type}} does. The same
values for @var{cpu_type} are used for @option{-mtune} as for
@option{-mcpu}. If both are specified, the code generated uses the
-architecture, registers, and mnemonics set by @option{-mcpu}, but the
+architecture and registers set by @option{-mcpu}, but the
scheduling parameters set by @option{-mtune}.
@item -mcmodel=small
@@ -16880,8 +16892,8 @@ only on files that contain less frequently-executed code.
@opindex maix32
Enable 64-bit AIX ABI and calling convention: 64-bit pointers, 64-bit
@code{long} type, and the infrastructure needed to support them.
-Specifying @option{-maix64} implies @option{-mpowerpc64} and
-@option{-mpowerpc}, while @option{-maix32} disables the 64-bit ABI and
+Specifying @option{-maix64} implies @option{-mpowerpc64},
+while @option{-maix32} disables the 64-bit ABI and
implies @option{-mno-powerpc64}. GCC defaults to @option{-maix32}.
@item -mxl-compat
@@ -18097,13 +18109,15 @@ Mark the @code{MAC} register as call-clobbered, even if
@option{-mhitachi} is given.
@item -mieee
+@item -mno-ieee
@opindex mieee
-Increase IEEE compliance of floating-point code.
-At the moment, this is equivalent to @option{-fno-finite-math-only}.
-When generating 16-bit SH opcodes, getting IEEE-conforming results for
-comparisons of NANs / infinities incurs extra overhead in every
-floating-point comparison, therefore the default is set to
-@option{-ffinite-math-only}.
+@opindex mnoieee
+Control the IEEE compliance of floating-point comparisons, which affects the
+handling of cases where the result of a comparison is unordered. By default
+@option{-mieee} is implicitly enabled. If @option{-ffinite-math-only} is
+enabled @option{-mno-ieee} is implicitly set, which results in faster
+floating-point greater-equal and less-equal comparisons. The implcit settings
+can be overridden by specifying either @option{-mieee} or @option{-mno-ieee}.
@item -minline-ic_invalidate
@opindex minline-ic_invalidate
@@ -18318,6 +18332,16 @@ make the compiler try to generate more branch-free code if possible.
If not specified the value is selected depending on the processor type that
is being compiled for.
+@item -mzdcbranch
+@itemx -mno-zdcbranch
+@opindex mzdcbranch
+@opindex mno-zdcbranch
+Assume (do not assume) that zero displacement conditional branch instructions
+@code{bt} and @code{bf} are fast. If @option{-mzdcbranch} is specified, the
+compiler will try to prefer zero displacement branch code sequences. This is
+enabled by default when generating code for SH4 and SH4A. It can be explicitly
+disabled by specifying @option{-mno-zdcbranch}.
+
@item -mcbranchdi
@opindex mcbranchdi
Enable the @code{cbranchdi4} instruction pattern.
@@ -18919,6 +18943,17 @@ The assembler uses this option.
These @samp{-m} options are supported on the TILE-Gx:
@table @gcctabopt
+@item -mcmodel=small
+@opindex mcmodel=small
+Generate code for the small model. Distance for direct calls is
+limited to 500M in either direction. PC-relative addresses are 32
+bits. Absolute addresses support the full address range.
+
+@item -mcmodel=large
+@opindex mcmodel=large
+Generate code for the large model. There is no limiation on call
+distance, pc-relative addresses, or absolute addresses.
+
@item -mcpu=@var{name}
@opindex mcpu
Selects the type of CPU to be targeted. Currently the only supported
@@ -19306,6 +19341,84 @@ indices used to access arrays are within the declared range. This is
currently only supported by the Java and Fortran front ends, where
this option defaults to true and false respectively.
+@item -fstack-reuse=@var{reuse-level}
+@opindex fstack_reuse
+This option controls stack space reuse for user declared local/auto variables
+and compiler generated temporaries. @var{reuse_level} can be @samp{all},
+@samp{named_vars}, or @samp{none}. @samp{all} enables stack reuse for all
+local variables and temporaries, @samp{named_vars} enables the reuse only for
+user defined local variables with names, and @samp{none} disables stack reuse
+completely. The default value is @samp{all}. The option is needed when the
+program extends the lifetime of a scoped local variable or a compiler generated
+temporary beyond the end point defined by the language. When a lifetime of
+a variable ends, and if the variable lives in memory, the optimizing compiler
+has the freedom to reuse its stack space with other temporaries or scoped
+local variables whose live range does not overlap with it. Legacy code extending
+local lifetime will likely to break with the stack reuse optimization.
+
+For example,
+
+@smallexample
+ int *p;
+ @{
+ int local1;
+
+ p = &local1;
+ local1 = 10;
+ ....
+ @}
+ @{
+ int local2;
+ local2 = 20;
+ ...
+ @}
+
+ if (*p == 10) // out of scope use of local1
+ @{
+
+ @}
+@end smallexample
+
+Another example:
+@smallexample
+
+ struct A
+ @{
+ A(int k) : i(k), j(k) @{ @}
+ int i;
+ int j;
+ @};
+
+ A *ap;
+
+ void foo(const A& ar)
+ @{
+ ap = &ar;
+ @}
+
+ void bar()
+ @{
+ foo(A(10)); // temp object's lifetime ends when foo returns
+
+ @{
+ A a(20);
+ ....
+ @}
+ ap->i+= 10; // ap references out of scope temp whose space
+ // is reused with a. What is the value of ap->i?
+ @}
+
+@end smallexample
+
+The lifetime of a compiler generated temporary is well defined by the C++
+standard. When a lifetime of a temporary ends, and if the temporary lives
+in memory, the optimizing compiler has the freedom to reuse its stack
+space with other temporaries or scoped local variables whose live range
+does not overlap with it. However some of the legacy code relies on
+the behavior of older compilers in which temporaries' stack space is
+not reused, the aggressive stack reuse can lead to runtime errors. This
+option is used to control the temporary stack reuse optimization.
+
@item -ftrapv
@opindex ftrapv
This option generates traps for signed overflow on addition, subtraction,
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index c71c59cef06..bcc9bb62b44 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -3580,7 +3580,7 @@ Register B14 (aka DP).
@itemx R07
@itemx R08
@itemx R09
-@itemx R010
+@itemx R10
Each of these represents a register constraint for an individual
register, from r0 to r10.
@@ -3658,7 +3658,7 @@ The integer constant 0xffffffff00000000.
@itemx R07
@itemx R08
@itemx R09
-@itemx R010
+@itemx R10
Each of these represents a register constraint for an individual
register, from r0 to r10.
@@ -4561,15 +4561,21 @@ floating point conversion and place the resulting N/2 values of size 2*S in
the output vector (operand 0).
@cindex @code{vec_widen_umult_hi_@var{m}} instruction pattern
-@cindex @code{vec_widen_umult_lo__@var{m}} instruction pattern
+@cindex @code{vec_widen_umult_lo_@var{m}} instruction pattern
@cindex @code{vec_widen_smult_hi_@var{m}} instruction pattern
@cindex @code{vec_widen_smult_lo_@var{m}} instruction pattern
+@cindex @code{vec_widen_umult_even_@var{m}} instruction pattern
+@cindex @code{vec_widen_umult_odd_@var{m}} instruction pattern
+@cindex @code{vec_widen_smult_even_@var{m}} instruction pattern
+@cindex @code{vec_widen_smult_odd_@var{m}} instruction pattern
@item @samp{vec_widen_umult_hi_@var{m}}, @samp{vec_widen_umult_lo_@var{m}}
@itemx @samp{vec_widen_smult_hi_@var{m}}, @samp{vec_widen_smult_lo_@var{m}}
+@itemx @samp{vec_widen_umult_even_@var{m}}, @samp{vec_widen_umult_odd_@var{m}}
+@itemx @samp{vec_widen_smult_even_@var{m}}, @samp{vec_widen_smult_odd_@var{m}}
Signed/Unsigned widening multiplication. The two inputs (operands 1 and 2)
are vectors with N signed/unsigned elements of size S@. Multiply the high/low
-elements of the two vectors, and put the N/2 products of size 2*S in the
-output vector (operand 0).
+or even/odd elements of the two vectors, and put the N/2 products of size 2*S
+in the output vector (operand 0).
@cindex @code{vec_widen_ushiftl_hi_@var{m}} instruction pattern
@cindex @code{vec_widen_ushiftl_lo_@var{m}} instruction pattern
diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi
index ef720307eee..9c004c8cd3f 100644
--- a/gcc/doc/options.texi
+++ b/gcc/doc/options.texi
@@ -468,4 +468,8 @@ of @option{-@var{opt}}, if not explicitly set. It is possible to
specify several different languages. Each @var{language} must have
been declared by an earlier @code{Language} record. @xref{Option file
format}.
+
+@item NoDWARFRecord
+The option is omitted from the producer string written by
+@option{-grecord-gcc-switches}.
@end table
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 84fcc23e55a..7e9dbe31c2d 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -176,6 +176,12 @@ those for other languages are not. @xref{Front End, ,
Anatomy of a Language Front End}, for details of the files in these
directories.
+@item common
+Source files shared between the compiler drivers (such as
+@command{gcc}) and the compilers proper (such as @file{cc1}). If an
+architecture defines target hooks shared between those places, it also
+has a subdirectory in @file{common/config}. @xref{Target Structure}.
+
@item config
Configuration files for supported architectures and operating
systems. @xref{Back End, , Anatomy of a Target Back End}, for
@@ -1297,6 +1303,9 @@ Target has @code{int} that is at 32 bits or longer.
@item int16
Target has @code{int} that is 16 bits or shorter.
+@item long_neq_int
+Target has @code{int} and @code{long} with different sizes.
+
@item large_double
Target supports @code{double} that is longer than @code{float}.
@@ -1497,6 +1506,11 @@ ARM target generates 32-bit code.
@item arm_eabi
ARM target adheres to the ABI for the ARM Architecture.
+@item arm_hf_eabi
+ARM target adheres to the VFP and Advanced SIMD Register Arguments
+variant of the ABI for the ARM Architecture (as selected with
+@code{-mfloat-abi=hard}).
+
@item arm_hard_vfp_ok
ARM target supports @code{-mfpu=vfp -mfloat-abi=hard}.
Some multilibs may be incompatible with these options.
@@ -1782,6 +1796,9 @@ Target keeps null pointer checks, either due to the use of
@item lto
Compiler has been configured to support link-time optimization (LTO).
+@item naked_functions
+Target supports the @code{naked} function attribute.
+
@item named_sections
Target supports named sections.
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index a11e2c03ab5..79e7fe875b1 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -1107,6 +1107,14 @@ make it all fit in fewer cache lines.
If the value of this macro has a type, it should be an unsigned type.
@end defmac
+@deftypefn {Target Hook} HOST_WIDE_INT TARGET_VECTOR_ALIGNMENT (const_tree @var{type})
+This hook can be used to define the alignment for a vector of type
+@var{type}, in order to comply with a platform ABI. The default is to
+require natural alignment for vector types. The alignment returned by
+this hook must be a power-of-two multiple of the default alignment of
+the vector element type.
+@end deftypefn
+
@defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
If defined, a C expression to compute the alignment for stack slot.
@var{type} is the data type, @var{mode} is the widest mode available,
@@ -1254,9 +1262,9 @@ these accesses should use the bitfield container type.
The default is @code{!TARGET_STRICT_ALIGN}.
@end deftypefn
-@defmac MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode})
-Return 1 if a structure or array containing @var{field} should be accessed using
-@code{BLKMODE}.
+@deftypefn {Target Hook} bool TARGET_MEMBER_TYPE_FORCES_BLK (const_tree @var{field}, enum machine_mode @var{mode})
+Return true if a structure, union or array containing @var{field} should
+be accessed using @code{BLKMODE}.
If @var{field} is the only field in the structure, @var{mode} is its
mode, otherwise @var{mode} is VOIDmode. @var{mode} is provided in the
@@ -1264,7 +1272,7 @@ case where structures of one field would require the structure's mode to
retain the field's mode.
Normally, this is not needed.
-@end defmac
+@end deftypefn
@defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified})
Define this macro as an expression for the alignment of a type (given
@@ -4977,6 +4985,10 @@ FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM.
This hook should add additional registers that are computed by the prologue to the hard regset for shrink-wrapping optimization purposes.
@end deftypefn
+@deftypefn {Target Hook} bool TARGET_WARN_FUNC_RETURN (tree)
+True if a function's return statements should be checked for matching the function's return type. This includes checking for falling off the end of a non-void function. Return false if no such check should be made.
+@end deftypefn
+
@node Stack Smashing Protection
@subsection Stack smashing protection
@cindex stack smashing protection
@@ -4993,7 +5005,7 @@ The default version of this hook creates a variable called
@end deftypefn
@deftypefn {Target Hook} tree TARGET_STACK_PROTECT_FAIL (void)
-This hook returns a tree expression that alerts the runtime that the
+This hook returns a @code{CALL_EXPR} that alerts the runtime that the
stack protect guard variable has been modified. This expression should
involve a call to a @code{noreturn} function.
@@ -5611,24 +5623,6 @@ You may assume that @var{addr} is a valid address for the machine.
The default version of this hook returns @code{false}.
@end deftypefn
-@defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
-A C statement or compound statement with a conditional @code{goto
-@var{label};} executed if memory address @var{x} (an RTX) can have
-different meanings depending on the machine mode of the memory
-reference it is used for or if the address is valid for some modes
-but not others.
-
-Autoincrement and autodecrement addresses typically have mode-dependent
-effects because the amount of the increment or decrement is the size
-of the operand being addressed. Some machines have other mode-dependent
-addresses. Many RISC machines have no mode-dependent addresses.
-
-You may assume that @var{addr} is a valid address for the machine.
-
-These are obsolete macros, replaced by the
-@code{TARGET_MODE_DEPENDENT_ADDRESS_P} target hook.
-@end defmac
-
@deftypefn {Target Hook} bool TARGET_LEGITIMATE_CONSTANT_P (enum machine_mode @var{mode}, rtx @var{x})
This hook returns true if @var{x} is a legitimate constant for a
@var{mode}-mode immediate operand on the target machine. You can assume that
@@ -5713,28 +5707,6 @@ the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low
log2(@var{VS}) @minus{} 1 bits of @var{addr} will be considered.
@end deftypefn
-@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN (tree @var{x})
-This hook should return the DECL of a function @var{f} that implements
-widening multiplication of the even elements of two input vectors of type @var{x}.
-
-If this hook is defined, the autovectorizer will use it along with the
-@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD} target hook when vectorizing
-widening multiplication in cases that the order of the results does not have to be
-preserved (e.g.@: used only by a reduction computation). Otherwise, the
-@code{widen_mult_hi/lo} idioms will be used.
-@end deftypefn
-
-@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD (tree @var{x})
-This hook should return the DECL of a function @var{f} that implements
-widening multiplication of the odd elements of two input vectors of type @var{x}.
-
-If this hook is defined, the autovectorizer will use it along with the
-@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN} target hook when vectorizing
-widening multiplication in cases that the order of the results does not have to be
-preserved (e.g.@: used only by a reduction computation). Otherwise, the
-@code{widen_mult_hi/lo} idioms will be used.
-@end deftypefn
-
@deftypefn {Target Hook} int TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST (enum vect_cost_for_stmt @var{type_of_cost}, tree @var{vectype}, int @var{misalign})
Returns cost of different scalar or vector statements for vectorization cost model.
For vector memory operations the cost may depend on type (@var{vectype}) and
@@ -5792,6 +5764,22 @@ mode returned by @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE}.
The default is zero which means to not iterate over other vector sizes.
@end deftypefn
+@deftypefn {Target Hook} {void *} TARGET_VECTORIZE_INIT_COST (struct loop *@var{loop_info})
+This hook should initialize target-specific data structures in preparation for modeling the costs of vectorizing a loop or basic block. The default allocates three unsigned integers for accumulating costs for the prologue, body, and epilogue of the loop or basic block. If @var{loop_info} is non-NULL, it identifies the loop being vectorized; otherwise a single block is being vectorized.
+@end deftypefn
+
+@deftypefn {Target Hook} unsigned TARGET_VECTORIZE_ADD_STMT_COST (void *@var{data}, int @var{count}, enum vect_cost_for_stmt @var{kind}, struct _stmt_vec_info *@var{stmt_info}, int @var{misalign}, enum vect_cost_model_location @var{where})
+This hook should update the target-specific @var{data} in response to adding @var{count} copies of the given @var{kind} of statement to a loop or basic block. The default adds the builtin vectorizer cost for the copies of the statement to the accumulator specified by @var{where}, (the prologue, body, or epilogue) and returns the amount added. The return value should be viewed as a tentative cost that may later be revised.
+@end deftypefn
+
+@deftypefn {Target Hook} void TARGET_VECTORIZE_FINISH_COST (void *@var{data}, unsigned *@var{prologue_cost}, unsigned *@var{body_cost}, unsigned *@var{epilogue_cost})
+This hook should complete calculations of the cost of vectorizing a loop or basic block based on @var{data}, and return the prologue, body, and epilogue costs as unsigned integers. The default returns the value of the three accumulators.
+@end deftypefn
+
+@deftypefn {Target Hook} void TARGET_VECTORIZE_DESTROY_COST_DATA (void *@var{data})
+This hook should release @var{data} and any related data structures allocated by TARGET_VECTORIZE_INIT_COST. The default releases the accumulator.
+@end deftypefn
+
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_TM_LOAD (tree)
This hook should return the built-in decl needed to load a vector of the given type within a transaction.
@end deftypefn
@@ -7836,6 +7824,20 @@ not recognize @samp{.} or cannot do calculations with it, you will need
to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique.
@end defmac
+@defmac NO_DOLLAR_IN_LABEL
+Define this macro if the assembler does not accept the character
+@samp{$} in label names. By default constructors and destructors in
+G++ have @samp{$} in the identifiers. If this macro is defined,
+@samp{.} is used instead.
+@end defmac
+
+@defmac NO_DOT_IN_LABEL
+Define this macro if the assembler does not accept the character
+@samp{.} in label names. By default constructors and destructors in G++
+have names that use @samp{.}. If this macro is defined, these names
+are rewritten to avoid @samp{.}.
+@end defmac
+
@defmac TYPE_ASM_OP
A C string containing the appropriate assembler directive to specify the
type of a symbol, without any arguments. On systems that use ELF, the
@@ -9714,8 +9716,9 @@ return an integer value not larger than the corresponding element in
be switched into prior to the execution of @var{insn}.
@end defmac
-@defmac MODE_AFTER (@var{mode}, @var{insn})
-If this macro is defined, it is evaluated for every @var{insn} during
+@defmac MODE_AFTER (@var{entity}, @var{mode}, @var{insn})
+@var{entity} is an integer specifying a mode-switched entity. If
+this macro is defined, it is evaluated for every @var{insn} during
mode switching. It determines the mode that an insn results in (if
different from the incoming mode).
@end defmac
@@ -10344,12 +10347,6 @@ Define this macro if loading short immediate values into registers sign
extends.
@end defmac
-@defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC
-Define this macro if the same instructions that convert a floating
-point number to a signed fixed point number also convert validly to an
-unsigned one.
-@end defmac
-
@deftypefn {Target Hook} {unsigned int} TARGET_MIN_DIVISIONS_FOR_RECIP_MUL (enum machine_mode @var{mode})
When @option{-ffast-math} is in effect, GCC tries to optimize
divisions by the same divisor, by turning them into multiplications by
@@ -10728,20 +10725,6 @@ not allowed by default; 1 means it is allowed. 1 is the default;
there is no need to define this macro in that case.
@end defmac
-@defmac NO_DOLLAR_IN_LABEL
-Define this macro if the assembler does not accept the character
-@samp{$} in label names. By default constructors and destructors in
-G++ have @samp{$} in the identifiers. If this macro is defined,
-@samp{.} is used instead.
-@end defmac
-
-@defmac NO_DOT_IN_LABEL
-Define this macro if the assembler does not accept the character
-@samp{.} in label names. By default constructors and destructors in G++
-have names that use @samp{.}. If this macro is defined, these names
-are rewritten to avoid @samp{.}.
-@end defmac
-
@defmac INSN_SETS_ARE_DELAYED (@var{insn})
Define this macro as a C expression that is nonzero if it is safe for the
delay slot scheduler to place instructions in the delay slot of @var{insn},
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index 4ec24693806..569413bcd5e 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -1091,6 +1091,8 @@ make it all fit in fewer cache lines.
If the value of this macro has a type, it should be an unsigned type.
@end defmac
+@hook TARGET_VECTOR_ALIGNMENT
+
@defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
If defined, a C expression to compute the alignment for stack slot.
@var{type} is the data type, @var{mode} is the widest mode available,
@@ -1238,9 +1240,9 @@ these accesses should use the bitfield container type.
The default is @code{!TARGET_STRICT_ALIGN}.
@end deftypefn
-@defmac MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode})
-Return 1 if a structure or array containing @var{field} should be accessed using
-@code{BLKMODE}.
+@hook TARGET_MEMBER_TYPE_FORCES_BLK
+Return true if a structure, union or array containing @var{field} should
+be accessed using @code{BLKMODE}.
If @var{field} is the only field in the structure, @var{mode} is its
mode, otherwise @var{mode} is VOIDmode. @var{mode} is provided in the
@@ -1248,7 +1250,7 @@ case where structures of one field would require the structure's mode to
retain the field's mode.
Normally, this is not needed.
-@end defmac
+@end deftypefn
@defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified})
Define this macro as an expression for the alignment of a type (given
@@ -4918,6 +4920,8 @@ FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM.
@hook TARGET_SET_UP_BY_PROLOGUE
+@hook TARGET_WARN_FUNC_RETURN
+
@node Stack Smashing Protection
@subsection Stack smashing protection
@cindex stack smashing protection
@@ -4934,7 +4938,7 @@ The default version of this hook creates a variable called
@end deftypefn
@hook TARGET_STACK_PROTECT_FAIL
-This hook returns a tree expression that alerts the runtime that the
+This hook returns a @code{CALL_EXPR} that alerts the runtime that the
stack protect guard variable has been modified. This expression should
involve a call to a @code{noreturn} function.
@@ -5543,24 +5547,6 @@ You may assume that @var{addr} is a valid address for the machine.
The default version of this hook returns @code{false}.
@end deftypefn
-@defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
-A C statement or compound statement with a conditional @code{goto
-@var{label};} executed if memory address @var{x} (an RTX) can have
-different meanings depending on the machine mode of the memory
-reference it is used for or if the address is valid for some modes
-but not others.
-
-Autoincrement and autodecrement addresses typically have mode-dependent
-effects because the amount of the increment or decrement is the size
-of the operand being addressed. Some machines have other mode-dependent
-addresses. Many RISC machines have no mode-dependent addresses.
-
-You may assume that @var{addr} is a valid address for the machine.
-
-These are obsolete macros, replaced by the
-@code{TARGET_MODE_DEPENDENT_ADDRESS_P} target hook.
-@end defmac
-
@hook TARGET_LEGITIMATE_CONSTANT_P
This hook returns true if @var{x} is a legitimate constant for a
@var{mode}-mode immediate operand on the target machine. You can assume that
@@ -5645,28 +5631,6 @@ the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low
log2(@var{VS}) @minus{} 1 bits of @var{addr} will be considered.
@end deftypefn
-@hook TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN
-This hook should return the DECL of a function @var{f} that implements
-widening multiplication of the even elements of two input vectors of type @var{x}.
-
-If this hook is defined, the autovectorizer will use it along with the
-@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD} target hook when vectorizing
-widening multiplication in cases that the order of the results does not have to be
-preserved (e.g.@: used only by a reduction computation). Otherwise, the
-@code{widen_mult_hi/lo} idioms will be used.
-@end deftypefn
-
-@hook TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD
-This hook should return the DECL of a function @var{f} that implements
-widening multiplication of the odd elements of two input vectors of type @var{x}.
-
-If this hook is defined, the autovectorizer will use it along with the
-@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN} target hook when vectorizing
-widening multiplication in cases that the order of the results does not have to be
-preserved (e.g.@: used only by a reduction computation). Otherwise, the
-@code{widen_mult_hi/lo} idioms will be used.
-@end deftypefn
-
@hook TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
Returns cost of different scalar or vector statements for vectorization cost model.
For vector memory operations the cost may depend on type (@var{vectype}) and
@@ -5724,6 +5688,14 @@ mode returned by @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE}.
The default is zero which means to not iterate over other vector sizes.
@end deftypefn
+@hook TARGET_VECTORIZE_INIT_COST
+
+@hook TARGET_VECTORIZE_ADD_STMT_COST
+
+@hook TARGET_VECTORIZE_FINISH_COST
+
+@hook TARGET_VECTORIZE_DESTROY_COST_DATA
+
@hook TARGET_VECTORIZE_BUILTIN_TM_LOAD
@hook TARGET_VECTORIZE_BUILTIN_TM_STORE
@@ -7737,6 +7709,20 @@ not recognize @samp{.} or cannot do calculations with it, you will need
to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique.
@end defmac
+@defmac NO_DOLLAR_IN_LABEL
+Define this macro if the assembler does not accept the character
+@samp{$} in label names. By default constructors and destructors in
+G++ have @samp{$} in the identifiers. If this macro is defined,
+@samp{.} is used instead.
+@end defmac
+
+@defmac NO_DOT_IN_LABEL
+Define this macro if the assembler does not accept the character
+@samp{.} in label names. By default constructors and destructors in G++
+have names that use @samp{.}. If this macro is defined, these names
+are rewritten to avoid @samp{.}.
+@end defmac
+
@defmac TYPE_ASM_OP
A C string containing the appropriate assembler directive to specify the
type of a symbol, without any arguments. On systems that use ELF, the
@@ -9601,8 +9587,9 @@ return an integer value not larger than the corresponding element in
be switched into prior to the execution of @var{insn}.
@end defmac
-@defmac MODE_AFTER (@var{mode}, @var{insn})
-If this macro is defined, it is evaluated for every @var{insn} during
+@defmac MODE_AFTER (@var{entity}, @var{mode}, @var{insn})
+@var{entity} is an integer specifying a mode-switched entity. If
+this macro is defined, it is evaluated for every @var{insn} during
mode switching. It determines the mode that an insn results in (if
different from the incoming mode).
@end defmac
@@ -10218,12 +10205,6 @@ Define this macro if loading short immediate values into registers sign
extends.
@end defmac
-@defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC
-Define this macro if the same instructions that convert a floating
-point number to a signed fixed point number also convert validly to an
-unsigned one.
-@end defmac
-
@hook TARGET_MIN_DIVISIONS_FOR_RECIP_MUL
When @option{-ffast-math} is in effect, GCC tries to optimize
divisions by the same divisor, by turning them into multiplications by
@@ -10602,20 +10583,6 @@ not allowed by default; 1 means it is allowed. 1 is the default;
there is no need to define this macro in that case.
@end defmac
-@defmac NO_DOLLAR_IN_LABEL
-Define this macro if the assembler does not accept the character
-@samp{$} in label names. By default constructors and destructors in
-G++ have @samp{$} in the identifiers. If this macro is defined,
-@samp{.} is used instead.
-@end defmac
-
-@defmac NO_DOT_IN_LABEL
-Define this macro if the assembler does not accept the character
-@samp{.} in label names. By default constructors and destructors in G++
-have names that use @samp{.}. If this macro is defined, these names
-are rewritten to avoid @samp{.}.
-@end defmac
-
@defmac INSN_SETS_ARE_DELAYED (@var{insn})
Define this macro as a C expression that is nonzero if it is safe for the
delay slot scheduler to place instructions in the delay slot of @var{insn},
diff --git a/gcc/doc/tree-ssa.texi b/gcc/doc/tree-ssa.texi
index b09b094560b..bf8652026df 100644
--- a/gcc/doc/tree-ssa.texi
+++ b/gcc/doc/tree-ssa.texi
@@ -628,10 +628,7 @@ introduced to replace existing names in the program, the mapping
between the old and the new names are registered by calling
@code{register_new_name_mapping} (note that if your pass creates new
code by duplicating basic blocks, the call to @code{tree_duplicate_bb}
-will set up the necessary mappings automatically). On the other hand,
-if your pass exposes a new symbol that should be put in SSA form for
-the first time, the new symbol should be registered with
-@code{mark_sym_for_renaming}.
+will set up the necessary mappings automatically).
After the replacement mappings have been registered and new symbols
marked for renaming, a call to @code{update_ssa} makes the registered
diff --git a/gcc/dojump.c b/gcc/dojump.c
index c2900b30d21..ea6620d64b7 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -1028,19 +1028,16 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_code code, int unsignedp,
op0 = op1;
op1 = tmp;
}
-
else if (SCALAR_FLOAT_MODE_P (mode)
&& ! can_compare_p (code, mode, ccp_jump)
-
- /* Never split ORDERED and UNORDERED. These must be implemented. */
+ /* Never split ORDERED and UNORDERED.
+ These must be implemented. */
&& (code != ORDERED && code != UNORDERED)
-
- /* Split a floating-point comparison if we can jump on other
- conditions... */
+ /* Split a floating-point comparison if
+ we can jump on other conditions... */
&& (have_insn_for (COMPARE, mode)
-
/* ... or if there is no libcall for it. */
- || code_to_optab[code] == NULL))
+ || code_to_optab (code) == unknown_optab))
{
enum rtx_code first_code;
bool and_them = split_comparison (code, mode, &first_code, &code);
@@ -1083,15 +1080,10 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_code code, int unsignedp,
last = NEXT_INSN (last))
if (JUMP_P (last))
break;
- if (!last
- || !JUMP_P (last)
- || NEXT_INSN (last)
- || !any_condjump_p (last))
- {
- if (dump_file)
- fprintf (dump_file, "Failed to add probability note\n");
- }
- else
+ if (last
+ && JUMP_P (last)
+ && ! NEXT_INSN (last)
+ && any_condjump_p (last))
{
gcc_assert (!find_reg_note (last, REG_BR_PROB, 0));
add_reg_note (last, REG_BR_PROB, GEN_INT (prob));
diff --git a/gcc/dominance.c b/gcc/dominance.c
index 03511e2393c..10a58cd8a2a 100644
--- a/gcc/dominance.c
+++ b/gcc/dominance.c
@@ -191,7 +191,7 @@ init_dom_info (struct dom_info *di, enum cdi_direction dir)
static unsigned int
dom_convert_dir_to_idx (enum cdi_direction dir)
{
- gcc_assert (dir == CDI_DOMINATORS || dir == CDI_POST_DOMINATORS);
+ gcc_checking_assert (dir == CDI_DOMINATORS || dir == CDI_POST_DOMINATORS);
return dir - 1;
}
@@ -613,7 +613,7 @@ compute_dom_fast_query (enum cdi_direction dir)
basic_block bb;
unsigned int dir_index = dom_convert_dir_to_idx (dir);
- gcc_assert (dom_info_available_p (dir));
+ gcc_checking_assert (dom_info_available_p (dir));
if (dom_computed[dir_index] == DOM_OK)
return;
@@ -702,7 +702,7 @@ get_immediate_dominator (enum cdi_direction dir, basic_block bb)
unsigned int dir_index = dom_convert_dir_to_idx (dir);
struct et_node *node = bb->dom[dir_index];
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
if (!node->father)
return NULL;
@@ -719,7 +719,7 @@ set_immediate_dominator (enum cdi_direction dir, basic_block bb,
unsigned int dir_index = dom_convert_dir_to_idx (dir);
struct et_node *node = bb->dom[dir_index];
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
if (node->father)
{
@@ -744,7 +744,7 @@ get_dominated_by (enum cdi_direction dir, basic_block bb)
struct et_node *node = bb->dom[dir_index], *son = node->son, *ason;
VEC (basic_block, heap) *bbs = NULL;
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
if (!son)
return NULL;
@@ -836,7 +836,7 @@ redirect_immediate_dominators (enum cdi_direction dir, basic_block bb,
bb_node = bb->dom[dir_index];
to_node = to->dom[dir_index];
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
if (!bb_node->son)
return;
@@ -859,7 +859,7 @@ nearest_common_dominator (enum cdi_direction dir, basic_block bb1, basic_block b
{
unsigned int dir_index = dom_convert_dir_to_idx (dir);
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
if (!bb1)
return bb2;
@@ -971,7 +971,7 @@ dominated_by_p (enum cdi_direction dir, const_basic_block bb1, const_basic_block
unsigned int dir_index = dom_convert_dir_to_idx (dir);
struct et_node *n1 = bb1->dom[dir_index], *n2 = bb2->dom[dir_index];
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
if (dom_computed[dir_index] == DOM_OK)
return (n1->dfs_num_in >= n2->dfs_num_in
@@ -988,7 +988,7 @@ bb_dom_dfs_in (enum cdi_direction dir, basic_block bb)
unsigned int dir_index = dom_convert_dir_to_idx (dir);
struct et_node *n = bb->dom[dir_index];
- gcc_assert (dom_computed[dir_index] == DOM_OK);
+ gcc_checking_assert (dom_computed[dir_index] == DOM_OK);
return n->dfs_num_in;
}
@@ -1000,7 +1000,7 @@ bb_dom_dfs_out (enum cdi_direction dir, basic_block bb)
unsigned int dir_index = dom_convert_dir_to_idx (dir);
struct et_node *n = bb->dom[dir_index];
- gcc_assert (dom_computed[dir_index] == DOM_OK);
+ gcc_checking_assert (dom_computed[dir_index] == DOM_OK);
return n->dfs_num_out;
}
@@ -1054,7 +1054,7 @@ recompute_dominator (enum cdi_direction dir, basic_block bb)
edge e;
edge_iterator ei;
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
if (dir == CDI_DOMINATORS)
{
@@ -1254,8 +1254,7 @@ iterate_fix_dominators (enum cdi_direction dir, VEC (basic_block, heap) *bbs,
problems would be unused, untested, and almost surely buggy. We keep
the DIR argument for consistency with the rest of the dominator analysis
interface. */
- gcc_assert (dir == CDI_DOMINATORS);
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dir == CDI_DOMINATORS && dom_computed[dir_index]);
/* The algorithm we use takes inspiration from the following papers, although
the details are quite different from any of them:
@@ -1401,8 +1400,7 @@ add_to_dominance_info (enum cdi_direction dir, basic_block bb)
{
unsigned int dir_index = dom_convert_dir_to_idx (dir);
- gcc_assert (dom_computed[dir_index]);
- gcc_assert (!bb->dom[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index] && !bb->dom[dir_index]);
n_bbs_in_dom_tree[dir_index]++;
@@ -1417,7 +1415,7 @@ delete_from_dominance_info (enum cdi_direction dir, basic_block bb)
{
unsigned int dir_index = dom_convert_dir_to_idx (dir);
- gcc_assert (dom_computed[dir_index]);
+ gcc_checking_assert (dom_computed[dir_index]);
et_free_tree (bb->dom[dir_index]);
bb->dom[dir_index] = NULL;
diff --git a/gcc/double-int.c b/gcc/double-int.c
index ae63ead903f..3a22d15f08c 100644
--- a/gcc/double-int.c
+++ b/gcc/double-int.c
@@ -135,13 +135,28 @@ mul_double_with_sign (unsigned HOST_WIDE_INT l1, HOST_WIDE_INT h1,
unsigned HOST_WIDE_INT *lv, HOST_WIDE_INT *hv,
bool unsigned_p)
{
+ unsigned HOST_WIDE_INT toplow;
+ HOST_WIDE_INT tophigh;
+
+ return mul_double_wide_with_sign (l1, h1, l2, h2,
+ lv, hv, &toplow, &tophigh,
+ unsigned_p);
+}
+
+int
+mul_double_wide_with_sign (unsigned HOST_WIDE_INT l1, HOST_WIDE_INT h1,
+ unsigned HOST_WIDE_INT l2, HOST_WIDE_INT h2,
+ unsigned HOST_WIDE_INT *lv, HOST_WIDE_INT *hv,
+ unsigned HOST_WIDE_INT *lw, HOST_WIDE_INT *hw,
+ bool unsigned_p)
+{
HOST_WIDE_INT arg1[4];
HOST_WIDE_INT arg2[4];
HOST_WIDE_INT prod[4 * 2];
unsigned HOST_WIDE_INT carry;
int i, j, k;
- unsigned HOST_WIDE_INT toplow, neglow;
- HOST_WIDE_INT tophigh, neghigh;
+ unsigned HOST_WIDE_INT neglow;
+ HOST_WIDE_INT neghigh;
encode (arg1, l1, h1);
encode (arg2, l2, h2);
@@ -155,7 +170,7 @@ mul_double_with_sign (unsigned HOST_WIDE_INT l1, HOST_WIDE_INT h1,
{
k = i + j;
/* This product is <= 0xFFFE0001, the sum <= 0xFFFF0000. */
- carry += arg1[i] * arg2[j];
+ carry += (unsigned HOST_WIDE_INT) arg1[i] * arg2[j];
/* Since prod[p] < 0xFFFF, this sum <= 0xFFFFFFFF. */
carry += prod[k];
prod[k] = LOWPART (carry);
@@ -165,25 +180,25 @@ mul_double_with_sign (unsigned HOST_WIDE_INT l1, HOST_WIDE_INT h1,
}
decode (prod, lv, hv);
- decode (prod + 4, &toplow, &tophigh);
+ decode (prod + 4, lw, hw);
/* Unsigned overflow is immediate. */
if (unsigned_p)
- return (toplow | tophigh) != 0;
+ return (*lw | *hw) != 0;
/* Check for signed overflow by calculating the signed representation of the
top half of the result; it should agree with the low half's sign bit. */
if (h1 < 0)
{
neg_double (l2, h2, &neglow, &neghigh);
- add_double (neglow, neghigh, toplow, tophigh, &toplow, &tophigh);
+ add_double (neglow, neghigh, *lw, *hw, lw, hw);
}
if (h2 < 0)
{
neg_double (l1, h1, &neglow, &neghigh);
- add_double (neglow, neghigh, toplow, tophigh, &toplow, &tophigh);
+ add_double (neglow, neghigh, *lw, *hw, lw, hw);
}
- return (*hv < 0 ? ~(toplow & tophigh) : toplow | tophigh) != 0;
+ return (*hv < 0 ? ~(*lw & *hw) : *lw | *hw) != 0;
}
/* Shift the doubleword integer in L1, H1 right by COUNT places
@@ -595,7 +610,7 @@ div_and_round_double (unsigned code, int uns,
/* Returns mask for PREC bits. */
double_int
-double_int_mask (unsigned prec)
+double_int::mask (unsigned prec)
{
unsigned HOST_WIDE_INT m;
double_int mask;
@@ -610,7 +625,7 @@ double_int_mask (unsigned prec)
else
{
mask.high = 0;
- mask.low = ((unsigned HOST_WIDE_INT) 2 << (prec - 1)) - 1;
+ mask.low = prec ? ((unsigned HOST_WIDE_INT) 2 << (prec - 1)) - 1 : 0;
}
return mask;
@@ -620,20 +635,20 @@ double_int_mask (unsigned prec)
of precision PREC. */
double_int
-double_int_max_value (unsigned int prec, bool uns)
+double_int::max_value (unsigned int prec, bool uns)
{
- return double_int_mask (prec - (uns ? 0 : 1));
+ return double_int::mask (prec - (uns ? 0 : 1));
}
/* Returns a minimum value for signed or unsigned integer
of precision PREC. */
double_int
-double_int_min_value (unsigned int prec, bool uns)
+double_int::min_value (unsigned int prec, bool uns)
{
if (uns)
return double_int_zero;
- return double_int_lshift (double_int_one, prec - 1, prec, false);
+ return double_int_one.lshift (prec - 1, prec, false);
}
/* Clears the bits of CST over the precision PREC. If UNS is false, the bits
@@ -644,20 +659,21 @@ double_int_min_value (unsigned int prec, bool uns)
of CST, with the given signedness. */
double_int
-double_int_ext (double_int cst, unsigned prec, bool uns)
+double_int::ext (unsigned prec, bool uns) const
{
if (uns)
- return double_int_zext (cst, prec);
+ return this->zext (prec);
else
- return double_int_sext (cst, prec);
+ return this->sext (prec);
}
-/* The same as double_int_ext with UNS = true. */
+/* The same as double_int::ext with UNS = true. */
double_int
-double_int_zext (double_int cst, unsigned prec)
+double_int::zext (unsigned prec) const
{
- double_int mask = double_int_mask (prec);
+ const double_int &cst = *this;
+ double_int mask = double_int::mask (prec);
double_int r;
r.low = cst.low & mask.low;
@@ -666,12 +682,13 @@ double_int_zext (double_int cst, unsigned prec)
return r;
}
-/* The same as double_int_ext with UNS = false. */
+/* The same as double_int::ext with UNS = false. */
double_int
-double_int_sext (double_int cst, unsigned prec)
+double_int::sext (unsigned prec) const
{
- double_int mask = double_int_mask (prec);
+ const double_int &cst = *this;
+ double_int mask = double_int::mask (prec);
double_int r;
unsigned HOST_WIDE_INT snum;
@@ -699,8 +716,9 @@ double_int_sext (double_int cst, unsigned prec)
/* Returns true if CST fits in signed HOST_WIDE_INT. */
bool
-double_int_fits_in_shwi_p (double_int cst)
+double_int::fits_shwi () const
{
+ const double_int &cst = *this;
if (cst.high == 0)
return (HOST_WIDE_INT) cst.low >= 0;
else if (cst.high == -1)
@@ -713,19 +731,20 @@ double_int_fits_in_shwi_p (double_int cst)
unsigned HOST_WIDE_INT if UNS is true. */
bool
-double_int_fits_in_hwi_p (double_int cst, bool uns)
+double_int::fits_hwi (bool uns) const
{
if (uns)
- return double_int_fits_in_uhwi_p (cst);
+ return this->fits_uhwi ();
else
- return double_int_fits_in_shwi_p (cst);
+ return this->fits_shwi ();
}
/* Returns A * B. */
double_int
-double_int_mul (double_int a, double_int b)
+double_int::operator * (double_int b) const
{
+ const double_int &a = *this;
double_int ret;
mul_double (a.low, a.high, b.low, b.high, &ret.low, &ret.high);
return ret;
@@ -735,9 +754,9 @@ double_int_mul (double_int a, double_int b)
*OVERFLOW is set to nonzero. */
double_int
-double_int_mul_with_sign (double_int a, double_int b,
- bool unsigned_p, int *overflow)
+double_int::mul_with_sign (double_int b, bool unsigned_p, int *overflow) const
{
+ const double_int &a = *this;
double_int ret;
*overflow = mul_double_with_sign (a.low, a.high, b.low, b.high,
&ret.low, &ret.high, unsigned_p);
@@ -747,8 +766,9 @@ double_int_mul_with_sign (double_int a, double_int b,
/* Returns A + B. */
double_int
-double_int_add (double_int a, double_int b)
+double_int::operator + (double_int b) const
{
+ const double_int &a = *this;
double_int ret;
add_double (a.low, a.high, b.low, b.high, &ret.low, &ret.high);
return ret;
@@ -757,8 +777,9 @@ double_int_add (double_int a, double_int b)
/* Returns A - B. */
double_int
-double_int_sub (double_int a, double_int b)
+double_int::operator - (double_int b) const
{
+ const double_int &a = *this;
double_int ret;
neg_double (b.low, b.high, &b.low, &b.high);
add_double (a.low, a.high, b.low, b.high, &ret.low, &ret.high);
@@ -768,8 +789,9 @@ double_int_sub (double_int a, double_int b)
/* Returns -A. */
double_int
-double_int_neg (double_int a)
+double_int::operator - () const
{
+ const double_int &a = *this;
double_int ret;
neg_double (a.low, a.high, &ret.low, &ret.high);
return ret;
@@ -781,9 +803,10 @@ double_int_neg (double_int a)
stored to MOD. */
double_int
-double_int_divmod (double_int a, double_int b, bool uns, unsigned code,
- double_int *mod)
+double_int::divmod (double_int b, bool uns, unsigned code,
+ double_int *mod) const
{
+ const double_int &a = *this;
double_int ret;
div_and_round_double (code, uns, a.low, a.high,
@@ -792,20 +815,20 @@ double_int_divmod (double_int a, double_int b, bool uns, unsigned code,
return ret;
}
-/* The same as double_int_divmod with UNS = false. */
+/* The same as double_int::divmod with UNS = false. */
double_int
-double_int_sdivmod (double_int a, double_int b, unsigned code, double_int *mod)
+double_int::sdivmod (double_int b, unsigned code, double_int *mod) const
{
- return double_int_divmod (a, b, false, code, mod);
+ return this->divmod (b, false, code, mod);
}
-/* The same as double_int_divmod with UNS = true. */
+/* The same as double_int::divmod with UNS = true. */
double_int
-double_int_udivmod (double_int a, double_int b, unsigned code, double_int *mod)
+double_int::udivmod (double_int b, unsigned code, double_int *mod) const
{
- return double_int_divmod (a, b, true, code, mod);
+ return this->divmod (b, true, code, mod);
}
/* Returns A / B (computed as unsigned depending on UNS, and rounded as
@@ -813,27 +836,27 @@ double_int_udivmod (double_int a, double_int b, unsigned code, double_int *mod)
must be included before tree.h. */
double_int
-double_int_div (double_int a, double_int b, bool uns, unsigned code)
+double_int::div (double_int b, bool uns, unsigned code) const
{
double_int mod;
- return double_int_divmod (a, b, uns, code, &mod);
+ return this->divmod (b, uns, code, &mod);
}
-/* The same as double_int_div with UNS = false. */
+/* The same as double_int::div with UNS = false. */
double_int
-double_int_sdiv (double_int a, double_int b, unsigned code)
+double_int::sdiv (double_int b, unsigned code) const
{
- return double_int_div (a, b, false, code);
+ return this->div (b, false, code);
}
-/* The same as double_int_div with UNS = true. */
+/* The same as double_int::div with UNS = true. */
double_int
-double_int_udiv (double_int a, double_int b, unsigned code)
+double_int::udiv (double_int b, unsigned code) const
{
- return double_int_div (a, b, true, code);
+ return this->div (b, true, code);
}
/* Returns A % B (computed as unsigned depending on UNS, and rounded as
@@ -841,28 +864,28 @@ double_int_udiv (double_int a, double_int b, unsigned code)
must be included before tree.h. */
double_int
-double_int_mod (double_int a, double_int b, bool uns, unsigned code)
+double_int::mod (double_int b, bool uns, unsigned code) const
{
double_int mod;
- double_int_divmod (a, b, uns, code, &mod);
+ this->divmod (b, uns, code, &mod);
return mod;
}
-/* The same as double_int_mod with UNS = false. */
+/* The same as double_int::mod with UNS = false. */
double_int
-double_int_smod (double_int a, double_int b, unsigned code)
+double_int::smod (double_int b, unsigned code) const
{
- return double_int_mod (a, b, false, code);
+ return this->mod (b, false, code);
}
-/* The same as double_int_mod with UNS = true. */
+/* The same as double_int::mod with UNS = true. */
double_int
-double_int_umod (double_int a, double_int b, unsigned code)
+double_int::umod (double_int b, unsigned code) const
{
- return double_int_mod (a, b, true, code);
+ return this->mod (b, true, code);
}
/* Return TRUE iff PRODUCT is an integral multiple of FACTOR, and return
@@ -870,13 +893,13 @@ double_int_umod (double_int a, double_int b, unsigned code)
unchanged. */
bool
-double_int_multiple_of (double_int product, double_int factor,
- bool unsigned_p, double_int *multiple)
+double_int::multiple_of (double_int factor,
+ bool unsigned_p, double_int *multiple) const
{
double_int remainder;
- double_int quotient = double_int_divmod (product, factor, unsigned_p,
+ double_int quotient = this->divmod (factor, unsigned_p,
TRUNC_DIV_EXPR, &remainder);
- if (double_int_zero_p (remainder))
+ if (remainder.is_zero ())
{
*multiple = quotient;
return true;
@@ -887,8 +910,9 @@ double_int_multiple_of (double_int product, double_int factor,
/* Set BITPOS bit in A. */
double_int
-double_int_setbit (double_int a, unsigned bitpos)
+double_int::set_bit (unsigned bitpos) const
{
+ double_int a = *this;
if (bitpos < HOST_BITS_PER_WIDE_INT)
a.low |= (unsigned HOST_WIDE_INT) 1 << bitpos;
else
@@ -899,8 +923,9 @@ double_int_setbit (double_int a, unsigned bitpos)
/* Count trailing zeros in A. */
int
-double_int_ctz (double_int a)
+double_int::trailing_zeros () const
{
+ const double_int &a = *this;
unsigned HOST_WIDE_INT w = a.low ? a.low : (unsigned HOST_WIDE_INT) a.high;
unsigned bits = a.low ? 0 : HOST_BITS_PER_WIDE_INT;
if (!w)
@@ -914,30 +939,76 @@ double_int_ctz (double_int a)
otherwise use logical shift. */
double_int
-double_int_lshift (double_int a, HOST_WIDE_INT count, unsigned int prec, bool arith)
+double_int::lshift (HOST_WIDE_INT count, unsigned int prec, bool arith) const
{
+ const double_int &a = *this;
double_int ret;
lshift_double (a.low, a.high, count, prec, &ret.low, &ret.high, arith);
return ret;
}
-/* Shift A rigth by COUNT places keeping only PREC bits of result. Shift
+/* Shift A right by COUNT places keeping only PREC bits of result. Shift
left if COUNT is negative. ARITH true specifies arithmetic shifting;
otherwise use logical shift. */
double_int
-double_int_rshift (double_int a, HOST_WIDE_INT count, unsigned int prec, bool arith)
+double_int::rshift (HOST_WIDE_INT count, unsigned int prec, bool arith) const
{
+ const double_int &a = *this;
double_int ret;
lshift_double (a.low, a.high, -count, prec, &ret.low, &ret.high, arith);
return ret;
}
+/* Arithmetic shift A left by COUNT places keeping only PREC bits of result.
+ Shift right if COUNT is negative. */
+
+double_int
+double_int::alshift (HOST_WIDE_INT count, unsigned int prec) const
+{
+ double_int r;
+ lshift_double (low, high, count, prec, &r.low, &r.high, true);
+ return r;
+}
+
+/* Arithmetic shift A right by COUNT places keeping only PREC bits of result.
+ Shift left if COUNT is negative. */
+
+double_int
+double_int::arshift (HOST_WIDE_INT count, unsigned int prec) const
+{
+ double_int r;
+ lshift_double (low, high, -count, prec, &r.low, &r.high, true);
+ return r;
+}
+
+/* Logical shift A left by COUNT places keeping only PREC bits of result.
+ Shift right if COUNT is negative. */
+
+double_int
+double_int::llshift (HOST_WIDE_INT count, unsigned int prec) const
+{
+ double_int r;
+ lshift_double (low, high, count, prec, &r.low, &r.high, false);
+ return r;
+}
+
+/* Logical shift A right by COUNT places keeping only PREC bits of result.
+ Shift left if COUNT is negative. */
+
+double_int
+double_int::lrshift (HOST_WIDE_INT count, unsigned int prec) const
+{
+ double_int r;
+ lshift_double (low, high, -count, prec, &r.low, &r.high, false);
+ return r;
+}
+
/* Rotate A left by COUNT places keeping only PREC bits of result.
Rotate right if COUNT is negative. */
double_int
-double_int_lrotate (double_int a, HOST_WIDE_INT count, unsigned int prec)
+double_int::lrotate (HOST_WIDE_INT count, unsigned int prec) const
{
double_int t1, t2;
@@ -945,17 +1016,17 @@ double_int_lrotate (double_int a, HOST_WIDE_INT count, unsigned int prec)
if (count < 0)
count += prec;
- t1 = double_int_lshift (a, count, prec, false);
- t2 = double_int_rshift (a, prec - count, prec, false);
+ t1 = this->lshift (count, prec, false);
+ t2 = this->rshift (prec - count, prec, false);
- return double_int_ior (t1, t2);
+ return t1 | t2;
}
/* Rotate A rigth by COUNT places keeping only PREC bits of result.
Rotate right if COUNT is negative. */
double_int
-double_int_rrotate (double_int a, HOST_WIDE_INT count, unsigned int prec)
+double_int::rrotate (HOST_WIDE_INT count, unsigned int prec) const
{
double_int t1, t2;
@@ -963,30 +1034,31 @@ double_int_rrotate (double_int a, HOST_WIDE_INT count, unsigned int prec)
if (count < 0)
count += prec;
- t1 = double_int_rshift (a, count, prec, false);
- t2 = double_int_lshift (a, prec - count, prec, false);
+ t1 = this->rshift (count, prec, false);
+ t2 = this->lshift (prec - count, prec, false);
- return double_int_ior (t1, t2);
+ return t1 | t2;
}
/* Returns -1 if A < B, 0 if A == B and 1 if A > B. Signedness of the
comparison is given by UNS. */
int
-double_int_cmp (double_int a, double_int b, bool uns)
+double_int::cmp (double_int b, bool uns) const
{
if (uns)
- return double_int_ucmp (a, b);
+ return this->ucmp (b);
else
- return double_int_scmp (a, b);
+ return this->scmp (b);
}
/* Compares two unsigned values A and B. Returns -1 if A < B, 0 if A == B,
and 1 if A > B. */
int
-double_int_ucmp (double_int a, double_int b)
+double_int::ucmp (double_int b) const
{
+ const double_int &a = *this;
if ((unsigned HOST_WIDE_INT) a.high < (unsigned HOST_WIDE_INT) b.high)
return -1;
if ((unsigned HOST_WIDE_INT) a.high > (unsigned HOST_WIDE_INT) b.high)
@@ -1003,8 +1075,9 @@ double_int_ucmp (double_int a, double_int b)
and 1 if A > B. */
int
-double_int_scmp (double_int a, double_int b)
+double_int::scmp (double_int b) const
{
+ const double_int &a = *this;
if (a.high < b.high)
return -1;
if (a.high > b.high)
@@ -1017,49 +1090,111 @@ double_int_scmp (double_int a, double_int b)
return 0;
}
+/* Compares two unsigned values A and B for less-than. */
+
+bool
+double_int::ult (double_int b) const
+{
+ if ((unsigned HOST_WIDE_INT) high < (unsigned HOST_WIDE_INT) b.high)
+ return true;
+ if ((unsigned HOST_WIDE_INT) high > (unsigned HOST_WIDE_INT) b.high)
+ return false;
+ if (low < b.low)
+ return true;
+ return false;
+}
+
+/* Compares two unsigned values A and B for greater-than. */
+
+bool
+double_int::ugt (double_int b) const
+{
+ if ((unsigned HOST_WIDE_INT) high > (unsigned HOST_WIDE_INT) b.high)
+ return true;
+ if ((unsigned HOST_WIDE_INT) high < (unsigned HOST_WIDE_INT) b.high)
+ return false;
+ if (low > b.low)
+ return true;
+ return false;
+}
+
+/* Compares two signed values A and B for less-than. */
+
+bool
+double_int::slt (double_int b) const
+{
+ if (high < b.high)
+ return true;
+ if (high > b.high)
+ return false;
+ if (low < b.low)
+ return true;
+ return false;
+}
+
+/* Compares two signed values A and B for greater-than. */
+
+bool
+double_int::sgt (double_int b) const
+{
+ if (high > b.high)
+ return true;
+ if (high < b.high)
+ return false;
+ if (low > b.low)
+ return true;
+ return false;
+}
+
+
/* Compares two values A and B. Returns max value. Signedness of the
comparison is given by UNS. */
double_int
-double_int_max (double_int a, double_int b, bool uns)
+double_int::max (double_int b, bool uns)
{
- return (double_int_cmp (a, b, uns) == 1) ? a : b;
+ return (this->cmp (b, uns) == 1) ? *this : b;
}
/* Compares two signed values A and B. Returns max value. */
-double_int double_int_smax (double_int a, double_int b)
+double_int
+double_int::smax (double_int b)
{
- return (double_int_scmp (a, b) == 1) ? a : b;
+ return (this->scmp (b) == 1) ? *this : b;
}
/* Compares two unsigned values A and B. Returns max value. */
-double_int double_int_umax (double_int a, double_int b)
+double_int
+double_int::umax (double_int b)
{
- return (double_int_ucmp (a, b) == 1) ? a : b;
+ return (this->ucmp (b) == 1) ? *this : b;
}
/* Compares two values A and B. Returns mix value. Signedness of the
comparison is given by UNS. */
-double_int double_int_min (double_int a, double_int b, bool uns)
+double_int
+double_int::min (double_int b, bool uns)
{
- return (double_int_cmp (a, b, uns) == -1) ? a : b;
+ return (this->cmp (b, uns) == -1) ? *this : b;
}
/* Compares two signed values A and B. Returns min value. */
-double_int double_int_smin (double_int a, double_int b)
+double_int
+double_int::smin (double_int b)
{
- return (double_int_scmp (a, b) == -1) ? a : b;
+ return (this->scmp (b) == -1) ? *this : b;
}
/* Compares two unsigned values A and B. Returns min value. */
-double_int double_int_umin (double_int a, double_int b)
+double_int
+double_int::umin (double_int b)
{
- return (double_int_ucmp (a, b) == -1) ? a : b;
+ return (this->ucmp (b) == -1) ? *this : b;
}
/* Splits last digit of *CST (taken as unsigned) in BASE and returns it. */
@@ -1087,19 +1222,19 @@ dump_double_int (FILE *file, double_int cst, bool uns)
unsigned digits[100], n;
int i;
- if (double_int_zero_p (cst))
+ if (cst.is_zero ())
{
fprintf (file, "0");
return;
}
- if (!uns && double_int_negative_p (cst))
+ if (!uns && cst.is_negative ())
{
fprintf (file, "-");
- cst = double_int_neg (cst);
+ cst = -cst;
}
- for (n = 0; !double_int_zero_p (cst); n++)
+ for (n = 0; !cst.is_zero (); n++)
digits[n] = double_int_split_digit (&cst, 10);
for (i = n - 1; i >= 0; i--)
fprintf (file, "%u", digits[i]);
@@ -1115,10 +1250,10 @@ mpz_set_double_int (mpz_t result, double_int val, bool uns)
bool negate = false;
unsigned HOST_WIDE_INT vp[2];
- if (!uns && double_int_negative_p (val))
+ if (!uns && val.is_negative ())
{
negate = true;
- val = double_int_neg (val);
+ val = -val;
}
vp[0] = val.low;
@@ -1176,9 +1311,9 @@ mpz_get_double_int (const_tree type, mpz_t val, bool wrap)
res.low = vp[0];
res.high = (HOST_WIDE_INT) vp[1];
- res = double_int_ext (res, TYPE_PRECISION (type), TYPE_UNSIGNED (type));
+ res = res.ext (TYPE_PRECISION (type), TYPE_UNSIGNED (type));
if (mpz_sgn (val) < 0)
- res = double_int_neg (res);
+ res = -res;
return res;
}
diff --git a/gcc/double-int.h b/gcc/double-int.h
index ef9a8a9a1b7..3d9aa2caa9d 100644
--- a/gcc/double-int.h
+++ b/gcc/double-int.h
@@ -23,7 +23,6 @@ along with GCC; see the file COPYING3. If not see
#ifndef GENERATOR_FILE
#include <gmp.h>
#endif
-#include "coretypes.h"
/* A large integer is currently represented as a pair of HOST_WIDE_INTs.
It therefore represents a number with precision of
@@ -51,10 +50,132 @@ along with GCC; see the file COPYING3. If not see
numbers with precision higher than HOST_WIDE_INT). It might be less
confusing to have them both signed or both unsigned. */
-typedef struct
+typedef struct double_int
{
+public:
+ /* Normally, we would define constructors to create instances.
+ Two things prevent us from doing so.
+ First, defining a constructor makes the class non-POD in C++03,
+ and we certainly want double_int to be a POD.
+ Second, the GCC conding conventions prefer explicit conversion,
+ and explicit conversion operators are not available until C++11. */
+
+ static double_int from_uhwi (unsigned HOST_WIDE_INT cst);
+ static double_int from_shwi (HOST_WIDE_INT cst);
+
+ /* No copy assignment operator or destructor to keep the type a POD. */
+
+ /* There are some special value-creation static member functions. */
+
+ static double_int mask (unsigned prec);
+ static double_int max_value (unsigned int prec, bool uns);
+ static double_int min_value (unsigned int prec, bool uns);
+
+ /* The following functions are mutating operations. */
+
+ double_int &operator ++ (); // prefix
+ double_int &operator -- (); // prefix
+ double_int &operator *= (double_int);
+ double_int &operator += (double_int);
+ double_int &operator -= (double_int);
+
+ /* The following functions are non-mutating operations. */
+
+ /* Conversion functions. */
+
+ HOST_WIDE_INT to_shwi () const;
+ unsigned HOST_WIDE_INT to_uhwi () const;
+
+ /* Conversion query functions. */
+
+ bool fits_uhwi () const;
+ bool fits_shwi () const;
+ bool fits_hwi (bool uns) const;
+
+ /* Attribute query functions. */
+
+ int trailing_zeros () const;
+ int popcount () const;
+
+ /* Arithmetic query operations. */
+
+ bool multiple_of (double_int, bool, double_int *) const;
+
+ /* Arithmetic operation functions. */
+
+ double_int set_bit (unsigned) const;
+ double_int mul_with_sign (double_int, bool, int *) const;
+
+ double_int operator * (double_int b) const;
+ double_int operator + (double_int b) const;
+ double_int operator - (double_int b) const;
+ double_int operator - () const;
+ double_int operator ~ () const;
+ double_int operator & (double_int b) const;
+ double_int operator | (double_int b) const;
+ double_int operator ^ (double_int b) const;
+ double_int and_not (double_int b) const;
+
+ double_int lshift (HOST_WIDE_INT count, unsigned int prec, bool arith) const;
+ double_int rshift (HOST_WIDE_INT count, unsigned int prec, bool arith) const;
+ double_int alshift (HOST_WIDE_INT count, unsigned int prec) const;
+ double_int arshift (HOST_WIDE_INT count, unsigned int prec) const;
+ double_int llshift (HOST_WIDE_INT count, unsigned int prec) const;
+ double_int lrshift (HOST_WIDE_INT count, unsigned int prec) const;
+ double_int lrotate (HOST_WIDE_INT count, unsigned int prec) const;
+ double_int rrotate (HOST_WIDE_INT count, unsigned int prec) const;
+
+ /* You must ensure that double_int::ext is called on the operands
+ of the following operations, if the precision of the numbers
+ is less than HOST_BITS_PER_DOUBLE_INT bits. */
+ double_int div (double_int, bool, unsigned) const;
+ double_int sdiv (double_int, unsigned) const;
+ double_int udiv (double_int, unsigned) const;
+ double_int mod (double_int, bool, unsigned) const;
+ double_int smod (double_int, unsigned) const;
+ double_int umod (double_int, unsigned) const;
+ double_int divmod (double_int, bool, unsigned, double_int *) const;
+ double_int sdivmod (double_int, unsigned, double_int *) const;
+ double_int udivmod (double_int, unsigned, double_int *) const;
+
+ /* Precision control functions. */
+
+ double_int ext (unsigned prec, bool uns) const;
+ double_int zext (unsigned prec) const;
+ double_int sext (unsigned prec) const;
+
+ /* Comparative functions. */
+
+ bool is_zero () const;
+ bool is_one () const;
+ bool is_minus_one () const;
+ bool is_negative () const;
+
+ int cmp (double_int b, bool uns) const;
+ int ucmp (double_int b) const;
+ int scmp (double_int b) const;
+
+ bool ult (double_int b) const;
+ bool ugt (double_int b) const;
+ bool slt (double_int b) const;
+ bool sgt (double_int b) const;
+
+ double_int max (double_int b, bool uns);
+ double_int smax (double_int b);
+ double_int umax (double_int b);
+
+ double_int min (double_int b, bool uns);
+ double_int smin (double_int b);
+ double_int umin (double_int b);
+
+ bool operator == (double_int cst2) const;
+ bool operator != (double_int cst2) const;
+
+ /* Please migrate away from using these member variables publically. */
+
unsigned HOST_WIDE_INT low;
HOST_WIDE_INT high;
+
} double_int;
#define HOST_BITS_PER_DOUBLE_INT (2 * HOST_BITS_PER_WIDE_INT)
@@ -64,66 +185,148 @@ typedef struct
/* Constructs double_int from integer CST. The bits over the precision of
HOST_WIDE_INT are filled with the sign bit. */
-static inline double_int
-shwi_to_double_int (HOST_WIDE_INT cst)
+inline
+double_int double_int::from_shwi (HOST_WIDE_INT cst)
{
double_int r;
-
r.low = (unsigned HOST_WIDE_INT) cst;
r.high = cst < 0 ? -1 : 0;
-
return r;
}
+/* FIXME(crowl): Remove after converting callers. */
+static inline double_int
+shwi_to_double_int (HOST_WIDE_INT cst)
+{
+ return double_int::from_shwi (cst);
+}
+
/* Some useful constants. */
+/* FIXME(crowl): Maybe remove after converting callers?
+ The problem is that a named constant would not be as optimizable,
+ while the functional syntax is more verbose. */
-#define double_int_minus_one (shwi_to_double_int (-1))
-#define double_int_zero (shwi_to_double_int (0))
-#define double_int_one (shwi_to_double_int (1))
-#define double_int_two (shwi_to_double_int (2))
-#define double_int_ten (shwi_to_double_int (10))
+#define double_int_minus_one (double_int::from_shwi (-1))
+#define double_int_zero (double_int::from_shwi (0))
+#define double_int_one (double_int::from_shwi (1))
+#define double_int_two (double_int::from_shwi (2))
+#define double_int_ten (double_int::from_shwi (10))
/* Constructs double_int from unsigned integer CST. The bits over the
precision of HOST_WIDE_INT are filled with zeros. */
-static inline double_int
-uhwi_to_double_int (unsigned HOST_WIDE_INT cst)
+inline
+double_int double_int::from_uhwi (unsigned HOST_WIDE_INT cst)
{
double_int r;
-
r.low = cst;
r.high = 0;
-
return r;
}
+/* FIXME(crowl): Remove after converting callers. */
+static inline double_int
+uhwi_to_double_int (unsigned HOST_WIDE_INT cst)
+{
+ return double_int::from_uhwi (cst);
+}
+
+inline double_int &
+double_int::operator ++ ()
+{
+ *this += double_int_one;
+ return *this;
+}
+
+inline double_int &
+double_int::operator -- ()
+{
+ *this -= double_int_one;
+ return *this;
+}
+
+inline double_int &
+double_int::operator *= (double_int b)
+{
+ *this = *this * b;
+ return *this;
+}
+
+inline double_int &
+double_int::operator += (double_int b)
+{
+ *this = *this + b;
+ return *this;
+}
+
+inline double_int &
+double_int::operator -= (double_int b)
+{
+ *this = *this - b;
+ return *this;
+}
+
/* Returns value of CST as a signed number. CST must satisfy
- double_int_fits_in_shwi_p. */
+ double_int::fits_signed. */
+
+inline HOST_WIDE_INT
+double_int::to_shwi () const
+{
+ return (HOST_WIDE_INT) low;
+}
+/* FIXME(crowl): Remove after converting callers. */
static inline HOST_WIDE_INT
double_int_to_shwi (double_int cst)
{
- return (HOST_WIDE_INT) cst.low;
+ return cst.to_shwi ();
}
/* Returns value of CST as an unsigned number. CST must satisfy
- double_int_fits_in_uhwi_p. */
+ double_int::fits_unsigned. */
+
+inline unsigned HOST_WIDE_INT
+double_int::to_uhwi () const
+{
+ return low;
+}
+/* FIXME(crowl): Remove after converting callers. */
static inline unsigned HOST_WIDE_INT
double_int_to_uhwi (double_int cst)
{
- return cst.low;
+ return cst.to_uhwi ();
}
-bool double_int_fits_in_hwi_p (double_int, bool);
-bool double_int_fits_in_shwi_p (double_int);
-
/* Returns true if CST fits in unsigned HOST_WIDE_INT. */
+inline bool
+double_int::fits_uhwi () const
+{
+ return high == 0;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline bool
double_int_fits_in_uhwi_p (double_int cst)
{
- return cst.high == 0;
+ return cst.fits_uhwi ();
+}
+
+/* Returns true if CST fits in signed HOST_WIDE_INT. */
+
+/* FIXME(crowl): Remove after converting callers. */
+inline bool
+double_int_fits_in_shwi_p (double_int cst)
+{
+ return cst.fits_shwi ();
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline bool
+double_int_fits_in_hwi_p (double_int cst, bool uns)
+{
+ return cst.fits_hwi (uns);
}
/* The following operations perform arithmetics modulo 2^precision,
@@ -131,88 +334,258 @@ double_int_fits_in_uhwi_p (double_int cst)
you are representing numbers with precision less than
HOST_BITS_PER_DOUBLE_INT bits. */
-double_int double_int_mul (double_int, double_int);
-double_int double_int_mul_with_sign (double_int, double_int, bool, int *);
-double_int double_int_add (double_int, double_int);
-double_int double_int_sub (double_int, double_int);
-double_int double_int_neg (double_int);
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_mul (double_int a, double_int b)
+{
+ return a * b;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_mul_with_sign (double_int a, double_int b,
+ bool unsigned_p, int *overflow)
+{
+ return a.mul_with_sign (b, unsigned_p, overflow);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_add (double_int a, double_int b)
+{
+ return a + b;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_sub (double_int a, double_int b)
+{
+ return a - b;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_neg (double_int a)
+{
+ return -a;
+}
/* You must ensure that double_int_ext is called on the operands
of the following operations, if the precision of the numbers
is less than HOST_BITS_PER_DOUBLE_INT bits. */
-double_int double_int_div (double_int, double_int, bool, unsigned);
-double_int double_int_sdiv (double_int, double_int, unsigned);
-double_int double_int_udiv (double_int, double_int, unsigned);
-double_int double_int_mod (double_int, double_int, bool, unsigned);
-double_int double_int_smod (double_int, double_int, unsigned);
-double_int double_int_umod (double_int, double_int, unsigned);
-double_int double_int_divmod (double_int, double_int, bool, unsigned, double_int *);
-double_int double_int_sdivmod (double_int, double_int, unsigned, double_int *);
-double_int double_int_udivmod (double_int, double_int, unsigned, double_int *);
-bool double_int_multiple_of (double_int, double_int, bool, double_int *);
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_div (double_int a, double_int b, bool uns, unsigned code)
+{
+ return a.div (b, uns, code);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_sdiv (double_int a, double_int b, unsigned code)
+{
+ return a.sdiv (b, code);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_udiv (double_int a, double_int b, unsigned code)
+{
+ return a.udiv (b, code);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_mod (double_int a, double_int b, bool uns, unsigned code)
+{
+ return a.mod (b, uns, code);
+}
-double_int double_int_setbit (double_int, unsigned);
-int double_int_ctz (double_int);
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_smod (double_int a, double_int b, unsigned code)
+{
+ return a.smod (b, code);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_umod (double_int a, double_int b, unsigned code)
+{
+ return a.umod (b, code);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_divmod (double_int a, double_int b, bool uns,
+ unsigned code, double_int *mod)
+{
+ return a.divmod (b, uns, code, mod);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_sdivmod (double_int a, double_int b, unsigned code, double_int *mod)
+{
+ return a.sdivmod (b, code, mod);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_udivmod (double_int a, double_int b, unsigned code, double_int *mod)
+{
+ return a.udivmod (b, code, mod);
+}
+
+/***/
+
+/* FIXME(crowl): Remove after converting callers. */
+inline bool
+double_int_multiple_of (double_int product, double_int factor,
+ bool unsigned_p, double_int *multiple)
+{
+ return product.multiple_of (factor, unsigned_p, multiple);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_setbit (double_int a, unsigned bitpos)
+{
+ return a.set_bit (bitpos);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline int
+double_int_ctz (double_int a)
+{
+ return a.trailing_zeros ();
+}
/* Logical operations. */
/* Returns ~A. */
+inline double_int
+double_int::operator ~ () const
+{
+ double_int result;
+ result.low = ~low;
+ result.high = ~high;
+ return result;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline double_int
double_int_not (double_int a)
{
- a.low = ~a.low;
- a.high = ~a.high;
- return a;
+ return ~a;
}
/* Returns A | B. */
+inline double_int
+double_int::operator | (double_int b) const
+{
+ double_int result;
+ result.low = low | b.low;
+ result.high = high | b.high;
+ return result;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline double_int
double_int_ior (double_int a, double_int b)
{
- a.low |= b.low;
- a.high |= b.high;
- return a;
+ return a | b;
}
/* Returns A & B. */
+inline double_int
+double_int::operator & (double_int b) const
+{
+ double_int result;
+ result.low = low & b.low;
+ result.high = high & b.high;
+ return result;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline double_int
double_int_and (double_int a, double_int b)
{
- a.low &= b.low;
- a.high &= b.high;
- return a;
+ return a & b;
}
/* Returns A & ~B. */
+inline double_int
+double_int::and_not (double_int b) const
+{
+ double_int result;
+ result.low = low & ~b.low;
+ result.high = high & ~b.high;
+ return result;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline double_int
double_int_and_not (double_int a, double_int b)
{
- a.low &= ~b.low;
- a.high &= ~b.high;
- return a;
+ return a.and_not (b);
}
/* Returns A ^ B. */
+inline double_int
+double_int::operator ^ (double_int b) const
+{
+ double_int result;
+ result.low = low ^ b.low;
+ result.high = high ^ b.high;
+ return result;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline double_int
double_int_xor (double_int a, double_int b)
{
- a.low ^= b.low;
- a.high ^= b.high;
- return a;
+ return a ^ b;
}
/* Shift operations. */
-double_int double_int_lshift (double_int, HOST_WIDE_INT, unsigned int, bool);
-double_int double_int_rshift (double_int, HOST_WIDE_INT, unsigned int, bool);
-double_int double_int_lrotate (double_int, HOST_WIDE_INT, unsigned int);
-double_int double_int_rrotate (double_int, HOST_WIDE_INT, unsigned int);
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_lshift (double_int a, HOST_WIDE_INT count, unsigned int prec,
+ bool arith)
+{
+ return a.lshift (count, prec, arith);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_rshift (double_int a, HOST_WIDE_INT count, unsigned int prec,
+ bool arith)
+{
+ return a.rshift (count, prec, arith);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_lrotate (double_int a, HOST_WIDE_INT count, unsigned int prec)
+{
+ return a.lrotate (count, prec);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_rrotate (double_int a, HOST_WIDE_INT count, unsigned int prec)
+{
+ return a.rrotate (count, prec);
+}
/* Returns true if CST is negative. Of course, CST is considered to
be signed. */
@@ -223,29 +596,115 @@ double_int_negative_p (double_int cst)
return cst.high < 0;
}
-int double_int_cmp (double_int, double_int, bool);
-int double_int_scmp (double_int, double_int);
-int double_int_ucmp (double_int, double_int);
+/* FIXME(crowl): Remove after converting callers. */
+inline int
+double_int_cmp (double_int a, double_int b, bool uns)
+{
+ return a.cmp (b, uns);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline int
+double_int_scmp (double_int a, double_int b)
+{
+ return a.scmp (b);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline int
+double_int_ucmp (double_int a, double_int b)
+{
+ return a.ucmp (b);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_max (double_int a, double_int b, bool uns)
+{
+ return a.max (b, uns);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_smax (double_int a, double_int b)
+{
+ return a.smax (b);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_umax (double_int a, double_int b)
+{
+ return a.umax (b);
+}
+
-double_int double_int_max (double_int, double_int, bool);
-double_int double_int_smax (double_int, double_int);
-double_int double_int_umax (double_int, double_int);
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_min (double_int a, double_int b, bool uns)
+{
+ return a.min (b, uns);
+}
-double_int double_int_min (double_int, double_int, bool);
-double_int double_int_smin (double_int, double_int);
-double_int double_int_umin (double_int, double_int);
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_smin (double_int a, double_int b)
+{
+ return a.smin (b);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_umin (double_int a, double_int b)
+{
+ return a.umin (b);
+}
void dump_double_int (FILE *, double_int, bool);
/* Zero and sign extension of numbers in smaller precisions. */
-double_int double_int_ext (double_int, unsigned, bool);
-double_int double_int_sext (double_int, unsigned);
-double_int double_int_zext (double_int, unsigned);
-double_int double_int_mask (unsigned);
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_ext (double_int a, unsigned prec, bool uns)
+{
+ return a.ext (prec, uns);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_sext (double_int a, unsigned prec)
+{
+ return a.sext (prec);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_zext (double_int a, unsigned prec)
+{
+ return a.zext (prec);
+}
-double_int double_int_max_value (unsigned int, bool);
-double_int double_int_min_value (unsigned int, bool);
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_mask (unsigned prec)
+{
+ return double_int::mask (prec);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_max_value (unsigned int prec, bool uns)
+{
+ return double_int::max_value (prec, uns);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+inline double_int
+double_int_min_value (unsigned int prec, bool uns)
+{
+ return double_int::min_value (prec, uns);
+}
#define ALL_ONES (~((unsigned HOST_WIDE_INT) 0))
@@ -255,56 +714,128 @@ double_int double_int_min_value (unsigned int, bool);
/* Returns true if CST is zero. */
+inline bool
+double_int::is_zero () const
+{
+ return low == 0 && high == 0;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline bool
double_int_zero_p (double_int cst)
{
- return cst.low == 0 && cst.high == 0;
+ return cst.is_zero ();
}
/* Returns true if CST is one. */
+inline bool
+double_int::is_one () const
+{
+ return low == 1 && high == 0;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline bool
double_int_one_p (double_int cst)
{
- return cst.low == 1 && cst.high == 0;
+ return cst.is_one ();
}
/* Returns true if CST is minus one. */
+inline bool
+double_int::is_minus_one () const
+{
+ return low == ALL_ONES && high == -1;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline bool
double_int_minus_one_p (double_int cst)
{
- return (cst.low == ALL_ONES && cst.high == -1);
+ return cst.is_minus_one ();
+}
+
+/* Returns true if CST is negative. */
+
+inline bool
+double_int::is_negative () const
+{
+ return high < 0;
}
/* Returns true if CST1 == CST2. */
+inline bool
+double_int::operator == (double_int cst2) const
+{
+ return low == cst2.low && high == cst2.high;
+}
+
+/* FIXME(crowl): Remove after converting callers. */
static inline bool
double_int_equal_p (double_int cst1, double_int cst2)
{
- return cst1.low == cst2.low && cst1.high == cst2.high;
+ return cst1 == cst2;
+}
+
+/* Returns true if CST1 != CST2. */
+
+inline bool
+double_int::operator != (double_int cst2) const
+{
+ return low != cst2.low || high != cst2.high;
+}
+
+/* Return number of set bits of CST. */
+
+inline int
+double_int::popcount () const
+{
+ return popcount_hwi (high) + popcount_hwi (low);
+}
+
+/* FIXME(crowl): Remove after converting callers. */
+static inline int
+double_int_popcount (double_int cst)
+{
+ return cst.popcount ();
}
/* Legacy interface with decomposed high/low parts. */
+/* FIXME(crowl): Remove after converting callers. */
extern int add_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
unsigned HOST_WIDE_INT, HOST_WIDE_INT,
unsigned HOST_WIDE_INT *, HOST_WIDE_INT *,
bool);
+/* FIXME(crowl): Remove after converting callers. */
#define add_double(l1,h1,l2,h2,lv,hv) \
add_double_with_sign (l1, h1, l2, h2, lv, hv, false)
+/* FIXME(crowl): Remove after converting callers. */
extern int neg_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
unsigned HOST_WIDE_INT *, HOST_WIDE_INT *);
+/* FIXME(crowl): Remove after converting callers. */
extern int mul_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
unsigned HOST_WIDE_INT, HOST_WIDE_INT,
unsigned HOST_WIDE_INT *, HOST_WIDE_INT *,
bool);
+/* FIXME(crowl): Remove after converting callers. */
+extern int mul_double_wide_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT *, HOST_WIDE_INT *,
+ unsigned HOST_WIDE_INT *, HOST_WIDE_INT *,
+ bool);
+/* FIXME(crowl): Remove after converting callers. */
#define mul_double(l1,h1,l2,h2,lv,hv) \
mul_double_with_sign (l1, h1, l2, h2, lv, hv, false)
+/* FIXME(crowl): Remove after converting callers. */
extern void lshift_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
HOST_WIDE_INT, unsigned int,
unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, bool);
+/* FIXME(crowl): Remove after converting callers. */
extern int div_and_round_double (unsigned, int, unsigned HOST_WIDE_INT,
HOST_WIDE_INT, unsigned HOST_WIDE_INT,
HOST_WIDE_INT, unsigned HOST_WIDE_INT *,
diff --git a/gcc/dse.c b/gcc/dse.c
index 0e40c8539cf..9e53b50f128 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "df.h"
#include "cselib.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "alloc-pool.h"
#include "alias.h"
@@ -201,8 +200,21 @@ along with GCC; see the file COPYING3. If not see
that really have constant offsets this size. */
#define MAX_OFFSET (64 * 1024)
+/* Obstack for the DSE dataflow bitmaps. We don't want to put these
+ on the default obstack because these bitmaps can grow quite large
+ (~2GB for the small (!) test case of PR54146) and we'll hold on to
+ all that memory until the end of the compiler run.
+ As a bonus, delete_tree_live_info can destroy all the bitmaps by just
+ releasing the whole obstack. */
+static bitmap_obstack dse_bitmap_obstack;
+/* Obstack for other data. As for above: Kinda nice to be able to
+ throw it all away at the end in one big sweep. */
+static struct obstack dse_obstack;
+
+/* Scratch bitmap for cselib's cselib_expand_value_rtx. */
static bitmap scratch = NULL;
+
struct insn_info;
/* This structure holds information about a candidate store. */
@@ -686,13 +698,13 @@ get_group_info (rtx base)
(group_info_t) pool_alloc (rtx_group_info_pool);
memset (gi, 0, sizeof (struct group_info));
gi->id = rtx_group_next_id++;
- gi->store1_n = BITMAP_ALLOC (NULL);
- gi->store1_p = BITMAP_ALLOC (NULL);
- gi->store2_n = BITMAP_ALLOC (NULL);
- gi->store2_p = BITMAP_ALLOC (NULL);
- gi->escaped_p = BITMAP_ALLOC (NULL);
- gi->escaped_n = BITMAP_ALLOC (NULL);
- gi->group_kill = BITMAP_ALLOC (NULL);
+ gi->store1_n = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->store1_p = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->store2_n = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->store2_p = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->escaped_p = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->escaped_n = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->group_kill = BITMAP_ALLOC (&dse_bitmap_obstack);
gi->process_globally = false;
gi->offset_map_size_n = 0;
gi->offset_map_size_p = 0;
@@ -710,13 +722,13 @@ get_group_info (rtx base)
gi->id = rtx_group_next_id++;
gi->base_mem = gen_rtx_MEM (BLKmode, base);
gi->canon_base_addr = canon_rtx (base);
- gi->store1_n = BITMAP_ALLOC (NULL);
- gi->store1_p = BITMAP_ALLOC (NULL);
- gi->store2_n = BITMAP_ALLOC (NULL);
- gi->store2_p = BITMAP_ALLOC (NULL);
- gi->escaped_p = BITMAP_ALLOC (NULL);
- gi->escaped_n = BITMAP_ALLOC (NULL);
- gi->group_kill = BITMAP_ALLOC (NULL);
+ gi->store1_n = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->store1_p = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->store2_n = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->store2_p = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->escaped_p = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->escaped_n = BITMAP_ALLOC (&dse_bitmap_obstack);
+ gi->group_kill = BITMAP_ALLOC (&dse_bitmap_obstack);
gi->process_globally = false;
gi->frame_related =
(base == frame_pointer_rtx) || (base == hard_frame_pointer_rtx);
@@ -740,8 +752,11 @@ dse_step0 (void)
globally_deleted = 0;
spill_deleted = 0;
- scratch = BITMAP_ALLOC (NULL);
- kill_on_calls = BITMAP_ALLOC (NULL);
+ bitmap_obstack_initialize (&dse_bitmap_obstack);
+ gcc_obstack_init (&dse_obstack);
+
+ scratch = BITMAP_ALLOC (&reg_obstack);
+ kill_on_calls = BITMAP_ALLOC (&dse_bitmap_obstack);
rtx_store_info_pool
= create_alloc_pool ("rtx_store_info_pool",
@@ -765,7 +780,7 @@ dse_step0 (void)
rtx_group_table = htab_create (11, invariant_group_base_hash,
invariant_group_base_eq, NULL);
- bb_table = XCNEWVEC (bb_info_t, last_basic_block);
+ bb_table = XNEWVEC (bb_info_t, last_basic_block);
rtx_group_next_id = 0;
stores_off_frame_dead_at_return = !cfun->stdarg;
@@ -1094,17 +1109,11 @@ add_non_frame_wild_read (bb_info_t bb_info)
static bool
const_or_frame_p (rtx x)
{
- switch (GET_CODE (x))
- {
- case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
- case SYMBOL_REF:
- case LABEL_REF:
- return true;
+ if (CONSTANT_P (x))
+ return true;
- case REG:
+ if (GET_CODE (x) == REG)
+ {
/* Note that we have to test for the actual rtx used for the frame
and arg pointers and not just the register number in case we have
eliminated the frame and/or arg pointer and are using it
@@ -1115,10 +1124,9 @@ const_or_frame_p (rtx x)
|| x == pic_offset_table_rtx)
return true;
return false;
-
- default:
- return false;
}
+
+ return false;
}
/* Take all reasonable action to put the address of MEM into the form
@@ -1695,7 +1703,7 @@ record_store (rtx body, bb_info_t bb_info)
{
store_info->is_large = true;
store_info->positions_needed.large.count = 0;
- store_info->positions_needed.large.bmap = BITMAP_ALLOC (NULL);
+ store_info->positions_needed.large.bmap = BITMAP_ALLOC (&dse_bitmap_obstack);
}
else
{
@@ -2021,7 +2029,7 @@ replace_read (store_info_t store_info, insn_info_t store_insn,
live at this point. For instance, this can happen if one of
the insns sets the CC and the CC happened to be live at that
point. This does occasionally happen, see PR 37922. */
- bitmap regs_set = BITMAP_ALLOC (NULL);
+ bitmap regs_set = BITMAP_ALLOC (&reg_obstack);
for (this_insn = insns; this_insn != NULL_RTX; this_insn = NEXT_INSN (this_insn))
note_stores (PATTERN (this_insn), look_for_hardregs, regs_set);
@@ -2719,7 +2727,7 @@ static void
dse_step1 (void)
{
basic_block bb;
- bitmap regs_live = BITMAP_ALLOC (NULL);
+ bitmap regs_live = BITMAP_ALLOC (&reg_obstack);
cselib_init (0);
all_blocks = BITMAP_ALLOC (NULL);
@@ -2907,9 +2915,11 @@ dse_step2_init (void)
}
group->offset_map_size_n++;
- group->offset_map_n = XNEWVEC (int, group->offset_map_size_n);
+ group->offset_map_n = XOBNEWVEC (&dse_obstack, int,
+ group->offset_map_size_n);
group->offset_map_size_p++;
- group->offset_map_p = XNEWVEC (int, group->offset_map_size_p);
+ group->offset_map_p = XOBNEWVEC (&dse_obstack, int,
+ group->offset_map_size_p);
group->process_globally = false;
if (dump_file)
{
@@ -3262,7 +3272,7 @@ dse_step3_scan (bool for_spills, basic_block bb)
if (bb_info->kill)
bitmap_clear (bb_info->kill);
else
- bb_info->kill = BITMAP_ALLOC (NULL);
+ bb_info->kill = BITMAP_ALLOC (&dse_bitmap_obstack);
}
else
if (bb_info->kill)
@@ -3355,7 +3365,7 @@ dse_step3 (bool for_spills)
if (bb_info->gen)
bitmap_clear (bb_info->gen);
else
- bb_info->gen = BITMAP_ALLOC (NULL);
+ bb_info->gen = BITMAP_ALLOC (&dse_bitmap_obstack);
if (bb->index == ENTRY_BLOCK)
;
@@ -3387,13 +3397,13 @@ dse_step3 (bool for_spills)
unsigned int j;
group_info_t group;
- all_ones = BITMAP_ALLOC (NULL);
+ all_ones = BITMAP_ALLOC (&dse_bitmap_obstack);
FOR_EACH_VEC_ELT (group_info_t, rtx_group_vec, j, group)
bitmap_ior_into (all_ones, group->group_kill);
}
if (!bb_info->out)
{
- bb_info->out = BITMAP_ALLOC (NULL);
+ bb_info->out = BITMAP_ALLOC (&dse_bitmap_obstack);
bitmap_copy (bb_info->out, all_ones);
}
}
@@ -3429,7 +3439,7 @@ dse_confluence_0 (basic_block bb)
if (!bb_info->out)
{
- bb_info->out = BITMAP_ALLOC (NULL);
+ bb_info->out = BITMAP_ALLOC (&dse_bitmap_obstack);
bitmap_copy (bb_info->out, bb_table[EXIT_BLOCK]->gen);
}
}
@@ -3450,7 +3460,7 @@ dse_confluence_n (edge e)
bitmap_and_into (src_info->out, dest_info->in);
else
{
- src_info->out = BITMAP_ALLOC (NULL);
+ src_info->out = BITMAP_ALLOC (&dse_bitmap_obstack);
bitmap_copy (src_info->out, dest_info->in);
}
}
@@ -3489,7 +3499,7 @@ dse_transfer_function (int bb_index)
bb_info->out, bb_info->kill);
else
{
- bb_info->in = BITMAP_ALLOC (NULL);
+ bb_info->in = BITMAP_ALLOC (&dse_bitmap_obstack);
bitmap_ior_and_compl (bb_info->in, bb_info->gen,
bb_info->out, bb_info->kill);
return true;
@@ -3507,7 +3517,7 @@ dse_transfer_function (int bb_index)
return false;
else
{
- bb_info->in = BITMAP_ALLOC (NULL);
+ bb_info->in = BITMAP_ALLOC (&dse_bitmap_obstack);
bitmap_copy (bb_info->in, bb_info->gen);
return true;
}
@@ -3787,37 +3797,10 @@ dse_step6 (void)
----------------------------------------------------------------------------*/
static void
-dse_step7 (bool global_done)
+dse_step7 (void)
{
- unsigned int i;
- group_info_t group;
- basic_block bb;
-
- FOR_EACH_VEC_ELT (group_info_t, rtx_group_vec, i, group)
- {
- free (group->offset_map_n);
- free (group->offset_map_p);
- BITMAP_FREE (group->store1_n);
- BITMAP_FREE (group->store1_p);
- BITMAP_FREE (group->store2_n);
- BITMAP_FREE (group->store2_p);
- BITMAP_FREE (group->escaped_n);
- BITMAP_FREE (group->escaped_p);
- BITMAP_FREE (group->group_kill);
- }
-
- if (global_done)
- FOR_ALL_BB (bb)
- {
- bb_info_t bb_info = bb_table[bb->index];
- BITMAP_FREE (bb_info->gen);
- if (bb_info->kill)
- BITMAP_FREE (bb_info->kill);
- if (bb_info->in)
- BITMAP_FREE (bb_info->in);
- if (bb_info->out)
- BITMAP_FREE (bb_info->out);
- }
+ bitmap_obstack_release (&dse_bitmap_obstack);
+ obstack_free (&dse_obstack, NULL);
if (clear_alias_sets)
{
@@ -3833,7 +3816,6 @@ dse_step7 (bool global_done)
VEC_free (group_info_t, heap, rtx_group_vec);
BITMAP_FREE (all_blocks);
BITMAP_FREE (scratch);
- BITMAP_FREE (kill_on_calls);
free_alloc_pool (rtx_store_info_pool);
free_alloc_pool (read_info_pool);
@@ -3898,7 +3880,7 @@ rest_of_handle_dse (void)
}
dse_step6 ();
- dse_step7 (did_global);
+ dse_step7 ();
if (dump_file)
fprintf (dump_file, "dse: local deletions = %d, global deletions = %d, spill deletions = %d\n",
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
new file mode 100644
index 00000000000..2ea3901b32e
--- /dev/null
+++ b/gcc/dumpfile.h
@@ -0,0 +1,118 @@
+/* Definitions for the shared dumpfile.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+
+#ifndef GCC_DUMPFILE_H
+#define GCC_DUMPFILE_H 1
+
+/* Different tree dump places. When you add new tree dump places,
+ extend the DUMP_FILES array in tree-dump.c. */
+enum tree_dump_index
+{
+ TDI_none, /* No dump */
+ TDI_cgraph, /* dump function call graph. */
+ TDI_tu, /* dump the whole translation unit. */
+ TDI_class, /* dump class hierarchy. */
+ TDI_original, /* dump each function before optimizing it */
+ TDI_generic, /* dump each function after genericizing it */
+ TDI_nested, /* dump each function after unnesting it */
+ TDI_vcg, /* create a VCG graph file for each
+ function's flowgraph. */
+ TDI_ada, /* dump declarations in Ada syntax. */
+ TDI_tree_all, /* enable all the GENERIC/GIMPLE dumps. */
+ TDI_rtl_all, /* enable all the RTL dumps. */
+ TDI_ipa_all, /* enable all the IPA dumps. */
+
+ TDI_end
+};
+
+/* Bit masks to control dumping. Not all values are applicable to
+ all dumps. Add new ones at the end. When you define new
+ values, extend the DUMP_OPTIONS array in tree-dump.c */
+#define TDF_ADDRESS (1 << 0) /* dump node addresses */
+#define TDF_SLIM (1 << 1) /* don't go wild following links */
+#define TDF_RAW (1 << 2) /* don't unparse the function */
+#define TDF_DETAILS (1 << 3) /* show more detailed info about
+ each pass */
+#define TDF_STATS (1 << 4) /* dump various statistics about
+ each pass */
+#define TDF_BLOCKS (1 << 5) /* display basic block boundaries */
+#define TDF_VOPS (1 << 6) /* display virtual operands */
+#define TDF_LINENO (1 << 7) /* display statement line numbers */
+#define TDF_UID (1 << 8) /* display decl UIDs */
+
+#define TDF_TREE (1 << 9) /* is a tree dump */
+#define TDF_RTL (1 << 10) /* is a RTL dump */
+#define TDF_IPA (1 << 11) /* is an IPA dump */
+#define TDF_STMTADDR (1 << 12) /* Address of stmt. */
+
+#define TDF_GRAPH (1 << 13) /* a graph dump is being emitted */
+#define TDF_MEMSYMS (1 << 14) /* display memory symbols in expr.
+ Implies TDF_VOPS. */
+
+#define TDF_DIAGNOSTIC (1 << 15) /* A dump to be put in a diagnostic
+ message. */
+#define TDF_VERBOSE (1 << 16) /* A dump that uses the full tree
+ dumper to print stmts. */
+#define TDF_RHS_ONLY (1 << 17) /* a flag to only print the RHS of
+ a gimple stmt. */
+#define TDF_ASMNAME (1 << 18) /* display asm names of decls */
+#define TDF_EH (1 << 19) /* display EH region number
+ holding this gimple statement. */
+#define TDF_NOUID (1 << 20) /* omit UIDs from dumps. */
+#define TDF_ALIAS (1 << 21) /* display alias information */
+#define TDF_ENUMERATE_LOCALS (1 << 22) /* Enumerate locals by uid. */
+#define TDF_CSELIB (1 << 23) /* Dump cselib details. */
+#define TDF_SCEV (1 << 24) /* Dump SCEV details. */
+#define TDF_COMMENT (1 << 25) /* Dump lines with prefix ";;" */
+
+
+/* In tree-dump.c */
+
+extern char *get_dump_file_name (int);
+extern int dump_enabled_p (int);
+extern int dump_initialized_p (int);
+extern FILE *dump_begin (int, int *);
+extern void dump_end (int, FILE *);
+extern void dump_node (const_tree, int, FILE *);
+extern int dump_switch_p (const char *);
+extern const char *dump_flag_name (int);
+
+/* Global variables used to communicate with passes. */
+extern FILE *dump_file;
+extern int dump_flags;
+extern const char *dump_file_name;
+
+/* Return the dump_file_info for the given phase. */
+extern struct dump_file_info *get_dump_file_info (int);
+
+/* Define a tree dump switch. */
+struct dump_file_info
+{
+ const char *suffix; /* suffix to give output file. */
+ const char *swtch; /* command line switch */
+ const char *glob; /* command line glob */
+ int flags; /* user flags */
+ int state; /* state of play */
+ int num; /* dump file number */
+};
+
+
+#endif /* GCC_DUMPFILE_H */
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 3edb6e1250a..17027857bab 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -2550,7 +2550,7 @@ create_cfi_notes (void)
gcc_checking_assert (trace_work_list == NULL);
/* Always begin at the entry trace. */
- ti = VEC_index (dw_trace_info, trace_info, 0);
+ ti = &VEC_index (dw_trace_info, trace_info, 0);
scan_trace (ti);
while (!VEC_empty (dw_trace_info_ref, trace_work_list))
@@ -2597,7 +2597,7 @@ connect_traces (void)
/* Remove all unprocessed traces from the list. */
for (i = n - 1; i > 0; --i)
{
- ti = VEC_index (dw_trace_info, trace_info, i);
+ ti = &VEC_index (dw_trace_info, trace_info, i);
if (ti->beg_row == NULL)
{
VEC_ordered_remove (dw_trace_info, trace_info, i);
@@ -2609,13 +2609,13 @@ connect_traces (void)
/* Work from the end back to the beginning. This lets us easily insert
remember/restore_state notes in the correct order wrt other notes. */
- prev_ti = VEC_index (dw_trace_info, trace_info, n - 1);
+ prev_ti = &VEC_index (dw_trace_info, trace_info, n - 1);
for (i = n - 1; i > 0; --i)
{
dw_cfi_row *old_row;
ti = prev_ti;
- prev_ti = VEC_index (dw_trace_info, trace_info, i - 1);
+ prev_ti = &VEC_index (dw_trace_info, trace_info, i - 1);
add_cfi_insn = ti->head;
@@ -2686,7 +2686,7 @@ connect_traces (void)
for (i = 0; i < n; ++i)
{
- ti = VEC_index (dw_trace_info, trace_info, i);
+ ti = &VEC_index (dw_trace_info, trace_info, i);
if (ti->switch_sections)
prev_args_size = 0;
@@ -2884,8 +2884,8 @@ create_cie_data (void)
break;
case 1:
cie_return_save = ggc_alloc_reg_saved_in_data ();
- *cie_return_save = *VEC_index (reg_saved_in_data,
- cie_trace.regs_saved_in_regs, 0);
+ *cie_return_save = VEC_index (reg_saved_in_data,
+ cie_trace.regs_saved_in_regs, 0);
VEC_free (reg_saved_in_data, heap, cie_trace.regs_saved_in_regs);
break;
default:
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 08116b5c74b..a87eaf2bd7d 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -72,7 +72,6 @@ along with GCC; see the file COPYING3. If not see
#include "function.h"
#include "output.h"
#include "expr.h"
-#include "libfuncs.h"
#include "except.h"
#include "dwarf2.h"
#include "dwarf2out.h"
@@ -91,8 +90,7 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "input.h"
#include "gimple.h"
-#include "tree-pass.h"
-#include "tree-flow.h"
+#include "dumpfile.h"
#include "opts.h"
static void dwarf2out_source_line (unsigned int, const char *, int, bool);
@@ -977,7 +975,7 @@ dwarf2out_begin_prologue (unsigned int line ATTRIBUTE_UNUSED,
call-site information. We must emit this label if it might be used. */
if (!do_frame
&& (!flag_exceptions
- || targetm_common.except_unwind_info (&global_options) != UI_TARGET))
+ || targetm_common.except_unwind_info (&global_options) == UI_SJLJ))
return;
fnsec = function_section (current_function_decl);
@@ -1314,6 +1312,7 @@ dw_val_equal_p (dw_val_node *a, dw_val_node *b)
case dw_val_class_fde_ref:
return a->v.val_fde_index == b->v.val_fde_index;
case dw_val_class_lbl_id:
+ case dw_val_class_high_pc:
return strcmp (a->v.val_lbl_id, b->v.val_lbl_id) == 0;
case dw_val_class_str:
return a->v.val_str == b->v.val_str;
@@ -3600,6 +3599,26 @@ add_AT_data8 (dw_die_ref die, enum dwarf_attribute attr_kind,
add_dwarf_attr (die, &attr);
}
+/* Add DW_AT_low_pc and DW_AT_high_pc to a DIE. */
+static inline void
+add_AT_low_high_pc (dw_die_ref die, const char *lbl_low, const char *lbl_high)
+{
+ dw_attr_node attr;
+
+ attr.dw_attr = DW_AT_low_pc;
+ attr.dw_attr_val.val_class = dw_val_class_lbl_id;
+ attr.dw_attr_val.v.val_lbl_id = xstrdup (lbl_low);
+ add_dwarf_attr (die, &attr);
+
+ attr.dw_attr = DW_AT_high_pc;
+ if (dwarf_version < 4)
+ attr.dw_attr_val.val_class = dw_val_class_lbl_id;
+ else
+ attr.dw_attr_val.val_class = dw_val_class_high_pc;
+ attr.dw_attr_val.v.val_lbl_id = xstrdup (lbl_high);
+ add_dwarf_attr (die, &attr);
+}
+
/* Hash and equality functions for debug_str_hash. */
static hashval_t
@@ -3983,7 +4002,8 @@ AT_lbl (dw_attr_ref a)
{
gcc_assert (a && (AT_class (a) == dw_val_class_lbl_id
|| AT_class (a) == dw_val_class_lineptr
- || AT_class (a) == dw_val_class_macptr));
+ || AT_class (a) == dw_val_class_macptr
+ || AT_class (a) == dw_val_class_high_pc));
return a->dw_attr_val.v.val_lbl_id;
}
@@ -4012,6 +4032,23 @@ get_AT (dw_die_ref die, enum dwarf_attribute attr_kind)
return NULL;
}
+/* Returns the parent of the declaration of DIE. */
+
+static dw_die_ref
+get_die_parent (dw_die_ref die)
+{
+ dw_die_ref t;
+
+ if (!die)
+ return NULL;
+
+ if ((t = get_AT_ref (die, DW_AT_abstract_origin))
+ || (t = get_AT_ref (die, DW_AT_specification)))
+ die = t;
+
+ return die->die_parent;
+}
+
/* Return the "low pc" attribute value, typically associated with a subprogram
DIE. Return null if the "low pc" attribute is either not present, or if it
cannot be represented as an assembler label identifier. */
@@ -4862,6 +4899,7 @@ print_die (dw_die_ref die, FILE *outfile)
case dw_val_class_lbl_id:
case dw_val_class_lineptr:
case dw_val_class_macptr:
+ case dw_val_class_high_pc:
fprintf (outfile, "label: %s", AT_lbl (a));
break;
case dw_val_class_str:
@@ -5018,6 +5056,7 @@ attr_checksum (dw_attr_ref at, struct md5_ctx *ctx, int *mark)
case dw_val_class_lbl_id:
case dw_val_class_lineptr:
case dw_val_class_macptr:
+ case dw_val_class_high_pc:
break;
case dw_val_class_file:
@@ -5290,6 +5329,7 @@ attr_checksum_ordered (enum dwarf_tag tag, dw_attr_ref at,
case dw_val_class_lbl_id:
case dw_val_class_lineptr:
case dw_val_class_macptr:
+ case dw_val_class_high_pc:
break;
case dw_val_class_file:
@@ -5631,9 +5671,11 @@ generate_type_signature (dw_die_ref die, comdat_type_node *type_node)
unsigned char checksum[16];
struct md5_ctx ctx;
dw_die_ref decl;
+ dw_die_ref parent;
name = get_AT_string (die, DW_AT_name);
decl = get_AT_ref (die, DW_AT_specification);
+ parent = get_die_parent (die);
/* First, compute a signature for just the type name (and its surrounding
context, if any. This is stored in the type unit DIE for link-time
@@ -5644,8 +5686,8 @@ generate_type_signature (dw_die_ref die, comdat_type_node *type_node)
md5_init_ctx (&ctx);
/* Checksum the names of surrounding namespaces and structures. */
- if (decl != NULL && decl->die_parent != NULL)
- checksum_die_context (decl->die_parent, &ctx);
+ if (parent != NULL)
+ checksum_die_context (parent, &ctx);
md5_process_bytes (&die->die_tag, sizeof (die->die_tag), &ctx);
md5_process_bytes (name, strlen (name) + 1, &ctx);
@@ -5661,8 +5703,8 @@ generate_type_signature (dw_die_ref die, comdat_type_node *type_node)
die->die_mark = mark;
/* Checksum the names of surrounding namespaces and structures. */
- if (decl != NULL && decl->die_parent != NULL)
- checksum_die_context (decl->die_parent, &ctx);
+ if (parent != NULL)
+ checksum_die_context (parent, &ctx);
/* Checksum the DIE and its children. */
die_checksum_ordered (die, &ctx, &mark);
@@ -5753,6 +5795,7 @@ same_dw_val_p (const dw_val_node *v1, const dw_val_node *v2, int *mark)
case dw_val_class_lbl_id:
case dw_val_class_lineptr:
case dw_val_class_macptr:
+ case dw_val_class_high_pc:
return 1;
case dw_val_class_file:
@@ -5804,7 +5847,7 @@ same_die_p (dw_die_ref die1, dw_die_ref die2, int *mark)
return 0;
FOR_EACH_VEC_ELT (dw_attr_node, die1->die_attr, ix, a1)
- if (!same_attr_p (a1, VEC_index (dw_attr_node, die2->die_attr, ix), mark))
+ if (!same_attr_p (a1, &VEC_index (dw_attr_node, die2->die_attr, ix), mark))
return 0;
c1 = die1->die_child;
@@ -7055,7 +7098,7 @@ build_abbrev_table (dw_die_ref die, htab_t extern_map)
FOR_EACH_VEC_ELT (dw_attr_node, die->die_attr, ix, die_a)
{
- abbrev_a = VEC_index (dw_attr_node, abbrev->die_attr, ix);
+ abbrev_a = &VEC_index (dw_attr_node, abbrev->die_attr, ix);
if ((abbrev_a->dw_attr != die_a->dw_attr)
|| (value_format (abbrev_a) != value_format (die_a)))
{
@@ -7224,6 +7267,9 @@ size_of_die (dw_die_ref die)
case dw_val_class_vms_delta:
size += DWARF_OFFSET_SIZE;
break;
+ case dw_val_class_high_pc:
+ size += DWARF2_ADDR_SIZE;
+ break;
default:
gcc_unreachable ();
}
@@ -7541,6 +7587,17 @@ value_format (dw_attr_ref a)
case dw_val_class_data8:
return DW_FORM_data8;
+ case dw_val_class_high_pc:
+ switch (DWARF2_ADDR_SIZE)
+ {
+ case 4:
+ return DW_FORM_data4;
+ case 8:
+ return DW_FORM_data8;
+ default:
+ gcc_unreachable ();
+ }
+
default:
gcc_unreachable ();
}
@@ -7967,6 +8024,11 @@ output_die (dw_die_ref die)
break;
}
+ case dw_val_class_high_pc:
+ dw2_asm_output_delta (DWARF2_ADDR_SIZE, AT_lbl (a),
+ get_AT_low_pc (die), "DW_AT_high_pc");
+ break;
+
default:
gcc_unreachable ();
}
@@ -11191,6 +11253,8 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
case REG:
if (GET_MODE_CLASS (mode) != MODE_INT
|| (GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE
+ && rtl != arg_pointer_rtx
+ && rtl != frame_pointer_rtx
#ifdef POINTERS_EXTEND_UNSIGNED
&& (mode != Pmode || mem_mode == VOIDmode)
#endif
@@ -11463,7 +11527,9 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
case PLUS:
plus:
if (is_based_loc (rtl)
- && GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
+ && (GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
+ || XEXP (rtl, 0) == arg_pointer_rtx
+ || XEXP (rtl, 0) == frame_pointer_rtx)
&& GET_MODE_CLASS (mode) == MODE_INT)
mem_loc_result = based_loc_descr (XEXP (rtl, 0),
INTVAL (XEXP (rtl, 1)),
@@ -16825,30 +16891,6 @@ gen_call_site_die (tree decl, dw_die_ref subr_die,
return die;
}
-/* Return true if an abstract instance of function DECL can be generated in
- the debug information. */
-
-static bool
-function_possibly_abstracted_p (tree decl)
-{
- /* An abstract instance of DECL can be generated if DECL can be inlined or
- is nested in a function that can be inlined, recursively. */
- while (decl)
- {
- if (cgraph_function_possibly_inlined_p (decl))
- return true;
- decl = decl_function_context (decl);
- /* Do not consider Fortran subroutines as nested in the main program. */
- if (decl
- && is_fortran ()
- && !strcmp (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
- "MAIN__"))
- break;
- }
-
- return false;
-}
-
/* Generate a DIE to represent a declared function (either file-scope or
block-local). */
@@ -17003,14 +17045,14 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
{
if (DECL_DECLARED_INLINE_P (decl))
{
- if (function_possibly_abstracted_p (decl))
+ if (cgraph_function_possibly_inlined_p (decl))
add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_declared_inlined);
else
add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_declared_not_inlined);
}
else
{
- if (function_possibly_abstracted_p (decl))
+ if (cgraph_function_possibly_inlined_p (decl))
add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_inlined);
else
add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_not_inlined);
@@ -17035,19 +17077,18 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
if (fde->dw_fde_begin)
{
/* We have already generated the labels. */
- add_AT_lbl_id (subr_die, DW_AT_low_pc, fde->dw_fde_begin);
- add_AT_lbl_id (subr_die, DW_AT_high_pc, fde->dw_fde_end);
+ add_AT_low_high_pc (subr_die, fde->dw_fde_begin, fde->dw_fde_end);
}
else
{
/* Create start/end labels and add the range. */
- char label_id[MAX_ARTIFICIAL_LABEL_BYTES];
- ASM_GENERATE_INTERNAL_LABEL (label_id, FUNC_BEGIN_LABEL,
+ char label_id_low[MAX_ARTIFICIAL_LABEL_BYTES];
+ char label_id_high[MAX_ARTIFICIAL_LABEL_BYTES];
+ ASM_GENERATE_INTERNAL_LABEL (label_id_low, FUNC_BEGIN_LABEL,
current_function_funcdef_no);
- add_AT_lbl_id (subr_die, DW_AT_low_pc, label_id);
- ASM_GENERATE_INTERNAL_LABEL (label_id, FUNC_END_LABEL,
+ ASM_GENERATE_INTERNAL_LABEL (label_id_high, FUNC_END_LABEL,
current_function_funcdef_no);
- add_AT_lbl_id (subr_die, DW_AT_high_pc, label_id);
+ add_AT_low_high_pc (subr_die, label_id_low, label_id_high);
}
#if VMS_DEBUGGING_INFO
@@ -17111,10 +17152,8 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
dw_die_ref seg_die;
/* Do the 'primary' section. */
- add_AT_lbl_id (subr_die, DW_AT_low_pc,
- fde->dw_fde_begin);
- add_AT_lbl_id (subr_die, DW_AT_high_pc,
- fde->dw_fde_end);
+ add_AT_low_high_pc (subr_die, fde->dw_fde_begin,
+ fde->dw_fde_end);
/* Build a minimal DIE for the secondary section. */
seg_die = new_die (DW_TAG_subprogram,
@@ -17138,20 +17177,15 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
add_AT_flag (seg_die, DW_AT_artificial, 1);
name = concat ("__second_sect_of_", name, NULL);
- add_AT_lbl_id (seg_die, DW_AT_low_pc,
- fde->dw_fde_second_begin);
- add_AT_lbl_id (seg_die, DW_AT_high_pc,
- fde->dw_fde_second_end);
+ add_AT_low_high_pc (seg_die, fde->dw_fde_second_begin,
+ fde->dw_fde_second_end);
add_name_attribute (seg_die, name);
if (want_pubnames ())
add_pubname_string (name, seg_die);
}
}
else
- {
- add_AT_lbl_id (subr_die, DW_AT_low_pc, fde->dw_fde_begin);
- add_AT_lbl_id (subr_die, DW_AT_high_pc, fde->dw_fde_end);
- }
+ add_AT_low_high_pc (subr_die, fde->dw_fde_begin, fde->dw_fde_end);
}
cfa_fb_offset = CFA_FRAME_BASE_OFFSET (decl);
@@ -17894,12 +17928,12 @@ add_high_low_attributes (tree stmt, dw_die_ref die)
}
else
{
+ char label_high[MAX_ARTIFICIAL_LABEL_BYTES];
ASM_GENERATE_INTERNAL_LABEL (label, BLOCK_BEGIN_LABEL,
BLOCK_NUMBER (stmt));
- add_AT_lbl_id (die, DW_AT_low_pc, label);
- ASM_GENERATE_INTERNAL_LABEL (label, BLOCK_END_LABEL,
+ ASM_GENERATE_INTERNAL_LABEL (label_high, BLOCK_END_LABEL,
BLOCK_NUMBER (stmt));
- add_AT_lbl_id (die, DW_AT_high_pc, label);
+ add_AT_low_high_pc (die, label, label_high);
}
}
@@ -17936,8 +17970,6 @@ gen_inlined_subroutine_die (tree stmt, dw_die_ref context_die, int depth)
gcc_assert (! BLOCK_ABSTRACT (stmt));
decl = block_ultimate_origin (stmt);
- if (DECL_IGNORED_P (decl))
- return;
/* Emit info for the abstract instance first, if we haven't yet. We
must emit this even if the block is abstract, otherwise when we
@@ -18110,6 +18142,9 @@ gen_producer_string (void)
/* Ignore these. */
continue;
default:
+ if (cl_options[save_decoded_options[j].opt_index].flags
+ & CL_NO_DWARF_RECORD)
+ continue;
gcc_checking_assert (save_decoded_options[j].canonical_option[0][0]
== '-');
switch (save_decoded_options[j].canonical_option[0][1])
@@ -18882,7 +18917,6 @@ gen_block_die (tree stmt, dw_die_ref context_die, int depth)
/* Process variable DECL (or variable with origin ORIGIN) within
block STMT and add it to CONTEXT_DIE. */
-
static void
process_scope_var (tree stmt, tree decl, tree origin, dw_die_ref context_die)
{
@@ -18900,15 +18934,8 @@ process_scope_var (tree stmt, tree decl, tree origin, dw_die_ref context_die)
if (die != NULL && die->die_parent == NULL)
add_child_die (context_die, die);
else if (TREE_CODE (decl_or_origin) == IMPORTED_DECL)
- dwarf2out_imported_module_or_decl_1 (decl_or_origin,
- DECL_NAME (decl_or_origin),
+ dwarf2out_imported_module_or_decl_1 (decl_or_origin, DECL_NAME (decl_or_origin),
stmt, context_die);
- /* Do not emit concrete instances of abstracted nested functions within
- concrete instances of parent functions. */
- else if (TREE_CODE (decl_or_origin) == FUNCTION_DECL
- && die
- && get_AT (die, DW_AT_inline))
- ;
else
gen_decl_die (decl, origin, context_die);
}
@@ -19258,11 +19285,11 @@ gen_decl_die (tree decl, tree origin, dw_die_ref context_die)
? DECL_ORIGIN (origin)
: DECL_ABSTRACT_ORIGIN (decl));
- /* If we're emitting an out-of-line copy of an abstracted function,
+ /* If we're emitting an out-of-line copy of an inline function,
emit info for the abstract instance and set up to refer to it. */
- else if (!DECL_ABSTRACT (decl)
- && function_possibly_abstracted_p (decl)
- && !class_or_namespace_scope_p (context_die)
+ else if (cgraph_function_possibly_inlined_p (decl)
+ && ! DECL_ABSTRACT (decl)
+ && ! class_or_namespace_scope_p (context_die)
/* dwarf2out_abstract_function won't emit a die if this is just
a declaration. We must avoid setting DECL_ABSTRACT_ORIGIN in
that case, because that works only if we have a die. */
@@ -20549,8 +20576,8 @@ optimize_macinfo_range (unsigned int idx, VEC (macinfo_entry, gc) *files,
unsigned int i, count, encoded_filename_len, linebuf_len;
void **slot;
- first = VEC_index (macinfo_entry, macinfo_table, idx);
- second = VEC_index (macinfo_entry, macinfo_table, idx + 1);
+ first = &VEC_index (macinfo_entry, macinfo_table, idx);
+ second = &VEC_index (macinfo_entry, macinfo_table, idx + 1);
/* Optimize only if there are at least two consecutive define/undef ops,
and either all of them are before first DW_MACINFO_start_file
@@ -20590,7 +20617,7 @@ optimize_macinfo_range (unsigned int idx, VEC (macinfo_entry, gc) *files,
if (VEC_empty (macinfo_entry, files))
base = "";
else
- base = lbasename (VEC_last (macinfo_entry, files)->info);
+ base = lbasename (VEC_last (macinfo_entry, files).info);
for (encoded_filename_len = 0, i = 0; base[i]; i++)
if (ISIDNUM (base[i]) || base[i] == '.')
encoded_filename_len++;
@@ -20621,7 +20648,7 @@ optimize_macinfo_range (unsigned int idx, VEC (macinfo_entry, gc) *files,
/* Construct a macinfo_entry for DW_MACRO_GNU_transparent_include
in the empty vector entry before the first define/undef. */
- inc = VEC_index (macinfo_entry, macinfo_table, idx - 1);
+ inc = &VEC_index (macinfo_entry, macinfo_table, idx - 1);
inc->code = DW_MACRO_GNU_transparent_include;
inc->lineno = 0;
inc->info = ggc_strdup (grp_name);
@@ -20714,7 +20741,7 @@ output_macinfo (void)
&& VEC_length (macinfo_entry, files) != 1
&& i > 0
&& i + 1 < length
- && VEC_index (macinfo_entry, macinfo_table, i - 1)->code == 0)
+ && VEC_index (macinfo_entry, macinfo_table, i - 1).code == 0)
{
unsigned count = optimize_macinfo_range (i, files, &macinfo_htab);
if (count)
@@ -21324,14 +21351,14 @@ static inline void
move_linkage_attr (dw_die_ref die)
{
unsigned ix = VEC_length (dw_attr_node, die->die_attr);
- dw_attr_node linkage = *VEC_index (dw_attr_node, die->die_attr, ix - 1);
+ dw_attr_node linkage = VEC_index (dw_attr_node, die->die_attr, ix - 1);
gcc_assert (linkage.dw_attr == DW_AT_linkage_name
|| linkage.dw_attr == DW_AT_MIPS_linkage_name);
while (--ix > 0)
{
- dw_attr_node *prev = VEC_index (dw_attr_node, die->die_attr, ix - 1);
+ dw_attr_node *prev = &VEC_index (dw_attr_node, die->die_attr, ix - 1);
if (prev->dw_attr == DW_AT_decl_line || prev->dw_attr == DW_AT_name)
break;
@@ -22243,8 +22270,8 @@ dwarf2out_finish (const char *filename)
for (i = 0; i < VEC_length (deferred_locations, deferred_locations_list); i++)
{
add_location_or_const_value_attribute (
- VEC_index (deferred_locations, deferred_locations_list, i)->die,
- VEC_index (deferred_locations, deferred_locations_list, i)->variable,
+ VEC_index (deferred_locations, deferred_locations_list, i).die,
+ VEC_index (deferred_locations, deferred_locations_list, i).variable,
false,
DW_AT_location);
}
@@ -22263,19 +22290,8 @@ dwarf2out_finish (const char *filename)
{
dw_die_ref origin = get_AT_ref (die, DW_AT_abstract_origin);
- if (origin)
- {
- /* Find the first non-abstract parent instance. */
- do
- origin = origin->die_parent;
- while (origin
- && (origin->die_tag != DW_TAG_subprogram
- || get_AT (origin, DW_AT_inline)));
- if (origin)
- add_child_die (origin, die);
- else
- add_child_die (comp_unit_die (), die);
- }
+ if (origin && origin->die_parent)
+ add_child_die (origin->die_parent, die);
else if (is_cu_die (die))
;
else if (seen_error ())
@@ -22393,10 +22409,8 @@ dwarf2out_finish (const char *filename)
{
/* Don't add if the CU has no associated code. */
if (text_section_used)
- {
- add_AT_lbl_id (comp_unit_die (), DW_AT_low_pc, text_section_label);
- add_AT_lbl_id (comp_unit_die (), DW_AT_high_pc, text_end_label);
- }
+ add_AT_low_high_pc (comp_unit_die (), text_section_label,
+ text_end_label);
}
else
{
diff --git a/gcc/dwarf2out.h b/gcc/dwarf2out.h
index 1bc83aa9ade..853dce40ded 100644
--- a/gcc/dwarf2out.h
+++ b/gcc/dwarf2out.h
@@ -154,13 +154,14 @@ enum dw_val_class
dw_val_class_file,
dw_val_class_data8,
dw_val_class_decl_ref,
- dw_val_class_vms_delta
+ dw_val_class_vms_delta,
+ dw_val_class_high_pc
};
/* Describe a floating point constant value, or a vector constant value. */
typedef struct GTY(()) dw_vec_struct {
- unsigned char * GTY((length ("%h.length"))) array;
+ unsigned char * GTY((atomic)) array;
unsigned length;
unsigned elt_size;
}
diff --git a/gcc/ebitmap.c b/gcc/ebitmap.c
index c57d141ddb3..977d4ef0f6d 100644
--- a/gcc/ebitmap.c
+++ b/gcc/ebitmap.c
@@ -1,5 +1,5 @@
/* Sparse array-based bitmaps.
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2012 Free Software Foundation, Inc.
Contributed by Daniel Berlin <dberlin@dberlin.org>
This file is part of GCC.
@@ -258,7 +258,7 @@ ebitmap_clear_bit (ebitmap map, unsigned int bit)
map->cache = map->cache - 1;
}
- RESET_BIT (map->wordmask, wordindex);
+ RESET_BIT_WITH_POPCOUNT (map->wordmask, wordindex);
memmove(&map->elts[eltwordindex], &map->elts[eltwordindex + 1],
sizeof (EBITMAP_ELT_TYPE) * (map->numwords - eltwordindex));
@@ -293,7 +293,7 @@ ebitmap_set_bit (ebitmap map, unsigned int bit)
unsigned long count;
unsigned int i;
- SET_BIT (map->wordmask, wordindex);
+ SET_BIT_WITH_POPCOUNT (map->wordmask, wordindex);
count = sbitmap_popcount (map->wordmask, wordindex);
gcc_assert (count <= map->numwords);
@@ -449,7 +449,7 @@ ebitmap_and_into (ebitmap dst, ebitmap src)
*dstplace = tmpword;
}
else
- RESET_BIT (dst->wordmask, i);
+ RESET_BIT_WITH_POPCOUNT (dst->wordmask, i);
}
#ifdef EBITMAP_DEBUGGING
{
@@ -508,7 +508,7 @@ ebitmap_and (ebitmap dst, ebitmap src1, ebitmap src2)
*dstplace = tmpword;
}
else
- RESET_BIT (dst->wordmask, i);
+ RESET_BIT_WITH_POPCOUNT (dst->wordmask, i);
}
else if (src1hasword)
src1eltindex++;
@@ -624,7 +624,7 @@ ebitmap_ior_into (ebitmap dst, ebitmap src)
{
newarray [neweltindex++] = ebitmap_array_get (src, srceltindex++);
gcc_assert (i < dst->wordmask->n_bits);
- SET_BIT (dst->wordmask, i);
+ SET_BIT_WITH_POPCOUNT (dst->wordmask, i);
changed |= true;
}
}
@@ -825,7 +825,7 @@ ebitmap_and_compl_into (ebitmap dst, ebitmap src)
*dstplace = tmpword;
}
else
- RESET_BIT (dst->wordmask, i);
+ RESET_BIT_WITH_POPCOUNT (dst->wordmask, i);
}
else
{
@@ -904,7 +904,7 @@ ebitmap_and_compl (ebitmap dst, ebitmap src1, ebitmap src2)
newarray[neweltindex++] = tmpword;
}
else
- RESET_BIT (tempmask, i);
+ RESET_BIT_WITH_POPCOUNT (tempmask, i);
}
else
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 9565c618b81..0edd871b685 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -56,7 +56,6 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "debug.h"
#include "langhooks.h"
-#include "tree-pass.h"
#include "df.h"
#include "params.h"
#include "target.h"
@@ -149,7 +148,6 @@ static GTY ((if_marked ("ggc_marked_p"), param_is (struct rtx_def)))
#define cur_debug_insn_uid (crtl->emit.x_cur_debug_insn_uid)
#define first_label_num (crtl->emit.x_first_label_num)
-static rtx make_call_insn_raw (rtx);
static rtx change_address_1 (rtx, enum machine_mode, rtx, int);
static void set_used_decls (tree);
static void mark_label_nuses (rtx);
@@ -493,7 +491,7 @@ rtx_to_double_int (const_rtx cst)
if (CONST_INT_P (cst))
r = shwi_to_double_int (INTVAL (cst));
- else if (CONST_DOUBLE_P (cst) && GET_MODE (cst) == VOIDmode)
+ else if (CONST_DOUBLE_AS_INT_P (cst))
{
r.low = CONST_DOUBLE_LOW (cst);
r.high = CONST_DOUBLE_HIGH (cst);
@@ -1246,7 +1244,7 @@ gen_lowpart_common (enum machine_mode mode, rtx x)
}
else if (GET_CODE (x) == SUBREG || REG_P (x)
|| GET_CODE (x) == CONCAT || GET_CODE (x) == CONST_VECTOR
- || GET_CODE (x) == CONST_DOUBLE || CONST_INT_P (x))
+ || CONST_DOUBLE_P (x) || CONST_INT_P (x))
return simplify_gen_subreg (mode, x, innermode, offset);
/* Otherwise, we can't do this. */
@@ -2506,10 +2504,7 @@ verify_rtx_sharing (rtx orig, rtx insn)
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case CODE_LABEL:
@@ -2723,10 +2718,7 @@ repeat:
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case CODE_LABEL:
@@ -2845,10 +2837,7 @@ repeat:
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -3692,7 +3681,7 @@ make_insn_raw (rtx pattern)
/* Like `make_insn_raw' but make a DEBUG_INSN instead of an insn. */
-rtx
+static rtx
make_debug_insn_raw (rtx pattern)
{
rtx insn;
@@ -3713,7 +3702,7 @@ make_debug_insn_raw (rtx pattern)
/* Like `make_insn_raw' but make a JUMP_INSN instead of an insn. */
-rtx
+static rtx
make_jump_insn_raw (rtx pattern)
{
rtx insn;
@@ -4222,14 +4211,9 @@ emit_barrier_before (rtx before)
rtx
emit_label_before (rtx label, rtx before)
{
- /* This can be called twice for the same label as a result of the
- confusion that follows a syntax error! So make it harmless. */
- if (INSN_UID (label) == 0)
- {
- INSN_UID (label) = cur_insn_uid++;
- add_insn_before (label, before, NULL);
- }
-
+ gcc_checking_assert (INSN_UID (label) == 0);
+ INSN_UID (label) = cur_insn_uid++;
+ add_insn_before (label, before, NULL);
return label;
}
@@ -4388,15 +4372,9 @@ emit_barrier_after (rtx after)
rtx
emit_label_after (rtx label, rtx after)
{
- /* This can be called twice for the same label
- as a result of the confusion that follows a syntax error!
- So make it harmless. */
- if (INSN_UID (label) == 0)
- {
- INSN_UID (label) = cur_insn_uid++;
- add_insn_after (label, after, NULL);
- }
-
+ gcc_checking_assert (INSN_UID (label) == 0);
+ INSN_UID (label) = cur_insn_uid++;
+ add_insn_after (label, after, NULL);
return label;
}
@@ -4812,14 +4790,9 @@ emit_call_insn (rtx x)
rtx
emit_label (rtx label)
{
- /* This can be called twice for the same label
- as a result of the confusion that follows a syntax error!
- So make it harmless. */
- if (INSN_UID (label) == 0)
- {
- INSN_UID (label) = cur_insn_uid++;
- add_insn (label);
- }
+ gcc_checking_assert (INSN_UID (label) == 0);
+ INSN_UID (label) = cur_insn_uid++;
+ add_insn (label);
return label;
}
@@ -5254,10 +5227,7 @@ copy_insn_1 (rtx orig)
{
case REG:
case DEBUG_EXPR:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -5928,8 +5898,8 @@ gen_hard_reg_clobber (enum machine_mode mode, unsigned int regno)
static VEC(int,heap) *block_locators_locs;
static GTY(()) VEC(tree,gc) *block_locators_blocks;
static VEC(int,heap) *locations_locators_locs;
-DEF_VEC_O(location_t);
-DEF_VEC_ALLOC_O(location_t,heap);
+DEF_VEC_A(location_t);
+DEF_VEC_ALLOC_A(location_t,heap);
static VEC(location_t,heap) *locations_locators_vals;
int prologue_locator;
int epilogue_locator;
@@ -6109,7 +6079,7 @@ locator_location (int loc)
break;
}
}
- return *VEC_index (location_t, locations_locators_vals, min);
+ return VEC_index (location_t, locations_locators_vals, min);
}
/* Return source line of the statement that produced this insn. */
diff --git a/gcc/except.c b/gcc/except.c
index aae8aa0e091..01745125a8e 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -141,7 +141,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic.h"
#include "tree-pretty-print.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "tree-flow.h"
#include "cfgloop.h"
@@ -305,8 +304,8 @@ init_eh_for_function (void)
cfun->eh = ggc_alloc_cleared_eh_status ();
/* Make sure zero'th entries are used. */
- VEC_safe_push (eh_region, gc, cfun->eh->region_array, NULL);
- VEC_safe_push (eh_landing_pad, gc, cfun->eh->lp_array, NULL);
+ VEC_safe_push (eh_region, gc, cfun->eh->region_array, (eh_region) NULL);
+ VEC_safe_push (eh_landing_pad, gc, cfun->eh->lp_array, (eh_landing_pad) NULL);
}
/* Routines to generate the exception tree somewhat directly.
@@ -807,7 +806,7 @@ add_ehspec_entry (htab_t ehspec_hash, htab_t ttypes_hash, tree list)
if (targetm.arm_eabi_unwinder)
VEC_safe_push (tree, gc, cfun->eh->ehspec_data.arm_eabi, NULL_TREE);
else
- VEC_safe_push (uchar, gc, cfun->eh->ehspec_data.other, 0);
+ VEC_safe_push (uchar, gc, cfun->eh->ehspec_data.other, (uchar) 0);
}
return n->filter;
@@ -2396,10 +2395,10 @@ add_call_site (rtx landing_pad, int action, int section)
record->action = action;
VEC_safe_push (call_site_record, gc,
- crtl->eh.call_site_record[section], record);
+ crtl->eh.call_site_record_v[section], record);
return call_site_base + VEC_length (call_site_record,
- crtl->eh.call_site_record[section]) - 1;
+ crtl->eh.call_site_record_v[section]) - 1;
}
/* Turn REG_EH_REGION notes back into NOTE_INSN_EH_REGION notes.
@@ -2547,10 +2546,10 @@ convert_to_eh_region_ranges (void)
else if (last_action != -3)
last_landing_pad = pc_rtx;
call_site_base += VEC_length (call_site_record,
- crtl->eh.call_site_record[cur_sec]);
+ crtl->eh.call_site_record_v[cur_sec]);
cur_sec++;
- gcc_assert (crtl->eh.call_site_record[cur_sec] == NULL);
- crtl->eh.call_site_record[cur_sec]
+ gcc_assert (crtl->eh.call_site_record_v[cur_sec] == NULL);
+ crtl->eh.call_site_record_v[cur_sec]
= VEC_alloc (call_site_record, gc, 10);
}
@@ -2634,14 +2633,14 @@ push_sleb128 (VEC (uchar, gc) **data_area, int value)
static int
dw2_size_of_call_site_table (int section)
{
- int n = VEC_length (call_site_record, crtl->eh.call_site_record[section]);
+ int n = VEC_length (call_site_record, crtl->eh.call_site_record_v[section]);
int size = n * (4 + 4 + 4);
int i;
for (i = 0; i < n; ++i)
{
struct call_site_record_d *cs =
- VEC_index (call_site_record, crtl->eh.call_site_record[section], i);
+ VEC_index (call_site_record, crtl->eh.call_site_record_v[section], i);
size += size_of_uleb128 (cs->action);
}
@@ -2651,14 +2650,14 @@ dw2_size_of_call_site_table (int section)
static int
sjlj_size_of_call_site_table (void)
{
- int n = VEC_length (call_site_record, crtl->eh.call_site_record[0]);
+ int n = VEC_length (call_site_record, crtl->eh.call_site_record_v[0]);
int size = 0;
int i;
for (i = 0; i < n; ++i)
{
struct call_site_record_d *cs =
- VEC_index (call_site_record, crtl->eh.call_site_record[0], i);
+ VEC_index (call_site_record, crtl->eh.call_site_record_v[0], i);
size += size_of_uleb128 (INTVAL (cs->landing_pad));
size += size_of_uleb128 (cs->action);
}
@@ -2670,7 +2669,7 @@ sjlj_size_of_call_site_table (void)
static void
dw2_output_call_site_table (int cs_format, int section)
{
- int n = VEC_length (call_site_record, crtl->eh.call_site_record[section]);
+ int n = VEC_length (call_site_record, crtl->eh.call_site_record_v[section]);
int i;
const char *begin;
@@ -2684,7 +2683,7 @@ dw2_output_call_site_table (int cs_format, int section)
for (i = 0; i < n; ++i)
{
struct call_site_record_d *cs =
- VEC_index (call_site_record, crtl->eh.call_site_record[section], i);
+ VEC_index (call_site_record, crtl->eh.call_site_record_v[section], i);
char reg_start_lab[32];
char reg_end_lab[32];
char landing_pad_lab[32];
@@ -2732,13 +2731,13 @@ dw2_output_call_site_table (int cs_format, int section)
static void
sjlj_output_call_site_table (void)
{
- int n = VEC_length (call_site_record, crtl->eh.call_site_record[0]);
+ int n = VEC_length (call_site_record, crtl->eh.call_site_record_v[0]);
int i;
for (i = 0; i < n; ++i)
{
struct call_site_record_d *cs =
- VEC_index (call_site_record, crtl->eh.call_site_record[0], i);
+ VEC_index (call_site_record, crtl->eh.call_site_record_v[0], i);
dw2_asm_output_data_uleb128 (INTVAL (cs->landing_pad),
"region %d landing pad", i);
@@ -2778,11 +2777,16 @@ switch_to_exception_section (const char * ARG_UNUSED (fnname))
flags = SECTION_WRITE;
#ifdef HAVE_LD_EH_GC_SECTIONS
- if (flag_function_sections)
+ if (flag_function_sections
+ || (DECL_ONE_ONLY (current_function_decl) && HAVE_COMDAT_GROUP))
{
char *section_name = XNEWVEC (char, strlen (fnname) + 32);
+ /* The EH table must match the code section, so only mark
+ it linkonce if we have COMDAT groups to tie them together. */
+ if (DECL_ONE_ONLY (current_function_decl) && HAVE_COMDAT_GROUP)
+ flags |= SECTION_LINKONCE;
sprintf (section_name, ".gcc_except_table.%s", fnname);
- s = get_section (section_name, flags, NULL);
+ s = get_section (section_name, flags, current_function_decl);
free (section_name);
}
else
@@ -3047,7 +3051,7 @@ output_function_exception_table (const char *fnname)
targetm.asm_out.emit_except_table_label (asm_out_file);
output_one_function_exception_table (0);
- if (crtl->eh.call_site_record[1] != NULL)
+ if (crtl->eh.call_site_record_v[1] != NULL)
output_one_function_exception_table (1);
switch_to_section (current_function_section ());
diff --git a/gcc/explow.c b/gcc/explow.c
index 1cfe93bc7db..0563a231d68 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -347,8 +347,7 @@ convert_memory_address_addr_space (enum machine_mode to_mode ATTRIBUTE_UNUSED,
to the default case. */
switch (GET_CODE (x))
{
- case CONST_INT:
- case CONST_DOUBLE:
+ CASE_CONST_SCALAR_INT:
if (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode))
code = TRUNCATE;
else if (POINTERS_EXTEND_UNSIGNED < 0)
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 989f86cbe7a..6c94a90fb84 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -101,7 +101,6 @@ struct init_expmed_rtl
struct rtx_def mult; rtunion mult_fld1;
struct rtx_def sdiv; rtunion sdiv_fld1;
struct rtx_def udiv; rtunion udiv_fld1;
- struct rtx_def zext;
struct rtx_def sdiv_32; rtunion sdiv_32_fld1;
struct rtx_def smod_32; rtunion smod_32_fld1;
struct rtx_def wide_mult; rtunion wide_mult_fld1;
@@ -112,16 +111,41 @@ struct init_expmed_rtl
struct rtx_def shift_add; rtunion shift_add_fld1;
struct rtx_def shift_sub0; rtunion shift_sub0_fld1;
struct rtx_def shift_sub1; rtunion shift_sub1_fld1;
+ struct rtx_def zext;
+ struct rtx_def trunc;
rtx pow2[MAX_BITS_PER_WORD];
rtx cint[MAX_BITS_PER_WORD];
};
static void
+init_expmed_one_conv (struct init_expmed_rtl *all, enum machine_mode to_mode,
+ enum machine_mode from_mode, bool speed)
+{
+ int to_size, from_size;
+ rtx which;
+
+ /* We're given no information about the true size of a partial integer,
+ only the size of the "full" integer it requires for storage. For
+ comparison purposes here, reduce the bit size by one in that case. */
+ to_size = (GET_MODE_BITSIZE (to_mode)
+ - (GET_MODE_CLASS (to_mode) == MODE_PARTIAL_INT));
+ from_size = (GET_MODE_BITSIZE (from_mode)
+ - (GET_MODE_CLASS (from_mode) == MODE_PARTIAL_INT));
+
+ /* Assume cost of zero-extend and sign-extend is the same. */
+ which = (to_size < from_size ? &all->trunc : &all->zext);
+
+ PUT_MODE (&all->reg, from_mode);
+ set_convert_cost (to_mode, from_mode, speed, set_src_cost (which, speed));
+}
+
+static void
init_expmed_one_mode (struct init_expmed_rtl *all,
enum machine_mode mode, int speed)
{
int m, n, mode_bitsize;
+ enum machine_mode mode_from;
mode_bitsize = GET_MODE_UNIT_BITSIZE (mode);
@@ -139,21 +163,27 @@ init_expmed_one_mode (struct init_expmed_rtl *all,
PUT_MODE (&all->shift_add, mode);
PUT_MODE (&all->shift_sub0, mode);
PUT_MODE (&all->shift_sub1, mode);
+ PUT_MODE (&all->zext, mode);
+ PUT_MODE (&all->trunc, mode);
- add_cost[speed][mode] = set_src_cost (&all->plus, speed);
- neg_cost[speed][mode] = set_src_cost (&all->neg, speed);
- mul_cost[speed][mode] = set_src_cost (&all->mult, speed);
- sdiv_cost[speed][mode] = set_src_cost (&all->sdiv, speed);
- udiv_cost[speed][mode] = set_src_cost (&all->udiv, speed);
+ set_add_cost (speed, mode, set_src_cost (&all->plus, speed));
+ set_neg_cost (speed, mode, set_src_cost (&all->neg, speed));
+ set_mul_cost (speed, mode, set_src_cost (&all->mult, speed));
+ set_sdiv_cost (speed, mode, set_src_cost (&all->sdiv, speed));
+ set_udiv_cost (speed, mode, set_src_cost (&all->udiv, speed));
- sdiv_pow2_cheap[speed][mode] = (set_src_cost (&all->sdiv_32, speed)
- <= 2 * add_cost[speed][mode]);
- smod_pow2_cheap[speed][mode] = (set_src_cost (&all->smod_32, speed)
- <= 4 * add_cost[speed][mode]);
+ set_sdiv_pow2_cheap (speed, mode, (set_src_cost (&all->sdiv_32, speed)
+ <= 2 * add_cost (speed, mode)));
+ set_smod_pow2_cheap (speed, mode, (set_src_cost (&all->smod_32, speed)
+ <= 4 * add_cost (speed, mode)));
- shift_cost[speed][mode][0] = 0;
- shiftadd_cost[speed][mode][0] = shiftsub0_cost[speed][mode][0]
- = shiftsub1_cost[speed][mode][0] = add_cost[speed][mode];
+ set_shift_cost (speed, mode, 0, 0);
+ {
+ int cost = add_cost (speed, mode);
+ set_shiftadd_cost (speed, mode, 0, cost);
+ set_shiftsub0_cost (speed, mode, 0, cost);
+ set_shiftsub1_cost (speed, mode, 0, cost);
+ }
n = MIN (MAX_BITS_PER_WORD, mode_bitsize);
for (m = 1; m < n; m++)
@@ -161,16 +191,21 @@ init_expmed_one_mode (struct init_expmed_rtl *all,
XEXP (&all->shift, 1) = all->cint[m];
XEXP (&all->shift_mult, 1) = all->pow2[m];
- shift_cost[speed][mode][m] = set_src_cost (&all->shift, speed);
- shiftadd_cost[speed][mode][m] = set_src_cost (&all->shift_add, speed);
- shiftsub0_cost[speed][mode][m] = set_src_cost (&all->shift_sub0, speed);
- shiftsub1_cost[speed][mode][m] = set_src_cost (&all->shift_sub1, speed);
+ set_shift_cost (speed, mode, m, set_src_cost (&all->shift, speed));
+ set_shiftadd_cost (speed, mode, m, set_src_cost (&all->shift_add, speed));
+ set_shiftsub0_cost (speed, mode, m, set_src_cost (&all->shift_sub0, speed));
+ set_shiftsub1_cost (speed, mode, m, set_src_cost (&all->shift_sub1, speed));
}
if (SCALAR_INT_MODE_P (mode))
{
- enum machine_mode wider_mode = GET_MODE_WIDER_MODE (mode);
-
+ for (mode_from = MIN_MODE_INT; mode_from <= MAX_MODE_INT;
+ mode_from = (enum machine_mode)(mode_from + 1))
+ init_expmed_one_conv (all, mode, mode_from, speed);
+ }
+ if (GET_MODE_CLASS (mode) == MODE_INT)
+ {
+ enum machine_mode wider_mode = GET_MODE_WIDER_MODE (mode);
if (wider_mode != VOIDmode)
{
PUT_MODE (&all->zext, wider_mode);
@@ -178,10 +213,10 @@ init_expmed_one_mode (struct init_expmed_rtl *all,
PUT_MODE (&all->wide_lshr, wider_mode);
XEXP (&all->wide_lshr, 1) = GEN_INT (mode_bitsize);
- mul_widen_cost[speed][wider_mode]
- = set_src_cost (&all->wide_mult, speed);
- mul_highpart_cost[speed][mode]
- = set_src_cost (&all->wide_trunc, speed);
+ set_mul_widen_cost (speed, wider_mode,
+ set_src_cost (&all->wide_mult, speed));
+ set_mul_highpart_cost (speed, mode,
+ set_src_cost (&all->wide_trunc, speed));
}
}
}
@@ -262,26 +297,36 @@ init_expmed (void)
XEXP (&all.shift_sub1, 0) = &all.reg;
XEXP (&all.shift_sub1, 1) = &all.shift_mult;
+ PUT_CODE (&all.trunc, TRUNCATE);
+ XEXP (&all.trunc, 0) = &all.reg;
+
for (speed = 0; speed < 2; speed++)
{
crtl->maybe_hot_insn_p = speed;
- zero_cost[speed] = set_src_cost (const0_rtx, speed);
+ set_zero_cost (speed, set_src_cost (const0_rtx, speed));
- for (mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
- mode != VOIDmode;
- mode = GET_MODE_WIDER_MODE (mode))
+ for (mode = MIN_MODE_INT; mode <= MAX_MODE_INT;
+ mode = (enum machine_mode)(mode + 1))
init_expmed_one_mode (&all, mode, speed);
- for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_INT);
- mode != VOIDmode;
- mode = GET_MODE_WIDER_MODE (mode))
- init_expmed_one_mode (&all, mode, speed);
+ if (MIN_MODE_PARTIAL_INT != VOIDmode)
+ for (mode = MIN_MODE_PARTIAL_INT; mode <= MAX_MODE_PARTIAL_INT;
+ mode = (enum machine_mode)(mode + 1))
+ init_expmed_one_mode (&all, mode, speed);
+
+ if (MIN_MODE_VECTOR_INT != VOIDmode)
+ for (mode = MIN_MODE_VECTOR_INT; mode <= MAX_MODE_VECTOR_INT;
+ mode = (enum machine_mode)(mode + 1))
+ init_expmed_one_mode (&all, mode, speed);
}
- if (alg_hash_used_p)
- memset (alg_hash, 0, sizeof (alg_hash));
+ if (alg_hash_used_p ())
+ {
+ struct alg_hash_entry *p = alg_hash_entry_ptr (0);
+ memset (p, 0, sizeof (*p) * NUM_ALG_HASH_ENTRIES);
+ }
else
- alg_hash_used_p = true;
+ set_alg_hash_used_p (true);
default_rtl_profile ();
}
@@ -2229,8 +2274,9 @@ expand_shift_1 (enum tree_code code, enum machine_mode mode, rtx shifted,
&& INTVAL (op1) > 0
&& INTVAL (op1) < GET_MODE_PRECISION (mode)
&& INTVAL (op1) < MAX_BITS_PER_WORD
- && shift_cost[speed][mode][INTVAL (op1)] > INTVAL (op1) * add_cost[speed][mode]
- && shift_cost[speed][mode][INTVAL (op1)] != MAX_COST)
+ && (shift_cost (speed, mode, INTVAL (op1))
+ > INTVAL (op1) * add_cost (speed, mode))
+ && shift_cost (speed, mode, INTVAL (op1)) != MAX_COST)
{
int i;
for (i = 0; i < INTVAL (op1); i++)
@@ -2381,8 +2427,8 @@ static rtx expand_mult_const (enum machine_mode, rtx, HOST_WIDE_INT, rtx,
const struct algorithm *, enum mult_variant);
static unsigned HOST_WIDE_INT invert_mod2n (unsigned HOST_WIDE_INT, int);
static rtx extract_high_half (enum machine_mode, rtx);
-static rtx expand_mult_highpart (enum machine_mode, rtx, rtx, rtx, int, int);
-static rtx expand_mult_highpart_optab (enum machine_mode, rtx, rtx, rtx,
+static rtx expmed_mult_highpart (enum machine_mode, rtx, rtx, rtx, int, int);
+static rtx expmed_mult_highpart_optab (enum machine_mode, rtx, rtx, rtx,
int, int);
/* Compute and return the best algorithm for multiplying by T.
The algorithm must cost less than cost_limit
@@ -2406,6 +2452,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
enum alg_code cache_alg = alg_zero;
bool speed = optimize_insn_for_speed_p ();
enum machine_mode imode;
+ struct alg_hash_entry *entry_ptr;
/* Indicate that no algorithm is yet found. If no algorithm
is found, this value will be returned and indicate failure. */
@@ -2440,13 +2487,13 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
fail now. */
if (t == 0)
{
- if (MULT_COST_LESS (cost_limit, zero_cost[speed]))
+ if (MULT_COST_LESS (cost_limit, zero_cost (speed)))
return;
else
{
alg_out->ops = 1;
- alg_out->cost.cost = zero_cost[speed];
- alg_out->cost.latency = zero_cost[speed];
+ alg_out->cost.cost = zero_cost (speed);
+ alg_out->cost.latency = zero_cost (speed);
alg_out->op[0] = alg_zero;
return;
}
@@ -2462,19 +2509,20 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
hash_index = (t ^ (unsigned int) mode ^ (speed * 256)) % NUM_ALG_HASH_ENTRIES;
/* See if we already know what to do for T. */
- if (alg_hash[hash_index].t == t
- && alg_hash[hash_index].mode == mode
- && alg_hash[hash_index].mode == mode
- && alg_hash[hash_index].speed == speed
- && alg_hash[hash_index].alg != alg_unknown)
+ entry_ptr = alg_hash_entry_ptr (hash_index);
+ if (entry_ptr->t == t
+ && entry_ptr->mode == mode
+ && entry_ptr->mode == mode
+ && entry_ptr->speed == speed
+ && entry_ptr->alg != alg_unknown)
{
- cache_alg = alg_hash[hash_index].alg;
+ cache_alg = entry_ptr->alg;
if (cache_alg == alg_impossible)
{
/* The cache tells us that it's impossible to synthesize
- multiplication by T within alg_hash[hash_index].cost. */
- if (!CHEAPER_MULT_COST (&alg_hash[hash_index].cost, cost_limit))
+ multiplication by T within entry_ptr->cost. */
+ if (!CHEAPER_MULT_COST (&entry_ptr->cost, cost_limit))
/* COST_LIMIT is at least as restrictive as the one
recorded in the hash table, in which case we have no
hope of synthesizing a multiplication. Just
@@ -2488,7 +2536,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
}
else
{
- if (CHEAPER_MULT_COST (cost_limit, &alg_hash[hash_index].cost))
+ if (CHEAPER_MULT_COST (cost_limit, &entry_ptr->cost))
/* The cached algorithm shows that this multiplication
requires more cost than COST_LIMIT. Just return. This
way, we don't clobber this cache entry with
@@ -2534,10 +2582,10 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
q = t >> m;
/* The function expand_shift will choose between a shift and
a sequence of additions, so the observed cost is given as
- MIN (m * add_cost[speed][mode], shift_cost[speed][mode][m]). */
- op_cost = m * add_cost[speed][mode];
- if (shift_cost[speed][mode][m] < op_cost)
- op_cost = shift_cost[speed][mode][m];
+ MIN (m * add_cost(speed, mode), shift_cost(speed, mode, m)). */
+ op_cost = m * add_cost (speed, mode);
+ if (shift_cost (speed, mode, m) < op_cost)
+ op_cost = shift_cost (speed, mode, m);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_cost;
synth_mult (alg_in, q, &new_limit, mode);
@@ -2564,11 +2612,11 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
q = ~(~orig_t >> m);
/* The function expand_shift will choose between a shift
and a sequence of additions, so the observed cost is
- given as MIN (m * add_cost[speed][mode],
- shift_cost[speed][mode][m]). */
- op_cost = m * add_cost[speed][mode];
- if (shift_cost[speed][mode][m] < op_cost)
- op_cost = shift_cost[speed][mode][m];
+ given as MIN (m * add_cost(speed, mode),
+ shift_cost(speed, mode, m)). */
+ op_cost = m * add_cost (speed, mode);
+ if (shift_cost (speed, mode, m) < op_cost)
+ op_cost = shift_cost (speed, mode, m);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_cost;
synth_mult (alg_in, q, &new_limit, mode);
@@ -2610,7 +2658,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
{
/* T ends with ...111. Multiply by (T + 1) and subtract 1. */
- op_cost = add_cost[speed][mode];
+ op_cost = add_cost (speed, mode);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_cost;
synth_mult (alg_in, t + 1, &new_limit, mode);
@@ -2630,7 +2678,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
{
/* T ends with ...01 or ...011. Multiply by (T - 1) and add 1. */
- op_cost = add_cost[speed][mode];
+ op_cost = add_cost (speed, mode);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_cost;
synth_mult (alg_in, t - 1, &new_limit, mode);
@@ -2652,7 +2700,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
m = exact_log2 (-orig_t + 1);
if (m >= 0 && m < maxm)
{
- op_cost = shiftsub1_cost[speed][mode][m];
+ op_cost = shiftsub1_cost (speed, mode, m);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_cost;
synth_mult (alg_in, (unsigned HOST_WIDE_INT) (-orig_t + 1) >> m,
@@ -2699,14 +2747,14 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
equal to its cost, otherwise assume that on superscalar
hardware the shift may be executed concurrently with the
earlier steps in the algorithm. */
- op_cost = add_cost[speed][mode] + shift_cost[speed][mode][m];
- if (shiftadd_cost[speed][mode][m] < op_cost)
+ op_cost = add_cost (speed, mode) + shift_cost (speed, mode, m);
+ if (shiftadd_cost (speed, mode, m) < op_cost)
{
- op_cost = shiftadd_cost[speed][mode][m];
+ op_cost = shiftadd_cost (speed, mode, m);
op_latency = op_cost;
}
else
- op_latency = add_cost[speed][mode];
+ op_latency = add_cost (speed, mode);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_latency;
@@ -2738,14 +2786,14 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
equal to it's cost, otherwise assume that on superscalar
hardware the shift may be executed concurrently with the
earlier steps in the algorithm. */
- op_cost = add_cost[speed][mode] + shift_cost[speed][mode][m];
- if (shiftsub0_cost[speed][mode][m] < op_cost)
+ op_cost = add_cost (speed, mode) + shift_cost (speed, mode, m);
+ if (shiftsub0_cost (speed, mode, m) < op_cost)
{
- op_cost = shiftsub0_cost[speed][mode][m];
+ op_cost = shiftsub0_cost (speed, mode, m);
op_latency = op_cost;
}
else
- op_latency = add_cost[speed][mode];
+ op_latency = add_cost (speed, mode);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_latency;
@@ -2779,7 +2827,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
m = exact_log2 (q);
if (m >= 0 && m < maxm)
{
- op_cost = shiftadd_cost[speed][mode][m];
+ op_cost = shiftadd_cost (speed, mode, m);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_cost;
synth_mult (alg_in, (t - 1) >> m, &new_limit, mode);
@@ -2804,7 +2852,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
m = exact_log2 (q);
if (m >= 0 && m < maxm)
{
- op_cost = shiftsub0_cost[speed][mode][m];
+ op_cost = shiftsub0_cost (speed, mode, m);
new_limit.cost = best_cost.cost - op_cost;
new_limit.latency = best_cost.latency - op_cost;
synth_mult (alg_in, (t + 1) >> m, &new_limit, mode);
@@ -2833,23 +2881,23 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
we are asked to find an algorithm for T within the same or
lower COST_LIMIT, we can immediately return to the
caller. */
- alg_hash[hash_index].t = t;
- alg_hash[hash_index].mode = mode;
- alg_hash[hash_index].speed = speed;
- alg_hash[hash_index].alg = alg_impossible;
- alg_hash[hash_index].cost = *cost_limit;
+ entry_ptr->t = t;
+ entry_ptr->mode = mode;
+ entry_ptr->speed = speed;
+ entry_ptr->alg = alg_impossible;
+ entry_ptr->cost = *cost_limit;
return;
}
/* Cache the result. */
if (!cache_hit)
{
- alg_hash[hash_index].t = t;
- alg_hash[hash_index].mode = mode;
- alg_hash[hash_index].speed = speed;
- alg_hash[hash_index].alg = best_alg->op[best_alg->ops];
- alg_hash[hash_index].cost.cost = best_cost.cost;
- alg_hash[hash_index].cost.latency = best_cost.latency;
+ entry_ptr->t = t;
+ entry_ptr->mode = mode;
+ entry_ptr->speed = speed;
+ entry_ptr->alg = best_alg->op[best_alg->ops];
+ entry_ptr->cost.cost = best_cost.cost;
+ entry_ptr->cost.latency = best_cost.latency;
}
/* If we are getting a too long sequence for `struct algorithm'
@@ -2895,7 +2943,7 @@ choose_mult_variant (enum machine_mode mode, HOST_WIDE_INT val,
/* Ensure that mult_cost provides a reasonable upper bound.
Any constant multiplication can be performed with less
than 2 * bits additions. */
- op_cost = 2 * GET_MODE_UNIT_BITSIZE (mode) * add_cost[speed][mode];
+ op_cost = 2 * GET_MODE_UNIT_BITSIZE (mode) * add_cost (speed, mode);
if (mult_cost > op_cost)
mult_cost = op_cost;
@@ -2908,7 +2956,7 @@ choose_mult_variant (enum machine_mode mode, HOST_WIDE_INT val,
`unsigned int' */
if (HOST_BITS_PER_INT >= GET_MODE_UNIT_BITSIZE (mode))
{
- op_cost = neg_cost[speed][mode];
+ op_cost = neg_cost(speed, mode);
if (MULT_COST_LESS (&alg->cost, mult_cost))
{
limit.cost = alg->cost.cost - op_cost;
@@ -2928,7 +2976,7 @@ choose_mult_variant (enum machine_mode mode, HOST_WIDE_INT val,
}
/* This proves very useful for division-by-constant. */
- op_cost = add_cost[speed][mode];
+ op_cost = add_cost (speed, mode);
if (MULT_COST_LESS (&alg->cost, mult_cost))
{
limit.cost = alg->cost.cost - op_cost;
@@ -3169,7 +3217,7 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
coeff = INTVAL (scalar_op1);
is_neg = coeff < 0;
}
- else if (CONST_DOUBLE_P (scalar_op1))
+ else if (CONST_DOUBLE_AS_INT_P (scalar_op1))
{
/* If we are multiplying in DImode, it may still be a win
to try to work with shifts and adds. */
@@ -3192,6 +3240,8 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
}
goto skip_synth;
}
+ else
+ goto skip_synth;
}
else
goto skip_synth;
@@ -3211,7 +3261,6 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
/* Attempt to handle multiplication of DImode values by negative
coefficients, by performing the multiplication by a positive
multiplier and then inverting the result. */
- /* ??? How is this not slightly redundant with the neg variant? */
if (is_neg && mode_bitsize > HOST_BITS_PER_WIDE_INT)
{
/* Its safe to use -coeff even for INT_MIN, as the
@@ -3219,7 +3268,7 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
Exclude cost of op0 from max_cost to match the cost
calculation of the synth_mult. */
max_cost = (set_src_cost (gen_rtx_MULT (mode, fake_reg, op1), speed)
- - neg_cost[speed][mode]);
+ - neg_cost(speed, mode));
if (max_cost > 0
&& choose_mult_variant (mode, -coeff, &algorithm,
&variant, max_cost))
@@ -3228,6 +3277,7 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
&algorithm, variant);
return expand_unop (mode, neg_optab, temp, target, 0);
}
+ goto skip_synth;
}
/* Exclude cost of op0 from max_cost to match the cost
@@ -3240,7 +3290,7 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
skip_synth:
/* Expand x*2.0 as x+x. */
- if (GET_CODE (scalar_op1) == CONST_DOUBLE && FLOAT_MODE_P (mode))
+ if (CONST_DOUBLE_AS_FLOAT_P (scalar_op1))
{
REAL_VALUE_TYPE d;
REAL_VALUE_FROM_CONST_DOUBLE (d, scalar_op1);
@@ -3262,6 +3312,24 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
return op0;
}
+/* Return a cost estimate for multiplying a register by the given
+ COEFFicient in the given MODE and SPEED. */
+
+int
+mult_by_coeff_cost (HOST_WIDE_INT coeff, enum machine_mode mode, bool speed)
+{
+ int max_cost;
+ struct algorithm algorithm;
+ enum mult_variant variant;
+
+ rtx fake_reg = gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1);
+ max_cost = set_src_cost (gen_rtx_MULT (mode, fake_reg, fake_reg), speed);
+ if (choose_mult_variant (mode, coeff, &algorithm, &variant, max_cost))
+ return algorithm.cost.cost;
+ else
+ return max_cost;
+}
+
/* Perform a widening multiplication and return an rtx for the result.
MODE is mode of value; OP0 and OP1 are what to multiply (rtx's);
TARGET is a suggestion for where to store the result (an rtx).
@@ -3302,7 +3370,7 @@ expand_widening_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
/* Exclude cost of op0 from max_cost to match the cost
calculation of the synth_mult. */
- max_cost = mul_widen_cost[speed][mode];
+ max_cost = mul_widen_cost (speed, mode);
if (choose_mult_variant (mode, coeff, &algorithm, &variant,
max_cost))
{
@@ -3477,7 +3545,7 @@ expand_mult_highpart_adjust (enum machine_mode mode, rtx adj_operand, rtx op0,
return target;
}
-/* Subroutine of expand_mult_highpart. Return the MODE high part of OP. */
+/* Subroutine of expmed_mult_highpart. Return the MODE high part of OP. */
static rtx
extract_high_half (enum machine_mode mode, rtx op)
@@ -3495,11 +3563,11 @@ extract_high_half (enum machine_mode mode, rtx op)
return convert_modes (mode, wider_mode, op, 0);
}
-/* Like expand_mult_highpart, but only consider using a multiplication
+/* Like expmed_mult_highpart, but only consider using a multiplication
optab. OP1 is an rtx for the constant operand. */
static rtx
-expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
+expmed_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
rtx target, int unsignedp, int max_cost)
{
rtx narrow_op1 = gen_int_mode (INTVAL (op1), mode);
@@ -3516,7 +3584,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
/* Firstly, try using a multiplication insn that only generates the needed
high part of the product, and in the sign flavor of unsignedp. */
- if (mul_highpart_cost[speed][mode] < max_cost)
+ if (mul_highpart_cost (speed, mode) < max_cost)
{
moptab = unsignedp ? umul_highpart_optab : smul_highpart_optab;
tem = expand_binop (mode, moptab, op0, narrow_op1, target,
@@ -3528,8 +3596,9 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
/* Secondly, same as above, but use sign flavor opposite of unsignedp.
Need to adjust the result after the multiplication. */
if (size - 1 < BITS_PER_WORD
- && (mul_highpart_cost[speed][mode] + 2 * shift_cost[speed][mode][size-1]
- + 4 * add_cost[speed][mode] < max_cost))
+ && (mul_highpart_cost (speed, mode)
+ + 2 * shift_cost (speed, mode, size-1)
+ + 4 * add_cost (speed, mode) < max_cost))
{
moptab = unsignedp ? smul_highpart_optab : umul_highpart_optab;
tem = expand_binop (mode, moptab, op0, narrow_op1, target,
@@ -3543,7 +3612,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
/* Try widening multiplication. */
moptab = unsignedp ? umul_widen_optab : smul_widen_optab;
if (widening_optab_handler (moptab, wider_mode, mode) != CODE_FOR_nothing
- && mul_widen_cost[speed][wider_mode] < max_cost)
+ && mul_widen_cost (speed, wider_mode) < max_cost)
{
tem = expand_binop (wider_mode, moptab, op0, narrow_op1, 0,
unsignedp, OPTAB_WIDEN);
@@ -3554,7 +3623,8 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
/* Try widening the mode and perform a non-widening multiplication. */
if (optab_handler (smul_optab, wider_mode) != CODE_FOR_nothing
&& size - 1 < BITS_PER_WORD
- && mul_cost[speed][wider_mode] + shift_cost[speed][mode][size-1] < max_cost)
+ && (mul_cost (speed, wider_mode) + shift_cost (speed, mode, size-1)
+ < max_cost))
{
rtx insns, wop0, wop1;
@@ -3581,8 +3651,9 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
moptab = unsignedp ? smul_widen_optab : umul_widen_optab;
if (widening_optab_handler (moptab, wider_mode, mode) != CODE_FOR_nothing
&& size - 1 < BITS_PER_WORD
- && (mul_widen_cost[speed][wider_mode] + 2 * shift_cost[speed][mode][size-1]
- + 4 * add_cost[speed][mode] < max_cost))
+ && (mul_widen_cost (speed, wider_mode)
+ + 2 * shift_cost (speed, mode, size-1)
+ + 4 * add_cost (speed, mode) < max_cost))
{
tem = expand_binop (wider_mode, moptab, op0, narrow_op1,
NULL_RTX, ! unsignedp, OPTAB_WIDEN);
@@ -3610,7 +3681,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
MAX_COST is the total allowed cost for the expanded RTL. */
static rtx
-expand_mult_highpart (enum machine_mode mode, rtx op0, rtx op1,
+expmed_mult_highpart (enum machine_mode mode, rtx op0, rtx op1,
rtx target, int unsignedp, int max_cost)
{
enum machine_mode wider_mode = GET_MODE_WIDER_MODE (mode);
@@ -3633,16 +3704,16 @@ expand_mult_highpart (enum machine_mode mode, rtx op0, rtx op1,
mode == word_mode, however all the cost calculations in
synth_mult etc. assume single-word operations. */
if (GET_MODE_BITSIZE (wider_mode) > BITS_PER_WORD)
- return expand_mult_highpart_optab (mode, op0, op1, target,
+ return expmed_mult_highpart_optab (mode, op0, op1, target,
unsignedp, max_cost);
- extra_cost = shift_cost[speed][mode][GET_MODE_BITSIZE (mode) - 1];
+ extra_cost = shift_cost (speed, mode, GET_MODE_BITSIZE (mode) - 1);
/* Check whether we try to multiply by a negative constant. */
if (!unsignedp && ((cnst1 >> (GET_MODE_BITSIZE (mode) - 1)) & 1))
{
sign_adjust = true;
- extra_cost += add_cost[speed][mode];
+ extra_cost += add_cost (speed, mode);
}
/* See whether shift/add multiplication is cheap enough. */
@@ -3651,7 +3722,7 @@ expand_mult_highpart (enum machine_mode mode, rtx op0, rtx op1,
{
/* See whether the specialized multiplication optabs are
cheaper than the shift/add version. */
- tem = expand_mult_highpart_optab (mode, op0, op1, target, unsignedp,
+ tem = expmed_mult_highpart_optab (mode, op0, op1, target, unsignedp,
alg.cost.cost + extra_cost);
if (tem)
return tem;
@@ -3666,7 +3737,7 @@ expand_mult_highpart (enum machine_mode mode, rtx op0, rtx op1,
return tem;
}
- return expand_mult_highpart_optab (mode, op0, op1, target,
+ return expmed_mult_highpart_optab (mode, op0, op1, target,
unsignedp, max_cost);
}
@@ -3832,7 +3903,8 @@ expand_sdiv_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d)
temp = gen_reg_rtx (mode);
temp = emit_store_flag (temp, LT, op0, const0_rtx, mode, 0, -1);
- if (shift_cost[optimize_insn_for_speed_p ()][mode][ushift] > COSTS_N_INSNS (1))
+ if (shift_cost (optimize_insn_for_speed_p (), mode, ushift)
+ > COSTS_N_INSNS (1))
temp = expand_binop (mode, and_optab, temp, GEN_INT (d - 1),
NULL_RTX, 0, OPTAB_LIB_WIDEN);
else
@@ -3940,7 +4012,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
In all cases but EXACT_DIV_EXPR, this multiplication requires the upper
half of the product. Different strategies for generating the product are
- implemented in expand_mult_highpart.
+ implemented in expmed_mult_highpart.
If what we actually want is the remainder, we generate that by another
by-constant multiplication and a subtraction. */
@@ -3990,7 +4062,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
mode for which we can do the operation with a library call. */
/* We might want to refine this now that we have division-by-constant
- optimization. Since expand_mult_highpart tries so many variants, it is
+ optimization. Since expmed_mult_highpart tries so many variants, it is
not straightforward to generalize this. Maybe we should make an array
of possible modes in init_expmed? Save this for GCC 2.7. */
@@ -4035,10 +4107,13 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
/* Only deduct something for a REM if the last divide done was
for a different constant. Then set the constant of the last
divide. */
- max_cost = unsignedp ? udiv_cost[speed][compute_mode] : sdiv_cost[speed][compute_mode];
+ max_cost = (unsignedp
+ ? udiv_cost (speed, compute_mode)
+ : sdiv_cost (speed, compute_mode));
if (rem_flag && ! (last_div_const != 0 && op1_is_constant
&& INTVAL (op1) == last_div_const))
- max_cost -= mul_cost[speed][compute_mode] + add_cost[speed][compute_mode];
+ max_cost -= (mul_cost (speed, compute_mode)
+ + add_cost (speed, compute_mode));
last_div_const = ! rem_flag && op1_is_constant ? INTVAL (op1) : 0;
@@ -4152,10 +4227,10 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
goto fail1;
extra_cost
- = (shift_cost[speed][compute_mode][post_shift - 1]
- + shift_cost[speed][compute_mode][1]
- + 2 * add_cost[speed][compute_mode]);
- t1 = expand_mult_highpart (compute_mode, op0,
+ = (shift_cost (speed, compute_mode, post_shift - 1)
+ + shift_cost (speed, compute_mode, 1)
+ + 2 * add_cost (speed, compute_mode));
+ t1 = expmed_mult_highpart (compute_mode, op0,
GEN_INT (ml),
NULL_RTX, 1,
max_cost - extra_cost);
@@ -4185,9 +4260,9 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
(RSHIFT_EXPR, compute_mode, op0,
pre_shift, NULL_RTX, 1);
extra_cost
- = (shift_cost[speed][compute_mode][pre_shift]
- + shift_cost[speed][compute_mode][post_shift]);
- t2 = expand_mult_highpart (compute_mode, t1,
+ = (shift_cost (speed, compute_mode, pre_shift)
+ + shift_cost (speed, compute_mode, post_shift));
+ t2 = expmed_mult_highpart (compute_mode, t1,
GEN_INT (ml),
NULL_RTX, 1,
max_cost - extra_cost);
@@ -4245,8 +4320,9 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
goto fail1;
}
else if (EXACT_POWER_OF_2_OR_ZERO_P (d)
- && (rem_flag ? smod_pow2_cheap[speed][compute_mode]
- : sdiv_pow2_cheap[speed][compute_mode])
+ && (rem_flag
+ ? smod_pow2_cheap (speed, compute_mode)
+ : sdiv_pow2_cheap (speed, compute_mode))
/* We assume that cheap metric is true if the
optab has an expander for this mode. */
&& ((optab_handler ((rem_flag ? smod_optab
@@ -4266,7 +4342,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
return gen_lowpart (mode, remainder);
}
- if (sdiv_pow2_cheap[speed][compute_mode]
+ if (sdiv_pow2_cheap (speed, compute_mode)
&& ((optab_handler (sdiv_optab, compute_mode)
!= CODE_FOR_nothing)
|| (optab_handler (sdivmod_optab, compute_mode)
@@ -4310,10 +4386,10 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|| size - 1 >= BITS_PER_WORD)
goto fail1;
- extra_cost = (shift_cost[speed][compute_mode][post_shift]
- + shift_cost[speed][compute_mode][size - 1]
- + add_cost[speed][compute_mode]);
- t1 = expand_mult_highpart (compute_mode, op0,
+ extra_cost = (shift_cost (speed, compute_mode, post_shift)
+ + shift_cost (speed, compute_mode, size - 1)
+ + add_cost (speed, compute_mode));
+ t1 = expmed_mult_highpart (compute_mode, op0,
GEN_INT (ml), NULL_RTX, 0,
max_cost - extra_cost);
if (t1 == 0)
@@ -4345,10 +4421,10 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
ml |= (~(unsigned HOST_WIDE_INT) 0) << (size - 1);
mlr = gen_int_mode (ml, compute_mode);
- extra_cost = (shift_cost[speed][compute_mode][post_shift]
- + shift_cost[speed][compute_mode][size - 1]
- + 2 * add_cost[speed][compute_mode]);
- t1 = expand_mult_highpart (compute_mode, op0, mlr,
+ extra_cost = (shift_cost (speed, compute_mode, post_shift)
+ + shift_cost (speed, compute_mode, size - 1)
+ + 2 * add_cost (speed, compute_mode));
+ t1 = expmed_mult_highpart (compute_mode, op0, mlr,
NULL_RTX, 0,
max_cost - extra_cost);
if (t1 == 0)
@@ -4433,10 +4509,10 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
size - 1, NULL_RTX, 0);
t2 = expand_binop (compute_mode, xor_optab, op0, t1,
NULL_RTX, 0, OPTAB_WIDEN);
- extra_cost = (shift_cost[speed][compute_mode][post_shift]
- + shift_cost[speed][compute_mode][size - 1]
- + 2 * add_cost[speed][compute_mode]);
- t3 = expand_mult_highpart (compute_mode, t2,
+ extra_cost = (shift_cost (speed, compute_mode, post_shift)
+ + shift_cost (speed, compute_mode, size - 1)
+ + 2 * add_cost (speed, compute_mode));
+ t3 = expmed_mult_highpart (compute_mode, t2,
GEN_INT (ml), NULL_RTX, 1,
max_cost - extra_cost);
if (t3 != 0)
diff --git a/gcc/expmed.h b/gcc/expmed.h
index 37f57557120..05d0c15bf5e 100644
--- a/gcc/expmed.h
+++ b/gcc/expmed.h
@@ -124,6 +124,26 @@ struct alg_hash_entry {
#define NUM_ALG_HASH_ENTRIES 307
#endif
+#define NUM_MODE_INT \
+ (MAX_MODE_INT - MIN_MODE_INT + 1)
+#define NUM_MODE_PARTIAL_INT \
+ (MIN_MODE_PARTIAL_INT == VOIDmode ? 0 \
+ : MAX_MODE_PARTIAL_INT - MIN_MODE_PARTIAL_INT + 1)
+#define NUM_MODE_VECTOR_INT \
+ (MIN_MODE_VECTOR_INT == VOIDmode ? 0 \
+ : MAX_MODE_VECTOR_INT - MIN_MODE_VECTOR_INT + 1)
+
+#define NUM_MODE_IP_INT (NUM_MODE_INT + NUM_MODE_PARTIAL_INT)
+#define NUM_MODE_IPV_INT (NUM_MODE_IP_INT + NUM_MODE_VECTOR_INT)
+
+struct expmed_op_cheap {
+ bool cheap[2][NUM_MODE_IPV_INT];
+};
+
+struct expmed_op_costs {
+ int cost[2][NUM_MODE_IPV_INT];
+};
+
/* Target-dependent globals. */
struct target_expmed {
/* Each entry of ALG_HASH caches alg_code for some integer. This is
@@ -138,23 +158,28 @@ struct target_expmed {
powers of two, so don't use branches; emit the operation instead.
Usually, this will mean that the MD file will emit non-branch
sequences. */
- bool x_sdiv_pow2_cheap[2][NUM_MACHINE_MODES];
- bool x_smod_pow2_cheap[2][NUM_MACHINE_MODES];
+ struct expmed_op_cheap x_sdiv_pow2_cheap;
+ struct expmed_op_cheap x_smod_pow2_cheap;
/* Cost of various pieces of RTL. Note that some of these are indexed by
shift count and some by mode. */
int x_zero_cost[2];
- int x_add_cost[2][NUM_MACHINE_MODES];
- int x_neg_cost[2][NUM_MACHINE_MODES];
- int x_shift_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
- int x_shiftadd_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
- int x_shiftsub0_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
- int x_shiftsub1_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
- int x_mul_cost[2][NUM_MACHINE_MODES];
- int x_sdiv_cost[2][NUM_MACHINE_MODES];
- int x_udiv_cost[2][NUM_MACHINE_MODES];
- int x_mul_widen_cost[2][NUM_MACHINE_MODES];
- int x_mul_highpart_cost[2][NUM_MACHINE_MODES];
+ struct expmed_op_costs x_add_cost;
+ struct expmed_op_costs x_neg_cost;
+ struct expmed_op_costs x_shift_cost[MAX_BITS_PER_WORD];
+ struct expmed_op_costs x_shiftadd_cost[MAX_BITS_PER_WORD];
+ struct expmed_op_costs x_shiftsub0_cost[MAX_BITS_PER_WORD];
+ struct expmed_op_costs x_shiftsub1_cost[MAX_BITS_PER_WORD];
+ struct expmed_op_costs x_mul_cost;
+ struct expmed_op_costs x_sdiv_cost;
+ struct expmed_op_costs x_udiv_cost;
+ int x_mul_widen_cost[2][NUM_MODE_INT];
+ int x_mul_highpart_cost[2][NUM_MODE_INT];
+
+ /* Conversion costs are only defined between two scalar integer modes
+ of different sizes. The first machine mode is the destination mode,
+ and the second is the source mode. */
+ int x_convert_cost[2][NUM_MODE_IP_INT][NUM_MODE_IP_INT];
};
extern struct target_expmed default_target_expmed;
@@ -164,37 +189,473 @@ extern struct target_expmed *this_target_expmed;
#define this_target_expmed (&default_target_expmed)
#endif
-#define alg_hash \
- (this_target_expmed->x_alg_hash)
-#define alg_hash_used_p \
- (this_target_expmed->x_alg_hash_used_p)
-#define sdiv_pow2_cheap \
- (this_target_expmed->x_sdiv_pow2_cheap)
-#define smod_pow2_cheap \
- (this_target_expmed->x_smod_pow2_cheap)
-#define zero_cost \
- (this_target_expmed->x_zero_cost)
-#define add_cost \
- (this_target_expmed->x_add_cost)
-#define neg_cost \
- (this_target_expmed->x_neg_cost)
-#define shift_cost \
- (this_target_expmed->x_shift_cost)
-#define shiftadd_cost \
- (this_target_expmed->x_shiftadd_cost)
-#define shiftsub0_cost \
- (this_target_expmed->x_shiftsub0_cost)
-#define shiftsub1_cost \
- (this_target_expmed->x_shiftsub1_cost)
-#define mul_cost \
- (this_target_expmed->x_mul_cost)
-#define sdiv_cost \
- (this_target_expmed->x_sdiv_cost)
-#define udiv_cost \
- (this_target_expmed->x_udiv_cost)
-#define mul_widen_cost \
- (this_target_expmed->x_mul_widen_cost)
-#define mul_highpart_cost \
- (this_target_expmed->x_mul_highpart_cost)
+/* Return a pointer to the alg_hash_entry at IDX. */
+
+static inline struct alg_hash_entry *
+alg_hash_entry_ptr (int idx)
+{
+ return &this_target_expmed->x_alg_hash[idx];
+}
+
+/* Return true if the x_alg_hash field might have been used. */
+
+static inline bool
+alg_hash_used_p (void)
+{
+ return this_target_expmed->x_alg_hash_used_p;
+}
+
+/* Set whether the x_alg_hash field might have been used. */
+
+static inline void
+set_alg_hash_used_p (bool usedp)
+{
+ this_target_expmed->x_alg_hash_used_p = usedp;
+}
+
+/* Compute an index into the cost arrays by mode class. */
+
+static inline int
+expmed_mode_index (enum machine_mode mode)
+{
+ switch (GET_MODE_CLASS (mode))
+ {
+ case MODE_INT:
+ return mode - MIN_MODE_INT;
+ case MODE_PARTIAL_INT:
+ return mode - MIN_MODE_PARTIAL_INT + NUM_MODE_INT;
+ case MODE_VECTOR_INT:
+ return mode - MIN_MODE_VECTOR_INT + NUM_MODE_IP_INT;
+ default:
+ gcc_unreachable ();
+ }
+}
+
+/* Return a pointer to a boolean contained in EOC indicating whether
+ a particular operation performed in MODE is cheap when optimizing
+ for SPEED. */
+
+static inline bool *
+expmed_op_cheap_ptr (struct expmed_op_cheap *eoc, bool speed,
+ enum machine_mode mode)
+{
+ int idx = expmed_mode_index (mode);
+ return &eoc->cheap[speed][idx];
+}
+
+/* Return a pointer to a cost contained in COSTS when a particular
+ operation is performed in MODE when optimizing for SPEED. */
+
+static inline int *
+expmed_op_cost_ptr (struct expmed_op_costs *costs, bool speed,
+ enum machine_mode mode)
+{
+ int idx = expmed_mode_index (mode);
+ return &costs->cost[speed][idx];
+}
+
+/* Subroutine of {set_,}sdiv_pow2_cheap. Not to be used otherwise. */
+
+static inline bool *
+sdiv_pow2_cheap_ptr (bool speed, enum machine_mode mode)
+{
+ return expmed_op_cheap_ptr (&this_target_expmed->x_sdiv_pow2_cheap,
+ speed, mode);
+}
+
+/* Set whether a signed division by a power of 2 is cheap in MODE
+ when optimizing for SPEED. */
+
+static inline void
+set_sdiv_pow2_cheap (bool speed, enum machine_mode mode, bool cheap_p)
+{
+ *sdiv_pow2_cheap_ptr (speed, mode) = cheap_p;
+}
+
+/* Return whether a signed division by a power of 2 is cheap in MODE
+ when optimizing for SPEED. */
+
+static inline bool
+sdiv_pow2_cheap (bool speed, enum machine_mode mode)
+{
+ return *sdiv_pow2_cheap_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}smod_pow2_cheap. Not to be used otherwise. */
+
+static inline bool *
+smod_pow2_cheap_ptr (bool speed, enum machine_mode mode)
+{
+ return expmed_op_cheap_ptr (&this_target_expmed->x_smod_pow2_cheap,
+ speed, mode);
+}
+
+/* Set whether a signed modulo by a power of 2 is CHEAP in MODE when
+ optimizing for SPEED. */
+
+static inline void
+set_smod_pow2_cheap (bool speed, enum machine_mode mode, bool cheap)
+{
+ *smod_pow2_cheap_ptr (speed, mode) = cheap;
+}
+
+/* Return whether a signed modulo by a power of 2 is cheap in MODE
+ when optimizing for SPEED. */
+
+static inline bool
+smod_pow2_cheap (bool speed, enum machine_mode mode)
+{
+ return *smod_pow2_cheap_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}zero_cost. Not to be used otherwise. */
+
+static inline int *
+zero_cost_ptr (bool speed)
+{
+ return &this_target_expmed->x_zero_cost[speed];
+}
+
+/* Set the COST of loading zero when optimizing for SPEED. */
+
+static inline void
+set_zero_cost (bool speed, int cost)
+{
+ *zero_cost_ptr (speed) = cost;
+}
+
+/* Return the COST of loading zero when optimizing for SPEED. */
+
+static inline int
+zero_cost (bool speed)
+{
+ return *zero_cost_ptr (speed);
+}
+
+/* Subroutine of {set_,}add_cost. Not to be used otherwise. */
+
+static inline int *
+add_cost_ptr (bool speed, enum machine_mode mode)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_add_cost, speed, mode);
+}
+
+/* Set the COST of computing an add in MODE when optimizing for SPEED. */
+
+static inline void
+set_add_cost (bool speed, enum machine_mode mode, int cost)
+{
+ *add_cost_ptr (speed, mode) = cost;
+}
+
+/* Return the cost of computing an add in MODE when optimizing for SPEED. */
+
+static inline int
+add_cost (bool speed, enum machine_mode mode)
+{
+ return *add_cost_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}neg_cost. Not to be used otherwise. */
+
+static inline int *
+neg_cost_ptr (bool speed, enum machine_mode mode)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_neg_cost, speed, mode);
+}
+
+/* Set the COST of computing a negation in MODE when optimizing for SPEED. */
+
+static inline void
+set_neg_cost (bool speed, enum machine_mode mode, int cost)
+{
+ *neg_cost_ptr (speed, mode) = cost;
+}
+
+/* Return the cost of computing a negation in MODE when optimizing for
+ SPEED. */
+
+static inline int
+neg_cost (bool speed, enum machine_mode mode)
+{
+ return *neg_cost_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}shift_cost. Not to be used otherwise. */
+
+static inline int *
+shift_cost_ptr (bool speed, enum machine_mode mode, int bits)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_shift_cost[bits],
+ speed, mode);
+}
+
+/* Set the COST of doing a shift in MODE by BITS when optimizing for SPEED. */
+
+static inline void
+set_shift_cost (bool speed, enum machine_mode mode, int bits, int cost)
+{
+ *shift_cost_ptr (speed, mode, bits) = cost;
+}
+
+/* Return the cost of doing a shift in MODE by BITS when optimizing for
+ SPEED. */
+
+static inline int
+shift_cost (bool speed, enum machine_mode mode, int bits)
+{
+ return *shift_cost_ptr (speed, mode, bits);
+}
+
+/* Subroutine of {set_,}shiftadd_cost. Not to be used otherwise. */
+
+static inline int *
+shiftadd_cost_ptr (bool speed, enum machine_mode mode, int bits)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_shiftadd_cost[bits],
+ speed, mode);
+}
+
+/* Set the COST of doing a shift in MODE by BITS followed by an add when
+ optimizing for SPEED. */
+
+static inline void
+set_shiftadd_cost (bool speed, enum machine_mode mode, int bits, int cost)
+{
+ *shiftadd_cost_ptr (speed, mode, bits) = cost;
+}
+
+/* Return the cost of doing a shift in MODE by BITS followed by an add
+ when optimizing for SPEED. */
+
+static inline int
+shiftadd_cost (bool speed, enum machine_mode mode, int bits)
+{
+ return *shiftadd_cost_ptr (speed, mode, bits);
+}
+
+/* Subroutine of {set_,}shiftsub0_cost. Not to be used otherwise. */
+
+static inline int *
+shiftsub0_cost_ptr (bool speed, enum machine_mode mode, int bits)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub0_cost[bits],
+ speed, mode);
+}
+
+/* Set the COST of doing a shift in MODE by BITS and then subtracting a
+ value when optimizing for SPEED. */
+
+static inline void
+set_shiftsub0_cost (bool speed, enum machine_mode mode, int bits, int cost)
+{
+ *shiftsub0_cost_ptr (speed, mode, bits) = cost;
+}
+
+/* Return the cost of doing a shift in MODE by BITS and then subtracting
+ a value when optimizing for SPEED. */
+
+static inline int
+shiftsub0_cost (bool speed, enum machine_mode mode, int bits)
+{
+ return *shiftsub0_cost_ptr (speed, mode, bits);
+}
+
+/* Subroutine of {set_,}shiftsub1_cost. Not to be used otherwise. */
+
+static inline int *
+shiftsub1_cost_ptr (bool speed, enum machine_mode mode, int bits)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub1_cost[bits],
+ speed, mode);
+}
+
+/* Set the COST of subtracting a shift in MODE by BITS from a value when
+ optimizing for SPEED. */
+
+static inline void
+set_shiftsub1_cost (bool speed, enum machine_mode mode, int bits, int cost)
+{
+ *shiftsub1_cost_ptr (speed, mode, bits) = cost;
+}
+
+/* Return the cost of subtracting a shift in MODE by BITS from a value
+ when optimizing for SPEED. */
+
+static inline int
+shiftsub1_cost (bool speed, enum machine_mode mode, int bits)
+{
+ return *shiftsub1_cost_ptr (speed, mode, bits);
+}
+
+/* Subroutine of {set_,}mul_cost. Not to be used otherwise. */
+
+static inline int *
+mul_cost_ptr (bool speed, enum machine_mode mode)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_mul_cost, speed, mode);
+}
+
+/* Set the COST of doing a multiplication in MODE when optimizing for
+ SPEED. */
+
+static inline void
+set_mul_cost (bool speed, enum machine_mode mode, int cost)
+{
+ *mul_cost_ptr (speed, mode) = cost;
+}
+
+/* Return the cost of doing a multiplication in MODE when optimizing
+ for SPEED. */
+
+static inline int
+mul_cost (bool speed, enum machine_mode mode)
+{
+ return *mul_cost_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}sdiv_cost. Not to be used otherwise. */
+
+static inline int *
+sdiv_cost_ptr (bool speed, enum machine_mode mode)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_sdiv_cost, speed, mode);
+}
+
+/* Set the COST of doing a signed division in MODE when optimizing
+ for SPEED. */
+
+static inline void
+set_sdiv_cost (bool speed, enum machine_mode mode, int cost)
+{
+ *sdiv_cost_ptr (speed, mode) = cost;
+}
+
+/* Return the cost of doing a signed division in MODE when optimizing
+ for SPEED. */
+
+static inline int
+sdiv_cost (bool speed, enum machine_mode mode)
+{
+ return *sdiv_cost_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}udiv_cost. Not to be used otherwise. */
+
+static inline int *
+udiv_cost_ptr (bool speed, enum machine_mode mode)
+{
+ return expmed_op_cost_ptr (&this_target_expmed->x_udiv_cost, speed, mode);
+}
+
+/* Set the COST of doing an unsigned division in MODE when optimizing
+ for SPEED. */
+
+static inline void
+set_udiv_cost (bool speed, enum machine_mode mode, int cost)
+{
+ *udiv_cost_ptr (speed, mode) = cost;
+}
+
+/* Return the cost of doing an unsigned division in MODE when
+ optimizing for SPEED. */
+
+static inline int
+udiv_cost (bool speed, enum machine_mode mode)
+{
+ return *udiv_cost_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}mul_widen_cost. Not to be used otherwise. */
+
+static inline int *
+mul_widen_cost_ptr (bool speed, enum machine_mode mode)
+{
+ gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
+
+ return &this_target_expmed->x_mul_widen_cost[speed][mode - MIN_MODE_INT];
+}
+
+/* Set the COST for computing a widening multiplication in MODE when
+ optimizing for SPEED. */
+
+static inline void
+set_mul_widen_cost (bool speed, enum machine_mode mode, int cost)
+{
+ *mul_widen_cost_ptr (speed, mode) = cost;
+}
+
+/* Return the cost for computing a widening multiplication in MODE when
+ optimizing for SPEED. */
+
+static inline int
+mul_widen_cost (bool speed, enum machine_mode mode)
+{
+ return *mul_widen_cost_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}mul_highpart_cost. Not to be used otherwise. */
+
+static inline int *
+mul_highpart_cost_ptr (bool speed, enum machine_mode mode)
+{
+ gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
+
+ return &this_target_expmed->x_mul_highpart_cost[speed][mode - MIN_MODE_INT];
+}
+
+/* Set the COST for computing the high part of a multiplication in MODE
+ when optimizing for SPEED. */
+
+static inline void
+set_mul_highpart_cost (bool speed, enum machine_mode mode, int cost)
+{
+ *mul_highpart_cost_ptr (speed, mode) = cost;
+}
+
+/* Return the cost for computing the high part of a multiplication in MODE
+ when optimizing for SPEED. */
+
+static inline int
+mul_highpart_cost (bool speed, enum machine_mode mode)
+{
+ return *mul_highpart_cost_ptr (speed, mode);
+}
+
+/* Subroutine of {set_,}convert_cost. Not to be used otherwise. */
+
+static inline int *
+convert_cost_ptr (enum machine_mode to_mode, enum machine_mode from_mode,
+ bool speed)
+{
+ int to_idx = expmed_mode_index (to_mode);
+ int from_idx = expmed_mode_index (from_mode);
+
+ gcc_assert (IN_RANGE (to_idx, 0, NUM_MODE_IP_INT - 1));
+ gcc_assert (IN_RANGE (from_idx, 0, NUM_MODE_IP_INT - 1));
+
+ return &this_target_expmed->x_convert_cost[speed][to_idx][from_idx];
+}
+
+/* Set the COST for converting from FROM_MODE to TO_MODE when optimizing
+ for SPEED. */
+
+static inline void
+set_convert_cost (enum machine_mode to_mode, enum machine_mode from_mode,
+ bool speed, int cost)
+{
+ *convert_cost_ptr (to_mode, from_mode, speed) = cost;
+}
+
+/* Return the cost for converting from FROM_MODE to TO_MODE when optimizing
+ for SPEED. */
+
+static inline int
+convert_cost (enum machine_mode to_mode, enum machine_mode from_mode,
+ bool speed)
+{
+ return *convert_cost_ptr (to_mode, from_mode, speed);
+}
+extern int mult_by_coeff_cost (HOST_WIDE_INT, enum machine_mode, bool);
#endif
diff --git a/gcc/expr.c b/gcc/expr.c
index 9a9af5b9903..4e7eb5fbf4c 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -45,7 +45,6 @@ along with GCC; see the file COPYING3. If not see
#include "intl.h"
#include "tm_p.h"
#include "tree-iterator.h"
-#include "tree-pass.h"
#include "tree-flow.h"
#include "target.h"
#include "common/common-target.h"
@@ -746,7 +745,7 @@ convert_modes (enum machine_mode mode, enum machine_mode oldmode, rtx x, int uns
&& GET_MODE_PRECISION (mode) <= HOST_BITS_PER_WIDE_INT)
|| (GET_MODE_CLASS (mode) == MODE_INT
&& GET_MODE_CLASS (oldmode) == MODE_INT
- && (GET_CODE (x) == CONST_DOUBLE
+ && (CONST_DOUBLE_AS_INT_P (x)
|| (GET_MODE_PRECISION (mode) <= GET_MODE_PRECISION (oldmode)
&& ((MEM_P (x) && ! MEM_VOLATILE_P (x)
&& direct_load[(int) mode])
@@ -3829,7 +3828,7 @@ fixup_args_size_notes (rtx prev, rtx last, int end_args_size)
add_reg_note (insn, REG_ARGS_SIZE, GEN_INT (args_size));
#ifdef STACK_GROWS_DOWNWARD
- this_delta = -this_delta;
+ this_delta = -(unsigned HOST_WIDE_INT) this_delta;
#endif
args_size -= this_delta;
}
@@ -4591,7 +4590,7 @@ expand_assignment (tree to, tree from, bool nontemporal)
|| TREE_CODE (to) == TARGET_MEM_REF)
&& mode != BLKmode
&& !mem_ref_refers_to_non_mem_p (to)
- && ((align = get_object_or_type_alignment (to))
+ && ((align = get_object_alignment (to))
< GET_MODE_ALIGNMENT (mode))
&& (((icode = optab_handler (movmisalign_optab, mode))
!= CODE_FOR_nothing)
@@ -4653,7 +4652,7 @@ expand_assignment (tree to, tree from, bool nontemporal)
mode = TYPE_MODE (TREE_TYPE (tem));
if (TREE_CODE (tem) == MEM_REF
&& mode != BLKmode
- && ((align = get_object_or_type_alignment (tem))
+ && ((align = get_object_alignment (tem))
< GET_MODE_ALIGNMENT (mode))
&& ((icode = optab_handler (movmisalign_optab, mode))
!= CODE_FOR_nothing))
@@ -6131,7 +6130,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size)
constructor_elt *ce;
int i;
int need_to_clear;
- int icode = 0;
+ int icode = CODE_FOR_nothing;
tree elttype = TREE_TYPE (type);
int elt_size = tree_low_cst (TYPE_SIZE (elttype), 1);
enum machine_mode eltmode = TYPE_MODE (elttype);
@@ -6710,47 +6709,6 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize,
return exp;
}
-/* Given an expression EXP that may be a COMPONENT_REF, an ARRAY_REF or an
- ARRAY_RANGE_REF, look for whether EXP or any nested component-refs within
- EXP is marked as PACKED. */
-
-bool
-contains_packed_reference (const_tree exp)
-{
- bool packed_p = false;
-
- while (1)
- {
- switch (TREE_CODE (exp))
- {
- case COMPONENT_REF:
- {
- tree field = TREE_OPERAND (exp, 1);
- packed_p = DECL_PACKED (field)
- || TYPE_PACKED (TREE_TYPE (field))
- || TYPE_PACKED (TREE_TYPE (exp));
- if (packed_p)
- goto done;
- }
- break;
-
- case BIT_FIELD_REF:
- case ARRAY_REF:
- case ARRAY_RANGE_REF:
- case REALPART_EXPR:
- case IMAGPART_EXPR:
- case VIEW_CONVERT_EXPR:
- break;
-
- default:
- goto done;
- }
- exp = TREE_OPERAND (exp, 0);
- }
- done:
- return packed_p;
-}
-
/* Return a tree of sizetype representing the size, in bytes, of the element
of EXP, an ARRAY_REF or an ARRAY_RANGE_REF. */
@@ -8554,9 +8512,14 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode,
return expand_divmod (0, code, mode, op0, op1, target, unsignedp);
case RDIV_EXPR:
- case MULT_HIGHPART_EXPR:
goto binop;
+ case MULT_HIGHPART_EXPR:
+ expand_operands (treeop0, treeop1, subtarget, &op0, &op1, EXPAND_NORMAL);
+ temp = expand_mult_highpart (mode, op0, op1, target, unsignedp);
+ gcc_assert (temp);
+ return temp;
+
case TRUNC_MOD_EXPR:
case FLOOR_MOD_EXPR:
case CEIL_MOD_EXPR:
@@ -8917,29 +8880,15 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode,
case VEC_WIDEN_MULT_HI_EXPR:
case VEC_WIDEN_MULT_LO_EXPR:
- {
- tree oprnd0 = treeop0;
- tree oprnd1 = treeop1;
-
- expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
- target = expand_widen_pattern_expr (ops, op0, op1, NULL_RTX,
- target, unsignedp);
- gcc_assert (target);
- return target;
- }
-
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
case VEC_WIDEN_LSHIFT_HI_EXPR:
case VEC_WIDEN_LSHIFT_LO_EXPR:
- {
- tree oprnd0 = treeop0;
- tree oprnd1 = treeop1;
-
- expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
- target = expand_widen_pattern_expr (ops, op0, op1, NULL_RTX,
- target, unsignedp);
- gcc_assert (target);
- return target;
- }
+ expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
+ target = expand_widen_pattern_expr (ops, op0, op1, NULL_RTX,
+ target, unsignedp);
+ gcc_assert (target);
+ return target;
case VEC_PACK_TRUNC_EXPR:
case VEC_PACK_SAT_EXPR:
@@ -9162,7 +9111,9 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
}
if (TREE_CODE_CLASS (code) == tcc_unary
- || code == COMPONENT_REF || code == INDIRECT_REF)
+ || code == BIT_FIELD_REF
+ || code == COMPONENT_REF
+ || code == INDIRECT_REF)
return expand_expr (treeop0, const0_rtx, VOIDmode,
modifier);
@@ -9174,13 +9125,6 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
expand_expr (treeop1, const0_rtx, VOIDmode, modifier);
return const0_rtx;
}
- else if (code == BIT_FIELD_REF)
- {
- expand_expr (treeop0, const0_rtx, VOIDmode, modifier);
- expand_expr (treeop1, const0_rtx, VOIDmode, modifier);
- expand_expr (treeop2, const0_rtx, VOIDmode, modifier);
- return const0_rtx;
- }
target = 0;
}
@@ -9215,8 +9159,13 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
base variable. This unnecessarily allocates a pseudo, see how we can
reuse it, if partition base vars have it set already. */
if (!currently_expanding_to_rtl)
- return expand_expr_real_1 (SSA_NAME_VAR (exp), target, tmode, modifier,
- NULL);
+ {
+ tree var = SSA_NAME_VAR (exp);
+ if (var && DECL_RTL_SET_P (var))
+ return DECL_RTL (var);
+ return gen_raw_REG (TYPE_MODE (TREE_TYPE (exp)),
+ LAST_VIRTUAL_REGISTER + 1);
+ }
g = get_gimple_for_ssa_name (exp);
/* For EXPAND_INITIALIZER try harder to get something simpler. */
@@ -9506,7 +9455,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
temp = gen_rtx_MEM (mode, op0);
set_mem_attributes (temp, exp, 0);
set_mem_addr_space (temp, as);
- align = get_object_or_type_alignment (exp);
+ align = get_object_alignment (exp);
if (modifier != EXPAND_WRITE
&& mode != BLKmode
&& align < GET_MODE_ALIGNMENT (mode)
@@ -9580,7 +9529,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
gimple_assign_rhs1 (def_stmt), mask);
TREE_OPERAND (exp, 0) = base;
}
- align = get_object_or_type_alignment (exp);
+ align = get_object_alignment (exp);
op0 = expand_expr (base, NULL_RTX, VOIDmode, EXPAND_SUM);
op0 = memory_address_addr_space (address_mode, op0, as);
if (!integer_zerop (TREE_OPERAND (exp, 1)))
@@ -10850,8 +10799,7 @@ do_store_flag (sepops ops, rtx target, enum machine_mode mode)
0 otherwise (i.e. if there is no casesi instruction). */
int
try_casesi (tree index_type, tree index_expr, tree minval, tree range,
- rtx table_label ATTRIBUTE_UNUSED, rtx default_label,
- rtx fallback_label ATTRIBUTE_UNUSED)
+ rtx table_label, rtx default_label, rtx fallback_label)
{
struct expand_operand ops[5];
enum machine_mode index_mode = SImode;
@@ -11063,6 +11011,9 @@ build_personality_function (const char *lang)
case UI_TARGET:
unwind_and_version = "_v0";
break;
+ case UI_SEH:
+ unwind_and_version = "_seh0";
+ break;
default:
gcc_unreachable ();
}
diff --git a/gcc/expr.h b/gcc/expr.h
index 7444baf166d..68cdb8d9109 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -369,11 +369,6 @@ rtx set_storage_via_libcall (rtx, rtx, rtx, bool);
extern bool set_storage_via_setmem (rtx, rtx, rtx, unsigned int,
unsigned int, HOST_WIDE_INT);
-/* Determine whether the LEN bytes can be moved by using several move
- instructions. Return nonzero if a call to move_by_pieces should
- succeed. */
-extern int can_move_by_pieces (unsigned HOST_WIDE_INT, unsigned int);
-
extern unsigned HOST_WIDE_INT move_by_pieces_ninsns (unsigned HOST_WIDE_INT,
unsigned int,
unsigned int);
diff --git a/gcc/final.c b/gcc/final.c
index 5326018d0bf..dddb78a0185 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -74,7 +74,6 @@ along with GCC; see the file COPYING3. If not see
#include "expr.h"
#include "tree-pass.h"
#include "tree-flow.h"
-#include "timevar.h"
#include "cgraph.h"
#include "coverage.h"
#include "df.h"
@@ -716,6 +715,7 @@ compute_alignments (void)
if (dump_file)
{
+ dump_reg_info (dump_file);
dump_flow_info (dump_file, TDF_DETAILS);
flow_loops_dump (dump_file, NULL, 1);
}
@@ -739,7 +739,8 @@ compute_alignments (void)
{
if (dump_file)
fprintf(dump_file, "BB %4i freq %4i loop %2i loop_depth %2i skipped.\n",
- bb->index, bb->frequency, bb->loop_father->num, bb->loop_depth);
+ bb->index, bb->frequency, bb->loop_father->num,
+ bb_loop_depth (bb));
continue;
}
max_log = LABEL_ALIGN (label);
@@ -756,7 +757,7 @@ compute_alignments (void)
{
fprintf(dump_file, "BB %4i freq %4i loop %2i loop_depth %2i fall %4i branch %4i",
bb->index, bb->frequency, bb->loop_father->num,
- bb->loop_depth,
+ bb_loop_depth (bb),
fallthru_frequency, branch_frequency);
if (!bb->loop_father->inner && bb->loop_father->num)
fprintf (dump_file, " inner_loop");
@@ -1799,7 +1800,7 @@ dump_basic_block_info (FILE *file, rtx insn, basic_block *start_to_bb,
fprintf (file, "\n%s PRED:", ASM_COMMENT_START);
FOR_EACH_EDGE (e, ei, bb->preds)
{
- dump_edge_info (file, e, 0);
+ dump_edge_info (file, e, TDF_DETAILS, 0);
}
fprintf (file, "\n");
}
@@ -1812,7 +1813,7 @@ dump_basic_block_info (FILE *file, rtx insn, basic_block *start_to_bb,
fprintf (asm_out_file, "%s SUCC:", ASM_COMMENT_START);
FOR_EACH_EDGE (e, ei, bb->succs)
{
- dump_edge_info (asm_out_file, e, 1);
+ dump_edge_info (asm_out_file, e, TDF_DETAILS, 1);
}
fprintf (file, "\n");
}
@@ -1825,7 +1826,6 @@ void
final (rtx first, FILE *file, int optimize_p)
{
rtx insn, next;
- int max_uid = 0;
int seen = 0;
/* Used for -dA dump. */
@@ -1836,11 +1836,9 @@ final (rtx first, FILE *file, int optimize_p)
last_ignored_compare = 0;
+#ifdef HAVE_cc0
for (insn = first; insn; insn = NEXT_INSN (insn))
{
- if (INSN_UID (insn) > max_uid) /* Find largest UID. */
- max_uid = INSN_UID (insn);
-#ifdef HAVE_cc0
/* If CC tracking across branches is enabled, record the insn which
jumps to each branch only reached from one place. */
if (optimize_p && JUMP_P (insn))
@@ -1851,8 +1849,8 @@ final (rtx first, FILE *file, int optimize_p)
LABEL_REFS (lab) = insn;
}
}
-#endif
}
+#endif
init_recog ();
@@ -1866,11 +1864,13 @@ final (rtx first, FILE *file, int optimize_p)
start_to_bb = XCNEWVEC (basic_block, bb_map_size);
end_to_bb = XCNEWVEC (basic_block, bb_map_size);
- FOR_EACH_BB_REVERSE (bb)
- {
- start_to_bb[INSN_UID (BB_HEAD (bb))] = bb;
- end_to_bb[INSN_UID (BB_END (bb))] = bb;
- }
+ /* There is no cfg for a thunk. */
+ if (!cfun->is_thunk)
+ FOR_EACH_BB_REVERSE (bb)
+ {
+ start_to_bb[INSN_UID (BB_HEAD (bb))] = bb;
+ end_to_bb[INSN_UID (BB_END (bb))] = bb;
+ }
}
/* Output the insns. */
@@ -2750,11 +2750,16 @@ final_scan_insn (rtx insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
insn_code_number = recog_memoized (insn);
cleanup_subreg_operands (insn);
- /* Dump the insn in the assembly for debugging. */
+ /* Dump the insn in the assembly for debugging (-dAP).
+ If the final dump is requested as slim RTL, dump slim
+ RTL to the assembly file also. */
if (flag_dump_rtl_in_asm)
{
print_rtx_head = ASM_COMMENT_START;
- print_rtl_single (asm_out_file, insn);
+ if (! (dump_flags & TDF_SLIM))
+ print_rtl_single (asm_out_file, insn);
+ else
+ dump_insn_slim (asm_out_file, insn);
print_rtx_head = "";
}
@@ -3341,6 +3346,72 @@ output_asm_operand_names (rtx *operands, int *oporder, int nops)
}
}
+#ifdef ASSEMBLER_DIALECT
+/* Helper function to parse assembler dialects in the asm string.
+ This is called from output_asm_insn and asm_fprintf. */
+static const char *
+do_assembler_dialects (const char *p, int *dialect)
+{
+ char c = *(p - 1);
+
+ switch (c)
+ {
+ case '{':
+ {
+ int i;
+
+ if (*dialect)
+ output_operand_lossage ("nested assembly dialect alternatives");
+ else
+ *dialect = 1;
+
+ /* If we want the first dialect, do nothing. Otherwise, skip
+ DIALECT_NUMBER of strings ending with '|'. */
+ for (i = 0; i < dialect_number; i++)
+ {
+ while (*p && *p != '}' && *p++ != '|')
+ ;
+ if (*p == '}')
+ break;
+ }
+
+ if (*p == '\0')
+ output_operand_lossage ("unterminated assembly dialect alternative");
+ }
+ break;
+
+ case '|':
+ if (*dialect)
+ {
+ /* Skip to close brace. */
+ do
+ {
+ if (*p == '\0')
+ {
+ output_operand_lossage ("unterminated assembly dialect alternative");
+ break;
+ }
+ }
+ while (*p++ != '}');
+ *dialect = 0;
+ }
+ else
+ putc (c, asm_out_file);
+ break;
+
+ case '}':
+ if (! *dialect)
+ putc (c, asm_out_file);
+ *dialect = 0;
+ break;
+ default:
+ gcc_unreachable ();
+ }
+
+ return p;
+}
+#endif
+
/* Output text from TEMPLATE to the assembler output file,
obeying %-directions to substitute operands taken from
the vector OPERANDS.
@@ -3407,54 +3478,9 @@ output_asm_insn (const char *templ, rtx *operands)
#ifdef ASSEMBLER_DIALECT
case '{':
- {
- int i;
-
- if (dialect)
- output_operand_lossage ("nested assembly dialect alternatives");
- else
- dialect = 1;
-
- /* If we want the first dialect, do nothing. Otherwise, skip
- DIALECT_NUMBER of strings ending with '|'. */
- for (i = 0; i < dialect_number; i++)
- {
- while (*p && *p != '}' && *p++ != '|')
- ;
- if (*p == '}')
- break;
- if (*p == '|')
- p++;
- }
-
- if (*p == '\0')
- output_operand_lossage ("unterminated assembly dialect alternative");
- }
- break;
-
- case '|':
- if (dialect)
- {
- /* Skip to close brace. */
- do
- {
- if (*p == '\0')
- {
- output_operand_lossage ("unterminated assembly dialect alternative");
- break;
- }
- }
- while (*p++ != '}');
- dialect = 0;
- }
- else
- putc (c, asm_out_file);
- break;
-
case '}':
- if (! dialect)
- putc (c, asm_out_file);
- dialect = 0;
+ case '|':
+ p = do_assembler_dialects (p, &dialect);
break;
#endif
@@ -3913,6 +3939,9 @@ asm_fprintf (FILE *file, const char *p, ...)
{
char buf[10];
char *q, c;
+#ifdef ASSEMBLER_DIALECT
+ int dialect = 0;
+#endif
va_list argptr;
va_start (argptr, p);
@@ -3924,29 +3953,9 @@ asm_fprintf (FILE *file, const char *p, ...)
{
#ifdef ASSEMBLER_DIALECT
case '{':
- {
- int i;
-
- /* If we want the first dialect, do nothing. Otherwise, skip
- DIALECT_NUMBER of strings ending with '|'. */
- for (i = 0; i < dialect_number; i++)
- {
- while (*p && *p++ != '|')
- ;
-
- if (*p == '|')
- p++;
- }
- }
- break;
-
- case '|':
- /* Skip to close brace. */
- while (*p && *p++ != '}')
- ;
- break;
-
case '}':
+ case '|':
+ p = do_assembler_dialects (p, &dialect);
break;
#endif
@@ -4368,7 +4377,7 @@ struct rtl_opt_pass pass_shorten_branches =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_FINAL, /* tv_id */
+ TV_SHORTEN_BRANCH, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/fixed-value.c b/gcc/fixed-value.c
index 97aa8b5263b..9a34bc53de1 100644
--- a/gcc/fixed-value.c
+++ b/gcc/fixed-value.c
@@ -111,13 +111,11 @@ fixed_from_string (FIXED_VALUE_TYPE *f, const char *str, enum machine_mode mode)
/* From the spec, we need to evaluate 1 to the maximal value. */
f->data.low = -1;
f->data.high = -1;
- f->data = double_int_ext (f->data,
- GET_MODE_FBIT (f->mode)
- + GET_MODE_IBIT (f->mode), 1);
+ f->data = f->data.zext (GET_MODE_FBIT (f->mode)
+ + GET_MODE_IBIT (f->mode));
}
else
- f->data = double_int_ext (f->data,
- SIGNED_FIXED_POINT_MODE_P (f->mode)
+ f->data = f->data.ext (SIGNED_FIXED_POINT_MODE_P (f->mode)
+ GET_MODE_FBIT (f->mode)
+ GET_MODE_IBIT (f->mode),
UNSIGNED_FIXED_POINT_MODE_P (f->mode));
@@ -159,8 +157,8 @@ fixed_saturate1 (enum machine_mode mode, double_int a, double_int *f,
double_int max;
max.low = -1;
max.high = -1;
- max = double_int_ext (max, i_f_bits, 1);
- if (double_int_cmp (a, max, 1) == 1)
+ max = max.zext (i_f_bits);
+ if (a.ugt (max))
{
if (sat_p)
*f = max;
@@ -173,21 +171,19 @@ fixed_saturate1 (enum machine_mode mode, double_int a, double_int *f,
double_int max, min;
max.high = -1;
max.low = -1;
- max = double_int_ext (max, i_f_bits, 1);
+ max = max.zext (i_f_bits);
min.high = 0;
min.low = 1;
- lshift_double (min.low, min.high, i_f_bits,
- HOST_BITS_PER_DOUBLE_INT,
- &min.low, &min.high, 1);
- min = double_int_ext (min, 1 + i_f_bits, 0);
- if (double_int_cmp (a, max, 0) == 1)
+ min = min.alshift (i_f_bits, HOST_BITS_PER_DOUBLE_INT);
+ min = min.sext (1 + i_f_bits);
+ if (a.sgt (max))
{
if (sat_p)
*f = max;
else
overflow_p = true;
}
- else if (double_int_cmp (a, min, 0) == -1)
+ else if (a.slt (min))
{
if (sat_p)
*f = min;
@@ -221,10 +217,10 @@ fixed_saturate2 (enum machine_mode mode, double_int a_high, double_int a_low,
max_r.low = 0;
max_s.high = -1;
max_s.low = -1;
- max_s = double_int_ext (max_s, i_f_bits, 1);
- if (double_int_cmp (a_high, max_r, 1) == 1
- || (double_int_equal_p (a_high, max_r) &&
- double_int_cmp (a_low, max_s, 1) == 1))
+ max_s = max_s.zext (i_f_bits);
+ if (a_high.ugt (max_r)
+ || (a_high == max_r &&
+ a_low.ugt (max_s)))
{
if (sat_p)
*f = max_s;
@@ -239,27 +235,25 @@ fixed_saturate2 (enum machine_mode mode, double_int a_high, double_int a_low,
max_r.low = 0;
max_s.high = -1;
max_s.low = -1;
- max_s = double_int_ext (max_s, i_f_bits, 1);
+ max_s = max_s.zext (i_f_bits);
min_r.high = -1;
min_r.low = -1;
min_s.high = 0;
min_s.low = 1;
- lshift_double (min_s.low, min_s.high, i_f_bits,
- HOST_BITS_PER_DOUBLE_INT,
- &min_s.low, &min_s.high, 1);
- min_s = double_int_ext (min_s, 1 + i_f_bits, 0);
- if (double_int_cmp (a_high, max_r, 0) == 1
- || (double_int_equal_p (a_high, max_r) &&
- double_int_cmp (a_low, max_s, 1) == 1))
+ min_s = min_s.alshift (i_f_bits, HOST_BITS_PER_DOUBLE_INT);
+ min_s = min_s.sext (1 + i_f_bits);
+ if (a_high.sgt (max_r)
+ || (a_high == max_r &&
+ a_low.ugt (max_s)))
{
if (sat_p)
*f = max_s;
else
overflow_p = true;
}
- else if (double_int_cmp (a_high, min_r, 0) == -1
- || (double_int_equal_p (a_high, min_r) &&
- double_int_cmp (a_low, min_s, 1) == -1))
+ else if (a_high.slt (min_r)
+ || (a_high == min_r &&
+ a_low.ult (min_s)))
{
if (sat_p)
*f = min_s;
@@ -297,19 +291,19 @@ do_fixed_add (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
/* This was a conditional expression but it triggered a bug in
Sun C 5.5. */
if (subtract_p)
- temp = double_int_neg (b->data);
+ temp = -b->data;
else
temp = b->data;
unsigned_p = UNSIGNED_FIXED_POINT_MODE_P (a->mode);
i_f_bits = GET_MODE_IBIT (a->mode) + GET_MODE_FBIT (a->mode);
f->mode = a->mode;
- f->data = double_int_add (a->data, temp);
+ f->data = a->data + temp;
if (unsigned_p) /* Unsigned type. */
{
if (subtract_p) /* Unsigned subtraction. */
{
- if (double_int_cmp (a->data, b->data, 1) == -1)
+ if (a->data.ult (b->data))
{
if (sat_p)
{
@@ -322,9 +316,9 @@ do_fixed_add (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
}
else /* Unsigned addition. */
{
- f->data = double_int_ext (f->data, i_f_bits, 1);
- if (double_int_cmp (f->data, a->data, 1) == -1
- || double_int_cmp (f->data, b->data, 1) == -1)
+ f->data = f->data.zext (i_f_bits);
+ if (f->data.ult (a->data)
+ || f->data.ult (b->data))
{
if (sat_p)
{
@@ -353,22 +347,17 @@ do_fixed_add (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
{
f->data.low = 1;
f->data.high = 0;
- lshift_double (f->data.low, f->data.high, i_f_bits,
- HOST_BITS_PER_DOUBLE_INT,
- &f->data.low, &f->data.high, 1);
+ f->data = f->data.alshift (i_f_bits, HOST_BITS_PER_DOUBLE_INT);
if (get_fixed_sign_bit (a->data, i_f_bits) == 0)
{
- double_int one;
- one.low = 1;
- one.high = 0;
- f->data = double_int_sub (f->data, one);
+ --f->data;
}
}
else
overflow_p = true;
}
}
- f->data = double_int_ext (f->data, (!unsigned_p) + i_f_bits, unsigned_p);
+ f->data = f->data.ext ((!unsigned_p) + i_f_bits, unsigned_p);
return overflow_p;
}
@@ -386,11 +375,10 @@ do_fixed_multiply (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
f->mode = a->mode;
if (GET_MODE_PRECISION (f->mode) <= HOST_BITS_PER_WIDE_INT)
{
- f->data = double_int_mul (a->data, b->data);
- lshift_double (f->data.low, f->data.high,
- (-GET_MODE_FBIT (f->mode)),
+ f->data = a->data * b->data;
+ f->data = f->data.lshift ((-GET_MODE_FBIT (f->mode)),
HOST_BITS_PER_DOUBLE_INT,
- &f->data.low, &f->data.high, !unsigned_p);
+ !unsigned_p);
overflow_p = fixed_saturate1 (f->mode, f->data, &f->data, sat_p);
}
else
@@ -412,43 +400,43 @@ do_fixed_multiply (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
b_low.high = 0;
/* Perform four multiplications. */
- low_low = double_int_mul (a_low, b_low);
- low_high = double_int_mul (a_low, b_high);
- high_low = double_int_mul (a_high, b_low);
- high_high = double_int_mul (a_high, b_high);
+ low_low = a_low * b_low;
+ low_high = a_low * b_high;
+ high_low = a_high * b_low;
+ high_high = a_high * b_high;
/* Accumulate four results to {r, s}. */
temp1.high = high_low.low;
temp1.low = 0;
- s = double_int_add (low_low, temp1);
- if (double_int_cmp (s, low_low, 1) == -1
- || double_int_cmp (s, temp1, 1) == -1)
+ s = low_low + temp1;
+ if (s.ult (low_low)
+ || s.ult (temp1))
carry ++; /* Carry */
temp1.high = s.high;
temp1.low = s.low;
temp2.high = low_high.low;
temp2.low = 0;
- s = double_int_add (temp1, temp2);
- if (double_int_cmp (s, temp1, 1) == -1
- || double_int_cmp (s, temp2, 1) == -1)
+ s = temp1 + temp2;
+ if (s.ult (temp1)
+ || s.ult (temp2))
carry ++; /* Carry */
temp1.low = high_low.high;
temp1.high = 0;
- r = double_int_add (high_high, temp1);
+ r = high_high + temp1;
temp1.low = low_high.high;
temp1.high = 0;
- r = double_int_add (r, temp1);
+ r += temp1;
temp1.low = carry;
temp1.high = 0;
- r = double_int_add (r, temp1);
+ r += temp1;
/* We need to subtract b from r, if a < 0. */
if (!unsigned_p && a->data.high < 0)
- r = double_int_sub (r, b->data);
+ r -= b->data;
/* We need to subtract a from r, if b < 0. */
if (!unsigned_p && b->data.high < 0)
- r = double_int_sub (r, a->data);
+ r -= a->data;
/* Shift right the result by FBIT. */
if (GET_MODE_FBIT (f->mode) == HOST_BITS_PER_DOUBLE_INT)
@@ -470,29 +458,23 @@ do_fixed_multiply (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
}
else
{
- lshift_double (s.low, s.high,
- (-GET_MODE_FBIT (f->mode)),
- HOST_BITS_PER_DOUBLE_INT,
- &s.low, &s.high, 0);
- lshift_double (r.low, r.high,
- (HOST_BITS_PER_DOUBLE_INT
+ s = s.llshift ((-GET_MODE_FBIT (f->mode)), HOST_BITS_PER_DOUBLE_INT);
+ f->data = r.llshift ((HOST_BITS_PER_DOUBLE_INT
- GET_MODE_FBIT (f->mode)),
- HOST_BITS_PER_DOUBLE_INT,
- &f->data.low, &f->data.high, 0);
+ HOST_BITS_PER_DOUBLE_INT);
f->data.low = f->data.low | s.low;
f->data.high = f->data.high | s.high;
s.low = f->data.low;
s.high = f->data.high;
- lshift_double (r.low, r.high,
- (-GET_MODE_FBIT (f->mode)),
+ r = r.lshift ((-GET_MODE_FBIT (f->mode)),
HOST_BITS_PER_DOUBLE_INT,
- &r.low, &r.high, !unsigned_p);
+ !unsigned_p);
}
overflow_p = fixed_saturate2 (f->mode, r, s, &f->data, sat_p);
}
- f->data = double_int_ext (f->data, (!unsigned_p) + i_f_bits, unsigned_p);
+ f->data = f->data.ext ((!unsigned_p) + i_f_bits, unsigned_p);
return overflow_p;
}
@@ -510,11 +492,10 @@ do_fixed_divide (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
f->mode = a->mode;
if (GET_MODE_PRECISION (f->mode) <= HOST_BITS_PER_WIDE_INT)
{
- lshift_double (a->data.low, a->data.high,
- GET_MODE_FBIT (f->mode),
+ f->data = a->data.lshift (GET_MODE_FBIT (f->mode),
HOST_BITS_PER_DOUBLE_INT,
- &f->data.low, &f->data.high, !unsigned_p);
- f->data = double_int_div (f->data, b->data, unsigned_p, TRUNC_DIV_EXPR);
+ !unsigned_p);
+ f->data = f->data.div (b->data, unsigned_p, TRUNC_DIV_EXPR);
overflow_p = fixed_saturate1 (f->mode, f->data, &f->data, sat_p);
}
else
@@ -527,7 +508,7 @@ do_fixed_divide (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
/* If a < 0, negate a. */
if (!unsigned_p && a->data.high < 0)
{
- pos_a = double_int_neg (a->data);
+ pos_a = -a->data;
num_of_neg ++;
}
else
@@ -536,7 +517,7 @@ do_fixed_divide (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
/* If b < 0, negate b. */
if (!unsigned_p && b->data.high < 0)
{
- pos_b = double_int_neg (b->data);
+ pos_b = -b->data;
num_of_neg ++;
}
else
@@ -551,24 +532,15 @@ do_fixed_divide (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
}
else
{
- lshift_double (pos_a.low, pos_a.high,
- GET_MODE_FBIT (f->mode),
- HOST_BITS_PER_DOUBLE_INT,
- &s.low, &s.high, 0);
- lshift_double (pos_a.low, pos_a.high,
- - (HOST_BITS_PER_DOUBLE_INT
+ s = pos_a.llshift (GET_MODE_FBIT (f->mode), HOST_BITS_PER_DOUBLE_INT);
+ r = pos_a.llshift (- (HOST_BITS_PER_DOUBLE_INT
- GET_MODE_FBIT (f->mode)),
- HOST_BITS_PER_DOUBLE_INT,
- &r.low, &r.high, 0);
+ HOST_BITS_PER_DOUBLE_INT);
}
/* Divide r by pos_b to quo_r. The remainder is in mod. */
- div_and_round_double (TRUNC_DIV_EXPR, 1, r.low, r.high, pos_b.low,
- pos_b.high, &quo_r.low, &quo_r.high, &mod.low,
- &mod.high);
-
- quo_s.high = 0;
- quo_s.low = 0;
+ quo_r = r.divmod (pos_b, 1, TRUNC_DIV_EXPR, &mod);
+ quo_s = double_int_zero;
for (i = 0; i < HOST_BITS_PER_DOUBLE_INT; i++)
{
@@ -576,37 +548,34 @@ do_fixed_divide (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
int leftmost_mod = (mod.high < 0);
/* Shift left mod by 1 bit. */
- lshift_double (mod.low, mod.high, 1, HOST_BITS_PER_DOUBLE_INT,
- &mod.low, &mod.high, 0);
+ mod = mod.llshift (1, HOST_BITS_PER_DOUBLE_INT);
/* Test the leftmost bit of s to add to mod. */
if (s.high < 0)
mod.low += 1;
/* Shift left quo_s by 1 bit. */
- lshift_double (quo_s.low, quo_s.high, 1, HOST_BITS_PER_DOUBLE_INT,
- &quo_s.low, &quo_s.high, 0);
+ quo_s = quo_s.llshift (1, HOST_BITS_PER_DOUBLE_INT);
/* Try to calculate (mod - pos_b). */
- temp = double_int_sub (mod, pos_b);
+ temp = mod - pos_b;
- if (leftmost_mod == 1 || double_int_cmp (mod, pos_b, 1) != -1)
+ if (leftmost_mod == 1 || mod.ucmp (pos_b) != -1)
{
quo_s.low += 1;
mod = temp;
}
/* Shift left s by 1 bit. */
- lshift_double (s.low, s.high, 1, HOST_BITS_PER_DOUBLE_INT,
- &s.low, &s.high, 0);
+ s = s.llshift (1, HOST_BITS_PER_DOUBLE_INT);
}
if (num_of_neg == 1)
{
- quo_s = double_int_neg (quo_s);
+ quo_s = -quo_s;
if (quo_s.high == 0 && quo_s.low == 0)
- quo_r = double_int_neg (quo_r);
+ quo_r = -quo_r;
else
{
quo_r.low = ~quo_r.low;
@@ -618,7 +587,7 @@ do_fixed_divide (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
overflow_p = fixed_saturate2 (f->mode, quo_r, quo_s, &f->data, sat_p);
}
- f->data = double_int_ext (f->data, (!unsigned_p) + i_f_bits, unsigned_p);
+ f->data = f->data.ext ((!unsigned_p) + i_f_bits, unsigned_p);
return overflow_p;
}
@@ -643,10 +612,9 @@ do_fixed_shift (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
if (GET_MODE_PRECISION (f->mode) <= HOST_BITS_PER_WIDE_INT || (!left_p))
{
- lshift_double (a->data.low, a->data.high,
- left_p ? b->data.low : (-b->data.low),
+ f->data = a->data.lshift (left_p ? b->data.low : (-b->data.low),
HOST_BITS_PER_DOUBLE_INT,
- &f->data.low, &f->data.high, !unsigned_p);
+ !unsigned_p);
if (left_p) /* Only left shift saturates. */
overflow_p = fixed_saturate1 (f->mode, f->data, &f->data, sat_p);
}
@@ -661,23 +629,20 @@ do_fixed_shift (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a,
}
else
{
- lshift_double (a->data.low, a->data.high,
- b->data.low,
+ temp_low = a->data.lshift (b->data.low,
HOST_BITS_PER_DOUBLE_INT,
- &temp_low.low, &temp_low.high, !unsigned_p);
+ !unsigned_p);
/* Logical shift right to temp_high. */
- lshift_double (a->data.low, a->data.high,
- b->data.low - HOST_BITS_PER_DOUBLE_INT,
- HOST_BITS_PER_DOUBLE_INT,
- &temp_high.low, &temp_high.high, 0);
+ temp_high = a->data.llshift (b->data.low - HOST_BITS_PER_DOUBLE_INT,
+ HOST_BITS_PER_DOUBLE_INT);
}
if (!unsigned_p && a->data.high < 0) /* Signed-extend temp_high. */
- temp_high = double_int_ext (temp_high, b->data.low, unsigned_p);
+ temp_high = temp_high.ext (b->data.low, unsigned_p);
f->data = temp_low;
overflow_p = fixed_saturate2 (f->mode, temp_high, temp_low, &f->data,
sat_p);
}
- f->data = double_int_ext (f->data, (!unsigned_p) + i_f_bits, unsigned_p);
+ f->data = f->data.ext ((!unsigned_p) + i_f_bits, unsigned_p);
return overflow_p;
}
@@ -692,8 +657,8 @@ do_fixed_neg (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a, bool sat_p)
bool unsigned_p = UNSIGNED_FIXED_POINT_MODE_P (a->mode);
int i_f_bits = GET_MODE_IBIT (a->mode) + GET_MODE_FBIT (a->mode);
f->mode = a->mode;
- f->data = double_int_neg (a->data);
- f->data = double_int_ext (f->data, (!unsigned_p) + i_f_bits, unsigned_p);
+ f->data = -a->data;
+ f->data = f->data.ext ((!unsigned_p) + i_f_bits, unsigned_p);
if (unsigned_p) /* Unsigned type. */
{
@@ -718,7 +683,7 @@ do_fixed_neg (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a, bool sat_p)
/* Saturate to the maximum by subtracting f->data by one. */
f->data.low = -1;
f->data.high = -1;
- f->data = double_int_ext (f->data, i_f_bits, 1);
+ f->data = f->data.zext (i_f_bits);
}
else
overflow_p = true;
@@ -789,25 +754,25 @@ fixed_compare (int icode, const FIXED_VALUE_TYPE *op0,
switch (code)
{
case NE_EXPR:
- return !double_int_equal_p (op0->data, op1->data);
+ return op0->data != op1->data;
case EQ_EXPR:
- return double_int_equal_p (op0->data, op1->data);
+ return op0->data == op1->data;
case LT_EXPR:
- return double_int_cmp (op0->data, op1->data,
+ return op0->data.cmp (op1->data,
UNSIGNED_FIXED_POINT_MODE_P (op0->mode)) == -1;
case LE_EXPR:
- return double_int_cmp (op0->data, op1->data,
+ return op0->data.cmp (op1->data,
UNSIGNED_FIXED_POINT_MODE_P (op0->mode)) != 1;
case GT_EXPR:
- return double_int_cmp (op0->data, op1->data,
+ return op0->data.cmp (op1->data,
UNSIGNED_FIXED_POINT_MODE_P (op0->mode)) == 1;
case GE_EXPR:
- return double_int_cmp (op0->data, op1->data,
+ return op0->data.cmp (op1->data,
UNSIGNED_FIXED_POINT_MODE_P (op0->mode)) != -1;
default:
@@ -835,19 +800,15 @@ fixed_convert (FIXED_VALUE_TYPE *f, enum machine_mode mode,
/* Left shift a to temp_high, temp_low based on a->mode. */
double_int temp_high, temp_low;
int amount = GET_MODE_FBIT (mode) - GET_MODE_FBIT (a->mode);
- lshift_double (a->data.low, a->data.high,
- amount,
+ temp_low = a->data.lshift (amount,
HOST_BITS_PER_DOUBLE_INT,
- &temp_low.low, &temp_low.high,
SIGNED_FIXED_POINT_MODE_P (a->mode));
/* Logical shift right to temp_high. */
- lshift_double (a->data.low, a->data.high,
- amount - HOST_BITS_PER_DOUBLE_INT,
- HOST_BITS_PER_DOUBLE_INT,
- &temp_high.low, &temp_high.high, 0);
+ temp_high = a->data.llshift (amount - HOST_BITS_PER_DOUBLE_INT,
+ HOST_BITS_PER_DOUBLE_INT);
if (SIGNED_FIXED_POINT_MODE_P (a->mode)
&& a->data.high < 0) /* Signed-extend temp_high. */
- temp_high = double_int_ext (temp_high, amount, 0);
+ temp_high = temp_high.sext (amount);
f->mode = mode;
f->data = temp_low;
if (SIGNED_FIXED_POINT_MODE_P (a->mode) ==
@@ -885,10 +846,9 @@ fixed_convert (FIXED_VALUE_TYPE *f, enum machine_mode mode,
/* Set to maximum. */
f->data.low = -1; /* Set to all ones. */
f->data.high = -1; /* Set to all ones. */
- f->data = double_int_ext (f->data,
- GET_MODE_FBIT (f->mode)
- + GET_MODE_IBIT (f->mode),
- 1); /* Clear the sign. */
+ f->data = f->data.zext (GET_MODE_FBIT (f->mode)
+ + GET_MODE_IBIT (f->mode));
+ /* Clear the sign. */
}
else
overflow_p = true;
@@ -903,10 +863,8 @@ fixed_convert (FIXED_VALUE_TYPE *f, enum machine_mode mode,
{
/* Right shift a to temp based on a->mode. */
double_int temp;
- lshift_double (a->data.low, a->data.high,
- GET_MODE_FBIT (mode) - GET_MODE_FBIT (a->mode),
+ temp = a->data.lshift (GET_MODE_FBIT (mode) - GET_MODE_FBIT (a->mode),
HOST_BITS_PER_DOUBLE_INT,
- &temp.low, &temp.high,
SIGNED_FIXED_POINT_MODE_P (a->mode));
f->mode = mode;
f->data = temp;
@@ -944,10 +902,9 @@ fixed_convert (FIXED_VALUE_TYPE *f, enum machine_mode mode,
/* Set to maximum. */
f->data.low = -1; /* Set to all ones. */
f->data.high = -1; /* Set to all ones. */
- f->data = double_int_ext (f->data,
- GET_MODE_FBIT (f->mode)
- + GET_MODE_IBIT (f->mode),
- 1); /* Clear the sign. */
+ f->data = f->data.zext (GET_MODE_FBIT (f->mode)
+ + GET_MODE_IBIT (f->mode));
+ /* Clear the sign. */
}
else
overflow_p = true;
@@ -959,8 +916,7 @@ fixed_convert (FIXED_VALUE_TYPE *f, enum machine_mode mode,
}
}
- f->data = double_int_ext (f->data,
- SIGNED_FIXED_POINT_MODE_P (f->mode)
+ f->data = f->data.ext (SIGNED_FIXED_POINT_MODE_P (f->mode)
+ GET_MODE_FBIT (f->mode)
+ GET_MODE_IBIT (f->mode),
UNSIGNED_FIXED_POINT_MODE_P (f->mode));
@@ -988,19 +944,14 @@ fixed_convert_from_int (FIXED_VALUE_TYPE *f, enum machine_mode mode,
}
else
{
- lshift_double (a.low, a.high,
- amount,
- HOST_BITS_PER_DOUBLE_INT,
- &temp_low.low, &temp_low.high, 0);
+ temp_low = a.llshift (amount, HOST_BITS_PER_DOUBLE_INT);
/* Logical shift right to temp_high. */
- lshift_double (a.low, a.high,
- amount - HOST_BITS_PER_DOUBLE_INT,
- HOST_BITS_PER_DOUBLE_INT,
- &temp_high.low, &temp_high.high, 0);
+ temp_high = a.llshift (amount - HOST_BITS_PER_DOUBLE_INT,
+ HOST_BITS_PER_DOUBLE_INT);
}
if (!unsigned_p && a.high < 0) /* Signed-extend temp_high. */
- temp_high = double_int_ext (temp_high, amount, 0);
+ temp_high = temp_high.sext (amount);
f->mode = mode;
f->data = temp_low;
@@ -1038,10 +989,9 @@ fixed_convert_from_int (FIXED_VALUE_TYPE *f, enum machine_mode mode,
/* Set to maximum. */
f->data.low = -1; /* Set to all ones. */
f->data.high = -1; /* Set to all ones. */
- f->data = double_int_ext (f->data,
- GET_MODE_FBIT (f->mode)
- + GET_MODE_IBIT (f->mode),
- 1); /* Clear the sign. */
+ f->data = f->data.zext (GET_MODE_FBIT (f->mode)
+ + GET_MODE_IBIT (f->mode));
+ /* Clear the sign. */
}
else
overflow_p = true;
@@ -1051,8 +1001,7 @@ fixed_convert_from_int (FIXED_VALUE_TYPE *f, enum machine_mode mode,
&f->data, sat_p);
}
}
- f->data = double_int_ext (f->data,
- SIGNED_FIXED_POINT_MODE_P (f->mode)
+ f->data = f->data.ext (SIGNED_FIXED_POINT_MODE_P (f->mode)
+ GET_MODE_FBIT (f->mode)
+ GET_MODE_IBIT (f->mode),
UNSIGNED_FIXED_POINT_MODE_P (f->mode));
@@ -1093,10 +1042,8 @@ fixed_convert_from_real (FIXED_VALUE_TYPE *f, enum machine_mode mode,
{
f->data.low = 1;
f->data.high = 0;
- lshift_double (f->data.low, f->data.high, i_f_bits,
- HOST_BITS_PER_DOUBLE_INT,
- &f->data.low, &f->data.high, 1);
- f->data = double_int_ext (f->data, 1 + i_f_bits, 0);
+ f->data = f->data.alshift (i_f_bits, HOST_BITS_PER_DOUBLE_INT);
+ f->data = f->data.sext (1 + i_f_bits);
}
}
else
@@ -1108,12 +1055,12 @@ fixed_convert_from_real (FIXED_VALUE_TYPE *f, enum machine_mode mode,
{
f->data.low = -1;
f->data.high = -1;
- f->data = double_int_ext (f->data, i_f_bits, 1);
+ f->data = f->data.zext (i_f_bits);
}
else
overflow_p = true;
}
- f->data = double_int_ext (f->data, (!unsigned_p) + i_f_bits, unsigned_p);
+ f->data = f->data.ext ((!unsigned_p) + i_f_bits, unsigned_p);
return overflow_p;
}
diff --git a/gcc/flag-types.h b/gcc/flag-types.h
index f757423e56a..b503c9f4f19 100644
--- a/gcc/flag-types.h
+++ b/gcc/flag-types.h
@@ -106,6 +106,14 @@ enum symbol_visibility
};
#endif
+/* The stack reuse level. */
+enum stack_reuse_level
+{
+ SR_NONE,
+ SR_NAMED_VARS,
+ SR_ALL
+};
+
/* The algorithm used for the integrated register allocator (IRA). */
enum ira_algorithm
{
diff --git a/gcc/flags.h b/gcc/flags.h
index 48c20e51bd8..141185befc7 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -22,7 +22,6 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_FLAGS_H
#define GCC_FLAGS_H
-#include "coretypes.h"
#include "flag-types.h"
#include "options.h"
@@ -107,30 +106,6 @@ extern int dump_for_graph;
#define abi_version_at_least(N) \
(flag_abi_version == 0 || flag_abi_version >= (N))
-/* True if overflow wraps around for the given integral type. That
- is, TYPE_MAX + 1 == TYPE_MIN. */
-#define TYPE_OVERFLOW_WRAPS(TYPE) \
- (TYPE_UNSIGNED (TYPE) || flag_wrapv)
-
-/* True if overflow is undefined for the given integral type. We may
- optimize on the assumption that values in the type never overflow.
-
- IMPORTANT NOTE: Any optimization based on TYPE_OVERFLOW_UNDEFINED
- must issue a warning based on warn_strict_overflow. In some cases
- it will be appropriate to issue the warning immediately, and in
- other cases it will be appropriate to simply set a flag and let the
- caller decide whether a warning is appropriate or not. */
-#define TYPE_OVERFLOW_UNDEFINED(TYPE) \
- (!TYPE_UNSIGNED (TYPE) && !flag_wrapv && !flag_trapv && flag_strict_overflow)
-
-/* True if overflow for the given integral type should issue a
- trap. */
-#define TYPE_OVERFLOW_TRAPS(TYPE) \
- (!TYPE_UNSIGNED (TYPE) && flag_trapv)
-
-/* True if pointer types have undefined overflow. */
-#define POINTER_TYPE_OVERFLOW_UNDEFINED (flag_strict_overflow)
-
/* Whether to emit an overflow warning whose code is C. */
#define issue_strict_overflow_warning(c) (warn_strict_overflow >= (int) (c))
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 702f4e06701..b386bb2c606 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2094,12 +2094,14 @@ pedantic_non_lvalue_loc (location_t loc, tree x)
/* Given a tree comparison code, return the code that is the logical inverse.
It is generally not safe to do this for floating-point comparisons, except
- for EQ_EXPR and NE_EXPR, so we return ERROR_MARK in this case. */
+ for EQ_EXPR, NE_EXPR, ORDERED_EXPR and UNORDERED_EXPR, so we return
+ ERROR_MARK in this case. */
enum tree_code
invert_tree_comparison (enum tree_code code, bool honor_nans)
{
- if (honor_nans && flag_trapping_math && code != EQ_EXPR && code != NE_EXPR)
+ if (honor_nans && flag_trapping_math && code != EQ_EXPR && code != NE_EXPR
+ && code != ORDERED_EXPR && code != UNORDERED_EXPR)
return ERROR_MARK;
switch (code)
@@ -8938,16 +8940,16 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
&& auto_var_in_fn_p (base0, current_function_decl)
&& !indirect_base1
&& TREE_CODE (base1) == SSA_NAME
- && TREE_CODE (SSA_NAME_VAR (base1)) == PARM_DECL
- && SSA_NAME_IS_DEFAULT_DEF (base1))
+ && SSA_NAME_IS_DEFAULT_DEF (base1)
+ && TREE_CODE (SSA_NAME_VAR (base1)) == PARM_DECL)
|| (TREE_CODE (arg1) == ADDR_EXPR
&& indirect_base1
&& TREE_CODE (base1) == VAR_DECL
&& auto_var_in_fn_p (base1, current_function_decl)
&& !indirect_base0
&& TREE_CODE (base0) == SSA_NAME
- && TREE_CODE (SSA_NAME_VAR (base0)) == PARM_DECL
- && SSA_NAME_IS_DEFAULT_DEF (base0)))
+ && SSA_NAME_IS_DEFAULT_DEF (base0)
+ && TREE_CODE (SSA_NAME_VAR (base0)) == PARM_DECL))
{
if (code == NE_EXPR)
return constant_boolean_node (1, type);
@@ -13657,8 +13659,11 @@ fold_binary_loc (location_t loc,
case VEC_WIDEN_MULT_LO_EXPR:
case VEC_WIDEN_MULT_HI_EXPR:
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
{
- unsigned int nelts = TYPE_VECTOR_SUBPARTS (type), i;
+ unsigned int nelts = TYPE_VECTOR_SUBPARTS (type);
+ unsigned int out, ofs, scale;
tree *elts;
gcc_assert (TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)) == nelts * 2
@@ -13671,19 +13676,28 @@ fold_binary_loc (location_t loc,
|| !vec_cst_ctor_to_array (arg1, elts + nelts * 2))
return NULL_TREE;
- if ((!BYTES_BIG_ENDIAN) ^ (code == VEC_WIDEN_MULT_LO_EXPR))
- elts += nelts;
-
- for (i = 0; i < nelts; i++)
+ if (code == VEC_WIDEN_MULT_LO_EXPR)
+ scale = 0, ofs = BYTES_BIG_ENDIAN ? nelts : 0;
+ else if (code == VEC_WIDEN_MULT_HI_EXPR)
+ scale = 0, ofs = BYTES_BIG_ENDIAN ? 0 : nelts;
+ else if (code == VEC_WIDEN_MULT_EVEN_EXPR)
+ scale = 1, ofs = 0;
+ else /* if (code == VEC_WIDEN_MULT_ODD_EXPR) */
+ scale = 1, ofs = 1;
+
+ for (out = 0; out < nelts; out++)
{
- elts[i] = fold_convert_const (NOP_EXPR, TREE_TYPE (type), elts[i]);
- elts[i + nelts * 2]
- = fold_convert_const (NOP_EXPR, TREE_TYPE (type),
- elts[i + nelts * 2]);
- if (elts[i] == NULL_TREE || elts[i + nelts * 2] == NULL_TREE)
+ unsigned int in1 = (out << scale) + ofs;
+ unsigned int in2 = in1 + nelts * 2;
+ tree t1, t2;
+
+ t1 = fold_convert_const (NOP_EXPR, TREE_TYPE (type), elts[in1]);
+ t2 = fold_convert_const (NOP_EXPR, TREE_TYPE (type), elts[in2]);
+
+ if (t1 == NULL_TREE || t2 == NULL_TREE)
return NULL_TREE;
- elts[i] = const_binop (MULT_EXPR, elts[i], elts[i + nelts * 2]);
- if (elts[i] == NULL_TREE || !CONSTANT_CLASS_P (elts[i]))
+ elts[out] = const_binop (MULT_EXPR, t1, t2);
+ if (elts[out] == NULL_TREE || !CONSTANT_CLASS_P (elts[out]))
return NULL_TREE;
}
@@ -14031,7 +14045,8 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type,
case BIT_FIELD_REF:
if ((TREE_CODE (arg0) == VECTOR_CST
- || TREE_CODE (arg0) == CONSTRUCTOR)
+ || (TREE_CODE (arg0) == CONSTRUCTOR
+ && TREE_CODE (TREE_TYPE (arg0)) == VECTOR_TYPE))
&& (type == TREE_TYPE (TREE_TYPE (arg0))
|| (TREE_CODE (type) == VECTOR_TYPE
&& TREE_TYPE (type) == TREE_TYPE (TREE_TYPE (arg0)))))
@@ -14140,11 +14155,17 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type,
case VEC_PERM_EXPR:
if (TREE_CODE (arg2) == VECTOR_CST)
{
- unsigned int nelts = TYPE_VECTOR_SUBPARTS (type), i;
+ unsigned int nelts = TYPE_VECTOR_SUBPARTS (type), i, mask;
unsigned char *sel = XALLOCAVEC (unsigned char, nelts);
tree t;
bool need_mask_canon = false;
+ bool all_in_vec0 = true;
+ bool all_in_vec1 = true;
+ bool maybe_identity = true;
+ bool single_arg = (op0 == op1);
+ bool changed = false;
+ mask = single_arg ? (nelts - 1) : (2 * nelts - 1);
gcc_assert (nelts == VECTOR_CST_NELTS (arg2));
for (i = 0; i < nelts; i++)
{
@@ -14152,11 +14173,27 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type,
if (TREE_CODE (val) != INTEGER_CST)
return NULL_TREE;
- sel[i] = TREE_INT_CST_LOW (val) & (2 * nelts - 1);
+ sel[i] = TREE_INT_CST_LOW (val) & mask;
if (TREE_INT_CST_HIGH (val)
|| ((unsigned HOST_WIDE_INT)
TREE_INT_CST_LOW (val) != sel[i]))
need_mask_canon = true;
+
+ if (sel[i] < nelts)
+ all_in_vec1 = false;
+ else
+ all_in_vec0 = false;
+
+ if ((sel[i] & (nelts-1)) != i)
+ maybe_identity = false;
+ }
+
+ if (maybe_identity)
+ {
+ if (all_in_vec0)
+ return op0;
+ if (all_in_vec1)
+ return op1;
}
if ((TREE_CODE (arg0) == VECTOR_CST
@@ -14169,15 +14206,31 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type,
return t;
}
+ if (all_in_vec0)
+ op1 = op0;
+ else if (all_in_vec1)
+ {
+ op0 = op1;
+ for (i = 0; i < nelts; i++)
+ sel[i] -= nelts;
+ need_mask_canon = true;
+ }
+
+ if (op0 == op1 && !single_arg)
+ changed = true;
+
if (need_mask_canon && arg2 == op2)
{
tree *tsel = XALLOCAVEC (tree, nelts);
tree eltype = TREE_TYPE (TREE_TYPE (arg2));
for (i = 0; i < nelts; i++)
- tsel[i] = build_int_cst (eltype, sel[nelts - i - 1]);
- t = build_vector (TREE_TYPE (arg2), tsel);
- return build3_loc (loc, VEC_PERM_EXPR, type, op0, op1, t);
+ tsel[i] = build_int_cst (eltype, sel[i]);
+ op2 = build_vector (TREE_TYPE (arg2), tsel);
+ changed = true;
}
+
+ if (changed)
+ return build3_loc (loc, VEC_PERM_EXPR, type, op0, op1, op2);
}
return NULL_TREE;
@@ -14270,7 +14323,7 @@ fold (tree expr)
while (begin != end)
{
unsigned HOST_WIDE_INT middle = (begin + end) / 2;
- tree index = VEC_index (constructor_elt, elts, middle)->index;
+ tree index = VEC_index (constructor_elt, elts, middle).index;
if (TREE_CODE (index) == INTEGER_CST
&& tree_int_cst_lt (index, op1))
@@ -14285,7 +14338,7 @@ fold (tree expr)
&& tree_int_cst_lt (op1, TREE_OPERAND (index, 0)))
end = middle;
else
- return VEC_index (constructor_elt, elts, middle)->value;
+ return VEC_index (constructor_elt, elts, middle).value;
}
}
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index bbd0b50a904..2b316774906 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,645 @@
+2012-08-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54384
+ * symbol.c (gfc_copy_formal_args): Set also sym->formal_ns.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54384
+ * resolve.c (gfc_resolve_character_operator): Free temporary
+ variables.
+ * trans-expr.c (gfc_conv_statement_function): Ditto.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54384
+ * dependency.c (check_section_vs_section): Use gfc_free_expr
+ instead of free.
+ * trans-intrinsic.c (conv_generic_with_optional_char_arg): Use
+ gfc_free_symbol instead of free.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54384
+ * trans-expr.c (gfc_trans_arrayfunc_assign): Free se.ss
+ and loop.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/41093
+ * gfortran.h (gfc_common_head): Add "int refs".
+ * match.c (gfc_match_common): Increment refs.
+ * resolve.c (resolve_symbol): Only increment formal_ns->refs
+ if formal_ns is not sym->ns.
+ * symbol.c (gfc_free_symbol): Only free formal_ns if
+ if formal_ns is not sym->ns. Free common_block if refs is one.
+ (gfc_release_symbol): Release formal_ns only if the
+ symbol is not ENTRY of a module.
+ * decl.c (get_proc_name): Don't increment gfc_current_ns->refs.
+ * parse.c (parse_interface): Incement proc_unit->refs++ for
+ proc-pointer result variables.
+ * module.c (mio_symbol): Don't increase sym->refs for its
+ use in sym->formal_ns->proc_name.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54370
+ * trans-stmt.c (gfc_trans_do_while): Don't change the logical
+ kind for negation of the condition.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ * options.c (set_Wall): Don't set for -Wcompare-reals.
+ * invoke.texi (-Wall, -Wcompare-reals): -Wall no longer
+ implies -Wcompare-reals.
+
+2012-08-24 Simon Baldwin <simonb@google.com>
+
+ * lang.opt (-cpp=): Mark flag NoDWARFRecord.
+
+2012-08-23 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54350
+ * trans-array.c (free_ss_info): Free data.array.subscript.
+ (gfc_free_ss): No longer free data.array.subscript.
+ (walk_coarray): New function, moved from trans-intrinsic.c
+ (gfc_conv_expr_descriptor): Walk array descriptor instead
+ of taking passed "ss".
+ (get_array_ctor_all_strlen, gfc_add_loop_ss_code,
+ gfc_conv_array_parameter): Update call and cleanup ss handling.
+ * trans-array.h (gfc_conv_expr_descriptor,
+ gfc_conv_array_parameter): Update prototype.
+ * trans-expr.c (gfc_conv_derived_to_class,
+ conv_isocbinding_procedure, gfc_conv_procedure_call,
+ gfc_trans_alloc_subarray_assign, gfc_trans_subcomponent_assign,
+ gfc_trans_pointer_assignment, gfc_trans_arrayfunc_assign): Update
+ call to gfc_conv_expr_descriptor and gfc_conv_array_parameter, and
+ clean up.
+ * trans-intrinsic.c (walk_coarray): Moved to trans-array.c
+ (trans_this_image, trans_image_index, gfc_conv_intrinsic_rank
+ gfc_conv_intrinsic_bound, gfc_conv_intrinsic_cobound,
+ gfc_conv_intrinsic_len, gfc_conv_intrinsic_size,
+ gfc_conv_intrinsic_sizeof, gfc_conv_intrinsic_storage_size,
+ gfc_conv_intrinsic_transfer, gfc_conv_allocated,
+ gfc_conv_associated, gfc_conv_intrinsic_loc,
+ conv_intrinsic_move_alloc): Update calls.
+ * trans-io.c (gfc_convert_array_to_string, set_internal_unit,
+ gfc_trans_transfer): Ditto.
+ * trans-stmt.c (gfc_conv_elemental_dependencies,
+ gfc_trans_sync, trans_associate_var,
+ gfc_trans_pointer_assign_need_temp): Ditto.
+
+2012-08-23 Jakub Jelinek <jakub@redhat.com>
+
+ * trans-decl.c (trans_function_start, generate_coarray_init,
+ create_main_function, gfc_generate_constructors): Call
+ allocate_struct_function instead of init_function_start.
+
+2012-08-22 Tobias Burnus <burnus@net-b.de>
+
+ * trans-expr.c (gfc_copy_class_to_class,
+ gfc_trans_arrayfunc_assign): Free loop and ss data.
+ * trans-intrinsic.c (gfc_trans_arrayfunc_assign): Free ss data.
+
+2012-08-21 Tobias Burnus <burnus@net-b.de>
+
+ * parse.c (parse_contained): Include EXEC_END_PROCEDURE
+ in ns->code to make sure the gfc_code is freed.
+
+2012-08-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54301
+ * expr.c (gfc_check_pointer_assign): Warn when a pointer,
+ which is a function result, might outlive its target.
+
+2012-08-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54301
+ * expr.c (gfc_check_pointer_assign): Warn when the pointer
+ might outlive its target.
+ * gfortran.h (struct gfc_option_t): Add warn_target_lifetime.
+ * options.c (gfc_init_options, set_wall, gfc_handle_option):
+ handle it.
+ * invoke.texi (-Wtarget-lifetime): Document it.
+ (-Wall): Implied it.
+ * lang.opt (-Wtarget-lifetime): New flag.
+
+2012-08-19 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/54298
+ * gfortran.h (struct gfc_option_t): Add warn_compare_reals.
+ * lang.opt: Add Wcompare-reals.
+ * invoke.texi: Document -Wcompare-reals.
+ * resolve.c (resolve_operator): If -Wcompare-reals is in effect,
+ warn about equality/inequality comparisions for REAL and COMPLEX.
+ * options.c (gfc_init_options): Set warn_compare_reals.
+ (set_Wall): Include warn_compare_reals in Wall.
+ (gfc_handle_option): Handle Wcompare_reals.
+
+2012-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * array.c (gfc_match_array_ref): Fix up memset arguments.
+
+2012-08-16 Diego Novillo <dnovillo@google.com>
+
+ Revert
+
+ PR bootstrap/54281
+ * gfortran.h: Do not include gmp.h.
+
+2012-08-16 Diego Novillo <dnovillo@google.com>
+
+ PR bootstrap/54281
+ * gfortran.h: Do not include gmp.h.
+
+2012-08-15 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54243
+ PR fortran/54244
+ * resolve.c (check_typebound_baseobject): Check for class_ok attribute.
+ (resolve_procedure_interface,resolve_fl_derived0): Copy class_ok
+ attribute.
+
+2012-08-14 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/47586
+ * trans-expr.c (expr_is_variable): Handle regular, procedure pointer,
+ and typebound functions returning a data pointer.
+
+2012-08-14 Mikael Morin <mikael@gcc.gnu.org>
+
+ * decl.c (match_ppc_decl): Copy the procedure interface's symbol
+ as procedure interface's result.
+
+2012-08-14 Mikael Morin <mikael@gcc.gnu.org>
+
+ * trans-expr.c (gfc_trans_scalar_assign): Rename argument,
+ extend comment.
+
+2012-08-14 Mikael Morin <mikael@gcc.gnu.org>
+
+ * gfortran.h (gfc_get_proc_ptr_comp): New prototype.
+ (gfc_is_proc_ptr_comp): Update prototype.
+ * expr.c (gfc_get_proc_ptr_comp): New function based on the old
+ gfc_is_proc_ptr_comp.
+ (gfc_is_proc_ptr_comp): Call gfc_get_proc_ptr_comp.
+ (gfc_specification_expr, gfc_check_pointer_assign): Use
+ gfc_get_proc_ptr_comp.
+ * trans-array.c (gfc_walk_function_expr): Likewise.
+ * resolve.c (resolve_structure_cons, update_ppc_arglist,
+ resolve_ppc_call, resolve_expr_ppc): Likewise.
+ (resolve_function): Update call to gfc_is_proc_ptr_comp.
+ * dump-parse-tree.c (show_expr): Likewise.
+ * interface.c (compare_actual_formal): Likewise.
+ * match.c (gfc_match_pointer_assignment): Likewise.
+ * primary.c (gfc_match_varspec): Likewise.
+ * trans-io.c (gfc_trans_transfer): Likewise.
+ * trans-expr.c (gfc_conv_variable, conv_function_val,
+ conv_isocbinding_procedure, gfc_conv_procedure_call,
+ gfc_trans_pointer_assignment): Likewise.
+ (gfc_conv_procedure_call, gfc_trans_array_func_assign):
+ Use gfc_get_proc_ptr_comp.
+
+2012-08-14 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/40881
+ * error.c (gfc_notify_std): Reset cur_error_buffer->flag flag
+ when the error/warning has been printed.
+ * gfortran.h (gfc_sl_type): Add ST_LABEL_DO_TARGET.
+ * match.c (gfc_match_do): Use ST_LABEL_DO_TARGET.
+ * parse.c (check_statement_label): Use ST_LABEL_DO_TARGET.
+ (parse_executable): Add obsolescence check for DATA.
+ * resolve.c (resolve_branch): Handle ST_LABEL_DO_TARGET.
+ * symbol.c (gfc_define_st_label, gfc_reference_st_label):
+ Add obsolescence diagnostics.
+ * trans-stmt.c (gfc_trans_label_assign): Handle ST_LABEL_DO_TARGET.
+
+2012-08-14 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54234
+ * check.c (gfc_check_cmplx): Add -Wconversion warning
+ when converting higher-precision REAL to default-precision
+ CMPLX without kind= parameter.
+
+2012-08-12 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54221
+ * trans-decl.c (gfc_finish_var_decl, build_function_decl):
+ Fix setting private module vars/procs as TREE_PUBLIC(...) = 0.
+
+2012-08-09 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54199
+ * intrinsic.c (gfc_warn_intrinsic_shadow): Better warning
+ for internal procedures.
+
+2012-08-06 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/35831
+ * interface.c (check_result_characteristics): New function, which checks
+ the characteristics of function results.
+ (gfc_compare_interfaces,gfc_check_typebound_override): Call it.
+
+2012-08-02 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/54033
+ * scanner.c (add_path_to_list): New argument warn. Don't
+ warn if it is true.
+ (gfc_add_include_path): Warn if directory is missing.
+ (gfc_add_intrinsic_modules_path): Do not warn if directory
+ is missing.
+ * optinons.c (gfc_handle_option): Do not add directory
+ for intrinsic modules to normal include path.
+
+2012-08-03 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54166
+ * trans-array.c (set_loop_bounds): Access specinfo using spec_dim.
+
+2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/48820
+ * trans-array.c (gfc_conv_ss_startstride): Set the intrinsic
+ result's lower and upper bounds according to the rank.
+ (set_loop_bounds): Set the loop upper bound in the intrinsic case.
+
+2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
+
+ * trans-array.c (set_loop_bounds): Allow non-array-section to be
+ chosen using the stride and lower bound criteria.
+
+2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
+
+ * trans-array.c (set_loop_bounds): Remove useless dimension check.
+ Don't update loopspec if it would loose the wanted stride criterion.
+
+2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
+
+ * trans-array.h (gfc_conv_descriptor_rank): New prototype.
+ * trans-array.c (gfc_conv_descriptor_rank): New function moved and
+ renamed ...
+ * trans-intrinsic.c (get_rank_from_desc): ... from this one.
+ (gfc_conv_intrinsic_rank, gfc_conv_intrinsic_bound,
+ gfc_conv_associated): Also rename function calls.
+
+2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
+
+ * iresolve.c (resolve_bound, gfc_resolve_shape):
+ Don't set the shape for assumed rank arrays.
+ * simplify.c (gfc_simplify_shape): Don't try to simplify if the
+ argument is assumed rank.
+
+2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
+
+ * array.c (gfc_copy_array_ref): Don't copy the offset field.
+ * expr.c (find_array_section): Ignore the offset field.
+ * trans-expr.c (gfc_find_interface_mapping_to_ref): Don't apply
+ any interface mapping to the offset field.
+ * gfortran.h (struct gfc_array_ref): Remove the offset field.
+
+2012-08-02 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54147
+ * resolve.c (check_proc_interface): New routine for PROCEDURE interface
+ checks.
+ (resolve_procedure_interface,resolve_typebound_procedure,
+ resolve_fl_derived0): Call it.
+
+2012-08-01 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/54033
+ * scanner.c (add_path_to_list): Emit warning if an error occurs
+ for an include path, if it is not present or if it is not a
+ directory. Do not add the path in these cases.
+
+2012-07-31 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42418
+ * decl.c (match_procedure_interface): Move some checks to
+ 'resolve_procedure_interface'. Set flavor if appropriate.
+ * expr.c (gfc_check_pointer_assign): Cleanup of 'gfc_is_intrinsic'.
+ * intrinsic.c (gfc_is_intrinsic): Additional checks for attributes which
+ identify a procedure as being non-intrinsic.
+ * resolve.c (resolve_procedure_interface): Checks moved here from
+ 'match_procedure_interface'. Minor cleanup.
+ (resolve_formal_arglist,resolve_symbol): Cleanup of
+ 'resolve_procedure_interface'
+ (resolve_actual_arglist,is_external_proc): Cleanup of
+ 'gfc_is_intrinsic'.
+
+2012-07-31 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54134
+ * dependency.c (gfc_dep_compare_expr): Check if arguments are NULL.
+
+2012-07-31 Tobias Burnus <burnus@net-b.de>
+
+ * interface.c (gfc_procedure_use): Return gfc_try instead of void.
+ * gfortran.h (gfc_procedure_use): Update prototype.
+ * resolve.c (gfc_iso_c_func_interface): Allow noninteroperable
+ procedures for c_funloc for TS29113.
+ * (gfc_iso_c_sub_interface): Ditto for c_f_procpointer. Add
+ diagnostic for c_ptr vs. c_funptr for c_f_(proc)pointer.
+
+2012-07-30 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/51081
+ * gfortran.h (gfc_resolve_intrinsic): Add prototype.
+ * expr.c (gfc_check_pointer_assign): Set INTRINSIC attribute if needed.
+ Check for invalid intrinsics.
+ * primary.c (gfc_match_rvalue): Check for intrinsics came too early.
+ Set procedure flavor if appropriate.
+ * resolve.c (resolve_intrinsic): Renamed to gfc_resolve_intrinsic.
+ (resolve_procedure_interface,resolve_procedure_expression,
+ resolve_function,resolve_fl_derived0,resolve_symbol): Ditto.
+
+2012-07-26 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/44354
+ * trans-array.c (gfc_trans_array_constructor_value):
+ Evaluate the iteration bounds before the inner variable shadows
+ the outer.
+
+2012-07-26 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/44354
+ * array.c (sought_symbol): New variable.
+ (expr_is_sought_symbol_ref, find_symbol_in_expr): New functions.
+ (resolve_array_list): Check for references to the induction
+ variable in the iteration bounds and issue a diagnostic if some
+ are found.
+
+2012-07-26 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
+ Tobias Burnus <burnus@net-b.de>
+
+ * module.c (mio_array_spec): Don't read as->lower for
+ assumed-rank arrays.
+
+2012-07-25 Tobias Burnus <burnus@net-b.de>
+
+ * trans-types.c (gfc_real16_is_float128): Fix spelling
+ in a comment.
+ * trans.h (struct gfc_array_info): Ditto.
+ * gfortran.h (gfc_expr): Ditto.
+ * simplify.c (gfc_count): Ditto.
+ * trans-expr.c (gfc_copy_class_to_class,
+ conv_parent_component_references,
+ gfc_trans_pointer_assignment): Ditto.
+ * expr.c (check_pointer_assign): Fix diagnostic spelling.
+ * interface.c (compare_parameter): Ditto.
+ * parse.c (use_modules, parse_associate): Ditto.
+ * decl.c (match_char_length): Fix spelling of the
+ an function argument.
+
+2012-07-21 Tobias Burnus <burnus@net-b.de>
+
+ * iso-c-binding.def (C_PTRDIFF_T): New TS29113 parameter.
+ * intrinsic.texi (ISO_C_BINDING): Document it.
+
+2012-07-21 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48820
+ * trans-intrinsic.c (gfc_conv_intrinsic_bound): Support
+ lbound/ubound with dim= for assumed-rank arrays.
+ * array.c (gfc_set_array_spec): Reject coarrays with
+ assumed shape.
+ * decl.c (merge_array_spec): Ditto. Return gfc_try.
+ (match_attr_spec, match_attr_spec): Update call.
+
+2012-07-21 Tobias Burnus <burnus@net-b.de>
+
+ * resolve.c (resolve_formal_arglist): Put variable
+ declaration before the first assignment.
+
+2012-07-21 Tobias Burnus <burnus@net-b.de>
+
+ * trans-expr.c (gfc_conv_derived_to_class): Fix argument passed
+ to class_array_data_assign.
+
+2012-07-20 Tobias Burnus <burnus@net-b.de>
+
+ * decl.c (gfc_verify_c_interop_param): Allow assumed-shape
+ with -std=f2008ts.
+
+2012-07-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48820
+ * array.c (match_array_element_spec, gfc_match_array_spec,
+ spec_size, gfc_array_dimen_size): Add support for
+ assumed-rank arrays.
+ * check.c (dim_rank_check): Ditto.
+ * class.c (gfc_add_component_ref): Ditto.
+ (gfc_build_class_symbol): Regard assumed-rank arrays
+ as having GFC_MAX_DIMENSIONS. And build extra class
+ container for a scalar pointer class.
+ * decl.c (merge_array_spec): Add assert.
+ * dump-parse-tree.c (show_array_spec): Add support for
+ assumed-rank arrays.
+ * expr.c (gfc_is_simply_contiguous): Ditto.
+ * gfortran.h (array_type): Ditto.
+ (gfc_array_spec, gfc_expr): Add comment to "rank" field.
+ * interface.c (compare_type_rank, argument_rank_mismatch,
+ compare_parameter, gfc_procedure_use): Ditto.
+ (compare_actual_formal): Fix NULL() to optional-dummy
+ handling for polymorphic dummies.
+ * module.c (mio_typespec): Add support for
+ assumed-rank arrays.
+ * resolve.c (resolve_formal_arglist, resolve_actual_arglist,
+ resolve_elemental_actual, resolve_global_procedure,
+ expression_shape, resolve_variable, update_ppc_arglist,
+ check_typebound_baseobject, gfc_resolve_expr,
+ resolve_fl_var_and_proc, gfc_resolve_finalizers,
+ resolve_typebound_procedure, resolve_symbol): Ditto.
+ (assumed_type_expr_allowed): Remove static variable.
+ (actual_arg, first_actual_arg): New static variables.
+ * simplify.c (simplify_bound, gfc_simplify_range): Add
+ support for assumed-rank arrays.
+ * trans-array.c (gfc_conv_array_parameter): Ditto.
+ (gfc_get_descriptor_dimension): New function, which returns
+ the descriptor.
+ (gfc_conv_descriptor_dimension): Use it.
+ (gfc_conv_descriptor_stride_get, gfc_conv_array_parameter):
+ Handle GFC_ARRAY_ASSUMED_RANK_CONT and AS_ASSUMED_RANK.
+ * trans-array.h (gfc_get_descriptor_dimension): New prototype.
+ * trans-decl. (gfc_build_dummy_array_decl,
+ gfc_trans_deferred_vars, add_argument_checking): Add
+ support for assumed-rank arrays.
+ * trans-expr.c (gfc_conv_expr_present, gfc_conv_variable,
+ gfc_conv_procedure_call): Ditto.
+ (get_scalar_to_descriptor_type, class_array_data_assign,
+ conv_scalar_to_descriptor): New static functions.
+ (gfc_conv_derived_to_class, gfc_conv_class_to_class): Use
+ them.
+ * trans-intrinsic.c (get_rank_from_desc): New function.
+ (gfc_conv_intrinsic_rank, gfc_conv_associated): Use it.
+ * trans-types.c (gfc_array_descriptor_base_caf,
+ gfc_array_descriptor_base): Make space for scalar array.
+ (gfc_is_nodesc_array, gfc_is_nodesc_array,
+ gfc_build_array_type, gfc_get_array_descriptor_base): Add
+ support for assumed-rank arrays.
+ * trans.h (gfc_array_kind): Add GFC_ARRAY_ASSUMED_RANK and
+ GFC_ARRAY_ASSUMED_RANK_CONT.
+
+2012-07-19 Tobias Burnus <burnus@net-b.de>
+
+ * trans-expr.c (gfc_conv_procedure_call): Fix handling
+ of polymorphic arguments.
+ * resolve.c (resolve_formal_arglist): Ditto, mark polymorphic
+ assumed-shape arrays as such.
+
+2012-07-19 Tobias Burnus <burnus@net-b.de>
+
+ * interface.c (compare_parameter, compare_actual_formal): Fix
+ handling of polymorphic arguments.
+
+2012-07-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/51081
+ * error.c (gfc_notify_std): Automatically print the relevant Fortran
+ standard version.
+ * arith.c (arith_power): Remove explicit standard reference string.
+ * array.c (gfc_match_array_spec, gfc_match_array_constructor): Ditto.
+ * check.c (gfc_check_a_p, gfc_check_besn, gfc_check_count,
+ gfc_check_float, gfc_check_fn_rc2008, gfc_check_iand,
+ gfc_check_ichar_iachar, gfc_check_ieor, gfc_check_index, gfc_check_ior,
+ gfc_check_lbound, gfc_check_len_lentrim, check_rest, gfc_check_min_max,
+ gfc_check_null, gfc_check_scan, gfc_check_selected_real_kind,
+ gfc_check_shape, gfc_check_size, gfc_check_sngl, gfc_check_ubound,
+ gfc_check_verify): Ditto.
+ * data.c (gfc_assign_data_value): Ditto.
+ * decl.c (var_element, char_len_param_value, match_char_length,
+ gfc_verify_c_interop_param, match_pointer_init, variable_decl,
+ gfc_match_decl_type_spec, gfc_match_import, match_attr_spec,
+ gfc_match_prefix, gfc_match_suffix, match_ppc_decl,
+ match_procedure_in_interface, gfc_match_procedure,gfc_match_entry,
+ gfc_match_subroutine, gfc_match_end, gfc_match_codimension,
+ gfc_match_protected, gfc_match_value, gfc_match_volatile,
+ gfc_match_asynchronous, gfc_match_modproc, gfc_get_type_attr_spec,
+ gfc_match_enum, match_procedure_in_type): Ditto.
+ * expr.c (check_elemental, gfc_check_assign, gfc_check_pointer_assign):
+ Ditto.
+ * interface.c (gfc_match_abstract_interface, check_interface0): Ditto.
+ * intrinsic.c (gfc_intrinsic_func_interface): Ditto.
+ * io.c (format_lex, resolve_tag_format, resolve_tag,
+ compare_to_allowed_values, gfc_match_open, gfc_match_rewind,
+ gfc_resolve_dt, gfc_match_wait): Ditto.
+ * match.c (match_arithmetic_if, gfc_match_if, gfc_match_critical,
+ gfc_match_do, match_exit_cycle, gfc_match_pause, gfc_match_stop,
+ gfc_match_lock, sync_statement, gfc_match_assign, gfc_match_goto,
+ gfc_match_allocate, gfc_match_return, gfc_match_st_function): Ditto.
+ * module.c (gfc_match_use, gfc_use_module): Ditto.
+ * parse.c (parse_derived_contains, parse_block_construct,
+ parse_associate, parse_contained): Ditto.
+ * primary.c (match_hollerith_constant, match_boz_constant,
+ match_real_constant, match_sym_complex_part, match_arg_list_function,
+ build_actual_constructor, gfc_convert_to_structure_constructor): Ditto.
+ * resolve.c (resolve_formal_arglist, resolve_entries,
+ resolve_common_blocks, resolve_actual_arglist, gfc_resolve_index_1,
+ gfc_resolve_iterator_expr, resolve_ordinary_assign,
+ resolve_fl_var_and_proc, resolve_fl_variable_derived,
+ resolve_fl_procedure, resolve_fl_derived0, resolve_fl_derived,
+ resolve_fl_namelist, resolve_symbol, resolve_fntype): Ditto.
+ * symbol.c (check_conflict, conflict, gfc_add_is_bind_c,
+ gfc_add_extension, gfc_check_symbol_typed): Ditto.
+
+2012-07-17 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/53985
+ * decl.c (gfc_verify_c_interop_param): Make warning conditional
+ on -Wc-binding-type works and improve the wording.
+
+2012-07-17 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/52101
+ * decl.c (match_char_length): Extra argument, show obsolenscent
+ warning only if *length is used after the typename.
+ (variable_decl, gfc_match_char_spec): Update call
+
+2012-07-17 Tobias Burnus <burnus@net-b.de>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/49265
+ * decl.c (match_procedure_in_interface): Support "::" for
+ Fortran 2008 and later.
+
+2012-07-16 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/53824
+ * resolve.c (resolve_allocate_deallocate): If both
+ start indices are NULL, skip the test for equality.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * f95-lang.c: Include dumpfile.h instead of tree-dump.h.
+ * Make-lang.in: Fix dependencies.
+
+2012-07-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/53956
+ * gfortran.h (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Modified
+ prototypes.
+ * symbol.c (gfc_copy_formal_args): New argument 'if_src'. Copy if_source
+ of dummy procedures.
+ (gfc_copy_formal_args_ppc): Ditto.
+ * resolve.c (resolve_procedure_interface): Pass IFSRC_DECL to
+ gfc_copy_formal_args.
+ (resolve_fl_derived0): Pass IFSRC_DECL to gfc_copy_formal_args_ppc.
+
+2012-07-12 Tobias Burnus <burnus@net-b.de>
+
+ * trans-expr.c (conv_isocbinding_procedure): Generate c_f_pointer code
+ inline.
+
+2012-07-11 Steven Bosscher <steven@gcc.gnu.org>
+
+ * trans.c: Do not include defaults.h.
+ * trans-intrinsic.c: Likewise.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gfortran.h: Do not include coretypes.h here.
+ Make it an error to include this before coretypes.h
+ * openmp.c: Include coretypes.h.
+ * interface.c: Likewise.
+ * intrinsic.c: Likewise.
+ * symbol.c: Likewise.
+ * class.c: Likewise.
+ * decl.c: Likewise.
+ * matchexp.c: Likewise.
+ * dump-parse-tree.c: Likewise.
+ * array.c: Likewise.
+ * constructor.c: Likewise.
+ * error.c: Likewise.
+ * data.c: Likewise.
+ * expr.c: Likewise.
+ * module.c: Likewise.
+ * scanner.c: Likewise.
+ * bbt.c: Likewise.
+ * io.c: Likewise.
+ * frontend-passes.c: Likewise.
+ * resolve.c: Likewise.
+ * st.c: Likewise.
+ * target-memory.c: Likewise.
+ * match.c: Likewise.
+ * arith.c: Likewise.
+ * parse.c: Likewise.
+ * check.c: Likewise.
+ * dependency.c: Likewise.
+ * primary.c: Likewise.
+ * misc.c: Likewise.
+ * simplify.c: Likewise.
+
+2012-07-05 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/53732
+ * trans-array.c (gfc_add_loop_ss_code): Disable self recursive calls
+ handling nested loop(s) if the subscript flag is true.
+
+2012-07-05 Uros Bizjak <ubizjak@gmail.com>
+
+ PR fortran/53449
+ * parse.c (gfc_parse_file): Initialize errors_before.
+
2012-06-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/41951
@@ -308,8 +950,8 @@
2012-05-05 Janne Blomqvist <jb@gcc.gnu.org>
- * gfortran.texi (GFORTRAN_TMPDIR): Rename to TMPDIR, explain
- algorithm for choosing temp directory.
+ * gfortran.texi (GFORTRAN_TMPDIR): Rename to TMPDIR, explain
+ algorithm for choosing temp directory.
2012-05-04 Tobias Burnus <burnus@net-b.de>
diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in
index 7bcc19d3c7a..a74eb7f7278 100644
--- a/gcc/fortran/Make-lang.in
+++ b/gcc/fortran/Make-lang.in
@@ -329,7 +329,7 @@ $(F95_PARSER_OBJS): fortran/gfortran.h fortran/libgfortran.h \
fortran/intrinsic.h fortran/match.h fortran/constructor.h \
fortran/parse.h fortran/arith.h fortran/target-memory.h \
$(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TM_P_H) coretypes.h \
- $(RTL_H) $(TREE_H) $(TREE_DUMP_H) $(GGC_H) $(EXPR_H) \
+ dumpfile.h $(TREE_H) dumpfile.h $(GGC_H) \
$(FLAGS_H) $(DIAGNOSTIC_H) errors.h $(FUNCTION_H) \
fortran/iso-c-binding.def fortran/iso-fortran-env.def
fortran/openmp.o: pointer-set.h $(TARGET_H) toplev.h
diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c
index 53a9dad42fe..6fa7c70fe9c 100644
--- a/gcc/fortran/arith.c
+++ b/gcc/fortran/arith.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "arith.h"
@@ -902,7 +903,7 @@ arith_power (gfc_expr *op1, gfc_expr *op2, gfc_expr **resultp)
if (gfc_init_expr_flag)
{
- if (gfc_notify_std (GFC_STD_F2003,"Fortran 2003: Noninteger "
+ if (gfc_notify_std (GFC_STD_F2003, "Noninteger "
"exponent in an initialization "
"expression at %L", &op2->where) == FAILURE)
return ARITH_PROHIBIT;
@@ -924,7 +925,7 @@ arith_power (gfc_expr *op1, gfc_expr *op2, gfc_expr **resultp)
{
if (gfc_init_expr_flag)
{
- if (gfc_notify_std (GFC_STD_F2003,"Fortran 2003: Noninteger "
+ if (gfc_notify_std (GFC_STD_F2003, "Noninteger "
"exponent in an initialization "
"expression at %L", &op2->where) == FAILURE)
return ARITH_PROHIBIT;
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index b36d517cff7..07fecd8aaf3 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -1,6 +1,6 @@
/* Array things
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011, 2012 Free Software Foundation, Inc.
Contributed by Andy Vaught
This file is part of GCC.
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "match.h"
#include "constructor.h"
@@ -49,8 +50,6 @@ gfc_copy_array_ref (gfc_array_ref *src)
dest->stride[i] = gfc_copy_expr (src->stride[i]);
}
- dest->offset = gfc_copy_expr (src->offset);
-
return dest;
}
@@ -160,7 +159,7 @@ gfc_match_array_ref (gfc_array_ref *ar, gfc_array_spec *as, int init,
match m;
bool matched_bracket = false;
- memset (ar, '\0', sizeof (ar));
+ memset (ar, '\0', sizeof (*ar));
ar->where = gfc_current_locus;
ar->as = as;
@@ -389,9 +388,11 @@ match_array_element_spec (gfc_array_spec *as)
{
gfc_expr **upper, **lower;
match m;
+ int rank;
- lower = &as->lower[as->rank + as->corank - 1];
- upper = &as->upper[as->rank + as->corank - 1];
+ rank = as->rank == -1 ? 0 : as->rank;
+ lower = &as->lower[rank + as->corank - 1];
+ upper = &as->upper[rank + as->corank - 1];
if (gfc_match_char ('*') == MATCH_YES)
{
@@ -457,6 +458,20 @@ gfc_match_array_spec (gfc_array_spec **asp, bool match_dim, bool match_codim)
goto coarray;
}
+ if (gfc_match (" .. )") == MATCH_YES)
+ {
+ as->type = AS_ASSUMED_RANK;
+ as->rank = -1;
+
+ if (gfc_notify_std (GFC_STD_F2008_TS, "Assumed-rank array at %C")
+ == FAILURE)
+ goto cleanup;
+
+ if (!match_codim)
+ goto done;
+ goto coarray;
+ }
+
for (;;)
{
as->rank++;
@@ -535,6 +550,9 @@ gfc_match_array_spec (gfc_array_spec **asp, bool match_dim, bool match_codim)
gfc_error ("Bad specification for assumed size array at %C");
goto cleanup;
+
+ case AS_ASSUMED_RANK:
+ gcc_unreachable ();
}
if (gfc_match_char (')') == MATCH_YES)
@@ -554,7 +572,7 @@ gfc_match_array_spec (gfc_array_spec **asp, bool match_dim, bool match_codim)
}
if (as->corank + as->rank >= 7
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Array "
+ && gfc_notify_std (GFC_STD_F2008, "Array "
"specification at %C with more than 7 dimensions")
== FAILURE)
goto cleanup;
@@ -567,7 +585,7 @@ coarray:
if (gfc_match_char ('[') != MATCH_YES)
goto done;
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Coarray declaration at %C")
+ if (gfc_notify_std (GFC_STD_F2008, "Coarray declaration at %C")
== FAILURE)
goto cleanup;
@@ -641,6 +659,9 @@ coarray:
case AS_ASSUMED_SIZE:
gfc_error ("Bad specification for assumed size array at %C");
goto cleanup;
+
+ case AS_ASSUMED_RANK:
+ gcc_unreachable ();
}
if (gfc_match_char (']') == MATCH_YES)
@@ -727,6 +748,14 @@ gfc_set_array_spec (gfc_symbol *sym, gfc_array_spec *as, locus *error_loc)
return SUCCESS;
}
+ if ((sym->as->type == AS_ASSUMED_RANK && as->corank)
+ || (as->type == AS_ASSUMED_RANK && sym->as->corank))
+ {
+ gfc_error ("The assumed-rank array '%s' at %L shall not have a "
+ "codimension", sym->name, error_loc);
+ return FAILURE;
+ }
+
if (as->corank)
{
/* The "sym" has no corank (checked via gfc_add_codimension). Thus
@@ -1026,7 +1055,7 @@ gfc_match_array_constructor (gfc_expr **result)
return MATCH_NO;
else
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: [...] "
+ if (gfc_notify_std (GFC_STD_F2003, "[...] "
"style array constructors at %C") == FAILURE)
return MATCH_ERROR;
end_delim = " ]";
@@ -1046,7 +1075,7 @@ gfc_match_array_constructor (gfc_expr **result)
if (seen_ts)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Array constructor "
+ if (gfc_notify_std (GFC_STD_F2003, "Array constructor "
"including type specification at %C") == FAILURE)
goto cleanup;
@@ -1717,6 +1746,50 @@ gfc_expanded_ac (gfc_expr *e)
/*************** Type resolution of array constructors ***************/
+
+/* The symbol expr_is_sought_symbol_ref will try to find. */
+static const gfc_symbol *sought_symbol = NULL;
+
+
+/* Tells whether the expression E is a variable reference to the symbol
+ in the static variable SOUGHT_SYMBOL, and sets the locus pointer WHERE
+ accordingly.
+ To be used with gfc_expr_walker: if a reference is found we don't need
+ to look further so we return 1 to skip any further walk. */
+
+static int
+expr_is_sought_symbol_ref (gfc_expr **e, int *walk_subtrees ATTRIBUTE_UNUSED,
+ void *where)
+{
+ gfc_expr *expr = *e;
+ locus *sym_loc = (locus *)where;
+
+ if (expr->expr_type == EXPR_VARIABLE
+ && expr->symtree->n.sym == sought_symbol)
+ {
+ *sym_loc = expr->where;
+ return 1;
+ }
+
+ return 0;
+}
+
+
+/* Tells whether the expression EXPR contains a reference to the symbol
+ SYM and in that case sets the position SYM_LOC where the reference is. */
+
+static bool
+find_symbol_in_expr (gfc_symbol *sym, gfc_expr *expr, locus *sym_loc)
+{
+ int ret;
+
+ sought_symbol = sym;
+ ret = gfc_expr_walker (&expr, &expr_is_sought_symbol_ref, sym_loc);
+ sought_symbol = NULL;
+ return ret;
+}
+
+
/* Recursive array list resolution function. All of the elements must
be of the same type. */
@@ -1725,14 +1798,46 @@ resolve_array_list (gfc_constructor_base base)
{
gfc_try t;
gfc_constructor *c;
+ gfc_iterator *iter;
t = SUCCESS;
for (c = gfc_constructor_first (base); c; c = gfc_constructor_next (c))
{
- if (c->iterator != NULL
- && gfc_resolve_iterator (c->iterator, false) == FAILURE)
- t = FAILURE;
+ iter = c->iterator;
+ if (iter != NULL)
+ {
+ gfc_symbol *iter_var;
+ locus iter_var_loc;
+
+ if (gfc_resolve_iterator (iter, false) == FAILURE)
+ t = FAILURE;
+
+ /* Check for bounds referencing the iterator variable. */
+ gcc_assert (iter->var->expr_type == EXPR_VARIABLE);
+ iter_var = iter->var->symtree->n.sym;
+ if (find_symbol_in_expr (iter_var, iter->start, &iter_var_loc))
+ {
+ if (gfc_notify_std (GFC_STD_LEGACY, "AC-IMPLIED-DO initial "
+ "expression references control variable "
+ "at %L", &iter_var_loc) == FAILURE)
+ t = FAILURE;
+ }
+ if (find_symbol_in_expr (iter_var, iter->end, &iter_var_loc))
+ {
+ if (gfc_notify_std (GFC_STD_LEGACY, "AC-IMPLIED-DO final "
+ "expression references control variable "
+ "at %L", &iter_var_loc) == FAILURE)
+ t = FAILURE;
+ }
+ if (find_symbol_in_expr (iter_var, iter->step, &iter_var_loc))
+ {
+ if (gfc_notify_std (GFC_STD_LEGACY, "AC-IMPLIED-DO step "
+ "expression references control variable "
+ "at %L", &iter_var_loc) == FAILURE)
+ t = FAILURE;
+ }
+ }
if (gfc_resolve_expr (c->expr) == FAILURE)
t = FAILURE;
@@ -1959,6 +2064,9 @@ spec_size (gfc_array_spec *as, mpz_t *result)
mpz_t size;
int d;
+ if (as->type == AS_ASSUMED_RANK)
+ return FAILURE;
+
mpz_init_set_ui (*result, 1);
for (d = 0; d < as->rank; d++)
@@ -2115,6 +2223,9 @@ gfc_array_dimen_size (gfc_expr *array, int dimen, mpz_t *result)
if (array->ts.type == BT_CLASS)
return FAILURE;
+ if (array->rank == -1)
+ return FAILURE;
+
if (dimen < 0 || array == NULL || dimen > array->rank - 1)
gfc_internal_error ("gfc_array_dimen_size(): Bad dimension");
diff --git a/gcc/fortran/bbt.c b/gcc/fortran/bbt.c
index a78467be8b7..000f04bcbf8 100644
--- a/gcc/fortran/bbt.c
+++ b/gcc/fortran/bbt.c
@@ -38,6 +38,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
typedef struct gfc_treap
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index 7d505d5e9d9..2235b52d6d3 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "intrinsic.h"
@@ -619,6 +620,10 @@ dim_rank_check (gfc_expr *dim, gfc_expr *array, int allow_assumed)
else
rank = array->rank;
+ /* Assumed-rank array. */
+ if (rank == -1)
+ rank = GFC_MAX_DIMENSIONS;
+
if (array->expr_type == EXPR_VARIABLE)
{
ar = gfc_find_array_ref (array);
@@ -861,7 +866,7 @@ gfc_check_a_p (gfc_expr *a, gfc_expr *p)
if (a->ts.kind != p->ts.kind)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Different type kinds at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "Different type kinds at %L",
&p->where) == FAILURE)
return FAILURE;
}
@@ -1080,7 +1085,7 @@ gfc_check_besn (gfc_expr *n, gfc_expr *x)
{
int i;
gfc_extract_int (n, &i);
- if (i < 0 && gfc_notify_std (GFC_STD_GNU, "Extension: Negative argument "
+ if (i < 0 && gfc_notify_std (GFC_STD_GNU, "Negative argument "
"N at %L", &n->where) == FAILURE)
return FAILURE;
}
@@ -1273,6 +1278,17 @@ gfc_check_cmplx (gfc_expr *x, gfc_expr *y, gfc_expr *kind)
if (kind_check (kind, 2, BT_COMPLEX) == FAILURE)
return FAILURE;
+ if (!kind && gfc_option.gfc_warn_conversion
+ && x->ts.type == BT_REAL && x->ts.kind > gfc_default_real_kind)
+ gfc_warning_now ("Conversion from %s to default-kind COMPLEX(%d) at %L "
+ "might loose precision, consider using the KIND argument",
+ gfc_typename (&x->ts), gfc_default_real_kind, &x->where);
+ else if (y && !kind && gfc_option.gfc_warn_conversion
+ && y->ts.type == BT_REAL && y->ts.kind > gfc_default_real_kind)
+ gfc_warning_now ("Conversion from %s to default-kind COMPLEX(%d) at %L "
+ "might loose precision, consider using the KIND argument",
+ gfc_typename (&y->ts), gfc_default_real_kind, &y->where);
+
return SUCCESS;
}
@@ -1305,7 +1321,7 @@ gfc_check_count (gfc_expr *mask, gfc_expr *dim, gfc_expr *kind)
return FAILURE;
if (kind_check (kind, 2, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -1663,7 +1679,7 @@ gfc_check_float (gfc_expr *a)
return FAILURE;
if ((a->ts.kind != gfc_default_integer_kind)
- && gfc_notify_std (GFC_STD_GNU, "GNU extension: non-default INTEGER "
+ && gfc_notify_std (GFC_STD_GNU, "non-default INTEGER "
"kind argument to %s intrinsic at %L",
gfc_current_intrinsic, &a->where) == FAILURE )
return FAILURE;
@@ -1723,7 +1739,7 @@ gfc_check_fn_rc2008 (gfc_expr *a)
return FAILURE;
if (a->ts.type == BT_COMPLEX
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: COMPLEX argument '%s' "
+ && gfc_notify_std (GFC_STD_F2008, "COMPLEX argument '%s' "
"argument of '%s' intrinsic at %L",
gfc_current_intrinsic_arg[0]->name,
gfc_current_intrinsic, &a->where) == FAILURE)
@@ -1791,7 +1807,7 @@ gfc_check_iand (gfc_expr *i, gfc_expr *j)
if (i->ts.kind != j->ts.kind)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Different type kinds at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "Different type kinds at %L",
&i->where) == FAILURE)
return FAILURE;
}
@@ -1836,7 +1852,7 @@ gfc_check_ichar_iachar (gfc_expr *c, gfc_expr *kind)
if (kind_check (kind, 1, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -1917,7 +1933,7 @@ gfc_check_ieor (gfc_expr *i, gfc_expr *j)
if (i->ts.kind != j->ts.kind)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Different type kinds at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "Different type kinds at %L",
&i->where) == FAILURE)
return FAILURE;
}
@@ -1939,7 +1955,7 @@ gfc_check_index (gfc_expr *string, gfc_expr *substring, gfc_expr *back,
if (kind_check (kind, 3, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -1991,7 +2007,7 @@ gfc_check_ior (gfc_expr *i, gfc_expr *j)
if (i->ts.kind != j->ts.kind)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Different type kinds at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "Different type kinds at %L",
&i->where) == FAILURE)
return FAILURE;
}
@@ -2133,7 +2149,7 @@ gfc_check_lbound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind)
if (kind_check (kind, 2, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -2178,7 +2194,7 @@ gfc_check_len_lentrim (gfc_expr *s, gfc_expr *kind)
if (kind_check (kind, 1, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -2343,7 +2359,7 @@ check_rest (bt type, int kind, gfc_actual_arglist *arglist)
{
if (x->ts.type == type)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Different type "
+ if (gfc_notify_std (GFC_STD_GNU, "Different type "
"kinds at %L", &x->where) == FAILURE)
return FAILURE;
}
@@ -2380,7 +2396,7 @@ gfc_check_min_max (gfc_actual_arglist *arg)
if (x->ts.type == BT_CHARACTER)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with CHARACTER argument at %L",
gfc_current_intrinsic, &x->where) == FAILURE)
return FAILURE;
@@ -2862,7 +2878,7 @@ gfc_check_null (gfc_expr *mold)
}
if (attr.allocatable
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: NULL intrinsic with "
+ && gfc_notify_std (GFC_STD_F2003, "NULL intrinsic with "
"allocatable MOLD at %L", &mold->where) == FAILURE)
return FAILURE;
@@ -3398,7 +3414,7 @@ gfc_check_scan (gfc_expr *x, gfc_expr *y, gfc_expr *z, gfc_expr *kind)
if (kind_check (kind, 3, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -3459,7 +3475,7 @@ gfc_try
gfc_check_selected_real_kind (gfc_expr *p, gfc_expr *r, gfc_expr *radix)
{
if (p == NULL && r == NULL
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SELECTED_REAL_KIND with"
+ && gfc_notify_std (GFC_STD_F2008, "SELECTED_REAL_KIND with"
" neither 'P' nor 'R' argument at %L",
gfc_current_intrinsic_where) == FAILURE)
return FAILURE;
@@ -3490,7 +3506,7 @@ gfc_check_selected_real_kind (gfc_expr *p, gfc_expr *r, gfc_expr *radix)
if (scalar_check (radix, 1) == FAILURE)
return FAILURE;
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: '%s' intrinsic with "
+ if (gfc_notify_std (GFC_STD_F2008, "'%s' intrinsic with "
"RADIX argument at %L", gfc_current_intrinsic,
&radix->where) == FAILURE)
return FAILURE;
@@ -3532,7 +3548,7 @@ gfc_check_shape (gfc_expr *source, gfc_expr *kind)
if (kind_check (kind, 1, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -3587,7 +3603,7 @@ gfc_check_size (gfc_expr *array, gfc_expr *dim, gfc_expr *kind)
if (kind_check (kind, 2, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -3645,7 +3661,7 @@ gfc_check_sngl (gfc_expr *a)
return FAILURE;
if ((a->ts.kind != gfc_default_double_kind)
- && gfc_notify_std (GFC_STD_GNU, "GNU extension: non double precision "
+ && gfc_notify_std (GFC_STD_GNU, "non double precision "
"REAL argument to %s intrinsic at %L",
gfc_current_intrinsic, &a->where) == FAILURE)
return FAILURE;
@@ -4126,7 +4142,7 @@ gfc_check_ubound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind)
if (kind_check (kind, 2, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
@@ -4255,7 +4271,7 @@ gfc_check_verify (gfc_expr *x, gfc_expr *y, gfc_expr *z, gfc_expr *kind)
if (kind_check (kind, 3, BT_INTEGER) == FAILURE)
return FAILURE;
- if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ if (kind && gfc_notify_std (GFC_STD_F2003, "'%s' intrinsic "
"with KIND argument at %L",
gfc_current_intrinsic, &kind->where) == FAILURE)
return FAILURE;
diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c
index c71aa4a7c48..21a91baec20 100644
--- a/gcc/fortran/class.c
+++ b/gcc/fortran/class.c
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "constructor.h"
@@ -219,7 +220,7 @@ gfc_add_component_ref (gfc_expr *e, const char *name)
void
gfc_add_class_array_ref (gfc_expr *e)
{
- int rank = CLASS_DATA (e)->as->rank;
+ int rank = CLASS_DATA (e)->as->rank;
gfc_array_spec *as = CLASS_DATA (e)->as;
gfc_ref *ref = NULL;
gfc_add_component_ref (e, "_data");
@@ -497,6 +498,7 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
gfc_symbol *fclass;
gfc_symbol *vtab;
gfc_component *c;
+ int rank;
if (as && *as && (*as)->type == AS_ASSUMED_SIZE)
{
@@ -517,11 +519,14 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
return SUCCESS;
/* Determine the name of the encapsulating type. */
+ rank = !(*as) || (*as)->rank == -1 ? GFC_MAX_DIMENSIONS : (*as)->rank;
get_unique_hashed_string (tname, ts->u.derived);
if ((*as) && attr->allocatable)
- sprintf (name, "__class_%s_%d_%da", tname, (*as)->rank, (*as)->corank);
+ sprintf (name, "__class_%s_%d_%da", tname, rank, (*as)->corank);
+ else if ((*as) && attr->pointer)
+ sprintf (name, "__class_%s_%d_%dp", tname, rank, (*as)->corank);
else if ((*as))
- sprintf (name, "__class_%s_%d_%d", tname, (*as)->rank, (*as)->corank);
+ sprintf (name, "__class_%s_%d_%d", tname, rank, (*as)->corank);
else if (attr->pointer)
sprintf (name, "__class_%s_p", tname);
else if (attr->allocatable)
diff --git a/gcc/fortran/constructor.c b/gcc/fortran/constructor.c
index 600488d640f..182d00d165d 100644
--- a/gcc/fortran/constructor.c
+++ b/gcc/fortran/constructor.c
@@ -20,6 +20,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "constructor.h"
diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c
index 67da371ad54..385ca898dcd 100644
--- a/gcc/fortran/data.c
+++ b/gcc/fortran/data.c
@@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "data.h"
#include "constructor.h"
@@ -314,7 +315,7 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index,
exprd = (LOCATION_LINE (con->expr->where.lb->location)
> LOCATION_LINE (rvalue->where.lb->location))
? con->expr : rvalue;
- if (gfc_notify_std (GFC_STD_GNU,"Extension: "
+ if (gfc_notify_std (GFC_STD_GNU,
"re-initialization of '%s' at %L",
symbol->name, &exprd->where) == FAILURE)
return FAILURE;
@@ -480,7 +481,7 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index,
expr = (LOCATION_LINE (init->where.lb->location)
> LOCATION_LINE (rvalue->where.lb->location))
? init : rvalue;
- if (gfc_notify_std (GFC_STD_GNU,"Extension: "
+ if (gfc_notify_std (GFC_STD_GNU,
"re-initialization of '%s' at %L",
symbol->name, &expr->where) == FAILURE)
return FAILURE;
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 26b5059cd9f..efd21dc7ec7 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "match.h"
#include "parse.h"
@@ -268,7 +269,7 @@ var_element (gfc_data_variable *new_var)
if (gfc_current_state () != COMP_BLOCK_DATA
&& sym->attr.in_common
- && gfc_notify_std (GFC_STD_GNU, "Extension: initialization of "
+ && gfc_notify_std (GFC_STD_GNU, "initialization of "
"common block variable '%s' in DATA statement at %C",
sym->name) == FAILURE)
return MATCH_ERROR;
@@ -588,11 +589,18 @@ cleanup:
/* Auxiliary function to merge DIMENSION and CODIMENSION array specs. */
-static void
+static gfc_try
merge_array_spec (gfc_array_spec *from, gfc_array_spec *to, bool copy)
{
int i;
+ if ((from->type == AS_ASSUMED_RANK && to->corank)
+ || (to->type == AS_ASSUMED_RANK && from->corank))
+ {
+ gfc_error ("The assumed-rank array at %C shall not have a codimension");
+ return FAILURE;
+ }
+
if (to->rank == 0 && from->rank > 0)
{
to->rank = from->rank;
@@ -638,6 +646,8 @@ merge_array_spec (gfc_array_spec *from, gfc_array_spec *to, bool copy)
}
}
}
+
+ return SUCCESS;
}
@@ -676,7 +686,7 @@ char_len_param_value (gfc_expr **expr, bool *deferred)
if (gfc_match_char (':') == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: deferred type "
+ if (gfc_notify_std (GFC_STD_F2003, "deferred type "
"parameter at %C") == FAILURE)
return MATCH_ERROR;
@@ -722,7 +732,7 @@ syntax:
char_len_param_value in parenthesis. */
static match
-match_char_length (gfc_expr **expr, bool *deferred)
+match_char_length (gfc_expr **expr, bool *deferred, bool obsolescent_check)
{
int length;
match m;
@@ -738,8 +748,9 @@ match_char_length (gfc_expr **expr, bool *deferred)
if (m == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: "
- "Old-style character length at %C") == FAILURE)
+ if (obsolescent_check
+ && gfc_notify_std (GFC_STD_F95_OBS,
+ "Old-style character length at %C") == FAILURE)
return MATCH_ERROR;
*expr = gfc_get_int_expr (gfc_default_integer_kind, NULL, length);
return m;
@@ -880,7 +891,6 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry)
return rc;
sym = *result;
- gfc_current_ns->refs++;
if (sym && !sym->gfc_new && gfc_current_state () != COMP_INTERFACE)
{
@@ -1026,8 +1036,8 @@ gfc_verify_c_interop_param (gfc_symbol *sym)
"because it is polymorphic",
sym->name, &(sym->declared_at),
sym->ns->proc_name->name);
- else
- gfc_warning ("Variable '%s' at %L is a parameter to the "
+ else if (gfc_option.warn_c_binding_type)
+ gfc_warning ("Variable '%s' at %L is a dummy argument of the "
"BIND(C) procedure '%s' but may not be C "
"interoperable",
sym->name, &(sym->declared_at),
@@ -1081,7 +1091,7 @@ gfc_verify_c_interop_param (gfc_symbol *sym)
retval = FAILURE;
}
else if (sym->attr.optional == 1
- && gfc_notify_std (GFC_STD_F2008_TS, "TS29113: Variable '%s' "
+ && gfc_notify_std (GFC_STD_F2008_TS, "Variable '%s' "
"at %L with OPTIONAL attribute in "
"procedure '%s' which is BIND(C)",
sym->name, &(sym->declared_at),
@@ -1090,29 +1100,15 @@ gfc_verify_c_interop_param (gfc_symbol *sym)
retval = FAILURE;
/* Make sure that if it has the dimension attribute, that it is
- either assumed size or explicit shape. */
- if (sym->as != NULL)
- {
- if (sym->as->type == AS_ASSUMED_SHAPE)
- {
- gfc_error ("Assumed-shape array '%s' at %L cannot be an "
- "argument to the procedure '%s' at %L because "
- "the procedure is BIND(C)", sym->name,
- &(sym->declared_at), sym->ns->proc_name->name,
- &(sym->ns->proc_name->declared_at));
- retval = FAILURE;
- }
-
- if (sym->as->type == AS_DEFERRED)
- {
- gfc_error ("Deferred-shape array '%s' at %L cannot be an "
- "argument to the procedure '%s' at %L because "
- "the procedure is BIND(C)", sym->name,
- &(sym->declared_at), sym->ns->proc_name->name,
- &(sym->ns->proc_name->declared_at));
- retval = FAILURE;
- }
- }
+ either assumed size or explicit shape. Deferred shape is already
+ covered by the pointer/allocatable attribute. */
+ if (sym->as != NULL && sym->as->type == AS_ASSUMED_SHAPE
+ && gfc_notify_std (GFC_STD_F2008_TS, "Assumed-shape array '%s' "
+ "at %L as dummy argument to the BIND(C) "
+ "procedure '%s' at %L", sym->name,
+ &(sym->declared_at), sym->ns->proc_name->name,
+ &(sym->ns->proc_name->declared_at)) == FAILURE)
+ retval = FAILURE;
}
}
@@ -1737,7 +1733,7 @@ match_pointer_init (gfc_expr **init, int procptr)
if (!procptr)
gfc_resolve_expr (*init);
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: non-NULL pointer "
+ if (gfc_notify_std (GFC_STD_F2008, "non-NULL pointer "
"initialization at %C") == FAILURE)
return MATCH_ERROR;
@@ -1808,8 +1804,12 @@ variable_decl (int elem)
if (m == MATCH_NO)
as = gfc_copy_array_spec (current_as);
- else if (current_as)
- merge_array_spec (current_as, as, true);
+ else if (current_as
+ && merge_array_spec (current_as, as, true) == FAILURE)
+ {
+ m = MATCH_ERROR;
+ goto cleanup;
+ }
if (gfc_option.flag_cray_pointer)
cp_as = gfc_copy_array_spec (as);
@@ -1834,7 +1834,7 @@ variable_decl (int elem)
if (as->type == AS_IMPLIED_SHAPE
&& gfc_notify_std (GFC_STD_F2008,
- "Fortran 2008: Implied-shape array at %L",
+ "Implied-shape array at %L",
&var_locus) == FAILURE)
{
m = MATCH_ERROR;
@@ -1848,7 +1848,7 @@ variable_decl (int elem)
if (current_ts.type == BT_CHARACTER)
{
- switch (match_char_length (&char_len, &cl_deferred))
+ switch (match_char_length (&char_len, &cl_deferred, false))
{
case MATCH_YES:
cl = gfc_new_charlen (gfc_current_ns, NULL);
@@ -1993,7 +1993,7 @@ variable_decl (int elem)
if (!colon_seen && gfc_match (" /") == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Old-style "
+ if (gfc_notify_std (GFC_STD_GNU, "Old-style "
"initialization at %C") == FAILURE)
return MATCH_ERROR;
@@ -2410,7 +2410,7 @@ gfc_match_char_spec (gfc_typespec *ts)
/* Try the old-style specification first. */
old_char_selector = 0;
- m = match_char_length (&len, &deferred);
+ m = match_char_length (&len, &deferred, true);
if (m != MATCH_NO)
{
if (m == MATCH_YES)
@@ -2586,7 +2586,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
if (gfc_match (" byte") == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: BYTE type at %C")
+ if (gfc_notify_std (GFC_STD_GNU, "BYTE type at %C")
== FAILURE)
return MATCH_ERROR;
@@ -2617,7 +2617,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
gfc_error ("Assumed type at %C is not allowed for components");
return MATCH_ERROR;
}
- if (gfc_notify_std (GFC_STD_F2008_TS, "TS 29113: Assumed type "
+ if (gfc_notify_std (GFC_STD_F2008_TS, "Assumed type "
"at %C") == FAILURE)
return MATCH_ERROR;
ts->type = BT_ASSUMED;
@@ -2640,7 +2640,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
|| (!matched_type && gfc_match (" character") == MATCH_YES))
{
if (matched_type
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: TYPE with "
+ && gfc_notify_std (GFC_STD_F2008, "TYPE with "
"intrinsic-type-spec at %C") == FAILURE)
return MATCH_ERROR;
@@ -2671,7 +2671,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
|| (!matched_type && gfc_match (" double precision") == MATCH_YES))
{
if (matched_type
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: TYPE with "
+ && gfc_notify_std (GFC_STD_F2008, "TYPE with "
"intrinsic-type-spec at %C") == FAILURE)
return MATCH_ERROR;
if (matched_type && gfc_match_char (')') != MATCH_YES)
@@ -2696,12 +2696,12 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
&& gfc_match (" complex") == MATCH_YES)))
|| (!matched_type && gfc_match (" double complex") == MATCH_YES))
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: DOUBLE COMPLEX at %C")
+ if (gfc_notify_std (GFC_STD_GNU, "DOUBLE COMPLEX at %C")
== FAILURE)
return MATCH_ERROR;
if (matched_type
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: TYPE with "
+ && gfc_notify_std (GFC_STD_F2008, "TYPE with "
"intrinsic-type-spec at %C") == FAILURE)
return MATCH_ERROR;
@@ -2743,7 +2743,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
return m;
ts->type = BT_CLASS;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: CLASS statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "CLASS statement at %C")
== FAILURE)
return MATCH_ERROR;
}
@@ -2851,7 +2851,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
get_kind:
if (matched_type
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: TYPE with "
+ && gfc_notify_std (GFC_STD_F2008, "TYPE with "
"intrinsic-type-spec at %C") == FAILURE)
return MATCH_ERROR;
@@ -3136,7 +3136,7 @@ gfc_match_import (void)
return MATCH_ERROR;
}
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: IMPORT statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "IMPORT statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -3521,7 +3521,8 @@ match_attr_spec (void)
current_as = as;
else if (m == MATCH_YES)
{
- merge_array_spec (as, current_as, false);
+ if (merge_array_spec (as, current_as, false) == FAILURE)
+ m = MATCH_ERROR;
free (as);
}
@@ -3632,7 +3633,7 @@ match_attr_spec (void)
{
if (d == DECL_ALLOCATABLE)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ALLOCATABLE "
+ if (gfc_notify_std (GFC_STD_F2003, "ALLOCATABLE "
"attribute at %C in a TYPE definition")
== FAILURE)
{
@@ -3660,7 +3661,7 @@ match_attr_spec (void)
&& gfc_state_stack->previous
&& gfc_state_stack->previous->state == COMP_MODULE)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Attribute %s "
+ if (gfc_notify_std (GFC_STD_F2003, "Attribute %s "
"at %L in a TYPE definition", attr,
&seen_at[d])
== FAILURE)
@@ -3686,7 +3687,7 @@ match_attr_spec (void)
case DECL_ASYNCHRONOUS:
if (gfc_notify_std (GFC_STD_F2003,
- "Fortran 2003: ASYNCHRONOUS attribute at %C")
+ "ASYNCHRONOUS attribute at %C")
== FAILURE)
t = FAILURE;
else
@@ -3699,7 +3700,7 @@ match_attr_spec (void)
case DECL_CONTIGUOUS:
if (gfc_notify_std (GFC_STD_F2008,
- "Fortran 2008: CONTIGUOUS attribute at %C")
+ "CONTIGUOUS attribute at %C")
== FAILURE)
t = FAILURE;
else
@@ -3751,7 +3752,7 @@ match_attr_spec (void)
break;
}
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PROTECTED "
+ if (gfc_notify_std (GFC_STD_F2003, "PROTECTED "
"attribute at %C")
== FAILURE)
t = FAILURE;
@@ -3782,7 +3783,7 @@ match_attr_spec (void)
break;
case DECL_VALUE:
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: VALUE attribute "
+ if (gfc_notify_std (GFC_STD_F2003, "VALUE attribute "
"at %C")
== FAILURE)
t = FAILURE;
@@ -3792,7 +3793,7 @@ match_attr_spec (void)
case DECL_VOLATILE:
if (gfc_notify_std (GFC_STD_F2003,
- "Fortran 2003: VOLATILE attribute at %C")
+ "VOLATILE attribute at %C")
== FAILURE)
t = FAILURE;
else
@@ -4372,7 +4373,7 @@ gfc_match_prefix (gfc_typespec *ts)
if (gfc_match ("impure% ") == MATCH_YES)
{
if (gfc_notify_std (GFC_STD_F2008,
- "Fortran 2008: IMPURE procedure at %C")
+ "IMPURE procedure at %C")
== FAILURE)
goto error;
@@ -4658,7 +4659,7 @@ gfc_match_suffix (gfc_symbol *sym, gfc_symbol **result)
/* Fortran 2008 draft allows BIND(C) for internal procedures. */
if (gfc_current_state () == COMP_CONTAINS
&& sym->ns->proc_name->attr.flavor != FL_MODULE
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: BIND(C) attribute "
+ && gfc_notify_std (GFC_STD_F2008, "BIND(C) attribute "
"at %L may not be specified for an internal "
"procedure", &gfc_current_locus)
== FAILURE)
@@ -4790,41 +4791,20 @@ match_procedure_interface (gfc_symbol **proc_if)
gfc_current_ns = old_ns;
*proc_if = st->n.sym;
- /* Various interface checks. */
if (*proc_if)
{
(*proc_if)->refs++;
/* Resolve interface if possible. That way, attr.procedure is only set
if it is declared by a later procedure-declaration-stmt, which is
- invalid per C1212. */
+ invalid per F08:C1216 (cf. resolve_procedure_interface). */
while ((*proc_if)->ts.interface)
*proc_if = (*proc_if)->ts.interface;
- if ((*proc_if)->generic)
- {
- gfc_error ("Interface '%s' at %C may not be generic",
- (*proc_if)->name);
- return MATCH_ERROR;
- }
- if ((*proc_if)->attr.proc == PROC_ST_FUNCTION)
- {
- gfc_error ("Interface '%s' at %C may not be a statement function",
- (*proc_if)->name);
- return MATCH_ERROR;
- }
- /* Handle intrinsic procedures. */
- if (!((*proc_if)->attr.external || (*proc_if)->attr.use_assoc
- || (*proc_if)->attr.if_source == IFSRC_IFBODY)
- && (gfc_is_intrinsic ((*proc_if), 0, gfc_current_locus)
- || gfc_is_intrinsic ((*proc_if), 1, gfc_current_locus)))
- (*proc_if)->attr.intrinsic = 1;
- if ((*proc_if)->attr.intrinsic
- && !gfc_intrinsic_actual_ok ((*proc_if)->name, 0))
- {
- gfc_error ("Intrinsic procedure '%s' not allowed "
- "in PROCEDURE statement at %C", (*proc_if)->name);
- return MATCH_ERROR;
- }
+ if ((*proc_if)->attr.flavor == FL_UNKNOWN
+ && (*proc_if)->ts.type == BT_UNKNOWN
+ && gfc_add_flavor (&(*proc_if)->attr, FL_PROCEDURE,
+ (*proc_if)->name, NULL) == FAILURE)
+ return MATCH_ERROR;
}
got_ts:
@@ -5029,7 +5009,7 @@ match_ppc_decl (void)
return MATCH_ERROR;
}
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Procedure pointer "
+ if (gfc_notify_std (GFC_STD_F2003, "Procedure pointer "
"component at %C") == FAILURE)
return MATCH_ERROR;
@@ -5069,6 +5049,7 @@ match_ppc_decl (void)
{
c->ts = ts;
c->ts.interface = gfc_new_symbol ("", gfc_current_ns);
+ c->ts.interface->result = c->ts.interface;
c->ts.interface->ts = ts;
c->ts.interface->attr.flavor = FL_PROCEDURE;
c->ts.interface->attr.function = 1;
@@ -5107,6 +5088,7 @@ match_procedure_in_interface (void)
match m;
gfc_symbol *sym;
char name[GFC_MAX_SYMBOL_LEN + 1];
+ locus old_locus;
if (current_interface.type == INTERFACE_NAMELESS
|| current_interface.type == INTERFACE_ABSTRACT)
@@ -5115,6 +5097,19 @@ match_procedure_in_interface (void)
return MATCH_ERROR;
}
+ /* Check if the F2008 optional double colon appears. */
+ gfc_gobble_whitespace ();
+ old_locus = gfc_current_locus;
+ if (gfc_match ("::") == MATCH_YES)
+ {
+ if (gfc_notify_std (GFC_STD_F2008, "double colon in "
+ "MODULE PROCEDURE statement at %L", &old_locus)
+ == FAILURE)
+ return MATCH_ERROR;
+ }
+ else
+ gfc_current_locus = old_locus;
+
for(;;)
{
m = gfc_match_name (name);
@@ -5177,7 +5172,7 @@ gfc_match_procedure (void)
if (m != MATCH_YES)
return m;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PROCEDURE statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "PROCEDURE statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -5388,7 +5383,7 @@ gfc_match_entry (void)
if (m != MATCH_YES)
return m;
- if (gfc_notify_std (GFC_STD_F2008_OBS, "Fortran 2008 obsolescent feature: "
+ if (gfc_notify_std (GFC_STD_F2008_OBS,
"ENTRY statement at %C") == FAILURE)
return MATCH_ERROR;
@@ -5699,7 +5694,7 @@ gfc_match_subroutine (void)
/* The following is allowed in the Fortran 2008 draft. */
if (gfc_current_state () == COMP_CONTAINS
&& sym->ns->proc_name->attr.flavor != FL_MODULE
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: BIND(C) attribute "
+ && gfc_notify_std (GFC_STD_F2008, "BIND(C) attribute "
"at %L may not be specified for an internal "
"procedure", &gfc_current_locus)
== FAILURE)
@@ -6069,7 +6064,7 @@ gfc_match_end (gfc_statement *st)
{
if (!eos_ok && (*st == ST_END_SUBROUTINE || *st == ST_END_FUNCTION))
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: END statement "
+ if (gfc_notify_std (GFC_STD_F2008, "END statement "
"instead of %s statement at %L",
gfc_ascii_statement (*st), &old_loc) == FAILURE)
goto cleanup;
@@ -6595,7 +6590,7 @@ gfc_match_codimension (void)
match
gfc_match_contiguous (void)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: CONTIGUOUS statement at %C")
+ if (gfc_notify_std (GFC_STD_F2008, "CONTIGUOUS statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -6748,7 +6743,7 @@ gfc_match_protected (void)
}
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PROTECTED statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "PROTECTED statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -7046,7 +7041,7 @@ gfc_match_value (void)
return MATCH_ERROR;
}
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: VALUE statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "VALUE statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -7097,7 +7092,7 @@ gfc_match_volatile (void)
gfc_symbol *sym;
match m;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: VOLATILE statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "VOLATILE statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -7158,7 +7153,7 @@ gfc_match_asynchronous (void)
gfc_symbol *sym;
match m;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ASYNCHRONOUS statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "ASYNCHRONOUS statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -7249,7 +7244,7 @@ gfc_match_modproc (void)
old_locus = gfc_current_locus;
if (gfc_match ("::") == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: double colon in "
+ if (gfc_notify_std (GFC_STD_F2008, "double colon in "
"MODULE PROCEDURE statement at %L", &old_locus)
== FAILURE)
return MATCH_ERROR;
@@ -7416,7 +7411,7 @@ gfc_get_type_attr_spec (symbol_attribute *attr, char *name)
}
else if (gfc_match (" , abstract") == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ABSTRACT type at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "ABSTRACT type at %C")
== FAILURE)
return MATCH_ERROR;
@@ -7647,7 +7642,7 @@ gfc_match_enum (void)
if (m != MATCH_YES)
return m;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ENUM and ENUMERATOR at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "ENUM and ENUMERATOR at %C")
== FAILURE)
return MATCH_ERROR;
@@ -8141,7 +8136,7 @@ match_procedure_in_type (void)
return MATCH_ERROR;
}
- if (num>1 && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: PROCEDURE list"
+ if (num>1 && gfc_notify_std (GFC_STD_F2008, "PROCEDURE list"
" at %C") == FAILURE)
return MATCH_ERROR;
diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c
index a2cf21d65f1..165ab4f0abb 100644
--- a/gcc/fortran/dependency.c
+++ b/gcc/fortran/dependency.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "dependency.h"
#include "constructor.h"
@@ -260,6 +261,9 @@ gfc_dep_compare_expr (gfc_expr *e1, gfc_expr *e2)
n1 = NULL;
n2 = NULL;
+ if (e1 == NULL && e2 == NULL)
+ return 0;
+
/* Remove any integer conversion functions to larger types. */
if (e1->expr_type == EXPR_FUNCTION && e1->value.function.isym
&& e1->value.function.isym->id == GFC_ISYM_CONVERSION
@@ -1216,7 +1220,7 @@ check_section_vs_section (gfc_array_ref *l_ar, gfc_array_ref *r_ar, int n)
else
start_comparison = -2;
- free (one_expr);
+ gfc_free_expr (one_expr);
/* Determine LHS upper and lower bounds. */
if (l_dir == 1)
diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c
index 7f1d28fd7c9..cb8fab4fe35 100644
--- a/gcc/fortran/dump-parse-tree.c
+++ b/gcc/fortran/dump-parse-tree.c
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "constructor.h"
@@ -165,7 +166,7 @@ show_array_spec (gfc_array_spec *as)
fprintf (dumpfile, "(%d [%d]", as->rank, as->corank);
- if (as->rank + as->corank > 0)
+ if (as->rank + as->corank > 0 || as->rank == -1)
{
switch (as->type)
{
@@ -173,6 +174,7 @@ show_array_spec (gfc_array_spec *as)
case AS_DEFERRED: c = "AS_DEFERRED"; break;
case AS_ASSUMED_SIZE: c = "AS_ASSUMED_SIZE"; break;
case AS_ASSUMED_SHAPE: c = "AS_ASSUMED_SHAPE"; break;
+ case AS_ASSUMED_RANK: c = "AS_ASSUMED_RANK"; break;
default:
gfc_internal_error ("show_array_spec(): Unhandled array shape "
"type.");
@@ -567,7 +569,7 @@ show_expr (gfc_expr *p)
if (p->value.function.name == NULL)
{
fprintf (dumpfile, "%s", p->symtree->n.sym->name);
- if (gfc_is_proc_ptr_comp (p, NULL))
+ if (gfc_is_proc_ptr_comp (p))
show_ref (p->ref);
fputc ('[', dumpfile);
show_actual_arglist (p->value.function.actual);
@@ -576,7 +578,7 @@ show_expr (gfc_expr *p)
else
{
fprintf (dumpfile, "%s", p->value.function.name);
- if (gfc_is_proc_ptr_comp (p, NULL))
+ if (gfc_is_proc_ptr_comp (p))
show_ref (p->ref);
fputc ('[', dumpfile);
fputc ('[', dumpfile);
diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c
index e9308374ac6..dde6a0fb527 100644
--- a/gcc/fortran/error.c
+++ b/gcc/fortran/error.c
@@ -28,6 +28,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
@@ -808,6 +809,8 @@ gfc_notify_std (int std, const char *gmsgid, ...)
{
va_list argp;
bool warning;
+ const char *msg1, *msg2;
+ char *buffer;
warning = ((gfc_option.warn_std & std) != 0) && !inhibit_warnings;
if ((gfc_option.allow_std & std) != 0 && !warning)
@@ -820,11 +823,48 @@ gfc_notify_std (int std, const char *gmsgid, ...)
cur_error_buffer->flag = 1;
cur_error_buffer->index = 0;
- va_start (argp, gmsgid);
if (warning)
- error_print (_("Warning:"), _(gmsgid), argp);
+ msg1 = _("Warning:");
else
- error_print (_("Error:"), _(gmsgid), argp);
+ msg1 = _("Error:");
+
+ switch (std)
+ {
+ case GFC_STD_F2008_TS:
+ msg2 = "TS 29113:";
+ break;
+ case GFC_STD_F2008_OBS:
+ msg2 = _("Fortran 2008 obsolescent feature:");
+ break;
+ case GFC_STD_F2008:
+ msg2 = "Fortran 2008:";
+ break;
+ case GFC_STD_F2003:
+ msg2 = "Fortran 2003:";
+ break;
+ case GFC_STD_GNU:
+ msg2 = _("GNU Extension:");
+ break;
+ case GFC_STD_LEGACY:
+ msg2 = _("Legacy Extension:");
+ break;
+ case GFC_STD_F95_OBS:
+ msg2 = _("Obsolescent feature:");
+ break;
+ case GFC_STD_F95_DEL:
+ msg2 = _("Deleted feature:");
+ break;
+ default:
+ gcc_unreachable ();
+ }
+
+ buffer = (char *) alloca (strlen (msg1) + strlen (msg2) + 2);
+ strcpy (buffer, msg1);
+ strcat (buffer, " ");
+ strcat (buffer, msg2);
+
+ va_start (argp, gmsgid);
+ error_print (buffer, _(gmsgid), argp);
va_end (argp);
error_char ('\0');
@@ -835,6 +875,7 @@ gfc_notify_std (int std, const char *gmsgid, ...)
warnings++;
else
gfc_increment_error_count();
+ cur_error_buffer->flag = 0;
}
return (warning && !warnings_are_errors) ? SUCCESS : FAILURE;
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 0b38cacad94..bc1f5e33c6a 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "arith.h"
#include "match.h"
@@ -1489,13 +1490,10 @@ find_array_section (gfc_expr *expr, gfc_ref *ref)
/* Now clock through the array reference, calculating the index in
the source constructor and transferring the elements to the new
- constructor. */
+ constructor. */
for (idx = 0; idx < (int) mpz_get_si (nelts); idx++)
{
- if (ref->u.ar.offset)
- mpz_set (ptr, ref->u.ar.offset->value.integer);
- else
- mpz_init_set_ui (ptr, 0);
+ mpz_init_set_ui (ptr, 0);
incr_ctr = true;
for (d = 0; d < rank; d++)
@@ -2404,7 +2402,7 @@ check_elemental (gfc_expr *e)
if (e->ts.type != BT_INTEGER
&& e->ts.type != BT_CHARACTER
- && gfc_notify_std (GFC_STD_F2003, "Extension: Evaluation of "
+ && gfc_notify_std (GFC_STD_F2003, "Evaluation of "
"nonstandard initialization expression at %L",
&e->where) == FAILURE)
return MATCH_ERROR;
@@ -2964,12 +2962,12 @@ gfc_specification_expr (gfc_expr *e)
return FAILURE;
}
+ comp = gfc_get_proc_ptr_comp (e);
if (e->expr_type == EXPR_FUNCTION
- && !e->value.function.isym
- && !e->value.function.esym
- && !gfc_pure (e->symtree->n.sym)
- && (!gfc_is_proc_ptr_comp (e, &comp)
- || !comp->attr.pure))
+ && !e->value.function.isym
+ && !e->value.function.esym
+ && !gfc_pure (e->symtree->n.sym)
+ && (!comp || !comp->attr.pure))
{
gfc_error ("Function '%s' at %L must be PURE",
e->symtree->n.sym->name, &e->where);
@@ -3163,13 +3161,13 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform)
if (rvalue->is_boz && lvalue->ts.type != BT_INTEGER
&& lvalue->symtree->n.sym->attr.data
- && gfc_notify_std (GFC_STD_GNU, "Extension: BOZ literal at %L used to "
+ && gfc_notify_std (GFC_STD_GNU, "BOZ literal at %L used to "
"initialize non-integer variable '%s'",
&rvalue->where, lvalue->symtree->n.sym->name)
== FAILURE)
return FAILURE;
else if (rvalue->is_boz && !lvalue->symtree->n.sym->attr.data
- && gfc_notify_std (GFC_STD_GNU, "Extension: BOZ literal at %L outside "
+ && gfc_notify_std (GFC_STD_GNU, "BOZ literal at %L outside "
"a DATA statement and outside INT/REAL/DBLE/CMPLX",
&rvalue->where) == FAILURE)
return FAILURE;
@@ -3337,7 +3335,7 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
return FAILURE;
}
- if (gfc_notify_std (GFC_STD_F2003,"Fortran 2003: Bounds "
+ if (gfc_notify_std (GFC_STD_F2003,"Bounds "
"specification for '%s' in pointer assignment "
"at %L", lvalue->symtree->n.sym->name,
&lvalue->where) == FAILURE)
@@ -3420,6 +3418,19 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
&rvalue->where);
return FAILURE;
}
+ if (rvalue->expr_type == EXPR_VARIABLE && !attr.proc_pointer)
+ {
+ /* Check for intrinsics. */
+ gfc_symbol *sym = rvalue->symtree->n.sym;
+ if (!sym->attr.intrinsic
+ && (gfc_is_intrinsic (sym, 0, sym->declared_at)
+ || gfc_is_intrinsic (sym, 1, sym->declared_at)))
+ {
+ sym->attr.intrinsic = 1;
+ gfc_resolve_intrinsic (sym, &rvalue->where);
+ attr = gfc_expr_attr (rvalue);
+ }
+ }
if (attr.abstract)
{
gfc_error ("Abstract interface '%s' is invalid "
@@ -3438,16 +3449,24 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
return FAILURE;
}
if (attr.proc == PROC_INTERNAL &&
- gfc_notify_std (GFC_STD_F2008, "Internal procedure '%s' is "
- "invalid in procedure pointer assignment at %L",
- rvalue->symtree->name, &rvalue->where) == FAILURE)
+ gfc_notify_std (GFC_STD_F2008, "Internal procedure "
+ "'%s' is invalid in procedure pointer assignment "
+ "at %L", rvalue->symtree->name, &rvalue->where)
+ == FAILURE)
return FAILURE;
+ if (attr.intrinsic && gfc_intrinsic_actual_ok (rvalue->symtree->name,
+ attr.subroutine) == 0)
+ {
+ gfc_error ("Intrinsic '%s' at %L is invalid in procedure pointer "
+ "assignment", rvalue->symtree->name, &rvalue->where);
+ return FAILURE;
+ }
}
/* Check for F08:C730. */
if (attr.elemental && !attr.intrinsic)
{
gfc_error ("Nonintrinsic elemental procedure '%s' is invalid "
- "in procedure pointer assigment at %L",
+ "in procedure pointer assignment at %L",
rvalue->symtree->name, &rvalue->where);
return FAILURE;
}
@@ -3476,12 +3495,14 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
}
}
- if (gfc_is_proc_ptr_comp (lvalue, &comp))
+ comp = gfc_get_proc_ptr_comp (lvalue);
+ if (comp)
s1 = comp->ts.interface;
else
s1 = lvalue->symtree->n.sym;
- if (gfc_is_proc_ptr_comp (rvalue, &comp))
+ comp = gfc_get_proc_ptr_comp (rvalue);
+ if (comp)
{
s2 = comp->ts.interface;
name = comp->name;
@@ -3561,7 +3582,7 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
" simply contiguous at %L", &rvalue->where);
return FAILURE;
}
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Rank remapping"
+ if (gfc_notify_std (GFC_STD_F2008, "Rank remapping"
" target is not rank 1 at %L", &rvalue->where)
== FAILURE)
return FAILURE;
@@ -3638,6 +3659,39 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
}
}
+ /* Warn if it is the LHS pointer may lives longer than the RHS target. */
+ if (gfc_option.warn_target_lifetime
+ && rvalue->expr_type == EXPR_VARIABLE
+ && !rvalue->symtree->n.sym->attr.save
+ && !attr.pointer && !rvalue->symtree->n.sym->attr.host_assoc
+ && !rvalue->symtree->n.sym->attr.in_common
+ && !rvalue->symtree->n.sym->attr.use_assoc
+ && !rvalue->symtree->n.sym->attr.dummy)
+ {
+ bool warn;
+ gfc_namespace *ns;
+
+ warn = lvalue->symtree->n.sym->attr.dummy
+ || lvalue->symtree->n.sym->attr.result
+ || lvalue->symtree->n.sym->attr.function
+ || lvalue->symtree->n.sym->attr.host_assoc
+ || lvalue->symtree->n.sym->attr.use_assoc
+ || lvalue->symtree->n.sym->attr.in_common;
+
+ if (rvalue->symtree->n.sym->ns->proc_name
+ && rvalue->symtree->n.sym->ns->proc_name->attr.flavor != FL_PROCEDURE
+ && rvalue->symtree->n.sym->ns->proc_name->attr.flavor != FL_PROGRAM)
+ for (ns = rvalue->symtree->n.sym->ns;
+ ns->proc_name && ns->proc_name->attr.flavor != FL_PROCEDURE;
+ ns = ns->parent)
+ if (ns->parent == lvalue->symtree->n.sym->ns)
+ warn = true;
+
+ if (warn)
+ gfc_warning ("Pointer at %L in pointer assignment might outlive the "
+ "pointer target", &lvalue->where);
+ }
+
return SUCCESS;
}
@@ -4056,31 +4110,35 @@ gfc_expr_set_symbols_referenced (gfc_expr *expr)
}
-/* Determine if an expression is a procedure pointer component. If yes, the
- argument 'comp' will point to the component (provided that 'comp' was
- provided). */
+/* Determine if an expression is a procedure pointer component and return
+ the component in that case. Otherwise return NULL. */
-bool
-gfc_is_proc_ptr_comp (gfc_expr *expr, gfc_component **comp)
+gfc_component *
+gfc_get_proc_ptr_comp (gfc_expr *expr)
{
gfc_ref *ref;
- bool ppc = false;
if (!expr || !expr->ref)
- return false;
+ return NULL;
ref = expr->ref;
while (ref->next)
ref = ref->next;
- if (ref->type == REF_COMPONENT)
- {
- ppc = ref->u.c.component->attr.proc_pointer;
- if (ppc && comp)
- *comp = ref->u.c.component;
- }
+ if (ref->type == REF_COMPONENT
+ && ref->u.c.component->attr.proc_pointer)
+ return ref->u.c.component;
- return ppc;
+ return NULL;
+}
+
+
+/* Determine if an expression is a procedure pointer component. */
+
+bool
+gfc_is_proc_ptr_comp (gfc_expr *expr)
+{
+ return (gfc_get_proc_ptr_comp (expr) != NULL);
}
@@ -4441,7 +4499,8 @@ gfc_is_simply_contiguous (gfc_expr *expr, bool strict)
|| (!part_ref
&& !sym->attr.contiguous
&& (sym->attr.pointer
- || sym->as->type == AS_ASSUMED_SHAPE))))
+ || sym->as->type == AS_ASSUMED_RANK
+ || sym->as->type == AS_ASSUMED_SHAPE))))
return false;
if (!ar || ar->type == AR_FULL)
diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c
index 7250ca2d769..6ff13561278 100644
--- a/gcc/fortran/f95-lang.c
+++ b/gcc/fortran/f95-lang.c
@@ -42,7 +42,7 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "debug.h"
#include "diagnostic.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "cgraph.h"
#include "gfortran.h"
#include "cpp.h"
diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c
index fc32e56dfc6..437ed7ec175 100644
--- a/gcc/fortran/frontend-passes.c
+++ b/gcc/fortran/frontend-passes.c
@@ -20,6 +20,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "arith.h"
#include "flags.h"
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index caa23bd6388..d67d57b7b13 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -29,13 +29,16 @@ along with GCC; see the file COPYING3. If not see
multiple header files. Besides, Microsoft's winnt.h was 250k last
time I looked, so by comparison this is perfectly reasonable. */
+#ifndef GCC_CORETYPES_H
+#error "gfortran.h must be included after coretypes.h"
+#endif
+
/* Declarations common to the front-end and library are put in
libgfortran/libgfortran_frontend.h */
#include "libgfortran.h"
#include "intl.h"
-#include "coretypes.h"
#include "input.h"
#include "splay-tree.h"
@@ -132,7 +135,8 @@ expr_t;
/* Array types. */
typedef enum
{ AS_EXPLICIT = 1, AS_ASSUMED_SHAPE, AS_DEFERRED,
- AS_ASSUMED_SIZE, AS_IMPLIED_SHAPE, AS_UNKNOWN
+ AS_ASSUMED_SIZE, AS_IMPLIED_SHAPE, AS_ASSUMED_RANK,
+ AS_UNKNOWN
}
array_type;
@@ -140,9 +144,11 @@ typedef enum
{ AR_FULL = 1, AR_ELEMENT, AR_SECTION, AR_UNKNOWN }
ar_type;
-/* Statement label types. */
+/* Statement label types. ST_LABEL_DO_TARGET is used for obsolescent warnings
+ related to shared DO terminations and DO targets which are neither END DO
+ nor CONTINUE; otherwise it is identical to ST_LABEL_TARGET. */
typedef enum
-{ ST_LABEL_UNKNOWN = 1, ST_LABEL_TARGET,
+{ ST_LABEL_UNKNOWN = 1, ST_LABEL_TARGET, ST_LABEL_DO_TARGET,
ST_LABEL_BAD_TARGET, ST_LABEL_FORMAT
}
gfc_sl_type;
@@ -914,7 +920,7 @@ gfc_typespec;
/* Array specification. */
typedef struct
{
- int rank; /* A rank of zero means that a variable is a scalar. */
+ int rank; /* A scalar has a rank of 0, an assumed-rank array has -1. */
int corank;
array_type type, cotype;
struct gfc_expr *lower[GFC_MAX_DIMENSIONS], *upper[GFC_MAX_DIMENSIONS];
@@ -1260,6 +1266,7 @@ typedef struct gfc_common_head
struct gfc_symbol *head;
const char* binding_label;
int is_bind_c;
+ int refs;
}
gfc_common_head;
@@ -1511,8 +1518,6 @@ typedef struct gfc_array_ref
*stride[GFC_MAX_DIMENSIONS];
enum gfc_array_ref_dimen_type dimen_type[GFC_MAX_DIMENSIONS];
-
- struct gfc_expr *offset;
}
gfc_array_ref;
@@ -1691,7 +1696,7 @@ typedef struct gfc_expr
gfc_typespec ts; /* These two refer to the overall expression */
- int rank;
+ int rank; /* 0 indicates a scalar, -1 an assumed-rank array. */
mpz_t *shape; /* Can be NULL if shape is unknown at compile time */
/* Nonnull for functions and structure constructors, may also used to hold the
@@ -1706,7 +1711,7 @@ typedef struct gfc_expr
is not a variable. */
struct gfc_expr *base_expr;
- /* is_boz is true if the integer is regarded as BOZ bitpatten and is_snan
+ /* is_boz is true if the integer is regarded as BOZ bit pattern and is_snan
denotes a signalling not-a-number. */
unsigned int is_boz : 1, is_snan : 1;
@@ -2221,6 +2226,8 @@ typedef struct
int warn_unused_dummy_argument;
int warn_realloc_lhs;
int warn_realloc_lhs_all;
+ int warn_compare_reals;
+ int warn_target_lifetime;
int max_errors;
int flag_all_intrinsics;
@@ -2635,9 +2642,9 @@ gfc_symbol* gfc_get_ultimate_derived_super_type (gfc_symbol*);
bool gfc_type_is_extension_of (gfc_symbol *, gfc_symbol *);
bool gfc_type_compatible (gfc_typespec *, gfc_typespec *);
-void gfc_copy_formal_args (gfc_symbol *, gfc_symbol *);
+void gfc_copy_formal_args (gfc_symbol *, gfc_symbol *, ifsrc);
void gfc_copy_formal_args_intr (gfc_symbol *, gfc_intrinsic_sym *);
-void gfc_copy_formal_args_ppc (gfc_component *, gfc_symbol *);
+void gfc_copy_formal_args_ppc (gfc_component *, gfc_symbol *, ifsrc);
void gfc_free_finalizer (gfc_finalizer *el); /* Needed in resolve.c, too */
@@ -2762,7 +2769,8 @@ gfc_try gfc_expr_check_typed (gfc_expr*, gfc_namespace*, bool);
void gfc_expr_replace_symbols (gfc_expr *, gfc_symbol *);
void gfc_expr_replace_comp (gfc_expr *, gfc_component *);
-bool gfc_is_proc_ptr_comp (gfc_expr *, gfc_component **);
+gfc_component * gfc_get_proc_ptr_comp (gfc_expr *);
+bool gfc_is_proc_ptr_comp (gfc_expr *);
bool gfc_ref_this_image (gfc_ref *ref);
bool gfc_is_coindexed (gfc_expr *);
@@ -2801,7 +2809,8 @@ int gfc_is_formal_arg (void);
void gfc_resolve_substring_charlen (gfc_expr *);
match gfc_iso_c_sub_interface(gfc_code *, gfc_symbol *);
gfc_expr *gfc_expr_to_initialize (gfc_expr *);
-bool gfc_type_is_extensible (gfc_symbol *sym);
+bool gfc_type_is_extensible (gfc_symbol *);
+gfc_try gfc_resolve_intrinsic (gfc_symbol *, locus *);
/* array.c */
@@ -2844,7 +2853,7 @@ int gfc_compare_types (gfc_typespec *, gfc_typespec *);
int gfc_compare_interfaces (gfc_symbol*, gfc_symbol*, const char *, int, int,
char *, int, const char *, const char *);
void gfc_check_interfaces (gfc_namespace *);
-void gfc_procedure_use (gfc_symbol *, gfc_actual_arglist **, locus *);
+gfc_try gfc_procedure_use (gfc_symbol *, gfc_actual_arglist **, locus *);
void gfc_ppc_use (gfc_component *, gfc_actual_arglist **, locus *);
gfc_symbol *gfc_search_interface (gfc_interface *, int,
gfc_actual_arglist **);
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 34e1ad7f88b..482c294ecba 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -67,6 +67,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "match.h"
#include "arith.h"
@@ -252,7 +253,7 @@ gfc_match_abstract_interface (void)
{
match m;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ABSTRACT INTERFACE at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "ABSTRACT INTERFACE at %C")
== FAILURE)
return MATCH_ERROR;
@@ -511,7 +512,9 @@ compare_type_rank (gfc_symbol *s1, gfc_symbol *s2)
r1 = (s1->as != NULL) ? s1->as->rank : 0;
r2 = (s2->as != NULL) ? s2->as->rank : 0;
- if (r1 != r2)
+ if (r1 != r2
+ && (!s1->as || s1->as->type != AS_ASSUMED_RANK)
+ && (!s2->as || s2->as->type != AS_ASSUMED_RANK))
return 0; /* Ranks differ. */
return gfc_compare_types (&s1->ts, &s2->ts)
@@ -1003,9 +1006,8 @@ check_dummy_characteristics (gfc_symbol *s1, gfc_symbol *s2,
/* Check type and rank. */
if (type_must_agree && !compare_type_rank (s2, s1))
{
- if (errmsg != NULL)
- snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
- s1->name);
+ snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
+ s1->name);
return FAILURE;
}
@@ -1138,6 +1140,152 @@ check_dummy_characteristics (gfc_symbol *s1, gfc_symbol *s2,
}
+/* Check if the characteristics of two function results match,
+ cf. F08:12.3.3. */
+
+static gfc_try
+check_result_characteristics (gfc_symbol *s1, gfc_symbol *s2,
+ char *errmsg, int err_len)
+{
+ gfc_symbol *r1, *r2;
+
+ r1 = s1->result ? s1->result : s1;
+ r2 = s2->result ? s2->result : s2;
+
+ if (r1->ts.type == BT_UNKNOWN)
+ return SUCCESS;
+
+ /* Check type and rank. */
+ if (!compare_type_rank (r1, r2))
+ {
+ snprintf (errmsg, err_len, "Type/rank mismatch in function result");
+ return FAILURE;
+ }
+
+ /* Check ALLOCATABLE attribute. */
+ if (r1->attr.allocatable != r2->attr.allocatable)
+ {
+ snprintf (errmsg, err_len, "ALLOCATABLE attribute mismatch in "
+ "function result");
+ return FAILURE;
+ }
+
+ /* Check POINTER attribute. */
+ if (r1->attr.pointer != r2->attr.pointer)
+ {
+ snprintf (errmsg, err_len, "POINTER attribute mismatch in "
+ "function result");
+ return FAILURE;
+ }
+
+ /* Check CONTIGUOUS attribute. */
+ if (r1->attr.contiguous != r2->attr.contiguous)
+ {
+ snprintf (errmsg, err_len, "CONTIGUOUS attribute mismatch in "
+ "function result");
+ return FAILURE;
+ }
+
+ /* Check PROCEDURE POINTER attribute. */
+ if (r1 != s1 && r1->attr.proc_pointer != r2->attr.proc_pointer)
+ {
+ snprintf (errmsg, err_len, "PROCEDURE POINTER mismatch in "
+ "function result");
+ return FAILURE;
+ }
+
+ /* Check string length. */
+ if (r1->ts.type == BT_CHARACTER && r1->ts.u.cl && r2->ts.u.cl)
+ {
+ if (r1->ts.deferred != r2->ts.deferred)
+ {
+ snprintf (errmsg, err_len, "Character length mismatch "
+ "in function result");
+ return FAILURE;
+ }
+
+ if (r1->ts.u.cl->length)
+ {
+ int compval = gfc_dep_compare_expr (r1->ts.u.cl->length,
+ r2->ts.u.cl->length);
+ switch (compval)
+ {
+ case -1:
+ case 1:
+ case -3:
+ snprintf (errmsg, err_len, "Character length mismatch "
+ "in function result");
+ return FAILURE;
+
+ case -2:
+ /* FIXME: Implement a warning for this case.
+ snprintf (errmsg, err_len, "Possible character length mismatch "
+ "in function result");*/
+ break;
+
+ case 0:
+ break;
+
+ default:
+ gfc_internal_error ("check_result_characteristics (1): Unexpected "
+ "result %i of gfc_dep_compare_expr", compval);
+ break;
+ }
+ }
+ }
+
+ /* Check array shape. */
+ if (!r1->attr.allocatable && !r1->attr.pointer && r1->as && r2->as)
+ {
+ int i, compval;
+ gfc_expr *shape1, *shape2;
+
+ if (r1->as->type != r2->as->type)
+ {
+ snprintf (errmsg, err_len, "Shape mismatch in function result");
+ return FAILURE;
+ }
+
+ if (r1->as->type == AS_EXPLICIT)
+ for (i = 0; i < r1->as->rank + r1->as->corank; i++)
+ {
+ shape1 = gfc_subtract (gfc_copy_expr (r1->as->upper[i]),
+ gfc_copy_expr (r1->as->lower[i]));
+ shape2 = gfc_subtract (gfc_copy_expr (r2->as->upper[i]),
+ gfc_copy_expr (r2->as->lower[i]));
+ compval = gfc_dep_compare_expr (shape1, shape2);
+ gfc_free_expr (shape1);
+ gfc_free_expr (shape2);
+ switch (compval)
+ {
+ case -1:
+ case 1:
+ case -3:
+ snprintf (errmsg, err_len, "Shape mismatch in dimension %i of "
+ "function result", i + 1);
+ return FAILURE;
+
+ case -2:
+ /* FIXME: Implement a warning for this case.
+ gfc_warning ("Possible shape mismatch in return value");*/
+ break;
+
+ case 0:
+ break;
+
+ default:
+ gfc_internal_error ("check_result_characteristics (2): "
+ "Unexpected result %i of "
+ "gfc_dep_compare_expr", compval);
+ break;
+ }
+ }
+ }
+
+ return SUCCESS;
+}
+
+
/* 'Compare' two formal interfaces associated with a pair of symbols.
We return nonzero if there exists an actual argument list that
would be ambiguous between the two interfaces, zero otherwise.
@@ -1177,18 +1325,10 @@ gfc_compare_interfaces (gfc_symbol *s1, gfc_symbol *s2, const char *name2,
{
if (s1->attr.function && s2->attr.function)
{
- /* If both are functions, check result type. */
- if (s1->ts.type == BT_UNKNOWN)
- return 1;
- if (!compare_type_rank (s1,s2))
- {
- if (errmsg != NULL)
- snprintf (errmsg, err_len, "Type/rank mismatch in return value "
- "of '%s'", name2);
- return 0;
- }
-
- /* FIXME: Check array bounds and string length of result. */
+ /* If both are functions, check result characteristics. */
+ if (check_result_characteristics (s1, s2, errmsg, err_len)
+ == FAILURE)
+ return 0;
}
if (s1->attr.pure && !s2->attr.pure)
@@ -1312,7 +1452,7 @@ check_interface0 (gfc_interface *p, const char *interface_name)
/* F2003, C1207. F2008, C1207. */
if (p->sym->attr.proc == PROC_INTERNAL
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Internal procedure "
+ && gfc_notify_std (GFC_STD_F2008, "Internal procedure "
"'%s' in %s at %L", p->sym->name, interface_name,
&p->sym->declared_at) == FAILURE)
return 1;
@@ -1634,7 +1774,14 @@ static void
argument_rank_mismatch (const char *name, locus *where,
int rank1, int rank2)
{
- if (rank1 == 0)
+
+ /* TS 29113, C407b. */
+ if (rank2 == -1)
+ {
+ gfc_error ("The assumed-rank array at %L requires that the dummy argument"
+ " '%s' has assumed-rank", where, name);
+ }
+ else if (rank1 == 0)
{
gfc_error ("Rank mismatch in argument '%s' at %L "
"(scalar and rank-%d)", name, where, rank2);
@@ -1722,7 +1869,7 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
{
if (where)
gfc_error ("Actual argument to contiguous pointer dummy '%s' at %L "
- "must be simply contigous", formal->name, &actual->where);
+ "must be simply contiguous", formal->name, &actual->where);
return 0;
}
@@ -1742,7 +1889,7 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
}
/* F2008, 12.5.2.5; IR F08/0073. */
- if (formal->ts.type == BT_CLASS
+ if (formal->ts.type == BT_CLASS && actual->expr_type != EXPR_NULL
&& ((CLASS_DATA (formal)->attr.class_pointer
&& !formal->attr.intent == INTENT_IN)
|| CLASS_DATA (formal)->attr.allocatable))
@@ -1859,7 +2006,8 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
" is modified", &actual->where, formal->name);
}
- if (symbol_rank (formal) == actual->rank)
+ /* If the rank is the same or the formal argument has assumed-rank. */
+ if (symbol_rank (formal) == actual->rank || symbol_rank (formal) == -1)
return 1;
if (actual->ts.type == BT_CLASS && CLASS_DATA (actual)->as
@@ -2288,11 +2436,21 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
return 0;
}
- if (a->expr->expr_type == EXPR_NULL && !f->sym->attr.pointer
- && (f->sym->attr.allocatable || !f->sym->attr.optional
- || (gfc_option.allow_std & GFC_STD_F2008) == 0))
+ if (a->expr->expr_type == EXPR_NULL
+ && ((f->sym->ts.type != BT_CLASS && !f->sym->attr.pointer
+ && (f->sym->attr.allocatable || !f->sym->attr.optional
+ || (gfc_option.allow_std & GFC_STD_F2008) == 0))
+ || (f->sym->ts.type == BT_CLASS
+ && !CLASS_DATA (f->sym)->attr.class_pointer
+ && (CLASS_DATA (f->sym)->attr.allocatable
+ || !f->sym->attr.optional
+ || (gfc_option.allow_std & GFC_STD_F2008) == 0))))
{
- if (where && (f->sym->attr.allocatable || !f->sym->attr.optional))
+ if (where
+ && (!f->sym->attr.optional
+ || (f->sym->ts.type != BT_CLASS && f->sym->attr.allocatable)
+ || (f->sym->ts.type == BT_CLASS
+ && CLASS_DATA (f->sym)->attr.allocatable)))
gfc_error ("Unexpected NULL() intrinsic at %L to dummy '%s'",
where, f->sym->name);
else if (where)
@@ -2400,7 +2558,7 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
&& a->expr->symtree->n.sym->attr.proc_pointer)
|| (a->expr->expr_type == EXPR_FUNCTION
&& a->expr->symtree->n.sym->result->attr.proc_pointer)
- || gfc_is_proc_ptr_comp (a->expr, NULL)))
+ || gfc_is_proc_ptr_comp (a->expr)))
{
if (where)
gfc_error ("Expected a procedure pointer for argument '%s' at %L",
@@ -2410,7 +2568,7 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
/* Satisfy 12.4.1.2 by ensuring that a procedure actual argument is
provided for a procedure formal argument. */
- if (a->expr->ts.type != BT_PROCEDURE && !gfc_is_proc_ptr_comp (a->expr, NULL)
+ if (a->expr->ts.type != BT_PROCEDURE && !gfc_is_proc_ptr_comp (a->expr)
&& a->expr->expr_type == EXPR_VARIABLE
&& f->sym->attr.flavor == FL_PROCEDURE)
{
@@ -2906,7 +3064,7 @@ check_intents (gfc_formal_arglist *f, gfc_actual_arglist *a)
well, the actual argument list will also end up being properly
sorted. */
-void
+gfc_try
gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where)
{
/* Warn about calls with an implicit interface. Special case
@@ -2933,7 +3091,7 @@ gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where)
gfc_error("The pointer object '%s' at %L must have an explicit "
"function interface or be declared as array",
sym->name, where);
- return;
+ return FAILURE;
}
if (sym->attr.allocatable && !sym->attr.external)
@@ -2941,14 +3099,14 @@ gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where)
gfc_error("The allocatable object '%s' at %L must have an explicit "
"function interface or be declared as array",
sym->name, where);
- return;
+ return FAILURE;
}
if (sym->attr.allocatable)
{
gfc_error("Allocatable function '%s' at %L must have an explicit "
"function interface", sym->name, where);
- return;
+ return FAILURE;
}
for (a = *ap; a; a = a->next)
@@ -2988,19 +3146,32 @@ gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where)
&& a->expr->ts.type == BT_UNKNOWN)
{
gfc_error ("MOLD argument to NULL required at %L", &a->expr->where);
- return;
+ return FAILURE;
+ }
+
+ /* TS 29113, C407b. */
+ if (a->expr && a->expr->expr_type == EXPR_VARIABLE
+ && symbol_rank (a->expr->symtree->n.sym) == -1)
+ {
+ gfc_error ("Assumed-rank argument requires an explicit interface "
+ "at %L", &a->expr->where);
+ return FAILURE;
}
}
- return;
+ return SUCCESS;
}
if (!compare_actual_formal (ap, sym->formal, 0, sym->attr.elemental, where))
- return;
+ return FAILURE;
+
+ if (check_intents (sym->formal, *ap) == FAILURE)
+ return FAILURE;
- check_intents (sym->formal, *ap);
if (gfc_option.warn_aliasing)
check_some_aliasing (sym->formal, *ap);
+
+ return SUCCESS;
}
@@ -3759,7 +3930,7 @@ gfc_try
gfc_check_typebound_override (gfc_symtree* proc, gfc_symtree* old)
{
locus where;
- const gfc_symbol *proc_target, *old_target;
+ gfc_symbol *proc_target, *old_target;
unsigned proc_pass_arg, old_pass_arg, argpos;
gfc_formal_arglist *proc_formal, *old_formal;
bool check_type;
@@ -3838,45 +4009,13 @@ gfc_check_typebound_override (gfc_symtree* proc, gfc_symtree* old)
" FUNCTION", proc->name, &where);
return FAILURE;
}
-
- /* FIXME: Do more comprehensive checking (including, for instance, the
- array-shape). */
- gcc_assert (proc_target->result && old_target->result);
- if (!compare_type_rank (proc_target->result, old_target->result))
- {
- gfc_error ("'%s' at %L and the overridden FUNCTION should have"
- " matching result types and ranks", proc->name, &where);
- return FAILURE;
- }
- /* Check string length. */
- if (proc_target->result->ts.type == BT_CHARACTER
- && proc_target->result->ts.u.cl && old_target->result->ts.u.cl)
+ if (check_result_characteristics (proc_target, old_target,
+ err, sizeof(err)) == FAILURE)
{
- int compval = gfc_dep_compare_expr (proc_target->result->ts.u.cl->length,
- old_target->result->ts.u.cl->length);
- switch (compval)
- {
- case -1:
- case 1:
- case -3:
- gfc_error ("Character length mismatch between '%s' at '%L' and "
- "overridden FUNCTION", proc->name, &where);
- return FAILURE;
-
- case -2:
- gfc_warning ("Possible character length mismatch between '%s' at"
- " '%L' and overridden FUNCTION", proc->name, &where);
- break;
-
- case 0:
- break;
-
- default:
- gfc_internal_error ("gfc_check_typebound_override: Unexpected "
- "result %i of gfc_dep_compare_expr", compval);
- break;
- }
+ gfc_error ("Result mismatch for the overriding procedure "
+ "'%s' at %L: %s", proc->name, &where, err);
+ return FAILURE;
}
}
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 88d4636bd71..6da131d8553 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "intrinsic.h"
@@ -901,9 +902,9 @@ gfc_intrinsic_actual_ok (const char *name, const bool subroutine_flag)
}
-/* Given a symbol, find out if it is (and is to be treated) an intrinsic. If
- it's name refers to an intrinsic but this intrinsic is not included in the
- selected standard, this returns FALSE and sets the symbol's external
+/* Given a symbol, find out if it is (and is to be treated as) an intrinsic.
+ If its name refers to an intrinsic, but this intrinsic is not included in
+ the selected standard, this returns FALSE and sets the symbol's external
attribute. */
bool
@@ -912,10 +913,13 @@ gfc_is_intrinsic (gfc_symbol* sym, int subroutine_flag, locus loc)
gfc_intrinsic_sym* isym;
const char* symstd;
- /* If INTRINSIC/EXTERNAL state is already known, return. */
+ /* If INTRINSIC attribute is already known, return. */
if (sym->attr.intrinsic)
return true;
- if (sym->attr.external)
+
+ /* Check for attributes which prevent the symbol from being INTRINSIC. */
+ if (sym->attr.external || sym->attr.contained
+ || sym->attr.if_source == IFSRC_IFBODY)
return false;
if (subroutine_flag)
@@ -4082,7 +4086,7 @@ gfc_intrinsic_func_interface (gfc_expr *expr, int error_flag)
if ((isym->id == GFC_ISYM_REAL || isym->id == GFC_ISYM_DBLE
|| isym->id == GFC_ISYM_CMPLX)
&& gfc_init_expr_flag
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Function '%s' "
+ && gfc_notify_std (GFC_STD_F2003, "Function '%s' "
"as initialization expression at %L", name,
&expr->where) == FAILURE)
{
@@ -4158,7 +4162,7 @@ got_specific:
where each argument is an initialization expression */
if (gfc_init_expr_flag && isym->elemental && flag
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Elemental function "
+ && gfc_notify_std (GFC_STD_F2003, "Elemental function "
"as initialization expression with non-integer/non-"
"character arguments at %L", &expr->where) == FAILURE)
return MATCH_ERROR;
@@ -4499,7 +4503,7 @@ gfc_warn_intrinsic_shadow (const gfc_symbol* sym, bool in_module, bool func)
return;
/* Emit the warning. */
- if (in_module)
+ if (in_module || sym->ns->proc_name)
gfc_warning ("'%s' declared at %L may shadow the intrinsic of the same"
" name. In order to call the intrinsic, explicit INTRINSIC"
" declarations may be required.",
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 9bc36d7d415..47a9feed68c 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -13029,11 +13029,11 @@ The @code{ISO_C_BINDING} module provides the following named constants of
type default integer, which can be used as KIND type parameters.
In addition to the integer named constants required by the Fortran 2003
-standard, GNU Fortran provides as an extension named constants for the
-128-bit integer types supported by the C compiler: @code{C_INT128_T,
-C_INT_LEAST128_T, C_INT_FAST128_T}. Furthermore, if @code{__float} is
-supported in C, the named constants @code{C_FLOAT128, C_FLOAT128_COMPLEX}
-are defined.
+standard and @code{C_PTRDIFF_T} of TS 29113, GNU Fortran provides as an
+extension named constants for the 128-bit integer types supported by the
+C compiler: @code{C_INT128_T, C_INT_LEAST128_T, C_INT_FAST128_T}.
+Furthermore, if @code{__float128} is supported in C, the named constants
+@code{C_FLOAT128, C_FLOAT128_COMPLEX} are defined.
@multitable @columnfractions .15 .35 .35 .35
@item Fortran Type @tab Named constant @tab C type @tab Extension
@@ -13060,6 +13060,7 @@ are defined.
@item @code{INTEGER}@tab @code{C_INT_FAST128_T} @tab @code{int_fast128_t} @tab Ext.
@item @code{INTEGER}@tab @code{C_INTMAX_T} @tab @code{intmax_t}
@item @code{INTEGER}@tab @code{C_INTPTR_T} @tab @code{intptr_t}
+@item @code{INTEGER}@tab @code{C_PTRDIFF_T} @tab @code{intptr_t} @tab TS 29113
@item @code{REAL} @tab @code{C_FLOAT} @tab @code{float}
@item @code{REAL} @tab @code{C_DOUBLE} @tab @code{double}
@item @code{REAL} @tab @code{C_LONG_DOUBLE} @tab @code{long double}
diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index 658ed2375fc..d5fdee3c707 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -147,7 +147,7 @@ and warnings}.
-Wimplicit-procedure -Wintrinsic-shadow -Wintrinsics-std @gol
-Wline-truncation -Wno-align-commons -Wno-tabs -Wreal-q-constant @gol
-Wsurprising -Wunderflow -Wunused-parameter -Wrealloc-lhs Wrealloc-lhs-all @gol
--fmax-errors=@var{n} -fsyntax-only -pedantic -pedantic-errors
+-Wtarget-lifetime -fmax-errors=@var{n} -fsyntax-only -pedantic -pedantic-errors
}
@item Debugging Options
@@ -726,9 +726,10 @@ warnings.
@cindex warnings, all
Enables commonly used warning options pertaining to usage that
we recommend avoiding and that we believe are easy to avoid.
-This currently includes @option{-Waliasing}, @option{-Wampersand},
-@option{-Wconversion}, @option{-Wsurprising}, @option{-Wintrinsics-std},
-@option{-Wno-tabs}, @option{-Wintrinsic-shadow}, @option{-Wline-truncation},
+This currently includes @option{-Waliasing}, @option{-Wampersand},
+@option{-Wconversion}, @option{-Wsurprising},
+@option{-Wintrinsics-std}, @option{-Wno-tabs}, @option{-Wintrinsic-shadow},
+@option{-Wline-truncation}, @option{-Wtarget-lifetime},
@option{-Wreal-q-constant} and @option{-Wunused}.
@item -Waliasing
@@ -935,6 +936,15 @@ a scalar. See also @option{-frealloc-lhs}.
Warn when the compiler inserts code to for allocation or reallocation of an
allocatable variable; this includes scalars and derived types.
+@item -Wcompare-reals
+@opindex @code{Wcompare-reals}
+Warn when comparing real or complex types for equality or inequality.
+
+@item -Wtarget-lifetime
+@opindex @code{Wtargt-lifetime}
+Warn if the pointer in a pointer assignment might be longer than the its
+target. This option is implied by @option{-Wall}.
+
@item -Werror
@opindex @code{Werror}
@cindex warnings, to errors
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 7caadc5056c..428799c1262 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "match.h"
@@ -450,14 +451,14 @@ format_lex (void)
c = next_char_not_space (&error);
if (c == 'P')
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: DP format "
+ if (gfc_notify_std (GFC_STD_F2003, "DP format "
"specifier not allowed at %C") == FAILURE)
return FMT_ERROR;
token = FMT_DP;
}
else if (c == 'C')
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: DC format "
+ if (gfc_notify_std (GFC_STD_F2003, "DC format "
"specifier not allowed at %C") == FAILURE)
return FMT_ERROR;
token = FMT_DC;
@@ -646,7 +647,7 @@ format_item_1:
/* X requires a prior number if we're being pedantic. */
if (mode != MODE_FORMAT)
format_locus.nextc += format_string_pos;
- if (gfc_notify_std (GFC_STD_GNU, "Extension: X descriptor "
+ if (gfc_notify_std (GFC_STD_GNU, "X descriptor "
"requires leading space count at %L", &format_locus)
== FAILURE)
return FAILURE;
@@ -676,7 +677,7 @@ format_item_1:
if (t == FMT_ERROR)
goto fail;
- if (gfc_notify_std (GFC_STD_GNU, "Extension: $ descriptor at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "$ descriptor at %L",
&format_locus) == FAILURE)
return FAILURE;
if (t != FMT_RPAREN || level > 0)
@@ -823,7 +824,7 @@ data_desc:
error = zero_width;
goto syntax;
}
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: 'G0' in "
+ if (gfc_notify_std (GFC_STD_F2008, "'G0' in "
"format at %L", &format_locus) == FAILURE)
return FAILURE;
u = format_lex ();
@@ -1056,7 +1057,7 @@ between_desc:
default:
if (mode != MODE_FORMAT)
format_locus.nextc += format_string_pos - 1;
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Missing comma at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "Missing comma at %L",
&format_locus) == FAILURE)
return FAILURE;
/* If we do not actually return a failure, we need to unwind this
@@ -1119,7 +1120,7 @@ extension_optional_comma:
default:
if (mode != MODE_FORMAT)
format_locus.nextc += format_string_pos;
- if (gfc_notify_std (GFC_STD_GNU, "Extension: Missing comma at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "Missing comma at %L",
&format_locus) == FAILURE)
return FAILURE;
/* If we do not actually return a failure, we need to unwind this
@@ -1404,7 +1405,7 @@ resolve_tag_format (const gfc_expr *e)
}
else if (e->ts.type == BT_INTEGER && e->expr_type == EXPR_VARIABLE)
{
- if (gfc_notify_std (GFC_STD_F95_DEL, "Deleted feature: ASSIGNED "
+ if (gfc_notify_std (GFC_STD_F95_DEL, "ASSIGNED "
"variable in FORMAT tag at %L", &e->where)
== FAILURE)
return FAILURE;
@@ -1429,7 +1430,7 @@ resolve_tag_format (const gfc_expr *e)
It may be assigned an Hollerith constant. */
if (e->ts.type != BT_CHARACTER)
{
- if (gfc_notify_std (GFC_STD_LEGACY, "Extension: Non-character "
+ if (gfc_notify_std (GFC_STD_LEGACY, "Non-character "
"in FORMAT tag at %L", &e->where) == FAILURE)
return FAILURE;
@@ -1495,7 +1496,7 @@ resolve_tag (const io_tag *tag, gfc_expr *e)
if (tag == &tag_iomsg)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: IOMSG tag at %L",
+ if (gfc_notify_std (GFC_STD_F2003, "IOMSG tag at %L",
&e->where) == FAILURE)
return FAILURE;
}
@@ -1511,7 +1512,7 @@ resolve_tag (const io_tag *tag, gfc_expr *e)
if (tag == &tag_exist && e->ts.kind != gfc_default_logical_kind)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Nondefault LOGICAL "
+ if (gfc_notify_std (GFC_STD_F2008, "Nondefault LOGICAL "
"in %s tag at %L", tag->name, &e->where)
== FAILURE)
return FAILURE;
@@ -1519,7 +1520,7 @@ resolve_tag (const io_tag *tag, gfc_expr *e)
if (tag == &tag_newunit)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: NEWUNIT specifier"
+ if (gfc_notify_std (GFC_STD_F2008, "NEWUNIT specifier"
" at %L", &e->where) == FAILURE)
return FAILURE;
}
@@ -1537,7 +1538,7 @@ resolve_tag (const io_tag *tag, gfc_expr *e)
if (tag == &tag_convert)
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: CONVERT tag at %L",
+ if (gfc_notify_std (GFC_STD_GNU, "CONVERT tag at %L",
&e->where) == FAILURE)
return FAILURE;
}
@@ -1731,7 +1732,7 @@ compare_to_allowed_values (const char *specifier, const char *allowed[],
else
if (n == ERROR)
{
- gfc_notify_std (GFC_STD_F2003, "Fortran 2003: %s specifier in "
+ gfc_notify_std (GFC_STD_F2003, "%s specifier in "
"%s statement at %C has value '%s'", specifier,
statement, allowed_f2003[i]);
return 0;
@@ -1758,7 +1759,7 @@ compare_to_allowed_values (const char *specifier, const char *allowed[],
else
if (n == ERROR)
{
- gfc_notify_std (GFC_STD_GNU, "Extension: %s specifier in "
+ gfc_notify_std (GFC_STD_GNU, "%s specifier in "
"%s statement at %C has value '%s'", specifier,
statement, allowed_gnu[i]);
return 0;
@@ -1893,7 +1894,7 @@ gfc_match_open (void)
/* Checks on the ASYNCHRONOUS specifier. */
if (open->asynchronous)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ASYNCHRONOUS= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "ASYNCHRONOUS= at %C "
"not allowed in Fortran 95") == FAILURE)
goto cleanup;
@@ -1911,7 +1912,7 @@ gfc_match_open (void)
/* Checks on the BLANK specifier. */
if (open->blank)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: BLANK= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "BLANK= at %C "
"not allowed in Fortran 95") == FAILURE)
goto cleanup;
@@ -1929,7 +1930,7 @@ gfc_match_open (void)
/* Checks on the DECIMAL specifier. */
if (open->decimal)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: DECIMAL= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "DECIMAL= at %C "
"not allowed in Fortran 95") == FAILURE)
goto cleanup;
@@ -1961,7 +1962,7 @@ gfc_match_open (void)
/* Checks on the ENCODING specifier. */
if (open->encoding)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ENCODING= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "ENCODING= at %C "
"not allowed in Fortran 95") == FAILURE)
goto cleanup;
@@ -2012,7 +2013,7 @@ gfc_match_open (void)
/* Checks on the ROUND specifier. */
if (open->round)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ROUND= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "ROUND= at %C "
"not allowed in Fortran 95") == FAILURE)
goto cleanup;
@@ -2032,7 +2033,7 @@ gfc_match_open (void)
/* Checks on the SIGN specifier. */
if (open->sign)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: SIGN= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "SIGN= at %C "
"not allowed in Fortran 95") == FAILURE)
goto cleanup;
@@ -2478,7 +2479,7 @@ gfc_match_rewind (void)
match
gfc_match_flush (void)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: FLUSH statement at %C")
+ if (gfc_notify_std (GFC_STD_F2003, "FLUSH statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -2909,7 +2910,7 @@ gfc_resolve_dt (gfc_dt *dt, locus *loc)
}
if (dt->extra_comma
- && gfc_notify_std (GFC_STD_GNU, "Extension: Comma before i/o "
+ && gfc_notify_std (GFC_STD_GNU, "Comma before i/o "
"item list at %L", &dt->extra_comma->where) == FAILURE)
return FAILURE;
@@ -3255,7 +3256,7 @@ if (condition) \
if (dt->namelist != NULL)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Internal file "
+ if (gfc_notify_std (GFC_STD_F2003, "Internal file "
"at %L with namelist", &expr->where)
== FAILURE)
m = MATCH_ERROR;
@@ -3339,7 +3340,7 @@ if (condition) \
if (dt->decimal)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: DECIMAL= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "DECIMAL= at %C "
"not allowed in Fortran 95") == FAILURE)
return MATCH_ERROR;
@@ -3360,7 +3361,7 @@ if (condition) \
if (dt->blank)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: BLANK= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "BLANK= at %C "
"not allowed in Fortran 95") == FAILURE)
return MATCH_ERROR;
@@ -3381,7 +3382,7 @@ if (condition) \
if (dt->pad)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PAD= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "PAD= at %C "
"not allowed in Fortran 95") == FAILURE)
return MATCH_ERROR;
@@ -3402,7 +3403,7 @@ if (condition) \
if (dt->round)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ROUND= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "ROUND= at %C "
"not allowed in Fortran 95") == FAILURE)
return MATCH_ERROR;
@@ -3422,7 +3423,7 @@ if (condition) \
if (dt->sign)
{
/* When implemented, change the following to use gfc_notify_std F2003.
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: SIGN= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "SIGN= at %C "
"not allowed in Fortran 95") == FAILURE)
return MATCH_ERROR; */
if (dt->sign->expr_type == EXPR_CONSTANT)
@@ -3447,7 +3448,7 @@ if (condition) \
if (dt->delim)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: DELIM= at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "DELIM= at %C "
"not allowed in Fortran 95") == FAILURE)
return MATCH_ERROR;
@@ -4196,7 +4197,7 @@ gfc_match_wait (void)
goto syntax;
}
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: WAIT at %C "
+ if (gfc_notify_std (GFC_STD_F2003, "WAIT at %C "
"not allowed in Fortran 95") == FAILURE)
goto cleanup;
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 6d1e8b2a176..3f981d88c1b 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -134,9 +134,12 @@ resolve_bound (gfc_expr *f, gfc_expr *array, gfc_expr *dim, gfc_expr *kind,
if (dim == NULL)
{
f->rank = 1;
- f->shape = gfc_get_shape (1);
- mpz_init_set_ui (f->shape[0], coarray ? gfc_get_corank (array)
- : array->rank);
+ if (array->rank != -1)
+ {
+ f->shape = gfc_get_shape (1);
+ mpz_init_set_ui (f->shape[0], coarray ? gfc_get_corank (array)
+ : array->rank);
+ }
}
f->value.function.name = xstrdup (name);
@@ -2225,8 +2228,12 @@ gfc_resolve_shape (gfc_expr *f, gfc_expr *array, gfc_expr *kind)
f->ts.kind = gfc_default_integer_kind;
f->rank = 1;
- f->shape = gfc_get_shape (1);
- mpz_init_set_ui (f->shape[0], array->rank);
+ if (array->rank != -1)
+ {
+ f->shape = gfc_get_shape (1);
+ mpz_init_set_ui (f->shape[0], array->rank);
+ }
+
f->value.function.name = gfc_get_string (PREFIX ("shape_%d"), f->ts.kind);
}
diff --git a/gcc/fortran/iso-c-binding.def b/gcc/fortran/iso-c-binding.def
index f8673b963c8..66712ad0d30 100644
--- a/gcc/fortran/iso-c-binding.def
+++ b/gcc/fortran/iso-c-binding.def
@@ -61,6 +61,8 @@ NAMED_INTCST (ISOCBINDING_INTMAX_T, "c_intmax_t", \
get_int_kind_from_name (INTMAX_TYPE), GFC_STD_F2003)
NAMED_INTCST (ISOCBINDING_INTPTR_T, "c_intptr_t", \
get_int_kind_from_name (INTPTR_TYPE), GFC_STD_F2003)
+NAMED_INTCST (ISOCBINDING_PTRDIFF_T, "c_ptrdiff_t", \
+ get_int_kind_from_name (PTRDIFF_TYPE), GFC_STD_F2008_TS)
NAMED_INTCST (ISOCBINDING_SIZE_T, "c_size_t", \
gfc_index_integer_kind, GFC_STD_F2003)
NAMED_INTCST (ISOCBINDING_SIGNED_CHAR, "c_signed_char", \
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
index 3b9d29b0328..8a633464c4c 100644
--- a/gcc/fortran/lang.opt
+++ b/gcc/fortran/lang.opt
@@ -218,6 +218,10 @@ Wcharacter-truncation
Fortran Warning
Warn about truncated character expressions
+Wcompare-reals
+Fortran Warning
+Warn about equality comparisons involving REAL or COMPLEX expressions
+
Wconversion
Fortran Warning
; Documented in C
@@ -258,6 +262,10 @@ Wrealloc-lhs-all
Fortran Warning
Warn when a left-hand-side variable is reallocated
+Wtarget-lifetime
+Fortran Warning
+Warn if the pointer in a pointer assignment might outlive its target
+
Wreturn-type
Fortran Warning
; Documented in C
@@ -287,7 +295,7 @@ Fortran Negative(nocpp)
Enable preprocessing
cpp=
-Fortran Joined Negative(nocpp) Undocumented
+Fortran Joined Negative(nocpp) Undocumented NoDWARFRecord
; Internal option generated by specs from -cpp.
nocpp
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 3d63510b00b..4c713a5d6cb 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "match.h"
@@ -1343,7 +1344,7 @@ gfc_match_pointer_assignment (void)
}
if (lvalue->symtree->n.sym->attr.proc_pointer
- || gfc_is_proc_ptr_comp (lvalue, NULL))
+ || gfc_is_proc_ptr_comp (lvalue))
gfc_matching_procptr_assignment = 1;
else
gfc_matching_ptr_assignment = 1;
@@ -1392,7 +1393,7 @@ match_arithmetic_if (void)
return MATCH_ERROR;
}
- if (gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: Arithmetic IF "
+ if (gfc_notify_std (GFC_STD_F95_OBS, "Arithmetic IF "
"statement at %C") == FAILURE)
return MATCH_ERROR;
@@ -1473,7 +1474,7 @@ gfc_match_if (gfc_statement *if_type)
return MATCH_ERROR;
}
- if (gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: Arithmetic IF "
+ if (gfc_notify_std (GFC_STD_F95_OBS, "Arithmetic IF "
"statement at %C") == FAILURE)
return MATCH_ERROR;
@@ -1757,7 +1758,7 @@ gfc_match_critical (void)
if (gfc_implicit_pure (NULL))
gfc_current_ns->proc_name->attr.implicit_pure = 0;
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: CRITICAL statement at %C")
+ if (gfc_notify_std (GFC_STD_F2008, "CRITICAL statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -2381,7 +2382,7 @@ gfc_match_do (void)
gfc_forall_iterator *head;
gfc_expr *mask;
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: DO CONCURRENT "
+ if (gfc_notify_std (GFC_STD_F2008, "DO CONCURRENT "
"construct at %C") == FAILURE)
return MATCH_ERROR;
@@ -2399,7 +2400,7 @@ gfc_match_do (void)
goto concurr_cleanup;
if (label != NULL
- && gfc_reference_st_label (label, ST_LABEL_TARGET) == FAILURE)
+ && gfc_reference_st_label (label, ST_LABEL_DO_TARGET) == FAILURE)
goto concurr_cleanup;
new_st.label1 = label;
@@ -2453,7 +2454,7 @@ concurr_cleanup:
done:
if (label != NULL
- && gfc_reference_st_label (label, ST_LABEL_TARGET) == FAILURE)
+ && gfc_reference_st_label (label, ST_LABEL_DO_TARGET) == FAILURE)
goto cleanup;
new_st.label1 = label;
@@ -2580,7 +2581,7 @@ match_exit_cycle (gfc_statement st, gfc_exec_op op)
return MATCH_ERROR;
}
gcc_assert (op == EXEC_EXIT);
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: EXIT statement with no"
+ if (gfc_notify_std (GFC_STD_F2008, "EXIT statement with no"
" do-construct-name at %C") == FAILURE)
return MATCH_ERROR;
break;
@@ -2771,7 +2772,7 @@ gfc_match_pause (void)
m = gfc_match_stopcode (ST_PAUSE);
if (m == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F95_DEL, "Deleted feature: PAUSE statement"
+ if (gfc_notify_std (GFC_STD_F95_DEL, "PAUSE statement"
" at %C")
== FAILURE)
m = MATCH_ERROR;
@@ -2794,7 +2795,7 @@ gfc_match_stop (void)
match
gfc_match_error_stop (void)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: ERROR STOP statement at %C")
+ if (gfc_notify_std (GFC_STD_F2008, "ERROR STOP statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -2976,7 +2977,7 @@ cleanup:
match
gfc_match_lock (void)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: LOCK statement at %C")
+ if (gfc_notify_std (GFC_STD_F2008, "LOCK statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -2987,7 +2988,7 @@ gfc_match_lock (void)
match
gfc_match_unlock (void)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: UNLOCK statement at %C")
+ if (gfc_notify_std (GFC_STD_F2008, "UNLOCK statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -3020,7 +3021,7 @@ sync_statement (gfc_statement st)
if (gfc_implicit_pure (NULL))
gfc_current_ns->proc_name->attr.implicit_pure = 0;
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SYNC statement at %C")
+ if (gfc_notify_std (GFC_STD_F2008, "SYNC statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -3218,7 +3219,7 @@ gfc_match_assign (void)
return MATCH_ERROR;
if (gfc_match (" to %v%t", &expr) == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F95_DEL, "Deleted feature: ASSIGN "
+ if (gfc_notify_std (GFC_STD_F95_DEL, "ASSIGN "
"statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -3264,7 +3265,7 @@ gfc_match_goto (void)
if (gfc_match_variable (&expr, 0) == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F95_DEL, "Deleted feature: Assigned GOTO "
+ if (gfc_notify_std (GFC_STD_F95_DEL, "Assigned GOTO "
"statement at %C")
== FAILURE)
return MATCH_ERROR;
@@ -3374,7 +3375,7 @@ gfc_match_goto (void)
if (gfc_match (" %e%t", &expr) != MATCH_YES)
goto syntax;
- if (gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: Computed GOTO "
+ if (gfc_notify_std (GFC_STD_F95_OBS, "Computed GOTO "
"at %C") == FAILURE)
return MATCH_ERROR;
@@ -3456,7 +3457,7 @@ gfc_match_allocate (void)
{
if (gfc_match (" :: ") == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: typespec in "
+ if (gfc_notify_std (GFC_STD_F2003, "typespec in "
"ALLOCATE at %L", &old_locus) == FAILURE)
goto cleanup;
@@ -3619,7 +3620,7 @@ alloc_opt_list:
goto cleanup;
if (m == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ERRMSG tag at %L",
+ if (gfc_notify_std (GFC_STD_F2003, "ERRMSG tag at %L",
&tmp->where) == FAILURE)
goto cleanup;
@@ -3643,7 +3644,7 @@ alloc_opt_list:
goto cleanup;
if (m == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: SOURCE tag at %L",
+ if (gfc_notify_std (GFC_STD_F2003, "SOURCE tag at %L",
&tmp->where) == FAILURE)
goto cleanup;
@@ -3663,7 +3664,7 @@ alloc_opt_list:
}
if (head->next
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SOURCE tag at %L"
+ && gfc_notify_std (GFC_STD_F2008, "SOURCE tag at %L"
" with more than a single allocate object",
&tmp->where) == FAILURE)
goto cleanup;
@@ -3681,7 +3682,7 @@ alloc_opt_list:
goto cleanup;
if (m == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: MOLD tag at %L",
+ if (gfc_notify_std (GFC_STD_F2008, "MOLD tag at %L",
&tmp->where) == FAILURE)
goto cleanup;
@@ -3943,7 +3944,7 @@ dealloc_opt_list:
goto cleanup;
if (m == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ERRMSG at %L",
+ if (gfc_notify_std (GFC_STD_F2003, "ERRMSG at %L",
&tmp->where) == FAILURE)
goto cleanup;
@@ -4021,7 +4022,7 @@ gfc_match_return (void)
goto cleanup;
}
- if (gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: Alternate RETURN "
+ if (gfc_notify_std (GFC_STD_F95_OBS, "Alternate RETURN "
"at %C") == FAILURE)
return MATCH_ERROR;
@@ -4051,7 +4052,7 @@ cleanup:
done:
gfc_enclosing_unit (&s);
if (s == COMP_PROGRAM
- && gfc_notify_std (GFC_STD_GNU, "Extension: RETURN statement in "
+ && gfc_notify_std (GFC_STD_GNU, "RETURN statement in "
"main program at %C") == FAILURE)
return MATCH_ERROR;
@@ -4397,6 +4398,7 @@ gfc_match_common (void)
/* Store a ref to the common block for error checking. */
sym->common_block = t;
+ sym->common_block->refs++;
/* See if we know the current common block is bind(c), and if
so, then see if we can check if the symbol is (which it'll
@@ -4965,7 +4967,7 @@ gfc_match_st_function (void)
sym->value = expr;
- if (gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: "
+ if (gfc_notify_std (GFC_STD_F95_OBS,
"Statement function at %C") == FAILURE)
return MATCH_ERROR;
diff --git a/gcc/fortran/matchexp.c b/gcc/fortran/matchexp.c
index cd70dc0f758..12d5b2dcbab 100644
--- a/gcc/fortran/matchexp.c
+++ b/gcc/fortran/matchexp.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "arith.h"
#include "match.h"
diff --git a/gcc/fortran/misc.c b/gcc/fortran/misc.c
index 012364ae774..60c3cf1ddd3 100644
--- a/gcc/fortran/misc.c
+++ b/gcc/fortran/misc.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 60a74cacca4..bfd8b01ea09 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -68,6 +68,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "arith.h"
#include "match.h"
@@ -552,7 +553,7 @@ gfc_match_use (void)
{
if ((m = gfc_match (" %n ::", module_nature)) == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: module "
+ if (gfc_notify_std (GFC_STD_F2003, "module "
"nature in USE statement at %C") == FAILURE)
goto cleanup;
@@ -587,7 +588,7 @@ gfc_match_use (void)
{
m = gfc_match (" ::");
if (m == MATCH_YES &&
- gfc_notify_std (GFC_STD_F2003, "Fortran 2003: "
+ gfc_notify_std (GFC_STD_F2003,
"\"USE :: module\" at %C") == FAILURE)
goto cleanup;
@@ -655,7 +656,7 @@ gfc_match_use (void)
m = gfc_match (" =>");
if (type == INTERFACE_USER_OP && m == MATCH_YES
- && (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Renaming "
+ && (gfc_notify_std (GFC_STD_F2003, "Renaming "
"operators in USE statements at %C")
== FAILURE))
goto cleanup;
@@ -2340,6 +2341,7 @@ mio_typespec (gfc_typespec *ts)
static const mstring array_spec_types[] = {
minit ("EXPLICIT", AS_EXPLICIT),
+ minit ("ASSUMED_RANK", AS_ASSUMED_RANK),
minit ("ASSUMED_SHAPE", AS_ASSUMED_SHAPE),
minit ("DEFERRED", AS_DEFERRED),
minit ("ASSUMED_SIZE", AS_ASSUMED_SIZE),
@@ -2357,9 +2359,15 @@ mio_array_spec (gfc_array_spec **asp)
if (iomode == IO_OUTPUT)
{
+ int rank;
+
if (*asp == NULL)
goto done;
as = *asp;
+
+ /* mio_integer expects nonnegative values. */
+ rank = as->rank > 0 ? as->rank : 0;
+ mio_integer (&rank);
}
else
{
@@ -2370,20 +2378,23 @@ mio_array_spec (gfc_array_spec **asp)
}
*asp = as = gfc_get_array_spec ();
+ mio_integer (&as->rank);
}
- mio_integer (&as->rank);
mio_integer (&as->corank);
as->type = MIO_NAME (array_type) (as->type, array_spec_types);
+ if (iomode == IO_INPUT && as->type == AS_ASSUMED_RANK)
+ as->rank = -1;
if (iomode == IO_INPUT && as->corank)
as->cotype = (as->type == AS_DEFERRED) ? AS_DEFERRED : AS_EXPLICIT;
- for (i = 0; i < as->rank + as->corank; i++)
- {
- mio_expr (&as->lower[i]);
- mio_expr (&as->upper[i]);
- }
+ if (as->rank > 0)
+ for (i = 0; i < as->rank + as->corank; i++)
+ {
+ mio_expr (&as->lower[i]);
+ mio_expr (&as->upper[i]);
+ }
done:
mio_rparen ();
@@ -3796,10 +3807,7 @@ mio_symbol (gfc_symbol *sym)
{
mio_namespace_ref (&sym->formal_ns);
if (sym->formal_ns)
- {
- sym->formal_ns->proc_name = sym;
- sym->refs++;
- }
+ sym->formal_ns->proc_name = sym;
}
/* Save/restore common block links. */
@@ -6050,7 +6058,7 @@ gfc_use_module (gfc_use_list *module)
if (module_fp == NULL && !module->non_intrinsic)
{
if (strcmp (module_name, "iso_fortran_env") == 0
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ISO_FORTRAN_ENV "
+ && gfc_notify_std (GFC_STD_F2003, "ISO_FORTRAN_ENV "
"intrinsic module at %C") != FAILURE)
{
use_iso_fortran_env_module ();
@@ -6060,7 +6068,7 @@ gfc_use_module (gfc_use_list *module)
}
if (strcmp (module_name, "iso_c_binding") == 0
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: "
+ && gfc_notify_std (GFC_STD_F2003,
"ISO_C_BINDING module at %C") != FAILURE)
{
import_iso_c_binding_module();
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index f5a58779c0c..e1ffa6b49f7 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "match.h"
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index f1721ce0a9b..764f5706ad0 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -113,6 +113,8 @@ gfc_init_options (unsigned int decoded_options_count,
gfc_option.warn_unused_dummy_argument = 0;
gfc_option.warn_realloc_lhs = 0;
gfc_option.warn_realloc_lhs_all = 0;
+ gfc_option.warn_compare_reals = 0;
+ gfc_option.warn_target_lifetime = 0;
gfc_option.max_errors = 25;
gfc_option.flag_all_intrinsics = 0;
@@ -473,6 +475,7 @@ set_Wall (int setting)
gfc_option.warn_character_truncation = setting;
gfc_option.warn_real_q_constant = setting;
gfc_option.warn_unused_dummy_argument = setting;
+ gfc_option.warn_target_lifetime = setting;
warn_return_type = setting;
warn_switch = setting;
@@ -638,6 +641,10 @@ gfc_handle_option (size_t scode, const char *arg, int value,
gfc_option.warn_character_truncation = value;
break;
+ case OPT_Wcompare_reals:
+ gfc_option.warn_compare_reals = value;
+ break;
+
case OPT_Wconversion:
gfc_option.gfc_warn_conversion = value;
break;
@@ -682,6 +689,10 @@ gfc_handle_option (size_t scode, const char *arg, int value,
gfc_option.warn_tabs = value;
break;
+ case OPT_Wtarget_lifetime:
+ gfc_option.warn_target_lifetime = value;
+ break;
+
case OPT_Wunderflow:
gfc_option.warn_underflow = value;
break;
@@ -819,7 +830,6 @@ gfc_handle_option (size_t scode, const char *arg, int value,
break;
case OPT_fintrinsic_modules_path:
- gfc_add_include_path (arg, false, false);
gfc_add_intrinsic_modules_path (arg);
break;
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 4e7f691e630..5c5d38176c3 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
#include <setjmp.h>
+#include "coretypes.h"
#include "gfortran.h"
#include "match.h"
#include "parse.h"
@@ -75,7 +76,7 @@ match_word (const char *str, match (*subr) (void), locus *old_locus)
}
-/* Load symbols from all USE statements encounted in this scoping unit. */
+/* Load symbols from all USE statements encountered in this scoping unit. */
static void
use_modules (void)
@@ -1167,7 +1168,10 @@ check_statement_label (gfc_statement st)
case ST_END_ASSOCIATE:
case_executable:
case_exec_markers:
- type = ST_LABEL_TARGET;
+ if (st == ST_ENDDO || st == ST_CONTINUE)
+ type = ST_LABEL_DO_TARGET;
+ else
+ type = ST_LABEL_TARGET;
break;
case ST_FORMAT:
@@ -1975,7 +1979,7 @@ parse_derived_contains (void)
goto error;
case ST_PROCEDURE:
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Type-bound"
+ if (gfc_notify_std (GFC_STD_F2003, "Type-bound"
" procedure at %C") == FAILURE)
goto error;
@@ -1984,7 +1988,7 @@ parse_derived_contains (void)
break;
case ST_GENERIC:
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: GENERIC binding"
+ if (gfc_notify_std (GFC_STD_F2003, "GENERIC binding"
" at %C") == FAILURE)
goto error;
@@ -1994,7 +1998,7 @@ parse_derived_contains (void)
case ST_FINAL:
if (gfc_notify_std (GFC_STD_F2003,
- "Fortran 2003: FINAL procedure declaration"
+ "FINAL procedure declaration"
" at %C") == FAILURE)
goto error;
@@ -2006,7 +2010,7 @@ parse_derived_contains (void)
to_finish = true;
if (!seen_comps
- && (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Derived type "
+ && (gfc_notify_std (GFC_STD_F2008, "Derived type "
"definition at %C with empty CONTAINS "
"section") == FAILURE))
goto error;
@@ -2111,7 +2115,7 @@ endType:
compiling_type = 0;
if (!seen_component)
- gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Derived type "
+ gfc_notify_std (GFC_STD_F2003, "Derived type "
"definition at %C without components");
accept_statement (ST_END_TYPE);
@@ -2165,7 +2169,7 @@ endType:
case ST_CONTAINS:
gfc_notify_std (GFC_STD_F2003,
- "Fortran 2003: CONTAINS block in derived type"
+ "CONTAINS block in derived type"
" definition at %C");
accept_statement (ST_CONTAINS);
@@ -2359,7 +2363,6 @@ parse_interface (void)
gfc_interface_info save;
gfc_state_data s1, s2;
gfc_statement st;
- locus proc_locus;
accept_statement (ST_INTERFACE);
@@ -2448,7 +2451,9 @@ loop:
accept_statement (st);
prog_unit = gfc_new_block;
prog_unit->formal_ns = gfc_current_ns;
- proc_locus = gfc_current_locus;
+ if (prog_unit == prog_unit->formal_ns->proc_name
+ && prog_unit->ns != prog_unit->formal_ns)
+ prog_unit->refs++;
decl:
/* Read data declaration statements. */
@@ -2489,7 +2494,8 @@ decl:
&& strcmp (current_interface.ns->proc_name->name,
prog_unit->name) == 0)
gfc_error ("INTERFACE procedure '%s' at %L has the same name as the "
- "enclosing procedure", prog_unit->name, &proc_locus);
+ "enclosing procedure", prog_unit->name,
+ &current_interface.ns->proc_name->declared_at);
goto loop;
@@ -3267,7 +3273,7 @@ parse_critical_block (void)
if (s.ext.end_do_label != NULL
&& s.ext.end_do_label != gfc_statement_label)
gfc_error_now ("Statement label in END CRITICAL at %C does not "
- "match CRITIAL label");
+ "match CRITICAL label");
if (gfc_statement_label != NULL)
{
@@ -3334,7 +3340,7 @@ parse_block_construct (void)
gfc_namespace* my_ns;
gfc_state_data s;
- gfc_notify_std (GFC_STD_F2008, "Fortran 2008: BLOCK construct at %C");
+ gfc_notify_std (GFC_STD_F2008, "BLOCK construct at %C");
my_ns = gfc_build_block_ns (gfc_current_ns);
@@ -3364,7 +3370,7 @@ parse_associate (void)
gfc_statement st;
gfc_association_list* a;
- gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ASSOCIATE construct at %C");
+ gfc_notify_std (GFC_STD_F2003, "ASSOCIATE construct at %C");
my_ns = gfc_build_block_ns (gfc_current_ns);
@@ -3392,7 +3398,7 @@ parse_associate (void)
however, as it may only be set on the target during resolution.
Still, sometimes it helps to have it right now -- especially
for parsing component references on the associate-name
- in case of assication to a derived-type. */
+ in case of association to a derived-type. */
sym->ts = a->target->ts;
}
@@ -3824,8 +3830,12 @@ parse_executable (gfc_statement st)
case ST_NONE:
unexpected_eof ();
- case ST_FORMAT:
case ST_DATA:
+ gfc_notify_std (GFC_STD_F95_OBS, "DATA statement at %C after the "
+ "first executable statement");
+ /* Fall through. */
+
+ case ST_FORMAT:
case ST_ENTRY:
case_executable:
accept_statement (st);
@@ -4067,6 +4077,7 @@ parse_contained (int module)
case ST_END_PROGRAM:
case ST_END_SUBROUTINE:
accept_statement (st);
+ gfc_current_ns->code = s1.head;
break;
default:
@@ -4094,7 +4105,7 @@ parse_contained (int module)
pop_state ();
if (!contains_statements)
- gfc_notify_std (GFC_STD_F2008, "Fortran 2008: CONTAINS statement without "
+ gfc_notify_std (GFC_STD_F2008, "CONTAINS statement without "
"FUNCTION or SUBROUTINE statement at %C");
}
@@ -4512,6 +4523,7 @@ gfc_parse_file (void)
gfc_global_ns_list = next = NULL;
seen_program = 0;
+ errors_before = 0;
/* Exit early for empty files. */
if (gfc_at_eof ())
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index 41e2fa81efb..cadc20c27b7 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "arith.h"
@@ -268,7 +269,7 @@ match_hollerith_constant (gfc_expr **result)
if (match_integer_constant (&e, 0) == MATCH_YES
&& gfc_match_char ('h') == MATCH_YES)
{
- if (gfc_notify_std (GFC_STD_LEGACY, "Extension: Hollerith constant "
+ if (gfc_notify_std (GFC_STD_LEGACY, "Hollerith constant "
"at %C") == FAILURE)
goto cleanup;
@@ -392,7 +393,7 @@ match_boz_constant (gfc_expr **result)
goto backup;
if (x_hex
- && (gfc_notify_std (GFC_STD_GNU, "Extension: Hexadecimal "
+ && (gfc_notify_std (GFC_STD_GNU, "Hexadecimal "
"constant at %C uses non-standard syntax")
== FAILURE))
return MATCH_ERROR;
@@ -431,7 +432,7 @@ match_boz_constant (gfc_expr **result)
goto backup;
}
- if (gfc_notify_std (GFC_STD_GNU, "Extension: BOZ constant "
+ if (gfc_notify_std (GFC_STD_GNU, "BOZ constant "
"at %C uses non-standard postfix syntax")
== FAILURE)
return MATCH_ERROR;
@@ -468,7 +469,7 @@ match_boz_constant (gfc_expr **result)
}
if (!gfc_in_match_data ()
- && (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: BOZ used outside a DATA "
+ && (gfc_notify_std (GFC_STD_F2003, "BOZ used outside a DATA "
"statement at %C")
== FAILURE))
return MATCH_ERROR;
@@ -559,7 +560,7 @@ match_real_constant (gfc_expr **result, int signflag)
if (c == 'q')
{
- if (gfc_notify_std (GFC_STD_GNU, "Extension: exponent-letter 'q' in "
+ if (gfc_notify_std (GFC_STD_GNU, "exponent-letter 'q' in "
"real-literal-constant at %C") == FAILURE)
return MATCH_ERROR;
else if (gfc_option.warn_real_q_constant)
@@ -1217,7 +1218,7 @@ match_sym_complex_part (gfc_expr **result)
return MATCH_ERROR;
}
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PARAMETER symbol in "
+ if (gfc_notify_std (GFC_STD_F2003, "PARAMETER symbol in "
"complex constant at %C") == FAILURE)
return MATCH_ERROR;
@@ -1645,7 +1646,7 @@ match_arg_list_function (gfc_actual_arglist *result)
}
}
- if (gfc_notify_std (GFC_STD_GNU, "Extension: argument list "
+ if (gfc_notify_std (GFC_STD_GNU, "argument list "
"function at %C") == FAILURE)
{
m = MATCH_ERROR;
@@ -1861,7 +1862,7 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag,
if ((equiv_flag && gfc_peek_ascii_char () == '(')
|| gfc_peek_ascii_char () == '[' || sym->attr.codimension
|| (sym->attr.dimension && sym->ts.type != BT_CLASS
- && !sym->attr.proc_pointer && !gfc_is_proc_ptr_comp (primary, NULL)
+ && !sym->attr.proc_pointer && !gfc_is_proc_ptr_comp (primary)
&& !(gfc_matching_procptr_assignment
&& sym->attr.flavor == FL_PROCEDURE))
|| (sym->ts.type == BT_CLASS && sym->attr.class_ok
@@ -2352,7 +2353,7 @@ build_actual_constructor (gfc_structure_ctor_component **comp_head,
{
if (comp->initializer)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Structure"
+ if (gfc_notify_std (GFC_STD_F2003, "Structure"
" constructor with missing optional arguments"
" at %C") == FAILURE)
return FAILURE;
@@ -2428,7 +2429,7 @@ gfc_convert_to_structure_constructor (gfc_expr *e, gfc_symbol *sym, gfc_expr **c
}
if (actual->name)
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Structure"
+ if (gfc_notify_std (GFC_STD_F2003, "Structure"
" constructor with named arguments at %C")
== FAILURE)
goto cleanup;
@@ -2842,13 +2843,18 @@ gfc_match_rvalue (gfc_expr **result)
/* Parse functions returning a procptr. */
goto function0;
- if (gfc_is_intrinsic (sym, 0, gfc_current_locus)
- || gfc_is_intrinsic (sym, 1, gfc_current_locus))
- sym->attr.intrinsic = 1;
e = gfc_get_expr ();
e->expr_type = EXPR_VARIABLE;
e->symtree = symtree;
m = gfc_match_varspec (e, 0, false, true);
+ if (!e->ref && sym->attr.flavor == FL_UNKNOWN
+ && sym->ts.type == BT_UNKNOWN
+ && gfc_add_flavor (&sym->attr, FL_PROCEDURE,
+ sym->name, NULL) == FAILURE)
+ {
+ m = MATCH_ERROR;
+ break;
+ }
break;
}
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 0434e0804c7..312713bcc54 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "obstack.h"
@@ -63,7 +64,13 @@ static code_stack *cs_base = NULL;
static int forall_flag;
static int do_concurrent_flag;
-static bool assumed_type_expr_allowed = false;
+/* True when we are resolving an expression that is an actual argument to
+ a procedure. */
+static bool actual_arg = false;
+/* True when we are resolving an expression that is the first actual argument
+ to a procedure. */
+static bool first_actual_arg = false;
+
/* Nonzero if we're inside a OpenMP WORKSHARE or PARALLEL WORKSHARE block. */
@@ -85,6 +92,7 @@ static bitmap_obstack labels_obstack;
/* True when simplifying a EXPR_VARIABLE argument to an inquiry function. */
static bool inquiry_argument = false;
+
int
gfc_is_formal_arg (void)
{
@@ -130,8 +138,55 @@ resolve_typespec_used (gfc_typespec* ts, locus* where, const char* name)
}
+static gfc_try
+check_proc_interface (gfc_symbol *ifc, locus *where)
+{
+ /* Several checks for F08:C1216. */
+ if (ifc->attr.procedure)
+ {
+ gfc_error ("Interface '%s' at %L is declared "
+ "in a later PROCEDURE statement", ifc->name, where);
+ return FAILURE;
+ }
+ if (ifc->generic)
+ {
+ /* For generic interfaces, check if there is
+ a specific procedure with the same name. */
+ gfc_interface *gen = ifc->generic;
+ while (gen && strcmp (gen->sym->name, ifc->name) != 0)
+ gen = gen->next;
+ if (!gen)
+ {
+ gfc_error ("Interface '%s' at %L may not be generic",
+ ifc->name, where);
+ return FAILURE;
+ }
+ }
+ if (ifc->attr.proc == PROC_ST_FUNCTION)
+ {
+ gfc_error ("Interface '%s' at %L may not be a statement function",
+ ifc->name, where);
+ return FAILURE;
+ }
+ if (gfc_is_intrinsic (ifc, 0, ifc->declared_at)
+ || gfc_is_intrinsic (ifc, 1, ifc->declared_at))
+ ifc->attr.intrinsic = 1;
+ if (ifc->attr.intrinsic && !gfc_intrinsic_actual_ok (ifc->name, 0))
+ {
+ gfc_error ("Intrinsic procedure '%s' not allowed in "
+ "PROCEDURE statement at %L", ifc->name, where);
+ return FAILURE;
+ }
+ if (!ifc->attr.if_source && !ifc->attr.intrinsic && ifc->name[0] != '\0')
+ {
+ gfc_error ("Interface '%s' at %L must be explicit", ifc->name, where);
+ return FAILURE;
+ }
+ return SUCCESS;
+}
+
+
static void resolve_symbol (gfc_symbol *sym);
-static gfc_try resolve_intrinsic (gfc_symbol *sym, locus *loc);
/* Resolve the interface for a PROCEDURE declaration or procedure pointer. */
@@ -139,28 +194,26 @@ static gfc_try resolve_intrinsic (gfc_symbol *sym, locus *loc);
static gfc_try
resolve_procedure_interface (gfc_symbol *sym)
{
- if (sym->ts.interface == sym)
+ gfc_symbol *ifc = sym->ts.interface;
+
+ if (!ifc)
+ return SUCCESS;
+
+ if (ifc == sym)
{
gfc_error ("PROCEDURE '%s' at %L may not be used as its own interface",
sym->name, &sym->declared_at);
return FAILURE;
}
- if (sym->ts.interface->attr.procedure)
- {
- gfc_error ("Interface '%s', used by procedure '%s' at %L, is declared "
- "in a later PROCEDURE statement", sym->ts.interface->name,
- sym->name, &sym->declared_at);
- return FAILURE;
- }
+ if (check_proc_interface (ifc, &sym->declared_at) == FAILURE)
+ return FAILURE;
- /* Get the attributes from the interface (now resolved). */
- if (sym->ts.interface->attr.if_source || sym->ts.interface->attr.intrinsic)
+ if (ifc->attr.if_source || ifc->attr.intrinsic)
{
- gfc_symbol *ifc = sym->ts.interface;
+ /* Resolve interface and copy attributes. */
resolve_symbol (ifc);
-
if (ifc->attr.intrinsic)
- resolve_intrinsic (ifc, &ifc->declared_at);
+ gfc_resolve_intrinsic (ifc, &ifc->declared_at);
if (ifc->result)
{
@@ -172,7 +225,7 @@ resolve_procedure_interface (gfc_symbol *sym)
sym->ts.interface = ifc;
sym->attr.function = ifc->attr.function;
sym->attr.subroutine = ifc->attr.subroutine;
- gfc_copy_formal_args (sym, ifc);
+ gfc_copy_formal_args (sym, ifc, IFSRC_DECL);
sym->attr.allocatable = ifc->attr.allocatable;
sym->attr.pointer = ifc->attr.pointer;
@@ -184,6 +237,7 @@ resolve_procedure_interface (gfc_symbol *sym)
sym->attr.always_explicit = ifc->attr.always_explicit;
sym->attr.ext_attr |= ifc->attr.ext_attr;
sym->attr.is_bind_c = ifc->attr.is_bind_c;
+ sym->attr.class_ok = ifc->attr.class_ok;
/* Copy array spec. */
sym->as = gfc_copy_array_spec (ifc->as);
if (sym->as)
@@ -205,12 +259,6 @@ resolve_procedure_interface (gfc_symbol *sym)
return FAILURE;
}
}
- else if (sym->ts.interface->name[0] != '\0')
- {
- gfc_error ("Interface '%s' of procedure '%s' at %L must be explicit",
- sym->ts.interface->name, sym->name, &sym->declared_at);
- return FAILURE;
- }
return SUCCESS;
}
@@ -239,7 +287,7 @@ resolve_formal_arglist (gfc_symbol *proc)
if (gfc_elemental (proc)
|| sym->attr.pointer || sym->attr.allocatable
- || (sym->as && sym->as->rank > 0))
+ || (sym->as && sym->as->rank != 0))
{
proc->attr.always_explicit = 1;
sym->attr.always_explicit = 1;
@@ -249,6 +297,8 @@ resolve_formal_arglist (gfc_symbol *proc)
for (f = proc->formal; f; f = f->next)
{
+ gfc_array_spec *as;
+
sym = f->sym;
if (sym == NULL)
@@ -264,9 +314,9 @@ resolve_formal_arglist (gfc_symbol *proc)
&proc->declared_at);
continue;
}
- else if (sym->attr.procedure && sym->ts.interface
- && sym->attr.if_source != IFSRC_DECL)
- resolve_procedure_interface (sym);
+ else if (sym->attr.procedure && sym->attr.if_source != IFSRC_DECL
+ && resolve_procedure_interface (sym) == FAILURE)
+ return;
if (sym->attr.if_source != IFSRC_UNKNOWN)
resolve_formal_arglist (sym);
@@ -283,23 +333,34 @@ resolve_formal_arglist (gfc_symbol *proc)
gfc_set_default_type (sym, 1, sym->ns);
}
- gfc_resolve_array_spec (sym->as, 0);
+ as = sym->ts.type == BT_CLASS && sym->attr.class_ok
+ ? CLASS_DATA (sym)->as : sym->as;
+
+ gfc_resolve_array_spec (as, 0);
/* We can't tell if an array with dimension (:) is assumed or deferred
shape until we know if it has the pointer or allocatable attributes.
*/
- if (sym->as && sym->as->rank > 0 && sym->as->type == AS_DEFERRED
- && !(sym->attr.pointer || sym->attr.allocatable)
+ if (as && as->rank > 0 && as->type == AS_DEFERRED
+ && ((sym->ts.type != BT_CLASS
+ && !(sym->attr.pointer || sym->attr.allocatable))
+ || (sym->ts.type == BT_CLASS
+ && !(CLASS_DATA (sym)->attr.class_pointer
+ || CLASS_DATA (sym)->attr.allocatable)))
&& sym->attr.flavor != FL_PROCEDURE)
{
- sym->as->type = AS_ASSUMED_SHAPE;
- for (i = 0; i < sym->as->rank; i++)
- sym->as->lower[i] = gfc_get_int_expr (gfc_default_integer_kind,
- NULL, 1);
+ as->type = AS_ASSUMED_SHAPE;
+ for (i = 0; i < as->rank; i++)
+ as->lower[i] = gfc_get_int_expr (gfc_default_integer_kind, NULL, 1);
}
- if ((sym->as && sym->as->rank > 0 && sym->as->type == AS_ASSUMED_SHAPE)
+ if ((as && as->rank > 0 && as->type == AS_ASSUMED_SHAPE)
+ || (as && as->type == AS_ASSUMED_RANK)
|| sym->attr.pointer || sym->attr.allocatable || sym->attr.target
+ || (sym->ts.type == BT_CLASS && sym->attr.class_ok
+ && (CLASS_DATA (sym)->attr.class_pointer
+ || CLASS_DATA (sym)->attr.allocatable
+ || CLASS_DATA (sym)->attr.target))
|| sym->attr.optional)
{
proc->attr.always_explicit = 1;
@@ -330,7 +391,7 @@ resolve_formal_arglist (gfc_symbol *proc)
if (proc->attr.function && sym->attr.intent != INTENT_IN)
{
if (sym->attr.value)
- gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Argument '%s'"
+ gfc_notify_std (GFC_STD_F2008, "Argument '%s'"
" of pure function '%s' at %L with VALUE "
"attribute but without INTENT(IN)",
sym->name, proc->name, &sym->declared_at);
@@ -343,7 +404,7 @@ resolve_formal_arglist (gfc_symbol *proc)
if (proc->attr.subroutine && sym->attr.intent == INTENT_UNKNOWN)
{
if (sym->attr.value)
- gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Argument '%s'"
+ gfc_notify_std (GFC_STD_F2008, "Argument '%s'"
" of pure subroutine '%s' at %L with VALUE "
"attribute but without INTENT", sym->name,
proc->name, &sym->declared_at);
@@ -722,7 +783,7 @@ resolve_entries (gfc_namespace *ns)
&& ts->u.cl->length->expr_type == EXPR_CONSTANT
&& mpz_cmp (ts->u.cl->length->value.integer,
fts->u.cl->length->value.integer) != 0)))
- gfc_notify_std (GFC_STD_GNU, "Extension: Function %s at %L with "
+ gfc_notify_std (GFC_STD_GNU, "Function %s at %L with "
"entries returning variables of different "
"string lengths", ns->entries->sym->name,
&ns->entries->sym->declared_at);
@@ -915,12 +976,12 @@ resolve_common_blocks (gfc_symtree *common_root)
sym->name, &common_root->n.common->where);
else if (sym->attr.result
|| gfc_is_function_return_value (sym, gfc_current_ns))
- gfc_notify_std (GFC_STD_F2003, "Fortran 2003: COMMON block '%s' at %L "
+ gfc_notify_std (GFC_STD_F2003, "COMMON block '%s' at %L "
"that is also a function result", sym->name,
&common_root->n.common->where);
else if (sym->attr.flavor == FL_PROCEDURE && sym->attr.proc != PROC_INTERNAL
&& sym->attr.proc != PROC_ST_FUNCTION)
- gfc_notify_std (GFC_STD_F2003, "Fortran 2003: COMMON block '%s' at %L "
+ gfc_notify_std (GFC_STD_F2003, "COMMON block '%s' at %L "
"that is also a global procedure", sym->name,
&common_root->n.common->where);
}
@@ -1135,7 +1196,8 @@ resolve_structure_cons (gfc_expr *expr, int init)
const char *name;
char err[200];
- if (gfc_is_proc_ptr_comp (cons->expr, &c2))
+ c2 = gfc_get_proc_ptr_comp (cons->expr);
+ if (c2)
{
s2 = c2->ts.interface;
name = c2->name;
@@ -1478,8 +1540,8 @@ is_illegal_recursion (gfc_symbol* sym, gfc_namespace* context)
/* Resolve an intrinsic procedure: Set its function/subroutine attribute,
its typespec and formal argument list. */
-static gfc_try
-resolve_intrinsic (gfc_symbol *sym, locus *loc)
+gfc_try
+gfc_resolve_intrinsic (gfc_symbol *sym, locus *loc)
{
gfc_intrinsic_sym* isym = NULL;
const char* symstd;
@@ -1567,7 +1629,7 @@ resolve_procedure_expression (gfc_expr* expr)
sym = expr->symtree->n.sym;
if (sym->attr.intrinsic)
- resolve_intrinsic (sym, &expr->where);
+ gfc_resolve_intrinsic (sym, &expr->where);
if (sym->attr.flavor != FL_PROCEDURE
|| (sym->attr.function && sym->result == sym))
@@ -1598,8 +1660,11 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
gfc_symtree *parent_st;
gfc_expr *e;
int save_need_full_assumed_size;
+ gfc_try return_value = FAILURE;
+ bool actual_arg_sav = actual_arg, first_actual_arg_sav = first_actual_arg;
- assumed_type_expr_allowed = true;
+ actual_arg = true;
+ first_actual_arg = true;
for (; arg; arg = arg->next)
{
@@ -1613,9 +1678,10 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
{
gfc_error ("Label %d referenced at %L is never defined",
arg->label->value, &arg->label->where);
- return FAILURE;
+ goto cleanup;
}
}
+ first_actual_arg = false;
continue;
}
@@ -1623,7 +1689,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
&& e->symtree->n.sym->attr.generic
&& no_formal_args
&& count_specific_procs (e) != 1)
- return FAILURE;
+ goto cleanup;
if (e->ts.type != BT_PROCEDURE)
{
@@ -1631,7 +1697,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
if (e->expr_type != EXPR_VARIABLE)
need_full_assumed_size = 0;
if (gfc_resolve_expr (e) != SUCCESS)
- return FAILURE;
+ goto cleanup;
need_full_assumed_size = save_need_full_assumed_size;
goto argument_list;
}
@@ -1648,10 +1714,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
/* If a procedure is not already determined to be something else
check if it is intrinsic. */
- if (!sym->attr.intrinsic
- && !(sym->attr.external || sym->attr.use_assoc
- || sym->attr.if_source == IFSRC_IFBODY)
- && gfc_is_intrinsic (sym, sym->attr.subroutine, e->where))
+ if (gfc_is_intrinsic (sym, sym->attr.subroutine, e->where))
sym->attr.intrinsic = 1;
if (sym->attr.proc == PROC_ST_FUNCTION)
@@ -1672,10 +1735,10 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
&& sym->ns->proc_name->attr.flavor != FL_MODULE)
{
if (gfc_notify_std (GFC_STD_F2008,
- "Fortran 2008: Internal procedure '%s' is"
+ "Internal procedure '%s' is"
" used as actual argument at %L",
sym->name, &e->where) == FAILURE)
- return FAILURE;
+ goto cleanup;
}
if (sym->attr.elemental && !sym->attr.intrinsic)
@@ -1688,8 +1751,8 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
/* Check if a generic interface has a specific procedure
with the same name before emitting an error. */
if (sym->attr.generic && count_specific_procs (e) != 1)
- return FAILURE;
-
+ goto cleanup;
+
/* Just in case a specific was found for the expression. */
sym = e->symtree->n.sym;
@@ -1710,7 +1773,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
gfc_error ("Unable to find a specific INTRINSIC procedure "
"for the reference '%s' at %L", sym->name,
&e->where);
- return FAILURE;
+ goto cleanup;
}
sym->ts = isym->ts;
sym->attr.intrinsic = 1;
@@ -1718,7 +1781,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
}
if (gfc_resolve_expr (e) == FAILURE)
- return FAILURE;
+ goto cleanup;
goto argument_list;
}
@@ -1730,7 +1793,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
if (gfc_find_sym_tree (sym->name, sym->ns->parent, 1, &parent_st))
{
gfc_error ("Symbol '%s' at %L is ambiguous", sym->name, &e->where);
- return FAILURE;
+ goto cleanup;
}
if (parent_st == NULL)
@@ -1744,7 +1807,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
|| sym->attr.external)
{
if (gfc_resolve_expr (e) == FAILURE)
- return FAILURE;
+ goto cleanup;
goto argument_list;
}
@@ -1772,7 +1835,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
if (e->expr_type != EXPR_VARIABLE)
need_full_assumed_size = 0;
if (gfc_resolve_expr (e) != SUCCESS)
- return FAILURE;
+ goto cleanup;
need_full_assumed_size = save_need_full_assumed_size;
argument_list:
@@ -1786,14 +1849,14 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
{
gfc_error ("By-value argument at %L is not of numeric "
"type", &e->where);
- return FAILURE;
+ goto cleanup;
}
if (e->rank)
{
gfc_error ("By-value argument at %L cannot be an array or "
"an array section", &e->where);
- return FAILURE;
+ goto cleanup;
}
/* Intrinsics are still PROC_UNKNOWN here. However,
@@ -1807,7 +1870,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
{
gfc_error ("By-value argument at %L is not allowed "
"in this context", &e->where);
- return FAILURE;
+ goto cleanup;
}
}
@@ -1819,23 +1882,30 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
{
gfc_error ("Passing internal procedure at %L by location "
"not allowed", &e->where);
- return FAILURE;
+ goto cleanup;
}
}
}
/* Fortran 2008, C1237. */
if (e->expr_type == EXPR_VARIABLE && gfc_is_coindexed (e)
- && gfc_has_ultimate_pointer (e))
- {
- gfc_error ("Coindexed actual argument at %L with ultimate pointer "
+ && gfc_has_ultimate_pointer (e))
+ {
+ gfc_error ("Coindexed actual argument at %L with ultimate pointer "
"component", &e->where);
- return FAILURE;
- }
+ goto cleanup;
+ }
+
+ first_actual_arg = false;
}
- assumed_type_expr_allowed = false;
- return SUCCESS;
+ return_value = SUCCESS;
+
+cleanup:
+ actual_arg = actual_arg_sav;
+ first_actual_arg = first_actual_arg_sav;
+
+ return return_value;
}
@@ -1895,7 +1965,7 @@ resolve_elemental_actual (gfc_expr *expr, gfc_code *c)
/* The rank of an elemental is the rank of its array argument(s). */
for (arg = arg0; arg; arg = arg->next)
{
- if (arg->expr != NULL && arg->expr->rank > 0)
+ if (arg->expr != NULL && arg->expr->rank != 0)
{
rank = arg->expr->rank;
if (arg->expr->expr_type == EXPR_VARIABLE
@@ -2194,6 +2264,15 @@ resolve_global_procedure (gfc_symbol *sym, locus *where,
sym->name, &sym->declared_at, arg->sym->name);
break;
}
+ /* TS 29113, 6.2. */
+ else if (arg->sym && arg->sym->as
+ && arg->sym->as->type == AS_ASSUMED_RANK)
+ {
+ gfc_error ("Procedure '%s' at %L with assumed-rank dummy "
+ "argument '%s' must have an explicit interface",
+ sym->name, &sym->declared_at, arg->sym->name);
+ break;
+ }
/* F2008, 12.4.2.2 (2c) */
else if (arg->sym->attr.codimension)
{
@@ -2219,6 +2298,15 @@ resolve_global_procedure (gfc_symbol *sym, locus *where,
sym->name, &sym->declared_at, arg->sym->name);
break;
}
+ /* As assumed-type is unlimited polymorphic (cf. above).
+ See also TS 29113, Note 6.1. */
+ else if (arg->sym->ts.type == BT_ASSUMED)
+ {
+ gfc_error ("Procedure '%s' at %L with assumed-type dummy "
+ "argument '%s' must have an explicit interface",
+ sym->name, &sym->declared_at, arg->sym->name);
+ break;
+ }
}
if (def_sym->attr.function)
@@ -2552,8 +2640,7 @@ static bool
is_external_proc (gfc_symbol *sym)
{
if (!sym->attr.dummy && !sym->attr.contained
- && !(sym->attr.intrinsic
- || gfc_is_intrinsic (sym, sym->attr.subroutine, sym->declared_at))
+ && !gfc_is_intrinsic (sym, sym->attr.subroutine, sym->declared_at)
&& sym->attr.proc != PROC_ST_FUNCTION
&& !sym->attr.proc_pointer
&& !sym->attr.use_assoc
@@ -2962,20 +3049,18 @@ gfc_iso_c_func_interface (gfc_symbol *sym, gfc_actual_arglist *args,
{
/* TODO: Update this error message to allow for procedure
pointers once they are implemented. */
- gfc_error_now ("Parameter '%s' to '%s' at %L must be a "
+ gfc_error_now ("Argument '%s' to '%s' at %L must be a "
"procedure",
args_sym->name, sym->name,
&(args->expr->where));
retval = FAILURE;
}
- else if (args_sym->attr.is_bind_c != 1)
- {
- gfc_error_now ("Parameter '%s' to '%s' at %L must be "
- "BIND(C)",
- args_sym->name, sym->name,
- &(args->expr->where));
- retval = FAILURE;
- }
+ else if (args_sym->attr.is_bind_c != 1
+ && gfc_notify_std (GFC_STD_F2008_TS, "Noninteroperable "
+ "argument '%s' to '%s' at %L",
+ args_sym->name, sym->name,
+ &(args->expr->where)) == FAILURE)
+ retval = FAILURE;
}
/* for c_loc/c_funloc, the new symbol is the same as the old one */
@@ -3010,11 +3095,11 @@ resolve_function (gfc_expr *expr)
sym = expr->symtree->n.sym;
/* If this is a procedure pointer component, it has already been resolved. */
- if (gfc_is_proc_ptr_comp (expr, NULL))
+ if (gfc_is_proc_ptr_comp (expr))
return SUCCESS;
-
+
if (sym && sym->attr.intrinsic
- && resolve_intrinsic (sym, &expr->where) == FAILURE)
+ && gfc_resolve_intrinsic (sym, &expr->where) == FAILURE)
return FAILURE;
if (sym && (sym->attr.flavor == FL_VARIABLE || sym->attr.subroutine))
@@ -3430,7 +3515,11 @@ gfc_iso_c_sub_interface (gfc_code *c, gfc_symbol *sym)
/* Make sure the actual arguments are in the necessary order (based on the
formal args) before resolving. */
- gfc_procedure_use (sym, &c->ext.actual, &(c->loc));
+ if (gfc_procedure_use (sym, &c->ext.actual, &(c->loc)) == FAILURE)
+ {
+ c->resolved_sym = sym;
+ return MATCH_ERROR;
+ }
if ((sym->intmod_sym_id == ISOCBINDING_F_POINTER) ||
(sym->intmod_sym_id == ISOCBINDING_F_PROCPOINTER))
@@ -3441,6 +3530,15 @@ gfc_iso_c_sub_interface (gfc_code *c, gfc_symbol *sym)
{
if (c->ext.actual != NULL && c->ext.actual->next != NULL)
{
+ if (c->ext.actual->expr->ts.type != BT_DERIVED
+ || c->ext.actual->expr->ts.u.derived->intmod_sym_id
+ != ISOCBINDING_PTR)
+ {
+ gfc_error ("Argument at %L to C_F_POINTER shall have the type"
+ " C_PTR", &c->ext.actual->expr->where);
+ m = MATCH_ERROR;
+ }
+
/* Make sure we got a third arg if the second arg has non-zero
rank. We must also check that the type and rank are
correct since we short-circuit this check in
@@ -3466,7 +3564,26 @@ gfc_iso_c_sub_interface (gfc_code *c, gfc_symbol *sym)
}
}
}
-
+ else /* ISOCBINDING_F_PROCPOINTER. */
+ {
+ if (c->ext.actual
+ && (c->ext.actual->expr->ts.type != BT_DERIVED
+ || c->ext.actual->expr->ts.u.derived->intmod_sym_id
+ != ISOCBINDING_FUNPTR))
+ {
+ gfc_error ("Argument at %L to C_F_FUNPOINTER shall have the type "
+ "C_FUNPTR", &c->ext.actual->expr->where);
+ m = MATCH_ERROR;
+ }
+ if (c->ext.actual && c->ext.actual->next
+ && !gfc_expr_attr (c->ext.actual->next->expr).is_bind_c
+ && gfc_notify_std (GFC_STD_F2008_TS, "Noninteroperable "
+ "procedure-pointer at %L to C_F_FUNPOINTER",
+ &c->ext.actual->next->expr->where)
+ == FAILURE)
+ m = MATCH_ERROR;
+ }
+
if (m != MATCH_ERROR)
{
/* the 1 means to add the optional arg to formal list */
@@ -3917,6 +4034,28 @@ resolve_operator (gfc_expr *e)
e->ts.type = BT_LOGICAL;
e->ts.kind = gfc_default_logical_kind;
+
+ if (gfc_option.warn_compare_reals)
+ {
+ gfc_intrinsic_op op = e->value.op.op;
+
+ /* Type conversion has made sure that the types of op1 and op2
+ agree, so it is only necessary to check the first one. */
+ if ((op1->ts.type == BT_REAL || op1->ts.type == BT_COMPLEX)
+ && (op == INTRINSIC_EQ || op == INTRINSIC_EQ_OS
+ || op == INTRINSIC_NE || op == INTRINSIC_NE_OS))
+ {
+ const char *msg;
+
+ if (op == INTRINSIC_EQ || op == INTRINSIC_EQ_OS)
+ msg = "Equality comparison for %s at %L";
+ else
+ msg = "Inequality comparison for %s at %L";
+
+ gfc_warning (msg, gfc_typename (&op1->ts), &op1->where);
+ }
+ }
+
break;
}
@@ -4449,7 +4588,7 @@ gfc_resolve_index_1 (gfc_expr *index, int check_scalar,
}
if (index->ts.type == BT_REAL)
- if (gfc_notify_std (GFC_STD_LEGACY, "Extension: REAL array index at %L",
+ if (gfc_notify_std (GFC_STD_LEGACY, "REAL array index at %L",
&index->where) == FAILURE)
return FAILURE;
@@ -4964,7 +5103,7 @@ expression_shape (gfc_expr *e)
mpz_t array[GFC_MAX_DIMENSIONS];
int i;
- if (e->rank == 0 || e->shape != NULL)
+ if (e->rank <= 0 || e->shape != NULL)
return;
for (i = 0; i < e->rank; i++)
@@ -5067,23 +5206,79 @@ resolve_variable (gfc_expr *e)
sym = e->symtree->n.sym;
/* TS 29113, 407b. */
- if (e->ts.type == BT_ASSUMED && !assumed_type_expr_allowed)
+ if (e->ts.type == BT_ASSUMED)
{
- gfc_error ("Invalid expression with assumed-type variable %s at %L",
- sym->name, &e->where);
- return FAILURE;
+ if (!actual_arg)
+ {
+ gfc_error ("Assumed-type variable %s at %L may only be used "
+ "as actual argument", sym->name, &e->where);
+ return FAILURE;
+ }
+ else if (inquiry_argument && !first_actual_arg)
+ {
+ /* FIXME: It doesn't work reliably as inquiry_argument is not set
+ for all inquiry functions in resolve_function; the reason is
+ that the function-name resolution happens too late in that
+ function. */
+ gfc_error ("Assumed-type variable %s at %L as actual argument to "
+ "an inquiry function shall be the first argument",
+ sym->name, &e->where);
+ return FAILURE;
+ }
+ }
+
+ /* TS 29113, C535b. */
+ if ((sym->ts.type == BT_CLASS && sym->attr.class_ok
+ && CLASS_DATA (sym)->as
+ && CLASS_DATA (sym)->as->type == AS_ASSUMED_RANK)
+ || (sym->ts.type != BT_CLASS && sym->as
+ && sym->as->type == AS_ASSUMED_RANK))
+ {
+ if (!actual_arg)
+ {
+ gfc_error ("Assumed-rank variable %s at %L may only be used as "
+ "actual argument", sym->name, &e->where);
+ return FAILURE;
+ }
+ else if (inquiry_argument && !first_actual_arg)
+ {
+ /* FIXME: It doesn't work reliably as inquiry_argument is not set
+ for all inquiry functions in resolve_function; the reason is
+ that the function-name resolution happens too late in that
+ function. */
+ gfc_error ("Assumed-rank variable %s at %L as actual argument "
+ "to an inquiry function shall be the first argument",
+ sym->name, &e->where);
+ return FAILURE;
+ }
}
/* TS 29113, 407b. */
if (e->ts.type == BT_ASSUMED && e->ref
&& !(e->ref->type == REF_ARRAY && e->ref->u.ar.type == AR_FULL
- && e->ref->next == NULL))
+ && e->ref->next == NULL))
+ {
+ gfc_error ("Assumed-type variable %s at %L shall not have a subobject "
+ "reference", sym->name, &e->ref->u.ar.where);
+ return FAILURE;
+ }
+
+ /* TS 29113, C535b. */
+ if (((sym->ts.type == BT_CLASS && sym->attr.class_ok
+ && CLASS_DATA (sym)->as
+ && CLASS_DATA (sym)->as->type == AS_ASSUMED_RANK)
+ || (sym->ts.type != BT_CLASS && sym->as
+ && sym->as->type == AS_ASSUMED_RANK))
+ && e->ref
+ && !(e->ref->type == REF_ARRAY && e->ref->u.ar.type == AR_FULL
+ && e->ref->next == NULL))
{
- gfc_error ("Assumed-type variable %s with designator at %L",
- sym->name, &e->ref->u.ar.where);
+ gfc_error ("Assumed-rank variable %s at %L shall not have a subobject "
+ "reference", sym->name, &e->ref->u.ar.where);
return FAILURE;
}
+
/* If this is an associate-name, it may be parsed with an array reference
in error even though the target is scalar. Fail directly in this case.
TODO Understand why class scalar expressions must be excluded. */
@@ -5398,7 +5593,12 @@ gfc_resolve_character_operator (gfc_expr *e)
e->ts.u.cl = gfc_new_charlen (gfc_current_ns, NULL);
if (!e1 || !e2)
- return;
+ {
+ gfc_free_expr (e1);
+ gfc_free_expr (e2);
+
+ return;
+ }
e->ts.u.cl->length = gfc_add (e1, e2);
e->ts.u.cl->length->ts.type = BT_INTEGER;
@@ -5569,7 +5769,8 @@ update_ppc_arglist (gfc_expr* e)
gfc_component *ppc;
gfc_typebound_proc* tb;
- if (!gfc_is_proc_ptr_comp (e, &ppc))
+ ppc = gfc_get_proc_ptr_comp (e);
+ if (!ppc)
return FAILURE;
tb = ppc->tb;
@@ -5584,7 +5785,7 @@ update_ppc_arglist (gfc_expr* e)
return FAILURE;
/* F08:R739. */
- if (po->rank > 0)
+ if (po->rank != 0)
{
gfc_error ("Passed-object at %L must be scalar", &e->where);
return FAILURE;
@@ -5622,6 +5823,9 @@ check_typebound_baseobject (gfc_expr* e)
gcc_assert (base->ts.type == BT_DERIVED || base->ts.type == BT_CLASS);
+ if (base->ts.type == BT_CLASS && !gfc_expr_attr (base).class_ok)
+ return FAILURE;
+
/* F08:C611. */
if (base->ts.type == BT_DERIVED && base->ts.u.derived->attr.abstract)
{
@@ -5632,7 +5836,7 @@ check_typebound_baseobject (gfc_expr* e)
/* F08:C1230. If the procedure called is NOPASS,
the base object must be scalar. */
- if (e->value.compcall.tbp->nopass && base->rank > 0)
+ if (e->value.compcall.tbp->nopass && base->rank != 0)
{
gfc_error ("Base object for NOPASS type-bound procedure call at %L must"
" be scalar", &e->where);
@@ -6192,10 +6396,9 @@ static gfc_try
resolve_ppc_call (gfc_code* c)
{
gfc_component *comp;
- bool b;
- b = gfc_is_proc_ptr_comp (c->expr1, &comp);
- gcc_assert (b);
+ comp = gfc_get_proc_ptr_comp (c->expr1);
+ gcc_assert (comp != NULL);
c->resolved_sym = c->expr1->symtree->n.sym;
c->expr1->expr_type = EXPR_VARIABLE;
@@ -6227,10 +6430,9 @@ static gfc_try
resolve_expr_ppc (gfc_expr* e)
{
gfc_component *comp;
- bool b;
- b = gfc_is_proc_ptr_comp (e, &comp);
- gcc_assert (b);
+ comp = gfc_get_proc_ptr_comp (e);
+ gcc_assert (comp != NULL);
/* Convert to EXPR_FUNCTION. */
e->expr_type = EXPR_FUNCTION;
@@ -6294,15 +6496,22 @@ gfc_try
gfc_resolve_expr (gfc_expr *e)
{
gfc_try t;
- bool inquiry_save;
+ bool inquiry_save, actual_arg_save, first_actual_arg_save;
if (e == NULL)
return SUCCESS;
/* inquiry_argument only applies to variables. */
inquiry_save = inquiry_argument;
+ actual_arg_save = actual_arg;
+ first_actual_arg_save = first_actual_arg;
+
if (e->expr_type != EXPR_VARIABLE)
- inquiry_argument = false;
+ {
+ inquiry_argument = false;
+ actual_arg = false;
+ first_actual_arg = false;
+ }
switch (e->expr_type)
{
@@ -6392,6 +6601,8 @@ gfc_resolve_expr (gfc_expr *e)
fixup_charlen (e);
inquiry_argument = inquiry_save;
+ actual_arg = actual_arg_save;
+ first_actual_arg = first_actual_arg_save;
return t;
}
@@ -6419,7 +6630,7 @@ gfc_resolve_iterator_expr (gfc_expr *expr, bool real_ok,
{
if (real_ok)
return gfc_notify_std (GFC_STD_F95_DEL,
- "Deleted feature: %s at %L must be integer",
+ "%s at %L must be integer",
_(name_msgid), &expr->where);
else
{
@@ -7325,8 +7536,8 @@ resolve_allocate_deallocate (gfc_code *code, const char *fcn)
}
}
- /* Check that an allocate-object appears only once in the statement.
- FIXME: Checking derived types is disabled. */
+ /* Check that an allocate-object appears only once in the statement. */
+
for (p = code->ext.alloc.list; p; p = p->next)
{
pe = p->expr;
@@ -7376,9 +7587,10 @@ resolve_allocate_deallocate (gfc_code *code, const char *fcn)
{
gfc_array_ref *par = &(pr->u.ar);
gfc_array_ref *qar = &(qr->u.ar);
- if (gfc_dep_compare_expr (par->start[0],
- qar->start[0]) != 0)
- break;
+ if ((par->start[0] != NULL || qar->start[0] != NULL)
+ && gfc_dep_compare_expr (par->start[0],
+ qar->start[0]) != 0)
+ break;
}
}
else
@@ -8586,7 +8798,7 @@ resolve_branch (gfc_st_label *label, gfc_code *code)
return;
}
- if (label->defined != ST_LABEL_TARGET)
+ if (label->defined != ST_LABEL_TARGET && label->defined != ST_LABEL_DO_TARGET)
{
gfc_error ("Statement at %L is not a valid branch target statement "
"for the branch statement at %L", &label->where, &code->loc);
@@ -9156,7 +9368,7 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns)
rhs = code->expr2;
if (rhs->is_boz
- && gfc_notify_std (GFC_STD_GNU, "Extension: BOZ literal at %L outside "
+ && gfc_notify_std (GFC_STD_GNU, "BOZ literal at %L outside "
"a DATA statement and outside INT/REAL/DBLE/CMPLX",
&code->loc) == FAILURE)
return false;
@@ -10319,22 +10531,22 @@ resolve_fl_var_and_proc (gfc_symbol *sym, int mp_flag)
if (allocatable)
{
- if (dimension)
+ if (dimension && as->type != AS_ASSUMED_RANK)
{
- gfc_error ("Allocatable array '%s' at %L must have "
- "a deferred shape", sym->name, &sym->declared_at);
+ gfc_error ("Allocatable array '%s' at %L must have a deferred "
+ "shape or assumed rank", sym->name, &sym->declared_at);
return FAILURE;
}
- else if (gfc_notify_std (GFC_STD_F2003, "Scalar object '%s' at %L "
- "may not be ALLOCATABLE", sym->name,
- &sym->declared_at) == FAILURE)
+ else if (gfc_notify_std (GFC_STD_F2003, "Scalar object "
+ "'%s' at %L may not be ALLOCATABLE",
+ sym->name, &sym->declared_at) == FAILURE)
return FAILURE;
}
- if (pointer && dimension)
+ if (pointer && dimension && as->type != AS_ASSUMED_RANK)
{
- gfc_error ("Array pointer '%s' at %L must have a deferred shape",
- sym->name, &sym->declared_at);
+ gfc_error ("Array pointer '%s' at %L must have a deferred shape or "
+ "assumed rank", sym->name, &sym->declared_at);
return FAILURE;
}
}
@@ -10421,7 +10633,7 @@ resolve_fl_variable_derived (gfc_symbol *sym, int no_init_flag)
&& !sym->ns->save_all && !sym->attr.save
&& !sym->attr.pointer && !sym->attr.allocatable
&& gfc_has_default_initializer (sym->ts.u.derived)
- && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Implied SAVE for "
+ && gfc_notify_std (GFC_STD_F2008, "Implied SAVE for "
"module variable '%s' at %L, needed due to "
"the default initialization", sym->name,
&sym->declared_at) == FAILURE)
@@ -10636,7 +10848,7 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
&& arg->sym->ts.type == BT_DERIVED
&& !arg->sym->ts.u.derived->attr.use_assoc
&& !gfc_check_symbol_access (arg->sym->ts.u.derived)
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' is of a "
+ && gfc_notify_std (GFC_STD_F2003, "'%s' is of a "
"PRIVATE type and cannot be a dummy argument"
" of '%s', which is PUBLIC at %L",
arg->sym->name, sym->name, &sym->declared_at)
@@ -10658,7 +10870,7 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
&& arg->sym->ts.type == BT_DERIVED
&& !arg->sym->ts.u.derived->attr.use_assoc
&& !gfc_check_symbol_access (arg->sym->ts.u.derived)
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Procedure "
+ && gfc_notify_std (GFC_STD_F2003, "Procedure "
"'%s' in PUBLIC interface '%s' at %L "
"takes dummy arguments of '%s' which is "
"PRIVATE", iface->sym->name, sym->name,
@@ -10682,7 +10894,7 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
&& arg->sym->ts.type == BT_DERIVED
&& !arg->sym->ts.u.derived->attr.use_assoc
&& !gfc_check_symbol_access (arg->sym->ts.u.derived)
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Procedure "
+ && gfc_notify_std (GFC_STD_F2003, "Procedure "
"'%s' in PUBLIC interface '%s' at %L "
"takes dummy arguments of '%s' which is "
"PRIVATE", iface->sym->name, sym->name,
@@ -10770,7 +10982,7 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
if (!sym->attr.contained
&& gfc_current_form != FORM_FIXED
&& !sym->ts.deferred)
- gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: "
+ gfc_notify_std (GFC_STD_F95_OBS,
"CHARACTER(*) function '%s' at %L",
sym->name, &sym->declared_at);
}
@@ -10948,7 +11160,7 @@ gfc_resolve_finalizers (gfc_symbol* derived)
}
/* Warn if the procedure is non-scalar and not assumed shape. */
- if (gfc_option.warn_surprising && arg->as && arg->as->rank > 0
+ if (gfc_option.warn_surprising && arg->as && arg->as->rank != 0
&& arg->as->type != AS_ASSUMED_SHAPE)
gfc_warning ("Non-scalar FINAL procedure at %L should have assumed"
" shape argument", &arg->declared_at);
@@ -11390,17 +11602,25 @@ resolve_typebound_procedure (gfc_symtree* stree)
/* Default access should already be resolved from the parser. */
gcc_assert (stree->n.tb->access != ACCESS_UNKNOWN);
- /* It should be a module procedure or an external procedure with explicit
- interface. For DEFERRED bindings, abstract interfaces are ok as well. */
- if ((!proc->attr.subroutine && !proc->attr.function)
- || (proc->attr.proc != PROC_MODULE
- && proc->attr.if_source != IFSRC_IFBODY)
- || (proc->attr.abstract && !stree->n.tb->deferred))
+ if (stree->n.tb->deferred)
{
- gfc_error ("'%s' must be a module procedure or an external procedure with"
- " an explicit interface at %L", proc->name, &where);
- goto error;
+ if (check_proc_interface (proc, &where) == FAILURE)
+ goto error;
}
+ else
+ {
+ /* Check for F08:C465. */
+ if ((!proc->attr.subroutine && !proc->attr.function)
+ || (proc->attr.proc != PROC_MODULE
+ && proc->attr.if_source != IFSRC_IFBODY)
+ || proc->attr.abstract)
+ {
+ gfc_error ("'%s' must be a module procedure or an external procedure with"
+ " an explicit interface at %L", proc->name, &where);
+ goto error;
+ }
+ }
+
stree->n.tb->subroutine = proc->attr.subroutine;
stree->n.tb->function = proc->attr.function;
@@ -11477,7 +11697,7 @@ resolve_typebound_procedure (gfc_symtree* stree)
}
gcc_assert (me_arg->ts.type == BT_CLASS);
- if (CLASS_DATA (me_arg)->as && CLASS_DATA (me_arg)->as->rank > 0)
+ if (CLASS_DATA (me_arg)->as && CLASS_DATA (me_arg)->as->rank != 0)
{
gfc_error ("Passed-object dummy argument of '%s' at %L must be"
" scalar", proc->name, &where);
@@ -11753,22 +11973,19 @@ resolve_fl_derived0 (gfc_symbol *sym)
if (c->attr.proc_pointer && c->ts.interface)
{
- if (c->ts.interface->attr.procedure && !sym->attr.vtype)
- gfc_error ("Interface '%s', used by procedure pointer component "
- "'%s' at %L, is declared in a later PROCEDURE statement",
- c->ts.interface->name, c->name, &c->loc);
+ gfc_symbol *ifc = c->ts.interface;
- /* Get the attributes from the interface (now resolved). */
- if (c->ts.interface->attr.if_source
- || c->ts.interface->attr.intrinsic)
- {
- gfc_symbol *ifc = c->ts.interface;
+ if (!sym->attr.vtype
+ && check_proc_interface (ifc, &c->loc) == FAILURE)
+ return FAILURE;
+ if (ifc->attr.if_source || ifc->attr.intrinsic)
+ {
+ /* Resolve interface and copy attributes. */
if (ifc->formal && !ifc->formal_ns)
resolve_symbol (ifc);
-
if (ifc->attr.intrinsic)
- resolve_intrinsic (ifc, &ifc->declared_at);
+ gfc_resolve_intrinsic (ifc, &ifc->declared_at);
if (ifc->result)
{
@@ -11789,13 +12006,14 @@ resolve_fl_derived0 (gfc_symbol *sym)
c->ts.interface = ifc;
c->attr.function = ifc->attr.function;
c->attr.subroutine = ifc->attr.subroutine;
- gfc_copy_formal_args_ppc (c, ifc);
+ gfc_copy_formal_args_ppc (c, ifc, IFSRC_DECL);
c->attr.pure = ifc->attr.pure;
c->attr.elemental = ifc->attr.elemental;
c->attr.recursive = ifc->attr.recursive;
c->attr.always_explicit = ifc->attr.always_explicit;
c->attr.ext_attr |= ifc->attr.ext_attr;
+ c->attr.class_ok = ifc->attr.class_ok;
/* Replace symbols in array spec. */
if (c->as)
{
@@ -11805,25 +12023,18 @@ resolve_fl_derived0 (gfc_symbol *sym)
gfc_expr_replace_comp (c->as->lower[i], c);
gfc_expr_replace_comp (c->as->upper[i], c);
}
- }
+ }
/* Copy char length. */
if (ifc->ts.type == BT_CHARACTER && ifc->ts.u.cl)
{
gfc_charlen *cl = gfc_new_charlen (sym->ns, ifc->ts.u.cl);
gfc_expr_replace_comp (cl->length, c);
if (cl->length && !cl->resolved
- && gfc_resolve_expr (cl->length) == FAILURE)
+ && gfc_resolve_expr (cl->length) == FAILURE)
return FAILURE;
c->ts.u.cl = cl;
}
}
- else if (!sym->attr.vtype && c->ts.interface->name[0] != '\0')
- {
- gfc_error ("Interface '%s' of procedure pointer component "
- "'%s' at %L must be explicit", c->ts.interface->name,
- c->name, &c->loc);
- return FAILURE;
- }
}
else if (c->attr.proc_pointer && c->ts.type == BT_UNKNOWN)
{
@@ -11990,7 +12201,7 @@ resolve_fl_derived0 (gfc_symbol *sym)
&& !is_sym_host_assoc (c->ts.u.derived, sym->ns)
&& !c->ts.u.derived->attr.use_assoc
&& !gfc_check_symbol_access (c->ts.u.derived)
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: the component '%s' "
+ && gfc_notify_std (GFC_STD_F2003, "the component '%s' "
"is a PRIVATE type and cannot be a component of "
"'%s', which is PUBLIC at %L", c->name,
sym->name, &sym->declared_at) == FAILURE)
@@ -12098,7 +12309,7 @@ resolve_fl_derived (gfc_symbol *sym)
if (gen_dt && gen_dt->generic && gen_dt->generic->next
&& (!gen_dt->generic->sym->attr.use_assoc
|| gen_dt->generic->sym->module != gen_dt->generic->next->sym->module)
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Generic name '%s' of "
+ && gfc_notify_std (GFC_STD_F2003, "Generic name '%s' of "
"function '%s' at %L being the same name as derived "
"type at %L", sym->name,
gen_dt->generic->sym == sym
@@ -12156,14 +12367,14 @@ resolve_fl_namelist (gfc_symbol *sym)
}
if (nl->sym->as && nl->sym->as->type == AS_ASSUMED_SHAPE
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: NAMELIST array "
+ && gfc_notify_std (GFC_STD_F2003, "NAMELIST array "
"object '%s' with assumed shape in namelist "
"'%s' at %L", nl->sym->name, sym->name,
&sym->declared_at) == FAILURE)
return FAILURE;
if (is_non_constant_shape_array (nl->sym)
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: NAMELIST array "
+ && gfc_notify_std (GFC_STD_F2003, "NAMELIST array "
"object '%s' with nonconstant shape in namelist "
"'%s' at %L", nl->sym->name, sym->name,
&sym->declared_at) == FAILURE)
@@ -12172,7 +12383,7 @@ resolve_fl_namelist (gfc_symbol *sym)
if (nl->sym->ts.type == BT_CHARACTER
&& (nl->sym->ts.u.cl->length == NULL
|| !gfc_is_constant_expr (nl->sym->ts.u.cl->length))
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: NAMELIST object "
+ && gfc_notify_std (GFC_STD_F2003, "NAMELIST object "
"'%s' with nonconstant character length in "
"namelist '%s' at %L", nl->sym->name, sym->name,
&sym->declared_at) == FAILURE)
@@ -12192,7 +12403,7 @@ resolve_fl_namelist (gfc_symbol *sym)
&& (nl->sym->ts.u.derived->attr.alloc_comp
|| nl->sym->ts.u.derived->attr.pointer_comp))
{
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: NAMELIST object "
+ if (gfc_notify_std (GFC_STD_F2003, "NAMELIST object "
"'%s' in namelist '%s' at %L with ALLOCATABLE "
"or POINTER components", nl->sym->name,
sym->name, &sym->declared_at) == FAILURE)
@@ -12371,8 +12582,7 @@ resolve_symbol (gfc_symbol *sym)
if (sym->attr.external && sym->ts.type != BT_UNKNOWN && !sym->attr.function)
gfc_add_function (&sym->attr, sym->name, &sym->declared_at);
- if (sym->attr.procedure && sym->ts.interface
- && sym->attr.if_source != IFSRC_DECL
+ if (sym->attr.procedure && sym->attr.if_source != IFSRC_DECL
&& resolve_procedure_interface (sym) == FAILURE)
return;
@@ -12403,7 +12613,7 @@ resolve_symbol (gfc_symbol *sym)
representation. This needs to be done before assigning a default
type to avoid spurious warnings. */
if (sym->attr.flavor != FL_MODULE && sym->attr.intrinsic
- && resolve_intrinsic (sym, &sym->declared_at) == FAILURE)
+ && gfc_resolve_intrinsic (sym, &sym->declared_at) == FAILURE)
return;
/* Resolve associate names. */
@@ -12491,6 +12701,20 @@ resolve_symbol (gfc_symbol *sym)
&sym->declared_at);
return;
}
+ /* TS 29113, C535a. */
+ if (as->type == AS_ASSUMED_RANK && !sym->attr.dummy)
+ {
+ gfc_error ("Assumed-rank array at %L must be a dummy argument",
+ &sym->declared_at);
+ return;
+ }
+ if (as->type == AS_ASSUMED_RANK
+ && (sym->attr.codimension || sym->attr.value))
+ {
+ gfc_error ("Assumed-rank array at %L may not have the VALUE or "
+ "CODIMENSION attribute", &sym->declared_at);
+ return;
+ }
}
/* Make sure symbols with known intent or optional are really dummy
@@ -12563,6 +12787,13 @@ resolve_symbol (gfc_symbol *sym)
sym->name, &sym->declared_at);
return;
}
+ if (sym->attr.intent == INTENT_OUT)
+ {
+ gfc_error ("Assumed-type variable %s at %L may not have the "
+ "INTENT(OUT) attribute",
+ sym->name, &sym->declared_at);
+ return;
+ }
if (sym->attr.dimension && sym->as->type == AS_EXPLICIT)
{
gfc_error ("Assumed-type variable %s at %L shall not be an "
@@ -12670,7 +12901,7 @@ resolve_symbol (gfc_symbol *sym)
&& !sym->ts.u.derived->attr.use_assoc
&& gfc_check_symbol_access (sym)
&& !gfc_check_symbol_access (sym->ts.u.derived)
- && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PUBLIC %s '%s' at %L "
+ && gfc_notify_std (GFC_STD_F2003, "PUBLIC %s '%s' at %L "
"of PRIVATE derived type '%s'",
(sym->attr.flavor == FL_PARAMETER) ? "parameter"
: "variable", sym->name, &sym->declared_at,
@@ -12860,7 +13091,8 @@ resolve_symbol (gfc_symbol *sym)
if (formal)
{
sym->formal_ns = formal->sym->ns;
- sym->formal_ns->refs++;
+ if (sym->ns != formal->sym->ns)
+ sym->formal_ns->refs++;
}
}
@@ -13836,7 +14068,7 @@ resolve_fntype (gfc_namespace *ns)
&& !gfc_check_symbol_access (sym->ts.u.derived)
&& gfc_check_symbol_access (sym))
{
- gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PUBLIC function '%s' at "
+ gfc_notify_std (GFC_STD_F2003, "PUBLIC function '%s' at "
"%L of PRIVATE type '%s'", sym->name,
&sym->declared_at, sym->ts.u.derived->name);
}
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 120d55022b8..e0556a9760a 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -43,6 +43,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
#include "toplev.h" /* For set_src_pwd. */
#include "debug.h"
@@ -306,16 +307,36 @@ gfc_scanner_done_1 (void)
static void
add_path_to_list (gfc_directorylist **list, const char *path,
- bool use_for_modules, bool head)
+ bool use_for_modules, bool head, bool warn)
{
gfc_directorylist *dir;
const char *p;
-
+ struct stat st;
+
p = path;
while (*p == ' ' || *p == '\t') /* someone might do "-I include" */
if (*p++ == '\0')
return;
+ if (stat (p, &st))
+ {
+ if (errno != ENOENT)
+ gfc_warning_now ("Include directory \"%s\": %s", path,
+ xstrerror(errno));
+ else
+ {
+ /* FIXME: Also support -Wmissing-include-dirs. */
+ if (warn)
+ gfc_warning_now ("Nonexistent include directory \"%s\"", path);
+ }
+ return;
+ }
+ else if (!S_ISDIR (st.st_mode))
+ {
+ gfc_warning_now ("\"%s\" is not a directory", path);
+ return;
+ }
+
if (head || *list == NULL)
{
dir = XCNEW (gfc_directorylist);
@@ -345,7 +366,7 @@ add_path_to_list (gfc_directorylist **list, const char *path,
void
gfc_add_include_path (const char *path, bool use_for_modules, bool file_dir)
{
- add_path_to_list (&include_dirs, path, use_for_modules, file_dir);
+ add_path_to_list (&include_dirs, path, use_for_modules, file_dir, true);
/* For '#include "..."' these directories are automatically searched. */
if (!file_dir)
@@ -356,7 +377,7 @@ gfc_add_include_path (const char *path, bool use_for_modules, bool file_dir)
void
gfc_add_intrinsic_modules_path (const char *path)
{
- add_path_to_list (&intrinsic_modules_dirs, path, true, false);
+ add_path_to_list (&intrinsic_modules_dirs, path, true, false, false);
}
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 1578db19b94..e4ccddf967c 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "arith.h"
@@ -418,7 +419,7 @@ typedef gfc_expr* (*transformational_op)(gfc_expr*, gfc_expr*);
/* Wrapper function, implements 'op1 += 1'. Only called if MASK
of COUNT intrinsic is .TRUE..
- Interface and implimentation mimics arith functions as
+ Interface and implementation mimics arith functions as
gfc_add, gfc_multiply, etc. */
static gfc_expr* gfc_count (gfc_expr *op1, gfc_expr *op2)
@@ -2934,7 +2935,6 @@ gfc_simplify_iparity (gfc_expr *array, gfc_expr *dim, gfc_expr *mask)
}
-
gfc_expr *
gfc_simplify_is_iostat_end (gfc_expr *x)
{
@@ -3380,7 +3380,8 @@ simplify_bound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind, int upper)
done:
- if (as && (as->type == AS_DEFERRED || as->type == AS_ASSUMED_SHAPE))
+ if (as && (as->type == AS_DEFERRED || as->type == AS_ASSUMED_SHAPE
+ || as->type == AS_ASSUMED_RANK))
return NULL;
if (dim == NULL)
@@ -3442,13 +3443,16 @@ simplify_bound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind, int upper)
d = mpz_get_si (dim->value.integer);
- if (d < 1 || d > array->rank
+ if ((d < 1 || d > array->rank)
|| (d == array->rank && as && as->type == AS_ASSUMED_SIZE && upper))
{
gfc_error ("DIM argument at %L is out of bounds", &dim->where);
return &gfc_bad_expr;
}
+ if (as && as->type == AS_ASSUMED_RANK)
+ return NULL;
+
return simplify_bound_dim (array, kind, d, upper, as, ref, false);
}
}
@@ -4779,6 +4783,10 @@ gfc_simplify_range (gfc_expr *e)
gfc_expr *
gfc_simplify_rank (gfc_expr *e)
{
+ /* Assumed rank. */
+ if (e->rank == -1)
+ return NULL;
+
return gfc_get_int_expr (gfc_default_integer_kind, &e->where, e->rank);
}
@@ -5462,6 +5470,9 @@ gfc_simplify_shape (gfc_expr *source, gfc_expr *kind)
gfc_try t;
int k = get_kind (BT_INTEGER, kind, "SHAPE", gfc_default_integer_kind);
+ if (source->rank == -1)
+ return NULL;
+
result = gfc_get_array_expr (BT_INTEGER, k, &source->where);
if (source->rank == 0)
diff --git a/gcc/fortran/st.c b/gcc/fortran/st.c
index 932c9428af8..ed379fc44af 100644
--- a/gcc/fortran/st.c
+++ b/gcc/fortran/st.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "gfortran.h"
gfc_code new_st;
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 6ca4ca33014..5e97c4086d1 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "gfortran.h"
#include "parse.h"
@@ -480,7 +481,7 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where)
conf (external, subroutine);
if (attr->proc_pointer && gfc_notify_std (GFC_STD_F2003,
- "Fortran 2003: Procedure pointer at %C") == FAILURE)
+ "Procedure pointer at %C") == FAILURE)
return FAILURE;
conf (allocatable, pointer);
@@ -771,13 +772,13 @@ conflict:
conflict_std:
if (name == NULL)
{
- return gfc_notify_std (standard, "Fortran 2003: %s attribute "
+ return gfc_notify_std (standard, "%s attribute "
"with %s attribute at %L", a1, a2,
where);
}
else
{
- return gfc_notify_std (standard, "Fortran 2003: %s attribute "
+ return gfc_notify_std (standard, "%s attribute "
"with %s attribute in '%s' at %L",
a1, a2, name, where);
}
@@ -1596,7 +1597,7 @@ gfc_add_is_bind_c (symbol_attribute *attr, const char *name, locus *where,
if (where == NULL)
where = &gfc_current_locus;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: BIND(C) at %L", where)
+ if (gfc_notify_std (GFC_STD_F2003, "BIND(C) at %L", where)
== FAILURE)
return FAILURE;
@@ -1617,7 +1618,7 @@ gfc_add_extension (symbol_attribute *attr, locus *where)
else
attr->extension = 1;
- if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: EXTENDS at %L", where)
+ if (gfc_notify_std (GFC_STD_F2003, "EXTENDS at %L", where)
== FAILURE)
return FAILURE;
@@ -2203,7 +2204,8 @@ gfc_define_st_label (gfc_st_label *lp, gfc_sl_type type, locus *label_locus)
switch (type)
{
case ST_LABEL_FORMAT:
- if (lp->referenced == ST_LABEL_TARGET)
+ if (lp->referenced == ST_LABEL_TARGET
+ || lp->referenced == ST_LABEL_DO_TARGET)
gfc_error ("Label %d at %C already referenced as branch target",
labelno);
else
@@ -2212,12 +2214,18 @@ gfc_define_st_label (gfc_st_label *lp, gfc_sl_type type, locus *label_locus)
break;
case ST_LABEL_TARGET:
+ case ST_LABEL_DO_TARGET:
if (lp->referenced == ST_LABEL_FORMAT)
gfc_error ("Label %d at %C already referenced as a format label",
labelno);
else
- lp->defined = ST_LABEL_TARGET;
+ lp->defined = type;
+ if (lp->referenced == ST_LABEL_DO_TARGET && type != ST_LABEL_DO_TARGET
+ && gfc_notify_std (GFC_STD_F95_OBS, "DO termination statement "
+ "which is not END DO or CONTINUE with label "
+ "%d at %C", labelno) == FAILURE)
+ return;
break;
default:
@@ -2253,14 +2261,16 @@ gfc_reference_st_label (gfc_st_label *lp, gfc_sl_type type)
lp->where = gfc_current_locus;
}
- if (label_type == ST_LABEL_FORMAT && type == ST_LABEL_TARGET)
+ if (label_type == ST_LABEL_FORMAT
+ && (type == ST_LABEL_TARGET || type == ST_LABEL_DO_TARGET))
{
gfc_error ("Label %d at %C previously used as a FORMAT label", labelno);
rc = FAILURE;
goto done;
}
- if ((label_type == ST_LABEL_TARGET || label_type == ST_LABEL_BAD_TARGET)
+ if ((label_type == ST_LABEL_TARGET || label_type == ST_LABEL_DO_TARGET
+ || label_type == ST_LABEL_BAD_TARGET)
&& type == ST_LABEL_FORMAT)
{
gfc_error ("Label %d at %C previously used as branch target", labelno);
@@ -2268,7 +2278,13 @@ gfc_reference_st_label (gfc_st_label *lp, gfc_sl_type type)
goto done;
}
- lp->referenced = type;
+ if (lp->referenced == ST_LABEL_DO_TARGET && type == ST_LABEL_DO_TARGET
+ && gfc_notify_std (GFC_STD_F95_OBS, "Shared DO termination label %d "
+ "at %C", labelno) == FAILURE)
+ return FAILURE;
+
+ if (lp->referenced != ST_LABEL_DO_TARGET)
+ lp->referenced = type;
rc = SUCCESS;
done:
@@ -2495,7 +2511,8 @@ gfc_free_symbol (gfc_symbol *sym)
gfc_free_namelist (sym->namelist);
- gfc_free_namespace (sym->formal_ns);
+ if (sym->ns != sym->formal_ns)
+ gfc_free_namespace (sym->formal_ns);
if (!sym->attr.generic_copy)
gfc_free_interface (sym->generic);
@@ -2504,6 +2521,13 @@ gfc_free_symbol (gfc_symbol *sym)
gfc_free_namespace (sym->f2k_derived);
+ if (sym->common_block && sym->common_block->name[0] != '\0')
+ {
+ sym->common_block->refs--;
+ if (sym->common_block->refs == 0)
+ free (sym->common_block);
+ }
+
free (sym);
}
@@ -2516,7 +2540,8 @@ gfc_release_symbol (gfc_symbol *sym)
if (sym == NULL)
return;
- if (sym->formal_ns != NULL && sym->refs == 2)
+ if (sym->formal_ns != NULL && sym->refs == 2 && sym->formal_ns != sym->ns
+ && (!sym->attr.entry || !sym->module))
{
/* As formal_ns contains a reference to sym, delete formal_ns just
before the deletion of sym. */
@@ -4048,8 +4073,7 @@ gen_shape_param (gfc_formal_arglist **head,
reference to the list of formal arguments). */
static void
-add_proc_interface (gfc_symbol *sym, ifsrc source,
- gfc_formal_arglist *formal)
+add_proc_interface (gfc_symbol *sym, ifsrc source, gfc_formal_arglist *formal)
{
sym->formal = formal;
@@ -4065,7 +4089,7 @@ add_proc_interface (gfc_symbol *sym, ifsrc source,
args based on the args of a given named interface. */
void
-gfc_copy_formal_args (gfc_symbol *dest, gfc_symbol *src)
+gfc_copy_formal_args (gfc_symbol *dest, gfc_symbol *src, ifsrc if_src)
{
gfc_formal_arglist *head = NULL;
gfc_formal_arglist *tail = NULL;
@@ -4079,6 +4103,7 @@ gfc_copy_formal_args (gfc_symbol *dest, gfc_symbol *src)
of the formal args). */
gfc_current_ns = gfc_get_namespace (parent_ns, 0);
gfc_current_ns->proc_name = dest;
+ dest->formal_ns = gfc_current_ns;
for (curr_arg = src->formal; curr_arg; curr_arg = curr_arg->next)
{
@@ -4089,7 +4114,8 @@ gfc_copy_formal_args (gfc_symbol *dest, gfc_symbol *src)
formal_arg->sym->attr = curr_arg->sym->attr;
formal_arg->sym->ts = curr_arg->sym->ts;
formal_arg->sym->as = gfc_copy_array_spec (curr_arg->sym->as);
- gfc_copy_formal_args (formal_arg->sym, curr_arg->sym);
+ gfc_copy_formal_args (formal_arg->sym, curr_arg->sym,
+ curr_arg->sym->attr.if_source);
/* If this isn't the first arg, set up the next ptr. For the
last arg built, the formal_arg->next will never get set to
@@ -4109,7 +4135,7 @@ gfc_copy_formal_args (gfc_symbol *dest, gfc_symbol *src)
}
/* Add the interface to the symbol. */
- add_proc_interface (dest, IFSRC_DECL, head);
+ add_proc_interface (dest, if_src, head);
/* Store the formal namespace information. */
if (dest->formal != NULL)
@@ -4182,7 +4208,7 @@ gfc_copy_formal_args_intr (gfc_symbol *dest, gfc_intrinsic_sym *src)
void
-gfc_copy_formal_args_ppc (gfc_component *dest, gfc_symbol *src)
+gfc_copy_formal_args_ppc (gfc_component *dest, gfc_symbol *src, ifsrc if_src)
{
gfc_formal_arglist *head = NULL;
gfc_formal_arglist *tail = NULL;
@@ -4206,7 +4232,8 @@ gfc_copy_formal_args_ppc (gfc_component *dest, gfc_symbol *src)
formal_arg->sym->attr = curr_arg->sym->attr;
formal_arg->sym->ts = curr_arg->sym->ts;
formal_arg->sym->as = gfc_copy_array_spec (curr_arg->sym->as);
- gfc_copy_formal_args (formal_arg->sym, curr_arg->sym);
+ gfc_copy_formal_args (formal_arg->sym, curr_arg->sym,
+ curr_arg->sym->attr.if_source);
/* If this isn't the first arg, set up the next ptr. For the
last arg built, the formal_arg->next will never get set to
@@ -4228,7 +4255,7 @@ gfc_copy_formal_args_ppc (gfc_component *dest, gfc_symbol *src)
/* Add the interface to the symbol. */
gfc_free_formal_arglist (dest->formal);
dest->formal = head;
- dest->attr.if_source = IFSRC_DECL;
+ dest->attr.if_source = if_src;
/* Store the formal namespace information. */
if (dest->formal != NULL)
@@ -4744,7 +4771,7 @@ gfc_check_symbol_typed (gfc_symbol* sym, gfc_namespace* ns,
}
if (gfc_notify_std (GFC_STD_GNU,
- "Extension: Symbol '%s' is used before"
+ "Symbol '%s' is used before"
" it is typed at %L", sym->name, &where) == FAILURE)
return FAILURE;
}
diff --git a/gcc/fortran/target-memory.c b/gcc/fortran/target-memory.c
index 63878959b47..637811e0965 100644
--- a/gcc/fortran/target-memory.c
+++ b/gcc/fortran/target-memory.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
+#include "coretypes.h"
#include "flags.h"
#include "machmode.h"
#include "tree.h"
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index f135af1ef30..c350c3b5e3a 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -81,7 +81,7 @@ along with GCC; see the file COPYING3. If not see
#include "system.h"
#include "coretypes.h"
#include "tree.h"
-#include "gimple.h"
+#include "gimple.h" /* For create_tmp_var_name. */
#include "diagnostic-core.h" /* For internal_error/fatal_error. */
#include "flags.h"
#include "gfortran.h"
@@ -247,12 +247,25 @@ gfc_conv_descriptor_dtype (tree desc)
desc, field, NULL_TREE);
}
-static tree
-gfc_conv_descriptor_dimension (tree desc, tree dim)
+
+tree
+gfc_conv_descriptor_rank (tree desc)
{
- tree field;
- tree type;
tree tmp;
+ tree dtype;
+
+ dtype = gfc_conv_descriptor_dtype (desc);
+ tmp = build_int_cst (TREE_TYPE (dtype), GFC_DTYPE_RANK_MASK);
+ tmp = fold_build2_loc (input_location, BIT_AND_EXPR, TREE_TYPE (dtype),
+ dtype, tmp);
+ return fold_convert (gfc_get_int_type (gfc_default_integer_kind), tmp);
+}
+
+
+tree
+gfc_get_descriptor_dimension (tree desc)
+{
+ tree type, field;
type = TREE_TYPE (desc);
gcc_assert (GFC_DESCRIPTOR_TYPE_P (type));
@@ -262,10 +275,19 @@ gfc_conv_descriptor_dimension (tree desc, tree dim)
&& TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE
&& TREE_CODE (TREE_TYPE (TREE_TYPE (field))) == RECORD_TYPE);
- tmp = fold_build3_loc (input_location, COMPONENT_REF, TREE_TYPE (field),
- desc, field, NULL_TREE);
- tmp = gfc_build_array_ref (tmp, dim, NULL);
- return tmp;
+ return fold_build3_loc (input_location, COMPONENT_REF, TREE_TYPE (field),
+ desc, field, NULL_TREE);
+}
+
+
+static tree
+gfc_conv_descriptor_dimension (tree desc, tree dim)
+{
+ tree tmp;
+
+ tmp = gfc_get_descriptor_dimension (desc);
+
+ return gfc_build_array_ref (tmp, dim, NULL);
}
@@ -311,6 +333,7 @@ gfc_conv_descriptor_stride_get (tree desc, tree dim)
if (integer_zerop (dim)
&& (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ALLOCATABLE
||GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ASSUMED_SHAPE_CONT
+ ||GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ASSUMED_RANK_CONT
||GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_POINTER_CONT))
return gfc_index_one_node;
@@ -487,40 +510,36 @@ gfc_free_ss_chain (gfc_ss * ss)
static void
free_ss_info (gfc_ss_info *ss_info)
{
+ int n;
+
ss_info->refcount--;
if (ss_info->refcount > 0)
return;
gcc_assert (ss_info->refcount == 0);
- free (ss_info);
-}
-
-
-/* Free a SS. */
-
-void
-gfc_free_ss (gfc_ss * ss)
-{
- gfc_ss_info *ss_info;
- int n;
-
- ss_info = ss->info;
switch (ss_info->type)
{
case GFC_SS_SECTION:
- for (n = 0; n < ss->dimen; n++)
- {
- if (ss_info->data.array.subscript[ss->dim[n]])
- gfc_free_ss_chain (ss_info->data.array.subscript[ss->dim[n]]);
- }
+ for (n = 0; n < GFC_MAX_DIMENSIONS; n++)
+ if (ss_info->data.array.subscript[n])
+ gfc_free_ss_chain (ss_info->data.array.subscript[n]);
break;
default:
break;
}
- free_ss_info (ss_info);
+ free (ss_info);
+}
+
+
+/* Free a SS. */
+
+void
+gfc_free_ss (gfc_ss * ss)
+{
+ free_ss_info (ss->info);
free (ss);
}
@@ -1511,6 +1530,9 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
bool dynamic)
{
tree tmp;
+ tree start = NULL_TREE;
+ tree end = NULL_TREE;
+ tree step = NULL_TREE;
stmtblock_t body;
gfc_se se;
mpz_t size;
@@ -1533,8 +1555,30 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
expression in an interface mapping. */
if (c->iterator)
{
- gfc_symbol *sym = c->iterator->var->symtree->n.sym;
- tree type = gfc_typenode_for_spec (&sym->ts);
+ gfc_symbol *sym;
+ tree type;
+
+ /* Evaluate loop bounds before substituting the loop variable
+ in case they depend on it. Such a case is invalid, but it is
+ not more expensive to do the right thing here.
+ See PR 44354. */
+ gfc_init_se (&se, NULL);
+ gfc_conv_expr_val (&se, c->iterator->start);
+ gfc_add_block_to_block (pblock, &se.pre);
+ start = gfc_evaluate_now (se.expr, pblock);
+
+ gfc_init_se (&se, NULL);
+ gfc_conv_expr_val (&se, c->iterator->end);
+ gfc_add_block_to_block (pblock, &se.pre);
+ end = gfc_evaluate_now (se.expr, pblock);
+
+ gfc_init_se (&se, NULL);
+ gfc_conv_expr_val (&se, c->iterator->step);
+ gfc_add_block_to_block (pblock, &se.pre);
+ step = gfc_evaluate_now (se.expr, pblock);
+
+ sym = c->iterator->var->symtree->n.sym;
+ type = gfc_typenode_for_spec (&sym->ts);
shadow_loopvar = gfc_create_var (type, "shadow_loopvar");
gfc_shadow_sym (sym, shadow_loopvar, &saved_loopvar);
@@ -1669,8 +1713,6 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
/* Build the implied do-loop. */
stmtblock_t implied_do_block;
tree cond;
- tree end;
- tree step;
tree exit_label;
tree loopbody;
tree tmp2;
@@ -1682,20 +1724,7 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
gfc_start_block(&implied_do_block);
/* Initialize the loop. */
- gfc_init_se (&se, NULL);
- gfc_conv_expr_val (&se, c->iterator->start);
- gfc_add_block_to_block (&implied_do_block, &se.pre);
- gfc_add_modify (&implied_do_block, shadow_loopvar, se.expr);
-
- gfc_init_se (&se, NULL);
- gfc_conv_expr_val (&se, c->iterator->end);
- gfc_add_block_to_block (&implied_do_block, &se.pre);
- end = gfc_evaluate_now (se.expr, &implied_do_block);
-
- gfc_init_se (&se, NULL);
- gfc_conv_expr_val (&se, c->iterator->step);
- gfc_add_block_to_block (&implied_do_block, &se.pre);
- step = gfc_evaluate_now (se.expr, &implied_do_block);
+ gfc_add_modify (&implied_do_block, shadow_loopvar, start);
/* If this array expands dynamically, and the number of iterations
is not constant, we won't have allocated space for the static
@@ -1772,7 +1801,6 @@ static void
get_array_ctor_all_strlen (stmtblock_t *block, gfc_expr *e, tree *len)
{
gfc_se se;
- gfc_ss *ss;
/* Don't bother if we already know the length is a constant. */
if (*len && INTEGER_CST_P (*len))
@@ -1788,15 +1816,14 @@ get_array_ctor_all_strlen (stmtblock_t *block, gfc_expr *e, tree *len)
else
{
/* Otherwise, be brutal even if inefficient. */
- ss = gfc_walk_expr (e);
gfc_init_se (&se, NULL);
/* No function call, in case of side effects. */
se.no_function_call = 1;
- if (ss == gfc_ss_terminator)
+ if (e->rank == 0)
gfc_conv_expr (&se, e);
else
- gfc_conv_expr_descriptor (&se, e, ss);
+ gfc_conv_expr_descriptor (&se, e);
/* Fix the value. */
*len = gfc_evaluate_now (se.string_length, &se.pre);
@@ -2398,7 +2425,6 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript,
gfc_ss_info *ss_info;
gfc_array_info *info;
gfc_expr *expr;
- bool skip_nested = false;
int n;
/* Don't evaluate the arguments for realloc_lhs_loop_for_fcn_call; otherwise,
@@ -2487,12 +2513,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript,
/* Add the expressions for scalar and vector subscripts. */
for (n = 0; n < GFC_MAX_DIMENSIONS; n++)
if (info->subscript[n])
- {
- gfc_add_loop_ss_code (loop, info->subscript[n], true, where);
- /* The recursive call will have taken care of the nested loops.
- No need to do it twice. */
- skip_nested = true;
- }
+ gfc_add_loop_ss_code (loop, info->subscript[n], true, where);
set_vector_loop_bounds (ss);
break;
@@ -2500,7 +2521,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript,
case GFC_SS_VECTOR:
/* Get the vector's descriptor and store it in SS. */
gfc_init_se (&se, NULL);
- gfc_conv_expr_descriptor (&se, expr, gfc_walk_expr (expr));
+ gfc_conv_expr_descriptor (&se, expr);
gfc_add_block_to_block (&outer_loop->pre, &se.pre);
gfc_add_block_to_block (&outer_loop->post, &se.post);
info->descriptor = se.expr;
@@ -2548,7 +2569,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript,
}
}
- if (!skip_nested)
+ if (!subscript)
for (nested_loop = loop->nested; nested_loop;
nested_loop = nested_loop->next)
gfc_add_loop_ss_code (nested_loop, nested_loop->ss, subscript, where);
@@ -3781,6 +3802,40 @@ done:
/* Fall through to supply start and stride. */
case GFC_ISYM_LBOUND:
case GFC_ISYM_UBOUND:
+ {
+ gfc_expr *arg;
+
+ /* This is the variant without DIM=... */
+ gcc_assert (expr->value.function.actual->next->expr == NULL);
+
+ arg = expr->value.function.actual->expr;
+ if (arg->rank == -1)
+ {
+ gfc_se se;
+ tree rank, tmp;
+
+ /* The rank (hence the return value's shape) is unknown,
+ we have to retrieve it. */
+ gfc_init_se (&se, NULL);
+ se.descriptor_only = 1;
+ gfc_conv_expr (&se, arg);
+ /* This is a bare variable, so there is no preliminary
+ or cleanup code. */
+ gcc_assert (se.pre.head == NULL_TREE
+ && se.post.head == NULL_TREE);
+ rank = gfc_conv_descriptor_rank (se.expr);
+ tmp = fold_build2_loc (input_location, MINUS_EXPR,
+ gfc_array_index_type,
+ fold_convert (gfc_array_index_type,
+ rank),
+ gfc_index_one_node);
+ info->end[0] = gfc_evaluate_now (tmp, &loop->pre);
+ info->start[0] = gfc_index_zero_node;
+ info->stride[0] = gfc_index_one_node;
+ continue;
+ }
+ /* Otherwise fall through GFC_SS_FUNCTION. */
+ }
case GFC_ISYM_LCOBOUND:
case GFC_ISYM_UCOBOUND:
case GFC_ISYM_THIS_IMAGE:
@@ -4417,22 +4472,11 @@ set_loop_bounds (gfc_loopinfo *loop)
continue;
}
- /* TODO: Pick the best bound if we have a choice between a
- function and something else. */
- if (ss_type == GFC_SS_FUNCTION)
- {
- loopspec[n] = ss;
- continue;
- }
-
/* Avoid using an allocatable lhs in an assignment, since
there might be a reallocation coming. */
if (loopspec[n] && ss->is_alloc_lhs)
continue;
- if (ss_type != GFC_SS_SECTION)
- continue;
-
if (!loopspec[n])
loopspec[n] = ss;
/* Criteria for choosing a loop specifier (most important first):
@@ -4442,8 +4486,7 @@ set_loop_bounds (gfc_loopinfo *loop)
known lower bound
known upper bound
*/
- else if ((loopspec[n]->info->type == GFC_SS_CONSTRUCTOR && dynamic[n])
- || n >= loop->dimen)
+ else if (loopspec[n]->info->type == GFC_SS_CONSTRUCTOR && dynamic[n])
loopspec[n] = ss;
else if (integer_onep (info->stride[dim])
&& !integer_onep (specinfo->stride[spec_dim]))
@@ -4452,7 +4495,11 @@ set_loop_bounds (gfc_loopinfo *loop)
&& !INTEGER_CST_P (specinfo->stride[spec_dim]))
loopspec[n] = ss;
else if (INTEGER_CST_P (info->start[dim])
- && !INTEGER_CST_P (specinfo->start[spec_dim]))
+ && !INTEGER_CST_P (specinfo->start[spec_dim])
+ && integer_onep (info->stride[dim])
+ == integer_onep (specinfo->stride[spec_dim])
+ && INTEGER_CST_P (info->stride[dim])
+ == INTEGER_CST_P (specinfo->stride[spec_dim]))
loopspec[n] = ss;
/* We don't work out the upper bound.
else if (INTEGER_CST_P (info->finish[n])
@@ -4507,6 +4554,20 @@ set_loop_bounds (gfc_loopinfo *loop)
gcc_assert (loop->to[n] == NULL_TREE);
break;
+ case GFC_SS_INTRINSIC:
+ {
+ gfc_expr *expr = loopspec[n]->info->expr;
+
+ /* The {l,u}bound of an assumed rank. */
+ gcc_assert ((expr->value.function.isym->id == GFC_ISYM_LBOUND
+ || expr->value.function.isym->id == GFC_ISYM_UBOUND)
+ && expr->value.function.actual->next->expr == NULL
+ && expr->value.function.actual->expr->rank == -1);
+
+ loop->to[n] = info->end[dim];
+ break;
+ }
+
default:
gcc_unreachable ();
}
@@ -6261,6 +6322,44 @@ transposed_dims (gfc_ss *ss)
return false;
}
+
+/* Convert the last ref of a scalar coarray from an AR_ELEMENT to an
+ AR_FULL, suitable for the scalarizer. */
+
+static gfc_ss *
+walk_coarray (gfc_expr *e)
+{
+ gfc_ss *ss;
+
+ gcc_assert (gfc_get_corank (e) > 0);
+
+ ss = gfc_walk_expr (e);
+
+ /* Fix scalar coarray. */
+ if (ss == gfc_ss_terminator)
+ {
+ gfc_ref *ref;
+
+ ref = e->ref;
+ while (ref)
+ {
+ if (ref->type == REF_ARRAY
+ && ref->u.ar.codimen > 0)
+ break;
+
+ ref = ref->next;
+ }
+
+ gcc_assert (ref != NULL);
+ if (ref->u.ar.type == AR_ELEMENT)
+ ref->u.ar.type = AR_SECTION;
+ ss = gfc_reverse_ss (gfc_walk_array_ref (ss, e, ref));
+ }
+
+ return ss;
+}
+
+
/* Convert an array for passing as an actual argument. Expressions and
vector subscripts are evaluated and stored in a temporary, which is then
passed. For whole arrays the descriptor is passed. For array sections
@@ -6291,8 +6390,9 @@ transposed_dims (gfc_ss *ss)
function call. */
void
-gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
+gfc_conv_expr_descriptor (gfc_se *se, gfc_expr *expr)
{
+ gfc_ss *ss;
gfc_ss_type ss_type;
gfc_ss_info *ss_info;
gfc_loopinfo loop;
@@ -6308,6 +6408,11 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
bool subref_array_target = false;
gfc_expr *arg, *ss_expr;
+ if (se->want_coarray)
+ ss = walk_coarray (expr);
+ else
+ ss = gfc_walk_expr (expr);
+
gcc_assert (ss != NULL);
gcc_assert (ss != gfc_ss_terminator);
@@ -6315,6 +6420,16 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
ss_type = ss_info->type;
ss_expr = ss_info->expr;
+ /* Special case: TRANSPOSE which needs no temporary. */
+ while (expr->expr_type == EXPR_FUNCTION && expr->value.function.isym
+ && NULL != (arg = gfc_get_noncopying_intrinsic_argument (expr)))
+ {
+ /* This is a call to transpose which has already been handled by the
+ scalarizer, so that we just need to get its argument's descriptor. */
+ gcc_assert (expr->value.function.isym->id == GFC_ISYM_TRANSPOSE);
+ expr = expr->value.function.actual->expr;
+ }
+
/* Special case things we know we can pass easily. */
switch (expr->expr_type)
{
@@ -6344,7 +6459,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
/* Create a new descriptor if the array doesn't have one. */
full = 0;
}
- else if (info->ref->u.ar.type == AR_FULL)
+ else if (info->ref->u.ar.type == AR_FULL || se->descriptor_only)
full = 1;
else if (se->direct_byref)
full = 0;
@@ -6376,24 +6491,12 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
if (expr->ts.type == BT_CHARACTER)
se->string_length = gfc_get_expr_charlen (expr);
+ gfc_free_ss_chain (ss);
return;
}
break;
case EXPR_FUNCTION:
-
- /* We don't need to copy data in some cases. */
- arg = gfc_get_noncopying_intrinsic_argument (expr);
- if (arg)
- {
- /* This is a call to transpose... */
- gcc_assert (expr->value.function.isym->id == GFC_ISYM_TRANSPOSE);
- /* ... which has already been handled by the scalarizer, so
- that we just need to get its argument's descriptor. */
- gfc_conv_expr_descriptor (se, expr->value.function.actual->expr, ss);
- return;
- }
-
/* A transformational function return value will be a temporary
array descriptor. We still need to go through the scalarizer
to create the descriptor. Elemental functions are handled as
@@ -6410,6 +6513,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
gcc_assert (se->ss == ss);
se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
gfc_conv_expr (se, expr);
+ gfc_free_ss_chain (ss);
return;
}
@@ -6829,7 +6933,7 @@ array_parameter_size (tree desc, gfc_expr *expr, tree *size)
/* TODO: Optimize passing g77 arrays. */
void
-gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
+gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, bool g77,
const gfc_symbol *fsym, const char *proc_name,
tree *size)
{
@@ -6900,15 +7004,16 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
{
- gfc_conv_expr_descriptor (se, expr, ss);
+ gfc_conv_expr_descriptor (se, expr);
se->expr = gfc_conv_array_data (se->expr);
return;
}
if (!sym->attr.pointer
- && sym->as
- && sym->as->type != AS_ASSUMED_SHAPE
- && !sym->attr.allocatable)
+ && sym->as
+ && sym->as->type != AS_ASSUMED_SHAPE
+ && sym->as->type != AS_ASSUMED_RANK
+ && !sym->attr.allocatable)
{
/* Some variables are declared directly, others are declared as
pointers and allocated on the heap. */
@@ -6925,7 +7030,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
{
if (sym->attr.dummy || sym->attr.result)
{
- gfc_conv_expr_descriptor (se, expr, ss);
+ gfc_conv_expr_descriptor (se, expr);
tmp = se->expr;
}
if (size)
@@ -6944,10 +7049,12 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
no_pack = ((sym && sym->as
&& !sym->attr.pointer
&& sym->as->type != AS_DEFERRED
+ && sym->as->type != AS_ASSUMED_RANK
&& sym->as->type != AS_ASSUMED_SHAPE)
||
(ref && ref->u.ar.as
&& ref->u.ar.as->type != AS_DEFERRED
+ && ref->u.ar.as->type != AS_ASSUMED_RANK
&& ref->u.ar.as->type != AS_ASSUMED_SHAPE)
||
gfc_is_simply_contiguous (expr, false));
@@ -6967,7 +7074,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
if (no_pack || array_constructor || good_allocatable || ultimate_alloc_comp)
{
- gfc_conv_expr_descriptor (se, expr, ss);
+ gfc_conv_expr_descriptor (se, expr);
if (expr->ts.type == BT_CHARACTER)
se->string_length = expr->ts.u.cl->backend_decl;
if (size)
@@ -6979,7 +7086,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
if (this_array_result)
{
/* Result of the enclosing function. */
- gfc_conv_expr_descriptor (se, expr, ss);
+ gfc_conv_expr_descriptor (se, expr);
if (size)
array_parameter_size (se->expr, expr, size);
se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
@@ -6995,7 +7102,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
{
/* Every other type of array. */
se->want_pointer = 1;
- gfc_conv_expr_descriptor (se, expr, ss);
+ gfc_conv_expr_descriptor (se, expr);
if (size)
array_parameter_size (build_fold_indirect_ref_loc (input_location,
se->expr),
@@ -8596,7 +8703,7 @@ gfc_walk_function_expr (gfc_ss * ss, gfc_expr * expr)
sym = expr->symtree->n.sym;
/* A function that returns arrays. */
- gfc_is_proc_ptr_comp (expr, &comp);
+ comp = gfc_get_proc_ptr_comp (expr);
if ((!comp && gfc_return_by_reference (sym) && sym->result->attr.dimension)
|| (comp && comp->attr.dimension))
return gfc_get_array_ss (ss, expr, expr->rank, GFC_SS_FUNCTION);
diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h
index 9bafb9478d5..de032020261 100644
--- a/gcc/fortran/trans-array.h
+++ b/gcc/fortran/trans-array.h
@@ -131,9 +131,9 @@ void gfc_conv_tmp_array_ref (gfc_se * se);
void gfc_conv_tmp_ref (gfc_se *);
/* Evaluate an array expression. */
-void gfc_conv_expr_descriptor (gfc_se *, gfc_expr *, gfc_ss *);
+void gfc_conv_expr_descriptor (gfc_se *, gfc_expr *);
/* Convert an array for passing as an actual function parameter. */
-void gfc_conv_array_parameter (gfc_se *, gfc_expr *, gfc_ss *, bool,
+void gfc_conv_array_parameter (gfc_se *, gfc_expr *, bool,
const gfc_symbol *, const char *, tree *);
/* Evaluate and transpose a matrix expression. */
void gfc_conv_array_transpose (gfc_se *, gfc_expr *);
@@ -154,6 +154,8 @@ tree gfc_conv_descriptor_data_get (tree);
tree gfc_conv_descriptor_data_addr (tree);
tree gfc_conv_descriptor_offset_get (tree);
tree gfc_conv_descriptor_dtype (tree);
+tree gfc_conv_descriptor_rank (tree);
+tree gfc_get_descriptor_dimension (tree);
tree gfc_conv_descriptor_stride_get (tree, tree);
tree gfc_conv_descriptor_lbound_get (tree, tree);
tree gfc_conv_descriptor_ubound_get (tree, tree);
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 75a21604cff..35a859b6d6c 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -562,6 +562,12 @@ gfc_finish_var_decl (tree decl, gfc_symbol * sym)
/* TODO: Don't set sym->module for result or dummy variables. */
gcc_assert (current_function_decl == NULL_TREE || sym->result == sym);
/* This is the declaration of a module variable. */
+ if (sym->attr.access == ACCESS_UNKNOWN
+ && (sym->ns->default_access == ACCESS_PRIVATE
+ || (sym->ns->default_access == ACCESS_UNKNOWN
+ && gfc_option.flag_module_private)))
+ sym->attr.access = ACCESS_PRIVATE;
+
if (sym->attr.access != ACCESS_PRIVATE || sym->attr.public_used)
TREE_PUBLIC (decl) = 1;
TREE_STATIC (decl) = 1;
@@ -933,7 +939,8 @@ gfc_build_dummy_array_decl (gfc_symbol * sym, tree dummy)
int n;
bool known_size;
- if (sym->attr.pointer || sym->attr.allocatable)
+ if (sym->attr.pointer || sym->attr.allocatable
+ || (sym->as && sym->as->type == AS_ASSUMED_RANK))
return dummy;
/* Add to list of variables if not a fake result variable. */
@@ -1838,6 +1845,12 @@ build_function_decl (gfc_symbol * sym, bool global)
the opposite of declaring a function as static in C). */
DECL_EXTERNAL (fndecl) = 0;
+ if (sym->attr.access == ACCESS_UNKNOWN && sym->module
+ && (sym->ns->default_access == ACCESS_PRIVATE
+ || (sym->ns->default_access == ACCESS_UNKNOWN
+ && gfc_option.flag_module_private)))
+ sym->attr.access = ACCESS_PRIVATE;
+
if (!current_function_decl
&& !sym->attr.entry_master && !sym->attr.is_main_program
&& (sym->attr.access != ACCESS_PRIVATE || sym->binding_label
@@ -2252,7 +2265,7 @@ trans_function_start (gfc_symbol * sym)
/* Create RTL for function definition. */
make_decl_rtl (fndecl);
- init_function_start (fndecl);
+ allocate_struct_function (fndecl, false);
/* function.c requires a push at the start of the function. */
pushlevel ();
@@ -3669,6 +3682,7 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block)
gfc_trans_dummy_array_bias (sym, sym->backend_decl, block);
break;
+ case AS_ASSUMED_RANK:
case AS_DEFERRED:
seen_trans_deferred_array = true;
gfc_trans_deferred_array (sym, block);
@@ -4394,7 +4408,7 @@ generate_coarray_init (gfc_namespace * ns __attribute((unused)))
rest_of_decl_compilation (fndecl, 0, 0);
make_decl_rtl (fndecl);
- init_function_start (fndecl);
+ allocate_struct_function (fndecl, false);
pushlevel ();
gfc_init_block (&caf_init_block);
@@ -4782,7 +4796,8 @@ add_argument_checking (stmtblock_t *block, gfc_symbol *sym)
dummy argument is an array. (See "Sequence association" in
Section 12.4.1.4 for F95 and 12.4.1.5 for F2003.) */
if (fsym->attr.pointer || fsym->attr.allocatable
- || (fsym->as && fsym->as->type == AS_ASSUMED_SHAPE))
+ || (fsym->as && (fsym->as->type == AS_ASSUMED_SHAPE
+ || fsym->as->type == AS_ASSUMED_RANK)))
{
comparison = NE_EXPR;
message = _("Actual string length does not match the declared one"
@@ -4967,7 +4982,7 @@ create_main_function (tree fndecl)
rest_of_decl_compilation (ftn_main, 1, 0);
make_decl_rtl (ftn_main);
- init_function_start (ftn_main);
+ allocate_struct_function (ftn_main, false);
pushlevel ();
gfc_init_block (&body);
@@ -5522,7 +5537,7 @@ gfc_generate_constructors (void)
make_decl_rtl (fndecl);
- init_function_start (fndecl);
+ allocate_struct_function (fndecl, false);
pushlevel ();
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 7d1a6d43841..84a4b34bbb2 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -42,6 +42,48 @@ along with GCC; see the file COPYING3. If not see
#include "dependency.h"
+/* Convert a scalar to an array descriptor. To be used for assumed-rank
+ arrays. */
+
+static tree
+get_scalar_to_descriptor_type (tree scalar, symbol_attribute attr)
+{
+ enum gfc_array_kind akind;
+
+ if (attr.pointer)
+ akind = GFC_ARRAY_POINTER_CONT;
+ else if (attr.allocatable)
+ akind = GFC_ARRAY_ALLOCATABLE;
+ else
+ akind = GFC_ARRAY_ASSUMED_SHAPE_CONT;
+
+ return gfc_get_array_type_bounds (TREE_TYPE (scalar), 0, 0, NULL, NULL, 1,
+ akind, !(attr.pointer || attr.target));
+}
+
+static tree
+conv_scalar_to_descriptor (gfc_se *se, tree scalar, symbol_attribute attr)
+{
+ tree desc, type;
+
+ type = get_scalar_to_descriptor_type (scalar, attr);
+ desc = gfc_create_var (type, "desc");
+ DECL_ARTIFICIAL (desc) = 1;
+ gfc_add_modify (&se->pre, gfc_conv_descriptor_dtype (desc),
+ gfc_get_dtype (type));
+ gfc_conv_descriptor_data_set (&se->pre, desc, scalar);
+
+ /* Copy pointer address back - but only if it could have changed and
+ if the actual argument is a pointer and not, e.g., NULL(). */
+ if ((attr.pointer || attr.allocatable)
+ && attr.intent != INTENT_IN && POINTER_TYPE_P (TREE_TYPE (scalar)))
+ gfc_add_modify (&se->post, scalar,
+ fold_convert (TREE_TYPE (scalar),
+ gfc_conv_descriptor_data_get (desc)));
+ return desc;
+}
+
+
/* This is the seed for an eventual trans-class.c
The following parameters should not be used directly since they might
@@ -158,7 +200,34 @@ gfc_get_vptr_from_expr (tree expr)
tmp = gfc_class_vptr_get (tmp);
return tmp;
}
-
+
+
+static void
+class_array_data_assign (stmtblock_t *block, tree lhs_desc, tree rhs_desc,
+ bool lhs_type)
+{
+ tree tmp, tmp2, type;
+
+ gfc_conv_descriptor_data_set (block, lhs_desc,
+ gfc_conv_descriptor_data_get (rhs_desc));
+ gfc_conv_descriptor_offset_set (block, lhs_desc,
+ gfc_conv_descriptor_offset_get (rhs_desc));
+
+ gfc_add_modify (block, gfc_conv_descriptor_dtype (lhs_desc),
+ gfc_conv_descriptor_dtype (rhs_desc));
+
+ /* Assign the dimension as range-ref. */
+ tmp = gfc_get_descriptor_dimension (lhs_desc);
+ tmp2 = gfc_get_descriptor_dimension (rhs_desc);
+
+ type = lhs_type ? TREE_TYPE (tmp) : TREE_TYPE (tmp2);
+ tmp = build4_loc (input_location, ARRAY_RANGE_REF, type, tmp,
+ gfc_index_zero_node, NULL_TREE, NULL_TREE);
+ tmp2 = build4_loc (input_location, ARRAY_RANGE_REF, type, tmp2,
+ gfc_index_zero_node, NULL_TREE, NULL_TREE);
+ gfc_add_modify (block, tmp, tmp2);
+}
+
/* Takes a derived type expression and returns the address of a temporary
class object of the 'declared' type. If vptr is not NULL, this is
@@ -215,14 +284,32 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e,
{
parmse->ss = NULL;
gfc_conv_expr_reference (parmse, e);
- tmp = fold_convert (TREE_TYPE (ctree), parmse->expr);
- gfc_add_modify (&parmse->pre, ctree, tmp);
+
+ /* Scalar to an assumed-rank array. */
+ if (class_ts.u.derived->components->as)
+ {
+ tree type;
+ type = get_scalar_to_descriptor_type (parmse->expr,
+ gfc_expr_attr (e));
+ gfc_add_modify (&parmse->pre, gfc_conv_descriptor_dtype (ctree),
+ gfc_get_dtype (type));
+ gfc_conv_descriptor_data_set (&parmse->pre, ctree, parmse->expr);
+ }
+ else
+ {
+ tmp = fold_convert (TREE_TYPE (ctree), parmse->expr);
+ gfc_add_modify (&parmse->pre, ctree, tmp);
+ }
}
else
{
parmse->ss = ss;
- gfc_conv_expr_descriptor (parmse, e, ss);
- gfc_add_modify (&parmse->pre, ctree, parmse->expr);
+ gfc_conv_expr_descriptor (parmse, e);
+
+ if (e->rank != class_ts.u.derived->components->as->rank)
+ class_array_data_assign (&parmse->pre, ctree, parmse->expr, true);
+ else
+ gfc_add_modify (&parmse->pre, ctree, parmse->expr);
}
}
@@ -260,7 +347,9 @@ gfc_conv_class_to_class (gfc_se *parmse, gfc_expr *e,
break;
}
- if (ref == NULL || class_ref == ref)
+ if ((ref == NULL || class_ref == ref)
+ && (!class_ts.u.derived->components->as
+ || class_ts.u.derived->components->as->rank != -1))
return;
/* Test for FULL_ARRAY. */
@@ -273,13 +362,42 @@ gfc_conv_class_to_class (gfc_se *parmse, gfc_expr *e,
/* Set the data. */
ctree = gfc_class_data_get (var);
- gfc_add_modify (&parmse->pre, ctree, parmse->expr);
+ if (class_ts.u.derived->components->as
+ && e->rank != class_ts.u.derived->components->as->rank)
+ {
+ if (e->rank == 0)
+ {
+ tree type = get_scalar_to_descriptor_type (parmse->expr,
+ gfc_expr_attr (e));
+ gfc_add_modify (&parmse->pre, gfc_conv_descriptor_dtype (ctree),
+ gfc_get_dtype (type));
+ gfc_conv_descriptor_data_set (&parmse->pre, ctree,
+ gfc_class_data_get (parmse->expr));
+
+ }
+ else
+ class_array_data_assign (&parmse->pre, ctree, parmse->expr, false);
+ }
+ else
+ gfc_add_modify (&parmse->pre, ctree, parmse->expr);
/* Return the data component, except in the case of scalarized array
references, where nullification of the cannot occur and so there
is no need. */
if (!elemental && full_array)
- gfc_add_modify (&parmse->post, parmse->expr, ctree);
+ {
+ if (class_ts.u.derived->components->as
+ && e->rank != class_ts.u.derived->components->as->rank)
+ {
+ if (e->rank == 0)
+ gfc_add_modify (&parmse->post, gfc_class_data_get (parmse->expr),
+ gfc_conv_descriptor_data_get (ctree));
+ else
+ class_array_data_assign (&parmse->post, parmse->expr, ctree, true);
+ }
+ else
+ gfc_add_modify (&parmse->post, parmse->expr, ctree);
+ }
/* Set the vptr. */
ctree = gfc_class_vptr_get (var);
@@ -346,7 +464,7 @@ gfc_get_class_array_ref (tree index, tree class_decl)
/* Copies one class expression to another, assuming that if either
'to' or 'from' are arrays they are packed. Should 'from' be
- NULL_TREE, the inialization expression for 'to' is used, assuming
+ NULL_TREE, the initialization expression for 'to' is used, assuming
that the _vptr is set. */
tree
@@ -416,6 +534,7 @@ gfc_copy_class_to_class (tree from, tree to, tree nelems)
gfc_trans_scalarizing_loops (&loop, &loopbody);
gfc_add_block_to_block (&body, &loop.pre);
tmp = gfc_finish_block (&body);
+ gfc_cleanup_loop (&loop);
}
else
{
@@ -730,7 +849,8 @@ gfc_conv_expr_present (gfc_symbol * sym)
as actual argument to denote absent dummies. For array descriptors,
we thus also need to check the array descriptor. */
if (!sym->attr.pointer && !sym->attr.allocatable
- && sym->as && sym->as->type == AS_ASSUMED_SHAPE
+ && sym->as && (sym->as->type == AS_ASSUMED_SHAPE
+ || sym->as->type == AS_ASSUMED_RANK)
&& (gfc_option.allow_std & GFC_STD_F2008) != 0)
{
tree tmp;
@@ -1159,7 +1279,7 @@ gfc_conv_component_ref (gfc_se * se, gfc_ref * ref)
/* This function deals with component references to components of the
- parent type for derived type extensons. */
+ parent type for derived type extensions. */
static void
conv_parent_component_references (gfc_se * se, gfc_ref * ref)
{
@@ -1325,7 +1445,8 @@ gfc_conv_variable (gfc_se * se, gfc_expr * expr)
/* Dereference non-character pointer variables.
These must be dummies, results, or scalars. */
if ((sym->attr.pointer || sym->attr.allocatable
- || gfc_is_associate_pointer (sym))
+ || gfc_is_associate_pointer (sym)
+ || (sym->as && sym->as->type == AS_ASSUMED_RANK))
&& (sym->attr.dummy
|| sym->attr.function
|| sym->attr.result
@@ -1392,9 +1513,9 @@ gfc_conv_variable (gfc_se * se, gfc_expr * expr)
separately. */
if (se->want_pointer)
{
- if (expr->ts.type == BT_CHARACTER && !gfc_is_proc_ptr_comp (expr, NULL))
+ if (expr->ts.type == BT_CHARACTER && !gfc_is_proc_ptr_comp (expr))
gfc_conv_string_parameter (se);
- else
+ else
se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
}
}
@@ -2318,7 +2439,7 @@ conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr)
{
tree tmp;
- if (gfc_is_proc_ptr_comp (expr, NULL))
+ if (gfc_is_proc_ptr_comp (expr))
tmp = get_proc_ptr_comp (expr);
else if (sym->attr.dummy)
{
@@ -2686,7 +2807,6 @@ gfc_apply_interface_mapping_to_ref (gfc_interface_mapping * mapping,
gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.end[n]);
gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.stride[n]);
}
- gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.offset);
break;
case REF_COMPONENT:
@@ -3265,8 +3385,7 @@ conv_isocbinding_procedure (gfc_se * se, gfc_symbol * sym,
gfc_actual_arglist * arg)
{
gfc_symbol *fsym;
- gfc_ss *argss;
-
+
if (sym->intmod_sym_id == ISOCBINDING_LOC)
{
if (arg->expr->rank == 0)
@@ -3284,9 +3403,7 @@ conv_isocbinding_procedure (gfc_se * se, gfc_symbol * sym,
&& fsym->as->type != AS_ASSUMED_SHAPE;
f = f || !sym->attr.always_explicit;
- argss = gfc_walk_expr (arg->expr);
- gfc_conv_array_parameter (se, arg->expr, argss, f,
- NULL, NULL, NULL);
+ gfc_conv_array_parameter (se, arg->expr, f, NULL, NULL, NULL);
}
/* TODO -- the following two lines shouldn't be necessary, but if
@@ -3307,14 +3424,17 @@ conv_isocbinding_procedure (gfc_se * se, gfc_symbol * sym,
return 1;
}
- else if ((sym->intmod_sym_id == ISOCBINDING_F_POINTER
- && arg->next->expr->rank == 0)
+ else if (sym->intmod_sym_id == ISOCBINDING_F_POINTER
|| sym->intmod_sym_id == ISOCBINDING_F_PROCPOINTER)
{
- /* Convert c_f_pointer if fptr is a scalar
- and convert c_f_procpointer. */
+ /* Convert c_f_pointer and c_f_procpointer. */
gfc_se cptrse;
gfc_se fptrse;
+ gfc_se shapese;
+ gfc_ss *shape_ss;
+ tree desc, dim, tmp, stride, offset;
+ stmtblock_t body, block;
+ gfc_loopinfo loop;
gfc_init_se (&cptrse, NULL);
gfc_conv_expr (&cptrse, arg->expr);
@@ -3322,25 +3442,100 @@ conv_isocbinding_procedure (gfc_se * se, gfc_symbol * sym,
gfc_add_block_to_block (&se->post, &cptrse.post);
gfc_init_se (&fptrse, NULL);
- if (sym->intmod_sym_id == ISOCBINDING_F_POINTER
- || gfc_is_proc_ptr_comp (arg->next->expr, NULL))
- fptrse.want_pointer = 1;
+ if (arg->next->expr->rank == 0)
+ {
+ if (sym->intmod_sym_id == ISOCBINDING_F_POINTER
+ || gfc_is_proc_ptr_comp (arg->next->expr))
+ fptrse.want_pointer = 1;
+
+ gfc_conv_expr (&fptrse, arg->next->expr);
+ gfc_add_block_to_block (&se->pre, &fptrse.pre);
+ gfc_add_block_to_block (&se->post, &fptrse.post);
+ if (arg->next->expr->symtree->n.sym->attr.proc_pointer
+ && arg->next->expr->symtree->n.sym->attr.dummy)
+ fptrse.expr = build_fold_indirect_ref_loc (input_location,
+ fptrse.expr);
+ se->expr = fold_build2_loc (input_location, MODIFY_EXPR,
+ TREE_TYPE (fptrse.expr),
+ fptrse.expr,
+ fold_convert (TREE_TYPE (fptrse.expr),
+ cptrse.expr));
+ return 1;
+ }
- gfc_conv_expr (&fptrse, arg->next->expr);
- gfc_add_block_to_block (&se->pre, &fptrse.pre);
- gfc_add_block_to_block (&se->post, &fptrse.post);
-
- if (arg->next->expr->symtree->n.sym->attr.proc_pointer
- && arg->next->expr->symtree->n.sym->attr.dummy)
- fptrse.expr = build_fold_indirect_ref_loc (input_location,
- fptrse.expr);
-
- se->expr = fold_build2_loc (input_location, MODIFY_EXPR,
- TREE_TYPE (fptrse.expr),
- fptrse.expr,
- fold_convert (TREE_TYPE (fptrse.expr),
- cptrse.expr));
+ gfc_start_block (&block);
+
+ /* Get the descriptor of the Fortran pointer. */
+ fptrse.descriptor_only = 1;
+ gfc_conv_expr_descriptor (&fptrse, arg->next->expr);
+ gfc_add_block_to_block (&block, &fptrse.pre);
+ desc = fptrse.expr;
+
+ /* Set data value, dtype, and offset. */
+ tmp = GFC_TYPE_ARRAY_DATAPTR_TYPE (TREE_TYPE (desc));
+ gfc_conv_descriptor_data_set (&block, desc,
+ fold_convert (tmp, cptrse.expr));
+ gfc_add_modify (&block, gfc_conv_descriptor_dtype (desc),
+ gfc_get_dtype (TREE_TYPE (desc)));
+
+ /* Start scalarization of the bounds, using the shape argument. */
+
+ shape_ss = gfc_walk_expr (arg->next->next->expr);
+ gcc_assert (shape_ss != gfc_ss_terminator);
+ gfc_init_se (&shapese, NULL);
+
+ gfc_init_loopinfo (&loop);
+ gfc_add_ss_to_loop (&loop, shape_ss);
+ gfc_conv_ss_startstride (&loop);
+ gfc_conv_loop_setup (&loop, &arg->next->expr->where);
+ gfc_mark_ss_chain_used (shape_ss, 1);
+
+ gfc_copy_loopinfo_to_se (&shapese, &loop);
+ shapese.ss = shape_ss;
+ stride = gfc_create_var (gfc_array_index_type, "stride");
+ offset = gfc_create_var (gfc_array_index_type, "offset");
+ gfc_add_modify (&block, stride, gfc_index_one_node);
+ gfc_add_modify (&block, offset, gfc_index_zero_node);
+
+ /* Loop body. */
+ gfc_start_scalarized_body (&loop, &body);
+
+ dim = fold_build2_loc (input_location, MINUS_EXPR, gfc_array_index_type,
+ loop.loopvar[0], loop.from[0]);
+
+ /* Set bounds and stride. */
+ gfc_conv_descriptor_lbound_set (&body, desc, dim, gfc_index_one_node);
+ gfc_conv_descriptor_stride_set (&body, desc, dim, stride);
+
+ gfc_conv_expr (&shapese, arg->next->next->expr);
+ gfc_add_block_to_block (&body, &shapese.pre);
+ gfc_conv_descriptor_ubound_set (&body, desc, dim, shapese.expr);
+ gfc_add_block_to_block (&body, &shapese.post);
+
+ /* Calculate offset. */
+ gfc_add_modify (&body, offset,
+ fold_build2_loc (input_location, PLUS_EXPR,
+ gfc_array_index_type, offset, stride));
+ /* Update stride. */
+ gfc_add_modify (&body, stride,
+ fold_build2_loc (input_location, MULT_EXPR,
+ gfc_array_index_type, stride,
+ fold_convert (gfc_array_index_type,
+ shapese.expr)));
+ /* Finish scalarization loop. */
+ gfc_trans_scalarizing_loops (&loop, &body);
+ gfc_add_block_to_block (&block, &loop.pre);
+ gfc_add_block_to_block (&block, &loop.post);
+ gfc_add_block_to_block (&block, &fptrse.post);
+ gfc_cleanup_loop (&loop);
+
+ gfc_add_modify (&block, offset,
+ fold_build1_loc (input_location, NEGATE_EXPR,
+ gfc_array_index_type, offset));
+ gfc_conv_descriptor_offset_set (&block, desc, offset);
+
+ se->expr = gfc_finish_block (&block);
return 1;
}
else if (sym->intmod_sym_id == ISOCBINDING_ASSOCIATED)
@@ -3414,7 +3609,6 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
tree tmp;
tree fntype;
gfc_se parmse;
- gfc_ss *argss;
gfc_array_info *info;
int byref;
int parm_kind;
@@ -3449,7 +3643,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
&& conv_isocbinding_procedure (se, sym, args))
return 0;
- gfc_is_proc_ptr_comp (expr, &comp);
+ comp = gfc_get_proc_ptr_comp (expr);
if (se->ss != NULL)
{
@@ -3539,10 +3733,15 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
parmse.string_length = build_int_cst (gfc_charlen_type_node, 0);
}
}
- else if (arg->expr->expr_type == EXPR_NULL && fsym && !fsym->attr.pointer)
+ else if (arg->expr->expr_type == EXPR_NULL
+ && fsym && !fsym->attr.pointer
+ && (fsym->ts.type != BT_CLASS
+ || !CLASS_DATA (fsym)->attr.class_pointer))
{
/* Pass a NULL pointer to denote an absent arg. */
- gcc_assert (fsym->attr.optional && !fsym->attr.allocatable);
+ gcc_assert (fsym->attr.optional && !fsym->attr.allocatable
+ && (fsym->ts.type != BT_CLASS
+ || !CLASS_DATA (fsym)->attr.allocatable));
gfc_init_se (&parmse, NULL);
parmse.expr = null_pointer_node;
if (arg->missing_arg_type == BT_CHARACTER)
@@ -3612,11 +3811,20 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
}
else
{
- /* A scalar or transformational function. */
- gfc_init_se (&parmse, NULL);
+ bool scalar;
+ gfc_ss *argss;
+
+ /* Check whether the expression is a scalar or not; we cannot use
+ e->rank as it can be nonzero for functions arguments. */
argss = gfc_walk_expr (e);
+ scalar = argss == gfc_ss_terminator;
+ if (!scalar)
+ gfc_free_ss_chain (argss);
- if (argss == gfc_ss_terminator)
+ /* A scalar or transformational function. */
+ gfc_init_se (&parmse, NULL);
+
+ if (scalar)
{
if (e->expr_type == EXPR_VARIABLE
&& e->symtree->n.sym->attr.cray_pointee
@@ -3683,7 +3891,9 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
class object, if the formal argument is a class object. */
if (fsym && fsym->ts.type == BT_CLASS
&& e->ts.type == BT_CLASS
- && CLASS_DATA (e)->attr.dimension)
+ && ((CLASS_DATA (fsym)->as
+ && CLASS_DATA (fsym)->as->type == AS_ASSUMED_RANK)
+ || CLASS_DATA (e)->attr.dimension))
gfc_conv_class_to_class (&parmse, e, fsym->ts, false);
if (fsym && (fsym->ts.type == BT_DERIVED
@@ -3727,7 +3937,23 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
gfc_add_expr_to_block (&se->pre, tmp);
}
- if (fsym && e->expr_type != EXPR_NULL
+ /* Wrap scalar variable in a descriptor. We need to convert
+ the address of a pointer back to the pointer itself before,
+ we can assign it to the data field. */
+
+ if (fsym && fsym->as && fsym->as->type == AS_ASSUMED_RANK
+ && fsym->ts.type != BT_CLASS && e->expr_type != EXPR_NULL)
+ {
+ tmp = parmse.expr;
+ if (TREE_CODE (tmp) == ADDR_EXPR
+ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (tmp, 0))))
+ tmp = TREE_OPERAND (tmp, 0);
+ parmse.expr = conv_scalar_to_descriptor (&parmse, tmp,
+ fsym->attr);
+ parmse.expr = gfc_build_addr_expr (NULL_TREE,
+ parmse.expr);
+ }
+ else if (fsym && e->expr_type != EXPR_NULL
&& ((fsym->attr.pointer
&& fsym->attr.flavor != FL_PROCEDURE)
|| (fsym->attr.proc_pointer
@@ -3735,7 +3961,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
&& e->symtree->n.sym->attr.dummy))
|| (fsym->attr.proc_pointer
&& e->expr_type == EXPR_VARIABLE
- && gfc_is_proc_ptr_comp (e, NULL))
+ && gfc_is_proc_ptr_comp (e))
|| (fsym->attr.allocatable
&& fsym->attr.flavor != FL_PROCEDURE)))
{
@@ -3753,7 +3979,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
{
/* Pass a class array. */
gfc_init_se (&parmse, se);
- gfc_conv_expr_descriptor (&parmse, e, argss);
+ gfc_conv_expr_descriptor (&parmse, e);
/* The conversion does not repackage the reference to a class
array - _data descriptor. */
gfc_conv_class_to_class (&parmse, e, fsym->ts, false);
@@ -3769,7 +3995,8 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
bool f;
f = (fsym != NULL)
&& !(fsym->attr.pointer || fsym->attr.allocatable)
- && fsym->as && fsym->as->type != AS_ASSUMED_SHAPE;
+ && fsym->as && fsym->as->type != AS_ASSUMED_SHAPE
+ && fsym->as->type != AS_ASSUMED_RANK;
if (comp)
f = f || !comp->attr.always_explicit;
else
@@ -3835,8 +4062,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
fsym ? fsym->attr.intent : INTENT_INOUT,
fsym && fsym->attr.pointer);
else
- gfc_conv_array_parameter (&parmse, e, argss, f, fsym,
- sym->name, NULL);
+ gfc_conv_array_parameter (&parmse, e, f, fsym, sym->name, NULL);
/* If an ALLOCATABLE dummy argument has INTENT(OUT) and is
allocated on entry, it must be deallocated. */
@@ -3878,12 +4104,13 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
but do not always set fsym. */
if (e->expr_type == EXPR_VARIABLE
&& e->symtree->n.sym->attr.optional
- && ((e->rank > 0 && sym->attr.elemental)
+ && ((e->rank != 0 && sym->attr.elemental)
|| e->representation.length || e->ts.type == BT_CHARACTER
- || (e->rank > 0
+ || (e->rank != 0
&& (fsym == NULL
|| (fsym-> as
&& (fsym->as->type == AS_ASSUMED_SHAPE
+ || fsym->as->type == AS_ASSUMED_RANK
|| fsym->as->type == AS_DEFERRED))))))
gfc_conv_missing_dummy (&parmse, e, fsym ? fsym->ts : e->ts,
e->representation.length);
@@ -4129,7 +4356,9 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
tmp = caf_decl;
}
- if (fsym->as->type == AS_ASSUMED_SHAPE)
+ if (fsym->as->type == AS_ASSUMED_SHAPE
+ || (fsym->as->type == AS_ASSUMED_RANK && !fsym->attr.pointer
+ && !fsym->attr.allocatable))
{
gcc_assert (POINTER_TYPE_P (TREE_TYPE (parmse.expr)));
gcc_assert (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE
@@ -4851,6 +5080,7 @@ gfc_conv_statement_function (gfc_se * se, gfc_expr * expr)
/* Restore the original variables. */
for (fargs = sym->formal, n = 0; fargs; fargs = fargs->next, n++)
gfc_restore_sym (fargs->sym, &saved_vars[n]);
+ free (temp_vars);
free (saved_vars);
}
@@ -5127,7 +5357,6 @@ gfc_trans_alloc_subarray_assign (tree dest, gfc_component * cm,
gfc_expr * expr)
{
gfc_se se;
- gfc_ss *rss;
stmtblock_t block;
tree offset;
int n;
@@ -5140,9 +5369,8 @@ gfc_trans_alloc_subarray_assign (tree dest, gfc_component * cm,
gfc_init_se (&se, NULL);
/* Get the descriptor for the expressions. */
- rss = gfc_walk_expr (expr);
se.want_pointer = 0;
- gfc_conv_expr_descriptor (&se, expr, rss);
+ gfc_conv_expr_descriptor (&se, expr);
gfc_add_block_to_block (&block, &se.pre);
gfc_add_modify (&block, dest, se.expr);
@@ -5273,7 +5501,6 @@ gfc_trans_subcomponent_assign (tree dest, gfc_component * cm, gfc_expr * expr)
{
gfc_se se;
gfc_se lse;
- gfc_ss *rss;
stmtblock_t block;
tree tmp;
@@ -5290,10 +5517,9 @@ gfc_trans_subcomponent_assign (tree dest, gfc_component * cm, gfc_expr * expr)
gfc_conv_descriptor_data_set (&block, dest, null_pointer_node);
else
{
- rss = gfc_walk_expr (expr);
se.direct_byref = 1;
se.expr = dest;
- gfc_conv_expr_descriptor (&se, expr, rss);
+ gfc_conv_expr_descriptor (&se, expr);
gfc_add_block_to_block (&block, &se.pre);
gfc_add_block_to_block (&block, &se.post);
}
@@ -5738,25 +5964,29 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2)
{
gfc_se lse;
gfc_se rse;
- gfc_ss *lss;
- gfc_ss *rss;
stmtblock_t block;
tree desc;
tree tmp;
tree decl;
+ bool scalar;
+ gfc_ss *ss;
gfc_start_block (&block);
gfc_init_se (&lse, NULL);
- lss = gfc_walk_expr (expr1);
- rss = gfc_walk_expr (expr2);
- if (lss == gfc_ss_terminator)
+ /* Check whether the expression is a scalar or not; we cannot use
+ expr1->rank as it can be nonzero for proc pointers. */
+ ss = gfc_walk_expr (expr1);
+ scalar = ss == gfc_ss_terminator;
+ if (!scalar)
+ gfc_free_ss_chain (ss);
+
+ if (scalar)
{
/* Scalar pointers. */
lse.want_pointer = 1;
gfc_conv_expr (&lse, expr1);
- gcc_assert (rss == gfc_ss_terminator);
gfc_init_se (&rse, NULL);
rse.want_pointer = 1;
gfc_conv_expr (&rse, expr2);
@@ -5780,7 +6010,7 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2)
if (expr1->ts.type == BT_CHARACTER && expr2->expr_type != EXPR_NULL
&& !expr1->ts.deferred
&& !expr1->symtree->n.sym->attr.proc_pointer
- && !gfc_is_proc_ptr_comp (expr1, NULL))
+ && !gfc_is_proc_ptr_comp (expr1))
{
gcc_assert (expr2->ts.type == BT_CHARACTER);
gcc_assert (lse.string_length && rse.string_length);
@@ -5816,17 +6046,16 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2)
/* Array pointer. Find the last reference on the LHS and if it is an
array section ref, we're dealing with bounds remapping. In this case,
set it to AR_FULL so that gfc_conv_expr_descriptor does
- not see it and process the bounds remapping afterwards explicitely. */
+ not see it and process the bounds remapping afterwards explicitly. */
for (remap = expr1->ref; remap; remap = remap->next)
if (!remap->next && remap->type == REF_ARRAY
&& remap->u.ar.type == AR_SECTION)
- {
- remap->u.ar.type = AR_FULL;
- break;
- }
+ break;
rank_remap = (remap && remap->u.ar.end[0]);
- gfc_conv_expr_descriptor (&lse, expr1, lss);
+ if (remap)
+ lse.descriptor_only = 1;
+ gfc_conv_expr_descriptor (&lse, expr1);
strlen_lhs = lse.string_length;
desc = lse.expr;
@@ -5842,14 +6071,14 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2)
gfc_init_se (&rse, NULL);
rse.direct_byref = 1;
rse.byref_noassign = 1;
- gfc_conv_expr_descriptor (&rse, expr2, rss);
+ gfc_conv_expr_descriptor (&rse, expr2);
strlen_rhs = rse.string_length;
}
else if (expr2->expr_type == EXPR_VARIABLE)
{
/* Assign directly to the LHS's descriptor. */
lse.direct_byref = 1;
- gfc_conv_expr_descriptor (&lse, expr2, rss);
+ gfc_conv_expr_descriptor (&lse, expr2);
strlen_rhs = lse.string_length;
/* If this is a subreference array pointer assignment, use the rhs
@@ -5875,7 +6104,7 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2)
lse.expr = tmp;
lse.direct_byref = 1;
- gfc_conv_expr_descriptor (&lse, expr2, rss);
+ gfc_conv_expr_descriptor (&lse, expr2);
strlen_rhs = lse.string_length;
gfc_add_modify (&lse.pre, desc, tmp);
}
@@ -6080,11 +6309,34 @@ gfc_conv_string_parameter (gfc_se * se)
/* Generate code for assignment of scalar variables. Includes character
strings and derived types with allocatable components.
- If you know that the LHS has no allocations, set dealloc to false. */
+ If you know that the LHS has no allocations, set dealloc to false.
+
+ DEEP_COPY has no effect if the typespec TS is not a derived type with
+ allocatable components. Otherwise, if it is set, an explicit copy of each
+ allocatable component is made. This is necessary as a simple copy of the
+ whole object would copy array descriptors as is, so that the lhs's
+ allocatable components would point to the rhs's after the assignment.
+ Typically, setting DEEP_COPY is necessary if the rhs is a variable, and not
+ necessary if the rhs is a non-pointer function, as the allocatable components
+ are not accessible by other means than the function's result after the
+ function has returned. It is even more subtle when temporaries are involved,
+ as the two following examples show:
+ 1. When we evaluate an array constructor, a temporary is created. Thus
+ there is theoretically no alias possible. However, no deep copy is
+ made for this temporary, so that if the constructor is made of one or
+ more variable with allocatable components, those components still point
+ to the variable's: DEEP_COPY should be set for the assignment from the
+ temporary to the lhs in that case.
+ 2. When assigning a scalar to an array, we evaluate the scalar value out
+ of the loop, store it into a temporary variable, and assign from that.
+ In that case, deep copying when assigning to the temporary would be a
+ waste of resources; however deep copies should happen when assigning from
+ the temporary to each array element: again DEEP_COPY should be set for
+ the assignment from the temporary to the lhs. */
tree
gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts,
- bool l_is_temp, bool r_is_var, bool dealloc)
+ bool l_is_temp, bool deep_copy, bool dealloc)
{
stmtblock_t block;
tree tmp;
@@ -6118,9 +6370,9 @@ gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts,
else if (ts.type == BT_DERIVED && ts.u.derived->attr.alloc_comp)
{
cond = NULL_TREE;
-
+
/* Are the rhs and the lhs the same? */
- if (r_is_var)
+ if (deep_copy)
{
cond = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node,
gfc_build_addr_expr (NULL_TREE, lse->expr),
@@ -6136,7 +6388,7 @@ gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts,
{
tmp = gfc_evaluate_now (lse->expr, &lse->pre);
tmp = gfc_deallocate_alloc_comp (ts.u.derived, tmp, 0);
- if (r_is_var)
+ if (deep_copy)
tmp = build3_v (COND_EXPR, cond, build_empty_stmt (input_location),
tmp);
gfc_add_expr_to_block (&lse->post, tmp);
@@ -6150,7 +6402,7 @@ gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts,
/* Do a deep copy if the rhs is a variable, if it is not the
same as the lhs. */
- if (r_is_var)
+ if (deep_copy)
{
tmp = gfc_copy_alloc_comp (ts.u.derived, rse->expr, lse->expr, 0);
tmp = build3_v (COND_EXPR, cond, build_empty_stmt (input_location),
@@ -6464,7 +6716,7 @@ static tree
gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2)
{
gfc_se se;
- gfc_ss *ss;
+ gfc_ss *ss = NULL;
gfc_component *comp = NULL;
gfc_loopinfo loop;
@@ -6473,19 +6725,17 @@ gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2)
/* The frontend doesn't seem to bother filling in expr->symtree for intrinsic
functions. */
+ comp = gfc_get_proc_ptr_comp (expr2);
gcc_assert (expr2->value.function.isym
- || (gfc_is_proc_ptr_comp (expr2, &comp)
- && comp && comp->attr.dimension)
+ || (comp && comp->attr.dimension)
|| (!comp && gfc_return_by_reference (expr2->value.function.esym)
&& expr2->value.function.esym->result->attr.dimension));
- ss = gfc_walk_expr (expr1);
- gcc_assert (ss != gfc_ss_terminator);
gfc_init_se (&se, NULL);
gfc_start_block (&se.pre);
se.want_pointer = 1;
- gfc_conv_array_parameter (&se, expr1, ss, false, NULL, NULL, NULL);
+ gfc_conv_array_parameter (&se, expr1, false, NULL, NULL, NULL);
if (expr1->ts.type == BT_DERIVED
&& expr1->ts.u.derived->attr.alloc_comp)
@@ -6519,6 +6769,9 @@ gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2)
if (!expr2->value.function.isym)
{
+ ss = gfc_walk_expr (expr1);
+ gcc_assert (ss != gfc_ss_terminator);
+
realloc_lhs_loop_for_fcn_call (&se, &expr1->where, &ss, &loop);
ss->is_alloc_lhs = 1;
}
@@ -6529,6 +6782,11 @@ gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2)
gfc_conv_function_expr (&se, expr2);
gfc_add_block_to_block (&se.pre, &se.post);
+ if (ss)
+ gfc_cleanup_loop (&loop);
+ else
+ gfc_free_ss_chain (se.ss);
+
return gfc_finish_block (&se.pre);
}
@@ -6711,6 +6969,8 @@ static bool
expr_is_variable (gfc_expr *expr)
{
gfc_expr *arg;
+ gfc_component *comp;
+ gfc_symbol *func_ifc;
if (expr->expr_type == EXPR_VARIABLE)
return true;
@@ -6722,7 +6982,50 @@ expr_is_variable (gfc_expr *expr)
return expr_is_variable (arg);
}
+ /* A data-pointer-returning function should be considered as a variable
+ too. */
+ if (expr->expr_type == EXPR_FUNCTION
+ && expr->ref == NULL)
+ {
+ if (expr->value.function.isym != NULL)
+ return false;
+
+ if (expr->value.function.esym != NULL)
+ {
+ func_ifc = expr->value.function.esym;
+ goto found_ifc;
+ }
+ else
+ {
+ gcc_assert (expr->symtree);
+ func_ifc = expr->symtree->n.sym;
+ goto found_ifc;
+ }
+
+ gcc_unreachable ();
+ }
+
+ comp = gfc_get_proc_ptr_comp (expr);
+ if ((expr->expr_type == EXPR_PPC || expr->expr_type == EXPR_FUNCTION)
+ && comp)
+ {
+ func_ifc = comp->ts.interface;
+ goto found_ifc;
+ }
+
+ if (expr->expr_type == EXPR_COMPCALL)
+ {
+ gcc_assert (!expr->value.compcall.tbp->is_generic);
+ func_ifc = expr->value.compcall.tbp->u.specific->n.sym;
+ goto found_ifc;
+ }
+
return false;
+
+found_ifc:
+ gcc_assert (func_ifc->attr.function
+ && func_ifc->result != NULL);
+ return func_ifc->result->attr.pointer;
}
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index c74e81a011e..add4baaa311 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see
#include "trans-const.h"
#include "trans-types.h"
#include "trans-array.h"
-#include "defaults.h"
/* Only for gfc_trans_assign and gfc_trans_pointer_assign. */
#include "trans-stmt.h"
@@ -924,43 +923,6 @@ gfc_conv_intrinsic_exponent (gfc_se *se, gfc_expr *expr)
}
-/* Convert the last ref of a scalar coarray from an AR_ELEMENT to an
- AR_FULL, suitable for the scalarizer. */
-
-static gfc_ss *
-walk_coarray (gfc_expr *e)
-{
- gfc_ss *ss;
-
- gcc_assert (gfc_get_corank (e) > 0);
-
- ss = gfc_walk_expr (e);
-
- /* Fix scalar coarray. */
- if (ss == gfc_ss_terminator)
- {
- gfc_ref *ref;
-
- ref = e->ref;
- while (ref)
- {
- if (ref->type == REF_ARRAY
- && ref->u.ar.codimen > 0)
- break;
-
- ref = ref->next;
- }
-
- gcc_assert (ref != NULL);
- if (ref->u.ar.type == AR_ELEMENT)
- ref->u.ar.type = AR_SECTION;
- ss = gfc_reverse_ss (gfc_walk_array_ref (ss, e, ref));
- }
-
- return ss;
-}
-
-
static void
trans_this_image (gfc_se * se, gfc_expr *expr)
{
@@ -968,7 +930,6 @@ trans_this_image (gfc_se * se, gfc_expr *expr)
tree type, desc, dim_arg, cond, tmp, m, loop_var, exit_label, min_var,
lbound, ubound, extent, ml;
gfc_se argse;
- gfc_ss *ss;
int rank, corank;
/* The case -fcoarray=single is handled elsewhere. */
@@ -992,10 +953,8 @@ trans_this_image (gfc_se * se, gfc_expr *expr)
/* Obtain the descriptor of the COARRAY. */
gfc_init_se (&argse, NULL);
- ss = walk_coarray (expr->value.function.actual->expr);
- gcc_assert (ss != gfc_ss_terminator);
argse.want_coarray = 1;
- gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr, ss);
+ gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr);
gfc_add_block_to_block (&se->pre, &argse.pre);
gfc_add_block_to_block (&se->post, &argse.post);
desc = argse.expr;
@@ -1187,7 +1146,6 @@ trans_image_index (gfc_se * se, gfc_expr *expr)
tree num_images, cond, coindex, type, lbound, ubound, desc, subdesc,
tmp, invalid_bound;
gfc_se argse, subse;
- gfc_ss *ss, *subss;
int rank, corank, codim;
type = gfc_get_int_type (gfc_default_integer_kind);
@@ -1196,20 +1154,15 @@ trans_image_index (gfc_se * se, gfc_expr *expr)
/* Obtain the descriptor of the COARRAY. */
gfc_init_se (&argse, NULL);
- ss = walk_coarray (expr->value.function.actual->expr);
- gcc_assert (ss != gfc_ss_terminator);
argse.want_coarray = 1;
- gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr, ss);
+ gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr);
gfc_add_block_to_block (&se->pre, &argse.pre);
gfc_add_block_to_block (&se->post, &argse.post);
desc = argse.expr;
/* Obtain a handle to the SUB argument. */
gfc_init_se (&subse, NULL);
- subss = gfc_walk_expr (expr->value.function.actual->next->expr);
- gcc_assert (subss != gfc_ss_terminator);
- gfc_conv_expr_descriptor (&subse, expr->value.function.actual->next->expr,
- subss);
+ gfc_conv_expr_descriptor (&subse, expr->value.function.actual->next->expr);
gfc_add_block_to_block (&se->pre, &subse.pre);
gfc_add_block_to_block (&se->post, &subse.post);
subdesc = build_fold_indirect_ref_loc (input_location,
@@ -1320,25 +1273,16 @@ static void
gfc_conv_intrinsic_rank (gfc_se *se, gfc_expr *expr)
{
gfc_se argse;
- gfc_ss *ss;
- tree dtype, tmp;
- ss = gfc_walk_expr (expr->value.function.actual->expr);
- gcc_assert (ss != gfc_ss_terminator);
gfc_init_se (&argse, NULL);
argse.data_not_needed = 1;
- argse.want_pointer = 1;
+ argse.descriptor_only = 1;
- gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr, ss);
+ gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr);
gfc_add_block_to_block (&se->pre, &argse.pre);
gfc_add_block_to_block (&se->post, &argse.post);
- argse.expr = build_fold_indirect_ref_loc (input_location, argse.expr);
- argse.expr = build_fold_indirect_ref_loc (input_location, argse.expr);
- dtype = gfc_conv_descriptor_dtype (argse.expr);
- tmp = build_int_cst (TREE_TYPE (dtype), GFC_DTYPE_RANK_MASK);
- tmp = fold_build2_loc (input_location, BIT_AND_EXPR, TREE_TYPE (dtype),
- dtype, tmp);
- se->expr = fold_convert (gfc_get_int_type (gfc_default_integer_kind), tmp);
+
+ se->expr = gfc_conv_descriptor_rank (argse.expr);
}
@@ -1358,8 +1302,8 @@ gfc_conv_intrinsic_bound (gfc_se * se, gfc_expr * expr, int upper)
tree ubound;
tree lbound;
gfc_se argse;
- gfc_ss *ss;
gfc_array_spec * as;
+ bool assumed_rank_lb_one;
arg = expr->value.function.actual;
arg2 = arg->next;
@@ -1392,36 +1336,43 @@ gfc_conv_intrinsic_bound (gfc_se * se, gfc_expr * expr, int upper)
/* TODO: don't re-evaluate the descriptor on each iteration. */
/* Get a descriptor for the first parameter. */
- ss = gfc_walk_expr (arg->expr);
- gcc_assert (ss != gfc_ss_terminator);
gfc_init_se (&argse, NULL);
- gfc_conv_expr_descriptor (&argse, arg->expr, ss);
+ gfc_conv_expr_descriptor (&argse, arg->expr);
gfc_add_block_to_block (&se->pre, &argse.pre);
gfc_add_block_to_block (&se->post, &argse.post);
desc = argse.expr;
+ as = gfc_get_full_arrayspec_from_expr (arg->expr);
+
if (INTEGER_CST_P (bound))
{
int hi, low;
hi = TREE_INT_CST_HIGH (bound);
low = TREE_INT_CST_LOW (bound);
- if (hi || low < 0 || low >= GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc)))
+ if (hi || low < 0
+ || ((!as || as->type != AS_ASSUMED_RANK)
+ && low >= GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc)))
+ || low > GFC_MAX_DIMENSIONS)
gfc_error ("'dim' argument of %s intrinsic at %L is not a valid "
"dimension index", upper ? "UBOUND" : "LBOUND",
&expr->where);
}
- else
+
+ if (!INTEGER_CST_P (bound) || (as && as->type == AS_ASSUMED_RANK))
{
if (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS)
{
bound = gfc_evaluate_now (bound, &se->pre);
cond = fold_build2_loc (input_location, LT_EXPR, boolean_type_node,
bound, build_int_cst (TREE_TYPE (bound), 0));
- tmp = gfc_rank_cst[GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc))];
+ if (as && as->type == AS_ASSUMED_RANK)
+ tmp = gfc_conv_descriptor_rank (desc);
+ else
+ tmp = gfc_rank_cst[GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc))];
tmp = fold_build2_loc (input_location, GE_EXPR, boolean_type_node,
- bound, tmp);
+ bound, fold_convert(TREE_TYPE (bound), tmp));
cond = fold_build2_loc (input_location, TRUTH_ORIF_EXPR,
boolean_type_node, cond, tmp);
gfc_trans_runtime_check (true, false, cond, &se->pre, &expr->where,
@@ -1429,11 +1380,19 @@ gfc_conv_intrinsic_bound (gfc_se * se, gfc_expr * expr, int upper)
}
}
+ /* Take care of the lbound shift for assumed-rank arrays, which are
+ nonallocatable and nonpointers. Those has a lbound of 1. */
+ assumed_rank_lb_one = as && as->type == AS_ASSUMED_RANK
+ && ((arg->expr->ts.type != BT_CLASS
+ && !arg->expr->symtree->n.sym->attr.allocatable
+ && !arg->expr->symtree->n.sym->attr.pointer)
+ || (arg->expr->ts.type == BT_CLASS
+ && !CLASS_DATA (arg->expr)->attr.allocatable
+ && !CLASS_DATA (arg->expr)->attr.class_pointer));
+
ubound = gfc_conv_descriptor_ubound_get (desc, bound);
lbound = gfc_conv_descriptor_lbound_get (desc, bound);
- as = gfc_get_full_arrayspec_from_expr (arg->expr);
-
/* 13.14.53: Result value for LBOUND
Case (i): For an array section or for an array expression other than a
@@ -1455,7 +1414,9 @@ gfc_conv_intrinsic_bound (gfc_se * se, gfc_expr * expr, int upper)
not have size zero and has value zero if dimension DIM has
size zero. */
- if (as)
+ if (!upper && assumed_rank_lb_one)
+ se->expr = gfc_index_one_node;
+ else if (as)
{
tree stride = gfc_conv_descriptor_stride_get (desc, bound);
@@ -1481,9 +1442,19 @@ gfc_conv_intrinsic_bound (gfc_se * se, gfc_expr * expr, int upper)
cond = fold_build2_loc (input_location, TRUTH_OR_EXPR,
boolean_type_node, cond, cond5);
+ if (assumed_rank_lb_one)
+ {
+ tmp = fold_build2_loc (input_location, MINUS_EXPR,
+ gfc_array_index_type, ubound, lbound);
+ tmp = fold_build2_loc (input_location, PLUS_EXPR,
+ gfc_array_index_type, tmp, gfc_index_one_node);
+ }
+ else
+ tmp = ubound;
+
se->expr = fold_build3_loc (input_location, COND_EXPR,
gfc_array_index_type, cond,
- ubound, gfc_index_zero_node);
+ tmp, gfc_index_zero_node);
}
else
{
@@ -1532,7 +1503,6 @@ conv_intrinsic_cobound (gfc_se * se, gfc_expr * expr)
gfc_actual_arglist *arg;
gfc_actual_arglist *arg2;
gfc_se argse;
- gfc_ss *ss;
tree bound, resbound, resbound2, desc, cond, tmp;
tree type;
int corank;
@@ -1547,12 +1517,10 @@ conv_intrinsic_cobound (gfc_se * se, gfc_expr * expr)
gcc_assert (arg->expr->expr_type == EXPR_VARIABLE);
corank = gfc_get_corank (arg->expr);
- ss = walk_coarray (arg->expr);
- gcc_assert (ss != gfc_ss_terminator);
gfc_init_se (&argse, NULL);
argse.want_coarray = 1;
- gfc_conv_expr_descriptor (&argse, arg->expr, ss);
+ gfc_conv_expr_descriptor (&argse, arg->expr);
gfc_add_block_to_block (&se->pre, &argse.pre);
gfc_add_block_to_block (&se->post, &argse.post);
desc = argse.expr;
@@ -4557,7 +4525,7 @@ conv_generic_with_optional_char_arg (gfc_se* se, gfc_expr* expr,
sym = gfc_get_symbol_for_expr (expr);
gfc_conv_procedure_call (se, sym, expr->value.function.actual, expr,
append_args);
- free (sym);
+ gfc_free_symbol (sym);
}
@@ -4571,7 +4539,6 @@ gfc_conv_intrinsic_len (gfc_se * se, gfc_expr * expr)
gfc_symbol *sym;
gfc_se argse;
gfc_expr *arg;
- gfc_ss *ss;
gcc_assert (!se->ss);
@@ -4613,12 +4580,11 @@ gfc_conv_intrinsic_len (gfc_se * se, gfc_expr * expr)
default:
/* Anybody stupid enough to do this deserves inefficient code. */
- ss = gfc_walk_expr (arg);
gfc_init_se (&argse, se);
- if (ss == gfc_ss_terminator)
+ if (arg->rank == 0)
gfc_conv_expr (&argse, arg);
else
- gfc_conv_expr_descriptor (&argse, arg, ss);
+ gfc_conv_expr_descriptor (&argse, arg);
gfc_add_block_to_block (&se->pre, &argse.pre);
gfc_add_block_to_block (&se->post, &argse.post);
len = argse.string_length;
@@ -5075,7 +5041,6 @@ gfc_conv_intrinsic_size (gfc_se * se, gfc_expr * expr)
tree fncall0;
tree fncall1;
gfc_se argse;
- gfc_ss *ss;
gfc_init_se (&argse, NULL);
actual = expr->value.function.actual;
@@ -5083,11 +5048,9 @@ gfc_conv_intrinsic_size (gfc_se * se, gfc_expr * expr)
if (actual->expr->ts.type == BT_CLASS)
gfc_add_class_array_ref (actual->expr);
- ss = gfc_walk_expr (actual->expr);
- gcc_assert (ss != gfc_ss_terminator);
argse.want_pointer = 1;
argse.data_not_needed = 1;
- gfc_conv_expr_descriptor (&argse, actual->expr, ss);
+ gfc_conv_expr_descriptor (&argse, actual->expr);
gfc_add_block_to_block (&se->pre, &argse.pre);
gfc_add_block_to_block (&se->post, &argse.post);
arg1 = gfc_evaluate_now (argse.expr, &se->pre);
@@ -5190,7 +5153,6 @@ static void
gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr)
{
gfc_expr *arg;
- gfc_ss *ss;
gfc_se argse;
tree source_bytes;
tree type;
@@ -5202,9 +5164,8 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr)
arg = expr->value.function.actual->expr;
gfc_init_se (&argse, NULL);
- ss = gfc_walk_expr (arg);
- if (ss == gfc_ss_terminator)
+ if (arg->rank == 0)
{
if (arg->ts.type == BT_CLASS)
gfc_add_data_component (arg);
@@ -5225,7 +5186,7 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr)
{
source_bytes = gfc_create_var (gfc_array_index_type, "bytes");
argse.want_pointer = 0;
- gfc_conv_expr_descriptor (&argse, arg, ss);
+ gfc_conv_expr_descriptor (&argse, arg);
type = gfc_get_element_type (TREE_TYPE (argse.expr));
/* Obtain the argument's word length. */
@@ -5262,7 +5223,6 @@ static void
gfc_conv_intrinsic_storage_size (gfc_se *se, gfc_expr *expr)
{
gfc_expr *arg;
- gfc_ss *ss;
gfc_se argse,eight;
tree type, result_type, tmp;
@@ -5271,10 +5231,9 @@ gfc_conv_intrinsic_storage_size (gfc_se *se, gfc_expr *expr)
gfc_conv_expr (&eight, gfc_get_int_expr (expr->ts.kind, NULL, 8));
gfc_init_se (&argse, NULL);
- ss = gfc_walk_expr (arg);
result_type = gfc_get_int_type (expr->ts.kind);
- if (ss == gfc_ss_terminator)
+ if (arg->rank == 0)
{
if (arg->ts.type == BT_CLASS)
{
@@ -5292,7 +5251,7 @@ gfc_conv_intrinsic_storage_size (gfc_se *se, gfc_expr *expr)
else
{
argse.want_pointer = 0;
- gfc_conv_expr_descriptor (&argse, arg, ss);
+ gfc_conv_expr_descriptor (&argse, arg);
type = gfc_get_element_type (TREE_TYPE (argse.expr));
}
@@ -5386,7 +5345,6 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr)
tree stmt;
gfc_actual_arglist *arg;
gfc_se argse;
- gfc_ss *ss;
gfc_array_info *info;
stmtblock_t block;
int n;
@@ -5412,12 +5370,11 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr)
arg->expr->value.function.name = "__transfer_in_transfer";
gfc_init_se (&argse, NULL);
- ss = gfc_walk_expr (arg->expr);
source_bytes = gfc_create_var (gfc_array_index_type, NULL);
/* Obtain the pointer to source and the length of source in bytes. */
- if (ss == gfc_ss_terminator)
+ if (arg->expr->rank == 0)
{
gfc_conv_expr_reference (&argse, arg->expr);
source = argse.expr;
@@ -5436,7 +5393,7 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr)
else
{
argse.want_pointer = 0;
- gfc_conv_expr_descriptor (&argse, arg->expr, ss);
+ gfc_conv_expr_descriptor (&argse, arg->expr);
source = gfc_conv_descriptor_data_get (argse.expr);
source_type = gfc_get_element_type (TREE_TYPE (argse.expr));
@@ -5510,11 +5467,10 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr)
arg = arg->next;
gfc_init_se (&argse, NULL);
- ss = gfc_walk_expr (arg->expr);
scalar_mold = arg->expr->rank == 0;
- if (ss == gfc_ss_terminator)
+ if (arg->expr->rank == 0)
{
gfc_conv_expr_reference (&argse, arg->expr);
mold_type = TREE_TYPE (build_fold_indirect_ref_loc (input_location,
@@ -5524,7 +5480,7 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr)
{
gfc_init_se (&argse, NULL);
argse.want_pointer = 0;
- gfc_conv_expr_descriptor (&argse, arg->expr, ss);
+ gfc_conv_expr_descriptor (&argse, arg->expr);
mold_type = gfc_get_element_type (TREE_TYPE (argse.expr));
}
@@ -5717,7 +5673,6 @@ gfc_conv_allocated (gfc_se *se, gfc_expr *expr)
{
gfc_actual_arglist *arg1;
gfc_se arg1se;
- gfc_ss *ss1;
tree tmp;
gfc_init_se (&arg1se, NULL);
@@ -5734,9 +5689,7 @@ gfc_conv_allocated (gfc_se *se, gfc_expr *expr)
gfc_add_data_component (arg1->expr);
}
- ss1 = gfc_walk_expr (arg1->expr);
-
- if (ss1 == gfc_ss_terminator)
+ if (arg1->expr->rank == 0)
{
/* Allocatable scalar. */
arg1se.want_pointer = 1;
@@ -5747,7 +5700,7 @@ gfc_conv_allocated (gfc_se *se, gfc_expr *expr)
{
/* Allocatable array. */
arg1se.descriptor_only = 1;
- gfc_conv_expr_descriptor (&arg1se, arg1->expr, ss1);
+ gfc_conv_expr_descriptor (&arg1se, arg1->expr);
tmp = gfc_conv_descriptor_data_get (arg1se.expr);
}
@@ -5774,7 +5727,8 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
tree tmp;
tree nonzero_charlen;
tree nonzero_arraylen;
- gfc_ss *ss1, *ss2;
+ gfc_ss *ss;
+ bool scalar;
gfc_init_se (&arg1se, NULL);
gfc_init_se (&arg2se, NULL);
@@ -5782,12 +5736,18 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
if (arg1->expr->ts.type == BT_CLASS)
gfc_add_data_component (arg1->expr);
arg2 = arg1->next;
- ss1 = gfc_walk_expr (arg1->expr);
+
+ /* Check whether the expression is a scalar or not; we cannot use
+ arg1->expr->rank as it can be nonzero for proc pointers. */
+ ss = gfc_walk_expr (arg1->expr);
+ scalar = ss == gfc_ss_terminator;
+ if (!scalar)
+ gfc_free_ss_chain (ss);
if (!arg2->expr)
{
/* No optional target. */
- if (ss1 == gfc_ss_terminator)
+ if (scalar)
{
/* A pointer to a scalar. */
arg1se.want_pointer = 1;
@@ -5801,7 +5761,7 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
else
{
/* A pointer to an array. */
- gfc_conv_expr_descriptor (&arg1se, arg1->expr, ss1);
+ gfc_conv_expr_descriptor (&arg1se, arg1->expr);
tmp2 = gfc_conv_descriptor_data_get (arg1se.expr);
}
gfc_add_block_to_block (&se->pre, &arg1se.pre);
@@ -5815,7 +5775,6 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
/* An optional target. */
if (arg2->expr->ts.type == BT_CLASS)
gfc_add_data_component (arg2->expr);
- ss2 = gfc_walk_expr (arg2->expr);
nonzero_charlen = NULL_TREE;
if (arg1->expr->ts.type == BT_CHARACTER)
@@ -5823,11 +5782,9 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
boolean_type_node,
arg1->expr->ts.u.cl->backend_decl,
integer_zero_node);
-
- if (ss1 == gfc_ss_terminator)
+ if (scalar)
{
/* A pointer to a scalar. */
- gcc_assert (ss2 == gfc_ss_terminator);
arg1se.want_pointer = 1;
gfc_conv_expr (&arg1se, arg1->expr);
if (arg1->expr->symtree->n.sym->attr.proc_pointer
@@ -5856,19 +5813,25 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
present. */
arg1se.descriptor_only = 1;
gfc_conv_expr_lhs (&arg1se, arg1->expr);
- tmp = gfc_conv_descriptor_stride_get (arg1se.expr,
- gfc_rank_cst[arg1->expr->rank - 1]);
+ if (arg1->expr->rank == -1)
+ {
+ tmp = gfc_conv_descriptor_rank (arg1se.expr);
+ tmp = fold_build2_loc (input_location, MINUS_EXPR,
+ TREE_TYPE (tmp), tmp, gfc_index_one_node);
+ }
+ else
+ tmp = gfc_rank_cst[arg1->expr->rank - 1];
+ tmp = gfc_conv_descriptor_stride_get (arg1se.expr, tmp);
nonzero_arraylen = fold_build2_loc (input_location, NE_EXPR,
boolean_type_node, tmp,
build_int_cst (TREE_TYPE (tmp), 0));
/* A pointer to an array, call library function _gfor_associated. */
- gcc_assert (ss2 != gfc_ss_terminator);
arg1se.want_pointer = 1;
- gfc_conv_expr_descriptor (&arg1se, arg1->expr, ss1);
+ gfc_conv_expr_descriptor (&arg1se, arg1->expr);
arg2se.want_pointer = 1;
- gfc_conv_expr_descriptor (&arg2se, arg2->expr, ss2);
+ gfc_conv_expr_descriptor (&arg2se, arg2->expr);
gfc_add_block_to_block (&se->pre, &arg2se.pre);
gfc_add_block_to_block (&se->post, &arg2se.post);
se->expr = build_call_expr_loc (input_location,
@@ -6223,16 +6186,14 @@ gfc_conv_intrinsic_loc (gfc_se * se, gfc_expr * expr)
{
tree temp_var;
gfc_expr *arg_expr;
- gfc_ss *ss;
gcc_assert (!se->ss);
arg_expr = expr->value.function.actual->expr;
- ss = gfc_walk_expr (arg_expr);
- if (ss == gfc_ss_terminator)
+ if (arg_expr->rank == 0)
gfc_conv_expr_reference (se, arg_expr);
else
- gfc_conv_array_parameter (se, arg_expr, ss, true, NULL, NULL, NULL);
+ gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL);
se->expr= convert (gfc_get_int_type (gfc_index_integer_kind), se->expr);
/* Create a temporary variable for loc return value. Without this,
@@ -7271,7 +7232,6 @@ conv_intrinsic_move_alloc (gfc_code *code)
gfc_expr *from_expr, *to_expr;
gfc_expr *to_expr2, *from_expr2 = NULL;
gfc_se from_se, to_se;
- gfc_ss *from_ss, *to_ss;
tree tmp;
bool coarray;
@@ -7397,19 +7357,15 @@ conv_intrinsic_move_alloc (gfc_code *code)
}
}
+
/* Deallocate "to". */
- if (from_expr->rank != 0)
- {
- to_ss = gfc_walk_expr (to_expr);
- from_ss = gfc_walk_expr (from_expr);
- }
- else
+ if (from_expr->rank == 0)
{
- to_ss = walk_coarray (to_expr);
- from_ss = walk_coarray (from_expr);
+ to_se.want_coarray = 1;
+ from_se.want_coarray = 1;
}
- gfc_conv_expr_descriptor (&to_se, to_expr, to_ss);
- gfc_conv_expr_descriptor (&from_se, from_expr, from_ss);
+ gfc_conv_expr_descriptor (&to_se, to_expr);
+ gfc_conv_expr_descriptor (&from_se, from_expr);
/* For coarrays, call SYNC ALL if TO is already deallocated as MOVE_ALLOC
is an image control "statement", cf. IR F08/0040 in 12-006A. */
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c
index 8218f85a98d..34db6fd5a11 100644
--- a/gcc/fortran/trans-io.c
+++ b/gcc/fortran/trans-io.c
@@ -664,7 +664,7 @@ gfc_convert_array_to_string (gfc_se * se, gfc_expr * e)
return;
}
- gfc_conv_array_parameter (se, e, gfc_walk_expr (e), true, NULL, NULL, &size);
+ gfc_conv_array_parameter (se, e, true, NULL, NULL, &size);
se->string_length = fold_convert (gfc_charlen_type_node, size);
}
@@ -780,8 +780,6 @@ set_internal_unit (stmtblock_t * block, stmtblock_t * post_block,
/* Character array. */
else if (e->rank > 0)
{
- se.ss = gfc_walk_expr (e);
-
if (is_subref_array (e))
{
/* Use a temporary for components of arrays of derived types
@@ -796,7 +794,7 @@ set_internal_unit (stmtblock_t * block, stmtblock_t * post_block,
else
{
/* Return the data pointer and rank from the descriptor. */
- gfc_conv_expr_descriptor (&se, e, se.ss);
+ gfc_conv_expr_descriptor (&se, e);
tmp = gfc_conv_descriptor_data_get (se.expr);
se.expr = gfc_build_addr_expr (pchar_type_node, se.expr);
}
@@ -2236,12 +2234,10 @@ gfc_trans_transfer (gfc_code * code)
gfc_init_block (&body);
expr = code->expr1;
- ss = gfc_walk_expr (expr);
-
ref = NULL;
gfc_init_se (&se, NULL);
- if (ss == gfc_ss_terminator)
+ if (expr->rank == 0)
{
/* Transfer a scalar value. */
gfc_conv_expr_reference (&se, expr);
@@ -2252,7 +2248,7 @@ gfc_trans_transfer (gfc_code * code)
/* Transfer an array. If it is an array of an intrinsic
type, pass the descriptor to the library. Otherwise
scalarize the transfer. */
- if (expr->ref && !gfc_is_proc_ptr_comp (expr, NULL))
+ if (expr->ref && !gfc_is_proc_ptr_comp (expr))
{
for (ref = expr->ref; ref && ref->type != REF_ARRAY;
ref = ref->next);
@@ -2281,15 +2277,16 @@ gfc_trans_transfer (gfc_code * code)
else
{
/* Get the descriptor. */
- gfc_conv_expr_descriptor (&se, expr, ss);
+ gfc_conv_expr_descriptor (&se, expr);
tmp = gfc_build_addr_expr (NULL_TREE, se.expr);
}
transfer_array_desc (&se, &expr->ts, tmp);
goto finish_block_label;
}
-
+
/* Initialize the scalarizer. */
+ ss = gfc_walk_expr (expr);
gfc_init_loopinfo (&loop);
gfc_add_ss_to_loop (&loop, ss);
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 323fca382c3..8bc491655be 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -109,7 +109,8 @@ gfc_trans_label_assign (gfc_code * code)
label_tree = gfc_get_label_decl (code->label1);
- if (code->label1->defined == ST_LABEL_TARGET)
+ if (code->label1->defined == ST_LABEL_TARGET
+ || code->label1->defined == ST_LABEL_DO_TARGET)
{
label_tree = gfc_build_addr_expr (pvoid_type_node, label_tree);
len_tree = integer_minus_one_node;
@@ -273,7 +274,7 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse,
/* Obtain the argument descriptor for unpacking. */
gfc_init_se (&parmse, NULL);
parmse.want_pointer = 1;
- gfc_conv_expr_descriptor (&parmse, e, gfc_walk_expr (e));
+ gfc_conv_expr_descriptor (&parmse, e);
gfc_add_block_to_block (&se->pre, &parmse.pre);
/* If we've got INTENT(INOUT) or a derived type with INTENT(OUT),
@@ -863,9 +864,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type)
"implemented for image-set at %L",
gfc_c_int_kind, &code->expr1->where);
- gfc_conv_array_parameter (&se, code->expr1,
- gfc_walk_expr (code->expr1), true, NULL,
- NULL, &len);
+ gfc_conv_array_parameter (&se, code->expr1, true, NULL, NULL, &len);
images = se.expr;
tmp = gfc_typenode_for_spec (&code->expr1->ts);
@@ -1159,7 +1158,6 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block)
&& (sym->as->type == AS_DEFERRED || sym->assoc->variable))
{
gfc_se se;
- gfc_ss *ss;
tree desc;
desc = sym->backend_decl;
@@ -1167,13 +1165,12 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block)
/* If association is to an expression, evaluate it and create temporary.
Otherwise, get descriptor of target for pointer assignment. */
gfc_init_se (&se, NULL);
- ss = gfc_walk_expr (e);
if (sym->assoc->variable)
{
se.direct_byref = 1;
se.expr = desc;
}
- gfc_conv_expr_descriptor (&se, e, ss);
+ gfc_conv_expr_descriptor (&se, e);
/* If we didn't already do the pointer assignment, set associate-name
descriptor to the one generated for the temporary. */
@@ -1228,7 +1225,7 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block)
if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->attr.dimension)
{
/* For a class array we need a descriptor for the selector. */
- gfc_conv_expr_descriptor (&se, e, gfc_walk_expr (e));
+ gfc_conv_expr_descriptor (&se, e);
/* Obtain a temporary class container for the result. */
gfc_conv_class_to_class (&se, e, sym->ts, false);
@@ -1788,7 +1785,7 @@ gfc_trans_do_while (gfc_code * code)
gfc_conv_expr_val (&cond, code->expr1);
gfc_add_block_to_block (&block, &cond.pre);
cond.expr = fold_build1_loc (code->expr1->where.lb->location,
- TRUTH_NOT_EXPR, boolean_type_node, cond.expr);
+ TRUTH_NOT_EXPR, TREE_TYPE (cond.expr), cond.expr);
/* Build "IF (! cond) GOTO exit_label". */
tmp = build1_v (GOTO_EXPR, exit_label);
@@ -3501,8 +3498,7 @@ gfc_trans_pointer_assign_need_temp (gfc_expr * expr1, gfc_expr * expr2,
gfc_init_se (&lse, NULL);
lse.expr = gfc_build_array_ref (tmp1, count, NULL);
lse.direct_byref = 1;
- rss = gfc_walk_expr (expr2);
- gfc_conv_expr_descriptor (&lse, expr2, rss);
+ gfc_conv_expr_descriptor (&lse, expr2);
gfc_add_block_to_block (&body, &lse.pre);
gfc_add_block_to_block (&body, &lse.post);
@@ -3523,9 +3519,8 @@ gfc_trans_pointer_assign_need_temp (gfc_expr * expr1, gfc_expr * expr2,
gfc_add_modify (block, count, gfc_index_zero_node);
parm = gfc_build_array_ref (tmp1, count, NULL);
- lss = gfc_walk_expr (expr1);
gfc_init_se (&lse, NULL);
- gfc_conv_expr_descriptor (&lse, expr1, lss);
+ gfc_conv_expr_descriptor (&lse, expr1);
gfc_add_modify (&lse.pre, lse.expr, parm);
gfc_start_block (&body);
gfc_add_block_to_block (&body, &lse.pre);
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index aa50e3d0b21..3286a5a6fd6 100644
--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -80,8 +80,8 @@ bool gfc_real16_is_float128 = false;
static GTY(()) tree gfc_desc_dim_type;
static GTY(()) tree gfc_max_array_element_size;
-static GTY(()) tree gfc_array_descriptor_base[2 * GFC_MAX_DIMENSIONS];
-static GTY(()) tree gfc_array_descriptor_base_caf[2 * GFC_MAX_DIMENSIONS];
+static GTY(()) tree gfc_array_descriptor_base[2 * (GFC_MAX_DIMENSIONS+1)];
+static GTY(()) tree gfc_array_descriptor_base_caf[2 * (GFC_MAX_DIMENSIONS+1)];
/* Arrays for all integral and real kinds. We'll fill this in at runtime
after the target has a chance to process command-line options. */
@@ -1272,12 +1272,13 @@ gfc_is_nodesc_array (gfc_symbol * sym)
return 0;
/* We want a descriptor for associate-name arrays that do not have an
- explicitely known shape already. */
+ explicitly known shape already. */
if (sym->assoc && sym->as->type != AS_EXPLICIT)
return 0;
if (sym->attr.dummy)
- return sym->as->type != AS_ASSUMED_SHAPE;
+ return sym->as->type != AS_ASSUMED_SHAPE
+ && sym->as->type != AS_ASSUMED_RANK;
if (sym->attr.result || sym->attr.function)
return 0;
@@ -1299,6 +1300,13 @@ gfc_build_array_type (tree type, gfc_array_spec * as,
tree ubound[GFC_MAX_DIMENSIONS];
int n;
+ if (as->type == AS_ASSUMED_RANK)
+ for (n = 0; n < GFC_MAX_DIMENSIONS; n++)
+ {
+ lbound[n] = NULL_TREE;
+ ubound[n] = NULL_TREE;
+ }
+
for (n = 0; n < as->rank; n++)
{
/* Create expressions for the known bounds of the array. */
@@ -1323,7 +1331,12 @@ gfc_build_array_type (tree type, gfc_array_spec * as,
if (as->type == AS_ASSUMED_SHAPE)
akind = contiguous ? GFC_ARRAY_ASSUMED_SHAPE_CONT
: GFC_ARRAY_ASSUMED_SHAPE;
- return gfc_get_array_type_bounds (type, as->rank, as->corank, lbound,
+ else if (as->type == AS_ASSUMED_RANK)
+ akind = contiguous ? GFC_ARRAY_ASSUMED_RANK_CONT
+ : GFC_ARRAY_ASSUMED_RANK;
+ return gfc_get_array_type_bounds (type, as->rank == -1
+ ? GFC_MAX_DIMENSIONS : as->rank,
+ as->corank, lbound,
ubound, 0, akind, restricted);
}
@@ -1682,9 +1695,15 @@ gfc_get_array_descriptor_base (int dimen, int codimen, bool restricted,
{
tree fat_type, decl, arraytype, *chain = NULL;
char name[16 + 2*GFC_RANK_DIGITS + 1 + 1];
- int idx = 2 * (codimen + dimen - 1) + restricted;
+ int idx;
+
+ /* Assumed-rank array. */
+ if (dimen == -1)
+ dimen = GFC_MAX_DIMENSIONS;
+
+ idx = 2 * (codimen + dimen) + restricted;
- gcc_assert (codimen + dimen >= 1 && codimen + dimen <= GFC_MAX_DIMENSIONS);
+ gcc_assert (codimen + dimen >= 0 && codimen + dimen <= GFC_MAX_DIMENSIONS);
if (gfc_option.coarray == GFC_FCOARRAY_LIB && codimen)
{
@@ -1721,16 +1740,18 @@ gfc_get_array_descriptor_base (int dimen, int codimen, bool restricted,
TREE_NO_WARNING (decl) = 1;
/* Build the array type for the stride and bound components. */
- arraytype =
- build_array_type (gfc_get_desc_dim_type (),
- build_range_type (gfc_array_index_type,
- gfc_index_zero_node,
- gfc_rank_cst[codimen + dimen - 1]));
+ if (dimen + codimen > 0)
+ {
+ arraytype =
+ build_array_type (gfc_get_desc_dim_type (),
+ build_range_type (gfc_array_index_type,
+ gfc_index_zero_node,
+ gfc_rank_cst[codimen + dimen - 1]));
- decl = gfc_add_field_to_struct_1 (fat_type,
- get_identifier ("dim"),
- arraytype, &chain);
- TREE_NO_WARNING (decl) = 1;
+ decl = gfc_add_field_to_struct_1 (fat_type, get_identifier ("dim"),
+ arraytype, &chain);
+ TREE_NO_WARNING (decl) = 1;
+ }
if (gfc_option.coarray == GFC_FCOARRAY_LIB && codimen
&& akind == GFC_ARRAY_ALLOCATABLE)
diff --git a/gcc/fortran/trans-types.h b/gcc/fortran/trans-types.h
index 2ab94b3f184..29cdf089b49 100644
--- a/gcc/fortran/trans-types.h
+++ b/gcc/fortran/trans-types.h
@@ -40,7 +40,7 @@ extern GTY(()) tree complex_float128_type_node;
and runtime library. */
extern GTY(()) tree gfc_charlen_type_node;
-/* The following flags give us information on the correspondance of
+/* The following flags give us information on the correspondence of
real (and complex) kinds with C floating-point types long double
and __float128. */
extern bool gfc_real16_is_float128;
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 3313be92df8..ff0b243a202 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h" /* For create_tmp_var_raw. */
#include "tree-iterator.h"
#include "diagnostic-core.h" /* For internal_error. */
-#include "defaults.h"
#include "flags.h"
#include "gfortran.h"
#include "trans.h"
diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h
index 3b77281568a..9818ceb1f4a 100644
--- a/gcc/fortran/trans.h
+++ b/gcc/fortran/trans.h
@@ -109,7 +109,7 @@ typedef enum
gfc_coarray_type;
-/* The array-specific scalarization informations. The array members of
+/* The array-specific scalarization information. The array members of
this struct are indexed by actual array index, and thus can be sparse. */
typedef struct gfc_array_info
@@ -765,6 +765,8 @@ enum gfc_array_kind
GFC_ARRAY_UNKNOWN,
GFC_ARRAY_ASSUMED_SHAPE,
GFC_ARRAY_ASSUMED_SHAPE_CONT,
+ GFC_ARRAY_ASSUMED_RANK,
+ GFC_ARRAY_ASSUMED_RANK_CONT,
GFC_ARRAY_ALLOCATABLE,
GFC_ARRAY_POINTER,
GFC_ARRAY_POINTER_CONT
diff --git a/gcc/function.c b/gcc/function.c
index 518d52401c5..f1e0b2d3eba 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -61,7 +61,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "predict.h"
#include "df.h"
-#include "timevar.h"
#include "vecprim.h"
#include "params.h"
#include "bb-reorder.h"
@@ -2988,11 +2987,26 @@ assign_parm_setup_reg (struct assign_parm_data_all *all, tree parm,
&& insn_operand_matches (icode, 1, op1))
{
enum rtx_code code = unsignedp ? ZERO_EXTEND : SIGN_EXTEND;
- rtx insn, insns;
+ rtx insn, insns, t = op1;
HARD_REG_SET hardregs;
start_sequence ();
- insn = gen_extend_insn (op0, op1, promoted_nominal_mode,
+ /* If op1 is a hard register that is likely spilled, first
+ force it into a pseudo, otherwise combiner might extend
+ its lifetime too much. */
+ if (GET_CODE (t) == SUBREG)
+ t = SUBREG_REG (t);
+ if (REG_P (t)
+ && HARD_REGISTER_P (t)
+ && ! TEST_HARD_REG_BIT (fixed_reg_set, REGNO (t))
+ && targetm.class_likely_spilled_p (REGNO_REG_CLASS (REGNO (t))))
+ {
+ t = gen_reg_rtx (GET_MODE (op1));
+ emit_move_insn (t, op1);
+ }
+ else
+ t = op1;
+ insn = gen_extend_insn (op0, t, promoted_nominal_mode,
data->passed_mode, unsignedp);
emit_insn (insn);
insns = get_insns ();
@@ -4661,7 +4675,8 @@ stack_protect_epilogue (void)
if (JUMP_P (tmp))
predict_insn_def (tmp, PRED_NORETURN, TAKEN);
- expand_expr_stmt (targetm.stack_protect_fail ());
+ expand_call (targetm.stack_protect_fail (), NULL_RTX, /*ignore=*/true);
+ free_temp_slots ();
emit_label (label);
}
@@ -6738,13 +6753,20 @@ reposition_prologue_and_epilogue_notes (void)
#endif /* HAVE_prologue or HAVE_epilogue */
}
+/* Returns the name of function FN. */
+const char *
+function_name (struct function *fn)
+{
+ if (fn == NULL)
+ return "(nofn)";
+ return lang_hooks.decl_printable_name (fn->decl, 2);
+}
+
/* Returns the name of the current function. */
const char *
current_function_name (void)
{
- if (cfun == NULL)
- return "<none>";
- return lang_hooks.decl_printable_name (cfun->decl, 2);
+ return function_name (cfun);
}
diff --git a/gcc/function.h b/gcc/function.h
index 58f38bd1c2b..684bbce1b07 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -22,11 +22,14 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_FUNCTION_H
#define GCC_FUNCTION_H
-#include "tree.h"
#include "hashtab.h"
+#include "vec.h"
#include "vecprim.h"
-#include "tm.h" /* For CUMULATIVE_ARGS. */
-#include "hard-reg-set.h"
+#include "vecir.h"
+#include "machmode.h"
+#include "tm.h" /* For CUMULATIVE_ARGS. */
+#include "hard-reg-set.h" /* For HARD_REG_SET in struct rtl_data. */
+#include "input.h" /* For location_t. */
/* Stack of pending (incomplete) sequences saved by `start_sequence'.
Each element describes one pending sequence.
@@ -154,7 +157,7 @@ struct GTY(()) rtl_eh {
VEC(uchar,gc) *action_record_data;
- VEC(call_site_record,gc) *call_site_record[2];
+ VEC(call_site_record,gc) *call_site_record_v[2];
};
#define pending_stack_adjust (crtl->expr.x_pending_stack_adjust)
@@ -642,9 +645,6 @@ struct GTY(()) function {
return the address of where it has put a structure value. */
unsigned int returns_pcc_struct : 1;
- /* Nonzero if pass_tree_profile was run on this function. */
- unsigned int after_tree_profile : 1;
-
/* Nonzero if this function has local DECL_HARD_REGISTER variables.
In this case code motion has to be done more carefully. */
unsigned int has_local_explicit_reg_vars : 1;
@@ -760,6 +760,7 @@ extern void clobber_return_register (void);
extern rtx get_arg_pointer_save_area (void);
/* Returns the name of the current function. */
+extern const char *function_name (struct function *);
extern const char *current_function_name (void);
extern void do_warn_unused_parameter (tree);
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index e3ca1fd13af..e64e76da221 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -1,5 +1,5 @@
/* RTL-based forward propagation pass for GNU compiler.
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Paolo Bonzini and Steven Bosscher.
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "sparseset.h"
-#include "timevar.h"
#include "rtl.h"
#include "tm_p.h"
#include "insn-config.h"
@@ -224,7 +223,7 @@ single_def_use_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
bitmap_copy (local_lr, &lr_bb_info->in);
/* Push a marker for the leave_block callback. */
- VEC_safe_push (df_ref, heap, reg_defs_stack, NULL);
+ VEC_safe_push (df_ref, heap, reg_defs_stack, (df_ref) NULL);
process_uses (df_get_artificial_uses (bb_index), DF_REF_AT_TOP);
process_defs (df_get_artificial_defs (bb_index), DF_REF_AT_TOP);
@@ -800,13 +799,17 @@ all_uses_available_at (rtx def_insn, rtx target_insn)
df_ref *use_rec;
struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn);
rtx def_set = single_set (def_insn);
+ rtx next;
gcc_assert (def_set);
/* If target_insn comes right after def_insn, which is very common
- for addresses, we can use a quicker test. */
- if (NEXT_INSN (def_insn) == target_insn
- && REG_P (SET_DEST (def_set)))
+ for addresses, we can use a quicker test. Ignore debug insns
+ other than target insns for this. */
+ next = NEXT_INSN (def_insn);
+ while (next && next != target_insn && DEBUG_INSN_P (next))
+ next = NEXT_INSN (next);
+ if (next == target_insn && REG_P (SET_DEST (def_set)))
{
rtx def_reg = SET_DEST (def_set);
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 116cf5d49b4..815747eaf0f 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -2520,7 +2520,7 @@ execute (void)
and record info about each one.
Also search for the programs that are to be run. */
- VEC_safe_push (const_char_p, heap, argbuf, 0);
+ VEC_safe_push (const_char_p, heap, argbuf, (const_char_p)0);
commands[0].prog = VEC_index (const_char_p, argbuf, 0); /* first command. */
commands[0].argv = VEC_address (const_char_p, argbuf);
@@ -6189,17 +6189,18 @@ main (int argc, char **argv)
CL_DRIVER,
&decoded_options, &decoded_options_count);
-#ifdef GCC_DRIVER_HOST_INITIALIZATION
- /* Perform host dependent initialization when needed. */
- GCC_DRIVER_HOST_INITIALIZATION;
-#endif
-
/* Unlock the stdio streams. */
unlock_std_streams ();
gcc_init_libintl ();
diagnostic_initialize (global_dc, 0);
+
+#ifdef GCC_DRIVER_HOST_INITIALIZATION
+ /* Perform host dependent initialization when needed. */
+ GCC_DRIVER_HOST_INITIALIZATION;
+#endif
+
if (atexit (delete_temp_files) != 0)
fatal_error ("atexit failed");
diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h
index c15e64b197b..972dc931518 100644
--- a/gcc/gcov-io.h
+++ b/gcc/gcov-io.h
@@ -99,7 +99,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
tags, values [41..9f] for the notes file and [a1..ff] for the data
file.
- The basic block graph file contains the following records
+ The notes file contains the following records
note: unit function-graph*
unit: header int32:checksum string:source
function-graph: announce_function basic_blocks {arcs | lines}*
diff --git a/gcc/gcov.c b/gcc/gcov.c
index d4823991d14..cf26ce19a2c 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -57,10 +57,10 @@ along with Gcov; see the file COPYING3. If not see
/* The code validates that the profile information read in corresponds
to the code currently being compiled. Rather than checking for
- identical files, the code below computes a checksum on the CFG
+ identical files, the code below compares a checksum on the CFG
(based on the order of basic blocks and the arcs in the CFG). If
- the CFG checksum in the gcda file match the CFG checksum for the
- code currently being compiled, the profile data will be used. */
+ the CFG checksum in the gcda file match the CFG checksum in the
+ gcno file, the profile data will be used. */
/* This is the size of the buffer used to read in source file lines. */
@@ -177,7 +177,10 @@ typedef struct function_info
/* The graph contains at least one fake incoming edge. */
unsigned has_catch : 1;
- /* Array of basic blocks. */
+ /* Array of basic blocks. Like in GCC, the entry block is
+ at blocks[0] and the exit block is at blocks[1]. */
+#define ENTRY_BLOCK (0)
+#define EXIT_BLOCK (1)
block_t *blocks;
unsigned num_blocks;
unsigned blocks_executed;
@@ -283,14 +286,16 @@ static unsigned total_executed;
static time_t bbg_file_time;
-/* Name and file pointer of the input file for the basic block graph. */
+/* Name of the notes (gcno) output file. The "bbg" prefix is for
+ historical reasons, when the notes file contained only the
+ basic block graph notes. */
static char *bbg_file_name;
/* Stamp of the bbg file */
static unsigned bbg_stamp;
-/* Name and file pointer of the input file for the arc count data. */
+/* Name and file pointer of the input file for the count data (gcda). */
static char *da_file_name;
@@ -973,7 +978,7 @@ find_source (const char *file_name)
{
static int info_emitted;
- fnotice (stderr, "%s:source file is newer than graph file '%s'\n",
+ fnotice (stderr, "%s:source file is newer than notes file '%s'\n",
file_name, bbg_file_name);
if (!info_emitted)
{
@@ -987,7 +992,7 @@ find_source (const char *file_name)
return idx;
}
-/* Read the graph file. Return list of functions read -- in reverse order. */
+/* Read the notes file. Return list of functions read -- in reverse order. */
static function_t *
read_graph_file (void)
@@ -1003,13 +1008,13 @@ read_graph_file (void)
if (!gcov_open (bbg_file_name, 1))
{
- fnotice (stderr, "%s:cannot open graph file\n", bbg_file_name);
+ fnotice (stderr, "%s:cannot open notes file\n", bbg_file_name);
return fns;
}
bbg_file_time = gcov_time ();
if (!gcov_magic (gcov_read_unsigned (), GCOV_NOTE_MAGIC))
{
- fnotice (stderr, "%s:not a gcov graph file\n", bbg_file_name);
+ fnotice (stderr, "%s:not a gcov notes file\n", bbg_file_name);
gcov_close ();
return fns;
}
@@ -1245,7 +1250,7 @@ read_count_file (function_t *fns)
tag = gcov_read_unsigned ();
if (tag != bbg_stamp)
{
- fnotice (stderr, "%s:stamp mismatch with graph file\n", da_file_name);
+ fnotice (stderr, "%s:stamp mismatch with notes file\n", da_file_name);
goto cleanup;
}
@@ -1363,21 +1368,21 @@ solve_flow_graph (function_t *fn)
bbg_file_name, fn->name);
else
{
- if (fn->blocks[0].num_pred)
+ if (fn->blocks[ENTRY_BLOCK].num_pred)
fnotice (stderr, "%s:'%s' has arcs to entry block\n",
bbg_file_name, fn->name);
else
/* We can't deduce the entry block counts from the lack of
predecessors. */
- fn->blocks[0].num_pred = ~(unsigned)0;
+ fn->blocks[ENTRY_BLOCK].num_pred = ~(unsigned)0;
- if (fn->blocks[fn->num_blocks - 1].num_succ)
+ if (fn->blocks[EXIT_BLOCK].num_succ)
fnotice (stderr, "%s:'%s' has arcs from exit block\n",
bbg_file_name, fn->name);
else
/* Likewise, we can't deduce exit block counts from the lack
of its successors. */
- fn->blocks[fn->num_blocks - 1].num_succ = ~(unsigned)0;
+ fn->blocks[EXIT_BLOCK].num_succ = ~(unsigned)0;
}
/* Propagate the measured counts, this must be done in the same
@@ -1637,7 +1642,7 @@ add_branch_counts (coverage_t *coverage, const arc_t *arc)
}
}
-/* Format a HOST_WIDE_INT as either a percent ratio, or absolute
+/* Format a GCOV_TYPE integer as either a percent ratio, or absolute
count. If dp >= 0, format TOP/BOTTOM * 100 to DP decimal places.
If DP is zero, no decimal point is printed. Only print 100% when
TOP==BOTTOM and only print 0% when TOP=0. If dp < 0, then simply
@@ -2266,8 +2271,9 @@ output_lines (FILE *gcov_file, const source_t *src)
{
for (; fn && fn->line == line_num; fn = fn->line_next)
{
- arc_t *arc = fn->blocks[fn->num_blocks - 1].pred;
- gcov_type return_count = fn->blocks[fn->num_blocks - 1].count;
+ arc_t *arc = fn->blocks[EXIT_BLOCK].pred;
+ gcov_type return_count = fn->blocks[EXIT_BLOCK].count;
+ gcov_type called_count = fn->blocks[ENTRY_BLOCK].count;
for (; arc; arc = arc->pred_next)
if (arc->fake)
@@ -2275,9 +2281,9 @@ output_lines (FILE *gcov_file, const source_t *src)
fprintf (gcov_file, "function %s", fn->name);
fprintf (gcov_file, " called %s",
- format_gcov (fn->blocks[0].count, 0, -1));
+ format_gcov (called_count, 0, -1));
fprintf (gcov_file, " returned %s",
- format_gcov (return_count, fn->blocks[0].count, 0));
+ format_gcov (return_count, called_count, 0));
fprintf (gcov_file, " blocks executed %s",
format_gcov (fn->blocks_executed, fn->num_blocks - 2, 0));
fprintf (gcov_file, "\n");
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 18e963d1ff0..767cc66edb5 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -158,7 +158,6 @@ along with GCC; see the file COPYING3. If not see
#include "cselib.h"
#include "intl.h"
#include "obstack.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "hashtab.h"
#include "df.h"
@@ -743,10 +742,7 @@ want_to_gcse_p (rtx x, int *max_distance_ptr)
case CALL:
return 0;
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
if (!doing_code_hoisting_p)
/* Do not PRE constants. */
return 0;
@@ -888,10 +884,7 @@ oprs_unchanged_p (const_rtx x, const_rtx insn, int avail_p)
case PC:
case CC0: /*FIXME*/
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
@@ -1694,10 +1687,7 @@ compute_transp (const_rtx x, int indx, sbitmap *bmap)
case PC:
case CC0: /*FIXME*/
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
@@ -2791,7 +2781,7 @@ compute_code_hoist_vbeinout (void)
if (bb->next_bb != EXIT_BLOCK_PTR)
{
sbitmap_intersection_of_succs (hoist_vbeout[bb->index],
- hoist_vbein, bb->index);
+ hoist_vbein, bb);
/* Include expressions in VBEout that are calculated
in BB and available at its end. */
@@ -2983,7 +2973,7 @@ hoist_code (void)
/* Examine each expression that is very busy at the exit of this
block. These are the potentially hoistable expressions. */
- for (i = 0; i < hoist_vbeout[bb->index]->n_bits; i++)
+ for (i = 0; i < SBITMAP_SIZE (hoist_vbeout[bb->index]); i++)
{
if (TEST_BIT (hoist_vbeout[bb->index], i))
{
diff --git a/gcc/gdbinit.in b/gcc/gdbinit.in
index 41c481dd689..920d5004db2 100644
--- a/gcc/gdbinit.in
+++ b/gcc/gdbinit.in
@@ -1,5 +1,5 @@
# Copyright (C) 2001, 2002, 2003, 2004, 2006,
-# 2008, 2010 Free Software Foundation, Inc.
+# 2008, 2010, 2012 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -193,6 +193,13 @@ Print the melt_ptr_t that is $.
Works only when an inferior is executing.
end
+# Define some macros helpful to gdb when it is expanding macros.
+macro define __FILE__ "gdb"
+macro define __LINE__ 1
+
+# Gracefully handle aborts in functions used from gdb.
+set unwindonsignal on
+
# Put breakpoints at exit and fancy_abort in case abort is mapped
# to either fprintf/exit or fancy_abort.
b fancy_abort
@@ -207,3 +214,9 @@ set complaints 0
# USE_SYSTEM_ABORT is defined, so gdb may complain and bail out.
b exit
b abort
+
+# Skip all inline functions in tree.h.
+# These are used in accessor macros.
+# Note that this is added at the end because older gdb versions
+# do not understand the 'skip' command.
+skip file tree.h
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index 2a3ee33f3e6..19732ba1fc5 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -674,9 +674,7 @@ attr_copy_rtx (rtx orig)
switch (code)
{
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case MATCH_TEST:
case CODE_LABEL:
@@ -3090,9 +3088,7 @@ clear_struct_flag (rtx x)
switch (code)
{
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case MATCH_TEST:
case SYMBOL_REF:
case CODE_LABEL:
diff --git a/gcc/genautomata.c b/gcc/genautomata.c
index 9f9e066b119..122a4a4cfbe 100644
--- a/gcc/genautomata.c
+++ b/gcc/genautomata.c
@@ -5076,7 +5076,8 @@ store_alt_unit_usage (regexp_t regexp, regexp_t unit, int cycle,
length = (cycle + 1) * REGEXP_ONEOF (regexp)->regexps_num;
while (VEC_length (unit_usage_t, cycle_alt_unit_usages) < length)
- VEC_safe_push (unit_usage_t, heap, cycle_alt_unit_usages, 0);
+ VEC_safe_push (unit_usage_t, heap, cycle_alt_unit_usages,
+ (unit_usage_t) NULL);
index = cycle * REGEXP_ONEOF (regexp)->regexps_num + alt_num;
prev = NULL;
@@ -7673,7 +7674,8 @@ output_min_issue_delay_table (automaton_t automaton)
if (VEC_index (vect_el_t, min_issue_delay_vect, asn))
{
- VEC_replace (vect_el_t, min_issue_delay_vect, asn, 0);
+ VEC_replace (vect_el_t, min_issue_delay_vect, asn,
+ (vect_el_t) 0);
changed = 1;
}
@@ -7723,7 +7725,8 @@ output_min_issue_delay_table (automaton_t automaton)
if (automaton->max_min_delay < x)
automaton->max_min_delay = x;
if (x == -1)
- VEC_replace (vect_el_t, min_issue_delay_vect, np, 0);
+ VEC_replace (vect_el_t, min_issue_delay_vect, np,
+ (vect_el_t) 0);
}
}
@@ -7749,7 +7752,8 @@ output_min_issue_delay_table (automaton_t automaton)
= VEC_alloc (vect_el_t, heap, compressed_min_issue_delay_len);
for (i = 0; i < compressed_min_issue_delay_len; i++)
- VEC_quick_push (vect_el_t, compressed_min_issue_delay_vect, 0);
+ VEC_quick_push (vect_el_t, compressed_min_issue_delay_vect,
+ (vect_el_t) 0);
for (i = 0; i < min_issue_delay_len; i++)
{
@@ -7798,7 +7802,8 @@ output_dead_lock_vect (automaton_t automaton)
automaton->locked_states++;
}
else
- VEC_replace (vect_el_t, dead_lock_vect, s->order_state_num, 0);
+ VEC_replace (vect_el_t, dead_lock_vect, s->order_state_num,
+ (vect_el_t) 0);
}
if (automaton->locked_states == 0)
return;
@@ -7840,7 +7845,7 @@ output_reserved_units_table (automaton_t automaton)
reserved_units_table = VEC_alloc (vect_el_t, heap, reserved_units_size);
for (i = 0; i < reserved_units_size; i++)
- VEC_quick_push (vect_el_t, reserved_units_table, 0);
+ VEC_quick_push (vect_el_t, reserved_units_table, (vect_el_t) 0);
for (n = 0; n < VEC_length (state_t, output_states_vect); n++)
{
state_t s = VEC_index (state_t, output_states_vect, n);
diff --git a/gcc/gencodes.c b/gcc/gencodes.c
index 168be701bac..e95eb98cb88 100644
--- a/gcc/gencodes.c
+++ b/gcc/gencodes.c
@@ -2,7 +2,7 @@
- some macros CODE_FOR_... giving the insn_code_number value
for each of the defined standard insn names.
Copyright (C) 1987, 1991, 1995, 1998, 1999, 2000, 2001, 2003,
- 2004, 2007, 2010 Free Software Foundation, Inc.
+ 2004, 2007, 2010, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -68,7 +68,8 @@ main (int argc, char **argv)
#ifndef GCC_INSN_CODES_H\n\
#define GCC_INSN_CODES_H\n\
\n\
-enum insn_code {");
+enum insn_code {\n\
+ CODE_FOR_nothing = 0,\n");
/* Read the machine description. */
@@ -85,7 +86,7 @@ enum insn_code {");
gen_insn (desc, insn_code_number);
}
- puts (" CODE_FOR_nothing\n\
+ puts (" LAST_INSN_CODE\n\
};\n\
\n\
#endif /* GCC_INSN_CODES_H */");
diff --git a/gcc/genextract.c b/gcc/genextract.c
index 09e7cde8380..175febeb58f 100644
--- a/gcc/genextract.c
+++ b/gcc/genextract.c
@@ -201,7 +201,7 @@ VEC_safe_set_locstr (VEC(locstr,heap) **vp, unsigned int ix, char *str)
else
{
while (ix > VEC_length (locstr, *vp))
- VEC_safe_push (locstr, heap, *vp, 0);
+ VEC_safe_push (locstr, heap, *vp, (locstr) NULL);
VEC_safe_push (locstr, heap, *vp, str);
}
}
diff --git a/gcc/gengenrtl.c b/gcc/gengenrtl.c
index 67688aca98c..58d31425fb6 100644
--- a/gcc/gengenrtl.c
+++ b/gcc/gengenrtl.c
@@ -64,9 +64,9 @@ type_from_format (int c)
case 'E':
return "rtvec ";
case 't':
- return "union tree_node *"; /* tree - typedef not available */
+ return "tree ";
case 'B':
- return "struct basic_block_def *"; /* basic block - typedef not available */
+ return "basic_block ";
default:
gcc_unreachable ();
}
diff --git a/gcc/gengtype-lex.l b/gcc/gengtype-lex.l
index a71cce00f4f..5788a6a26d6 100644
--- a/gcc/gengtype-lex.l
+++ b/gcc/gengtype-lex.l
@@ -1,6 +1,6 @@
/* -*- indented-text -*- */
/* Process source files and output type information.
- Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -91,19 +91,6 @@ EOID [^[:alnum:]_]
BEGIN(in_struct);
return STATIC;
}
-
-^{HWS}DEF_VEC_[OP]/{EOID} {
- BEGIN(in_struct);
- return DEFVEC_OP;
-}
-^{HWS}DEF_VEC_I/{EOID} {
- BEGIN(in_struct);
- return DEFVEC_I;
-}
-^{HWS}DEF_VEC_ALLOC_[IOP]/{EOID} {
- BEGIN(in_struct);
- return DEFVEC_ALLOC;
-}
}
<in_struct>{
@@ -121,6 +108,7 @@ EOID [^[:alnum:]_]
"enum"/{EOID} { return ENUM; }
"ptr_alias"/{EOID} { return PTR_ALIAS; }
"nested_ptr"/{EOID} { return NESTED_PTR; }
+"user"/{EOID} { return USER_GTY; }
[0-9]+ { return NUM; }
"param"[0-9]*"_is"/{EOID} {
*yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
diff --git a/gcc/gengtype-parse.c b/gcc/gengtype-parse.c
index c0ad403d163..03ee7819b0f 100644
--- a/gcc/gengtype-parse.c
+++ b/gcc/gengtype-parse.c
@@ -1,5 +1,5 @@
/* Process source files and output type information.
- Copyright (C) 2006, 2007, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2010, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -77,9 +77,6 @@ static const char *const token_names[] = {
"struct",
"enum",
"VEC",
- "DEF_VEC_[OP]",
- "DEF_VEC_I",
- "DEF_VEC_ALLOC_[IOP]",
"...",
"ptr_alias",
"nested_ptr",
@@ -212,28 +209,70 @@ string_seq (void)
return s1;
}
-/* typedef_name: either an ID, or VEC(x,y) which is translated to VEC_x_y.
- Use only where VEC(x,y) is legitimate, i.e. in positions where a
- typedef name may appear. */
+
+/* The caller has detected a template declaration that starts
+ with TMPL_NAME. Parse up to the closing '>'. This recognizes
+ simple template declarations of the form ID<ID1,ID2,...,IDn>.
+ It does not try to parse anything more sophisticated than that.
+
+ Returns the template declaration string "ID<ID1,ID2,...,IDn>". */
+
+static const char *
+require_template_declaration (const char *tmpl_name)
+{
+ char *str;
+
+ /* Recognize the opening '<'. */
+ require ('<');
+ str = concat (tmpl_name, "<", (char *) 0);
+
+ /* Read the comma-separated list of identifiers. */
+ while (token () != '>')
+ {
+ const char *id = require2 (ID, ',');
+ if (id == NULL)
+ id = ",";
+ str = concat (str, id, (char *) 0);
+ }
+
+ /* Recognize the closing '>'. */
+ require ('>');
+ str = concat (str, ">", (char *) 0);
+
+ return str;
+}
+
+
+/* typedef_name: either an ID, or VEC(x,y), or a template type
+ specification of the form ID<t1,t2,...,tn>.
+
+ FIXME cxx-conversion. VEC(x,y) is currently translated to the
+ template 'vec_t<x>'. This is to support the transition to C++ and
+ avoid re-writing all the 'VEC(x,y)' declarations in the code. This
+ needs to be fixed when the branch is merged into trunk. */
+
static const char *
typedef_name (void)
{
if (token () == VEC_TOKEN)
{
- const char *c1, *c2, *r;
+ const char *c1, *r;
advance ();
require ('(');
c1 = require2 (ID, SCALAR);
require (',');
- c2 = require (ID);
+ require (ID);
require (')');
- r = concat ("VEC_", c1, "_", c2, (char *) 0);
+ r = concat ("vec_t<", c1, ">", (char *) 0);
free (CONST_CAST (char *, c1));
- free (CONST_CAST (char *, c2));
return r;
}
+
+ const char *id = require (ID);
+ if (token () == '<')
+ return require_template_declaration (id);
else
- return require (ID);
+ return id;
}
/* Absorb a sequence of tokens delimited by balanced ()[]{}. */
@@ -460,6 +499,10 @@ option (options_p prev)
advance ();
return nestedptr_optvalue (prev);
+ case USER_GTY:
+ advance ();
+ return create_string_option (prev, "user", "");
+
default:
parse_error ("expected an option keyword, have %s", print_cur_token ());
advance ();
@@ -694,6 +737,18 @@ struct_field_seq (void)
return nreverse_pairs (f);
}
+/* Return true if OPTS contain the option named STR. */
+
+static bool
+opts_have (options_p opts, const char *str)
+{
+ for (options_p opt = opts; opt; opt = opt->next)
+ if (strcmp (opt->name, str) == 0)
+ return true;
+ return false;
+}
+
+
/* This is called type(), but what it parses (sort of) is what C calls
declaration-specifiers and specifier-qualifier-list:
@@ -735,7 +790,7 @@ type (options_p *optsp, bool nested)
GTY_BEFORE_ID,
GTY_AFTER_ID
} is_gty = NO_GTY;
- bool is_union = (token () == UNION);
+ enum typekind kind = (token () == UNION) ? TYPE_UNION : TYPE_STRUCT;
advance ();
/* Top-level structures that are not explicitly tagged GTY(())
@@ -766,6 +821,7 @@ type (options_p *optsp, bool nested)
if (is_gty)
{
+ bool is_user_gty = opts_have (opts, "user");
if (token () == '{')
{
pair_p fields;
@@ -773,17 +829,28 @@ type (options_p *optsp, bool nested)
if (is_gty == GTY_AFTER_ID)
parse_error ("GTY must be specified before identifier");
- advance ();
- fields = struct_field_seq ();
- require ('}');
- return new_structure (s, is_union, &lexer_line, fields, opts);
+ if (!is_user_gty)
+ {
+ advance ();
+ fields = struct_field_seq ();
+ require ('}');
+ }
+ else
+ {
+ /* Do not look inside user defined structures. */
+ fields = NULL;
+ kind = TYPE_USER_STRUCT;
+ consume_balanced ('{', '}');
+ }
+
+ return new_structure (s, kind, &lexer_line, fields, opts);
}
}
else if (token () == '{')
consume_balanced ('{', '}');
if (opts)
*optsp = opts;
- return find_structure (s, is_union);
+ return find_structure (s, kind);
}
case ENUM:
@@ -891,55 +958,6 @@ extern_or_static (void)
}
}
-/* Definition of a generic VEC structure:
-
- 'DEF_VEC_[IPO]' '(' id ')' ';'
-
- Scalar VECs require slightly different treatment than otherwise -
- that's handled in note_def_vec, we just pass it along.*/
-static void
-def_vec (void)
-{
- bool is_scalar = (token () == DEFVEC_I);
- const char *type;
-
- require2 (DEFVEC_OP, DEFVEC_I);
- require ('(');
- type = require2 (ID, SCALAR);
- require (')');
- require (';');
-
- if (!type)
- return;
-
- note_def_vec (type, is_scalar, &lexer_line);
- note_def_vec_alloc (type, "none", &lexer_line);
-}
-
-/* Definition of an allocation strategy for a VEC structure:
-
- 'DEF_VEC_ALLOC_[IPO]' '(' id ',' id ')' ';'
-
- For purposes of gengtype, this just declares a wrapper structure. */
-static void
-def_vec_alloc (void)
-{
- const char *type, *astrat;
-
- require (DEFVEC_ALLOC);
- require ('(');
- type = require2 (ID, SCALAR);
- require (',');
- astrat = require (ID);
- require (')');
- require (';');
-
- if (!type || !astrat)
- return;
-
- note_def_vec_alloc (type, astrat, &lexer_line);
-}
-
/* Parse the file FNAME for GC-relevant declarations and definitions.
This is the only entry point to this file. */
void
@@ -964,15 +982,6 @@ parse_file (const char *fname)
typedef_decl ();
break;
- case DEFVEC_OP:
- case DEFVEC_I:
- def_vec ();
- break;
-
- case DEFVEC_ALLOC:
- def_vec_alloc ();
- break;
-
case EOF_TOKEN:
goto eof;
diff --git a/gcc/gengtype-state.c b/gcc/gengtype-state.c
index d7ea9b48d94..c94d50b1ef6 100644
--- a/gcc/gengtype-state.c
+++ b/gcc/gengtype-state.c
@@ -51,6 +51,7 @@ type_lineloc (const_type_p ty)
case TYPE_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
+ case TYPE_USER_STRUCT:
return CONST_CAST (struct fileloc*, &ty->u.s.line);
case TYPE_PARAM_STRUCT:
return CONST_CAST (struct fileloc*, &ty->u.param_struct.line);
@@ -798,6 +799,22 @@ write_state_struct_type (type_p current)
write_state_type (current->u.s.lang_struct);
}
+/* Write a GTY user-defined struct type. */
+static void
+write_state_user_struct_type (type_p current)
+{
+ DBGPRINTF ("user_struct type @ %p #%d '%s'", (void *) current,
+ current->state_number, current->u.s.tag);
+ fprintf (state_file, "user_struct ");
+ write_state_common_type_content (current);
+ if (current->u.s.tag != NULL)
+ write_state_a_string (current->u.s.tag);
+ else
+ fprintf (state_file, "nil");
+ write_state_fileloc (type_lineloc (current));
+ write_state_fields (current->u.s.fields);
+}
+
/* write a GTY union type. */
static void
write_state_union_type (type_p current)
@@ -828,7 +845,7 @@ write_state_lang_struct_type (type_p current)
DBGPRINTF ("homonymous #%d hty @ %p #%d '%s'", nbhomontype,
(void *) hty, hty->state_number, hty->u.s.tag);
/* Every member of the homonymous list should have the same tag. */
- gcc_assert (UNION_OR_STRUCT_P (hty));
+ gcc_assert (union_or_struct_p (hty));
gcc_assert (hty->u.s.lang_struct == current);
if (!homoname)
homoname = hty->u.s.tag;
@@ -947,6 +964,9 @@ write_state_type (type_p current)
case TYPE_STRUCT:
write_state_struct_type (current);
break;
+ case TYPE_USER_STRUCT:
+ write_state_user_struct_type (current);
+ break;
case TYPE_UNION:
write_state_union_type (current);
break;
@@ -1365,6 +1385,42 @@ read_state_struct_type (type_p type)
}
+/* Read a GTY-ed user-provided struct TYPE. */
+
+static void
+read_state_user_struct_type (type_p type)
+{
+ struct state_token_st *t0;
+
+ type->kind = TYPE_USER_STRUCT;
+ read_state_common_type_content (type);
+ t0 = peek_state_token (0);
+ if (state_token_kind (t0) == STOK_STRING)
+ {
+ if (state_token_is_name (t0, "nil"))
+ {
+ type->u.s.tag = NULL;
+ DBGPRINTF ("read anonymous struct type @%p #%d",
+ (void *) type, type->state_number);
+ }
+ else
+ {
+ type->u.s.tag = xstrdup (t0->stok_un.stok_string);
+ DBGPRINTF ("read struct type @%p #%d '%s'",
+ (void *) type, type->state_number, type->u.s.tag);
+ }
+
+ next_state_tokens (1);
+ read_state_fileloc (&(type->u.s.line));
+ read_state_fields (&(type->u.s.fields));
+ }
+ else
+ {
+ fatal_reading_state (t0, "Bad tag in user-struct type");
+ }
+}
+
+
/* Read a GTY-ed union type. */
static void
read_state_union_type (type_p type)
@@ -1655,6 +1711,12 @@ read_state_type (type_p *current)
next_state_tokens (1);
read_state_array_type (*current);
}
+ else if (state_token_is_name (t0, "user_struct"))
+ {
+ *current = XCNEW (struct type);
+ next_state_tokens (1);
+ read_state_user_struct_type (*current);
+ }
else
fatal_reading_state (t0, "bad type in (!type");
}
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index f5803b49983..d17f5bf44b4 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -1,5 +1,6 @@
/* Process source files and output type information.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+ 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -89,6 +90,10 @@ static const char *get_file_realbasename (const input_file *);
static int get_prefix_langdir_index (const char *);
static const char *get_file_langdir (const input_file *);
+
+static void dump_pair (int indent, pair_p p);
+static void dump_type (int indent, type_p p);
+static void dump_type_list (int indent, type_p p);
/* Nonzero iff an error has occurred. */
@@ -166,6 +171,7 @@ dbgprint_count_type_at (const char *fil, int lin, const char *msg, type_p t)
int nb_types = 0, nb_scalar = 0, nb_string = 0;
int nb_struct = 0, nb_union = 0, nb_array = 0, nb_pointer = 0;
int nb_lang_struct = 0, nb_param_struct = 0;
+ int nb_user_struct = 0;
type_p p = NULL;
for (p = t; p; p = p->next)
{
@@ -181,6 +187,9 @@ dbgprint_count_type_at (const char *fil, int lin, const char *msg, type_p t)
case TYPE_STRUCT:
nb_struct++;
break;
+ case TYPE_USER_STRUCT:
+ nb_user_struct++;
+ break;
case TYPE_UNION:
nb_union++;
break;
@@ -211,6 +220,8 @@ dbgprint_count_type_at (const char *fil, int lin, const char *msg, type_p t)
if (nb_lang_struct > 0 || nb_param_struct > 0)
fprintf (stderr, "@@%%@@ %d lang_structs, %d param_structs\n",
nb_lang_struct, nb_param_struct);
+ if (nb_user_struct > 0)
+ fprintf (stderr, "@@%%@@ %d user_structs\n", nb_user_struct);
fprintf (stderr, "\n");
}
#endif /* ENABLE_CHECKING */
@@ -539,6 +550,51 @@ do_scalar_typedef (const char *s, struct fileloc *pos)
do_typedef (s, &scalar_nonchar, pos);
}
+
+/* Define TYPE_NAME to be a user defined type at location POS. */
+
+static type_p
+create_user_defined_type (const char *type_name, struct fileloc *pos)
+{
+ type_p ty = find_structure (type_name, TYPE_USER_STRUCT);
+ ty->u.s.line = *pos;
+ ty->u.s.bitmap = get_lang_bitmap (pos->file);
+ do_typedef (type_name, ty, pos);
+
+ /* If TYPE_NAME specifies a template, create references to the types
+ in the template by pretending that each type is a field of TY.
+ This is needed to make sure that the types referenced by the
+ template are marked as used. */
+ char *str = xstrdup (type_name);
+ char *open_bracket = strchr (str, '<');
+ if (open_bracket)
+ {
+ /* We only accept simple template declarations (see
+ require_template_declaration), so we only need to parse a
+ comma-separated list of strings, implicitly assumed to
+ be type names. */
+ char *arg = open_bracket + 1;
+ char *type_id = strtok (arg, ",>");
+ pair_p fields = 0;
+ while (type_id)
+ {
+ /* Create a new field for every type found inside the template
+ parameter list. */
+ const char *field_name = xstrdup (type_id);
+ type_p arg_type = resolve_typedef (field_name, pos);
+ fields = create_field_at (fields, arg_type, field_name, 0, pos);
+ type_id = strtok (0, ",>");
+ }
+
+ /* Associate the field list to TY. */
+ ty->u.s.fields = fields;
+ }
+ free (str);
+
+ return ty;
+}
+
+
/* Return the type previously defined for S. Use POS to report errors. */
type_p
@@ -548,20 +604,27 @@ resolve_typedef (const char *s, struct fileloc *pos)
for (p = typedefs; p != NULL; p = p->next)
if (strcmp (p->name, s) == 0)
return p->type;
- error_at_line (pos, "unidentified type `%s'", s);
- return &scalar_nonchar; /* treat as "int" */
+
+ /* If we did not find a typedef registered, assume this is a name
+ for a user-defined type which will need to provide its own
+ marking functions. */
+ return create_user_defined_type (s, pos);
}
-/* Create and return a new structure with tag NAME (or a union iff
- ISUNION is nonzero), at POS with fields FIELDS and options O. */
+/* Create and return a new structure with tag NAME at POS with fields
+ FIELDS and options O. The KIND of structure must be one of
+ TYPE_STRUCT, TYPE_UNION or TYPE_USER_STRUCT. */
type_p
-new_structure (const char *name, int isunion, struct fileloc *pos,
+new_structure (const char *name, enum typekind kind, struct fileloc *pos,
pair_p fields, options_p o)
{
type_p si;
type_p s = NULL;
lang_bitmap bitmap = get_lang_bitmap (pos->file);
+ bool isunion = (kind == TYPE_UNION);
+
+ gcc_assert (union_or_struct_p (kind));
for (si = structures; si != NULL; si = si->next)
if (strcmp (name, si->u.s.tag) == 0 && UNION_P (si) == isunion)
@@ -621,7 +684,7 @@ new_structure (const char *name, int isunion, struct fileloc *pos,
error_at_line (&s->u.s.line, "previous definition here");
}
- s->kind = isunion ? TYPE_UNION : TYPE_STRUCT;
+ s->kind = kind;
s->u.s.tag = name;
s->u.s.line = *pos;
s->u.s.fields = fields;
@@ -633,14 +696,18 @@ new_structure (const char *name, int isunion, struct fileloc *pos,
return s;
}
-/* Return the previously-defined structure with tag NAME (or a union
- iff ISUNION is nonzero), or a new empty structure or union if none
- was defined previously. */
+/* Return the previously-defined structure or union with tag NAME,
+ or a new empty structure or union if none was defined previously.
+ The KIND of structure must be one of TYPE_STRUCT, TYPE_UNION or
+ TYPE_USER_STRUCT. */
type_p
-find_structure (const char *name, int isunion)
+find_structure (const char *name, enum typekind kind)
{
type_p s;
+ bool isunion = (kind == TYPE_UNION);
+
+ gcc_assert (union_or_struct_p (kind));
for (s = structures; s != NULL; s = s->next)
if (strcmp (name, s->u.s.tag) == 0 && UNION_P (s) == isunion)
@@ -651,7 +718,7 @@ find_structure (const char *name, int isunion)
s->next = structures;
s->state_number = -type_count;
structures = s;
- s->kind = isunion ? TYPE_UNION : TYPE_STRUCT;
+ s->kind = kind;
s->u.s.tag = name;
structures = s;
return s;
@@ -851,7 +918,7 @@ create_optional_field_ (pair_p next, type_p type, const char *name,
union_fields->opt =
create_string_option (union_fields->opt, "tag", "1");
union_type =
- new_structure (xasprintf ("%s_%d", "fake_union", id++), 1,
+ new_structure (xasprintf ("%s_%d", "fake_union", id++), TYPE_UNION,
&lexer_line, union_fields, NULL);
/* Create the field and give it the new fake union type. Add a "desc"
@@ -993,16 +1060,16 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
nodot = create_string_option (NULL, "dot", "");
- rtx_tp = create_pointer (find_structure ("rtx_def", 0));
- rtvec_tp = create_pointer (find_structure ("rtvec_def", 0));
- tree_tp = create_pointer (find_structure ("tree_node", 1));
- mem_attrs_tp = create_pointer (find_structure ("mem_attrs", 0));
+ rtx_tp = create_pointer (find_structure ("rtx_def", TYPE_STRUCT));
+ rtvec_tp = create_pointer (find_structure ("rtvec_def", TYPE_STRUCT));
+ tree_tp = create_pointer (find_structure ("tree_node", TYPE_UNION));
+ mem_attrs_tp = create_pointer (find_structure ("mem_attrs", TYPE_STRUCT));
reg_attrs_tp =
- create_pointer (find_structure ("reg_attrs", 0));
+ create_pointer (find_structure ("reg_attrs", TYPE_STRUCT));
basic_block_tp =
- create_pointer (find_structure ("basic_block_def", 0));
+ create_pointer (find_structure ("basic_block_def", TYPE_STRUCT));
constant_tp =
- create_pointer (find_structure ("constant_descriptor_rtx", 0));
+ create_pointer (find_structure ("constant_descriptor_rtx", TYPE_STRUCT));
scalar_tp = &scalar_nonchar; /* rtunion int */
{
@@ -1042,7 +1109,7 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
note_flds->opt =
create_string_option (nodot, "tag", note_insn_name[c]);
}
- note_union_tp = new_structure ("rtx_def_note_subunion", 1,
+ note_union_tp = new_structure ("rtx_def_note_subunion", TYPE_UNION,
&lexer_line, note_flds, NULL);
}
/* Create a type to represent the various forms of SYMBOL_REF_DATA. */
@@ -1052,7 +1119,7 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
sym_flds->opt = create_string_option (nodot, "default", "");
sym_flds = create_field (sym_flds, constant_tp, "rt_constant");
sym_flds->opt = create_string_option (nodot, "tag", "1");
- symbol_union_tp = new_structure ("rtx_def_symbol_subunion", 1,
+ symbol_union_tp = new_structure ("rtx_def_symbol_subunion", TYPE_UNION,
&lexer_line, sym_flds, NULL);
}
for (i = 0; i < NUM_RTX_CODE; i++)
@@ -1185,14 +1252,15 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
{
/* Add the "block_sym" field if SYMBOL_REF_HAS_BLOCK_INFO_P
holds. */
- type_p field_tp = find_structure ("block_symbol", 0);
+ type_p field_tp = find_structure ("block_symbol", TYPE_STRUCT);
subfields
= create_optional_field (subfields, field_tp, "block_sym",
"SYMBOL_REF_HAS_BLOCK_INFO_P (&%0)");
}
sname = xasprintf ("rtx_def_%s", rtx_name[i]);
- substruct = new_structure (sname, 0, &lexer_line, subfields, NULL);
+ substruct = new_structure (sname, TYPE_STRUCT, &lexer_line, subfields,
+ NULL);
ftag = xstrdup (rtx_name[i]);
for (nmindex = 0; nmindex < strlen (ftag); nmindex++)
@@ -1200,7 +1268,8 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
flds = create_field (flds, substruct, "");
flds->opt = create_string_option (nodot, "tag", ftag);
}
- return new_structure ("rtx_def_subunion", 1, &lexer_line, flds, nodot);
+ return new_structure ("rtx_def_subunion", TYPE_UNION, &lexer_line, flds,
+ nodot);
}
/* Handle `special("tree_exp")'. This is a special case for
@@ -1229,7 +1298,8 @@ adjust_field_tree_exp (type_p t, options_p opt ATTRIBUTE_UNUSED)
"TREE_OPERAND_LENGTH ((tree) &%0)");
flds->opt = create_string_option (flds->opt, "default", "");
- return new_structure ("tree_exp_subunion", 1, &lexer_line, flds, nodot);
+ return new_structure ("tree_exp_subunion", TYPE_UNION, &lexer_line, flds,
+ nodot);
}
/* Perform any special processing on a type T, about to become the type
@@ -1256,7 +1326,17 @@ adjust_field_type (type_p t, options_p opt)
for (; opt; opt = opt->next)
if (strcmp (opt->name, "length") == 0)
- length_p = 1;
+ {
+ if (length_p)
+ error_at_line (&lexer_line, "duplicate `%s' option", opt->name);
+ if (t->u.p->kind == TYPE_SCALAR || t->u.p->kind == TYPE_STRING)
+ {
+ error_at_line (&lexer_line,
+ "option `%s' may not be applied to "
+ "arrays of atomic types", opt->name);
+ }
+ length_p = 1;
+ }
else if ((strcmp (opt->name, "param_is") == 0
|| (strncmp (opt->name, "param", 5) == 0
&& ISDIGIT (opt->name[5])
@@ -1265,8 +1345,8 @@ adjust_field_type (type_p t, options_p opt)
{
int num = ISDIGIT (opt->name[5]) ? opt->name[5] - '0' : 0;
- if (!UNION_OR_STRUCT_P (t)
- && (t->kind != TYPE_POINTER || !UNION_OR_STRUCT_P (t->u.p)))
+ if (!union_or_struct_p (t)
+ && (t->kind != TYPE_POINTER || !union_or_struct_p (t->u.p)))
{
error_at_line (&lexer_line,
"option `%s' may only be applied to structures or structure pointers",
@@ -1359,6 +1439,7 @@ set_gc_used_type (type_p t, enum gc_used_enum level, type_p param[NUM_PARAM])
{
case TYPE_STRUCT:
case TYPE_UNION:
+ case TYPE_USER_STRUCT:
{
pair_p f;
int dummy;
@@ -1458,7 +1539,7 @@ static outf_p
create_file (const char *name, const char *oname)
{
static const char *const hdr[] = {
- " Copyright (C) 2004, 2007, 2009 Free Software Foundation, Inc.\n",
+ " Copyright (C) 2004, 2007, 2009, 2012 Free Software Foundation, Inc.\n",
"\n",
"This file is part of GCC.\n",
"\n",
@@ -2171,7 +2252,6 @@ close_output_files (void)
for (of = output_files; of; of = of->next)
{
-
if (!is_file_equal (of))
{
FILE *newfile = NULL;
@@ -2298,8 +2378,38 @@ struct walk_type_data
bool fn_wants_lvalue;
bool in_record_p;
int loopcounter;
+ bool in_ptr_field;
+ bool have_this_obj;
};
+
+/* Given a string TYPE_NAME, representing a C++ typename, return a valid
+ pre-processor identifier to use in a #define directive. This replaces
+ special characters used in C++ identifiers like '>', '<' and ':' with
+ '_'.
+
+ If no C++ special characters are found in TYPE_NAME, return
+ TYPE_NAME. Otherwise, return a copy of TYPE_NAME with the special
+ characters replaced with '_'. In this case, the caller is
+ responsible for freeing the allocated string. */
+
+static const char *
+filter_type_name (const char *type_name)
+{
+ if (strchr (type_name, '<') || strchr (type_name, ':'))
+ {
+ size_t i;
+ char *s = xstrdup (type_name);
+ for (i = 0; i < strlen (s); i++)
+ if (s[i] == '<' || s[i] == '>' || s[i] == ':')
+ s[i] = '_';
+ return s;
+ }
+ else
+ return type_name;
+}
+
+
/* Print a mangled name representing T to OF. */
static void
@@ -2326,8 +2436,14 @@ output_mangled_typename (outf_p of, const_type_p t)
case TYPE_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
- oprintf (of, "%lu%s", (unsigned long) strlen (t->u.s.tag),
- t->u.s.tag);
+ case TYPE_USER_STRUCT:
+ {
+ const char *id_for_tag = filter_type_name (t->u.s.tag);
+ oprintf (of, "%lu%s", (unsigned long) strlen (id_for_tag),
+ id_for_tag);
+ if (id_for_tag != t->u.s.tag)
+ free (CONST_CAST(char *, id_for_tag));
+ }
break;
case TYPE_PARAM_STRUCT:
{
@@ -2384,6 +2500,7 @@ output_escaped_param (struct walk_type_data *d, const char *param,
}
}
+
/* Call D->PROCESS_FIELD for every field (or subfield) of D->VAL,
which is of type T. Write code to D->OF to constrain execution (at
the point that D->PROCESS_FIELD is called) to the appropriate
@@ -2464,7 +2581,7 @@ walk_type (type_p t, struct walk_type_data *d)
if (pointer_p)
t = t->u.p;
- if (!UNION_OR_STRUCT_P (t))
+ if (!union_or_struct_p (t))
error_at_line (d->line, "`use_params' option on unimplemented type");
else
t = find_param_structure (t, d->param);
@@ -2492,7 +2609,7 @@ walk_type (type_p t, struct walk_type_data *d)
}
if (maybe_undef_p
- && (t->kind != TYPE_POINTER || !UNION_OR_STRUCT_P (t->u.p)))
+ && (t->kind != TYPE_POINTER || !union_or_struct_p (t->u.p)))
{
error_at_line (d->line,
"field `%s' has invalid option `maybe_undef_p'\n",
@@ -2500,7 +2617,7 @@ walk_type (type_p t, struct walk_type_data *d)
return;
}
- if (atomic_p && (t->kind != TYPE_POINTER))
+ if (atomic_p && (t->kind != TYPE_POINTER) && (t->kind != TYPE_STRING))
{
error_at_line (d->line, "field `%s' has invalid option `atomic'\n", d->val);
return;
@@ -2515,6 +2632,7 @@ walk_type (type_p t, struct walk_type_data *d)
case TYPE_POINTER:
{
+ d->in_ptr_field = true;
if (maybe_undef_p && t->u.p->u.s.line.file == NULL)
{
oprintf (d->of, "%*sgcc_assert (!%s);\n", d->indent, "", d->val);
@@ -2542,7 +2660,7 @@ walk_type (type_p t, struct walk_type_data *d)
if (!length)
{
- if (!UNION_OR_STRUCT_P (t->u.p)
+ if (!union_or_struct_p (t->u.p)
&& t->u.p->kind != TYPE_PARAM_STRUCT)
{
error_at_line (d->line,
@@ -2555,7 +2673,7 @@ walk_type (type_p t, struct walk_type_data *d)
{
const char *oldprevval2 = d->prev_val[2];
- if (!UNION_OR_STRUCT_P (nested_ptr_d->type))
+ if (!union_or_struct_p (nested_ptr_d->type))
{
error_at_line (d->line,
"field `%s' has invalid "
@@ -2613,6 +2731,9 @@ walk_type (type_p t, struct walk_type_data *d)
output_escaped_param (d, length, "length");
else
oprintf (d->of, "l%d", loopcounter);
+ if (d->have_this_obj)
+ /* Try to unswitch loops (see PR53880). */
+ oprintf (d->of, ") && ((void *)%s == this_obj", oldval);
oprintf (d->of, "); i%d++) {\n", loopcounter);
d->indent += 2;
d->val = newval = xasprintf ("%s[i%d]", oldval, loopcounter);
@@ -2629,6 +2750,7 @@ walk_type (type_p t, struct walk_type_data *d)
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
}
+ d->in_ptr_field = false;
}
break;
@@ -2912,6 +3034,10 @@ walk_type (type_p t, struct walk_type_data *d)
}
break;
+ case TYPE_USER_STRUCT:
+ d->process_field (t, d);
+ break;
+
default:
gcc_unreachable ();
}
@@ -2969,7 +3095,7 @@ write_types_process_field (type_p f, const struct walk_type_data *d)
oprintf (d->of, ", gt_e_");
output_mangled_typename (d->of, f);
}
- else if (UNION_OR_STRUCT_P (f) && f->u.p->u.s.line.file != NULL)
+ else if (union_or_struct_p (f) && f->u.p->u.s.line.file != NULL)
{
oprintf (d->of, ", gt_ggc_e_");
output_mangled_typename (d->of, f);
@@ -2989,13 +3115,27 @@ write_types_process_field (type_p f, const struct walk_type_data *d)
case TYPE_UNION:
case TYPE_LANG_STRUCT:
case TYPE_PARAM_STRUCT:
- oprintf (d->of, "%*sgt_%s_", d->indent, "", wtd->prefix);
- output_mangled_typename (d->of, f);
- oprintf (d->of, " (%s%s);\n", cast, d->val);
- if (d->reorder_fn && wtd->reorder_note_routine)
- oprintf (d->of, "%*s%s (%s%s, %s%s, %s);\n", d->indent, "",
- wtd->reorder_note_routine, cast, d->val, cast, d->val,
- d->reorder_fn);
+ case TYPE_USER_STRUCT:
+ if (f->kind == TYPE_USER_STRUCT && !d->in_ptr_field)
+ {
+ /* If F is a user-defined type and the field is not a
+ pointer to the type, then we should not generate the
+ standard pointer-marking code. All we need to do is call
+ the user-provided marking function to process the fields
+ of F. */
+ oprintf (d->of, "%*sgt_%sx (&(%s));\n", d->indent, "", wtd->prefix,
+ d->val);
+ }
+ else
+ {
+ oprintf (d->of, "%*sgt_%s_", d->indent, "", wtd->prefix);
+ output_mangled_typename (d->of, f);
+ oprintf (d->of, " (%s%s);\n", cast, d->val);
+ if (d->reorder_fn && wtd->reorder_note_routine)
+ oprintf (d->of, "%*s%s (%s%s, %s%s, %s);\n", d->indent, "",
+ wtd->reorder_note_routine, cast, d->val, cast, d->val,
+ d->reorder_fn);
+ }
break;
case TYPE_SCALAR:
@@ -3016,7 +3156,7 @@ output_type_enum (outf_p of, type_p s)
oprintf (of, ", gt_e_");
output_mangled_typename (of, s);
}
- else if (UNION_OR_STRUCT_P (s) && s->u.s.line.file != NULL)
+ else if (union_or_struct_p (s) && s->u.s.line.file != NULL)
{
oprintf (of, ", gt_ggc_e_");
output_mangled_typename (of, s);
@@ -3034,13 +3174,13 @@ get_output_file_for_structure (const_type_p s, type_p *param)
const input_file *fn;
int i;
- gcc_assert (UNION_OR_STRUCT_P (s));
+ gcc_assert (union_or_struct_p (s));
fn = s->u.s.line.file;
/* This is a hack, and not the good kind either. */
for (i = NUM_PARAM - 1; i >= 0; i--)
if (param && param[i] && param[i]->kind == TYPE_POINTER
- && UNION_OR_STRUCT_P (param[i]->u.p))
+ && union_or_struct_p (param[i]->u.p))
fn = param[i]->u.p->u.s.line.file;
/* The call to get_output_file_with_visibility may update fn by
@@ -3048,13 +3188,185 @@ get_output_file_for_structure (const_type_p s, type_p *param)
return get_output_file_with_visibility (CONST_CAST (input_file*, fn));
}
+
+/* Returns the specifier keyword for a string or union type S, empty string
+ otherwise. */
+
+static const char *
+get_type_specifier (const type_p s)
+{
+ if (s->kind == TYPE_STRUCT)
+ return "struct ";
+ else if (s->kind == TYPE_LANG_STRUCT)
+ return get_type_specifier (s->u.s.lang_struct);
+ else if (s->kind == TYPE_UNION)
+ return "union ";
+ return "";
+}
+
+
+/* Emits a declaration for type TY (assumed to be a union or a
+ structure) on stream OUT. */
+
+static void
+write_type_decl (outf_p out, type_p ty)
+{
+ if (union_or_struct_p (ty))
+ oprintf (out, "%s%s", get_type_specifier (ty), ty->u.s.tag);
+ else if (ty->kind == TYPE_SCALAR)
+ {
+ if (ty->u.scalar_is_char)
+ oprintf (out, "const char");
+ else
+ oprintf (out, "void");
+ }
+ else if (ty->kind == TYPE_POINTER)
+ {
+ write_type_decl (out, ty->u.p);
+ oprintf (out, " *");
+ }
+ else if (ty->kind == TYPE_ARRAY)
+ {
+ write_type_decl (out, ty->u.a.p);
+ oprintf (out, " *");
+ }
+ else if (ty->kind == TYPE_STRING)
+ {
+ oprintf (out, "const char *");
+ }
+ else
+ gcc_unreachable ();
+}
+
+
+/* Write on OF the name of the marker function for structure S. PREFIX
+ is the prefix to use (to distinguish ggc from pch markers). */
+
+static void
+write_marker_function_name (outf_p of, type_p s, const char *prefix)
+{
+ if (union_or_struct_p (s))
+ {
+ const char *id_for_tag = filter_type_name (s->u.s.tag);
+ oprintf (of, "gt_%sx_%s", prefix, id_for_tag);
+ if (id_for_tag != s->u.s.tag)
+ free (CONST_CAST(char *, id_for_tag));
+ }
+ else if (s->kind == TYPE_PARAM_STRUCT)
+ {
+ oprintf (of, "gt_%s_", prefix);
+ output_mangled_typename (of, s);
+ }
+ else
+ gcc_unreachable ();
+}
+
+
+/* Write on OF a user-callable routine to act as an entry point for
+ the marking routine for S, generated by write_func_for_structure.
+ PREFIX is the prefix to use to distinguish ggc and pch markers. */
+
+static void
+write_user_func_for_structure_ptr (outf_p of, type_p s, const char *prefix)
+{
+ /* Parameterized structures are not supported in user markers. There
+ is no way for the marker function to know which specific type
+ to use to generate the call to the void * entry point. For
+ instance, a marker for struct htab may need to call different
+ routines to mark the fields, depending on the paramN_is attributes.
+
+ A user-defined marker that accepts 'struct htab' as its argument
+ would not know which variant to call. Generating several entry
+ points accepting 'struct htab' would cause multiply-defined
+ errors during compilation. */
+ gcc_assert (union_or_struct_p (s));
+
+ type_p alias_of = NULL;
+ for (options_p opt = s->u.s.opt; opt; opt = opt->next)
+ if (strcmp (opt->name, "ptr_alias") == 0)
+ {
+ /* ALIAS_OF is set if ORIG_S is marked "ptr_alias". This means that
+ we do not generate marking code for ORIG_S here. Instead, a
+ forwarder #define in gtype-desc.h will cause every call to its
+ marker to call the target of this alias.
+
+ However, we still want to create a user entry code for the
+ aliased type. So, if ALIAS_OF is set, we only generate the
+ user-callable marker function. */
+ alias_of = opt->info.type;
+ break;
+ }
+
+ oprintf (of, "\nvoid\n");
+ oprintf (of, "gt_%sx (", prefix);
+ write_type_decl (of, s);
+ oprintf (of, " *& x)\n");
+ oprintf (of, "{\n");
+ oprintf (of, " if (x)\n ");
+ write_marker_function_name (of, alias_of ? alias_of : s, prefix);
+ oprintf (of, " ((void *) x);\n");
+ oprintf (of, "}\n");
+}
+
+
+/* Write a function to mark all the fields of type S on OF. PREFIX
+ and D are as in write_user_marking_functions. */
+
+static void
+write_user_func_for_structure_body (type_p s, const char *prefix,
+ struct walk_type_data *d)
+{
+ oprintf (d->of, "\nvoid\n");
+ oprintf (d->of, "gt_%sx (", prefix);
+ write_type_decl (d->of, s);
+ oprintf (d->of, "& x_r ATTRIBUTE_UNUSED)\n");
+ oprintf (d->of, "{\n");
+ oprintf (d->of, " ");
+ write_type_decl (d->of, s);
+ oprintf (d->of, " * ATTRIBUTE_UNUSED x = &x_r;\n");
+ d->val = "(*x)";
+ d->indent = 2;
+ walk_type (s, d);
+ oprintf (d->of, "}\n");
+}
+
+
+/* Emit the user-callable functions needed to mark all the types used
+ by the user structure S. PREFIX is the prefix to use to
+ distinguish ggc and pch markers. D contains data needed to pass to
+ walk_type when traversing the fields of a type.
+
+ For every type T referenced by S, two routines are generated: one
+ that takes 'T *', marks the pointer and calls the second routine,
+ which just marks the fields of T. */
+
+static void
+write_user_marking_functions (type_p s, const char *prefix,
+ struct walk_type_data *d)
+{
+ gcc_assert (s->kind == TYPE_USER_STRUCT);
+
+ for (pair_p fld = s->u.s.fields; fld; fld = fld->next)
+ {
+ type_p fld_type = fld->type;
+ if (fld_type->kind == TYPE_POINTER)
+ {
+ type_p pointed_to_type = fld_type->u.p;
+ if (union_or_struct_p (pointed_to_type))
+ write_user_func_for_structure_ptr (d->of, pointed_to_type, prefix);
+ }
+ else if (union_or_struct_p (fld_type))
+ write_user_func_for_structure_body (fld_type, prefix, d);
+ }
+}
+
+
/* For S, a structure that's part of ORIG_S, and using parameters
PARAM, write out a routine that:
- Takes a parameter, a void * but actually of type *S
- If SEEN_ROUTINE returns nonzero, calls write_types_process_field on each
field of S or its substructures and (in some cases) things
- that are pointed to by S.
-*/
+ that are pointed to by S. */
static void
write_func_for_structure (type_p orig_s, type_p s, type_p *param,
@@ -3100,25 +3412,23 @@ write_func_for_structure (type_p orig_s, type_p s, type_p *param,
d.prev_val[1] = "not valid postage"; /* Guarantee an error. */
d.prev_val[3] = "x";
d.val = "(*x)";
+ d.have_this_obj = false;
oprintf (d.of, "\n");
oprintf (d.of, "void\n");
- if (param == NULL)
- oprintf (d.of, "gt_%sx_%s", wtd->prefix, orig_s->u.s.tag);
- else
- {
- oprintf (d.of, "gt_%s_", wtd->prefix);
- output_mangled_typename (d.of, orig_s);
- }
+ write_marker_function_name (d.of, orig_s, wtd->prefix);
oprintf (d.of, " (void *x_p)\n");
- oprintf (d.of, "{\n");
- oprintf (d.of, " %s %s * %sx = (%s %s *)x_p;\n",
- s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag,
- chain_next == NULL ? "const " : "",
- s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag);
+ oprintf (d.of, "{\n ");
+ write_type_decl (d.of, s);
+ oprintf (d.of, " * %sx = (", chain_next == NULL ? "const " : "");
+ write_type_decl (d.of, s);
+ oprintf (d.of, " *)x_p;\n");
if (chain_next != NULL)
- oprintf (d.of, " %s %s * xlimit = x;\n",
- s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag);
+ {
+ oprintf (d.of, " ");
+ write_type_decl (d.of, s);
+ oprintf (d.of, " * xlimit = x;\n");
+ }
if (chain_next == NULL)
{
oprintf (d.of, " if (%s (x", wtd->marker_routine);
@@ -3201,9 +3511,17 @@ write_func_for_structure (type_p orig_s, type_p s, type_p *param,
{
oprintf (d.of, " %s (x);\n", mark_hook_name);
}
+
d.prev_val[2] = "*x";
d.indent = 6;
- walk_type (s, &d);
+ if (orig_s->kind != TYPE_USER_STRUCT)
+ walk_type (s, &d);
+ else
+ {
+ /* User structures have no fields to walk. Simply generate a call
+ to the user-provided structure marker. */
+ oprintf (d.of, "%*sgt_%sx (x);\n", d.indent, "", wtd->prefix);
+ }
if (chain_next != NULL)
{
@@ -3216,8 +3534,12 @@ write_func_for_structure (type_p orig_s, type_p s, type_p *param,
if (chain_circular != NULL)
oprintf (d.of, " while (x != xlimit);\n");
oprintf (d.of, "}\n");
+
+ if (orig_s->kind == TYPE_USER_STRUCT)
+ write_user_marking_functions (orig_s, wtd->prefix, &d);
}
+
/* Write out marker routines for STRUCTURES and PARAM_STRUCTS. */
static void
@@ -3228,9 +3550,10 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
type_p s;
oprintf (output_header, "\n/* %s*/\n", wtd->comment);
+
/* We first emit the macros and the declarations. Functions' code is
emitted afterwards. This is needed in plugin mode. */
- oprintf (output_header, "/* macros and declarations */\n");
+ oprintf (output_header, "/* Macros and declarations. */\n");
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO || s->gc_used == GC_MAYBE_POINTED_TO)
{
@@ -3239,12 +3562,14 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
if (s->gc_used == GC_MAYBE_POINTED_TO && s->u.s.line.file == NULL)
continue;
+ const char *s_id_for_tag = filter_type_name (s->u.s.tag);
+
oprintf (output_header, "#define gt_%s_", wtd->prefix);
output_mangled_typename (output_header, s);
oprintf (output_header, "(X) do { \\\n");
oprintf (output_header,
" if (X != NULL) gt_%sx_%s (X);\\\n", wtd->prefix,
- s->u.s.tag);
+ s_id_for_tag);
oprintf (output_header, " } while (0)\n");
for (opt = s->u.s.opt; opt; opt = opt->next)
@@ -3254,9 +3579,14 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
const_type_p const t = (const_type_p) opt->info.type;
if (t->kind == TYPE_STRUCT
|| t->kind == TYPE_UNION || t->kind == TYPE_LANG_STRUCT)
- oprintf (output_header,
- "#define gt_%sx_%s gt_%sx_%s\n",
- wtd->prefix, s->u.s.tag, wtd->prefix, t->u.s.tag);
+ {
+ const char *t_id_for_tag = filter_type_name (t->u.s.tag);
+ oprintf (output_header,
+ "#define gt_%sx_%s gt_%sx_%s\n",
+ wtd->prefix, s->u.s.tag, wtd->prefix, t_id_for_tag);
+ if (t_id_for_tag != t->u.s.tag)
+ free (CONST_CAST(char *, t_id_for_tag));
+ }
else
error_at_line (&s->u.s.line,
"structure alias is not a structure");
@@ -3268,7 +3598,10 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
/* Declare the marker procedure only once. */
oprintf (output_header,
"extern void gt_%sx_%s (void *);\n",
- wtd->prefix, s->u.s.tag);
+ wtd->prefix, s_id_for_tag);
+
+ if (s_id_for_tag != s->u.s.tag)
+ free (CONST_CAST(char *, s_id_for_tag));
if (s->u.s.line.file == NULL)
{
@@ -3390,11 +3723,96 @@ static const struct write_types_data pch_wtd = {
/* Write out the local pointer-walking routines. */
+/* process_field routine for local pointer-walking for user-callable
+ routines. The difference between this and
+ write_types_local_process_field is that, in this case, we do not
+ need to check whether the given pointer matches the address of the
+ parent structure. This check was already generated by the call
+ to gt_pch_nx in the main gt_pch_p_*() function that is calling
+ this code. */
+
+static void
+write_types_local_user_process_field (type_p f, const struct walk_type_data *d)
+{
+ switch (f->kind)
+ {
+ case TYPE_POINTER:
+ case TYPE_STRUCT:
+ case TYPE_UNION:
+ case TYPE_LANG_STRUCT:
+ case TYPE_PARAM_STRUCT:
+ case TYPE_STRING:
+ oprintf (d->of, "%*s op (&(%s), cookie);\n", d->indent, "", d->val);
+ break;
+
+ case TYPE_USER_STRUCT:
+ if (d->in_ptr_field)
+ oprintf (d->of, "%*s op (&(%s), cookie);\n", d->indent, "", d->val);
+ else
+ oprintf (d->of, "%*s gt_pch_nx (&(%s), op, cookie);\n",
+ d->indent, "", d->val);
+ break;
+
+ case TYPE_SCALAR:
+ break;
+
+ default:
+ gcc_unreachable ();
+ }
+}
+
+
+/* Write a function to PCH walk all the fields of type S on OF.
+ D contains data needed by walk_type to recurse into the fields of S. */
+
+static void
+write_pch_user_walking_for_structure_body (type_p s, struct walk_type_data *d)
+{
+ oprintf (d->of, "\nvoid\n");
+ oprintf (d->of, "gt_pch_nx (");
+ write_type_decl (d->of, s);
+ oprintf (d->of, "* x ATTRIBUTE_UNUSED,\n"
+ "\tATTRIBUTE_UNUSED gt_pointer_operator op,\n"
+ "\tATTRIBUTE_UNUSED void *cookie)\n");
+ oprintf (d->of, "{\n");
+ d->val = "(*x)";
+ d->indent = 2;
+ d->process_field = write_types_local_user_process_field;
+ walk_type (s, d);
+ oprintf (d->of, "}\n");
+}
+
+
+/* Emit the user-callable functions needed to mark all the types used
+ by the user structure S. PREFIX is the prefix to use to
+ distinguish ggc and pch markers. CHAIN_NEXT is set if S has the
+ chain_next option defined. D contains data needed to pass to
+ walk_type when traversing the fields of a type.
+
+ For every type T referenced by S, two routines are generated: one
+ that takes 'T *', marks the pointer and calls the second routine,
+ which just marks the fields of T. */
+
+static void
+write_pch_user_walking_functions (type_p s, struct walk_type_data *d)
+{
+ gcc_assert (s->kind == TYPE_USER_STRUCT);
+
+ for (pair_p fld = s->u.s.fields; fld; fld = fld->next)
+ {
+ type_p fld_type = fld->type;
+ if (union_or_struct_p (fld_type))
+ write_pch_user_walking_for_structure_body (fld_type, d);
+ }
+}
+
+
/* process_field routine for local pointer-walking. */
static void
write_types_local_process_field (type_p f, const struct walk_type_data *d)
{
+ gcc_assert (d->have_this_obj);
switch (f->kind)
{
case TYPE_POINTER:
@@ -3408,6 +3826,16 @@ write_types_local_process_field (type_p f, const struct walk_type_data *d)
oprintf (d->of, "%*s op (&(%s), cookie);\n", d->indent, "", d->val);
break;
+ case TYPE_USER_STRUCT:
+ oprintf (d->of, "%*sif ((void *)(%s) == this_obj)\n", d->indent, "",
+ d->prev_val[3]);
+ if (d->in_ptr_field)
+ oprintf (d->of, "%*s op (&(%s), cookie);\n", d->indent, "", d->val);
+ else
+ oprintf (d->of, "%*s gt_pch_nx (&(%s), op, cookie);\n",
+ d->indent, "", d->val);
+ break;
+
case TYPE_SCALAR:
break;
@@ -3416,6 +3844,7 @@ write_types_local_process_field (type_p f, const struct walk_type_data *d)
}
}
+
/* For S, a structure that's part of ORIG_S, and using parameters
PARAM, write out a routine that:
- Is of type gt_note_pointers
@@ -3449,12 +3878,29 @@ write_local_func_for_structure (const_type_p orig_s, type_p s, type_p *param)
"\tATTRIBUTE_UNUSED gt_pointer_operator op,\n"
"\tATTRIBUTE_UNUSED void *cookie)\n");
oprintf (d.of, "{\n");
- oprintf (d.of, " %s %s * const x ATTRIBUTE_UNUSED = (%s %s *)x_p;\n",
+ oprintf (d.of, " %s %s * x ATTRIBUTE_UNUSED = (%s %s *)x_p;\n",
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag,
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag);
d.indent = 2;
- walk_type (s, &d);
+ d.have_this_obj = true;
+
+ if (s->kind != TYPE_USER_STRUCT)
+ walk_type (s, &d);
+ else
+ {
+ /* User structures have no fields to walk. Simply generate a
+ call to the user-provided PCH walker. */
+ oprintf (d.of, "%*sif ((void *)(%s) == this_obj)\n", d.indent, "",
+ d.prev_val[3]);
+ oprintf (d.of, "%*s gt_pch_nx (&(%s), op, cookie);\n",
+ d.indent, "", d.val);
+ }
+
oprintf (d.of, "}\n");
+
+ /* Write user-callable entry points for the PCH walking routines. */
+ if (orig_s->kind == TYPE_USER_STRUCT)
+ write_pch_user_walking_functions (s, &d);
}
/* Write out local marker routines for STRUCTURES and PARAM_STRUCTS. */
@@ -3466,6 +3912,7 @@ write_local (outf_p output_header, type_p structures, type_p param_structs)
if (!output_header)
return;
+
oprintf (output_header, "\n/* Local pointer-walking routines. */\n");
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO || s->gc_used == GC_MAYBE_POINTED_TO)
@@ -3545,15 +3992,15 @@ write_local (outf_p output_header, type_p structures, type_p param_structs)
/* Nonzero if S is a type for which typed GC allocators should be output. */
#define USED_BY_TYPED_GC_P(s) \
- (((s->kind == TYPE_POINTER) \
- && ((s->u.p->gc_used == GC_POINTED_TO) \
- || (s->u.p->gc_used == GC_USED))) \
- || (UNION_OR_STRUCT_P (s) && \
- (((s)->gc_used == GC_POINTED_TO) \
- || ((s)->gc_used == GC_MAYBE_POINTED_TO \
- && s->u.s.line.file != NULL) \
- || ((s)->gc_used == GC_USED \
- && strncmp (s->u.s.tag, "anonymous", strlen ("anonymous"))))))
+ ((s->kind == TYPE_POINTER \
+ && (s->u.p->gc_used == GC_POINTED_TO \
+ || s->u.p->gc_used == GC_USED)) \
+ || (union_or_struct_p (s) \
+ && ((s)->gc_used == GC_POINTED_TO \
+ || ((s)->gc_used == GC_MAYBE_POINTED_TO \
+ && s->u.s.line.file != NULL) \
+ || ((s)->gc_used == GC_USED \
+ && strncmp (s->u.s.tag, "anonymous", strlen ("anonymous"))))))
/* Write out the 'enum' definition for gt_types_enum. */
@@ -3575,7 +4022,7 @@ write_enum_defn (type_p structures, type_p param_structs)
nbstruct++;
DBGPRINTF ("write_enum_defn s @ %p nbstruct %d",
(void*) s, nbstruct);
- if (UNION_OR_STRUCT_P (s))
+ if (union_or_struct_p (s))
DBGPRINTF ("write_enum_defn s %p #%d is unionorstruct tagged %s",
(void*) s, nbstruct, s->u.s.tag);
oprintf (header_file, " gt_ggc_e_");
@@ -3861,6 +4308,11 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
}
break;
+ case TYPE_USER_STRUCT:
+ write_root (f, v, type->u.a.p, name, has_length, line, if_marked,
+ emit_pch);
+ break;
+
case TYPE_POINTER:
{
type_p tp;
@@ -3870,13 +4322,16 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
tp = type->u.p;
- if (!has_length && UNION_OR_STRUCT_P (tp))
+ if (!has_length && union_or_struct_p (tp))
{
- oprintf (f, " &gt_ggc_mx_%s,\n", tp->u.s.tag);
+ const char *id_for_tag = filter_type_name (tp->u.s.tag);
+ oprintf (f, " &gt_ggc_mx_%s,\n", id_for_tag);
if (emit_pch)
- oprintf (f, " &gt_pch_nx_%s", tp->u.s.tag);
+ oprintf (f, " &gt_pch_nx_%s", id_for_tag);
else
oprintf (f, " NULL");
+ if (id_for_tag != tp->u.s.tag)
+ free (CONST_CAST(char *, id_for_tag));
}
else if (!has_length && tp->kind == TYPE_PARAM_STRUCT)
{
@@ -3891,7 +4346,7 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
oprintf (f, ",\n NULL");
}
else if (has_length
- && (tp->kind == TYPE_POINTER || UNION_OR_STRUCT_P (tp)))
+ && (tp->kind == TYPE_POINTER || union_or_struct_p (tp)))
{
oprintf (f, " &gt_ggc_ma_%s,\n", name);
if (emit_pch)
@@ -3962,6 +4417,7 @@ write_array (outf_p f, pair_p v, const struct write_types_data *wtd)
oprintf (d.of, "{\n");
d.prev_val[0] = d.prev_val[1] = d.prev_val[2] = d.val = v->name;
d.process_field = write_types_local_process_field;
+ d.have_this_obj = true;
walk_type (v->type, &d);
oprintf (f, "}\n\n");
}
@@ -3973,6 +4429,7 @@ write_array (outf_p f, pair_p v, const struct write_types_data *wtd)
oprintf (f, "{\n");
d.prev_val[0] = d.prev_val[1] = d.prev_val[2] = d.val = v->name;
d.process_field = write_types_process_field;
+ d.have_this_obj = false;
walk_type (v->type, &d);
free (prevval3);
oprintf (f, "}\n\n");
@@ -4132,7 +4589,8 @@ write_roots (pair_p variables, bool emit_pch)
continue;
if (v->type->kind != TYPE_POINTER
|| v->type->u.p->kind != TYPE_PARAM_STRUCT
- || v->type->u.p->u.param_struct.stru != find_structure ("htab", 0))
+ || v->type->u.p->u.param_struct.stru != find_structure ("htab",
+ TYPE_STRUCT))
{
error_at_line (&v->line,
"if_marked option used but not hash table");
@@ -4235,96 +4693,6 @@ write_roots (pair_p variables, bool emit_pch)
finish_root_table (flp, "pch_rs", "LAST_GGC_ROOT_TAB", "ggc_root_tab",
"gt_pch_scalar_rtab");
}
-/* Record the definition of the vec_prefix structure, as defined in vec.h:
-
- struct vec_prefix GTY(()) {
- unsigned num;
- unsigned alloc;
- }; */
-static type_p
-vec_prefix_type (void)
-{
- static type_p prefix_type = NULL;
- if (prefix_type == NULL)
- {
- pair_p fields;
- static struct fileloc pos = { NULL, 0 };
- type_p len_ty = create_scalar_type ("unsigned");
- pos.file = input_file_by_name (__FILE__); pos.line = __LINE__;
- fields = create_field_at (0, len_ty, "alloc", 0, &pos);
- fields = create_field_at (fields, len_ty, "num", 0, &pos);
- prefix_type = new_structure ("vec_prefix", 0, &pos, fields, 0);
- prefix_type->u.s.bitmap = -1;
- }
- return prefix_type;
-}
-
-/* Record the definition of a generic VEC structure, as if we had expanded
- the macros in vec.h:
-
- typedef struct VEC_<type>_base GTY(()) {
- struct vec_prefix prefix;
- <type> GTY((length ("%h.prefix.num"))) vec[1];
- } VEC_<type>_base
-
- where the GTY(()) tags are only present if is_scalar is _false_. */
-
-void
-note_def_vec (const char *type_name, bool is_scalar, struct fileloc *pos)
-{
- pair_p fields;
- type_p t;
- options_p o;
- const char *name = concat ("VEC_", type_name, "_base", (char *) 0);
-
- if (is_scalar)
- {
- t = create_scalar_type (type_name);
- o = 0;
- }
- else
- {
- t = resolve_typedef (type_name, pos);
- o = create_string_option (0, "length", "%h.prefix.num");
- }
- /* We assemble the field list in reverse order. */
- fields = create_field_at (0, create_array (t, "1"), "vec", o, pos);
- fields = create_field_at (fields, vec_prefix_type (), "prefix", 0, pos);
-
- do_typedef (name, new_structure (name, 0, pos, fields, 0), pos);
-}
-
-/* Record the definition of an allocation-specific VEC structure, as if
- we had expanded the macros in vec.h:
-
- typedef struct VEC_<type>_<astrat> {
- VEC_<type>_base base;
- } VEC_<type>_<astrat>;
-*/
-void
-note_def_vec_alloc (const char *type, const char *astrat, struct fileloc *pos)
-{
- const char *astratname = concat ("VEC_", type, "_", astrat, (char *) 0);
- const char *basename = concat ("VEC_", type, "_base", (char *) 0);
-
- pair_p field = create_field_at (0, resolve_typedef (basename, pos),
- "base", 0, pos);
-
- do_typedef (astratname, new_structure (astratname, 0, pos, field, 0), pos);
-}
-
-/* Returns the specifier keyword for a string or union type S, empty string
- otherwise. */
-
-static const char *
-get_type_specifier (const type_p s)
-{
- if (s->kind == TYPE_STRUCT || s->kind == TYPE_LANG_STRUCT)
- return "struct ";
- if (s->kind == TYPE_UNION)
- return "union ";
- return "";
-}
/* TRUE if type S has the GTY variable_size annotation. */
@@ -4361,7 +4729,8 @@ write_typed_alloc_def (outf_p f,
bool third_arg = ((zone == specific_zone)
&& (variable_size || (quantity == vector)));
gcc_assert (f != NULL);
- oprintf (f, "#define ggc_alloc_%s%s", allocator_type, type_name);
+ const char *type_name_as_id = filter_type_name (type_name);
+ oprintf (f, "#define ggc_alloc_%s%s", allocator_type, type_name_as_id);
oprintf (f, "(%s%s%s%s%s) ",
(variable_size ? "SIZE" : ""),
(two_args ? ", " : ""),
@@ -4378,6 +4747,8 @@ write_typed_alloc_def (outf_p f,
if (quantity == vector)
oprintf (f, ", n");
oprintf (f, " MEM_STAT_INFO)))\n");
+ if (type_name_as_id != type_name)
+ free (CONST_CAST(char *, type_name_as_id));
}
/* Writes a typed allocator definition into output F for a struct or
@@ -4389,7 +4760,7 @@ write_typed_struct_alloc_def (outf_p f,
enum alloc_quantity quantity,
enum alloc_zone zone)
{
- gcc_assert (UNION_OR_STRUCT_P (s));
+ gcc_assert (union_or_struct_p (s));
write_typed_alloc_def (f, variable_size_p (s), get_type_specifier (s),
s->u.s.tag, allocator_type, quantity, zone);
}
@@ -4424,7 +4795,7 @@ write_typed_alloc_defns (outf_p f,
{
if (!USED_BY_TYPED_GC_P (s))
continue;
- gcc_assert (UNION_OR_STRUCT_P (s));
+ gcc_assert (union_or_struct_p (s));
/* In plugin mode onput output ggc_alloc macro definitions
relevant to plugin input files. */
if (nb_plugin_files > 0
@@ -4488,6 +4859,7 @@ output_typename (outf_p of, const_type_p t)
output_typename (of, t->u.p);
break;
case TYPE_STRUCT:
+ case TYPE_USER_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
oprintf (of, "%s", t->u.s.tag);
@@ -4546,10 +4918,6 @@ write_splay_tree_allocators (const_type_p param_structs)
}
}
-static void dump_pair (int indent, pair_p p);
-static void dump_type (int indent, type_p p);
-static void dump_type_list (int indent, type_p p);
-
#define INDENT 2
/* Dumps the value of typekind KIND. */
@@ -4569,6 +4937,9 @@ dump_typekind (int indent, enum typekind kind)
case TYPE_STRUCT:
printf ("TYPE_STRUCT");
break;
+ case TYPE_USER_STRUCT:
+ printf ("TYPE_USER_STRUCT");
+ break;
case TYPE_UNION:
printf ("TYPE_UNION");
break;
@@ -4664,8 +5035,7 @@ dump_type_u_s (int indent, type_p t)
{
pair_p fields;
- gcc_assert (t->kind == TYPE_STRUCT || t->kind == TYPE_UNION
- || t->kind == TYPE_LANG_STRUCT);
+ gcc_assert (union_or_struct_p (t));
printf ("%*cu.s.tag = %s\n", indent, ' ', t->u.s.tag);
dump_fileloc (indent, t->u.s.line);
printf ("%*cu.s.fields =\n", indent, ' ');
@@ -4736,6 +5106,9 @@ dump_type (int indent, type_p t)
{
PTR *slot;
+ if (seen_types == NULL)
+ seen_types = htab_create (100, htab_hash_pointer, htab_eq_pointer, NULL);
+
printf ("%*cType at %p: ", indent, ' ', (void *) t);
slot = htab_find_slot (seen_types, t, INSERT);
if (*slot != NULL)
@@ -4761,6 +5134,7 @@ dump_type (int indent, type_p t)
case TYPE_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
+ case TYPE_USER_STRUCT:
dump_type_u_s (indent + INDENT, t);
break;
case TYPE_POINTER:
@@ -4820,11 +5194,12 @@ dump_structures (const char *name, type_p structures)
static void
dump_everything (void)
{
- seen_types = htab_create (100, htab_hash_pointer, htab_eq_pointer, NULL);
dump_pair_list ("typedefs", typedefs);
dump_structures ("structures", structures);
dump_structures ("param_structs", param_structs);
dump_pair_list ("variables", variables);
+
+ /* Allocated with the first call to dump_type. */
htab_delete (seen_types);
}
diff --git a/gcc/gengtype.h b/gcc/gengtype.h
index 964cc311917..4a178ec3967 100644
--- a/gcc/gengtype.h
+++ b/gcc/gengtype.h
@@ -1,5 +1,5 @@
/* Process source files and output type information.
- Copyright (C) 2002, 2003, 2004, 2007, 2008, 2010, 2011
+ Copyright (C) 2002, 2003, 2004, 2007, 2008, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -21,6 +21,10 @@
#ifndef GCC_GENGTYPE_H
#define GCC_GENGTYPE_H
+#define obstack_chunk_alloc ((void *(*) (long)) xmalloc)
+#define obstack_chunk_free ((void (*) (void *)) free)
+#define OBSTACK_CHUNK_SIZE 0
+
/* Sets of accepted source languages like C, C++, Ada... are
represented by a bitmap. */
typedef unsigned lang_bitmap;
@@ -139,11 +143,14 @@ enum typekind {
TYPE_LANG_STRUCT, /* GCC front-end language specific structs.
Various languages may have homonymous but
different structs. */
- TYPE_PARAM_STRUCT /* Type for parametrized structs, e.g. hash_t
+ TYPE_PARAM_STRUCT, /* Type for parametrized structs, e.g. hash_t
hash-tables, ... See (param_is, use_param,
param1_is, param2_is,... use_param1,
use_param_2,... use_params) GTY
options. */
+ TYPE_USER_STRUCT /* User defined type. Walkers and markers for
+ this type are assumed to be provided by the
+ user. */
};
/* Discriminating kind for options. */
@@ -315,19 +322,27 @@ extern struct type scalar_char;
/* Test if a type is a union, either a plain one or a language
specific one. */
-#define UNION_P(x) \
- ((x)->kind == TYPE_UNION || \
- ((x)->kind == TYPE_LANG_STRUCT \
- && (x)->u.s.lang_struct->kind == TYPE_UNION))
+#define UNION_P(x) \
+ ((x)->kind == TYPE_UNION \
+ || ((x)->kind == TYPE_LANG_STRUCT \
+ && (x)->u.s.lang_struct->kind == TYPE_UNION))
/* Test if a type is a union or a structure, perhaps a language
specific one. */
-#define UNION_OR_STRUCT_P(x) \
- ((x)->kind == TYPE_UNION \
- || (x)->kind == TYPE_STRUCT \
- || (x)->kind == TYPE_LANG_STRUCT)
-
+static inline bool
+union_or_struct_p (enum typekind kind)
+{
+ return (kind == TYPE_UNION
+ || kind == TYPE_STRUCT
+ || kind == TYPE_LANG_STRUCT
+ || kind == TYPE_USER_STRUCT);
+}
+static inline bool
+union_or_struct_p (const_type_p x)
+{
+ return union_or_struct_p (x->kind);
+}
/* Give the file location of a type, if any. */
static inline struct fileloc*
@@ -335,7 +350,7 @@ type_fileloc (type_p t)
{
if (!t)
return NULL;
- if (UNION_OR_STRUCT_P(t))
+ if (union_or_struct_p (t))
return &t->u.s.line;
if (t->kind == TYPE_PARAM_STRUCT)
return &t->u.param_struct.line;
@@ -406,10 +421,10 @@ extern char *xasprintf (const char *, ...) ATTRIBUTE_PRINTF_1;
extern void do_typedef (const char *s, type_p t, struct fileloc *pos);
extern void do_scalar_typedef (const char *s, struct fileloc *pos);
extern type_p resolve_typedef (const char *s, struct fileloc *pos);
-extern type_p new_structure (const char *name, int isunion,
+extern type_p new_structure (const char *name, enum typekind kind,
struct fileloc *pos, pair_p fields,
options_p o);
-extern type_p find_structure (const char *s, int isunion);
+extern type_p find_structure (const char *s, enum typekind kind);
extern type_p create_scalar_type (const char *name);
extern type_p create_pointer (type_p t);
extern type_p create_array (type_p t, const char *len);
@@ -420,10 +435,6 @@ extern pair_p nreverse_pairs (pair_p list);
extern type_p adjust_field_type (type_p, options_p);
extern void note_variable (const char *s, type_p t, options_p o,
struct fileloc *pos);
-extern void note_def_vec (const char *type_name, bool is_scalar,
- struct fileloc *pos);
-extern void note_def_vec_alloc (const char *type, const char *astrat,
- struct fileloc *pos);
/* Lexer and parser routines. */
extern int yylex (const char **yylval);
@@ -449,12 +460,10 @@ enum
STRUCT,
ENUM,
VEC_TOKEN,
- DEFVEC_OP,
- DEFVEC_I,
- DEFVEC_ALLOC,
ELLIPSIS,
PTR_ALIAS,
NESTED_PTR,
+ USER_GTY,
PARAM_IS,
NUM,
SCALAR,
diff --git a/gcc/genopinit.c b/gcc/genopinit.c
index baccd452b63..52612794802 100644
--- a/gcc/genopinit.c
+++ b/gcc/genopinit.c
@@ -1,7 +1,5 @@
/* Generate code to initialize optabs from machine description.
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1993-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -29,538 +27,498 @@ along with GCC; see the file COPYING3. If not see
#include "gensupport.h"
-/* Many parts of GCC use arrays that are indexed by machine mode and
- contain the insn codes for pattern in the MD file that perform a given
- operation on operands of that mode.
+#define DEF_RTL_EXPR(V, N, X, C) #V,
- These patterns are present in the MD file with names that contain
- the mode(s) used and the name of the operation. This program
- writes a function `init_all_optabs' that initializes the optabs with
- all the insn codes of the relevant patterns present in the MD file.
+static const char * const rtx_upname[] = {
+#include "rtl.def"
+};
+
+#undef DEF_RTL_EXPR
+
+
+/* The entries in optabs.def are categorized:
+ C: A "conversion" optab, which uses two modes; has libcall data.
+ N: A "normal" optab, which uses one mode; has libcall data.
+ D: A "direct" optab, which uses one mode; does not have libcall data.
+ V: An "oVerflow" optab. Like N, but does not record its code in
+ code_to_optab.
- This array contains a list of optabs that need to be initialized. Within
- each string, the name of the pattern to be matched against is delimited
- with $( and $). In the string, $a and $b are used to match a short mode
- name (the part of the mode name not including `mode' and converted to
- lower-case). When writing out the initializer, the entire string is
- used. $A and $B are replaced with the full name of the mode; $a and $b
- are replaced with the short form of the name, as above.
+ CX, NX, VX: An extra pattern entry for a conversion or normal optab.
- If $N is present in the pattern, it means the two modes must be in
- the same mode class, and $b must be greater than $a (e.g, QImode
- and HImode).
+ These patterns may be present in the MD file with names that contain
+ the mode(s) used and the name of the operation. This array contains
+ a list of optabs that need to be initialized. Within each name,
+ $a and $b are used to match a short mode name (the part of the mode
+ name not including `mode' and converted to lower-case).
$I means that only full integer modes should be considered for the
next mode, and $F means that only float modes should be considered.
$P means that both full and partial integer modes should be considered.
$Q means that only fixed-point modes should be considered.
- $V means to emit 'v' if the first mode is a MODE_FLOAT mode.
-
- For some optabs, we store the operation by RTL codes. These are only
- used for comparisons. In that case, $c and $C are the lower-case and
- upper-case forms of the comparison, respectively. */
-
-static const char * const optabs[] =
-{ "set_convert_optab_handler (sext_optab, $B, $A, CODE_FOR_$(extend$a$b2$))",
- "set_convert_optab_handler (zext_optab, $B, $A, CODE_FOR_$(zero_extend$a$b2$))",
- "set_convert_optab_handler (sfix_optab, $B, $A, CODE_FOR_$(fix$F$a$I$b2$))",
- "set_convert_optab_handler (ufix_optab, $B, $A, CODE_FOR_$(fixuns$F$a$b2$))",
- "set_convert_optab_handler (sfixtrunc_optab, $B, $A, CODE_FOR_$(fix_trunc$F$a$I$b2$))",
- "set_convert_optab_handler (ufixtrunc_optab, $B, $A, CODE_FOR_$(fixuns_trunc$F$a$I$b2$))",
- "set_convert_optab_handler (sfloat_optab, $B, $A, CODE_FOR_$(float$I$a$F$b2$))",
- "set_convert_optab_handler (ufloat_optab, $B, $A, CODE_FOR_$(floatuns$I$a$F$b2$))",
- "set_convert_optab_handler (trunc_optab, $B, $A, CODE_FOR_$(trunc$a$b2$))",
- "set_convert_optab_handler (fract_optab, $B, $A, CODE_FOR_$(fract$a$b2$))",
- "set_convert_optab_handler (fractuns_optab, $B, $A, CODE_FOR_$(fractuns$I$a$Q$b2$))",
- "set_convert_optab_handler (fractuns_optab, $B, $A, CODE_FOR_$(fractuns$Q$a$I$b2$))",
- "set_convert_optab_handler (satfract_optab, $B, $A, CODE_FOR_$(satfract$a$Q$b2$))",
- "set_convert_optab_handler (satfractuns_optab, $B, $A, CODE_FOR_$(satfractuns$I$a$Q$b2$))",
- "set_convert_optab_handler (vec_load_lanes_optab, $A, $B, CODE_FOR_$(vec_load_lanes$a$b$))",
- "set_convert_optab_handler (vec_store_lanes_optab, $A, $B, CODE_FOR_$(vec_store_lanes$a$b$))",
- "set_optab_handler (add_optab, $A, CODE_FOR_$(add$P$a3$))",
- "set_optab_handler (addv_optab, $A, CODE_FOR_$(add$F$a3$)),\n\
- set_optab_handler (add_optab, $A, CODE_FOR_$(add$F$a3$))",
- "set_optab_handler (addv_optab, $A, CODE_FOR_$(addv$I$a3$))",
- "set_optab_handler (add_optab, $A, CODE_FOR_$(add$Q$a3$))",
- "set_optab_handler (ssadd_optab, $A, CODE_FOR_$(ssadd$Q$a3$))",
- "set_optab_handler (usadd_optab, $A, CODE_FOR_$(usadd$Q$a3$))",
- "set_optab_handler (sub_optab, $A, CODE_FOR_$(sub$P$a3$))",
- "set_optab_handler (subv_optab, $A, CODE_FOR_$(sub$F$a3$)),\n\
- set_optab_handler (sub_optab, $A, CODE_FOR_$(sub$F$a3$))",
- "set_optab_handler (subv_optab, $A, CODE_FOR_$(subv$I$a3$))",
- "set_optab_handler (sub_optab, $A, CODE_FOR_$(sub$Q$a3$))",
- "set_optab_handler (sssub_optab, $A, CODE_FOR_$(sssub$Q$a3$))",
- "set_optab_handler (ussub_optab, $A, CODE_FOR_$(ussub$Q$a3$))",
- "set_optab_handler (smul_optab, $A, CODE_FOR_$(mul$Q$a3$))",
- "set_optab_handler (ssmul_optab, $A, CODE_FOR_$(ssmul$Q$a3$))",
- "set_optab_handler (usmul_optab, $A, CODE_FOR_$(usmul$Q$a3$))",
- "set_optab_handler (smul_optab, $A, CODE_FOR_$(mul$P$a3$))",
- "set_optab_handler (smulv_optab, $A, CODE_FOR_$(mul$F$a3$)),\n\
- set_optab_handler (smul_optab, $A, CODE_FOR_$(mul$F$a3$))",
- "set_optab_handler (smulv_optab, $A, CODE_FOR_$(mulv$I$a3$))",
- "set_optab_handler (umul_highpart_optab, $A, CODE_FOR_$(umul$a3_highpart$))",
- "set_optab_handler (smul_highpart_optab, $A, CODE_FOR_$(smul$a3_highpart$))",
- "set_widening_optab_handler (smul_widen_optab, $B, $A, CODE_FOR_$(mul$a$b3$)$N)",
- "set_widening_optab_handler (umul_widen_optab, $B, $A, CODE_FOR_$(umul$a$b3$)$N)",
- "set_widening_optab_handler (usmul_widen_optab, $B, $A, CODE_FOR_$(usmul$a$b3$)$N)",
- "set_widening_optab_handler (smadd_widen_optab, $B, $A, CODE_FOR_$(madd$a$b4$)$N)",
- "set_widening_optab_handler (umadd_widen_optab, $B, $A, CODE_FOR_$(umadd$a$b4$)$N)",
- "set_widening_optab_handler (ssmadd_widen_optab, $B, $A, CODE_FOR_$(ssmadd$a$b4$)$N)",
- "set_widening_optab_handler (usmadd_widen_optab, $B, $A, CODE_FOR_$(usmadd$a$b4$)$N)",
- "set_widening_optab_handler (smsub_widen_optab, $B, $A, CODE_FOR_$(msub$a$b4$)$N)",
- "set_widening_optab_handler (umsub_widen_optab, $B, $A, CODE_FOR_$(umsub$a$b4$)$N)",
- "set_widening_optab_handler (ssmsub_widen_optab, $B, $A, CODE_FOR_$(ssmsub$a$b4$)$N)",
- "set_widening_optab_handler (usmsub_widen_optab, $B, $A, CODE_FOR_$(usmsub$a$b4$)$N)",
- "set_optab_handler (sdiv_optab, $A, CODE_FOR_$(div$a3$))",
- "set_optab_handler (ssdiv_optab, $A, CODE_FOR_$(ssdiv$Q$a3$))",
- "set_optab_handler (sdivv_optab, $A, CODE_FOR_$(div$V$I$a3$))",
- "set_optab_handler (udiv_optab, $A, CODE_FOR_$(udiv$I$a3$))",
- "set_optab_handler (udiv_optab, $A, CODE_FOR_$(udiv$Q$a3$))",
- "set_optab_handler (usdiv_optab, $A, CODE_FOR_$(usdiv$Q$a3$))",
- "set_optab_handler (sdivmod_optab, $A, CODE_FOR_$(divmod$a4$))",
- "set_optab_handler (udivmod_optab, $A, CODE_FOR_$(udivmod$a4$))",
- "set_optab_handler (smod_optab, $A, CODE_FOR_$(mod$a3$))",
- "set_optab_handler (umod_optab, $A, CODE_FOR_$(umod$a3$))",
- "set_optab_handler (fmod_optab, $A, CODE_FOR_$(fmod$a3$))",
- "set_optab_handler (remainder_optab, $A, CODE_FOR_$(remainder$a3$))",
- "set_optab_handler (ftrunc_optab, $A, CODE_FOR_$(ftrunc$F$a2$))",
- "set_optab_handler (and_optab, $A, CODE_FOR_$(and$a3$))",
- "set_optab_handler (ior_optab, $A, CODE_FOR_$(ior$a3$))",
- "set_optab_handler (xor_optab, $A, CODE_FOR_$(xor$a3$))",
- "set_optab_handler (ashl_optab, $A, CODE_FOR_$(ashl$a3$))",
- "set_optab_handler (ssashl_optab, $A, CODE_FOR_$(ssashl$Q$a3$))",
- "set_optab_handler (usashl_optab, $A, CODE_FOR_$(usashl$Q$a3$))",
- "set_optab_handler (ashr_optab, $A, CODE_FOR_$(ashr$a3$))",
- "set_optab_handler (lshr_optab, $A, CODE_FOR_$(lshr$a3$))",
- "set_optab_handler (rotl_optab, $A, CODE_FOR_$(rotl$a3$))",
- "set_optab_handler (rotr_optab, $A, CODE_FOR_$(rotr$a3$))",
- "set_optab_handler (vashr_optab, $A, CODE_FOR_$(vashr$a3$))",
- "set_optab_handler (vlshr_optab, $A, CODE_FOR_$(vlshr$a3$))",
- "set_optab_handler (vashl_optab, $A, CODE_FOR_$(vashl$a3$))",
- "set_optab_handler (vrotl_optab, $A, CODE_FOR_$(vrotl$a3$))",
- "set_optab_handler (vrotr_optab, $A, CODE_FOR_$(vrotr$a3$))",
- "set_optab_handler (smin_optab, $A, CODE_FOR_$(smin$a3$))",
- "set_optab_handler (smax_optab, $A, CODE_FOR_$(smax$a3$))",
- "set_optab_handler (umin_optab, $A, CODE_FOR_$(umin$I$a3$))",
- "set_optab_handler (umax_optab, $A, CODE_FOR_$(umax$I$a3$))",
- "set_optab_handler (pow_optab, $A, CODE_FOR_$(pow$a3$))",
- "set_optab_handler (atan2_optab, $A, CODE_FOR_$(atan2$a3$))",
- "set_optab_handler (neg_optab, $A, CODE_FOR_$(neg$P$a2$))",
- "set_optab_handler (negv_optab, $A, CODE_FOR_$(neg$F$a2$)),\n\
- set_optab_handler (neg_optab, $A, CODE_FOR_$(neg$F$a2$))",
- "set_optab_handler (negv_optab, $A, CODE_FOR_$(negv$I$a2$))",
- "set_optab_handler (neg_optab, $A, CODE_FOR_$(neg$Q$a2$))",
- "set_optab_handler (ssneg_optab, $A, CODE_FOR_$(ssneg$Q$a2$))",
- "set_optab_handler (usneg_optab, $A, CODE_FOR_$(usneg$Q$a2$))",
- "set_optab_handler (abs_optab, $A, CODE_FOR_$(abs$P$a2$))",
- "set_optab_handler (absv_optab, $A, CODE_FOR_$(abs$F$a2$)),\n\
- set_optab_handler (abs_optab, $A, CODE_FOR_$(abs$F$a2$))",
- "set_optab_handler (absv_optab, $A, CODE_FOR_$(absv$I$a2$))",
- "set_optab_handler (copysign_optab, $A, CODE_FOR_$(copysign$F$a3$))",
- "set_optab_handler (signbit_optab, $A, CODE_FOR_$(signbit$F$a2$))",
- "set_optab_handler (isinf_optab, $A, CODE_FOR_$(isinf$a2$))",
- "set_optab_handler (sqrt_optab, $A, CODE_FOR_$(sqrt$a2$))",
- "set_optab_handler (floor_optab, $A, CODE_FOR_$(floor$a2$))",
- "set_convert_optab_handler (lfloor_optab, $B, $A, CODE_FOR_$(lfloor$F$a$I$b2$))",
- "set_optab_handler (fma_optab, $A, CODE_FOR_$(fma$a4$))",
- "set_optab_handler (fms_optab, $A, CODE_FOR_$(fms$a4$))",
- "set_optab_handler (fnma_optab, $A, CODE_FOR_$(fnma$a4$))",
- "set_optab_handler (fnms_optab, $A, CODE_FOR_$(fnms$a4$))",
- "set_optab_handler (ceil_optab, $A, CODE_FOR_$(ceil$a2$))",
- "set_convert_optab_handler (lceil_optab, $B, $A, CODE_FOR_$(lceil$F$a$I$b2$))",
- "set_optab_handler (round_optab, $A, CODE_FOR_$(round$a2$))",
- "set_optab_handler (btrunc_optab, $A, CODE_FOR_$(btrunc$a2$))",
- "set_optab_handler (nearbyint_optab, $A, CODE_FOR_$(nearbyint$a2$))",
- "set_optab_handler (rint_optab, $A, CODE_FOR_$(rint$a2$))",
- "set_convert_optab_handler (lrint_optab, $B, $A, CODE_FOR_$(lrint$F$a$I$b2$))",
- "set_convert_optab_handler (lround_optab, $B, $A, CODE_FOR_$(lround$F$a$I$b2$))",
- "set_optab_handler (sincos_optab, $A, CODE_FOR_$(sincos$a3$))",
- "set_optab_handler (sin_optab, $A, CODE_FOR_$(sin$a2$))",
- "set_optab_handler (asin_optab, $A, CODE_FOR_$(asin$a2$))",
- "set_optab_handler (cos_optab, $A, CODE_FOR_$(cos$a2$))",
- "set_optab_handler (acos_optab, $A, CODE_FOR_$(acos$a2$))",
- "set_optab_handler (exp_optab, $A, CODE_FOR_$(exp$a2$))",
- "set_optab_handler (exp10_optab, $A, CODE_FOR_$(exp10$a2$))",
- "set_optab_handler (exp2_optab, $A, CODE_FOR_$(exp2$a2$))",
- "set_optab_handler (expm1_optab, $A, CODE_FOR_$(expm1$a2$))",
- "set_optab_handler (ldexp_optab, $A, CODE_FOR_$(ldexp$a3$))",
- "set_optab_handler (scalb_optab, $A, CODE_FOR_$(scalb$a3$))",
- "set_optab_handler (significand_optab, $A, CODE_FOR_$(significand$a2$))",
- "set_optab_handler (logb_optab, $A, CODE_FOR_$(logb$a2$))",
- "set_optab_handler (ilogb_optab, $A, CODE_FOR_$(ilogb$a2$))",
- "set_optab_handler (log_optab, $A, CODE_FOR_$(log$a2$))",
- "set_optab_handler (log10_optab, $A, CODE_FOR_$(log10$a2$))",
- "set_optab_handler (log2_optab, $A, CODE_FOR_$(log2$a2$))",
- "set_optab_handler (log1p_optab, $A, CODE_FOR_$(log1p$a2$))",
- "set_optab_handler (tan_optab, $A, CODE_FOR_$(tan$a2$))",
- "set_optab_handler (atan_optab, $A, CODE_FOR_$(atan$a2$))",
- "set_optab_handler (strlen_optab, $A, CODE_FOR_$(strlen$a$))",
- "set_optab_handler (one_cmpl_optab, $A, CODE_FOR_$(one_cmpl$a2$))",
- "set_optab_handler (bswap_optab, $A, CODE_FOR_$(bswap$a2$))",
- "set_optab_handler (ffs_optab, $A, CODE_FOR_$(ffs$a2$))",
- "set_optab_handler (clz_optab, $A, CODE_FOR_$(clz$a2$))",
- "set_optab_handler (ctz_optab, $A, CODE_FOR_$(ctz$a2$))",
- "set_optab_handler (clrsb_optab, $A, CODE_FOR_$(clrsb$a2$))",
- "set_optab_handler (popcount_optab, $A, CODE_FOR_$(popcount$a2$))",
- "set_optab_handler (parity_optab, $A, CODE_FOR_$(parity$a2$))",
- "set_optab_handler (mov_optab, $A, CODE_FOR_$(mov$a$))",
- "set_optab_handler (movstrict_optab, $A, CODE_FOR_$(movstrict$a$))",
- "set_optab_handler (movmisalign_optab, $A, CODE_FOR_$(movmisalign$a$))",
- "set_optab_handler (storent_optab, $A, CODE_FOR_$(storent$a$))",
- "set_optab_handler (addcc_optab, $A, CODE_FOR_$(add$acc$))",
- "set_direct_optab_handler (movcc_optab, $A, CODE_FOR_$(mov$acc$))",
- "set_optab_handler (cbranch_optab, $A, CODE_FOR_$(cbranch$a4$))",
- "set_optab_handler (cmov_optab, $A, CODE_FOR_$(cmov$a6$))",
- "set_optab_handler (cstore_optab, $A, CODE_FOR_$(cstore$a4$))",
- "set_optab_handler (ctrap_optab, $A, CODE_FOR_$(ctrap$a4$))",
- "set_optab_handler (push_optab, $A, CODE_FOR_$(push$a1$))",
- "set_direct_optab_handler (reload_in_optab, $A, CODE_FOR_$(reload_in$a$))",
- "set_direct_optab_handler (reload_out_optab, $A, CODE_FOR_$(reload_out$a$))",
- "set_direct_optab_handler (movmem_optab, $A, CODE_FOR_$(movmem$a$))",
- "set_direct_optab_handler (cmpstr_optab, $A, CODE_FOR_$(cmpstr$a$))",
- "set_direct_optab_handler (cmpstrn_optab, $A, CODE_FOR_$(cmpstrn$a$))",
- "set_direct_optab_handler (cmpmem_optab, $A, CODE_FOR_$(cmpmem$a$))",
- "set_direct_optab_handler (setmem_optab, $A, CODE_FOR_$(setmem$a$))",
- "set_direct_optab_handler (sync_add_optab, $A, CODE_FOR_$(sync_add$I$a$))",
- "set_direct_optab_handler (sync_sub_optab, $A, CODE_FOR_$(sync_sub$I$a$))",
- "set_direct_optab_handler (sync_ior_optab, $A, CODE_FOR_$(sync_ior$I$a$))",
- "set_direct_optab_handler (sync_and_optab, $A, CODE_FOR_$(sync_and$I$a$))",
- "set_direct_optab_handler (sync_xor_optab, $A, CODE_FOR_$(sync_xor$I$a$))",
- "set_direct_optab_handler (sync_nand_optab, $A, CODE_FOR_$(sync_nand$I$a$))",
- "set_optab_handler (sync_old_add_optab, $A, CODE_FOR_$(sync_old_add$I$a$))",
- "set_optab_handler (sync_old_sub_optab, $A, CODE_FOR_$(sync_old_sub$I$a$))",
- "set_optab_handler (sync_old_ior_optab, $A, CODE_FOR_$(sync_old_ior$I$a$))",
- "set_optab_handler (sync_old_and_optab, $A, CODE_FOR_$(sync_old_and$I$a$))",
- "set_optab_handler (sync_old_xor_optab, $A, CODE_FOR_$(sync_old_xor$I$a$))",
- "set_optab_handler (sync_old_nand_optab, $A, CODE_FOR_$(sync_old_nand$I$a$))",
- "set_optab_handler (sync_new_add_optab, $A, CODE_FOR_$(sync_new_add$I$a$))",
- "set_optab_handler (sync_new_sub_optab, $A, CODE_FOR_$(sync_new_sub$I$a$))",
- "set_optab_handler (sync_new_ior_optab, $A, CODE_FOR_$(sync_new_ior$I$a$))",
- "set_optab_handler (sync_new_and_optab, $A, CODE_FOR_$(sync_new_and$I$a$))",
- "set_optab_handler (sync_new_xor_optab, $A, CODE_FOR_$(sync_new_xor$I$a$))",
- "set_optab_handler (sync_new_nand_optab, $A, CODE_FOR_$(sync_new_nand$I$a$))",
- "set_optab_handler (sync_compare_and_swap_optab, $A, CODE_FOR_$(sync_compare_and_swap$I$a$))",
- "set_optab_handler (sync_lock_test_and_set_optab, $A, CODE_FOR_$(sync_lock_test_and_set$I$a$))",
- "set_direct_optab_handler (sync_lock_release_optab, $A, CODE_FOR_$(sync_lock_release$I$a$))",
- "set_direct_optab_handler (atomic_exchange_optab, $A, CODE_FOR_$(atomic_exchange$I$a$))",
- "set_direct_optab_handler (atomic_compare_and_swap_optab, $A, CODE_FOR_$(atomic_compare_and_swap$I$a$))",
- "set_direct_optab_handler (atomic_load_optab, $A, CODE_FOR_$(atomic_load$I$a$))",
- "set_direct_optab_handler (atomic_store_optab, $A, CODE_FOR_$(atomic_store$I$a$))",
- "set_direct_optab_handler (atomic_add_fetch_optab, $A, CODE_FOR_$(atomic_add_fetch$I$a$))",
- "set_direct_optab_handler (atomic_sub_fetch_optab, $A, CODE_FOR_$(atomic_sub_fetch$I$a$))",
- "set_direct_optab_handler (atomic_and_fetch_optab, $A, CODE_FOR_$(atomic_and_fetch$I$a$))",
- "set_direct_optab_handler (atomic_nand_fetch_optab, $A, CODE_FOR_$(atomic_nand_fetch$I$a$))",
- "set_direct_optab_handler (atomic_xor_fetch_optab, $A, CODE_FOR_$(atomic_xor_fetch$I$a$))",
- "set_direct_optab_handler (atomic_or_fetch_optab, $A, CODE_FOR_$(atomic_or_fetch$I$a$))",
- "set_direct_optab_handler (atomic_fetch_add_optab, $A, CODE_FOR_$(atomic_fetch_add$I$a$))",
- "set_direct_optab_handler (atomic_fetch_sub_optab, $A, CODE_FOR_$(atomic_fetch_sub$I$a$))",
- "set_direct_optab_handler (atomic_fetch_and_optab, $A, CODE_FOR_$(atomic_fetch_and$I$a$))",
- "set_direct_optab_handler (atomic_fetch_nand_optab, $A, CODE_FOR_$(atomic_fetch_nand$I$a$))",
- "set_direct_optab_handler (atomic_fetch_xor_optab, $A, CODE_FOR_$(atomic_fetch_xor$I$a$))",
- "set_direct_optab_handler (atomic_fetch_or_optab, $A, CODE_FOR_$(atomic_fetch_or$I$a$))",
- "set_direct_optab_handler (atomic_add_optab, $A, CODE_FOR_$(atomic_add$I$a$))",
- "set_direct_optab_handler (atomic_sub_optab, $A, CODE_FOR_$(atomic_sub$I$a$))",
- "set_direct_optab_handler (atomic_and_optab, $A, CODE_FOR_$(atomic_and$I$a$))",
- "set_direct_optab_handler (atomic_nand_optab, $A, CODE_FOR_$(atomic_nand$I$a$))",
- "set_direct_optab_handler (atomic_xor_optab, $A, CODE_FOR_$(atomic_xor$I$a$))",
- "set_direct_optab_handler (atomic_or_optab, $A, CODE_FOR_$(atomic_or$I$a$))",
- "set_optab_handler (vec_set_optab, $A, CODE_FOR_$(vec_set$a$))",
- "set_optab_handler (vec_extract_optab, $A, CODE_FOR_$(vec_extract$a$))",
- "set_optab_handler (vec_init_optab, $A, CODE_FOR_$(vec_init$a$))",
- "set_optab_handler (vec_shl_optab, $A, CODE_FOR_$(vec_shl_$a$))",
- "set_optab_handler (vec_shr_optab, $A, CODE_FOR_$(vec_shr_$a$))",
- "set_optab_handler (vec_realign_load_optab, $A, CODE_FOR_$(vec_realign_load_$a$))",
- "set_direct_optab_handler (vec_perm_optab, $A, CODE_FOR_$(vec_perm$a$))",
- "set_direct_optab_handler (vec_perm_const_optab, $A, CODE_FOR_$(vec_perm_const$a$))",
- "set_convert_optab_handler (vcond_optab, $A, $B, CODE_FOR_$(vcond$a$b$))",
- "set_convert_optab_handler (vcondu_optab, $A, $B, CODE_FOR_$(vcondu$a$b$))",
- "set_optab_handler (ssum_widen_optab, $A, CODE_FOR_$(widen_ssum$I$a3$))",
- "set_optab_handler (usum_widen_optab, $A, CODE_FOR_$(widen_usum$I$a3$))",
- "set_optab_handler (udot_prod_optab, $A, CODE_FOR_$(udot_prod$I$a$))",
- "set_optab_handler (sdot_prod_optab, $A, CODE_FOR_$(sdot_prod$I$a$))",
- "set_optab_handler (reduc_smax_optab, $A, CODE_FOR_$(reduc_smax_$a$))",
- "set_optab_handler (reduc_umax_optab, $A, CODE_FOR_$(reduc_umax_$a$))",
- "set_optab_handler (reduc_smin_optab, $A, CODE_FOR_$(reduc_smin_$a$))",
- "set_optab_handler (reduc_umin_optab, $A, CODE_FOR_$(reduc_umin_$a$))",
- "set_optab_handler (reduc_splus_optab, $A, CODE_FOR_$(reduc_splus_$a$))" ,
- "set_optab_handler (reduc_uplus_optab, $A, CODE_FOR_$(reduc_uplus_$a$))",
- "set_optab_handler (vec_widen_umult_hi_optab, $A, CODE_FOR_$(vec_widen_umult_hi_$a$))",
- "set_optab_handler (vec_widen_umult_lo_optab, $A, CODE_FOR_$(vec_widen_umult_lo_$a$))",
- "set_optab_handler (vec_widen_smult_hi_optab, $A, CODE_FOR_$(vec_widen_smult_hi_$a$))",
- "set_optab_handler (vec_widen_smult_lo_optab, $A, CODE_FOR_$(vec_widen_smult_lo_$a$))",
- "set_optab_handler (vec_widen_ushiftl_hi_optab, $A, CODE_FOR_$(vec_widen_ushiftl_hi_$a$))",
- "set_optab_handler (vec_widen_ushiftl_lo_optab, $A, CODE_FOR_$(vec_widen_ushiftl_lo_$a$))",
- "set_optab_handler (vec_widen_sshiftl_hi_optab, $A, CODE_FOR_$(vec_widen_sshiftl_hi_$a$))",
- "set_optab_handler (vec_widen_sshiftl_lo_optab, $A, CODE_FOR_$(vec_widen_sshiftl_lo_$a$))",
- "set_optab_handler (vec_unpacks_hi_optab, $A, CODE_FOR_$(vec_unpacks_hi_$a$))",
- "set_optab_handler (vec_unpacks_lo_optab, $A, CODE_FOR_$(vec_unpacks_lo_$a$))",
- "set_optab_handler (vec_unpacku_hi_optab, $A, CODE_FOR_$(vec_unpacku_hi_$a$))",
- "set_optab_handler (vec_unpacku_lo_optab, $A, CODE_FOR_$(vec_unpacku_lo_$a$))",
- "set_optab_handler (vec_unpacks_float_hi_optab, $A, CODE_FOR_$(vec_unpacks_float_hi_$a$))",
- "set_optab_handler (vec_unpacks_float_lo_optab, $A, CODE_FOR_$(vec_unpacks_float_lo_$a$))",
- "set_optab_handler (vec_unpacku_float_hi_optab, $A, CODE_FOR_$(vec_unpacku_float_hi_$a$))",
- "set_optab_handler (vec_unpacku_float_lo_optab, $A, CODE_FOR_$(vec_unpacku_float_lo_$a$))",
- "set_optab_handler (vec_pack_trunc_optab, $A, CODE_FOR_$(vec_pack_trunc_$a$))",
- "set_optab_handler (vec_pack_ssat_optab, $A, CODE_FOR_$(vec_pack_ssat_$a$))",
- "set_optab_handler (vec_pack_usat_optab, $A, CODE_FOR_$(vec_pack_usat_$a$))",
- "set_optab_handler (vec_pack_sfix_trunc_optab, $A, CODE_FOR_$(vec_pack_sfix_trunc_$a$))",
- "set_optab_handler (vec_pack_ufix_trunc_optab, $A, CODE_FOR_$(vec_pack_ufix_trunc_$a$))"
+ The pattern may be NULL if the optab exists only for the libcalls
+ that we plan to attach to it, and there are no named patterns in
+ the md files. */
+
+#define OPTAB_CL(name, pat, c, b, l) name,
+#define OPTAB_CX(name, pat)
+#define OPTAB_CD(name, pat) name,
+#define OPTAB_NL(name, pat, c, b, s, l) name,
+#define OPTAB_NC(name, pat, c) name,
+#define OPTAB_NX(name, pat)
+#define OPTAB_VL(name, pat, c, b, s, l) name,
+#define OPTAB_VC(name, pat, c) name,
+#define OPTAB_VX(name, pat)
+#define OPTAB_DC(name, pat, c) name,
+#define OPTAB_D(name, pat) name,
+
+typedef enum optab_tag {
+ unknown_optab,
+#include "optabs.def"
+ NUM_OPTABS
+} optab;
+
+#undef OPTAB_CL
+#undef OPTAB_CX
+#undef OPTAB_CD
+#undef OPTAB_NL
+#undef OPTAB_NC
+#undef OPTAB_NX
+#undef OPTAB_VL
+#undef OPTAB_VC
+#undef OPTAB_VX
+#undef OPTAB_DC
+#undef OPTAB_D
+
+#define NS "NULL"
+#define ZS "'\\0'"
+#define OPTAB_CL(o, p, c, b, l) { #o, p, #b, ZS, #l, o, c, UNKNOWN, 1 },
+#define OPTAB_CX(o, p) { #o, p, NULL, NULL, NULL, o, UNKNOWN, UNKNOWN, 1 },
+#define OPTAB_CD(o, p) { #o, p, NS, ZS, NS, o, UNKNOWN, UNKNOWN, 2 },
+#define OPTAB_NL(o, p, c, b, s, l) { #o, p, #b, #s, #l, o, c, c, 3 },
+#define OPTAB_NC(o, p, c) { #o, p, NS, ZS, NS, o, c, c, 3 },
+#define OPTAB_NX(o, p) { #o, p, NULL, NULL, NULL, o, UNKNOWN, UNKNOWN, 3 },
+#define OPTAB_VL(o, p, c, b, s, l) { #o, p, #b, #s, #l, o, c, UNKNOWN, 3 },
+#define OPTAB_VC(o, p, c) { #o, p, NS, ZS, NS, o, c, UNKNOWN, 3 },
+#define OPTAB_VX(o, p) { #o, p, NULL, NULL, NULL, o, UNKNOWN, UNKNOWN, 3 },
+#define OPTAB_DC(o, p, c) { #o, p, NS, ZS, NS, o, c, c, 4 },
+#define OPTAB_D(o, p) { #o, p, NS, ZS, NS, o, UNKNOWN, UNKNOWN, 4 },
+
+typedef struct optab_def_d
+{
+ const char *name;
+ const char *pattern;
+ const char *base;
+ const char *suffix;
+ const char *libcall;
+ unsigned int op;
+ enum rtx_code fcode;
+ enum rtx_code rcode;
+ unsigned int kind;
+} optab_def;
+
+static optab_def optabs[] = {
+ { "unknown_optab", NULL, NS, ZS, NS, unknown_optab, UNKNOWN, UNKNOWN, 0 },
+#include "optabs.def"
};
-static void gen_insn (rtx);
+#undef OPTAB_CL
+#undef OPTAB_CX
+#undef OPTAB_CD
+#undef OPTAB_NL
+#undef OPTAB_NC
+#undef OPTAB_NX
+#undef OPTAB_VL
+#undef OPTAB_VC
+#undef OPTAB_VX
+#undef OPTAB_DC
+#undef OPTAB_D
+
+/* Vector in which to collect insns that match. */
+
+typedef struct pattern_d
+{
+ const char *name;
+ unsigned int op;
+ unsigned int m1, m2;
+ unsigned int sort_num;
+} pattern;
+
+DEF_VEC_O(pattern);
+DEF_VEC_ALLOC_O(pattern, heap);
+
+static VEC(pattern, heap) *patterns;
+
+static bool
+match_pattern (pattern *p, const char *name, const char *pat)
+{
+ bool force_float = false;
+ bool force_int = false;
+ bool force_partial_int = false;
+ bool force_fixed = false;
+
+ if (pat == NULL)
+ return false;
+ for (; ; ++pat)
+ {
+ if (*pat != '$')
+ {
+ if (*pat != *name++)
+ return false;
+ if (*pat == '\0')
+ return true;
+ continue;
+ }
+ switch (*++pat)
+ {
+ case 'I':
+ force_int = 1;
+ break;
+ case 'P':
+ force_partial_int = 1;
+ break;
+ case 'F':
+ force_float = 1;
+ break;
+ case 'Q':
+ force_fixed = 1;
+ break;
+
+ case 'a':
+ case 'b':
+ {
+ int i;
+
+ /* This loop will stop at the first prefix match, so
+ look through the modes in reverse order, in case
+ there are extra CC modes and CC is a prefix of the
+ CC modes (as it should be). */
+ for (i = (MAX_MACHINE_MODE) - 1; i >= 0; i--)
+ {
+ const char *p, *q;
+ for (p = GET_MODE_NAME(i), q = name; *p; p++, q++)
+ if (TOLOWER (*p) != *q)
+ break;
+ if (*p == 0
+ && (! force_int || mode_class[i] == MODE_INT
+ || mode_class[i] == MODE_VECTOR_INT)
+ && (! force_partial_int
+ || mode_class[i] == MODE_INT
+ || mode_class[i] == MODE_PARTIAL_INT
+ || mode_class[i] == MODE_VECTOR_INT)
+ && (! force_float
+ || mode_class[i] == MODE_FLOAT
+ || mode_class[i] == MODE_DECIMAL_FLOAT
+ || mode_class[i] == MODE_COMPLEX_FLOAT
+ || mode_class[i] == MODE_VECTOR_FLOAT)
+ && (! force_fixed
+ || mode_class[i] == MODE_FRACT
+ || mode_class[i] == MODE_UFRACT
+ || mode_class[i] == MODE_ACCUM
+ || mode_class[i] == MODE_UACCUM
+ || mode_class[i] == MODE_VECTOR_FRACT
+ || mode_class[i] == MODE_VECTOR_UFRACT
+ || mode_class[i] == MODE_VECTOR_ACCUM
+ || mode_class[i] == MODE_VECTOR_UACCUM))
+ break;
+ }
+
+ if (i < 0)
+ return false;
+ name += strlen (GET_MODE_NAME (i));
+ if (*pat == 'a')
+ p->m1 = i;
+ else
+ p->m2 = i;
+
+ force_int = false;
+ force_partial_int = false;
+ force_float = false;
+ force_fixed = false;
+ }
+ break;
+
+ default:
+ gcc_unreachable ();
+ }
+ }
+}
static void
gen_insn (rtx insn)
{
const char *name = XSTR (insn, 0);
- int m1 = 0, m2 = 0, op = 0;
- size_t pindex;
- int i;
- const char *np, *pp, *p, *q;
-
- /* Don't mention instructions whose names are the null string.
- They are in the machine description just to be recognized. */
- if (*name == 0)
- return;
+ pattern p;
+ unsigned pindex;
- /* See if NAME matches one of the patterns we have for the optabs we know
- about. */
+ /* Don't mention "unnamed" instructions. */
+ if (*name == 0 || *name == '*')
+ return;
+ p.name = name;
+ /* See if NAME matches one of the patterns we have for the optabs
+ we know about. */
for (pindex = 0; pindex < ARRAY_SIZE (optabs); pindex++)
{
- int force_float = 0, force_int = 0, force_partial_int = 0;
- int force_fixed = 0;
- int force_wider = 0;
- int matches = 1;
-
- for (pp = optabs[pindex]; pp[0] != '$' || pp[1] != '('; pp++)
- ;
-
- for (pp += 2, np = name; matches && ! (pp[0] == '$' && pp[1] == ')');
- pp++)
+ p.m1 = p.m2 = 0;
+ if (match_pattern (&p, name, optabs[pindex].pattern))
{
- if (*pp != '$')
- {
- if (*pp != *np++)
- break;
- }
- else
- switch (*++pp)
- {
- case 'N':
- force_wider = 1;
- break;
- case 'I':
- force_int = 1;
- break;
- case 'P':
- force_partial_int = 1;
- break;
- case 'F':
- force_float = 1;
- break;
- case 'Q':
- force_fixed = 1;
- break;
- case 'V':
- break;
- case 'c':
- for (op = 0; op < NUM_RTX_CODE; op++)
- {
- for (p = GET_RTX_NAME(op), q = np; *p; p++, q++)
- if (*p != *q)
- break;
-
- /* We have to be concerned about matching "gt" and
- missing "gtu", e.g., so verify we have reached the
- end of thing we are to match. */
- if (*p == 0 && *q == 0
- && (GET_RTX_CLASS (op) == RTX_COMPARE
- || GET_RTX_CLASS (op) == RTX_COMM_COMPARE))
- break;
- }
-
- if (op == NUM_RTX_CODE)
- matches = 0;
- else
- np += strlen (GET_RTX_NAME(op));
- break;
- case 'a':
- case 'b':
- /* This loop will stop at the first prefix match, so
- look through the modes in reverse order, in case
- there are extra CC modes and CC is a prefix of the
- CC modes (as it should be). */
- for (i = (MAX_MACHINE_MODE) - 1; i >= 0; i--)
- {
- for (p = GET_MODE_NAME(i), q = np; *p; p++, q++)
- if (TOLOWER (*p) != *q)
- break;
-
- if (*p == 0
- && (! force_int || mode_class[i] == MODE_INT
- || mode_class[i] == MODE_VECTOR_INT)
- && (! force_partial_int
- || mode_class[i] == MODE_INT
- || mode_class[i] == MODE_PARTIAL_INT
- || mode_class[i] == MODE_VECTOR_INT)
- && (! force_float
- || mode_class[i] == MODE_FLOAT
- || mode_class[i] == MODE_DECIMAL_FLOAT
- || mode_class[i] == MODE_COMPLEX_FLOAT
- || mode_class[i] == MODE_VECTOR_FLOAT)
- && (! force_fixed
- || mode_class[i] == MODE_FRACT
- || mode_class[i] == MODE_UFRACT
- || mode_class[i] == MODE_ACCUM
- || mode_class[i] == MODE_UACCUM
- || mode_class[i] == MODE_VECTOR_FRACT
- || mode_class[i] == MODE_VECTOR_UFRACT
- || mode_class[i] == MODE_VECTOR_ACCUM
- || mode_class[i] == MODE_VECTOR_UACCUM)
- && (! force_wider
- || *pp == 'a'
- || m1 < i))
- break;
- }
-
- if (i < 0)
- matches = 0;
- else if (*pp == 'a')
- m1 = i, np += strlen (GET_MODE_NAME(i));
- else
- m2 = i, np += strlen (GET_MODE_NAME(i));
-
- force_int = force_partial_int = force_float = force_fixed = 0;
- break;
-
- default:
- gcc_unreachable ();
- }
+ p.op = optabs[pindex].op;
+ p.sort_num = (p.op << 16) | (p.m2 << 8) | p.m1;
+ VEC_safe_push (pattern, heap, patterns, &p);
+ return;
}
-
- if (matches && pp[0] == '$' && pp[1] == ')'
- && *np == 0)
- break;
}
+}
- if (pindex == ARRAY_SIZE (optabs))
- return;
+static int
+pattern_cmp (const void *va, const void *vb)
+{
+ const pattern *a = (const pattern *)va;
+ const pattern *b = (const pattern *)vb;
+ return a->sort_num - b->sort_num;
+}
- /* We found a match. If this pattern is only conditionally present,
- write out the "if" and two extra blanks. */
+static int
+optab_kind_cmp (const void *va, const void *vb)
+{
+ const optab_def *a = (const optab_def *)va;
+ const optab_def *b = (const optab_def *)vb;
+ int diff = a->kind - b->kind;
+ if (diff == 0)
+ diff = a->op - b->op;
+ return diff;
+}
- if (*XSTR (insn, 2) != 0)
- printf (" if (HAVE_%s)\n ", name);
+static int
+optab_rcode_cmp (const void *va, const void *vb)
+{
+ const optab_def *a = (const optab_def *)va;
+ const optab_def *b = (const optab_def *)vb;
+ return a->rcode - b->rcode;
+}
- printf (" ");
+static const char *header_file_name = "init-opinit.h";
+static const char *source_file_name = "init-opinit.c";
- /* Now write out the initialization, making all required substitutions. */
- for (pp = optabs[pindex]; *pp; pp++)
+static bool
+handle_arg (const char *arg)
+{
+ switch (arg[1])
{
- if (*pp != '$')
- putchar (*pp);
- else
- switch (*++pp)
- {
- case '(': case ')':
- case 'I': case 'F': case 'N':
- break;
- case 'V':
- if (SCALAR_FLOAT_MODE_P (m1))
- printf ("v");
- break;
- case 'a':
- for (np = GET_MODE_NAME(m1); *np; np++)
- putchar (TOLOWER (*np));
- break;
- case 'b':
- for (np = GET_MODE_NAME(m2); *np; np++)
- putchar (TOLOWER (*np));
- break;
- case 'A':
- printf ("%smode", GET_MODE_NAME(m1));
- break;
- case 'B':
- printf ("%smode", GET_MODE_NAME(m2));
- break;
- case 'c':
- printf ("%s", GET_RTX_NAME(op));
- break;
- case 'C':
- for (np = GET_RTX_NAME(op); *np; np++)
- putchar (TOUPPER (*np));
- break;
- }
+ case 'h':
+ header_file_name = &arg[2];
+ return true;
+ case 'c':
+ source_file_name = &arg[2];
+ return true;
+ default:
+ return false;
}
-
- printf (";\n");
}
-extern int main (int, char **);
+static FILE *
+open_outfile (const char *file_name)
+{
+ FILE *f = fopen (file_name, "w");
+ if (!f)
+ fatal ("cannot open file %s: %s", file_name, xstrerror (errno));
+ fprintf (f,
+ "/* Generated automatically by the program `genopinit'\n"
+ " from the machine description file `md'. */\n\n");
+ return f;
+}
int
main (int argc, char **argv)
{
- rtx desc;
+ FILE *h_file, *s_file;
+ unsigned int i, j, n, last_kind[5];
+ pattern *p;
progname = "genopinit";
- if (!init_rtx_reader_args (argc, argv))
+ if (NUM_OPTABS > 0xffff || MAX_MACHINE_MODE >= 0xff)
+ fatal ("genopinit range assumptions invalid");
+
+ if (!init_rtx_reader_args_cb (argc, argv, handle_arg))
return (FATAL_EXIT_CODE);
- printf ("/* Generated automatically by the program `genopinit'\n\
-from the machine description file `md'. */\n\n");
-
- printf ("#include \"config.h\"\n");
- printf ("#include \"system.h\"\n");
- printf ("#include \"coretypes.h\"\n");
- printf ("#include \"tm.h\"\n");
- printf ("#include \"rtl.h\"\n");
- printf ("#include \"tm_p.h\"\n");
- printf ("#include \"flags.h\"\n");
- printf ("#include \"insn-config.h\"\n");
- printf ("#include \"recog.h\"\n");
- printf ("#include \"expr.h\"\n");
- printf ("#include \"optabs.h\"\n");
- printf ("#include \"reload.h\"\n\n");
-
- printf ("void\ninit_all_optabs (void)\n{\n");
-
- puts ("\
-#ifdef FIXUNS_TRUNC_LIKE_FIX_TRUNC\n\
- int i, j;\n\
-#endif\n");
+ h_file = open_outfile (header_file_name);
+ s_file = open_outfile (source_file_name);
/* Read the machine description. */
-
while (1)
{
int line_no, insn_code_number = 0;
-
- desc = read_md_rtx (&line_no, &insn_code_number);
+ rtx desc = read_md_rtx (&line_no, &insn_code_number);
if (desc == NULL)
break;
-
if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)
gen_insn (desc);
}
- puts ("\
-\n\
-#ifdef FIXUNS_TRUNC_LIKE_FIX_TRUNC\n\
- /* This flag says the same insns that convert to a signed fixnum\n\
- also convert validly to an unsigned one. */\n\
- for (i = 0; i < NUM_MACHINE_MODES; i++)\n\
- for (j = 0; j < NUM_MACHINE_MODES; j++)\n\
- set_convert_optab_handler\n\
- (ufixtrunc_optab, (enum machine_mode) i, (enum machine_mode) j,\n\
- convert_optab_handler (sfixtrunc_optab, (enum machine_mode) i,\n\
- (enum machine_mode) j));\n\
-#endif\n\
-}");
-
- fflush (stdout);
- return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+ /* Sort the collected patterns. */
+ qsort (VEC_address (pattern, patterns), VEC_length (pattern, patterns),
+ sizeof (pattern), pattern_cmp);
+
+ /* Now that we've handled the "extra" patterns, eliminate them from
+ the optabs array. That way they don't get in the way below. */
+ n = ARRAY_SIZE (optabs);
+ for (i = 0; i < n; )
+ if (optabs[i].base == NULL)
+ optabs[i] = optabs[--n];
+ else
+ ++i;
+
+ /* Sort the (real) optabs. Better than forcing the optabs.def file to
+ remain sorted by kind. We also scrogged any real ordering with the
+ purging of the X patterns above. */
+ qsort (optabs, n, sizeof(optab_def), optab_kind_cmp);
+
+ /* Emit the optab enumeration for the header file. */
+ fprintf (h_file, "enum optab_tag {\n");
+ for (i = j = 0; i < n; ++i)
+ {
+ optabs[i].op = i;
+ fprintf (h_file, " %s,\n", optabs[i].name);
+ if (optabs[i].kind != j)
+ last_kind[j++] = i - 1;
+ }
+ fprintf (h_file, " FIRST_CONV_OPTAB = %s,\n", optabs[last_kind[0]+1].name);
+ fprintf (h_file, " LAST_CONVLIB_OPTAB = %s,\n", optabs[last_kind[1]].name);
+ fprintf (h_file, " LAST_CONV_OPTAB = %s,\n", optabs[last_kind[2]].name);
+ fprintf (h_file, " FIRST_NORM_OPTAB = %s,\n", optabs[last_kind[2]+1].name);
+ fprintf (h_file, " LAST_NORMLIB_OPTAB = %s,\n", optabs[last_kind[3]].name);
+ fprintf (h_file, " LAST_NORM_OPTAB = %s\n", optabs[i-1].name);
+ fprintf (h_file, "};\n\n");
+
+ fprintf (h_file, "#define NUM_OPTABS %u\n", n);
+ fprintf (h_file, "#define NUM_CONVLIB_OPTABS %u\n",
+ last_kind[1] - last_kind[0]);
+ fprintf (h_file, "#define NUM_NORMLIB_OPTABS %u\n",
+ last_kind[3] - last_kind[2]);
+ fprintf (h_file, "#define NUM_OPTAB_PATTERNS %u\n",
+ (unsigned) VEC_length (pattern, patterns));
+
+ fprintf (s_file,
+ "#include \"config.h\"\n"
+ "#include \"system.h\"\n"
+ "#include \"coretypes.h\"\n"
+ "#include \"tm.h\"\n"
+ "#include \"rtl.h\"\n"
+ "#include \"tm_p.h\"\n"
+ "#include \"flags.h\"\n"
+ "#include \"insn-config.h\"\n"
+ "#include \"expr.h\"\n"
+ "#include \"optabs.h\"\n"
+ "\n"
+ "struct optab_pat {\n"
+ " unsigned scode;\n"
+ " enum insn_code icode;\n"
+ "};\n\n");
+
+ fprintf (s_file,
+ "static const struct optab_pat pats[NUM_OPTAB_PATTERNS] = {\n");
+ for (i = 0; VEC_iterate (pattern, patterns, i, p); ++i)
+ fprintf (s_file, " { %#08x, CODE_FOR_%s },\n", p->sort_num, p->name);
+ fprintf (s_file, "};\n\n");
+
+ fprintf (s_file, "void\ninit_all_optabs (void)\n{\n");
+ fprintf (s_file, " bool *ena = this_target_optabs->pat_enable;\n");
+ for (i = 0; VEC_iterate (pattern, patterns, i, p); ++i)
+ fprintf (s_file, " ena[%u] = HAVE_%s;\n", i, p->name);
+ fprintf (s_file, "}\n\n");
+
+ /* Perform a binary search on a pre-encoded optab+mode*2. */
+ /* ??? Perhaps even better to generate a minimal perfect hash.
+ Using gperf directly is awkward since it's so geared to working
+ with strings. Plus we have no visibility into the ordering of
+ the hash entries, which complicates the pat_enable array. */
+ fprintf (s_file,
+ "static int\n"
+ "lookup_handler (unsigned scode)\n"
+ "{\n"
+ " int l = 0, h = ARRAY_SIZE (pats), m;\n"
+ " while (h > l)\n"
+ " {\n"
+ " m = (h + l) / 2;\n"
+ " if (scode == pats[m].scode)\n"
+ " return m;\n"
+ " else if (scode < pats[m].scode)\n"
+ " h = m;\n"
+ " else\n"
+ " l = m + 1;\n"
+ " }\n"
+ " return -1;\n"
+ "}\n\n");
+
+ fprintf (s_file,
+ "enum insn_code\n"
+ "raw_optab_handler (unsigned scode)\n"
+ "{\n"
+ " int i = lookup_handler (scode);\n"
+ " return (i >= 0 && this_target_optabs->pat_enable[i]\n"
+ " ? pats[i].icode : CODE_FOR_nothing);\n"
+ "}\n\n");
+
+ fprintf (s_file,
+ "bool\n"
+ "swap_optab_enable (optab op, enum machine_mode m, bool set)\n"
+ "{\n"
+ " unsigned scode = (op << 16) | m;\n"
+ " int i = lookup_handler (scode);\n"
+ " if (i >= 0)\n"
+ " {\n"
+ " bool ret = this_target_optabs->pat_enable[i];\n"
+ " this_target_optabs->pat_enable[i] = set;\n"
+ " return ret;\n"
+ " }\n"
+ " else\n"
+ " {\n"
+ " gcc_assert (!set);\n"
+ " return false;\n"
+ " }\n"
+ "}\n\n");
+
+ /* C++ (even G++) does not support (non-trivial) designated initializers.
+ To work around that, generate these arrays programatically rather than
+ by our traditional multiple inclusion of def files. */
+
+ fprintf (s_file,
+ "const struct convert_optab_libcall_d "
+ "convlib_def[NUM_CONVLIB_OPTABS] = {\n");
+ for (i = last_kind[0] + 1; i <= last_kind[1]; ++i)
+ fprintf (s_file, " { %s, %s },\n", optabs[i].base, optabs[i].libcall);
+ fprintf (s_file, "};\n\n");
+
+ fprintf (s_file,
+ "const struct optab_libcall_d "
+ "normlib_def[NUM_NORMLIB_OPTABS] = {\n");
+ for (i = last_kind[2] + 1; i <= last_kind[3]; ++i)
+ fprintf (s_file, " { %s, %s, %s },\n",
+ optabs[i].suffix, optabs[i].base, optabs[i].libcall);
+ fprintf (s_file, "};\n\n");
+
+ fprintf (s_file, "enum rtx_code const optab_to_code_[NUM_OPTABS] = {\n");
+ for (i = 0; i < n; ++i)
+ fprintf (s_file, " %s,\n", rtx_upname[optabs[i].fcode]);
+ fprintf (s_file, "};\n\n");
+
+ qsort (optabs, n, sizeof (optab_def), optab_rcode_cmp);
+
+ fprintf (s_file, "const optab code_to_optab_[NUM_RTX_CODE] = {\n");
+ for (j = 0; optabs[j].rcode == UNKNOWN; ++j)
+ continue;
+ for (i = 0; i < NON_GENERATOR_NUM_RTX_CODE; ++i)
+ {
+ if (j < n && optabs[j].rcode == i)
+ fprintf (s_file, " %s,\n", optabs[j++].name);
+ else
+ fprintf (s_file, " unknown_optab,\n");
+ }
+ fprintf (s_file, "};\n\n");
+
+ return (fclose (h_file) == 0 && fclose (s_file) == 0
+ ? SUCCESS_EXIT_CODE : FATAL_EXIT_CODE);
}
diff --git a/gcc/genoutput.c b/gcc/genoutput.c
index bae2381c9aa..2c6104cb25a 100644
--- a/gcc/genoutput.c
+++ b/gcc/genoutput.c
@@ -1,6 +1,7 @@
/* Generate code from to output assembler insns as recognized from rtl.
Copyright (C) 1987, 1988, 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002,
- 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2012
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -171,9 +172,16 @@ struct data
struct operand_data operand[MAX_MAX_OPERANDS];
};
+/* A dummy insn, for CODE_FOR_nothing. */
+static struct data nothing;
+
/* This variable points to the first link in the insn chain. */
+static struct data *idata = &nothing;
+
+/* This variable points to the end of the insn chain. This is where
+ everything relevant from the machien description is appended to. */
+static struct data **idata_end = &nothing.next;
-static struct data *idata, **idata_end = &idata;
static void output_prologue (void);
static void output_operand_data (void);
@@ -987,6 +995,14 @@ gen_split (rtx split, int lineno)
place_operands (d);
}
+static void
+init_insn_for_nothing (void)
+{
+ memset (&nothing, 0, sizeof (nothing));
+ nothing.name = "*placeholder_for_nothing";
+ nothing.filename = "<internal>";
+}
+
extern int main (int, char **);
int
@@ -996,11 +1012,12 @@ main (int argc, char **argv)
progname = "genoutput";
+ init_insn_for_nothing ();
+
if (!init_rtx_reader_args (argc, argv))
return (FATAL_EXIT_CODE);
output_prologue ();
- next_code_number = 0;
next_index_number = 0;
/* Read the machine description. */
@@ -1158,7 +1175,7 @@ note_constraint (rtx exp, int lineno)
}
}
new_cdata = XNEWVAR (struct constraint_data, sizeof (struct constraint_data) + namelen);
- strcpy ((char *)new_cdata + offsetof(struct constraint_data, name), name);
+ strcpy (CONST_CAST(char *, new_cdata->name), name);
new_cdata->namelen = namelen;
new_cdata->lineno = lineno;
new_cdata->next_this_letter = *slot;
diff --git a/gcc/genpeep.c b/gcc/genpeep.c
index a6f1033eada..dfbf037407a 100644
--- a/gcc/genpeep.c
+++ b/gcc/genpeep.c
@@ -1,6 +1,6 @@
/* Generate code from machine description to perform peephole optimizations.
Copyright (C) 1987, 1989, 1992, 1997, 1998, 1999, 2000, 2003, 2004,
- 2007, 2010 Free Software Foundation, Inc.
+ 2007, 2010, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -47,18 +47,13 @@ static int max_opno;
static int n_operands;
-/* Peephole optimizations get insn codes just like insn patterns.
- Count them so we know the code of the define_peephole we are handling. */
-
-static int insn_code_number = 0;
-
-static void gen_peephole (rtx);
+static void gen_peephole (rtx, int);
static void match_rtx (rtx, struct link *, int);
static void print_path (struct link *);
static void print_code (RTX_CODE);
static void
-gen_peephole (rtx peep)
+gen_peephole (rtx peep, int insn_code_number)
{
int ninsns = XVECLEN (peep, 0);
int i;
@@ -392,24 +387,15 @@ from the machine description file `md'. */\n\n");
while (1)
{
- int line_no, rtx_number = 0;
+ int line_no;
+ int insn_code_number;
- desc = read_md_rtx (&line_no, &rtx_number);
+ desc = read_md_rtx (&line_no, &insn_code_number);
if (desc == NULL)
break;
- if (GET_CODE (desc) == DEFINE_PEEPHOLE)
- {
- gen_peephole (desc);
- insn_code_number++;
- }
- if (GET_CODE (desc) == DEFINE_INSN
- || GET_CODE (desc) == DEFINE_EXPAND
- || GET_CODE (desc) == DEFINE_SPLIT
- || GET_CODE (desc) == DEFINE_PEEPHOLE2)
- {
- insn_code_number++;
- }
+ if (GET_CODE (desc) == DEFINE_PEEPHOLE)
+ gen_peephole (desc, insn_code_number);
}
printf (" return 0;\n}\n\n");
diff --git a/gcc/gensupport.c b/gcc/gensupport.c
index e56291e3a38..44443e2dce3 100644
--- a/gcc/gensupport.c
+++ b/gcc/gensupport.c
@@ -1,6 +1,6 @@
/* Support routines for the various generation passes.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010, Free Software Foundation, Inc.
+ 2010, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -38,6 +38,10 @@ int insn_elision = 1;
static struct obstack obstack;
struct obstack *rtl_obstack = &obstack;
+/* Counter for patterns that generate code: define_insn, define_expand,
+ define_split, define_peephole, and define_peephole2. See read_md_rtx().
+ Any define_insn_and_splits are already in separate queues so that the
+ insn and the splitter get a unique number also. */
static int sequence_num;
static int predicable_default;
@@ -1397,7 +1401,9 @@ init_rtx_reader_args_cb (int argc, char **argv,
condition_table = htab_create (500, hash_c_test, cmp_c_test, NULL);
init_predicate_table ();
obstack_init (rtl_obstack);
- sequence_num = 0;
+
+ /* Start at 1, to make 0 available for CODE_FOR_nothing. */
+ sequence_num = 1;
read_md_files (argc, argv, parse_opt, rtx_handle_directive);
@@ -1419,7 +1425,11 @@ init_rtx_reader_args (int argc, char **argv)
return init_rtx_reader_args_cb (argc, argv, 0);
}
-/* The entry point for reading a single rtx from an md file. */
+/* The entry point for reading a single rtx from an md file. Return
+ the rtx, or NULL if the md file has been fully processed.
+ Return the line where the rtx was found in LINENO.
+ Return the number of code generating rtx'en read since the start
+ of the md file in SEQNR. */
rtx
read_md_rtx (int *lineno, int *seqnr)
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c
index 3ff64ffdd7d..6a997238629 100644
--- a/gcc/ggc-common.c
+++ b/gcc/ggc-common.c
@@ -845,8 +845,6 @@ init_ggc_heuristics (void)
#endif
}
-#ifdef GATHER_STATISTICS
-
/* Datastructure used to store per-call-site statistics. */
struct loc_descriptor
{
@@ -1040,16 +1038,18 @@ add_statistics (void **slot, void *b)
}
/* Dump per-site memory statistics. */
-#endif
+
void
-dump_ggc_loc_statistics (bool final ATTRIBUTE_UNUSED)
+dump_ggc_loc_statistics (bool final)
{
-#ifdef GATHER_STATISTICS
int nentries = 0;
char s[4096];
size_t collected = 0, freed = 0, allocated = 0, overhead = 0, times = 0;
int i;
+ if (! GATHER_STATISTICS)
+ return;
+
ggc_force_collect = true;
ggc_collect ();
@@ -1102,5 +1102,4 @@ dump_ggc_loc_statistics (bool final ATTRIBUTE_UNUSED)
"source location", "Garbage", "Freed", "Leak", "Overhead", "Times");
fprintf (stderr, "-------------------------------------------------------\n");
ggc_force_collect = false;
-#endif
}
diff --git a/gcc/ggc-internal.h b/gcc/ggc-internal.h
index 7b875eec9cb..dcb048777e5 100644
--- a/gcc/ggc-internal.h
+++ b/gcc/ggc-internal.h
@@ -94,7 +94,7 @@ extern void ggc_pch_read (FILE *, void *);
/* When set, ggc_collect will do collection. */
extern bool ggc_force_collect;
-extern void ggc_record_overhead (size_t, size_t, void * MEM_STAT_DECL);
+extern void ggc_record_overhead (size_t, size_t, void * FINAL_MEM_STAT_DECL);
extern void ggc_free_overhead (void *);
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c
index ff23092b1d7..ca3f6325fa9 100644
--- a/gcc/ggc-page.c
+++ b/gcc/ggc-page.c
@@ -432,7 +432,6 @@ static struct globals
struct free_object *free_object_list;
#endif
-#ifdef GATHER_STATISTICS
struct
{
/* Total GC-allocated memory. */
@@ -459,7 +458,6 @@ static struct globals
/* The overhead for each of the allocation orders. */
unsigned long long total_overhead_per_order[NUM_ORDERS];
} stats;
-#endif
} G;
/* The size in bytes required to maintain a bitmap for the objects
@@ -1324,10 +1322,9 @@ ggc_internal_alloc_stat (size_t size MEM_STAT_DECL)
/* Calculate the object's address. */
result = entry->page + object_offset;
-#ifdef GATHER_STATISTICS
- ggc_record_overhead (OBJECT_SIZE (order), OBJECT_SIZE (order) - size,
- result PASS_MEM_STAT);
-#endif
+ if (GATHER_STATISTICS)
+ ggc_record_overhead (OBJECT_SIZE (order), OBJECT_SIZE (order) - size,
+ result FINAL_PASS_MEM_STAT);
#ifdef ENABLE_GC_CHECKING
/* Keep poisoning-by-writing-0xaf the object, in an attempt to keep the
@@ -1358,32 +1355,31 @@ ggc_internal_alloc_stat (size_t size MEM_STAT_DECL)
/* For timevar statistics. */
timevar_ggc_mem_total += object_size;
-#ifdef GATHER_STATISTICS
- {
- size_t overhead = object_size - size;
+ if (GATHER_STATISTICS)
+ {
+ size_t overhead = object_size - size;
- G.stats.total_overhead += overhead;
- G.stats.total_allocated += object_size;
- G.stats.total_overhead_per_order[order] += overhead;
- G.stats.total_allocated_per_order[order] += object_size;
+ G.stats.total_overhead += overhead;
+ G.stats.total_allocated += object_size;
+ G.stats.total_overhead_per_order[order] += overhead;
+ G.stats.total_allocated_per_order[order] += object_size;
- if (size <= 32)
- {
- G.stats.total_overhead_under32 += overhead;
- G.stats.total_allocated_under32 += object_size;
- }
- if (size <= 64)
- {
- G.stats.total_overhead_under64 += overhead;
- G.stats.total_allocated_under64 += object_size;
- }
- if (size <= 128)
- {
- G.stats.total_overhead_under128 += overhead;
- G.stats.total_allocated_under128 += object_size;
- }
- }
-#endif
+ if (size <= 32)
+ {
+ G.stats.total_overhead_under32 += overhead;
+ G.stats.total_allocated_under32 += object_size;
+ }
+ if (size <= 64)
+ {
+ G.stats.total_overhead_under64 += overhead;
+ G.stats.total_allocated_under64 += object_size;
+ }
+ if (size <= 128)
+ {
+ G.stats.total_overhead_under128 += overhead;
+ G.stats.total_allocated_under128 += object_size;
+ }
+ }
if (GGC_DEBUG_LEVEL >= 3)
fprintf (G.debug_file,
@@ -1445,6 +1441,26 @@ gt_ggc_m_S (const void *p)
return;
}
+
+/* User-callable entry points for marking string X. */
+
+void
+gt_ggc_mx (const char *& x)
+{
+ gt_ggc_m_S (x);
+}
+
+void
+gt_ggc_mx (unsigned char *& x)
+{
+ gt_ggc_m_S (x);
+}
+
+void
+gt_ggc_mx (unsigned char& x ATTRIBUTE_UNUSED)
+{
+}
+
/* If P is not marked, marks it and return false. Otherwise return true.
P must have been allocated by the GC allocator; it mustn't point to
static objects, stack variables, or memory allocated with malloc. */
@@ -1524,9 +1540,8 @@ ggc_free (void *p)
size_t order = pe->order;
size_t size = OBJECT_SIZE (order);
-#ifdef GATHER_STATISTICS
- ggc_free_overhead (p);
-#endif
+ if (GATHER_STATISTICS)
+ ggc_free_overhead (p);
if (GGC_DEBUG_LEVEL >= 3)
fprintf (G.debug_file,
@@ -2070,9 +2085,10 @@ ggc_collect (void)
clear_marks ();
ggc_mark_roots ();
-#ifdef GATHER_STATISTICS
- ggc_prune_overhead_list ();
-#endif
+
+ if (GATHER_STATISTICS)
+ ggc_prune_overhead_list ();
+
poison_pages ();
validate_free_objects ();
sweep_pages ();
@@ -2160,40 +2176,39 @@ ggc_print_statistics (void)
SCALE (G.allocated), STAT_LABEL(G.allocated),
SCALE (total_overhead), STAT_LABEL (total_overhead));
-#ifdef GATHER_STATISTICS
- {
- fprintf (stderr, "\nTotal allocations and overheads during the compilation process\n");
-
- fprintf (stderr, "Total Overhead: %10lld\n",
- G.stats.total_overhead);
- fprintf (stderr, "Total Allocated: %10lld\n",
- G.stats.total_allocated);
-
- fprintf (stderr, "Total Overhead under 32B: %10lld\n",
- G.stats.total_overhead_under32);
- fprintf (stderr, "Total Allocated under 32B: %10lld\n",
- G.stats.total_allocated_under32);
- fprintf (stderr, "Total Overhead under 64B: %10lld\n",
- G.stats.total_overhead_under64);
- fprintf (stderr, "Total Allocated under 64B: %10lld\n",
- G.stats.total_allocated_under64);
- fprintf (stderr, "Total Overhead under 128B: %10lld\n",
- G.stats.total_overhead_under128);
- fprintf (stderr, "Total Allocated under 128B: %10lld\n",
- G.stats.total_allocated_under128);
-
- for (i = 0; i < NUM_ORDERS; i++)
- if (G.stats.total_allocated_per_order[i])
- {
- fprintf (stderr, "Total Overhead page size %7lu: %10lld\n",
- (unsigned long) OBJECT_SIZE (i),
- G.stats.total_overhead_per_order[i]);
- fprintf (stderr, "Total Allocated page size %7lu: %10lld\n",
- (unsigned long) OBJECT_SIZE (i),
- G.stats.total_allocated_per_order[i]);
- }
+ if (GATHER_STATISTICS)
+ {
+ fprintf (stderr, "\nTotal allocations and overheads during the compilation process\n");
+
+ fprintf (stderr, "Total Overhead: %10lld\n",
+ G.stats.total_overhead);
+ fprintf (stderr, "Total Allocated: %10lld\n",
+ G.stats.total_allocated);
+
+ fprintf (stderr, "Total Overhead under 32B: %10lld\n",
+ G.stats.total_overhead_under32);
+ fprintf (stderr, "Total Allocated under 32B: %10lld\n",
+ G.stats.total_allocated_under32);
+ fprintf (stderr, "Total Overhead under 64B: %10lld\n",
+ G.stats.total_overhead_under64);
+ fprintf (stderr, "Total Allocated under 64B: %10lld\n",
+ G.stats.total_allocated_under64);
+ fprintf (stderr, "Total Overhead under 128B: %10lld\n",
+ G.stats.total_overhead_under128);
+ fprintf (stderr, "Total Allocated under 128B: %10lld\n",
+ G.stats.total_allocated_under128);
+
+ for (i = 0; i < NUM_ORDERS; i++)
+ if (G.stats.total_allocated_per_order[i])
+ {
+ fprintf (stderr, "Total Overhead page size %7lu: %10lld\n",
+ (unsigned long) OBJECT_SIZE (i),
+ G.stats.total_overhead_per_order[i]);
+ fprintf (stderr, "Total Allocated page size %7lu: %10lld\n",
+ (unsigned long) OBJECT_SIZE (i),
+ G.stats.total_allocated_per_order[i]);
+ }
}
-#endif
}
struct ggc_pch_ondisk
diff --git a/gcc/ggc-zone.c b/gcc/ggc-zone.c
index e93cfec9b8c..7a01cf4121d 100644
--- a/gcc/ggc-zone.c
+++ b/gcc/ggc-zone.c
@@ -290,10 +290,8 @@ typedef struct page_entry
/* The zone that this page entry belongs to. */
struct alloc_zone *zone;
-#ifdef GATHER_STATISTICS
/* How many collections we've survived. */
size_t survived;
-#endif
/* What kind of page is this. Never zero! */
enum page_kind_en page_kind;
@@ -492,7 +490,6 @@ struct alloc_zone
/* True if this zone should be destroyed after the next collection. */
bool dead;
-#ifdef GATHER_STATISTICS
struct
{
/* Total GC-allocated memory. */
@@ -513,7 +510,6 @@ struct alloc_zone
unsigned long long total_allocated_under128;
unsigned long long total_overhead_under128;
} stats;
-#endif
} main_zone;
/* Some default zones. */
@@ -1085,9 +1081,7 @@ alloc_large_page (size_t size, struct alloc_zone *zone)
entry->common.page = page + sizeof (struct large_page_entry);
entry->common.page_kind = GGCZON_LARGE_PAGE;
entry->common.zone = zone;
-#ifdef GATHER_STATISTICS
entry->common.survived = 0;
-#endif
entry->mark_p = false;
entry->bytes = size;
entry->prev = NULL;
@@ -1405,9 +1399,7 @@ ggc_internal_alloc_zone_stat (size_t orig_size, struct alloc_zone *zone
{
struct large_page_entry *entry = alloc_large_page (size, zone);
-#ifdef GATHER_STATISTICS
entry->common.survived = 0;
-#endif
entry->common.next_page = (struct page_entry*) (zone->large_pages);
if (zone->large_pages)
@@ -1470,8 +1462,8 @@ ggc_internal_alloc_zone_stat (size_t orig_size, struct alloc_zone *zone
timevar_ggc_mem_total += size;
-#ifdef GATHER_STATISTICS
- ggc_record_overhead (orig_size, size - orig_size, result PASS_MEM_STAT);
+ if (GATHER_STATISTICS)
+ ggc_record_overhead (orig_size, size - orig_size, result FINAL_PASS_MEM_STAT);
{
size_t object_size = size;
@@ -1578,9 +1570,8 @@ ggc_free (void *p)
struct page_entry *page;
size_t size;
-#ifdef GATHER_STATISTICS
- ggc_free_overhead (p);
-#endif
+ if (GATHER_STATISTICS)
+ ggc_free_overhead (p);
page = zone_get_object_page (p);
size = ggc_get_size (p);
@@ -1707,6 +1698,26 @@ gt_ggc_m_S (const void *p)
ggc_set_mark (p);
}
+
+/* User-callable entry points for marking string X. */
+
+void
+gt_ggc_mx (const char *& x)
+{
+ gt_ggc_m_S (x);
+}
+
+void
+gt_ggc_mx (unsigned char *& x)
+{
+ gt_ggc_m_S (x);
+}
+
+void
+gt_ggc_mx (unsigned char& x ATTRIBUTE_UNUSED)
+{
+}
+
/* If P is not marked, mark it and return false. Otherwise return true.
P must have been allocated by the GC allocator; it mustn't point to
static objects, stack variables, or memory allocated with malloc. */
@@ -1968,10 +1979,8 @@ sweep_pages (struct alloc_zone *zone)
lnext = lp->common.next_page;
-#ifdef GATHER_STATISTICS
/* This page has now survived another collection. */
lp->common.survived++;
-#endif
if (lp->mark_p)
{
@@ -2013,10 +2022,8 @@ sweep_pages (struct alloc_zone *zone)
snext = sp->common.next_page;
-#ifdef GATHER_STATISTICS
/* This page has now survived another collection. */
sp->common.survived++;
-#endif
/* Step through all chunks, consolidate those that are free and
insert them into the free lists. Note that consolidation
@@ -2170,9 +2177,8 @@ ggc_collect_1 (struct alloc_zone *zone, bool need_marking)
{
zone_allocate_marks ();
ggc_mark_roots ();
-#ifdef GATHER_STATISTICS
- ggc_prune_overhead_list ();
-#endif
+ if (GATHER_STATISTICS)
+ ggc_prune_overhead_list ();
}
sweep_pages (zone);
@@ -2184,7 +2190,6 @@ ggc_collect_1 (struct alloc_zone *zone, bool need_marking)
return true;
}
-#ifdef GATHER_STATISTICS
/* Calculate the average page survival rate in terms of number of
collections. */
@@ -2207,7 +2212,6 @@ calculate_average_page_survival (struct alloc_zone *zone)
}
return survival/count;
}
-#endif
/* Top level collection routine. */
@@ -2269,9 +2273,8 @@ ggc_collect (void)
}
}
-#ifdef GATHER_STATISTICS
/* Print page survival stats, if someone wants them. */
- if (GGC_DEBUG_LEVEL >= 2)
+ if (GATHER_STATISTICS && GGC_DEBUG_LEVEL >= 2)
{
for (zone = G.zones; zone; zone = zone->next_zone)
{
@@ -2283,7 +2286,6 @@ ggc_collect (void)
}
}
}
-#endif
if (marked)
zone_free_marks ();
@@ -2432,54 +2434,53 @@ ggc_print_statistics (void)
SCALE (total_allocated), LABEL(total_allocated),
SCALE (total_overhead), LABEL (total_overhead));
-#ifdef GATHER_STATISTICS
- {
- unsigned long long all_overhead = 0, all_allocated = 0;
- unsigned long long all_overhead_under32 = 0, all_allocated_under32 = 0;
- unsigned long long all_overhead_under64 = 0, all_allocated_under64 = 0;
- unsigned long long all_overhead_under128 = 0, all_allocated_under128 = 0;
+ if (GATHER_STATISTICS)
+ {
+ unsigned long long all_overhead = 0, all_allocated = 0;
+ unsigned long long all_overhead_under32 = 0, all_allocated_under32 = 0;
+ unsigned long long all_overhead_under64 = 0, all_allocated_under64 = 0;
+ unsigned long long all_overhead_under128 = 0, all_allocated_under128 = 0;
- fprintf (stderr, "\nTotal allocations and overheads during the compilation process\n");
+ fprintf (stderr, "\nTotal allocations and overheads during the compilation process\n");
- for (zone = G.zones; zone; zone = zone->next_zone)
- {
- all_overhead += zone->stats.total_overhead;
- all_allocated += zone->stats.total_allocated;
+ for (zone = G.zones; zone; zone = zone->next_zone)
+ {
+ all_overhead += zone->stats.total_overhead;
+ all_allocated += zone->stats.total_allocated;
- all_allocated_under32 += zone->stats.total_allocated_under32;
- all_overhead_under32 += zone->stats.total_overhead_under32;
+ all_allocated_under32 += zone->stats.total_allocated_under32;
+ all_overhead_under32 += zone->stats.total_overhead_under32;
- all_allocated_under64 += zone->stats.total_allocated_under64;
- all_overhead_under64 += zone->stats.total_overhead_under64;
+ all_allocated_under64 += zone->stats.total_allocated_under64;
+ all_overhead_under64 += zone->stats.total_overhead_under64;
- all_allocated_under128 += zone->stats.total_allocated_under128;
- all_overhead_under128 += zone->stats.total_overhead_under128;
+ all_allocated_under128 += zone->stats.total_allocated_under128;
+ all_overhead_under128 += zone->stats.total_overhead_under128;
- fprintf (stderr, "%20s: %10lld\n",
- zone->name, zone->stats.total_allocated);
- }
+ fprintf (stderr, "%20s: %10lld\n",
+ zone->name, zone->stats.total_allocated);
+ }
- fprintf (stderr, "\n");
-
- fprintf (stderr, "Total Overhead: %10lld\n",
- all_overhead);
- fprintf (stderr, "Total Allocated: %10lld\n",
- all_allocated);
-
- fprintf (stderr, "Total Overhead under 32B: %10lld\n",
- all_overhead_under32);
- fprintf (stderr, "Total Allocated under 32B: %10lld\n",
- all_allocated_under32);
- fprintf (stderr, "Total Overhead under 64B: %10lld\n",
- all_overhead_under64);
- fprintf (stderr, "Total Allocated under 64B: %10lld\n",
- all_allocated_under64);
- fprintf (stderr, "Total Overhead under 128B: %10lld\n",
- all_overhead_under128);
- fprintf (stderr, "Total Allocated under 128B: %10lld\n",
- all_allocated_under128);
- }
-#endif
+ fprintf (stderr, "\n");
+
+ fprintf (stderr, "Total Overhead: %10lld\n",
+ all_overhead);
+ fprintf (stderr, "Total Allocated: %10lld\n",
+ all_allocated);
+
+ fprintf (stderr, "Total Overhead under 32B: %10lld\n",
+ all_overhead_under32);
+ fprintf (stderr, "Total Allocated under 32B: %10lld\n",
+ all_allocated_under32);
+ fprintf (stderr, "Total Overhead under 64B: %10lld\n",
+ all_overhead_under64);
+ fprintf (stderr, "Total Allocated under 64B: %10lld\n",
+ all_allocated_under64);
+ fprintf (stderr, "Total Overhead under 128B: %10lld\n",
+ all_overhead_under128);
+ fprintf (stderr, "Total Allocated under 128B: %10lld\n",
+ all_allocated_under128);
+ }
}
/* Precompiled header support. */
@@ -2694,13 +2695,14 @@ ggc_pch_read (FILE *f, void *addr)
pch_zone.page = (char *) addr;
pch_zone.end = (char *) pch_zone.alloc_bits;
- /* We've just read in a PCH file. So, every object that used to be
- allocated is now free. */
-#ifdef GATHER_STATISTICS
- zone_allocate_marks ();
- ggc_prune_overhead_list ();
- zone_free_marks ();
-#endif
+ if (GATHER_STATISTICS)
+ {
+ /* We've just read in a PCH file. So, every object that used to be
+ allocated is now free. */
+ zone_allocate_marks ();
+ ggc_prune_overhead_list ();
+ zone_free_marks ();
+ }
for (zone = G.zones; zone; zone = zone->next_zone)
{
diff --git a/gcc/ggc.h b/gcc/ggc.h
index e74d7a7394c..fa98cc04a41 100644
--- a/gcc/ggc.h
+++ b/gcc/ggc.h
@@ -32,9 +32,6 @@ extern const char empty_string[]; /* empty string */
/* Internal functions and data structures used by the GTY
machinery, including the generated gt*.[hc] files. */
-/* The first parameter is a pointer to a pointer, the second a cookie. */
-typedef void (*gt_pointer_operator) (void *, void *);
-
#include "gtype-desc.h"
/* One of these applies its third parameter (with cookie in the fourth
@@ -148,14 +145,16 @@ extern void gt_pch_save (FILE *f);
useful when GATHER_STATISTICS is required. */
/* The internal primitive. */
-extern void *ggc_internal_alloc_stat (size_t MEM_STAT_DECL);
+extern void *ggc_internal_alloc_stat (size_t MEM_STAT_DECL)
+ ATTRIBUTE_MALLOC;
extern size_t ggc_round_alloc_size (size_t requested_size);
#define ggc_internal_alloc(s) ggc_internal_alloc_stat (s MEM_STAT_INFO)
/* Allocate an object of the specified type and size. */
-extern void *ggc_alloc_typed_stat (enum gt_types_enum, size_t MEM_STAT_DECL);
+extern void *ggc_alloc_typed_stat (enum gt_types_enum, size_t MEM_STAT_DECL)
+ ATTRIBUTE_MALLOC;
/* Signature of finalizers, as known to GGC. */
@@ -171,7 +170,8 @@ extern void *ggc_finalized_alloc_stat (size_t, ggc_finalizer_t* MEM_STAT_DECL);
#define ggc_alloc_typed(s, z) ggc_alloc_typed_stat (s, z MEM_STAT_INFO)
/* Allocates cleared memory. */
-extern void *ggc_internal_cleared_alloc_stat (size_t MEM_STAT_DECL);
+extern void *ggc_internal_cleared_alloc_stat (size_t MEM_STAT_DECL)
+ ATTRIBUTE_MALLOC;
/* Resize a block. */
extern void *ggc_realloc_stat (void *, size_t MEM_STAT_DECL);
@@ -179,10 +179,6 @@ extern void *ggc_realloc_stat (void *, size_t MEM_STAT_DECL);
/* Free a block. To be used when known for certain it's not reachable. */
extern void ggc_free (void *);
-extern void ggc_record_overhead (size_t, size_t, void * MEM_STAT_DECL);
-extern void ggc_free_overhead (void *);
-extern void ggc_prune_overhead_list (void);
-
extern void dump_ggc_loc_statistics (bool);
/* Reallocators. */
@@ -218,9 +214,11 @@ ggc_alloc_atomic_stat (size_t s MEM_STAT_DECL)
#define ggc_alloc_cleared_atomic(S) \
(ggc_internal_cleared_alloc_stat ((S) MEM_STAT_INFO))
-extern void * ggc_cleared_alloc_htab_ignore_args (size_t, size_t);
+extern void *ggc_cleared_alloc_htab_ignore_args (size_t, size_t)
+ ATTRIBUTE_MALLOC;
-extern void * ggc_cleared_alloc_ptr_array_two_args (size_t, size_t);
+extern void *ggc_cleared_alloc_ptr_array_two_args (size_t, size_t)
+ ATTRIBUTE_MALLOC;
#define htab_create_ggc(SIZE, HASH, EQ, DEL) \
htab_create_typed_alloc (SIZE, HASH, EQ, DEL, \
@@ -232,7 +230,8 @@ extern void * ggc_cleared_alloc_ptr_array_two_args (size_t, size_t);
splay_tree_new_typed_alloc (COMPARE, NULL, NULL, &ALLOC_TREE, &ALLOC_NODE, \
&ggc_splay_dont_free, NULL)
-extern void *ggc_splay_alloc (enum gt_types_enum, int, void *);
+extern void *ggc_splay_alloc (enum gt_types_enum, int, void *)
+ ATTRIBUTE_MALLOC;
extern void ggc_splay_dont_free (void *, void *);
@@ -292,10 +291,12 @@ extern struct alloc_zone tree_id_zone;
/* Allocate an object into the specified allocation zone. */
extern void *ggc_internal_alloc_zone_stat (size_t,
- struct alloc_zone * MEM_STAT_DECL);
+ struct alloc_zone * MEM_STAT_DECL)
+ ATTRIBUTE_MALLOC;
extern void *ggc_internal_cleared_alloc_zone_stat (size_t,
- struct alloc_zone * MEM_STAT_DECL);
+ struct alloc_zone * MEM_STAT_DECL)
+ ATTRIBUTE_MALLOC;
static inline void *
ggc_internal_zone_alloc_stat (struct alloc_zone * z, size_t s MEM_STAT_DECL)
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 08e960363b6..19a259e774e 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -25,9 +25,8 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "flags.h"
#include "function.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "tree-flow.h"
-#include "tree-pass.h"
#include "tree-ssa-propagate.h"
#include "target.h"
#include "gimple-fold.h"
@@ -140,7 +139,7 @@ can_refer_decl_in_current_unit_p (tree decl, tree from_decl)
tree
canonicalize_constructor_val (tree cval, tree from_decl)
{
- STRIP_NOPS (cval);
+ STRIP_USELESS_TYPE_CONVERSION (cval);
if (TREE_CODE (cval) == POINTER_PLUS_EXPR
&& TREE_CODE (TREE_OPERAND (cval, 1)) == INTEGER_CST)
{
@@ -170,12 +169,7 @@ canonicalize_constructor_val (tree cval, tree from_decl)
&& !can_refer_decl_in_current_unit_p (base, from_decl))
return NULL_TREE;
if (TREE_CODE (base) == VAR_DECL)
- {
- TREE_ADDRESSABLE (base) = 1;
- if (cfun && gimple_referenced_vars (cfun)
- && !is_global_var (base))
- add_referenced_var (base);
- }
+ TREE_ADDRESSABLE (base) = 1;
else if (TREE_CODE (base) == FUNCTION_DECL)
{
/* Make sure we create a cgraph node for functions we'll reference.
@@ -654,9 +648,6 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
for (i = gsi_start (stmts); !gsi_end_p (i); gsi_next (&i))
{
new_stmt = gsi_stmt (i);
- /* The replacement can expose previously unreferenced variables. */
- if (gimple_in_ssa_p (cfun))
- find_referenced_vars_in (new_stmt);
/* If the new statement possibly has a VUSE, update it with exact SSA
name we know will reach this one. */
if (gimple_has_mem_ops (new_stmt))
@@ -745,6 +736,11 @@ get_maxval_strlen (tree arg, tree *length, bitmap visited, int type)
return true;
}
+ /* If ARG is registered for SSA update we cannot look at its defining
+ statement. */
+ if (name_registered_for_update_p (arg))
+ return false;
+
/* If we were already here, break the infinite cycle. */
if (!bitmap_set_bit (visited, SSA_NAME_VERSION (arg)))
return true;
@@ -2713,6 +2709,10 @@ get_base_constructor (tree base, HOST_WIDE_INT *bit_offset,
if (!DECL_INITIAL (base)
&& (TREE_STATIC (base) || DECL_EXTERNAL (base)))
return error_mark_node;
+ /* Do not return an error_mark_node DECL_INITIAL. LTO uses this
+ as special marker (_not_ zero ...) for its own purposes. */
+ if (DECL_INITIAL (base) == error_mark_node)
+ return NULL_TREE;
return DECL_INITIAL (base);
case ARRAY_REF:
diff --git a/gcc/gimple-fold.h b/gcc/gimple-fold.h
index 793d68a8538..e6821a9bd45 100644
--- a/gcc/gimple-fold.h
+++ b/gcc/gimple-fold.h
@@ -22,8 +22,6 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_GIMPLE_FOLD_H
#define GCC_GIMPLE_FOLD_H
-#include "coretypes.h"
-
tree fold_const_aggregate_ref_1 (tree, tree (*) (tree));
tree fold_const_aggregate_ref (tree);
diff --git a/gcc/gimple-iterator.c b/gcc/gimple-iterator.c
index 0f1d4975961..3d015667826 100644
--- a/gcc/gimple-iterator.c
+++ b/gcc/gimple-iterator.c
@@ -33,7 +33,7 @@ along with GCC; see the file COPYING3. If not see
static inline void
update_modified_stmt (gimple stmt)
{
- if (!ssa_operands_active ())
+ if (!ssa_operands_active (cfun))
return;
update_stmt_if_modified (stmt);
}
@@ -46,7 +46,7 @@ update_modified_stmts (gimple_seq seq)
{
gimple_stmt_iterator gsi;
- if (!ssa_operands_active ())
+ if (!ssa_operands_active (cfun))
return;
for (gsi = gsi_start (seq); !gsi_end_p (gsi); gsi_next (&gsi))
update_stmt_if_modified (gsi_stmt (gsi));
@@ -427,7 +427,7 @@ gsi_replace (gimple_stmt_iterator *gsi, gimple stmt, bool update_eh_info)
if (stmt == orig_stmt)
return;
- gcc_assert (!gimple_has_lhs (orig_stmt)
+ gcc_assert (!gimple_has_lhs (orig_stmt) || !gimple_has_lhs (stmt)
|| gimple_get_lhs (orig_stmt) == gimple_get_lhs (stmt));
gimple_set_location (stmt, gimple_location (orig_stmt));
diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c
index 04d4275f75b..7a51e8c271c 100644
--- a/gcc/gimple-low.c
+++ b/gcc/gimple-low.c
@@ -76,6 +76,7 @@ struct lower_data
static void lower_stmt (gimple_stmt_iterator *, struct lower_data *);
static void lower_gimple_bind (gimple_stmt_iterator *, struct lower_data *);
+static void lower_try_catch (gimple_stmt_iterator *, struct lower_data *);
static void lower_gimple_return (gimple_stmt_iterator *, struct lower_data *);
static void lower_builtin_setjmp (gimple_stmt_iterator *);
@@ -120,7 +121,7 @@ lower_function_body (void)
if (gimple_seq_may_fallthru (lowered_body)
&& (VEC_empty (return_statements_t, data.return_statements)
|| gimple_return_retval (VEC_last (return_statements_t,
- data.return_statements)->stmt) != NULL))
+ data.return_statements).stmt) != NULL))
{
x = gimple_build_return (NULL);
gimple_set_location (x, cfun->function_end_locus);
@@ -136,7 +137,7 @@ lower_function_body (void)
/* Unfortunately, we can't use VEC_pop because it returns void for
objects. */
- t = *VEC_last (return_statements_t, data.return_statements);
+ t = VEC_last (return_statements_t, data.return_statements);
VEC_truncate (return_statements_t,
data.return_statements,
VEC_length (return_statements_t,
@@ -373,31 +374,28 @@ lower_stmt (gimple_stmt_iterator *gsi, struct lower_data *data)
return;
case GIMPLE_TRY:
- {
- bool try_cannot_fallthru;
- lower_sequence (gimple_try_eval_ptr (stmt), data);
- try_cannot_fallthru = data->cannot_fallthru;
- data->cannot_fallthru = false;
- lower_sequence (gimple_try_cleanup_ptr (stmt), data);
- /* See gimple_stmt_may_fallthru for the rationale. */
- if (gimple_try_kind (stmt) == GIMPLE_TRY_FINALLY)
- {
- data->cannot_fallthru |= try_cannot_fallthru;
- gsi_next (gsi);
- return;
- }
- }
- break;
-
- case GIMPLE_CATCH:
- data->cannot_fallthru = false;
- lower_sequence (gimple_catch_handler_ptr (stmt), data);
- break;
-
- case GIMPLE_EH_FILTER:
- data->cannot_fallthru = false;
- lower_sequence (gimple_eh_filter_failure_ptr (stmt), data);
- break;
+ if (gimple_try_kind (stmt) == GIMPLE_TRY_CATCH)
+ lower_try_catch (gsi, data);
+ else
+ {
+ /* It must be a GIMPLE_TRY_FINALLY. */
+ bool cannot_fallthru;
+ lower_sequence (gimple_try_eval_ptr (stmt), data);
+ cannot_fallthru = data->cannot_fallthru;
+
+ /* The finally clause is always executed after the try clause,
+ so if it does not fall through, then the try-finally will not
+ fall through. Otherwise, if the try clause does not fall
+ through, then when the finally clause falls through it will
+ resume execution wherever the try clause was going. So the
+ whole try-finally will only fall through if both the try
+ clause and the finally clause fall through. */
+ data->cannot_fallthru = false;
+ lower_sequence (gimple_try_cleanup_ptr (stmt), data);
+ data->cannot_fallthru |= cannot_fallthru;
+ gsi_next (gsi);
+ }
+ return;
case GIMPLE_EH_ELSE:
lower_sequence (gimple_eh_else_n_body_ptr (stmt), data);
@@ -520,6 +518,67 @@ lower_gimple_bind (gimple_stmt_iterator *gsi, struct lower_data *data)
gsi_remove (gsi, false);
}
+/* Same as above, but for a GIMPLE_TRY_CATCH. */
+
+static void
+lower_try_catch (gimple_stmt_iterator *gsi, struct lower_data *data)
+{
+ bool cannot_fallthru;
+ gimple stmt = gsi_stmt (*gsi);
+ gimple_stmt_iterator i;
+
+ /* We don't handle GIMPLE_TRY_FINALLY. */
+ gcc_assert (gimple_try_kind (stmt) == GIMPLE_TRY_CATCH);
+
+ lower_sequence (gimple_try_eval_ptr (stmt), data);
+ cannot_fallthru = data->cannot_fallthru;
+
+ i = gsi_start (*gimple_try_cleanup_ptr (stmt));
+ switch (gimple_code (gsi_stmt (i)))
+ {
+ case GIMPLE_CATCH:
+ /* We expect to see a sequence of GIMPLE_CATCH stmts, each with a
+ catch expression and a body. The whole try/catch may fall
+ through iff any of the catch bodies falls through. */
+ for (; !gsi_end_p (i); gsi_next (&i))
+ {
+ data->cannot_fallthru = false;
+ lower_sequence (gimple_catch_handler_ptr (gsi_stmt (i)), data);
+ if (!data->cannot_fallthru)
+ cannot_fallthru = false;
+ }
+ break;
+
+ case GIMPLE_EH_FILTER:
+ /* The exception filter expression only matters if there is an
+ exception. If the exception does not match EH_FILTER_TYPES,
+ we will execute EH_FILTER_FAILURE, and we will fall through
+ if that falls through. If the exception does match
+ EH_FILTER_TYPES, the stack unwinder will continue up the
+ stack, so we will not fall through. We don't know whether we
+ will throw an exception which matches EH_FILTER_TYPES or not,
+ so we just ignore EH_FILTER_TYPES and assume that we might
+ throw an exception which doesn't match. */
+ data->cannot_fallthru = false;
+ lower_sequence (gimple_eh_filter_failure_ptr (gsi_stmt (i)), data);
+ if (!data->cannot_fallthru)
+ cannot_fallthru = false;
+ break;
+
+ default:
+ /* This case represents statements to be executed when an
+ exception occurs. Those statements are implicitly followed
+ by a GIMPLE_RESX to resume execution after the exception. So
+ in this case the try/catch never falls through. */
+ data->cannot_fallthru = false;
+ lower_sequence (gimple_try_cleanup_ptr (stmt), data);
+ break;
+ }
+
+ data->cannot_fallthru = cannot_fallthru;
+ gsi_next (gsi);
+}
+
/* Try to determine whether a TRY_CATCH expression can fall through.
This is a subroutine of block_may_fallthru. */
@@ -776,7 +835,7 @@ lower_gimple_return (gimple_stmt_iterator *gsi, struct lower_data *data)
for (i = VEC_length (return_statements_t, data->return_statements) - 1;
i >= 0; i--)
{
- tmp_rs = *VEC_index (return_statements_t, data->return_statements, i);
+ tmp_rs = VEC_index (return_statements_t, data->return_statements, i);
if (gimple_return_retval (stmt) == gimple_return_retval (tmp_rs.stmt))
{
@@ -950,8 +1009,6 @@ record_vars_into (tree vars, tree fn)
/* Record the variable. */
add_local_decl (cfun, var);
- if (gimple_referenced_vars (cfun))
- add_referenced_var (var);
}
if (fn != current_function_decl)
diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c
index a80ae90a6f0..658e0beea74 100644
--- a/gcc/gimple-pretty-print.c
+++ b/gcc/gimple-pretty-print.c
@@ -26,11 +26,10 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "diagnostic.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "hashtab.h"
#include "tree-flow.h"
-#include "tree-pass.h"
+#include "dumpfile.h" /* for dump_flags */
#include "gimple.h"
#include "value-prof.h"
#include "trans-mem.h"
@@ -98,7 +97,7 @@ print_gimple_stmt (FILE *file, gimple g, int spc, int flags)
{
maybe_init_pretty_print (file);
dump_gimple_stmt (&buffer, g, spc, flags);
- pp_flush (&buffer);
+ pp_newline_and_flush (&buffer);
}
@@ -116,7 +115,9 @@ print_gimple_expr (FILE *file, gimple g, int spc, int flags)
/* Print the GIMPLE sequence SEQ on BUFFER using SPC indentantion
- spaces and FLAGS as in dump_gimple_stmt. */
+ spaces and FLAGS as in dump_gimple_stmt.
+ The caller is responsible for calling pp_flush on BUFFER to finalize
+ the pretty printer. */
static void
dump_gimple_seq (pretty_printer *buffer, gimple_seq seq, int spc, int flags)
@@ -142,7 +143,7 @@ print_gimple_seq (FILE *file, gimple_seq seq, int spc, int flags)
{
maybe_init_pretty_print (file);
dump_gimple_seq (&buffer, seq, spc, flags);
- pp_flush (&buffer);
+ pp_newline_and_flush (&buffer);
}
@@ -342,6 +343,8 @@ dump_binary_rhs (pretty_printer *buffer, gimple gs, int spc, int flags)
case MAX_EXPR:
case VEC_WIDEN_MULT_HI_EXPR:
case VEC_WIDEN_MULT_LO_EXPR:
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
case VEC_PACK_TRUNC_EXPR:
case VEC_PACK_SAT_EXPR:
case VEC_PACK_FIX_TRUNC_EXPR:
@@ -474,17 +477,25 @@ dump_gimple_assign (pretty_printer *buffer, gimple gs, int spc, int flags)
{
if (flags & TDF_RAW)
{
- tree last;
- if (gimple_num_ops (gs) == 2)
- last = NULL_TREE;
- else if (gimple_num_ops (gs) == 3)
- last = gimple_assign_rhs2 (gs);
- else
- gcc_unreachable ();
+ tree arg1 = NULL;
+ tree arg2 = NULL;
+ tree arg3 = NULL;
+ switch (gimple_num_ops (gs))
+ {
+ case 4:
+ arg3 = gimple_assign_rhs3 (gs);
+ case 3:
+ arg2 = gimple_assign_rhs2 (gs);
+ case 2:
+ arg1 = gimple_assign_rhs1 (gs);
+ break;
+ default:
+ gcc_unreachable ();
+ }
- dump_gimple_fmt (buffer, spc, flags, "%G <%s, %T, %T, %T>", gs,
+ dump_gimple_fmt (buffer, spc, flags, "%G <%s, %T, %T, %T, %T>", gs,
tree_code_name[gimple_assign_rhs_code (gs)],
- gimple_assign_lhs (gs), gimple_assign_rhs1 (gs), last);
+ gimple_assign_lhs (gs), arg1, arg2, arg3);
}
else
{
@@ -594,21 +605,8 @@ pp_points_to_solution (pretty_printer *buffer, struct pt_solution *pt)
pp_string (buffer, "{ ");
EXECUTE_IF_SET_IN_BITMAP (pt->vars, 0, i, bi)
{
- tree var = referenced_var_lookup (cfun, i);
- if (var)
- {
- dump_generic_node (buffer, var, 0, dump_flags, false);
- if (DECL_PT_UID (var) != DECL_UID (var))
- {
- pp_string (buffer, "ptD.");
- pp_decimal_int (buffer, DECL_PT_UID (var));
- }
- }
- else
- {
- pp_string (buffer, "D.");
- pp_decimal_int (buffer, i);
- }
+ pp_string (buffer, "D.");
+ pp_decimal_int (buffer, i);
pp_character (buffer, ' ');
}
pp_character (buffer, '}');
@@ -830,7 +828,7 @@ dump_gimple_cond (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_LABEL tuple on the pretty_printer BUFFER, SPC
spaces of indent. FLAGS specifies details to show in the dump (see
- TDF_* in tree-pass.h). */
+ TDF_* in dumpfils.h). */
static void
dump_gimple_label (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -851,7 +849,7 @@ dump_gimple_label (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_GOTO tuple on the pretty_printer BUFFER, SPC
spaces of indent. FLAGS specifies details to show in the dump (see
- TDF_* in tree-pass.h). */
+ TDF_* in dumpfile.h). */
static void
dump_gimple_goto (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -866,7 +864,7 @@ dump_gimple_goto (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_BIND tuple on the pretty_printer BUFFER, SPC
spaces of indent. FLAGS specifies details to show in the dump (see
- TDF_* in tree-pass.h). */
+ TDF_* in dumpfile.h). */
static void
dump_gimple_bind (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -899,7 +897,7 @@ dump_gimple_bind (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_TRY tuple on the pretty_printer BUFFER, SPC spaces of
indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_try (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -955,7 +953,7 @@ dump_gimple_try (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_CATCH tuple on the pretty_printer BUFFER, SPC spaces of
indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_catch (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -971,7 +969,7 @@ dump_gimple_catch (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_EH_FILTER tuple on the pretty_printer BUFFER, SPC spaces of
indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_eh_filter (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -1004,7 +1002,7 @@ dump_gimple_eh_must_not_throw (pretty_printer *buffer, gimple gs,
/* Dump a GIMPLE_EH_ELSE tuple on the pretty_printer BUFFER, SPC spaces of
indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_eh_else (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -1022,7 +1020,7 @@ dump_gimple_eh_else (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_RESX tuple on the pretty_printer BUFFER, SPC spaces of
indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_resx (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -1049,7 +1047,7 @@ dump_gimple_eh_dispatch (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_DEBUG tuple on the pretty_printer BUFFER, SPC spaces
of indent. FLAGS specifies details to show in the dump (see TDF_*
- in tree-pass.h). */
+ in dumpfile.h). */
static void
dump_gimple_debug (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -1424,7 +1422,7 @@ dump_gimple_transaction (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump a GIMPLE_ASM tuple on the pretty_printer BUFFER, SPC spaces of
indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_asm (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -1577,8 +1575,9 @@ dump_gimple_asm (pretty_printer *buffer, gimple gs, int spc, int flags)
}
-/* Dump a PHI node PHI. BUFFER, SPC and FLAGS are as in
- dump_gimple_stmt. */
+/* Dump a PHI node PHI. BUFFER, SPC and FLAGS are as in dump_gimple_stmt.
+ The caller is responsible for calling pp_flush on BUFFER to finalize
+ pretty printer. */
static void
dump_gimple_phi (pretty_printer *buffer, gimple phi, int spc, int flags)
@@ -1643,7 +1642,7 @@ dump_gimple_phi (pretty_printer *buffer, gimple phi, int spc, int flags)
/* Dump a GIMPLE_OMP_PARALLEL tuple on the pretty_printer BUFFER, SPC spaces
of indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_omp_parallel (pretty_printer *buffer, gimple gs, int spc,
@@ -1697,7 +1696,7 @@ dump_gimple_omp_parallel (pretty_printer *buffer, gimple gs, int spc,
/* Dump a GIMPLE_OMP_TASK tuple on the pretty_printer BUFFER, SPC spaces
of indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). */
+ dumpfile.h). */
static void
dump_gimple_omp_task (pretty_printer *buffer, gimple gs, int spc,
@@ -1754,7 +1753,7 @@ dump_gimple_omp_task (pretty_printer *buffer, gimple gs, int spc,
/* Dump a GIMPLE_OMP_ATOMIC_LOAD tuple on the pretty_printer BUFFER, SPC
spaces of indent. FLAGS specifies details to show in the dump (see TDF_*
- in tree-pass.h). */
+ in dumpfile.h). */
static void
dump_gimple_omp_atomic_load (pretty_printer *buffer, gimple gs, int spc,
@@ -1785,7 +1784,7 @@ dump_gimple_omp_atomic_load (pretty_printer *buffer, gimple gs, int spc,
/* Dump a GIMPLE_OMP_ATOMIC_STORE tuple on the pretty_printer BUFFER, SPC
spaces of indent. FLAGS specifies details to show in the dump (see TDF_*
- in tree-pass.h). */
+ in dumpfile.h). */
static void
dump_gimple_omp_atomic_store (pretty_printer *buffer, gimple gs, int spc,
@@ -1818,7 +1817,8 @@ dump_gimple_mem_ops (pretty_printer *buffer, gimple gs, int spc, int flags)
tree vdef = gimple_vdef (gs);
tree vuse = gimple_vuse (gs);
- if (!ssa_operands_active () || !gimple_references_memory_p (gs))
+ if (!ssa_operands_active (DECL_STRUCT_FUNCTION (current_function_decl))
+ || !gimple_references_memory_p (gs))
return;
if (vdef != NULL_TREE)
@@ -1842,7 +1842,8 @@ dump_gimple_mem_ops (pretty_printer *buffer, gimple gs, int spc, int flags)
/* Dump the gimple statement GS on the pretty printer BUFFER, SPC
spaces of indent. FLAGS specifies details to show in the dump (see
- TDF_* in tree-pass.h). */
+ TDF_* in dumpfile.h). The caller is responsible for calling
+ pp_flush on BUFFER to finalize the pretty printer. */
void
dump_gimple_stmt (pretty_printer *buffer, gimple gs, int spc, int flags)
@@ -2058,83 +2059,48 @@ dump_gimple_stmt (pretty_printer *buffer, gimple gs, int spc, int flags)
}
-/* Dumps header of basic block BB to buffer BUFFER indented by INDENT
+/* Dumps header of basic block BB to OUTF indented by INDENT
spaces and details described by flags. */
static void
-dump_bb_header (pretty_printer *buffer, basic_block bb, int indent, int flags)
+dump_gimple_bb_header (FILE *outf, basic_block bb, int indent, int flags)
{
- edge e;
- gimple stmt;
- edge_iterator ei;
-
if (flags & TDF_BLOCKS)
{
- INDENT (indent);
- pp_string (buffer, "# BLOCK ");
- pp_decimal_int (buffer, bb->index);
- if (bb->frequency)
- {
- pp_string (buffer, " freq:");
- pp_decimal_int (buffer, bb->frequency);
- }
- if (bb->count)
- {
- pp_string (buffer, " count:");
- pp_widest_integer (buffer, bb->count);
- }
-
if (flags & TDF_LINENO)
{
gimple_stmt_iterator gsi;
+ char *s_indent = (char *) alloca ((size_t) indent + 1);
+ memset (s_indent, ' ', (size_t) indent);
+ s_indent[indent] = '\0';
+
+ if (flags & TDF_COMMENT)
+ fputs (";; ", outf);
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
if (!is_gimple_debug (gsi_stmt (gsi))
&& get_lineno (gsi_stmt (gsi)) != UNKNOWN_LOCATION)
{
- pp_string (buffer, ", starting at line ");
- pp_decimal_int (buffer, get_lineno (gsi_stmt (gsi)));
+ fprintf (outf, "%sstarting at line %d",
+ s_indent, get_lineno (gsi_stmt (gsi)));
break;
}
-
- if (bb->discriminator)
- {
- pp_string (buffer, ", discriminator ");
- pp_decimal_int (buffer, bb->discriminator);
- }
+ if (bb->discriminator)
+ fprintf (outf, ", discriminator %i", bb->discriminator);
+ fputc ('\n', outf);
}
- newline_and_indent (buffer, indent);
-
- pp_string (buffer, "# PRED:");
- pp_write_text_to_stream (buffer);
- FOR_EACH_EDGE (e, ei, bb->preds)
- if (flags & TDF_SLIM)
- {
- pp_character (buffer, ' ');
- if (e->src == ENTRY_BLOCK_PTR)
- pp_string (buffer, "ENTRY");
- else
- pp_decimal_int (buffer, e->src->index);
- }
- else
- dump_edge_info (buffer->buffer->stream, e, 0);
- pp_newline (buffer);
}
else
{
- stmt = first_stmt (bb);
+ gimple stmt = first_stmt (bb);
if (!stmt || gimple_code (stmt) != GIMPLE_LABEL)
{
- INDENT (indent - 2);
- pp_string (buffer, "<bb ");
- pp_decimal_int (buffer, bb->index);
- pp_string (buffer, ">:");
- pp_newline (buffer);
+ char *s_indent = (char *) alloca ((size_t) indent - 2 + 1);
+ memset (s_indent, ' ', (size_t) indent);
+ s_indent[indent] = '\0';
+ fprintf (outf, "%s<bb %d>:\n", s_indent, bb->index);
}
}
- pp_write_text_to_stream (buffer);
- if (cfun)
- check_bb_profile (bb, buffer->buffer->stream);
}
@@ -2142,26 +2108,13 @@ dump_bb_header (pretty_printer *buffer, basic_block bb, int indent, int flags)
spaces. */
static void
-dump_bb_end (pretty_printer *buffer, basic_block bb, int indent, int flags)
+dump_gimple_bb_footer (FILE *outf ATTRIBUTE_UNUSED,
+ basic_block bb ATTRIBUTE_UNUSED,
+ int indent ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED)
{
- edge e;
- edge_iterator ei;
-
- INDENT (indent);
- pp_string (buffer, "# SUCC:");
- pp_write_text_to_stream (buffer);
- FOR_EACH_EDGE (e, ei, bb->succs)
- if (flags & TDF_SLIM)
- {
- pp_character (buffer, ' ');
- if (e->dest == EXIT_BLOCK_PTR)
- pp_string (buffer, "EXIT");
- else
- pp_decimal_int (buffer, e->dest->index);
- }
- else
- dump_edge_info (buffer->buffer->stream, e, 1);
- pp_newline (buffer);
+ /* There is currently no GIMPLE-specific basic block info to dump. */
+ return;
}
@@ -2176,7 +2129,7 @@ dump_phi_nodes (pretty_printer *buffer, basic_block bb, int indent, int flags)
for (i = gsi_start_phis (bb); !gsi_end_p (i); gsi_next (&i))
{
gimple phi = gsi_stmt (i);
- if (is_gimple_reg (gimple_phi_result (phi)) || (flags & TDF_VOPS))
+ if (!virtual_operand_p (gimple_phi_result (phi)) || (flags & TDF_VOPS))
{
INDENT (indent);
pp_string (buffer, "# ");
@@ -2291,7 +2244,6 @@ gimple_dump_bb_buff (pretty_printer *buffer, basic_block bb, int indent,
if (label_indent < 0)
label_indent = 0;
- dump_bb_header (buffer, bb, indent, flags);
dump_phi_nodes (buffer, bb, indent, flags);
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
@@ -2304,14 +2256,14 @@ gimple_dump_bb_buff (pretty_printer *buffer, basic_block bb, int indent,
INDENT (curr_indent);
dump_gimple_stmt (buffer, stmt, curr_indent, flags);
- pp_newline (buffer);
- dump_histograms_for_stmt (cfun, buffer->buffer->stream, stmt);
+ pp_newline_and_flush (buffer);
+ gcc_checking_assert (DECL_STRUCT_FUNCTION (current_function_decl));
+ dump_histograms_for_stmt (DECL_STRUCT_FUNCTION (current_function_decl),
+ buffer->buffer->stream, stmt);
}
dump_implicit_edges (buffer, bb, indent, flags);
-
- if (flags & TDF_BLOCKS)
- dump_bb_end (buffer, bb, indent, flags);
+ pp_flush (buffer);
}
@@ -2319,9 +2271,13 @@ gimple_dump_bb_buff (pretty_printer *buffer, basic_block bb, int indent,
indented by INDENT spaces. */
void
-gimple_dump_bb (basic_block bb, FILE *file, int indent, int flags)
+gimple_dump_bb (FILE *file, basic_block bb, int indent, int flags)
{
- maybe_init_pretty_print (file);
- gimple_dump_bb_buff (&buffer, bb, indent, flags);
- pp_flush (&buffer);
+ dump_gimple_bb_header (file, bb, indent, flags);
+ if (bb->index >= NUM_FIXED_BLOCKS)
+ {
+ maybe_init_pretty_print (file);
+ gimple_dump_bb_buff (&buffer, bb, indent, flags);
+ }
+ dump_gimple_bb_footer (file, bb, indent, flags);
}
diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c
index f68562a9e50..8806f48a5a0 100644
--- a/gcc/gimple-ssa-strength-reduction.c
+++ b/gcc/gimple-ssa-strength-reduction.c
@@ -30,9 +30,8 @@ along with GCC; see the file COPYING3. If not see
1) Explicit multiplies, known constant multipliers, no
conditional increments. (complete)
2) Explicit multiplies, unknown constant multipliers,
- no conditional increments. (data gathering complete,
- replacements pending)
- 3) Implicit multiplies in addressing expressions. (pending)
+ no conditional increments. (complete)
+ 3) Implicit multiplies in addressing expressions. (complete)
4) Explicit multiplies, conditional increments. (pending)
It would also be possible to apply strength reduction to divisions
@@ -49,13 +48,12 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "basic-block.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "cfgloop.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
#include "domwalk.h"
#include "pointer-set.h"
+#include "expmed.h"
/* Information about a strength reduction candidate. Each statement
in the candidate table represents an expression of one of the
@@ -107,7 +105,47 @@ along with GCC; see the file COPYING3. If not see
as a strength reduction opportunity, even though this S1 would
also be replaceable by the S1' above. This can be added if it
- comes up in practice. */
+ comes up in practice.
+
+ Strength reduction in addressing
+ --------------------------------
+ There is another kind of candidate known as CAND_REF. A CAND_REF
+ describes a statement containing a memory reference having
+ complex addressing that might benefit from strength reduction.
+ Specifically, we are interested in references for which
+ get_inner_reference returns a base address, offset, and bitpos as
+ follows:
+
+ base: MEM_REF (T1, C1)
+ offset: MULT_EXPR (PLUS_EXPR (T2, C2), C3)
+ bitpos: C4 * BITS_PER_UNIT
+
+ Here T1 and T2 are arbitrary trees, and C1, C2, C3, C4 are
+ arbitrary integer constants. Note that C2 may be zero, in which
+ case the offset will be MULT_EXPR (T2, C3).
+
+ When this pattern is recognized, the original memory reference
+ can be replaced with:
+
+ MEM_REF (POINTER_PLUS_EXPR (T1, MULT_EXPR (T2, C3)),
+ C1 + (C2 * C3) + C4)
+
+ which distributes the multiply to allow constant folding. When
+ two or more addressing expressions can be represented by MEM_REFs
+ of this form, differing only in the constants C1, C2, and C4,
+ making this substitution produces more efficient addressing during
+ the RTL phases. When there are not at least two expressions with
+ the same values of T1, T2, and C3, there is nothing to be gained
+ by the replacement.
+
+ Strength reduction of CAND_REFs uses the same infrastructure as
+ that used by CAND_MULTs and CAND_ADDs. We record T1 in the base (B)
+ field, MULT_EXPR (T2, C3) in the stride (S) field, and
+ C1 + (C2 * C3) + C4 in the index (i) field. A basis for a CAND_REF
+ is thus another CAND_REF with the same B and S values. When at
+ least two CAND_REFs are chained together using the basis relation,
+ each of them is replaced as above, resulting in improved code
+ generation for addressing. */
/* Index into the candidate vector, offset by 1. VECs are zero-based,
@@ -118,7 +156,8 @@ typedef unsigned cand_idx;
enum cand_kind
{
CAND_MULT,
- CAND_ADD
+ CAND_ADD,
+ CAND_REF
};
struct slsr_cand_d
@@ -126,8 +165,8 @@ struct slsr_cand_d
/* The candidate statement S1. */
gimple cand_stmt;
- /* The base SSA name B. */
- tree base_name;
+ /* The base expression B: often an SSA name, but not always. */
+ tree base_expr;
/* The stride S. */
tree stride;
@@ -135,9 +174,11 @@ struct slsr_cand_d
/* The index constant i. */
double_int index;
- /* The type of the candidate. This is normally the type of base_name,
+ /* The type of the candidate. This is normally the type of base_expr,
but casts may have occurred when combining feeding instructions.
- A candidate can only be a basis for candidates of the same final type. */
+ A candidate can only be a basis for candidates of the same final type.
+ (For CAND_REFs, this is the type to be used for operand 1 of the
+ replacement MEM_REF.) */
tree cand_type;
/* The kind of candidate (CAND_MULT, etc.). */
@@ -174,12 +215,13 @@ typedef struct slsr_cand_d slsr_cand, *slsr_cand_t;
typedef const struct slsr_cand_d *const_slsr_cand_t;
/* Pointers to candidates are chained together as part of a mapping
- from SSA names to the candidates that use them as a base name. */
+ from base expressions to the candidates that use them. */
struct cand_chain_d
{
- /* SSA name that serves as a base name for the chain of candidates. */
- tree base_name;
+ /* Base expression for the chain of candidates: often, but not
+ always, an SSA name. */
+ tree base_expr;
/* Pointer to a candidate. */
slsr_cand_t cand;
@@ -192,6 +234,41 @@ struct cand_chain_d
typedef struct cand_chain_d cand_chain, *cand_chain_t;
typedef const struct cand_chain_d *const_cand_chain_t;
+/* Information about a unique "increment" associated with candidates
+ having an SSA name for a stride. An increment is the difference
+ between the index of the candidate and the index of its basis,
+ i.e., (i - i') as discussed in the module commentary.
+
+ When we are not going to generate address arithmetic we treat
+ increments that differ only in sign as the same, allowing sharing
+ of the cost of initializers. The absolute value of the increment
+ is stored in the incr_info. */
+
+struct incr_info_d
+{
+ /* The increment that relates a candidate to its basis. */
+ double_int incr;
+
+ /* How many times the increment occurs in the candidate tree. */
+ unsigned count;
+
+ /* Cost of replacing candidates using this increment. Negative and
+ zero costs indicate replacement should be performed. */
+ int cost;
+
+ /* If this increment is profitable but is not -1, 0, or 1, it requires
+ an initializer T_0 = stride * incr to be found or introduced in the
+ nearest common dominator of all candidates. This field holds T_0
+ for subsequent use. */
+ tree initializer;
+
+ /* If the initializer was found to already exist, this is the block
+ where it was found. */
+ basic_block init_bb;
+};
+
+typedef struct incr_info_d incr_info, *incr_info_t;
+
/* Candidates are maintained in a vector. If candidate X dominates
candidate Y, then X appears before Y in the vector; but the
converse does not necessarily hold. */
@@ -211,11 +288,21 @@ static struct pointer_map_t *stmt_cand_map;
/* Obstack for candidates. */
static struct obstack cand_obstack;
-/* Array mapping from base SSA names to chains of candidates. */
-static cand_chain_t *base_cand_map;
+/* Hash table embodying a mapping from base exprs to chains of candidates. */
+static htab_t base_cand_map;
/* Obstack for candidate chains. */
static struct obstack chain_obstack;
+
+/* An array INCR_VEC of incr_infos is used during analysis of related
+ candidates having an SSA name for a stride. INCR_VEC_LEN describes
+ its current length. */
+static incr_info_t incr_vec;
+static unsigned incr_vec_len;
+
+/* For a chain of candidates with unknown stride, indicates whether or not
+ we must generate pointer arithmetic when replacing statements. */
+static bool address_arithmetic_p;
/* Produce a pointer to the IDX'th candidate in the candidate vector. */
@@ -225,7 +312,34 @@ lookup_cand (cand_idx idx)
return VEC_index (slsr_cand_t, cand_vec, idx - 1);
}
-/* Use the base name from candidate C to look for possible candidates
+/* Callback to produce a hash value for a candidate chain header. */
+
+static hashval_t
+base_cand_hash (const void *p)
+{
+ tree base_expr = ((const_cand_chain_t) p)->base_expr;
+ return iterative_hash_expr (base_expr, 0);
+}
+
+/* Callback when an element is removed from the hash table.
+ We never remove entries until the entire table is released. */
+
+static void
+base_cand_free (void *p ATTRIBUTE_UNUSED)
+{
+}
+
+/* Callback to return true if two candidate chain headers are equal. */
+
+static int
+base_cand_eq (const void *p1, const void *p2)
+{
+ const_cand_chain_t const chain1 = (const_cand_chain_t) p1;
+ const_cand_chain_t const chain2 = (const_cand_chain_t) p2;
+ return operand_equal_p (chain1->base_expr, chain2->base_expr, 0);
+}
+
+/* Use the base expr from candidate C to look for possible candidates
that can serve as a basis for C. Each potential basis must also
appear in a block that dominates the candidate statement and have
the same stride and type. If more than one possible basis exists,
@@ -235,11 +349,12 @@ lookup_cand (cand_idx idx)
static int
find_basis_for_candidate (slsr_cand_t c)
{
+ cand_chain mapping_key;
cand_chain_t chain;
slsr_cand_t basis = NULL;
- gcc_assert (TREE_CODE (c->base_name) == SSA_NAME);
- chain = base_cand_map[SSA_NAME_VERSION (c->base_name)];
+ mapping_key.base_expr = c->base_expr;
+ chain = (cand_chain_t) htab_find (base_cand_map, &mapping_key);
for (; chain; chain = chain->next)
{
@@ -267,29 +382,29 @@ find_basis_for_candidate (slsr_cand_t c)
return 0;
}
-/* Record a mapping from the base name of C to C itself, indicating that
- C may potentially serve as a basis using that base name. */
+/* Record a mapping from the base expression of C to C itself, indicating that
+ C may potentially serve as a basis using that base expression. */
static void
record_potential_basis (slsr_cand_t c)
{
- cand_chain_t node, head;
- int index;
+ cand_chain_t node;
+ void **slot;
node = (cand_chain_t) obstack_alloc (&chain_obstack, sizeof (cand_chain));
- node->base_name = c->base_name;
+ node->base_expr = c->base_expr;
node->cand = c;
node->next = NULL;
- index = SSA_NAME_VERSION (c->base_name);
- head = base_cand_map[index];
+ slot = htab_find_slot (base_cand_map, node, INSERT);
- if (head)
+ if (*slot)
{
+ cand_chain_t head = (cand_chain_t) (*slot);
node->next = head->next;
head->next = node;
}
else
- base_cand_map[index] = node;
+ *slot = node;
}
/* Allocate storage for a new candidate and initialize its fields.
@@ -303,7 +418,7 @@ alloc_cand_and_find_basis (enum cand_kind kind, gimple gs, tree base,
slsr_cand_t c = (slsr_cand_t) obstack_alloc (&cand_obstack,
sizeof (slsr_cand));
c->cand_stmt = gs;
- c->base_name = base;
+ c->base_expr = base;
c->stride = stride;
c->index = index;
c->cand_type = ctype;
@@ -342,29 +457,21 @@ stmt_cost (gimple gs, bool speed)
rhs2 = gimple_assign_rhs2 (gs);
if (host_integerp (rhs2, 0))
- return multiply_by_const_cost (TREE_INT_CST_LOW (rhs2), lhs_mode,
- speed);
+ return mult_by_coeff_cost (TREE_INT_CST_LOW (rhs2), lhs_mode, speed);
gcc_assert (TREE_CODE (rhs1) != INTEGER_CST);
- return multiply_regs_cost (TYPE_MODE (TREE_TYPE (lhs)), speed);
+ return mul_cost (speed, lhs_mode);
case PLUS_EXPR:
case POINTER_PLUS_EXPR:
case MINUS_EXPR:
- rhs2 = gimple_assign_rhs2 (gs);
-
- if (host_integerp (rhs2, 0))
- return add_const_cost (TYPE_MODE (TREE_TYPE (rhs1)), speed);
-
- gcc_assert (TREE_CODE (rhs1) != INTEGER_CST);
- return add_regs_cost (lhs_mode, speed);
+ return add_cost (speed, lhs_mode);
case NEGATE_EXPR:
- return negate_reg_cost (lhs_mode, speed);
+ return neg_cost (speed, lhs_mode);
case NOP_EXPR:
- return extend_or_trunc_reg_cost (TREE_TYPE (lhs), TREE_TYPE (rhs1),
- speed);
+ return convert_cost (lhs_mode, TYPE_MODE (TREE_TYPE (rhs1)), speed);
/* Note that we don't assign costs to copies that in most cases
will go away. */
@@ -390,10 +497,11 @@ base_cand_from_table (tree base_in)
return (slsr_cand_t) NULL;
result = (slsr_cand_t *) pointer_map_contains (stmt_cand_map, def);
- if (!result)
- return (slsr_cand_t) NULL;
+
+ if (result && (*result)->kind != CAND_REF)
+ return *result;
- return *result;
+ return (slsr_cand_t) NULL;
}
/* Add an entry to the statement-to-candidate mapping. */
@@ -406,6 +514,127 @@ add_cand_for_stmt (gimple gs, slsr_cand_t c)
*slot = c;
}
+/* Look for the following pattern:
+
+ *PBASE: MEM_REF (T1, C1)
+
+ *POFFSET: MULT_EXPR (T2, C3) [C2 is zero]
+ or
+ MULT_EXPR (PLUS_EXPR (T2, C2), C3)
+ or
+ MULT_EXPR (MINUS_EXPR (T2, -C2), C3)
+
+ *PINDEX: C4 * BITS_PER_UNIT
+
+ If not present, leave the input values unchanged and return FALSE.
+ Otherwise, modify the input values as follows and return TRUE:
+
+ *PBASE: T1
+ *POFFSET: MULT_EXPR (T2, C3)
+ *PINDEX: C1 + (C2 * C3) + C4 */
+
+static bool
+restructure_reference (tree *pbase, tree *poffset, double_int *pindex,
+ tree *ptype)
+{
+ tree base = *pbase, offset = *poffset;
+ double_int index = *pindex;
+ double_int bpu = uhwi_to_double_int (BITS_PER_UNIT);
+ tree mult_op0, mult_op1, t1, t2, type;
+ double_int c1, c2, c3, c4;
+
+ if (!base
+ || !offset
+ || TREE_CODE (base) != MEM_REF
+ || TREE_CODE (offset) != MULT_EXPR
+ || TREE_CODE (TREE_OPERAND (offset, 1)) != INTEGER_CST
+ || !double_int_zero_p (double_int_umod (index, bpu, FLOOR_MOD_EXPR)))
+ return false;
+
+ t1 = TREE_OPERAND (base, 0);
+ c1 = mem_ref_offset (base);
+ type = TREE_TYPE (TREE_OPERAND (base, 1));
+
+ mult_op0 = TREE_OPERAND (offset, 0);
+ mult_op1 = TREE_OPERAND (offset, 1);
+
+ c3 = tree_to_double_int (mult_op1);
+
+ if (TREE_CODE (mult_op0) == PLUS_EXPR)
+
+ if (TREE_CODE (TREE_OPERAND (mult_op0, 1)) == INTEGER_CST)
+ {
+ t2 = TREE_OPERAND (mult_op0, 0);
+ c2 = tree_to_double_int (TREE_OPERAND (mult_op0, 1));
+ }
+ else
+ return false;
+
+ else if (TREE_CODE (mult_op0) == MINUS_EXPR)
+
+ if (TREE_CODE (TREE_OPERAND (mult_op0, 1)) == INTEGER_CST)
+ {
+ t2 = TREE_OPERAND (mult_op0, 0);
+ c2 = double_int_neg (tree_to_double_int (TREE_OPERAND (mult_op0, 1)));
+ }
+ else
+ return false;
+
+ else
+ {
+ t2 = mult_op0;
+ c2 = double_int_zero;
+ }
+
+ c4 = double_int_udiv (index, bpu, FLOOR_DIV_EXPR);
+
+ *pbase = t1;
+ *poffset = fold_build2 (MULT_EXPR, sizetype, t2,
+ double_int_to_tree (sizetype, c3));
+ *pindex = double_int_add (double_int_add (c1, double_int_mul (c2, c3)), c4);
+ *ptype = type;
+
+ return true;
+}
+
+/* Given GS which contains a data reference, create a CAND_REF entry in
+ the candidate table and attempt to find a basis. */
+
+static void
+slsr_process_ref (gimple gs)
+{
+ tree ref_expr, base, offset, type;
+ HOST_WIDE_INT bitsize, bitpos;
+ enum machine_mode mode;
+ int unsignedp, volatilep;
+ double_int index;
+ slsr_cand_t c;
+
+ if (gimple_vdef (gs))
+ ref_expr = gimple_assign_lhs (gs);
+ else
+ ref_expr = gimple_assign_rhs1 (gs);
+
+ if (!handled_component_p (ref_expr)
+ || TREE_CODE (ref_expr) == BIT_FIELD_REF
+ || (TREE_CODE (ref_expr) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND (ref_expr, 1))))
+ return;
+
+ base = get_inner_reference (ref_expr, &bitsize, &bitpos, &offset, &mode,
+ &unsignedp, &volatilep, false);
+ index = uhwi_to_double_int (bitpos);
+
+ if (!restructure_reference (&base, &offset, &index, &type))
+ return;
+
+ c = alloc_cand_and_find_basis (CAND_REF, gs, base, index, offset,
+ type, 0);
+
+ /* Add the candidate to the statement-candidate mapping. */
+ add_cand_for_stmt (gs, c);
+}
+
/* Create a candidate entry for a statement GS, where GS multiplies
two SSA names BASE_IN and STRIDE_IN. Propagate any known information
about the two SSA names into the new candidate. Return the new
@@ -432,7 +661,7 @@ create_mul_ssa_cand (gimple gs, tree base_in, tree stride_in, bool speed)
X = Y * Z
================
X = (B + i') * Z */
- base = base_cand->base_name;
+ base = base_cand->base_expr;
index = base_cand->index;
stride = stride_in;
ctype = base_cand->cand_type;
@@ -447,7 +676,7 @@ create_mul_ssa_cand (gimple gs, tree base_in, tree stride_in, bool speed)
X = Y * Z
============================
X = B + ((i' * S) * Z) */
- base = base_cand->base_name;
+ base = base_cand->base_expr;
index = double_int_mul (base_cand->index,
tree_to_double_int (base_cand->stride));
stride = stride_in;
@@ -470,7 +699,7 @@ create_mul_ssa_cand (gimple gs, tree base_in, tree stride_in, bool speed)
base = base_in;
index = double_int_zero;
stride = stride_in;
- ctype = TREE_TYPE (SSA_NAME_VAR (base_in));
+ ctype = TREE_TYPE (base_in);
}
c = alloc_cand_and_find_basis (CAND_MULT, gs, base, index, stride,
@@ -503,7 +732,7 @@ create_mul_imm_cand (gimple gs, tree base_in, tree stride_in, bool speed)
X = Y * c
============================
X = (B + i') * (S * c) */
- base = base_cand->base_name;
+ base = base_cand->base_expr;
index = base_cand->index;
temp = double_int_mul (tree_to_double_int (base_cand->stride),
tree_to_double_int (stride_in));
@@ -520,7 +749,7 @@ create_mul_imm_cand (gimple gs, tree base_in, tree stride_in, bool speed)
X = Y * c
===========================
X = (B + i') * c */
- base = base_cand->base_name;
+ base = base_cand->base_expr;
index = base_cand->index;
stride = stride_in;
ctype = base_cand->cand_type;
@@ -536,7 +765,7 @@ create_mul_imm_cand (gimple gs, tree base_in, tree stride_in, bool speed)
X = Y * c
===========================
X = (B + S) * c */
- base = base_cand->base_name;
+ base = base_cand->base_expr;
index = tree_to_double_int (base_cand->stride);
stride = stride_in;
ctype = base_cand->cand_type;
@@ -558,7 +787,7 @@ create_mul_imm_cand (gimple gs, tree base_in, tree stride_in, bool speed)
base = base_in;
index = double_int_zero;
stride = stride_in;
- ctype = TREE_TYPE (SSA_NAME_VAR (base_in));
+ ctype = TREE_TYPE (base_in);
}
c = alloc_cand_and_find_basis (CAND_MULT, gs, base, index, stride,
@@ -587,14 +816,14 @@ slsr_process_mul (gimple gs, tree rhs1, tree rhs2, bool speed)
if (TREE_CODE (rhs2) == SSA_NAME)
{
/* Record an interpretation of this statement in the candidate table
- assuming RHS1 is the base name and RHS2 is the stride. */
+ assuming RHS1 is the base expression and RHS2 is the stride. */
c = create_mul_ssa_cand (gs, rhs1, rhs2, speed);
/* Add the first interpretation to the statement-candidate mapping. */
add_cand_for_stmt (gs, c);
/* Record another interpretation of this statement assuming RHS1
- is the stride and RHS2 is the base name. */
+ is the stride and RHS2 is the base expression. */
c2 = create_mul_ssa_cand (gs, rhs2, rhs1, speed);
c->next_interp = c2->cand_num;
}
@@ -641,8 +870,8 @@ create_add_ssa_cand (gimple gs, tree base_in, tree addend_in,
index = tree_to_double_int (addend_cand->stride);
if (subtract_p)
index = double_int_neg (index);
- stride = addend_cand->base_name;
- ctype = TREE_TYPE (SSA_NAME_VAR (base_in));
+ stride = addend_cand->base_expr;
+ ctype = TREE_TYPE (base_in);
if (has_single_use (addend_in))
savings = (addend_cand->dead_savings
+ stmt_cost (addend_cand->cand_stmt, speed));
@@ -665,7 +894,7 @@ create_add_ssa_cand (gimple gs, tree base_in, tree addend_in,
X = Y +/- Z
============================
X = B + (+/-1 * Z) */
- base = base_cand->base_name;
+ base = base_cand->base_expr;
index = subtract_p ? double_int_minus_one : double_int_one;
stride = addend_in;
ctype = base_cand->cand_type;
@@ -690,8 +919,8 @@ create_add_ssa_cand (gimple gs, tree base_in, tree addend_in,
base = base_in;
index = tree_to_double_int (subtrahend_cand->stride);
index = double_int_neg (index);
- stride = subtrahend_cand->base_name;
- ctype = TREE_TYPE (SSA_NAME_VAR (base_in));
+ stride = subtrahend_cand->base_expr;
+ ctype = TREE_TYPE (base_in);
if (has_single_use (addend_in))
savings = (subtrahend_cand->dead_savings
+ stmt_cost (subtrahend_cand->cand_stmt, speed));
@@ -717,7 +946,7 @@ create_add_ssa_cand (gimple gs, tree base_in, tree addend_in,
base = base_in;
index = subtract_p ? double_int_minus_one : double_int_one;
stride = addend_in;
- ctype = TREE_TYPE (SSA_NAME_VAR (base_in));
+ ctype = TREE_TYPE (base_in);
}
c = alloc_cand_and_find_basis (CAND_ADD, gs, base, index, stride,
@@ -759,7 +988,7 @@ create_add_imm_cand (gimple gs, tree base_in, double_int index_in, bool speed)
============================
X = (B + (i'+ k)) * S */
kind = base_cand->kind;
- base = base_cand->base_name;
+ base = base_cand->base_expr;
index = double_int_add (base_cand->index, multiple);
stride = base_cand->stride;
ctype = base_cand->cand_type;
@@ -782,7 +1011,7 @@ create_add_imm_cand (gimple gs, tree base_in, double_int index_in, bool speed)
base = base_in;
index = index_in;
stride = integer_one_node;
- ctype = TREE_TYPE (SSA_NAME_VAR (base_in));
+ ctype = TREE_TYPE (base_in);
}
c = alloc_cand_and_find_basis (kind, gs, base, index, stride,
@@ -801,10 +1030,10 @@ slsr_process_add (gimple gs, tree rhs1, tree rhs2, bool speed)
if (TREE_CODE (rhs2) == SSA_NAME)
{
- /* First record an interpretation assuming RHS1 is the base name
+ /* First record an interpretation assuming RHS1 is the base expression
and RHS2 is the stride. But it doesn't make sense for the
stride to be a pointer, so don't record a candidate in that case. */
- if (!POINTER_TYPE_P (TREE_TYPE (SSA_NAME_VAR (rhs2))))
+ if (!POINTER_TYPE_P (TREE_TYPE (rhs2)))
{
c = create_add_ssa_cand (gs, rhs1, rhs2, subtract_p, speed);
@@ -819,9 +1048,9 @@ slsr_process_add (gimple gs, tree rhs1, tree rhs2, bool speed)
return;
/* Otherwise, record another interpretation assuming RHS2 is the
- base name and RHS1 is the stride, again provided that the
+ base expression and RHS1 is the stride, again provided that the
stride is not a pointer. */
- if (!POINTER_TYPE_P (TREE_TYPE (SSA_NAME_VAR (rhs1))))
+ if (!POINTER_TYPE_P (TREE_TYPE (rhs1)))
{
c2 = create_add_ssa_cand (gs, rhs2, rhs1, false, speed);
if (c)
@@ -860,6 +1089,32 @@ slsr_process_neg (gimple gs, tree rhs1, bool speed)
add_cand_for_stmt (gs, c);
}
+/* Help function for legal_cast_p, operating on two trees. Checks
+ whether it's allowable to cast from RHS to LHS. See legal_cast_p
+ for more details. */
+
+static bool
+legal_cast_p_1 (tree lhs, tree rhs)
+{
+ tree lhs_type, rhs_type;
+ unsigned lhs_size, rhs_size;
+ bool lhs_wraps, rhs_wraps;
+
+ lhs_type = TREE_TYPE (lhs);
+ rhs_type = TREE_TYPE (rhs);
+ lhs_size = TYPE_PRECISION (lhs_type);
+ rhs_size = TYPE_PRECISION (rhs_type);
+ lhs_wraps = TYPE_OVERFLOW_WRAPS (lhs_type);
+ rhs_wraps = TYPE_OVERFLOW_WRAPS (rhs_type);
+
+ if (lhs_size < rhs_size
+ || (rhs_wraps && !lhs_wraps)
+ || (rhs_wraps && lhs_wraps && rhs_size != lhs_size))
+ return false;
+
+ return true;
+}
+
/* Return TRUE if GS is a statement that defines an SSA name from
a conversion and is legal for us to combine with an add and multiply
in the candidate table. For example, suppose we have:
@@ -900,28 +1155,11 @@ slsr_process_neg (gimple gs, tree rhs1, bool speed)
static bool
legal_cast_p (gimple gs, tree rhs)
{
- tree lhs, lhs_type, rhs_type;
- unsigned lhs_size, rhs_size;
- bool lhs_wraps, rhs_wraps;
-
if (!is_gimple_assign (gs)
|| !CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (gs)))
return false;
- lhs = gimple_assign_lhs (gs);
- lhs_type = TREE_TYPE (lhs);
- rhs_type = TREE_TYPE (rhs);
- lhs_size = TYPE_PRECISION (lhs_type);
- rhs_size = TYPE_PRECISION (rhs_type);
- lhs_wraps = TYPE_OVERFLOW_WRAPS (lhs_type);
- rhs_wraps = TYPE_OVERFLOW_WRAPS (rhs_type);
-
- if (lhs_size < rhs_size
- || (rhs_wraps && !lhs_wraps)
- || (rhs_wraps && lhs_wraps && rhs_size != lhs_size))
- return false;
-
- return true;
+ return legal_cast_p_1 (gimple_assign_lhs (gs), rhs);
}
/* Given GS which is a cast to a scalar integer type, determine whether
@@ -954,7 +1192,7 @@ slsr_process_cast (gimple gs, tree rhs1, bool speed)
+ stmt_cost (base_cand->cand_stmt, speed));
c = alloc_cand_and_find_basis (base_cand->kind, gs,
- base_cand->base_name,
+ base_cand->base_expr,
base_cand->index, base_cand->stride,
ctype, savings);
if (base_cand->next_interp)
@@ -1011,7 +1249,7 @@ slsr_process_copy (gimple gs, tree rhs1, bool speed)
+ stmt_cost (base_cand->cand_stmt, speed));
c = alloc_cand_and_find_basis (base_cand->kind, gs,
- base_cand->base_name,
+ base_cand->base_expr,
base_cand->index, base_cand->stride,
base_cand->cand_type, savings);
if (base_cand->next_interp)
@@ -1056,8 +1294,12 @@ find_candidates_in_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
{
gimple gs = gsi_stmt (gsi);
- if (is_gimple_assign (gs)
- && SCALAR_INT_MODE_P (TYPE_MODE (TREE_TYPE (gimple_assign_lhs (gs)))))
+ if (gimple_vuse (gs) && gimple_assign_single_p (gs))
+ slsr_process_ref (gs);
+
+ else if (is_gimple_assign (gs)
+ && SCALAR_INT_MODE_P
+ (TYPE_MODE (TREE_TYPE (gimple_assign_lhs (gs)))))
{
tree rhs1 = NULL_TREE, rhs2 = NULL_TREE;
@@ -1135,7 +1377,7 @@ dump_candidate (slsr_cand_t c)
{
case CAND_MULT:
fputs (" MULT : (", dump_file);
- print_generic_expr (dump_file, c->base_name, 0);
+ print_generic_expr (dump_file, c->base_expr, 0);
fputs (" + ", dump_file);
dump_double_int (dump_file, c->index, false);
fputs (") * ", dump_file);
@@ -1144,13 +1386,22 @@ dump_candidate (slsr_cand_t c)
break;
case CAND_ADD:
fputs (" ADD : ", dump_file);
- print_generic_expr (dump_file, c->base_name, 0);
+ print_generic_expr (dump_file, c->base_expr, 0);
fputs (" + (", dump_file);
dump_double_int (dump_file, c->index, false);
fputs (" * ", dump_file);
print_generic_expr (dump_file, c->stride, 0);
fputs (") : ", dump_file);
break;
+ case CAND_REF:
+ fputs (" REF : ", dump_file);
+ print_generic_expr (dump_file, c->base_expr, 0);
+ fputs (" + (", dump_file);
+ print_generic_expr (dump_file, c->stride, 0);
+ fputs (") + ", dump_file);
+ dump_double_int (dump_file, c->index, false);
+ fputs (" : ", dump_file);
+ break;
default:
gcc_unreachable ();
}
@@ -1181,36 +1432,57 @@ dump_cand_vec (void)
dump_candidate (c);
}
+/* Callback used to dump the candidate chains hash table. */
+
+static int
+base_cand_dump_callback (void **slot, void *ignored ATTRIBUTE_UNUSED)
+{
+ const_cand_chain_t chain = *((const_cand_chain_t *) slot);
+ cand_chain_t p;
+
+ print_generic_expr (dump_file, chain->base_expr, 0);
+ fprintf (dump_file, " -> %d", chain->cand->cand_num);
+
+ for (p = chain->next; p; p = p->next)
+ fprintf (dump_file, " -> %d", p->cand->cand_num);
+
+ fputs ("\n", dump_file);
+ return 1;
+}
+
/* Dump the candidate chains. */
static void
dump_cand_chains (void)
{
- unsigned i;
-
fprintf (dump_file, "\nStrength reduction candidate chains:\n\n");
+ htab_traverse_noresize (base_cand_map, base_cand_dump_callback, NULL);
+ fputs ("\n", dump_file);
+}
+
+/* Dump the increment vector for debug. */
- for (i = 0; i < num_ssa_names; i++)
+static void
+dump_incr_vec (void)
+{
+ if (dump_file && (dump_flags & TDF_DETAILS))
{
- const_cand_chain_t chain = base_cand_map[i];
+ unsigned i;
- if (chain)
+ fprintf (dump_file, "\nIncrement vector:\n\n");
+
+ for (i = 0; i < incr_vec_len; i++)
{
- cand_chain_t p;
-
- print_generic_expr (dump_file, chain->base_name, 0);
- fprintf (dump_file, " -> %d", chain->cand->cand_num);
-
- for (p = chain->next; p; p = p->next)
- fprintf (dump_file, " -> %d", p->cand->cand_num);
-
- fputs ("\n", dump_file);
+ fprintf (dump_file, "%3d increment: ", i);
+ dump_double_int (dump_file, incr_vec[i].incr, false);
+ fprintf (dump_file, "\n count: %d", incr_vec[i].count);
+ fprintf (dump_file, "\n cost: %d", incr_vec[i].cost);
+ fputs ("\n initializer: ", dump_file);
+ print_generic_expr (dump_file, incr_vec[i].initializer, 0);
+ fputs ("\n\n", dump_file);
}
}
-
- fputs ("\n", dump_file);
}
-
/* Recursive helper for unconditional_cands_with_known_stride_p.
Returns TRUE iff C, its siblings, and its dependents are all
@@ -1246,6 +1518,53 @@ unconditional_cands_with_known_stride_p (slsr_cand_t root)
return unconditional_cands (lookup_cand (root->dependent));
}
+/* Replace *EXPR in candidate C with an equivalent strength-reduced
+ data reference. */
+
+static void
+replace_ref (tree *expr, slsr_cand_t c)
+{
+ tree add_expr = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (c->base_expr),
+ c->base_expr, c->stride);
+ tree mem_ref = fold_build2 (MEM_REF, TREE_TYPE (*expr), add_expr,
+ double_int_to_tree (c->cand_type, c->index));
+
+ /* Gimplify the base addressing expression for the new MEM_REF tree. */
+ gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+ TREE_OPERAND (mem_ref, 0)
+ = force_gimple_operand_gsi (&gsi, TREE_OPERAND (mem_ref, 0),
+ /*simple_p=*/true, NULL,
+ /*before=*/true, GSI_SAME_STMT);
+ copy_ref_info (mem_ref, *expr);
+ *expr = mem_ref;
+ update_stmt (c->cand_stmt);
+}
+
+/* Replace CAND_REF candidate C, each sibling of candidate C, and each
+ dependent of candidate C with an equivalent strength-reduced data
+ reference. */
+
+static void
+replace_refs (slsr_cand_t c)
+{
+ if (gimple_vdef (c->cand_stmt))
+ {
+ tree *lhs = gimple_assign_lhs_ptr (c->cand_stmt);
+ replace_ref (lhs, c);
+ }
+ else
+ {
+ tree *rhs = gimple_assign_rhs1_ptr (c->cand_stmt);
+ replace_ref (rhs, c);
+ }
+
+ if (c->sibling)
+ replace_refs (lookup_cand (c->sibling));
+
+ if (c->dependent)
+ replace_refs (lookup_cand (c->dependent));
+}
+
/* Calculate the increment required for candidate C relative to
its basis. */
@@ -1261,10 +1580,36 @@ cand_increment (slsr_cand_t c)
return c->index;
basis = lookup_cand (c->basis);
- gcc_assert (operand_equal_p (c->base_name, basis->base_name, 0));
+ gcc_assert (operand_equal_p (c->base_expr, basis->base_expr, 0));
return double_int_sub (c->index, basis->index);
}
+/* Calculate the increment required for candidate C relative to
+ its basis. If we aren't going to generate pointer arithmetic
+ for this candidate, return the absolute value of that increment
+ instead. */
+
+static inline double_int
+cand_abs_increment (slsr_cand_t c)
+{
+ double_int increment = cand_increment (c);
+
+ if (!address_arithmetic_p && double_int_negative_p (increment))
+ increment = double_int_neg (increment);
+
+ return increment;
+}
+
+/* If *VAR is NULL or is not of a compatible type with TYPE, create a
+ new temporary reg of type TYPE and store it in *VAR. */
+
+static inline void
+lazy_create_slsr_reg (tree *var, tree type)
+{
+ if (!*var || !types_compatible_p (TREE_TYPE (*var), type))
+ *var = create_tmp_reg (type, "slsr");
+}
+
/* Return TRUE iff candidate C has already been replaced under
another interpretation. */
@@ -1387,6 +1732,789 @@ replace_dependents (slsr_cand_t c)
replace_dependents (lookup_cand (c->dependent));
}
+/* Return the index in the increment vector of the given INCREMENT. */
+
+static inline unsigned
+incr_vec_index (double_int increment)
+{
+ unsigned i;
+
+ for (i = 0;
+ i < incr_vec_len && !double_int_equal_p (increment, incr_vec[i].incr);
+ i++)
+ ;
+
+ gcc_assert (i < incr_vec_len);
+ return i;
+}
+
+/* Count the number of candidates in the tree rooted at C that have
+ not already been replaced under other interpretations. */
+
+static unsigned
+count_candidates (slsr_cand_t c)
+{
+ unsigned count = cand_already_replaced (c) ? 0 : 1;
+
+ if (c->sibling)
+ count += count_candidates (lookup_cand (c->sibling));
+
+ if (c->dependent)
+ count += count_candidates (lookup_cand (c->dependent));
+
+ return count;
+}
+
+/* Increase the count of INCREMENT by one in the increment vector.
+ INCREMENT is associated with candidate C. If an initializer
+ T_0 = stride * I is provided by a candidate that dominates all
+ candidates with the same increment, also record T_0 for subsequent use. */
+
+static void
+record_increment (slsr_cand_t c, double_int increment)
+{
+ bool found = false;
+ unsigned i;
+
+ /* Treat increments that differ only in sign as identical so as to
+ share initializers, unless we are generating pointer arithmetic. */
+ if (!address_arithmetic_p && double_int_negative_p (increment))
+ increment = double_int_neg (increment);
+
+ for (i = 0; i < incr_vec_len; i++)
+ {
+ if (double_int_equal_p (incr_vec[i].incr, increment))
+ {
+ incr_vec[i].count++;
+ found = true;
+
+ /* If we previously recorded an initializer that doesn't
+ dominate this candidate, it's not going to be useful to
+ us after all. */
+ if (incr_vec[i].initializer
+ && !dominated_by_p (CDI_DOMINATORS,
+ gimple_bb (c->cand_stmt),
+ incr_vec[i].init_bb))
+ {
+ incr_vec[i].initializer = NULL_TREE;
+ incr_vec[i].init_bb = NULL;
+ }
+
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ /* The first time we see an increment, create the entry for it.
+ If this is the root candidate which doesn't have a basis, set
+ the count to zero. We're only processing it so it can possibly
+ provide an initializer for other candidates. */
+ incr_vec[incr_vec_len].incr = increment;
+ incr_vec[incr_vec_len].count = c->basis ? 1 : 0;
+ incr_vec[incr_vec_len].cost = COST_INFINITE;
+
+ /* Optimistically record the first occurrence of this increment
+ as providing an initializer (if it does); we will revise this
+ opinion later if it doesn't dominate all other occurrences.
+ Exception: increments of -1, 0, 1 never need initializers. */
+ if (c->kind == CAND_ADD
+ && double_int_equal_p (c->index, increment)
+ && (double_int_scmp (increment, double_int_one) > 0
+ || double_int_scmp (increment, double_int_minus_one) < 0))
+ {
+ tree t0;
+ tree rhs1 = gimple_assign_rhs1 (c->cand_stmt);
+ tree rhs2 = gimple_assign_rhs2 (c->cand_stmt);
+ if (operand_equal_p (rhs1, c->base_expr, 0))
+ t0 = rhs2;
+ else
+ t0 = rhs1;
+ if (SSA_NAME_DEF_STMT (t0) && gimple_bb (SSA_NAME_DEF_STMT (t0)))
+ {
+ incr_vec[incr_vec_len].initializer = t0;
+ incr_vec[incr_vec_len++].init_bb
+ = gimple_bb (SSA_NAME_DEF_STMT (t0));
+ }
+ else
+ {
+ incr_vec[incr_vec_len].initializer = NULL_TREE;
+ incr_vec[incr_vec_len++].init_bb = NULL;
+ }
+ }
+ else
+ {
+ incr_vec[incr_vec_len].initializer = NULL_TREE;
+ incr_vec[incr_vec_len++].init_bb = NULL;
+ }
+ }
+}
+
+/* Determine how many times each unique increment occurs in the set
+ of candidates rooted at C's parent, recording the data in the
+ increment vector. For each unique increment I, if an initializer
+ T_0 = stride * I is provided by a candidate that dominates all
+ candidates with the same increment, also record T_0 for subsequent
+ use. */
+
+static void
+record_increments (slsr_cand_t c)
+{
+ if (!cand_already_replaced (c))
+ record_increment (c, cand_increment (c));
+
+ if (c->sibling)
+ record_increments (lookup_cand (c->sibling));
+
+ if (c->dependent)
+ record_increments (lookup_cand (c->dependent));
+}
+
+/* Return the first candidate in the tree rooted at C that has not
+ already been replaced, favoring siblings over dependents. */
+
+static slsr_cand_t
+unreplaced_cand_in_tree (slsr_cand_t c)
+{
+ if (!cand_already_replaced (c))
+ return c;
+
+ if (c->sibling)
+ {
+ slsr_cand_t sib = unreplaced_cand_in_tree (lookup_cand (c->sibling));
+ if (sib)
+ return sib;
+ }
+
+ if (c->dependent)
+ {
+ slsr_cand_t dep = unreplaced_cand_in_tree (lookup_cand (c->dependent));
+ if (dep)
+ return dep;
+ }
+
+ return NULL;
+}
+
+/* Return TRUE if the candidates in the tree rooted at C should be
+ optimized for speed, else FALSE. We estimate this based on the block
+ containing the most dominant candidate in the tree that has not yet
+ been replaced. */
+
+static bool
+optimize_cands_for_speed_p (slsr_cand_t c)
+{
+ slsr_cand_t c2 = unreplaced_cand_in_tree (c);
+ gcc_assert (c2);
+ return optimize_bb_for_speed_p (gimple_bb (c2->cand_stmt));
+}
+
+/* Add COST_IN to the lowest cost of any dependent path starting at
+ candidate C or any of its siblings, counting only candidates along
+ such paths with increment INCR. Assume that replacing a candidate
+ reduces cost by REPL_SAVINGS. Also account for savings from any
+ statements that would go dead. */
+
+static int
+lowest_cost_path (int cost_in, int repl_savings, slsr_cand_t c, double_int incr)
+{
+ int local_cost, sib_cost;
+ double_int cand_incr = cand_abs_increment (c);
+
+ if (cand_already_replaced (c))
+ local_cost = cost_in;
+ else if (double_int_equal_p (incr, cand_incr))
+ local_cost = cost_in - repl_savings - c->dead_savings;
+ else
+ local_cost = cost_in - c->dead_savings;
+
+ if (c->dependent)
+ local_cost = lowest_cost_path (local_cost, repl_savings,
+ lookup_cand (c->dependent), incr);
+
+ if (c->sibling)
+ {
+ sib_cost = lowest_cost_path (cost_in, repl_savings,
+ lookup_cand (c->sibling), incr);
+ local_cost = MIN (local_cost, sib_cost);
+ }
+
+ return local_cost;
+}
+
+/* Compute the total savings that would accrue from all replacements
+ in the candidate tree rooted at C, counting only candidates with
+ increment INCR. Assume that replacing a candidate reduces cost
+ by REPL_SAVINGS. Also account for savings from statements that
+ would go dead. */
+
+static int
+total_savings (int repl_savings, slsr_cand_t c, double_int incr)
+{
+ int savings = 0;
+ double_int cand_incr = cand_abs_increment (c);
+
+ if (double_int_equal_p (incr, cand_incr)
+ && !cand_already_replaced (c))
+ savings += repl_savings + c->dead_savings;
+
+ if (c->dependent)
+ savings += total_savings (repl_savings, lookup_cand (c->dependent), incr);
+
+ if (c->sibling)
+ savings += total_savings (repl_savings, lookup_cand (c->sibling), incr);
+
+ return savings;
+}
+
+/* Use target-specific costs to determine and record which increments
+ in the current candidate tree are profitable to replace, assuming
+ MODE and SPEED. FIRST_DEP is the first dependent of the root of
+ the candidate tree.
+
+ One slight limitation here is that we don't account for the possible
+ introduction of casts in some cases. See replace_one_candidate for
+ the cases where these are introduced. This should probably be cleaned
+ up sometime. */
+
+static void
+analyze_increments (slsr_cand_t first_dep, enum machine_mode mode, bool speed)
+{
+ unsigned i;
+
+ for (i = 0; i < incr_vec_len; i++)
+ {
+ HOST_WIDE_INT incr = double_int_to_shwi (incr_vec[i].incr);
+
+ /* If somehow this increment is bigger than a HWI, we won't
+ be optimizing candidates that use it. And if the increment
+ has a count of zero, nothing will be done with it. */
+ if (!double_int_fits_in_shwi_p (incr_vec[i].incr)
+ || !incr_vec[i].count)
+ incr_vec[i].cost = COST_INFINITE;
+
+ /* Increments of 0, 1, and -1 are always profitable to replace,
+ because they always replace a multiply or add with an add or
+ copy, and may cause one or more existing instructions to go
+ dead. Exception: -1 can't be assumed to be profitable for
+ pointer addition. */
+ else if (incr == 0
+ || incr == 1
+ || (incr == -1
+ && (gimple_assign_rhs_code (first_dep->cand_stmt)
+ != POINTER_PLUS_EXPR)))
+ incr_vec[i].cost = COST_NEUTRAL;
+
+ /* FORNOW: If we need to add an initializer, give up if a cast from
+ the candidate's type to its stride's type can lose precision.
+ This could eventually be handled better by expressly retaining the
+ result of a cast to a wider type in the stride. Example:
+
+ short int _1;
+ _2 = (int) _1;
+ _3 = _2 * 10;
+ _4 = x + _3; ADD: x + (10 * _1) : int
+ _5 = _2 * 15;
+ _6 = x + _3; ADD: x + (15 * _1) : int
+
+ Right now replacing _6 would cause insertion of an initializer
+ of the form "short int T = _1 * 5;" followed by a cast to
+ int, which could overflow incorrectly. Had we recorded _2 or
+ (int)_1 as the stride, this wouldn't happen. However, doing
+ this breaks other opportunities, so this will require some
+ care. */
+ else if (!incr_vec[i].initializer
+ && TREE_CODE (first_dep->stride) != INTEGER_CST
+ && !legal_cast_p_1 (first_dep->stride,
+ gimple_assign_lhs (first_dep->cand_stmt)))
+
+ incr_vec[i].cost = COST_INFINITE;
+
+ /* For any other increment, if this is a multiply candidate, we
+ must introduce a temporary T and initialize it with
+ T_0 = stride * increment. When optimizing for speed, walk the
+ candidate tree to calculate the best cost reduction along any
+ path; if it offsets the fixed cost of inserting the initializer,
+ replacing the increment is profitable. When optimizing for
+ size, instead calculate the total cost reduction from replacing
+ all candidates with this increment. */
+ else if (first_dep->kind == CAND_MULT)
+ {
+ int cost = mult_by_coeff_cost (incr, mode, speed);
+ int repl_savings = mul_cost (speed, mode) - add_cost (speed, mode);
+ if (speed)
+ cost = lowest_cost_path (cost, repl_savings, first_dep,
+ incr_vec[i].incr);
+ else
+ cost -= total_savings (repl_savings, first_dep, incr_vec[i].incr);
+
+ incr_vec[i].cost = cost;
+ }
+
+ /* If this is an add candidate, the initializer may already
+ exist, so only calculate the cost of the initializer if it
+ doesn't. We are replacing one add with another here, so the
+ known replacement savings is zero. We will account for removal
+ of dead instructions in lowest_cost_path or total_savings. */
+ else
+ {
+ int cost = 0;
+ if (!incr_vec[i].initializer)
+ cost = mult_by_coeff_cost (incr, mode, speed);
+
+ if (speed)
+ cost = lowest_cost_path (cost, 0, first_dep, incr_vec[i].incr);
+ else
+ cost -= total_savings (0, first_dep, incr_vec[i].incr);
+
+ incr_vec[i].cost = cost;
+ }
+ }
+}
+
+/* Return the nearest common dominator of BB1 and BB2. If the blocks
+ are identical, return the earlier of C1 and C2 in *WHERE. Otherwise,
+ if the NCD matches BB1, return C1 in *WHERE; if the NCD matches BB2,
+ return C2 in *WHERE; and if the NCD matches neither, return NULL in
+ *WHERE. Note: It is possible for one of C1 and C2 to be NULL. */
+
+static basic_block
+ncd_for_two_cands (basic_block bb1, basic_block bb2,
+ slsr_cand_t c1, slsr_cand_t c2, slsr_cand_t *where)
+{
+ basic_block ncd;
+
+ if (!bb1)
+ {
+ *where = c2;
+ return bb2;
+ }
+
+ if (!bb2)
+ {
+ *where = c1;
+ return bb1;
+ }
+
+ ncd = nearest_common_dominator (CDI_DOMINATORS, bb1, bb2);
+
+ /* If both candidates are in the same block, the earlier
+ candidate wins. */
+ if (bb1 == ncd && bb2 == ncd)
+ {
+ if (!c1 || (c2 && c2->cand_num < c1->cand_num))
+ *where = c2;
+ else
+ *where = c1;
+ }
+
+ /* Otherwise, if one of them produced a candidate in the
+ dominator, that one wins. */
+ else if (bb1 == ncd)
+ *where = c1;
+
+ else if (bb2 == ncd)
+ *where = c2;
+
+ /* If neither matches the dominator, neither wins. */
+ else
+ *where = NULL;
+
+ return ncd;
+}
+
+/* Consider all candidates in the tree rooted at C for which INCR
+ represents the required increment of C relative to its basis.
+ Find and return the basic block that most nearly dominates all
+ such candidates. If the returned block contains one or more of
+ the candidates, return the earliest candidate in the block in
+ *WHERE. */
+
+static basic_block
+nearest_common_dominator_for_cands (slsr_cand_t c, double_int incr,
+ slsr_cand_t *where)
+{
+ basic_block sib_ncd = NULL, dep_ncd = NULL, this_ncd = NULL, ncd;
+ slsr_cand_t sib_where = NULL, dep_where = NULL, this_where = NULL, new_where;
+ double_int cand_incr;
+
+ /* First find the NCD of all siblings and dependents. */
+ if (c->sibling)
+ sib_ncd = nearest_common_dominator_for_cands (lookup_cand (c->sibling),
+ incr, &sib_where);
+ if (c->dependent)
+ dep_ncd = nearest_common_dominator_for_cands (lookup_cand (c->dependent),
+ incr, &dep_where);
+ if (!sib_ncd && !dep_ncd)
+ {
+ new_where = NULL;
+ ncd = NULL;
+ }
+ else if (sib_ncd && !dep_ncd)
+ {
+ new_where = sib_where;
+ ncd = sib_ncd;
+ }
+ else if (dep_ncd && !sib_ncd)
+ {
+ new_where = dep_where;
+ ncd = dep_ncd;
+ }
+ else
+ ncd = ncd_for_two_cands (sib_ncd, dep_ncd, sib_where,
+ dep_where, &new_where);
+
+ /* If the candidate's increment doesn't match the one we're interested
+ in, then the result depends only on siblings and dependents. */
+ cand_incr = cand_abs_increment (c);
+
+ if (!double_int_equal_p (cand_incr, incr) || cand_already_replaced (c))
+ {
+ *where = new_where;
+ return ncd;
+ }
+
+ /* Otherwise, compare this candidate with the result from all siblings
+ and dependents. */
+ this_where = c;
+ this_ncd = gimple_bb (c->cand_stmt);
+ ncd = ncd_for_two_cands (ncd, this_ncd, new_where, this_where, where);
+
+ return ncd;
+}
+
+/* Return TRUE if the increment indexed by INDEX is profitable to replace. */
+
+static inline bool
+profitable_increment_p (unsigned index)
+{
+ return (incr_vec[index].cost <= COST_NEUTRAL);
+}
+
+/* For each profitable increment in the increment vector not equal to
+ 0 or 1 (or -1, for non-pointer arithmetic), find the nearest common
+ dominator of all statements in the candidate chain rooted at C
+ that require that increment, and insert an initializer
+ T_0 = stride * increment at that location. Record T_0 with the
+ increment record. */
+
+static void
+insert_initializers (slsr_cand_t c)
+{
+ unsigned i;
+ tree new_var = NULL_TREE;
+
+ for (i = 0; i < incr_vec_len; i++)
+ {
+ basic_block bb;
+ slsr_cand_t where = NULL;
+ gimple init_stmt;
+ tree stride_type, new_name, incr_tree;
+ double_int incr = incr_vec[i].incr;
+
+ if (!profitable_increment_p (i)
+ || double_int_one_p (incr)
+ || (double_int_minus_one_p (incr)
+ && gimple_assign_rhs_code (c->cand_stmt) != POINTER_PLUS_EXPR)
+ || double_int_zero_p (incr))
+ continue;
+
+ /* We may have already identified an existing initializer that
+ will suffice. */
+ if (incr_vec[i].initializer)
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fputs ("Using existing initializer: ", dump_file);
+ print_gimple_stmt (dump_file,
+ SSA_NAME_DEF_STMT (incr_vec[i].initializer),
+ 0, 0);
+ }
+ continue;
+ }
+
+ /* Find the block that most closely dominates all candidates
+ with this increment. If there is at least one candidate in
+ that block, the earliest one will be returned in WHERE. */
+ bb = nearest_common_dominator_for_cands (c, incr, &where);
+
+ /* Create a new SSA name to hold the initializer's value. */
+ stride_type = TREE_TYPE (c->stride);
+ lazy_create_slsr_reg (&new_var, stride_type);
+ new_name = make_ssa_name (new_var, NULL);
+ incr_vec[i].initializer = new_name;
+
+ /* Create the initializer and insert it in the latest possible
+ dominating position. */
+ incr_tree = double_int_to_tree (stride_type, incr);
+ init_stmt = gimple_build_assign_with_ops (MULT_EXPR, new_name,
+ c->stride, incr_tree);
+ if (where)
+ {
+ gimple_stmt_iterator gsi = gsi_for_stmt (where->cand_stmt);
+ gsi_insert_before (&gsi, init_stmt, GSI_SAME_STMT);
+ gimple_set_location (init_stmt, gimple_location (where->cand_stmt));
+ }
+ else
+ {
+ gimple_stmt_iterator gsi = gsi_last_bb (bb);
+ gimple basis_stmt = lookup_cand (c->basis)->cand_stmt;
+
+ if (!gsi_end_p (gsi) && is_ctrl_stmt (gsi_stmt (gsi)))
+ gsi_insert_before (&gsi, init_stmt, GSI_SAME_STMT);
+ else
+ gsi_insert_after (&gsi, init_stmt, GSI_SAME_STMT);
+
+ gimple_set_location (init_stmt, gimple_location (basis_stmt));
+ }
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fputs ("Inserting initializer: ", dump_file);
+ print_gimple_stmt (dump_file, init_stmt, 0, 0);
+ }
+ }
+}
+
+/* Create a NOP_EXPR that copies FROM_EXPR into a new SSA name of
+ type TO_TYPE, and insert it in front of the statement represented
+ by candidate C. Use *NEW_VAR to create the new SSA name. Return
+ the new SSA name. */
+
+static tree
+introduce_cast_before_cand (slsr_cand_t c, tree to_type,
+ tree from_expr, tree *new_var)
+{
+ tree cast_lhs;
+ gimple cast_stmt;
+ gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+
+ lazy_create_slsr_reg (new_var, to_type);
+ cast_lhs = make_ssa_name (*new_var, NULL);
+ cast_stmt = gimple_build_assign_with_ops (NOP_EXPR, cast_lhs,
+ from_expr, NULL_TREE);
+ gimple_set_location (cast_stmt, gimple_location (c->cand_stmt));
+ gsi_insert_before (&gsi, cast_stmt, GSI_SAME_STMT);
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fputs (" Inserting: ", dump_file);
+ print_gimple_stmt (dump_file, cast_stmt, 0, 0);
+ }
+
+ return cast_lhs;
+}
+
+/* Replace the RHS of the statement represented by candidate C with
+ NEW_CODE, NEW_RHS1, and NEW_RHS2, provided that to do so doesn't
+ leave C unchanged or just interchange its operands. The original
+ operation and operands are in OLD_CODE, OLD_RHS1, and OLD_RHS2.
+ If the replacement was made and we are doing a details dump,
+ return the revised statement, else NULL. */
+
+static gimple
+replace_rhs_if_not_dup (enum tree_code new_code, tree new_rhs1, tree new_rhs2,
+ enum tree_code old_code, tree old_rhs1, tree old_rhs2,
+ slsr_cand_t c)
+{
+ if (new_code != old_code
+ || ((!operand_equal_p (new_rhs1, old_rhs1, 0)
+ || !operand_equal_p (new_rhs2, old_rhs2, 0))
+ && (!operand_equal_p (new_rhs1, old_rhs2, 0)
+ || !operand_equal_p (new_rhs2, old_rhs1, 0))))
+ {
+ gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+ gimple_assign_set_rhs_with_ops (&gsi, new_code, new_rhs1, new_rhs2);
+ update_stmt (gsi_stmt (gsi));
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ return gsi_stmt (gsi);
+ }
+
+ else if (dump_file && (dump_flags & TDF_DETAILS))
+ fputs (" (duplicate, not actually replacing)\n", dump_file);
+
+ return NULL;
+}
+
+/* Strength-reduce the statement represented by candidate C by replacing
+ it with an equivalent addition or subtraction. I is the index into
+ the increment vector identifying C's increment. NEW_VAR is used to
+ create a new SSA name if a cast needs to be introduced. BASIS_NAME
+ is the rhs1 to use in creating the add/subtract. */
+
+static void
+replace_one_candidate (slsr_cand_t c, unsigned i, tree *new_var,
+ tree basis_name)
+{
+ gimple stmt_to_print = NULL;
+ tree orig_rhs1, orig_rhs2;
+ tree rhs2;
+ enum tree_code orig_code, repl_code;
+ double_int cand_incr;
+
+ orig_code = gimple_assign_rhs_code (c->cand_stmt);
+ orig_rhs1 = gimple_assign_rhs1 (c->cand_stmt);
+ orig_rhs2 = gimple_assign_rhs2 (c->cand_stmt);
+ cand_incr = cand_increment (c);
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fputs ("Replacing: ", dump_file);
+ print_gimple_stmt (dump_file, c->cand_stmt, 0, 0);
+ stmt_to_print = c->cand_stmt;
+ }
+
+ if (address_arithmetic_p)
+ repl_code = POINTER_PLUS_EXPR;
+ else
+ repl_code = PLUS_EXPR;
+
+ /* If the increment has an initializer T_0, replace the candidate
+ statement with an add of the basis name and the initializer. */
+ if (incr_vec[i].initializer)
+ {
+ tree init_type = TREE_TYPE (incr_vec[i].initializer);
+ tree orig_type = TREE_TYPE (orig_rhs2);
+
+ if (types_compatible_p (orig_type, init_type))
+ rhs2 = incr_vec[i].initializer;
+ else
+ rhs2 = introduce_cast_before_cand (c, orig_type,
+ incr_vec[i].initializer,
+ new_var);
+
+ if (!double_int_equal_p (incr_vec[i].incr, cand_incr))
+ {
+ gcc_assert (repl_code == PLUS_EXPR);
+ repl_code = MINUS_EXPR;
+ }
+
+ stmt_to_print = replace_rhs_if_not_dup (repl_code, basis_name, rhs2,
+ orig_code, orig_rhs1, orig_rhs2,
+ c);
+ }
+
+ /* Otherwise, the increment is one of -1, 0, and 1. Replace
+ with a subtract of the stride from the basis name, a copy
+ from the basis name, or an add of the stride to the basis
+ name, respectively. It may be necessary to introduce a
+ cast (or reuse an existing cast). */
+ else if (double_int_one_p (cand_incr))
+ {
+ tree stride_type = TREE_TYPE (c->stride);
+ tree orig_type = TREE_TYPE (orig_rhs2);
+
+ if (types_compatible_p (orig_type, stride_type))
+ rhs2 = c->stride;
+ else
+ rhs2 = introduce_cast_before_cand (c, orig_type, c->stride, new_var);
+
+ stmt_to_print = replace_rhs_if_not_dup (repl_code, basis_name, rhs2,
+ orig_code, orig_rhs1, orig_rhs2,
+ c);
+ }
+
+ else if (double_int_minus_one_p (cand_incr))
+ {
+ tree stride_type = TREE_TYPE (c->stride);
+ tree orig_type = TREE_TYPE (orig_rhs2);
+ gcc_assert (repl_code != POINTER_PLUS_EXPR);
+
+ if (types_compatible_p (orig_type, stride_type))
+ rhs2 = c->stride;
+ else
+ rhs2 = introduce_cast_before_cand (c, orig_type, c->stride, new_var);
+
+ if (orig_code != MINUS_EXPR
+ || !operand_equal_p (basis_name, orig_rhs1, 0)
+ || !operand_equal_p (rhs2, orig_rhs2, 0))
+ {
+ gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+ gimple_assign_set_rhs_with_ops (&gsi, MINUS_EXPR, basis_name, rhs2);
+ update_stmt (gsi_stmt (gsi));
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ stmt_to_print = gsi_stmt (gsi);
+ }
+ else if (dump_file && (dump_flags & TDF_DETAILS))
+ fputs (" (duplicate, not actually replacing)\n", dump_file);
+ }
+
+ else if (double_int_zero_p (cand_incr))
+ {
+ tree lhs = gimple_assign_lhs (c->cand_stmt);
+ tree lhs_type = TREE_TYPE (lhs);
+ tree basis_type = TREE_TYPE (basis_name);
+
+ if (types_compatible_p (lhs_type, basis_type))
+ {
+ gimple copy_stmt = gimple_build_assign (lhs, basis_name);
+ gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+ gimple_set_location (copy_stmt, gimple_location (c->cand_stmt));
+ gsi_replace (&gsi, copy_stmt, false);
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ stmt_to_print = copy_stmt;
+ }
+ else
+ {
+ gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+ gimple cast_stmt = gimple_build_assign_with_ops (NOP_EXPR, lhs,
+ basis_name,
+ NULL_TREE);
+ gimple_set_location (cast_stmt, gimple_location (c->cand_stmt));
+ gsi_replace (&gsi, cast_stmt, false);
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ stmt_to_print = cast_stmt;
+ }
+ }
+ else
+ gcc_unreachable ();
+
+ if (dump_file && (dump_flags & TDF_DETAILS) && stmt_to_print)
+ {
+ fputs ("With: ", dump_file);
+ print_gimple_stmt (dump_file, stmt_to_print, 0, 0);
+ fputs ("\n", dump_file);
+ }
+}
+
+/* For each candidate in the tree rooted at C, replace it with
+ an increment if such has been shown to be profitable. */
+
+static void
+replace_profitable_candidates (slsr_cand_t c)
+{
+ if (!cand_already_replaced (c))
+ {
+ double_int increment = cand_abs_increment (c);
+ tree new_var = NULL;
+ enum tree_code orig_code = gimple_assign_rhs_code (c->cand_stmt);
+ unsigned i;
+
+ i = incr_vec_index (increment);
+
+ /* Only process profitable increments. Nothing useful can be done
+ to a cast or copy. */
+ if (profitable_increment_p (i)
+ && orig_code != MODIFY_EXPR
+ && orig_code != NOP_EXPR)
+ {
+ slsr_cand_t basis = lookup_cand (c->basis);
+ tree basis_name = gimple_assign_lhs (basis->cand_stmt);
+ replace_one_candidate (c, i, &new_var, basis_name);
+ }
+ }
+
+ if (c->sibling)
+ replace_profitable_candidates (lookup_cand (c->sibling));
+
+ if (c->dependent)
+ replace_profitable_candidates (lookup_cand (c->dependent));
+}
+
/* Analyze costs of related candidates in the candidate vector,
and make beneficial replacements. */
@@ -1413,23 +2541,60 @@ analyze_candidates_and_replace (void)
first_dep = lookup_cand (c->dependent);
+ /* If this is a chain of CAND_REFs, unconditionally replace
+ each of them with a strength-reduced data reference. */
+ if (c->kind == CAND_REF)
+ replace_refs (c);
+
/* If the common stride of all related candidates is a
known constant, and none of these has a phi-dependence,
then all replacements are considered profitable.
Each replaces a multiply by a single add, with the
possibility that a feeding add also goes dead as a
result. */
- if (unconditional_cands_with_known_stride_p (c))
+ else if (unconditional_cands_with_known_stride_p (c))
replace_dependents (first_dep);
- /* TODO: When the stride is an SSA name, it may still be
- profitable to replace some or all of the dependent
- candidates, depending on whether the introduced increments
- can be reused, or are less expensive to calculate than
- the replaced statements. */
-
- /* TODO: Strength-reduce data references with implicit
- multiplication in their addressing expressions. */
+ /* When the stride is an SSA name, it may still be profitable
+ to replace some or all of the dependent candidates, depending
+ on whether the introduced increments can be reused, or are
+ less expensive to calculate than the replaced statements. */
+ else
+ {
+ unsigned length;
+ enum machine_mode mode;
+ bool speed;
+
+ /* Determine whether we'll be generating pointer arithmetic
+ when replacing candidates. */
+ address_arithmetic_p = (c->kind == CAND_ADD
+ && POINTER_TYPE_P (c->cand_type));
+
+ /* If all candidates have already been replaced under other
+ interpretations, nothing remains to be done. */
+ length = count_candidates (c);
+ if (!length)
+ continue;
+
+ /* Construct an array of increments for this candidate chain. */
+ incr_vec = XNEWVEC (incr_info, length);
+ incr_vec_len = 0;
+ record_increments (c);
+
+ /* Determine which increments are profitable to replace. */
+ mode = TYPE_MODE (TREE_TYPE (gimple_assign_lhs (c->cand_stmt)));
+ speed = optimize_cands_for_speed_p (c);
+ analyze_increments (first_dep, mode, speed);
+
+ /* Insert initializers of the form T_0 = stride * increment
+ for use in profitable replacements. */
+ insert_initializers (first_dep);
+ dump_incr_vec ();
+
+ /* Perform the replacements. */
+ replace_profitable_candidates (first_dep);
+ free (incr_vec);
+ }
/* TODO: When conditional increments occur so that a
candidate is dependent upon a phi-basis, the cost of
@@ -1454,17 +2619,14 @@ execute_strength_reduction (void)
/* Create the obstack where candidate chains will reside. */
gcc_obstack_init (&chain_obstack);
- /* Allocate the mapping from base names to candidate chains. */
- base_cand_map = XNEWVEC (cand_chain_t, num_ssa_names);
- memset (base_cand_map, 0, num_ssa_names * sizeof (cand_chain_t));
+ /* Allocate the mapping from base expressions to candidate chains. */
+ base_cand_map = htab_create (500, base_cand_hash,
+ base_cand_eq, base_cand_free);
/* Initialize the loop optimizer. We need to detect flow across
back edges, and this gives us dominator information as well. */
loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
- /* Initialize costs tables in IVOPTS. */
- initialize_costs ();
-
/* Set up callbacks for the generic dominator tree walker. */
walk_data.dom_direction = CDI_DOMINATORS;
walk_data.initialize_block_local_data = NULL;
@@ -1490,12 +2652,11 @@ execute_strength_reduction (void)
/* Free resources. */
fini_walk_dominator_tree (&walk_data);
loop_optimizer_finalize ();
- free (base_cand_map);
+ htab_delete (base_cand_map);
obstack_free (&chain_obstack, NULL);
pointer_map_destroy (stmt_cand_map);
VEC_free (slsr_cand_t, heap, cand_vec);
obstack_free (&cand_obstack, NULL);
- finalize_costs ();
return 0;
}
@@ -1503,7 +2664,7 @@ execute_strength_reduction (void)
static bool
gate_strength_reduction (void)
{
- return optimize > 0;
+ return flag_tree_slsr;
}
struct gimple_opt_pass pass_strength_reduction =
diff --git a/gcc/gimple-streamer-in.c b/gcc/gimple-streamer-in.c
index 1b6bf4bd6d7..e2934c7fa8d 100644
--- a/gcc/gimple-streamer-in.c
+++ b/gcc/gimple-streamer-in.c
@@ -45,7 +45,6 @@ input_phi (struct lto_input_block *ib, basic_block bb, struct data_in *data_in,
phi_result = VEC_index (tree, SSANAMES (fn), ix);
len = EDGE_COUNT (bb->preds);
result = create_phi_node (phi_result, bb);
- SSA_NAME_DEF_STMT (phi_result) = result;
/* We have to go through a lookup process here because the preds in the
reconstructed graph are generally in a different order than they
@@ -297,7 +296,6 @@ input_bb (struct lto_input_block *ib, enum LTO_tags tag,
bb->count = (streamer_read_hwi (ib) * count_materialization_scale
+ REG_BR_PROB_BASE / 2) / REG_BR_PROB_BASE;
- bb->loop_depth = streamer_read_hwi (ib);
bb->frequency = streamer_read_hwi (ib);
bb->flags = streamer_read_hwi (ib);
@@ -310,8 +308,6 @@ input_bb (struct lto_input_block *ib, enum LTO_tags tag,
while (tag)
{
gimple stmt = input_gimple_stmt (ib, data_in, fn, tag);
- if (!is_gimple_debug (stmt))
- find_referenced_vars_in (stmt);
gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
/* After the statement, expect a 0 delimiter or the EH region
@@ -332,8 +328,7 @@ input_bb (struct lto_input_block *ib, enum LTO_tags tag,
tag = streamer_read_record_start (ib);
while (tag)
{
- gimple phi = input_phi (ib, bb, data_in, fn);
- find_referenced_vars_in (phi);
+ input_phi (ib, bb, data_in, fn);
tag = streamer_read_record_start (ib);
}
}
diff --git a/gcc/gimple-streamer-out.c b/gcc/gimple-streamer-out.c
index a7e73fa8db2..5be8567d69a 100644
--- a/gcc/gimple-streamer-out.c
+++ b/gcc/gimple-streamer-out.c
@@ -176,7 +176,6 @@ output_bb (struct output_block *ob, basic_block bb, struct function *fn)
streamer_write_uhwi (ob, bb->index);
streamer_write_hwi (ob, bb->count);
- streamer_write_hwi (ob, bb->loop_depth);
streamer_write_hwi (ob, bb->frequency);
streamer_write_hwi (ob, bb->flags);
@@ -211,7 +210,7 @@ output_bb (struct output_block *ob, basic_block bb, struct function *fn)
/* Only emit PHIs for gimple registers. PHI nodes for .MEM
will be filled in on reading when the SSA form is
updated. */
- if (is_gimple_reg (gimple_phi_result (phi)))
+ if (!virtual_operand_p (gimple_phi_result (phi)))
output_phi (ob, phi);
}
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 398cb1f93e4..d78c60f22e8 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -79,7 +79,6 @@ EXPORTED_CONST enum gimple_statement_structure_enum gss_for_code_[] = {
};
#undef DEFGSCODE
-#ifdef GATHER_STATISTICS
/* Gimple stats. */
int gimple_alloc_counts[(int) gimple_alloc_kind_all];
@@ -93,8 +92,6 @@ static const char * const gimple_alloc_kind_names[] = {
"everything else"
};
-#endif /* GATHER_STATISTICS */
-
/* Private API manipulation functions shared only with some
other files. */
extern void gimple_set_stored_syms (gimple, bitmap, bitmap_obstack *);
@@ -134,13 +131,12 @@ gimple_alloc_stat (enum gimple_code code, unsigned num_ops MEM_STAT_DECL)
if (num_ops > 0)
size += sizeof (tree) * (num_ops - 1);
-#ifdef GATHER_STATISTICS
- {
- enum gimple_alloc_kind kind = gimple_alloc_kind (code);
- gimple_alloc_counts[(int) kind]++;
- gimple_alloc_sizes[(int) kind] += size;
- }
-#endif
+ if (GATHER_STATISTICS)
+ {
+ enum gimple_alloc_kind kind = gimple_alloc_kind (code);
+ gimple_alloc_counts[(int) kind]++;
+ gimple_alloc_sizes[(int) kind] += size;
+ }
stmt = ggc_alloc_cleared_gimple_statement_d_stat (size PASS_MEM_STAT);
gimple_set_code (stmt, code);
@@ -645,9 +641,8 @@ gimple_build_asm_1 (const char *string, unsigned ninputs, unsigned noutputs,
p->gimple_asm.nl = nlabels;
p->gimple_asm.string = ggc_alloc_string (string, size);
-#ifdef GATHER_STATISTICS
- gimple_alloc_sizes[(int) gimple_alloc_kind (GIMPLE_ASM)] += size;
-#endif
+ if (GATHER_STATISTICS)
+ gimple_alloc_sizes[(int) gimple_alloc_kind (GIMPLE_ASM)] += size;
return p;
}
@@ -2503,9 +2498,14 @@ gimple_assign_rhs_could_trap_p (gimple s)
void
dump_gimple_statistics (void)
{
-#ifdef GATHER_STATISTICS
int i, total_tuples = 0, total_bytes = 0;
+ if (! GATHER_STATISTICS)
+ {
+ fprintf (stderr, "No gimple statistics\n");
+ return;
+ }
+
fprintf (stderr, "\nGIMPLE statements\n");
fprintf (stderr, "Kind Stmts Bytes\n");
fprintf (stderr, "---------------------------------------\n");
@@ -2519,9 +2519,6 @@ dump_gimple_statistics (void)
fprintf (stderr, "---------------------------------------\n");
fprintf (stderr, "%-20s %7d %10d\n", "Total", total_tuples, total_bytes);
fprintf (stderr, "---------------------------------------\n");
-#else
- fprintf (stderr, "No gimple statistics\n");
-#endif
}
@@ -2785,19 +2782,12 @@ is_gimple_id (tree t)
bool
is_gimple_reg (tree t)
{
- if (TREE_CODE (t) == SSA_NAME)
- {
- t = SSA_NAME_VAR (t);
- if (TREE_CODE (t) == VAR_DECL
- && VAR_DECL_IS_VIRTUAL_OPERAND (t))
- return false;
- return true;
- }
-
- if (TREE_CODE (t) == VAR_DECL
- && VAR_DECL_IS_VIRTUAL_OPERAND (t))
+ if (virtual_operand_p (t))
return false;
+ if (TREE_CODE (t) == SSA_NAME)
+ return true;
+
if (!is_gimple_variable (t))
return false;
@@ -4449,10 +4439,6 @@ gimple_canonical_types_compatible_p (tree t1, tree t2)
return true;
}
- /* If their attributes are not the same they can't be the same type. */
- if (!attribute_list_equal (TYPE_ATTRIBUTES (t1), TYPE_ATTRIBUTES (t2)))
- return false;
-
/* Do type-specific comparisons. */
switch (TREE_CODE (t1))
{
@@ -4499,13 +4485,6 @@ gimple_canonical_types_compatible_p (tree t1, tree t2)
}
case METHOD_TYPE:
- /* Method types should belong to the same class. */
- if (!gimple_canonical_types_compatible_p
- (TYPE_METHOD_BASETYPE (t1), TYPE_METHOD_BASETYPE (t2)))
- return false;
-
- /* Fallthru */
-
case FUNCTION_TYPE:
/* Function types are the same if the return type and arguments types
are the same. */
diff --git a/gcc/gimple.h b/gcc/gimple.h
index 193590dbe74..827103d0eb3 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -28,6 +28,7 @@ along with GCC; see the file COPYING3. If not see
#include "vecir.h"
#include "ggc.h"
#include "basic-block.h"
+#include "tree.h"
#include "tree-ssa-operands.h"
#include "tree-ssa-alias.h"
#include "internal-fn.h"
@@ -150,7 +151,7 @@ typedef struct
/* Data structure definitions for GIMPLE tuples. NOTE: word markers
are for 64 bit hosts. */
-struct GTY(()) gimple_statement_base {
+struct GTY((chain_next ("%h.next"))) gimple_statement_base {
/* [ WORD 1 ]
Main identifying code for a tuple. */
ENUM_BITFIELD(gimple_code) code : 8;
@@ -199,7 +200,7 @@ struct GTY(()) gimple_statement_base {
/* [ WORD 3 ]
Basic block holding this statement. */
- struct basic_block_def *bb;
+ basic_block bb;
/* [ WORD 4-5 ]
Linked lists of gimple statements. The next pointers form
@@ -817,7 +818,7 @@ void gimple_call_reset_alias_info (gimple);
bool gimple_assign_copy_p (gimple);
bool gimple_assign_ssa_name_copy_p (gimple);
bool gimple_assign_unary_nop_p (gimple);
-void gimple_set_bb (gimple, struct basic_block_def *);
+void gimple_set_bb (gimple, basic_block);
void gimple_assign_set_rhs_from_tree (gimple_stmt_iterator *, tree);
void gimple_assign_set_rhs_with_ops_1 (gimple_stmt_iterator *, enum tree_code,
tree, tree, tree);
@@ -1185,7 +1186,7 @@ gimple_has_substatements (gimple g)
/* Return the basic block holding statement G. */
-static inline struct basic_block_def *
+static inline basic_block
gimple_bb (const_gimple g)
{
return g->gsbase.bb;
@@ -3493,6 +3494,8 @@ gimple_phi_set_result (gimple gs, tree result)
{
GIMPLE_CHECK (gs, GIMPLE_PHI);
gs->gimple_phi.result = result;
+ if (result && TREE_CODE (result) == SSA_NAME)
+ SSA_NAME_DEF_STMT (result) = gs;
}
@@ -5189,7 +5192,7 @@ bool gsi_remove (gimple_stmt_iterator *, bool);
gimple_stmt_iterator gsi_for_stmt (gimple);
void gsi_move_after (gimple_stmt_iterator *, gimple_stmt_iterator *);
void gsi_move_before (gimple_stmt_iterator *, gimple_stmt_iterator *);
-void gsi_move_to_bb_end (gimple_stmt_iterator *, struct basic_block_def *);
+void gsi_move_to_bb_end (gimple_stmt_iterator *, basic_block);
void gsi_insert_on_edge (edge, gimple);
void gsi_insert_seq_on_edge (edge, gimple_seq);
basic_block gsi_insert_on_edge_immediate (edge, gimple);
@@ -5269,7 +5272,6 @@ tree walk_gimple_stmt (gimple_stmt_iterator *, walk_stmt_fn, walk_tree_fn,
struct walk_stmt_info *);
tree walk_gimple_op (gimple, walk_tree_fn, struct walk_stmt_info *);
-#ifdef GATHER_STATISTICS
/* Enum and arrays used for allocation stats. Keep in sync with
gimple.c:gimple_alloc_kind_names. */
enum gimple_alloc_kind
@@ -5300,7 +5302,6 @@ gimple_alloc_kind (enum gimple_code code)
return gimple_alloc_kind_rest;
}
}
-#endif /* GATHER_STATISTICS */
extern void dump_gimple_statistics (void);
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 9bf4ead84ed..27930277c9c 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -44,11 +44,9 @@ along with GCC; see the file COPYING3. If not see
#include "splay-tree.h"
#include "vec.h"
#include "gimple.h"
-#include "tree-pass.h"
-#include "langhooks-def.h" /* FIXME: for lhd_set_decl_assembler_name. */
-#include "expr.h" /* FIXME: for can_move_by_pieces
- and STACK_CHECK_MAX_VAR_SIZE. */
+#include "langhooks-def.h" /* FIXME: for lhd_set_decl_assembler_name */
+#include "tree-pass.h" /* FIXME: only for PROP_gimple_any */
enum gimplify_omp_var_data
{
@@ -490,58 +488,6 @@ create_tmp_reg (tree type, const char *prefix)
return tmp;
}
-/* Create a temporary with a name derived from VAL. Subroutine of
- lookup_tmp_var; nobody else should call this function. */
-
-static inline tree
-create_tmp_from_val (tree val)
-{
- /* Drop all qualifiers and address-space information from the value type. */
- return create_tmp_var (TYPE_MAIN_VARIANT (TREE_TYPE (val)), get_name (val));
-}
-
-/* Create a temporary to hold the value of VAL. If IS_FORMAL, try to reuse
- an existing expression temporary. */
-
-static tree
-lookup_tmp_var (tree val, bool is_formal)
-{
- tree ret;
-
- /* If not optimizing, never really reuse a temporary. local-alloc
- won't allocate any variable that is used in more than one basic
- block, which means it will go into memory, causing much extra
- work in reload and final and poorer code generation, outweighing
- the extra memory allocation here. */
- if (!optimize || !is_formal || TREE_SIDE_EFFECTS (val))
- ret = create_tmp_from_val (val);
- else
- {
- elt_t elt, *elt_p;
- void **slot;
-
- elt.val = val;
- if (gimplify_ctxp->temp_htab == NULL)
- gimplify_ctxp->temp_htab
- = htab_create (1000, gimple_tree_hash, gimple_tree_eq, free);
- slot = htab_find_slot (gimplify_ctxp->temp_htab, (void *)&elt, INSERT);
- if (*slot == NULL)
- {
- elt_p = XNEW (elt_t);
- elt_p->val = val;
- elt_p->temp = ret = create_tmp_from_val (val);
- *slot = (void *) elt_p;
- }
- else
- {
- elt_p = (elt_t *) *slot;
- ret = elt_p->temp;
- }
- }
-
- return ret;
-}
-
/* Returns true iff T is a valid RHS for an assignment to a renamed
user -- or front-end generated artificial -- variable. */
@@ -593,6 +539,64 @@ is_gimple_mem_rhs_or_call (tree t)
|| TREE_CODE (t) == CALL_EXPR);
}
+/* Create a temporary with a name derived from VAL. Subroutine of
+ lookup_tmp_var; nobody else should call this function. */
+
+static inline tree
+create_tmp_from_val (tree val, bool is_formal)
+{
+ /* Drop all qualifiers and address-space information from the value type. */
+ tree type = TYPE_MAIN_VARIANT (TREE_TYPE (val));
+ tree var = create_tmp_var (type, get_name (val));
+ if (is_formal
+ && (TREE_CODE (TREE_TYPE (var)) == COMPLEX_TYPE
+ || TREE_CODE (TREE_TYPE (var)) == VECTOR_TYPE))
+ DECL_GIMPLE_REG_P (var) = 1;
+ return var;
+}
+
+/* Create a temporary to hold the value of VAL. If IS_FORMAL, try to reuse
+ an existing expression temporary. */
+
+static tree
+lookup_tmp_var (tree val, bool is_formal)
+{
+ tree ret;
+
+ /* If not optimizing, never really reuse a temporary. local-alloc
+ won't allocate any variable that is used in more than one basic
+ block, which means it will go into memory, causing much extra
+ work in reload and final and poorer code generation, outweighing
+ the extra memory allocation here. */
+ if (!optimize || !is_formal || TREE_SIDE_EFFECTS (val))
+ ret = create_tmp_from_val (val, is_formal);
+ else
+ {
+ elt_t elt, *elt_p;
+ void **slot;
+
+ elt.val = val;
+ if (gimplify_ctxp->temp_htab == NULL)
+ gimplify_ctxp->temp_htab
+ = htab_create (1000, gimple_tree_hash, gimple_tree_eq, free);
+ slot = htab_find_slot (gimplify_ctxp->temp_htab, (void *)&elt, INSERT);
+ if (*slot == NULL)
+ {
+ elt_p = XNEW (elt_t);
+ elt_p->val = val;
+ elt_p->temp = ret = create_tmp_from_val (val, is_formal);
+ *slot = (void *) elt_p;
+ }
+ else
+ {
+ elt_p = (elt_t *) *slot;
+ ret = elt_p->temp;
+ }
+ }
+
+ return ret;
+}
+
/* Helper for get_formal_tmp_var and get_initialized_tmp_var. */
static tree
@@ -606,12 +610,11 @@ internal_get_tmp_var (tree val, gimple_seq *pre_p, gimple_seq *post_p,
gimplify_expr (&val, pre_p, post_p, is_gimple_reg_rhs_or_call,
fb_rvalue);
- t = lookup_tmp_var (val, is_formal);
-
- if (is_formal
- && (TREE_CODE (TREE_TYPE (t)) == COMPLEX_TYPE
- || TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE))
- DECL_GIMPLE_REG_P (t) = 1;
+ if (gimplify_ctxp->into_ssa
+ && is_gimple_reg_type (TREE_TYPE (val)))
+ t = make_ssa_name (TYPE_MAIN_VARIANT (TREE_TYPE (val)), NULL);
+ else
+ t = lookup_tmp_var (val, is_formal);
mod = build2 (INIT_EXPR, TREE_TYPE (t), t, unshare_expr (val));
@@ -621,14 +624,6 @@ internal_get_tmp_var (tree val, gimple_seq *pre_p, gimple_seq *post_p,
gimplify_and_add (mod, pre_p);
ggc_free (mod);
- /* If we're gimplifying into ssa, gimplify_modify_expr will have
- given our temporary an SSA name. Find and return it. */
- if (gimplify_ctxp->into_ssa)
- {
- gimple last = gimple_seq_last_stmt (*pre_p);
- t = gimple_get_lhs (last);
- }
-
return t;
}
@@ -1247,7 +1242,8 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p)
&& !DECL_HAS_VALUE_EXPR_P (t)
/* Only care for variables that have to be in memory. Others
will be rewritten into SSA names, hence moved to the top-level. */
- && !is_gimple_reg (t))
+ && !is_gimple_reg (t)
+ && flag_stack_reuse != SR_NONE)
{
tree clobber = build_constructor (TREE_TYPE (t), NULL);
TREE_THIS_VOLATILE (clobber) = 1;
@@ -2120,7 +2116,7 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
fallback_t fallback)
{
tree *p;
- VEC(tree,heap) *stack;
+ VEC(tree,heap) *expr_stack;
enum gimplify_status ret = GS_ALL_DONE, tret;
int i;
location_t loc = EXPR_LOCATION (*expr_p);
@@ -2128,7 +2124,7 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
/* Create a stack of the subexpressions so later we can walk them in
order from inner to outer. */
- stack = VEC_alloc (tree, heap, 10);
+ expr_stack = VEC_alloc (tree, heap, 10);
/* We can handle anything that get_inner_reference can deal with. */
for (p = expr_p; ; p = &TREE_OPERAND (*p, 0))
@@ -2148,13 +2144,13 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
else
break;
- VEC_safe_push (tree, heap, stack, *p);
+ VEC_safe_push (tree, heap, expr_stack, *p);
}
- gcc_assert (VEC_length (tree, stack));
+ gcc_assert (VEC_length (tree, expr_stack));
- /* Now STACK is a stack of pointers to all the refs we've walked through
- and P points to the innermost expression.
+ /* Now EXPR_STACK is a stack of pointers to all the refs we've
+ walked through and P points to the innermost expression.
Java requires that we elaborated nodes in source order. That
means we must gimplify the inner expression followed by each of
@@ -2165,9 +2161,9 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
So we do this in three steps. First we deal with the annotations
for any variables in the components, then we gimplify the base,
then we gimplify any indices, from left to right. */
- for (i = VEC_length (tree, stack) - 1; i >= 0; i--)
+ for (i = VEC_length (tree, expr_stack) - 1; i >= 0; i--)
{
- tree t = VEC_index (tree, stack, i);
+ tree t = VEC_index (tree, expr_stack, i);
if (TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF)
{
@@ -2258,11 +2254,11 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
fallback | fb_lvalue);
ret = MIN (ret, tret);
- /* And finally, the indices and operands to BIT_FIELD_REF. During this
+ /* And finally, the indices and operands of ARRAY_REF. During this
loop we also remove any useless conversions. */
- for (; VEC_length (tree, stack) > 0; )
+ for (; VEC_length (tree, expr_stack) > 0; )
{
- tree t = VEC_pop (tree, stack);
+ tree t = VEC_pop (tree, expr_stack);
if (TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF)
{
@@ -2274,15 +2270,6 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
ret = MIN (ret, tret);
}
}
- else if (TREE_CODE (t) == BIT_FIELD_REF)
- {
- tret = gimplify_expr (&TREE_OPERAND (t, 1), pre_p, post_p,
- is_gimple_val, fb_rvalue);
- ret = MIN (ret, tret);
- tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
- is_gimple_val, fb_rvalue);
- ret = MIN (ret, tret);
- }
STRIP_USELESS_TYPE_CONVERSION (TREE_OPERAND (t, 0));
@@ -2299,7 +2286,7 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
canonicalize_component_ref (expr_p);
}
- VEC_free (tree, heap, stack);
+ VEC_free (tree, heap, expr_stack);
gcc_assert (*expr_p == expr || ret != GS_ALL_DONE);
@@ -3858,7 +3845,7 @@ optimize_compound_literals_in_ctor (tree orig_ctor)
for (idx = 0; idx < num; idx++)
{
- tree value = VEC_index (constructor_elt, elts, idx)->value;
+ tree value = VEC_index (constructor_elt, elts, idx).value;
tree newval = value;
if (TREE_CODE (value) == CONSTRUCTOR)
newval = optimize_compound_literals_in_ctor (value);
@@ -3870,7 +3857,8 @@ optimize_compound_literals_in_ctor (tree orig_ctor)
if (!TREE_ADDRESSABLE (value)
&& !TREE_ADDRESSABLE (decl)
- && init)
+ && init
+ && TREE_CODE (init) == CONSTRUCTOR)
newval = optimize_compound_literals_in_ctor (init);
}
if (newval == value)
@@ -3882,7 +3870,7 @@ optimize_compound_literals_in_ctor (tree orig_ctor)
CONSTRUCTOR_ELTS (ctor) = VEC_copy (constructor_elt, gc, elts);
elts = CONSTRUCTOR_ELTS (ctor);
}
- VEC_index (constructor_elt, elts, idx)->value = newval;
+ VEC_index (constructor_elt, elts, idx).value = newval;
}
return ctor;
}
@@ -3970,7 +3958,7 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
walk_tree (&DECL_INITIAL (object), force_labels_r, NULL, NULL);
/* ??? C++ doesn't automatically append a .<number> to the
- assembler name, and even when it does, it looks a FE private
+ assembler name, and even when it does, it looks at FE private
data structures to figure out what that number should be,
which are not set for this variable. I suppose this is
important for local statics for inline functions, which aren't
@@ -4133,8 +4121,8 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
/* Extract the real and imaginary parts out of the ctor. */
gcc_assert (VEC_length (constructor_elt, elts) == 2);
- r = VEC_index (constructor_elt, elts, 0)->value;
- i = VEC_index (constructor_elt, elts, 1)->value;
+ r = VEC_index (constructor_elt, elts, 0).value;
+ i = VEC_index (constructor_elt, elts, 1).value;
if (r == NULL || i == NULL)
{
tree zero = build_zero_cst (TREE_TYPE (type));
@@ -4929,11 +4917,8 @@ gimplify_modify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
if (gimplify_ctxp->into_ssa && is_gimple_reg (*to_p))
{
- /* If we've somehow already got an SSA_NAME on the LHS, then
- we've probably modified it twice. Not good. */
- gcc_assert (TREE_CODE (*to_p) != SSA_NAME);
- *to_p = make_ssa_name (*to_p, assign);
- gimple_set_lhs (assign, *to_p);
+ /* We should have got an SSA name from the start. */
+ gcc_assert (TREE_CODE (*to_p) == SSA_NAME);
}
gimplify_seq_add_stmt (pre_p, assign);
@@ -5634,7 +5619,8 @@ gimplify_target_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
/* Add a clobber for the temporary going out of scope, like
gimplify_bind_expr. */
if (gimplify_ctxp->in_cleanup_point_expr
- && needs_to_live_in_memory (temp))
+ && needs_to_live_in_memory (temp)
+ && flag_stack_reuse == SR_ALL)
{
tree clobber = build_constructor (TREE_TYPE (temp), NULL);
TREE_THIS_VOLATILE (clobber) = true;
@@ -7406,19 +7392,9 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
break;
case BIT_FIELD_REF:
- {
- enum gimplify_status r0, r1, r2;
-
- r0 = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p,
- post_p, is_gimple_lvalue, fb_either);
- r1 = gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p,
- post_p, is_gimple_val, fb_rvalue);
- r2 = gimplify_expr (&TREE_OPERAND (*expr_p, 2), pre_p,
- post_p, is_gimple_val, fb_rvalue);
- recalculate_side_effects (*expr_p);
-
- ret = MIN (r0, MIN (r1, r2));
- }
+ ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p,
+ post_p, is_gimple_lvalue, fb_either);
+ recalculate_side_effects (*expr_p);
break;
case TARGET_MEM_REF:
@@ -8219,8 +8195,10 @@ gimplify_body (tree fndecl, bool do_parms)
pop_gimplify_context (outer_bind);
gcc_assert (gimplify_ctxp == NULL);
+#ifdef ENABLE_CHECKING
if (!seen_error ())
verify_gimple_in_seq (gimple_bind_body (outer_bind));
+#endif
timevar_pop (TV_TREE_GIMPLIFY);
input_location = saved_location;
@@ -8382,7 +8360,7 @@ void
gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
{
size_t i, num_ops;
- tree orig_lhs = NULL_TREE, lhs, t;
+ tree lhs;
gimple_seq pre = NULL;
gimple post_stmt = NULL;
struct gimplify_ctx gctx;
@@ -8448,7 +8426,6 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
and ASMs are executed before the LHS. The ordering is not
important for other statements. */
num_ops = gimple_num_ops (stmt);
- orig_lhs = gimple_get_lhs (stmt);
for (i = num_ops; i > 0; i--)
{
tree op = gimple_op (stmt, i - 1);
@@ -8526,10 +8503,6 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
if (need_temp)
{
tree temp = create_tmp_reg (TREE_TYPE (lhs), NULL);
-
- if (TREE_CODE (orig_lhs) == SSA_NAME)
- orig_lhs = SSA_NAME_VAR (orig_lhs);
-
if (gimple_in_ssa_p (cfun))
temp = make_ssa_name (temp, NULL);
gimple_set_lhs (stmt, temp);
@@ -8541,27 +8514,8 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
break;
}
- if (gimple_referenced_vars (cfun))
- for (t = gimplify_ctxp->temps; t ; t = TREE_CHAIN (t))
- add_referenced_var (t);
-
if (!gimple_seq_empty_p (pre))
- {
- if (gimple_in_ssa_p (cfun))
- {
- gimple_stmt_iterator i;
-
- for (i = gsi_start (pre); !gsi_end_p (i); gsi_next (&i))
- {
- tree lhs = gimple_get_lhs (gsi_stmt (i));
- if (lhs
- && TREE_CODE (lhs) != SSA_NAME
- && is_gimple_reg (lhs))
- mark_sym_for_renaming (lhs);
- }
- }
- gsi_insert_seq_before (gsi_p, pre, GSI_SAME_STMT);
- }
+ gsi_insert_seq_before (gsi_p, pre, GSI_SAME_STMT);
if (post_stmt)
gsi_insert_after (gsi_p, post_stmt, GSI_NEW_STMT);
@@ -8576,7 +8530,6 @@ tree
force_gimple_operand_1 (tree expr, gimple_seq *stmts,
gimple_predicate gimple_test_f, tree var)
{
- tree t;
enum gimplify_status ret;
struct gimplify_ctx gctx;
@@ -8594,7 +8547,12 @@ force_gimple_operand_1 (tree expr, gimple_seq *stmts,
gimplify_ctxp->allow_rhs_cond_expr = true;
if (var)
- expr = build2 (MODIFY_EXPR, TREE_TYPE (var), var, expr);
+ {
+ if (gimplify_ctxp->into_ssa
+ && is_gimple_reg (var))
+ var = make_ssa_name (var, NULL);
+ expr = build2 (MODIFY_EXPR, TREE_TYPE (var), var, expr);
+ }
if (TREE_CODE (expr) != MODIFY_EXPR
&& TREE_TYPE (expr) == void_type_node)
@@ -8608,25 +8566,6 @@ force_gimple_operand_1 (tree expr, gimple_seq *stmts,
gcc_assert (ret != GS_ERROR);
}
- if (gimple_referenced_vars (cfun))
- for (t = gimplify_ctxp->temps; t ; t = DECL_CHAIN (t))
- add_referenced_var (t);
-
- if (!gimple_seq_empty_p (*stmts)
- && gimplify_ctxp->into_ssa)
- {
- gimple_stmt_iterator i;
-
- for (i = gsi_start (*stmts); !gsi_end_p (i); gsi_next (&i))
- {
- tree lhs = gimple_get_lhs (gsi_stmt (i));
- if (lhs
- && TREE_CODE (lhs) != SSA_NAME
- && is_gimple_reg (lhs))
- mark_sym_for_renaming (lhs);
- }
- }
-
pop_gimplify_context (NULL);
return expr;
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index 3980213e516..d3a6e29a9ec 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,15 @@
+2012-08-14 Diego Novillo <dnovillo@google.com>
+
+ Merge from cxx-conversion branch. Configury.
+
+ * go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX.
+ * go-gcc.cc: Likewise.
+ * go-system.h: Likewise.
+
+2012-07-24 Uros Bizjak <ubizjak@gmail.com>
+
+ * go-lang.c (lang_decl): Add variable_size GTY option.
+
2012-05-09 Ian Lance Taylor <iant@google.com>
* lang.opt: Add -fgo-pkgpath.
diff --git a/gcc/go/go-c.h b/gcc/go/go-c.h
index d46a08796e3..a7f7b1fe2f2 100644
--- a/gcc/go/go-c.h
+++ b/gcc/go/go-c.h
@@ -20,16 +20,7 @@ along with GCC; see the file COPYING3. If not see
#ifndef GO_GO_C_H
#define GO_GO_C_H
-#ifdef ENABLE_BUILD_WITH_CXX
#define GO_EXTERN_C
-#else
-#define GO_EXTERN_C extern "C"
-#endif
-
-#if defined(__cplusplus) && !defined(ENABLE_BUILD_WITH_CXX)
-extern "C"
-{
-#endif
#include "machmode.h"
@@ -71,8 +62,4 @@ extern const char *go_read_export_data (int, off_t, char **, size_t *, int *);
extern GTY(()) tree go_non_zero_struct;
-#if defined(__cplusplus) && !defined(ENABLE_BUILD_WITH_CXX)
-} /* End extern "C". */
-#endif
-
#endif /* !defined(GO_GO_C_H) */
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc
index 4729a3bdbd6..84bc97297ba 100644
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -24,20 +24,11 @@
// include it here before tree.h includes it later.
#include <gmp.h>
-#ifndef ENABLE_BUILD_WITH_CXX
-extern "C"
-{
-#endif
-
#include "tree.h"
#include "tree-iterator.h"
#include "gimple.h"
#include "toplev.h"
-#ifndef ENABLE_BUILD_WITH_CXX
-}
-#endif
-
#include "go-c.h"
#include "gogo.h"
diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c
index f02f769252b..8aa056fc32f 100644
--- a/gcc/go/go-lang.c
+++ b/gcc/go/go-lang.c
@@ -50,7 +50,7 @@ struct GTY(()) lang_type
/* Language-dependent contents of a decl. */
-struct GTY(()) lang_decl
+struct GTY((variable_size)) lang_decl
{
char dummy;
};
diff --git a/gcc/go/go-system.h b/gcc/go/go-system.h
index 08aac6a0f72..2decc555df5 100644
--- a/gcc/go/go-system.h
+++ b/gcc/go/go-system.h
@@ -134,11 +134,6 @@ struct hash<T*>
// later.
#include <cstdio>
-#ifndef ENABLE_BUILD_WITH_CXX
-extern "C"
-{
-#endif
-
#include "system.h"
#include "ansidecl.h"
#include "coretypes.h"
@@ -147,10 +142,6 @@ extern "C"
#include "input.h" /* For source_location. */
#include "intl.h" /* For _(). */
-#ifndef ENABLE_BUILD_WITH_CXX
-} // End extern "C"
-#endif
-
// When using gcc, go_assert is just gcc_assert.
#define go_assert(EXPR) gcc_assert(EXPR)
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index a2ac98703b4..b66a193afee 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -10,11 +10,6 @@
#include <gmp.h>
-#ifndef ENABLE_BUILD_WITH_CXX
-extern "C"
-{
-#endif
-
#include "toplev.h"
#include "intl.h"
#include "tree.h"
@@ -24,10 +19,6 @@ extern "C"
#include "real.h"
#include "realmpfr.h"
-#ifndef ENABLE_BUILD_WITH_CXX
-}
-#endif
-
#include "go-c.h"
#include "gogo.h"
#include "types.h"
@@ -5084,7 +5075,7 @@ Binary_expression::do_lower(Gogo* gogo, Named_object*,
&right_nc, location,
&result))
return this;
- return Expression::make_cast(Type::lookup_bool_type(),
+ return Expression::make_cast(Type::make_boolean_type(),
Expression::make_boolean(result,
location),
location);
@@ -5115,10 +5106,7 @@ Binary_expression::do_lower(Gogo* gogo, Named_object*,
{
int cmp = left_string.compare(right_string);
bool r = Binary_expression::cmp_to_bool(op, cmp);
- return Expression::make_cast(Type::lookup_bool_type(),
- Expression::make_boolean(r,
- location),
- location);
+ return Expression::make_boolean(r, location);
}
}
}
@@ -5336,15 +5324,15 @@ Binary_expression::do_type()
switch (this->op_)
{
- case OPERATOR_OROR:
- case OPERATOR_ANDAND:
case OPERATOR_EQEQ:
case OPERATOR_NOTEQ:
case OPERATOR_LT:
case OPERATOR_LE:
case OPERATOR_GT:
case OPERATOR_GE:
- return Type::lookup_bool_type();
+ if (this->type_ == NULL)
+ this->type_ = Type::make_boolean_type();
+ return this->type_;
case OPERATOR_PLUS:
case OPERATOR_MINUS:
@@ -5355,6 +5343,8 @@ Binary_expression::do_type()
case OPERATOR_MOD:
case OPERATOR_AND:
case OPERATOR_BITCLEAR:
+ case OPERATOR_OROR:
+ case OPERATOR_ANDAND:
{
Type* type;
if (!Binary_expression::operation_type(this->op_,
@@ -5462,6 +5452,16 @@ Binary_expression::do_determine_type(const Type_context* context)
}
this->right_->determine_type(&subcontext);
+
+ if (is_comparison)
+ {
+ if (this->type_ != NULL && !this->type_->is_abstract())
+ ;
+ else if (context->type != NULL && context->type->is_boolean_type())
+ this->type_ = context->type;
+ else if (!context->may_be_abstract)
+ this->type_ = Type::lookup_bool_type();
+ }
}
// Report an error if the binary operator OP does not support TYPE.
@@ -5673,7 +5673,7 @@ Binary_expression::do_get_tree(Translate_context* context)
case OPERATOR_LE:
case OPERATOR_GT:
case OPERATOR_GE:
- return Expression::comparison_tree(context, this->op_,
+ return Expression::comparison_tree(context, this->type_, this->op_,
this->left_->type(), left,
this->right_->type(), right,
this->location());
@@ -6134,8 +6134,8 @@ Expression::make_binary(Operator op, Expression* left, Expression* right,
// Implement a comparison.
tree
-Expression::comparison_tree(Translate_context* context, Operator op,
- Type* left_type, tree left_tree,
+Expression::comparison_tree(Translate_context* context, Type* result_type,
+ Operator op, Type* left_type, tree left_tree,
Type* right_type, tree right_tree,
Location location)
{
@@ -6376,7 +6376,13 @@ Expression::comparison_tree(Translate_context* context, Operator op,
if (left_tree == error_mark_node || right_tree == error_mark_node)
return error_mark_node;
- tree ret = fold_build2(code, boolean_type_node, left_tree, right_tree);
+ tree result_type_tree;
+ if (result_type == NULL)
+ result_type_tree = boolean_type_node;
+ else
+ result_type_tree = type_to_tree(result_type->get_backend(context->gogo()));
+
+ tree ret = fold_build2(code, result_type_tree, left_tree, right_tree);
if (CAN_HAVE_LOCATION_P(ret))
SET_EXPR_LOCATION(ret, location.gcc_location());
return ret;
@@ -12923,26 +12929,8 @@ Type_guard_expression::do_traverse(Traverse* traverse)
void
Type_guard_expression::do_check_types(Gogo*)
{
- // 6g permits using a type guard with unsafe.pointer; we are
- // compatible.
Type* expr_type = this->expr_->type();
- if (expr_type->is_unsafe_pointer_type())
- {
- if (this->type_->points_to() == NULL
- && (this->type_->integer_type() == NULL
- || (this->type_->forwarded()
- != Type::lookup_integer_type("uintptr"))))
- this->report_error(_("invalid unsafe.Pointer conversion"));
- }
- else if (this->type_->is_unsafe_pointer_type())
- {
- if (expr_type->points_to() == NULL
- && (expr_type->integer_type() == NULL
- || (expr_type->forwarded()
- != Type::lookup_integer_type("uintptr"))))
- this->report_error(_("invalid unsafe.Pointer conversion"));
- }
- else if (expr_type->interface_type() == NULL)
+ if (expr_type->interface_type() == NULL)
{
if (!expr_type->is_error() && !this->type_->is_error())
this->report_error(_("type assertion only valid for interface types"));
@@ -12975,23 +12963,10 @@ Type_guard_expression::do_check_types(Gogo*)
tree
Type_guard_expression::do_get_tree(Translate_context* context)
{
- Gogo* gogo = context->gogo();
tree expr_tree = this->expr_->get_tree(context);
if (expr_tree == error_mark_node)
return error_mark_node;
- Type* expr_type = this->expr_->type();
- if ((this->type_->is_unsafe_pointer_type()
- && (expr_type->points_to() != NULL
- || expr_type->integer_type() != NULL))
- || (expr_type->is_unsafe_pointer_type()
- && this->type_->points_to() != NULL))
- return convert_to_pointer(type_to_tree(this->type_->get_backend(gogo)),
- expr_tree);
- else if (expr_type->is_unsafe_pointer_type()
- && this->type_->integer_type() != NULL)
- return convert_to_integer(type_to_tree(this->type_->get_backend(gogo)),
- expr_tree);
- else if (this->type_->interface_type() != NULL)
+ if (this->type_->interface_type() != NULL)
return Expression::convert_interface_to_interface(context, this->type_,
this->expr_->type(),
expr_tree, true,
diff --git a/gcc/go/gofrontend/expressions.h b/gcc/go/gofrontend/expressions.h
index 156cf3ceea3..eea141fe776 100644
--- a/gcc/go/gofrontend/expressions.h
+++ b/gcc/go/gofrontend/expressions.h
@@ -623,9 +623,9 @@ class Expression
// Return a tree implementing the comparison LHS_TREE OP RHS_TREE.
// TYPE is the type of both sides.
static tree
- comparison_tree(Translate_context*, Operator op, Type* left_type,
- tree left_tree, Type* right_type, tree right_tree,
- Location);
+ comparison_tree(Translate_context*, Type* result_type, Operator op,
+ Type* left_type, tree left_tree, Type* right_type,
+ tree right_tree, Location);
// Return a tree for the multi-precision integer VAL in TYPE.
static tree
@@ -1149,7 +1149,7 @@ class Binary_expression : public Expression
Binary_expression(Operator op, Expression* left, Expression* right,
Location location)
: Expression(EXPRESSION_BINARY, location),
- op_(op), left_(left), right_(right)
+ op_(op), left_(left), right_(right), type_(NULL)
{ }
// Return the operator.
@@ -1280,6 +1280,8 @@ class Binary_expression : public Expression
Expression* left_;
// The right hand side operand.
Expression* right_;
+ // The type of a comparison operation.
+ Type* type_;
};
// A call expression. The go statement needs to dig inside this.
diff --git a/gcc/go/gofrontend/gogo-tree.cc b/gcc/go/gofrontend/gogo-tree.cc
index bc33769a07a..c933d937596 100644
--- a/gcc/go/gofrontend/gogo-tree.cc
+++ b/gcc/go/gofrontend/gogo-tree.cc
@@ -8,11 +8,6 @@
#include <gmp.h>
-#ifndef ENABLE_BUILD_WITH_CXX
-extern "C"
-{
-#endif
-
#include "toplev.h"
#include "tree.h"
#include "gimple.h"
@@ -22,12 +17,8 @@ extern "C"
#include "convert.h"
#include "output.h"
#include "diagnostic.h"
-
-#ifndef ENABLE_BUILD_WITH_CXX
-}
-#endif
-
#include "go-c.h"
+
#include "types.h"
#include "expressions.h"
#include "statements.h"
diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc
index 7f91e553a4d..fa7f20836ad 100644
--- a/gcc/go/gofrontend/statements.cc
+++ b/gcc/go/gofrontend/statements.cc
@@ -4192,55 +4192,41 @@ Type_switch_statement::do_lower(Gogo*, Named_object*, Block* enclosing,
? this->var_->var_value()->type()
: this->expr_->type());
+ if (val_type->interface_type() == NULL)
+ {
+ if (!val_type->is_error())
+ this->report_error(_("cannot type switch on non-interface value"));
+ return Statement::make_error_statement(loc);
+ }
+
// var descriptor_temp DESCRIPTOR_TYPE
Type* descriptor_type = Type::make_type_descriptor_ptr_type();
Temporary_statement* descriptor_temp =
Statement::make_temporary(descriptor_type, NULL, loc);
b->add_statement(descriptor_temp);
- if (val_type->interface_type() == NULL)
- {
- // Doing a type switch on a non-interface type. Should we issue
- // a warning for this case?
- Expression* lhs = Expression::make_temporary_reference(descriptor_temp,
- loc);
- Expression* rhs;
- if (val_type->is_nil_type())
- rhs = Expression::make_nil(loc);
- else
- {
- if (val_type->is_abstract())
- val_type = val_type->make_non_abstract_type();
- rhs = Expression::make_type_descriptor(val_type, loc);
- }
- Statement* s = Statement::make_assignment(lhs, rhs, loc);
- b->add_statement(s);
- }
+ // descriptor_temp = ifacetype(val_temp) FIXME: This should be
+ // inlined.
+ bool is_empty = val_type->interface_type()->is_empty();
+ Expression* ref;
+ if (this->var_ == NULL)
+ ref = this->expr_;
else
- {
- // descriptor_temp = ifacetype(val_temp)
- // FIXME: This should be inlined.
- bool is_empty = val_type->interface_type()->is_empty();
- Expression* ref;
- if (this->var_ == NULL)
- ref = this->expr_;
- else
- ref = Expression::make_var_reference(this->var_, loc);
- Expression* call = Runtime::make_call((is_empty
- ? Runtime::EFACETYPE
- : Runtime::IFACETYPE),
- loc, 1, ref);
- Temporary_reference_expression* lhs =
- Expression::make_temporary_reference(descriptor_temp, loc);
- lhs->set_is_lvalue();
- Statement* s = Statement::make_assignment(lhs, call, loc);
- b->add_statement(s);
- }
+ ref = Expression::make_var_reference(this->var_, loc);
+ Expression* call = Runtime::make_call((is_empty
+ ? Runtime::EFACETYPE
+ : Runtime::IFACETYPE),
+ loc, 1, ref);
+ Temporary_reference_expression* lhs =
+ Expression::make_temporary_reference(descriptor_temp, loc);
+ lhs->set_is_lvalue();
+ Statement* s = Statement::make_assignment(lhs, call, loc);
+ b->add_statement(s);
if (this->clauses_ != NULL)
this->clauses_->lower(val_type, b, descriptor_temp, this->break_label());
- Statement* s = Statement::make_unnamed_label_statement(this->break_label_);
+ s = Statement::make_unnamed_label_statement(this->break_label_);
b->add_statement(s);
return Statement::make_block_statement(b, loc);
diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc
index 228f3faa4a4..c52f41b76ec 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -8,11 +8,6 @@
#include <gmp.h>
-#ifndef ENABLE_BUILD_WITH_CXX
-extern "C"
-{
-#endif
-
#include "toplev.h"
#include "intl.h"
#include "tree.h"
@@ -20,10 +15,6 @@ extern "C"
#include "real.h"
#include "convert.h"
-#ifndef ENABLE_BUILD_WITH_CXX
-}
-#endif
-
#include "go-c.h"
#include "gogo.h"
#include "operator.h"
diff --git a/gcc/graphite-blocking.c b/gcc/graphite-blocking.c
index 967de9d9462..a9ed9f96480 100644
--- a/gcc/graphite-blocking.c
+++ b/gcc/graphite-blocking.c
@@ -1,7 +1,7 @@
/* Heuristics and transform for loop blocking and strip mining on
polyhedral representation.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@amd.com> and
Pranav Garg <pranav.garg2107@gmail.com>.
@@ -20,19 +20,28 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <isl/constraint.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-data-ref.h"
#include "sese.h"
#ifdef HAVE_cloog
-#include "ppl_c.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
@@ -92,65 +101,39 @@ along with GCC; see the file COPYING3. If not see
static void
pbb_strip_mine_time_depth (poly_bb_p pbb, int time_depth, int stride)
{
- ppl_dimension_type iter, dim, strip;
- ppl_Polyhedron_t res = PBB_TRANSFORMED_SCATTERING (pbb);
+ isl_space *d;
+ isl_constraint *c;
+ int iter, strip;
/* STRIP is the dimension that iterates with stride STRIDE. */
/* ITER is the dimension that enumerates single iterations inside
one strip that has at most STRIDE iterations. */
strip = time_depth;
iter = strip + 2;
- psct_add_scattering_dimension (pbb, strip);
- psct_add_scattering_dimension (pbb, strip + 1);
-
- ppl_Polyhedron_space_dimension (res, &dim);
+ pbb->transformed = isl_map_insert_dims (pbb->transformed, isl_dim_out,
+ strip, 2);
/* Lower bound of the striped loop. */
- {
- ppl_Constraint_t new_cstr;
- ppl_Linear_Expression_t expr;
-
- ppl_new_Linear_Expression_with_dimension (&expr, dim);
- ppl_set_coef (expr, strip, -1 * stride);
- ppl_set_coef (expr, iter, 1);
-
- ppl_new_Constraint (&new_cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_delete_Linear_Expression (expr);
- ppl_Polyhedron_add_constraint (res, new_cstr);
- ppl_delete_Constraint (new_cstr);
- }
+ d = isl_map_get_space (pbb->transformed);
+ c = isl_inequality_alloc (isl_local_space_from_space (d));
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, strip, -stride);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, iter, 1);
+ pbb->transformed = isl_map_add_constraint (pbb->transformed, c);
/* Upper bound of the striped loop. */
- {
- ppl_Constraint_t new_cstr;
- ppl_Linear_Expression_t expr;
-
- ppl_new_Linear_Expression_with_dimension (&expr, dim);
- ppl_set_coef (expr, strip, stride);
- ppl_set_coef (expr, iter, -1);
- ppl_set_inhomogeneous (expr, stride - 1);
-
- ppl_new_Constraint (&new_cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_delete_Linear_Expression (expr);
- ppl_Polyhedron_add_constraint (res, new_cstr);
- ppl_delete_Constraint (new_cstr);
- }
+ d = isl_map_get_space (pbb->transformed);
+ c = isl_inequality_alloc (isl_local_space_from_space (d));
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, strip, stride);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, iter, -1);
+ c = isl_constraint_set_constant_si (c, stride - 1);
+ pbb->transformed = isl_map_add_constraint (pbb->transformed, c);
/* Static scheduling for ITER level.
This is mandatory to keep the 2d + 1 canonical scheduling format. */
- {
- ppl_Constraint_t new_cstr;
- ppl_Linear_Expression_t expr;
-
- ppl_new_Linear_Expression_with_dimension (&expr, dim);
- ppl_set_coef (expr, strip + 1, 1);
- ppl_set_inhomogeneous (expr, 0);
-
- ppl_new_Constraint (&new_cstr, expr, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_delete_Linear_Expression (expr);
- ppl_Polyhedron_add_constraint (res, new_cstr);
- ppl_delete_Constraint (new_cstr);
- }
+ d = isl_map_get_space (pbb->transformed);
+ c = isl_equality_alloc (isl_local_space_from_space (d));
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, strip + 1, 1);
+ pbb->transformed = isl_map_add_constraint (pbb->transformed, c);
}
/* Returns true when strip mining with STRIDE of the loop LST is
diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c
index 6b6969be1e0..90ca682f9c6 100644
--- a/gcc/graphite-clast-to-gimple.c
+++ b/gcc/graphite-clast-to-gimple.c
@@ -19,11 +19,24 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <isl/list.h>
+#include <isl/constraint.h>
+#include <isl/ilp.h>
+#include <isl/aff.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "diagnostic-core.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "tree-pass.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-data-ref.h"
@@ -32,18 +45,56 @@ along with GCC; see the file COPYING3. If not see
#ifdef HAVE_cloog
#include "cloog/cloog.h"
-#include "ppl_c.h"
-#include "graphite-cloog-util.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
#include "graphite-clast-to-gimple.h"
-#include "graphite-dependences.h"
-#include "graphite-cloog-compat.h"
+
+typedef const struct clast_expr *clast_name_p;
#ifndef CLOOG_LANGUAGE_C
#define CLOOG_LANGUAGE_C LANGUAGE_C
#endif
+
+/* Converts a GMP constant VAL to a tree and returns it. */
+
+static tree
+gmp_cst_to_tree (tree type, mpz_t val)
+{
+ tree t = type ? type : integer_type_node;
+ mpz_t tmp;
+ double_int di;
+
+ mpz_init (tmp);
+ mpz_set (tmp, val);
+ di = mpz_get_double_int (t, tmp, true);
+ mpz_clear (tmp);
+
+ return double_int_to_tree (t, di);
+}
+
+/* Sets RES to the min of V1 and V2. */
+
+static void
+value_min (mpz_t res, mpz_t v1, mpz_t v2)
+{
+ if (mpz_cmp (v1, v2) < 0)
+ mpz_set (res, v1);
+ else
+ mpz_set (res, v2);
+}
+
+/* Sets RES to the max of V1 and V2. */
+
+static void
+value_max (mpz_t res, mpz_t v1, mpz_t v2)
+{
+ if (mpz_cmp (v1, v2) < 0)
+ mpz_set (res, v2);
+ else
+ mpz_set (res, v1);
+}
+
+
/* This flag is set when an error occurred during the translation of
CLAST to Gimple. */
static bool gloog_error;
@@ -68,6 +119,9 @@ typedef struct clast_name_index {
int level;
mpz_t bound_one, bound_two;
const char *name;
+ /* If free_name is set, the content of name was allocated by us and needs
+ to be freed. */
+ char *free_name;
} *clast_name_index_p;
/* Returns a pointer to a new element of type clast_name_index_p built
@@ -78,8 +132,11 @@ new_clast_name_index (const char *name, int index, int level,
mpz_t bound_one, mpz_t bound_two)
{
clast_name_index_p res = XNEW (struct clast_name_index);
+ char *new_name = XNEWVEC (char, strlen (name) + 1);
+ strcpy (new_name, name);
- res->name = name;
+ res->name = new_name;
+ res->free_name = new_name;
res->level = level;
res->index = index;
mpz_init (res->bound_one);
@@ -95,6 +152,8 @@ static void
free_clast_name_index (void *ptr)
{
struct clast_name_index *c = (struct clast_name_index *) ptr;
+ if (c->free_name)
+ free (c->free_name);
mpz_clear (c->bound_one);
mpz_clear (c->bound_two);
free (ptr);
@@ -111,12 +170,9 @@ clast_name_to_level (clast_name_p name, htab_t index_table)
struct clast_name_index tmp;
PTR *slot;
-#ifdef CLOOG_ORG
gcc_assert (name->type == clast_expr_name);
tmp.name = ((const struct clast_name *) name)->name;
-#else
- tmp.name = name;
-#endif
+ tmp.free_name = NULL;
slot = htab_find_slot (index_table, &tmp, NO_INSERT);
@@ -131,17 +187,13 @@ clast_name_to_level (clast_name_p name, htab_t index_table)
SCATTERING_DIMENSIONS vector. */
static inline int
-clast_name_to_index (clast_name_p name, htab_t index_table)
+clast_name_to_index (struct clast_name *name, htab_t index_table)
{
struct clast_name_index tmp;
PTR *slot;
-#ifdef CLOOG_ORG
- gcc_assert (name->type == clast_expr_name);
tmp.name = ((const struct clast_name *) name)->name;
-#else
- tmp.name = name;
-#endif
+ tmp.free_name = NULL;
slot = htab_find_slot (index_table, &tmp, NO_INSERT);
@@ -156,18 +208,14 @@ clast_name_to_index (clast_name_p name, htab_t index_table)
found in the INDEX_TABLE, false otherwise. */
static inline bool
-clast_name_to_lb_ub (clast_name_p name, htab_t index_table, mpz_t bound_one,
- mpz_t bound_two)
+clast_name_to_lb_ub (struct clast_name *name, htab_t index_table,
+ mpz_t bound_one, mpz_t bound_two)
{
struct clast_name_index tmp;
PTR *slot;
-#ifdef CLOOG_ORG
- gcc_assert (name->type == clast_expr_name);
- tmp.name = ((const struct clast_name *) name)->name;
-#else
- tmp.name = name;
-#endif
+ tmp.name = name->name;
+ tmp.free_name = NULL;
slot = htab_find_slot (index_table, &tmp, NO_INSERT);
@@ -191,6 +239,7 @@ save_clast_name_index (htab_t index_table, const char *name,
PTR *slot;
tmp.name = name;
+ tmp.free_name = NULL;
slot = htab_find_slot (index_table, &tmp, INSERT);
if (slot)
@@ -206,7 +255,16 @@ save_clast_name_index (htab_t index_table, const char *name,
static inline hashval_t
clast_name_index_elt_info (const void *elt)
{
- return htab_hash_pointer (((const struct clast_name_index *) elt)->name);
+ const struct clast_name_index *e = ((const struct clast_name_index *) elt);
+ hashval_t hash = 0;
+
+ int length = strlen (e->name);
+ int i;
+
+ for (i = 0; i < length; ++i)
+ hash = hash | (e->name[i] << (i % 4));
+
+ return hash;
}
/* Compares database elements E1 and E2. */
@@ -217,7 +275,7 @@ eq_clast_name_indexes (const void *e1, const void *e2)
const struct clast_name_index *elt1 = (const struct clast_name_index *) e1;
const struct clast_name_index *elt2 = (const struct clast_name_index *) e2;
- return (elt1->name == elt2->name);
+ return strcmp (elt1->name, elt2->name) == 0;
}
@@ -238,7 +296,7 @@ typedef struct ivs_params {
Cloog representation. */
static tree
-clast_name_to_gcc (clast_name_p name, ivs_params_p ip)
+clast_name_to_gcc (struct clast_name *name, ivs_params_p ip)
{
int index;
@@ -334,6 +392,10 @@ clast_to_gcc_expression (tree type, struct clast_expr *e, ivs_params_p ip)
{
switch (e->type)
{
+ case clast_expr_name:
+ {
+ return clast_name_to_gcc ((struct clast_name *) e, ip);
+ }
case clast_expr_term:
{
struct clast_term *t = (struct clast_term *) e;
@@ -342,7 +404,7 @@ clast_to_gcc_expression (tree type, struct clast_expr *e, ivs_params_p ip)
{
if (mpz_cmp_si (t->val, 1) == 0)
{
- tree name = clast_name_to_gcc (t->var, ip);
+ tree name = clast_to_gcc_expression (type, t->var, ip);
if (POINTER_TYPE_P (TREE_TYPE (name)) != POINTER_TYPE_P (type))
name = convert_to_ptrofftype (name);
@@ -353,7 +415,7 @@ clast_to_gcc_expression (tree type, struct clast_expr *e, ivs_params_p ip)
else if (mpz_cmp_si (t->val, -1) == 0)
{
- tree name = clast_name_to_gcc (t->var, ip);
+ tree name = clast_to_gcc_expression (type, t->var, ip);
if (POINTER_TYPE_P (TREE_TYPE (name)) != POINTER_TYPE_P (type))
name = convert_to_ptrofftype (name);
@@ -364,7 +426,7 @@ clast_to_gcc_expression (tree type, struct clast_expr *e, ivs_params_p ip)
}
else
{
- tree name = clast_name_to_gcc (t->var, ip);
+ tree name = clast_to_gcc_expression (type, t->var, ip);
tree cst = gmp_cst_to_tree (type, t->val);
if (POINTER_TYPE_P (TREE_TYPE (name)) != POINTER_TYPE_P (type))
@@ -493,6 +555,9 @@ type_for_value (mpz_t val)
return type_for_interval (val, val);
}
+static tree
+type_for_clast_expr (struct clast_expr *, ivs_params_p, mpz_t, mpz_t);
+
/* Return the type for the clast_term T. Initializes BOUND_ONE and
BOUND_TWO to the bounds of the term. */
@@ -500,38 +565,24 @@ static tree
type_for_clast_term (struct clast_term *t, ivs_params_p ip, mpz_t bound_one,
mpz_t bound_two)
{
- clast_name_p name = t->var;
- bool found = false;
-
+ tree type;
gcc_assert (t->expr.type == clast_expr_term);
- if (!name)
+ if (!t->var)
{
mpz_set (bound_one, t->val);
mpz_set (bound_two, t->val);
return type_for_value (t->val);
}
- if (ip->params && ip->params_index)
- found = clast_name_to_lb_ub (name, ip->params_index, bound_one, bound_two);
-
- if (!found)
- {
- gcc_assert (*(ip->newivs) && ip->newivs_index);
- found = clast_name_to_lb_ub (name, ip->newivs_index,
- bound_one, bound_two);
- gcc_assert (found);
- }
+ type = type_for_clast_expr (t->var, ip, bound_one, bound_two);
mpz_mul (bound_one, bound_one, t->val);
mpz_mul (bound_two, bound_two, t->val);
- return TREE_TYPE (clast_name_to_gcc (name, ip));
+ return max_precision_type (type, type_for_interval (bound_one, bound_two));
}
-static tree
-type_for_clast_expr (struct clast_expr *, ivs_params_p, mpz_t, mpz_t);
-
/* Return the type for the clast_reduction R. Initializes BOUND_ONE
and BOUND_TWO to the bounds of the reduction expression. */
@@ -639,6 +690,29 @@ type_for_clast_bin (struct clast_binary *b, ivs_params_p ip, mpz_t bound_one,
return max_precision_type (type, type_for_interval (bound_one, bound_two));
}
+/* Return the type for the clast_name NAME. Initializes BOUND_ONE and
+ BOUND_TWO to the bounds of the term. */
+
+static tree
+type_for_clast_name (struct clast_name *name, ivs_params_p ip, mpz_t bound_one,
+ mpz_t bound_two)
+{
+ bool found = false;
+
+ if (ip->params && ip->params_index)
+ found = clast_name_to_lb_ub (name, ip->params_index, bound_one, bound_two);
+
+ if (!found)
+ {
+ gcc_assert (*(ip->newivs) && ip->newivs_index);
+ found = clast_name_to_lb_ub (name, ip->newivs_index, bound_one,
+ bound_two);
+ gcc_assert (found);
+ }
+
+ return TREE_TYPE (clast_name_to_gcc (name, ip));
+}
+
/* Returns the type for the CLAST expression E when used in statement
STMT. */
@@ -660,6 +734,10 @@ type_for_clast_expr (struct clast_expr *e, ivs_params_p ip, mpz_t bound_one,
return type_for_clast_bin ((struct clast_binary *) e, ip,
bound_one, bound_two);
+ case clast_expr_name:
+ return type_for_clast_name ((struct clast_name *) e, ip,
+ bound_one, bound_two);
+
default:
gcc_unreachable ();
}
@@ -667,23 +745,18 @@ type_for_clast_expr (struct clast_expr *e, ivs_params_p ip, mpz_t bound_one,
return NULL_TREE;
}
-/* Returns the type for the equation CLEQ. */
+/* Returns true if the clast expression E is a constant with VALUE. */
-static tree
-type_for_clast_eq (struct clast_equation *cleq, ivs_params_p ip)
+static bool
+clast_expr_const_value_p (struct clast_expr *e, int value)
{
- mpz_t bound_one, bound_two;
- tree l, r;
-
- mpz_init (bound_one);
- mpz_init (bound_two);
-
- l = type_for_clast_expr (cleq->LHS, ip, bound_one, bound_two);
- r = type_for_clast_expr (cleq->RHS, ip, bound_one, bound_two);
-
- mpz_clear (bound_one);
- mpz_clear (bound_two);
- return max_precision_type (l, r);
+ struct clast_term *t;
+ if (e->type != clast_expr_term)
+ return false;
+ t = (struct clast_term *)e;
+ if (t->var)
+ return false;
+ return 0 == mpz_cmp_si (t->val, value);
}
/* Translates a clast equation CLEQ to a tree. */
@@ -693,19 +766,49 @@ graphite_translate_clast_equation (struct clast_equation *cleq,
ivs_params_p ip)
{
enum tree_code comp;
- tree type = type_for_clast_eq (cleq, ip);
- tree lhs = clast_to_gcc_expression (type, cleq->LHS, ip);
- tree rhs = clast_to_gcc_expression (type, cleq->RHS, ip);
+ tree type, lhs, rhs, ltype, rtype;
+ mpz_t bound_one, bound_two;
+ struct clast_expr *clhs, *crhs;
+ clhs = cleq->LHS;
+ crhs = cleq->RHS;
if (cleq->sign == 0)
comp = EQ_EXPR;
-
else if (cleq->sign > 0)
comp = GE_EXPR;
-
else
comp = LE_EXPR;
+ /* Special cases to reduce range of arguments to hopefully
+ don't need types with larger precision than the input. */
+ if (crhs->type == clast_expr_red
+ && comp != EQ_EXPR)
+ {
+ struct clast_reduction *r = (struct clast_reduction *) crhs;
+ /* X >= A+1 --> X > A and
+ X <= A-1 --> X < A */
+ if (r->n == 2
+ && r->type == clast_red_sum
+ && clast_expr_const_value_p (r->elts[1], comp == GE_EXPR ? 1 : -1))
+ {
+ crhs = r->elts[0];
+ comp = comp == GE_EXPR ? GT_EXPR : LT_EXPR;
+ }
+ }
+
+ mpz_init (bound_one);
+ mpz_init (bound_two);
+
+ ltype = type_for_clast_expr (clhs, ip, bound_one, bound_two);
+ rtype = type_for_clast_expr (crhs, ip, bound_one, bound_two);
+
+ mpz_clear (bound_one);
+ mpz_clear (bound_two);
+ type = max_precision_type (ltype, rtype);
+
+ lhs = clast_to_gcc_expression (type, clhs, ip);
+ rhs = clast_to_gcc_expression (type, crhs, ip);
+
return fold_build2 (comp, boolean_type_node, lhs, rhs);
}
@@ -748,87 +851,59 @@ graphite_create_new_guard (edge entry_edge, struct clast_guard *stmt,
static void
compute_bounds_for_param (scop_p scop, int param, mpz_t low, mpz_t up)
{
- ppl_Linear_Expression_t le;
-
- /* Prepare the linear expression corresponding to the parameter that
- we want to maximize/minimize. */
- ppl_new_Linear_Expression_with_dimension (&le, scop_nb_params (scop));
- ppl_set_coef (le, param, 1);
-
- ppl_max_for_le_pointset (SCOP_CONTEXT (scop), le, up);
- ppl_min_for_le_pointset (SCOP_CONTEXT (scop), le, low);
- ppl_delete_Linear_Expression (le);
+ isl_int v;
+ isl_aff *aff = isl_aff_zero_on_domain
+ (isl_local_space_from_space (isl_set_get_space (scop->context)));
+
+ aff = isl_aff_add_coefficient_si (aff, isl_dim_param, param, 1);
+
+ isl_int_init (v);
+ isl_set_min (scop->context, aff, &v);
+ isl_int_get_gmp (v, low);
+ isl_set_max (scop->context, aff, &v);
+ isl_int_get_gmp (v, up);
+ isl_int_clear (v);
+ isl_aff_free (aff);
}
/* Compute the lower bound LOW and upper bound UP for the induction
- variable at LEVEL for the statement PBB, based on the transformed
- scattering of PBB: T|I|G|Cst, with T the scattering transform, I
- the iteration domain, and G the context parameters. */
-
-static void
-compute_bounds_for_level (poly_bb_p pbb, int level, mpz_t low, mpz_t up)
-{
- ppl_Pointset_Powerset_C_Polyhedron_t ps;
- ppl_Linear_Expression_t le;
-
- combine_context_id_scat (&ps, pbb, false);
-
- /* Prepare the linear expression corresponding to the level that we
- want to maximize/minimize. */
- {
- ppl_dimension_type dim = pbb_nb_scattering_transform (pbb)
- + pbb_dim_iter_domain (pbb) + pbb_nb_params (pbb);
-
- ppl_new_Linear_Expression_with_dimension (&le, dim);
- ppl_set_coef (le, psct_dynamic_dim (pbb, level), 1);
- }
-
- ppl_max_for_le_pointset (ps, le, up);
- ppl_min_for_le_pointset (ps, le, low);
- ppl_delete_Linear_Expression (le);
- ppl_delete_Pointset_Powerset_C_Polyhedron (ps);
-}
-
-/* Walks a CLAST and returns the first statement in the body of a
- loop.
-
- FIXME: This function should not be used to get a PBB in the STMT
- loop in order to find out the iteration domain of the loop: the
- counter example from Tobias is:
-
- | for (i = 0; i < 100; i++)
- | {
- | if (i == 0)
- | S1;
- | S2;
- | }
-
- This function would return S1 whose iteration domain contains only
- one point "i = 0", whereas the iteration domain of S2 has 100 points.
+ variable of loop LOOP.
- This should be implemented using some functionality existing in
- CLooG-ISL. */
+ FIXME: This one is not entirely correct, as min/max expressions in the
+ calculation can yield to incorrect results. To be completely
+ correct, we need to evaluate each subexpression generated by
+ CLooG. CLooG does not yet support this, so this is as good as
+ it can be. */
-static struct clast_user_stmt *
-clast_get_body_of_loop (struct clast_stmt *stmt)
+static void
+compute_bounds_for_loop (struct clast_for *loop, mpz_t low, mpz_t up)
{
- if (!stmt
- || CLAST_STMT_IS_A (stmt, stmt_user))
- return (struct clast_user_stmt *) stmt;
-
- if (CLAST_STMT_IS_A (stmt, stmt_for))
- return clast_get_body_of_loop (((struct clast_for *) stmt)->body);
-
- if (CLAST_STMT_IS_A (stmt, stmt_guard))
- return clast_get_body_of_loop (((struct clast_guard *) stmt)->then);
-
- if (CLAST_STMT_IS_A (stmt, stmt_block))
- return clast_get_body_of_loop (((struct clast_block *) stmt)->body);
-
- if (CLAST_STMT_IS_A (stmt, stmt_ass))
- return clast_get_body_of_loop (stmt->next);
-
- gcc_unreachable ();
+ isl_set *domain;
+ isl_aff *dimension;
+ isl_local_space *local_space;
+ isl_int isl_value;
+ enum isl_lp_result lp_result;
+
+ domain = isl_set_copy (isl_set_from_cloog_domain (loop->domain));
+ local_space = isl_local_space_from_space (isl_set_get_space (domain));
+ dimension = isl_aff_zero_on_domain (local_space);
+ dimension = isl_aff_add_coefficient_si (dimension, isl_dim_in,
+ isl_set_dim (domain, isl_dim_set) - 1,
+ 1);
+
+ isl_int_init (isl_value);
+
+ lp_result = isl_set_min (domain, dimension, &isl_value);
+ assert (lp_result == isl_lp_ok);
+ isl_int_get_gmp (isl_value, low);
+
+ lp_result = isl_set_max (domain, dimension, &isl_value);
+ assert (lp_result == isl_lp_ok);
+ isl_int_get_gmp (isl_value, up);
+
+ isl_int_clear (isl_value);
+ isl_set_free (domain);
+ isl_aff_free (dimension);
}
/* Returns the type for the induction variable for the loop translated
@@ -867,10 +942,6 @@ graphite_create_new_loop (edge entry_edge, struct clast_for *stmt,
{
mpz_t low, up;
- struct clast_user_stmt *body
- = clast_get_body_of_loop ((struct clast_stmt *) stmt);
- poly_bb_p pbb = (poly_bb_p) cloog_statement_usr (body->statement);
-
tree stride = gmp_cst_to_tree (type, stmt->stride);
tree ivvar = create_tmp_var (type, "graphite_IV");
tree iv, iv_after_increment;
@@ -878,11 +949,9 @@ graphite_create_new_loop (edge entry_edge, struct clast_for *stmt,
(entry_edge, lb, stride, ub, ivvar, &iv, &iv_after_increment,
outer ? outer : entry_edge->src->loop_father);
- add_referenced_var (ivvar);
-
mpz_init (low);
mpz_init (up);
- compute_bounds_for_level (pbb, level, low, up);
+ compute_bounds_for_loop (stmt, low, up);
save_clast_name_index (ip->newivs_index, stmt->iterator,
VEC_length (tree, *(ip->newivs)), level, low, up);
mpz_clear (low);
@@ -901,7 +970,7 @@ build_iv_mapping (VEC (tree, heap) *iv_map, struct clast_user_stmt *user_stmt,
struct clast_stmt *t;
int depth = 0;
CloogStatement *cs = user_stmt->statement;
- poly_bb_p pbb = (poly_bb_p) cloog_statement_usr (cs);
+ poly_bb_p pbb = (poly_bb_p) cs->usr;
gimple_bb_p gbb = PBB_BLACK_BOX (pbb);
mpz_t bound_one, bound_two;
@@ -954,7 +1023,7 @@ mark_bb_with_pbb (poly_bb_p pbb, basic_block bb, htab_t bb_pbb_mapping)
/* Find BB's related poly_bb_p in hash table BB_PBB_MAPPING. */
-static poly_bb_p
+poly_bb_p
find_pbb_via_hash (htab_t bb_pbb_mapping, basic_block bb)
{
bb_pbb_def tmp;
@@ -969,41 +1038,32 @@ find_pbb_via_hash (htab_t bb_pbb_mapping, basic_block bb)
return NULL;
}
-/* Check data dependency in LOOP at level LEVEL.
- BB_PBB_MAPPING is a basic_block and it's related poly_bb_p
- mapping. */
+/* Return the scop of the loop and initialize PBBS the set of
+ poly_bb_p that belong to the LOOP. BB_PBB_MAPPING is a map created
+ by the CLAST code generator between a generated basic_block and its
+ related poly_bb_p. */
-static bool
-dependency_in_loop_p (loop_p loop, htab_t bb_pbb_mapping, int level)
+scop_p
+get_loop_body_pbbs (loop_p loop, htab_t bb_pbb_mapping,
+ VEC (poly_bb_p, heap) **pbbs)
{
- unsigned i,j;
+ unsigned i;
basic_block *bbs = get_loop_body_in_dom_order (loop);
+ scop_p scop = NULL;
for (i = 0; i < loop->num_nodes; i++)
{
- poly_bb_p pbb1 = find_pbb_via_hash (bb_pbb_mapping, bbs[i]);
-
- if (pbb1 == NULL)
- continue;
+ poly_bb_p pbb = find_pbb_via_hash (bb_pbb_mapping, bbs[i]);
- for (j = 0; j < loop->num_nodes; j++)
- {
- poly_bb_p pbb2 = find_pbb_via_hash (bb_pbb_mapping, bbs[j]);
-
- if (pbb2 == NULL)
- continue;
+ if (pbb == NULL)
+ continue;
- if (dependency_between_pbbs_p (pbb1, pbb2, level))
- {
- free (bbs);
- return true;
- }
- }
+ scop = PBB_SCOP (pbb);
+ VEC_safe_push (poly_bb_p, heap, *pbbs, pbb);
}
free (bbs);
-
- return false;
+ return scop;
}
/* Translates a clast user statement STMT to gimple.
@@ -1018,7 +1078,7 @@ translate_clast_user (struct clast_user_stmt *stmt, edge next_e,
{
int i, nb_loops;
basic_block new_bb;
- poly_bb_p pbb = (poly_bb_p) cloog_statement_usr (stmt->statement);
+ poly_bb_p pbb = (poly_bb_p) stmt->statement->usr;
gimple_bb_p gbb = PBB_BLACK_BOX (pbb);
VEC (tree, heap) *iv_map;
@@ -1037,6 +1097,7 @@ translate_clast_user (struct clast_user_stmt *stmt, edge next_e,
new_bb = next_e->src;
mark_bb_with_pbb (pbb, new_bb, bb_pbb_mapping);
+ mark_virtual_operands_for_renaming (cfun);
update_ssa (TODO_update_ssa);
return next_e;
@@ -1110,7 +1171,7 @@ translate_clast_for_loop (loop_p context_loop, struct clast_for *stmt,
set_immediate_dominator (CDI_DOMINATORS, next_e->dest, next_e->src);
if (flag_loop_parallelize_all
- && !dependency_in_loop_p (loop, bb_pbb_mapping, level))
+ && loop_is_parallel_p (loop, bb_pbb_mapping, level))
loop->can_be_parallel = true;
return last_e;
@@ -1158,7 +1219,6 @@ translate_clast_assignment (struct clast_assignment *stmt, edge next_e,
var = create_tmp_var (type, "graphite_var");
new_name = force_gimple_operand (clast_to_gcc_expression (type, expr, ip),
&stmts, true, var);
- add_referenced_var (var);
if (stmts)
{
gsi_insert_seq_on_edge (next_e, stmts);
@@ -1240,81 +1300,69 @@ translate_clast (loop_p context_loop, struct clast_stmt *stmt, edge next_e,
level, ip);
}
-/* Free the SCATTERING domain list. */
+/* Add parameter and iterator names to the CloogUnionDomain. */
-static void
-free_scattering (CloogScatteringList *scattering)
-{
- while (scattering)
- {
- CloogScattering *dom = cloog_scattering (scattering);
- CloogScatteringList *next = cloog_next_scattering (scattering);
-
- cloog_scattering_free (dom);
- free (scattering);
- scattering = next;
- }
-}
-
-/* Initialize Cloog's parameter names from the names used in GIMPLE.
- Initialize Cloog's iterator names, using 'graphite_iterator_%d'
- from 0 to scop_nb_loops (scop). */
-
-static void
-initialize_cloog_names (scop_p scop, CloogProgram *prog)
+static CloogUnionDomain *
+add_names_to_union_domain (scop_p scop, CloogUnionDomain *union_domain,
+ int nb_scattering_dims, htab_t params_index)
{
sese region = SCOP_REGION (scop);
int i;
int nb_iterators = scop_max_loop_depth (scop);
- int nb_scattering = cloog_program_nb_scattdims (prog);
int nb_parameters = VEC_length (tree, SESE_PARAMS (region));
- char **iterators = XNEWVEC (char *, nb_iterators * 2);
- char **scattering = XNEWVEC (char *, nb_scattering);
- char **parameters= XNEWVEC (char *, nb_parameters);
+ mpz_t bound_one, bound_two;
- cloog_program_set_names (prog, cloog_names_malloc ());
+ mpz_init (bound_one);
+ mpz_init (bound_two);
for (i = 0; i < nb_parameters; i++)
{
tree param = VEC_index (tree, SESE_PARAMS (region), i);
const char *name = get_name (param);
int len;
+ char *parameter;
if (!name)
name = "T";
len = strlen (name);
len += 17;
- parameters[i] = XNEWVEC (char, len + 1);
- snprintf (parameters[i], len, "%s_%d", name, SSA_NAME_VERSION (param));
+ parameter = XNEWVEC (char, len + 1);
+ snprintf (parameter, len, "%s_%d", name, SSA_NAME_VERSION (param));
+ save_clast_name_index (params_index, parameter, i, i, bound_one,
+ bound_two);
+ union_domain = cloog_union_domain_set_name (union_domain, CLOOG_PARAM, i,
+ parameter);
+ compute_bounds_for_param (scop, i, bound_one, bound_two);
+ free (parameter);
}
- cloog_names_set_nb_parameters (cloog_program_names (prog), nb_parameters);
- cloog_names_set_parameters (cloog_program_names (prog), parameters);
+ mpz_clear (bound_one);
+ mpz_clear (bound_two);
for (i = 0; i < nb_iterators; i++)
{
int len = 4 + 16;
- iterators[i] = XNEWVEC (char, len);
- snprintf (iterators[i], len, "git_%d", i);
+ char *iterator;
+ iterator = XNEWVEC (char, len);
+ snprintf (iterator, len, "git_%d", i);
+ union_domain = cloog_union_domain_set_name (union_domain, CLOOG_ITER, i,
+ iterator);
+ free (iterator);
}
- cloog_names_set_nb_iterators (cloog_program_names (prog),
- nb_iterators);
- cloog_names_set_iterators (cloog_program_names (prog),
- iterators);
-
- for (i = 0; i < nb_scattering; i++)
+ for (i = 0; i < nb_scattering_dims; i++)
{
int len = 5 + 16;
- scattering[i] = XNEWVEC (char, len);
- snprintf (scattering[i], len, "scat_%d", i);
+ char *scattering;
+ scattering = XNEWVEC (char, len);
+ snprintf (scattering, len, "scat_%d", i);
+ union_domain = cloog_union_domain_set_name (union_domain, CLOOG_SCAT, i,
+ scattering);
+ free (scattering);
}
- cloog_names_set_nb_scattering (cloog_program_names (prog),
- nb_scattering);
- cloog_names_set_scattering (cloog_program_names (prog),
- scattering);
+ return union_domain;
}
/* Initialize a CLooG input file. */
@@ -1342,129 +1390,74 @@ init_cloog_input_file (int scop_number)
return graphite_out_file;
}
-/* Build cloog program for SCoP. */
+/* Extend the scattering to NEW_DIMS scattering dimensions. */
-static void
-build_cloog_prog (scop_p scop, CloogProgram *prog,
- CloogOptions *options)
+static
+isl_map *extend_scattering(isl_map *scattering, int new_dims)
{
- int i;
- int max_nb_loops = scop_max_loop_depth (scop);
- poly_bb_p pbb;
- CloogLoop *loop_list = NULL;
- CloogBlockList *block_list = NULL;
- CloogScatteringList *scattering = NULL;
- int nbs = 2 * max_nb_loops + 1;
- int *scaldims;
-
- cloog_program_set_context
- (prog, new_Cloog_Domain_from_ppl_Pointset_Powerset (SCOP_CONTEXT (scop),
- scop_nb_params (scop), cloog_state));
- nbs = unify_scattering_dimensions (scop);
- scaldims = (int *) xmalloc (nbs * (sizeof (int)));
- cloog_program_set_nb_scattdims (prog, nbs);
- initialize_cloog_names (scop, prog);
-
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
- {
- CloogStatement *stmt;
- CloogBlock *block;
- CloogDomain *dom;
-
- /* Dead code elimination: when the domain of a PBB is empty,
- don't generate code for the PBB. */
- if (ppl_Pointset_Powerset_C_Polyhedron_is_empty (PBB_DOMAIN (pbb)))
- continue;
-
- /* Build the new statement and its block. */
- stmt = cloog_statement_alloc (cloog_state, pbb_index (pbb));
- dom = new_Cloog_Domain_from_ppl_Pointset_Powerset (PBB_DOMAIN (pbb),
- scop_nb_params (scop),
- cloog_state);
- block = cloog_block_alloc (stmt, 0, NULL, pbb_dim_iter_domain (pbb));
- cloog_statement_set_usr (stmt, pbb);
-
- /* Build loop list. */
- {
- CloogLoop *new_loop_list = cloog_loop_malloc (cloog_state);
- cloog_loop_set_next (new_loop_list, loop_list);
- cloog_loop_set_domain (new_loop_list, dom);
- cloog_loop_set_block (new_loop_list, block);
- loop_list = new_loop_list;
- }
+ int old_dims, i;
+ isl_space *space;
+ isl_basic_map *change_scattering;
+ isl_map *change_scattering_map;
- /* Build block list. */
- {
- CloogBlockList *new_block_list = cloog_block_list_malloc ();
+ old_dims = isl_map_dim (scattering, isl_dim_out);
- cloog_block_list_set_next (new_block_list, block_list);
- cloog_block_list_set_block (new_block_list, block);
- block_list = new_block_list;
- }
+ space = isl_space_alloc (isl_map_get_ctx (scattering), 0, old_dims, new_dims);
+ change_scattering = isl_basic_map_universe (isl_space_copy (space));
- /* Build scattering list. */
- {
- /* XXX: Replace with cloog_domain_list_alloc(), when available. */
- CloogScatteringList *new_scattering
- = (CloogScatteringList *) xmalloc (sizeof (CloogScatteringList));
- ppl_Polyhedron_t scat;
- CloogScattering *dom;
-
- scat = PBB_TRANSFORMED_SCATTERING (pbb);
- dom = new_Cloog_Scattering_from_ppl_Polyhedron
- (scat, scop_nb_params (scop), pbb_nb_scattering_transform (pbb),
- cloog_state);
-
- cloog_set_next_scattering (new_scattering, scattering);
- cloog_set_scattering (new_scattering, dom);
- scattering = new_scattering;
- }
+ for (i = 0; i < old_dims; i++)
+ {
+ isl_constraint *c;
+ c = isl_equality_alloc
+ (isl_local_space_from_space (isl_space_copy (space)));
+ isl_constraint_set_coefficient_si (c, isl_dim_in, i, 1);
+ isl_constraint_set_coefficient_si (c, isl_dim_out, i, -1);
+ change_scattering = isl_basic_map_add_constraint (change_scattering, c);
}
- cloog_program_set_loop (prog, loop_list);
- cloog_program_set_blocklist (prog, block_list);
+ for (i = old_dims; i < new_dims; i++)
+ {
+ isl_constraint *c;
+ c = isl_equality_alloc
+ (isl_local_space_from_space (isl_space_copy (space)));
+ isl_constraint_set_coefficient_si (c, isl_dim_out, i, 1);
+ change_scattering = isl_basic_map_add_constraint (change_scattering, c);
+ }
- for (i = 0; i < nbs; i++)
- scaldims[i] = 0 ;
+ change_scattering_map = isl_map_from_basic_map (change_scattering);
+ change_scattering_map = isl_map_align_params (change_scattering_map, space);
+ return isl_map_apply_range (scattering, change_scattering_map);
+}
- cloog_program_set_scaldims (prog, scaldims);
+/* Build cloog union domain for SCoP. */
- /* Extract scalar dimensions to simplify the code generation problem. */
- cloog_program_extract_scalars (prog, scattering, options);
+static CloogUnionDomain *
+build_cloog_union_domain (scop_p scop, int nb_scattering_dims)
+{
+ int i;
+ poly_bb_p pbb;
+ CloogUnionDomain *union_domain =
+ cloog_union_domain_alloc (scop_nb_params (scop));
- /* Dump a .cloog input file, if requested. This feature is only
- enabled in the Graphite branch. */
- if (0)
+ FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
{
- static size_t file_scop_number = 0;
- FILE *cloog_file = init_cloog_input_file (file_scop_number);
+ CloogDomain *domain;
+ CloogScattering *scattering;
- cloog_program_dump_cloog (cloog_file, prog, scattering);
- ++file_scop_number;
- }
-
- /* Apply scattering. */
- cloog_program_scatter (prog, scattering, options);
- free_scattering (scattering);
+ /* Dead code elimination: when the domain of a PBB is empty,
+ don't generate code for the PBB. */
+ if (isl_set_is_empty(pbb->domain))
+ continue;
- /* Iterators corresponding to scalar dimensions have to be extracted. */
- cloog_names_scalarize (cloog_program_names (prog), nbs,
- cloog_program_scaldims (prog));
+ domain = cloog_domain_from_isl_set(isl_set_copy(pbb->domain));
+ scattering = cloog_scattering_from_isl_map(extend_scattering(isl_map_copy(pbb->transformed),
+ nb_scattering_dims));
- /* Free blocklist. */
- {
- CloogBlockList *next = cloog_program_blocklist (prog);
+ union_domain = cloog_union_domain_add_domain (union_domain, "", domain,
+ scattering, pbb);
+ }
- while (next)
- {
- CloogBlockList *toDelete = next;
- next = cloog_block_list_next (next);
- cloog_block_list_set_next (toDelete, NULL);
- cloog_block_list_set_block (toDelete, NULL);
- cloog_block_list_free (toDelete);
- }
- cloog_program_set_blocklist (prog, NULL);
- }
+ return union_domain;
}
/* Return the options that will be used in GLOOG. */
@@ -1485,14 +1478,8 @@ set_cloog_options (void)
GLooG. */
options->esp = 1;
-#ifdef CLOOG_ORG
/* Silence CLooG to avoid failing tests due to debug output to stderr. */
options->quiet = 1;
-#else
- /* Enable C pretty-printing mode: normalizes the substitution
- equations for statements. */
- options->cpp = 1;
-#endif
/* Allow cloog to build strides with a stride width different to one.
This example has stride = 4:
@@ -1501,6 +1488,11 @@ set_cloog_options (void)
A */
options->strides = 1;
+ /* We want the clast to provide the iteration domains of the executed loops.
+ This allows us to derive minimal/maximal values for the induction
+ variables. */
+ options->save_domains = 1;
+
/* Disable optimizations and make cloog generate source code closer to the
input. This is useful for debugging, but later we want the optimized
code.
@@ -1535,24 +1527,70 @@ debug_clast_stmt (struct clast_stmt *stmt)
print_clast_stmt (stderr, stmt);
}
+/* Get the maximal number of scattering dimensions in the scop SCOP. */
+
+static
+int get_max_scattering_dimensions (scop_p scop)
+{
+ int i;
+ poly_bb_p pbb;
+ int scattering_dims = 0;
+
+ FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
+ {
+ int pbb_scatt_dims = isl_map_dim (pbb->transformed, isl_dim_out);
+ if (pbb_scatt_dims > scattering_dims)
+ scattering_dims = pbb_scatt_dims;
+ }
+
+ return scattering_dims;
+}
+
+static CloogInput *
+generate_cloog_input (scop_p scop, htab_t params_index)
+{
+ CloogUnionDomain *union_domain;
+ CloogInput *cloog_input;
+ CloogDomain *context;
+ int nb_scattering_dims = get_max_scattering_dimensions (scop);
+
+ union_domain = build_cloog_union_domain (scop, nb_scattering_dims);
+ union_domain = add_names_to_union_domain (scop, union_domain,
+ nb_scattering_dims,
+ params_index);
+ context = cloog_domain_from_isl_set (isl_set_copy (scop->context));
+
+ cloog_input = cloog_input_alloc (context, union_domain);
+
+ return cloog_input;
+}
+
/* Translate SCOP to a CLooG program and clast. These two
representations should be freed together: a clast cannot be used
without a program. */
-cloog_prog_clast
-scop_to_clast (scop_p scop)
+static struct clast_stmt *
+scop_to_clast (scop_p scop, htab_t params_index)
{
+ CloogInput *cloog_input;
+ struct clast_stmt *clast;
CloogOptions *options = set_cloog_options ();
- cloog_prog_clast pc;
- /* Connect new cloog prog generation to graphite. */
- pc.prog = cloog_program_malloc ();
- build_cloog_prog (scop, pc.prog, options);
- pc.prog = cloog_program_generate (pc.prog, options);
- pc.stmt = cloog_clast_create (pc.prog, options);
+ cloog_input = generate_cloog_input (scop, params_index);
+
+ /* Dump a .cloog input file, if requested. This feature is only
+ enabled in the Graphite branch. */
+ if (0)
+ {
+ static size_t file_scop_number = 0;
+ FILE *cloog_file = init_cloog_input_file (file_scop_number);
+ cloog_input_dump_cloog (cloog_file, cloog_input, options);
+ }
+
+ clast = cloog_clast_create_from_input (cloog_input, options);
cloog_options_free (options);
- return pc;
+ return clast;
}
/* Prints to FILE the code generated by CLooG for SCOP. */
@@ -1561,20 +1599,20 @@ void
print_generated_program (FILE *file, scop_p scop)
{
CloogOptions *options = set_cloog_options ();
+ htab_t params_index;
+ struct clast_stmt *clast;
- cloog_prog_clast pc = scop_to_clast (scop);
+ params_index = htab_create (10, clast_name_index_elt_info,
+ eq_clast_name_indexes, free_clast_name_index);
- fprintf (file, " (prog: \n");
- cloog_program_print (file, pc.prog);
- fprintf (file, " )\n");
+ clast = scop_to_clast (scop, params_index);
fprintf (file, " (clast: \n");
- clast_pprint (file, pc.stmt, 0, options);
+ clast_pprint (file, clast, 0, options);
fprintf (file, " )\n");
cloog_options_free (options);
- cloog_clast_free (pc.stmt);
- cloog_program_free (pc.prog);
+ cloog_clast_free (clast);
}
/* Prints to STDERR the code generated by CLooG for SCOP. */
@@ -1585,31 +1623,6 @@ debug_generated_program (scop_p scop)
print_generated_program (stderr, scop);
}
-/* Add CLooG names to parameter index. The index is used to translate
- back from CLooG names to GCC trees. */
-
-static void
-create_params_index (scop_p scop, htab_t index_table, CloogProgram *prog) {
- CloogNames* names = cloog_program_names (prog);
- int nb_parameters = cloog_names_nb_parameters (names);
- char **parameters = cloog_names_parameters (names);
- int i;
- mpz_t bound_one, bound_two;
-
- mpz_init (bound_one);
- mpz_init (bound_two);
-
- for (i = 0; i < nb_parameters; i++)
- {
- compute_bounds_for_param (scop, i, bound_one, bound_two);
- save_clast_name_index (index_table, parameters[i], i, i,
- bound_one, bound_two);
- }
-
- mpz_clear (bound_one);
- mpz_clear (bound_two);
-}
-
/* GIMPLE Loop Generator: generates loops from STMT in GIMPLE form for
the given SCOP. Return true if code generation succeeded.
BB_PBB_MAPPING is a basic_block and it's related poly_bb_p mapping.
@@ -1623,18 +1636,21 @@ gloog (scop_p scop, htab_t bb_pbb_mapping)
sese region = SCOP_REGION (scop);
ifsese if_region = NULL;
htab_t newivs_index, params_index;
- cloog_prog_clast pc;
+ struct clast_stmt *clast;
struct ivs_params ip;
timevar_push (TV_GRAPHITE_CODE_GEN);
gloog_error = false;
- pc = scop_to_clast (scop);
+ params_index = htab_create (10, clast_name_index_elt_info,
+ eq_clast_name_indexes, free_clast_name_index);
+
+ clast = scop_to_clast (scop, params_index);
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "\nCLAST generated by CLooG: \n");
- print_clast_stmt (dump_file, pc.stmt);
+ print_clast_stmt (dump_file, clast);
fprintf (dump_file, "\n");
}
@@ -1652,10 +1668,6 @@ gloog (scop_p scop, htab_t bb_pbb_mapping)
context_loop = SESE_ENTRY (region)->src->loop_father;
newivs_index = htab_create (10, clast_name_index_elt_info,
eq_clast_name_indexes, free_clast_name_index);
- params_index = htab_create (10, clast_name_index_elt_info,
- eq_clast_name_indexes, free_clast_name_index);
-
- create_params_index (scop, params_index, pc.prog);
ip.newivs = &newivs;
ip.newivs_index = newivs_index;
@@ -1663,7 +1675,7 @@ gloog (scop_p scop, htab_t bb_pbb_mapping)
ip.params_index = params_index;
ip.region = region;
- translate_clast (context_loop, pc.stmt, if_region->true_region->entry,
+ translate_clast (context_loop, clast, if_region->true_region->entry,
bb_pbb_mapping, 0, &ip);
graphite_verify ();
scev_reset ();
@@ -1680,8 +1692,7 @@ gloog (scop_p scop, htab_t bb_pbb_mapping)
htab_delete (newivs_index);
htab_delete (params_index);
VEC_free (tree, heap, newivs);
- cloog_clast_free (pc.stmt);
- cloog_program_free (pc.prog);
+ cloog_clast_free (clast);
timevar_pop (TV_GRAPHITE_CODE_GEN);
if (dump_file && (dump_flags & TDF_DETAILS))
diff --git a/gcc/graphite-clast-to-gimple.h b/gcc/graphite-clast-to-gimple.h
index b5affd989f0..8fdee90856b 100644
--- a/gcc/graphite-clast-to-gimple.h
+++ b/gcc/graphite-clast-to-gimple.h
@@ -21,8 +21,6 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_GRAPHITE_CLAST_TO_GIMPLE_H
#define GCC_GRAPHITE_CLAST_TO_GIMPLE_H
-#include "graphite-cloog-util.h"
-
extern CloogState *cloog_state;
/* Data structure for CLooG program representation. */
@@ -41,7 +39,6 @@ typedef struct bb_pbb_def
} bb_pbb_def;
extern bool gloog (scop_p, htab_t);
-extern cloog_prog_clast scop_to_clast (scop_p);
extern void debug_clast_stmt (struct clast_stmt *);
extern void print_clast_stmt (FILE *, struct clast_stmt *);
diff --git a/gcc/graphite-cloog-compat.h b/gcc/graphite-cloog-compat.h
deleted file mode 100644
index 011377de8f5..00000000000
--- a/gcc/graphite-cloog-compat.h
+++ /dev/null
@@ -1,275 +0,0 @@
-/* Compatibility layer for using upstream CLooG versions with
- CLooG legacy code.
- Copyright (C) 2010, 2011 Free Software Foundation, Inc.
- Contributed by Andreas Simbuerger <simbuerg@fim.uni-passau.de>.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#ifndef GRAPHITE_CLOOG_COMPAT_H
-#define GRAPHITE_CLOOG_COMPAT_H
-
-/* Restore compatibility to CLooG Legacy. */
-#ifdef CLOOG_ORG
-typedef const struct clast_expr *clast_name_p;
-#else
-typedef const char *clast_name_p;
-#endif
-
-#ifdef CLOOG_ORG
-#define cloog_initialize()
-#define cloog_finalize()
-#endif
-
-#ifndef CLOOG_ORG
-
-/* CloogOptions compatibility. */
-#define build_cloog_prog(SCOP, PROG, OPT)\
- build_cloog_prog (SCOP, PROG)
-#define cloog_program_extract_scalars(PROG, SCATT, OPT)\
- cloog_program_extract_scalars (PROG, SCATT)
-#define cloog_program_scatter(PROG, SCATT, OPT)\
- cloog_program_scatter (PROG, SCATT)
-
-/* CLAST compatibility. */
-#define clast_expr_term expr_term
-#define clast_expr_red expr_red
-#define clast_expr_bin expr_bin
-#define clast_pprint pprint
-
-/* CloogState compatibility. */
-#define CloogState void
-#define cloog_state_malloc() NULL
-#define cloog_state_free(STATE)
-#define cloog_loop_malloc(STATE) cloog_loop_malloc ()
-#define cloog_options_malloc(STATE) cloog_options_malloc ()
-#define cloog_statement_alloc(STATE, INDEX) cloog_statement_alloc (INDEX)
-#define new_Cloog_Domain_from_ppl_Pointset_Powerset(PSPS, NB, STATE)\
- new_Cloog_Domain_from_ppl_Pointset_Powerset (PSPS)
-#define new_Cloog_Domain_from_ppl_Polyhedron(POLY, NB, STATE)\
- new_Cloog_Domain_from_ppl_Polyhedron (POLY)
-#define cloog_domain_from_cloog_matrix(STATE, MAT, NB)\
- cloog_domain_matrix2domain (MAT)
-
-/* CloogScatteringList compatibility. */
-#define CloogScatteringList CloogDomainList
-#define CloogScattering CloogDomain
-#define cloog_set_next_scattering cloog_set_next_domain
-#define cloog_set_scattering cloog_set_domain
-#define cloog_scattering cloog_domain
-#define cloog_next_scattering cloog_next_domain
-#define cloog_scattering_free cloog_domain_free
-#define cloog_program_dump_cloog(DUMPFILE, PROGRAM, SCATTERINGLIST)\
- cloog_program_dump_cloog (DUMPFILE, PROGRAM)
-
-#endif
-
-/* Adapt CLooG accessors from CLooG legacy to
- newer CLooG versions. */
-
-#ifdef CLOOG_ORG
-
-static inline void *
-cloog_statement_usr (CloogStatement *cs)
-{
- return cs->usr;
-}
-
-static inline CloogScattering *
-cloog_scattering (CloogScatteringList *sl)
-{
- return sl->scatt;
-}
-
-static inline void
-cloog_set_scattering (CloogScatteringList *sl, CloogScattering *scatt)
-{
- sl->scatt = scatt;
-}
-
-static inline CloogScatteringList *
-cloog_next_scattering (CloogScatteringList *sl)
-{
- return sl->next;
-}
-
-static inline void
-cloog_set_next_scattering (CloogScatteringList *sl, CloogScatteringList *next)
-{
- sl->next = next;
-}
-
-static inline int
-cloog_program_nb_scattdims (CloogProgram *prog)
-{
- return prog->nb_scattdims;
-}
-
-static inline void
-cloog_program_set_nb_scattdims (CloogProgram *prog, int nb_scattdims)
-{
- prog->nb_scattdims = nb_scattdims;
-}
-
-static inline CloogNames *
-cloog_program_names (CloogProgram *prog)
-{
- return prog->names;
-}
-
-static inline void
-cloog_program_set_names (CloogProgram *prog, CloogNames *names)
-{
- prog->names = names;
-}
-
-static inline void
-cloog_program_set_context (CloogProgram *prog, CloogDomain *domain)
-{
- prog->context = domain;
-}
-
-static inline void
-cloog_program_set_loop (CloogProgram *prog, CloogLoop *loop)
-{
- prog->loop = loop;
-}
-
-static inline CloogBlockList *
-cloog_program_blocklist (CloogProgram *prog)
-{
- return prog->blocklist;
-}
-
-static inline void
-cloog_program_set_blocklist (CloogProgram *prog, CloogBlockList *bl)
-{
- prog->blocklist = bl;
-}
-
-static inline int *
-cloog_program_scaldims (CloogProgram *prog)
-{
- return prog->scaldims;
-}
-
-static inline void
-cloog_program_set_scaldims (CloogProgram *prog, int *s)
-{
- prog->scaldims = s;
-}
-
-static inline int
-cloog_names_nb_parameters (CloogNames *names)
-{
- return names->nb_parameters;
-}
-
-static inline void
-cloog_names_set_nb_parameters (CloogNames *names, int nb_parameters)
-{
- names->nb_parameters = nb_parameters;
-}
-
-static inline char **
-cloog_names_parameters (CloogNames *names)
-{
- return names->parameters;
-}
-
-static inline void
-cloog_names_set_parameters (CloogNames *names, char **parameters)
-{
- names->parameters = parameters;
-}
-
-static inline void
-cloog_names_set_nb_iterators (CloogNames *names, int nb_iterators)
-{
- names->nb_iterators = nb_iterators;
-}
-
-static inline void
-cloog_names_set_iterators (CloogNames *names, char **iterators)
-{
- names->iterators = iterators;
-}
-
-static inline void
-cloog_names_set_nb_scattering (CloogNames *names, int nb_scattering)
-{
- names->nb_scattering = nb_scattering;
-}
-
-static inline void
-cloog_names_set_scattering (CloogNames *names, char **scattering)
-{
- names->scattering = scattering;
-}
-
-static inline void
-cloog_statement_set_usr (CloogStatement *cs, void *u)
-{
- cs->usr = u;
-}
-
-static inline void
-cloog_loop_set_next (CloogLoop *loop, CloogLoop *next)
-{
- loop->next = next;
-}
-
-static inline void
-cloog_loop_set_domain (CloogLoop *loop, CloogDomain *domain)
-{
- loop->domain = domain;
-}
-
-static inline void
-cloog_loop_set_block (CloogLoop *loop, CloogBlock *block)
-{
- loop->block = block;
-}
-
-static inline CloogBlockList *
-cloog_block_list_next (CloogBlockList *bl)
-{
- return bl->next;
-}
-
-static inline void
-cloog_block_list_set_next (CloogBlockList *bl, CloogBlockList *next)
-{
- bl->next = next;
-}
-
-static inline void
-cloog_block_list_set_block (CloogBlockList *bl, CloogBlock *block)
-{
- bl->block = block;
-}
-
-static inline int cloog_matrix_ncolumns (CloogMatrix * m)
-{
- return m->NbColumns;
-}
-
-static inline int cloog_matrix_nrows (CloogMatrix * m)
-{
- return m->NbRows;
-}
-#endif /* CLOOG_ORG */
-#endif /* GRAPHITE_CLOOG_COMPAT_H */
diff --git a/gcc/graphite-cloog-util.c b/gcc/graphite-cloog-util.c
deleted file mode 100644
index c3d0cc1713a..00000000000
--- a/gcc/graphite-cloog-util.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* Gimple Represented as Polyhedra.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
- Contributed by Sebastian Pop <sebastian.pop@inria.fr>
- and Tobias Grosser <grosser@fim.uni-passau.de>.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-
-#ifdef HAVE_cloog
-
-#include "ppl_c.h"
-#include "cloog/cloog.h"
-#include "graphite-cloog-util.h"
-#include "graphite-cloog-compat.h"
-
-/* Counts the number of constraints in PCS. */
-
-static int
-ppl_Constrain_System_number_of_constraints (ppl_const_Constraint_System_t pcs)
-{
- ppl_Constraint_System_const_iterator_t cit, end;
- int num = 0;
-
- ppl_new_Constraint_System_const_iterator (&cit);
- ppl_new_Constraint_System_const_iterator (&end);
-
- for (ppl_Constraint_System_begin (pcs, cit),
- ppl_Constraint_System_end (pcs, end);
- !ppl_Constraint_System_const_iterator_equal_test (cit, end);
- ppl_Constraint_System_const_iterator_increment (cit))
- num++;
-
- ppl_delete_Constraint_System_const_iterator (cit);
- ppl_delete_Constraint_System_const_iterator (end);
- return num;
-}
-
-static void
-oppose_constraint (CloogMatrix *m, int row)
-{
- int k;
-
- /* Do not oppose the first column: it is the eq/ineq one. */
- /* Cast needed to remove warning that is generated as CLooG isl
- is using an unsigned int for NbColumns and CLooG PPL is
- using a signed int for NBColumns. */
- for (k = 1; k < (int)m->NbColumns; k++)
- mpz_neg (m->p[row][k], m->p[row][k]);
-}
-
-/* Inserts constraint CSTR at row ROW of matrix M. */
-
-static void
-insert_constraint_into_matrix (CloogMatrix *m, int row,
- ppl_const_Constraint_t cstr)
-{
- ppl_Coefficient_t c;
- ppl_dimension_type i, dim, nb_cols = m->NbColumns;
-
- ppl_Constraint_space_dimension (cstr, &dim);
- ppl_new_Coefficient (&c);
-
- for (i = 0; i < dim; i++)
- {
- ppl_Constraint_coefficient (cstr, i, c);
- ppl_Coefficient_to_mpz_t (c, m->p[row][i + 1]);
- }
-
- for (i = dim; i < nb_cols - 1; i++)
- mpz_set_si (m->p[row][i + 1], 0);
-
- ppl_Constraint_inhomogeneous_term (cstr, c);
- ppl_Coefficient_to_mpz_t (c, m->p[row][nb_cols - 1]);
- mpz_set_si (m->p[row][0], 1);
-
- switch (ppl_Constraint_type (cstr))
- {
- case PPL_CONSTRAINT_TYPE_LESS_THAN:
- oppose_constraint (m, row);
- case PPL_CONSTRAINT_TYPE_GREATER_THAN:
- mpz_sub_ui (m->p[row][nb_cols - 1],
- m->p[row][nb_cols - 1], 1);
- break;
-
- case PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL:
- oppose_constraint (m, row);
- case PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL:
- break;
-
- case PPL_CONSTRAINT_TYPE_EQUAL:
- mpz_set_si (m->p[row][0], 0);
- break;
-
- default:
- /* Not yet implemented. */
- gcc_unreachable();
- }
-
- ppl_delete_Coefficient (c);
-}
-
-/* Creates a CloogMatrix from constraint system PCS. */
-
-static CloogMatrix *
-new_Cloog_Matrix_from_ppl_Constraint_System (ppl_const_Constraint_System_t pcs)
-{
- CloogMatrix *matrix;
- ppl_Constraint_System_const_iterator_t cit, end;
- ppl_dimension_type dim;
- int rows;
- int row = 0;
-
- rows = ppl_Constrain_System_number_of_constraints (pcs);
- ppl_Constraint_System_space_dimension (pcs, &dim);
- matrix = cloog_matrix_alloc (rows, dim + 2);
- ppl_new_Constraint_System_const_iterator (&cit);
- ppl_new_Constraint_System_const_iterator (&end);
-
- for (ppl_Constraint_System_begin (pcs, cit),
- ppl_Constraint_System_end (pcs, end);
- !ppl_Constraint_System_const_iterator_equal_test (cit, end);
- ppl_Constraint_System_const_iterator_increment (cit))
- {
- ppl_const_Constraint_t c;
- ppl_Constraint_System_const_iterator_dereference (cit, &c);
- insert_constraint_into_matrix (matrix, row, c);
- row++;
- }
-
- ppl_delete_Constraint_System_const_iterator (cit);
- ppl_delete_Constraint_System_const_iterator (end);
-
- return matrix;
-}
-
-/* Creates a CloogMatrix from polyhedron PH. */
-
-CloogMatrix *
-new_Cloog_Matrix_from_ppl_Polyhedron (ppl_const_Polyhedron_t ph)
-{
- ppl_const_Constraint_System_t pcs;
- CloogMatrix *res;
-
- ppl_Polyhedron_get_constraints (ph, &pcs);
- res = new_Cloog_Matrix_from_ppl_Constraint_System (pcs);
-
- return res;
-}
-
-/* Translates row ROW of the CloogMatrix MATRIX to a PPL Constraint. */
-
-static ppl_Constraint_t
-cloog_matrix_to_ppl_constraint (CloogMatrix *matrix, int row)
-{
- int j;
- ppl_Constraint_t cstr;
- ppl_Coefficient_t coef;
- ppl_Linear_Expression_t expr;
- ppl_dimension_type dim = matrix->NbColumns - 2;
-
- ppl_new_Coefficient (&coef);
- ppl_new_Linear_Expression_with_dimension (&expr, dim);
-
- /* Cast needed to remove warning that is generated as CLooG isl
- is using an unsigned int for NbColumns and CLooG PPL is
- using a signed int for NBColumns. */
- for (j = 1; j < (int)matrix->NbColumns - 1; j++)
- {
- ppl_assign_Coefficient_from_mpz_t (coef, matrix->p[row][j]);
- ppl_Linear_Expression_add_to_coefficient (expr, j - 1, coef);
- }
-
- ppl_assign_Coefficient_from_mpz_t (coef,
- matrix->p[row][matrix->NbColumns - 1]);
- ppl_Linear_Expression_add_to_inhomogeneous (expr, coef);
- ppl_delete_Coefficient (coef);
-
- if (mpz_sgn (matrix->p[row][0]) == 0)
- ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_EQUAL);
- else
- ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
-
- ppl_delete_Linear_Expression (expr);
- return cstr;
-}
-
-/* Creates a PPL constraint system from MATRIX. */
-
-static void
-new_Constraint_System_from_Cloog_Matrix (ppl_Constraint_System_t *pcs,
- CloogMatrix *matrix)
-{
- int i;
-
- ppl_new_Constraint_System (pcs);
-
- /* Cast needed to remove warning that is generated as CLooG isl
- is using an unsigned int for NbColumns and CLooG PPL is
- using a signed int for NBColumns. */
- for (i = 0; i < (int)matrix->NbRows; i++)
- {
- ppl_Constraint_t c = cloog_matrix_to_ppl_constraint (matrix, i);
- ppl_Constraint_System_insert_Constraint (*pcs, c);
- ppl_delete_Constraint (c);
- }
-}
-
-/* Creates a PPL Polyhedron from MATRIX. */
-
-void
-new_C_Polyhedron_from_Cloog_Matrix (ppl_Polyhedron_t *ph,
- CloogMatrix *matrix)
-{
- ppl_Constraint_System_t cs;
- new_Constraint_System_from_Cloog_Matrix (&cs, matrix);
- ppl_new_C_Polyhedron_recycle_Constraint_System (ph, cs);
-}
-
-/* Creates a CloogDomain from polyhedron PH. */
-
-CloogDomain *
-new_Cloog_Domain_from_ppl_Polyhedron (ppl_const_Polyhedron_t ph, int nb_params,
- CloogState *state ATTRIBUTE_UNUSED)
-{
- CloogMatrix *mat = new_Cloog_Matrix_from_ppl_Polyhedron (ph);
- CloogDomain *res = cloog_domain_from_cloog_matrix (state, mat, nb_params);
- cloog_matrix_free (mat);
- return res;
-}
-
-/* Create a CloogScattering from polyhedron PH. */
-
-CloogScattering *
-new_Cloog_Scattering_from_ppl_Polyhedron (ppl_const_Polyhedron_t ph,
- int nb_params ATTRIBUTE_UNUSED,
- int nb_scatt ATTRIBUTE_UNUSED,
- CloogState *state ATTRIBUTE_UNUSED)
-{
-#ifdef CLOOG_ORG
- CloogMatrix *mat = new_Cloog_Matrix_from_ppl_Polyhedron (ph);
- CloogScattering *res = cloog_scattering_from_cloog_matrix (state, mat,
- nb_scatt,
- nb_params);
-
- cloog_matrix_free (mat);
- return res;
-#else
- return new_Cloog_Domain_from_ppl_Polyhedron (ph, nb_params, state);
-#endif
-}
-
-/* Creates a CloogDomain from a pointset powerset PS. */
-
-CloogDomain *
-new_Cloog_Domain_from_ppl_Pointset_Powerset
- (ppl_Pointset_Powerset_C_Polyhedron_t ps, int nb_params,
- CloogState *state ATTRIBUTE_UNUSED)
-{
- CloogDomain *res = NULL;
- ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
-
- for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (ps, it),
- ppl_Pointset_Powerset_C_Polyhedron_iterator_end (ps, end);
- !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
- {
- ppl_const_Polyhedron_t ph;
- CloogDomain *tmp;
-
- ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
- tmp = new_Cloog_Domain_from_ppl_Polyhedron (ph, nb_params, state);
-
- if (res == NULL)
- res = tmp;
- else
- res = cloog_domain_union (res, tmp);
- }
-
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
-
- gcc_assert (res != NULL);
-
- return res;
-}
-
-/* Print to FILE the matrix MAT in OpenScop format. OUTPUT is the number
- of output dimensions, INPUT is the number of input dimensions, LOCALS
- is the number of existentially quantified variables and PARAMS is the
- number of parameters. */
-
-static void
-openscop_print_cloog_matrix (FILE *file, CloogMatrix *mat,
- int output, int input, int locals,
- int params)
-{
- int i, j;
-
- fprintf (file, "%d %d %d %d %d %d \n", cloog_matrix_nrows (mat),
- cloog_matrix_ncolumns (mat), output, input, locals, params);
-
- for (i = 0; i < cloog_matrix_nrows (mat); i++)
- {
- for (j = 0; j < cloog_matrix_ncolumns (mat); j++)
- if (j == 0)
- fprintf (file, "%ld ", mpz_get_si (mat->p[i][j]));
- else
- fprintf (file, "%6ld ", mpz_get_si (mat->p[i][j]));
-
- fprintf (file, "\n");
- }
-}
-
-/* Print to FILE the polyhedron PH in OpenScop format. OUTPUT is the number
- of output dimensions, INPUT is the number of input dimensions, LOCALS is
- the number of existentially quantified variables and PARAMS is the number
- of parameters. */
-
-void
-openscop_print_polyhedron_matrix (FILE *file, ppl_const_Polyhedron_t ph,
- int output, int input, int locals,
- int params)
-{
- CloogMatrix *mat = new_Cloog_Matrix_from_ppl_Polyhedron (ph);
- openscop_print_cloog_matrix (file, mat, output, input, locals, params);
- cloog_matrix_free (mat);
-}
-
-/* Read from FILE a matrix in OpenScop format. OUTPUT is the number of
- output dimensions, INPUT is the number of input dimensions, LOCALS
- is the number of existentially quantified variables and PARAMS is the
- number of parameters. */
-
-static CloogMatrix *
-openscop_read_cloog_matrix (FILE *file, int *output, int *input, int *locals,
- int *params)
-{
- int nb_rows, nb_cols, i, j;
- CloogMatrix *mat;
- int *openscop_matrix_header, *matrix_line;
-
- openscop_matrix_header = openscop_read_N_int (file, 6);
-
- nb_rows = openscop_matrix_header[0];
- nb_cols = openscop_matrix_header[1];
- *output = openscop_matrix_header[2];
- *input = openscop_matrix_header[3];
- *locals = openscop_matrix_header[4];
- *params = openscop_matrix_header[5];
-
- free (openscop_matrix_header);
-
- if (nb_rows == 0 || nb_cols == 0)
- return NULL;
-
- mat = cloog_matrix_alloc (nb_rows, nb_cols);
- mat->NbRows = nb_rows;
- mat->NbColumns = nb_cols;
-
- for (i = 0; i < nb_rows; i++)
- {
- matrix_line = openscop_read_N_int (file, nb_cols);
-
- for (j = 0; j < nb_cols; j++)
- mpz_set_si (mat->p[i][j], matrix_line[j]);
- }
-
- return mat;
-}
-
-/* Read from FILE the polyhedron PH in OpenScop format. OUTPUT is the number
- of output dimensions, INPUT is the number of input dimensions, LOCALS is
- the number of existentially quantified variables and PARAMS is the number
- of parameters. */
-
-void
-openscop_read_polyhedron_matrix (FILE *file, ppl_Polyhedron_t *ph,
- int *output, int *input, int *locals,
- int *params)
-{
- CloogMatrix *mat;
-
- mat = openscop_read_cloog_matrix (file, output, input, locals, params);
-
- if (!mat)
- *ph = NULL;
- else
- {
- new_C_Polyhedron_from_Cloog_Matrix (ph, mat);
- cloog_matrix_free (mat);
- }
-}
-
-#endif
diff --git a/gcc/graphite-cloog-util.h b/gcc/graphite-cloog-util.h
deleted file mode 100644
index 9686e7cd465..00000000000
--- a/gcc/graphite-cloog-util.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Gimple Represented as Polyhedra.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
- Contributed by Sebastian Pop <sebastian.pop@inria.fr>
- and Tobias Grosser <grosser@fim.uni-passau.de>.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-#ifndef GRAPHITE_CLOOG_UTIL_H
-#define GRAPHITE_CLOOG_UTIL_H
-
-#include "cloog/cloog.h"
-#include "graphite-cloog-compat.h"
-
-CloogMatrix *new_Cloog_Matrix_from_ppl_Polyhedron (ppl_const_Polyhedron_t);
-CloogDomain *new_Cloog_Domain_from_ppl_Polyhedron (ppl_const_Polyhedron_t,
- int, CloogState *);
-CloogScattering *new_Cloog_Scattering_from_ppl_Polyhedron
- (ppl_const_Polyhedron_t, int, int, CloogState *);
-CloogDomain * new_Cloog_Domain_from_ppl_Pointset_Powerset
- (ppl_Pointset_Powerset_C_Polyhedron_t, int, CloogState *);
-void new_C_Polyhedron_from_Cloog_Matrix (ppl_Polyhedron_t *, CloogMatrix *);
-void openscop_print_polyhedron_matrix (FILE *, ppl_const_Polyhedron_t, int,
- int, int, int);
-void openscop_read_polyhedron_matrix (FILE *, ppl_Polyhedron_t *, int *, int *,
- int *, int *);
-
-extern int *openscop_read_N_int (FILE *, int);
-
-#endif /* GRAPHITE_CLOOG_UTIL_H */
diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c
index fb49f161480..3d7a96f5363 100644
--- a/gcc/graphite-dependences.c
+++ b/gcc/graphite-dependences.c
@@ -1,5 +1,5 @@
/* Data dependence analysis for Graphite.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@amd.com> and
Konrad Trifunovic <konrad.trifunovic@inria.fr>.
@@ -20,10 +20,21 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <isl/flow.h>
+#include <isl/constraint.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "tree-pass.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-data-ref.h"
@@ -31,904 +42,556 @@ along with GCC; see the file COPYING3. If not see
#include "sese.h"
#ifdef HAVE_cloog
-#include "ppl_c.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
-#include "graphite-dependences.h"
-#include "graphite-cloog-util.h"
-/* Comparison function for poly_ddr hash table. */
+/* Add the constraints from the set S to the domain of MAP. */
-int
-eq_poly_ddr_p (const void *pddr1, const void *pddr2)
+static isl_map *
+constrain_domain (isl_map *map, isl_set *s)
{
- const struct poly_ddr *p1 = (const struct poly_ddr *) pddr1;
- const struct poly_ddr *p2 = (const struct poly_ddr *) pddr2;
+ isl_space *d = isl_map_get_space (map);
+ isl_id *id = isl_space_get_tuple_id (d, isl_dim_in);
- return (PDDR_SOURCE (p1) == PDDR_SOURCE (p2)
- && PDDR_SINK (p1) == PDDR_SINK (p2));
+ s = isl_set_set_tuple_id (s, id);
+ isl_space_free (d);
+ return isl_map_intersect_domain (map, s);
}
-/* Hash function for poly_ddr hashtable. */
+/* Constrain pdr->accesses with pdr->extent and pbb->domain. */
-hashval_t
-hash_poly_ddr_p (const void *pddr)
+static isl_map *
+add_pdr_constraints (poly_dr_p pdr, poly_bb_p pbb)
{
- const struct poly_ddr *p = (const struct poly_ddr *) pddr;
-
- return (hashval_t) ((long) PDDR_SOURCE (p) + (long) PDDR_SINK (p));
+ isl_map *x = isl_map_intersect_range (isl_map_copy (pdr->accesses),
+ isl_set_copy (pdr->extent));
+ x = constrain_domain (x, isl_set_copy (pbb->domain));
+ return x;
}
-/* Returns true when PDDR has no dependence. */
+/* Returns all the memory reads in SCOP. */
-static bool
-pddr_is_empty (poly_ddr_p pddr)
+static isl_union_map *
+scop_get_reads (scop_p scop, VEC (poly_bb_p, heap) *pbbs)
{
- if (!pddr)
- return true;
-
- gcc_assert (PDDR_KIND (pddr) != unknown_dependence);
-
- return PDDR_KIND (pddr) == no_dependence ? true : false;
-}
-
-/* Prints to FILE the layout of the dependence polyhedron of PDDR:
-
- T1|I1|T2|I2|S1|S2|G
-
- with
- | T1 and T2 the scattering dimensions for PDDR_SOURCE and PDDR_SINK
- | I1 and I2 the iteration domains
- | S1 and S2 the subscripts
- | G the global parameters. */
-
-static void
-print_dependence_polyhedron_layout (FILE *file, poly_ddr_p pddr)
-{
- poly_dr_p pdr1 = PDDR_SOURCE (pddr);
- poly_dr_p pdr2 = PDDR_SINK (pddr);
- poly_bb_p pbb1 = PDR_PBB (pdr1);
- poly_bb_p pbb2 = PDR_PBB (pdr2);
-
- graphite_dim_t i;
- graphite_dim_t tdim1 = PDDR_ORIGINAL_SCATTERING_P (pddr) ?
- pbb_nb_scattering_orig (pbb1) : pbb_nb_scattering_transform (pbb1);
- graphite_dim_t tdim2 = PDDR_ORIGINAL_SCATTERING_P (pddr) ?
- pbb_nb_scattering_orig (pbb2) : pbb_nb_scattering_transform (pbb2);
- graphite_dim_t idim1 = pbb_dim_iter_domain (pbb1);
- graphite_dim_t idim2 = pbb_dim_iter_domain (pbb2);
- graphite_dim_t sdim1 = PDR_NB_SUBSCRIPTS (pdr1) + 1;
- graphite_dim_t sdim2 = PDR_NB_SUBSCRIPTS (pdr2) + 1;
- graphite_dim_t gdim = scop_nb_params (PBB_SCOP (pbb1));
-
- fprintf (file, "# eq");
-
- for (i = 0; i < tdim1; i++)
- fprintf (file, " t1_%d", (int) i);
- for (i = 0; i < idim1; i++)
- fprintf (file, " i1_%d", (int) i);
- for (i = 0; i < tdim2; i++)
- fprintf (file, " t2_%d", (int) i);
- for (i = 0; i < idim2; i++)
- fprintf (file, " i2_%d", (int) i);
- for (i = 0; i < sdim1; i++)
- fprintf (file, " s1_%d", (int) i);
- for (i = 0; i < sdim2; i++)
- fprintf (file, " s2_%d", (int) i);
- for (i = 0; i < gdim; i++)
- fprintf (file, " g_%d", (int) i);
-
- fprintf (file, " cst\n");
-}
-
-/* Prints to FILE the poly_ddr_p PDDR. */
-
-void
-print_pddr (FILE *file, poly_ddr_p pddr)
-{
- fprintf (file, "pddr (kind: ");
-
- if (PDDR_KIND (pddr) == unknown_dependence)
- fprintf (file, "unknown_dependence");
- else if (PDDR_KIND (pddr) == no_dependence)
- fprintf (file, "no_dependence");
- else if (PDDR_KIND (pddr) == has_dependence)
- fprintf (file, "has_dependence");
-
- fprintf (file, "\n source ");
- print_pdr (file, PDDR_SOURCE (pddr), 2);
-
- fprintf (file, "\n sink ");
- print_pdr (file, PDDR_SINK (pddr), 2);
+ int i, j;
+ poly_bb_p pbb;
+ poly_dr_p pdr;
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_union_map *res = isl_union_map_empty (space);
- if (PDDR_KIND (pddr) == has_dependence)
+ FOR_EACH_VEC_ELT (poly_bb_p, pbbs, i, pbb)
{
- fprintf (file, "\n dependence polyhedron (\n");
- print_dependence_polyhedron_layout (file, pddr);
- ppl_print_powerset_matrix (file, PDDR_DDP (pddr));
- ppl_io_fprint_Pointset_Powerset_C_Polyhedron (file, PDDR_DDP (pddr));
- fprintf (file, ")\n");
+ FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), j, pdr)
+ if (pdr_read_p (pdr))
+ res = isl_union_map_add_map (res, add_pdr_constraints (pdr, pbb));
}
- fprintf (file, ")\n");
-}
-
-/* Prints to STDERR the poly_ddr_p PDDR. */
-
-DEBUG_FUNCTION void
-debug_pddr (poly_ddr_p pddr)
-{
- print_pddr (stderr, pddr);
-}
-
-
-/* Remove all the dimensions except alias information at dimension
- ALIAS_DIM. */
-
-static void
-build_alias_set_powerset (ppl_Pointset_Powerset_C_Polyhedron_t alias_powerset,
- ppl_dimension_type alias_dim)
-{
- ppl_dimension_type *ds;
- ppl_dimension_type access_dim;
- unsigned i, pos;
-
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (alias_powerset,
- &access_dim);
- ds = XNEWVEC (ppl_dimension_type, access_dim - 1);
- gcc_assert (alias_dim < access_dim);
-
- for (pos = 0, i = 0; i < access_dim; i++)
- if (i != alias_dim)
- ds[pos++] = i;
-
- ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions (alias_powerset,
- ds,
- access_dim - 1);
- free (ds);
-}
-
-/* Return true when PDR1 and PDR2 may alias. */
-
-static bool
-poly_drs_may_alias_p (poly_dr_p pdr1, poly_dr_p pdr2)
-{
- ppl_Pointset_Powerset_C_Polyhedron_t alias_powerset1, alias_powerset2;
- ppl_Pointset_Powerset_C_Polyhedron_t accesses1 = PDR_ACCESSES (pdr1);
- ppl_Pointset_Powerset_C_Polyhedron_t accesses2 = PDR_ACCESSES (pdr2);
- ppl_dimension_type alias_dim1 = pdr_alias_set_dim (pdr1);
- ppl_dimension_type alias_dim2 = pdr_alias_set_dim (pdr2);
- int empty_p;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&alias_powerset1, accesses1);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&alias_powerset2, accesses2);
-
- build_alias_set_powerset (alias_powerset1, alias_dim1);
- build_alias_set_powerset (alias_powerset2, alias_dim2);
-
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign
- (alias_powerset1, alias_powerset2);
-
- empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (alias_powerset1);
-
- ppl_delete_Pointset_Powerset_C_Polyhedron (alias_powerset1);
- ppl_delete_Pointset_Powerset_C_Polyhedron (alias_powerset2);
-
- return !empty_p;
-}
-
-/* Swap [cut0, ..., cut1] to the end of DR: "a CUT0 b CUT1 c" is
- transformed into "a CUT0 c CUT1' b"
-
- Add NB0 zeros before "a": "00...0 a CUT0 c CUT1' b"
- Add NB1 zeros between "a" and "c": "00...0 a 00...0 c CUT1' b"
- Add DIM - NB0 - NB1 - PDIM zeros between "c" and "b":
- "00...0 a 00...0 c 00...0 b". */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-map_dr_into_dep_poly (graphite_dim_t dim,
- ppl_Pointset_Powerset_C_Polyhedron_t dr,
- graphite_dim_t cut0, graphite_dim_t cut1,
- graphite_dim_t nb0, graphite_dim_t nb1)
-{
- ppl_dimension_type pdim;
- ppl_dimension_type *map;
- ppl_Pointset_Powerset_C_Polyhedron_t res;
- ppl_dimension_type i;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&res, dr);
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (res, &pdim);
-
- map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, pdim);
-
- /* First mapping: move 'g' vector to right position. */
- for (i = 0; i < cut0; i++)
- map[i] = i;
-
- for (i = cut0; i < cut1; i++)
- map[i] = pdim - cut1 + i;
-
- for (i = cut1; i < pdim; i++)
- map[i] = cut0 + i - cut1;
-
- ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (res, map, pdim);
- free (map);
-
- /* After swapping 's' and 'g' vectors, we have to update a new cut. */
- cut1 = pdim - cut1 + cut0;
-
- ppl_insert_dimensions_pointset (res, 0, nb0);
- ppl_insert_dimensions_pointset (res, nb0 + cut0, nb1);
- ppl_insert_dimensions_pointset (res, nb0 + nb1 + cut1,
- dim - nb0 - nb1 - pdim);
-
return res;
}
-/* Builds subscript equality constraints. */
+/* Returns all the memory must writes in SCOP. */
-static ppl_Pointset_Powerset_C_Polyhedron_t
-dr_equality_constraints (graphite_dim_t dim,
- graphite_dim_t pos, graphite_dim_t nb_subscripts)
+static isl_union_map *
+scop_get_must_writes (scop_p scop, VEC (poly_bb_p, heap) *pbbs)
{
- ppl_Polyhedron_t eqs;
- ppl_Pointset_Powerset_C_Polyhedron_t res;
- graphite_dim_t i;
-
- ppl_new_C_Polyhedron_from_space_dimension (&eqs, dim, 0);
+ int i, j;
+ poly_bb_p pbb;
+ poly_dr_p pdr;
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_union_map *res = isl_union_map_empty (space);
- for (i = 0; i < nb_subscripts; i++)
+ FOR_EACH_VEC_ELT (poly_bb_p, pbbs, i, pbb)
{
- ppl_Constraint_t cstr
- = ppl_build_relation (dim, pos + i, pos + i + nb_subscripts,
- 0, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Polyhedron_add_constraint (eqs, cstr);
- ppl_delete_Constraint (cstr);
+ FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), j, pdr)
+ if (pdr_write_p (pdr))
+ res = isl_union_map_add_map (res, add_pdr_constraints (pdr, pbb));
}
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, eqs);
- ppl_delete_Polyhedron (eqs);
return res;
}
-/* Builds scheduling inequality constraints: when DIRECTION is
- 1 builds a GE constraint,
- 0 builds an EQ constraint,
- -1 builds a LE constraint.
- DIM is the dimension of the scheduling space.
- POS and POS + OFFSET are the dimensions that are related. */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-build_pairwise_scheduling (graphite_dim_t dim,
- graphite_dim_t pos,
- graphite_dim_t offset,
- int direction)
-{
- ppl_Pointset_Powerset_C_Polyhedron_t res;
- ppl_Polyhedron_t equalities;
- ppl_Constraint_t cstr;
- graphite_dim_t a = pos;
- graphite_dim_t b = pos + offset;
+/* Returns all the memory may writes in SCOP. */
- ppl_new_C_Polyhedron_from_space_dimension (&equalities, dim, 0);
+static isl_union_map *
+scop_get_may_writes (scop_p scop, VEC (poly_bb_p, heap) *pbbs)
+{
+ int i, j;
+ poly_bb_p pbb;
+ poly_dr_p pdr;
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_union_map *res = isl_union_map_empty (space);
- switch (direction)
+ FOR_EACH_VEC_ELT (poly_bb_p, pbbs, i, pbb)
{
- case 1:
- /* Builds "a + 1 <= b. */
- cstr = ppl_build_relation (dim, a, b, 1,
- PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL);
- break;
-
- case 0:
- /* Builds "a = b. */
- cstr = ppl_build_relation (dim, a, b, 0,
- PPL_CONSTRAINT_TYPE_EQUAL);
- break;
-
- case -1:
- /* Builds "a >= b + 1. */
- cstr = ppl_build_relation (dim, a, b, -1,
- PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- break;
-
- default:
- gcc_unreachable ();
+ FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), j, pdr)
+ if (pdr_may_write_p (pdr))
+ res = isl_union_map_add_map (res, add_pdr_constraints (pdr, pbb));
}
- ppl_Polyhedron_add_constraint (equalities, cstr);
- ppl_delete_Constraint (cstr);
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, equalities);
- ppl_delete_Polyhedron (equalities);
return res;
}
-/* Add to a non empty polyhedron BAG the precedence constraints for
- the lexicographical comparison of time vectors in BAG following the
- lexicographical order. DIM is the dimension of the polyhedron BAG.
- TDIM is the number of loops common to the two statements that are
- compared lexicographically, i.e. the number of loops containing
- both statements. OFFSET is the number of dimensions needed to
- represent the first statement, i.e. dimT1 + dimI1 in the layout of
- the BAG polyhedron: T1|I1|T2|I2|S1|S2|G. When DIRECTION is set to
- 1, compute the direct dependence from PDR1 to PDR2, and when
- DIRECTION is -1, compute the reversed dependence relation, from
- PDR2 to PDR1. */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-build_lexicographical_constraint (ppl_Pointset_Powerset_C_Polyhedron_t bag,
- graphite_dim_t dim,
- graphite_dim_t tdim,
- graphite_dim_t offset,
- int direction)
-{
- graphite_dim_t i;
- ppl_Pointset_Powerset_C_Polyhedron_t res, lex;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&res, dim, 1);
-
- lex = build_pairwise_scheduling (dim, 0, offset, direction);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (lex, bag);
-
- if (!ppl_powerset_is_empty (lex))
- ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (res, lex);
+/* Returns all the original schedules in SCOP. */
- ppl_delete_Pointset_Powerset_C_Polyhedron (lex);
+static isl_union_map *
+scop_get_original_schedule (scop_p scop, VEC (poly_bb_p, heap) *pbbs)
+{
+ int i;
+ poly_bb_p pbb;
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_union_map *res = isl_union_map_empty (space);
- for (i = 0; i < tdim - 1; i++)
+ FOR_EACH_VEC_ELT (poly_bb_p, pbbs, i, pbb)
{
- ppl_Pointset_Powerset_C_Polyhedron_t sceq;
-
- sceq = build_pairwise_scheduling (dim, i, offset, 0);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (bag, sceq);
- ppl_delete_Pointset_Powerset_C_Polyhedron (sceq);
-
- if (ppl_powerset_is_empty (bag))
- break;
-
- lex = build_pairwise_scheduling (dim, i + 1, offset, direction);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (lex, bag);
-
- if (!ppl_powerset_is_empty (lex))
- ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (res, lex);
-
- ppl_delete_Pointset_Powerset_C_Polyhedron (lex);
+ res = isl_union_map_add_map
+ (res, constrain_domain (isl_map_copy (pbb->schedule),
+ isl_set_copy (pbb->domain)));
}
return res;
}
-/* Build the dependence polyhedron for data references PDR1 and PDR2.
- The layout of the dependence polyhedron is:
-
- T1|I1|T2|I2|S1|S2|G
+/* Returns all the transformed schedules in SCOP. */
- with
- | T1 and T2 the scattering dimensions for PDR1 and PDR2
- | I1 and I2 the iteration domains
- | S1 and S2 the subscripts
- | G the global parameters.
-
- When DIRECTION is set to 1, compute the direct dependence from PDR1
- to PDR2, and when DIRECTION is -1, compute the reversed dependence
- relation, from PDR2 to PDR1. */
-
-static ppl_Pointset_Powerset_C_Polyhedron_t
-dependence_polyhedron (poly_dr_p pdr1, poly_dr_p pdr2,
- int direction, bool original_scattering_p)
+static isl_union_map *
+scop_get_transformed_schedule (scop_p scop, VEC (poly_bb_p, heap) *pbbs)
{
- poly_bb_p pbb1 = PDR_PBB (pdr1);
- poly_bb_p pbb2 = PDR_PBB (pdr2);
- scop_p scop = PBB_SCOP (pbb1);
- graphite_dim_t tdim1 = original_scattering_p ?
- pbb_nb_scattering_orig (pbb1) : pbb_nb_scattering_transform (pbb1);
- graphite_dim_t tdim2 = original_scattering_p ?
- pbb_nb_scattering_orig (pbb2) : pbb_nb_scattering_transform (pbb2);
- graphite_dim_t ddim1 = pbb_dim_iter_domain (pbb1);
- graphite_dim_t ddim2 = pbb_dim_iter_domain (pbb2);
- graphite_dim_t sdim1 = PDR_NB_SUBSCRIPTS (pdr1) + 1;
- graphite_dim_t sdim2 = PDR_NB_SUBSCRIPTS (pdr2) + 1;
- graphite_dim_t gdim = scop_nb_params (scop);
- graphite_dim_t dim1 = pdr_dim (pdr1);
- graphite_dim_t dim2 = pdr_dim (pdr2);
- graphite_dim_t dim = tdim1 + tdim2 + dim1 + dim2 - gdim;
- ppl_Pointset_Powerset_C_Polyhedron_t res;
- ppl_Pointset_Powerset_C_Polyhedron_t idr1, idr2;
- ppl_Pointset_Powerset_C_Polyhedron_t sc1, sc2, dreq;
- ppl_Pointset_Powerset_C_Polyhedron_t lex;
-
- gcc_assert (PBB_SCOP (pbb1) == PBB_SCOP (pbb2));
-
- combine_context_id_scat (&sc1, pbb1, original_scattering_p);
- combine_context_id_scat (&sc2, pbb2, original_scattering_p);
-
- ppl_insert_dimensions_pointset (sc1, tdim1 + ddim1,
- tdim2 + ddim2 + sdim1 + sdim2);
-
- ppl_insert_dimensions_pointset (sc2, 0, tdim1 + ddim1);
- ppl_insert_dimensions_pointset (sc2, tdim1 + ddim1 + tdim2 + ddim2,
- sdim1 + sdim2);
-
- idr1 = map_dr_into_dep_poly (dim, PDR_ACCESSES (pdr1), ddim1, ddim1 + gdim,
- tdim1, tdim2 + ddim2);
- idr2 = map_dr_into_dep_poly (dim, PDR_ACCESSES (pdr2), ddim2, ddim2 + gdim,
- tdim1 + ddim1 + tdim2, sdim1);
-
- /* Now add the subscript equalities. */
- dreq = dr_equality_constraints (dim, tdim1 + ddim1 + tdim2 + ddim2, sdim1);
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&res, dim, 0);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, sc1);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, sc2);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, idr1);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, idr2);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, dreq);
- ppl_delete_Pointset_Powerset_C_Polyhedron (sc1);
- ppl_delete_Pointset_Powerset_C_Polyhedron (sc2);
- ppl_delete_Pointset_Powerset_C_Polyhedron (idr1);
- ppl_delete_Pointset_Powerset_C_Polyhedron (idr2);
- ppl_delete_Pointset_Powerset_C_Polyhedron (dreq);
-
- if (ppl_powerset_is_empty (res))
- return NULL;
-
- lex = build_lexicographical_constraint (res, dim, MIN (tdim1, tdim2),
- tdim1 + ddim1, direction);
- ppl_delete_Pointset_Powerset_C_Polyhedron (res);
-
- return lex;
-}
-
-/* Build the dependence polyhedron for data references PDR1 and PDR2.
- If possible use already cached information.
-
- When DIRECTION is set to 1, compute the direct dependence from PDR1
- to PDR2, and when DIRECTION is -1, compute the reversed dependence
- relation, from PDR2 to PDR1. */
-
-static poly_ddr_p
-new_poly_ddr (poly_dr_p pdr1, poly_dr_p pdr2,
- int direction, bool original_scattering_p)
-{
- PTR *x = NULL;
- poly_ddr_p res;
- bool may_alias;
-
- /* Return the PDDR from the cache if it already has been computed. */
- if (original_scattering_p)
- {
- struct poly_ddr tmp;
- scop_p scop = PBB_SCOP (PDR_PBB (pdr1));
-
- tmp.source = pdr1;
- tmp.sink = pdr2;
- x = htab_find_slot (SCOP_ORIGINAL_PDDRS (scop),
- &tmp, INSERT);
-
- if (x && *x)
- return (poly_ddr_p) *x;
- }
-
- res = XNEW (struct poly_ddr);
- PDDR_SOURCE (res) = pdr1;
- PDDR_SINK (res) = pdr2;
- PDDR_DDP (res) = NULL;
- PDDR_ORIGINAL_SCATTERING_P (res) = original_scattering_p;
- PDDR_KIND (res) = unknown_dependence;
-
- may_alias = poly_drs_may_alias_p (pdr1, pdr2);
-
- if (!(pdr_read_p (pdr1) && pdr_read_p (pdr2))
- && PDR_BASE_OBJECT_SET (pdr1) != PDR_BASE_OBJECT_SET (pdr2)
- && may_alias)
- PDDR_KIND (res) = unknown_dependence;
+ int i;
+ poly_bb_p pbb;
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_union_map *res = isl_union_map_empty (space);
- else if (!(pdr_read_p (pdr1) && pdr_read_p (pdr2))
- && same_pdr_p (pdr1, pdr2)
- && may_alias)
+ FOR_EACH_VEC_ELT (poly_bb_p, pbbs, i, pbb)
{
- PDDR_DDP (res) = dependence_polyhedron (pdr1, pdr2, direction,
- original_scattering_p);
- if (PDDR_DDP (res))
- PDDR_KIND (res) = has_dependence;
- else
- PDDR_KIND (res) = no_dependence;
+ res = isl_union_map_add_map
+ (res, constrain_domain (isl_map_copy (pbb->transformed),
+ isl_set_copy (pbb->domain)));
}
- else
- PDDR_KIND (res) = no_dependence;
-
- if (original_scattering_p)
- *x = res;
return res;
}
-/* Free the data dependence relation poly_ddr_p P. */
+/* Helper function used on each MAP of a isl_union_map. Computes the
+ maximal output dimension. */
-void
-free_poly_ddr (void *p)
+static int
+max_number_of_out_dimensions (__isl_take isl_map *map, void *user)
{
- poly_ddr_p pddr = (poly_ddr_p) p;
- ppl_delete_Pointset_Powerset_C_Polyhedron (PDDR_DDP (pddr));
- free (pddr);
-}
+ int global_max = *((int *) user);
+ isl_space *space = isl_map_get_space (map);
+ int nb_out = isl_space_dim (space, isl_dim_out);
-/* Return true when the data dependence relation between the data
- references PDR1 belonging to PBB1 and PDR2 is part of a
- reduction. */
+ if (global_max < nb_out)
+ *((int *) user) = nb_out;
-static inline bool
-reduction_dr_1 (poly_bb_p pbb1, poly_dr_p pdr1, poly_dr_p pdr2)
-{
- int i;
- poly_dr_p pdr;
-
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb1), i, pdr)
- if (PDR_TYPE (pdr) == PDR_WRITE
- && same_pdr_p (pdr, pdr1) && same_pdr_p (pdr, pdr2))
- return true;
-
- return false;
+ isl_map_free (map);
+ isl_space_free (space);
+ return 0;
}
-/* Return true when the data dependence relation between the data
- references PDR1 belonging to PBB1 and PDR2 belonging to PBB2 is
- part of a reduction. */
+/* Extends the output dimension of MAP to MAX dimensions. */
-static inline bool
-reduction_dr_p (poly_dr_p pdr1, poly_dr_p pdr2)
+static __isl_give isl_map *
+extend_map (__isl_take isl_map *map, int max)
{
- poly_bb_p pbb1 = PDR_PBB (pdr1);
- poly_bb_p pbb2 = PDR_PBB (pdr2);
-
- if (PBB_IS_REDUCTION (pbb1))
- return reduction_dr_1 (pbb1, pdr1, pdr2);
+ isl_space *space = isl_map_get_space (map);
+ int n = isl_space_dim (space, isl_dim_out);
- if (PBB_IS_REDUCTION (pbb2))
- return reduction_dr_1 (pbb2, pdr2, pdr1);
-
- return false;
+ isl_space_free (space);
+ return isl_map_add_dims (map, isl_dim_out, max - n);
}
-/* Returns true when the PBB_TRANSFORMED_SCATTERING functions of PBB1
- and PBB2 respect the data dependences of PBB_ORIGINAL_SCATTERING
- functions. */
+/* Structure used to pass parameters to extend_schedule_1. */
-static bool
-graphite_legal_transform_dr (poly_dr_p pdr1, poly_dr_p pdr2)
-{
- ppl_Pointset_Powerset_C_Polyhedron_t po, pt;
- graphite_dim_t ddim1, otdim1, otdim2, ttdim1, ttdim2;
- ppl_Pointset_Powerset_C_Polyhedron_t po_temp;
- ppl_dimension_type pdim;
- bool is_empty_p;
- poly_ddr_p opddr, tpddr;
- poly_bb_p pbb1, pbb2;
-
- if (reduction_dr_p (pdr1, pdr2))
- return true;
+struct extend_schedule_str {
+ int max;
+ isl_union_map *umap;
+};
- /* We build the reverse dependence relation for the transformed
- scattering, such that when we intersect it with the original PO,
- we get an empty intersection when the transform is legal:
- i.e. the transform should reverse no dependences, and so PT, the
- reversed transformed PDDR, should have no constraint from PO. */
- opddr = new_poly_ddr (pdr1, pdr2, 1, true);
+/* Helper function for extend_schedule. */
- if (PDDR_KIND (opddr) == unknown_dependence)
- return false;
-
- /* There are no dependences between PDR1 and PDR2 in the original
- version of the program, or after the transform, so the
- transform is legal. */
- if (pddr_is_empty (opddr))
- return true;
-
- tpddr = new_poly_ddr (pdr1, pdr2, -1, false);
-
- if (PDDR_KIND (tpddr) == unknown_dependence)
- {
- free_poly_ddr (tpddr);
- return false;
- }
-
- if (pddr_is_empty (tpddr))
- {
- free_poly_ddr (tpddr);
- return true;
- }
-
- po = PDDR_DDP (opddr);
- pt = PDDR_DDP (tpddr);
-
- /* Copy PO into PO_TEMP, such that PO is not destroyed. PO is
- stored in a cache and should not be modified or freed. */
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (po, &pdim);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&po_temp,
- pdim, 0);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (po_temp, po);
-
- /* Extend PO and PT to have the same dimensions. */
- pbb1 = PDR_PBB (pdr1);
- pbb2 = PDR_PBB (pdr2);
- ddim1 = pbb_dim_iter_domain (pbb1);
- otdim1 = pbb_nb_scattering_orig (pbb1);
- otdim2 = pbb_nb_scattering_orig (pbb2);
- ttdim1 = pbb_nb_scattering_transform (pbb1);
- ttdim2 = pbb_nb_scattering_transform (pbb2);
- ppl_insert_dimensions_pointset (po_temp, otdim1, ttdim1);
- ppl_insert_dimensions_pointset (po_temp, otdim1 + ttdim1 + ddim1 + otdim2,
- ttdim2);
- ppl_insert_dimensions_pointset (pt, 0, otdim1);
- ppl_insert_dimensions_pointset (pt, otdim1 + ttdim1 + ddim1, otdim2);
-
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (po_temp, pt);
- is_empty_p = ppl_powerset_is_empty (po_temp);
-
- ppl_delete_Pointset_Powerset_C_Polyhedron (po_temp);
- free_poly_ddr (tpddr);
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "\nloop carries dependency.\n");
-
- return is_empty_p;
-}
-
-/* Return true when the data dependence relation for PBB1 and PBB2 is
- part of a reduction. */
-
-static inline bool
-reduction_ddr_p (poly_bb_p pbb1, poly_bb_p pbb2)
+static int
+extend_schedule_1 (__isl_take isl_map *map, void *user)
{
- return pbb1 == pbb2 && PBB_IS_REDUCTION (pbb1);
+ struct extend_schedule_str *str = (struct extend_schedule_str *) user;
+ str->umap = isl_union_map_add_map (str->umap, extend_map (map, str->max));
+ return 0;
}
-/* Iterates over the data references of PBB1 and PBB2 and detect
- whether the transformed schedule is correct. */
+/* Return a relation that has uniform output dimensions. */
-static bool
-graphite_legal_transform_bb (poly_bb_p pbb1, poly_bb_p pbb2)
+__isl_give isl_union_map *
+extend_schedule (__isl_take isl_union_map *x)
{
- int i, j;
- poly_dr_p pdr1, pdr2;
-
- if (!PBB_PDR_DUPLICATES_REMOVED (pbb1))
- pbb_remove_duplicate_pdrs (pbb1);
+ int max = 0;
+ int res;
+ struct extend_schedule_str str;
- if (!PBB_PDR_DUPLICATES_REMOVED (pbb2))
- pbb_remove_duplicate_pdrs (pbb2);
+ res = isl_union_map_foreach_map (x, max_number_of_out_dimensions, (void *) &max);
+ gcc_assert (res == 0);
- if (reduction_ddr_p (pbb1, pbb2))
- return true;
+ str.max = max;
+ str.umap = isl_union_map_empty (isl_union_map_get_space (x));
+ res = isl_union_map_foreach_map (x, extend_schedule_1, (void *) &str);
+ gcc_assert (res == 0);
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb1), i, pdr1)
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb2), j, pdr2)
- if (!graphite_legal_transform_dr (pdr1, pdr2))
- return false;
-
- return true;
+ isl_union_map_free (x);
+ return str.umap;
}
-/* Iterates over the SCOP and detect whether the transformed schedule
- is correct. */
+/* Applies SCHEDULE to the in and out dimensions of the dependences
+ DEPS and return the resulting relation. */
-bool
-graphite_legal_transform (scop_p scop)
+static isl_map *
+apply_schedule_on_deps (__isl_keep isl_union_map *schedule,
+ __isl_keep isl_union_map *deps)
{
- int i, j;
- poly_bb_p pbb1, pbb2;
+ isl_map *x;
+ isl_union_map *ux, *trans;
- timevar_push (TV_GRAPHITE_DATA_DEPS);
+ trans = isl_union_map_copy (schedule);
+ trans = extend_schedule (trans);
+ ux = isl_union_map_copy (deps);
+ ux = isl_union_map_apply_domain (ux, isl_union_map_copy (trans));
+ ux = isl_union_map_apply_range (ux, trans);
+ x = isl_map_from_union_map (ux);
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb1)
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), j, pbb2)
- if (!graphite_legal_transform_bb (pbb1, pbb2))
- {
- timevar_pop (TV_GRAPHITE_DATA_DEPS);
- return false;
- }
-
- timevar_pop (TV_GRAPHITE_DATA_DEPS);
- return true;
+ return x;
}
-/* Returns TRUE when the dependence polyhedron between PDR1 and
- PDR2 represents a loop carried dependence at level LEVEL. */
+/* Return true when SCHEDULE does not violate the data DEPS: that is
+ when the intersection of LEX with the DEPS transformed by SCHEDULE
+ is empty. LEX is the relation in which the outputs occur before
+ the inputs. */
static bool
-graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2,
- int level)
+no_violations (__isl_keep isl_union_map *schedule,
+ __isl_keep isl_union_map *deps)
{
- ppl_Pointset_Powerset_C_Polyhedron_t po;
- ppl_Pointset_Powerset_C_Polyhedron_t eqpp;
- poly_bb_p pbb = PDR_PBB (pdr1);
- graphite_dim_t tdim1 = pbb_nb_scattering_transform (pbb);
- graphite_dim_t ddim1 = pbb_dim_iter_domain (pbb);
- ppl_dimension_type dim;
- bool empty_p;
- poly_ddr_p pddr = new_poly_ddr (pdr1, pdr2, 1, false);
- graphite_dim_t pos;
-
- if (PDDR_KIND (pddr) == unknown_dependence)
- {
- free_poly_ddr (pddr);
- return true;
- }
+ bool res;
+ isl_space *space;
+ isl_map *lex, *x;
- if (pddr_is_empty (pddr))
- {
- free_poly_ddr (pddr);
- return false;
- }
-
- po = PDDR_DDP (pddr);
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (po, &dim);
- pos = psct_dynamic_dim (pbb, level);
- eqpp = build_pairwise_scheduling (dim, pos, tdim1 + ddim1, 1);
-
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (eqpp, po);
- empty_p = ppl_powerset_is_empty (eqpp);
+ if (isl_union_map_is_empty (deps))
+ return true;
- ppl_delete_Pointset_Powerset_C_Polyhedron (eqpp);
- free_poly_ddr (pddr);
+ x = apply_schedule_on_deps (schedule, deps);
+ space = isl_map_get_space (x);
+ space = isl_space_range (space);
+ lex = isl_map_lex_ge (space);
+ x = isl_map_intersect (x, lex);
+ res = isl_map_is_empty (x);
- return !empty_p;
+ isl_map_free (x);
+ return res;
}
-/* Check data dependency between PBB1 and PBB2 at level LEVEL. */
+/* Return true when DEPS is non empty and the intersection of LEX with
+ the DEPS transformed by SCHEDULE is non empty. LEX is the relation
+ in which all the inputs before DEPTH occur at the same time as the
+ output, and the input at DEPTH occurs before output. */
-bool
-dependency_between_pbbs_p (poly_bb_p pbb1, poly_bb_p pbb2, int level)
+static bool
+carries_deps (__isl_keep isl_union_map *schedule,
+ __isl_keep isl_union_map *deps,
+ int depth)
{
- int i, j;
- poly_dr_p pdr1, pdr2;
-
- timevar_push (TV_GRAPHITE_DATA_DEPS);
+ bool res;
+ int idx, i;
+ isl_space *space;
+ isl_map *lex, *x;
+ isl_constraint *ineq;
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb1), i, pdr1)
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb2), j, pdr2)
- if (graphite_carried_dependence_level_k (pdr1, pdr2, level))
- {
- timevar_pop (TV_GRAPHITE_DATA_DEPS);
- return true;
- }
+ if (isl_union_map_is_empty (deps))
+ return false;
- timevar_pop (TV_GRAPHITE_DATA_DEPS);
- return false;
+ x = apply_schedule_on_deps (schedule, deps);
+ space = isl_map_get_space (x);
+ space = isl_space_range (space);
+ lex = isl_map_lex_le (space);
+ space = isl_map_get_space (x);
+ ineq = isl_inequality_alloc (isl_local_space_from_space (space));
+
+ idx = 2 * depth + 1;
+ for (i = 0; i < idx; i++)
+ lex = isl_map_equate (lex, isl_dim_in, i, isl_dim_out, i);
+
+ /* in + 1 <= out */
+ ineq = isl_constraint_set_coefficient_si (ineq, isl_dim_out, idx, 1);
+ ineq = isl_constraint_set_coefficient_si (ineq, isl_dim_in, idx, -1);
+ ineq = isl_constraint_set_constant_si (ineq, -1);
+ lex = isl_map_add_constraint (lex, ineq);
+ x = isl_map_intersect (x, lex);
+ res = !isl_map_is_empty (x);
+
+ isl_map_free (x);
+ return res;
}
-/* When ORIG is true, pretty print to FILE all the original data
- dependences of SCoP in DOT format, otherwise print the transformed
- data deps. */
+/* Subtract from the RAW, WAR, and WAW dependences those relations
+ that have been marked as belonging to an associative commutative
+ reduction. */
static void
-dot_deps_stmt_2 (FILE *file, scop_p scop, bool orig)
+subtract_commutative_associative_deps (scop_p scop,
+ VEC (poly_bb_p, heap) *pbbs,
+ isl_union_map *original,
+ isl_union_map **must_raw,
+ isl_union_map **may_raw,
+ isl_union_map **must_raw_no_source,
+ isl_union_map **may_raw_no_source,
+ isl_union_map **must_war,
+ isl_union_map **may_war,
+ isl_union_map **must_war_no_source,
+ isl_union_map **may_war_no_source,
+ isl_union_map **must_waw,
+ isl_union_map **may_waw,
+ isl_union_map **must_waw_no_source,
+ isl_union_map **may_waw_no_source)
{
- int i, j, k, l;
- poly_bb_p pbb1, pbb2;
- poly_dr_p pdr1, pdr2;
+ int i, j;
+ poly_bb_p pbb;
+ poly_dr_p pdr;
+ isl_space *space = isl_set_get_space (scop->context);
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb1)
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), j, pbb2)
+ FOR_EACH_VEC_ELT (poly_bb_p, pbbs, i, pbb)
+ if (PBB_IS_REDUCTION (pbb))
{
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb1), k, pdr1)
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb2), l, pdr2)
- {
- poly_ddr_p pddr = new_poly_ddr (pdr1, pdr2, 1, orig);
-
- if (!pddr_is_empty (pddr))
- {
- fprintf (file, orig ? "OS%d -> OS%d\n" : "TS%d -> TS%d\n",
- pbb_index (pbb1), pbb_index (pbb2));
-
- free_poly_ddr (pddr);
- goto done;
- }
-
- free_poly_ddr (pddr);
- }
- done:;
+ int res;
+ isl_union_map *r = isl_union_map_empty (isl_space_copy (space));
+ isl_union_map *must_w = isl_union_map_empty (isl_space_copy (space));
+ isl_union_map *may_w = isl_union_map_empty (isl_space_copy (space));
+ isl_union_map *all_w;
+ isl_union_map *empty;
+ isl_union_map *x_must_raw;
+ isl_union_map *x_may_raw;
+ isl_union_map *x_must_raw_no_source;
+ isl_union_map *x_may_raw_no_source;
+ isl_union_map *x_must_war;
+ isl_union_map *x_may_war;
+ isl_union_map *x_must_war_no_source;
+ isl_union_map *x_may_war_no_source;
+ isl_union_map *x_must_waw;
+ isl_union_map *x_may_waw;
+ isl_union_map *x_must_waw_no_source;
+ isl_union_map *x_may_waw_no_source;
+
+ FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), j, pdr)
+ if (pdr_read_p (pdr))
+ r = isl_union_map_add_map (r, add_pdr_constraints (pdr, pbb));
+
+ FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), j, pdr)
+ if (pdr_write_p (pdr))
+ must_w = isl_union_map_add_map (must_w,
+ add_pdr_constraints (pdr, pbb));
+
+ FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), j, pdr)
+ if (pdr_may_write_p (pdr))
+ may_w = isl_union_map_add_map (may_w,
+ add_pdr_constraints (pdr, pbb));
+
+ all_w = isl_union_map_union
+ (isl_union_map_copy (must_w), isl_union_map_copy (may_w));
+ empty = isl_union_map_empty (isl_union_map_get_space (all_w));
+
+ res = isl_union_map_compute_flow (isl_union_map_copy (r),
+ isl_union_map_copy (must_w),
+ isl_union_map_copy (may_w),
+ isl_union_map_copy (original),
+ &x_must_raw, &x_may_raw,
+ &x_must_raw_no_source,
+ &x_may_raw_no_source);
+ gcc_assert (res == 0);
+ res = isl_union_map_compute_flow (isl_union_map_copy (all_w),
+ r, empty,
+ isl_union_map_copy (original),
+ &x_must_war, &x_may_war,
+ &x_must_war_no_source,
+ &x_may_war_no_source);
+ gcc_assert (res == 0);
+ res = isl_union_map_compute_flow (all_w, must_w, may_w,
+ isl_union_map_copy (original),
+ &x_must_waw, &x_may_waw,
+ &x_must_waw_no_source,
+ &x_may_waw_no_source);
+ gcc_assert (res == 0);
+
+ *must_raw = isl_union_map_subtract (*must_raw, x_must_raw);
+ *may_raw = isl_union_map_subtract (*may_raw, x_may_raw);
+ *must_raw_no_source = isl_union_map_subtract (*must_raw_no_source,
+ x_must_raw_no_source);
+ *may_raw_no_source = isl_union_map_subtract (*may_raw_no_source,
+ x_may_raw_no_source);
+ *must_war = isl_union_map_subtract (*must_war, x_must_war);
+ *may_war = isl_union_map_subtract (*may_war, x_may_war);
+ *must_war_no_source = isl_union_map_subtract (*must_war_no_source,
+ x_must_war_no_source);
+ *may_war_no_source = isl_union_map_subtract (*may_war_no_source,
+ x_may_war_no_source);
+ *must_waw = isl_union_map_subtract (*must_waw, x_must_waw);
+ *may_waw = isl_union_map_subtract (*may_waw, x_may_waw);
+ *must_waw_no_source = isl_union_map_subtract (*must_waw_no_source,
+ x_must_waw_no_source);
+ *may_waw_no_source = isl_union_map_subtract (*may_waw_no_source,
+ x_may_waw_no_source);
}
+
+ isl_union_map_free (original);
+ isl_space_free (space);
}
-/* Pretty print to FILE all the data dependences of SCoP in DOT
- format. */
+/* Compute the original data dependences in SCOP for all the reads and
+ writes in PBBS. */
-static void
-dot_deps_stmt_1 (FILE *file, scop_p scop)
+void
+compute_deps (scop_p scop, VEC (poly_bb_p, heap) *pbbs,
+ isl_union_map **must_raw,
+ isl_union_map **may_raw,
+ isl_union_map **must_raw_no_source,
+ isl_union_map **may_raw_no_source,
+ isl_union_map **must_war,
+ isl_union_map **may_war,
+ isl_union_map **must_war_no_source,
+ isl_union_map **may_war_no_source,
+ isl_union_map **must_waw,
+ isl_union_map **may_waw,
+ isl_union_map **must_waw_no_source,
+ isl_union_map **may_waw_no_source)
{
- fputs ("digraph all {\n", file);
-
- dot_deps_stmt_2 (file, scop, true);
- dot_deps_stmt_2 (file, scop, false);
-
- fputs ("}\n\n", file);
+ isl_union_map *reads = scop_get_reads (scop, pbbs);
+ isl_union_map *must_writes = scop_get_must_writes (scop, pbbs);
+ isl_union_map *may_writes = scop_get_may_writes (scop, pbbs);
+ isl_union_map *all_writes = isl_union_map_union
+ (isl_union_map_copy (must_writes), isl_union_map_copy (may_writes));
+ isl_space *space = isl_union_map_get_space (all_writes);
+ isl_union_map *empty = isl_union_map_empty (space);
+ isl_union_map *original = scop_get_original_schedule (scop, pbbs);
+ int res;
+
+ res = isl_union_map_compute_flow (isl_union_map_copy (reads),
+ isl_union_map_copy (must_writes),
+ isl_union_map_copy (may_writes),
+ isl_union_map_copy (original),
+ must_raw, may_raw, must_raw_no_source,
+ may_raw_no_source);
+ gcc_assert (res == 0);
+ res = isl_union_map_compute_flow (isl_union_map_copy (all_writes),
+ reads, empty,
+ isl_union_map_copy (original),
+ must_war, may_war, must_war_no_source,
+ may_war_no_source);
+ gcc_assert (res == 0);
+ res = isl_union_map_compute_flow (all_writes, must_writes, may_writes,
+ isl_union_map_copy (original),
+ must_waw, may_waw, must_waw_no_source,
+ may_waw_no_source);
+ gcc_assert (res == 0);
+
+ subtract_commutative_associative_deps
+ (scop, pbbs, original,
+ must_raw, may_raw, must_raw_no_source, may_raw_no_source,
+ must_war, may_war, must_war_no_source, may_war_no_source,
+ must_waw, may_waw, must_waw_no_source, may_waw_no_source);
}
-/* When ORIG is true, pretty print to FILE all the original data
- dependences of SCoP in DOT format, otherwise print the transformed
- data deps. */
+/* Given a TRANSFORM, check whether it respects the original
+ dependences in SCOP. Returns true when TRANSFORM is a safe
+ transformation. */
-static void
-dot_deps_2 (FILE *file, scop_p scop, bool orig)
+static bool
+transform_is_safe (scop_p scop, isl_union_map *transform)
{
- int i, j, k, l;
- poly_bb_p pbb1, pbb2;
- poly_dr_p pdr1, pdr2;
-
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb1)
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), j, pbb2)
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb1), k, pdr1)
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb2), l, pdr2)
- {
- poly_ddr_p pddr = new_poly_ddr (pdr1, pdr2, 1, orig);
-
- if (!pddr_is_empty (pddr))
- fprintf (file, orig
- ? "OS%d_D%d -> OS%d_D%d\n" : "TS%d_D%d -> TS%d_D%d\n",
- pbb_index (pbb1), PDR_ID (pdr1),
- pbb_index (pbb2), PDR_ID (pdr2));
-
- free_poly_ddr (pddr);
- }
+ bool res;
+
+ if (!scop->must_raw)
+ compute_deps (scop, SCOP_BBS (scop),
+ &scop->must_raw, &scop->may_raw,
+ &scop->must_raw_no_source, &scop->may_raw_no_source,
+ &scop->must_war, &scop->may_war,
+ &scop->must_war_no_source, &scop->may_war_no_source,
+ &scop->must_waw, &scop->may_waw,
+ &scop->must_waw_no_source, &scop->may_waw_no_source);
+
+ res = (no_violations (transform, scop->must_raw)
+ && no_violations (transform, scop->may_raw)
+ && no_violations (transform, scop->must_war)
+ && no_violations (transform, scop->may_war)
+ && no_violations (transform, scop->must_waw)
+ && no_violations (transform, scop->may_waw));
+
+ isl_union_map_free (transform);
+ return res;
}
-/* Pretty print to FILE all the data dependences of SCoP in DOT
- format. */
+/* Return true when the SCOP transformed schedule is correct. */
-static void
-dot_deps_1 (FILE *file, scop_p scop)
+bool
+graphite_legal_transform (scop_p scop)
{
- fputs ("digraph all {\n", file);
+ int res;
+ isl_union_map *transform;
- dot_deps_2 (file, scop, true);
- dot_deps_2 (file, scop, false);
+ timevar_push (TV_GRAPHITE_DATA_DEPS);
+ transform = scop_get_transformed_schedule (scop, SCOP_BBS (scop));
+ res = transform_is_safe (scop, transform);
+ timevar_pop (TV_GRAPHITE_DATA_DEPS);
- fputs ("}\n\n", file);
+ return res;
}
-/* Display all the data dependences in SCoP using dotty. */
+/* Return true when the loop at DEPTH carries dependences. BODY is
+ the body of the loop. */
-DEBUG_FUNCTION void
-dot_deps (scop_p scop)
+static bool
+loop_level_carries_dependences (scop_p scop, VEC (poly_bb_p, heap) *body,
+ int depth)
{
- /* When debugging, enable the following code. This cannot be used
- in production compilers because it calls "system". */
-#if 0
- FILE *stream = fopen ("/tmp/scopdeps.dot", "w");
- gcc_assert (stream);
-
- dot_deps_1 (stream, scop);
- fclose (stream);
-
- system ("dotty /tmp/scopdeps.dot &");
-#else
- dot_deps_1 (stderr, scop);
-#endif
+ isl_union_map *transform = scop_get_transformed_schedule (scop, body);
+ isl_union_map *must_raw, *may_raw;
+ isl_union_map *must_war, *may_war;
+ isl_union_map *must_waw, *may_waw;
+ int res;
+
+ compute_deps (scop, body,
+ &must_raw, &may_raw, NULL, NULL,
+ &must_war, &may_war, NULL, NULL,
+ &must_waw, &may_waw, NULL, NULL);
+
+ res = (carries_deps (transform, must_raw, depth)
+ || carries_deps (transform, may_raw, depth)
+ || carries_deps (transform, must_war, depth)
+ || carries_deps (transform, may_war, depth)
+ || carries_deps (transform, must_waw, depth)
+ || carries_deps (transform, may_waw, depth));
+
+ isl_union_map_free (transform);
+ isl_union_map_free (must_raw);
+ isl_union_map_free (may_raw);
+ isl_union_map_free (must_war);
+ isl_union_map_free (may_war);
+ isl_union_map_free (must_waw);
+ isl_union_map_free (may_waw);
+ return res;
}
-/* Display all the statement dependences in SCoP using dotty. */
+/* Returns true when the loop L at level DEPTH is parallel.
+ BB_PBB_MAPPING is a map between a basic_block and its related
+ poly_bb_p. */
-DEBUG_FUNCTION void
-dot_deps_stmt (scop_p scop)
+bool
+loop_is_parallel_p (loop_p loop, htab_t bb_pbb_mapping, int depth)
{
- /* When debugging, enable the following code. This cannot be used
- in production compilers because it calls "system". */
-#if 0
- FILE *stream = fopen ("/tmp/scopdeps.dot", "w");
- gcc_assert (stream);
-
- dot_deps_stmt_1 (stream, scop);
- fclose (stream);
-
- system ("dotty /tmp/scopdeps.dot &");
-#else
- dot_deps_stmt_1 (stderr, scop);
-#endif
+ bool dependences;
+ scop_p scop;
+ VEC (poly_bb_p, heap) *body = VEC_alloc (poly_bb_p, heap, 3);
+
+ timevar_push (TV_GRAPHITE_DATA_DEPS);
+ scop = get_loop_body_pbbs (loop, bb_pbb_mapping, &body);
+ dependences = loop_level_carries_dependences (scop, body, depth);
+ VEC_free (poly_bb_p, heap, body);
+ timevar_pop (TV_GRAPHITE_DATA_DEPS);
+
+ return !dependences;
}
#endif
diff --git a/gcc/graphite-dependences.h b/gcc/graphite-dependences.h
deleted file mode 100644
index 5f2a4a03acc..00000000000
--- a/gcc/graphite-dependences.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Graphite polyhedral representation.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
- Contributed by Konrad Trifunovic <konrad.trifunovic@gmail.com>
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#ifndef GCC_GRAPHITE_DEPENDENCES_H
-#define GCC_GRAPHITE_DEPENDENCES_H
-
-extern bool graphite_legal_transform (scop_p);
-extern bool dependency_between_pbbs_p (poly_bb_p, poly_bb_p, int);
-
-enum poly_dependence_kind {
- unknown_dependence,
- no_dependence,
- has_dependence
-};
-
-/* Represents a Polyhedral Data Dependence Relation. */
-
-typedef struct poly_ddr
-{
- /* Source and sink data references of the dependence. */
- poly_dr_p source, sink;
-
- /* Data dependence polyhedron. */
- ppl_Pointset_Powerset_C_Polyhedron_t ddp;
-
- enum poly_dependence_kind kind;
-
- /* True when the dependence relation is for the original scattering. */
- bool original_scattering_p;
-
-} *poly_ddr_p;
-
-#define PDDR_SOURCE(PDDR) (PDDR->source)
-#define PDDR_SINK(PDDR) (PDDR->sink)
-#define PDDR_DDP(PDDR) (PDDR->ddp)
-#define PDDR_KIND(PDDR) (PDDR->kind)
-#define PDDR_ORIGINAL_SCATTERING_P(PDDR) (PDDR->original_scattering_p)
-
-extern int eq_poly_ddr_p (const void *, const void *);
-extern hashval_t hash_poly_ddr_p (const void *);
-extern void free_poly_ddr (void *);
-extern void dot_deps (scop_p);
-extern void dot_deps_stmt (scop_p);
-extern void print_pddr (FILE *, poly_ddr_p);
-extern void debug_pddr (poly_ddr_p);
-
-#endif
diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c
index ae3262a6a61..0a8a3bae58a 100644
--- a/gcc/graphite-interchange.c
+++ b/gcc/graphite-interchange.c
@@ -1,7 +1,7 @@
/* Interchange heuristics and transform for loop interchange on
polyhedral representation.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@amd.com> and
Harsha Jagasia <harsha.jagasia@amd.com>.
@@ -20,11 +20,23 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/aff.h>
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <isl/ilp.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-data-ref.h"
@@ -32,10 +44,9 @@ along with GCC; see the file COPYING3. If not see
#include "sese.h"
#ifdef HAVE_cloog
-#include "ppl_c.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
+/* XXX isl rewrite following comment */
/* Builds a linear expression, of dimension DIM, representing PDR's
memory access:
@@ -53,87 +64,90 @@ along with GCC; see the file COPYING3. If not see
where the expression itself is:
c_0 * s_0 + c_1 * s_1 + ... c_n * s_n. */
-static ppl_Linear_Expression_t
-build_linearized_memory_access (ppl_dimension_type offset, poly_dr_p pdr)
+static isl_constraint *
+build_linearized_memory_access (isl_map *map, poly_dr_p pdr)
{
- ppl_Linear_Expression_t res;
- ppl_Linear_Expression_t le;
- ppl_dimension_type i;
- ppl_dimension_type first = pdr_subscript_dim (pdr, 0);
- ppl_dimension_type last = pdr_subscript_dim (pdr, PDR_NB_SUBSCRIPTS (pdr));
- mpz_t size, sub_size;
- graphite_dim_t dim = offset + pdr_dim (pdr);
-
- ppl_new_Linear_Expression_with_dimension (&res, dim);
-
- mpz_init (size);
- mpz_set_si (size, 1);
- mpz_init (sub_size);
- mpz_set_si (sub_size, 1);
-
- for (i = last - 1; i >= first; i--)
+ isl_constraint *res;
+ isl_local_space *ls = isl_local_space_from_space (isl_map_get_space (map));
+ unsigned offset, nsubs;
+ int i;
+ isl_int size, subsize;
+
+ res = isl_equality_alloc (ls);
+ isl_int_init (size);
+ isl_int_set_ui (size, 1);
+ isl_int_init (subsize);
+ isl_int_set_ui (subsize, 1);
+
+ nsubs = isl_set_dim (pdr->extent, isl_dim_set);
+ /* -1 for the already included L dimension. */
+ offset = isl_map_dim (map, isl_dim_out) - 1 - nsubs;
+ res = isl_constraint_set_coefficient_si (res, isl_dim_out, offset + nsubs, -1);
+ /* Go through all subscripts from last to first. First dimension
+ is the alias set, ignore it. */
+ for (i = nsubs - 1; i >= 1; i--)
{
- ppl_set_coef_gmp (res, i + offset, size);
+ isl_space *dc;
+ isl_aff *aff;
- ppl_new_Linear_Expression_with_dimension (&le, dim - offset);
- ppl_set_coef (le, i, 1);
- ppl_max_for_le_pointset (PDR_ACCESSES (pdr), le, sub_size);
- mpz_mul (size, size, sub_size);
- ppl_delete_Linear_Expression (le);
+ res = isl_constraint_set_coefficient (res, isl_dim_out, offset + i, size);
+
+ dc = isl_set_get_space (pdr->extent);
+ aff = isl_aff_zero_on_domain (isl_local_space_from_space (dc));
+ aff = isl_aff_set_coefficient_si (aff, isl_dim_in, i, 1);
+ isl_set_max (pdr->extent, aff, &subsize);
+ isl_aff_free (aff);
+ isl_int_mul (size, size, subsize);
}
- mpz_clear (sub_size);
- mpz_clear (size);
+ isl_int_clear (subsize);
+ isl_int_clear (size);
+
return res;
}
-/* Builds a partial difference equations and inserts them
- into pointset powerset polyhedron P. Polyhedron is assumed
- to have the format: T|I|T'|I'|G|S|S'|l1|l2.
-
- TIME_DEPTH is the time dimension w.r.t. which we are
- differentiating.
- OFFSET represents the number of dimensions between
- columns t_{time_depth} and t'_{time_depth}.
- DIM_SCTR is the number of scattering dimensions. It is
- essentially the dimensionality of the T vector.
-
- The following equations are inserted into the polyhedron P:
- | t_1 = t_1'
- | ...
- | t_{time_depth-1} = t'_{time_depth-1}
- | t_{time_depth} = t'_{time_depth} + 1
- | t_{time_depth+1} = t'_{time_depth + 1}
- | ...
- | t_{dim_sctr} = t'_{dim_sctr}. */
+/* Set STRIDE to the stride of PDR in memory by advancing by one in
+ the loop at DEPTH. */
static void
-build_partial_difference (ppl_Pointset_Powerset_C_Polyhedron_t *p,
- ppl_dimension_type time_depth,
- ppl_dimension_type offset,
- ppl_dimension_type dim_sctr)
+pdr_stride_in_loop (mpz_t stride, graphite_dim_t depth, poly_dr_p pdr)
{
- ppl_Constraint_t new_cstr;
- ppl_Linear_Expression_t le;
- ppl_dimension_type i;
- ppl_dimension_type dim;
- ppl_Pointset_Powerset_C_Polyhedron_t temp;
+ poly_bb_p pbb = PDR_PBB (pdr);
+ isl_map *map;
+ isl_set *set;
+ isl_aff *aff;
+ isl_space *dc;
+ isl_constraint *lma, *c;
+ isl_int islstride;
+ graphite_dim_t time_depth;
+ unsigned offset, nt;
+ unsigned i;
+ /* XXX isl rewrite following comments. */
+ /* Builds a partial difference equations and inserts them
+ into pointset powerset polyhedron P. Polyhedron is assumed
+ to have the format: T|I|T'|I'|G|S|S'|l1|l2.
+
+ TIME_DEPTH is the time dimension w.r.t. which we are
+ differentiating.
+ OFFSET represents the number of dimensions between
+ columns t_{time_depth} and t'_{time_depth}.
+ DIM_SCTR is the number of scattering dimensions. It is
+ essentially the dimensionality of the T vector.
+
+ The following equations are inserted into the polyhedron P:
+ | t_1 = t_1'
+ | ...
+ | t_{time_depth-1} = t'_{time_depth-1}
+ | t_{time_depth} = t'_{time_depth} + 1
+ | t_{time_depth+1} = t'_{time_depth + 1}
+ | ...
+ | t_{dim_sctr} = t'_{dim_sctr}. */
/* Add the equality: t_{time_depth} = t'_{time_depth} + 1.
This is the core part of this alogrithm, since this
constraint asks for the memory access stride (difference)
between two consecutive points in time dimensions. */
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (*p, &dim);
- ppl_new_Linear_Expression_with_dimension (&le, dim);
- ppl_set_coef (le, time_depth, 1);
- ppl_set_coef (le, time_depth + offset, -1);
- ppl_set_inhomogeneous (le, 1);
- ppl_new_Constraint (&new_cstr, le, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Pointset_Powerset_C_Polyhedron_add_constraint (*p, new_cstr);
- ppl_delete_Linear_Expression (le);
- ppl_delete_Constraint (new_cstr);
-
/* Add equalities:
| t1 = t1'
| ...
@@ -149,156 +163,80 @@ build_partial_difference (ppl_Pointset_Powerset_C_Polyhedron_t *p,
is stripmined dimension, and the other dimension corresponds
to the point loop inside stripmined dimension. */
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (&temp, *p);
-
- for (i = 0; i < dim_sctr; i++)
+ /* pdr->accesses: [P1..nb_param,I1..nb_domain]->[a,S1..nb_subscript]
+ ??? [P] not used for PDRs?
+ pdr->extent: [a,S1..nb_subscript]
+ pbb->domain: [P1..nb_param,I1..nb_domain]
+ pbb->transformed: [P1..nb_param,I1..nb_domain]->[T1..Tnb_sctr]
+ [T] includes local vars (currently unused)
+
+ First we create [P,I] -> [T,a,S]. */
+
+ map = isl_map_flat_range_product (isl_map_copy (pbb->transformed),
+ isl_map_copy (pdr->accesses));
+ /* Add a dimension for L: [P,I] -> [T,a,S,L].*/
+ map = isl_map_add_dims (map, isl_dim_out, 1);
+ /* Build a constraint for "lma[S] - L == 0", effectively calculating
+ L in terms of subscripts. */
+ lma = build_linearized_memory_access (map, pdr);
+ /* And add it to the map, so we now have:
+ [P,I] -> [T,a,S,L] : lma([S]) == L. */
+ map = isl_map_add_constraint (map, lma);
+
+ /* Then we create [P,I,P',I'] -> [T,a,S,L,T',a',S',L']. */
+ map = isl_map_flat_product (map, isl_map_copy (map));
+
+ /* Now add the equality T[time_depth] == T'[time_depth]+1. This will
+ force L' to be the linear address at T[time_depth] + 1. */
+ time_depth = psct_dynamic_dim (pbb, depth);
+ /* Length of [a,S] plus [L] ... */
+ offset = 1 + isl_map_dim (pdr->accesses, isl_dim_out);
+ /* ... plus [T]. */
+ offset += isl_map_dim (pbb->transformed, isl_dim_out);
+
+ c = isl_equality_alloc (isl_local_space_from_space (isl_map_get_space (map)));
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, time_depth, 1);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out,
+ offset + time_depth, -1);
+ c = isl_constraint_set_constant_si (c, 1);
+ map = isl_map_add_constraint (map, c);
+
+ /* Now we equate most of the T/T' elements (making PITaSL nearly
+ the same is (PITaSL)', except for one dimension, namely for 'depth'
+ (an index into [I]), after translating to index into [T]. Take care
+ to not produce an empty map, which indicates we wanted to equate
+ two dimensions that are already coupled via the above time_depth
+ dimension. Happens with strip mining where several scatter dimension
+ are interdependend. */
+ /* Length of [T]. */
+ nt = pbb_nb_scattering_transform (pbb) + pbb_nb_local_vars (pbb);
+ for (i = 0; i < nt; i++)
if (i != time_depth)
{
- ppl_new_Linear_Expression_with_dimension (&le, dim);
- ppl_set_coef (le, i, 1);
- ppl_set_coef (le, i + offset, -1);
- ppl_new_Constraint (&new_cstr, le, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Pointset_Powerset_C_Polyhedron_add_constraint (temp, new_cstr);
-
- if (ppl_Pointset_Powerset_C_Polyhedron_is_empty (temp))
- {
- ppl_delete_Pointset_Powerset_C_Polyhedron (temp);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (&temp, *p);
- }
- else
- ppl_Pointset_Powerset_C_Polyhedron_add_constraint (*p, new_cstr);
- ppl_delete_Linear_Expression (le);
- ppl_delete_Constraint (new_cstr);
+ isl_map *temp = isl_map_equate (isl_map_copy (map),
+ isl_dim_out, i,
+ isl_dim_out, offset + i);
+ if (isl_map_is_empty (temp))
+ isl_map_free (temp);
+ else
+ {
+ isl_map_free (map);
+ map = temp;
+ }
}
- ppl_delete_Pointset_Powerset_C_Polyhedron (temp);
-}
-
-
-/* Set STRIDE to the stride of PDR in memory by advancing by one in
- the loop at DEPTH. */
-
-static void
-pdr_stride_in_loop (mpz_t stride, graphite_dim_t depth, poly_dr_p pdr)
-{
- ppl_dimension_type time_depth;
- ppl_Linear_Expression_t le, lma;
- ppl_Constraint_t new_cstr;
- ppl_dimension_type i, *map;
- ppl_Pointset_Powerset_C_Polyhedron_t p1, p2, sctr;
- graphite_dim_t nb_subscripts = PDR_NB_SUBSCRIPTS (pdr) + 1;
- poly_bb_p pbb = PDR_PBB (pdr);
- ppl_dimension_type offset = pbb_nb_scattering_transform (pbb)
- + pbb_nb_local_vars (pbb)
- + pbb_dim_iter_domain (pbb);
- ppl_dimension_type offsetg = offset + pbb_nb_params (pbb);
- ppl_dimension_type dim_sctr = pbb_nb_scattering_transform (pbb)
- + pbb_nb_local_vars (pbb);
- ppl_dimension_type dim_L1 = offset + offsetg + 2 * nb_subscripts;
- ppl_dimension_type dim_L2 = offset + offsetg + 2 * nb_subscripts + 1;
- ppl_dimension_type new_dim = offset + offsetg + 2 * nb_subscripts + 2;
-
- /* The resulting polyhedron should have the following format:
- T|I|T'|I'|G|S|S'|l1|l2
- where:
- | T = t_1..t_{dim_sctr}
- | I = i_1..i_{dim_iter_domain}
- | T'= t'_1..t'_{dim_sctr}
- | I'= i'_1..i'_{dim_iter_domain}
- | G = g_1..g_{nb_params}
- | S = s_1..s_{nb_subscripts}
- | S'= s'_1..s'_{nb_subscripts}
- | l1 and l2 are scalars.
-
- Some invariants:
- offset = dim_sctr + dim_iter_domain + nb_local_vars
- offsetg = dim_sctr + dim_iter_domain + nb_local_vars + nb_params. */
-
- /* Construct the T|I|0|0|G|0|0|0|0 part. */
- {
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (&sctr, PBB_TRANSFORMED_SCATTERING (pbb));
- ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed
- (sctr, 2 * nb_subscripts + 2);
- ppl_insert_dimensions_pointset (sctr, offset, offset);
- }
-
- /* Construct the 0|I|0|0|G|S|0|0|0 part. */
- {
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&p1, PDR_ACCESSES (pdr));
- ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed
- (p1, nb_subscripts + 2);
- ppl_insert_dimensions_pointset (p1, 0, dim_sctr);
- ppl_insert_dimensions_pointset (p1, offset, offset);
- }
-
- /* Construct the 0|0|0|0|0|S|0|l1|0 part. */
- {
- lma = build_linearized_memory_access (offset + dim_sctr, pdr);
- ppl_set_coef (lma, dim_L1, -1);
- ppl_new_Constraint (&new_cstr, lma, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Pointset_Powerset_C_Polyhedron_add_constraint (p1, new_cstr);
- ppl_delete_Linear_Expression (lma);
- ppl_delete_Constraint (new_cstr);
- }
-
- /* Now intersect all the parts to get the polyhedron P1:
- T|I|0|0|G|0|0|0 |0
- 0|I|0|0|G|S|0|0 |0
- 0|0|0|0|0|S|0|l1|0
- ------------------
- T|I|0|0|G|S|0|l1|0. */
-
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (p1, sctr);
- ppl_delete_Pointset_Powerset_C_Polyhedron (sctr);
-
- /* Build P2, which would have the following form:
- 0|0|T'|I'|G|0|S'|0|l2
-
- P2 is built, by remapping the P1 polyhedron:
- T|I|0|0|G|S|0|l1|0
-
- using the following mapping:
- T->T'
- I->I'
- S->S'
- l1->l2. */
- {
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&p2, p1);
-
- map = ppl_new_id_map (new_dim);
-
- /* TI -> T'I'. */
- for (i = 0; i < offset; i++)
- ppl_interchange (map, i, i + offset);
-
- /* l1 -> l2. */
- ppl_interchange (map, dim_L1, dim_L2);
-
- /* S -> S'. */
- for (i = 0; i < nb_subscripts; i++)
- ppl_interchange (map, offset + offsetg + i,
- offset + offsetg + nb_subscripts + i);
-
- ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (p2, map, new_dim);
- free (map);
- }
-
- time_depth = psct_dynamic_dim (pbb, depth);
-
- /* P1 = P1 inter P2. */
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (p1, p2);
- build_partial_difference (&p1, time_depth, offset, dim_sctr);
-
- /* Maximise the expression L2 - L1. */
- {
- ppl_new_Linear_Expression_with_dimension (&le, new_dim);
- ppl_set_coef (le, dim_L2, 1);
- ppl_set_coef (le, dim_L1, -1);
- ppl_max_for_le_pointset (p1, le, stride);
- }
+ /* Now maximize the expression L' - L. */
+ set = isl_map_range (map);
+ dc = isl_set_get_space (set);
+ aff = isl_aff_zero_on_domain (isl_local_space_from_space (dc));
+ aff = isl_aff_set_coefficient_si (aff, isl_dim_in, offset - 1, -1);
+ aff = isl_aff_set_coefficient_si (aff, isl_dim_in, offset + offset - 1, 1);
+ isl_int_init (islstride);
+ isl_set_max (set, aff, &islstride);
+ isl_int_get_gmp (islstride, stride);
+ isl_int_clear (islstride);
+ isl_aff_free (aff);
+ isl_set_free (set);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -312,13 +250,8 @@ pdr_stride_in_loop (mpz_t stride, graphite_dim_t depth, poly_dr_p pdr)
mp_get_memory_functions (NULL, NULL, &gmp_free);
(*gmp_free) (str, strlen (str) + 1);
}
-
- ppl_delete_Pointset_Powerset_C_Polyhedron (p1);
- ppl_delete_Pointset_Powerset_C_Polyhedron (p2);
- ppl_delete_Linear_Expression (le);
}
-
/* Sets STRIDES to the sum of all the strides of the data references
accessed in LOOP at DEPTH. */
@@ -475,23 +408,23 @@ static void
pbb_interchange_loop_depths (graphite_dim_t depth1, graphite_dim_t depth2,
poly_bb_p pbb)
{
- ppl_dimension_type i, dim;
- ppl_dimension_type *map;
- ppl_Polyhedron_t poly = PBB_TRANSFORMED_SCATTERING (pbb);
- ppl_dimension_type dim1 = psct_dynamic_dim (pbb, depth1);
- ppl_dimension_type dim2 = psct_dynamic_dim (pbb, depth2);
-
- ppl_Polyhedron_space_dimension (poly, &dim);
- map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim);
-
- for (i = 0; i < dim; i++)
- map[i] = i;
-
- map[dim1] = dim2;
- map[dim2] = dim1;
-
- ppl_Polyhedron_map_space_dimensions (poly, map, dim);
- free (map);
+ unsigned i;
+ unsigned dim1 = psct_dynamic_dim (pbb, depth1);
+ unsigned dim2 = psct_dynamic_dim (pbb, depth2);
+ isl_space *d = isl_map_get_space (pbb->transformed);
+ isl_space *d1 = isl_space_range (d);
+ unsigned n = isl_space_dim (d1, isl_dim_out);
+ isl_space *d2 = isl_space_add_dims (d1, isl_dim_in, n);
+ isl_map *x = isl_map_universe (d2);
+
+ x = isl_map_equate (x, isl_dim_in, dim1, isl_dim_out, dim2);
+ x = isl_map_equate (x, isl_dim_in, dim2, isl_dim_out, dim1);
+
+ for (i = 0; i < n; i++)
+ if (i != dim1 && i != dim2)
+ x = isl_map_equate (x, isl_dim_in, i, isl_dim_out, i);
+
+ pbb->transformed = isl_map_apply_range (pbb->transformed, x);
}
/* Apply the interchange of loops at depths DEPTH1 and DEPTH2 to all
diff --git a/gcc/graphite-optimize-isl.c b/gcc/graphite-optimize-isl.c
new file mode 100644
index 00000000000..9c17bed6118
--- /dev/null
+++ b/gcc/graphite-optimize-isl.c
@@ -0,0 +1,473 @@
+/* A scheduling optimizer for Graphite
+ Copyright (C) 2012 Free Software Foundation, Inc.
+ Contributed by Tobias Grosser <tobias@grosser.es>.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <isl/schedule.h>
+#include <isl/band.h>
+#include <isl/aff.h>
+#include <isl/options.h>
+#endif
+
+#include "system.h"
+#include "coretypes.h"
+#include "tree-flow.h"
+#include "dumpfile.h"
+#include "cfgloop.h"
+#include "tree-chrec.h"
+#include "tree-data-ref.h"
+#include "tree-scalar-evolution.h"
+#include "sese.h"
+
+#ifdef HAVE_cloog
+#include "graphite-poly.h"
+
+static isl_union_set *
+scop_get_domains (scop_p scop ATTRIBUTE_UNUSED)
+{
+ int i;
+ poly_bb_p pbb;
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_union_set *res = isl_union_set_empty (space);
+
+ FOR_EACH_VEC_ELT (poly_bb_p, scop->bbs, i, pbb)
+ res = isl_union_set_add_set (res, isl_set_copy (pbb->domain));
+
+ return res;
+}
+
+static isl_union_map *
+scop_get_dependences (scop_p scop)
+{
+ isl_union_map *dependences;
+
+ if (!scop->must_raw)
+ compute_deps (scop, SCOP_BBS (scop),
+ &scop->must_raw, &scop->may_raw,
+ &scop->must_raw_no_source, &scop->may_raw_no_source,
+ &scop->must_war, &scop->may_war,
+ &scop->must_war_no_source, &scop->may_war_no_source,
+ &scop->must_waw, &scop->may_waw,
+ &scop->must_waw_no_source, &scop->may_waw_no_source);
+
+ dependences = isl_union_map_copy (scop->must_raw);
+ dependences = isl_union_map_union (dependences,
+ isl_union_map_copy (scop->must_war));
+ dependences = isl_union_map_union (dependences,
+ isl_union_map_copy (scop->must_waw));
+ dependences = isl_union_map_union (dependences,
+ isl_union_map_copy (scop->may_raw));
+ dependences = isl_union_map_union (dependences,
+ isl_union_map_copy (scop->may_war));
+ dependences = isl_union_map_union (dependences,
+ isl_union_map_copy (scop->may_waw));
+
+ return dependences;
+}
+
+/* getTileMap - Create a map that describes a n-dimensonal tiling.
+
+ getTileMap creates a map from a n-dimensional scattering space into an
+ 2*n-dimensional scattering space. The map describes a rectangular tiling.
+
+ Example:
+ scheduleDimensions = 2, parameterDimensions = 1, tileSize = 32
+
+ tileMap := [p0] -> {[s0, s1] -> [t0, t1, s0, s1]:
+ t0 % 32 = 0 and t0 <= s0 < t0 + 32 and
+ t1 % 32 = 0 and t1 <= s1 < t1 + 32}
+
+ Before tiling:
+
+ for (i = 0; i < N; i++)
+ for (j = 0; j < M; j++)
+ S(i,j)
+
+ After tiling:
+
+ for (t_i = 0; t_i < N; i+=32)
+ for (t_j = 0; t_j < M; j+=32)
+ for (i = t_i; i < min(t_i + 32, N); i++) | Unknown that N % 32 = 0
+ for (j = t_j; j < t_j + 32; j++) | Known that M % 32 = 0
+ S(i,j)
+ */
+
+static isl_basic_map *
+getTileMap(isl_ctx *ctx, int scheduleDimensions, int tileSize)
+{
+ int x;
+ /* We construct
+
+ tileMap := [p0] -> {[s0, s1] -> [t0, t1, p0, p1, a0, a1]:
+ s0 = a0 * 32 and s0 = p0 and t0 <= p0 < t0 + 32 and
+ s1 = a1 * 32 and s1 = p1 and t1 <= p1 < t1 + 32}
+
+ and project out the auxilary dimensions a0 and a1. */
+ isl_space *Space = isl_space_alloc(ctx, 0, scheduleDimensions,
+ scheduleDimensions * 3);
+ isl_basic_map *tileMap = isl_basic_map_universe(isl_space_copy(Space));
+
+ isl_local_space *LocalSpace = isl_local_space_from_space(Space);
+
+ for (x = 0; x < scheduleDimensions; x++)
+ {
+ int sX = x;
+ int tX = x;
+ int pX = scheduleDimensions + x;
+ int aX = 2 * scheduleDimensions + x;
+
+ isl_constraint *c;
+
+ /* sX = aX * tileSize; */
+ c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
+ isl_constraint_set_coefficient_si(c, isl_dim_out, sX, 1);
+ isl_constraint_set_coefficient_si(c, isl_dim_out, aX, -tileSize);
+ tileMap = isl_basic_map_add_constraint(tileMap, c);
+
+ /* pX = sX; */
+ c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
+ isl_constraint_set_coefficient_si(c, isl_dim_out, pX, 1);
+ isl_constraint_set_coefficient_si(c, isl_dim_in, sX, -1);
+ tileMap = isl_basic_map_add_constraint(tileMap, c);
+
+ /* tX <= pX */
+ c = isl_inequality_alloc(isl_local_space_copy(LocalSpace));
+ isl_constraint_set_coefficient_si(c, isl_dim_out, pX, 1);
+ isl_constraint_set_coefficient_si(c, isl_dim_out, tX, -1);
+ tileMap = isl_basic_map_add_constraint(tileMap, c);
+
+ /* pX <= tX + (tileSize - 1) */
+ c = isl_inequality_alloc(isl_local_space_copy(LocalSpace));
+ isl_constraint_set_coefficient_si(c, isl_dim_out, tX, 1);
+ isl_constraint_set_coefficient_si(c, isl_dim_out, pX, -1);
+ isl_constraint_set_constant_si(c, tileSize - 1);
+ tileMap = isl_basic_map_add_constraint(tileMap, c);
+ }
+
+ /* Project out auxilary dimensions.
+
+ The auxilary dimensions are transformed into existentially quantified ones.
+ This reduces the number of visible scattering dimensions and allows Cloog
+ to produces better code. */
+ tileMap = isl_basic_map_project_out(tileMap, isl_dim_out,
+ 2 * scheduleDimensions,
+ scheduleDimensions);
+ isl_local_space_free(LocalSpace);
+ return tileMap;
+}
+
+/* getScheduleForBand - Get the schedule for this band.
+
+ Polly applies transformations like tiling on top of the isl calculated value.
+ This can influence the number of scheduling dimension. The number of
+ schedule dimensions is returned in the parameter 'Dimension'. */
+static bool DisableTiling = false;
+
+static isl_union_map *
+getScheduleForBand(isl_band *Band, int *Dimensions)
+{
+ isl_union_map *PartialSchedule;
+ isl_ctx *ctx;
+ isl_space *Space;
+ isl_basic_map *TileMap;
+ isl_union_map *TileUMap;
+
+ PartialSchedule = isl_band_get_partial_schedule(Band);
+ *Dimensions = isl_band_n_member(Band);
+
+ if (DisableTiling)
+ return PartialSchedule;
+
+ /* It does not make any sense to tile a band with just one dimension. */
+ if (*Dimensions == 1)
+ return PartialSchedule;
+
+ ctx = isl_union_map_get_ctx(PartialSchedule);
+ Space = isl_union_map_get_space(PartialSchedule);
+
+ TileMap = getTileMap(ctx, *Dimensions, 32);
+ TileUMap = isl_union_map_from_map(isl_map_from_basic_map(TileMap));
+ TileUMap = isl_union_map_align_params(TileUMap, Space);
+ *Dimensions = 2 * *Dimensions;
+
+ return isl_union_map_apply_range(PartialSchedule, TileUMap);
+}
+
+/* Create a map that pre-vectorizes one scheduling dimension.
+
+ getPrevectorMap creates a map that maps each input dimension to the same
+ output dimension, except for the dimension DimToVectorize. DimToVectorize is
+ strip mined by 'VectorWidth' and the newly created point loop of
+ DimToVectorize is moved to the innermost level.
+
+ Example (DimToVectorize=0, ScheduleDimensions=2, VectorWidth=4):
+
+ | Before transformation
+ |
+ | A[i,j] -> [i,j]
+ |
+ | for (i = 0; i < 128; i++)
+ | for (j = 0; j < 128; j++)
+ | A(i,j);
+
+ Prevector map:
+ [i,j] -> [it,j,ip] : it % 4 = 0 and it <= ip <= it + 3 and i = ip
+
+ | After transformation:
+ |
+ | A[i,j] -> [it,j,ip] : it % 4 = 0 and it <= ip <= it + 3 and i = ip
+ |
+ | for (it = 0; it < 128; it+=4)
+ | for (j = 0; j < 128; j++)
+ | for (ip = max(0,it); ip < min(128, it + 3); ip++)
+ | A(ip,j);
+
+ The goal of this transformation is to create a trivially vectorizable loop.
+ This means a parallel loop at the innermost level that has a constant number
+ of iterations corresponding to the target vector width.
+
+ This transformation creates a loop at the innermost level. The loop has a
+ constant number of iterations, if the number of loop iterations at
+ DimToVectorize can be devided by VectorWidth. The default VectorWidth is
+ currently constant and not yet target specific. This function does not reason
+ about parallelism. */
+static isl_map *
+getPrevectorMap(isl_ctx *ctx, int DimToVectorize,
+ int ScheduleDimensions,
+ int VectorWidth)
+{
+ isl_space *Space;
+ isl_local_space *LocalSpace, *LocalSpaceRange;
+ isl_set *Modulo;
+ isl_map *TilingMap;
+ isl_constraint *c;
+ isl_aff *Aff;
+ int PointDimension; /* ip */
+ int TileDimension; /* it */
+ isl_int VectorWidthMP;
+ int i;
+
+ /* assert (0 <= DimToVectorize && DimToVectorize < ScheduleDimensions);*/
+
+ Space = isl_space_alloc(ctx, 0, ScheduleDimensions, ScheduleDimensions + 1);
+ TilingMap = isl_map_universe(isl_space_copy(Space));
+ LocalSpace = isl_local_space_from_space(Space);
+ PointDimension = ScheduleDimensions;
+ TileDimension = DimToVectorize;
+
+ /* Create an identity map for everything except DimToVectorize and map
+ DimToVectorize to the point loop at the innermost dimension. */
+ for (i = 0; i < ScheduleDimensions; i++)
+ {
+ c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
+ isl_constraint_set_coefficient_si(c, isl_dim_in, i, -1);
+
+ if (i == DimToVectorize)
+ isl_constraint_set_coefficient_si(c, isl_dim_out, PointDimension, 1);
+ else
+ isl_constraint_set_coefficient_si(c, isl_dim_out, i, 1);
+
+ TilingMap = isl_map_add_constraint(TilingMap, c);
+ }
+
+ /* it % 'VectorWidth' = 0 */
+ LocalSpaceRange = isl_local_space_range(isl_local_space_copy(LocalSpace));
+ Aff = isl_aff_zero_on_domain(LocalSpaceRange);
+ Aff = isl_aff_set_constant_si(Aff, VectorWidth);
+ Aff = isl_aff_set_coefficient_si(Aff, isl_dim_in, TileDimension, 1);
+ isl_int_init(VectorWidthMP);
+ isl_int_set_si(VectorWidthMP, VectorWidth);
+ Aff = isl_aff_mod(Aff, VectorWidthMP);
+ isl_int_clear(VectorWidthMP);
+ Modulo = isl_pw_aff_zero_set(isl_pw_aff_from_aff(Aff));
+ TilingMap = isl_map_intersect_range(TilingMap, Modulo);
+
+ /* it <= ip */
+ c = isl_inequality_alloc(isl_local_space_copy(LocalSpace));
+ isl_constraint_set_coefficient_si(c, isl_dim_out, TileDimension, -1);
+ isl_constraint_set_coefficient_si(c, isl_dim_out, PointDimension, 1);
+ TilingMap = isl_map_add_constraint(TilingMap, c);
+
+ /* ip <= it + ('VectorWidth' - 1) */
+ c = isl_inequality_alloc(LocalSpace);
+ isl_constraint_set_coefficient_si(c, isl_dim_out, TileDimension, 1);
+ isl_constraint_set_coefficient_si(c, isl_dim_out, PointDimension, -1);
+ isl_constraint_set_constant_si(c, VectorWidth - 1);
+ TilingMap = isl_map_add_constraint(TilingMap, c);
+
+ isl_map_dump(TilingMap);
+
+ return TilingMap;
+}
+
+static bool EnablePollyVector = false;
+
+/* getScheduleForBandList - Get the scheduling map for a list of bands.
+
+ We walk recursively the forest of bands to combine the schedules of the
+ individual bands to the overall schedule. In case tiling is requested,
+ the individual bands are tiled. */
+static isl_union_map *
+getScheduleForBandList(isl_band_list *BandList)
+{
+ int NumBands, i;
+ isl_union_map *Schedule;
+ isl_ctx *ctx;
+
+ ctx = isl_band_list_get_ctx(BandList);
+ NumBands = isl_band_list_n_band(BandList);
+ Schedule = isl_union_map_empty(isl_space_params_alloc(ctx, 0));
+
+ for (i = 0; i < NumBands; i++)
+ {
+ isl_band *Band;
+ isl_union_map *PartialSchedule;
+ int ScheduleDimensions;
+ isl_space *Space;
+
+ Band = isl_band_list_get_band(BandList, i);
+ PartialSchedule = getScheduleForBand(Band, &ScheduleDimensions);
+ Space = isl_union_map_get_space(PartialSchedule);
+
+ if (isl_band_has_children(Band))
+ {
+ isl_band_list *Children;
+ isl_union_map *SuffixSchedule;
+
+ Children = isl_band_get_children(Band);
+ SuffixSchedule = getScheduleForBandList(Children);
+ PartialSchedule = isl_union_map_flat_range_product(PartialSchedule,
+ SuffixSchedule);
+ isl_band_list_free(Children);
+ }
+ else if (EnablePollyVector)
+ {
+ for (i = ScheduleDimensions - 1 ; i >= 0 ; i--)
+ {
+ if (isl_band_member_is_zero_distance(Band, i))
+ {
+ isl_map *TileMap;
+ isl_union_map *TileUMap;
+
+ TileMap = getPrevectorMap(ctx, i, ScheduleDimensions, 4);
+ TileUMap = isl_union_map_from_map(TileMap);
+ TileUMap = isl_union_map_align_params(TileUMap,
+ isl_space_copy(Space));
+ PartialSchedule = isl_union_map_apply_range(PartialSchedule,
+ TileUMap);
+ break;
+ }
+ }
+ }
+
+ Schedule = isl_union_map_union(Schedule, PartialSchedule);
+
+ isl_band_free(Band);
+ isl_space_free(Space);
+ }
+
+ return Schedule;
+}
+
+static isl_union_map *
+getScheduleMap(isl_schedule *Schedule)
+{
+ isl_band_list *BandList = isl_schedule_get_band_forest(Schedule);
+ isl_union_map *ScheduleMap = getScheduleForBandList(BandList);
+ isl_band_list_free(BandList);
+ return ScheduleMap;
+}
+
+static int
+getSingleMap(__isl_take isl_map *map, void *user)
+{
+ isl_map **singleMap = (isl_map **) user;
+ *singleMap = map;
+
+ return 0;
+}
+
+static void
+apply_schedule_map_to_scop (scop_p scop, isl_union_map *schedule_map)
+{
+ int i;
+ poly_bb_p pbb;
+
+ FOR_EACH_VEC_ELT (poly_bb_p, scop->bbs, i, pbb)
+ {
+ isl_set *domain = isl_set_copy (pbb->domain);
+ isl_union_map *stmtBand;
+ isl_map *stmtSchedule;
+
+ stmtBand = isl_union_map_intersect_domain(isl_union_map_copy(schedule_map),
+ isl_union_set_from_set(domain));
+ isl_union_map_foreach_map(stmtBand, getSingleMap, &stmtSchedule);
+ isl_map_free(pbb->transformed);
+ pbb->transformed = stmtSchedule;
+ isl_union_map_free(stmtBand);
+ }
+}
+
+static const int CONSTANT_BOUND = 20;
+
+bool
+optimize_isl (scop_p scop)
+{
+
+ isl_schedule *schedule;
+ isl_union_set *domain;
+ isl_union_map *validity, *proximity, *dependences;
+ isl_union_map *schedule_map;
+
+ domain = scop_get_domains (scop);
+ dependences = scop_get_dependences (scop);
+ dependences = isl_union_map_gist_domain(dependences,
+ isl_union_set_copy(domain));
+ dependences = isl_union_map_gist_range(dependences,
+ isl_union_set_copy(domain));
+ validity = dependences;
+
+ proximity = isl_union_map_copy (validity);
+
+ isl_options_set_schedule_max_constant_term(scop->ctx, CONSTANT_BOUND);
+ isl_options_set_schedule_maximize_band_depth(scop->ctx, 1);
+ isl_options_set_schedule_fuse(scop->ctx, ISL_SCHEDULE_FUSE_MIN);
+ isl_options_set_on_error(scop->ctx, ISL_ON_ERROR_CONTINUE);
+ schedule = isl_union_set_compute_schedule (domain, validity, proximity);
+ isl_options_set_on_error(scop->ctx, ISL_ON_ERROR_ABORT);
+
+ if (!schedule)
+ return false;
+
+ schedule_map = getScheduleMap (schedule);
+
+ apply_schedule_map_to_scop (scop, schedule_map);
+
+ isl_schedule_free (schedule);
+ isl_union_map_free (schedule_map);
+
+ return true;
+}
+
+#endif
diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c
index 9f3ba1db347..b66dd507cbf 100644
--- a/gcc/graphite-poly.c
+++ b/gcc/graphite-poly.c
@@ -1,5 +1,5 @@
/* Graphite polyhedral representation.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@amd.com> and
Tobias Grosser <grosser@fim.uni-passau.de>.
@@ -18,12 +18,25 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <isl/constraint.h>
+#include <isl/ilp.h>
+#include <isl/aff.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "diagnostic-core.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "gimple-pretty-print.h"
#include "cfgloop.h"
#include "tree-chrec.h"
@@ -32,14 +45,24 @@ along with GCC; see the file COPYING3. If not see
#include "sese.h"
#ifdef HAVE_cloog
-#include "ppl_c.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
-#include "graphite-dependences.h"
-#include "graphite-cloog-util.h"
#define OPENSCOP_MAX_STRING 256
+
+/* Print to STDERR the GMP value VAL. */
+
+DEBUG_FUNCTION void
+debug_gmp_value (mpz_t val)
+{
+ char *str = mpz_get_str (0, 10, val);
+ void (*gmp_free) (void *, size_t);
+
+ fprintf (stderr, "%s", str);
+ mp_get_memory_functions (NULL, NULL, &gmp_free);
+ (*gmp_free) (str, strlen (str) + 1);
+}
+
/* Return the maximal loop depth in SCOP. */
int
@@ -59,223 +82,6 @@ scop_max_loop_depth (scop_p scop)
return max_nb_loops;
}
-/* Extend the scattering matrix of PBB to MAX_SCATTERING scattering
- dimensions. */
-
-static void
-extend_scattering (poly_bb_p pbb, int max_scattering)
-{
- ppl_dimension_type nb_old_dims, nb_new_dims;
- int nb_added_dims, i;
- ppl_Coefficient_t coef;
- mpz_t one;
-
- nb_added_dims = max_scattering - pbb_nb_scattering_transform (pbb);
- mpz_init (one);
- mpz_set_si (one, 1);
- ppl_new_Coefficient (&coef);
- ppl_assign_Coefficient_from_mpz_t (coef, one);
-
- gcc_assert (nb_added_dims >= 0);
-
- nb_old_dims = pbb_nb_scattering_transform (pbb) + pbb_dim_iter_domain (pbb)
- + scop_nb_params (PBB_SCOP (pbb));
- nb_new_dims = nb_old_dims + nb_added_dims;
-
- ppl_insert_dimensions (PBB_TRANSFORMED_SCATTERING (pbb),
- pbb_nb_scattering_transform (pbb), nb_added_dims);
- PBB_NB_SCATTERING_TRANSFORM (pbb) += nb_added_dims;
-
- /* Add identity matrix for the added dimensions. */
- for (i = max_scattering - nb_added_dims; i < max_scattering; i++)
- {
- ppl_Constraint_t cstr;
- ppl_Linear_Expression_t expr;
-
- ppl_new_Linear_Expression_with_dimension (&expr, nb_new_dims);
- ppl_Linear_Expression_add_to_coefficient (expr, i, coef);
- ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Polyhedron_add_constraint (PBB_TRANSFORMED_SCATTERING (pbb), cstr);
- ppl_delete_Constraint (cstr);
- ppl_delete_Linear_Expression (expr);
- }
-
- ppl_delete_Coefficient (coef);
- mpz_clear (one);
-}
-
-/* All scattering matrices in SCOP will have the same number of scattering
- dimensions. */
-
-int
-unify_scattering_dimensions (scop_p scop)
-{
- int i;
- poly_bb_p pbb;
- graphite_dim_t max_scattering = 0;
-
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
- max_scattering = MAX (pbb_nb_scattering_transform (pbb), max_scattering);
-
- FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
- extend_scattering (pbb, max_scattering);
-
- return max_scattering;
-}
-
-/* Print to FILE the pdr PH in OpenScop format. NB_SUBSCRIPTS is the number
- of subscripts in PH, ALIAS_SET_DIM is the dimension of the alias set and
- NB_PARAMS is the number of parameters in PH. */
-
-static void
-openscop_print_pdr_polyhedron (FILE *file, ppl_const_Polyhedron_t ph,
- int nb_subscripts, int alias_set_dimension,
- int nb_params)
-{
- int input, locals, output;
- ppl_dimension_type alias_set_dim = (ppl_dimension_type) alias_set_dimension;
- ppl_dimension_type sub_dim_last = alias_set_dim + nb_subscripts;
- ppl_dimension_type *map, i, ph_space_dim = sub_dim_last + 1;
- ppl_Polyhedron_t pph;
-
- ppl_new_C_Polyhedron_from_C_Polyhedron (&pph, ph);
-
- map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, ph_space_dim);
-
- for (i = 0; i < alias_set_dim - 1; i++)
- map[i] = nb_subscripts + 1 + i;
-
- for (i = alias_set_dim - 1; i < sub_dim_last; i++)
- map[i] = i - alias_set_dim + 1;
-
- ppl_Polyhedron_map_space_dimensions (pph, map, ph_space_dim - 1);
-
- locals = 0;
- input = alias_set_dim - nb_params - 1;
-
- /* According to OpenScop specification, the alias set column is a part of
- the output columns. */
- output = nb_subscripts + 1;
-
- openscop_print_polyhedron_matrix (file, pph, output, input, locals, nb_params);
-}
-
-/* Print to FILE the powerset PDR. NB_SUBSCRIPTS is the number of subscripts
- in PDR, ALIAS_SET_DIM is the dimension of the alias set in PDR and
- NB_PARAMS is the number of parameters in PDR. */
-
-static void
-openscop_print_pdr_powerset (FILE *file,
- ppl_Pointset_Powerset_C_Polyhedron_t ps,
- int nb_subscripts,
- int alias_set_dim,
- int nb_params)
-{
- size_t nb_disjuncts;
- ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
-
- ppl_Pointset_Powerset_C_Polyhedron_size (ps, &nb_disjuncts);
- fprintf (file, "%d\n", (int) nb_disjuncts);
-
- for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (ps, it),
- ppl_Pointset_Powerset_C_Polyhedron_iterator_end (ps, end);
- !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
- {
- ppl_const_Polyhedron_t ph;
-
- ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
- openscop_print_pdr_polyhedron (file, ph, nb_subscripts, alias_set_dim,
- nb_params);
- }
-
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
-}
-
-/* Print to FILE the powerset PS in its OpenScop matrix form. */
-
-static void
-openscop_print_powerset_matrix (FILE *file,
- ppl_Pointset_Powerset_C_Polyhedron_t ps,
- int output, int input, int locals,
- int params)
-{
- size_t nb_disjuncts;
- ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
-
- ppl_Pointset_Powerset_C_Polyhedron_size (ps, &nb_disjuncts);
- fprintf (file, "%d\n", (int) nb_disjuncts);
-
- for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (ps, it),
- ppl_Pointset_Powerset_C_Polyhedron_iterator_end (ps, end);
- !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
- {
- ppl_const_Polyhedron_t ph;
-
- ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
- openscop_print_polyhedron_matrix (file, ph, output, input, locals,
- params);
- }
-
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
-}
-
-/* Prints to FILE the scattering function of PBB in OpenScop format, at some
- VERBOSITY level. */
-
-static void
-openscop_print_scattering_function_1 (FILE *file, poly_bb_p pbb, int verbosity)
-{
- graphite_dim_t i;
- ppl_const_Polyhedron_t ph;
-
- if (verbosity > 0)
- {
- fprintf (file, "# scattering bb_%d (\n", pbb_index (pbb));
- fprintf (file, "#eq");
-
- for (i = 0; i < pbb_nb_scattering_transform (pbb); i++)
- fprintf (file, " s%d", (int) i);
-
- for (i = 0; i < pbb_nb_local_vars (pbb); i++)
- fprintf (file, " lv%d", (int) i);
-
- for (i = 0; i < pbb_dim_iter_domain (pbb); i++)
- fprintf (file, " i%d", (int) i);
-
- for (i = 0; i < pbb_nb_params (pbb); i++)
- fprintf (file, " p%d", (int) i);
-
- fprintf (file, " cst\n");
- }
-
- /* Number of disjunct components. Remove this when
- PBB_TRANSFORMED_SCATTERING will be a pointset_powerset. */
- fprintf (file, "1\n");
-
- ph = PBB_TRANSFORMED_SCATTERING (pbb)
- ? PBB_TRANSFORMED_SCATTERING (pbb)
- : PBB_ORIGINAL_SCATTERING (pbb);
-
- openscop_print_polyhedron_matrix (file, ph,
- pbb_nb_scattering_transform (pbb),
- pbb_dim_iter_domain (pbb),
- pbb_nb_local_vars (pbb),
- pbb_nb_params (pbb));
-
- if (verbosity > 0)
- fprintf (file, "#)\n");
-}
-
/* Prints to FILE the scattering function of PBB, at some VERBOSITY
level. */
@@ -304,12 +110,8 @@ print_scattering_function_1 (FILE *file, poly_bb_p pbb, int verbosity)
fprintf (file, " cst\n");
}
- /* Number of disjunct components. Remove this when
- PBB_TRANSFORMED_SCATTERING will be a pointset_powerset. */
- fprintf (file, "1\n");
- ppl_print_polyhedron_matrix (file, PBB_TRANSFORMED_SCATTERING (pbb)
- ? PBB_TRANSFORMED_SCATTERING (pbb)
- : PBB_ORIGINAL_SCATTERING (pbb));
+ fprintf (file, "isl\n");
+ print_isl_map (file, pbb->transformed ? pbb->transformed : pbb->schedule);
if (verbosity > 0)
fprintf (file, "#)\n");
@@ -324,8 +126,7 @@ print_scattering_function (FILE *file, poly_bb_p pbb, int verbosity)
if (!PBB_TRANSFORMED (pbb))
return;
- if (PBB_TRANSFORMED_SCATTERING (pbb)
- || PBB_ORIGINAL_SCATTERING (pbb))
+ if (pbb->schedule || pbb->transformed)
{
if (verbosity > 0)
fprintf (file, "# Scattering function is provided\n");
@@ -341,7 +142,7 @@ print_scattering_function (FILE *file, poly_bb_p pbb, int verbosity)
return;
}
- openscop_print_scattering_function_1 (file, pbb, verbosity);
+ print_scattering_function_1 (file, pbb, verbosity);
if (verbosity > 0)
fprintf (file, "# Scattering names are not provided\n");
@@ -420,334 +221,12 @@ debug_iteration_domains (scop_p scop, int verbosity)
print_iteration_domains (stderr, scop, verbosity);
}
-/* Read N integer from FILE. */
-
-int *
-openscop_read_N_int (FILE *file, int N)
-{
- char s[OPENSCOP_MAX_STRING];
- char *str;
- int i, *res = (int *) xmalloc (OPENSCOP_MAX_STRING * sizeof (int));
-
- /* Skip blank and commented lines. */
- while (fgets (s, sizeof s, file) == (char *) 0
- || s[0] == '#'
- || ISSPACE (s[0]))
- ;
-
- str = s;
-
- for (i = 0; i < N; i++)
- {
- sscanf (str, "%d", &res[i]);
-
- /* Jump the integer that was read. */
- while ((*str) && !ISSPACE (*str) && (*str != '#'))
- str++;
-
- /* Jump spaces. */
- while ((*str) && ISSPACE (*str) && (*str != '#'))
- str++;
- }
-
- return res;
-}
-
-/* Read one integer from FILE. */
-
-static int
-openscop_read_one_int (FILE *file)
-{
- int *x = openscop_read_N_int (file, 1);
- int res = *x;
-
- free (x);
- return res;
-}
-
-/* Read N string from FILE. */
-
-static char *
-openscop_read_N_string (FILE *file, int N)
-{
- int count, i;
- char str[OPENSCOP_MAX_STRING];
- char *tmp = (char *) xmalloc (sizeof (char) * OPENSCOP_MAX_STRING);
- char *s = NULL;
-
- /* Skip blank and commented lines. */
- while (fgets (str, sizeof str, file) == (char *) 0
- || str[0] == '#'
- || ISSPACE (str[0]))
- ;
-
- s = str;
- count = 0;
-
- for (i = 0; i < N; i++)
- {
- /* Read the first word. */
- for (; (*s) && (!ISSPACE (*s)) && (*s != '#'); ++count)
- tmp[count] = *(s++);
-
- tmp[count] = ' ';
- count++;
-
- /* Jump spaces. */
- while ((*s) && ISSPACE (*s) && (*s != '#'))
- s++;
- }
-
- tmp[count-1] = '\0';
-
- return tmp;
-}
-
-/* Read one string from FILE. */
-
-static char *
-openscop_read_one_string (FILE *file)
-{
- return openscop_read_N_string (file, 1);
-}
-
-/* Read from FILE the powerset PS in its OpenScop matrix form. OUTPUT is the
- number of output dimensions, INPUT is the number of input dimensions,
- LOCALS is the number of existentially quantified variables and PARAMS is
- the number of parameters. */
-
-static void
-openscop_read_powerset_matrix (FILE *file,
- ppl_Pointset_Powerset_C_Polyhedron_t *ps,
- int *output, int *input, int *locals,
- int *params)
-{
- int nb_disjuncts, i;
-
- nb_disjuncts = openscop_read_one_int (file);
-
- for (i = 0; i < nb_disjuncts; i++)
- {
- ppl_Polyhedron_t ph;
-
- openscop_read_polyhedron_matrix (file, &ph, output, input, locals,
- params);
- if (!ph)
- *ps = NULL;
- else if (i == 0)
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (ps, ph);
- else
- ppl_Pointset_Powerset_C_Polyhedron_add_disjunct (*ps, ph);
- }
-}
-
-/* Read a scattering function from FILE and save it to PBB. Return whether
- the scattering function was provided or not. */
-
-static bool
-graphite_read_scatt (FILE *file, poly_bb_p pbb)
-{
- bool scattering_provided = false;
- int output, input, locals, params;
- ppl_Polyhedron_t newp;
-
- if (openscop_read_one_int (file) > 0)
- {
- /* Read number of disjunct components. */
- openscop_read_one_int (file);
-
- /* Read scattering function. */
- openscop_read_polyhedron_matrix (file, &newp, &output, &input,
- &locals, &params);
- store_scattering (PBB_SCOP (pbb));
- PBB_TRANSFORMED (pbb) = poly_scattering_new ();
- PBB_TRANSFORMED_SCATTERING (pbb) = newp;
- PBB_NB_LOCAL_VARIABLES (pbb) = locals;
-
- /* New scattering dimension. */
- PBB_NB_SCATTERING_TRANSFORM (pbb) = output;
-
- scattering_provided = true;
- }
-
- return scattering_provided;
-}
-
-/* Read a scop file. Return true if the scop is transformed. */
-
-static bool
-graphite_read_scop_file (FILE *file, scop_p scop)
-{
- char *tmp, *language;
- size_t i, j, nb_statements, nbr, nbw;
- int input, output, locals, params;
- ppl_Pointset_Powerset_C_Polyhedron_t ps;
- poly_bb_p pbb;
- bool transform_done = false;
-
- /* Ensure that the file is in OpenScop format. */
- tmp = openscop_read_N_string (file, 2);
-
- if (strcmp (tmp, "SCoP 1"))
- {
- error ("the file is not in OpenScop format");
- return false;
- }
-
- free (tmp);
-
- /* Read the language. */
- language = openscop_read_one_string (file);
-
- if (strcmp (language, "Gimple"))
- {
- error ("the language is not recognized");
- return false;
- }
-
- free (language);
-
- /* Read the context but do not use it. */
- openscop_read_powerset_matrix (file, &ps, &input, &output, &locals, &params);
-
- if ((size_t) params != scop->nb_params)
- {
- error ("parameters number in the scop file is different from the"
- " internal scop parameter number");
- return false;
- }
-
- /* Read parameter names if provided. */
- if (openscop_read_one_int (file))
- openscop_read_N_string (file, scop->nb_params);
-
- nb_statements = openscop_read_one_int (file);
-
- if (nb_statements != VEC_length (poly_bb_p, SCOP_BBS (scop)))
- {
- error ("number of statements in the OpenScop file does not match"
- " the graphite internal statements number");
- return false;
- }
-
- for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb); i++)
- {
- /* Read iteration domain. */
- openscop_read_powerset_matrix (file, &ps, &input, &output, &locals,
- &params);
-
- /* Read scattering. */
- transform_done = graphite_read_scatt (file, pbb);
-
- /* Scattering names. */
- openscop_read_one_int (file);
-
- /* Read access functions. */
- if (openscop_read_one_int (file) > 0)
- {
- nbr = openscop_read_one_int (file);
-
- /* Read access functions. */
- for (j = 0; j < nbr; j++)
- openscop_read_powerset_matrix (file, &ps, &input, &output, &locals,
- &params);
-
- nbw = openscop_read_one_int (file);
-
- /* Write access functions. */
- for (j = 0; j < nbw; j++)
- openscop_read_powerset_matrix (file, &ps, &input, &output, &locals,
- &params);
- }
-
- /* Statement body. */
- openscop_read_one_int (file);
- }
-
- return transform_done;
-}
-
-/* Initialize and return a file that will be used to write a scop. SCOP_NUMBER
- is a sequential number (identifier) used to differentiate scop files.
- Examples of the generated file names: dump_base_name.0.graphite,
- dump_base_name.1.graphite, dump_base_name.2.graphite, etc. */
-
-static FILE *
-init_graphite_out_file (int scop_number)
-{
- FILE *graphite_out_file;
- int len = strlen (dump_base_name);
- char *dumpname = XNEWVEC (char, len + 25);
- char *s_scop_number = XNEWVEC (char, 15);
-
- memcpy (dumpname, dump_base_name, len + 1);
- strip_off_ending (dumpname, len);
- sprintf (s_scop_number, ".%d", scop_number);
- strcat (dumpname, s_scop_number);
- strcat (dumpname, ".graphite");
- graphite_out_file = fopen (dumpname, "w+b");
-
- if (graphite_out_file == 0)
- fatal_error ("can%'t open %s for writing: %m", dumpname);
-
- free (dumpname);
-
- return graphite_out_file;
-}
-
-/* Open and return a file used for scop reading. SCOP_NUMBER is a sequential
- number (identifier) used to differentiate scop files. Examples of the
- generated file names: dump_base_name.0.graphite, dump_base_name.1.graphite,
- dump_base_name.2.graphite, etc. */
-
-static FILE *
-init_graphite_in_file (int scop_number)
-{
- FILE *graphite_in_file;
- int len = strlen (dump_base_name);
- char *dumpname = XNEWVEC (char, len + 25);
- char *s_scop_number = XNEWVEC (char, 15);
-
- memcpy (dumpname, dump_base_name, len + 1);
- strip_off_ending (dumpname, len);
- sprintf (s_scop_number, ".%d", scop_number);
- strcat (dumpname, s_scop_number);
- strcat (dumpname, ".graphite");
- graphite_in_file = fopen (dumpname, "r+b");
-
- if (graphite_in_file == 0)
- fatal_error ("can%'t open %s for reading: %m", dumpname);
-
- free (dumpname);
-
- return graphite_in_file;
-}
-
/* Apply graphite transformations to all the basic blocks of SCOP. */
bool
apply_poly_transforms (scop_p scop)
{
bool transform_done = false;
- FILE *graphite_file;
- static size_t file_scop_number = 0;
-
- /* This feature is only enabled in the Graphite branch. */
- if (0)
- {
- graphite_file = init_graphite_in_file (file_scop_number);
- transform_done |= graphite_read_scop_file (graphite_file, scop);
-
- /* We cannot check for the legality of the transform here: there
- are cases where graphite_legal_transform cannot determine the
- dependence at compile time. For an example, see the
- explanation of why http://gcc.gnu.org/PR45450 is invalid. */
- if (0 && !graphite_legal_transform (scop))
- fatal_error ("the graphite file read for scop %d does not contain a legal transform",
- (int) file_scop_number);
-
- file_scop_number++;
- }
/* Generate code even if we did not apply any real transformation.
This also allows to check the performance for the identity
@@ -771,70 +250,22 @@ apply_poly_transforms (scop_p scop)
transform_done |= scop_do_interchange (scop);
}
- /* This feature is only enabled in the Graphite branch. */
- if (0)
- {
- graphite_file = init_graphite_out_file (file_scop_number);
- print_scop (graphite_file, scop, 1);
- file_scop_number++;
- }
+ /* This pass needs to be run at the final stage, as it does not
+ update the lst. */
+ if (flag_loop_optimize_isl)
+ transform_done |= optimize_isl (scop);
return transform_done;
}
-/* Returns true when it PDR1 is a duplicate of PDR2: same PBB, and
- their ACCESSES, TYPE, and NB_SUBSCRIPTS are the same. */
-
-static inline bool
-can_collapse_pdrs (poly_dr_p pdr1, poly_dr_p pdr2)
-{
- bool res;
- ppl_Pointset_Powerset_C_Polyhedron_t af1, af2, diff;
-
- if (PDR_PBB (pdr1) != PDR_PBB (pdr2)
- || PDR_NB_SUBSCRIPTS (pdr1) != PDR_NB_SUBSCRIPTS (pdr2)
- || PDR_TYPE (pdr1) != PDR_TYPE (pdr2))
- return false;
-
- af1 = PDR_ACCESSES (pdr1);
- af2 = PDR_ACCESSES (pdr2);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&diff, af1);
- ppl_Pointset_Powerset_C_Polyhedron_difference_assign (diff, af2);
-
- res = ppl_Pointset_Powerset_C_Polyhedron_is_empty (diff);
- ppl_delete_Pointset_Powerset_C_Polyhedron (diff);
- return res;
-}
-
-/* Removes duplicated data references in PBB. */
-
-void
-pbb_remove_duplicate_pdrs (poly_bb_p pbb)
-{
- int i, j;
- poly_dr_p pdr1, pdr2;
-
- FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), i, pdr1)
- for (j = i + 1; VEC_iterate (poly_dr_p, PBB_DRS (pbb), j, pdr2); j++)
- if (can_collapse_pdrs (pdr1, pdr2))
- {
- PDR_NB_REFS (pdr1) += PDR_NB_REFS (pdr2);
- free_poly_dr (pdr2);
- VEC_ordered_remove (poly_dr_p, PBB_DRS (pbb), j);
- }
-
- PBB_PDR_DUPLICATES_REMOVED (pbb) = true;
-}
-
/* Create a new polyhedral data reference and add it to PBB. It is
defined by its ACCESSES, its TYPE, and the number of subscripts
NB_SUBSCRIPTS. */
void
new_poly_dr (poly_bb_p pbb, int dr_base_object_set,
- ppl_Pointset_Powerset_C_Polyhedron_t accesses,
- enum poly_dr_type type, void *cdr, graphite_dim_t nb_subscripts)
+ enum poly_dr_type type, void *cdr, graphite_dim_t nb_subscripts,
+ isl_map *acc, isl_set *extent)
{
static int id = 0;
poly_dr_p pdr = XNEW (struct poly_dr);
@@ -843,7 +274,8 @@ new_poly_dr (poly_bb_p pbb, int dr_base_object_set,
PDR_BASE_OBJECT_SET (pdr) = dr_base_object_set;
PDR_NB_REFS (pdr) = 1;
PDR_PBB (pdr) = pbb;
- PDR_ACCESSES (pdr) = accesses;
+ pdr->accesses = acc;
+ pdr->extent = extent;
PDR_TYPE (pdr) = type;
PDR_CDR (pdr) = cdr;
PDR_NB_SUBSCRIPTS (pdr) = nb_subscripts;
@@ -855,7 +287,8 @@ new_poly_dr (poly_bb_p pbb, int dr_base_object_set,
void
free_poly_dr (poly_dr_p pdr)
{
- ppl_delete_Pointset_Powerset_C_Polyhedron (PDR_ACCESSES (pdr));
+ isl_map_free (pdr->accesses);
+ isl_set_free (pdr->extent);
XDELETE (pdr);
}
@@ -866,7 +299,10 @@ new_poly_bb (scop_p scop, void *black_box)
{
poly_bb_p pbb = XNEW (struct poly_bb);
- PBB_DOMAIN (pbb) = NULL;
+ pbb->domain = NULL;
+ pbb->schedule = NULL;
+ pbb->transformed = NULL;
+ pbb->saved = NULL;
PBB_SCOP (pbb) = scop;
pbb_set_black_box (pbb, black_box);
PBB_TRANSFORMED (pbb) = NULL;
@@ -874,7 +310,6 @@ new_poly_bb (scop_p scop, void *black_box)
PBB_ORIGINAL (pbb) = NULL;
PBB_DRS (pbb) = VEC_alloc (poly_dr_p, heap, 3);
PBB_IS_REDUCTION (pbb) = false;
- PBB_PDR_DUPLICATES_REMOVED (pbb) = false;
GBB_PBB ((gimple_bb_p) black_box) = pbb;
return pbb;
@@ -888,16 +323,10 @@ free_poly_bb (poly_bb_p pbb)
int i;
poly_dr_p pdr;
- ppl_delete_Pointset_Powerset_C_Polyhedron (PBB_DOMAIN (pbb));
-
- if (PBB_TRANSFORMED (pbb))
- poly_scattering_free (PBB_TRANSFORMED (pbb));
-
- if (PBB_SAVED (pbb))
- poly_scattering_free (PBB_SAVED (pbb));
-
- if (PBB_ORIGINAL (pbb))
- poly_scattering_free (PBB_ORIGINAL (pbb));
+ isl_set_free (pbb->domain);
+ isl_map_free (pbb->schedule);
+ isl_map_free (pbb->transformed);
+ isl_map_free (pbb->saved);
if (PBB_DRS (pbb))
FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), i, pdr)
@@ -934,8 +363,6 @@ print_pdr_access_layout (FILE *file, poly_bb_p pbb, poly_dr_p pdr)
void
print_pdr (FILE *file, poly_dr_p pdr, int verbosity)
{
- int alias_set_dim;
-
if (verbosity > 1)
{
fprintf (file, "# pdr_%d (", PDR_ID (pdr));
@@ -967,13 +394,7 @@ print_pdr (FILE *file, poly_dr_p pdr, int verbosity)
print_pdr_access_layout (file, PDR_PBB (pdr), pdr);
}
- alias_set_dim = pdr_alias_set_dim (pdr) + 1;
-
- openscop_print_pdr_powerset (file,
- PDR_ACCESSES (pdr),
- PDR_NB_SUBSCRIPTS (pdr),
- alias_set_dim,
- pbb_nb_params (PDR_PBB (pdr)));
+ /* XXX isl dump accesses/subscripts */
if (verbosity > 0)
fprintf (file, "#)\n");
@@ -998,11 +419,21 @@ new_scop (void *region)
{
scop_p scop = XNEW (struct scop);
- SCOP_CONTEXT (scop) = NULL;
+ scop->context = NULL;
+ scop->must_raw = NULL;
+ scop->may_raw = NULL;
+ scop->must_raw_no_source = NULL;
+ scop->may_raw_no_source = NULL;
+ scop->must_war = NULL;
+ scop->may_war = NULL;
+ scop->must_war_no_source = NULL;
+ scop->may_war_no_source = NULL;
+ scop->must_waw = NULL;
+ scop->may_waw = NULL;
+ scop->must_waw_no_source = NULL;
+ scop->may_waw_no_source = NULL;
scop_set_region (scop, region);
SCOP_BBS (scop) = VEC_alloc (poly_bb_p, heap, 3);
- SCOP_ORIGINAL_PDDRS (scop) = htab_create (10, hash_poly_ddr_p,
- eq_poly_ddr_p, free_poly_ddr);
SCOP_ORIGINAL_SCHEDULE (scop) = NULL;
SCOP_TRANSFORMED_SCHEDULE (scop) = NULL;
SCOP_SAVED_SCHEDULE (scop) = NULL;
@@ -1024,10 +455,19 @@ free_scop (scop_p scop)
VEC_free (poly_bb_p, heap, SCOP_BBS (scop));
- if (SCOP_CONTEXT (scop))
- ppl_delete_Pointset_Powerset_C_Polyhedron (SCOP_CONTEXT (scop));
-
- htab_delete (SCOP_ORIGINAL_PDDRS (scop));
+ isl_set_free (scop->context);
+ isl_union_map_free (scop->must_raw);
+ isl_union_map_free (scop->may_raw);
+ isl_union_map_free (scop->must_raw_no_source);
+ isl_union_map_free (scop->may_raw_no_source);
+ isl_union_map_free (scop->must_war);
+ isl_union_map_free (scop->may_war);
+ isl_union_map_free (scop->must_war_no_source);
+ isl_union_map_free (scop->may_war_no_source);
+ isl_union_map_free (scop->must_waw);
+ isl_union_map_free (scop->may_waw);
+ isl_union_map_free (scop->must_waw_no_source);
+ isl_union_map_free (scop->may_waw_no_source);
free_lst (SCOP_ORIGINAL_SCHEDULE (scop));
free_lst (SCOP_TRANSFORMED_SCHEDULE (scop));
free_lst (SCOP_SAVED_SCHEDULE (scop));
@@ -1043,7 +483,7 @@ openscop_print_pbb_domain (FILE *file, poly_bb_p pbb, int verbosity)
graphite_dim_t i;
gimple_bb_p gbb = PBB_BLACK_BOX (pbb);
- if (!PBB_DOMAIN (pbb))
+ if (!pbb->domain)
return;
if (verbosity > 0)
@@ -1060,14 +500,7 @@ openscop_print_pbb_domain (FILE *file, poly_bb_p pbb, int verbosity)
fprintf (file, " cst\n");
}
- if (PBB_DOMAIN (pbb))
- openscop_print_powerset_matrix (file, PBB_DOMAIN (pbb),
- pbb_dim_iter_domain (pbb),
- 0,
- 0,
- pbb_nb_params (pbb));
- else
- fprintf (file, "0\n");
+ fprintf (file, "XXX isl\n");
if (verbosity > 0)
fprintf (file, "#)\n");
@@ -1076,35 +509,9 @@ openscop_print_pbb_domain (FILE *file, poly_bb_p pbb, int verbosity)
/* Print to FILE the domain of PBB, at some VERBOSITY level. */
void
-print_pbb_domain (FILE *file, poly_bb_p pbb, int verbosity)
+print_pbb_domain (FILE *file, poly_bb_p pbb, int verbosity ATTRIBUTE_UNUSED)
{
- graphite_dim_t i;
- gimple_bb_p gbb = PBB_BLACK_BOX (pbb);
-
- if (!PBB_DOMAIN (pbb))
- return;
-
- if (verbosity > 0)
- {
- fprintf (file, "# Iteration domain of bb_%d (\n", GBB_BB (gbb)->index);
- fprintf (file, "# eq");
-
- for (i = 0; i < pbb_dim_iter_domain (pbb); i++)
- fprintf (file, " i%d", (int) i);
-
- for (i = 0; i < pbb_nb_params (pbb); i++)
- fprintf (file, " p%d", (int) i);
-
- fprintf (file, " cst\n");
- }
-
- if (PBB_DOMAIN (pbb))
- ppl_print_powerset_matrix (file, PBB_DOMAIN (pbb));
- else
- fprintf (file, "0\n");
-
- if (verbosity > 0)
- fprintf (file, "#)\n");
+ print_isl_set (file, pbb->domain);
}
/* Dump the cases of a graphite basic block GBB on FILE. */
@@ -1266,7 +673,7 @@ print_pbb_body (FILE *file, poly_bb_p pbb, int verbosity,
fprintf (file, "# Statement body\n");
fprintf (file, "{\n");
- dump_bb (pbb_bb (pbb), file, 0);
+ dump_bb (file, pbb_bb (pbb), 0, 0);
fprintf (file, "}\n");
if (verbosity > 1)
@@ -1354,9 +761,9 @@ openscop_print_scop_context (FILE *file, scop_p scop, int verbosity)
fprintf (file, " cst\n");
}
- if (SCOP_CONTEXT (scop))
- openscop_print_powerset_matrix (file, SCOP_CONTEXT (scop), 0, 0, 0,
- scop_nb_params (scop));
+ if (scop->context)
+ /* XXX isl print context */
+ fprintf (file, "XXX isl\n");
else
fprintf (file, "0 %d 0 0 0 %d\n", (int) scop_nb_params (scop) + 2,
(int) scop_nb_params (scop));
@@ -1383,10 +790,10 @@ print_scop_context (FILE *file, scop_p scop, int verbosity)
fprintf (file, " cst\n");
}
- if (SCOP_CONTEXT (scop))
- ppl_print_powerset_matrix (file, SCOP_CONTEXT (scop));
+ if (scop->context)
+ print_isl_set (file, scop->context);
else
- fprintf (file, "0 %d\n", (int) scop_nb_params (scop) + 2);
+ fprintf (file, "no isl context %d\n", (int) scop_nb_params (scop) + 2);
if (verbosity > 0)
fprintf (file, "# )\n");
@@ -1476,13 +883,10 @@ print_cloog (FILE *file, scop_p scop, int verbosity)
fprintf (file, "# Number of scattering functions\n");
fprintf (file, "%d\n", VEC_length (poly_bb_p, SCOP_BBS (scop)));
- unify_scattering_dimensions (scop);
FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
{
- if (!PBB_TRANSFORMED (pbb)
- || !(PBB_TRANSFORMED_SCATTERING (pbb)
- || PBB_ORIGINAL_SCATTERING (pbb)))
+ if (!(pbb->transformed || pbb->schedule))
continue;
if (verbosity > 1)
@@ -1554,66 +958,61 @@ debug_scop_params (scop_p scop, int verbosity)
print_scop_params (stderr, scop, verbosity);
}
-
-/* The dimension in the transformed scattering polyhedron of PBB
- containing the scattering iterator for the loop at depth LOOP_DEPTH. */
-
-ppl_dimension_type
-psct_scattering_dim_for_loop_depth (poly_bb_p pbb, graphite_dim_t loop_depth)
+extern isl_ctx *the_isl_ctx;
+void
+print_isl_set (FILE *f, isl_set *set)
{
- ppl_const_Constraint_System_t pcs;
- ppl_Constraint_System_const_iterator_t cit, cend;
- ppl_const_Constraint_t cstr;
- ppl_Polyhedron_t ph = PBB_TRANSFORMED_SCATTERING (pbb);
- ppl_dimension_type iter = psct_iterator_dim (pbb, loop_depth);
- ppl_Linear_Expression_t expr;
- ppl_Coefficient_t coef;
- mpz_t val;
- graphite_dim_t i;
-
- mpz_init (val);
- ppl_new_Coefficient (&coef);
- ppl_Polyhedron_get_constraints (ph, &pcs);
- ppl_new_Constraint_System_const_iterator (&cit);
- ppl_new_Constraint_System_const_iterator (&cend);
+ isl_printer *p = isl_printer_to_file (the_isl_ctx, f);
+ p = isl_printer_print_set (p, set);
+ isl_printer_free (p);
+}
- for (ppl_Constraint_System_begin (pcs, cit),
- ppl_Constraint_System_end (pcs, cend);
- !ppl_Constraint_System_const_iterator_equal_test (cit, cend);
- ppl_Constraint_System_const_iterator_increment (cit))
- {
- ppl_Constraint_System_const_iterator_dereference (cit, &cstr);
- ppl_new_Linear_Expression_from_Constraint (&expr, cstr);
- ppl_Linear_Expression_coefficient (expr, iter, coef);
- ppl_Coefficient_to_mpz_t (coef, val);
+DEBUG_FUNCTION void
+debug_isl_set (isl_set *set)
+{
+ print_isl_set (stderr, set);
+}
- if (mpz_sgn (val) == 0)
- {
- ppl_delete_Linear_Expression (expr);
- continue;
- }
+void
+print_isl_map (FILE *f, isl_map *map)
+{
+ isl_printer *p = isl_printer_to_file (the_isl_ctx, f);
+ p = isl_printer_print_map (p, map);
+ isl_printer_free (p);
+}
- for (i = 0; i < pbb_nb_scattering_transform (pbb); i++)
- {
- ppl_dimension_type scatter = psct_scattering_dim (pbb, i);
+DEBUG_FUNCTION void
+debug_isl_map (isl_map *map)
+{
+ print_isl_map (stderr, map);
+}
- ppl_Linear_Expression_coefficient (expr, scatter, coef);
- ppl_Coefficient_to_mpz_t (coef, val);
+void
+print_isl_aff (FILE *f, isl_aff *aff)
+{
+ isl_printer *p = isl_printer_to_file (the_isl_ctx, f);
+ p = isl_printer_print_aff (p, aff);
+ isl_printer_free (p);
+}
- if (mpz_sgn (val) != 0)
- {
- mpz_clear (val);
- ppl_delete_Linear_Expression (expr);
- ppl_delete_Coefficient (coef);
- ppl_delete_Constraint_System_const_iterator (cit);
- ppl_delete_Constraint_System_const_iterator (cend);
+DEBUG_FUNCTION void
+debug_isl_aff (isl_aff *aff)
+{
+ print_isl_aff (stderr, aff);
+}
- return scatter;
- }
- }
- }
+void
+print_isl_constraint (FILE *f, isl_constraint *c)
+{
+ isl_printer *p = isl_printer_to_file (the_isl_ctx, f);
+ p = isl_printer_print_constraint (p, c);
+ isl_printer_free (p);
+}
- gcc_unreachable ();
+DEBUG_FUNCTION void
+debug_isl_constraint (isl_constraint *c)
+{
+ print_isl_constraint (stderr, c);
}
/* Returns the number of iterations RES of the loop around PBB at
@@ -1624,112 +1023,37 @@ pbb_number_of_iterations_at_time (poly_bb_p pbb,
graphite_dim_t time_depth,
mpz_t res)
{
- ppl_Pointset_Powerset_C_Polyhedron_t domain, sctr_lb, sctr_ub;
- ppl_dimension_type domain_dim, sctr_dim;
- graphite_dim_t dim_iter_domain = pbb_dim_iter_domain (pbb);
- ppl_Linear_Expression_t le;
- mpz_t lb, ub, diff, one;
- int i;
+ isl_set *transdomain;
+ isl_space *dc;
+ isl_aff *aff;
+ isl_int isllb, islub;
- ppl_Polyhedron_space_dimension (PBB_TRANSFORMED_SCATTERING (pbb), &sctr_dim);
+ isl_int_init (isllb);
+ isl_int_init (islub);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&domain, PBB_DOMAIN (pbb));
+ /* Map the iteration domain through the current scatter, and work
+ on the resulting set. */
+ transdomain = isl_set_apply (isl_set_copy (pbb->domain),
+ isl_map_copy (pbb->transformed));
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (domain, &domain_dim);
+ /* Select the time_depth' dimension via an affine expression. */
+ dc = isl_set_get_space (transdomain);
+ aff = isl_aff_zero_on_domain (isl_local_space_from_space (dc));
+ aff = isl_aff_set_coefficient_si (aff, isl_dim_in, time_depth, 1);
- mpz_init (diff);
- mpz_init (lb);
- mpz_init (ub);
- mpz_init (one);
- mpz_set_si (one, 1);
-
- /* Compute the upper bound on the original iteration domain and add
- that upper bound to the scattering. */
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (&sctr_ub, PBB_TRANSFORMED_SCATTERING (pbb));
- for (i = 0; i < (int) dim_iter_domain; i++)
- {
- ppl_Linear_Expression_t eq;
- ppl_Constraint_t pc;
- ppl_Constraint_System_t cs;
- ppl_Polyhedron_t ph;
- ppl_Pointset_Powerset_C_Polyhedron_t pph;
-
- ppl_new_Linear_Expression_with_dimension (&le, domain_dim);
- ppl_set_coef (le, i, 1);
- ppl_min_for_le_pointset (domain, le, lb);
- ppl_max_for_le_pointset (domain, le, ub);
- mpz_sub (diff, ub, lb);
- mpz_add (diff, diff, one);
-
- ppl_new_Linear_Expression_with_dimension (&eq, sctr_dim);
- ppl_set_coef (eq, psct_iterator_dim (pbb, i), -1);
- ppl_set_inhomogeneous_gmp (eq, diff);
-
- ppl_new_Constraint (&pc, eq, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_new_Constraint_System_from_Constraint (&cs, pc);
- ppl_new_C_Polyhedron_from_Constraint_System (&ph, cs);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&pph, ph);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (sctr_ub, pph);
-
- ppl_delete_Linear_Expression (le);
- ppl_delete_Linear_Expression (eq);
- ppl_delete_Polyhedron (ph);
- ppl_delete_Pointset_Powerset_C_Polyhedron (pph);
- ppl_delete_Constraint (pc);
- ppl_delete_Constraint_System (cs);
- }
+ /* And find the min/max for that function. */
+ /* XXX isl check results? */
+ isl_set_min (transdomain, aff, &isllb);
+ isl_set_max (transdomain, aff, &islub);
- /* Compute the lower bound on the original iteration domain and add
- it to the scattering. */
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (&sctr_lb, PBB_TRANSFORMED_SCATTERING (pbb));
- for (i = 0; i < (int) dim_iter_domain; i++)
- {
- ppl_Linear_Expression_t eq;
- ppl_Constraint_t pc;
- ppl_Constraint_System_t cs;
- ppl_Polyhedron_t ph;
- ppl_Pointset_Powerset_C_Polyhedron_t pph;
-
- ppl_new_Linear_Expression_with_dimension (&le, domain_dim);
- ppl_set_coef (le, i, 1);
- ppl_min_for_le_pointset (domain, le, lb);
-
- ppl_new_Linear_Expression_with_dimension (&eq, sctr_dim);
- ppl_set_coef (eq, psct_iterator_dim (pbb, i), -1);
- ppl_set_inhomogeneous_gmp (eq, lb);
-
- ppl_new_Constraint (&pc, eq, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_new_Constraint_System_from_Constraint (&cs, pc);
- ppl_new_C_Polyhedron_from_Constraint_System (&ph, cs);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&pph, ph);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (sctr_lb, pph);
-
- ppl_delete_Linear_Expression (le);
- ppl_delete_Linear_Expression (eq);
- ppl_delete_Polyhedron (ph);
- ppl_delete_Pointset_Powerset_C_Polyhedron (pph);
- ppl_delete_Constraint (pc);
- ppl_delete_Constraint_System (cs);
- }
+ isl_int_sub (islub, islub, isllb);
+ isl_int_add_ui (islub, islub, 1);
+ isl_int_get_gmp (islub, res);
- /* Extract the number of iterations. */
- ppl_new_Linear_Expression_with_dimension (&le, sctr_dim);
- ppl_set_coef (le, time_depth, 1);
- ppl_min_for_le_pointset (sctr_lb, le, lb);
- ppl_max_for_le_pointset (sctr_ub, le, ub);
- mpz_sub (res, ub, lb);
-
- mpz_clear (one);
- mpz_clear (diff);
- mpz_clear (lb);
- mpz_clear (ub);
- ppl_delete_Linear_Expression (le);
- ppl_delete_Pointset_Powerset_C_Polyhedron (sctr_ub);
- ppl_delete_Pointset_Powerset_C_Polyhedron (sctr_lb);
- ppl_delete_Pointset_Powerset_C_Polyhedron (domain);
+ isl_int_clear (isllb);
+ isl_int_clear (islub);
+ isl_aff_free (aff);
+ isl_set_free (transdomain);
}
/* Translates LOOP to LST. */
@@ -1927,5 +1251,45 @@ cloog_checksum (scop_p scop ATTRIBUTE_UNUSED)
#endif
}
+/* Reverse the loop around PBB at level DEPTH. */
+
+isl_map *
+reverse_loop_at_level (poly_bb_p pbb, int depth)
+{
+ unsigned i, depth_dim = psct_dynamic_dim (pbb, depth);
+ isl_space *d = isl_map_get_space (pbb->transformed);
+ isl_space *d1 = isl_space_range (d);
+ unsigned n = isl_space_dim (d1, isl_dim_out);
+ isl_space *d2 = isl_space_add_dims (d1, isl_dim_in, n);
+ isl_map *x = isl_map_universe (isl_space_copy (d2));
+ isl_constraint *c = isl_equality_alloc (isl_local_space_from_space (d2));
+
+ for (i = 0; i < n; i++)
+ if (i != depth_dim)
+ x = isl_map_equate (x, isl_dim_in, i, isl_dim_out, i);
+
+ c = isl_constraint_set_coefficient_si (c, isl_dim_in, depth_dim, 1);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, depth_dim, 1);
+ x = isl_map_add_constraint (x, c);
+ return x;
+}
+
+/* Reverse the loop at level DEPTH for all the PBBS. */
+
+isl_union_map *
+reverse_loop_for_pbbs (scop_p scop, VEC (poly_bb_p, heap) *pbbs, int depth)
+{
+ poly_bb_p pbb;
+ int i;
+ isl_space *space = isl_space_from_domain (isl_set_get_space (scop->context));
+ isl_union_map *res = isl_union_map_empty (space);
+
+ for (i = 0; VEC_iterate (poly_bb_p, pbbs, i, pbb); i++)
+ res = isl_union_map_add_map (res, reverse_loop_at_level (pbb, depth));
+
+ return res;
+}
+
+
#endif
diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h
index 417e99eef25..de1f06ff639 100644
--- a/gcc/graphite-poly.h
+++ b/gcc/graphite-poly.h
@@ -1,5 +1,5 @@
/* Graphite polyhedral representation.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@amd.com> and
Tobias Grosser <grosser@fim.uni-passau.de>.
@@ -34,7 +34,7 @@ typedef struct scop *scop_p;
DEF_VEC_P(scop_p);
DEF_VEC_ALLOC_P (scop_p, heap);
-typedef ppl_dimension_type graphite_dim_t;
+typedef unsigned graphite_dim_t;
static inline graphite_dim_t pbb_dim_iter_domain (const struct poly_bb *);
static inline graphite_dim_t pbb_nb_params (const struct poly_bb *);
@@ -180,7 +180,8 @@ struct poly_dr
- P: Number of parameters.
In the example, the vector "R C O I L P" is "7 7 3 2 0 1". */
- ppl_Pointset_Powerset_C_Polyhedron_t accesses;
+ isl_map *accesses;
+ isl_set *extent;
/* Data reference's base object set number, we must assure 2 pdrs are in the
same base object set before dependency checking. */
@@ -195,31 +196,20 @@ struct poly_dr
#define PDR_CDR(PDR) (PDR->compiler_dr)
#define PDR_PBB(PDR) (PDR->pbb)
#define PDR_TYPE(PDR) (PDR->type)
-#define PDR_ACCESSES(PDR) (PDR->accesses)
+#define PDR_ACCESSES(PDR) (NULL)
#define PDR_BASE_OBJECT_SET(PDR) (PDR->dr_base_object_set)
#define PDR_NB_SUBSCRIPTS(PDR) (PDR->nb_subscripts)
-void new_poly_dr (poly_bb_p, int, ppl_Pointset_Powerset_C_Polyhedron_t,
- enum poly_dr_type, void *, graphite_dim_t);
+void new_poly_dr (poly_bb_p, int, enum poly_dr_type, void *,
+ graphite_dim_t, isl_map *, isl_set *);
void free_poly_dr (poly_dr_p);
void debug_pdr (poly_dr_p, int);
void print_pdr (FILE *, poly_dr_p, int);
static inline scop_p pdr_scop (poly_dr_p pdr);
-/* The dimension of the PDR_ACCESSES polyhedron of PDR. */
-
-static inline ppl_dimension_type
-pdr_dim (poly_dr_p pdr)
-{
- ppl_dimension_type dim;
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PDR_ACCESSES (pdr),
- &dim);
- return dim;
-}
-
/* The dimension of the iteration domain of the scop of PDR. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pdr_dim_iter_domain (poly_dr_p pdr)
{
return pbb_dim_iter_domain (PDR_PBB (pdr));
@@ -227,7 +217,7 @@ pdr_dim_iter_domain (poly_dr_p pdr)
/* The number of parameters of the scop of PDR. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pdr_nb_params (poly_dr_p pdr)
{
return scop_nb_params (pdr_scop (pdr));
@@ -235,7 +225,7 @@ pdr_nb_params (poly_dr_p pdr)
/* The dimension of the alias set in PDR. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pdr_alias_set_dim (poly_dr_p pdr)
{
poly_bb_p pbb = PDR_PBB (pdr);
@@ -245,7 +235,7 @@ pdr_alias_set_dim (poly_dr_p pdr)
/* The dimension in PDR containing subscript S. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pdr_subscript_dim (poly_dr_p pdr, graphite_dim_t s)
{
poly_bb_p pbb = PDR_PBB (pdr);
@@ -255,7 +245,7 @@ pdr_subscript_dim (poly_dr_p pdr, graphite_dim_t s)
/* The dimension in PDR containing the loop iterator ITER. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pdr_iterator_dim (poly_dr_p pdr ATTRIBUTE_UNUSED, graphite_dim_t iter)
{
return iter;
@@ -263,7 +253,7 @@ pdr_iterator_dim (poly_dr_p pdr ATTRIBUTE_UNUSED, graphite_dim_t iter)
/* The dimension in PDR containing parameter PARAM. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pdr_parameter_dim (poly_dr_p pdr, graphite_dim_t param)
{
poly_bb_p pbb = PDR_PBB (pdr);
@@ -309,11 +299,6 @@ typedef struct poly_scattering *poly_scattering_p;
struct poly_scattering
{
- /* The scattering function containing the transformations: the
- layout of this polyhedron is: T|I|G with T the transform
- scattering, I the iteration domain, G the context parameters. */
- ppl_Polyhedron_t scattering;
-
/* The number of local variables. */
int nb_local_variables;
@@ -353,22 +338,22 @@ struct poly_bb
The number of variables in the DOMAIN may change and is not
related to the number of loops in the original code. */
- ppl_Pointset_Powerset_C_Polyhedron_t domain;
+ isl_set *domain;
/* The data references we access. */
VEC (poly_dr_p, heap) *drs;
/* The original scattering. */
- poly_scattering_p original;
+ poly_scattering_p _original;
+ isl_map *schedule;
/* The transformed scattering. */
- poly_scattering_p transformed;
+ poly_scattering_p _transformed;
+ isl_map *transformed;
/* A copy of the transformed scattering. */
- poly_scattering_p saved;
-
- /* True when the PDR duplicates have already been removed. */
- bool pdr_duplicates_removed;
+ poly_scattering_p _saved;
+ isl_map *saved;
/* True when this PBB contains only a reduction statement. */
bool is_reduction;
@@ -376,16 +361,18 @@ struct poly_bb
#define PBB_BLACK_BOX(PBB) ((gimple_bb_p) PBB->black_box)
#define PBB_SCOP(PBB) (PBB->scop)
-#define PBB_DOMAIN(PBB) (PBB->domain)
+#define PBB_DOMAIN(PBB) (NULL)
#define PBB_DRS(PBB) (PBB->drs)
-#define PBB_ORIGINAL(PBB) (PBB->original)
-#define PBB_ORIGINAL_SCATTERING(PBB) (PBB->original->scattering)
-#define PBB_TRANSFORMED(PBB) (PBB->transformed)
-#define PBB_TRANSFORMED_SCATTERING(PBB) (PBB->transformed->scattering)
-#define PBB_SAVED(PBB) (PBB->saved)
-#define PBB_NB_LOCAL_VARIABLES(PBB) (PBB->transformed->nb_local_variables)
-#define PBB_NB_SCATTERING_TRANSFORM(PBB) (PBB->transformed->nb_scattering)
-#define PBB_PDR_DUPLICATES_REMOVED(PBB) (PBB->pdr_duplicates_removed)
+#define PBB_ORIGINAL(PBB) (PBB->_original)
+#define PBB_ORIGINAL_SCATTERING(PBB) (NULL)
+#define PBB_TRANSFORMED(PBB) (PBB->_transformed)
+#define PBB_TRANSFORMED_SCATTERING(PBB) (NULL)
+#define PBB_SAVED(PBB) (PBB->_saved)
+/* XXX isl if we ever need local vars in the scatter, we can't use the
+ out dimension of transformed to count the scatterting transform dimension.
+ */
+#define PBB_NB_LOCAL_VARIABLES(PBB) (0)
+#define PBB_NB_SCATTERING_TRANSFORM(PBB) (isl_map_n_out (PBB->transformed))
#define PBB_IS_REDUCTION(PBB) (PBB->is_reduction)
extern poly_bb_p new_poly_bb (scop_p, void *);
@@ -410,12 +397,21 @@ extern void print_iteration_domain (FILE *, poly_bb_p, int);
extern void print_iteration_domains (FILE *, scop_p, int);
extern void debug_iteration_domain (poly_bb_p, int);
extern void debug_iteration_domains (scop_p, int);
+extern void print_isl_set (FILE *, isl_set *);
+extern void print_isl_map (FILE *, isl_map *);
+extern void print_isl_aff (FILE *, isl_aff *);
+extern void print_isl_constraint (FILE *, isl_constraint *);
+extern void debug_isl_set (isl_set *);
+extern void debug_isl_map (isl_map *);
+extern void debug_isl_aff (isl_aff *);
+extern void debug_isl_constraint (isl_constraint *);
extern int scop_do_interchange (scop_p);
extern int scop_do_strip_mine (scop_p, int);
extern bool scop_do_block (scop_p);
extern bool flatten_all_loops (scop_p);
+extern bool optimize_isl(scop_p);
extern void pbb_number_of_iterations_at_time (poly_bb_p, graphite_dim_t, mpz_t);
-extern void pbb_remove_duplicate_pdrs (poly_bb_p);
+extern void debug_gmp_value (mpz_t);
/* Return the number of write data references in PBB. */
@@ -495,11 +491,7 @@ pbb_set_black_box (poly_bb_p pbb, void *black_box)
static inline graphite_dim_t
pbb_dim_iter_domain (const struct poly_bb *pbb)
{
- scop_p scop = PBB_SCOP (pbb);
- ppl_dimension_type dim;
-
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PBB_DOMAIN (pbb), &dim);
- return dim - scop_nb_params (scop);
+ return isl_set_dim (pbb->domain, isl_dim_set);
}
/* The number of params defined in PBB. */
@@ -544,7 +536,7 @@ pbb_nb_dynamic_scattering_transform (const struct poly_bb *pbb)
scattering polyhedron of PBB. */
static inline graphite_dim_t
-pbb_nb_local_vars (const struct poly_bb *pbb)
+pbb_nb_local_vars (const struct poly_bb *pbb ATTRIBUTE_UNUSED)
{
/* For now we do not have any local variables, as we do not do strip
mining for example. */
@@ -553,7 +545,7 @@ pbb_nb_local_vars (const struct poly_bb *pbb)
/* The dimension in the domain of PBB containing the iterator ITER. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pbb_iterator_dim (poly_bb_p pbb ATTRIBUTE_UNUSED, graphite_dim_t iter)
{
return iter;
@@ -561,7 +553,7 @@ pbb_iterator_dim (poly_bb_p pbb ATTRIBUTE_UNUSED, graphite_dim_t iter)
/* The dimension in the domain of PBB containing the iterator ITER. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
pbb_parameter_dim (poly_bb_p pbb, graphite_dim_t param)
{
return param
@@ -571,7 +563,7 @@ pbb_parameter_dim (poly_bb_p pbb, graphite_dim_t param)
/* The dimension in the original scattering polyhedron of PBB
containing the scattering iterator SCATTER. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psco_scattering_dim (poly_bb_p pbb ATTRIBUTE_UNUSED, graphite_dim_t scatter)
{
gcc_assert (scatter < pbb_nb_scattering_orig (pbb));
@@ -581,20 +573,17 @@ psco_scattering_dim (poly_bb_p pbb ATTRIBUTE_UNUSED, graphite_dim_t scatter)
/* The dimension in the transformed scattering polyhedron of PBB
containing the scattering iterator SCATTER. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psct_scattering_dim (poly_bb_p pbb ATTRIBUTE_UNUSED, graphite_dim_t scatter)
{
gcc_assert (scatter <= pbb_nb_scattering_transform (pbb));
return scatter;
}
-ppl_dimension_type psct_scattering_dim_for_loop_depth (poly_bb_p,
- graphite_dim_t);
-
/* The dimension in the transformed scattering polyhedron of PBB of
the local variable LV. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psct_local_var_dim (poly_bb_p pbb, graphite_dim_t lv)
{
gcc_assert (lv <= pbb_nb_local_vars (pbb));
@@ -604,7 +593,7 @@ psct_local_var_dim (poly_bb_p pbb, graphite_dim_t lv)
/* The dimension in the original scattering polyhedron of PBB
containing the loop iterator ITER. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psco_iterator_dim (poly_bb_p pbb, graphite_dim_t iter)
{
gcc_assert (iter < pbb_dim_iter_domain (pbb));
@@ -614,7 +603,7 @@ psco_iterator_dim (poly_bb_p pbb, graphite_dim_t iter)
/* The dimension in the transformed scattering polyhedron of PBB
containing the loop iterator ITER. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psct_iterator_dim (poly_bb_p pbb, graphite_dim_t iter)
{
gcc_assert (iter < pbb_dim_iter_domain (pbb));
@@ -626,7 +615,7 @@ psct_iterator_dim (poly_bb_p pbb, graphite_dim_t iter)
/* The dimension in the original scattering polyhedron of PBB
containing parameter PARAM. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psco_parameter_dim (poly_bb_p pbb, graphite_dim_t param)
{
gcc_assert (param < pbb_nb_params (pbb));
@@ -638,7 +627,7 @@ psco_parameter_dim (poly_bb_p pbb, graphite_dim_t param)
/* The dimension in the transformed scattering polyhedron of PBB
containing parameter PARAM. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psct_parameter_dim (poly_bb_p pbb, graphite_dim_t param)
{
gcc_assert (param < pbb_nb_params (pbb));
@@ -651,7 +640,7 @@ psct_parameter_dim (poly_bb_p pbb, graphite_dim_t param)
/* The scattering dimension of PBB corresponding to the dynamic level
LEVEL. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psct_dynamic_dim (poly_bb_p pbb, graphite_dim_t level)
{
graphite_dim_t result = 1 + 2 * level;
@@ -663,7 +652,7 @@ psct_dynamic_dim (poly_bb_p pbb, graphite_dim_t level)
/* The scattering dimension of PBB corresponding to the static
sequence of the loop level LEVEL. */
-static inline ppl_dimension_type
+static inline graphite_dim_t
psct_static_dim (poly_bb_p pbb, graphite_dim_t level)
{
graphite_dim_t result = 2 * level;
@@ -676,25 +665,10 @@ psct_static_dim (poly_bb_p pbb, graphite_dim_t level)
variable and returns its index. */
static inline graphite_dim_t
-psct_add_local_variable (poly_bb_p pbb)
+psct_add_local_variable (poly_bb_p pbb ATTRIBUTE_UNUSED)
{
- graphite_dim_t nlv = pbb_nb_local_vars (pbb);
- ppl_dimension_type lv_column = psct_local_var_dim (pbb, nlv);
- ppl_insert_dimensions (PBB_TRANSFORMED_SCATTERING (pbb), lv_column, 1);
- PBB_NB_LOCAL_VARIABLES (pbb) += 1;
- return nlv;
-}
-
-/* Adds a dimension to the transformed scattering polyhedron of PBB at
- INDEX. */
-
-static inline void
-psct_add_scattering_dimension (poly_bb_p pbb, ppl_dimension_type index)
-{
- gcc_assert (index < pbb_nb_scattering_transform (pbb));
-
- ppl_insert_dimensions (PBB_TRANSFORMED_SCATTERING (pbb), index, 1);
- PBB_NB_SCATTERING_TRANSFORM (pbb) += 1;
+ gcc_unreachable ();
+ return 0;
}
typedef struct lst *lst_p;
@@ -1116,25 +1090,20 @@ lst_niter_for_loop (lst_p lst, mpz_t niter)
static inline void
pbb_update_scattering (poly_bb_p pbb, graphite_dim_t level, int dewey)
{
- ppl_Polyhedron_t ph = PBB_TRANSFORMED_SCATTERING (pbb);
- ppl_dimension_type sched = psct_static_dim (pbb, level);
- ppl_dimension_type ds[1];
- ppl_Constraint_t new_cstr;
- ppl_Linear_Expression_t expr;
- ppl_dimension_type dim;
+ graphite_dim_t sched = psct_static_dim (pbb, level);
+ isl_space *d = isl_map_get_space (pbb->transformed);
+ isl_space *d1 = isl_space_range (d);
+ unsigned i, n = isl_space_dim (d1, isl_dim_out);
+ isl_space *d2 = isl_space_add_dims (d1, isl_dim_in, n);
+ isl_map *x = isl_map_universe (d2);
+
+ x = isl_map_fix_si (x, isl_dim_out, sched, dewey);
- ppl_Polyhedron_space_dimension (ph, &dim);
- ds[0] = sched;
- ppl_Polyhedron_remove_space_dimensions (ph, ds, 1);
- ppl_insert_dimensions (ph, sched, 1);
+ for (i = 0; i < n; i++)
+ if (i != sched)
+ x = isl_map_equate (x, isl_dim_in, i, isl_dim_out, i);
- ppl_new_Linear_Expression_with_dimension (&expr, dim);
- ppl_set_coef (expr, sched, -1);
- ppl_set_inhomogeneous (expr, dewey);
- ppl_new_Constraint (&new_cstr, expr, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_delete_Linear_Expression (expr);
- ppl_Polyhedron_add_constraint (ph, new_cstr);
- ppl_delete_Constraint (new_cstr);
+ pbb->transformed = isl_map_apply_range (pbb->transformed, x);
}
/* Updates the scattering of all the PBBs under LST to be at the DEWEY
@@ -1401,7 +1370,18 @@ struct scop
-128 >= a >= 127
0 >= b >= 65,535
c = 2a + b */
- ppl_Pointset_Powerset_C_Polyhedron_t context;
+ isl_set *context;
+
+ /* The context used internally by ISL. */
+ isl_ctx *ctx;
+
+ /* The original dependence relations:
+ RAW are read after write dependences,
+ WAR are write after read dependences,
+ WAW are write after write dependences. */
+ isl_union_map *must_raw, *may_raw, *must_raw_no_source, *may_raw_no_source,
+ *must_war, *may_war, *must_war_no_source, *may_war_no_source,
+ *must_waw, *may_waw, *must_waw_no_source, *may_waw_no_source;
/* A hashtable of the data dependence relations for the original
scattering. */
@@ -1414,7 +1394,7 @@ struct scop
#define SCOP_BBS(S) (S->bbs)
#define SCOP_REGION(S) ((sese) S->region)
-#define SCOP_CONTEXT(S) (S->context)
+#define SCOP_CONTEXT(S) (NULL)
#define SCOP_ORIGINAL_PDDRS(S) (S->original_pddrs)
#define SCOP_ORIGINAL_SCHEDULE(S) (S->original_schedule)
#define SCOP_TRANSFORMED_SCHEDULE(S) (S->transformed_schedule)
@@ -1467,7 +1447,6 @@ poly_scattering_new (void)
{
poly_scattering_p res = XNEW (struct poly_scattering);
- res->scattering = NULL;
res->nb_local_variables = 0;
res->nb_scattering = 0;
return res;
@@ -1478,7 +1457,6 @@ poly_scattering_new (void)
static inline void
poly_scattering_free (poly_scattering_p s)
{
- ppl_delete_Polyhedron (s->scattering);
free (s);
}
@@ -1489,7 +1467,6 @@ poly_scattering_copy (poly_scattering_p s)
{
poly_scattering_p res = poly_scattering_new ();
- ppl_new_C_Polyhedron_from_C_Polyhedron (&(res->scattering), s->scattering);
res->nb_local_variables = s->nb_local_variables;
res->nb_scattering = s->nb_scattering;
return res;
@@ -1500,12 +1477,8 @@ poly_scattering_copy (poly_scattering_p s)
static inline void
store_scattering_pbb (poly_bb_p pbb)
{
- gcc_assert (PBB_TRANSFORMED (pbb));
-
- if (PBB_SAVED (pbb))
- poly_scattering_free (PBB_SAVED (pbb));
-
- PBB_SAVED (pbb) = poly_scattering_copy (PBB_TRANSFORMED (pbb));
+ isl_map_free (pbb->saved);
+ pbb->saved = isl_map_copy (pbb->transformed);
}
/* Stores the SCOP_TRANSFORMED_SCHEDULE to SCOP_SAVED_SCHEDULE. */
@@ -1549,10 +1522,10 @@ store_scattering (scop_p scop)
static inline void
restore_scattering_pbb (poly_bb_p pbb)
{
- gcc_assert (PBB_SAVED (pbb));
+ gcc_assert (pbb->saved);
- poly_scattering_free (PBB_TRANSFORMED (pbb));
- PBB_TRANSFORMED (pbb) = poly_scattering_copy (PBB_SAVED (pbb));
+ isl_map_free (pbb->transformed);
+ pbb->transformed = isl_map_copy (pbb->saved);
}
/* Restores the scattering for all the pbbs in the SCOP. */
@@ -1569,49 +1542,28 @@ restore_scattering (scop_p scop)
restore_lst_schedule (scop);
}
-/* For a given PBB, add to RES the scop context, the iteration domain,
- the original scattering when ORIGINAL_P is true, otherwise add the
- transformed scattering. */
-
-static inline void
-combine_context_id_scat (ppl_Pointset_Powerset_C_Polyhedron_t *res,
- poly_bb_p pbb, bool original_p)
-{
- ppl_Pointset_Powerset_C_Polyhedron_t context;
- ppl_Pointset_Powerset_C_Polyhedron_t id;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (res, original_p ?
- PBB_ORIGINAL_SCATTERING (pbb) : PBB_TRANSFORMED_SCATTERING (pbb));
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&context, SCOP_CONTEXT (PBB_SCOP (pbb)));
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&id, PBB_DOMAIN (pbb));
-
- /* Extend the context and the iteration domain to the dimension of
- the scattering: T|I|G. */
- {
- ppl_dimension_type gdim, tdim, idim;
-
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (*res, &tdim);
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (context, &gdim);
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (id, &idim);
-
- if (tdim > gdim)
- ppl_insert_dimensions_pointset (context, 0, tdim - gdim);
-
- if (tdim > idim)
- ppl_insert_dimensions_pointset (id, 0, tdim - idim);
- }
-
- /* Add the context and the iteration domain to the result. */
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (*res, context);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (*res, id);
-
- ppl_delete_Pointset_Powerset_C_Polyhedron (context);
- ppl_delete_Pointset_Powerset_C_Polyhedron (id);
-}
+bool graphite_legal_transform (scop_p);
+poly_bb_p find_pbb_via_hash (htab_t, basic_block);
+bool loop_is_parallel_p (loop_p, htab_t, int);
+scop_p get_loop_body_pbbs (loop_p, htab_t, VEC (poly_bb_p, heap) **);
+isl_map *reverse_loop_at_level (poly_bb_p, int);
+isl_union_map *reverse_loop_for_pbbs (scop_p, VEC (poly_bb_p, heap) *, int);
+__isl_give isl_union_map *extend_schedule (__isl_take isl_union_map *);
+
+
+void
+compute_deps (scop_p scop, VEC (poly_bb_p, heap) *pbbs,
+ isl_union_map **must_raw,
+ isl_union_map **may_raw,
+ isl_union_map **must_raw_no_source,
+ isl_union_map **may_raw_no_source,
+ isl_union_map **must_war,
+ isl_union_map **may_war,
+ isl_union_map **must_war_no_source,
+ isl_union_map **may_war_no_source,
+ isl_union_map **must_waw,
+ isl_union_map **may_waw,
+ isl_union_map **must_waw_no_source,
+ isl_union_map **may_waw_no_source);
#endif
diff --git a/gcc/graphite-ppl.c b/gcc/graphite-ppl.c
deleted file mode 100644
index 9762ca46770..00000000000
--- a/gcc/graphite-ppl.c
+++ /dev/null
@@ -1,566 +0,0 @@
-/* Gimple Represented as Polyhedra.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
- Contributed by Sebastian Pop <sebastian.pop@amd.com>
- and Tobias Grosser <grosser@fim.uni-passau.de>
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-
-#ifdef HAVE_cloog
-
-#include "ppl_c.h"
-#include "graphite-cloog-util.h"
-#include "graphite-ppl.h"
-
-/* Set the inhomogeneous term of E to X. */
-
-void
-ppl_set_inhomogeneous_gmp (ppl_Linear_Expression_t e, mpz_t x)
-{
- mpz_t v0, v1;
- ppl_Coefficient_t c;
-
- mpz_init (v0);
- mpz_init (v1);
- ppl_new_Coefficient (&c);
-
- ppl_Linear_Expression_inhomogeneous_term (e, c);
- ppl_Coefficient_to_mpz_t (c, v1);
- mpz_neg (v1, v1);
- mpz_set (v0, x);
- mpz_add (v0, v0, v1);
- ppl_assign_Coefficient_from_mpz_t (c, v0);
- ppl_Linear_Expression_add_to_inhomogeneous (e, c);
-
- mpz_clear (v0);
- mpz_clear (v1);
- ppl_delete_Coefficient (c);
-}
-
-/* Set E[I] to X. */
-
-void
-ppl_set_coef_gmp (ppl_Linear_Expression_t e, ppl_dimension_type i, mpz_t x)
-{
- mpz_t v0, v1;
- ppl_Coefficient_t c;
-
- mpz_init (v0);
- mpz_init (v1);
- ppl_new_Coefficient (&c);
-
- ppl_Linear_Expression_coefficient (e, i, c);
- ppl_Coefficient_to_mpz_t (c, v1);
- mpz_neg (v1, v1);
- mpz_set (v0, x);
- mpz_add (v0, v0, v1);
- ppl_assign_Coefficient_from_mpz_t (c, v0);
- ppl_Linear_Expression_add_to_coefficient (e, i, c);
-
- mpz_clear (v0);
- mpz_clear (v1);
- ppl_delete_Coefficient (c);
-}
-
-/* Insert after X NB_NEW_DIMS empty dimensions into PH.
-
- With x = 3 and nb_new_dims = 4
-
- | d0 d1 d2 d3 d4
-
- is transformed to
-
- | d0 d1 d2 x0 x1 x2 x3 d3 d4
-
- | map = {0, 1, 2, 7, 8, 3, 4, 5, 6}
-*/
-
-void
-ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_C_Polyhedron_t ph, int x,
- int nb_new_dims)
-{
- ppl_dimension_type i, dim;
- ppl_dimension_type *map;
- ppl_dimension_type x_ppl, nb_new_dims_ppl;
-
- x_ppl = (ppl_dimension_type) x;
- nb_new_dims_ppl = (ppl_dimension_type) nb_new_dims;
-
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (ph, &dim);
- ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed (ph, nb_new_dims);
-
- map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim + nb_new_dims);
-
- for (i = 0; i < x_ppl; i++)
- map[i] = i;
-
- for (i = x_ppl; i < x_ppl + nb_new_dims_ppl; i++)
- map[dim + i - x_ppl] = i;
-
- for (i = x_ppl + nb_new_dims_ppl; i < dim + nb_new_dims_ppl; i++)
- map[i - nb_new_dims_ppl] = i;
-
- ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (ph, map, dim + nb_new_dims);
- free (map);
-}
-
-/* Insert after X NB_NEW_DIMS empty dimensions into PH.
-
- With x = 3 and nb_new_dims = 4
-
- | d0 d1 d2 d3 d4
-
- is transformed to
-
- | d0 d1 d2 x0 x1 x2 x3 d3 d4
-
- | map = {0, 1, 2, 7, 8, 3, 4, 5, 6}
-*/
-
-void
-ppl_insert_dimensions (ppl_Polyhedron_t ph, int x,
- int nb_new_dims)
-{
- ppl_dimension_type i, dim;
- ppl_dimension_type *map;
- ppl_dimension_type x_ppl, nb_new_dims_ppl;
-
- x_ppl = (ppl_dimension_type) x;
- nb_new_dims_ppl = (ppl_dimension_type) nb_new_dims;
-
- ppl_Polyhedron_space_dimension (ph, &dim);
- ppl_Polyhedron_add_space_dimensions_and_embed (ph, nb_new_dims);
-
- map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim + nb_new_dims);
-
- for (i = 0; i < x_ppl; i++)
- map[i] = i;
-
- for (i = x_ppl; i < x_ppl + nb_new_dims_ppl; i++)
- map[dim + i - x_ppl] = i;
-
- for (i = x_ppl + nb_new_dims_ppl; i < dim + nb_new_dims_ppl; i++)
- map[i - nb_new_dims_ppl] = i;
-
- ppl_Polyhedron_map_space_dimensions (ph, map, dim + nb_new_dims);
- free (map);
-}
-
-/* Based on the original polyhedron PH, returns a new polyhedron with
- an extra dimension placed at position LOOP + 1 that slices the
- dimension LOOP into strips of size STRIDE. */
-
-ppl_Polyhedron_t
-ppl_strip_loop (ppl_Polyhedron_t ph, ppl_dimension_type loop, int stride)
-{
- ppl_const_Constraint_System_t pcs;
- ppl_Constraint_System_const_iterator_t cit, end;
- ppl_const_Constraint_t cstr;
- ppl_Linear_Expression_t expr;
- int v;
- ppl_dimension_type dim;
- ppl_Polyhedron_t res;
- ppl_Coefficient_t c;
- mpz_t val;
-
- mpz_init (val);
- ppl_new_Coefficient (&c);
-
- ppl_Polyhedron_space_dimension (ph, &dim);
- ppl_Polyhedron_get_constraints (ph, &pcs);
-
- /* Start from a copy of the constraints. */
- ppl_new_C_Polyhedron_from_space_dimension (&res, dim + 1, 0);
- ppl_Polyhedron_add_constraints (res, pcs);
-
- /* Add an empty dimension for the strip loop. */
- ppl_insert_dimensions (res, loop, 1);
-
- /* Identify the constraints that define the lower and upper bounds
- of the strip-mined loop, and add them to the strip loop. */
- {
- ppl_Polyhedron_t tmp;
-
- ppl_new_C_Polyhedron_from_space_dimension (&tmp, dim + 1, 0);
- ppl_new_Constraint_System_const_iterator (&cit);
- ppl_new_Constraint_System_const_iterator (&end);
-
- for (ppl_Constraint_System_begin (pcs, cit),
- ppl_Constraint_System_end (pcs, end);
- !ppl_Constraint_System_const_iterator_equal_test (cit, end);
- ppl_Constraint_System_const_iterator_increment (cit))
- {
- ppl_Constraint_System_const_iterator_dereference (cit, &cstr);
- ppl_new_Linear_Expression_from_Constraint (&expr, cstr);
- ppl_Linear_Expression_coefficient (expr, loop, c);
- ppl_delete_Linear_Expression (expr);
- ppl_Coefficient_to_mpz_t (c, val);
- v = mpz_get_si (val);
-
- if (0 < v || v < 0)
- ppl_Polyhedron_add_constraint (tmp, cstr);
- }
- ppl_delete_Constraint_System_const_iterator (cit);
- ppl_delete_Constraint_System_const_iterator (end);
-
- ppl_insert_dimensions (tmp, loop + 1, 1);
- ppl_Polyhedron_get_constraints (tmp, &pcs);
- ppl_Polyhedron_add_constraints (res, pcs);
- ppl_delete_Polyhedron (tmp);
- }
-
- /* Lower bound of a tile starts at "stride * outer_iv". */
- {
- ppl_Constraint_t new_cstr;
- ppl_new_Linear_Expression_with_dimension (&expr, dim + 1);
-
- ppl_set_coef (expr, loop + 1, 1);
- ppl_set_coef (expr, loop, -1 * stride);
-
- ppl_new_Constraint (&new_cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_delete_Linear_Expression (expr);
- ppl_Polyhedron_add_constraint (res, new_cstr);
- ppl_delete_Constraint (new_cstr);
- }
-
- /* Upper bound of a tile stops at "stride * outer_iv + stride - 1",
- or at the old upper bound that is not modified. */
- {
- ppl_Constraint_t new_cstr;
- ppl_new_Linear_Expression_with_dimension (&expr, dim + 1);
-
- ppl_set_coef (expr, loop + 1, -1);
- ppl_set_coef (expr, loop, stride);
- ppl_set_inhomogeneous (expr, stride - 1);
-
- ppl_new_Constraint (&new_cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_delete_Linear_Expression (expr);
- ppl_Polyhedron_add_constraint (res, new_cstr);
- ppl_delete_Constraint (new_cstr);
- }
-
- mpz_clear (val);
- ppl_delete_Coefficient (c);
- return res;
-}
-
-/* Lexicographically compares two linear expressions A and B and
- returns negative when A < B, 0 when A == B and positive when A > B. */
-
-int
-ppl_lexico_compare_linear_expressions (ppl_Linear_Expression_t a,
- ppl_Linear_Expression_t b)
-{
- ppl_dimension_type min_length, length1, length2;
- ppl_dimension_type i;
- ppl_Coefficient_t c;
- int res;
- mpz_t va, vb;
-
- ppl_Linear_Expression_space_dimension (a, &length1);
- ppl_Linear_Expression_space_dimension (b, &length2);
- ppl_new_Coefficient (&c);
- mpz_init (va);
- mpz_init (vb);
-
- if (length1 < length2)
- min_length = length1;
- else
- min_length = length2;
-
- for (i = 0; i < min_length; i++)
- {
- ppl_Linear_Expression_coefficient (a, i, c);
- ppl_Coefficient_to_mpz_t (c, va);
- ppl_Linear_Expression_coefficient (b, i, c);
- ppl_Coefficient_to_mpz_t (c, vb);
- res = mpz_cmp (va, vb);
-
- if (res == 0)
- continue;
-
- mpz_clear (va);
- mpz_clear (vb);
- ppl_delete_Coefficient (c);
- return res;
- }
-
- mpz_clear (va);
- mpz_clear (vb);
- ppl_delete_Coefficient (c);
- return length1 - length2;
-}
-
-/* Print to FILE the polyhedron PH under its PolyLib matrix form. */
-
-void
-ppl_print_polyhedron_matrix (FILE *file, ppl_const_Polyhedron_t ph)
-{
- CloogMatrix *mat = new_Cloog_Matrix_from_ppl_Polyhedron (ph);
- cloog_matrix_print (file, mat);
- cloog_matrix_free (mat);
-}
-
-/* Print to FILE the linear expression LE. */
-
-void
-ppl_print_linear_expr (FILE *file, ppl_Linear_Expression_t le)
-{
- ppl_Constraint_t c;
- ppl_Polyhedron_t pol;
- ppl_dimension_type dim;
-
- ppl_Linear_Expression_space_dimension (le, &dim);
- ppl_new_C_Polyhedron_from_space_dimension (&pol, dim, 0);
- ppl_new_Constraint (&c, le, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Polyhedron_add_constraint (pol, c);
- ppl_print_polyhedron_matrix (file, pol);
-}
-
-/* Print to STDERR the linear expression LE. */
-
-DEBUG_FUNCTION void
-debug_ppl_linear_expr (ppl_Linear_Expression_t le)
-{
- ppl_print_linear_expr (stderr, le);
-}
-
-/* Print to FILE the powerset PS in its PolyLib matrix form. */
-
-void
-ppl_print_powerset_matrix (FILE *file,
- ppl_Pointset_Powerset_C_Polyhedron_t ps)
-{
- size_t nb_disjuncts;
- ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
-
- ppl_Pointset_Powerset_C_Polyhedron_size (ps, &nb_disjuncts);
- fprintf (file, "%d\n", (int) nb_disjuncts);
-
- for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (ps, it),
- ppl_Pointset_Powerset_C_Polyhedron_iterator_end (ps, end);
- !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
- {
- ppl_const_Polyhedron_t ph;
-
- ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
- ppl_print_polyhedron_matrix (file, ph);
- }
-
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
-}
-
-/* Print to STDERR the polyhedron PH under its PolyLib matrix form. */
-
-DEBUG_FUNCTION void
-debug_ppl_polyhedron_matrix (ppl_Polyhedron_t ph)
-{
- ppl_print_polyhedron_matrix (stderr, ph);
-}
-
-/* Print to STDERR the powerset PS in its PolyLib matrix form. */
-
-DEBUG_FUNCTION void
-debug_ppl_powerset_matrix (ppl_Pointset_Powerset_C_Polyhedron_t ps)
-{
- ppl_print_powerset_matrix (stderr, ps);
-}
-
-/* Read from FILE a polyhedron under PolyLib matrix form and return a
- PPL polyhedron object. */
-
-void
-ppl_read_polyhedron_matrix (ppl_Polyhedron_t *ph, FILE *file)
-{
- CloogMatrix *mat = cloog_matrix_read (file);
- new_C_Polyhedron_from_Cloog_Matrix (ph, mat);
- cloog_matrix_free (mat);
-}
-
-/* Return in RES the maximum of the linear expression LE on the
- pointset powerset of polyhedra PS. */
-
-void
-ppl_max_for_le_pointset (ppl_Pointset_Powerset_C_Polyhedron_t ps,
- ppl_Linear_Expression_t le, mpz_t res)
-{
- ppl_Coefficient_t num, denom;
- mpz_t dv, nv;
- int maximum, err;
-
- mpz_init (nv);
- mpz_init (dv);
- ppl_new_Coefficient (&num);
- ppl_new_Coefficient (&denom);
- err = ppl_Pointset_Powerset_C_Polyhedron_maximize (ps, le, num, denom, &maximum);
-
- if (err > 0)
- {
- ppl_Coefficient_to_mpz_t (num, nv);
- ppl_Coefficient_to_mpz_t (denom, dv);
- gcc_assert (mpz_sgn (dv) != 0);
- mpz_tdiv_q (res, nv, dv);
- }
-
- mpz_clear (nv);
- mpz_clear (dv);
- ppl_delete_Coefficient (num);
- ppl_delete_Coefficient (denom);
-}
-
-/* Return in RES the maximum of the linear expression LE on the
- polyhedron POL. */
-
-void
-ppl_min_for_le_pointset (ppl_Pointset_Powerset_C_Polyhedron_t ps,
- ppl_Linear_Expression_t le, mpz_t res)
-{
- ppl_Coefficient_t num, denom;
- mpz_t dv, nv;
- int minimum, err;
-
- mpz_init (nv);
- mpz_init (dv);
- ppl_new_Coefficient (&num);
- ppl_new_Coefficient (&denom);
- err = ppl_Pointset_Powerset_C_Polyhedron_minimize (ps, le, num, denom, &minimum);
-
- if (err > 0)
- {
- ppl_Coefficient_to_mpz_t (num, nv);
- ppl_Coefficient_to_mpz_t (denom, dv);
- gcc_assert (mpz_sgn (dv) != 0);
- mpz_tdiv_q (res, nv, dv);
- }
-
- mpz_clear (nv);
- mpz_clear (dv);
- ppl_delete_Coefficient (num);
- ppl_delete_Coefficient (denom);
-}
-
-/* Builds a constraint in dimension DIM relating dimensions POS1 to
- POS2 as "POS1 - POS2 + C CSTR_TYPE 0" */
-
-ppl_Constraint_t
-ppl_build_relation (int dim, int pos1, int pos2, int c,
- enum ppl_enum_Constraint_Type cstr_type)
-{
- ppl_Linear_Expression_t expr;
- ppl_Constraint_t cstr;
- ppl_Coefficient_t coef;
- mpz_t v, v_op, v_c;
-
- mpz_init (v);
- mpz_init (v_op);
- mpz_init (v_c);
-
- mpz_set_si (v, 1);
- mpz_set_si (v_op, -1);
- mpz_set_si (v_c, c);
-
- ppl_new_Coefficient (&coef);
- ppl_new_Linear_Expression_with_dimension (&expr, dim);
-
- ppl_assign_Coefficient_from_mpz_t (coef, v);
- ppl_Linear_Expression_add_to_coefficient (expr, pos1, coef);
- ppl_assign_Coefficient_from_mpz_t (coef, v_op);
- ppl_Linear_Expression_add_to_coefficient (expr, pos2, coef);
- ppl_assign_Coefficient_from_mpz_t (coef, v_c);
- ppl_Linear_Expression_add_to_inhomogeneous (expr, coef);
-
- ppl_new_Constraint (&cstr, expr, cstr_type);
-
- ppl_delete_Linear_Expression (expr);
- ppl_delete_Coefficient (coef);
- mpz_clear (v);
- mpz_clear (v_op);
- mpz_clear (v_c);
-
- return cstr;
-}
-
-/* Print to STDERR the GMP value VAL. */
-
-DEBUG_FUNCTION void
-debug_gmp_value (mpz_t val)
-{
- char *str = mpz_get_str (0, 10, val);
- void (*gmp_free) (void *, size_t);
-
- fprintf (stderr, "%s", str);
- mp_get_memory_functions (NULL, NULL, &gmp_free);
- (*gmp_free) (str, strlen (str) + 1);
-}
-
-/* Checks for integer feasibility: returns true when the powerset
- polyhedron PS has no integer solutions. */
-
-bool
-ppl_powerset_is_empty (ppl_Pointset_Powerset_C_Polyhedron_t ps)
-{
- ppl_PIP_Problem_t pip;
- ppl_dimension_type d;
- ppl_const_Constraint_System_t pcs;
- ppl_Constraint_System_const_iterator_t first, last;
- ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
- bool has_integer_solutions = false;
-
- if (ppl_Pointset_Powerset_C_Polyhedron_is_empty (ps))
- return true;
-
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (ps, &d);
- ppl_new_Constraint_System_const_iterator (&first);
- ppl_new_Constraint_System_const_iterator (&last);
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
-
- for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (ps, it),
- ppl_Pointset_Powerset_C_Polyhedron_iterator_end (ps, end);
- !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
- {
- ppl_const_Polyhedron_t ph;
- ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
-
- ppl_Polyhedron_get_constraints (ph, &pcs);
- ppl_Constraint_System_begin (pcs, first);
- ppl_Constraint_System_end (pcs, last);
-
- ppl_new_PIP_Problem_from_constraints (&pip, d, first, last, 0, NULL);
- has_integer_solutions |= ppl_PIP_Problem_is_satisfiable (pip);
-
- ppl_delete_PIP_Problem (pip);
- }
-
- ppl_delete_Constraint_System_const_iterator (first);
- ppl_delete_Constraint_System_const_iterator (last);
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
-
- return !has_integer_solutions;
-}
-
-#endif
diff --git a/gcc/graphite-ppl.h b/gcc/graphite-ppl.h
deleted file mode 100644
index 5820e19927d..00000000000
--- a/gcc/graphite-ppl.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Gimple Represented as Polyhedra.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
- Contributed by Sebastian Pop <sebastian.pop@inria.fr>
- and Tobias Grosser <grosser@fim.uni-passau.de>.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-#ifndef GCC_GRAPHITE_PPL_H
-#define GCC_GRAPHITE_PPL_H
-
-#include "double-int.h"
-#include "tree.h"
-
-ppl_Polyhedron_t ppl_strip_loop (ppl_Polyhedron_t, ppl_dimension_type, int);
-int ppl_lexico_compare_linear_expressions (ppl_Linear_Expression_t,
- ppl_Linear_Expression_t);
-
-void ppl_print_polyhedron_matrix (FILE *, ppl_const_Polyhedron_t);
-void ppl_print_powerset_matrix (FILE *, ppl_Pointset_Powerset_C_Polyhedron_t);
-void debug_ppl_polyhedron_matrix (ppl_Polyhedron_t);
-void debug_ppl_powerset_matrix (ppl_Pointset_Powerset_C_Polyhedron_t);
-void ppl_print_linear_expr (FILE *, ppl_Linear_Expression_t);
-void debug_ppl_linear_expr (ppl_Linear_Expression_t);
-void ppl_read_polyhedron_matrix (ppl_Polyhedron_t *, FILE *);
-void ppl_insert_dimensions (ppl_Polyhedron_t, int, int);
-void ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_C_Polyhedron_t, int,
- int);
-void ppl_set_inhomogeneous_gmp (ppl_Linear_Expression_t, mpz_t);
-void ppl_set_coef_gmp (ppl_Linear_Expression_t, ppl_dimension_type, mpz_t);
-void ppl_max_for_le_pointset (ppl_Pointset_Powerset_C_Polyhedron_t,
- ppl_Linear_Expression_t, mpz_t);
-void ppl_min_for_le_pointset (ppl_Pointset_Powerset_C_Polyhedron_t,
- ppl_Linear_Expression_t, mpz_t);
-ppl_Constraint_t ppl_build_relation (int, int, int, int,
- enum ppl_enum_Constraint_Type);
-void debug_gmp_value (mpz_t);
-bool ppl_powerset_is_empty (ppl_Pointset_Powerset_C_Polyhedron_t);
-
-
-/* Assigns to RES the value of the INTEGER_CST T. */
-
-static inline void
-tree_int_to_gmp (tree t, mpz_t res)
-{
- double_int di = tree_to_double_int (t);
- mpz_set_double_int (res, di, TYPE_UNSIGNED (TREE_TYPE (t)));
-}
-
-/* Converts a GMP constant VAL to a tree and returns it. */
-
-static inline tree
-gmp_cst_to_tree (tree type, mpz_t val)
-{
- tree t = type ? type : integer_type_node;
- mpz_t tmp;
- double_int di;
-
- mpz_init (tmp);
- mpz_set (tmp, val);
- di = mpz_get_double_int (t, tmp, true);
- mpz_clear (tmp);
-
- return double_int_to_tree (t, di);
-}
-
-/* Set the inhomogeneous term of E to the integer X. */
-
-static inline void
-ppl_set_inhomogeneous (ppl_Linear_Expression_t e, int x)
-{
- mpz_t v;
- mpz_init (v);
- mpz_set_si (v, x);
- ppl_set_inhomogeneous_gmp (e, v);
- mpz_clear (v);
-}
-
-/* Set the inhomogeneous term of E to the tree X. */
-
-static inline void
-ppl_set_inhomogeneous_tree (ppl_Linear_Expression_t e, tree x)
-{
- mpz_t v;
- mpz_init (v);
- tree_int_to_gmp (x, v);
- ppl_set_inhomogeneous_gmp (e, v);
- mpz_clear (v);
-}
-
-/* Set E[I] to integer X. */
-
-static inline void
-ppl_set_coef (ppl_Linear_Expression_t e, ppl_dimension_type i, int x)
-{
- mpz_t v;
- mpz_init (v);
- mpz_set_si (v, x);
- ppl_set_coef_gmp (e, i, v);
- mpz_clear (v);
-}
-
-/* Set E[I] to tree X. */
-
-static inline void
-ppl_set_coef_tree (ppl_Linear_Expression_t e, ppl_dimension_type i, tree x)
-{
- mpz_t v;
- mpz_init (v);
- tree_int_to_gmp (x, v);
- ppl_set_coef_gmp (e, i, v);
- mpz_clear (v);
-}
-
-/* Sets RES to the min of V1 and V2. */
-
-static inline void
-value_min (mpz_t res, mpz_t v1, mpz_t v2)
-{
- if (mpz_cmp (v1, v2) < 0)
- mpz_set (res, v1);
- else
- mpz_set (res, v2);
-}
-
-/* Sets RES to the max of V1 and V2. */
-
-static inline void
-value_max (mpz_t res, mpz_t v1, mpz_t v2)
-{
- if (mpz_cmp (v1, v2) < 0)
- mpz_set (res, v2);
- else
- mpz_set (res, v1);
-}
-
-/* Builds a new identity map for dimension DIM. */
-
-static inline ppl_dimension_type *
-ppl_new_id_map (ppl_dimension_type dim)
-{
- ppl_dimension_type *map, i;
-
- map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim);
-
- for (i = 0; i < dim; i++)
- map[i] = i;
-
- return map;
-}
-
-/* Builds an interchange of dimensions A and B in MAP. */
-
-static inline void
-ppl_interchange (ppl_dimension_type *map,
- ppl_dimension_type a,
- ppl_dimension_type b)
-{
- map[a] = b;
- map[b] = a;
-}
-
-#endif
-
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index 3f4d7d8eb19..408e6b2fb52 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -1,5 +1,5 @@
/* Detection of Static Control Parts (SCoP) for Graphite.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@amd.com> and
Tobias Grosser <grosser@fim.uni-passau.de>.
@@ -20,6 +20,15 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "tree-flow.h"
@@ -31,8 +40,6 @@ along with GCC; see the file COPYING3. If not see
#include "sese.h"
#ifdef HAVE_cloog
-#include "ppl_c.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
#include "graphite-scop-detection.h"
@@ -1022,6 +1029,7 @@ create_sese_edges (VEC (sd_region, heap) *regions)
unmark_exit_edges (regions);
+ calculate_dominance_info (CDI_DOMINATORS);
fix_loop_structure (NULL);
#ifdef ENABLE_CHECKING
@@ -1318,9 +1326,8 @@ canonicalize_loop_closed_ssa (loop_p loop)
if (TREE_CODE (arg) != SSA_NAME)
continue;
- close_phi = create_phi_node (arg, close);
- res = create_new_def_for (gimple_phi_result (close_phi),
- close_phi,
+ close_phi = create_phi_node (NULL_TREE, close);
+ res = create_new_def_for (arg, close_phi,
gimple_phi_result_ptr (close_phi));
add_phi_arg (close_phi, arg,
gimple_phi_arg_edge (close_phi, 0),
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index 31e52181dc5..ded38f5af1a 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -19,10 +19,22 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/union_map.h>
+#include <isl/constraint.h>
+#include <isl/aff.h>
+#include <cloog/cloog.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "tree-pass.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-data-ref.h"
@@ -31,11 +43,19 @@ along with GCC; see the file COPYING3. If not see
#include "sese.h"
#ifdef HAVE_cloog
-#include "ppl_c.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
#include "graphite-sese-to-poly.h"
+
+/* Assigns to RES the value of the INTEGER_CST T. */
+
+static inline void
+tree_int_to_gmp (tree t, mpz_t res)
+{
+ double_int di = tree_to_double_int (t);
+ mpz_set_double_int (res, di, TYPE_UNSIGNED (TREE_TYPE (t)));
+}
+
/* Returns the index of the PHI argument defined in the outermost
loop. */
@@ -390,6 +410,16 @@ build_scop_bbs (scop_p scop)
sbitmap_free (visited);
}
+/* Return an ISL identifier for the polyhedral basic block PBB. */
+
+static isl_id *
+isl_id_for_pbb (scop_p s, poly_bb_p pbb)
+{
+ char name[50];
+ snprintf (name, sizeof (name), "S_%d", pbb_index (pbb));
+ return isl_id_alloc (s->ctx, name, pbb);
+}
+
/* Converts the STATIC_SCHEDULE of PBB into a scattering polyhedron.
We generate SCATTERING_DIMENSIONS scattering dimensions.
@@ -424,69 +454,54 @@ build_scop_bbs (scop_p scop)
| 0 0 1 0 0 0 0 0 -5 = 0 */
static void
-build_pbb_scattering_polyhedrons (ppl_Linear_Expression_t static_schedule,
+build_pbb_scattering_polyhedrons (isl_aff *static_sched,
poly_bb_p pbb, int scattering_dimensions)
{
int i;
- scop_p scop = PBB_SCOP (pbb);
int nb_iterators = pbb_dim_iter_domain (pbb);
int used_scattering_dimensions = nb_iterators * 2 + 1;
- int nb_params = scop_nb_params (scop);
- ppl_Coefficient_t c;
- ppl_dimension_type dim = scattering_dimensions + nb_iterators + nb_params;
- mpz_t v;
+ isl_int val;
+ isl_space *dc, *dm;
gcc_assert (scattering_dimensions >= used_scattering_dimensions);
- mpz_init (v);
- ppl_new_Coefficient (&c);
- PBB_TRANSFORMED (pbb) = poly_scattering_new ();
- ppl_new_C_Polyhedron_from_space_dimension
- (&PBB_TRANSFORMED_SCATTERING (pbb), dim, 0);
+ isl_int_init (val);
- PBB_NB_SCATTERING_TRANSFORM (pbb) = scattering_dimensions;
+ dc = isl_set_get_space (pbb->domain);
+ dm = isl_space_add_dims (isl_space_from_domain (dc),
+ isl_dim_out, scattering_dimensions);
+ pbb->schedule = isl_map_universe (dm);
for (i = 0; i < scattering_dimensions; i++)
{
- ppl_Constraint_t cstr;
- ppl_Linear_Expression_t expr;
-
- ppl_new_Linear_Expression_with_dimension (&expr, dim);
- mpz_set_si (v, 1);
- ppl_assign_Coefficient_from_mpz_t (c, v);
- ppl_Linear_Expression_add_to_coefficient (expr, i, c);
-
/* Textual order inside this loop. */
if ((i % 2) == 0)
{
- ppl_Linear_Expression_coefficient (static_schedule, i / 2, c);
- ppl_Coefficient_to_mpz_t (c, v);
- mpz_neg (v, v);
- ppl_assign_Coefficient_from_mpz_t (c, v);
- ppl_Linear_Expression_add_to_inhomogeneous (expr, c);
+ isl_constraint *c = isl_equality_alloc
+ (isl_local_space_from_space (isl_map_get_space (pbb->schedule)));
+
+ if (0 != isl_aff_get_coefficient (static_sched, isl_dim_in,
+ i / 2, &val))
+ gcc_unreachable ();
+
+ isl_int_neg (val, val);
+ c = isl_constraint_set_constant (c, val);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, i, 1);
+ pbb->schedule = isl_map_add_constraint (pbb->schedule, c);
}
/* Iterations of this loop. */
else /* if ((i % 2) == 1) */
{
int loop = (i - 1) / 2;
-
- mpz_set_si (v, -1);
- ppl_assign_Coefficient_from_mpz_t (c, v);
- ppl_Linear_Expression_add_to_coefficient
- (expr, scattering_dimensions + loop, c);
+ pbb->schedule = isl_map_equate (pbb->schedule, isl_dim_in, loop,
+ isl_dim_out, i);
}
-
- ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Polyhedron_add_constraint (PBB_TRANSFORMED_SCATTERING (pbb), cstr);
- ppl_delete_Linear_Expression (expr);
- ppl_delete_Constraint (cstr);
}
- mpz_clear (v);
- ppl_delete_Coefficient (c);
+ isl_int_clear (val);
- PBB_ORIGINAL (pbb) = poly_scattering_copy (PBB_TRANSFORMED (pbb));
+ pbb->transformed = isl_map_copy (pbb->schedule);
}
/* Build for BB the static schedule.
@@ -531,26 +546,21 @@ build_scop_scattering (scop_p scop)
int i;
poly_bb_p pbb;
gimple_bb_p previous_gbb = NULL;
- ppl_Linear_Expression_t static_schedule;
- ppl_Coefficient_t c;
- mpz_t v;
+ isl_space *dc = isl_set_get_space (scop->context);
+ isl_aff *static_sched;
- mpz_init (v);
- ppl_new_Coefficient (&c);
- ppl_new_Linear_Expression (&static_schedule);
+ dc = isl_space_add_dims (dc, isl_dim_set, number_of_loops());
+ static_sched = isl_aff_zero_on_domain (isl_local_space_from_space (dc));
/* We have to start schedules at 0 on the first component and
because we cannot compare_prefix_loops against a previous loop,
prefix will be equal to zero, and that index will be
incremented before copying. */
- mpz_set_si (v, -1);
- ppl_assign_Coefficient_from_mpz_t (c, v);
- ppl_Linear_Expression_add_to_coefficient (static_schedule, 0, c);
+ static_sched = isl_aff_add_coefficient_si (static_sched, isl_dim_in, 0, -1);
FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
{
gimple_bb_p gbb = PBB_BLACK_BOX (pbb);
- ppl_Linear_Expression_t common;
int prefix;
int nb_scat_dims = pbb_dim_iter_domain (pbb) * 2 + 1;
@@ -560,102 +570,158 @@ build_scop_scattering (scop_p scop)
prefix = 0;
previous_gbb = gbb;
- ppl_new_Linear_Expression_with_dimension (&common, prefix + 1);
- ppl_assign_Linear_Expression_from_Linear_Expression (common,
- static_schedule);
- mpz_set_si (v, 1);
- ppl_assign_Coefficient_from_mpz_t (c, v);
- ppl_Linear_Expression_add_to_coefficient (common, prefix, c);
- ppl_assign_Linear_Expression_from_Linear_Expression (static_schedule,
- common);
+ static_sched = isl_aff_add_coefficient_si (static_sched, isl_dim_in,
+ prefix, 1);
+ build_pbb_scattering_polyhedrons (static_sched, pbb, nb_scat_dims);
+ }
- build_pbb_scattering_polyhedrons (common, pbb, nb_scat_dims);
+ isl_aff_free (static_sched);
+}
+
+static isl_pw_aff *extract_affine (scop_p, tree, __isl_take isl_space *space);
+
+/* Extract an affine expression from the chain of recurrence E. */
+
+static isl_pw_aff *
+extract_affine_chrec (scop_p s, tree e, __isl_take isl_space *space)
+{
+ isl_pw_aff *lhs = extract_affine (s, CHREC_LEFT (e), isl_space_copy (space));
+ isl_pw_aff *rhs = extract_affine (s, CHREC_RIGHT (e), isl_space_copy (space));
+ isl_local_space *ls = isl_local_space_from_space (space);
+ unsigned pos = sese_loop_depth ((sese) s->region,
+ get_loop (CHREC_VARIABLE (e))) - 1;
+ isl_aff *loop = isl_aff_set_coefficient_si
+ (isl_aff_zero_on_domain (ls), isl_dim_in, pos, 1);
+ isl_pw_aff *l = isl_pw_aff_from_aff (loop);
- ppl_delete_Linear_Expression (common);
+ /* Before multiplying, make sure that the result is affine. */
+ gcc_assert (isl_pw_aff_is_cst (rhs)
+ || isl_pw_aff_is_cst (l));
+
+ return isl_pw_aff_add (lhs, isl_pw_aff_mul (rhs, l));
+}
+
+/* Extract an affine expression from the mult_expr E. */
+
+static isl_pw_aff *
+extract_affine_mul (scop_p s, tree e, __isl_take isl_space *space)
+{
+ isl_pw_aff *lhs = extract_affine (s, TREE_OPERAND (e, 0),
+ isl_space_copy (space));
+ isl_pw_aff *rhs = extract_affine (s, TREE_OPERAND (e, 1), space);
+
+ if (!isl_pw_aff_is_cst (lhs)
+ && !isl_pw_aff_is_cst (rhs))
+ {
+ isl_pw_aff_free (lhs);
+ isl_pw_aff_free (rhs);
+ return NULL;
}
- mpz_clear (v);
- ppl_delete_Coefficient (c);
- ppl_delete_Linear_Expression (static_schedule);
+ return isl_pw_aff_mul (lhs, rhs);
}
-/* Add the value K to the dimension D of the linear expression EXPR. */
+/* Return an ISL identifier from the name of the ssa_name E. */
-static void
-add_value_to_dim (ppl_dimension_type d, ppl_Linear_Expression_t expr,
- mpz_t k)
+static isl_id *
+isl_id_for_ssa_name (scop_p s, tree e)
{
- mpz_t val;
- ppl_Coefficient_t coef;
+ const char *name = get_name (e);
+ isl_id *id;
- ppl_new_Coefficient (&coef);
- ppl_Linear_Expression_coefficient (expr, d, coef);
- mpz_init (val);
- ppl_Coefficient_to_mpz_t (coef, val);
+ if (name)
+ id = isl_id_alloc (s->ctx, name, e);
+ else
+ {
+ char name1[50];
+ snprintf (name1, sizeof (name1), "P_%d", SSA_NAME_VERSION (e));
+ id = isl_id_alloc (s->ctx, name1, e);
+ }
- mpz_add (val, val, k);
+ return id;
+}
- ppl_assign_Coefficient_from_mpz_t (coef, val);
- ppl_Linear_Expression_add_to_coefficient (expr, d, coef);
- mpz_clear (val);
- ppl_delete_Coefficient (coef);
+/* Return an ISL identifier for the data reference DR. */
+
+static isl_id *
+isl_id_for_dr (scop_p s, data_reference_p dr ATTRIBUTE_UNUSED)
+{
+ /* Data references all get the same isl_id. They need to be comparable
+ and are distinguished through the first dimension, which contains the
+ alias set number. */
+ return isl_id_alloc (s->ctx, "", 0);
}
-/* In the context of scop S, scan E, the right hand side of a scalar
- evolution function in loop VAR, and translate it to a linear
- expression EXPR. */
+/* Extract an affine expression from the ssa_name E. */
-static void
-scan_tree_for_params_right_scev (sese s, tree e, int var,
- ppl_Linear_Expression_t expr)
+static isl_pw_aff *
+extract_affine_name (scop_p s, tree e, __isl_take isl_space *space)
{
- if (expr)
- {
- loop_p loop = get_loop (var);
- ppl_dimension_type l = sese_loop_depth (s, loop) - 1;
- mpz_t val;
+ isl_aff *aff;
+ isl_set *dom;
+ isl_id *id;
+ int dimension;
- /* Scalar evolutions should happen in the sese region. */
- gcc_assert (sese_loop_depth (s, loop) > 0);
+ id = isl_id_for_ssa_name (s, e);
+ dimension = isl_space_find_dim_by_id (space, isl_dim_param, id);
+ isl_id_free(id);
+ dom = isl_set_universe (isl_space_copy (space));
+ aff = isl_aff_zero_on_domain (isl_local_space_from_space (space));
+ aff = isl_aff_add_coefficient_si (aff, isl_dim_param, dimension, 1);
+ return isl_pw_aff_alloc (dom, aff);
+}
+
+/* Extract an affine expression from the gmp constant G. */
- /* We can not deal with parametric strides like:
+static isl_pw_aff *
+extract_affine_gmp (mpz_t g, __isl_take isl_space *space)
+{
+ isl_local_space *ls = isl_local_space_from_space (isl_space_copy (space));
+ isl_aff *aff = isl_aff_zero_on_domain (ls);
+ isl_set *dom = isl_set_universe (space);
+ isl_int v;
- | p = parameter;
- |
- | for i:
- | a [i * p] = ... */
- gcc_assert (TREE_CODE (e) == INTEGER_CST);
+ isl_int_init (v);
+ isl_int_set_gmp (v, g);
+ aff = isl_aff_add_constant (aff, v);
+ isl_int_clear (v);
- mpz_init (val);
- tree_int_to_gmp (e, val);
- add_value_to_dim (l, expr, val);
- mpz_clear (val);
- }
+ return isl_pw_aff_alloc (dom, aff);
}
-/* Scan the integer constant CST, and add it to the inhomogeneous part of the
- linear expression EXPR. K is the multiplier of the constant. */
+/* Extract an affine expression from the integer_cst E. */
-static void
-scan_tree_for_params_int (tree cst, ppl_Linear_Expression_t expr, mpz_t k)
+static isl_pw_aff *
+extract_affine_int (tree e, __isl_take isl_space *space)
{
- mpz_t val;
- ppl_Coefficient_t coef;
- tree type = TREE_TYPE (cst);
+ isl_pw_aff *res;
+ mpz_t g;
+
+ mpz_init (g);
+ tree_int_to_gmp (e, g);
+ res = extract_affine_gmp (g, space);
+ mpz_clear (g);
- mpz_init (val);
+ return res;
+}
- /* Necessary to not get "-1 = 2^n - 1". */
- mpz_set_double_int (val, double_int_sext (tree_to_double_int (cst),
- TYPE_PRECISION (type)), false);
+/* Compute pwaff mod 2^width. */
- mpz_mul (val, val, k);
- ppl_new_Coefficient (&coef);
- ppl_assign_Coefficient_from_mpz_t (coef, val);
- ppl_Linear_Expression_add_to_inhomogeneous (expr, coef);
- mpz_clear (val);
- ppl_delete_Coefficient (coef);
+static isl_pw_aff *
+wrap (isl_pw_aff *pwaff, unsigned width)
+{
+ isl_int mod;
+
+ isl_int_init (mod);
+ isl_int_set_si (mod, 1);
+ isl_int_mul_2exp (mod, mod, width);
+
+ pwaff = isl_pw_aff_mod (pwaff, mod);
+
+ isl_int_clear (mod);
+
+ return pwaff;
}
/* When parameter NAME is in REGION, returns its index in SESE_PARAMS.
@@ -698,168 +764,119 @@ parameter_index_in_region (tree name, sese region)
return i;
}
-/* In the context of sese S, scan the expression E and translate it to
- a linear expression C. When parsing a symbolic multiplication, K
- represents the constant multiplier of an expression containing
- parameters. */
+/* Extract an affine expression from the tree E in the scop S. */
-static void
-scan_tree_for_params (sese s, tree e, ppl_Linear_Expression_t c,
- mpz_t k)
+static isl_pw_aff *
+extract_affine (scop_p s, tree e, __isl_take isl_space *space)
{
- if (e == chrec_dont_know)
- return;
+ isl_pw_aff *lhs, *rhs, *res;
+ tree type;
+
+ if (e == chrec_dont_know) {
+ isl_space_free (space);
+ return NULL;
+ }
switch (TREE_CODE (e))
{
case POLYNOMIAL_CHREC:
- scan_tree_for_params_right_scev (s, CHREC_RIGHT (e),
- CHREC_VARIABLE (e), c);
- scan_tree_for_params (s, CHREC_LEFT (e), c, k);
+ res = extract_affine_chrec (s, e, space);
break;
case MULT_EXPR:
- if (chrec_contains_symbols (TREE_OPERAND (e, 0)))
- {
- if (c)
- {
- mpz_t val;
- gcc_assert (host_integerp (TREE_OPERAND (e, 1), 0));
- mpz_init (val);
- tree_int_to_gmp (TREE_OPERAND (e, 1), val);
- mpz_mul (val, val, k);
- scan_tree_for_params (s, TREE_OPERAND (e, 0), c, val);
- mpz_clear (val);
- }
- else
- scan_tree_for_params (s, TREE_OPERAND (e, 0), c, k);
- }
- else
- {
- if (c)
- {
- mpz_t val;
- gcc_assert (host_integerp (TREE_OPERAND (e, 0), 0));
- mpz_init (val);
- tree_int_to_gmp (TREE_OPERAND (e, 0), val);
- mpz_mul (val, val, k);
- scan_tree_for_params (s, TREE_OPERAND (e, 1), c, val);
- mpz_clear (val);
- }
- else
- scan_tree_for_params (s, TREE_OPERAND (e, 1), c, k);
- }
+ res = extract_affine_mul (s, e, space);
break;
case PLUS_EXPR:
case POINTER_PLUS_EXPR:
- scan_tree_for_params (s, TREE_OPERAND (e, 0), c, k);
- scan_tree_for_params (s, TREE_OPERAND (e, 1), c, k);
+ lhs = extract_affine (s, TREE_OPERAND (e, 0), isl_space_copy (space));
+ rhs = extract_affine (s, TREE_OPERAND (e, 1), space);
+ res = isl_pw_aff_add (lhs, rhs);
break;
case MINUS_EXPR:
- {
- ppl_Linear_Expression_t tmp_expr = NULL;
-
- if (c)
- {
- ppl_dimension_type dim;
- ppl_Linear_Expression_space_dimension (c, &dim);
- ppl_new_Linear_Expression_with_dimension (&tmp_expr, dim);
- }
-
- scan_tree_for_params (s, TREE_OPERAND (e, 0), c, k);
- scan_tree_for_params (s, TREE_OPERAND (e, 1), tmp_expr, k);
-
- if (c)
- {
- ppl_subtract_Linear_Expression_from_Linear_Expression (c,
- tmp_expr);
- ppl_delete_Linear_Expression (tmp_expr);
- }
-
- break;
- }
+ lhs = extract_affine (s, TREE_OPERAND (e, 0), isl_space_copy (space));
+ rhs = extract_affine (s, TREE_OPERAND (e, 1), space);
+ res = isl_pw_aff_sub (lhs, rhs);
+ break;
case NEGATE_EXPR:
- {
- ppl_Linear_Expression_t tmp_expr = NULL;
-
- if (c)
- {
- ppl_dimension_type dim;
- ppl_Linear_Expression_space_dimension (c, &dim);
- ppl_new_Linear_Expression_with_dimension (&tmp_expr, dim);
- }
+ case BIT_NOT_EXPR:
+ lhs = extract_affine (s, TREE_OPERAND (e, 0), isl_space_copy (space));
+ rhs = extract_affine (s, integer_minus_one_node, space);
+ res = isl_pw_aff_mul (lhs, rhs);
+ break;
- scan_tree_for_params (s, TREE_OPERAND (e, 0), tmp_expr, k);
+ case SSA_NAME:
+ gcc_assert (-1 != parameter_index_in_region_1 (e, SCOP_REGION (s)));
+ res = extract_affine_name (s, e, space);
+ break;
- if (c)
- {
- ppl_subtract_Linear_Expression_from_Linear_Expression (c,
- tmp_expr);
- ppl_delete_Linear_Expression (tmp_expr);
- }
+ case INTEGER_CST:
+ res = extract_affine_int (e, space);
+ /* No need to wrap a single integer. */
+ return res;
- break;
- }
+ CASE_CONVERT:
+ case NON_LVALUE_EXPR:
+ res = extract_affine (s, TREE_OPERAND (e, 0), space);
+ break;
- case BIT_NOT_EXPR:
- {
- ppl_Linear_Expression_t tmp_expr = NULL;
+ default:
+ gcc_unreachable ();
+ break;
+ }
- if (c)
- {
- ppl_dimension_type dim;
- ppl_Linear_Expression_space_dimension (c, &dim);
- ppl_new_Linear_Expression_with_dimension (&tmp_expr, dim);
- }
+ type = TREE_TYPE (e);
+ if (TYPE_UNSIGNED (type))
+ res = wrap (res, TYPE_PRECISION (type));
- scan_tree_for_params (s, TREE_OPERAND (e, 0), tmp_expr, k);
+ return res;
+}
- if (c)
- {
- ppl_Coefficient_t coef;
- mpz_t minus_one;
-
- ppl_subtract_Linear_Expression_from_Linear_Expression (c,
- tmp_expr);
- ppl_delete_Linear_Expression (tmp_expr);
- mpz_init (minus_one);
- mpz_set_si (minus_one, -1);
- ppl_new_Coefficient_from_mpz_t (&coef, minus_one);
- ppl_Linear_Expression_add_to_inhomogeneous (c, coef);
- mpz_clear (minus_one);
- ppl_delete_Coefficient (coef);
- }
+/* In the context of sese S, scan the expression E and translate it to
+ a linear expression C. When parsing a symbolic multiplication, K
+ represents the constant multiplier of an expression containing
+ parameters. */
- break;
- }
+static void
+scan_tree_for_params (sese s, tree e)
+{
+ if (e == chrec_dont_know)
+ return;
- case SSA_NAME:
- {
- ppl_dimension_type p = parameter_index_in_region (e, s);
+ switch (TREE_CODE (e))
+ {
+ case POLYNOMIAL_CHREC:
+ scan_tree_for_params (s, CHREC_LEFT (e));
+ break;
- if (c)
- {
- ppl_dimension_type dim;
- ppl_Linear_Expression_space_dimension (c, &dim);
- p += dim - sese_nb_params (s);
- add_value_to_dim (p, c, k);
- }
- break;
- }
+ case MULT_EXPR:
+ if (chrec_contains_symbols (TREE_OPERAND (e, 0)))
+ scan_tree_for_params (s, TREE_OPERAND (e, 0));
+ else
+ scan_tree_for_params (s, TREE_OPERAND (e, 1));
+ break;
- case INTEGER_CST:
- if (c)
- scan_tree_for_params_int (e, c, k);
+ case PLUS_EXPR:
+ case POINTER_PLUS_EXPR:
+ case MINUS_EXPR:
+ scan_tree_for_params (s, TREE_OPERAND (e, 0));
+ scan_tree_for_params (s, TREE_OPERAND (e, 1));
break;
+ case NEGATE_EXPR:
+ case BIT_NOT_EXPR:
CASE_CONVERT:
case NON_LVALUE_EXPR:
- scan_tree_for_params (s, TREE_OPERAND (e, 0), c, k);
+ scan_tree_for_params (s, TREE_OPERAND (e, 0));
+ break;
+
+ case SSA_NAME:
+ parameter_index_in_region (e, s);
break;
+ case INTEGER_CST:
case ADDR_EXPR:
break;
@@ -880,15 +897,11 @@ find_params_in_bb (sese region, gimple_bb_p gbb)
data_reference_p dr;
gimple stmt;
loop_p loop = GBB_BB (gbb)->loop_father;
- mpz_t one;
-
- mpz_init (one);
- mpz_set_si (one, 1);
/* Find parameters in the access functions of data references. */
FOR_EACH_VEC_ELT (data_reference_p, GBB_DATA_REFS (gbb), i, dr)
for (j = 0; j < DR_NUM_DIMENSIONS (dr); j++)
- scan_tree_for_params (region, DR_ACCESS_FN (dr, j), NULL, one);
+ scan_tree_for_params (region, DR_ACCESS_FN (dr, j));
/* Find parameters in conditional statements. */
FOR_EACH_VEC_ELT (gimple, GBB_CONDITIONS (gbb), i, stmt)
@@ -898,11 +911,9 @@ find_params_in_bb (sese region, gimple_bb_p gbb)
tree rhs = scalar_evolution_in_region (region, loop,
gimple_cond_rhs (stmt));
- scan_tree_for_params (region, lhs, NULL, one);
- scan_tree_for_params (region, rhs, NULL, one);
+ scan_tree_for_params (region, lhs);
+ scan_tree_for_params (region, rhs);
}
-
- mpz_clear (one);
}
/* Record the parameters used in the SCOP. A variable is a parameter
@@ -915,10 +926,7 @@ find_scop_parameters (scop_p scop)
unsigned i;
sese region = SCOP_REGION (scop);
struct loop *loop;
- mpz_t one;
-
- mpz_init (one);
- mpz_set_si (one, 1);
+ int nbp;
/* Find the parameters used in the loop bounds. */
FOR_EACH_VEC_ELT (loop_p, SESE_LOOP_NEST (region), i, loop)
@@ -929,87 +937,27 @@ find_scop_parameters (scop_p scop)
continue;
nb_iters = scalar_evolution_in_region (region, loop, nb_iters);
- scan_tree_for_params (region, nb_iters, NULL, one);
+ scan_tree_for_params (region, nb_iters);
}
- mpz_clear (one);
-
/* Find the parameters used in data accesses. */
FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
find_params_in_bb (region, PBB_BLACK_BOX (pbb));
- scop_set_nb_params (scop, sese_nb_params (region));
+ nbp = sese_nb_params (region);
+ scop_set_nb_params (scop, nbp);
SESE_ADD_PARAMS (region) = false;
- ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension
- (&SCOP_CONTEXT (scop), scop_nb_params (scop), 0);
-}
-
-/* Insert in the SCOP context constraints from the estimation of the
- number of iterations. UB_EXPR is a linear expression describing
- the number of iterations in a loop. This expression is bounded by
- the estimation NIT. */
-
-static void
-add_upper_bounds_from_estimated_nit (scop_p scop, double_int nit,
- ppl_dimension_type dim,
- ppl_Linear_Expression_t ub_expr)
-{
- mpz_t val;
- ppl_Linear_Expression_t nb_iters_le;
- ppl_Polyhedron_t pol;
- ppl_Coefficient_t coef;
- ppl_Constraint_t ub;
-
- ppl_new_C_Polyhedron_from_space_dimension (&pol, dim, 0);
- ppl_new_Linear_Expression_from_Linear_Expression (&nb_iters_le,
- ub_expr);
-
- /* Construct the negated number of last iteration in VAL. */
- mpz_init (val);
- mpz_set_double_int (val, nit, false);
- mpz_sub_ui (val, val, 1);
- mpz_neg (val, val);
-
- /* NB_ITERS_LE holds the number of last iteration in
- parametrical form. Subtract estimated number of last
- iteration and assert that result is not positive. */
- ppl_new_Coefficient_from_mpz_t (&coef, val);
- ppl_Linear_Expression_add_to_inhomogeneous (nb_iters_le, coef);
- ppl_delete_Coefficient (coef);
- ppl_new_Constraint (&ub, nb_iters_le,
- PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL);
- ppl_Polyhedron_add_constraint (pol, ub);
-
- /* Remove all but last GDIM dimensions from POL to obtain
- only the constraints on the parameters. */
{
- graphite_dim_t gdim = scop_nb_params (scop);
- ppl_dimension_type *dims = XNEWVEC (ppl_dimension_type, dim - gdim);
- graphite_dim_t i;
+ tree e;
+ isl_space *space = isl_space_set_alloc (scop->ctx, nbp, 0);
- for (i = 0; i < dim - gdim; i++)
- dims[i] = i;
+ FOR_EACH_VEC_ELT (tree, SESE_PARAMS (region), i, e)
+ space = isl_space_set_dim_id (space, isl_dim_param, i,
+ isl_id_for_ssa_name (scop, e));
- ppl_Polyhedron_remove_space_dimensions (pol, dims, dim - gdim);
- XDELETEVEC (dims);
+ scop->context = isl_set_universe (space);
}
-
- /* Add the constraints on the parameters to the SCoP context. */
- {
- ppl_Pointset_Powerset_C_Polyhedron_t constraints_ps;
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (&constraints_ps, pol);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign
- (SCOP_CONTEXT (scop), constraints_ps);
- ppl_delete_Pointset_Powerset_C_Polyhedron (constraints_ps);
- }
-
- ppl_delete_Polyhedron (pol);
- ppl_delete_Linear_Expression (nb_iters_le);
- ppl_delete_Constraint (ub);
- mpz_clear (val);
}
/* Builds the constraint polyhedra for LOOP in SCOP. OUTER_PH gives
@@ -1017,232 +965,179 @@ add_upper_bounds_from_estimated_nit (scop_p scop, double_int nit,
static void
build_loop_iteration_domains (scop_p scop, struct loop *loop,
- ppl_Polyhedron_t outer_ph, int nb,
- ppl_Pointset_Powerset_C_Polyhedron_t *domains)
+ int nb,
+ isl_set *outer, isl_set **doms)
{
- int i;
- ppl_Polyhedron_t ph;
tree nb_iters = number_of_latch_executions (loop);
- ppl_dimension_type dim = nb + 1 + scop_nb_params (scop);
sese region = SCOP_REGION (scop);
- {
- ppl_const_Constraint_System_t pcs;
- ppl_dimension_type *map
- = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim);
-
- ppl_new_C_Polyhedron_from_space_dimension (&ph, dim, 0);
- ppl_Polyhedron_get_constraints (outer_ph, &pcs);
- ppl_Polyhedron_add_constraints (ph, pcs);
-
- for (i = 0; i < (int) nb; i++)
- map[i] = i;
- for (i = (int) nb; i < (int) dim - 1; i++)
- map[i] = i + 1;
- map[dim - 1] = nb;
-
- ppl_Polyhedron_map_space_dimensions (ph, map, dim);
- free (map);
- }
+ isl_set *inner = isl_set_copy (outer);
+ isl_space *space;
+ isl_constraint *c;
+ int pos = isl_set_dim (outer, isl_dim_set);
+ isl_int v;
+ mpz_t g;
+
+ mpz_init (g);
+ isl_int_init (v);
+
+ inner = isl_set_add_dims (inner, isl_dim_set, 1);
+ space = isl_set_get_space (inner);
/* 0 <= loop_i */
- {
- ppl_Constraint_t lb;
- ppl_Linear_Expression_t lb_expr;
-
- ppl_new_Linear_Expression_with_dimension (&lb_expr, dim);
- ppl_set_coef (lb_expr, nb, 1);
- ppl_new_Constraint (&lb, lb_expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_delete_Linear_Expression (lb_expr);
- ppl_Polyhedron_add_constraint (ph, lb);
- ppl_delete_Constraint (lb);
- }
+ c = isl_inequality_alloc
+ (isl_local_space_from_space (isl_space_copy (space)));
+ c = isl_constraint_set_coefficient_si (c, isl_dim_set, pos, 1);
+ inner = isl_set_add_constraint (inner, c);
+ /* loop_i <= cst_nb_iters */
if (TREE_CODE (nb_iters) == INTEGER_CST)
{
- ppl_Constraint_t ub;
- ppl_Linear_Expression_t ub_expr;
-
- ppl_new_Linear_Expression_with_dimension (&ub_expr, dim);
-
- /* loop_i <= cst_nb_iters */
- ppl_set_coef (ub_expr, nb, -1);
- ppl_set_inhomogeneous_tree (ub_expr, nb_iters);
- ppl_new_Constraint (&ub, ub_expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_Polyhedron_add_constraint (ph, ub);
- ppl_delete_Linear_Expression (ub_expr);
- ppl_delete_Constraint (ub);
+ c = isl_inequality_alloc
+ (isl_local_space_from_space(isl_space_copy (space)));
+ c = isl_constraint_set_coefficient_si (c, isl_dim_set, pos, -1);
+ tree_int_to_gmp (nb_iters, g);
+ isl_int_set_gmp (v, g);
+ c = isl_constraint_set_constant (c, v);
+ inner = isl_set_add_constraint (inner, c);
}
+
+ /* loop_i <= expr_nb_iters */
else if (!chrec_contains_undetermined (nb_iters))
{
- mpz_t one;
- ppl_Constraint_t ub;
- ppl_Linear_Expression_t ub_expr;
double_int nit;
+ isl_pw_aff *aff;
+ isl_set *valid;
+ isl_local_space *ls;
+ isl_aff *al;
+ isl_set *le;
- mpz_init (one);
- mpz_set_si (one, 1);
- ppl_new_Linear_Expression_with_dimension (&ub_expr, dim);
nb_iters = scalar_evolution_in_region (region, loop, nb_iters);
- scan_tree_for_params (SCOP_REGION (scop), nb_iters, ub_expr, one);
- mpz_clear (one);
+
+ aff = extract_affine (scop, nb_iters, isl_set_get_space (inner));
+ valid = isl_pw_aff_nonneg_set (isl_pw_aff_copy (aff));
+ valid = isl_set_project_out (valid, isl_dim_set, 0,
+ isl_set_dim (valid, isl_dim_set));
+ scop->context = isl_set_intersect (scop->context, valid);
+
+ ls = isl_local_space_from_space (isl_space_copy (space));
+ al = isl_aff_set_coefficient_si (isl_aff_zero_on_domain (ls),
+ isl_dim_in, pos, 1);
+ le = isl_pw_aff_le_set (isl_pw_aff_from_aff (al),
+ isl_pw_aff_copy (aff));
+ inner = isl_set_intersect (inner, le);
if (max_stmt_executions (loop, &nit))
- add_upper_bounds_from_estimated_nit (scop, nit, dim, ub_expr);
-
- /* loop_i <= expr_nb_iters */
- ppl_set_coef (ub_expr, nb, -1);
- ppl_new_Constraint (&ub, ub_expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_Polyhedron_add_constraint (ph, ub);
- ppl_delete_Linear_Expression (ub_expr);
- ppl_delete_Constraint (ub);
+ {
+ /* Insert in the context the constraints from the
+ estimation of the number of iterations NIT and the
+ symbolic number of iterations (involving parameter
+ names) NB_ITERS. First, build the affine expression
+ "NIT - NB_ITERS" and then say that it is positive,
+ i.e., NIT approximates NB_ITERS: "NIT >= NB_ITERS". */
+ isl_pw_aff *approx;
+ mpz_t g;
+ isl_set *x;
+ isl_constraint *c;
+
+ mpz_init (g);
+ mpz_set_double_int (g, nit, false);
+ mpz_sub_ui (g, g, 1);
+ approx = extract_affine_gmp (g, isl_set_get_space (inner));
+ x = isl_pw_aff_ge_set (approx, aff);
+ x = isl_set_project_out (x, isl_dim_set, 0,
+ isl_set_dim (x, isl_dim_set));
+ scop->context = isl_set_intersect (scop->context, x);
+
+ c = isl_inequality_alloc
+ (isl_local_space_from_space (isl_space_copy (space)));
+ c = isl_constraint_set_coefficient_si (c, isl_dim_set, pos, -1);
+ isl_int_set_gmp (v, g);
+ mpz_clear (g);
+ c = isl_constraint_set_constant (c, v);
+ inner = isl_set_add_constraint (inner, c);
+ }
}
else
gcc_unreachable ();
if (loop->inner && loop_in_sese_p (loop->inner, region))
- build_loop_iteration_domains (scop, loop->inner, ph, nb + 1, domains);
+ build_loop_iteration_domains (scop, loop->inner, nb + 1,
+ isl_set_copy (inner), doms);
if (nb != 0
&& loop->next
&& loop_in_sese_p (loop->next, region))
- build_loop_iteration_domains (scop, loop->next, outer_ph, nb, domains);
+ build_loop_iteration_domains (scop, loop->next, nb,
+ isl_set_copy (outer), doms);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (&domains[loop->num], ph);
+ doms[loop->num] = inner;
- ppl_delete_Polyhedron (ph);
+ isl_set_free (outer);
+ isl_space_free (space);
+ isl_int_clear (v);
+ mpz_clear (g);
}
/* Returns a linear expression for tree T evaluated in PBB. */
-static ppl_Linear_Expression_t
-create_linear_expr_from_tree (poly_bb_p pbb, tree t)
+static isl_pw_aff *
+create_pw_aff_from_tree (poly_bb_p pbb, tree t)
{
- mpz_t one;
- ppl_Linear_Expression_t res;
- ppl_dimension_type dim;
- sese region = SCOP_REGION (PBB_SCOP (pbb));
- loop_p loop = pbb_loop (pbb);
-
- dim = pbb_dim_iter_domain (pbb) + pbb_nb_params (pbb);
- ppl_new_Linear_Expression_with_dimension (&res, dim);
+ scop_p scop = PBB_SCOP (pbb);
- t = scalar_evolution_in_region (region, loop, t);
+ t = scalar_evolution_in_region (SCOP_REGION (scop), pbb_loop (pbb), t);
gcc_assert (!automatically_generated_chrec_p (t));
- mpz_init (one);
- mpz_set_si (one, 1);
- scan_tree_for_params (region, t, res, one);
- mpz_clear (one);
-
- return res;
+ return extract_affine (scop, t, isl_set_get_space (pbb->domain));
}
-/* Returns the ppl constraint type from the gimple tree code CODE. */
-
-static enum ppl_enum_Constraint_Type
-ppl_constraint_type_from_tree_code (enum tree_code code)
-{
- switch (code)
- {
- /* We do not support LT and GT to be able to work with C_Polyhedron.
- As we work on integer polyhedron "a < b" can be expressed by
- "a + 1 <= b". */
- case LT_EXPR:
- case GT_EXPR:
- gcc_unreachable ();
-
- case LE_EXPR:
- return PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL;
-
- case GE_EXPR:
- return PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL;
-
- case EQ_EXPR:
- return PPL_CONSTRAINT_TYPE_EQUAL;
-
- default:
- gcc_unreachable ();
- }
-}
-
-/* Add conditional statement STMT to PS. It is evaluated in PBB and
- CODE is used as the comparison operator. This allows us to invert the
- condition or to handle inequalities. */
+/* Add conditional statement STMT to pbb. CODE is used as the comparison
+ operator. This allows us to invert the condition or to handle
+ inequalities. */
static void
-add_condition_to_domain (ppl_Pointset_Powerset_C_Polyhedron_t ps, gimple stmt,
- poly_bb_p pbb, enum tree_code code)
+add_condition_to_pbb (poly_bb_p pbb, gimple stmt, enum tree_code code)
{
- mpz_t v;
- ppl_Coefficient_t c;
- ppl_Linear_Expression_t left, right;
- ppl_Constraint_t cstr;
- enum ppl_enum_Constraint_Type type;
+ isl_pw_aff *lhs = create_pw_aff_from_tree (pbb, gimple_cond_lhs (stmt));
+ isl_pw_aff *rhs = create_pw_aff_from_tree (pbb, gimple_cond_rhs (stmt));
+ isl_set *cond;
- left = create_linear_expr_from_tree (pbb, gimple_cond_lhs (stmt));
- right = create_linear_expr_from_tree (pbb, gimple_cond_rhs (stmt));
-
- /* If we have < or > expressions convert them to <= or >= by adding 1 to
- the left or the right side of the expression. */
- if (code == LT_EXPR)
- {
- mpz_init (v);
- mpz_set_si (v, 1);
- ppl_new_Coefficient (&c);
- ppl_assign_Coefficient_from_mpz_t (c, v);
- ppl_Linear_Expression_add_to_inhomogeneous (left, c);
- ppl_delete_Coefficient (c);
- mpz_clear (v);
-
- code = LE_EXPR;
- }
- else if (code == GT_EXPR)
+ switch (code)
{
- mpz_init (v);
- mpz_set_si (v, 1);
- ppl_new_Coefficient (&c);
- ppl_assign_Coefficient_from_mpz_t (c, v);
- ppl_Linear_Expression_add_to_inhomogeneous (right, c);
- ppl_delete_Coefficient (c);
- mpz_clear (v);
-
- code = GE_EXPR;
- }
+ case LT_EXPR:
+ cond = isl_pw_aff_lt_set (lhs, rhs);
+ break;
- type = ppl_constraint_type_from_tree_code (code);
+ case GT_EXPR:
+ cond = isl_pw_aff_gt_set (lhs, rhs);
+ break;
- ppl_subtract_Linear_Expression_from_Linear_Expression (left, right);
+ case LE_EXPR:
+ cond = isl_pw_aff_le_set (lhs, rhs);
+ break;
- ppl_new_Constraint (&cstr, left, type);
- ppl_Pointset_Powerset_C_Polyhedron_add_constraint (ps, cstr);
+ case GE_EXPR:
+ cond = isl_pw_aff_ge_set (lhs, rhs);
+ break;
- ppl_delete_Constraint (cstr);
- ppl_delete_Linear_Expression (left);
- ppl_delete_Linear_Expression (right);
-}
+ case EQ_EXPR:
+ cond = isl_pw_aff_eq_set (lhs, rhs);
+ break;
-/* Add conditional statement STMT to pbb. CODE is used as the comparison
- operator. This allows us to invert the condition or to handle
- inequalities. */
+ case NE_EXPR:
+ cond = isl_pw_aff_ne_set (lhs, rhs);
+ break;
-static void
-add_condition_to_pbb (poly_bb_p pbb, gimple stmt, enum tree_code code)
-{
- if (code == NE_EXPR)
- {
- ppl_Pointset_Powerset_C_Polyhedron_t left = PBB_DOMAIN (pbb);
- ppl_Pointset_Powerset_C_Polyhedron_t right;
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&right, left);
- add_condition_to_domain (left, stmt, pbb, LT_EXPR);
- add_condition_to_domain (right, stmt, pbb, GT_EXPR);
- ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (left, right);
- ppl_delete_Pointset_Powerset_C_Polyhedron (right);
+ default:
+ isl_pw_aff_free(lhs);
+ isl_pw_aff_free(rhs);
+ return;
}
- else
- add_condition_to_domain (PBB_DOMAIN (pbb), stmt, pbb, code);
+
+ cond = isl_set_coalesce (cond);
+ cond = isl_set_set_tuple_id (cond, isl_set_get_tuple_id (pbb->domain));
+ pbb->domain = isl_set_intersect (pbb->domain, cond);
}
/* Add conditions to the domain of PBB. */
@@ -1273,7 +1168,7 @@ add_conditions_to_domain (poly_bb_p pbb)
}
case GIMPLE_SWITCH:
- /* Switch statements are not supported right now - fall throught. */
+ /* Switch statements are not supported right now - fall through. */
default:
gcc_unreachable ();
@@ -1354,7 +1249,7 @@ build_sese_conditions_before (struct dom_walk_data *dw_data,
if (e->flags & EDGE_TRUE_VALUE)
VEC_safe_push (gimple, heap, *cases, stmt);
else
- VEC_safe_push (gimple, heap, *cases, NULL);
+ VEC_safe_push (gimple, heap, *cases, (gimple) NULL);
}
gbb = gbb_from_bb (bb);
@@ -1420,10 +1315,8 @@ build_sese_conditions (sese region)
of P. */
static void
-add_param_constraints (scop_p scop, ppl_Polyhedron_t context, graphite_dim_t p)
+add_param_constraints (scop_p scop, graphite_dim_t p)
{
- ppl_Constraint_t cstr;
- ppl_Linear_Expression_t le;
tree parameter = VEC_index (tree, SESE_PARAMS (SCOP_REGION (scop)), p);
tree type = TREE_TYPE (parameter);
tree lb = NULL_TREE;
@@ -1441,24 +1334,44 @@ add_param_constraints (scop_p scop, ppl_Polyhedron_t context, graphite_dim_t p)
if (lb)
{
- ppl_new_Linear_Expression_with_dimension (&le, scop_nb_params (scop));
- ppl_set_coef (le, p, -1);
- ppl_set_inhomogeneous_tree (le, lb);
- ppl_new_Constraint (&cstr, le, PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL);
- ppl_Polyhedron_add_constraint (context, cstr);
- ppl_delete_Linear_Expression (le);
- ppl_delete_Constraint (cstr);
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_constraint *c;
+ mpz_t g;
+ isl_int v;
+
+ c = isl_inequality_alloc (isl_local_space_from_space (space));
+ mpz_init (g);
+ isl_int_init (v);
+ tree_int_to_gmp (lb, g);
+ isl_int_set_gmp (v, g);
+ isl_int_neg (v, v);
+ mpz_clear (g);
+ c = isl_constraint_set_constant (c, v);
+ isl_int_clear (v);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_param, p, 1);
+
+ scop->context = isl_set_add_constraint (scop->context, c);
}
if (ub)
{
- ppl_new_Linear_Expression_with_dimension (&le, scop_nb_params (scop));
- ppl_set_coef (le, p, -1);
- ppl_set_inhomogeneous_tree (le, ub);
- ppl_new_Constraint (&cstr, le, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_Polyhedron_add_constraint (context, cstr);
- ppl_delete_Linear_Expression (le);
- ppl_delete_Constraint (cstr);
+ isl_space *space = isl_set_get_space (scop->context);
+ isl_constraint *c;
+ mpz_t g;
+ isl_int v;
+
+ c = isl_inequality_alloc (isl_local_space_from_space (space));
+
+ mpz_init (g);
+ isl_int_init (v);
+ tree_int_to_gmp (ub, g);
+ isl_int_set_gmp (v, g);
+ mpz_clear (g);
+ c = isl_constraint_set_constant (c, v);
+ isl_int_clear (v);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_param, p, -1);
+
+ scop->context = isl_set_add_constraint (scop->context, c);
}
}
@@ -1469,22 +1382,10 @@ add_param_constraints (scop_p scop, ppl_Polyhedron_t context, graphite_dim_t p)
static void
build_scop_context (scop_p scop)
{
- ppl_Polyhedron_t context;
- ppl_Pointset_Powerset_C_Polyhedron_t ps;
graphite_dim_t p, n = scop_nb_params (scop);
- ppl_new_C_Polyhedron_from_space_dimension (&context, n, 0);
-
for (p = 0; p < n; p++)
- add_param_constraints (scop, context, p);
-
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (&ps, context);
- ppl_Pointset_Powerset_C_Polyhedron_intersection_assign
- (SCOP_CONTEXT (scop), ps);
-
- ppl_delete_Pointset_Powerset_C_Polyhedron (ps);
- ppl_delete_Polyhedron (context);
+ add_param_constraints (scop, p);
}
/* Build the iteration domains: the loops belonging to the current
@@ -1497,36 +1398,33 @@ build_scop_iteration_domain (scop_p scop)
struct loop *loop;
sese region = SCOP_REGION (scop);
int i;
- ppl_Polyhedron_t ph;
poly_bb_p pbb;
int nb_loops = number_of_loops ();
- ppl_Pointset_Powerset_C_Polyhedron_t *domains
- = XNEWVEC (ppl_Pointset_Powerset_C_Polyhedron_t, nb_loops);
-
- for (i = 0; i < nb_loops; i++)
- domains[i] = NULL;
-
- ppl_new_C_Polyhedron_from_space_dimension (&ph, scop_nb_params (scop), 0);
+ isl_set **doms = XCNEWVEC (isl_set *, nb_loops);
FOR_EACH_VEC_ELT (loop_p, SESE_LOOP_NEST (region), i, loop)
if (!loop_in_sese_p (loop_outer (loop), region))
- build_loop_iteration_domains (scop, loop, ph, 0, domains);
+ build_loop_iteration_domains (scop, loop, 0,
+ isl_set_copy (scop->context), doms);
FOR_EACH_VEC_ELT (poly_bb_p, SCOP_BBS (scop), i, pbb)
- if (domains[gbb_loop (PBB_BLACK_BOX (pbb))->num])
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&PBB_DOMAIN (pbb), (ppl_const_Pointset_Powerset_C_Polyhedron_t)
- domains[gbb_loop (PBB_BLACK_BOX (pbb))->num]);
- else
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
- (&PBB_DOMAIN (pbb), ph);
+ {
+ loop = pbb_loop (pbb);
+
+ if (doms[loop->num])
+ pbb->domain = isl_set_copy (doms[loop->num]);
+ else
+ pbb->domain = isl_set_copy (scop->context);
+
+ pbb->domain = isl_set_set_tuple_id (pbb->domain,
+ isl_id_for_pbb (scop, pbb));
+ }
for (i = 0; i < nb_loops; i++)
- if (domains[i])
- ppl_delete_Pointset_Powerset_C_Polyhedron (domains[i]);
+ if (doms[i])
+ isl_set_free (doms[i]);
- ppl_delete_Polyhedron (ph);
- free (domains);
+ free (doms);
}
/* Add a constrain to the ACCESSES polyhedron for the alias set of
@@ -1534,28 +1432,44 @@ build_scop_iteration_domain (scop_p scop)
ACCESSES polyhedron, DOM_NB_DIMS is the dimension of the iteration
domain. */
-static void
-pdr_add_alias_set (ppl_Polyhedron_t accesses, data_reference_p dr,
- ppl_dimension_type accessp_nb_dims,
- ppl_dimension_type dom_nb_dims)
+static isl_map *
+pdr_add_alias_set (isl_map *acc, data_reference_p dr)
{
- ppl_Linear_Expression_t alias;
- ppl_Constraint_t cstr;
+ isl_constraint *c;
int alias_set_num = 0;
base_alias_pair *bap = (base_alias_pair *)(dr->aux);
if (bap && bap->alias_set)
alias_set_num = *(bap->alias_set);
- ppl_new_Linear_Expression_with_dimension (&alias, accessp_nb_dims);
+ c = isl_equality_alloc
+ (isl_local_space_from_space (isl_map_get_space (acc)));
+ c = isl_constraint_set_constant_si (c, -alias_set_num);
+ c = isl_constraint_set_coefficient_si (c, isl_dim_out, 0, 1);
+
+ return isl_map_add_constraint (acc, c);
+}
+
+/* Assign the affine expression INDEX to the output dimension POS of
+ MAP and return the result. */
+
+static isl_map *
+set_index (isl_map *map, int pos, isl_pw_aff *index)
+{
+ isl_map *index_map;
+ int len = isl_map_dim (map, isl_dim_out);
+ isl_id *id;
- ppl_set_coef (alias, dom_nb_dims, 1);
- ppl_set_inhomogeneous (alias, -alias_set_num);
- ppl_new_Constraint (&cstr, alias, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Polyhedron_add_constraint (accesses, cstr);
+ index_map = isl_map_from_pw_aff (index);
+ index_map = isl_map_insert_dims (index_map, isl_dim_out, 0, pos);
+ index_map = isl_map_add_dims (index_map, isl_dim_out, len - pos - 1);
- ppl_delete_Linear_Expression (alias);
- ppl_delete_Constraint (cstr);
+ id = isl_map_get_tuple_id (map, isl_dim_out);
+ index_map = isl_map_set_tuple_id (index_map, isl_dim_out, id);
+ id = isl_map_get_tuple_id (map, isl_dim_in);
+ index_map = isl_map_set_tuple_id (index_map, isl_dim_in, id);
+
+ return isl_map_intersect (map, index_map);
}
/* Add to ACCESSES polyhedron equalities defining the access functions
@@ -1563,43 +1477,23 @@ pdr_add_alias_set (ppl_Polyhedron_t accesses, data_reference_p dr,
polyhedron, DOM_NB_DIMS is the dimension of the iteration domain.
PBB is the poly_bb_p that contains the data reference DR. */
-static void
-pdr_add_memory_accesses (ppl_Polyhedron_t accesses, data_reference_p dr,
- ppl_dimension_type accessp_nb_dims,
- ppl_dimension_type dom_nb_dims,
- poly_bb_p pbb)
+static isl_map *
+pdr_add_memory_accesses (isl_map *acc, data_reference_p dr, poly_bb_p pbb)
{
int i, nb_subscripts = DR_NUM_DIMENSIONS (dr);
- mpz_t v;
scop_p scop = PBB_SCOP (pbb);
- sese region = SCOP_REGION (scop);
-
- mpz_init (v);
for (i = 0; i < nb_subscripts; i++)
{
- ppl_Linear_Expression_t fn, access;
- ppl_Constraint_t cstr;
- ppl_dimension_type subscript = dom_nb_dims + 1 + i;
+ isl_pw_aff *aff;
tree afn = DR_ACCESS_FN (dr, nb_subscripts - 1 - i);
- ppl_new_Linear_Expression_with_dimension (&fn, dom_nb_dims);
- ppl_new_Linear_Expression_with_dimension (&access, accessp_nb_dims);
-
- mpz_set_si (v, 1);
- scan_tree_for_params (region, afn, fn, v);
- ppl_assign_Linear_Expression_from_Linear_Expression (access, fn);
-
- ppl_set_coef (access, subscript, -1);
- ppl_new_Constraint (&cstr, access, PPL_CONSTRAINT_TYPE_EQUAL);
- ppl_Polyhedron_add_constraint (accesses, cstr);
-
- ppl_delete_Linear_Expression (fn);
- ppl_delete_Linear_Expression (access);
- ppl_delete_Constraint (cstr);
+ aff = extract_affine (scop, afn,
+ isl_space_domain (isl_map_get_space (acc)));
+ acc = set_index (acc, i + 1, aff);
}
- mpz_clear (v);
+ return acc;
}
/* Add constrains representing the size of the accessed data to the
@@ -1607,63 +1501,68 @@ pdr_add_memory_accesses (ppl_Polyhedron_t accesses, data_reference_p dr,
ACCESSES polyhedron, DOM_NB_DIMS is the dimension of the iteration
domain. */
-static void
-pdr_add_data_dimensions (ppl_Polyhedron_t accesses, data_reference_p dr,
- ppl_dimension_type accessp_nb_dims,
- ppl_dimension_type dom_nb_dims)
+static isl_set *
+pdr_add_data_dimensions (isl_set *extent, scop_p scop, data_reference_p dr)
{
tree ref = DR_REF (dr);
int i, nb_subscripts = DR_NUM_DIMENSIONS (dr);
for (i = nb_subscripts - 1; i >= 0; i--, ref = TREE_OPERAND (ref, 0))
{
- ppl_Linear_Expression_t expr;
- ppl_Constraint_t cstr;
- ppl_dimension_type subscript = dom_nb_dims + 1 + i;
tree low, high;
if (TREE_CODE (ref) != ARRAY_REF)
break;
low = array_ref_low_bound (ref);
-
- /* subscript - low >= 0 */
- if (host_integerp (low, 0))
- {
- tree minus_low;
-
- ppl_new_Linear_Expression_with_dimension (&expr, accessp_nb_dims);
- ppl_set_coef (expr, subscript, 1);
-
- minus_low = fold_build1 (NEGATE_EXPR, TREE_TYPE (low), low);
- ppl_set_inhomogeneous_tree (expr, minus_low);
-
- ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_Polyhedron_add_constraint (accesses, cstr);
- ppl_delete_Linear_Expression (expr);
- ppl_delete_Constraint (cstr);
- }
-
high = array_ref_up_bound (ref);
- /* high - subscript >= 0 */
- if (high && host_integerp (high, 0)
+ /* XXX The PPL code dealt separately with
+ subscript - low >= 0 and high - subscript >= 0 in case one of
+ the two bounds isn't known. Do the same here? */
+
+ if (host_integerp (low, 0)
+ && high
+ && host_integerp (high, 0)
/* 1-element arrays at end of structures may extend over
their declared size. */
&& !(array_at_struct_end_p (ref)
&& operand_equal_p (low, high, 0)))
{
- ppl_new_Linear_Expression_with_dimension (&expr, accessp_nb_dims);
- ppl_set_coef (expr, subscript, -1);
-
- ppl_set_inhomogeneous_tree (expr, high);
-
- ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
- ppl_Polyhedron_add_constraint (accesses, cstr);
- ppl_delete_Linear_Expression (expr);
- ppl_delete_Constraint (cstr);
+ isl_id *id;
+ isl_aff *aff;
+ isl_set *univ, *lbs, *ubs;
+ isl_pw_aff *index;
+ isl_space *space;
+ isl_set *valid;
+ isl_pw_aff *lb = extract_affine_int (low, isl_set_get_space (extent));
+ isl_pw_aff *ub = extract_affine_int (high, isl_set_get_space (extent));
+
+ /* high >= 0 */
+ valid = isl_pw_aff_nonneg_set (isl_pw_aff_copy (ub));
+ valid = isl_set_project_out (valid, isl_dim_set, 0,
+ isl_set_dim (valid, isl_dim_set));
+ scop->context = isl_set_intersect (scop->context, valid);
+
+ space = isl_set_get_space (extent);
+ aff = isl_aff_zero_on_domain (isl_local_space_from_space (space));
+ aff = isl_aff_add_coefficient_si (aff, isl_dim_in, i + 1, 1);
+ univ = isl_set_universe (isl_space_domain (isl_aff_get_space (aff)));
+ index = isl_pw_aff_alloc (univ, aff);
+
+ id = isl_set_get_tuple_id (extent);
+ lb = isl_pw_aff_set_tuple_id (lb, isl_dim_in, isl_id_copy (id));
+ ub = isl_pw_aff_set_tuple_id (ub, isl_dim_in, id);
+
+ /* low <= sub_i <= high */
+ lbs = isl_pw_aff_ge_set (isl_pw_aff_copy (index), lb);
+ ubs = isl_pw_aff_le_set (index, ub);
+ extent = isl_set_intersect (extent, lbs);
+ extent = isl_set_intersect (extent, ubs);
}
}
+
+ return extent;
}
/* Build data accesses for DR in PBB. */
@@ -1671,32 +1570,46 @@ pdr_add_data_dimensions (ppl_Polyhedron_t accesses, data_reference_p dr,
static void
build_poly_dr (data_reference_p dr, poly_bb_p pbb)
{
- ppl_Polyhedron_t accesses;
- ppl_Pointset_Powerset_C_Polyhedron_t accesses_ps;
- ppl_dimension_type dom_nb_dims;
- ppl_dimension_type accessp_nb_dims;
int dr_base_object_set;
+ isl_map *acc;
+ isl_set *extent;
+ scop_p scop = PBB_SCOP (pbb);
- ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PBB_DOMAIN (pbb),
- &dom_nb_dims);
- accessp_nb_dims = dom_nb_dims + 1 + DR_NUM_DIMENSIONS (dr);
+ {
+ isl_space *dc = isl_set_get_space (pbb->domain);
+ int nb_out = 1 + DR_NUM_DIMENSIONS (dr);
+ isl_space *space = isl_space_add_dims (isl_space_from_domain (dc),
+ isl_dim_out, nb_out);
- ppl_new_C_Polyhedron_from_space_dimension (&accesses, accessp_nb_dims, 0);
+ acc = isl_map_universe (space);
+ acc = isl_map_set_tuple_id (acc, isl_dim_out, isl_id_for_dr (scop, dr));
+ }
- pdr_add_alias_set (accesses, dr, accessp_nb_dims, dom_nb_dims);
- pdr_add_memory_accesses (accesses, dr, accessp_nb_dims, dom_nb_dims, pbb);
- pdr_add_data_dimensions (accesses, dr, accessp_nb_dims, dom_nb_dims);
+ acc = pdr_add_alias_set (acc, dr);
+ acc = pdr_add_memory_accesses (acc, dr, pbb);
- ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&accesses_ps,
- accesses);
- ppl_delete_Polyhedron (accesses);
+ {
+ isl_id *id = isl_id_for_dr (scop, dr);
+ int nb = 1 + DR_NUM_DIMENSIONS (dr);
+ isl_space *space = isl_space_set_alloc (scop->ctx, 0, nb);
+ int alias_set_num = 0;
+ base_alias_pair *bap = (base_alias_pair *)(dr->aux);
+
+ if (bap && bap->alias_set)
+ alias_set_num = *(bap->alias_set);
+
+ space = isl_space_set_tuple_id (space, isl_dim_set, id);
+ extent = isl_set_nat_universe (space);
+ extent = isl_set_fix_si (extent, isl_dim_set, 0, alias_set_num);
+ extent = pdr_add_data_dimensions (extent, scop, dr);
+ }
gcc_assert (dr->aux);
dr_base_object_set = ((base_alias_pair *)(dr->aux))->base_obj_set;
- new_poly_dr (pbb, dr_base_object_set, accesses_ps,
+ new_poly_dr (pbb, dr_base_object_set,
DR_IS_READ (dr) ? PDR_READ : PDR_WRITE,
- dr, DR_NUM_DIMENSIONS (dr));
+ dr, DR_NUM_DIMENSIONS (dr), acc, extent);
}
/* Write to FILE the alias graph of data references in DIMACS format. */
@@ -2139,9 +2052,7 @@ new_pbb_from_pbb (scop_p scop, poly_bb_p pbb, basic_block bb)
if (VEC_index (poly_bb_p, SCOP_BBS (scop), index) == pbb)
break;
- if (PBB_DOMAIN (pbb))
- ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
- (&PBB_DOMAIN (pbb1), PBB_DOMAIN (pbb));
+ pbb1->domain = isl_set_copy (pbb->domain);
GBB_PBB (gbb1) = pbb1;
GBB_CONDITIONS (gbb1) = VEC_copy (gimple, heap, GBB_CONDITIONS (gbb));
@@ -2189,8 +2100,6 @@ create_zero_dim_array (tree var, const char *base_name)
tree array_type = build_array_type (elt_type, index_type);
tree base = create_tmp_var (array_type, base_name);
- add_referenced_var (base);
-
return build4 (ARRAY_REF, elt_type, base, integer_zero_node, NULL_TREE,
NULL_TREE);
}
@@ -2201,7 +2110,7 @@ static bool
scalar_close_phi_node_p (gimple phi)
{
if (gimple_code (phi) != GIMPLE_PHI
- || !is_gimple_reg (gimple_phi_result (phi)))
+ || virtual_operand_p (gimple_phi_result (phi)))
return false;
/* Note that loop close phi nodes should have a single argument
@@ -2257,7 +2166,6 @@ rewrite_close_phi_out_of_ssa (scop_p scop, gimple_stmt_iterator *psi)
sese region = SCOP_REGION (scop);
gimple phi = gsi_stmt (*psi);
tree res = gimple_phi_result (phi);
- tree var = SSA_NAME_VAR (res);
basic_block bb = gimple_bb (phi);
gimple_stmt_iterator gsi = gsi_after_labels (bb);
tree arg = gimple_phi_arg_def (phi, 0);
@@ -2313,7 +2221,7 @@ rewrite_close_phi_out_of_ssa (scop_p scop, gimple_stmt_iterator *psi)
}
else
{
- tree zero_dim_array = create_zero_dim_array (var, "Close_Phi");
+ tree zero_dim_array = create_zero_dim_array (res, "Close_Phi");
stmt = gimple_build_assign (res, zero_dim_array);
@@ -2341,8 +2249,8 @@ rewrite_phi_out_of_ssa (scop_p scop, gimple_stmt_iterator *psi)
gimple phi = gsi_stmt (*psi);
basic_block bb = gimple_bb (phi);
tree res = gimple_phi_result (phi);
- tree var = SSA_NAME_VAR (res);
- tree zero_dim_array = create_zero_dim_array (var, "phi_out_of_ssa");
+ tree var;
+ tree zero_dim_array = create_zero_dim_array (res, "phi_out_of_ssa");
gimple stmt;
gimple_seq stmts;
@@ -2410,7 +2318,7 @@ rewrite_reductions_out_of_ssa (scop_p scop)
{
gimple phi = gsi_stmt (psi);
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
{
gsi_next (&psi);
continue;
@@ -2440,14 +2348,16 @@ static void
rewrite_cross_bb_scalar_dependence (scop_p scop, tree zero_dim_array,
tree def, gimple use_stmt)
{
- tree var = SSA_NAME_VAR (def);
- gimple name_stmt = gimple_build_assign (var, zero_dim_array);
- tree name = make_ssa_name (var, name_stmt);
+ gimple name_stmt;
+ tree name;
ssa_op_iter iter;
use_operand_p use_p;
gcc_assert (gimple_code (use_stmt) != GIMPLE_PHI);
+ name = copy_ssa_name (def, NULL);
+ name_stmt = gimple_build_assign (name, zero_dim_array);
+
gimple_assign_set_lhs (name_stmt, name);
insert_stmts (scop, name_stmt, NULL, gsi_for_stmt (use_stmt));
@@ -2494,7 +2404,6 @@ handle_scalar_deps_crossing_scop_limits (scop_p scop, tree def, gimple stmt)
gimple assign = gimple_build_assign (new_name, def);
gimple_stmt_iterator psi = gsi_after_labels (SESE_EXIT (region)->dest);
- add_referenced_var (var);
SSA_NAME_DEF_STMT (new_name) = assign;
update_stmt (assign);
gsi_insert_before (&psi, assign, GSI_SAME_STMT);
@@ -2572,7 +2481,7 @@ rewrite_cross_bb_scalar_deps (scop_p scop, gimple_stmt_iterator *gsi)
if (!zero_dim_array)
{
zero_dim_array = create_zero_dim_array
- (SSA_NAME_VAR (def), "Cross_BB_scalar_dependence");
+ (def, "Cross_BB_scalar_dependence");
insert_out_of_ssa_copy (scop, zero_dim_array, def,
SSA_NAME_DEF_STMT (def));
gsi_next (gsi);
@@ -3170,7 +3079,7 @@ rewrite_commutative_reductions_out_of_ssa_loop (scop_p scop,
for (gsi = gsi_start_phis (exit->dest); !gsi_end_p (gsi); gsi_next (&gsi))
if ((res = gimple_phi_result (gsi_stmt (gsi)))
- && is_gimple_reg (res)
+ && !virtual_operand_p (res)
&& !scev_analyzable_p (res, SCOP_REGION (scop)))
changed |= rewrite_commutative_reductions_out_of_ssa_close_phi
(scop, gsi_stmt (gsi));
@@ -3213,6 +3122,7 @@ scop_ivs_can_be_represented (scop_p scop)
loop_iterator li;
loop_p loop;
gimple_stmt_iterator psi;
+ bool result = true;
FOR_EACH_LOOP (li, loop, 0)
{
@@ -3228,11 +3138,16 @@ scop_ivs_can_be_represented (scop_p scop)
if (TYPE_UNSIGNED (type)
&& TYPE_PRECISION (type) >= TYPE_PRECISION (long_long_integer_type_node))
- return false;
+ {
+ result = false;
+ break;
+ }
}
+ if (!result)
+ FOR_EACH_LOOP_BREAK (li);
}
- return true;
+ return result;
}
/* Builds the polyhedral representation for a SESE region. */
diff --git a/gcc/graphite.c b/gcc/graphite.c
index 91358c1f409..04e1da29118 100644
--- a/gcc/graphite.c
+++ b/gcc/graphite.c
@@ -1,5 +1,6 @@
/* Gimple Represented as Polyhedra.
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
+ Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@inria.fr>.
This file is part of GCC.
@@ -33,6 +34,17 @@ along with GCC; see the file COPYING3. If not see
the functions that are used for transforming the code. */
#include "config.h"
+
+#ifdef HAVE_cloog
+#include <isl/set.h>
+#include <isl/map.h>
+#include <isl/options.h>
+#include <isl/union_map.h>
+#include <cloog/cloog.h>
+#include <cloog/isl/domain.h>
+#include <cloog/isl/cloog.h>
+#endif
+
#include "system.h"
#include "coretypes.h"
#include "diagnostic-core.h"
@@ -47,8 +59,6 @@ along with GCC; see the file COPYING3. If not see
#ifdef HAVE_cloog
-#include "ppl_c.h"
-#include "graphite-ppl.h"
#include "graphite-poly.h"
#include "graphite-scop-detection.h"
#include "graphite-clast-to-gimple.h"
@@ -186,10 +196,8 @@ print_graphite_statistics (FILE* file, VEC (scop_p, heap) *scops)
/* Initialize graphite: when there are no loops returns false. */
static bool
-graphite_initialize (void)
+graphite_initialize (isl_ctx *ctx)
{
- int ppl_initialized;
-
if (number_of_loops () <= 1
/* FIXME: This limit on the number of basic blocks of a function
should be removed when the SCOP detection is faster. */
@@ -198,6 +206,7 @@ graphite_initialize (void)
if (dump_file && (dump_flags & TDF_DETAILS))
print_global_statistics (dump_file);
+ isl_ctx_free (ctx);
return false;
}
@@ -205,11 +214,7 @@ graphite_initialize (void)
recompute_all_dominators ();
initialize_original_copy_tables ();
- ppl_initialized = ppl_initialize ();
- gcc_assert (ppl_initialized == 0);
-
- cloog_state = cloog_state_malloc ();
- cloog_initialize ();
+ cloog_state = cloog_isl_state_malloc (ctx);
if (dump_file && dump_flags)
dump_function_to_file (current_function_decl, dump_file, dump_flags);
@@ -233,14 +238,14 @@ graphite_finalize (bool need_cfg_cleanup_p)
}
cloog_state_free (cloog_state);
- cloog_finalize ();
- ppl_finalize ();
free_original_copy_tables ();
if (dump_file && dump_flags)
print_loops (dump_file, 3);
}
+isl_ctx *the_isl_ctx;
+
/* Perform a set of linear transforms on the loops of the current
function. */
@@ -252,15 +257,19 @@ graphite_transform_loops (void)
bool need_cfg_cleanup_p = false;
VEC (scop_p, heap) *scops = NULL;
htab_t bb_pbb_mapping;
+ isl_ctx *ctx;
/* If a function is parallel it was most probably already run through graphite
once. No need to run again. */
if (parallelized_function_p (cfun->decl))
return;
- if (!graphite_initialize ())
+ ctx = isl_ctx_alloc ();
+ isl_options_set_on_error(ctx, ISL_ON_ERROR_ABORT);
+ if (!graphite_initialize (ctx))
return;
+ the_isl_ctx = ctx;
build_scops (&scops);
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -274,6 +283,7 @@ graphite_transform_loops (void)
FOR_EACH_VEC_ELT (scop_p, scops, i, scop)
if (dbg_cnt (graphite_scop))
{
+ scop->ctx = ctx;
build_poly_scop (scop);
if (POLY_SCOP_P (scop)
@@ -285,6 +295,8 @@ graphite_transform_loops (void)
htab_delete (bb_pbb_mapping);
free_scops (scops);
graphite_finalize (need_cfg_cleanup_p);
+ the_isl_ctx = NULL;
+ isl_ctx_free (ctx);
}
#else /* If Cloog is not available: #ifndef HAVE_cloog. */
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 9ec005ab9ee..9cd0070998a 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -149,6 +149,7 @@ along with GCC; see the file COPYING3. If not see
#include "ira.h"
#include "emit-rtl.h" /* FIXME: Can go away once crtl is moved to rtl.h. */
#include "hashtab.h"
+#include "dumpfile.h"
#ifdef INSN_SCHEDULING
@@ -7193,8 +7194,7 @@ init_before_recovery (basic_block *before_recovery_ptr)
redirect_edge_succ (e, single);
make_single_succ_edge (single, empty, 0);
- make_single_succ_edge (empty, EXIT_BLOCK_PTR,
- EDGE_FALLTHRU | EDGE_CAN_FALLTHRU);
+ make_single_succ_edge (empty, EXIT_BLOCK_PTR, EDGE_FALLTHRU);
label = block_label (empty);
x = emit_jump_insn_after (gen_jump (label), BB_END (single));
diff --git a/gcc/hash-table.c b/gcc/hash-table.c
new file mode 100644
index 00000000000..7909a989486
--- /dev/null
+++ b/gcc/hash-table.c
@@ -0,0 +1,190 @@
+/* A type-safe hash table template.
+ Copyright (C) 2012
+ Free Software Foundation, Inc.
+ Contributed by Lawrence Crowl <crowl@google.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+
+/* This file implements a typed hash table.
+ The implementation borrows from libiberty's hashtab. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "hash-table.h"
+
+
+/* Table of primes and multiplicative inverses.
+
+ Note that these are not minimally reduced inverses. Unlike when generating
+ code to divide by a constant, we want to be able to use the same algorithm
+ all the time. All of these inverses (are implied to) have bit 32 set.
+
+ For the record, here's the function that computed the table; it's a
+ vastly simplified version of the function of the same name from gcc. */
+
+#if 0
+unsigned int
+ceil_log2 (unsigned int x)
+{
+ int i;
+ for (i = 31; i >= 0 ; --i)
+ if (x > (1u << i))
+ return i+1;
+ abort ();
+}
+
+unsigned int
+choose_multiplier (unsigned int d, unsigned int *mlp, unsigned char *shiftp)
+{
+ unsigned long long mhigh;
+ double nx;
+ int lgup, post_shift;
+ int pow, pow2;
+ int n = 32, precision = 32;
+
+ lgup = ceil_log2 (d);
+ pow = n + lgup;
+ pow2 = n + lgup - precision;
+
+ nx = ldexp (1.0, pow) + ldexp (1.0, pow2);
+ mhigh = nx / d;
+
+ *shiftp = lgup - 1;
+ *mlp = mhigh;
+ return mhigh >> 32;
+}
+#endif
+
+struct prime_ent const prime_tab[] = {
+ { 7, 0x24924925, 0x9999999b, 2 },
+ { 13, 0x3b13b13c, 0x745d1747, 3 },
+ { 31, 0x08421085, 0x1a7b9612, 4 },
+ { 61, 0x0c9714fc, 0x15b1e5f8, 5 },
+ { 127, 0x02040811, 0x0624dd30, 6 },
+ { 251, 0x05197f7e, 0x073260a5, 7 },
+ { 509, 0x01824366, 0x02864fc8, 8 },
+ { 1021, 0x00c0906d, 0x014191f7, 9 },
+ { 2039, 0x0121456f, 0x0161e69e, 10 },
+ { 4093, 0x00300902, 0x00501908, 11 },
+ { 8191, 0x00080041, 0x00180241, 12 },
+ { 16381, 0x000c0091, 0x00140191, 13 },
+ { 32749, 0x002605a5, 0x002a06e6, 14 },
+ { 65521, 0x000f00e2, 0x00110122, 15 },
+ { 131071, 0x00008001, 0x00018003, 16 },
+ { 262139, 0x00014002, 0x0001c004, 17 },
+ { 524287, 0x00002001, 0x00006001, 18 },
+ { 1048573, 0x00003001, 0x00005001, 19 },
+ { 2097143, 0x00004801, 0x00005801, 20 },
+ { 4194301, 0x00000c01, 0x00001401, 21 },
+ { 8388593, 0x00001e01, 0x00002201, 22 },
+ { 16777213, 0x00000301, 0x00000501, 23 },
+ { 33554393, 0x00001381, 0x00001481, 24 },
+ { 67108859, 0x00000141, 0x000001c1, 25 },
+ { 134217689, 0x000004e1, 0x00000521, 26 },
+ { 268435399, 0x00000391, 0x000003b1, 27 },
+ { 536870909, 0x00000019, 0x00000029, 28 },
+ { 1073741789, 0x0000008d, 0x00000095, 29 },
+ { 2147483647, 0x00000003, 0x00000007, 30 },
+ /* Avoid "decimal constant so large it is unsigned" for 4294967291. */
+ { 0xfffffffb, 0x00000006, 0x00000008, 31 }
+};
+
+/* The following function returns an index into the above table of the
+ nearest prime number which is greater than N, and near a power of two. */
+
+unsigned int
+hash_table_higher_prime_index (unsigned long n)
+{
+ unsigned int low = 0;
+ unsigned int high = sizeof(prime_tab) / sizeof(prime_tab[0]);
+
+ while (low != high)
+ {
+ unsigned int mid = low + (high - low) / 2;
+ if (n > prime_tab[mid].prime)
+ low = mid + 1;
+ else
+ high = mid;
+ }
+
+ /* If we've run out of primes, abort. */
+ if (n > prime_tab[low].prime)
+ {
+ fprintf (stderr, "Cannot find prime bigger than %lu\n", n);
+ abort ();
+ }
+
+ return low;
+}
+
+/* Return X % Y using multiplicative inverse values INV and SHIFT.
+
+ The multiplicative inverses computed above are for 32-bit types,
+ and requires that we be able to compute a highpart multiply.
+
+ FIX: I am not at all convinced that
+ 3 loads, 2 multiplications, 3 shifts, and 3 additions
+ will be faster than
+ 1 load and 1 modulus
+ on modern systems running a compiler. */
+
+#ifdef UNSIGNED_64BIT_TYPE
+static inline hashval_t
+mul_mod (hashval_t x, hashval_t y, hashval_t inv, int shift)
+{
+ __extension__ typedef UNSIGNED_64BIT_TYPE ull;
+ hashval_t t1, t2, t3, t4, q, r;
+
+ t1 = ((ull)x * inv) >> 32;
+ t2 = x - t1;
+ t3 = t2 >> 1;
+ t4 = t1 + t3;
+ q = t4 >> shift;
+ r = x - (q * y);
+
+ return r;
+}
+#endif
+
+/* Compute the primary table index for HASH given current prime index. */
+
+hashval_t
+hash_table_mod1 (hashval_t hash, unsigned int index)
+{
+ const struct prime_ent *p = &prime_tab[index];
+#ifdef UNSIGNED_64BIT_TYPE
+ if (sizeof (hashval_t) * CHAR_BIT <= 32)
+ return mul_mod (hash, p->prime, p->inv, p->shift);
+#endif
+ return hash % p->prime;
+}
+
+
+/* Compute the secondary table index for HASH given current prime index. */
+
+hashval_t
+hash_table_mod2 (hashval_t hash, unsigned int index)
+{
+ const struct prime_ent *p = &prime_tab[index];
+#ifdef UNSIGNED_64BIT_TYPE
+ if (sizeof (hashval_t) * CHAR_BIT <= 32)
+ return 1 + mul_mod (hash, p->prime - 2, p->inv_m2, p->shift);
+#endif
+ return 1 + hash % (p->prime - 2);
+}
diff --git a/gcc/hash-table.h b/gcc/hash-table.h
new file mode 100644
index 00000000000..91231a21c33
--- /dev/null
+++ b/gcc/hash-table.h
@@ -0,0 +1,730 @@
+/* A type-safe hash table template.
+ Copyright (C) 2012
+ Free Software Foundation, Inc.
+ Contributed by Lawrence Crowl <crowl@google.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+
+/* This file implements a typed hash table.
+ The implementation borrows from libiberty's hashtab. */
+
+
+#ifndef TYPED_HASHTAB_H
+#define TYPED_HASHTAB_H
+
+#include "hashtab.h"
+
+
+/* The ordinary memory allocator. */
+/* FIXME (crowl): This allocator may be extracted for wider sharing later. */
+
+template <typename Type>
+struct xcallocator
+{
+ static Type *control_alloc (size_t count);
+ static Type *data_alloc (size_t count);
+ static void control_free (Type *memory);
+ static void data_free (Type *memory);
+};
+
+
+/* Allocate memory for COUNT control blocks. */
+
+template <typename Type>
+inline Type *
+xcallocator <Type>::control_alloc (size_t count)
+{
+ return static_cast <Type *> (xcalloc (count, sizeof (Type)));
+}
+
+
+/* Allocate memory for COUNT data blocks. */
+
+template <typename Type>
+inline Type *
+xcallocator <Type>::data_alloc (size_t count)
+{
+ return static_cast <Type *> (xcalloc (count, sizeof (Type)));
+}
+
+
+/* Free memory for control blocks. */
+
+template <typename Type>
+inline void
+xcallocator <Type>::control_free (Type *memory)
+{
+ return ::free (memory);
+}
+
+
+/* Free memory for data blocks. */
+
+template <typename Type>
+inline void
+xcallocator <Type>::data_free (Type *memory)
+{
+ return ::free (memory);
+}
+
+
+/* Remove method dispatching to free. */
+
+template <typename Element>
+struct typed_free_remove
+{
+ static inline void remove (Element *p) { free (p); }
+};
+
+/* No-op remove method. */
+
+template <typename Element>
+struct typed_noop_remove
+{
+ static inline void remove (Element *) {}
+};
+
+
+/* Pointer hash with a no-op remove method. */
+
+template <typename Element>
+struct pointer_hash : typed_noop_remove <Element>
+{
+ typedef Element T;
+
+ static inline hashval_t
+ hash (const T *);
+
+ static inline int
+ equal (const T *existing, const T * candidate);
+};
+
+template <typename Element>
+inline hashval_t
+pointer_hash<Element>::hash (const T *candidate)
+{
+ /* This is a really poor hash function, but it is what the current code uses,
+ so I am reusing it to avoid an additional axis in testing. */
+ return (hashval_t) ((intptr_t)candidate >> 3);
+}
+
+template <typename Element>
+inline int
+pointer_hash<Element>::equal (const T *existing,
+ const T *candidate)
+{
+ return existing == candidate;
+}
+
+
+/* Table of primes and their inversion information. */
+
+struct prime_ent
+{
+ hashval_t prime;
+ hashval_t inv;
+ hashval_t inv_m2; /* inverse of prime-2 */
+ hashval_t shift;
+};
+
+extern struct prime_ent const prime_tab[];
+
+
+/* Functions for computing hash table indexes. */
+
+extern unsigned int hash_table_higher_prime_index (unsigned long n);
+extern hashval_t hash_table_mod1 (hashval_t hash, unsigned int index);
+extern hashval_t hash_table_mod2 (hashval_t hash, unsigned int index);
+
+
+/* Internal implementation type. */
+
+template <typename T>
+struct hash_table_control
+{
+ /* Table itself. */
+ T **entries;
+
+ /* Current size (in entries) of the hash table. */
+ size_t size;
+
+ /* Current number of elements including also deleted elements. */
+ size_t n_elements;
+
+ /* Current number of deleted elements in the table. */
+ size_t n_deleted;
+
+ /* The following member is used for debugging. Its value is number
+ of all calls of `htab_find_slot' for the hash table. */
+ unsigned int searches;
+
+ /* The following member is used for debugging. Its value is number
+ of collisions fixed for time of work with the hash table. */
+ unsigned int collisions;
+
+ /* Current size (in entries) of the hash table, as an index into the
+ table of primes. */
+ unsigned int size_prime_index;
+};
+
+
+/* User-facing hash table type.
+
+ The table stores elements of type Element.
+
+ It hashes elements with the hash function.
+ The table currently works with relatively weak hash functions.
+ Use typed_pointer_hash <Element> when hashing pointers instead of objects.
+
+ It compares elements with the equal function.
+ Two elements with the same hash may not be equal.
+ Use typed_pointer_equal <Element> when hashing pointers instead of objects.
+
+ It removes elements with the remove function.
+ This feature is useful for freeing memory.
+ Use typed_null_remove <Element> when not freeing objects.
+ Use typed_free_remove <Element> when doing a simple object free.
+
+ Use the Allocator template to allocate and free memory.
+ The default is xcallocator.
+
+*/
+
+template <typename Descr,
+ template <typename Type> class Allocator = xcallocator>
+class hash_table
+{
+public:
+ typedef typename Descr::T T;
+
+private:
+ hash_table_control <T> *htab;
+
+ T **find_empty_slot_for_expand (hashval_t hash);
+ void expand ();
+
+public:
+ hash_table ();
+ void create (size_t initial_slots);
+ bool is_created ();
+ void dispose ();
+ T *find (T *comparable);
+ T *find_with_hash (T *comparable, hashval_t hash);
+ T **find_slot (T *comparable, enum insert_option insert);
+ T **find_slot_with_hash (T *comparable, hashval_t hash,
+ enum insert_option insert);
+ void empty ();
+ void clear_slot (T **slot);
+ void remove_elt (T *comparable);
+ void remove_elt_with_hash (T *comparable, hashval_t hash);
+ size_t size();
+ size_t elements();
+ double collisions();
+
+ template <typename Argument,
+ int (*Callback) (T **slot, Argument argument)>
+ void traverse_noresize (Argument argument);
+
+ template <typename Argument,
+ int (*Callback) (T **slot, Argument argument)>
+ void traverse (Argument argument);
+};
+
+
+/* Construct the hash table. The only useful operation next is create. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline
+hash_table <Descr, Allocator>::hash_table ()
+: htab (NULL)
+{
+}
+
+
+/* See if the table has been created, as opposed to constructed. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline bool
+hash_table <Descr, Allocator>::is_created ()
+{
+ return htab != NULL;
+}
+
+
+/* Like find_with_hash, but compute the hash value from the element. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline typename Descr::T *
+hash_table <Descr, Allocator>::find (T *comparable)
+{
+ return find_with_hash (comparable, Descr::hash (comparable));
+}
+
+
+/* Like find_slot_with_hash, but compute the hash value from the element. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline typename Descr::T **
+hash_table <Descr, Allocator>
+::find_slot (T *comparable, enum insert_option insert)
+{
+ return find_slot_with_hash (comparable, Descr::hash (comparable), insert);
+}
+
+
+/* Like remove_elt_with_hash, but compute the hash value from the element. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline void
+hash_table <Descr, Allocator>
+::remove_elt (T *comparable)
+{
+ remove_elt_with_hash (comparable, Descr::hash (comparable));
+}
+
+
+/* Return the current size of this hash table. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline size_t
+hash_table <Descr, Allocator>::size()
+{
+ return htab->size;
+}
+
+
+/* Return the current number of elements in this hash table. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline size_t
+hash_table <Descr, Allocator>::elements()
+{
+ return htab->n_elements - htab->n_deleted;
+}
+
+
+ /* Return the fraction of fixed collisions during all work with given
+ hash table. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+inline double
+hash_table <Descr, Allocator>::collisions()
+{
+ if (htab->searches == 0)
+ return 0.0;
+
+ return static_cast <double> (htab->collisions) / htab->searches;
+}
+
+
+/* Create a hash table with at least the given number of INITIAL_SLOTS. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+void
+hash_table <Descr, Allocator>::create (size_t size)
+{
+ unsigned int size_prime_index;
+
+ size_prime_index = hash_table_higher_prime_index (size);
+ size = prime_tab[size_prime_index].prime;
+
+ htab = Allocator <hash_table_control <T> > ::control_alloc (1);
+ gcc_assert (htab != NULL);
+ htab->entries = Allocator <T*> ::data_alloc (size);
+ gcc_assert (htab->entries != NULL);
+ htab->size = size;
+ htab->size_prime_index = size_prime_index;
+}
+
+
+/* Dispose of a hash table. Free all memory and return this hash table to
+ the non-created state. Naturally the hash table must already exist. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+void
+hash_table <Descr, Allocator>::dispose ()
+{
+ size_t size = htab->size;
+ T **entries = htab->entries;
+
+ for (int i = size - 1; i >= 0; i--)
+ if (entries[i] != HTAB_EMPTY_ENTRY && entries[i] != HTAB_DELETED_ENTRY)
+ Descr::remove (entries[i]);
+
+ Allocator <T *> ::data_free (entries);
+ Allocator <hash_table_control <T> > ::control_free (htab);
+ htab = NULL;
+}
+
+
+/* Similar to find_slot, but without several unwanted side effects:
+ - Does not call equal when it finds an existing entry.
+ - Does not change the count of elements/searches/collisions in the
+ hash table.
+ This function also assumes there are no deleted entries in the table.
+ HASH is the hash value for the element to be inserted. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+typename Descr::T **
+hash_table <Descr, Allocator>
+::find_empty_slot_for_expand (hashval_t hash)
+{
+ hashval_t index = hash_table_mod1 (hash, htab->size_prime_index);
+ size_t size = htab->size;
+ T **slot = htab->entries + index;
+ hashval_t hash2;
+
+ if (*slot == HTAB_EMPTY_ENTRY)
+ return slot;
+ else if (*slot == HTAB_DELETED_ENTRY)
+ abort ();
+
+ hash2 = hash_table_mod2 (hash, htab->size_prime_index);
+ for (;;)
+ {
+ index += hash2;
+ if (index >= size)
+ index -= size;
+
+ slot = htab->entries + index;
+ if (*slot == HTAB_EMPTY_ENTRY)
+ return slot;
+ else if (*slot == HTAB_DELETED_ENTRY)
+ abort ();
+ }
+}
+
+
+/* The following function changes size of memory allocated for the
+ entries and repeatedly inserts the table elements. The occupancy
+ of the table after the call will be about 50%. Naturally the hash
+ table must already exist. Remember also that the place of the
+ table entries is changed. If memory allocation fails, this function
+ will abort. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+void
+hash_table <Descr, Allocator>::expand ()
+{
+ T **oentries;
+ T **olimit;
+ T **p;
+ T **nentries;
+ size_t nsize, osize, elts;
+ unsigned int oindex, nindex;
+
+ oentries = htab->entries;
+ oindex = htab->size_prime_index;
+ osize = htab->size;
+ olimit = oentries + osize;
+ elts = elements ();
+
+ /* Resize only when table after removal of unused elements is either
+ too full or too empty. */
+ if (elts * 2 > osize || (elts * 8 < osize && osize > 32))
+ {
+ nindex = hash_table_higher_prime_index (elts * 2);
+ nsize = prime_tab[nindex].prime;
+ }
+ else
+ {
+ nindex = oindex;
+ nsize = osize;
+ }
+
+ nentries = Allocator <T *> ::data_alloc (nsize);
+ gcc_assert (nentries != NULL);
+ htab->entries = nentries;
+ htab->size = nsize;
+ htab->size_prime_index = nindex;
+ htab->n_elements -= htab->n_deleted;
+ htab->n_deleted = 0;
+
+ p = oentries;
+ do
+ {
+ T *x = *p;
+
+ if (x != HTAB_EMPTY_ENTRY && x != HTAB_DELETED_ENTRY)
+ {
+ T **q = find_empty_slot_for_expand (Descr::hash (x));
+
+ *q = x;
+ }
+
+ p++;
+ }
+ while (p < olimit);
+
+ Allocator <T *> ::data_free (oentries);
+}
+
+
+/* This function searches for a hash table entry equal to the given
+ COMPARABLE element starting with the given HASH value. It cannot
+ be used to insert or delete an element. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+typename Descr::T *
+hash_table <Descr, Allocator>
+::find_with_hash (T *comparable, hashval_t hash)
+{
+ hashval_t index, hash2;
+ size_t size;
+ T *entry;
+
+ htab->searches++;
+ size = htab->size;
+ index = hash_table_mod1 (hash, htab->size_prime_index);
+
+ entry = htab->entries[index];
+ if (entry == HTAB_EMPTY_ENTRY
+ || (entry != HTAB_DELETED_ENTRY && Descr::equal (entry, comparable)))
+ return entry;
+
+ hash2 = hash_table_mod2 (hash, htab->size_prime_index);
+ for (;;)
+ {
+ htab->collisions++;
+ index += hash2;
+ if (index >= size)
+ index -= size;
+
+ entry = htab->entries[index];
+ if (entry == HTAB_EMPTY_ENTRY
+ || (entry != HTAB_DELETED_ENTRY && Descr::equal (entry, comparable)))
+ return entry;
+ }
+}
+
+
+/* This function searches for a hash table slot containing an entry
+ equal to the given COMPARABLE element and starting with the given
+ HASH. To delete an entry, call this with insert=NO_INSERT, then
+ call clear_slot on the slot returned (possibly after doing some
+ checks). To insert an entry, call this with insert=INSERT, then
+ write the value you want into the returned slot. When inserting an
+ entry, NULL may be returned if memory allocation fails. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+typename Descr::T **
+hash_table <Descr, Allocator>
+::find_slot_with_hash (T *comparable, hashval_t hash,
+ enum insert_option insert)
+{
+ T **first_deleted_slot;
+ hashval_t index, hash2;
+ size_t size;
+ T *entry;
+
+ size = htab->size;
+ if (insert == INSERT && size * 3 <= htab->n_elements * 4)
+ {
+ expand ();
+ size = htab->size;
+ }
+
+ index = hash_table_mod1 (hash, htab->size_prime_index);
+
+ htab->searches++;
+ first_deleted_slot = NULL;
+
+ entry = htab->entries[index];
+ if (entry == HTAB_EMPTY_ENTRY)
+ goto empty_entry;
+ else if (entry == HTAB_DELETED_ENTRY)
+ first_deleted_slot = &htab->entries[index];
+ else if (Descr::equal (entry, comparable))
+ return &htab->entries[index];
+
+ hash2 = hash_table_mod2 (hash, htab->size_prime_index);
+ for (;;)
+ {
+ htab->collisions++;
+ index += hash2;
+ if (index >= size)
+ index -= size;
+
+ entry = htab->entries[index];
+ if (entry == HTAB_EMPTY_ENTRY)
+ goto empty_entry;
+ else if (entry == HTAB_DELETED_ENTRY)
+ {
+ if (!first_deleted_slot)
+ first_deleted_slot = &htab->entries[index];
+ }
+ else if (Descr::equal (entry, comparable))
+ return &htab->entries[index];
+ }
+
+ empty_entry:
+ if (insert == NO_INSERT)
+ return NULL;
+
+ if (first_deleted_slot)
+ {
+ htab->n_deleted--;
+ *first_deleted_slot = static_cast <T *> (HTAB_EMPTY_ENTRY);
+ return first_deleted_slot;
+ }
+
+ htab->n_elements++;
+ return &htab->entries[index];
+}
+
+
+/* This function clears all entries in the given hash table. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+void
+hash_table <Descr, Allocator>::empty ()
+{
+ size_t size = htab_size (htab);
+ T **entries = htab->entries;
+ int i;
+
+ for (i = size - 1; i >= 0; i--)
+ if (entries[i] != HTAB_EMPTY_ENTRY && entries[i] != HTAB_DELETED_ENTRY)
+ Descr::remove (entries[i]);
+
+ /* Instead of clearing megabyte, downsize the table. */
+ if (size > 1024*1024 / sizeof (PTR))
+ {
+ int nindex = hash_table_higher_prime_index (1024 / sizeof (PTR));
+ int nsize = prime_tab[nindex].prime;
+
+ Allocator <T *> ::data_free (htab->entries);
+ htab->entries = Allocator <T *> ::data_alloc (nsize);
+ htab->size = nsize;
+ htab->size_prime_index = nindex;
+ }
+ else
+ memset (entries, 0, size * sizeof (T *));
+ htab->n_deleted = 0;
+ htab->n_elements = 0;
+}
+
+
+/* This function clears a specified SLOT in a hash table. It is
+ useful when you've already done the lookup and don't want to do it
+ again. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+void
+hash_table <Descr, Allocator>
+::clear_slot (T **slot)
+{
+ if (slot < htab->entries || slot >= htab->entries + htab->size
+ || *slot == HTAB_EMPTY_ENTRY || *slot == HTAB_DELETED_ENTRY)
+ abort ();
+
+ Descr::remove (*slot);
+
+ *slot = HTAB_DELETED_ENTRY;
+ htab->n_deleted++;
+}
+
+
+/* This function deletes an element with the given COMPARABLE value
+ from hash table starting with the given HASH. If there is no
+ matching element in the hash table, this function does nothing. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+void
+hash_table <Descr, Allocator>
+::remove_elt_with_hash (T *comparable, hashval_t hash)
+{
+ T **slot;
+
+ slot = find_slot_with_hash (comparable, hash, NO_INSERT);
+ if (*slot == HTAB_EMPTY_ENTRY)
+ return;
+
+ Descr::remove (*slot);
+
+ *slot = static_cast <T *> (HTAB_DELETED_ENTRY);
+ htab->n_deleted++;
+}
+
+
+/* This function scans over the entire hash table calling CALLBACK for
+ each live entry. If CALLBACK returns false, the iteration stops.
+ ARGUMENT is passed as CALLBACK's second argument. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+template <typename Argument,
+ int (*Callback) (typename Descr::T **slot, Argument argument)>
+void
+hash_table <Descr, Allocator>
+::traverse_noresize (Argument argument)
+{
+ T **slot;
+ T **limit;
+
+ slot = htab->entries;
+ limit = slot + htab->size;
+
+ do
+ {
+ T *x = *slot;
+
+ if (x != HTAB_EMPTY_ENTRY && x != HTAB_DELETED_ENTRY)
+ if (! Callback (slot, argument))
+ break;
+ }
+ while (++slot < limit);
+}
+
+
+/* Like traverse_noresize, but does resize the table when it is too empty
+ to improve effectivity of subsequent calls. */
+
+template <typename Descr,
+ template <typename Type> class Allocator>
+template <typename Argument,
+ int (*Callback) (typename Descr::T **slot, Argument argument)>
+void
+hash_table <Descr, Allocator>
+::traverse (Argument argument)
+{
+ size_t size = htab->size;
+ if (elements () * 8 < size && size > 32)
+ expand ();
+
+ traverse_noresize <Argument, Callback> (argument);
+}
+
+#endif /* TYPED_HASHTAB_H */
diff --git a/gcc/hw-doloop.c b/gcc/hw-doloop.c
index ec1bedd4e4c..cd9b3f28b73 100644
--- a/gcc/hw-doloop.c
+++ b/gcc/hw-doloop.c
@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3. If not see
#include "recog.h"
#include "target.h"
#include "hw-doloop.h"
+#include "dumpfile.h"
#ifdef HAVE_doloop_end
@@ -344,12 +345,12 @@ discover_loop (hwloop_info loop, basic_block tail_bb, rtx tail_insn, rtx reg)
}
/* Analyze the structure of the loops in the current function. Use
- STACK for bitmap allocations. Returns all the valid candidates for
+ LOOP_STACK for bitmap allocations. Returns all the valid candidates for
hardware loops found in this function. HOOKS is the argument
passed to reorg_loops, used here to find the iteration registers
from a loop_end pattern. */
static hwloop_info
-discover_loops (bitmap_obstack *stack, struct hw_doloop_hooks *hooks)
+discover_loops (bitmap_obstack *loop_stack, struct hw_doloop_hooks *hooks)
{
hwloop_info loops = NULL;
hwloop_info loop;
@@ -405,7 +406,7 @@ discover_loops (bitmap_obstack *stack, struct hw_doloop_hooks *hooks)
loops = loop;
loop->loop_no = nloops++;
loop->blocks = VEC_alloc (basic_block, heap, 20);
- loop->block_bitmap = BITMAP_ALLOC (stack);
+ loop->block_bitmap = BITMAP_ALLOC (loop_stack);
if (dump_file)
{
@@ -625,18 +626,18 @@ reorg_loops (bool do_reorder, struct hw_doloop_hooks *hooks)
{
hwloop_info loops = NULL;
hwloop_info loop;
- bitmap_obstack stack;
+ bitmap_obstack loop_stack;
df_live_add_problem ();
df_live_set_all_dirty ();
df_analyze ();
- bitmap_obstack_initialize (&stack);
+ bitmap_obstack_initialize (&loop_stack);
if (dump_file)
fprintf (dump_file, ";; Find loops, first pass\n\n");
- loops = discover_loops (&stack, hooks);
+ loops = discover_loops (&loop_stack, hooks);
if (do_reorder)
{
@@ -646,7 +647,7 @@ reorg_loops (bool do_reorder, struct hw_doloop_hooks *hooks)
if (dump_file)
fprintf (dump_file, ";; Find loops, second pass\n\n");
- loops = discover_loops (&stack, hooks);
+ loops = discover_loops (&loop_stack, hooks);
}
for (loop = loops; loop; loop = loop->next)
diff --git a/gcc/hwint.c b/gcc/hwint.c
index bfc5e3dedcd..b7bcfa59740 100644
--- a/gcc/hwint.c
+++ b/gcc/hwint.c
@@ -107,6 +107,23 @@ ffs_hwi (unsigned HOST_WIDE_INT x)
return 1 + floor_log2 (x & -x);
}
+/* Return the number of set bits in X. */
+
+int
+popcount_hwi (unsigned HOST_WIDE_INT x)
+{
+ int i, ret = 0;
+ size_t bits = sizeof (x) * CHAR_BIT;
+
+ for (i = 0; i < bits; i += 1)
+ {
+ ret += x & 1;
+ x >>= 1;
+ }
+
+ return ret;
+}
+
#endif /* GCC_VERSION < 3004 */
/* Compute the absolute value of X. */
diff --git a/gcc/hwint.h b/gcc/hwint.h
index 00c9538fb11..ca471486c63 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -179,6 +179,9 @@ extern int clz_hwi (unsigned HOST_WIDE_INT x);
extern int ctz_hwi (unsigned HOST_WIDE_INT x);
extern int ffs_hwi (unsigned HOST_WIDE_INT x);
+/* Return the number of set bits in X. */
+extern int popcount_hwi (unsigned HOST_WIDE_INT x);
+
/* Return log2, or -1 if not exact. */
extern int exact_log2 (unsigned HOST_WIDE_INT);
@@ -232,6 +235,18 @@ ffs_hwi (unsigned HOST_WIDE_INT x)
}
static inline int
+popcount_hwi (unsigned HOST_WIDE_INT x)
+{
+# if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
+ return __builtin_popcountl (x);
+# elif HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONGLONG
+ return __builtin_popcountll (x);
+# else
+ return __builtin_popcount (x);
+# endif
+}
+
+static inline int
floor_log2 (unsigned HOST_WIDE_INT x)
{
return HOST_BITS_PER_WIDE_INT - 1 - clz_hwi (x);
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index c1d4c9eb1e1..fd3e929426b 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -40,10 +40,10 @@
#include "tm_p.h"
#include "cfgloop.h"
#include "target.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
#include "vec.h"
+#include "pointer-set.h"
#include "vecprim.h"
#include "dbgcnt.h"
@@ -903,7 +903,7 @@ noce_emit_move_insn (rtx x, rtx y)
switch (GET_RTX_CLASS (GET_CODE (y)))
{
case RTX_UNARY:
- ot = code_to_optab[GET_CODE (y)];
+ ot = code_to_optab (GET_CODE (y));
if (ot)
{
start_sequence ();
@@ -920,7 +920,7 @@ noce_emit_move_insn (rtx x, rtx y)
case RTX_BIN_ARITH:
case RTX_COMM_ARITH:
- ot = code_to_optab[GET_CODE (y)];
+ ot = code_to_optab (GET_CODE (y));
if (ot)
{
start_sequence ();
@@ -2688,12 +2688,14 @@ noce_process_if_block (struct noce_if_info *if_info)
/* Check whether a block is suitable for conditional move conversion.
Every insn must be a simple set of a register to a constant or a
- register. For each assignment, store the value in the array VALS,
- indexed by register number, then store the register number in
- REGS. COND is the condition we will test. */
+ register. For each assignment, store the value in the pointer map
+ VALS, keyed indexed by register pointer, then store the register
+ pointer in REGS. COND is the condition we will test. */
static int
-check_cond_move_block (basic_block bb, rtx *vals, VEC (int, heap) **regs,
+check_cond_move_block (basic_block bb,
+ struct pointer_map_t *vals,
+ VEC (rtx, heap) **regs,
rtx cond)
{
rtx insn;
@@ -2707,6 +2709,7 @@ check_cond_move_block (basic_block bb, rtx *vals, VEC (int, heap) **regs,
FOR_BB_INSNS (bb, insn)
{
rtx set, dest, src;
+ void **slot;
if (!NONDEBUG_INSN_P (insn) || JUMP_P (insn))
continue;
@@ -2733,14 +2736,14 @@ check_cond_move_block (basic_block bb, rtx *vals, VEC (int, heap) **regs,
/* Don't try to handle this if the source register was
modified earlier in the block. */
if ((REG_P (src)
- && vals[REGNO (src)] != NULL)
+ && pointer_map_contains (vals, src))
|| (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src))
- && vals[REGNO (SUBREG_REG (src))] != NULL))
+ && pointer_map_contains (vals, SUBREG_REG (src))))
return FALSE;
/* Don't try to handle this if the destination register was
modified earlier in the block. */
- if (vals[REGNO (dest)] != NULL)
+ if (pointer_map_contains (vals, dest))
return FALSE;
/* Don't try to handle this if the condition uses the
@@ -2754,17 +2757,18 @@ check_cond_move_block (basic_block bb, rtx *vals, VEC (int, heap) **regs,
&& modified_between_p (src, insn, NEXT_INSN (BB_END (bb))))
return FALSE;
- vals[REGNO (dest)] = src;
+ slot = pointer_map_insert (vals, (void *) dest);
+ *slot = (void *) src;
- VEC_safe_push (int, heap, *regs, REGNO (dest));
+ VEC_safe_push (rtx, heap, *regs, dest);
}
return TRUE;
}
/* Given a basic block BB suitable for conditional move conversion,
- a condition COND, and arrays THEN_VALS and ELSE_VALS containing the
- register values depending on COND, emit the insns in the block as
+ a condition COND, and pointer maps THEN_VALS and ELSE_VALS containing
+ the register values depending on COND, emit the insns in the block as
conditional moves. If ELSE_BLOCK is true, THEN_BB was already
processed. The caller has started a sequence for the conversion.
Return true if successful, false if something goes wrong. */
@@ -2772,7 +2776,8 @@ check_cond_move_block (basic_block bb, rtx *vals, VEC (int, heap) **regs,
static bool
cond_move_convert_if_block (struct noce_if_info *if_infop,
basic_block bb, rtx cond,
- rtx *then_vals, rtx *else_vals,
+ struct pointer_map_t *then_vals,
+ struct pointer_map_t *else_vals,
bool else_block_p)
{
enum rtx_code code;
@@ -2785,7 +2790,7 @@ cond_move_convert_if_block (struct noce_if_info *if_infop,
FOR_BB_INSNS (bb, insn)
{
rtx set, target, dest, t, e;
- unsigned int regno;
+ void **then_slot, **else_slot;
/* ??? Maybe emit conditional debug insn? */
if (!NONDEBUG_INSN_P (insn) || JUMP_P (insn))
@@ -2794,10 +2799,11 @@ cond_move_convert_if_block (struct noce_if_info *if_infop,
gcc_assert (set && REG_P (SET_DEST (set)));
dest = SET_DEST (set);
- regno = REGNO (dest);
- t = then_vals[regno];
- e = else_vals[regno];
+ then_slot = pointer_map_contains (then_vals, dest);
+ else_slot = pointer_map_contains (else_vals, dest);
+ t = then_slot ? (rtx) *then_slot : NULL_RTX;
+ e = else_slot ? (rtx) *else_slot : NULL_RTX;
if (else_block_p)
{
@@ -2841,31 +2847,25 @@ cond_move_process_if_block (struct noce_if_info *if_info)
rtx jump = if_info->jump;
rtx cond = if_info->cond;
rtx seq, loc_insn;
- int max_reg, size, c, reg;
- rtx *then_vals;
- rtx *else_vals;
- VEC (int, heap) *then_regs = NULL;
- VEC (int, heap) *else_regs = NULL;
+ rtx reg;
+ int c;
+ struct pointer_map_t *then_vals;
+ struct pointer_map_t *else_vals;
+ VEC (rtx, heap) *then_regs = NULL;
+ VEC (rtx, heap) *else_regs = NULL;
unsigned int i;
+ int success_p = FALSE;
/* Build a mapping for each block to the value used for each
register. */
- max_reg = max_reg_num ();
- size = (max_reg + 1) * sizeof (rtx);
- then_vals = (rtx *) alloca (size);
- else_vals = (rtx *) alloca (size);
- memset (then_vals, 0, size);
- memset (else_vals, 0, size);
+ then_vals = pointer_map_create ();
+ else_vals = pointer_map_create ();
/* Make sure the blocks are suitable. */
if (!check_cond_move_block (then_bb, then_vals, &then_regs, cond)
|| (else_bb
&& !check_cond_move_block (else_bb, else_vals, &else_regs, cond)))
- {
- VEC_free (int, heap, then_regs);
- VEC_free (int, heap, else_regs);
- return FALSE;
- }
+ goto done;
/* Make sure the blocks can be used together. If the same register
is set in both blocks, and is not set to a constant in both
@@ -2874,41 +2874,38 @@ cond_move_process_if_block (struct noce_if_info *if_info)
source register does not change after the assignment. Also count
the number of registers set in only one of the blocks. */
c = 0;
- FOR_EACH_VEC_ELT (int, then_regs, i, reg)
+ FOR_EACH_VEC_ELT (rtx, then_regs, i, reg)
{
- if (!then_vals[reg] && !else_vals[reg])
- continue;
+ void **then_slot = pointer_map_contains (then_vals, reg);
+ void **else_slot = pointer_map_contains (else_vals, reg);
- if (!else_vals[reg])
+ gcc_checking_assert (then_slot);
+ if (!else_slot)
++c;
else
{
- if (!CONSTANT_P (then_vals[reg])
- && !CONSTANT_P (else_vals[reg])
- && !rtx_equal_p (then_vals[reg], else_vals[reg]))
- {
- VEC_free (int, heap, then_regs);
- VEC_free (int, heap, else_regs);
- return FALSE;
- }
+ rtx then_val = (rtx) *then_slot;
+ rtx else_val = (rtx) *else_slot;
+ if (!CONSTANT_P (then_val) && !CONSTANT_P (else_val)
+ && !rtx_equal_p (then_val, else_val))
+ goto done;
}
}
/* Finish off c for MAX_CONDITIONAL_EXECUTE. */
- FOR_EACH_VEC_ELT (int, else_regs, i, reg)
- if (!then_vals[reg])
- ++c;
+ FOR_EACH_VEC_ELT (rtx, else_regs, i, reg)
+ {
+ gcc_checking_assert (pointer_map_contains (else_vals, reg));
+ if (!pointer_map_contains (then_vals, reg))
+ ++c;
+ }
/* Make sure it is reasonable to convert this block. What matters
is the number of assignments currently made in only one of the
branches, since if we convert we are going to always execute
them. */
if (c > MAX_CONDITIONAL_EXECUTE)
- {
- VEC_free (int, heap, then_regs);
- VEC_free (int, heap, else_regs);
- return FALSE;
- }
+ goto done;
/* Try to emit the conditional moves. First do the then block,
then do anything left in the else blocks. */
@@ -2920,17 +2917,11 @@ cond_move_process_if_block (struct noce_if_info *if_info)
then_vals, else_vals, true)))
{
end_sequence ();
- VEC_free (int, heap, then_regs);
- VEC_free (int, heap, else_regs);
- return FALSE;
+ goto done;
}
seq = end_ifcvt_sequence (if_info);
if (!seq)
- {
- VEC_free (int, heap, then_regs);
- VEC_free (int, heap, else_regs);
- return FALSE;
- }
+ goto done;
loc_insn = first_active_insn (then_bb);
if (!loc_insn)
@@ -2961,9 +2952,14 @@ cond_move_process_if_block (struct noce_if_info *if_info)
num_updated_if_blocks++;
- VEC_free (int, heap, then_regs);
- VEC_free (int, heap, else_regs);
- return TRUE;
+ success_p = TRUE;
+
+done:
+ pointer_map_destroy (then_vals);
+ pointer_map_destroy (else_vals);
+ VEC_free (rtx, heap, then_regs);
+ VEC_free (rtx, heap, else_regs);
+ return success_p;
}
@@ -4392,12 +4388,7 @@ if_convert (void)
#ifdef IFCVT_MULTIPLE_DUMPS
if (dump_file && cond_exec_changed_p)
- {
- if (dump_flags & TDF_SLIM)
- print_rtl_slim_with_bb (dump_file, get_insns (), dump_flags);
- else
- print_rtl_with_bb (dump_file, get_insns ());
- }
+ print_rtl_with_bb (dump_file, get_insns (), dump_flags);
#endif
}
while (cond_exec_changed_p);
@@ -4454,7 +4445,10 @@ rest_of_handle_if_conversion (void)
if (flag_if_conversion)
{
if (dump_file)
- dump_flow_info (dump_file, dump_flags);
+ {
+ dump_reg_info (dump_file);
+ dump_flow_info (dump_file, dump_flags);
+ }
cleanup_cfg (CLEANUP_EXPENSIVE);
if_convert ();
}
diff --git a/gcc/intl.h b/gcc/intl.h
index c4db3545893..03be420fe68 100644
--- a/gcc/intl.h
+++ b/gcc/intl.h
@@ -27,8 +27,16 @@
# define setlocale(category, locale) (locale)
#endif
+/* If libintl.h is available, include it before testing for NLS. If we
+ are building with --disable-nls and another header file includes
+ libintl.h, the stubs defined down below will cause syntax errors
+ when parsing libintl.h. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281
+ for details. */
+#if defined(HAVE_LIBINTL_H) || defined(ENABLE_NLS)
+# include <libintl.h>
+#endif
+
#ifdef ENABLE_NLS
-#include <libintl.h>
extern void gcc_init_libintl (void);
extern size_t gcc_gettext_width (const char *);
#else
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 3f3ab36119e..ef9569e8009 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -112,12 +112,9 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-pass.h"
#include "flags.h"
-#include "timevar.h"
#include "diagnostic.h"
#include "tree-pretty-print.h"
-#include "tree-dump.h"
#include "tree-inline.h"
-#include "fibheap.h"
#include "params.h"
#include "ipa-inline.h"
#include "ipa-utils.h"
@@ -1087,7 +1084,8 @@ propagate_constants_accross_call (struct cgraph_edge *cs)
tree
ipa_get_indirect_edge_target (struct cgraph_edge *ie,
VEC (tree, heap) *known_vals,
- VEC (tree, heap) *known_binfos)
+ VEC (tree, heap) *known_binfos,
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs)
{
int param_index = ie->indirect_info->param_index;
HOST_WIDE_INT token, anc_offset;
@@ -1099,8 +1097,26 @@ ipa_get_indirect_edge_target (struct cgraph_edge *ie,
if (!ie->indirect_info->polymorphic)
{
- tree t = (VEC_length (tree, known_vals) > (unsigned int) param_index
- ? VEC_index (tree, known_vals, param_index) : NULL);
+ tree t;
+
+ if (ie->indirect_info->agg_contents)
+ {
+ if (VEC_length (ipa_agg_jump_function_p, known_aggs)
+ > (unsigned int) param_index)
+ {
+ struct ipa_agg_jump_function *agg;
+ agg = VEC_index (ipa_agg_jump_function_p, known_aggs,
+ param_index);
+ t = ipa_find_agg_cst_for_param (agg, ie->indirect_info->offset,
+ ie->indirect_info->by_ref);
+ }
+ else
+ t = NULL;
+ }
+ else
+ t = (VEC_length (tree, known_vals) > (unsigned int) param_index
+ ? VEC_index (tree, known_vals, param_index) : NULL);
+
if (t &&
TREE_CODE (t) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (t, 0)) == FUNCTION_DECL)
@@ -1109,8 +1125,9 @@ ipa_get_indirect_edge_target (struct cgraph_edge *ie,
return NULL_TREE;
}
+ gcc_assert (!ie->indirect_info->agg_contents);
token = ie->indirect_info->otr_token;
- anc_offset = ie->indirect_info->anc_offset;
+ anc_offset = ie->indirect_info->offset;
otr_type = ie->indirect_info->otr_type;
t = VEC_index (tree, known_vals, param_index);
@@ -1159,7 +1176,8 @@ devirtualization_time_bonus (struct cgraph_node *node,
struct inline_summary *isummary;
tree target;
- target = ipa_get_indirect_edge_target (ie, known_csts, known_binfos);
+ target = ipa_get_indirect_edge_target (ie, known_csts, known_binfos,
+ NULL);
if (!target)
continue;
@@ -1676,7 +1694,7 @@ ipcp_discover_new_direct_edges (struct cgraph_node *node,
tree target;
next_ie = ie->next_callee;
- target = ipa_get_indirect_edge_target (ie, known_vals, NULL);
+ target = ipa_get_indirect_edge_target (ie, known_vals, NULL, NULL);
if (target)
ipa_make_edge_direct_to_target (ie, target);
}
@@ -2490,10 +2508,9 @@ ipcp_generate_summary (void)
/* Write ipcp summary for nodes in SET. */
static void
-ipcp_write_summary (cgraph_node_set set,
- varpool_node_set vset ATTRIBUTE_UNUSED)
+ipcp_write_summary (void)
{
- ipa_prop_write_jump_functions (set);
+ ipa_prop_write_jump_functions ();
}
/* Read ipcp summary. */
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index a38d2608cbd..ca80a8b88ba 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -76,7 +76,6 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "diagnostic.h"
#include "gimple-pretty-print.h"
-#include "timevar.h"
#include "params.h"
#include "tree-pass.h"
#include "coverage.h"
@@ -88,6 +87,9 @@ along with GCC; see the file COPYING3. If not see
#include "tree-streamer.h"
#include "ipa-inline.h"
#include "alloc-pool.h"
+#include "cfgloop.h"
+#include "cfgloop.h"
+#include "tree-scalar-evolution.h"
/* Estimate runtime of function can easilly run into huge numbers with many
nested loops. Be sure we can compute time * INLINE_SIZE_SCALE * 2 in an
@@ -204,22 +206,54 @@ not_inlined_predicate (void)
return single_cond_predicate (predicate_not_inlined_condition);
}
+/* Simple description of whether a memory load or a condition refers to a load
+ from an aggregate and if so, how and where from in the aggregate.
+ Individual fields have the same meaning like fields with the same name in
+ struct condition. */
-/* Add condition to condition list CONDS. */
+struct agg_position_info
+{
+ HOST_WIDE_INT offset;
+ bool agg_contents;
+ bool by_ref;
+};
+
+/* Add condition to condition list CONDS. AGGPOS describes whether the used
+ oprand is loaded from an aggregate and where in the aggregate it is. It can
+ be NULL, which means this not a load from an aggregate. */
static struct predicate
add_condition (struct inline_summary *summary, int operand_num,
+ struct agg_position_info *aggpos,
enum tree_code code, tree val)
{
int i;
struct condition *c;
struct condition new_cond;
+ HOST_WIDE_INT offset;
+ bool agg_contents, by_ref;
+
+ if (aggpos)
+ {
+ offset = aggpos->offset;
+ agg_contents = aggpos->agg_contents;
+ by_ref = aggpos->by_ref;
+ }
+ else
+ {
+ offset = 0;
+ agg_contents = false;
+ by_ref = false;
+ }
+ gcc_checking_assert (operand_num >= 0);
for (i = 0; VEC_iterate (condition, summary->conds, i, c); i++)
{
if (c->operand_num == operand_num
&& c->code == code
- && c->val == val)
+ && c->val == val
+ && c->agg_contents == agg_contents
+ && (!agg_contents || (c->offset == offset && c->by_ref == by_ref)))
return single_cond_predicate (i + predicate_first_dynamic_condition);
}
/* Too many conditions. Give up and return constant true. */
@@ -229,6 +263,9 @@ add_condition (struct inline_summary *summary, int operand_num,
new_cond.operand_num = operand_num;
new_cond.code = code;
new_cond.val = val;
+ new_cond.agg_contents = agg_contents;
+ new_cond.by_ref = by_ref;
+ new_cond.offset = offset;
VEC_safe_push (condition, gc, summary->conds, &new_cond);
return single_cond_predicate (i + predicate_first_dynamic_condition);
}
@@ -296,9 +333,9 @@ add_clause (conditions conditions, struct predicate *p, clause_t clause)
condition *cc1;
if (!(clause & (1 << c1)))
continue;
- cc1 = VEC_index (condition,
- conditions,
- c1 - predicate_first_dynamic_condition);
+ cc1 = &VEC_index (condition,
+ conditions,
+ c1 - predicate_first_dynamic_condition);
/* We have no way to represent !CHANGED and !IS_NOT_CONSTANT
and thus there is no point for looking for them. */
if (cc1->code == CHANGED
@@ -307,12 +344,12 @@ add_clause (conditions conditions, struct predicate *p, clause_t clause)
for (c2 = c1 + 1; c2 <= NUM_CONDITIONS; c2++)
if (clause & (1 << c2))
{
- condition *cc1 = VEC_index (condition,
- conditions,
- c1 - predicate_first_dynamic_condition);
- condition *cc2 = VEC_index (condition,
- conditions,
- c2 - predicate_first_dynamic_condition);
+ condition *cc1 = &VEC_index (condition,
+ conditions,
+ c1 - predicate_first_dynamic_condition);
+ condition *cc2 = &VEC_index (condition,
+ conditions,
+ c2 - predicate_first_dynamic_condition);
if (cc1->operand_num == cc2->operand_num
&& cc1->val == cc2->val
&& cc2->code != IS_NOT_CONSTANT
@@ -477,7 +514,7 @@ predicate_probability (conditions conds,
{
if (i2 >= predicate_first_dynamic_condition)
{
- condition *c = VEC_index
+ condition *c = &VEC_index
(condition, conds,
i2 - predicate_first_dynamic_condition);
if (c->code == CHANGED
@@ -487,7 +524,7 @@ predicate_probability (conditions conds,
{
int iprob = VEC_index (inline_param_summary_t,
inline_param_summary,
- c->operand_num)->change_prob;
+ c->operand_num).change_prob;
this_prob = MAX (this_prob, iprob);
}
else
@@ -517,9 +554,12 @@ dump_condition (FILE *f, conditions conditions, int cond)
fprintf (f, "not inlined");
else
{
- c = VEC_index (condition, conditions,
- cond - predicate_first_dynamic_condition);
+ c = &VEC_index (condition, conditions,
+ cond - predicate_first_dynamic_condition);
fprintf (f, "op%i", c->operand_num);
+ if (c->agg_contents)
+ fprintf (f, "[%soffset: " HOST_WIDE_INT_PRINT_DEC "]",
+ c->by_ref ? "ref " : "", c->offset);
if (c->code == IS_NOT_CONSTANT)
{
fprintf (f, " not constant");
@@ -577,6 +617,27 @@ dump_predicate (FILE *f, conditions conds, struct predicate *pred)
}
+/* Dump inline hints. */
+void
+dump_inline_hints (FILE *f, inline_hints hints)
+{
+ if (!hints)
+ return;
+ fprintf (f, "inline hints:");
+ if (hints & INLINE_HINT_indirect_call)
+ {
+ hints &= ~INLINE_HINT_indirect_call;
+ fprintf (f, " indirect_call");
+ }
+ if (hints & INLINE_HINT_loop_iterations)
+ {
+ hints &= ~INLINE_HINT_loop_iterations;
+ fprintf (f, " loop_iterations");
+ }
+ gcc_assert (!hints);
+}
+
+
/* Record SIZE and TIME under condition PRED into the inline summary. */
static void
@@ -610,7 +671,7 @@ account_size_time (struct inline_summary *summary, int size, int time,
{
i = 0;
found = true;
- e = VEC_index (size_time_entry, summary->entry, 0);
+ e = &VEC_index (size_time_entry, summary->entry, 0);
gcc_assert (!e->predicate.clause[0]);
}
if (dump_file && (dump_flags & TDF_DETAILS) && (time || size))
@@ -660,15 +721,17 @@ edge_set_predicate (struct cgraph_edge *e, struct predicate *predicate)
/* KNOWN_VALS is partial mapping of parameters of NODE to constant values.
- Return clause of possible truths. When INLINE_P is true, assume that
- we are inlining.
+ KNOWN_AGGS is a vector of aggreggate jump functions for each parameter.
+ Return clause of possible truths. When INLINE_P is true, assume that we are
+ inlining.
ERROR_MARK means compile time invariant. */
static clause_t
evaluate_conditions_for_known_args (struct cgraph_node *node,
- bool inline_p,
- VEC (tree, heap) *known_vals)
+ bool inline_p,
+ VEC (tree, heap) *known_vals,
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs)
{
clause_t clause = inline_p ? 0 : 1 << predicate_not_inlined_condition;
struct inline_summary *info = inline_summary (node);
@@ -680,16 +743,45 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
tree val;
tree res;
- /* We allow call stmt to have fewer arguments than the callee
- function (especially for K&R style programs). So bound
- check here. */
- if (c->operand_num < (int)VEC_length (tree, known_vals))
- val = VEC_index (tree, known_vals, c->operand_num);
- else
- val = NULL;
+ /* We allow call stmt to have fewer arguments than the callee function
+ (especially for K&R style programs). So bound check here (we assume
+ known_aggs vector, if non-NULL, has the same length as
+ known_vals). */
+ gcc_checking_assert (!known_aggs
+ || (VEC_length (tree, known_vals)
+ == VEC_length (ipa_agg_jump_function_p,
+ known_aggs)));
+ if (c->operand_num >= (int) VEC_length (tree, known_vals))
+ {
+ clause |= 1 << (i + predicate_first_dynamic_condition);
+ continue;
+ }
+
+ if (c->agg_contents)
+ {
+ struct ipa_agg_jump_function *agg;
+
+ if (c->code == CHANGED
+ && !c->by_ref
+ && (VEC_index (tree, known_vals, c->operand_num)
+ == error_mark_node))
+ continue;
- if (val == error_mark_node && c->code != CHANGED)
- val = NULL;
+ if (known_aggs)
+ {
+ agg = VEC_index (ipa_agg_jump_function_p, known_aggs,
+ c->operand_num);
+ val = ipa_find_agg_cst_for_param (agg, c->offset, c->by_ref);
+ }
+ else
+ val = NULL_TREE;
+ }
+ else
+ {
+ val = VEC_index (tree, known_vals, c->operand_num);
+ if (val == error_mark_node && c->code != CHANGED)
+ val = NULL_TREE;
+ }
if (!val)
{
@@ -712,13 +804,15 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
static void
evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
- clause_t *clause_ptr,
- VEC (tree, heap) **known_vals_ptr,
- VEC (tree, heap) **known_binfos_ptr)
+ clause_t *clause_ptr,
+ VEC (tree, heap) **known_vals_ptr,
+ VEC (tree, heap) **known_binfos_ptr,
+ VEC (ipa_agg_jump_function_p, heap) **known_aggs_ptr)
{
struct cgraph_node *callee = cgraph_function_or_thunk_node (e->callee, NULL);
struct inline_summary *info = inline_summary (callee);
VEC (tree, heap) *known_vals = NULL;
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs = NULL;
if (clause_ptr)
*clause_ptr = inline_p ? 0 : 1 << predicate_not_inlined_condition;
@@ -743,13 +837,16 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
if (count && (info->conds || known_vals_ptr))
VEC_safe_grow_cleared (tree, heap, known_vals, count);
+ if (count && (info->conds || known_aggs_ptr))
+ VEC_safe_grow_cleared (ipa_agg_jump_function_p, heap, known_aggs,
+ count);
if (count && known_binfos_ptr)
VEC_safe_grow_cleared (tree, heap, *known_binfos_ptr, count);
for (i = 0; i < count; i++)
{
- tree cst = ipa_value_from_jfunc (parms_info,
- ipa_get_ith_jump_func (args, i));
+ struct ipa_jump_func *jf = ipa_get_ith_jump_func (args, i);
+ tree cst = ipa_value_from_jfunc (parms_info, jf);
if (cst)
{
if (known_vals && TREE_CODE (cst) != TREE_BINFO)
@@ -760,19 +857,28 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
else if (inline_p
&& !VEC_index (inline_param_summary_t,
es->param,
- i)->change_prob)
+ i).change_prob)
VEC_replace (tree, known_vals, i, error_mark_node);
+ /* TODO: When IPA-CP starts propagating and merging aggregate jump
+ functions, use its knowledge of the caller too, just like the
+ scalar case above. */
+ VEC_replace (ipa_agg_jump_function_p, known_aggs, i, &jf->agg);
}
}
if (clause_ptr)
*clause_ptr = evaluate_conditions_for_known_args (callee, inline_p,
- known_vals);
+ known_vals, known_aggs);
if (known_vals_ptr)
*known_vals_ptr = known_vals;
else
VEC_free (tree, heap, known_vals);
+
+ if (known_aggs_ptr)
+ *known_aggs_ptr = known_aggs;
+ else
+ VEC_free (ipa_agg_jump_function_p, heap, known_aggs);
}
@@ -842,6 +948,11 @@ reset_inline_summary (struct cgraph_node *node)
info->stack_frame_offset = 0;
info->size = 0;
info->time = 0;
+ if (info->loop_iterations)
+ {
+ pool_free (edge_predicate_pool, info->loop_iterations);
+ info->loop_iterations = NULL;
+ }
VEC_free (condition, gc, info->conds);
VEC_free (size_time_entry,gc, info->entry);
for (e = node->callees; e; e = e->next_callee)
@@ -918,8 +1029,8 @@ inline_node_duplication_hook (struct cgraph_node *src, struct cgraph_node *dst,
}
}
}
- possible_truths = evaluate_conditions_for_known_args (dst,
- false, known_vals);
+ possible_truths = evaluate_conditions_for_known_args (dst, false,
+ known_vals, NULL);
VEC_free (tree, heap, known_vals);
account_size_time (info, 0, 0, &true_pred);
@@ -979,7 +1090,7 @@ inline_node_duplication_hook (struct cgraph_node *src, struct cgraph_node *dst,
* edge->frequency);
edge->frequency = 0;
}
- *es->predicate = new_predicate;
+ edge_set_predicate (edge, &new_predicate);
}
/* Remap indirect edge predicates with the same simplificaiton as above.
@@ -1011,7 +1122,29 @@ inline_node_duplication_hook (struct cgraph_node *src, struct cgraph_node *dst,
* edge->frequency);
edge->frequency = 0;
}
- *es->predicate = new_predicate;
+ edge_set_predicate (edge, &new_predicate);
+ }
+ if (info->loop_iterations)
+ {
+ struct predicate new_predicate = true_predicate ();
+
+ for (j = 0; info->loop_iterations->clause[j]; j++)
+ if (!(possible_truths & info->loop_iterations->clause[j]))
+ {
+ new_predicate = false_predicate ();
+ break;
+ }
+ else
+ add_clause (info->conds, &new_predicate,
+ possible_truths & info->loop_iterations->clause[j]);
+ if (false_predicate_p (&new_predicate)
+ || true_predicate_p (&new_predicate))
+ info->loop_iterations = NULL;
+ else
+ {
+ info->loop_iterations = (struct predicate *)pool_alloc (edge_predicate_pool);
+ *info->loop_iterations = new_predicate;
+ }
}
/* If inliner or someone after inliner will ever start producing
@@ -1037,7 +1170,15 @@ inline_node_duplication_hook (struct cgraph_node *src, struct cgraph_node *dst,
info->self_time = 0;
}
else
- info->entry = VEC_copy (size_time_entry, gc, info->entry);
+ {
+ info->entry = VEC_copy (size_time_entry, gc, info->entry);
+ if (info->loop_iterations)
+ {
+ predicate p = *info->loop_iterations;
+ info->loop_iterations = (struct predicate *)pool_alloc (edge_predicate_pool);
+ *info->loop_iterations = p;
+ }
+ }
}
@@ -1135,7 +1276,7 @@ dump_inline_edge_summary (FILE * f, int indent, struct cgraph_node *node,
i++)
{
int prob = VEC_index (inline_param_summary_t,
- es->param, i)->change_prob;
+ es->param, i).change_prob;
if (!prob)
fprintf (f, "%*s op%i is compile time invariant\n",
@@ -1209,6 +1350,11 @@ dump_inline_summary (FILE * f, struct cgraph_node *node)
(double) e->time / INLINE_TIME_SCALE);
dump_predicate (f, s->conds, &e->predicate);
}
+ if (s->loop_iterations)
+ {
+ fprintf (f, " loop iterations:");
+ dump_predicate (f, s->conds, s->loop_iterations);
+ }
fprintf (f, " calls:\n");
dump_inline_edge_summary (f, 4, node, s);
fprintf (f, "\n");
@@ -1263,11 +1409,11 @@ mark_modified (ao_ref *ao ATTRIBUTE_UNUSED, tree vdef ATTRIBUTE_UNUSED,
return true;
}
-/* If OP reffers to value of function parameter, return
- the corresponding parameter. */
+/* If OP refers to value of function parameter, return the corresponding
+ parameter. */
static tree
-unmodified_parm (gimple stmt, tree op)
+unmodified_parm_1 (gimple stmt, tree op)
{
/* SSA_NAME referring to parm default def? */
if (TREE_CODE (op) == SSA_NAME
@@ -1286,13 +1432,67 @@ unmodified_parm (gimple stmt, tree op)
if (!modified)
return op;
}
- /* Assignment from a parameter? */
+ return NULL_TREE;
+}
+
+/* If OP refers to value of function parameter, return the corresponding
+ parameter. Also traverse chains of SSA register assignments. */
+
+static tree
+unmodified_parm (gimple stmt, tree op)
+{
+ tree res = unmodified_parm_1 (stmt, op);
+ if (res)
+ return res;
+
if (TREE_CODE (op) == SSA_NAME
&& !SSA_NAME_IS_DEFAULT_DEF (op)
&& gimple_assign_single_p (SSA_NAME_DEF_STMT (op)))
return unmodified_parm (SSA_NAME_DEF_STMT (op),
gimple_assign_rhs1 (SSA_NAME_DEF_STMT (op)));
- return NULL;
+ return NULL_TREE;
+}
+
+/* If OP refers to a value of a function parameter or value loaded from an
+ aggregate passed to a parameter (either by value or reference), return TRUE
+ and store the number of the parameter to *INDEX_P and information whether
+ and how it has been loaded from an aggregate into *AGGPOS. INFO describes
+ the function parameters, STMT is the statement in which OP is used or
+ loaded. */
+
+static bool
+unmodified_parm_or_parm_agg_item (struct ipa_node_params *info,
+ gimple stmt, tree op, int *index_p,
+ struct agg_position_info *aggpos)
+{
+ tree res = unmodified_parm_1 (stmt, op);
+
+ gcc_checking_assert (aggpos);
+ if (res)
+ {
+ *index_p = ipa_get_param_decl_index (info, res);
+ if (*index_p < 0)
+ return false;
+ aggpos->agg_contents = false;
+ aggpos->by_ref = false;
+ return true;
+ }
+
+ if (TREE_CODE (op) == SSA_NAME)
+ {
+ if (SSA_NAME_IS_DEFAULT_DEF (op)
+ || !gimple_assign_single_p (SSA_NAME_DEF_STMT (op)))
+ return false;
+ stmt = SSA_NAME_DEF_STMT (op);
+ op = gimple_assign_rhs1 (stmt);
+ if (!REFERENCE_CLASS_P (op))
+ return unmodified_parm_or_parm_agg_item (info, stmt, op, index_p,
+ aggpos);
+ }
+
+ aggpos->agg_contents = true;
+ return ipa_load_from_parm_agg (info, stmt, op, index_p, &aggpos->offset,
+ &aggpos->by_ref);
}
/* See if statement might disappear after inlining.
@@ -1395,9 +1595,9 @@ eliminated_by_inlining_prob (gimple stmt)
|| (TREE_CODE(inner_lhs) == MEM_REF
&& (unmodified_parm (stmt, TREE_OPERAND (inner_lhs, 0))
|| (TREE_CODE (TREE_OPERAND (inner_lhs, 0)) == SSA_NAME
- && TREE_CODE (SSA_NAME_VAR
- (TREE_OPERAND (inner_lhs, 0)))
- == RESULT_DECL))))
+ && SSA_NAME_VAR (TREE_OPERAND (inner_lhs, 0))
+ && TREE_CODE (SSA_NAME_VAR (TREE_OPERAND
+ (inner_lhs, 0))) == RESULT_DECL))))
lhs_free = true;
if (lhs_free
&& (is_gimple_reg (rhs) || is_gimple_min_invariant (rhs)))
@@ -1423,13 +1623,12 @@ set_cond_stmt_execution_predicate (struct ipa_node_params *info,
gimple last;
tree op;
int index;
+ struct agg_position_info aggpos;
enum tree_code code, inverted_code;
edge e;
edge_iterator ei;
gimple set_stmt;
tree op2;
- tree parm;
- tree base;
last = last_stmt (bb);
if (!last
@@ -1441,12 +1640,8 @@ set_cond_stmt_execution_predicate (struct ipa_node_params *info,
/* TODO: handle conditionals like
var = op0 < 4;
if (var != 0). */
- parm = unmodified_parm (last, op);
- if (parm)
+ if (unmodified_parm_or_parm_agg_item (info, last, op, &index, &aggpos))
{
- index = ipa_get_param_decl_index (info, parm);
- if (index == -1)
- return;
code = gimple_cond_code (last);
inverted_code
= invert_tree_comparison (code,
@@ -1454,8 +1649,7 @@ set_cond_stmt_execution_predicate (struct ipa_node_params *info,
FOR_EACH_EDGE (e, ei, bb->succs)
{
- struct predicate p = add_condition (summary,
- index,
+ struct predicate p = add_condition (summary, index, &aggpos,
e->flags & EDGE_TRUE_VALUE
? code : inverted_code,
gimple_cond_rhs (last));
@@ -1476,28 +1670,21 @@ set_cond_stmt_execution_predicate (struct ipa_node_params *info,
for this and also the constant code is not known to be
optimized away when inliner doen't see operand is constant.
Other optimizers might think otherwise. */
+ if (gimple_cond_code (last) != NE_EXPR
+ || !integer_zerop (gimple_cond_rhs (last)))
+ return;
set_stmt = SSA_NAME_DEF_STMT (op);
if (!gimple_call_builtin_p (set_stmt, BUILT_IN_CONSTANT_P)
|| gimple_call_num_args (set_stmt) != 1)
return;
op2 = gimple_call_arg (set_stmt, 0);
- base = get_base_address (op2);
- parm = unmodified_parm (set_stmt, base ? base : op2);
- if (!parm)
- return;
- index = ipa_get_param_decl_index (info, parm);
- if (index == -1)
- return;
- if (gimple_cond_code (last) != NE_EXPR
- || !integer_zerop (gimple_cond_rhs (last)))
+ if (!unmodified_parm_or_parm_agg_item (info, set_stmt, op2, &index, &aggpos))
return;
FOR_EACH_EDGE (e, ei, bb->succs)
if (e->flags & EDGE_FALSE_VALUE)
{
- struct predicate p = add_condition (summary,
- index,
- IS_NOT_CONSTANT,
- NULL);
+ struct predicate p = add_condition (summary, index, &aggpos,
+ IS_NOT_CONSTANT, NULL_TREE);
e->aux = pool_alloc (edge_predicate_pool);
*(struct predicate *)e->aux = p;
}
@@ -1515,22 +1702,18 @@ set_switch_stmt_execution_predicate (struct ipa_node_params *info,
gimple last;
tree op;
int index;
+ struct agg_position_info aggpos;
edge e;
edge_iterator ei;
size_t n;
size_t case_idx;
- tree parm;
last = last_stmt (bb);
if (!last
|| gimple_code (last) != GIMPLE_SWITCH)
return;
op = gimple_switch_index (last);
- parm = unmodified_parm (last, op);
- if (!parm)
- return;
- index = ipa_get_param_decl_index (info, parm);
- if (index == -1)
+ if (!unmodified_parm_or_parm_agg_item (info, last, op, &index, &aggpos))
return;
FOR_EACH_EDGE (e, ei, bb->succs)
@@ -1555,18 +1738,12 @@ set_switch_stmt_execution_predicate (struct ipa_node_params *info,
if (!min && !max)
p = true_predicate ();
else if (!max)
- p = add_condition (summary, index,
- EQ_EXPR,
- min);
+ p = add_condition (summary, index, &aggpos, EQ_EXPR, min);
else
{
struct predicate p1, p2;
- p1 = add_condition (summary, index,
- GE_EXPR,
- min);
- p2 = add_condition (summary, index,
- LE_EXPR,
- max);
+ p1 = add_condition (summary, index, &aggpos, GE_EXPR, min);
+ p2 = add_condition (summary, index, &aggpos, LE_EXPR, max);
p = and_predicates (summary->conds, &p1, &p2);
}
*(struct predicate *)e->aux
@@ -1650,6 +1827,46 @@ compute_bb_predicates (struct cgraph_node *node,
typedef struct predicate predicate_t;
DEF_VEC_O (predicate_t);
DEF_VEC_ALLOC_O (predicate_t, heap);
+/* Return predicate specifying when the STMT might have result that is not
+ a compile time constant. */
+
+static struct predicate
+will_be_nonconstant_expr_predicate (struct ipa_node_params *info,
+ struct inline_summary *summary,
+ tree expr,
+ VEC (predicate_t, heap) *nonconstant_names)
+{
+ tree parm;
+ int index;
+
+ while (UNARY_CLASS_P (expr))
+ expr = TREE_OPERAND (expr, 0);
+
+ parm = unmodified_parm (NULL, expr);
+ if (parm
+ && (index = ipa_get_param_decl_index (info, parm)) >= 0)
+ return add_condition (summary, index, NULL, CHANGED, NULL_TREE);
+ if (is_gimple_min_invariant (expr))
+ return false_predicate ();
+ if (TREE_CODE (expr) == SSA_NAME)
+ return VEC_index (predicate_t, nonconstant_names,
+ SSA_NAME_VERSION (expr));
+ if (BINARY_CLASS_P (expr))
+ {
+ struct predicate p1 = will_be_nonconstant_expr_predicate (info, summary, TREE_OPERAND (expr, 0), nonconstant_names);
+ struct predicate p2;
+ if (true_predicate_p (&p1))
+ return p1;
+ p2 = will_be_nonconstant_expr_predicate (info, summary, TREE_OPERAND (expr, 0), nonconstant_names);
+ return or_predicates (summary->conds, &p1, &p2);
+ }
+ else
+ {
+ debug_tree (expr);
+ gcc_unreachable ();
+ }
+ return false_predicate ();
+}
/* Return predicate specifying when the STMT might have result that is not
@@ -1660,13 +1877,14 @@ will_be_nonconstant_predicate (struct ipa_node_params *info,
struct inline_summary *summary,
gimple stmt,
VEC (predicate_t, heap) *nonconstant_names)
-
{
struct predicate p = true_predicate ();
ssa_op_iter iter;
tree use;
struct predicate op_non_const;
bool is_load;
+ int base_index;
+ struct agg_position_info aggpos;
/* What statments might be optimized away
when their arguments are constant
@@ -1682,23 +1900,18 @@ will_be_nonconstant_predicate (struct ipa_node_params *info,
return p;
is_load = gimple_vuse (stmt) != NULL;
-
/* Loads can be optimized when the value is known. */
if (is_load)
{
- tree op = gimple_assign_rhs1 (stmt);
- tree base = get_base_address (op);
- tree parm;
-
+ tree op;
gcc_assert (gimple_assign_single_p (stmt));
- if (!base)
- return p;
- parm = unmodified_parm (stmt, base);
- if (!parm )
- return p;
- if (ipa_get_param_decl_index (info, parm) < 0)
+ op = gimple_assign_rhs1 (stmt);
+ if (!unmodified_parm_or_parm_agg_item (info, stmt, op, &base_index,
+ &aggpos))
return p;
}
+ else
+ base_index = -1;
/* See if we understand all operands before we start
adding conditionals. */
@@ -1712,37 +1925,38 @@ will_be_nonconstant_predicate (struct ipa_node_params *info,
return p;
/* If we know when operand is constant,
we still can say something useful. */
- if (!true_predicate_p (VEC_index (predicate_t, nonconstant_names,
- SSA_NAME_VERSION (use))))
+ if (!true_predicate_p (&VEC_index (predicate_t, nonconstant_names,
+ SSA_NAME_VERSION (use))))
continue;
return p;
}
- op_non_const = false_predicate ();
+
if (is_load)
- {
- tree parm = unmodified_parm
- (stmt, get_base_address (gimple_assign_rhs1 (stmt)));
- p = add_condition (summary,
- ipa_get_param_decl_index (info, parm),
- CHANGED, NULL);
- op_non_const = or_predicates (summary->conds, &p, &op_non_const);
- }
+ op_non_const = add_condition (summary, base_index, &aggpos, CHANGED, NULL);
+ else
+ op_non_const = false_predicate ();
FOR_EACH_SSA_TREE_OPERAND (use, stmt, iter, SSA_OP_USE)
{
tree parm = unmodified_parm (stmt, use);
- if (parm && ipa_get_param_decl_index (info, parm) >= 0)
- p = add_condition (summary,
- ipa_get_param_decl_index (info, parm),
- CHANGED, NULL);
+ int index;
+
+ if (parm
+ && (index = ipa_get_param_decl_index (info, parm)) >= 0)
+ {
+ if (index != base_index)
+ p = add_condition (summary, index, NULL, CHANGED, NULL_TREE);
+ else
+ continue;
+ }
else
- p = *VEC_index (predicate_t, nonconstant_names,
- SSA_NAME_VERSION (use));
+ p = VEC_index (predicate_t, nonconstant_names,
+ SSA_NAME_VERSION (use));
op_non_const = or_predicates (summary->conds, &p, &op_non_const);
}
if (gimple_code (stmt) == GIMPLE_ASSIGN
&& TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME)
VEC_replace (predicate_t, nonconstant_names,
- SSA_NAME_VERSION (gimple_assign_lhs (stmt)), &op_non_const);
+ SSA_NAME_VERSION (gimple_assign_lhs (stmt)), op_non_const);
return op_non_const;
}
@@ -1957,7 +2171,7 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
struct predicate false_p = false_predicate ();
VEC_replace (predicate_t, nonconstant_names,
SSA_NAME_VERSION (gimple_call_lhs (stmt)),
- &false_p);
+ false_p);
}
if (ipa_node_params_vector)
{
@@ -1972,13 +2186,13 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
int prob = param_change_prob (stmt, i);
gcc_assert (prob >= 0 && prob <= REG_BR_PROB_BASE);
VEC_index (inline_param_summary_t,
- es->param, i)->change_prob = prob;
+ es->param, i).change_prob = prob;
}
}
es->call_stmt_size = this_size;
es->call_stmt_time = this_time;
- es->loop_depth = bb->loop_depth;
+ es->loop_depth = bb_loop_depth (bb);
edge_set_predicate (edge, &bb_predicate);
}
@@ -2049,6 +2263,51 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
time = (time + CGRAPH_FREQ_BASE / 2) / CGRAPH_FREQ_BASE;
if (time > MAX_TIME)
time = MAX_TIME;
+
+ if (!early && nonconstant_names)
+ {
+ struct loop *loop;
+ loop_iterator li;
+ predicate loop_iterations = true_predicate ();
+
+ calculate_dominance_info (CDI_DOMINATORS);
+ loop_optimizer_init (LOOPS_NORMAL
+ | LOOPS_HAVE_RECORDED_EXITS);
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ flow_loops_dump (dump_file, NULL, 0);
+ scev_initialize ();
+ FOR_EACH_LOOP (li, loop, 0)
+ {
+ VEC (edge, heap) *exits;
+ edge ex;
+ unsigned int j;
+ struct tree_niter_desc niter_desc;
+
+ exits = get_loop_exit_edges (loop);
+ FOR_EACH_VEC_ELT (edge, exits, j, ex)
+ if (number_of_iterations_exit (loop, ex, &niter_desc, false)
+ && !is_gimple_min_invariant (niter_desc.niter))
+ {
+ predicate will_be_nonconstant
+ = will_be_nonconstant_expr_predicate (parms_info, info,
+ niter_desc.niter, nonconstant_names);
+ if (!true_predicate_p (&will_be_nonconstant)
+ && !false_predicate_p (&will_be_nonconstant))
+ /* This is slightly inprecise. We may want to represent each loop with
+ independent predicate. */
+ loop_iterations = and_predicates (info->conds, &loop_iterations, &will_be_nonconstant);
+ }
+ VEC_free (edge, heap, exits);
+ }
+ if (!true_predicate_p (&loop_iterations))
+ {
+ inline_summary (node)->loop_iterations = (struct predicate *)pool_alloc (edge_predicate_pool);
+ *inline_summary (node)->loop_iterations = loop_iterations;
+ }
+ scev_finalize ();
+ loop_optimizer_finalize ();
+ free_dominance_info (CDI_DOMINATORS);
+ }
inline_summary (node)->self_time = time;
inline_summary (node)->self_size = size;
VEC_free (predicate_t, heap, nonconstant_names);
@@ -2163,7 +2422,7 @@ struct gimple_opt_pass pass_inline_parameters =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_INLINE_HEURISTICS, /* tv_id */
+ TV_INLINE_PARAMETERS, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -2191,21 +2450,25 @@ estimate_edge_size_and_time (struct cgraph_edge *e, int *size, int *time,
/* Estimate benefit devirtualizing indirect edge IE, provided KNOWN_VALS and
KNOWN_BINFOS. */
-static void
+static bool
estimate_edge_devirt_benefit (struct cgraph_edge *ie,
int *size, int *time, int prob,
VEC (tree, heap) *known_vals,
- VEC (tree, heap) *known_binfos)
+ VEC (tree, heap) *known_binfos,
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs)
{
tree target;
int time_diff, size_diff;
+ struct cgraph_node *callee;
+ struct inline_summary *isummary;
if (!known_vals && !known_binfos)
- return;
+ return false;
- target = ipa_get_indirect_edge_target (ie, known_vals, known_binfos);
+ target = ipa_get_indirect_edge_target (ie, known_vals, known_binfos,
+ known_aggs);
if (!target)
- return;
+ return false;
/* Account for difference in cost between indirect and direct calls. */
size_diff = ((eni_size_weights.indirect_call_cost - eni_size_weights.call_cost)
@@ -2215,40 +2478,11 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
* INLINE_TIME_SCALE * prob / REG_BR_PROB_BASE);
*time -= time_diff;
- /* TODO: This code is trying to benefit indirect calls that will be inlined later.
- The logic however do not belong into local size/time estimates and can not be
- done here, or the accounting of changes will get wrong and we result with
- negative function body sizes. We need to introduce infrastructure for independent
- benefits to the inliner. */
-#if 0
- struct cgraph_node *callee;
- struct inline_summary *isummary;
- int edge_size, edge_time, time_diff, size_diff;
-
callee = cgraph_get_node (target);
if (!callee || !callee->analyzed)
- return;
+ return false;
isummary = inline_summary (callee);
- if (!isummary->inlinable)
- return;
-
- estimate_edge_size_and_time (ie, &edge_size, &edge_time, prob);
-
- /* Count benefit only from functions that definitely will be inlined
- if additional context from NODE's caller were available.
-
- We just account overall size change by inlining. TODO:
- we really need to add sort of benefit metrics for these kind of
- cases. */
- if (edge_size - size_diff >= isummary->size * INLINE_SIZE_SCALE)
- {
- /* Subtract size and time that we added for edge IE. */
- *size -= edge_size - size_diff;
-
- /* Account inlined call. */
- *size += isummary->size * INLINE_SIZE_SCALE;
- }
-#endif
+ return isummary->inlinable;
}
@@ -2258,9 +2492,11 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
static void
estimate_calls_size_and_time (struct cgraph_node *node, int *size, int *time,
+ inline_hints *hints,
clause_t possible_truths,
VEC (tree, heap) *known_vals,
- VEC (tree, heap) *known_binfos)
+ VEC (tree, heap) *known_binfos,
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs)
{
struct cgraph_edge *e;
for (e = node->callees; e; e = e->next_callee)
@@ -2275,9 +2511,9 @@ estimate_calls_size_and_time (struct cgraph_node *node, int *size, int *time,
estimate_edge_size_and_time (e, size, time, REG_BR_PROB_BASE);
}
else
- estimate_calls_size_and_time (e->callee, size, time,
+ estimate_calls_size_and_time (e->callee, size, time, hints,
possible_truths,
- known_vals, known_binfos);
+ known_vals, known_binfos, known_aggs);
}
}
for (e = node->indirect_calls; e; e = e->next_callee)
@@ -2286,8 +2522,11 @@ estimate_calls_size_and_time (struct cgraph_node *node, int *size, int *time,
if (!es->predicate || evaluate_predicate (es->predicate, possible_truths))
{
estimate_edge_size_and_time (e, size, time, REG_BR_PROB_BASE);
- estimate_edge_devirt_benefit (e, size, time, REG_BR_PROB_BASE,
- known_vals, known_binfos);
+ if (estimate_edge_devirt_benefit (e, size, time, REG_BR_PROB_BASE,
+ known_vals, known_binfos, known_aggs)
+ && hints
+ && cgraph_maybe_hot_edge_p (e))
+ *hints |= INLINE_HINT_indirect_call;
}
}
}
@@ -2302,13 +2541,16 @@ estimate_node_size_and_time (struct cgraph_node *node,
clause_t possible_truths,
VEC (tree, heap) *known_vals,
VEC (tree, heap) *known_binfos,
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs,
int *ret_size, int *ret_time,
+ inline_hints *ret_hints,
VEC (inline_param_summary_t, heap)
*inline_param_summary)
{
struct inline_summary *info = inline_summary (node);
size_time_entry *e;
int size = 0, time = 0;
+ inline_hints hints = 0;
int i;
if (dump_file
@@ -2349,11 +2591,15 @@ estimate_node_size_and_time (struct cgraph_node *node,
}
+ if (info->loop_iterations
+ && !evaluate_predicate (info->loop_iterations, possible_truths))
+ hints |=INLINE_HINT_loop_iterations;
+
if (time > MAX_TIME * INLINE_TIME_SCALE)
time = MAX_TIME * INLINE_TIME_SCALE;
- estimate_calls_size_and_time (node, &size, &time, possible_truths,
- known_vals, known_binfos);
+ estimate_calls_size_and_time (node, &size, &time, &hints, possible_truths,
+ known_vals, known_binfos, known_aggs);
time = (time + INLINE_TIME_SCALE / 2) / INLINE_TIME_SCALE;
size = (size + INLINE_SIZE_SCALE / 2) / INLINE_SIZE_SCALE;
@@ -2365,6 +2611,8 @@ estimate_node_size_and_time (struct cgraph_node *node,
*ret_time = time;
if (ret_size)
*ret_size = size;
+ if (ret_hints)
+ *ret_hints = hints;
return;
}
@@ -2382,27 +2630,31 @@ estimate_ipcp_clone_size_and_time (struct cgraph_node *node,
{
clause_t clause;
- clause = evaluate_conditions_for_known_args (node, false, known_vals);
- estimate_node_size_and_time (node, clause, known_vals, known_binfos,
- ret_size, ret_time,
+ clause = evaluate_conditions_for_known_args (node, false, known_vals, NULL);
+ estimate_node_size_and_time (node, clause, known_vals, known_binfos, NULL,
+ ret_size, ret_time, NULL,
NULL);
}
-
/* Translate all conditions from callee representation into caller
representation and symbolically evaluate predicate P into new predicate.
- INFO is inline_summary of function we are adding predicate into,
- CALLEE_INFO is summary of function predicate P is from. OPERAND_MAP is
- array giving callee formal IDs the caller formal IDs. POSSSIBLE_TRUTHS is
- clausule of all callee conditions that may be true in caller context.
- TOPLEV_PREDICATE is predicate under which callee is executed. */
+ INFO is inline_summary of function we are adding predicate into, CALLEE_INFO
+ is summary of function predicate P is from. OPERAND_MAP is array giving
+ callee formal IDs the caller formal IDs. POSSSIBLE_TRUTHS is clausule of all
+ callee conditions that may be true in caller context. TOPLEV_PREDICATE is
+ predicate under which callee is executed. OFFSET_MAP is an array of of
+ offsets that need to be added to conditions, negative offset means that
+ conditions relying on values passed by reference have to be discarded
+ because they might not be preserved (and should be considered offset zero
+ for other purposes). */
static struct predicate
remap_predicate (struct inline_summary *info,
struct inline_summary *callee_info,
struct predicate *p,
VEC (int, heap) *operand_map,
+ VEC (int, heap) *offset_map,
clause_t possible_truths,
struct predicate *toplev_predicate)
{
@@ -2431,19 +2683,40 @@ remap_predicate (struct inline_summary *info,
{
struct condition *c;
- c = VEC_index (condition, callee_info->conds,
- cond - predicate_first_dynamic_condition);
+ c = &VEC_index (condition, callee_info->conds,
+ cond - predicate_first_dynamic_condition);
/* See if we can remap condition operand to caller's operand.
Otherwise give up. */
if (!operand_map
|| (int)VEC_length (int, operand_map) <= c->operand_num
- || VEC_index (int, operand_map, c->operand_num) == -1)
+ || VEC_index (int, operand_map, c->operand_num) == -1
+ || (!c->agg_contents
+ && VEC_index (int, offset_map, c->operand_num) != 0)
+ || (c->agg_contents && c->by_ref
+ && VEC_index (int, offset_map, c->operand_num) < 0))
cond_predicate = true_predicate ();
else
- cond_predicate = add_condition (info,
- VEC_index (int, operand_map,
- c->operand_num),
- c->code, c->val);
+ {
+ struct agg_position_info ap;
+ HOST_WIDE_INT offset_delta = VEC_index (int, offset_map,
+ c->operand_num);
+ if (offset_delta < 0)
+ {
+ gcc_checking_assert (!c->agg_contents || !c->by_ref);
+ offset_delta = 0;
+ }
+ gcc_assert (!c->agg_contents
+ || c->by_ref
+ || offset_delta == 0);
+ ap.offset = c->offset + offset_delta;
+ ap.agg_contents = c->agg_contents;
+ ap.by_ref = c->by_ref;
+ cond_predicate = add_condition (info,
+ VEC_index (int,
+ operand_map,
+ c->operand_num),
+ &ap, c->code, c->val);
+ }
}
/* Fixed conditions remains same, construct single
condition predicate. */
@@ -2520,10 +2793,10 @@ remap_edge_change_prob (struct cgraph_edge *inlined_edge,
{
int jf_formal_id = ipa_get_jf_pass_through_formal_id (jfunc);
int prob1 = VEC_index (inline_param_summary_t,
- es->param, i)->change_prob;
+ es->param, i).change_prob;
int prob2 = VEC_index
(inline_param_summary_t,
- inlined_es->param, jf_formal_id)->change_prob;
+ inlined_es->param, jf_formal_id).change_prob;
int prob = ((prob1 * prob2 + REG_BR_PROB_BASE / 2)
/ REG_BR_PROB_BASE);
@@ -2531,7 +2804,7 @@ remap_edge_change_prob (struct cgraph_edge *inlined_edge,
prob = 1;
VEC_index (inline_param_summary_t,
- es->param, i)->change_prob = prob;
+ es->param, i).change_prob = prob;
}
}
}
@@ -2550,6 +2823,7 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
struct inline_summary *info,
struct inline_summary *callee_info,
VEC (int, heap) *operand_map,
+ VEC (int, heap) *offset_map,
clause_t possible_truths,
struct predicate *toplev_predicate)
{
@@ -2566,7 +2840,8 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
if (es->predicate)
{
p = remap_predicate (info, callee_info,
- es->predicate, operand_map, possible_truths,
+ es->predicate, operand_map, offset_map,
+ possible_truths,
toplev_predicate);
edge_set_predicate (e, &p);
/* TODO: We should remove the edge for code that will be
@@ -2583,7 +2858,8 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
}
else
remap_edge_summaries (inlined_edge, e->callee, info, callee_info,
- operand_map, possible_truths, toplev_predicate);
+ operand_map, offset_map, possible_truths,
+ toplev_predicate);
}
for (e = node->indirect_calls; e; e = e->next_callee)
{
@@ -2594,8 +2870,8 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
if (es->predicate)
{
p = remap_predicate (info, callee_info,
- es->predicate, operand_map, possible_truths,
- toplev_predicate);
+ es->predicate, operand_map, offset_map,
+ possible_truths, toplev_predicate);
edge_set_predicate (e, &p);
/* TODO: We should remove the edge for code that will be optimized
out, but we need to keep verifiers and tree-inline happy.
@@ -2624,6 +2900,7 @@ inline_merge_summary (struct cgraph_edge *edge)
clause_t clause = 0; /* not_inline is known to be false. */
size_time_entry *e;
VEC (int, heap) *operand_map = NULL;
+ VEC (int, heap) *offset_map = NULL;
int i;
struct predicate toplev_predicate;
struct predicate true_p = true_predicate ();
@@ -2640,17 +2917,36 @@ inline_merge_summary (struct cgraph_edge *edge)
int count = ipa_get_cs_argument_count (args);
int i;
- evaluate_properties_for_edge (edge, true, &clause, NULL, NULL);
+ evaluate_properties_for_edge (edge, true, &clause, NULL, NULL, NULL);
if (count)
- VEC_safe_grow_cleared (int, heap, operand_map, count);
+ {
+ VEC_safe_grow_cleared (int, heap, operand_map, count);
+ VEC_safe_grow_cleared (int, heap, offset_map, count);
+ }
for (i = 0; i < count; i++)
{
struct ipa_jump_func *jfunc = ipa_get_ith_jump_func (args, i);
int map = -1;
+
/* TODO: handle non-NOPs when merging. */
- if (jfunc->type == IPA_JF_PASS_THROUGH
- && ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
- map = ipa_get_jf_pass_through_formal_id (jfunc);
+ if (jfunc->type == IPA_JF_PASS_THROUGH)
+ {
+ if (ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
+ map = ipa_get_jf_pass_through_formal_id (jfunc);
+ if (!ipa_get_jf_pass_through_agg_preserved (jfunc))
+ VEC_replace (int, offset_map, i, -1);
+ }
+ else if (jfunc->type == IPA_JF_ANCESTOR)
+ {
+ HOST_WIDE_INT offset = ipa_get_jf_ancestor_offset (jfunc);
+ if (offset >= 0 && offset < INT_MAX)
+ {
+ map = ipa_get_jf_ancestor_formal_id (jfunc);
+ if (!ipa_get_jf_ancestor_agg_preserved (jfunc))
+ offset = -1;
+ VEC_replace (int, offset_map, i, offset);
+ }
+ }
VEC_replace (int, operand_map, i, map);
gcc_assert (map < ipa_get_param_count (IPA_NODE_REF (to)));
}
@@ -2658,7 +2954,8 @@ inline_merge_summary (struct cgraph_edge *edge)
for (i = 0; VEC_iterate (size_time_entry, callee_info->entry, i, e); i++)
{
struct predicate p = remap_predicate (info, callee_info,
- &e->predicate, operand_map, clause,
+ &e->predicate, operand_map,
+ offset_map, clause,
&toplev_predicate);
if (!false_predicate_p (&p))
{
@@ -2680,14 +2977,29 @@ inline_merge_summary (struct cgraph_edge *edge)
}
}
remap_edge_summaries (edge, edge->callee, info, callee_info, operand_map,
- clause, &toplev_predicate);
- info->size = 0;
- info->time = 0;
- for (i = 0; VEC_iterate (size_time_entry, info->entry, i, e); i++)
- info->size += e->size, info->time += e->time;
- estimate_calls_size_and_time (to, &info->size, &info->time,
- ~(clause_t)(1 << predicate_false_condition),
- NULL, NULL);
+ offset_map, clause, &toplev_predicate);
+ if (callee_info->loop_iterations)
+ {
+ predicate p = remap_predicate (info, callee_info,
+ callee_info->loop_iterations,
+ operand_map, offset_map,
+ clause,
+ &toplev_predicate);
+ if (!false_predicate_p (&p)
+ && !true_predicate_p (&p))
+ {
+ if (!info->loop_iterations)
+ {
+ info->loop_iterations
+ = (struct predicate *)pool_alloc (edge_predicate_pool);
+ *info->loop_iterations = p;
+ }
+ else
+ *info->loop_iterations = and_predicates (info->conds,
+ info->loop_iterations,
+ &p);
+ }
+ }
inline_update_callee_summaries (edge->callee,
inline_edge_summary (edge)->loop_depth);
@@ -2697,12 +3009,30 @@ inline_merge_summary (struct cgraph_edge *edge)
/* Similarly remove param summaries. */
VEC_free (inline_param_summary_t, heap, es->param);
VEC_free (int, heap, operand_map);
+ VEC_free (int, heap, offset_map);
+}
+
+/* For performance reasons inline_merge_summary is not updating overall size
+ and time. Recompute it. */
+
+void
+inline_update_overall_summary (struct cgraph_node *node)
+{
+ struct inline_summary *info = inline_summary (node);
+ size_time_entry *e;
+ int i;
+ info->size = 0;
+ info->time = 0;
+ for (i = 0; VEC_iterate (size_time_entry, info->entry, i, e); i++)
+ info->size += e->size, info->time += e->time;
+ estimate_calls_size_and_time (node, &info->size, &info->time, NULL,
+ ~(clause_t)(1 << predicate_false_condition),
+ NULL, NULL, NULL);
info->time = (info->time + INLINE_TIME_SCALE / 2) / INLINE_TIME_SCALE;
info->size = (info->size + INLINE_SIZE_SCALE / 2) / INLINE_SIZE_SCALE;
}
-
/* Estimate the time cost for the caller when inlining EDGE.
Only to be called via estimate_edge_time, that handles the
caching mechanism.
@@ -2715,22 +3045,26 @@ do_estimate_edge_time (struct cgraph_edge *edge)
{
int time;
int size;
+ inline_hints hints;
gcov_type ret;
struct cgraph_node *callee;
clause_t clause;
VEC (tree, heap) *known_vals;
VEC (tree, heap) *known_binfos;
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs;
struct inline_edge_summary *es = inline_edge_summary (edge);
callee = cgraph_function_or_thunk_node (edge->callee, NULL);
gcc_checking_assert (edge->inline_failed);
evaluate_properties_for_edge (edge, true,
- &clause, &known_vals, &known_binfos);
+ &clause, &known_vals, &known_binfos,
+ &known_aggs);
estimate_node_size_and_time (callee, clause, known_vals, known_binfos,
- &size, &time, es->param);
+ known_aggs, &size, &time, &hints, es->param);
VEC_free (tree, heap, known_vals);
VEC_free (tree, heap, known_binfos);
+ VEC_free (ipa_agg_jump_function_p, heap, known_aggs);
ret = (((gcov_type)time
- es->call_stmt_time) * edge->frequency
@@ -2744,13 +3078,15 @@ do_estimate_edge_time (struct cgraph_edge *edge)
<= edge->uid)
VEC_safe_grow_cleared (edge_growth_cache_entry, heap, edge_growth_cache,
cgraph_edge_max_uid);
- VEC_index (edge_growth_cache_entry, edge_growth_cache, edge->uid)->time
+ VEC_index (edge_growth_cache_entry, edge_growth_cache, edge->uid).time
= ret + (ret >= 0);
ret_size = size - es->call_stmt_size;
gcc_checking_assert (es->call_stmt_size);
- VEC_index (edge_growth_cache_entry, edge_growth_cache, edge->uid)->size
+ VEC_index (edge_growth_cache_entry, edge_growth_cache, edge->uid).size
= ret_size + (ret_size >= 0);
+ VEC_index (edge_growth_cache_entry, edge_growth_cache, edge->uid).hints
+ = hints + 1;
}
return ret;
}
@@ -2767,6 +3103,7 @@ do_estimate_edge_growth (struct cgraph_edge *edge)
clause_t clause;
VEC (tree, heap) *known_vals;
VEC (tree, heap) *known_binfos;
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs;
/* When we do caching, use do_estimate_edge_time to populate the entry. */
@@ -2775,7 +3112,7 @@ do_estimate_edge_growth (struct cgraph_edge *edge)
do_estimate_edge_time (edge);
size = VEC_index (edge_growth_cache_entry,
edge_growth_cache,
- edge->uid)->size;
+ edge->uid).size;
gcc_checking_assert (size);
return size - (size > 0);
}
@@ -2785,16 +3122,59 @@ do_estimate_edge_growth (struct cgraph_edge *edge)
/* Early inliner runs without caching, go ahead and do the dirty work. */
gcc_checking_assert (edge->inline_failed);
evaluate_properties_for_edge (edge, true,
- &clause, &known_vals, &known_binfos);
+ &clause, &known_vals, &known_binfos,
+ &known_aggs);
estimate_node_size_and_time (callee, clause, known_vals, known_binfos,
- &size, NULL, NULL);
+ known_aggs, &size, NULL, NULL, NULL);
VEC_free (tree, heap, known_vals);
VEC_free (tree, heap, known_binfos);
+ VEC_free (ipa_agg_jump_function_p, heap, known_aggs);
gcc_checking_assert (inline_edge_summary (edge)->call_stmt_size);
return size - inline_edge_summary (edge)->call_stmt_size;
}
+/* Estimate the growth of the caller when inlining EDGE.
+ Only to be called via estimate_edge_size. */
+
+inline_hints
+do_estimate_edge_hints (struct cgraph_edge *edge)
+{
+ inline_hints hints;
+ struct cgraph_node *callee;
+ clause_t clause;
+ VEC (tree, heap) *known_vals;
+ VEC (tree, heap) *known_binfos;
+ VEC (ipa_agg_jump_function_p, heap) *known_aggs;
+
+ /* When we do caching, use do_estimate_edge_time to populate the entry. */
+
+ if (edge_growth_cache)
+ {
+ do_estimate_edge_time (edge);
+ hints = VEC_index (edge_growth_cache_entry,
+ edge_growth_cache,
+ edge->uid).hints;
+ gcc_checking_assert (hints);
+ return hints - 1;
+ }
+
+ callee = cgraph_function_or_thunk_node (edge->callee, NULL);
+
+ /* Early inliner runs without caching, go ahead and do the dirty work. */
+ gcc_checking_assert (edge->inline_failed);
+ evaluate_properties_for_edge (edge, true,
+ &clause, &known_vals, &known_binfos,
+ &known_aggs);
+ estimate_node_size_and_time (callee, clause, known_vals, known_binfos,
+ known_aggs, NULL, NULL, &hints, NULL);
+ VEC_free (tree, heap, known_vals);
+ VEC_free (tree, heap, known_binfos);
+ VEC_free (ipa_agg_jump_function_p, heap, known_aggs);
+ return hints;
+}
+
+
/* Estimate self time of the function NODE after inlining EDGE. */
int
@@ -3010,7 +3390,7 @@ read_inline_edge_summary (struct lto_input_block *ib, struct cgraph_edge *e)
{
VEC_safe_grow_cleared (inline_param_summary_t, heap, es->param, length);
for (i = 0; i < length; i++)
- VEC_index (inline_param_summary_t, es->param, i)->change_prob
+ VEC_index (inline_param_summary_t, es->param, i).change_prob
= streamer_read_uhwi (ib);
}
}
@@ -3044,13 +3424,14 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data,
unsigned int index;
struct cgraph_node *node;
struct inline_summary *info;
- lto_cgraph_encoder_t encoder;
+ lto_symtab_encoder_t encoder;
struct bitpack_d bp;
struct cgraph_edge *e;
+ predicate p;
index = streamer_read_uhwi (&ib);
- encoder = file_data->cgraph_node_encoder;
- node = lto_cgraph_encoder_deref (encoder, index);
+ encoder = file_data->symtab_node_encoder;
+ node = cgraph (lto_symtab_encoder_deref (encoder, index));
info = inline_summary (node);
info->estimated_stack_size
@@ -3069,6 +3450,11 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data,
c.operand_num = streamer_read_uhwi (&ib);
c.code = (enum tree_code) streamer_read_uhwi (&ib);
c.val = stream_read_tree (&ib, data_in);
+ bp = streamer_read_bitpack (&ib);
+ c.agg_contents = bp_unpack_value (&bp, 1);
+ c.by_ref = bp_unpack_value (&bp, 1);
+ if (c.agg_contents)
+ c.offset = streamer_read_uhwi (&ib);
VEC_safe_push (condition, gc, info->conds, &c);
}
count2 = streamer_read_uhwi (&ib);
@@ -3083,6 +3469,13 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data,
VEC_safe_push (size_time_entry, gc, info->entry, &e);
}
+
+ p = read_predicate (&ib);
+ if (!true_predicate_p (&p))
+ {
+ info->loop_iterations = (struct predicate *)pool_alloc (edge_predicate_pool);
+ *info->loop_iterations = p;
+ }
for (e = node->callees; e; e = e->next_callee)
read_inline_edge_summary (&ib, e);
for (e = node->indirect_calls; e; e = e->next_callee)
@@ -3164,7 +3557,7 @@ write_inline_edge_summary (struct output_block *ob, struct cgraph_edge *e)
streamer_write_uhwi (ob, VEC_length (inline_param_summary_t, es->param));
for (i = 0; i < (int)VEC_length (inline_param_summary_t, es->param); i++)
streamer_write_uhwi (ob, VEC_index (inline_param_summary_t,
- es->param, i)->change_prob);
+ es->param, i).change_prob);
}
@@ -3173,24 +3566,25 @@ write_inline_edge_summary (struct output_block *ob, struct cgraph_edge *e)
active, we don't need to write them twice. */
void
-inline_write_summary (cgraph_node_set set,
- varpool_node_set vset ATTRIBUTE_UNUSED)
+inline_write_summary (void)
{
struct cgraph_node *node;
+ symtab_node snode;
struct output_block *ob = create_output_block (LTO_section_inline_summary);
- lto_cgraph_encoder_t encoder = ob->decl_state->cgraph_node_encoder;
+ lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder;
unsigned int count = 0;
int i;
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
- if (lto_cgraph_encoder_deref (encoder, i)->analyzed)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
+ if (symtab_function_p (snode = lto_symtab_encoder_deref (encoder, i))
+ && cgraph (snode)->analyzed)
count++;
streamer_write_uhwi (ob, count);
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
- if (node->analyzed)
+ if (symtab_function_p (snode = lto_symtab_encoder_deref (encoder, i))
+ && (node = cgraph (snode))->analyzed)
{
struct inline_summary *info = inline_summary (node);
struct bitpack_d bp;
@@ -3199,7 +3593,7 @@ inline_write_summary (cgraph_node_set set,
size_time_entry *e;
struct condition *c;
- streamer_write_uhwi (ob, lto_cgraph_encoder_encode (encoder, node));
+ streamer_write_uhwi (ob, lto_symtab_encoder_encode (encoder, (symtab_node)node));
streamer_write_hwi (ob, info->estimated_self_stack_size);
streamer_write_hwi (ob, info->self_size);
streamer_write_hwi (ob, info->self_time);
@@ -3212,6 +3606,12 @@ inline_write_summary (cgraph_node_set set,
streamer_write_uhwi (ob, c->operand_num);
streamer_write_uhwi (ob, c->code);
stream_write_tree (ob, c->val, true);
+ bp = bitpack_create (ob->main_stream);
+ bp_pack_value (&bp, c->agg_contents, 1);
+ bp_pack_value (&bp, c->by_ref, 1);
+ streamer_write_bitpack (&bp);
+ if (c->agg_contents)
+ streamer_write_uhwi (ob, c->offset);
}
streamer_write_uhwi (ob, VEC_length (size_time_entry, info->entry));
for (i = 0;
@@ -3222,6 +3622,7 @@ inline_write_summary (cgraph_node_set set,
streamer_write_uhwi (ob, e->time);
write_predicate (ob, &e->predicate);
}
+ write_predicate (ob, info->loop_iterations);
for (edge = node->callees; edge; edge = edge->next_callee)
write_inline_edge_summary (ob, edge);
for (edge = node->indirect_calls; edge; edge = edge->next_callee)
@@ -3233,7 +3634,7 @@ inline_write_summary (cgraph_node_set set,
destroy_output_block (ob);
if (optimize && !flag_ipa_cp)
- ipa_prop_write_jump_functions (set);
+ ipa_prop_write_jump_functions ();
}
@@ -3243,6 +3644,8 @@ void
inline_free_summary (void)
{
struct cgraph_node *node;
+ if (inline_edge_summary_vec == NULL)
+ return;
FOR_EACH_DEFINED_FUNCTION (node)
reset_inline_summary (node);
if (function_insertion_hook_holder)
diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c
index 9fdfbb91b24..53c468717c7 100644
--- a/gcc/ipa-inline-transform.c
+++ b/gcc/ipa-inline-transform.c
@@ -36,7 +36,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "langhooks.h"
#include "cgraph.h"
-#include "timevar.h"
#include "intl.h"
#include "coverage.h"
#include "ggc.h"
@@ -194,13 +193,17 @@ clone_inlined_nodes (struct cgraph_edge *e, bool duplicate,
/* Mark edge E as inlined and update callgraph accordingly. UPDATE_ORIGINAL
specify whether profile of original function should be updated. If any new
indirect edges are discovered in the process, add them to NEW_EDGES, unless
- it is NULL. Return true iff any new callgraph edges were discovered as a
+ it is NULL. If UPDATE_OVERALL_SUMMARY is false, do not bother to recompute overall
+ size of caller after inlining. Caller is required to eventually do it via
+ inline_update_overall_summary.
+
+ Return true iff any new callgraph edges were discovered as a
result of inlining. */
bool
inline_call (struct cgraph_edge *e, bool update_original,
VEC (cgraph_edge_p, heap) **new_edges,
- int *overall_size)
+ int *overall_size, bool update_overall_summary)
{
int old_size = 0, new_size = 0;
struct cgraph_node *to = NULL;
@@ -245,6 +248,8 @@ inline_call (struct cgraph_edge *e, bool update_original,
old_size = inline_summary (to)->size;
inline_merge_summary (e);
+ if (update_overall_summary)
+ inline_update_overall_summary (to);
new_size = inline_summary (to)->size;
if (overall_size)
*overall_size += new_size - old_size;
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index c45d4701da2..a1d703a6b7f 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -101,7 +101,6 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "diagnostic.h"
#include "gimple-pretty-print.h"
-#include "timevar.h"
#include "params.h"
#include "fibheap.h"
#include "intl.h"
@@ -473,11 +472,16 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report)
else
{
int growth = estimate_edge_growth (e);
+ inline_hints hints = estimate_edge_hints (e);
if (growth <= 0)
;
+ /* Apply MAX_INLINE_INSNS_SINGLE limit. Do not do so when
+ hints suggests that inlining given function is very profitable. */
else if (DECL_DECLARED_INLINE_P (callee->symbol.decl)
- && growth >= MAX_INLINE_INSNS_SINGLE)
+ && growth >= MAX_INLINE_INSNS_SINGLE
+ && !(hints & (INLINE_HINT_indirect_call
+ | INLINE_HINT_loop_iterations)))
{
e->inline_failed = CIF_MAX_INLINE_INSNS_SINGLE_LIMIT;
want_inline = false;
@@ -524,8 +528,14 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report)
e->inline_failed = CIF_NOT_DECLARED_INLINED;
want_inline = false;
}
+ /* Apply MAX_INLINE_INSNS_AUTO limit for functions not declared inline
+ Upgrade it to MAX_INLINE_INSNS_SINGLE when hints suggests that
+ inlining given function is very profitable. */
else if (!DECL_DECLARED_INLINE_P (callee->symbol.decl)
- && growth >= MAX_INLINE_INSNS_AUTO)
+ && growth >= ((hints & INLINE_HINT_indirect_call)
+ ? MAX (MAX_INLINE_INSNS_AUTO,
+ MAX_INLINE_INSNS_SINGLE)
+ : MAX_INLINE_INSNS_AUTO))
{
e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT;
want_inline = false;
@@ -744,21 +754,25 @@ edge_badness (struct cgraph_edge *edge, bool dump)
struct cgraph_node *callee = cgraph_function_or_thunk_node (edge->callee,
NULL);
struct inline_summary *callee_info = inline_summary (callee);
+ inline_hints hints;
if (DECL_DISREGARD_INLINE_LIMITS (callee->symbol.decl))
return INT_MIN;
growth = estimate_edge_growth (edge);
time_growth = estimate_edge_time (edge);
+ hints = estimate_edge_hints (edge);
if (dump)
{
fprintf (dump_file, " Badness calculation for %s -> %s\n",
xstrdup (cgraph_node_name (edge->caller)),
xstrdup (cgraph_node_name (callee)));
- fprintf (dump_file, " size growth %i, time growth %i\n",
+ fprintf (dump_file, " size growth %i, time growth %i ",
growth,
time_growth);
+ dump_inline_hints (dump_file, hints);
+ fprintf (dump_file, "\n");
}
/* Always prefer inlining saving code size. */
@@ -850,6 +864,9 @@ edge_badness (struct cgraph_edge *edge, bool dump)
if (dump)
fprintf (dump_file, "Badness overflow\n");
}
+ if (hints & (INLINE_HINT_indirect_call
+ | INLINE_HINT_loop_iterations))
+ badness /= 8;
if (dump)
{
fprintf (dump_file,
@@ -1210,7 +1227,7 @@ recursive_inlining (struct cgraph_edge *edge,
}
cgraph_redirect_edge_callee (curr, master_clone);
- inline_call (curr, false, new_edges, &overall_size);
+ inline_call (curr, false, new_edges, &overall_size, true);
lookup_recursive_calls (node, curr->callee, heap);
n++;
}
@@ -1288,7 +1305,7 @@ inline_small_functions (void)
{
struct cgraph_node *node;
struct cgraph_edge *edge;
- fibheap_t heap = fibheap_new ();
+ fibheap_t edge_heap = fibheap_new ();
bitmap updated_nodes = BITMAP_ALLOC (NULL);
int min_size, max_size;
VEC (cgraph_edge_p, heap) *new_indirect_edges = NULL;
@@ -1345,7 +1362,7 @@ inline_small_functions (void)
&& edge->inline_failed)
{
gcc_assert (!edge->aux);
- update_edge_key (heap, edge);
+ update_edge_key (edge_heap, edge);
}
}
@@ -1353,16 +1370,16 @@ inline_small_functions (void)
|| !max_count
|| (profile_info && flag_branch_probabilities));
- while (!fibheap_empty (heap))
+ while (!fibheap_empty (edge_heap))
{
int old_size = overall_size;
struct cgraph_node *where, *callee;
- int badness = fibheap_min_key (heap);
+ int badness = fibheap_min_key (edge_heap);
int current_badness;
int cached_badness;
int growth;
- edge = (struct cgraph_edge *) fibheap_extract_min (heap);
+ edge = (struct cgraph_edge *) fibheap_extract_min (edge_heap);
gcc_assert (edge->aux);
edge->aux = NULL;
if (!edge->inline_failed)
@@ -1383,7 +1400,7 @@ inline_small_functions (void)
gcc_assert (current_badness >= badness);
if (current_badness != badness)
{
- edge->aux = fibheap_insert (heap, current_badness, edge);
+ edge->aux = fibheap_insert (edge_heap, current_badness, edge);
continue;
}
@@ -1448,8 +1465,8 @@ inline_small_functions (void)
/* Recursive inliner inlines all recursive calls of the function
at once. Consequently we need to update all callee keys. */
if (flag_indirect_inlining)
- add_new_edges_to_heap (heap, new_indirect_edges);
- update_callee_keys (heap, where, updated_nodes);
+ add_new_edges_to_heap (edge_heap, new_indirect_edges);
+ update_callee_keys (edge_heap, where, updated_nodes);
}
else
{
@@ -1481,14 +1498,14 @@ inline_small_functions (void)
fprintf (dump_file, " Peeling recursion with depth %i\n", depth);
gcc_checking_assert (!callee->global.inlined_to);
- inline_call (edge, true, &new_indirect_edges, &overall_size);
+ inline_call (edge, true, &new_indirect_edges, &overall_size, true);
if (flag_indirect_inlining)
- add_new_edges_to_heap (heap, new_indirect_edges);
+ add_new_edges_to_heap (edge_heap, new_indirect_edges);
reset_edge_caches (edge->callee);
reset_node_growth_cache (callee);
- update_callee_keys (heap, edge->callee, updated_nodes);
+ update_callee_keys (edge_heap, edge->callee, updated_nodes);
}
where = edge->caller;
if (where->global.inlined_to)
@@ -1500,7 +1517,7 @@ inline_small_functions (void)
inlined into (since it's body size changed) and for the functions
called by function we inlined (since number of it inlinable callers
might change). */
- update_caller_keys (heap, where, updated_nodes, NULL);
+ update_caller_keys (edge_heap, where, updated_nodes, NULL);
bitmap_clear (updated_nodes);
if (dump_file)
@@ -1526,7 +1543,7 @@ inline_small_functions (void)
free_growth_caches ();
if (new_indirect_edges)
VEC_free (cgraph_edge_p, heap, new_indirect_edges);
- fibheap_delete (heap);
+ fibheap_delete (edge_heap);
if (dump_file)
fprintf (dump_file,
"Unit growth for small function inlining: %i->%i (%i%%)\n",
@@ -1603,7 +1620,7 @@ flatten_function (struct cgraph_node *node, bool early)
xstrdup (cgraph_node_name (callee)),
xstrdup (cgraph_node_name (e->caller)));
orig_callee = callee;
- inline_call (e, true, NULL, NULL);
+ inline_call (e, true, NULL, NULL, false);
if (e->callee != orig_callee)
orig_callee->symbol.aux = (void *) node;
flatten_function (e->callee, early);
@@ -1612,6 +1629,8 @@ flatten_function (struct cgraph_node *node, bool early)
}
node->symbol.aux = NULL;
+ if (!node->global.inlined_to)
+ inline_update_overall_summary (node);
}
/* Decide on the inlining. We do so in the topological order to avoid
@@ -1711,7 +1730,7 @@ ipa_inline (void)
inline_summary (node->callers->caller)->size);
}
- inline_call (node->callers, true, NULL, NULL);
+ inline_call (node->callers, true, NULL, NULL, true);
if (dump_file)
fprintf (dump_file,
" Inlined into %s which now has %i size\n",
@@ -1769,9 +1788,11 @@ inline_always_inline_functions (struct cgraph_node *node)
fprintf (dump_file, " Inlining %s into %s (always_inline).\n",
xstrdup (cgraph_node_name (e->callee)),
xstrdup (cgraph_node_name (e->caller)));
- inline_call (e, true, NULL, NULL);
+ inline_call (e, true, NULL, NULL, false);
inlined = true;
}
+ if (inlined)
+ inline_update_overall_summary (node);
return inlined;
}
@@ -1819,7 +1840,7 @@ early_inline_small_functions (struct cgraph_node *node)
fprintf (dump_file, " Inlining %s into %s.\n",
xstrdup (cgraph_node_name (callee)),
xstrdup (cgraph_node_name (e->caller)));
- inline_call (e, true, NULL, NULL);
+ inline_call (e, true, NULL, NULL, true);
inlined = true;
}
@@ -1938,7 +1959,7 @@ struct gimple_opt_pass pass_early_inline =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_INLINE_HEURISTICS, /* tv_id */
+ TV_EARLY_INLINING, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1970,7 +1991,7 @@ struct ipa_opt_pass_d pass_ipa_inline =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_INLINE_HEURISTICS, /* tv_id */
+ TV_IPA_INLINING, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h
index 824a6c50350..839bc237f2a 100644
--- a/gcc/ipa-inline.h
+++ b/gcc/ipa-inline.h
@@ -28,11 +28,28 @@ along with GCC; see the file COPYING3. If not see
typedef struct GTY(()) condition
{
+ /* If agg_contents is set, this is the offset from which the used data was
+ loaded. */
+ HOST_WIDE_INT offset;
tree val;
int operand_num;
- enum tree_code code;
+ ENUM_BITFIELD(tree_code) code : 16;
+ /* Set if the used data were loaded from an aggregate parameter or from
+ data received by reference. */
+ unsigned agg_contents : 1;
+ /* If agg_contents is set, this differentiates between loads from data
+ passed by reference and by value. */
+ unsigned by_ref : 1;
} condition;
+/* Inline hints are reasons why inline heuristics should preffer inlining given function.
+ They are represtented as bitmap of the following values. */
+enum inline_hints_vals {
+ INLINE_HINT_indirect_call = 1,
+ INLINE_HINT_loop_iterations = 2
+};
+typedef int inline_hints;
+
DEF_VEC_O (condition);
DEF_VEC_ALLOC_O (condition, gc);
@@ -102,6 +119,10 @@ struct GTY(()) inline_summary
merged during inlining. */
conditions conds;
VEC(size_time_entry,gc) *entry;
+
+ /* Predicate on when some loop in the function sbecomes to have known
+ bounds. */
+ struct predicate * GTY((skip)) loop_iterations;
};
@@ -149,6 +170,7 @@ extern VEC(inline_edge_summary_t,heap) *inline_edge_summary_vec;
typedef struct edge_growth_cache_entry
{
int time, size;
+ inline_hints hints;
} edge_growth_cache_entry;
DEF_VEC_O(edge_growth_cache_entry);
DEF_VEC_ALLOC_O(edge_growth_cache_entry,heap);
@@ -159,10 +181,11 @@ extern VEC(edge_growth_cache_entry,heap) *edge_growth_cache;
/* In ipa-inline-analysis.c */
void debug_inline_summary (struct cgraph_node *);
void dump_inline_summaries (FILE *f);
-void dump_inline_summary (FILE * f, struct cgraph_node *node);
+void dump_inline_summary (FILE *f, struct cgraph_node *node);
+void dump_inline_hints (FILE *f, inline_hints);
void inline_generate_summary (void);
void inline_read_summary (void);
-void inline_write_summary (cgraph_node_set, varpool_node_set);
+void inline_write_summary (void);
void inline_free_summary (void);
void initialize_inline_failed (struct cgraph_edge *);
int estimate_time_after_inlining (struct cgraph_node *, struct cgraph_edge *);
@@ -173,14 +196,16 @@ void estimate_ipcp_clone_size_and_time (struct cgraph_node *,
int *, int *);
int do_estimate_growth (struct cgraph_node *);
void inline_merge_summary (struct cgraph_edge *edge);
+void inline_update_overall_summary (struct cgraph_node *node);
int do_estimate_edge_growth (struct cgraph_edge *edge);
int do_estimate_edge_time (struct cgraph_edge *edge);
+inline_hints do_estimate_edge_hints (struct cgraph_edge *edge);
void initialize_growth_caches (void);
void free_growth_caches (void);
void compute_inline_parameters (struct cgraph_node *, bool);
/* In ipa-inline-transform.c */
-bool inline_call (struct cgraph_edge *, bool, VEC (cgraph_edge_p, heap) **, int *);
+bool inline_call (struct cgraph_edge *, bool, VEC (cgraph_edge_p, heap) **, int *, bool);
unsigned int inline_transform (struct cgraph_node *);
void clone_inlined_nodes (struct cgraph_edge *e, bool, bool, int *);
@@ -190,13 +215,13 @@ extern int nfunctions_inlined;
static inline struct inline_summary *
inline_summary (struct cgraph_node *node)
{
- return VEC_index (inline_summary_t, inline_summary_vec, node->uid);
+ return &VEC_index (inline_summary_t, inline_summary_vec, node->uid);
}
static inline struct inline_edge_summary *
inline_edge_summary (struct cgraph_edge *edge)
{
- return VEC_index (inline_edge_summary_t,
+ return &VEC_index (inline_edge_summary_t,
inline_edge_summary_vec, edge->uid);
}
@@ -225,7 +250,7 @@ estimate_edge_growth (struct cgraph_edge *edge)
if ((int)VEC_length (edge_growth_cache_entry, edge_growth_cache) <= edge->uid
|| !(ret = VEC_index (edge_growth_cache_entry,
edge_growth_cache,
- edge->uid)->size))
+ edge->uid).size))
return do_estimate_edge_growth (edge);
return ret - (ret > 0);
}
@@ -241,12 +266,28 @@ estimate_edge_time (struct cgraph_edge *edge)
if ((int)VEC_length (edge_growth_cache_entry, edge_growth_cache) <= edge->uid
|| !(ret = VEC_index (edge_growth_cache_entry,
edge_growth_cache,
- edge->uid)->time))
+ edge->uid).time))
return do_estimate_edge_time (edge);
return ret - (ret > 0);
}
+/* Return estimated callee runtime increase after inlning
+ EDGE. */
+
+static inline inline_hints
+estimate_edge_hints (struct cgraph_edge *edge)
+{
+ inline_hints ret;
+ if ((int)VEC_length (edge_growth_cache_entry, edge_growth_cache) <= edge->uid
+ || !(ret = VEC_index (edge_growth_cache_entry,
+ edge_growth_cache,
+ edge->uid).hints))
+ return do_estimate_edge_time (edge);
+ return ret - 1;
+}
+
+
/* Reset cached value for NODE. */
static inline void
@@ -263,7 +304,7 @@ reset_edge_growth_cache (struct cgraph_edge *edge)
{
if ((int)VEC_length (edge_growth_cache_entry, edge_growth_cache) > edge->uid)
{
- struct edge_growth_cache_entry zero = {0, 0};
- VEC_replace (edge_growth_cache_entry, edge_growth_cache, edge->uid, &zero);
+ struct edge_growth_cache_entry zero = {0, 0, 0};
+ VEC_replace (edge_growth_cache_entry, edge_growth_cache, edge->uid, zero);
}
}
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index ae35191e0f6..966dbfabcdb 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -32,10 +32,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-inline.h"
#include "gimple.h"
#include "flags.h"
-#include "timevar.h"
-#include "flags.h"
#include "diagnostic.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "lto-streamer.h"
#include "data-streamer.h"
@@ -47,8 +44,8 @@ along with GCC; see the file COPYING3. If not see
struct param_analysis_info
{
- bool modified;
- bitmap visited_statements;
+ bool parm_modified, ref_modified, pt_modified;
+ bitmap parm_visited_statements, pt_visited_statements;
};
/* Vector where the parameter infos are actually stored. */
@@ -97,7 +94,7 @@ ipa_populate_param_decls (struct cgraph_node *node,
for (parm = fnargs; parm; parm = DECL_CHAIN (parm))
{
VEC_index (ipa_param_descriptor_t,
- info->descriptors, param_num)->decl = parm;
+ info->descriptors, param_num).decl = parm;
param_num++;
}
}
@@ -181,24 +178,21 @@ ipa_print_node_jump_functions_for_edge (FILE *f, struct cgraph_edge *cs)
}
fprintf (f, "\n");
}
- else if (type == IPA_JF_CONST_MEMBER_PTR)
- {
- fprintf (f, "CONST MEMBER PTR: ");
- print_generic_expr (f, jump_func->value.member_cst.pfn, 0);
- fprintf (f, ", ");
- print_generic_expr (f, jump_func->value.member_cst.delta, 0);
- fprintf (f, "\n");
- }
else if (type == IPA_JF_PASS_THROUGH)
{
fprintf (f, "PASS THROUGH: ");
- fprintf (f, "%d, op %s ",
+ fprintf (f, "%d, op %s",
jump_func->value.pass_through.formal_id,
tree_code_name[(int)
jump_func->value.pass_through.operation]);
if (jump_func->value.pass_through.operation != NOP_EXPR)
- print_generic_expr (f,
- jump_func->value.pass_through.operand, 0);
+ {
+ fprintf (f, " ");
+ print_generic_expr (f,
+ jump_func->value.pass_through.operand, 0);
+ }
+ if (jump_func->value.pass_through.agg_preserved)
+ fprintf (f, ", agg_preserved");
fprintf (f, "\n");
}
else if (type == IPA_JF_ANCESTOR)
@@ -208,8 +202,34 @@ ipa_print_node_jump_functions_for_edge (FILE *f, struct cgraph_edge *cs)
jump_func->value.ancestor.formal_id,
jump_func->value.ancestor.offset);
print_generic_expr (f, jump_func->value.ancestor.type, 0);
+ if (jump_func->value.ancestor.agg_preserved)
+ fprintf (f, ", agg_preserved");
fprintf (f, "\n");
}
+
+ if (jump_func->agg.items)
+ {
+ struct ipa_agg_jf_item *item;
+ int j;
+
+ fprintf (f, " Aggregate passed by %s:\n",
+ jump_func->agg.by_ref ? "reference" : "value");
+ FOR_EACH_VEC_ELT (ipa_agg_jf_item_t, jump_func->agg.items,
+ j, item)
+ {
+ fprintf (f, " offset: " HOST_WIDE_INT_PRINT_DEC ", ",
+ item->offset);
+ if (TYPE_P (item->value))
+ fprintf (f, "clobber of " HOST_WIDE_INT_PRINT_DEC " bits",
+ tree_low_cst (TYPE_SIZE (item->value), 1));
+ else
+ {
+ fprintf (f, "cst: ");
+ print_generic_expr (f, item->value, 0);
+ }
+ fprintf (f, "\n");
+ }
+ }
}
}
@@ -289,12 +309,14 @@ ipa_set_jf_constant (struct ipa_jump_func *jfunc, tree constant)
/* Set JFUNC to be a simple pass-through jump function. */
static void
-ipa_set_jf_simple_pass_through (struct ipa_jump_func *jfunc, int formal_id)
+ipa_set_jf_simple_pass_through (struct ipa_jump_func *jfunc, int formal_id,
+ bool agg_preserved)
{
jfunc->type = IPA_JF_PASS_THROUGH;
jfunc->value.pass_through.operand = NULL_TREE;
jfunc->value.pass_through.formal_id = formal_id;
jfunc->value.pass_through.operation = NOP_EXPR;
+ jfunc->value.pass_through.agg_preserved = agg_preserved;
}
/* Set JFUNC to be an arithmetic pass through jump function. */
@@ -307,30 +329,20 @@ ipa_set_jf_arith_pass_through (struct ipa_jump_func *jfunc, int formal_id,
jfunc->value.pass_through.operand = operand;
jfunc->value.pass_through.formal_id = formal_id;
jfunc->value.pass_through.operation = operation;
+ jfunc->value.pass_through.agg_preserved = false;
}
/* Set JFUNC to be an ancestor jump function. */
static void
ipa_set_ancestor_jf (struct ipa_jump_func *jfunc, HOST_WIDE_INT offset,
- tree type, int formal_id)
+ tree type, int formal_id, bool agg_preserved)
{
jfunc->type = IPA_JF_ANCESTOR;
jfunc->value.ancestor.formal_id = formal_id;
jfunc->value.ancestor.offset = offset;
jfunc->value.ancestor.type = type;
-}
-
-/* Simple function filling in a member pointer constant jump function (with PFN
- and DELTA as the constant value) into JFUNC. */
-
-static void
-ipa_set_jf_member_ptr_cst (struct ipa_jump_func *jfunc,
- tree pfn, tree delta)
-{
- jfunc->type = IPA_JF_CONST_MEMBER_PTR;
- jfunc->value.member_cst.pfn = pfn;
- jfunc->value.member_cst.delta = delta;
+ jfunc->value.ancestor.agg_preserved = agg_preserved;
}
/* Structure to be passed in between detect_type_change and
@@ -584,30 +596,35 @@ mark_modified (ao_ref *ao ATTRIBUTE_UNUSED, tree vdef ATTRIBUTE_UNUSED,
return true;
}
-/* Return true if the formal parameter PARM might have been modified in this
- function before reaching the statement STMT. PARM_AINFO is a pointer to a
- structure containing temporary information about PARM. */
+/* Return true if a load from a formal parameter PARM_LOAD is known to retreive
+ a value known not to be modified in this function before reaching the
+ statement STMT. PARM_AINFO is a pointer to a structure containing temporary
+ information about the parameter. */
static bool
-is_parm_modified_before_stmt (struct param_analysis_info *parm_ainfo,
- gimple stmt, tree parm)
+parm_preserved_before_stmt_p (struct param_analysis_info *parm_ainfo,
+ gimple stmt, tree parm_load)
{
bool modified = false;
+ bitmap *visited_stmts;
ao_ref refd;
- if (parm_ainfo->modified)
- return true;
+ if (parm_ainfo && parm_ainfo->parm_modified)
+ return false;
gcc_checking_assert (gimple_vuse (stmt) != NULL_TREE);
- ao_ref_init (&refd, parm);
- walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified,
- &modified, &parm_ainfo->visited_statements);
- if (modified)
- {
- parm_ainfo->modified = true;
- return true;
- }
- return false;
+ ao_ref_init (&refd, parm_load);
+ /* We can cache visited statements only when parm_ainfo is available and when
+ we are looking at a naked load of the whole parameter. */
+ if (!parm_ainfo || TREE_CODE (parm_load) != PARM_DECL)
+ visited_stmts = NULL;
+ else
+ visited_stmts = &parm_ainfo->parm_visited_statements;
+ walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
+ visited_stmts);
+ if (parm_ainfo && modified)
+ parm_ainfo->parm_modified = true;
+ return !modified;
}
/* If STMT is an assignment that loads a value from an parameter declaration,
@@ -631,12 +648,158 @@ load_from_unmodified_param (struct ipa_node_params *info,
index = ipa_get_param_decl_index (info, op1);
if (index < 0
- || is_parm_modified_before_stmt (&parms_ainfo[index], stmt, op1))
+ || !parm_preserved_before_stmt_p (parms_ainfo ? &parms_ainfo[index]
+ : NULL, stmt, op1))
return -1;
return index;
}
+/* Return true if memory reference REF loads data that are known to be
+ unmodified in this function before reaching statement STMT. PARM_AINFO, if
+ non-NULL, is a pointer to a structure containing temporary information about
+ PARM. */
+
+static bool
+parm_ref_data_preserved_p (struct param_analysis_info *parm_ainfo,
+ gimple stmt, tree ref)
+{
+ bool modified = false;
+ ao_ref refd;
+
+ gcc_checking_assert (gimple_vuse (stmt));
+ if (parm_ainfo && parm_ainfo->ref_modified)
+ return false;
+
+ ao_ref_init (&refd, ref);
+ walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
+ NULL);
+ if (parm_ainfo && modified)
+ parm_ainfo->ref_modified = true;
+ return !modified;
+}
+
+/* Return true if the data pointed to by PARM is known to be unmodified in this
+ function before reaching call statement CALL into which it is passed.
+ PARM_AINFO is a pointer to a structure containing temporary information
+ about PARM. */
+
+static bool
+parm_ref_data_pass_through_p (struct param_analysis_info *parm_ainfo,
+ gimple call, tree parm)
+{
+ bool modified = false;
+ ao_ref refd;
+
+ /* It's unnecessary to calculate anything about memory contnets for a const
+ function because it is not goin to use it. But do not cache the result
+ either. Also, no such calculations for non-pointers. */
+ if (!gimple_vuse (call)
+ || !POINTER_TYPE_P (TREE_TYPE (parm)))
+ return false;
+
+ if (parm_ainfo->pt_modified)
+ return false;
+
+ ao_ref_init_from_ptr_and_size (&refd, parm, NULL_TREE);
+ walk_aliased_vdefs (&refd, gimple_vuse (call), mark_modified, &modified,
+ parm_ainfo ? &parm_ainfo->pt_visited_statements : NULL);
+ if (modified)
+ parm_ainfo->pt_modified = true;
+ return !modified;
+}
+
+/* Return true if we can prove that OP is a memory reference loading unmodified
+ data from an aggregate passed as a parameter and if the aggregate is passed
+ by reference, that the alias type of the load corresponds to the type of the
+ formal parameter (so that we can rely on this type for TBAA in callers).
+ INFO and PARMS_AINFO describe parameters of the current function (but the
+ latter can be NULL), STMT is the load statement. If function returns true,
+ *INDEX_P, *OFFSET_P and *BY_REF is filled with the parameter index, offset
+ within the aggregate and whether it is a load from a value passed by
+ reference respectively. */
+
+static bool
+ipa_load_from_parm_agg_1 (struct ipa_node_params *info,
+ struct param_analysis_info *parms_ainfo, gimple stmt,
+ tree op, int *index_p, HOST_WIDE_INT *offset_p,
+ bool *by_ref_p)
+{
+ int index;
+ HOST_WIDE_INT size, max_size;
+ tree base = get_ref_base_and_extent (op, offset_p, &size, &max_size);
+
+ if (max_size == -1 || max_size != size || *offset_p < 0)
+ return false;
+
+ if (DECL_P (base))
+ {
+ int index = ipa_get_param_decl_index (info, base);
+ if (index >= 0
+ && parm_preserved_before_stmt_p (parms_ainfo ? &parms_ainfo[index]
+ : NULL, stmt, op))
+ {
+ *index_p = index;
+ *by_ref_p = false;
+ return true;
+ }
+ return false;
+ }
+
+ if (TREE_CODE (base) != MEM_REF
+ || TREE_CODE (TREE_OPERAND (base, 0)) != SSA_NAME
+ || !integer_zerop (TREE_OPERAND (base, 1)))
+ return false;
+
+ if (SSA_NAME_IS_DEFAULT_DEF (TREE_OPERAND (base, 0)))
+ {
+ tree parm = SSA_NAME_VAR (TREE_OPERAND (base, 0));
+ index = ipa_get_param_decl_index (info, parm);
+ }
+ else
+ {
+ /* This branch catches situations where a pointer parameter is not a
+ gimple register, for example:
+
+ void hip7(S*) (struct S * p)
+ {
+ void (*<T2e4>) (struct S *) D.1867;
+ struct S * p.1;
+
+ <bb 2>:
+ p.1_1 = p;
+ D.1867_2 = p.1_1->f;
+ D.1867_2 ();
+ gdp = &p;
+ */
+
+ gimple def = SSA_NAME_DEF_STMT (TREE_OPERAND (base, 0));
+ index = load_from_unmodified_param (info, parms_ainfo, def);
+ }
+
+ if (index >= 0
+ && parm_ref_data_preserved_p (parms_ainfo ? &parms_ainfo[index] : NULL,
+ stmt, op))
+ {
+ *index_p = index;
+ *by_ref_p = true;
+ return true;
+ }
+ return false;
+}
+
+/* Just like the previous function, just without the param_analysis_info
+ pointer, for users outside of this file. */
+
+bool
+ipa_load_from_parm_agg (struct ipa_node_params *info, gimple stmt,
+ tree op, int *index_p, HOST_WIDE_INT *offset_p,
+ bool *by_ref_p)
+{
+ return ipa_load_from_parm_agg_1 (info, NULL, stmt, op, index_p, offset_p,
+ by_ref_p);
+}
+
/* Given that an actual argument is an SSA_NAME (given in NAME) and is a result
of an assignment statement STMT, try to determine whether we are actually
handling any of the following cases and construct an appropriate jump
@@ -734,7 +897,11 @@ compute_complex_assign_jump_func (struct ipa_node_params *info,
}
else if (gimple_assign_single_p (stmt)
&& !detect_type_change_ssa (tc_ssa, call, jfunc))
- ipa_set_jf_simple_pass_through (jfunc, index);
+ {
+ bool agg_p = parm_ref_data_pass_through_p (&parms_ainfo[index],
+ call, tc_ssa);
+ ipa_set_jf_simple_pass_through (jfunc, index, agg_p);
+ }
return;
}
@@ -760,7 +927,9 @@ compute_complex_assign_jump_func (struct ipa_node_params *info,
index = ipa_get_param_decl_index (info, SSA_NAME_VAR (ssa));
if (index >= 0
&& !detect_type_change (op1, base, call, jfunc, offset))
- ipa_set_ancestor_jf (jfunc, offset, TREE_TYPE (op1), index);
+ ipa_set_ancestor_jf (jfunc, offset, TREE_TYPE (op1), index,
+ parm_ref_data_pass_through_p (&parms_ainfo[index],
+ call, ssa));
}
/* Extract the base, offset and MEM_REF expression from a statement ASSIGN if
@@ -831,6 +1000,7 @@ get_ancestor_addr_info (gimple assign, tree *obj_p, HOST_WIDE_INT *offset)
static void
compute_complex_ancestor_jump_func (struct ipa_node_params *info,
+ struct param_analysis_info *parms_ainfo,
struct ipa_jump_func *jfunc,
gimple call, gimple phi)
{
@@ -884,7 +1054,9 @@ compute_complex_ancestor_jump_func (struct ipa_node_params *info,
}
if (!detect_type_change (obj, expr, call, jfunc, offset))
- ipa_set_ancestor_jf (jfunc, offset, TREE_TYPE (obj), index);
+ ipa_set_ancestor_jf (jfunc, offset, TREE_TYPE (obj), index,
+ parm_ref_data_pass_through_p (&parms_ainfo[index],
+ call, parm));
}
/* Given OP which is passed as an actual argument to a called function,
@@ -912,62 +1084,13 @@ compute_known_type_jump_func (tree op, struct ipa_jump_func *jfunc,
|| is_global_var (base))
return;
- if (detect_type_change (op, base, call, jfunc, offset)
- || !TYPE_BINFO (TREE_TYPE (base)))
+ if (!TYPE_BINFO (TREE_TYPE (base))
+ || detect_type_change (op, base, call, jfunc, offset))
return;
ipa_set_jf_known_type (jfunc, offset, TREE_TYPE (base), TREE_TYPE (op));
}
-
-/* Determine the jump functions of scalar arguments. Scalar means SSA names
- and constants of a number of selected types. INFO is the ipa_node_params
- structure associated with the caller, PARMS_AINFO describes state of
- analysis with respect to individual formal parameters. ARGS is the
- ipa_edge_args structure describing the callsite CALL which is the call
- statement being examined.*/
-
-static void
-compute_scalar_jump_functions (struct ipa_node_params *info,
- struct param_analysis_info *parms_ainfo,
- struct ipa_edge_args *args,
- gimple call)
-{
- tree arg;
- unsigned num = 0;
-
- for (num = 0; num < gimple_call_num_args (call); num++)
- {
- struct ipa_jump_func *jfunc = ipa_get_ith_jump_func (args, num);
- arg = gimple_call_arg (call, num);
-
- if (is_gimple_ip_invariant (arg))
- ipa_set_jf_constant (jfunc, arg);
- else if (TREE_CODE (arg) == SSA_NAME)
- {
- if (SSA_NAME_IS_DEFAULT_DEF (arg))
- {
- int index = ipa_get_param_decl_index (info, SSA_NAME_VAR (arg));
-
- if (index >= 0
- && !detect_type_change_ssa (arg, call, jfunc))
- ipa_set_jf_simple_pass_through (jfunc, index);
- }
- else
- {
- gimple stmt = SSA_NAME_DEF_STMT (arg);
- if (is_gimple_assign (stmt))
- compute_complex_assign_jump_func (info, parms_ainfo, jfunc,
- call, stmt, arg);
- else if (gimple_code (stmt) == GIMPLE_PHI)
- compute_complex_ancestor_jump_func (info, jfunc, call, stmt);
- }
- }
- else
- compute_known_type_jump_func (arg, jfunc, call);
- }
-}
-
/* Inspect the given TYPE and return true iff it has the same structure (the
same number of fields of the same types) as a C++ member pointer. If
METHOD_PTR and DELTA are non-NULL, store the trees representing the
@@ -983,14 +1106,16 @@ type_like_member_ptr_p (tree type, tree *method_ptr, tree *delta)
fld = TYPE_FIELDS (type);
if (!fld || !POINTER_TYPE_P (TREE_TYPE (fld))
- || TREE_CODE (TREE_TYPE (TREE_TYPE (fld))) != METHOD_TYPE)
+ || TREE_CODE (TREE_TYPE (TREE_TYPE (fld))) != METHOD_TYPE
+ || !host_integerp (DECL_FIELD_OFFSET (fld), 1))
return false;
if (method_ptr)
*method_ptr = fld;
fld = DECL_CHAIN (fld);
- if (!fld || INTEGRAL_TYPE_P (fld))
+ if (!fld || INTEGRAL_TYPE_P (fld)
+ || !host_integerp (DECL_FIELD_OFFSET (fld), 1))
return false;
if (delta)
*delta = fld;
@@ -1001,54 +1126,9 @@ type_like_member_ptr_p (tree type, tree *method_ptr, tree *delta)
return true;
}
-/* Go through arguments of the CALL and for every one that looks like a member
- pointer, check whether it can be safely declared pass-through and if so,
- mark that to the corresponding item of jump FUNCTIONS. Return true iff
- there are non-pass-through member pointers within the arguments. INFO
- describes formal parameters of the caller. PARMS_INFO is a pointer to a
- vector containing intermediate information about each formal parameter. */
-
-static bool
-compute_pass_through_member_ptrs (struct ipa_node_params *info,
- struct param_analysis_info *parms_ainfo,
- struct ipa_edge_args *args,
- gimple call)
-{
- bool undecided_members = false;
- unsigned num;
- tree arg;
-
- for (num = 0; num < gimple_call_num_args (call); num++)
- {
- arg = gimple_call_arg (call, num);
-
- if (type_like_member_ptr_p (TREE_TYPE (arg), NULL, NULL))
- {
- if (TREE_CODE (arg) == PARM_DECL)
- {
- int index = ipa_get_param_decl_index (info, arg);
-
- gcc_assert (index >=0);
- if (!is_parm_modified_before_stmt (&parms_ainfo[index], call,
- arg))
- {
- struct ipa_jump_func *jfunc = ipa_get_ith_jump_func (args,
- num);
- ipa_set_jf_simple_pass_through (jfunc, index);
- }
- else
- undecided_members = true;
- }
- else
- undecided_members = true;
- }
- }
-
- return undecided_members;
-}
-
/* If RHS is an SSA_NAME and it is defined by a simple copy assign statement,
- return the rhs of its defining statement. */
+ return the rhs of its defining statement. Otherwise return RHS as it
+ is. */
static inline tree
get_ssa_def_if_simple_copy (tree rhs)
@@ -1065,104 +1145,213 @@ get_ssa_def_if_simple_copy (tree rhs)
return rhs;
}
-/* Traverse statements from CALL backwards, scanning whether the argument ARG
- which is a member pointer is filled in with constant values. If it is, fill
- the jump function JFUNC in appropriately. METHOD_FIELD and DELTA_FIELD are
- fields of the record type of the member pointer. To give an example, we
- look for a pattern looking like the following:
+/* TODO: Turn this into a PARAM. */
+#define IPA_MAX_AFF_JF_ITEMS 16
+
+/* Simple linked list, describing known contents of an aggregate beforere
+ call. */
- D.2515.__pfn ={v} printStuff;
- D.2515.__delta ={v} 0;
- i_1 = doprinting (D.2515); */
+struct ipa_known_agg_contents_list
+{
+ /* Offset and size of the described part of the aggregate. */
+ HOST_WIDE_INT offset, size;
+ /* Known constant value or NULL if the contents is known to be unknown. */
+ tree constant;
+ /* Pointer to the next structure in the list. */
+ struct ipa_known_agg_contents_list *next;
+};
+
+/* Traverse statements from CALL backwards, scanning whether an aggregate given
+ in ARG is filled in with constant values. ARG can either be an aggregate
+ expression or a pointer to an aggregate. JFUNC is the jump function into
+ which the constants are subsequently stored. */
static void
-determine_cst_member_ptr (gimple call, tree arg, tree method_field,
- tree delta_field, struct ipa_jump_func *jfunc)
+determine_known_aggregate_parts (gimple call, tree arg,
+ struct ipa_jump_func *jfunc)
{
+ struct ipa_known_agg_contents_list *list = NULL;
+ int item_count = 0, const_count = 0;
+ HOST_WIDE_INT arg_offset, arg_size;
gimple_stmt_iterator gsi;
- tree method = NULL_TREE;
- tree delta = NULL_TREE;
+ tree arg_base;
+ bool check_ref, by_ref;
+ ao_ref r;
- gsi = gsi_for_stmt (call);
+ /* The function operates in three stages. First, we prepare check_ref, r,
+ arg_base and arg_offset based on what is actually passed as an actual
+ argument. */
+ if (POINTER_TYPE_P (TREE_TYPE (arg)))
+ {
+ by_ref = true;
+ if (TREE_CODE (arg) == SSA_NAME)
+ {
+ tree type_size;
+ if (!host_integerp (TYPE_SIZE (TREE_TYPE (TREE_TYPE (arg))), 1))
+ return;
+ check_ref = true;
+ arg_base = arg;
+ arg_offset = 0;
+ type_size = TYPE_SIZE (TREE_TYPE (TREE_TYPE (arg)));
+ arg_size = tree_low_cst (type_size, 1);
+ ao_ref_init_from_ptr_and_size (&r, arg_base, NULL_TREE);
+ }
+ else if (TREE_CODE (arg) == ADDR_EXPR)
+ {
+ HOST_WIDE_INT arg_max_size;
+
+ arg = TREE_OPERAND (arg, 0);
+ arg_base = get_ref_base_and_extent (arg, &arg_offset, &arg_size,
+ &arg_max_size);
+ if (arg_max_size == -1
+ || arg_max_size != arg_size
+ || arg_offset < 0)
+ return;
+ if (DECL_P (arg_base))
+ {
+ tree size;
+ check_ref = false;
+ size = build_int_cst (integer_type_node, arg_size);
+ ao_ref_init_from_ptr_and_size (&r, arg_base, size);
+ }
+ else
+ return;
+ }
+ else
+ return;
+ }
+ else
+ {
+ HOST_WIDE_INT arg_max_size;
+
+ gcc_checking_assert (AGGREGATE_TYPE_P (TREE_TYPE (arg)));
+
+ by_ref = false;
+ check_ref = false;
+ arg_base = get_ref_base_and_extent (arg, &arg_offset, &arg_size,
+ &arg_max_size);
+ if (arg_max_size == -1
+ || arg_max_size != arg_size
+ || arg_offset < 0)
+ return;
+
+ ao_ref_init (&r, arg);
+ }
+
+ /* Second stage walks back the BB, looks at individual statements and as long
+ as it is confident of how the statements affect contents of the
+ aggregates, it builds a sorted linked list of ipa_agg_jf_list structures
+ describing it. */
+ gsi = gsi_for_stmt (call);
gsi_prev (&gsi);
for (; !gsi_end_p (gsi); gsi_prev (&gsi))
{
+ struct ipa_known_agg_contents_list *n, **p;
gimple stmt = gsi_stmt (gsi);
- tree lhs, rhs, fld;
+ HOST_WIDE_INT lhs_offset, lhs_size, lhs_max_size;
+ tree lhs, rhs, lhs_base;
+ bool partial_overlap;
- if (!stmt_may_clobber_ref_p (stmt, arg))
+ if (!stmt_may_clobber_ref_p_1 (stmt, &r))
continue;
if (!gimple_assign_single_p (stmt))
- return;
+ break;
lhs = gimple_assign_lhs (stmt);
rhs = gimple_assign_rhs1 (stmt);
+ if (!is_gimple_reg_type (rhs))
+ break;
- if (TREE_CODE (lhs) != COMPONENT_REF
- || TREE_OPERAND (lhs, 0) != arg)
- return;
+ lhs_base = get_ref_base_and_extent (lhs, &lhs_offset, &lhs_size,
+ &lhs_max_size);
+ if (lhs_max_size == -1
+ || lhs_max_size != lhs_size
+ || (lhs_offset < arg_offset
+ && lhs_offset + lhs_size > arg_offset)
+ || (lhs_offset < arg_offset + arg_size
+ && lhs_offset + lhs_size > arg_offset + arg_size))
+ break;
- fld = TREE_OPERAND (lhs, 1);
- if (!method && fld == method_field)
+ if (check_ref)
{
- rhs = get_ssa_def_if_simple_copy (rhs);
- if (TREE_CODE (rhs) == ADDR_EXPR
- && TREE_CODE (TREE_OPERAND (rhs, 0)) == FUNCTION_DECL
- && TREE_CODE (TREE_TYPE (TREE_OPERAND (rhs, 0))) == METHOD_TYPE)
- {
- method = TREE_OPERAND (rhs, 0);
- if (delta)
- {
- ipa_set_jf_member_ptr_cst (jfunc, rhs, delta);
- return;
- }
- }
- else
- return;
+ if (TREE_CODE (lhs_base) != MEM_REF
+ || TREE_OPERAND (lhs_base, 0) != arg_base
+ || !integer_zerop (TREE_OPERAND (lhs_base, 1)))
+ break;
}
+ else if (lhs_base != arg_base)
+ break;
- if (!delta && fld == delta_field)
+ if (lhs_offset + lhs_size < arg_offset
+ || lhs_offset >= (arg_offset + arg_size))
+ continue;
+
+ partial_overlap = false;
+ p = &list;
+ while (*p && (*p)->offset < lhs_offset)
{
- rhs = get_ssa_def_if_simple_copy (rhs);
- if (TREE_CODE (rhs) == INTEGER_CST)
+ if ((*p)->offset + (*p)->size > lhs_offset)
{
- delta = rhs;
- if (method)
- {
- ipa_set_jf_member_ptr_cst (jfunc, rhs, delta);
- return;
- }
+ partial_overlap = true;
+ break;
}
+ p = &(*p)->next;
+ }
+ if (partial_overlap)
+ break;
+ if (*p && (*p)->offset < lhs_offset + lhs_size)
+ {
+ if ((*p)->offset == lhs_offset && (*p)->size == lhs_size)
+ /* We already know this value is subsequently overwritten with
+ something else. */
+ continue;
else
- return;
+ /* Otherwise this is a partial overlap which we cannot
+ represent. */
+ break;
}
- }
- return;
-}
+ rhs = get_ssa_def_if_simple_copy (rhs);
+ n = XALLOCA (struct ipa_known_agg_contents_list);
+ n->size = lhs_size;
+ n->offset = lhs_offset;
+ if (is_gimple_ip_invariant (rhs))
+ {
+ n->constant = rhs;
+ const_count++;
+ }
+ else
+ n->constant = NULL_TREE;
+ n->next = *p;
+ *p = n;
-/* Go through the arguments of the CALL and for every member pointer within
- tries determine whether it is a constant. If it is, create a corresponding
- constant jump function in FUNCTIONS which is an array of jump functions
- associated with the call. */
+ item_count++;
+ if (const_count == IPA_MAX_AFF_JF_ITEMS
+ || item_count == 2 * IPA_MAX_AFF_JF_ITEMS)
+ break;
+ }
-static void
-compute_cst_member_ptr_arguments (struct ipa_edge_args *args,
- gimple call)
-{
- unsigned num;
- tree arg, method_field, delta_field;
+ /* Third stage just goes over the list and creates an appropriate vector of
+ ipa_agg_jf_item structures out of it, of sourse only if there are
+ any known constants to begin with. */
- for (num = 0; num < gimple_call_num_args (call); num++)
+ if (const_count)
{
- struct ipa_jump_func *jfunc = ipa_get_ith_jump_func (args, num);
- arg = gimple_call_arg (call, num);
-
- if (jfunc->type == IPA_JF_UNKNOWN
- && type_like_member_ptr_p (TREE_TYPE (arg), &method_field,
- &delta_field))
- determine_cst_member_ptr (call, arg, method_field, delta_field, jfunc);
+ jfunc->agg.by_ref = by_ref;
+ jfunc->agg.items = VEC_alloc (ipa_agg_jf_item_t, gc, const_count);
+ while (list)
+ {
+ if (list->constant)
+ {
+ struct ipa_agg_jf_item *item;
+ item = VEC_quick_push (ipa_agg_jf_item_t,
+ jfunc->agg.items, NULL);
+ item->offset = list->offset - arg_offset;
+ item->value = list->constant;
+ }
+ list = list->next;
+ }
}
}
@@ -1177,23 +1366,70 @@ ipa_compute_jump_functions_for_edge (struct param_analysis_info *parms_ainfo,
struct ipa_node_params *info = IPA_NODE_REF (cs->caller);
struct ipa_edge_args *args = IPA_EDGE_REF (cs);
gimple call = cs->call_stmt;
- int arg_num = gimple_call_num_args (call);
+ int n, arg_num = gimple_call_num_args (call);
if (arg_num == 0 || args->jump_functions)
return;
VEC_safe_grow_cleared (ipa_jump_func_t, gc, args->jump_functions, arg_num);
- /* We will deal with constants and SSA scalars first: */
- compute_scalar_jump_functions (info, parms_ainfo, args, call);
+ for (n = 0; n < arg_num; n++)
+ {
+ struct ipa_jump_func *jfunc = ipa_get_ith_jump_func (args, n);
+ tree arg = gimple_call_arg (call, n);
- /* Let's check whether there are any potential member pointers and if so,
- whether we can determine their functions as pass_through. */
- if (!compute_pass_through_member_ptrs (info, parms_ainfo, args, call))
- return;
+ if (is_gimple_ip_invariant (arg))
+ ipa_set_jf_constant (jfunc, arg);
+ else if (!is_gimple_reg_type (TREE_TYPE (arg))
+ && TREE_CODE (arg) == PARM_DECL)
+ {
+ int index = ipa_get_param_decl_index (info, arg);
- /* Finally, let's check whether we actually pass a new constant member
- pointer here... */
- compute_cst_member_ptr_arguments (args, call);
+ gcc_assert (index >=0);
+ /* Aggregate passed by value, check for pass-through, otherwise we
+ will attempt to fill in aggregate contents later in this
+ for cycle. */
+ if (parm_preserved_before_stmt_p (&parms_ainfo[index], call, arg))
+ {
+ ipa_set_jf_simple_pass_through (jfunc, index, false);
+ continue;
+ }
+ }
+ else if (TREE_CODE (arg) == SSA_NAME)
+ {
+ if (SSA_NAME_IS_DEFAULT_DEF (arg))
+ {
+ int index = ipa_get_param_decl_index (info, SSA_NAME_VAR (arg));
+ if (index >= 0
+ && !detect_type_change_ssa (arg, call, jfunc))
+ {
+ bool agg_p;
+ agg_p = parm_ref_data_pass_through_p (&parms_ainfo[index],
+ call, arg);
+ ipa_set_jf_simple_pass_through (jfunc, index, agg_p);
+ }
+ }
+ else
+ {
+ gimple stmt = SSA_NAME_DEF_STMT (arg);
+ if (is_gimple_assign (stmt))
+ compute_complex_assign_jump_func (info, parms_ainfo, jfunc,
+ call, stmt, arg);
+ else if (gimple_code (stmt) == GIMPLE_PHI)
+ compute_complex_ancestor_jump_func (info, parms_ainfo, jfunc,
+ call, stmt);
+ }
+ }
+ else
+ compute_known_type_jump_func (arg, jfunc, call);
+
+ if ((jfunc->type != IPA_JF_PASS_THROUGH
+ || !ipa_get_jf_pass_through_agg_preserved (jfunc))
+ && (jfunc->type != IPA_JF_ANCESTOR
+ || !ipa_get_jf_ancestor_agg_preserved (jfunc))
+ && (AGGREGATE_TYPE_P (TREE_TYPE (arg))
+ || (POINTER_TYPE_P (TREE_TYPE (arg)))))
+ determine_known_aggregate_parts (call, arg, jfunc);
+ }
}
/* Compute jump functions for all edges - both direct and indirect - outgoing
@@ -1220,16 +1456,22 @@ ipa_compute_jump_functions (struct cgraph_node *node,
ipa_compute_jump_functions_for_edge (parms_ainfo, cs);
}
-/* If RHS looks like a rhs of a statement loading pfn from a member
- pointer formal parameter, return the parameter, otherwise return
- NULL. If USE_DELTA, then we look for a use of the delta field
- rather than the pfn. */
+/* If STMT looks like a statement loading a value from a member pointer formal
+ parameter, return that parameter and store the offset of the field to
+ *OFFSET_P, if it is non-NULL. Otherwise return NULL (but *OFFSET_P still
+ might be clobbered). If USE_DELTA, then we look for a use of the delta
+ field rather than the pfn. */
static tree
-ipa_get_member_ptr_load_param (tree rhs, bool use_delta)
+ipa_get_stmt_member_ptr_load_param (gimple stmt, bool use_delta,
+ HOST_WIDE_INT *offset_p)
{
- tree rec, ref_field, ref_offset, fld, fld_offset, ptr_field, delta_field;
+ tree rhs, rec, ref_field, ref_offset, fld, ptr_field, delta_field;
+
+ if (!gimple_assign_single_p (stmt))
+ return NULL_TREE;
+ rhs = gimple_assign_rhs1 (stmt);
if (TREE_CODE (rhs) == COMPONENT_REF)
{
ref_field = TREE_OPERAND (rhs, 1);
@@ -1246,43 +1488,24 @@ ipa_get_member_ptr_load_param (tree rhs, bool use_delta)
if (TREE_CODE (rec) != PARM_DECL
|| !type_like_member_ptr_p (TREE_TYPE (rec), &ptr_field, &delta_field))
return NULL_TREE;
-
ref_offset = TREE_OPERAND (rhs, 1);
+ if (use_delta)
+ fld = delta_field;
+ else
+ fld = ptr_field;
+ if (offset_p)
+ *offset_p = int_bit_position (fld);
+
if (ref_field)
{
if (integer_nonzerop (ref_offset))
return NULL_TREE;
-
- if (use_delta)
- fld = delta_field;
- else
- fld = ptr_field;
-
return ref_field == fld ? rec : NULL_TREE;
}
-
- if (use_delta)
- fld_offset = byte_position (delta_field);
else
- fld_offset = byte_position (ptr_field);
-
- return tree_int_cst_equal (ref_offset, fld_offset) ? rec : NULL_TREE;
-}
-
-/* If STMT looks like a statement loading a value from a member pointer formal
- parameter, this function returns that parameter. */
-
-static tree
-ipa_get_stmt_member_ptr_load_param (gimple stmt, bool use_delta)
-{
- tree rhs;
-
- if (!gimple_assign_single_p (stmt))
- return NULL_TREE;
-
- rhs = gimple_assign_rhs1 (stmt);
- return ipa_get_member_ptr_load_param (rhs, use_delta);
+ return tree_int_cst_equal (byte_position (fld), ref_offset) ? rec
+ : NULL_TREE;
}
/* Returns true iff T is an SSA_NAME defined by a statement. */
@@ -1308,8 +1531,9 @@ ipa_note_param_call (struct cgraph_node *node, int param_index, gimple stmt)
cs = cgraph_edge (node, stmt);
cs->indirect_info->param_index = param_index;
- cs->indirect_info->anc_offset = 0;
+ cs->indirect_info->offset = 0;
cs->indirect_info->polymorphic = 0;
+ cs->indirect_info->agg_contents = 0;
return cs;
}
@@ -1368,7 +1592,9 @@ ipa_note_param_call (struct cgraph_node *node, int param_index, gimple stmt)
return (S.*f)(4);
}
-*/
+
+ Moreover, the function also looks for called pointers loaded from aggregates
+ passed by value or reference. */
static void
ipa_analyze_indirect_call_uses (struct cgraph_node *node,
@@ -1383,6 +1609,8 @@ ipa_analyze_indirect_call_uses (struct cgraph_node *node,
gimple branch;
int index;
basic_block bb, virt_bb, join;
+ HOST_WIDE_INT offset;
+ bool by_ref;
if (SSA_NAME_IS_DEFAULT_DEF (target))
{
@@ -1393,20 +1621,27 @@ ipa_analyze_indirect_call_uses (struct cgraph_node *node,
return;
}
+ def = SSA_NAME_DEF_STMT (target);
+ if (gimple_assign_single_p (def)
+ && ipa_load_from_parm_agg_1 (info, parms_ainfo, def,
+ gimple_assign_rhs1 (def), &index, &offset,
+ &by_ref))
+ {
+ struct cgraph_edge *cs = ipa_note_param_call (node, index, call);
+ cs->indirect_info->offset = offset;
+ cs->indirect_info->agg_contents = 1;
+ cs->indirect_info->by_ref = by_ref;
+ return;
+ }
+
/* Now we need to try to match the complex pattern of calling a member
pointer. */
-
- if (!POINTER_TYPE_P (TREE_TYPE (target))
+ if (gimple_code (def) != GIMPLE_PHI
+ || gimple_phi_num_args (def) != 2
+ || !POINTER_TYPE_P (TREE_TYPE (target))
|| TREE_CODE (TREE_TYPE (TREE_TYPE (target))) != METHOD_TYPE)
return;
- def = SSA_NAME_DEF_STMT (target);
- if (gimple_code (def) != GIMPLE_PHI)
- return;
-
- if (gimple_phi_num_args (def) != 2)
- return;
-
/* First, we need to check whether one of these is a load from a member
pointer that is a parameter to this function. */
n1 = PHI_ARG_DEF (def, 0);
@@ -1417,15 +1652,15 @@ ipa_analyze_indirect_call_uses (struct cgraph_node *node,
d2 = SSA_NAME_DEF_STMT (n2);
join = gimple_bb (def);
- if ((rec = ipa_get_stmt_member_ptr_load_param (d1, false)))
+ if ((rec = ipa_get_stmt_member_ptr_load_param (d1, false, &offset)))
{
- if (ipa_get_stmt_member_ptr_load_param (d2, false))
+ if (ipa_get_stmt_member_ptr_load_param (d2, false, NULL))
return;
bb = EDGE_PRED (join, 0)->src;
virt_bb = gimple_bb (d2);
}
- else if ((rec = ipa_get_stmt_member_ptr_load_param (d2, false)))
+ else if ((rec = ipa_get_stmt_member_ptr_load_param (d2, false, &offset)))
{
bb = EDGE_PRED (join, 1)->src;
virt_bb = gimple_bb (d1);
@@ -1480,15 +1715,19 @@ ipa_analyze_indirect_call_uses (struct cgraph_node *node,
rec2 = ipa_get_stmt_member_ptr_load_param (def,
(TARGET_PTRMEMFUNC_VBIT_LOCATION
- == ptrmemfunc_vbit_in_delta));
-
+ == ptrmemfunc_vbit_in_delta),
+ NULL);
if (rec != rec2)
return;
index = ipa_get_param_decl_index (info, rec);
- if (index >= 0 && !is_parm_modified_before_stmt (&parms_ainfo[index],
- call, rec))
- ipa_note_param_call (node, index, call);
+ if (index >= 0
+ && parm_preserved_before_stmt_p (&parms_ainfo[index], call, rec))
+ {
+ struct cgraph_edge *cs = ipa_note_param_call (node, index, call);
+ cs->indirect_info->offset = offset;
+ cs->indirect_info->agg_contents = 1;
+ }
return;
}
@@ -1543,7 +1782,7 @@ ipa_analyze_virtual_call_uses (struct cgraph_node *node,
cs = ipa_note_param_call (node, index, call);
ii = cs->indirect_info;
- ii->anc_offset = anc_offset;
+ ii->offset = anc_offset;
ii->otr_token = tree_low_cst (OBJ_TYPE_REF_TOKEN (target), 1);
ii->otr_type = TREE_TYPE (TREE_TYPE (OBJ_TYPE_REF_OBJECT (target)));
ii->polymorphic = 1;
@@ -1626,10 +1865,13 @@ ipa_analyze_params_uses (struct cgraph_node *node,
for (i = 0; i < ipa_get_param_count (info); i++)
{
tree parm = ipa_get_param (info, i);
+ tree ddef;
/* For SSA regs see if parameter is used. For non-SSA we compute
the flag during modification analysis. */
if (is_gimple_reg (parm)
- && gimple_default_def (DECL_STRUCT_FUNCTION (node->symbol.decl), parm))
+ && (ddef = ssa_default_def (DECL_STRUCT_FUNCTION (node->symbol.decl),
+ parm)) != NULL_TREE
+ && !has_zero_uses (ddef))
ipa_set_param_used (info, i, true);
}
@@ -1685,8 +1927,12 @@ ipa_analyze_node (struct cgraph_node *node)
ipa_compute_jump_functions (node, parms_ainfo);
for (i = 0; i < param_count; i++)
- if (parms_ainfo[i].visited_statements)
- BITMAP_FREE (parms_ainfo[i].visited_statements);
+ {
+ if (parms_ainfo[i].parm_visited_statements)
+ BITMAP_FREE (parms_ainfo[i].parm_visited_statements);
+ if (parms_ainfo[i].pt_visited_statements)
+ BITMAP_FREE (parms_ainfo[i].pt_visited_statements);
+ }
current_function_decl = NULL;
pop_cfun ();
@@ -1733,26 +1979,50 @@ update_jump_functions_after_inlining (struct cgraph_edge *cs,
if (dst->type == IPA_JF_ANCESTOR)
{
struct ipa_jump_func *src;
+ int dst_fid = dst->value.ancestor.formal_id;
/* Variable number of arguments can cause havoc if we try to access
one that does not exist in the inlined edge. So make sure we
don't. */
- if (dst->value.ancestor.formal_id >= ipa_get_cs_argument_count (top))
+ if (dst_fid >= ipa_get_cs_argument_count (top))
{
dst->type = IPA_JF_UNKNOWN;
continue;
}
- src = ipa_get_ith_jump_func (top, dst->value.ancestor.formal_id);
+ src = ipa_get_ith_jump_func (top, dst_fid);
+
+ if (src->agg.items
+ && (dst->value.ancestor.agg_preserved || !src->agg.by_ref))
+ {
+ struct ipa_agg_jf_item *item;
+ int j;
+
+ /* Currently we do not produce clobber aggregate jump functions,
+ replace with merging when we do. */
+ gcc_assert (!dst->agg.items);
+
+ dst->agg.items = VEC_copy (ipa_agg_jf_item_t, gc, src->agg.items);
+ dst->agg.by_ref = src->agg.by_ref;
+ FOR_EACH_VEC_ELT (ipa_agg_jf_item_t, dst->agg.items, j, item)
+ item->offset -= dst->value.ancestor.offset;
+ }
+
if (src->type == IPA_JF_KNOWN_TYPE)
combine_known_type_and_ancestor_jfs (src, dst);
else if (src->type == IPA_JF_PASS_THROUGH
&& src->value.pass_through.operation == NOP_EXPR)
- dst->value.ancestor.formal_id = src->value.pass_through.formal_id;
+ {
+ dst->value.ancestor.formal_id = src->value.pass_through.formal_id;
+ dst->value.ancestor.agg_preserved &=
+ src->value.pass_through.agg_preserved;
+ }
else if (src->type == IPA_JF_ANCESTOR)
{
dst->value.ancestor.formal_id = src->value.ancestor.formal_id;
dst->value.ancestor.offset += src->value.ancestor.offset;
+ dst->value.ancestor.agg_preserved &=
+ src->value.ancestor.agg_preserved;
}
else
dst->type = IPA_JF_UNKNOWN;
@@ -1766,9 +2036,33 @@ update_jump_functions_after_inlining (struct cgraph_edge *cs,
&& (dst->value.pass_through.formal_id
< ipa_get_cs_argument_count (top)))
{
- src = ipa_get_ith_jump_func (top,
- dst->value.pass_through.formal_id);
- *dst = *src;
+ bool agg_p;
+ int dst_fid = dst->value.pass_through.formal_id;
+ src = ipa_get_ith_jump_func (top, dst_fid);
+ agg_p = dst->value.pass_through.agg_preserved;
+
+ dst->type = src->type;
+ dst->value = src->value;
+
+ if (src->agg.items
+ && (agg_p || !src->agg.by_ref))
+ {
+ /* Currently we do not produce clobber aggregate jump
+ functions, replace with merging when we do. */
+ gcc_assert (!dst->agg.items);
+
+ dst->agg.by_ref = src->agg.by_ref;
+ dst->agg.items = VEC_copy (ipa_agg_jf_item_t, gc,
+ src->agg.items);
+ }
+
+ if (!agg_p)
+ {
+ if (dst->type == IPA_JF_PASS_THROUGH)
+ dst->value.pass_through.agg_preserved = false;
+ else if (dst->type == IPA_JF_ANCESTOR)
+ dst->value.ancestor.agg_preserved = false;
+ }
}
else
dst->type = IPA_JF_UNKNOWN;
@@ -1815,6 +2109,35 @@ ipa_make_edge_direct_to_target (struct cgraph_edge *ie, tree target)
return ie;
}
+/* Retrieve value from aggregate jump function AGG for the given OFFSET or
+ return NULL if there is not any. BY_REF specifies whether the value has to
+ be passed by reference or by value. */
+
+tree
+ipa_find_agg_cst_for_param (struct ipa_agg_jump_function *agg,
+ HOST_WIDE_INT offset, bool by_ref)
+{
+ struct ipa_agg_jf_item *item;
+ int i;
+
+ if (by_ref != agg->by_ref)
+ return NULL;
+
+ FOR_EACH_VEC_ELT (ipa_agg_jf_item_t, agg->items, i, item)
+ {
+ if (item->offset == offset)
+ {
+ /* Currently we do not have clobber values, return NULL for them once
+ we do. */
+ gcc_checking_assert (is_gimple_ip_invariant (item->value));
+ return item->value;
+ }
+ else if (item->offset > offset)
+ return NULL;
+ }
+ return NULL;
+}
+
/* Try to find a destination for indirect edge IE that corresponds to a simple
call or a call of a member function pointer and where the destination is a
pointer formal parameter described by jump function JFUNC. If it can be
@@ -1826,13 +2149,20 @@ try_make_edge_direct_simple_call (struct cgraph_edge *ie,
{
tree target;
- if (jfunc->type == IPA_JF_CONST)
- target = ipa_get_jf_constant (jfunc);
- else if (jfunc->type == IPA_JF_CONST_MEMBER_PTR)
- target = ipa_get_jf_member_ptr_pfn (jfunc);
+ if (ie->indirect_info->agg_contents)
+ {
+ target = ipa_find_agg_cst_for_param (&jfunc->agg,
+ ie->indirect_info->offset,
+ ie->indirect_info->by_ref);
+ if (!target)
+ return NULL;
+ }
else
- return NULL;
-
+ {
+ if (jfunc->type != IPA_JF_CONST)
+ return NULL;
+ target = ipa_get_jf_constant (jfunc);
+ }
return ipa_make_edge_direct_to_target (ie, target);
}
@@ -1853,7 +2183,7 @@ try_make_edge_direct_virtual_call (struct cgraph_edge *ie,
binfo = TYPE_BINFO (ipa_get_jf_known_type_base_type (jfunc));
gcc_checking_assert (binfo);
binfo = get_binfo_at_offset (binfo, ipa_get_jf_known_type_offset (jfunc)
- + ie->indirect_info->anc_offset,
+ + ie->indirect_info->offset,
ie->indirect_info->otr_type);
if (binfo)
target = gimple_get_virt_method_for_binfo (ie->indirect_info->otr_token,
@@ -1889,6 +2219,7 @@ update_indirect_edges_after_inlining (struct cgraph_edge *cs,
{
struct cgraph_indirect_call_info *ici = ie->indirect_info;
struct ipa_jump_func *jfunc;
+ int param_index;
next_ie = ie->next_callee;
@@ -1902,14 +2233,27 @@ update_indirect_edges_after_inlining (struct cgraph_edge *cs,
continue;
}
- jfunc = ipa_get_ith_jump_func (top, ici->param_index);
+ param_index = ici->param_index;
+ jfunc = ipa_get_ith_jump_func (top, param_index);
if (jfunc->type == IPA_JF_PASS_THROUGH
&& ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
- ici->param_index = ipa_get_jf_pass_through_formal_id (jfunc);
+ {
+ if (ici->agg_contents
+ && !ipa_get_jf_pass_through_agg_preserved (jfunc))
+ ici->param_index = -1;
+ else
+ ici->param_index = ipa_get_jf_pass_through_formal_id (jfunc);
+ }
else if (jfunc->type == IPA_JF_ANCESTOR)
{
- ici->param_index = ipa_get_jf_ancestor_formal_id (jfunc);
- ici->anc_offset += ipa_get_jf_ancestor_offset (jfunc);
+ if (ici->agg_contents
+ && !ipa_get_jf_ancestor_agg_preserved (jfunc))
+ ici->param_index = -1;
+ else
+ {
+ ici->param_index = ipa_get_jf_ancestor_formal_id (jfunc);
+ ici->offset += ipa_get_jf_ancestor_offset (jfunc);
+ }
}
else
/* Either we can find a destination for this edge now or never. */
@@ -2077,13 +2421,14 @@ ipa_node_removal_hook (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED)
ipa_free_node_params_substructures (IPA_NODE_REF (node));
}
-/* Hook that is called by cgraph.c when a node is duplicated. */
+/* Hook that is called by cgraph.c when an edge is duplicated. */
static void
ipa_edge_duplication_hook (struct cgraph_edge *src, struct cgraph_edge *dst,
__attribute__((unused)) void *data)
{
struct ipa_edge_args *old_args, *new_args;
+ unsigned int i;
ipa_check_create_edge_args ();
@@ -2092,6 +2437,12 @@ ipa_edge_duplication_hook (struct cgraph_edge *src, struct cgraph_edge *dst,
new_args->jump_functions = VEC_copy (ipa_jump_func_t, gc,
old_args->jump_functions);
+
+ for (i = 0; i < VEC_length (ipa_jump_func_t, old_args->jump_functions); i++)
+ VEC_index (ipa_jump_func_t, new_args->jump_functions, i).agg.items
+ = VEC_copy (ipa_agg_jf_item_t, gc,
+ VEC_index (ipa_jump_func_t,
+ old_args->jump_functions, i).agg.items);
}
/* Hook that is called by cgraph.c when a node is duplicated. */
@@ -2321,7 +2672,7 @@ ipa_modify_formal_parameters (tree fndecl, ipa_parm_adjustment_vec adjustments,
struct ipa_parm_adjustment *adj;
gcc_assert (link);
- adj = VEC_index (ipa_parm_adjustment_t, adjustments, i);
+ adj = &VEC_index (ipa_parm_adjustment_t, adjustments, i);
parm = VEC_index (tree, oparms, adj->base_index);
adj->base = parm;
@@ -2358,8 +2709,6 @@ ipa_modify_formal_parameters (tree fndecl, ipa_parm_adjustment_vec adjustments,
DECL_IGNORED_P (new_parm) = 1;
layout_decl (new_parm, 0);
- add_referenced_var (new_parm);
- mark_sym_for_renaming (new_parm);
adj->base = parm;
adj->reduction = new_parm;
@@ -2389,8 +2738,8 @@ ipa_modify_formal_parameters (tree fndecl, ipa_parm_adjustment_vec adjustments,
When we are asked to remove it, we need to build new FUNCTION_TYPE
instead. */
if (TREE_CODE (orig_type) != METHOD_TYPE
- || (VEC_index (ipa_parm_adjustment_t, adjustments, 0)->copy_param
- && VEC_index (ipa_parm_adjustment_t, adjustments, 0)->base_index == 0))
+ || (VEC_index (ipa_parm_adjustment_t, adjustments, 0).copy_param
+ && VEC_index (ipa_parm_adjustment_t, adjustments, 0).base_index == 0))
{
new_type = build_distinct_type_copy (orig_type);
TYPE_ARG_TYPES (new_type) = new_reversed;
@@ -2457,7 +2806,7 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gimple stmt,
{
struct ipa_parm_adjustment *adj;
- adj = VEC_index (ipa_parm_adjustment_t, adjustments, i);
+ adj = &VEC_index (ipa_parm_adjustment_t, adjustments, i);
if (adj->copy_param)
{
@@ -2640,7 +2989,7 @@ index_in_adjustments_multiple_times_p (int base_index,
for (i = 0; i < len; i++)
{
struct ipa_parm_adjustment *adj;
- adj = VEC_index (ipa_parm_adjustment_t, adjustments, i);
+ adj = &VEC_index (ipa_parm_adjustment_t, adjustments, i);
if (adj->base_index == base_index)
{
@@ -2671,7 +3020,7 @@ ipa_combine_adjustments (ipa_parm_adjustment_vec inner,
for (i = 0; i < inlen; i++)
{
struct ipa_parm_adjustment *n;
- n = VEC_index (ipa_parm_adjustment_t, inner, i);
+ n = &VEC_index (ipa_parm_adjustment_t, inner, i);
if (n->remove_param)
removals++;
@@ -2683,10 +3032,10 @@ ipa_combine_adjustments (ipa_parm_adjustment_vec inner,
for (i = 0; i < outlen; i++)
{
struct ipa_parm_adjustment *r;
- struct ipa_parm_adjustment *out = VEC_index (ipa_parm_adjustment_t,
- outer, i);
- struct ipa_parm_adjustment *in = VEC_index (ipa_parm_adjustment_t, tmp,
- out->base_index);
+ struct ipa_parm_adjustment *out = &VEC_index (ipa_parm_adjustment_t,
+ outer, i);
+ struct ipa_parm_adjustment *in = &VEC_index (ipa_parm_adjustment_t, tmp,
+ out->base_index);
gcc_assert (!in->remove_param);
if (out->remove_param)
@@ -2719,8 +3068,8 @@ ipa_combine_adjustments (ipa_parm_adjustment_vec inner,
for (i = 0; i < inlen; i++)
{
- struct ipa_parm_adjustment *n = VEC_index (ipa_parm_adjustment_t,
- inner, i);
+ struct ipa_parm_adjustment *n = &VEC_index (ipa_parm_adjustment_t,
+ inner, i);
if (n->remove_param)
VEC_quick_push (ipa_parm_adjustment_t, adjustments, n);
@@ -2745,7 +3094,7 @@ ipa_dump_param_adjustments (FILE *file, ipa_parm_adjustment_vec adjustments,
for (i = 0; i < len; i++)
{
struct ipa_parm_adjustment *adj;
- adj = VEC_index (ipa_parm_adjustment_t, adjustments, i);
+ adj = &VEC_index (ipa_parm_adjustment_t, adjustments, i);
if (!first)
fprintf (file, " ");
@@ -2790,8 +3139,11 @@ static void
ipa_write_jump_function (struct output_block *ob,
struct ipa_jump_func *jump_func)
{
- streamer_write_uhwi (ob, jump_func->type);
+ struct ipa_agg_jf_item *item;
+ struct bitpack_d bp;
+ int i, count;
+ streamer_write_uhwi (ob, jump_func->type);
switch (jump_func->type)
{
case IPA_JF_UNKNOWN:
@@ -2808,16 +3160,33 @@ ipa_write_jump_function (struct output_block *ob,
stream_write_tree (ob, jump_func->value.pass_through.operand, true);
streamer_write_uhwi (ob, jump_func->value.pass_through.formal_id);
streamer_write_uhwi (ob, jump_func->value.pass_through.operation);
+ bp = bitpack_create (ob->main_stream);
+ bp_pack_value (&bp, jump_func->value.pass_through.agg_preserved, 1);
+ streamer_write_bitpack (&bp);
break;
case IPA_JF_ANCESTOR:
streamer_write_uhwi (ob, jump_func->value.ancestor.offset);
stream_write_tree (ob, jump_func->value.ancestor.type, true);
streamer_write_uhwi (ob, jump_func->value.ancestor.formal_id);
+ bp = bitpack_create (ob->main_stream);
+ bp_pack_value (&bp, jump_func->value.ancestor.agg_preserved, 1);
+ streamer_write_bitpack (&bp);
break;
- case IPA_JF_CONST_MEMBER_PTR:
- stream_write_tree (ob, jump_func->value.member_cst.pfn, true);
- stream_write_tree (ob, jump_func->value.member_cst.delta, false);
- break;
+ }
+
+ count = VEC_length (ipa_agg_jf_item_t, jump_func->agg.items);
+ streamer_write_uhwi (ob, count);
+ if (count)
+ {
+ bp = bitpack_create (ob->main_stream);
+ bp_pack_value (&bp, jump_func->agg.by_ref, 1);
+ streamer_write_bitpack (&bp);
+ }
+
+ FOR_EACH_VEC_ELT (ipa_agg_jf_item_t, jump_func->agg.items, i, item)
+ {
+ streamer_write_uhwi (ob, item->offset);
+ stream_write_tree (ob, item->value, true);
}
}
@@ -2828,8 +3197,10 @@ ipa_read_jump_function (struct lto_input_block *ib,
struct ipa_jump_func *jump_func,
struct data_in *data_in)
{
- jump_func->type = (enum jump_func_type) streamer_read_uhwi (ib);
+ struct bitpack_d bp;
+ int i, count;
+ jump_func->type = (enum jump_func_type) streamer_read_uhwi (ib);
switch (jump_func->type)
{
case IPA_JF_UNKNOWN:
@@ -2848,16 +3219,32 @@ ipa_read_jump_function (struct lto_input_block *ib,
jump_func->value.pass_through.formal_id = streamer_read_uhwi (ib);
jump_func->value.pass_through.operation
= (enum tree_code) streamer_read_uhwi (ib);
+ bp = streamer_read_bitpack (ib);
+ jump_func->value.pass_through.agg_preserved = bp_unpack_value (&bp, 1);
break;
case IPA_JF_ANCESTOR:
jump_func->value.ancestor.offset = streamer_read_uhwi (ib);
jump_func->value.ancestor.type = stream_read_tree (ib, data_in);
jump_func->value.ancestor.formal_id = streamer_read_uhwi (ib);
+ bp = streamer_read_bitpack (ib);
+ jump_func->value.ancestor.agg_preserved = bp_unpack_value (&bp, 1);
break;
- case IPA_JF_CONST_MEMBER_PTR:
- jump_func->value.member_cst.pfn = stream_read_tree (ib, data_in);
- jump_func->value.member_cst.delta = stream_read_tree (ib, data_in);
- break;
+ }
+
+ count = streamer_read_uhwi (ib);
+ jump_func->agg.items = VEC_alloc (ipa_agg_jf_item_t, gc, count);
+ if (count)
+ {
+ bp = streamer_read_bitpack (ib);
+ jump_func->agg.by_ref = bp_unpack_value (&bp, 1);
+ }
+ for (i = 0; i < count; i++)
+ {
+ struct ipa_agg_jf_item *item = VEC_quick_push (ipa_agg_jf_item_t,
+ jump_func->agg.items, NULL);
+
+ item->offset = streamer_read_uhwi (ib);
+ item->value = stream_read_tree (ib, data_in);
}
}
@@ -2872,9 +3259,11 @@ ipa_write_indirect_edge_info (struct output_block *ob,
struct bitpack_d bp;
streamer_write_hwi (ob, ii->param_index);
- streamer_write_hwi (ob, ii->anc_offset);
+ streamer_write_hwi (ob, ii->offset);
bp = bitpack_create (ob->main_stream);
bp_pack_value (&bp, ii->polymorphic, 1);
+ bp_pack_value (&bp, ii->agg_contents, 1);
+ bp_pack_value (&bp, ii->by_ref, 1);
streamer_write_bitpack (&bp);
if (ii->polymorphic)
@@ -2896,9 +3285,11 @@ ipa_read_indirect_edge_info (struct lto_input_block *ib,
struct bitpack_d bp;
ii->param_index = (int) streamer_read_hwi (ib);
- ii->anc_offset = (HOST_WIDE_INT) streamer_read_hwi (ib);
+ ii->offset = (HOST_WIDE_INT) streamer_read_hwi (ib);
bp = streamer_read_bitpack (ib);
ii->polymorphic = bp_unpack_value (&bp, 1);
+ ii->agg_contents = bp_unpack_value (&bp, 1);
+ ii->by_ref = bp_unpack_value (&bp, 1);
if (ii->polymorphic)
{
ii->otr_token = (HOST_WIDE_INT) streamer_read_hwi (ib);
@@ -2912,14 +3303,14 @@ static void
ipa_write_node_info (struct output_block *ob, struct cgraph_node *node)
{
int node_ref;
- lto_cgraph_encoder_t encoder;
+ lto_symtab_encoder_t encoder;
struct ipa_node_params *info = IPA_NODE_REF (node);
int j;
struct cgraph_edge *e;
struct bitpack_d bp;
- encoder = ob->decl_state->cgraph_node_encoder;
- node_ref = lto_cgraph_encoder_encode (encoder, node);
+ encoder = ob->decl_state->symtab_node_encoder;
+ node_ref = lto_symtab_encoder_encode (encoder, (symtab_node) node);
streamer_write_uhwi (ob, node_ref);
bp = bitpack_create (ob->main_stream);
@@ -3000,21 +3391,25 @@ ipa_read_node_info (struct lto_input_block *ib, struct cgraph_node *node,
/* Write jump functions for nodes in SET. */
void
-ipa_prop_write_jump_functions (cgraph_node_set set)
+ipa_prop_write_jump_functions (void)
{
struct cgraph_node *node;
struct output_block *ob;
unsigned int count = 0;
- cgraph_node_set_iterator csi;
+ lto_symtab_encoder_iterator lsei;
+ lto_symtab_encoder_t encoder;
+
if (!ipa_node_params_vector)
return;
ob = create_output_block (LTO_section_jump_functions);
+ encoder = ob->decl_state->symtab_node_encoder;
ob->cgraph_node = NULL;
- for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
+ lsei_next_function_in_partition (&lsei))
{
- node = csi_node (csi);
+ node = lsei_cgraph_node (lsei);
if (cgraph_function_with_gimple_body_p (node)
&& IPA_NODE_REF (node) != NULL)
count++;
@@ -3023,9 +3418,10 @@ ipa_prop_write_jump_functions (cgraph_node_set set)
streamer_write_uhwi (ob, count);
/* Process all of the functions. */
- for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
+ lsei_next_function_in_partition (&lsei))
{
- node = csi_node (csi);
+ node = lsei_cgraph_node (lsei);
if (cgraph_function_with_gimple_body_p (node)
&& IPA_NODE_REF (node) != NULL)
ipa_write_node_info (ob, node);
@@ -3063,11 +3459,11 @@ ipa_prop_read_section (struct lto_file_decl_data *file_data, const char *data,
{
unsigned int index;
struct cgraph_node *node;
- lto_cgraph_encoder_t encoder;
+ lto_symtab_encoder_t encoder;
index = streamer_read_uhwi (&ib_main);
- encoder = file_data->cgraph_node_encoder;
- node = lto_cgraph_encoder_deref (encoder, index);
+ encoder = file_data->symtab_node_encoder;
+ node = cgraph (lto_symtab_encoder_deref (encoder, index));
gcc_assert (node->analyzed);
ipa_read_node_info (&ib_main, node, data_in);
}
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
index 7faa3e1eec0..1fdd8333f01 100644
--- a/gcc/ipa-prop.h
+++ b/gcc/ipa-prop.h
@@ -44,10 +44,6 @@ along with GCC; see the file COPYING3. If not see
argument.
Unknown - neither of the above.
- IPA_JF_CONST_MEMBER_PTR stands for C++ member pointers, it is a special
- constant in this regard because it is in fact a structure consisting of two
- values. Other constants are represented with IPA_JF_CONST.
-
IPA_JF_ANCESTOR is a special pass-through jump function, which means that
the result is an address of a part of the object pointed to by the formal
parameter to which the function refers. It is mainly intended to represent
@@ -74,7 +70,6 @@ enum jump_func_type
IPA_JF_UNKNOWN = 0, /* newly allocated and zeroed jump functions default */
IPA_JF_KNOWN_TYPE, /* represented by field known_type */
IPA_JF_CONST, /* represented by field costant */
- IPA_JF_CONST_MEMBER_PTR, /* represented by field member_cst */
IPA_JF_PASS_THROUGH, /* represented by field pass_through */
IPA_JF_ANCESTOR /* represented by field ancestor */
};
@@ -104,6 +99,13 @@ struct GTY(()) ipa_pass_through_data
arithmetic operation where the caller's parameter is the first operand and
operand field from this structure is the second one. */
enum tree_code operation;
+ /* When the passed value is a pointer, it is set to true only when we are
+ certain that no write to the object it points to has occurred since the
+ caller functions started execution, except for changes noted in the
+ aggregate part of the jump function (see description of
+ ipa_agg_jump_function). The flag is used only when the operation is
+ NOP_EXPR. */
+ bool agg_preserved;
};
/* Structure holding data required to describe an ancestor pass-through
@@ -117,21 +119,56 @@ struct GTY(()) ipa_ancestor_jf_data
tree type;
/* Number of the caller's formal parameter being passed. */
int formal_id;
+ /* Flag with the same meaning like agg_preserve in ipa_pass_through_data. */
+ bool agg_preserved;
};
-/* Structure holding a C++ member pointer constant. Holds a pointer to the
- method and delta offset. */
-struct GTY(()) ipa_member_ptr_cst
+/* An element in an aggegate part of a jump function describing a known value
+ at a given offset. When it is part of a pass-through jump function with
+ agg_preserved set or an ancestor jump function with agg_preserved set, all
+ unlisted positions are assumed to be preserved but the value can be a type
+ node, which means that the particular piece (starting at offset and having
+ the size of the type) is clobbered with an unknown value. When
+ agg_preserved is false or the type of the containing jump function is
+ different, all unlisted parts are assumed to be unknown and all values must
+ fullfill is_gimple_ip_invariant. */
+
+typedef struct GTY(()) ipa_agg_jf_item
+{
+ /* The offset at which the known value is located within the aggregate. */
+ HOST_WIDE_INT offset;
+
+ /* The known constant or type if this is a clobber. */
+ tree value;
+} ipa_agg_jf_item_t;
+
+DEF_VEC_O (ipa_agg_jf_item_t);
+DEF_VEC_ALLOC_O (ipa_agg_jf_item_t, gc);
+
+/* Aggregate jump function - i.e. description of contents of aggregates passed
+ either by reference or value. */
+
+struct GTY(()) ipa_agg_jump_function
{
- tree pfn;
- tree delta;
+ /* Description of the individual items. */
+ VEC (ipa_agg_jf_item_t, gc) *items;
+ /* True if the data was passed by reference (as opposed to by value). */
+ bool by_ref;
};
+typedef struct ipa_agg_jump_function *ipa_agg_jump_function_p;
+DEF_VEC_P (ipa_agg_jump_function_p);
+DEF_VEC_ALLOC_P (ipa_agg_jump_function_p, heap);
+
/* A jump function for a callsite represents the values passed as actual
arguments of the callsite. See enum jump_func_type for the various
types of jump functions supported. */
typedef struct GTY (()) ipa_jump_func
{
+ /* Aggregate contants description. See struct ipa_agg_jump_function and its
+ description. */
+ struct ipa_agg_jump_function agg;
+
enum jump_func_type type;
/* Represents a value of a jump function. pass_through is used only in jump
function context. constant represents the actual constant in constant jump
@@ -140,7 +177,6 @@ typedef struct GTY (()) ipa_jump_func
{
struct ipa_known_type_data GTY ((tag ("IPA_JF_KNOWN_TYPE"))) known_type;
tree GTY ((tag ("IPA_JF_CONST"))) constant;
- struct ipa_member_ptr_cst GTY ((tag ("IPA_JF_CONST_MEMBER_PTR"))) member_cst;
struct ipa_pass_through_data GTY ((tag ("IPA_JF_PASS_THROUGH"))) pass_through;
struct ipa_ancestor_jf_data GTY ((tag ("IPA_JF_ANCESTOR"))) ancestor;
} GTY ((desc ("%1.type"))) value;
@@ -214,6 +250,15 @@ ipa_get_jf_pass_through_operation (struct ipa_jump_func *jfunc)
return jfunc->value.pass_through.operation;
}
+/* Return the agg_preserved flag of a pass through jump functin JFUNC. */
+
+static inline bool
+ipa_get_jf_pass_through_agg_preserved (struct ipa_jump_func *jfunc)
+{
+ gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
+ return jfunc->value.pass_through.agg_preserved;
+}
+
/* Return the offset of an ancestor jump function JFUNC. */
static inline HOST_WIDE_INT
@@ -242,13 +287,13 @@ ipa_get_jf_ancestor_formal_id (struct ipa_jump_func *jfunc)
return jfunc->value.ancestor.formal_id;
}
-/* Return the pfn part of a member pointer constant jump function JFUNC. */
+/* Return the agg_preserved flag of an ancestor jump functin JFUNC. */
-static inline tree
-ipa_get_jf_member_ptr_pfn (struct ipa_jump_func *jfunc)
+static inline bool
+ipa_get_jf_ancestor_agg_preserved (struct ipa_jump_func *jfunc)
{
- gcc_checking_assert (jfunc->type == IPA_JF_CONST_MEMBER_PTR);
- return jfunc->value.member_cst.pfn;
+ gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
+ return jfunc->value.ancestor.agg_preserved;
}
/* Summary describing a single formal parameter. */
@@ -314,7 +359,7 @@ ipa_get_param_count (struct ipa_node_params *info)
static inline tree
ipa_get_param (struct ipa_node_params *info, int i)
{
- return VEC_index (ipa_param_descriptor_t, info->descriptors, i)->decl;
+ return VEC_index (ipa_param_descriptor_t, info->descriptors, i).decl;
}
/* Set the used flag corresponding to the Ith formal parameter of the function
@@ -323,7 +368,7 @@ ipa_get_param (struct ipa_node_params *info, int i)
static inline void
ipa_set_param_used (struct ipa_node_params *info, int i, bool val)
{
- VEC_index (ipa_param_descriptor_t, info->descriptors, i)->used = val;
+ VEC_index (ipa_param_descriptor_t, info->descriptors, i).used = val;
}
/* Return the used flag corresponding to the Ith formal parameter of the
@@ -332,7 +377,7 @@ ipa_set_param_used (struct ipa_node_params *info, int i, bool val)
static inline bool
ipa_is_param_used (struct ipa_node_params *info, int i)
{
- return VEC_index (ipa_param_descriptor_t, info->descriptors, i)->used;
+ return VEC_index (ipa_param_descriptor_t, info->descriptors, i).used;
}
/* ipa_edge_args stores information related to a callsite and particularly its
@@ -361,7 +406,7 @@ ipa_get_cs_argument_count (struct ipa_edge_args *args)
static inline struct ipa_jump_func *
ipa_get_ith_jump_func (struct ipa_edge_args *args, int i)
{
- return VEC_index (ipa_jump_func_t, args->jump_functions, i);
+ return &VEC_index (ipa_jump_func_t, args->jump_functions, i);
}
/* Vectors need to have typedefs of structures. */
@@ -380,10 +425,10 @@ extern GTY(()) VEC (ipa_edge_args_t, gc) *ipa_edge_args_vector;
/* Return the associated parameter/argument info corresponding to the given
node/edge. */
-#define IPA_NODE_REF(NODE) (VEC_index (ipa_node_params_t, \
- ipa_node_params_vector, (NODE)->uid))
-#define IPA_EDGE_REF(EDGE) (VEC_index (ipa_edge_args_t, \
- ipa_edge_args_vector, (EDGE)->uid))
+#define IPA_NODE_REF(NODE) (&VEC_index (ipa_node_params_t, \
+ ipa_node_params_vector, (NODE)->uid))
+#define IPA_EDGE_REF(EDGE) (&VEC_index (ipa_edge_args_t, \
+ ipa_edge_args_vector, (EDGE)->uid))
/* This macro checks validity of index returned by
ipa_get_param_decl_index function. */
#define IS_VALID_JUMP_FUNC_INDEX(I) ((I) != -1)
@@ -449,13 +494,20 @@ bool ipa_propagate_indirect_call_infos (struct cgraph_edge *cs,
/* Indirect edge and binfo processing. */
tree ipa_get_indirect_edge_target (struct cgraph_edge *ie,
- VEC (tree, heap) *known_csts,
- VEC (tree, heap) *known_binfs);
+ VEC (tree, heap) *,
+ VEC (tree, heap) *,
+ VEC (ipa_agg_jump_function_p, heap) *);
struct cgraph_edge *ipa_make_edge_direct_to_target (struct cgraph_edge *, tree);
/* Functions related to both. */
void ipa_analyze_node (struct cgraph_node *);
+/* Aggregate jump function related functions. */
+tree ipa_find_agg_cst_for_param (struct ipa_agg_jump_function *, HOST_WIDE_INT,
+ bool);
+bool ipa_load_from_parm_agg (struct ipa_node_params *, gimple, tree, int *,
+ HOST_WIDE_INT *, bool *);
+
/* Debugging interface. */
void ipa_print_node_params (FILE *, struct cgraph_node *node);
void ipa_print_all_params (FILE *);
@@ -538,7 +590,7 @@ ipa_parm_adjustment_vec ipa_combine_adjustments (ipa_parm_adjustment_vec,
ipa_parm_adjustment_vec);
void ipa_dump_param_adjustments (FILE *, ipa_parm_adjustment_vec, tree);
-void ipa_prop_write_jump_functions (cgraph_node_set set);
+void ipa_prop_write_jump_functions (void);
void ipa_prop_read_jump_functions (void);
void ipa_update_after_lto_read (void);
int ipa_get_param_decl_index (struct ipa_node_params *, tree);
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 4cfd1368990..b6810a89bcb 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -47,7 +47,6 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "cgraph.h"
#include "flags.h"
-#include "timevar.h"
#include "diagnostic.h"
#include "gimple-pretty-print.h"
#include "langhooks.h"
@@ -187,7 +186,8 @@ void
warn_function_noreturn (tree decl)
{
static struct pointer_set_t *warned_about;
- if (!lang_hooks.missing_noreturn_ok_p (decl))
+ if (!lang_hooks.missing_noreturn_ok_p (decl)
+ && targetm.warn_func_return (decl))
warned_about
= suggest_attribute (OPT_Wsuggest_attribute_noreturn, decl,
true, warned_about, "noreturn");
@@ -802,7 +802,7 @@ end:
if (dump_file)
fprintf (dump_file, " can not prove finiteness of loop %i\n", loop->num);
l->looping =true;
- break;
+ FOR_EACH_LOOP_BREAK (li);
}
scev_finalize ();
}
@@ -935,18 +935,21 @@ generate_summary (void)
/* Serialize the ipa info for lto. */
static void
-pure_const_write_summary (cgraph_node_set set,
- varpool_node_set vset ATTRIBUTE_UNUSED)
+pure_const_write_summary (void)
{
struct cgraph_node *node;
struct lto_simple_output_block *ob
= lto_create_simple_output_block (LTO_section_ipa_pure_const);
unsigned int count = 0;
- cgraph_node_set_iterator csi;
+ lto_symtab_encoder_iterator lsei;
+ lto_symtab_encoder_t encoder;
+
+ encoder = lto_get_out_decl_state ()->symtab_node_encoder;
- for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
+ lsei_next_function_in_partition (&lsei))
{
- node = csi_node (csi);
+ node = lsei_cgraph_node (lsei);
if (node->analyzed && has_function_state (node))
count++;
}
@@ -954,20 +957,21 @@ pure_const_write_summary (cgraph_node_set set,
streamer_write_uhwi_stream (ob->main_stream, count);
/* Process all of the functions. */
- for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
+ lsei_next_function_in_partition (&lsei))
{
- node = csi_node (csi);
+ node = lsei_cgraph_node (lsei);
if (node->analyzed && has_function_state (node))
{
struct bitpack_d bp;
funct_state fs;
int node_ref;
- lto_cgraph_encoder_t encoder;
+ lto_symtab_encoder_t encoder;
fs = get_function_state (node);
- encoder = ob->decl_state->cgraph_node_encoder;
- node_ref = lto_cgraph_encoder_encode (encoder, node);
+ encoder = ob->decl_state->symtab_node_encoder;
+ node_ref = lto_symtab_encoder_encode (encoder, (symtab_node)node);
streamer_write_uhwi_stream (ob->main_stream, node_ref);
/* Note that flags will need to be read in the opposite
@@ -1015,12 +1019,12 @@ pure_const_read_summary (void)
struct cgraph_node *node;
struct bitpack_d bp;
funct_state fs;
- lto_cgraph_encoder_t encoder;
+ lto_symtab_encoder_t encoder;
fs = XCNEW (struct funct_state_d);
index = streamer_read_uhwi (ib);
- encoder = file_data->cgraph_node_encoder;
- node = lto_cgraph_encoder_deref (encoder, index);
+ encoder = file_data->symtab_node_encoder;
+ node = cgraph (lto_symtab_encoder_deref (encoder, index));
set_function_state (node, fs);
/* Note that the flags must be read in the opposite
diff --git a/gcc/ipa-ref-inline.h b/gcc/ipa-ref-inline.h
index 636af145789..575bba901ac 100644
--- a/gcc/ipa-ref-inline.h
+++ b/gcc/ipa-ref-inline.h
@@ -73,7 +73,7 @@ ipa_ref_list_first_reference (struct ipa_ref_list *list)
{
if (!VEC_length (ipa_ref_t, list->references))
return NULL;
- return VEC_index (ipa_ref_t, list->references, 0);
+ return &VEC_index (ipa_ref_t, list->references, 0);
}
/* Return first referring ref in LIST or NULL if empty. */
diff --git a/gcc/ipa-ref.c b/gcc/ipa-ref.c
index 7926eb6a7d6..21799ab3a15 100644
--- a/gcc/ipa-ref.c
+++ b/gcc/ipa-ref.c
@@ -49,7 +49,7 @@ ipa_record_reference (symtab_node referring_node,
old_references = list->references;
VEC_safe_grow (ipa_ref_t, gc, list->references,
VEC_length (ipa_ref_t, list->references) + 1);
- ref = VEC_last (ipa_ref_t, list->references);
+ ref = &VEC_last (ipa_ref_t, list->references);
list2 = &referred_node->symbol.ref_list;
VEC_safe_push (ipa_ref_ptr, heap, list2->referring, ref);
@@ -93,7 +93,7 @@ ipa_remove_reference (struct ipa_ref *ref)
}
VEC_pop (ipa_ref_ptr, list->referring);
- last = VEC_last (ipa_ref_t, list2->references);
+ last = &VEC_last (ipa_ref_t, list2->references);
if (ref != last)
{
*ref = *last;
@@ -111,7 +111,7 @@ void
ipa_remove_all_references (struct ipa_ref_list *list)
{
while (VEC_length (ipa_ref_t, list->references))
- ipa_remove_reference (VEC_last (ipa_ref_t, list->references));
+ ipa_remove_reference (&VEC_last (ipa_ref_t, list->references));
VEC_free (ipa_ref_t, gc, list->references);
list->references = NULL;
}
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index 33b265bca8d..0d2ef287576 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "cgraph.h"
#include "flags.h"
-#include "timevar.h"
#include "diagnostic.h"
#include "langhooks.h"
#include "data-streamer.h"
@@ -957,8 +956,7 @@ propagate (void)
static bool
write_node_summary_p (struct cgraph_node *node,
- cgraph_node_set set,
- varpool_node_set vset,
+ lto_symtab_encoder_t encoder,
bitmap ltrans_statics)
{
ipa_reference_optimization_summary_t info;
@@ -977,8 +975,8 @@ write_node_summary_p (struct cgraph_node *node,
In future we might also want to include summaries of functions references
by initializers of constant variables references in current unit. */
- if (!reachable_from_this_partition_p (node, set)
- && !referenced_from_this_partition_p (&node->symbol.ref_list, set, vset))
+ if (!reachable_from_this_partition_p (node, encoder)
+ && !referenced_from_this_partition_p (&node->symbol.ref_list, encoder))
return false;
/* See if the info has non-empty intersections with vars we want to encode. */
@@ -1026,27 +1024,30 @@ stream_out_bitmap (struct lto_simple_output_block *ob,
/* Serialize the ipa info for lto. */
static void
-ipa_reference_write_optimization_summary (cgraph_node_set set,
- varpool_node_set vset)
+ipa_reference_write_optimization_summary (void)
{
struct cgraph_node *node;
+ symtab_node snode;
struct lto_simple_output_block *ob
= lto_create_simple_output_block (LTO_section_ipa_reference);
unsigned int count = 0;
int ltrans_statics_bitcount = 0;
- lto_cgraph_encoder_t encoder = ob->decl_state->cgraph_node_encoder;
- lto_varpool_encoder_t varpool_encoder = ob->decl_state->varpool_node_encoder;
+ lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder;
bitmap ltrans_statics = BITMAP_ALLOC (NULL);
int i;
reference_vars_to_consider = splay_tree_new (splay_tree_compare_ints, 0, 0);
/* See what variables we are interested in. */
- for (i = 0; i < lto_varpool_encoder_size (varpool_encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- struct varpool_node *vnode = lto_varpool_encoder_deref (varpool_encoder, i);
+ struct varpool_node *vnode;
+ snode = lto_symtab_encoder_deref (encoder, i);
+ if (!symtab_variable_p (snode))
+ continue;
+ vnode = varpool (snode);
if (bitmap_bit_p (all_module_statics, DECL_UID (vnode->symbol.decl))
- && referenced_from_this_partition_p (&vnode->symbol.ref_list, set, vset))
+ && referenced_from_this_partition_p (&vnode->symbol.ref_list, encoder))
{
tree decl = vnode->symbol.decl;
bitmap_set_bit (ltrans_statics, DECL_UID (decl));
@@ -1058,9 +1059,10 @@ ipa_reference_write_optimization_summary (cgraph_node_set set,
if (ltrans_statics_bitcount)
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
- if (write_node_summary_p (lto_cgraph_encoder_deref (encoder, i),
- set, vset, ltrans_statics))
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
+ if (symtab_function_p (snode = lto_symtab_encoder_deref (encoder, i))
+ && write_node_summary_p (cgraph (snode),
+ encoder, ltrans_statics))
count++;
streamer_write_uhwi_stream (ob->main_stream, count);
@@ -1070,16 +1072,19 @@ ipa_reference_write_optimization_summary (cgraph_node_set set,
/* Process all of the functions. */
if (ltrans_statics_bitcount)
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
- if (write_node_summary_p (node, set, vset, ltrans_statics))
+ snode = lto_symtab_encoder_deref (encoder, i);
+ if (!symtab_function_p (snode))
+ continue;
+ node = cgraph (snode);
+ if (write_node_summary_p (node, encoder, ltrans_statics))
{
ipa_reference_optimization_summary_t info;
int node_ref;
info = get_reference_optimization_summary (node);
- node_ref = lto_cgraph_encoder_encode (encoder, node);
+ node_ref = lto_symtab_encoder_encode (encoder, (symtab_node) node);
streamer_write_uhwi_stream (ob->main_stream, node_ref);
stream_out_bitmap (ob, info->statics_not_read, ltrans_statics,
@@ -1145,11 +1150,11 @@ ipa_reference_read_optimization_summary (void)
struct cgraph_node *node;
ipa_reference_optimization_summary_t info;
int v_count;
- lto_cgraph_encoder_t encoder;
+ lto_symtab_encoder_t encoder;
index = streamer_read_uhwi (ib);
- encoder = file_data->cgraph_node_encoder;
- node = lto_cgraph_encoder_deref (encoder, index);
+ encoder = file_data->symtab_node_encoder;
+ node = cgraph (lto_symtab_encoder_deref (encoder, index));
info = XCNEW (struct ipa_reference_optimization_summary_d);
set_reference_optimization_summary (node, info);
info->statics_not_read = BITMAP_ALLOC (&optimization_summary_obstack);
diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c
index 1997f62538b..be1d2cce230 100644
--- a/gcc/ipa-split.c
+++ b/gcc/ipa-split.c
@@ -85,11 +85,9 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-pass.h"
#include "flags.h"
-#include "timevar.h"
#include "diagnostic.h"
#include "tree-dump.h"
#include "tree-inline.h"
-#include "fibheap.h"
#include "params.h"
#include "gimple-pretty-print.h"
#include "ipa-inline.h"
@@ -159,6 +157,7 @@ test_nonssa_use (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
to pretend that the value pointed to is actual result decl. */
if ((TREE_CODE (t) == MEM_REF || INDIRECT_REF_P (t))
&& TREE_CODE (TREE_OPERAND (t, 0)) == SSA_NAME
+ && SSA_NAME_VAR (TREE_OPERAND (t, 0))
&& TREE_CODE (SSA_NAME_VAR (TREE_OPERAND (t, 0))) == RESULT_DECL
&& DECL_BY_REFERENCE (DECL_RESULT (current_function_decl)))
return
@@ -259,7 +258,7 @@ verify_non_ssa_vars (struct split_point *current, bitmap non_ssa_vars,
gimple stmt = gsi_stmt (bsi);
tree op = gimple_phi_arg_def (stmt, e->dest_idx);
- if (!is_gimple_reg (gimple_phi_result (stmt)))
+ if (virtual_operand_p (gimple_phi_result (stmt)))
continue;
if (TREE_CODE (op) != SSA_NAME
&& test_nonssa_use (stmt, op, non_ssa_vars))
@@ -403,7 +402,7 @@ consider_split (struct split_point *current, bitmap non_ssa_vars,
gimple stmt = gsi_stmt (bsi);
tree val = NULL;
- if (!is_gimple_reg (gimple_phi_result (stmt)))
+ if (virtual_operand_p (gimple_phi_result (stmt)))
continue;
for (i = 0; i < gimple_phi_num_args (stmt); i++)
{
@@ -440,14 +439,17 @@ consider_split (struct split_point *current, bitmap non_ssa_vars,
return;
}
}
- else if (gimple_default_def (cfun, parm)
- && bitmap_bit_p (current->ssa_names_to_pass,
- SSA_NAME_VERSION (gimple_default_def
- (cfun, parm))))
+ else
{
- if (!VOID_TYPE_P (TREE_TYPE (parm)))
- call_overhead += estimate_move_cost (TREE_TYPE (parm));
- num_args++;
+ tree ddef = ssa_default_def (cfun, parm);
+ if (ddef
+ && bitmap_bit_p (current->ssa_names_to_pass,
+ SSA_NAME_VERSION (ddef)))
+ {
+ if (!VOID_TYPE_P (TREE_TYPE (parm)))
+ call_overhead += estimate_move_cost (TREE_TYPE (parm));
+ num_args++;
+ }
}
}
if (!VOID_TYPE_P (TREE_TYPE (current_function_decl)))
@@ -524,6 +526,7 @@ consider_split (struct split_point *current, bitmap non_ssa_vars,
/* Special case is value returned by reference we record as if it was non-ssa
set to result_decl. */
else if (TREE_CODE (retval) == SSA_NAME
+ && SSA_NAME_VAR (retval)
&& TREE_CODE (SSA_NAME_VAR (retval)) == RESULT_DECL
&& DECL_BY_REFERENCE (DECL_RESULT (current_function_decl)))
current->split_part_set_retval
@@ -550,7 +553,7 @@ consider_split (struct split_point *current, bitmap non_ssa_vars,
gimple_stmt_iterator psi;
for (psi = gsi_start_phis (return_bb); !gsi_end_p (psi); gsi_next (&psi))
- if (is_gimple_reg (gimple_phi_result (gsi_stmt (psi)))
+ if (!virtual_operand_p (gimple_phi_result (gsi_stmt (psi)))
&& !(retval
&& current->split_part_set_retval
&& TREE_CODE (retval) == SSA_NAME
@@ -697,6 +700,7 @@ mark_nonssa_use (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
to pretend that the value pointed to is actual result decl. */
if ((TREE_CODE (t) == MEM_REF || INDIRECT_REF_P (t))
&& TREE_CODE (TREE_OPERAND (t, 0)) == SSA_NAME
+ && SSA_NAME_VAR (TREE_OPERAND (t, 0))
&& TREE_CODE (SSA_NAME_VAR (TREE_OPERAND (t, 0))) == RESULT_DECL
&& DECL_BY_REFERENCE (DECL_RESULT (current_function_decl)))
return
@@ -800,9 +804,7 @@ visit_bb (basic_block bb, basic_block return_bb,
gimple stmt = gsi_stmt (bsi);
unsigned int i;
- if (is_gimple_debug (stmt))
- continue;
- if (!is_gimple_reg (gimple_phi_result (stmt)))
+ if (virtual_operand_p (gimple_phi_result (stmt)))
continue;
bitmap_set_bit (set_ssa_names,
SSA_NAME_VERSION (gimple_phi_result (stmt)));
@@ -826,9 +828,7 @@ visit_bb (basic_block bb, basic_block return_bb,
gimple stmt = gsi_stmt (bsi);
tree op = gimple_phi_arg_def (stmt, e->dest_idx);
- if (is_gimple_debug (stmt))
- continue;
- if (!is_gimple_reg (gimple_phi_result (stmt)))
+ if (virtual_operand_p (gimple_phi_result (stmt)))
continue;
if (TREE_CODE (op) == SSA_NAME)
bitmap_set_bit (used_ssa_names, SSA_NAME_VERSION (op));
@@ -917,7 +917,7 @@ find_split_points (int overall_time, int overall_size)
while (!VEC_empty (stack_entry, stack))
{
- stack_entry *entry = VEC_last (stack_entry, stack);
+ stack_entry *entry = &VEC_last (stack_entry, stack);
/* We are walking an acyclic graph, so edge_num counts
succ and pred edges together. However when considering
@@ -984,9 +984,9 @@ find_split_points (int overall_time, int overall_size)
new_entry.bb = dest;
new_entry.edge_num = 0;
new_entry.overall_time
- = VEC_index (bb_info, bb_info_vec, dest->index)->time;
+ = VEC_index (bb_info, bb_info_vec, dest->index).time;
new_entry.overall_size
- = VEC_index (bb_info, bb_info_vec, dest->index)->size;
+ = VEC_index (bb_info, bb_info_vec, dest->index).size;
new_entry.earliest = INT_MAX;
new_entry.set_ssa_names = BITMAP_ALLOC (NULL);
new_entry.used_ssa_names = BITMAP_ALLOC (NULL);
@@ -1006,8 +1006,8 @@ find_split_points (int overall_time, int overall_size)
and merge stuff we accumulate during the walk. */
else if (entry->bb != ENTRY_BLOCK_PTR)
{
- stack_entry *prev = VEC_index (stack_entry, stack,
- VEC_length (stack_entry, stack) - 2);
+ stack_entry *prev = &VEC_index (stack_entry, stack,
+ VEC_length (stack_entry, stack) - 2);
entry->bb->aux = (void *)(intptr_t)-1;
prev->can_split &= entry->can_split;
@@ -1058,7 +1058,7 @@ split_function (struct split_point *split_point)
bool split_part_return_p = false;
gimple last_stmt = NULL;
unsigned int i;
- tree arg;
+ tree arg, ddef;
if (dump_file)
{
@@ -1076,25 +1076,16 @@ split_function (struct split_point *split_point)
parm; parm = DECL_CHAIN (parm), num++)
if (args_to_skip
&& (!is_gimple_reg (parm)
- || !gimple_default_def (cfun, parm)
+ || (ddef = ssa_default_def (cfun, parm)) == NULL_TREE
|| !bitmap_bit_p (split_point->ssa_names_to_pass,
- SSA_NAME_VERSION (gimple_default_def (cfun,
- parm)))))
+ SSA_NAME_VERSION (ddef))))
bitmap_set_bit (args_to_skip, num);
else
{
/* This parm might not have been used up to now, but is going to be
used, hence register it. */
- add_referenced_var (parm);
if (is_gimple_reg (parm))
- {
- arg = gimple_default_def (cfun, parm);
- if (!arg)
- {
- arg = make_ssa_name (parm, gimple_build_nop ());
- set_default_def (parm, arg);
- }
- }
+ arg = get_or_create_ssa_default_def (cfun, parm);
else
arg = parm;
@@ -1163,7 +1154,7 @@ split_function (struct split_point *split_point)
for (gsi = gsi_start_phis (return_bb); !gsi_end_p (gsi);)
{
gimple stmt = gsi_stmt (gsi);
- if (is_gimple_reg (gimple_phi_result (stmt)))
+ if (!virtual_operand_p (gimple_phi_result (stmt)))
{
gsi_next (&gsi);
continue;
@@ -1239,6 +1230,7 @@ split_function (struct split_point *split_point)
}
call = gimple_build_call_vec (node->symbol.decl, args_to_pass);
gimple_set_block (call, DECL_INITIAL (current_function_decl));
+ VEC_free (tree, heap, args_to_pass);
/* We avoid address being taken on any variable used by split part,
so return slot optimization is always possible. Moreover this is
@@ -1275,12 +1267,12 @@ split_function (struct split_point *split_point)
if (TREE_CODE (retval) == SSA_NAME
&& !DECL_BY_REFERENCE (DECL_RESULT (current_function_decl)))
{
- retval = make_ssa_name (SSA_NAME_VAR (retval), call);
+ retval = copy_ssa_name (retval, call);
/* See if there is PHI defining return value. */
for (psi = gsi_start_phis (return_bb);
!gsi_end_p (psi); gsi_next (&psi))
- if (is_gimple_reg (gimple_phi_result (gsi_stmt (psi))))
+ if (!virtual_operand_p (gimple_phi_result (gsi_stmt (psi))))
break;
/* When there is PHI, just update its value. */
@@ -1359,19 +1351,7 @@ split_function (struct split_point *split_point)
assigned to RESULT_DECL (that is pointer to return value).
Look it up or create new one if it is missing. */
if (DECL_BY_REFERENCE (retval))
- {
- tree retval_name;
- if ((retval_name = gimple_default_def (cfun, retval))
- != NULL)
- retval = retval_name;
- else
- {
- retval_name = make_ssa_name (retval,
- gimple_build_nop ());
- set_default_def (retval, retval_name);
- retval = retval_name;
- }
- }
+ retval = get_or_create_ssa_default_def (cfun, retval);
/* Otherwise produce new SSA name for return value. */
else
retval = make_ssa_name (retval, call);
@@ -1417,7 +1397,7 @@ execute_split_functions (void)
}
/* This can be relaxed; function might become inlinable after splitting
away the uninlinable part. */
- if (!inline_summary (node)->inlinable)
+ if (inline_edge_summary_vec && !inline_summary (node)->inlinable)
{
if (dump_file)
fprintf (dump_file, "Not splitting: not inlinable.\n");
@@ -1510,8 +1490,8 @@ execute_split_functions (void)
}
overall_time += time;
overall_size += size;
- VEC_index (bb_info, bb_info_vec, bb->index)->time = time;
- VEC_index (bb_info, bb_info_vec, bb->index)->size = size;
+ VEC_index (bb_info, bb_info_vec, bb->index).time = time;
+ VEC_index (bb_info, bb_info_vec, bb->index).size = size;
}
find_split_points (overall_time, overall_size);
if (best_split_point.split_bbs)
diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c
index b83c87b96ad..bda19fe159e 100644
--- a/gcc/ipa-utils.c
+++ b/gcc/ipa-utils.c
@@ -25,7 +25,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tree-flow.h"
#include "tree-inline.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "langhooks.h"
#include "pointer-set.h"
#include "splay-tree.h"
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "cgraph.h"
#include "flags.h"
-#include "timevar.h"
#include "diagnostic.h"
#include "langhooks.h"
diff --git a/gcc/ipa.c b/gcc/ipa.c
index f5cce1ba41a..e2705918077 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -24,7 +24,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "cgraph.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "gimple.h"
#include "ggc.h"
#include "flags.h"
@@ -966,6 +965,34 @@ struct simple_ipa_opt_pass pass_ipa_function_and_variable_visibility =
}
};
+/* Free inline summary. */
+
+static unsigned
+free_inline_summary (void)
+{
+ inline_free_summary ();
+ return 0;
+}
+
+struct simple_ipa_opt_pass pass_ipa_free_inline_summary =
+{
+ {
+ SIMPLE_IPA_PASS,
+ "*free_inline_summary", /* name */
+ NULL, /* gate */
+ free_inline_summary, /* execute */
+ NULL, /* sub */
+ NULL, /* next */
+ 0, /* static_pass_number */
+ TV_IPA_FREE_INLINE_SUMMARY, /* tv_id */
+ 0, /* properties_required */
+ 0, /* properties_provided */
+ 0, /* properties_destroyed */
+ 0, /* todo_flags_start */
+ TODO_ggc_collect /* todo_flags_finish */
+ }
+};
+
/* Do not re-run on ltrans stage. */
static bool
diff --git a/gcc/ira-build.c b/gcc/ira-build.c
index d0d4495e07a..dba1d467ad7 100644
--- a/gcc/ira-build.c
+++ b/gcc/ira-build.c
@@ -1846,15 +1846,21 @@ loop_with_complex_edge_p (struct loop *loop)
edge_iterator ei;
edge e;
VEC (edge, heap) *edges;
+ bool res;
FOR_EACH_EDGE (e, ei, loop->header->preds)
if (e->flags & EDGE_EH)
return true;
edges = get_loop_exit_edges (loop);
+ res = false;
FOR_EACH_VEC_ELT (edge, edges, i, e)
if (e->flags & EDGE_COMPLEX)
- return true;
- return false;
+ {
+ res = true;
+ break;
+ }
+ VEC_free (edge, heap, edges);
+ return res;
}
#endif
diff --git a/gcc/ira-conflicts.c b/gcc/ira-conflicts.c
index a0d36094ed5..583629bf5a0 100644
--- a/gcc/ira-conflicts.c
+++ b/gcc/ira-conflicts.c
@@ -892,17 +892,12 @@ ira_build_conflicts (void)
for (i = 0; i < n; i++)
{
ira_object_t obj = ALLOCNO_OBJECT (a, i);
- reg_attrs *attrs = REG_ATTRS (regno_reg_rtx [ALLOCNO_REGNO (a)]);
- tree decl;
+ rtx allocno_reg = regno_reg_rtx [ALLOCNO_REGNO (a)];
if ((! flag_caller_saves && ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
/* For debugging purposes don't put user defined variables in
callee-clobbered registers. */
- || (optimize == 0
- && attrs != NULL
- && (decl = attrs->decl) != NULL
- && VAR_OR_FUNCTION_DECL_P (decl)
- && ! DECL_ARTIFICIAL (decl)))
+ || (optimize == 0 && REG_USERVAR_P (allocno_reg)))
{
IOR_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
call_used_reg_set);
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index c59b28c8a73..0c59b03ded2 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -652,7 +652,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
case 'E':
case 'F':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
|| (GET_CODE (op) == CONST_VECTOR
&& (GET_MODE_CLASS (GET_MODE (op))
== MODE_VECTOR_FLOAT)))
@@ -661,15 +661,13 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
case 'G':
case 'H':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, p))
win = 1;
break;
case 's':
- if (CONST_INT_P (op)
- || (GET_CODE (op) == CONST_DOUBLE
- && GET_MODE (op) == VOIDmode))
+ if (CONST_INT_P (op) || CONST_DOUBLE_AS_INT_P (op))
break;
case 'i':
@@ -679,9 +677,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
break;
case 'n':
- if (CONST_INT_P (op)
- || (GET_CODE (op) == CONST_DOUBLE
- && GET_MODE (op) == VOIDmode))
+ if (CONST_INT_P (op) || CONST_DOUBLE_AS_INT_P (op))
win = 1;
break;
diff --git a/gcc/ira-emit.c b/gcc/ira-emit.c
index a994a427d07..dbab5374173 100644
--- a/gcc/ira-emit.c
+++ b/gcc/ira-emit.c
@@ -82,8 +82,6 @@ along with GCC; see the file COPYING3. If not see
#include "expr.h"
#include "recog.h"
#include "params.h"
-#include "timevar.h"
-#include "tree-pass.h"
#include "reload.h"
#include "df.h"
#include "ira-int.h"
diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c
index 5eb13c1425d..0de1b81b73f 100644
--- a/gcc/ira-lives.c
+++ b/gcc/ira-lives.c
@@ -780,22 +780,21 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
case 'n':
if (CONST_INT_P (op)
- || (GET_CODE (op) == CONST_DOUBLE && GET_MODE (op) == VOIDmode)
+ || CONST_DOUBLE_AS_INT_P (op)
|| (equiv_const != NULL_RTX
&& (CONST_INT_P (equiv_const)
- || (GET_CODE (equiv_const) == CONST_DOUBLE
- && GET_MODE (equiv_const) == VOIDmode))))
+ || CONST_DOUBLE_AS_INT_P (equiv_const))))
return NO_REGS;
break;
case 's':
- if ((CONSTANT_P (op) && !CONST_INT_P (op)
- && (GET_CODE (op) != CONST_DOUBLE || GET_MODE (op) != VOIDmode))
+ if ((CONSTANT_P (op)
+ && !CONST_INT_P (op)
+ && !CONST_DOUBLE_AS_INT_P (op))
|| (equiv_const != NULL_RTX
&& CONSTANT_P (equiv_const)
&& !CONST_INT_P (equiv_const)
- && (GET_CODE (equiv_const) != CONST_DOUBLE
- || GET_MODE (equiv_const) != VOIDmode)))
+ && !CONST_DOUBLE_AS_INT_P (equiv_const)))
return NO_REGS;
break;
@@ -818,11 +817,11 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
case 'E':
case 'F':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
|| (GET_CODE (op) == CONST_VECTOR
&& GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_FLOAT)
|| (equiv_const != NULL_RTX
- && (GET_CODE (equiv_const) == CONST_DOUBLE
+ && (CONST_DOUBLE_AS_FLOAT_P (equiv_const)
|| (GET_CODE (equiv_const) == CONST_VECTOR
&& (GET_MODE_CLASS (GET_MODE (equiv_const))
== MODE_VECTOR_FLOAT)))))
@@ -831,10 +830,10 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
case 'G':
case 'H':
- if ((GET_CODE (op) == CONST_DOUBLE
+ if ((CONST_DOUBLE_AS_FLOAT_P (op)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, constraints))
|| (equiv_const != NULL_RTX
- && GET_CODE (equiv_const) == CONST_DOUBLE
+ && CONST_DOUBLE_AS_FLOAT_P (equiv_const)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (equiv_const,
c, constraints)))
return NO_REGS;
diff --git a/gcc/ira.c b/gcc/ira.c
index 43fb6084ca6..691614e8d5a 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -374,7 +374,6 @@ along with GCC; see the file COPYING3. If not see
#include "expr.h"
#include "recog.h"
#include "params.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "output.h"
#include "except.h"
@@ -2446,10 +2445,7 @@ equiv_init_varies_p (rtx x)
return !MEM_READONLY_P (x) || equiv_init_varies_p (XEXP (x, 0));
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
return 0;
@@ -2561,13 +2557,10 @@ contains_replace_regs (rtx x)
switch (code)
{
- case CONST_INT:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case PC:
case CC0:
case HIGH:
@@ -2609,13 +2602,10 @@ memref_referenced_p (rtx memref, rtx x)
switch (code)
{
- case CONST_INT:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case PC:
case CC0:
case HIGH:
@@ -2778,7 +2768,7 @@ update_equiv_regs (void)
a register can be set below its use. */
FOR_EACH_BB (bb)
{
- loop_depth = bb->loop_depth;
+ loop_depth = bb_loop_depth (bb);
for (insn = BB_HEAD (bb);
insn != NEXT_INSN (BB_END (bb));
@@ -3054,7 +3044,7 @@ update_equiv_regs (void)
basic block. */
FOR_EACH_BB_REVERSE (bb)
{
- loop_depth = bb->loop_depth;
+ loop_depth = bb_loop_depth (bb);
for (insn = BB_END (bb);
insn != PREV_INSN (BB_HEAD (bb));
insn = PREV_INSN (insn))
@@ -3252,7 +3242,7 @@ pseudo_for_reload_consideration_p (int regno)
initialization. ALLOCNUM need not be the regno of REG. */
static void
init_live_subregs (bool init_value, sbitmap *live_subregs,
- int *live_subregs_used, int allocnum, rtx reg)
+ bitmap live_subregs_used, int allocnum, rtx reg)
{
unsigned int regno = REGNO (SUBREG_REG (reg));
int size = GET_MODE_SIZE (GET_MODE (regno_reg_rtx[regno]));
@@ -3260,10 +3250,10 @@ init_live_subregs (bool init_value, sbitmap *live_subregs,
gcc_assert (size > 0);
/* Been there, done that. */
- if (live_subregs_used[allocnum])
+ if (bitmap_bit_p (live_subregs_used, allocnum))
return;
- /* Create a new one with zeros. */
+ /* Create a new one. */
if (live_subregs[allocnum] == NULL)
live_subregs[allocnum] = sbitmap_alloc (size);
@@ -3274,8 +3264,7 @@ init_live_subregs (bool init_value, sbitmap *live_subregs,
else
sbitmap_zero (live_subregs[allocnum]);
- /* Set the number of bits that we really want. */
- live_subregs_used[allocnum] = size;
+ bitmap_set_bit (live_subregs_used, allocnum);
}
/* Walk the insns of the current function and build reload_insn_chain,
@@ -3294,11 +3283,11 @@ build_insn_chain (void)
which hardregs are live in multiword pseudos. live_subregs and
live_subregs_used are indexed by pseudo number. The live_subreg
entry for a particular pseudo is only used if the corresponding
- element is non zero in live_subregs_used. The value in
- live_subregs_used is number of bytes that the pseudo can
+ element is non zero in live_subregs_used. The sbitmap size of
+ live_subreg[allocno] is number of bytes that the pseudo can
occupy. */
sbitmap *live_subregs = XCNEWVEC (sbitmap, max_regno);
- int *live_subregs_used = XNEWVEC (int, max_regno);
+ bitmap live_subregs_used = BITMAP_ALLOC (NULL);
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (TEST_HARD_REG_BIT (eliminable_regset, i))
@@ -3309,7 +3298,7 @@ build_insn_chain (void)
rtx insn;
CLEAR_REG_SET (live_relevant_regs);
- memset (live_subregs_used, 0, max_regno * sizeof (int));
+ bitmap_clear (live_subregs_used);
EXECUTE_IF_SET_IN_BITMAP (DF_LR_OUT (bb), 0, i, bi)
{
@@ -3394,8 +3383,8 @@ build_insn_chain (void)
}
/* Ignore the paradoxical bits. */
- if ((int)last > live_subregs_used[regno])
- last = live_subregs_used[regno];
+ if (last > SBITMAP_SIZE (live_subregs[regno]))
+ last = SBITMAP_SIZE (live_subregs[regno]);
while (start < last)
{
@@ -3405,7 +3394,7 @@ build_insn_chain (void)
if (sbitmap_empty_p (live_subregs[regno]))
{
- live_subregs_used[regno] = 0;
+ bitmap_clear_bit (live_subregs_used, regno);
bitmap_clear_bit (live_relevant_regs, regno);
}
else
@@ -3423,8 +3412,8 @@ build_insn_chain (void)
modeling the def as a killing def. */
if (!DF_REF_FLAGS_IS_SET (def, DF_REF_PARTIAL))
{
+ bitmap_clear_bit (live_subregs_used, regno);
bitmap_clear_bit (live_relevant_regs, regno);
- live_subregs_used[regno] = 0;
}
}
}
@@ -3480,8 +3469,8 @@ build_insn_chain (void)
live_subregs, live_subregs_used, regno, reg);
/* Ignore the paradoxical bits. */
- if ((int)last > live_subregs_used[regno])
- last = live_subregs_used[regno];
+ if (last > SBITMAP_SIZE (live_subregs[regno]))
+ last = SBITMAP_SIZE (live_subregs[regno]);
while (start < last)
{
@@ -3494,7 +3483,7 @@ build_insn_chain (void)
effectively saying do not use the subregs
because we are reading the whole
pseudo. */
- live_subregs_used[regno] = 0;
+ bitmap_clear_bit (live_subregs_used, regno);
bitmap_set_bit (live_relevant_regs, regno);
}
}
@@ -3537,14 +3526,14 @@ build_insn_chain (void)
}
}
- for (i = 0; i < (unsigned int) max_regno; i++)
- free (live_subregs[i]);
-
reload_insn_chain = c;
*p = NULL;
+ for (i = 0; i < (unsigned int) max_regno; i++)
+ if (live_subregs[i] != NULL)
+ sbitmap_free (live_subregs[i]);
free (live_subregs);
- free (live_subregs_used);
+ BITMAP_FREE (live_subregs_used);
BITMAP_FREE (live_relevant_regs);
BITMAP_FREE (elim_regset);
@@ -3568,10 +3557,7 @@ rtx_moveable_p (rtx *loc, enum op_type type)
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
return true;
@@ -4208,6 +4194,9 @@ ira (FILE *f)
allocated_reg_info_size = max_reg_num ();
+ if (delete_trivially_dead_insns (get_insns (), max_reg_num ()))
+ df_analyze ();
+
/* It is not worth to do such improvement when we use a simple
allocation because of -O0 usage or because the function is too
big. */
@@ -4290,9 +4279,6 @@ ira (FILE *f)
check_allocation ();
#endif
- if (delete_trivially_dead_insns (get_insns (), max_reg_num ()))
- df_analyze ();
-
if (max_regno != max_regno_before_ira)
{
regstat_free_n_sets_and_refs ();
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 6cece34294c..8fd18aaee2c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,35 @@
+2012-07-30 Laurynas Biveinis <laurynas.biveinis@gmail.com>
+
+ * jcf.h (CPool): Use the "atomic" GTY option for the tags field.
+ (bootstrap_method): Likewise for the bootstrap_arguments field.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * java-gimplify.c Include dumpfile.h instead of tree-dump.h
+ * Make-lang.in: Fix dependencies.
+
+2012-07-11 Steven Bosscher <steven@gcc.gnu.org>
+
+ * java-tree.h (force_evaluation_order): Remove prototype.
+ * expr.c (force_evaluation_order): Remove unused function.
+
+2012-07-11 Steven Bosscher <steven@gcc.gnu.org>
+
+ * decl.c: Do not include libfuncs.h.
+ * class.c: Do not include defaults.h.
+ * jvgenmain.c: Likewise.
+ * magnle.c: Likewise.
+ * Make-lang.in (decl.o): Fix dependencies.
+
+2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * verify.h: Do not include system.h and coretypes.h here.
+ * verify-impl.c: Include them here instead.
+
+2012-07-05 Uros Bizjak <ubizjak@gmail.com>
+
+ * jcf-io.c (read_zip_member): Initialize d_stream.
+
2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
* resource.c: Do not include output.h.
@@ -658,7 +690,7 @@
(predefined_filenames): Declare.
(add_predefined_file): Use it.
(predefined_filename_p): Likewise.
- (java_parse_file): Adjust for new type of current_file_list. *
+ (java_parse_file): Adjust for new type of current_file_list.
2010-05-25 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index 2339b0d7e6b..77de0d35979 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -282,7 +282,7 @@ java/constants.o: java/constants.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h \
toplev.h $(SYSTEM_H) coretypes.h $(TM_H) $(GGC_H) gt-java-constants.h
java/decl.o: java/decl.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h \
toplev.h $(FLAGS_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- libfuncs.h java/java-except.h $(GGC_H) $(REAL_H) gt-java-decl.h \
+ java/java-except.h $(GGC_H) $(REAL_H) gt-java-decl.h \
$(TARGET_H) $(CGRAPH_H) langhooks.h
java/except.o: java/except.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h $(REAL_H) \
java/javaop.h java/java-opcodes.h java/java-except.h \
@@ -321,7 +321,7 @@ java/verify-impl.o: java/verify-impl.c $(CONFIG_H) java/verify.h $(SYSTEM_H) \
java/zextract.o: java/zextract.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
java/zipfile.h
java/java-gimplify.o: java/java-gimplify.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(JAVA_TREE_H) $(GIMPLE_H)
+ coretypes.h dumpfile.h $(JAVA_TREE_H) $(GIMPLE_H)
# jcf-io.o needs $(ZLIBINC) added to cflags.
CFLAGS-java/jcf-io.o += $(ZLIBINC)
diff --git a/gcc/java/boehm.c b/gcc/java/boehm.c
index f4a9af61939..07dfb61b9aa 100644
--- a/gcc/java/boehm.c
+++ b/gcc/java/boehm.c
@@ -233,6 +233,6 @@ uses_jv_markobj_p (tree dtable)
this function is only used with flag_reduced_reflection. No
point in asserting unless we hit the bad case. */
gcc_assert (!flag_reduced_reflection || TARGET_VTABLE_USES_DESCRIPTORS == 0);
- v = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (dtable), 3)->value;
+ v = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (dtable), 3).value;
return (PROCEDURE_OBJECT_DESCRIPTOR == TREE_INT_CST_LOW (v));
}
diff --git a/gcc/java/class.c b/gcc/java/class.c
index bfc852959a7..f806cea1414 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -41,7 +41,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "cgraph.h"
#include "tree-iterator.h"
#include "vecprim.h"
-#include "tm.h" /* FIXME: For gcc_obstack_init from defaults.h. */
#include "target.h"
static tree make_method_value (tree);
@@ -1534,7 +1533,7 @@ make_method_value (tree mdecl)
v = VEC_alloc (constructor_elt, gc, length);
VEC_safe_grow_cleared (constructor_elt, gc, v, length);
- e = VEC_index (constructor_elt, v, idx--);
+ e = &VEC_index (constructor_elt, v, idx--);
e->value = null_pointer_node;
FOR_EACH_VEC_ELT (tree, DECL_FUNCTION_THROWS (mdecl), ix, t)
@@ -1543,7 +1542,7 @@ make_method_value (tree mdecl)
tree utf8
= build_utf8_ref (unmangle_classname (IDENTIFIER_POINTER (sig),
IDENTIFIER_LENGTH (sig)));
- e = VEC_index (constructor_elt, v, idx--);
+ e = &VEC_index (constructor_elt, v, idx--);
e->value = utf8;
}
gcc_assert (idx == -1);
@@ -1622,7 +1621,7 @@ get_dispatch_table (tree type, tree this_class_addr)
arraysize += 2;
VEC_safe_grow_cleared (constructor_elt, gc, v, arraysize);
- e = VEC_index (constructor_elt, v, arraysize - 1);
+ e = &VEC_index (constructor_elt, v, arraysize - 1);
#define CONSTRUCTOR_PREPEND_VALUE(E, V) E->value = V, E--
for (i = nvirtuals; --i >= 0; )
@@ -3008,7 +3007,7 @@ emit_catch_table (tree this_class)
int n_catch_classes;
constructor_elt *e;
/* Fill in the dummy entry that make_class created. */
- e = VEC_index (constructor_elt, TYPE_CATCH_CLASSES (this_class), 0);
+ e = &VEC_index (constructor_elt, TYPE_CATCH_CLASSES (this_class), 0);
e->value = make_catch_class_record (null_pointer_node, null_pointer_node);
CONSTRUCTOR_APPEND_ELT (TYPE_CATCH_CLASSES (this_class), NULL_TREE,
make_catch_class_record (null_pointer_node,
diff --git a/gcc/java/constants.c b/gcc/java/constants.c
index 2cc911f33bd..c709fa40a3c 100644
--- a/gcc/java/constants.c
+++ b/gcc/java/constants.c
@@ -514,8 +514,8 @@ build_constants_constructor (void)
int c = outgoing_cpool->count;
VEC_safe_grow_cleared (constructor_elt, gc, tags, c);
VEC_safe_grow_cleared (constructor_elt, gc, data, c);
- t = VEC_index (constructor_elt, tags, c-1);
- d = VEC_index (constructor_elt, data, c-1);
+ t = &VEC_index (constructor_elt, tags, c-1);
+ d = &VEC_index (constructor_elt, data, c-1);
}
#define CONSTRUCTOR_PREPEND_VALUE(E, V) E->value = V, E--
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 1e1db76dc3b..e22b0fd52ad 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -34,7 +34,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "flags.h"
#include "java-tree.h"
#include "jcf.h"
-#include "libfuncs.h"
#include "java-except.h"
#include "ggc.h"
#include "cgraph.h"
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index 5f9dddae686..0429c02ca34 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -3689,82 +3689,6 @@ maybe_adjust_start_pc (struct JCF *jcf, int code_offset,
return start_pc;
}
-/* Force the (direct) sub-operands of NODE to be evaluated in left-to-right
- order, as specified by Java Language Specification.
-
- The problem is that while expand_expr will evaluate its sub-operands in
- left-to-right order, for variables it will just return an rtx (i.e.
- an lvalue) for the variable (rather than an rvalue). So it is possible
- that a later sub-operand will change the register, and when the
- actual operation is done, it will use the new value, when it should
- have used the original value.
-
- We fix this by using save_expr. This forces the sub-operand to be
- copied into a fresh virtual register,
-
- For method invocation, we modify the arguments so that a
- left-to-right order evaluation is performed. Saved expressions
- will, in CALL_EXPR order, be reused when the call will be expanded.
-
- We also promote outgoing args if needed. */
-
-tree
-force_evaluation_order (tree node)
-{
- if (flag_syntax_only)
- return node;
- if (TREE_CODE (node) == CALL_EXPR
- || (TREE_CODE (node) == COMPOUND_EXPR
- && TREE_CODE (TREE_OPERAND (node, 0)) == CALL_EXPR
- && TREE_CODE (TREE_OPERAND (node, 1)) == SAVE_EXPR))
- {
- tree call, cmp;
- int i, nargs;
-
- /* Account for wrapped around ctors. */
- if (TREE_CODE (node) == COMPOUND_EXPR)
- call = TREE_OPERAND (node, 0);
- else
- call = node;
-
- nargs = call_expr_nargs (call);
-
- /* This reverses the evaluation order. This is a desired effect. */
- for (i = 0, cmp = NULL_TREE; i < nargs; i++)
- {
- tree arg = CALL_EXPR_ARG (call, i);
- /* Promote types smaller than integer. This is required by
- some ABIs. */
- tree type = TREE_TYPE (arg);
- tree saved;
- if (targetm.calls.promote_prototypes (type)
- && INTEGRAL_TYPE_P (type)
- && INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
- TYPE_SIZE (integer_type_node)))
- arg = fold_convert (integer_type_node, arg);
-
- saved = save_expr (force_evaluation_order (arg));
- cmp = (cmp == NULL_TREE ? saved :
- build2 (COMPOUND_EXPR, void_type_node, cmp, saved));
-
- CALL_EXPR_ARG (call, i) = saved;
- }
-
- if (cmp && TREE_CODE (cmp) == COMPOUND_EXPR)
- TREE_SIDE_EFFECTS (cmp) = 1;
-
- if (cmp)
- {
- cmp = build2 (COMPOUND_EXPR, TREE_TYPE (node), cmp, node);
- if (TREE_TYPE (cmp) != void_type_node)
- cmp = save_expr (cmp);
- TREE_SIDE_EFFECTS (cmp) = 1;
- node = cmp;
- }
- }
- return node;
-}
-
/* Build a node to represent empty statements and blocks. */
tree
diff --git a/gcc/java/java-gimplify.c b/gcc/java/java-gimplify.c
index 3def7223eed..05e69336db2 100644
--- a/gcc/java/java-gimplify.c
+++ b/gcc/java/java-gimplify.c
@@ -27,7 +27,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "coretypes.h"
#include "tree.h"
#include "java-tree.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "gimple.h"
static tree java_gimplify_block (tree);
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h
index 700132164ea..5167b9b75c5 100644
--- a/gcc/java/java-tree.h
+++ b/gcc/java/java-tree.h
@@ -1094,7 +1094,6 @@ extern int merge_type_state (tree);
extern int push_type_0 (tree);
extern void push_type (tree);
extern void add_interface (tree, tree);
-extern tree force_evaluation_order (tree);
extern tree java_create_object (tree);
extern int verify_constant_pool (struct JCF *);
extern void start_java_method (tree);
@@ -1431,7 +1430,7 @@ extern tree *type_map;
#define PUSH_SUPER_VALUE(V, VALUE) \
do \
{ \
- constructor_elt *_elt___ = VEC_last (constructor_elt, V); \
+ constructor_elt *_elt___ = &VEC_last (constructor_elt, V); \
tree _next___ = DECL_CHAIN (_elt___->index); \
gcc_assert (!DECL_NAME (_elt___->index)); \
_elt___->value = VALUE; \
@@ -1445,7 +1444,7 @@ extern tree *type_map;
#define PUSH_FIELD_VALUE(V, NAME, VALUE) \
do \
{ \
- constructor_elt *_elt___ = VEC_last (constructor_elt, V); \
+ constructor_elt *_elt___ = &VEC_last (constructor_elt, V); \
tree _next___ = DECL_CHAIN (_elt___->index); \
gcc_assert (strcmp (IDENTIFIER_POINTER (DECL_NAME (_elt___->index)), \
NAME) == 0); \
diff --git a/gcc/java/jcf-io.c b/gcc/java/jcf-io.c
index c50ec49ccc5..0fe30b30ca5 100644
--- a/gcc/java/jcf-io.c
+++ b/gcc/java/jcf-io.c
@@ -202,9 +202,7 @@ read_zip_member (JCF *jcf, ZipDirectory *zipd, ZipFile *zipf)
{
char *buffer;
z_stream d_stream; /* decompression stream */
- d_stream.zalloc = (alloc_func) 0;
- d_stream.zfree = (free_func) 0;
- d_stream.opaque = (voidpf) 0;
+ memset (&d_stream, 0, sizeof (d_stream));
jcf->buffer = XNEWVEC (unsigned char, zipd->uncompressed_size);
d_stream.next_out = jcf->buffer;
diff --git a/gcc/java/jcf.h b/gcc/java/jcf.h
index 40b4ae2d278..38c035fe439 100644
--- a/gcc/java/jcf.h
+++ b/gcc/java/jcf.h
@@ -82,7 +82,7 @@ typedef struct GTY(()) CPool {
/* The constant_pool_count. */
int count;
- uint8* GTY((length ("%h.count"))) tags;
+ uint8 * GTY((atomic)) tags;
union cpool_entry * GTY((length ("%h.count"),
desc ("cpool_entry_is_tree (%1.tags%a)"))) data;
@@ -91,7 +91,7 @@ typedef struct GTY(()) CPool {
typedef struct GTY(()) bootstrap_method {
unsigned method_ref;
unsigned num_arguments;
- unsigned* GTY((length ("%h.num_arguments"))) bootstrap_arguments;
+ unsigned * GTY((atomic)) bootstrap_arguments;
} bootstrap_method;
typedef struct GTY(()) BootstrapMethods {
diff --git a/gcc/java/jvgenmain.c b/gcc/java/jvgenmain.c
index db9b0597714..d6ca8717d70 100644
--- a/gcc/java/jvgenmain.c
+++ b/gcc/java/jvgenmain.c
@@ -33,7 +33,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "java-tree.h"
#include "intl.h"
#include "diagnostic.h"
-#include "tm.h" /* FIXME: For gcc_obstack_init from defaults.h. */
static char * do_mangle_classname (const char *string);
diff --git a/gcc/java/mangle.c b/gcc/java/mangle.c
index 48caf113e0f..6a74531c2d3 100644
--- a/gcc/java/mangle.c
+++ b/gcc/java/mangle.c
@@ -35,7 +35,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "diagnostic-core.h"
#include "ggc.h"
#include "langhooks-def.h"
-#include "tm.h" /* FIXME: For gcc_obstack_init from defaults.h. */
static void mangle_class_field (tree);
static void mangle_vtable (tree);
diff --git a/gcc/java/verify-impl.c b/gcc/java/verify-impl.c
index 1ca2d9fd66b..8841da1e3c7 100644
--- a/gcc/java/verify-impl.c
+++ b/gcc/java/verify-impl.c
@@ -13,6 +13,8 @@ details. */
/* #define VERIFY_DEBUG */
#include "config.h"
+#include "system.h"
+#include "coretypes.h"
#include "verify.h"
diff --git a/gcc/java/verify.h b/gcc/java/verify.h
index 8c3184447eb..d7e01ee2916 100644
--- a/gcc/java/verify.h
+++ b/gcc/java/verify.h
@@ -27,8 +27,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#ifndef GCC_VERIFY_H
#define GCC_VERIFY_H
-#include "system.h"
-#include "coretypes.h"
#include "jcf.h"
#include "tree.h"
#include "java-tree.h"
diff --git a/gcc/jump.c b/gcc/jump.c
index f5f644999d6..c4f674972b8 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "reload.h"
#include "predict.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "target.h"
@@ -1079,8 +1078,6 @@ mark_jump_label_1 (rtx x, rtx insn, bool in_mem, bool is_target)
case PC:
case CC0:
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
case CLOBBER:
case CALL:
return;
@@ -1260,9 +1257,9 @@ delete_related_insns (rtx insn)
&& GET_CODE (PATTERN (insn)) == SEQUENCE
&& CALL_P (XVECEXP (PATTERN (insn), 0, 0))))
{
- rtx p = insn;
+ rtx p;
- for (p = NEXT_INSN (p);
+ for (p = next && INSN_DELETED_P (next) ? NEXT_INSN (next) : next;
p && NOTE_P (p);
p = NEXT_INSN (p))
if (NOTE_KIND (p) == NOTE_INSN_CALL_ARG_LOCATION)
@@ -1754,8 +1751,7 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
case CC0:
case ADDR_VEC:
case ADDR_DIFF_VEC:
- case CONST_INT:
- case CONST_DOUBLE:
+ CASE_CONST_UNIQUE:
return 0;
case LABEL_REF:
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index a34733f13b3..a9e60f9ea68 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -472,7 +472,7 @@ lhd_print_error_function (diagnostic_context *context, const char *file,
}
diagnostic_set_last_function (context, diagnostic);
- pp_flush (context->printer);
+ pp_newline_and_flush (context->printer);
context->printer->prefix = old_prefix;
free ((char*) new_prefix);
}
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
index 76b1fe26013..a9190672920 100644
--- a/gcc/langhooks.h
+++ b/gcc/langhooks.h
@@ -21,7 +21,7 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_LANG_HOOKS_H
#define GCC_LANG_HOOKS_H
-/* This file should be #include-d after tree.h. */
+/* FIXME: This file should be #include-d after tree.h (for enum tree_code). */
struct diagnostic_info;
diff --git a/gcc/lcm.c b/gcc/lcm.c
index 2a61a51ac38..fec2ba45d30 100644
--- a/gcc/lcm.c
+++ b/gcc/lcm.c
@@ -63,10 +63,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "function.h"
#include "sbitmap.h"
-
-/* We want target macros for the mode switching code to be able to refer
- to instruction attribute values. */
-#include "insn-attr.h"
+#include "dumpfile.h"
/* Edge based LCM routines. */
static void compute_antinout_edge (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
@@ -148,7 +145,7 @@ compute_antinout_edge (sbitmap *antloc, sbitmap *transp, sbitmap *antin,
/* Clear the aux field of this block so that it can be added to
the worklist again if necessary. */
bb->aux = NULL;
- sbitmap_intersection_of_succs (antout[bb->index], antin, bb->index);
+ sbitmap_intersection_of_succs (antout[bb->index], antin, bb);
}
if (sbitmap_a_or_b_and_c_cg (antin[bb->index], antloc[bb->index],
@@ -529,7 +526,7 @@ compute_available (sbitmap *avloc, sbitmap *kill, sbitmap *avout,
/* Clear the aux field of this block so that it can be added to
the worklist again if necessary. */
bb->aux = NULL;
- sbitmap_intersection_of_preds (avin[bb->index], avout, bb->index);
+ sbitmap_intersection_of_preds (avin[bb->index], avout, bb);
}
if (sbitmap_union_of_diff_cg (avout[bb->index], avloc[bb->index],
diff --git a/gcc/libfuncs.h b/gcc/libfuncs.h
index b01aed3b9d3..262e10fbcee 100644
--- a/gcc/libfuncs.h
+++ b/gcc/libfuncs.h
@@ -1,5 +1,5 @@
/* Definitions for code generation pass of GNU compiler.
- Copyright (C) 2001, 2004, 2007, 2008, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -47,12 +47,16 @@ enum libfunc_index
LTI_MAX
};
-/* Information about an optab-related libfunc. We use the same hashtable
- for normal optabs and conversion optabs. In the first case mode2
- is unused. */
+/* Information about an optab-related libfunc. The op field is logically
+ an enum optab_d, and the mode fields are logically enum machine_mode.
+ However, in the absence of forward-declared enums, there's no practical
+ benefit of pulling in the defining headers.
+
+ We use the same hashtable for normal optabs and conversion optabs. In
+ the first case mode2 is forced to VOIDmode. */
+
struct GTY(()) libfunc_entry {
- size_t optab;
- enum machine_mode mode1, mode2;
+ int op, mode1, mode2;
rtx libfunc;
};
diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c
index 4ace1748358..39e6ca92734 100644
--- a/gcc/loop-doloop.c
+++ b/gcc/loop-doloop.c
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "params.h"
#include "target.h"
+#include "dumpfile.h"
/* This module is used to modify loops with a determinable number of
iterations to use special low-overhead looping instructions.
diff --git a/gcc/loop-init.c b/gcc/loop-init.c
index ee3d80c9479..438c66e0400 100644
--- a/gcc/loop-init.c
+++ b/gcc/loop-init.c
@@ -23,12 +23,11 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
-#include "hard-reg-set.h"
+#include "regs.h"
#include "obstack.h"
#include "basic-block.h"
#include "cfgloop.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "flags.h"
#include "df.h"
#include "ggc.h"
@@ -41,6 +40,7 @@ along with GCC; see the file COPYING3. If not see
void
loop_optimizer_init (unsigned flags)
{
+ timevar_push (TV_LOOP_INIT);
if (!current_loops)
{
struct loops *loops = ggc_alloc_cleared_loops ();
@@ -105,6 +105,8 @@ loop_optimizer_init (unsigned flags)
#ifdef ENABLE_CHECKING
verify_loop_structure ();
#endif
+
+ timevar_pop (TV_LOOP_INIT);
}
/* Finalize loop structures. */
@@ -116,6 +118,8 @@ loop_optimizer_finalize (void)
struct loop *loop;
basic_block bb;
+ timevar_push (TV_LOOP_FINI);
+
if (loops_state_satisfies_p (LOOPS_HAVE_RECORDED_EXITS))
release_recorded_exits ();
@@ -129,7 +133,7 @@ loop_optimizer_finalize (void)
| LOOPS_HAVE_PREHEADERS
| LOOPS_HAVE_SIMPLE_LATCHES
| LOOPS_HAVE_FALLTHRU_PREHEADERS);
- return;
+ goto loop_fini_done;
}
gcc_assert (current_loops != NULL);
@@ -148,6 +152,9 @@ loop_optimizer_finalize (void)
{
bb->loop_father = NULL;
}
+
+loop_fini_done:
+ timevar_pop (TV_LOOP_FINI);
}
@@ -204,7 +211,10 @@ rtl_loop_init (void)
gcc_assert (current_ir_type () == IR_RTL_CFGLAYOUT);
if (dump_file)
- dump_flow_info (dump_file, dump_flags);
+ {
+ dump_reg_info (dump_file);
+ dump_flow_info (dump_file, dump_flags);
+ }
loop_optimizer_init (LOOPS_NORMAL);
return 0;
@@ -242,7 +252,10 @@ rtl_loop_done (void)
cleanup_cfg (0);
if (dump_file)
- dump_flow_info (dump_file, dump_flags);
+ {
+ dump_reg_info (dump_file);
+ dump_flow_info (dump_file, dump_flags);
+ }
return 0;
}
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c
index f8405dde268..4cc1ea6f0cc 100644
--- a/gcc/loop-invariant.c
+++ b/gcc/loop-invariant.c
@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. If not see
#include "params.h"
#include "regs.h"
#include "ira.h"
+#include "dumpfile.h"
/* The data stored for the loop. */
@@ -202,9 +203,7 @@ check_maybe_invariant (rtx x)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -301,9 +300,7 @@ hash_invariant_expr_1 (rtx insn, rtx x)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -362,9 +359,7 @@ invariant_expr_equal_p (rtx insn1, rtx e1, rtx insn2, rtx e2)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -674,7 +669,7 @@ find_defs (struct loop *loop, basic_block *body)
{
df_dump_region (dump_file);
fprintf (dump_file, "*****starting processing of loop ******\n");
- print_rtl_with_bb (dump_file, get_insns ());
+ print_rtl_with_bb (dump_file, get_insns (), dump_flags);
fprintf (dump_file, "*****ending processing of loop ******\n");
}
check_invariant_table_size ();
diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c
index cdcd303d4fd..d31f0fa242d 100644
--- a/gcc/loop-iv.c
+++ b/gcc/loop-iv.c
@@ -62,6 +62,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "df.h"
#include "hashtab.h"
+#include "dumpfile.h"
/* Possible return values of iv_get_reaching_def. */
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c
index 139ccee6702..a09192597dd 100644
--- a/gcc/loop-unroll.c
+++ b/gcc/loop-unroll.c
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see
#include "hashtab.h"
#include "recog.h"
#include "target.h"
+#include "dumpfile.h"
/* This pass performs loop unrolling and peeling. We only perform these
optimizations on innermost loops (with single exception) because
diff --git a/gcc/loop-unswitch.c b/gcc/loop-unswitch.c
index 041a117df37..a9089a66cdf 100644
--- a/gcc/loop-unswitch.c
+++ b/gcc/loop-unswitch.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "params.h"
#include "expr.h"
+#include "dumpfile.h"
/* This pass moves constant conditions out of loops, duplicating the loop
in progress, i.e. this code:
diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c
index 13442064c52..dfc3954e768 100644
--- a/gcc/lower-subreg.c
+++ b/gcc/lower-subreg.c
@@ -27,7 +27,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "rtl.h"
#include "tm_p.h"
-#include "timevar.h"
#include "flags.h"
#include "insn-config.h"
#include "obstack.h"
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c
index c349709989d..c08d0998779 100644
--- a/gcc/lto-cgraph.c
+++ b/gcc/lto-cgraph.c
@@ -46,9 +46,8 @@ along with GCC; see the file COPYING3. If not see
#include "tree-streamer.h"
#include "gcov-io.h"
-static void output_varpool (cgraph_node_set, varpool_node_set);
-static void output_cgraph_opt_summary (cgraph_node_set set);
-static void input_cgraph_opt_summary (VEC (cgraph_node_ptr, heap) * nodes);
+static void output_cgraph_opt_summary (void);
+static void input_cgraph_opt_summary (VEC (symtab_node, heap) * nodes);
/* Number of LDPR values known to GCC. */
#define LDPR_NUM_KNOWN (LDPR_PREVAILING_DEF_IRONLY_EXP + 1)
@@ -58,29 +57,32 @@ static int order_base;
/* Cgraph streaming is organized as set of record whose type
is indicated by a tag. */
-enum LTO_cgraph_tags
+enum LTO_symtab_tags
{
/* Must leave 0 for the stopper. */
/* Cgraph node without body available. */
- LTO_cgraph_unavail_node = 1,
+ LTO_symtab_unavail_node = 1,
/* Cgraph node with function body. */
- LTO_cgraph_analyzed_node,
+ LTO_symtab_analyzed_node,
/* Cgraph edges. */
- LTO_cgraph_edge,
- LTO_cgraph_indirect_edge,
- LTO_cgraph_last_tag
+ LTO_symtab_edge,
+ LTO_symtab_indirect_edge,
+ LTO_symtab_variable,
+ LTO_symtab_last_tag
};
-/* Create a new cgraph encoder. */
+/* Create a new symtab encoder. */
-lto_cgraph_encoder_t
-lto_cgraph_encoder_new (void)
+lto_symtab_encoder_t
+lto_symtab_encoder_new (void)
{
- lto_cgraph_encoder_t encoder = XCNEW (struct lto_cgraph_encoder_d);
+ lto_symtab_encoder_t encoder = XCNEW (struct lto_symtab_encoder_d);
encoder->map = pointer_map_create ();
encoder->nodes = NULL;
encoder->body = pointer_set_create ();
+ encoder->initializer = pointer_set_create ();
+ encoder->in_partition = pointer_set_create ();
return encoder;
}
@@ -88,22 +90,24 @@ lto_cgraph_encoder_new (void)
/* Delete ENCODER and its components. */
void
-lto_cgraph_encoder_delete (lto_cgraph_encoder_t encoder)
+lto_symtab_encoder_delete (lto_symtab_encoder_t encoder)
{
- VEC_free (cgraph_node_ptr, heap, encoder->nodes);
+ VEC_free (symtab_node, heap, encoder->nodes);
pointer_map_destroy (encoder->map);
pointer_set_destroy (encoder->body);
+ pointer_set_destroy (encoder->initializer);
+ pointer_set_destroy (encoder->in_partition);
free (encoder);
}
-/* Return the existing reference number of NODE in the cgraph encoder in
+/* Return the existing reference number of NODE in the symtab encoder in
output block OB. Assign a new reference if this is the first time
NODE is encoded. */
int
-lto_cgraph_encoder_encode (lto_cgraph_encoder_t encoder,
- struct cgraph_node *node)
+lto_symtab_encoder_encode (lto_symtab_encoder_t encoder,
+ symtab_node node)
{
int ref;
void **slot;
@@ -111,10 +115,10 @@ lto_cgraph_encoder_encode (lto_cgraph_encoder_t encoder,
slot = pointer_map_contains (encoder->map, node);
if (!slot)
{
- ref = VEC_length (cgraph_node_ptr, encoder->nodes);
+ ref = VEC_length (symtab_node, encoder->nodes);
slot = pointer_map_insert (encoder->map, node);
*slot = (void *) (intptr_t) ref;
- VEC_safe_push (cgraph_node_ptr, heap, encoder->nodes, node);
+ VEC_safe_push (symtab_node, heap, encoder->nodes, node);
}
else
ref = (int) (intptr_t) *slot;
@@ -122,36 +126,23 @@ lto_cgraph_encoder_encode (lto_cgraph_encoder_t encoder,
return ref;
}
-#define LCC_NOT_FOUND (-1)
/* Look up NODE in encoder. Return NODE's reference if it has been encoded
or LCC_NOT_FOUND if it is not there. */
int
-lto_cgraph_encoder_lookup (lto_cgraph_encoder_t encoder,
- struct cgraph_node *node)
+lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder,
+ symtab_node node)
{
void **slot = pointer_map_contains (encoder->map, node);
return (slot ? (int) (intptr_t) *slot : LCC_NOT_FOUND);
}
-/* Return the cgraph node corresponding to REF using ENCODER. */
-
-struct cgraph_node *
-lto_cgraph_encoder_deref (lto_cgraph_encoder_t encoder, int ref)
-{
- if (ref == LCC_NOT_FOUND)
- return NULL;
-
- return VEC_index (cgraph_node_ptr, encoder->nodes, ref);
-}
-
-
/* Return TRUE if we should encode initializer of NODE (if any). */
bool
-lto_cgraph_encoder_encode_body_p (lto_cgraph_encoder_t encoder,
+lto_symtab_encoder_encode_body_p (lto_symtab_encoder_t encoder,
struct cgraph_node *node)
{
return pointer_set_contains (encoder->body, node);
@@ -160,128 +151,73 @@ lto_cgraph_encoder_encode_body_p (lto_cgraph_encoder_t encoder,
/* Return TRUE if we should encode body of NODE (if any). */
static void
-lto_set_cgraph_encoder_encode_body (lto_cgraph_encoder_t encoder,
+lto_set_symtab_encoder_encode_body (lto_symtab_encoder_t encoder,
struct cgraph_node *node)
{
pointer_set_insert (encoder->body, node);
}
-/* Create a new varpool encoder. */
-
-lto_varpool_encoder_t
-lto_varpool_encoder_new (void)
-{
- lto_varpool_encoder_t encoder = XCNEW (struct lto_varpool_encoder_d);
- encoder->map = pointer_map_create ();
- encoder->initializer = pointer_set_create ();
- encoder->nodes = NULL;
- return encoder;
-}
-
-
-/* Delete ENCODER and its components. */
-
-void
-lto_varpool_encoder_delete (lto_varpool_encoder_t encoder)
-{
- VEC_free (varpool_node_ptr, heap, encoder->nodes);
- pointer_map_destroy (encoder->map);
- pointer_set_destroy (encoder->initializer);
- free (encoder);
-}
-
-
-/* Return the existing reference number of NODE in the varpool encoder in
- output block OB. Assign a new reference if this is the first time
- NODE is encoded. */
-
-int
-lto_varpool_encoder_encode (lto_varpool_encoder_t encoder,
- struct varpool_node *node)
-{
- int ref;
- void **slot;
-
- slot = pointer_map_contains (encoder->map, node);
- if (!slot)
- {
- ref = VEC_length (varpool_node_ptr, encoder->nodes);
- slot = pointer_map_insert (encoder->map, node);
- *slot = (void *) (intptr_t) ref;
- VEC_safe_push (varpool_node_ptr, heap, encoder->nodes, node);
- }
- else
- ref = (int) (intptr_t) *slot;
-
- return ref;
-}
-
-/* Look up NODE in encoder. Return NODE's reference if it has been encoded
- or LCC_NOT_FOUND if it is not there. */
+/* Return TRUE if we should encode initializer of NODE (if any). */
-int
-lto_varpool_encoder_lookup (lto_varpool_encoder_t encoder,
- struct varpool_node *node)
+bool
+lto_symtab_encoder_encode_initializer_p (lto_symtab_encoder_t encoder,
+ struct varpool_node *node)
{
- void **slot = pointer_map_contains (encoder->map, node);
- return (slot ? (int) (intptr_t) *slot : LCC_NOT_FOUND);
+ return pointer_set_contains (encoder->initializer, node);
}
+/* Return TRUE if we should encode initializer of NODE (if any). */
-/* Return the varpool node corresponding to REF using ENCODER. */
-
-struct varpool_node *
-lto_varpool_encoder_deref (lto_varpool_encoder_t encoder, int ref)
+static void
+lto_set_symtab_encoder_encode_initializer (lto_symtab_encoder_t encoder,
+ struct varpool_node *node)
{
- if (ref == LCC_NOT_FOUND)
- return NULL;
-
- return VEC_index (varpool_node_ptr, encoder->nodes, ref);
+ pointer_set_insert (encoder->initializer, node);
}
-
/* Return TRUE if we should encode initializer of NODE (if any). */
bool
-lto_varpool_encoder_encode_initializer_p (lto_varpool_encoder_t encoder,
- struct varpool_node *node)
+lto_symtab_encoder_in_partition_p (lto_symtab_encoder_t encoder,
+ symtab_node node)
{
- return pointer_set_contains (encoder->initializer, node);
+ return pointer_set_contains (encoder->in_partition, node);
}
-/* Return TRUE if we should encode initializer of NODE (if any). */
+/* Return TRUE if we should encode body of NODE (if any). */
-static void
-lto_set_varpool_encoder_encode_initializer (lto_varpool_encoder_t encoder,
- struct varpool_node *node)
+void
+lto_set_symtab_encoder_in_partition (lto_symtab_encoder_t encoder,
+ symtab_node node)
{
- pointer_set_insert (encoder->initializer, node);
+ lto_symtab_encoder_encode (encoder, (symtab_node)node);
+ pointer_set_insert (encoder->in_partition, node);
}
/* Output the cgraph EDGE to OB using ENCODER. */
static void
lto_output_edge (struct lto_simple_output_block *ob, struct cgraph_edge *edge,
- lto_cgraph_encoder_t encoder)
+ lto_symtab_encoder_t encoder)
{
unsigned int uid;
intptr_t ref;
struct bitpack_d bp;
if (edge->indirect_unknown_callee)
- streamer_write_enum (ob->main_stream, LTO_cgraph_tags, LTO_cgraph_last_tag,
- LTO_cgraph_indirect_edge);
+ streamer_write_enum (ob->main_stream, LTO_symtab_tags, LTO_symtab_last_tag,
+ LTO_symtab_indirect_edge);
else
- streamer_write_enum (ob->main_stream, LTO_cgraph_tags, LTO_cgraph_last_tag,
- LTO_cgraph_edge);
+ streamer_write_enum (ob->main_stream, LTO_symtab_tags, LTO_symtab_last_tag,
+ LTO_symtab_edge);
- ref = lto_cgraph_encoder_lookup (encoder, edge->caller);
+ ref = lto_symtab_encoder_lookup (encoder, (symtab_node)edge->caller);
gcc_assert (ref != LCC_NOT_FOUND);
streamer_write_hwi_stream (ob->main_stream, ref);
if (!edge->indirect_unknown_callee)
{
- ref = lto_cgraph_encoder_lookup (encoder, edge->callee);
+ ref = lto_symtab_encoder_lookup (encoder, (symtab_node)edge->callee);
gcc_assert (ref != LCC_NOT_FOUND);
streamer_write_hwi_stream (ob->main_stream, ref);
}
@@ -320,26 +256,15 @@ lto_output_edge (struct lto_simple_output_block *ob, struct cgraph_edge *edge,
/* Return if LIST contain references from other partitions. */
bool
-referenced_from_other_partition_p (struct ipa_ref_list *list, cgraph_node_set set,
- varpool_node_set vset)
+referenced_from_other_partition_p (struct ipa_ref_list *list, lto_symtab_encoder_t encoder)
{
int i;
struct ipa_ref *ref;
for (i = 0; ipa_ref_list_referring_iterate (list, i, ref); i++)
{
- if (symtab_function_p (ref->referring))
- {
- if (ipa_ref_referring_node (ref)->symbol.in_other_partition
- || !cgraph_node_in_set_p (ipa_ref_referring_node (ref), set))
- return true;
- }
- else
- {
- if (ipa_ref_referring_varpool_node (ref)->symbol.in_other_partition
- || !varpool_node_in_set_p (ipa_ref_referring_varpool_node (ref),
- vset))
- return true;
- }
+ if (ref->referring->symbol.in_other_partition
+ || !lto_symtab_encoder_in_partition_p (encoder, ref->referring))
+ return true;
}
return false;
}
@@ -347,7 +272,7 @@ referenced_from_other_partition_p (struct ipa_ref_list *list, cgraph_node_set se
/* Return true when node is reachable from other partition. */
bool
-reachable_from_other_partition_p (struct cgraph_node *node, cgraph_node_set set)
+reachable_from_other_partition_p (struct cgraph_node *node, lto_symtab_encoder_t encoder)
{
struct cgraph_edge *e;
if (!node->analyzed)
@@ -356,7 +281,7 @@ reachable_from_other_partition_p (struct cgraph_node *node, cgraph_node_set set)
return false;
for (e = node->callers; e; e = e->next_caller)
if (e->caller->symbol.in_other_partition
- || !cgraph_node_in_set_p (e->caller, set))
+ || !lto_symtab_encoder_in_partition_p (encoder, (symtab_node)e->caller))
return true;
return false;
}
@@ -364,36 +289,25 @@ reachable_from_other_partition_p (struct cgraph_node *node, cgraph_node_set set)
/* Return if LIST contain references from other partitions. */
bool
-referenced_from_this_partition_p (struct ipa_ref_list *list, cgraph_node_set set,
- varpool_node_set vset)
+referenced_from_this_partition_p (struct ipa_ref_list *list,
+ lto_symtab_encoder_t encoder)
{
int i;
struct ipa_ref *ref;
for (i = 0; ipa_ref_list_referring_iterate (list, i, ref); i++)
- {
- if (symtab_function_p (ref->referring))
- {
- if (cgraph_node_in_set_p (ipa_ref_referring_node (ref), set))
- return true;
- }
- else
- {
- if (varpool_node_in_set_p (ipa_ref_referring_varpool_node (ref),
- vset))
- return true;
- }
- }
+ if (lto_symtab_encoder_in_partition_p (encoder, ref->referring))
+ return true;
return false;
}
/* Return true when node is reachable from other partition. */
bool
-reachable_from_this_partition_p (struct cgraph_node *node, cgraph_node_set set)
+reachable_from_this_partition_p (struct cgraph_node *node, lto_symtab_encoder_t encoder)
{
struct cgraph_edge *e;
for (e = node->callers; e; e = e->next_caller)
- if (cgraph_node_in_set_p (e->caller, set))
+ if (lto_symtab_encoder_in_partition_p (encoder, (symtab_node)e->caller))
return true;
return false;
}
@@ -408,8 +322,7 @@ reachable_from_this_partition_p (struct cgraph_node *node, cgraph_node_set set)
static void
lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
- lto_cgraph_encoder_t encoder, cgraph_node_set set,
- varpool_node_set vset)
+ lto_symtab_encoder_t encoder)
{
unsigned int tag;
struct bitpack_d bp;
@@ -418,14 +331,14 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
bool in_other_partition = false;
struct cgraph_node *clone_of;
- boundary_p = !cgraph_node_in_set_p (node, set);
+ boundary_p = !lto_symtab_encoder_in_partition_p (encoder, (symtab_node)node);
if (node->analyzed && !boundary_p)
- tag = LTO_cgraph_analyzed_node;
+ tag = LTO_symtab_analyzed_node;
else
- tag = LTO_cgraph_unavail_node;
+ tag = LTO_symtab_unavail_node;
- streamer_write_enum (ob->main_stream, LTO_cgraph_tags, LTO_cgraph_last_tag,
+ streamer_write_enum (ob->main_stream, LTO_symtab_tags, LTO_symtab_last_tag,
tag);
streamer_write_hwi_stream (ob->main_stream, node->symbol.order);
@@ -454,13 +367,13 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
clone_of = node->clone_of;
while (clone_of
- && (ref = lto_cgraph_encoder_lookup (encoder, clone_of)) == LCC_NOT_FOUND)
+ && (ref = lto_symtab_encoder_lookup (encoder, (symtab_node)clone_of)) == LCC_NOT_FOUND)
if (clone_of->prev_sibling_clone)
clone_of = clone_of->prev_sibling_clone;
else
clone_of = clone_of->clone_of;
- if (LTO_cgraph_analyzed_node)
+ if (LTO_symtab_analyzed_node)
gcc_assert (clone_of || !node->clone_of);
if (!clone_of)
streamer_write_hwi_stream (ob->main_stream, LCC_NOT_FOUND);
@@ -472,11 +385,11 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
streamer_write_hwi_stream (ob->main_stream, node->count);
streamer_write_hwi_stream (ob->main_stream, node->count_materialization_scale);
- if (tag == LTO_cgraph_analyzed_node)
+ if (tag == LTO_symtab_analyzed_node)
{
if (node->global.inlined_to)
{
- ref = lto_cgraph_encoder_lookup (encoder, node->global.inlined_to);
+ ref = lto_symtab_encoder_lookup (encoder, (symtab_node)node->global.inlined_to);
gcc_assert (ref != LCC_NOT_FOUND);
}
else
@@ -487,8 +400,8 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
if (node->symbol.same_comdat_group && !boundary_p)
{
- ref = lto_cgraph_encoder_lookup (encoder,
- cgraph (node->symbol.same_comdat_group));
+ ref = lto_symtab_encoder_lookup (encoder,
+ node->symbol.same_comdat_group);
gcc_assert (ref != LCC_NOT_FOUND);
}
else
@@ -505,12 +418,12 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
bp_pack_value (&bp, node->symbol.force_output, 1);
bp_pack_value (&bp, node->symbol.address_taken, 1);
bp_pack_value (&bp, node->abstract_and_needed, 1);
- bp_pack_value (&bp, tag == LTO_cgraph_analyzed_node
+ bp_pack_value (&bp, tag == LTO_symtab_analyzed_node
&& !DECL_EXTERNAL (node->symbol.decl)
&& !DECL_COMDAT (node->symbol.decl)
- && (reachable_from_other_partition_p (node, set)
+ && (reachable_from_other_partition_p (node, encoder)
|| referenced_from_other_partition_p (&node->symbol.ref_list,
- set, vset)), 1);
+ encoder)), 1);
bp_pack_value (&bp, node->lowered, 1);
bp_pack_value (&bp, in_other_partition, 1);
/* Real aliases in a boundary become non-aliases. However we still stream
@@ -554,13 +467,15 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
static void
lto_output_varpool_node (struct lto_simple_output_block *ob, struct varpool_node *node,
- lto_varpool_encoder_t varpool_encoder,
- cgraph_node_set set, varpool_node_set vset)
+ lto_symtab_encoder_t encoder)
{
- bool boundary_p = !varpool_node_in_set_p (node, vset) && node->analyzed;
+ bool boundary_p = (node->analyzed
+ && !lto_symtab_encoder_in_partition_p (encoder, (symtab_node)node));
struct bitpack_d bp;
int ref;
+ streamer_write_enum (ob->main_stream, LTO_symtab_tags, LTO_symtab_last_tag,
+ LTO_symtab_variable);
streamer_write_hwi_stream (ob->main_stream, node->symbol.order);
lto_output_var_decl_index (ob->decl_state, ob->main_stream, node->symbol.decl);
bp = bitpack_create (ob->main_stream);
@@ -584,7 +499,7 @@ lto_output_varpool_node (struct lto_simple_output_block *ob, struct varpool_node
{
bp_pack_value (&bp, node->analyzed
&& referenced_from_other_partition_p (&node->symbol.ref_list,
- set, vset), 1);
+ encoder), 1);
bp_pack_value (&bp, boundary_p && !DECL_EXTERNAL (node->symbol.decl), 1);
/* in_other_partition. */
}
@@ -593,8 +508,8 @@ lto_output_varpool_node (struct lto_simple_output_block *ob, struct varpool_node
lto_output_var_decl_index (ob->decl_state, ob->main_stream, node->alias_of);
if (node->symbol.same_comdat_group && !boundary_p)
{
- ref = lto_varpool_encoder_lookup (varpool_encoder,
- varpool (node->symbol.same_comdat_group));
+ ref = lto_symtab_encoder_lookup (encoder,
+ node->symbol.same_comdat_group);
gcc_assert (ref != LCC_NOT_FOUND);
}
else
@@ -609,27 +524,17 @@ lto_output_varpool_node (struct lto_simple_output_block *ob, struct varpool_node
static void
lto_output_ref (struct lto_simple_output_block *ob, struct ipa_ref *ref,
- lto_cgraph_encoder_t encoder,
- lto_varpool_encoder_t varpool_encoder)
+ lto_symtab_encoder_t encoder)
{
struct bitpack_d bp;
+ int nref;
+
bp = bitpack_create (ob->main_stream);
- bp_pack_value (&bp, symtab_function_p (ref->referred), 1);
bp_pack_value (&bp, ref->use, 2);
streamer_write_bitpack (&bp);
- if (symtab_function_p (ref->referred))
- {
- int nref = lto_cgraph_encoder_lookup (encoder, ipa_ref_node (ref));
- gcc_assert (nref != LCC_NOT_FOUND);
- streamer_write_hwi_stream (ob->main_stream, nref);
- }
- else
- {
- int nref = lto_varpool_encoder_lookup (varpool_encoder,
- ipa_ref_varpool_node (ref));
- gcc_assert (nref != LCC_NOT_FOUND);
- streamer_write_hwi_stream (ob->main_stream, nref);
- }
+ nref = lto_symtab_encoder_lookup (encoder, ref->referred);
+ gcc_assert (nref != LCC_NOT_FOUND);
+ streamer_write_hwi_stream (ob->main_stream, nref);
}
/* Stream out profile_summary to OB. */
@@ -654,21 +559,20 @@ output_profile_summary (struct lto_simple_output_block *ob)
Do it in a way so clones appear first. */
static void
-add_node_to (lto_cgraph_encoder_t encoder, struct cgraph_node *node,
+add_node_to (lto_symtab_encoder_t encoder, struct cgraph_node *node,
bool include_body)
{
if (node->clone_of)
add_node_to (encoder, node->clone_of, include_body);
else if (include_body)
- lto_set_cgraph_encoder_encode_body (encoder, node);
- lto_cgraph_encoder_encode (encoder, node);
+ lto_set_symtab_encoder_encode_body (encoder, node);
+ lto_symtab_encoder_encode (encoder, (symtab_node)node);
}
/* Add all references in LIST to encoders. */
static void
-add_references (lto_cgraph_encoder_t encoder,
- lto_varpool_encoder_t varpool_encoder,
+add_references (lto_symtab_encoder_t encoder,
struct ipa_ref_list *list)
{
int i;
@@ -679,7 +583,7 @@ add_references (lto_cgraph_encoder_t encoder,
else
{
struct varpool_node *vnode = ipa_ref_varpool_node (ref);
- lto_varpool_encoder_encode (varpool_encoder, vnode);
+ lto_symtab_encoder_encode (encoder, (symtab_node)vnode);
}
}
@@ -689,7 +593,7 @@ add_references (lto_cgraph_encoder_t encoder,
static void
output_outgoing_cgraph_edges (struct cgraph_edge *edge,
struct lto_simple_output_block *ob,
- lto_cgraph_encoder_t encoder)
+ lto_symtab_encoder_t encoder)
{
if (!edge)
return;
@@ -705,12 +609,9 @@ output_outgoing_cgraph_edges (struct cgraph_edge *edge,
/* Output the part of the cgraph in SET. */
static void
-output_refs (cgraph_node_set set, varpool_node_set vset,
- lto_cgraph_encoder_t encoder,
- lto_varpool_encoder_t varpool_encoder)
+output_refs (lto_symtab_encoder_t encoder)
{
- cgraph_node_set_iterator csi;
- varpool_node_set_iterator vsi;
+ lto_symtab_encoder_iterator lsei;
struct lto_simple_output_block *ob;
int count;
struct ipa_ref *ref;
@@ -718,38 +619,20 @@ output_refs (cgraph_node_set set, varpool_node_set vset,
ob = lto_create_simple_output_block (LTO_section_refs);
- for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ for (lsei = lsei_start_in_partition (encoder); !lsei_end_p (lsei);
+ lsei_next_in_partition (&lsei))
{
- struct cgraph_node *node = csi_node (csi);
+ symtab_node node = lsei_node (lsei);
count = ipa_ref_list_nreferences (&node->symbol.ref_list);
if (count)
{
streamer_write_uhwi_stream (ob->main_stream, count);
streamer_write_uhwi_stream (ob->main_stream,
- lto_cgraph_encoder_lookup (encoder, node));
+ lto_symtab_encoder_lookup (encoder, node));
for (i = 0; ipa_ref_list_reference_iterate (&node->symbol.ref_list,
i, ref); i++)
- lto_output_ref (ob, ref, encoder, varpool_encoder);
- }
- }
-
- streamer_write_uhwi_stream (ob->main_stream, 0);
-
- for (vsi = vsi_start (vset); !vsi_end_p (vsi); vsi_next (&vsi))
- {
- struct varpool_node *node = vsi_node (vsi);
-
- count = ipa_ref_list_nreferences (&node->symbol.ref_list);
- if (count)
- {
- streamer_write_uhwi_stream (ob->main_stream, count);
- streamer_write_uhwi_stream (ob->main_stream,
- lto_varpool_encoder_lookup (varpool_encoder,
- node));
- for (i = 0; ipa_ref_list_reference_iterate (&node->symbol.ref_list,
- i, ref); i++)
- lto_output_ref (ob, ref, encoder, varpool_encoder);
+ lto_output_ref (ob, ref, encoder);
}
}
@@ -769,43 +652,46 @@ compute_ltrans_boundary (struct lto_out_decl_state *state,
varpool_node_set_iterator vsi;
struct cgraph_edge *edge;
int i;
- lto_cgraph_encoder_t encoder;
- lto_varpool_encoder_t varpool_encoder;
+ lto_symtab_encoder_t encoder;
- encoder = state->cgraph_node_encoder = lto_cgraph_encoder_new ();
- varpool_encoder = state->varpool_node_encoder = lto_varpool_encoder_new ();
+ encoder = state->symtab_node_encoder = lto_symtab_encoder_new ();
/* Go over all the nodes in SET and assign references. */
for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
{
node = csi_node (csi);
add_node_to (encoder, node, true);
- add_references (encoder, varpool_encoder, &node->symbol.ref_list);
+ lto_set_symtab_encoder_in_partition (encoder, (symtab_node)node);
+ add_references (encoder, &node->symbol.ref_list);
}
for (vsi = vsi_start (vset); !vsi_end_p (vsi); vsi_next (&vsi))
{
struct varpool_node *vnode = vsi_node (vsi);
gcc_assert (!vnode->alias || vnode->alias_of);
- lto_varpool_encoder_encode (varpool_encoder, vnode);
- lto_set_varpool_encoder_encode_initializer (varpool_encoder, vnode);
- add_references (encoder, varpool_encoder, &vnode->symbol.ref_list);
+ lto_set_symtab_encoder_in_partition (encoder, (symtab_node)vnode);
+ lto_set_symtab_encoder_encode_initializer (encoder, vnode);
+ add_references (encoder, &vnode->symbol.ref_list);
}
/* Pickle in also the initializer of all referenced readonly variables
to help folding. Constant pool variables are not shared, so we must
pickle those too. */
- for (i = 0; i < lto_varpool_encoder_size (varpool_encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- struct varpool_node *vnode = lto_varpool_encoder_deref (varpool_encoder, i);
- if (DECL_INITIAL (vnode->symbol.decl)
- && !lto_varpool_encoder_encode_initializer_p (varpool_encoder,
- vnode)
- && const_value_known_p (vnode->symbol.decl))
+ symtab_node node = lto_symtab_encoder_deref (encoder, i);
+ if (symtab_variable_p (node))
{
- lto_set_varpool_encoder_encode_initializer (varpool_encoder, vnode);
- add_references (encoder, varpool_encoder, &vnode->symbol.ref_list);
- }
- else if (vnode->alias || vnode->alias_of)
- add_references (encoder, varpool_encoder, &vnode->symbol.ref_list);
+ struct varpool_node *vnode = varpool (node);
+ if (DECL_INITIAL (vnode->symbol.decl)
+ && !lto_symtab_encoder_encode_initializer_p (encoder,
+ vnode)
+ && const_value_known_p (vnode->symbol.decl))
+ {
+ lto_set_symtab_encoder_encode_initializer (encoder, vnode);
+ add_references (encoder, &vnode->symbol.ref_list);
+ }
+ else if (vnode->alias || vnode->alias_of)
+ add_references (encoder, &vnode->symbol.ref_list);
+ }
}
/* Go over all the nodes again to include callees that are not in
@@ -826,47 +712,49 @@ compute_ltrans_boundary (struct lto_out_decl_state *state,
}
}
-/* Output the part of the cgraph in SET. */
+/* Output the part of the symtab in SET and VSET. */
void
-output_cgraph (cgraph_node_set set, varpool_node_set vset)
+output_symtab (void)
{
struct cgraph_node *node;
struct lto_simple_output_block *ob;
- cgraph_node_set_iterator csi;
+ lto_symtab_encoder_iterator lsei;
int i, n_nodes;
- lto_cgraph_encoder_t encoder;
- lto_varpool_encoder_t varpool_encoder;
+ lto_symtab_encoder_t encoder;
static bool asm_nodes_output = false;
if (flag_wpa)
- output_cgraph_opt_summary (set);
+ output_cgraph_opt_summary ();
- ob = lto_create_simple_output_block (LTO_section_cgraph);
+ ob = lto_create_simple_output_block (LTO_section_symtab_nodes);
output_profile_summary (ob);
/* An encoder for cgraph nodes should have been created by
ipa_write_summaries_1. */
- gcc_assert (ob->decl_state->cgraph_node_encoder);
- gcc_assert (ob->decl_state->varpool_node_encoder);
- encoder = ob->decl_state->cgraph_node_encoder;
- varpool_encoder = ob->decl_state->varpool_node_encoder;
+ gcc_assert (ob->decl_state->symtab_node_encoder);
+ encoder = ob->decl_state->symtab_node_encoder;
/* Write out the nodes. We must first output a node and then its clones,
otherwise at a time reading back the node there would be nothing to clone
from. */
- n_nodes = lto_cgraph_encoder_size (encoder);
+ n_nodes = lto_symtab_encoder_size (encoder);
for (i = 0; i < n_nodes; i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
- lto_output_node (ob, node, encoder, set, vset);
+ symtab_node node = lto_symtab_encoder_deref (encoder, i);
+ if (symtab_function_p (node))
+ lto_output_node (ob, cgraph (node), encoder);
+ else
+ lto_output_varpool_node (ob, varpool (node), encoder);
+
}
/* Go over the nodes in SET again to write edges. */
- for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
+ lsei_next_function_in_partition (&lsei))
{
- node = csi_node (csi);
+ node = lsei_cgraph_node (lsei);
output_outgoing_cgraph_edges (node->callees, ob, encoder);
output_outgoing_cgraph_edges (node->indirect_calls, ob, encoder);
}
@@ -885,8 +773,7 @@ output_cgraph (cgraph_node_set set, varpool_node_set vset)
lto_output_toplevel_asms ();
}
- output_varpool (set, vset);
- output_refs (set, vset, encoder, varpool_encoder);
+ output_refs (encoder);
}
/* Overwrite the information in NODE based on FILE_DATA, TAG, FLAGS,
@@ -899,7 +786,7 @@ output_cgraph (cgraph_node_set set, varpool_node_set vset)
static void
input_overwrite_node (struct lto_file_decl_data *file_data,
struct cgraph_node *node,
- enum LTO_cgraph_tags tag,
+ enum LTO_symtab_tags tag,
struct bitpack_d *bp)
{
node->symbol.aux = (void *) tag;
@@ -916,7 +803,7 @@ input_overwrite_node (struct lto_file_decl_data *file_data,
node->abstract_and_needed = bp_unpack_value (bp, 1);
node->symbol.used_from_other_partition = bp_unpack_value (bp, 1);
node->lowered = bp_unpack_value (bp, 1);
- node->analyzed = tag == LTO_cgraph_analyzed_node;
+ node->analyzed = tag == LTO_symtab_analyzed_node;
node->symbol.in_other_partition = bp_unpack_value (bp, 1);
if (node->symbol.in_other_partition
/* Avoid updating decl when we are seeing just inline clone.
@@ -942,38 +829,14 @@ input_overwrite_node (struct lto_file_decl_data *file_data,
LDPR_NUM_KNOWN);
}
-/* Output the part of the cgraph in SET. */
-
-static void
-output_varpool (cgraph_node_set set, varpool_node_set vset)
-{
- struct lto_simple_output_block *ob = lto_create_simple_output_block (LTO_section_varpool);
- lto_varpool_encoder_t varpool_encoder = ob->decl_state->varpool_node_encoder;
- int len = lto_varpool_encoder_size (varpool_encoder), i;
-
- streamer_write_uhwi_stream (ob->main_stream, len);
-
- /* Write out the nodes. We must first output a node and then its clones,
- otherwise at a time reading back the node there would be nothing to clone
- from. */
- for (i = 0; i < len; i++)
- {
- lto_output_varpool_node (ob, lto_varpool_encoder_deref (varpool_encoder, i),
- varpool_encoder,
- set, vset);
- }
-
- lto_destroy_simple_output_block (ob);
-}
-
/* Read a node from input_block IB. TAG is the node's tag just read.
Return the node read or overwriten. */
static struct cgraph_node *
input_node (struct lto_file_decl_data *file_data,
struct lto_input_block *ib,
- enum LTO_cgraph_tags tag,
- VEC(cgraph_node_ptr, heap) *nodes)
+ enum LTO_symtab_tags tag,
+ VEC(symtab_node, heap) *nodes)
{
tree fn_decl;
struct cgraph_node *node;
@@ -991,7 +854,7 @@ input_node (struct lto_file_decl_data *file_data,
if (clone_ref != LCC_NOT_FOUND)
{
- node = cgraph_clone_node (VEC_index (cgraph_node_ptr, nodes, clone_ref), fn_decl,
+ node = cgraph_clone_node (cgraph (VEC_index (symtab_node, nodes, clone_ref)), fn_decl,
0, CGRAPH_FREQ_BASE, false, NULL, false);
}
else
@@ -1004,7 +867,7 @@ input_node (struct lto_file_decl_data *file_data,
node->count = streamer_read_hwi (ib);
node->count_materialization_scale = streamer_read_hwi (ib);
- if (tag == LTO_cgraph_analyzed_node)
+ if (tag == LTO_symtab_analyzed_node)
ref = streamer_read_hwi (ib);
ref2 = streamer_read_hwi (ib);
@@ -1107,25 +970,16 @@ input_varpool_node (struct lto_file_decl_data *file_data,
static void
input_ref (struct lto_input_block *ib,
symtab_node referring_node,
- VEC(cgraph_node_ptr, heap) *nodes,
- VEC(varpool_node_ptr, heap) *varpool_nodes_vec)
+ VEC(symtab_node, heap) *nodes)
{
- struct cgraph_node *node = NULL;
- struct varpool_node *varpool_node = NULL;
+ symtab_node node = NULL;
struct bitpack_d bp;
- int type;
enum ipa_ref_use use;
bp = streamer_read_bitpack (ib);
- type = bp_unpack_value (&bp, 1);
use = (enum ipa_ref_use) bp_unpack_value (&bp, 2);
- if (type)
- node = VEC_index (cgraph_node_ptr, nodes, streamer_read_hwi (ib));
- else
- varpool_node = VEC_index (varpool_node_ptr, varpool_nodes_vec,
- streamer_read_hwi (ib));
- ipa_record_reference (referring_node,
- node ? (symtab_node) node : (symtab_node) varpool_node, use, NULL);
+ node = VEC_index (symtab_node, nodes, streamer_read_hwi (ib));
+ ipa_record_reference (referring_node, node, use, NULL);
}
/* Read an edge from IB. NODES points to a vector of previously read nodes for
@@ -1134,7 +988,7 @@ input_ref (struct lto_input_block *ib,
indirect_unknown_callee set). */
static void
-input_edge (struct lto_input_block *ib, VEC(cgraph_node_ptr, heap) *nodes,
+input_edge (struct lto_input_block *ib, VEC(symtab_node, heap) *nodes,
bool indirect)
{
struct cgraph_node *caller, *callee;
@@ -1146,13 +1000,13 @@ input_edge (struct lto_input_block *ib, VEC(cgraph_node_ptr, heap) *nodes,
struct bitpack_d bp;
int ecf_flags = 0;
- caller = VEC_index (cgraph_node_ptr, nodes, streamer_read_hwi (ib));
+ caller = cgraph (VEC_index (symtab_node, nodes, streamer_read_hwi (ib)));
if (caller == NULL || caller->symbol.decl == NULL_TREE)
internal_error ("bytecode stream: no caller found while reading edge");
if (!indirect)
{
- callee = VEC_index (cgraph_node_ptr, nodes, streamer_read_hwi (ib));
+ callee = cgraph (VEC_index (symtab_node, nodes, streamer_read_hwi (ib)));
if (callee == NULL || callee->symbol.decl == NULL_TREE)
internal_error ("bytecode stream: no callee found while reading edge");
}
@@ -1197,145 +1051,99 @@ input_edge (struct lto_input_block *ib, VEC(cgraph_node_ptr, heap) *nodes,
/* Read a cgraph from IB using the info in FILE_DATA. */
-static VEC(cgraph_node_ptr, heap) *
+static VEC(symtab_node, heap) *
input_cgraph_1 (struct lto_file_decl_data *file_data,
struct lto_input_block *ib)
{
- enum LTO_cgraph_tags tag;
- VEC(cgraph_node_ptr, heap) *nodes = NULL;
- struct cgraph_node *node;
+ enum LTO_symtab_tags tag;
+ VEC(symtab_node, heap) *nodes = NULL;
+ symtab_node node;
unsigned i;
- tag = streamer_read_enum (ib, LTO_cgraph_tags, LTO_cgraph_last_tag);
+ tag = streamer_read_enum (ib, LTO_symtab_tags, LTO_symtab_last_tag);
order_base = symtab_order;
while (tag)
{
- if (tag == LTO_cgraph_edge)
+ if (tag == LTO_symtab_edge)
input_edge (ib, nodes, false);
- else if (tag == LTO_cgraph_indirect_edge)
+ else if (tag == LTO_symtab_indirect_edge)
input_edge (ib, nodes, true);
+ else if (tag == LTO_symtab_variable)
+ {
+ node = (symtab_node)input_varpool_node (file_data, ib);
+ VEC_safe_push (symtab_node, heap, nodes, node);
+ lto_symtab_encoder_encode (file_data->symtab_node_encoder, node);
+ }
else
{
- node = input_node (file_data, ib, tag,nodes);
+ node = (symtab_node)input_node (file_data, ib, tag, nodes);
if (node == NULL || node->symbol.decl == NULL_TREE)
internal_error ("bytecode stream: found empty cgraph node");
- VEC_safe_push (cgraph_node_ptr, heap, nodes, node);
- lto_cgraph_encoder_encode (file_data->cgraph_node_encoder, node);
+ VEC_safe_push (symtab_node, heap, nodes, node);
+ lto_symtab_encoder_encode (file_data->symtab_node_encoder, node);
}
- tag = streamer_read_enum (ib, LTO_cgraph_tags, LTO_cgraph_last_tag);
+ tag = streamer_read_enum (ib, LTO_symtab_tags, LTO_symtab_last_tag);
}
lto_input_toplevel_asms (file_data, order_base);
- /* AUX pointers should be all non-zero for nodes read from the stream. */
+ /* AUX pointers should be all non-zero for function nodes read from the stream. */
#ifdef ENABLE_CHECKING
- FOR_EACH_VEC_ELT (cgraph_node_ptr, nodes, i, node)
- gcc_assert (node->symbol.aux);
+ FOR_EACH_VEC_ELT (symtab_node, nodes, i, node)
+ gcc_assert (node->symbol.aux || !symtab_function_p (node));
#endif
- FOR_EACH_VEC_ELT (cgraph_node_ptr, nodes, i, node)
+ FOR_EACH_VEC_ELT (symtab_node, nodes, i, node)
{
- int ref = (int) (intptr_t) node->global.inlined_to;
-
- /* We share declaration of builtins, so we may read same node twice. */
- if (!node->symbol.aux)
- continue;
- node->symbol.aux = NULL;
-
- /* Fixup inlined_to from reference to pointer. */
- if (ref != LCC_NOT_FOUND)
- node->global.inlined_to = VEC_index (cgraph_node_ptr, nodes, ref);
- else
- node->global.inlined_to = NULL;
+ int ref;
+ if (symtab_function_p (node))
+ {
+ ref = (int) (intptr_t) cgraph (node)->global.inlined_to;
+
+ /* We share declaration of builtins, so we may read same node twice. */
+ if (!node->symbol.aux)
+ continue;
+ node->symbol.aux = NULL;
+
+ /* Fixup inlined_to from reference to pointer. */
+ if (ref != LCC_NOT_FOUND)
+ cgraph (node)->global.inlined_to = cgraph (VEC_index (symtab_node, nodes, ref));
+ else
+ cgraph (node)->global.inlined_to = NULL;
+ }
ref = (int) (intptr_t) node->symbol.same_comdat_group;
/* Fixup same_comdat_group from reference to pointer. */
if (ref != LCC_NOT_FOUND)
- node->symbol.same_comdat_group = (symtab_node)VEC_index (cgraph_node_ptr, nodes, ref);
+ node->symbol.same_comdat_group = VEC_index (symtab_node, nodes, ref);
else
node->symbol.same_comdat_group = NULL;
}
- FOR_EACH_VEC_ELT (cgraph_node_ptr, nodes, i, node)
- node->symbol.aux = (void *)1;
+ FOR_EACH_VEC_ELT (symtab_node, nodes, i, node)
+ node->symbol.aux = symtab_function_p (node) ? (void *)1 : NULL;
return nodes;
}
-/* Read a varpool from IB using the info in FILE_DATA. */
-
-static VEC(varpool_node_ptr, heap) *
-input_varpool_1 (struct lto_file_decl_data *file_data,
- struct lto_input_block *ib)
-{
- unsigned HOST_WIDE_INT len;
- VEC(varpool_node_ptr, heap) *varpool = NULL;
- int i;
- struct varpool_node *node;
-
- len = streamer_read_uhwi (ib);
- while (len)
- {
- VEC_safe_push (varpool_node_ptr, heap, varpool,
- input_varpool_node (file_data, ib));
- len--;
- }
-#ifdef ENABLE_CHECKING
- FOR_EACH_VEC_ELT (varpool_node_ptr, varpool, i, node)
- gcc_assert (!node->symbol.aux);
-#endif
- FOR_EACH_VEC_ELT (varpool_node_ptr, varpool, i, node)
- {
- int ref = (int) (intptr_t) node->symbol.same_comdat_group;
- /* We share declaration of builtins, so we may read same node twice. */
- if (node->symbol.aux)
- continue;
- node->symbol.aux = (void *)1;
-
- /* Fixup same_comdat_group from reference to pointer. */
- if (ref != LCC_NOT_FOUND)
- node->symbol.same_comdat_group = (symtab_node)VEC_index (varpool_node_ptr, varpool, ref);
- else
- node->symbol.same_comdat_group = NULL;
- }
- FOR_EACH_VEC_ELT (varpool_node_ptr, varpool, i, node)
- node->symbol.aux = NULL;
- return varpool;
-}
-
/* Input ipa_refs. */
static void
input_refs (struct lto_input_block *ib,
- VEC(cgraph_node_ptr, heap) *nodes,
- VEC(varpool_node_ptr, heap) *varpool)
+ VEC(symtab_node, heap) *nodes)
{
int count;
int idx;
while (true)
{
- struct cgraph_node *node;
+ symtab_node node;
count = streamer_read_uhwi (ib);
if (!count)
break;
idx = streamer_read_uhwi (ib);
- node = VEC_index (cgraph_node_ptr, nodes, idx);
+ node = VEC_index (symtab_node, nodes, idx);
while (count)
{
- input_ref (ib, (symtab_node) node, nodes, varpool);
- count--;
- }
- }
- while (true)
- {
- struct varpool_node *node;
- count = streamer_read_uhwi (ib);
- if (!count)
- break;
- node = VEC_index (varpool_node_ptr, varpool,
- streamer_read_uhwi (ib));
- while (count)
- {
- input_ref (ib, (symtab_node) node, nodes, varpool);
+ input_ref (ib, node, nodes);
count--;
}
}
@@ -1444,11 +1252,11 @@ merge_profile_summaries (struct lto_file_decl_data **file_data_vec)
}
}
-/* Input and merge the cgraph from each of the .o files passed to
+/* Input and merge the symtab from each of the .o files passed to
lto1. */
void
-input_cgraph (void)
+input_symtab (void)
{
struct lto_file_decl_data **file_data_vec = lto_get_file_decl_data ();
struct lto_file_decl_data *file_data;
@@ -1462,38 +1270,28 @@ input_cgraph (void)
const char *data;
size_t len;
struct lto_input_block *ib;
- VEC(cgraph_node_ptr, heap) *nodes;
- VEC(varpool_node_ptr, heap) *varpool;
+ VEC(symtab_node, heap) *nodes;
- ib = lto_create_simple_input_block (file_data, LTO_section_cgraph,
+ ib = lto_create_simple_input_block (file_data, LTO_section_symtab_nodes,
&data, &len);
if (!ib)
fatal_error ("cannot find LTO cgraph in %s", file_data->file_name);
input_profile_summary (ib, file_data);
- file_data->cgraph_node_encoder = lto_cgraph_encoder_new ();
+ file_data->symtab_node_encoder = lto_symtab_encoder_new ();
nodes = input_cgraph_1 (file_data, ib);
- lto_destroy_simple_input_block (file_data, LTO_section_cgraph,
- ib, data, len);
-
- ib = lto_create_simple_input_block (file_data, LTO_section_varpool,
- &data, &len);
- if (!ib)
- fatal_error ("cannot find LTO varpool in %s", file_data->file_name);
- varpool = input_varpool_1 (file_data, ib);
- lto_destroy_simple_input_block (file_data, LTO_section_varpool,
+ lto_destroy_simple_input_block (file_data, LTO_section_symtab_nodes,
ib, data, len);
ib = lto_create_simple_input_block (file_data, LTO_section_refs,
&data, &len);
if (!ib)
fatal_error("cannot find LTO section refs in %s", file_data->file_name);
- input_refs (ib, nodes, varpool);
+ input_refs (ib, nodes);
lto_destroy_simple_input_block (file_data, LTO_section_refs,
ib, data, len);
if (flag_ltrans)
input_cgraph_opt_summary (nodes);
- VEC_free (cgraph_node_ptr, heap, nodes);
- VEC_free (varpool_node_ptr, heap, varpool);
+ VEC_free (symtab_node, heap, nodes);
}
merge_profile_summaries (file_data_vec);
@@ -1515,8 +1313,7 @@ input_cgraph (void)
/* True when we need optimization summary for NODE. */
static int
-output_cgraph_opt_summary_p (struct cgraph_node *node,
- cgraph_node_set set ATTRIBUTE_UNUSED)
+output_cgraph_opt_summary_p (struct cgraph_node *node)
{
return (node->clone_of
&& (node->clone.tree_map
@@ -1536,7 +1333,7 @@ output_edge_opt_summary (struct output_block *ob ATTRIBUTE_UNUSED,
static void
output_node_opt_summary (struct output_block *ob,
struct cgraph_node *node,
- cgraph_node_set set)
+ lto_symtab_encoder_t encoder)
{
unsigned int index;
bitmap_iterator bi;
@@ -1583,7 +1380,7 @@ output_node_opt_summary (struct output_block *ob,
streamer_write_bitpack (&bp);
}
- if (cgraph_node_in_set_p (node, set))
+ if (lto_symtab_encoder_in_partition_p (encoder, (symtab_node) node))
{
for (e = node->callees; e; e = e->next_callee)
output_edge_opt_summary (ob, e);
@@ -1596,29 +1393,30 @@ output_node_opt_summary (struct output_block *ob,
At the moment it is the clone info structure. */
static void
-output_cgraph_opt_summary (cgraph_node_set set)
+output_cgraph_opt_summary (void)
{
- struct cgraph_node *node;
+ symtab_node node;
int i, n_nodes;
- lto_cgraph_encoder_t encoder;
+ lto_symtab_encoder_t encoder;
struct output_block *ob = create_output_block (LTO_section_cgraph_opt_sum);
unsigned count = 0;
ob->cgraph_node = NULL;
- encoder = ob->decl_state->cgraph_node_encoder;
- n_nodes = lto_cgraph_encoder_size (encoder);
+ encoder = ob->decl_state->symtab_node_encoder;
+ n_nodes = lto_symtab_encoder_size (encoder);
for (i = 0; i < n_nodes; i++)
- if (output_cgraph_opt_summary_p (lto_cgraph_encoder_deref (encoder, i),
- set))
+ if (symtab_function_p (node = lto_symtab_encoder_deref (encoder, i))
+ && output_cgraph_opt_summary_p (cgraph (node)))
count++;
streamer_write_uhwi (ob, count);
for (i = 0; i < n_nodes; i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
- if (output_cgraph_opt_summary_p (node, set))
+ node = lto_symtab_encoder_deref (encoder, i);
+ if (symtab_function_p (node)
+ && output_cgraph_opt_summary_p (cgraph (node)))
{
streamer_write_uhwi (ob, i);
- output_node_opt_summary (ob, node, set);
+ output_node_opt_summary (ob, cgraph (node), encoder);
}
}
produce_asm (ob, NULL);
@@ -1690,7 +1488,7 @@ input_node_opt_summary (struct cgraph_node *node,
static void
input_cgraph_opt_section (struct lto_file_decl_data *file_data,
- const char *data, size_t len, VEC (cgraph_node_ptr,
+ const char *data, size_t len, VEC (symtab_node,
heap) * nodes)
{
const struct lto_function_header *header =
@@ -1714,7 +1512,7 @@ input_cgraph_opt_section (struct lto_file_decl_data *file_data,
for (i = 0; i < count; i++)
{
int ref = streamer_read_uhwi (&ib_main);
- input_node_opt_summary (VEC_index (cgraph_node_ptr, nodes, ref),
+ input_node_opt_summary (cgraph (VEC_index (symtab_node, nodes, ref)),
&ib_main, data_in);
}
lto_free_section_data (file_data, LTO_section_cgraph_opt_sum, NULL, data,
@@ -1725,7 +1523,7 @@ input_cgraph_opt_section (struct lto_file_decl_data *file_data,
/* Input optimization summary of cgraph. */
static void
-input_cgraph_opt_summary (VEC (cgraph_node_ptr, heap) * nodes)
+input_cgraph_opt_summary (VEC (symtab_node, heap) * nodes)
{
struct lto_file_decl_data **file_data_vec = lto_get_file_decl_data ();
struct lto_file_decl_data *file_data;
diff --git a/gcc/lto-section-in.c b/gcc/lto-section-in.c
index ad4077e04f3..8c743bb22f6 100644
--- a/gcc/lto-section-in.c
+++ b/gcc/lto-section-in.c
@@ -49,14 +49,13 @@ const char *lto_section_name[LTO_N_SECTION_TYPES] =
"decls",
"function_body",
"statics",
- "cgraph",
- "vars",
+ "symtab",
"refs",
"asm",
"jmpfuncs",
"pureconst",
"reference",
- "symtab",
+ "symbol_nodes",
"opts",
"cgraphopt",
"inline"
diff --git a/gcc/lto-section-out.c b/gcc/lto-section-out.c
index fe3cc54c7f9..3de48e03df4 100644
--- a/gcc/lto-section-out.c
+++ b/gcc/lto-section-out.c
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "hashtab.h"
#include "basic-block.h"
#include "tree-flow.h"
-#include "tree-pass.h"
#include "cgraph.h"
#include "function.h"
#include "ggc.h"
@@ -413,7 +412,6 @@ lto_destroy_simple_output_block (struct lto_simple_output_block *ob)
memset (&header, 0, sizeof (struct lto_simple_header));
header.lto_header.major_version = LTO_major_version;
header.lto_header.minor_version = LTO_minor_version;
- header.lto_header.section_type = LTO_section_cgraph;
header.compressed_size = 0;
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index 98390940f12..cca216cd842 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -38,11 +38,9 @@ along with GCC; see the file COPYING3. If not see
#include "function.h"
#include "ggc.h"
#include "diagnostic.h"
-#include "libfuncs.h"
#include "except.h"
#include "debug.h"
#include "vec.h"
-#include "timevar.h"
#include "ipa-utils.h"
#include "data-streamer.h"
#include "gimple-streamer.h"
@@ -711,7 +709,7 @@ input_ssa_names (struct lto_input_block *ib, struct data_in *data_in,
ssa_name = make_ssa_name_fn (fn, name, gimple_build_nop ());
if (is_default_def)
- set_default_def (SSA_NAME_VAR (ssa_name), ssa_name);
+ set_ssa_default_def (cfun, SSA_NAME_VAR (ssa_name), ssa_name);
i = streamer_read_uhwi (ib);
}
@@ -799,7 +797,6 @@ input_struct_function_base (struct function *fn, struct data_in *data_in,
bp = streamer_read_bitpack (ib);
fn->is_thunk = bp_unpack_value (&bp, 1);
fn->has_local_explicit_reg_vars = bp_unpack_value (&bp, 1);
- fn->after_tree_profile = bp_unpack_value (&bp, 1);
fn->returns_pcc_struct = bp_unpack_value (&bp, 1);
fn->returns_struct = bp_unpack_value (&bp, 1);
fn->can_throw_non_call_exceptions = bp_unpack_value (&bp, 1);
@@ -982,6 +979,9 @@ lto_read_body (struct lto_file_decl_data *file_data, tree fn_decl,
push_cfun (fn);
init_tree_ssa (fn);
+ /* We input IL in SSA form. */
+ cfun->gimple_df->in_ssa_p = true;
+
/* Use the function's decl state. */
decl_state = lto_get_function_in_decl_state (file_data, fn_decl);
gcc_assert (decl_state);
@@ -1018,9 +1018,6 @@ lto_read_body (struct lto_file_decl_data *file_data, tree fn_decl,
}
}
- /* We should now be in SSA. */
- cfun->gimple_df->in_ssa_p = true;
-
/* Restore decl state */
file_data->current_decl_state = file_data->global_decl_state;
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 370bf0a7ae8..2adae7445a2 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -348,13 +348,13 @@ lto_write_tree (struct output_block *ob, tree expr, bool ref_p)
&& (TREE_STATIC (expr) || DECL_EXTERNAL (expr))
&& initial)
{
- lto_varpool_encoder_t varpool_encoder;
+ lto_symtab_encoder_t encoder;
struct varpool_node *vnode;
- varpool_encoder = ob->decl_state->varpool_node_encoder;
+ encoder = ob->decl_state->symtab_node_encoder;
vnode = varpool_get_node (expr);
if (!vnode
- || !lto_varpool_encoder_encode_initializer_p (varpool_encoder,
+ || !lto_symtab_encoder_encode_initializer_p (encoder,
vnode))
initial = error_mark_node;
}
@@ -613,13 +613,17 @@ output_ssa_names (struct output_block *ob, struct function *fn)
if (ptr == NULL_TREE
|| SSA_NAME_IN_FREE_LIST (ptr)
- || !is_gimple_reg (ptr))
+ || virtual_operand_p (ptr))
continue;
streamer_write_uhwi (ob, i);
streamer_write_char_stream (ob->main_stream,
SSA_NAME_IS_DEFAULT_DEF (ptr));
- stream_write_tree (ob, SSA_NAME_VAR (ptr), true);
+ if (SSA_NAME_VAR (ptr))
+ stream_write_tree (ob, SSA_NAME_VAR (ptr), true);
+ else
+ /* ??? This drops SSA_NAME_IDENTIFIER on the floor. */
+ stream_write_tree (ob, TREE_TYPE (ptr), true);
}
streamer_write_zero (ob);
@@ -703,7 +707,6 @@ produce_asm (struct output_block *ob, tree fn)
/* Write the header. */
header.lto_header.major_version = LTO_major_version;
header.lto_header.minor_version = LTO_minor_version;
- header.lto_header.section_type = section_type;
header.compressed_size = 0;
@@ -757,7 +760,6 @@ output_struct_function_base (struct output_block *ob, struct function *fn)
bp = bitpack_create (ob->main_stream);
bp_pack_value (&bp, fn->is_thunk, 1);
bp_pack_value (&bp, fn->has_local_explicit_reg_vars, 1);
- bp_pack_value (&bp, fn->after_tree_profile, 1);
bp_pack_value (&bp, fn->returns_pcc_struct, 1);
bp_pack_value (&bp, fn->returns_struct, 1);
bp_pack_value (&bp, fn->can_throw_non_call_exceptions, 1);
@@ -890,7 +892,6 @@ lto_output_toplevel_asms (void)
/* Write the header. */
header.lto_header.major_version = LTO_major_version;
header.lto_header.minor_version = LTO_minor_version;
- header.lto_header.section_type = LTO_section_asm;
header.main_size = ob->main_stream->total_size;
header.string_size = ob->string_stream->total_size;
@@ -972,7 +973,7 @@ copy_function (struct cgraph_node *node)
/* Main entry point from the pass manager. */
static void
-lto_output (cgraph_node_set set, varpool_node_set vset)
+lto_output (void)
{
struct cgraph_node *node;
struct lto_out_decl_state *decl_state;
@@ -980,17 +981,20 @@ lto_output (cgraph_node_set set, varpool_node_set vset)
bitmap output = lto_bitmap_alloc ();
#endif
int i, n_nodes;
- lto_cgraph_encoder_t encoder = lto_get_out_decl_state ()->cgraph_node_encoder;
+ lto_symtab_encoder_t encoder = lto_get_out_decl_state ()->symtab_node_encoder;
/* Initialize the streamer. */
lto_streamer_init ();
- n_nodes = lto_cgraph_encoder_size (encoder);
+ n_nodes = lto_symtab_encoder_size (encoder);
/* Process only the functions with bodies. */
for (i = 0; i < n_nodes; i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
- if (lto_cgraph_encoder_encode_body_p (encoder, node)
+ symtab_node snode = lto_symtab_encoder_deref (encoder, i);
+ if (!symtab_function_p (snode))
+ continue;
+ node = cgraph (snode);
+ if (lto_symtab_encoder_encode_body_p (encoder, node)
&& !node->alias
&& !node->thunk.thunk_p)
{
@@ -1014,7 +1018,7 @@ lto_output (cgraph_node_set set, varpool_node_set vset)
be done now to make sure that all the statements in every function
have been renumbered so that edges can be associated with call
statements using the statement UIDs. */
- output_cgraph (set, vset);
+ output_symtab ();
#ifdef ENABLE_CHECKING
lto_bitmap_free (output);
@@ -1287,8 +1291,7 @@ produce_symtab (struct output_block *ob)
struct cgraph_node *node;
struct varpool_node *vnode;
struct lto_output_stream stream;
- lto_varpool_encoder_t varpool_encoder = ob->decl_state->varpool_node_encoder;
- lto_cgraph_encoder_t encoder = ob->decl_state->cgraph_node_encoder;
+ lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder;
int i;
lto_begin_section (section_name, false);
@@ -1300,9 +1303,11 @@ produce_symtab (struct output_block *ob)
/* Write all functions.
First write all defined functions and then write all used functions.
This is done so only to handle duplicated symbols in cgraph. */
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
+ if (!symtab_function_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ node = cgraph (lto_symtab_encoder_deref (encoder, i));
if (DECL_EXTERNAL (node->symbol.decl))
continue;
if (DECL_COMDAT (node->symbol.decl)
@@ -1312,9 +1317,11 @@ produce_symtab (struct output_block *ob)
continue;
write_symbol (cache, &stream, node->symbol.decl, seen, false);
}
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
+ if (!symtab_function_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ node = cgraph (lto_symtab_encoder_deref (encoder, i));
if (!DECL_EXTERNAL (node->symbol.decl))
continue;
/* We keep around unused extern inlines in order to be able to inline
@@ -1331,9 +1338,11 @@ produce_symtab (struct output_block *ob)
}
/* Write all variables. */
- for (i = 0; i < lto_varpool_encoder_size (varpool_encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- vnode = lto_varpool_encoder_deref (varpool_encoder, i);
+ if (!symtab_variable_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ vnode = varpool (lto_symtab_encoder_deref (encoder, i));
if (DECL_EXTERNAL (vnode->symbol.decl))
continue;
/* COMDAT virtual tables can be unshared. Do not declare them
@@ -1348,9 +1357,11 @@ produce_symtab (struct output_block *ob)
continue;
write_symbol (cache, &stream, vnode->symbol.decl, seen, false);
}
- for (i = 0; i < lto_varpool_encoder_size (varpool_encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- vnode = lto_varpool_encoder_deref (varpool_encoder, i);
+ if (!symtab_variable_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ vnode = varpool (lto_symtab_encoder_deref (encoder, i));
if (!DECL_EXTERNAL (vnode->symbol.decl))
continue;
if (DECL_COMDAT (vnode->symbol.decl)
@@ -1377,8 +1388,7 @@ produce_symtab (struct output_block *ob)
recover these on other side. */
static void
-produce_asm_for_decls (cgraph_node_set set ATTRIBUTE_UNUSED,
- varpool_node_set vset ATTRIBUTE_UNUSED)
+produce_asm_for_decls (void)
{
struct lto_out_decl_state *out_state;
struct lto_out_decl_state *fn_out_state;
@@ -1417,7 +1427,6 @@ produce_asm_for_decls (cgraph_node_set set ATTRIBUTE_UNUSED,
header.lto_header.major_version = LTO_major_version;
header.lto_header.minor_version = LTO_minor_version;
- header.lto_header.section_type = LTO_section_decls;
/* Currently not used. This field would allow us to preallocate
the globals vector, so that it need not be resized as it is extended. */
@@ -1444,8 +1453,7 @@ produce_asm_for_decls (cgraph_node_set set ATTRIBUTE_UNUSED,
/* Write the main out-decl state, followed by out-decl states of
functions. */
- decl_state_stream = ((struct lto_output_stream *)
- xcalloc (1, sizeof (struct lto_output_stream)));
+ decl_state_stream = XCNEW (struct lto_output_stream);
num_decl_states = num_fns + 1;
lto_output_data_stream (decl_state_stream, &num_decl_states,
sizeof (num_decl_states));
@@ -1479,8 +1487,7 @@ produce_asm_for_decls (cgraph_node_set set ATTRIBUTE_UNUSED,
VEC_index (lto_out_decl_state_ptr, lto_function_decl_states, idx);
lto_delete_out_decl_state (fn_out_state);
}
- lto_cgraph_encoder_delete (ob->decl_state->cgraph_node_encoder);
- lto_varpool_encoder_delete (ob->decl_state->varpool_node_encoder);
+ lto_symtab_encoder_delete (ob->decl_state->symtab_node_encoder);
VEC_free (lto_out_decl_state_ptr, heap, lto_function_decl_states);
lto_function_decl_states = NULL;
destroy_output_block (ob);
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 5c7bdd281d3..bed408aef0a 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -235,14 +235,13 @@ enum lto_section_type
LTO_section_decls = 0,
LTO_section_function_body,
LTO_section_static_initializer,
- LTO_section_cgraph,
- LTO_section_varpool,
+ LTO_section_symtab,
LTO_section_refs,
LTO_section_asm,
LTO_section_jump_functions,
LTO_section_ipa_pure_const,
LTO_section_ipa_reference,
- LTO_section_symtab,
+ LTO_section_symtab_nodes,
LTO_section_opts,
LTO_section_cgraph_opt_sum,
LTO_section_inline_summary,
@@ -336,7 +335,6 @@ struct lto_header
{
int16_t major_version;
int16_t minor_version;
- enum lto_section_type section_type;
};
/* The header for a function body. */
@@ -423,50 +421,33 @@ struct lto_stats_d
};
/* Encoder data structure used to stream callgraph nodes. */
-struct lto_cgraph_encoder_d
+struct lto_symtab_encoder_d
{
/* Map nodes to reference number. */
struct pointer_map_t *map;
/* Map reference number to node. */
- VEC(cgraph_node_ptr,heap) *nodes;
+ VEC(symtab_node,heap) *nodes;
/* Map of nodes where we want to output body. */
struct pointer_set_t *body;
+ /* Map of nodes where we want to output initializer. */
+ struct pointer_set_t *initializer;
+ /* Map of nodes in this partition. */
+ struct pointer_set_t *in_partition;
};
-typedef struct lto_cgraph_encoder_d *lto_cgraph_encoder_t;
-
-/* Return number of encoded nodes in ENCODER. */
-
-static inline int
-lto_cgraph_encoder_size (lto_cgraph_encoder_t encoder)
-{
- return VEC_length (cgraph_node_ptr, encoder->nodes);
-}
-
+typedef struct lto_symtab_encoder_d *lto_symtab_encoder_t;
-/* Encoder data structure used to stream callgraph nodes. */
-struct lto_varpool_encoder_d
+/* Iterator structure for cgraph node sets. */
+typedef struct
{
- /* Map nodes to reference number. */
- struct pointer_map_t *map;
+ lto_symtab_encoder_t encoder;
+ unsigned index;
+} lto_symtab_encoder_iterator;
- /* Map reference number to node. */
- VEC(varpool_node_ptr,heap) *nodes;
- /* Map of nodes where we want to output initializer. */
- struct pointer_set_t *initializer;
-};
-typedef struct lto_varpool_encoder_d *lto_varpool_encoder_t;
-/* Return number of encoded nodes in ENCODER. */
-
-static inline int
-lto_varpool_encoder_size (lto_varpool_encoder_t encoder)
-{
- return VEC_length (varpool_node_ptr, encoder->nodes);
-}
/* Mapping from indices to trees. */
struct GTY(()) lto_tree_ref_table
@@ -520,10 +501,7 @@ struct lto_out_decl_state
struct lto_tree_ref_encoder streams[LTO_N_DECL_STREAMS];
/* Encoder for cgraph nodes. */
- lto_cgraph_encoder_t cgraph_node_encoder;
-
- /* Encoder for varpool nodes. */
- lto_varpool_encoder_t varpool_node_encoder;
+ lto_symtab_encoder_t symtab_node_encoder;
/* If this out-decl state belongs to a function, fn_decl points to that
function. Otherwise, it is NULL. */
@@ -549,10 +527,7 @@ struct GTY(()) lto_file_decl_data
struct lto_in_decl_state *global_decl_state;
/* Table of cgraph nodes present in this file. */
- lto_cgraph_encoder_t GTY((skip)) cgraph_node_encoder;
-
- /* Table of varpool nodes present in this file. */
- lto_varpool_encoder_t GTY((skip)) varpool_node_encoder;
+ lto_symtab_encoder_t GTY((skip)) symtab_node_encoder;
/* Hash table maps lto-related section names to location in file. */
htab_t GTY((param_is (struct lto_in_decl_state))) function_decl_states;
@@ -837,35 +812,29 @@ void lto_output_location (struct output_block *, location_t);
/* In lto-cgraph.c */
-struct cgraph_node *lto_cgraph_encoder_deref (lto_cgraph_encoder_t, int);
-int lto_cgraph_encoder_lookup (lto_cgraph_encoder_t, struct cgraph_node *);
-lto_cgraph_encoder_t lto_cgraph_encoder_new (void);
-int lto_cgraph_encoder_encode (lto_cgraph_encoder_t, struct cgraph_node *);
-void lto_cgraph_encoder_delete (lto_cgraph_encoder_t);
-bool lto_cgraph_encoder_encode_body_p (lto_cgraph_encoder_t,
+int lto_symtab_encoder_lookup (lto_symtab_encoder_t, symtab_node);
+lto_symtab_encoder_t lto_symtab_encoder_new (void);
+int lto_symtab_encoder_encode (lto_symtab_encoder_t, symtab_node);
+void lto_symtab_encoder_delete (lto_symtab_encoder_t);
+bool lto_symtab_encoder_encode_body_p (lto_symtab_encoder_t,
struct cgraph_node *);
-
-bool lto_varpool_encoder_encode_body_p (lto_varpool_encoder_t,
- struct varpool_node *);
-struct varpool_node *lto_varpool_encoder_deref (lto_varpool_encoder_t, int);
-int lto_varpool_encoder_lookup (lto_varpool_encoder_t, struct varpool_node *);
-lto_varpool_encoder_t lto_varpool_encoder_new (void);
-int lto_varpool_encoder_encode (lto_varpool_encoder_t, struct varpool_node *);
-void lto_varpool_encoder_delete (lto_varpool_encoder_t);
-bool lto_varpool_encoder_encode_initializer_p (lto_varpool_encoder_t,
- struct varpool_node *);
-void output_cgraph (cgraph_node_set, varpool_node_set);
-void input_cgraph (void);
+bool lto_symtab_encoder_in_partition_p (lto_symtab_encoder_t,
+ symtab_node);
+void lto_set_symtab_encoder_in_partition (lto_symtab_encoder_t,
+ symtab_node);
+
+bool lto_symtab_encoder_encode_initializer_p (lto_symtab_encoder_t,
+ struct varpool_node *);
+void output_symtab (void);
+void input_symtab (void);
bool referenced_from_other_partition_p (struct ipa_ref_list *,
- cgraph_node_set,
- varpool_node_set vset);
+ lto_symtab_encoder_t);
bool reachable_from_other_partition_p (struct cgraph_node *,
- cgraph_node_set);
+ lto_symtab_encoder_t);
bool referenced_from_this_partition_p (struct ipa_ref_list *,
- cgraph_node_set,
- varpool_node_set vset);
+ lto_symtab_encoder_t);
bool reachable_from_this_partition_p (struct cgraph_node *,
- cgraph_node_set);
+ lto_symtab_encoder_t);
void compute_ltrans_boundary (struct lto_out_decl_state *state,
cgraph_node_set, varpool_node_set);
@@ -1021,6 +990,149 @@ emit_label_in_global_context_p (tree label)
return DECL_NONLOCAL (label) || FORCED_LABEL (label);
}
+/* Return number of encoded nodes in ENCODER. */
+static inline int
+lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
+{
+ return VEC_length (symtab_node, encoder->nodes);
+}
+
+/* Return true if iterator LSE points to nothing. */
+static inline bool
+lsei_end_p (lto_symtab_encoder_iterator lsei)
+{
+ return lsei.index >= (unsigned)lto_symtab_encoder_size (lsei.encoder);
+}
+
+/* Advance iterator LSE. */
+static inline void
+lsei_next (lto_symtab_encoder_iterator *lsei)
+{
+ lsei->index++;
+}
+
+/* Return the node pointed to by LSI. */
+static inline symtab_node
+lsei_node (lto_symtab_encoder_iterator lsei)
+{
+ return VEC_index (symtab_node, lsei.encoder->nodes, lsei.index);
+}
+
+/* Return the node pointed to by LSI. */
+static inline struct cgraph_node *
+lsei_cgraph_node (lto_symtab_encoder_iterator lsei)
+{
+ return cgraph (VEC_index (symtab_node, lsei.encoder->nodes, lsei.index));
+}
+
+/* Return the node pointed to by LSI. */
+static inline struct varpool_node *
+lsei_varpool_node (lto_symtab_encoder_iterator lsei)
+{
+ return varpool (VEC_index (symtab_node, lsei.encoder->nodes, lsei.index));
+}
+
+/* Value used to represent failure of lto_symtab_encoder_lookup. */
+#define LCC_NOT_FOUND (-1)
+
+/* Return the cgraph node corresponding to REF using ENCODER. */
+
+static inline symtab_node
+lto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
+{
+ if (ref == LCC_NOT_FOUND)
+ return NULL;
+
+ return VEC_index (symtab_node, encoder->nodes, ref);
+}
+
+/* Return an iterator to the first node in LSI. */
+static inline lto_symtab_encoder_iterator
+lsei_start (lto_symtab_encoder_t encoder)
+{
+ lto_symtab_encoder_iterator lsei;
+
+ lsei.encoder = encoder;
+ lsei.index = 0;
+ return lsei;
+}
+
+/* Advance iterator LSE. */
+static inline void
+lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
+{
+ lsei_next (lsei);
+ while (!lsei_end_p (*lsei)
+ && !lto_symtab_encoder_in_partition_p (lsei->encoder, lsei_node (*lsei)))
+ lsei_next (lsei);
+}
+
+/* Return an iterator to the first node in LSI. */
+static inline lto_symtab_encoder_iterator
+lsei_start_in_partition (lto_symtab_encoder_t encoder)
+{
+ lto_symtab_encoder_iterator lsei = lsei_start (encoder);
+
+ if (lsei_end_p (lsei))
+ return lsei;
+ if (!lto_symtab_encoder_in_partition_p (encoder, lsei_node (lsei)))
+ lsei_next_in_partition (&lsei);
+
+ return lsei;
+}
+
+/* Advance iterator LSE. */
+static inline void
+lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
+{
+ lsei_next (lsei);
+ while (!lsei_end_p (*lsei)
+ && (!symtab_function_p (lsei_node (*lsei))
+ || !lto_symtab_encoder_in_partition_p (lsei->encoder, lsei_node (*lsei))))
+ lsei_next (lsei);
+}
+
+/* Return an iterator to the first node in LSI. */
+static inline lto_symtab_encoder_iterator
+lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
+{
+ lto_symtab_encoder_iterator lsei = lsei_start (encoder);
+
+ if (lsei_end_p (lsei))
+ return lsei;
+ if (!symtab_function_p (lsei_node (lsei))
+ || !lto_symtab_encoder_in_partition_p (encoder, lsei_node (lsei)))
+ lsei_next_function_in_partition (&lsei);
+
+ return lsei;
+}
+
+/* Advance iterator LSE. */
+static inline void
+lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
+{
+ lsei_next (lsei);
+ while (!lsei_end_p (*lsei)
+ && (!symtab_variable_p (lsei_node (*lsei))
+ || !lto_symtab_encoder_in_partition_p (lsei->encoder, lsei_node (*lsei))))
+ lsei_next (lsei);
+}
+
+/* Return an iterator to the first node in LSI. */
+static inline lto_symtab_encoder_iterator
+lsei_start_variable_in_partition (lto_symtab_encoder_t encoder)
+{
+ lto_symtab_encoder_iterator lsei = lsei_start (encoder);
+
+ if (lsei_end_p (lsei))
+ return lsei;
+ if (!symtab_variable_p (lsei_node (lsei))
+ || !lto_symtab_encoder_in_partition_p (encoder, lsei_node (lsei)))
+ lsei_next_variable_in_partition (&lsei);
+
+ return lsei;
+}
+
DEFINE_DECL_STREAM_FUNCS (TYPE, type)
DEFINE_DECL_STREAM_FUNCS (FIELD_DECL, field_decl)
DEFINE_DECL_STREAM_FUNCS (FN_DECL, fn_decl)
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 3f025dc8363..4143c6af25d 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,23 @@
+2012-08-12 Jan Hubicka <jh@suse.cz>
+
+ * lto-partition.c (set_referenced_from_other_partition_p,
+ set_reachable_from_other_partition_p, set_referenced_from_this_partition_p):
+ New functions.
+ (lto_promote_cross_file_statics): Use them.
+
+2012-07-24 Jan Hubicka <jh@suse.cz>
+
+ * lto.c (read_cgraph_and_symbols): Use input_symtab.
+
+2012-07-24 Uros Bizjak <ubizjak@gmail.com>
+
+ * lto-tree.h (lang_decl): Add variable_size GTY option.
+
+2012-07-16 Steven Bosscher <steven@gcc.gnu.org>
+
+ * lto.c: Do not include timevar.h.
+ * Make-lang.in: Fix dependencies.
+
2012-06-18 Lawrence Crowl <crowl@google.com>
* lto.c (do_whole_program_analysis): Rename use of TV_PHASE_CGRAPH to
diff --git a/gcc/lto/Make-lang.in b/gcc/lto/Make-lang.in
index b02310992c2..152593a653f 100644
--- a/gcc/lto/Make-lang.in
+++ b/gcc/lto/Make-lang.in
@@ -84,7 +84,7 @@ lto/lto.o: lto/lto.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(OPTS_H) \
toplev.h $(TREE_H) $(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(TM_H) \
$(CGRAPH_H) $(GGC_H) tree-ssa-operands.h $(TREE_PASS_H) \
langhooks.h $(VEC_H) $(BITMAP_H) pointer-set.h $(IPA_PROP_H) \
- $(COMMON_H) debug.h $(TIMEVAR_H) $(GIMPLE_H) $(LTO_H) $(LTO_TREE_H) \
+ $(COMMON_H) debug.h $(GIMPLE_H) $(LTO_H) $(LTO_TREE_H) \
$(LTO_TAGS_H) $(LTO_STREAMER_H) $(SPLAY_TREE_H) gt-lto-lto.h \
$(TREE_STREAMER_H) lto/lto-partition.h
lto/lto-partition.o: lto/lto-partition.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c
index 602173dd949..37289b694ef 100644
--- a/gcc/lto/lto-partition.c
+++ b/gcc/lto/lto-partition.c
@@ -797,6 +797,79 @@ promote_fn (struct cgraph_node *node)
return true;
}
+/* Return if LIST contain references from other partitions.
+ TODO: remove this once lto partitioning is using encoders. */
+
+static bool
+set_referenced_from_other_partition_p (struct ipa_ref_list *list, cgraph_node_set set,
+ varpool_node_set vset)
+{
+ int i;
+ struct ipa_ref *ref;
+ for (i = 0; ipa_ref_list_referring_iterate (list, i, ref); i++)
+ {
+ if (symtab_function_p (ref->referring))
+ {
+ if (ipa_ref_referring_node (ref)->symbol.in_other_partition
+ || !cgraph_node_in_set_p (ipa_ref_referring_node (ref), set))
+ return true;
+ }
+ else
+ {
+ if (ipa_ref_referring_varpool_node (ref)->symbol.in_other_partition
+ || !varpool_node_in_set_p (ipa_ref_referring_varpool_node (ref),
+ vset))
+ return true;
+ }
+ }
+ return false;
+}
+
+/* Return true when node is reachable from other partition.
+ TODO: remove this once lto partitioning is using encoders. */
+
+static bool
+set_reachable_from_other_partition_p (struct cgraph_node *node, cgraph_node_set set)
+{
+ struct cgraph_edge *e;
+ if (!node->analyzed)
+ return false;
+ if (node->global.inlined_to)
+ return false;
+ for (e = node->callers; e; e = e->next_caller)
+ if (e->caller->symbol.in_other_partition
+ || !cgraph_node_in_set_p (e->caller, set))
+ return true;
+ return false;
+}
+
+
+/* Return if LIST contain references from other partitions.
+ TODO: remove this once lto partitioning is using encoders. */
+
+static bool
+set_referenced_from_this_partition_p (struct ipa_ref_list *list, cgraph_node_set set,
+ varpool_node_set vset)
+{
+ int i;
+ struct ipa_ref *ref;
+ for (i = 0; ipa_ref_list_referring_iterate (list, i, ref); i++)
+ {
+ if (symtab_function_p (ref->referring))
+ {
+ if (cgraph_node_in_set_p (ipa_ref_referring_node (ref), set))
+ return true;
+ }
+ else
+ {
+ if (varpool_node_in_set_p (ipa_ref_referring_varpool_node (ref),
+ vset))
+ return true;
+ }
+ }
+ return false;
+}
+
/* Find out all static decls that need to be promoted to global because
of cross file sharing. This function must be run in the WPA mode after
all inlinees are added. */
@@ -834,8 +907,8 @@ lto_promote_cross_file_statics (void)
continue;
if ((!DECL_EXTERNAL (node->symbol.decl)
&& !DECL_COMDAT (node->symbol.decl))
- && (referenced_from_other_partition_p (&node->symbol.ref_list, set, vset)
- || reachable_from_other_partition_p (node, set)))
+ && (set_referenced_from_other_partition_p (&node->symbol.ref_list, set, vset)
+ || set_reachable_from_other_partition_p (node, set)))
promote_fn (node);
}
for (vsi = vsi_start (vset); !vsi_end_p (vsi); vsi_next (&vsi))
@@ -848,7 +921,7 @@ lto_promote_cross_file_statics (void)
&& !DECL_EXTERNAL (vnode->symbol.decl)
&& !DECL_COMDAT (vnode->symbol.decl)
&& !vnode->symbol.externally_visible && vnode->analyzed
- && referenced_from_other_partition_p (&vnode->symbol.ref_list,
+ && set_referenced_from_other_partition_p (&vnode->symbol.ref_list,
set, vset))
promote_var (vnode);
}
@@ -866,7 +939,7 @@ lto_promote_cross_file_statics (void)
if (const_value_known_p (vnode->symbol.decl)
&& DECL_INITIAL (vnode->symbol.decl)
&& !varpool_node_in_set_p (vnode, vset)
- && referenced_from_this_partition_p (&vnode->symbol.ref_list, set, vset)
+ && set_referenced_from_this_partition_p (&vnode->symbol.ref_list, set, vset)
&& !pointer_set_insert (inserted, vnode))
VEC_safe_push (varpool_node_ptr, heap, promoted_initializers, vnode);
diff --git a/gcc/lto/lto-tree.h b/gcc/lto/lto-tree.h
index 847348c7253..c29898d4254 100644
--- a/gcc/lto/lto-tree.h
+++ b/gcc/lto/lto-tree.h
@@ -28,7 +28,7 @@ struct GTY(()) lang_identifier
struct tree_identifier base;
};
-struct GTY(()) lang_decl
+struct GTY((variable_size)) lang_decl
{
int dummy; /* Added because ggc does not like empty structs. */
};
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index df5c3df2ef3..bd91c391fd1 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
#include "ipa-prop.h"
#include "common.h"
#include "debug.h"
-#include "timevar.h"
#include "gimple.h"
#include "lto.h"
#include "lto-tree.h"
@@ -1808,8 +1807,8 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames)
fprintf (stderr, "\nReading the callgraph\n");
timevar_push (TV_IPA_LTO_CGRAPH_IO);
- /* Read the callgraph. */
- input_cgraph ();
+ /* Read the symtab. */
+ input_symtab ();
timevar_pop (TV_IPA_LTO_CGRAPH_IO);
if (!quiet_flag)
diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c
deleted file mode 100644
index 8395dd2beae..00000000000
--- a/gcc/matrix-reorg.c
+++ /dev/null
@@ -1,2392 +0,0 @@
-/* Matrix layout transformations.
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Contributed by Razya Ladelsky <razya@il.ibm.com>
- Originally written by Revital Eres and Mustafa Hagog.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-/*
- Matrix flattening optimization tries to replace a N-dimensional
- matrix with its equivalent M-dimensional matrix, where M < N.
- This first implementation focuses on global matrices defined dynamically.
-
- When N==1, we actually flatten the whole matrix.
- For instance consider a two-dimensional array a [dim1] [dim2].
- The code for allocating space for it usually looks like:
-
- a = (int **) malloc(dim1 * sizeof(int *));
- for (i=0; i<dim1; i++)
- a[i] = (int *) malloc (dim2 * sizeof(int));
-
- If the array "a" is found suitable for this optimization,
- its allocation is replaced by:
-
- a = (int *) malloc (dim1 * dim2 *sizeof(int));
-
- and all the references to a[i][j] are replaced by a[i * dim2 + j].
-
- The two main phases of the optimization are the analysis
- and transformation.
- The driver of the optimization is matrix_reorg ().
-
-
-
- Analysis phase:
- ===============
-
- We'll number the dimensions outside-in, meaning the most external
- is 0, then 1, and so on.
- The analysis part of the optimization determines K, the escape
- level of a N-dimensional matrix (K <= N), that allows flattening of
- the external dimensions 0,1,..., K-1. Escape level 0 means that the
- whole matrix escapes and no flattening is possible.
-
- The analysis part is implemented in analyze_matrix_allocation_site()
- and analyze_matrix_accesses().
-
- Transformation phase:
- =====================
- In this phase we define the new flattened matrices that replace the
- original matrices in the code.
- Implemented in transform_allocation_sites(),
- transform_access_sites().
-
- Matrix Transposing
- ==================
- The idea of Matrix Transposing is organizing the matrix in a different
- layout such that the dimensions are reordered.
- This could produce better cache behavior in some cases.
-
- For example, lets look at the matrix accesses in the following loop:
-
- for (i=0; i<N; i++)
- for (j=0; j<M; j++)
- access to a[i][j]
-
- This loop can produce good cache behavior because the elements of
- the inner dimension are accessed sequentially.
-
- However, if the accesses of the matrix were of the following form:
-
- for (i=0; i<N; i++)
- for (j=0; j<M; j++)
- access to a[j][i]
-
- In this loop we iterate the columns and not the rows.
- Therefore, replacing the rows and columns
- would have had an organization with better (cache) locality.
- Replacing the dimensions of the matrix is called matrix transposing.
-
- This example, of course, could be enhanced to multiple dimensions matrices
- as well.
-
- Since a program could include all kind of accesses, there is a decision
- mechanism, implemented in analyze_transpose(), which implements a
- heuristic that tries to determine whether to transpose the matrix or not,
- according to the form of the more dominant accesses.
- This decision is transferred to the flattening mechanism, and whether
- the matrix was transposed or not, the matrix is flattened (if possible).
-
- This decision making is based on profiling information and loop information.
- If profiling information is available, decision making mechanism will be
- operated, otherwise the matrix will only be flattened (if possible).
-
- Both optimizations are described in the paper "Matrix flattening and
- transposing in GCC" which was presented in GCC summit 2006.
- http://www.gccsummit.org/2006/2006-GCC-Summit-Proceedings.pdf. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "tree.h"
-#include "rtl.h"
-#include "tree-inline.h"
-#include "tree-flow.h"
-#include "tree-flow-inline.h"
-#include "langhooks.h"
-#include "hashtab.h"
-#include "flags.h"
-#include "ggc.h"
-#include "debug.h"
-#include "target.h"
-#include "cgraph.h"
-#include "diagnostic-core.h"
-#include "timevar.h"
-#include "params.h"
-#include "fibheap.h"
-#include "intl.h"
-#include "function.h"
-#include "basic-block.h"
-#include "cfgloop.h"
-#include "tree-iterator.h"
-#include "tree-pass.h"
-#include "opts.h"
-#include "tree-data-ref.h"
-#include "tree-chrec.h"
-#include "tree-scalar-evolution.h"
-#include "tree-ssa-sccvn.h"
-
-/* We need to collect a lot of data from the original malloc,
- particularly as the gimplifier has converted:
-
- orig_var = (struct_type *) malloc (x * sizeof (struct_type *));
-
- into
-
- T3 = <constant> ; ** <constant> is amount to malloc; precomputed **
- T4 = malloc (T3);
- T5 = (struct_type *) T4;
- orig_var = T5;
-
- The following struct fields allow us to collect all the necessary data from
- the gimplified program. The comments in the struct below are all based
- on the gimple example above. */
-
-struct malloc_call_data
-{
- gimple call_stmt; /* Tree for "T4 = malloc (T3);" */
- tree size_var; /* Var decl for T3. */
- tree malloc_size; /* Tree for "<constant>", the rhs assigned to T3. */
-};
-
-static tree can_calculate_expr_before_stmt (tree, sbitmap);
-static tree can_calculate_stmt_before_stmt (gimple, sbitmap);
-
-/* The front end of the compiler, when parsing statements of the form:
-
- var = (type_cast) malloc (sizeof (type));
-
- always converts this single statement into the following statements
- (GIMPLE form):
-
- T.1 = sizeof (type);
- T.2 = malloc (T.1);
- T.3 = (type_cast) T.2;
- var = T.3;
-
- Since we need to create new malloc statements and modify the original
- statements somewhat, we need to find all four of the above statements.
- Currently record_call_1 (called for building cgraph edges) finds and
- records the statements containing the actual call to malloc, but we
- need to find the rest of the variables/statements on our own. That
- is what the following function does. */
-static void
-collect_data_for_malloc_call (gimple stmt, struct malloc_call_data *m_data)
-{
- tree size_var = NULL;
- tree malloc_fn_decl;
- tree arg1;
-
- gcc_assert (is_gimple_call (stmt));
-
- malloc_fn_decl = gimple_call_fndecl (stmt);
- if (malloc_fn_decl == NULL
- || DECL_FUNCTION_CODE (malloc_fn_decl) != BUILT_IN_MALLOC)
- return;
-
- arg1 = gimple_call_arg (stmt, 0);
- size_var = arg1;
-
- m_data->call_stmt = stmt;
- m_data->size_var = size_var;
- if (TREE_CODE (size_var) != VAR_DECL)
- m_data->malloc_size = size_var;
- else
- m_data->malloc_size = NULL_TREE;
-}
-
-/* Information about matrix access site.
- For example: if an access site of matrix arr is arr[i][j]
- the ACCESS_SITE_INFO structure will have the address
- of arr as its stmt. The INDEX_INFO will hold information about the
- initial address and index of each dimension. */
-struct access_site_info
-{
- /* The statement (MEM_REF or POINTER_PLUS_EXPR). */
- gimple stmt;
-
- /* In case of POINTER_PLUS_EXPR, what is the offset. */
- tree offset;
-
- /* The index which created the offset. */
- tree index;
-
- /* The indirection level of this statement. */
- int level;
-
- /* TRUE for allocation site FALSE for access site. */
- bool is_alloc;
-
- /* The function containing the access site. */
- tree function_decl;
-
- /* This access is iterated in the inner most loop */
- bool iterated_by_inner_most_loop_p;
-};
-
-typedef struct access_site_info *access_site_info_p;
-DEF_VEC_P (access_site_info_p);
-DEF_VEC_ALLOC_P (access_site_info_p, heap);
-
-/* Calls to free when flattening a matrix. */
-
-struct free_info
-{
- gimple stmt;
- tree func;
-};
-
-/* Information about matrix to flatten. */
-struct matrix_info
-{
- /* Decl tree of this matrix. */
- tree decl;
- /* Number of dimensions; number
- of "*" in the type declaration. */
- int num_dims;
-
- /* Minimum indirection level that escapes, 0 means that
- the whole matrix escapes, k means that dimensions
- 0 to ACTUAL_DIM - k escapes. */
- int min_indirect_level_escape;
-
- gimple min_indirect_level_escape_stmt;
-
- /* Hold the allocation site for each level (dimension).
- We can use NUM_DIMS as the upper bound and allocate the array
- once with this number of elements and no need to use realloc and
- MAX_MALLOCED_LEVEL. */
- gimple *malloc_for_level;
-
- int max_malloced_level;
-
- /* Is the matrix transposed. */
- bool is_transposed_p;
-
- /* The location of the allocation sites (they must be in one
- function). */
- tree allocation_function_decl;
-
- /* The calls to free for each level of indirection. */
- struct free_info *free_stmts;
-
- /* An array which holds for each dimension its size. where
- dimension 0 is the outer most (one that contains all the others).
- */
- tree *dimension_size;
-
- /* An array which holds for each dimension it's original size
- (before transposing and flattening take place). */
- tree *dimension_size_orig;
-
- /* An array which holds for each dimension the size of the type of
- of elements accessed in that level (in bytes). */
- HOST_WIDE_INT *dimension_type_size;
-
- int dimension_type_size_len;
-
- /* An array collecting the count of accesses for each dimension. */
- gcov_type *dim_hot_level;
-
- /* An array of the accesses to be flattened.
- elements are of type "struct access_site_info *". */
- VEC (access_site_info_p, heap) * access_l;
-
- /* A map of how the dimensions will be organized at the end of
- the analyses. */
- int *dim_map;
-};
-
-/* In each phi node we want to record the indirection level we have when we
- get to the phi node. Usually we will have phi nodes with more than two
- arguments, then we must assure that all of them get to the phi node with
- the same indirection level, otherwise it's not safe to do the flattening.
- So we record the information regarding the indirection level each time we
- get to the phi node in this hash table. */
-
-struct matrix_access_phi_node
-{
- gimple phi;
- int indirection_level;
-};
-
-/* We use this structure to find if the SSA variable is accessed inside the
- tree and record the tree containing it. */
-
-struct ssa_acc_in_tree
-{
- /* The variable whose accesses in the tree we are looking for. */
- tree ssa_var;
- /* The tree and code inside it the ssa_var is accessed, currently
- it could be an MEM_REF or CALL_EXPR. */
- enum tree_code t_code;
- tree t_tree;
- /* The place in the containing tree. */
- tree *tp;
- tree second_op;
- bool var_found;
-};
-
-static void analyze_matrix_accesses (struct matrix_info *, tree, int, bool,
- sbitmap, bool);
-static int transform_allocation_sites (void **, void *);
-static int transform_access_sites (void **, void *);
-static int analyze_transpose (void **, void *);
-static int dump_matrix_reorg_analysis (void **, void *);
-
-static bool check_transpose_p;
-
-/* Hash function used for the phi nodes. */
-
-static hashval_t
-mat_acc_phi_hash (const void *p)
-{
- const struct matrix_access_phi_node *const ma_phi =
- (const struct matrix_access_phi_node *) p;
-
- return htab_hash_pointer (ma_phi->phi);
-}
-
-/* Equality means phi node pointers are the same. */
-
-static int
-mat_acc_phi_eq (const void *p1, const void *p2)
-{
- const struct matrix_access_phi_node *const phi1 =
- (const struct matrix_access_phi_node *) p1;
- const struct matrix_access_phi_node *const phi2 =
- (const struct matrix_access_phi_node *) p2;
-
- if (phi1->phi == phi2->phi)
- return 1;
-
- return 0;
-}
-
-/* Hold the PHI nodes we visit during the traversal for escaping
- analysis. */
-static htab_t htab_mat_acc_phi_nodes = NULL;
-
-/* This hash-table holds the information about the matrices we are
- going to handle. */
-static htab_t matrices_to_reorg = NULL;
-
-/* Return a hash for MTT, which is really a "matrix_info *". */
-static hashval_t
-mtt_info_hash (const void *mtt)
-{
- return htab_hash_pointer (((const struct matrix_info *) mtt)->decl);
-}
-
-/* Return true if MTT1 and MTT2 (which are really both of type
- "matrix_info *") refer to the same decl. */
-static int
-mtt_info_eq (const void *mtt1, const void *mtt2)
-{
- const struct matrix_info *const i1 = (const struct matrix_info *) mtt1;
- const struct matrix_info *const i2 = (const struct matrix_info *) mtt2;
-
- if (i1->decl == i2->decl)
- return true;
-
- return false;
-}
-
-/* Return false if STMT may contain a vector expression.
- In this situation, all matrices should not be flattened. */
-static bool
-may_flatten_matrices_1 (gimple stmt)
-{
- switch (gimple_code (stmt))
- {
- case GIMPLE_ASSIGN:
- case GIMPLE_CALL:
- if (!gimple_has_lhs (stmt))
- return true;
- if (TREE_CODE (TREE_TYPE (gimple_get_lhs (stmt))) == VECTOR_TYPE)
- {
- if (dump_file)
- fprintf (dump_file,
- "Found vector type, don't flatten matrix\n");
- return false;
- }
- break;
- case GIMPLE_ASM:
- /* Asm code could contain vector operations. */
- return false;
- break;
- default:
- break;
- }
- return true;
-}
-
-/* Return false if there are hand-written vectors in the program.
- We disable the flattening in such a case. */
-static bool
-may_flatten_matrices (struct cgraph_node *node)
-{
- tree decl;
- struct function *func;
- basic_block bb;
- gimple_stmt_iterator gsi;
-
- decl = node->symbol.decl;
- if (node->analyzed)
- {
- func = DECL_STRUCT_FUNCTION (decl);
- FOR_EACH_BB_FN (bb, func)
- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- if (!may_flatten_matrices_1 (gsi_stmt (gsi)))
- return false;
- }
- return true;
-}
-
-/* Given a VAR_DECL, check its type to determine whether it is
- a definition of a dynamic allocated matrix and therefore is
- a suitable candidate for the matrix flattening optimization.
- Return NULL if VAR_DECL is not such decl. Otherwise, allocate
- a MATRIX_INFO structure, fill it with the relevant information
- and return a pointer to it.
- TODO: handle also statically defined arrays. */
-static struct matrix_info *
-analyze_matrix_decl (tree var_decl)
-{
- struct matrix_info *m_node, tmpmi, *mi;
- tree var_type;
- int dim_num = 0;
-
- gcc_assert (matrices_to_reorg);
-
- if (TREE_CODE (var_decl) == PARM_DECL)
- var_type = DECL_ARG_TYPE (var_decl);
- else if (TREE_CODE (var_decl) == VAR_DECL)
- var_type = TREE_TYPE (var_decl);
- else
- return NULL;
-
- if (!POINTER_TYPE_P (var_type))
- return NULL;
-
- while (POINTER_TYPE_P (var_type))
- {
- var_type = TREE_TYPE (var_type);
- dim_num++;
- }
-
- if (dim_num <= 1)
- return NULL;
-
- if (!COMPLETE_TYPE_P (var_type)
- || TREE_CODE (TYPE_SIZE_UNIT (var_type)) != INTEGER_CST)
- return NULL;
-
- /* Check to see if this pointer is already in there. */
- tmpmi.decl = var_decl;
- mi = (struct matrix_info *) htab_find (matrices_to_reorg, &tmpmi);
-
- if (mi)
- return NULL;
-
- /* Record the matrix. */
-
- m_node = (struct matrix_info *) xcalloc (1, sizeof (struct matrix_info));
- m_node->decl = var_decl;
- m_node->num_dims = dim_num;
- m_node->free_stmts
- = (struct free_info *) xcalloc (dim_num, sizeof (struct free_info));
-
- /* Init min_indirect_level_escape to -1 to indicate that no escape
- analysis has been done yet. */
- m_node->min_indirect_level_escape = -1;
- m_node->is_transposed_p = false;
-
- return m_node;
-}
-
-/* Free matrix E. */
-static void
-mat_free (void *e)
-{
- struct matrix_info *mat = (struct matrix_info *) e;
-
- if (!mat)
- return;
-
- free (mat->free_stmts);
- free (mat->dim_hot_level);
- free (mat->malloc_for_level);
-}
-
-/* Find all potential matrices.
- TODO: currently we handle only multidimensional
- dynamically allocated arrays. */
-static void
-find_matrices_decl (void)
-{
- struct matrix_info *tmp;
- PTR *slot;
- struct varpool_node *vnode;
-
- gcc_assert (matrices_to_reorg);
-
- /* For every global variable in the program:
- Check to see if it's of a candidate type and record it. */
- FOR_EACH_DEFINED_VARIABLE (vnode)
- {
- tree var_decl = vnode->symbol.decl;
-
- if (!var_decl || TREE_CODE (var_decl) != VAR_DECL)
- continue;
-
- if (matrices_to_reorg)
- if ((tmp = analyze_matrix_decl (var_decl)))
- {
- if (!TREE_ADDRESSABLE (var_decl))
- {
- slot = htab_find_slot (matrices_to_reorg, tmp, INSERT);
- *slot = tmp;
- }
- }
- }
- return;
-}
-
-/* Mark that the matrix MI escapes at level L. */
-static void
-mark_min_matrix_escape_level (struct matrix_info *mi, int l, gimple s)
-{
- if (mi->min_indirect_level_escape == -1
- || (mi->min_indirect_level_escape > l))
- {
- mi->min_indirect_level_escape = l;
- mi->min_indirect_level_escape_stmt = s;
- }
-}
-
-/* Find if the SSA variable is accessed inside the
- tree and record the tree containing it.
- The only relevant uses are the case of SSA_NAME, or SSA inside
- MEM_REF, PLUS_EXPR, POINTER_PLUS_EXPR, MULT_EXPR. */
-static void
-ssa_accessed_in_tree (tree t, struct ssa_acc_in_tree *a)
-{
- a->t_code = TREE_CODE (t);
- switch (a->t_code)
- {
- case SSA_NAME:
- if (t == a->ssa_var)
- a->var_found = true;
- break;
- case MEM_REF:
- if (SSA_VAR_P (TREE_OPERAND (t, 0))
- && TREE_OPERAND (t, 0) == a->ssa_var)
- a->var_found = true;
- break;
- default:
- break;
- }
-}
-
-/* Find if the SSA variable is accessed on the right hand side of
- gimple call STMT. */
-
-static void
-ssa_accessed_in_call_rhs (gimple stmt, struct ssa_acc_in_tree *a)
-{
- tree decl;
- tree arg;
- size_t i;
-
- a->t_code = CALL_EXPR;
- for (i = 0; i < gimple_call_num_args (stmt); i++)
- {
- arg = gimple_call_arg (stmt, i);
- if (arg == a->ssa_var)
- {
- a->var_found = true;
- decl = gimple_call_fndecl (stmt);
- a->t_tree = decl;
- break;
- }
- }
-}
-
-/* Find if the SSA variable is accessed on the right hand side of
- gimple assign STMT. */
-
-static void
-ssa_accessed_in_assign_rhs (gimple stmt, struct ssa_acc_in_tree *a)
-{
-
- a->t_code = gimple_assign_rhs_code (stmt);
- switch (a->t_code)
- {
- tree op1, op2;
-
- case SSA_NAME:
- case MEM_REF:
- CASE_CONVERT:
- case VIEW_CONVERT_EXPR:
- ssa_accessed_in_tree (gimple_assign_rhs1 (stmt), a);
- break;
- case POINTER_PLUS_EXPR:
- case PLUS_EXPR:
- case MULT_EXPR:
- op1 = gimple_assign_rhs1 (stmt);
- op2 = gimple_assign_rhs2 (stmt);
-
- if (op1 == a->ssa_var)
- {
- a->var_found = true;
- a->second_op = op2;
- }
- else if (op2 == a->ssa_var)
- {
- a->var_found = true;
- a->second_op = op1;
- }
- break;
- default:
- break;
- }
-}
-
-/* Record the access/allocation site information for matrix MI so we can
- handle it later in transformation. */
-static void
-record_access_alloc_site_info (struct matrix_info *mi, gimple stmt, tree offset,
- tree index, int level, bool is_alloc)
-{
- struct access_site_info *acc_info;
-
- if (!mi->access_l)
- mi->access_l = VEC_alloc (access_site_info_p, heap, 100);
-
- acc_info
- = (struct access_site_info *)
- xcalloc (1, sizeof (struct access_site_info));
- acc_info->stmt = stmt;
- acc_info->offset = offset;
- acc_info->index = index;
- acc_info->function_decl = current_function_decl;
- acc_info->level = level;
- acc_info->is_alloc = is_alloc;
-
- VEC_safe_push (access_site_info_p, heap, mi->access_l, acc_info);
-
-}
-
-/* Record the malloc as the allocation site of the given LEVEL. But
- first we Make sure that all the size parameters passed to malloc in
- all the allocation sites could be pre-calculated before the call to
- the malloc of level 0 (the main malloc call). */
-static void
-add_allocation_site (struct matrix_info *mi, gimple stmt, int level)
-{
- struct malloc_call_data mcd;
-
- /* Make sure that the allocation sites are in the same function. */
- if (!mi->allocation_function_decl)
- mi->allocation_function_decl = current_function_decl;
- else if (mi->allocation_function_decl != current_function_decl)
- {
- int min_malloc_level;
-
- gcc_assert (mi->malloc_for_level);
-
- /* Find the minimum malloc level that already has been seen;
- we known its allocation function must be
- MI->allocation_function_decl since it's different than
- CURRENT_FUNCTION_DECL then the escaping level should be
- MIN (LEVEL, MIN_MALLOC_LEVEL) - 1 , and the allocation function
- must be set accordingly. */
- for (min_malloc_level = 0;
- min_malloc_level < mi->max_malloced_level
- && mi->malloc_for_level[min_malloc_level]; min_malloc_level++)
- ;
- if (level < min_malloc_level)
- {
- mi->allocation_function_decl = current_function_decl;
- mark_min_matrix_escape_level (mi, min_malloc_level, stmt);
- }
- else
- {
- mark_min_matrix_escape_level (mi, level, stmt);
- /* cannot be that (level == min_malloc_level)
- we would have returned earlier. */
- return;
- }
- }
-
- /* Find the correct malloc information. */
- collect_data_for_malloc_call (stmt, &mcd);
-
- /* We accept only calls to malloc function; we do not accept
- calls like calloc and realloc. */
- if (!mi->malloc_for_level)
- {
- mi->malloc_for_level = XCNEWVEC (gimple, level + 1);
- mi->max_malloced_level = level + 1;
- }
- else if (mi->max_malloced_level <= level)
- {
- mi->malloc_for_level
- = XRESIZEVEC (gimple, mi->malloc_for_level, level + 1);
-
- /* Zero the newly allocated items. */
- memset (&(mi->malloc_for_level[mi->max_malloced_level + 1]),
- 0, (level - mi->max_malloced_level) * sizeof (tree));
-
- mi->max_malloced_level = level + 1;
- }
- mi->malloc_for_level[level] = stmt;
-}
-
-/* Given an assignment statement STMT that we know that its
- left-hand-side is the matrix MI variable, we traverse the immediate
- uses backwards until we get to a malloc site. We make sure that
- there is one and only one malloc site that sets this variable. When
- we are performing the flattening we generate a new variable that
- will hold the size for each dimension; each malloc that allocates a
- dimension has the size parameter; we use that parameter to
- initialize the dimension size variable so we can use it later in
- the address calculations. LEVEL is the dimension we're inspecting.
- Return if STMT is related to an allocation site. */
-
-static void
-analyze_matrix_allocation_site (struct matrix_info *mi, gimple stmt,
- int level, sbitmap visited)
-{
- if (gimple_assign_copy_p (stmt) || gimple_assign_cast_p (stmt))
- {
- tree rhs = gimple_assign_rhs1 (stmt);
-
- if (TREE_CODE (rhs) == SSA_NAME)
- {
- gimple def = SSA_NAME_DEF_STMT (rhs);
-
- analyze_matrix_allocation_site (mi, def, level, visited);
- return;
- }
- /* If we are back to the original matrix variable then we
- are sure that this is analyzed as an access site. */
- else if (rhs == mi->decl)
- return;
- }
- /* A result of call to malloc. */
- else if (is_gimple_call (stmt))
- {
- int call_flags = gimple_call_flags (stmt);
-
- if (!(call_flags & ECF_MALLOC))
- {
- mark_min_matrix_escape_level (mi, level, stmt);
- return;
- }
- else
- {
- tree malloc_fn_decl;
-
- malloc_fn_decl = gimple_call_fndecl (stmt);
- if (malloc_fn_decl == NULL_TREE)
- {
- mark_min_matrix_escape_level (mi, level, stmt);
- return;
- }
- if (DECL_FUNCTION_CODE (malloc_fn_decl) != BUILT_IN_MALLOC)
- {
- if (dump_file)
- fprintf (dump_file,
- "Matrix %s is an argument to function %s\n",
- get_name (mi->decl), get_name (malloc_fn_decl));
- mark_min_matrix_escape_level (mi, level, stmt);
- return;
- }
- }
- /* This is a call to malloc of level 'level'.
- mi->max_malloced_level-1 == level means that we've
- seen a malloc statement of level 'level' before.
- If the statement is not the same one that we've
- seen before, then there's another malloc statement
- for the same level, which means that we need to mark
- it escaping. */
- if (mi->malloc_for_level
- && mi->max_malloced_level-1 == level
- && mi->malloc_for_level[level] != stmt)
- {
- mark_min_matrix_escape_level (mi, level, stmt);
- return;
- }
- else
- add_allocation_site (mi, stmt, level);
- return;
- }
- /* Looks like we don't know what is happening in this
- statement so be in the safe side and mark it as escaping. */
- mark_min_matrix_escape_level (mi, level, stmt);
-}
-
-/* The transposing decision making.
- In order to calculate the profitability of transposing, we collect two
- types of information regarding the accesses:
- 1. profiling information used to express the hotness of an access, that
- is how often the matrix is accessed by this access site (count of the
- access site).
- 2. which dimension in the access site is iterated by the inner
- most loop containing this access.
-
- The matrix will have a calculated value of weighted hotness for each
- dimension.
- Intuitively the hotness level of a dimension is a function of how
- many times it was the most frequently accessed dimension in the
- highly executed access sites of this matrix.
-
- As computed by following equation:
- m n
- __ __
- \ \ dim_hot_level[i] +=
- /_ /_
- j i
- acc[j]->dim[i]->iter_by_inner_loop * count(j)
-
- Where n is the number of dims and m is the number of the matrix
- access sites. acc[j]->dim[i]->iter_by_inner_loop is 1 if acc[j]
- iterates over dim[i] in innermost loop, and is 0 otherwise.
-
- The organization of the new matrix should be according to the
- hotness of each dimension. The hotness of the dimension implies
- the locality of the elements.*/
-static int
-analyze_transpose (void **slot, void *data ATTRIBUTE_UNUSED)
-{
- struct matrix_info *mi = (struct matrix_info *) *slot;
- int min_escape_l = mi->min_indirect_level_escape;
- struct loop *loop;
- affine_iv iv;
- struct access_site_info *acc_info;
- int i;
-
- if (min_escape_l < 2 || !mi->access_l)
- {
- if (mi->access_l)
- {
- FOR_EACH_VEC_ELT (access_site_info_p, mi->access_l, i, acc_info)
- free (acc_info);
- VEC_free (access_site_info_p, heap, mi->access_l);
-
- }
- return 1;
- }
- if (!mi->dim_hot_level)
- mi->dim_hot_level =
- (gcov_type *) xcalloc (min_escape_l, sizeof (gcov_type));
-
-
- for (i = 0; VEC_iterate (access_site_info_p, mi->access_l, i, acc_info);
- i++)
- {
- if (gimple_assign_rhs_code (acc_info->stmt) == POINTER_PLUS_EXPR
- && acc_info->level < min_escape_l)
- {
- loop = loop_containing_stmt (acc_info->stmt);
- if (!loop || loop->inner)
- {
- free (acc_info);
- continue;
- }
- if (simple_iv (loop, loop, acc_info->offset, &iv, true))
- {
- if (iv.step != NULL)
- {
- HOST_WIDE_INT istep;
-
- istep = int_cst_value (iv.step);
- if (istep != 0)
- {
- acc_info->iterated_by_inner_most_loop_p = 1;
- mi->dim_hot_level[acc_info->level] +=
- gimple_bb (acc_info->stmt)->count;
- }
-
- }
- }
- }
- free (acc_info);
- }
- VEC_free (access_site_info_p, heap, mi->access_l);
-
- return 1;
-}
-
-/* Find the index which defines the OFFSET from base.
- We walk from use to def until we find how the offset was defined. */
-static tree
-get_index_from_offset (tree offset, gimple def_stmt)
-{
- tree op1, op2, index;
-
- if (gimple_code (def_stmt) == GIMPLE_PHI)
- return NULL;
- if ((gimple_assign_copy_p (def_stmt) || gimple_assign_cast_p (def_stmt))
- && TREE_CODE (gimple_assign_rhs1 (def_stmt)) == SSA_NAME)
- return get_index_from_offset (offset,
- SSA_NAME_DEF_STMT (gimple_assign_rhs1 (def_stmt)));
- else if (is_gimple_assign (def_stmt)
- && gimple_assign_rhs_code (def_stmt) == MULT_EXPR)
- {
- op1 = gimple_assign_rhs1 (def_stmt);
- op2 = gimple_assign_rhs2 (def_stmt);
- if (TREE_CODE (op1) != INTEGER_CST && TREE_CODE (op2) != INTEGER_CST)
- return NULL;
- index = (TREE_CODE (op1) == INTEGER_CST) ? op2 : op1;
- return index;
- }
- else
- return NULL_TREE;
-}
-
-/* update MI->dimension_type_size[CURRENT_INDIRECT_LEVEL] with the size
- of the type related to the SSA_VAR, or the type related to the
- lhs of STMT, in the case that it is an MEM_REF. */
-static void
-update_type_size (struct matrix_info *mi, gimple stmt, tree ssa_var,
- int current_indirect_level)
-{
- tree lhs;
- HOST_WIDE_INT type_size;
-
- /* Update type according to the type of the MEM_REF expr. */
- if (is_gimple_assign (stmt)
- && TREE_CODE (gimple_assign_lhs (stmt)) == MEM_REF)
- {
- lhs = gimple_assign_lhs (stmt);
- gcc_assert (POINTER_TYPE_P
- (TREE_TYPE (SSA_NAME_VAR (TREE_OPERAND (lhs, 0)))));
- type_size =
- int_size_in_bytes (TREE_TYPE
- (TREE_TYPE
- (SSA_NAME_VAR (TREE_OPERAND (lhs, 0)))));
- }
- else
- type_size = int_size_in_bytes (TREE_TYPE (ssa_var));
-
- /* Record the size of elements accessed (as a whole)
- in the current indirection level (dimension). If the size of
- elements is not known at compile time, mark it as escaping. */
- if (type_size <= 0)
- mark_min_matrix_escape_level (mi, current_indirect_level, stmt);
- else
- {
- int l = current_indirect_level;
-
- if (!mi->dimension_type_size)
- {
- mi->dimension_type_size
- = (HOST_WIDE_INT *) xcalloc (l + 1, sizeof (HOST_WIDE_INT));
- mi->dimension_type_size_len = l + 1;
- }
- else if (mi->dimension_type_size_len < l + 1)
- {
- mi->dimension_type_size
- = (HOST_WIDE_INT *) xrealloc (mi->dimension_type_size,
- (l + 1) * sizeof (HOST_WIDE_INT));
- memset (&mi->dimension_type_size[mi->dimension_type_size_len],
- 0, (l + 1 - mi->dimension_type_size_len)
- * sizeof (HOST_WIDE_INT));
- mi->dimension_type_size_len = l + 1;
- }
- /* Make sure all the accesses in the same level have the same size
- of the type. */
- if (!mi->dimension_type_size[l])
- mi->dimension_type_size[l] = type_size;
- else if (mi->dimension_type_size[l] != type_size)
- mark_min_matrix_escape_level (mi, l, stmt);
- }
-}
-
-/* USE_STMT represents a GIMPLE_CALL, where one of the arguments is the
- ssa var that we want to check because it came from some use of matrix
- MI. CURRENT_INDIRECT_LEVEL is the indirection level we reached so
- far. */
-
-static int
-analyze_accesses_for_call_stmt (struct matrix_info *mi, tree ssa_var,
- gimple use_stmt, int current_indirect_level)
-{
- tree fndecl = gimple_call_fndecl (use_stmt);
-
- if (gimple_call_lhs (use_stmt))
- {
- tree lhs = gimple_call_lhs (use_stmt);
- struct ssa_acc_in_tree lhs_acc, rhs_acc;
-
- memset (&lhs_acc, 0, sizeof (lhs_acc));
- memset (&rhs_acc, 0, sizeof (rhs_acc));
-
- lhs_acc.ssa_var = ssa_var;
- lhs_acc.t_code = ERROR_MARK;
- ssa_accessed_in_tree (lhs, &lhs_acc);
- rhs_acc.ssa_var = ssa_var;
- rhs_acc.t_code = ERROR_MARK;
- ssa_accessed_in_call_rhs (use_stmt, &rhs_acc);
-
- /* The SSA must be either in the left side or in the right side,
- to understand what is happening.
- In case the SSA_NAME is found in both sides we should be escaping
- at this level because in this case we cannot calculate the
- address correctly. */
- if ((lhs_acc.var_found && rhs_acc.var_found
- && lhs_acc.t_code == MEM_REF)
- || (!rhs_acc.var_found && !lhs_acc.var_found))
- {
- mark_min_matrix_escape_level (mi, current_indirect_level, use_stmt);
- return current_indirect_level;
- }
- gcc_assert (!rhs_acc.var_found || !lhs_acc.var_found);
-
- /* If we are storing to the matrix at some level, then mark it as
- escaping at that level. */
- if (lhs_acc.var_found)
- {
- int l = current_indirect_level + 1;
-
- gcc_assert (lhs_acc.t_code == MEM_REF);
- mark_min_matrix_escape_level (mi, l, use_stmt);
- return current_indirect_level;
- }
- }
-
- if (fndecl)
- {
- if (DECL_FUNCTION_CODE (fndecl) != BUILT_IN_FREE)
- {
- if (dump_file)
- fprintf (dump_file,
- "Matrix %s: Function call %s, level %d escapes.\n",
- get_name (mi->decl), get_name (fndecl),
- current_indirect_level);
- mark_min_matrix_escape_level (mi, current_indirect_level, use_stmt);
- }
- else if (mi->free_stmts[current_indirect_level].stmt != NULL
- && mi->free_stmts[current_indirect_level].stmt != use_stmt)
- mark_min_matrix_escape_level (mi, current_indirect_level, use_stmt);
- else
- {
- /*Record the free statements so we can delete them
- later. */
- int l = current_indirect_level;
-
- mi->free_stmts[l].stmt = use_stmt;
- mi->free_stmts[l].func = current_function_decl;
- }
- }
- return current_indirect_level;
-}
-
-/* USE_STMT represents a phi node of the ssa var that we want to
- check because it came from some use of matrix
- MI.
- We check all the escaping levels that get to the PHI node
- and make sure they are all the same escaping;
- if not (which is rare) we let the escaping level be the
- minimum level that gets into that PHI because starting from
- that level we cannot expect the behavior of the indirections.
- CURRENT_INDIRECT_LEVEL is the indirection level we reached so far. */
-
-static void
-analyze_accesses_for_phi_node (struct matrix_info *mi, gimple use_stmt,
- int current_indirect_level, sbitmap visited,
- bool record_accesses)
-{
-
- struct matrix_access_phi_node tmp_maphi, *maphi, **pmaphi;
-
- tmp_maphi.phi = use_stmt;
- if ((maphi = (struct matrix_access_phi_node *)
- htab_find (htab_mat_acc_phi_nodes, &tmp_maphi)))
- {
- if (maphi->indirection_level == current_indirect_level)
- return;
- else
- {
- int level = MIN (maphi->indirection_level,
- current_indirect_level);
- size_t j;
- gimple stmt = NULL;
-
- maphi->indirection_level = level;
- for (j = 0; j < gimple_phi_num_args (use_stmt); j++)
- {
- tree def = PHI_ARG_DEF (use_stmt, j);
-
- if (gimple_code (SSA_NAME_DEF_STMT (def)) != GIMPLE_PHI)
- stmt = SSA_NAME_DEF_STMT (def);
- }
- mark_min_matrix_escape_level (mi, level, stmt);
- }
- return;
- }
- maphi = (struct matrix_access_phi_node *)
- xcalloc (1, sizeof (struct matrix_access_phi_node));
- maphi->phi = use_stmt;
- maphi->indirection_level = current_indirect_level;
-
- /* Insert to hash table. */
- pmaphi = (struct matrix_access_phi_node **)
- htab_find_slot (htab_mat_acc_phi_nodes, maphi, INSERT);
- gcc_assert (pmaphi);
- *pmaphi = maphi;
-
- if (!TEST_BIT (visited, SSA_NAME_VERSION (PHI_RESULT (use_stmt))))
- {
- SET_BIT (visited, SSA_NAME_VERSION (PHI_RESULT (use_stmt)));
- analyze_matrix_accesses (mi, PHI_RESULT (use_stmt),
- current_indirect_level, false, visited,
- record_accesses);
- RESET_BIT (visited, SSA_NAME_VERSION (PHI_RESULT (use_stmt)));
- }
-}
-
-/* USE_STMT represents an assign statement (the rhs or lhs include
- the ssa var that we want to check because it came from some use of matrix
- MI. CURRENT_INDIRECT_LEVEL is the indirection level we reached so far. */
-
-static int
-analyze_accesses_for_assign_stmt (struct matrix_info *mi, tree ssa_var,
- gimple use_stmt, int current_indirect_level,
- bool last_op, sbitmap visited,
- bool record_accesses)
-{
- tree lhs = gimple_get_lhs (use_stmt);
- struct ssa_acc_in_tree lhs_acc, rhs_acc;
-
- memset (&lhs_acc, 0, sizeof (lhs_acc));
- memset (&rhs_acc, 0, sizeof (rhs_acc));
-
- lhs_acc.ssa_var = ssa_var;
- lhs_acc.t_code = ERROR_MARK;
- ssa_accessed_in_tree (lhs, &lhs_acc);
- rhs_acc.ssa_var = ssa_var;
- rhs_acc.t_code = ERROR_MARK;
- ssa_accessed_in_assign_rhs (use_stmt, &rhs_acc);
-
- /* The SSA must be either in the left side or in the right side,
- to understand what is happening.
- In case the SSA_NAME is found in both sides we should be escaping
- at this level because in this case we cannot calculate the
- address correctly. */
- if ((lhs_acc.var_found && rhs_acc.var_found
- && lhs_acc.t_code == MEM_REF)
- || (!rhs_acc.var_found && !lhs_acc.var_found))
- {
- mark_min_matrix_escape_level (mi, current_indirect_level, use_stmt);
- return current_indirect_level;
- }
- gcc_assert (!rhs_acc.var_found || !lhs_acc.var_found);
-
- /* If we are storing to the matrix at some level, then mark it as
- escaping at that level. */
- if (lhs_acc.var_found)
- {
- int l = current_indirect_level + 1;
-
- gcc_assert (lhs_acc.t_code == MEM_REF);
-
- if (!(gimple_assign_copy_p (use_stmt)
- || gimple_assign_cast_p (use_stmt))
- || (TREE_CODE (gimple_assign_rhs1 (use_stmt)) != SSA_NAME))
- mark_min_matrix_escape_level (mi, l, use_stmt);
- else
- {
- gimple def_stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (use_stmt));
- analyze_matrix_allocation_site (mi, def_stmt, l, visited);
- if (record_accesses)
- record_access_alloc_site_info (mi, use_stmt, NULL_TREE,
- NULL_TREE, l, true);
- update_type_size (mi, use_stmt, NULL, l);
- }
- return current_indirect_level;
- }
- /* Now, check the right-hand-side, to see how the SSA variable
- is used. */
- if (rhs_acc.var_found)
- {
- if (rhs_acc.t_code != MEM_REF
- && rhs_acc.t_code != POINTER_PLUS_EXPR && rhs_acc.t_code != SSA_NAME)
- {
- mark_min_matrix_escape_level (mi, current_indirect_level, use_stmt);
- return current_indirect_level;
- }
- /* If the access in the RHS has an indirection increase the
- indirection level. */
- if (rhs_acc.t_code == MEM_REF)
- {
- if (record_accesses)
- record_access_alloc_site_info (mi, use_stmt, NULL_TREE,
- NULL_TREE,
- current_indirect_level, true);
- current_indirect_level += 1;
- }
- else if (rhs_acc.t_code == POINTER_PLUS_EXPR)
- {
- gcc_assert (rhs_acc.second_op);
- if (last_op)
- /* Currently we support only one PLUS expression on the
- SSA_NAME that holds the base address of the current
- indirection level; to support more general case there
- is a need to hold a stack of expressions and regenerate
- the calculation later. */
- mark_min_matrix_escape_level (mi, current_indirect_level,
- use_stmt);
- else
- {
- tree index;
- tree op1, op2;
-
- op1 = gimple_assign_rhs1 (use_stmt);
- op2 = gimple_assign_rhs2 (use_stmt);
-
- op2 = (op1 == ssa_var) ? op2 : op1;
- if (TREE_CODE (op2) == INTEGER_CST)
- index =
- build_int_cst (TREE_TYPE (op1),
- TREE_INT_CST_LOW (op2) /
- int_size_in_bytes (TREE_TYPE (op1)));
- else
- {
- index =
- get_index_from_offset (op2, SSA_NAME_DEF_STMT (op2));
- if (index == NULL_TREE)
- {
- mark_min_matrix_escape_level (mi,
- current_indirect_level,
- use_stmt);
- return current_indirect_level;
- }
- }
- if (record_accesses)
- record_access_alloc_site_info (mi, use_stmt, op2,
- index,
- current_indirect_level, false);
- }
- }
- /* If we are storing this level of indirection mark it as
- escaping. */
- if (lhs_acc.t_code == MEM_REF || TREE_CODE (lhs) != SSA_NAME)
- {
- int l = current_indirect_level;
-
- /* One exception is when we are storing to the matrix
- variable itself; this is the case of malloc, we must make
- sure that it's the one and only one call to malloc so
- we call analyze_matrix_allocation_site to check
- this out. */
- if (TREE_CODE (lhs) != VAR_DECL || lhs != mi->decl)
- mark_min_matrix_escape_level (mi, current_indirect_level,
- use_stmt);
- else
- {
- /* Also update the escaping level. */
- analyze_matrix_allocation_site (mi, use_stmt, l, visited);
- if (record_accesses)
- record_access_alloc_site_info (mi, use_stmt, NULL_TREE,
- NULL_TREE, l, true);
- }
- }
- else
- {
- /* We are placing it in an SSA, follow that SSA. */
- analyze_matrix_accesses (mi, lhs,
- current_indirect_level,
- rhs_acc.t_code == POINTER_PLUS_EXPR,
- visited, record_accesses);
- }
- }
- return current_indirect_level;
-}
-
-/* Given a SSA_VAR (coming from a use statement of the matrix MI),
- follow its uses and level of indirection and find out the minimum
- indirection level it escapes in (the highest dimension) and the maximum
- level it is accessed in (this will be the actual dimension of the
- matrix). The information is accumulated in MI.
- We look at the immediate uses, if one escapes we finish; if not,
- we make a recursive call for each one of the immediate uses of the
- resulting SSA name. */
-static void
-analyze_matrix_accesses (struct matrix_info *mi, tree ssa_var,
- int current_indirect_level, bool last_op,
- sbitmap visited, bool record_accesses)
-{
- imm_use_iterator imm_iter;
- use_operand_p use_p;
-
- update_type_size (mi, SSA_NAME_DEF_STMT (ssa_var), ssa_var,
- current_indirect_level);
-
- /* We don't go beyond the escaping level when we are performing the
- flattening. NOTE: we keep the last indirection level that doesn't
- escape. */
- if (mi->min_indirect_level_escape > -1
- && mi->min_indirect_level_escape <= current_indirect_level)
- return;
-
-/* Now go over the uses of the SSA_NAME and check how it is used in
- each one of them. We are mainly looking for the pattern MEM_REF,
- then a POINTER_PLUS_EXPR, then MEM_REF etc. while in between there could
- be any number of copies and casts. */
- gcc_assert (TREE_CODE (ssa_var) == SSA_NAME);
-
- FOR_EACH_IMM_USE_FAST (use_p, imm_iter, ssa_var)
- {
- gimple use_stmt = USE_STMT (use_p);
- if (gimple_code (use_stmt) == GIMPLE_PHI)
- /* We check all the escaping levels that get to the PHI node
- and make sure they are all the same escaping;
- if not (which is rare) we let the escaping level be the
- minimum level that gets into that PHI because starting from
- that level we cannot expect the behavior of the indirections. */
-
- analyze_accesses_for_phi_node (mi, use_stmt, current_indirect_level,
- visited, record_accesses);
-
- else if (is_gimple_call (use_stmt))
- analyze_accesses_for_call_stmt (mi, ssa_var, use_stmt,
- current_indirect_level);
- else if (is_gimple_assign (use_stmt))
- current_indirect_level =
- analyze_accesses_for_assign_stmt (mi, ssa_var, use_stmt,
- current_indirect_level, last_op,
- visited, record_accesses);
- }
-}
-
-typedef struct
-{
- tree fn;
- gimple stmt;
-} check_var_data;
-
-/* A walk_tree function to go over the VAR_DECL, PARM_DECL nodes of
- the malloc size expression and check that those aren't changed
- over the function. */
-static tree
-check_var_notmodified_p (tree * tp, int *walk_subtrees, void *data)
-{
- basic_block bb;
- tree t = *tp;
- check_var_data *callback_data = (check_var_data*) data;
- tree fn = callback_data->fn;
- gimple_stmt_iterator gsi;
- gimple stmt;
-
- if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
- return NULL_TREE;
-
- FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (fn))
- {
- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- {
- stmt = gsi_stmt (gsi);
- if (!is_gimple_assign (stmt) && !is_gimple_call (stmt))
- continue;
- if (gimple_get_lhs (stmt) == t)
- {
- callback_data->stmt = stmt;
- return t;
- }
- }
- }
- *walk_subtrees = 1;
- return NULL_TREE;
-}
-
-/* Go backwards in the use-def chains and find out the expression
- represented by the possible SSA name in STMT, until it is composed
- of only VAR_DECL, PARM_DECL and INT_CST. In case of phi nodes
- we make sure that all the arguments represent the same subexpression,
- otherwise we fail. */
-
-static tree
-can_calculate_stmt_before_stmt (gimple stmt, sbitmap visited)
-{
- tree op1, op2, res;
- enum tree_code code;
-
- switch (gimple_code (stmt))
- {
- case GIMPLE_ASSIGN:
- code = gimple_assign_rhs_code (stmt);
- op1 = gimple_assign_rhs1 (stmt);
-
- switch (code)
- {
- case POINTER_PLUS_EXPR:
- case PLUS_EXPR:
- case MINUS_EXPR:
- case MULT_EXPR:
-
- op2 = gimple_assign_rhs2 (stmt);
- op1 = can_calculate_expr_before_stmt (op1, visited);
- if (!op1)
- return NULL_TREE;
- op2 = can_calculate_expr_before_stmt (op2, visited);
- if (op2)
- return fold_build2 (code, gimple_expr_type (stmt), op1, op2);
- return NULL_TREE;
-
- CASE_CONVERT:
- res = can_calculate_expr_before_stmt (op1, visited);
- if (res != NULL_TREE)
- return build1 (code, gimple_expr_type (stmt), res);
- else
- return NULL_TREE;
-
- default:
- if (gimple_assign_single_p (stmt))
- return can_calculate_expr_before_stmt (op1, visited);
- else
- return NULL_TREE;
- }
-
- case GIMPLE_PHI:
- {
- size_t j;
-
- res = NULL_TREE;
- /* Make sure all the arguments represent the same value. */
- for (j = 0; j < gimple_phi_num_args (stmt); j++)
- {
- tree new_res;
- tree def = PHI_ARG_DEF (stmt, j);
-
- new_res = can_calculate_expr_before_stmt (def, visited);
- if (res == NULL_TREE)
- res = new_res;
- else if (!new_res || !expressions_equal_p (res, new_res))
- return NULL_TREE;
- }
- return res;
- }
-
- default:
- return NULL_TREE;
- }
-}
-
-/* Go backwards in the use-def chains and find out the expression
- represented by the possible SSA name in EXPR, until it is composed
- of only VAR_DECL, PARM_DECL and INT_CST. In case of phi nodes
- we make sure that all the arguments represent the same subexpression,
- otherwise we fail. */
-static tree
-can_calculate_expr_before_stmt (tree expr, sbitmap visited)
-{
- gimple def_stmt;
- tree res;
-
- switch (TREE_CODE (expr))
- {
- case SSA_NAME:
- /* Case of loop, we don't know to represent this expression. */
- if (TEST_BIT (visited, SSA_NAME_VERSION (expr)))
- return NULL_TREE;
-
- SET_BIT (visited, SSA_NAME_VERSION (expr));
- def_stmt = SSA_NAME_DEF_STMT (expr);
- res = can_calculate_stmt_before_stmt (def_stmt, visited);
- RESET_BIT (visited, SSA_NAME_VERSION (expr));
- return res;
- case VAR_DECL:
- case PARM_DECL:
- case INTEGER_CST:
- return expr;
-
- default:
- return NULL_TREE;
- }
-}
-
-/* There should be only one allocation function for the dimensions
- that don't escape. Here we check the allocation sites in this
- function. We must make sure that all the dimensions are allocated
- using malloc and that the malloc size parameter expression could be
- pre-calculated before the call to the malloc of dimension 0.
-
- Given a candidate matrix for flattening -- MI -- check if it's
- appropriate for flattening -- we analyze the allocation
- sites that we recorded in the previous analysis. The result of the
- analysis is a level of indirection (matrix dimension) in which the
- flattening is safe. We check the following conditions:
- 1. There is only one allocation site for each dimension.
- 2. The allocation sites of all the dimensions are in the same
- function.
- (The above two are being taken care of during the analysis when
- we check the allocation site).
- 3. All the dimensions that we flatten are allocated at once; thus
- the total size must be known before the allocation of the
- dimension 0 (top level) -- we must make sure we represent the
- size of the allocation as an expression of global parameters or
- constants and that those doesn't change over the function. */
-
-static int
-check_allocation_function (void **slot, void *data ATTRIBUTE_UNUSED)
-{
- int level;
- struct matrix_info *mi = (struct matrix_info *) *slot;
- sbitmap visited;
-
- if (!mi->malloc_for_level)
- return 1;
-
- visited = sbitmap_alloc (num_ssa_names);
-
- /* Do nothing if the current function is not the allocation
- function of MI. */
- if (mi->allocation_function_decl != current_function_decl
- /* We aren't in the main allocation function yet. */
- || !mi->malloc_for_level[0])
- return 1;
-
- for (level = 1; level < mi->max_malloced_level; level++)
- if (!mi->malloc_for_level[level])
- break;
-
- mark_min_matrix_escape_level (mi, level, NULL);
-
- /* Check if the expression of the size passed to malloc could be
- pre-calculated before the malloc of level 0. */
- for (level = 1; level < mi->min_indirect_level_escape; level++)
- {
- gimple call_stmt;
- tree size;
- struct malloc_call_data mcd = {NULL, NULL_TREE, NULL_TREE};
-
- call_stmt = mi->malloc_for_level[level];
-
- /* Find the correct malloc information. */
- collect_data_for_malloc_call (call_stmt, &mcd);
-
- /* No need to check anticipation for constants. */
- if (TREE_CODE (mcd.size_var) == INTEGER_CST)
- {
- if (!mi->dimension_size)
- {
- mi->dimension_size =
- (tree *) xcalloc (mi->min_indirect_level_escape,
- sizeof (tree));
- mi->dimension_size_orig =
- (tree *) xcalloc (mi->min_indirect_level_escape,
- sizeof (tree));
- }
- mi->dimension_size[level] = mcd.size_var;
- mi->dimension_size_orig[level] = mcd.size_var;
- continue;
- }
- /* ??? Here we should also add the way to calculate the size
- expression not only know that it is anticipated. */
- sbitmap_zero (visited);
- size = can_calculate_expr_before_stmt (mcd.size_var, visited);
- if (size == NULL_TREE)
- {
- mark_min_matrix_escape_level (mi, level, call_stmt);
- if (dump_file)
- fprintf (dump_file,
- "Matrix %s: Cannot calculate the size of allocation, escaping at level %d\n",
- get_name (mi->decl), level);
- break;
- }
- if (!mi->dimension_size)
- {
- mi->dimension_size =
- (tree *) xcalloc (mi->min_indirect_level_escape, sizeof (tree));
- mi->dimension_size_orig =
- (tree *) xcalloc (mi->min_indirect_level_escape, sizeof (tree));
- }
- mi->dimension_size[level] = size;
- mi->dimension_size_orig[level] = size;
- }
-
- /* We don't need those anymore. */
- for (level = mi->min_indirect_level_escape;
- level < mi->max_malloced_level; level++)
- mi->malloc_for_level[level] = NULL;
- return 1;
-}
-
-/* Track all access and allocation sites. */
-static void
-find_sites_in_func (bool record)
-{
- sbitmap visited_stmts_1;
-
- gimple_stmt_iterator gsi;
- gimple stmt;
- basic_block bb;
- struct matrix_info tmpmi, *mi;
-
- visited_stmts_1 = sbitmap_alloc (num_ssa_names);
-
- FOR_EACH_BB (bb)
- {
- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- {
- tree lhs;
-
- stmt = gsi_stmt (gsi);
- lhs = gimple_get_lhs (stmt);
- if (lhs != NULL_TREE
- && TREE_CODE (lhs) == VAR_DECL)
- {
- tmpmi.decl = lhs;
- if ((mi = (struct matrix_info *) htab_find (matrices_to_reorg,
- &tmpmi)))
- {
- sbitmap_zero (visited_stmts_1);
- analyze_matrix_allocation_site (mi, stmt, 0, visited_stmts_1);
- }
- }
- if (is_gimple_assign (stmt)
- && gimple_assign_single_p (stmt)
- && TREE_CODE (lhs) == SSA_NAME
- && TREE_CODE (gimple_assign_rhs1 (stmt)) == VAR_DECL)
- {
- tmpmi.decl = gimple_assign_rhs1 (stmt);
- if ((mi = (struct matrix_info *) htab_find (matrices_to_reorg,
- &tmpmi)))
- {
- sbitmap_zero (visited_stmts_1);
- analyze_matrix_accesses (mi, lhs, 0,
- false, visited_stmts_1, record);
- }
- }
- }
- }
- sbitmap_free (visited_stmts_1);
-}
-
-/* Traverse the use-def chains to see if there are matrices that
- are passed through pointers and we cannot know how they are accessed.
- For each SSA-name defined by a global variable of our interest,
- we traverse the use-def chains of the SSA and follow the indirections,
- and record in what level of indirection the use of the variable
- escapes. A use of a pointer escapes when it is passed to a function,
- stored into memory or assigned (except in malloc and free calls). */
-
-static void
-record_all_accesses_in_func (void)
-{
- unsigned i;
- sbitmap visited_stmts_1;
-
- visited_stmts_1 = sbitmap_alloc (num_ssa_names);
-
- for (i = 0; i < num_ssa_names; i++)
- {
- struct matrix_info tmpmi, *mi;
- tree ssa_var = ssa_name (i);
- tree rhs, lhs;
-
- if (!ssa_var
- || !is_gimple_assign (SSA_NAME_DEF_STMT (ssa_var))
- || !gimple_assign_single_p (SSA_NAME_DEF_STMT (ssa_var)))
- continue;
- rhs = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (ssa_var));
- lhs = gimple_assign_lhs (SSA_NAME_DEF_STMT (ssa_var));
- if (TREE_CODE (rhs) != VAR_DECL && TREE_CODE (lhs) != VAR_DECL)
- continue;
-
- /* If the RHS is a matrix that we want to analyze, follow the def-use
- chain for this SSA_VAR and check for escapes or apply the
- flattening. */
- tmpmi.decl = rhs;
- if ((mi = (struct matrix_info *) htab_find (matrices_to_reorg, &tmpmi)))
- {
- /* This variable will track the visited PHI nodes, so we can limit
- its size to the maximum number of SSA names. */
- sbitmap_zero (visited_stmts_1);
- analyze_matrix_accesses (mi, ssa_var,
- 0, false, visited_stmts_1, true);
-
- }
- }
- sbitmap_free (visited_stmts_1);
-}
-
-/* Used when we want to convert the expression: RESULT = something *
- ORIG to RESULT = something * NEW_VAL. If ORIG and NEW_VAL are power
- of 2, shift operations can be done, else division and
- multiplication. */
-
-static tree
-compute_offset (HOST_WIDE_INT orig, HOST_WIDE_INT new_val, tree result)
-{
-
- int x, y;
- tree result1, ratio, log, orig_tree, new_tree;
-
- x = exact_log2 (orig);
- y = exact_log2 (new_val);
-
- if (x != -1 && y != -1)
- {
- if (x == y)
- return result;
- else if (x > y)
- {
- log = build_int_cst (TREE_TYPE (result), x - y);
- result1 =
- fold_build2 (LSHIFT_EXPR, TREE_TYPE (result), result, log);
- return result1;
- }
- log = build_int_cst (TREE_TYPE (result), y - x);
- result1 = fold_build2 (RSHIFT_EXPR, TREE_TYPE (result), result, log);
-
- return result1;
- }
- orig_tree = build_int_cst (TREE_TYPE (result), orig);
- new_tree = build_int_cst (TREE_TYPE (result), new_val);
- ratio = fold_build2 (TRUNC_DIV_EXPR, TREE_TYPE (result), result, orig_tree);
- result1 = fold_build2 (MULT_EXPR, TREE_TYPE (result), ratio, new_tree);
-
- return result1;
-}
-
-
-/* We know that we are allowed to perform matrix flattening (according to the
- escape analysis), so we traverse the use-def chains of the SSA vars
- defined by the global variables pointing to the matrices of our interest.
- in each use of the SSA we calculate the offset from the base address
- according to the following equation:
-
- a[I1][I2]...[Ik] , where D1..Dk is the length of each dimension and the
- escaping level is m <= k, and a' is the new allocated matrix,
- will be translated to :
-
- b[I(m+1)]...[Ik]
-
- where
- b = a' + I1*D2...*Dm + I2*D3...Dm + ... + Im
- */
-
-static int
-transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED)
-{
- gimple_stmt_iterator gsi;
- struct matrix_info *mi = (struct matrix_info *) *slot;
- int min_escape_l = mi->min_indirect_level_escape;
- struct access_site_info *acc_info;
- enum tree_code code;
- int i;
-
- if (min_escape_l < 2 || !mi->access_l)
- return 1;
- for (i = 0; VEC_iterate (access_site_info_p, mi->access_l, i, acc_info);
- i++)
- {
- /* This is possible because we collect the access sites before
- we determine the final minimum indirection level. */
- if (acc_info->level >= min_escape_l)
- {
- free (acc_info);
- continue;
- }
- if (acc_info->is_alloc)
- {
- if (acc_info->level >= 0 && gimple_bb (acc_info->stmt))
- {
- ssa_op_iter iter;
- tree def;
- gimple stmt = acc_info->stmt;
- tree lhs;
-
- FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_DEF)
- mark_sym_for_renaming (SSA_NAME_VAR (def));
- gsi = gsi_for_stmt (stmt);
- gcc_assert (is_gimple_assign (acc_info->stmt));
- lhs = gimple_assign_lhs (acc_info->stmt);
- if (TREE_CODE (lhs) == SSA_NAME
- && acc_info->level < min_escape_l - 1)
- {
- imm_use_iterator imm_iter;
- use_operand_p use_p;
- gimple use_stmt;
-
- FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, lhs)
- FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
- {
- tree rhs, tmp;
- gimple new_stmt;
-
- gcc_assert (gimple_assign_rhs_code (acc_info->stmt)
- == MEM_REF);
- /* Emit convert statement to convert to type of use. */
- tmp = create_tmp_var (TREE_TYPE (lhs), "new");
- add_referenced_var (tmp);
- rhs = gimple_assign_rhs1 (acc_info->stmt);
- rhs = fold_convert (TREE_TYPE (tmp),
- TREE_OPERAND (rhs, 0));
- new_stmt = gimple_build_assign (tmp, rhs);
- tmp = make_ssa_name (tmp, new_stmt);
- gimple_assign_set_lhs (new_stmt, tmp);
- gsi = gsi_for_stmt (acc_info->stmt);
- gsi_insert_after (&gsi, new_stmt, GSI_SAME_STMT);
- SET_USE (use_p, tmp);
- }
- }
- if (acc_info->level < min_escape_l - 1)
- gsi_remove (&gsi, true);
- }
- free (acc_info);
- continue;
- }
- code = gimple_assign_rhs_code (acc_info->stmt);
- if (code == MEM_REF
- && acc_info->level < min_escape_l - 1)
- {
- /* Replace the MEM_REF with NOP (cast) usually we are casting
- from "pointer to type" to "type". */
- tree t =
- build1 (NOP_EXPR, TREE_TYPE (gimple_assign_rhs1 (acc_info->stmt)),
- TREE_OPERAND (gimple_assign_rhs1 (acc_info->stmt), 0));
- gimple_assign_set_rhs_code (acc_info->stmt, NOP_EXPR);
- gimple_assign_set_rhs1 (acc_info->stmt, t);
- }
- else if (code == POINTER_PLUS_EXPR
- && acc_info->level < (min_escape_l))
- {
- imm_use_iterator imm_iter;
- use_operand_p use_p;
-
- tree offset;
- int k = acc_info->level;
- tree num_elements, total_elements;
- tree tmp1;
- tree d_size = mi->dimension_size[k];
-
- /* We already make sure in the analysis that the first operand
- is the base and the second is the offset. */
- offset = acc_info->offset;
- if (mi->dim_map[k] == min_escape_l - 1)
- {
- if (!check_transpose_p || mi->is_transposed_p == false)
- tmp1 = offset;
- else
- {
- tree new_offset;
-
- new_offset =
- compute_offset (mi->dimension_type_size[min_escape_l],
- mi->dimension_type_size[k + 1], offset);
-
- total_elements = new_offset;
- if (new_offset != offset)
- {
- gsi = gsi_for_stmt (acc_info->stmt);
- tmp1 = force_gimple_operand_gsi (&gsi, total_elements,
- true, NULL,
- true, GSI_SAME_STMT);
- }
- else
- tmp1 = offset;
- }
- }
- else
- {
- d_size = mi->dimension_size[mi->dim_map[k] + 1];
- num_elements =
- fold_build2 (MULT_EXPR, sizetype, fold_convert (sizetype, acc_info->index),
- fold_convert (sizetype, d_size));
- gsi = gsi_for_stmt (acc_info->stmt);
- tmp1 = force_gimple_operand_gsi (&gsi, num_elements, true,
- NULL, true, GSI_SAME_STMT);
- }
- /* Replace the offset if needed. */
- if (tmp1 != offset)
- {
- if (TREE_CODE (offset) == SSA_NAME)
- {
- gimple use_stmt;
-
- FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, offset)
- FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
- if (use_stmt == acc_info->stmt)
- SET_USE (use_p, tmp1);
- }
- else
- {
- gcc_assert (TREE_CODE (offset) == INTEGER_CST);
- gimple_assign_set_rhs2 (acc_info->stmt, tmp1);
- update_stmt (acc_info->stmt);
- }
- }
- }
- /* ??? meanwhile this happens because we record the same access
- site more than once; we should be using a hash table to
- avoid this and insert the STMT of the access site only
- once.
- else
- gcc_unreachable (); */
- free (acc_info);
- }
- VEC_free (access_site_info_p, heap, mi->access_l);
-
- update_ssa (TODO_update_ssa);
-#ifdef ENABLE_CHECKING
- verify_ssa (true);
-#endif
- return 1;
-}
-
-/* Sort A array of counts. Arrange DIM_MAP to reflect the new order. */
-
-static void
-sort_dim_hot_level (gcov_type * a, int *dim_map, int n)
-{
- int i, j, tmp1;
- gcov_type tmp;
-
- for (i = 0; i < n - 1; i++)
- {
- for (j = 0; j < n - 1 - i; j++)
- {
- if (a[j + 1] < a[j])
- {
- tmp = a[j]; /* swap a[j] and a[j+1] */
- a[j] = a[j + 1];
- a[j + 1] = tmp;
- tmp1 = dim_map[j];
- dim_map[j] = dim_map[j + 1];
- dim_map[j + 1] = tmp1;
- }
- }
- }
-}
-
-/* Replace multiple mallocs (one for each dimension) to one malloc
- with the size of DIM1*DIM2*...*DIMN*size_of_element
- Make sure that we hold the size in the malloc site inside a
- new global variable; this way we ensure that the size doesn't
- change and it is accessible from all the other functions that
- uses the matrix. Also, the original calls to free are deleted,
- and replaced by a new call to free the flattened matrix. */
-
-static int
-transform_allocation_sites (void **slot, void *data ATTRIBUTE_UNUSED)
-{
- int i;
- struct matrix_info *mi;
- tree type, oldfn, prev_dim_size;
- gimple call_stmt_0, use_stmt;
- struct cgraph_node *c_node;
- struct cgraph_edge *e;
- gimple_stmt_iterator gsi;
- struct malloc_call_data mcd = {NULL, NULL_TREE, NULL_TREE};
- HOST_WIDE_INT element_size;
-
- imm_use_iterator imm_iter;
- use_operand_p use_p;
- tree old_size_0, tmp;
- int min_escape_l;
- int id;
-
- mi = (struct matrix_info *) *slot;
-
- min_escape_l = mi->min_indirect_level_escape;
-
- if (!mi->malloc_for_level)
- mi->min_indirect_level_escape = 0;
-
- if (mi->min_indirect_level_escape < 2)
- return 1;
-
- mi->dim_map = (int *) xcalloc (mi->min_indirect_level_escape, sizeof (int));
- for (i = 0; i < mi->min_indirect_level_escape; i++)
- mi->dim_map[i] = i;
- if (check_transpose_p)
- {
- int i;
-
- if (dump_file)
- {
- fprintf (dump_file, "Matrix %s:\n", get_name (mi->decl));
- for (i = 0; i < min_escape_l; i++)
- {
- fprintf (dump_file, "dim %d before sort ", i);
- if (mi->dim_hot_level)
- fprintf (dump_file,
- "count is " HOST_WIDEST_INT_PRINT_DEC " \n",
- mi->dim_hot_level[i]);
- }
- }
- sort_dim_hot_level (mi->dim_hot_level, mi->dim_map,
- mi->min_indirect_level_escape);
- if (dump_file)
- for (i = 0; i < min_escape_l; i++)
- {
- fprintf (dump_file, "dim %d after sort\n", i);
- if (mi->dim_hot_level)
- fprintf (dump_file, "count is " HOST_WIDE_INT_PRINT_DEC
- " \n", (HOST_WIDE_INT) mi->dim_hot_level[i]);
- }
- for (i = 0; i < mi->min_indirect_level_escape; i++)
- {
- if (dump_file)
- fprintf (dump_file, "dim_map[%d] after sort %d\n", i,
- mi->dim_map[i]);
- if (mi->dim_map[i] != i)
- {
- if (dump_file)
- fprintf (dump_file,
- "Transposed dimensions: dim %d is now dim %d\n",
- mi->dim_map[i], i);
- mi->is_transposed_p = true;
- }
- }
- }
- else
- {
- for (i = 0; i < mi->min_indirect_level_escape; i++)
- mi->dim_map[i] = i;
- }
- /* Call statement of allocation site of level 0. */
- call_stmt_0 = mi->malloc_for_level[0];
-
- /* Finds the correct malloc information. */
- collect_data_for_malloc_call (call_stmt_0, &mcd);
-
- mi->dimension_size[0] = mcd.size_var;
- mi->dimension_size_orig[0] = mcd.size_var;
- /* Make sure that the variables in the size expression for
- all the dimensions (above level 0) aren't modified in
- the allocation function. */
- for (i = 1; i < mi->min_indirect_level_escape; i++)
- {
- tree t;
- check_var_data data;
-
- /* mi->dimension_size must contain the expression of the size calculated
- in check_allocation_function. */
- gcc_assert (mi->dimension_size[i]);
-
- data.fn = mi->allocation_function_decl;
- data.stmt = NULL;
- t = walk_tree_without_duplicates (&(mi->dimension_size[i]),
- check_var_notmodified_p,
- &data);
- if (t != NULL_TREE)
- {
- mark_min_matrix_escape_level (mi, i, data.stmt);
- break;
- }
- }
-
- if (mi->min_indirect_level_escape < 2)
- return 1;
-
- /* Since we should make sure that the size expression is available
- before the call to malloc of level 0. */
- gsi = gsi_for_stmt (call_stmt_0);
-
- /* Find out the size of each dimension by looking at the malloc
- sites and create a global variable to hold it.
- We add the assignment to the global before the malloc of level 0. */
-
- /* To be able to produce gimple temporaries. */
- oldfn = current_function_decl;
- current_function_decl = mi->allocation_function_decl;
- push_cfun (DECL_STRUCT_FUNCTION (mi->allocation_function_decl));
-
- /* Set the dimension sizes as follows:
- DIM_SIZE[i] = DIM_SIZE[n] * ... * DIM_SIZE[i]
- where n is the maximum non escaping level. */
- element_size = mi->dimension_type_size[mi->min_indirect_level_escape];
- prev_dim_size = NULL_TREE;
-
- for (i = mi->min_indirect_level_escape - 1; i >= 0; i--)
- {
- tree dim_size, dim_var;
- gimple stmt;
- tree d_type_size;
-
- /* Now put the size expression in a global variable and initialize it to
- the size expression before the malloc of level 0. */
- dim_var =
- add_new_static_var (TREE_TYPE
- (mi->dimension_size_orig[mi->dim_map[i]]));
- type = TREE_TYPE (mi->dimension_size_orig[mi->dim_map[i]]);
-
- /* DIM_SIZE = MALLOC_SIZE_PARAM / TYPE_SIZE. */
- /* Find which dim ID becomes dim I. */
- for (id = 0; id < mi->min_indirect_level_escape; id++)
- if (mi->dim_map[id] == i)
- break;
- d_type_size =
- build_int_cst (type, mi->dimension_type_size[id + 1]);
- if (!prev_dim_size)
- prev_dim_size = build_int_cst (type, element_size);
- if (!check_transpose_p && i == mi->min_indirect_level_escape - 1)
- {
- dim_size = mi->dimension_size_orig[id];
- }
- else
- {
- dim_size =
- fold_build2 (TRUNC_DIV_EXPR, type, mi->dimension_size_orig[id],
- d_type_size);
-
- dim_size = fold_build2 (MULT_EXPR, type, dim_size, prev_dim_size);
- }
- dim_size = force_gimple_operand_gsi (&gsi, dim_size, true, NULL,
- true, GSI_SAME_STMT);
- /* GLOBAL_HOLDING_THE_SIZE = DIM_SIZE. */
- stmt = gimple_build_assign (dim_var, dim_size);
- gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
-
- prev_dim_size = mi->dimension_size[i] = dim_var;
- }
- update_ssa (TODO_update_ssa);
- /* Replace the malloc size argument in the malloc of level 0 to be
- the size of all the dimensions. */
- c_node = cgraph_get_node (mi->allocation_function_decl);
- gcc_checking_assert (c_node);
- old_size_0 = gimple_call_arg (call_stmt_0, 0);
- tmp = force_gimple_operand_gsi (&gsi, mi->dimension_size[0], true,
- NULL, true, GSI_SAME_STMT);
- if (TREE_CODE (old_size_0) == SSA_NAME)
- {
- FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, old_size_0)
- FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
- if (use_stmt == call_stmt_0)
- SET_USE (use_p, tmp);
- }
- /* When deleting the calls to malloc we need also to remove the edge from
- the call graph to keep it consistent. Notice that cgraph_edge may
- create a new node in the call graph if there is no node for the given
- declaration; this shouldn't be the case but currently there is no way to
- check this outside of "cgraph.c". */
- for (i = 1; i < mi->min_indirect_level_escape; i++)
- {
- gimple_stmt_iterator gsi;
-
- gimple call_stmt = mi->malloc_for_level[i];
- gcc_assert (is_gimple_call (call_stmt));
- e = cgraph_edge (c_node, call_stmt);
- gcc_assert (e);
- cgraph_remove_edge (e);
- gsi = gsi_for_stmt (call_stmt);
- /* Remove the call stmt. */
- gsi_remove (&gsi, true);
- /* Remove the assignment of the allocated area. */
- FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter,
- gimple_call_lhs (call_stmt))
- {
- gsi = gsi_for_stmt (use_stmt);
- gsi_remove (&gsi, true);
- }
- }
- update_ssa (TODO_update_ssa);
-#ifdef ENABLE_CHECKING
- verify_ssa (true);
-#endif
- /* Delete the calls to free. */
- for (i = 1; i < mi->min_indirect_level_escape; i++)
- {
- gimple_stmt_iterator gsi;
-
- /* ??? wonder why this case is possible but we failed on it once. */
- if (!mi->free_stmts[i].stmt)
- continue;
-
- c_node = cgraph_get_node (mi->free_stmts[i].func);
- gcc_checking_assert (c_node);
- gcc_assert (is_gimple_call (mi->free_stmts[i].stmt));
- e = cgraph_edge (c_node, mi->free_stmts[i].stmt);
- gcc_assert (e);
- cgraph_remove_edge (e);
- current_function_decl = mi->free_stmts[i].func;
- set_cfun (DECL_STRUCT_FUNCTION (mi->free_stmts[i].func));
- gsi = gsi_for_stmt (mi->free_stmts[i].stmt);
- gsi_remove (&gsi, true);
- }
- /* Return to the previous situation. */
- current_function_decl = oldfn;
- pop_cfun ();
- return 1;
-
-}
-
-
-/* Print out the results of the escape analysis. */
-static int
-dump_matrix_reorg_analysis (void **slot, void *data ATTRIBUTE_UNUSED)
-{
- struct matrix_info *mi = (struct matrix_info *) *slot;
-
- if (!dump_file)
- return 1;
- fprintf (dump_file, "Matrix \"%s\"; Escaping Level: %d, Num Dims: %d,",
- get_name (mi->decl), mi->min_indirect_level_escape, mi->num_dims);
- fprintf (dump_file, " Malloc Dims: %d, ", mi->max_malloced_level);
- fprintf (dump_file, "\n");
- if (mi->min_indirect_level_escape >= 2)
- fprintf (dump_file, "Flattened %d dimensions \n",
- mi->min_indirect_level_escape);
- return 1;
-}
-
-/* Perform matrix flattening. */
-
-static unsigned int
-matrix_reorg (void)
-{
- struct cgraph_node *node;
-
- if (profile_info)
- check_transpose_p = true;
- else
- check_transpose_p = false;
- /* If there are hand written vectors, we skip this optimization. */
- FOR_EACH_FUNCTION (node)
- if (!may_flatten_matrices (node))
- return 0;
- matrices_to_reorg = htab_create (37, mtt_info_hash, mtt_info_eq, mat_free);
- /* Find and record all potential matrices in the program. */
- find_matrices_decl ();
- /* Analyze the accesses of the matrices (escaping analysis). */
- FOR_EACH_DEFINED_FUNCTION (node)
- {
- tree temp_fn;
-
- temp_fn = current_function_decl;
- current_function_decl = node->symbol.decl;
- push_cfun (DECL_STRUCT_FUNCTION (node->symbol.decl));
- bitmap_obstack_initialize (NULL);
- gimple_register_cfg_hooks ();
-
- if (!gimple_in_ssa_p (cfun))
- {
- free_dominance_info (CDI_DOMINATORS);
- free_dominance_info (CDI_POST_DOMINATORS);
- pop_cfun ();
- current_function_decl = temp_fn;
- bitmap_obstack_release (NULL);
-
- return 0;
- }
-
-#ifdef ENABLE_CHECKING
- verify_flow_info ();
-#endif
-
- if (!matrices_to_reorg)
- {
- free_dominance_info (CDI_DOMINATORS);
- free_dominance_info (CDI_POST_DOMINATORS);
- pop_cfun ();
- current_function_decl = temp_fn;
- bitmap_obstack_release (NULL);
-
- return 0;
- }
-
- /* Create htap for phi nodes. */
- htab_mat_acc_phi_nodes = htab_create (37, mat_acc_phi_hash,
- mat_acc_phi_eq, free);
- if (!check_transpose_p)
- find_sites_in_func (false);
- else
- {
- find_sites_in_func (true);
- loop_optimizer_init (LOOPS_NORMAL);
- if (current_loops)
- scev_initialize ();
- htab_traverse (matrices_to_reorg, analyze_transpose, NULL);
- if (current_loops)
- {
- scev_finalize ();
- loop_optimizer_finalize ();
- current_loops = NULL;
- }
- }
- /* If the current function is the allocation function for any of
- the matrices we check its allocation and the escaping level. */
- htab_traverse (matrices_to_reorg, check_allocation_function, NULL);
- free_dominance_info (CDI_DOMINATORS);
- free_dominance_info (CDI_POST_DOMINATORS);
- pop_cfun ();
- current_function_decl = temp_fn;
- bitmap_obstack_release (NULL);
- }
- htab_traverse (matrices_to_reorg, transform_allocation_sites, NULL);
- /* Now transform the accesses. */
- FOR_EACH_DEFINED_FUNCTION (node)
- {
- /* Remember that allocation sites have been handled. */
- tree temp_fn;
-
- temp_fn = current_function_decl;
- current_function_decl = node->symbol.decl;
- push_cfun (DECL_STRUCT_FUNCTION (node->symbol.decl));
- bitmap_obstack_initialize (NULL);
- gimple_register_cfg_hooks ();
- record_all_accesses_in_func ();
- htab_traverse (matrices_to_reorg, transform_access_sites, NULL);
- cgraph_rebuild_references ();
- free_dominance_info (CDI_DOMINATORS);
- free_dominance_info (CDI_POST_DOMINATORS);
- pop_cfun ();
- current_function_decl = temp_fn;
- bitmap_obstack_release (NULL);
- }
- htab_traverse (matrices_to_reorg, dump_matrix_reorg_analysis, NULL);
-
- current_function_decl = NULL;
- set_cfun (NULL);
- matrices_to_reorg = NULL;
- return 0;
-}
-
-
-/* The condition for matrix flattening to be performed. */
-static bool
-gate_matrix_reorg (void)
-{
- return flag_ipa_matrix_reorg && flag_whole_program;
-}
-
-struct simple_ipa_opt_pass pass_ipa_matrix_reorg =
-{
- {
- SIMPLE_IPA_PASS,
- "matrix-reorg", /* name */
- gate_matrix_reorg, /* gate */
- matrix_reorg, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_NONE, /* tv_id */
- 0, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- TODO_dump_symtab /* todo_flags_finish */
- }
-};
diff --git a/gcc/mcf.c b/gcc/mcf.c
index 81949ab5bc5..f5985c134ab 100644
--- a/gcc/mcf.c
+++ b/gcc/mcf.c
@@ -46,13 +46,10 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
#include "basic-block.h"
-#include "langhooks.h"
-#include "tree.h"
#include "gcov-io.h"
-
#include "profile.h"
+#include "dumpfile.h"
/* CAP_INFINITY: Constant to represent infinite capacity. */
#define CAP_INFINITY INTTYPE_MAXIMUM (HOST_WIDEST_INT)
@@ -289,7 +286,7 @@ dump_fixup_graph (FILE *file, fixup_graph_type *fixup_graph, const char *msg)
fnum_edges = fixup_graph->num_edges;
fprintf (file, "\nDump fixup graph for %s(): %s.\n",
- lang_hooks.decl_printable_name (current_function_decl, 2), msg);
+ current_function_name (), msg);
fprintf (file,
"There are %d vertices and %d edges. new_exit_index is %d.\n\n",
fnum_vertices, fnum_edges, fixup_graph->new_exit_index);
@@ -1279,8 +1276,8 @@ adjust_cfg_counts (fixup_graph_type *fixup_graph)
if (dump_file)
{
fprintf (dump_file, "\nCheck %s() CFG flow conservation:\n",
- lang_hooks.decl_printable_name (current_function_decl, 2));
- FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR->next_bb, EXIT_BLOCK_PTR, next_bb)
+ current_function_name ());
+ FOR_EACH_BB (bb)
{
if ((bb->count != sum_edge_counts (bb->preds))
|| (bb->count != sum_edge_counts (bb->succs)))
diff --git a/gcc/melt-build-script.sh b/gcc/melt-build-script.sh
index 5322ad52012..0c1a8b10071 100644
--- a/gcc/melt-build-script.sh
+++ b/gcc/melt-build-script.sh
@@ -3,7 +3,7 @@
#@#@#
#@#@# DO NOT EDIT THIS FILE (melt-build-script.sh)
#@#@#
-#@#@# It has been AutoGen-ed August 29, 2012 at 12:32:24 PM by AutoGen 5.16
+#@#@# It has been AutoGen-ed August 29, 2012 at 02:22:29 PM by AutoGen 5.16
#@#@# From the definitions melt-build-script.def
#@#@# and the template file melt-build-script.tpl
# Generated shell script for MELT modules and MELT translator bootstrap
@@ -201,7 +201,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/22 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -210,7 +210,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_FIRST_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-first \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/23 stage0 warmelt-first did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/23 stage0 warmelt-first did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/24 stage0 warmelt-first module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-first.meltmod-$MELT_ZERO_GENERATED_FIRST_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -277,7 +277,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/37 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -286,7 +286,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_BASE_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-base \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/38 stage0 warmelt-base did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/38 stage0 warmelt-base did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/39 stage0 warmelt-base module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-base.meltmod-$MELT_ZERO_GENERATED_BASE_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -353,7 +353,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/52 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -362,7 +362,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_DEBUG_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-debug \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/53 stage0 warmelt-debug did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/53 stage0 warmelt-debug did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/54 stage0 warmelt-debug module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-debug.meltmod-$MELT_ZERO_GENERATED_DEBUG_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -429,7 +429,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/67 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -438,7 +438,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_MACRO_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-macro \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/68 stage0 warmelt-macro did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/68 stage0 warmelt-macro did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/69 stage0 warmelt-macro module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-macro.meltmod-$MELT_ZERO_GENERATED_MACRO_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -505,7 +505,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/82 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -514,7 +514,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_NORMAL_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-normal \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/83 stage0 warmelt-normal did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/83 stage0 warmelt-normal did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/84 stage0 warmelt-normal module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-normal.meltmod-$MELT_ZERO_GENERATED_NORMAL_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -581,7 +581,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/97 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -590,7 +590,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_NORMATCH_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-normatch \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/98 stage0 warmelt-normatch did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/98 stage0 warmelt-normatch did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/99 stage0 warmelt-normatch module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-normatch.meltmod-$MELT_ZERO_GENERATED_NORMATCH_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -657,7 +657,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/112 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -666,7 +666,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_GENOBJ_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-genobj \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/113 stage0 warmelt-genobj did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/113 stage0 warmelt-genobj did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/114 stage0 warmelt-genobj module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-genobj.meltmod-$MELT_ZERO_GENERATED_GENOBJ_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -733,7 +733,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/127 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -742,7 +742,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_OUTOBJ_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-outobj \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/128 stage0 warmelt-outobj did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/128 stage0 warmelt-outobj did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/129 stage0 warmelt-outobj module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-outobj.meltmod-$MELT_ZERO_GENERATED_OUTOBJ_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -809,7 +809,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-melt-build-script.tpl:195/142 \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -818,7 +818,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_MODES_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/warmelt-modes \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error melt-build-script.tpl:205/143 stage0 warmelt-modes did not build with $GCCMELT_MAKE
+ || meltbuild_error melt-build-script.tpl:205/143 stage0 warmelt-modes did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info melt-build-script.tpl:207/144 stage0 warmelt-modes module
ls -l "$GCCMELT_STAGE_ZERO/warmelt-modes.meltmod-$MELT_ZERO_GENERATED_MODES_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -1028,18 +1028,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/175-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-first" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-first" \
- || meltbuild_error melt-build-script.tpl:375/176-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-first
+ || meltbuild_error melt-build-script.tpl:376/176-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-first compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/177-$meltfrom NOT compiling module warmelt-first "in" \
+ meltbuild_info melt-build-script.tpl:378/177-$meltfrom NOT compiling module warmelt-first "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-first \
checksum $meltchecksum_cumul_FIRST skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-first.meltmod-$meltchecksum_cumul_FIRST.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-first.meltmod-$meltchecksum_cumul_FIRST.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/178 done base warmelt-first
+ #in meltbuild_do_stage melt-build-script.tpl:384/178 done base warmelt-first
#in meltbuild_do_stage melt-build-script.tpl:346/179 base warmelt-base
@@ -1064,18 +1065,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/186-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-base" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-base" \
- || meltbuild_error melt-build-script.tpl:375/187-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-base
+ || meltbuild_error melt-build-script.tpl:376/187-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-base compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/188-$meltfrom NOT compiling module warmelt-base "in" \
+ meltbuild_info melt-build-script.tpl:378/188-$meltfrom NOT compiling module warmelt-base "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-base \
checksum $meltchecksum_cumul_BASE skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-base.meltmod-$meltchecksum_cumul_BASE.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-base.meltmod-$meltchecksum_cumul_BASE.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/189 done base warmelt-base
+ #in meltbuild_do_stage melt-build-script.tpl:384/189 done base warmelt-base
#in meltbuild_do_stage melt-build-script.tpl:346/190 base warmelt-debug
@@ -1100,18 +1102,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/197-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-debug" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-debug" \
- || meltbuild_error melt-build-script.tpl:375/198-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-debug
+ || meltbuild_error melt-build-script.tpl:376/198-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-debug compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/199-$meltfrom NOT compiling module warmelt-debug "in" \
+ meltbuild_info melt-build-script.tpl:378/199-$meltfrom NOT compiling module warmelt-debug "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-debug \
checksum $meltchecksum_cumul_DEBUG skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-debug.meltmod-$meltchecksum_cumul_DEBUG.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-debug.meltmod-$meltchecksum_cumul_DEBUG.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/200 done base warmelt-debug
+ #in meltbuild_do_stage melt-build-script.tpl:384/200 done base warmelt-debug
#in meltbuild_do_stage melt-build-script.tpl:346/201 base warmelt-macro
@@ -1136,18 +1139,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/208-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-macro" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-macro" \
- || meltbuild_error melt-build-script.tpl:375/209-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-macro
+ || meltbuild_error melt-build-script.tpl:376/209-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-macro compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/210-$meltfrom NOT compiling module warmelt-macro "in" \
+ meltbuild_info melt-build-script.tpl:378/210-$meltfrom NOT compiling module warmelt-macro "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-macro \
checksum $meltchecksum_cumul_MACRO skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-macro.meltmod-$meltchecksum_cumul_MACRO.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-macro.meltmod-$meltchecksum_cumul_MACRO.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/211 done base warmelt-macro
+ #in meltbuild_do_stage melt-build-script.tpl:384/211 done base warmelt-macro
#in meltbuild_do_stage melt-build-script.tpl:346/212 base warmelt-normal
@@ -1172,18 +1176,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/219-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-normal" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-normal" \
- || meltbuild_error melt-build-script.tpl:375/220-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-normal
+ || meltbuild_error melt-build-script.tpl:376/220-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-normal compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/221-$meltfrom NOT compiling module warmelt-normal "in" \
+ meltbuild_info melt-build-script.tpl:378/221-$meltfrom NOT compiling module warmelt-normal "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-normal \
checksum $meltchecksum_cumul_NORMAL skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-normal.meltmod-$meltchecksum_cumul_NORMAL.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-normal.meltmod-$meltchecksum_cumul_NORMAL.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/222 done base warmelt-normal
+ #in meltbuild_do_stage melt-build-script.tpl:384/222 done base warmelt-normal
#in meltbuild_do_stage melt-build-script.tpl:346/223 base warmelt-normatch
@@ -1208,18 +1213,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/230-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-normatch" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-normatch" \
- || meltbuild_error melt-build-script.tpl:375/231-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-normatch
+ || meltbuild_error melt-build-script.tpl:376/231-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-normatch compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/232-$meltfrom NOT compiling module warmelt-normatch "in" \
+ meltbuild_info melt-build-script.tpl:378/232-$meltfrom NOT compiling module warmelt-normatch "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-normatch \
checksum $meltchecksum_cumul_NORMATCH skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-normatch.meltmod-$meltchecksum_cumul_NORMATCH.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-normatch.meltmod-$meltchecksum_cumul_NORMATCH.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/233 done base warmelt-normatch
+ #in meltbuild_do_stage melt-build-script.tpl:384/233 done base warmelt-normatch
#in meltbuild_do_stage melt-build-script.tpl:346/234 base warmelt-genobj
@@ -1244,18 +1250,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/241-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-genobj" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-genobj" \
- || meltbuild_error melt-build-script.tpl:375/242-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-genobj
+ || meltbuild_error melt-build-script.tpl:376/242-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-genobj compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/243-$meltfrom NOT compiling module warmelt-genobj "in" \
+ meltbuild_info melt-build-script.tpl:378/243-$meltfrom NOT compiling module warmelt-genobj "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-genobj \
checksum $meltchecksum_cumul_GENOBJ skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-genobj.meltmod-$meltchecksum_cumul_GENOBJ.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-genobj.meltmod-$meltchecksum_cumul_GENOBJ.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/244 done base warmelt-genobj
+ #in meltbuild_do_stage melt-build-script.tpl:384/244 done base warmelt-genobj
#in meltbuild_do_stage melt-build-script.tpl:346/245 base warmelt-outobj
@@ -1280,18 +1287,19 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/252-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-outobj" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-outobj" \
- || meltbuild_error melt-build-script.tpl:375/253-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-outobj
+ || meltbuild_error melt-build-script.tpl:376/253-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-outobj compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/254-$meltfrom NOT compiling module warmelt-outobj "in" \
+ meltbuild_info melt-build-script.tpl:378/254-$meltfrom NOT compiling module warmelt-outobj "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-outobj \
checksum $meltchecksum_cumul_OUTOBJ skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-outobj.meltmod-$meltchecksum_cumul_OUTOBJ.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-outobj.meltmod-$meltchecksum_cumul_OUTOBJ.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/255 done base warmelt-outobj
+ #in meltbuild_do_stage melt-build-script.tpl:384/255 done base warmelt-outobj
#in meltbuild_do_stage melt-build-script.tpl:346/256 base warmelt-modes
@@ -1316,21 +1324,22 @@ function meltbuild_do_stage () {
GCCMELT_FROM="melt-build-script.tpl:369/263-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/warmelt-modes" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/warmelt-modes" \
- || meltbuild_error melt-build-script.tpl:375/264-$meltfrom in "$meltcurstagedir/" failed to make module warmelt-modes
+ || meltbuild_error melt-build-script.tpl:376/264-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module warmelt-modes compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
- meltbuild_info melt-build-script.tpl:377/265-$meltfrom NOT compiling module warmelt-modes "in" \
+ meltbuild_info melt-build-script.tpl:378/265-$meltfrom NOT compiling module warmelt-modes "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module warmelt-modes \
checksum $meltchecksum_cumul_MODES skipemitc=$GCCMELT_SKIPEMITC.
meltbuild_symlink "$meltprevstagedir/warmelt-modes.meltmod-$meltchecksum_cumul_MODES.$meltprevflavor.so" \
"$meltcurstagedir/warmelt-modes.meltmod-$meltchecksum_cumul_MODES.$meltcurflavor.so"
fi
- #in meltbuild_do_stage melt-build-script.tpl:383/266 done base warmelt-modes
+ #in meltbuild_do_stage melt-build-script.tpl:384/266 done base warmelt-modes
- #in meltbuild_do_stage melt-build-script.tpl:386/267 generating the stampfile
+ #in meltbuild_do_stage melt-build-script.tpl:387/267 generating the stampfile
meltstamp=$meltcurstagedir/$meltcurstagedir.stamp
meltstamptmp=$meltstamp-tmp$$
echo "///timestamp file $meltstamp" > $meltstamptmp
@@ -1366,15 +1375,15 @@ function meltbuild_do_stage () {
echo "///end timestamp file $meltstamp"
$GCCMELT_MOVE_IF_CHANGE $meltstamptmp $meltstamp
- #in meltbuild_do_stage melt-build-script.tpl:398/268 ending
+ #in meltbuild_do_stage melt-build-script.tpl:399/268 ending
meltbuild_info $meltfrom done stage $meltcurstagedir flavor $meltcurflavor previous $meltprevstagedir previous flavor $meltprevflavor timestamp $meltstamp
-} #### end meltbuild_do_stage melt-build-script.tpl:401/269
+} #### end meltbuild_do_stage melt-build-script.tpl:402/269
################################################################
-##### possibly run all our stages melt-build-script.tpl:404/270
+##### possibly run all our stages melt-build-script.tpl:405/270
-#@ melt-build-script.tpl:406/271 stagedir meltbuild-stage1
+#@ melt-build-script.tpl:407/271 stagedir meltbuild-stage1
GCCMELT_SKIPEMITC=
if [ ! -f meltbuild-stage1/meltbuild-stage1.stamp -o meltbuild-stage1/meltbuild-stage1.stamp -ot $GCCMELT_RUNTIME_DEPENDENCY \
-o meltbuild-stage1/meltbuild-stage1.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-first.melt \
@@ -1387,18 +1396,18 @@ if [ ! -f meltbuild-stage1/meltbuild-stage1.stamp -o meltbuild-stage1/meltbuild-
-o meltbuild-stage1/meltbuild-stage1.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-outobj.melt \
-o meltbuild-stage1/meltbuild-stage1.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-modes.melt \
]; then
- meltbuild_info melt-build-script.tpl:411/272 building stage meltbuild-stage1
- ## building stage meltbuild-stage1 previous $GCCMELT_STAGE_ZERO melt-build-script.tpl:412/273
- meltbuild_do_stage melt-build-script.tpl:413/274 meltbuild-stage1 quicklybuilt $GCCMELT_STAGE_ZERO $GCCMELT_ZERO_FLAVOR
+ meltbuild_info melt-build-script.tpl:412/272 building stage meltbuild-stage1
+ ## building stage meltbuild-stage1 previous $GCCMELT_STAGE_ZERO melt-build-script.tpl:413/273
+ meltbuild_do_stage melt-build-script.tpl:414/274 meltbuild-stage1 quicklybuilt $GCCMELT_STAGE_ZERO $GCCMELT_ZERO_FLAVOR
else
- meltbuild_info melt-build-script.tpl:415/275 skipping stage meltbuild-stage1
+ meltbuild_info melt-build-script.tpl:416/275 skipping stage meltbuild-stage1
fi
-## melt-build-script.tpl:418/276
+## melt-build-script.tpl:419/276
GCCMELT_LASTSTAGE=meltbuild-stage1
-#@ melt-build-script.tpl:406/277 stagedir meltbuild-stage2
+#@ melt-build-script.tpl:407/277 stagedir meltbuild-stage2
GCCMELT_SKIPEMITC=
if [ ! -f meltbuild-stage2/meltbuild-stage2.stamp -o meltbuild-stage2/meltbuild-stage2.stamp -ot $GCCMELT_RUNTIME_DEPENDENCY \
-o meltbuild-stage2/meltbuild-stage2.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-first.melt \
@@ -1411,18 +1420,18 @@ if [ ! -f meltbuild-stage2/meltbuild-stage2.stamp -o meltbuild-stage2/meltbuild-
-o meltbuild-stage2/meltbuild-stage2.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-outobj.melt \
-o meltbuild-stage2/meltbuild-stage2.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-modes.melt \
]; then
- meltbuild_info melt-build-script.tpl:411/278 building stage meltbuild-stage2
- ## building stage meltbuild-stage2 previous meltbuild-stage1 melt-build-script.tpl:412/279
- meltbuild_do_stage melt-build-script.tpl:413/280 meltbuild-stage2 quicklybuilt meltbuild-stage1 quicklybuilt
+ meltbuild_info melt-build-script.tpl:412/278 building stage meltbuild-stage2
+ ## building stage meltbuild-stage2 previous meltbuild-stage1 melt-build-script.tpl:413/279
+ meltbuild_do_stage melt-build-script.tpl:414/280 meltbuild-stage2 quicklybuilt meltbuild-stage1 quicklybuilt
else
- meltbuild_info melt-build-script.tpl:415/281 skipping stage meltbuild-stage2
+ meltbuild_info melt-build-script.tpl:416/281 skipping stage meltbuild-stage2
fi
-## melt-build-script.tpl:418/282
+## melt-build-script.tpl:419/282
GCCMELT_LASTSTAGE=meltbuild-stage2
-#@ melt-build-script.tpl:406/283 stagedir meltbuild-stage3
+#@ melt-build-script.tpl:407/283 stagedir meltbuild-stage3
GCCMELT_SKIPEMITC=
if [ ! -f meltbuild-stage3/meltbuild-stage3.stamp -o meltbuild-stage3/meltbuild-stage3.stamp -ot $GCCMELT_RUNTIME_DEPENDENCY \
-o meltbuild-stage3/meltbuild-stage3.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-first.melt \
@@ -1435,14 +1444,14 @@ if [ ! -f meltbuild-stage3/meltbuild-stage3.stamp -o meltbuild-stage3/meltbuild-
-o meltbuild-stage3/meltbuild-stage3.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-outobj.melt \
-o meltbuild-stage3/meltbuild-stage3.stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-modes.melt \
]; then
- meltbuild_info melt-build-script.tpl:411/284 building stage meltbuild-stage3
- ## building stage meltbuild-stage3 previous meltbuild-stage2 melt-build-script.tpl:412/285
- meltbuild_do_stage melt-build-script.tpl:413/286 meltbuild-stage3 quicklybuilt meltbuild-stage2 quicklybuilt
+ meltbuild_info melt-build-script.tpl:412/284 building stage meltbuild-stage3
+ ## building stage meltbuild-stage3 previous meltbuild-stage2 melt-build-script.tpl:413/285
+ meltbuild_do_stage melt-build-script.tpl:414/286 meltbuild-stage3 quicklybuilt meltbuild-stage2 quicklybuilt
else
- meltbuild_info melt-build-script.tpl:415/287 skipping stage meltbuild-stage3
+ meltbuild_info melt-build-script.tpl:416/287 skipping stage meltbuild-stage3
fi
-## melt-build-script.tpl:418/288
+## melt-build-script.tpl:419/288
GCCMELT_LASTSTAGE=meltbuild-stage3
@@ -1452,11 +1461,11 @@ GCCMELT_LASTSTAGE=meltbuild-stage3
GCCMELT_LASTSTAGE=$GCCMELT_STAGE
-meltbuild_info melt-build-script.tpl:428/289 last stage $GCCMELT_LASTSTAGE
+meltbuild_info melt-build-script.tpl:429/289 last stage $GCCMELT_LASTSTAGE
################################################################
################################################################
-###########@ before generating meltbuild-sources melt-build-script.tpl:432/290
+###########@ before generating meltbuild-sources melt-build-script.tpl:433/290
#### the meltbuild-sources is the final sources directory, to be
#### installed. They are generated from the last stage, using the
@@ -1465,15 +1474,15 @@ meltbuild_info melt-build-script.tpl:428/289 last stage $GCCMELT_LASTSTAGE
[ -d meltbuild-sources ] || mkdir meltbuild-sources
-#@ from melt-build-script.tpl:441/291 compiling the modules
+#@ from melt-build-script.tpl:442/291 compiling the modules
[ -d meltbuild-modules ] || mkdir meltbuild-modules
################################################################
function meltbuild_emit_translator_sources () {
- ## meltbuild_emit_source melt-build-script.tpl:447/292 base warmelt-first
- meltbuild_info melt-build-script.tpl:448/293 generating C code of warmelt-first in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/294 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/292 base warmelt-first
+ meltbuild_info melt-build-script.tpl:449/293 generating C code of warmelt-first in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/294 \
translatefile \
warmelt-first \
meltbuild-sources \
@@ -1481,9 +1490,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
""
- ## meltbuild_emit_source melt-build-script.tpl:447/295 base warmelt-base
- meltbuild_info melt-build-script.tpl:448/296 generating C code of warmelt-base in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/297 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/295 base warmelt-base
+ meltbuild_info melt-build-script.tpl:449/296 generating C code of warmelt-base in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/297 \
translatefile \
warmelt-base \
meltbuild-sources \
@@ -1491,9 +1500,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
""
- ## meltbuild_emit_source melt-build-script.tpl:447/298 base warmelt-debug
- meltbuild_info melt-build-script.tpl:448/299 generating C code of warmelt-debug in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/300 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/298 base warmelt-debug
+ meltbuild_info melt-build-script.tpl:449/299 generating C code of warmelt-debug in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/300 \
translatefile \
warmelt-debug \
meltbuild-sources \
@@ -1501,9 +1510,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
""
- ## meltbuild_emit_source melt-build-script.tpl:447/301 base warmelt-macro
- meltbuild_info melt-build-script.tpl:448/302 generating C code of warmelt-macro in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/303 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/301 base warmelt-macro
+ meltbuild_info melt-build-script.tpl:449/302 generating C code of warmelt-macro in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/303 \
translatefile \
warmelt-macro \
meltbuild-sources \
@@ -1511,9 +1520,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
""
- ## meltbuild_emit_source melt-build-script.tpl:447/304 base warmelt-normal
- meltbuild_info melt-build-script.tpl:448/305 generating C code of warmelt-normal in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/306 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/304 base warmelt-normal
+ meltbuild_info melt-build-script.tpl:449/305 generating C code of warmelt-normal in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/306 \
translatefile \
warmelt-normal \
meltbuild-sources \
@@ -1521,9 +1530,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
"warmelt-predef.melt"
- ## meltbuild_emit_source melt-build-script.tpl:447/307 base warmelt-normatch
- meltbuild_info melt-build-script.tpl:448/308 generating C code of warmelt-normatch in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/309 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/307 base warmelt-normatch
+ meltbuild_info melt-build-script.tpl:449/308 generating C code of warmelt-normatch in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/309 \
translatefile \
warmelt-normatch \
meltbuild-sources \
@@ -1531,9 +1540,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
""
- ## meltbuild_emit_source melt-build-script.tpl:447/310 base warmelt-genobj
- meltbuild_info melt-build-script.tpl:448/311 generating C code of warmelt-genobj in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/312 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/310 base warmelt-genobj
+ meltbuild_info melt-build-script.tpl:449/311 generating C code of warmelt-genobj in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/312 \
translatefile \
warmelt-genobj \
meltbuild-sources \
@@ -1541,9 +1550,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
""
- ## meltbuild_emit_source melt-build-script.tpl:447/313 base warmelt-outobj
- meltbuild_info melt-build-script.tpl:448/314 generating C code of warmelt-outobj in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/315 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/313 base warmelt-outobj
+ meltbuild_info melt-build-script.tpl:449/314 generating C code of warmelt-outobj in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/315 \
translatefile \
warmelt-outobj \
meltbuild-sources \
@@ -1551,9 +1560,9 @@ function meltbuild_emit_translator_sources () {
$GCCMELT_LASTSTAGE/warmelt-first.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-base.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-debug.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-macro.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normal.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-normatch.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-genobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-outobj.quicklybuilt:$GCCMELT_LASTSTAGE/warmelt-modes.quicklybuilt \
""
- ## meltbuild_emit_source melt-build-script.tpl:447/316 base warmelt-modes
- meltbuild_info melt-build-script.tpl:448/317 generating C code of warmelt-modes in meltbuild-sources
- meltbuild_emit melt-build-script.tpl:449/318 \
+ ## meltbuild_emit_source melt-build-script.tpl:448/316 base warmelt-modes
+ meltbuild_info melt-build-script.tpl:449/317 generating C code of warmelt-modes in meltbuild-sources
+ meltbuild_emit melt-build-script.tpl:450/318 \
translatefile \
warmelt-modes \
meltbuild-sources \
@@ -1568,293 +1577,320 @@ function meltbuild_emit_translator_sources () {
function meltbuild_compile_translator_modules () {
- # in meltbuild_compile_translator_sources quicklybuilt melt-build-script.tpl:464/319
- meltbuild_info melt-build-script.tpl:465/320 compiling translator quicklybuilt
+ # in meltbuild_compile_translator_sources quicklybuilt melt-build-script.tpl:465/319
+ meltbuild_info melt-build-script.tpl:466/320 compiling translator quicklybuilt
- #@ melt-build-script.tpl:468/321 flavor quicklybuilt base warmelt-first
+ #@ melt-build-script.tpl:469/321 flavor quicklybuilt base warmelt-first
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/322 \
+ GCCMELT_FROM=melt-build-script.tpl:471/322 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-first \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-first \
- || meltbuild_error melt-build-script.tpl:476/323 in meltbuild-modules failed to compile translator warmelt-first quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/323 in meltbuild-modules failed to compile translator warmelt-first quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/324 flavor quicklybuilt base warmelt-base
+ #@ melt-build-script.tpl:469/324 flavor quicklybuilt base warmelt-base
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/325 \
+ GCCMELT_FROM=melt-build-script.tpl:471/325 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-base \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-base \
- || meltbuild_error melt-build-script.tpl:476/326 in meltbuild-modules failed to compile translator warmelt-base quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/326 in meltbuild-modules failed to compile translator warmelt-base quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/327 flavor quicklybuilt base warmelt-debug
+ #@ melt-build-script.tpl:469/327 flavor quicklybuilt base warmelt-debug
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/328 \
+ GCCMELT_FROM=melt-build-script.tpl:471/328 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-debug \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-debug \
- || meltbuild_error melt-build-script.tpl:476/329 in meltbuild-modules failed to compile translator warmelt-debug quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/329 in meltbuild-modules failed to compile translator warmelt-debug quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/330 flavor quicklybuilt base warmelt-macro
+ #@ melt-build-script.tpl:469/330 flavor quicklybuilt base warmelt-macro
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/331 \
+ GCCMELT_FROM=melt-build-script.tpl:471/331 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-macro \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-macro \
- || meltbuild_error melt-build-script.tpl:476/332 in meltbuild-modules failed to compile translator warmelt-macro quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/332 in meltbuild-modules failed to compile translator warmelt-macro quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/333 flavor quicklybuilt base warmelt-normal
+ #@ melt-build-script.tpl:469/333 flavor quicklybuilt base warmelt-normal
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/334 \
+ GCCMELT_FROM=melt-build-script.tpl:471/334 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-normal \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-normal \
- || meltbuild_error melt-build-script.tpl:476/335 in meltbuild-modules failed to compile translator warmelt-normal quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/335 in meltbuild-modules failed to compile translator warmelt-normal quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/336 flavor quicklybuilt base warmelt-normatch
+ #@ melt-build-script.tpl:469/336 flavor quicklybuilt base warmelt-normatch
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/337 \
+ GCCMELT_FROM=melt-build-script.tpl:471/337 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-normatch \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-normatch \
- || meltbuild_error melt-build-script.tpl:476/338 in meltbuild-modules failed to compile translator warmelt-normatch quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/338 in meltbuild-modules failed to compile translator warmelt-normatch quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/339 flavor quicklybuilt base warmelt-genobj
+ #@ melt-build-script.tpl:469/339 flavor quicklybuilt base warmelt-genobj
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/340 \
+ GCCMELT_FROM=melt-build-script.tpl:471/340 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-genobj \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-genobj \
- || meltbuild_error melt-build-script.tpl:476/341 in meltbuild-modules failed to compile translator warmelt-genobj quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/341 in meltbuild-modules failed to compile translator warmelt-genobj quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/342 flavor quicklybuilt base warmelt-outobj
+ #@ melt-build-script.tpl:469/342 flavor quicklybuilt base warmelt-outobj
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/343 \
+ GCCMELT_FROM=melt-build-script.tpl:471/343 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-outobj \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-outobj \
- || meltbuild_error melt-build-script.tpl:476/344 in meltbuild-modules failed to compile translator warmelt-outobj quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/344 in meltbuild-modules failed to compile translator warmelt-outobj quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/345 flavor quicklybuilt base warmelt-modes
+ #@ melt-build-script.tpl:469/345 flavor quicklybuilt base warmelt-modes
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/346 \
+ GCCMELT_FROM=melt-build-script.tpl:471/346 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-modes \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-modes \
- || meltbuild_error melt-build-script.tpl:476/347 in meltbuild-modules failed to compile translator warmelt-modes quicklybuilt
+ || meltbuild_error melt-build-script.tpl:478/347 in meltbuild-modules failed to compile translator warmelt-modes quicklybuilt make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- # in meltbuild_compile_translator_sources optimized melt-build-script.tpl:464/348
- meltbuild_info melt-build-script.tpl:465/349 compiling translator optimized
+ # in meltbuild_compile_translator_sources optimized melt-build-script.tpl:465/348
+ meltbuild_info melt-build-script.tpl:466/349 compiling translator optimized
- #@ melt-build-script.tpl:468/350 flavor optimized base warmelt-first
+ #@ melt-build-script.tpl:469/350 flavor optimized base warmelt-first
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/351 \
+ GCCMELT_FROM=melt-build-script.tpl:471/351 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-first \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-first \
- || meltbuild_error melt-build-script.tpl:476/352 in meltbuild-modules failed to compile translator warmelt-first optimized
+ || meltbuild_error melt-build-script.tpl:478/352 in meltbuild-modules failed to compile translator warmelt-first optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/353 flavor optimized base warmelt-base
+ #@ melt-build-script.tpl:469/353 flavor optimized base warmelt-base
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/354 \
+ GCCMELT_FROM=melt-build-script.tpl:471/354 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-base \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-base \
- || meltbuild_error melt-build-script.tpl:476/355 in meltbuild-modules failed to compile translator warmelt-base optimized
+ || meltbuild_error melt-build-script.tpl:478/355 in meltbuild-modules failed to compile translator warmelt-base optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/356 flavor optimized base warmelt-debug
+ #@ melt-build-script.tpl:469/356 flavor optimized base warmelt-debug
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/357 \
+ GCCMELT_FROM=melt-build-script.tpl:471/357 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-debug \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-debug \
- || meltbuild_error melt-build-script.tpl:476/358 in meltbuild-modules failed to compile translator warmelt-debug optimized
+ || meltbuild_error melt-build-script.tpl:478/358 in meltbuild-modules failed to compile translator warmelt-debug optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/359 flavor optimized base warmelt-macro
+ #@ melt-build-script.tpl:469/359 flavor optimized base warmelt-macro
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/360 \
+ GCCMELT_FROM=melt-build-script.tpl:471/360 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-macro \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-macro \
- || meltbuild_error melt-build-script.tpl:476/361 in meltbuild-modules failed to compile translator warmelt-macro optimized
+ || meltbuild_error melt-build-script.tpl:478/361 in meltbuild-modules failed to compile translator warmelt-macro optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/362 flavor optimized base warmelt-normal
+ #@ melt-build-script.tpl:469/362 flavor optimized base warmelt-normal
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/363 \
+ GCCMELT_FROM=melt-build-script.tpl:471/363 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-normal \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-normal \
- || meltbuild_error melt-build-script.tpl:476/364 in meltbuild-modules failed to compile translator warmelt-normal optimized
+ || meltbuild_error melt-build-script.tpl:478/364 in meltbuild-modules failed to compile translator warmelt-normal optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/365 flavor optimized base warmelt-normatch
+ #@ melt-build-script.tpl:469/365 flavor optimized base warmelt-normatch
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/366 \
+ GCCMELT_FROM=melt-build-script.tpl:471/366 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-normatch \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-normatch \
- || meltbuild_error melt-build-script.tpl:476/367 in meltbuild-modules failed to compile translator warmelt-normatch optimized
+ || meltbuild_error melt-build-script.tpl:478/367 in meltbuild-modules failed to compile translator warmelt-normatch optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/368 flavor optimized base warmelt-genobj
+ #@ melt-build-script.tpl:469/368 flavor optimized base warmelt-genobj
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/369 \
+ GCCMELT_FROM=melt-build-script.tpl:471/369 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-genobj \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-genobj \
- || meltbuild_error melt-build-script.tpl:476/370 in meltbuild-modules failed to compile translator warmelt-genobj optimized
+ || meltbuild_error melt-build-script.tpl:478/370 in meltbuild-modules failed to compile translator warmelt-genobj optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/371 flavor optimized base warmelt-outobj
+ #@ melt-build-script.tpl:469/371 flavor optimized base warmelt-outobj
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/372 \
+ GCCMELT_FROM=melt-build-script.tpl:471/372 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-outobj \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-outobj \
- || meltbuild_error melt-build-script.tpl:476/373 in meltbuild-modules failed to compile translator warmelt-outobj optimized
+ || meltbuild_error melt-build-script.tpl:478/373 in meltbuild-modules failed to compile translator warmelt-outobj optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/374 flavor optimized base warmelt-modes
+ #@ melt-build-script.tpl:469/374 flavor optimized base warmelt-modes
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/375 \
+ GCCMELT_FROM=melt-build-script.tpl:471/375 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-modes \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-modes \
- || meltbuild_error melt-build-script.tpl:476/376 in meltbuild-modules failed to compile translator warmelt-modes optimized
+ || meltbuild_error melt-build-script.tpl:478/376 in meltbuild-modules failed to compile translator warmelt-modes optimized make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- # in meltbuild_compile_translator_sources debugnoline melt-build-script.tpl:464/377
- meltbuild_info melt-build-script.tpl:465/378 compiling translator debugnoline
+ # in meltbuild_compile_translator_sources debugnoline melt-build-script.tpl:465/377
+ meltbuild_info melt-build-script.tpl:466/378 compiling translator debugnoline
- #@ melt-build-script.tpl:468/379 flavor debugnoline base warmelt-first
+ #@ melt-build-script.tpl:469/379 flavor debugnoline base warmelt-first
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/380 \
+ GCCMELT_FROM=melt-build-script.tpl:471/380 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-first \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-first \
- || meltbuild_error melt-build-script.tpl:476/381 in meltbuild-modules failed to compile translator warmelt-first debugnoline
+ || meltbuild_error melt-build-script.tpl:478/381 in meltbuild-modules failed to compile translator warmelt-first debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/382 flavor debugnoline base warmelt-base
+ #@ melt-build-script.tpl:469/382 flavor debugnoline base warmelt-base
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/383 \
+ GCCMELT_FROM=melt-build-script.tpl:471/383 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-base \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-base \
- || meltbuild_error melt-build-script.tpl:476/384 in meltbuild-modules failed to compile translator warmelt-base debugnoline
+ || meltbuild_error melt-build-script.tpl:478/384 in meltbuild-modules failed to compile translator warmelt-base debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/385 flavor debugnoline base warmelt-debug
+ #@ melt-build-script.tpl:469/385 flavor debugnoline base warmelt-debug
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/386 \
+ GCCMELT_FROM=melt-build-script.tpl:471/386 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-debug \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-debug \
- || meltbuild_error melt-build-script.tpl:476/387 in meltbuild-modules failed to compile translator warmelt-debug debugnoline
+ || meltbuild_error melt-build-script.tpl:478/387 in meltbuild-modules failed to compile translator warmelt-debug debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/388 flavor debugnoline base warmelt-macro
+ #@ melt-build-script.tpl:469/388 flavor debugnoline base warmelt-macro
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/389 \
+ GCCMELT_FROM=melt-build-script.tpl:471/389 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-macro \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-macro \
- || meltbuild_error melt-build-script.tpl:476/390 in meltbuild-modules failed to compile translator warmelt-macro debugnoline
+ || meltbuild_error melt-build-script.tpl:478/390 in meltbuild-modules failed to compile translator warmelt-macro debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/391 flavor debugnoline base warmelt-normal
+ #@ melt-build-script.tpl:469/391 flavor debugnoline base warmelt-normal
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/392 \
+ GCCMELT_FROM=melt-build-script.tpl:471/392 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-normal \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-normal \
- || meltbuild_error melt-build-script.tpl:476/393 in meltbuild-modules failed to compile translator warmelt-normal debugnoline
+ || meltbuild_error melt-build-script.tpl:478/393 in meltbuild-modules failed to compile translator warmelt-normal debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/394 flavor debugnoline base warmelt-normatch
+ #@ melt-build-script.tpl:469/394 flavor debugnoline base warmelt-normatch
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/395 \
+ GCCMELT_FROM=melt-build-script.tpl:471/395 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-normatch \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-normatch \
- || meltbuild_error melt-build-script.tpl:476/396 in meltbuild-modules failed to compile translator warmelt-normatch debugnoline
+ || meltbuild_error melt-build-script.tpl:478/396 in meltbuild-modules failed to compile translator warmelt-normatch debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/397 flavor debugnoline base warmelt-genobj
+ #@ melt-build-script.tpl:469/397 flavor debugnoline base warmelt-genobj
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/398 \
+ GCCMELT_FROM=melt-build-script.tpl:471/398 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-genobj \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-genobj \
- || meltbuild_error melt-build-script.tpl:476/399 in meltbuild-modules failed to compile translator warmelt-genobj debugnoline
+ || meltbuild_error melt-build-script.tpl:478/399 in meltbuild-modules failed to compile translator warmelt-genobj debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/400 flavor debugnoline base warmelt-outobj
+ #@ melt-build-script.tpl:469/400 flavor debugnoline base warmelt-outobj
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/401 \
+ GCCMELT_FROM=melt-build-script.tpl:471/401 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-outobj \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-outobj \
- || meltbuild_error melt-build-script.tpl:476/402 in meltbuild-modules failed to compile translator warmelt-outobj debugnoline
+ || meltbuild_error melt-build-script.tpl:478/402 in meltbuild-modules failed to compile translator warmelt-outobj debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
- #@ melt-build-script.tpl:468/403 flavor debugnoline base warmelt-modes
+ #@ melt-build-script.tpl:469/403 flavor debugnoline base warmelt-modes
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:470/404 \
+ GCCMELT_FROM=melt-build-script.tpl:471/404 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/warmelt-modes \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/warmelt-modes \
- || meltbuild_error melt-build-script.tpl:476/405 in meltbuild-modules failed to compile translator warmelt-modes debugnoline
+ || meltbuild_error melt-build-script.tpl:478/405 in meltbuild-modules failed to compile translator warmelt-modes debugnoline make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
@@ -1862,85 +1898,85 @@ function meltbuild_compile_translator_modules () {
################################################################
-#################@ melt-build-script.tpl:484/406
+#################@ melt-build-script.tpl:486/406
function meltbuild_symlink_melt_translator_sources () {
-### symlinking the MELT translator code in meltbuild-sources for warmelt-first from melt-build-script.tpl:489/407
+### symlinking the MELT translator code in meltbuild-sources for warmelt-first from melt-build-script.tpl:491/407
-meltbuild_info melt-build-script.tpl:491/408 putting MELT translator code of warmelt-first in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/408 putting MELT translator code of warmelt-first in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-first.melt meltbuild-sources/warmelt-first.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-base from melt-build-script.tpl:489/409
+### symlinking the MELT translator code in meltbuild-sources for warmelt-base from melt-build-script.tpl:491/409
-meltbuild_info melt-build-script.tpl:491/410 putting MELT translator code of warmelt-base in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/410 putting MELT translator code of warmelt-base in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-base.melt meltbuild-sources/warmelt-base.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-debug from melt-build-script.tpl:489/411
+### symlinking the MELT translator code in meltbuild-sources for warmelt-debug from melt-build-script.tpl:491/411
-meltbuild_info melt-build-script.tpl:491/412 putting MELT translator code of warmelt-debug in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/412 putting MELT translator code of warmelt-debug in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-debug.melt meltbuild-sources/warmelt-debug.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-macro from melt-build-script.tpl:489/413
+### symlinking the MELT translator code in meltbuild-sources for warmelt-macro from melt-build-script.tpl:491/413
-meltbuild_info melt-build-script.tpl:491/414 putting MELT translator code of warmelt-macro in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/414 putting MELT translator code of warmelt-macro in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-macro.melt meltbuild-sources/warmelt-macro.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-normal from melt-build-script.tpl:489/415
+### symlinking the MELT translator code in meltbuild-sources for warmelt-normal from melt-build-script.tpl:491/415
-meltbuild_info melt-build-script.tpl:491/416 putting MELT translator code of warmelt-normal in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/416 putting MELT translator code of warmelt-normal in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-normal.melt meltbuild-sources/warmelt-normal.melt
meltbuild_symlink warmelt-predef.melt meltbuild-sources/warmelt-predef.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-normatch from melt-build-script.tpl:489/417
+### symlinking the MELT translator code in meltbuild-sources for warmelt-normatch from melt-build-script.tpl:491/417
-meltbuild_info melt-build-script.tpl:491/418 putting MELT translator code of warmelt-normatch in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/418 putting MELT translator code of warmelt-normatch in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-normatch.melt meltbuild-sources/warmelt-normatch.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-genobj from melt-build-script.tpl:489/419
+### symlinking the MELT translator code in meltbuild-sources for warmelt-genobj from melt-build-script.tpl:491/419
-meltbuild_info melt-build-script.tpl:491/420 putting MELT translator code of warmelt-genobj in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/420 putting MELT translator code of warmelt-genobj in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-genobj.melt meltbuild-sources/warmelt-genobj.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-outobj from melt-build-script.tpl:489/421
+### symlinking the MELT translator code in meltbuild-sources for warmelt-outobj from melt-build-script.tpl:491/421
-meltbuild_info melt-build-script.tpl:491/422 putting MELT translator code of warmelt-outobj in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/422 putting MELT translator code of warmelt-outobj in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-outobj.melt meltbuild-sources/warmelt-outobj.melt
-### symlinking the MELT translator code in meltbuild-sources for warmelt-modes from melt-build-script.tpl:489/423
+### symlinking the MELT translator code in meltbuild-sources for warmelt-modes from melt-build-script.tpl:491/423
-meltbuild_info melt-build-script.tpl:491/424 putting MELT translator code of warmelt-modes in meltbuild-sources
+meltbuild_info melt-build-script.tpl:493/424 putting MELT translator code of warmelt-modes in meltbuild-sources
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-modes.melt meltbuild-sources/warmelt-modes.melt
@@ -1949,7 +1985,7 @@ meltbuild_symlink $GCCMELT_MELTSOURCEDIR/warmelt-modes.melt meltbuild-sources/wa
} # end of meltbuild_symlink_melt_translator_sources
-################@ melt-build-script.tpl:500/425
+################@ melt-build-script.tpl:502/425
melt_final_translator_stamp=meltbuild-final-translator.stamp
if [ ! -f $melt_final_translator_stamp -o $melt_final_translator_stamp -ot $GCCMELT_RUNTIME_DEPENDENCY \
@@ -1963,7 +1999,7 @@ if [ ! -f $melt_final_translator_stamp -o $melt_final_translator_stamp -ot $GCCM
-o $melt_final_translator_stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-outobj.melt \
-o $melt_final_translator_stamp -ot $GCCMELT_MELTSOURCEDIR/warmelt-modes.melt \
-o $melt_final_translator_stamp -ot $GCCMELT_LASTSTAGE/$GCCMELT_LASTSTAGE.stamp ]; then
- meltbuild_info melt-build-script.tpl:506/426 emit then translate the compile translator for $melt_final_translator_stamp
+ meltbuild_info melt-build-script.tpl:508/426 emit then translate the compile translator for $melt_final_translator_stamp
meltbuild_emit_translator_sources
meltbuild_symlink_melt_translator_sources
meltbuild_compile_translator_modules
@@ -1971,31 +2007,31 @@ if [ ! -f $melt_final_translator_stamp -o $melt_final_translator_stamp -ot $GCCM
echo "///MELT translator timestamp file $melt_final_translator_stamp" > $melt_final_translator_stamptemp
echo $GCCMELT_RUNTIME_DEPENDENCY_MD5SUM $GCCMELT_RUNTIME_DEPENDENCY >> $melt_final_translator_stamptemp
-#@ melt-build-script.tpl:514/427
+#@ melt-build-script.tpl:516/427
$MD5SUM meltbuild-sources/warmelt-first.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-first.c meltbuild-sources/warmelt-first+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_FIRST_cumulmd5=$(cat meltbuild-sources/warmelt-first.c meltbuild-sources/warmelt-first+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/428
+#@ melt-build-script.tpl:516/428
$MD5SUM meltbuild-sources/warmelt-base.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-base.c meltbuild-sources/warmelt-base+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_BASE_cumulmd5=$(cat meltbuild-sources/warmelt-base.c meltbuild-sources/warmelt-base+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/429
+#@ melt-build-script.tpl:516/429
$MD5SUM meltbuild-sources/warmelt-debug.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-debug.c meltbuild-sources/warmelt-debug+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_DEBUG_cumulmd5=$(cat meltbuild-sources/warmelt-debug.c meltbuild-sources/warmelt-debug+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/430
+#@ melt-build-script.tpl:516/430
$MD5SUM meltbuild-sources/warmelt-macro.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-macro.c meltbuild-sources/warmelt-macro+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_MACRO_cumulmd5=$(cat meltbuild-sources/warmelt-macro.c meltbuild-sources/warmelt-macro+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/431
+#@ melt-build-script.tpl:516/431
$MD5SUM meltbuild-sources/warmelt-normal.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-predef.melt >> $melt_final_translator_stamptemp
@@ -2003,25 +2039,25 @@ if [ ! -f $melt_final_translator_stamp -o $melt_final_translator_stamp -ot $GCCM
$MD5SUM meltbuild-sources/warmelt-normal.c meltbuild-sources/warmelt-normal+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_NORMAL_cumulmd5=$(cat meltbuild-sources/warmelt-normal.c meltbuild-sources/warmelt-normal+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/432
+#@ melt-build-script.tpl:516/432
$MD5SUM meltbuild-sources/warmelt-normatch.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-normatch.c meltbuild-sources/warmelt-normatch+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_NORMATCH_cumulmd5=$(cat meltbuild-sources/warmelt-normatch.c meltbuild-sources/warmelt-normatch+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/433
+#@ melt-build-script.tpl:516/433
$MD5SUM meltbuild-sources/warmelt-genobj.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-genobj.c meltbuild-sources/warmelt-genobj+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_GENOBJ_cumulmd5=$(cat meltbuild-sources/warmelt-genobj.c meltbuild-sources/warmelt-genobj+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/434
+#@ melt-build-script.tpl:516/434
$MD5SUM meltbuild-sources/warmelt-outobj.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-outobj.c meltbuild-sources/warmelt-outobj+[0-9][0-9].c >> $melt_final_translator_stamptemp
melt_translator_OUTOBJ_cumulmd5=$(cat meltbuild-sources/warmelt-outobj.c meltbuild-sources/warmelt-outobj+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
-#@ melt-build-script.tpl:514/435
+#@ melt-build-script.tpl:516/435
$MD5SUM meltbuild-sources/warmelt-modes.melt >> $melt_final_translator_stamptemp
$MD5SUM meltbuild-sources/warmelt-modes.c meltbuild-sources/warmelt-modes+[0-9][0-9].c >> $melt_final_translator_stamptemp
@@ -2030,22 +2066,22 @@ if [ ! -f $melt_final_translator_stamp -o $melt_final_translator_stamp -ot $GCCM
echo "///end timestamp file $melt_final_translator_stamp"
$GCCMELT_MOVE_IF_CHANGE $melt_final_translator_stamptemp $melt_final_translator_stamp
else
- meltbuild_info melt-build-script.tpl:525/436 skip final translation of translator stamp $melt_final_translator_stamp
+ meltbuild_info melt-build-script.tpl:527/436 skip final translation of translator stamp $melt_final_translator_stamp
fi
################################################################
-#@ melt-build-script.tpl:529/437
+#@ melt-build-script.tpl:531/437
if [ "$melt_overall_goal" = "translator" ]; then
- meltbuild_info melt-build-script.tpl:531/438 done translation overall goal with stamp $melt_final_translator_stamp
+ meltbuild_info melt-build-script.tpl:533/438 done translation overall goal with stamp $melt_final_translator_stamp
exit 0
fi
################
-#@ melt-build-script.tpl:536/439 before application xtramelt* modules
+#@ melt-build-script.tpl:538/439 before application xtramelt* modules
################################################################
-meltbuild_info melt-build-script.tpl:538/440 before applications GCCMELT_SKIPEMITC=$GCCMELT_SKIPEMITC.
+meltbuild_info melt-build-script.tpl:540/440 before applications GCCMELT_SKIPEMITC=$GCCMELT_SKIPEMITC.
-meltbuild_info melt-build-script.tpl:540/441 times before applications at `date '+%x %H:%M:%S'`: ; times > /dev/stderr
+meltbuild_info melt-build-script.tpl:542/441 times before applications at `date '+%x %H:%M:%S'`: ; times > /dev/stderr
melt_final_application_stamp=meltbuild-final-application.stamp
@@ -2053,26 +2089,26 @@ melt_final_application_stamp=meltbuild-final-application.stamp
function meltbuild_do_applications () {
- ## meltbuild_do_applications xtramelt-ana-base melt-build-script.tpl:548/442
+ ## meltbuild_do_applications xtramelt-ana-base melt-build-script.tpl:550/442
if [ ! -f meltbuild-sources/xtramelt-ana-base.melt ]; then
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/xtramelt-ana-base.melt meltbuild-sources/xtramelt-ana-base.melt
fi
- ## meltbuild_do_applications xtramelt-ana-base melt-build-script.tpl:552/443
+ ## meltbuild_do_applications xtramelt-ana-base melt-build-script.tpl:554/443
if [ ! -f meltbuild-sources/xtramelt-ana-base.c -o ! -f meltbuild-sources/xtramelt-ana-base+meltdesc.c \
-o meltbuild-sources/xtramelt-ana-base+meltdesc.c -ot meltbuild-final-translator.stamp \
-o meltbuild-sources/xtramelt-ana-base+meltdesc.c -ot meltbuild-sources/xtramelt-ana-base.melt \
]; then
- meltbuild_info melt-build-script.tpl:558/444 emit application C code for xtramelt-ana-base
- meltbuild_emit melt-build-script.tpl:559/445 \
+ meltbuild_info melt-build-script.tpl:560/444 emit application C code for xtramelt-ana-base
+ meltbuild_emit melt-build-script.tpl:561/445 \
translatefile \
xtramelt-ana-base \
meltbuild-sources \
meltbuild-modules \
warmelt-first.optimized:warmelt-base.optimized:warmelt-debug.optimized:warmelt-macro.optimized:warmelt-normal.optimized:warmelt-normatch.optimized:warmelt-genobj.optimized:warmelt-outobj.optimized:warmelt-modes.optimized \
"" \
- || meltbuild_error melt-build-script.tpl:566/446 failed to generate C code of application xtramelt-ana-base
+ || meltbuild_error melt-build-script.tpl:568/446 failed to generate C code of application xtramelt-ana-base
else
- meltbuild_info melt-build-script.tpl:568/447 DONT emit application C code for xtramelt-ana-base
+ meltbuild_info melt-build-script.tpl:570/447 DONT emit application C code for xtramelt-ana-base
fi
local meltapp_ANA_BASE_cumulmd5=$(cat meltbuild-sources/xtramelt-ana-base.c meltbuild-sources/xtramelt-ana-base+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
@@ -2080,76 +2116,79 @@ function meltbuild_do_applications () {
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.quicklybuilt.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-base.c \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-base+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/448 compiling application module for xtramelt-ana-base quicklybuilt
+ meltbuild_info melt-build-script.tpl:578/448 compiling application module for xtramelt-ana-base quicklybuilt
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/449 \
+ GCCMELT_FROM=melt-build-script.tpl:580/449 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-base \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-base \
- || meltbuild_error melt-build-script.tpl:584/450 in meltbuild-modules failed to compile application xtramelt-ana-base quicklybuilt
+ || meltbuild_error melt-build-script.tpl:587/450 in meltbuild-modules failed to compile application xtramelt-ana-base quicklybuilt "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/451 not compiling application module for xtramelt-ana-base quicklybuilt
+ meltbuild_info melt-build-script.tpl:589/451 not compiling application module for xtramelt-ana-base quicklybuilt
fi
if [ ! -f meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.optimized.so \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.optimized.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-base.c \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-base+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/452 compiling application module for xtramelt-ana-base optimized
+ meltbuild_info melt-build-script.tpl:578/452 compiling application module for xtramelt-ana-base optimized
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/453 \
+ GCCMELT_FROM=melt-build-script.tpl:580/453 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-base \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-base \
- || meltbuild_error melt-build-script.tpl:584/454 in meltbuild-modules failed to compile application xtramelt-ana-base optimized
+ || meltbuild_error melt-build-script.tpl:587/454 in meltbuild-modules failed to compile application xtramelt-ana-base optimized "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/455 not compiling application module for xtramelt-ana-base optimized
+ meltbuild_info melt-build-script.tpl:589/455 not compiling application module for xtramelt-ana-base optimized
fi
if [ ! -f meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.debugnoline.so \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.debugnoline.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-base.c \
-o meltbuild-modules/xtramelt-ana-base.meltmod-$meltapp_ANA_BASE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-base+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/456 compiling application module for xtramelt-ana-base debugnoline
+ meltbuild_info melt-build-script.tpl:578/456 compiling application module for xtramelt-ana-base debugnoline
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/457 \
+ GCCMELT_FROM=melt-build-script.tpl:580/457 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-base \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-base \
- || meltbuild_error melt-build-script.tpl:584/458 in meltbuild-modules failed to compile application xtramelt-ana-base debugnoline
+ || meltbuild_error melt-build-script.tpl:587/458 in meltbuild-modules failed to compile application xtramelt-ana-base debugnoline "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/459 not compiling application module for xtramelt-ana-base debugnoline
+ meltbuild_info melt-build-script.tpl:589/459 not compiling application module for xtramelt-ana-base debugnoline
fi
- ## meltbuild_do_applications xtramelt-ana-tree melt-build-script.tpl:548/460
+ ## meltbuild_do_applications xtramelt-ana-tree melt-build-script.tpl:550/460
if [ ! -f meltbuild-sources/xtramelt-ana-tree.melt ]; then
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/xtramelt-ana-tree.melt meltbuild-sources/xtramelt-ana-tree.melt
fi
- ## meltbuild_do_applications xtramelt-ana-tree melt-build-script.tpl:552/461
+ ## meltbuild_do_applications xtramelt-ana-tree melt-build-script.tpl:554/461
if [ ! -f meltbuild-sources/xtramelt-ana-tree.c -o ! -f meltbuild-sources/xtramelt-ana-tree+meltdesc.c \
-o meltbuild-sources/xtramelt-ana-tree+meltdesc.c -ot meltbuild-final-translator.stamp \
-o meltbuild-sources/xtramelt-ana-tree+meltdesc.c -ot meltbuild-sources/xtramelt-ana-tree.melt \
-o meltbuild-sources/xtramelt-ana-base+meltdesc.c -ot meltbuild-sources/xtramelt-ana-tree+meltdesc.c \
]; then
- meltbuild_info melt-build-script.tpl:558/462 emit application C code for xtramelt-ana-tree
- meltbuild_emit melt-build-script.tpl:559/463 \
+ meltbuild_info melt-build-script.tpl:560/462 emit application C code for xtramelt-ana-tree
+ meltbuild_emit melt-build-script.tpl:561/463 \
translatefile \
xtramelt-ana-tree \
meltbuild-sources \
meltbuild-modules \
warmelt-first.optimized:warmelt-base.optimized:warmelt-debug.optimized:warmelt-macro.optimized:warmelt-normal.optimized:warmelt-normatch.optimized:warmelt-genobj.optimized:warmelt-outobj.optimized:warmelt-modes.optimized:xtramelt-ana-base.quicklybuilt \
"" \
- || meltbuild_error melt-build-script.tpl:566/464 failed to generate C code of application xtramelt-ana-tree
+ || meltbuild_error melt-build-script.tpl:568/464 failed to generate C code of application xtramelt-ana-tree
else
- meltbuild_info melt-build-script.tpl:568/465 DONT emit application C code for xtramelt-ana-tree
+ meltbuild_info melt-build-script.tpl:570/465 DONT emit application C code for xtramelt-ana-tree
fi
local meltapp_ANA_TREE_cumulmd5=$(cat meltbuild-sources/xtramelt-ana-tree.c meltbuild-sources/xtramelt-ana-tree+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
@@ -2157,77 +2196,80 @@ function meltbuild_do_applications () {
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.quicklybuilt.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-tree.c \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-tree+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/466 compiling application module for xtramelt-ana-tree quicklybuilt
+ meltbuild_info melt-build-script.tpl:578/466 compiling application module for xtramelt-ana-tree quicklybuilt
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/467 \
+ GCCMELT_FROM=melt-build-script.tpl:580/467 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-tree \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-tree \
- || meltbuild_error melt-build-script.tpl:584/468 in meltbuild-modules failed to compile application xtramelt-ana-tree quicklybuilt
+ || meltbuild_error melt-build-script.tpl:587/468 in meltbuild-modules failed to compile application xtramelt-ana-tree quicklybuilt "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/469 not compiling application module for xtramelt-ana-tree quicklybuilt
+ meltbuild_info melt-build-script.tpl:589/469 not compiling application module for xtramelt-ana-tree quicklybuilt
fi
if [ ! -f meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.optimized.so \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.optimized.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-tree.c \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-tree+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/470 compiling application module for xtramelt-ana-tree optimized
+ meltbuild_info melt-build-script.tpl:578/470 compiling application module for xtramelt-ana-tree optimized
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/471 \
+ GCCMELT_FROM=melt-build-script.tpl:580/471 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-tree \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-tree \
- || meltbuild_error melt-build-script.tpl:584/472 in meltbuild-modules failed to compile application xtramelt-ana-tree optimized
+ || meltbuild_error melt-build-script.tpl:587/472 in meltbuild-modules failed to compile application xtramelt-ana-tree optimized "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/473 not compiling application module for xtramelt-ana-tree optimized
+ meltbuild_info melt-build-script.tpl:589/473 not compiling application module for xtramelt-ana-tree optimized
fi
if [ ! -f meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.debugnoline.so \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.debugnoline.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-tree.c \
-o meltbuild-modules/xtramelt-ana-tree.meltmod-$meltapp_ANA_TREE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-tree+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/474 compiling application module for xtramelt-ana-tree debugnoline
+ meltbuild_info melt-build-script.tpl:578/474 compiling application module for xtramelt-ana-tree debugnoline
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/475 \
+ GCCMELT_FROM=melt-build-script.tpl:580/475 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-tree \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-tree \
- || meltbuild_error melt-build-script.tpl:584/476 in meltbuild-modules failed to compile application xtramelt-ana-tree debugnoline
+ || meltbuild_error melt-build-script.tpl:587/476 in meltbuild-modules failed to compile application xtramelt-ana-tree debugnoline "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/477 not compiling application module for xtramelt-ana-tree debugnoline
+ meltbuild_info melt-build-script.tpl:589/477 not compiling application module for xtramelt-ana-tree debugnoline
fi
- ## meltbuild_do_applications xtramelt-ana-gimple melt-build-script.tpl:548/478
+ ## meltbuild_do_applications xtramelt-ana-gimple melt-build-script.tpl:550/478
if [ ! -f meltbuild-sources/xtramelt-ana-gimple.melt ]; then
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/xtramelt-ana-gimple.melt meltbuild-sources/xtramelt-ana-gimple.melt
fi
- ## meltbuild_do_applications xtramelt-ana-gimple melt-build-script.tpl:552/479
+ ## meltbuild_do_applications xtramelt-ana-gimple melt-build-script.tpl:554/479
if [ ! -f meltbuild-sources/xtramelt-ana-gimple.c -o ! -f meltbuild-sources/xtramelt-ana-gimple+meltdesc.c \
-o meltbuild-sources/xtramelt-ana-gimple+meltdesc.c -ot meltbuild-final-translator.stamp \
-o meltbuild-sources/xtramelt-ana-gimple+meltdesc.c -ot meltbuild-sources/xtramelt-ana-gimple.melt \
-o meltbuild-sources/xtramelt-ana-base+meltdesc.c -ot meltbuild-sources/xtramelt-ana-gimple+meltdesc.c \
-o meltbuild-sources/xtramelt-ana-tree+meltdesc.c -ot meltbuild-sources/xtramelt-ana-gimple+meltdesc.c \
]; then
- meltbuild_info melt-build-script.tpl:558/480 emit application C code for xtramelt-ana-gimple
- meltbuild_emit melt-build-script.tpl:559/481 \
+ meltbuild_info melt-build-script.tpl:560/480 emit application C code for xtramelt-ana-gimple
+ meltbuild_emit melt-build-script.tpl:561/481 \
translatefile \
xtramelt-ana-gimple \
meltbuild-sources \
meltbuild-modules \
warmelt-first.optimized:warmelt-base.optimized:warmelt-debug.optimized:warmelt-macro.optimized:warmelt-normal.optimized:warmelt-normatch.optimized:warmelt-genobj.optimized:warmelt-outobj.optimized:warmelt-modes.optimized:xtramelt-ana-base.quicklybuilt:xtramelt-ana-tree.quicklybuilt \
"" \
- || meltbuild_error melt-build-script.tpl:566/482 failed to generate C code of application xtramelt-ana-gimple
+ || meltbuild_error melt-build-script.tpl:568/482 failed to generate C code of application xtramelt-ana-gimple
else
- meltbuild_info melt-build-script.tpl:568/483 DONT emit application C code for xtramelt-ana-gimple
+ meltbuild_info melt-build-script.tpl:570/483 DONT emit application C code for xtramelt-ana-gimple
fi
local meltapp_ANA_GIMPLE_cumulmd5=$(cat meltbuild-sources/xtramelt-ana-gimple.c meltbuild-sources/xtramelt-ana-gimple+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
@@ -2235,60 +2277,63 @@ function meltbuild_do_applications () {
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.quicklybuilt.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-gimple.c \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-gimple+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/484 compiling application module for xtramelt-ana-gimple quicklybuilt
+ meltbuild_info melt-build-script.tpl:578/484 compiling application module for xtramelt-ana-gimple quicklybuilt
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/485 \
+ GCCMELT_FROM=melt-build-script.tpl:580/485 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-gimple \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-gimple \
- || meltbuild_error melt-build-script.tpl:584/486 in meltbuild-modules failed to compile application xtramelt-ana-gimple quicklybuilt
+ || meltbuild_error melt-build-script.tpl:587/486 in meltbuild-modules failed to compile application xtramelt-ana-gimple quicklybuilt "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/487 not compiling application module for xtramelt-ana-gimple quicklybuilt
+ meltbuild_info melt-build-script.tpl:589/487 not compiling application module for xtramelt-ana-gimple quicklybuilt
fi
if [ ! -f meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.optimized.so \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.optimized.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-gimple.c \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-gimple+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/488 compiling application module for xtramelt-ana-gimple optimized
+ meltbuild_info melt-build-script.tpl:578/488 compiling application module for xtramelt-ana-gimple optimized
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/489 \
+ GCCMELT_FROM=melt-build-script.tpl:580/489 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-gimple \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-gimple \
- || meltbuild_error melt-build-script.tpl:584/490 in meltbuild-modules failed to compile application xtramelt-ana-gimple optimized
+ || meltbuild_error melt-build-script.tpl:587/490 in meltbuild-modules failed to compile application xtramelt-ana-gimple optimized "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/491 not compiling application module for xtramelt-ana-gimple optimized
+ meltbuild_info melt-build-script.tpl:589/491 not compiling application module for xtramelt-ana-gimple optimized
fi
if [ ! -f meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.debugnoline.so \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.debugnoline.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-gimple.c \
-o meltbuild-modules/xtramelt-ana-gimple.meltmod-$meltapp_ANA_GIMPLE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-gimple+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/492 compiling application module for xtramelt-ana-gimple debugnoline
+ meltbuild_info melt-build-script.tpl:578/492 compiling application module for xtramelt-ana-gimple debugnoline
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/493 \
+ GCCMELT_FROM=melt-build-script.tpl:580/493 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-gimple \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-gimple \
- || meltbuild_error melt-build-script.tpl:584/494 in meltbuild-modules failed to compile application xtramelt-ana-gimple debugnoline
+ || meltbuild_error melt-build-script.tpl:587/494 in meltbuild-modules failed to compile application xtramelt-ana-gimple debugnoline "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/495 not compiling application module for xtramelt-ana-gimple debugnoline
+ meltbuild_info melt-build-script.tpl:589/495 not compiling application module for xtramelt-ana-gimple debugnoline
fi
- ## meltbuild_do_applications xtramelt-probe melt-build-script.tpl:548/496
+ ## meltbuild_do_applications xtramelt-probe melt-build-script.tpl:550/496
if [ ! -f meltbuild-sources/xtramelt-probe.melt ]; then
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/xtramelt-probe.melt meltbuild-sources/xtramelt-probe.melt
fi
- ## meltbuild_do_applications xtramelt-probe melt-build-script.tpl:552/497
+ ## meltbuild_do_applications xtramelt-probe melt-build-script.tpl:554/497
if [ ! -f meltbuild-sources/xtramelt-probe.c -o ! -f meltbuild-sources/xtramelt-probe+meltdesc.c \
-o meltbuild-sources/xtramelt-probe+meltdesc.c -ot meltbuild-final-translator.stamp \
-o meltbuild-sources/xtramelt-probe+meltdesc.c -ot meltbuild-sources/xtramelt-probe.melt \
@@ -2296,17 +2341,17 @@ function meltbuild_do_applications () {
-o meltbuild-sources/xtramelt-ana-tree+meltdesc.c -ot meltbuild-sources/xtramelt-probe+meltdesc.c \
-o meltbuild-sources/xtramelt-ana-gimple+meltdesc.c -ot meltbuild-sources/xtramelt-probe+meltdesc.c \
]; then
- meltbuild_info melt-build-script.tpl:558/498 emit application C code for xtramelt-probe
- meltbuild_emit melt-build-script.tpl:559/499 \
+ meltbuild_info melt-build-script.tpl:560/498 emit application C code for xtramelt-probe
+ meltbuild_emit melt-build-script.tpl:561/499 \
translatefile \
xtramelt-probe \
meltbuild-sources \
meltbuild-modules \
warmelt-first.optimized:warmelt-base.optimized:warmelt-debug.optimized:warmelt-macro.optimized:warmelt-normal.optimized:warmelt-normatch.optimized:warmelt-genobj.optimized:warmelt-outobj.optimized:warmelt-modes.optimized:xtramelt-ana-base.quicklybuilt:xtramelt-ana-tree.quicklybuilt:xtramelt-ana-gimple.quicklybuilt \
"" \
- || meltbuild_error melt-build-script.tpl:566/500 failed to generate C code of application xtramelt-probe
+ || meltbuild_error melt-build-script.tpl:568/500 failed to generate C code of application xtramelt-probe
else
- meltbuild_info melt-build-script.tpl:568/501 DONT emit application C code for xtramelt-probe
+ meltbuild_info melt-build-script.tpl:570/501 DONT emit application C code for xtramelt-probe
fi
local meltapp_PROBE_cumulmd5=$(cat meltbuild-sources/xtramelt-probe.c meltbuild-sources/xtramelt-probe+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
@@ -2314,60 +2359,63 @@ function meltbuild_do_applications () {
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.quicklybuilt.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-probe.c \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-probe+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/502 compiling application module for xtramelt-probe quicklybuilt
+ meltbuild_info melt-build-script.tpl:578/502 compiling application module for xtramelt-probe quicklybuilt
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/503 \
+ GCCMELT_FROM=melt-build-script.tpl:580/503 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-probe \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-probe \
- || meltbuild_error melt-build-script.tpl:584/504 in meltbuild-modules failed to compile application xtramelt-probe quicklybuilt
+ || meltbuild_error melt-build-script.tpl:587/504 in meltbuild-modules failed to compile application xtramelt-probe quicklybuilt "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/505 not compiling application module for xtramelt-probe quicklybuilt
+ meltbuild_info melt-build-script.tpl:589/505 not compiling application module for xtramelt-probe quicklybuilt
fi
if [ ! -f meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.optimized.so \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.optimized.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-probe.c \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-probe+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/506 compiling application module for xtramelt-probe optimized
+ meltbuild_info melt-build-script.tpl:578/506 compiling application module for xtramelt-probe optimized
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/507 \
+ GCCMELT_FROM=melt-build-script.tpl:580/507 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-probe \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-probe \
- || meltbuild_error melt-build-script.tpl:584/508 in meltbuild-modules failed to compile application xtramelt-probe optimized
+ || meltbuild_error melt-build-script.tpl:587/508 in meltbuild-modules failed to compile application xtramelt-probe optimized "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/509 not compiling application module for xtramelt-probe optimized
+ meltbuild_info melt-build-script.tpl:589/509 not compiling application module for xtramelt-probe optimized
fi
if [ ! -f meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.debugnoline.so \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.debugnoline.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-probe.c \
-o meltbuild-modules/xtramelt-probe.meltmod-$meltapp_PROBE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-probe+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/510 compiling application module for xtramelt-probe debugnoline
+ meltbuild_info melt-build-script.tpl:578/510 compiling application module for xtramelt-probe debugnoline
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/511 \
+ GCCMELT_FROM=melt-build-script.tpl:580/511 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-probe \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-probe \
- || meltbuild_error melt-build-script.tpl:584/512 in meltbuild-modules failed to compile application xtramelt-probe debugnoline
+ || meltbuild_error melt-build-script.tpl:587/512 in meltbuild-modules failed to compile application xtramelt-probe debugnoline "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/513 not compiling application module for xtramelt-probe debugnoline
+ meltbuild_info melt-build-script.tpl:589/513 not compiling application module for xtramelt-probe debugnoline
fi
- ## meltbuild_do_applications xtramelt-ana-simple melt-build-script.tpl:548/514
+ ## meltbuild_do_applications xtramelt-ana-simple melt-build-script.tpl:550/514
if [ ! -f meltbuild-sources/xtramelt-ana-simple.melt ]; then
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/xtramelt-ana-simple.melt meltbuild-sources/xtramelt-ana-simple.melt
fi
- ## meltbuild_do_applications xtramelt-ana-simple melt-build-script.tpl:552/515
+ ## meltbuild_do_applications xtramelt-ana-simple melt-build-script.tpl:554/515
if [ ! -f meltbuild-sources/xtramelt-ana-simple.c -o ! -f meltbuild-sources/xtramelt-ana-simple+meltdesc.c \
-o meltbuild-sources/xtramelt-ana-simple+meltdesc.c -ot meltbuild-final-translator.stamp \
-o meltbuild-sources/xtramelt-ana-simple+meltdesc.c -ot meltbuild-sources/xtramelt-ana-simple.melt \
@@ -2376,17 +2424,17 @@ function meltbuild_do_applications () {
-o meltbuild-sources/xtramelt-ana-gimple+meltdesc.c -ot meltbuild-sources/xtramelt-ana-simple+meltdesc.c \
-o meltbuild-sources/xtramelt-probe+meltdesc.c -ot meltbuild-sources/xtramelt-ana-simple+meltdesc.c \
]; then
- meltbuild_info melt-build-script.tpl:558/516 emit application C code for xtramelt-ana-simple
- meltbuild_emit melt-build-script.tpl:559/517 \
+ meltbuild_info melt-build-script.tpl:560/516 emit application C code for xtramelt-ana-simple
+ meltbuild_emit melt-build-script.tpl:561/517 \
translatefile \
xtramelt-ana-simple \
meltbuild-sources \
meltbuild-modules \
warmelt-first.optimized:warmelt-base.optimized:warmelt-debug.optimized:warmelt-macro.optimized:warmelt-normal.optimized:warmelt-normatch.optimized:warmelt-genobj.optimized:warmelt-outobj.optimized:warmelt-modes.optimized:xtramelt-ana-base.quicklybuilt:xtramelt-ana-tree.quicklybuilt:xtramelt-ana-gimple.quicklybuilt:xtramelt-probe.quicklybuilt \
"" \
- || meltbuild_error melt-build-script.tpl:566/518 failed to generate C code of application xtramelt-ana-simple
+ || meltbuild_error melt-build-script.tpl:568/518 failed to generate C code of application xtramelt-ana-simple
else
- meltbuild_info melt-build-script.tpl:568/519 DONT emit application C code for xtramelt-ana-simple
+ meltbuild_info melt-build-script.tpl:570/519 DONT emit application C code for xtramelt-ana-simple
fi
local meltapp_ANA_SIMPLE_cumulmd5=$(cat meltbuild-sources/xtramelt-ana-simple.c meltbuild-sources/xtramelt-ana-simple+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
@@ -2394,60 +2442,63 @@ function meltbuild_do_applications () {
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.quicklybuilt.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-simple.c \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-ana-simple+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/520 compiling application module for xtramelt-ana-simple quicklybuilt
+ meltbuild_info melt-build-script.tpl:578/520 compiling application module for xtramelt-ana-simple quicklybuilt
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/521 \
+ GCCMELT_FROM=melt-build-script.tpl:580/521 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-simple \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-simple \
- || meltbuild_error melt-build-script.tpl:584/522 in meltbuild-modules failed to compile application xtramelt-ana-simple quicklybuilt
+ || meltbuild_error melt-build-script.tpl:587/522 in meltbuild-modules failed to compile application xtramelt-ana-simple quicklybuilt "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/523 not compiling application module for xtramelt-ana-simple quicklybuilt
+ meltbuild_info melt-build-script.tpl:589/523 not compiling application module for xtramelt-ana-simple quicklybuilt
fi
if [ ! -f meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.optimized.so \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.optimized.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-simple.c \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-ana-simple+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/524 compiling application module for xtramelt-ana-simple optimized
+ meltbuild_info melt-build-script.tpl:578/524 compiling application module for xtramelt-ana-simple optimized
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/525 \
+ GCCMELT_FROM=melt-build-script.tpl:580/525 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-simple \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-simple \
- || meltbuild_error melt-build-script.tpl:584/526 in meltbuild-modules failed to compile application xtramelt-ana-simple optimized
+ || meltbuild_error melt-build-script.tpl:587/526 in meltbuild-modules failed to compile application xtramelt-ana-simple optimized "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/527 not compiling application module for xtramelt-ana-simple optimized
+ meltbuild_info melt-build-script.tpl:589/527 not compiling application module for xtramelt-ana-simple optimized
fi
if [ ! -f meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.debugnoline.so \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.debugnoline.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-simple.c \
-o meltbuild-modules/xtramelt-ana-simple.meltmod-$meltapp_ANA_SIMPLE_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-ana-simple+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/528 compiling application module for xtramelt-ana-simple debugnoline
+ meltbuild_info melt-build-script.tpl:578/528 compiling application module for xtramelt-ana-simple debugnoline
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/529 \
+ GCCMELT_FROM=melt-build-script.tpl:580/529 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-ana-simple \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-ana-simple \
- || meltbuild_error melt-build-script.tpl:584/530 in meltbuild-modules failed to compile application xtramelt-ana-simple debugnoline
+ || meltbuild_error melt-build-script.tpl:587/530 in meltbuild-modules failed to compile application xtramelt-ana-simple debugnoline "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/531 not compiling application module for xtramelt-ana-simple debugnoline
+ meltbuild_info melt-build-script.tpl:589/531 not compiling application module for xtramelt-ana-simple debugnoline
fi
- ## meltbuild_do_applications xtramelt-c-generator melt-build-script.tpl:548/532
+ ## meltbuild_do_applications xtramelt-c-generator melt-build-script.tpl:550/532
if [ ! -f meltbuild-sources/xtramelt-c-generator.melt ]; then
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/xtramelt-c-generator.melt meltbuild-sources/xtramelt-c-generator.melt
fi
- ## meltbuild_do_applications xtramelt-c-generator melt-build-script.tpl:552/533
+ ## meltbuild_do_applications xtramelt-c-generator melt-build-script.tpl:554/533
if [ ! -f meltbuild-sources/xtramelt-c-generator.c -o ! -f meltbuild-sources/xtramelt-c-generator+meltdesc.c \
-o meltbuild-sources/xtramelt-c-generator+meltdesc.c -ot meltbuild-final-translator.stamp \
-o meltbuild-sources/xtramelt-c-generator+meltdesc.c -ot meltbuild-sources/xtramelt-c-generator.melt \
@@ -2457,17 +2508,17 @@ function meltbuild_do_applications () {
-o meltbuild-sources/xtramelt-probe+meltdesc.c -ot meltbuild-sources/xtramelt-c-generator+meltdesc.c \
-o meltbuild-sources/xtramelt-ana-simple+meltdesc.c -ot meltbuild-sources/xtramelt-c-generator+meltdesc.c \
]; then
- meltbuild_info melt-build-script.tpl:558/534 emit application C code for xtramelt-c-generator
- meltbuild_emit melt-build-script.tpl:559/535 \
+ meltbuild_info melt-build-script.tpl:560/534 emit application C code for xtramelt-c-generator
+ meltbuild_emit melt-build-script.tpl:561/535 \
translatefile \
xtramelt-c-generator \
meltbuild-sources \
meltbuild-modules \
warmelt-first.optimized:warmelt-base.optimized:warmelt-debug.optimized:warmelt-macro.optimized:warmelt-normal.optimized:warmelt-normatch.optimized:warmelt-genobj.optimized:warmelt-outobj.optimized:warmelt-modes.optimized:xtramelt-ana-base.quicklybuilt:xtramelt-ana-tree.quicklybuilt:xtramelt-ana-gimple.quicklybuilt:xtramelt-probe.quicklybuilt:xtramelt-ana-simple.quicklybuilt \
"" \
- || meltbuild_error melt-build-script.tpl:566/536 failed to generate C code of application xtramelt-c-generator
+ || meltbuild_error melt-build-script.tpl:568/536 failed to generate C code of application xtramelt-c-generator
else
- meltbuild_info melt-build-script.tpl:568/537 DONT emit application C code for xtramelt-c-generator
+ meltbuild_info melt-build-script.tpl:570/537 DONT emit application C code for xtramelt-c-generator
fi
local meltapp_C_GENERATOR_cumulmd5=$(cat meltbuild-sources/xtramelt-c-generator.c meltbuild-sources/xtramelt-c-generator+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
@@ -2475,60 +2526,63 @@ function meltbuild_do_applications () {
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.quicklybuilt.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-c-generator.c \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-c-generator+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/538 compiling application module for xtramelt-c-generator quicklybuilt
+ meltbuild_info melt-build-script.tpl:578/538 compiling application module for xtramelt-c-generator quicklybuilt
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/539 \
+ GCCMELT_FROM=melt-build-script.tpl:580/539 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-c-generator \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-c-generator \
- || meltbuild_error melt-build-script.tpl:584/540 in meltbuild-modules failed to compile application xtramelt-c-generator quicklybuilt
+ || meltbuild_error melt-build-script.tpl:587/540 in meltbuild-modules failed to compile application xtramelt-c-generator quicklybuilt "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/541 not compiling application module for xtramelt-c-generator quicklybuilt
+ meltbuild_info melt-build-script.tpl:589/541 not compiling application module for xtramelt-c-generator quicklybuilt
fi
if [ ! -f meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.optimized.so \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.optimized.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-c-generator.c \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-c-generator+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/542 compiling application module for xtramelt-c-generator optimized
+ meltbuild_info melt-build-script.tpl:578/542 compiling application module for xtramelt-c-generator optimized
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/543 \
+ GCCMELT_FROM=melt-build-script.tpl:580/543 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-c-generator \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-c-generator \
- || meltbuild_error melt-build-script.tpl:584/544 in meltbuild-modules failed to compile application xtramelt-c-generator optimized
+ || meltbuild_error melt-build-script.tpl:587/544 in meltbuild-modules failed to compile application xtramelt-c-generator optimized "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/545 not compiling application module for xtramelt-c-generator optimized
+ meltbuild_info melt-build-script.tpl:589/545 not compiling application module for xtramelt-c-generator optimized
fi
if [ ! -f meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.debugnoline.so \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.debugnoline.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-c-generator.c \
-o meltbuild-modules/xtramelt-c-generator.meltmod-$meltapp_C_GENERATOR_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-c-generator+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/546 compiling application module for xtramelt-c-generator debugnoline
+ meltbuild_info melt-build-script.tpl:578/546 compiling application module for xtramelt-c-generator debugnoline
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/547 \
+ GCCMELT_FROM=melt-build-script.tpl:580/547 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-c-generator \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-c-generator \
- || meltbuild_error melt-build-script.tpl:584/548 in meltbuild-modules failed to compile application xtramelt-c-generator debugnoline
+ || meltbuild_error melt-build-script.tpl:587/548 in meltbuild-modules failed to compile application xtramelt-c-generator debugnoline "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/549 not compiling application module for xtramelt-c-generator debugnoline
+ meltbuild_info melt-build-script.tpl:589/549 not compiling application module for xtramelt-c-generator debugnoline
fi
- ## meltbuild_do_applications xtramelt-opengpu melt-build-script.tpl:548/550
+ ## meltbuild_do_applications xtramelt-opengpu melt-build-script.tpl:550/550
if [ ! -f meltbuild-sources/xtramelt-opengpu.melt ]; then
meltbuild_symlink $GCCMELT_MELTSOURCEDIR/xtramelt-opengpu.melt meltbuild-sources/xtramelt-opengpu.melt
fi
- ## meltbuild_do_applications xtramelt-opengpu melt-build-script.tpl:552/551
+ ## meltbuild_do_applications xtramelt-opengpu melt-build-script.tpl:554/551
if [ ! -f meltbuild-sources/xtramelt-opengpu.c -o ! -f meltbuild-sources/xtramelt-opengpu+meltdesc.c \
-o meltbuild-sources/xtramelt-opengpu+meltdesc.c -ot meltbuild-final-translator.stamp \
-o meltbuild-sources/xtramelt-opengpu+meltdesc.c -ot meltbuild-sources/xtramelt-opengpu.melt \
@@ -2539,17 +2593,17 @@ function meltbuild_do_applications () {
-o meltbuild-sources/xtramelt-ana-simple+meltdesc.c -ot meltbuild-sources/xtramelt-opengpu+meltdesc.c \
-o meltbuild-sources/xtramelt-c-generator+meltdesc.c -ot meltbuild-sources/xtramelt-opengpu+meltdesc.c \
]; then
- meltbuild_info melt-build-script.tpl:558/552 emit application C code for xtramelt-opengpu
- meltbuild_emit melt-build-script.tpl:559/553 \
+ meltbuild_info melt-build-script.tpl:560/552 emit application C code for xtramelt-opengpu
+ meltbuild_emit melt-build-script.tpl:561/553 \
translatefile \
xtramelt-opengpu \
meltbuild-sources \
meltbuild-modules \
warmelt-first.optimized:warmelt-base.optimized:warmelt-debug.optimized:warmelt-macro.optimized:warmelt-normal.optimized:warmelt-normatch.optimized:warmelt-genobj.optimized:warmelt-outobj.optimized:warmelt-modes.optimized:xtramelt-ana-base.quicklybuilt:xtramelt-ana-tree.quicklybuilt:xtramelt-ana-gimple.quicklybuilt:xtramelt-probe.quicklybuilt:xtramelt-ana-simple.quicklybuilt:xtramelt-c-generator.quicklybuilt \
"" \
- || meltbuild_error melt-build-script.tpl:566/554 failed to generate C code of application xtramelt-opengpu
+ || meltbuild_error melt-build-script.tpl:568/554 failed to generate C code of application xtramelt-opengpu
else
- meltbuild_info melt-build-script.tpl:568/555 DONT emit application C code for xtramelt-opengpu
+ meltbuild_info melt-build-script.tpl:570/555 DONT emit application C code for xtramelt-opengpu
fi
local meltapp_OPENGPU_cumulmd5=$(cat meltbuild-sources/xtramelt-opengpu.c meltbuild-sources/xtramelt-opengpu+[0-9][0-9].c | $MD5SUM | cut -b 1-32)
@@ -2557,55 +2611,58 @@ function meltbuild_do_applications () {
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.quicklybuilt.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-opengpu.c \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.quicklybuilt.so -ot meltbuild-sources/xtramelt-opengpu+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/556 compiling application module for xtramelt-opengpu quicklybuilt
+ meltbuild_info melt-build-script.tpl:578/556 compiling application module for xtramelt-opengpu quicklybuilt
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/557 \
+ GCCMELT_FROM=melt-build-script.tpl:580/557 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=quicklybuilt \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-opengpu \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-opengpu \
- || meltbuild_error melt-build-script.tpl:584/558 in meltbuild-modules failed to compile application xtramelt-opengpu quicklybuilt
+ || meltbuild_error melt-build-script.tpl:587/558 in meltbuild-modules failed to compile application xtramelt-opengpu quicklybuilt "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/559 not compiling application module for xtramelt-opengpu quicklybuilt
+ meltbuild_info melt-build-script.tpl:589/559 not compiling application module for xtramelt-opengpu quicklybuilt
fi
if [ ! -f meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.optimized.so \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.optimized.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-opengpu.c \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.optimized.so -ot meltbuild-sources/xtramelt-opengpu+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/560 compiling application module for xtramelt-opengpu optimized
+ meltbuild_info melt-build-script.tpl:578/560 compiling application module for xtramelt-opengpu optimized
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/561 \
+ GCCMELT_FROM=melt-build-script.tpl:580/561 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=optimized \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-opengpu \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-opengpu \
- || meltbuild_error melt-build-script.tpl:584/562 in meltbuild-modules failed to compile application xtramelt-opengpu optimized
+ || meltbuild_error melt-build-script.tpl:587/562 in meltbuild-modules failed to compile application xtramelt-opengpu optimized "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/563 not compiling application module for xtramelt-opengpu optimized
+ meltbuild_info melt-build-script.tpl:589/563 not compiling application module for xtramelt-opengpu optimized
fi
if [ ! -f meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.debugnoline.so \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.debugnoline.so -ot meltbuild-final-translator.stamp \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-opengpu.c \
-o meltbuild-modules/xtramelt-opengpu.meltmod-$meltapp_OPENGPU_cumulmd5.debugnoline.so -ot meltbuild-sources/xtramelt-opengpu+meltdesc.c ]; then
- meltbuild_info melt-build-script.tpl:576/564 compiling application module for xtramelt-opengpu debugnoline
+ meltbuild_info melt-build-script.tpl:578/564 compiling application module for xtramelt-opengpu debugnoline
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
- GCCMELT_FROM=melt-build-script.tpl:578/565 \
+ GCCMELT_FROM=melt-build-script.tpl:580/565 \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=debugnoline \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/xtramelt-opengpu \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/xtramelt-opengpu \
- || meltbuild_error melt-build-script.tpl:584/566 in meltbuild-modules failed to compile application xtramelt-opengpu debugnoline
+ || meltbuild_error melt-build-script.tpl:587/566 in meltbuild-modules failed to compile application xtramelt-opengpu debugnoline "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
- meltbuild_info melt-build-script.tpl:586/567 not compiling application module for xtramelt-opengpu debugnoline
+ meltbuild_info melt-build-script.tpl:589/567 not compiling application module for xtramelt-opengpu debugnoline
fi
- ## meltbuild_do_applications melt-build-script.tpl:590/568
+ ## meltbuild_do_applications melt-build-script.tpl:593/568
local meltappstamptemp=$melt_final_application_stamp-tmp$$
echo "///MELT application time stamp $melt_final_application_stamp" > $meltappstamptemp
echo $GCCMELT_RUNTIME_DEPENDENCY_MD5SUM $GCCMELT_RUNTIME_DEPENDENCY >> $meltappstamptemp
@@ -2682,8 +2739,8 @@ function meltbuild_do_applications () {
echo "///end stamp $melt_final_application_stamp" >> $meltappstamptemp
$GCCMELT_MOVE_IF_CHANGE $meltappstamptemp $melt_final_application_stamp
-meltbuild_info melt-build-script.tpl:603/569 times after applications at `date '+%x %H:%M:%S'`: ; times > /dev/stderr
-} ## end meltbuild_do_applications melt-build-script.tpl:604/570
+meltbuild_info melt-build-script.tpl:606/569 times after applications at `date '+%x %H:%M:%S'`: ; times > /dev/stderr
+} ## end meltbuild_do_applications melt-build-script.tpl:607/570
if [ ! -f "$melt_final_application_stamp" \
-o "$melt_final_application_stamp" -ot "$melt_final_translator_stamp" \
@@ -2695,27 +2752,27 @@ if [ ! -f "$melt_final_application_stamp" \
-o "$melt_final_application_stamp" -ot "$GCCMELT_MELTSOURCEDIR/xtramelt-c-generator.melt" \
-o "$melt_final_application_stamp" -ot "$GCCMELT_MELTSOURCEDIR/xtramelt-opengpu.melt" \
]; then
- meltbuild_info melt-build-script.tpl:610/571 building MELT applications
+ meltbuild_info melt-build-script.tpl:613/571 building MELT applications
meltbuild_do_applications
else
- meltbuild_info melt-build-script.tpl:613/572 not building MELT applications because of applstamp "$melt_final_application_stamp"
+ meltbuild_info melt-build-script.tpl:616/572 not building MELT applications because of applstamp "$melt_final_application_stamp"
fi
################################################################
-#@ melt-build-script.tpl:617/573
+#@ melt-build-script.tpl:620/573
if [ "$melt_overall_goal" = "applications" ]; then
- meltbuild_info melt-build-script.tpl:619/574 done applications overall goal with stamp $melt_final_translator_stamp
+ meltbuild_info melt-build-script.tpl:622/574 done applications overall goal with stamp $melt_final_translator_stamp
exit 0
fi
################################################################
################################################################
-### the modules lists melt-build-script.tpl:624/575
+### the modules lists melt-build-script.tpl:627/575
if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis" \
-o "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis" -ot $melt_final_translator_stamp \
-o "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis" -ot $melt_final_application_stamp ]; then
- # melt-build-script.tpl:629/576 module list quicklybuilt
- meltbuild_info melt-build-script.tpl:630/577 generating module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis"
+ # melt-build-script.tpl:632/576 module list quicklybuilt
+ meltbuild_info melt-build-script.tpl:633/577 generating module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis"
melt_modlis_temp="meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis-tmp$$"
echo "# MELT module list file $MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis" >> $melt_modlis_temp
echo "# MELT translator modules:" >> $melt_modlis_temp
@@ -2738,7 +2795,7 @@ if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis"
echo warmelt-modes.quicklybuilt >> $melt_modlis_temp
- #@ melt-build-script.tpl:637/578
+ #@ melt-build-script.tpl:640/578
echo "# MELT application modules:" >> $melt_modlis_temp
echo xtramelt-ana-base.quicklybuilt >> $melt_modlis_temp
@@ -2757,14 +2814,14 @@ if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis"
$GCCMELT_MOVE_IF_CHANGE $melt_modlis_temp "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis"
else
- meltbuild_info melt-build-script.tpl:644/579 keeping module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis"
+ meltbuild_info melt-build-script.tpl:647/579 keeping module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt.modlis"
fi
if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis" \
-o "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis" -ot $melt_final_translator_stamp \
-o "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis" -ot $melt_final_application_stamp ]; then
- # melt-build-script.tpl:629/580 module list optimized
- meltbuild_info melt-build-script.tpl:630/581 generating module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis"
+ # melt-build-script.tpl:632/580 module list optimized
+ meltbuild_info melt-build-script.tpl:633/581 generating module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis"
melt_modlis_temp="meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis-tmp$$"
echo "# MELT module list file $MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis" >> $melt_modlis_temp
echo "# MELT translator modules:" >> $melt_modlis_temp
@@ -2787,7 +2844,7 @@ if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis" \
echo warmelt-modes.optimized >> $melt_modlis_temp
- #@ melt-build-script.tpl:637/582
+ #@ melt-build-script.tpl:640/582
echo "# MELT application modules:" >> $melt_modlis_temp
echo xtramelt-ana-base.optimized >> $melt_modlis_temp
@@ -2806,14 +2863,14 @@ if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis" \
$GCCMELT_MOVE_IF_CHANGE $melt_modlis_temp "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis"
else
- meltbuild_info melt-build-script.tpl:644/583 keeping module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis"
+ meltbuild_info melt-build-script.tpl:647/583 keeping module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis"
fi
if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis" \
-o "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis" -ot $melt_final_translator_stamp \
-o "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis" -ot $melt_final_application_stamp ]; then
- # melt-build-script.tpl:629/584 module list debugnoline
- meltbuild_info melt-build-script.tpl:630/585 generating module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis"
+ # melt-build-script.tpl:632/584 module list debugnoline
+ meltbuild_info melt-build-script.tpl:633/585 generating module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis"
melt_modlis_temp="meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis-tmp$$"
echo "# MELT module list file $MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis" >> $melt_modlis_temp
echo "# MELT translator modules:" >> $melt_modlis_temp
@@ -2836,7 +2893,7 @@ if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis"
echo warmelt-modes.debugnoline >> $melt_modlis_temp
- #@ melt-build-script.tpl:637/586
+ #@ melt-build-script.tpl:640/586
echo "# MELT application modules:" >> $melt_modlis_temp
echo xtramelt-ana-base.debugnoline >> $melt_modlis_temp
@@ -2855,34 +2912,36 @@ if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis"
$GCCMELT_MOVE_IF_CHANGE $melt_modlis_temp "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis"
else
- meltbuild_info melt-build-script.tpl:644/587 keeping module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis"
+ meltbuild_info melt-build-script.tpl:647/587 keeping module list "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.debugnoline.modlis"
fi
-#@ melt-build-script.tpl:648/588
+#@ melt-build-script.tpl:651/588
if [ ! -f "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.modlis" ]; then
meltbuild_symlink "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.optimized.modlis" "meltbuild-sources/$MELTGCCBUILTIN_DEFAULT_MODLIS.modlis"
fi
################################################################
-#@ melt-build-script.tpl:654/589 module lists
+#@ melt-build-script.tpl:657/589 module lists
if [ "$melt_overall_goal" = "modlists" ]; then
- meltbuild_info melt-build-script.tpl:656/590 done modlists overall goal with stamp $melt_final_application_stamp
+ meltbuild_info melt-build-script.tpl:659/590 done modlists overall goal with stamp $melt_final_application_stamp
exit 0
fi
################################################################
-#@ melt-build-script.tpl:662/591 runtime self check
+#@ melt-build-script.tpl:665/591 runtime self check
+
+## melt-build-script.tpl:667/592 FIXME: should skip that when cross-compiler MELT plugin..
meltcheckruntime_stamp=meltbuild-checkruntime.stamp
if [ ! -f $meltcheckruntime_stamp -o $meltcheckruntime_stamp -ot "$GCCMELT_RUNTIME_ARGS" \
-o $meltcheckruntime_stamp -ot "$GCCMELT_RUNTIME_C" \
-o $meltcheckruntime_stamp -ot $melt_final_application_stamp ]; then
- #@ melt-build-script.tpl:668/592 checkruntime
+ #@ melt-build-script.tpl:673/593 checkruntime
meltcheckruntime_args=meltbuild-checkruntime.args
meltcheckruntime_argstemp=$meltcheckruntime_args-tmp$$
- echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:671/593"' > $meltcheckruntime_argstemp
+ echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:676/594"' > $meltcheckruntime_argstemp
meltbuild_arg mode=meltframe >> $meltcheckruntime_argstemp
meltbuild_arg workdir=meltbuild-workdir >> $meltcheckruntime_argstemp
meltbuild_arg tempdir=meltbuild-tempdir >> $meltcheckruntime_argstemp
@@ -2893,21 +2952,21 @@ if [ ! -f $meltcheckruntime_stamp -o $meltcheckruntime_stamp -ot "$GCCMELT_RUNTI
echo ' -o /dev/null' >> $meltcheckruntime_argstemp
cat $GCCMELT_RUNTIME_ARGS < /dev/null >> $meltcheckruntime_argstemp
$GCCMELT_MOVE_IF_CHANGE $meltcheckruntime_argstemp $meltcheckruntime_args
- [ -f "$meltcheckruntime_args" ] || meltbuild_error melt-build-script.tpl:682/594 missing check runtime args "$meltcheckruntime_args"
- meltbuild_info melt-build-script.tpl:683/595 $meltcheckruntime_args is
+ [ -f "$meltcheckruntime_args" ] || meltbuild_error melt-build-script.tpl:687/595 missing check runtime args "$meltcheckruntime_args"
+ meltbuild_info melt-build-script.tpl:688/596 $meltcheckruntime_args is
cat $meltcheckruntime_args < /dev/null > /dev/stderr
if [ -n "$MELTGCCBUILTIN_BUILD_WITH_CXX" ]; then
$GCCMELT_CC1_PREFIX $GCCMELT_CC1PLUS @$meltcheckruntime_args \
- || meltbuild_error melt-build-script.tpl:687/596 failed $GCCMELT_CC1PLUS with arguments @$meltcheckruntime_args
+ || meltbuild_error melt-build-script.tpl:692/597 failed $GCCMELT_CC1PLUS with arguments @$meltcheckruntime_args
else
$GCCMELT_CC1_PREFIX $GCCMELT_CC1 @$meltcheckruntime_args \
- || meltbuild_error melt-build-script.tpl:690/597 failed $GCCMELT_CC1 with arguments @$meltcheckruntime_args
+ || meltbuild_error melt-build-script.tpl:695/598 failed $GCCMELT_CC1 with arguments @$meltcheckruntime_args
fi
- meltbuild_info melt-build-script.tpl:692/598 done check runtime with $meltcheckruntime_args
- #@ melt-build-script.tpl:693/599 checkhello
+ meltbuild_info melt-build-script.tpl:697/599 done check runtime with $meltcheckruntime_args
+ #@ melt-build-script.tpl:698/600 checkhello
meltcheckhelloworld_args=meltbuild-checkhelloworld.args
meltcheckhelloworld_argstemp=$meltcheckhelloworld_args-tmp$$
- echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:696/600"' > $meltcheckhelloworld_argstemp
+ echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:701/601"' > $meltcheckhelloworld_argstemp
meltbuild_arg mode=runfile >> $meltcheckhelloworld_argstemp
meltbuild_arg workdir=meltbuild-workdir >> $meltcheckhelloworld_argstemp
meltbuild_arg module-makefile=$GCCMELT_MODULE_MK >> $meltcheckhelloworld_argstemp
@@ -2921,42 +2980,42 @@ if [ ! -f $meltcheckruntime_stamp -o $meltcheckruntime_stamp -ot "$GCCMELT_RUNTI
echo ' meltbuild-empty-file.c -o /dev/null' >> $meltcheckhelloworld_argstemp
cat $GCCMELT_HELLOWORLD_ARGS < /dev/null >> $meltcheckhelloworld_argstemp
$GCCMELT_MOVE_IF_CHANGE $meltcheckhelloworld_argstemp $meltcheckhelloworld_args
- [ -f "$meltcheckhelloworld_args" ] || meltbuild_error melt-build-script.tpl:710/601 missing check helloworld args "$meltcheckhelloworld_args"
- meltbuild_info melt-build-script.tpl:711/602 $meltcheckhelloworld_args is
+ [ -f "$meltcheckhelloworld_args" ] || meltbuild_error melt-build-script.tpl:715/602 missing check helloworld args "$meltcheckhelloworld_args"
+ meltbuild_info melt-build-script.tpl:716/603 $meltcheckhelloworld_args is
cat $meltcheckhelloworld_args < /dev/null > /dev/stderr
$GCCMELT_CC1_PREFIX $GCCMELT_CC1 @$meltcheckhelloworld_args \
- || meltbuild_error melt-build-script.tpl:714/603 running helloworld failed with arguments @$meltcheckhelloworld_args
- meltbuild_info melt-build-script.tpl:715/604 done check helloworld with $meltcheckhelloworld_args
- #@ melt-build-script.tpl:716/605 runtime stamp
+ || meltbuild_error melt-build-script.tpl:719/604 running helloworld failed with arguments @$meltcheckhelloworld_args
+ meltbuild_info melt-build-script.tpl:720/605 done check helloworld with $meltcheckhelloworld_args
+ #@ melt-build-script.tpl:721/606 runtime stamp
meltcheckruntime_stamptemp=$meltcheckruntime_stamp-tmp$$
- [ -f "$GCCMELT_RUNTIME_C" ] || meltbuild_error melt-build-script.tpl:718/606 missing MELT runtime C file $GCCMELT_RUNTIME_C
+ [ -f "$GCCMELT_RUNTIME_C" ] || meltbuild_error melt-build-script.tpl:723/607 missing MELT runtime C file $GCCMELT_RUNTIME_C
echo "/// MELT check runtime timestamp file $meltcheckruntime_stamp" > $meltcheckruntime_stamptemp
echo $GCCMELT_RUNTIME_DEPENDENCY_MD5SUM $GCCMELT_RUNTIME_DEPENDENCY >> $meltcheckruntime_stamptemp
$MD5SUM $GCCMELT_RUNTIME_C < /dev/null >> $meltcheckruntime_stamptemp
$MD5SUM meltbuild-hello.melt < /dev/null >> $meltcheckruntime_stamptemp
- [ -f "$melt_final_translator_stamp" ] || meltbuild_error melt-build-script.tpl:723/607 missing final translator stamp "$melt_final_translator_stamp"
- [ -f "$melt_final_application_stamp" ] || meltbuild_error melt-build-script.tpl:724/608 missing final application stamp "$melt_final_application_stamp"
+ [ -f "$melt_final_translator_stamp" ] || meltbuild_error melt-build-script.tpl:728/608 missing final translator stamp "$melt_final_translator_stamp"
+ [ -f "$melt_final_application_stamp" ] || meltbuild_error melt-build-script.tpl:729/609 missing final application stamp "$melt_final_application_stamp"
grep meltbuild-modules/ "$melt_final_translator_stamp" "$melt_final_application_stamp" < /dev/null >> $meltcheckruntime_stamptemp
echo "///end timestamp file $meltcheckruntime_stamp" >> $meltcheckruntime_stamptemp
$GCCMELT_MOVE_IF_CHANGE $meltcheckruntime_stamptemp $meltcheckruntime_stamp
- meltbuild_info melt-build-script.tpl:728/609 done check runtime $meltcheckruntime_stamp
+ meltbuild_info melt-build-script.tpl:733/610 done check runtime $meltcheckruntime_stamp
else
- meltbuild_info melt-build-script.tpl:730/610 keeping runtime checks $meltcheckruntime_stamp
+ meltbuild_info melt-build-script.tpl:735/611 keeping runtime checks $meltcheckruntime_stamp
fi
if [ "$melt_overall_goal" = "checkruntime" ]; then
- meltbuild_info melt-build-script.tpl:734/611 done checkruntime overall goal with stamp $meltcheckruntime_stamp
+ meltbuild_info melt-build-script.tpl:739/612 done checkruntime overall goal with stamp $meltcheckruntime_stamp
exit 0
fi
################################################################
################################################################
-#@ melt-build-script.tpl:739/612
+#@ melt-build-script.tpl:744/613
if [ "$melt_overall_goal" = "regenerate" ]; then
- meltbuild_info melt-build-script.tpl:741/613 regenerating runtime support
+ meltbuild_info melt-build-script.tpl:746/614 regenerating runtime support
[ -d meltbuild-sources/generated ] || mkdir meltbuild-sources/generated
meltregen_args=meltbuild-regen.args
meltregen_argstemp="$meltregen_args-tmp$$"
- echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:745/614"' > $meltregen_argstemp
+ echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:750/615"' > $meltregen_argstemp
meltbuild_arg mode=runtypesupport >> $meltregen_argstemp
meltbuild_arg output=meltbuild-sources/generated/meltrunsup >> $meltregen_argstemp
meltbuild_arg workdir=meltbuild-workdir >> $meltregen_argstemp
@@ -2966,16 +3025,16 @@ if [ "$melt_overall_goal" = "regenerate" ]; then
meltbuild_arg bootstrapping >> $meltregen_argstemp
echo meltbuild-empty-file.c >> $meltregen_argstemp
$GCCMELT_MOVE_IF_CHANGE $meltregen_argstemp $meltregen_args
- meltbuild_info melt-build-script.tpl:755/615 $meltregen_args is
+ meltbuild_info melt-build-script.tpl:760/616 $meltregen_args is
cat $meltregen_args < /dev/null > /dev/stderr
$GCCMELT_CC1_PREFIX $GCCMELT_CC1 @$meltregen_args \
- || meltbuild_error melt-build-script.tpl:758/616 failed with arguments @$meltregen_args
- meltbuild_info melt-build-script.tpl:759/617 done regenerate overall goal
+ || meltbuild_error melt-build-script.tpl:763/617 failed with arguments @$meltregen_args
+ meltbuild_info melt-build-script.tpl:764/618 done regenerate overall goal
exit 0
fi
################################################################
-### the generated documentation meltgendoc.texi melt-build-script.tpl:764/618
+### the generated documentation meltgendoc.texi melt-build-script.tpl:769/619
if [ ! -f meltgendoc.texi -o meltbuild-sources/warmelt-first.melt -nt meltgendoc.texi \
-o meltbuild-sources/warmelt-base.melt -nt meltgendoc.texi \
@@ -2993,9 +3052,9 @@ if [ ! -f meltgendoc.texi -o meltbuild-sources/warmelt-first.melt -nt meltgen
-o meltbuild-sources/xtramelt-ana-simple.melt -nt meltgendoc.texi \
-o meltbuild-sources/xtramelt-c-generator.melt -nt meltgendoc.texi \
-o meltbuild-sources/xtramelt-opengpu.melt -nt meltgendoc.texi ]; then
- meltbuild_info melt-build-script.tpl:768/619 generating meltgendoc.texi
+ meltbuild_info melt-build-script.tpl:773/620 generating meltgendoc.texi
meltgen_args=meltbuild-gendoc.args-tmp$$
- echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:770/620"' > $meltgen_args
+ echo ' -DGCCMELT_FROM_ARG="melt-build-script.tpl:775/621"' > $meltgen_args
meltbuild_arg mode=makedoc >> $meltgen_args
meltbuild_arg output=meltgendoc.texi >> $meltgen_args
meltbuild_arg init=@$MELTGCCBUILTIN_DEFAULT_MODLIS.quicklybuilt >> $meltgen_args
@@ -3007,24 +3066,24 @@ if [ ! -f meltgendoc.texi -o meltbuild-sources/warmelt-first.melt -nt meltgen
meltbuild_arg arglist=warmelt-first.melt,warmelt-base.melt,warmelt-debug.melt,warmelt-macro.melt,warmelt-normal.melt,warmelt-normatch.melt,warmelt-genobj.melt,warmelt-outobj.melt,warmelt-modes.melt,xtramelt-ana-base.melt,xtramelt-ana-tree.melt,xtramelt-ana-gimple.melt,xtramelt-probe.melt,xtramelt-ana-simple.melt,xtramelt-c-generator.melt,xtramelt-opengpu.melt >> $meltgen_args
echo meltbuild-empty-file.c >> $meltgen_args
$GCCMELT_MOVE_IF_CHANGE $meltgen_args meltbuild-gendoc.args
- meltbuild_info melt-build-script.tpl:782/621 meltbuild-gendoc.args is
+ meltbuild_info melt-build-script.tpl:787/622 meltbuild-gendoc.args is
cat meltbuild-gendoc.args < /dev/null > /dev/stderr
$GCCMELT_CC1_PREFIX $GCCMELT_CC1 @meltbuild-gendoc.args \
- || meltbuild_error melt-build-script.tpl:785/622 failed with arguments @meltbuild-gendoc.args
+ || meltbuild_error melt-build-script.tpl:790/623 failed with arguments @meltbuild-gendoc.args
else
- meltbuild_info melt-build-script.tpl:787/623 keeping meltgendoc.texi
+ meltbuild_info melt-build-script.tpl:792/624 keeping meltgendoc.texi
fi
################
-meltbuild_info melt-build-script.tpl:791/624 successfully done with times at `date '+%x %H:%M:%S'`: ; times > /dev/stderr
+meltbuild_info melt-build-script.tpl:796/625 successfully done with times at `date '+%x %H:%M:%S'`: ; times > /dev/stderr
################################################################
-#@ melt-build-script.tpl:794/625
+#@ melt-build-script.tpl:799/626
if [ "$melt_overall_goal" = "gendoc" ]; then
- meltbuild_info melt-build-script.tpl:796/626 done gendoc overall goal with stamp $melt_final_translator_stamp
+ meltbuild_info melt-build-script.tpl:801/627 done gendoc overall goal with stamp $melt_final_translator_stamp
exit 0
fi
-## #@ melt-build-script.tpl:800/627 if we get here something is wrong in this script
-meltbuild_error melt-build-script.tpl:801/628 unexpected MELT overall goal "$melt_overall_goal" buggy melt-build-script.tpl
-#@ eof melt-build-script.tpl:802/629 end of generated melt-build-script.sh
+## #@ melt-build-script.tpl:805/628 if we get here something is wrong in this script
+meltbuild_error melt-build-script.tpl:806/629 unexpected MELT overall goal "$melt_overall_goal" buggy melt-build-script.tpl
+#@ eof melt-build-script.tpl:807/630 end of generated melt-build-script.sh
diff --git a/gcc/melt-build-script.tpl b/gcc/melt-build-script.tpl
index 1809cad01a0..377c17017d9 100644
--- a/gcc/melt-build-script.tpl
+++ b/gcc/melt-build-script.tpl
@@ -193,7 +193,7 @@ function meltbuild_do_stage_zero () {
$GCCMELT_MAKE -f $GCCMELT_MODULE_MK melt_module \
GCCMELT_FROM=stagezero-[+(.(fromline))+] \
- GCCMELT_CC="$GCCMELT_COMPILER" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELTGEN_BUILD=$GCCMELT_STAGE_ZERO/ \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=$GCCMELT_ZERO_FLAVOR \
@@ -202,7 +202,7 @@ function meltbuild_do_stage_zero () {
GCCMELT_CUMULATED_MD5=$MELT_ZERO_GENERATED_[+varsuf+]_CUMULMD5 \
GCCMELT_MODULE_BINARYBASE=$GCCMELT_STAGE_ZERO/[+base+] \
GCCMELT_MODULE_DEPENDENCIES="$GCCMELT_CC1_DEPENDENCIES" \
- || meltbuild_error [+(.(fromline))+] stage0 [+base+] did not build with $GCCMELT_MAKE
+ || meltbuild_error [+(.(fromline))+] stage0 [+base+] did not build "(with $GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER cflags $GCCMELT_COMPILER_FLAGS
meltbuild_info [+(.(fromline))+] stage0 [+base+] module
ls -l "$GCCMELT_STAGE_ZERO/[+base+].meltmod-$MELT_ZERO_GENERATED_[+varsuf+]_CUMULMD5.$GCCMELT_ZERO_FLAVOR.so" > /dev/stderr \
@@ -369,10 +369,11 @@ function meltbuild_do_stage () {
GCCMELT_FROM="[+(.(fromline))+]-$meltfrom" \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR="$meltcurflavor" \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE="$meltcurstagedir/[+base+]" \
GCCMELT_MODULE_BINARYBASE="$meltcurstagedir/[+base+]" \
- || meltbuild_error [+(.(fromline))+]-$meltfrom in "$meltcurstagedir/" failed to make module [+base+]
+ || meltbuild_error [+(.(fromline))+]-$meltfrom in "$meltcurstagedir/" failed to make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" module [+base+] compiler "$GCCMELT_COMPILER" cflags "$GCCMELT_COMPILER_FLAGS"
else
meltbuild_info [+(.(fromline))+]-$meltfrom NOT compiling module [+base+] "in" \
"$meltcurstagedir/" but symlinking previous "$meltprevstagedir/" module [+base+] \
@@ -470,10 +471,11 @@ function meltbuild_compile_translator_modules () {
GCCMELT_FROM=[+(.(fromline))+] \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=[+flavor+] \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/[+base+] \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/[+base+] \
- || meltbuild_error [+(.(fromline))+] in meltbuild-modules failed to compile translator [+base+] [+flavor+]
+ || meltbuild_error [+(.(fromline))+] in meltbuild-modules failed to compile translator [+base+] [+flavor+] make "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler "$GCCMELT_COMPILER" cflags $GCCMELT_COMPILER_FLAGS
[+ENDFOR melt_translator_file+]
[+ENDFOR flavor+]
@@ -578,10 +580,11 @@ function meltbuild_do_applications () {
GCCMELT_FROM=[+(.(fromline))+] \
GCCMELT_MODULE_WORKSPACE=meltbuild-workdir \
GCCMELT_MODULE_FLAVOR=[+flavor+] \
+ GCCMELT_COMPILER="$GCCMELT_COMPILER" \
GCCMELT_CFLAGS="$GCCMELT_COMPILER_FLAGS" \
GCCMELT_MODULE_SOURCEBASE=meltbuild-sources/[+base+] \
GCCMELT_MODULE_BINARYBASE=meltbuild-modules/[+base+] \
- || meltbuild_error [+(.(fromline))+] in meltbuild-modules failed to compile application [+base+] [+flavor+]
+ || meltbuild_error [+(.(fromline))+] in meltbuild-modules failed to compile application [+base+] [+flavor+] "($GCCMELT_MAKE -f $GCCMELT_MODULE_MK)" compiler $GCCMELT_COMPILER_FLAGS cflags $GCCMELT_COMPILER_FLAGS
else
meltbuild_info [+(.(fromline))+] not compiling application module for [+base+] [+flavor+]
fi
diff --git a/gcc/melt-module.mk b/gcc/melt-module.mk
index 540b9ffda6f..6fd0b5f63f3 100644
--- a/gcc/melt-module.mk
+++ b/gcc/melt-module.mk
@@ -109,13 +109,13 @@ endif
## The compiler and flags used to compile MELT generated code. For a
## melt plugin to GCC 4.7 or later, that could be a C++ compiler! eg
-## make MELTGCC=gcc-4.7 GCCMELT_CC=g++-4.7 hence we add a test if
+## make MELTGCC=gcc-4.7 GCCMELT_COMPILER=g++-4.7 hence we add a test if
## $(MELTGCC) was built with C++ or with C
-ifndef GCCMELT_CC
+ifndef GCCMELT_COMPILER
ifeq ($(strip $(MELTGCC_BUILD_WITH_CXX)),)
-GCCMELT_CC = $(or $(strip $(CC)),gcc) -Wc++-compat
+GCCMELT_COMPILER = $(or $(strip $(CC)),gcc) -Wc++-compat
else
-GCCMELT_CC = $(or $(strip $(CXX)),g++)
+GCCMELT_COMPILER = $(or $(strip $(CXX)),g++)
endif
endif
@@ -175,8 +175,8 @@ GCCMELT_PRIMARY_MDSUMED_BASE:= $(basename $(notdir $(GCCMELT_PRIMARY))).$(GCCMEL
GCCMELT_SECONDARY_MDSUMED_BASES := $(join $(basename $(notdir $(GCCMELT_SECONDARY_CFILES))),$(addprefix .,$(GCCMELT_SECONDARY_MD5SUMS)))
-ifeq ($(strip $(GCCMELT_CC)),)
-$(error GCCMELT_CC should not be empty)
+ifeq ($(strip $(GCCMELT_COMPILER)),)
+$(error GCCMELT_COMPILER should not be empty)
endif
################################################################
@@ -192,7 +192,7 @@ GCCMELT_PACKAGES_LIBES=$(if $(MELTGENMOD_PACKAGELIST),$(shell pkg-config --libs
$(GCCMELTGEN_BUILD)%.quicklybuilt.meltpic.o:
@echo @+@melt-module quicklybuilt.meltpic at= $@ left= $< question= $? caret= $^ realpathleft= $(realpath $<)
if [ -z "$(filter %.mdsumed.c, $(realpath $<))" ]; then \
- $(GCCMELT_CC) $(GCCMELT_QUICKLYBUILT_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_QUICKLYBUILT_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_QUICKLYBUILT_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $< ; \
else \
@@ -203,7 +203,7 @@ $(GCCMELTGEN_BUILD)%.quicklybuilt.meltpic.o:
$(GCCMELTGEN_BUILD)%.quicklybuilt.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed.c | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module quicklybuilt.meltmdsumedpic at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_QUICKLYBUILT_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_QUICKLYBUILT_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_QUICKLYBUILT_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $<
@@ -211,7 +211,7 @@ $(GCCMELTGEN_BUILD)%.quicklybuilt.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed
$(GCCMELTGEN_BUILD)%.optimized.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module optimized.meltpic at= $@ left= $< question= $? caret= $^ realpathleft= $(realpath $<)
if [ -z "$(filter %.mdsumed.c, $(realpath $<))" ]; then \
- $(GCCMELT_CC) $(GCCMELT_OPTIMIZED_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_OPTIMIZED_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_OPTIMIZED_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $< ; \
else \
@@ -222,7 +222,7 @@ $(GCCMELTGEN_BUILD)%.optimized.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
$(GCCMELTGEN_BUILD)%.optimized.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed.c | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module optimized.meltmdsumedpic at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_OPTIMIZED_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_OPTIMIZED_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_OPTIMIZED_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $<
@@ -230,7 +230,7 @@ $(GCCMELTGEN_BUILD)%.optimized.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed.c
$(GCCMELTGEN_BUILD)%.debugnoline.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module debugnoline.meltpic at= $@ left= $< question= $? caret= $^ realpathleft= $(realpath $<)
if [ -z "$(filter %.mdsumed.c, $(realpath $<))" ]; then \
- $(GCCMELT_CC) $(GCCMELT_DEBUGNOLINE_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_DEBUGNOLINE_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_DEBUGNOLINE_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $< ; \
else \
@@ -241,7 +241,7 @@ $(GCCMELTGEN_BUILD)%.debugnoline.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
$(GCCMELTGEN_BUILD)%.debugnoline.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed.c | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module debugnoline.meltmdsumedpic at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_DEBUGNOLINE_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_DEBUGNOLINE_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_DEBUGNOLINE_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $<
@@ -250,7 +250,7 @@ $(GCCMELTGEN_BUILD)%.debugnoline.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed.
$(GCCMELTGEN_BUILD)%.dynamic.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module dynamic.meltpic at= $@ left= $< question= $? caret= $^ realpathleft= $(realpath $<)
if [ -z "$(filter %.mdsumed.c, $(realpath $<))" ]; then \
- $(GCCMELT_CC) $(GCCMELT_DYNAMIC_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_DYNAMIC_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_DYNAMIC_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $< ; \
else \
@@ -261,7 +261,7 @@ $(GCCMELTGEN_BUILD)%.dynamic.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
$(GCCMELTGEN_BUILD)%.dynamic.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed.c | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module dynamic.meltmdsumedpic at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_DYNAMIC_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_DYNAMIC_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_DEBUGNOLINE_FLAGS) $(GCCMELT_CFLAGS) $(GCCMELT_PACKAGES_CFLAGS) \
-fPIC -c -o $@ $<
@@ -270,7 +270,7 @@ $(GCCMELTGEN_BUILD)%.dynamic.meltmdsumedpic.o: $(GCCMELTGEN_BUILD)%.mdsumed.c |
## descriptor quasi-flavor, never symlinked!
$(GCCMELTGEN_BUILD)%.descriptor.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
@echo @+@melt-module descriptor.meltpic at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_DESCRIPTOR_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
+ $(GCCMELT_COMPILER) $(GCCMELT_DESCRIPTOR_PREPROFLAGS) $(GCCMELT_PREPROFLAGS) \
$(GCCMELT_DESCRIPTOR_FLAGS) $(GCCMELT_CFLAGS) \
-fPIC -c -o $@ $<
@@ -278,19 +278,19 @@ $(GCCMELTGEN_BUILD)%.descriptor.meltpic.o: | $(GCCMELT_MODULE_DEPENDENCIES)
## linking the module in various flavors
$(GCCMELTGEN_BUILD)$(GCCMELT_BASE).meltmod-%.quicklybuilt.so:
@echo @+@melt-module meltmod.quicklybuilt at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_QUICKLYBUILT_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
+ $(GCCMELT_COMPILER) $(GCCMELT_QUICKLYBUILT_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
$(GCCMELTGEN_BUILD)$(GCCMELT_BASE).meltmod-%.optimized.so:
@echo @+@melt-module meltmod.optimized at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_OPTIMIZED_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
+ $(GCCMELT_COMPILER) $(GCCMELT_OPTIMIZED_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
$(GCCMELTGEN_BUILD)$(GCCMELT_BASE).meltmod-%.debugnoline.so:
@echo @+@melt-module meltmod.debugnoline at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_DEBUGNOLINE_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
+ $(GCCMELT_COMPILER) $(GCCMELT_DEBUGNOLINE_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
$(GCCMELTGEN_BUILD)$(GCCMELT_BASE).meltmod-%.dynamic.so:
@echo @+@melt-module meltmod.dynamic at= $@ left= $< question= $? caret= $^
- $(GCCMELT_CC) $(GCCMELT_DYNAMIC_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
+ $(GCCMELT_COMPILER) $(GCCMELT_DYNAMIC_FLAGS) $(GCCMELT_SHARED_FLAGS) -o $@ $^ $(GCCMELT_PACKAGES_LIBES)
################
diff --git a/gcc/melt-runtime.c b/gcc/melt-runtime.c
index 968f23cbd7c..c85e95c2116 100644
--- a/gcc/melt-runtime.c
+++ b/gcc/melt-runtime.c
@@ -4723,26 +4723,9 @@ melt_tempdir_path (const char *srcnam, const char* suffix)
int n = (melt_lrand () & 0x1fffffff) ^ (nowt & 0xffffff);
n += (int)getpid ();
memset(tempdir_melt, 0, sizeof(tempdir_melt));
-#ifdef MELT_IS_PLUGIN
- /* we don't have choose_tmpdir in plugin mode because it is
- in libiberty */
snprintf (tempdir_melt, sizeof(tempdir_melt)-1,
"%s-GccMeltTmp-%x",
tmpnam(NULL), n);
-#else /* !MELT_IS_PLUGIN */
- {
- /* from libiberty/choose-temp.c */
- extern char *choose_tmpdir (void);
- char*chtmpdir = choose_tmpdir ();
- gcc_assert (chtmpdir != NULL);
- if (chtmpdir[0] && chtmpdir[strlen(chtmpdir)-1]!='/')
- snprintf (tempdir_melt, sizeof(tempdir_melt)-1,
- "%s/GccMeltTmpdir-%x", chtmpdir, n);
- else
- snprintf (tempdir_melt, sizeof(tempdir_melt)-1,
- "%sGCCMeltTmpdir-%x", chtmpdir, n);
- }
-#endif /* MELT_IS_PLUGIN */
if (!mkdir (tempdir_melt, 0700)) {
made_tempdir_melt = true;
mkdirdone = 1;
@@ -9003,7 +8986,7 @@ meltgc_start_module_by_index (melt_ptr_t env_p, int modix)
debugeprintf ("meltgc_start_module_by_index bad index modix %d", modix);
goto end;
}
- mi = VEC_index (melt_module_info_t, melt_modinfvec, modix);
+ mi = &VEC_index (melt_module_info_t, melt_modinfvec, modix);
if (!mi) {
debugeprintf ("meltgc_start_module_by_index empty index modix %d", modix);
goto end;
@@ -10119,7 +10102,7 @@ melt_really_initialize (const char* pluginame, const char*versionstr)
gcc_exec_prefix);
else
fprintf (setfil, "# MELTGCCBUILTIN_GCC_EXEC_PREFIX is not set\n");
-#if ENABLE_BUILD_WITH_CXX
+#if defined(ENABLE_BUILD_WITH_CXX) || MELT_GCC_VERSION >= 4008
#ifdef __cplusplus
fprintf (setfil, "MELTGCCBUILTIN_BUILD_WITH_CXX=1\n");
#else
@@ -11302,10 +11285,7 @@ meltgc_out_edge (melt_ptr_t out_p, edge edg)
FILE* oldfil= melt_open_ppfile ();
dump_edge_info (meltppfile, edg,
#if MELT_GCC_VERSION >= 4008
-#warning GCC4.8 soon wants TDF_DETAILS for dump_edge_info
- /*
- TDF_DETAILS, // argument appearing in GCC 4.8 august 2012 trunk
- */
+ TDF_DETAILS,
#endif
/*do_succ=*/ 1);
melt_close_ppfile (oldfil);
@@ -11322,10 +11302,7 @@ meltgc_out_edge (melt_ptr_t out_p, edge edg)
goto end;
dump_edge_info (f, edg,
#if MELT_GCC_VERSION >= 4008
-#warning GCC4.8 soon wants TDF_DETAILS for dump_edge_info
- /*
TDF_DETAILS, // argument appearing in GCC 4.8 august 2012 trunk
- */
#endif
/*do_succ=*/ 1);
fflush (f);
@@ -11467,6 +11444,7 @@ meltgc_new_file (melt_ptr_t discr_p, FILE* fil)
end:
MELT_EXITFRAME ();
return (melt_ptr_t) resv;
+#undef resv
}
@@ -12055,7 +12033,9 @@ melt_val2passflag(melt_ptr_t val_p)
WHENFLAG(PROP_gimple_lcf);
WHENFLAG(PROP_gimple_leh);
WHENFLAG(PROP_cfg);
- WHENFLAG(PROP_referenced_vars);
+#ifdef PROP_referenced_vars
+ WHENFLAG(PROP_referenced_vars); /* not defined in GCC 4.8 */
+#endif
WHENFLAG(PROP_ssa);
WHENFLAG(PROP_no_crit_edges);
WHENFLAG(PROP_rtl);
diff --git a/gcc/melt-runtime.h b/gcc/melt-runtime.h
index c02a474ad86..42b5bf76a8e 100644
--- a/gcc/melt-runtime.h
+++ b/gcc/melt-runtime.h
@@ -299,7 +299,7 @@ melt_need_debug_limit (int depth, int lim) {
}
/* unspecified flexible dimension in structure */
-#if (defined(__STDC__) && __STDC__VERSION >= 199901L) || __cplusplus
+#if (defined(__STDC__) && __STDC__VERSION >= 199901L) || defined(__cplusplus)
#define MELT_FLEXIBLE_DIM /*C99 or better or C++ flexible*/
#define MELT_HAVE_FLEXIBLE_DIM 1
#elif __GNUC__>=4
diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c
index a5967319385..1984a694c89 100644
--- a/gcc/mode-switching.c
+++ b/gcc/mode-switching.c
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "function.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "df.h"
#include "emit-rtl.h"
@@ -534,7 +533,7 @@ optimize_mode_switching (void)
RESET_BIT (transp[bb->index], j);
}
#ifdef MODE_AFTER
- last_mode = MODE_AFTER (last_mode, insn);
+ last_mode = MODE_AFTER (e, last_mode, insn);
#endif
/* Update LIVE_NOW. */
for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c
index 953b78d763e..59f8978be73 100644
--- a/gcc/modulo-sched.c
+++ b/gcc/modulo-sched.c
@@ -42,7 +42,6 @@ along with GCC; see the file COPYING3. If not see
#include "params.h"
#include "gcov-io.h"
#include "ddg.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "dbgcnt.h"
#include "df.h"
@@ -230,7 +229,7 @@ static void remove_node_from_ps (partial_schedule_ptr, ps_insn_ptr);
#define NODE_ASAP(node) ((node)->aux.count)
-#define SCHED_PARAMS(x) VEC_index (node_sched_params, node_sched_param_vec, x)
+#define SCHED_PARAMS(x) (&VEC_index (node_sched_params, node_sched_param_vec, x))
#define SCHED_TIME(x) (SCHED_PARAMS (x)->time)
#define SCHED_ROW(x) (SCHED_PARAMS (x)->row)
#define SCHED_STAGE(x) (SCHED_PARAMS (x)->stage)
@@ -306,7 +305,7 @@ static struct ps_reg_move_info *
ps_reg_move (partial_schedule_ptr ps, int id)
{
gcc_checking_assert (id >= ps->g->num_nodes);
- return VEC_index (ps_reg_move_info, ps->reg_moves, id - ps->g->num_nodes);
+ return &VEC_index (ps_reg_move_info, ps->reg_moves, id - ps->g->num_nodes);
}
/* Return the rtl instruction that is being scheduled by partial schedule
@@ -1414,7 +1413,7 @@ sms_schedule (void)
if (dump_file)
fprintf (dump_file, "SMS reached max limit... \n");
- break;
+ FOR_EACH_LOOP_BREAK (li);
}
if (dump_file)
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 5c924bf736c..caa16c72b50 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -3209,7 +3209,7 @@ objc_build_constructor (tree type, VEC(constructor_elt,gc) *elts)
#ifdef OBJCPLUS
/* Adjust for impedance mismatch. We should figure out how to build
CONSTRUCTORs that consistently please both the C and C++ gods. */
- if (!VEC_index (constructor_elt, elts, 0)->index)
+ if (!VEC_index (constructor_elt, elts, 0).index)
TREE_TYPE (constructor) = init_list_type_node;
#endif
diff --git a/gcc/omega.c b/gcc/omega.c
index c8768d8b441..5f78ed1b0d3 100644
--- a/gcc/omega.c
+++ b/gcc/omega.c
@@ -36,7 +36,7 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tree.h"
#include "diagnostic-core.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "omega.h"
/* When set to true, keep substitution variables. When set to false,
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index d51715e2843..adbd0345f9e 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "diagnostic-core.h"
#include "tree-flow.h"
-#include "timevar.h"
#include "flags.h"
#include "function.h"
#include "expr.h"
@@ -3060,7 +3059,6 @@ expand_parallel_call (struct omp_region *region, basic_block bb,
if (gimple_in_ssa_p (cfun))
{
gimple phi = create_phi_node (tmp_join, bb);
- SSA_NAME_DEF_STMT (tmp_join) = phi;
add_phi_arg (phi, tmp_then, e_then, UNKNOWN_LOCATION);
add_phi_arg (phi, tmp_else, e_else, UNKNOWN_LOCATION);
}
@@ -3399,9 +3397,6 @@ expand_omp_taskreg (struct omp_region *region)
entry_stmt = last_stmt (region->entry);
child_fn = gimple_omp_taskreg_child_fn (entry_stmt);
child_cfun = DECL_STRUCT_FUNCTION (child_fn);
- /* If this function has been already instrumented, make sure
- the child function isn't instrumented again. */
- child_cfun->after_tree_profile = cfun->after_tree_profile;
entry_bb = region->entry;
exit_bb = region->exit;
@@ -3503,9 +3498,9 @@ expand_omp_taskreg (struct omp_region *region)
/* If we are in ssa form, we must load the value from the default
definition of the argument. That should not be defined now,
since the argument is not used uninitialized. */
- gcc_assert (gimple_default_def (cfun, arg) == NULL);
+ gcc_assert (ssa_default_def (cfun, arg) == NULL);
narg = make_ssa_name (arg, gimple_build_nop ());
- set_default_def (arg, narg);
+ set_ssa_default_def (cfun, arg, narg);
/* ?? Is setting the subcode really necessary ?? */
gimple_omp_set_subcode (parcopy_stmt, TREE_CODE (narg));
gimple_assign_set_rhs1 (parcopy_stmt, narg);
@@ -3736,11 +3731,6 @@ expand_omp_for_generic (struct omp_region *region,
iend0 = create_tmp_var (fd->iter_type, ".iend0");
TREE_ADDRESSABLE (istart0) = 1;
TREE_ADDRESSABLE (iend0) = 1;
- if (gimple_referenced_vars (cfun))
- {
- add_referenced_var (istart0);
- add_referenced_var (iend0);
- }
/* See if we need to bias by LLONG_MIN. */
if (fd->iter_type == long_long_unsigned_type_node
@@ -3820,7 +3810,7 @@ expand_omp_for_generic (struct omp_region *region,
counts[i] = t;
else
{
- counts[i] = make_rename_temp (type, ".count");
+ counts[i] = create_tmp_reg (type, ".count");
t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE,
true, GSI_SAME_STMT);
stmt = gimple_build_assign (counts[i], t);
@@ -3945,7 +3935,7 @@ expand_omp_for_generic (struct omp_region *region,
false, GSI_CONTINUE_LINKING);
if (fd->collapse > 1)
{
- tree tem = make_rename_temp (type, ".tem");
+ tree tem = create_tmp_reg (type, ".tem");
stmt = gimple_build_assign (tem, fd->loop.v);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
for (i = fd->collapse - 1; i >= 0; i--)
@@ -4233,12 +4223,12 @@ expand_omp_for_static_nochunk (struct omp_region *region,
t = fold_convert (itype, t);
n = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE, true, GSI_SAME_STMT);
- q = make_rename_temp (itype, "q");
+ q = create_tmp_reg (itype, "q");
t = fold_build2 (TRUNC_DIV_EXPR, itype, n, nthreads);
t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, true, GSI_SAME_STMT);
gsi_insert_before (&gsi, gimple_build_assign (q, t), GSI_SAME_STMT);
- tt = make_rename_temp (itype, "tt");
+ tt = create_tmp_reg (itype, "tt");
t = fold_build2 (TRUNC_MOD_EXPR, itype, n, nthreads);
t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, true, GSI_SAME_STMT);
gsi_insert_before (&gsi, gimple_build_assign (tt, t), GSI_SAME_STMT);
@@ -4462,7 +4452,6 @@ expand_omp_for_static_chunk (struct omp_region *region, struct omp_for_data *fd)
trip_var = create_tmp_reg (itype, ".trip");
if (gimple_in_ssa_p (cfun))
{
- add_referenced_var (trip_var);
trip_init = make_ssa_name (trip_var, NULL);
trip_main = make_ssa_name (trip_var, NULL);
trip_back = make_ssa_name (trip_var, NULL);
@@ -4602,7 +4591,6 @@ expand_omp_for_static_chunk (struct omp_region *region, struct omp_for_data *fd)
t = gimple_phi_result (phi);
gcc_assert (t == redirect_edge_var_map_result (vm));
nphi = create_phi_node (t, iter_part_bb);
- SSA_NAME_DEF_STMT (t) = nphi;
t = PHI_ARG_DEF_FROM_EDGE (phi, se);
locus = gimple_phi_arg_location_from_edge (phi, se);
@@ -4627,7 +4615,6 @@ expand_omp_for_static_chunk (struct omp_region *region, struct omp_for_data *fd)
/* Make phi node for trip. */
phi = create_phi_node (trip_main, iter_part_bb);
- SSA_NAME_DEF_STMT (trip_main) = phi;
add_phi_arg (phi, trip_back, single_succ_edge (trip_update_bb),
UNKNOWN_LOCATION);
add_phi_arg (phi, trip_init, single_succ_edge (entry_bb),
@@ -4752,45 +4739,40 @@ expand_omp_sections (struct omp_region *region)
unsigned i, casei;
bool exit_reachable = region->cont != NULL;
- gcc_assert (exit_reachable == (region->exit != NULL));
+ gcc_assert (region->exit != NULL);
entry_bb = region->entry;
l0_bb = single_succ (entry_bb);
l1_bb = region->cont;
l2_bb = region->exit;
- if (exit_reachable)
+ if (single_pred_p (l2_bb) && single_pred (l2_bb) == l0_bb)
+ l2 = gimple_block_label (l2_bb);
+ else
{
- if (single_pred_p (l2_bb) && single_pred (l2_bb) == l0_bb)
- l2 = gimple_block_label (l2_bb);
+ /* This can happen if there are reductions. */
+ len = EDGE_COUNT (l0_bb->succs);
+ gcc_assert (len > 0);
+ e = EDGE_SUCC (l0_bb, len - 1);
+ si = gsi_last_bb (e->dest);
+ l2 = NULL_TREE;
+ if (gsi_end_p (si)
+ || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
+ l2 = gimple_block_label (e->dest);
else
- {
- /* This can happen if there are reductions. */
- len = EDGE_COUNT (l0_bb->succs);
- gcc_assert (len > 0);
- e = EDGE_SUCC (l0_bb, len - 1);
- si = gsi_last_bb (e->dest);
- l2 = NULL_TREE;
- if (gsi_end_p (si)
- || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
- l2 = gimple_block_label (e->dest);
- else
- FOR_EACH_EDGE (e, ei, l0_bb->succs)
+ FOR_EACH_EDGE (e, ei, l0_bb->succs)
+ {
+ si = gsi_last_bb (e->dest);
+ if (gsi_end_p (si)
+ || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
{
- si = gsi_last_bb (e->dest);
- if (gsi_end_p (si)
- || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
- {
- l2 = gimple_block_label (e->dest);
- break;
- }
+ l2 = gimple_block_label (e->dest);
+ break;
}
- }
- default_bb = create_empty_bb (l1_bb->prev_bb);
+ }
}
+ if (exit_reachable)
+ default_bb = create_empty_bb (l1_bb->prev_bb);
else
- {
- default_bb = create_empty_bb (l0_bb);
- l2 = gimple_block_label (default_bb);
- }
+ default_bb = create_empty_bb (l0_bb);
/* We will build a switch() with enough cases for all the
GIMPLE_OMP_SECTION regions, a '0' case to handle the end of more work
@@ -4843,13 +4825,9 @@ expand_omp_sections (struct omp_region *region)
vnext = NULL_TREE;
}
- i = 0;
- if (exit_reachable)
- {
- t = build_case_label (build_int_cst (unsigned_type_node, 0), NULL, l2);
- VEC_quick_push (tree, label_vec, t);
- i++;
- }
+ t = build_case_label (build_int_cst (unsigned_type_node, 0), NULL, l2);
+ VEC_quick_push (tree, label_vec, t);
+ i = 1;
/* Convert each GIMPLE_OMP_SECTION into a CASE_LABEL_EXPR. */
for (inner = region->inner, casei = 1;
@@ -4919,18 +4897,18 @@ expand_omp_sections (struct omp_region *region)
gsi_remove (&si, true);
single_succ_edge (l1_bb)->flags = EDGE_FALLTHRU;
-
- /* Cleanup function replaces GIMPLE_OMP_RETURN in EXIT_BB. */
- si = gsi_last_bb (l2_bb);
- if (gimple_omp_return_nowait_p (gsi_stmt (si)))
- t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END_NOWAIT);
- else
- t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END);
- stmt = gimple_build_call (t, 0);
- gsi_insert_after (&si, stmt, GSI_SAME_STMT);
- gsi_remove (&si, true);
}
+ /* Cleanup function replaces GIMPLE_OMP_RETURN in EXIT_BB. */
+ si = gsi_last_bb (l2_bb);
+ if (gimple_omp_return_nowait_p (gsi_stmt (si)))
+ t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END_NOWAIT);
+ else
+ t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END);
+ stmt = gimple_build_call (t, 0);
+ gsi_insert_after (&si, stmt, GSI_SAME_STMT);
+ gsi_remove (&si, true);
+
set_immediate_dominator (CDI_DOMINATORS, default_bb, l0_bb);
}
@@ -5308,8 +5286,8 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
{
tree iaddr_val;
- iaddr = make_rename_temp (build_pointer_type_for_mode (itype, ptr_mode,
- true), NULL);
+ iaddr = create_tmp_reg (build_pointer_type_for_mode (itype, ptr_mode,
+ true), NULL);
iaddr_val
= force_gimple_operand_gsi (&si,
fold_convert (TREE_TYPE (iaddr), addr),
@@ -5318,11 +5296,7 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
gsi_insert_before (&si, stmt, GSI_SAME_STMT);
loadedi = create_tmp_var (itype, NULL);
if (gimple_in_ssa_p (cfun))
- {
- add_referenced_var (iaddr);
- add_referenced_var (loadedi);
- loadedi = make_ssa_name (loadedi, NULL);
- }
+ loadedi = make_ssa_name (loadedi, NULL);
}
else
{
@@ -5342,7 +5316,6 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
{
gcc_assert (gimple_seq_empty_p (phi_nodes (loop_header)));
phi = create_phi_node (loadedi, loop_header);
- SSA_NAME_DEF_STMT (loadedi) = phi;
SET_USE (PHI_ARG_DEF_PTR_FROM_EDGE (phi, single_succ_edge (load_bb)),
initial);
}
@@ -5399,8 +5372,6 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
else
{
old_vali = create_tmp_var (TREE_TYPE (loadedi), NULL);
- if (gimple_in_ssa_p (cfun))
- add_referenced_var (old_vali);
stmt = gimple_build_assign (old_vali, loadedi);
gsi_insert_before (&si, stmt, GSI_SAME_STMT);
@@ -6856,6 +6827,9 @@ lower_omp_1 (gimple_stmt_iterator *gsi_p, omp_context *ctx)
lower_omp (gimple_try_eval_ptr (stmt), ctx);
lower_omp (gimple_try_cleanup_ptr (stmt), ctx);
break;
+ case GIMPLE_TRANSACTION:
+ lower_omp (gimple_transaction_body_ptr (stmt), ctx);
+ break;
case GIMPLE_BIND:
lower_omp (gimple_bind_body_ptr (stmt), ctx);
break;
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index 8e098c28c2c..8b025b2cf32 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -103,6 +103,7 @@ function switch_flags (flags)
test_flag("JoinedOrMissing", flags, " | CL_JOINED") \
test_flag("Separate", flags, " | CL_SEPARATE") \
test_flag("Undocumented", flags, " | CL_UNDOCUMENTED") \
+ test_flag("NoDWARFRecord", flags, " | CL_NO_DWARF_RECORD") \
test_flag("Warning", flags, " | CL_WARNING") \
test_flag("Optimization", flags, " | CL_OPTIMIZATION")
sub( "^0 \\| ", "", result )
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 30944765e5f..ebb2af5b145 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -54,9 +54,6 @@ struct target_libfuncs *this_target_libfuncs = &default_target_libfuncs;
#define libfunc_hash \
(this_target_libfuncs->x_libfunc_hash)
-/* Contains the optab used for each rtx code. */
-optab code_to_optab[NUM_RTX_CODE + 1];
-
static void prepare_float_lib_cmp (rtx, rtx, enum rtx_code, rtx *,
enum machine_mode *);
static rtx expand_unop_direct (enum machine_mode, optab, rtx, rtx, int);
@@ -78,9 +75,7 @@ static hashval_t
hash_libfunc (const void *p)
{
const struct libfunc_entry *const e = (const struct libfunc_entry *) p;
-
- return (((int) e->mode1 + (int) e->mode2 * NUM_MACHINE_MODES)
- ^ e->optab);
+ return ((e->mode1 + e->mode2 * NUM_MACHINE_MODES) ^ e->op);
}
/* Used for libfunc_hash. */
@@ -90,10 +85,7 @@ eq_libfunc (const void *p, const void *q)
{
const struct libfunc_entry *const e1 = (const struct libfunc_entry *) p;
const struct libfunc_entry *const e2 = (const struct libfunc_entry *) q;
-
- return (e1->optab == e2->optab
- && e1->mode1 == e2->mode1
- && e1->mode2 == e2->mode2);
+ return e1->op == e2->op && e1->mode1 == e2->mode1 && e1->mode2 == e2->mode2;
}
/* Return libfunc corresponding operation defined by OPTAB converting
@@ -106,22 +98,30 @@ convert_optab_libfunc (convert_optab optab, enum machine_mode mode1,
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = (size_t) (optab - &convert_optab_table[0]);
+ /* ??? This ought to be an assert, but not all of the places
+ that we expand optabs know about the optabs that got moved
+ to being direct. */
+ if (!(optab >= FIRST_CONV_OPTAB && optab <= LAST_CONVLIB_OPTAB))
+ return NULL_RTX;
+
+ e.op = optab;
e.mode1 = mode1;
e.mode2 = mode2;
- slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, NO_INSERT);
+ slot = (struct libfunc_entry **)
+ htab_find_slot (libfunc_hash, &e, NO_INSERT);
if (!slot)
{
- if (optab->libcall_gen)
- {
- optab->libcall_gen (optab, optab->libcall_basename, mode1, mode2);
- slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, NO_INSERT);
- if (slot)
- return (*slot)->libfunc;
- else
- return NULL;
- }
- return NULL;
+ const struct convert_optab_libcall_d *d
+ = &convlib_def[optab - FIRST_CONV_OPTAB];
+
+ if (d->libcall_gen == NULL)
+ return NULL;
+
+ d->libcall_gen (optab, d->libcall_basename, mode1, mode2);
+ slot = (struct libfunc_entry **)
+ htab_find_slot (libfunc_hash, &e, NO_INSERT);
+ if (!slot)
+ return NULL;
}
return (*slot)->libfunc;
}
@@ -135,24 +135,30 @@ optab_libfunc (optab optab, enum machine_mode mode)
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = (size_t) (optab - &optab_table[0]);
+ /* ??? This ought to be an assert, but not all of the places
+ that we expand optabs know about the optabs that got moved
+ to being direct. */
+ if (!(optab >= FIRST_NORM_OPTAB && optab <= LAST_NORMLIB_OPTAB))
+ return NULL_RTX;
+
+ e.op = optab;
e.mode1 = mode;
e.mode2 = VOIDmode;
- slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, NO_INSERT);
+ slot = (struct libfunc_entry **)
+ htab_find_slot (libfunc_hash, &e, NO_INSERT);
if (!slot)
{
- if (optab->libcall_gen)
- {
- optab->libcall_gen (optab, optab->libcall_basename,
- optab->libcall_suffix, mode);
- slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash,
- &e, NO_INSERT);
- if (slot)
- return (*slot)->libfunc;
- else
- return NULL;
- }
- return NULL;
+ const struct optab_libcall_d *d
+ = &normlib_def[optab - FIRST_NORM_OPTAB];
+
+ if (d->libcall_gen == NULL)
+ return NULL;
+
+ d->libcall_gen (optab, d->libcall_basename, d->libcall_suffix, mode);
+ slot = (struct libfunc_entry **)
+ htab_find_slot (libfunc_hash, &e, NO_INSERT);
+ if (!slot)
+ return NULL;
}
return (*slot)->libfunc;
}
@@ -390,7 +396,7 @@ optab_for_tree_code (enum tree_code code, const_tree type,
if (TREE_CODE (type) == VECTOR_TYPE)
{
if (subtype == optab_vector)
- return TYPE_SATURATING (type) ? NULL : vashl_optab;
+ return TYPE_SATURATING (type) ? unknown_optab : vashl_optab;
gcc_assert (subtype == optab_scalar);
}
@@ -483,6 +489,14 @@ optab_for_tree_code (enum tree_code code, const_tree type,
return TYPE_UNSIGNED (type) ?
vec_widen_umult_lo_optab : vec_widen_smult_lo_optab;
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ return TYPE_UNSIGNED (type) ?
+ vec_widen_umult_even_optab : vec_widen_smult_even_optab;
+
+ case VEC_WIDEN_MULT_ODD_EXPR:
+ return TYPE_UNSIGNED (type) ?
+ vec_widen_umult_odd_optab : vec_widen_smult_odd_optab;
+
case VEC_WIDEN_LSHIFT_HI_EXPR:
return TYPE_UNSIGNED (type) ?
vec_widen_ushiftl_hi_optab : vec_widen_sshiftl_hi_optab;
@@ -552,7 +566,7 @@ optab_for_tree_code (enum tree_code code, const_tree type,
return trapv ? absv_optab : abs_optab;
default:
- return NULL;
+ return unknown_optab;
}
}
@@ -670,8 +684,8 @@ simplify_expand_binop (enum machine_mode mode, optab binoptab,
{
if (CONSTANT_P (op0) && CONSTANT_P (op1))
{
- rtx x = simplify_binary_operation (binoptab->code, mode, op0, op1);
-
+ rtx x = simplify_binary_operation (optab_to_code (binoptab),
+ mode, op0, op1);
if (x)
return x;
}
@@ -1258,7 +1272,7 @@ expand_simple_binop (enum machine_mode mode, enum rtx_code code, rtx op0,
rtx op1, rtx target, int unsignedp,
enum optab_methods methods)
{
- optab binop = code_to_optab[(int) code];
+ optab binop = code_to_optab (code);
gcc_assert (binop);
return expand_binop (mode, binop, op0, op1, target, unsignedp, methods);
@@ -1292,7 +1306,7 @@ swap_commutative_operands_with_target (rtx target, rtx op0, rtx op1)
static bool
shift_optab_p (optab binoptab)
{
- switch (binoptab->code)
+ switch (optab_to_code (binoptab))
{
case ASHIFT:
case SS_ASHIFT:
@@ -1313,7 +1327,7 @@ shift_optab_p (optab binoptab)
static bool
commutative_optab_p (optab binoptab)
{
- return (GET_RTX_CLASS (binoptab->code) == RTX_COMM_ARITH
+ return (GET_RTX_CLASS (optab_to_code (binoptab)) == RTX_COMM_ARITH
|| binoptab == smul_widen_optab
|| binoptab == umul_widen_optab
|| binoptab == smul_highpart_optab
@@ -1334,7 +1348,8 @@ avoid_expensive_constant (enum machine_mode mode, optab binoptab,
if (mode != VOIDmode
&& optimize
&& CONSTANT_P (x)
- && rtx_cost (x, binoptab->code, opn, speed) > set_src_cost (x, speed))
+ && (rtx_cost (x, optab_to_code (binoptab), opn, speed)
+ > set_src_cost (x, speed)))
{
if (CONST_INT_P (x))
{
@@ -1450,7 +1465,7 @@ expand_binop_directly (enum machine_mode mode, optab binoptab,
REG_EQUAL note to it. If we can't because TEMP conflicts with an
operand, call expand_binop again, this time without a target. */
if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX
- && ! add_equal_note (pat, ops[0].value, binoptab->code,
+ && ! add_equal_note (pat, ops[0].value, optab_to_code (binoptab),
ops[1].value, ops[2].value))
{
delete_insns_since (last);
@@ -1572,7 +1587,7 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
shift by a vector. If so, broadcast the scalar into a vector. */
if (mclass == MODE_VECTOR_INT)
{
- optab otheroptab = NULL;
+ optab otheroptab = unknown_optab;
if (binoptab == ashl_optab)
otheroptab = vashl_optab;
@@ -2021,8 +2036,8 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
rtx temp = emit_move_insn (target, xtarget);
set_dst_reg_note (temp, REG_EQUAL,
- gen_rtx_fmt_ee (binoptab->code, mode,
- copy_rtx (xop0),
+ gen_rtx_fmt_ee (optab_to_code (binoptab),
+ mode, copy_rtx (xop0),
copy_rtx (xop1)),
target);
}
@@ -2120,7 +2135,8 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
target = gen_reg_rtx (mode);
emit_libcall_block_1 (insns, target, value,
- gen_rtx_fmt_ee (binoptab->code, mode, op0, op1),
+ gen_rtx_fmt_ee (optab_to_code (binoptab),
+ mode, op0, op1),
trapv_binoptab_p (binoptab));
return target;
@@ -2217,7 +2233,7 @@ sign_expand_binop (enum machine_mode mode, optab uoptab, optab soptab,
{
rtx temp;
optab direct_optab = unsignedp ? uoptab : soptab;
- struct optab_d wide_soptab;
+ bool save_enable;
/* Do it without widening, if possible. */
temp = expand_binop (mode, direct_optab, op0, op1, target,
@@ -2225,38 +2241,38 @@ sign_expand_binop (enum machine_mode mode, optab uoptab, optab soptab,
if (temp || methods == OPTAB_DIRECT)
return temp;
- /* Try widening to a signed int. Make a fake signed optab that
- hides any signed insn for direct use. */
- wide_soptab = *soptab;
- set_optab_handler (&wide_soptab, mode, CODE_FOR_nothing);
- /* We don't want to generate new hash table entries from this fake
- optab. */
- wide_soptab.libcall_gen = NULL;
+ /* Try widening to a signed int. Disable any direct use of any
+ signed insn in the current mode. */
+ save_enable = swap_optab_enable (soptab, mode, false);
- temp = expand_binop (mode, &wide_soptab, op0, op1, target,
+ temp = expand_binop (mode, soptab, op0, op1, target,
unsignedp, OPTAB_WIDEN);
/* For unsigned operands, try widening to an unsigned int. */
- if (temp == 0 && unsignedp)
+ if (!temp && unsignedp)
temp = expand_binop (mode, uoptab, op0, op1, target,
unsignedp, OPTAB_WIDEN);
if (temp || methods == OPTAB_WIDEN)
- return temp;
+ goto egress;
/* Use the right width libcall if that exists. */
- temp = expand_binop (mode, direct_optab, op0, op1, target, unsignedp, OPTAB_LIB);
+ temp = expand_binop (mode, direct_optab, op0, op1, target,
+ unsignedp, OPTAB_LIB);
if (temp || methods == OPTAB_LIB)
- return temp;
+ goto egress;
/* Must widen and use a libcall, use either signed or unsigned. */
- temp = expand_binop (mode, &wide_soptab, op0, op1, target,
+ temp = expand_binop (mode, soptab, op0, op1, target,
unsignedp, methods);
- if (temp != 0)
- return temp;
- if (unsignedp)
- return expand_binop (mode, uoptab, op0, op1, target,
+ if (!temp && unsignedp)
+ temp = expand_binop (mode, uoptab, op0, op1, target,
unsignedp, methods);
- return 0;
+
+ egress:
+ /* Undo the fiddling above. */
+ if (save_enable)
+ swap_optab_enable (soptab, mode, true);
+ return temp;
}
/* Generate code to perform an operation specified by UNOPPTAB
@@ -2473,7 +2489,7 @@ rtx
expand_simple_unop (enum machine_mode mode, enum rtx_code code, rtx op0,
rtx target, int unsignedp)
{
- optab unop = code_to_optab[(int) code];
+ optab unop = code_to_optab (code);
gcc_assert (unop);
return expand_unop (mode, unop, op0, target, unsignedp);
@@ -2963,7 +2979,7 @@ expand_unop_direct (enum machine_mode mode, optab unoptab, rtx op0, rtx target,
if (pat)
{
if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX
- && ! add_equal_note (pat, ops[0].value, unoptab->code,
+ && ! add_equal_note (pat, ops[0].value, optab_to_code (unoptab),
ops[1].value, NULL_RTX))
{
delete_insns_since (last);
@@ -3162,7 +3178,7 @@ expand_unop (enum machine_mode mode, optab unoptab, rtx op0, rtx target,
return target;
}
- if (unoptab->code == NEG)
+ if (optab_to_code (unoptab) == NEG)
{
/* Try negating floating point values by flipping the sign bit. */
if (SCALAR_FLOAT_MODE_P (mode))
@@ -3238,7 +3254,7 @@ expand_unop (enum machine_mode mode, optab unoptab, rtx op0, rtx target,
end_sequence ();
target = gen_reg_rtx (outmode);
- eq_value = gen_rtx_fmt_e (unoptab->code, mode, op0);
+ eq_value = gen_rtx_fmt_e (optab_to_code (unoptab), mode, op0);
if (GET_MODE_SIZE (outmode) < GET_MODE_SIZE (mode))
eq_value = simplify_gen_unary (TRUNCATE, outmode, eq_value, mode);
else if (GET_MODE_SIZE (outmode) > GET_MODE_SIZE (mode))
@@ -3318,7 +3334,7 @@ expand_unop (enum machine_mode mode, optab unoptab, rtx op0, rtx target,
/* One final attempt at implementing negation via subtraction,
this time allowing widening of the operand. */
- if (unoptab->code == NEG && !HONOR_SIGNED_ZEROS (mode))
+ if (optab_to_code (unoptab) == NEG && !HONOR_SIGNED_ZEROS (mode))
{
rtx temp;
temp = expand_binop (mode,
@@ -3578,7 +3594,7 @@ expand_copysign_absneg (enum machine_mode mode, rtx op0, rtx op1, rtx target,
label = gen_label_rtx ();
emit_cmp_and_jump_insns (sign, const0_rtx, EQ, NULL_RTX, imode, 1, label);
- if (GET_CODE (op0) == CONST_DOUBLE)
+ if (CONST_DOUBLE_AS_FLOAT_P (op0))
op0 = simplify_unary_operation (NEG, mode, op0, mode);
else
op0 = expand_unop (mode, neg_optab, op0, target, 0);
@@ -3716,7 +3732,7 @@ expand_copysign (rtx op0, rtx op1, rtx target)
return NULL_RTX;
op0_is_abs = false;
- if (GET_CODE (op0) == CONST_DOUBLE)
+ if (CONST_DOUBLE_AS_FLOAT_P (op0))
{
if (real_isneg (CONST_DOUBLE_REAL_VALUE (op0)))
op0 = simplify_unary_operation (ABS, mode, op0, mode);
@@ -3724,7 +3740,7 @@ expand_copysign (rtx op0, rtx op1, rtx target)
}
if (fmt->signbit_ro >= 0
- && (GET_CODE (op0) == CONST_DOUBLE
+ && (CONST_DOUBLE_AS_FLOAT_P (op0)
|| (optab_handler (neg_optab, mode) != CODE_FOR_nothing
&& optab_handler (abs_optab, mode) != CODE_FOR_nothing)))
{
@@ -4317,12 +4333,12 @@ prepare_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison,
mode != VOIDmode;
mode = GET_MODE_WIDER_MODE (mode))
{
- if (code_to_optab[comparison]
- && (libfunc = optab_libfunc (code_to_optab[comparison], mode)))
+ if (code_to_optab (comparison)
+ && (libfunc = optab_libfunc (code_to_optab (comparison), mode)))
break;
- if (code_to_optab[swapped]
- && (libfunc = optab_libfunc (code_to_optab[swapped], mode)))
+ if (code_to_optab (swapped)
+ && (libfunc = optab_libfunc (code_to_optab (swapped), mode)))
{
rtx tmp;
tmp = x; x = y; y = tmp;
@@ -4330,8 +4346,8 @@ prepare_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison,
break;
}
- if (code_to_optab[reversed]
- && (libfunc = optab_libfunc (code_to_optab[reversed], mode)))
+ if (code_to_optab (reversed)
+ && (libfunc = optab_libfunc (code_to_optab (reversed), mode)))
{
comparison = reversed;
reversed_p = true;
@@ -5347,7 +5363,7 @@ expand_fixed_convert (rtx to, rtx from, int uintp, int satp)
end_sequence ();
emit_libcall_block (insns, to, value,
- gen_rtx_fmt_e (tab->code, to_mode, from));
+ gen_rtx_fmt_e (optab_to_code (tab), to_mode, from));
}
/* Generate code to convert FROM to fixed point and store in TO. FROM
@@ -5400,44 +5416,11 @@ expand_sfix_optab (rtx to, rtx from, convert_optab tab)
int
have_insn_for (enum rtx_code code, enum machine_mode mode)
{
- return (code_to_optab[(int) code] != 0
- && (optab_handler (code_to_optab[(int) code], mode)
+ return (code_to_optab (code)
+ && (optab_handler (code_to_optab (code), mode)
!= CODE_FOR_nothing));
}
-/* Set all insn_code fields to CODE_FOR_nothing. */
-
-static void
-init_insn_codes (void)
-{
- memset (optab_table, 0, sizeof (optab_table));
- memset (convert_optab_table, 0, sizeof (convert_optab_table));
- memset (direct_optab_table, 0, sizeof (direct_optab_table));
-}
-
-/* Initialize OP's code to CODE, and write it into the code_to_optab table. */
-static inline void
-init_optab (optab op, enum rtx_code code)
-{
- op->code = code;
- code_to_optab[(int) code] = op;
-}
-
-/* Same, but fill in its code as CODE, and do _not_ write it into
- the code_to_optab table. */
-static inline void
-init_optabv (optab op, enum rtx_code code)
-{
- op->code = code;
-}
-
-/* Conversion optabs never go in the code_to_optab table. */
-static void
-init_convert_optab (convert_optab op, enum rtx_code code)
-{
- op->code = code;
-}
-
/* Initialize the libfunc fields of an entire group of entries in some
optab. Each entry is set equal to a string consisting of a leading
pair of underscores followed by a generic operation name followed by
@@ -5453,7 +5436,8 @@ init_convert_optab (convert_optab op, enum rtx_code code)
*/
static void
-gen_libfunc (optab optable, const char *opname, int suffix, enum machine_mode mode)
+gen_libfunc (optab optable, const char *opname, int suffix,
+ enum machine_mode mode)
{
unsigned opname_len = strlen (opname);
const char *mname = GET_MODE_NAME (mode);
@@ -5487,7 +5471,7 @@ gen_libfunc (optab optable, const char *opname, int suffix, enum machine_mode mo
/* Like gen_libfunc, but verify that integer operation is involved. */
-static void
+void
gen_int_libfunc (optab optable, const char *opname, char suffix,
enum machine_mode mode)
{
@@ -5505,7 +5489,7 @@ gen_int_libfunc (optab optable, const char *opname, char suffix,
/* Like gen_libfunc, but verify that FP and set decimal prefix if needed. */
-static void
+void
gen_fp_libfunc (optab optable, const char *opname, char suffix,
enum machine_mode mode)
{
@@ -5526,7 +5510,7 @@ gen_fp_libfunc (optab optable, const char *opname, char suffix,
/* Like gen_libfunc, but verify that fixed-point operation is involved. */
-static void
+void
gen_fixed_libfunc (optab optable, const char *opname, char suffix,
enum machine_mode mode)
{
@@ -5538,7 +5522,7 @@ gen_fixed_libfunc (optab optable, const char *opname, char suffix,
/* Like gen_libfunc, but verify that signed fixed-point operation is
involved. */
-static void
+void
gen_signed_fixed_libfunc (optab optable, const char *opname, char suffix,
enum machine_mode mode)
{
@@ -5550,7 +5534,7 @@ gen_signed_fixed_libfunc (optab optable, const char *opname, char suffix,
/* Like gen_libfunc, but verify that unsigned fixed-point operation is
involved. */
-static void
+void
gen_unsigned_fixed_libfunc (optab optable, const char *opname, char suffix,
enum machine_mode mode)
{
@@ -5561,7 +5545,7 @@ gen_unsigned_fixed_libfunc (optab optable, const char *opname, char suffix,
/* Like gen_libfunc, but verify that FP or INT operation is involved. */
-static void
+void
gen_int_fp_libfunc (optab optable, const char *name, char suffix,
enum machine_mode mode)
{
@@ -5574,7 +5558,7 @@ gen_int_fp_libfunc (optab optable, const char *name, char suffix,
/* Like gen_libfunc, but verify that FP or INT operation is involved
and add 'v' suffix for integer operation. */
-static void
+void
gen_intv_fp_libfunc (optab optable, const char *name, char suffix,
enum machine_mode mode)
{
@@ -5594,7 +5578,7 @@ gen_intv_fp_libfunc (optab optable, const char *name, char suffix,
/* Like gen_libfunc, but verify that FP or INT or FIXED operation is
involved. */
-static void
+void
gen_int_fp_fixed_libfunc (optab optable, const char *name, char suffix,
enum machine_mode mode)
{
@@ -5609,7 +5593,7 @@ gen_int_fp_fixed_libfunc (optab optable, const char *name, char suffix,
/* Like gen_libfunc, but verify that FP or INT or signed FIXED operation is
involved. */
-static void
+void
gen_int_fp_signed_fixed_libfunc (optab optable, const char *name, char suffix,
enum machine_mode mode)
{
@@ -5624,7 +5608,7 @@ gen_int_fp_signed_fixed_libfunc (optab optable, const char *name, char suffix,
/* Like gen_libfunc, but verify that INT or FIXED operation is
involved. */
-static void
+void
gen_int_fixed_libfunc (optab optable, const char *name, char suffix,
enum machine_mode mode)
{
@@ -5637,7 +5621,7 @@ gen_int_fixed_libfunc (optab optable, const char *name, char suffix,
/* Like gen_libfunc, but verify that INT or signed FIXED operation is
involved. */
-static void
+void
gen_int_signed_fixed_libfunc (optab optable, const char *name, char suffix,
enum machine_mode mode)
{
@@ -5650,7 +5634,7 @@ gen_int_signed_fixed_libfunc (optab optable, const char *name, char suffix,
/* Like gen_libfunc, but verify that INT or unsigned FIXED operation is
involved. */
-static void
+void
gen_int_unsigned_fixed_libfunc (optab optable, const char *name, char suffix,
enum machine_mode mode)
{
@@ -5666,7 +5650,7 @@ gen_int_unsigned_fixed_libfunc (optab optable, const char *name, char suffix,
a mode name and an operand count these functions have two mode names
and no operand count. */
-static void
+void
gen_interclass_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5738,7 +5722,7 @@ gen_interclass_conv_libfunc (convert_optab tab,
/* Same as gen_interclass_conv_libfunc but verify that we are producing
int->fp conversion. */
-static void
+void
gen_int_to_fp_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5754,7 +5738,7 @@ gen_int_to_fp_conv_libfunc (convert_optab tab,
/* ufloat_optab is special by using floatun for FP and floatuns decimal fp
naming scheme. */
-static void
+void
gen_ufloat_conv_libfunc (convert_optab tab,
const char *opname ATTRIBUTE_UNUSED,
enum machine_mode tmode,
@@ -5769,7 +5753,7 @@ gen_ufloat_conv_libfunc (convert_optab tab,
/* Same as gen_interclass_conv_libfunc but verify that we are producing
fp->int conversion. */
-static void
+void
gen_int_to_fp_nondecimal_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5785,7 +5769,7 @@ gen_int_to_fp_nondecimal_conv_libfunc (convert_optab tab,
/* Same as gen_interclass_conv_libfunc but verify that we are producing
fp->int conversion with no decimal floating point involved. */
-static void
+void
gen_fp_to_int_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5802,7 +5786,7 @@ gen_fp_to_int_conv_libfunc (convert_optab tab,
The string formation rules are
similar to the ones for init_libfunc, above. */
-static void
+void
gen_intraclass_conv_libfunc (convert_optab tab, const char *opname,
enum machine_mode tmode, enum machine_mode fmode)
{
@@ -5872,7 +5856,7 @@ gen_intraclass_conv_libfunc (convert_optab tab, const char *opname,
/* Pick proper libcall for trunc_optab. We need to chose if we do
truncation or extension and interclass or intraclass. */
-static void
+void
gen_trunc_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5901,7 +5885,7 @@ gen_trunc_conv_libfunc (convert_optab tab,
/* Pick proper libcall for extend_optab. We need to chose if we do
truncation or extension and interclass or intraclass. */
-static void
+void
gen_extend_conv_libfunc (convert_optab tab,
const char *opname ATTRIBUTE_UNUSED,
enum machine_mode tmode,
@@ -5930,7 +5914,7 @@ gen_extend_conv_libfunc (convert_optab tab,
/* Pick proper libcall for fract_optab. We need to chose if we do
interclass or intraclass. */
-static void
+void
gen_fract_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5949,7 +5933,7 @@ gen_fract_conv_libfunc (convert_optab tab,
/* Pick proper libcall for fractuns_optab. */
-static void
+void
gen_fractuns_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5970,7 +5954,7 @@ gen_fractuns_conv_libfunc (convert_optab tab,
/* Pick proper libcall for satfract_optab. We need to chose if we do
interclass or intraclass. */
-static void
+void
gen_satfract_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -5990,7 +5974,7 @@ gen_satfract_conv_libfunc (convert_optab tab,
/* Pick proper libcall for satfractuns_optab. */
-static void
+void
gen_satfractuns_conv_libfunc (convert_optab tab,
const char *opname,
enum machine_mode tmode,
@@ -6091,12 +6075,13 @@ set_user_assembler_libfunc (const char *name, const char *asmspec)
/* Call this to reset the function entry for one optab (OPTABLE) in mode
MODE to NAME, which should be either 0 or a string constant. */
void
-set_optab_libfunc (optab optable, enum machine_mode mode, const char *name)
+set_optab_libfunc (optab op, enum machine_mode mode, const char *name)
{
rtx val;
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = (size_t) (optable - &optab_table[0]);
+
+ e.op = op;
e.mode1 = mode;
e.mode2 = VOIDmode;
@@ -6107,7 +6092,7 @@ set_optab_libfunc (optab optable, enum machine_mode mode, const char *name)
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, INSERT);
if (*slot == NULL)
*slot = ggc_alloc_libfunc_entry ();
- (*slot)->optab = (size_t) (optable - &optab_table[0]);
+ (*slot)->op = op;
(*slot)->mode1 = mode;
(*slot)->mode2 = VOIDmode;
(*slot)->libfunc = val;
@@ -6117,13 +6102,14 @@ set_optab_libfunc (optab optable, enum machine_mode mode, const char *name)
(OPTABLE) from mode FMODE to mode TMODE to NAME, which should be
either 0 or a string constant. */
void
-set_conv_libfunc (convert_optab optable, enum machine_mode tmode,
+set_conv_libfunc (convert_optab optab, enum machine_mode tmode,
enum machine_mode fmode, const char *name)
{
rtx val;
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = (size_t) (optable - &convert_optab_table[0]);
+
+ e.op = optab;
e.mode1 = tmode;
e.mode2 = fmode;
@@ -6134,7 +6120,7 @@ set_conv_libfunc (convert_optab optable, enum machine_mode tmode,
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, INSERT);
if (*slot == NULL)
*slot = ggc_alloc_libfunc_entry ();
- (*slot)->optab = (size_t) (optable - &convert_optab_table[0]);
+ (*slot)->op = optab;
(*slot)->mode1 = tmode;
(*slot)->mode2 = fmode;
(*slot)->libfunc = val;
@@ -6147,421 +6133,13 @@ void
init_optabs (void)
{
if (libfunc_hash)
- {
- htab_empty (libfunc_hash);
- /* We statically initialize the insn_codes with the equivalent of
- CODE_FOR_nothing. Repeat the process if reinitialising. */
- init_insn_codes ();
- }
+ htab_empty (libfunc_hash);
else
libfunc_hash = htab_create_ggc (10, hash_libfunc, eq_libfunc, NULL);
- init_optab (add_optab, PLUS);
- init_optabv (addv_optab, PLUS);
- init_optab (sub_optab, MINUS);
- init_optabv (subv_optab, MINUS);
- init_optab (ssadd_optab, SS_PLUS);
- init_optab (usadd_optab, US_PLUS);
- init_optab (sssub_optab, SS_MINUS);
- init_optab (ussub_optab, US_MINUS);
- init_optab (smul_optab, MULT);
- init_optab (ssmul_optab, SS_MULT);
- init_optab (usmul_optab, US_MULT);
- init_optabv (smulv_optab, MULT);
- init_optab (smul_highpart_optab, UNKNOWN);
- init_optab (umul_highpart_optab, UNKNOWN);
- init_optab (smul_widen_optab, UNKNOWN);
- init_optab (umul_widen_optab, UNKNOWN);
- init_optab (usmul_widen_optab, UNKNOWN);
- init_optab (smadd_widen_optab, UNKNOWN);
- init_optab (umadd_widen_optab, UNKNOWN);
- init_optab (ssmadd_widen_optab, UNKNOWN);
- init_optab (usmadd_widen_optab, UNKNOWN);
- init_optab (smsub_widen_optab, UNKNOWN);
- init_optab (umsub_widen_optab, UNKNOWN);
- init_optab (ssmsub_widen_optab, UNKNOWN);
- init_optab (usmsub_widen_optab, UNKNOWN);
- init_optab (sdiv_optab, DIV);
- init_optab (ssdiv_optab, SS_DIV);
- init_optab (usdiv_optab, US_DIV);
- init_optabv (sdivv_optab, DIV);
- init_optab (sdivmod_optab, UNKNOWN);
- init_optab (udiv_optab, UDIV);
- init_optab (udivmod_optab, UNKNOWN);
- init_optab (smod_optab, MOD);
- init_optab (umod_optab, UMOD);
- init_optab (fmod_optab, UNKNOWN);
- init_optab (remainder_optab, UNKNOWN);
- init_optab (ftrunc_optab, UNKNOWN);
- init_optab (and_optab, AND);
- init_optab (ior_optab, IOR);
- init_optab (xor_optab, XOR);
- init_optab (ashl_optab, ASHIFT);
- init_optab (ssashl_optab, SS_ASHIFT);
- init_optab (usashl_optab, US_ASHIFT);
- init_optab (ashr_optab, ASHIFTRT);
- init_optab (lshr_optab, LSHIFTRT);
- init_optabv (vashl_optab, ASHIFT);
- init_optabv (vashr_optab, ASHIFTRT);
- init_optabv (vlshr_optab, LSHIFTRT);
- init_optab (rotl_optab, ROTATE);
- init_optab (rotr_optab, ROTATERT);
- init_optab (smin_optab, SMIN);
- init_optab (smax_optab, SMAX);
- init_optab (umin_optab, UMIN);
- init_optab (umax_optab, UMAX);
- init_optab (pow_optab, UNKNOWN);
- init_optab (atan2_optab, UNKNOWN);
- init_optab (fma_optab, FMA);
- init_optab (fms_optab, UNKNOWN);
- init_optab (fnma_optab, UNKNOWN);
- init_optab (fnms_optab, UNKNOWN);
-
- /* These three have codes assigned exclusively for the sake of
- have_insn_for. */
- init_optab (mov_optab, SET);
- init_optab (movstrict_optab, STRICT_LOW_PART);
- init_optab (cbranch_optab, COMPARE);
-
- init_optab (cmov_optab, UNKNOWN);
- init_optab (cstore_optab, UNKNOWN);
- init_optab (ctrap_optab, UNKNOWN);
-
- init_optab (storent_optab, UNKNOWN);
-
- init_optab (cmp_optab, UNKNOWN);
- init_optab (ucmp_optab, UNKNOWN);
-
- init_optab (eq_optab, EQ);
- init_optab (ne_optab, NE);
- init_optab (gt_optab, GT);
- init_optab (ge_optab, GE);
- init_optab (lt_optab, LT);
- init_optab (le_optab, LE);
- init_optab (unord_optab, UNORDERED);
-
- init_optab (neg_optab, NEG);
- init_optab (ssneg_optab, SS_NEG);
- init_optab (usneg_optab, US_NEG);
- init_optabv (negv_optab, NEG);
- init_optab (abs_optab, ABS);
- init_optabv (absv_optab, ABS);
- init_optab (addcc_optab, UNKNOWN);
- init_optab (one_cmpl_optab, NOT);
- init_optab (bswap_optab, BSWAP);
- init_optab (ffs_optab, FFS);
- init_optab (clz_optab, CLZ);
- init_optab (ctz_optab, CTZ);
- init_optab (clrsb_optab, CLRSB);
- init_optab (popcount_optab, POPCOUNT);
- init_optab (parity_optab, PARITY);
- init_optab (sqrt_optab, SQRT);
- init_optab (floor_optab, UNKNOWN);
- init_optab (ceil_optab, UNKNOWN);
- init_optab (round_optab, UNKNOWN);
- init_optab (btrunc_optab, UNKNOWN);
- init_optab (nearbyint_optab, UNKNOWN);
- init_optab (rint_optab, UNKNOWN);
- init_optab (sincos_optab, UNKNOWN);
- init_optab (sin_optab, UNKNOWN);
- init_optab (asin_optab, UNKNOWN);
- init_optab (cos_optab, UNKNOWN);
- init_optab (acos_optab, UNKNOWN);
- init_optab (exp_optab, UNKNOWN);
- init_optab (exp10_optab, UNKNOWN);
- init_optab (exp2_optab, UNKNOWN);
- init_optab (expm1_optab, UNKNOWN);
- init_optab (ldexp_optab, UNKNOWN);
- init_optab (scalb_optab, UNKNOWN);
- init_optab (significand_optab, UNKNOWN);
- init_optab (logb_optab, UNKNOWN);
- init_optab (ilogb_optab, UNKNOWN);
- init_optab (log_optab, UNKNOWN);
- init_optab (log10_optab, UNKNOWN);
- init_optab (log2_optab, UNKNOWN);
- init_optab (log1p_optab, UNKNOWN);
- init_optab (tan_optab, UNKNOWN);
- init_optab (atan_optab, UNKNOWN);
- init_optab (copysign_optab, UNKNOWN);
- init_optab (signbit_optab, UNKNOWN);
-
- init_optab (isinf_optab, UNKNOWN);
-
- init_optab (strlen_optab, UNKNOWN);
- init_optab (push_optab, UNKNOWN);
-
- init_optab (reduc_smax_optab, UNKNOWN);
- init_optab (reduc_umax_optab, UNKNOWN);
- init_optab (reduc_smin_optab, UNKNOWN);
- init_optab (reduc_umin_optab, UNKNOWN);
- init_optab (reduc_splus_optab, UNKNOWN);
- init_optab (reduc_uplus_optab, UNKNOWN);
-
- init_optab (ssum_widen_optab, UNKNOWN);
- init_optab (usum_widen_optab, UNKNOWN);
- init_optab (sdot_prod_optab, UNKNOWN);
- init_optab (udot_prod_optab, UNKNOWN);
-
- init_optab (vec_extract_optab, UNKNOWN);
- init_optab (vec_set_optab, UNKNOWN);
- init_optab (vec_init_optab, UNKNOWN);
- init_optab (vec_shl_optab, UNKNOWN);
- init_optab (vec_shr_optab, UNKNOWN);
- init_optab (vec_realign_load_optab, UNKNOWN);
- init_optab (movmisalign_optab, UNKNOWN);
- init_optab (vec_widen_umult_hi_optab, UNKNOWN);
- init_optab (vec_widen_umult_lo_optab, UNKNOWN);
- init_optab (vec_widen_smult_hi_optab, UNKNOWN);
- init_optab (vec_widen_smult_lo_optab, UNKNOWN);
- init_optab (vec_widen_ushiftl_hi_optab, UNKNOWN);
- init_optab (vec_widen_ushiftl_lo_optab, UNKNOWN);
- init_optab (vec_widen_sshiftl_hi_optab, UNKNOWN);
- init_optab (vec_widen_sshiftl_lo_optab, UNKNOWN);
- init_optab (vec_unpacks_hi_optab, UNKNOWN);
- init_optab (vec_unpacks_lo_optab, UNKNOWN);
- init_optab (vec_unpacku_hi_optab, UNKNOWN);
- init_optab (vec_unpacku_lo_optab, UNKNOWN);
- init_optab (vec_unpacks_float_hi_optab, UNKNOWN);
- init_optab (vec_unpacks_float_lo_optab, UNKNOWN);
- init_optab (vec_unpacku_float_hi_optab, UNKNOWN);
- init_optab (vec_unpacku_float_lo_optab, UNKNOWN);
- init_optab (vec_pack_trunc_optab, UNKNOWN);
- init_optab (vec_pack_usat_optab, UNKNOWN);
- init_optab (vec_pack_ssat_optab, UNKNOWN);
- init_optab (vec_pack_ufix_trunc_optab, UNKNOWN);
- init_optab (vec_pack_sfix_trunc_optab, UNKNOWN);
-
- init_optab (powi_optab, UNKNOWN);
-
- /* Conversions. */
- init_convert_optab (sext_optab, SIGN_EXTEND);
- init_convert_optab (zext_optab, ZERO_EXTEND);
- init_convert_optab (trunc_optab, TRUNCATE);
- init_convert_optab (sfix_optab, FIX);
- init_convert_optab (ufix_optab, UNSIGNED_FIX);
- init_convert_optab (sfixtrunc_optab, UNKNOWN);
- init_convert_optab (ufixtrunc_optab, UNKNOWN);
- init_convert_optab (sfloat_optab, FLOAT);
- init_convert_optab (ufloat_optab, UNSIGNED_FLOAT);
- init_convert_optab (lrint_optab, UNKNOWN);
- init_convert_optab (lround_optab, UNKNOWN);
- init_convert_optab (lfloor_optab, UNKNOWN);
- init_convert_optab (lceil_optab, UNKNOWN);
-
- init_convert_optab (fract_optab, FRACT_CONVERT);
- init_convert_optab (fractuns_optab, UNSIGNED_FRACT_CONVERT);
- init_convert_optab (satfract_optab, SAT_FRACT);
- init_convert_optab (satfractuns_optab, UNSIGNED_SAT_FRACT);
-
/* Fill in the optabs with the insns we support. */
init_all_optabs ();
- /* Initialize the optabs with the names of the library functions. */
- add_optab->libcall_basename = "add";
- add_optab->libcall_suffix = '3';
- add_optab->libcall_gen = gen_int_fp_fixed_libfunc;
- addv_optab->libcall_basename = "add";
- addv_optab->libcall_suffix = '3';
- addv_optab->libcall_gen = gen_intv_fp_libfunc;
- ssadd_optab->libcall_basename = "ssadd";
- ssadd_optab->libcall_suffix = '3';
- ssadd_optab->libcall_gen = gen_signed_fixed_libfunc;
- usadd_optab->libcall_basename = "usadd";
- usadd_optab->libcall_suffix = '3';
- usadd_optab->libcall_gen = gen_unsigned_fixed_libfunc;
- sub_optab->libcall_basename = "sub";
- sub_optab->libcall_suffix = '3';
- sub_optab->libcall_gen = gen_int_fp_fixed_libfunc;
- subv_optab->libcall_basename = "sub";
- subv_optab->libcall_suffix = '3';
- subv_optab->libcall_gen = gen_intv_fp_libfunc;
- sssub_optab->libcall_basename = "sssub";
- sssub_optab->libcall_suffix = '3';
- sssub_optab->libcall_gen = gen_signed_fixed_libfunc;
- ussub_optab->libcall_basename = "ussub";
- ussub_optab->libcall_suffix = '3';
- ussub_optab->libcall_gen = gen_unsigned_fixed_libfunc;
- smul_optab->libcall_basename = "mul";
- smul_optab->libcall_suffix = '3';
- smul_optab->libcall_gen = gen_int_fp_fixed_libfunc;
- smulv_optab->libcall_basename = "mul";
- smulv_optab->libcall_suffix = '3';
- smulv_optab->libcall_gen = gen_intv_fp_libfunc;
- ssmul_optab->libcall_basename = "ssmul";
- ssmul_optab->libcall_suffix = '3';
- ssmul_optab->libcall_gen = gen_signed_fixed_libfunc;
- usmul_optab->libcall_basename = "usmul";
- usmul_optab->libcall_suffix = '3';
- usmul_optab->libcall_gen = gen_unsigned_fixed_libfunc;
- sdiv_optab->libcall_basename = "div";
- sdiv_optab->libcall_suffix = '3';
- sdiv_optab->libcall_gen = gen_int_fp_signed_fixed_libfunc;
- sdivv_optab->libcall_basename = "divv";
- sdivv_optab->libcall_suffix = '3';
- sdivv_optab->libcall_gen = gen_int_libfunc;
- ssdiv_optab->libcall_basename = "ssdiv";
- ssdiv_optab->libcall_suffix = '3';
- ssdiv_optab->libcall_gen = gen_signed_fixed_libfunc;
- udiv_optab->libcall_basename = "udiv";
- udiv_optab->libcall_suffix = '3';
- udiv_optab->libcall_gen = gen_int_unsigned_fixed_libfunc;
- usdiv_optab->libcall_basename = "usdiv";
- usdiv_optab->libcall_suffix = '3';
- usdiv_optab->libcall_gen = gen_unsigned_fixed_libfunc;
- sdivmod_optab->libcall_basename = "divmod";
- sdivmod_optab->libcall_suffix = '4';
- sdivmod_optab->libcall_gen = gen_int_libfunc;
- udivmod_optab->libcall_basename = "udivmod";
- udivmod_optab->libcall_suffix = '4';
- udivmod_optab->libcall_gen = gen_int_libfunc;
- smod_optab->libcall_basename = "mod";
- smod_optab->libcall_suffix = '3';
- smod_optab->libcall_gen = gen_int_libfunc;
- umod_optab->libcall_basename = "umod";
- umod_optab->libcall_suffix = '3';
- umod_optab->libcall_gen = gen_int_libfunc;
- ftrunc_optab->libcall_basename = "ftrunc";
- ftrunc_optab->libcall_suffix = '2';
- ftrunc_optab->libcall_gen = gen_fp_libfunc;
- and_optab->libcall_basename = "and";
- and_optab->libcall_suffix = '3';
- and_optab->libcall_gen = gen_int_libfunc;
- ior_optab->libcall_basename = "ior";
- ior_optab->libcall_suffix = '3';
- ior_optab->libcall_gen = gen_int_libfunc;
- xor_optab->libcall_basename = "xor";
- xor_optab->libcall_suffix = '3';
- xor_optab->libcall_gen = gen_int_libfunc;
- ashl_optab->libcall_basename = "ashl";
- ashl_optab->libcall_suffix = '3';
- ashl_optab->libcall_gen = gen_int_fixed_libfunc;
- ssashl_optab->libcall_basename = "ssashl";
- ssashl_optab->libcall_suffix = '3';
- ssashl_optab->libcall_gen = gen_signed_fixed_libfunc;
- usashl_optab->libcall_basename = "usashl";
- usashl_optab->libcall_suffix = '3';
- usashl_optab->libcall_gen = gen_unsigned_fixed_libfunc;
- ashr_optab->libcall_basename = "ashr";
- ashr_optab->libcall_suffix = '3';
- ashr_optab->libcall_gen = gen_int_signed_fixed_libfunc;
- lshr_optab->libcall_basename = "lshr";
- lshr_optab->libcall_suffix = '3';
- lshr_optab->libcall_gen = gen_int_unsigned_fixed_libfunc;
- smin_optab->libcall_basename = "min";
- smin_optab->libcall_suffix = '3';
- smin_optab->libcall_gen = gen_int_fp_libfunc;
- smax_optab->libcall_basename = "max";
- smax_optab->libcall_suffix = '3';
- smax_optab->libcall_gen = gen_int_fp_libfunc;
- umin_optab->libcall_basename = "umin";
- umin_optab->libcall_suffix = '3';
- umin_optab->libcall_gen = gen_int_libfunc;
- umax_optab->libcall_basename = "umax";
- umax_optab->libcall_suffix = '3';
- umax_optab->libcall_gen = gen_int_libfunc;
- neg_optab->libcall_basename = "neg";
- neg_optab->libcall_suffix = '2';
- neg_optab->libcall_gen = gen_int_fp_fixed_libfunc;
- ssneg_optab->libcall_basename = "ssneg";
- ssneg_optab->libcall_suffix = '2';
- ssneg_optab->libcall_gen = gen_signed_fixed_libfunc;
- usneg_optab->libcall_basename = "usneg";
- usneg_optab->libcall_suffix = '2';
- usneg_optab->libcall_gen = gen_unsigned_fixed_libfunc;
- negv_optab->libcall_basename = "neg";
- negv_optab->libcall_suffix = '2';
- negv_optab->libcall_gen = gen_intv_fp_libfunc;
- one_cmpl_optab->libcall_basename = "one_cmpl";
- one_cmpl_optab->libcall_suffix = '2';
- one_cmpl_optab->libcall_gen = gen_int_libfunc;
- ffs_optab->libcall_basename = "ffs";
- ffs_optab->libcall_suffix = '2';
- ffs_optab->libcall_gen = gen_int_libfunc;
- clz_optab->libcall_basename = "clz";
- clz_optab->libcall_suffix = '2';
- clz_optab->libcall_gen = gen_int_libfunc;
- ctz_optab->libcall_basename = "ctz";
- ctz_optab->libcall_suffix = '2';
- ctz_optab->libcall_gen = gen_int_libfunc;
- clrsb_optab->libcall_basename = "clrsb";
- clrsb_optab->libcall_suffix = '2';
- clrsb_optab->libcall_gen = gen_int_libfunc;
- popcount_optab->libcall_basename = "popcount";
- popcount_optab->libcall_suffix = '2';
- popcount_optab->libcall_gen = gen_int_libfunc;
- parity_optab->libcall_basename = "parity";
- parity_optab->libcall_suffix = '2';
- parity_optab->libcall_gen = gen_int_libfunc;
-
- /* Comparison libcalls for integers MUST come in pairs,
- signed/unsigned. */
- cmp_optab->libcall_basename = "cmp";
- cmp_optab->libcall_suffix = '2';
- cmp_optab->libcall_gen = gen_int_fp_fixed_libfunc;
- ucmp_optab->libcall_basename = "ucmp";
- ucmp_optab->libcall_suffix = '2';
- ucmp_optab->libcall_gen = gen_int_libfunc;
-
- /* EQ etc are floating point only. */
- eq_optab->libcall_basename = "eq";
- eq_optab->libcall_suffix = '2';
- eq_optab->libcall_gen = gen_fp_libfunc;
- ne_optab->libcall_basename = "ne";
- ne_optab->libcall_suffix = '2';
- ne_optab->libcall_gen = gen_fp_libfunc;
- gt_optab->libcall_basename = "gt";
- gt_optab->libcall_suffix = '2';
- gt_optab->libcall_gen = gen_fp_libfunc;
- ge_optab->libcall_basename = "ge";
- ge_optab->libcall_suffix = '2';
- ge_optab->libcall_gen = gen_fp_libfunc;
- lt_optab->libcall_basename = "lt";
- lt_optab->libcall_suffix = '2';
- lt_optab->libcall_gen = gen_fp_libfunc;
- le_optab->libcall_basename = "le";
- le_optab->libcall_suffix = '2';
- le_optab->libcall_gen = gen_fp_libfunc;
- unord_optab->libcall_basename = "unord";
- unord_optab->libcall_suffix = '2';
- unord_optab->libcall_gen = gen_fp_libfunc;
-
- powi_optab->libcall_basename = "powi";
- powi_optab->libcall_suffix = '2';
- powi_optab->libcall_gen = gen_fp_libfunc;
-
- /* Conversions. */
- sfloat_optab->libcall_basename = "float";
- sfloat_optab->libcall_gen = gen_int_to_fp_conv_libfunc;
- ufloat_optab->libcall_gen = gen_ufloat_conv_libfunc;
- sfix_optab->libcall_basename = "fix";
- sfix_optab->libcall_gen = gen_fp_to_int_conv_libfunc;
- ufix_optab->libcall_basename = "fixuns";
- ufix_optab->libcall_gen = gen_fp_to_int_conv_libfunc;
- lrint_optab->libcall_basename = "lrint";
- lrint_optab->libcall_gen = gen_int_to_fp_nondecimal_conv_libfunc;
- lround_optab->libcall_basename = "lround";
- lround_optab->libcall_gen = gen_int_to_fp_nondecimal_conv_libfunc;
- lfloor_optab->libcall_basename = "lfloor";
- lfloor_optab->libcall_gen = gen_int_to_fp_nondecimal_conv_libfunc;
- lceil_optab->libcall_basename = "lceil";
- lceil_optab->libcall_gen = gen_int_to_fp_nondecimal_conv_libfunc;
-
- /* trunc_optab is also used for FLOAT_EXTEND. */
- sext_optab->libcall_basename = "extend";
- sext_optab->libcall_gen = gen_extend_conv_libfunc;
- trunc_optab->libcall_basename = "trunc";
- trunc_optab->libcall_gen = gen_trunc_conv_libfunc;
-
- /* Conversions for fixed-point modes and other modes. */
- fract_optab->libcall_basename = "fract";
- fract_optab->libcall_gen = gen_fract_conv_libfunc;
- satfract_optab->libcall_basename = "satfract";
- satfract_optab->libcall_gen = gen_satfract_conv_libfunc;
- fractuns_optab->libcall_basename = "fractuns";
- fractuns_optab->libcall_gen = gen_fractuns_conv_libfunc;
- satfractuns_optab->libcall_basename = "satfractuns";
- satfractuns_optab->libcall_gen = gen_satfractuns_conv_libfunc;
-
/* The ffs function operates on `int'. Fall back on it if we do not
have a libgcc2 function for that width. */
if (INT_TYPE_SIZE < BITS_PER_WORD)
@@ -6584,7 +6162,8 @@ init_optabs (void)
/* Use cabs for double complex abs, since systems generally have cabs.
Don't define any libcall for float complex, so that cabs will be used. */
if (complex_double_type_node)
- set_optab_libfunc (abs_optab, TYPE_MODE (complex_double_type_node), "cabs");
+ set_optab_libfunc (abs_optab, TYPE_MODE (complex_double_type_node),
+ "cabs");
abort_libfunc = init_one_libfunc ("abort");
memcpy_libfunc = init_one_libfunc ("memcpy");
@@ -6676,45 +6255,35 @@ init_sync_libfuncs (int max)
DEBUG_FUNCTION void
debug_optab_libfuncs (void)
{
- int i;
- int j;
- int k;
+ int i, j, k;
/* Dump the arithmetic optabs. */
- for (i = 0; i != (int) OTI_MAX; i++)
+ for (i = FIRST_NORM_OPTAB; i <= LAST_NORMLIB_OPTAB; ++i)
for (j = 0; j < NUM_MACHINE_MODES; ++j)
{
- optab o;
- rtx l;
-
- o = &optab_table[i];
- l = optab_libfunc (o, (enum machine_mode) j);
+ rtx l = optab_libfunc ((optab) i, (enum machine_mode) j);
if (l)
{
gcc_assert (GET_CODE (l) == SYMBOL_REF);
fprintf (stderr, "%s\t%s:\t%s\n",
- GET_RTX_NAME (o->code),
+ GET_RTX_NAME (optab_to_code ((optab) i)),
GET_MODE_NAME (j),
XSTR (l, 0));
}
}
/* Dump the conversion optabs. */
- for (i = 0; i < (int) COI_MAX; ++i)
+ for (i = FIRST_CONV_OPTAB; i <= LAST_CONVLIB_OPTAB; ++i)
for (j = 0; j < NUM_MACHINE_MODES; ++j)
for (k = 0; k < NUM_MACHINE_MODES; ++k)
{
- convert_optab o;
- rtx l;
-
- o = &convert_optab_table[i];
- l = convert_optab_libfunc (o, (enum machine_mode) j,
- (enum machine_mode) k);
+ rtx l = convert_optab_libfunc ((optab) i, (enum machine_mode) j,
+ (enum machine_mode) k);
if (l)
{
gcc_assert (GET_CODE (l) == SYMBOL_REF);
fprintf (stderr, "%s\t%s\t%s:\t%s\n",
- GET_RTX_NAME (o->code),
+ GET_RTX_NAME (optab_to_code ((optab) i)),
GET_MODE_NAME (j),
GET_MODE_NAME (k),
XSTR (l, 0));
@@ -7154,6 +6723,132 @@ expand_vec_cond_expr (tree vec_cond_type, tree op0, tree op1, tree op2,
return ops[0].value;
}
+/* Return non-zero if a highpart multiply is supported of can be synthisized.
+ For the benefit of expand_mult_highpart, the return value is 1 for direct,
+ 2 for even/odd widening, and 3 for hi/lo widening. */
+
+int
+can_mult_highpart_p (enum machine_mode mode, bool uns_p)
+{
+ optab op;
+ unsigned char *sel;
+ unsigned i, nunits;
+
+ op = uns_p ? umul_highpart_optab : smul_highpart_optab;
+ if (optab_handler (op, mode) != CODE_FOR_nothing)
+ return 1;
+
+ /* If the mode is an integral vector, synth from widening operations. */
+ if (GET_MODE_CLASS (mode) != MODE_VECTOR_INT)
+ return 0;
+
+ nunits = GET_MODE_NUNITS (mode);
+ sel = XALLOCAVEC (unsigned char, nunits);
+
+ op = uns_p ? vec_widen_umult_even_optab : vec_widen_smult_even_optab;
+ if (optab_handler (op, mode) != CODE_FOR_nothing)
+ {
+ op = uns_p ? vec_widen_umult_odd_optab : vec_widen_smult_odd_optab;
+ if (optab_handler (op, mode) != CODE_FOR_nothing)
+ {
+ for (i = 0; i < nunits; ++i)
+ sel[i] = !BYTES_BIG_ENDIAN + (i & ~1) + ((i & 1) ? nunits : 0);
+ if (can_vec_perm_p (mode, false, sel))
+ return 2;
+ }
+ }
+
+ op = uns_p ? vec_widen_umult_hi_optab : vec_widen_smult_hi_optab;
+ if (optab_handler (op, mode) != CODE_FOR_nothing)
+ {
+ op = uns_p ? vec_widen_umult_lo_optab : vec_widen_smult_lo_optab;
+ if (optab_handler (op, mode) != CODE_FOR_nothing)
+ {
+ for (i = 0; i < nunits; ++i)
+ sel[i] = 2 * i + (BYTES_BIG_ENDIAN ? 0 : 1);
+ if (can_vec_perm_p (mode, false, sel))
+ return 3;
+ }
+ }
+
+ return 0;
+}
+
+/* Expand a highpart multiply. */
+
+rtx
+expand_mult_highpart (enum machine_mode mode, rtx op0, rtx op1,
+ rtx target, bool uns_p)
+{
+ struct expand_operand eops[3];
+ enum insn_code icode;
+ int method, i, nunits;
+ enum machine_mode wmode;
+ rtx m1, m2, perm;
+ optab tab1, tab2;
+ rtvec v;
+
+ method = can_mult_highpart_p (mode, uns_p);
+ switch (method)
+ {
+ case 0:
+ return NULL_RTX;
+ case 1:
+ tab1 = uns_p ? umul_highpart_optab : smul_highpart_optab;
+ return expand_binop (mode, tab1, op0, op1, target, uns_p,
+ OPTAB_LIB_WIDEN);
+ case 2:
+ tab1 = uns_p ? vec_widen_umult_even_optab : vec_widen_smult_even_optab;
+ tab2 = uns_p ? vec_widen_umult_odd_optab : vec_widen_smult_odd_optab;
+ break;
+ case 3:
+ tab1 = uns_p ? vec_widen_umult_lo_optab : vec_widen_smult_lo_optab;
+ tab2 = uns_p ? vec_widen_umult_hi_optab : vec_widen_smult_hi_optab;
+ if (BYTES_BIG_ENDIAN)
+ {
+ optab t = tab1;
+ tab1 = tab2;
+ tab2 = t;
+ }
+ break;
+ default:
+ gcc_unreachable ();
+ }
+
+ icode = optab_handler (tab1, mode);
+ nunits = GET_MODE_NUNITS (mode);
+ wmode = insn_data[icode].operand[0].mode;
+ gcc_checking_assert (2 * GET_MODE_NUNITS (wmode) == nunits);
+ gcc_checking_assert (GET_MODE_SIZE (wmode) == GET_MODE_SIZE (mode));
+
+ create_output_operand (&eops[0], gen_reg_rtx (wmode), wmode);
+ create_input_operand (&eops[1], op0, mode);
+ create_input_operand (&eops[2], op1, mode);
+ expand_insn (icode, 3, eops);
+ m1 = gen_lowpart (mode, eops[0].value);
+
+ create_output_operand (&eops[0], gen_reg_rtx (wmode), wmode);
+ create_input_operand (&eops[1], op0, mode);
+ create_input_operand (&eops[2], op1, mode);
+ expand_insn (optab_handler (tab2, mode), 3, eops);
+ m2 = gen_lowpart (mode, eops[0].value);
+
+ v = rtvec_alloc (nunits);
+ if (method == 2)
+ {
+ for (i = 0; i < nunits; ++i)
+ RTVEC_ELT (v, i) = GEN_INT (!BYTES_BIG_ENDIAN + (i & ~1)
+ + ((i & 1) ? nunits : 0));
+ }
+ else
+ {
+ for (i = 0; i < nunits; ++i)
+ RTVEC_ELT (v, i) = GEN_INT (2 * i + (BYTES_BIG_ENDIAN ? 0 : 1));
+ }
+ perm = gen_rtx_CONST_VECTOR (mode, v);
+
+ return expand_vec_perm (mode, m1, m2, perm, target);
+}
/* Return true if there is a compare_and_swap pattern. */
@@ -8131,6 +7826,7 @@ expand_atomic_fetch_op (rtx target, rtx mem, rtx val, enum rtx_code code,
{
rtx libfunc;
bool fixup = false;
+ enum rtx_code orig_code = code;
libfunc = optab_libfunc (after ? optab.fetch_after
: optab.fetch_before, mode);
@@ -8154,6 +7850,9 @@ expand_atomic_fetch_op (rtx target, rtx mem, rtx val, enum rtx_code code,
true, OPTAB_LIB_WIDEN);
return result;
}
+
+ /* We need the original code for any further attempts. */
+ code = orig_code;
}
/* If nothing else has succeeded, default to a compare and swap loop. */
diff --git a/gcc/optabs.def b/gcc/optabs.def
new file mode 100644
index 00000000000..9f6b29cd3e5
--- /dev/null
+++ b/gcc/optabs.def
@@ -0,0 +1,308 @@
+/* Definitions for operation tables, or "optabs".
+ Copyright (C) 1987-2012 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+/* Entries here are categorized C, D, N, V. See genopinit.c for details
+ on the meaning of the categories and for the pattern dollar codes. */
+
+/* The extension libcalls are used for float extension. */
+OPTAB_CL(sext_optab, "extend$b$a2", SIGN_EXTEND, "extend", gen_extend_conv_libfunc)
+OPTAB_CL(trunc_optab, "trunc$b$a2", TRUNCATE, "trunc", gen_trunc_conv_libfunc)
+OPTAB_CL(zext_optab, "zero_extend$b$a2", ZERO_EXTEND, NULL, NULL)
+
+OPTAB_CL(sfix_optab, "fix$F$b$I$a2", FIX, "fix", gen_fp_to_int_conv_libfunc)
+OPTAB_CL(ufix_optab, "fixuns$F$b$a2", UNSIGNED_FIX, "fixuns", gen_fp_to_int_conv_libfunc)
+OPTAB_CL(sfloat_optab, "float$I$b$F$a2", FLOAT, "float", gen_int_to_fp_conv_libfunc)
+OPTAB_CL(ufloat_optab, "floatuns$I$b$F$a2", UNSIGNED_FLOAT, NULL, gen_ufloat_conv_libfunc)
+
+OPTAB_CL(lrint_optab, "lrint$F$b$I$a2", UNKNOWN, "lrint", gen_int_to_fp_nondecimal_conv_libfunc)
+OPTAB_CL(lround_optab, "lround$F$b$I$a2", UNKNOWN, "lround", gen_int_to_fp_nondecimal_conv_libfunc)
+OPTAB_CL(lfloor_optab, "lfloor$F$b$I$a2", UNKNOWN, "lfloor", gen_int_to_fp_nondecimal_conv_libfunc)
+OPTAB_CL(lceil_optab, "lceil$F$b$I$a2", UNKNOWN, "lceil", gen_int_to_fp_nondecimal_conv_libfunc)
+
+/* Conversions for fixed-point modes and other modes. */
+OPTAB_CL(fract_optab, "fract$b$a2", FRACT_CONVERT, "fract", gen_fract_conv_libfunc)
+OPTAB_CL(fractuns_optab, "fractuns$I$b$Q$a2", UNSIGNED_FRACT_CONVERT, "fractuns", gen_fractuns_conv_libfunc)
+OPTAB_CX(fractuns_optab, "fractuns$Q$b$I$a2")
+OPTAB_CL(satfract_optab, "satfract$b$Q$a2", SAT_FRACT, "satfract", gen_satfract_conv_libfunc)
+OPTAB_CL(satfractuns_optab, "satfractuns$I$b$Q$a2", UNSIGNED_SAT_FRACT, "satfractuns", gen_satfractuns_conv_libfunc)
+
+OPTAB_CD(sfixtrunc_optab, "fix_trunc$F$b$I$a2")
+OPTAB_CD(ufixtrunc_optab, "fixuns_trunc$F$b$I$a2")
+
+/* Misc optabs that use two modes; model them as "conversions". */
+OPTAB_CD(smul_widen_optab, "mul$b$a3")
+OPTAB_CD(umul_widen_optab, "umul$b$a3")
+OPTAB_CD(usmul_widen_optab, "usmul$b$a3")
+OPTAB_CD(smadd_widen_optab, "madd$b$a4")
+OPTAB_CD(umadd_widen_optab, "umadd$b$a4")
+OPTAB_CD(ssmadd_widen_optab, "ssmadd$b$a4")
+OPTAB_CD(usmadd_widen_optab, "usmadd$b$a4")
+OPTAB_CD(smsub_widen_optab, "msub$b$a4")
+OPTAB_CD(umsub_widen_optab, "umsub$b$a4")
+OPTAB_CD(ssmsub_widen_optab, "ssmsub$b$a4")
+OPTAB_CD(usmsub_widen_optab, "usmsub$a$b4")
+OPTAB_CD(vec_load_lanes_optab, "vec_load_lanes$a$b")
+OPTAB_CD(vec_store_lanes_optab, "vec_store_lanes$a$b")
+OPTAB_CD(vcond_optab, "vcond$a$b")
+OPTAB_CD(vcondu_optab, "vcondu$a$b")
+
+OPTAB_NL(add_optab, "add$P$a3", PLUS, "add", '3', gen_int_fp_fixed_libfunc)
+OPTAB_NX(add_optab, "add$F$a3")
+OPTAB_NX(add_optab, "add$Q$a3")
+OPTAB_VL(addv_optab, "addv$I$a3", PLUS, "add", '3', gen_intv_fp_libfunc)
+OPTAB_VX(addv_optab, "add$F$a3")
+OPTAB_NL(ssadd_optab, "ssadd$Q$a3", SS_PLUS, "ssadd", '3', gen_signed_fixed_libfunc)
+OPTAB_NL(usadd_optab, "usadd$Q$a3", US_PLUS, "usadd", '3', gen_unsigned_fixed_libfunc)
+OPTAB_NL(sub_optab, "sub$P$a3", MINUS, "sub", '3', gen_int_fp_fixed_libfunc)
+OPTAB_NX(sub_optab, "sub$F$a3")
+OPTAB_NX(sub_optab, "sub$Q$a3")
+OPTAB_VL(subv_optab, "subv$I$a3", MINUS, "sub", '3', gen_intv_fp_libfunc)
+OPTAB_VX(subv_optab, "sub$F$a3")
+OPTAB_NL(sssub_optab, "sssub$Q$a3", SS_MINUS, "sssub", '3', gen_signed_fixed_libfunc)
+OPTAB_NL(ussub_optab, "ussub$Q$a3", US_MINUS, "ussub", '3', gen_unsigned_fixed_libfunc)
+OPTAB_NL(smul_optab, "mul$Q$a3", MULT, "mul", '3', gen_int_fp_fixed_libfunc)
+OPTAB_NX(smul_optab, "mul$P$a3")
+OPTAB_NX(smul_optab, "mul$F$a3")
+OPTAB_VL(smulv_optab, "mulv$I$a3", MULT, "mul", '3', gen_intv_fp_libfunc)
+OPTAB_VX(smulv_optab, "mul$F$a3")
+OPTAB_NL(ssmul_optab, "ssmul$Q$a3", SS_MULT, "ssmul", '3', gen_signed_fixed_libfunc)
+OPTAB_NL(usmul_optab, "usmul$Q$a3", US_MULT, "usmul", '3', gen_unsigned_fixed_libfunc)
+OPTAB_NL(sdiv_optab, "div$a3", DIV, "div", '3', gen_int_fp_signed_fixed_libfunc)
+OPTAB_VL(sdivv_optab, "divv$I$a3", DIV, "divv", '3', gen_int_libfunc)
+OPTAB_VX(sdivv_optab, "div$F$a3")
+OPTAB_NL(ssdiv_optab, "ssdiv$Q$a3", SS_DIV, "ssdiv", '3', gen_signed_fixed_libfunc)
+OPTAB_NL(udiv_optab, "udiv$I$a3", UDIV, "udiv", '3', gen_int_unsigned_fixed_libfunc)
+OPTAB_NX(udiv_optab, "udiv$Q$a3")
+OPTAB_NL(usdiv_optab, "usdiv$Q$a3", US_DIV, "usdiv", '3', gen_unsigned_fixed_libfunc)
+OPTAB_NL(sdivmod_optab, "divmod$a4", UNKNOWN, "divmod", '4', gen_int_libfunc)
+OPTAB_NL(udivmod_optab, "udivmod$a4", UNKNOWN, "udivmod", '4', gen_int_libfunc)
+OPTAB_NL(smod_optab, "mod$a3", MOD, "mod", '3', gen_int_libfunc)
+OPTAB_NL(umod_optab, "umod$a3", UMOD, "umod", '3', gen_int_libfunc)
+OPTAB_NL(ftrunc_optab, "ftrunc$F$a2", UNKNOWN, "ftrunc", '2', gen_fp_libfunc)
+OPTAB_NL(and_optab, "and$a3", AND, "and", '3', gen_int_libfunc)
+OPTAB_NL(ior_optab, "ior$a3", IOR, "ior", '3', gen_int_libfunc)
+OPTAB_NL(xor_optab, "xor$a3", XOR, "xor", '3', gen_int_libfunc)
+OPTAB_NL(ashl_optab, "ashl$a3", ASHIFT, "ashl", '3', gen_int_fixed_libfunc)
+OPTAB_NL(ssashl_optab, "ssashl$Q$a3", SS_ASHIFT, "ssashl", '3', gen_signed_fixed_libfunc)
+OPTAB_NL(usashl_optab, "usashl$Q$a3", US_ASHIFT, "usashl", '3', gen_unsigned_fixed_libfunc)
+OPTAB_NL(ashr_optab, "ashr$a3", ASHIFTRT, "ashr", '3', gen_int_signed_fixed_libfunc)
+OPTAB_NL(lshr_optab, "lshr$a3", LSHIFTRT, "lshr", '3', gen_int_unsigned_fixed_libfunc)
+OPTAB_NC(rotl_optab, "rotl$a3", ROTATE)
+OPTAB_NC(rotr_optab, "rotr$a3", ROTATERT)
+OPTAB_VC(vashl_optab, "vashl$a3", ASHIFT)
+OPTAB_VC(vashr_optab, "vashr$a3", ASHIFTRT)
+OPTAB_VC(vlshr_optab, "vlshr$a3", LSHIFTRT)
+OPTAB_VC(vrotl_optab, "vrotl$a3", ROTATE)
+OPTAB_VC(vrotr_optab, "vrotr$a3", ROTATERT)
+OPTAB_NL(smin_optab, "smin$a3", SMIN, "min", '3', gen_int_fp_libfunc)
+OPTAB_NL(smax_optab, "smax$a3", SMAX, "max", '3', gen_int_fp_libfunc)
+OPTAB_NL(umin_optab, "umin$I$a3", UMIN, "umin", '3', gen_int_libfunc)
+OPTAB_NL(umax_optab, "umax$I$a3", UMAX, "umax", '3', gen_int_libfunc)
+
+OPTAB_NL(neg_optab, "neg$P$a2", NEG, "neg", '2', gen_int_fp_fixed_libfunc)
+OPTAB_NX(neg_optab, "neg$F$a2")
+OPTAB_NX(neg_optab, "neg$Q$a2")
+OPTAB_VL(negv_optab, "negv$I$a2", NEG, "neg", '2', gen_intv_fp_libfunc)
+OPTAB_VX(negv_optab, "neg$F$a2")
+OPTAB_NL(ssneg_optab, "ssneg$Q$a2", SS_NEG, "ssneg", '2', gen_signed_fixed_libfunc)
+OPTAB_NL(usneg_optab, "usneg$Q$a2", US_NEG, "usneg", '2', gen_unsigned_fixed_libfunc)
+OPTAB_NC(abs_optab, "abs$P$a2", ABS)
+OPTAB_NX(abs_optab, "abs$F$a2")
+OPTAB_VC(absv_optab, "absv$I$a2", ABS)
+OPTAB_VX(absv_optab, "abs$F$a2")
+OPTAB_NL(one_cmpl_optab, "one_cmpl$a2", NOT, "one_cmpl", '2', gen_int_libfunc)
+OPTAB_NC(bswap_optab, "bswap$a2", BSWAP)
+OPTAB_NL(ffs_optab, "ffs$a2", FFS, "ffs", '2', gen_int_libfunc)
+OPTAB_NL(clz_optab, "clz$a2", CLZ, "clz", '2', gen_int_libfunc)
+OPTAB_NL(ctz_optab, "ctz$a2", CTZ, "ctz", '2', gen_int_libfunc)
+OPTAB_NL(clrsb_optab, "clrsb$a2", CLRSB, "clrsb", '2', gen_int_libfunc)
+OPTAB_NL(popcount_optab, "popcount$a2", POPCOUNT, "popcount", '2', gen_int_libfunc)
+OPTAB_NL(parity_optab, "parity$a2", PARITY, "parity", '2', gen_int_libfunc)
+
+/* Comparison libcalls for integers MUST come in pairs, signed/unsigned. */
+OPTAB_NL(cmp_optab, NULL, UNKNOWN, "cmp", '2', gen_int_fp_fixed_libfunc)
+OPTAB_NL(ucmp_optab, NULL, UNKNOWN, "ucmp", '2', gen_int_libfunc)
+
+/* EQ etc are floating point comparisons. */
+OPTAB_NL(eq_optab, NULL, EQ, "eq", '2', gen_fp_libfunc)
+OPTAB_NL(ne_optab, NULL, NE, "ne", '2', gen_fp_libfunc)
+OPTAB_NL(gt_optab, NULL, GT, "gt", '2', gen_fp_libfunc)
+OPTAB_NL(ge_optab, NULL, GE, "ge", '2', gen_fp_libfunc)
+OPTAB_NL(lt_optab, NULL, LT, "lt", '2', gen_fp_libfunc)
+OPTAB_NL(le_optab, NULL, LE, "le", '2', gen_fp_libfunc)
+OPTAB_NL(unord_optab, NULL, UNORDERED, "unord", '2', gen_fp_libfunc)
+
+OPTAB_NL(powi_optab, NULL, UNKNOWN, "powi", '2', gen_fp_libfunc)
+
+/* These are all initialized individually, on a per-host basis. */
+OPTAB_NC(sqrt_optab, "sqrt$a2", SQRT)
+OPTAB_NC(sync_old_add_optab, "sync_old_add$I$a", UNKNOWN)
+OPTAB_NC(sync_old_sub_optab, "sync_old_sub$I$a", UNKNOWN)
+OPTAB_NC(sync_old_ior_optab, "sync_old_ior$I$a", UNKNOWN)
+OPTAB_NC(sync_old_and_optab, "sync_old_and$I$a", UNKNOWN)
+OPTAB_NC(sync_old_xor_optab, "sync_old_xor$I$a", UNKNOWN)
+OPTAB_NC(sync_old_nand_optab, "sync_old_nand$I$a", UNKNOWN)
+OPTAB_NC(sync_new_add_optab, "sync_new_add$I$a", UNKNOWN)
+OPTAB_NC(sync_new_sub_optab, "sync_new_sub$I$a", UNKNOWN)
+OPTAB_NC(sync_new_ior_optab, "sync_new_ior$I$a", UNKNOWN)
+OPTAB_NC(sync_new_and_optab, "sync_new_and$I$a", UNKNOWN)
+OPTAB_NC(sync_new_xor_optab, "sync_new_xor$I$a", UNKNOWN)
+OPTAB_NC(sync_new_nand_optab, "sync_new_nand$I$a", UNKNOWN)
+OPTAB_NC(sync_compare_and_swap_optab, "sync_compare_and_swap$I$a", UNKNOWN)
+OPTAB_NC(sync_lock_test_and_set_optab, "sync_lock_test_and_set$I$a", UNKNOWN)
+
+OPTAB_DC(mov_optab, "mov$a", SET)
+OPTAB_DC(movstrict_optab, "movstrict$a", STRICT_LOW_PART)
+OPTAB_D (movmisalign_optab, "movmisalign$a")
+OPTAB_D (storent_optab, "storent$a")
+OPTAB_D (push_optab, "push$a1")
+OPTAB_D (reload_in_optab, "reload_in$a")
+OPTAB_D (reload_out_optab, "reload_out$a")
+
+OPTAB_DC(cbranch_optab, "cbranch$a4", COMPARE)
+OPTAB_D (addcc_optab, "add$acc")
+OPTAB_D (movcc_optab, "mov$acc")
+OPTAB_D (cmov_optab, "cmov$a6")
+OPTAB_D (cstore_optab, "cstore$a4")
+OPTAB_D (ctrap_optab, "ctrap$a4")
+
+OPTAB_D (smul_highpart_optab, "smul$a3_highpart")
+OPTAB_D (umul_highpart_optab, "umul$a3_highpart")
+
+OPTAB_D (cmpmem_optab, "cmpmem$a")
+OPTAB_D (cmpstr_optab, "cmpstr$a")
+OPTAB_D (cmpstrn_optab, "cmpstrn$a")
+OPTAB_D (movmem_optab, "movmem$a")
+OPTAB_D (setmem_optab, "setmem$a")
+OPTAB_D (strlen_optab, "strlen$a")
+
+OPTAB_DC(fma_optab, "fma$a4", FMA)
+OPTAB_D (fms_optab, "fms$a4")
+OPTAB_D (fnma_optab, "fnma$a4")
+OPTAB_D (fnms_optab, "fnms$a4")
+
+OPTAB_D (rint_optab, "rint$a2")
+OPTAB_D (round_optab, "round$a2")
+OPTAB_D (floor_optab, "floor$a2")
+OPTAB_D (ceil_optab, "ceil$a2")
+OPTAB_D (btrunc_optab, "btrunc$a2")
+OPTAB_D (nearbyint_optab, "nearbyint$a2")
+
+OPTAB_D (acos_optab, "acos$a2")
+OPTAB_D (asin_optab, "asin$a2")
+OPTAB_D (atan2_optab, "atan2$a3")
+OPTAB_D (atan_optab, "atan$a2")
+OPTAB_D (copysign_optab, "copysign$F$a3")
+OPTAB_D (cos_optab, "cos$a2")
+OPTAB_D (exp10_optab, "exp10$a2")
+OPTAB_D (exp2_optab, "exp2$a2")
+OPTAB_D (exp_optab, "exp$a2")
+OPTAB_D (expm1_optab, "expm1$a2")
+OPTAB_D (fmod_optab, "fmod$a3")
+OPTAB_D (ilogb_optab, "ilogb$a2")
+OPTAB_D (isinf_optab, "isinf$a2")
+OPTAB_D (ldexp_optab, "ldexp$a3")
+OPTAB_D (log10_optab, "log10$a2")
+OPTAB_D (log1p_optab, "log1p$a2")
+OPTAB_D (log2_optab, "log2$a2")
+OPTAB_D (log_optab, "log$a2")
+OPTAB_D (logb_optab, "logb$a2")
+OPTAB_D (pow_optab, "pow$a3")
+OPTAB_D (remainder_optab, "remainder$a3")
+OPTAB_D (scalb_optab, "scalb$a3")
+OPTAB_D (signbit_optab, "signbit$F$a2")
+OPTAB_D (significand_optab, "significand$a2")
+OPTAB_D (sin_optab, "sin$a2")
+OPTAB_D (sincos_optab, "sincos$a3")
+OPTAB_D (tan_optab, "tan$a2")
+
+OPTAB_D (reduc_smax_optab, "reduc_smax_$a")
+OPTAB_D (reduc_smin_optab, "reduc_smin_$a")
+OPTAB_D (reduc_splus_optab, "reduc_splus_$a")
+OPTAB_D (reduc_umax_optab, "reduc_umax_$a")
+OPTAB_D (reduc_umin_optab, "reduc_umin_$a")
+OPTAB_D (reduc_uplus_optab, "reduc_uplus_$a")
+OPTAB_D (sdot_prod_optab, "sdot_prod$I$a")
+OPTAB_D (ssum_widen_optab, "widen_ssum$I$a3")
+OPTAB_D (udot_prod_optab, "udot_prod$I$a")
+OPTAB_D (usum_widen_optab, "widen_usum$I$a3")
+OPTAB_D (vec_extract_optab, "vec_extract$a")
+OPTAB_D (vec_init_optab, "vec_init$a")
+OPTAB_D (vec_pack_sfix_trunc_optab, "vec_pack_sfix_trunc_$a")
+OPTAB_D (vec_pack_ssat_optab, "vec_pack_ssat_$a")
+OPTAB_D (vec_pack_trunc_optab, "vec_pack_trunc_$a")
+OPTAB_D (vec_pack_ufix_trunc_optab, "vec_pack_ufix_trunc_$a")
+OPTAB_D (vec_pack_usat_optab, "vec_pack_usat_$a")
+OPTAB_D (vec_perm_const_optab, "vec_perm_const$a")
+OPTAB_D (vec_perm_optab, "vec_perm$a")
+OPTAB_D (vec_realign_load_optab, "vec_realign_load_$a")
+OPTAB_D (vec_set_optab, "vec_set$a")
+OPTAB_D (vec_shl_optab, "vec_shl_$a")
+OPTAB_D (vec_shr_optab, "vec_shr_$a")
+OPTAB_D (vec_unpacks_float_hi_optab, "vec_unpacks_float_hi_$a")
+OPTAB_D (vec_unpacks_float_lo_optab, "vec_unpacks_float_lo_$a")
+OPTAB_D (vec_unpacks_hi_optab, "vec_unpacks_hi_$a")
+OPTAB_D (vec_unpacks_lo_optab, "vec_unpacks_lo_$a")
+OPTAB_D (vec_unpacku_float_hi_optab, "vec_unpacku_float_hi_$a")
+OPTAB_D (vec_unpacku_float_lo_optab, "vec_unpacku_float_lo_$a")
+OPTAB_D (vec_unpacku_hi_optab, "vec_unpacku_hi_$a")
+OPTAB_D (vec_unpacku_lo_optab, "vec_unpacku_lo_$a")
+OPTAB_D (vec_widen_smult_even_optab, "vec_widen_smult_even_$a")
+OPTAB_D (vec_widen_smult_hi_optab, "vec_widen_smult_hi_$a")
+OPTAB_D (vec_widen_smult_lo_optab, "vec_widen_smult_lo_$a")
+OPTAB_D (vec_widen_smult_odd_optab, "vec_widen_smult_odd_$a")
+OPTAB_D (vec_widen_sshiftl_hi_optab, "vec_widen_sshiftl_hi_$a")
+OPTAB_D (vec_widen_sshiftl_lo_optab, "vec_widen_sshiftl_lo_$a")
+OPTAB_D (vec_widen_umult_even_optab, "vec_widen_umult_even_$a")
+OPTAB_D (vec_widen_umult_hi_optab, "vec_widen_umult_hi_$a")
+OPTAB_D (vec_widen_umult_lo_optab, "vec_widen_umult_lo_$a")
+OPTAB_D (vec_widen_umult_odd_optab, "vec_widen_umult_odd_$a")
+OPTAB_D (vec_widen_ushiftl_hi_optab, "vec_widen_ushiftl_hi_$a")
+OPTAB_D (vec_widen_ushiftl_lo_optab, "vec_widen_ushiftl_lo_$a")
+
+OPTAB_D (sync_add_optab, "sync_add$I$a")
+OPTAB_D (sync_and_optab, "sync_and$I$a")
+OPTAB_D (sync_ior_optab, "sync_ior$I$a")
+OPTAB_D (sync_lock_release_optab, "sync_lock_release$I$a")
+OPTAB_D (sync_nand_optab, "sync_nand$I$a")
+OPTAB_D (sync_sub_optab, "sync_sub$I$a")
+OPTAB_D (sync_xor_optab, "sync_xor$I$a")
+
+OPTAB_D (atomic_add_fetch_optab, "atomic_add_fetch$I$a")
+OPTAB_D (atomic_add_optab, "atomic_add$I$a")
+OPTAB_D (atomic_and_fetch_optab, "atomic_and_fetch$I$a")
+OPTAB_D (atomic_and_optab, "atomic_and$I$a")
+OPTAB_D (atomic_compare_and_swap_optab, "atomic_compare_and_swap$I$a")
+OPTAB_D (atomic_exchange_optab, "atomic_exchange$I$a")
+OPTAB_D (atomic_fetch_add_optab, "atomic_fetch_add$I$a")
+OPTAB_D (atomic_fetch_and_optab, "atomic_fetch_and$I$a")
+OPTAB_D (atomic_fetch_nand_optab, "atomic_fetch_nand$I$a")
+OPTAB_D (atomic_fetch_or_optab, "atomic_fetch_or$I$a")
+OPTAB_D (atomic_fetch_sub_optab, "atomic_fetch_sub$I$a")
+OPTAB_D (atomic_fetch_xor_optab, "atomic_fetch_xor$I$a")
+OPTAB_D (atomic_load_optab, "atomic_load$I$a")
+OPTAB_D (atomic_nand_fetch_optab, "atomic_nand_fetch$I$a")
+OPTAB_D (atomic_nand_optab, "atomic_nand$I$a")
+OPTAB_D (atomic_or_fetch_optab, "atomic_or_fetch$I$a")
+OPTAB_D (atomic_or_optab, "atomic_or$I$a")
+OPTAB_D (atomic_store_optab, "atomic_store$I$a")
+OPTAB_D (atomic_sub_fetch_optab, "atomic_sub_fetch$I$a")
+OPTAB_D (atomic_sub_optab, "atomic_sub$I$a")
+OPTAB_D (atomic_xor_fetch_optab, "atomic_xor_fetch$I$a")
+OPTAB_D (atomic_xor_optab, "atomic_xor$I$a")
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 70a7395cc05..e0be2bac4fd 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -1,6 +1,6 @@
/* Definitions for code generation pass of GNU compiler.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2010, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -22,814 +22,58 @@ along with GCC; see the file COPYING3. If not see
#define GCC_OPTABS_H
#include "insn-codes.h"
+#include "insn-opinit.h"
-/* Optabs are tables saying how to generate insn bodies
- for various machine modes and numbers of operands.
- Each optab applies to one operation.
+typedef enum optab_tag optab;
+typedef enum optab_tag convert_optab;
+typedef enum optab_tag direct_optab;
- For example, add_optab applies to addition.
-
- The `lib_call' slot is the name of the library function that
- can be used to perform the operation.
-
- A few optabs, such as move_optab, are used by special code. */
-
-struct optab_handlers
-{
- /* I - CODE_FOR_nothing, where I is either the insn code of the
- associated insn generator or CODE_FOR_nothing if there is no such
- insn on the target machine. */
- int insn_code;
-};
-
-struct widening_optab_handlers
-{
- struct optab_handlers handlers[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
-};
-
-struct optab_d
+struct optab_libcall_d
{
- enum rtx_code code;
char libcall_suffix;
const char *libcall_basename;
- void (*libcall_gen)(struct optab_d *, const char *name, char suffix,
- enum machine_mode);
- struct optab_handlers handlers[NUM_MACHINE_MODES];
- struct widening_optab_handlers *widening;
+ void (*libcall_gen) (optab, const char *name,
+ char suffix, enum machine_mode);
};
-typedef struct optab_d * optab;
-/* A convert_optab is for some sort of conversion operation between
- modes. The first array index is the destination mode, the second
- is the source mode. */
-struct convert_optab_d
+struct convert_optab_libcall_d
{
- enum rtx_code code;
const char *libcall_basename;
- void (*libcall_gen)(struct convert_optab_d *, const char *name,
- enum machine_mode,
- enum machine_mode);
- struct optab_handlers handlers[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
+ void (*libcall_gen) (convert_optab, const char *name,
+ enum machine_mode, enum machine_mode);
};
-typedef struct convert_optab_d *convert_optab;
/* Given an enum insn_code, access the function to construct
the body of that kind of insn. */
#define GEN_FCN(CODE) (insn_data[CODE].genfun)
-/* Enumeration of valid indexes into optab_table. */
-enum optab_index
-{
- /* Fixed-point operators with signed/unsigned saturation */
- OTI_ssadd,
- OTI_usadd,
- OTI_sssub,
- OTI_ussub,
- OTI_ssmul,
- OTI_usmul,
- OTI_ssdiv,
- OTI_usdiv,
- OTI_ssneg,
- OTI_usneg,
- OTI_ssashl,
- OTI_usashl,
-
- OTI_add,
- OTI_addv,
- OTI_sub,
- OTI_subv,
-
- /* Signed and fp multiply */
- OTI_smul,
- OTI_smulv,
- /* Signed multiply, return high word */
- OTI_smul_highpart,
- OTI_umul_highpart,
- /* Signed multiply with result one machine mode wider than args */
- OTI_smul_widen,
- OTI_umul_widen,
- /* Widening multiply of one unsigned and one signed operand. */
- OTI_usmul_widen,
- /* Signed multiply and add with the result and addend one machine mode
- wider than the multiplicand and multiplier. */
- OTI_smadd_widen,
- /* Unsigned multiply and add with the result and addend one machine mode
- wider than the multiplicand and multiplier. */
- OTI_umadd_widen,
- /* Signed multiply and add with the result and addend one machine mode
- wider than the multiplicand and multiplier.
- All involved operations are saturating. */
- OTI_ssmadd_widen,
- /* Unsigned multiply and add with the result and addend one machine mode
- wider than the multiplicand and multiplier.
- All involved operations are saturating. */
- OTI_usmadd_widen,
- /* Signed multiply and subtract the result and minuend one machine mode
- wider than the multiplicand and multiplier. */
- OTI_smsub_widen,
- /* Unsigned multiply and subtract the result and minuend one machine mode
- wider than the multiplicand and multiplier. */
- OTI_umsub_widen,
- /* Signed multiply and subtract the result and minuend one machine mode
- wider than the multiplicand and multiplier.
- All involved operations are saturating. */
- OTI_ssmsub_widen,
- /* Unsigned multiply and subtract the result and minuend one machine mode
- wider than the multiplicand and multiplier.
- All involved operations are saturating. */
- OTI_usmsub_widen,
-
- /* Signed divide */
- OTI_sdiv,
- OTI_sdivv,
- /* Signed divide-and-remainder in one */
- OTI_sdivmod,
- OTI_udiv,
- OTI_udivmod,
- /* Signed remainder */
- OTI_smod,
- OTI_umod,
- /* Floating point remainder functions */
- OTI_fmod,
- OTI_remainder,
- /* Convert float to integer in float fmt */
- OTI_ftrunc,
-
- /* Logical and */
- OTI_and,
- /* Logical or */
- OTI_ior,
- /* Logical xor */
- OTI_xor,
-
- /* Arithmetic shift left */
- OTI_ashl,
- /* Logical shift right */
- OTI_lshr,
- /* Arithmetic shift right */
- OTI_ashr,
- /* Rotate left */
- OTI_rotl,
- /* Rotate right */
- OTI_rotr,
-
- /* Arithmetic shift left of vector by vector */
- OTI_vashl,
- /* Logical shift right of vector by vector */
- OTI_vlshr,
- /* Arithmetic shift right of vector by vector */
- OTI_vashr,
- /* Rotate left of vector by vector */
- OTI_vrotl,
- /* Rotate right of vector by vector */
- OTI_vrotr,
-
- /* Signed and floating-point minimum value */
- OTI_smin,
- /* Signed and floating-point maximum value */
- OTI_smax,
- /* Unsigned minimum value */
- OTI_umin,
- /* Unsigned maximum value */
- OTI_umax,
- /* Power */
- OTI_pow,
- /* Arc tangent of y/x */
- OTI_atan2,
- /* Floating multiply/add */
- OTI_fma,
- OTI_fms,
- OTI_fnma,
- OTI_fnms,
-
- /* Move instruction. */
- OTI_mov,
- /* Move, preserving high part of register. */
- OTI_movstrict,
- /* Move, with a misaligned memory. */
- OTI_movmisalign,
- /* Nontemporal store. */
- OTI_storent,
-
- /* Unary operations */
- /* Negation */
- OTI_neg,
- OTI_negv,
- /* Abs value */
- OTI_abs,
- OTI_absv,
- /* Byteswap */
- OTI_bswap,
- /* Bitwise not */
- OTI_one_cmpl,
- /* Bit scanning and counting */
- OTI_ffs,
- OTI_clz,
- OTI_ctz,
- OTI_clrsb,
- OTI_popcount,
- OTI_parity,
- /* Square root */
- OTI_sqrt,
- /* Sine-Cosine */
- OTI_sincos,
- /* Sine */
- OTI_sin,
- /* Inverse sine */
- OTI_asin,
- /* Cosine */
- OTI_cos,
- /* Inverse cosine */
- OTI_acos,
- /* Exponential */
- OTI_exp,
- /* Base-10 Exponential */
- OTI_exp10,
- /* Base-2 Exponential */
- OTI_exp2,
- /* Exponential - 1*/
- OTI_expm1,
- /* Load exponent of a floating point number */
- OTI_ldexp,
- /* Multiply floating-point number by integral power of radix */
- OTI_scalb,
- /* Mantissa of a floating-point number */
- OTI_significand,
- /* Radix-independent exponent */
- OTI_logb,
- OTI_ilogb,
- /* Natural Logarithm */
- OTI_log,
- /* Base-10 Logarithm */
- OTI_log10,
- /* Base-2 Logarithm */
- OTI_log2,
- /* logarithm of 1 plus argument */
- OTI_log1p,
- /* Rounding functions */
- OTI_floor,
- OTI_ceil,
- OTI_btrunc,
- OTI_round,
- OTI_nearbyint,
- OTI_rint,
- /* Tangent */
- OTI_tan,
- /* Inverse tangent */
- OTI_atan,
- /* Copy sign */
- OTI_copysign,
- /* Signbit */
- OTI_signbit,
- /* Test for infinite value */
- OTI_isinf,
-
- /* Compare insn; two operands. Used only for libcalls. */
- OTI_cmp,
- OTI_ucmp,
-
- /* Floating point comparison optabs - used primarily for libfuncs */
- OTI_eq,
- OTI_ne,
- OTI_gt,
- OTI_ge,
- OTI_lt,
- OTI_le,
- OTI_unord,
-
- /* String length */
- OTI_strlen,
-
- /* Combined compare & jump/move/store flags/trap operations. */
- OTI_cbranch,
- OTI_cmov,
- OTI_cstore,
- OTI_ctrap,
-
- /* Push instruction. */
- OTI_push,
-
- /* Conditional add instruction. */
- OTI_addcc,
-
- /* Reduction operations on a vector operand. */
- OTI_reduc_smax,
- OTI_reduc_umax,
- OTI_reduc_smin,
- OTI_reduc_umin,
- OTI_reduc_splus,
- OTI_reduc_uplus,
-
- /* Summation, with result machine mode one or more wider than args. */
- OTI_ssum_widen,
- OTI_usum_widen,
-
- /* Dot product, with result machine mode one or more wider than args. */
- OTI_sdot_prod,
- OTI_udot_prod,
-
- /* Set specified field of vector operand. */
- OTI_vec_set,
- /* Extract specified field of vector operand. */
- OTI_vec_extract,
- /* Initialize vector operand. */
- OTI_vec_init,
- /* Whole vector shift. The shift amount is in bits. */
- OTI_vec_shl,
- OTI_vec_shr,
- /* Extract specified elements from vectors, for vector load. */
- OTI_vec_realign_load,
- /* Widening multiplication.
- The high/low part of the resulting vector of products is returned. */
- OTI_vec_widen_umult_hi,
- OTI_vec_widen_umult_lo,
- OTI_vec_widen_smult_hi,
- OTI_vec_widen_smult_lo,
- /* Widening shift left.
- The high/low part of the resulting vector is returned. */
- OTI_vec_widen_ushiftl_hi,
- OTI_vec_widen_ushiftl_lo,
- OTI_vec_widen_sshiftl_hi,
- OTI_vec_widen_sshiftl_lo,
- /* Extract and widen the high/low part of a vector of signed or
- floating point elements. */
- OTI_vec_unpacks_hi,
- OTI_vec_unpacks_lo,
- /* Extract and widen the high/low part of a vector of unsigned
- elements. */
- OTI_vec_unpacku_hi,
- OTI_vec_unpacku_lo,
-
- /* Extract, convert to floating point and widen the high/low part of
- a vector of signed or unsigned integer elements. */
- OTI_vec_unpacks_float_hi,
- OTI_vec_unpacks_float_lo,
- OTI_vec_unpacku_float_hi,
- OTI_vec_unpacku_float_lo,
-
- /* Narrow (demote) and merge the elements of two vectors. */
- OTI_vec_pack_trunc,
- OTI_vec_pack_usat,
- OTI_vec_pack_ssat,
-
- /* Convert to signed/unsigned integer, narrow and merge elements
- of two vectors of floating point elements. */
- OTI_vec_pack_sfix_trunc,
- OTI_vec_pack_ufix_trunc,
-
- /* Perform a raise to the power of integer. */
- OTI_powi,
-
- /* Atomic compare and swap. */
- OTI_sync_compare_and_swap,
-
- /* Atomic exchange with acquire semantics. */
- OTI_sync_lock_test_and_set,
-
- /* This second set is atomic operations in which we return the value
- that existed in memory before the operation. */
- OTI_sync_old_add,
- OTI_sync_old_sub,
- OTI_sync_old_ior,
- OTI_sync_old_and,
- OTI_sync_old_xor,
- OTI_sync_old_nand,
-
- /* This third set is atomic operations in which we return the value
- that resulted after performing the operation. */
- OTI_sync_new_add,
- OTI_sync_new_sub,
- OTI_sync_new_ior,
- OTI_sync_new_and,
- OTI_sync_new_xor,
- OTI_sync_new_nand,
-
- OTI_MAX
-};
+/* Contains the optab used for each rtx code, and vice-versa. */
+extern const optab code_to_optab_[NUM_RTX_CODE];
+extern const enum rtx_code optab_to_code_[NUM_OPTABS];
-#define ssadd_optab (&optab_table[OTI_ssadd])
-#define usadd_optab (&optab_table[OTI_usadd])
-#define sssub_optab (&optab_table[OTI_sssub])
-#define ussub_optab (&optab_table[OTI_ussub])
-#define ssmul_optab (&optab_table[OTI_ssmul])
-#define usmul_optab (&optab_table[OTI_usmul])
-#define ssdiv_optab (&optab_table[OTI_ssdiv])
-#define usdiv_optab (&optab_table[OTI_usdiv])
-#define ssneg_optab (&optab_table[OTI_ssneg])
-#define usneg_optab (&optab_table[OTI_usneg])
-#define ssashl_optab (&optab_table[OTI_ssashl])
-#define usashl_optab (&optab_table[OTI_usashl])
-
-#define add_optab (&optab_table[OTI_add])
-#define sub_optab (&optab_table[OTI_sub])
-#define smul_optab (&optab_table[OTI_smul])
-#define addv_optab (&optab_table[OTI_addv])
-#define subv_optab (&optab_table[OTI_subv])
-#define smul_highpart_optab (&optab_table[OTI_smul_highpart])
-#define umul_highpart_optab (&optab_table[OTI_umul_highpart])
-#define smul_widen_optab (&optab_table[OTI_smul_widen])
-#define umul_widen_optab (&optab_table[OTI_umul_widen])
-#define usmul_widen_optab (&optab_table[OTI_usmul_widen])
-#define smadd_widen_optab (&optab_table[OTI_smadd_widen])
-#define umadd_widen_optab (&optab_table[OTI_umadd_widen])
-#define ssmadd_widen_optab (&optab_table[OTI_ssmadd_widen])
-#define usmadd_widen_optab (&optab_table[OTI_usmadd_widen])
-#define smsub_widen_optab (&optab_table[OTI_smsub_widen])
-#define umsub_widen_optab (&optab_table[OTI_umsub_widen])
-#define ssmsub_widen_optab (&optab_table[OTI_ssmsub_widen])
-#define usmsub_widen_optab (&optab_table[OTI_usmsub_widen])
-#define sdiv_optab (&optab_table[OTI_sdiv])
-#define smulv_optab (&optab_table[OTI_smulv])
-#define sdivv_optab (&optab_table[OTI_sdivv])
-#define sdivmod_optab (&optab_table[OTI_sdivmod])
-#define udiv_optab (&optab_table[OTI_udiv])
-#define udivmod_optab (&optab_table[OTI_udivmod])
-#define smod_optab (&optab_table[OTI_smod])
-#define umod_optab (&optab_table[OTI_umod])
-#define fmod_optab (&optab_table[OTI_fmod])
-#define remainder_optab (&optab_table[OTI_remainder])
-#define ftrunc_optab (&optab_table[OTI_ftrunc])
-#define and_optab (&optab_table[OTI_and])
-#define ior_optab (&optab_table[OTI_ior])
-#define xor_optab (&optab_table[OTI_xor])
-#define ashl_optab (&optab_table[OTI_ashl])
-#define lshr_optab (&optab_table[OTI_lshr])
-#define ashr_optab (&optab_table[OTI_ashr])
-#define rotl_optab (&optab_table[OTI_rotl])
-#define rotr_optab (&optab_table[OTI_rotr])
-#define vashl_optab (&optab_table[OTI_vashl])
-#define vlshr_optab (&optab_table[OTI_vlshr])
-#define vashr_optab (&optab_table[OTI_vashr])
-#define vrotl_optab (&optab_table[OTI_vrotl])
-#define vrotr_optab (&optab_table[OTI_vrotr])
-#define smin_optab (&optab_table[OTI_smin])
-#define smax_optab (&optab_table[OTI_smax])
-#define umin_optab (&optab_table[OTI_umin])
-#define umax_optab (&optab_table[OTI_umax])
-#define pow_optab (&optab_table[OTI_pow])
-#define atan2_optab (&optab_table[OTI_atan2])
-#define fma_optab (&optab_table[OTI_fma])
-#define fms_optab (&optab_table[OTI_fms])
-#define fnma_optab (&optab_table[OTI_fnma])
-#define fnms_optab (&optab_table[OTI_fnms])
-
-#define mov_optab (&optab_table[OTI_mov])
-#define movstrict_optab (&optab_table[OTI_movstrict])
-#define movmisalign_optab (&optab_table[OTI_movmisalign])
-#define storent_optab (&optab_table[OTI_storent])
-
-#define neg_optab (&optab_table[OTI_neg])
-#define negv_optab (&optab_table[OTI_negv])
-#define abs_optab (&optab_table[OTI_abs])
-#define absv_optab (&optab_table[OTI_absv])
-#define one_cmpl_optab (&optab_table[OTI_one_cmpl])
-#define bswap_optab (&optab_table[OTI_bswap])
-#define ffs_optab (&optab_table[OTI_ffs])
-#define clz_optab (&optab_table[OTI_clz])
-#define ctz_optab (&optab_table[OTI_ctz])
-#define clrsb_optab (&optab_table[OTI_clrsb])
-#define popcount_optab (&optab_table[OTI_popcount])
-#define parity_optab (&optab_table[OTI_parity])
-#define sqrt_optab (&optab_table[OTI_sqrt])
-#define sincos_optab (&optab_table[OTI_sincos])
-#define sin_optab (&optab_table[OTI_sin])
-#define asin_optab (&optab_table[OTI_asin])
-#define cos_optab (&optab_table[OTI_cos])
-#define acos_optab (&optab_table[OTI_acos])
-#define exp_optab (&optab_table[OTI_exp])
-#define exp10_optab (&optab_table[OTI_exp10])
-#define exp2_optab (&optab_table[OTI_exp2])
-#define expm1_optab (&optab_table[OTI_expm1])
-#define ldexp_optab (&optab_table[OTI_ldexp])
-#define scalb_optab (&optab_table[OTI_scalb])
-#define significand_optab (&optab_table[OTI_significand])
-#define logb_optab (&optab_table[OTI_logb])
-#define ilogb_optab (&optab_table[OTI_ilogb])
-#define log_optab (&optab_table[OTI_log])
-#define log10_optab (&optab_table[OTI_log10])
-#define log2_optab (&optab_table[OTI_log2])
-#define log1p_optab (&optab_table[OTI_log1p])
-#define floor_optab (&optab_table[OTI_floor])
-#define ceil_optab (&optab_table[OTI_ceil])
-#define btrunc_optab (&optab_table[OTI_btrunc])
-#define round_optab (&optab_table[OTI_round])
-#define nearbyint_optab (&optab_table[OTI_nearbyint])
-#define rint_optab (&optab_table[OTI_rint])
-#define tan_optab (&optab_table[OTI_tan])
-#define atan_optab (&optab_table[OTI_atan])
-#define copysign_optab (&optab_table[OTI_copysign])
-#define signbit_optab (&optab_table[OTI_signbit])
-#define isinf_optab (&optab_table[OTI_isinf])
-
-#define cmp_optab (&optab_table[OTI_cmp])
-#define ucmp_optab (&optab_table[OTI_ucmp])
-
-#define eq_optab (&optab_table[OTI_eq])
-#define ne_optab (&optab_table[OTI_ne])
-#define gt_optab (&optab_table[OTI_gt])
-#define ge_optab (&optab_table[OTI_ge])
-#define lt_optab (&optab_table[OTI_lt])
-#define le_optab (&optab_table[OTI_le])
-#define unord_optab (&optab_table[OTI_unord])
-
-#define strlen_optab (&optab_table[OTI_strlen])
-
-#define cbranch_optab (&optab_table[OTI_cbranch])
-#define cmov_optab (&optab_table[OTI_cmov])
-#define cstore_optab (&optab_table[OTI_cstore])
-#define ctrap_optab (&optab_table[OTI_ctrap])
-
-#define push_optab (&optab_table[OTI_push])
-#define addcc_optab (&optab_table[OTI_addcc])
-
-#define reduc_smax_optab (&optab_table[OTI_reduc_smax])
-#define reduc_umax_optab (&optab_table[OTI_reduc_umax])
-#define reduc_smin_optab (&optab_table[OTI_reduc_smin])
-#define reduc_umin_optab (&optab_table[OTI_reduc_umin])
-#define reduc_splus_optab (&optab_table[OTI_reduc_splus])
-#define reduc_uplus_optab (&optab_table[OTI_reduc_uplus])
-
-#define ssum_widen_optab (&optab_table[OTI_ssum_widen])
-#define usum_widen_optab (&optab_table[OTI_usum_widen])
-#define sdot_prod_optab (&optab_table[OTI_sdot_prod])
-#define udot_prod_optab (&optab_table[OTI_udot_prod])
-
-#define vec_set_optab (&optab_table[OTI_vec_set])
-#define vec_extract_optab (&optab_table[OTI_vec_extract])
-#define vec_init_optab (&optab_table[OTI_vec_init])
-#define vec_shl_optab (&optab_table[OTI_vec_shl])
-#define vec_shr_optab (&optab_table[OTI_vec_shr])
-#define vec_realign_load_optab (&optab_table[OTI_vec_realign_load])
-#define vec_widen_umult_hi_optab (&optab_table[OTI_vec_widen_umult_hi])
-#define vec_widen_umult_lo_optab (&optab_table[OTI_vec_widen_umult_lo])
-#define vec_widen_smult_hi_optab (&optab_table[OTI_vec_widen_smult_hi])
-#define vec_widen_smult_lo_optab (&optab_table[OTI_vec_widen_smult_lo])
-#define vec_widen_ushiftl_hi_optab (&optab_table[OTI_vec_widen_ushiftl_hi])
-#define vec_widen_ushiftl_lo_optab (&optab_table[OTI_vec_widen_ushiftl_lo])
-#define vec_widen_sshiftl_hi_optab (&optab_table[OTI_vec_widen_sshiftl_hi])
-#define vec_widen_sshiftl_lo_optab (&optab_table[OTI_vec_widen_sshiftl_lo])
-#define vec_unpacks_hi_optab (&optab_table[OTI_vec_unpacks_hi])
-#define vec_unpacks_lo_optab (&optab_table[OTI_vec_unpacks_lo])
-#define vec_unpacku_hi_optab (&optab_table[OTI_vec_unpacku_hi])
-#define vec_unpacku_lo_optab (&optab_table[OTI_vec_unpacku_lo])
-#define vec_unpacks_float_hi_optab (&optab_table[OTI_vec_unpacks_float_hi])
-#define vec_unpacks_float_lo_optab (&optab_table[OTI_vec_unpacks_float_lo])
-#define vec_unpacku_float_hi_optab (&optab_table[OTI_vec_unpacku_float_hi])
-#define vec_unpacku_float_lo_optab (&optab_table[OTI_vec_unpacku_float_lo])
-#define vec_pack_trunc_optab (&optab_table[OTI_vec_pack_trunc])
-#define vec_pack_ssat_optab (&optab_table[OTI_vec_pack_ssat])
-#define vec_pack_usat_optab (&optab_table[OTI_vec_pack_usat])
-#define vec_pack_sfix_trunc_optab (&optab_table[OTI_vec_pack_sfix_trunc])
-#define vec_pack_ufix_trunc_optab (&optab_table[OTI_vec_pack_ufix_trunc])
-
-#define powi_optab (&optab_table[OTI_powi])
-
-#define sync_compare_and_swap_optab \
- (&optab_table[(int) OTI_sync_compare_and_swap])
-#define sync_lock_test_and_set_optab \
- (&optab_table[(int) OTI_sync_lock_test_and_set])
-#define sync_old_add_optab (&optab_table[(int) OTI_sync_old_add])
-#define sync_old_sub_optab (&optab_table[(int) OTI_sync_old_sub])
-#define sync_old_ior_optab (&optab_table[(int) OTI_sync_old_ior])
-#define sync_old_and_optab (&optab_table[(int) OTI_sync_old_and])
-#define sync_old_xor_optab (&optab_table[(int) OTI_sync_old_xor])
-#define sync_old_nand_optab (&optab_table[(int) OTI_sync_old_nand])
-#define sync_new_add_optab (&optab_table[(int) OTI_sync_new_add])
-#define sync_new_sub_optab (&optab_table[(int) OTI_sync_new_sub])
-#define sync_new_ior_optab (&optab_table[(int) OTI_sync_new_ior])
-#define sync_new_and_optab (&optab_table[(int) OTI_sync_new_and])
-#define sync_new_xor_optab (&optab_table[(int) OTI_sync_new_xor])
-#define sync_new_nand_optab (&optab_table[(int) OTI_sync_new_nand])
-
-/* Conversion optabs have their own table and indexes. */
-enum convert_optab_index
+static inline optab
+code_to_optab (enum rtx_code code)
{
- COI_sext,
- COI_zext,
- COI_trunc,
-
- COI_sfix,
- COI_ufix,
-
- COI_sfixtrunc,
- COI_ufixtrunc,
-
- COI_sfloat,
- COI_ufloat,
-
- COI_lrint,
- COI_lround,
- COI_lfloor,
- COI_lceil,
-
- COI_fract,
- COI_fractuns,
- COI_satfract,
- COI_satfractuns,
-
- COI_vec_load_lanes,
- COI_vec_store_lanes,
-
- /* Vector conditional operations. */
- COI_vcond,
- COI_vcondu,
-
- COI_MAX
-};
-
-#define sext_optab (&convert_optab_table[COI_sext])
-#define zext_optab (&convert_optab_table[COI_zext])
-#define trunc_optab (&convert_optab_table[COI_trunc])
-#define sfix_optab (&convert_optab_table[COI_sfix])
-#define ufix_optab (&convert_optab_table[COI_ufix])
-#define sfixtrunc_optab (&convert_optab_table[COI_sfixtrunc])
-#define ufixtrunc_optab (&convert_optab_table[COI_ufixtrunc])
-#define sfloat_optab (&convert_optab_table[COI_sfloat])
-#define ufloat_optab (&convert_optab_table[COI_ufloat])
-#define lrint_optab (&convert_optab_table[COI_lrint])
-#define lround_optab (&convert_optab_table[COI_lround])
-#define lfloor_optab (&convert_optab_table[COI_lfloor])
-#define lceil_optab (&convert_optab_table[COI_lceil])
-#define fract_optab (&convert_optab_table[COI_fract])
-#define fractuns_optab (&convert_optab_table[COI_fractuns])
-#define satfract_optab (&convert_optab_table[COI_satfract])
-#define satfractuns_optab (&convert_optab_table[COI_satfractuns])
-#define vec_load_lanes_optab (&convert_optab_table[COI_vec_load_lanes])
-#define vec_store_lanes_optab (&convert_optab_table[COI_vec_store_lanes])
-#define vcond_optab (&convert_optab_table[(int) COI_vcond])
-#define vcondu_optab (&convert_optab_table[(int) COI_vcondu])
-
-/* Contains the optab used for each rtx code. */
-extern optab code_to_optab[NUM_RTX_CODE + 1];
-
-
-typedef rtx (*rtxfun) (rtx);
+ return code_to_optab_[code];
+}
-/* Enumerates operations that have a named .md pattern associated
- with them, but which are not implemented as library functions. */
-enum direct_optab_index
+static inline enum rtx_code
+optab_to_code (optab op)
{
-#ifdef HAVE_conditional_move
- /* Conditional move operations. */
- DOI_movcc,
-#endif
+ return optab_to_code_[op];
+}
- /* Operations that use a scratch register to perform input and output
- reloads of special objects. */
- DOI_reload_in,
- DOI_reload_out,
-
- /* Block move operation. */
- DOI_movmem,
-
- /* Block set operation. */
- DOI_setmem,
-
- /* Various types of block compare operation. */
- DOI_cmpstr,
- DOI_cmpstrn,
- DOI_cmpmem,
-
- /* Atomic clear with release semantics. */
- DOI_sync_lock_release,
-
- /* Atomic operation with no resulting value. */
- DOI_sync_add,
- DOI_sync_sub,
- DOI_sync_ior,
- DOI_sync_and,
- DOI_sync_xor,
- DOI_sync_nand,
-
- /* Atomic operations with memory model parameters. */
- DOI_atomic_exchange,
- DOI_atomic_compare_and_swap,
- DOI_atomic_load,
- DOI_atomic_store,
- DOI_atomic_add_fetch,
- DOI_atomic_sub_fetch,
- DOI_atomic_and_fetch,
- DOI_atomic_nand_fetch,
- DOI_atomic_xor_fetch,
- DOI_atomic_or_fetch,
- DOI_atomic_fetch_add,
- DOI_atomic_fetch_sub,
- DOI_atomic_fetch_and,
- DOI_atomic_fetch_nand,
- DOI_atomic_fetch_xor,
- DOI_atomic_fetch_or,
- DOI_atomic_add,
- DOI_atomic_sub,
- DOI_atomic_and,
- DOI_atomic_nand,
- DOI_atomic_xor,
- DOI_atomic_or,
- DOI_atomic_always_lock_free,
- DOI_atomic_is_lock_free,
- DOI_atomic_thread_fence,
- DOI_atomic_signal_fence,
-
- /* Vector permutation. */
- DOI_vec_perm,
- DOI_vec_perm_const,
-
- DOI_MAX
-};
+extern const struct convert_optab_libcall_d convlib_def[NUM_CONVLIB_OPTABS];
+extern const struct optab_libcall_d normlib_def[NUM_NORMLIB_OPTABS];
-/* A structure that says which insn should be used to perform an operation
- in a particular mode. */
-struct direct_optab_d
-{
- struct optab_handlers handlers[NUM_MACHINE_MODES];
-};
-typedef struct direct_optab_d *direct_optab;
+/* Returns the active icode for the given (encoded) optab. */
+extern enum insn_code raw_optab_handler (unsigned);
+extern bool swap_optab_enable (optab, enum machine_mode, bool);
-#ifdef HAVE_conditional_move
-#define movcc_optab (&direct_optab_table[(int) DOI_movcc])
-#endif
-#define reload_in_optab (&direct_optab_table[(int) DOI_reload_in])
-#define reload_out_optab (&direct_optab_table[(int) DOI_reload_out])
-#define movmem_optab (&direct_optab_table[(int) DOI_movmem])
-#define setmem_optab (&direct_optab_table[(int) DOI_setmem])
-#define cmpstr_optab (&direct_optab_table[(int) DOI_cmpstr])
-#define cmpstrn_optab (&direct_optab_table[(int) DOI_cmpstrn])
-#define cmpmem_optab (&direct_optab_table[(int) DOI_cmpmem])
-#define sync_lock_release_optab \
- (&direct_optab_table[(int) DOI_sync_lock_release])
-#define sync_add_optab (&direct_optab_table[(int) DOI_sync_add])
-#define sync_sub_optab (&direct_optab_table[(int) DOI_sync_sub])
-#define sync_ior_optab (&direct_optab_table[(int) DOI_sync_ior])
-#define sync_and_optab (&direct_optab_table[(int) DOI_sync_and])
-#define sync_xor_optab (&direct_optab_table[(int) DOI_sync_xor])
-#define sync_nand_optab (&direct_optab_table[(int) DOI_sync_nand])
-
-#define atomic_exchange_optab \
- (&direct_optab_table[(int) DOI_atomic_exchange])
-#define atomic_compare_and_swap_optab \
- (&direct_optab_table[(int) DOI_atomic_compare_and_swap])
-#define atomic_load_optab \
- (&direct_optab_table[(int) DOI_atomic_load])
-#define atomic_store_optab \
- (&direct_optab_table[(int) DOI_atomic_store])
-#define atomic_add_fetch_optab \
- (&direct_optab_table[(int) DOI_atomic_add_fetch])
-#define atomic_sub_fetch_optab \
- (&direct_optab_table[(int) DOI_atomic_sub_fetch])
-#define atomic_and_fetch_optab \
- (&direct_optab_table[(int) DOI_atomic_and_fetch])
-#define atomic_nand_fetch_optab \
- (&direct_optab_table[(int) DOI_atomic_nand_fetch])
-#define atomic_xor_fetch_optab \
- (&direct_optab_table[(int) DOI_atomic_xor_fetch])
-#define atomic_or_fetch_optab \
- (&direct_optab_table[(int) DOI_atomic_or_fetch])
-#define atomic_fetch_add_optab \
- (&direct_optab_table[(int) DOI_atomic_fetch_add])
-#define atomic_fetch_sub_optab \
- (&direct_optab_table[(int) DOI_atomic_fetch_sub])
-#define atomic_fetch_and_optab \
- (&direct_optab_table[(int) DOI_atomic_fetch_and])
-#define atomic_fetch_nand_optab \
- (&direct_optab_table[(int) DOI_atomic_fetch_nand])
-#define atomic_fetch_xor_optab \
- (&direct_optab_table[(int) DOI_atomic_fetch_xor])
-#define atomic_fetch_or_optab \
- (&direct_optab_table[(int) DOI_atomic_fetch_or])
-#define atomic_add_optab \
- (&direct_optab_table[(int) DOI_atomic_add])
-#define atomic_sub_optab \
- (&direct_optab_table[(int) DOI_atomic_sub])
-#define atomic_and_optab \
- (&direct_optab_table[(int) DOI_atomic_and])
-#define atomic_nand_optab \
- (&direct_optab_table[(int) DOI_atomic_nand])
-#define atomic_xor_optab \
- (&direct_optab_table[(int) DOI_atomic_xor])
-#define atomic_or_optab \
- (&direct_optab_table[(int) DOI_atomic_or])
-#define atomic_always_lock_free_optab \
- (&direct_optab_table[(int) DOI_atomic_always_lock_free])
-#define atomic_is_lock_free_optab \
- (&direct_optab_table[(int) DOI_atomic_is_lock_free])
-#define atomic_thread_fence_optab \
- (&direct_optab_table[(int) DOI_atomic_thread_fence])
-#define atomic_signal_fence_optab \
- (&direct_optab_table[(int) DOI_atomic_signal_fence])
-
-#define vec_perm_optab (&direct_optab_table[DOI_vec_perm])
-#define vec_perm_const_optab (&direct_optab_table[(int) DOI_vec_perm_const])
-
/* Target-dependent globals. */
struct target_optabs {
- /* Tables of patterns that may have an associated libcall. */
- struct optab_d x_optab_table[(int) OTI_MAX];
-
- /* Tables of patterns for converting one mode to another. */
- struct convert_optab_d x_convert_optab_table[(int) COI_MAX];
-
- /* Tables of patterns for direct optabs (i.e. those which cannot be
- implemented using a libcall). */
- struct direct_optab_d x_direct_optab_table[(int) DOI_MAX];
+ /* Patterns that are used by optabs that are enabled for this target. */
+ bool pat_enable[NUM_OPTAB_PATTERNS];
};
extern struct target_optabs default_target_optabs;
@@ -838,13 +82,6 @@ extern struct target_optabs *this_target_optabs;
#else
#define this_target_optabs (&default_target_optabs)
#endif
-
-#define optab_table \
- (this_target_optabs->x_optab_table)
-#define convert_optab_table \
- (this_target_optabs->x_convert_optab_table)
-#define direct_optab_table \
- (this_target_optabs->x_direct_optab_table)
/* Define functions given in optabs.c. */
@@ -1005,59 +242,21 @@ extern bool can_vec_perm_p (enum machine_mode, bool, const unsigned char *);
/* Generate code for VEC_PERM_EXPR. */
extern rtx expand_vec_perm (enum machine_mode, rtx, rtx, rtx, rtx);
+/* Return non-zero if target supports a given highpart multiplication. */
+extern int can_mult_highpart_p (enum machine_mode, bool);
+
+/* Generate code for MULT_HIGHPART_EXPR. */
+extern rtx expand_mult_highpart (enum machine_mode, rtx, rtx, rtx, bool);
+
/* Return the insn used to implement mode MODE of OP, or CODE_FOR_nothing
if the target does not have such an insn. */
static inline enum insn_code
optab_handler (optab op, enum machine_mode mode)
{
- return (enum insn_code) (op->handlers[(int) mode].insn_code
- + (int) CODE_FOR_nothing);
-}
-
-/* Like optab_handler, but for widening_operations that have a TO_MODE and
- a FROM_MODE. */
-
-static inline enum insn_code
-widening_optab_handler (optab op, enum machine_mode to_mode,
- enum machine_mode from_mode)
-{
- if (to_mode == from_mode || from_mode == VOIDmode)
- return optab_handler (op, to_mode);
-
- if (op->widening)
- return (enum insn_code) (op->widening->handlers[(int) to_mode][(int) from_mode].insn_code
- + (int) CODE_FOR_nothing);
-
- return CODE_FOR_nothing;
-}
-
-/* Record that insn CODE should be used to implement mode MODE of OP. */
-
-static inline void
-set_optab_handler (optab op, enum machine_mode mode, enum insn_code code)
-{
- op->handlers[(int) mode].insn_code = (int) code - (int) CODE_FOR_nothing;
-}
-
-/* Like set_optab_handler, but for widening operations that have a TO_MODE
- and a FROM_MODE. */
-
-static inline void
-set_widening_optab_handler (optab op, enum machine_mode to_mode,
- enum machine_mode from_mode, enum insn_code code)
-{
- if (to_mode == from_mode)
- set_optab_handler (op, to_mode, code);
- else
- {
- if (op->widening == NULL)
- op->widening = (struct widening_optab_handlers *)
- xcalloc (1, sizeof (struct widening_optab_handlers));
-
- op->widening->handlers[(int) to_mode][(int) from_mode].insn_code
- = (int) code - (int) CODE_FOR_nothing;
- }
+ unsigned scode = (op << 16) | mode;
+ gcc_assert (op > LAST_CONV_OPTAB);
+ return raw_optab_handler (scode);
}
/* Return the insn used to perform conversion OP from mode FROM_MODE
@@ -1068,20 +267,28 @@ static inline enum insn_code
convert_optab_handler (convert_optab op, enum machine_mode to_mode,
enum machine_mode from_mode)
{
- return ((enum insn_code)
- (op->handlers[(int) to_mode][(int) from_mode].insn_code
- + (int) CODE_FOR_nothing));
+ unsigned scode = (op << 16) | (from_mode << 8) | to_mode;
+ gcc_assert (op > unknown_optab && op <= LAST_CONV_OPTAB);
+ return raw_optab_handler (scode);
}
-/* Record that insn CODE should be used to perform conversion OP
- from mode FROM_MODE to mode TO_MODE. */
+/* Like optab_handler, but for widening_operations that have a
+ TO_MODE and a FROM_MODE. */
-static inline void
-set_convert_optab_handler (convert_optab op, enum machine_mode to_mode,
- enum machine_mode from_mode, enum insn_code code)
+static inline enum insn_code
+widening_optab_handler (optab op, enum machine_mode to_mode,
+ enum machine_mode from_mode)
{
- op->handlers[(int) to_mode][(int) from_mode].insn_code
- = (int) code - (int) CODE_FOR_nothing;
+ unsigned scode = (op << 16) | to_mode;
+ if (to_mode != from_mode && from_mode != VOIDmode)
+ {
+ /* ??? Why does find_widening_optab_handler_and_mode attempt to
+ widen things that can't be widened? E.g. add_optab... */
+ if (op > LAST_CONV_OPTAB)
+ return CODE_FOR_nothing;
+ scode |= from_mode << 8;
+ }
+ return raw_optab_handler (scode);
}
/* Return the insn used to implement mode MODE of OP, or CODE_FOR_nothing
@@ -1090,17 +297,7 @@ set_convert_optab_handler (convert_optab op, enum machine_mode to_mode,
static inline enum insn_code
direct_optab_handler (direct_optab op, enum machine_mode mode)
{
- return (enum insn_code) (op->handlers[(int) mode].insn_code
- + (int) CODE_FOR_nothing);
-}
-
-/* Record that insn CODE should be used to implement mode MODE of OP. */
-
-static inline void
-set_direct_optab_handler (direct_optab op, enum machine_mode mode,
- enum insn_code code)
-{
- op->handlers[(int) mode].insn_code = (int) code - (int) CODE_FOR_nothing;
+ return optab_handler (op, mode);
}
/* Return true if UNOPTAB is for a trapping-on-overflow operation. */
@@ -1275,4 +472,52 @@ extern void expand_jump_insn (enum insn_code icode, unsigned int nops,
extern rtx prepare_operand (enum insn_code, rtx, int, enum machine_mode,
enum machine_mode, int);
+extern void gen_int_libfunc (optab, const char *, char, enum machine_mode);
+extern void gen_fp_libfunc (optab, const char *, char, enum machine_mode);
+extern void gen_fixed_libfunc (optab, const char *, char, enum machine_mode);
+extern void gen_signed_fixed_libfunc (optab, const char *, char,
+ enum machine_mode);
+extern void gen_unsigned_fixed_libfunc (optab, const char *, char,
+ enum machine_mode);
+extern void gen_int_fp_libfunc (optab, const char *, char, enum machine_mode);
+extern void gen_intv_fp_libfunc (optab, const char *, char, enum machine_mode);
+extern void gen_int_fp_fixed_libfunc (optab, const char *, char,
+ enum machine_mode);
+extern void gen_int_fp_signed_fixed_libfunc (optab, const char *, char,
+ enum machine_mode);
+extern void gen_int_fixed_libfunc (optab, const char *, char,
+ enum machine_mode);
+extern void gen_int_signed_fixed_libfunc (optab, const char *, char,
+ enum machine_mode);
+extern void gen_int_unsigned_fixed_libfunc (optab, const char *, char,
+ enum machine_mode);
+
+extern void gen_interclass_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_int_to_fp_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_ufloat_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_int_to_fp_nondecimal_conv_libfunc (convert_optab,
+ const char *,
+ enum machine_mode,
+ enum machine_mode);
+extern void gen_fp_to_int_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_intraclass_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_trunc_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_extend_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_fract_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_fractuns_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_satfract_conv_libfunc (convert_optab, const char *,
+ enum machine_mode, enum machine_mode);
+extern void gen_satfractuns_conv_libfunc (convert_optab, const char *,
+ enum machine_mode,
+ enum machine_mode);
+
#endif /* GCC_OPTABS_H */
diff --git a/gcc/opts.c b/gcc/opts.c
index d189e90cce0..0ddb1a0e582 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -452,6 +452,7 @@ static const struct default_options default_options_table[] =
{ OPT_LEVELS_1_PLUS, OPT_ftree_ch, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcombine_stack_adjustments, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcompare_elim, NULL, 1 },
+ { OPT_LEVELS_1_PLUS, OPT_ftree_slsr, NULL, 1 },
/* -O2 optimizations. */
{ OPT_LEVELS_2_PLUS, OPT_finline_small_functions, NULL, 1 },
@@ -501,6 +502,7 @@ static const struct default_options default_options_table[] =
{ OPT_LEVELS_3_PLUS, OPT_funswitch_loops, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_fgcse_after_reload, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_ftree_vectorize, NULL, 1 },
+ { OPT_LEVELS_3_PLUS, OPT_fvect_cost_model, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_fipa_cp_clone, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_ftree_partial_pre, NULL, 1 },
@@ -715,7 +717,7 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
if (opts->x_flag_exceptions
&& opts->x_flag_reorder_blocks_and_partition
- && (ui_except == UI_SJLJ || ui_except == UI_TARGET))
+ && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))
{
inform (loc,
"-freorder-blocks-and-partition does not work "
@@ -730,7 +732,7 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
if (opts->x_flag_unwind_tables
&& !targetm_common.unwind_tables_default
&& opts->x_flag_reorder_blocks_and_partition
- && (ui_except == UI_SJLJ || ui_except == UI_TARGET))
+ && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))
{
inform (loc,
"-freorder-blocks-and-partition does not support "
@@ -747,7 +749,7 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
&& (!targetm_common.have_named_sections
|| (opts->x_flag_unwind_tables
&& targetm_common.unwind_tables_default
- && (ui_except == UI_SJLJ || ui_except == UI_TARGET))))
+ && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))))
{
inform (loc,
"-freorder-blocks-and-partition does not work "
@@ -1591,8 +1593,6 @@ common_handle_option (struct gcc_options *opts,
opts->x_profile_arc_flag = value;
if (!opts_set->x_flag_profile_values)
opts->x_flag_profile_values = value;
- if (!opts_set->x_flag_value_profile_transformations)
- opts->x_flag_value_profile_transformations = value;
if (!opts_set->x_flag_inline_functions)
opts->x_flag_inline_functions = value;
/* FIXME: Instrumentation we insert makes ipa-reference bitmaps
diff --git a/gcc/opts.h b/gcc/opts.h
index dbefc6401d9..a9336af74bc 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -145,6 +145,7 @@ extern const unsigned int cl_lang_count;
#define CL_JOINED (1U << 22) /* If takes joined argument. */
#define CL_SEPARATE (1U << 23) /* If takes a separate argument. */
#define CL_UNDOCUMENTED (1U << 24) /* Do not output with --help. */
+#define CL_NO_DWARF_RECORD (1U << 25) /* Do not add to producer string. */
/* Flags for an enumerated option argument. */
#define CL_ENUM_CANONICAL (1 << 0) /* Canonical for this value. */
diff --git a/gcc/params.def b/gcc/params.def
index 47e7839e2b6..df2df283517 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -638,35 +638,12 @@ DEFPARAM(PARAM_MAX_LAST_VALUE_RTL,
/* INTEGER_CST nodes are shared for values [{-1,0} .. N) for
{signed,unsigned} integral types. This determines N.
- Experimentation shows 256 to be a good value. */
+ Experimentation shows 251 to be a good value that generates the
+ least amount of garbage for allocating the TREE_VEC storage. */
DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
"integer-share-limit",
"The upper bound for sharing integer constants",
- 256, 2, 2)
-
-/* Incremental SSA updates for virtual operands may be very slow if
- there is a large number of mappings to process. In those cases, it
- is faster to rewrite the virtual symbols from scratch as if they
- had been recently introduced. This heuristic cannot be applied to
- SSA mappings for real SSA names, only symbols kept in FUD chains.
-
- PARAM_MIN_VIRTUAL_MAPPINGS specifies the minimum number of virtual
- mappings that should be registered to trigger the heuristic.
-
- PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO specifies the ratio between
- mappings and symbols. If the number of virtual mappings is
- PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO bigger than the number of
- virtual symbols to be updated, then the updater switches to a full
- update for those symbols. */
-DEFPARAM (PARAM_MIN_VIRTUAL_MAPPINGS,
- "min-virtual-mappings",
- "Minimum number of virtual mappings to consider switching to full virtual renames",
- 100, 0, 0)
-
-DEFPARAM (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO,
- "virtual-mappings-ratio",
- "Ratio between virtual mappings and virtual symbols to do full virtual renames",
- 3, 0, 0)
+ 251, 2, 2)
DEFPARAM (PARAM_SSP_BUFFER_SIZE,
"ssp-buffer-size",
@@ -799,6 +776,17 @@ DEFPARAM (PARAM_SCCVN_MAX_SCC_SIZE,
"Maximum size of a SCC before SCCVN stops processing a function",
10000, 10, 0)
+/* The following is used as a stop-gap limit for cases where really huge
+ functions blow up compile-time use too much. It limits the number of
+ alias-queries we do for finding common subexpressions for memory loads and
+ stores. The number of alias-queries is otherwise limited by the number of
+ stores on paths to function entry. */
+
+DEFPARAM (PARAM_SCCVN_MAX_ALIAS_QUERIES_PER_ACCESS,
+ "sccvn-max-alias-queries-per-access",
+ "Maximum number of disambiguations to perform per memory access",
+ 1000, 0, 0)
+
DEFPARAM (PARAM_IRA_MAX_LOOPS_NUM,
"ira-max-loops-num",
"Max loops number for regional RA",
diff --git a/gcc/passes.c b/gcc/passes.c
index 9ab5ec495bc..82dd66e36be 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -49,7 +49,6 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "graph.h"
#include "regs.h"
-#include "timevar.h"
#include "diagnostic-core.h"
#include "params.h"
#include "reload.h"
@@ -1286,7 +1285,6 @@ init_optimization_passes (void)
NEXT_PASS (pass_init_datastructures);
NEXT_PASS (pass_expand_omp);
- NEXT_PASS (pass_referenced_vars);
NEXT_PASS (pass_build_ssa);
NEXT_PASS (pass_lower_vector);
NEXT_PASS (pass_early_warn_uninitialized);
@@ -1325,13 +1323,13 @@ init_optimization_passes (void)
NEXT_PASS (pass_rebuild_cgraph_edges);
NEXT_PASS (pass_inline_parameters);
}
+ NEXT_PASS (pass_ipa_free_inline_summary);
NEXT_PASS (pass_ipa_tree_profile);
{
struct opt_pass **p = &pass_ipa_tree_profile.pass.sub;
NEXT_PASS (pass_feedback_split_functions);
}
NEXT_PASS (pass_ipa_increase_alignment);
- NEXT_PASS (pass_ipa_matrix_reorg);
NEXT_PASS (pass_ipa_tm);
NEXT_PASS (pass_ipa_lower_emutls);
*p = NULL;
@@ -1726,13 +1724,7 @@ execute_function_dump (void *data ATTRIBUTE_UNUSED)
dump_function_to_file (current_function_decl, dump_file, dump_flags);
else
{
- if (dump_flags & TDF_SLIM)
- print_rtl_slim_with_bb (dump_file, get_insns (), dump_flags);
- else if ((cfun->curr_properties & PROP_cfg)
- && (dump_flags & TDF_BLOCKS))
- print_rtl_with_bb (dump_file, get_insns ());
- else
- print_rtl (dump_file, get_insns ());
+ print_rtl_with_bb (dump_file, get_insns (), dump_flags);
if ((cfun->curr_properties & PROP_cfg)
&& graph_dump_format != no_graph
@@ -2233,9 +2225,7 @@ execute_pass_list (struct opt_pass *pass)
those node in SET. */
static void
-ipa_write_summaries_2 (struct opt_pass *pass, cgraph_node_set set,
- varpool_node_set vset,
- struct lto_out_decl_state *state)
+ipa_write_summaries_2 (struct opt_pass *pass, struct lto_out_decl_state *state)
{
while (pass)
{
@@ -2253,7 +2243,7 @@ ipa_write_summaries_2 (struct opt_pass *pass, cgraph_node_set set,
pass_init_dump_file (pass);
- ipa_pass->write_summary (set,vset);
+ ipa_pass->write_summary ();
pass_fini_dump_file (pass);
@@ -2263,7 +2253,7 @@ ipa_write_summaries_2 (struct opt_pass *pass, cgraph_node_set set,
}
if (pass->sub && pass->sub->type != GIMPLE_PASS)
- ipa_write_summaries_2 (pass->sub, set, vset, state);
+ ipa_write_summaries_2 (pass->sub, state);
pass = pass->next;
}
@@ -2282,8 +2272,8 @@ ipa_write_summaries_1 (cgraph_node_set set, varpool_node_set vset)
lto_push_out_decl_state (state);
gcc_assert (!flag_wpa);
- ipa_write_summaries_2 (all_regular_ipa_passes, set, vset, state);
- ipa_write_summaries_2 (all_lto_gen_passes, set, vset, state);
+ ipa_write_summaries_2 (all_regular_ipa_passes, state);
+ ipa_write_summaries_2 (all_lto_gen_passes, state);
gcc_assert (lto_get_out_decl_state () == state);
lto_pop_out_decl_state ();
@@ -2351,9 +2341,7 @@ ipa_write_summaries (void)
only those node in SET. */
static void
-ipa_write_optimization_summaries_1 (struct opt_pass *pass, cgraph_node_set set,
- varpool_node_set vset,
- struct lto_out_decl_state *state)
+ipa_write_optimization_summaries_1 (struct opt_pass *pass, struct lto_out_decl_state *state)
{
while (pass)
{
@@ -2371,7 +2359,7 @@ ipa_write_optimization_summaries_1 (struct opt_pass *pass, cgraph_node_set set,
pass_init_dump_file (pass);
- ipa_pass->write_optimization_summary (set, vset);
+ ipa_pass->write_optimization_summary ();
pass_fini_dump_file (pass);
@@ -2381,7 +2369,7 @@ ipa_write_optimization_summaries_1 (struct opt_pass *pass, cgraph_node_set set,
}
if (pass->sub && pass->sub->type != GIMPLE_PASS)
- ipa_write_optimization_summaries_1 (pass->sub, set, vset, state);
+ ipa_write_optimization_summaries_1 (pass->sub, state);
pass = pass->next;
}
@@ -2416,8 +2404,8 @@ ipa_write_optimization_summaries (cgraph_node_set set, varpool_node_set vset)
}
gcc_assert (flag_wpa);
- ipa_write_optimization_summaries_1 (all_regular_ipa_passes, set, vset, state);
- ipa_write_optimization_summaries_1 (all_lto_gen_passes, set, vset, state);
+ ipa_write_optimization_summaries_1 (all_regular_ipa_passes, state);
+ ipa_write_optimization_summaries_1 (all_lto_gen_passes, state);
gcc_assert (lto_get_out_decl_state () == state);
lto_pop_out_decl_state ();
@@ -2614,8 +2602,6 @@ dump_properties (FILE *dump, unsigned int props)
fprintf (dump, "PROP_gimple_leh\n");
if (props & PROP_cfg)
fprintf (dump, "PROP_cfg\n");
- if (props & PROP_referenced_vars)
- fprintf (dump, "PROP_referenced_vars\n");
if (props & PROP_ssa)
fprintf (dump, "PROP_ssa\n");
if (props & PROP_no_crit_edges)
diff --git a/gcc/plugin.c b/gcc/plugin.c
index 1f56fa2f38b..31baccaef58 100644
--- a/gcc/plugin.c
+++ b/gcc/plugin.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "intl.h"
#include "plugin.h"
-#include "timevar.h"
#include "ggc.h"
#ifdef ENABLE_PLUGIN
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 356875fdd34..43e37d95cbe 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,13 @@
+2012-07-05 Joseph Myers <joseph@codesourcery.com>
+
+ * hr.po: New.
+
+2012-07-02 Joseph Myers <joseph@codesourcery.com>
+
+ * be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po,
+ nl.po, ru.po, sr.po, sv.po, tr.po, vi.po, zh_CN.po, zh_TW.po:
+ Update.
+
2012-06-13 Joseph Myers <joseph@codesourcery.com>
* gcc.pot: Regenerate.
diff --git a/gcc/po/be.po b/gcc/po/be.po
index 2243a107055..835b18e6c87 100644
--- a/gcc/po/be.po
+++ b/gcc/po/be.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 3.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2002-05-17 15:54+0200\n"
"Last-Translator: Ales Nyakhaychyk <nyakhaychyk@i18n.linux.by>\n"
"Language-Team: Belarusian <i18n@tut.by>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr ""
@@ -24,18 +24,18 @@ msgstr ""
msgid "({anonymous})"
msgstr ""
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr ""
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr ""
@@ -43,17 +43,17 @@ msgstr ""
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr ""
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr ""
@@ -64,19 +64,19 @@ msgstr ""
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr ""
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr ""
@@ -85,25 +85,25 @@ msgstr ""
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr ""
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr ""
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr ""
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr ""
@@ -112,39 +112,39 @@ msgstr ""
msgid "expected %<.%>"
msgstr ""
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr ""
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr ""
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr ""
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr ""
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, gcc-internal-format
msgid "expected %<[%>"
msgstr ""
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr ""
@@ -316,12 +316,12 @@ msgstr ""
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr ""
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr ""
@@ -1191,19 +1191,19 @@ msgstr "У файле уключаным з %s:%d"
msgid " inlined from %qs"
msgstr "У файле уключаным з %s:%d"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr ""
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
@@ -1372,17 +1372,17 @@ msgid "this is the insn:"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
#, fuzzy
msgid "could not find a spill register"
msgstr "Ðе выкарыÑтоўваць Ñ€ÑгіÑтра sb"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr ""
@@ -2573,118 +2573,118 @@ msgstr "вÑртанне"
msgid "<unknown>"
msgstr ""
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "нерÑчаіÑнае значÑньне %%H"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, fuzzy, c-format
msgid "invalid %%J value"
msgstr "дрÑннае %%Q значÑнне"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "нерÑчаіÑнае значÑньне %%r"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "нерÑчаіÑнае значÑньне %%R"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "нерÑчаіÑнае значÑньне %%N"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "нерÑчаіÑнае значÑньне %%P"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "нерÑчаіÑнае значÑньне %%h"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "нерÑчаіÑнае значÑньне %%L"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "нерÑчаіÑнае значÑньне %%m"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "нерÑчаіÑнае значÑньне %%M"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "нерÑчаіÑнае значÑньне %%U"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "нерÑчаіÑнае значÑньне %%v"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "нерÑчаіÑнае значÑньне %%C"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "нерÑчаіÑнае значÑньне %%E"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr ""
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "нерÑчаіÑнае значÑньне %%xn"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, fuzzy, c-format
msgid "predicated Thumb instruction"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr ""
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
msgid "Unsupported operand for code '%c'"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, fuzzy, c-format
#| msgid "invalid %%f operand"
msgid "invalid shift operand"
msgstr "нерÑчаіÑны %%f аперанд"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2692,83 +2692,83 @@ msgstr "нерÑчаіÑны %%f аперанд"
msgid "invalid operand for code '%c'"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr ""
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, fuzzy, c-format
msgid "missing operand"
msgstr "прапушчан ініцыÑлізатар"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
msgid "function parameters cannot have __fp16 type"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð½Ðµ вÑртае тып string"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
msgid "operands to %T/%t must be reg + const_int:"
msgstr ""
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
msgid "bad address, not an I/O address:"
msgstr ""
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
msgid "bad address, not a constant:"
msgstr ""
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr ""
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
#, fuzzy
msgid "invalid insn:"
msgstr "ÐерÑчаіÑны выбар %s"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr ""
@@ -2785,8 +2785,8 @@ msgstr "нерÑчаіÑны %%c аперанд"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2866,22 +2866,22 @@ msgstr ""
msgid "unrecognized address"
msgstr "нераÑпазнаны адраÑ"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
#, fuzzy
msgid "unrecognized supposed constant"
msgstr "нераÑпазнаны выбар \"-%s\""
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr ""
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr ""
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr ""
@@ -2889,7 +2889,7 @@ msgstr ""
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr ""
@@ -3018,73 +3018,73 @@ msgstr ""
msgid "bad output_condmove_single operand"
msgstr ""
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr ""
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr ""
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr ""
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr ""
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, c-format
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr ""
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr ""
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, fuzzy, c-format
msgid "invalid operand code '%c'"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, fuzzy, c-format
#| msgid "invalid %%c operand"
msgid "invalid constraints for operand"
msgstr "нерÑчаіÑны %%c аперанд"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
#, fuzzy
msgid "unknown insn mode"
msgstr "невÑдомы Ñ€Ñжым машыны \"%s\""
@@ -3114,40 +3114,40 @@ msgstr ""
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr ""
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%xn code"
msgid "invalid %%G mode"
msgstr "нерÑчаіÑнае значÑньне %%xn"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr ""
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
#, fuzzy
#| msgid "invalid mode for gen_tst_reg"
msgid "invalid conversion from %<__fpreg%>"
msgstr "нерÑчаіÑны Ñ€Ñжым Ð´Ð»Ñ gen_tst_reg"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
#, fuzzy
msgid "invalid conversion to %<__fpreg%>"
msgstr "нерÑчаіÑны %%-код"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
#, fuzzy
msgid "invalid operation on %<__fpreg%>"
msgstr "нерÑчаіÑны %%-код"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, fuzzy, c-format
msgid "invalid %%P operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr ""
@@ -3228,7 +3228,7 @@ msgid "post-increment address is not a register"
msgstr ""
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "дрÑнны адраÑ"
@@ -3399,89 +3399,89 @@ msgstr ""
msgid "bad move"
msgstr ""
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%Q value"
msgid "invalid %%c value"
msgstr "дрÑннае %%Q значÑнне"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr ""
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "нерÑчаіÑнае значÑньне %%O"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr ""
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr ""
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, fuzzy, c-format
#| msgid "invalid %%x/X value"
msgid "invalid %%x value"
msgstr "нерÑчаіÑнае значÑньне %%x/X"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
#, fuzzy
#| msgid "too few arguments to function"
msgid "AltiVec argument passed to unprototyped function"
@@ -3582,60 +3582,60 @@ msgstr "нерÑчаіÑны %%-код"
msgid "invalid operand to %%S"
msgstr "нерÑчаіÑны %%-код"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr ""
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr ""
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr ""
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "нерÑчаіÑны %%Y аперанд"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "нерÑчаіÑны %%A аперанд"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "нерÑчаіÑны %%B аперанд"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "нерÑчаіÑны %%C аперанд"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "нерÑчаіÑны %%D аперанд"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "нерÑчаіÑны %%f аперанд"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, fuzzy, c-format
msgid "invalid %%s operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr ""
@@ -3660,7 +3660,7 @@ msgstr "тып параметра \"%s\" не аб'Ñўлены"
msgid "xstormy16_print_operand: unknown code"
msgstr ""
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "нерÑчаіÑны %%c аперанд"
@@ -3675,22 +3675,22 @@ msgstr "нерÑчаіÑны %%d аперанд"
msgid "invalid %%H specifier"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
msgid "invalid %%h operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
msgid "invalid %%I operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
msgid "invalid %%i operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
msgid "invalid %%j operand"
msgstr "нерÑчаіÑны %%-код"
@@ -3701,7 +3701,7 @@ msgstr "нерÑчаіÑны %%-код"
msgid "invalid %%%c operand"
msgstr "нерÑчаіÑны %%c аперанд"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
msgid "invalid %%N operand"
msgstr "нерÑчаіÑны %%-код"
@@ -3711,37 +3711,37 @@ msgstr "нерÑчаіÑны %%-код"
msgid "invalid operand for 'r' specifier"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
msgid "invalid %%H operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
msgid "invalid %%L operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
msgid "invalid %%M operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
msgid "invalid %%t operand"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
msgid "invalid %%t operand '"
msgstr "нерÑчаіÑны %%-код"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
msgid "invalid %%r operand"
msgstr "нерÑчаіÑны %%-код"
@@ -3809,11 +3809,11 @@ msgstr "невÑÐ´Ð¾Ð¼Ð°Ñ Ð½Ð°Ð·Ð²Ð° Ñ€ÑгіÑтра: %s"
msgid "address offset not a constant"
msgstr ""
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr ""
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr ""
@@ -4049,7 +4049,7 @@ msgstr ""
msgid "candidates are:"
msgstr ""
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4101,50 +4101,50 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr ""
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr ""
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr ""
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr ""
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr ""
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "too many arguments to function"
msgid "in argument to unary !"
msgstr "вельмі шмат аргументаў у функцыі"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4400,7 +4400,7 @@ msgstr "нерÑчаіÑны абвÑшчальнік"
msgid "Bad type in constant expression"
msgstr ""
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr ""
@@ -4434,11 +4434,11 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr ""
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr ""
@@ -4524,47 +4524,47 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr ""
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
msgid "End expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4573,7 +4573,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4643,7 +4643,7 @@ msgstr ""
msgid "Memory allocation failed"
msgstr ""
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -4850,7 +4850,7 @@ msgstr ""
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -4909,6 +4909,10 @@ msgstr ""
msgid "static is not supported on TPF-OS"
msgstr "-pipe не падтрымліваецца"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr ""
@@ -4939,10 +4943,6 @@ msgstr ""
msgid "no processor type specified for linking"
msgstr ""
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr ""
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr ""
@@ -4995,6 +4995,10 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr ""
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr ""
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr ""
@@ -8187,6 +8191,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -10654,18 +10662,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
msgid "Functions which return values must end with return statements"
msgstr ""
@@ -12227,255 +12247,263 @@ msgstr ""
msgid "Create a position independent executable"
msgstr ""
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of `%D'"
msgid "invalid use of type"
msgstr "нерÑчаіÑнае выкарыÑтаньне `%D'"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-msgid "floating point constant truncated to integer"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr ""
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
msgid "expected numeric type"
msgstr ""
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+msgid "expected boolean type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:3911
msgid "expected integer or boolean type"
msgstr ""
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
msgid "invalid operand for unary %<&%>"
msgstr "нерÑчаіÑны %%-код"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
msgid "expected pointer"
msgstr ""
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
msgid "incompatible types in binary expression"
msgstr ""
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
msgid "shift of non-integer operand"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr ""
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
msgid "negative shift count"
msgstr ""
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "cannot find method"
msgid "object is not a method"
msgstr "немагчыма знайÑьці мÑтад"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
msgid "method type does not match object type"
msgstr ""
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
msgid "invalid use of %<...%> with builtin function"
msgstr ""
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "нÑма аргументаў"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments to function"
msgid "too many arguments"
msgstr "вельмі шмат аргументаў у функцыі"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
msgid "argument 1 must be a map"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
msgid "invalid type for make function"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
msgid "bad size for make"
msgstr ""
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments to function"
msgid "too many arguments to make"
msgstr "вельмі шмат аргументаў у функцыі"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
msgid "argument must be array or slice or channel"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "too few arguments to function"
msgid "unsupported argument type to builtin function"
msgstr "не хапае аргументаў у функцыі"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
msgid "argument must be channel"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
msgid "argument must be a field reference"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
msgid "left argument must be a slice"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "first argument of `%s' should be `int'"
msgid "first argument must be []byte"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
msgid "second argument must be slice or string"
msgstr ""
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "bit-field `%s' has invalid type"
msgid "argument 2 has invalid type"
msgstr "бітавае поле \"%s\" мае нерÑчаіÑны тып"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
msgid "argument must have complex type"
msgstr "\"%s\" мае незавершаны тып"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
msgid "complex arguments must have identical types"
msgstr ""
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
msgid "complex arguments must have floating-point type"
msgstr ""
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+msgid "invalid use of %<...%> with non-slice"
+msgstr "нÑвернае выкарыÑтанне \"restict\""
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "In function"
msgid "expected function"
msgstr "У функцыі"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
msgid "incompatible type for receiver"
msgstr ""
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
msgid "number of results does not match number of values"
msgstr ""
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
msgid "incompatible type for map index"
msgstr ""
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments to function"
msgid "too many expressions for struct"
msgstr "вельмі шмат аргументаў у функцыі"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments to function"
msgid "too few expressions for struct"
msgstr "не хапае аргументаў у функцыі"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
msgid "invalid unsafe.Pointer conversion"
msgstr ""
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
msgid "expected channel"
msgstr ""
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
msgid "invalid left hand side of assignment"
msgstr ""
@@ -12506,19 +12534,19 @@ msgstr ""
msgid "expected boolean expression"
msgstr ""
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
msgid "incompatible types in send"
msgstr ""
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -12569,76 +12597,76 @@ msgstr ""
msgid "cannot use type %s as type %s"
msgstr ""
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
msgid "different receiver types"
msgstr ""
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
msgid "different number of parameters"
msgstr ""
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "invalid parameter type `%T'"
msgid "different parameter types"
msgstr "нерÑчаіÑны тып парамÑтра `%T'"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
#| msgid "no data type for mode `%s'"
msgid "incompatible type for method %s%s%s"
msgstr "нÑма тыпа дадзеных Ð´Ð»Ñ Ñ€Ñжыма \"%s\""
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
#| msgid "no data type for mode `%s'"
msgid "incompatible type for method %s%s%s (%s)"
msgstr "нÑма тыпа дадзеных Ð´Ð»Ñ Ñ€Ñжыма \"%s\""
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
msgid "type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
#| msgid "missing field '%s' in '%s'"
msgid "missing method %s%s%s"
msgstr "прапушчана поле '%s' у '%s'"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -12707,7 +12735,7 @@ msgstr "аргумент `__builtin_args_info' павінен быць канÑÑ
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function `%s'"
msgid "too few arguments to function %<va_start%>"
@@ -12730,7 +12758,7 @@ msgstr ""
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
@@ -12814,7 +12842,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
@@ -12914,8 +12942,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr ""
@@ -13196,7 +13224,7 @@ msgstr ""
msgid "declaration of %q+D shadows a previous local"
msgstr "ÑÐµÐºÑ†Ñ‹Ñ \"%s\" канфліктуе з папÑÑ€ÑднÑй дÑкларацыÑй"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
@@ -13305,7 +13333,7 @@ msgstr ""
msgid "%qE defined as wrong kind of tag"
msgstr ""
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `restrict'"
msgid "invalid use of %<restrict%>"
@@ -13428,7 +13456,7 @@ msgstr "параметр \"%s\" ініцыÑлізаваны"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr ""
@@ -13438,7 +13466,7 @@ msgstr ""
msgid "variable %qD has initializer but incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, fuzzy, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
@@ -13470,7 +13498,7 @@ msgstr "прапушчан памер маÑіва Ñž `%D'"
msgid "zero or negative size array %q+D"
msgstr "нулÑвы памер маÑіва `%D'"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr ""
@@ -13583,7 +13611,7 @@ msgstr "памер маÑіва \"%s\" адмоўны"
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -13671,7 +13699,7 @@ msgstr ""
msgid "storage class specified for unnamed parameter"
msgstr ""
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr ""
@@ -13828,7 +13856,7 @@ msgstr ""
msgid "function definition has qualified void return type"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð½Ðµ вÑртае тып string"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr ""
@@ -13939,7 +13967,7 @@ msgstr ""
msgid "a member of a structure or union cannot have a variably modified type"
msgstr ""
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, fuzzy, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "тып параметра \"%s\" не аб'Ñўлены"
@@ -14376,7 +14404,7 @@ msgstr ""
msgid "argument %qD doesn%'t match prototype"
msgstr ""
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr ""
@@ -14582,7 +14610,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C не дазвалÑе пуÑÑ‚Ñ‹ ізыходны файл"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr ""
@@ -14593,7 +14621,7 @@ msgstr ""
msgid "unknown type name %qE"
msgstr "невÑÐ´Ð¾Ð¼Ð°Ñ Ð½Ð°Ð·Ð²Ð° Ñ€ÑгіÑтра: %s"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration specifiers"
@@ -14604,7 +14632,7 @@ msgstr "пуÑтое абвÑшчÑньне"
msgid "expected %<;%>, identifier or %<(%>"
msgstr ""
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "\"%s\" атрыбут ігнарыруецца"
@@ -14625,7 +14653,7 @@ msgstr ""
msgid "data definition has no type or storage class"
msgstr ""
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -14655,7 +14683,7 @@ msgstr "ISO C89 не падтрымлівае комлекÑÐ½Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C89 не падтрымлівае комлекÑÐ½Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr ""
@@ -14682,18 +14710,18 @@ msgstr ""
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr ""
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr ""
@@ -14826,7 +14854,7 @@ msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -14855,18 +14883,18 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr ""
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "пуÑтое цела Ñž else-выражÑнні"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "suggest braces around empty body in an %<else%> statement"
@@ -14934,7 +14962,7 @@ msgstr ""
msgid "cannot take address of %qs"
msgstr "не магу атрымаць Ð°Ð´Ñ€Ð°Ñ Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ \"%s\""
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr ""
@@ -14975,262 +15003,262 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr ""
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments specified for `%s' attribute"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць аргументаў, зададзеных Ð´Ð»Ñ Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids `goto *expr;'"
msgid "ISO C90 forbids compound literals"
msgstr "ISO C не падтрымлівае \"goto *expr;\""
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr ""
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr ""
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr ""
-#: c-parser.c:8175
+#: c-parser.c:8180
#, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr ""
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr ""
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr ""
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr ""
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr ""
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
#| msgid "too many input files"
msgid "too many %qs clauses"
msgstr "вельмі шмат уваходзÑчых файлаў"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr ""
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr ""
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
#| msgid "invalid %%-code"
msgid "invalid schedule kind"
msgstr "нерÑчаіÑны %%-код"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%qs is not valid for %qs"
msgstr "complex нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr ""
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr ""
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
msgid "for statement expected"
msgstr "вельмі шмат аргументаў у функцыі"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr ""
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable"
msgstr "\"%s\" мае незавершаны тып"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15241,7 +15269,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr ""
@@ -15307,67 +15335,72 @@ msgstr ""
msgid "function return types not compatible due to %<volatile%>"
msgstr ""
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr ""
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr ""
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr ""
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr ""
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr ""
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr ""
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, fuzzy, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, fuzzy, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "called object %qE is not a function"
@@ -15376,376 +15409,376 @@ msgstr "`%D' - гÑта Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ,"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr ""
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr ""
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr ""
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, gcc-internal-format
msgid "__builtin_shuffle arguments must be vectors"
msgstr ""
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function `%s'"
msgid "too many arguments to method %qE"
msgstr "вельмі шмат аргумÑнтаў у функцыі `%s'"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to function %qE"
msgstr "вельмі шмат аргументаў у функцыі"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid "called from here"
msgid "declared here"
msgstr "выклікана адÑюль"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr ""
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr ""
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr ""
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr ""
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr ""
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to function %qE"
msgstr "не хапае аргументаў у функцыі"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr ""
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr ""
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr ""
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, fuzzy, gcc-internal-format
#| msgid "ISO C89 does not support complex types"
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C89 не падтрымлівае комлекÑÐ½Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not support `++' and `--' on complex types"
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C не падтрымлівае \"++\" Ñ– \"--\" Ð´Ð»Ñ Ñ‚Ñ‹Ð¿Ñƒ complex"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, fuzzy, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "не хапае аргументаў у функцыі"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr ""
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr ""
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr ""
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, fuzzy, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "не магу атрымаць Ð°Ð´Ñ€Ð°Ñ Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ \"%s\""
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr ""
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr ""
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr ""
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr ""
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr ""
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:4537
+#: c-typeck.c:4554
msgid "cast adds %q#v qualifier to function type"
msgstr ""
-#: c-typeck.c:4543
+#: c-typeck.c:4560
msgid "cast discards %q#v qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr ""
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr ""
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr ""
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr ""
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr ""
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -15757,686 +15790,686 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
msgid "assignment discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
msgid "initialization discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
msgid "return discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr ""
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr ""
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr ""
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr ""
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr ""
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr ""
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr ""
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr ""
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr ""
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr ""
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr ""
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr ""
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr ""
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, fuzzy, gcc-internal-format
#| msgid "initialization"
msgid "(near initialization for %qs)"
msgstr "ініцыÑлізацыÑ"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr ""
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr ""
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr ""
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr ""
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr ""
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr ""
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr ""
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr ""
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr ""
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr ""
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr ""
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr ""
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "прапушчан ініцыÑлізатар"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr ""
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr ""
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr ""
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, fuzzy, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "\"%s\" мае незавершаны тып"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr ""
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr ""
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr ""
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr ""
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr ""
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids `goto *expr;'"
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C не падтрымлівае \"goto *expr;\""
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, fuzzy, gcc-internal-format
#| msgid "function does not return string type"
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð½Ðµ вÑртае тып string"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr ""
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr ""
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr ""
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr ""
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr ""
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr ""
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr ""
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr ""
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr ""
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr ""
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr ""
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr ""
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr ""
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr ""
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, fuzzy, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr ""
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr ""
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr ""
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr ""
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr ""
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr ""
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr ""
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr ""
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr ""
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr ""
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -16446,7 +16479,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr ""
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, fuzzy, gcc-internal-format
#| msgid "size of array `%s' is too large"
msgid "size of variable %q+D is too large"
@@ -17285,53 +17318,53 @@ msgstr ""
msgid "library lib%s not found"
msgstr "БібліÑÑ‚Ñка lib%s не знойдзена"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr ""
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr ""
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr ""
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr ""
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
#| msgid "can't get current directory"
msgid "can%'t convert value to a vector"
msgstr "не магу атрымаць бÑгучую дырÑкторыю"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr ""
@@ -17489,7 +17522,7 @@ msgstr ""
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -17580,42 +17613,42 @@ msgstr ""
msgid "stack limits not supported on this target"
msgstr ""
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr ""
-#: expmed.c:1803
+#: expmed.c:1823
#, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr ""
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr ""
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr ""
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr ""
@@ -17691,7 +17724,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -17702,7 +17735,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr "памер маÑіва \"%s\" вельмі вÑлікі"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, fuzzy, gcc-internal-format
#| msgid "impossible operator '%s'"
msgid "impossible constraint in %<asm%>"
@@ -18163,78 +18196,78 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:2511
+#: gimplify.c:2518
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr ""
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr ""
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
-#: gimplify.c:5674
+#: gimplify.c:5681
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr ""
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr ""
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr ""
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "Could not open data file %s.\n"
msgid "could not close Go dump file: %m"
msgstr "Ðемагчыма адчыніць файл з дадзенымі %s.\n"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "Could not open data file %s.\n"
msgid "could not open Go dump file %qs: %m"
@@ -18294,7 +18327,7 @@ msgstr ""
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18438,48 +18471,48 @@ msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž Ð
msgid "function %qD redeclared as variable"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -18587,7 +18620,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr ""
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
@@ -18955,9 +18988,9 @@ msgstr "ÐšÐ»Ð°Ñ \"%s\" ужо Ñ–Ñнуе"
msgid "can%'t use %qs as a fixed register"
msgstr "ÐšÐ»Ð°Ñ \"%s\" ужо Ñ–Ñнуе"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "невÑÐ´Ð¾Ð¼Ð°Ñ Ð½Ð°Ð·Ð²Ð° Ñ€ÑгіÑтра: %s"
@@ -19037,12 +19070,12 @@ msgstr ""
msgid "%<asm%> operand requires impossible reload"
msgstr ""
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr ""
@@ -19266,7 +19299,7 @@ msgstr ""
msgid "packed attribute is unnecessary"
msgstr ""
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr ""
@@ -19487,7 +19520,7 @@ msgstr ""
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19502,7 +19535,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr ""
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19517,7 +19550,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr "\"%s\" - гÑта не пачатак дÑкларацыі"
@@ -19552,624 +19585,624 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr ""
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid %%f operand"
msgid "invalid first operand of MEM_REF"
msgstr "нерÑчаіÑны %%f аперанд"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid %%f operand"
msgid "invalid offset operand of MEM_REF"
msgstr "нерÑчаіÑны %%f аперанд"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr ""
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, fuzzy, gcc-internal-format
#| msgid "invalid %%c operand"
msgid "invalid conditional operand"
msgstr "нерÑчаіÑны %%c аперанд"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr ""
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
#| msgid "invalid %%m value"
msgid "invalid expression for min lvalue"
msgstr "нерÑчаіÑнае значÑньне %%m"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr ""
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr ""
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr ""
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr ""
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, gcc-internal-format
msgid "conversion of register to a different size"
msgstr ""
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid %%d operand"
msgid "invalid address operand in MEM_REF"
msgstr "нерÑчаіÑны %%d аперанд"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid %%f operand"
msgid "invalid offset operand in MEM_REF"
msgstr "нерÑчаіÑны %%f аперанд"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "ÐерÑчаіÑÐ½Ð°Ñ ÑпецыфікацыÑ! Памылка Ñž cc."
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr ""
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr ""
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr ""
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr ""
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr ""
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr ""
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr ""
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr ""
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr ""
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr ""
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "прапушчан ініцыÑлізатар"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr ""
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr ""
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr ""
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr ""
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr ""
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr ""
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr ""
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr ""
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr ""
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr ""
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr ""
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr ""
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr ""
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr ""
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
#| msgid "invalid mode for gen_tst_reg"
msgid "invalid rhs for gimple memory store"
msgstr "нерÑчаіÑны Ñ€Ñжым Ð´Ð»Ñ gen_tst_reg"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr ""
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr ""
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr ""
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "нерÑчаіÑны %%-код"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr ""
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "нерÑчаіÑны адраÑ"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
#| msgid "Missing identifier"
msgid "missing PHI def"
msgstr "Прапушчан ідÑнтыфікатар"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "invalid %%P value"
msgid "invalid PHI argument"
msgstr "нерÑчаіÑнае значÑньне %%P"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr ""
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr ""
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
msgid "in statement"
msgstr "вельмі шмат аргументаў у функцыі"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr ""
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
#| msgid "-pipe is not supported"
msgid "case labels not sorted: "
msgstr "-pipe не падтрымліваецца"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "missing field '%s' in '%s'"
msgid "missing edge %i->%i"
msgstr "прапушчана поле '%s' у '%s'"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr ""
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr ""
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr ""
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr ""
@@ -20230,72 +20263,72 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr ""
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr ""
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr ""
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr ""
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr ""
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr ""
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr ""
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr ""
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "выклікана адÑюль"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr ""
@@ -20510,7 +20543,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr ""
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
msgid "%qD was declared here"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
@@ -20572,52 +20605,52 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr ""
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr ""
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr ""
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr ""
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr ""
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -20627,22 +20660,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr ""
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr ""
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20657,141 +20690,141 @@ msgstr ""
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qE attribute ignored"
msgstr "\"%s\" атрыбут ігнарыруецца"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr ""
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr ""
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr ""
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11389
+#: tree.c:11393
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr ""
-#: tree.c:11392
+#: tree.c:11396
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr ""
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr ""
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
@@ -20841,148 +20874,153 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr ""
+
+#: varasm.c:322
#, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr ""
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr ""
-#: varasm.c:1207
+#: varasm.c:1213
#, fuzzy, gcc-internal-format
#| msgid "invalid register name for `%s'"
msgid "invalid register name for %q+D"
msgstr "нерÑчаіÑÐ½Ð°Ñ Ð½Ð°Ð·Ð²Ð° Ñ€ÑгіÑтра `%s'"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr ""
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr ""
-#: varasm.c:1215
+#: varasm.c:1221
#, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr ""
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr ""
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr ""
-#: varasm.c:1387
+#: varasm.c:1393
#, fuzzy, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "__buitin_saveregs не падтрымліваецца гÑтай мÑтай"
-#: varasm.c:1453
+#: varasm.c:1459
#, fuzzy, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr ""
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr ""
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr ""
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr ""
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "__buitin_saveregs не падтрымліваецца гÑтай мÑтай"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, fuzzy, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
@@ -21023,8 +21061,8 @@ msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž Ð
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr ""
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr ""
@@ -21243,7 +21281,7 @@ msgstr ""
msgid "the address of %qD will always evaluate as %<true%>"
msgstr ""
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
@@ -21660,40 +21698,40 @@ msgstr "\"%s\" атрыбут ігнарыруецца"
msgid "invalid vector type for attribute %qE"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr ""
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr ""
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr ""
@@ -21735,12 +21773,12 @@ msgstr ""
msgid "%qE attribute only applies to variadic functions"
msgstr "\"%s\" звычайна функцыÑ"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, fuzzy, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
@@ -21800,7 +21838,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, fuzzy, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "не магу атрымаць Ð°Ð´Ñ€Ð°Ñ Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ \"%s\""
@@ -22540,84 +22578,84 @@ msgid "ignoring #pragma %s %s"
msgstr ""
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr ""
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, fuzzy, gcc-internal-format
#| msgid "In program"
msgid "stray %qs in program"
msgstr "У праграме"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "прапушчан завÑршаючы Ñімвал %c"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, fuzzy, gcc-internal-format
#| msgid "In program"
msgid "stray %qc in program"
msgstr "У праграме"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr ""
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr ""
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr ""
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr ""
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr ""
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr ""
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr ""
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr ""
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr ""
@@ -22637,7 +22675,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr ""
@@ -22648,22 +22686,22 @@ msgstr ""
msgid "%qE is not initialized"
msgstr "прапушчан ініцыÑлізатар"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
msgid "missing increment expression"
msgstr "аргумент Ð´Ð»Ñ \"%s\" прапушчан"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
msgid "invalid increment expression"
msgstr "нерÑчаіÑны ініцыÑлізатар"
@@ -23521,7 +23559,7 @@ msgstr ""
msgid "bad value %qs for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23699,54 +23737,54 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "\"%s\" звычайна функцыÑ"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
#| msgid "argument of `__builtin_args_info' must be constant"
msgid "argument must be a constant"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr ""
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -23761,97 +23799,114 @@ msgstr ""
msgid "static variable %q+D is marked dllimport"
msgstr ""
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr ""
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "virtual functions cannot be friends"
+msgid "%qs function cannot have arguments"
+msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "function does not return string type"
+msgid "%qs function cannot return a value"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð½Ðµ вÑртае тып string"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr ""
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr ""
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr ""
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr ""
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr ""
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr ""
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr ""
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr ""
@@ -23973,68 +24028,68 @@ msgstr "нерÑчаіÑнае выкарыÑтаньне `::'"
msgid "internal error: bad register: %d"
msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°: дрÑнны Ñ€ÑгіÑÑ‚Ñ€: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr ""
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr ""
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
msgid "unknown src"
msgstr "невÑдомы Ñ€Ñжым машыны \"%s\""
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
msgid "unknown dest"
msgstr "невÑдомы Ñ€Ñжым машыны \"%s\""
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr ""
@@ -24195,412 +24250,412 @@ msgstr "немагчыма Ñтварыць чаÑовы файл"
msgid "can%'t set position in PCH file: %m"
msgstr "немагчыма зачыніць уваходзÑчы файл %s"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, fuzzy, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "__buitin_saveregs не падтрымліваецца гÑтай мÑтай"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr "-pipe не падтрымліваецца"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s does not support %s"
msgid "code model %s does not support PIC mode"
msgstr "%s не падтрымлівае %s"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, fuzzy, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "ISO C не падтрымлівае комлекÑÐ½Ñ‹Ñ Ñ†ÑÐ»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr ""
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr ""
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "невÑÐ´Ð¾Ð¼Ð°Ñ Ð½Ð°Ð·Ð²Ð° Ñ€ÑгіÑтра: %s\n"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "памер \"%s\" больш чам %d байт"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr ""
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr ""
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, fuzzy, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr "ÐерÑчаіÑны выбар %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "першым аргументам \"%s\" павінен быць \"int\""
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "\"%s\" атрыбут ігнарыруецца"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qE incompatible attribute ignored"
@@ -24672,19 +24727,19 @@ msgstr "\"%s\" звычайна функцыÑ"
msgid "%qE attribute requires a string constant argument"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
msgid "version attribute is not a string"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
@@ -24752,7 +24807,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
@@ -24809,7 +24864,7 @@ msgstr ""
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr ""
@@ -25332,27 +25387,27 @@ msgstr ""
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr ""
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr ""
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr ""
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -25780,83 +25835,83 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, fuzzy, gcc-internal-format
#| msgid "%s is too large"
msgid "stack frame too large"
msgstr "%s - вельмі вÑлікі"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr ""
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr ""
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr ""
@@ -25912,12 +25967,12 @@ msgstr "-pipe не падтрымліваецца"
msgid "-m64 not supported in this configuration"
msgstr "-pipe не падтрымліваецца"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr ""
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr ""
@@ -25934,64 +25989,64 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr ""
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr ""
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr ""
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr ""
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-pipe не падтрымліваецца"
@@ -26102,53 +26157,53 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, fuzzy, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__buitin_saveregs не падтрымліваецца гÑтай мÑтай"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "\"%s\" звычайна функцыÑ"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "\"%s\" звычайна функцыÑ"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr ""
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "аргумент `__builtin_args_info' павінен быць канÑтантай"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -26495,40 +26550,40 @@ msgstr ""
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qs attribute ignored"
msgstr "\"%s\" атрыбут ігнарыруецца"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr ""
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "\"%s\" звычайна функцыÑ"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qE attribute has no effect"
msgstr "\"%s\" атрыбут ігнарыруецца"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "\"%s\" атрыбут ігнарыруецца"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "нÑвернае выкарыÑтанне \"restict\""
@@ -26544,7 +26599,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr ""
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26832,7 +26887,7 @@ msgstr ""
msgid "invalid conversion from %qT to %qT"
msgstr "пераўтварÑньне з `%T' у `%T'"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr ""
@@ -26842,191 +26897,191 @@ msgstr ""
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr ""
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
#| msgid "cannot find source %s"
msgid "cannot bind %qT lvalue to %qT"
msgstr "не магу знайÑці крыніцу %s"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, fuzzy, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:5900
+#: cp/call.c:5904
#, fuzzy, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr ""
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr ""
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr ""
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr ""
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr ""
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr ""
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr ""
-#: cp/call.c:6564
+#: cp/call.c:6574
#, gcc-internal-format
msgid " in call to %q+D"
msgstr ""
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr ""
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr ""
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr ""
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr ""
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr ""
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:8113
+#: cp/call.c:8128
#, fuzzy, gcc-internal-format
#| msgid "converting from `%T' to `%T'"
msgid " for conversion from %qT to %qT"
msgstr "пераўтварÑньне з `%T' у `%T'"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr ""
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr ""
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr ""
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr ""
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "converting from `%T' to `%T'"
msgid "could not convert %qE from %qT to %qT"
msgstr "пераўтварÑньне з `%T' у `%T'"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr ""
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr ""
@@ -27237,221 +27292,221 @@ msgstr "бітавае поле \"%s\" мае нерÑчаіÑны тып"
msgid "field %q+D invalidly declared method type"
msgstr "бітавае поле \"%s\" мае нерÑчаіÑны тып"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr ""
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr ""
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr ""
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr ""
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr ""
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3998
+#: cp/class.c:3999
#, fuzzy, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr ""
-#: cp/class.c:4901
+#: cp/class.c:4902
#, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr ""
-#: cp/class.c:4903
+#: cp/class.c:4904
#, gcc-internal-format
msgid " %q+T has a non-trivial destructor"
msgstr ""
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr ""
-#: cp/class.c:4958
+#: cp/class.c:4959
#, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr ""
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr ""
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr ""
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr ""
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, fuzzy, gcc-internal-format
#| msgid "previous definition of `%#T'"
msgid "redefinition of %q#T"
msgstr "папÑÑ€ÑднÑе вызначÑньне `%#T'"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr ""
-#: cp/class.c:6139
+#: cp/class.c:6140
#, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr ""
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr ""
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:6757
+#: cp/class.c:6758
#, fuzzy, gcc-internal-format
#| msgid "language %s not recognized"
msgid "language string %<\"%E\"%> not recognized"
msgstr "мова %s не раÑпазнана"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr ""
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr ""
-#: cp/class.c:7021
+#: cp/class.c:7022
#, fuzzy, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "прапушчан ініцыÑлізатар"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr ""
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr ""
@@ -27461,13 +27516,13 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %q#D"
msgstr "абвÑшчÑньне `%#D'"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr ""
@@ -27487,7 +27542,7 @@ msgstr "\"%s\" мае незавершаны тып"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr ""
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, gcc-internal-format
msgid "zero as null pointer constant"
msgstr ""
@@ -27517,7 +27572,7 @@ msgstr ""
msgid "conversion from %qT to %qT discards qualifiers"
msgstr ""
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr ""
@@ -27930,7 +27985,7 @@ msgstr "папÑÑ€ÑднÑе абвÑшчÑньне `%#D'"
msgid "declaration of template %q#D"
msgstr "абвÑшчÑньне шаблёну `%#D'"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, fuzzy, gcc-internal-format
#| msgid "conflicts with previous declaration `%#D'"
msgid "conflicts with previous declaration %q+#D"
@@ -27985,7 +28040,7 @@ msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
msgid "%q+#D previously defined here"
msgstr "папÑÑ€ÑднÑе вызначÑньне"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
@@ -28108,7 +28163,7 @@ msgstr ""
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr ""
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "redeclaration of %q#D"
@@ -28180,7 +28235,7 @@ msgstr ""
msgid "%qD is not a type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, fuzzy, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "нÑвернае выкарыÑтанне \"restict\""
@@ -28310,124 +28365,124 @@ msgstr ""
msgid "%<constexpr%> cannot be used for type declarations"
msgstr ""
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr ""
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "параметр \"%s\" ініцыÑлізаваны"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr ""
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr ""
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr ""
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, fuzzy, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr ""
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, fuzzy, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, fuzzy, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr ""
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr ""
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, fuzzy, gcc-internal-format
#| msgid "array size missing in `%D'"
msgid "array size missing in %qD"
msgstr "прапушчан памер маÑіва Ñž `%D'"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, fuzzy, gcc-internal-format
#| msgid "zero-size array `%D'"
msgid "zero-size array %qD"
@@ -28436,392 +28491,392 @@ msgstr "нулÑвы памер маÑіва `%D'"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr ""
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "тып параметра \"%s\" не аб'Ñўлены"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr ""
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, fuzzy, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr ""
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, fuzzy, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr ""
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, fuzzy, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, fuzzy, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, fuzzy, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr ""
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr ""
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr ""
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr ""
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr ""
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, fuzzy, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr ""
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr ""
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr ""
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr ""
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in `%D'"
msgid "array size missing in %qT"
msgstr "прапушчан памер маÑіва Ñž `%D'"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array `%D'"
msgid "zero-size array %qT"
msgstr "нулÑвы памер маÑіва `%D'"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr ""
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr ""
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr ""
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr ""
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr ""
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr ""
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr ""
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr ""
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr ""
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr ""
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr ""
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr ""
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, fuzzy, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, fuzzy, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "ініцыÑлізацыÑ"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, fuzzy, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr ""
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr ""
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr ""
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr ""
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr ""
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, fuzzy, gcc-internal-format
#| msgid "`main' must return `int'"
msgid "%<::main%> must return %<int%>"
msgstr "`main' павінна вÑртаць `int'"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr ""
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "ініцыÑлізацыÑ"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr ""
@@ -28830,916 +28885,916 @@ msgstr ""
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr ""
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr ""
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr ""
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr ""
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' has non-integer type"
msgid "size of array %qD has non-integral type %qT"
msgstr "памер маÑіва `%D' не цÑлалікавы тып"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, fuzzy, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' is negative"
msgid "size of array %qD is negative"
msgstr "памер маÑіва `%D' - адмоўны"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "адмоўны памер маÑіва "
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, fuzzy, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr ""
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %qD as array of void"
msgstr "абвÑшчÑньне `%#D'"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, gcc-internal-format
msgid "creating array of void"
msgstr ""
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr ""
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, gcc-internal-format
msgid "creating array of functions"
msgstr ""
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr ""
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, gcc-internal-format
msgid "creating array of references"
msgstr ""
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr ""
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, gcc-internal-format
msgid "creating array of function members"
msgstr ""
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr ""
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr ""
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr ""
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %qD as non-member"
msgstr "абвÑшчÑньне `%#D'"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr ""
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %qD as %<typedef%>"
msgstr "абвÑшчÑньне `%#D'"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %qD as parameter"
msgstr "абвÑшчÑньне `%#D'"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr ""
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, fuzzy, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
#| msgid "conflicts with previous declaration `%#D'"
msgid "conflicting specifiers in declaration of %qs"
msgstr "канфлікт з папÑÑ€Ñднім абвÑшчÑньнем `%#D'"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_saveregs not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__buitin_saveregs не падтрымліваецца гÑтай мÑтай"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not support `long long'"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ не падтрымлівае \"long long\""
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for `%s'"
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "long, short, signed ці unsigned нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr ""
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<long long%> invalid for %qs"
msgstr "complex нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<long%> invalid for %qs"
msgstr "complex нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<short%> invalid for %qs"
msgstr "complex нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for `%s'"
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "long, short, signed ці unsigned нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr ""
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr ""
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for `%s'"
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "long, short, signed ці unsigned нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for `%s'"
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "long, short, signed ці unsigned нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "complex invalid for %qs"
msgstr "complex нерÑчаіÑны Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "\"%s\" - гÑта не пачатак дÑкларацыі"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr ""
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
#| msgid "Invalid declaration"
msgid "%<virtual%> outside class declaration"
msgstr "ÐерÑчаіÑнае абвÑшчÑнне"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, fuzzy, gcc-internal-format
#| msgid "duplicate label declaration `%s'"
msgid "multiple storage classes in declaration of %qs"
msgstr "паўторнае абвÑшчÑньне адмеціны `%s'"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr ""
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr ""
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr ""
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr ""
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr ""
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, fuzzy, gcc-internal-format
#| msgid "`%s' undeclared (first use in this function)"
msgid "%qs declared as function returning a function"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr ""
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr ""
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function `%s'"
msgid "can%'t initialize friend function %qs"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "Ðе магу знайÑці файл Ð´Ð»Ñ ÐºÐ»Ð°Ñа %s."
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr ""
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr ""
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr ""
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr ""
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, fuzzy, gcc-internal-format
#| msgid "size of array `%s' is too large"
msgid "size of array %qs is too large"
msgstr "памер маÑіва \"%s\" вельмі вÑлікі"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr ""
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, fuzzy, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, fuzzy, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, fuzzy, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, fuzzy, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr ""
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr ""
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, fuzzy, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, fuzzy, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr ""
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr ""
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, fuzzy, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "Ðе магу знайÑці дÑкларацыю пратакола Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "тып параметра \"%s\" не аб'Ñўлены"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `::'"
msgid "invalid use of %<::%>"
msgstr "нерÑчаіÑнае выкарыÑтаньне `::'"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, fuzzy, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr ""
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
#| msgid "declaration of template `%#D'"
msgid "declaration of %qD as member of %qT"
msgstr "абвÑшчÑньне шаблёну `%#D'"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr ""
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr ""
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, fuzzy, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, fuzzy, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, fuzzy, gcc-internal-format
#| msgid "declaration of template `%#D'"
msgid " in instantiation of template %qT"
msgstr "абвÑшчÑньне шаблёну `%#D'"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, fuzzy, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr ""
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr ""
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr ""
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr ""
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr ""
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr ""
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr ""
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr ""
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr ""
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "default argument for %q#D has type %qT"
msgstr "звычайны аргумÑнт Ð´Ð»Ñ `%#D' мае тып `%T'"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "default argument for parameter of type %qT has type %qT"
msgstr "звычайны аргумÑнт Ð´Ð»Ñ `%#D' мае тып `%T'"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "тып параметра \"%s\" не аб'Ñўлены"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, fuzzy, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "тып параметра \"%s\" не аб'Ñўлены"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr ""
@@ -29759,170 +29814,170 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, fuzzy, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, fuzzy, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr ""
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr ""
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr ""
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr ""
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, fuzzy, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, fuzzy, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr ""
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
#| msgid "this is a previous declaration"
msgid "%qD has a previous declaration here"
msgstr "гÑта папÑÑ€ÑднÑе абвÑшчÑньне"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, fuzzy, gcc-internal-format
#| msgid "this is a previous declaration"
msgid "%q+T has a previous declaration here"
msgstr "гÑта папÑÑ€ÑднÑе абвÑшчÑньне"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -29934,90 +29989,90 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, fuzzy, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "параметр \"%s\" ініцыÑлізаваны"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, fuzzy, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "памер \"%s\" - %d байт"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, fuzzy, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "ÑÐµÐºÑ†Ñ‹Ñ \"%s\" канфліктуе з папÑÑ€ÑднÑй дÑкларацыÑй"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, fuzzy, gcc-internal-format
#| msgid "declaration of template `%#D'"
msgid "redeclaration of %qT as a non-template"
msgstr "абвÑшчÑньне шаблёну `%#D'"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%D'"
msgid "previous declaration %q+D"
msgstr "папÑÑ€ÑднÑе абвÑшчÑньне `%D'"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, fuzzy, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "паўтарÑнне \"restrict\""
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, gcc-internal-format
msgid "previous definition here"
msgstr "папÑÑ€ÑднÑе вызначÑньне"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -30026,75 +30081,75 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr ""
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr ""
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, fuzzy, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "вÑртаемы тып \"%s\" не \"int\""
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr ""
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, fuzzy, gcc-internal-format
#| msgid "no previous declaration for `%s'"
msgid "no previous declaration for %q+D"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
#| msgid "Invalid declaration"
msgid "invalid function declaration"
msgstr "ÐерÑчаіÑнае абвÑшчÑнне"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, fuzzy, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "тып параметра \"%s\" не аб'Ñўлены"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label `%D' defined but not used"
msgid "parameter %q+D set but not used"
msgstr "адмеціна `%D' вызначана, але не выкарыÑтоўваецца"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, fuzzy, gcc-internal-format
msgid "invalid member function declaration"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, fuzzy, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "не знойдзен ÐºÐ»Ð°Ñ \"%s\""
@@ -30134,7 +30189,7 @@ msgstr ""
msgid "deleting %qT is undefined"
msgstr "метка \"%s\" ужываецца, але не вызначана"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, fuzzy, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "пуÑтое абвÑшчÑнне"
@@ -30396,7 +30451,7 @@ msgstr ""
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "памер \"%s\" - %d байт"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr ""
@@ -30704,7 +30759,7 @@ msgstr ""
msgid "bad array initializer"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
msgid "%qT is not a class type"
msgstr "\"%s\" мае незавершаны тып"
@@ -30790,67 +30845,67 @@ msgstr ""
msgid "parenthesized initializer in array new"
msgstr ""
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr ""
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "Ðе магу знайÑці ÐºÐ»Ð°Ñ \"%s\""
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr ""
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr ""
@@ -30910,42 +30965,42 @@ msgstr ""
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -31031,59 +31086,59 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr ""
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "YYDEBUG не вызначан."
-#: cp/method.c:1716
+#: cp/method.c:1717
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr ""
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "conflicts with previous declaration `%#D'"
msgid "%q#D conflicts with a previous declaration"
msgstr "канфлікт з папÑÑ€Ñднім абвÑшчÑньнем `%#D'"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%D'"
msgid "previous declaration %q+#D"
msgstr "папÑÑ€ÑднÑе абвÑшчÑньне `%D'"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, fuzzy, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
@@ -31094,267 +31149,267 @@ msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, fuzzy, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "ÐерÑчаіÑнае абвÑшчÑнне"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
msgid "due to different exception specifications"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, fuzzy, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, fuzzy, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, fuzzy, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %q#D shadows a parameter"
msgstr "абвÑшчÑньне `%#D'"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr ""
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "ÑÐµÐºÑ†Ñ‹Ñ \"%s\" канфліктуе з папÑÑ€ÑднÑй дÑкларацыÑй"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr ""
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr ""
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr ""
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr ""
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr ""
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr ""
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, fuzzy, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "дÑÑтруктару неабходны \"%#D\""
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "ÑÐµÐºÑ†Ñ‹Ñ \"%s\" канфліктуе з папÑÑ€ÑднÑй дÑкларацыÑй"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, fuzzy, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, fuzzy, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "ÑÐµÐºÑ†Ñ‹Ñ \"%s\" канфліктуе з папÑÑ€ÑднÑй дÑкларацыÑй"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, fuzzy, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "\"%s\" мае незавершаны тып"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, fuzzy, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "\"%s\" - гÑта не пачатак дÑкларацыі"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, fuzzy, gcc-internal-format
msgid "%qD not declared"
msgstr "YYDEBUG не вызначан."
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, fuzzy, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr ""
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr ""
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "дÑÑтруктару неабходны \"%#D\""
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr ""
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, fuzzy, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr ""
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qD attribute directive ignored"
msgstr "\"%s\" атрыбут ігнарыруецца"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, fuzzy, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "\"%s\" - гÑта не пачатак дÑкларацыі"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr ""
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -31466,7 +31521,7 @@ msgstr ""
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "Ðе магу знайÑці дÑкларацыю інтÑрфейÑа Ð´Ð»Ñ \"%s\""
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, fuzzy, gcc-internal-format
msgid "%qT is not a template"
msgstr "\"%s\" мае незавершаны тып"
@@ -31486,7 +31541,7 @@ msgstr "ÐерÑчаіÑны выбар %s"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr ""
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -31630,724 +31685,724 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr ""
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr ""
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "пуÑтое абвÑшчÑньне"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
#| msgid "-pipe is not supported"
msgid "fixed-point types not supported in C++"
msgstr "-pipe не падтрымліваецца"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr ""
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, gcc-internal-format
msgid "expected primary-expression"
msgstr ""
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, fuzzy, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr ""
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, gcc-internal-format
msgid "expected id-expression"
msgstr ""
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr ""
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr ""
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr ""
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr ""
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, fuzzy, gcc-internal-format
msgid "%qD is not a template"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr ""
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr ""
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr ""
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE does not have class type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%D'"
msgid "invalid use of %qD"
msgstr "нерÑчаіÑнае выкарыÑтаньне `%D'"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr ""
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr ""
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr ""
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr ""
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr ""
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr ""
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr ""
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr ""
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
msgid "%q+#D declared here"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments specified for `%s' attribute"
msgid "default argument specified for lambda parameter"
msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць аргументаў, зададзеных Ð´Ð»Ñ Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "expected labeled-statement"
msgstr "пуÑтое цела Ñž else-выражÑнні"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr ""
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr ""
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr "вельмі шмат аргументаў у функцыі"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "expected selection-statement"
msgstr "пуÑтое цела Ñž else-выражÑнні"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr ""
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr ""
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "expected iteration-statement"
msgstr "пуÑтое цела Ñž else-выражÑнні"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, gcc-internal-format
msgid "expected jump-statement"
msgstr ""
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr ""
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, fuzzy, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "ÐерÑчаіÑÐ½Ð°Ñ ÑпецыфікацыÑ! Памылка Ñž cc."
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr ""
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr ""
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, gcc-internal-format
msgid "only constructors take member initializers"
msgstr ""
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "прапушчан ініцыÑлізатар"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr ""
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, gcc-internal-format
msgid "expected suffix identifier"
msgstr ""
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unregistered operator %s"
msgid "expected operator"
msgstr "нераÑпазнаны аператар %s"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– не могуць быць ÑÑброўÑкімі"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, gcc-internal-format
msgid "expected template-id"
msgstr ""
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, gcc-internal-format
msgid "expected %<<%>"
msgstr ""
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr ""
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr ""
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr ""
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, gcc-internal-format
msgid "expected template-name"
msgstr ""
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr ""
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, gcc-internal-format
msgid "expected template-argument"
msgstr ""
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr ""
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr ""
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr ""
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, gcc-internal-format
msgid "expected type specifier"
msgstr ""
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, gcc-internal-format
msgid "expected template-id for type"
msgstr ""
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, gcc-internal-format
msgid "expected type-name"
msgstr ""
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr ""
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr ""
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr ""
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "%qD is not an enumerator-name"
msgstr "`%D' - гÑта Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ,"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr ""
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr ""
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, fuzzy, gcc-internal-format
#| msgid "previous definition of `%#T'"
msgid "multiple definition of %q#T"
msgstr "папÑÑ€ÑднÑе вызначÑньне `%#T'"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "%qD is not a namespace-name"
msgstr "`%D' - гÑта Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ,"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, gcc-internal-format
msgid "expected namespace-name"
msgstr ""
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr ""
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, fuzzy, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "\"%s\" - гÑта не пачатак дÑкларацыі"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr ""
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, fuzzy, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "\"%s\" - гÑта не пачатак дÑкларацыі"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "invalid initializer"
msgid "expected initializer"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
#| msgid "Invalid declaration"
msgid "invalid type in declaration"
msgstr "ÐерÑчаіÑнае абвÑшчÑнне"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
msgid "initializer provided for function"
msgstr "не магу ініцыÑлізаваць ÑÑброўÑкую функцыю \"%s\""
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, fuzzy, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr ""
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -32356,253 +32411,253 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "нерÑчаіÑны абвÑшчальнік"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declarator"
msgstr "пуÑтое абвÑшчÑньне"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr ""
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr ""
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, gcc-internal-format
msgid "expected ptr-operator"
msgstr ""
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
#| msgid "duplicate `volatile'"
msgid "duplicate cv-qualifier"
msgstr "паўтарÑнне \"volatile\""
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "duplicate `volatile'"
msgid "duplicate virt-specifier"
msgstr "паўтарÑнне \"volatile\""
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%D'"
msgid "invalid use of %<auto%>"
msgstr "нерÑчаіÑнае выкарыÑтаньне `%D'"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr ""
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, gcc-internal-format
msgid "expected type-specifier"
msgstr ""
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr ""
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr ""
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr ""
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr ""
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr ""
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, gcc-internal-format
msgid "expected class-name"
msgstr ""
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr ""
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr ""
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr ""
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr ""
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "немагчыма знайÑьці файл Ð´Ð»Ñ ÐºÐ»ÑÑа %s"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr ""
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "ÐерÑчаіÑнае абвÑшчÑнне"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr ""
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, fuzzy, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "ініцыÑлізацыÑ"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr ""
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, fuzzy, gcc-internal-format
#| msgid "previous definition of `%#T'"
msgid "previous definition of %q+#T"
msgstr "папÑÑ€ÑднÑе вызначÑньне `%#T'"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, gcc-internal-format
msgid "expected class-key"
msgstr ""
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr ""
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr ""
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr ""
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr ""
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr ""
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "ÐерÑчаіÑнае абвÑшчÑнне"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, fuzzy, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "невыкарыÑтаемы параметр \"%s\""
@@ -32611,320 +32666,320 @@ msgstr "невыкарыÑтаемы параметр \"%s\""
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr ""
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, fuzzy, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "-pipe не падтрымліваецца."
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr ""
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "ініцыÑлізацыÑ"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "ініцыÑлізацыÑ"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr ""
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr ""
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr ""
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, gcc-internal-format
msgid "expected %<new%>"
msgstr ""
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr ""
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, gcc-internal-format
msgid "expected %<return%>"
msgstr ""
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, gcc-internal-format
msgid "expected %<extern%>"
msgstr ""
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr ""
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, gcc-internal-format
msgid "expected %<decltype%>"
msgstr ""
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "unregistered operator %s"
msgid "expected %<operator%>"
msgstr "нераÑпазнаны аператар %s"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr ""
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, gcc-internal-format
msgid "expected %<template%>"
msgstr ""
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, gcc-internal-format
msgid "expected %<namespace%>"
msgstr ""
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr ""
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, gcc-internal-format
msgid "expected %<asm%>"
msgstr ""
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, gcc-internal-format
msgid "expected %<try%>"
msgstr ""
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr ""
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr ""
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr ""
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, gcc-internal-format
msgid "expected %<@try%>"
msgstr ""
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr ""
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr ""
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr ""
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr ""
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, gcc-internal-format
msgid "expected %<*%>"
msgstr ""
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, gcc-internal-format
msgid "expected %<~%>"
msgstr ""
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr ""
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr ""
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr ""
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr ""
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, fuzzy, gcc-internal-format
msgid "file ends in default argument"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr ""
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr ""
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
#| msgid "invalid mode for gen_tst_reg"
msgid "invalid type for instance variable"
msgstr "нерÑчаіÑны Ñ€Ñжым Ð´Ð»Ñ gen_tst_reg"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr ""
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "\"%s\" атрыбут ігнарыруецца"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `restrict'"
msgid "invalid type for property"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr ""
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr ""
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr ""
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr ""
@@ -33023,70 +33078,70 @@ msgstr ""
msgid "%qD is not a function template"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, fuzzy, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, fuzzy, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, fuzzy, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr ""
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "%qD is not a template function"
msgstr "`%D' - гÑта Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ,"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
@@ -33099,135 +33154,135 @@ msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž Ð
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, fuzzy, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "у функцыі \"%s\":"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr ""
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr ""
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %q+#D"
msgstr "абвÑшчÑньне `%#D'"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, fuzzy, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr "невыкарыÑтаемы параметр \"%s\""
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] ""
msgstr[1] ""
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr ""
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, fuzzy, gcc-internal-format
msgid "no default argument for %qD"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr ""
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr ""
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr ""
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr ""
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr ""
@@ -33235,7 +33290,7 @@ msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr ""
@@ -33245,77 +33300,77 @@ msgstr ""
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, fuzzy, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, fuzzy, gcc-internal-format
#| msgid "declaration of template `%#D'"
msgid "template definition of non-template %q#D"
msgstr "абвÑшчÑньне шаблёну `%#D'"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr ""
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "невыкарыÑтаемы параметр \"%s\""
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "невыкарыÑтаемы параметр \"%s\""
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr ""
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, fuzzy, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr "ініцыÑлізацыÑ"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, fuzzy, gcc-internal-format
msgid "%qT is not a template type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, fuzzy, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "нÑвернае выкарыÑтанне \"restict\""
msgstr[1] "нÑвернае выкарыÑтанне \"restict\""
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
msgstr[1] "нÑма папÑÑ€ÑднÑга аб'ÑÑžÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\""
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, fuzzy, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "невыкарыÑтаемы параметр \"%s\""
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr ""
@@ -33324,332 +33379,332 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, fuzzy, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
#| msgid "previous definition here"
msgid "original definition appeared here"
msgstr "папÑÑ€ÑднÑе вызначÑньне"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr ""
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr ""
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr ""
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr "невыкарыÑтаемы параметр \"%s\""
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr ""
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr ""
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr ""
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr ""
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr ""
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr ""
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr ""
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr "параметр \"%s\" ініцыÑлізаваны"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr ""
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr ""
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "in template argument for type %qT "
msgstr "звычайны аргумÑнт Ð´Ð»Ñ `%#D' мае тып `%T'"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr ""
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr ""
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr ""
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr ""
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr ""
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr ""
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr ""
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr ""
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr ""
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr ""
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr ""
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr ""
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `restrict'"
msgid "invalid use of destructor %qE as a type"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr ""
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr ""
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr ""
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr ""
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr ""
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr ""
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr ""
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr ""
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of arguments specified for `%s' attribute"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць аргументаў, зададзеных Ð´Ð»Ñ Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, fuzzy, gcc-internal-format
msgid "provided for %q+D"
msgstr "дÑÑтруктару неабходны \"%#D\""
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "параметр \"%s\" ініцыÑлізаваны"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
msgid "%q#D is not a function template"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr ""
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, fuzzy, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "пуÑтое абвÑшчÑнне"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr ""
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr ""
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr ""
@@ -33667,261 +33722,261 @@ msgstr ""
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
msgid "variable %qD has function type"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, fuzzy, gcc-internal-format
#| msgid "invalid parameter type `%T'"
msgid "invalid parameter type %qT"
msgstr "нерÑчаіÑны тып парамÑтра `%T'"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, fuzzy, gcc-internal-format
#| msgid "in declaration `%D'"
msgid "in declaration %q+D"
msgstr "у абвÑшчÑньні `%D'"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, fuzzy, gcc-internal-format
#| msgid "function does not return string type"
msgid "function returning an array"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð½Ðµ вÑртае тып string"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, fuzzy, gcc-internal-format
msgid "function returning a function"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr ""
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr ""
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr ""
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr ""
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr ""
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr ""
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, fuzzy, gcc-internal-format
msgid "use of %qs in template"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr ""
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr ""
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr ""
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr ""
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, fuzzy, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, fuzzy, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr ""
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "template argument for %qD uses local type %qT"
msgstr "звычайны аргумÑнт Ð´Ð»Ñ `%#D' мае тып `%T'"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, fuzzy, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "тып параметра \"%s\" не аб'Ñўлены"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr ""
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, fuzzy, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr ""
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr ""
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr ""
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr ""
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr ""
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr ""
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
@@ -33933,32 +33988,32 @@ msgstr "паўторнае абвÑшчÑнне меткі \"%s\""
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr ""
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr ""
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -33966,12 +34021,12 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -34166,7 +34221,7 @@ msgstr "нÑвернае выкарыÑтанне \"restict\""
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
@@ -34206,443 +34261,443 @@ msgstr ""
msgid "invalid definition of qualified type %qT"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, fuzzy, gcc-internal-format
msgid "invalid base-class specification"
msgstr "ÐерÑчаіÑÐ½Ð°Ñ ÑпецыфікацыÑ! Памылка Ñž cc."
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, gcc-internal-format
msgid "%qD is not captured"
msgstr ""
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr ""
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr ""
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr ""
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr ""
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, fuzzy, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr ""
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "\"%s\" мае незавершаны тып"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, gcc-internal-format
msgid "Parameter pack __bases only valid in template declaration"
msgstr ""
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr ""
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr ""
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr ""
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr ""
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr ""
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr ""
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr ""
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr ""
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr ""
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr ""
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr ""
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr ""
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr ""
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr ""
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr ""
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr ""
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
msgid "%qD used before its definition"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr ""
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr ""
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, gcc-internal-format
msgid "array subscript out of bound"
msgstr ""
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "invalid initializer"
msgid "%qD used in its own initializer"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "%q#D is not const"
msgstr "`%D' - гÑта Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ,"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr ""
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "\"%s\" не абвешчан (першае выкарыÑтанне Ñž гÑтай функцыі)"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr ""
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr ""
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr ""
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "памер маÑіва \"%s\" адмоўны"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
msgid "non-constant array initialization"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr ""
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr ""
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr ""
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, fuzzy, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "атрыбуты Ñекцыі не падтрымліваюцца Ð´Ð»Ñ Ð³Ñтай мÑÑ‚Ñ‹"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -34732,454 +34787,459 @@ msgstr ""
msgid "invalid use of non-static member function"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr ""
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr ""
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr ""
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, fuzzy, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr ""
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr ""
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr ""
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "%qD is not a member template function"
msgstr "`%D' - гÑта Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ,"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, fuzzy, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr ""
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr ""
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "нÑвернае выкарыÑтанне \"restict\""
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr ""
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr ""
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr ""
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, fuzzy, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "\"%s\" звычайна функцыÑ"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "вельмі шмат аргументаў у функцыі \"%s\""
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to member function %q#D"
msgstr "вельмі шмат аргументаў у функцыі"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to member function %q#D"
msgstr "не хапае аргументаў у функцыі"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to function %q#D"
msgstr "вельмі шмат аргументаў у функцыі"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to function %q#D"
msgstr "не хапае аргументаў у функцыі"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "вельмі шмат аргументаў у функцыі \"%s\""
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "нехапае аргументаў у функцыі \"%s\""
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "вельмі шмат аргументаў у функцыі"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "не хапае аргументаў у функцыі"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, fuzzy, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, fuzzy, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr ""
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr ""
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
#| msgid "size of array is negative"
msgid "left rotate count is negative"
msgstr "адмоўны памер маÑіва "
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr ""
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr ""
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr ""
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr ""
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr ""
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr ""
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr ""
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr ""
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C не дазвалÑе пуÑÑ‚Ñ‹ ізыходны файл"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, fuzzy, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids an empty source file"
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C не дазвалÑе пуÑÑ‚Ñ‹ ізыходны файл"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "\"%s\" мае незавершаны тып"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr ""
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr ""
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr ""
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr ""
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr ""
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr ""
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, fuzzy, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, fuzzy, gcc-internal-format
#| msgid "converting from `%T' to `%T'"
msgid "converting from %qT to %qT"
msgstr "пераўтварÑньне з `%T' у `%T'"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr ""
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr ""
@@ -35188,222 +35248,222 @@ msgstr ""
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, fuzzy, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr ""
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, fuzzy, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C не дазвалÑе дÑкларацыі метак (label)"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, fuzzy, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr ""
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr ""
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
msgid "array used as initializer"
msgstr "нерÑчаіÑны ініцыÑлізатар"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
msgid "invalid array assignment"
msgstr "ÐерÑчаіÑны выбар %s"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr ""
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, fuzzy, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "ÐерÑчаіÑны выбар \"%s\""
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr ""
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr ""
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr ""
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "converting from `%T' to `%T'"
msgid "cannot convert %qT to %qT"
msgstr "пераўтварÑньне з `%T' у `%T'"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr ""
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr ""
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr ""
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "аргумент Ð´Ð»Ñ \"%s\" прапушчан"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr ""
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr ""
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr ""
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -35945,7 +36005,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -38097,27 +38157,27 @@ msgstr ""
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -38328,42 +38388,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr ""
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -38379,14 +38439,14 @@ msgstr ""
msgid "can't open input file: %s"
msgstr "немагчыма зачыніць уваходзÑчы файл %s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr ""
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "ÐерÑчаіÑны выбар \"%s\""
@@ -38496,12 +38556,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -40320,134 +40380,134 @@ msgstr "памылка запіÑу Ñž %s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't open file `%s' for reading: %s\n"
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "%s: немагчыма адчыніць файл `%s' Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ: %s\n"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't open file `%s' for reading: %s\n"
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: немагчыма адчыніць файл `%s' Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ: %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file `%s': %s\n"
msgid "Can't delete module file '%s': %s"
msgstr "%s: немагчыма знішчыць файл \"%s\": %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't change mode of file `%s': %s\n"
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: немагчыма зьмÑніць Ñ€Ñжым файла `%s': %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file `%s': %s\n"
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: немагчыма знішчыць файл \"%s\": %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't open file `%s' for reading: %s\n"
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "%s: немагчыма адчыніць файл `%s' Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ: %s\n"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -40532,7 +40592,7 @@ msgstr ""
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -41855,7 +41915,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr ""
@@ -42005,7 +42065,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -42388,182 +42448,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -42572,175 +42632,175 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr ""
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr ""
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr ""
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr ""
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -42748,953 +42808,953 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "size of array `%s' is too large"
msgid "String length at %L is too large"
msgstr "памер маÑіва \"%s\" вельмі вÑлікі"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr ""
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr ""
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr ""
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr ""
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr ""
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr ""
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr ""
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr ""
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr ""
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr ""
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "label `%s' defined but not used"
msgid "Label %d at %L defined but not used"
msgstr "адмеціна `%s' вызначана, але Ð½Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñтоўваецца"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "label `%s' defined but not used"
msgid "Label %d at %L defined but cannot be used"
msgstr "адмеціна `%s' вызначана, але Ð½Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñтоўваецца"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -44310,17 +44370,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -44565,7 +44625,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr ""
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -44870,7 +44930,7 @@ msgstr ""
msgid "internal error - invalid Utf8 name"
msgstr ""
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr ""
diff --git a/gcc/po/da.po b/gcc/po/da.po
index 8286d658c4f..1af78a4686a 100644
--- a/gcc/po/da.po
+++ b/gcc/po/da.po
@@ -128,7 +128,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 3.4-b20040206\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2004-10-03 19:17+0200\n"
"Last-Translator: Ole Laursen <olau@hardworking.dk>\n"
"Language-Team: Danish <dansk@klid.dk>\n"
@@ -137,7 +137,7 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
#, fuzzy
msgid "<anonymous>"
@@ -149,7 +149,7 @@ msgstr "<anonym %s>"
msgid "({anonymous})"
msgstr "((anonym))"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
#| msgid "garbage at end of #line"
msgid "expected end of line"
@@ -157,11 +157,11 @@ msgstr "ragelse i slutningen af #line"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<;%>"
@@ -170,18 +170,18 @@ msgstr "';' forventet"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<(%>"
msgstr "';' forventet"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<,%>"
@@ -193,20 +193,20 @@ msgstr "';' forventet"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<)%>"
msgstr "';' forventet"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<]%>"
@@ -216,28 +216,28 @@ msgstr "';' forventet"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<}%>"
msgstr "';' forventet"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<{%>"
msgstr "';' forventet"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<:%>"
msgstr "';' forventet"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr ""
@@ -248,43 +248,43 @@ msgstr ""
msgid "expected %<.%>"
msgstr "';' forventet"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<@end%>"
msgstr "uventet operand"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<>%>"
msgstr "';' forventet"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<=%>"
msgstr "';' forventet"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr ""
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<[%>"
msgstr "';' forventet"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
#| msgid "((anonymous))"
msgid "(anonymous)"
@@ -471,12 +471,12 @@ msgstr "'%%l'-operand er ikke en etiket"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "kommatalskonstant misbrugt"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "ugyldigt udtryk som operand"
@@ -1395,19 +1395,19 @@ msgstr "I filen inkluderet af %s:%d"
msgid " inlined from %qs"
msgstr "I filen inkluderet af %s:%u"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr ""
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
@@ -1605,16 +1605,16 @@ msgid "this is the insn:"
msgstr "dette er instruktionen:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "kunne ikke finde et register at bortødsle"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "VOID-tilstand ved uddata"
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr ""
@@ -2941,121 +2941,121 @@ msgstr "returnering"
msgid "<unknown>"
msgstr ""
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "ugyldig %%H-værdi"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "ugyldig %%J-værdi"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "ugyldig %%r-værdi"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "ugyldig %%R-værdi"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "ugyldig %%N-værdi"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "ugyldig %%P-værdi"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "ugyldig %%h-værdi"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "ugyldig %%L-værdi"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "ugyldig %%m-værdi"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "ugyldig %%M-værdi"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "ugyldig %%U-værdi"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "ugyldig %%s-værdi"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "ugyldig %%C-værdi"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "ugyldig %%E-værdi"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "ukendt relokaliserings-unspec"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "ugyldig %%xn-kode"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, fuzzy, c-format
#| msgid "Generate char instructions"
msgid "predicated Thumb instruction"
msgstr "Generér char-instruktioner"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, fuzzy, c-format
#| msgid "ret instruction not implemented"
msgid "predicated instruction in conditional sequence"
msgstr "ret-instruktion ikke implementeret"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "unsupported operand size for extended register"
msgid "Unsupported operand for code '%c'"
msgstr "ikke-understøttet operandstørrelse for udvidede registre"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, fuzzy, c-format
#| msgid "invalid %%f operand"
msgid "invalid shift operand"
msgstr "ugyldig %%f-operand"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -3064,93 +3064,93 @@ msgstr "ugyldig %%f-operand"
msgid "invalid operand for code '%c'"
msgstr "ugyldig operandkode '%c'"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, fuzzy, c-format
#| msgid "unconditional %2d never executed\n"
msgid "instruction never executed"
msgstr "ubetinget %2d aldrig udført\n"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, fuzzy, c-format
#| msgid "missing open paren"
msgid "missing operand"
msgstr "manglende startparantes"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
#| msgid "function returns an aggregate"
msgid "function parameters cannot have __fp16 type"
msgstr "funktion returnerer en værdi af en sammensat type"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "funktionen returnerer ikke en strengtype"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, fuzzy, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "hexadecimal tegnkonstant kan ikke være i en byte"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use `&' constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "uddataoperand %d skal bruge begrænsningen '&'"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "ugyldig adresse, ikke (reg+disp):"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "address offset not a constant"
msgid "bad address, not a constant:"
msgstr "adresseafsæt er ikke en konstant"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "ugyldig adresse, ikke (reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not post_inc or pre_dec:"
msgstr "ugyldig adresse, ikke (reg+disp):"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "intern oversætterfejl - ugyldig adresse:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "intern oversætterfejl - ugyldig tilstand:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "ugyldig instruktion:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "ukorrekt instruktion:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "ukendt flytteinstruktion:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "ugyldig skifteinstruktion:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "intern oversætterfejl - ukorrekt skift:"
@@ -3167,8 +3167,8 @@ msgstr "ugyldige begrænsninger for operand"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -3250,21 +3250,21 @@ msgstr "uventet operand"
msgid "unrecognized address"
msgstr "ukendt adresse"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "ukendt formodet konstant"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "uventede bivirkninger i adresse"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr ""
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "PIC-register er ikke sat op"
@@ -3272,7 +3272,7 @@ msgstr "PIC-register er ikke sat op"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "ugyldig operand-uddatakode"
@@ -3436,81 +3436,81 @@ msgstr "Ugyldig output_move_double-operand"
msgid "bad output_condmove_single operand"
msgstr "Ugyldig output_condmove_single-operand"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "ugyldig UNSPEC som operand"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
#| msgid "invalid operand code `%c'"
msgid "invalid operand size for operand code '%c'"
msgstr "ugyldig operandkode '%c'"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
#| msgid "invalid operand output code"
msgid "invalid operand type used with operand code '%c'"
msgstr "ugyldig operand-uddatakode"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "operand er hverken en konstant eller en betingelseskode, ugyldig operandkode 'c'"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "operand er hverken en konstant eller en betingelseskode, ugyldig operandkode 'c'"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "operand er hverken en konstant eller en betingelseskode, ugyldig operandkode 'c'"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "operand er hverken en konstant eller en betingelseskode, ugyldig operandkode 'c'"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "operand er hverken en konstant eller en betingelseskode, ugyldig operandkode 'c'"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "operand er hverken en konstant eller en betingelseskode, ugyldig operandkode 'c'"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "operand er hverken en konstant eller en betingelseskode, ugyldig operandkode 'c'"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, fuzzy, c-format
#| msgid "invalid operand code `%c'"
msgid "invalid operand code '%c'"
msgstr "ugyldig operandkode '%c'"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "ugyldige begrænsninger for operand"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "ukendt instruktionstilstand"
@@ -3539,42 +3539,42 @@ msgstr "miljøvariablen DJGPP peger på den manglende fil '%s'"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "miljøvariablen DJGPP peger på den ødelagte fil '%s'"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%j code"
msgid "invalid %%G mode"
msgstr "ugyldig %%j-kode"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: ukendt kode"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
#, fuzzy
#| msgid "invalid conversion from `%T' to `%T'"
msgid "invalid conversion from %<__fpreg%>"
msgstr "ugyldig konvertering fra '%T' til '%T'"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
#, fuzzy
#| msgid "invalid conversion to type `%T' from type `%T'"
msgid "invalid conversion to %<__fpreg%>"
msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
#, fuzzy
#| msgid "invalid operand to %%p code"
msgid "invalid operation on %<__fpreg%>"
msgstr "ugyldig operand til %%p-koden"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "ugyldig %%P-operand"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "ugyldig %%p-værdi"
@@ -3653,7 +3653,7 @@ msgid "post-increment address is not a register"
msgstr "postfiks forøgelsesadresse er ikke et register"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "ugyldig adresse"
@@ -3840,89 +3840,89 @@ msgstr ""
msgid "bad move"
msgstr "ugyldig operand"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%H value"
msgid "invalid %%c value"
msgstr "ugyldig %%H-værdi"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "ugyldig %%f-værdi"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "ugyldig %%F-værdi"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "ugyldig %%G-værdi"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "ugyldig %%j-kode"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "ugyldig %%J-kode"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "ugyldig %%k-værdi"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "ugyldig %%K-værdi"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "ugyldig %%O-værdi"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "ugyldig %%q-værdi"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "ugyldig %%S-værdi"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "ugyldig %%T-værdi"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "ugyldig %%u-værdi"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "ugyldig %%v-værdi"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, fuzzy, c-format
msgid "invalid %%x value"
msgstr "ugyldig %%x/X-værdi"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
#| msgid "invalid punctuation `%c' in constraint"
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "ugyldig punktuering '%c' i begrænsning"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
#, fuzzy
#| msgid "too few arguments to function"
msgid "AltiVec argument passed to unprototyped function"
@@ -4036,66 +4036,66 @@ msgstr "ugyldig operand til %%R-koden"
msgid "invalid operand to %%S"
msgstr "ugyldig operand til %%R-koden"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
#, fuzzy
#| msgid "created and used with differing settings of `-m%s'"
msgid "created and used with different architectures / ABIs"
msgstr "oprettet og brugt med en anden indstilling af '-m%s'"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
#, fuzzy
#| msgid "created and used with differing settings of `-m%s'"
msgid "created and used with different ABIs"
msgstr "oprettet og brugt med en anden indstilling af '-m%s'"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
#, fuzzy
#| msgid "created and used with differing settings of `-m%s'"
msgid "created and used with different endianness"
msgstr "oprettet og brugt med en anden indstilling af '-m%s'"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "ugyldig %%Y-operand"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "ugyldig %%A-operand"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "ugyldig %%B-operand"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "ugyldig %%C-operand"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "ugyldig %%D-operand"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "ugyldig %%f-operand"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "ugyldig %%s-operand"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "long long-konstant er ikke en gyldig umiddelbar operand"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "kommatalskonstant er ikke en gyldig umiddelbar operand"
@@ -4123,7 +4123,7 @@ msgstr "'o'-operanden er ikke konstant"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: ukendt kode"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "ugyldig %%c-operand"
@@ -4139,25 +4139,25 @@ msgstr "ugyldig %%d-operand"
msgid "invalid %%H specifier"
msgstr "ugyldig %%j-kode"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "ugyldig %%P-operand"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "ugyldig %%P-operand"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "ugyldig %%P-operand"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -4169,7 +4169,7 @@ msgstr "ugyldig %%P-operand"
msgid "invalid %%%c operand"
msgstr "ugyldig %%c-operand"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -4181,42 +4181,42 @@ msgstr "ugyldig %%P-operand"
msgid "invalid operand for 'r' specifier"
msgstr "ugyldig operand til 'b'-ændring"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "ugyldig %%P-operand"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "ugyldig %%P-operand"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "ugyldig %%P-operand"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "ugyldig %%P-operand"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "ugyldig %%P-operand"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -4285,12 +4285,12 @@ msgstr "ingen registre i adresse"
msgid "address offset not a constant"
msgstr "adresseafsæt er ikke en konstant"
-#: cp/call.c:8284
+#: cp/call.c:8299
#, fuzzy
msgid "candidate 1:"
msgstr "candidate%s: %+#D"
-#: cp/call.c:8285
+#: cp/call.c:8300
#, fuzzy
msgid "candidate 2:"
msgstr "candidate%s: %+#D"
@@ -4546,7 +4546,7 @@ msgstr "%s:%d: instantieret fra '%s'\n"
msgid "candidates are:"
msgstr "candidate%s: %+#D"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4609,50 +4609,50 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "forkert parametertype til unært minus"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "forkert parametertype til unært plus"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "forkert parametertype til bitkomplement"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "forkert parametertype til abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "forkert parametertype til konjugation"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "wrong type argument to unary plus"
msgid "in argument to unary !"
msgstr "forkert parametertype til unært plus"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4951,7 +4951,7 @@ msgstr "ugyldig operand"
msgid "Bad type in constant expression"
msgstr "overløb i konstant udtryk"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
#, fuzzy
#| msgid "unexpected PIC symbol"
msgid "Unexpected end of module"
@@ -4987,11 +4987,11 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "tildeling"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
#, fuzzy
#| msgid "assignment"
msgid "pointer assignment"
@@ -5081,49 +5081,49 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr ""
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
#| msgid "invalid expression as operand"
msgid "End expression in DO loop"
msgstr "ugyldigt udtryk som operand"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -5132,7 +5132,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -5212,7 +5212,7 @@ msgstr "en funktion uden returtype returnerer en ikke-tom værdi"
msgid "Memory allocation failed"
msgstr ""
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -5445,7 +5445,7 @@ msgstr "-C og -o er indbyrdes uforenelige"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -5508,6 +5508,10 @@ msgstr "shared og mdll er indbyrdes uforenelige"
msgid "static is not supported on TPF-OS"
msgstr "-traditional understøttes ikke i C++"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "kan ikke bruge både -EB og -EL"
@@ -5543,11 +5547,6 @@ msgstr "-mbig-endian og -mlittle-endian kan ikke bruges på samme tid"
msgid "no processor type specified for linking"
msgstr "specifikationsfil har ingen specifikation til sammenkædning"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-msgid "gfortran does not support -E without -cpp"
-msgstr "GNU C understøtter ikke -C uden -E"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 har ikke understøttelse for lilleendet"
@@ -5604,6 +5603,11 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "Tilvalget -shared understøttes i øjeblikket ikke for VAX ELF."
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+msgid "gfortran does not support -E without -cpp"
+msgstr "GNU C understøtter ikke -C uden -E"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni og -femit-class-files er indbyrdes uforenelige"
@@ -9120,6 +9124,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -11805,18 +11813,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
#| msgid "function declared `noreturn' has a `return' statement"
msgid "Functions which return values must end with return statements"
@@ -13552,301 +13572,311 @@ msgstr ""
msgid "Create a position independent executable"
msgstr "Generér placeringsuafhængig kode, om muligt"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of `::'"
msgid "invalid use of type"
msgstr "ugyldig brug af '::'"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating constant out of range"
-msgid "floating point constant truncated to integer"
-msgstr "kommatalskonstant er uden for det gyldige interval"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr ""
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
msgid "expected numeric type"
msgstr "uventet operand"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+msgid "expected boolean type"
+msgstr "uventet operand"
+
+#: go/gofrontend/expressions.cc:3911
msgid "expected integer or boolean type"
msgstr ""
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
#| msgid "invalid operands to binary %s"
msgid "invalid operand for unary %<&%>"
msgstr "ugyldige operander til binær %s"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
#| msgid "unexpected operand"
msgid "expected pointer"
msgstr "uventet operand"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "incompatible types in %s"
msgid "incompatible types in binary expression"
msgstr "uforenelige typer i %s"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
msgid "shift of non-integer operand"
msgstr ""
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
#| msgid "switch quantity not an integer"
msgid "shift count not unsigned integer"
msgstr "switch-størrelsen er ikke et heltal"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative insn length"
msgid "negative shift count"
msgstr "negativ instruktionslængde"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "called object is not a function"
msgid "object is not a method"
msgstr "det kaldte objekt er ikke en funktion"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
#| msgid "cast does not match function type"
msgid "method type does not match object type"
msgstr "typeomtvingelse passer ikke til funktionstype"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid use of `this' in non-member function"
msgid "invalid use of %<...%> with builtin function"
msgstr "ugyldig brug af 'this' i ikke-medlemsfunktion"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "ingen parametre"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments"
msgstr "for mange parametre til formatering"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument 1 must be a map"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
#| msgid "invalid return type for member function `%#D'"
msgid "invalid type for make function"
msgstr "ugyldig returtype for medlemsfunktionen '%#D'"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "ugyldig instruktion for 'A'"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments to make"
msgstr "for mange parametre til formatering"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument must be array or slice or channel"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
# shadowing betyder at en funktion har samme navn og dermed skjuler en anden
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "Support 3DNow! built-in functions"
msgid "unsupported argument type to builtin function"
msgstr "Understøt indbyggede 3DNow!-funktioner"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
#| msgid "argument 2 must be a 5-bit unsigned literal"
msgid "argument must be channel"
msgstr "2. parameter skal være en 5 bit-konstant uden fortegn"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument must be a field reference"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "left argument must be a slice"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
msgid "first argument must be []byte"
msgstr "den første parameter til '%s' skal være 'int'"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "second token after #line is not a string"
msgid "second argument must be slice or string"
msgstr "det andet symbol efter #line er ikke en streng"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "bit-field `%s' has invalid type"
msgid "argument 2 has invalid type"
msgstr "bitfeltet '%s' er af en ufuldstændig type"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
#| msgid "parameter `%s' has incomplete type"
msgid "argument must have complex type"
msgstr "parameteren '%s' er af en ufuldstændig type"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
#| msgid "macro names must be identifiers"
msgid "complex arguments must have identical types"
msgstr "makronavne skal være kaldenavne"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
#| msgid "Do not use hardware floating point"
msgid "complex arguments must have floating-point type"
msgstr "Benyt ikke hardware-kommatal"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of non-lvalue array"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "ugyldig brug af en tabel der ikke kan optræde som en venstreværdi"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "In function"
msgid "expected function"
msgstr "I funktionen"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
#| msgid "incompatible types in %s"
msgid "incompatible type for receiver"
msgstr "uforenelige typer i %s"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of `this' in non-member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "ugyldig brug af 'this' i ikke-medlemsfunktion"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "number of arguments doesn't match prototype"
msgid "number of results does not match number of values"
msgstr "antallet af parametre passer ikke til prototypen"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
#| msgid "macro names must be identifiers"
msgid "index must be integer"
msgstr "makronavne skal være kaldenavne"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
#| msgid "Assume int to be 8 bit integer"
msgid "slice end must be integer"
msgstr "Antag at int er 8 bit-heltal"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "incompatible types in %s"
msgid "incompatible type for map index"
msgstr "uforenelige typer i %s"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many expressions for struct"
msgstr "for mange parametre til formatering"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "for få parametre til formatering"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
#| msgid "invalid suffix on integer constant"
msgid "invalid unsafe.Pointer conversion"
msgstr "ugyldig endelse i heltalskonstant"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
#, fuzzy
#| msgid "Invalid interface type"
msgid "type assertion only valid for interface types"
msgstr "Ugyldig grænsefladetype"
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "unexpected operand"
msgid "expected channel"
msgstr "uventet operand"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
#| msgid "invalid lvalue in assignment"
@@ -13885,21 +13915,21 @@ msgstr "for mange 'l'-endelser i heltalskonstant"
msgid "expected boolean expression"
msgstr "uventet adresseudtryk"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
#| msgid "incompatible types in %s"
msgid "incompatible types in send"
msgstr "uforenelige typer i %s"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -13957,86 +13987,86 @@ msgstr ""
msgid "cannot use type %s as type %s"
msgstr "kan ikke konvertere typen '%T' til typen '%T'"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
#| msgid "different type"
msgid "different receiver types"
msgstr "anden type"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "destructors take no parameters"
msgid "different number of parameters"
msgstr "destruktionsfunktioner kan ikke have parametre"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "different type"
msgid "different parameter types"
msgstr "anden type"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
#, fuzzy
#| msgid "different type"
msgid "different varargs"
msgstr "anden type"
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
#, fuzzy
#| msgid "different type"
msgid "different result types"
msgstr "anden type"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of `%s'"
msgid "incompatible type for method %s%s%s"
msgstr "typen af den %d. parameter i '%s' passer ikke"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of `%s'"
msgid "incompatible type for method %s%s%s (%s)"
msgstr "typen af den %d. parameter i '%s' passer ikke"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "error while parsing methods"
msgid "type has no methods"
msgstr "fejl ved tolkning af metoder"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
#| msgid "ambiguous abbreviation %s"
msgid "ambiguous method %s%s%s"
msgstr "tvetydig forkortelse %s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
msgid "missing method %s%s%s"
msgstr "der mangler en parameter til tilvalget '-%s'"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -14112,7 +14142,7 @@ msgstr "en tredje parameter til '__builtin_prefetch' skal være en konstant"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "ugyldig tredje parameter til '__builtin_prefetch'; benytter nul"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function `va_start'"
msgid "too few arguments to function %<va_start%>"
@@ -14138,7 +14168,7 @@ msgstr "(så du skal overbring '%s' ikke '%s' til 'va_arg')"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
@@ -14228,7 +14258,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
@@ -14330,8 +14360,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "tom værdi er ikke ignoreret som den burde være"
@@ -14622,7 +14652,7 @@ msgstr "erklæring af '%s' skygger for en global erklæring"
msgid "declaration of %q+D shadows a previous local"
msgstr "erklæring af '%s' skygger for en tidligere lokal variabel"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
msgid "shadowed declaration is here"
@@ -14745,7 +14775,7 @@ msgstr "overløb i konstant udtryk"
msgid "%qE defined as wrong kind of tag"
msgstr "'%s' omerklæret som en anden form for symbol"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `restrict'"
msgid "invalid use of %<restrict%>"
@@ -14882,7 +14912,7 @@ msgstr "parameteren '%s' bliver tildelt en startværdi"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "et objekt af variabel størrelse må ikke tildeles en startværdi"
@@ -14893,7 +14923,7 @@ msgstr "et objekt af variabel størrelse må ikke tildeles en startværdi"
msgid "variable %qD has initializer but incomplete type"
msgstr "variablen '%#D' bliver tildelt en startværdi, men er af en ufuldstændig type"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, fuzzy, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "inline funktion '%s' givet egenskaben noinline"
@@ -14927,7 +14957,7 @@ msgstr "tabelstørrelsen mangler i '%D'"
msgid "zero or negative size array %q+D"
msgstr "nul eller negativ størrelse for tabellen '%s'"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, fuzzy, gcc-internal-format
#| msgid "storage size of `%D' isn't known"
msgid "storage size of %q+D isn%'t known"
@@ -15054,7 +15084,7 @@ msgstr "det er ikke muligt eksplicit at finde typens størrelse"
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -15153,7 +15183,7 @@ msgstr "lagringsklasse angivet for parameter '%s'"
msgid "storage class specified for unnamed parameter"
msgstr "lagringsklasse angivet for parameter '%s'"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "lagringsklasse angivet for typenavn"
@@ -15324,7 +15354,7 @@ msgstr "'%s' er erklæret som en funktion der returnerer en tabel"
msgid "function definition has qualified void return type"
msgstr "ugyldig definition af modificeret type '%T'"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "typemodifikationer ignoreret i funktionsreturtypen"
@@ -15445,7 +15475,7 @@ msgstr "ISO C forbyder const eller volatile funktionstyper"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "datamedlem må ikke have variabelt ændret type '%T'"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, fuzzy, gcc-internal-format
#| msgid "variable or field declared void"
msgid "variable or field %qE declared void"
@@ -15906,7 +15936,7 @@ msgstr "parameteren '%s' passer ikke til prototypen"
msgid "argument %qD doesn%'t match prototype"
msgstr "parameteren '%s' passer ikke til prototypen"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "ingen return-sætning i en funktion der ikke returnerer void"
@@ -16119,7 +16149,7 @@ msgstr "kaldenavnet '%s' er i modstrid med den interne navngivningsstrategi i GN
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C forbyder en tom kildefil"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not allow extra `;' outside of a function"
msgid "ISO C does not allow extra %<;%> outside of a function"
@@ -16131,7 +16161,7 @@ msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
msgid "unknown type name %qE"
msgstr "ukendt registernavn: %s"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, fuzzy, gcc-internal-format
#| msgid "repeated declaration of unit `%s'"
msgid "expected declaration specifiers"
@@ -16142,7 +16172,7 @@ msgstr "gentaget erklæring af enheden '%s'"
msgid "expected %<;%>, identifier or %<(%>"
msgstr ""
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored for `%s'"
msgid "prefix attributes are ignored for methods"
@@ -16164,7 +16194,7 @@ msgstr "uventet operand"
msgid "data definition has no type or storage class"
msgstr "definition af data uden angivelse af type eller lagringsklasse"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -16194,7 +16224,7 @@ msgstr "ISO C90 understøtter ikke komplekse typer"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 understøtter ikke komplekse typer"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, fuzzy, gcc-internal-format
#| msgid "_Pragma takes a parenthesized string literal"
msgid "expected string literal"
@@ -16225,18 +16255,18 @@ msgstr ""
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, fuzzy, gcc-internal-format
msgid "expected identifier"
msgstr "uventet operand"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "komma i slutningen af enum-liste"
@@ -16377,7 +16407,7 @@ msgstr "ISO C89 forbyder blandede erklæringer og kode"
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -16406,17 +16436,17 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, fuzzy, gcc-internal-format
msgid "expected statement"
msgstr "uventet operand"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "tom krop i en else-sætning"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "suggest braces around empty body in an %<else%> statement"
@@ -16490,7 +16520,7 @@ msgstr "ISO C tillader ikke #%s"
msgid "cannot take address of %qs"
msgstr "kan ikke finde adressen af bitfeltet '%s'"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected expression"
@@ -16535,270 +16565,270 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "operander til ?: har forskellige typer"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "forkert antal skabelonsparametre (%d, skulle være %d)"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, fuzzy, gcc-internal-format
#| msgid "ISO C89 forbids compound literals"
msgid "ISO C90 forbids compound literals"
msgstr "ISO C89 forbyder sammensatte konstanter"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr ""
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, fuzzy, gcc-internal-format
#| msgid "extra semicolon in struct or union specified"
msgid "extra semicolon in method definition specified"
msgstr "ekstra semikolon angivet i struct eller union"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
#| msgid "Class or interface declaration expected"
msgid "objective-c method declaration is expected"
msgstr "Klasse- eller grænsefladeerklæring forventet"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for typename"
msgid "no type or storage class may be specified here,"
msgstr "lagringsklasse angivet for typenavn"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr ""
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr ""
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "en dataområdeegenskab kan ikke angives for lokale variable"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
#| msgid "too many input files"
msgid "too many %qs clauses"
msgstr "for mange inddatafiler"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
#| msgid "comparison between signed and unsigned integer expressions"
msgid "collapse argument needs positive constant integer expression"
msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected integer expression"
msgstr "uventet adresseudtryk"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
msgid "invalid schedule kind"
msgstr "ugyldig roteringsinstruktion"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%s understøtter ikke %s"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "invalid #pragma %s"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "ugyldig #pragma %s"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, fuzzy, gcc-internal-format
#| msgid "invalid operand for 'p' modifier"
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "ugyldig operand til 'p'-ændring"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
#| msgid "')' or term expected"
msgid "for statement expected"
msgstr "')' eller term forventet"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
#| msgid "repeated declaration of automaton `%s'"
msgid "expected iteration declaration or initialization"
msgstr "gentaget erklæring af automaten '%s'"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a namespace"
msgid "%qD is not a variable"
msgstr "'%D' er ikke et navnerum"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "parameteren er af en ufuldstændig type"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -16809,7 +16839,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "'%s' er af en ufuldstændig type"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "ugyldig brug af void-udtryk"
@@ -16878,74 +16908,79 @@ msgstr "typer er ikke helt forenelige"
msgid "function return types not compatible due to %<volatile%>"
msgstr "en funktions returtype kan ikke være en funktion"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "beregninger udført på en henvisning til en ufuldstændig type"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, fuzzy, gcc-internal-format
#| msgid "'%D' has no member named '%E'"
msgid "%qT has no member named %qE"
msgstr "'%D' har intet medlem ved navn '%E'"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, fuzzy, gcc-internal-format
#| msgid "request for member `%s' in something not a structure or union"
msgid "request for member %qE in something not a structure or union"
msgstr "forespørgsel efter medlemmet '%s' i noget der hverken er en union eller en struktur"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "forsøg på at følge en henvisning til en variabel af en ufuldstændig type"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, fuzzy, gcc-internal-format
#| msgid "dereferencing `void *' pointer"
msgid "dereferencing %<void *%> pointer"
msgstr "forsøg på at følge en 'void *'-henvisning"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "værdien der er påført et indeks, er hverken en tabel eller en henvisningsvariabel"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "tabelindeks er ikke et heltal"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, fuzzy, gcc-internal-format
#| msgid "passing arg of pointer to function"
msgid "subscripted value is pointer to function"
msgstr "videregiver parameter af henvisning til funktion"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "accumulator number is out of bounds"
msgid "index value is out of bound"
msgstr "akkumulatortal er uden for det gyldig interval"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids subscripting `register' array"
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C forbyder opslag i 'register'-tabel"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 forbyder opslag i tabel der ikke er venstreværdi"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, fuzzy, gcc-internal-format
#| msgid "called object is not a function"
msgid "called object %qE is not a function"
@@ -16954,191 +16989,191 @@ msgstr "det kaldte objekt er ikke en funktion"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, fuzzy, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "sizeof benyttet på en ufuldstændig type"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids qualified void function return type"
msgid "function with qualified void return type called"
msgstr "ISO C forbyder void funktionsreturtype med modifikationer"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
#| msgid "__builtin_longjmp second argument must be 1"
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "den anden paramter til '__builtin_longjmp' skal være 1"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "__builtin_longjmp second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "den anden paramter til '__builtin_longjmp' skal være 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function `%s'"
msgid "too many arguments to method %qE"
msgstr "for mange parametre til funktionen '%s'"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to function %qE"
msgstr "for mange parametre til funktionen"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid "declared here"
msgstr " '%#D' erklæret her"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "typen af den formelle parameter %d er ufuldstændig"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, fuzzy, gcc-internal-format
#| msgid "%s as integer rather than floating due to prototype"
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "%s som heltal i stedet for kommatal på grund af prototypen"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, fuzzy, gcc-internal-format
#| msgid "%s as integer rather than complex due to prototype"
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "%s som heltal i stedet for complex på grund af prototypen"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, fuzzy, gcc-internal-format
#| msgid "%s as complex rather than floating due to prototype"
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "%s som complex i stedet for kommatal på grund af prototypen"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, fuzzy, gcc-internal-format
#| msgid "%s as floating rather than integer due to prototype"
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "%s som kommatal i stedet for heltal på grund af prototypen"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, fuzzy, gcc-internal-format
#| msgid "%s as complex rather than integer due to prototype"
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "%s som complex i stedet for heltal på grund af prototypen"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, fuzzy, gcc-internal-format
#| msgid "%s as floating rather than complex due to prototype"
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "%s som kommatal i stedet for complex på grund af prototypen"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, fuzzy, gcc-internal-format
#| msgid "%s as `float' rather than `double' due to prototype"
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "%s som float i stedet for double på grund af prototypen"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
#| msgid "%s as integer rather than complex due to prototype"
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "%s som heltal i stedet for complex på grund af prototypen"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, fuzzy, gcc-internal-format
#| msgid "%s with different width due to prototype"
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "%s med anderledes bredde på grund af prototypen"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, fuzzy, gcc-internal-format
#| msgid "%s as unsigned due to prototype"
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "%s som unsigned på grund af prototypen"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, fuzzy, gcc-internal-format
#| msgid "%s as signed due to prototype"
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "%s som signed på grund af prototypen"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr ""
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to function %qE"
msgstr "for få parametre til funktionen"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behavior"
msgstr "%Jsvag erklæring af '%D' efter første brug resulterer i ikke-defineret opførsel"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
#| msgid "comparison between `%#T' and `%#T'"
msgid "comparison between %qT and %qT"
msgstr "sammenligning mellem '%#T' og '%#T'"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, fuzzy, gcc-internal-format
#| msgid "pointer of type `void *' used in subtraction"
msgid "pointer of type %<void *%> used in subtraction"
msgstr "henvisning af typen 'void *' benyttet i subtraktion"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "henvisning til en funktion benyttet i subtraktion"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not support `~' for complex conjugation"
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C understøtter ikke '~' til compleks-konjugering"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "forkert parametertype til unært udråbstegn"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, fuzzy, gcc-internal-format
#| msgid "enumeration value `%s' not handled in switch"
msgid "increment of enumeration value is invalid in C++"
msgstr "enum-værdien '%s' håndteres ikke i switch-sætning"
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, fuzzy, gcc-internal-format
#| msgid "enumeration value `%s' not handled in switch"
msgid "decrement of enumeration value is invalid in C++"
msgstr "enum-værdien '%s' håndteres ikke i switch-sætning"
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not support `++' and `--' on complex types"
msgid "ISO C does not support %<++%> and %<--%> on complex types"
@@ -17146,221 +17181,221 @@ msgstr "ISO C understøtter ikke '++' og '--' for complex-typer"
# man kan ikke stikke en forøgelse (++) en type som parameter, 'type
# argument' skal opfattes på en anden måde
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "forkert parametertype til forøgelse"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "forkert parametertype til formindskelse"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "forøgelse af henvisning til en ukendt struktur"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "formindskelse af henvisning til en ukendt struktur"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of expression of type %<void%>"
msgstr "tager adressen på midlertidig variabel"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only location"
msgid "assignment of read-only location %qE"
msgstr "%s af placering der kun må læses"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only location"
msgid "increment of read-only location %qE"
msgstr "%s af placering der kun må læses"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only location"
msgid "decrement of read-only location %qE"
msgstr "%s af placering der kun må læses"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, fuzzy, gcc-internal-format
#| msgid "cannot take address of bit-field `%s'"
msgid "cannot take address of bit-field %qD"
msgstr "kan ikke finde adressen af bitfeltet '%s'"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, fuzzy, gcc-internal-format
#| msgid "global register variable `%s' used in nested function"
msgid "global register variable %qD used in nested function"
msgstr "global registervariabel '%s' benyttet i indlejret funktion"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "register variable %qD used in nested function"
msgstr "registervariabel '%s' benyttet i indlejret funktion"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, fuzzy, gcc-internal-format
#| msgid "address of global register variable `%s' requested"
msgid "address of global register variable %qD requested"
msgstr "forespørgsel efter adressen af den globale registervariabel '%s'"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, fuzzy, gcc-internal-format
#| msgid "address of register variable `%s' requested"
msgid "address of register variable %qD requested"
msgstr "forespørgsel efter adressen af registervariablen '%s'"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "non-lvalue array in conditional expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C forbyder betingede udtryk med kun én tom side"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
#| msgid "pointer type mismatch in conditional expression"
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids conditional expr between `void *' and function pointer"
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C++ forbyder betinget udtryk mellem 'void *' og funktionshenvisning"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "henvisnings- og heltalstype i betingelsesudtrykket passer ikke sammen"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "venstreoperanden til kommaudtrykket har ingen virkning"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
#| msgid "cast adds new qualifiers to function type"
msgid "cast adds %q#v qualifier to function type"
msgstr "typeomtvingning tilføjer modifikationer til en funktionstype"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "typeomtvingelse kasserer modifikationer på henvisningsmålets type"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "typetildelingen angiver en tabeltype"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "typetildelingen angiver en funktionstype"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C forbyder omtvingelse af ikke-skalar til den samme type"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C forbyder omtvingelse til uniontype"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "typetildeling til en uniontype fra en type der ikke findes i union'en"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "typeomtvingelse forøger den påkrævne justering af måltypen"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "typeomtvingelse fra henvisning til heltal af en anden størrelse"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "typeomtvingelse fra heltal til henvisning af en anden størrelse"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, fuzzy, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, fuzzy, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -17372,202 +17407,202 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "kan ikke videregive højreværdi til referenceparameter"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "%s opretter en funktionshenvisning med modifikationer fra én uden"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "%s opretter en funktionshenvisning med modifikationer fra én uden"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "%s opretter en funktionshenvisning med modifikationer fra én uden"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "%s opretter en funktionshenvisning med modifikationer fra én uden"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
#| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "typeomtvingning fra '%T' til '%T' kasserer modifikationer på henvisningsmålets type"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "typeomtvingelse kasserer modifikationer på henvisningsmålets type"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "typeomtvingelse kasserer modifikationer på henvisningsmålets type"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "return discards %qv qualifier from pointer target type"
msgstr "typeomtvingelse kasserer modifikationer på henvisningsmålets type"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C forbyder parameterkonvertering til uniontype"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, fuzzy, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "konvertering fra NaN til unsigned int"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
#| msgid "passing arg %d of pointer to function"
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "videregiver den %d. parameter af henvisning til funktion"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "assignment from pointer to non-enclosed address space"
msgstr "typeomtvingelse fra henvisning til heltal af en anden størrelse"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "Advar om funktioner som kan være kandidater til formateringsegenskaber"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "return type might be a candidate for a format attribute"
msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "fortegnene i henvisningsmål i %s er forskellige"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in assignment differ in signedness"
msgstr "fortegnene i henvisningsmål i %s er forskellige"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in initialization differ in signedness"
msgstr "fortegnene i henvisningsmål i %s er forskellige"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in return differ in signedness"
msgstr "fortegnene i henvisningsmål i %s er forskellige"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "%s fra en henvisningstype der ikke er forenelig med målets"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "assignment from incompatible pointer type"
msgstr "%s fra en henvisningstype der ikke er forenelig med målets"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "initialization from incompatible pointer type"
msgstr "%s fra en henvisningstype der ikke er forenelig med målets"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "return from incompatible pointer type"
@@ -17575,564 +17610,564 @@ msgstr "%s fra en henvisningstype der ikke er forenelig med målets"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "ugyldig brug af en tabel der ikke kan optræde som en venstreværdi"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "assignment makes pointer from integer without a cast"
msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "initialization makes pointer from integer without a cast"
msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "return makes pointer from integer without a cast"
msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "assignment makes integer from pointer without a cast"
msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "initialization makes integer from pointer without a cast"
msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "return makes integer from pointer without a cast"
msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, fuzzy, gcc-internal-format
#| msgid "incompatible type for argument %d of `%s'"
msgid "incompatible type for argument %d of %qE"
msgstr "typen af den %d. parameter i '%s' passer ikke"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of `%T' to `%T'"
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "uforenelige typer i tildeling af '%T' til '%T'"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of `%T' to `%T'"
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "uforenelige typer i tildeling af '%T' til '%T'"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
# 'automatic aggregate' betyder automatisk allokerede variabler, dvs.
# ganske almindelige lokale variabler (kan evt. erklæres med 'auto')
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "traditionel C forbyder klargøring af auto-variabler af sammensatte typer"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, fuzzy, gcc-internal-format
#| msgid "(near initialization for `%s')"
msgid "(near initialization for %qs)"
msgstr "(i nærheden af klargøringen af '%s')"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, fuzzy, gcc-internal-format
#| msgid "char-array initialized from wide string"
msgid "array initialized from parenthesized string constant"
msgstr "char-tabel får tildelt startværdi fra en bred streng"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "klargøring af fleksibelt tabelmedlem"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "char-tabel får tildelt startværdi fra en bred streng"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
#| msgid "int-array initialized from non-wide string"
msgid "wide character array initialized from non-wide string"
msgstr "int-tabel får tildelt startværdi fra en ikke-bred streng"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
#| msgid "char-array initialized from wide string"
msgid "wide character array initialized from incompatible wide string"
msgstr "char-tabel får tildelt startværdi fra en bred streng"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, fuzzy, gcc-internal-format
#| msgid "char-array initialized from wide string"
msgid "array of inappropriate type initialized from string constant"
msgstr "char-tabel får tildelt startværdi fra en bred streng"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "tabel får tildelt en startværdi fra et tabeludtryk der ikke er konstant"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "startværdielement er ikke en konstant"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not constant"
msgid "initializer element is not a constant expression"
msgstr "startværdielement er ikke en konstant"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "startværdielement kan ikke beregnes ved indlæsningstidspunktet"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "ugyldig startværdi"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, fuzzy, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "objekt af typen '%T' med variabel størrelse må ikke tildeles en startværdi"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "overskydende krøllede paranteser ved slutningen af startværdien"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "krøllede paranteser mangler omkring startværdien"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "krøllede paranteser omkring skalarstartværdi"
# RETMIG: eller er det fleksibel tabel-medlem
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "klargøring af fleksibelt tabelmedlem i en indlejret kontekst"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "manglende startværdi"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "tom skalarstartværdi"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "overskydende elementer i skalarstarværdi"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "tabelindeks i en startværdi der ikke er en tabel"
# RETMIG: record?
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "feltnavn ikke i struktur- eller union-startværdi"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer exceeds array bounds"
msgid "array index in initializer not of integer type"
msgstr "tabelindeks i startværdi overskrider tabelgrænser"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "array index in initializer is not an integer constant expression"
msgstr "størrelsen af tabel er ikke af et heltalligt konstantudtryk"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "tabelindekset i startværdien er ikke en konstant"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "tabelindeks i startværdi overskrider tabelgrænser"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "tomt indeksinterval i startværdi"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "tabelindeksinterval i startværdi overskrider tabelgrænser"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, fuzzy, gcc-internal-format
#| msgid "unknown field `%s' specified in initializer"
msgid "unknown field %qE specified in initializer"
msgstr "ukendt felt '%s' angivet i startværdi"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "klargjort felt med bivirkninger overskrevet"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, fuzzy, gcc-internal-format
#| msgid "initialized field with side-effects overwritten"
msgid "initialized field overwritten"
msgstr "klargjort felt med bivirkninger overskrevet"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "for mange elementer i char-tabelstartværdien"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "for mange elementer i struct-startværdi"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "ikke-statisk klargøring af fleksibelt tabelmedlem"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "for mange elementer i union-startværdi"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "traditionel C forbyder tildeling af startværdi til unioner"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "for mange elementer i tabelstartværdi"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "for mange elementer i vektorstartværdi"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "for mange elementer i skalarstartværdi"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids `goto *expr;'"
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C forbyder 'goto *udtryk;'"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, fuzzy, gcc-internal-format
#| msgid "function declared `noreturn' has a `return' statement"
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "funktion der er erklæret 'noreturn' har en 'return'-sætning"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, fuzzy, gcc-internal-format
#| msgid "`return' with no value, in function returning non-void"
msgid "%<return%> with no value, in function returning non-void"
msgstr "'return' uden nogen værdi i en funktion der ikke returnerer void"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, fuzzy, gcc-internal-format
#| msgid "`return' with a value, in function returning void"
msgid "%<return%> with a value, in function returning void"
msgstr "'return' med en værdi i en funktion der returnerer void"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
#| msgid "`return' with a value, in function returning void"
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "'return' med en værdi i en funktion der returnerer void"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "funktion returnerer adressen på en lokal variabel"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch-størrelsen er ikke et heltal"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, fuzzy, gcc-internal-format
#| msgid "`long' switch expression not converted to `int' in ISO C"
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "'long'-udtryk i switch konverteres ikke til 'int' i ISO C"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "case label is not an integer constant expression"
msgstr "størrelsen af tabel er ikke af et heltalligt konstantudtryk"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case-etiket befinder sig ikke inden i en switch-sætning"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, fuzzy, gcc-internal-format
#| msgid "`default' label not within a switch statement"
msgid "%<default%> label not within a switch statement"
msgstr "'default'-etiket befinder sig ikke inden i en switch-sætning"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, fuzzy, gcc-internal-format
#| msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%Hforeslår eksplicitte krøllede paranteser for at undgå tvetydig 'else'"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break-sætning befinder sig ikke i en løkke- eller switch-konstruktion"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue-sætning befinder sig ikke i en løkke"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, fuzzy, gcc-internal-format
#| msgid "break statement not within loop or switch"
msgid "break statement used with OpenMP for loop"
msgstr "break-sætning befinder sig ikke i en løkke- eller switch-konstruktion"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, fuzzy, gcc-internal-format
#| msgid "%Hstatement with no effect"
msgid "statement with no effect"
msgstr "%Hsætning uden nogen virkning"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "udtrykket er af en ufuldstændig type"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "højreskiftsantal er negativ"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "højreskiftsantal er større end bredden af typen"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "venstreskiftsantal er negativ"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "venstreskiftsantal er større end bredden af typen"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "operands to ?: have different types"
msgid "comparing vectors with different element types"
msgstr "operander til ?: har forskellige typer"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, fuzzy, gcc-internal-format
#| msgid "operand constraints for `asm' differ in number of alternatives"
msgid "comparing vectors with different number of elements"
msgstr "operandbegrænsninger til 'asm' har forskellige antal alternativer"
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "sammenligning af kommatal med == eller != er ikke sikkert"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
#| msgid "comparison of distinct pointer types lacks a cast"
msgid "comparison of pointers to disjoint address spaces"
msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids comparison of `void *' with function pointer"
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "sammenligning mellem henvisningsvariabel og heltal"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "sammenligning mellem en fuldstændig og ufuldstændig henvisning"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C forbyder ordnede sammenligninger af henvisninger til funktioner"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "ordnet sammenligning af henvisning med heltallet nul"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "ordnet sammenligning af henvisning med heltallet nul"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr ""
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, fuzzy, gcc-internal-format
#| msgid "array type value used where scalar is required"
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "værdi af tabeltype angivet hvor skalar er påkrævet"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, fuzzy, gcc-internal-format
#| msgid "struct type value used where scalar is required"
msgid "used struct type value where scalar is required"
msgstr "værdi af struct-type angivet hvor skalar er påkrævet"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, fuzzy, gcc-internal-format
#| msgid "union type value used where scalar is required"
msgid "used union type value where scalar is required"
msgstr "værdi af union-type angivet hvor skalar er påkrævet"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "struct type value used where scalar is required"
msgid "used vector type where scalar is required"
msgstr "værdi af struct-type angivet hvor skalar er påkrævet"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "%qE has invalid type for %<reduction%>"
msgstr "ugyldig returtype for funktionen '%#D'"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "ugyldig returtype for funktionen '%#D'"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, fuzzy, gcc-internal-format
#| msgid "`%s' is not a valid class name"
msgid "%qE is not a variable in clause %qs"
msgstr "'%s' er et ugyldigt klassenavn"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "instansvariablen '%s' er erklæret privat"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "instansvariablen '%s' er erklæret privat"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -18142,7 +18177,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "funktionskald har en sammensat værdi"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, fuzzy, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "størrelsen af variablen '%s' er for stor"
@@ -19016,54 +19051,54 @@ msgstr "%s: kan ikke åbnes som en COFF-fil"
msgid "library lib%s not found"
msgstr "biblioteket lib%s ikke fundet"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "kan ikke konverteres til en henvisningstype"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "en henvisningsværdi er angivet hvor der forventedes en kommatalsværdi"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "en værdi af en sammensat type er angivet hvor der forventedes et kommatal"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "konvertering til en ufuldstændig type"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
#| msgid "can't convert between vector values of different size"
msgid "can%'t convert between vector values of different size"
msgstr "kan ikke konvertere vektorværdier af forskellige størrelser"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "en værdi af en sammensat type er angivet hvor der forventedes et heltal"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "en henvisningsværdi er angivet hvor der forventedes et komplekst tal"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "en værdi af en sammensat type er angivet hvor der forventedes et komplekst tal"
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
#| msgid "can't convert value to a vector"
msgid "can%'t convert value to a vector"
msgstr "kan ikke konvertere værdi til en vektor"
-#: convert.c:1004
+#: convert.c:1002
#, fuzzy, gcc-internal-format
#| msgid "aggregate value used where a float was expected"
msgid "aggregate value used where a fixed-point was expected"
@@ -19224,7 +19259,7 @@ msgstr "dominator for %d burde være %d, ikke %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -19319,44 +19354,44 @@ msgstr "verify_flow_info mislykkedes"
msgid "stack limits not supported on this target"
msgstr "stakgrænser understøttes ikke på målarkitekturen"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field `%s'"
msgid "mis-aligned access used for structure member"
msgstr "lagringsklasse angivet for strukturfelt '%s'"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field `%s'"
msgid "mis-aligned access used for structure bitfield"
msgstr "lagringsklasse angivet for strukturfelt '%s'"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr ""
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "funktionen '%s' omerklæret med egenskaben noinline"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "funktionen '%s' omerklæret med egenskaben noinline"
@@ -19439,7 +19474,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -19450,7 +19485,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr "størrelsen af tabellen '%s' er for stor"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, fuzzy, gcc-internal-format
#| msgid "impossible constraint in `asm'"
msgid "impossible constraint in %<asm%>"
@@ -19925,84 +19960,84 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "træ-kontrol: forventede %s, har %s i %s, ved %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
#| msgid "no return statement in function returning non-void"
msgid "using result of function returning %<void%>"
msgstr "ingen return-sætning i en funktion der ikke returnerer void"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid lvalue in asm statement"
msgid "invalid lvalue in asm output %d"
msgstr "ugyldig venstreværdi i asm-sætning"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "output number %d not directly addressable"
msgid "memory input %d is not directly addressable"
msgstr "uddata nr. %d kan ikke adresseres direkte"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "threadprivate variable %qE used in untied task"
msgstr "registervariabel '%s' benyttet i indlejret funktion"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "iteration variable %qE should be private"
msgstr "instansvariablen '%s' er erklæret privat"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "iteration variable %qE should not be reduction"
msgstr "registervariabel '%s' benyttet i indlejret funktion"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr "'%D' blev ikke erklæret i dette virkefelt"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file `%s'"
msgid "could not close Go dump file: %m"
msgstr "kunne ikke åbne dumpningsfilen '%s'"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file `%s'"
msgid "could not open Go dump file %qs: %m"
@@ -20063,7 +20098,7 @@ msgstr ""
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -20210,48 +20245,48 @@ msgstr "feltet '%s' er erklæret som en funktion"
msgid "function %qD redeclared as variable"
msgstr "funktionen '%s' omerklæret som inline"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -20360,7 +20395,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr ""
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
@@ -20739,9 +20774,9 @@ msgstr "kan ikke bruge '%s' som et %s-register"
msgid "can%'t use %qs as a fixed register"
msgstr "kan ikke bruge '%s' som et %s-register"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "ukendt registernavn: %s"
@@ -20832,13 +20867,13 @@ msgstr "kan ikke finde et register at bortødsle i klassen '%s'"
msgid "%<asm%> operand requires impossible reload"
msgstr "'asm'-operand kræver umulig genindlæsning"
-#: reload1.c:6093
+#: reload1.c:6107
#, fuzzy, gcc-internal-format
#| msgid "`asm' operand constraint incompatible with operand size"
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "'asm'-operandbegrænsning ikke forenelig med operandstørrelse"
-#: reload1.c:7899
+#: reload1.c:7913
#, fuzzy, gcc-internal-format
#| msgid "output operand is constant in `asm'"
msgid "output operand is constant in %<asm%>"
@@ -21086,7 +21121,7 @@ msgstr "packed-egenskab forårsager ineffektiv justering"
msgid "packed attribute is unnecessary"
msgstr "packed-egenskab er unødvendig"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, fuzzy, gcc-internal-format
#| msgid "%Jalignment of '%D' is greater than maximum object file alignment. Using %d"
msgid "alignment of array elements is greater than element size"
@@ -21316,7 +21351,7 @@ msgstr "Aktivér brug af DB-instruktioner"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -21331,7 +21366,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr ""
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -21346,7 +21381,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
#| msgid "namespace `%D' not allowed in using-declaration"
msgid "asm not allowed in atomic transaction"
@@ -21383,685 +21418,685 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "en global registervariabel følger en funktionsdefinition"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid %%f operand"
msgid "invalid first operand of MEM_REF"
msgstr "ugyldig %%f-operand"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid %%f operand"
msgid "invalid offset operand of MEM_REF"
msgstr "ugyldig %%f-operand"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
#| msgid "unterminated #%s conditional"
msgid "non-integral used in condition"
msgstr "uafsluttet #%s-betingelse"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid conditional operand"
msgstr "ugyldige begrænsninger for operand"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "ugyldige begrænsninger for operand"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, fuzzy, gcc-internal-format
#| msgid "Invalid reference type"
msgid "invalid reference prefix"
msgstr "Ugyldig referencetype"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "ugyldig operand i instruktionen"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, fuzzy, gcc-internal-format
#| msgid "base operand of `->' is not a pointer"
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "grundoperanden til '->' er ikke en henvisning"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid expression for min lvalue"
msgstr "ugyldigt udtryk som operand"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in indirect reference"
msgstr "ugyldig operand i instruktionen"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operands to array reference"
msgstr "ugyldige operander til binær %s"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
#| msgid "subscript missing in array reference"
msgid "type mismatch in array reference"
msgstr "indeks mangler i tabelopslag"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, fuzzy, gcc-internal-format
#| msgid "subscript missing in array reference"
msgid "type mismatch in array range reference"
msgstr "indeks mangler i tabelopslag"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in real/imagpart reference"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in component reference"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "typeomtvingelse fra henvisning til heltal af en anden størrelse"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid %%s operand"
msgid "invalid address operand in MEM_REF"
msgstr "ugyldig %%s-operand"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid %%f operand"
msgid "invalid offset operand in MEM_REF"
msgstr "ugyldig %%f-operand"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, fuzzy, gcc-internal-format
#| msgid "-split has no argument."
msgid "gimple call has no target"
msgstr "-split uden parametre"
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "Ugyldig erklæring"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
msgid "non-function in gimple call"
msgstr "funktion kan ikke indbygges"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "invalid pure const state for function"
msgstr "ugyldig returtype for funktionen '%#D'"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid LHS in gimple call"
msgstr "ugyldig PC i linjetalstabel"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
#| msgid "invalid version number format"
msgid "invalid conversion in gimple call"
msgstr "ugyldigt versionsnummerformat"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid static chain in gimple call"
msgstr "ugyldig PC i linjetalstabel"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
#| msgid "invalid argument of `%s' attribute"
msgid "invalid argument to gimple call"
msgstr "ugyldig parameter til egenskaben '%s'"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in gimple comparison"
msgstr "ugyldig operand i instruktionen"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr ""
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "Invalid method declaration, return type required"
msgid "invalid vector comparison resulting type"
msgstr "Ugyldig metodeerklæring, returtype påkrævet"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in unary operation"
msgstr "ugyldig operand i instruktionen"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
#| msgid "invalid token in expression"
msgid "invalid types in nop conversion"
msgstr "ugyldigt symbol udtryk"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
#| msgid "invalid token in expression"
msgid "invalid types in address space conversion"
msgstr "ugyldigt symbol udtryk"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
#| msgid "invalid token in expression"
msgid "invalid types in fixed-point conversion"
msgstr "ugyldigt symbol udtryk"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
#| msgid "invalid suffix \"%.*s\" on floating constant"
msgid "invalid types in conversion to floating point"
msgstr "ugyldig endelse \"%.*s\" i kommatalskonstant"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
#| msgid "invalid type `void' for new"
msgid "invalid types in conversion to integer"
msgstr "ugyldig type 'void' til new"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, fuzzy, gcc-internal-format
#| msgid "invalid version number format"
msgid "non-trivial conversion in unary operation"
msgstr "ugyldigt versionsnummerformat"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operands in binary operation"
msgstr "ugyldige operander til binær %s"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in complex expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in shift expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector shift expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, fuzzy, gcc-internal-format
#| msgid "Specify the version of the floating point emulator"
msgid "non-element sized vector shift of floating point vector"
msgstr "Angiv versionen af kommatalsemulatoren"
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening vector shift expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid (pointer) operands to plus/minus"
msgstr "ugyldige operander til binær %s"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in pointer plus expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in binary expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in ternary operation"
msgstr "ugyldig operand i instruktionen"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in fused multiply-add expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector permute expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
#| msgid "']' expected, invalid type expression"
msgid "vector types expected in vector permute expression"
msgstr "']' forventet, ugyldigt typeudtryk"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid mask type in vector permute expression"
msgstr "ugyldig brug af void-udtryk"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "non-trivial conversion at assignment"
msgstr "ugyldig venstreværdi i tildeling"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
#| msgid "invalid token in expression"
msgid "invalid operand in unary expression"
msgstr "ugyldigt symbol udtryk"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in address expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
#| msgid "invalid indirect memory address"
msgid "invalid rhs for gimple memory store"
msgstr "ugyldig indirekte hukommelsesadresse"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in return statement"
msgstr "ugyldig operand i instruktionen"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
#| msgid "Invalid init statement"
msgid "invalid conversion in return statement"
msgstr "Ugyldig klargøringssætning"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "goto destination is neither a label nor a pointer"
msgstr "værdien der er påført et indeks, er hverken en tabel eller en henvisningsvariabel"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%s code"
msgid "invalid operand to switch statement"
msgstr "ugyldig operand til %%s-koden"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
#| msgid "format string has invalid operand number"
msgid "incorrect setting of landing pad number"
msgstr "formateringsstrengen har et ugyldigt operandtal"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%p code"
msgid "invalid comparison code in gimple cond"
msgstr "ugyldig operand til %%p-koden"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in increment"
msgid "invalid labels in gimple cond"
msgstr "ugyldig venstreværdi i forøgelse"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "ugyldig adresse"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
#| msgid "missing number"
msgid "missing PHI def"
msgstr "manglende tal"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid PHI argument"
msgstr "ugyldig typeparameter"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "incompatible types in %s"
msgid "incompatible types in PHI argument %u"
msgstr "uforenelige typer i %s"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, fuzzy, gcc-internal-format
#| msgid "verify_flow_info failed"
msgid "verify_gimple failed"
msgstr "verify_flow_info mislykkedes"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
#| msgid "Invalid init statement"
msgid "in statement"
msgstr "Ugyldig klargøringssætning"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "flow control insn inside a basic block"
msgid "control flow in the middle of basic block %d"
msgstr "strømkontrolinstruktion inden i en basisblok"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Fallthru edge after unconditional jump %i"
msgid "fallthru edge after a control statement in bb %d"
msgstr "Fald gennem-kant efter ubetinget spring %i"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "explicit instantiation of `%#D'"
msgid "explicit goto at end of bb %d"
msgstr "eksplicit instantiering af '%#D'"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
#| msgid "trampolines not supported"
msgid "case labels not sorted: "
msgstr "trampoliner understøttes ikke"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "missing field '%s' in '%s'"
msgid "missing edge %i->%i"
msgstr "manglende felt '%s' i '%s'"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
#| msgid "`noreturn' function does return"
msgid "%<noreturn%> function does return"
msgstr "funktion med egenskaben 'noreturn' returnerer"
# RETMIG: dette må kunne gøres bedre
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "kontrol når til slutningen af ikke-void funktion"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%Hignorerer returværdi for '%D' erklæret med egenskaben warn_unused_result"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr ""
@@ -22126,73 +22161,73 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr "forkert instruktion i fald-gennem-kant"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr ""
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr ""
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr ""
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr ""
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr ""
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr ""
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "%Jinlining failed in call to '%F': %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "%Jindlejring mislykkedes i kald til '%F': %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "kaldt herfra"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, fuzzy, gcc-internal-format
#| msgid "%Jinlining failed in call to '%F': %s"
msgid "inlining failed in call to %q+F: %s"
@@ -22415,7 +22450,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr "verify_flow_info mislykkedes"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid "%qD was declared here"
@@ -22477,57 +22512,57 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is outside array bounds"
msgstr "tabelindeks er ikke et heltal"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is above array bounds"
msgstr "tabelindeks er ikke et heltal"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is below array bounds"
msgstr "tabelindeks er ikke et heltal"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, fuzzy, gcc-internal-format
#| msgid "comparison is always false due to limited range of data type"
msgid "comparison always false due to limited range of data type"
msgstr "sammenligning er altid falsk på grund af den begrænsede rækkevidde af datatypen"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, fuzzy, gcc-internal-format
#| msgid "comparison is always true due to limited range of data type"
msgid "comparison always true due to limited range of data type"
msgstr "sammenligning er altid sand på grund af den begrænsede rækkevidde af datatypen"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -22538,22 +22573,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr ""
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -22568,155 +22603,155 @@ msgstr ""
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qE attribute ignored"
msgstr "egenskaben '%s' ignoreret"
-#: tree.c:5569
+#: tree.c:5570
#, fuzzy, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "funktionen '%s' omerklæret med egenskaben noinline"
-#: tree.c:5577
+#: tree.c:5578
#, fuzzy, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "'auto' er påhæftet funktionsdefinitionen"
-#: tree.c:5585
+#: tree.c:5586
#, fuzzy, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "statisk variabel '%s' er markeret dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr ""
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "en tabel af funktioner giver ikke mening"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "en funktions returtype kan ikke være en funktion"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "træ-kontrol: forventede %s, har %s i %s, ved %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "træ-kontrol: forventede %s, har %s i %s, ved %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "træ-kontrol: forventede klasse '%c', har '%c' (%s) i %s, ved %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "træ-kontrol: forventede klasse '%c', har '%c' (%s) i %s, ved %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "træ-kontrol: forventede %s, har %s i %s, ved %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "træ-kontrol: forventede %s, har %s i %s, ved %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "trækontrol: tilgik udtrykstræ %d af tree_vec med %d udtrykstræer i %s, ved %s:%d"
-#: tree.c:9039
+#: tree.c:9043
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "trækontrol: tilgik operand %d af %s med %d operander i %s, ved %s:%d"
-#: tree.c:9052
+#: tree.c:9056
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "trækontrol: tilgik operand %d af %s med %d operander i %s, ved %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "'%s' er forældet (erklæret ved %s:%d)"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "'%s' er forældet (erklæret ved %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "'%s' er forældet (erklæret ved %s:%d)"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "'%s' er forældet (erklæret ved %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "type er forældet (erklæret ved %s:%d)"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "type er forældet (erklæret ved %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated"
msgid "%qE is deprecated: %s"
msgstr "'%s' er forældet"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated"
msgid "%qE is deprecated"
msgstr "'%s' er forældet"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated"
msgid "type is deprecated: %s"
msgstr "type er forældet"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "type er forældet"
@@ -22767,164 +22802,170 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, fuzzy, gcc-internal-format
+#| msgid "%J%D causes a section type conflict"
+msgid "%+D causes a section type conflict"
+msgstr "%J%D forårsager en sektionstypekonflikt"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%J%D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%J%D forårsager en sektionstypekonflikt"
-#: varasm.c:958
+#: varasm.c:964
#, fuzzy, gcc-internal-format
#| msgid "%Jalignment of '%D' is greater than maximum object file alignment. Using %d"
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "%Jjustering af '%D' er større end den maksimale objektfilsjustering - bruger %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, fuzzy, gcc-internal-format
#| msgid "%Jregister name not specified for '%D'"
msgid "register name not specified for %q+D"
msgstr "%Jregisternavn ikke angivet for '%D'"
-#: varasm.c:1207
+#: varasm.c:1213
#, fuzzy, gcc-internal-format
#| msgid "%Jinvalid register name for '%D'"
msgid "invalid register name for %q+D"
msgstr "%Jugyldigt registernavn for '%D'"
-#: varasm.c:1209
+#: varasm.c:1215
#, fuzzy, gcc-internal-format
#| msgid "%Jdata type of '%D' isn't suitable for a register"
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "%Jdatatypen for '%D' passer ikke med et register"
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr ""
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "register brugt til to globale registervariabler"
-#: varasm.c:1218
+#: varasm.c:1224
#, fuzzy, gcc-internal-format
#| msgid "%Jregister specified for '%D' isn't suitable for data type"
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "%Jregisteret som er angivet for '%D' passer ikke med datatypen"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "global registervariabel har en startværdi"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1270
+#: varasm.c:1276
#, fuzzy, gcc-internal-format
#| msgid "%Jregister name given for non-register variable '%D'"
msgid "register name given for non-register variable %q+D"
msgstr "%Jregisternavn givet for ikke-registervariablen '%D'"
-#: varasm.c:1387
+#: varasm.c:1393
#, fuzzy, gcc-internal-format
#| msgid "stack limits not supported on this target"
msgid "global destructors not supported on this target"
msgstr "stakgrænser understøttes ikke på målarkitekturen"
-#: varasm.c:1453
+#: varasm.c:1459
#, fuzzy, gcc-internal-format
#| msgid "stack limits not supported on this target"
msgid "global constructors not supported on this target"
msgstr "stakgrænser understøttes ikke på målarkitekturen"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "tråd-lokal COMMON-data er ikke implementeret"
-#: varasm.c:1879
+#: varasm.c:1885
#, fuzzy, gcc-internal-format
#| msgid "%Jrequested alignment for '%D' is greater than implemented alignment of %d"
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "%Jforespurgt justering for '%D' er større end den implementerede justering på %d"
-#: varasm.c:4566
+#: varasm.c:4603
#, fuzzy, gcc-internal-format
#| msgid "initializer for integer value is too complicated"
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "startværdien for heltallet er for kompliceret"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "startværdien for kommatal er ikke en kommatalskonstant"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
#| msgid "invalid initial value for member `%s'"
msgid "invalid initial value for member %qE"
msgstr "ugyldig startværdi for medlemmet '%s'"
-#: varasm.c:5224
+#: varasm.c:5261
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' must be public"
msgid "weak declaration of %q+D must be public"
msgstr "%Jsvag erklæring af '%D' skal være public"
-#: varasm.c:5226
+#: varasm.c:5263
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' not supported"
msgid "weak declaration of %q+D not supported"
msgstr "%Jsvag erklæring af '%D' ikke understøttet"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "kun svage aliaser understøttes i denne konfiguration"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "%s understøttes ikke af denne konfiguration"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "%s understøttes ikke af denne konfiguration"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%D' to have static linkage"
msgid "weakref %q+D must have static linkage"
msgstr "kan ikke erklære medlemsfunktion '%D' til at have statisk kædning"
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
#| msgid "alias definitions not supported in this configuration; ignored"
msgid "alias definitions not supported in this configuration"
msgstr "aliasdefinitioner er ikke understøttet i denne konfiguration; ignoreret"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "synlighedsegenskab er ikke understøttet i denne konfiguration; ignoreret"
@@ -22968,8 +23009,8 @@ msgstr "%J'%D' er ikke defineret uden for funktionsvirkefelt"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "strenglængden '%d' er større end den længde på '%d' som ISO C%d-oversættere er pålagt at understøtte"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "overløb i konstant udtryk"
@@ -23198,7 +23239,7 @@ msgstr "henvisning til en medlemsfunktion benyttet i udregning"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "adressen af '%D' vil altid være 'true'"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "foreslår paranteser omkring tildeling der er benyttet som boolsk værdi"
@@ -23650,42 +23691,42 @@ msgstr "'%s'-egenskaben ignoreret for '%s'"
msgid "invalid vector type for attribute %qE"
msgstr "ugyldig vektortype for egenskaben '%s'"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "ikke-nul egenskab uden parametre til en ikke-prototype"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "nonnull argument has invalid operand number (arg %lu)"
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "ikke-nul parameter har ugyldig operandnummer (parameter %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "ikke-nul parameter med operandnummer uden for det gyldig interval (parameter %lu, operand %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
@@ -23731,13 +23772,13 @@ msgstr "egenskaben '%s' kræver en heltalskonstant som parameter"
msgid "%qE attribute only applies to variadic functions"
msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, fuzzy, gcc-internal-format
#| msgid "requested init_priority is not an integer constant"
msgid "requested position is not an integer constant"
msgstr "den udbedte init_priority er ikke en heltalskonstant"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
@@ -23797,7 +23838,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, fuzzy, gcc-internal-format
#| msgid "attempt to take address of bit-field structure member `%D'"
msgid "attempt to take address of bit-field structure member %qD"
@@ -24605,93 +24646,93 @@ msgid "ignoring #pragma %s %s"
msgstr "ignorerer #pragma %s %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
#| msgid "stray '%c' in program"
msgid "stray %<@%> in program"
msgstr "vildfaren '%c' i program"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, fuzzy, gcc-internal-format
#| msgid "stray '%c' in program"
msgid "stray %qs in program"
msgstr "vildfaren '%c' i program"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "manglende afsluttende '%c'-tegn"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, fuzzy, gcc-internal-format
#| msgid "stray '%c' in program"
msgid "stray %qc in program"
msgstr "vildfaren '%c' i program"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, fuzzy, gcc-internal-format
#| msgid "stray '\\%o' in program"
msgid "stray %<\\%o%> in program"
msgstr "vildfaren '\\%o' i program"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "denne kommatalskonstant er kun unsigned i ISO C90"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "denne kommatalskonstant ville være unsigned i ISO C90"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for \"%s\" type"
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "heltalskonstanten er for stor til typen '%s'"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
#| msgid "invalid suffix \"%.*s\" on floating constant"
msgid "unsuffixed float constant"
msgstr "ugyldig endelse \"%.*s\" i kommatalskonstant"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, fuzzy, gcc-internal-format
#| msgid "more than one 'f' suffix on floating constant"
msgid "unsupported non-standard suffix on floating constant"
msgstr "mere end én 'f'-endelse i kommatalskonstant"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, fuzzy, gcc-internal-format
#| msgid "both 'f' and 'l' suffixes on floating constant"
msgid "non-standard suffix on floating constant"
msgstr "både 'f'- og 'l'-endelser i kommatalskonstant"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, fuzzy, gcc-internal-format
#| msgid "floating constant exceeds range of \"%s\""
msgid "floating constant exceeds range of %qT"
msgstr "kommatalskonstant overskrider intervallet for '%s'"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, fuzzy, gcc-internal-format
#| msgid "floating constant out of range"
msgid "floating constant truncated to zero"
msgstr "kommatalskonstant er uden for det gyldige interval"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr ""
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, fuzzy, gcc-internal-format
#| msgid "possible start of unterminated string literal"
msgid "unsupported non-standard concatenation of string literals"
msgstr "muligvis begyndelsen af uafsluttet strengkonstant"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, fuzzy, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "traditionel C tillader ikke strengsammensætning"
@@ -24712,7 +24753,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute `%s'"
msgid "invalid type for iteration variable %qE"
@@ -24724,25 +24765,25 @@ msgstr "ugyldig vektortype for egenskaben '%s'"
msgid "%qE is not initialized"
msgstr "manglende startværdi"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, fuzzy, gcc-internal-format
#| msgid "missing '(' after predicate"
msgid "missing controlling predicate"
msgstr "manglende '(' efter udsagn"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
#| msgid "Invalid control expression"
msgid "invalid controlling predicate"
msgstr "Ugyldigt kontroludtryk"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
#| msgid "missing ')' in expression"
msgid "missing increment expression"
msgstr "manglende ')' i udtryk"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
#| msgid "Invalid control expression"
msgid "invalid increment expression"
@@ -25658,7 +25699,7 @@ msgstr "L%d-mellemlagersventetid ukendt for %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "ugyldig værdi '%s' for -mmemory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -25843,54 +25884,54 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to functions"
msgid "%qE attribute only applies to functions"
msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "kan ikke beregne virkelig placering af stakkede parametre"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
msgid "argument must be a constant"
msgstr "parameteren til 'asm' er ikke en konstant streng"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "vælger skal være en umiddelbar værdi"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "maske skal være en umiddelbar værdi"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "ingen lave registre er tilgængelige til at modtage værdier fra høje registre"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "afbrydelsesservicerutiner kan ikke kodes i Thumb-tilstand"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -25907,101 +25948,119 @@ msgstr "%Jvariablen '%D' med startværdi er markeret dllimport"
msgid "static variable %q+D is marked dllimport"
msgstr "%Jstatisk variabel '%D' er markeret dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-traditional and -ansi are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-traditional og -ansi er indbyrdes uforenelige"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "`-%c' option must have argument"
+msgid "%qs function cannot have arguments"
+msgstr "tilvalget '-%c' skal have en parameter"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "function cannot be inline"
+msgid "%qs function cannot return a value"
+msgstr "funktion kan ikke indbygges"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "Antallet af registre der skal bruges til at overbringe heltalsparametre"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr ""
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr ""
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr ""
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "kun variabler uden startværdi kan placeres i .noinit-sektionen"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "kun variabler med startværdi kan placeres i programhukommelsesområdet"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, fuzzy, gcc-internal-format
#| msgid "MCU `%s' supported for assembler only"
msgid "MCU %qs supported for assembler only"
msgstr "MCU '%s' understøttes kun for maskinkode"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "case label does not reduce to an integer constant"
msgid "%s expects a compile time integer constant"
msgstr "case-etiketten kan ikke reduceres til en heltalskonstant"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -26131,71 +26190,71 @@ msgstr "ugyldig operand til 'b'-ændring"
msgid "internal error: bad register: %d"
msgstr "intern fejl: ugyldigt register: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "intern fejl: bivirkningsinstruktion påvirker hovedvirkning"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, fuzzy, gcc-internal-format
#| msgid "unknown relocation unspec"
msgid "unknown cc_attr value"
msgstr "ukendt relokaliserings-unspec"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "intern fejl: cris_side_effect_mode_ok med ugyldige operander"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d er ikke brugbar mellem 0 og %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "ukendt CRIS-versionsspecifikation i -march= eller -mcpu=: %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "ukendt CRIS-versionsspecifikation i -mtune=: %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC og -fpic understøttes ikke af denne konfiguration"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "det bestemte '-g'-tilvalg er ugyldigt med -maout og -melinux"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "unknown insn mode"
msgid "unknown src"
msgstr "ukendt instruktionstilstand"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "unknown insn mode"
msgid "unknown dest"
msgstr "ukendt instruktionstilstand"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "stakramme for stor: %d byte"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
#| msgid "emitting PIC operand, but PIC register isn't set up"
msgid "emitting PIC operand, but PIC register isn%'t set up"
@@ -26365,445 +26424,445 @@ msgstr "kan ikke læse fra midlertidig fil"
msgid "can%'t set position in PCH file: %m"
msgstr "kan ikke oprette informationsfilen '%s' til opbevaringssted"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "ugyldig værdi (%s) til tilvalget -mcpu="
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, fuzzy, gcc-internal-format
#| msgid "code model `%s' not supported in the %s bit mode"
msgid "code model %qs not supported in the %s bit mode"
msgstr "kodemodellen %s er ikke understøttet i %s bit-tilstand"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %qs not supported in x32 mode"
msgstr "kodemodellen %s er ikke understøttet i PIC-tilstand"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %s does not support PIC mode"
msgstr "kodemodellen %s er ikke understøttet i PIC-tilstand"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "%s understøttes ikke af denne konfiguration"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i bit-tilstand er ikke oversat med ind"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "den valgte processor understøtter ikke x86-64-instruktionssættet"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -march= switch"
msgid "bad value (%s) for %sarch=%s %s"
msgstr "ugyldig værdi (%s) til tilvalget -march="
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d er ikke mellem 0 og %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "-fprefetch-loop-arrays not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-fprefetch-loop-arrays understøttes ikke på målarkitekturen"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d er ikke mellem %d og 12"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred-stack-boundary=%d er ikke mellem %d og 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "SSE-instruktionssæt deaktiveret, bruger 387-beregninger"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "387-instruktionssæt deaktiveret, bruger SSE-beregninger"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unknown cpu: -mcpu=%s"
msgid "unknown option for -mrecip=%s"
msgstr "Ukendt processor: -mcpu=%s"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "fastcall og regparm er indbyrdes uforenelige"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "regparam and thiscall attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%qE attribute requires an integer constant argument"
msgstr "egenskaben '%s' kræver en heltalskonstant som parameter"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
#| msgid "argument to `%s' attribute larger than %d"
msgid "argument to %qE attribute larger than %d"
msgstr "parameter til egenskaben '%s' er større end %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and cdecl attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and thiscall attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "stdcall and cdecl attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "stdcall and fastcall attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "stdcall and thiscall attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "cdecl and thiscall attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr ""
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, fuzzy, gcc-internal-format
#| msgid "-march=%s is not compatible with the selected ABI"
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "-march=%s er ikke forenelig med den valgte ABI"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "-mips%d does not support 64 bit fp registers"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "-mips%d understøtter ikke 64-bit kommatalsregistre"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "udvidede registre har ikke høje halvdele"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "ikke-understøttet operandstørrelse for udvidede registre"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 2-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
#| msgid "shift must be an immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "skifteværdi skal være en umiddelbar værdi"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the third argument must be an 8-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 1-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
#| msgid "argument 3 must be a 4-bit unsigned literal"
msgid "the last argument must be a 4-bit immediate"
msgstr "3. parameter skal være en 4 bit-konstant uden fortegn"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 1-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 5-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the next to last argument must be an 8-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 8-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 32-bit immediate"
msgstr "1. parameter skal være en 5 bit-konstant med fortegn"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, fuzzy, gcc-internal-format
#| msgid "invalid option %s"
msgid "%qE needs isa option %s"
msgstr "ugyldigt tilvalg %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
#| msgid "mask must be an immediate"
msgid "last argument must be an immediate"
msgstr "maske skal være en umiddelbar værdi"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to variables"
msgid "%qE attribute only available for 32-bit"
msgstr "egenskaben '%s' kan kun anvendes på variabler"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
#| msgid "argument of `%s' attribute is not a string constant"
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "parameteren til egenskaben '%s er ikke en strengkonstant"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "fastcall og stdcall er indbyrdes uforenelige"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
#| msgid "`%s' incompatible attribute ignored"
msgid "%qE incompatible attribute ignored"
@@ -26878,19 +26937,19 @@ msgstr "en dataområdeegenskab kan ikke angives for lokale variable"
msgid "%qE attribute requires a string constant argument"
msgstr "egenskaben '%s' kræver en heltalskonstant som parameter"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "værdien af -mfixed-range skal være på formen REG1-REG2"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s er et tomt interval"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
#| msgid "second token after #line is not a string"
msgid "version attribute is not a string"
@@ -26961,7 +27020,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "sektionsegenskaber understøttes ikke på denne målarkitektur"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not an integer constant"
msgid "%qE attribute argument not an integer constant"
@@ -27023,7 +27082,7 @@ msgstr "sektionsegenskaben er ikke tilladt for '%s'"
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "stakgrænseudtryk understøttes ikke"
@@ -27585,29 +27644,29 @@ msgstr "MMIX-intern: %s er ikke en int der kan skiftes"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, fuzzy, gcc-internal-format
#| msgid "PIC code generation is not supported in the portable runtime model\n"
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "PIC-kodegenerering er ikke understøttet i den portable kørselsmodel\n"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, fuzzy, gcc-internal-format
#| msgid "PIC code generation is not compatible with fast indirect calls\n"
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "PIC-kodegenerering er ikke kompatibel med hurtige indirekte kald\n"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g er kun understøttet ved brug af GAS på denne processor,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "tilvalget -g deaktiveret"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -28057,84 +28116,84 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, fuzzy, gcc-internal-format
#| msgid "stack frame too big"
msgid "stack frame too large"
msgstr "stakramme for stor"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "ingen profilering af 64 bit-kode for denne ABI"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr ""
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "\"%s\" is not defined"
msgid "%s\"%s\"%s is not allowed"
msgstr "\"%s\" er ikke defineret"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr ""
@@ -28191,12 +28250,12 @@ msgstr "trampoliner understøttes ikke"
msgid "-m64 not supported in this configuration"
msgstr "%s understøttes ikke af denne konfiguration"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, fuzzy, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-maix64 kræver at PowerPC64-arkitekturen forbliver aktiveret"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
#| msgid "Emit code compatible with TI tools"
msgid "-mcmodel incompatible with other toc options"
@@ -28214,64 +28273,64 @@ msgstr "Udsend kode der er kompatibel med TI-værktøjer"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET er ikke understøttet"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "ugyldig værdi til -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "ugyldig værdi til -msdata=%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable og -msdata=%s er indbyrdes uforenelige"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s og -msdata=%s er indbyrdes uforenelige"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s og -mcall-%s er indbyrdes uforenelige"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable og -mno-minimal-toc er indbyrdes uforenelige"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable og -mcall-%s er indbyrdes uforenelige"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC og -mcall-%s er indbyrdes uforenelige"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc skal være stor-endet"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr ""
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "%s understøttes ikke af denne konfiguration"
@@ -28386,59 +28445,59 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs understøttes ikke af denne undermålarkitektur"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to interrupt functions"
msgid "%qE attribute only applies to interrupt functions"
msgstr "egenskaben '%s' kan kun anvendes sammen med afbrydelsesfunktioner"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute is not supported on this platform"
msgid "%qE attribute is supported only for SH2A"
msgstr "egenskaben '%s' er ikke understøttet på denne platform"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "egenskaben interrupt_handler er ikke forenelig med -m5-compact"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to functions"
msgid "%qE attribute only applies to SH2A"
msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not an integer constant"
msgid "%qE attribute argument should be between 0 to 255"
msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not a string constant"
msgid "%qE attribute argument not a string constant"
msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
#| msgid "Use the BK register as a general purpose register"
msgid "need a second call-clobbered general purpose register"
msgstr "Benyt BK-registeret som et alment register"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -28804,43 +28863,43 @@ msgstr "'-gnat' stavet forkert som '-gant'"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qs attribute ignored"
msgstr "egenskaben '%s' ignoreret"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%qs attribute requires prototypes with named arguments"
msgstr "egenskaben '%s' kræver en heltalskonstant som parameter"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to functions"
msgid "%qs attribute only applies to variadic functions"
msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "%s har ingen %s"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute `%s'"
msgid "invalid vector type for attribute %qs"
msgstr "ugyldig vektortype for egenskaben '%s'"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to variables"
msgid "attribute %qs applies to array types only"
msgstr "egenskaben '%s' kan kun anvendes på variabler"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute `%s'"
msgid "invalid element type for attribute %qs"
@@ -28858,7 +28917,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " for konvertering fra '%T' til '%T'"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -29171,7 +29230,7 @@ msgstr "ugyldig konvertering fra '%T' til '%T'"
msgid "invalid conversion from %qT to %qT"
msgstr "ugyldig konvertering fra '%T' til '%T'"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, fuzzy, gcc-internal-format
#| msgid " initializing argument %P of `%D'"
msgid " initializing argument %P of %qD"
@@ -29182,206 +29241,206 @@ msgstr " ved klargøring af parameteren %P til '%D'"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
#| msgid " initializing argument %P of `%D'"
msgid " initializing argument %P of %q+D"
msgstr " ved klargøring af parameteren %P til '%D'"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "kan ikke klargøre '%T' fra %T'"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, fuzzy, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "kan ikke klargøre '%T' fra %T'"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, fuzzy, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "kan ikke erklære feltet '%D' til at være af typen '%T'"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, fuzzy, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "kan ikke klargøre '%T' fra %T'"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
#| msgid "class `%T' will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "klassen '%T' vil blive betragtet som næsten tom i en fremtidig version af GCC"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
#| msgid "cannot pass objects of non-POD type `%#T' through `...'"
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "kan ikke videregive objekter af en ikke-POD type '%#T' gennem '...'"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
#| msgid "cannot receive objects of non-POD type `%#T' through `...'"
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "kan ikke modtage objekter af en ikke-POD type '%#T' gennem '...'"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for `%#D'"
msgid "recursive evaluation of default argument for %q#D"
msgstr "omdefinering af standardparameter for '%#D'"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "standardparameter for parameter af typen '%T' har typen '%T'"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "argument of function call might be a candidate for a format attribute"
msgstr "Advar om funktioner som kan være kandidater til formateringsegenskaber"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, fuzzy, gcc-internal-format
#| msgid "passing `%T' as `this' argument of `%#D' discards qualifiers"
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "videregivelse af '%T' som 'this'-parameteren til '%#D' forkaster modifikationer"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, fuzzy, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "'%T' er en utilgængelig stamklasse til '%T'"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr ""
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
#| msgid " in call to `%D'"
msgid " in call to %q+D"
msgstr " i kald af '%D'"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, fuzzy, gcc-internal-format
#| msgid "could not find class$ field in java interface type `%T'"
msgid "could not find class$ field in java interface type %qT"
msgstr "kunne ikke finde et class$-felt i Java-grænsefladetypen '%T'"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, fuzzy, gcc-internal-format
#| msgid "call to non-function `%D'"
msgid "call to non-function %qD"
msgstr "kald af ikke-funktion '%D'"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, fuzzy, gcc-internal-format
#| msgid "cannot call destructor `%T::~%T' without object"
msgid "cannot call constructor %<%T::%D%> directly"
msgstr "kan ikke kalde destruktionsfunktion '%T::~%T' uden objekt"
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "ingen passende funktion for kald til '%T::%D(%A)%#V'"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, fuzzy, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "ingen passende funktion for kald til '%T::%D(%A)%#V'"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, fuzzy, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "kald af flertydig '%D(%A)' er tvetydigt"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, fuzzy, gcc-internal-format
#| msgid "cannot call member function `%D' without object"
msgid "cannot call member function %qD without object"
msgstr "kan ikke kalde medlemsfunktionen '%D' uden et objekt"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, fuzzy, gcc-internal-format
#| msgid "passing `%T' chooses `%T' over `%T'"
msgid "passing %qT chooses %qT over %qT"
msgstr "videregivelse af '%T' vælger '%T' frem for '%T'"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, fuzzy, gcc-internal-format
#| msgid " in call to `%D'"
msgid " in call to %qD"
msgstr " i kald af '%D'"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, fuzzy, gcc-internal-format
#| msgid "choosing `%D' over `%D'"
msgid "choosing %qD over %qD"
msgstr "vælger '%D' frem for '%D'"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, fuzzy, gcc-internal-format
#| msgid " for conversion from `%T' to `%T'"
msgid " for conversion from %qT to %qT"
msgstr " for konvertering fra '%T' til '%T'"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " fordi konverteringssekvensen for parameteren er bedre"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
#| msgid "default argument specified in explicit specialization"
msgid "default argument mismatch in overload resolution"
msgstr "standardparameter angivet i eksplicit specialisering"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, fuzzy, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr "candidate%s: %+#D"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, fuzzy, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr "candidate%s: %+#D"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, fuzzy, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ifølge ISO C++ er '%D' og '%D' tvetydigt selvom den værste konvertering for førstnævnte er bedre end den værste konvertering for den sidstnævnte"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "could not convert `%E' to `%T'"
msgid "could not convert %qE from %qT to %qT"
msgstr "kunne ikke konvertere '%E' til '%T'"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "ugyldig const_cast af en højreværdi fra typen '%T' til typen '%T'"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, fuzzy, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
@@ -29627,109 +29686,109 @@ msgstr "feltet '%D' er på ugyldig vis erklæret som en funktionstype"
msgid "field %q+D invalidly declared method type"
msgstr "feltet '%D' er på ugyldig vis erklæret som en medlemsfunktionstype"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr ""
-#: cp/class.c:3284
+#: cp/class.c:3285
#, fuzzy, gcc-internal-format
#| msgid "field `%#D' with same name as class"
msgid "field %q+#D with same name as class"
msgstr "felt '%#D' med samme navn som klassen"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, fuzzy, gcc-internal-format
#| msgid "`%#T' has pointer data members"
msgid "%q#T has pointer data members"
msgstr "'%#T' har henvisningsdatamedlemmer"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, fuzzy, gcc-internal-format
#| msgid " but does not override `%T(const %T&)'"
msgid " but does not override %<%T(const %T&)%>"
msgstr " men overskriver ikke '%T(const %T&)'"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, fuzzy, gcc-internal-format
#| msgid " or `operator=(const %T&)'"
msgid " or %<operator=(const %T&)%>"
msgstr " eller 'operator=(const %T&)'"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, fuzzy, gcc-internal-format
#| msgid " but does not override `operator=(const %T&)'"
msgid " but does not override %<operator=(const %T&)%>"
msgstr " men overskriver ikke 'operator=(const %T&)'"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, fuzzy, gcc-internal-format
#| msgid "offset of empty base `%T' may not be ABI-compliant and maychange in a future version of GCC"
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "afsættet for tom stamklasse '%T' følger ikke nødvendigvis ABI'en og kan ændre sig i en fremtidig version af GCC"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, fuzzy, gcc-internal-format
#| msgid "class `%T' will be considered nearly empty in a future version of GCC"
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "klassen '%T' vil blive betragtet som næsten tom i en fremtidig version af GCC"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, fuzzy, gcc-internal-format
#| msgid "initializer specified for non-virtual method `%D'"
msgid "initializer specified for non-virtual method %q+D"
msgstr "startværdi angivet for ikke-virtuel medlemsfunktion '%D'"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr ""
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template"
msgid "%q+T is not literal because:"
msgstr "'%T' er ikke en skabelon"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class `%#T' has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "stamklassen '%#T' har en ikke-virtuel destruktionsfunktion"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr ""
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid " non-static data member %q+D has non-literal type"
msgstr "ugyldig tildeling af startværdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, fuzzy, gcc-internal-format
#| msgid "non-static reference `%#D' in class without a constructor"
msgid "non-static reference %q+#D in class without a constructor"
msgstr "ikke-statisk reference '%#D' i klasse uden en konstruktionsfunktion"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, fuzzy, gcc-internal-format
#| msgid "non-static const member `%#D' in class without a constructor"
msgid "non-static const member %q+#D in class without a constructor"
@@ -29737,138 +29796,138 @@ msgstr "ikke-statisk konstant medlem '%#D' i klasse uden en konstruktionsfunktio
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, fuzzy, gcc-internal-format
#| msgid "offset of virtual base `%T' is not ABI-compliant and may change in a future version of GCC"
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "afsættet for virtuel stamklasse '%T' følger ikke ABI'en og kan ændre sig i en fremtidig version af GCC"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, fuzzy, gcc-internal-format
#| msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "direkte stamklasse '%T' er ikke tilgængelig i '%T' på grund af tvetydighed"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, fuzzy, gcc-internal-format
#| msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "virtuel stamklasse '%T' er ikke tilgængelig i '%T' på grund af tvetydighed"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, fuzzy, gcc-internal-format
#| msgid "size assigned to `%T' may not be ABI-compliant and may change in a future version of GCC"
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "størrelsen der bliver tildelt '%T' følger ikke nødvendigvis ABI'en og kan ændre sig i en fremtidig version af GCC"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, fuzzy, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "afsættet for '%D' følger ikke ABI'en og kan ændre sig i en fremtidig version af GCC"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, fuzzy, gcc-internal-format
#| msgid "offset of `%D' is not ABI-compliant and may change in a future version of GCC"
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "afsættet for '%D' følger ikke ABI'en og kan ændre sig i en fremtidig version af GCC"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, fuzzy, gcc-internal-format
#| msgid "`%D' contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "'%D' indeholder tomme klasser hvad der kan få stamklasser til at blive placeret andre steder i en fremtidig version af GCC"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, fuzzy, gcc-internal-format
#| msgid "layout of classes derived from empty class `%T' may change in a future version of GCC"
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "layoutet af klasser der nedarver fra den tomme klasse '%T' kan ændre sig i en fremtidig version af GCC"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, fuzzy, gcc-internal-format
#| msgid "redefinition of `%#T'"
msgid "redefinition of %q#T"
msgstr "omdefinering af '%#T'"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, fuzzy, gcc-internal-format
#| msgid "`%#T' has virtual functions but non-virtual destructor"
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "'%#T' har virtuelle funktioner, men ikke-virtuel destruktionsfunktion"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class `%T' does not have any field named `%D'"
msgid "type transparent class %qT does not have any fields"
msgstr "klassen '%T' har ikke et felt ved navn '%D'"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr " eftersom typen '%T' har abstrakte virtuelle funktioner"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "forsøgte at afslutte struct, men blev stoppet af tidligere fortolkningsfejl"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, fuzzy, gcc-internal-format
#| msgid "language string `\"%s\"' not recognized"
msgid "language string %<\"%E\"%> not recognized"
msgstr "sprogstrengen '\"%s\"' ikke genkendt"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, fuzzy, gcc-internal-format
#| msgid "cannot resolve overloaded function `%D' based on conversion to type `%T'"
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "kan ikke benytte den flertydiggjorte funktion '%D' baseret på konvertering til typen '%T'"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, fuzzy, gcc-internal-format
#| msgid "no matches converting function `%D' to type `%#T'"
msgid "no matches converting function %qD to type %q#T"
msgstr "ingen passende ved konvertering af funktionen '%D' til typen '%#T'"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, fuzzy, gcc-internal-format
#| msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "konvertering af den flertydiggjorte funktion '%D' til typen '%T' er tvetydig"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, fuzzy, gcc-internal-format
#| msgid "assuming pointer to member `%D'"
msgid "assuming pointer to member %qD"
msgstr "antager henvisning til medlemmet '%D'"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, fuzzy, gcc-internal-format
#| msgid "(a pointer to member can only be formed with `&%E')"
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(en henvisning til medlem kan kun dannes med '&%E')"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "ikke tilstrækkelig information om typen"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%E' from type `%T' to type `%T'"
msgid "cannot convert %qE from type %qT to type %qT"
@@ -29879,13 +29938,13 @@ msgstr "kan ikke konvertere '%E' fra typen '%T' til typen '%T'"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %q#D"
msgstr "omerklæring af '%#D'"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, fuzzy, gcc-internal-format
#| msgid "changes meaning of `%D' from `%+#D'"
msgid "changes meaning of %qD from %q+#D"
@@ -29908,7 +29967,7 @@ msgstr "kan ikke konvertere fra ufuldstændig type '%T' til '%T'"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "konvertering af '%E' fra '%T' til '%T' er tvetydigt"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "two `u's in integer constant"
msgid "zero as null pointer constant"
@@ -29940,7 +29999,7 @@ msgstr "ugyldig const_cast af en højreværdi fra typen '%T' til typen '%T'"
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "konvertering fra '%T' til '%T' forkaster modifikationer"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, fuzzy, gcc-internal-format
#| msgid "casting `%T' to `%T' does not dereference pointer"
msgid "casting %qT to %qT does not dereference pointer"
@@ -30399,7 +30458,7 @@ msgstr "tidligere erklæring af '%#D'"
msgid "declaration of template %q#D"
msgstr "erklæring af skabelon '%#D'"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, fuzzy, gcc-internal-format
#| msgid "conflicts with previous declaration `%#D'"
msgid "conflicts with previous declaration %q+#D"
@@ -30458,7 +30517,7 @@ msgstr "tidligere erklæring af '%#D' her"
msgid "%q+#D previously defined here"
msgstr "'%#D' tidligere defineret her"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
#| msgid "`%#D' previously declared here"
msgid "%q+#D previously declared here"
@@ -30591,7 +30650,7 @@ msgstr "trådlokal erklæring af '%s' følger ikke-trådlokal erklæring"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "ikke-trådlokal erklæring af '%s' følger trådlokal erklæring"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "redeclaration of %q#D"
@@ -30669,7 +30728,7 @@ msgstr "etiket med navnet wchar_t"
msgid "%qD is not a type"
msgstr "'%T' er ikke en skabelon"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, fuzzy, gcc-internal-format
#| msgid "`%D' used without template parameters"
msgid "%qD used without template parameters"
@@ -30817,140 +30876,140 @@ msgstr "typen antages at være 'int' i erklæringen af '%s'"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "tom erklæring"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "forward declaration of `%#T'"
msgid "attribute ignored in declaration of %q#T"
msgstr "forhåndserklæring af '%#T'"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute can only be applied to class definitions"
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
# init dækker over værditildeling her - samme for de næste mange
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
#| msgid "typedef `%D' is initialized (use __typeof__ instead)"
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef '%D' bliver tildelt en værdi (benyt __typeof__ i stedet)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' has `extern' and is initialized"
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "erklæringen af '%#D' indeholder 'extern' og variablen bliver tildelt en startværdi"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, fuzzy, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "'auto' er påhæftet funktionsdefinitionen"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, fuzzy, gcc-internal-format
#| msgid "`%#D' is not a static member of `%#T'"
msgid "%q#D is not a static member of %q#T"
msgstr "'%#D' er ikke et statisk medlem af '%#T'"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ tillader ikke '%T::%D' at blive defineret som '%T::%D'"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, fuzzy, gcc-internal-format
#| msgid "duplicate initialization of %D"
msgid "duplicate initialization of %qD"
msgstr "%D tildelt startværdi mere end én gang"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' outside of class is not definition"
msgid "declaration of %q#D outside of class is not definition"
msgstr "erklæring af '%#D' uden for en klasse er ikke en definition"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, fuzzy, gcc-internal-format
#| msgid "variable `%#D' has initializer but incomplete type"
msgid "variable %q#D has initializer but incomplete type"
msgstr "variablen '%#D' bliver tildelt en startværdi, men er af en ufuldstændig type"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, fuzzy, gcc-internal-format
#| msgid "elements of array `%#D' have incomplete type"
msgid "elements of array %q#D have incomplete type"
msgstr "elementer i tabellen '%#D' er af en ufuldstændig type"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' has `extern' and is initialized"
msgid "declaration of %q#D has no initializer"
msgstr "erklæringen af '%#D' indeholder 'extern' og variablen bliver tildelt en startværdi"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, fuzzy, gcc-internal-format
#| msgid "aggregate `%#D' has incomplete type and cannot be defined"
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "den sammensatte type '%#D' er af en ufuldstændig type og kan ikke defineres"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as reference but not initialized"
msgid "%qD declared as reference but not initialized"
msgstr "'%D' erklæret som en reference, men bliver ikke tildelt en startværdi"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, fuzzy, gcc-internal-format
#| msgid "non-trivial labeled initializers"
msgid "non-trivial designated initializers not supported"
msgstr "ikke-trivielle navngivne startværdier"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of `%D'"
msgid "initializer fails to determine size of %qD"
msgstr "startværdien giver ikke størrelsen af '%D'"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, fuzzy, gcc-internal-format
#| msgid "array size missing in `%D'"
msgid "array size missing in %qD"
msgstr "tabelstørrelsen mangler i '%D'"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, fuzzy, gcc-internal-format
#| msgid "zero-size array `%D'"
msgid "zero-size array %qD"
@@ -30959,455 +31018,455 @@ msgstr "nulstørrelsestabel '%D'"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
#| msgid "storage size of `%D' isn't known"
msgid "storage size of %qD isn%'t known"
msgstr "lagringsstørrelsen af '%D' er ikke kendt"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
#| msgid "storage size of `%D' isn't constant"
msgid "storage size of %qD isn%'t constant"
msgstr "lagringsstørrelsen af '%D' er ikke konstant"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
#| msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "semantikken for indlejret funktionsstatisk data '%#D' er forkert (du ender med flere kopier)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, fuzzy, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr " du kan arbejde dig rundt om dette ved at fjerne startværdien"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, fuzzy, gcc-internal-format
#| msgid "uninitialized const `%D'"
msgid "uninitialized const %qD"
msgstr "konstant '%D' uden startværdi"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "typen '%T' har ingen destruktionsfunktion"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, fuzzy, gcc-internal-format
#| msgid "invalid initializer for virtual method `%D'"
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "ugyldig startværdi til virtuel medlemsfunktion '%D'"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, fuzzy, gcc-internal-format
#| msgid "initializer for `%T' must be brace-enclosed"
msgid "initializer for %qT must be brace-enclosed"
msgstr "startværdi for '%T' skal være indesluttet i krøllede paranteser"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, fuzzy, gcc-internal-format
#| msgid "`%T' has no non-static data member named `%D'"
msgid "%qT has no non-static data member named %qD"
msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, fuzzy, gcc-internal-format
#| msgid "excess elements in aggregate initializer"
msgid "C99 designator %qE outside aggregate initializer"
msgstr "for mange elementer i startværdi til sammensat type"
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, fuzzy, gcc-internal-format
#| msgid "too many initializers for `%T'"
msgid "too many initializers for %qT"
msgstr "for mange startværdier for '%T'"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, fuzzy, gcc-internal-format
#| msgid "braces around scalar initializer for `%T'"
msgid "braces around scalar initializer for type %qT"
msgstr "krøllede paranteser omkring skalarstartværdi for '%T'"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, fuzzy, gcc-internal-format
#| msgid "missing braces around initializer"
msgid "missing braces around initializer for %qT"
msgstr "krøllede paranteser mangler omkring startværdien"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
#| msgid "elements of array `%#D' have incomplete type"
msgid "elements of array %q#T have incomplete type"
msgstr "elementer i tabellen '%#D' er af en ufuldstændig type"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, fuzzy, gcc-internal-format
#| msgid "variable-sized object `%D' may not be initialized"
msgid "variable-sized object %qD may not be initialized"
msgstr "objektet '%D' af variabel størrelse må ikke tildeles en startværdi"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
#| msgid "ISO C89 forbids compound literals"
msgid "variable-sized compound literal"
msgstr "ISO C89 forbyder sammensatte konstanter"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "`%D' has incomplete type"
msgid "%q#D has incomplete type"
msgstr "'%D' er af en ufuldstændig type"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, fuzzy, gcc-internal-format
#| msgid "excess elements in union initializer"
msgid "scalar object %qD requires one element in initializer"
msgstr "for mange elementer i union-startværdi"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be initialized by constructor, not by `{...}'"
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "'%D' skal klargøres af en konstruktionsfunktion, ikke af '{...}'"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, fuzzy, gcc-internal-format
#| msgid "_Pragma takes a parenthesized string literal"
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "_Pragma tager en strengkonstant med paranteser omkring"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "tildeling af startværdi er ugyldig for statisk medlem med konstruktionsfunktion"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ISO C++ forbyder tildeling af startværdi i klasse til ikke-konstant statisk medlem '%D'"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(en klargøring uden for klassens erklæring er nødvendig)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "tildeling (ikke klargøring) i erklæring"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, fuzzy, gcc-internal-format
#| msgid "shadowing previous type declaration of `%#D'"
msgid "shadowing previous type declaration of %q#D"
msgstr "skygger for tidligere typeerklæring af '%#D'"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot be thread-local because it has non-POD type `%T'"
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "'%D' kan ikke være trådlokal eftersom den er af en ikke-POD type '%T'"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, fuzzy, gcc-internal-format
#| msgid "`%D' is thread-local and so cannot be dynamically initialized"
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "'%D' er trådlokal og kan derfor ikke blive tildelt en startværdi dynamisk"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, fuzzy, gcc-internal-format
#| msgid "array initialized from non-constant array expression"
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "tabel får tildelt en startværdi fra et tabeludtryk der ikke er konstant"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, fuzzy, gcc-internal-format
#| msgid "function `%#D' is initialized like a variable"
msgid "function %q#D is initialized like a variable"
msgstr "funktionen '%#D' bliver tildelt en startværdi som en variabel"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of `%D'"
msgid "initializer fails to determine size of %qT"
msgstr "startværdien giver ikke størrelsen af '%D'"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in `%D'"
msgid "array size missing in %qT"
msgstr "tabelstørrelsen mangler i '%D'"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array `%D'"
msgid "zero-size array %qT"
msgstr "nulstørrelsestabel '%D'"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, fuzzy, gcc-internal-format
#| msgid "destructor for alien class `%T' cannot be a member"
msgid "destructor for alien class %qT cannot be a member"
msgstr "destruktionsfunktionen for den fremmede klasse '%T' kan ikke være et medlem"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, fuzzy, gcc-internal-format
#| msgid "constructor for alien class `%T' cannot be a member"
msgid "constructor for alien class %qT cannot be a member"
msgstr "konstruktionsfunktionen for den fremmede klasse '%T' kan ikke være et medlem"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> variable"
msgstr "'%D' erklæret som 'virtual' %s"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> variable"
msgstr "'%D' erklæret som 'inline' %s"
# %s bliver omsat til typen
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklæring af %s"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> parameter"
msgstr "'%D' erklæret som 'virtual' %s"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "'%D' er erklæret som en ven"
# %s bliver omsat til typen
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklæring af %s"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> type"
msgstr "'%D' erklæret som 'virtual' %s"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> type"
msgstr "'%D' erklæret som 'inline' %s"
# %s bliver omsat til typen
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklæring af %s"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> field"
msgstr "'%D' erklæret som 'virtual' %s"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> field"
msgstr "'%D' erklæret som 'inline' %s"
# %s bliver omsat til typen
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklæring af %s"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a friend"
msgid "%q+D declared as a friend"
msgstr "'%D' er erklæret som en ven"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared with an exception specification"
msgid "%q+D declared with an exception specification"
msgstr "'%D' erklæret med en undtagelsesspecifikation"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' not in a namespace surrounding `%D'"
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "erklæring af '%D' er ikke i et navnerum der omgiver '%D'"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, fuzzy, gcc-internal-format
#| msgid "static member function `%#D' declared with type qualifiers"
msgid "static member function %q#D declared with type qualifiers"
msgstr "statisk medlemsfunktion '%#D' erklæret med typemodifikationer"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, fuzzy, gcc-internal-format
#| msgid "defining explicit specialization `%D' in friend declaration"
msgid "defining explicit specialization %qD in friend declaration"
msgstr "definering af eksplicit specialisering '%D' i friend-erklæring"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, fuzzy, gcc-internal-format
#| msgid "invalid use of template-id `%D' in declaration of primary template"
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "ugyldig brug af skabelons-id '%D' i erklæring af primær skabelon"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "standardparametre er ikke tilladt i erklæring af venneskabelonsspecialisering '%D'"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, fuzzy, gcc-internal-format
#| msgid "`inline' is not allowed in declaration of friend template specialization `%D'"
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "'inline' er ikke tilladt i erklæring venneskabelonsspecialisering '%D'"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, fuzzy, gcc-internal-format
#| msgid "cannot declare `::main' to be a template"
msgid "cannot declare %<::main%> to be a template"
msgstr "kan ikke erklære '::main' som en skabelon"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, fuzzy, gcc-internal-format
#| msgid "cannot declare `::main' to be inline"
msgid "cannot declare %<::main%> to be inline"
msgstr "kan ikke erklære '::main' som indlejret"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, fuzzy, gcc-internal-format
#| msgid "cannot declare `::main' to be static"
msgid "cannot declare %<::main%> to be static"
msgstr "kan ikke erklære '::main' som statisk"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, fuzzy, gcc-internal-format
#| msgid "`%#D' does not refer to the unqualified type, so it is not used for linkage"
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "'%#D' refererer ikke til den ikkemodificerede type, so den bruges ikke til sammenkædning"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
#| msgid "previous declaration of `%#D' with %L linkage"
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "tidligere erklæring af '%#D' med %L-kædning"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
#| msgid "%smember function `%D' cannot have `%T' method qualifier"
msgid "static member function %qD cannot have cv-qualifier"
msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, fuzzy, gcc-internal-format
#| msgid "%smember function `%D' cannot have `%T' method qualifier"
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
#| msgid "template with C linkage"
msgid "literal operator with C linkage"
msgstr "skabelon med C-kædning"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "#%s with invalid argument"
msgid "%qD has invalid argument list"
msgstr "#%s med ugyldig parameter"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "'%D' skal være en ikke-statisk medlemsfunktion"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, fuzzy, gcc-internal-format
#| msgid "`main' must return `int'"
msgid "%<::main%> must return %<int%>"
msgstr "'main' skal returnere typen 'int'"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared `%D'"
msgid "definition of implicitly-declared %qD"
msgstr "definition af underforstået-erklæret '%D'"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared `%D'"
msgid "definition of explicitly-defaulted %q+D"
msgstr "definition af underforstået-erklæret '%D'"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "`%#D' previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "'%#D' tidligere defineret her"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, fuzzy, gcc-internal-format
#| msgid "no `%#D' member function declared in class `%T'"
msgid "no %q#D member function declared in class %qT"
@@ -31417,654 +31476,654 @@ msgstr "ingen medlemsfunktion '%#D' erklæret i klassen '%T'"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "ugyldig tildeling af startværdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "ugyldig tildeling af startværdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "ugyldig tildeling af startværdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "ugyldig tildeling af startværdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ forbyder tildeling af startværdi i klasse til ikke-konstant statisk medlem '%D'"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids initialization of member constant `%D' of non-integral type `%T'"
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ forbyder tildeling af startværdi til medlemskonstant '%D' af en ikke-heltallig type"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, fuzzy, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "størrelsen af tabellen '%D' er ikke af en heltalstype"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, fuzzy, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "størrelsen af tabel er ikke af en heltalstype"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' is negative"
msgid "size of array %qD is negative"
msgstr "størrelsen af tabellen '%D' er negativ"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "størrelsen af tabel er negativ"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids zero-size array `%D'"
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ forbyder tabellen '%D' med størrelsen nul"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ forbyder tabel med størrelsen nul"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' is not an integral constant-expression"
msgid "size of array %qD is not an integral constant-expression"
msgstr "størrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "størrelsen af tabel er ikke af et heltalligt konstantudtryk"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array `%D'"
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ forbyder tabellen '%D' med variabel størrelse"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array"
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ forbyder tabel med variabel størrelse"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "tabeldimension for stor"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of %<auto%>"
msgstr "'%s' erklæret som en tabel af funktioner"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of voids"
msgid "declaration of %qD as array of void"
msgstr "'%s' erklæret som en tabel af void"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
#| msgid "creating array of `%T'"
msgid "creating array of void"
msgstr "opretter tabel af '%T'"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of functions"
msgstr "'%s' erklæret som en tabel af funktioner"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "creating array of functions"
msgstr "'%s' erklæret som en tabel af funktioner"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of references"
msgstr "'%s' erklæret som en tabel af funktioner"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
#| msgid "creating array of `%T'"
msgid "creating array of references"
msgstr "opretter tabel af '%T'"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of function members"
msgstr "'%s' erklæret som en tabel af funktioner"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "creating array of function members"
msgstr "'%s' erklæret som en tabel af funktioner"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first"
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "erklæring af '%D' som flerdimensional tabel skal have grænser for alle dimensioner pånær den første"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "flerdimensional tabel skal have grænser for alle dimensioner pånær den første"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "angivelse af returneringstypen til konstruktionsfunktion er ugyldigt"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "angivelse af returneringstypen til destruktionsfunktion er ugyldigt"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, fuzzy, gcc-internal-format
#| msgid "return type specified for `operator %T'"
msgid "return type specified for %<operator %T%>"
msgstr "returtype angivet for 'operator %T'"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "unavngiven variabel eller felt erklæret void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "variabel eller felt erklæret void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
#| msgid "invalid use of member `%D'"
msgid "invalid use of qualified-name %<::%D%>"
msgstr "ugyldig brug af medlemmet '%D'"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
#| msgid "invalid definition of qualified type `%T'"
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "ugyldig definition af modificeret type '%T'"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
#| msgid "invalid use of member `%D'"
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "ugyldig brug af medlemmet '%D'"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or namespace"
msgid "%q#T is not a class or a namespace"
msgstr "'%T' er ikke en klasse eller et navnerum"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, fuzzy, gcc-internal-format
#| msgid "type `%T' is not derived from type `%T'"
msgid "type %qT is not derived from type %qT"
msgstr "typen '%T' er ikke nedarvet fra typen '%T'"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as non-function"
msgid "declaration of %qD as non-function"
msgstr "erklæring af '%D' som ikke-funktion"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as non-function"
msgid "declaration of %qD as non-member"
msgstr "erklæring af '%D' som ikke-funktion"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, fuzzy, gcc-internal-format
#| msgid "declarator-id missing; using reserved word `%D'"
msgid "declarator-id missing; using reserved word %qD"
msgstr "erklærer-id mangler; bruger reserveret ord '%D'"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, fuzzy, gcc-internal-format
#| msgid "function definition declared `register'"
msgid "function definition does not declare parameters"
msgstr "'register' er påhæftet funktionsdefinitionen"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as %s"
msgid "declaration of %qD as %<typedef%>"
msgstr "erklæring af '%D' som %s"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "erklæring af '%#D' skygger for en parameter"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "navnerum '%D' ikke tilladt i using-erklæring"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, fuzzy, gcc-internal-format
#| msgid "two or more data types in declaration of `%s'"
msgid "two or more data types in declaration of %qs"
msgstr "mere end én datatype i erklæringen af '%s'"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "modstridende erklæringer af '%s'"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids declaration of `%s' with no type"
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ forbyder erklæring af '%s' uden en type"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_trap not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_trap understøttes ikke på denne målarkitektur"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not support `long long'"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ understøtter ikke 'long long'"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for `%s'"
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "short, signed eller unsigned er ugyldig for '%s'"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, fuzzy, gcc-internal-format
#| msgid "signed and unsigned given together for `%s'"
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "signed og unsigned er begge angivet for '%s'"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<long long%> invalid for %qs"
msgstr "complex ugyldig for '%s'"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<long%> invalid for %qs"
msgstr "complex ugyldig for '%s'"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<short%> invalid for %qs"
msgstr "complex ugyldig for '%s'"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for `%s'"
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "long, short, signed og unsigned er ugyldige for '%s'"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, fuzzy, gcc-internal-format
#| msgid "long or short specified with char for `%s'"
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "long eller short angivet samtidig med char for '%s'"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, fuzzy, gcc-internal-format
#| msgid "long and short specified together for `%s'"
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "long og short er begge angivet for '%s'"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for `%s'"
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "short, signed eller unsigned er ugyldig for '%s'"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned used invalidly for `%s'"
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "long, short, signed og unsigned er benyttet på ugyldig vis for '%s'"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "complex invalid for %qs"
msgstr "complex ugyldig for '%s'"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, fuzzy, gcc-internal-format
#| msgid "qualifiers are not allowed on declaration of `operator %T'"
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "modifikationer er ikke tilladt i erklæring af 'operator %T'"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, fuzzy, gcc-internal-format
#| msgid "member `%D' cannot be declared both virtual and static"
msgid "member %qD cannot be declared both virtual and static"
msgstr "medlemmet '%D' kan ikke afklæres både virtual og static"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, fuzzy, gcc-internal-format
#| msgid "`%T::%D' is not a valid declarator"
msgid "%<%T::%D%> is not a valid declarator"
msgstr "'%T::%D' er ikke en gyldig erklærer"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "typedef-erklæringer er ugyldig i parametererklæringer"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter `%s'"
msgid "storage class specified for template parameter %qs"
msgstr "lagringsklasse angivet for parameter '%s'"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "lagringsklasseanvisninger er ugyldige i parametererklæringer"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "skabelonsparametre kan ikke være venner"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
#| msgid "virtual outside class declaration"
msgid "%<virtual%> outside class declaration"
msgstr "virtual angivet uden for klasseerklæring"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, fuzzy, gcc-internal-format
#| msgid "multiple storage classes in declaration of `%s'"
msgid "multiple storage classes in declaration of %qs"
msgstr "flere lagringsklasser optræder i erklæringen af '%s'"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for %s `%s'"
msgid "storage class specified for %qs"
msgstr "lagringsklasse angivet for %s '%s'"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter `%s'"
msgid "storage class specified for parameter %qs"
msgstr "lagringsklasse angivet for parameter '%s'"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, fuzzy, gcc-internal-format
#| msgid "nested function `%s' declared `extern'"
msgid "nested function %qs declared %<extern%>"
msgstr "indlejret funktion '%s' er erklæret 'extern'"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, fuzzy, gcc-internal-format
#| msgid "top-level declaration of `%s' specifies `auto'"
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "erklæring af '%s' på øverste niveau angiver 'auto'"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, fuzzy, gcc-internal-format
#| msgid "function-scope `%s' implicitly auto and declared `__thread'"
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "'%s' i funktionsvirkefelt underforstået auto og erklæret '__thread'"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklæringer"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, fuzzy, gcc-internal-format
#| msgid "`%s' declared as function returning a function"
msgid "%qs declared as function returning a function"
msgstr "'%s' er erklæret som en funktion der returnerer en funktion"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, fuzzy, gcc-internal-format
#| msgid "`%s' declared as function returning an array"
msgid "%qs declared as function returning an array"
msgstr "'%s' er erklæret som en funktion der returnerer en tabel"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "destruktionsfunktionen kan ikke være en statisk medlemsfunktion"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "konstruktionsfunktionen kan ikke være en statisk medlemsfunktion"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, fuzzy, gcc-internal-format
#| msgid "destructors may not be `%s'"
msgid "destructors may not be cv-qualified"
msgstr "destruktionsfunktioner må ikke være '%s'"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
#| msgid "constructors may not be `%s'"
msgid "constructors may not be cv-qualified"
msgstr "konstruktionsfunktioner må ikke være '%s'"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "konstruktionsfunktioner kan ikke erklæres virtual"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function `%s'"
msgid "can%'t initialize friend function %qs"
msgstr "kan ikke tildele en startværdi til vennefunktionen '%s'"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "en virtuel funktion kan ikke erklæres som friend"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "friend-erklæringen er ikke i klassedefinitionen"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
#| msgid "can't define friend function `%s' in a local class definition"
msgid "can%'t define friend function %qs in a local class definition"
msgstr "kan ikke definere vennefunktion '%s' i en lokal klassedefinition"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "destruktionsfunktioner må ikke have parametre"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, fuzzy, gcc-internal-format
#| msgid "cannot declare pointer to `%#T'"
msgid "cannot declare pointer to %q#T"
msgstr "kan ikke erklære henvisning til '%#T'"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to `%#T'"
msgid "cannot declare reference to %q#T"
msgstr "kan ikke erklære reference til '%#T'"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, fuzzy, gcc-internal-format
#| msgid "cannot declare pointer to `%#T' member"
msgid "cannot declare pointer to %q#T member"
msgstr "kan ikke erklære henvisning til medlemmet '%#T'"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
#| msgid "cannot declare references to references"
msgid "cannot declare reference to qualified function type %qT"
msgstr "kan ikke erklære referencer til referencer"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
#| msgid "cannot declare bit-field `%D' with function type"
msgid "cannot declare pointer to qualified function type %qT"
msgstr "kan ikke erklære bitfelt '%D' med funktionstype"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' used as a declarator"
msgid "template-id %qD used as a declarator"
msgstr "skabelons-id '%D' benyttet som erklærer"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "medlemsfunktioner er underforstået venner af deres klasse"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, fuzzy, gcc-internal-format
#| msgid "extra qualification `%T::' on member `%s' ignored"
msgid "extra qualification %<%T::%> on member %qs"
msgstr "ekstra modifikation '%T::' af medlemmet '%s' ignoreret"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%T::%s' within `%T'"
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "kan ikke erklære medlemsfunktion '%T::%s' inde i '%T'"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%T::%s' within `%T'"
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "kan ikke erklære medlemsfunktion '%T::%s' inde i '%T'"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member `%T::%s' within `%T'"
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "kan ikke erklære medlem '%T::%s' inde i '%T'"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, fuzzy, gcc-internal-format
#| msgid "data member `%D' cannot be a member template"
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "datamedlem '%D' kan ikke være en medlemsskabelon"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, fuzzy, gcc-internal-format
#| msgid "size of array `%s' is too large"
msgid "size of array %qs is too large"
msgstr "størrelsen af tabellen '%s' er for stor"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, fuzzy, gcc-internal-format
#| msgid "data member may not have variably modified type `%T'"
msgid "data member may not have variably modified type %qT"
msgstr "datamedlem må ikke have variabelt ændret type '%T'"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, fuzzy, gcc-internal-format
#| msgid "parameter may not have variably modified type `%T'"
msgid "parameter may not have variably modified type %qT"
@@ -32072,368 +32131,368 @@ msgstr "parameter må ikke have variabelt ændret type '%T'"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, fuzzy, gcc-internal-format
#| msgid "only declarations of constructors can be `explicit'"
msgid "only declarations of constructors can be %<explicit%>"
msgstr "kun erklæringer af konstruktionsfunktioner kan være 'explicit'"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, fuzzy, gcc-internal-format
#| msgid "non-member `%s' cannot be declared `mutable'"
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "'%s' som ikke er medlem, kan ikke erklæres 'mutable'"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, fuzzy, gcc-internal-format
#| msgid "non-object member `%s' cannot be declared `mutable'"
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "'%s' som ikke er objektmedlem, kan ikke erklæres 'mutable'"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, fuzzy, gcc-internal-format
#| msgid "function `%s' cannot be declared `mutable'"
msgid "function %qs cannot be declared %<mutable%>"
msgstr "funktionen '%s' kan ikke erklæres 'mutable'"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, fuzzy, gcc-internal-format
#| msgid "static `%s' cannot be declared `mutable'"
msgid "static %qs cannot be declared %<mutable%>"
msgstr "static '%s' kan ikke erklæres 'mutable'"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, fuzzy, gcc-internal-format
#| msgid "const `%s' cannot be declared `mutable'"
msgid "const %qs cannot be declared %<mutable%>"
msgstr "const '%s' kan ikke erklæres 'mutable'"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
#| msgid "function `%s' cannot be declared `mutable'"
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "funktionen '%s' kan ikke erklæres 'mutable'"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "typedef declared %<auto%>"
msgstr "type er forældet (erklæret ved %s:%d)"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, fuzzy, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr "typedef-navn kan ikke klassemodificeres"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids nested type `%D' with same name as enclosing class"
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ forbyder indlejret type '%D' med samme navn som den omgivende klasse"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, fuzzy, gcc-internal-format
#| msgid "destructor cannot be static member function"
msgid "qualified function types cannot be used to declare static member functions"
msgstr "destruktionsfunktionen kan ikke være en statisk medlemsfunktion"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
#| msgid "function return type cannot be function"
msgid "qualified function types cannot be used to declare free functions"
msgstr "en funktions returtype kan ikke være en funktion"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "typemodifikationer angivet for friend class-erklæring"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, fuzzy, gcc-internal-format
#| msgid "`inline' specified for friend class declaration"
msgid "%<inline%> specified for friend class declaration"
msgstr "'inline' angivet for friend class-erklæring"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "skabelonsparametre kan ikke være venner"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, fuzzy, gcc-internal-format
#| msgid "friend declaration requires class-key, i.e. `friend class %T::%D'"
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "friend-erklæring kræver klasseangivelse, dvs. 'friend class %T::%D'"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, fuzzy, gcc-internal-format
#| msgid "friend declaration requires class-key, i.e. `friend %#T'"
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "friend-erklæring kræver klasseangivelse, dvs. 'friend %#T'"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, fuzzy, gcc-internal-format
#| msgid "trying to make class `%T' a friend of global scope"
msgid "trying to make class %qT a friend of global scope"
msgstr "forsøg på at gøre klassen '%T' til ven af det globale virkningsfelt"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "ugyldige modifikationer for ikke-medlemsfunktionstype"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, fuzzy, gcc-internal-format
#| msgid "abstract declarator `%T' used as declaration"
msgid "abstract declarator %qT used as declaration"
msgstr "abstrakt erklærer '%T' benyttet som erklæring"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, fuzzy, gcc-internal-format
#| msgid "cannot use `::' in parameter declaration"
msgid "cannot use %<::%> in parameter declaration"
msgstr "kan ikke bruge '::' i parametererklæring"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' declared void"
msgid "parameter declared %<auto%>"
msgstr "parameteren '%D' erklæret void"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
#| msgid "`%T' has no non-static data member named `%D'"
msgid "non-static data member declared %<auto%>"
msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `::'"
msgid "invalid use of %<::%>"
msgstr "ugyldig brug af '::'"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
#| msgid "declaration of C function `%#D' conflicts with"
msgid "declaration of function %qD in invalid context"
msgstr "erklæring af C-funktionen '%#D' strider mod"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, fuzzy, gcc-internal-format
#| msgid "function `%D' declared virtual inside a union"
msgid "function %qD declared virtual inside a union"
msgstr "funktionen '%D' erklæret virtual inden i en union"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot be declared virtual, since it is always static"
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "'%D' kan ikke erklæres virtual eftersom den altid er statisk"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, fuzzy, gcc-internal-format
#| msgid "qualifiers are not allowed on declaration of `operator %T'"
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "modifikationer er ikke tilladt i erklæring af 'operator %T'"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' shadows a member of `this'"
msgid "declaration of %qD as member of %qT"
msgstr "erklæring af '%s' skygger for et medlem af 'this'"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
#| msgid "destructors may not be `%s'"
msgid "a destructor cannot be %<constexpr%>"
msgstr "destruktionsfunktioner må ikke være '%s'"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
#| msgid "qualifiers are not allowed on declaration of `operator %T'"
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "modifikationer er ikke tilladt i erklæring af 'operator %T'"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, fuzzy, gcc-internal-format
#| msgid "field `%D' has incomplete type"
msgid "field %qD has incomplete type"
msgstr "feltet '%D' er af en ufuldstændig type"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, fuzzy, gcc-internal-format
#| msgid "name `%T' has incomplete type"
msgid "name %qT has incomplete type"
msgstr "navnet '%T' er af en ufuldstændig type"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, fuzzy, gcc-internal-format
#| msgid " in instantiation of template `%T'"
msgid " in instantiation of template %qT"
msgstr " i instantiering af skabelonen '%T'"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, fuzzy, gcc-internal-format
#| msgid "`%s' is neither function nor member function; cannot be declared friend"
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "'%s' er hverken en almindelig funktion eller en medlemsfunktion; kan ikke erklæres som friend"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr ""
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
#| msgid "static member `%D' declared `register'"
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "statisk medlem '%D' erklæret 'register'"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, fuzzy, gcc-internal-format
#| msgid "storage class `auto' invalid for function `%s'"
msgid "storage class %<auto%> invalid for function %qs"
msgstr "lagringsklassen 'auto' er ugyldig for funktionen '%s'"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, fuzzy, gcc-internal-format
#| msgid "storage class `register' invalid for function `%s'"
msgid "storage class %<register%> invalid for function %qs"
msgstr "lagringsklassen 'register' er ugyldig for funktionen '%s'"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, fuzzy, gcc-internal-format
#| msgid "storage class `__thread' invalid for function `%s'"
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "lagringsklassen '__thread' er ugyldig for funktionen '%s'"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
#| msgid "type specifier `%s' not allowed after struct or class"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "typeangivelsen '%s' er ikke tilladt efter struct eller class"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, fuzzy, gcc-internal-format
#| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklæret uden for det globale virkefelt"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, fuzzy, gcc-internal-format
#| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklæret uden for det globale virkefelt"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, fuzzy, gcc-internal-format
#| msgid "virtual non-class function `%s'"
msgid "virtual non-class function %qs"
msgstr "virtuel funktion '%s' tilhører ikke en klasse"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
#| msgid "method definition not in class context"
msgid "%qs defined in a non-class scope"
msgstr "metodedefinitionen optræder ikke i en klassekontekst"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
#| msgid "using-declaration for non-member at class scope"
msgid "%qs declared in a non-class scope"
msgstr "using-erklæring for ikke-medlem ved klassevirkefelt"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%D' to have static linkage"
msgid "cannot declare member function %qD to have static linkage"
msgstr "kan ikke erklære medlemsfunktion '%D' til at have statisk kædning"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "kan ikke erklære en funktion for static inden i en anden funktion"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, fuzzy, gcc-internal-format
#| msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "'static' må ikke bruges ved definering (i modsætning til erklæring) af et statisk datamedlem"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, fuzzy, gcc-internal-format
#| msgid "static member `%D' declared `register'"
msgid "static member %qD declared %<register%>"
msgstr "statisk medlem '%D' erklæret 'register'"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, fuzzy, gcc-internal-format
#| msgid "cannot explicitly declare member `%#D' to have extern linkage"
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "kan ikke eksplicit erklære medlemmet '%#D' til at have extern-kædning"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' outside of class is not definition"
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "erklæring af '%#D' uden for en klasse er ikke en definition"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, fuzzy, gcc-internal-format
#| msgid "`%s' initialized and declared `extern'"
msgid "%qs initialized and declared %<extern%>"
msgstr "'%s' bliver tildelt en startværdi og er samtidig erklæret 'extern'"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, fuzzy, gcc-internal-format
#| msgid "`%s' has both `extern' and initializer"
msgid "%qs has both %<extern%> and initializer"
msgstr "'%s' er erklæret 'extern', men bliver tildelt en startværdi"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "default argument for %q#D has type %qT"
msgstr "standardparameter for '%#D' har typen '%T'"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type `%T' has type `%T'"
msgid "default argument for parameter of type %qT has type %qT"
msgstr "standardparameter for parameter af typen '%T' har typen '%T'"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
#| msgid "default argument `%E' uses local variable `%D'"
msgid "default argument %qE uses %qD"
msgstr "standardparameter '%E' bruger lokal variabel '%D'"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, fuzzy, gcc-internal-format
#| msgid "default argument `%E' uses local variable `%D'"
msgid "default argument %qE uses local variable %qD"
msgstr "standardparameter '%E' bruger lokal variabel '%D'"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "parameteren er af en ufuldstændig type"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' invalidly declared method type"
msgid "parameter %qD invalidly declared method type"
msgstr "parameteren '%D' er på ugyldig vis erklæret som af en medlemsfunktionstype"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "parameteren '%D' inkluderer %s til tabel med ukendt grænse '%T'"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgid "parameter %qD includes reference to array of unknown bound %qT"
@@ -32454,195 +32513,195 @@ msgstr "parameteren '%D' inkluderer %s til tabel med ukendt grænse '%T'"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, fuzzy, gcc-internal-format
#| msgid "invalid constructor; you probably meant `%T (const %T&)'"
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "ugyldig konstruktionsfunktion; du mente sandsynligvis '%T (const %T&)'"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, fuzzy, gcc-internal-format
#| msgid "`%D' was not declared in this scope"
msgid "%qD may not be declared within a namespace"
msgstr "'%D' blev ikke erklæret i dette virkefelt"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, fuzzy, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "'%#D' kan ikke erklæres"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be a nonstatic member function"
msgid "%qD must be a nonstatic member function"
msgstr "'%D' skal være en ikke-statisk medlemsfunktion"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be either a non-static member function or a non-member function"
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "'%D' skal enten være en ikke-statisk medlemsfunktion eller ikke en medlemsfunktion"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, fuzzy, gcc-internal-format
#| msgid "`%D' must have an argument of class or enumerated type"
msgid "%qD must have an argument of class or enumerated type"
msgstr "'%D' skal have en parameter af en klasse- eller enum-type"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to void will never use a type conversion operator"
msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to the same type will never use a type conversion operator"
msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a base class will never use a type conversion operator"
msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ forbyder flertydiggørelse af operatoren ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take either one or two arguments"
msgid "%qD must not have variable number of arguments"
msgstr "'%D' skal tage mod én eller to parametre"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, fuzzy, gcc-internal-format
#| msgid "postfix `%D' must take `int' as its argument"
msgid "postfix %qD must take %<int%> as its argument"
msgstr "postfiks '%D' skal tage mod 'int' som parameter"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, fuzzy, gcc-internal-format
#| msgid "postfix `%D' must take `int' as its second argument"
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "postfiks '%D' skal tage mod 'int' som den anden parameter"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take either zero or one argument"
msgid "%qD must take either zero or one argument"
msgstr "'%D' skal tage mod nul eller én parameter"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take either one or two arguments"
msgid "%qD must take either one or two arguments"
msgstr "'%D' skal tage mod én eller to parametre"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, fuzzy, gcc-internal-format
#| msgid "prefix `%D' should return `%T'"
msgid "prefix %qD should return %qT"
msgstr "præfiks '%D' skal returnere '%T'"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, fuzzy, gcc-internal-format
#| msgid "postfix `%D' should return `%T'"
msgid "postfix %qD should return %qT"
msgstr "postfiks '%D' skal returnere '%T'"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take `void'"
msgid "%qD must take %<void%>"
msgstr "'%D' skal tage mod 'void'"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take exactly one argument"
msgid "%qD must take exactly one argument"
msgstr "'%s' skal tage mod én parameter"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take exactly two arguments"
msgid "%qD must take exactly two arguments"
msgstr "'%s' skal tage mod to parametre"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, fuzzy, gcc-internal-format
#| msgid "user-defined `%D' always evaluates both arguments"
msgid "user-defined %qD always evaluates both arguments"
msgstr "brugerdefineret '%D' evaluerer altid begge parametre"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, fuzzy, gcc-internal-format
#| msgid "`%D' should return by value"
msgid "%qD should return by value"
msgstr "'%D' skal returnere pr. værdi (ikke reference)"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "%qD cannot have default arguments"
msgstr "'%D' kan ikke have standardparametre"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, fuzzy, gcc-internal-format
#| msgid "using template type parameter `%T' after `%s'"
msgid "using template type parameter %qT after %qs"
msgstr "bruger skabelonstypeparameter '%D' efter '%s'"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization `%D' for `%+D'"
msgid "using alias template specialization %qT after %qs"
msgstr "tvetydig skabelonsspecialisering '%D' for '%+D'"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, fuzzy, gcc-internal-format
#| msgid "using typedef-name `%D' after `%s'"
msgid "using typedef-name %qD after %qs"
msgstr "bruger typedef-navn '%D' efter '%s'"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "tidligere erklæring som '%#D'"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, fuzzy, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "'%#D' omerklæret som %C"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, fuzzy, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "dette er en tidligere erklæring"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, fuzzy, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "'%#D' omerklæret som %C"
@@ -32654,96 +32713,96 @@ msgstr "'%#D' omerklæret som %C"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, fuzzy, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "skabelonsparameter er påkrævet for '%T'"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, fuzzy, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "brug af '%D' er tvetydigt"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, fuzzy, gcc-internal-format
#| msgid "use of enum `%#D' without previous declaration"
msgid "use of enum %q#D without previous declaration"
msgstr "brug af enum '%#D' uden tidligere erklæring"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, fuzzy, gcc-internal-format
#| msgid "friend declaration `%#D' declares a non-template function"
msgid "redeclaration of %qT as a non-template"
msgstr "friend-erklæring '%#D' erklærer en ikke-skabelonsfunktion"
# hænger sammen med næste tekst
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%D'"
msgid "previous declaration %q+D"
msgstr "tidligere erklæring '%D'"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, fuzzy, gcc-internal-format
#| msgid "derived union `%T' invalid"
msgid "derived union %qT invalid"
msgstr "nedarvet union '%T' ugyldig"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, fuzzy, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "stamklassen '%#T' har en ikke-virtuel destruktionsfunktion"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, fuzzy, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "stamklassen '%#T' har en ikke-virtuel destruktionsfunktion"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, fuzzy, gcc-internal-format
#| msgid "base type `%T' fails to be a struct or class type"
msgid "base type %qT fails to be a struct or class type"
msgstr "stamklassetype '%T' er hverken en struct- eller class-type"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, fuzzy, gcc-internal-format
#| msgid "recursive type `%T' undefined"
msgid "recursive type %qT undefined"
msgstr "rekursiv type '%T' ikke defineret"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, fuzzy, gcc-internal-format
#| msgid "duplicate base type `%T' invalid"
msgid "duplicate base type %qT invalid"
msgstr "stamklassetype '%T' optræder mere end én gang"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
msgid "previous definition here"
msgstr "tidligere definition her"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -32752,79 +32811,79 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for `%s' not integer constant"
msgid "enumerator value for %qD is not an integer constant"
msgstr "enum-værdien for '%s' er ikke en heltalskonstant"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr ""
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, fuzzy, gcc-internal-format
#| msgid "overflow in enumeration values at `%D'"
msgid "overflow in enumeration values at %qD"
msgstr "enum-værdier for store ved '%D'"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, fuzzy, gcc-internal-format
#| msgid "return type `%#T' is incomplete"
msgid "return type %q#T is incomplete"
msgstr "returtype '%#T' er ufuldstændig"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
#| msgid "return type is an incomplete type"
msgid "return type has Java class type %q#T"
msgstr "returtypen er en ufuldstændig type"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, fuzzy, gcc-internal-format
#| msgid "`operator=' should return a reference to `*this'"
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "'operator=' bør returnere en reference til '*this'"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, fuzzy, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "ingen tidligere erklæring af '%s'"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
msgid "invalid function declaration"
msgstr "Ugyldig erklæring"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' declared void"
msgid "parameter %qD declared void"
msgstr "parameteren '%D' erklæret void"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label `%D' defined but not used"
msgid "parameter %q+D set but not used"
msgstr "etiketten '%D' er defineret, men ikke benyttet"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, fuzzy, gcc-internal-format
msgid "invalid member function declaration"
msgstr "ugyldig medlemsskabelonerklæring '%D'"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, fuzzy, gcc-internal-format
#| msgid "`%D' is already defined in class `%T'"
msgid "%qD is already defined in class %qT"
@@ -32870,7 +32929,7 @@ msgstr "kan ikke udføre delete på en funktion; kun henvisninger til objekter er
msgid "deleting %qT is undefined"
msgstr "benyttelse af delete på '%T' er ikke defineret"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, fuzzy, gcc-internal-format
#| msgid "template declaration of `%#D'"
msgid "template declaration of %q#D"
@@ -33158,7 +33217,7 @@ msgstr "ufuldstændig type '%T' kan ikke bruges til at navngive et virkefelt"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "brug af '%D' er tvetydigt"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a member of `%T'"
msgid "%qD is not a member of %qT"
@@ -33505,7 +33564,7 @@ msgstr "typen '%D' er ikke en direkte stamklasse til '%T'"
msgid "bad array initializer"
msgstr "ugyldig tildeling af startværdi til tabel"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or union type"
msgid "%qT is not a class type"
@@ -33601,69 +33660,69 @@ msgstr "tabelindekset i startværdien er ikke en konstant"
msgid "parenthesized initializer in array new"
msgstr "egenskaber i parametertabelerklæring ignoreret"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "størrelse i tabel-new skal være en heltalstype"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new kan ikke bruges på en funktionstype"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, fuzzy, gcc-internal-format
#| msgid "call to Java constructor, while `jclass' undefined"
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "kald af Java-konstruktionsfunktion mens 'jclass' ikke er defineret"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
#| msgid "can't find class$"
msgid "can%'t find %<class$%> in %qT"
msgstr "kan ikke finde class$"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "startværdien slutter for tidligt"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "kan ikke klargøre multidimensional tabel med startværdi"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr ""
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "ukendt tabelstørrelse i delete"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
@@ -33726,43 +33785,43 @@ msgstr ""
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, fuzzy, gcc-internal-format
#| msgid "the mangled name of `%D' will change in a future version of GCC"
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "det ABI-navnet for '%D' vil ændre sig i en fremtidig version af GCC"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -33855,64 +33914,64 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
#| msgid "template declaration of `%#D'"
msgid "defaulted declaration %q+D"
msgstr "skabelonserklæring af '%#D'"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
#| msgid "cast does not match function type"
msgid "does not match expected signature %qD"
msgstr "typeomtvingelse passer ikke til funktionstype"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "a template cannot be defaulted"
msgstr "skabelonsparametre kan ikke være venner"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
#| msgid "`%#D' cannot be declared"
msgid "%qD cannot be defaulted"
msgstr "'%#D' kan ikke erklæres"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "%Hslutningen af filen læst inden i standardparameter"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, fuzzy, gcc-internal-format
#| msgid "vtable layout for class `%T' may not be ABI-compliant and may change in a future version of GCC due to implicit virtual destructor"
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "vtable-layout for klassen '%T' følger ikke nødvendigvis ABI'et og kan ændre sig i en fremtidig version af GCC pga. underforstået virtuel destruktionsfunktion"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "strider mod tidligere erklæring '%#D'"
# hænger sammen med næste tekst
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%D'"
msgid "previous declaration %q+#D"
msgstr "tidligere erklæring '%D'"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, fuzzy, gcc-internal-format
#| msgid "redeclaration of `wchar_t' as `%T'"
msgid "redeclaration of %<wchar_t%> as %qT"
@@ -33924,151 +33983,151 @@ msgstr "omerklæring af 'wchar_t' som '%T'"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of `%D'"
msgid "invalid redeclaration of %q+D"
msgstr "ugyldig omerklæring af '%D'"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "tidligere erklæring af '%#D' med %L-kædning"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
msgid "due to different exception specifications"
msgstr "Generér ikke kode til at kontrollere undtagelsesspecifikationer"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, fuzzy, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "typen passer ikke med tidligere ekstern erklæring"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, fuzzy, gcc-internal-format
#| msgid "previous external decl of `%#D'"
msgid "previous external decl of %q+#D"
msgstr "tidligere ekstern erklæring af '%#D'"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
#| msgid "extern declaration of `%#D' doesn't match"
msgid "extern declaration of %q#D doesn%'t match"
msgstr "extern-erklæring af '%#D' passer ikke med"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, fuzzy, gcc-internal-format
#| msgid "global declaration `%#D'"
msgid "global declaration %q+#D"
msgstr "global erklæring '%#D'"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' shadows a parameter"
msgid "declaration of %q#D shadows a parameter"
msgstr "erklæring af '%#D' skygger for en parameter"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "erklæring af '%#D' skygger for en parameter"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, fuzzy, gcc-internal-format
#| msgid "declaration of \"%s\" shadows a previous local"
msgid "declaration of %qD shadows a previous local"
msgstr "erklæring af '%s' skygger for en tidligere lokal variabel"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' shadows a member of `this'"
msgid "declaration of %qD shadows a member of 'this'"
msgstr "erklæring af '%s' skygger for et medlem af 'this'"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, fuzzy, gcc-internal-format
#| msgid "declaration of \"%s\" shadows a global declaration"
msgid "declaration of %qD shadows a global declaration"
msgstr "erklæring af '%s' skygger for en global erklæring"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, fuzzy, gcc-internal-format
#| msgid "name lookup of `%D' changed"
msgid "name lookup of %qD changed"
msgstr "navneopslag for '%D' ændret"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, fuzzy, gcc-internal-format
#| msgid " matches this `%D' under ISO standard rules"
msgid " matches this %q+D under ISO standard rules"
msgstr " passer med '%D' under ISO-standardreglerne"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, fuzzy, gcc-internal-format
#| msgid " matches this `%D' under old rules"
msgid " matches this %q+D under old rules"
msgstr " passer med '%D' under tidligere regler"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
#| msgid "name lookup of `%D' changed for new ISO `for' scoping"
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "navneopslaget af '%D' er ændret til ISO 'for'-virkefelt"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, fuzzy, gcc-internal-format
#| msgid " cannot use obsolete binding at `%D' because it has a destructor"
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " kan ikke bruge forældet binding til '%D' fordi den har en destruktionsfunktion"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, fuzzy, gcc-internal-format
#| msgid " using obsolete binding at `%D'"
msgid " using obsolete binding at %q+D"
msgstr " bruger forældet binding til '%D'"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, fuzzy, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s: %s: "
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, fuzzy, gcc-internal-format
#| msgid "`%#D' hides constructor for `%#T'"
msgid "%q#D hides constructor for %q#T"
msgstr "'%#D' skjuler konstruktionsfunktion for '%#T'"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, fuzzy, gcc-internal-format
#| msgid "`%#D' conflicts with previous using declaration `%#D'"
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "'%#D' strider mod tidligere using-erklæring '%#D'"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, fuzzy, gcc-internal-format
#| msgid "previous non-function declaration `%#D'"
msgid "previous non-function declaration %q+#D"
msgstr "tidligere ikke-funktionserklæring '%#D'"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, fuzzy, gcc-internal-format
#| msgid "conflicts with function declaration `%#D'"
msgid "conflicts with function declaration %q#D"
@@ -34076,7 +34135,7 @@ msgstr "strider mod funktionserklæring '%#D'"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a namespace"
msgid "%qT is not a namespace"
@@ -34084,138 +34143,138 @@ msgstr "'%T' er ikke et navnerum"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, fuzzy, gcc-internal-format
#| msgid "a using-declaration cannot specify a template-id. Try `using %D'"
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "en using-erklæring kan ikke angive en skabelons-id; prøv 'using %D'"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, fuzzy, gcc-internal-format
#| msgid "namespace `%D' not allowed in using-declaration"
msgid "namespace %qD not allowed in using-declaration"
msgstr "navnerum '%D' ikke tilladt i using-erklæring"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, fuzzy, gcc-internal-format
#| msgid "`%D' not declared"
msgid "%qD not declared"
msgstr "'%D' ikke erklæret"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, fuzzy, gcc-internal-format
#| msgid "`%D' is already declared in this scope"
msgid "%qD is already declared in this scope"
msgstr "'%D' er allerede erklæret i dette navnerum"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "using-erklæring for ikke-medlem ved klassevirkefelt"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, fuzzy, gcc-internal-format
#| msgid "`%D' names constructor"
msgid "%<%T::%D%> names destructor"
msgstr "'%D' navngiver en konstruktionsfunktion"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, fuzzy, gcc-internal-format
#| msgid "`%D' names constructor"
msgid "%<%T::%D%> names constructor"
msgstr "'%D' navngiver en konstruktionsfunktion"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, fuzzy, gcc-internal-format
#| msgid "`%D' names constructor"
msgid "%<%T::%D%> names constructor in %qT"
msgstr "'%D' navngiver en konstruktionsfunktion"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, fuzzy, gcc-internal-format
#| msgid "no members matching `%D' in `%#T'"
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "ingen medlemmer passer til '%D' i '%#T'"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' not in a namespace surrounding `%D'"
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "erklæring af '%D' er ikke i et navnerum der omgiver '%D'"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, fuzzy, gcc-internal-format
#| msgid "duplicate type qualifiers in %s declaration"
msgid "explicit qualification in declaration of %qD"
msgstr "dobbelte typemodifikationer i %s-erklæring"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, fuzzy, gcc-internal-format
#| msgid "`%D' should have been declared inside `%D'"
msgid "%qD should have been declared inside %qD"
msgstr "'%D' skulle have været erklæret inden i '%D'"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%qD attribute requires a single NTBS argument"
msgstr "egenskaben '%s' kræver en heltalskonstant som parameter"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, fuzzy, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "egenskabsdirektivet '%s' ignoreret"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, fuzzy, gcc-internal-format
#| msgid "namespace alias `%D' not allowed here, assuming `%D'"
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "navnerumsalias '%D' er ikke tilladt her, antager '%D'"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr ""
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -34339,7 +34398,7 @@ msgstr "new kan ikke bruges på en referencetype"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "semikolon mangler efter erklæring af '%T'"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template"
msgid "%qT is not a template"
@@ -34361,7 +34420,7 @@ msgstr "ugyldig roteringsinstruktion"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "overløb i konstant udtryk"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -34509,765 +34568,765 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "Sætning ved %0 er ugyldig i denne kontekst"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
#| msgid "multi-line string literals are deprecated"
msgid "unable to find string literal operator %qD"
msgstr "flerlinjers strengkonstanter er forældede"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "tom erklæring"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
#| msgid "-Wno-strict-prototypes is not supported in C++"
msgid "fixed-point types not supported in C++"
msgstr "-Wno-strict-prototypes er ikke understøttet i C++"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ forbyder krøllet parantes-grupper inden i udtryk"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "sætningsblokke i udtryk er kun tilladt inde i en funktion"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected primary-expression"
msgstr "uventet adresseudtryk"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, fuzzy, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "'%D' blev ikke erklæret i dette virkefelt"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "Advar om extern-erklæringer som ikke er ved filvirkefeltsniveauet"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, fuzzy, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "'%D' blev ikke erklæret i dette virkefelt"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected id-expression"
msgstr "uventet adresseudtryk"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' shadows a member of `this'"
msgid "declaration of %<~%T%> as member of %qT"
msgstr "erklæring af '%s' skygger for et medlem af 'this'"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, fuzzy, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "skabelons-id '%D' benyttet som erklærer"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr ""
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or union type"
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "'%T' er ikke af en klasse- eller union-type"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template"
msgid "%qD is not a template"
msgstr "'%T' er ikke en skabelon"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "uventet operand"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr "new kan ikke bruges på en referencetype"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ forbyder sammensatte konstanter"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE does not have class type"
msgstr "'%D' erklærer ikke en skabelonstype"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%D'"
msgid "invalid use of %qD"
msgstr "ugyldig brug af '%D"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "`%D::%D' is not a member of `%T'"
msgid "%<%D::%D%> is not a class member"
msgstr "'%D::%D' er ikke et medlem af '%T'"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ tillader ikke udpegede startværdier"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, fuzzy, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "egenskaber i parametertabelerklæring ignoreret"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, fuzzy, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "størrelse i tabel-new skal være en heltalstype"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "brug af ældre type typeomtvingning"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
#| msgid "suggest parentheses around && within ||"
msgid "suggest parentheses around %<>>%> expression"
msgstr "foreslår paranteser omkring && inden i ||"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ tillader ikke udpegede startværdier"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ tillader ikke udpegede startværdier"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr ""
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid "%q+#D declared here"
msgstr " '%#D' erklæret her"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
#| msgid "default argument given for parameter %d of `%#D'"
msgid "default argument specified for lambda parameter"
msgstr "standardparameter givet til %d. parameter for '%#D'"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "expected labeled-statement"
msgstr "tom krop i en else-sætning"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, fuzzy, gcc-internal-format
#| msgid "case label `%E' not within a switch statement"
msgid "case label %qE not within a switch statement"
msgstr "case-etiket '%E' befinder sig ikke inden i en switch-sætning"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr ""
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "In statement function"
msgid "compound-statement in constexpr function"
msgstr "I sætningsfunktion"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "expected selection-statement"
msgstr "tom krop i en else-sætning"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "udtrykket er af en ufuldstændig type"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
msgid "expected iteration-statement"
msgstr "uventet operand"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ forbyder beregnede goto'er"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
msgid "expected jump-statement"
msgstr "uventet operand"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in friend function declarations"
msgid "decl-specifier invalid in condition"
msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklæringer"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, fuzzy, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "funktionen '%D' kan ikke erklæres friend"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid linkage-specification"
msgstr "ugyldig stamklasseangivelse"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid use of %<auto%> in conversion operator"
msgstr "ugyldig brug af void-udtryk"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "only constructors take base initializers"
msgid "only constructors take member initializers"
msgstr "kun konstruktionsfunktioner har stamklasseklargøringer"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
#| msgid "missing initializer for member `%D'"
msgid "cannot expand initializer for member %<%D%>"
msgstr "manglende startværdi for medlemmet '%D'"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr ""
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, fuzzy, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "forældet stamklasseklargøring"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "predicate must be an identifier"
msgid "expected suffix identifier"
msgstr "udsagn skal være et kaldenavn"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "uventet operand"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, fuzzy, gcc-internal-format
#| msgid "keyword `export' not implemented, and will be ignored"
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "det reserverede ord 'export' er ikke implementeret og vil blive ignoreret"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "template parameter pack %qD cannot have a default argument"
msgstr "'%D' kan ikke have standardparametre"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter pack cannot have a default argument"
msgstr "skabelonsparametre kan ikke være venner"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter packs cannot have default arguments"
msgstr "skabelonsparametre kan ikke være venner"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
msgid "expected template-id"
msgstr "uventet operand"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<<%>"
msgstr "';' forventet"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, fuzzy, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "objektet '%E' kan ikke bruges som skabelonsparameter"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr ""
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, fuzzy, gcc-internal-format
msgid "parse error in template argument list"
msgstr "objektet '%E' kan ikke bruges som skabelonsparameter"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
msgid "expected template-name"
msgstr "uventet operand"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, fuzzy, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "ikke-skabelon benyttet som skabelon"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, fuzzy, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "skabelons-id '%D' i erklæring af primær skabelon"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
msgid "expected template-argument"
msgstr "uventet operand"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "ugyldig standardparameter i skabelon"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#D' after"
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "eksplicit instantiering af '%#D' efter"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#D' after"
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "eksplicit instantiering af '%#D' efter"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "skabelonsspecialisering med C-kædning"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
#| msgid "sigof type specifier"
msgid "expected type specifier"
msgstr "sigof-typeangivelse"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type `%D', got `%D'"
msgid "expected template-id for type"
msgstr " forventede en skabelon af typen '%D', modtog '%D'"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
msgid "expected type-name"
msgstr "uventet operand"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
#| msgid "declaration does not declare anything"
msgid "declaration %qD does not declare anything"
msgstr "erklæring erklærer ikke noget"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
#| msgid "invalid operation on uninstantiated type"
msgid "attributes ignored on uninstantiated type"
msgstr "ugyldig operation på uudskiftet type"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
#| msgid "storage class `%D' applied to template instantiation"
msgid "attributes ignored on template instantiation"
msgstr "lagringsklasse '%D' anvendt på skabelonsinstantiering"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function template"
msgid "%qD is an enumeration template"
msgstr "'%D' er ikke en funktionsskabelon"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a namespace"
msgid "%qD is not an enumerator-name"
msgstr "'%D' er ikke et navnerum"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr ""
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
#| msgid "Enable automatic template instantiation"
msgid "cannot add an enumerator list to a template instantiation"
msgstr "Aktivér automatisk skabelonsinstantiering"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "erklæring af '%D' i '%D' som ikke omgiver '%D'"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "erklæring af '%D' i '%D' som ikke omgiver '%D'"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, fuzzy, gcc-internal-format
#| msgid "multiple definition of `%#T'"
msgid "multiple definition of %q#T"
msgstr "flere definitioner af '%#T'"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a namespace"
msgid "%qD is not a namespace-name"
msgstr "'%D' er ikke et navnerum"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
msgid "expected namespace-name"
msgstr "uventet operand"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
#| msgid "Min/max instructions not allowed"
msgid "%<namespace%> definition is not allowed here"
msgstr "Min/max-instruktioner ikke tilladt"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, fuzzy, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "navnerum '%D' ikke tilladt i using-erklæring"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
#| msgid "%s: function definition not converted\n"
msgid "a function-definition is not allowed here"
msgstr "%s: funktionsdefinitionen er ikke omdannet\n"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, fuzzy, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "en global registervariabel følger en funktionsdefinition"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "empty scalar initializer"
msgid "expected initializer"
msgstr "tom skalarstartværdi"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
msgid "invalid type in declaration"
msgstr "Ugyldig erklæring"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
#| msgid "initializer specified for non-member function `%D'"
msgid "initializer provided for function"
msgstr "startværdi angivet for ikke-medlemsfunktion '%D'"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, fuzzy, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "egenskaber i parametertabelerklæring ignoreret"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array bound is not an integer constant"
msgstr "tabelindeks er ikke et heltal"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type `%T'"
msgid "cannot define member of dependent typedef %qT"
msgstr "opretter henvisning til medlemsreference af typen '%T'"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
#| msgid "`%D::%D' is not a template"
msgid "%<%T::%E%> is not a type"
msgstr "'%D::%D' er ikke en skabelon"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "ugyldig brug af ikke-statisk felt '%D'"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -35276,262 +35335,262 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "ugyldig erklærer"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declarator"
msgstr "tom erklæring"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, fuzzy, gcc-internal-format
#| msgid "`%D' is a namespace"
msgid "%qD is a namespace"
msgstr "'%D' er et navnerum"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type `%T'"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "uventet operand"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
#| msgid "duplicate case value"
msgid "duplicate cv-qualifier"
msgstr "case-værdi optræder mere end én gang"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "multiple `virtual' specifiers"
msgid "duplicate virt-specifier"
msgstr "mere end én 'virtual'-angivelse"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%D'"
msgid "invalid use of %<auto%>"
msgstr "ugyldig brug af '%D"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
msgid "expected type-specifier"
msgstr "uventet operand"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr ""
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, fuzzy, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "standardparameter givet til %d. parameter for '%#D'"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, fuzzy, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "standardparameter givet til %d. parameter for '%#D'"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "parameter pack %qD cannot have a default argument"
msgstr "'%D' kan ikke have standardparametre"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "parameter pack cannot have a default argument"
msgstr "'%D' kan ikke have standardparametre"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ tillader ikke udpegede startværdier"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ tillader ikke udpegede startværdier"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
msgid "expected class-name"
msgstr "uventet operand"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "'%s' er erklæret inline efter dens definition"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr ""
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "'%s' er erklæret inline efter dens definition"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr ""
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "kan ikke finde filen for klassen %s"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "friend-erklæringen er ikke i klassedefinitionen"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of `%D'"
msgid "invalid class name in declaration of %qD"
msgstr "ugyldig omerklæring af '%D'"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
msgid "extra qualification not allowed"
msgstr "ekstra modifikation '%T::' af medlemmet '%D' ignoreret"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, fuzzy, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "eksplicit specialisering følger ikke efter 'template <>'"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "ikke-skabelon benyttet som skabelon"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, fuzzy, gcc-internal-format
#| msgid "previous definition of `%#T'"
msgid "previous definition of %q+#T"
msgstr "tidligere definition af '%#T'"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
msgid "expected class-key"
msgstr "uventet operand"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, fuzzy, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "friend-erklæringen er ikke i klassedefinitionen"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr ""
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
#| msgid "brace-enclosed initializer used to initialize `%T'"
msgid "a brace-enclosed initializer is not allowed here"
msgstr "startværdi i krøllede paranteser benyttet til at klargøre '%T'"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, fuzzy, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "bruger 'typename' uden for en skabelon"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, fuzzy, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "bruger 'typename' uden for en skabelon"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of `%D'"
msgid "invalid declaration of %<%T::%E%>"
msgstr "ugyldig omerklæring af '%D'"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, fuzzy, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "for få skabelonsparameterlister angivet i erklæring af '%D'"
@@ -35540,338 +35599,338 @@ msgstr "for få skabelonsparameterlister angivet i erklæring af '%D'"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, fuzzy, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "for mange skabelonsparameterlister angivet i erklæring af '%D'"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, fuzzy, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "--driver understøttes ikke længere"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, fuzzy, gcc-internal-format
#| msgid "invalid declaration of member template `%#D' in local class"
msgid "invalid declaration of member template in local class"
msgstr "ugyldig erklæring af medlemsskabelon '%#D' i lokal klasse"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "skabelon med C-kædning"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
#| msgid "explicit specialization here"
msgid "invalid explicit specialization"
msgstr "eksplicit specialisering her"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
#| msgid "template declaration of `%#D'"
msgid "template declaration of %<typedef%>"
msgstr "skabelonserklæring af '%#D'"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
#| msgid "explicit specialization here"
msgid "explicit template specialization cannot have a storage class"
msgstr "eksplicit specialisering her"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "'>>' skulle have været '> >' i skabelonsklassenavn"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, fuzzy, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "'>>' skulle have været '> >' i skabelonsklassenavn"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid use of %qD in linkage specification"
msgstr "ugyldig stamklasseangivelse"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
#| msgid "`__thread' before `extern'"
msgid "%<__thread%> before %qD"
msgstr "'__thread' før 'extern'"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
msgid "expected %<new%>"
msgstr "uventet operand"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr ""
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<return%>"
msgstr "uventet operand"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<extern%>"
msgstr "uventet operand"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr ""
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "uventet operand"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<operator%>"
msgstr "uventet operand"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr ""
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
msgid "expected %<template%>"
msgstr "uventet operand"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "uventet operand"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr ""
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
msgid "expected %<asm%>"
msgstr "uventet operand"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
msgid "expected %<try%>"
msgstr "uventet operand"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr ""
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr ""
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr ""
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
msgid "expected %<@try%>"
msgstr "uventet operand"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr ""
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr ""
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr ""
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr ""
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<*%>"
msgstr "';' forventet"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<~%>"
msgstr "';' forventet"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr ""
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr ""
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, fuzzy, gcc-internal-format
#| msgid "`%s' tag used in naming `%#T'"
msgid "%qs tag used in naming %q#T"
msgstr "'%s'-mærke benyttet i navngivning af '%#T'"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "`%s' previously declared here"
msgid "%q#T was previously declared here"
msgstr "'%s' tidligere erklæret her"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, fuzzy, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "'%#D' omerklæret som en anden form for symbol"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, fuzzy, gcc-internal-format
msgid "file ends in default argument"
msgstr "%Hslutningen af filen læst inden i standardparameter"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
#| msgid "Class or interface declaration expected"
msgid "objective-c++ method declaration is expected"
msgstr "Klasse- eller grænsefladeerklæring forventet"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
#| msgid "invalid register name `%s' for register variable"
msgid "invalid type for instance variable"
msgstr "ugyldigt registernavn '%s' for registervariabel"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, fuzzy, gcc-internal-format
#| msgid "Identifier expected"
msgid "identifier expected after %<@protocol%>"
msgstr "Kaldenavn forventet"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored for `%s'"
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "'%s'-egenskaben ignoreret for '%s'"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid type for property"
msgstr "ugyldig typeparameter"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "iteration variable %qD should not be reduction"
msgstr "registervariabel '%s' benyttet i indlejret funktion"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
#| msgid "not enough type information"
msgid "not enough collapsed for loops"
msgstr "ikke tilstrækkelig information om typen"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
#| msgid "junk at end of #pragma GCC java_exceptions"
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "ragelse i slutningen af #pragma GCC java_exceptions"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, fuzzy, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "profilering understøttes ikke endnu"
@@ -35984,18 +36043,18 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "'%D' er ikke en funktionsskabelon"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' for `%+D' does not match any template declaration"
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "skabelons-id '%D' for '%+D' passer ikke til nogen skabelonserklæring"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization `%D' for `%+D'"
msgid "ambiguous template specialization %qD for %q+D"
@@ -36003,56 +36062,56 @@ msgstr "tvetydig skabelonsspecialisering '%D' for '%+D'"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' in declaration of primary template"
msgid "template-id %qD in declaration of primary template"
msgstr "skabelons-id '%D' i erklæring af primær skabelon"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "skabelonsparameterliste benyttet i eksplicit instantiering"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "definition angivet for eksplicit instantiering"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, fuzzy, gcc-internal-format
#| msgid "too many template parameter lists in declaration of `%D'"
msgid "too many template parameter lists in declaration of %qD"
msgstr "for mange skabelonsparameterlister angivet i erklæring af '%D'"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, fuzzy, gcc-internal-format
#| msgid "too few template parameter lists in declaration of `%D'"
msgid "too few template parameter lists in declaration of %qD"
msgstr "for få skabelonsparameterlister angivet i erklæring af '%D'"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, fuzzy, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "eksplicit specialisering følger ikke efter 'template <>'"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "standardparameter angivet i eksplicit specialisering"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a member template function"
msgid "%qD is not a template function"
msgstr "'%D' er ikke en medlemsskabelonfunktion"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
#| msgid "`%D' not declared"
msgid "%qD is not declared in %qD"
@@ -36066,90 +36125,90 @@ msgstr "'%D' ikke erklæret"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "specialisering af underforstået erklæret speciel medlemsfunktion"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, fuzzy, gcc-internal-format
#| msgid "no member function `%D' declared in `%T'"
msgid "no member function %qD declared in %qT"
msgstr "ingen medlemsfunktion '%D' erklæret i '%T'"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, fuzzy, gcc-internal-format
#| msgid " `%D'"
msgid " %qD"
msgstr " '%D'"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
msgid " <anonymous>"
msgstr "<anonym %s>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %q+#D"
msgstr "omerklæring af '%#D'"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, fuzzy, gcc-internal-format
#| msgid " shadows template parm `%#D'"
msgid " shadows template parm %q+#D"
msgstr " skygger for skabelonsparameter '%#D'"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "skabelonsparametre der ikke bruges i partiel specialisering:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, fuzzy, gcc-internal-format
#| msgid "partial specialization `%T' does not specialize any template arguments"
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "den partielle specialisering '%T' specialiserer ikke nogen skabelonsparametre"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
# flertalsform unødvendig
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, fuzzy, gcc-internal-format
#| msgid "template argument `%E' involves template parameter(s)"
msgid "template argument %qE involves template parameter(s)"
msgstr "skabelonsparameter '%E' involverer skabelonsparameter"
# flertalsform unødvendig
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
#| msgid "type `%T' of template argument `%E' depends on template parameter(s)"
msgid "type %qT of template argument %qE depends on a template parameter"
@@ -36157,58 +36216,58 @@ msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "typen '%T' af skabelonsparameteren '%E' afhænger af skabelonsparameter"
msgstr[1] "typen '%T' af skabelonsparameteren '%E' afhænger af skabelonsparameter"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
#| msgid "specialization of `%T' after instantiation"
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "specialisering af '%T' efter instantiering"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, fuzzy, gcc-internal-format
#| msgid "no default argument for `%D'"
msgid "no default argument for %qD"
msgstr "ingen standardparameter til '%D'"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "standardparametre er ikke tilladt i erklæring af venneskabelonsspecialisering '%D'"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
msgid "default template arguments may not be used in function template friend declarations"
msgstr "standardparametre er ikke tilladt i erklæring af venneskabelonsspecialisering '%D'"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, fuzzy, gcc-internal-format
#| msgid "template parameters not used in partial specialization:"
msgid "default template arguments may not be used in partial specializations"
msgstr "skabelonsparametre der ikke bruges i partiel specialisering:"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type `%T' has type `%T'"
msgid "default argument for template parameter for class enclosing %qD"
msgstr "standardparameter for parameter af typen '%T' har typen '%T'"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "skabelonsklasse uden et navn"
@@ -36216,7 +36275,7 @@ msgstr "skabelonsklasse uden et navn"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, fuzzy, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "datamedlem '%D' kan ikke være en medlemsskabelon"
@@ -36226,66 +36285,66 @@ msgstr "datamedlem '%D' kan ikke være en medlemsskabelon"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, fuzzy, gcc-internal-format
#| msgid "invalid member template declaration `%D'"
msgid "invalid template declaration of %qD"
msgstr "ugyldig medlemsskabelonerklæring '%D'"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, fuzzy, gcc-internal-format
#| msgid "template definition of non-template `%#D'"
msgid "template definition of non-template %q#D"
msgstr "skabelonsdefinition af ikke-skabelon '%#D'"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, fuzzy, gcc-internal-format
#| msgid "expected %d levels of template parms for `%#D', got %d"
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "forvented %d niveauer af skabelonsparametre for '%#D', modtog %d"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for `%#D'"
msgid "got %d template parameters for %q#D"
msgstr "modtog %d skabelonsparametre for '%#D'"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for `%#T'"
msgid "got %d template parameters for %q#T"
msgstr "modtog %d skabelonsparametre for '%#T'"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " men %d påkrævet"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' for `%+D' does not match any template declaration"
msgid "template arguments to %qD do not match original template %qD"
msgstr "skabelons-id '%D' for '%+D' passer ikke til nogen skabelonserklæring"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, fuzzy, gcc-internal-format
#| msgid "enclosing class templates are not explicitly specialized"
msgid "use template<> for an explicit specialization"
msgstr "omgivende klasseskabeloner er ikke eksplicit specialiserede"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template type"
msgid "%qT is not a template type"
msgstr "'%T' er ikke en skabelonstype"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, fuzzy, gcc-internal-format
#| msgid "too few template parameter lists in declaration of `%D'"
msgid "template specifiers not specified in declaration of %qD"
msgstr "for få skabelonsparameterlister angivet i erklæring af '%D'"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%D' used without template parameters"
msgid "redeclared with %d template parameter"
@@ -36293,7 +36352,7 @@ msgid_plural "redeclared with %d template parameters"
msgstr[0] "'%D' benyttet uden skabelonsparametre"
msgstr[1] "'%D' benyttet uden skabelonsparametre"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%#D' here"
msgid "previous declaration %q+D used %d template parameter"
@@ -36301,13 +36360,13 @@ msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "tidligere erklæring af '%#D' her"
msgstr[1] "tidligere erklæring af '%#D' her"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, fuzzy, gcc-internal-format
#| msgid "template parameter `%#D'"
msgid "template parameter %q+#D"
msgstr "skabelonsparameter '%#D'"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, fuzzy, gcc-internal-format
#| msgid "redeclared here as `%#D'"
msgid "redeclared here as %q#D"
@@ -36317,290 +36376,290 @@ msgstr "omerklæret her som '%#D'"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for `%#D'"
msgid "redefinition of default argument for %q#D"
msgstr "omdefinering af standardparameter for '%#D'"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
msgid "original definition appeared here"
msgstr " oprindelig definition er her"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid "%qE is not a valid template argument for type %qT"
msgstr "'%E' er ikke en gyldig skabelonsparameter"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
#| msgid "it must be a pointer-to-member of the form `&X::Y'"
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "den skal være en henvisning til medlem på formen '&X::Y'"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for `%#D'"
msgid " couldn't deduce template parameter %qD"
msgstr "modtog %d skabelonsparametre for '%#D'"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types `%#T' and `%#T'"
msgid " mismatched types %qT and %qT"
msgstr "sammenligning mellem typerne '%#T' og '%#T'"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
# flertalsform unødvendig
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "template argument `%E' involves template parameter(s)"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "skabelonsparameter '%E' involverer skabelonsparameter"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr ""
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "'%E' er ikke en gyldig skabelonsparameter"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid " member function type %qT is not a valid template argument"
msgstr "'%E' er ikke en gyldig skabelonsparameter"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type `%T' to type `%T'"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "kan ikke konvertere typen '%T' til typen '%T'"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
#| msgid "`%T' is an ambiguous base of `%T'"
msgid " %qT is an ambiguous base class of %qT"
msgstr "'%T' er en tvetydig stamklasse til '%T'"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type `%T' is not derived from type `%T'"
msgid " %qT is not derived from %qT"
msgstr "typen '%T' er ikke nedarvet fra typen '%T'"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr ""
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "template argument %d is invalid"
msgid " template argument %qE does not match %qD"
msgstr "skabelonsparameter %d er ugyldig"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid " could not resolve address from overloaded function %qE"
msgstr "%s kan ikke finde adressen af flertydiggjort funktion"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "skabelonsparameter er påkrævet for '%T'"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr ""
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kædning"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr "den skal være adressen af en funktion med ekstern kædning"
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "'%E' er ikke en gyldig skabelonsparameter"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "'%E' er ikke en gyldig skabelonsparameter"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, fuzzy, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "'%D' blev ikke erklæret i dette virkefelt"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr ""
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, fuzzy, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr "ugyldig standardparameter i skabelon"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `restrict'"
msgid "invalid use of destructor %qE as a type"
msgstr "ugyldig brug af 'restrict'"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, fuzzy, gcc-internal-format
#| msgid "to refer to a type member of a template parameter, use `typename %E'"
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "benyt 'typename %E' for at referere til et typemedlem af en skabelonsparameter"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, fuzzy, gcc-internal-format
#| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "type/værdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, fuzzy, gcc-internal-format
#| msgid " expected a constant of type `%T', got `%T'"
msgid " expected a constant of type %qT, got %qT"
msgstr " forventede en konstant af typen '%T', modtog '%T'"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, fuzzy, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " forventede en klasseskabelon, modtog '%T'"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, fuzzy, gcc-internal-format
#| msgid " expected a type, got `%E'"
msgid " expected a type, got %qE"
msgstr " forventede en type, modtog '%E'"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, fuzzy, gcc-internal-format
#| msgid " expected a type, got `%T'"
msgid " expected a type, got %qT"
msgstr " forventede en type, modtog '%T'"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, fuzzy, gcc-internal-format
#| msgid " expected a class template, got `%T'"
msgid " expected a class template, got %qT"
msgstr " forventede en klasseskabelon, modtog '%T'"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type `%D', got `%D'"
msgid " expected a template of type %qD, got %qT"
@@ -36608,81 +36667,81 @@ msgstr " forventede en skabelon af typen '%D', modtog '%D'"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in nontype parameter pack"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, fuzzy, gcc-internal-format
#| msgid "could not convert template argument `%E' to `%T'"
msgid "could not convert template argument %qE to %qT"
msgstr "kunne ikke konvertere skabelonsparameteren '%E' til '%T'"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "forkert antal skabelonsparametre (%d, skulle være %d)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "forkert antal skabelonsparametre (%d, skulle være %d)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, fuzzy, gcc-internal-format
#| msgid "provided for `%D'"
msgid "provided for %q+D"
msgstr "angivet for '%D'"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "skabelonsparameter %d er ugyldig"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function template"
msgid "%q#D is not a function template"
msgstr "'%D' er ikke en funktionsskabelon"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, fuzzy, gcc-internal-format
#| msgid "non-template type `%T' used as a template"
msgid "non-template type %qT used as a template"
msgstr "ikke-skabelonstype '%T' benyttet som skabelon"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, fuzzy, gcc-internal-format
#| msgid "for template declaration `%D'"
msgid "for template declaration %q+D"
msgstr "til skabelonserklæring '%D'"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "skabelonsinstantieringsdybden overskrider maksimum på %d (benyt -ftemplate-depth-NN for at forøge maksimum) ved instantiering af '%D'"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "skabelonsinstantieringsdybden overskrider maksimum på %d (benyt -ftemplate-depth-NN for at forøge maksimum) ved instantiering af '%D'"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, fuzzy, gcc-internal-format
#| msgid "instantiation of `%D' as type `%T'"
msgid "instantiation of %q+D as type %qT"
@@ -36701,291 +36760,291 @@ msgstr "instantiering af '%D' som typen '%T'"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
#| msgid "sizeof applied to a function type"
msgid "variable %qD has function type"
msgstr "sizeof benyttet på en funktionstype"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, fuzzy, gcc-internal-format
#| msgid "invalid parameter type `%T'"
msgid "invalid parameter type %qT"
msgstr "ugyldig parametertype '%T'"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, fuzzy, gcc-internal-format
#| msgid "in declaration `%D'"
msgid "in declaration %q+D"
msgstr "i erklæringen '%D'"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, fuzzy, gcc-internal-format
#| msgid "function returns an aggregate"
msgid "function returning an array"
msgstr "funktion returnerer en værdi af en sammensat type"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, fuzzy, gcc-internal-format
#| msgid "`%s' declared as function returning a function"
msgid "function returning a function"
msgstr "'%s' er erklæret som en funktion der returnerer en funktion"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member function of non-class type `%T'"
msgid "creating pointer to member function of non-class type %qT"
msgstr "opretter henvisning til medlemsfunktion af typen '%T' der ikke er en klasse"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "danner reference til void"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type `%T'"
msgid "forming pointer to reference type %qT"
msgstr "danner %s til referencetypen '%T'"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type `%T'"
msgid "forming reference to reference type %qT"
msgstr "danner %s til referencetypen '%T'"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type `%T'"
msgid "creating pointer to member of non-class type %qT"
msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type `%T'"
msgid "creating pointer to member reference type %qT"
msgstr "opretter henvisning til medlemsreference af typen '%T'"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type `%T'"
msgid "creating pointer to member of type void"
msgstr "opretter henvisning til medlemsreference af typen '%T'"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, fuzzy, gcc-internal-format
#| msgid "creating array of `%T'"
msgid "creating array of %qT"
msgstr "opretter tabel af '%T'"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, fuzzy, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "unavngiven klargøring af '%T' som ikke har nogen stamklasser"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class, struct, or union type"
msgid "%qT is not a class, struct, or union type"
msgstr "'%T' er ikke en class-, struct- eller union-type"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, fuzzy, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "unavngiven klargøring af '%T' som ikke har nogen stamklasser"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, fuzzy, gcc-internal-format
#| msgid "use of `%s' in template"
msgid "use of %qs in template"
msgstr "brug af '%s' i skabelon"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
#| msgid "qualified type `%T' does not match destructor name `~%T'"
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "den modificerede type '%T' passer ikke til destruktionsfunktionsnavnet '~%T'"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, fuzzy, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "'%D' benyttes som en type, men er ikke defineret som en type"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, fuzzy, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr " (benyt 'typename %T::%D' hvis det er hvad du mener)"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, fuzzy, gcc-internal-format
#| msgid "missing static field `%s'"
msgid "using invalid field %qD"
msgstr "manglende statisk felt '%s'"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid use of pack expansion expression"
msgstr "ugyldig brug af void-udtryk"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr ""
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "`%s' undeclared here (not in a function)"
msgid "%q+D declared here, later in the translation unit"
msgstr "'%s' ikke erklæret her (ikke i en funktion)"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or namespace"
msgid "%qT is not a class or namespace"
msgstr "'%T' er ikke en klasse eller et navnerum"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or namespace"
msgid "%qD is not a class or namespace"
msgstr "'%T' er ikke en klasse eller et navnerum"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, fuzzy, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "skabelonsparameter '%T' benytter anonym type"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "template argument for %qD uses local type %qT"
msgstr "standardparameter for '%#D' har typen '%T'"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, fuzzy, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "skabelonsparameter '%T' er en variabelt ændret type"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, fuzzy, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "størrelsen af medlemmet '%D' er ikke konstant"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, fuzzy, gcc-internal-format
#| msgid " trying to instantiate `%D'"
msgid " trying to instantiate %qD"
msgstr " ved forsøg på at instantiere '%D'"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, fuzzy, gcc-internal-format
#| msgid "ambiguous class template instantiation for `%#T'"
msgid "ambiguous class template instantiation for %q#T"
msgstr "tvetydig klasseskabelonsinstantiering for '%#T'"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template `%#D'"
msgid "explicit instantiation of non-template %q#D"
msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "'%#D' er ikke et statisk medlem af '%#T'"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, fuzzy, gcc-internal-format
#| msgid "no matching template for `%D' found"
msgid "no matching template for %qD found"
msgstr "ingen passende skabelon for '%D' fundet"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type `%T'"
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "eksplicit instantiering af '%T' der ikke er en skabelonstype"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#D'"
msgid "explicit instantiation of %q#D"
msgstr "eksplicit instantiering af '%#D'"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, fuzzy, gcc-internal-format
#| msgid "duplicate explicit instantiation of `%#D'"
msgid "duplicate explicit instantiation of %q#D"
msgstr "'%#D' er blevet eksplicit instantieret mere end én gang"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ forbyder brugen af 'extern' ved eksplicitte instantieringer"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, fuzzy, gcc-internal-format
#| msgid "storage class `%D' applied to template instantiation"
msgid "storage class %qD applied to template instantiation"
msgstr "lagringsklasse '%D' anvendt på skabelonsinstantiering"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template `%#D'"
msgid "explicit instantiation of non-class template %qD"
msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type `%T'"
msgid "explicit instantiation of non-template type %qT"
msgstr "eksplicit instantiering af '%T' der ikke er en skabelonstype"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#T' before definition of template"
msgid "explicit instantiation of %q#T before definition of template"
msgstr "eksplicit instantiering af '%T' før definering af skabelonen"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ forbyder brugen af '%s ved eksplicitte instantieringer"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, fuzzy, gcc-internal-format
#| msgid "duplicate explicit instantiation of `%#T'"
msgid "duplicate explicit instantiation of %q#T"
@@ -36998,37 +37057,37 @@ msgstr "'%#T' er blevet eksplicit instantieret mere end én gang"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%D' but no definition available"
msgid "explicit instantiation of %qD but no definition available"
msgstr "eksplicit instantiering af '%D', men ingen definition tilgængelig"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "skabelonsinstantieringsdybden overskrider maksimum på %d (benyt -ftemplate-depth-NN for at forøge maksimum) ved instantiering af '%D'"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "invalid catch parameter"
msgid "invalid template non-type parameter"
msgstr "ugyldig catch-parameter"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
#| msgid "`%#T' is not a valid type for a template constant parameter"
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "'%#T' er ikke en gyldig type for en skabelonsparameterkonstant "
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, fuzzy, gcc-internal-format
#| msgid "brace-enclosed initializer used to initialize `%T'"
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr "startværdi i krøllede paranteser benyttet til at klargøre '%T'"
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -37036,12 +37095,12 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -37258,7 +37317,7 @@ msgstr "ugyldig brug af 'this' ved øverste niveau"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "ugyldige modifikationer for ikke-medlemsfunktionstype"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, fuzzy, gcc-internal-format
#| msgid "qualified type `%T' does not match destructor name `~%T'"
msgid "qualified type %qT does not match destructor name ~%qT"
@@ -37303,486 +37362,486 @@ msgstr "definition af '%#T' inden i skabelonsparameterliste"
msgid "invalid definition of qualified type %qT"
msgstr "ugyldig definition af modificeret type '%T'"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "ugyldig stamklasseangivelse"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
#| msgid "`%D' not declared"
msgid "%qD is not captured"
msgstr "'%D' ikke erklæret"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, fuzzy, gcc-internal-format
#| msgid "use of %s from containing function"
msgid "use of %<auto%> variable from containing function"
msgstr "brug af %s fra indeholdende funktion"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, fuzzy, gcc-internal-format
#| msgid "use of %s from containing function"
msgid "use of parameter from containing function"
msgstr "brug af %s fra indeholdende funktion"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid " %q+#D declared here"
msgstr " '%#D' erklæret her"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr ""
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, fuzzy, gcc-internal-format
#| msgid "use of namespace `%D' as expression"
msgid "use of namespace %qD as expression"
msgstr "brug af navnerummet '%D' som udtryk"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, fuzzy, gcc-internal-format
#| msgid "use of class template `%T' as expression"
msgid "use of class template %qT as expression"
msgstr "brug af klasseskabelonen '%T' som udtryk"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, fuzzy, gcc-internal-format
#| msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "forespørgsel efter medlemmet '%D' er tvetydigt i det multiple nedarvningsnet"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, fuzzy, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "størrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, fuzzy, gcc-internal-format
#| msgid "type of `%E' is unknown"
msgid "type of %qE is unknown"
msgstr "typen af '%E' er ukendt"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template type"
msgid "%qT is not an enumeration type"
msgstr "'%T' er ikke en skabelonstype"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "lagringsklasseanvisninger er ugyldige i parametererklæringer"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "ugyldig brug af ikke-statisk felt '%D'"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
#| msgid "`%s' is not a valid class name"
msgid "%qD is not a variable in clause %qs"
msgstr "'%s' er et ugyldigt klassenavn"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "instansvariablen '%s' er erklæret privat"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "instansvariablen '%s' er erklæret privat"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
#| msgid "Invalid reference type"
msgid "%qE has reference type for %qs"
msgstr "Ugyldig referencetype"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr ""
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "erklæring uden static af '%s' følger static-erklæring"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
#| msgid "use of class template `%T' as expression"
msgid "argument to decltype must be an expression"
msgstr "brug af klasseskabelonen '%T' som udtryk"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s kan ikke finde adressen af flertydiggjort funktion"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for member function `%#D'"
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "ugyldig returtype for medlemsfunktionen '%#D'"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "ugyldig returtype for funktionen '%#D'"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr ""
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
#| msgid "initializer invalid for static member with constructor"
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "tildeling af startværdi er ugyldig for statisk medlem med konstruktionsfunktion"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr ""
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "friend-erklæringen er ikke i klassedefinitionen"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function `%D'"
msgid "call to non-constexpr function %qD"
msgstr "kald af ikke-funktion '%D'"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "størrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
#| msgid "`%D' implicitly declared before its definition"
msgid "%qD used before its definition"
msgstr "'%s' er underforstået erklæret efter dens definition"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
#| msgid "protocol `%s' has circular dependency"
msgid "call has circular dependency"
msgstr "protokollen '%s' har cirkulær afhængighed"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "skabelonsinstantieringsdybden overskrider maksimum på %d (benyt -ftemplate-depth-NN for at forøge maksimum) ved instantiering af '%D'"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
#| msgid "Missing or invalid constant expression"
msgid "%q+E is not a constant expression"
msgstr "Manglende eller ugyldigt konstant udtryk"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript out of bound"
msgstr "tabelindeks er ikke et heltal"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
#| msgid "Missing or invalid constant expression"
msgid "%qE is not a constant expression"
msgstr "Manglende eller ugyldigt konstant udtryk"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "overløb i konstant udtryk"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, fuzzy, gcc-internal-format
#| msgid "Missing or invalid constant expression"
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "Manglende eller ugyldigt konstant udtryk"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' is not an integral constant-expression"
msgid "the value of %qD is not usable in a constant expression"
msgstr "størrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "excess elements in union initializer"
msgid "%qD used in its own initializer"
msgstr "for mange elementer i union-startværdi"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "%q#D is not const"
msgstr "'%s' er ikke en funktion,"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
#| msgid "`%+#D' is private"
msgid "%q#D is volatile"
msgstr "'%+#D' er privat"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "størrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
#| msgid "`%D' was not declared in this scope"
msgid "%qD was not declared %<constexpr%>"
msgstr "'%D' blev ikke erklæret i dette virkefelt"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "størrelse i tabel-new skal være en heltalstype"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "enum- og ikke enum-type i betinget udtryk"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "størrelsen af medlemmet '%D' er ikke konstant"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "unexpected expression %qE of kind %s"
msgstr "uventet adresseudtryk"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "størrelsen af tabel er ikke af et heltalligt konstantudtryk"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "størrelsen af medlemmet '%D' er ikke konstant"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "division by zero is not a constant-expression"
msgstr "størrelsen af tabel er ikke af et heltalligt konstantudtryk"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "tabelindekset i startværdien er ikke en konstant"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unexpected type for `id' (%s)"
msgid "unexpected AST of kind %s"
msgstr "uventet type for 'id' (%s)"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
#| msgid "cannot declare %s to references"
msgid "cannot capture %qE by reference"
msgstr "kan ikke erklære %s til referencer"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr ""
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, fuzzy, gcc-internal-format
#| msgid "`%V' qualifiers cannot be applied to `%T'"
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "modifikationerne '%V' kan ikke anvendes på '%T'"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute can only be applied to Java class definitions"
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "egenskaben '%s' kan kun anvendes med Java-klassedefinitioner"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute can only be applied to class definitions"
msgid "%qE attribute can only be applied to class definitions"
msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, fuzzy, gcc-internal-format
#| msgid "`%s' is obsolete; g++ vtables are now COM-compatible by default"
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "'%s' er forældet; virtuelle tabeller i g++ er nu COM-kompatible som standard"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "den udbedte init_priority er ikke en heltalskonstant"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, fuzzy, gcc-internal-format
#| msgid "can only use `%s' attribute on file-scope definitions of objects of class type"
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "kan kun bruge egenskaben '%s' på filvirkefeltsdefinitioner af objekter af klassetype"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "den udbedte init_priority er uden for det gyldige interval"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "den udbedte init_priority er reserveret til intern brug"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute is not supported on this platform"
msgid "%qE attribute is not supported on this platform"
msgstr "egenskaben '%s' er ikke understøttet på denne platform"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_*-kontrol: mislykkedes i %s, ved %s:%d"
@@ -37879,219 +37938,225 @@ msgstr "ISO C++ forbyder anvendelse af 'sizeof' på et udtryk af en funktionstype
msgid "invalid use of non-static member function"
msgstr "ugyldig brug af medlemmet '%D' i statisk medlemsfunktion"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "tager adressen på midlertidig variabel"
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
#| msgid "deprecated conversion from string constant to `%T'"
msgid "deprecated conversion from string constant to %qT"
msgstr "forældet konvertering fra strengkonstant til '%T'"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
#| msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "forespørgsel efter medlemmet '%D' i '%E' som er af en ikke-sammensat type '%T'"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, fuzzy, gcc-internal-format
#| msgid "request for member `%D' in `%E', which is of non-class type `%T'"
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "forespørgsel efter medlemmet '%D' i '%E' som er af en ikke-klassetype '%T'"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, fuzzy, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "ugyldig brug af ikke-statisk felt '%D'"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, fuzzy, gcc-internal-format
#| msgid "invalid access to non-static data member `%D' of NULL object"
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ugyldig tilgang til ikke-statisk datamedlem '%D' af NULL-objekt"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, fuzzy, gcc-internal-format
#| msgid "(perhaps the `offsetof' macro was used incorrectly)"
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(måske blev 'offsetof'-makroen benyttet forkert)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
#| msgid "invalid access to non-static data member `%D' of NULL object"
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ugyldig tilgang til ikke-statisk datamedlem '%D' af NULL-objekt"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
#| msgid "qualified type `%T' does not match destructor name `~%T'"
msgid "object type %qT does not match destructor name ~%qT"
msgstr "den modificerede type '%T' passer ikke til destruktionsfunktionsnavnet '~%T'"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, fuzzy, gcc-internal-format
#| msgid "`%D::%D' is not a member of `%T'"
msgid "%<%D::%D%> is not a member of %qT"
msgstr "'%D::%D' er ikke et medlem af '%T'"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, fuzzy, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "'%D' er ikke et medlem af '%T'"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, fuzzy, gcc-internal-format
#| msgid "'%D' has no member named '%E'"
msgid "%qD has no member named %qE"
msgstr "'%D' har intet medlem ved navn '%E'"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a member template function"
msgid "%qD is not a member template function"
msgstr "'%D' er ikke en medlemsskabelonfunktion"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a pointer-to-object type"
msgid "%qT is not a pointer-to-object type"
msgstr "'%T' er ikke af en henvisning til objekt-type"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%s' on pointer to member"
msgid "invalid use of array indexing on pointer to member"
msgstr "ugyldig brug af '%s' på henvisning til medlem"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%s' on pointer to member"
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "ugyldig brug af '%s' på henvisning til medlem"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%s' on pointer to member"
msgid "invalid use of implicit conversion on pointer to member"
msgstr "ugyldig brug af '%s' på henvisning til medlem"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "indeks mangler i tabelopslag"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ forbyder indeksering af en ikke-venstreværdis tabel"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, fuzzy, gcc-internal-format
#| msgid "subscripting array declared `register'"
msgid "subscripting array declared %<register%>"
msgstr "indeksering af tabel som er erklæret 'register'"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "værdien der er påført et indeks, er hverken en tabel eller en henvisningsvariabel"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, fuzzy, gcc-internal-format
#| msgid "object missing in use of `%E'"
msgid "object missing in use of %qE"
msgstr "objekt mangler i brug af '%E'"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids calling `::main' from within program"
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ forbyder kald af '::main' inde fra programmet"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, fuzzy, gcc-internal-format
#| msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "brug .* eller ->* i kald af henvisning til medlemsfunktion i '%E (...)'"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, fuzzy, gcc-internal-format
#| msgid "`%E' cannot be used as a function"
msgid "%qE cannot be used as a function"
msgstr "'%E' kan ikke bruges som en funktion"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s `%+#D'"
msgid "too many arguments to constructor %q#D"
msgstr "for mange parametre til %s '%+#D'"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s `%+#D'"
msgid "too few arguments to constructor %q#D"
msgstr "for få parametre til %s '%+#D'"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to member function %q#D"
msgstr "for mange parametre til funktionen"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to member function %q#D"
msgstr "for få parametre til funktionen"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to function %q#D"
msgstr "for mange parametre til funktionen"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to function %q#D"
msgstr "for få parametre til funktionen"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s `%+#D'"
msgid "too many arguments to method %q#D"
msgstr "for mange parametre til %s '%+#D'"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s `%+#D'"
msgid "too few arguments to method %q#D"
msgstr "for få parametre til %s '%+#D'"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "for mange parametre til funktionen"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "for få parametre til funktionen"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, fuzzy, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "parameteren '%s' er af en ufuldstændig type"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, fuzzy, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "parameteren er af en ufuldstændig type"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, fuzzy, gcc-internal-format
#| msgid "assuming cast to type `%T' from overloaded function"
msgid "assuming cast to type %qT from overloaded function"
@@ -38099,284 +38164,284 @@ msgstr "antager typeomtvingning til typen '%T' fra flertydig funktion"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL benyttet i udregning"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "left rotate count is negative"
msgstr "%s-roteringsantal er negativt"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "right rotate count is negative"
msgstr "%s-roteringsantal er negativt"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "left rotate count >= width of type"
msgstr "%s-roteringsantal >= bredden af typen"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "right rotate count >= width of type"
msgstr "%s-roteringsantal >= bredden af typen"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behaviour"
msgstr "%Jsvag erklæring af '%D' efter første brug resulterer i ikke-defineret opførsel"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, fuzzy, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "adressen af '%D' vil altid være 'true'"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ forbyder sammenligning mellem henvisningsvariabel og heltal"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "uordnet sammenligning af ikke-kommatalsparameter"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, fuzzy, gcc-internal-format
#| msgid "invalid operands of types `%T' and `%T' to binary `%O'"
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "ugyldige operander af typerne '%T' og '%T' til binær '%O'"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ forbyder brug af henvisning af typen 'void *' i fratrækning"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ forbyder brug af henvisning til funktion i fratrækning"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ forbyder brug af henvisning til medlemsfunktion i fratrækning"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "ugyldig brug af en henvisning til en ufuldstændig type i henvisningsberegning"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
#| msgid "taking address of destructor"
msgid "taking address of constructor %qE"
msgstr "tager adressen på en destruktionsfunktion"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
#| msgid "taking address of destructor"
msgid "taking address of destructor %qE"
msgstr "tager adressen på en destruktionsfunktion"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, fuzzy, gcc-internal-format
#| msgid "invalid use of '%E' to form a pointer-to-member-function. Use a qualified-id."
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "ugyldig brug af '%E' til at danne en henvisning til medlemsfunktion; benyt et kaldenavn med klassepræfiks"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, fuzzy, gcc-internal-format
#| msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "paranteser omkring '%E' kan ikke bruges til at danne en henvisning til medlemsfunktion"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ forbyder at tage adressen på en ikke-modificeret, ikke-statisk medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say `&%T::%D'"
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ forbyder at tage adressen på en bundet medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "tager adressen på midlertidig variabel"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of xvalue (rvalue reference)"
msgstr "tager adressen på midlertidig variabel"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids taking address of function `::main'"
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ forbyder at tage adressen på funktionen '::main'"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ forbyder at tage adressen på en typeomtvingning til et udtryk der ikke er en venstreværdi"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, fuzzy, gcc-internal-format
#| msgid "cannot create pointer to reference member `%D'"
msgid "cannot create pointer to reference member %qD"
msgstr "kan ikke oprette henvisning til reference medlemmet '%D'"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ forbyder %s af en enum"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ forbyder %s af en enum"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type `%T'"
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "kan ikke %s en henvisning til en ufuldstændig type '%T'"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type `%T'"
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "kan ikke %s en henvisning til en ufuldstændig type '%T'"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type `%T'"
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ forbyder %s af en henvisning af typen '%T'"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type `%T'"
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ forbyder %s af en henvisning af typen '%T'"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "ugyldigt udtryk som operand"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, fuzzy, gcc-internal-format
#| msgid "cannot take the address of `this', which is an rvalue expression"
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "kan ikke tage adressen af 'this' som er et højreværdiudtryk"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, fuzzy, gcc-internal-format
#| msgid "address of register variable `%s' requested"
msgid "address of explicit register variable %qD requested"
msgstr "forespørgsel efter adressen af registervariablen '%s'"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, fuzzy, gcc-internal-format
#| msgid "address requested for `%D', which is declared `register'"
msgid "address requested for %qD, which is declared %<register%>"
msgstr "adresse forespurgt for '%D' som er erklæret 'register'"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "klargøringsliste behandlet som et sammensat udtryk"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "klargøringsliste behandlet som et sammensat udtryk"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "klargøringsliste behandlet som et sammensat udtryk"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "klargøringsliste behandlet som et sammensat udtryk"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "static_cast fra typen '%T' til typen '%T' fjerner konstanthed"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "static_cast fra typen '%T' til typen '%T' fjerner konstanthed"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "reinterpret_cast fra '%T' til '%T' fjerner const (eller volatile)"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type `%T' to type `%T'"
msgid "invalid static_cast from type %qT to type %qT"
msgstr "ugyldig static_cast fra typen '%T' til typen '%T'"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, fuzzy, gcc-internal-format
#| msgid "converting from `%T' to `%T'"
msgid "converting from %qT to %qT"
msgstr "konvertering fra '%T' til '%T'"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, fuzzy, gcc-internal-format
#| msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "ugyldig reinterpret_cast af et højreværdiudtryk fra typen '%T' til typen '%T'"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, fuzzy, gcc-internal-format
#| msgid "reinterpret_cast from `%T' to `%T' loses precision"
msgid "cast from %qT to %qT loses precision"
msgstr "reinterpret_cast fra '%T' til '%T' mister præcision"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, fuzzy, gcc-internal-format
#| msgid "cast from `%T' to `%T' increases required alignment of target type"
msgid "cast from %qT to %qT increases required alignment of target type"
@@ -38386,250 +38451,250 @@ msgstr "typeomtvingning fra '%T' til '%T' forøger den påkrævede justering af mål
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ forbyder sammenligninger mellem henvisning til funktion og henvisning til objekt"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, fuzzy, gcc-internal-format
#| msgid "invalid const_cast from type `%T' to type `%T'"
msgid "invalid cast from type %qT to type %qT"
msgstr "ugyldig const_cast fra typen '%T' til typen '%T'"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, fuzzy, gcc-internal-format
#| msgid "invalid use of const_cast with type `%T', which is not a pointer, reference, nor a pointer-to-data-member type"
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "ugyldig brug af const_cast med typen '%T' som ikke er en henvisnings-, reference- eller en henvisning til datamedlem-type"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, fuzzy, gcc-internal-format
#| msgid "invalid use of const_cast with type `%T', which is a pointer or reference to a function type"
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "ugyldig brug af const_cast med typen '%T' som er en henvisning eller reference til funktion"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, fuzzy, gcc-internal-format
#| msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "ugyldig const_cast af en højreværdi fra typen '%T' til typen '%T'"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, fuzzy, gcc-internal-format
#| msgid "invalid const_cast from type `%T' to type `%T'"
msgid "invalid const_cast from type %qT to type %qT"
msgstr "ugyldig const_cast fra typen '%T' til typen '%T'"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids casting to an array type `%T'"
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ forbyder omtvingelse af typen til en tabeltype '%T'"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, fuzzy, gcc-internal-format
#| msgid "invalid cast to function type `%T'"
msgid "invalid cast to function type %qT"
msgstr "ugyldig omtvingelse til funktionstypen '%T'"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, fuzzy, gcc-internal-format
#| msgid " in evaluation of `%Q(%#T, %#T)'"
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " i evaluering af '%Q(%#T, %#T)'"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "tabelindekset i startværdien er ikke en konstant"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of `%T' to `%T'"
msgid "incompatible types in assignment of %qT to %qT"
msgstr "uforenelige typer i tildeling af '%T' til '%T'"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
#| msgid "bad array initializer"
msgid "array used as initializer"
msgstr "ugyldig tildeling af startværdi til tabel"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "invalid array assignment"
msgstr "ugyldig venstreværdi i tildeling"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " i henvisning til medlemsfunktion-omdannelse"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, fuzzy, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "henvisning til medlem-omdannelse via den virtuelle stamklasse '%T' af '%T'"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " i henvisning til medlem-omdannelse"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to type `%T' from type `%T'"
msgid "invalid conversion to type %qT from type %qT"
msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "kan ikke konvertere '%T' til '%T' for parameter '%P' til '%D'"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgid "cannot convert %qT to %qT in default argument"
msgstr "kan ikke konvertere '%T' til '%T' for parameter '%P' til '%D'"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in argument passing"
msgstr "kan ikke konvertere '%T' til '%T' i %s"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT"
msgstr "kan ikke konvertere '%T' til '%T' i %s"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in initialization"
msgstr "kan ikke konvertere '%T' til '%T' i %s"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in return"
msgstr "kan ikke konvertere '%T' til '%T' i %s"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in assignment"
msgstr "kan ikke konvertere '%T' til '%T' i %s"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "Advar om funktioner som kan være kandidater til formateringsegenskaber"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "parameter might be a candidate for a format attribute"
msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "target of conversion might be a candidate for a format attribute"
msgstr "Advar om funktioner som kan være kandidater til formateringsegenskaber"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "target of initialization might be a candidate for a format attribute"
msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
#| msgid "in passing argument %P of `%+D'"
msgid "in passing argument %P of %q+D"
msgstr "i overbringelse af parameter %P af '%+D'"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "returnerer reference til midlertidig variabel"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "reference til ikke-venstreværdi returneret"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, fuzzy, gcc-internal-format
#| msgid "reference to local variable `%D' returned"
msgid "reference to local variable %q+D returned"
msgstr "reference til den lokale variabel '%D' returneret"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, fuzzy, gcc-internal-format
#| msgid "address of local variable `%D' returned"
msgid "address of local variable %q+D returned"
msgstr "adresse af den lokale variabel '%D' returneret"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "returnerer en værdi fra en destruktionsfunktion"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "kan ikke returnere fra en håndtering af en funktions-try-blok i en konstruktionsfunktion"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "returnerer en værdi fra en konstruktionsfunktion"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, fuzzy, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "new kan ikke bruges på en referencetype"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, fuzzy, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "'return' uden nogen værdi i en funktion der ikke returnerer void"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, fuzzy, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "'return' med en værdi i en funktion der returnerer void"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, fuzzy, gcc-internal-format
#| msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "'operator new' må ikke returnere NULL medmindre den er erklæret 'throw()' (eller -fcheck-new er benyttet)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -39222,7 +39287,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -41445,27 +41510,27 @@ msgstr ""
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -41681,42 +41746,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr ""
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -41732,15 +41797,15 @@ msgstr ""
msgid "can't open input file: %s"
msgstr "kan ikke åbne uddatafilen '%s'"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "creating array of `%T'"
msgid "Creating array temporary at %L"
msgstr "opretter tabel af '%T'"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "No calls in function %s\n"
msgid "Removing call to function '%s' at %L"
@@ -41854,12 +41919,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -43734,135 +43799,135 @@ msgstr "Fejl ved skrivning af uddatafilen %s.\n"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "can't open %s for writing: %m"
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "kan ikke åbne %s til skrivning: %m"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: error writing file `%s': %s\n"
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: fejl ved skrivning til filen '%s': %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file `%s': %s\n"
msgid "Can't delete module file '%s': %s"
msgstr "%s: kan ikke slette filen '%s': %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: warning: can't rename file `%s' to `%s': %s\n"
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: advarsel: kan ikke omdøbe filen '%s' til '%s': %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete aux info file `%s': %s\n"
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: kan ikke slette hjælpeinformationsfilen '%s': %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Symbols have a leading underscore"
msgid "Symbol '%s' already declared"
msgstr "Symboler har en indledende understreg"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't open file `%s' for reading: %s\n"
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "%s: kan ikke åbne filen '%s' til at læse fra: %s\n"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -43947,7 +44012,7 @@ msgstr ""
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -45299,7 +45364,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Label %A already defined at %1 when redefined at %0"
msgid "Label %d referenced at %L is never defined"
@@ -45454,7 +45519,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -45843,186 +45908,186 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array or substring specification for `%A' out of range in statement at %0"
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sætning ved %0"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array or substring specification for `%A' out of range in statement at %0"
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sætning ved %0"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "No label definition for FORMAT statement at %0"
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "Ingen etiketdefinition for FORMAT-sætning ved %0"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "No label definition for FORMAT statement at %0"
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "Ingen etiketdefinition for FORMAT-sætning ved %0"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -46031,177 +46096,177 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "expression statement has incomplete type"
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "udtrykket er af en ufuldstændig type"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr ""
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr ""
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement at %0 invalid in context established by statement at %1"
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "Sætning ved %0 er ugyldig i den kontekst der er etableret af sætning ved %1"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -46209,959 +46274,959 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement at %0 invalid in context established by statement at %1"
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "Sætning ved %0 er ugyldig i den kontekst der er etableret af sætning ved %1"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unsupported VXT statement at %0"
msgid "Unsupported statement inside WHERE at %L"
msgstr "Ikke-understøttet VXT-sætning ved %0"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Integer at %0 too large"
msgid "String length at %L is too large"
msgstr "Heltal ved %0 for stort"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "slutfeltet '%s' bliver måske ikke klargjort"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "slutfeltet '%s' bliver måske ikke klargjort"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%s' has both `extern' and initializer"
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "'%s' er erklæret 'extern', men bliver tildelt en startværdi"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "slutfeltet '%s' bliver måske ikke klargjort"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "slutfeltet '%s' bliver måske ikke klargjort"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "slutfeltet '%s' bliver måske ikke klargjort"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "slutfeltet '%s' bliver måske ikke klargjort"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%D' must take exactly one argument"
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "'%s' skal tage mod én parameter"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "trampolines not yet implemented"
msgid "Finalization at %L is not yet implemented"
msgstr "trampoliner understøttes ikke endnu"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr ""
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr ""
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr ""
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "incompatible types in %s"
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "uforenelige typer i %s"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr ""
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr ""
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr ""
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr ""
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "label `%D' defined but not used"
msgid "Label %d at %L defined but not used"
msgstr "etiketten '%D' er defineret, men ikke benyttet"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "label `%D' defined but not used"
msgid "Label %d at %L defined but cannot be used"
msgstr "etiketten '%D' er defineret, men ikke benyttet"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -47788,17 +47853,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -48050,7 +48115,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr ""
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -48364,7 +48429,7 @@ msgstr "kunne ikke bestemme målnavn for afhængighedsfølgning"
msgid "internal error - invalid Utf8 name"
msgstr "intern fejl - ugyldigt UTF-8-navn"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "ragelse i slutningen signaturstreng"
@@ -55168,9 +55233,6 @@ msgstr "opretter vælger for ikke-eksisterende metode '%s'"
#~ msgid "usage: %s [switches] input output"
#~ msgstr "brug: %s [tilvalg] inddata uddata"
-#~ msgid "-traditional and -ansi are mutually exclusive"
-#~ msgstr "-traditional og -ansi er indbyrdes uforenelige"
-
#~ msgid "filename missing after -i option"
#~ msgstr "et filnavn mangler efter tilvalget -i"
diff --git a/gcc/po/de.po b/gcc/po/de.po
index 07a078f111c..79e9ac4666e 100644
--- a/gcc/po/de.po
+++ b/gcc/po/de.po
@@ -6,10 +6,10 @@
# Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.7.0\n"
+"Project-Id-Version: gcc 4.7.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
-"PO-Revision-Date: 2012-03-25 13:30+0200\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
+"PO-Revision-Date: 2012-06-24 13:30+0200\n"
"Last-Translator: Roland Stigge <stigge@antcom.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anonym>"
@@ -27,18 +27,18 @@ msgstr "<anonym>"
msgid "({anonymous})"
msgstr "({anonym})"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr "Zeilenende erwartet"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "%<;%> erwartet"
@@ -46,17 +46,17 @@ msgstr "%<;%> erwartet"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "%<(%> erwartet"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr "%<,%> erwartet"
@@ -67,19 +67,19 @@ msgstr "%<,%> erwartet"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr "%<)%> erwartet"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr "%<]%> erwartet"
@@ -88,25 +88,25 @@ msgstr "%<]%> erwartet"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "%<;%>, %<,%> oder %<)%> erwartet"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr "%<}%> erwartet"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "%<{%> erwartet"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr "%<:%> erwartet"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr "%<while%> erwartet"
@@ -115,39 +115,39 @@ msgstr "%<while%> erwartet"
msgid "expected %<.%>"
msgstr "%<.%> erwartet"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr "%<@end%> erwartet"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr "%<>%> erwartet"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "%<,%> oder %<)%> erwartet"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "%<=%> erwartet"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "%<#pragma omp section%> oder %<}%> erwartet"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, gcc-internal-format
msgid "expected %<[%>"
msgstr "%<[%> erwartet"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(anonym)"
@@ -322,12 +322,12 @@ msgstr "»%%l«-Operand ist keine Marke"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "Gleitkommakonstante falsch benutzt"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "ungültiger Ausdruck als Operand"
@@ -1225,19 +1225,19 @@ msgstr " eingefügt von %qs bei %s:%d"
msgid " inlined from %qs"
msgstr " eingefügt von %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "es wird angenommen, dass es sich nicht um eine Endlosschleife handelt"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "mögliche Endlosscheife kann nicht optimiert werden"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "es wird angenommen, dass die Schleifen-Zählvariable nicht überläuft"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "Schleife kann nicht optimiert werden, Schleifen-Zählvariable könnte überlaufen"
@@ -1403,16 +1403,16 @@ msgid "this is the insn:"
msgstr "dies ist der Befehl:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "es konnte kein Ãœberlaufregister gefunden werden"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "VOIDmode bei einer Ausgabe"
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr "Neuladen gescheitert:"
@@ -2541,117 +2541,117 @@ msgstr "<Rückgabewert>"
msgid "<unknown>"
msgstr "<unbekannt>"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "Ungültiger %%H-Wert"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "Ungültiger %%J-Wert"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "Ungültiger %%r-Wert"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "Ungültiger %%R-Wert"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "Ungültiger %%N-Wert"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "Ungültiger %%P-Wert"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "Ungültiger %%h-Wert"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "Ungültiger %%L-Wert"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "Ungültiger %%m-Wert"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "Ungültiger %%M-Wert"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "Ungültiger %%U-Wert"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "Ungültiger %%s-Wert"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "Ungültiger %%C-Wert"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "Ungültiger %%E-Wert"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "Unbekanntes relocation unspec"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "Ungültiger %%xn-Code"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "angegebene Thumb-Anweisung"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "angegebene Anweisung in bedingter Sequenz"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, c-format
msgid "Unsupported operand for code '%c'"
msgstr "Operand für Code »%c« nicht unterstützt"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "ungültiger Schiebeoperand"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2659,79 +2659,79 @@ msgstr "ungültiger Schiebeoperand"
msgid "invalid operand for code '%c'"
msgstr "ungültiger Operand für Code »%c«"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "Anweisung wird niemals ausgeführt"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "fehlender Operand"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
msgid "function parameters cannot have __fp16 type"
msgstr "Funktionsparameter können nicht Typ __fp16 haben"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
msgid "functions cannot return __fp16 type"
msgstr "Funktionen können nicht Typ __fp16 zurückgeben"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "Adressoperand erfordert Beschränkung für X-, Y- oder Z-Register"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
msgid "operands to %T/%t must be reg + const_int:"
msgstr "Operanden für %T/%t müssen reg + const_int sein:"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
msgid "bad address, not an I/O address:"
msgstr "falsche Adresse, keine E/A-Adresse:"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
msgid "bad address, not a constant:"
msgstr "falsche Adresse, keine Konstante:"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "Falsche Adresse, nicht (reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "Falsche Adresse, nicht post_inc oder pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "Interner Compiler-Fehler. Falsche Adresse:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "Interner Compiler-Fehler. Unbekannter Modus:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "Ungültiger Befehl:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "Falscher Befehl:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "Falscher Kopierbefehl:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "Falscher Schiebe-Befehl:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "Interner Compiler-Fehler. Falsche Verschiebung:"
@@ -2747,8 +2747,8 @@ msgstr "ungültiger const_double-Operand"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2826,21 +2826,21 @@ msgstr "unerwarteter Operand"
msgid "unrecognized address"
msgstr "unerkannte Adresse"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "unerkannte vermutete Konstante"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "unerwartete Seiteneffekte in Adresse"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr "Unidentifizierbare Aufrufoperation"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "PIC-Register ist nicht vorbereitet"
@@ -2848,7 +2848,7 @@ msgstr "PIC-Register ist nicht vorbereitet"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "Ungültiger Operanden-Ausgabecode"
@@ -2977,72 +2977,72 @@ msgstr "Falscher Operand für output_move_double"
msgid "bad output_condmove_single operand"
msgstr "Falscher Operand für output_condmove_single"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "ungültiges UNSPEC als Operand"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr "»%%&« ohne lokale dynamische TLS-Referenzen verwendet"
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "ungültige Operandengröße für Operandencode »%c«"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "ungültiger Operandentyp mit Operandencode »%c« verwendet"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "Operand ist kein Bedingungscode, ungültiger Operandencode »D«"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "Operand ist weder eine Konstante noch ein Bedingungscode, ungültiger Operandencode »C«"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "Operand ist weder eine Konstante noch ein Bedingungscode, ungültiger Operandencode »F«"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "Operand ist weder eine Konstante noch ein Bedingungscode, ungültiger Operandencode »c«"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "Operand ist weder eine Konstante noch ein Bedingungscode, ungültiger Operandencode »f«"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, c-format
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "Operand ist keine ausgleichbare Speicherreferenz, ungültiger Operandencode »H«"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "Operand ist kein Bedingungscode, ungültiger Operandencode »Y«"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "ungültiger Operandencode »%c«"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "ungültige Bedingungen für Operand"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "unbekannter Befehlsmodus"
@@ -3071,35 +3071,35 @@ msgstr "Umgebungsvariable DJGPP zeigt auf fehlende Datei »%s«"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "Umgebungsvariable DJGPP zeigt auf kaputte Datei »%s«"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, c-format
msgid "invalid %%G mode"
msgstr "ungültiger Modus %%G"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: unbekannter Code"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "ungültige Umwandlung von %<__fpreg%>"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "ungültige Umwandlung in %<__fpreg%>"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "ungültige Operation auf %<__fpreg%>"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "ungültiger %%P-Operand"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "ungültiger %%p-Wert"
@@ -3178,7 +3178,7 @@ msgid "post-increment address is not a register"
msgstr "Post-Increment-Adresse ist kein Register"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "Falsche Adresse"
@@ -3341,87 +3341,87 @@ msgstr "-mno-altivec schaltet vsx aus"
msgid "bad move"
msgstr "ungültige Bewegung"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, c-format
msgid "invalid %%c value"
msgstr "Ungültiger %%c-Wert"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "ungültiger %%f-Wert"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "ungültiger %%F-Wert"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "ungültiger %%G-Wert"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "ungültiger %%j-Code"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "ungültiger %%J-Code"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "ungültiger %%k-Wert"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "ungültiger %%K-Wert"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "ungültiger %%O-Wert"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "ungültiger %%q-Wert"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "ungültiger %%S-Wert"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "ungültiger %%T-Wert"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "ungültiger %%u-Wert"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "ungültiger %%v-Wert"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "ungültiger %%x-Wert"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "ungültiger %%y-Wert, bitte »Z«-Bedingung probieren"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "AltiVec-Argument an Funktion ohne Prototyp übergeben"
@@ -3520,60 +3520,60 @@ msgstr "ungültiger Operand für %%R"
msgid "invalid operand to %%S"
msgstr "ungültiger Operand für %%S"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "erzeugt und mit anderen Architekturen / ABIs verwendet"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "erzeugt und mit anderen ABIs verwendet"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "erzeugt und mit anderer Bytereihenfolge verwendet"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "ungültiger %%Y-Operand"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "ungültiger %%A-Operand"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "ungültiger %%B-Operand"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "ungültiger %%C-Operand"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "ungültiger %%D-Operand"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "ungültiger %%f-Operand"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "ungültiger %%s-Operand"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "»long long«-Konstante ist kein gültiger direkter Operand"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "Gleitkommakonstante ist kein gültiger direkter Operand"
@@ -3598,7 +3598,7 @@ msgstr "»o«-Operand ist nicht konstant"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: unbekannter Code"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "ungültiger %%c-Operand"
@@ -3613,22 +3613,22 @@ msgstr "ungültiger %%d-Operand"
msgid "invalid %%H specifier"
msgstr "ungültiger %%H-Spezifizierer"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, c-format
msgid "invalid %%h operand"
msgstr "ungültiger %%h-Operand"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, c-format
msgid "invalid %%I operand"
msgstr "ungültiger %%I-Operand"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, c-format
msgid "invalid %%i operand"
msgstr "ungültiger %%i-Operand"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, c-format
msgid "invalid %%j operand"
msgstr "ungültiger %%j-Operand"
@@ -3638,7 +3638,7 @@ msgstr "ungültiger %%j-Operand"
msgid "invalid %%%c operand"
msgstr "ungültiger %%%c-Operand"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, c-format
msgid "invalid %%N operand"
msgstr "ungültiger %%N-Operand"
@@ -3648,37 +3648,37 @@ msgstr "ungültiger %%N-Operand"
msgid "invalid operand for 'r' specifier"
msgstr "ungültiger Operand für Spezifizierer »r«"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr "Operand kann noch nicht ausgegeben werden; Code == %d (%c)"
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, c-format
msgid "invalid %%H operand"
msgstr "ungültiger %%H-Operand"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, c-format
msgid "invalid %%L operand"
msgstr "ungültiger %%L-Operand"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, c-format
msgid "invalid %%M operand"
msgstr "ungültiger %%M-Operand"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, c-format
msgid "invalid %%t operand"
msgstr "ungültiger %%t-Operand"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, c-format
msgid "invalid %%t operand '"
msgstr "ungültiger %%t-Operand '"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, c-format
msgid "invalid %%r operand"
msgstr "ungültiger %%r-Operand"
@@ -3742,11 +3742,11 @@ msgstr "Kein Register in Adresse"
msgid "address offset not a constant"
msgstr "Adressversatz ist keine Konstante"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "Kandidat 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "Kandidat 2:"
@@ -3962,7 +3962,7 @@ msgstr "%s:%d: in constexpr-Ersetzung von %qs"
msgid "candidates are:"
msgstr "Kandidaten sind:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4009,48 +4009,48 @@ msgstr "Umformung verwirft Konstantheit"
msgid "source type is not polymorphic"
msgstr "Quellentyp ist nicht polymorph"
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "Argument falschen Typs für unäres Minus"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "Argument falschen Typs für unäres Plus"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "Argument falschen Typs für Bit-Komplement"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "Argument falschen Typs für abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "Argument falschen Typs für Konjugation"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
msgid "in argument to unary !"
msgstr "in Argument für unäres !"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr "kein Präinkrementoperator für Typ"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr "kein Postinkrementoperator für Typ"
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr "kein Prädekrementoperator für Typ"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr "kein Postdekrementoperator für Typ"
@@ -4302,7 +4302,7 @@ msgstr "Falscher Operator"
msgid "Bad type in constant expression"
msgstr "Falscher Typ in Konstanten-Ausdruck"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "Unerwartetes Modulende"
@@ -4330,11 +4330,11 @@ msgstr "Block-IF"
msgid "implied END DO"
msgstr "impliziertes END DO"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "Zuweisung"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "Zeigerzuweisung"
@@ -4418,47 +4418,47 @@ msgstr "Operanden des Benutzeroperators »%s« bei %%L sind %s/%s"
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "Ränge für Operator bei %%L und %%L stimmen nicht überein"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr "Schleifenvariable"
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr "Iteratorvariable"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr "Anfangs-Ausdruck in DO-Schleife"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
msgid "End expression in DO loop"
msgstr "End-Ausdruck in DO-Schleife"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr "Schrittausdruck in DO-Schleife"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr "DEALLOCATE Objekt"
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr "ALLOCATE Objekt"
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr "STAT-Variable"
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr "ERRMSG-Variable"
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr "Element in READ"
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr "Variable ACQUIRED_LOCK"
@@ -4467,7 +4467,7 @@ msgstr "Variable ACQUIRED_LOCK"
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr "Unterschiedliche CHARACTER-Längen (%ld/%ld) in Feldkonstruktor"
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr "Ganzzahlüberlauf bei der Berechnung des zu reservierenden Speichers"
@@ -4537,7 +4537,7 @@ msgstr "Falscher Funktions-Rückgabewert"
msgid "Memory allocation failed"
msgstr "Speicherreservierung gescheitert"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr "Reservierung würde Speichergrenze überschreiten"
@@ -4742,7 +4742,7 @@ msgstr "nicht gleichzeitig -march=... und -mcpu=... angeben"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr "evtl. »-pg« statt »-p« mit gprof(1) verwendet"
@@ -4799,6 +4799,10 @@ msgstr "shared und mdll sind unverträglich"
msgid "static is not supported on TPF-OS"
msgstr "static wird auf TPF-OS nicht unterstützt"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr "evtl. »-pg« statt »-p« mit gprof(1) verwenden"
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "-EB und -EL können nicht gleichzeitig verwendet werden"
@@ -4827,10 +4831,6 @@ msgstr "-mbig-endian und -mlittle-endian dürfen nicht zusammen verwendet werden
msgid "no processor type specified for linking"
msgstr "kein Prozessortyp zum Binden angegeben"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran unterstützt nicht -E ohne -cpp"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "der m210 hat keine Little-Endian-Unterstützung"
@@ -4883,6 +4883,10 @@ msgstr "objc-cpp-output ist veraltet; bitte stattdessen objective-c-cpp-output v
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "Die Option -shared wird derzeit nicht für VAX ELF unterstützt"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran unterstützt nicht -E ohne -cpp"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni und -femit-class-files sind unverträglich"
@@ -7938,6 +7942,10 @@ msgstr "Ausgehende Funktionsargumente sammeln und den nötigen Stapelspeicher fÃ
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr "Bei RAM-Zugriff X wie durch Hardware vorgegeben verwenden, d.h. Pre-Dekrement, Post-Inkrement und indirekte Adressiering mit dem X-Register. Ohne diese Option nimmt der Kompiler an, dass es einen Adressierungsmodus X+const, ähnlich zu Y+const und Z+const gibt und erzeugt Befehle, die diesen Adressierungsmodus für X emulieren."
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr "Das Gerät hat kein Spezialfunktionsregister SPH. Diese Option wird vom Compilertreiber mit dem korrekten Wert überschrieben, wenn An-/Abwesenheit von SPH von -mmcu=MCU abgeleitet werden kann."
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr "Bekannte MCU-Namen:"
@@ -10260,18 +10268,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Keine system- oder GCC-spezifischen Makros vordefinieren"
#: go/lang.opt:42
+msgid "Add explicit checks for division by zero"
+msgstr "Ausdrückliche Prüfungen für Division durch Null hinzufügen"
+
+#: go/lang.opt:46
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
+msgstr "Ausdrückliche Prüfungen für Divisionsüberlauf in INT_MIN / -1 hinzufügen"
+
+#: go/lang.opt:50
msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr "-fgo-dump-<Typ>\tInterne Information des Go-Frontends in Datei ausgeben"
-#: go/lang.opt:46
+#: go/lang.opt:54
msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
msgstr "-fgo-optimize-<type>\tOptimierungsdurchläufe im Frontend einschalten"
-#: go/lang.opt:50
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr "-fgo-pkgpath=<string>\tGo-Paketpfad setzen"
+
+#: go/lang.opt:62
msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
msgstr "-fgo-prefix=<Zeichenkette>\tSetzt den paketspezifischen Präfix für exportierte Go-Namen"
-#: go/lang.opt:54
+#: go/lang.opt:66
msgid "Functions which return values must end with return statements"
msgstr "Funktionen die Werte zurück geben müssen mit return-Anweisungen enden"
@@ -11781,224 +11801,231 @@ msgstr "Shared Library erzeugen"
msgid "Create a position independent executable"
msgstr "Eine lageunabhängige ausführbare Datei erzeugen"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
msgid "invalid use of type"
msgstr "ungültige Typ-Verwendung"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-msgid "floating point constant truncated to integer"
-msgstr "Gleitkommakonstante auf Ganzzahl abgeschnitten"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr "Konstante verweist auf sich selbst"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
msgid "expected numeric type"
msgstr "numerischer Typ erwartet"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+msgid "expected boolean type"
+msgstr "boolescher Typ erwartet"
+
+#: go/gofrontend/expressions.cc:3911
msgid "expected integer or boolean type"
msgstr "Ganzzahlausdruck oder boolscher Typ erwartet"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
msgid "invalid operand for unary %<&%>"
msgstr "ungültiger Operand für unäres %<&%>"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
msgid "expected pointer"
msgstr "Zeiger erwartet"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
msgid "incompatible types in binary expression"
msgstr "inkompatible Typen in binärem Ausdruck"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
msgid "shift of non-integer operand"
msgstr "Schiebeoperation eines Nicht-Ganzzahloperanden"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr "Schiebeweite ist keine vorzeichenlose Ganzzahl"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
msgid "negative shift count"
msgstr "negative Schiebeweite"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
msgid "object is not a method"
msgstr "Objekt ist keine Methode"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
msgid "method type does not match object type"
msgstr "Methodentyp passt nicht zum Objekttyp"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
msgid "invalid use of %<...%> with builtin function"
msgstr "ungültige Verwendung von %<...%> mit eingebauter Funktion"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
msgid "not enough arguments"
msgstr "Nicht genug Argumente"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
msgid "too many arguments"
msgstr "zu viele Argumente"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
msgid "argument 1 must be a map"
msgstr "Argument 1 muss eine Abbildung sein"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
msgid "invalid type for make function"
msgstr "ungültiger Typ für »make«-Funktion"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr "Bei Reservierung einer Scheibe wird Länge benötigt"
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
msgid "bad size for make"
msgstr "falsche Größe für make"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr "Falsche Größe bei Scheiben-Erzeugung"
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
msgid "too many arguments to make"
msgstr "zu viele Argumente für make"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
msgid "argument must be array or slice or channel"
msgstr "Argument muss Feld oder Scheibe oder Kanal sein"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr "Argument muss Zeichenkette oder Feld oder Scheibe oder Abbildung oder Kanal sein"
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
msgid "unsupported argument type to builtin function"
msgstr "nicht unterstützter Argumenttyp für eingebaute Funktion"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
msgid "argument must be channel"
msgstr "Argument muss ein Kanal sein"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr "Nur-Empfangs-Kanal kann nicht geschlossen werden"
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
msgid "argument must be a field reference"
msgstr "Argument muss eine Feldreferenz sein"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
msgid "left argument must be a slice"
msgstr "linkes Argument muss eine Scheibe sein"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr "Elementtypen müssen dieselben sein"
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
msgid "first argument must be []byte"
msgstr "erstes Argument muss []byte sein"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
msgid "second argument must be slice or string"
msgstr "zweites Argument muss eine Scheibe oder Zeichenkette sein"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
msgid "argument 2 has invalid type"
msgstr "Argument 2 hat ungültigen Typen"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
msgid "argument must have complex type"
msgstr "Argument muss komplexen Typen haben"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
msgid "complex arguments must have identical types"
msgstr "komplexe Argumente müssen identische Typen haben"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
msgid "complex arguments must have floating-point type"
msgstr "komplexe Argumente müssen Gleitkommatyp haben"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+msgid "invalid use of %<...%> with non-slice"
+msgstr "ungültige Verwendung von %<...%> mit Nicht-Slice"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
msgid "expected function"
msgstr "Funktion erwartet"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
msgid "incompatible type for receiver"
msgstr "inkompatible Typen für Empfänger"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "ungültige Verwendung von %<this%> bei Aufruf einer nicht-variadischen Funktion"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
msgid "number of results does not match number of values"
msgstr "Anzahl der Ergebnisse passt nicht zur Anzahl der Werte"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr "Index muss eine Ganzzahl sein"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr "Scheibenende muss eine Ganzzahl sein"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr "Scheibe ohne adressierbaren Wert"
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
msgid "incompatible type for map index"
msgstr "inkompatible Typen für Abbildungsindex"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr "Schnittstelle oder Zeiger auf Schnittstelle erwartet"
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
msgid "too many expressions for struct"
msgstr "zu viele Ausdrücke für Struktur"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
msgid "too few expressions for struct"
msgstr "zu wenig Ausdrücke für Struktur"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr "zu viele Elemente in zusammengesetztem Literal"
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
msgid "invalid unsafe.Pointer conversion"
msgstr "ungültige »unsafe.Pointer«-Umwandlung"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr "Typbehauptung nur gültig für Schnittstellentypen"
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr "unmögliche Typenbehauptung: Typ implementiert nicht Schnittstelle"
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
msgid "expected channel"
msgstr "Kanal erwartet"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr "ungültiges Empfangen auf Nur-Sende-Kanal"
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr "Um dieses zusammengesetzte Literal sind Klammern erforderlich, um Mehrdeutigkeit zu vermeiden"
+
#: go/gofrontend/statements.cc:590
msgid "invalid left hand side of assignment"
msgstr "ungültige linke Seite einer Zuweisung"
@@ -12027,19 +12054,19 @@ msgstr "zu viele Werte in Rückgabeanweisung"
msgid "expected boolean expression"
msgstr "boolscher Ausdruck erwartet"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
msgid "incompatible types in send"
msgstr "inkompatible Typen in »send«"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr "ungültiges »send« auf Nur-Empfangs-Kanal"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr "zu viele Variablen in Bereichsklausel mit Kanal"
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr "Bereichsklausel muss Feld, Scheibe, Zeichenkette, Abbildung oder Kanaltyp haben"
@@ -12089,71 +12116,71 @@ msgstr "ausdrückliche Umwandlungen erforderlich"
msgid "cannot use type %s as type %s"
msgstr "Typ %s kann nicht als Typ %s verwendet werden"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
msgid "different receiver types"
msgstr "unterschiedliche Empfängertypen"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
msgid "different number of parameters"
msgstr "unterschiedliche Parameteranzahl"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
msgid "different parameter types"
msgstr "unterschiedliche Parametertypen"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr "unterschiedliche variable Argumente"
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr "unterschiedliche Ergebnisanzahl"
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr "unterschiedliche Ergebnistypen"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr "implizite Zuweisung an verstecktes Feld %4$s%5$s%6$s von %1$s%2$s%3$s"
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr "explizite Umwandlung nötig; Methode %s%s%s fehlt"
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, c-format
msgid "incompatible type for method %s%s%s"
msgstr "Inkompatibler Typ für Methode %s%s%s"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "Inkompatibler Typ für Methode %s%s%s (%s)"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr "Zeiger auf Schnittstellentyp hat keine Methoden"
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
msgid "type has no methods"
msgstr "Typ hat keine Methoden"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr "mehrdeutige Methode %s%s%s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, c-format
msgid "missing method %s%s%s"
msgstr "fehlende Methode %s%s%s"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr "Methode %s%s%s erfordert einen Zeiger"
@@ -12220,7 +12247,7 @@ msgstr "Drittes Argument für %<__builtin_prefetch%> muss eine Konstante sein"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "Ungültiges drittes Argument für %<__builtin_prefetch%>; es wird Null verwendet"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "Zu wenige Argumente für %<va_start%>"
@@ -12242,7 +12269,7 @@ msgstr "(Es sollte also %qT statt %qT an %<va_arg%> übergeben werden)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "Wenn dieser Code erreicht wird, wird das Programm abgebrochen"
@@ -12324,7 +12351,7 @@ msgstr "nicht-ganzzahliges Argument 1 für __atomic_is_lock_free"
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "%Kungültige Verwendung von %<__builtin_va_arg_pack ()%>"
@@ -12418,8 +12445,8 @@ msgstr "%KVersuch, Nicht-Heap-Objekt freizugeben"
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "void-Wert nicht ignoriert wie es sein sollte"
@@ -12694,7 +12721,7 @@ msgstr "Deklaration von %q+D überdeckt eine globale Deklaration"
msgid "declaration of %q+D shadows a previous local"
msgstr "Deklaration von %q+D überdeckt einen vorhergehenden lokalen Bezeichner"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "verdeckte Deklaration ist hier"
@@ -12799,7 +12826,7 @@ msgstr "switch springt in Anweisungs-Ausdruck"
msgid "%qE defined as wrong kind of tag"
msgstr "%qE als falsche Symbolart definiert"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "Ungültige Verwendung von %<restrict%>"
@@ -12917,7 +12944,7 @@ msgstr "Parameter %qD ist initialisiert"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "Objekt variabler Größe darf nicht initialisiert werden"
@@ -12927,7 +12954,7 @@ msgstr "Objekt variabler Größe darf nicht initialisiert werden"
msgid "variable %qD has initializer but incomplete type"
msgstr "Variable %qD hat Initialisierung, aber unvollständigen Typ"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "inline-Funktion %q+D wurde das Attribut »noinline« gegeben"
@@ -12957,7 +12984,7 @@ msgstr "Feldgröße fehlt in %q+D"
msgid "zero or negative size array %q+D"
msgstr "Feldgröße von %q+D ist null oder negativ"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "Speichergröße von %q+D ist unbekannt"
@@ -13067,7 +13094,7 @@ msgstr "die Größe eines Feldes kann nicht ausgewertet werden"
msgid "variable length array %qE is used"
msgstr "Feld %qE variabler Größe wird verwendet"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr "Feld variabler Größe wird verwendet"
@@ -13152,7 +13179,7 @@ msgstr "Speicherklasse für Parameter %qE angegeben"
msgid "storage class specified for unnamed parameter"
msgstr "Speicherklasse für unbenannten Parameter angegeben"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "Speicherklasse für Typnamen angegeben"
@@ -13301,7 +13328,7 @@ msgstr "Typname als Funktion, die ein Feld zurückgibt, deklariert"
msgid "function definition has qualified void return type"
msgstr "Funktionsdefinition hat qualifizierten void-Rückgabetypen"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "Typkennzeichner an Funktions-Rückgabewert ignoriert"
@@ -13412,7 +13439,7 @@ msgstr "ISO-C verbietet const- oder volatile-Funktionstypen"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "Ein Element einer Struktur oder Union kann nicht variabel modifizierten Typ haben"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "Variable oder Feld %qE als »void« deklariert"
@@ -13835,7 +13862,7 @@ msgstr "Argument %qD passt nicht zu eingebautem Prototypen"
msgid "argument %qD doesn%'t match prototype"
msgstr "Argument %qD passt nicht zum Prototypen"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "keine return-Anweisung in nicht void zurückgebender Funktion"
@@ -14028,7 +14055,7 @@ msgstr "Bezeichner %qE steht mit C++-Schlüsselwort in Konflikt"
msgid "ISO C forbids an empty translation unit"
msgstr "ISO-C verbietet eine leere Quelldatei"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO-C erlaubt kein zusätzliches %<;%> außerhalb einer Funktion"
@@ -14038,7 +14065,7 @@ msgstr "ISO-C erlaubt kein zusätzliches %<;%> außerhalb einer Funktion"
msgid "unknown type name %qE"
msgstr "unbekannter Typname: %qE"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "Deklarationsspezifizierer erwartet"
@@ -14048,7 +14075,7 @@ msgstr "Deklarationsspezifizierer erwartet"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "%<;%>, Bezeichner oder %<(%> erwartet"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "Präfixattribute werden für Methoden ignoriert"
@@ -14068,7 +14095,7 @@ msgstr "unerwartetes Attribut"
msgid "data definition has no type or storage class"
msgstr "Datendefinition hat keinen Typ oder Speicherklasse"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "%<,%> oder %<;%> erwartet"
@@ -14096,7 +14123,7 @@ msgstr "ISO-C99 unterstützt nicht %<_Static_assert%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO-C90 unterstützt nicht %<_Static_assert%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "Zeichenkettenliteral erwartet"
@@ -14123,18 +14150,18 @@ msgstr "statische Behauptung gescheitert: %E"
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "Bezeichner erwartet"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "Komma am Ende der Aufzählungsliste"
@@ -14264,7 +14291,7 @@ msgstr "ISO-C90 verbietet gemischte Deklarationen und Code"
msgid "expected %<}%> before %<else%>"
msgstr "%<}%> vor %<else%> erwartet"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr "%<else%> ohne vorheriges %<if%>"
@@ -14293,17 +14320,17 @@ msgstr "Bezeichner oder %<*%> erwartet"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "Anweisung erwartet"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "geschweifte Klammern um leeren Körper in einer %<if%>-Anweisung empfohlen"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "geschweifte Klammern um leeren Körper in einer %<else%>-Anweisung empfohlen"
@@ -14368,7 +14395,7 @@ msgstr "ISO-C erlaubt kein %<%E (expression)%>"
msgid "cannot take address of %qs"
msgstr "die Adresse von %qs kann nicht ermittelt werden"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "Ausdruck erwartet"
@@ -14408,257 +14435,257 @@ msgstr "Operand von %<__builtin_complex%> nicht realer binärer Gleitkommatyp"
msgid "%<__builtin_complex%> operands of different types"
msgstr "Operanden von %<__builtin_complex%> unterschiedlichen Typs"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "falsche Anzahl der Argumente für %<__builtin_shuffle%>"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "zusammengesetztes Literal hat variable Größe"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr "Verbundliteral durch Adressraumqualifizierer qualifiziert"
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO-C90 verbietet zusammengesetzte Literale"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "Bezeichner oder %<)%> erwartet"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr "zusätzliches Semikolon"
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "zusätzliches Semikolon in Methodendefinition angegeben"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr "Methodenattribute dürfen nur am Ende angegeben werden"
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr "%<;%> or %<{%> nach Definition der Methodenattribute erwartet"
-#: c-parser.c:7753
+#: c-parser.c:7758
#, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "Methodendeklaration in Objective-C erwartet"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "hier darf kein Typ oder Speicherklasse angegeben werden,"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr "unbekanntes Eigenschaftsattribut"
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "fehlendes %<=%> (hinter Attribut %<getter%>)"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "fehlendes %<=%> (hinter Attribut %<setter%>)"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "das %<setter%>-Attribut darf nur einmal angegeben werden"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr "Setter-Name muss mit %<:%> beendet werden"
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "das %<getter%>-Attribut darf nur einmal angegeben werden"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> darf nur in Verbundanweisungen verwendet werden"
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr "%<#pragma omp flush%> darf nur in Verbundanweisungen verwendet werden"
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%> darf nur in Verbundanweisungen verwendet werden"
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr "%<#pragma omp taskyield%> darf nur in Verbundanweisungen verwendet werden"
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr "%<#pragma omp section%> darf nur in %<#pragma omp sections%>-Konstrukt verwendet werden"
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%> muss zuerst kommen"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr "zu viele %qs-Klauseln"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "Collapse-Argument erfordert positiven konstanten Ganzzahlausdruck"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "%<none%> oder %<shared%> erwartet"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr "Ganzzahlausdruck erwartet"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr "Wert von %<num_threads%> muss positiv sein"
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> oder %<max%> erwartet"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr "Ablauf %<runtime%> akzeptiert keinen Parameter %<chunk_size%>"
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr "Ablauf %<auto%> akzeptiert keinen Parameter %<chunk_size%>"
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "ungültige Ablaufart"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "Klausel %<#pragma omp%> erwartet"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs ist für %qs ungültig"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "ungültige Form von %<#pragma omp atomic%>"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "ungültiger Operator für %<#pragma omp atomic%>"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "%<(%> oder Zeilenende erwartet"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr "für Anweisung erwartet"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "Schleifendeklaration oder Initialisierung erwartet"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr "nicht genügend perfekt geschachtelte Schleifen"
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr "zusammengelegte Schleifen sind nicht perfekt geschachtelt"
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "Schleifenvariable %qD sollte nicht »firstprivate« sein"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr "%qD ist keine Variable"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%qE nach erster Benutzung als %<threadprivate%> deklariert"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "automatische Variable %qE kann nicht %<threadprivate%> sein"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%<threadprivate%> %qE hat unvollständigen Typen"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr "%<__transaction_cancel%> ohne eingeschaltete Unterstützung für transaktionsbasierten Speicher"
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr "%<__transaction_cancel%> innerhalb eines %<__transaction_relaxed%>"
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr "äußeres %<__transaction_cancel%> nicht innerhalb des äußeren %<__transaction_atomic%>"
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr " oder einer %<transaction_may_cancel_outer%>-Funktion"
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr "%<__transaction_cancel%> nicht innerhalb von %<__transaction_atomic%>"
@@ -14668,7 +14695,7 @@ msgstr "%<__transaction_cancel%> nicht innerhalb von %<__transaction_atomic%>"
msgid "%qD has an incomplete type"
msgstr "%qD hat unvollständigen Typ"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "falsche Benutzung eines void-Ausdruckes"
@@ -14734,67 +14761,72 @@ msgstr "Zeiger-Zieltypen sind in C++ inkompatibel"
msgid "function return types not compatible due to %<volatile%>"
msgstr "Funktionsrückgabetypen nicht kompatibel wegen %<volatile%>"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "Arithmetik mit Zeiger auf unvollständigen Typen"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr "Umwandlung eines zusammengesetzten Feldliterals ist in C++ ungültig"
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT hat kein Element namens %qE"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "Anfrage nach Element %qE in etwas, was keine Struktur oder Variante ist"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "Dereferenzierung eines Zeigers auf unvollständigen Typen"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "Dereferenzierung eines %<void *%>-Zeigers"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "indizierter Wert ist weder Feld noch Zeiger noch Vektor"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "Feldindex ist keine Ganzzahl"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "indizierter Wert ist Zeiger auf Funktion"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr "Indexwert ist außerhalb der Grenzen"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO-C verbietet, ein %<register%>-Feld zu indizieren"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO-C90 verbietet, ein Nicht-L-Wert-Feld zu indizieren"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr "enum-Konstante hier definiert"
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "gerufenes Objekt %qE ist keine Funktion"
@@ -14802,370 +14834,370 @@ msgstr "gerufenes Objekt %qE ist keine Funktion"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "Funktion über nicht kompatiblen Typen aufgerufen"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "Funktion mit qualifiziertem void-Rückgabetypen aufgerufen"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "Das letzte Argument von __builtin_shuffle muss Ganzzahlvektor sein"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, gcc-internal-format
msgid "__builtin_shuffle arguments must be vectors"
msgstr "Argumente für __builtin_shuffle müssen Vektoren sein"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr "Vektorargumente von __builtin_shuffle müssen gleichen Typ haben"
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr "Anzahl der Elemente des/der Argumentvektors/en und des Maskenvektors für __builtin_shuffle sollten gleich sein"
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr "Innere Typen des/der Argumentvektors/en und Maske von __builtin_shuffle müssen gleiche Größe haben"
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "zu viele Argumente für Methode %qE"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "zu viele Argumente für Funktion %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, gcc-internal-format
msgid "declared here"
msgstr "hier deklariert"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "Typ des formalen Parameters %d ist unvollständig"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als Ganzzahl statt Gleitkomma aufgrund des Prototyps"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als Ganzzahl statt komplex aufgrund des Prototyps"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als komplex statt Gleitkomma aufgrund des Prototyps"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als Gleitkomma statt Ganzzahl aufgrund des Prototyps"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als komplex statt Ganzzahl aufgrund des Prototyps"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als Gleitkomma statt komplex aufgrund des Prototyps"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als %<float%> statt %<double%> aufgrund des Prototyps"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als %qT statt %qT aufgrund des Prototyps"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE mit anderer Breite aufgrund des Prototyps"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als vorzeichenlos aufgrund des Prototyps"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "Ãœbergabe des Arguments %d von %qE als vorzeichenbehaftet aufgrund des Prototyps"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "implizite Umwandlung von %qT in %qT bei Ãœbergabe von Argument an Funktion"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "Zu wenige Argumente für Funktion %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "Vergleich mit Zeichenkettenliteral führt zu unspezifiziertem Verhalten"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "Vergleich zwischen %qT und %qT"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "Zeiger des Typs %<void *%> in Subtraktion verwendet"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "Zeiger auf eine Funktion in Subtraktion verwendet"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO-C unterstützt nicht %<~%> für komplexe Konjugation"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "Argument falschen Typs für unäres Ausrufungszeichen"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr "Schrittweite von Aufzählungswerten (enum) ist in C++ ungültig"
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr "Verringerung von Aufzählungswerten (enum) ist in C++ ungültig"
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO-C unterstützt kein %<++%> und %<--%> für komplexe Typen"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "Argument falschen Typs für Inkrementierung"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "Argument falschen Typs für Dekrementierung"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "Erhöhung eines Zeigers auf unbekannte Struktur"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "Verminderung eines Zeigers auf unbekannte Struktur"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr "Adresse des Ausdrucks des Typs %<void%> wird genommen"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "Zuweisung der schreibgeschützten Speicherstelle %qE"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "Erhöhung der schreibgeschützten Speicherstelle %qE"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "Verringerung der schreibgeschützten Speicherstelle %qE"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "die Adresse des Bit-Feldes %qD kann nicht ermittelt werden"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "globale Register-Variable %qD in verschachtelter Funktion verwendet"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "Register-Variable %qD in verschachtelter Funktion verwendet"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "Adresse der globalen Variablen %qD angefordert"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "Adresse der Register-Variablen %qD angefordert"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "Nicht-L-Wert-Feld in bedingtem Ausdruck"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "implizite Umwandlung von %qT in %qT um an anderes Ergebnis von Bedingung anzupassen"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO-C verbietet bedingten Ausdruck mit nur einer void-Seite"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "Zeiger auf disjunkte Adressräume in bedingtem Ausdruck verwendet"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO-C verbietet bedingten Ausdruck zwischen %<void *%> und Funktionszeiger"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "Zeigertyp passt nicht in bedingtem Ausdruck"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "Zeiger-/Ganzzahltyp passt nicht in bedingtem Ausdruck"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "Typ passt nicht in bedingtem Ausdruck"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
msgid "cast adds %q#v qualifier to function type"
msgstr "Typumwandlung fügt Qualifizierer %q#v zu Funktionstyp hinzu"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "Typumwandlung streicht Qualifizierer %q#v von Zeiger-Zieltyp"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr "zur Sicherheit müssen alle vorübergehenden Zeiger in Umwandlung von %qT in %qT mit %<const%> qualifiziert sein"
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "Typkonvertierung gibt Feldtyp an"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "Typkonvertierung gibt Funktionstyp an"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO-C verbietet Typkonvertierung von Nicht-Skalar auf selben Typen"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO-C verbietet Typkonvertierung auf union-Typ"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "Typkonvertierung in union-Typ von nicht in union vorhandenem Typen"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr "Umwandlung in %s-Adressraumzeiger aus getrenntem allgemeinen Adressraumzeiger"
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr "Umwandlung in allgemeinen Adressraumzeiger von getrenntem %s-Adressraumzeiger"
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr "Umwandlung in %s-Adressraumzeiger von getrenntem %s-Adressraumzeiger"
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "Typkonvertierung erfordert Ausrichtung des Zieltyps"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "Typkonvertierung von Zeiger auf Ganzzahl anderer Breite"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "Typumwandlung von Funktionsaufruf des Typs %qT in unpassenden Typen %qT"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "Typkonvertierung in Zeiger von Ganzzahl anderer Breite"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO-C verbietet Konvertierung von Funktionszeigern in Objektzeigertyp"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO-C verbietet Konvertierung von Objektzeigertypen in Funktionszeigertyp"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr "Definition eines Typs in einer Umwandlung ist in C++ ungültig"
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr "enum-Umwandlung in Zuweisung ist in C++ ungültig"
@@ -15177,683 +15209,683 @@ msgstr "enum-Umwandlung in Zuweisung ist in C++ ungültig"
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "%qT erwartet, aber Argument hat Typ %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "Enum-Umwandlung bei Übergabe des Arguments %d von %qE ist in C++ ungültig"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr "enum-Umwandlung in Initialisierung ist in C++ ungültig"
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr "enum-Umwandlung in Rückgabe ist in C++ ungültig"
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "R-Wert kann nicht an Referenzparameter übergeben werden"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "Ãœbergabe des Arguments %d von %qE erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "Zuweisung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "Initialisierung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "return erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "Ãœbergabe des Arguments %d von %qE entfernt Kennzeichner %qv von Zeiger-Ziel-Typ"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "Zuweisung streicht Qualifizierer %qv von Zeiger-Zieltyp"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "Initialisierung streicht Qualifizierer %qv von Zeiger-Zieltyp"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
msgid "return discards %qv qualifier from pointer target type"
msgstr "return streicht Qualifizierer %qv von Zeiger-Zieltyp"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO-C verbietet Argumentkonvertierung in union-Typ"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "Ãœbergabe des Arguments %d von %qE von Zeiger auf nicht eingeschlossenen Adressbereich"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr "Zuweisung von Zeiger auf nicht eingeschlossenen Adressbereich"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "Initialisierung von Zeiger auf nicht enthaltenen Adressraum"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr "Rückgabe von Pointer auf nicht enthaltenen Adressraum"
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "Argument %d von %qE könnte Kandidat für Formatattribut sein"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "Links-Zuweisung könnte Kandidat für Formatattribut sein"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "Linke-Initialisierung könnte Kandidat für Formatattribut sein"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "Rückgabetyp könnte Kandidat für Formatattribut sein"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO-C verbietet Ãœbergabe des Arguments %d von %qE zwischen Funktionszeiger und %<void *%>"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO-C verbietet Zuweisung zwischen Funktionszeiger und %<void *%>"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO-C verbietet Initialisierung zwischen Funktionszeiger und %<void *%>"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO-C verbietet return zwischen Funktionszeiger und %<void *%>"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "Zeigerziele bei Ãœbergabe des Arguments %d von %qE unterscheiden sich im Vorzeichenbesitz"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "Zeigerziele in Initialisierung unterscheiden sich im Vorzeichenbesitz"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "Zeigerziele in return unterscheiden sich im Vorzeichenbesitz"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "Ãœbergabe des Arguments %d von %qE von inkompatiblem Zeigertyp"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "Zuweisung von inkompatiblem Zeigertyp"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "Initialisierung von inkompatiblem Zeigertyp"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "return von inkompatiblem Zeigertyp"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "ungültige Verwendung eines Nicht-L-Wert-Feldes"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "Ãœbergabe des Arguments %d von %qE erzeugt Zeiger von Ganzzahl ohne Typkonvertierung"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "Zuweisung erzeugt Zeiger von Ganzzahl ohne Typkonvertierung"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "Initialisierung erzeugt Zeiger von Ganzzahl ohne Typkonvertierung"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "return erzeugt Zeiger von Ganzzahl ohne Typkonvertierung"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "Ãœbergabe des Arguments %d von %qE erzeugt Ganzzahl von Zeiger ohne Typkonvertierung"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "Zuweisung erzeugt Ganzzahl von Zeiger ohne Typkonvertierung"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "Initialisierung erzeugt Ganzzahl von Zeiger ohne Typkonvertierung"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "return erzeugt Ganzzahl von Zeiger ohne Typkonvertierung"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "Inkompatibler Typ für Argument %d von %qE"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "unverträgliche Typen bei Zuweisung an Typ %qT von Typ %qT"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "inkompatible Typen bei Initialisierung von Typ %qT mit Typ %qT"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "unverträgliche Typen bei Rückgabe von Typ %qT, aber %qT wurde erwartet"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "traditionelles C lehnt automatische Gesamt-Initialisierung ab"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(nahe der Initialisierung für %qs)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "Feld mit geklammerter Zeichenkettenkonstante initialisiert"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "Initialisierung eines flexiblen Feld-Elements"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "char-Feld mit wide-Zeichenkette initialisiert"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "Feld von wide character mit Nicht-wide-Zeichenkette initialisiert"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "Feld von wide character mit unverträglicher wide-Zeichenkette initialisiert"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "Feld unpassenden Typs mit Zeichenkettenkonstante initialisiert"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "Feld mit nicht konstantem Feldausdruck initialisiert"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "Initialisierungselement ist nicht konstant"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "Initialisierungselement ist nicht konstant"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "Initialisierungs-Element ist zur Lade-Zeit nicht berechenbar"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "ungültige Initialisierung"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "opake Vektortypen können nicht initialisiert werden"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "zusätzliche geschweifte Klammern am Ende der Initialisierung"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "geschweifte Klammern fehlen um Initialisierung"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "geschweifte Klammern um Skalar-Initialisierung"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "Initialisierung eines flexiblen Feld-Elements in geschachteltem Kontext"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "fehlende Initialisierung"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "leere Skalar-Initialisierung"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "zusätzliche Elemente in Skalar-Initialisierung"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "Feldindex in Nicht-Feld-Initialisierung"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "Feldname nicht in Datensatz- oder union-Initialisierung"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "Feldindex in Initialisierung hat nicht Ganzzahltyp"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "Feldindex in Initialisierung ist kein konstanter Ganzzahlausdruck"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "nichtkonstanter Feldindex in Initialisierung"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "Feldindex in Initialisierung überschreitet Feldgrenzen"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "leerer Indexbereich in Initialisierung"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "Feldindexbereich in Initialisierung überschreitet Feldgrenzen"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "unbekanntes Feld %qE in Initialisierung angegeben"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "initialisiertes Feld mit Seiteneffekten überschrieben"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "initialisiertes Feld überschrieben"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "Elementüberschreitung in char-Feld-Initialisierung"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "Elementüberschreitung in struct-Initialisierung"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "nicht-statische Initialisierung eines flexiblen Feldelements"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "Elementüberschreitung in union-Initialisierung"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "traditionelles C lehnt Initialisierung von unions ab"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "Elementüberschreitung in Feldinitialisierung"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "Elementüberschreitung in Vektorinitialisierung"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "Elementüberschreitung in Skalarinitialisierung"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO-C verbietet %<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "als %<noreturn%> deklarierte Funktion hat %<return%>-Anweisung"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "%<return%> ohne Wert in nicht-void zurückgebender Funktion"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "%<return%> mit Wert in void zurückgebender Funktion"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "ISO-C verbietet %<return%> mit Ausdruck, in void zurückgebender Funktion"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "Funktion liefert Adresse einer lokalen Variablen zurück"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch-Größe ist keine Ganzzahl"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "%<long%> switch-Ausdruck nicht nach »int« konvertiert in ISO C"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "»case«-Marke ist kein konstanter Ganzzahlausdruck"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case-Marke nicht innerhalb einer switch-Anweisung"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "%<default%>-Marke nicht innerhalb einer switch-Anweisung"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "es wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges %<else%> zu vermeiden"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break-Anweisung nicht innerhalb einer Schleife oder »switch«"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue-Anweisung nicht innerhalb einer Schleife"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "break-Anweisung mit OpenMP für Schleife verwendet"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "Anweisung ohne Effekt"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "Ausdrucksanweisung hat unvollständigen Typ"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr "Umwandlung von Skalar in Vektor führt zum Abschneiden"
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "Rechts-Schiebe-Weite ist negativ"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "Rechts-Schiebe-Weite >= Breite des Typs"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "Links-Schiebe-Weite ist negativ"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "Links-Schiebe-Weite >= Breite des Typs"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr "Vergleich von Vektoren mit verschiedenen Element-Typen"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr "Vergleich von Vektoren mit unterschiedlicher Elementanzahl"
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "Vergleich von Gleitkomma mit == oder != ist unsicher"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr "Vergleich wird stets als %<false%> ausgewertet da die Adresse von %qD nie NULL wird"
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr "Vergleich wird stets als %<true%> ausgewertet da die Adresse von %qD nie NULL wird"
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr "Vergleich von Zeigern auf disjunkte Adressräume"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO-C verbietet Vergleich von %<void *%> mit Funktionszeiger"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "in Vergleich verschiedener Zeigertypen fehlt Typkonvertierung"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "Vergleich zwischen Zeiger und Ganzzahl"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "Vergleich von vollständigen und unvollständigen Zeigern"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO-C verbietet geordnete Vergleiche zwischen Zeigern auf Funktionen"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr "geordneter Vergleich von Zeiger mit Null-Zeiger"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "geordneter Vergleich von Zeiger mit Ganzzahlnull"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "implizite Umwandlung von %qT in %qT zur Anpassung an anderen Operanden des Binärausdrucks"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "Feld, das nicht in Zeiger umgewandelt werden kann, anstelle des geforderten Skalars verwendet"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "Wert eines struct-Typs anstelle des geforderten Skalars verwendet"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "Wert eines union-Typs anstelle des geforderten Skalars verwendet"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr "Vektortyp verwendet, wo Skalars benötigt wird"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "%qE hat ungültigen Typ für %<reduction%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE hat ungültigen Typ für %<reduction(%s)%>"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE muss für %<copyin%> %<threadprivate%> sein"
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE ist in Klausel %qs keine Variable"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr "%qE tritt in dieser Datenklausel mehrfach auf"
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "%qE ist in Klausel %<firstprivate%> keine Variable"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "%qE ist in Klausel %<lastprivate%> keine Variable"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qE ist vorbestimmt %qs für %qs"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr "C++ erfordert weitergegebenen Typ, nicht Enum-Typ, in %<va_arg%>"
@@ -15863,7 +15895,7 @@ msgstr "C++ erfordert weitergegebenen Typ, nicht Enum-Typ, in %<va_arg%>"
msgid "function call has aggregate value"
msgstr "Funktionsaufruf hat zusammengesetzten Wert"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "Größe der Variablen %q+D ist zu hoch"
@@ -16673,52 +16705,52 @@ msgstr "%s kann nicht als COFF-Datei geöffnet werden"
msgid "library lib%s not found"
msgstr "Bibliothek lib%s nicht gefunden"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "es kann nicht in Zeigertyp konvertiert werden"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "Zeigerwert verwendet, wo Gleitkommawert erwartet wurde"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "zusammengesetzten Wert verwendet, wo Gleitkomma erwartet wurde"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "Konvertierung in unvollständigen Typen"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr "zwischen Vektorwerten verschiedener Größen kann nicht konvertiert werden"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "zusammengesetzter Wert verwendet, wo Ganzzahl erwartet wurde"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "Zeigerwert verwendet, wo »complex« erwartet wurde"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "zusammengesetzer Wert verwendet, wo »complex« erwartet wurde"
-#: convert.c:965
+#: convert.c:963
#, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "Wert kann nicht in einen Vektor umgewandelt werden"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr "zusammengesetzten Wert verwendet, wo Festkomma erwartet wurde"
@@ -16873,7 +16905,7 @@ msgstr "Herrscher über %d sollte %d sein, nicht %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr "Mehrere EH-Persönlichkeiten werden nur mit Assemblern unterstützt, die die Direktive .cfi_personality unterstützen"
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr "Nicht-Delegitimiertes UNSPEC %s (%d) am Variablenort gefunden"
@@ -16963,42 +16995,42 @@ msgstr "verify_eh_tree gescheitert"
msgid "stack limits not supported on this target"
msgstr "Kellergrenzen nicht für dieses Ziel unterstützt"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr "mehrfacher Zugriff auf »volatile« Strukturelement wegen gepackter Attribute"
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr "mehrfacher Zugriff auf »volatile« Strukturbitfelder wegen gepackter Attribute"
-#: expmed.c:1800
+#: expmed.c:1820
#, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr "falsch ausgerichteter Zugriff für Strukturelement verwendet"
-#: expmed.c:1803
+#: expmed.c:1823
#, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr "falsch ausgerichteter Zugriff für Strukturbitfeld verwendet"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr "wenn ein »volatile«-Objekt über mehrere Bereiche mit Typgröße geht, muss der Compiler wählen zwischen der Verwendung einzelner falsch ausgerichteter Zugriffe um die Volatilität zu erhalten und der Verwendung mehrerer ausgerichteter Zugriffe um Laufzeitfehler zu verhindern. Dies kann zur Laufzeit fehlschlagen, wenn die Hardware diesen Zugriff nicht erlaubt"
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr "lokaler Rahmen nicht verfügbar (nackte Funktion?)"
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%KAufruf von %qs mit Attributfehler deklariert: %s"
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "%KAufruf von %qs mit Attributwarnung deklariert: %s"
@@ -17073,7 +17105,7 @@ msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn »X +-
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr "Annahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn Konstanten um einen Vergleich kombiniert werden"
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "Faltungstest: ursprünglicher Baum durch Faltung geändert"
@@ -17083,7 +17115,7 @@ msgstr "Faltungstest: ursprünglicher Baum durch Faltung geändert"
msgid "total size of local objects too large"
msgstr "Gesamtgröße der lokalen Objekte zu hoch"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "unmögliche Bedingung in »asm«"
@@ -17527,77 +17559,77 @@ msgstr "Bytecode-Strom: unbekannte GIMPLE-Anweisungsmarke %s"
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "GIMPLE-Prüfung: %s(%s) erwartet, haben %s(%s) in %s, bei %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "Ergebnis einer %<void%> zurückgebenden Funktion verwendet"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "ungültiger L-Wert in asm-Ausgabe %d"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr "Eingabe von Nicht-Speicher %d muss im Speicher bleiben"
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "Speichereingabe %d ist nicht direkt adressierbar"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr "threadprivate Variable %qE in unverknüpfter Task verwendet"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr "umgebende Task"
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr "%qE in umgebender Parallele nicht angegeben"
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr "umgebende Parallele"
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr "Schleifenvariable %qE sollte »private« sein"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr "Schleifenvariable %qE sollte nicht »firstprivate« sein"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr "Schleifenvariable %qE sollte nicht Reduktion sein"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr "%s Variable %qE ist im äußeren Kontext »private«"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "Gimplifikation gescheitert"
-#: godump.c:1214
+#: godump.c:1234
#, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "Go-Abzugsdatei konnte nicht geschlossen werden: %m"
-#: godump.c:1226
+#: godump.c:1246
#, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "Go-Abzugsdatei %qs konnte nicht geöffnet werden: %m"
@@ -17652,7 +17684,7 @@ msgstr "Graphite-Schleifenoptimierungen können nicht verwendet werden"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr "IPA-Inline-Zusammenfassung fehlt in Eingabedatei"
@@ -17791,48 +17823,48 @@ msgstr "Variable %qD als Funktion redeklariert"
msgid "function %qD redeclared as variable"
msgstr "Funktion %qD als Variable redeklariert"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "Sperrregion darf nicht in arbeitsteilender, kritischer, geordneter, Master- oder »explicit task«-Region eng geschachtelt sein"
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "arbeitsteilende Region darf nicht in arbeitsteilender, kritischer, geordneter, Master- oder »explicit task«-Region eng geschachtelt sein"
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr "Master-Region darf nicht innerhalb arbeitsteilender oder »explicit task«-Region eng geschachtelt sein"
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr "geordnete Region darf nicht innerhalb kritischer oder »explicit task«-Region eng geschachtelt sein"
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr "geordnete Region muss innerhalb einer Schleifenregion mit geordneter Klausel eng geschachtelt sein"
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr "kritische Region darf nicht innerhalb einer kritischen Region mit gleichem Namen geschachtelt werden"
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr "ungültiger Ausgang von strukturiertem OpenMP-Block"
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr "ungültiger Eintritt in strukturierten OpenMP-Block"
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr "ungültiger Zweig zu/von strukturiertem OpenMP-Block"
@@ -17938,7 +17970,7 @@ msgstr "-freorder-blocks-and-partition funktioniert auf dieser Architektur nicht
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition unterstützt auf dieser Architektur nicht Unwind-Info"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition funktioniert auf dieser Architektur nicht"
@@ -18302,9 +18334,9 @@ msgstr "%qs kann nicht als ein rufverwendetes Register verwendet werden"
msgid "can%'t use %qs as a fixed register"
msgstr "%qs kann nicht als ein festes Register verwendet werden"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "unbekannter Registername: %s"
@@ -18384,12 +18416,12 @@ msgstr "in Klasse %qs konnte kein Register für Überlauf gefunden werden"
msgid "%<asm%> operand requires impossible reload"
msgstr "%<asm%>-Operand erfordert unmögliches Neuladen"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "%<asm%>-Operandenbedingung inkompatibel mit Operandengröße"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "Ausgabeoperand ist in %<asm%> konstant"
@@ -18609,7 +18641,7 @@ msgstr "gepacktes Attribut führt zu ineffizienter Ausrichtung"
msgid "packed attribute is unnecessary"
msgstr "gepacktes Attribut ist unnötig"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "Ausrichtung der Feldelemente ist größer als Elementgröße"
@@ -18824,7 +18856,7 @@ msgstr "ungültige volatile-Verwendung von %qD innerhalb von Transaktion"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr "Funktionsaufruf von %<transaction_may_cancel_outer%> nicht innerhalb von äußerer Transaktion oder %<transaction_may_cancel_outer%>"
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr "unsicherer Funktionsaufruf %qD innerhalb von atomarer Transaktion"
@@ -18839,7 +18871,7 @@ msgstr "unsicherer Funktionsaufruf %qE innerhalb von atomarer Transaktion"
msgid "unsafe indirect function call within atomic transaction"
msgstr "unsicherer indirekter Funktionsaufruf innerhalb von atomarer Transaktion"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr "unsicherer Funktionsaufruf %qD innerhalb von %<transaction_safe%>-Funktion"
@@ -18854,7 +18886,7 @@ msgstr "unsicherer Funktionsaufruf %qE innerhalb von %<transaction_safe%>-Funkti
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr "unsicherer indirekter Funktionsaufruf innerhalb von %<transaction_safe%>-Funktion"
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr "in atomarer Transaktion ist kein asm erlaubt"
@@ -18889,612 +18921,612 @@ msgstr "äußere Transaktion in %<transaction_may_cancel_outer%>-Funktion"
msgid "outer transaction in %<transaction_safe%> function"
msgstr "äußere Transaktion in %<transaction_safe%>-Funktion"
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "%Kasm in %<transaction_safe%>-Funktion ist nicht erlaubt"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "Konstante wird bei ADDR_EXPR-Änderung nicht neu berechnet"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "Seiteneffekte werden bei ADDR_EXPR-Änderung nicht neu berechnet"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr "DECL_GIMPLE_REG_P auf einer Variable mit verwendeter Adresse gesetzt"
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "SSA-Name in Frei-Liste, jedoch immer noch referenziert"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr "INDIRECT_REF in GIMPLE-IL"
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "ungültiger erster Operand von MEM_REF"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "ungültiger Offset-Operand von MEM_REF"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR mit immer falscher Bedingung"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr "MODIFY_EXPR nicht erwartet während es Tupel gibt"
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "Adresse genommen, aber ADDRESSABLE-Bit nicht gesetzt"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr "Nicht-Ganzzahltyp in Bedingung verwendet"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "ungültiger bedingter Operand"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "ungültiger Positions- oder Größenoperand für BIT_FIELD_REF"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr "Präzision des eingebauten Ergebnistypen passt nicht zur Feldgröße des BIT_FIELD_REF"
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr "Betriebsart-Präzision des nicht-eingebauten Ergebnisses passt nicht zur Feldgröße des BIT_FIELD_REF"
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "ungültiger Referenzprefix"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "ungültiger Operand für Plus/Minus, Typ ist ein Zeiger"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "ungültiger Operand für Zeiger-Plus, erster Operand ist kein Zeiger"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr "ungültiger Operand für Zeiger-Plus, zweiter Operand ist kein Ganzzahltyp mit passender Breite"
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr "ungültiges CASE_CHAIN"
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "ungültiger Ausdruck für Min-L-Wert"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "ungültiger Operand in indirekter Referenz"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "ungültige Operanden in Feldreferenz"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "Typ passt nicht in Feldreferenz"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "Typ passt nicht in Feldbereichsreferenz"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "Typ passt nicht in Referenz auf realen/imaginären Anteil "
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "Typ passt nicht in Komponentenreferenz"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr "Umwandlung eines SSA_NAME auf der linken Seite"
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, gcc-internal-format
msgid "conversion of register to a different size"
msgstr "Umwandlung eines Registers auf eine andere Größe"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "ungültiger Adressoperand in MEM_REF"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "ungültiger Offset-Operand in MEM_REF"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr "ungültiger Adressoperand in TARGET_MEM_REF"
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "ungültiger Offset-Operand in TARGET_MEM_REF"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr "Gimple-Aufruf hat zwei Ziele"
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr "Gimple-Aufruf hat kein Ziel"
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "ungültige Funktion in GIMPLE-Aufruf"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr "Nicht-Funktion in GIMPLE-Aufruf"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "ungültiger »pure const«-Status für Funktion"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "ungültige LHS in GIMPLE-Aufruf"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr "LHS in »noreturn«-Aufruf"
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "ungültige Umwandlung in GIMPLE-Aufruf"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr "ungültige statische Kette in GIMPLE-Aufruf"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr "statische Kette in indirektem GIMPLE-Aufruf"
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr "statische Kette mit Funktion, die keine verwendet"
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "ungültiges Argument für GIMPLE-Aufruf"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "ungültige Operanden in GIMPLE-Vergleich"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr "Vergleichsoperandentypen passen nicht"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr "Nicht-Vektoroperanden in Vektorvergleich"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr "ungültiger Ergebnistyp in Vektorvergleich"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr "falscher Ergebnistyp bei Vergleich"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr "Nicht-Register als LHS von unärer Operation"
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "ungültiger Operand in unärer Operation"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "ungültige Typen in NOP-Umwandlung"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "ungültige Typen in Adressraumumwandlung"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "ungültige Typen Festkomma-Umwandlung"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "ungültige Typen in Umwandlung zu Gleitkomma"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "ungültige Typen in Umwandlung in Ganzzahl"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "nicht-triviale Umwandlung in unärer Operation"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr "Nicht-Register als LHS von binärer Operation"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "ungültige Operanden in binärer Operation"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "Typ passt nicht in komplexem Ausdruck"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "Typ passt nicht in Schiebeausdruck"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "Typ passt nicht in Vektorschiebeausdruck"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr "Vektorschieben um Nicht-Elementgröße eines Gleitkommavektors"
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr "Typ passt nicht bei Erweiterung von Vektorschiebeausdruck"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "ungültige Nicht-Vektor-Operanden für vektorwertiges Plus"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "ungültige (Zeiger-) Operanden für Plus/Minus"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "Typ passt nicht in Pointeradditionsausdruck"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "Typ passt nicht in binärem Ausdruck"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr "Nicht-Register als LHS von ternärer Operation"
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "ungültige Operanden in ternärer Operation"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "Typ passt nicht in verbreiterndem Multiplizier-Akkumulier-Ausdruck"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "Typ passt nicht in vereinigtem Multiplizier-Addier-Ausdruck"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr "Typ passt nicht in Vektorpermutationsausdruck"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr "in Vektorpermutationsausdruck werden Vektortypen erwartet"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr "Vektoren unterschiedlicher Elementanzahl in Vektorpermutationsausdruck gefunden"
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr "ungültiger Maskentyp in Vektorpermutationsausdruck"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "nicht-triviale Umwandlung bei Zuweisung"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "ungültiger Operand in unärem Ausdruck"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "Typ passt nicht in Adressausdruck"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr "ungültige RHS für GIMPLE-Speicherung"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "ungültiger Operand in »return«-Anweisung"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "ungültige Umwandlung in »return«-Anweisung"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "Goto-Ziel ist weder eine Marke noch ein Zeiger"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "ungültiger Operand für switch-Anweisung"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr "falscher Eintrag in label_to_block_map"
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr "falsches Setzen von Landefeld-Zahl"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "ungültiger Vergleichscode in GIMPLE-Bedingung"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "Ungültiger Marken in GIMPLE-Bedingung"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, gcc-internal-format
msgid "invalid PHI result"
msgstr "ungültiges PHI-Ergebnis"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, gcc-internal-format
msgid "missing PHI def"
msgstr "Fehlende PHI-Definition"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, gcc-internal-format
msgid "invalid PHI argument"
msgstr "ungültiges PHI-Argument"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "inkompatible Typen in PHI-Argument %u"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr "verify_gimple gescheitert"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr "totes STMT in EH-Tabelle"
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "gimple_bb (phi) wird auf falschen Basisblock gesetzt"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "falscher gemeinsame Verwendung von Baumknoten"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "gimple_bb (stmt) ist auf falschen Basisblock gesetzt"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr "in Anweisung"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "Anweisung für throw markiert, tut es jedoch nicht"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "Anweisung für throw inmitten eines Blockes markiert"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "ENTRY_BLOCK hat zugehörige IL"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr "EXIT_BLOCK hat zugehörige IL"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "Fallthru zum Austritt von bb %d"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "nichtlokale Marke "
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr "EH Landefeld-Marke "
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "Marke "
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "Kontrollfluss inmitten des Basis-Blockes %d"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "Fallthru-Kante hinter einer Kontrollanweisung in bb %d"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "Wahr/Falsch-Kante hinter einer Nicht-GIMPLE_COND in bb %d"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "Falsche ausgehende Kantenmarken am Ende des bb %d"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "Explizites Goto am Ende von bb %d"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "Return-Kante zeigt nicht auf Ausgang in bb %d"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr "Standard-Fall nicht am Anfang des case-Vektors gefunden"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr "Case-Marken nicht sortiert: "
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "Zusätzliche ausgehende Kante %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "Fehlende Kante %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "%<noreturn%>-Funktion kehrt zurück"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "Kontrollfluss erreicht Ende von Nicht-void-Funktion"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "Der Rückgabewert von %qD, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "Rückgabewert der mit dem Attribut warn_unused_result definierten Funktion wird ignoriert"
@@ -19554,72 +19586,72 @@ msgstr "BB %i hat falsche Kante"
msgid "BB %i has incorrect fallthru edge"
msgstr "BB %i hat falsche »fallthru«-Kante"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "Funktion %q+F kann nie kopiert werden, da sie ein nichtlokales »goto« empfängt"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "Funktion %q+F kann nie kopiert werden, da sie die Adresse einer lokalen Marke in statischer Variablen speichert"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "die Funktion %q+F kann nie »inline« sein, da sie alloca verwendet (zum Aufheben: Attribut »always_inline« verwenden)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "die Funktion %q+F kann nie »inline« sein, da sie setjmp verwendet"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "die Funktion %q+F kann nie »inline« sein, da sie eine variable Argumentliste verwendet"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "die Funktion %q+F kann nie »inline« sein, da sie »setjmp-longjmp«-Ausnahmebehandlung verwendet"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "die Funktion %q+F kann nie »inline« sein, da sie ein nichtlokales »goto« enthält"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "die Funktion %q+F kann nie »inline« sein, da sie __builtin_return oder __builtin_apply_args verwendet"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "die Funktion %q+F kann nie »inline« sein, da sie ein berechnetes »goto« enthält"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "Funktion %q+F kann nie inline sein, da dies mit -fno-inline unterdrückt wird"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "Funktion %q+F kann nie inline sein, da sie mit inline in Konflikt stehende Attribute hat"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "»inline« beim Aufruf von always_inline %q+F gescheitert: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "von hier aufgerufen"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "»inline« beim Aufruf von %q+F gescheitert: %s"
@@ -19830,7 +19862,7 @@ msgstr "Anweisung (%p) nach Optimierungsdurchgang als geändert markiert: "
msgid "verify_ssa failed"
msgstr "verify_ssa gescheitert"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, gcc-internal-format
msgid "%qD was declared here"
msgstr "%qD wurde hier deklariert"
@@ -19890,52 +19922,52 @@ msgstr "Vektoroperation wird parallel ausgeweitet"
msgid "vector operation will be expanded with a single scalar operation"
msgstr "Vektoroperation wird mit einzelner skalarer Operation ausgeweitet"
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr "Vektorumverteilungsoperation wird stückweise ausgeweitet"
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "Feldindex ist außerhalb der Feldgrenzen"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "Feldindex ist oberhalb der Feldgrenzen"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "Feldindex ist unterhalb der Feldgrenzen"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr "Annahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn Bedingung zu Konstante vereinfacht wird"
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr "Annahme, dass vorzeichenbehafteter Ãœberlauf bei Vereinfachung der Bedingung nicht auftritt"
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "Vergleich ist durch beschränkten Wertebereich des Datentyps stets »unwahr«"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "Vergleich ist durch beschränkten Wertebereich des Datentyps stets »wahr«"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr "Annahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn %</%> oder %<%%%> auf %<>>%> oder %<&%> vereinfacht wird"
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr "Annahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn %<abs (X)%> auf %<X%> oder %<-X%> vereinfacht wird"
@@ -19945,22 +19977,22 @@ msgstr "Annahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn %<abs
msgid "ignoring attributes applied to %qT after definition"
msgstr "auf %qT nach einer Definition angewandte Attribute werden ignoriert"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D bereits mit Attribut »dllimport« deklariert: »dllimport« ignoriert"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D ohne Attribut »dllimport« redeklariert, nachdem es mit dll-Bindung referenziert wurde"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%qD ohne Attribut »dllimport« redeklariert: vorheriges »dllimport« ignoriert"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -19975,140 +20007,140 @@ msgstr "%qD ohne Attribut »dllimport« redeklariert: vorheriges »dllimport« i
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "Attribut %qE wird ignoriert"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "»inline«-Funktion %q+D ist als »dllimport« deklariert: Attribut ignoriert"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "Funktionsdefinition von %q+D ist als »dllimport« markiert"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "Variablendefinition von %q+D ist als dllimport markiert"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "für Symbol %q+D wird wegen des Attributes %qE externe Bindung benötigt"
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qE impliziert Standardsichtbarkeit, aber %qD wurde bereits mit anderer Sichtbarkeit deklariert"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "Felder von Funktionen sind sinnlos"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "Rückgabetyp der Funktion kann keine Funktion sein"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "Baumprüfung: %s, haben %s in %s, bei %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "Baumprüfung: nichts von %s erwartet, haben %s in %s, bei %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "Baumprüfung: Klasse %qs erwartet, haben %qs (%s) in %s, bei %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "Baumprüfung: Klasse %qs nicht erwartet, haben %qs (%s) in %s, bei %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "Baumprüfung: omp_clause %s erwartet, haben %s in %s, bei %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "Baumprüfung: Baum mit enthaltener Struktur %qs erwartet, haben %qs in %s, bei %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "Baumprüfung: auf Elt %d von tree_vec mit %d Elts in %s bei %s:%d zugegriffen"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "Baumprüfung: auf Operand %d von %s mit %d Operanden in %s bei %s:%d zugegriffen"
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "Baumprüfung: auf Operand %d von omp_clause %s mit %d Operanden in %s bei %s:%d zugegriffen"
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%qD ist veraltet (deklariert bei %s:%d): %s"
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%qD ist veraltet (deklariert bei %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%qE ist veraltet (deklariert bei %s:%d): %s"
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%qE ist veraltet (deklariert bei %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "Typ ist veraltet (deklariert bei %s:%d): %s"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "Typ ist veraltet (deklariert bei %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "%qE ist veraltet: %s"
-#: tree.c:11392
+#: tree.c:11396
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr "%qE ist veraltet"
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "Typ ist veraltet: %s"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "Typ ist veraltet"
@@ -20158,147 +20190,152 @@ msgstr "Obere Größengrenze zur Variablenverfolgung mit -fvar-tracking-assignme
msgid "variable tracking size limit exceeded"
msgstr "Grenze zur Variablenverfolgung überschritten"
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D löst einen Abschnittstypkonflikt aus"
+
+#: varasm.c:322
#, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr "%+D löst einen Abschnittstypkonflikt mit %D aus"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "Ausrichtung von %q+D ist größer als maximale Objektdateiausrichtung. %d verwendet"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "für %q+D wurde kein Registername angegeben"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "ungültiger Registername für %q+D"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "Datentyp von %q+D ist nicht für Register geeignet"
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "für %q+D angegebenes Register kann vom aktuellen Ziel nicht zugegriffen werden"
-#: varasm.c:1215
+#: varasm.c:1221
#, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "für %q+D angegebenes Register ist nicht allgemein genug, um als eine Registervariable verwendet zu werden"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "für %q+D angegebenes Register eignet sich nicht für Datentyp"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "globale Registervariable hat Anfangswert"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "Optimierung kann Lese- und/oder Schreiboperationen auf Registervariablen entfernen"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "Registername für Nicht-Registervariable %q+D angegeben"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "globale Destruktoren werden für dieses Ziel nicht unterstützt"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "globale Konstruktoren werden für dieses Ziel nicht unterstützt"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "Thread-lokale COMMON-Daten nicht implementiert"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "angeforderte Ausrichtung für %q+D ist größer als die implementierte Ausrichtung von %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "Initialisierung für Ganzzahl-/Gleitkommazahlwert ist zu kompliziert"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "Initialisierung für Gleitkommawert ist keine Gleitkommakonstante"
-#: varasm.c:4878
+#: varasm.c:4915
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "ungültiger Anfangswert für Element %qE"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "schwache Deklaration von %q+D muss öffentlich sein"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "schwache Deklaration von %q+D wird nicht unterstützt"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "in dieser Konfiguration werden nur schwache Aliase unterstützt"
-#: varasm.c:5474
+#: varasm.c:5511
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "weakref wird in dieser Konfiguration nicht unterstützt"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "ifunc wird in dieser Konfiguration nicht unterstützt"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D als Alias für undefiniertes Symbol %qE"
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D als Alias für externes Symbol %qE"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "weakref %q+D zielt letztendlich auf sich selbst ab"
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "schwache Referenz %q+D muss statische Bindung haben"
-#: varasm.c:5821
+#: varasm.c:5858
#, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "Alias-Definitionen werden in dieser Konfiguration nicht unterstützt"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "Sichtbarkeitsattribute werden in dieser Konfiguration nicht unterstützt; ignoriert"
@@ -20339,8 +20376,8 @@ msgstr "%qD ist außerhalb des Funktionsgültigkeitsbereiches nicht definiert"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "Zeichenkettenlänge %qd ist größer als die Länge %qd, die von ISO-C%d-Compilern unterstützt werden muss"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "Ãœberlauf in Konstanten-Ausdruck"
@@ -20555,7 +20592,7 @@ msgstr "Zeiger auf Elementfunktion in Arithmetik verwendet"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "Die Adresse von %qD wird immer zu %<wahr%> auswerten"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "Um Zuweisung, die als Wahrheitswert verwendet wird, werden Klammern empfohlen"
@@ -20962,40 +20999,40 @@ msgstr "Attribut %qE ignoriert für %qE"
msgid "invalid vector type for attribute %qE"
msgstr "Ungültiger Vektortyp für Attribut %qE"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "Vektorgröße kein ganzzahliges Vielfaches der Komponentengröße"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "Vektorgröße Null"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "Komponentenanzahl des Vektors ist keine Zweierpotenz"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "Nicht-Null-Attribut ohne Argumente für einen Nicht-Prototyp"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "Nicht-Null-Argument hat ungültige Operandenzahl (Argument %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "Nicht-Null-Argument mit Operandenzahl außerhalb des Wertebereiches (Argument %lu, Operand %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "Nicht-Null-Argument referenziert Nicht-Zeiger-Operanden (Argument %lu, Operand %lu)"
@@ -21035,12 +21072,12 @@ msgstr "Attribut %qE benötigt Prototypen mit benannten Argumenten"
msgid "%qE attribute only applies to variadic functions"
msgstr "Attribut %qE gilt nur für variadische Funktionen"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "Angeforderte Position ist keine Ganzzahlkonstante"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "Angeforderte Position ist kleiner als Null"
@@ -21095,7 +21132,7 @@ msgstr "%<offsetof%> kann nicht angewandt werden, wenn %<operator[]%> überladen
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "%<offsetof%> kann nicht auf nicht-konstante Adresse angewandt werden"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "Versuch, die Adresse des Bitfeldstrukturelements %qD zu ermitteln"
@@ -21822,82 +21859,82 @@ msgid "ignoring #pragma %s %s"
msgstr "#pragma %s %s wird ignoriert"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "verirrtes %<@%> im Programm"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "verirrtes %qs im Programm"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "fehlendes abschließendes Zeichen %c"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "verirrtes %qc im Programm"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "verirrtes %<\\%o%> im Programm"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "diese Dezimalkonstante ist nur in ISO-C90 vorzeichenlos"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "diese Dezimalkonstante wäre in ISO-C90 vorzeichenlos"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "Ganzzahlkonstante ist zu groß für %<unsigned long%>-Typ"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr "Gleitkommakonstante ohne Suffix"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr "nicht unterstützter Nicht-Standard-Suffix an Gleitkommakonstante"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr "Nicht-Standard-Suffix an Gleitkommakonstante"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "Gleitkommakonstante überschreitet Wertebereich von %qT"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "Gleitkommakonstante auf Null abgeschnitten"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr "wiederholtes %<@%> vor Objective-C-Zeichenkette"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr "nicht unterstützte Nicht-Standard-Verkettung von Zeichenkettenliteralen"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "traditionelles C weist Zeichenkettenkonstantenverkettung zurück"
@@ -21917,7 +21954,7 @@ msgstr "%<#pragma omp atomic update%> verwendet zwei unterschiedliche Variablen
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr "%<#pragma omp atomic capture%> verwendet zwei unterschiedliche Variablen für Speicher"
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "ungültiger Typ für Schleifenvariable %qE"
@@ -21927,22 +21964,22 @@ msgstr "ungültiger Typ für Schleifenvariable %qE"
msgid "%qE is not initialized"
msgstr "%qE ist nicht initialisiert"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr "Steuerprädikat fehlt"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "Steuerprädikat ungültig"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr "Erhöhungsausdruck fehlt"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "Erhöhungsausdruck ungültig"
@@ -22790,7 +22827,7 @@ msgstr "L%d Cache-Wartezeit unbekannt für %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "Falscher Wert %qs für -mmemory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -22967,53 +23004,53 @@ msgstr "PCS-Variante"
msgid "Thumb-1 hard-float VFP ABI"
msgstr "Thumb-1 Hardware-Gleitkomma VFP ABI"
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "Attribut %qE bezieht sich nur auf Funktionen"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "Wirkliche Stelle des gestapelten Parameters kann nicht berechnet werden"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, gcc-internal-format
msgid "argument must be a constant"
msgstr "Argument muss eine Konstante sein"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "Wähler muss »immediate« sein"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "Maske muss »immediate« sein"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "keine unteren Register für das Hervorholen der hohen Register verfügbar"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "Interrupt-Dienst-Routinen können nicht im »Thumb«-Modus codiert werden"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr "Zerstörung von %<va_list%> hat sich in GCC 4.4 geändert"
@@ -23028,97 +23065,112 @@ msgstr "initialisierte Variable %q+D ist als »dllimport« markiert"
msgid "static variable %q+D is marked dllimport"
msgstr "statische Variable %q+D ist als »dllimport« markiert"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "Funktionsattribute %qs, %qs und %qs schließen sich gegenseitig aus"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr "Funktionsattribute %qs und %qs haben keine Auswirkung auf Funktion %qs"
+
+#: config/avr/avr.c:573
+#, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr "Funktion %qs kann keine Argumente haben"
+
+#: config/avr/avr.c:576
+#, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr "Funktion %qs kann keinen Wert zurückgeben"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs scheint ein falsch geschriebener Handler für %s zu sein"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr "»builtin_return_address« enthält nur 2 Adressbytes"
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr "Zeigeroffset von Symbol könnte falsch sein"
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr "Zugriff auf Datenspeicher mit Programmspeicheradresse"
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr "Zugriff auf Programmspeicher mit Datenspeicheradresse"
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr "festes Register %s zur Parameterübergabe an Funktion verwendet"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr "Schreibzugriff auf Adressraum %qs wird nicht unterstützt"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs scheint ein falsch geschriebener Interrupt-Handler zu sein"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs scheint ein falsch geschriebener Signal-Handler zu sein"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr "%qT verwendet Adressraum %qs hinter Flash von %qs"
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr "%s %q+D verwendet Adressraum %qs hinter Flash von %qs"
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr "Zeiger auf Adressraum %qs muss in %qT konstant sein"
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr "Zeiger auf Adressraum %qs muss in %s %q+D konstant sein"
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr "Variable %q+D im Adressraum %qs hinter Flash von %qs"
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr "Variable %q+D muss konstant sein, um mit %qs in Nur-Lese-Abschnitt gelegt zu werden"
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "Nur uninitialisierte Variablen können im .noinit-Bereich platziert werden"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr "nicht initialisierte Variable %q+D in Programmspeicherbereich platziert"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU %qs nur für Assemblierung unterstützt"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr "%s erwartet eine Ganzzahlkonstante zur Compile-Zeit"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr "%s erwartet eine Long-Ganzzahlkonstante als erstes Argument zur Compile-Zeit"
@@ -23238,68 +23290,68 @@ msgstr "ungültige Verwendung des Modifizierers »:«"
msgid "internal error: bad register: %d"
msgstr "interner Fehler: falsches Register: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "interner Fehler: Seiteneffekt-Befehl wirkt sich auf Haupteffekt aus"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "Unbekannter Wert für cc_attr"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "interner Fehler: cris_side_effect_mode_ok mit falschen Operanden"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d ist nicht verwendbar, nicht zwischen 0 und %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "unbekannte CRIS-Versionsangabe in -march= oder -mcpu= : %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "unbekannte CRIS-CPU-Versionsangabe in -mtune= : %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC und -fpic werden in dieser Konfiguration nicht unterstützt"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "diese spezielle Option -g ist mit -maout und -melinux ungültig"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, gcc-internal-format
msgid "unknown src"
msgstr "unbekannte Quelle"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, gcc-internal-format
msgid "unknown dest"
msgstr "unbekanntes Ziel"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "Stapelrahmen zu groß: %d Bytes"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "expand_binop in movsi got gescheitert"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr "PIC-Operand wird ausgegeben, aber PIC-Register ist nicht vorbereitet"
@@ -23458,411 +23510,411 @@ msgstr "PCH-Datei kann nicht erweitert werden: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "Position in PCH-Datei kann nicht gesetzt werden: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "Falscher Wert (%s) für %stune=%s %s"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr "%stune=x86-64%s ist veraltet; stattdessen entsprechend %stune=k8%s oder %stune=generic%s verwenden"
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr "-mstringop-strategy=rep_8byte wird für 32-Bit-Code nicht unterstützt"
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "Codemodell %qs wird im %s-Bit-Modus nicht unterstützt"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr "Codemodell %qs wird im x32-Modus nicht unterstützt"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "Codemodell %s unterstützt keinen PIC-Modus"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "-masm=intel wird in dieser Konfiguration nicht unterstützt"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i-Bit-Modus nicht einkompiliert"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "Die ausgewählte CPU unterstützt nicht den x86-64 Befehlssatz"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "generische CPU kann nur für %stune=%s %s verwendet werden"
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr "falscher Wert (%s) für %sarch=%s %s"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr "-mregparm wird im 64-Bit-Modus ignoriert"
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d ist nicht zwischen 0 und %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "%srtd%s wird im 64-Bit-Modus ignoriert"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-mpreferred-stack-boundary wird für dieses Ziel nicht unterstützt"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d ist nicht zwischen %d und %d"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mincoming-stack-boundary=%d ist nicht zwischen %d und 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr "%ssseregparm%s ohne aktiviertes SSE verwendet"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "SSE-Befehlssatz ausgeschaltet, es wird 387-Arithmetik verwendet"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "387-Befehlssatz ausgeschaltet, es wird SSE-Arithmetik verwendet"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "Abwicklungstabellen erfordern derzeit entweder einen Rahmenzeiger oder %saccumulate-outgoing-args%s für Korrektheit"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "Stack-Überprüfung erfordert %saccumulate-outgoing-args%s für Korrektheit"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr "-mfentry wird für 32 Bit in Kombination mit -fpic nicht unterstützt"
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr "-mno-fentry ist nicht mit SEH verträglich"
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "unbekannte Option für -mrecip=%s"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr "attribute(target(\"%s\")) ist unbekannt"
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr "option(\"%s\") wurde bereits spezifiziert"
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "Attribute fastcall und regparm sind nicht verträglich"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr "Attribute regparam und thiscall sind nicht verträglich"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "Attribut %qE benötigt eine Ganzzahlkonstante als Argument"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "Argument für Attribut %qE ist größer als %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "Attribute fastcall und cdecl sind nicht verträglich"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "Attribute fastcall und stdcall sind nicht verträglich"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr "Attribute fastcall und thiscall sind nicht verträglich"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "Attribute stdcall und cdecl sind nicht verträglich"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "Attribute stdcall und fastcall sind nicht verträglich"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr "Attribute stdcall und thiscall sind nicht verträglich"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr "Attribute cdecl und thiscall sind nicht verträglich"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "Attribut %qE wird für für Nicht-Klassen-Methode verwendet"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Aufruf von %qD mit Attribut sseregparam ohne SSE/SSE2 aktiviert"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Aufruf von %qT mit Attribut sseregparam ohne SSE/SSE2 aktiviert"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "ms_hook_prologue ist mit geschachtelter Funktion nicht verträglich"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr "Attribut ms_abi erfordert -maccumulate-outgoing-args oder darauf hinauslaufende Unter-Ziel-Optimierung"
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "AVX-Vektorargument ohne eingeschaltetes AVX ändert das ABI"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr "Das ABI der Struct-Übergabe mit einem flexiblen Feldelement hat sich in GCC 4.4 geändert"
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr "Das ABI der Union-Übergabe mit »long double« hat sich in GCC 4.4 geändert"
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr "Das ABI der Strukturübergabe mit komplexem Gleitkommaelement hat sich in GCC 4.4 geändert"
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "SSE-Registerrückgabe mit SSE ausgeschaltet"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "SSE-Registerargument mit SSE ausgeschaltet"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "x87-Registerrückgabe mit ausgeschaltetem x87"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "SSE-Vektorargument ohne eingeschaltetes SSE ändert das ABI"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "MMX-Vektorargument ohne eingeschaltetes MMX ändert das ABI"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr "Das ABI der Parameterübergabe mit %d-Byte-Ausrichtung hat sich in GCC 4.6 geändert"
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "SSE-Vektorrückgabe ohne eingeschaltetes SSE ändert das ABI"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "MMX-Vektorrückgabe ohne eingeschaltetes MMX ändert das ABI"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr "Attribut ms_hook_prologue ist mit -mfentry für 32 Bit nicht verträglich"
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "-fsplit-stack unterstützt nicht fastcall mit geschachtelter Funktion"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "-fsplit-stack unterstützt nicht 2 Registerparameter für eine geschachtelte Funktion"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "-fsplit-stack unterstützt nicht 3 Registerparameter"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "erweiterte Register haben keine oberen Hälften"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "nicht unterstützte Operandengröße für erweitertes Register"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr "Nicht-Ganzzahl-Operand mit Operandencode »%c« verwendet"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "Das letzte Argument muss ein 2-Bit-Immediate sein"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "fünftes Argument muss ein 8-Bit-Immediate sein"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "drittes Argument muss ein 8-Bit-Immediate sein"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "Das letzte Argument muss ein 1-Bit-Immediate sein"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "Das letzte Argument muss ein 4-Bit-Immediate sein"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "Das letzte Argument muss ein 1-Bit-Immediate sein"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "Das letzte Argument muss ein 5-Bit-Immediate sein"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "Das vorletzte Argument muss ein 8-Bit-Immediate sein"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "Das letzte Argument muss ein 8-Bit-Immediate sein"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "Das letzte Argument muss ein 32-Bit-Immediate sein"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "Selektor eine Ganzzahlkonstante im Bereich 0..%wi sein"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr "%qE erfordert unbekannte ISA-Option"
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr "%qE erfordert ISA-Option %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "das letzte Argument muss ein Immediate sein"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "letztes Argument muss Skalierung 1, 2, 4, 8 sein"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "Attribut %qE nur für 32 Bit verfügbar"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "Argument des Attributes %qE ist weder Null noch Eins"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "Attribute ms_abi und sysv_abi sind nicht verträglich"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "%qE-inkompatibles Attribut wird ignoriert"
@@ -23932,19 +23984,19 @@ msgstr "Adressbereichsattribut kann nicht für Funktionen angegeben werden"
msgid "%qE attribute requires a string constant argument"
msgstr "Attribut %qE erfordert eine Zeichenkettenkonstante als Argument"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "Wert von -mfixed-range muss die Form REG1-REG2 haben"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s ist ein leerer Bereich"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr "Versionsattribut ist keine Zeichenkette"
@@ -24010,7 +24062,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "Attribut %qE wird für Ziel R8C nicht unterstützt"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "Attributargument %qE ist keine Ganzzahlkonstante"
@@ -24065,7 +24117,7 @@ msgstr "mehrere Interruptattribute sind nicht erlaubt"
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread ist nur auf Fido verfügbar"
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "Ausdruck der Stapelgrenze wird nicht unterstützt"
@@ -24584,27 +24636,27 @@ msgstr "MMIX-intern: %s ist kein schiebbares int"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr "-mtune= erwartet mn10300, am33, am33-2, oder am34"
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "PIC-Codeerzeugung wird im portierbaren Laufzeitmodell nicht unterstützt"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "PIC-Codeerzeugung ist mit schnellen indirekten Aufrufen unverträglich"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g wird nur bei der Verwendung von GAS auf diesem Prozessor unterstützt"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "Option -g ausgeschaltet"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr "Ausrichtung (%u) für %s überschreitet maximale Ausrichtung für gobale gemeinsame Daten. Es wird %u verwendet"
@@ -25029,82 +25081,82 @@ msgstr "interner Fehler: eingebaute Funktion %s hatte unerwarteten Rückgabetyp
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr "interner Fehler: Eingebaute Funktion %s, Argument %d hatte unerwarteten Argumenttypen %s"
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "Stapelrahmen zu groß"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "kein Profiling von 64-bit-Code für dieses ABI"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr "Bei Verwendung der Option -mno-pointers-to-nested-functions kann nicht die Adresse einer geschachtelten Funktion verwendet werden."
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "Verwendung von %<long double%> in AltiVec-Typen ist ungültig"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "Verwendung boolescher Typen in AltiVec-Typen ist ungültig"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "Verwendung von %<complex%> in AltiVec-Typen ist ungültig"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "Verwendung dezimaler Gleitkommatypen in AltiVec-Typen ist ungültig"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "Verwendung von %<long%> in AltiVec-Typen ist für 64-Bit-Code ohne -mvsx ungültig"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "Verwendung von %<long%> in AltiVec-Typen ist veraltet; %<int%> verwenden"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "Verwendung von %<long long%> in AltiVec-Typen ist ohne -mvsx ungültig"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "Verwendung von %<double%> in AltiVec-Typen ist ohne -mvsx ungültig"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr "Ausgabe der Mikrocode-Anweisung %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr "Ausgabe der bedingten Mikrocode-Anweisung %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "ungültige CPU »%s« für %s\"%s\"%s"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr "%s\"%s\"%s ist nicht erlaubt"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr "%s\"%s\"%s ist ungültig"
@@ -25158,12 +25210,12 @@ msgstr "E500 und FPRs werden nicht unterstützt"
msgid "-m64 not supported in this configuration"
msgstr "-m64 wird in dieser Konfiguration nicht unterstützt"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 benötigt eine PowerPC64-CPU"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr "-mcmodel unverträglich mit anderen TOC-Optionen"
@@ -25180,64 +25232,64 @@ msgstr "-mcmodel unverträglich mit anderen TOC-Optionen"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET nicht unterstützt"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "Falscher Wert für -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "Falscher Wert für -msdata=%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable und -msdata=%s sind unverträglich"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s und -msdata=%s sind unverträglich"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s und -mcall-%s sind unverträglich"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable und -mno-minimal-toc sind unverträglich"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable und -mcall-%s sind unverträglich"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC und -mcall-%s sind unverträglich"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc muss »big endian« sein"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-msecure-plt wird vom Assembler nicht unterstützt"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s wird in dieser Konfiguration nicht unterstützt"
@@ -25347,53 +25399,53 @@ msgstr "-fschedule-insns wird wegen Ausnahmebehandlungsfehler ignoriert"
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "Abwicklungstabellen erfordern derzeit entweder einen Rahmenzeiger oder -maccumulate-outgoing-args für Korrektheit"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs wird für dieses Teilziel nicht unterstützt"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "Attribut %qE bezieht sich nur auf Interruptfunktionen"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "Attribut %qE wird nur auf SH2A unterstützt"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "Attribut interrupt_handler ist mit -m5-compact unverträglich"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "Attribut %qE gilt nur für SH2A"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "Argument des Attributs %qE sollte zwischen 0 und 255 sein"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "Argument des Attributs %qE ist keine Zeichenkettenkonstante"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 muss als aufrufzerstörtes Register verfügbar sein"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr "ein zweites aufrufzerstörtes Mehrzweckregister wird benötigt"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr "aufrufzerstörtes Zielregister erforderlich"
@@ -25735,38 +25787,38 @@ msgstr "%<-gnat%> falsch buchstabiert als %<-gant%>"
msgid "-fexcess-precision=standard for Ada"
msgstr "-fexcess-precision=standard für Ada"
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "Attribut %qs wird ignoriert"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "Attribut %qs benötigt Prototypen mit benannten Argumenten"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "Attribut %qs gilt nur für variadische Funktionen"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "Attribut %qE hat keinen Effekt"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "ungültiger Vektortyp für Attribut %qs"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "Attribut %qs bezieht sich nur auf Feldtypen"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "ungültiger Elementtyp für Attribut %qs"
@@ -25782,7 +25834,7 @@ msgstr " keine bekannte Umwandlung für impliziten %<this%>-Parameter von %qT n
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " keine bekannte Umwandlung für Argument %d von %qT nach %qT"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26067,7 +26119,7 @@ msgstr "ungültige benutzerdefinierte Umwandlung von %qT in %qT"
msgid "invalid conversion from %qT to %qT"
msgstr "ungültige Umwandlung von %qT in %qT"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " Argument %P von %qD wird initialisiert"
@@ -26077,188 +26129,188 @@ msgstr " Argument %P von %qD wird initialisiert"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr "Umwandlung in %qT von Initialisierungsliste würde expliziten Konstruktor %qD verwenden"
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr " Argument %P von %q+D wird initialisiert"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "L-Wert %qT kann nicht mit %qT verbunden werden"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "das Bitfeld %qE kann nicht mit %qT verbunden werden"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "das gepackte Feld %qE kann nicht mit %qT verbunden werden"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "der R-Wert %qE kann nicht mit %qT verbunden werden"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "enum %qT mit Gültigkeitsbereich wird in zukünftigen GCC-Versionen nicht auf Ganzzahltyp erweitert"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "Objekte des nicht trivial kopierbaren Typs %q#T können nicht über %<...%> übergeben werden"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "Objekte des nicht trivial kopierbaren Typs %q#T können nicht über %<...%> empfangen werden; "
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "rekursive Auswertung des Standardarguments für %q#D"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "Aufruf von %qD verwendet das Standardargument für Parameter %P, der noch nicht definiert wurde"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "Argument des Funktionsaufrufs könnte Kandidat für Formatattribut sein"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "Die Ãœbergabe von %qT als %<this%>-Argument von %q#D streicht Qualifizierer"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT ist keine erreichbare Basis von %qT"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "%qT ermittelt als %qT"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, gcc-internal-format
msgid " in call to %q+D"
msgstr " in Aufruf von %q+D"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr " (dies kann mit -fno-deduce-init-list abgeschaltet werden)"
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "class$-Feld konnte nicht im Java-Schnittstellentyp %qT gefunden werden"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "Aufruf der Nicht-Funktion %qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr "Konstruktor %<%T::%D%> kann nicht direkt aufgerufen werden"
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr " für Umwandlung im Funktions-Stil muss das überflüssige %<::%D%> entfernt werden"
-#: cp/call.c:7251
+#: cp/call.c:7261
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "keine passende Funktion für Aufruf von %<%T::operator %T(%A)%#V%>"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "keine passende Funktion für Aufruf von %<%T::%s(%A)%#V%>"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "Aufruf des überladenen %<%s(%A)%> ist mehrdeutig"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "Elementfunktion %qD kann nicht ohne Objekt aufgerufen werden"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "Übergabe von %qT wählt %qT statt %qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " in Aufruf von %qD"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "Wahl von %qD statt %qD"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " für Umwandlung von %qT in %qT"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " denn die Umwandlungsfolge für das Argument ist besser"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "Zuordnungsfehler der Standardargumente in Überladungsauflösung"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr " Kandidat 1: %q+#F"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr " Kandidat 2: %q+#F"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++ besagt, dass diese mehrdeutig sind, auch wenn die schlechteste Umwandlung für das erste besser ist als die schlechteste Umwandlung für das zweite:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr "%qE konnte nicht von %qT nach %qT umgewandelt werden"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr "eine vorübergehende Bindung an %qD besteht nur, bis der Konstruktor beendet ist"
-#: cp/call.c:8730
+#: cp/call.c:8745
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "ungültige Initialisierung einer nicht-konstanten Referenz des Typs %qT von R-Wert des Typs %qT"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "ungültige Initialisierung einer Referenz des Typs %qT von Ausdruck des Typs %qT"
@@ -26469,219 +26521,219 @@ msgstr "Feld %q+D deklarierte ungültigerweise einen Funktionstypen"
msgid "field %q+D invalidly declared method type"
msgstr "Feld %q+D deklarierte ungültigerweise einen Methodentypen"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "»gepackt«-Attribut für ungepacktes nicht-POD-Feld %q+#D wird ignoriert"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "Feld %q+#D mit gleichem Namen wie Klasse"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T hat Zeigertypen als Elemente"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " aber überschreibt nicht %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " oder %<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " aber überschreibt nicht %<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "Versatz der leeren Basis %qT könnte ABI-unverträglich sein und sich in zukünftigen GCC-Versionen ändern"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "Klasse %qT wird in zukünftigen GCC-Versionen als annähernd leer betrachtet werden"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "Initialisierung für nicht-virtuelle Methode %q+D angegeben"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr "Methode überschreibt Methoden %<transaction_pure%> und %qE"
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr "als %qE deklarierte Methode überschreibt Methode %qE"
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "umschließende Klasse der nicht-statischen Elementfunktion %q+#D als konstanter Ausdruck ist kein Literaltyp"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr "%q+T ist kein Literal, denn: "
-#: cp/class.c:4903
+#: cp/class.c:4904
#, gcc-internal-format
msgid " %q+T has a non-trivial destructor"
msgstr " %q+T hat einen nicht-trivialen Destruktor"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr " %q+T ist kein Aggregat, hat keinen trivialen Standardkonstruktor und hat keinen Konstruktor mit konstantem Ausdruck, der kein Kopier- oder Bewegungskonstruktor ist"
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr " Basisklasse %qT von %q+T ist kein Literal"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr " nicht-statisches Datenelement %q+D hat nicht-literalen Typ"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "nicht-statische Referenz %q+#D in Klasse ohne Konstruktor"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "nicht-statisches const-Element %q+#D in Klasse ohne einen Konstruktor"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr "%q+D mit Eingabe einer konstanten Referenz deklariert, aber implizite Deklaration würde nicht-Konstante annehmen"
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr "mit Eingabe einer nicht konstanten Referenz deklariertes %q+D kann im Klassenkörper nicht vorbelegt werden"
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "Versatz der virtuellen Basis %qT ist ABI-unverträglich und kann sich in zukünftigen GCC-Versionen ändern"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "direkte Basis %qT ist in %qT durch Mehrdeutigkeit unzugänglich"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "virtuelle Basis %qT ist in %qT durch Mehrdeutigkeit unzugänglich"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "%qT zugewiesene Größe könnte ABI-unverträglich sein und sich in zukünftigen GCC-Versionen ändern"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "der Versatz von %qD könnte ABI-unverträglich sein und sich in einer zukünftigen GCC-Version ändern"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "Versatz von %q+D ist ABI-unverträglich und kann sich in zukünftigen GCC-Versionen ändern"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D enthält leere Klassen, die in zukünftigen GCC-Versionen die Basisklassen an andere Orte verschieben können"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "die Anordnung der von der leeren Klasse %qT abgeleiteten Klassen könnte sich in zukünftigen GCC-Versionen ändern"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "Redefinition von %q#T"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T hat virtuelle Funktionen und erreichbaren nicht-virtuellen Destruktor"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr "typtransparente Klasse %qT hat keine Felder"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr "typtransparente Klasse %qT hat Basisklassen"
-#: cp/class.c:6149
+#: cp/class.c:6150
#, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr "typtransparente Klasse %qT hat virtuelle Funktionen"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "Lesen der struct konnte wegen Syntaxfehlern nicht beendet werden"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "Sprachen-Zeichenkette %<\"%E\"%> nicht erkannt"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "überladene Funktion %qD konnte nicht durch Umwandlung in Typ %qT aufgelöst werden"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "bei der Umwandlung der Funktion %qD in den Typ %q#T gab es keine Ãœbereinstimmungen"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "Umwandung der überladenen Funktion %qD in den Typ %q#T ist mehrdeutig"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "Zeiger auf Element %qD wird angenommen"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(ein Zeiger auf ein Element kann nur mit %<»&%E%> erzeugt werden)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "zu wenig Typinformationen"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "%qE kann nicht vom Typ %qT in den Typ %qT umgewandelt werden"
@@ -26691,12 +26743,12 @@ msgstr "%qE kann nicht vom Typ %qT in den Typ %qT umgewandelt werden"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "Deklaration von %q#D"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "verändert die Bedeutung von %qD von %q+#D"
@@ -26716,7 +26768,7 @@ msgstr "unvollständiger Typ %qT kann nicht nach %qT umgewandelt werden"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "Umwandlung von %qE von %qT nach %qT ist mehrdeutig"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "Null als Null-Zeigerkonstante"
@@ -26746,7 +26798,7 @@ msgstr "Umwandlung in nicht-konstanten Referenztyp %q#T von R-Wert des Typs %qT"
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "Umwandlung von %qT in %qT löscht Qualifizierer"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "Umwandlung von %qT in %qT dereferenziert nicht den Zeiger"
@@ -27152,7 +27204,7 @@ msgstr "vorherige Deklaration von %q+#D"
msgid "declaration of template %q#D"
msgstr "Deklaration des Templates %q#D"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "steht mit vorheriger Deklaration %q+#D in Konflikt"
@@ -27204,7 +27256,7 @@ msgstr "vorherige Deklaration von namespace %q+D hier"
msgid "%q+#D previously defined here"
msgstr "%q+#D wurde vorher hier definiert"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "%q+#D wurde bereits hier deklariert"
@@ -27322,7 +27374,7 @@ msgstr "Thread-lokale Deklaration von %q#D folgt nicht-Thread-lokaler Deklaratio
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "Nicht-Thread-lokale Deklaration von %q#D folgt Thread-lokaler Deklaration"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "Redeklaration von %q#D"
@@ -27393,7 +27445,7 @@ msgstr "Marke wurde wchar_t genannt"
msgid "%qD is not a type"
msgstr "%qD ist kein Typ"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "%qD ohne Template-Parameter verwendet"
@@ -27523,123 +27575,123 @@ msgstr "%<typedef%> wurde in dieser Deklaration ignoriert"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<constexpr%> kann nicht für Typdeklarationen verwendet werden"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr "Attribut in Deklaration von %q#T ignoriert"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "Attribut für %q#T muss dem Schlüsselwort %qs folgen"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "auf Klassentyp %qT angewandte Attribute außerhalb einer Definition werden ignoriert"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr "auf abhängigen Typ %qT angewandte Attribute ohne zugehörige Deklaration werden ignoriert"
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD ist initialisiert (stattdessen decltype verwenden)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "Deklaration von %q#D hat %<extern%> und ist initialisiert"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "Definition von %q#D ist als »dllimport« markiert"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D ist kein statisches Element von %q#T"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO-C++ erlaubt nicht, %<%T::%D%> als %<%T::%D%> zu definieren"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "Template-Header in Elementdefinition einer explizit spezialisierten Klasse nicht erlaubt"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "doppelte Initialisierung von %qD"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr "%qD außerhalb seiner Klasse als %<constexpr%> deklariert"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "Deklaration von %q#D außerhalb einer Klasse ist keine Definition"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "Variable %q#D hat Initialisierung, aber unvollständigen Typ"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "Elemente des Feldes %q#D haben unvollständigen Typ"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "Deklaration von %q#D hat keine Initialisierung"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "Aggregat %q#D hat unvollständigen Typ und kann nicht definiert werden"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD als Referenz deklariert, aber nicht initialisiert"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr "Name in benannter Initialisierung im GNU-Stil für ein Feld verwendet"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "nicht-trivial markierte Initialisierungen nicht unterstützt"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "Name %qD in benannter Initialisierung im GNU-Stil für ein Feld verwendet"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "Initialisierung gibt nicht die Größe von %qD an"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "Feldgröße fehlt in %qD"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "Feld %qD der Größe null"
@@ -27647,389 +27699,389 @@ msgstr "Feld %qD der Größe null"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "Speichergröße von %qD ist unbekannt"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "Speichergröße von %qD ist nicht konstant"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "Entschuldigung: Semantik der statischen Daten %q+#D der inline-Funktion ist falsch (mehrere Kopien wären die Folge)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr " dies kann durch das Löschen der Initialisierung umgangen werden"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "nicht initialisiertes const %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "%q#T hat keinen benutzerdefinierten Default-Konstruktor"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr "Konstruktor ist nicht benutzerdefiniert, da er im Klassenkörper ausdrücklich standardisiert ist"
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr "und der implizit definierte Konstruktor initialisiert nicht %q+#D"
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "Ungültiger Typ %qT als Initialisierung für einen Vektor des Typs %qT"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "Initialisierung für %qT muss geklammert sein"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "%<[%E] =%> in benannter Initialisierung im GNU-Stil für Klasse %qT verwendet"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT hat kein nicht-statisches Datenelement namens %qD"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr "C99-Bezeichner %qE außerhalb von Aggregatinitialisierung"
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "zu viele Initialisierer für %qT"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "geschweifte Klammern um skalare Initialisierung für Typ %qT"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "geschweifte Klammern fehlen um Initialisierung für %qT"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "Elemente des Feldes %q#T haben unvollständigen Typ"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "Objekt %qD variabler Größe kann nicht initialisiert werden"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "zusammengesetztes Literal variabler Größe"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr "%q#D hat unvollständigen Typ"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "skalares Objekt %qD erfordert ein Element in Initialisierung"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "in C++98 muss %qD mit Konstruktor initialisiert werden, nicht mit %<{...}%>"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "Feld %qD mit geklammerter Zeichenkettenkonstante %qE initialisiert"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "Initialisierung ungültig für statisches Element mit Konstruktor"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "Initialisierung des nicht konstanten statischen Elements %qD in der Klasse ist ungültig"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(eine Initialisierung außerhalb der Klasse ist erforderlich)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "Zuweisung (nicht Initialisierung) in Deklaration"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "vorherige Typdeklaration von %q#D wird überschattet"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD kann nicht Thread-lokal sein, weil es nichttrivialen Typen %qT hat"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr "Java-Objekt %qD nicht mit %<new%> reserviert"
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD ist Thread-lokal und kann damit nicht dynamisch initialisiert werden"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qD kann bei der Deklaration nicht von nicht konstantem Ausdruck initialisiert werden"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr "nicht-statisches Datenelement %qD hat Java-Klassentyp"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "Funktion %q#D ist wie eine Variable initialisiert"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr "Initialisierung gibt nicht die Größe von %qT an"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, gcc-internal-format
msgid "array size missing in %qT"
msgstr "Feldgröße fehlt in %qT"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, gcc-internal-format
msgid "zero-size array %qT"
msgstr "Feld %qT der Größe null"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "Destruktor für fremde Klasse %qT kann kein Element sein"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "Konstruktor für fremde Klasse %qT kann kein Element sein"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD als eine %<virtual%> Variable deklariert"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD als eine %<inline%> Variable deklariert"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "Funktionsspezifizierer %<const%> und %<volatile%> an %qD ungültig in Variablendeklaration"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD als ein %<virtual%> Parameter deklariert"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD als ein %<inline%> Parameter deklariert"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "Funktionsspezifizierer %<const%> und %<volatile%> an %qD ungültig in Parameterdeklaration"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD als ein %<virtual%> Typ deklariert"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "%qD als ein %<inline%> Typ deklariert"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "Funktionsspezifizierer %<const%> und %<volatile%> an %qD ungültig in Typdeklaration"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD als ein %<virtual%> Feld deklariert"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "%qD als ein %<inline%> Feld deklariert"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "Funktionsspezifizierer %<const%> und %<volatile%> an %qD ungültig in Felddeklaration"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D als »friend« deklariert"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D mit einer Ausnahmespezifikation deklariert"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "Deklaration von %qD ist nicht in einem Namensbereich um %qT"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "statische Elementfunktion %q#D mit Typqualifizierern deklariert"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "Definition der expliziten Spezialisierung %qD in friend-Deklaration"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "ungültige Verwendung der Template-ID %qD in Deklaration des ursprünglichen Templates"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "Standardargumente sind nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "%<inline%> ist nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "%<::main%> kann nicht als Template deklariert werden"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "%<::main%> kann nicht inline deklariert werden"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "%<::main%> kann nicht statisch deklariert werden"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr "anonymer Typ ohne Bindung verwendet, um Funktion %q#D mit Bindung zu deklarieren"
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D verweist nicht auf den unqualifizierten Typen, also wird es nicht zum Binden verwendet"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "Typ %qT ohne Bindung für Funktionsdeklaration %q#D mit Bindung deklariert"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "statische Elementfunktion %qD kann nicht CV-Qualifizierer haben"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "Nicht-Elementfunktion %qD kann nicht CV-Qualifizierer haben"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr "literaler Operator mit C-Bindung"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "%qD hat ungültige Argumentliste"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr "Ganzzahl-Suffix %<%s%> durch Implementierung überdeckt"
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr "Gleitkomma-Suffix %<%s%> durch Implementierung überdeckt"
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr "%qD muss eine Nicht-Elementfunktion sein"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> muss %<int%> zurückgeben"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "Definition des implizit deklarierten %qD"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr "Definition des explizit standardisierten %q+D"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D wurde ausdrücklich hier standardisiert"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "keine Elementfunktion %q#D in Klasse %qT deklariert"
@@ -28038,889 +28090,889 @@ msgstr "keine Elementfunktion %q#D in Klasse %qT deklariert"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr "anonymer Typ ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarieren"
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr "Typ %qT ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarieren"
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit unvollständigem Typ"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "%<constexpr%> erforderlich für Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "ungültige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen %qT"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO-C++ verbietet Initialisierung des nicht konstanten statischen Elements %qD in der Klasse"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO-C++ verbietet Initialisierung der Elementkonstante %qD vom nicht eingebauten Typen %qT"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "Feldgröße von %qD hat nicht-ganzzahligen Typen %qT"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "Feldgröße hat nicht-ganzzahligen Typen %qT"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "Größe des Feldes %qD ist negativ"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "Größe des Feldes ist negativ"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO-C++ verbietet Feld %qD der Größe null"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO-C++ verbietet Feld der Größe null"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "Größe des Feldes %qD ist kein konstanter Ganzzahlausdruck"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "Größe des Feldes ist kein konstanter Ganzzahlausdruck"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO-C++ verbietet Feld %qD variabler Länge"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO-C++ verbietet Feld variabler Länge"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr "Feld %qD variabler Länge wird verwendet"
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "Überlauf in Feldgröße"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr "Deklaration von %qD als Feld von %<auto%>"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "Deklaration von %qD als Feld von voids"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, gcc-internal-format
msgid "creating array of void"
msgstr "Feld von void wird erzeugt"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "Deklaration von %qD als Feld von Funktionen"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, gcc-internal-format
msgid "creating array of functions"
msgstr "Feld von Funktionen wird erzeugt"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "Deklaration von %qD als Feld von Referenzen"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, gcc-internal-format
msgid "creating array of references"
msgstr "Feld von Referenzen wird erzeugt"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "Deklaration von %qD als Feld von Funktionselementen"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, gcc-internal-format
msgid "creating array of function members"
msgstr "Feld von Funktionselementen wird erzeugt"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "Deklaration von %qD als multidimensionales Feld muss für alle Dimensionen außer der ersten Grenzen haben"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "multidimensionales Feld muss für alle Dimensionen außer der ersten Grenzen haben"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "Angabe des Rückgabetyps für Konstruktor ist ungültig"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "Angabe des Rückgabetyps für Destruktor ist ungültig"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "Rückgabetyp für %<operator %T%> angegeben"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "unbenannte Variable oder Feld als »void« deklariert"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "Variable oder Feld als »void« deklariert"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "ungültige Verwendung des qualifizierten Namens %<::%D%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "ungültige Verwendung des qualifizierten Namens %<%T::%D%>"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "ungültige Verwendung des qualifizierten Namens %<%D::%D%>"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%q#T ist keine Klasse oder Namensbereich"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "Typ %qT ist nicht vom Typ %qT abgeleitet"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "Deklaration von %qD als Nicht-Funktion"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "Deklaration von %qD als Nicht-Element"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "Deklarator-ID fehlt: reserviertes Wort %qD wird verwendet"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "Funktionsdefinition deklariert keine Parameter"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "Deklaration von %qD als %<typedef%>"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr "Deklaration von %qD als Parameter"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%<constexpr%> kann nicht in typedef-Deklaration auftreten"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "zwei oder mehr Datentypen in Deklaration von %qs"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "in Konflikt stehende Spezifikationen für Deklaration von %qs"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO-C++ verbietet Deklaration von %qs ohne Typ"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "%<__int128%> wird von diesem Ziel nicht unterstützt"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO-C++ unterstützt nicht %<__int128%> for %qs"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%<signed%> oder %<unsigned%> ungültig für %qs"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%<signed%> und %<unsigned%> für %qs gleichzeitig angegeben"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long%> ungültig für %qs"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "%<long%> ungültig für %qs"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "%<short%> ungültig für %qs"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%> oder %<short%> ungültig für %qs"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%>, %<int%>, %<short%> oder %<char%> ungültig für %qs"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "%<long%> oder %<short%> mit »char« für %qs angegeben"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%<long%> und %<short%> für %qs gleichzeitig angegeben"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<short%> oder %<long%> ungültig für %qs"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "long, short, signed oder unsigned ungültig verwendet für %qs"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "complex ungültig für %qs"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "Qualifizierer sind bei Deklaration von %<operator %T%> nicht erlaubt"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "Element %qD kann nicht gleichzeitig virtuell und statisch deklariert werden"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> ist kein gültiger Deklarator"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "»typedef«-Deklaration in Parameterdeklaration ungültig"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "Speicherklasse für Template-Parameter %qs angegeben"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "Speicherklassenangaben sind in Parameterdeklarationen ungültig"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "ein Parameter kann nicht als %<constexpr%> deklariert sein"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "%<virtual%> außerhalb einer Klassendeklaration"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "mehrere Speicherklassen in Deklaration von %qs"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "Speicherklasse %qs angegeben"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "Speicherklasse für Parameter %qs angegeben"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "geschachtelte Funktion %qs als %<extern%> deklariert"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "Deklaration höchster Ebene von %qs gibt %<auto%> an"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "Funktions-Gültigkeitsbereich %qs ist implizit auto und deklarierte %<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "Speicherklassenangaben sind in friend-Funktionsdeklarationen ungültig"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs als Funktion, die eine Funktion zurückgibt, deklariert"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs als Funktion, die ein Feld zurückgibt, deklariert"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr "Funktion %qs verwendet Typspezifikation %<auto%> ohne folgenden Rückgabetypen"
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr "Funktion %qs mit folgendem Rückgabetypen hat %qT als seinen Typ statt einfaches %<auto%>"
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr "folgender Rückgabetyp nur mit -std=c++11 oder -std=gnu++11 verfügbar"
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr "Funktion %qs mit folgendem Rückgabetypen nicht mit Typspezifikation %<auto%> deklariert"
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "Destruktor kann keine statische Elementfunktion sein"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "Konstruktor kann keine statische Elementfunktion sein"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "Destruktoren dürfen nicht CV-qualifiziert sein"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "Konstruktoren dürfen nicht CV-qualifiziert sein"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "Konstruktoren können nicht als virtuell deklariert werden"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "friend-Funktion %qs kann nicht initialisiert werden"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "virtuelle Funktionen können keine friends sein"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "friend-Deklaration nicht in Klassendefinition"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr "friend-Funktion %qs kann nicht in einer lokalen Klassendefinition definiert werden"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "Destruktoren dürfen keine Parameter haben"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "Zeiger auf %q#T kann nicht deklariert werden"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "Referenz auf %q#T kann nicht deklariert werden"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "Zeiger auf Element %q#T kann nicht deklariert werden"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "Referenz auf qualifizierten Funktionstypen %qT kann nicht deklariert werden"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "Zeiger auf qualifizierten Funktionstypen %qT kann nicht deklariert werden"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr "Referenz auf %q#T kann nicht deklariert werden, da letzteres weder Typedef noch Templatetyp-Argument ist"
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr "%<const%> und %<constexpr%> können hier nicht zusammen verwendet werden"
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr " %<volatile%> und %<constexpr%> können hier nicht zusammen verwendet werden"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "Template-ID %qD als Deklarator verwendet"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "Elementfunktionen sind implizite »friends« ihrer Klasse"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "zusätzliche Qualifizierung %<%T::%> an Element %qs"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "Elementfunktion %<%T::%s%> innerhalb von %<%T%> kann nicht definiert werden"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "Elementfunktion %<%T::%s%> kann nicht in %<%T%> deklariert werden"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "Element %<%T::%s%> kann nicht in %qT deklariert werden"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "Nicht-Parameter %qs kann kein Parameterpack sein"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "Feldgröße von %qs ist zu groß"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "Datenelement darf nicht variabel modifizierten Typ %qT haben"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "Parameter darf nicht variabel modifizierten Typ %qT haben"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "nur Deklarationen von Konstruktoren können %<explicit%> sein"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "Nicht-Element %qs kann nicht als %<mutable%> deklariert sein"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "Nicht-Objekt-Element %qs kann nicht als %<mutable%> deklariert sein"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "Funktion %qs kann nicht als %<mutable%> deklariert sein"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "statisches %qs kann nicht als %<mutable%> deklariert sein"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "Konstante %qs kann nicht als %<mutable%> deklariert sein"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "Referenz %qs kann nicht als %<mutable%> deklariert sein"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr "»typedef« als %<auto%> deklariert"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr "typedef-Name darf kein Spezifizierer mit geschachteltem Namen sein"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO-C++ verbietet geschachtelten Typen %qD mit gleichem Namen wie umschließende Klasse"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "qualifizierte Funktionstypen können nicht verwendet werden, um statische Elementfunktionen zu deklarieren"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "qualifizierte Funktionstypen können nicht verwendet werden, um free-Funktionen zu deklarieren"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "Typkennzeichner für friend-Klassen-Deklaration angegeben"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "%<inline%> für friend-Klassen-Deklaration angegeben"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "Template-Parameter können keine »friends« sein"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "friend-Deklaration erfordert Klassenschlüssel, d.h. %<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "friend-Deklaration erfordert Klassenschlüssel, d.h. %<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "Versuch, die Klasse %qT zu einem »friend« des globalen Gültigkeitsbereiches zu machen"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "ungültige Qualifizierer an Nicht-Element-Funktionstyp"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "abstrakter Deklarator %qT als Deklaration verwendet"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "%<::%> kann nicht in Parameterdeklaration verwendet werden"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "Parameter als %<auto%> deklariert"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "nicht-statisches Datenelement als %<auto%> deklariert"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "ungültige Verwendung von %<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "Deklaration der Funktion %qD in ungültigem Kontext"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "Funktion %qD als virtuell innerhalb einer Union deklariert"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD kann nicht als virtuell deklariert werden, da es immer statisch ist"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "Qualifizierten Namen in Friend-Deklaration für Destruktor %qD erwartet"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "Deklaration von %qD als Element %qT"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr "Destruktor kann nicht %<constexpr%> sein"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "Qualifizierten Namen in Friend-Deklaration für Konstruktor %qD erwartet"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "Feld %qD hat unvollständigen Typen"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "Name %qT hat unvollständigen Typen"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " in Instanziierung des Templates %qT"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qE ist weder eine Funktion noch Elementfunktion; kann nicht als »friend« deklariert werden"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "statisches Datenelement %qD (constexpr) muss Initialisierung haben"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "nicht-statisches Datenelement %qE als %<constexpr%> deklariert"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "Speicherklasse %<auto%> ungültig für Funktion %qs"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "Speicherklasse %<register%> ungültig für Funktion %qs"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "Speicherklasse %<__thread%> ungültig für Funktion %qs"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "virt-Spezifikation in %qs ist außerhalb einer Klassendefinition nicht erlaubt"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "%<static%> ungültig für außerhalb des globalen Gültigkeitsbereiches deklarierte Funktion %qs"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "%<inline%> ungültig für außerhalb des globalen Gültigkeitsbereiches deklarierte Funktion %qs"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "virtuelle Nicht-Klassen-Funktion %qs"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "%qs nicht in Klassen-Gültigkeitsbereich definiert"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "%qs in einem Nicht-Klassen-Gültigkeitsbereich definiert"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "Elementfunktion %qD kann nicht deklariert werden, statische Bindung zu haben"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "statische Funktion innerhalb anderer Funktion kann nicht deklariert werden"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "%<static%> darf nicht bei der Definition (im Gegensatz zu Deklaration) eines statischen Datenelementes verwendet werden"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "statisches Element %qD als %<register%> deklariert"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "Element %q#D kann nicht explizit deklariert werden, externe Bindung zu haben"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "Deklaration der constexpr-Variable %qD ist keine Definition"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs initialisiert und als %<extern%> deklariert"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs hat sowohl %<extern%> als auch Initialisierung"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "Standardargument für %q#D hat Typ %qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "Standardargument für Parameter des Typs %qT hat Typ %qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "Standardargument %qE verwendet %qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "Standardargument %qE verwendet lokale Variable %qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "Parameter %qD hat Java-Klassentyp"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "Parameter %qD deklariert ungültigerweise Methodentyp"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "Parameter %qD bezieht Zeiger auf Feld mit unbekannter Grenze %qT ein"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr "Parameter %qD bezieht Referenz auf Feld mit unbekannter Grenze %qT ein"
@@ -28940,168 +28992,168 @@ msgstr "Parameter %qD bezieht Referenz auf Feld mit unbekannter Grenze %qT ein"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "ungültiger Konstruktor; wahrscheinlich war %<%T (const %T&)%> gemeint"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qD darf nicht innerhalb eines Namensbereiches definiert werden"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD darf nicht als »static« deklariert werden"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD muss eine nichtstatische Elementfunktion sein"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD muss entweder eine nichtstatische Elementfunktion oder eine Nicht-Element-Funktion sein"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD muss ein Argument von einem Klassen- oder Aufzählungstyp haben"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "Umwandlung in Referenz auf void wird nie einen Typumwandlungsoperator verwenden"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr "Umwandlung in void wird nie einen Typumwandlungsoperator verwenden"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "Umwandlung in Referenz auf gleichen Typ wird nie einen Typumwandlungsoperator verwenden"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr "Umwandlung in gleichen Typ wird nie einen Typumwandlungsoperator verwenden"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "Umwandlung in Referenz auf Basisklasse wird nie einen Typumwandlungsoperator verwenden"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr "Umwandlung in Basisklasse wird nie einen Typumwandlungsoperator verwenden"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO-C++ verbietet Ãœberladen des Operators ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "»%qD« darf keine variable Argumentanzahl haben"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "Suffix-%qD muss %<int%> als sein Argument nehmen"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "Suffix-%qD muss %<int%> als sein zweites Argument nehmen"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD muss entweder null oder ein Argument nehmen"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "»%D« muss entweder ein oder zwei Argumente nehmen"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "Präfix-%qD sollte %qT zurückgeben"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "Suffix-%qD sollte %qT zurückgeben"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD muss %<void%> nehmen"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD muss genau ein Argument nehmen"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD muss genau zwei Argumente nehmen"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "benutzerdefiniertes %qD wertet immer beide Argumente aus"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD sollte Wert zurückgeben"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD kann keine Standardargumente haben"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "Templatetyp-Parameter %qT wird nach %qs verwendet"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr "Templatespezialisierung alias %qT hinter %qs wird verwendet"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "typedef-Name %qD wird nach %qs verwendet"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "%qD hat eine vorherige Deklaration hier"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "%qT als %qs verwendet"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T hat eine vorherige Deklaration hier"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT als enum verwendet"
@@ -29113,88 +29165,88 @@ msgstr "%qT als enum verwendet"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "Template-Argument für %<%s %T%> benötigt"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD hat den gleichen Namen wie die Klasse, in der es deklariert wurde"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "Referenz auf %qD ist mehrdeutig"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "Verwendung des enum %q#D ohne vorherige Deklaration"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "Redeklaration von %qT als Nicht-Template"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "vorherige Deklaration %q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "abgeleitete Union %qT ist ungültig"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "Java-Klasse %qT kann nicht mehrere Basen haben"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "Java-Klasse %qT kann keine virtuellen Basen haben"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "Basistyp %qT ist kein struct- oder Klassentyp"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "rekursiver Typ %qT nicht definiert"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "doppelter Basistyp %qT ungültig"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr "falsche Zuordnung zwischen innerhalb und außerhalb eines Gültigkeitsbereiches in enum %q#T"
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, gcc-internal-format
msgid "previous definition here"
msgstr "vorherige Definition hier"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr "falsche Zuordnung des zugrunde liegenden Typs in enum %q#T"
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr "anderer zugrunde liegender Typ in enum %q#T"
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr "zugrunde liegender Typ %<%T%> von %<%T%> muss ein eingebauter Typ sein"
@@ -29203,72 +29255,72 @@ msgstr "zugrunde liegender Typ %<%T%> von %<%T%> muss ein eingebauter Typ sein"
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "kein Ganzzahltyp kann alle Aufzählungswerte für %qT darstellen"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "Aufzählungswert für %qD ist keine Ganzzahlkonstante"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "erhöhter Aufzählungswert ist zu groß für %<unsigned long%>"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "Überlauf in Aufzählungswerten bei %qD"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "Aufzählungswert %E ist zu groß für zugrunde liegenden Typ %<%T%>"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "Rückgabetyp %q#T ist unvollständig"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "Rückgabetyp hat Java-Klassentyp %q#T"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> sollte eine Referenz auf %<*this%> zurück geben"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "keine vorherige Deklaration für %q+D"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "ungültige Funktionsdeklaration"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "Parameter %qD leer definiert"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr "Parameter %q+D gesetzt, aber nicht verwendet"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "ungültige Elementfunktionsdeklaration"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD ist bereits in Klasse %qT definiert"
@@ -29308,7 +29360,7 @@ msgstr "Eine Funktion kann nicht gelöscht werden. Nur Zeiger auf Objekte sind g
msgid "deleting %qT is undefined"
msgstr "Löschen von %qT ist nicht definiert"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "Templatedeklaration von %q#D"
@@ -29569,7 +29621,7 @@ msgstr "unvollständiger Typ %qT in geschachtelter Namensangabe verwendet"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "Referenz auf %<%T::%D%> ist mehrdeutig"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD ist kein Element von %qT"
@@ -29875,7 +29927,7 @@ msgstr "Typ %qT ist keine direkte Basis von %qT"
msgid "bad array initializer"
msgstr "schlechte Feldinitialisierung"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%qT ist kein Klassentyp"
@@ -29960,67 +30012,67 @@ msgstr "Größe eines nicht konstanten Feldes in new, Länge der Initialisierung
msgid "parenthesized initializer in array new"
msgstr "geklammerte Initialisierung in Feld-»new«"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "Größe des Feldes bei »new« muss Ganzzahltyp haben"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "»new« kann nicht auf Referenztyp angewendet werden"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "»new« kann nicht auf Funktionstyp angewendet werden"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "Aufruf von Java-Konstruktor, wobei %<jclass%> nicht definiert ist"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "%<class$%> kann nicht in %qT gefunden werden"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "Initialisierung endet vorzeitig"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "mehrdimensionales Feld kann nicht initialisiert werden"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "mögliches Problem bei Aufruf des »delete«-Operators erkannt"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "weder der Destruktor noch der klassenspezifische Operator »delete« wird aufgerufen, auch wenn sie bei der Klassendefinition deklariert werden"
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr "Löschen des Objekts mit abstraktem Klassentyp %qT mit nicht-virtuellem Destruktor bewirkt undefiniertes Verhalten"
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr "Löschen des Objekts mit polymorphem Klassentyp %qT mit nicht-virtuellem Destruktor bewirkt möglicherweise undefiniertes Verhalten"
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "unbekannte Feldgröße in »delete«"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "Typ für Vektor-»delete« ist weder Zeiger- noch Feldtyp"
@@ -30080,42 +30132,42 @@ msgstr "es gibt keine Argumente für %qD, die von einem Templateparameter abhän
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(mit %<-fpermissive%> wird G++ den Code akzeptieren, aber die Verwendung eines nicht deklarierten Namens ist veraltet)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr "defektes typeof, stattdessen decltype verwenden"
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr "__underlying_type wird vernichtet"
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr "unbekannter Festkommatyp wird vernichtet"
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr "%C wird vernichtet"
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "ausgelassener mittlerer Operand für Operator %<?:%> kann nicht verarbeitet werden"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr "Zeichenkettenliteral in Signatur des Funktionstemplate"
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "der verarbeitete Name von %qD« wird sich in einer zukünftigen Version des GCC ändern"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr "-fabi-version=6 (oder =0) verhindert diesen Fehler mit einer Änderung in Vernichtung"
@@ -30201,57 +30253,57 @@ msgstr "%q+#D ist implizit als gelöscht deklariert, da %qT einen Bewegungskonst
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr "%q+#D wird implizit gelöscht, da die Standarddefinition ungültig wäre:"
-#: cp/method.c:1620
+#: cp/method.c:1621
#, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "Vorgabe-Deklaration %q+D"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr "passt nicht zur erwarteten Signatur %qD"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr "Funktion %q+D wurde bei ihrer ersten Deklaration mit einer Ausnahmespezifikation standardisiert, die sich von der impliziten Deklaration %q#D unterscheidet"
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr "Explizit standardisierte Funktion %q+D kann nicht als konstanter Ausdruck deklariert werden, da die implizite Deklaration kein konstaner Ausdruck ist:"
-#: cp/method.c:1679
+#: cp/method.c:1680
#, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "ein Template kann nicht vorbelegt werden"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "%qD kann nicht vorgegeben werden"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "vorgegebene Funktion %q+D mit Standardargument"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "vtable-Anordnung für Klasse %qT könnte ABI-unverträglich sein und sich in zukünftigen GCC-Versionen durch implizite virtuelle Destruktoren ändern"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D steht mit vorheriger Deklaration in Konflikt"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, gcc-internal-format
msgid "previous declaration %q+#D"
msgstr "vorherige Deklaration %q+#D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "Redeklaration von %<wchar_t%> als %qT"
@@ -30262,265 +30314,265 @@ msgstr "Redeklaration von %<wchar_t%> als %qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "ungültige Redeklaration von %q+D"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "als %qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "Deklaration von %q#D mit C-Sprachen-Bindung"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr "durch andere Ausnahmespezifikationen"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "Typen passen nicht zu vorheriger externer Deklaration von %q#D"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "vorherige externe Deklaration von %q+#D"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "externe Deklaration von %q#D passt nicht"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "globale Deklaration von %q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "Deklaration von %q#D überdeckt einen Parameter"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr "Deklaration von %q+D überdeckt eine Lambda-Erfassung"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "Deklaration von %qD überdeckt einen vorhergehenden lokalen Bezeichner"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "Deklaration von %qD überdeckt ein Element von 'this'"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "Deklaration von %qD überdeckt eine globale Deklaration"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "Suche nach %qD hat sich geändert"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " passt nach ISO-Standardregeln zu diesem %q+D"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " passt nach den alten Regeln zu diesem %q+D"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "Namenssuche von %qD hat sich für ISO-Regeln zum »for«-Gültigkeitsbereich geändert"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " veraltete Bindung bei %q+D kann nicht verwendet werden, weil es einen Destruktor hat"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " bei %q+D wird veraltete Bindung verwendet"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(G++ wird den Code mit »-fpermissive« akzeptieren)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D verdeckt Konstruktor für %q#T"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D steht mit vorheriger %<using%>-Deklaration %q#D in Konflikt"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "vorherige Deklaration %q+#D einer Nicht-Funktion"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "steht mit Funktionsdeklaration %q#D in Konflikt"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT ist kein Namensbereich"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "eine %<using%>-Deklaration kann keine Template-ID angeben. Stattdessen %<using %D%> versuchen"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "namespace %qD in %<using%>-Deklaration nicht erlaubt"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "%qD nicht deklariert"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD wurde in diesem Gültigkeitsbereich bereits deklariert"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "»using«-Deklaration für Nicht-Element im Gültigkeitsbereich der Klasse"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> benennt Destruktor"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%> benennt Konstruktor"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> benennt Konstruktor in %qT"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "kein Element passt zu %<%T::%D%> in %q#T"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "Deklaration von %qD nicht in einem Namensbereich um %qD"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "explizite Qualifizierung in Deklaration von %qD"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD sollte innerhalb von %qD deklariert werden"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "Attribut %qD erfordert ein einzelnes NTBS-Argument"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr "Attribut %qD ist bedeutungslos, da die Elemente des anonymen Namensraums lokale Symbole erhalten"
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "Attribut-Anweisung %qD wird ignoriert"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "Namensbereich-Alias %qD ist hier nicht erlaubt, %qD angenommen"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "starkes »using« ist nur im Gültigkeitsbereich des Namensbereiches sinnvoll"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "aktueller Namensbereich %qD schließt nicht stark verwendeten Namensbereich %qD ein"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr "obere Grenze von %d Namensräumen für %qE durchsucht"
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] "empfohlene Alternative:"
msgstr[1] "empfohlene Alternativen:"
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr " %qE"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr "Argumentabhängiges Nachschlagen findet %q+D"
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX Eintritt in pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX pop_everything () wird verlassen\n"
@@ -30630,7 +30682,7 @@ msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(vielleicht fehlt ein Semikolon hinter der Definition von %qT)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT ist kein Template"
@@ -30650,7 +30702,7 @@ msgstr "ungültige Template-ID"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "Gleitkommaliteral kann nicht in einem Konstanten-Ausdruck auftreten"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr "Eine Typumwandlung, die weder zu ganzzahligen noch Aufzählungstypen führt, kann nicht in einem Konstantenausdruck auftreten"
@@ -30793,711 +30845,711 @@ msgstr "widersprüchliche benutzerdefinierte literale Suffixe %qD und %qD in Zei
msgid "a wide string is invalid in this context"
msgstr "eine Wide-Zeichenkette ist in diesem Kontext ungültig"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr "Operator %qD für Zeichenliterale mit Argument %qT kann nicht gefunden werden"
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr "numerischer literaler Operator %qD konnte nicht gefunden werden"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr "literaler Operator für Zeichenketten %qD konnte nicht gefunden werden"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr "literaler Operator für Zeichenketten %qD mit Argumenten %qT, %qT konnte nicht gefunden werden"
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, gcc-internal-format
msgid "expected declaration"
msgstr "Deklaration erwartet"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "Festkommatypen werden in C++ nicht unterstützt"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO-C++ verbietet Gruppen in geschweiften Klammern innerhalb von Ausdrücken"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "Anweisungs-Ausdrücke sind weder außerhalb von Funktionen noch in Template-Argumenten erlaubt"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, gcc-internal-format
msgid "expected primary-expression"
msgstr "übergeordneter Ausdruck erwartet"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%<this%> darf in diesem Kontext nicht verwendet werden"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "eine Template-Deklaration kann nicht im Block-Gültigkeitsbereich auftreten"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "lokale Variable %qD darf in diesem Kontext nicht auftauchen"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, gcc-internal-format
msgid "expected id-expression"
msgstr "ID-Ausdruck erwartet"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "Bereich %qT vor %<~%> ist kein Klassenname"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "Deklaration von %<~%T%> als Element von %qT"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "typedef-Name %qD als Destruktor-Deklarator verwendet"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr "Literale Operator-Suffixe ohne vorangehendes %<_%> sind für zukünftige Standardisierungen reserviert"
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr "unqualifiziertes ID erwartet"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr "%<:%> in Spezifikation mit geschachteltem Namen gefunden, %<::%> erwartet"
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "decltype wird zu %qT ausgewertet, was keine Klasse oder Aufzählungstyp ist"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qD ist kein Template"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "Spezifikation mit geschachteltem Namen erwartet"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "Typen dürfen nicht in Typumwandlungen definiert werden"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr "Typen dürfen nicht in einem %<typeid%>-Ausdruck definiert werden"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO-C++ verbietet zusammengesetzte Literale"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qE hat keinen Klassentyp"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "ungültige Verwendung von %qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%> ist kein Klassenelement"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr "nicht-skalarer Typ"
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO-C++ erlaubt kein %<alignof%> mit einem Nicht-Typ"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "Typen dürfen nicht in %<noexcept%>-Ausdrücken definiert werden"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "Typen dürfen nicht in einem »new«-Ausdruck definiert werden"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "Feldgrenze hinter geklammerter type-id ist verboten"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "Klammern um die Type-ID sollten entfernt werden"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr "Typen dürfen nicht in einem »new-type-id« definiert werden"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "Ausdruck in new-Deklarator muss Ganzzahl- oder Aufzählungstyp haben"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "Verwendung einer Typumwandlung im alten Stil"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr "Operator %<>>%> wird in C++11 wie zwei spitze schließende Klammern behandelt"
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "Klammern um %<>>%>-Ausdruck empfohlen"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO-C++ erlaubt nicht ?: mit ausgelassenem mittleren Operanden"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr "Lambda-Ausdruck in ungeprüftem Kontext"
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr "unerwartetes Ende der Auffangliste"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr "Explizite Erfassung (als Kopie) von %<this%> ist mit Standarderfassung (als Kopie) gedoppelt"
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO-C++ erlaubt keine Initialisierungen Auffanglisten von Lambda-Ausdrücken"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr "Erfassung von Nicht-Variable %qD"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, gcc-internal-format
msgid "%q+#D declared here"
msgstr "%q+#D hier deklariert"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr "Erfassung der Variable %qD ohne automatische Speicherdauer"
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr "Explizite Erfassung (als Kopie) von %qD ist mit Standarderfassung (als Kopie) gedoppelt"
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr "Explizite Erfassung (als Referenz) von %qD ist mit Standarderfassung (als Referenz) gedoppelt"
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "Standardargument für Lambda-Parameter angegeben"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, gcc-internal-format
msgid "expected labeled-statement"
msgstr "benannte Anweisung erwartet"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case-Marke %qE nicht innerhalb einer switch-Anweisung"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr "%<typename%> vor %qE erforderlich, da %qT ein abhängiger Gültigkeitsbereich ist"
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> benennt Konstruktor, nicht den Typ"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr "zusammengesetzte Anweisung in Funktion als konstantem Audruck"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, gcc-internal-format
msgid "expected selection-statement"
msgstr "Auswahl-Anweisung erwartet"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr "Typen dürfen nicht in Bedingungen definiert werden"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "bereichsbasierter %<for%>-Ausdruck mit Typ %qT hat unvollständigen Typ"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr "bereichsbasierter %<for%>-Ausdruck mit Typ %qT hat %<end%>-Element, aber kein %<begin%>"
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr "bereichsbasierter %<for%>-Ausdruck mit Typ %qT hat %<begin%>-Element, aber kein %<end%>"
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr "unvereinbare Anfang-/Ende-Typen in bereichsbasierter %<for%>-Anweisung: %qT und %qT"
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr "Iterationsanweisung erwartet"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "bereichsbasierte %<for%>-Schleifen sind im C++98-Modus nicht erlaubt"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO-C++ verbietet berechnete Gotos"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, gcc-internal-format
msgid "expected jump-statement"
msgstr "Sprunganweisung erwartet"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "zusätzliches %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr "%<__label__%> nicht am Anfang eines Blocks"
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "Vermischung von Deklarationen und Funktionsdefinitionen ist verboten"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "%<friend%> außerhalb einer Klasse verwendet"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr "Bedeutung von %<auto%> ändert in C++11 die Bedeutung; Bitte entfernen"
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr "decl-Spezifizierung in Bedingung ungültig"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "Klassendefinition darf nicht als »friend« deklariert sein"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr "Templates dürfen nicht %<virtual%> sein"
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "ungültige Bindungsspezifikation"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr "Typen dürfen nicht in %<decltype%>-Ausdrücken definiert werden"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "ungültige Verwendung von %<auto%> in Umwandlungsoperator"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, gcc-internal-format
msgid "only constructors take member initializers"
msgstr "nur Konstruktoren nehmen Elementinitialisierungen"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "Initialisierung für Element %<%D%> kann nicht aufgelöst werden"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "Speicherinitialisierung für %qD folgt Konstruktordelegation"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr "Konstruktordelegation folgt Speicherinitialisierung für %qD"
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "veraltete Basisklasseninitialisierung"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "Schlüsselwort %<typename%> in diesem Kontext nicht erlaubt (eine qualifizierte Elementinitialisierung ist implizit ein Typ)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr "hinter Schlüsselwort %<operator%> wird leere Zeichenkette erwartet"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, gcc-internal-format
msgid "expected suffix identifier"
msgstr "Suffixbezeichner erwartet"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr "zwischen %<\"\"%> und Suffixbezeichner fehlt Leerzeichen"
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, gcc-internal-format
msgid "expected operator"
msgstr "Operator erwartet"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "Schlüsselwort %<export%> nicht implementiert, und wird ignoriert"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "Templateparameterpack %qD kann kein Standardargument haben"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "Templateparameterpack kann kein Standardargument haben"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "Template-Parameterpacks können keine Standardargumente haben"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, gcc-internal-format
msgid "expected template-id"
msgstr "Template-ID erwartet"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, gcc-internal-format
msgid "expected %<<%>"
msgstr "%<%> erwartet"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%<<::%> kann keine Templateargumentliste einleiten"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> ist eine andere Schreibweise für %<[%>. Leerraum zwischen %<<%> und %<::%> einfügen"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr "Syntaxfehler in Templateargumentliste"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, gcc-internal-format
msgid "expected template-name"
msgstr "Templatename erwartet"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "Nicht-Template %qD als Template verwendet"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "%<%T::template %D%> verwenden, um dies als Template zu kennzeichnen"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr "Parameterbündel vor %<...%> erwartet"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, gcc-internal-format
msgid "expected template-argument"
msgstr "Templateargument erwartet"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "ungültiges Templateargument ohne Typ"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "explizite Instanziierung sollte nicht %<inline%> verwenden"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "explizite Instanziierung sollte nicht %<constexpr%> verwenden"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "Templatespezialisierung mit C-Bindung angegeben"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, gcc-internal-format
msgid "expected type specifier"
msgstr "Typspezifizierer erwartet"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, gcc-internal-format
msgid "expected template-id for type"
msgstr "Template-ID für Typ erwartet"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, gcc-internal-format
msgid "expected type-name"
msgstr "Typ-Name erwartet"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr "ausführliche Typ-Spezifikation für einen enum mit Gültigkeitsbereich darf nicht das Schlüsselwort %<%D%> verwenden"
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "Deklaration %qD deklariert nichts"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "Attribute an instanziiertem Typen ignoriert"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "Attribute an Templateinstanziierung ignoriert"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr "Attribute an Spezifizierer ausführlichen Typs ignoriert, der keine Vorwärtsdeklaration ist"
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "%qD ist ein Aufzählungstemplate"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr "%qD ist kein Aufzählungsname"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "%<;%> oder %<{%> erwartet"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr "Aufzählungsliste kann nicht zu Template-Instantiierung hinzugefügt werden"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "Deklaration von %qD in Namensraum %qD, der nicht %qD einschließt"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "Deklaration von %qD in %qD, das nicht %qD einschließt"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "mehrfache Definition von %q#T"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr "intransparente Enum-Spezifikation ohne Namen"
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr "intransparente Enum-Spezifikation muss einfachen Bezeichner verwenden"
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD ist kein Namensbereichs-Name"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, gcc-internal-format
msgid "expected namespace-name"
msgstr "Namensraumname erwartet"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "%<namespace%>-Definition ist hier nicht erlaubt"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "eine Template-ID darf nicht in »using«-Deklaration auftreten"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr "Zugriffsdeklarationen sind zugunsten von %<using%>-Deklarationen veraltet; Vorschlag: %<using%> hinzufügen"
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "Typen dürfen nicht in Alias-Templatedeklarationen definiert werden"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "eine Funktionsdefinition ist hier nicht erlaubt"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "asm-Spezifikation ist bei Funktionsdefinition nicht erlaubt"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "bei einer Funktionsdefinition sind keine Attribute erlaubt"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr "Konstruktor, Destruktor oder Typumwandlung erwartet"
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, gcc-internal-format
msgid "expected initializer"
msgstr "Initialisierung erwartet"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, gcc-internal-format
msgid "invalid type in declaration"
msgstr "ungültiger Typ in Deklaration"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, gcc-internal-format
msgid "initializer provided for function"
msgstr "Initialisierung für Funktion bereitgestellt"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "Attribute hinter geklammerter Initialisierung werden ignoriert"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "Feldgrenze ist keine Ganzzahlkonstante"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "Element des abhängigen Typedef %qT kann nicht definiert werden"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%E%> ist kein Typ"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "ungültige Benutzung des Konstruktors als Template"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "%<%T::%D%> statt %<%T::%D%> verwenden, um den Konstruktor mit qualifiziertem Namen zu benennen"
@@ -31506,247 +31558,247 @@ msgstr "%<%T::%D%> statt %<%T::%D%> verwenden, um den Konstruktor mit qualifizie
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "ungültiger Deklarator"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, gcc-internal-format
msgid "expected declarator"
msgstr "Deklarator erwartet"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD ist ein Namensbereich"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr "Zeiger auf Element der Nicht-Klasse %q#T kann nicht erzeugt werden"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, gcc-internal-format
msgid "expected ptr-operator"
msgstr "Ptr-Operator erwartet"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "doppelter CV-Qualifizierer"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr "doppelter Virt-Spezifizierer"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "ungültige Verwendung von %<auto%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "in Template-Argumenten dürfen keine Typen definiert werden"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, gcc-internal-format
msgid "expected type-specifier"
msgstr "Typspezifikation erwartet"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "%<,%> oder %<...%> erwartet"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "Typen dürfen nicht in Parametertypen definiert werden"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "veraltete Verwendung des Standardarguments für Parameter einer Nicht-Funktion"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "Standardargumente sind nur für Funktionsparameter zugelassen"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "Parameterpack %qD kann kein Standardargument haben"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "Parameterpack kann kein Standardargument haben"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO-C++ erlaubt keine benannten Initialisierungen"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO-C++ erlaubt keine benannten Initialisierungen von C99"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, gcc-internal-format
msgid "expected class-name"
msgstr "Klassenname erwartet"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "%<;%> hinter Klassendefinition erwartet"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "%<;%> hinter Strukturdefinition erwartet"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "%<;%> hinter Uniondefinition erwartet"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "%<{%> oder %<:%> erwartet"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr "für eine Klasse kann kein %<override%> angegeben werden"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr "globale Qualifizierung von Klassenname ist ungültig"
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "qualifizierter Name benennt keine Klasse"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "ungültiger Klassenname in Deklaration von %qD"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr "zusätzliche Qualifizierung nicht erlaubt"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "einer expliziten Spezialisierung muss %<template <>%> vorausgehen"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "Funktions-Template %qD als Klassentemplate redeklariert"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr "Typnamen-Typ kann nicht aufgelöst werden"
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "vorherige Definition von %q+#T"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, gcc-internal-format
msgid "expected class-key"
msgstr "Klassenschlüssel erwartet"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "in C++03 muss bei Deklaration eines »friend« ein Klassenschlüssel verwendet werden"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "»friend«-Deklaration benennt keine Klasse oder Funktion"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "reiner Spezifizierer bei Funktionsdefinition"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "%<;%> am Ende von Elementdeklaration erwartet"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr "ungültige reine Spezifikation (nur %<= 0%> ist erlaubt)"
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr "eine geschweift geklammerte Initialisierung ist hier nicht erlaubt"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr "%<virtual%> mehr als einmal in Basisspezifikation angegeben"
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr "mehr als ein Zugriff in Basisspezifikation angegeben"
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "Schlüsselwort %<typename%> nicht außerhalb von Templates erlaubt"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "Schlüsselwort %<typename%> nicht erlaubt in diesem Kontext (die Basisklasse ist implizit ein Typ)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "Typen dürfen nicht in einer Ausnahmespezifikation definiert werden"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr "dynamische Ausnahmespezifikationen sind in C++0x veraltet; stattdessen %<noexcept%> verwenden"
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "Typen dürfen nicht in Ausnahmedeklarationen definiert werden"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr "spezialisierendes Element %<%T::%E%> erfordert Syntax %<template<>%>"
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "ungültige Deklaration von %<%T::%E%>"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "zu wenige Templateparameterlisten"
@@ -31755,317 +31807,317 @@ msgstr "zu wenige Templateparameterlisten"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "zu viele Templateparameterlisten"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "benannte Rückgabewerte werden nicht mehr unterstützt"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr "ungültige Deklaration eines Elementtemplates in lokaler Klasse"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "Template mit C-Bindung"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "ungültige explizite Spezialisierung"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr "Literales Operatortemplate %qD hat ungültige Parameterliste. Template für Nicht-Typ Argumentpack <char...> erwartet"
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "Templatedeklaration von %<typedef%>"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "explizite Template-Spezialisierung kann keine Speicherklasse haben"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%<>>%> sollte innerhalb einer geschachtelten Templateargumentliste %<> >%> sein"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "falsches %<>>%>; %<>%> verwenden, um eine Templateargumentliste zu beenden"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "ungültige Verwendung von %qD in Spezifizierung der Bindung"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> vor %qD"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, gcc-internal-format
msgid "expected %<new%>"
msgstr "%<new%> erwartet"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr "%<delete%> erwartet"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, gcc-internal-format
msgid "expected %<return%>"
msgstr "%<return%> erwartet"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, gcc-internal-format
msgid "expected %<extern%>"
msgstr "%<extern%> erwartet"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr "%<static_assert%> erwartet"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "%<decltype%> erwartet"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, gcc-internal-format
msgid "expected %<operator%>"
msgstr "%<operator%> erwartet"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr "%<class%> erwartet"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, gcc-internal-format
msgid "expected %<template%>"
msgstr "%<template%> erwartet"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "%<namespace%> erwartet"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr "%<using%> erwartet"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, gcc-internal-format
msgid "expected %<asm%>"
msgstr "%<asm%> erwartet"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, gcc-internal-format
msgid "expected %<try%>"
msgstr "%<try%> erwartet"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr "%<catch%> erwartet"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr "%<throw%> erwartet"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "%<__label__%> erwartet"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, gcc-internal-format
msgid "expected %<@try%>"
msgstr "%<@try%> erwartet"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr "%<@synchronized%> erwartet"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr "%<@throw%> erwartet"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr "%<__transaction_atomic%> erwartet"
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr "%<__transaction_relaxed%> erwartet"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr "%<::%> erwartet"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr "%<...%> erwartet"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, gcc-internal-format
msgid "expected %<*%>"
msgstr "%<*%> erwartet"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, gcc-internal-format
msgid "expected %<~%>"
msgstr "%<~%> erwartet"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "%<:%> oder %<::%> erwartet"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "%<class%>, %<typename%> oder %<template%> erwartet"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "Markierung %qs bei Benennung von %q#T verwendet"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "%q#T wurde vorher hier deklariert"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qD mit anderem Zugriff redeklariert"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "%<template%> (zur Erklärung) ist nur innerhalb von Templates erlaubt"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "Datei endet in Standardargument"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "unpassendes Objective-C++-Konstrukt %<@%D%>"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr "Objective-C++ Nachrichtenargument(e) erwartet"
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "%<@encode%> muss als Argument einen Typen angeben"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr "Ungültiger Objective-C++-Selektorname"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr "Objective-C++ Methodendeklaration erwartet"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "Methodenattribute müssen am Ende angegeben werden"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr "überflüssiges %qs zwischen Objective-C++ Methoden"
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "ungültiger Typ für Instanzvariable"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "Bezeichner nach %<@protocol%> erwartet"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr "Attribute dürfen nicht vor dem Objective-C++-Schlüsselwort %<@%D%> angegeben werden"
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "Präfix-Attribute vor %<@%D%> werden ignoriert"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, gcc-internal-format
msgid "invalid type for property"
msgstr "ungültiger Typ für Eigenschaft"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr "geklammerte Initialisierung ist in OpenMP-%<for%>-Schleife nicht erlaubt"
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "Schleifenvariable %qD sollte nicht Reduktion sein"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr "zu wenig zusammengefallen für Schleifen"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr "%<__transaction_relaxed%> ohne eingeschaltete Unterstützung für transaktionsgebundenen Speicher"
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr "%<__transaction_atomic%> ohne eingeschaltete Unterstützung für transaktionsgebundenen Speicher"
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "Ausschuss am Ende von %<#pragma GCC pch_preprocess%>"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "Optimierungen zwischen Modulen noch nicht implementiert für C++"
@@ -32162,69 +32214,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD ist kein Funktionstemplate"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "Template-ID %qD für %q+D passt zu keiner Templatedeklaration"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr "%d %<template<>%> gefunden, %d werden für Spezialisierung eines Elementfunktionstemplates benötigt"
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "mehrdeutige Templatespezialisierung %qD für %q+D"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "Template-ID %qD in Deklaration des ersten Templates"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "Templateparameterliste in expliziter Instanziierung verwendet"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "Definition für explizite Instanziierung angegeben"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "zu viele Templateparameterlisten in Deklaration von %qD"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "zu wenige Templateparameterlisten in Deklaration von %qD"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "der expliziten Spezialisierung von %D muss %<template <>%> vorausgehen"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "Teilspezialisierung %qD des Funktionstemplates ist nicht erlaubt"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "Standardargument in expliziter Spezialisierung angegeben"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD ist keine Templatefunktion"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD in %qD nicht deklariert"
@@ -32237,134 +32289,134 @@ msgstr "%qD in %qD nicht deklariert"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "Spezialisierung der implizit deklarierten speziellen Elementfunktion"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "keine Elementfunktion %qD in %qT deklariert"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr "Auflösung der Basisinitialisierung %<%T%> enthält keine Parameterpacks"
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr "Auflösungsmuster %<%T%> enthält keine Argumentpacks"
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr "Auflösungsmuster %<%E%> enthält keine Argumentpacks"
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr "Parameterbündel nicht mit %<...%> aufgelöst:"
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr " <anonym>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "Deklaration von %q+#D"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr " überdeckt Templateparameter %q+#D"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "nicht in partieller Spezialisierung verwendete Templateparameter:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "Teilspezialisierung %qT spezialisiert keine Templateargumente"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr "Argument %qE für Parameterpack muss am Ende der Templateargumentliste sein"
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr "Argument %qT für Parameterpack muss am Ende der Templateargumentliste sein"
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "Templateargument %qE betrifft Templateparameter"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "Typ %qT des Templatearguments %qE hängt von Templateparameter ab"
msgstr[1] "Typ %qT des Templatearguments %qE hängt von Templateparametern ab"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "teilweise Spezialisierung von %qT hinter Instanziierung von %qT"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "kein Standard-Argument für %qD"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr "Parameterpack %qE muss am Ende der Templateparameterliste sein"
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr "Parameterpack %qT muss am Ende der Templateparameterliste sein"
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "Standardtemplateargumente dürfen in friend-Redeklaration eines Funktionstemplates nicht verwendet werden"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr "Standardtemplateargumente dürfen in friend-Deklaration eines Funktionstemplates nicht verwendet werden"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr "Standardtemplateargumente dürfen in Funktionstemplates nicht ohne -std=c++11 und -std=gnu++11 verwendet werden"
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr "Standardtemplateargumente dürfen in teilweiser Spezialisierung nicht verwendet werden"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "Standardargument für Template-Parameter für %qD umschließende Klasse"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "Templateklasse ohne Namen"
@@ -32372,7 +32424,7 @@ msgstr "Templateklasse ohne Namen"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "Destruktor %qD als Element-Template deklariert"
@@ -32382,76 +32434,76 @@ msgstr "Destruktor %qD als Element-Template deklariert"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "ungültige Templatedeklaration von %qD"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "Template-Definition eines Nicht-Templates %q#D"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "%d Ebenen von Template-Parametern für %q#D erwartet, %d erhalten"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "%d Template-Parameter für %q#D erhalten"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "%d Template-Parameter für %q#T erhalten"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " aber %d benötigt"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "Template-Argumente für %qD passen nicht zum ursprünglichen Template %qD"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr "template<> für eine explizite Spezialisierung verwenden"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT ist kein Template-Typ"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "keine Templatespezifizierer in Deklaration von %qD angegeben"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "mit %d Template-Parameter redeklariert"
msgstr[1] "mit %d Template-Parametern redeklariert"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "vorherige Deklaration %q+D verwendete %d Template-Parameter"
msgstr[1] "vorherige Deklaration %q+D verwendete %d Template-Parameter"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "Template-Parameter %q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "hier als %q#D redeklariert"
@@ -32460,328 +32512,328 @@ msgstr "hier als %q#D redeklariert"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "Redefinition des Standardarguments für %q#D"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, gcc-internal-format
msgid "original definition appeared here"
msgstr "ursprüngliche Definition trat hier auf"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qD keine Bindung hat"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qD keine externe Bindung hat"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "es muss ein Zeiger auf ein Element der Form %<&X::Y%> sein"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr " Template-Parameter %qD konnte nicht ermittelt werden"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr " Typen %qT und %qT haben unverträgliche CV-Qualifizierer"
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr " unpassende Typen %qT und %qT"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr " Templateparameter %qD ist kein Parameterpack wie Argument %qD"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr " Templateargumente %qE passt nicht zum konstanten Zeiger auf Element %qE"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr " %qE entspricht nicht %qE"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr " unpassende Herleitung von Parameterpack mit %qT und %qT"
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr " hergeleitete Typen für Parameter %qT stehen in Konflikt (%qT und %qT)"
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr " hergeleitete Werte für Nicht-Typ-Parameter %qE stehen in Konflikt (%qE und %qE)"
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr " Feldtyp %qT mit veränderlicher Größe ist kein gültiges Templateargument"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr " Typ %qT von Elementfunktion ist kein gültiges Templateargument"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr " %qE (Typ %qT) kann nicht in den Typ %qT umgewandelt werden"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr " %qT ist mehrdeutige Basisklasse von %qT"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr " %qT ist nicht vom Typ %qT abgeleitet"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr " Templateparameter eines Template-Templatearguments sind mit anderen hergeleiteten Templateargumenten unverträglich"
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr " für %qT kann kein Template aus Nicht-Templatetyp %qT hergeleitet werden"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr " Template-Argument %qE passt nicht zu %qD"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr " Adresse von überladener Funktion %qE konnte nicht aufgelöst werden"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, da Zeichenkettensymbole in diesem Zusammenhang nicht verwendet werden können"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "in Templateargument für Typ %qT"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qD ist kein gültiges Templateargument, weil %qD eine Variable und nicht die Adresse einer Variable ist"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qE keine Variable ist"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qE ist kein gültiges Templateargument des Typs %qT, weil %qD keine externe Bindung hat"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qD keine Bindung hat"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, da es in CV-Qualifikation in Konflikt steht"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es kein L-Wert ist"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%q#D ist kein gültiges Templateargument für Typ %qT, weil eine Referenzvariable keine konstante Adresse hat"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es kein Objekt mit externer Bindung ist"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil Objekt %qD keine externe Bindung hat"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr "es muss die Adresse einer Funktion mit externer Bindung sein"
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es ein Zeiger ist"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "stattdessen %qE verwenden"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es vom Typ %qT ist"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "Standardumwandlungen sind in diesem Kontext nicht erlaubt"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "Attribute an Templateargument %qT werden ignoriert"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr "eingegebener Klassenname %qD als Template-Templateargument verwendet"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr "ungültige Benutzung des Destruktors %qE als Typ"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "um auf ein Typelement eines Templateparameters zu verweisen, %<typename %E%> verwenden"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "Typ/Wert des Arguments %d passt nicht in Template-Parameterliste für %qD"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " Konstante des Typs %qT erwartet, %qT erhalten"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " Klassentemplate erwartet, %qE erhalten"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " einen Typ erwartet, %qE erhalten"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " einen Typ erwartet, %qT erhalten"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " Klassentemplate erwartet, %qT erhalten"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr " ein Template des Typs %qD erwartet, %qT erhalten"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "Typ passt nicht in Nichttypen-Parameterbündel"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "Templateargument %qE konnte nicht in %qT umgewandelt werden"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "falsche Anzahl der Templateargumente (%d, sollte %d sein)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "falsche Anzahl der Templateargumente (%d, sollte %d oder mehr sein)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "für %q+D bereitgestellt"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "Templateargument %d ist ungültig"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, gcc-internal-format
msgid "%q#D is not a function template"
msgstr "%q#D ist kein Funktionstemplate"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "Nicht-Template-Typ %qT als Template verwendet"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "Für Template-Deklaration %q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Ersetzung von %qS"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Instanziierung von %qD"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr "Argumentpacklängen passen nicht bei Auflösung von %<%T%>"
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr "Argumentpacklängen passen nicht bei Auflösung von %<%E%>"
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "Instanziierung von %q+D als Typ %qT"
@@ -32799,257 +32851,257 @@ msgstr "Instanziierung von %q+D als Typ %qT"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr "Variable %qD hat Funktionstyp"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "ungültiger Parametertyp %qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "in Deklaration %q+D"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "Funktion gibt ein Feld zurück"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "Funktion gibt eine Funktion"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "Erzeugung eines Zeigers auf Elementfunktion des Nicht-Klassentyps %qT"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "Referenz auf »void« wird gebildet"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "Zeiger auf Referenztyp %qT wird geformt"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "Referenz auf Referenztyp %qT wird geformt"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "Zeiger auf Element des Nicht-Klassentypen %qT wird erzeugt"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "Zeiger auf Elementreferenztyp %qT wird erzeugt"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "Zeiger auf Element mit Typ »void« wird erzeugt"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "Feld von %qT wird erzeugt"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "Feld von %qT wird erzeugt, was ein abstrakter Klassentyp ist"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT ist kein Klassen-, Struktur- oder Union-Typ"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%qT wird in %qT aufgelöst, was kein Aufzählungstyp ist"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT wird in %qT aufgelöst, was kein Klassentyp ist"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "Verwendung von %qs in Template"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "qualifizierender Typ %qT passt nicht zum Destruktornamen ~%qT"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "Abhängigenname %qE wird als Nicht-Typ erkannt, aber die Instanziierung liefert einen Typ"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "%<typename %E%> sagen, wenn ein Typ gemeint ist"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "ungültiges Feld %qD wird verwendet"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "falsche Benutzung eines Packauflösungs-Ausdruckes"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr "%<...%> verwenden, um Argumentpack aufzulösen"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr "%qD wurde in diesem Gültigkeitsbereich nicht deklariert, und bei argumentabhängiger Suche am Ort der Instanziierung wurden keine Deklarationen gefunden"
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr "Deklarationen in abhängiger Basis %qT wurden bei unqualifizierter Suche nicht gefunden"
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr "stattdessen %<this->%D%> verwenden"
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr "stattdessen %<%T::%D%> verwenden"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr "%q+D hier deklariert, später in Übersetzungseinheit"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT ist keine Klasse oder Namensbereich"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD ist keine Klasse oder Namensbereich"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT ist/verwendet anonymen Typen"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "Templateargument für %qD verwendet lokalen Typ %qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT ist ein variabel modifizierter Typ"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "Ganzzahlausdruck %qE ist nicht konstant"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " Versuch, %qD zu instanziieren"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "mehrdeutige Klassentemplate-Instanziierung für %q#T"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "explizite Instanziierung des Nicht-Templates %q#D"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "%qD ist kein statisches Datenelement eines Klassentemplates"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "kein passendes Template für %qD gefunden"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "Typ %qT für explizite Instanziierung %qD passt nicht zum deklarierten Typ %qT"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "explizite Instanziierung von %q#D"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "doppelte explizite Instanziierung von %q#D"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO-C++ 1998 verbietet die Verwendung von %<extern%> bei expliziten Instanziierungen"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "Speicherklasse %qD auf Templateinstanziierung angewendet"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "explizite Instanziierung des Nicht-Klassen-Templates %qD"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "explizite Instanziierung des Nicht-Templatetyps %qT"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "explizite Instanziierung von %q#T vor Definition des Templates"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO-C++ verbietet die Verwendung von %qE bei expliziten Instanziierungen"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "doppelte explizite Instanziierung von %q#T"
@@ -33061,32 +33113,32 @@ msgstr "doppelte explizite Instanziierung von %q#T"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "explizite Instanziierung von %qD, aber keine Definition verfügbar"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Instanziierung von %q+D, möglicherweise von Erzeugung der virtuellen Tabelle"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "ungültiger Nicht-Typ-Parameter für Template"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#T ist kein gültiger Typ für einen Nicht-Typ-Parameter eines Templates"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr "Ermittlung aus geschweift geklammerter Initialisierungsliste erfordert #include <initializer_list>"
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr "Variable %q#D mit %<auto%>-Typ in ihrer eigenen Initialisierung verwendet"
@@ -33094,12 +33146,12 @@ msgstr "Variable %q#D mit %<auto%>-Typ in ihrer eigenen Initialisierung verwende
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "%qT kann nicht aus %qE hergeleitet werden"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr "widersprüchliche Herleitung für %qT: %qT und dann %qT"
@@ -33291,7 +33343,7 @@ msgstr "ungültige Verwendung von %<this%> auf höchster Ebene"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "ungültiger angegebener Gültigkeitsbereich in Pseudodestruktor-Name"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "qualifizierter Typ %qT passt nicht zum Destruktornamen ~%qT"
@@ -33331,441 +33383,441 @@ msgstr "Definition von %q#T in Templateparameterliste"
msgid "invalid definition of qualified type %qT"
msgstr "ungültige Definition des qualifizierten Typen %qT"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "ungültige Spezifizierung der Basisklasse"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, gcc-internal-format
msgid "%qD is not captured"
msgstr "%qD ist nicht aufgefangen"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "Verwendung einer %<auto%>-Variable aus enthaltender Funktion"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr "Verwendung eines Parameters aus enthaltender Funktion"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr " %q+#D hier deklariert"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr "Verwendung des Parameters %qD außerhalb des Funktionskörpers"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "Templateparameter %qD vom Typ %qT ist in ganzzahligem Konstantenausdruck nicht erlaubt, da er nicht Ganzzahl- oder Aufzählungstyp hat"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "Verwendung des Namensbereiches %qD als Ausdruck"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "Verwendung des Klassentemplates %qT als Ausdruck"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "Abfrage des Elementes %qD ist im Gitter der Mehrfachvererbung mehrdeutig"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qD kann nicht in Konstanten-Ausdruck auftreten"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "Typ von %qE ist unbekannt"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "%qT ist kein Aufzählungstyp"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, gcc-internal-format
msgid "Parameter pack __bases only valid in template declaration"
msgstr "Parameterpack __bases nur in Templatedeklaration gültig"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr "%<offsetof%> kann nicht auf Destruktor %<~%T%> angewandt werden"
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "%<offsetof%> kann nicht auf Elementfunktion %qD angewandt werden"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qD ist in Klausel %qs keine Variable"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr "%qD tritt in Datenklausel mehrfach auf"
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "%qD ist in Klausel %<firstprivate%> keine Variable"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "%qD ist in Klausel %<lastprivate%> keine Variable"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr "num_threads-Ausdruck muss bestimmt sein"
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr "Plan-Teilgrößenausdruck muss bestimmt sein"
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "%qE hat Referenztyp für %qs"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr "%<threadprivate%> %qD ist nicht Datei-, Namens- oder Blockbereichsvariable"
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "Direktive %<threadprivate%> %qE nicht in Definition von %qT"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr "Unterschied zwischen %qE und %qD hat keinen Ganzzahltyp"
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr "statische Erklärung gescheitert: %s"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "Nicht-konstante Bedingung für statische Behauptung"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "Argument für decltype muss ein Ausdruck sein"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "decltype kann die Adresse der überladenen Funktion nicht auflösen"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr "__is_convertible_to"
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr "der Typ %qT der Variable %qD als konstanter Ausdruck ist kein Literal"
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "ungültiger Typ für Parameter %d der Funktion %q+#D als konstantem Ausdruck"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "ungültiger Rückgabetyp %qT der Funktion %q+D als konstantem Ausdruck"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr "%q#T hat virtuelle Basisklassen"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr "Konstruktor mit konstantem Ausdruck hat keinen leeren Körper"
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr "%<constexpr%>-Konstruktor für Union %qT muss genau ein nicht-statisches Datenelement initialisieren"
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "nicht initialisiertes Element %qD in %<constexpr%>-Konstruktor"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr "Körper der Funktion %qD mit konstantem Ausdruck ist keine Rückgabeanweisung"
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%q+D ist nicht als Funktion mit konstantem Audruck verwendbar, denn:"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "Ausdruck %qE bezeichnet keine Funktion mit konstantem Ausdruck"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr "Aufruf der Funktion %qD, die kein konstanter Ausdruck ist"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "%qD in konstantem Ausdruck aufgerufen"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, gcc-internal-format
msgid "%qD used before its definition"
msgstr "%qD vor seiner Definition verwendet"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr "Aufruf hat ringförmige Abhängigkeit"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "Auswertungstiefe des konstanten Ausdrucks überschreitet Höchstwert %d (-fconstexpr-depth= verwenden, um dies zu erhöhen)"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "%q+E ist kein Konstantenausdruck"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, gcc-internal-format
msgid "array subscript out of bound"
msgstr "Feldindex ist außerhalb der Feldgrenzen"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "%qE ist kein Konstantenausdruck"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "veränderliches %qD ist in konstantem Ausdruck nicht verwendbar"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr "Zugriff auf Element %qD statt auf initialisiertes Element %qD in Konstantenausdruck"
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "auf Wert von %qE wird über ein %qT GL-Wert in Konstantenausdruck zugegriffen"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "der Wert von %qD ist in konstantem Ausdruck nicht verwendbar"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "%qD in seiner eigenen Initialisierung verwendet"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, gcc-internal-format
msgid "%q#D is not const"
msgstr "%q#D ist nicht konstant"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr "%q#D ist volatile"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "%qD wurde nicht mit konstantem Ausdruck initialisiert"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD wurde nicht als %<constexpr%> definiert"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "%qD hat keinen Ganzzahl- oder Aufzählungstyp"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr "Verwendung des Wertes des konstruierten Objektes in konstantem Ausdruck"
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "Zwischenergebnis des nicht-literalen Typs %qT in konstantem Ausdruck"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "Ausdruck %qE ist kein konstanter Ausdruck"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "unerwarteter Ausdruck %qE der Art %s"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr "%qT kann nicht der Typ eines vollständigen konstanten Ausdrucks sein, da es veränderliche Sub-Objekte hat"
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr "Umwandlung des Zeigertyps %qT in arithmetischen Typ %qT in konstantem Ausdruck"
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr "Ausdruck %qE hat Seiteneffekte"
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr "Aufruf einer Elementfunktion des konstruierten Objektes in konstantem Ausdruck"
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr "Adresse eines Objektes %qE mit thread-lokalem oder automatischem Speicher ist kein konstanter Ausdruck"
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr "Typeid-Ausdruck ist kein konstanter Ausdruck, da %qE polymorphen Typ hat"
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr "Unterschied zweier Zeigerausdrücke ist kein konstanter Ausdruck"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "Zeigervergleichsausdruck ist kein konstanter Ausdruck"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "Division durch Null ist kein konstanter Ausdruck"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, gcc-internal-format
msgid "non-constant array initialization"
msgstr "nicht konstante Feldinitialisierung"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "unerwarteter AST der Art %s"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "%qE kann nicht per Referenz aufgefangen werden"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr "%qD bereits in Lambda-Ausdruck erfasst"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "%<this%> wurde für diese Lambda-Funktion nicht aufgefangen"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "%qV-Qualifizierer können nicht auf %qT angewendet werden"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "Attribut %qE kann nur auf Java-Klassendefinitionen angewendet werden"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "Attribut %qE kann nur auf Klassendefinitionen angewendet werden"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE ist veraltet; g++-vtables sind jetzt standardmäßig COM-verträglich"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "angefordertes init_priority ist keine Ganzzahlkonstante"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "nur Attribut %qE kann für Definitionen von Objekten eines Klassentyps im Datei-Gültigkeitsbereich verwendet werden"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "angefordertes init_priority ist außerhalb des Wertebereiches"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "angefordertes init_priority ist für interne Verwendung reserviert"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "Attribut %qE wird auf dieser Plattform nicht unterstützt"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "Überprüfung von lang_*: in %s, bei %s:%d gescheitert"
@@ -33855,446 +33907,451 @@ msgstr "ISO-C++ verbietet Anwendung von %<__alignof%> auf einen Ausdruck mit Fun
msgid "invalid use of non-static member function"
msgstr "falsche Benutzung einer nicht-statischen Elementfunktion"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr "Adresse eines temporären Wertes wird verwendet"
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "veraltete Konvertierung von Zeichenkettenkonstante in %qT"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "Anforderung des Elements %qD in %qE, das vom Zeigertyp %qT ist (vielleicht war %<->%> gemeint?)"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "Abfrage des Elementes %qD in %qE, das vom Nicht-Klassentyp %qT ist"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "ungültige Benutzung des nicht-statischen Datenelements %qE"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ungültiger Zugriff auf nicht-statisches Datenelement %qD des NULL-Objektes"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(vielleicht wurde das Makro %<offsetof%> falsch verwendet)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ungültiger Zugriff auf nicht-statisches Datenelement %qD des NULL-Objektes"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "Objekttyp %qT passt nicht zum Destruktornamen ~%qT"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "der zerstörte Typ ist %qT, aber der Destruktor verweist auf %qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%> ist kein Element von %qT"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT ist keine Basis von %qT"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD hat kein Element namens %qE"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD ist keine Elementtemplatefunktion"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT ist kein Zeiger auf Objekt"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "ungültige Verwendung von Feldindizierung bei Zeiger auf Element"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "ungültige Verwendung des unären %<*%> bei Zeiger auf Element"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "ungültige Verwendung impliziter Umwandlung bei Zeiger auf Element"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "Index fehlt in Feldreferenz"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO-C++ verbietet Indizierung eines Nicht-L-Wert-Feldes"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "Indizierung eines als %<register%> deklarierten Feldes"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "indizierter Wert ist weder ein Feld noch ein Zeiger"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "bei Verwendung von %qE fehlt Objekt"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO-C++ verbietet den Aufruf von %<::main%> vom Programm aus"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "%<.*%> oder %<->*%> muss verwendet werden, um Zeiger auf Element als Funktion in %<%E (...)%> aufzurufen, z.B. %<(... ->* %E) (...)%>"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qE kann nicht als Funktion verwendet werden"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "zu viele Argumente für Konstruktor %q#D"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "zu wenige Argumente für Konstruktor %q#D"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr "zu viele Argumente für Elementfunktion %q#D"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr "Zu wenige Argumente für Elementfunktion %q#D"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr "zu viele Argumente für Funktion %q#D"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr "zu wenige Argumente für Funktion %q#D"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "zu viele Argumente für Methode %q#D"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "zu wenige Argumente für Methode %q#D"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "zu viele Argumente für Funktion"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "zu wenige Argumente für Funktion"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "Parameter %P von %qD hat unvollständigen Typen %qT"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "Parameter %P hat unvollständigen Typen %qT"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "Umwandlung in Typ %qT von überladener Funktion wird angenommen"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL in Arithmetik verwendet"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, gcc-internal-format
msgid "left rotate count is negative"
msgstr "linker Rotationszähler ist negativ"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr "rechter Rotationszähler ist negativ"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "linker Rotationszähler >= Breite des Typs"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "rechter Rotationszähler >= Breite des Typs"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "Vergleich mit Zeichenkettenliteral führt zu undefiniertem Verhalten"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "Die Adresse von %qD wird nie NULL sein"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO-C++ verbietet Vergleich zwischen Zeiger und Ganzzahl"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "ungeordneter Vergleich mit Nicht-Gleitkomma-Argument"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "ungültige Operanden der Typen %qT und %qT für binäres %qO"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO-C++ verbietet die Verwendung eines Zeigers des Typs %<void *%> in Subtraktion"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO-C++ verbietet die Verwendung eines Zeigers auf eine Funktion in Subtraktion"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO-C++ verbietet die Verwendung eines Zeigers auf Methode in Subtraktion"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "ungültige Verwendung eines Zeigers auf einen unvollständigen Typen in Zeigerarithmetik"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr "Adresse des Konstruktors %qE wird genommen"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "Adresse des Destruktors %qE wird genommen"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "ungültige Verwendung von %qE um Zeiger auf Elementfunktion zu erzeugen"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr " eine qualifizierte ID ist erforderlich"
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "Klammern um %qE können nicht verwendet werden, einen Zeiger auf Elementfunktion zu erzeugen"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwenden"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer gebundenen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwenden"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "Adresse eines temporären Wertes wird ermittelt"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr "Adresse eines X-Wertes (R-Wert-Referenz) wird genommen"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO-C++ verbietet das Ermitteln der Adresse der Funktion %<::main%>"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO-C++ verbietet das Ermitteln der Adresse einer Umwandlung in einen Nicht-L-Wert-Ausdruck"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "Zeiger auf Referenzelement %qD kann nicht erzeugt werden"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO-C++ verbietet erhöhen einer Aufzählung"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO-C++ verbietet verringern einer Aufzählung"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "Zeiger auf unvollständigen Typen %qT kann nicht erhöht werden"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "Zeiger auf unvollständigen Typen %qT kann nicht verringert werden"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO-C++ verbietet Erhöhen eines Zeigers vom Typ %qT"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO-C++ verbietet Verringern eines Zeigers vom Typ %qT"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "ungültige Verwendung eines Boole'schen Ausdruck als Operand für %<operator--%>"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "Adresse von %<this%> kann nicht ermittelt werden, das ein R-Wert-Ausdruck ist"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "Adresse der Register-Variablen %qD angefordert"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "Adresse für %qD angefordert, was als %<register%> deklariert ist"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "Listeninitialisierung für Nicht-Klassentyp darf nicht geklammert sein"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "Ausdrucksliste als zusammengesetzten Ausdruck in Initialisierung behandelt"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "Ausdrucksliste als zusammengesetzten Ausdruck in Speicherinitialisierung behandelt"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "Ausdrucksliste als zusammengesetzten Ausdruck in funktionaler Umwandlung behandelt"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "%s Ausdrucksliste als zusammengesetzten Ausdruck behandelt"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr "kein Kontext, um Typ von %qE aufzulösen"
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "Umwandlung des Typs %qT in Typ %qT entfernt Qualifizierer"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "static_cast des Typs %qT in Typ %qT entfernt Qualifizierer"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "reinterpret_cast des Typs %qT in Typ %qT entfernt Qualifizierer"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "ungültiges static_cast vom Typ %qT in den Typ %qT"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "Umwandlung von %qT nach %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "ungültige Typumwandlung eines R-Wert-Ausdrucks des Typs %qT in Typ %qT"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "Typumwandlung von %qT nach %qT verliert Genauigkeit"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "Umwandlung von %qT in %qT erhöht erforderliche Ausrichtung des Zieltyps"
@@ -34303,221 +34360,221 @@ msgstr "Umwandlung von %qT in %qT erhöht erforderliche Ausrichtung des Zieltyps
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO-C++ verbietet Umwandlung zwischen Zeiger auf Funktion und Zeiger auf Objekt"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "ungültige Umwandlung von Typ %qT in Typ %qT"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "ungültige Verwendung von const_cast mit Typ %qT, das weder Zeiger, Referenz, noch vom Typ eines Zeigers auf Datenelement ist"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "ungültige Verwendung von const_cast mit Typ %qT, das ein Zeiger oder Referenz auf Funktionstyp ist"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "ungültiges const_cast eines R-Wertes des Typs %qT in Typ %qT"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "ungültiges const_cast von Typ %qT in Typ %qT"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO-C++ verbietet Umwandlung in Feldtyp %qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "ungültige Umwandlung in Funktionstyp %qT"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " in Auswertung von %<%Q(%#T, %#T)%>"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr "Zuweisung an Feld von Initialisierungsliste"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "unverträgliche Typen in Zuweisung von %qT an %qT"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, gcc-internal-format
msgid "array used as initializer"
msgstr "Feld als Initialisierung verwendet"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, gcc-internal-format
msgid "invalid array assignment"
msgstr "Ungültiger Feldzuweisung"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " in Umwandlung in Zeiger auf Elementfunktion"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "Umwandlung in Zeiger auf Element über virtuelle Basis %qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " in Umwandlung in Zeiger auf Element"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "ungültige Umwandlung in Typ %qT von Typ %qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "%qT kann nicht nach %qT für Argument %qP nach %qD umgewandelt werden"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "%qT kann nicht nach %qT im Standardargument umgewandelt werden"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr "%qT kann nicht nach %qT bei Argumentübergabe umgewandelt werden"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr "%qT kann nicht nach %qT umgewandelt werden"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr "%qT kann nicht nach %qT in Initialisierung umgewandelt werden"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr "%qT kann nicht nach %qT in Rückgabe umgewandelt werden"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr "%qT kann nicht nach %qT in Zuweisung umgewandelt werden"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "Parameter %qP von %qD könnte Kandidat für Formatattribut sein"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr "Parameter könnte ein Kandidat für ein Formatattribut sein"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "Ziel der Umwandlung könnte Kandidat ein für ein Formatattribut sein"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr "Ziel der Initialisierung könnte ein Kandidat für Formatattribut sein"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "linke Seite der Zuweisung könnte ein Kandidat für ein Formatattribut sein"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "bei Ãœbergabe des Arguments %P von %q+D"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "Referenz auf temporären Wert wird zurückgegeben"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "Referenz auf Nicht-L-Wert zurückgegeben"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "Referenz auf lokale Variable %q+D zurückgegeben"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "Adresse der lokalen Variable %q+D zurückgegeben"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "Wert von Destruktor zurückgegeben"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "vom Behandler eines Funktions-try-Blocks eines Konstruktors kann nicht zurückgekehrt werden"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "Rückgabe eines Wertes von einem Konstruktor"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "widersprüchliche Typen %qT und %qT für Lambda-Rückgabetypen hergeleitet"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "Return-Anweisung ohne Wert, in %qT zurückgebender Funktion"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "Return-Anweisung mit Wert in »void« zurückgebender Funktion"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> darf nicht NULL zurückgeben, außer es ist mit %<throw()%> deklariert (oder -fcheck-new ist eingeschaltet)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr "temporärer Wert wird als L-Wert verwendet"
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr "X-Wert (R-Wert-Referenz) wird als L-Wert verwendet"
@@ -35053,7 +35110,7 @@ msgstr "Iteratorschritt bei %L kann nicht Null sein"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr "Die Anzahl der Elemente im Feldkonstruktor bei %L erfordert Erhöhung der erlaubten oberen Grenze %d. Siehe Option -fmax-array-constructor"
@@ -37198,27 +37255,27 @@ msgstr "POINTER-wertige Funktion tritt auf rechter Seite der Zuweisung bei %L au
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr "Erweiterung: BOZ-Literal bei %L verwendet, um Nicht-Ganzzahlvariable »%s« zu initialisieren"
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr "Erweiterung: BOZ-Literal bei %L außerhalb einer DATA-Anweisung und außerhalb von INT/REAL/DBLE/CMPLX"
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr "BOZ-Literal bei %L ist bitweise übertragenes Nicht-Ganzzahlsymbol »%s«"
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Arithmetischer Unterlauf des bitweise übertragenen BOZ bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Arithmetischer Überlauf des bitweise übertragenen BOZ bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Arithmetisches NaN des bitweise übertragenen BOZ bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
@@ -37428,42 +37485,42 @@ msgstr "Nicht-POINTER in Zeiger-Verbindungskontext (%s) bei %L"
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr "LOCK_TYPE in Variablen-Definitionskontext (%s) bei %L"
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr "Scheinargument »%s« mit INTENT(IN) in Zeiger-Verbindungskontext (%s) bei %L"
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr "Scheinargument »%s« mit INTENT(IN) in Variablen-Definitionskontext (%s) bei %L"
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "Variable »%s« ist PROTECTED und kann nicht in Zeiger-Verbindungskontext (%s) bei %L auftreten"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "Variable »%s« ist PROTECTED und kann nicht in Variablen-Definitionskontext (%s) bei %L auftreten"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "Variable »%s« kann nicht in Variablen-Definitionskontext (%s) bei %L in PURE-Prozedur auftreten"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr "»%s« ist bei %L mit vektorindiziertem Ziel verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden"
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr "»%s« ist bei %L mit Ausdruck verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden"
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr "Verbundener Name »%s« kann nicht in Variablen-Definitionskontext (%s) bei %L auftreten, da sein Ziel bei %L es auch nicht kann"
@@ -37478,14 +37535,14 @@ msgstr "Unerwarteter Typ in Wahrheitswert-Umwandlung"
msgid "can't open input file: %s"
msgstr "Eingabedatei »%s« kann nicht geöffnet werden"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "Zwischenergebnis-Feld bei %L wird erzeugt"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "Aufruf von Funktion »%s« bei %L wird entfernt"
@@ -37595,12 +37652,12 @@ msgstr "Erstes Argument der definierten Zuweisung bei %L muss INTENT(OUT) oder I
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "Zweites Argument der definierten Zuweisung bei %L muss INTENT(IN)"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "Erstes Argument der Operatorschnittstelle bei %L muss INTENT(IN) sein"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "Zweites Argument der Operatorschnittstelle bei %L muss INTENT(IN) sein"
@@ -39413,128 +39470,128 @@ msgstr "Fehler beim Schreiben der Moduldatei: %s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "Namensliste %s kann nicht mit USE-Verbindung in %s umbenannt werden"
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr "Bei %3$C importiertes »%1$s« von Modul »%2$s« ist auch der Name der aktuellen Programmeinheit"
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr "Bei %2$L referenziertes Symbol »%1$s« nicht im Modul »%3$s« gefunden"
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr "Bei %2$L referenzierter Benutzeroperator »%1$s« nicht im Modul »%3$s« gefunden"
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr "Bei %2$L referenzierter intrinsischer Operator »%1$s« nicht im Modul »%3$s« gefunden"
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "Moduldatei »%s« kann bei %C nicht zum Schreiben geöffnet werden: %s"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "Fehler beim Schreiben der Moduldatei »%s«: %s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "Moduldatei »%s« kann nicht gelöscht werden: %s"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "Moduldatei »%s« kann nicht in »%s« umbenannt werden: %s"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "Vorübergehende Moduldatei »%s« kann nicht gelöscht werden: %s"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr "Symbol »%s« bereits deklariert"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "Das bei %2$L referenzierte Symbol »%1$s« ist nicht im gewählten Standard vorhanden"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr "Bei %2$L referenziertes Symbol »%1$s« nicht im Modul ISO_C_BINDING gefunden"
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr "Verwendung des intrinsischen Moduls »%s« bei »%C« steht mit nicht-intrinsischem vorher verwendeten Modulnamen in Konflikt"
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr "Verwendung der Konstante NUMERIC_STORAGE_SIZE aus intrinsischem Modul ISO_FORTRAN_ENV bei %L ist mit Option %s unverträglich"
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr "Verwendung der Konstante NUMERIC_STORAGE_SIZE aus intrinsischem Modul ISO_FORTRAN_ENV bei %C ist mit Option %s unverträglich"
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr "Bei %2$L referenziertes Symbol »%1$s« nicht im intrinsischen Modul ISO_FORTRAN_ENV gefunden"
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr "Fortran 2003: Intrinsisches Modul ISO_FORTRAN_ENV bei %C"
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Fortran 2003: Modul ISO_C_BINDING bei %C"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr "Intrinsisches Modul »%s« bei %C nicht gefunden"
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "Moduldatei »%s« kann bei %C nicht zum Lesen geöffnet werden: %s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr "Verwendung des nicht-intrinsischen Moduls »%s« bei %C steht mit vorher verwendetem intrinsischen Modulnamen in Konflikt"
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr "Bei %2$C geöffnete Datei »%1$s« ist keine GFORTRAN-Moduldatei"
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr "Fehler beim Einlesen bei Prüfung der Modulversion der bei %2$C geöffneten Datei »%1$s«"
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr "Falsche Modulversion »%1$s« (»%2$s« erwartet) für bei %4$C geöffnete Datei »%3$s«"
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "Das gerade erzeugte Modul kann nicht gleichzeitig verwendet werden (USE)!"
@@ -39619,7 +39676,7 @@ msgstr "Unerwarteter Ausschuss hinter $OMP BARRIER-Anweisung bei %C"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "Unerwarteter Ausschuss hinter NOWAIT-Klausel bei %C"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "IF-Klausel bei %L erfordert einen skalaren LOGICAL-Ausdruck"
@@ -40938,7 +40995,7 @@ msgstr "Das bei %2$L deklarierte INTRINSIC »%1$s« ist in den derzeitigen Stand
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr "Nicht-RECURSIVE Prozedur »%s« bei %L ruft sich möglicherweise rekursiv selbst auf. Sollte als RECURSIVE oder mit -frecursive verwendet werden"
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "Marke %d wird bei %L referenziert aber nirgendwo definiert"
@@ -41088,7 +41145,7 @@ msgstr "Funktion »%s« bei %L ist INTRINSIC, aber nicht mit eingebauter Funktio
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "Spezifische Funktion »%s« bei %L kann nicht aufgelöst werden"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "Funktion »%s« bei %L hat IMPLICIT-Typ"
@@ -41469,182 +41526,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "Basisobjekt für Aufruf der typgebundenen NOPASS-Prozedur bei %L muss skalar sein"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr "Keine passende spezifische Bindung für Aufruf des GENERIC »%s« bei %L gefunden"
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr "'%s' bei %L sollte eine SUBROUTINE sein"
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr "»%s« bei %L sollte eine FUNCTION sein"
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s bei %L muss skalar sein"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr "Gelöscht: %s bei %L muss eine Ganzzahl sein"
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s bei %L muss INTEGER sein"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "Schrittausdruck in DO-Schleife bei %L kann nicht Null sein"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr "DO-Schleife bei %L wird null mal ausgeführt"
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "FORALL-Indexname bei %L muss skalarer INTEGER sein"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "FORALL-Anfangsausdruck bei %L muss skalarer INTEGER sein"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "FORALL-Endausdruck bei %L muss skalarer INTEGER sein"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "FORALL-Schrittausdruck bei %L muss skalares %s sein"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "FORALL-Schrittausdruck bei %L kann nicht Null sein"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "FORALL-Index »%s« kann nicht in Tripel-Spezifikation bei %L auftreten"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr "ALLOCATE-Objekt bei %L muss ALLOCATABLE oder ein POINTER sein"
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr "Koindiziertes reservierbares Objekt bei %L"
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr "Quell-Ausdruck bei %L muss skalar sein oder den selben Rang wie das ALLOCATE-Objekt bei %L haben"
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr "Quell-Ausdruck bei %L und ALLOCATE-Objekt bei %L müssen die selbe Form haben"
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr "Typ der Entität bei %L ist mit Quellausdruck bei %L typunverträglich"
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr "Das ALLOCATE-Objekt bei %L und der Quellausdruck bei %L sollten Typparameter der gleichen Art haben"
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr "Der Quellausdruck bei %L sollte weder LOCK_TYPE noch LOCK_TYPE-Komponente haben, wenn ALLOCATE-Objekt bei %L ein Koarray ist"
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr "Reservierung von %s mit ABSTRACT-Basistyp bei %L erfordert Typspezifikation oder Quellausdruck"
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr "Reservierung von %s bei %L mit Typspezifikation erfordert den selben Zeichenkettenlängenparameter wie in der Deklaration"
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "In ALLOCATE-Anweisung bei %L ist Feld-Spezifikation erforderlich"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Koarray-Spezifikation in ALLOCATE-Anweisung bei %L erforderlich"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "Falsche Feldspezifikation in ALLOCATE-Anweisung bei %L"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr "»%s« darf nicht bei %L in einer Feldspezifikation in der gleichen ALLOCATE-Anweisung auftreten, wo es selbst alloziert wird"
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "In Koindex-Spezifikation in ALLOCATE-Anweisung bei %L wird »*« erwartet"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "Falsche Koarray-Spezifikation in ALLOCATE-Anweisung bei %L"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "Stat-Variable bei %L muss skalare INTEGER-Variable sein"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "Stat-Variable bei %L sollte nicht %s innerhalb der gleichen %s-Anweisung sein"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr "ERRMSG bei %L ist ohne STAT-Marke nutzlos"
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "ERRMSG-Variable bei %L muss skalare CHARACTER-Variable sein"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr "ERRMSG-Variable bei %L sollte nicht »%s« innerhalb der selben »%s«-Anweisung sein"
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr "ALLOCATE-Objekt bei %L tritt auch bei %L auf"
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr "ALLOCATE-Objekt bei %L ist Subobjekt des Objekts bei %L"
@@ -41653,175 +41710,175 @@ msgstr "ALLOCATE-Objekt bei %L ist Subobjekt des Objekts bei %L"
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr "CASE-Marke bei %L überschneidet sich mit CASE-Marke bei %L"
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "Ausdruck in CASE-Anweisung bei %L muss Typ %s haben"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "Ausdruck in CASE-Anweisung bei %L muss von der Art %d sein"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "Ausdruck in CASE-Anweisung bei %L muss skalar sein"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr "Auswahlausdruck in berechneter GOTO-Anweisung bei %L muss ein skalarer Ganzzahlausdruck sein"
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "Argument der SELECT-Anweisung bei %L kann nicht %s sein"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "Ausdruck in CASE-Anweisung bei %L ist nicht im Bereich von %s"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr "Der DEFAULT CASE bei %L kann nicht von zweitem DEFAULT CASE bei %L gefolgt werden"
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr "Logischer Bereich in CASE-Anweisung bei %L ist nicht erlaubt"
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr "Konstanter logischer Wert in CASE-Anweisung wird bei %L wiederholt"
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr "Bereichsspezifikation bei %L kann nie passen"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr "Logischer SELECT CASE Block bei %L hat mehr als zwei Fälle"
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr "Zugeordneter Name »%s« bei %L wird als Feld verwendet"
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "Selektor sollte in SELECT TYPE-Anweisung bei %L polymorph sein"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr "Abgeleiteter Typ »%s« bei %L muss erweiterbar sein"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "Abgeleiteter Typ »%s« bei %L muss eine Erweiterung von »%s« sein"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr "Doppelter CLASS IS-Block in SELECT TYPE-Anweisung bei %L"
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr "Intrinsisches NULL bei %L in Anweisung zum Datenaustausch erfordert MOLD="
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr "Element zum Datenaustausch bei %L kann nicht polymorph sein, außer es wird von einer definierten E/A-Prozedur verarbeitet"
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr "Datenübertragungselement bei %L kann keine POINTER-Komponenten haben, außer es wird von einer definierten E/A-Prozedur verarbeitet"
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr "Datenübertragungselement bei %L kann keine Prozedurzeiger-Komponenten haben"
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr "Datenübertragungselement bei %L kann keine ALLOCATABLE-Komponenten haben, außer es wird von einer definierten E/A-Prozedur verarbeitet"
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr "Datenübertragungselement bei %L kann keine PRIVATE-Komponenten haben"
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr "Datenübertragungselement bei %L kann keine vollständige Referenz auf Feld vermuteter Größe sein"
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "Lock-Variable bei %L muss Skalar mit LOCK_TYPE sein"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "»STAT=«-Argument bei %L muss skalare INTEGER-Variable sein"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "»ERRMSG=«-Argument bei %L muss skalare CHARACTER-Variable sein"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "»ACQUIRED_LOCK=«-Argument bei %L muss skalare LOGICAL-Variable sein"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "Argument für Imageset bei %L muss Skalar oder Rang-1-INTEGER-Ausdruck sein"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "Argument für Imageset bei %L muss zwischen 1 und num_images() liegen"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "Anweisung bei %L ist keine gültige Sprungzielanweisung für Sprungziel bei %L"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr "Sprung bei %L könnte Endlosschleife bewirken"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr "GOTO-Anweisung bei %L hinterlässt CRITICAL-Konstrukt für Marke bei %L"
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr "GOTO-Anweisung bei %L hinterlässt DO CONCURRENT-Konstrukt für Marke bei %L"
@@ -41829,950 +41886,950 @@ msgstr "GOTO-Anweisung bei %L hinterlässt DO CONCURRENT-Konstrukt für Marke be
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "Marke bei %L ist nicht im gleichen Block wie GOTO-Anweisung bei %L"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr "WHERE-Maske bei %L hat ungültige Form"
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "WHERE-Zuweisungsziel bei %L hat ungültige Form"
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr "Benutzerdefinierte Nicht-ELEMENTAL-Zuweisung in WHERE bei %L"
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "Nicht unterstützte Anweisung in WHERE bei %L"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "Zuweisung an FORALL-Indexvariable bei %L"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr "Das FORALL mit Index »%s« wird nicht auf der linken Seite der Zuweisung bei %L verwendet und könnte somit mehrere Zuweisungen an dieses Objekt auslösen"
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr "Ein äußeres FORALL-Konstrukt hat bereits einen Index mit Namen %L"
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "Klausel WHERE/ELSEWHERE bei %L erfordert ein LOGICAL-Feld"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr "CHARACTER-Ausdruck wird in Zuweisung (%d/%d) bei %L abgeschnitten"
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr "Koindizierter Ausdruck bei %L wird einer Variable abgeleiteten Typs mit einer POINTER-Komponente in einer PURE-Prozedur zugewiesen"
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr "Die unreine Variable bei %L wird einer Variable abgeleiteten Typs mit einer POINTER-Komponente in einer PURE-Prozedur zugewiesen (12.6)"
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "Zuweisung an koindizierte Variable bei %L in einer PURE-Prozedur"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr "Variable darf in intrinsischer Zuweisung bei %L nicht polymorph sein - bitte prüfen, ob es ein passendes spezifisches Unterprogramm für den »=«-Operator gibt"
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr "Koindizierte Variable darf keine reservierbare endgültige Komponente in Zuweisung bei %L haben"
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "Anweisung ASSIGNED GOTO bei %L erfordert eine INTEGER-Variable"
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "Variable »%s« wurde keine Zielmarke bei %L zugewiesen"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "Alternative RETURN-Anweisung bei %L erfordert einen SCALAR-INTEGER-Spezifizierer als Rückgabe"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr "ASSIGN-Anweisung bei %L erfordert eine skalare Standard-INTEGER-Variable"
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr "Arithmetische IF-Anweisung bei %L erfordert einen numerischen Ausdruck"
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr "Abbruchbedingung der DO WHILE-Schleife bei %L muss ein skalarer LOGICAL-Ausdruck sein"
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "FORALL-Maskenklausel bei %L erfordert einen skalaren LOGICAL-Ausdruck"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr "Binde-Marke »%s« für Common-Block »%s« bei %L kollidiert mit dem globalen Eintrag »%s« bei %L"
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr "Binde-Marke »%s« für Common-Block »%s« bei %L passt nicht zu Binde-Marke »%s« für Common-Block »%s« bei %L"
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr "Binde-Marke »%s« für Common-Block »%s« bei %L kollidiert mit globalem Eintrag »%s« bei %L"
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr "Binde-Marke »%s« bei %L kollidiert mit dem globalen Eintrag »%s« bei %L"
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr "Binde-Marke »%s« in Schnittstellenkörper bei %L kollidiert mit dem globalen Eintrag »%s« bei %L"
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr "Binde-Marke »%s« bei %L kollidiert mit globalem Eintrag »%s« bei %L"
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr "CHARACTER-Variable bei %L hat negative Länge %d, die Länge wurde auf Null gesetzt"
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "Zeichenkettenlänge bei %L ist zu groß"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "Zuordnungsfähiges Feld »%s« bei %L muss aufgeschobene Form haben"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr "Skalares Objekt »%s« bei %L kann nicht ALLOCATABLE sein"
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "Feldzeiger »%s« bei %L muss aufgeschobene Form haben"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "Feld »%s« bei %L kann keine aufgeschobene Form haben"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr "Typ »%s« der CLASS-Variable »%s« bei %L ist nicht erweiterbar"
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr "CLASS-Variable »%s« bei %L muss Attrappe, reservierbar oder Zeiger sein"
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr "Der Typ %s kann bei %L nicht mit Wirt verbunden werden, da er von unverträglichem bei %L definiertem Objekt mit gleichem Namen blockiert wird"
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr "Fortran 2008: Inbegriffenes SAVE für Modulvariable »%s« bei %L, benötigt wegen Standardkonstruktor"
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "Das Feld »%s« im Modul oder Hauptprogramm bei %L muss konstante Form haben"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr "Entität »%s« bei %L hat Parameter mit aufgeschobenem Typ und benötgt entweder das POINTER- oder ALLOCATABLE-Attribut"
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr "Entität mit vermuteter Zeichenlänge bei %L muss ein Scheinargument oder ein PARAMETER sein"
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr "»%s« bei %L muss in diesem Zusammenhang konstante Zeichenlänge haben"
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "COMMON-Variable »%s« bei %L muss konstante Zeichenlänge haben"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "Zuordnungsfähiges »%s« bei %L kann keine Initialisierung haben"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "Externes »%s« bei %L kann keine Initialisierung haben"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "Schein-»%s« bei %L kann keine Initialisierung haben"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "Intrinsisches »%s« bei %L kann keine Initialisierung haben"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "Funktionsergebnis »%s« bei %L kann keine Initialisierung haben"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "Automatisches Feld »%s« bei %L kann keine Initialisierung haben"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr "Zeichenwertige Anweisungsfunktion »%s« bei %L muss konstante Länge haben"
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: »%s« hat PRIVATE-Typ und kann kein Scheinargument von »%s« sein, das PUBLIC bei %L ist"
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr "Fortran 2003: Prozedur »%s« in PUBLIC-Schnittstelle »%s« bei %L nimmt Schneinargumente von »%s«, das PRIVATE ist"
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "Funktion »%s« bei %L kann keine Initialisierung haben"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "Externes Objekt »%s« bei %L darf keine Initialisierung haben"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "Elementare Funktion »%s« bei %L muss ein skalares Ergebnis haben"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "Anweisungsfunktion »%s« bei %L darf nicht POINTER- oder ALLOCATABLE-Attribut haben"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "CHARACTER(*)-Funktion »%s« bei %L kann nicht Feld-wertig sein"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "CHARACTER(*)-Funktion »%s« bei %L kann nicht Zeiger-wertig sein"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "CHARACTER(*)-Funktion »%s« bei %L kann nicht pure sein"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr "CHARACTER(*)-Funktion »%s« bei %L kann nicht rekursiv sein"
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "Veraltet: CHARACTER(*)-Funktion »%s« bei %L"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "Attribut PROCEDURE steht mit Attribut SAVE in »%s« bei %L in Konflikt"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "Attribut PROCEDURE steht mit Attribut INTENT in »%s« bei %L in Konflikt"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "Attribut PROCEDURE steht mit Attribut RESULT in »%s« bei %L in Konflikt"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "Attribut EXTERNAL steht mit Attribut FUNCTION in »%s« bei %L in Konflikt"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr "Dem Ergebnis »%s« als Prozedurzeiger bei %L fehlt das POINTER-Attribut"
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr "FINAL-Prozedur »%s« bei %L ist keine SUBROUTINE"
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "FINAL-Prozedur bei %L muss genau ein Argument haben"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "Argument der FINAL-Prozedur bei %L muss Typ »%s« haben"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "Argument der FINAL-Prozedur bei %L darf kein POINTER sein"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "Argument der FINAL-Prozedur bei %L darf nicht ALLOCATABLE sein"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "Argument der FINAL-Prozedur bei %L darf nicht OPTIONAL sein"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "Argument der FINAL-Prozedur bei %L darf nicht INTENT(OUT) sein"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "Nicht-skalare FINAL-Prozedur bei %L sollte Argument mit vermuteter Form haben"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr "Bei %2$L deklarierte FINAL-Prozedur »%1$s« hat den selben Rang (%3$d) wie »%4$s«"
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr "Bei %2$L wurde nur FINAL-Feldprozedur für abgeleiteten Typ »%1$s« definiert, skalare wird ebenfalls empfohlen"
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr "Finalisierung bei %L ist noch nicht implementiert"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr "»%s« und »%s« können nicht gemischte FUNCTION/SUBROUTINE für GENERIC »%s« bei %L sein"
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr "»%s« und »%s« für GENERIC »%s« bei %L sind mehrdeutig"
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr "Undefinierte spezifische Bindung »%s« als Ziel des GENERIC »%s« bei %L"
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr "GENERIC »%s« bei %L muss auf spezifische Bindung abzielen, »%s« ist ebenfalls GENERIC"
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr "GENERIC »%s« bei %L kann nicht spezifische Bindung mit gleichem Namen überschreiben"
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr "Typgebundener Operator bei %L kann nicht NOPASS sein"
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "»%s« muss eine Modulprozedur oder eine externe Prozedur mit expliziter Schnittstelle bei %L sein"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Prozedur »%s« mit PASS(%s) bei %L hat kein Argument »%s«"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "Prozedur »%s« mit PASS bei %L muss mindestens ein Argument haben"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr "Nicht-polymorphes Scheinargument von %s für weitergegebenes Objekt bei %L"
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "Argument »%s« von »%s« mit PASS(%s) bei %L muss abgeleiteten Typ »%s« haben"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "Scheinargument von %s für weitergegebenes Objekt bei %L muss ein Skalar sein"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "Scheinargument von %s für weitergegebenes Objekt bei %L darf nicht ALLOCATABLE sein"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "Scheinargument von %s für weitergegebenes Objekt bei %L darf nicht POINTER sein"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "Prozedur »%s« bei %L hat den gleichen Namen wie eine Komponente von »%s«"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr "Prozedur »%s« bei %L hat den selben Namen wie eine vererbte Komponente von »%s«"
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr "Bei %2$L deklarierter abgeleiteter Typ »%1$s« muss ABSTRACT sein, da »%3$s« DEFERRED und nicht überschrieben ist"
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr "Da der erweiterte Typ »%s« bei %L eine Koarray-Komponente hat, sollte der Elterntyp »%s« auch eine haben"
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr "Nicht-erweiterbarer abgeleiteter Typ »%s« bei %L darf nicht ABSTRACT sein"
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr "Zeichenkettenkomponente »%s« aufgeschobener Länge bei %L wird noch nicht unterstützt"
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "Koarray-Komponente »%s« bei %L muss reservierbar mit aufgeschobener Form sein"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr "Komponente »%s« bei %L mit TYPE(C_PTR) oder TYPE(C_FUNPTR) sollte kein Koarray sein"
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr "Komponente »%s« bei %L mit Koarray-Komponente sollte ein Nicht-Zeiger und nicht-reservierbares Skalar sein"
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr "Komponente »%s« bei %L hat das CONTIGUOUS-Attribut, aber ist kein Feldzeiger"
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr "Von Prozedurzeigerkomponente »%2$s« bei %3$L verwendete Schnittstelle »%1$s« ist in späterer PROCEDURE-Anweisung deklariert"
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "Schnittstelle »%s« der Prozedurzeiger-Komponente »%s« bei %L muss explizit sein"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Prozedurzeiger-Komponente »%s« mit PASS(%s) bei %L hat kein Argument »%s«"
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "Prozedurzeiger-Komponente »%s« mit PASS bei %L muss mindestens ein Argument haben"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "Argument »%s« von »%s« mit PASS(%s) bei %L muss abgeleiteten Typ »%s« haben"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "Parameter »%s« von »%s« mit PASS(%s) bei %L muss skalar sein"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "Argument »%s« von »%s« mit PASS(%s) bei %L darf kein POINTER-Attribut haben"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "Argument »%s« von »%s« mit PASS(%s) bei %L darf nicht ALLOCATABLE sein"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "Komponente »%s« von »%s« bei %L hat den gleichen Namen wie eine geerbte typgebundene Prozedur"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr "Zeichenlänge der Komponente »%s« muss ein konstanter Spezifikationsausdruck bei %L sein"
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr "Zeichenkomponente »%s« von »%s« bei %L mit aufgeschobener Länge muss POINTER oder ALLOCATABLE sein"
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: Die Komponente »%s« ist ein PRIVATE-Typ und kann nicht Komponente von »%s« sein, die PUBLIC bei %L ist"
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr "Polymorphe Komponente %s bei %L in SEQUENCE oder BIND(C)-Typ %s"
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "Komponente %s des bei %L deklarierten SEQUENCE-Typen hat kein SEQUENCE-Attribut"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr "Die Zeigerkomponente »%s« bei »%s« bei %L hat nicht deklarierten Typ"
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "Komponente »%s« mit CLASS bei %L muss allozierbar oder Zeiger sein"
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr "Fortran 2003: Allgemeiner Name »%s« der Funktion »%s« bei %L ist der gleiche wie der des abgeleiteten Typs bei %L"
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "Feld »%s« mit vermuteter Größe in Namensliste »%s« bei %L ist nicht erlaubt"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr "Fortran 2003: NAMELIST-Feldobjekt »%s« mit vermuteter Form in Namensliste »%s« bei %L"
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr "Fortran 2003: NAMELIST-Feldobjekt »%s« ohne konstante Form in Namensliste »%s« bei %L"
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr "Fortran 2003: NAMELIST-Objekt »%s« ohne konstante Zeichenlänge in Namensliste »%s« bei %L"
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr "NAMELIST-Objekt »%s« in Namensliste »%s« bei %L ist polymorph und erfordert eine definierte Ein-/Ausgabeprozedur"
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr "Fortran 2003: NAMELIST-Objekt »%s« in Namensliste »%s« bei %L mit ALLOCATABLE- oder POINTER-Komponenten"
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr "NAMELIST-Objekt »%s« in Namensliste »%s« bei %L hat ALLOCATABLE- oder POINTER-Komponenten und erfordert daher eine definierte Ein-/Ausgabeprozedur"
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr "NAMELIST-Objekt »%s« wurde als PRIVATE deklariert und kann kein Element der PUBLIC-Namensliste »%s« bei %L sein"
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr "NAMELIST-Objekt »%s« hat benutzungs-verbundene PRIVATE-Komponenten und kann kein Element der Namensliste »%s« bei %L sein"
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr "NAMELIST-Objekt »%s« hat PRIVATE-Komponenten und kann kein Element der PUBLIC-Namensliste »%s« bei %L sein"
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "Attribut PROCEDURE steht mit Attribut NAMELIST in »%s« bei %L in Konflikt"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "Parameterfeld »%s« bei %L kann nicht automatische oder vermutete Form haben"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr "Implizit angegebener PARAMETER »%s« bei %L passt nicht zu früherem IMPLICIT-Typ"
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "Unverträglicher abgeleiteter Typ in PARAMETER bei %L"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "Attribut PROTECTED steht mit Attribut EXTERNAL bei %L in Konflikt"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "Attribut PROCEDURE steht mit Attribut PROTECTED bei %L in Konflikt"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr "»%s« bei %L hat Attribut CONTIGUOUS, aber ist kein Feldzeiger oder Feld vermuteter Größe"
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "Feld mit vermuteter Größe bei %L muss ein Schein-Argument sein"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "Feld mit vermuteter Form bei %L muss ein Scheinargument sein"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "Symbol bei %L ist keine Scheinvariable"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr "»%s« bei %L kann nicht das VALUE-Attribut haben, da es kein Scheinargument ist"
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "Zeichenwertige Scheinvariable »%s« bei %L mit VALUE-Attribut muss konstante Länge haben"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr "C-kompatible zeichenwertige Scheinvariable »%s« bei %L mit VALUE-Attribut muss Länge eins haben"
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr "Der abgeleitete Typ »%s« bei %L hat Typ »%s«, der nicht definiert wurde"
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr "Variable »%s« bei %L kann nicht BIND(C) sein, weil es weder ein COMMON-Block noch mit Sichtbarkeit auf Modulebene deklariert ist"
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "Fortran 2003: PUBLIC %s »%s« bei %L mit abgeleitetem PRIVATE-Typen »%s«"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr "Variable %s bei %L mit LOCK_TYPE oder mit Subkomponente mit LOCK_TYPE muss ein Koarray sein"
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr "Das INTENT(OUT)-Scheinargument »%s« bei %L hat vermutete Größe und kann damit keine Standardinitialisierung haben"
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "Scheinargument »%s« bei %L mit LOCK_TYPE sollte nicht INTENT(OUT) sein"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "Funktionsergebnis »%s« bei %L sollte kein Koarray sein oder Koarray-Komponente haben"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr "Variable »%s« bei %L mit TYPE(C_PTR) oder TYPE(C_FUNPTR) sollte kein Koarray sein"
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr "Variable »%s« bei %L mit Koarraykomponente sollte ein Nichtzeiger, nichtallozierbares Skalar sein"
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr "Variable »%s« bei %L ist ein Koarray und ist weder ALLOCATABLE, SAVE, noch ein Scheinargument"
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "Koarray-Variable »%s« bei %L sollte keine Kodimensionen mit aufgeschobener Form haben"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "Zuordnungsfähige Koarray-Variable »%s« bei %L muss aufgeschobene Form haben"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr "Variable '%s' bei %L ist INTENT(OUT) und kann daher kein reservierbares Coarray sein oder Coarray-Komponenten haben"
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "Coarray-Hilfsvariable '%s' bei %L in BIND(C)-Prozedur '%s' nicht erlaubt"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr "Threadprivate bei %L ist nicht SAVEd"
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr "BLOCK DATA Element »%s« bei %L muss in COMMON sein"
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr "DATA-Feld »%s« bei %L muss in vorheriger Deklaration angegeben werden"
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "DATA-Element '%s' bei %L kann keinen Coindex haben"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr "DATA-Element '%s' bei %L ist ein Zeiger und muss daher ein vollständiges Feld sein"
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr "Abschnitt eines nicht konstanten Feldes bei %L in DATA-Anweisung"
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr "DATA-Anweisung bei %L hat mehr Variablen als Werte"
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr "Anfang der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werden"
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr "Ende der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werden"
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr "Schritt der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werden"
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr "DATA-Anweisung bei %L hat mehr Werte als Variablen"
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "Marke %d bei %L definiert, aber nicht verwendet"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "Marke %d bei %L definiert, kann aber nicht verwendet werden"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr "Variable »%s« abgeleiteten Typs bei %L muss SEQUENCE-Attribut haben, um EQUIVALENCE-Objekt zu sein"
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr "Variable »%s« abgeleiteten Typs bei %L kann keine ALLOCATABLE-Komponenten haben, um EQUIVALENCE-Objekt zu sein"
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr "Variable »%s« abgeleiteten Typs bei %L mit Standardinitialisierung kann nicht in EQUIVALENCE mit einer Variablen in COMMON sein"
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr "Variable »%s« abgeleiteten Typs bei %L mit Zeigerkomponenten kann kein EQUIVALENCE-Objekt sein"
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "Syntaxfehler in EQUIVALENCE-Anweisung bei %L"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr "Entweder alle oder keines der Objekte in bei %L gesetztem EQUIVALENCE sollte das Attribut PROTECTED haben"
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr "Allgemeines Blockelement »%s« bei %L kann kein EQUIVALENCE-Objekt in PURE-Prozedur »%s« sein"
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Benannte Konstante »%s« bei %L kann kein EQUIVALENCE-Objekt sein"
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr "Feld »%s« bei %L mit nicht-konstanten Grenzen kann kein EQUIVALENCE-Objekt sein"
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Strukturkomponente »%s« bei %L kann kein EQUIVALENCE-Objekt sein"
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "Teilzeichenkette bei %L hat Länge Null"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "Fortran 2003: PUBLIC-Funktion »%s« bei %L mit PRIVATE-Typen »%s«"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "ENTRY »%s« bei %L hat keinen IMPLICIT-Typ"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "Prozedur für Benutzeroperator »%s« bei %L muss eine FUNKTION sein"
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr "Prozedur für Benutzeroperator »%s« bei %L kann nicht vermutete Zeichenlänge haben"
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "Prozedur für Benutzeroperator »%s« bei %L muss mindestens ein Argument haben"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr "Erstes Argument der Operatorschnittstelle bei %L kann nicht optional sein"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "Zweites Argument der Operatorschnittstelle bei %L kann nicht optional sein"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "Operatorschnittstelle bei %L darf höchstens zwei Argumente haben"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr "Enthaltene Prozedur »%s« bei %L einer PURE-Prozedur muss auch PURE sein"
@@ -43382,17 +43439,17 @@ msgstr "Ãœberlappende ungleiche Initialisierungen in EQUIVALENCE bei %L"
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr "BOZ-konstante bei %L ist zu groß (%ld vs %ld Bits)"
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr "Bei %L wird ein vorübergehendes Feld für Argument »%s« erzeugt"
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "Möglicher Frontend-Fehler: Aufgeschobene Feldgröße ohne Zeiger, allozierbares Attribut oder abgeleiteter Typ ohne allozierbare Komponenten."
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "Falscher Ausdruckstyp beim Durchlaufen (%d)"
@@ -43634,7 +43691,7 @@ msgstr "REAL(KIND=10) nicht verfügbar für Option -freal-8-real-16"
msgid "Array element size too big at %C"
msgstr "Feldelementgröße bei %C zu groß"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code(): Falscher Anweisungscode"
@@ -43936,7 +43993,7 @@ msgstr "Zielname für Abhängigkeiten-Verfolgung konnte nicht ermittelt werden"
msgid "internal error - invalid Utf8 name"
msgstr "interner Fehler - ungültiger UTF-8-Name"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "Ausschuss am Ende der Signaturzeichenketten"
@@ -45022,6 +45079,15 @@ msgstr "%<-fobjc-sjlj-exceptions%> wird für %<-fnext-runtime%> ignoriert, wenn
msgid "creating selector for nonexistent method %qE"
msgstr "für nicht existierende Methode %qE wird Selektor erzeugt"
+#~ msgid "floating point constant truncated to integer"
+#~ msgstr "Gleitkommakonstante auf Ganzzahl abgeschnitten"
+
+#~ msgid "too many elements in composite literal"
+#~ msgstr "zu viele Elemente in zusammengesetztem Literal"
+
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs scheint ein falsch geschriebener Interrupt-Handler zu sein"
+
#~ msgid "Interpret any REAL(4) as a REAl(16)"
#~ msgstr "Jeden REAL(4) als REAL(16) interpretieren"
@@ -47730,9 +47796,6 @@ msgstr "für nicht existierende Methode %qE wird Selektor erzeugt"
#~ msgid "Possible frontend bug: array constructor not expanded"
#~ msgstr "Möglicher Frontend-Fehler: Feldkonstruktor nicht expandiert"
-#~ msgid "Function does not return a value"
-#~ msgstr "Funktion gibt keinen Wert zurück"
-
#~ msgid "Function return value not set"
#~ msgstr "Rückgabewert der Funktion nicht gesetzt"
diff --git a/gcc/po/el.po b/gcc/po/el.po
index 0c9bd88c323..2b46ae746b4 100644
--- a/gcc/po/el.po
+++ b/gcc/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.0-b20041128\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2004-12-15 18:53+0000\n"
"Last-Translator: Simos Xenitellis <simos74@gmx.net>\n"
"Language-Team: Greek <nls@tux.hellug.gr>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
#, fuzzy
msgid "<anonymous>"
@@ -26,18 +26,18 @@ msgstr "((ανώνυμο))"
msgid "({anonymous})"
msgstr "((ανώνυμο))"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
msgid "expected end of line"
msgstr "Μη οÏισμένο όνομα %s"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, fuzzy, gcc-internal-format
msgid "expected %<;%>"
msgstr "Μη οÏισμένο όνομα %s"
@@ -45,17 +45,17 @@ msgstr "Μη οÏισμένο όνομα %s"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, fuzzy, gcc-internal-format
msgid "expected %<(%>"
msgstr "Μη οÏισμένο όνομα %s"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
msgid "expected %<,%>"
msgstr "Μη οÏισμένο όνομα %s"
@@ -66,19 +66,19 @@ msgstr "Μη οÏισμένο όνομα %s"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
msgid "expected %<)%>"
msgstr "Μη οÏισμένο όνομα %s"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
msgid "expected %<]%>"
msgstr "Μη οÏισμένο όνομα %s"
@@ -87,25 +87,25 @@ msgstr "Μη οÏισμένο όνομα %s"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
msgid "expected %<}%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, fuzzy, gcc-internal-format
msgid "expected %<{%>"
msgstr "Μη οÏισμένο όνομα %s"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
msgid "expected %<:%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, fuzzy, gcc-internal-format
msgid "expected %<while%>"
msgstr "Μη οÏισμένο όνομα %s"
@@ -115,39 +115,39 @@ msgstr "Μη οÏισμένο όνομα %s"
msgid "expected %<.%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
msgid "expected %<@end%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
msgid "expected %<>%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, fuzzy, gcc-internal-format
msgid "expected %<=%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr ""
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
msgid "expected %<[%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
msgid "(anonymous)"
msgstr "((ανώνυμο))"
@@ -317,12 +317,12 @@ msgstr ""
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr ""
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, fuzzy, c-format
msgid "invalid expression as operand"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
@@ -1219,19 +1219,19 @@ msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζεÏ
msgid " inlined from %qs"
msgstr "Μη έγκυÏη Ï€ÏοτεÏαιότητα `%s'"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr ""
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
@@ -1402,17 +1402,17 @@ msgid "this is the insn:"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
#, fuzzy
msgid "could not find a spill register"
msgstr "αδυναμία εÏÏεσης βÏόχου"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr ""
@@ -2572,117 +2572,117 @@ msgstr "επιστÏοφή"
msgid "<unknown>"
msgstr ""
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, fuzzy, c-format
msgid "invalid %%H value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, fuzzy, c-format
msgid "invalid %%J value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, fuzzy, c-format
msgid "invalid %%r value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, fuzzy, c-format
msgid "invalid %%R value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, fuzzy, c-format
msgid "invalid %%N value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, fuzzy, c-format
msgid "invalid %%P value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, fuzzy, c-format
msgid "invalid %%h value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, fuzzy, c-format
msgid "invalid %%L value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, fuzzy, c-format
msgid "invalid %%m value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, fuzzy, c-format
msgid "invalid %%M value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, fuzzy, c-format
msgid "invalid %%U value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, fuzzy, c-format
msgid "invalid %%s value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, fuzzy, c-format
msgid "invalid %%C value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, fuzzy, c-format
msgid "invalid %%E value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, fuzzy, c-format
msgid "unknown relocation unspec"
msgstr "Δεν είναι δυνατόν να βÏεθεί ο Ï„Ïπος του επεξεÏγαστή."
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, fuzzy, c-format
msgid "invalid %%xn code"
msgstr "μη έγκυÏο δικαίωμα"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, fuzzy, c-format
msgid "predicated Thumb instruction"
msgstr "Ακατάλληλη εντολή"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, fuzzy, c-format
msgid "predicated instruction in conditional sequence"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
msgid "Unsupported operand for code '%c'"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, fuzzy, c-format
msgid "invalid shift operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2690,84 +2690,84 @@ msgstr "μη έγκυÏος χÏήστης"
msgid "invalid operand for code '%c'"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, fuzzy, c-format
msgid "instruction never executed"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, fuzzy, c-format
msgid "missing operand"
msgstr "έχει παÏαληφθεί η λίστα με τα πεδία"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
msgid "function parameters cannot have __fp16 type"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
msgid "functions cannot return __fp16 type"
msgstr ""
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
msgid "operands to %T/%t must be reg + const_int:"
msgstr ""
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
msgid "bad address, not an I/O address:"
msgstr ""
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
msgid "bad address, not a constant:"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr ""
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
#, fuzzy
msgid "invalid insn:"
msgstr "μη έγκυÏος χÏήστης"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
#, fuzzy
msgid "incorrect insn:"
msgstr "λάθος συνθηματικό"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
#, fuzzy
msgid "unknown move insn:"
msgstr "άγνωστο σετ `%s'"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr ""
@@ -2783,8 +2783,8 @@ msgstr "μη έγκυÏος χÏήστης"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2878,22 +2878,22 @@ msgstr "Μη οÏισμένο όνομα %s"
msgid "unrecognized address"
msgstr "Μη αναγνωÏίσημο όνομα επιφάνειας `%s'"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
#, fuzzy
msgid "unrecognized supposed constant"
msgstr "άγνωστο Ï€Ïόθεμα: %s"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr ""
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr ""
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr ""
@@ -2901,7 +2901,7 @@ msgstr ""
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, fuzzy, c-format
msgid "invalid operand output code"
msgstr "Μη έγκυÏος κώδικας αίτησης"
@@ -3048,73 +3048,73 @@ msgstr "αÏχείο εξόδου"
msgid "bad output_condmove_single operand"
msgstr "αÏχείο εξόδου"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, fuzzy, c-format
msgid "invalid UNSPEC as operand"
msgstr "μη έγκυÏη μετατόπιση UTC"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr ""
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr ""
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr ""
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr ""
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, c-format
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr ""
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr ""
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, fuzzy, c-format
msgid "invalid operand code '%c'"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, fuzzy, c-format
msgid "invalid constraints for operand"
msgstr "μη έγκυÏος χÏήστης"
# src/grep.c:1133
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
#, fuzzy
msgid "unknown insn mode"
msgstr "άγνωστη μέθοδος καταλόγων"
@@ -3144,38 +3144,38 @@ msgstr ""
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr ""
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
msgid "invalid %%G mode"
msgstr "μη έγκυÏο δικαίωμα"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr ""
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
#, fuzzy
msgid "invalid conversion from %<__fpreg%>"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
#, fuzzy
msgid "invalid conversion to %<__fpreg%>"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
#, fuzzy
msgid "invalid operation on %<__fpreg%>"
msgstr "Μη έγκυÏος χαÏακτήÏας παÏαβολής"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, fuzzy, c-format
msgid "invalid %%P operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, fuzzy, c-format
msgid "invalid %%p value"
msgstr "μη έγκυÏος χÏήστης"
@@ -3256,7 +3256,7 @@ msgid "post-increment address is not a register"
msgstr ""
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
#, fuzzy
msgid "bad address"
msgstr "Εσφαλμένη διεÏθυνση"
@@ -3425,87 +3425,87 @@ msgstr ""
msgid "bad move"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
msgid "invalid %%c value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, fuzzy, c-format
msgid "invalid %%f value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, fuzzy, c-format
msgid "invalid %%F value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, fuzzy, c-format
msgid "invalid %%G value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, fuzzy, c-format
msgid "invalid %%j code"
msgstr "μη έγκυÏο δικαίωμα"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, fuzzy, c-format
msgid "invalid %%J code"
msgstr "μη έγκυÏο δικαίωμα"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, fuzzy, c-format
msgid "invalid %%k value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, fuzzy, c-format
msgid "invalid %%K value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, fuzzy, c-format
msgid "invalid %%O value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, fuzzy, c-format
msgid "invalid %%q value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, fuzzy, c-format
msgid "invalid %%S value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, fuzzy, c-format
msgid "invalid %%T value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, fuzzy, c-format
msgid "invalid %%u value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, fuzzy, c-format
msgid "invalid %%v value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, fuzzy, c-format
msgid "invalid %%x value"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "μη έγκυÏη μέτÏηση επανάληψης `%s' στη κατασκευή [c*n]"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
#, fuzzy
msgid "AltiVec argument passed to unprototyped function"
msgstr "Ï€Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα"
@@ -3605,60 +3605,60 @@ msgstr "Μη έγκυÏη επιλογή `%s'"
msgid "invalid operand to %%S"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr ""
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr ""
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr ""
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, fuzzy, c-format
msgid "invalid %%Y operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, fuzzy, c-format
msgid "invalid %%A operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, fuzzy, c-format
msgid "invalid %%B operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
msgid "invalid %%C operand"
msgstr "μη έγκυÏη μετατόπιση UTC"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
msgid "invalid %%D operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, fuzzy, c-format
msgid "invalid %%f operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, fuzzy, c-format
msgid "invalid %%s operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr ""
@@ -3683,7 +3683,7 @@ msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάÏ
msgid "xstormy16_print_operand: unknown code"
msgstr ""
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, fuzzy, c-format
msgid "invalid %%c operand"
msgstr "μη έγκυÏος χÏήστης"
@@ -3698,22 +3698,22 @@ msgstr "μη έγκυÏος χÏήστης"
msgid "invalid %%H specifier"
msgstr "μη έγκυÏο δικαίωμα"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
msgid "invalid %%h operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
msgid "invalid %%I operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
msgid "invalid %%i operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
msgid "invalid %%j operand"
msgstr "μη έγκυÏος χÏήστης"
@@ -3723,7 +3723,7 @@ msgstr "μη έγκυÏος χÏήστης"
msgid "invalid %%%c operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
msgid "invalid %%N operand"
msgstr "μη έγκυÏος χÏήστης"
@@ -3733,37 +3733,37 @@ msgstr "μη έγκυÏος χÏήστης"
msgid "invalid operand for 'r' specifier"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
msgid "invalid %%H operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
msgid "invalid %%L operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
msgid "invalid %%M operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
msgid "invalid %%t operand"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
msgid "invalid %%t operand '"
msgstr "μη έγκυÏος χÏήστης"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
msgid "invalid %%r operand"
msgstr "μη έγκυÏος χÏήστης"
@@ -3833,11 +3833,11 @@ msgstr "μη έγκυÏος χÏόνος έναÏξης"
msgid "address offset not a constant"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr ""
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr ""
@@ -4069,7 +4069,7 @@ msgstr ""
msgid "candidates are:"
msgstr ""
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4123,49 +4123,49 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr ""
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr ""
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr ""
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, fuzzy, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "λάθος αÏιθμός οÏισμάτων"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr ""
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
msgid "in argument to unary !"
msgstr "Λείπει παÏάμετÏος για `%s'"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4442,7 +4442,7 @@ msgstr "μη έγκυÏος χÏήστης"
msgid "Bad type in constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
#, fuzzy
msgid "Unexpected end of module"
msgstr "Μη οÏισμένο όνομα %s"
@@ -4474,12 +4474,12 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
#, fuzzy
msgid "assignment"
msgstr "Ï€ÏοσπέÏασμα οÏίσματος"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
#, fuzzy
msgid "pointer assignment"
msgstr "Ï€ÏοσπέÏασμα οÏίσματος"
@@ -4568,48 +4568,48 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr ""
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
msgid "End expression in DO loop"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4618,7 +4618,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4689,7 +4689,7 @@ msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏ
msgid "Memory allocation failed"
msgstr ""
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -4895,7 +4895,7 @@ msgstr "δεν είναι δυνατό να παÏαληφθεί ο χÏήστη
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -4954,6 +4954,10 @@ msgstr ""
msgid "static is not supported on TPF-OS"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr ""
@@ -4994,11 +4998,6 @@ msgstr ""
msgid "no processor type specified for linking"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-msgid "gfortran does not support -E without -cpp"
-msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr ""
@@ -5052,6 +5051,11 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+msgid "gfortran does not support -E without -cpp"
+msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr ""
@@ -8224,6 +8228,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -10640,18 +10648,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
msgid "Functions which return values must end with return statements"
msgstr ""
@@ -12184,266 +12204,275 @@ msgstr ""
msgid "Create a position independent executable"
msgstr ""
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
msgid "invalid use of type"
msgstr "μη έγκυÏος χÏήστης"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-msgid "floating point constant truncated to integer"
-msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr ""
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
msgid "expected numeric type"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+msgid "expected boolean type"
+msgstr "%s: αναμενόταν αÏιθμητική τιμή."
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
msgid "expected integer or boolean type"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
msgid "invalid operand for unary %<&%>"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
msgid "expected pointer"
msgstr "Μη οÏισμένο όνομα %s"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
msgid "incompatible types in binary expression"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
msgid "shift of non-integer operand"
msgstr "Ο κατάλογος `%s' δεν είναι Ï€Ïοσιτός."
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr ""
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
msgid "negative shift count"
msgstr "ελάχιστο μέγεθος αλφαÏιθμητικοÏ"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
msgid "object is not a method"
msgstr "Το επώνυμο αντικείμενο δεν είναι αναζητήσιμο"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
msgid "method type does not match object type"
msgstr "λάθος αÏιθμός οÏισμάτων"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
msgid "invalid use of %<...%> with builtin function"
msgstr "μη έγκυÏος αÏιθμός πεδίου: `%s'"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "χωÏίς οÏίσματα"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
msgid "too many arguments"
msgstr "πάÏα πολλά οÏίσματα"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
msgid "argument 1 must be a map"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
msgid "invalid type for make function"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
msgid "bad size for make"
msgstr "Ακατάλληλη τιμή στο ai_flags"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
msgid "too many arguments to make"
msgstr "πάÏα πολλά οÏίσματα"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
msgid "argument must be array or slice or channel"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
msgid "unsupported argument type to builtin function"
msgstr "πάÏα πολλά οÏίσματα"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
msgid "argument must be channel"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
msgid "argument must be a field reference"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
msgid "left argument must be a slice"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
msgid "first argument must be []byte"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
msgid "second argument must be slice or string"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
msgid "argument 2 has invalid type"
msgstr "μη πλήÏης εγγÏαφή"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
msgid "argument must have complex type"
msgstr "μη πλήÏης εγγÏαφή"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
msgid "complex arguments must have identical types"
msgstr "διπλός Ï€ÏοσδιοÏιστής μηνÏματος"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
msgid "complex arguments must have floating-point type"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+msgid "invalid use of %<...%> with non-slice"
+msgstr "μη έγκυÏος χÏήστης"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
msgid "expected function"
msgstr "Μη οÏισμένο όνομα %s"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
msgid "incompatible type for receiver"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "μη έγκυÏος αÏιθμός πεδίου: `%s'"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
msgid "number of results does not match number of values"
msgstr "λάθος αÏιθμός οÏισμάτων"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
msgid "index must be integer"
msgstr "διπλός Ï€ÏοσδιοÏιστής μηνÏματος"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
msgid "slice end must be integer"
msgstr "διπλός Ï€ÏοσδιοÏιστής μηνÏματος"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
#, fuzzy
msgid "slice of unaddressable value"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
msgid "incompatible type for map index"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
msgid "too many expressions for struct"
msgstr "υπεÏβολικά πολλά δευτεÏόλεπτα αναπήδησης"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
msgid "too few expressions for struct"
msgstr "Ï€Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
msgid "invalid unsafe.Pointer conversion"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
#, fuzzy
msgid "type assertion only valid for interface types"
msgstr "Μη έγκυÏος εξακÏιβωτής(verifier) εξυπηÏετοÏμενου"
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
msgid "expected channel"
msgstr "Μη οÏισμένο όνομα %s"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
msgid "invalid left hand side of assignment"
@@ -12478,20 +12507,20 @@ msgstr "Έχει παÏαληφθεί εντολή"
msgid "expected boolean expression"
msgstr "Μη έγκυÏη Ï€ÏοποÏευόμενη κανονική έκφÏαση"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
msgid "incompatible types in send"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -12544,78 +12573,78 @@ msgstr ""
msgid "cannot use type %s as type %s"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
msgid "different receiver types"
msgstr "είδος μοÏφής"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
msgid "different number of parameters"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
msgid "different parameter types"
msgstr "είδος μοÏφής"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
#, fuzzy
msgid "different varargs"
msgstr "είδος μοÏφής"
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
#, fuzzy
msgid "different result types"
msgstr "είδος μοÏφής"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
msgid "type has no methods"
msgstr "σφάλμα κατά την ανάγνωση της εισόδου"
# src/main.c:785
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
msgid "ambiguous method %s%s%s"
msgstr "Ασαφής μοÏφή `%s'"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
msgid "missing method %s%s%s"
msgstr "Λείπει παÏάμετÏος για `%s'"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -12682,7 +12711,7 @@ msgstr ""
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr ""
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, fuzzy, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "πάÏα πολλά οÏίσματα"
@@ -12704,7 +12733,7 @@ msgstr ""
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
@@ -12786,7 +12815,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, fuzzy, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "μη έγκυÏος αÏιθμός από γÏαμμές"
@@ -12880,8 +12909,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr ""
@@ -13156,7 +13185,7 @@ msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
msgid "declaration of %q+D shadows a previous local"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
@@ -13262,7 +13291,7 @@ msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
msgid "%qE defined as wrong kind of tag"
msgstr ""
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, fuzzy, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "μη έγκυÏος αÏιθμός από γÏαμμές"
@@ -13380,7 +13409,7 @@ msgstr "έχουν παÏαληφθεί οÏίσματα"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr ""
@@ -13390,7 +13419,7 @@ msgstr ""
msgid "variable %qD has initializer but incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, fuzzy, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
@@ -13420,7 +13449,7 @@ msgstr "σφάλμα κατά το κλείσιμο της εισόδου `%s'"
msgid "zero or negative size array %q+D"
msgstr ""
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, fuzzy, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "Το όνομα `%s' είναι άγνωστο\n"
@@ -13531,7 +13560,7 @@ msgstr "Ο κατάλογος `%s' δεν είναι Ï€Ïοσιτός."
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -13617,7 +13646,7 @@ msgstr "ΕγγÏαφή ονομάτων των επιλεγμένων λέξεω
msgid "storage class specified for unnamed parameter"
msgstr "ΕγγÏαφή ονομάτων των επιλεγμένων λέξεων-κλειδιών"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr ""
@@ -13766,7 +13795,7 @@ msgstr "%s: διπλός οÏισμός έκδοσης κατηγοÏίας"
msgid "function definition has qualified void return type"
msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση πεδίου: `%s'"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr ""
@@ -13877,7 +13906,7 @@ msgstr ""
msgid "a member of a structure or union cannot have a variably modified type"
msgstr ""
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, fuzzy, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "ο χάÏτης χαÏακτήÏων `%s' οÏίστηκε ήδη"
@@ -14301,7 +14330,7 @@ msgstr "λάθος αÏιθμός οÏισμάτων"
msgid "argument %qD doesn%'t match prototype"
msgstr ""
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, fuzzy, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
@@ -14494,7 +14523,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr ""
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr ""
@@ -14504,7 +14533,7 @@ msgstr ""
msgid "unknown type name %qE"
msgstr "άγνωστος χαÏακτήÏας `%s'"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, fuzzy, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "δημιουÏγία αÏχείου `%s'\n"
@@ -14514,7 +14543,7 @@ msgstr "δημιουÏγία αÏχείου `%s'\n"
msgid "expected %<;%>, identifier or %<(%>"
msgstr ""
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
@@ -14534,7 +14563,7 @@ msgstr "Μη οÏισμένο όνομα %s"
msgid "data definition has no type or storage class"
msgstr ""
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -14562,7 +14591,7 @@ msgstr "αÏχεία fifo δεν υποστηÏίζονται"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "αÏχεία fifo δεν υποστηÏίζονται"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, fuzzy, gcc-internal-format
msgid "expected string literal"
msgstr "μη τεÏματιζόμενo αλφαÏιθμητικό"
@@ -14589,18 +14618,18 @@ msgstr ""
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, fuzzy, gcc-internal-format
msgid "expected identifier"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, fuzzy, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "σκουπίδια στο τέλος του αÏιθμοÏ"
@@ -14730,7 +14759,7 @@ msgstr ""
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -14759,17 +14788,17 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, fuzzy, gcc-internal-format
msgid "expected statement"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr ""
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr ""
@@ -14834,7 +14863,7 @@ msgstr "αÏχεία fifo δεν υποστηÏίζονται"
msgid "cannot take address of %qs"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το αÏχείο fifo `%s'"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, fuzzy, gcc-internal-format
msgid "expected expression"
msgstr "Μη έγκυÏη Ï€ÏοποÏευόμενη κανονική έκφÏαση"
@@ -14874,257 +14903,257 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr ""
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "λάθος αÏιθμός οÏισμάτων"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr ""
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr ""
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr ""
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "ΕγγÏαφή ονομάτων των επιλεγμένων λέξεων-κλειδιών"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "κακοδιαμοÏφωμένη γÏαμμή αγνοήθηκε"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "κακοδιαμοÏφωμένη γÏαμμή αγνοήθηκε"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, fuzzy, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "κακοδιαμοÏφωμένη γÏαμμή αγνοήθηκε"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
msgid "too many %qs clauses"
msgstr "πάÏα πολλά οÏίσματα"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr ""
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
msgid "expected integer expression"
msgstr "Μη έγκυÏη Ï€ÏοποÏευόμενη κανονική έκφÏαση"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
msgid "invalid schedule kind"
msgstr "μη έγκυÏο δικαίωμα"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, fuzzy, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "κακοδιαμοÏφωμένη γÏαμμή αγνοήθηκε"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, fuzzy, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "κακοδιαμοÏφωμένη γÏαμμή αγνοήθηκε"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
msgid "for statement expected"
msgstr "αναμενόταν ')'\n"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15134,7 +15163,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, fuzzy, gcc-internal-format
msgid "invalid use of void expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
@@ -15200,70 +15229,75 @@ msgstr ""
msgid "function return types not compatible due to %<volatile%>"
msgstr ""
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
# src/main.c:697 src/main.c:751
-#: c-typeck.c:2148
+#: c-typeck.c:2160
#, fuzzy, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "Άγνωστη γλώσσα `%s'"
# src/getopt.c:628
# src/getopt.c:628
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, fuzzy, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "%s: η επιλογή `%s' είναι ασαφής\n"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, fuzzy, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "Δεν μποÏεί να καθοÏιστεί το όνομα του συστήματος"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "το πέÏασμα του οÏίσματος %d του δείκτη στη συνάÏτηση"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, fuzzy, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "το πέÏασμα του οÏίσματος %d του δείκτη στη συνάÏτηση"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
msgid "index value is out of bound"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr ""
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, fuzzy, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "Το επώνυμο αντικείμενο δεν είναι αναζητήσιμο"
@@ -15271,370 +15305,370 @@ msgstr "Το επώνυμο αντικείμενο δεν είναι αναζηÏ
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr ""
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση πεδίου: `%s'"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr ""
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, gcc-internal-format
msgid "__builtin_shuffle arguments must be vectors"
msgstr ""
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "πάÏα πολλά οÏίσματα"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, fuzzy, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "πάÏα πολλά οÏίσματα"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
msgid "declared here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr ""
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "το πέÏασμα του οÏίσματος %d του δείκτη στη συνάÏτηση"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr ""
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "το πέÏασμα του οÏίσματος %d του δείκτη στη συνάÏτηση"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, fuzzy, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "Ï€Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr ""
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr ""
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr ""
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr ""
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr ""
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr ""
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr "αδυναμία ανάγνωσης καταλόγου locale `%s'"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "Μη αναγνωÏίσιμη μεταβλητή `%s'"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, fuzzy, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το αÏχείο fifo `%s'"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr ""
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr ""
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, fuzzy, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr ""
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:4537
+#: c-typeck.c:4554
msgid "cast adds %q#v qualifier to function type"
msgstr ""
-#: c-typeck.c:4543
+#: c-typeck.c:4560
msgid "cast discards %q#v qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr ""
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr ""
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr ""
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr ""
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr ""
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -15646,690 +15680,690 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, fuzzy, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, fuzzy, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "δεν είναι δυνατόν να γίνει `stat' το locale αÏχείο `%s'"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
msgid "return discards %qv qualifier from pointer target type"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, fuzzy, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr ""
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr ""
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr ""
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr ""
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, fuzzy, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "Δεν είναι δυνατόν να βÏεθεί ο Ï„Ïπος του επεξεÏγαστή."
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr ""
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, fuzzy, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "μη πλήÏης εγγÏαφή"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, fuzzy, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "μη έγκυÏη ÏŽÏα της μέÏας"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, fuzzy, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, fuzzy, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, fuzzy, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, fuzzy, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, fuzzy, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, fuzzy, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "%s μετατÏέπει ακέÏαιο σε δείκτη χωÏίς μετατÏοπέα"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, fuzzy, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, fuzzy, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
# src/request.c:263
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, fuzzy, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "Το βήμα αÏχικοποίησης απέτυχε"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, fuzzy, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr ""
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "Η αλυσίδα μοÏφής δεν είναι έγκυÏη: `%s'"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "Η αλυσίδα μοÏφής δεν είναι έγκυÏη: `%s'"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr ""
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, fuzzy, gcc-internal-format
msgid "initializer element is not constant"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr ""
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, fuzzy, gcc-internal-format
msgid "invalid initializer"
msgstr "μη έγκυÏο μέγεθος οÏιζόντιου στηλοθέτη: %s"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, fuzzy, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, fuzzy, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "ακολουθοÏν σκουπίδια στο τέλος της γÏαμμής"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr ""
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr ""
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr ""
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, fuzzy, gcc-internal-format
msgid "missing initializer"
msgstr "έχει παÏαληφθεί το αÏχείο Ï€ÏοοÏισμοÏ"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr ""
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr ""
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr ""
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr ""
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr ""
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr ""
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr ""
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr ""
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr ""
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr ""
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr ""
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, fuzzy, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, fuzzy, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr ""
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr ""
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr ""
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr ""
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr ""
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr ""
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr ""
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr ""
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr ""
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr ""
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr ""
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr ""
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr ""
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr ""
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr ""
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr ""
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr ""
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "μη έγκυÏος αÏιθμός από γÏαμμές"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, fuzzy, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr ""
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr ""
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, fuzzy, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -16340,7 +16374,7 @@ msgid "function call has aggregate value"
msgstr ""
# src/shred.c:1134
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, fuzzy, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "%s: το αÏχείο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿"
@@ -17156,52 +17190,52 @@ msgstr "αδυναμία ανοίγματος αÏχείου εξόδου"
msgid "library lib%s not found"
msgstr "Πιθανόν δε βÏέθηκε"
-#: convert.c:88
+#: convert.c:83
#, fuzzy, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "Δεν είναι δυνατόν να βÏεθεί ο Ï„Ïπος του επεξεÏγαστή."
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr ""
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr ""
-#: convert.c:418
+#: convert.c:413
#, fuzzy, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr ""
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "αδÏνατη η μετατÏοπή του U+%04X στο τοπικό σÏνολο χαÏακτήÏων"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr ""
@@ -17356,7 +17390,7 @@ msgstr ""
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -17446,42 +17480,42 @@ msgstr ""
msgid "stack limits not supported on this target"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr ""
-#: expmed.c:1803
+#: expmed.c:1823
#, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr ""
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr ""
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr ""
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr ""
@@ -17556,7 +17590,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -17566,7 +17600,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr "Ο κατάλογος `%s' δεν είναι Ï€Ïοσιτός."
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr ""
@@ -18017,77 +18051,77 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "Ο κατάλογος `%s' δεν είναι Ï€Ïοσιτός."
-#: gimplify.c:5674
+#: gimplify.c:5681
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr ""
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr ""
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr ""
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "αδυναμία ανοίγματος αÏχείου εξόδου `%s'"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "αδυναμία ανοίγματος αÏχείου εξόδου `%s'"
@@ -18142,7 +18176,7 @@ msgstr ""
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18281,48 +18315,48 @@ msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
msgid "function %qD redeclared as variable"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -18429,7 +18463,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr ""
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
@@ -18785,9 +18819,9 @@ msgstr ""
msgid "can%'t use %qs as a fixed register"
msgstr ""
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "άγνωστος χαÏακτήÏας `%s'"
@@ -18867,12 +18901,12 @@ msgstr ""
msgid "%<asm%> operand requires impossible reload"
msgstr ""
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr ""
@@ -19092,7 +19126,7 @@ msgstr ""
msgid "packed attribute is unnecessary"
msgstr ""
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr ""
@@ -19307,7 +19341,7 @@ msgstr "μη έγκυÏος αÏιθμός πεδίου: `%s'"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19322,7 +19356,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr ""
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19337,7 +19371,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr ""
@@ -19372,612 +19406,612 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr ""
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
msgid "non-integral used in condition"
msgstr "μη τεÏματιζόμενo αλφαÏιθμητικό"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, fuzzy, gcc-internal-format
msgid "invalid conditional operand"
msgstr "μη έγκυÏος χÏήστης"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "μη έγκυÏος χÏήστης"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid reference prefix"
msgstr "Μη έγκυÏη πισω-παÏαπομπή"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "μη έγκυÏη μέτÏηση επανάληψης `%s' στη κατασκευή [c*n]"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "μη έγκυÏη μέτÏηση επανάληψης `%s' στη κατασκευή [c*n]"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr ""
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr ""
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr ""
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr ""
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, gcc-internal-format
msgid "conversion of register to a different size"
msgstr ""
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "μη έγκυÏος χÏήστης"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, fuzzy, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "Μη έγκυÏη ανταλλαγή"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
msgid "non-function in gimple call"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "μη έγκυÏη τάξη χαÏακτήÏων `%s'"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "μη έγκυÏος αÏχικός αÏιθμός γÏαμμής: `%s'"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "μη έγκυÏη διαμόÏφωση συντόμευσης"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr "μη έγκυÏος αÏχικός αÏιθμός γÏαμμής: `%s'"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "μη έγκυÏη μέτÏηση επανάληψης `%s' στη κατασκευή [c*n]"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr "RPC: Μη συμβατές εκδόσεις του RPC"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "μη έγκυÏη μέτÏηση επανάληψης `%s' στη κατασκευή [c*n]"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "μη έγκυÏη ÏŽÏα της μέÏας"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "μη έγκυÏη διαμόÏφωση συντόμευσης"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "υπεÏβολικά πολλά δευτεÏόλεπτα αναπήδησης"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "παÏάληψη οÏίσματος αÏχείου"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "Σφάλμα στο ταίÏιασμα στην κανονική έκφÏαση `%s'"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr ""
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, fuzzy, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "παÏάληψη οÏίσματος αÏχείου"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "παÏάληψη οÏίσματος αÏχείου"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "μη έγκυÏη μέτÏηση επανάληψης `%s' στη κατασκευή [c*n]"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr ""
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "Ακατάλληλη εντολή"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr ""
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "Μη έγκυÏη Ï€ÏοποÏευόμενη κανονική έκφÏαση"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr "μη έγκυÏος χÏόνος λήξης"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "μη έγκυÏη μέτÏηση επανάληψης `%s' στη κατασκευή [c*n]"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr ""
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr ""
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
msgid "invalid PHI result"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
msgid "missing PHI def"
msgstr "Έχει παÏαληφθεί εντολή"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
msgid "invalid PHI argument"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr ""
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
msgid "in statement"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "διπλός οÏισμός συνόλου"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
msgid "case labels not sorted: "
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "έχει παÏαληφθεί το αÏχείο Ï€ÏοοÏισμοÏ"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, fuzzy, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "ο έλεγχος φθάνει στο τέλος μη-κενής συνάÏτησης"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr ""
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr ""
@@ -20037,72 +20071,72 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr ""
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr ""
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr ""
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr ""
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr ""
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr ""
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr ""
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr ""
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr ""
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr ""
@@ -20313,7 +20347,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr ""
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
msgid "%qD was declared here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
@@ -20374,52 +20408,52 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr ""
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr ""
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr ""
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr ""
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr ""
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -20429,22 +20463,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr ""
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr ""
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20459,140 +20493,140 @@ msgstr ""
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, fuzzy, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr ""
-#: tree.c:5577
+#: tree.c:5578
#, fuzzy, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση πεδίου: `%s'"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr ""
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr ""
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
@@ -20642,147 +20676,152 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr ""
+
+#: varasm.c:322
#, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr ""
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, fuzzy, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "ΕγγÏαφή ονομάτων των επιλεγμένων λέξεων-κλειδιών"
-#: varasm.c:1207
+#: varasm.c:1213
#, fuzzy, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "μη έγκυÏος αÏιθμός πεδίου: `%s'"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr ""
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr ""
-#: varasm.c:1215
+#: varasm.c:1221
#, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr ""
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr ""
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr ""
-#: varasm.c:1387
+#: varasm.c:1393
#, fuzzy, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: varasm.c:1453
+#: varasm.c:1459
#, fuzzy, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr ""
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr ""
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "μη έγκυÏος αÏιθμός πεδίου: `%s'"
-#: varasm.c:5224
+#: varasm.c:5261
#, fuzzy, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: varasm.c:5226
+#: varasm.c:5263
#, fuzzy, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
-#: varasm.c:5751
+#: varasm.c:5788
#, fuzzy, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: varasm.c:5765
+#: varasm.c:5802
#, fuzzy, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, fuzzy, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
@@ -20823,8 +20862,8 @@ msgstr ""
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr ""
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr ""
@@ -21047,7 +21086,7 @@ msgstr ""
msgid "the address of %qD will always evaluate as %<true%>"
msgstr ""
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
@@ -21454,40 +21493,40 @@ msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
msgid "invalid vector type for attribute %qE"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr ""
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr ""
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr ""
@@ -21527,12 +21566,12 @@ msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάÏ
msgid "%qE attribute only applies to variadic functions"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, fuzzy, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
@@ -21587,7 +21626,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, fuzzy, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το αÏχείο fifo `%s'"
@@ -22314,83 +22353,83 @@ msgid "ignoring #pragma %s %s"
msgstr "αγνοοÏνται όλα τα οÏίσματα"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
#| msgid "%Hstray %<@%> in program"
msgid "stray %<@%> in program"
msgstr "%Hstray %<@%> στο Ï€ÏόγÏαμμα"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "αδέσποτο %qs στο Ï€ÏόγÏαμμα"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "έχει παÏαληφθεί τεÏματικός χαÏακτήÏας %c"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, fuzzy, gcc-internal-format
msgid "stray %qc in program"
msgstr "Στο Ï€ÏόγÏαμμα"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr ""
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr ""
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr ""
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "%s: το %s είναι τόσο μεγάλο που δε μποÏεί να αναπαÏασταθεί"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
msgid "unsuffixed float constant"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, fuzzy, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, fuzzy, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, fuzzy, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "σχετική θέση αÏχείου είναι εκτός οÏίων"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, fuzzy, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "σχετική θέση αÏχείου είναι εκτός οÏίων"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr ""
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, fuzzy, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr ""
@@ -22410,7 +22449,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
@@ -22420,22 +22459,22 @@ msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
msgid "%qE is not initialized"
msgstr "έχει παÏαληφθεί το αÏχείο Ï€ÏοοÏισμοÏ"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, fuzzy, gcc-internal-format
msgid "missing controlling predicate"
msgstr "Η λειτουÏγία δεν επιτÏέπεται"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "μη έγκυÏο όνομα μήνα"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
msgid "missing increment expression"
msgstr "παÏάληψη οÏίσματος αÏχείου"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
msgid "invalid increment expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
@@ -23290,7 +23329,7 @@ msgstr ""
msgid "bad value %qs for -mmemory-latency"
msgstr "Ακατάλληλη τιμή στο ai_flags"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23467,53 +23506,53 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
msgid "argument must be a constant"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, fuzzy, gcc-internal-format
msgid "selector must be an immediate"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, fuzzy, gcc-internal-format
msgid "mask must be an immediate"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -23530,97 +23569,112 @@ msgstr "%s: το αÏχείο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿"
msgid "static variable %q+D is marked dllimport"
msgstr "%s: το αÏχείο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "οι επιλογές --string και --check είναι αμοιβαίως αποκλειόμενες"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr ""
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr ""
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr ""
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr ""
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr ""
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr ""
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
@@ -23742,70 +23796,70 @@ msgstr "Μη έγκυÏη επιλογή `%s'"
msgid "internal error: bad register: %d"
msgstr "εσωτεÏικό σφάλμα στο %s, γÏαμμή %u"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, fuzzy, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "Δεν είναι δυνατόν να βÏεθεί ο Ï„Ïπος του επεξεÏγαστή."
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "πάÏα πολλές δηλώσεις μετατÏοπής στην κατάληξη"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, fuzzy, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
# src/grep.c:1133
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
msgid "unknown src"
msgstr "άγνωστη μέθοδος καταλόγων"
# src/grep.c:1133
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
msgid "unknown dest"
msgstr "άγνωστη μέθοδος καταλόγων"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr ""
@@ -23964,411 +24018,411 @@ msgstr "αδυναμία ανοίγματος αÏχείου εξόδου"
msgid "can%'t set position in PCH file: %m"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "Ακατάλληλη τιμή στο ai_flags"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, fuzzy, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%s: η υποστήÏιξη εκσφαλμάτωσης δεν έχει συμπεÏιληφθεί στη μεταγλώττιση.\n"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr ""
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr "Ακατάλληλη τιμή στο ai_flags"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "το --no-dereference (-h) δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr ""
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "άγνωστο σετ `%s'"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "%s: οι τιμές του πεδίου `%s' δεν Ï€Ïέπει να είναι μεγαλÏτεÏες από %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "μη έγκυÏη ÏŽÏα της μέÏας"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, fuzzy, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr ""
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "μη έγκυÏο δικαίωμα"
@@ -24440,19 +24494,19 @@ msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζοντÎ
msgid "%qE attribute requires a string constant argument"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
msgid "version attribute is not a string"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
@@ -24520,7 +24574,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
@@ -24575,7 +24629,7 @@ msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζοντÎ
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, fuzzy, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "ειδικά αÏχεία μπλοκ δεν υποστηÏίζονται"
@@ -25095,27 +25149,27 @@ msgstr ""
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, fuzzy, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, fuzzy, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "ΧÏήση ξεχωÏιστής λανθάνουσας μνήμης για κάθε χÏήστη"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, fuzzy, gcc-internal-format
msgid "-g option disabled"
msgstr "Η λειτουÏγία NIS+ απέτυχε"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -25541,82 +25595,82 @@ msgid "internal error: builtin function %s, argument %d had unexpected argument
msgstr ""
# src/shred.c:1134
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, fuzzy, gcc-internal-format
msgid "stack frame too large"
msgstr "%s: το αÏχείο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "μη έγκυÏος χÏήστης"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr ""
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr ""
@@ -25671,12 +25725,12 @@ msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
msgid "-m64 not supported in this configuration"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr ""
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr ""
@@ -25693,64 +25747,64 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "Ακατάλληλη τιμή στο ai_flags"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "Ακατάλληλη τιμή στο ai_flags"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, fuzzy, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "τα μεγέθη του στηλογνώμονα Ï€Ïέπει να είναι κατά αÏξουσα σειÏά"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr ""
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "Η οικογένεια διευθÏνσεων δεν υποστηÏίζεται από την οικογένεια Ï€Ïωτοκόλλου"
@@ -25861,53 +25915,53 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, fuzzy, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -26252,39 +26306,39 @@ msgstr ""
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, fuzzy, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr ""
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr ""
# src/request.c:37
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "%s σε %s"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
@@ -26300,7 +26354,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26590,7 +26644,7 @@ msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζεÏ
msgid "invalid conversion from %qT to %qT"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
@@ -26600,191 +26654,191 @@ msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "δεν είναι δυνατό να μετανομαστεί το `.' ή το `..'"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, fuzzy, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "δεν είναι δυνατό να μετανομαστεί το `.' ή το `..'"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, fuzzy, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "άγνωστος χαÏακτήÏας στο πεδίο `%s' της κατηγοÏίας `%s'"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, fuzzy, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "δεν είναι δυνατό να μετανομαστεί το `.' ή το `..'"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr ""
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr ""
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr ""
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr ""
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr ""
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:6483
+#: cp/call.c:6493
#, fuzzy, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, fuzzy, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
msgid " in call to %q+D"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "κλήση σε μη-συνάÏτηση %qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
#| msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "δεν ταιÏιάζει συνάÏτηση για την κλήση στο %<%T::%s(%A)%#V%>"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "δεν ταιÏιάζει συνάÏτηση για την κλήση στο %<%T::%s(%A)%#V%>"
# src/getopt.c:813
# src/getopt.c:813
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "η κλήση της υπεÏφοÏτωμένης %<%s(%A)%> είναι διφοÏοÏμενη"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr ""
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, fuzzy, gcc-internal-format
msgid " in call to %qD"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:8113
+#: cp/call.c:8128
#, fuzzy, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "έχουν παÏαληφθεί οÏίσματα"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr ""
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr ""
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr ""
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr ""
@@ -26995,219 +27049,219 @@ msgstr "Μη έγκυÏη επιλογή `%s'"
msgid "field %q+D invalidly declared method type"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr ""
-#: cp/class.c:3284
+#: cp/class.c:3285
#, fuzzy, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "ΥπάÏχει αντικείμενο με το ίδιο όνομα"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr ""
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr ""
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr ""
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3998
+#: cp/class.c:3999
#, fuzzy, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "μη έγκυÏος αÏιθμός από στήλες: `%s'"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
msgid " %q+T has a non-trivial destructor"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr "μη έγκυÏος αÏιθμός από στήλες: `%s'"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr ""
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr ""
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr ""
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, fuzzy, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "κανένας οÏισμός του `UNDEFINED'"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, fuzzy, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr ""
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:6971
+#: cp/class.c:6972
#, fuzzy, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, fuzzy, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, fuzzy, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, fuzzy, gcc-internal-format
msgid "not enough type information"
msgstr "εμφάνιση πληÏοφοÏιών Ï€Ïοόδου"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, fuzzy, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
@@ -27217,12 +27271,12 @@ msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr ""
@@ -27242,7 +27296,7 @@ msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
@@ -27272,7 +27326,7 @@ msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏ
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, fuzzy, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "Δεν μποÏεί να καθοÏιστεί το όνομα του συστήματος"
@@ -27679,7 +27733,7 @@ msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'
msgid "declaration of template %q#D"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, fuzzy, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
@@ -27731,7 +27785,7 @@ msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'
msgid "%q+#D previously defined here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
@@ -27849,7 +27903,7 @@ msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "δημιουÏγία αÏχείου `%s'\n"
@@ -27922,7 +27976,7 @@ msgstr ""
msgid "%qD is not a type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, fuzzy, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
@@ -28052,124 +28106,124 @@ msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "αδυναμία ανάγνωσης κεφαλίδας από το `%s'"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr "αδυναμία ανάγνωσης κεφαλίδας από το `%s'"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr ""
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr ""
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr ""
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr ""
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, fuzzy, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
# src/request.c:263
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, fuzzy, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "Το βήμα αÏχικοποίησης απέτυχε"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, fuzzy, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, fuzzy, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, fuzzy, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr ""
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, fuzzy, gcc-internal-format
msgid "array size missing in %qD"
msgstr "σφάλμα κατά το κλείσιμο της εισόδου `%s'"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr ""
@@ -28177,389 +28231,389 @@ msgstr ""
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "Το όνομα `%s' είναι άγνωστο\n"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "Το όνομα `%s' είναι άγνωστο\n"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr ""
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "μη αÏχικοποιημένη σταθεÏά const %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, fuzzy, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, fuzzy, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, fuzzy, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "υπεÏβολικά πολλά αÏχεία εισόδου"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, fuzzy, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "ακολουθοÏν σκουπίδια στο τέλος της γÏαμμής"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, fuzzy, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "ακολουθοÏν σκουπίδια στο τέλος της γÏαμμής"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr ""
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr ""
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr ""
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, fuzzy, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr ""
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, fuzzy, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr ""
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, fuzzy, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr ""
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
msgid "array size missing in %qT"
msgstr "σφάλμα κατά το κλείσιμο της εισόδου `%s'"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
msgid "zero-size array %qT"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr ""
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "%s: διπλός οÏισμός έκδοσης κατηγοÏίας"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr ""
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr ""
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "συνεχίζεται στο τμήμα"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "ο χάÏτης χαÏακτήÏων `%s' οÏίστηκε ήδη"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr ""
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr ""
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "ο χάÏτης χαÏακτήÏων `%s' οÏίστηκε ήδη"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr ""
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, fuzzy, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, fuzzy, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "συντακτικό σφάλμα στον καθοÏισμό σειÏάς"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, fuzzy, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "αδυναμία αλλαγής στο κατάλογο %s"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "αδυναμία αλλαγής στο κατάλογο %s"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, fuzzy, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr ""
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr "η `%s' είναι συνήθως μη-στατική συνάÏτηση"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> Ï€Ïέπει να επιστÏέψει %<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr "κανένας οÏισμός του `UNDEFINED'"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr ""
@@ -28568,889 +28622,889 @@ msgstr ""
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "μη έγκυÏος δεÏτεÏος τελεστής σε κατάσταση συμβατότητας `%s'"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr ""
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr ""
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr ""
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr ""
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr ""
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, fuzzy, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "Ο κατάλογος `%s' δεν είναι Ï€Ïοσιτός."
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr ""
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, fuzzy, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr ""
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr ""
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
msgid "creating array of void"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
msgid "creating array of functions"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
msgid "creating array of references"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
msgid "creating array of function members"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr ""
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "μη έγκυÏος χÏήστης"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "μη έγκυÏος αÏιθμός από κενές γÏαμμές: `%s'"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "μη έγκυÏος αÏιθμός από κενές γÏαμμές: `%s'"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, fuzzy, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%s'"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr ""
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, fuzzy, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "ΠÏοειδοποίηση: Î Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα στο εσωδομημένο `%s'"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "Μη έγκυÏη ανταλλαγή"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr ""
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "αÏχεία fifo δεν υποστηÏίζονται"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "μη έγκυÏος δηλωτής πεδίου: `%s'"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, fuzzy, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "μη έγκυÏος δηλωτής πεδίου: `%s'"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "Μη έγκυÏη Ï€ÏοτεÏαιότητα `%s'"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, fuzzy, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "Μη έγκυÏη Ï€ÏοτεÏαιότητα `%s'"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, fuzzy, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "Μη έγκυÏη Ï€ÏοτεÏαιότητα `%s'"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "μη έγκυÏος δηλωτής πεδίου: `%s'"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "μη έγκυÏος δηλωτής πεδίου: `%s'"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, fuzzy, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "μόνο ένα ÏŒÏισμα μποÏεί να δηλωθεί"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, fuzzy, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "μόνο ένα ÏŒÏισμα μποÏεί να δηλωθεί"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "μη έγκυÏος δηλωτής πεδίου: `%s'"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, fuzzy, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "μη έγκυÏος δηλωτής πεδίου: `%s'"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, fuzzy, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "Μη έγκυÏη Ï€ÏοτεÏαιότητα `%s'"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "ΕγγÏαφή ονομάτων των επιλεγμένων λέξεων-κλειδιών"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "κενό αλφαÏιθμητικό"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, fuzzy, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, fuzzy, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "ΕγγÏαφή ονομάτων των επιλεγμένων λέξεων-κλειδιών"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr ""
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr ""
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr ""
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr ""
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, fuzzy, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%s: διπλός οÏισμός έκδοσης κατηγοÏίας"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr ""
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr ""
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "Δεν ήταν δυνατή η εÏÏεση ετικέττας για μεταγωγή στο `%s'"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, fuzzy, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "αδυναμία αλλαγής στο κατάλογο %s"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "δεν είναι δυνατόν να γίνει `stat' το locale αÏχείο `%s'"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "αδυναμία αλλαγής στο κατάλογο %s"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "άγνωστος χαÏακτήÏας στο πεδίο `%s' της κατηγοÏίας `%s'"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, fuzzy, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, fuzzy, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr ""
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, fuzzy, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "Ο κατάλογος `%s' δεν είναι Ï€Ïοσιτός."
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr ""
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, fuzzy, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, fuzzy, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, fuzzy, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr ""
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ΥπάÏχει αντικείμενο με το ίδιο όνομα"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr ""
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr ""
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, fuzzy, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, fuzzy, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr ""
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, fuzzy, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "αδυναμία εισαγωγής στοιχείο παÏαβολής `%.*s'"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "ο χάÏτης χαÏακτήÏων `%s' οÏίστηκε ήδη"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, fuzzy, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "μη έγκυÏος χÏήστης"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "αυτονόητη διακÏÏηξη της συνάÏτησης `%#D'"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr ""
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, fuzzy, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr ""
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, fuzzy, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, fuzzy, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, fuzzy, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr "%s: Μη έγκυÏη ÏÏθμιση `%s'.\n"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr ""
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, fuzzy, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "μη έγκυÏη τάξη χαÏακτήÏων `%s'"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, fuzzy, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "μη έγκυÏη τάξη χαÏακτήÏων `%s'"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, fuzzy, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "μη έγκυÏη τάξη χαÏακτήÏων `%s'"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, fuzzy, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "μη έγκυÏη τάξη χαÏακτήÏων `%s'"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr ""
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr ""
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr ""
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, fuzzy, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr ""
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, fuzzy, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "ο χάÏτης χαÏακτήÏων `%s' οÏίστηκε ήδη"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr ""
@@ -29470,168 +29524,168 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr ""
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, fuzzy, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, fuzzy, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "η `%s' είναι συνήθως μη-στατική συνάÏτηση"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, fuzzy, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "η `%s' παίÏνει είτε κανένα είτε δÏο οÏίσματα"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, fuzzy, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "η `%s' παίÏνει είτε κανένα είτε δÏο οÏίσματα"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, fuzzy, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "η `%s' παίÏνει είτε κανένα είτε δÏο οÏίσματα"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, fuzzy, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "η `%s' παίÏνει είτε κανένα είτε δÏο οÏίσματα"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, fuzzy, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, fuzzy, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, fuzzy, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -29643,90 +29697,90 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, fuzzy, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "έχουν παÏαληφθεί οÏίσματα"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
# src/getopt.c:628
# src/getopt.c:628
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, fuzzy, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "%s: η επιλογή `%s' είναι ασαφής\n"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, fuzzy, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, fuzzy, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, fuzzy, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "διπλός οÏισμός συνόλου"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
msgid "previous definition here"
msgstr "κανένας οÏισμός του `UNDEFINED'"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -29735,72 +29789,72 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr ""
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr ""
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, fuzzy, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, fuzzy, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "η επιστÏεφόμενη τιμή της `%s' δεν είναι `int'"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr ""
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, fuzzy, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
msgid "invalid function declaration"
msgstr "Μη έγκυÏη ανταλλαγή"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, fuzzy, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "ο χάÏτης χαÏακτήÏων `%s' οÏίστηκε ήδη"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr "έχουν παÏαληφθεί οÏίσματα"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, fuzzy, gcc-internal-format
msgid "invalid member function declaration"
msgstr "μη έγκυÏος αÏιθμός από κενές γÏαμμές: `%s'"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, fuzzy, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
@@ -29840,7 +29894,7 @@ msgstr ""
msgid "deleting %qT is undefined"
msgstr ""
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, fuzzy, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "δημιουÏγία αÏχείου `%s'\n"
@@ -30103,7 +30157,7 @@ msgstr ""
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "%s: η επιλογή `%s' είναι ασαφής\n"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, fuzzy, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
@@ -30411,7 +30465,7 @@ msgstr "Το `%s' δεν είναι κατάλογος."
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
msgid "%qT is not a class type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
@@ -30498,67 +30552,67 @@ msgstr ""
msgid "parenthesized initializer in array new"
msgstr ""
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr ""
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "αδυναμία εκτέλεσης ioctl στο `%s'"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr ""
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr ""
@@ -30618,42 +30672,42 @@ msgstr ""
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -30739,59 +30793,59 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "μη έγκυÏος αÏιθμός από κενές γÏαμμές: `%s'"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr ""
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
# src/grep.c:785 src/grep.c:792
# src/grep.c:1060 src/grep.c:1067 src/grep.c:1076
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "μη έγκυÏο ÏŒÏισμα μήκους πεÏιεχομένου"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "σφάλμα ταιÏιάσματος Ï„Ïπου με Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+#D"
msgstr "αυτός είναι ο Ï€Ïώτος οÏισμός"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, fuzzy, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "δημιουÏγία αÏχείου `%s'\n"
@@ -30802,266 +30856,266 @@ msgstr "δημιουÏγία αÏχείου `%s'\n"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, fuzzy, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
msgid "due to different exception specifications"
msgstr "συντακτικό σφάλμα στον καθοÏισμό σειÏάς"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, fuzzy, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "σφάλμα ταιÏιάσματος Ï„Ïπου με Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, fuzzy, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "κανένας οÏισμός του `UNDEFINED'"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, fuzzy, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr ""
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr ""
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr ""
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, fuzzy, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "η ομάδα του %s άλλαξε σε %s\n"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr ""
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "η ομάδα του %s άλλαξε σε %s\n"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
# src/request.c:37
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, fuzzy, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s: %s: "
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, fuzzy, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "σφάλμα ταιÏιάσματος Ï„Ïπου με Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, fuzzy, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr ""
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, fuzzy, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr ""
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, fuzzy, gcc-internal-format
msgid "%qD not declared"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr ""
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, fuzzy, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, fuzzy, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, fuzzy, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr ""
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr ""
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -31171,7 +31225,7 @@ msgstr ""
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr ""
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, fuzzy, gcc-internal-format
msgid "%qT is not a template"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
@@ -31191,7 +31245,7 @@ msgstr "Μη έγκυÏη ημεÏομηνία `%s'."
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -31336,713 +31390,713 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr ""
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr "μη τεÏματιζόμενo αλφαÏιθμητικό"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
msgid "expected declaration"
msgstr "κενό αλφαÏιθμητικό"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr ""
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
msgid "expected primary-expression"
msgstr "Μη έγκυÏη Ï€ÏοποÏευόμενη κανονική έκφÏαση"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr ""
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
msgid "expected id-expression"
msgstr "Μη έγκυÏη Ï€ÏοποÏευόμενη κανονική έκφÏαση"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, fuzzy, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr ""
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr ""
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr ""
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, fuzzy, gcc-internal-format
msgid "%qD is not a template"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr ""
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr ""
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE does not have class type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, fuzzy, gcc-internal-format
msgid "invalid use of %qD"
msgstr "μη έγκυÏος χÏήστης"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr ""
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr ""
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr ""
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, fuzzy, gcc-internal-format
msgid "use of old-style cast"
msgstr "Ï€Î±Î»Î±Î¹Î¿Ï ÎµÎ¯Î´Î¿Ï…Ï‚ θέση"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr ""
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr ""
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr ""
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr "Μη αναγνωÏίσιμη μεταβλητή `%s'"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
msgid "%q+#D declared here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
msgid "expected labeled-statement"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr ""
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr ""
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
msgid "expected selection-statement"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr ""
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
msgid "expected iteration-statement"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
msgid "expected jump-statement"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr ""
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr ""
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "Μη έγκυÏη ÏÏθμιση θÏÏας (port)"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr ""
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "μη έγκυÏος αÏιθμός πεδίου: `%s'"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, gcc-internal-format
msgid "only constructors take member initializers"
msgstr ""
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "έχει παÏαληφθεί το αÏχείο Ï€ÏοοÏισμοÏ"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr ""
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, gcc-internal-format
msgid "expected suffix identifier"
msgstr ""
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
msgid "expected operator"
msgstr "Μη οÏισμένο όνομα %s"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
msgid "expected template-id"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
msgid "expected %<<%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, fuzzy, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr ""
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, fuzzy, gcc-internal-format
msgid "parse error in template argument list"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
msgid "expected template-name"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr ""
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
msgid "expected template-argument"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr ""
# src/dfa.c:962
# src/dfa.c:970
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
msgid "expected type specifier"
msgstr "Δεν οÏίστηκε συντακτικό"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
msgid "expected template-id for type"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
msgid "expected type-name"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "αδυναμία ανάγνωσης κεφαλίδας από το `%s'"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr ""
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr ""
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, fuzzy, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, fuzzy, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
msgid "expected namespace-name"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr ""
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "αδυναμία ανάγνωσης κεφαλίδας από το `%s'"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση πεδίου: `%s'"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
msgid "expected initializer"
msgstr "μη έγκυÏο μέγεθος οÏιζόντιου στηλοθέτη: %s"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
msgid "invalid type in declaration"
msgstr "Μη έγκυÏη ανταλλαγή"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
msgid "initializer provided for function"
msgstr "Δεν ήταν δυνατή η εÏÏεση ετικέττας για μεταγωγή στο `%s'"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, fuzzy, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "η τιμή για το %s Ï€Ïέπει να είναι ακέÏαιος"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "μη έγκυÏος αÏιθμός από γÏαμμές"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -32051,247 +32105,247 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
msgid "invalid declarator"
msgstr "μη έγκυÏος χÏήστης"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
msgid "expected declarator"
msgstr "κενό αλφαÏιθμητικό"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, fuzzy, gcc-internal-format
msgid "%qD is a namespace"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
msgid "expected ptr-operator"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "διπλός αÏιθμός μηνÏματος"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr "διπλός αÏιθμός μηνÏματος"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "μη έγκυÏος χÏήστης"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
msgid "expected type-specifier"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr ""
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr ""
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr ""
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr ""
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "Δεν μποÏεί να τεθεί η ημεÏομηνία."
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr ""
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
msgid "expected class-name"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "%s: διπλός οÏισμός έκδοσης κατηγοÏίας"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "%s: διπλός οÏισμός έκδοσης κατηγοÏίας"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "%s: διπλός οÏισμός έκδοσης κατηγοÏίας"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr ""
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr "δε βÏέθηκε ο Ï€ÏοεπεξεÏγαστής C: %s \n"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "μη έγκυÏος αÏιθμός από κενές γÏαμμές: `%s'"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
msgid "extra qualification not allowed"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr ""
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, fuzzy, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "κανένας οÏισμός του `UNDEFINED'"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
msgid "expected class-key"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, fuzzy, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "αδυναμία εισαγωγής στοιχείο παÏαβολής `%.*s'"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr ""
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr ""
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "συντακτικό σφάλμα στον καθοÏισμό σειÏάς"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr ""
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, fuzzy, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
@@ -32300,319 +32354,319 @@ msgstr "διπλό όνομα χαÏακτήÏα `%s'"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr ""
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, fuzzy, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "αÏχεία fifo δεν υποστηÏίζονται"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr ""
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "Μη έγκυÏη ÏÏθμιση θÏÏας (port)"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "Μη έγκυÏη ÏÏθμιση θÏÏας (port)"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr ""
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
msgid "expected %<new%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
msgid "expected %<delete%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
msgid "expected %<return%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
msgid "expected %<extern%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr ""
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
msgid "expected %<operator%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr ""
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
msgid "expected %<template%>"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
msgid "expected %<using%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
msgid "expected %<asm%>"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
msgid "expected %<try%>"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr ""
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
msgid "expected %<throw%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr ""
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
msgid "expected %<@try%>"
msgstr "%s: αναμενόταν αÏιθμητική τιμή."
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr ""
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr ""
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
msgid "expected %<::%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr ""
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
msgid "expected %<*%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
msgid "expected %<~%>"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr ""
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr ""
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, fuzzy, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr ""
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
# src/grep.c:785 src/grep.c:792
# src/grep.c:1060 src/grep.c:1067 src/grep.c:1076
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, fuzzy, gcc-internal-format
msgid "file ends in default argument"
msgstr "μη έγκυÏο ÏŒÏισμα μήκους πεÏιεχομένου"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr ""
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "συμβολικοί σÏνδεσμοι δεν υποστηÏίζονται στο σÏστημα αυτό"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "Ακατάλληλη τιμή στο ai_flags"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, fuzzy, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "ΠÏοσδιοÏιστής αφαιÏέθηκε"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
msgid "invalid type for property"
msgstr "Μη έγκυÏη παÏάμετÏος"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr ""
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr "εμφάνιση πληÏοφοÏιών Ï€Ïοόδου"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "μη τεÏματιζόμενo αλφαÏιθμητικό"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, fuzzy, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
@@ -32709,69 +32763,69 @@ msgstr ""
msgid "%qD is not a function template"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr ""
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, fuzzy, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "ΠÏοειδοποίηση: Î Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα στο εσωδομημένο `%s'"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, fuzzy, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "ΠÏοειδοποίηση: Î Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα στο εσωδομημένο `%s'"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr ""
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, fuzzy, gcc-internal-format
msgid "%qD is not a template function"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
@@ -32784,134 +32838,134 @@ msgstr "το `%s' δεν είναι κανονικό αÏχείο"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, fuzzy, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "Στη συνάÏτηση μέλος `%s':"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, fuzzy, gcc-internal-format
msgid " %qD"
msgstr " `%D'"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
msgid " <anonymous>"
msgstr "((ανώνυμο))"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, fuzzy, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, fuzzy, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
msgstr[1] "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "Ï€ÏοηγοÏμενη αυτονόητη διακÏÏηξη του `%s'"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, fuzzy, gcc-internal-format
msgid "no default argument for %qD"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr ""
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr ""
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr ""
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, fuzzy, gcc-internal-format
msgid "template class without a name"
msgstr "μη τεÏματιζόμενο όνομα βάÏους"
@@ -32919,7 +32973,7 @@ msgstr "μη τεÏματιζόμενο όνομα βάÏους"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr ""
@@ -32929,76 +32983,76 @@ msgstr ""
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, fuzzy, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "μη έγκυÏος αÏιθμός από κενές γÏαμμές: `%s'"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, fuzzy, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr ""
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " αλλά %d απαιτοÏνται"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr ""
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, fuzzy, gcc-internal-format
msgid "%qT is not a template type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, fuzzy, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "ΠÏοειδοποίηση: Î Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα στο εσωδομημένο `%s'"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "διπλό όνομα χαÏακτήÏα `%s'"
msgstr[1] "διπλό όνομα χαÏακτήÏα `%s'"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
msgstr[1] "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, fuzzy, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr ""
@@ -33007,328 +33061,328 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, fuzzy, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
msgid "original definition appeared here"
msgstr "κανένας οÏισμός του `UNDEFINED'"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr ""
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr "διπλό όνομα χαÏακτήÏα `%s'"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr ""
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr "ο διαχωÏιστής δε μποÏεί να είναι κενός"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr ""
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr ""
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, fuzzy, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, fuzzy, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr ""
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr ""
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr "μη έγκυÏος αÏιθμός από γÏαμμές"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, fuzzy, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, fuzzy, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, fuzzy, gcc-internal-format
msgid " expected a type, got %qE"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, fuzzy, gcc-internal-format
msgid " expected a type, got %qT"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, fuzzy, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr "%s: αναμενόταν ακέÏαιος μετά το `%c'"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr ""
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, fuzzy, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "λάθος αÏιθμός οÏισμάτων"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "λάθος αÏιθμός οÏισμάτων"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr ""
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "έχουν παÏαληφθεί οÏίσματα"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
msgid "%q#D is not a function template"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr ""
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, fuzzy, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "μη έγκυÏος αÏιθμός από κενές γÏαμμές: `%s'"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr ""
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr ""
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, fuzzy, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση πεδίου: `%s'"
@@ -33346,257 +33400,257 @@ msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση Ï€
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
msgid "variable %qD has function type"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, fuzzy, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "Μη έγκυÏη Ï€ÏοτεÏαιότητα `%s'"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, fuzzy, gcc-internal-format
msgid "in declaration %q+D"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr ""
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr ""
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, fuzzy, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, fuzzy, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, fuzzy, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, fuzzy, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, fuzzy, gcc-internal-format
msgid "creating array of %qT"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, fuzzy, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr ""
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, fuzzy, gcc-internal-format
msgid "using invalid field %qD"
msgstr "έχει παÏαληφθεί η λίστα με τα πεδία"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr "Το επώνυμο αντικείμενο δεν είναι αναζητήσιμο"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, fuzzy, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, fuzzy, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, fuzzy, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "Η παÏάμετÏος `%s' δεν είναι έγκυÏη."
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, fuzzy, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, fuzzy, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, fuzzy, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "διπλός οÏισμός συνόλου"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, fuzzy, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "Ο έλεγχος Î¼Î¿Î½Î¿Ï€Î±Ï„Î¹Î¿Ï Î³Î¹Î± το `%s' βÏήκε `%s'"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "διπλός οÏισμός συνόλου"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "διπλός οÏισμός συνόλου"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr ""
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr ""
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "αδυναμία ανοίγματος αÏχείου οÏÎ¹ÏƒÎ¼Î¿Ï locale `%s'"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr ""
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr ""
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "διπλός οÏισμός συνόλου"
@@ -33608,32 +33662,32 @@ msgstr "διπλός οÏισμός συνόλου"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr ""
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr ""
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "Μη έγκυÏος χαÏακτήÏας παÏαβολής"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%s' δεν είναι ισχÏων θετικός ακέÏαιος."
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -33641,12 +33695,12 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, fuzzy, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "Δεν μπόÏεσα να ανοίξω το αÏχείο %s"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, fuzzy, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση πεδίου: `%s'"
@@ -33840,7 +33894,7 @@ msgstr "μη έγκυÏος χÏήστης"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
@@ -33880,442 +33934,442 @@ msgstr ""
msgid "invalid definition of qualified type %qT"
msgstr "μη έγκυÏος αÏιθμός αÏχείου στη δήλωση πεδίου: `%s'"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, fuzzy, gcc-internal-format
msgid "invalid base-class specification"
msgstr "Μη έγκυÏη ÏÏθμιση θÏÏας (port)"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
msgid "%qD is not captured"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr ""
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, fuzzy, gcc-internal-format
msgid " %q+#D declared here"
msgstr "Δεν υπάÏχει Ï€ÏοηγοÏμενη κανονική έκφÏαση"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, fuzzy, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr "μη έγκυÏος αÏιθμός πεδίου: `%s'"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, fuzzy, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, fuzzy, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "Μη έγκυÏη κανονική έκφÏαση"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, fuzzy, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr ""
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, gcc-internal-format
msgid "Parameter pack __bases only valid in template declaration"
msgstr ""
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "μη έγκυÏος αÏιθμός από στήλες: `%s'"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr ""
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr ""
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr ""
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr ""
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr ""
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr ""
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr ""
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "συντακτικό σφάλμα στον οÏισμό κλάσης χαÏακτήÏων"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "κλήση σε μη-συνάÏτηση %qD"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
msgid "%qD used before its definition"
msgstr "αυτή είναι η θέση του Ï€Ïώτου οÏισμοÏ"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr ""
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr ""
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, gcc-internal-format
msgid "array subscript out of bound"
msgstr ""
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, fuzzy, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "μη έγκυÏο μέγεθος οÏιζόντιου στηλοθέτη: %s"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
msgid "%q#D is not const"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
msgid "%q#D is volatile"
msgstr "το `%s' είναι μη-Ï€Ïοσπελάσιμο"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "Μη έγκυÏη Ï€ÏοποÏευόμενη κανονική έκφÏαση"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "μη τεÏματιζμένο αλφαÏιθμητικό σταθεÏάς"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
msgid "non-constant array initialization"
msgstr "μη έγκυÏο είδος αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "Μη οÏισμένο όνομα %s"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "αδυναμία αλλαγής στο κατάλογο %s"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "η `%s' είναι συνήθως μη-στατική συνάÏτηση"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, fuzzy, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, fuzzy, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "Ï€Ïοειδοποίηση: το --pid=PID δεν υποστηÏίζεται σε αυτό το σÏστημα"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -34405,446 +34459,451 @@ msgstr ""
msgid "invalid use of non-static member function"
msgstr "μη έγκυÏος αÏιθμός από στήλες: `%s'"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr ""
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr ""
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, fuzzy, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "μη έγκυÏος αÏιθμός από στήλες: `%s'"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "μη έγκυÏος αÏιθμός από στήλες: `%s'"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "το αÏχείο δεδομένων Ï€Ïοφίλ `%s' δεν ταιÏιάζει με το διαμοιÏαζόμενο αντικείμενο `%s'"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, fuzzy, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, fuzzy, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "το `%s' είναι Ï€Ïόγονος του `%s'"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, fuzzy, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "δεν είστε μέλος της ομάδας `%s'"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, fuzzy, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, fuzzy, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "Το `%s' δεν είναι κατάλογος."
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "μη έγκυÏη ÏŽÏα της μέÏας"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "μη έγκυÏη ÏŽÏα της μέÏας"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "μη έγκυÏη ÏŽÏα της μέÏας"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr ""
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr ""
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr ""
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr ""
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, fuzzy, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "Το επώνυμο αντικείμενο δεν είναι αναζητήσιμο"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "πάÏα πολλά οÏίσματα"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "Ï€Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr "πάÏα πολλά οÏίσματα"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr "ΠÏοειδοποίηση: Î Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα στο εσωδομημένο `%s'"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr "πάÏα πολλά οÏίσματα"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr "ΠÏοειδοποίηση: Î Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα στο εσωδομημένο `%s'"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "πάÏα πολλά οÏίσματα"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "Ï€Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, fuzzy, gcc-internal-format
msgid "too many arguments to function"
msgstr "πάÏα πολλά οÏίσματα"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, fuzzy, gcc-internal-format
msgid "too few arguments to function"
msgstr "Ï€Î¿Î»Ï Î»Î¯Î³Î± οÏίσματα"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, fuzzy, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, fuzzy, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr ""
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr ""
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
msgid "left rotate count is negative"
msgstr "Ο κατάλογος `%s' δεν είναι Ï€Ïοσιτός."
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr ""
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "Η λειτουÏγία δεν υποστηÏίζεται"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr ""
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, fuzzy, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, fuzzy, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr ""
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr ""
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr ""
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, fuzzy, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "μη έγκυÏη ÏŽÏα της μέÏας"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr ""
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr ""
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, fuzzy, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "δεν είναι δυνατόν να γίνει `stat' το locale αÏχείο `%s'"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr ""
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr ""
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "μη πλήÏης εγγÏαφή"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "%s: μη έγκυÏη κανονική έκφÏαση: %s"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr ""
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "Λάθος έκφÏαση στην αποτίμηση: %s"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "Λάθος έκφÏαση στην αποτίμηση: %s"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "Λάθος έκφÏαση στην αποτίμηση: %s"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "Λάθος έκφÏαση στην αποτίμηση: %s"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, fuzzy, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, fuzzy, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "η μετατÏοπή από `%s' σε `%s' δεν υποστηÏίζετε"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, fuzzy, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr ""
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr ""
@@ -34853,221 +34912,221 @@ msgstr ""
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, fuzzy, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr ""
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, fuzzy, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, fuzzy, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr ""
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, fuzzy, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "Μη έγκυÏη επιλογή `%s'"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr ""
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, fuzzy, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "Μη έγκυÏη ακέÏαια παÏάμετÏος `%s'"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
msgid "array used as initializer"
msgstr "έχουν παÏαληφθεί οÏίσματα"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
msgid "invalid array assignment"
msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr ""
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, fuzzy, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "μη έγκυÏος χαÏακτήÏας `%c' στο Ï„Ïπο αλφαÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï `%s'"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr "δεν είναι δυνατό να δημιουÏγηθεί το %s `%s' στο `%s'"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "Λείπει παÏάμετÏος για `%s'"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, fuzzy, gcc-internal-format
msgid "returning reference to temporary"
msgstr "xdr_reference: η μνήμη εξαντλήθηκε\n"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr ""
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, fuzzy, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, fuzzy, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "`return' χωÏίς τιμή, σε συνάÏτηση που επιστÏέφει μη-κενό"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -35603,7 +35662,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -37757,27 +37816,27 @@ msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν Î
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -37987,42 +38046,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr ""
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -38037,14 +38096,14 @@ msgstr ""
msgid "can't open input file: %s"
msgstr "αδυναμία ανοίγματος αÏχείου εισόδου `%s'"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "δημιουÏγία αÏχείου `%s'\n"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "πάÏα πολλά οÏίσματα"
@@ -38154,12 +38213,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -39977,128 +40036,128 @@ msgstr "%s: Σφάλμα κατά την εγγÏαφή του %s\n"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "%s: Δεν είναι δυνατόν να ανοιχτεί το %s: %s\n"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: Σφάλμα κατά την εγγÏαφή του %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "%s: Δεν είναι δυνατόν να δημιουÏγηθεί %s: %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: ΠÏοειδοποίηση: η uname απέτυχε: %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: Δε μποÏεί να διαγÏαφεί το %s: %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "%s: Δεν είναι δυνατόν να ανοιχτεί το %s: %s\n"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -40183,7 +40242,7 @@ msgstr ""
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -41505,7 +41564,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr ""
@@ -41657,7 +41716,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "πάÏα πολλά οÏίσματα"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -42039,182 +42098,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -42223,175 +42282,175 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr ""
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr ""
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "Η παÏάμετÏος στο <%s> Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "Η παÏάμετÏος στο `%s' Ï€Ïέπει να είναι ένας απλός χαÏακτήÏας"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr ""
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -42399,950 +42458,950 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "Μη αναγνωÏίσιμη μεταβλητή `%s'"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "σχετική θέση αÏχείου είναι εκτός οÏίων"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr ""
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "η `%s' παίÏνει είτε κανένα είτε δÏο οÏίσματα"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr "Η λειτουÏγία δεν έχει υλοποιηθεί"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr ""
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr ""
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr ""
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr ""
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr ""
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr ""
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr ""
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "το `%s' δεν είναι κανονικό αÏχείο"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr ""
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -43954,17 +44013,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -44208,7 +44267,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr ""
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -44510,7 +44569,7 @@ msgstr ""
msgid "internal error - invalid Utf8 name"
msgstr "εσωτεÏικό σφάλμα στο %s, γÏαμμή %u"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, fuzzy, gcc-internal-format
msgid "junk at end of signature string"
msgstr "μη τεÏματιζόμενo αλφαÏιθμητικό"
@@ -46908,10 +46967,6 @@ msgstr ""
#~ msgstr "μη έγκυÏος σταθεÏός χαÏακτήÏας στο αλφαÏιθμιτικό"
#, fuzzy
-#~ msgid "-traditional and -ansi are mutually exclusive"
-#~ msgstr "οι επιλογές --string και --check είναι αμοιβαίως αποκλειόμενες"
-
-#, fuzzy
#~ msgid "-trigraphs and -traditional are mutually exclusive"
#~ msgstr "οι επιλογές --string και --check είναι αμοιβαίως αποκλειόμενες"
@@ -47573,6 +47628,10 @@ msgstr ""
#~ msgstr "Δεν είναι δυνατόν να βÏεθεί ο Ï„Ïπος του επεξεÏγαστή."
#, fuzzy
+#~ msgid "floating point ranges"
+#~ msgstr "Η παÏάμετÏος κινητής υποδιαστολής δεν είναι έγκυÏη: %s"
+
+#, fuzzy
#~ msgid "invalid parameterized type"
#~ msgstr "%s: μη έγκυÏο είδος αÏχείου"
diff --git a/gcc/po/es.po b/gcc/po/es.po
index a8e057faba8..f9a9e0fb57c 100644
--- a/gcc/po/es.po
+++ b/gcc/po/es.po
@@ -1,4 +1,4 @@
-# Mensajes en español para gcc-4.7.0.
+# Mensajes en español para gcc-4.7.1.
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the gcc package.
# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
@@ -7,10 +7,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.7.0\n"
+"Project-Id-Version: gcc 4.7.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
-"PO-Revision-Date: 2012-03-26 10:36-0600\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
+"PO-Revision-Date: 2012-06-22 13:49-0500\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
"Language-Team: Spanish <es@li.org>\n"
"Language: es\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anónimo>"
@@ -28,18 +28,18 @@ msgstr "<anónimo>"
msgid "({anonymous})"
msgstr "({anónimo})"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr "se esperaba fin de línea"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "se esperaba %<;%>"
@@ -47,17 +47,17 @@ msgstr "se esperaba %<;%>"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "se esperaba %<(%>"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr "se esperaba %<,%>"
@@ -68,19 +68,19 @@ msgstr "se esperaba %<,%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr "se esperaba %<)%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr "se esperaba %<]%>"
@@ -89,25 +89,25 @@ msgstr "se esperaba %<]%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "se esperaba %<;%>, %<,%> o %<)%>"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr "se esperaba %<}%>"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "se esperaba %<{%>"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr "se esperaba %<:%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr "se esperaba %<while%>"
@@ -116,39 +116,39 @@ msgstr "se esperaba %<while%>"
msgid "expected %<.%>"
msgstr "se esperaba %<.%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr "se esperaba %<@end%>"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr "se esperaba %<>%>"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "se esperaba %<,%> o %<)%>"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "se esperaba %<=%>"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "se esperaba %<#pragma omp section%> o %<}%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, gcc-internal-format
msgid "expected %<[%>"
msgstr "se esperaba %<[%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(anónimo)"
@@ -321,12 +321,12 @@ msgstr "el operando '%%l' no es una etiqueta"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "constante de coma flotante mal usada"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "expresión inválida como operando"
@@ -1210,19 +1210,19 @@ msgstr " incluído en línea de %qs en %s:%d"
msgid " inlined from %qs"
msgstr " incluído en línea de %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "se asume que el bucle no es infinito"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "no se pueden optimizar los posibles bucles infinitos"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "se asume que el contador de bucles no se desborda"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "no se puede optimizar el bucle, el contador de bucles se puede desbordar"
@@ -1388,16 +1388,16 @@ msgid "this is the insn:"
msgstr "este es la insn:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "no se puede encontrar un registro de vaciado"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "modoVOID en una salida"
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr "falla al tratar de recargar:"
@@ -2527,117 +2527,117 @@ msgstr "<valor-devolución>"
msgid "<unknown>"
msgstr "<desconocido>"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "valor %%H inválido"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "valor %%J inválido"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "valor %%r inválido"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "valor %%R inválido"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "valor %%N inválido"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "valor %%P inválido"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "valor %%h inválido"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "valor %%L inválido"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "valor %%m inválido"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "valor %%M inválido"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "valor %%U inválido"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "valor %%s inválido"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "valor %%C inválido"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "valor %%E inválido"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "reubicación unspec desconocida"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "código %%xn inválido"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "instrucción de predicado Thumb"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "instrucción de predicado en una secuencia condicional"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, c-format
msgid "Unsupported operand for code '%c'"
msgstr "No se admite el operando para el código '%c'"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "operando de desplazamiento inválido"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2645,79 +2645,79 @@ msgstr "operando de desplazamiento inválido"
msgid "invalid operand for code '%c'"
msgstr "operando inválido para el código '%c'"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "la instrucción nunca se ejecuta"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "falta un operando"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
msgid "function parameters cannot have __fp16 type"
msgstr "los parámetros de la función no pueden tener el tipo __fp16"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
msgid "functions cannot return __fp16 type"
msgstr "la función no puede devolver el tipo __fp16"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "el operando de dirección requiere una restricción para los registros X, Y, o Z"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
msgid "operands to %T/%t must be reg + const_int:"
msgstr "los operandos para %T/%t deben ser reg + const_int:"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
msgid "bad address, not an I/O address:"
msgstr "dirección errónea, no es una dirección de E/S:"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
msgid "bad address, not a constant:"
msgstr "dirección errónea, no es una constante:"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "dirección errónea, no (reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "dirección errónea, no hay post_inc o pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "error interno del compilador. Dirección errónea:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "error interno del compilador. Modo desconocido:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "insn inválida:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "insn incorrecta:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "insn move desconocida:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "insn shift errónea:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "error interno del compilador. Desplazamiento incorrecto:"
@@ -2733,8 +2733,8 @@ msgstr "operando const_double inválido"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2812,21 +2812,21 @@ msgstr "operando inesperado"
msgid "unrecognized address"
msgstr "no se reconoce la dirección"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "no se reconoce la constante supuesta"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "efectos colaterales inesperados en la dirección"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr "no se identifica el operador de llamada"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "el registro PIC aún no está preparado"
@@ -2834,7 +2834,7 @@ msgstr "el registro PIC aún no está preparado"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "operando inválido en el código de salida"
@@ -2963,72 +2963,72 @@ msgstr "operando output_move_double erróneo"
msgid "bad output_condmove_single operand"
msgstr "operando output_condmove_single erróneo"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "UNSPEC inválido como operando"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr "se usó '%%&' sin ninguna referencia TLS dinámica local"
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "tamaño de operando inválido para el código de operando '%c'"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "se usó un tipo de operando inválido con el código de operando '%c'"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "el operando no es un código de condición, código de operando 'D' inválido"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "el operando no es una constante ni un código de condición, código de operando 'C' inválido"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "el operando no es una constante ni un código de condición, código de operando 'F' inválido"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "el operando no es una constante ni un código de condición, código de operando 'c' inválido"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "el operando no es una constante ni un código de condición, código de operando 'f' inválido"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, c-format
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "el operando no es una referencia de memoria desplazable, código de operando 'H' inválido"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "el operando no es un código de condición, código de operando 'Y' inválido"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "código de operando '%c' inválido"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "restricciones inválidas para el operando"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "modo insn desconocido"
@@ -3057,35 +3057,35 @@ msgstr "la variable de ambiente DJGPP apunta al fichero faltante '%s'"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "la variable de ambiente DJGPP apunta al fichero corrupto '%s'"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, c-format
msgid "invalid %%G mode"
msgstr "modo %%G inválido"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: código desconocido"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "conversión inválida de %<__fpreg%>"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "conversión inválida a %<__fpreg%>"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "operación inválida en %<__fpreg%>"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "operando %%P inválido"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "valor %%p inválido"
@@ -3164,7 +3164,7 @@ msgid "post-increment address is not a register"
msgstr "la dirección de post-incremento no es un registro"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "dirección errónea"
@@ -3327,87 +3327,87 @@ msgstr "-mno-altivec desactiva vsx"
msgid "bad move"
msgstr "move erróneo"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, c-format
msgid "invalid %%c value"
msgstr "valor %%c inválido"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "valor %%f inválido"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "valor %%F inválido"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "valor %%G inválido"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "código %%j inválido"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "código %%J inválido"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "valor %%k inválido"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "valor %%K inválido"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "valor %%O inválido"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "valor %%q inválido"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "valor %%S inválido"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "valor %%T inválido"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "valor %%u inválido"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "valor %%v inválido"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "valor %%x inválido"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "valor %%y inválido, pruebe usando la restricción 'Z'"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "Se pasó un argumento Altivec a una función sin prototipo"
@@ -3506,60 +3506,60 @@ msgstr "operando inválido para %%R"
msgid "invalid operand to %%S"
msgstr "operando inválido para %%S"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "creado y usado con diferentes arquitecturas / ABIs"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "creado y usado con diferentes ABIs"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "creado y usado con diferente orden de bits"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "operando %%Y inválido"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "operando %%A inválido"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "operando %%B inválido"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "operando %%C inválido"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "operando %%D inválido"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "operando %%f inválido"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "operando %%s inválido"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "la constante long long no es un operando inmediato válido"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "la constante de coma flotante no es un operando inmediato válido"
@@ -3584,7 +3584,7 @@ msgstr "el operando 'o' no es una constante"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: código desconocido"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "operando %%c inválido"
@@ -3599,22 +3599,22 @@ msgstr "operando %%d inválido"
msgid "invalid %%H specifier"
msgstr "especificador %%H inválido"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, c-format
msgid "invalid %%h operand"
msgstr "operando %%h inválido"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, c-format
msgid "invalid %%I operand"
msgstr "operando %%I inválido"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, c-format
msgid "invalid %%i operand"
msgstr "operando %%i inválido"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, c-format
msgid "invalid %%j operand"
msgstr "operando %%j inválido"
@@ -3624,7 +3624,7 @@ msgstr "operando %%j inválido"
msgid "invalid %%%c operand"
msgstr "operando %%%c inválido"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, c-format
msgid "invalid %%N operand"
msgstr "operando %%N inválido"
@@ -3634,37 +3634,37 @@ msgstr "operando %%N inválido"
msgid "invalid operand for 'r' specifier"
msgstr "operando inválido para el especificador 'r'"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr "aún no se puede mostrar el operando; code == %d (%c)"
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, c-format
msgid "invalid %%H operand"
msgstr "operando %%H inválido"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, c-format
msgid "invalid %%L operand"
msgstr "operando %%L inválido"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, c-format
msgid "invalid %%M operand"
msgstr "operando %%M inválido"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, c-format
msgid "invalid %%t operand"
msgstr "operando %%t inválido"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, c-format
msgid "invalid %%t operand '"
msgstr "operando %%t inválido '"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, c-format
msgid "invalid %%r operand"
msgstr "operando %%r inválido"
@@ -3728,11 +3728,11 @@ msgstr "no hay registro en la dirección"
msgid "address offset not a constant"
msgstr "el desplazamiento de dirección no es una constante"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "candidato 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "candidato 2:"
@@ -3948,7 +3948,7 @@ msgstr "%s:%d: en la expansión de la expresión constante de %qs"
msgid "candidates are:"
msgstr "los candidatos son:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -3995,48 +3995,48 @@ msgstr "la conversión descarta la constancia"
msgid "source type is not polymorphic"
msgstr "el tipo fuente no es polimórfico"
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "argumento de tipo erróneo para el decremento unario"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "argumento de tipo erróneo para el incremento unario"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "argumento de tipo erróneo para complemento de bits"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "argumento de tipo erróneo para abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "argumento de tipo erróneo para la conjugación"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
msgid "in argument to unary !"
msgstr "en el argumento para el ! unario"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr "no hay operador de pre-incremento para el tipo"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr "no hay operador de post-incremento para el tipo"
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr "no hay operador de pre-decremento para el tipo"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr "no hay operador de post-decremento para el tipo"
@@ -4289,7 +4289,7 @@ msgstr "Operador erróneo"
msgid "Bad type in constant expression"
msgstr "Tipo erróneo en la expresión constante"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "Fin de módulo inesperado"
@@ -4317,11 +4317,11 @@ msgstr "bloque IF"
msgid "implied END DO"
msgstr "END DO implícito"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "asignación"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "asignación de puntero"
@@ -4405,47 +4405,47 @@ msgstr "Los operandos del operador de usuario '%s' en %%L son %s/%s"
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "Rangos inconsistentes para el operador en %%L y %%L"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr "Variable de ciclo"
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr "variable de iterador"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr "Expresión de inicio en el bucle DO"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
msgid "End expression in DO loop"
msgstr "Expresión de fin en el bucle DO"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr "Expresión de paso en el bucle DO"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr "objeto DEALLOCATE"
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr "objeto ALLOCATE"
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr "variable STAT"
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr "variable ERRMSG"
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr "elemento en READ"
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr "variable ACQUIRED_LOCK"
@@ -4454,7 +4454,7 @@ msgstr "variable ACQUIRED_LOCK"
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr "Longitudes de CHARACTER diferentes (%ld/%ld) en el constructor de matriz"
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr "Desborde entero al calcular la cantidad de memoria a reservar"
@@ -4524,7 +4524,7 @@ msgstr "Valor de devolución de la función incorrecto"
msgid "Memory allocation failed"
msgstr "Falló la asignación de memoria"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr "La asignación excedería el límite de memoria"
@@ -4727,7 +4727,7 @@ msgstr "no especifique -march=... y -mcpu=... al mismo tiempo"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr "considere usar '-pg' en lugar de '-p' con gprof(1)"
@@ -4784,6 +4784,10 @@ msgstr "shared y mdll no son compatibles"
msgid "static is not supported on TPF-OS"
msgstr "static no se admite en TPF-OS"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr "considere usar `-pg' en lugar de `-p' con gprof(1)"
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "no se pueden usar -EB y -EL al mismo tiempo"
@@ -4812,10 +4816,6 @@ msgstr "no se pueden usar juntos -mbig-endian y -mlittle-endian"
msgid "no processor type specified for linking"
msgstr "no existe el tipo de procesador especificado para enlazar"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran no admite -E sin usar -cpp"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "el m210 no admite little endian"
@@ -4868,6 +4868,10 @@ msgstr "objc-cpp-output es obsoleto; por favor use en su lugar objective-c-cpp-o
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "la opción -shared no se admite actualmente en ELF de VAX"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran no admite -E sin usar -cpp"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni y -femit-class-files son incompatibles"
@@ -7924,6 +7928,10 @@ msgstr "Acumula los argumentos de función salientes y adquiere/libera el espaci
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr "Cuando se accede a la RAM, usa X como lo impone el hardware, p.e. sólo usa pre-decremento, post-incremento y direccionamiento indirecto con el registro X. Sin esta opción, el compilador puede asumir que hay un modo de direccionamiento X+const similar a Y+const y Z+const y emite instrucciones para emular tal modo de deireccionamiento para X."
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr "El dispositivo no tiene el registro de función especial SPH. Esta opción la sobreescribirá el controlador del compilador con la opción correcta si se puede deducir la presencia/ausencia de SPH con -mmcu=MCU."
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr "Nombres de MCU conocidos:"
@@ -10249,18 +10257,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "No predefine las macros específicas del sistema y específicas de GCC"
#: go/lang.opt:42
+msgid "Add explicit checks for division by zero"
+msgstr "Agrega revisiones explícitas para la división por cero"
+
+#: go/lang.opt:46
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
+msgstr "Agrega revisiones explícitas para el desbordamiento de división en INT_MIN / -1"
+
+#: go/lang.opt:50
msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr "-fgo-dump-<tipo>\tInformación interna del frente Dump Go"
-#: go/lang.opt:46
+#: go/lang.opt:54
msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
msgstr "-fgo-optimize-<tipo>\tActiva los pasos de optimización en el frente|"
-#: go/lang.opt:50
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr "-fgo-pkgpath=<cadena>\tEstablece la ruta de paquetes Go"
+
+#: go/lang.opt:62
msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
msgstr "-fgo-prefix=<cadena>\tDefine el prefijo específico del paquete para ombres Go exportados"
-#: go/lang.opt:54
+#: go/lang.opt:66
msgid "Functions which return values must end with return statements"
msgstr "Las funciones con valores de devolución deben terminar con declaraciones return"
@@ -11771,224 +11791,231 @@ msgstr "Crea una biblioteca compartida"
msgid "Create a position independent executable"
msgstr "Genera un ejecutable independiente de posición"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
msgid "invalid use of type"
msgstr "uso inválido del tipo"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-msgid "floating point constant truncated to integer"
-msgstr "se truncó la constante de coma flotante a entero"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr "la constante se refiere a sí misma"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
msgid "expected numeric type"
msgstr "se esperaba un tipo numérico"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+msgid "expected boolean type"
+msgstr "se esperaba un tipo booleano"
+
+#: go/gofrontend/expressions.cc:3911
msgid "expected integer or boolean type"
msgstr "se esperaba un tipo entero o booleano"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
msgid "invalid operand for unary %<&%>"
msgstr "operando inválido para el unario %<&%>"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
msgid "expected pointer"
msgstr "se esperaba un puntero"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
msgid "incompatible types in binary expression"
msgstr "tipos incompatibles en la expresión binaria"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
msgid "shift of non-integer operand"
msgstr "desplazamiento de un operando que no es entero"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr "la cuenta de desplazamiento no es un entero sin signo"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
msgid "negative shift count"
msgstr "cuenta de desplazamiento negativa"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
msgid "object is not a method"
msgstr "el objeto no es un método"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
msgid "method type does not match object type"
msgstr "el tipo de método no coincide con el tipo de objeto"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
msgid "invalid use of %<...%> with builtin function"
msgstr "uso inválido de %<..%> con la función interna"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
msgid "not enough arguments"
msgstr "faltan argumentos"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
msgid "too many arguments"
msgstr "demasiados argumentos"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
msgid "argument 1 must be a map"
msgstr "el argumento 1 debe ser un mapa"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
msgid "invalid type for make function"
msgstr "tipo inválido para la función make"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr "se requiere longitud al alojar una rebanada"
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
msgid "bad size for make"
msgstr "tamaño erróneo para make"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr "capacidad errónea al crear la rebanada"
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
msgid "too many arguments to make"
msgstr "demasiados argumentos para make"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
msgid "argument must be array or slice or channel"
msgstr "el argumento debe ser matriz o rebanada o canal"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr "el argumento debe ser cadena o matriz o rebanada o mapa o canal"
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
msgid "unsupported argument type to builtin function"
msgstr "no se admite el tipo de argumento para la función interna"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
msgid "argument must be channel"
msgstr "el argumento debe ser canal"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr "no se puede cerrar un canal de sólo recepción"
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
msgid "argument must be a field reference"
msgstr "el argumento debe ser una referencia de campo"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
msgid "left argument must be a slice"
msgstr "el argumento izquierdo debe ser una rebanada"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr "los tipos de elemento deben ser el mismo"
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
msgid "first argument must be []byte"
msgstr "el primer argumento debe ser []byte"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
msgid "second argument must be slice or string"
msgstr "el segundo argumento debe ser una rebanada o una cadena"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
msgid "argument 2 has invalid type"
msgstr "el argumento 2 es de tipo inválido"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
msgid "argument must have complex type"
msgstr "el argumento debe tener tipo complejo"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
msgid "complex arguments must have identical types"
msgstr "los argumentos complejos deben tener tipos idénticos"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
msgid "complex arguments must have floating-point type"
msgstr "los argumentos complejos deben tener tipo de coma flotante"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+msgid "invalid use of %<...%> with non-slice"
+msgstr "uso inválido de %<...%> con algo que no es rebanada"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
msgid "expected function"
msgstr "se esperaba función"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
msgid "incompatible type for receiver"
msgstr "tipo incompatible para el receptor"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "uso inválido de %<...%> en la llamada a la función que no es variadic"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
msgid "number of results does not match number of values"
msgstr "el número de resultados no coincide con el número de valores"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr "el índice debe ser entero"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr "el final de la rebanada debe ser entero"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr "rebanada con valor que no es direccionable"
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
msgid "incompatible type for map index"
msgstr "tipo incompatibles para el índice de mapa"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr "se esperaba interfaz o puntero a interfaz"
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
msgid "too many expressions for struct"
msgstr "demasiadas expresiones para struct"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
msgid "too few expressions for struct"
msgstr "faltan expresiones para struct"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr "demasiados elementos en la literal compuesta"
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
msgid "invalid unsafe.Pointer conversion"
msgstr "conversión unsafe.Pointer inválida"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr "la aserción de tipo sólo es válida para los tipos de interfaz"
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr "aserción de tipo imposible: el tipo no implementa interfaz"
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
msgid "expected channel"
msgstr "se esperaba canal"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr "recepción inválida en canal de sólo envío"
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr "se requieren paréntesis alrededor de esta literal compuesta para eviar ambigüedad en la decodificación"
+
#: go/gofrontend/statements.cc:590
msgid "invalid left hand side of assignment"
msgstr "lado izquierdo de la asignación inválido"
@@ -12017,19 +12044,19 @@ msgstr "demasiados valores en la declaración de devolución"
msgid "expected boolean expression"
msgstr "se esperaba una expresión booleana"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
msgid "incompatible types in send"
msgstr "tipos incompatibles en send"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr "envío inválido en canal de sólo recepción"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr "demasiadas variables para la cláusula de rango con canal"
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr "la cláusula de rango debe tener tipo matriz, rebanada, cadena, mapa o canal"
@@ -12079,71 +12106,71 @@ msgstr "necesita conversión implícita"
msgid "cannot use type %s as type %s"
msgstr "no se puede usar el tipo %s como tipo %s"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
msgid "different receiver types"
msgstr "tipos de receptor diferentes"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
msgid "different number of parameters"
msgstr "número diferente de parámetros"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
msgid "different parameter types"
msgstr "tipos de parámetro diferentes"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr "varargs diferentes"
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr "número diferente de resultados"
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr "tipos de resultado diferentes"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr "asignación implícita de %s%s%s campo oculto %s%s%s"
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr "se necesita conversión explícita; falta el método %s%s%s"
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, c-format
msgid "incompatible type for method %s%s%s"
msgstr "tipo incompatible para el método %s%s%s"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "tipo incompatible para el método %s%s%s (%s)"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr "el puntero a tipo de interfaz no tiene métodos"
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
msgid "type has no methods"
msgstr "el tipo no tiene métodos"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr "método ambiguo %s%s%s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, c-format
msgid "missing method %s%s%s"
msgstr "falta el método %s%s%s"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr "el método %s%s%s requiere un puntero"
@@ -12210,7 +12237,7 @@ msgstr "el tercer argumento de %<__builtin_prefetch%> debe ser una constante"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "el tercer argumento para %<__builtin_prefetch%> es inválido; se usa cero"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "faltan argumentos para la función %<va_start%>"
@@ -12232,7 +12259,7 @@ msgstr "(así que debe pasar %qT y no %qT a %<va_arg%>)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "si se alcanza este código, el programa abortará"
@@ -12314,7 +12341,7 @@ msgstr "el argumento 1 para __atomic_is_lock_free no es un entero"
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "%Kuso inválido de %<__builtin_va_arg_pack ()%>"
@@ -12408,8 +12435,8 @@ msgstr "%Kse intenta liberar un objeto que no es de pila"
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "no se descarta el valor void como debería de ser"
@@ -12684,7 +12711,7 @@ msgstr "la declaración de %q+D oscurece a una declaración global"
msgid "declaration of %q+D shadows a previous local"
msgstr "la declaración de %q+D oscurece a una declaración local previa"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "aquí está la declaración oscurecida"
@@ -12789,7 +12816,7 @@ msgstr "switch salta dentro de una expresión de declaración"
msgid "%qE defined as wrong kind of tag"
msgstr "%qE definido como un tipo erróneo de etiqueta"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "uso inválido de %<restrict%>"
@@ -12907,7 +12934,7 @@ msgstr "el parámetro %qD está inicializado"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "un objeto de tamaño variable puede no ser inicializado"
@@ -12917,7 +12944,7 @@ msgstr "un objeto de tamaño variable puede no ser inicializado"
msgid "variable %qD has initializer but incomplete type"
msgstr "la variable %qD tiene inicializador pero de tipo de dato incompleto"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "se le dió a la función incluída en línea %q+D un atributo noinline"
@@ -12947,7 +12974,7 @@ msgstr "falta el tamaño de la matriz en %q+D"
msgid "zero or negative size array %q+D"
msgstr "matriz %q+D de tamaño cero o negativo"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "no se conoce el tamaño de almacenamiento de %q+D"
@@ -13057,7 +13084,7 @@ msgstr "el tamaño de la matriz no se puede evaluar"
msgid "variable length array %qE is used"
msgstr "se usó la matriz de longitud variable %qE"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr "se usó la matriz de longitud variable"
@@ -13142,7 +13169,7 @@ msgstr "se especificó una clase de almacenamiento para el parámetro %qE"
msgid "storage class specified for unnamed parameter"
msgstr "se especificó una clase de almacenamiento para un parámetro sin nombre"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "se especificó una clase de almacenamiento para el nombre de tipo"
@@ -13291,7 +13318,7 @@ msgstr "el nombre de tipo que se declaró como función devuelve una matriz"
msgid "function definition has qualified void return type"
msgstr "la definición de la función tiene un tipo de devolución void calificado"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "se descartan los calificadores de tipo en el tipo de devolución de la función"
@@ -13402,7 +13429,7 @@ msgstr "ISO C prohíbe los tipos de función const o volatile"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "un miembro de una estructura o union no puede tener un tipo modificado variablemente"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "se declaró la variable o campo %qE como void"
@@ -13825,7 +13852,7 @@ msgstr "el argumento %qD no coincide con el prototipo interno"
msgid "argument %qD doesn%'t match prototype"
msgstr "el argumento %qD no coincide con el prototipo"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "no hay una declaración de devolución en la función que no devuelve void"
@@ -14018,7 +14045,7 @@ msgstr "el identificador %qE causa conflictos con la palabra clave de C++"
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C prohíbe una unidad de traducción vacía"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C no permite un %<;%> extra fuera de una función"
@@ -14028,7 +14055,7 @@ msgstr "ISO C no permite un %<;%> extra fuera de una función"
msgid "unknown type name %qE"
msgstr "nombre de tipo %qE desconocido"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "se esperaban especificadores de declaración"
@@ -14038,7 +14065,7 @@ msgstr "se esperaban especificadores de declaración"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "se esperaba %<;>, identificador o %<(%>"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "se descartan los atributos de prefijo para los métodos"
@@ -14058,7 +14085,7 @@ msgstr "atributo inesperado"
msgid "data definition has no type or storage class"
msgstr "la definición de datos no tiene tipo o clase de almacenamiento"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "se esperaba %<,%> o %<;%>"
@@ -14086,7 +14113,7 @@ msgstr "ISO C99 no admite %<_Static_assert%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 no admite %<_Static_assert%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "se esperaba una cadena literal"
@@ -14113,18 +14140,18 @@ msgstr "falló la aserción estática: %E"
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "se esperaba un identificador"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "coma al final de la lista de enumeradores"
@@ -14254,7 +14281,7 @@ msgstr "ISO C90 prohíbe mezclar declaraciones y código"
msgid "expected %<}%> before %<else%>"
msgstr "se esperaba %<}%> antes de %<else%>"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr "%<else%> sin un %<if%> previo"
@@ -14283,17 +14310,17 @@ msgstr "se esperaba un identificador o %<*%>"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "se esperaba una declaración"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "se sugieren llaves alrededor del cuerpo vacío en una declaración %<if%>"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "se sugieren llaves alrededor del cuerpo vacío en una declaración %<else%>"
@@ -14358,7 +14385,7 @@ msgstr "ISO C no permite %<%E (expression)%>"
msgid "cannot take address of %qs"
msgstr "no se puede tomar la dirección de %qs"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "se esperaba una expresión"
@@ -14398,257 +14425,257 @@ msgstr "el operando de %<__builtin_complex%> no es de tipo de coma flotante bina
msgid "%<__builtin_complex%> operands of different types"
msgstr "los operandos de %<__builtin_complex%> son de tipos diferentes"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "número erróneo de argumentos para %<__builtin_shuffle%>"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "la literal compuesta tiene tamaño variable"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr "literal compuesta calificada por un calificador de espacio de direcciones"
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 prohíbe las literales compuestas"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "se esperaba un identificador o %<)%>"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr "punto y coma extra"
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "se especificó un punto y coma extra en la definición del método"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr "los atributos de método sólo se deben especificar al final"
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr "se esperaba %<;%> o %<{%> después de la definición del atributo de método"
-#: c-parser.c:7753
+#: c-parser.c:7758
#, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "se esperaba una declaración método objective-c"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "ninguna clase de almacenamiento o tipo se puede especificar aquí,"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr "atributo de propiedad desconocido"
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "falta un %<=%> (después del atributo %<getter%>)"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "falta un %<=%> (después del atributo %<setter%>)"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "el atributo %<setter%> sólo se puede especificar una vez"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr "el nombre del setter debe terminar con %<:%>"
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "el atributo %<getter%> sólo se puede especificar una vez"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> sólo se puede usar en declaraciones compuestas"
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr "%<#pragma omp flush%> sólo se puede usar en declaraciones compuestas"
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%> sólo se puede usar en declaraciones compuestas"
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr "%<#pragma omp taskyield%> sólo se puede usar en declaraciones compuestas"
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr "%<#pragma omp section%> sólo se puede usar en construcciones %<#pragma omp sections%>"
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%> debe ser primero"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr "demasiadas cláusulas %qs"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "el argumento de collapse necesita una expresión entera constante positiva"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "se esperaba %<none%> o %<shared%>"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr "se esperaba una expresión entera"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr "el valor de %<num_threads%> debe ser positivo"
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "se esperaba %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> o %<max%>"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr "el calendarizador %<runtime%> no toma un parámetro %<chunk_size%>"
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr "el calendarizador %<auto%> no toma un parámetro %<chunk_size%>"
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "género de calendarizador inválido"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "se esperaba una cláusula %<#pragma omp%>"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs no es válido para %qs"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "forma inválida de %<#pragma omp atomic%>"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "operador inválido para %<#pragma omp atomic%>"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "se esperaba %<(%> o fin de línea"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr "se esperaba una declaración for"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "se esperaba una declaración de iteración o una inicialización"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr "no hay suficientes bucles perfectamente anidados"
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr "los bucles colapsados no están perfectamente anidados"
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "la variable de iteración %qD no debe ser firstprivate"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr "%qD no es una variable"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%qE se declaró %<threadprivate%> después del primer uso"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "la variable automática %qE no puede ser %<threadprivate%>"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%<threadprivate%> %qE tiene tipo incompleto"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr "%<__transaction_cancel%> sin activar el soporte para memoria transaccional"
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr "%<__transaction_cancel%> dentro de un %<__transaction_relaxed%>"
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr "%<__transaction_cancel%> más externo no está dentro del %<__transaction_atomic%> más externo"
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr " o una función %<transaction_may_cancel_outer%>"
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr "%<__transaction_cancel%> no está dentro de %<__transaction_atomic%>"
@@ -14658,7 +14685,7 @@ msgstr "%<__transaction_cancel%> no está dentro de %<__transaction_atomic%>"
msgid "%qD has an incomplete type"
msgstr "%qD tiene un tipo de dato incompleto"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "uso inválido de la expresión void"
@@ -14724,67 +14751,72 @@ msgstr "tipos de objetivo a incompatibles en C++"
msgid "function return types not compatible due to %<volatile%>"
msgstr "los tipos de devolución de función no son compatibles debido a %<volatile%>"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "aritmética en puntero a un tipo de dato incompleto"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr "la conversión de una literal compuesta de matriz a un puntero está malformada en C++"
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT no tiene un miembro llamado %qE"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "petición del miembro %qE en algo que no es una estructura o unión"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "puntero deferenciado a tipo de dato incompleto"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "deferenciando el puntero %<void *%>"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "el valor del subíndice no es ni matriz ni puntero ni vector"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "el subíndice de la matriz no es un entero"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "el valor de subíndice es un puntero a función"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr "el valor del índice está fuera del límite"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C prohíbe el subíndice de una matriz %<register%>"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 prohíbe el subíndice de una matriz no-lvaluada"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr "se definió la constante enum aquí"
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "el objeto %qE llamado no es una función"
@@ -14792,370 +14824,370 @@ msgstr "el objeto %qE llamado no es una función"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "función llamada a través de un tipo de dato que no es compatible"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "se llamó a una función con tipo de devolución void calificado"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "el último argumento de __builtin_shuffle debe ser un vector entero"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, gcc-internal-format
msgid "__builtin_shuffle arguments must be vectors"
msgstr "los argumentos de __builtin_shuffle deben ser vectores"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr "los vectores argumento de __builtin_shuffle debe ser del mismo tipo"
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr "el número de elementos del vector (o vectores) argumento de __builtin_shuffle y la máscara de vector deben ser el mismo"
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr "el tipo interno del vector (o vectores) argumento de __builtin_shuffle debe tener el mismo tamaño que el tipo interno de la máscara"
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "demasiados argumentos para el método %qE"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "demasiados argumentos para la función %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, gcc-internal-format
msgid "declared here"
msgstr "se declara aquí"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "el tipo de dato del parámetro formal %d está incompleto"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "se pasa el argumento %d de %qE como entero en lugar de coma flotante debido al prototipo"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "se pasa el argumento %d de %qE como entero en lugar de complejo debido al prototipo"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "se pasa el argumento %d de %qE como complejo en lugar de coma flotante debido al prototipo"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "se pasa el argumento %d de %qE como coma flotante en lugar de entero debido al prototipo"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "se pasa el argumento %d de %qE como complejo en lugar de entero debido al prototipo"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "se pasa el argumento %d de %qE como coma flotante en lugar de complejo debido al prototipo"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "se pasa el argumento %d de %qE como %<float%> en lugar de %<double%> debido al prototipo"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "se pasa el argumento %d de %qE como %qT en lugar de %qT debido al prototipo"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "se pasa el argumento %d de %qE con anchura diferente debido al prototipo"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "se pasa el argumento %d de %qE como unsigned debido al prototipo"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "se pasa el argumento %d de %qE como signed debido al prototipo"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "conversión implícita de %qT a %qT al pasar el argumento a la función"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "faltan argumentos para la función %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "la comparación con una literal de cadena resulta en una conducta no especificada"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "comparación entre %qT y %qT"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "se usó un puntero de tipo %<void *%> en la sustracción"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "se utilizó un puntero a una función en la sustracción"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C no admite %<~%> para conjugaciones complejas"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "argumento de tipo erróneo para el signo de exclamación unario"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr "el incremento de un valor de enumeración es inválido en C++"
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr "el decremento de un valor de enumeración es inválido en C++"
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C no admite %<++%> y %<--%> en tipos complejos"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "argumento de tipo erróneo para el incremento"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "argumento de tipo erróneo para el decremento"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "incremento de puntero a estructura desconocida"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "decremento de puntero a estructura desconocida"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr "se toma la dirección de la expresión de tipo %<id%>"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "asignación de la ubicación de sólo lectura %qE"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "incremento de la ubicación de sólo lectura %qE"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "decremento de la ubicación de sólo lectura %qE"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "no se puede tomar la dirección del campo de bits %qD"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "se usó la variable de registro global %qD en la función anidada"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "se usó la variable de registro %qD en la función anidada"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "se solicitó la dirección de la variable de registro global %qD"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "se solicitó la dirección de la variable de registro %qD"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "matriz no-lvaluada en la expresión condicional"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "conversión implícita de %qT a %qT para coincidir con otro resultado del condicional"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C prohíbe una expresión condicional con sólo un lado void"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "se usaron punteros a espacios de direcciones discontinuos en la expresión condicional"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C prohíbe expresiones condicionales entre %<void *%> y punteros de función"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "los tipos de datos punteros no coinciden en la expresión condicional"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "los tipos de datos punteros/enteros no coinciden en la expresión condicional"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "los tipos de datos no coinciden en la expresión condicional"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "el operador del lado izquierdo de la expresión coma no tiene efecto"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
msgid "cast adds %q#v qualifier to function type"
msgstr "la conversión agrega el calificador %q#v al tipo de función"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "la conversión descarta el calificador %q#v del tipo del destino del puntero"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr "para estar seguro todos los punteros intermedios en la conversión de %qT a %qT se deben calificar como %<const%>"
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "la conversión especifica el tipo matriz"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "la conversión especifica el tipo función"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C prohíbe la conversión de un no escalar al mismo tipo"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C prohíbe la conversión al tipo union"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "conversión a tipo union desde un tipo no presente en union"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr "conversión al puntero de espacio de direcciones %s desde un puntero de espacio de direcciones genérico discontinuo"
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr "conversión a un puntero de espacio de direcciones genérico desde un puntero de espacio de direcciones %s discontinuo"
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr "conversión a un puntero de espacio de direcciones %s desde un puntero de espacio de direcciones %s discontinuo"
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "la conversión incrementa la alineación requerida del tipo del destino"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "conversión de puntero a entero de tamaño diferente"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "conversión desde una llamada a función de tipo %qT al tipo %qT que no coincide"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "conversión a puntero desde un entero de tamaño diferente"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C prohíbe la conversión de un apuntador a función a un tipo de objeto apuntador"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C prohíbe la conversión de objeto apuntador a un tipo de apuntador a función"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr "definir un tipo en una conversión es inválido en C++"
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr "conversión de enum en una asignación es inválido en C++"
@@ -15167,683 +15199,683 @@ msgstr "conversión de enum en una asignación es inválido en C++"
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "se esperaba %qT pero el argumento es de tipo %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "la conversión de enum al pasar el argumento %d de %qE es inválido en C++"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr "la conversión de enum en la inicialización es inválida en C++"
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr "conversión enum en devolución es inválida en C++"
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "no se puede pasar un valor-r a un parámetro de referencia"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "el paso del argumento %d de %qE hace que la función calificada con %q#v apunte desde una no calificada"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "la asignación hace que la función calificada con %q#v apunte desde una no calificada"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "la inicialización hace que la función calificada con %q#v apunte desde una no calificada"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "la devolución hace que la función calificada con %q#v apunte desde una no calificada"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "el paso del argumento %d de %qE descarta el calificador %qv del tipo del destino del puntero"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "la asignación descarta el calificador %qv del tipo del destino del puntero"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "la inicialización descarta el calificador %qv del tipo del destino del puntero"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
msgid "return discards %qv qualifier from pointer target type"
msgstr "la devolución descarta el calificador %qv del tipo del destino del puntero"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C prohíbe la conversión de argumentos a tipo union"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "no se permite la petición para la conversión implícita de %qT a %qT en C++"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "se pasa el argumento %d de %qE desde un puntero a espacio de direcciones no contenido"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr "asignación desde puntero a espacio de direcciones no contenido"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "inicialización desde puntero a espacio de direcciones no contenido"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr "devolución desde puntero a espacio de direcciones no contenido"
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "el argumento %d de %qE puede ser un candidato para un atributo de formato"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "el lado izquierdo de la asignación puede ser un candidato para un atributo de formato"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "el lado izquierdo de la inicialización puede ser un candidato para un atributo de formato"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "el tipo de devolución puede ser un candidato para un atributo de formato"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C prohíbe el paso del argumento %d de %qE entre un puntero a función y %<void *%>"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C prohíbe la asignación entre un puntero a función y %<void *%>"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C prohíbe la inicialización entre un puntero a función y %<void *%>"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C prohíbe la devolución entre un puntero a función y %<void *%>"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "el puntero que apunta en el paso del argumento %d de %qE difiere en signo"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "el puntero que apunta en la asignación difiere en signo"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "el puntero que apunta en la inicialización difiere en signo"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "el puntero que apunta en la devolución difiere en signo"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "se pasa el argumento %d de %qE desde un tipo de puntero incompatible"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "asignación desde un tipo de puntero incompatible"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "inicialización desde un tipo de puntero incompatible"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "devolución desde un tipo de puntero incompatible"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "uso inválido de matriz no-lvaluada"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "el paso del argumento %d de %qE crea un puntero desde un entero sin una conversión"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "la asignación crea un puntero desde un entero sin una conversión"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "la inicialización crea un puntero desde un entero sin una conversión"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "la devolución crea un puntero desde un entero sin una conversión"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "el paso del argumento %d de %qE crea un entero desde un puntero sin una conversión"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "la asignación crea un entero desde un puntero sin una conversión"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "la inicialización crea un entero desde un puntero sin una conversión"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "la devolución crea un entero desde un puntero sin una conversión"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "tipo incompatible para el argumento %d de %qE"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "tipos incompatible en la asignación al tipo %qT del tipo %qT"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "tipos incompatibles en la inicialización del tipo %qT usando el tipo %qT"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "tipos incompatible al devolver el tipo %qT pero se esperaba %qT"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "C tradicional rechaza la inicialización automática de agregados"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(cerca de la inicialización de %qs)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "matriz inicializada con una constante de cadena entre paréntesis"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "inicialización de un miembro de matriz flexible"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "matriz de tipo char inicializada con una cadena ancha"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "matriz de caracteres anchos inicializada con una cadena que no es ancha"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "matriz de caracteres anchos inicializada con una cadena ancha incompatible"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "matriz de tipo inapropiado inicializada con una constante de cadena"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "matriz inicializada con una expresión matrizal que no es constante"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "el elemento inicializador no es una constante"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "el elemento inicializador no es una expresión constante"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "el elemento inicializador no es calculable al momento de la carga"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "inicializador inválido"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "no se pueden inicializar los tipos de vector opacos"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "grupo extra de llaves al final del inicializador"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "faltan llaves alrededor del inicializador"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "llaves alrededor del inicializador escalar"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "inicialización de un miembro de matriz flexible en un contexto anidado"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "falta el inicializador"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "inicializador escalar vacío"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "elementos extras en el inicializador escalar"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "índice de matriz en el inicializador que no es matriz"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "el nombre del campo no está en el inicializador de record o union"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "el índice de matriz en el inicializador no es de tipo entero"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "el índice de matriz en el inicializador no es una expresión constante entera"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "el índice de matriz no es una constante en el inicializador"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "el índice de matriz en el inicializador excede los límites de la matriz"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "rango de índices vacío en el inicializador"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "el rango de índices de la matriz en el inicializador excede los límites de la matriz"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "se especificó el campo desconocido %qE en el inicializador"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "campo inicializado con efectos colaterales sobreescritos"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "campo inicializado sobreescrito"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "exceso de elementos en el inicializador de matriz de caracteres"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "exceso de elementos en el inicializador de struct"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "inicialización no estática de un miembro de matriz flexible"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "exceso de elementos en el inicializador de union"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "C tradicional rechaza la inicialización de unions"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "exceso de elementos en el inicializador de matriz"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "exceso de elementos en el inicializador de vector"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "exceso de elementos en el inicializador de escalar"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C prohíbe %<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "la función declarada %<noreturn%> tiene una declaración %<return%>"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "%<return%> sin valores, en una función que no devuelve void"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "%<return%> con valor, en una función que devuelve void"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "ISO C prohíbe %<return%> con expresión, en una función que devuelve void"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "la función devuelve la dirección de una variable local"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "la cantidad de switch no es un entero"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "no se convierte la expresión de switch %<long%> a %<int%> en ISO C"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "la etiqueta de case no es una expresion constante entera"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "la etiqueta case no se encuentra dentro de una declaración switch"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "la etiqueta %<default%> no está dentro de una declaración switch"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "se sugieren llaves explícitas para evitar un %<else%> ambiguo"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "la declaración break no está dentro de un bucle o switch"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "la declaración continue no está dentro de un bucle"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "se usó la declaración break en un bucle for de OpenMP"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "declaración sin efecto"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "la declaración de la expresión tiene tipo de dato incompleto"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr "la conversión de escalar a vector implica truncado"
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "la cuenta de desplazamiento a la derecha es negativa"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "cuenta de desplazamiento a la derecha >= anchura del tipo"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "la cuenta de desplazamiento a la izquierda es negativa"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "cuenta de desplazamiento a la izquierda >= anchura del tipo"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr "se comparan vectores con tipos de elemento diferentes"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr "se comparan vectores con números de elementos diferentes"
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "no es segura la comparacion de coma flotante con == o !="
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr "la comparación siempre se evalúa como %<false%> para la dirección de %qD que nunca será NULL"
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr "la comparación siempre se evalúa como %<true%> para la dirección de %qD que nunca será NULL"
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr "la comparación de punteros a espacios de direcciones discontinuos"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C prohíbe la comparación de %<void *%> con un puntero de función"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "la comparación de diferentes tipos de puntero carece de una conversión"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "comparación entre puntero y entero"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "comparación de punteros completos e incompletos"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C prohíbe la comparación entre punteros a funciones"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr "comparación ordenada de puntero con un puntero nulo"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "comparación ordenada de puntero con el entero cero"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "conversión implícita de %qT a %qT para coincidir con otro operando de la expresión binaria"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "se usa un valor de tipo matriz que no se puede cambiar a puntero cuando se requiere un escalar"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "se usa un valor de tipo struct cuando se requiere un escalar"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "se usa un valor de tipo union cuando se requiere un escalar"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr "se usa un tipo vector cuando se requiere un escalar"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "%qE tiene tipo inválido para %<reduction%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE tiene tipo inválido para %<reduction(%s)%>"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE debe ser %<threadprivate%> para %<copin%>"
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE no es una variable en la cláusula %qs"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr "%qE aparece más de una vez en las cláusulas de datos"
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "%qE no es una variable en la cláusula %<firstprivate%>"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "%qE no es una variable en la cláusula %<lastprivate%>"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qE está predeterminado como %qs para %qs"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr "C++ requiere un tipo promovido, no un tipo enum, en %<va_arg%>"
@@ -15853,7 +15885,7 @@ msgstr "C++ requiere un tipo promovido, no un tipo enum, en %<va_arg%>"
msgid "function call has aggregate value"
msgstr "la llamada a la función tiene valor agregado"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "el tamaño de la variable %q+D es demasiado grande"
@@ -16663,52 +16695,52 @@ msgstr "%s: no se puede abrir como un fichero COFF"
msgid "library lib%s not found"
msgstr "no se encontró la biblioteca lib%s"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "no se puede convertir a un tipo puntero"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "se usó un valor de puntero donde se esperaba un valor de coma flotante"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "se usó un valor agregado donde se esperaba un float"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "conversión a tipo de dato incompleto"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr "no se puede convertir entre valores vectoriales de tamaños diferentes"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "se usó un valor agregado donde se esperaba un entero"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "se usó un valor de puntero donde se esperaba un complejo"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "se usó un valor agregado donde se esperaba un complejo"
-#: convert.c:965
+#: convert.c:963
#, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "no se puede convertir el valor a un vector"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr "se usó un valor agregado donde se esperaba uno de coma fija"
@@ -16863,7 +16895,7 @@ msgstr "el dominador de %d debería ser %d, no %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr "sólo se admiten múltiples personalidades EH con ensambladores que admiten la directiva cfi.personality"
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr "se encontró UNSPEC %s (%d) que no está delegitimado la ubicación de variable"
@@ -16953,42 +16985,42 @@ msgstr "falló verify_eh_tree"
msgid "stack limits not supported on this target"
msgstr "no se admiten límites de la pila en este objetivo"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr "accesos múltiples al miembro de estructura volatile debido al atributo packed"
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr "accesos múltiples al campo de bit de estructura volatile debido al atributo packed"
-#: expmed.c:1800
+#: expmed.c:1820
#, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr "se usó un acceso desalineado para el miembro de la estructura"
-#: expmed.c:1803
+#: expmed.c:1823
#, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr "se usó un acceso desalineado para el campo de bit de la estructura"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr "cuando un objeto volatile abarca múltiples ubicaciones con tamaño de tipo, el compilador debe escoger entre usar un solo acceso desalineado para preservar la volatilidad, o usar múltiples accesos alineados para evitar faltas en tiempo de ejecución; este código puede fallar en tiempo de ejecución si el hardware no permite este acceso"
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr "el marco local no está disponible (¿Función desnuda?)"
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%Kla llamada a %qs se redeclaró con error de atributo: %s"
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "%Kla llamada a %qs se redecló con aviso de atributo: %s"
@@ -17063,7 +17095,7 @@ msgstr "se asume que el desbordamiento con signo no sucede al cambiar X +- C1 cm
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr "se asume que el desbordamiento con signo no sucede cuando se combinan constantes alrededor de una comparación"
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "fold check: el árbol original cambió por un pliegue"
@@ -17073,7 +17105,7 @@ msgstr "fold check: el árbol original cambió por un pliegue"
msgid "total size of local objects too large"
msgstr "el tamaño total de los objetos locales es demasiado grande"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "restricción imposible en %<asm%>"
@@ -17517,77 +17549,77 @@ msgstr "bytecode stream: etiqueta de declaración GIMPLE %s desconocida"
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "revisión gimple: se esperaba %s(%s), se tiene %s(%s) en %s, en %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "se usa el resultado de una función que devuelve %<void%>"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "l-valor inválido en la salida asm %d"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr "la entrada que no es de memoria %d debe permanecer en memoria"
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "la entrada de memoria %d no es directamente direccionable"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr "se usó la variable threadprivate %qE en una tarea sin atar"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr "tarea contenedora"
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr "no se especificó %qE en el paralelo que lo contiene"
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr "paralelo contenedor"
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr "la variable de iteración %qE debe ser private"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr "la variable de iteración %qE no debe ser firstprivate"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr "la variable de iteración %qE no debe ser reduction"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr "la variable %s %qE es private en el contexto externo"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "falló la gimplificación"
-#: godump.c:1214
+#: godump.c:1234
#, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "no se puede cerrar el fichero de volcado Go: %m"
-#: godump.c:1226
+#: godump.c:1246
#, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "no se puede abrir el fichero de volcado Go %qs: %m"
@@ -17642,7 +17674,7 @@ msgstr "No se pueden usar las optimizaciones de bucle Graphite"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr "falta el resumen de inclusión en línea ipa en el fichero de entrada"
@@ -17781,48 +17813,48 @@ msgstr "la variable %qD se redeclaró como función"
msgid "function %qD redeclared as variable"
msgstr "la función %qD se redeclaró como variable"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "la región de barrera puede no estar bien anidada dentro de la región de trabajo compartido, crítica, ordenada, maestra o de tarea explícita"
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "la región de trabajo compartido puede no estar bien anidada dentro de la región de trabajo compartido, crítica, ordenada, maestra o de tarea explícita"
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr "la región maestra puede no estar bien anidada dentro de la región de trabajo compartido o de tarea explícita"
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr "la región ordenada puede no estar bien anidada dentro de la región crítica o de tarea explícita"
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr "la región ordenada puede estar bien anidada dentro de una región de bucle con una cláusula ordenada"
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr "la región crítica puede no estar bien anidada dentro de una región crítica con el mismo nombre"
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr "salida inválida de un bloque estructurado OpenMP"
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr "entrada inválida a un bloque estructurado OpenMP"
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr "ramificación inválida desde/para un bloque estructurado OpenMP"
@@ -17928,7 +17960,7 @@ msgstr "-freorder-blocks-and-partition no funciona con excepciones en esta arqui
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition no admite información de desenredo en esta arquitectura"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition no funciona en esta arquitectura"
@@ -18292,9 +18324,9 @@ msgstr "no se puede usar %qs como un registro usado de llamada"
msgid "can%'t use %qs as a fixed register"
msgstr "no se puede usar %qs como un registro fijo"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "nombre de registro desconocido: %s"
@@ -18374,12 +18406,12 @@ msgstr "no se puede encontrar un registro para vaciar la clase %qs"
msgid "%<asm%> operand requires impossible reload"
msgstr "el operando %<asm%> requiere una recarga imposible"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "la restricción del operando %<asm%> es incompatible con el tamaño del operando"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "el operando de salida es constante en %<asm%>"
@@ -18599,7 +18631,7 @@ msgstr "el atributo packed causa una alineación ineficiente"
msgid "packed attribute is unnecessary"
msgstr "no es necesario el atributo packed"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "la alineación de los elementos de la matriz es mayor que el tamaño de los elementos"
@@ -18814,7 +18846,7 @@ msgstr "uso volatile de %qD inválido dentro de la transacción"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr "la llamada a la función %<transaction_may_cancel_outer%> no está en una transacción más externa o %<transaction_may_cancel_outer%>"
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr "llamada a función %qD insegura dentro de una transacción atómica"
@@ -18829,7 +18861,7 @@ msgstr "llamada a función %qE insegura dentro de una transacción atómica"
msgid "unsafe indirect function call within atomic transaction"
msgstr "llamada a función indirecta insegura dentro de una transacción atómica"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr "llamada a función %qD insegura dentro de la función %<transaction_safe%>"
@@ -18844,7 +18876,7 @@ msgstr "llamada a función %qE insegura dentro de la función %<transaction_safe
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr "llamada a función indirecta insegura dentro de la función %<transaction_safe%>"
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr "no se permite asm en una transacción atómica"
@@ -18879,612 +18911,612 @@ msgstr "transacción más externa en la función %<transaction_may_cancel_outer%
msgid "outer transaction in %<transaction_safe%> function"
msgstr "transacción más externa en la función %<transaction_safe%>"
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "%Kno se permite asm en una función %<transaction_safe%>"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "no se recomputa la constante cuando cambia ADDR_EXPR"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "no se recomputan los efectos laterales cuando cambia ADDR_EXPR"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr "se definió DECL_GIMPLE_REG_P en una variable con dirección tomada"
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "hay un nombre SSA en la lista libre, pero aún está referenciado"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr "INDIRECT_REF en gimple IL"
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "primer operando izquierdo de MEM_REF inválido"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "operando de desplazamiento de MEM_REF inválido"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR con una condición que es siempre falsa"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr "no se espera MODIFY_EXPR mientras se tienen tuplas"
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "se tomó la dirección, pero el bit ADDRESSABLE no está activado"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr "se usó un no integral en la condición"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "operando condicional inválido"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "posición o tamaño de operando inválido para BIT_FIELD_REF"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr "la precisión del tipo de resultado integral no coincide con el tamaño del campo de BIT_FIELD_REF"
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr "el modo de precisión del resultado que no es integral no coincide con el tamaño del campo de BIT_FIELD_REF"
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "prefijo de referencia inválido"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "operando inválido para más/menos, el tipo es un puntero"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "operando inválido para puntero más, el primer operando no es un puntero"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr "operando inválido para puntero más, el segundo operando no es un tipo entero de la anchura apropiada"
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr "CASE_CHAIN inválido"
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "expresión inválida para el l-valor min"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "operando inválido en la referencia indirecta"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "operandos inválidos en la referencia de matriz"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "los tipos de datos no coinciden en la referencia de matriz"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "los tipos de datos no coinciden en la referencia de rango matriz"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "los tipos de datos no coinciden en la referencia real/parte imaginaria"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "los tipos de datos no coinciden en la referencia a componente"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr "conversión de un SSA_NAME del lado izquierdo"
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, gcc-internal-format
msgid "conversion of register to a different size"
msgstr "conversión de registro a un tamaño diferente"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "operando de dirección inválido en MEM_REF"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "operando de desplazamiento inválido en MEM_REF"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr "operando de dirección inválido en TARGET_MEM_REF"
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "operando de desplazamiento inválido en TARGET_MEM_REF"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr "la llamada gimple tiene dos objetivos"
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr "la llamada gimple no tiene objetivo"
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "función inválida en la llamada gimple"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr "no es función en la llamada gimple"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "estado const pure inválido para la función"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "LHS inválido en la llamada gimple"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr "LHS en la llamada noreturn"
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "conversión inválida en la llamada gimple"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr "cadena estática inválida en la llamada gimple"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr "cadena static en la llamada gimple indirecta"
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr "cadena static con una función que no usa una"
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "argumento inválido en la llamada gimple"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "operandos inválidos en la comparación gimple"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr "comparación de tipos de operandos que no coinciden"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr "operandos que no son vectores en la comparación de vectores"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr "tipo resultante inválido de la comparación de vectores"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr "tipo resultante inválido de la comparación"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr "el LHS de una operación unaria no es un registro"
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "operando inválido en la operación unaria"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "tipos inválidos en la conversión nop"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "tipos inválidos en la conversión nop"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "tipos inválidos en la conversión de coma fija"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "tipos inválidos en la conversión a coma flotante"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "tipos inválidos en la conversión a entero"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "conversión que no es trivial en la operación unaria"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr "el LHS de una operación binaria no es un registro"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "operandos inválidos en la operación binaria"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "los tipos de datos no coinciden en la expresión compleja"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "los tipos de datos no coinciden en la expresión shift"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "los tipos de datos no coinciden en la expresión shift de vector"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr "desplazamiento de vector de tamaño que no es elemento de vector de coma flotante"
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr "los tipos no coinciden en la expresión shift de ensanchamiento de vector"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "operandos que no son vectores inválidos para un vector valuado con más"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "operandos (punteros) inválidos para más/menos"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "los tipos de datos no coinciden en la expresión puntero más"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "los tipos de datos no coinciden en la expresión binaria"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr "el LHS de una operación terniaria no es un registro"
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "operandos inválidos en la operación terniaria"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "los tipos no coinciden en la expresión de ensanchado multiplicar-acumular"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "los tipos no coinciden en la expresión fusionada multiplicar-sumar"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr "los tipos no coinciden en la expresión de permutación de vector"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr "se esperaban tipos vector en una expresión de permutación de vector"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr "se encontraron vectores con número de elementos diferentes en la expresión de permutación"
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr "tipo de máscara inválido en la expresión de permutación de vector"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "conversión que no es trivial en la asignación"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "operando inválido en la expresión unaria"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "no coincide el tipo en la expresión de dirección"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr "rhs inválido para el almacenamiento de memoria gimple"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "operando inválido en la declaración return"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "conversión inválida en la declaración return"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "el destino de goto no es una etiqueta ni un puntero"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "operando inválido para la declaración switch"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr "entrada incorrecta en label_to_block_map"
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr "definición incorrecta del número de relleno de aterrizaje"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "código de comparación inválido en la condición gimple"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "etiquetas inválidas en la condición gimple"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, gcc-internal-format
msgid "invalid PHI result"
msgstr "resultado PHI inválido"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, gcc-internal-format
msgid "missing PHI def"
msgstr "falta la definición PHI"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, gcc-internal-format
msgid "invalid PHI argument"
msgstr "argumento PHI inválido"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "tipos incompatibles en el argumento PHI %u"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr "falló verify_gimple"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr "STMT muerto en la tabla EH"
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "se estableció gimple_bb (phi) a un bloque básico erróneo"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "compartición incorrecta de nodos de árbol"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "se estableció gimple_bb (stmt) a un bloque básico erróneo"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr "en la sentencia"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "se marcó la sentencia para throw, pero no lo hace"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "se marcó la sentencia para throw en medio del bloque"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "ENTRY_BLOCK tiene IL asociado con él"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr "EXIT_BLOCK tiene IL asociado con él"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "caida para salir del bb %d"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "etiqueta no local "
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr "etiqueta de relleno de aterrizaje EH "
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "etiqueta "
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "control de flujo enmedio del bloque básico %d"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "borde de caída después de una sentencia de control en bb %d"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "borde verdadero/falso después de una expresión que no es GIMPLE_COND en bb %d"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "banderas de borde de salida erróneas al final del bb %d"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "goto explícito al final del bb %d"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "el borde de devolución no apunta a exit en el bb %d"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr "se encontró un case por defecto que no está al inicio del vector case"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr "las etiquetas case no están ordenadas:"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "borde de salida extra %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "falta el borde %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "la función %<noreturn%> devuelve"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "el control alcanza el final de una función que no es void"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "se descarta el valor de devolución de %qD, se declaró con el atributo warn_unused_result"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "se descarta el valor de devolución de la función declarada con atributo warn_unused_result"
@@ -19544,72 +19576,72 @@ msgstr "BB %i tiene un borde incorrecto"
msgid "BB %i has incorrect fallthru edge"
msgstr "BB %i tiene un borde de respaldo incorrecto"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "la función %q+F nunca se puede copiar porque recibe un goto que no es local"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "la función %q+F nunca se puede copiar porque guarda direcciones de etiqueta local en una variable estática"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "la función %q+F nunca se puede incluir en línea porque usa alloca (forzar usando el atributo always_inline)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "la función %q+F nunca se puede incluir en línea porque usa setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "la función %q+F nunca se puede incluir en línea porque usa listas variables de argumentos"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "la función %q+F nunca se puede incluir en línea porque usa manejo de excepciones setjmp-longjmp"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "la función %q+F nunca se puede incluir en línea porque contiene un goto que no es local"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "la función %q+F nunca se puede incluir en línea porque usa __builtin_return o __builtin_apply_args"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "la función %q+F nunca se puede incluir en línea porque contiene un goto calculado"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "la función %q+F nunca puede ser incluída en línea porque se suprime al usar -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "la función %q+F nunca puede ser incluída en línea porque utiliza atributos que generan conflictos con la inclusión en línea"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "falló la inclusión en línea en la llamada a always_inline %q+F: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "llamado desde aquí"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "falló la inclusión en línea en la llamada a %q+F: %s"
@@ -19820,7 +19852,7 @@ msgstr "se modificó el stmt (%p) marcado después del paso de optimización: "
msgid "verify_ssa failed"
msgstr "falló verify_ssa"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, gcc-internal-format
msgid "%qD was declared here"
msgstr "%qD se declaró aquí"
@@ -19880,52 +19912,52 @@ msgstr "la operación vectorial se expandirá en paralelo"
msgid "vector operation will be expanded with a single scalar operation"
msgstr "la operación vectorial se expandirá con una sola operación escalar"
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr "la operación de ordenamiento vectorial se expandirá por piezas"
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "el subíndice de la matriz está fuera de los límites de la matriz"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "el subíndice de la matriz está por arriba de los límites de la matriz"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "el subíndice de la matriz está por debajo de los límites de la matriz"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr "se asume que el desbordamiento con signo no sucede al simplificar el condicional a constante"
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr "se asume que el desbordamiento con signo no sucede al simplificar el condicional"
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "la comparación siempre es falsa debido al rango limitado del tipo de datos"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "la comparación siempre es verdadera debido al rango limitado del tipo de datos"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr "se asume que el desbordamiento con signo no sucede al simplificar %</%> o %<%%%> a %<>>%> o %<&%>"
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr "se asume que el desbordamiento con signo no sucede al simplificar %<abs (X)%> a %<X%> o %<-X%>"
@@ -19935,22 +19967,22 @@ msgstr "se asume que el desbordamiento con signo no sucede al simplificar %<abs
msgid "ignoring attributes applied to %qT after definition"
msgstr "se descartan los atributos aplicados al %qT después de la definición"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D se declaró anteriormente con el atributo dllimport: se descarta dllimport"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D se redeclara sin el atributo dllimport después de ser referenciado con enlace dllimport"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D se redeclara sin el atributo dllimport: se descarta el dllimport previo"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -19965,140 +19997,140 @@ msgstr "%q+D se redeclara sin el atributo dllimport: se descarta el dllimport pr
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "se descarta el atributo %qE"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "la función inline %q+D se declara como dllimport: se descarta el atributo"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "la definición de la función %q+D se marca como dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "la definición de la variable %q+D se marca como dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "se requiere enlace externo para el símbolo %q+D debido al atributo %qE"
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qE implica visibilidad por defecto, pero %qD ya se había declarado con una visibilidad diferente"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "las matrices de funciones no tienen significado"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "el tipo de devolución de función no puede ser función"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "revisión de árbol: %s, se tiene %s en %s, en %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "revisión de árbol: no se esperaba ninguno de %s, se tiene %s en %s, en %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "revisión de árbol: se esperaba la clase %qs, se tiene %qs (%s) en %s, en %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "revisión de árbol: no se esperaba la clase %qs, se tiene %qs (%s) en %s, en %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "revisión de árbol: se esperaba omp_clause %s, se tiene %s en %s, en %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "revisión de árbol: se esperaba un árbol que contenga la estructura %qs, se tiene %qs en %s, en %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "revisión de árbol: acceso de elt %d de tree_vec con %d elts en %s, en %s:%d"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "revisión de árbol: acceso del operando %d de %s con %d operandos en %s, en %s:%d"
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "revisión de árbol: acceso del operando %d de omp_clause %s con %d operandos en %s, en %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%qD es obsoleto (declarado en %s:%d): %s"
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%qD es obsoleto (declarado en %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%qE es obsoleto (declarado en %s:%d): %s"
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%qE es obsoleto (declarado en %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "el tipo es obsoleto (declarado en %s:%d): %s"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "el tipo es obsoleto (declarado en %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "%qE es obsoleto: %s"
-#: tree.c:11392
+#: tree.c:11396
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr "%qE es obsoleto"
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "el tipo es obsoleto: %s"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "el tipo es obsoleto"
@@ -20148,147 +20180,152 @@ msgstr "se excedió el límite de tamaño de rastreo de variable con -fvar-track
msgid "variable tracking size limit exceeded"
msgstr "se excedió el límite de tamaño de rastreo de variable"
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D causa un conflicto de tipo de sección"
+
+#: varasm.c:322
#, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr "%+D causa un conflicto de tipo de sección con %D"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "la alineación de %q+D es mayor que la alineación máxima del fichero objeto. Se usa %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "no se especifica un nombre de registro para %q+D"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "nombre de registro inválido para %q+D"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "el tipo de datos de %q+D no es adecuado para un registro"
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "no se puede acceder al registro especificado por %q+D en el objetivo actual"
-#: varasm.c:1215
+#: varasm.c:1221
#, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "el registro especificado para %q+D no es lo suficientemente general para usarse como variable de registro"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "el registro especificado por %q+D no es adecuado para el tipo de datos"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "la variable de registro global tiene valor inicial"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "la optimización puede eliminar lecturas y/o escrituras a variables de registro"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "nombre de registro dado para la variable %q+D que no es registro"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "no se admiten los destructores globales en este objetivo"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "no se admiten constructores globales en este objetivo"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "los datos COMMON thread-local no están implementados"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "la alineación solicitada para %q+D es mayor que la alineación implementada de %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "el inicializador para un valor entero/coma fija es demasiado complicado"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "el inicializador para un valor de coma flotante no es una constante de coma flotante"
-#: varasm.c:4878
+#: varasm.c:4915
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "valor inicial inválido para el miembro %qE"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "la declaración weak de %q+D debe ser public"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "no se admite la declaración weak de %q+D"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "sólo se admiten los aliases weak en esta configuración"
-#: varasm.c:5474
+#: varasm.c:5511
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "weakref no se admite en esta configuración"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "ifunc no se admite en esta configuración"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D es un alias del símbolo sin definir %qE"
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D es un alias del símbolo externo %qE"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "la referencia débil %q+D finalmente apunta a sí misma"
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "la referencia débil %q+D debe tener enlace estático"
-#: varasm.c:5821
+#: varasm.c:5858
#, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "no se admiten las definiciones de alias en esta configuración"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "no se admiten los atributos de visibilidad en esta configuración; descartados"
@@ -20329,8 +20366,8 @@ msgstr "%qD no está definido fuera del ámbito de la función"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "la longitud de la cadena %qd es mayor que la longitud %qd, la máxima que los compiladores ISO C%d deben admitir"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "desbordamiento en la expresión constante"
@@ -20551,7 +20588,7 @@ msgstr "se usó un puntero a una función miembro en la aritmética"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "la dirección de %qD siempre se evaluará como %<true%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "se sugieren paréntesis alrededor de la asignación usada como valor verdadero"
@@ -20958,40 +20995,40 @@ msgstr "se descarta el atributo %qE para %qE"
msgid "invalid vector type for attribute %qE"
msgstr "tipo de vector inválido para el atributo %qE"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "el tamaño del vector no es un múltiplo integral del tamaño del componente"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "vector de tamaño cero"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "el número de componentes del vector no es una potencia de dos"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "un atributo que no es nulo sin argumento es un atributo que no es prototipo"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "un argumento que no es nulo tiene un número de operando inválido (argumento %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "un argumento que no es nulo con número de operando fuera de rango (argumento %lu, operando %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "un argumento que no es nulo hace referencia a un operando que no es puntero (argumento %lu, operando %lu)"
@@ -21031,12 +21068,12 @@ msgstr "el atributo %qE requiere prototipos con argumentos nombrados"
msgid "%qE attribute only applies to variadic functions"
msgstr "el atributo %qE se aplica solamente a funciones variadic"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "la posición solicitada no es una constante entera"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "la posición solicitada es menor a cero"
@@ -21091,7 +21128,7 @@ msgstr "no se puede aplicar %<offsetof%> cuando %<operator[]%> está sobrecargad
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "no se puede aplicar %<offsetof%> a una dirección que no es constante"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "se intentó tomar la dirección del miembro de la estructura de campos de bits %qD"
@@ -21818,82 +21855,82 @@ msgid "ignoring #pragma %s %s"
msgstr "se descarta el #pragma %s %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "%<@%> parásita en el programa"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "%qs parásito en el programa"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "falta el carácter terminando %c"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "%qc parásito en el programa"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "%<\\%o%> parásito en el programa"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "esta constante decimal sólo es unsigned en ISO C90"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "esta constante decimal será unsigned en ISO C90"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "la constante entera es demasiado grande para el tipo %<unsigned long%>"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr "constante de coma flotante sin sufijo"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr "no se admite el sufijo no estándar en una constante de coma flotante"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr "sufijo no estándar en una constante de coma flotante"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "la constante de coma flotante excede el rango de %qT"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "se truncó la constante de coma flotante a cero"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr "%<@%> repetida antes de la cadena Objective-C"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr "no se admite la concatenación no estándar de literales de cadena"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "C tradicional rechaza la concatenación de constantes de cadenas"
@@ -21913,7 +21950,7 @@ msgstr "%<#pragma omp atomic update%> usa dos variables diferentes para la memor
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr "%<#pragma omp atomic capture%> usa dos variables diferentes para la memoria"
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "tipo inválido para la variable de iteración %qE"
@@ -21923,22 +21960,22 @@ msgstr "tipo inválido para la variable de iteración %qE"
msgid "%qE is not initialized"
msgstr "%qE no está inicializado"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr "falta el predicado controlador"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "predicado controlador inválido"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr "falta la expresión de incremento"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "expresión de incremento inválida"
@@ -22786,7 +22823,7 @@ msgstr "latencia de caché L%d desconocida para %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "valor %qs erróneo para -mmemory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -22963,53 +23000,53 @@ msgstr "variante PCS"
msgid "Thumb-1 hard-float VFP ABI"
msgstr "ABI de VFP de coma flotante dura de Thumb-1"
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "el atributo %qE se aplica solamente a funciones"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "no se puede calcular la ubicación real del parámetro apilado"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, gcc-internal-format
msgid "argument must be a constant"
msgstr "el argumento debe ser una constante"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "el selector debe ser un inmediato"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "la máscara debe ser un inmediato"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "no hay registros inferiores disponibles para extraer registros superiores"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "no se pueden codificar las Rutinas de Servicios de Interrupción en el modo Thumb"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr "la decodificación de %<va_list%> cambió en GCC 4.4"
@@ -23024,97 +23061,112 @@ msgstr "la variable inicializada %q+D se marcó como dllimport"
msgid "static variable %q+D is marked dllimport"
msgstr "la variable estática %q+D se marcó como dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "los atribucions de función %qs, %qs y %qs son mutuamente exclusivos"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr "los atributos de función %qs y %qs no tienen efecto en funciones %qs"
+
+#: config/avr/avr.c:573
+#, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr "la función %qs no puede tener argumentos"
+
+#: config/avr/avr.c:576
+#, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr "la función %qs no puede devolver un valor"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs parece ser un manejador %s mal escrito"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr "'builtin_return_address' sólo contiene 2 bytes de dirección"
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr "el desplazamiento del puntero desde el símbolo tal vez es incorrecto"
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr "se accede a memoria de datos con dirección de memoria de programa"
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr "se accede a memoria de programa con dirección de memoria de datos"
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr "se usó el registro fijo %s para pasar un parámetro a la función"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr "no se admite escribir al espacio de direcciones %qs"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs parece ser un manejador de interrupciones mal escrito"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs parece ser un manejador de señales mal escrito"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr "%qT usa el espacio de direcciones %qs más allá del destello de %qs"
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr "%s %q+D usa el espacio de direcciones %qs más allá del destello de %qs"
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr "el espacio de direcciones %qs que apuntan a punteros debe ser const en %qT"
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr "el espacio de direcciones %qs que apuntan a punteros debe ser const en %s %q+D"
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr "la variable %q+D se ubica en el espacio de direcciones %qs más allá del destello de %qs"
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr "la variable %q+D debe ser const para que se ponga en la sección de sólo lectura a través de %qs"
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "Sólo las variables sin inicializar se pueden colocar en la sección .noinit"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr "se colocó la variable %q+D sin inicializar en el área de memoria del programa"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU %qs sólo se admite para ensamblador"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr "%s expera una constante entera en tiempo de compilación"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr "%s espera una constante entera long en tiempo de compilación como primer argumento"
@@ -23234,68 +23286,68 @@ msgstr "uso inválido del modificador ':'"
msgid "internal error: bad register: %d"
msgstr "error interno: registro erróneo: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "error interno: insn colateral afectando al efecto principal"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "valor cc_attr desconocido"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "error interno: cris_side_effect_mode_ok con operandos erróneos"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "no se puede usar -max-stackframe=%d, no está entre 0 y %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "especificación de versión CRIS desconocida en -march= o -mcpu= : %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "especificación de versión de cpu CRIS desconocida en -mtune= : %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC y -fpic no se admiten en esta configuración"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "esa opción -g en particular es inválida con -maout y -melinux"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, gcc-internal-format
msgid "unknown src"
msgstr "fuente desconocida"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, gcc-internal-format
msgid "unknown dest"
msgstr "destino desconocido"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "marco de la pila demasiado grande: %d bytes"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "falló expand_binop en movsi got"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr "se emite un operando PIC, pero el registro PIC aún no está preparado"
@@ -23454,411 +23506,411 @@ msgstr "no se puede extender el fichero PCH: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "no se puede establecer la posición en el fichero PCH: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "valor erróneo (%s) para %stune=%s %s"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr "%stune=x86-64%s es obsoleto; use en su lugar %stune=k8%s o %stune=generic%s como sea adecuado"
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr "no se admite -mstringop-stategy=rep_8byte para código de 32-bit"
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "el modelo de código %qs no se admite en el modo de bit %s"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr "el modelo de código %qs no se admite en modo x32"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "el modelo de código %s no admite el modo PIC"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "no se admite -masm=intel en esta configuración"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "no está compilado el modo bit-%i"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "el CPU que seleccionó no admite el conjunto de instrucciones x86-64"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "el CPU generic sólo se puede usar para %stune=%s %s"
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr "valor erróneo (%s) para %sarch=%s %s"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr "se descarta -mregparm en modo de 64-bit"
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d no está entre 0 y %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "se descarta %srtd%s en el modo de 64bit"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "no se admite -mpreferred-stack-boundary en este objetivo"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d no está entre %d y %d"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mincoming-stack-boundary=%d no está entre %d y 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr "se usó %ssseregparm%s sin SSE activado"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "el conjunto de instrucciones SSE está desactivado, usando la aritmética 387"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "el conjunto de instrucciones 387 está desactivado, usando la aritmética SSE"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "actualmente las tablas de desenredo requieren un puntero de marco o %saccumulate-outgoing-args%s para ser correctas"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "actualmente la prueba de pila requiere un puntero de marco o %saccumulate-outgoing-args%s para ser correctas"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr "-mfentry no se admite para 32-bit en combinación con -fpic"
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr "-mno-fentry no es compatible con SEH"
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "opción desconocida para -mrecip=%s"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr "se desconoce attribute(target(\"%s\"))"
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr "ya se había especificado option(\"%s\")"
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "los atributos fastcall y regparm no son compatibles"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr "los atributos regparam y thiscall no son compatibles"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "el atributo %qE requiere un argumento constante entero"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "el argumento para el atributo %qE es más grande que %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "los atributos fastcall y cdecl no son compatibles"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "los atributos fastcall y stdcall no son compatibles"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr "los atributos fastcall y thiscall no son compatibles"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "los atributos stdcall y cdecl no son compatibles"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "los atributos stdcall y fastcall no son compatibles"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr "los atributos stdcall y thiscall no son compatibles"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr "los atributos cdecl y thiscall no son compatibles"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "se usó el atributo %qE para clases-métodos none"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "se llama a %qD con el atributo sseregparm sin activar SSE/SSE2"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "se llama a %qT con el atributo sseregparm sin activar SSE/SSE2"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "ms_hook_prologue no es compatible con la función anidada"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr "el atributo ms_abi requiere -maccumulate-outgoing-args o que la optimización de subobjetivo lo implique"
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "el argumento de vector AVX sin AVX activado cambia la ABI"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr "la ABI para pasar un struct con un miembro de matriz flexible cambió en GCC 4.4"
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr "la ABI para pasar un union con long double cambió en GCC 4.4"
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr "la ABI para pasar una estructura con un miembro de coma flotante compleja cambió en GCC 4.4"
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "se devuelve el registro SSE con SSE desactivado"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "argumento de registro SSE con SSE desactivado"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "se devuelve el registro x87 con x87 desactivado"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "el argumento de vector SSE sin SSE activado cambia la ABI"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "el argumento de vector MMX sin MMX activado cambia la ABI"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr "La ABI para pasar parámetros con alineación de %d-bytes cambió en GCC 4.6"
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "la devolución de vector SSE sin SSE activado cambia la ABI"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "la devolución de vector MMX sin MMX activado cambia la ABI"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr "el atributo ms_hook_prologue no es compatible con -mfentry para 32-bit"
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "-fsplit-stack no admite fastcall con funciones anidadas"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "-fsplit-stack no admite 2 parámetros de registro para una función anidada"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "-fsplit-stack no admite 3 parámetros de registro"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "los registros extendidos no tiene mitades superiores"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "no se admite el tamaño de operando para el registro extendido"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr "se usó un operando que no es entero con el código de operando '%c'"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "el tercer argumento debe ser un inmediato de 2-bit"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "el quinto argumento debe ser un inmediato de 8-bit"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "el tercer argumento debe ser un inmediato de 8-bit"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "el último argumento debe ser un inmediato de 1-bit"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "el último argumento debe ser un inmediato de 4-bit"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "el último argumento debe ser un inmediato de 1-bit"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "el tercer argumento debe ser un inmediato de 5-bit"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "el penúltimo argumento debe ser un inmediato de 8-bit"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "el último argumento debe ser un inmediato de 8-bit"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "el último argumento debe ser un inmediato de 32-bit"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "el selector debe ser una constante entera en el rango 0..%wi"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr "%qE necesita la opción isa desconocida"
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr "%qE necesita la opción isa %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "el último argumento debe ser un inmediato"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "el argumento izquierdo debe ser un escalar 1, 2, 4, 8"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "el atributo %qE solamente está disponible para 64-bit"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "el argumento del atributo %qE no es cero ni uno"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "los atributos ms_abi y sysv_abi no son compatibles"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "se descarta el atributo incompatible %qE"
@@ -23928,19 +23980,19 @@ msgstr "no se puede especificar un atributo de área de direcciones para funcion
msgid "%qE attribute requires a string constant argument"
msgstr "el atributo %qE requiere una constante entera como argumento"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "el valor de -mfixed-range debe ser de la forma REG1-REG2"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s es un rango vacío"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr "el atributo version no es una cadena"
@@ -24006,7 +24058,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "no se admite el atributo %qE para el objetivo R8C"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "el argumento del atributo %qE no es una constante entera"
@@ -24061,7 +24113,7 @@ msgstr "no se permiten atributos interrupt múltiples"
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread sólo está disponible en fido"
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "no se admite la expresión del límite de la pila"
@@ -24580,27 +24632,27 @@ msgstr "MMIX Interno: %s no es un int desplazable"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr "-mtune= espera mn10300, am33, am33-2 o am34"
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "La generación de código PIC no se admite en el modelo transportable de tiempo de ejecución"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "La generación de código PIC no es compatible con las llamadas rápidas indirectas"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g sólo se admite cuando se usa GAS en este procesador,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "opción -g desactivada"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr "la alineación (%u) para %s excede la alineación máxima para los datos comunes globales. Se usará %u"
@@ -25026,82 +25078,82 @@ msgstr "error interno: la función interna %s tiene un tipo de devolución inesp
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr "error interno: función interna %s, el argumento %d tiene el tipo de argumento inesperado %s"
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "marco de pila demasiado grande"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "no hay análisis de perfil del código de 64-bit para esta ABI"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr "No se puede tomar la dirección de una función anindada si se usa la opción -mno-pointers-to-nested-functions."
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "el uso de %<long double%> en tipos AltiVec es inválido"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "el uso de tipos booleanos en tipos AltiVec es inválido"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "el uso de %<complex%> en tipos AltiVec es inválido"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "el uso de tipos de coma flotante decimal en tipos AltiVec es inválido"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "el uso de %<long%> en tipos AltiVec es inválido para código de 64 bit sin -mvsx"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "el uso de %<long%> en tipos AltiVec es obsoleto; use %<int%>"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "el uso de %<long long%> en tipos AltiVec es inválido sin -mvsx"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "el uso de %<double%> en tipos AltiVec es inválido sin -mvsx"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr "se emite el insn de microcódigo %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr "se emite el insn de microcódigo condicional %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "cpu \"%s\" inválido para %s\"%s\"%s"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr "%s\"%s\"%s no está definido"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr "%s\"%s\"%s es inválido"
@@ -25155,12 +25207,12 @@ msgstr "no se admiten E500 y FPRs"
msgid "-m64 not supported in this configuration"
msgstr "no se admite -m64 en esta configuración"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 requiere un procesador PowerPC64"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr "-mcmodel es incompatible con otras opciones toc"
@@ -25177,64 +25229,64 @@ msgstr "-mcmodel es incompatible con otras opciones toc"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "no se admite RETURN_ADDRESS_OFFSET"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "valor erróneo para -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "valor erróneo para -msdata=%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable y -msdata=%s son incompatibles"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s y -msdata=%s son incompatibles"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s y -mcall-%s son incompatibles"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable y -mno-minimal-toc son incompatibles"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable y -mcall-%s son incompatibles"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC y -mcall-%s son incompatibles"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc debe ser big endian"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "su ensamblador no admite -msecure-plt"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "no se admite -m%s en esta configuración"
@@ -25344,53 +25396,53 @@ msgstr "se descarta -fschedule-insns debido a un error de manejo de excepciones"
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "actualmente las tablas de desenredo requieren un puntero de marco o -maccumulate-outgoing-args para ser correctas"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "no se admite __builtin_saveregs en este subobjetivo"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "el atributo %qE se aplica solamente a funciones de interrupción"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "el atributo %qE solo se admite para SH2A"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "el atributo interrupt_handler no es compatible con -m5-compact"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "el atributo %qE solo se aplica a SH2A"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "el argumento del atributo %qE debe estar entre 0 y 255"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "el argumento del atributo %qE no es una constante de cadena"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 necesita estar disponible como un registro sobreescrito por llamada"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr "se necesita un segundo registro de propósito general sobreescrito por llamada"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr "se necesita un registro objetivo sobreescrito por llamada"
@@ -25732,38 +25784,38 @@ msgstr "%<-gnat%> escrito incorrectamente como %<-gant%>"
msgid "-fexcess-precision=standard for Ada"
msgstr "-fexcess-precision=standard para Ada"
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "se descarta el atributo %qs"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "el atributo %qs requiere prototipos con argumentos nombrados"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "el atributo %qs se aplica solamente a funciones variadic"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "el atributo %qE no tiene efecto"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "tipo de vector inválido para el atributo %qs"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "el atributo %qs solamente se aplica a tipos de matriz"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "tipo de elemento inválido para el atributo %qs"
@@ -25779,7 +25831,7 @@ msgstr " no hay una conversión conocida para el parámetro %<this%> implícito
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " no hay una conversión conocida para el argumento %d de %qT a %qT"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26064,7 +26116,7 @@ msgstr "conversión definida por el usuario inválida de %qT a %qT"
msgid "invalid conversion from %qT to %qT"
msgstr "conversión inválida de %qT a %qT"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " argumento de inicialización %P de %qD"
@@ -26074,188 +26126,188 @@ msgstr " argumento de inicialización %P de %qD"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr "la conversión a %qT desde la lista del inicializador usaría el constructor explícito %qD"
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr " se inicializa el argumento %P de %q+D"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "no se puede unir el l-valor %qT a %qT"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "no se puede unir el campo de bits %qE a %qT"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "no se unir el campo packed %qE a %qT"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "no se puede unir el r-valor %qE a %qT"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "el enum en ámbito %qT no se promoverá a un tipo integral en una versión futura de GCC"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "no se puede pasar objetos de tipo no-copiable-trivialmente q%#T a través de %<...%>"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "no se puede recibir objetos de tipo no-copiable-trivialmente q%#T a través de %<...%>"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "evaluación recursiva del argumento por defecto para %q#D"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "la llamada a %qD usa el argumento por defecto para el parámetro %P, el cual no se ha definido aún"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "el argumento de la llamada a función puede ser un candidato para un atributo de formato"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "pasar %qT como el argumento %<this%> de %q#D descarta a los calificadores"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT no es una base inaccesible de %qT"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "se deduce %qT como %qT"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, gcc-internal-format
msgid " in call to %q+D"
msgstr " en la llamada a %q+D"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr " (puede desactivar esto con -fno-deduce-init-list)"
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "no se puede encontrar un campo class$ en el tipo de interfaz java %qT"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "llamada a %qD que no es función"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr "no se puede llamar directamente al constructor %<%T::%D%>"
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr " para una conversión de estilo de función, borre el %<::%D%> redundante"
-#: cp/call.c:7251
+#: cp/call.c:7261
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "no se encontró una función coincidente para la llamada a %<%T::operator %T(%A)%#V%>"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "no se encontró una función coincidente para la llamada a %<%T::%s(%A)%#V%>"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "la llamada del %<%s(%A)%> sobrecargado es ambigua"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "no se puede llamar a la función miembro %qD sin un objeto"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "al pasar %qT se escoge %qT sobre %qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " en la llamada a %qD"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "se escoge %qD sobre %qD"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " para la conversión de %qT a %qT"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " porque la secuencia de conversión para el argumento es mejor"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "no coincide el argumento por defecto en la resolución de sobrecarga"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr " candidato 1: %q+#F"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr " candidato 2: %q+#F"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++ dice que estos son ambiguos, aún cuando la peor conversión para el primero es mejor que la peor conversión para el segundo:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr "no se puede convertir %qE de %qT a %qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr "un enlace temporal a %qD sólo persiste hasta que el constructor termina"
-#: cp/call.c:8730
+#: cp/call.c:8745
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "inicialización inválida de una referencia que no es constante de tipo %qT desde un r-valor de tipo %qT"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "inicialización inválida de la referencia de tipo %qT desde una expresión de tipo %qT"
@@ -26467,219 +26519,219 @@ msgstr "el campo %q+D inválidamente se declara como un tipo de función"
msgid "field %q+D invalidly declared method type"
msgstr "el campo %q+D inválidamente se declara como un tipo de método"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "se descartan los atributos packed por el campo %q+#D sin empacar que no es POD"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "campo %q+#D con el mismo nombre que la clase"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T tiene miembros punteros a datos"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " pero no se impone a %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " o a %<operator=(cont %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " pero no se impone a %<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "el desplazamiento de la base vacía %qT puede no cumplir con la ABI y puede cambiar en una versión futura de GCC"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "la clase %qT se considerará casi vacía en una versión futura de GCC"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "se especificó un inicializador para el método %q+D que no es virtual"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr "el método anula tanto %<transaction_pure%> como los métodos %qE"
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr "el método declarado como %qE anula el método %qE"
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "la clase envolvente de la función miembro que no es estática constexpr %q+#D no es un tipo literal"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr "%q+T no es literal porque:"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, gcc-internal-format
msgid " %q+T has a non-trivial destructor"
msgstr " %q+T tiene un destructor que no es trivial"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr " %q+T no es un agregado, no tiene un constructor trivial por defecto y no tiene un constructor constexpr que no es un constructor copy o move"
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr " la clase base %qT de %q+T no es literal"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr " el dato miembro que no es estático %q+D tiene un tipo que no es literal"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "referencia %q+#D que no es static en una clase sin un constructor"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "miembro const %q+#D que no es static en una clase sin un constructor"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr "se declaró %q+D para tomar referencia const, pero la declaración implícita tomaría algo que no es const"
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr "se declaró %q+D para tomar referencia que no es const y no se puede definir por omisión en el cuerpo de clase"
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "el desplazamiento de la base virtual %qT no cumple con la ABI y puede cambiar en una versión futura de GCC"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "base directa %qT inaccesible en %qT debido a ambigüedad"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "base virtual %qT inaccesible en %qT debido a ambigüedad"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "el tamaño asignado a %qT puede no cumplir con la ABI y puede cambiar en una versión futura de GCC"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "el desplazamiento de %qD tal vez no cumple con la ABI y puede cambiar en una versión futura de GCC"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "el desplazamiento de %q+D no cumple con la ABI y puede cambiar en una versión futura de GCC"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D contiene clases vacías las cuales pueden causar que las clases base se coloquen en diferentes ubicaciones en una versión futura de GCC"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "la disposición de clases derivadas de la clase vacía %qT puede cambiar en una versión futura de GCC"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "redefinición de %q#T"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T tiene funciones virtuales y destructor no virtual accesible"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr "la clase transparente tipo %qT no tiene ningún campo"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr "la clase transparente tipo %qT tiene clases base"
-#: cp/class.c:6149
+#: cp/class.c:6150
#, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr "la clase transparente tipo %qT tiene funciones virtuales"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "se trató de terminar struct, pero fue sacado debido a errores previos de decodificación"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "no se reconoce la cadena de lenguaje %<\"%E\"%>"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "no se puede resolver la función sobrecargada %qD basándose en la conversión al tipo %qT"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "no hay coincidencias al convertir la función %qD al tipo %q#T"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "la conversión de la función sobrecargada %qD al tipo %q#T es ambigua"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "asumiendo el puntero a miembro %qD"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(un puntero a miembro solamente se puede formar con %<&%E%>)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "no hay suficiente información de tipo"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "no se puede convertir %qE desde el tipo %qT al tipo %qT"
@@ -26689,12 +26741,12 @@ msgstr "no se puede convertir %qE desde el tipo %qT al tipo %qT"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "la declaración de %q#D"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "cambia el significado de %qD a partir de %q+#D"
@@ -26714,7 +26766,7 @@ msgstr "no se puede convertir desde el tipo incompleto %qT a %qT"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "la conversión de %qE desde %qT a %qT es ambigua"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "cero como constante de puntero nulo"
@@ -26744,7 +26796,7 @@ msgstr "inicialización a un tipo de referencia que no es constante %q#T desde u
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "la conversión de %qT a %qT descarta los calificadores"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "la conversión de %qT a %qT no dereferencía a los punteros"
@@ -27150,7 +27202,7 @@ msgstr "declaración previa de %q+#D"
msgid "declaration of template %q#D"
msgstr "redeclaración de la plantilla %q#D"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "genera un conflicto con la declaración previa %q+#D"
@@ -27202,7 +27254,7 @@ msgstr "declaración previa del espacio de nombres %q+D aquí"
msgid "%q+#D previously defined here"
msgstr "se define %q+#D previamente aquí"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "se declaró %q+#D previamente aquí"
@@ -27320,7 +27372,7 @@ msgstr "declaración thread-local de %q#D después de una declaración que no es
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "declaración que no es thread-local de %q#D después de una declaración thread-local"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "redeclaración de %q#D"
@@ -27391,7 +27443,7 @@ msgstr "etiqueta nombrada wchar_t"
msgid "%qD is not a type"
msgstr "%qD no es un tipo"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "se usa %qD sin parámetros de plantilla"
@@ -27521,123 +27573,123 @@ msgstr "se descartó %<typedef%> en esta declaración"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<constexpr%> no se puede usar en declaraciones de tipo"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr "se descarta el atributo en la declaración de %q#T"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "el atributo para %q#T debe estar a continuación de la palabra clave %qs"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "se descartan los atributos aplicados al tipo de clase %qT fuera de la definición"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr "se descartan los atributos aplicados al tipo dependiente %qT sin una declaración asociada"
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD está inicializado (utilice decltype en su lugar)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "la declaración de %q#D tiene %<extern%> y está inicializada"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "la definición de %q#D se marca como %<dllimport%>"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D no es un miembro static de %q#T"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ no permite que %<%T::%D%> se defina como %<%T::%D%>"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "no se permite un encabezado de plantilla en la definición de miembro de una clase explícitamente especializada"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "inicialización duplicada de %qD"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr "%qD se declaró %<constexpr%> fuera de su clase"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "la declaración de %q#D fuera de la clase no es una definición"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "la variable %q#D tiene inicializador pero de tipo de dato incompleto"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "elementos de la matriz %q#D con tipo de dato incompleto"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "la declaración de %q#D no tiene inicializadores"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "el agregado %q#D tiene un tipo incompleto y no se puede definir"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD declarado como referencia pero no se inicializa"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr "se usó un nombre en un inicializador designado de estilo GNU para una matriz"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "no se admiten los inicializadores designados como no triviales"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "el nombre %qD se utiliza en un inicializador designado en estilo GNU para una matriz"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "el inicializador no puede determinar el tamaño de %qD"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "falta el tamaño de la matriz en %qD"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "matriz %qD de tamaño cero"
@@ -27645,389 +27697,389 @@ msgstr "matriz %qD de tamaño cero"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "no se conoce el tamaño de almacenamiento de %qD"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "el tamaño de almacenamiento de %qD no es constante"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "perdón: la semántica de los datos static de la función inline %q+#D es errónea (terminará con múltiples copias)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr " puede evitar esto eliminando el inicializador"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "const %qD sin inicializar"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "%q#T no tiene constructor por defecto proporcionado por el usuario"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr "el constructor no es proporcionado por el usuario porque está marcado explícitamente por defecto en el cuerpo de la clase"
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr "y el constructor implícitamente definido no inicializa %q+#D"
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "tipo %qT inválido como inicializador para un vector de tipo %qT"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "el inicializador para %qT debe estar encerrado entre llaves"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "se usa %<[%E] =%> en un inicializador designado en estilo GNU para la clase %qT"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT no tiene un dato miembro que no es static llamado %qD"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr "asignador C99 %qE fuera del inicializador agregado"
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "demasiados inicializadores para %qT"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "llaves alrededor del inicializador escalar para el tipo %qT"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "faltan llaves alrededor del inicializador para %qT"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "elementos de la matriz %q#T tienen tipo de dato incompleto"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "el objeto de tamaño variable %qD no se puede inicializar"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "literal compuesta de tamaño variable"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr "%q#D tiene un tipo incompleto"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "el objeto escalar %qD requiere un elemento en el inicializador"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "en C++98 %qD debe ser inicializado por un constructor, no por %<{...}%>"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "matriz %qD inicializada con una constante de cadena entre paréntesis %qE"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "inicializador inválido para el miembro static con constructor"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "inicialización en clase que no es constante inválida para el miembro static %qD"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(se requiere una inicialización fuera de la clase)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "asignación (no inicialización) en la declaración"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "se oscurece la declaración de tipo previa de %q#D"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD no puede ser thread-local porque es de tipo %qT que no es trivial"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr "El objeto Java %qD no se aloja con %<new%>"
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "q%D es thread-local y por lo tanto no se puede inicializar dinámicamente"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qD no se puede inicializar con una expresion no constante al declararse"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr "el dato miembro que no es estático %qD tiene un tipo de clase Java"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "la función %q#D se inicializa como una variable"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr "el inicializador no puede determinar el tamaño de %qT"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, gcc-internal-format
msgid "array size missing in %qT"
msgstr "falta el tamaño de la matriz en %qT"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, gcc-internal-format
msgid "zero-size array %qT"
msgstr "matriz %qT de tamaño cero"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "el destructor para la clase extranjera %qT no puede ser un miembro"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "el constructor para la clase extranjera %qT no puede ser un miembro"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD se declaró como una variable %<virtual%>"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD se declaró como una variable %<inline%>"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de variable"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD se declaró como un parámetro %<virtual%>"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD se declaró como un parámetro %<inline%>"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de parámetro"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD se declaró como un tipo %<virtual%>"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "%qD se declaró como un tipo %<inline%>"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de tipo"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD se declaró como un campo %<virtual%>"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "%qD se declaró como un campo %<inline%>"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de campo"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D se declaró como friend"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D se declaró con una especificación de excepción"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "la definición de %qD no está en un espacio de nombres que contenga a %qT"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "la función miembro static %q#D se declara con calificadores de tipo"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "definiendo la especialización explícita %qD en la declaración friend"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "uso inválido del id de plantilla %qD en la declaración de la plantilla primaria"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "no se permiten los argumentos por defecto en la declaración de la especialización friend de la plantilla %qD"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "no se permite %<inline%> en la declaración de la especialización friend de la plantilla %qD"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "no se puede declarar %<::main%> como plantilla"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "no se puede declarar %<::main%> como inline"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "no se puede declarar %<::main%> como static"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr "se usó un tipo anónimo sin enlace para declarar la función %q#D con enlace"
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D no se refiere al tipo sin calificar, así que no se usa para el enlace"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "se usó el tipo %qT sin enlace para declarar la función %q#D con enlace"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "la función miembro static %qD no puede tener calificador-cv"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "la función que no es miembro %qD no puede tener calificador-cv"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr "operador literal con enlace C"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "%qD tien una lista de argumentos inválida"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr "se oscurece el sufijo entero %<%s%> por la implementación"
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr "se oscurece el sufijo de coma flotante %<%s%> por la implementación"
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr "%qD debe ser una función que no sea miembro"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> debe devolver %<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "la definición de %qD declarado implícitamente"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr "la definición de %qD explícitamente por defecto"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D explícitamente por defecto aquí"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "no hay una función miembro %q#D declarada en la clase %qT"
@@ -28036,891 +28088,891 @@ msgstr "no hay una función miembro %q#D declarada en la clase %qT"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr "se usó un tipo anónimo sin enlace para declarar la variable %q#D sin enlace"
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr "se usó el tipo %qT sin enlace para declarar la variable %q#D con enlace"
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "inicialización en la clase del miembro de datos static %q#D de tipo incompleto"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "se necesita %<constexpr%> para la inicialización en la clase inválida del miembro de datos static %q#D de tipo que no es integral"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "inicialización en la clase del miembro de datos static %q#D de tipo que no es literal"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "inicialización en la clase inválida para el miembro de datos static de tipo %qT que no es integral"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ prohíbe la inicialización en la clase del miembro static %qD que no es constante"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ prohíbe la inicialización de la constante miembro %qD del tipo %qT que no es entero"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "el tamaño de la matriz %qD tiene un tipo %qT que no es integral"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "el tamaño de la matriz tiene un tipo %qT que no es integral"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "el tamaño de la matriz %qD es negativo"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "el tamaño de la matriz es negativo"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ prohíbe la matriz %qD de tamaño cero"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ prohíbe matrices de tamaño cero"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "el tamaño de la matriz %qD no es una expresion constante integral"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "el tamaño de la matriz no es una expresion constante integral"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ prohíbe la matriz %qD de longitud variable"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ prohíbe las matrices de longitud variable"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr "se usa la matriz de longitud variable %qD"
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "desbordamiento en la dimensión de la matriz"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr "la declaración de %qD como una matriz %<auto%>"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "la declaración de %qD como una matriz de voids"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, gcc-internal-format
msgid "creating array of void"
msgstr "se crea la matriz de voids"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "la declaración de %qD como una matriz de funciones"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, gcc-internal-format
msgid "creating array of functions"
msgstr "se crea la matriz de funciones"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "la declaración de %qD como una matriz de referencias"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, gcc-internal-format
msgid "creating array of references"
msgstr "se crea la matriz de referencias"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "la declaración de %qD como una matriz de miembros de función"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, gcc-internal-format
msgid "creating array of function members"
msgstr "se crea la matriz de miembros de función"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "la declaración de %qD como una matriz multidimensional debe tener límites para todas las dimensiones excepto la primera"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "una matriz multidimensional debe tener límites para todas las dimensiones excepto para la primera"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "la especificación del tipo de devolución para el constructor es inválida"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "la especificación del tipo de devolución para el destructor es inválida"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "se especificó un tipo de devolución para %<operator %T%>"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "se declaró la variable o campo sin nombre como void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "se declaró la variable o campo como void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "uso inválido del nombre calificado %<::%D%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "uso inválido del nombre calificado %<%T::%D%>"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "uso inválido del nombre calificado %<%D::%D%>"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%q#T no es una clase o un espacio de nombres"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "el tipo %qT no es derivado del tipo %T"
# FIXME traducción
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "la declaración de %qD como algo que no es función"
# FIXME traducción
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "declaración de %qD como algo que no es miembro"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "falta el id del declarador; se utiliza la palabra reservada %qD"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "la definición de la función no declara parámetros"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "declaración de %qD como %<typedef%>"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr "la declaración de %qD como parámetro"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%<constexpr%> no puede aparecer en una declaración typedef"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "dos o más tipos de datos en la declaración de %qs"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "especificadores en conflicto en la declaración de %qs"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ prohíbe la declaración de %qs sin tipo"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "no se admite %<__int128%> en este objetivo"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ no admite %<__int128%> para %qs"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%<signed%> o %<unsigned%> inválido para %qs"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%<signed%> y %<unsigned%> se especificaron juntos para %qs"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long%> inválido para %qs"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "%<long%> inválido para %qs"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "%<short%> inválido para %qs"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%> o %<short%> inválidos para %qs"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%>, %<int%>, %<short%>, o %<char%> inválido para %qs"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "se especificó %<long%> o %<short%> con char para %qs"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%<long%> y %<short%> se especificaron juntos para %qs"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<short%> o %<long%> inválidos para %qs"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "uso inválido de long, short, signed ó unsigned para %qs"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "complex inválido para %qs"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "no se permiten calificadores en la declaración de %<operator %T%>"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "el miembro %qD no se puede declarar como virtual y static al mismo tiempo"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> no es un declarador válido"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "declaración typedef inválida en la declaración de parámetros"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "se especificó una clase de almacenamiento para el parámetro de plantilla %qs"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "especificadores de clase de almacenamiento inválidos en las declaraciones de parámetros"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "un parámetro no se puede declarar %<constexpr%>"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "declaración de clase fuera de %<virtual%>"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "múltiples clases de almacenamiento en la declaración de %qs"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "se especificó una clase de almacenamiento para %qs"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "se especificó una clase de almacenamiento para el parámetro %qs"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "la función anidada %qs se declaró %<extern%>"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "la declaración del nivel superior de %qs especifica %<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "el ámbito de la función %qs es implícitamente auto y declarado %<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "especificadores de clase de almacenamiento inválidos en las declaraciones de funciones friend"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs que se declaró como función devuelve una función"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs que se declaró como función devuelve una matriz"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr "la función %qs usa el especificador de tipo %<auto%> sin un tipo de devolución trailing"
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr "la función %qs con tipo de devolución trailing tiene %qT como su tipo en lugar de un simple %<auto%>"
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr "el tipo de devolución trailing sólo está disponible con -std=c++11 o -std=gnu++11"
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr "no se declaró la función %qs con tipo de devolución trailing con el especificador de tipo %<auto%>"
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "el destructor no puede ser una función miembro de tipo static"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "el constructor no puede ser una función miembro de tipo static"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "los destructores no pueden ser cv-calificados"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "los constructores tal vez no sean cv-calificados"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "los constructores no se pueden declarar virtual"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "no se puede inicializar la función friend %qs"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "las funciones virtual no pueden ser friend"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "la declaración friend no está en una definición de clase"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr "no se puede definir la función friend %qs en una definición de clase local"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "los destructores no pueden tener parámetros"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "no se puede declarar el puntero a %q#T"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "no se puede declarar la referencia a %q#T"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "no se puede declarar el puntero al miembro %q#T"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "no se puede declarar la referencia para el tipo de función calificado %qT"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "no se puede declarar el puntero para el tipo de función calificado %qT"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr "no se puede declarar la referencia a %q#T, el cual no es una definición de tipo o un argumento de tipo de plantilla"
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr "no se pueden usar aquí %<const%> ni %<constexpr%>"
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr "no se pueden usar aquí %<volatile%> ni %<constexpr%>"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "el id de plantilla %qD se usa como un declarador"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "las funciones miembros son implícitamente friends de su clase"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "calificación extra %<%T::%> en el miembro %qs"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "no se puede definir la función miembro %<%T::%s%> dentro de %<%T%>"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "no se puede declarar la función miembro %<%T::%s%> dentro de %<%T%>"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "no se puede declarar el miembro %<%T::%s%> dentro de %qT"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "%qs que no es parámetro no puede ser un paquete de parámetro"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "el tamaño de la matriz %qs es demasiado grande"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "los datos miembro pueden no tener el tipo modificado variablemente %qT"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "el parámetro puede no tener el tipo modificado variablemente %qT"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "solamente las declaraciones de constructores pueden ser %<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "el no-miembro %qs no se puede declarar %<mutable%>"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "el miembro que no es objeto %qs no se puede declarar %<mutable%>"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "la función %qs no se puede declarar %<mutable%>"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "static %qs no se puede declarar %<mutable%>"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "const %qs no se puede declarar %<mutable%>"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "la referencia %qs no se puede declarar %<mutable%>"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr "la definición de tipo se declaró %<auto%>"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr "el nombre del typedef puede no ser un especificador-de-nombre-anidado"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ prohíbe el tipo anidado %qD con el mismo nombre que la clase que lo contiene"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "los tipos de función calificados no se pueden usar para declarar una función miembro estática"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "los tipos de función calificados no se pueden usar para declarar funciones libres"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "se especificaron calificadores de tipo para la declaración de clase friend"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "se especificó %<inline%> para la declaración de clase friend"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "los parámetros de la plantilla no pueden ser friends"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "la declaración friend requere una llave de clase, p.e. %<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "la declaración friend requiere una llave de clase, p.e. %<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "se intenta hacer que la clase %qT sea un friend de ámbito global"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "calificadores inválidos en el tipo de función que no es miembro"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "el declarador abstracto %qT se usó como declaración"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "no se puede usar %<::%> en la declaración de parámetros"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "el parámetro se declaró %<auto%>"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "se declaró el miembro dato que no es static como %<auto%>"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "uso inválido de %<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "declaración de la función %qD en un contexto inválido"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "la función %qD se declaró virtual dentro de un union"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD no se puede declarar virtual, ya que siempre es static"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "se esperaba un nombre calificado en la declaración friend para el destructor %qD"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "declaración de %qD como miembro de %qT"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr "un destructor no puede ser %<constexpr%>"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "se esperaba un nombre calificado en la declaración friend para el constructor %qD"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "el campo %qD tiene tipo de dato incompleto"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "el nombre %qT tiene tipo de dato incompleto"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " en la instanciación de la plantilla %qT"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qE no es ni función ni función miembro; no se puede declarar friend"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "el miembro dato static constexpr %qD debe tener un inicializador"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "se declaró el miembro dato que no es static %qE como %<constexpr%>"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "la clase de almacenamiento %<auto%> es inválida para la función %qs"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "la clase de almacenamiento %<register%> es inválida para la función %qs"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "la clase de almacenamiento %<__thread%> es inválida para la función %qs"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "no se permiten los especificadores-virt en %qs fuera de una definición de clase"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "el especificador %<static%> es inválido para la función %qs declarada fuera del ámbito global"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "el especificador %<inline%> es inválido para la función %qs declarada fuera del ámbito global"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "función virtual %qs que no es clase"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "se definió %qs en un ámbito que no es una clase"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "se declaró %qs en un ámbito que no es una clase"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "no se puede declarar que la función miembro %qD tenga enlace estático"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "no se puede declarar una función static dentro de otra función"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "%<static%> puede no ser utilizado cuando se define (opuesto a la declaración) un dato miembro static"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "se declaró el miembro static %qD como %<register%>"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "no se puede declarar explícitamente que el miembro %q#D tenga un enlace externo"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "la declaración de la variable constexpr %qD no es una definición"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs inicializado y declarado como %<extern%>"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs tiene %<extern%> e inicializador al mismo tiempo"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "el argumento por defecto de %q#D tiene tipo %qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "el argumento por defecto para el parámetro del tipo %qT tiene el tipo %qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "el argumento por defecto %qE usa %qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "el argumento por defecto %qE usa la variable local %qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "el parámetro %qD tiene tipo de clase Java"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "el parámetro %qD se declaró inválidamente como tipo de método"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "el parámetro %qD incluye un puntero a matriz %qT de límite desconocido"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr "el parámetro %qD incluye una referencia a matriz %qT de límite desconocido"
@@ -28940,170 +28992,170 @@ msgstr "el parámetro %qD incluye una referencia a matriz %qT de límite descono
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "constructor inválido; tal vez quiso decir %<%T (const %T&)%>"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qD no se puede declarar dentro de un espacio de nombres"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD no se puede declarar como static"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD debe ser una función miembro que no sea static"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD debe ser una función miembro que no sea static o una función que no sea miembro"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD debe tener un argumento de tipo clase o enumerado"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "la conversión a una referencia a void nunca usará un operador de conversión de tipo"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr "la conversión a void nunca usará un operador de conversión de tipo"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "la conversión a una referencia al mismo tipo nunca usará un operador de conversión de tipo"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr "la conversión al mismo tipo nunca usará un operador de conversión de tipo"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "la conversión a una referencia a una clase base nunca usará un operador de conversión de tipo"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr "la conversión a una clase base nunca usará un operador de conversión de tipo"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ prohíbe la sobrecarga del operador ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qD no debe tener un número variable de argumentos"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "el postfijo %qD debe tomar %<int%> como su argumento"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "el postfijo %qD debe tomar %<int%> como su segundo argumento"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD debe tomar cero o un argumentos"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD debe tomar uno o dos argumentos"
# En esta traducción se emplea 'devolver' por 'return'. Si embargo, aquí
# se cambió por cacofonía: no es agradable escuchar 'debe devolver'. cfuga
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "el prefijo %qD debe regresar %qT"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "el postfijo %qD debe regresar %qT"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD debe tomar %<void%>"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD debe tomar un argumento exactamente"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD debe tomar dos argumentos exactamente"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "el %qD definido por el usuario siempre evalúa ambos argumentos"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD debe devolver por valor"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD no puede tener argumentos por defecto"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "usando el parámetro de tipo plantilla %qT después de %qs"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr "se usa especialización de plantilla %qT alias después de %qs"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "se usó el nombre de definición de tipo %qD después de %qs"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "%qD tiene una declaración previa aquí"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "se refirió a %qT como %qs"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T tiene una declaración previa aquí"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "se refirió a %qT como un enum"
@@ -29115,90 +29167,90 @@ msgstr "se refirió a %qT como un enum"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "se requiere un argumento de plantilla para %<%s %T%>"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD tiene el mismo nombre que la clase en la cual se declaró"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "la referencia a %qD es ambigua"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "uso del enum %q#D sin declaración previa"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "redeclaración de %qT como algo que no es plantilla"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "declaración previa de %q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "union derivada %qT inválida"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "la clase Java %qT no puede tener bases múltiples"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "la clase Java %qT no puede tener bases virtuales"
# No me gusta mucho esta traducción. Creo que es mejor
# "el tipo base %qT no es de tipo struct o clase". cfuga
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "el tipo base %qT falla en ser un tipo struct o clase"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "tipo recursivo %qT sin definir"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "tipo base duplicado %qT inválido"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr "no coinciden scoped/unscoped en el enum %q#T"
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, gcc-internal-format
msgid "previous definition here"
msgstr "la definición previa está aquí"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr "no coincide el tipo subyacente en el enum %q#T"
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr "tipos subyacentes diferentes en el enum %q#T"
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr "el tipo subyacente %<%T%> de %<%T%> debe ser un tipo integral"
@@ -29207,72 +29259,72 @@ msgstr "el tipo subyacente %<%T%> de %<%T%> debe ser un tipo integral"
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "ningún tipo integral puede representar todos los valores de enumerador de %qT"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "el valor de enumerador para %qD no es una constante entera"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "el valor del enumerador incrementado es demasiado grande para %<unsigned long%>"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "desbordamiento en valores de enumeración en %qD"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "el valor de enumerador %E es demasiado grande para el tipo subyacente %<%T%>"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "el tipo de devolución %q#T es un tipo de dato incompleto"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "el tipo de devolución tiene tipo de clase Java %q#T"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> debe devolver una referencia a %<*this%>"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "no hay declaración previa para %q+D"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "declaración de función inválida"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "el parámetro %qD se declaró void"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr "se define el parámetro %q+D pero no se usa"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "declaración de la función miembro inválida"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD ya se definió en la clase %qT"
@@ -29312,7 +29364,7 @@ msgstr "no se puede borrar una función. Solamente los punteros a objetos son a
msgid "deleting %qT is undefined"
msgstr "el borrado de %qT está indefinido"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "declaración plantilla de %q#D"
@@ -29573,7 +29625,7 @@ msgstr "se utilizó el tipo incompleto %qT en un especificador de nombre anidado
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "la referencia a %<%T::%D%> es ambigua"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD no es un miembro de %qT"
@@ -29879,7 +29931,7 @@ msgstr "el tipo %qT no es una base directa de %qT"
msgid "bad array initializer"
msgstr "inicializador de matriz erróneo"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%qT no es un tipo de clase"
@@ -29964,67 +30016,67 @@ msgstr "tamaño de matriz no constante en new, no se puede verificar la longitud
msgid "parenthesized initializer in array new"
msgstr "inicializador entre paréntesis en la matriz new"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "el tamaño de la matriz nueva debe tener un tipo integral"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new no se puede aplicar a un tipo de referencia"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new no se puede aplicar a un tipo de función"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "llamado a constructor Java, mientras %<jclass%> está indefinido"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "no se puede encontrar %<class$%> en %qT"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "el inicializador termina prematuramente"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "no se pueden inicializar matrices multidimensionales con el inicializador"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "se detectó un posible problema en la invocación del operador delete:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "no se llamará ni al destructor ni al operador delete específico de la clase, aún si se declaran cuando se defina la clase"
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr "si borra un objeto de tipo de clase abstracta %qT que tiene un destructor que no es virtual, puede causar conducta indefinida"
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr "si borra un objeto de tipo de clase polimórfica %qT que tiene un destructor que no es virtual, puede causar conducta indefinida"
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "tamaño de matriz desconocida en delete"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "el tipo de vector delete no es del tipo puntero ni matriz"
@@ -30084,42 +30136,42 @@ msgstr "no hay argumentos para %qD que dependan de un parámetro de plantilla, p
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(si utiliza %<-fpermissive%>, G++ aceptará su código, pero permitir el uso de un nombre sin declarar es obsoleto)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr "se decodifica typeof, utilice decltype en su lugar"
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr "se decodifica __underlying_type"
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr "se decodifica el tipo de coma fija desconocido"
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr "decodificando %C"
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "se omitió el operando de enmedio de %<?%>: no se puede revolver el operando"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr "literal de cadena en la firma de plantilla de función"
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "el nombre revuelto de %qD cambiará en una versión futura de GCC"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr "-fabi-version=6 (o =0) evita este error con un cambio en la decodificación"
@@ -30205,57 +30257,57 @@ msgstr "%q+#D se declara implícitamente como deleted porque %qT declara un cons
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr "%q+#D es implícitamente deleted por que la definición por defecto estaría mal formada:"
-#: cp/method.c:1620
+#: cp/method.c:1621
#, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "declaración definida por defecto %q+D"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr "no coincide la firma esperada %qD"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr "la función %q+D definida por defecto en su primera declaración tiene una excepción de especificación que difiere de la declaración implícita %q#D"
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr "la función %q+D explícitamente por defecto no se puede declarar como constexpr porque la declaración implícita no es constexpr:"
-#: cp/method.c:1679
+#: cp/method.c:1680
#, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "una plantilla no se puede definir por defecto"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "%qD no se puede definir por defecto"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "función definida por defecto %q+D con argumento por defecto"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "la disposición vtable para la clase %qT puede no cumplir con la ABI y puede cambiar en una versión futura de GCC debido al destructor virtual implícito"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D genera un conflicto con una declaración previa"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, gcc-internal-format
msgid "previous declaration %q+#D"
msgstr "declaración previa de %q+#D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "redeclaración de %<wchar_t%> como %qT"
@@ -30266,265 +30318,265 @@ msgstr "redeclaración de %<wchar_t%> como %qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "redeclaración inválida de %q+D"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "como %qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "redeclaración de %q#D con enlace de lenguaje C"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr "debido a diferentes especificaciones de excepciones"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "no coinciden los tipos con la declaración externa previa de %q#D"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "declaración externa previa de %q+#D"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "la declaración extern de %q#D no coincide"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "la declaración global %q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "la declaración de %q#D oscurece un parámetro"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr "la declaración de %qD oscurece una captura lambda"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "la declaración de %qD oscurece a una declaración local previa"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "la declaración de %qD oscurece a un miembro de 'this'"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "la declaración de %qD oscurece a una declaración global"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "la búsqueda de nombre de %qD cambió"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " coincide con este %q+D bajo las reglas de ISO estándar"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " coincide con este %q+D bajo las reglas antiguas"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "la búsqueda de nombre de %qD cambió por el nuevo alcance ISO de %<for%>"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " no se puede usar la asignación obsoleta en %q+D porque tiene un destructor"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " se usa la asignación obsoleta en %q+D"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(si utiliza %<-fpermissive%>, G++ aceptará su código)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D esconde el destructor para %q#T"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D genera un conflicto con la declaración previa en uso %q#D"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "la declaración previa %q+#D que no es función"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "genera un conflicto con la declaración de la función %q#D"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT no es un espacio de nombres"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "una declaración de uso no puede especificar un id de plantilla. Intente %<using %D%>"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "no se permite el espacio de nombres %qD en la declaración using"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "no se declaró %qD"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD ya se declaró en este ámbito"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "declaración de uso para un no miembro en el ámbito de la clase"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> nombra al destructor"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%> nombra al constructor"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> nombra al constructor en %qT"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "no hay miembros que coincidan con %<%T::%D%> en %q#T"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "la declaración de %qD no está en un espacio de nombres alrededor de %qD"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "calificación explícita en la declaración de %qD"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD se debería declarar dentro de %qD"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "el atributo %qD requiere un solo argumento NTBS"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr "el atributo %qD no tiene signifcado porque los miembros del espacio de nombres anónimo tiene símbolos locales"
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "se descarta la directiva de atributo %qD"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "no se permite aquí el alias del espacio de nombres %qD, se asume que es %qD"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "el uso de strong solamente tiene significado en el ámbito de espacio de nombres"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "el espacio de nombres actual %qD no contiene al espacio de nombres %qD usado con frecuencia"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr "límite máximo de %d espacios de nombres buscados para %qE"
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] "alternativa sugerida:"
msgstr[1] "alternativas sugeridas:"
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr " %qE"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr "la búsqueda dependiente del argumento encuentra %q+D"
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX entrando a pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX saliendo de pop_everything ()\n"
@@ -30634,7 +30686,7 @@ msgstr "no se pueden definir tipos nuevos en un tipo de devolución"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(tal vez falta un punto y coma después de la definición de %qT)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT no es una plantilla"
@@ -30654,7 +30706,7 @@ msgstr "id-de-plantilla inválido"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "una literal de coma flotante no puede aparecer en una expresión constante"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr "una conversión a un tipo diferente de un tipo integral o de enumeración no puede aparecer en una expresión constante"
@@ -30797,711 +30849,711 @@ msgstr "los sufijos de literal %qD y %qD definidos por el usuario son inconsiste
msgid "a wide string is invalid in this context"
msgstr "una cadena ancha es inválida en este contexto"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr "no se puede encontrar el operador de carácter literal %qD con argumento %qT"
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr "no se puede encontrar un operador literal numérico %qD"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr "no se puede encontrar un operador literal de cadena %qD"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr "no se puede encontrar un operador literal de cadena %qD con argumentos %qT, %qT"
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, gcc-internal-format
msgid "expected declaration"
msgstr "se esperaba una declaración"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "no se admiten tipos de coma fija en C++"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ prohíbe grupos de llaves dentro de expresiones"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "las expresiones-de-declaraciones no se permiten fuera de funciones ni en listas de argumentos-plantilla"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, gcc-internal-format
msgid "expected primary-expression"
msgstr "se esperaba una expresión primaria"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "no se puede usar %<this%> en este contexto"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "una declaración de plantilla no puede aparecer en el ámbito de bloque"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "la variable local %qD no puede aparecer en este contexto"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, gcc-internal-format
msgid "expected id-expression"
msgstr "se esperaba una expresión id"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "el ámbito %qT antes de %<~%> no es un nombre-de-clase"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "declaración de %<~%T%> como miembro de %qT"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "se usa el nombre-de-definición-de-tipo %qD como un declarador de destructor"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr "los sufijos de operador literal que no están precedidos por %<_%> están reservados para estandarización futura"
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr "se esperaba un id sin calificar"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr "se encontró %<:%> en un especificador de nombre anidado, se esperaba %<::%>"
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "el tipo de declaración evalúa a %qT, el cual no es una clase o un tipo enumerado"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qD no es una plantilla"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "se esperaban especificadores de nombre anidados"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "los tipos no se pueden definir en conversiones"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr "no se pueden definir tipos en una expresión %<typeid%>"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ prohíbe las literales compuestas"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qE no tiene un tipo de clase"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "uso inválido de %qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%> no es un miembro clase"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr "tipo que no es escalar"
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ no permite %<alignof%> con algo que no es tipo"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "no se pueden definir tipos en expresiones %<noexcept%>"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "no se pueden definir tipos en una expresión new"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "se prohíbe el límite de matriz después del id-de-tipo entre paréntesis"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "intente borrar los paréntesis alrededor del id-de-tipo"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr "no se pueden definir tipos en un id-tipo-nuevo"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "la expresión en el declarador-new debe tener un tipo integral o de enumeración"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "uso de conversión de estilo antiguo"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr "el operador %<>>%> se tratará como dos en llaves en ángulo derechas en C++11"
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "se sugieren paréntesis alrededor de la expresión %<>>%>"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ no permite ?: con el operando medio omitido"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr "expresión lambda en un contexto sin evaluar"
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr "se esperaba el fin de la lista-de-captura"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr "la captura por copia explícita de %<this%> es redundante con la captura por copia por defecto"
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ no permite inicializadores en la expresión lambda de listas de captura"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr "captura de %qD que no es variable "
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, gcc-internal-format
msgid "%q+#D declared here"
msgstr "%q+#D se declaró aquí"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr "captura de la variable %qD con duración de almacenamiento que no es automática"
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr "la captura por copia explícita de %qD es redundante con la captura por copia por defecto"
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr "la captura por referencia explícita de %qD es redundate con la captura por referencia por defecto"
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "se especificó un argumento por defecto para el parámetro lambda"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, gcc-internal-format
msgid "expected labeled-statement"
msgstr "se esperaba una declaración etiquetada"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "la etiqueta case %qE no está dentro de una declaración switch"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr "se necesita %<typename%> antes de %qE porque %qT es un ámbito dependiente"
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> nombra el constructor, no el tipo"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr "declaración compuesta en una función constexpr"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, gcc-internal-format
msgid "expected selection-statement"
msgstr "se esperaba una declaración de selección"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr "no se pueden definir tipos en condiciones"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "la expresión %<for%> basada en rango de tipo %qT es de tipo incompleto"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr "la expresión %<for%> basada en rango de tipo %qT tiene un miembro %<end%> pero no tiene %<begin%>"
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr "la expresión %<for%> basada en rango de tipo %qT tiene un miembro %<begin%> pero no tiene %<end%>"
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr "tipos begin/end inconsistentes para la declaración %<for%> basada en rango: %qT y %qT"
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr "se esperaba una declaración de iteración"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "no se permiten los bucles %<for%> basados en rango en el modo C++98"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ prohíbe los gotos calculados"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, gcc-internal-format
msgid "expected jump-statement"
msgstr "se esperaba una declaración de salto"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "<;%> extra"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr "%<__label%> no está al inicio de un bloque"
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "se prohíbe mezclar declaraciones y definiciones-de-función"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "se usó %<friend%> fuera de la clase"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr "%<auto%> cambiará su significado en C++11; por favor bórrelo"
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr "especificador-decl inválido en la condición"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "la definición de clase no se puede declarar como friend"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr "las plantillas no pueden ser %<virtual%>"
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "especificación de enlace inválida"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr "no se pueden definir tipos en expresiones %<decltype%>"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "uso inválido de %<auto%> en el operador de conversión"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, gcc-internal-format
msgid "only constructors take member initializers"
msgstr "solamente los constructores toman inicializadores miembro"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "no se puede expandir el inicializador para el miembro %<%D%>"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "inicializador mem para %qD después de una delegación de constructor"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr "delegación de constructor después de un inicializador mem para %qD"
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "inicializador de clase base de estilo antiguo anacrónico"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "no se permite la palabra clave %<typename%> en este contexto (un inicializador de miembro calificado es implícitamente un tipo)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr "se esperaba una cadena vacía después de la palabra clave %<operator%>"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, gcc-internal-format
msgid "expected suffix identifier"
msgstr "se esperaba un identificador sufijo"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr "falta un espacio entre %<\"\"%> y el identificador sufijo"
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, gcc-internal-format
msgid "expected operator"
msgstr "operador inesperado"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "no se admite la palabra clave %<export%>, y se descartará"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "el paquete de parámetros plantilla %qD no puede tener un argumento por defecto"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "el paquete de parámetros plantilla no puede tener un argumento por defecto"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "los paquetes de parámetro de plantilla no pueden tener argumentos por defecto"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, gcc-internal-format
msgid "expected template-id"
msgstr "se esperaba un id de plantilla"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, gcc-internal-format
msgid "expected %<<%>"
msgstr "se esperaba %<<%>"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%<<::%> no puede iniciar una lista de argumentos de plantilla"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> es una forma alternativa para %<[%>. Inserte espacios en blanco entre %<<%> y %<::%>"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr "error de decodificación en la lista de argumentos de plantilla"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, gcc-internal-format
msgid "expected template-name"
msgstr "se esperaba un nombre de plantilla"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "se usó %qD que no es plantilla como plantilla"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "utilice %<%T::template %D%> para indicar que es una plantilla"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr "se esperaba el parámetro pack antes de %<...%>"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, gcc-internal-format
msgid "expected template-argument"
msgstr "se esperaba un argumento de plantilla"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "argumento de plantilla que no es tipo inválido"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "la instanciación explícita no debe usar el especificador %<inline%>"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "la instanciación explícita no debe usar el especificador %<constexpr%>"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "especialización de plantilla con enlace C"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, gcc-internal-format
msgid "expected type specifier"
msgstr "se esperaba un specificador de tipo"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, gcc-internal-format
msgid "expected template-id for type"
msgstr "se esperaba un id de plantilla para el tipo"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, gcc-internal-format
msgid "expected type-name"
msgstr "se esperaba un nombre de tipo"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr "el especificador de tipo elaborado para un ámbito enumerado no debe usar la palabra clave %<%D%>"
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "la declaración %qD no declara nada"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "se descartan los atributos en el tipo sin instanciar"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "se descartan los atributos en la instanciación de una plantilla"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr "se descartan los atributos en un especificador de tipo elaborado que no es una declaración adelantada"
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "%qD es una plantilla de enumeración"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr "%qD no es un nombre-de-enumerador"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "se esperaba %<;%> o %<{%>"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr "no se puede agregar una lista de enumerador a una instanciación de plantilla"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "la declaración de %qD en el espacio de nombres %qD el cual no incluye a %qD"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "la declaración de %qD en %qD la cual no incluye a %qD"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "definición múltiple de %q#T"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr "especificador enumerador opaco sin nombre"
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr "el especificador enumerador opaco debe usar un identificador simple"
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD no es un nombre-de-espacio-de-nombres"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, gcc-internal-format
msgid "expected namespace-name"
msgstr "se esperaba un nombre de espacio"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "la definición %<namespace%> no se permite aquí"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "un id-de-plantilla no puede aparecer en una declaración-using"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr "las declaraciones access son obsoletas en favor de las declaraciones using: sugerencia: use la palabra clave %<using%>"
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "no se pueden definir tipos en declaraciones de plantilla alias"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "una definición de función no se permite aquí"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "no se permite una especificación-asm en una definición-de-función"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "no se permiten atributos en una definición-de-función"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr "se esperaba un constructor, un destructor, o una conversión de tipo"
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, gcc-internal-format
msgid "expected initializer"
msgstr "se esperaba un inicializador"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, gcc-internal-format
msgid "invalid type in declaration"
msgstr "tipo inválido en la declaración"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, gcc-internal-format
msgid "initializer provided for function"
msgstr "se proporcionó un inicializador para la función"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "se descartan los atributos después del inicializador entre paréntesis"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "el límite de la matriz no es una constante entera"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "no se puede definir el miembro de la definición de tipo dependiente %qT"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%E%> no es un tipo"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "uso inválido del constructor como una plantilla"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "use %<%T::%D%> en lugar de %<%T::%D%> para nombrar el constructor en un nombre calificado"
@@ -31510,247 +31562,247 @@ msgstr "use %<%T::%D%> en lugar de %<%T::%D%> para nombrar el constructor en un
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "declarador inválido"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, gcc-internal-format
msgid "expected declarator"
msgstr "se esperaba un declarador"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD es un espacio de nombres"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr "no se puede formar un puntero al miembro de %q#T que no es clase"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, gcc-internal-format
msgid "expected ptr-operator"
msgstr "se esperaba un operador puntero"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "calificador-cv duplicado"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr "especificador-virt duplicado"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "uso inválido de %<auto%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "no se pueden definir tipos en argumentos de plantilla"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, gcc-internal-format
msgid "expected type-specifier"
msgstr "se esperaba un especificador de tipo"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "se esperaba %<,%> o %<...%>"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "no se pueden definir tipos en tipos de parámetro"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "uso obsoleto del argumento por defecto para el parámetro de una no función"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "los argumentos por defecto sólo se permiten para parámetros de función"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "el paquete de parámetros %qD no puede tener un argumento por defecto"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "el paquete de parámetros no puede tener un argumento por defecto"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ no permite inicializadores designados"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ no permite inicializadores designados de C99"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, gcc-internal-format
msgid "expected class-name"
msgstr "se esperaba un nombre de clase"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "se esperaba %<;%> después de la definición de clase"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "se esperaba %<;%> después de la definición de struct"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "se esperaba %<;%> después de la definición de union"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "se esperaba %<{%> o %<:%>"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr "no se puede especificar %<override%> para una clase"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr "la calificación global del nombre de clase es inválida"
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "el nombre calificado no nombra una clase"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "nombre de clase inválido en la declaración de %qD"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr "no se permite la calificación extra"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "una especialización explícita se debe preceder con %<template <>%>"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "la plantilla de función %qD se redeclaró commo una plantilla de clase"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr "no se puede resolver el tipo typename"
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "definición previa de %q+#T"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, gcc-internal-format
msgid "expected class-key"
msgstr "se esperaba una llave de clase"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "en C++03 se debe usar una llave-clase cuando se declara un friend"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "la declaración friend no nombra una clase o función"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "especificador-pure en la definición-de-función"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "se esperaba %<;%> al final de la declaración miembro"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr "especificador pure inválido (sólo se permite %<= 0%>)"
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr "un inicializador dentro de llaves no se permite aquí"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr "se especificó %<virtual%> más de una vez en la base especificada"
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr "más de un especificador de acceso en la base especificada"
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "no se permite la palabra clave %<typename%> fuera de las plantillas"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "no se permite la palabra clave %<typename%> en este contexto (la clase base es implícitamente un tipo)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "no se pueden definir tipos en una especificación de excepción"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr "las especificaciones de excepción dinámicas son obsoletas en C++0x; utilice %<noexcept%> en su lugar"
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "no se pueden definir tipos en declaraciones de excepción"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr "el miembro especializado %<%T::%E%> requiere sintaxis %<template<>%>"
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "declaración inválida de %<%T::%E%>"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "faltan listas-de-parámetros-de-plantilla"
@@ -31759,317 +31811,317 @@ msgstr "faltan listas-de-parámetros-de-plantilla"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "demasiadas listas-de-parámetros-de-plantilla"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "ya no se admiten los valores de devolución nombrados"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr "declaración inválida de plantilla miembro en la clase local"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "plantilla con enlace C"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "especialización explícita inválida"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr "la plantilla de operador literal %qD tiene una lista de parámetros inválida. Se esperaba un paquete de argumentos de plantilla que no sean de tipo <char...>"
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "declaración plantilla de %<typedef%>"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "la especialización de plantilla explícita no puede tener una clase de almacenamiento"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%<>>%> debe ser %<> >%> dentro de una lista de argumentos de plantilla anidada"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "%<>>%> sobrante, use %<>%> para terminar una lista de argumentos de plantilla"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "uso inválido de %qD en la especificación de enlace"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> antes de %qD"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, gcc-internal-format
msgid "expected %<new%>"
msgstr "se esperaba %<new%>"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr "se esperaba %<delete%>"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, gcc-internal-format
msgid "expected %<return%>"
msgstr "se esperaba %<return%>"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, gcc-internal-format
msgid "expected %<extern%>"
msgstr "se esperaba %<extern%>"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr "se esperaba %<static_assert%>"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "se esperaba %<decltype%>"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, gcc-internal-format
msgid "expected %<operator%>"
msgstr "se esperaba %<operator%>"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr "se esperaba %<class%>"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, gcc-internal-format
msgid "expected %<template%>"
msgstr "se esperaba %<template%>"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "se esperaba %<namespace%>"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr "se esperaba %<using%>"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, gcc-internal-format
msgid "expected %<asm%>"
msgstr "se esperaba %<asm%>"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, gcc-internal-format
msgid "expected %<try%>"
msgstr "se esperaba %<try%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr "se esperaba %<catch%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr "se esperaba %<throw%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "se esperaba %<__label__%>"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, gcc-internal-format
msgid "expected %<@try%>"
msgstr "se esperaba %<@try%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr "se esperaba %<@synchronized%>"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr "se esperaba %<@throw%>"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr "se esperaba %<__transaction_atomic%>"
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr "se esperaba %<__transaction_relaxed%>"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr "se esperaba %<::%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr "se esperaba %<...%>"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, gcc-internal-format
msgid "expected %<*%>"
msgstr "se esperaba %<*%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, gcc-internal-format
msgid "expected %<~%>"
msgstr "se esperaba %<~%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "se esperaba %<:%> o %<::%>"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "se esperaba %<class%>, %<typename%> o %<template%>"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "se usó la etiqueta %qs al nombrar a %q#T"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "%q#T se declaró previamente aquí"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qD se redeclaró con acceso diferente"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "%<template%> (como desambiguador) sólo se permite dentro de plantillas"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "el fichero termina en el argumento por defecto"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "construct Objective-C++ %<@%D%> mal ubicado"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr "se esperaba(n) argumento(s) de mensaje de objective-c++"
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "%<@encode%> debe especificar un tipo como un argumento"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr "nombre de selector Objective-C++ inválido"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr "se esperaba una declaración de método de objective-c++"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "los atributos de método se deben especificar al final"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr "%qs sobrante después de los métodos Objective-C++"
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "tipo inválido para la variable de de instancia"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "se esperaba un identificador después de %<@protocol%>"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr "los atributos no se pueden especificar antes de la palabra clave de Objective-C++ %<@%D%>"
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "se descartan los atributos de prefijo antes de %<@%D%>"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, gcc-internal-format
msgid "invalid type for property"
msgstr "tipo inválido para la propiedad"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr "no se permite la inicialización entre paréntesis para el bucle %<for%> en OpenMP"
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "la variable de iteración %qD no debe ser reduction"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr "no se colapsó lo suficiente para los bucles"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr "%<__transaction_relaxed%> sin activar el soporte de memoria transaccional"
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr "%<__transaction_atomic%> sin activar el soporte de memoria transaccional"
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "basura al final de %<#pragma GCC pch_preprocess%>"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "no se han implementado las optimizaciones intermódulos para C++"
@@ -32166,69 +32218,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD no es una plantilla de función"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "el id-de-plantilla %qD para %q+D no coincide con ninguna declaración de plantilla"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr "se encontró %d %<template<>%>, se necesita %d para especializar una plantilla de función miembro"
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "especialización de plantilla %qD ambigua para %q+D"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "id de plantilla %qD en la declaración de la plantilla primaria"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "no se usan la plantilla de lista de parámetros en la instanciación explícita"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "se proporcionó una definición para la instanciación explícita"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "demasiadas listas de parámetros de plantilla en la declaración de %qD"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "faltan listas de parámetros de plantilla en la declaración de %qD"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "la especialización explícita de %qD se debe preceder con %<template <>%>"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "no se permite la especialización parcial de la función de plantilla %qD"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "se especificó un argumento por defecto en la especialización explícita"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD no es una función plantilla"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD no se declaró en %qD"
@@ -32241,134 +32293,134 @@ msgstr "%qD no se declaró en %qD"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "especialización de la función miembro especial declarada implícitamente"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "la función no miembro %qD se declaró en %qT"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr "la expansión del inicializador base %<%T%> no contiene paquetes de parámetro"
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr "el patrón de expansión %<%T%> no contiene paquetes de argumento"
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr "el patrón de expansión %<%E%> no contiene paquetes de argumento"
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr "no se expanden los paquetes de parámetro con %<...%>"
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr " <anónimo>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "la declaración de %q+#D"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr " oscurece el parámetro de plantilla %q+#D"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "no se usan los parámetros de plantilla en la especialización parcial:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "la especialización parcial %qT no especializa ningún argumento de plantilla"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr "el argumento de paquete de parámetro %qE debe estar al final de la lista de argumentos de plantilla"
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr "el argumento de paquete de parámetro %qT debe estar al final de la lista de argumentos de plantilla"
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "el argumento de plantilla %qE involucra a el(los) parámetro(s) de plantilla"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "el tipo %qT del argumento de plantilla %qE depende de un parámetro de plantilla"
msgstr[1] "el tipo %qT del argumento de plantilla %qE depende de parámetros de plantilla"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "especialización parcial de %qT después de la instanciación %qT"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "no hay un argumento por defecto para %qD"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr "el parámetro de paquete %qE debe estar al final de la lista de parámetros de plantilla"
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr "el parámetro de paquete %qT debe estar al final de la lista de parámetros de plantilla"
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "no se pueden usar los argumentos de plantilla por defecto en la re-declaración friend de la plantilla de función"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr "no se pueden usar los argumentos de plantilla por defecto en las declaraciones friend de la plantilla de función"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr "los argumentos de plantilla por defecto no se pueden usar en las plantillas de función sin -std=c++11 o -std=gnu++11"
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr "no se pueden usar los argumentos de plantilla por defecto en las especializaciones parciales"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "argumento por defecto para el parámetro de plantilla para la clase incluyente %qD"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "clase de plantilla sin nombre"
@@ -32376,7 +32428,7 @@ msgstr "clase de plantilla sin nombre"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "se declaró el destructor %qD como una plantilla miembro"
@@ -32386,76 +32438,76 @@ msgstr "se declaró el destructor %qD como una plantilla miembro"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "declaración de la plantilla de %qD inválida"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "definición de plantilla de %q#D que no es plantilla"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "se esperaban %d niveles de parámetros de plantilla para %q#D, se obtuvieron %d"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "se obtuvieron %d parámetros de plantilla para %q#D"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "se obtuvieron %d parámetros de plantilla para %q#T"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " pero se requieren %d"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "los argumentos de plantilla para %qD no coinciden con la plantilla original %qD"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr "utilice template<> para una especialización explícita"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT no es un tipo plantilla"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "no se especificaron los especificadores de plantilla en la declaración de %qD"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "se redeclaró con %d parámetro de plantilla"
msgstr[1] "se redeclaró con %d parámetros de plantilla"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "la declaración previa de %q+#D usó %d parámetro de plantilla"
msgstr[1] "la declaración previa de %q+#D usó %d parámetros de plantilla"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "parámetro de plantilla %q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "redeclarado aquí como %q#D"
@@ -32464,328 +32516,328 @@ msgstr "redeclarado aquí como %q#D"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "redefinición del argumento por defecto para %q#D"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, gcc-internal-format
msgid "original definition appeared here"
msgstr "la definición original apareció aquí"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque %qD no tiene enlace"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque %qD no tiene enlace externo"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE no es un argumento de plantilla válido para el tipo %qT"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "debe ser un puntero-a-miembro de la forma %<&X::Y%>"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr " no se puede deducir el parámetro de plantilla %qD"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr " los tipos %qT y %qT tiene calificadores-cv incompatibles"
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr " no coinciden los tipos %qT y %qT"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr " el parámetro de plantilla %qD no es un paquete de parámetro, pero el argumento %qD sí"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr " el argumento de plantilla %qE no coincide con la constante puntero-a-miembro %qE"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr " %qE no es equivalente a %qE"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr " deducción de paquete de parámetros inconsistente con %qT y %qT"
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr " se deducen tipos en conflicto para el parámetro %qT (%qT y %qT)"
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr " se deducen valores en conflicto para el parámetro %qE que no es tipo (%qE y %qE)"
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr " el tipo matriz de tamaño variable %qT no es un argumento de plantilla válido"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr " el tipo de función miembro %qT no es un argumento de plantilla válido"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr " no se puede convertir %qE (tipo %qT) al tipo %qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr " %qT es una clase base ambigua de %qT"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr " %qT no es derivado de %qT"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr " los parámetros de plantilla de un argumento de plantilla plantilla son inconsistentes con otros argumentos de plantilla deducidos"
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr " no se puede deducir una plantilla para %qT del tipo %qT que no es plantilla"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr " el argumento de plantilla %qE no coincide con %qD"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr " no se puede resolver la dirección de la función sobrecargada %qE"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque las literales de cadena nunca se pueden usar en este contexto"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "en el argumento de plantilla para el tipo %qT "
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qD no es un argumento válido de plantilla porque %qD es una variable, no la dirección de una variable"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE no es un argumento válido de plantilla de tipo %qT porque %qE no es una variable"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qE no es un argumento válido de plantilla de tipo %qT porque %qD no tiene enlace externo"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE no es un argumento válido de plantilla de tipo %qT porque %qD no tiene enlace"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "%qE no es un argumento de plantilla válido para el tipo %qT debido a conflictos en la calificación cv"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque no es un l-valor"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%q#D no es un argumento válido de plantilla para el tipo %qT porque una referencia variable no tiene una dirección constante"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque no es un objeto con enlace externo"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque el objeto %qD no tiene enlace externo"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr "debe ser la dirección de una función con enlace externo"
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE no es un argumento de plantilla válido para el tipo %qT porque es un puntero"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "intente utilizar %qE en su lugar"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE no es un argumento de plantilla válido para el tipo %qT porque es de tipo %qT"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "no se permiten las conversiones estándar en este contexto"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "se descartan los atributos en el argumento de plantilla %qT"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr "se usó el nombre-de-clase-inyectada %qD como un argumento de plantilla plantilla"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr "uso inválido del destructor %qE como un tipo"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "para hacer referencia a un tipo miembro de un parámetro de plantilla, use %<typename %E%>"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "no coincide el tipo/valor en el argumento %d en la lista de parámetros de plantilla para %qD"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " se esperaba una constante de tipo %qT, se obtuvo %qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " se esperaba una plantilla de clase, se obtuvo %qE"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " se esperaba un tipo, se obtuvo %qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " se esperaba un tipo, se obtuvo %qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " se esperaba una plantilla de clase, se obtuvo %qT"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr " se esperaba una plantilla de tipo %qD, se obtuvo %qT"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "los tipos no coinciden en el parámetro pack que no es de tipo"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "no se puede convertir el argumento de plantilla %qE a %qT"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "número erróneo de argumentos de plantilla (%d, debe ser %d)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "número erróneo de argumentos de plantilla (%d, debe ser %d o más)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "provisto por %q+D"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "el argumento de plantilla %d es inválido"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, gcc-internal-format
msgid "%q#D is not a function template"
msgstr "%q#D no es una plantilla de función"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "se usa el tipo %qT que no es plantilla como una plantilla"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "para la declaración de plantilla %q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "la profundidad de instanciación de la plantilla excede el máximo de %d (use -ftemplate-depth= para incrementar el máximo) al sustituir %qS"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "la profundidad de instanciación de la plantilla excede el máximo de %d (use -ftemplate-depth= para incrementar el máximo) al instanciar %qD"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr "no coinciden las longitudes de los paquetes de argumentos al expandir %<%T%>"
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr "no coinciden las longitudes de los paquetes de argumentos al expandir %<%E%>"
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "instanciación de %q+D como tipo %qT"
@@ -32803,257 +32855,257 @@ msgstr "instanciación de %q+D como tipo %qT"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr "la variable %qD tiene tipo de función"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "tipo de parámetro %qT inválido"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "en la declaración %q+D"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "la función devuelve una matriz"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "la función devuelve una función"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "se crea un puntero a función miembro del tipo %qT que no es clase"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "se forma la referencia a void"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "se forma un puntero para referenciar al tipo %qT"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "se forma una referencia para referenciar al tipo %qT"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "se crea un puntero al miembro del tipo %qT que no es clase"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "se crea un puntero al miembro de referencia de tipo %qT"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "se crea un puntero al miembro de tipo void"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "se crea la matriz de %qT"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "se crea la matriz de %qT, la cual es un tipo de clase abstracta"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT no es de tipo clase, struct o union"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%qT resuelve a %qT, el cual no es un tipo enumerado"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT resuelve a %qT, el cual no es un tipo de clase"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "uso de %qs en la plantilla"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "el tipo calificador %qT no coincide con el nombre del destructor ~%qT"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "el nombre dependiente %qE se decodifica como un no tipo, pero la instanciación genera un tipo"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "escriba %<typename %E%> si quiere un tipo"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "se usa el campo inválido %qD"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "uso inválido de la expresión de expansión de paquete"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr "use %<...%> para expandir el paquete de argumentos"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr "%qD no se declaró en este ámbito, y no se encontraron declaraciones en la búsqueda dependiente de argumentos en el punto de la instanciación"
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr "no se encontraron declaraciones en la base dependiente %qT pur la búsqueda no calificada"
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr "use %<this->%D%> en su lugar"
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr "use %<%T::%D%> en su lugar"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr "%q+D se declaró aquí, después en la unidad de translación"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT no es una clase o un espacio de nombres"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD no es una clase o un espacio de nombres"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT es/usa un tipo anónimo"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "el argumento de plantilla para %qD usa el tipo local %qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT es un tipo modificado variablemente"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "la expresión integral %qE no es una constante"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " se trata de instanciar %qD"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "instanciación de plantilla clase ambigua para %q#T"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "instanciación explícita de %q#D que no es plantilla"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "%qD no es un dato miembro static de una plantilla de clase"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "no se encontró una plantilla coincidente para %qD"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "el tipo %qT para la instanciación explícita %qD no coincide con el tipo declarado %qT"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "instanciación explícita de %q#D"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "instanciación explícita duplicada de %q#D"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ 1998 prohíbe el uso de %<extern%> en instanciaciones explícitas"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "clase de almacenamiento %qD aplicada a la instanciación de una plantilla"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "instanciación explícita de la plantilla %qD que no es clase"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "instanciación explícita del tipo %qT que no es plantilla"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "instanciación explícita de %q#T antes de la definición de la plantilla"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ prohíbe el uso de %qE en las instanciaciones explícitas"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "instanciación explícita duplicada de %q#T"
@@ -33065,32 +33117,32 @@ msgstr "instanciación explícita duplicada de %q#T"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "instanciación explícita de %qD pero no hay una definición disponible"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "la profundidad de instanciación de la plantilla excede el máximo de %d al instanciar %q+D, posiblemente de la generación de tabla virtual (use -ftemplate-depth= para incrementar el máximo)"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "parámetro que no es tipo plantilla inválido"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#T no es un tipo válido para un parámetro que no es tipo plantilla"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr "la deducción de una lista inicializadora encerrada entre llaves requiere #include <initializer_list>"
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr "se usó la variable %q#D con tipo %<auto%> en su propio inicializador"
@@ -33098,12 +33150,12 @@ msgstr "se usó la variable %q#D con tipo %<auto%> en su propio inicializador"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "no se puede deducir %qT de %qE"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr "deducción inconsistente para %qT: %qT y después %qT"
@@ -33295,7 +33347,7 @@ msgstr "uso inválido de %<this%> en el nivel principal"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "ámbito calificador inválido en el nombre del seudo-destructor"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "el tipo calificado %qT no coincide con el nombre del destructor ~%qT"
@@ -33335,441 +33387,441 @@ msgstr "la definición de %q#T dentro de la lista de parámetros de plantilla"
msgid "invalid definition of qualified type %qT"
msgstr "definición inválida del tipo calificado %qT"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "especificación de clase base inválida"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, gcc-internal-format
msgid "%qD is not captured"
msgstr "%qD no se capturó"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "uso de la variable %<auto%> desde la función contenedora"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr "uso de parámetro desde la función contenedora"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr " %q+#D se declaró aquí"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr "se usó el parámetro %qD fuera del cuerpo de la función"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "no se permite el parámetro de plantilla %qD de tipo %qT en una expresión integral constante porque no es de tipo integral o de enumeración"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "uso del espacio de nombres %qD como expresión"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "uso de la plantilla de clase %qT como expresión"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "la petición por el miembro %qD es ambigua en la red de herencia múltiple"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qD no puede aparecer en una expresion constante"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "el tipo de %qE es desconocido"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "%qT no es un tipo de enumeración"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, gcc-internal-format
msgid "Parameter pack __bases only valid in template declaration"
msgstr "Los paquetes de parámetros __bases sólo son válidos en la declaración de plantilla"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr "no se puede aplicar %<offsetof%> al destructor %<~%T%>"
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "no se puede aplicar %<offsetof%> a la función miembro %qD"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qD no es una variable en la cláusula %qs"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr "%qD aparece más de una vez en las cláusulas de datos"
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "%qD no es una variable en la cláusula %<firstprivate%>"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "%qD no es una variable en la cláusula %<lastprivate%>"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr "la expresión num_threads debe ser integral"
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr "la expresión schedule chunk size debe ser integral"
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "%qE tiene tipo de referencia para %qs"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr "%<threadprivate%> %qD no es un fichero, espacio de nombres o variable de ámbito de bloque"
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "la directiva %<threadprivate%> %qE no está en la definición %qT"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr "la diferencia entre %qE y %qD no tiene tipo entero"
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr "falló la aserción estática: %s"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "condición que no es constante para una aserción estática"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "el argumento para decltype debe ser una expresión"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "el tipo de declaración no puede resolver la dirección de la función sobrecargada"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr "__es_convertible_a"
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr "el tipo %qT de variable constexpr %qD no es literal"
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "tipo inválido del parámetro %d en la función constexpr %q+#D"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "tipo de devolución %qT inválido para la función constexpr %q+D"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr "%q#T tiene clases base virtuales"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr "el constructor constexpr no tiene cuerpo vacío"
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr "el constructor %<constexpr%> para union %qT debe inicializar exactamente un dato miembro que no es static"
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "miembro %qD sin inicializar en el constructor %<constexpr%>"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr "el cuerpo de la función constexpr %qD no es una declaración de devolución"
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%q+D no se puede usar como una función constexpr porque:"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "la expresión %qE no designa una función constexpr"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr "llamada a la función %qD que no es constexpr"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "se llamó %qD en una expresión constante"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, gcc-internal-format
msgid "%qD used before its definition"
msgstr "se usó %qD antes de su definición"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr "la llamada tiene una dependencia circular"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "la profundidad de evaluación de constexpr excede el máximo de %d (use -fconstexpr-depth= para incrementar el máximo)"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "%q+E no es una expresión constante"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, gcc-internal-format
msgid "array subscript out of bound"
msgstr "el subíndice de la matriz está fuera de los límites"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "%qE no es una expresión constante"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "%qD mutable no se puede usar en una expresión constante"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr "se accede al miembro %qD en lugar del miembro inicializado %qD en la expresión constante"
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "se accede al valor de %qE a través de glvalue %qT en una expresión constante"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "el valor de %qD no se puede usar en una expresión constante"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "se usó %qD en su propio inicializador"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, gcc-internal-format
msgid "%q#D is not const"
msgstr "%q#D no es const"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr "%q+#D es volatile"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "%qD no se inicializó con una expresion constante"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD no se declaró %<constexpr%>"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "%qD no tiene tipo integral o de enumeración"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr "uso del valor del objeto en construcción en una expresión constante"
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "temporal del tipo %qT que no es literal en una expresión constante"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "la expresión %qE no es una expresión constante"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "expresión %qE inesperada de género %s"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr "%qT no puede ser el tipo de una expresión constante completa porque tiene sub-objetos mutables"
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr "conversión del tipo puntero %qT al tipo aritmético %qT en una expresión constante"
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr "la expresión %qE tiene efectos colaterales"
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr "se llamó a una función miembro del objeto en construcción en una expresión constante"
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr "la dirección de un objeto %qE con hilo local o almacenamiento automático no es una expresión constante"
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr "la expresión id de tipo no es una expresión constante porque %qE es de tipo polimórfico"
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr "la diferencia de dos expresiones puntero no es una expresión constante"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "la expresión de comparación de punteros no es una expresión constante"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "la división entre cero no es una expresión constante"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, gcc-internal-format
msgid "non-constant array initialization"
msgstr "inicialización de una matriz que no es constante"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "AST inesperado de género %s"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "no se puede capturar %qE por referencia"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr "ya se capturó %qD en la expresión lambda"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "no se capturó %<this%> para esta función lambda"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "los calificadores %qV no se pueden aplicar a %qT"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "el atributo %qE sólo se puede aplicar a definiciones de clases Java"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "el atributo %qE sólo se puede aplicar a definiciones de clase"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE es obsoleto; las vtables de g++ ahora son compatibles con COM por defecto"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "la init_priority solicitada no es una constante entera"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "solo se puede usar el atributo %qE en definiciones de rango de fichero de objetos de tipo class"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "la init_priority solicitada está fuera de rango"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "la init_priority solicitada está reservada para uso interno"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "el atributo %qE no se admite en esta plataforma"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "revisión lang_*: falló en %s, en %s:%d"
@@ -33859,446 +33911,451 @@ msgstr "ISO C++ prohíbe la aplicación de %<__alignof%> a una expresión de tip
msgid "invalid use of non-static member function"
msgstr "uso inválido de una función miembro que no es static"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr "se toma la dirección de la matriz temporal"
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "conversión obsoleta de una constante de cadena a %qT"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "solicitud por el miembro %qD en %qE, el cual es de tipo puntero %qT (¿ Tal vez quiso utilizar %<->%> ?)"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "solicitud por el miembro %qD en %qE, el cual es del tipo %qT que no es clase"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "uso inválido del dato miembro no static %qE"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "acceso inválido a datos del miembro que no es static %qD del objeto NULL"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(tal vez se utilizó incorrectamente la macro %<offsetof%>)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "acceso inválido a datos del miembro que no es static %qD del objeto NULL"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "el tipo de objeto %qT no coincide con el nombre del destructor ~%qT"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "el tipo que se destruye es %qT, pero el destructor se refiere a %qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%> no es un miembro de %qT"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT no es una base de %qT"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD no tiene un miembro llamado %qE"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD no es una función plantilla miembro"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT no es de tipo puntero-a-objeto"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "uso inválido del índice de matriz en puntero a miembro"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "uso inválido del unario %<*%> en puntero a miembro"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "uso inválido de la conversión implícita en puntero a miembro"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "falta el subíndice en la referencia de la matriz"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ prohíbe el subíndice de una matriz que no sea l-valuada"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "se declaró el subíndice de la matriz como %<register%>"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "el valor indicado por el subíndice no es ni matriz ni puntero"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "falta un objeto en el uso de %qE"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ prohíbe la llamada %<::main%> dentro del mismo programa"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "se debe usar %<.*%> o %<->*%> en la llamada a la función puntero-a-miembro en %<%E (...)%>, p.e. %<(... ->* %E) (...)%>"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "no se puede usar %qE como una función"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "demasiados argumentos para el constructor %q#D"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "faltan argumentos para el constructor %q#D"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr "demasiados argumentos para la función miembro %q#D"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr "faltan argumentos para la función miembro %q#D"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr "demasiados argumentos para la función %q#D"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr "faltan argumentos para la función %q#D"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "demasiados argumentos para el método %q#D"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "faltan argumentos para el método %q#D"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "demasiados argumentos para la función"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "faltan argumentos para la función"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "el parámetro %P de %qD tiene el tipo incompleto %qT"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "el parámetro %P tiene el tipo incompleto %qT"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "se asume la conversión al tipo %qT desde la función sobrecargada"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "se usó NULL en la aritmética"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, gcc-internal-format
msgid "left rotate count is negative"
msgstr "la cuenta de rotación izquierda es negativa"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr "la cuenta de rotación derecha es negativa"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "la cuenta de rotación izquierda >= anchura del tipo"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "la cuenta de rotación derecha >= anchura del tipo"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "la comparación con una literal de cadena resulta en una conducta no especificada"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "la dirección de %qD nunca debe ser NULL"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ prohíbe la comparación entre puntero y entero"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "comparación sin orden en el argumento de coma no flotante"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "operadores inválidos de tipos %qT y %qT para el binario %qO"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ prohíbe el uso de un puntero de tipo %<void *%> en la sustracción"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ prohíbe el uso de un puntero a una función en la sustracción"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ prohíbe el uso de un puntero a un método en la sustracción"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "uso inválido de un puntero a un tipo incompleto en aritmética de punteros"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr "se toma la dirección del constructor %qE"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "se toma la dirección del destructor %qE"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "uso inválido de %qE para formar una función puntero a miembro"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr " se requiere un id calificado"
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "no se pueden usar paréntesis alrededor de %qE para formar una función-puntero-a-miembro"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ prohíbe tomar la dirección de una función miembro no estática sin calificar o entre paréntesis para formar un puntero a la función miembro. Como %<&%T::%D%>"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ prohíbe tomar la dirección de una función miembro limitada para formar un puntero a la función miembro. Como %<&%T::%D%>"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "se toma la dirección del temporal"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr "se toma la dirección de xvalue (referencia rvalue)"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ prohíbe tomar la dirección de la función %<::main%>"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ prohíbe tomar la dirección de una conversión a una expresión no l-valuada"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "no se puede crear un puntero al miembro referencia %qD"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ prohíbe incrementar un enum"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ prohíbe decrementar un enum"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "no se puede incrementar un puntero a un tipo incompleto %qT"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "no se puede decrementar un puntero a un tipo incompleto %qT"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ prohíbe incrementar un puntero de tipo %qT"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ prohíbe decrementar un puntero de tipo %qT"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "uso inválido de una expresión Booleana como operando para %<operator--%>"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "no se puede tomar la dirección de %<this%> que es una expresión r-valuada"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "se solicitó la dirección de la variable register explícita %qD"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "se solicitó la dirección de %qD, la cual se declaró como %<register%>"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "el inicializador de lista para el tipo que no es clase no debe estar entre paréntesis"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "se trata la lista de expresiones como una expresión compuesta en en inicializador"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "se trata la lista de expresiones como una expresión compuesta en el inicializador de memoria"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "se trata la lista de expresiones como una expresión compuesta en la conversión funcional"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "se trata la lista de expresiones como una expresión compuesta %s"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr "no hay contexto para resolver el tipo de %qE"
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "la conversión del tipo %qT al tipo %qT proscribe los calificadores"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "static_cast del tipo %qT al tipo %qT proscribe los calificadores"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "reinterpret_cast del tipo %qT al tipo %qT proscribe los calificadores"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "static_cast inválido del tipo %qT al tipo %qT"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "se convierte de %qT a %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "conversión inválida de una expresión r-valuada de tipo %qT al tipo %qT"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "la conversión de %qT a %qT pierde precisión"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "la conversión de %qT a %qT incrementa la alineación requerida del tipo del destino"
@@ -34307,221 +34364,221 @@ msgstr "la conversión de %qT a %qT incrementa la alineación requerida del tipo
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ prohíbe la conversión entre puntero a función y puntero a objeto"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "conversión inválida del tipo %qT al tipo %qT"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "uso inválido de const_cast con tipo %qT, que no es puntero, referencia, ni un tipo puntero-a-datos-miembro"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "uso inválido de const_cast con tipo %qT, el cual es un puntero o referencia a un tipo de función"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "const_cast inválido de un valor-r de tipo %qT al tipo %qT"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "const_cast inválido del tipo %qT al tipo %qT"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ prohíbe la conversión a un tipo de matriz %qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "conversión inválida al tipo de función %qT"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " en la evaluación de %<%Q(%#T, %#T)%>"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr "se asigna a una matriz desde una lista de inicializador"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "tipos incompatible en la asignación de %qT a %qT"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, gcc-internal-format
msgid "array used as initializer"
msgstr "se usó una matriz como inicializador"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, gcc-internal-format
msgid "invalid array assignment"
msgstr "asignación de matriz inválida"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " en la conversión del puntero a función miembro"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "puntero a la conversión miembro a través de la base virtual %qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " en la conversión del puntero a miembro"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "conversión inválida del tipo %qT a partir del tipo %qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "no se puede convertir %qT a %qT para el argumento %qP para %qD"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "no se puede convertir %qT a %qT en el argumento por defecto"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr "no se puede convertir %qT a %qT en el paso de argumentos"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr "no se puede convertir %qT a %qT"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr "no se puede convertir %qT a %qT en la inicialización"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr "no se puede convertir %qT a %qT en la devolución"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr "no se puede convertir %qT a %qT en la asignación"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "el parámetro %qP de %qD puede ser un candidato para un atributo de formato"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr "el parámetro puede ser un candidato para un atributo de formato"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "el objetivo de conversión puede ser un candidato para un atributo de formato"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr "el objetivo de inicialización puede ser un candidato para un atributo de formato"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "el lado izquierdo de la asignación puede ser un candidato para un atributo de formato"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "al pasar el argumento %P de %q+D"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "se devuelve la referencia al temporal"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "se devolvió una referencia a un valor que no es l-valor"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "se devolvió una referencia a la variable local %q+D"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "se devolvió la dirección de la variable local %q+D"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "se devuelve un valor de un destructor"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "no se puede regresar de un manejador de una función-intenta-bloque de un constructor"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "se devuelve un valor de un constructor"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "se deducen los tipos inconsistentes %qT y %qT para el tipo de devolución lambda"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "declaración return sin valores, en una función que devuelve %qT"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "declaración return con un valor, en una función que devuelve 'void'"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> no debe regresar NULL a menos que se declare %<throw()%> (o -fcheck-new esté en efecto)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr "se usa el temporal como l-valor"
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr "se usa xvalue (referencia a r-valor) como l-valor"
@@ -35057,7 +35114,7 @@ msgstr "El paso de iterador en %L no puede ser cero"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr "El número de elementos en el constructor de matriz en %L requiere un incremento del límite superior %d permitido. Vea la opción -fmax-array-constructor"
@@ -37209,27 +37266,27 @@ msgstr "Una función valuada como POINTER aparece en el lado derecho de la asign
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr "Extensión: se usa la literal BOZ en %L para inicializar la variable '%s' que no es entera"
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr "Extensión: la literal BOZ en %L está fuera de una declaración DATA y fuera de INT/REAL/DBLE/CMPLX"
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr "La literal BOZ en %L se transfiere por bits al símbolo '%s' que no es entero"
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Desborde aritmético por debajo del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check"
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Desborde aritmético del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check"
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "NaN aritmético del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check"
@@ -37439,42 +37496,42 @@ msgstr "Uno que no es POINTER en el contexto de asociación de puntero (%s) en %
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr "LOCK_TYPE en el contexto de definición variable (%s) en %L"
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr "Argumento dummy '%s' con INTENT(IN) en el contexto de asociación de puntero (%s) en %L"
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr "Argumento dummy '%s' con INTENT(IN) en el contexto de definición de variable (%s) en %L"
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "La variable '%s' es PROTECTED y no puede aparecer en un contexto de asociación de puntero (%s) en %L"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "La variable '%s' es PROTECTED y no puede aparecer en un contexto de definición variable (%s) en %L"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "La variable '%s' no puede aparecer en un contexto de definición variable (%s) en %L en el procedimiento PURE"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr "No se puede usar '%s' en %L asociado al objetivo con índice vectorial en un contexto de definición variable (%s)"
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr "No se puede usar '%s' en %L asociado a una expresión en un contexto de definición variable (%s)"
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr "El nombre asociado '%s' no puede aparecer en un contexto de definición variable (%s) en %L porque su obtetivo en %L tampoco puede aparecer"
@@ -37489,14 +37546,14 @@ msgstr "Tipo inesperado en truthvalue_conversion"
msgid "can't open input file: %s"
msgstr "no se puede abrir el fichero de entrada: %s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "Se crea una matriz temporal en %L"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "Se elimina la llamada a la función '%s' en %L"
@@ -37606,12 +37663,12 @@ msgstr "El primer argumento de la asignación definida en %L debe ser INTENT(OUT
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "El segundo argumento de la asignación definida en %L debe ser INTENT(IN)"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "El primer argumento de la interfaz de operador en %L debe ser INTENT(IN)"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "El segundo argumento de la interfaz de operador en %L debe ser INTENT(IN)"
@@ -39424,130 +39481,130 @@ msgstr "Error al escribir el fichero de módulos: %s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "La lista de nombres %s no se puede renombrar por asociación de USE a %s"
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr "'%s' del módulo '%s', importado en %C, es también el nombre de la unidad de programa actual"
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr "El símbolo '%s' referenciado en %L no se encontró en el módulo '%s'"
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr "El operador de usuario '%s' referenciado en %L no se encontró en el módulo '%s'"
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr "El operador intrínseco '%s' referenciado en %L no se encontró en el módulo '%s'"
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "No se puede abrir el fichero de módulo '%s' para escritura en %C: %s"
# El mensaje de error seguramente está mal redactado. cfuga
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "Error al escribir al fichero de módulo '%s' para escritura: %s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "No se puede borrar el fichero de módulo '%s': %s"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "No se puede renombrar el fichero de módulo '%s' a '%s': %s"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "No se puede borrar el fichero de módulo temporal '%s': %s"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr "El símbolo '%s' ya se había declarado"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "El símbolo '%s' referenciado en %L, no está en el módulo estándar"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr "El símbolo '%s' referenciado en %L no se encontró en el módulo intrínseco ISO_C_BINDING"
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr "El uso del módulo intrínseco '%s' en %C tiene conflictos con un nombre de módulo no intrínseco usado previamente"
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr "El uso de la constante nombrada NUMERIC_STORAGE_SIZE del módulo intrínseco ISO_FORTRAN_ENV en %L es incompatible con la opción %s"
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr "El uso de la constante nombrada NUMERIC_STORAGE_SIZE del módulo intrínseco ISO_FORTRAN_ENV en %C es incompatible con la opción %s"
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr "El símbolo '%s' referenciado en %L no se encontró en el módulo intrínseco ISO_FORTRAN_ENV"
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr "Fortran 2003: Módulo intrínseco ISO_FORTRAN_ENV en %C"
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Fortran 2003: Módulo ISO_C_BINDING en %C"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr "No se puede encontrar un módulo intrínseco llamado '%s' en %C"
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "No se puede abrir el fichero de módulo '%s' para lectura en %C: %s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr "El uso del módulo '%s' que no es intrínseco en %C tiene conflictos con el nombre del módulo intrínseco usado previamente"
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr "El fichero '%s' abierto en %C no es un fichero de módulo GFORTRAN"
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr "Error de decodificación al revisar la versión de módulo para el fichero '%s' abierto en %C"
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr "Versión de módulo '%s' errónea (se esperaba '%s) para el fichero '%s' abierto en %C"
# No se puede hacer el mismo juego de palabras que en inglés. cfuga
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "¡No se puede hacer USE del mismo módulo que estamos construyendo!"
@@ -39632,7 +39689,7 @@ msgstr "Basura inesperada después de la declaración $OMP BARRIER en %C"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "Basura inesperada después de la cláusula NOWAIT en %C"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "La cláusula IF en %L requiere una expresión LOGICAL escalar"
@@ -40951,7 +41008,7 @@ msgstr "El intrínseco '%s' declarado como INTRINSIC en %L no está disponible e
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr "El procedimiento que no es RECURSIVE '%s' en %L posiblemente se está llamando a sí mismo recursivamente. Declárelo RECURSIVE o utilice -frecursive"
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "La etiqueta %d referenciada en %L nunca se define"
@@ -41101,7 +41158,7 @@ msgstr "La función '%s' en %L es INTRINSIC pero no es compatible con un intrín
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "No se puede resolver la función específica '%s' en %L"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "La función '%s' en %L no es de tipo IMPLICIT"
@@ -41482,182 +41539,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "El objeto base para la llamada a procedimiento enlazada a tipo NOPASS en %L debe ser escalar"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr "No se encontró un enlace específico coincidente para la llamada al GENERIC '%s' en %L"
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr "'%s' en %L debe ser una SUBROUTINE"
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr "'%s' en %L debe ser una FUNCTION"
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s en %L debe ser un escalar"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr "Característica eliminada: %s en %L debe ser entero"
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s en %L debe ser INTEGER"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "La expresión de paso en el bucle DO en %L no puede ser cero"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr "El bucle DO en %L se ejecutará cero veces"
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "El nombre de índice FORALL en %L debe ser un INTEGER escalar"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "La expresión de inicio FORALL en %L debe ser un INTEGER escalar"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "La expresión de fin FORALL en %L debe ser un INTEGER escalar"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "La expresión de tranco FORALL en %L debe ser un %s escalar"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "La expresión de tranco FORALL en %L no puede ser cero"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "El índice FORALL '%s' no puede aparecer en la especificación triplet en %L"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr "El objeto de alojamiento en %L debe ser ALLOCATABLE o un POINTER"
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr "Objeto alojable coindizado en %L"
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr "La expresión fuente en %L debe ser escalar o tener el mismo rango que el objeto de alojamiento en %L"
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr "La expresión fuente en %L y el objeto de alojamiento en %L deben tener la misma forma"
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr "El tipo de entidad en %L es de tipo incompatible con la expresión fuente en %L"
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr "El objeto de alojamiento en %L y la expresión fuente en %L deben tener el mismo parámetro de tipo de género"
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr "La expresión fuente en %L no puede ser de tipo LOCK_TYPE ni tener un componente LOCK_TYPE si el objeto-alojado en %L es una comatriz"
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr "El alojamiento %s del tipo de base ABSTRACT en %L requiere una especificación de tipo o una expresión source"
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr "Alojar %s en %L con especificación de tipo requiere el mismo parámetro de longitud de carácter que el de la declaración"
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "Se requiere una especificación de matriz en la declaración ALLOCATE en %L"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Se requiere una especificación de comatriz en la declaración ALLOCATE en %L"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "Especificación de matriz errónea en la declaración ALLOCATE en %L"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr "'%s' no debe aparecer en la especificación de matriz en %L en la misma declaración ALLOCATE donde se aloja a sí misma"
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "Se esperaba '*' en la especificación de comatriz en la declaración ALLOCATE en %L"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "Especificación de comatriz errónea en la declaración ALLOCATE en %L"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "La variable stat en %L debe ser una variable INTEGER escalar"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "La variable stat en %L no no debe ser %sd dentro de la misma declaración %s"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr "ERRMSG en %L es inútil sin una etiqueta STAT"
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "La variable errmsg en %L debe ser una variable CHARACTER escalar"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr "La variable errmsg en %L no debe ser %sd dentro de la misma declaración %s"
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr "El objeto de alojamiento en %L también aparece en %L"
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr "El objeto de alojamiento en %L es un subobjeto del objeto en %L"
@@ -41666,175 +41723,175 @@ msgstr "El objeto de alojamiento en %L es un subobjeto del objeto en %L"
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr "La etiqueta CASE en %L se encima con la etiqueta CASE en %L"
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "La expresión en la declaración CASE en %L debe ser de tipo %s"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "La expresión en la declaración CASE en %L debe ser de género %d"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "La expresión en la declaración CASE en %L debe ser escalar"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr "La expresión de selección en una declaración GOTO computada en %L debe ser una expresión entera escalar"
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "El argumento de la declaración SELECT en %L no puede ser %s"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "La expresión en la declaración CASE en %L no está en el rango de %s"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr "El DEFAULT CASE en %L no puede tener después un segundo DEFAULT CASE en %L"
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr "No se permite un rango lógico en una declaración CASE en %L"
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr "Se repite un valor lógico constante en una declaración CASE en %L"
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr "La especificación de rango en %L nunca puede coincidir"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr "El bloque SELECT CASE lógico en %L tiene más de dos cases"
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr "Se usa el nombre asociado '%s' en %L como una matriz"
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "El selector debe ser polimórfico en la declaración SELECT TYPE en %L"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr "El tipo derivado '%s' en %L debe ser extensible"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "El tipo derivado '%s' en %L debe ser una extensión de '%s'"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr "Bloque CLASS IS doble en la declaración SELECT TYPE en %L"
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr "El NULL intrínseco en %L en la declaración de transferencia de datos requiere MOLD="
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr "El elemento de transferencia de datos en %L no puede ser polimórfico a menos que se procese con un procedimiento de entrada/salida definido"
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr "El elemento de transferencia de datos en %L no puede tener componentes POINTER a menos que se procese con un procedimiento de entrada/salida definido"
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr "El elemento de transferencia de datos en %L no puede tener componentes de puntero a procedimiento"
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr "El elemento de transferencia de datos en %L no puede tener componentes ALLOCATABLE a menos que se procese con un procedimiento de entrada/salida definido"
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr "El elemento de transferencia de datos en %L no puede tener componentes PRIVATE"
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr "El elemento de transferencia de datos en %L no puede ser una referencia completa a una matriz de tamaño asumido"
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "La variable lock en %L debe ser un escalar de tipo LOCK_TYPE"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "El argumento STAT= en %L debe ser una variable INTEGER escalar"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "El argumento ERRMSG= en %L debe ser una variable CHARACTER escalar"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "El argumento ACQUIRED_LOCK= en %L debe ser una variable LOGICAL escalar"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "El argumento de conjunto de imagen %L debe ser un escalar o una expresión INTEGER de rango 1"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "El argumento de conjunto de imagen en %L debe estar entre 1 y num_images()"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "La declaración en %L no es una declaración de objetivo de ramificación válida para la declaración de ramificación en %L"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr "La ramificación en %L puede resultar en un bucle infinito"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr "La declaración GOTO en %L deja la construcción CRITICAL por la etiqueta en %L"
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr "La declaración GOTO en %L deja la construcción DO CONCURRENT por la etiqueta en %L"
@@ -41842,950 +41899,950 @@ msgstr "La declaración GOTO en %L deja la construcción DO CONCURRENT por la et
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "La etiqueta en %L no está en el mismo bloque que la declaración GOTO en %L"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr "La máscara WHERE en %L tiene forma inconsistente"
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "El objetivo de asignación WHERE en %L tiene forma inconsistente"
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr "Asignación definida por el usuario de un no-ELEMENTAL en WHERE en %L"
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "Declaración sin soporte dentro de WHERE en %L"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "Asignación a una variable de índice FORALL en %L"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr "No se usa el FORALL con índice '%s' en el lado izquierdo de la asignación en %L y podría causar múltiples asignaciones a este objeto"
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr "Una construcción FORALL externa ya tiene un índice con este nombre %L"
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "la cláusula WHERE/ELSEWHERE en %L requiere una matriz LOGICAL"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr "Se truncará la expresión CHARACTER en la asignación (%d/%d) en %L"
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr "La expresión con coíndice en %L se asigna a una variable de tipo derivado con un componente POINTER en un procedimiento PURE"
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr "La variable impura en %L se asigna a una variable de tipo derivado con un componente POINTER en un procedimiento PURE (12.6)"
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "Asignación a una variable coindizada en %L en un procedimiento PURE"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr "La variable no debe ser polimórfica en la asignación intrínseca en %L - revise que hay una subrutina específica coincidente para el operador '='"
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr "La variable coindizada no debe tener un componente último alojable en la asignación en %L"
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "La declaración ASSIGNED GOTO en %L requiere una variable INTEGER"
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "La variable '%s' no se ha asignado a una etiqueta objetivo en %L"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "La declaración RETURN alternativa en %L requiere de un especificador de devolución SCALAR-INTEGER"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr "La declaración de ASSIGN en %L requiere una variable INTEGER escalar por defecto"
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr "La declaración IF aritmética en %L requiere una expresión numérica"
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr "La condición de salida del bucle DO WHILE en %L debe ser una expresión LOGICAL escalar"
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "La cláusula de máscara FORALL en %L requiere una expresión LOGICAL escalar"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr "La etiqueta enlazante '%s' para el bloque común '%s' en %L colisiona con la entidad global '%s' en %L"
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr "La etiqueta enlazante '%s' para el bloque común '%s' en %L no coincide con la etiqueta enlazante '%s' para el bloque común '%s' en %L"
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr "La etiqueta enlazante '%s' para el bloque común '%s' en %L colisiona con la entidad global '%s' en %L"
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr "La etiqueta enlazante '%s' en %L colisiona con la entidad global '%s' en %L"
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr "La etiqueta enlazante '%s' en el cuerpo de interfaz en %L colisiona con la entidad global '%s' en %L"
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr "La etiqueta enlazante '%s' en %L colisiona con la entidad global '%s' en %L"
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr "La variable CHARACTER en %L tiene longitud negativa %d, la longitud se estableció a cero"
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "La longitud de la cadena en %L es demasiado grande"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "La matriz allocatable '%s' en %L debe tener una forma diferida"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr "El objeto escalar '%s' en %L no puede ser ALLOCATABLE"
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "La matriz de puntero '%s' en %L debe tener una forma diferida"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "La matriz '%s' en %L no puede tener una forma diferida"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr "El tipo '%s' de la variable CLASS '%s' en %L no es extensible"
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr "La variable CLASS '%s' en %L debe ser dummy, allocatable o pointer"
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr "El tipo '%s' no se puede asociar al anfitrión en %L porque está bloqueado por un objeto incompatible del mismo nombre declarado en %L"
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr "Fortran 2008: SAVE implícito para la variable de módulo '%s' en %L, se necesita por la inicialización por defecto"
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "El módulo o la matriz del programa principal '%s' en %L deben tener una forma constante"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr "La entidad '%s' en %L tiene un parámetro de tipo diferido y requiere el atributo pointer o allocatable"
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr "La entidad con longitud de carácter asumida en %L debe ser un argumento de prueba o un PARAMETER"
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr "'%s' en %L debe tener longitud de cáracter constante en este contexto"
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "La variable COMMON '%s' en %L debe tener longitud de cáracter constante en este contexto"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "El allocatable '%s' en %L no puede tener un inicializador"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "El external '%s' en %L no puede tener un inicializador"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "El dummy '%s' en %L no puede tener un inicializador"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "El intrinsic '%s' en %L no puede tener un inicializador"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "El resultado de la función '%s' en %L no puede tener un inicializador"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "La matriz automática '%s' en %L no puede tener un inicializador"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr "La función de declaración valuada con carácter '%s' en %L debe tener longitud constante"
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: '%s' es de un tipo PRIVATE y no puede ser un argumento dummy de '%s', el cual es PUBLIC en %L"
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr "Fortran 2003: El procedimiento '%s' en la interfaz PUBLIC '%s' en %L toma argumentos dummy de '%s' el cual es PRIVATE"
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "La función '%s' en %L no puede tener un inicializador"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "El objeto external '%s' en %L puede no tener un inicializador"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "La función ELEMENTAL '%s' en %L debe tener un resultado escalar"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "La función de declaración '%s' en %L no debe tener atributo puntero o alojable"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "La función CHARACTER(*) '%s' en %L no puede ser matriz-valuada"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "La función CHARACTER(*) '%s' en %L no puede ser puntero-valuada"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "La función CHARACTER(*) '%s' en %L no puede ser pura"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr "La función CHARACTER(*) '%s' en %L no puede ser recursiva"
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "Característica obsoleta: función CHARACTER(*) '%s' en %L"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "El atributo PROCEDURE genera un conflicto con el atributo SAVE en '%s' en %L"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "El atributo PROCEDURE genera un conflicto con el atributo INTENT en '%s' en %L"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "El atributo PROCEDURE genera un conflicto con el atributo RESULT en '%s' en %L"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "El atributo EXTERNAL genera un conflicto con el atributo FUNCTION en '%s' en %L"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr "Al resultado del puntero de procedimiento '%s' en %L le falta el atributo puntero"
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr "El procedimiento FINAL '%s' en %L no debe ser una SUBROUTINE"
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "El procedimiento FINAL en %L debe tener exactamente un argumento"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "El argumento del procedimiento FINAL en %L debe ser de tipo '%s'"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "El argumento del procedimiento FINAL en %L no debe ser un POINTER"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "El argumento del procedimiento final en %L no debe ser ALLOCATABLE"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "El argumento del procedimiento FINAL en %L no debe ser OPTIONAL"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "El argumento del procedimiento FINAL en %L no debe ser INTENT(OUT)"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "El procedimiento FINAL que no es escalar en %L debe tener un argumento sharp asumido"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr "El procedimiento FINAL '%s' declarado en %L tiene el mismo rango (%d) que '%s'"
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr "Sólo se declaran procedimientos FINAL de matriz para el tipo derivado '%s' definido en %L, se sugiere también uno escalar"
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr "Aún no se admite la finalización en %L"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr "'%s' y '%s' no pueden ser FUNCTION/SUBROUTINE mezcladas para el GENERIC '%s' en %L"
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr "'%s' y '%s' para el GENERIC '%s' en %L son ambiguos"
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr "El enlace específico '%s' no está definido como objetivo del GENERIC '%s' en %L"
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr "El GENERIC '%s' en %L debe apuntar a un enlace específico, '%s' es GENERIC también"
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr "El GENERIC '%s' en %L no puede sobreescribir el enlace específico con el mismo nombre"
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr "El operador enlazado a tipo en %L no puede ser NOPASS"
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "'%s' debe ser un procedimiento de módulo o un procedimiento externo con una interfaz explícita en %L"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "El procedimiento '%s' con PASS(%s) en %L no tiene un argumento '%s'"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "El procedimiento '%s' con PASS en %L debe tener al menos un argumento"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr "Argumento dummy pasado como objeto no polimórfico de '%s' en %L"
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "El argumento '%s' de '%s' con PASS(%s) en %L debe ser del tipo derivado '%s'"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "El argumento dummy de objeto pasado de '%s' en %L debe ser escalar"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "El argumento dummy de objeto pasado de '%s' en %L no debe ser ALLOCATABLE"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "El argumento dummy de objeto pasado de '%s' en %L no debe ser POINTER"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "El procedimiento '%s' en %L tiene el mismo nombre que un componente de '%s'"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr "El procedimiento '%s' en %L tiene el mismo nombre que un componente heredado de '%s'"
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr "El tipo derivado '%s' declarado en %L debe ser ABSTRACT porque '%s' es DEFERRED y no se sobreescribió"
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr "Como al extender el tipo '%s' en %L tiene un componente de comatriz, el tipo padre '%s' también debe tener uno"
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr "El tipo derivado '%s' que no es extensible en %L no debe ser ABSTRACT"
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr "El componente de caractér de longitud diferida '%s' en %L aún no se admite"
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "El componente de comatriz '%s' en %L debe sel alojable con forma diferida"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr "El componente '%s' en %L de TYPE(C_PTR) o TYPE(C_FUNPTR) no debe ser una comatriz"
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr "El componenten '%s' en %L con componente comatriz debe ser un escalar que no sea puntero alojable"
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr "El componente '%s' en %L tiene el atributo CONTIGUOUS porque no es un puntero de matriz"
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr "La interfaz '%s', usada por el procedimiento de componente puntero '%s' en %L, se declara en una declaración PROCEDURE posterior"
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "La interfaz '%s' del procedimiento de componente puntero '%s' en %L debe ser explícita"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "El procedimiento de componente puntero '%s' con PASS(%s) en %L no tiene un argumento '%s'"
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "El procedimiento de componente puntero '%s' con PASS en %L debe tener al menos un argumento"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "El argumento '%s' de '%s' con PASS(%s) en %L debe ser del tipo derivado '%s'"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "El argumento '%s' de '%s' con PASS(%s) en %L debe ser escalar"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "El argumento '%s' de '%s' con PASS(%s) en %L no puede tener el atributo POINTER"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "El argumento '%s' de '%s' con PASS(%s) en %L no puede ser ALLOCATABLE"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "El componente '%s' de '%s' en %L tiene el mismo nombre que un procedimiento enlazado a tipo heredado"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr "La longitud de carácter del componente '%s' necesita ser una expresión de especificación constante en %L"
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr "El componente de carácter '%s' de '%s' en %L con longitud diferida debe ser POINTER o ALLOCATABLE"
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: el componente '%s' es un tipo PRIVATE y no puede ser un componente de '%s' el cual es PUBLIC en %L"
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr "El componente polimórfico %s en %L en SEQUENCE o de tipo BIND(C) %s"
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "El componente %s del tipo SEQUENCE declarado en %L no tiene el atributo SEQUENCE"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr "El componente puntero '%s' de '%s' en %L es de un tipo que no se ha declarado"
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "El componente '%s' con CLASS en %L debe ser allocatable o pointer"
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr "Fortran 2003: El nombre genérico '%s' de la función '%s' en %L tiene el mismo nombre que el tipo derivado en %L"
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "No se permite la matriz de tamaño asumido '%s' en la lista de nombres '%s' en %L"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr "Fortran 2003: Objeto de matriz NAMELIST '%s' con forma asumida en la lista de nombres '%s' en %L"
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr "Fortran 2003: El objeto de matriz NAMELIST '%s' con forma que no es constante en la lista de nombres '%s' en %L"
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr "Fortran 2003: El objeto de matriz NAMELIST '%s' con longitud de carácter que no es constante en la lista de nombres '%s' en %L"
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L es polimórfico y requiere un procedimiento de entrada/salida definido"
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr "Fortran 2003: El objeto NAMELIST '%s' en la lista de nombres '%s' en %L con componentes ALLOCATABLE o POINTER"
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L tiene componentes ALLOCATABLE o POINTER y por lo tanto requere un procedimiento de entrada/salida definido"
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr "El objeto NAMELIST '%s' se declaró PRIVATE y no puede ser miembro de una lista de nombres PUBLIC '%s' en %L"
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr "El objeto NAMELIST '%s' tiene componentes PRIVATE asociados a uso y no puede ser miembro de la lista de nombres '%s' en %L"
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr "El objeto NAMELIST '%s' tiene componentes PRIVATE y no puede ser un miembro de la lista de nombres PUBLIC '%s' en %L"
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "El atributo PROCEDURE genera un conflicto con el atributo NAMELIST en '%s' en %L"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "La matriz de parámetro '%s' en %L no puede ser automática ni de forma diferida"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr "El PARAMETER de tipo implícito '%s' en %L no coincide con un tipo IMPLICIT posterior"
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "Tipo derivado incompatible en PARAMETER en %L"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "El atributo PROTECTED genera un conflicto con el atributo EXTERNAL en %L"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "El atributo PROCEDURE genera un conflicto con el atributo PROTECTED en %L"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr "'%s' en %L tiene el atributo CONTIGUOUS pero no es un puntero de matriz o una matriz de forma asumida"
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "La matriz de tamaño asumido en %L debe ser un argumento de prueba"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "La matriz de forma asumida en %L debe ser un argumento de prueba"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "El símbolo en %L no es una variable DUMMY"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr "'%s' en %L no puede tener el atributo VALUE porque no es un argumento dummy"
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "La variable dummy de carácter '%s' en %L con atributo VALUE debe tener longitud constante"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr "La variable dummy de carácter interoperable con C '%s' en %L con atributo VALUE debe ser de longitud uno"
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr "El tipo derivado '%s' en %L es de tipo '%s', el cual no se ha definido"
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr "La variable '%s' en %L no puede ser BIND(C) porque no es un bloque COMMON ni se declaró en el ámbito de nivel de módulo"
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "Fortran 2003: La función PUBLIC %s '%s' en %L es de tipo derivado PRIVATE '%s'"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr "La variable %s en %L de tipo LOCK_TYPE o con un subcomponente de tipo LOCK_TYPE debe ser una comatriz"
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr "El argumento dummy INTENT(OUT) '%s' en %L es ASSUMED SIZE y por lo tanto no puede tener un inicializador por defecto"
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "El argumento dummy '%s' en %L de LOCK_TYPE no puede ser INTENT(OUT)"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "El resultado de la función '%s' en %L no puede ser una comatriz o tener un componente comatriz"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr "La variable '%s' en %L de TYPE(C_PTR) o TYPE(C_FUNPTR) no debe ser una comatriz"
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr "La variable '%s' en %L con componente de comatriz debe ser un escalar que no sea puntero alojable"
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr "La variable '%s' en %L es una comatriz y no es ALLOCATABLE, SAVE ni un argumento dummy"
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "La variable de comatriz '%s' en %L no debe tener codimensiones con forma diferida"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "La variable comatriz allocatable '%s' en %L debe tener forma diferida"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr "La variable '%s' en %L es INTENT(OUT) y por lo tanto no puede ser una comatriz allocatable o tener componentes comatriz"
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "No se permite la variable dummy comatriz '%s' en %L en el procedimiento BIND(C) '%s'"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr "No se guarda (SAVE) el threadprivate en %L"
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr "El elemento BLOCK DATA '%s' en %L debe estar en COMMON"
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr "La matriz DATA '%s' en %L se debe especificar en una declaración previa"
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "El elemento DATA '%s' en %L no puede tener un coíndice"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr "El elemento DATA '%s' en %L es un puntero y entonces debe ser una matriz completa"
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr "Sección de matriz no constante en %L en la declaración DATA"
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr "La declaración DATA en %L tiene más variables que valores"
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr "el inicio del bucle do implícito en %L no se puede simplificar a un valor constante"
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr "el final del bucle do implícito en %L no se puede simplificar a un valor constante"
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr "el paso del bucle do implícito en %L no se puede simplificar a un valor constante"
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr "La declaración DATA en %L tiene más valores que variables"
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "Se define la etiqueta %d en %L pero no se usa"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "Se define la etiqueta %d en %L pero no se puede usar"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr "La variable de tipo derivado '%s' en %L debe tener el atributo SEQUENCE para ser un objeto EQUIVALENCE"
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr "La variable de tipo derivado '%s' en %L no puede tener componentes ALLOCATABLE que sean un objeto EQUIVALENCE"
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr "La variable de tipo derivado '%s' en %L con inicializadores por defecto no puede ser un objeto EQUIVALENCE con una variable en COMMON"
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr "La variable de tipo derivado '%s' en %L con componente(s) de puntero no puede ser un objeto EQUIVALENCE"
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "Error sintáctico en la declaración EQUIVALENCE en %L"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr "Todos o ninguno de los objetos en el conjunto EQUIVALENCE en %L deben tener el atributo PROTECTED"
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr "El miembro de bloque común '%s' en %L no puede ser un objeto EQUIVALENCE en el procedimiento puro '%s'"
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "La constante nombrada '%s' en %L no puede ser un objeto EQUIVALENCE"
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr "La matriz '%s' en %L con límites que no son constantes no puede ser un objeto EQUIVALENCE"
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr "El componente de estructura '%s' en %L no puede ser un objeto EQUIVALENCE"
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "La subcadena en %L tiene longitud cero"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "Fortran 2003: La función PUBLIC '%s' en %L es de tipo derivado PRIVATE '%s'"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "ENTRY '%s' en %L no tiene tipo IMPLICIT"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "El procedimiento de operador de usuario '%s' en %L debe ser FUNCTION"
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr "El procedimiento de operador de usuario '%s' en %L no puede ser de longitud de carácter asumido"
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "El procedimiento de operador de usuario '%s' en %L debe tener al menos un argumento"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr "El primer argumento de la interfaz de operador en %L no puede ser opcional"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "El segundo argumento de la interfaz de operador en %L no puede ser opcional"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "La interfaz de operador en %L debe tener, cuando mucho, dos argumentos"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr "El procedimiento contenido '%s' en %L de un procedimiento PURE también debe ser PURE"
@@ -43395,17 +43452,17 @@ msgstr "Se sobreescriben los inicializadores desiguales en EQUIVALENCE en %L"
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr "La constante BOZ en %L es demasiado grande (%ld vs %ld bits)"
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr "Se crea una matriz temporal en %L para el argumento '%s'"
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "Posible bicho del frente: Tamaño de matriz diferido sin atributo pointer, allocatable o tipo derivado sin componentes allocatable."
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "tipo de expresión errónea durante la caminata (%d)"
@@ -43647,7 +43704,7 @@ msgstr "REAL(KIND=10) no está disponible para la opción -freal-8-real-16"
msgid "Array element size too big at %C"
msgstr "El tamaño del elemento de la matriz es demasiado grande en %C"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code(): Código de declaración erróneo"
@@ -43949,7 +44006,7 @@ msgstr "no se puede determinar el nombre del objetivo para la revisión de depen
msgid "internal error - invalid Utf8 name"
msgstr "error interno - nombre Utf8 inválido"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "basura al final de la cadena de firma"
@@ -45035,6 +45092,15 @@ msgstr "se descarta %<-fobjc-sjlj-exceptions%> por %<-fnext-runtime%> cuando %<-
msgid "creating selector for nonexistent method %qE"
msgstr "se crea un selector para el método %qE que no existe"
+#~ msgid "floating point constant truncated to integer"
+#~ msgstr "se truncó la constante de coma flotante a entero"
+
+#~ msgid "too many elements in composite literal"
+#~ msgstr "demasiados elementos en la literal compuesta"
+
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs parece ser un manejador de interrupciones mal escrito"
+
#~ msgid "Interpret any REAL(4) as a REAl(16)"
#~ msgstr "Interpreta cualquier REAL(4) como un REAL(16)"
@@ -45979,9 +46045,6 @@ msgstr "se crea un selector para el método %qE que no existe"
#~ msgid "mno-cygwin and mno-win32 are not compatible"
#~ msgstr "-mno-cygwin y -mno-win32 no son compatibles"
-#~ msgid "consider using `-pg' instead of `-p' with gprof(1) "
-#~ msgstr "considere usar `-pg' en lugar de `-p' con gprf(1) "
-
#~ msgid "`-mno-intel-syntax' is deprecated. Use `-masm=att' instead."
#~ msgstr "`-mno-intel-syntax' es obsoleto. Utilice `-masm=att' en su lugar."
@@ -48212,9 +48275,6 @@ msgstr "se crea un selector para el método %qE que no existe"
#~ msgid "Possible frontend bug: array constructor not expanded"
#~ msgstr "Posible bicho del frente: no se expandió el constructor de la matriz"
-#~ msgid "Function does not return a value"
-#~ msgstr "La función no devuelve un valor"
-
#~ msgid "Function return value not set"
#~ msgstr "La función devuelve un valor no establecido"
@@ -54496,9 +54556,6 @@ msgstr "se crea un selector para el método %qE que no existe"
#~ msgid "usage: %s [switches] input output"
#~ msgstr "modo de empleo: %s [interruptores] entrada salida"
-#~ msgid "-traditional and -ansi are mutually exclusive"
-#~ msgstr "-traditional y -ansi son mutuamente exclusivos"
-
#~ msgid "filename missing after -i option"
#~ msgstr "falta el nombre del fichero después de la opción -i"
diff --git a/gcc/po/fi.po b/gcc/po/fi.po
index 9d05ab86b92..a7447783581 100644
--- a/gcc/po/fi.po
+++ b/gcc/po/fi.po
@@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.5-b20091203\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2010-01-11 22:13+0200\n"
"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -35,7 +35,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<nimetön>"
@@ -44,18 +44,18 @@ msgstr "<nimetön>"
msgid "({anonymous})"
msgstr "({nimetön})"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
msgid "expected end of line"
msgstr "päättämätön muotoilumerkkijono"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr ""
@@ -63,17 +63,17 @@ msgstr ""
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr ""
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
msgid "expected %<,%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
@@ -84,19 +84,19 @@ msgstr "taulukon indeksin tyyppi on %<char%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
msgid "expected %<)%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
msgid "expected %<]%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
@@ -106,25 +106,25 @@ msgstr "taulukon indeksin tyyppi on %<char%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
msgid "expected %<}%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr ""
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
msgid "expected %<:%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, fuzzy, gcc-internal-format
msgid "expected %<while%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
@@ -134,39 +134,39 @@ msgstr "käytetty %<__thread%> ennen %<extern%>:a"
msgid "expected %<.%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
msgid "expected %<@end%>"
msgstr "vektoriylivuoto lausekkeessa"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
msgid "expected %<>%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, fuzzy, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr ""
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, fuzzy, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "%qs määrittää %<auto%>:n tiedostoalue-esittelyssä"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
msgid "expected %<[%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(nimetön)"
@@ -338,12 +338,12 @@ msgstr ""
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "liukulukuvakiota käytetty väärin"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr ""
@@ -1234,19 +1234,19 @@ msgstr ""
msgid " inlined from %qs"
msgstr ""
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "mahdollisia ikisilmukoita ei voi optimoida"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
@@ -1414,16 +1414,16 @@ msgid "this is the insn:"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr ""
@@ -2562,117 +2562,117 @@ msgstr "<paluuarvo>"
msgid "<unknown>"
msgstr "<tuntematon>"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "virheellinen %%H-arvo"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "virheellinen %%J-arvo"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "virheellinen %%r-arvo"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "virheellinen %%R-arvo"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "virheellinen %%N-arvo"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "virheellinen %%P-arvo"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "virheellinen %%h-arvo"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "virheellinen %%L-arvo"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "virheellinen %%m-arvo"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "virheellinen %%M-arvo"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "virheellinen %%U-arvo"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "virheellinen %%s-arvo"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "virheellinen %%C-arvo"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "virheellinen %%E-arvo"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr ""
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "virheellinen %%xn-koodi"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr ""
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr ""
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
msgid "Unsupported operand for code '%c'"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, fuzzy, c-format
msgid "invalid shift operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2680,83 +2680,83 @@ msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
msgid "invalid operand for code '%c'"
msgstr ""
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr ""
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "puuttuva operandi"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
msgid "function parameters cannot have __fp16 type"
msgstr "funktion paluuarvon tyyppi ei voi olla funktio"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
msgid "functions cannot return __fp16 type"
msgstr "funktio ei palauta merkkijonotyyppiä"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
msgid "operands to %T/%t must be reg + const_int:"
msgstr ""
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
msgid "bad address, not an I/O address:"
msgstr ""
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "requested alignment is not a constant"
msgid "bad address, not a constant:"
msgstr "pyydetty tasaus ei ole vakio"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr ""
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr ""
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr ""
@@ -2772,8 +2772,8 @@ msgstr ""
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2853,21 +2853,21 @@ msgstr ""
msgid "unrecognized address"
msgstr "tunnistamaton osoite"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr ""
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr ""
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr ""
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr ""
@@ -2875,7 +2875,7 @@ msgstr ""
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr ""
@@ -3004,72 +3004,72 @@ msgstr ""
msgid "bad output_condmove_single operand"
msgstr ""
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr ""
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr ""
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr ""
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr ""
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, c-format
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr ""
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr ""
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr ""
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr ""
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr ""
@@ -3098,37 +3098,37 @@ msgstr "DJGPP-ympäristömuuttuja viittaa puuttuvaan tiedostoon â€%sâ€"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "DJGPP-ympäristömuuttuja viittaa turmeltuneeseen tiedostoon â€%sâ€"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, c-format
msgid "invalid %%G mode"
msgstr "virheellinen %%G-tila"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: tuntematon koodi"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr ""
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
#, fuzzy
msgid "invalid conversion to %<__fpreg%>"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
#, fuzzy
msgid "invalid operation on %<__fpreg%>"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr ""
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "virheellinen %%p-arvo"
@@ -3209,7 +3209,7 @@ msgid "post-increment address is not a register"
msgstr ""
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr ""
@@ -3374,87 +3374,87 @@ msgstr ""
msgid "bad move"
msgstr ""
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, c-format
msgid "invalid %%c value"
msgstr "virheellinen %%c-arvo"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "virheellinen %%f-arvo"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "virheellinen %%F-arvo"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "virheellinen %%G-arvo"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "virheellinen %%j-koodi"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "virheellinen %%J-koodi"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "virheellinen %%k-arvo"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "virheellinen %%K-arvo"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "virheellinen %%O-arvo"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "virheellinen %%q-arvo"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "virheellinen %%S-arvo"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "virheellinen %%T-arvo"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "virheellinen %%u-arvo"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "virheellinen %%v-arvo"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "virheellinen %%x-arvo"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr ""
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "AltiVec-argumentti välitetty funktiolle, jolla ei ole prototyyppiä"
@@ -3553,60 +3553,60 @@ msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
msgid "invalid operand to %%S"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr ""
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr ""
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr ""
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr ""
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr ""
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr ""
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
msgid "invalid %%C operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
msgid "invalid %%D operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr ""
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr ""
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr ""
@@ -3631,7 +3631,7 @@ msgstr ""
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: tuntematon koodi"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr ""
@@ -3647,22 +3647,22 @@ msgstr ""
msgid "invalid %%H specifier"
msgstr "virheellinen %%L-koodi"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
msgid "invalid %%h operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
msgid "invalid %%I operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
msgid "invalid %%i operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
msgid "invalid %%j operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
@@ -3672,7 +3672,7 @@ msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
msgid "invalid %%%c operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
msgid "invalid %%N operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
@@ -3682,37 +3682,37 @@ msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
msgid "invalid operand for 'r' specifier"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
msgid "invalid %%H operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
msgid "invalid %%L operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
msgid "invalid %%M operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
msgid "invalid %%t operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
msgid "invalid %%t operand '"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
msgid "invalid %%r operand"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
@@ -3776,11 +3776,11 @@ msgstr ""
msgid "address offset not a constant"
msgstr ""
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "ehdokas 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "ehdokas 2:"
@@ -4008,7 +4008,7 @@ msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
msgid "candidates are:"
msgstr "ehdokkaat ovat:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid "candidate is:"
@@ -4064,51 +4064,51 @@ msgstr "muunnos tyypistä %2$qT tyypiksi %1$qT"
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "unaariselle miinus-operaatiolle annettu väärä tyyppiargumentti"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "unaariselle plus-operaatiolle annettu väärä tyyppiargumentti"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "bittikomplementille annettu väärä tyyppiargumentti"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "abs-funktiolle annettu väärä tyyppiargumentti"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "konjugaatiolle annettu väärä tyyppiargumentti"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
msgid "in argument to unary !"
msgstr "unaariselle plus-operaatiolle annettu väärä tyyppiargumentti"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
#, fuzzy
msgid "no pre-increment operator for type"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
#, fuzzy
msgid "no pre-decrement operator for type"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4373,7 +4373,7 @@ msgstr ""
msgid "Bad type in constant expression"
msgstr "ylivuoto vakiolausekkeessa"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr ""
@@ -4404,11 +4404,11 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr ""
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
#, fuzzy
msgid "pointer assignment"
msgstr "epäkelpo lvalue sijoituksessa"
@@ -4495,51 +4495,51 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
#| msgid "%qD is not a variable"
msgid "iterator variable"
msgstr "%qD ei ole muuttuja"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
msgid "End expression in DO loop"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
#, fuzzy
msgid "Step expression in DO loop"
msgstr "vektoriylivuoto lausekkeessa"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4548,7 +4548,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4618,7 +4618,7 @@ msgstr "Virheellinen funktion paluuarvo"
msgid "Memory allocation failed"
msgstr ""
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -4823,7 +4823,7 @@ msgstr ""
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -4880,6 +4880,10 @@ msgstr ""
msgid "static is not supported on TPF-OS"
msgstr ""
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr ""
@@ -4911,10 +4915,6 @@ msgstr "valitsimia -mbig-endian ja -mlittle-endian ei voi käyttää yhdessä"
msgid "no processor type specified for linking"
msgstr "%J ristiriitaiset tyyppimääreet %qD:lle"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran ei tue valitsinta -E ilman valitsinta -cpp"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr ""
@@ -4967,6 +4967,10 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr ""
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran ei tue valitsinta -E ilman valitsinta -cpp"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr ""
@@ -8104,6 +8108,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -10537,18 +10545,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
#| msgid "function declared %<noreturn%> has a %<return%> statement"
msgid "Functions which return values must end with return statements"
@@ -12087,271 +12107,280 @@ msgstr "Luo jaettu kirjasto"
msgid "Create a position independent executable"
msgstr ""
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
msgid "invalid use of type"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating constant truncated to zero"
-msgid "floating point constant truncated to integer"
-msgstr "liukulukuvakio katkaistu nollaksi"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr ""
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
msgid "expected numeric type"
msgstr "vektoriylivuoto lausekkeessa"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+msgid "expected boolean type"
+msgstr "vektoriylivuoto lausekkeessa"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
msgid "expected integer or boolean type"
msgstr "vektoriylivuoto lausekkeessa"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
msgid "invalid operand for unary %<&%>"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
msgid "expected pointer"
msgstr "vektoriylivuoto lausekkeessa"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in binary expression"
msgstr "yhteensopimattomat tyypin palautuksessa"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
#| msgid "size of array %qE has non-integer type"
msgid "shift of non-integer operand"
msgstr "taulukon %qE koko ei ole kokonaislukutyyppiä"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr ""
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
msgid "negative shift count"
msgstr ""
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "called object %qE is not a function"
msgid "object is not a method"
msgstr "kutsuttu objekti %qE ei ole funktio"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
#| msgid "argument %qD doesn%'t match prototype"
msgid "method type does not match object type"
msgstr "argumentti %qD ei sovi prototyyppiin"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
msgid "invalid use of %<...%> with builtin function"
msgstr "epäkelpo argumentti funktiolle %<__builtin_return_address%>"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "ei argumentteja"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
msgid "too many arguments"
msgstr "liikaa argumentteja funktiolle %s %q+#D"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
msgid "argument 1 must be a map"
msgstr "%<__builtin_expect%>-funktion toisen argumentin pitää olla vakio"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
msgid "invalid type for make function"
msgstr "epäkelpo tallennusluokka funktiolle %qs"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
msgid "bad size for make"
msgstr ""
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
msgid "too many arguments to make"
msgstr "liikaa argumentteja funktiolle %s %q+#D"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
msgid "argument must be array or slice or channel"
msgstr "%<__builtin_expect%>-funktion toisen argumentin pitää olla vakio"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
msgid "unsupported argument type to builtin function"
msgstr "epäkelpo argumentti funktiolle %<__builtin_return_address%>"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
msgid "argument must be channel"
msgstr "%<__builtin_expect%>-funktion toisen argumentin pitää olla vakio"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
msgid "argument must be a field reference"
msgstr "puhdistusargumentti ei ole tunniste"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
msgid "left argument must be a slice"
msgstr "puhdistusargumentti ei ole tunniste"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
msgid "first argument must be []byte"
msgstr "puhdistusargumentti ei ole tunniste"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
msgid "second argument must be slice or string"
msgstr "%<__builtin_expect%>-funktion toisen argumentin pitää olla vakio"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
msgid "argument 2 has invalid type"
msgstr "%Jparametrin %u tyyppi on void"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
msgid "argument must have complex type"
msgstr "%Jparametrilla %u in vaillinainen tyyppi"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
#| msgid "cleanup argument not an identifier"
msgid "complex arguments must have identical types"
msgstr "puhdistusargumentti ei ole tunniste"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
msgid "complex arguments must have floating-point type"
msgstr ""
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+msgid "invalid use of %<...%> with non-slice"
+msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
msgid "expected function"
msgstr "%qD esitelty extern-avainsanalla sisäkkäin"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible type for receiver"
msgstr "yhteensopimattomat tyypin palautuksessa"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of non-static member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "virheellinen ei-staattisen jäsenfunktion käyttö"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "number of arguments doesn%'t match prototype"
msgid "number of results does not match number of values"
msgstr "argumenttien määrä ei vastaa prototyyppiä"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible type for map index"
msgstr "yhteensopimattomat tyypin palautuksessa"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many expressions for struct"
msgstr "liian monta argumenttia muotoilulle"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "liian vähän argumentteja muotoilulle"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
msgid "invalid unsafe.Pointer conversion"
msgstr "void-lausekkeen epäkelpo käyttö"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "expected class name"
msgid "expected channel"
msgstr "odotettiin luokan nimeä"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
# XXX
#: go/gofrontend/statements.cc:590
#, fuzzy
@@ -12388,22 +12417,22 @@ msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
msgid "expected boolean expression"
msgstr "vektoriylivuoto lausekkeessa"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in send"
msgstr "yhteensopimattomat tyypin palautuksessa"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
#, fuzzy
msgid "invalid send on receive-only channel"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -12460,80 +12489,80 @@ msgstr "Varoita implisiittisistä muunnoksista"
msgid "cannot use type %s as type %s"
msgstr "ei voi muuntaa tyyppiä %qT tyypiksi %qT"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
msgid "different receiver types"
msgstr "epäkelpo osoitintila %qs"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "redefinition of parameter %q+D"
msgid "different number of parameters"
msgstr "parametri %q+D määritelty uudelleen"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "invalid parameter type %qT"
msgid "different parameter types"
msgstr "virheellinen parametrityyppi %qT"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s"
msgstr "funktiolle %2$qE annettu argumentin %1$d tyyppi on yhteensopimaton"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s (%s)"
msgstr "funktiolle %2$qE annettu argumentin %1$d tyyppi on yhteensopimaton"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "struct has no members"
msgid "type has no methods"
msgstr "structilla ei ole jäseniä"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
msgid "missing method %s%s%s"
msgstr "liikaa argumentteja funktiolle %s %q+#D"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -12600,7 +12629,7 @@ msgstr "%<__builtin_prefetch%>-funktion kolmannen argumentin pitää olla vakio"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "%<__builtin_prefetch%>-funktion kolmas argumentti on epäkelpo; käytetään nollaa"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "liian vähän argumentteja funktiolle %<va_start%>"
@@ -12622,7 +12651,7 @@ msgstr "(eli kannattaisi antaa %qT eikä %qT funktiolle %<va_arg%>)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "jos tämä koodi saavutetaan, ohjelma keskeytyy"
@@ -12704,7 +12733,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, fuzzy, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "epäkelpo argumentti funktiolle %<__builtin_frame_address%>"
@@ -12798,8 +12827,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "tyhjää arvoa ei jätetä huomioimatta, vaikka kuuluisi"
@@ -13077,7 +13106,7 @@ msgstr "%J%qD:n esittely varjostaa globaalia esittelyä"
msgid "declaration of %q+D shadows a previous local"
msgstr "%J%qD:n esittely varjostaa edellistä paikallista"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "%Jvarjostunut esittely on täällä"
@@ -13183,7 +13212,7 @@ msgstr "ylivuoto vakiolausekkeessa"
msgid "%qE defined as wrong kind of tag"
msgstr "%qE määritelty vääränlaisena tunnisteena"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
@@ -13306,7 +13335,7 @@ msgstr "parametri %qD on alustettu"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, fuzzy, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "muuttuvakokoista objektia ei voi alustaa"
@@ -13316,7 +13345,7 @@ msgstr "muuttuvakokoista objektia ei voi alustaa"
msgid "variable %qD has initializer but incomplete type"
msgstr "muuttujalla %qD on alustin, mutta vaillinainen tyyppi"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, fuzzy, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "%Javoimelle funktiolle %qD annettu attribuutti noinline"
@@ -13347,7 +13376,7 @@ msgstr "taulukon %q+D koko puuttuu"
msgid "zero or negative size array %q+D"
msgstr "nollan tai negatiivisen kokoinen taulukko %q+D"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, fuzzy, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "%Jmuuttujan %qD koko muistissa ei ole tunnettu"
@@ -13458,7 +13487,7 @@ msgstr "taulukon kokoa ei voida määrittää"
msgid "variable length array %qE is used"
msgstr "Varoita käyttämättömistä muuttujista"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -13544,7 +13573,7 @@ msgstr "tallennusluokka annettu parametrille %qs"
msgid "storage class specified for unnamed parameter"
msgstr "tallennusluokka annettu parametrille %qs"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "tallennusluokka annettu typenamelle"
@@ -13693,7 +13722,7 @@ msgstr "%qs esitelty taulukon palauttavan funktiona"
msgid "function definition has qualified void return type"
msgstr "funktion määrittely oikeuttaa tyhjän paluutyypin"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "tyyppimääreet jätetään huomiotta funktion paluutyypissä"
@@ -13804,7 +13833,7 @@ msgstr "ISO C kieltää const- ja volatile-funktiotyypit"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr ""
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "muuttuja tai kenttä %qE esitelty voidiksi"
@@ -14232,7 +14261,7 @@ msgstr "argumentti %qD ei sovi prototyyppiin"
msgid "argument %qD doesn%'t match prototype"
msgstr "argumentti %qD ei sovi prototyyppiin"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "ei palautuslausetta funktiossa, joka palauttaa ei-tyhjän"
@@ -14427,7 +14456,7 @@ msgstr "tunniste %qE on ristiriidassa C++:n varatun sanan kanssa"
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C kieltää tyhjät käännösyksiköt"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C ei salli ylimääräisiä %<;%>-merkkejä funktioiden ulkopuolella"
@@ -14437,7 +14466,7 @@ msgstr "ISO C ei salli ylimääräisiä %<;%>-merkkejä funktioiden ulkopuolella
msgid "unknown type name %qE"
msgstr "tuntematon konetila %qs"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, fuzzy, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "useita tallennuspaikkoja esittelymääritteissä"
@@ -14447,7 +14476,7 @@ msgstr "useita tallennuspaikkoja esittelymääritteissä"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "%Jlohkoattribuutteja ei tueta tälle kohteelle"
@@ -14467,7 +14496,7 @@ msgstr "%qs attribuuttia ei huomioida"
msgid "data definition has no type or storage class"
msgstr "datamäärittelyllä ei ole tyyppiä eikä tallennusluokkaa"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -14497,7 +14526,7 @@ msgstr "ISO C90 ei tue %<long long%> -tyyppiä"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 ei tue %<long long%> -tyyppiä"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "odotettiin merkkijonoliteraalia"
@@ -14526,18 +14555,18 @@ msgstr ""
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr ""
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "luetellun tyypin listan lopussa on pilkku"
@@ -14669,7 +14698,7 @@ msgstr "ISO C90 kieltää esittelyjen ja koodin sekoittamisen"
msgid "expected %<}%> before %<else%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -14698,17 +14727,17 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr ""
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "ehdotetaan aaltosulkeita tyhjän lohkon ympärille %<if%>-lauseessa"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "ehdotetaan aaltosulkeita tyhjän lohkon ympärille %<else%>-lauseessa"
@@ -14778,7 +14807,7 @@ msgstr "ISO C ei salli ylimääräisiä %<;%>-merkkejä funktioiden ulkopuolella
msgid "cannot take address of %qs"
msgstr "bittikentän %qD osoitetta ei voi ottaa"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, fuzzy, gcc-internal-format
msgid "expected expression"
msgstr "vektoriylivuoto lausekkeessa"
@@ -14821,263 +14850,263 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "%<__builtin_longjmp%>-fuktion toisen argumentin pitää olla 1"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments to function %<__builtin_next_arg%>"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "väärä määrä argumentteja funktiolle %<__builtin_next_arg%>"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, fuzzy, gcc-internal-format
msgid "compound literal has variable size"
msgstr "yhdysliteraalin koko on muuttuva"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 kieltää yhdysliteraalit"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "%qs määrittää %<auto%>:n tiedostoalue-esittelyssä"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "ylimääräinen puolipiste metodin määrittelyssä"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "useita tallennuspaikkoja esittelymääritteissä"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for %qs"
msgid "no type or storage class may be specified here,"
msgstr "tallennusluokka annettu %qs:lle"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, fuzzy, gcc-internal-format
#| msgid "<unknown operator>"
msgid "unknown property attribute"
msgstr "<tuntematon operaattori>"
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "puuttuva %<(%> ilmaisun %<#pragma pack%> jälkeen - jätetään huomiotta"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "puuttuva %<(%> ilmaisun %<#pragma pack%> jälkeen - jätetään huomiotta"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "%Jlohkoattribuuttia ei voi määrittää paikalliselle muuttujalle"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "%Jlohkoattribuuttia ei voi määrittää paikalliselle muuttujalle"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, fuzzy, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "väärinmuodostettu #pragma GCC pch_preprocess, jätetään huomiotta"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr ""
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "etumerkillisen ja etumerkittömän kokonaislukulausekkeen vertailu"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
msgid "expected integer expression"
msgstr "vektoriylivuoto lausekkeessa"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr ""
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs ei ole kelpo tulostetiedosto"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "junk at end of %<#pragma pack%>"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "roskaa ilmaisun %<#pragma pack%> lopussa"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr ""
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
msgid "for statement expected"
msgstr "ylivuoto vakiolausekkeessa"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "%qD esitelty extern-avainsanalla sisäkkäin"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, fuzzy, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "sisäkkäisessä funktiossa käytetty rekisterimuuttujaa %qD"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr "%qD ei ole muuttuja"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "automaattimuuttuja %qE ei voi olla %<threadprivate%>"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%Jparametrin %qD tyyppi on vaillinainen"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15087,7 +15116,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD on vaillinaista tyyppiä"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "void-lausekkeen epäkelpo käyttö"
@@ -15154,68 +15183,73 @@ msgid "function return types not compatible due to %<volatile%>"
msgstr "funktion paluuarvojen tyypit eivät ole yhteensopivia %<volatile%>:n takia"
# XXX
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "tyypillä %qT ei ole %qE-nimistä jäsentä"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "pyydetty jäsentä %qE jostakin, joka ei ole tietue tai unioni"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr ""
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "indeksoitu arvo ei ole taulukko eikä osoitin"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "taulukon indeksi ei ole kokonaisluku"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "indeksoitu arvo on osoitin funktioon"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr ""
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C kieltää %<register%>-taulukon indeksoinnin"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "kutsuttu objekti %qE ei ole funktio"
@@ -15223,377 +15257,377 @@ msgstr "kutsuttu objekti %qE ei ole funktio"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "funktiokutsu epäsopivan tyypin läpi"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "funktion määrittely oikeuttaa tyhjän paluutyypin"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "puhdistusargumentti ei ole tunniste"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "%<__builtin_longjmp%>-fuktion toisen argumentin pitää olla 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "liikaa argumentteja funktiolle %s %q+#D"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "liian monta argumenttia funktiolle %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid "%qD declared here"
msgid "declared here"
msgstr "%qD esitelty täällä"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "muodollisen parametrin %d tyyppi on vaillinainen"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan kokonaislukuna eikä liukulukuna prototyypin takia"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan kokonaislukuna eikä kompleksisena prototyypin takia"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan kompleksisena eikä liukulukuna prototyypin takia"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan liukulukuna eikä kokonaislukuna prototyypin takia"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan kompleksisena eikä kokonaislukuna prototyypin takia"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan liukulukuna eikä kompleksisena prototyypin takia"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan tyyppinä %<float%> eikä %<double%> prototyypin takia"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan kokonaislukuna eikä kompleksisena prototyypin takia"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan eri levyisenä prototyypin takia"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan etumerkittömänä prototyypin takia"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "funktion %2$qE argumentti %1$d annetaan etumerkillisenä prototyypin takia"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
#| msgid "conversion from %qT to %qT is ambiguous"
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "muunnos tyypistä %qT tyyppiin %qT on moniselitteinen"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "liian vähän argumentteja funktiolle %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "%J#pragma weak %qD -ilmaisun soveltaminen ensimmäisen käytön jälkeen käyttäytyy määrittelemättömästi"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "tyyppien %qT ja %qT välinen vertailu"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "vähennyslaskussa käytetty %<void *%>-tyyppistä osoitinta"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "vähennyslaskussa käytetty osoitinta funktioon"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C ei tue %<~%>-merkkiä kompleksikonjugaateissa"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "unaariselle huutomerkille annettu väärä tyyppiargumentti"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C ei tue kompleksityyppien %<++%>- ja %<--%>-operaatioita"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "lisäykselle annettu väärä tyyppiargumentti"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "vähennykselle annettu väärä tyyppiargumentti"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "tuntemattomaan tietueeseen osoittavan osoittimen kasvatus"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "tuntemattomaan tietueeseen osoittavan osoittimen vähennys"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr ""
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "kirjoitussuojatun sijainnin sijoitus"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "kirjoitussuojatun sijainnin kasvatus"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "kirjoitussuojatun sijainnin vähennys"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "bittikentän %qD osoitetta ei voi ottaa"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "sisäkkäisessä funktiossa käytetty globaalia rekisterimuuttujaa %qD"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "sisäkkäisessä funktiossa käytetty rekisterimuuttujaa %qD"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "halutaan globaalin rekisterimuuttujan %qD osoite"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "halutaan rekisterimuuttujan %qD osoite"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "ehtolausekkeessa ei-lvalue-taulukko"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C kieltää ehtolausekkeet, joissa on vain yksi tyhjä puoli"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "ehtolausekkeessa on osoitintyyppiristiriita"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C kieltää ehtolausekkeet %<void *%>-tyypin ja funktio-osoittimen välillä"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "ehtolausekkeessa on osoitintyyppiristiriita"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "ehtolausekkeessa on osoitin/kokonaislukutyyppiristiriita"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "pilkkulausekkeen vasemmalla operandilla ei ole vaikutusta"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
#| msgid "cast adds new qualifiers to function type"
msgid "cast adds %q#v qualifier to function type"
msgstr "tyyppimuunnos lisää funktiotyyppiin uusia määreitä"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "osoitinkohdetyypin määreitä häviää tyyppimuunnoksessa"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "tyyppimuunnos määrittää taulukkotyypin"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "tyyppimuunnos määrittää funktiotyypin"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C kieltää muuntamasta ei-skalaaria samaksi tyypiksi"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C kieltää muunnokset unionityyppeihin"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "unioniin kuulumattoman tyypin muunnos unionityypiksi"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "kohdetyypin vaatima tasaus kasvaa tyyppimuunnoksessa"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "tyyppimuunnos osoittimesta erikokoiseen kokonaislukuun"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "muunnos %qT-tyyppisestä funktiokutsusta yhteensopimattomaan tyyppiin %qT"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "tyyppimuunnos erikokoisesta kokonaisluvusta osoittimeksi"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C kieltää funktio-osoittimen muuntamisen objektiosoitintyypiksi"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C kieltää objektiosoittimen muuntamisen funktio-osoitintyypiksi"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -15605,699 +15639,699 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, fuzzy, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "muotoilu %q.*s edellyttää %<%T%s%>-tyyppiä, mutta %d. argumentin tyyppi on %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, fuzzy, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
#| msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "argumentin %d antaminen funktiolle %qE tekee kokonaisluvusta osoittimen ilman tyyppimuunnosta"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
#| msgid "assignment discards qualifiers from pointer target type"
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "sijoitus hylkää kohdeosoitintyypin määreitä"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
#| msgid "initialization discards qualifiers from pointer target type"
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "alustus hylkää kohdeosoitintyypin määreitä"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "sijoitus hylkää kohdeosoitintyypin määreitä"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
#| msgid "assignment discards qualifiers from pointer target type"
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "sijoitus hylkää kohdeosoitintyypin määreitä"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
#| msgid "initialization discards qualifiers from pointer target type"
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "alustus hylkää kohdeosoitintyypin määreitä"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
#| msgid "return discards qualifiers from pointer target type"
msgid "return discards %qv qualifier from pointer target type"
msgstr "palautus hylkää kohdeosoitintyypin määreitä"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C kieltää argumenttien muuntamisen unionityypiksi"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr ""
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "annettu yhteensopimatonta osoitintyyppiä oleva %d. argumentti funktiolle %qE"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr "tyyppimuunnos osoittimesta erikokoiseen kokonaislukuun"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "alustus yhteensopimattomasta osoitintyypistä"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, fuzzy, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, fuzzy, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, fuzzy, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C kieltää funktio-osoittimen ja %<void *%>-tyypin väliset sijoitukset"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C kieltää funktio-osoittimen ja %<void *%>-tyypin väliset alustukset"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C kieltää funktio-osoittimen ja %<void *%>-tyypin väliset palautukset"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr ""
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr ""
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr ""
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr ""
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "annettu yhteensopimatonta osoitintyyppiä oleva %d. argumentti funktiolle %qE"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "sijoitus yhteensopimattomasta osoitintyypistä"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "alustus yhteensopimattomasta osoitintyypistä"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "palautus yhteensopimattomasta osoitintyypistä"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr ""
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "argumentin %d antaminen funktiolle %qE tekee kokonaisluvusta osoittimen ilman tyyppimuunnosta"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "sijoituksessa tehdään osoitin kokonaisluvusta ilman tyyppimuunnosta"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "alustuksessa tehdään osoitin kokonaisluvusta ilman tyyppimuunnosta"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "palautuksessa tehdään osoitin kokonaisluvusta ilman tyyppimuunnosta"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "argumentin %d antaminen funktiolle %qE tekee kokonaisluvusta osoittimen ilman tyyppimuunnosta"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "sijoitus tekee osoittimesta kokonaisluvun ilman tyyppimuunnosta"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "alustus tekee osoittimesta kokonaisluvun ilman tyyppimuunnosta"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "palautus tekee osoittimesta kokonaisluvun ilman tyyppimuunnosta"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "funktiolle %2$qE annettu argumentin %1$d tyyppi on yhteensopimaton"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "yhteensopimattomat tyypit sijoituksessa"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "yhteensopimattomat tyypit alustuksessa"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "perinteinen C ei hyväksy automaattista koostealustusta"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(%qs:n alustuksen lähistöllä)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "taulukko alustetaan suluilla ympäröidystä merkkijonovakiosta"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "joustavan taulukkojäsenen alustus"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "merkkitaulukon alustus leveästä merkkijonosta"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "leveän merkkitaulukon alustus epäleveästä merkkijonosta"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "leveän merkkitaulukon alustus epäyhteensopivasta leveästä merkkijonosta"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "sopimattomasta tyypistä koostuva taulukko alustetaan merkkijonovakiosta"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "taulukko alustetaan muuttuvasta taulukkolausekkeesta"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "alustusalkio ei ole vakio"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "alustinalkio ei ole vakiolauseke"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "alustuselementtiä ei pystytä laskemaan latausajankohtana"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "epäkelpo alustin"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "läpinäkymättömiä vektorityyppejä ei voida alustaa"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "alustimen lopussa on ylimääräinen lohko"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "alustimen ympäriltä puuttuu aaltosulkeet"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "skalaarialustimen ympärillä on aaltosulkeet"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "joustavan taulukkojäsenen alustaminen sisäkkäisessä asiayhteydessä"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "puuttuva alustin"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "tyhjä skalaarialustin"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "skalaarialustimessa ylimääräisiä alkioita"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr ""
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr ""
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "taulukon koko ei ole kokonaislukutyyppinen vakiolauseke"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "ei-vakio taulukon indeksi alustimessa"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "taulukon indeksi alustimessa ylittää taulukon rajat"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr ""
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr ""
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr ""
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr ""
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr ""
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "%<noreturn%>-esitellyllä funktiolla on %<return%>-lause"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "%<return%> ilman arvoa ei-voidin palauttavassa funktiossa"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "%<return%> arvon kanssa voidin palauttavassa funktiossa"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "ISO C kieltää %<return%>:in lausekkeen kanssa voidin palauttavassa funktiossa"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "funktio palauttaa osoitteen paikalliseen muuttujaan"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr ""
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "case-nimiö ei ole kokonaislukutyyppinen vakiolauseke"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr ""
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "ehdotetaan aaltosulkeita epäselvän %<else%>n välttämiseksi"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break-lause silmukan tai switch-rakenteen ulkopuolella"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue-lause silmukan ulkopuolella"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, fuzzy, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "break-lause ei ole silmukan tai switch-lauseen sisässä"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "lauseella ei ole vaikutusta"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr ""
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "comparing vectors with different element types"
msgstr "Varoita eri enum-tyyppien vertailusta"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "liukulukujen vertailu operaattoreilla == ja != on epävarmaa"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr "osoittimen ja kokonaisluku nollan suuruusvertailu"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C kieltää %<void *%>:n ja funktio-osoittimen vertailun"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "osoittimen ja kokonaisluvun välinen vertailu"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C kieltää funktio-osoittimien suuruusvertailun"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "osoittimen ja kokonaisluku nollan suuruusvertailu"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "osoittimen ja kokonaisluku nollan suuruusvertailu"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "muunnos tyypistä %2$qT tyypiksi %1$qT"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "käytetty osoittimeksi muuntumatonta taulukkoa paikassa, jossa vaaditaan skalaari"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "käytetty tietuetyypin arvoa, vaikka vaaditaan skalaari"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "käytetty unionityypin arvoa, vaikka vaaditaan skalaari"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "käytetty tietuetyypin arvoa, vaikka vaaditaan skalaari"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr ""
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr ""
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr ""
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, fuzzy, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qs-attribuuttia ei huomioida %qs:lle"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -16307,7 +16341,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr ""
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, fuzzy, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "taulukon %qs koko on liian suuri"
@@ -17124,53 +17158,53 @@ msgstr "%s: ei voida avata COFF-tiedostona"
msgid "library lib%s not found"
msgstr "kirjastoa lib%s ei löytynyt"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "ei voi muuntaa osoitintyypiksi"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr ""
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr ""
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "can%'t convert between vector values of different size"
msgstr "tyyppimuunnos osoittimesta erikokoiseen kokonaislukuun"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "ei voi kirjoittaa tiedostoon %s: %m"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr ""
@@ -17326,7 +17360,7 @@ msgstr ""
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -17416,43 +17450,43 @@ msgstr ""
msgid "stack limits not supported on this target"
msgstr ""
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr "tallennusluokka annettu tietueen kentälle %qs"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr "tallennusluokka annettu tietueen kentälle %qs"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "sisäkkäisessä funktiossa käytetty globaalia rekisterimuuttujaa %qD"
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%Javoimelle funktiolle %qD annettu attribuutti noinline"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "%Javoimelle funktiolle %qD annettu attribuutti noinline"
@@ -17527,7 +17561,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -17537,7 +17571,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr "taulukon %qs koko on liian suuri"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr ""
@@ -17998,78 +18032,78 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "ei palautuslausetta funktiossa, joka palauttaa ei-tyhjän"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr ""
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "threadprivate variable %qE used in untied task"
msgstr "sisäkkäisessä funktiossa käytetty rekisterimuuttujaa %qD"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr "sisäkkäisessä funktiossa käytetty rekisterimuuttujaa %qD"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr "sisäkkäisessä funktiossa käytetty rekisterimuuttujaa %qD"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr "sisäkkäisessä funktiossa käytetty rekisterimuuttujaa %qD"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "%s: ei voida avata PCH-tiedostoa: %m\n"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "%s: ei voida avata PCH-tiedostoa: %m\n"
@@ -18126,7 +18160,7 @@ msgstr ""
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18267,48 +18301,48 @@ msgstr "kenttä %qs esitelty funktiona"
msgid "function %qD redeclared as variable"
msgstr "%Jsisäänrakennettu funktio %qD esitelty ei-funktiona"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -18417,7 +18451,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr ""
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
@@ -18775,9 +18809,9 @@ msgstr ""
msgid "can%'t use %qs as a fixed register"
msgstr ""
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr ""
@@ -18859,12 +18893,12 @@ msgstr ""
msgid "%<asm%> operand requires impossible reload"
msgstr ""
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr ""
@@ -19085,7 +19119,7 @@ msgstr ""
msgid "packed attribute is unnecessary"
msgstr ""
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr ""
@@ -19302,7 +19336,7 @@ msgstr "rajat määrittelemättömän taulukon epäkelpo käyttö"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19317,7 +19351,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr ""
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19332,7 +19366,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr ""
@@ -19368,615 +19402,615 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "%Jvanhanmallinen funktiomäärittely"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr ""
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, fuzzy, gcc-internal-format
msgid "invalid conditional operand"
msgstr "epäkelpo alustin"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr ""
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr ""
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "tyyppimuunnos osoittimesta erikokoiseen kokonaislukuun"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "virheellinen versionumero â€%sâ€"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr ""
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "epäkelpo tallennusluokka funktiolle %qs"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr ""
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "virheellinen versionumero â€%sâ€"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr "virheellinen versionumero â€%sâ€"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, fuzzy, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr "virheellinen versionumero â€%sâ€"
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "virheellinen versionumero â€%sâ€"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "epäkelpo totuusarvolauseke"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, fuzzy, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr "epäkelpo totuusarvolauseke"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr "epäkelpo totuusarvolauseke"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "bogus comparison result type"
msgstr "Varoita eri enum-tyyppien vertailusta"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "void-lausekkeen epäkelpo käyttö"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "void-lausekkeen epäkelpo käyttö"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "void-lausekkeen epäkelpo käyttö"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "yhteensopimattomat tyypit sijoituksessa"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, fuzzy, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, fuzzy, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr "yhteensopimattomat tyypit sijoituksessa"
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr "vektoriylivuoto lausekkeessa"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr "epäkelpo totuusarvolauseke"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "yhteensopimattomat tyypit sijoituksessa"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr ""
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "indeksoitu arvo ei ole taulukko eikä osoitin"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr "muotomerkkijonolla on epäkelpo operandinumero"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "virheellinen versionumero â€%sâ€"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "epäkelpo totuusarvolauseke"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
msgid "invalid PHI result"
msgstr "virheellinen %%H-arvo"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
msgid "missing PHI def"
msgstr "lopetusalkio puuttuu funktiokutsusta"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
msgid "invalid PHI argument"
msgstr "virheellinen %%H-arvo"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "yhteensopimattomat tyypit sijoituksessa"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, fuzzy, gcc-internal-format
msgid "verify_gimple failed"
msgstr "verify_flow_info epäonnistui"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr ""
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "ei-paikallinen nimiö "
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "nimiö "
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr ""
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr ""
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr ""
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "%<noreturn%>-funktio palauttaa ei-void-arvon"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "ei-void-tyyppisen funktion loppu saavutettu"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%qD:n paluuarvoa ei huomioida, esitelty attribuutilla warn_unused_result"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "attribuutilla warn_unused_result esitellyn funktion paluuarvoa ei huomioida"
@@ -20036,72 +20070,72 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr ""
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "funktiota %q+F ei voi koskaan kopioida, koska se vastaanottaa ei-paikallisen goton"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "funktiota %q+F ei voi koskaan kopioida, koska se tallentaa paikallisen nimiön osoitteen staattiseen muuttujaan"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska se käyttää avoimille funktioille sopimattomia attribuutteja"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska ne on poistettu käytöstä -fno-inline:lla"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska se käyttää avoimille funktioille sopimattomia attribuutteja"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska se käyttää avoimille funktioille sopimattomia attribuutteja"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska ne on poistettu käytöstä -fno-inline:lla"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska se käyttää avoimille funktioille sopimattomia attribuutteja"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska ne on poistettu käytöstä -fno-inline:lla"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska ne on poistettu käytöstä -fno-inline:lla"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "%Jfunktio %qF ei voi koskaan olla avoin, koska se käyttää avoimille funktioille sopimattomia attribuutteja"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr ""
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr ""
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr ""
@@ -20315,7 +20349,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr ""
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, gcc-internal-format
msgid "%qD was declared here"
msgstr "%qD esiteltiin täällä"
@@ -20375,52 +20409,52 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "taulukon indeksi ei ole kokonaisluku"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "taulukon indeksi ei ole kokonaisluku"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "taulukon indeksi ei ole kokonaisluku"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "vertailu on aina epätosi johtuen tietotyypin rajallisesta arvoalueesta"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "vertailu on aina tosi johtuen tietotyypin rajallisesta arvoalueesta"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -20430,22 +20464,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr "%J%qE-attribuutti soveltuu vain funktioihin"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr ""
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20460,140 +20494,140 @@ msgstr ""
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "%qE-attribuuttia ei huomioida"
-#: tree.c:5569
+#: tree.c:5570
#, fuzzy, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "%Javoimelle funktiolle %qD annettu attribuutti noinline"
-#: tree.c:5577
+#: tree.c:5578
#, fuzzy, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "funktion määrittely esitelty %<auto%>:ksi"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:5627
+#: tree.c:5628
#, fuzzy, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%J%qD esitelty uudelleen erityyppisenä symbolina"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "funktion paluuarvon tyyppi ei voi olla funktio"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr ""
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr ""
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
@@ -20643,148 +20677,153 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr ""
+
+#: varasm.c:322
#, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr ""
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, fuzzy, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "%Jtasausta ei voi määrittää %qD:lle"
-#: varasm.c:1207
+#: varasm.c:1213
#, fuzzy, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "epäkelpo osoitintila %qs"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr ""
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr ""
-#: varasm.c:1215
+#: varasm.c:1221
#, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr ""
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr ""
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr ""
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr ""
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr ""
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr ""
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr ""
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "alustamaton const-jäsen %qD"
-#: varasm.c:5224
+#: varasm.c:5261
#, fuzzy, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "%J%qD esitelty uudelleen ilman linkitystä"
-#: varasm.c:5226
+#: varasm.c:5263
#, fuzzy, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "%J%qD:n esittely varjostaa parametria"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5474
+#: varasm.c:5511
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "weakref ei ole tuettu tässä konfiguraatiossa"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
#| msgid "weakref is not supported in this configuration"
msgid "ifunc is not supported in this configuration"
msgstr "weakref ei ole tuettu tässä konfiguraatiossa"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "#pragma redefine_extname ei ole tuettu tällä kohteella"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr ""
@@ -20826,8 +20865,8 @@ msgstr "%qD ei ole määritelty funktion näkyvyysalueen ulkopuolella"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "merkkijonon pituudeksi annettu %1$qd merkkiä on suurempi kuin ISO C%3$d -kääntäjiltä vaadittu %2$qd merkkiä"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "ylivuoto vakiolausekkeessa"
@@ -21042,7 +21081,7 @@ msgstr "jäsenfunktio-osoitinta käytetty laskutoimituksessa"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "%qD:n osoite tulee aina olemaan %<true%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "ehdotetaan sulkeita totuusarvona käytetyn sijoituksen ympärille"
@@ -21457,41 +21496,41 @@ msgstr "%qs-attribuuttia ei huomioida %qs:lle"
msgid "invalid vector type for attribute %qE"
msgstr "epäkelpo vektorityyppi attribuutille %qs"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "vektorin komponenttien määrä ei ole kahden potenssi"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "ei-tyhjä attribuutti ilman argumentteja ei-prototyypissä"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "ei-tyhjällä argumentilla on epäkelpo operandinumero (argumentti %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "ei-tyhjällä argumentilla arvoalueen ylittävä operandinumero (argumentti %lu,operandi %lu)"
# XXX
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "ei-tyhjä argumentti viittaa ei-osoitinoperandiin (argumentti %lu, operandi %lu)"
@@ -21531,12 +21570,12 @@ msgstr "%qs-attribuutti tarvitsee prototyyppejä, joilla nimettyjä argumentteja
msgid "%qE attribute only applies to variadic functions"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "haluttu sijainti ei ole kokonaislukuvakio"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "haluttu sijainti on pienempi kuin nolla"
@@ -21591,7 +21630,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr ""
@@ -22342,83 +22381,83 @@ msgid "ignoring #pragma %s %s"
msgstr "jätetään #pragma %s %s huomiotta"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "odottamaton %<@%> ohjelmassa"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "odottamaton %qs ohjelmassa"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "loppumerkki %c puuttuu"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "odottamaton %qc ohjelmassa"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "odottamaton %<\\%o%> ohjelmassa"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "tämä desimaalivakio on etumerkitön vain ISO C90 -standardissa"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "tämä desimaalivakio olisi etumerkitön ISO C90 -standardissa"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for %qs type"
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "kokonaislukuvakio on liian suuri tyypille %qs"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr ""
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "liukulukuvakio ylittää %qT:n arvoalueen"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "liukulukuvakio katkaistu nollaksi"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, fuzzy, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "perinteinen C ei salli merkkijonovakioiden katenointia"
@@ -22438,7 +22477,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "epäkelpo vektorityyppi attribuutille %qs"
@@ -22448,22 +22487,22 @@ msgstr "epäkelpo vektorityyppi attribuutille %qs"
msgid "%qE is not initialized"
msgstr "parametri %qD on alustettu"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "epäkelpo alustin"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr "puuttuva kasvatuslauseke"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "virheellinen kasvatuslauseke"
@@ -23316,7 +23355,7 @@ msgstr ""
msgid "bad value %qs for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23493,53 +23532,53 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "attribuutti %qs pätee vain funktiotyyppeihin"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
msgid "argument must be a constant"
msgstr "%<__builtin_expect%>-funktion toisen argumentin pitää olla vakio"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr ""
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -23554,98 +23593,113 @@ msgstr ""
msgid "static variable %q+D is marked dllimport"
msgstr ""
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr ""
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr "â€-%câ€-valitsimelle on annettava argumentti"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr "funktio ei palauta merkkijonotyyppiä"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr ""
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr "%J%qD:n esittely varjostaa parametria"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr ""
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr ""
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, fuzzy, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr "ehtolausekkeessa on osoitintyyppiristiriita"
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, fuzzy, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr "ehtolausekkeessa on osoitintyyppiristiriita"
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr ""
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr ""
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "case label does not reduce to an integer constant"
msgid "%s expects a compile time integer constant"
msgstr "case-nimike ei pelkisty kokonaislukuvakioksi"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qs expects a constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -23767,70 +23821,70 @@ msgstr "void-lausekkeen epäkelpo käyttö"
msgid "internal error: bad register: %d"
msgstr ""
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "sisäinen virhe: sivuvaikutuskäsky vaikuttaa päävaikutukseen"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "tuntematon cc_attr-arvo"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr ""
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "<unknown>"
msgid "unknown src"
msgstr "<tuntematon>"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "<unknown operator>"
msgid "unknown dest"
msgstr "<tuntematon operaattori>"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr ""
@@ -23989,413 +24043,413 @@ msgstr "%s: ei voida avata PCH-tiedostoa: %m\n"
msgid "can%'t set position in PCH file: %m"
msgstr "%s: ei voida avata PCH-tiedostoa: %m\n"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %s does not support PIC mode"
msgid "code model %qs not supported in x32 mode"
msgstr "koodimalli %s ei tue PIC-tilaa"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "koodimalli %s ei tue PIC-tilaa"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "#pragma redefine_extname ei ole tuettu tällä kohteella"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr ""
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr ""
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "tyyppien %qT ja %qT välinen vertailu"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "säiekohtaista muistia ei tueta tälle kohteelle"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr ""
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr ""
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "%qs-attribuutti tarvitsee prototyyppejä, joilla nimettyjä argumentteja"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "%Jei voi asettaa %qE-attribuuttia määrittelyn jälkeen"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "%qs-attribuuttia ei huomioida ei-luokkatyypeille"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "ISO C kieltää sisäkkäiset funktiot"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "ISO C kieltää sisäkkäiset funktiot"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 does not support flexible array members"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "ISO C90 ei tue joustavia taulukon jäseniä"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, fuzzy, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "puhdistusargumentti ei ole tunniste"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "attribuutti %qs pätee vain funktiotyyppeihin"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "näkyvyysargumentti ei ole merkkijono"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "%qE-attribuuttia ei huomioida"
@@ -24465,19 +24519,19 @@ msgstr "%Jlohkoattribuuttia ei voi määrittää paikalliselle muuttujalle"
msgid "%qE attribute requires a string constant argument"
msgstr "%qs-attribuutti tarvitsee prototyyppejä, joilla nimettyjä argumentteja"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
msgid "version attribute is not a string"
msgstr "näkyvyysargumentti ei ole merkkijono"
@@ -24545,7 +24599,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "%Jlohkoattribuutteja ei tueta tälle kohteelle"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "haluttu sijainti ei ole kokonaislukuvakio"
@@ -24600,7 +24654,7 @@ msgstr "%Javoimelle funktiolle %qD annettu attribuutti noinline"
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr ""
@@ -25115,27 +25169,27 @@ msgstr ""
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr ""
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr ""
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr ""
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -25566,82 +25620,82 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr ""
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr "väärinmuodostettu #pragma GCC pch_preprocess, jätetään huomiotta"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: PCH file was invalid"
msgid "%s\"%s\"%s is invalid"
@@ -25696,12 +25750,12 @@ msgstr ""
msgid "-m64 not supported in this configuration"
msgstr ""
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 vaatii PowerPC64-suorittimen"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr ""
@@ -25718,64 +25772,64 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr ""
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr ""
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr ""
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr ""
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr ""
@@ -25885,53 +25939,53 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "%Jlohkoattribuutteja ei tueta tälle kohteelle"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "attribuutti %qs pätee vain funktiotyyppeihin"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "haluttu sijainti ei ole kokonaislukuvakio"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "haluttu sijainti ei ole kokonaislukuvakio"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -26283,39 +26337,39 @@ msgstr ""
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "%qs attribuuttia ei huomioida"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "%qs-attribuutti tarvitsee prototyyppejä, joilla nimettyjä argumentteja"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored"
msgid "%qE attribute has no effect"
msgstr "%qE-attribuuttia ei huomioida"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "epäkelpo vektorityyppi attribuutille %qs"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "attribuutti %qs pätee vain funktiotyyppeihin"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "epäkelpo vektorityyppi attribuutille %qs"
@@ -26331,7 +26385,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr "virheellinen muunnos tyypistä %qT tyypiksi %qT"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26619,7 +26673,7 @@ msgstr "virheellinen muunnos tyypistä %qT tyypiksi %qT"
msgid "invalid conversion from %qT to %qT"
msgstr "virheellinen muunnos tyypistä %qT tyypiksi %qT"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " alustettaessa funktion %2$qD argumenttia %1$P"
@@ -26629,191 +26683,191 @@ msgstr " alustettaessa funktion %2$qD argumenttia %1$P"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr " alustettaessa funktion %2$qD argumenttia %1$P"
# XXX
# %s on "initialization", jota EI VOI suomentaa tällä hetkellä.
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "ei voi muuntaa tyypistä %qT tyyppiin %qT (%s)"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr ""
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr ""
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr ""
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "%q#T-tyyppisiä epä-POD-objekteja ei voi välittää %<...%>:n kautta, ohjelma tulee keskeytymään ajettaessa"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "%q#T-tyyppisiä epä-POD-objekteja ei voi vastaanottaa %<...%>:n kautta, ohjelma tulee keskeytymään ajettaessa"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr ""
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr ""
-#: cp/call.c:6253
+#: cp/call.c:6257
#, fuzzy, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr ""
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr ""
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
msgid " in call to %q+D"
msgstr "%J%qD esitelty turhaan uudestaan"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr ""
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr ""
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr ""
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "jäsenfunktiota %qD ei voi kutsua ilman oliota"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr ""
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr ""
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr ""
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr ""
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++:n mukaan nämä ovat moniselitteisiä siitä huolimatta, että ensimmäisen huonoin muunnos on parempi kuin toisen huonoin:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "converting from %qT to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "muunnos tyypistä %qT tyyppiin %qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "virheellinen %qT-tyyppisen ei-const-viittauksen alustus %qT-tyyppisestä väliaikaisesta muuttujasta"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "virheellinen %qT-tyyppisen viittauksen alustus %qT-tyyppisestä lausekkeesta"
@@ -27025,222 +27079,222 @@ msgstr "kenttä %qs esitelty funktiona"
msgid "field %q+D invalidly declared method type"
msgstr "%Jparametri %qD esitelty tyhjällä tyypillä"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr ""
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr ""
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "luokalla %q#T on datajäseninä osoittimia"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " mutta ei ylikuormitusta %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " eikä %<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr ""
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr ""
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "%q+D-funktion paluuarvon tyyppi ei ole %<int%>"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q+T is not literal because:"
msgstr "%q#T ei ole luokka"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "Java class %qT cannot have an implicit non-trivial destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "Java-luokalla %qT ei voi olla implisiittistä epätriviaalia hajotinta"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr ""
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr ""
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr ""
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr ""
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "tyhjästä luokasta %qT perittyjen luokkien rakenne saattaa muuttua GCC:n tulevissa versioissa"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "%q#T uudelleenmääritelty"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "luokalla %q#T on virtuaalifunktioita ja käytettävissä oleva epävirtuaalinen hajotin"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class %qT does not have any field named %qD"
msgid "type transparent class %qT does not have any fields"
msgstr "luokalla %qT ei ole %qD-nimistä kenttää"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr "%<this%> ei ole käytettävissä staattisissa jäsenfunktioissa"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr ""
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr ""
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr ""
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr ""
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr ""
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr ""
@@ -27250,12 +27304,12 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr ""
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr ""
@@ -27276,7 +27330,7 @@ msgstr "ei voi muuntaa tyyppiä %qT tyypiksi %qT"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr ""
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "haluttu sijainti ei ole kokonaislukuvakio"
@@ -27307,7 +27361,7 @@ msgstr "virheellinen %qT-tyyppisen ei-const-viittauksen alustus %qT-tyyppisestä
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "muunnos tyypistä %qT tyyppiin %qT ei säilytä tyyppimääreitä"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr ""
@@ -27724,7 +27778,7 @@ msgstr "%J%qD:lle ei ole aiempaa esittelyä"
msgid "declaration of template %q#D"
msgstr ""
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, fuzzy, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "%J%qD:n lohko on ristiriidassa edellisen esittelyn kanssa"
@@ -27777,7 +27831,7 @@ msgstr "täällä olevan %q+D:n edellisen esittelyn kanssa"
msgid "%q+#D previously defined here"
msgstr "%q+#D määritelty aiemmin täällä"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "%Jviimeksi käytetty täällä"
@@ -27896,7 +27950,7 @@ msgstr "%J%qD esitelty säiekohtaisena, edellinen esittely ei säiekohtainen"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "%j%qD esitelty ei-säiekohtaisena, edellinen esittely säiekohtainen"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "%J%qD esitelty turhaan uudestaan"
@@ -27967,7 +28021,7 @@ msgstr ""
msgid "%qD is not a type"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr ""
@@ -28098,125 +28152,125 @@ msgstr "%qs:n esittelyssä tyyppi on oletuksena %<int%>"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%Hprototyypin esittely"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "attribute ignored in declaration of %q+#T"
msgid "attribute ignored in declaration of %q#T"
msgstr "attribuutti jätetty huomioimatta %q+#T:n esittelyssä"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, fuzzy, gcc-internal-format
#| msgid "attribute for %q+#T must follow the %qs keyword"
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "%q+#T:n attribuutin on oltava %qs-avainsanan perässä"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr ""
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD on alustettu (käytä __typeof__ sen sijaan)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr ""
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr ""
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr ""
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr ""
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr ""
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr ""
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "%J%qD:n esittely varjostaa parametria"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD esitelty viitteenä, mutta ei ole alustettu"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr ""
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr ""
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr ""
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr ""
@@ -28224,397 +28278,397 @@ msgstr ""
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "%Jmuuttujan %qD koko muistissa ei ole tunnettu"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "%Jmuuttujan %qD koko muistissa ei ole vakio"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr ""
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "alustamaton const %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr ""
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr ""
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr ""
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, fuzzy, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "skalaarialustimen ympärillä on aaltosulkeet"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, fuzzy, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "alustimen ympäriltä puuttuu aaltosulkeet"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "taulukon %qD alkioilla on vaillinainen tyyppi"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr ""
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "muuttuvakokoinen yhdysliteraali"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "%qD has an incomplete type"
msgid "%q#D has incomplete type"
msgstr "%qD on vaillinaista tyyppiä"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr ""
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr ""
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "sijoitus (ei alustus) esittelyssä"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr ""
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr ""
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, fuzzy, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "taulukko alustetaan muuttuvasta taulukkolausekkeesta"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr ""
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of %q+D"
msgid "initializer fails to determine size of %qT"
msgstr "alustin ei pysty päättelemään taulukon %q+D kokoa"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in %q+D"
msgid "array size missing in %qT"
msgstr "taulukon %q+D koko puuttuu"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids zero-size array %qE"
msgid "zero-size array %qT"
msgstr "ISO C kieltää nollan kokoisen taulukon %qE"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr "kenttä %qs esitelty funktiona"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "%q+D esitelty ei-parametrina"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr ""
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%q+D esitelty ei-parametrina"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "%q+D esitelty ei-parametrina"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "kenttä %qs esitelty funktiona"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "%q+D esitelty ei-parametrina"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr ""
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr "kenttä %qs esitelty funktiona"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "kenttä %qs esitelty funktiona"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr ""
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, fuzzy, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "kenttä %qs esitelty funktiona"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, fuzzy, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%qs esitelty funktion palauttavana funktiona"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr ""
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr ""
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr ""
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr ""
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "%J%qD esitelty uudelleen ilman linkitystä"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
msgid "literal operator with C linkage"
msgstr "%J%qD esitelty uudelleen ilman linkitystä"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "invalid IACC argument"
msgid "%qD has invalid argument list"
msgstr "virheellinen IACC-argumentti"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function"
msgid "%qD must be a non-member function"
msgstr "virheellinen ei-staattisen jäsenfunktion käyttö"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr ""
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "redefinition of typedef %q+D"
msgid "definition of explicitly-defaulted %q+D"
msgstr "typedef %q+D määritelty uudelleen"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D määritelty aiemmin täällä"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr ""
@@ -28623,897 +28677,897 @@ msgstr ""
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
# semi-fuzzy
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "ei-staattista datajäsentä %q+D käytetty virheellisesti"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "ISO C++ kieltää epäkokonaislukutyyppiä %2$qT olevan vakiojäsenen %1$qD alustamisen"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "ISO C++ kieltää epäkokonaislukutyyppiä %2$qT olevan vakiojäsenen %1$qD alustamisen"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr ""
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ kieltää epäkokonaislukutyyppiä %2$qT olevan vakiojäsenen %1$qD alustamisen"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "taulukon %qD koolla on epäkokonaislukutyyppi %qT"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "taulukon koolla on epäkokonaislukutyyppi %qT"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "taulukon %qD koko on negatiivinen"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "taulukon koko on negatiivinen"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ kieltää nollan kokoisen taulukon %qD"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ kieltää nollan kokoisen taulukon"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "taulukon %qD koko ei ole kokonaislukutyyppinen vakiolauseke"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "taulukon koko ei ole kokonaislukutyyppinen vakiolauseke"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ kieltää muuttuvakokoisen taulukon %qD"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ kieltää muuttuvakokoisen taulukon"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "taulukon koon ylivuoto"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
msgid "creating array of void"
msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "%qs esitelty funktiotaulukkona"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
msgid "creating array of functions"
msgstr "%qs esitelty funktiotaulukkona"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "%qs esitelty funktiotaulukkona"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
msgid "creating array of references"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "%qs esitelty funktiotaulukkona"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
msgid "creating array of function members"
msgstr "%qs esitelty funktiotaulukkona"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, fuzzy, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "moniulotteisen taulukon"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr ""
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "nimetön muuttuja tai kenttä esitelty voidiksi"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "muuttuja tai kenttä esitelty voidiksi"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "määrittelemättömän tyypin %<%s %s%> epäkelpo käyttö"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "määrittelemättömän tyypin %<%s %s%> epäkelpo käyttö"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "määrittelemättömän tyypin %<%s %s%> epäkelpo käyttö"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%qT ei ole luokka tai nimiavaruus"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "tyyppi %qT ei periydy %qT-tyypistä"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "%qD:n esittely ei-funktiona"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "%qD:n esittely ei-jäsenenä"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, fuzzy, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "funktion määrittely esitelty %<register%>:ksi"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "tyhjä esittely"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr "%J%qD:n esittely varjostaa parametria"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%Hprototyypin esittely"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr ""
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "%qs:n esittelyssä tyyppi on oletuksena %<int%>"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ kieltää muuttujan %qs esittelyn ilman tyyppiä"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "säiekohtaista muistia ei tueta tälle kohteelle"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ 1998 does not support %<long long%>"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ 1998 ei tue %<long long%> -tyyppiä"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "sekä %<signed%> että %<unsigned%> esittelymääritteissä"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, fuzzy, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "sekä %<signed%> että %<unsigned%> esittelymääritteissä"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long long%> on liian suuri GCC:lle"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "sekä %<long%> että %<short%> esittelymääritteissä"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "sekä %<long%> että %<short%> esittelymääritteissä"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr ""
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, fuzzy, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "sekä %<long%> että %<short%> esittelymääritteissä"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "sekä %<long%> että %<short%> esittelymääritteissä"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr ""
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr ""
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr ""
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "tallennusluokka annettu parametrille %qs"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "virtual luokan esittelyn ulkopuolella"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr ""
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "tallennusluokka annettu %qs:lle"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "tallennusluokka annettu parametrille %qs"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "sisäkkäinen funktio %qs esitelty %<extern%>:ksi"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr ""
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "funktioalue %qs implisiittisesti auto ja esitelty %<__thread%>:ksi"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs esitelty funktion palauttavana funktiona"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs esitelty taulukon palauttavan funktiona"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "hajotin ei voi olla staattinen jäsenfunktio"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, fuzzy, gcc-internal-format
#| msgid "destructor cannot be static member function"
msgid "constructor cannot be static member function"
msgstr "hajotin ei voi olla staattinen jäsenfunktio"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
#| msgid "constructors cannot be declared virtual"
msgid "constructors may not be cv-qualified"
msgstr "muodostimia ei voi esitellä virtuaalisiksi"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "muodostimia ei voi esitellä virtuaalisiksi"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "indeksoitu arvo on osoitin funktioon"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr ""
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "hajottimilla ei voi olla parametreja"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr ""
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr ""
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr ""
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "tyyppimuunnos lisää funktiotyyppiin uusia määreitä"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "tyyppimuunnos lisää funktiotyyppiin uusia määreitä"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, fuzzy, gcc-internal-format
#| msgid "both %<_Sat%> and %<complex%> in declaration specifiers"
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr "sekä %<_Sat%> että %<complex%> esittelymääritteissä"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, fuzzy, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "funktiota %<main%> ei voi määrittää avoimeksi"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "funktiota %<main%> ei voi määrittää avoimeksi"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr ""
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr ""
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "taulukon %qs koko on liian suuri"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "vain muodostimen esittely voi olla %<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr ""
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr ""
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr ""
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr ""
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr ""
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr ""
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr ""
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "%J%qD:n esittely varjostaa parametria"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "funktio %qD esitelty virtuaaliseksi unionissa"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr ""
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr "hajotin ei voi olla staattinen jäsenfunktio"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "%qD esitelty staattisesti sisäkkäin"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "kentällä %qD on vaillinainen tyyppi"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr ""
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr ""
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "%Jvanhanmallinen funktiomäärittely"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr ""
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "%qs-attribuuttia ei huomioida ei-luokkatyypeille"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "%qs-attribuuttia ei huomioida ei-luokkatyypeille"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr ""
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
#| msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "ei-muuttujan %qD esittely %<for%>-silmukan alkuesittelyssä"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs alustettu ja esitelty %<extern%>-avainsanalla"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs on sekä %<extern%> että alustin"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr ""
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr ""
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "tyyppimuunnettu argumentti %qD ei sovi prototyyppiin"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr ""
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "parametrin %q+D tyyppi on vaillinainen"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr ""
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr ""
@@ -29533,168 +29587,168 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr ""
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr ""
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ kieltää ?:-operaattorin ylikuormituksen"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr ""
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr ""
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr ""
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr ""
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr ""
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr ""
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr "%Hdatamäärittelyllä ei ole tyyppiä eikä tallennusluokkaa"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "%J%qD:n edellinen esittely oli täällä"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, fuzzy, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%J%qD:n edellinen esittely oli täällä"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -29706,88 +29760,88 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr ""
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr ""
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr ""
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr ""
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "%J%qD:lle ei ole aiempaa esittelyä"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr ""
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
msgid "previous definition here"
msgstr "%J%qD:n edellinen määrittely oli täällä"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -29796,73 +29850,73 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "luetellun tyypin jäsenen %qE arvo ei ole kokonaislukuvakio"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "luetellun tyypin jäsenen %qE arvo ei ole kokonaislukuvakio"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr ""
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, fuzzy, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "luetellun tyypin jäsenen %qE arvo ei ole kokonaislukuvakio"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr ""
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "palautustyyppi on vaillinainen tyyppi"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, fuzzy, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "%J%qD:lle ei ole aiempaa esittelyä"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
msgid "invalid function declaration"
msgstr "Varoita implisiittisistä funktioesittelyistä"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr ""
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label %q+D defined but not used"
msgid "parameter %q+D set but not used"
msgstr "nimike %q+D määritelty mutta käytettämättä"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr ""
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr ""
@@ -29902,7 +29956,7 @@ msgstr ""
msgid "deleting %qT is undefined"
msgstr ""
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr ""
@@ -30163,7 +30217,7 @@ msgstr ""
msgid "reference to %<%T::%D%> is ambiguous"
msgstr ""
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr ""
@@ -30470,7 +30524,7 @@ msgstr ""
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
@@ -30557,67 +30611,67 @@ msgstr ""
msgid "parenthesized initializer in array new"
msgstr "taulukon indeksi alustimessa ylittää taulukon rajat"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr ""
-#: cp/init.c:2891
+#: cp/init.c:2893
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr ""
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr ""
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr ""
@@ -30677,42 +30731,42 @@ msgstr ""
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr "varoitus: "
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -30799,58 +30853,58 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "%qD esitelty extern-avainsanalla sisäkkäin"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr ""
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
# XXX
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "%Hswitch-lauseesta puuttuu default-nimike"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "%J%qD:n lohko on ristiriidassa edellisen esittelyn kanssa"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+#D"
msgstr "%J%qD:lle ei ole aiempaa esittelyä"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr ""
@@ -30861,267 +30915,267 @@ msgstr ""
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, fuzzy, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "%qD esitelty staattisesti sisäkkäin"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "%J%qD esitelty uudelleen ilman linkitystä"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
msgid "due to different exception specifications"
msgstr "%qs esitelty funktion palauttavana funktiona"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr ""
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, fuzzy, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "%qD esitelty extern-avainsanalla sisäkkäin"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
#| msgid "nested extern declaration of %qD"
msgid "extern declaration of %q#D doesn%'t match"
msgstr "%qD esitelty extern-avainsanalla sisäkkäin"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, fuzzy, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "%qs-nimikkeen kaksoisesittely"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr ""
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr "%J%qD:n esittely varjostaa parametria"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr ""
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr ""
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr ""
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr ""
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr ""
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr ""
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, fuzzy, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(G++ hyväksyy koodin -fpermissive-valitsimella)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr ""
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr ""
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr ""
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, fuzzy, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "%J%qD:lle ei ole aiempaa esittelyä"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr ""
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr ""
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr ""
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr ""
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr ""
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr ""
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr ""
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr ""
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr ""
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, fuzzy, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "%qD esitelty staattisesti sisäkkäin"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "%qs-attribuutti tarvitsee prototyyppejä, joilla nimettyjä argumentteja"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr ""
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr ""
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, fuzzy, gcc-internal-format
#| msgid " %q+#D"
msgid " %qE"
msgstr " %q+#D"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -31238,7 +31292,7 @@ msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(mahdollisesti %qT:n määrittelyn perästä puuttuu puolipiste)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr ""
@@ -31259,7 +31313,7 @@ msgstr "%J%qD on tavallisesti ei-staattinen funktio"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "liukulukuylivuoto lausekkeessa"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -31415,124 +31469,124 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "tässä yhteydessä"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr ""
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "tyhjä esittely"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "säiekohtaista muistia ei tueta tälle kohteelle"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr ""
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
msgid "expected primary-expression"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, fuzzy, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%qD on esittelemättä tällä näkyvyysalueella"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "%Hdatamäärittelyllä ei ole tyyppiä eikä tallennusluokkaa"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, fuzzy, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "%qD on esittelemättä tällä näkyvyysalueella"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
msgid "expected id-expression"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, fuzzy, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "%qT ei ole luokka tai nimiavaruus"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr ""
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr ""
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "%Jcase-arvo %qs ei ole luetellussa tyypissä"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, fuzzy, gcc-internal-format
msgid "%qD is not a template"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "useita tallennuspaikkoja esittelymääritteissä"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in casts"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a %<typeid%> expression"
@@ -31540,607 +31594,607 @@ msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr ""
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr ""
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not allow extra %<;%> outside of a function"
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C ei salli ylimääräisiä %<;%>-merkkejä funktioiden ulkopuolella"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-expression"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-type-id"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "sulkumerkkien käyttö &&:n ympärillä on suositeltavaa ||:n sisällä"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr ""
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, fuzzy, gcc-internal-format
msgid "expected end of capture-list"
msgstr "päättämätön muotoilumerkkijono"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr ""
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "kirjoitussuojatun muuttujan %qD kasvatus"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%q+#D declared here"
msgstr "%q+D esitelty täällä"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "tallennusluokka annettu parametrille %qs"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
msgid "expected labeled-statement"
msgstr "tyhjä esittely"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, fuzzy, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "nimike yhdyslauseen lopussa"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr ""
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
msgid "expected selection-statement"
msgstr "tyhjä esittely"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in conditions"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "%Jparametrin %qD tyyppi on vaillinainen"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
msgid "expected iteration-statement"
msgstr "tyhjä esittely"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, fuzzy, gcc-internal-format
#| msgid "%<for%> loop initial declarations are only allowed in C99 mode"
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "%<for%>-silmukan alkuesittelyt ovat sallittuja vain C99-tilassa"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
msgid "expected jump-statement"
msgstr "tyhjä esittely"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "ylimääräinen %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr "%Jvanhanmallinen funktiomäärittely"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, fuzzy, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "funktion määrittely esitelty %<register%>:ksi"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "rajat määrittelemättömän taulukon epäkelpo käyttö"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<decltype%> expressions"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
msgid "only constructors take member initializers"
msgstr "skalaarialustimen ympärillä on aaltosulkeet"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "alustamaton const-jäsen %qD"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "%q+D esitelty staattisena, edellinen esittely ei-staattinen"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, fuzzy, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr "leveä merkkijonovakio %<asm%>-lauseessa"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "expected string literal"
msgid "expected suffix identifier"
msgstr "odotettiin merkkijonoliteraalia"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
msgid "expected operator"
msgstr "vektoriylivuoto lausekkeessa"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "strftime-muotoilut eivät voi muotoilla argumentteja"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "strftime-muotoilut eivät voi muotoilla argumentteja"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "strftime-muotoilut eivät voi muotoilla argumentteja"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
msgid "expected template-id"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
msgid "expected %<<%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr ""
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr ""
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr ""
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected template-name"
msgstr "odotettiin luokan nimeä"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, fuzzy, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "%Jsisäänrakennettu funktio %qD esitelty ei-funktiona"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, fuzzy, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr "%qs määrittää %<auto%>:n tiedostoalue-esittelyssä"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
msgid "expected template-argument"
msgstr "liian paljon argumentteja funktiolle %qs"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
#| msgid "invalid IACC argument"
msgid "invalid non-type template argument"
msgstr "virheellinen IACC-argumentti"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr ""
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr ""
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, fuzzy, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "%Hdatamäärittelyllä ei ole tyyppiä eikä tallennusluokkaa"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
msgid "expected type specifier"
msgstr "useita tallennuspaikkoja esittelymääritteissä"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
msgid "expected template-id for type"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected type-name"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "esittely %qD ei esittele mitään"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "%qs-attribuuttia ei huomioida ei-luokkatyypeille"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "%qs-attribuuttia ei huomioida ei-luokkatyypeille"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a namespace-name"
msgid "%qD is not an enumerator-name"
msgstr "%qD ei ole nimiavaruuden nimi"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr "%qs-attribuuttia ei huomioida ei-luokkatyypeille"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "%J%qD:n edellinen esittely oli täällä"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "%J%qD:n edellinen esittely oli täällä"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr ""
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD ei ole nimiavaruuden nimi"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected namespace-name"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "%<namespace%>-määrittely ei ole sallittu täällä"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr ""
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in alias template declarations"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
#| msgid "%<namespace%> definition is not allowed here"
msgid "a function-definition is not allowed here"
msgstr "%<namespace%>-määrittely ei ole sallittu täällä"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, fuzzy, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "%Jvanhanmallinen funktiomäärittely"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, fuzzy, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "%Jvanhanmallinen funktiomäärittely"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
msgid "expected initializer"
msgstr "epäkelpo alustin"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
msgid "invalid type in declaration"
msgstr "Varoita implisiittisistä funktioesittelyistä"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
msgid "initializer provided for function"
msgstr "indeksoitu arvo on osoitin funktioon"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr ""
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -32149,253 +32203,253 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
msgid "invalid declarator"
msgstr "Varoita implisiittisistä funktioesittelyistä"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
msgid "expected declarator"
msgstr "useita tallennuspaikkoja esittelymääritteissä"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD on nimiavaruus"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
msgid "expected ptr-operator"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "case-arvon kaksoiskappale"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr "case-arvon kaksoiskappale"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in template arguments"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
msgid "expected type-specifier"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in parameter types"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr ""
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr ""
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "strftime-muotoilut eivät voi muotoilla argumentteja"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "strftime-muotoilut eivät voi muotoilla argumentteja"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C90 ei tue joustavia taulukkojäseniä"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-name"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "Käytä AltiVec-käskyjä"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "Käytä AltiVec-käskyjä"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "%qD esitelty extern-avainsanalla sisäkkäin"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr ""
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "esittely ei esittele mitään"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "%qD esitelty staattisesti sisäkkäin"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr ""
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr ""
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "%Jsisäänrakennettu funktio %qD esitelty ei-funktiona"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, fuzzy, gcc-internal-format
msgid "could not resolve typename type"
msgstr "%s: ei voida avata PCH-tiedostoa: %m\n"
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, fuzzy, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "edellinen määrittely tyypille %q+#T"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-key"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, fuzzy, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "esittely ei esittele mitään"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, fuzzy, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "%Jvanhanmallinen funktiomäärittely"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr ""
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr "skalaarialustimen ympärillä on aaltosulkeet"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr ""
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in an exception-specification"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in exception-declarations"
msgstr "uusia tyyppejä ei voi määritellä paluutyypissä"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "%qD esitelty staattisesti sisäkkäin"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, fuzzy, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "%J%qD:n edellinen esittely oli täällä"
@@ -32404,323 +32458,323 @@ msgstr "%J%qD:n edellinen esittely oli täällä"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr ""
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, fuzzy, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "valitsin %qs ei ole enää tuettu"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, fuzzy, gcc-internal-format
msgid "template with C linkage"
msgstr "%J%qD esitelty uudelleen ilman linkitystä"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "Varoita implisiittisistä funktioesittelyistä"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "tyhjä esittely"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "%Hdatamäärittelyllä ei ole tyyppiä eikä tallennusluokkaa"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr ""
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "rajat määrittelemättömän taulukon epäkelpo käyttö"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected %<new%>"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
msgid "expected %<delete%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
msgid "expected %<return%>"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
msgid "expected %<extern%>"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected %<static_assert%>"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
msgid "expected %<operator%>"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected %<class%>"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
msgid "expected %<template%>"
msgstr "tyhjä esittely"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected %<namespace%>"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
msgid "expected %<using%>"
msgstr "leveä merkkijonovakio %<asm%>-lauseessa"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected %<asm%>"
msgstr "odotettiin luokan nimeä"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
msgid "expected %<try%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
msgid "expected %<catch%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
msgid "expected %<throw%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
msgid "expected %<@try%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr ""
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr ""
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
msgid "expected %<::%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr ""
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
msgid "expected %<*%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
msgid "expected %<~%>"
msgstr "taulukon indeksin tyyppi on %<char%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "käytetty %<__thread%> ennen %<extern%>:a"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr ""
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "%Jviimeksi käytetty täällä"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, fuzzy, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%J%qD esitelty uudelleen erityyppisenä symbolina"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
# XXX
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, fuzzy, gcc-internal-format
msgid "file ends in default argument"
msgstr "%Hswitch-lauseesta puuttuu default-nimike"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr "useita tallennuspaikkoja esittelymääritteissä"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "%Jlohkoattribuuttia ei voi määrittää paikalliselle muuttujalle"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "epäkelpo vektorityyppi attribuutille %qs"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr ""
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "%qs-attribuuttia ei huomioida %qs:lle"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
msgid "invalid type for property"
msgstr "void-lausekkeen epäkelpo käyttö"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "sisäkkäisessä funktiossa käytetty rekisterimuuttujaa %qD"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr ""
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "roskaa ilmaisun %<#pragma GCC pch_preprocess%> lopussa"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "moduulienvälisiä optimointeja ei ole toteutettu C++:lle"
@@ -32817,69 +32871,69 @@ msgstr ""
msgid "%qD is not a function template"
msgstr ""
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr ""
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr ""
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, fuzzy, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
@@ -32892,134 +32946,134 @@ msgstr "%J%qD on tavallisesti ei-staattinen funktio"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr ""
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr ""
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
msgid " <anonymous>"
msgstr "<nimetön>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, fuzzy, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "%J%qD esitelty turhaan uudestaan"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr ""
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "tyyppimuunnettu argumentti %qD ei sovi prototyyppiin"
msgstr[1] "tyyppimuunnettu argumentti %qD ei sovi prototyyppiin"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr ""
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr ""
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr ""
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr ""
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr ""
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "tallennusluokka annettu parametrille %qs"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr ""
@@ -33027,7 +33081,7 @@ msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr ""
@@ -33037,76 +33091,76 @@ msgstr ""
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr ""
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr ""
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr ""
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr ""
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr ""
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "tyyppimuunnettu argumentti %qD ei sovi prototyyppiin"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr ""
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr ""
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, fuzzy, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "%qs:n esittelyssä tyyppi on oletuksena %<int%>"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "%J%qD:n edellinen esittely oli täällä"
msgstr[1] "%J%qD:n edellinen esittely oli täällä"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "%J%qD:n edellinen esittely oli täällä"
msgstr[1] "%J%qD:n edellinen esittely oli täällä"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, fuzzy, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "%Juseita parametreja nimellä %qD"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr ""
@@ -33115,331 +33169,331 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr ""
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
msgid "original definition appeared here"
msgstr "funktion määrittely esitelty %<__thread%>:ksi"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr ""
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr "%Juseita parametreja nimellä %qD"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types %qT and %qT"
msgid " mismatched types %qT and %qT"
msgstr "tyyppien %qT ja %qT välinen vertailu"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, fuzzy, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr "strftime-muotoilut eivät voi muotoilla argumentteja"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "tyyppimuunnettu argumentti %qD ei sovi prototyyppiin"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr "%qs ei ole kelpo tulostetiedosto"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "ei voi muuntaa tyyppiä %qT tyypiksi %qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr ""
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type %qT is not derived from type %qT"
msgid " %qT is not derived from %qT"
msgstr "tyyppi %qT ei periydy %qT-tyypistä"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr "tyyppimuunnettu argumentti %qD ei sovi prototyyppiin"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr "liian paljon argumentteja funktiolle %qs"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr ""
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr ""
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr ""
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr ""
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr ""
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr ""
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr ""
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr ""
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr ""
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr ""
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "%J%qE-attribuutti soveltuu vain funktioihin"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " odotettiin %qT-tyyppistä vakiota, saatiin %qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr ""
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " odotettiin tyyppiä, saatiin %qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " odotettiin tyyppiä, saatiin %qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr ""
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr "muotoilu %q.*s edellyttää %<%T%s%>-tyyppiä, mutta %d. argumentin tyyppi on %qT"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "ehtolausekkeessa on tyyppiristiriita"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr ""
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "attribuutille %qs annettu väärä määrä argumentteja"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr ""
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr ""
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
msgid "%q#D is not a function template"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr ""
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, fuzzy, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "tyhjä esittely"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr ""
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr ""
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, fuzzy, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
@@ -33457,257 +33511,257 @@ msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr "muuttujalla %qD on funktiotyyppi"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "virheellinen parametrityyppi %qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "esittelyssä %q+D"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr ""
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr ""
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr ""
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr ""
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr ""
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr ""
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr ""
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr ""
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT ei ole luokka-, struct- eikä unionityyppi"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, fuzzy, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%Jcase-arvo %qs ei ole luetellussa tyypissä"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr ""
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr ""
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "void-lausekkeen epäkelpo käyttö"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr "%J%qD esitelty avoimeksi määrittelyn jälkeen"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT ei ole luokka eikä nimiavaruus"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD ei ole luokka eikä nimiavaruus"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, fuzzy, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "tyyppimuunnettu argumentti %qD ei sovi prototyyppiin"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr ""
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr ""
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr ""
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr ""
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr ""
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr ""
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ kieltää metodiosoittimen käytön vähennyslaskussa"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr ""
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "%qs:n esittely taulukollisena tyhjiä alkioita"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr ""
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr ""
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr ""
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr ""
@@ -33719,32 +33773,32 @@ msgstr ""
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr ""
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr ""
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "tyyppi %qT ei ole tyypin %qT kantatyyppi"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, fuzzy, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
@@ -33752,12 +33806,12 @@ msgstr "muuttuvakokoista objektia ei voi alustaa"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, fuzzy, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "ei voi emuloida %qs"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -33949,7 +34003,7 @@ msgstr ""
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
@@ -33989,450 +34043,450 @@ msgstr ""
msgid "invalid definition of qualified type %qT"
msgstr ""
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr ""
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
msgid "%qD is not captured"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr ""
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr ""
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr ""
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr ""
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr ""
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr ""
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "%Jcase-arvo %qs ei ole luetellussa tyypissä"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "useless type qualifier in empty declaration"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "tarpeeton tyyppimääre tyhjässä esittelyssä"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr ""
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr ""
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "halutaan rekisterimuuttujan %qD osoite"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "halutaan rekisterimuuttujan %qD osoite"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr ""
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "%Jparametrin %qD tyyppi on vaillinainen"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr "verify_flow_info epäonnistui"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "%J%qD esitelty ei-staattisena, edellinen esittely staattinen"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "ylivuoto vakiolausekkeessa"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "epäkelpo tallennusluokka funktiolle %qs"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "epäkelpo tallennusluokka funktiolle %qs"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q#T has virtual base classes"
msgstr "%q#T ei ole luokka"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "alustamaton const %qD"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, fuzzy, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "esittely ei esittele mitään"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr "Funktio %qs:"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "ylivuoto vakiolausekkeessa"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
msgid "%qD used before its definition"
msgstr "%J%qD käytössä ilman prototyyppiä ennen määrittelyänsä"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
#| msgid "protocol %qE has circular dependency"
msgid "call has circular dependency"
msgstr "protokollalla %qE on kehäriippuvuus"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr ""
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "ylivuoto vakiolausekkeessa"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
msgid "array subscript out of bound"
msgstr "taulukon indeksi ei ole kokonaisluku"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "ylivuoto vakiolausekkeessa"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "luetellun tyypin jäsenen %qE arvo ei ole kokonaislukuvakio"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, fuzzy, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr "taulukon koko ei ole kokonaislukutyyppinen vakiolauseke"
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, fuzzy, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "luetellun tyypin jäsenen %qE arvo ei ole kokonaislukuvakio"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "luetellun tyypin jäsenen %qE arvo ei ole kokonaislukuvakio"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "parametri %qD on alustettu"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
msgid "%q#D is not const"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
msgid "%q#D is volatile"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "%qD was not initialized with a constant expression"
msgstr "alustinalkio ei ole vakiolauseke"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "%Jparametri %qD esitelty %<inline%>:ksi"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "%J%qD on tavallisesti ei-staattinen funktio"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, fuzzy, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr "luetellun tyypin jäsenen %qE arvo ei ole kokonaislukuvakio"
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "ylivuoto vakiolausekkeessa"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
#| msgid "size of array %qD is not an integral constant-expression"
msgid "expression %qE is not a constant-expression"
msgstr "taulukon %qD koko ei ole kokonaislukutyyppinen vakiolauseke"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "alustinalkio ei ole vakiolauseke"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "pointer comparison expression is not a constant expression"
msgstr "alustinalkio ei ole vakiolauseke"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "division by zero is not a constant-expression"
msgstr "alustinalkio ei ole vakiolauseke"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "ei-vakio taulukon indeksi alustimessa"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "vektoriylivuoto lausekkeessa"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr ""
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, fuzzy, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr "epäkelvot operandit binääriselle %s-operaatiolle"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "%<this%> ei ole käytettävissä staattisissa jäsenfunktioissa"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE on vanhentunut; g++:n vtable'it ovat nyt oletusarvoisesti COM-yhteensopivia"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr ""
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -34522,454 +34576,459 @@ msgstr ""
msgid "invalid use of non-static member function"
msgstr "virheellinen ei-staattisen jäsenfunktion käyttö"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr "bittikentän %qD osoitetta ei voi ottaa"
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "vanhentunut tyyppimuunnos merkkijonovakiosta tyyppiin %qT"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr ""
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr ""
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr ""
# semi-fuzzy
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ei-staattista datajäsentä %q+D käytetty virheellisesti"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "prototyypille %q#D ei ole vastinetta luokassa %qT"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr ""
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr ""
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr ""
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr ""
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr ""
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
#| msgid "invalid use of flexible array member"
msgid "invalid use of array indexing on pointer to member"
msgstr "joustavien taulukkoalkioiden epäkelpo käyttö"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "epäkelpo %<restrict%>-avainsanan käyttö"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr ""
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr ""
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "indeksoitu arvo ei ole taulukko eikä osoitin"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr ""
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ kieltää %<::main%>-funktion kutsumisen ohjelmasta"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr ""
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "liikaa argumentteja funktiolle %s %q+#D"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qE"
msgid "too few arguments to constructor %q#D"
msgstr "liian vähän argumentteja funktiolle %qE"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to member function %q#D"
msgstr "liian monta argumenttia funktiolle %qE"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qE"
msgid "too few arguments to member function %q#D"
msgstr "liian vähän argumentteja funktiolle %qE"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to function %q#D"
msgstr "liian monta argumenttia funktiolle %qE"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qE"
msgid "too few arguments to function %q#D"
msgstr "liian vähän argumentteja funktiolle %qE"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "liikaa argumentteja funktiolle %s %q+#D"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "liian vähän argumentteja funktiolle %qE"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "liikaa argumentteja funktiolle"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "liian vähän argumentteja funktiolle"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "%2$qD:n parametrilla %1$P on vaillinainen tyyppi %3$qT"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr ""
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL-arvon käyttö laskutoimituksessa"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
msgid "left rotate count is negative"
msgstr "taulukon %qs koko on negatiivinen"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr ""
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "%J#pragma weak %qD -ilmaisun soveltaminen ensimmäisen käytön jälkeen käyttäytyy määrittelemättömästi"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "%qD:n osoite ei tule koskaan olemaan NULL"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ kieltää osoittimen ja kokonaisluvun vertailun"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr ""
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ kieltää %<void *%>-tyyppisen osoittimen käytön vähennyslaskussa"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ kieltää funktio-osoittimen käytön vähennyslaskussa"
# semi-fuzzy; onko metodi tässä luokan jäsenfunktio ja yllä muu funktio?
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ kieltää metodiosoittimen käytön vähennyslaskussa"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr "bittikentän %qD osoitetta ei voi ottaa"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "bittikentän %qD osoitetta ei voi ottaa"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr ""
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ kieltää %<::main%>-funktion osoitteen ottamisen"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr ""
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ kieltää enumin lisäyksen"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ kieltää enumin vähentämisen"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "parametrilla %P on vaillinainen tyyppi %qT"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ kieltää %qT-tyyppisen osoittimen kasvattamisen"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ kieltää %qT-tyyppisen osoittimen vähentämisen"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr ""
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr ""
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr ""
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr ""
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr ""
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr ""
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "virheellinen const_cast tyypistä %qT tyyppiin %qT"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "virheellinen const_cast tyypistä %qT tyyppiin %qT"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "virheellinen const_cast tyypistä %qT tyyppiin %qT"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "muunnos tyypistä %qT tyyppiin %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "muunnoksessa tyypistä %qT tyyppiin %qT menetetään tarkkuutta"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr ""
@@ -34978,98 +35037,98 @@ msgstr ""
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ kieltää tyyppimuunnoksen funktio-osoittimen ja olio-osoittimen välillä"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "virheellinen muunnos tyypistä %qT tyyppiin %qT"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr ""
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "virheellinen const_cast tyypistä %qT tyyppiin %qT"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr ""
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr ""
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "ei-vakio taulukon indeksi alustimessa"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr ""
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
msgid "array used as initializer"
msgstr "skalaarialustimen ympärillä on aaltosulkeet"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
msgid "invalid array assignment"
msgstr "epäkelpo lvalue sijoituksessa"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr ""
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr ""
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "ei voi muuntaa tyypistä %1$qT tyyppiin %2$qT %4$qD:n argumentiksi %3$qP"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgid "cannot convert %qT to %qT in default argument"
@@ -35077,7 +35136,7 @@ msgstr "ei voi muuntaa tyypistä %1$qT tyyppiin %2$qT %4$qD:n argumentiksi %3$qP
# XXX
# %s on "initialization", jota EI VOI suomentaa tällä hetkellä.
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in argument passing"
@@ -35085,7 +35144,7 @@ msgstr "ei voi muuntaa tyypistä %qT tyyppiin %qT (%s)"
# XXX
# %s on "initialization", jota EI VOI suomentaa tällä hetkellä.
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT"
@@ -35093,7 +35152,7 @@ msgstr "ei voi muuntaa tyypistä %qT tyyppiin %qT (%s)"
# XXX
# %s on "initialization", jota EI VOI suomentaa tällä hetkellä.
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in initialization"
@@ -35101,7 +35160,7 @@ msgstr "ei voi muuntaa tyypistä %qT tyyppiin %qT (%s)"
# XXX
# %s on "initialization", jota EI VOI suomentaa tällä hetkellä.
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in return"
@@ -35109,107 +35168,107 @@ msgstr "ei voi muuntaa tyypistä %qT tyyppiin %qT (%s)"
# XXX
# %s on "initialization", jota EI VOI suomentaa tällä hetkellä.
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in assignment"
msgstr "ei voi muuntaa tyypistä %qT tyyppiin %qT (%s)"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "funktio on ehkä mahdollinen ehdokas %qs-muotoiluattribuutille"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr ""
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, fuzzy, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "palautettu viittaus paikalliseen muuttujaan %qD"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, fuzzy, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "halutaan globaalin rekisterimuuttujan %qD osoite"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "arvon palautus hajottimesta"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "arvon palautus muodostimesta"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "return-lause ilman arvoa funktiossa, jonka paluutyyppi on %qT"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "arvo return-lauseelle funktiossa, jonka paluutyyppi on â€voidâ€"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> ei saa palauttaa NULLia ellei esittely ole %<throw()%> (tai -fcheck-new ole voimassa)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -35754,7 +35813,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -37904,27 +37963,27 @@ msgstr ""
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -38134,42 +38193,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr ""
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -38184,14 +38243,14 @@ msgstr "Odottamaton tyyppi kohteessa truthvalue_conversion"
msgid "can't open input file: %s"
msgstr "ei voi avata syötetiedostoa: %s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr ""
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "lopetusalkio puuttuu funktiokutsusta"
@@ -38301,12 +38360,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -40127,128 +40186,128 @@ msgstr "%s: virhe kirjoitettaessa tiedostoa â€%sâ€: %s\n"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr ""
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: virhe kirjoitettaessa tiedostoa â€%sâ€: %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "syötetiedoston avaaminen ei onnistu: %s"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: virhe kirjoitettaessa tiedostoa â€%sâ€: %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr ""
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr ""
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -40333,7 +40392,7 @@ msgstr "tyhjä esittely"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "%qD esitelty extern-avainsanalla sisäkkäin"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -41653,7 +41712,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr ""
@@ -41803,7 +41862,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -42185,182 +42244,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "tyhjä esittely"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "tyhjä esittely"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -42369,175 +42428,175 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr ""
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "tyhjä esittely"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "tyhjä esittely"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "yhteensopimattomat tyypit sijoituksessa"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "puhdistusargumentti ei ole tunniste"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr ""
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -42545,950 +42604,950 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "kirjoitussuojatun muuttujan %qs sijoitus"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "kirjoitussuojatun muuttujan %qs sijoitus"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr "yhteensopimattomat tyypit sijoituksessa"
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "taulukon %qs koko on liian suuri"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr ""
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "%<__builtin_args_info%>-funktion argumentin pitää olla vakio"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr ""
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr ""
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "%<__builtin_expect%>-funktion toisen argumentin pitää olla vakio"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "%<__builtin_args_info%>-funktion argumentin pitää olla vakio"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "tyhjä esittely"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "%<__builtin_args_info%>-funktion argumentin pitää olla vakio"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "%<__builtin_expect%>-funktion toisen argumentin pitää olla vakio"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "%qE-attribuutti soveltuu vain variadisiin funktioihin"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr ""
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "muuttuvakokoista objektia ei voi alustaa"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "%Jnimike %qD määritelty, mutta ei käytetty"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "%Jnimike %qD määritelty, mutta ei käytetty"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -44098,17 +44157,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -44350,7 +44409,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr ""
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -44654,7 +44713,7 @@ msgstr ""
msgid "internal error - invalid Utf8 name"
msgstr ""
-#: java/typeck.c:426
+#: java/typeck.c:433
#, fuzzy, gcc-internal-format
msgid "junk at end of signature string"
msgstr "roskaa ilmaisun #pragma weak lopussa"
diff --git a/gcc/po/fr.po b/gcc/po/fr.po
index d562d12506d..41ea09e3aa5 100644
--- a/gcc/po/fr.po
+++ b/gcc/po/fr.po
@@ -121,7 +121,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU gcc 3.4.3\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2008-04-23 19:30+0000\n"
"Last-Translator: François-Xavier Coudert <fxcoudert@gmail.com>\n"
"Language-Team: French <traduc@traduc.org>\n"
@@ -131,7 +131,7 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anonymous>"
@@ -142,7 +142,7 @@ msgstr "<anonymous>"
msgid "({anonymous})"
msgstr "((anonyme))"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected end of line"
@@ -150,11 +150,11 @@ msgstr "opérande inattendue"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<;%>"
@@ -163,18 +163,18 @@ msgstr "«;» attendu"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<(%>"
msgstr "«;» attendu"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<,%>"
@@ -186,20 +186,20 @@ msgstr "«;» attendu"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<)%>"
msgstr "«;» attendu"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<]%>"
@@ -209,28 +209,28 @@ msgstr "«;» attendu"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<}%>"
msgstr "«;» attendu"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<{%>"
msgstr "«;» attendu"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<:%>"
msgstr "«;» attendu"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr ""
@@ -241,43 +241,43 @@ msgstr ""
msgid "expected %<.%>"
msgstr "«;» attendu"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<@end%>"
msgstr "opérande inattendue"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<>%>"
msgstr "«;» attendu"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr ""
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<=%>"
msgstr "«;» attendu"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr ""
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<[%>"
msgstr "«;» attendu"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
#| msgid "((anonymous))"
msgid "(anonymous)"
@@ -466,12 +466,12 @@ msgstr "opérande « %%l » n'est pas une étiquette"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "constante flottante mal utilisée"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "expression invalide comme opérande"
@@ -1412,19 +1412,19 @@ msgstr "Dans le fichier inclus depuis %s:%d"
msgid " inlined from %qs"
msgstr "Dans le fichier inclus à partir de %s:%u"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr ""
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
@@ -1625,16 +1625,16 @@ msgid "this is the insn:"
msgstr "ceci est le insn:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "ne peut repérer un registre de déversement"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "mode VOID sur une sortie"
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr ""
@@ -2946,121 +2946,121 @@ msgstr "return"
msgid "<unknown>"
msgstr ""
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "valeur %%H invalide"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "valeur %%J invalide"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "valeur %%r invalide"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "valeur %%R invalide"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "valeur %%N invalide"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "valeur %%P invalide"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "valeur %%h invalide"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "valeur %%L invalide"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "valeur %%m invalide"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "valeur %%M invalide"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "valeur %%U invalide"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "valeur %%s invalide"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "valeur %%C invalide"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "valeur %%E invalide"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "relocalisation unspec inconnue"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "valeur %%xn invalide"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, fuzzy, c-format
#| msgid "Generate char instructions"
msgid "predicated Thumb instruction"
msgstr "Générer des instructions « char »"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, fuzzy, c-format
#| msgid "ret instruction not implemented"
msgid "predicated instruction in conditional sequence"
msgstr "instruction ret n'est pas implantée"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "unsupported operand size for extended register"
msgid "Unsupported operand for code '%c'"
msgstr "taille d'opérande non supportée pour un registre étendu"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, fuzzy, c-format
#| msgid "invalid %%f operand"
msgid "invalid shift operand"
msgstr "opérande %%f invalide"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -3070,94 +3070,94 @@ msgid "invalid operand for code '%c'"
msgstr "opérande invalide pour « %c »"
# FIXME: c'est de l'assembleur ?
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, fuzzy, c-format
#| msgid "unconditional %2d never executed\n"
msgid "instruction never executed"
msgstr "inconditionnel %2d n'a jamais été exécuté\n"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, fuzzy, c-format
#| msgid "missing open paren"
msgid "missing operand"
msgstr "parenthèse ouvrante manquante"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
#| msgid "function returns an aggregate"
msgid "function parameters cannot have __fp16 type"
msgstr "fonction retourne un aggrégat"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "fonction ne retourne pas un type « string »"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, fuzzy, c-format
#| msgid "read-write constraint does not allow a register"
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "contrainte de lecture-éccriture ne permet pas de registre"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use `&' constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "opérande de sortie %d doit utiliser la contrainte « & »"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "adresse erronée, pas (reg+disp):"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "address offset not a constant"
msgid "bad address, not a constant:"
msgstr "décalage d'adresse n'est pas une constante"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "adresse erronée, pas (reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not post_inc or pre_dec:"
msgstr "adresse erronée, pas (reg+disp):"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "erreur internal du compilateur. Adresse erronée:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "erreur internal du compilateur. Mode inconnu:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "insn invalide:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "insn incoorect:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "insn de déplacement inconnu:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "décalage insn erroné:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "erreur internal du compilateur. Décalage incorrect:"
@@ -3174,8 +3174,8 @@ msgstr "contrainte invalide pour l'opérande"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -3257,21 +3257,21 @@ msgstr "opérande inattendue"
msgid "unrecognized address"
msgstr "adresse non reconnue"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "supposée constante non reconnue"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "effets de bord inattendue dans l'adresse"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr ""
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "le registre n'est pas initialisé"
@@ -3279,7 +3279,7 @@ msgstr "le registre n'est pas initialisé"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "opérande invalide pour le code de sortie"
@@ -3443,81 +3443,81 @@ msgstr "opérande output_move_double erronée"
msgid "bad output_condmove_single operand"
msgstr "opérande output_condmove_single erronée"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "UNSPEC invalide comme opérande"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
#| msgid "invalid operand code `%c'"
msgid "invalid operand size for operand code '%c'"
msgstr "opérande invalide pour « %c »"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
#| msgid "invalid operand output code"
msgid "invalid operand type used with operand code '%c'"
msgstr "opérande invalide pour le code de sortie"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, fuzzy, c-format
#| msgid "invalid operand code `%c'"
msgid "invalid operand code '%c'"
msgstr "opérande invalide pour « %c »"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "contrainte invalide pour l'opérande"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "mode insn inconnu"
@@ -3546,42 +3546,42 @@ msgstr "variable d'environment DJGPP pointe sur un fichier manquant « %s »"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "variable d'environment DJGPP pointe vers un fichier corrompu « %s »"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%j code"
msgid "invalid %%G mode"
msgstr "valeur %%j invalide"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: code inconnu"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
#, fuzzy
#| msgid "invalid conversion from `%T' to `%T'"
msgid "invalid conversion from %<__fpreg%>"
msgstr "conversion invalide de « %T » vers « %T »"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
#, fuzzy
#| msgid "invalid conversion to type `%T' from type `%T'"
msgid "invalid conversion to %<__fpreg%>"
msgstr "conversion invalide vers un type « %T » à partir du type « %T »"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
#, fuzzy
#| msgid "invalid operation on array of chars"
msgid "invalid operation on %<__fpreg%>"
msgstr "opération invalide pour des tableaux de caractères"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "opérande %%P invalide"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "valeur %%p invalide"
@@ -3660,7 +3660,7 @@ msgid "post-increment address is not a register"
msgstr "post-incrément d'adresse n'est pas un registre"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "adresse erronée"
@@ -3847,89 +3847,89 @@ msgstr ""
msgid "bad move"
msgstr "opérande erronée"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%H value"
msgid "invalid %%c value"
msgstr "valeur %%H invalide"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "valeur %%f invalide"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "valeur %%F invalide"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "valeur %%G invalide"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "valeur %%j invalide"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "valeur %%J invalide"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "valeur %%k invalide"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "valeur %%K invalide"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "valeur %%O invalide"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "valeur %%q invalide"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "valeur %%S invalide"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "valeur %%T invalide"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "valeur %%u invalide"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "valeur %%v invalide"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "valeur %%x invalide"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
#| msgid "invalid punctuation `%c' in constraint"
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "ponctuation invalide « %c » dans la contrainte"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
#, fuzzy
#| msgid "too few arguments to function"
msgid "AltiVec argument passed to unprototyped function"
@@ -4043,66 +4043,66 @@ msgstr "opérande invalide pour le code %%R"
msgid "invalid operand to %%S"
msgstr "opérande invalide pour le code %%R"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
#, fuzzy
#| msgid "created and used with different settings of -fpic"
msgid "created and used with different architectures / ABIs"
msgstr "créé et utilisé avec des configurations différentes de -fpic"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
#, fuzzy
#| msgid "created and used with different settings of -fpic"
msgid "created and used with different ABIs"
msgstr "créé et utilisé avec des configurations différentes de -fpic"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
#, fuzzy
#| msgid "created and used with different settings of -fpic"
msgid "created and used with different endianness"
msgstr "créé et utilisé avec des configurations différentes de -fpic"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "opérande %%Y invalide"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "opérande %%A invalide"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "Opérande %%B invalide"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "opérande %%C invalide"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "opérande %%D invalide"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "opérande %%f invalide"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "opérande %%s invalide"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "constante long long n'est pas une opérande immédiate valide"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "constante en virgule flottante n'est pas une opérande immédiate valide"
@@ -4130,7 +4130,7 @@ msgstr "opérande « o » n'est pas une constante"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: code inconnu"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "opérande %%c invalide"
@@ -4146,25 +4146,25 @@ msgstr "opérande %%d invalide"
msgid "invalid %%H specifier"
msgstr "valeur %%j invalide"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "opérande %%P invalide"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "opérande %%P invalide"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "opérande %%P invalide"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -4176,7 +4176,7 @@ msgstr "opérande %%P invalide"
msgid "invalid %%%c operand"
msgstr "opérande %%c invalide"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -4188,42 +4188,42 @@ msgstr "opérande %%P invalide"
msgid "invalid operand for 'r' specifier"
msgstr "opérande invalide pour le modificateur « b »"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "opérande %%P invalide"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "opérande %%P invalide"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "opérande %%P invalide"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "opérande %%P invalide"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "opérande %%P invalide"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -4292,11 +4292,11 @@ msgstr "pas de registre dans l'adresse"
msgid "address offset not a constant"
msgstr "décalage d'adresse n'est pas une constante"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "candidat 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "candidat 2:"
@@ -4555,7 +4555,7 @@ msgstr "%s:%d: instancié à partir de « %s »\n"
msgid "candidates are:"
msgstr "candidats sont:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid "candidate is:"
@@ -4619,50 +4619,50 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "type d'argument erroné pour le moins unaire"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "type d'argument erroné pour le plus unaire"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "type d'argument erroné pour un complément de bit"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "type d'argument erroné pour abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "type d'argument erroné pour la conjugaison"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "wrong type argument to unary plus"
msgid "in argument to unary !"
msgstr "type d'argument erroné pour le plus unaire"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4985,7 +4985,7 @@ msgstr "opérande erronée"
msgid "Bad type in constant expression"
msgstr "débordement dans l'expression de la constante"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
#, fuzzy
#| msgid "unexpected PIC symbol"
msgid "Unexpected end of module"
@@ -5021,11 +5021,11 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "affectation"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
#, fuzzy
#| msgid "assignment"
msgid "pointer assignment"
@@ -5119,53 +5119,53 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr ""
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
#, fuzzy
#| msgid "SET expression not a location"
msgid "Start expression in DO loop"
msgstr "expression de l'ENSEMBLE n'est pas une localisation"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
#| msgid "SET expression not a location"
msgid "End expression in DO loop"
msgstr "expression de l'ENSEMBLE n'est pas une localisation"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
#, fuzzy
#| msgid "SET expression not a location"
msgid "Step expression in DO loop"
msgstr "expression de l'ENSEMBLE n'est pas une localisation"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -5174,7 +5174,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -5254,7 +5254,7 @@ msgstr "fonction marquée « noreturn » retourne une valeur n'étant pas de type «
msgid "Memory allocation failed"
msgstr ""
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -5493,7 +5493,7 @@ msgstr "ne peut spécéfier à la fois -C et -o"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -5556,6 +5556,10 @@ msgstr "shared et mdll ne sont pas compatibles"
msgid "static is not supported on TPF-OS"
msgstr "-traditional n'est pas supporté en C++"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "ne peut utiliser ensemble -EB et -EL"
@@ -5590,12 +5594,6 @@ msgstr "-mbig-endian et -mlittle-endian ne peuvent être utilisés ensemble"
msgid "no processor type specified for linking"
msgstr "fichier de specs n'a pas de spécification pour l'édition de liens"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-#| msgid "GCC does not support -C without using -E"
-msgid "gfortran does not support -E without -cpp"
-msgstr "GCC ne supporte pas -C sans utiliser -E"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "Le m210 ne supporte pas le code pour système à octets de poids faible"
@@ -5652,6 +5650,12 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "L'option -shared n'est pas couramment supportée pour VAS ELF."
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+#| msgid "GCC does not support -C without using -E"
+msgid "gfortran does not support -E without -cpp"
+msgstr "GCC ne supporte pas -C sans utiliser -E"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni et -femit-class-files sont incompatibles"
@@ -9193,6 +9197,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -11892,20 +11900,32 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Ne pas prédéfinir les macros spécifiques au système ou à GCC"
#: go/lang.opt:42
+msgid "Add explicit checks for division by zero"
+msgstr ""
+
+#: go/lang.opt:46
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
+msgstr ""
+
+#: go/lang.opt:50
#, fuzzy
#| msgid "-fdump-<type>\tDump various compiler internals to a file"
msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr "-fdump-<type>\tvidander les divers internes du compilateur dans un fichier"
-#: go/lang.opt:46
+#: go/lang.opt:54
msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
msgstr ""
-#: go/lang.opt:50
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
msgstr ""
-#: go/lang.opt:54
+#: go/lang.opt:66
#, fuzzy
#| msgid "function declared `noreturn' has a `return' statement"
msgid "Functions which return values must end with return statements"
@@ -13615,308 +13635,319 @@ msgstr "Autoriser les identificateurs de librairies partagées de base"
msgid "Create a position independent executable"
msgstr "Générer du code indépendant de la position pour les exécutables si possible"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of %D"
msgid "invalid use of type"
msgstr "utilisation invalide de %D"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating constant out of range"
-msgid "floating point constant truncated to integer"
-msgstr "constante flottante est hors gamme"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr ""
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
#| msgid "expected type-name"
msgid "expected numeric type"
msgstr "un nom de type attendu"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "expected type-name"
+msgid "expected boolean type"
+msgstr "un nom de type attendu"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
#| msgid "expected another rename clause"
msgid "expected integer or boolean type"
msgstr "attendait une autre clause de changement de nom"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
#| msgid "invalid operands to binary %s"
msgid "invalid operand for unary %<&%>"
msgstr "opérandes invalides pour le binaire %s"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
#| msgid "unexpected operand"
msgid "expected pointer"
msgstr "opérande inattendue"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "incompatible modes in concat expression"
msgid "incompatible types in binary expression"
msgstr "modes incompatibles dans l'expression de concaténation"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
msgid "shift of non-integer operand"
msgstr ""
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
#| msgid "switch quantity not an integer"
msgid "shift count not unsigned integer"
msgstr "quantité du switch n'est pas un entier"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative string length"
msgid "negative shift count"
msgstr "longueur négative de chaîne"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "called object is not a function"
msgid "object is not a method"
msgstr "l'objet appelé n'est pas une fonction"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
#| msgid "cast does not match function type"
msgid "method type does not match object type"
msgstr "le transtypage ne concorde pas avec le type de la fonction"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid use of `this' in non-member function"
msgid "invalid use of %<...%> with builtin function"
msgstr "utilisation invalide de « ceci » dans un non membre de fonction"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "pas d'argument"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments"
msgstr "trop d'arguments pour le format"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument %d must be referable"
msgid "argument 1 must be a map"
msgstr "argument %d doit pouvoir être référencé"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
#| msgid "invalid return type for member function `%#D'"
msgid "invalid type for make function"
msgstr "type retourné invalide pour le membre de la fonction « %#D »"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "insn erroné pour « A »"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments to process"
msgid "too many arguments to make"
msgstr "trop d'arguments à traiter"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
#| msgid "UPPER argument must be string, array, mode or integer"
msgid "argument must be array or slice or channel"
msgstr "argument du HAUT doit être une chaîne, un tableau, un mode ou un entier"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
#, fuzzy
#| msgid "UPPER argument must be string, array, mode or integer"
msgid "argument must be string or array or slice or map or channel"
msgstr "argument du HAUT doit être une chaîne, un tableau, un mode ou un entier"
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "unimplemented built-in function `%s'"
msgid "unsupported argument type to builtin function"
msgstr "fonction interne non implantée « %s »"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
#| msgid "argument %d must be referable"
msgid "argument must be channel"
msgstr "argument %d doit pouvoir être référencé"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
#| msgid "argument %d must be referable"
msgid "argument must be a field reference"
msgstr "argument %d doit pouvoir être référencé"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
#| msgid "first argument to `%s' must be a mode"
msgid "left argument must be a slice"
msgstr "premier argument de « %s » doit être un mode"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "first argument to `%s' must be a mode"
msgid "first argument must be []byte"
msgstr "premier argument de « %s » doit être un mode"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "ABS argument must be discrete or real mode"
msgid "second argument must be slice or string"
msgstr "argument ABS doit être en mode discret ou réel"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "bit-field `%s' has invalid type"
msgid "argument 2 has invalid type"
msgstr "le champ de bits « %s » a un type invalide"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
#| msgid "parameter `%s' has incomplete type"
msgid "argument must have complex type"
msgstr "le paramètre « %s » a un type incomplet"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
#| msgid "macro names must be identifiers"
msgid "complex arguments must have identical types"
msgstr "les noms de macro doivent être des identificateurs"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
#| msgid "argument 1 to `%s' must be of floating point mode"
msgid "complex arguments must have floating-point type"
msgstr "argument 1 de « %s » doit être en mode virgule flottante"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of non-lvalue array"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "utilisation invalide d'un tableau n'étant pas membre gauche"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "In function"
msgid "expected function"
msgstr "Dans la fonction"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
#| msgid "incompatible types in %s"
msgid "incompatible type for receiver"
msgstr "type incompatibles dans %s"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of `this' in non-member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "utilisation invalide de « ceci » dans un non membre de fonction"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "number of CASE selectors does not match the number of CASE label lists"
msgid "number of results does not match number of values"
msgstr "nombre de sélecteurs de CASE ne concorde pas avec la liste des étiquettes du CASE"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
#| msgid "PROCESS copy number must be integer"
msgid "index must be integer"
msgstr "processus de copie de nombres doit être entier"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
#| msgid "PROCESS copy number must be integer"
msgid "slice end must be integer"
msgstr "processus de copie de nombres doit être entier"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
#, fuzzy
#| msgid "%s is not addressable"
msgid "slice of unaddressable value"
msgstr "%s n'est pas adressable"
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "incompatible types in %s"
msgid "incompatible type for map index"
msgstr "type incompatibles dans %s"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many index expressions"
msgid "too many expressions for struct"
msgstr "trop d'expressions d'index"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "trop peu d'arguments dans le format"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
#| msgid "invalid suffix on integer constant"
msgid "invalid unsafe.Pointer conversion"
msgstr "suffixe invalide pour une constante entière"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
#, fuzzy
#| msgid "Invalid interface type"
msgid "type assertion only valid for interface types"
msgstr "Type d'interface invalide"
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "unexpected operand"
msgid "expected channel"
msgstr "opérande inattendue"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
#| msgid "invalid lvalue in assignment"
@@ -13957,23 +13988,23 @@ msgstr "trop de « l » en suffixe dans les constantes entières"
msgid "expected boolean expression"
msgstr "expression d'adresse inattendue"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
#| msgid "incompatible types in %s"
msgid "incompatible types in send"
msgstr "type incompatibles dans %s"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
#, fuzzy
#| msgid "invalid base in read control sequence"
msgid "invalid send on receive-only channel"
msgstr "base invalide dans la séquence de contrôle de lecture"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -14031,87 +14062,87 @@ msgstr ""
msgid "cannot use type %s as type %s"
msgstr "ne peut convertir type « %T » vers le type « %T »"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
#| msgid "different type"
msgid "different receiver types"
msgstr "type différent"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "destructors take no parameters"
msgid "different number of parameters"
msgstr "destructeurs ne prend aucun paramètre"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "different type"
msgid "different parameter types"
msgstr "type différent"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
#, fuzzy
#| msgid "different type"
msgid "different varargs"
msgstr "type différent"
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
#, fuzzy
#| msgid "different type"
msgid "different result types"
msgstr "type différent"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of `%s'"
msgid "incompatible type for method %s%s%s"
msgstr "type incompatible pour l'argument n°%d de « %s »"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of `%s'"
msgid "incompatible type for method %s%s%s (%s)"
msgstr "type incompatible pour l'argument n°%d de « %s »"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "error while parsing methods"
msgid "type has no methods"
msgstr "erreur lors de l'analyse syntaxique des méthodes"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
#| msgid "ambiguous abbreviation %s"
msgid "ambiguous method %s%s%s"
msgstr "abréviation %s est ambiguë"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
#| msgid "missing argument to \"%s\""
msgid "missing method %s%s%s"
msgstr "argument manquant à \"%s\""
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -14188,7 +14219,7 @@ msgstr "troisième argument de « __builtin_prefetch » doit être une constante"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "troisième argument invalide de « __builtin_prefetch »; utilisation de zéro"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function `va_start'"
msgid "too few arguments to function %<va_start%>"
@@ -14214,7 +14245,7 @@ msgstr "(vous devriez donc passer « %s » et non « %s » à « va_arg »)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "si ce code est atteint, le programme s'arrêtera"
@@ -14304,7 +14335,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
@@ -14406,8 +14437,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "valeur void n'a pas été ignorée comme elle aurait dû l'être"
@@ -14726,7 +14757,7 @@ msgstr "déclaration de « %D » masque une déclaration globale"
msgid "declaration of %q+D shadows a previous local"
msgstr "déclaration de « %D » masque la déclaration d'un local précédent"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
msgid "shadowed declaration is here"
@@ -14851,7 +14882,7 @@ msgstr "index n'est pas une expression entière"
msgid "%qE defined as wrong kind of tag"
msgstr "%H« %s » défini incorrectement comme une mauvais sorte d'étiquette"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `restrict'"
msgid "invalid use of %<restrict%>"
@@ -14988,7 +15019,7 @@ msgstr "le paramètre « %s » est initialisé"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "un objet de taille variable peut ne pas être initialisé"
@@ -14999,7 +15030,7 @@ msgstr "un objet de taille variable peut ne pas être initialisé"
msgid "variable %qD has initializer but incomplete type"
msgstr "la variable « %#D » est initialisée, mais a un type incomplet"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, fuzzy, gcc-internal-format
#| msgid "%Jinline function '%D' given attribute noinline"
msgid "inline function %q+D given attribute noinline"
@@ -15035,7 +15066,7 @@ msgstr "taille de tableau manquante dans « %D »"
msgid "zero or negative size array %q+D"
msgstr "%Jtableau « %D » de taille zéro ou négative"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, fuzzy, gcc-internal-format
#| msgid "storage size of `%D' isn't known"
msgid "storage size of %q+D isn%'t known"
@@ -15163,7 +15194,7 @@ msgstr "taille du type ne peut être explicitement évaluée"
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -15264,7 +15295,7 @@ msgstr "classe de stockage spécifiée pour le paramètre « %s »"
msgid "storage class specified for unnamed parameter"
msgstr "classe de stockage spécifiée pour le paramètre « %s »"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "classe de stockage spécifié pour un typename"
@@ -15437,7 +15468,7 @@ msgstr "« %s » déclaré comme une fonction retournant un tableau"
msgid "function definition has qualified void return type"
msgstr "définition invalide d'un type qualifié « %T »"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "qualificateurs de type ignorés pour le type à retourner par la fonction"
@@ -15562,7 +15593,7 @@ msgstr "ISO C interdit les fonction de type volatile ou constante"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "membre de données peut ne pas avoir de type « %T » modifié de manière variable"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, fuzzy, gcc-internal-format
#| msgid "variable or field `%E' declared void"
msgid "variable or field %qE declared void"
@@ -16055,7 +16086,7 @@ msgstr "argument \"%D\" ne concorde pas avec le prototype"
msgid "argument %qD doesn%'t match prototype"
msgstr "argument \"%D\" ne concorde pas avec le prototype"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "« return » manquant dans une fonction devant retourner une valeur"
@@ -16276,7 +16307,7 @@ msgstr "nom d'identificateur « %s » entre en conflit avec la stratégie interne d
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C interdit un fichier source vide"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not allow extra `;' outside of a function"
msgid "ISO C does not allow extra %<;%> outside of a function"
@@ -16288,7 +16319,7 @@ msgstr "ISO C ne permet pas de « ; » additionnel en dehors d'une fonction"
msgid "unknown type name %qE"
msgstr "nom de registre inconnu: %s"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, fuzzy, gcc-internal-format
#| msgid "repeated declaration of unit `%s'"
msgid "expected declaration specifiers"
@@ -16299,7 +16330,7 @@ msgstr "déclaration répété d'unité « %s »"
msgid "expected %<;%>, identifier or %<(%>"
msgstr ""
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored for `%s'"
msgid "prefix attributes are ignored for methods"
@@ -16322,7 +16353,7 @@ msgstr "opérande inattendue"
msgid "data definition has no type or storage class"
msgstr "la définition de données n'a pas de type ni de classe de stockage"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -16352,7 +16383,7 @@ msgstr "ISO C90 ne permet pas les types « complex »"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 ne permet pas les types « complex »"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, fuzzy, gcc-internal-format
#| msgid "unterminated string literal"
msgid "expected string literal"
@@ -16383,19 +16414,19 @@ msgstr ""
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected identifier"
msgstr "un nom de type attendu"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "virgule à la fin de liste d'énumerateurs"
@@ -16536,7 +16567,7 @@ msgstr "ISO C89 interdit les mélanges de déclarations et de code"
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -16565,19 +16596,19 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected statement"
msgstr "un nom de type attendu"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
#| msgid "%Hempty body in an if-statement"
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "%Hle corps de la déclaration du if est vide"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "suggest braces around empty body in an %<else%> statement"
@@ -16651,7 +16682,7 @@ msgstr "ISO C ne permet pas de « ; » additionnel en dehors d'une fonction"
msgid "cannot take address of %qs"
msgstr "ne peut prendre l'adresse du champ de bits « %s »"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected expression"
@@ -16696,277 +16727,277 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "opérande vers ?: a différents types"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "nombre erroné d'arguments du patron (%d devrait être %d)"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
# FIXME
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 interdit les mots composés"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr ""
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr "« ; » superflu"
-#: c-parser.c:7480
+#: c-parser.c:7485
#, fuzzy, gcc-internal-format
#| msgid "extra semicolon in struct or union specified"
msgid "extra semicolon in method definition specified"
msgstr "point virgule superflu dans la structure ou dans l'union"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
#| msgid "Class or interface declaration expected"
msgid "objective-c method declaration is expected"
msgstr "Déclaration de classe ou d'interface attendue"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for typename"
msgid "no type or storage class may be specified here,"
msgstr "classe de stockage spécifié pour un typename"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr ""
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr ""
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "the %<setter%> attribute may only be specified once"
msgstr "%Jl'attribut de section ne peut être spécifié pour des variables locales"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
#| msgid "%Jaddress area attribute cannot be specified for functions"
msgid "the %<getter%> attribute may only be specified once"
msgstr "%Jl'attribut de la zone d'adresse ne peut pas être spécifié pour des fonctiones"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
#| msgid "too many tag labels"
msgid "too many %qs clauses"
msgstr "trop d'étiquettes"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
#| msgid "case label must be a discrete constant expression"
msgid "collapse argument needs positive constant integer expression"
msgstr "l'étiquette du CASE doit être une expression de constante discrète"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected integer expression"
msgstr "expression d'adresse inattendue"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
#| msgid "invalid template-id"
msgid "invalid schedule kind"
msgstr "id de patron invalide"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, fuzzy, gcc-internal-format
#| msgid "expected another rename clause"
msgid "expected %<#pragma omp%> clause"
msgstr "attendait une autre clause de changement de nom"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
#| msgid "%s: not for %s"
msgid "%qs is not valid for %qs"
msgstr "%s: non pour %s"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "invalid #pragma %s"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "#pragma %s invalde"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, fuzzy, gcc-internal-format
#| msgid "invalid operation on array of chars"
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "opération invalide pour des tableaux de caractères"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, fuzzy, gcc-internal-format
#| msgid "expected to return to file \"%s\""
msgid "expected %<(%> or end of line"
msgstr "attendait retourner au fichier \"%s\""
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
#| msgid "')' or term expected"
msgid "for statement expected"
msgstr "«)» or terme attendu"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
#| msgid "loc-identity declaration without initialization"
msgid "expected iteration declaration or initialization"
msgstr "déclaration de loc n'a pas d'initialisation"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
#| msgid "%s is not addressable"
msgid "%qD is not a variable"
msgstr "%s n'est pas adressable"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
#| msgid "%Jparameter \"%D\" has incomplete type"
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%Jparamètre \"%D\" a un type incomplet"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -16977,7 +17008,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "« %s » a un type incomplet"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "utilisation invalide d'expression void"
@@ -17047,74 +17078,79 @@ msgstr "les types ne sont pas vraiment compatibles"
msgid "function return types not compatible due to %<volatile%>"
msgstr "les types retournés d'une fonction ne sont pas compatibles en raison de « volatile »"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "arithmétique sur un pointeur vers un type incomplet"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, fuzzy, gcc-internal-format
#| msgid "'%D' has no member named '%E'"
msgid "%qT has no member named %qE"
msgstr "« %D » n'a pas de membre nommé « %E »"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, fuzzy, gcc-internal-format
#| msgid "request for member `%s' in something not a structure or union"
msgid "request for member %qE in something not a structure or union"
msgstr "requête du membre « %s » dans quelque chose n'étant ni une structure ni une union"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "déréférencement d'un pointeur de type incomplet"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, fuzzy, gcc-internal-format
#| msgid "dereferencing `void *' pointer"
msgid "dereferencing %<void *%> pointer"
msgstr "déréférencement d'un pointeur « void * »"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "la valeur indicée n'est ni un tableau ni un pointeur"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "l'indice du tableau n'est pas un entier"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, fuzzy, gcc-internal-format
#| msgid "passing arg of pointer to function"
msgid "subscripted value is pointer to function"
msgstr "passage des arguments au pointeur de fonction"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "accumulator number is out of bounds"
msgid "index value is out of bound"
msgstr "numéro de l'accumulateur est hors limite"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids subscripting `register' array"
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C interdit de sous-indicer des tableaux « register »"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 interdit d'indicer de tableau n'étant pas membre gauche"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, fuzzy, gcc-internal-format
#| msgid "called object is not a function"
msgid "called object %qE is not a function"
@@ -17123,412 +17159,412 @@ msgstr "l'objet appelé n'est pas une fonction"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "fonction appellée à travers un type non compatible"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids qualified void function return type"
msgid "function with qualified void return type called"
msgstr "ISO C interdit d'utiliser un void qualifié en valeur à retourner par la fonction"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
#| msgid "__builtin_longjmp second argument must be 1"
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "le second argument de « __builtin_longjmp » doit être 1"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "__builtin_longjmp second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "le second argument de « __builtin_longjmp » doit être 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, fuzzy, gcc-internal-format
#| msgid "argument to `%s' must be of integer type"
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr "argument de « %s » doit être de type entier"
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function `%s'"
msgid "too many arguments to method %qE"
msgstr "trop d'arguments pour la fonction « %s »"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to function %qE"
msgstr "trop d'arguments pour la fonction"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid "declared here"
msgstr " « %#D » déclaré ici"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "le type du paramètre formel %d est incomplet"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, fuzzy, gcc-internal-format
#| msgid "%s as integer rather than floating due to prototype"
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "%s est entier plutôt que flottant en raison du prototype"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, fuzzy, gcc-internal-format
#| msgid "%s as integer rather than complex due to prototype"
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "%s est entier plutôt que complexe en raison du prototype"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, fuzzy, gcc-internal-format
#| msgid "%s as complex rather than floating due to prototype"
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "%s est complexe plutôt que flottant en raison du prototype"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, fuzzy, gcc-internal-format
#| msgid "%s as floating rather than integer due to prototype"
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "%s est flottant plutôt qu'entier en raison du prototype"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, fuzzy, gcc-internal-format
#| msgid "%s as complex rather than integer due to prototype"
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "%s est complexe plutôt qu'entier en raison du prototype"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, fuzzy, gcc-internal-format
#| msgid "%s as floating rather than complex due to prototype"
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "%s est flottant plutôt que complexe en raison du prototype"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, fuzzy, gcc-internal-format
#| msgid "%s as `float' rather than `double' due to prototype"
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "%s est « float » plutôt qu'un « double » en raison du prototype"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
#| msgid "%s as integer rather than complex due to prototype"
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "%s est entier plutôt que complexe en raison du prototype"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, fuzzy, gcc-internal-format
#| msgid "%s with different width due to prototype"
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "%s a une largeur différente en raison du prototype"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, fuzzy, gcc-internal-format
#| msgid "%s as unsigned due to prototype"
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "%s est non signé en raison du prototype"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, fuzzy, gcc-internal-format
#| msgid "%s as signed due to prototype"
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "%s est signé en raison du prototype"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr ""
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to function %qE"
msgstr "trop peu d'arguments pour la fonction"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behavior"
msgstr "%Jdéclaration faible de « %D » après une première utilisation des résultats d'un comportement non spécifié"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
#| msgid "comparison between `%#T' and `%#T'"
msgid "comparison between %qT and %qT"
msgstr "comparaison entre « %#T » et « %#T »"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, fuzzy, gcc-internal-format
#| msgid "pointer of type `void *' used in subtraction"
msgid "pointer of type %<void *%> used in subtraction"
msgstr "pointeur de type « void * » utilisé dans une soustraction"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "pointeur vers un fonction utilisé dans une soustraction"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not support `~' for complex conjugation"
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C ne permet pas d'utiliser « ~ » pour le complexe conjugué"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "type d'argument erroné pour le point d'exclamation unaire"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, fuzzy, gcc-internal-format
#| msgid "enumeration value `%s' not handled in switch"
msgid "increment of enumeration value is invalid in C++"
msgstr "valeur d'énumération « %s » n'est pas traitée dans le switch"
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, fuzzy, gcc-internal-format
#| msgid "enumeration value `%s' not handled in switch"
msgid "decrement of enumeration value is invalid in C++"
msgstr "valeur d'énumération « %s » n'est pas traitée dans le switch"
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not support `++' and `--' on complex types"
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C ne permet pas « ++ » ni « -- » sur les types complexes"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "type d'argument erroné pour un incrément"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "type d'argument erroné pour un décrément"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "incrément d'un pointeur vers une structure inconnue"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "décrément d'un pointeur vers une structure inconnue"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of expression of type %<void%>"
msgstr "prise de l'adresse du temporaire"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only location"
msgid "assignment of read-only location %qE"
msgstr "%s d'une position en lecture seule"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only location"
msgid "increment of read-only location %qE"
msgstr "%s d'une position en lecture seule"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only location"
msgid "decrement of read-only location %qE"
msgstr "%s d'une position en lecture seule"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, fuzzy, gcc-internal-format
#| msgid "cannot take address of bit-field `%s'"
msgid "cannot take address of bit-field %qD"
msgstr "ne peut prendre l'adresse du champ de bits « %s »"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, fuzzy, gcc-internal-format
#| msgid "global register variable `%s' used in nested function"
msgid "global register variable %qD used in nested function"
msgstr "variable globale de registre « %s » utilisée dans une fonction imbriquée"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "register variable %qD used in nested function"
msgstr "variable de registre « %s » utilisée dans une fonction imbriquée"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, fuzzy, gcc-internal-format
#| msgid "address of global register variable `%s' requested"
msgid "address of global register variable %qD requested"
msgstr "adresse d'une variable registre globale « %s » requise"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, fuzzy, gcc-internal-format
#| msgid "address of register variable `%s' requested"
msgid "address of register variable %qD requested"
msgstr "adresse d'une variable registre « %s » requise"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, fuzzy, gcc-internal-format
#| msgid "non-boolean mode in conditional expression"
msgid "non-lvalue array in conditional expression"
msgstr "mode non booléen dans l'expression conditionnelle"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C interdit une expression conditionnelle dont un seul côté est « void »"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
#| msgid "pointer type mismatch in conditional expression"
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "non concordance de type de pointeurs dans un expression conditionnelle"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids conditional expr between `void *' and function pointer"
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C interdit une expression conditionnelle entre « void * » et un pointeur de fonction"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "non concordance de type de pointeurs dans un expression conditionnelle"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "non concordance entre pointeur et entier dans une expression conditionnelle"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "l'opérande à gauche de la virgule n'a pas d'effet"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
#| msgid "cast adds new qualifiers to function type"
msgid "cast adds %q#v qualifier to function type"
msgstr "le transtypage ajoute un nouveau qualificateur au type de la fonction"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "le transtypage annule des qualificateurs du type pointeur ciblé"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "le transtypage spécifie un type de tableau"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "le transtypage spécifie un type de fonction"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C interdit le transtypage d'un type non scalaire vers lui-même"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C interdit le transtypage vers un type union"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "transtypage vers un type union depuis un type absent de l'union"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "le transtypage augmente l'alignement requis pour le type ciblé"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "transtypage d'un pointeur vers un entier de taille différente"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "transtypage vers un pointeur depuis un entier de taille différente"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C interdit la conversion d'un pointeur de fonction en un type pointeur d'objet"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C interdit la conversion d'un pointeur d'objet vers un type de pointeur à une fonction"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -17540,203 +17576,203 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "impossible de passer un membre droit en paramètre par référence"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "%s qualifie un pointeur de fonction non qualifié"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "%s qualifie un pointeur de fonction non qualifié"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "%s qualifie un pointeur de fonction non qualifié"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
#| msgid "%s makes qualified function pointer from unqualified"
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "%s qualifie un pointeur de fonction non qualifié"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
#| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "transtypage de « %T » vers « %T » écarte les qualificateurs du type cible du pointeur"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "le transtypage annule des qualificateurs du type pointeur ciblé"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "le transtypage annule des qualificateurs du type pointeur ciblé"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "return discards %qv qualifier from pointer target type"
msgstr "le transtypage annule des qualificateurs du type pointeur ciblé"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C interdit la conversion d'argument en type union"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, fuzzy, gcc-internal-format
#| msgid "conversion from %s to %s not supported by iconv"
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "conversion de %s vers %s n'est pas supporté par iconv"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
#| msgid "passing arg %d of pointer to function"
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "passage de l'argument n°%d au pointeur de fonction"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "assignment from pointer to non-enclosed address space"
msgstr "transtypage d'un pointeur vers un entier de taille différente"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "la fonction est peut être candidate pour l'attribut de format de « %s »"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "Avertir à propos des fonctions qui pourraient être candidates pour les attributs de format"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "la fonction est peut être candidate pour l'attribut de format de « %s »"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "return type might be a candidate for a format attribute"
msgstr "la fonction est peut être candidate pour l'attribut de format de « %s »"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C interdit %s entre pointeur de fonction et « void * »"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C interdit %s entre pointeur de fonction et « void * »"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C interdit %s entre pointeur de fonction et « void * »"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids %s between function pointer and `void *'"
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C interdit %s entre pointeur de fonction et « void * »"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "les cibles des pointeurs dans %s n'ont pas toutes de signe"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in assignment differ in signedness"
msgstr "les cibles des pointeurs dans %s n'ont pas toutes de signe"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in initialization differ in signedness"
msgstr "les cibles des pointeurs dans %s n'ont pas toutes de signe"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in %s differ in signedness"
msgid "pointer targets in return differ in signedness"
msgstr "les cibles des pointeurs dans %s n'ont pas toutes de signe"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "%s d'un type pointeur incompatible"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "assignment from incompatible pointer type"
msgstr "%s d'un type pointeur incompatible"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "initialization from incompatible pointer type"
msgstr "%s d'un type pointeur incompatible"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "return from incompatible pointer type"
@@ -17744,560 +17780,560 @@ msgstr "%s d'un type pointeur incompatible"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "utilisation invalide d'un tableau n'étant pas membre gauche"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "%s transforme un entier en pointeur sans transtypage"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "assignment makes pointer from integer without a cast"
msgstr "%s transforme un entier en pointeur sans transtypage"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "initialization makes pointer from integer without a cast"
msgstr "%s transforme un entier en pointeur sans transtypage"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, fuzzy, gcc-internal-format
#| msgid "%s makes pointer from integer without a cast"
msgid "return makes pointer from integer without a cast"
msgstr "%s transforme un entier en pointeur sans transtypage"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "%s transforme un pointeur en entier sans transtypage"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "assignment makes integer from pointer without a cast"
msgstr "%s transforme un pointeur en entier sans transtypage"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "initialization makes integer from pointer without a cast"
msgstr "%s transforme un pointeur en entier sans transtypage"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, fuzzy, gcc-internal-format
#| msgid "%s makes integer from pointer without a cast"
msgid "return makes integer from pointer without a cast"
msgstr "%s transforme un pointeur en entier sans transtypage"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, fuzzy, gcc-internal-format
#| msgid "incompatible type for argument %d of `%s'"
msgid "incompatible type for argument %d of %qE"
msgstr "type incompatible pour l'argument n°%d de « %s »"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of `%T' to `%T'"
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "type incompatible dans l'affectation de « %T » vers « %T »"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of `%T' to `%T'"
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "type incompatible dans l'affectation de « %T » vers « %T »"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "le C traditionel rejette l'initialisation automatique d'aggrégats"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, fuzzy, gcc-internal-format
#| msgid "(near initialization for `%s')"
msgid "(near initialization for %qs)"
msgstr "(près de l'initialisation de « %s »)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, fuzzy, gcc-internal-format
#| msgid "char-array initialized from wide string"
msgid "array initialized from parenthesized string constant"
msgstr "tableau de caractères initialisé à l'aide d'une chaîne large de caractères"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "initialisation d'un membre de tableau flexible"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "tableau de caractères initialisé à l'aide d'une chaîne large de caractères"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
#| msgid "int-array initialized from non-wide string"
msgid "wide character array initialized from non-wide string"
msgstr "tableau d'entier initialisé à l'aide d'une chaîne non-large"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
#| msgid "char-array initialized from wide string"
msgid "wide character array initialized from incompatible wide string"
msgstr "tableau de caractères initialisé à l'aide d'une chaîne large de caractères"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, fuzzy, gcc-internal-format
#| msgid "char-array initialized from wide string"
msgid "array of inappropriate type initialized from string constant"
msgstr "tableau de caractères initialisé à l'aide d'une chaîne large de caractères"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "tableau initialisé à l'aide de l'expression de tableau non constante"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "un élément de l'initialisation n'est pas une constante"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not constant"
msgid "initializer element is not a constant expression"
msgstr "un élément de l'initialisation n'est pas une constante"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "un élément de l'initialisation n'est pas évaluable lors du chargement"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "initialisation invalide"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "type de vecteur opaque ne peut être initialisé"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "groupe d'accolades superflu à la fin de l'initialisation"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "accolades manquantes autour de l'initialisation"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "accolades autour d'une initialisation de scalaire"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "initialisation d'un membre de tableau flexible dans un contexte imbriqué"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "initialisation manquante"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "initialisation vide de scalaire"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "éléments superflus dans l'initialisation de scalaire"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "index de tableau dans l'initialisation de quelque chose n'étant pas un tableau"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "nom de champ dans l'initialisation de quelque chose n'étant ni un enregistrement ni une union"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer exceeds array bounds"
msgid "array index in initializer not of integer type"
msgstr "index de tableau hors limites lors de l'initialisation"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "array index in initializer is not an integer constant expression"
msgstr "taille du tableau n'est pas une expression de constante de type entier"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "index de tableau non constant dans l'initialisation"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "index de tableau hors limites lors de l'initialisation"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "borne d'index vide lors de l'initialisation"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "plage d'index du tableau excédant les bornes lors de l'initialisation"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, fuzzy, gcc-internal-format
#| msgid "unknown field `%s' specified in initializer"
msgid "unknown field %qE specified in initializer"
msgstr "champ inconnu « %s » spécifié lors de l'initialisation"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "le champ initialisé par effet de bord a été écrasé"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, fuzzy, gcc-internal-format
#| msgid "initialized field with side-effects overwritten"
msgid "initialized field overwritten"
msgstr "le champ initialisé par effet de bord a été écrasé"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "éléments en excès dans l'initialisation de tableau de caractères"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "éléments en excès dans l'initialisation de la structure"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "initialisation non statique d'un membre de tableau flexible"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "éléments en excès dans l'initialisation d'union"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "le C traditionel rejette l'initialisation d'union"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "éléments en excès dans l'initialisation de tableau"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "éléments en excès dans l'initialisation du vecteur"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "éléments en excès dans l'initialisation d'un scalaire"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids `goto *expr;'"
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C interdit « goto *expr; »"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, fuzzy, gcc-internal-format
#| msgid "function declared `noreturn' has a `return' statement"
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "fonction déclarée avec « noreturn» utilisant le mot-clé « return »"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, fuzzy, gcc-internal-format
#| msgid "`return' with no value, in function returning non-void"
msgid "%<return%> with no value, in function returning non-void"
msgstr "« return » sans valeur dans une fonction retournant autre chose que void"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, fuzzy, gcc-internal-format
#| msgid "`return' with a value, in function returning void"
msgid "%<return%> with a value, in function returning void"
msgstr "« return » avec une valeur dans une fonction retournant un void"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
#| msgid "`return' with a value, in function returning void"
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "« return » avec une valeur dans une fonction retournant un void"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "cette fonction retourne l'adresse d'une variable locale"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "quantité du switch n'est pas un entier"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, fuzzy, gcc-internal-format
#| msgid "`long' switch expression not converted to `int' in ISO C"
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "expression « long » du switch non convertie en « int » par ISO C"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
#| msgid "case label must be a discrete constant expression"
msgid "case label is not an integer constant expression"
msgstr "l'étiquette du CASE doit être une expression de constante discrète"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "étiquette de « case » en dehors de tout switch"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, fuzzy, gcc-internal-format
#| msgid "`default' label not within a switch statement"
msgid "%<default%> label not within a switch statement"
msgstr "étiquette « default » en dehors de tout switch"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, fuzzy, gcc-internal-format
#| msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%Hon vous suggère des accolades explicitement pour éviter des « else » ambiguës"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "mot-clé « break » à l'extérieur de toute boucle ou « switch »"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "mot-clé « continue » à l'extérieur de toute boucle"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, fuzzy, gcc-internal-format
#| msgid "break statement not within loop or switch"
msgid "break statement used with OpenMP for loop"
msgstr "mot-clé « break » à l'extérieur de toute boucle ou « switch »"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, fuzzy, gcc-internal-format
#| msgid "%Hstatement with no effect"
msgid "statement with no effect"
msgstr "%Hdéclaration sans effet"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "la déclaration de l'expression a un type incomplet"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "le compteur de décalage vers la droite est négatif"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "compteur de décalage vers la droite >= à la largeur du type"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "le compteur de décalage vers la gauche est négatif"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "compteur de décalage vers la gauche >= à la largeur du type"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "operands to ?: have different types"
msgid "comparing vectors with different element types"
msgstr "opérande vers ?: a différents types"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, fuzzy, gcc-internal-format
#| msgid "operand constraints for `asm' differ in number of alternatives"
msgid "comparing vectors with different number of elements"
msgstr "contraintes de l'opérande pour « asm » diffèrent en nombre d'alternatives"
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "comparer des nombres flottants à l'aide de == ou != n'est pas sûr"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
#| msgid "comparison of distinct pointer types lacks a cast"
msgid "comparison of pointers to disjoint address spaces"
msgstr "il manque un transtypage pour comparer des types distincts de pointeur"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, fuzzy, gcc-internal-format
#| msgid "ISO C forbids comparison of `void *' with function pointer"
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C interdit la comparaison de « void * » avec un pointeur de fonction"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "il manque un transtypage pour comparer des types distincts de pointeur"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "comparaison entre un pointeur et un entier"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "comparaison de pointeurs complet et incomplet"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C interdit les comparaisons ordonnées de pointeurs vers des fonctions"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "comparaison ordonnée de pointeur avec le zéro entier"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "comparaison ordonnée de pointeur avec le zéro entier"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr ""
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, fuzzy, gcc-internal-format
#| msgid "array type value used where scalar is required"
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "valeur de type « array » utilisé là où un scalaire est attendu"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, fuzzy, gcc-internal-format
#| msgid "struct type value used where scalar is required"
msgid "used struct type value where scalar is required"
msgstr "valeur de type « struct » utilisé là où un scalaire est attendu"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, fuzzy, gcc-internal-format
#| msgid "union type value used where scalar is required"
msgid "used union type value where scalar is required"
msgstr "valeur de type « union » utilisé là où un scalaire est attendu"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "struct type value used where scalar is required"
msgid "used vector type where scalar is required"
msgstr "valeur de type « struct » utilisé là où un scalaire est attendu"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "%qE has invalid type for %<reduction%>"
msgstr "type retourné invalide pour la fonction « %#D »"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "type retourné invalide pour la fonction « %#D »"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, fuzzy, gcc-internal-format
#| msgid "`%s' is not a valid class name"
msgid "%qE is not a variable in clause %qs"
msgstr "« %s » n'est pas un nom de classe valide"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "instance de la variable « %s » est déclaré privée"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "instance de la variable « %s » est déclaré privée"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -18307,7 +18343,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "l'appel de fonction a une valeur d'aggrégat"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, fuzzy, gcc-internal-format
#| msgid "%Jsize of variable '%D' is too large"
msgid "size of variable %q+D is too large"
@@ -19196,54 +19232,54 @@ msgstr "%s : ne peut ouvrir en tant que fichier COFF"
msgid "library lib%s not found"
msgstr "bibliothèque lib%s introuvable"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "ne peut convertir en un type pointeur"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "valeur de pointeur utilisée là où une valeur à virgule flottante était attendue"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "valeur d'aggrégat utilisée là où un flottant était attendu"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "conversion vers un type incomplet"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
#| msgid "can't convert between vector values of different size"
msgid "can%'t convert between vector values of different size"
msgstr "ne peut convertir entre des valeurs de vecteurs de tailles différentes"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "valeur d'aggrégat utilisée là où un entier était attendu"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "valeur de pointeur utilisée là où un complexe était attendu"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "valeur d'aggrégat utilisée là où un complexe était attendu"
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
#| msgid "can't convert value to a vector"
msgid "can%'t convert value to a vector"
msgstr "ne peut convertir une valeur en vecteur"
-#: convert.c:1004
+#: convert.c:1002
#, fuzzy, gcc-internal-format
#| msgid "aggregate value used where a float was expected"
msgid "aggregate value used where a fixed-point was expected"
@@ -19412,7 +19448,7 @@ msgstr "le dominateur de %d devrait être %d, et non %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -19511,45 +19547,45 @@ msgstr "verify_flow_info a échoué"
msgid "stack limits not supported on this target"
msgstr "les limites de la pile ne sont pas supportées sur cette cible"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field `%s'"
msgid "mis-aligned access used for structure member"
msgstr "classe de stockage spécifiée pour le champ de structure « %s »"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field `%s'"
msgid "mis-aligned access used for structure bitfield"
msgstr "classe de stockage spécifiée pour le champ de structure « %s »"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr ""
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%D' redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%Jfonction « %D » redéclarée avec l'attribut non enligne"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%D' redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute warning: %s"
@@ -19632,7 +19668,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "vérification fold: arbre originale modifié par fold"
@@ -19643,7 +19679,7 @@ msgstr "vérification fold: arbre originale modifié par fold"
msgid "total size of local objects too large"
msgstr "la taille du tableau « %s » est trop grande"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, fuzzy, gcc-internal-format
#| msgid "impossible constraint in `asm'"
msgid "impossible constraint in %<asm%>"
@@ -20133,85 +20169,85 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait %s, obtenu %s dans %s, à %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
#| msgid "no return statement in function returning non-void"
msgid "using result of function returning %<void%>"
msgstr "« return » manquant dans une fonction devant retourner une valeur"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid lvalue in asm statement"
msgid "invalid lvalue in asm output %d"
msgstr "membre gauche invalide avec asm"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "output number %d not directly addressable"
msgid "memory input %d is not directly addressable"
msgstr "nombre de sortie %d n,est pas directement adressable"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "threadprivate variable %qE used in untied task"
msgstr "variable de registre « %s » utilisée dans une fonction imbriquée"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "iteration variable %qE should be private"
msgstr "instance de la variable « %s » est déclaré privée"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "iteration variable %qE should not be reduction"
msgstr "variable de registre « %s » utilisée dans une fonction imbriquée"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
#| msgid "local variable `%D' may not appear in this context"
msgid "%s variable %qE is private in outer context"
msgstr "variable locale « %D » ne peut apparaître dans ce contexte"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file `%s'"
msgid "could not close Go dump file: %m"
msgstr "ne peut ouvrir le fichier de vidange « %s »"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file `%s'"
msgid "could not open Go dump file %qs: %m"
@@ -20272,7 +20308,7 @@ msgstr ""
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -20422,48 +20458,48 @@ msgstr "champ « %s » déclaré comme une fonction"
msgid "function %qD redeclared as variable"
msgstr "%Jfonction « %D » redéclarée comme étant enligne"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -20579,7 +20615,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr ""
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
@@ -20962,9 +20998,9 @@ msgstr "ne peut utiliser « %s » comme le registre %s"
msgid "can%'t use %qs as a fixed register"
msgstr "ne peut utiliser « %s » comme le registre %s"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "nom de registre inconnu: %s"
@@ -21055,13 +21091,13 @@ msgstr "incapable de trouver un registre de déversement dans la classe « %s »"
msgid "%<asm%> operand requires impossible reload"
msgstr "opérande « asm » requiert une recharge impossible"
-#: reload1.c:6093
+#: reload1.c:6107
#, fuzzy, gcc-internal-format
#| msgid "`asm' operand constraint incompatible with operand size"
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "contrainte de l'opérande « asm » incompatible avec la taille de l'opérande"
-#: reload1.c:7899
+#: reload1.c:7913
#, fuzzy, gcc-internal-format
#| msgid "output operand is constant in `asm'"
msgid "output operand is constant in %<asm%>"
@@ -21310,7 +21346,7 @@ msgstr "attribut empaqueté provoque un alignement inefficient"
msgid "packed attribute is unnecessary"
msgstr "attribut empaqueté n'est pas nécessaire"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, fuzzy, gcc-internal-format
#| msgid "%Jalignment of '%D' is greater than maximum object file alignment. Using %d"
msgid "alignment of array elements is greater than element size"
@@ -21543,7 +21579,7 @@ msgstr "Activer l'utilisation d'instruction DB"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -21558,7 +21594,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr ""
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -21573,7 +21609,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
#| msgid "namespace `%D' not allowed in using-declaration"
msgid "asm not allowed in atomic transaction"
@@ -21612,689 +21648,689 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
#| msgid "attributes are not allowed on a function-definition"
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "attributs ne sont pas permis dans la définition de fonction"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid left operand of %s"
msgid "invalid first operand of MEM_REF"
msgstr "opérande de gauche invalide pour %s"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid left operand of %s"
msgid "invalid offset operand of MEM_REF"
msgstr "opérande de gauche invalide pour %s"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
#| msgid "non-integral text length"
msgid "non-integral used in condition"
msgstr "longueur de texte non entier"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid conditional operand"
msgstr "contrainte invalide pour l'opérande"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "contrainte invalide pour l'opérande"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, fuzzy, gcc-internal-format
#| msgid "Invalid reference type"
msgid "invalid reference prefix"
msgstr "Type de référence invalide"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "opérande invalide dans l'instruction"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, fuzzy, gcc-internal-format
#| msgid "base operand of `->' is not a pointer"
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "l'opérande de base de «->» n'est pas un pointeur"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid expression for min lvalue"
msgstr "expression invalide comme opérande"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in indirect reference"
msgstr "opérande invalide dans l'instruction"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operands to array reference"
msgstr "opérandes invalides pour le binaire %s"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
#| msgid "subscript missing in array reference"
msgid "type mismatch in array reference"
msgstr "indice manquant dans la référence du tableau"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, fuzzy, gcc-internal-format
#| msgid "subscript missing in array reference"
msgid "type mismatch in array range reference"
msgstr "indice manquant dans la référence du tableau"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in real/imagpart reference"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in component reference"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "transtypage d'un pointeur vers un entier de taille différente"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid %%s operand"
msgid "invalid address operand in MEM_REF"
msgstr "opérande %%s invalide"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid left operand of %s"
msgid "invalid offset operand in MEM_REF"
msgstr "opérande de gauche invalide pour %s"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, fuzzy, gcc-internal-format
#| msgid "invalid left operand of %s"
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "opérande de gauche invalide pour %s"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, fuzzy, gcc-internal-format
#| msgid "-split has no argument."
msgid "gimple call has no target"
msgstr "-split n'a pas d'argument."
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid function in gimple call"
msgstr "déclaration de fonction invalide"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
#| msgid "function not inlinable"
msgid "non-function in gimple call"
msgstr "fonction ne peut être enligne"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "invalid pure const state for function"
msgstr "type retourné invalide pour la fonction « %#D »"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid LHS in gimple call"
msgstr "PC invalide dans la numéro de ligne de la table"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
#| msgid "invalid version number format"
msgid "invalid conversion in gimple call"
msgstr "format de numéro de verson invalide"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid static chain in gimple call"
msgstr "PC invalide dans la numéro de ligne de la table"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
#| msgid "invalid argument of `%s' attribute"
msgid "invalid argument to gimple call"
msgstr "type d'argument invalide pour l'attribut « %s »"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in gimple comparison"
msgstr "opérande invalide dans l'instruction"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
#| msgid "incompatible operands to %s"
msgid "mismatching comparison operand types"
msgstr "type d'opérandes incompatibles pour %s"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "Invalid method declaration, return type required"
msgid "invalid vector comparison resulting type"
msgstr "Déclaration de méthode invalide, type retourné requis"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in unary operation"
msgstr "opérande invalide dans l'instruction"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
#| msgid "Invalid type expression"
msgid "invalid types in nop conversion"
msgstr "Type d'expression invalide"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid types in address space conversion"
msgstr "expression invalide comme opérande"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
#| msgid "Invalid type expression"
msgid "invalid types in fixed-point conversion"
msgstr "Type d'expression invalide"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
#| msgid "invalid suffix \"%.*s\" on floating constant"
msgid "invalid types in conversion to floating point"
msgstr "suffixe « %.*s » invalide pour une constante flottante"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
#| msgid "invalid type `void' for new"
msgid "invalid types in conversion to integer"
msgstr "type « void » invalide pour new"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, fuzzy, gcc-internal-format
#| msgid "invalid version number format"
msgid "non-trivial conversion in unary operation"
msgstr "format de numéro de verson invalide"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operands in binary operation"
msgstr "opérandes invalides pour le binaire %s"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in complex expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in shift expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector shift expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, fuzzy, gcc-internal-format
#| msgid "Specify the version of the floating point emulator"
msgid "non-element sized vector shift of floating point vector"
msgstr "Spécifier la version de l'émulateur en virgule flottante"
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening vector shift expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid (pointer) operands to plus/minus"
msgstr "opérandes invalides pour le binaire %s"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in pointer plus expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in binary expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in ternary operation"
msgstr "opérande invalide dans l'instruction"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in fused multiply-add expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector permute expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
#| msgid "']' expected, invalid type expression"
msgid "vector types expected in vector permute expression"
msgstr "«]» attendu, type d'expression invalide"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid mask type in vector permute expression"
msgstr "utilisation invalide d'expression void"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "non-trivial conversion at assignment"
msgstr "membre gauche de l'affectation invalide"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
#| msgid "invalid number in #if expression"
msgid "invalid operand in unary expression"
msgstr "nombre invalide dans l'expression #if"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
#| msgid "mode mismatch in %s expression"
msgid "type mismatch in address expression"
msgstr "non concordance de mode dans l'expression %s"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
#| msgid "invalid indirect memory address"
msgid "invalid rhs for gimple memory store"
msgstr "adresse mémoire d'indirection invalide"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in return statement"
msgstr "opérande invalide dans l'instruction"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
#| msgid "Invalid init statement"
msgid "invalid conversion in return statement"
msgstr "Déclaration init invalide"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "goto destination is neither a label nor a pointer"
msgstr "la valeur indicée n'est ni un tableau ni un pointeur"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%s code"
msgid "invalid operand to switch statement"
msgstr "opérande invalide pour le code %%s"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
#| msgid "format string has invalid operand number"
msgid "incorrect setting of landing pad number"
msgstr "la chaîne de format a un nombre invalide d'opérandes"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%p code"
msgid "invalid comparison code in gimple cond"
msgstr "opérande invalide pour le code %%p"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "invalid labels in gimple cond"
msgstr "membre gauche de l'affectation invalide"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "adresse invalide"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
#| msgid "missing field"
msgid "missing PHI def"
msgstr "champ manquant"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid PHI argument"
msgstr "type d'argument invalide"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "incompatible types in %s"
msgid "incompatible types in PHI argument %u"
msgstr "type incompatibles dans %s"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, fuzzy, gcc-internal-format
#| msgid "verify_flow_info failed"
msgid "verify_gimple failed"
msgstr "verify_flow_info a échoué"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
#| msgid "Invalid init statement"
msgid "in statement"
msgstr "Déclaration init invalide"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "flow control insn inside a basic block"
msgid "control flow in the middle of basic block %d"
msgstr "insn de contrôle de flot à l'intérieur d'un bloc de base"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Fallthru edge after unconditional jump %i"
msgid "fallthru edge after a control statement in bb %d"
msgstr "Arrête fallthru après le branchement inconditionnel %i"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "explicit instantiation of `%#D'"
msgid "explicit goto at end of bb %d"
msgstr "instanciation explicite de « %#D »"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
#| msgid "mode in label is not discrete"
msgid "case labels not sorted: "
msgstr "mode dans l'étiquette n'est pas discret"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "missing field"
msgid "missing edge %i->%i"
msgstr "champ manquant"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
#| msgid "`noreturn' function does return"
msgid "%<noreturn%> function does return"
msgstr "fonction avec « noreturn » effectue des retour"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "contrôle a atteint la fin non void de la fonction"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
#| msgid "ignoring return value of `%D', declared with attribute warn_unused_result"
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "valeur à retourner « %D » ignorée, déclaré avec l'attribut warn_unused_result"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "valeur à retourner d'une fonction ignorée, déclaré avec l'attribut warn_unused_result"
@@ -22360,84 +22396,84 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr "insn erronée dans l'arrête fallthru"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it contains a nonlocal goto"
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle contient un goto qui n'est pas local"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it uses variable sized variables"
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise une taille variable de variables"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it uses alloca (override using the always_inline attribute)"
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise alloca (écrasant l'utiliastion de l'attribut always_inline)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it uses setjmp"
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it uses variable argument lists"
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise une liste variable d'arguments"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it uses setjmp-longjmp exception handling"
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise le traitement d'exception setjmp-longjmp"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it contains a nonlocal goto"
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle contient un goto qui n'est pas local"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it uses variable sized variables"
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise une taille variable de variables"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it contains a computed goto"
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle contient un goto calculé"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it is suppressed using -fno-inline"
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "%Jfonction « %F » ne jamais être enlignée parce qu'elle supprime l'utilisation de -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction '%F' can never be inlined because it uses attributes conflicting with inlining"
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "%Jfonction « %F » ne jamais être enlignée parce qu'elle utilise un attribut en conflit avec l'enlignage"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "%Jinlining failed in call to '%F': %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "%Jl'enlignage de l'appel à « %F »: %s a échoué"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "appelé d'ici"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, fuzzy, gcc-internal-format
#| msgid "%Jinlining failed in call to '%F': %s"
msgid "inlining failed in call to %q+F: %s"
@@ -22663,7 +22699,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr "verify_flow_info a échoué"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid "%qD was declared here"
@@ -22729,57 +22765,57 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is outside array bounds"
msgstr "l'indice du tableau n'est pas un entier"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is above array bounds"
msgstr "l'indice du tableau n'est pas un entier"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is below array bounds"
msgstr "l'indice du tableau n'est pas un entier"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, fuzzy, gcc-internal-format
#| msgid "comparison is always false due to limited range of data type"
msgid "comparison always false due to limited range of data type"
msgstr "comparaison est toujours fausse en raison d'une gamme limitée de type de données"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, fuzzy, gcc-internal-format
#| msgid "comparison is always true due to limited range of data type"
msgid "comparison always true due to limited range of data type"
msgstr "comparaison est toujours vraie en raison d'une gamme limitée de type de données"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -22790,25 +22826,25 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr "attribut « %s » peut seulement être appliqué aux définitions de classes"
-#: tree.c:5459
+#: tree.c:5460
#, fuzzy, gcc-internal-format
#| msgid "%J'%D' redeclared without dllimport attribute after being referenced with dllimport linkage"
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%J« %D » redéclaré sans attribut dllimport après avoir été référencé avec lien dllimport."
-#: tree.c:5471
+#: tree.c:5472
#, fuzzy, gcc-internal-format
#| msgid "%J'%D' redeclared without dllimport attribute after being referenced with dllimport linkage"
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%J« %D » redéclaré sans attribut dllimport après avoir été référencé avec lien dllimport."
-#: tree.c:5486
+#: tree.c:5487
#, fuzzy, gcc-internal-format
#| msgid "%J'%D' redeclared without dllimport attribute after being referenced with dllimport linkage"
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%J« %D » redéclaré sans attribut dllimport après avoir été référencé avec lien dllimport."
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -22823,160 +22859,160 @@ msgstr "%J« %D » redéclaré sans attribut dllimport après avoir été référencé ave
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qE attribute ignored"
msgstr "attribut « %s » ignoré"
-#: tree.c:5569
+#: tree.c:5570
#, fuzzy, gcc-internal-format
#| msgid "%Jinline function '%D' is declared as dllimport: attribute ignored."
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "%Jfonction enligne « %D » est déclarée en tant que dllimport: attribut ignoré."
-#: tree.c:5577
+#: tree.c:5578
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction `%D' definition is marked dllimport."
msgid "function %q+D definition is marked dllimport"
msgstr "%Jdéfinition de la fonction « %D » est marquée dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, fuzzy, gcc-internal-format
#| msgid "%Jvariable `%D' definition is marked dllimport."
msgid "variable %q+D definition is marked dllimport"
msgstr "%Jdéfinition de la variable « %D » est marquée dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, fuzzy, gcc-internal-format
#| msgid "%Jexternal linkage required for symbol '%D' because of '%s' attribute."
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "%Jédition de lien externe requise pour le symbole « %D » en raison de l'attribut « %s »"
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr ""
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "tableaux de fonctions n'a pas grand sens"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "Le type retourné d'une fonction ne peut être une fonction"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait %s, obtenu %s dans %s, à %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait %s, obtenu %s dans %s, à %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait classe « %c », obtenu « %c » (%s) dans %s, à %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait classe « %c », obtenu « %c » (%s) dans %s, à %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait %s, obtenu %s dans %s, à %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait %s, obtenu %s dans %s, à %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "vérification de l'arbre: accès de elt %d de tree-vec avec %d elts dans %s, à %s:%d"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "vérification de l'arbre: opérande accédé %d de %s avec %d opérandes dans %s, à %s:%d"
-#: tree.c:9052
+#: tree.c:9056
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "vérification de l'arbre: opérande accédé %d de %s avec %d opérandes dans %s, à %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "« %s » est obsolète (déclaré à %s:%d)"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "« %s » est obsolète (déclaré à %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "« %s » est obsolète (déclaré à %s:%d)"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "« %s » est obsolète (déclaré à %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "type est obsolète (déclaré à %s:%d)"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "type est obsolète (déclaré à %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated"
msgid "%qE is deprecated: %s"
msgstr "« %s » est obsolète"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
#| msgid "`%s' is deprecated"
msgid "%qE is deprecated"
msgstr "« %s » est obsolète"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated"
msgid "type is deprecated: %s"
msgstr "type est obsolète"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "type est obsolète"
@@ -23027,168 +23063,174 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, fuzzy, gcc-internal-format
+#| msgid "%J%D causes a section type conflict"
+msgid "%+D causes a section type conflict"
+msgstr "%J%D cause un conflit du type de section"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%J%D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%J%D cause un conflit du type de section"
-#: varasm.c:958
+#: varasm.c:964
#, fuzzy, gcc-internal-format
#| msgid "%Jalignment of '%D' is greater than maximum object file alignment. Using %d"
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "%Jalignement de « %D » est plus grand que l'alignement maximal du fichier objet. %d est utilisé."
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, fuzzy, gcc-internal-format
#| msgid "%Jregister name not specified for '%D'"
msgid "register name not specified for %q+D"
msgstr "%Jnom de registre n'est pas spécifié pour « %D »"
-#: varasm.c:1207
+#: varasm.c:1213
#, fuzzy, gcc-internal-format
#| msgid "%Jinvalid register name for '%D'"
msgid "invalid register name for %q+D"
msgstr "%Jnom de registre invalide pour « %D »"
-#: varasm.c:1209
+#: varasm.c:1215
#, fuzzy, gcc-internal-format
#| msgid "%Jdata type of '%D' isn't suitable for a register"
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "%Jtype de données de « %D » n'est pas applicable pour un registre"
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr ""
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "registre utilisé pour deux variables registres globales"
-#: varasm.c:1218
+#: varasm.c:1224
#, fuzzy, gcc-internal-format
#| msgid "%Jregister specified for '%D' isn't suitable for data type"
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "%Jregistre spécifié pour « %D » n'est applicable à un type de données"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "variable globale registre a une valeur initiale"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1270
+#: varasm.c:1276
#, fuzzy, gcc-internal-format
#| msgid "%Jregister name given for non-register variable '%D'"
msgid "register name given for non-register variable %q+D"
msgstr "%Jnom de registre donné pour une variable non registre « %D »"
# FIXME
-#: varasm.c:1387
+#: varasm.c:1393
#, fuzzy, gcc-internal-format
#| msgid "stack limits not supported on this target"
msgid "global destructors not supported on this target"
msgstr "les limites de la pile ne sont pas supportées sur cette cible"
# FIXME
-#: varasm.c:1453
+#: varasm.c:1459
#, fuzzy, gcc-internal-format
#| msgid "stack limits not supported on this target"
msgid "global constructors not supported on this target"
msgstr "les limites de la pile ne sont pas supportées sur cette cible"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "thread-local COMMON data n'est pas implanté"
-#: varasm.c:1879
+#: varasm.c:1885
#, fuzzy, gcc-internal-format
#| msgid "%Jrequested alignment for '%D' is greater than implemented alignment of %d"
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "%Jrequête d'alignement pour '%D' est plus grand que l'alignement implanté de %d"
-#: varasm.c:4566
+#: varasm.c:4603
#, fuzzy, gcc-internal-format
#| msgid "initializer for integer value is too complicated"
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "initialisation d'entier trop compliquée"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "l'initialisation d'une valeur à virgule flottante n'est pas une constante à virgule flottante"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
#| msgid "invalid initial value for member `%s'"
msgid "invalid initial value for member %qE"
msgstr "valeur initiale invalide pour le membre « %s »"
-#: varasm.c:5224
+#: varasm.c:5261
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' must be public"
msgid "weak declaration of %q+D must be public"
msgstr "%Jdéclaration faible de « %D » doit être publique"
-#: varasm.c:5226
+#: varasm.c:5263
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' not supported"
msgid "weak declaration of %q+D not supported"
msgstr "%Jdéclaration faible de « %D » n'est pas supportée"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "seulement les alias faibles sont supportés dans cette configuration"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "weakref is not supported in this configuration"
msgstr "-m%s n'est pas supporté par cette configuration"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "ifunc is not supported in this configuration"
msgstr "-m%s n'est pas supporté par cette configuration"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%D' to have static linkage"
msgid "weakref %q+D must have static linkage"
msgstr "ne peut déclarer la fonction membre « %D » comme ayant un lien statique"
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
#| msgid "alias definitions not supported in this configuration; ignored"
msgid "alias definitions not supported in this configuration"
msgstr "définitions d'alias ne sont pas supportés dans cette configuration; ignoré"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "visibilité de l'attribut n'est pas supporté dans cette configuration; ignoré"
@@ -23232,8 +23274,8 @@ msgstr "%J« %D » n'est pas défini à l'extérieur de la portée de la fonction"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "longueur de la chaîne « %d » plus grande que la longueur « %d » que les compilateurs ISO C%d doivent supporter"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "débordement dans l'expression de la constante"
@@ -23470,7 +23512,7 @@ msgstr "usage en arithmétique d'un pointeur vers une fonction membre"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "l'adresse de « %D » sera toujours évaluée comme étant « true »"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "parenthèses suggérées autour de l'affectation utilisée comme valeur de vérité"
@@ -23938,42 +23980,42 @@ msgstr "attribut « %s » ignoré pour « %s »"
msgid "invalid vector type for attribute %qE"
msgstr "type de vecteur invalide pour l'attribut « %s »"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "attribut non nul sans argument sur un non-prototype"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "nonnull argument has invalid operand number (arg %lu)"
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "un argument non nul a un nombre d'opérande invalide (argument %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "un argument non nul a un nombre d'opérande hors des bornes (arg %lu, opérande %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
@@ -24021,13 +24063,13 @@ msgstr "l'attribut « %s » requiert un argument de type constante entière"
msgid "%qE attribute only applies to variadic functions"
msgstr "attribut « %s » s'applique seulement aux fonctions"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, fuzzy, gcc-internal-format
#| msgid "requested init_priority is not an integer constant"
msgid "requested position is not an integer constant"
msgstr "init_priority demandé n'est pas une constante entière"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
@@ -24088,7 +24130,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, fuzzy, gcc-internal-format
#| msgid "attempt to take address of bit-field structure member `%D'"
msgid "attempt to take address of bit-field structure member %qD"
@@ -24895,93 +24937,93 @@ msgid "ignoring #pragma %s %s"
msgstr "#pragma %s %s ignoré"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
#| msgid "stray '%c' in program"
msgid "stray %<@%> in program"
msgstr "« %c » perdu dans le programme"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, fuzzy, gcc-internal-format
#| msgid "stray '%c' in program"
msgid "stray %qs in program"
msgstr "« %c » perdu dans le programme"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "caractère %c de terminaison manquant"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, fuzzy, gcc-internal-format
#| msgid "stray '%c' in program"
msgid "stray %qc in program"
msgstr "« %c » perdu dans le programme"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, fuzzy, gcc-internal-format
#| msgid "stray '\\%o' in program"
msgid "stray %<\\%o%> in program"
msgstr "« \\%o » perdu dans le programme"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "cette constante décimale est « unsigned » seulement en C90 ISO"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "cette constante décimale serait « unsigned » en C90 ISO"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for \"%s\" type"
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "constante entière trop grande pour le type « %s »"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
#| msgid "invalid suffix \"%.*s\" on floating constant"
msgid "unsuffixed float constant"
msgstr "suffixe « %.*s » invalide pour une constante flottante"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, fuzzy, gcc-internal-format
#| msgid "more than one 'f' suffix on floating constant"
msgid "unsupported non-standard suffix on floating constant"
msgstr "plus d'un « f » en suffixe sur une constante flottante"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, fuzzy, gcc-internal-format
#| msgid "invalid suffix \"%.*s\" on floating constant"
msgid "non-standard suffix on floating constant"
msgstr "suffixe « %.*s » invalide pour une constante flottante"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, fuzzy, gcc-internal-format
#| msgid "floating constant exceeds range of \"%s\""
msgid "floating constant exceeds range of %qT"
msgstr "constante en nombre flottant excédant les limites de « %s »"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, fuzzy, gcc-internal-format
#| msgid "floating constant out of range"
msgid "floating constant truncated to zero"
msgstr "constante flottante est hors gamme"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr ""
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, fuzzy, gcc-internal-format
#| msgid "possible start of unterminated string literal"
msgid "unsupported non-standard concatenation of string literals"
msgstr "début possible d'une chaîne de mot non terminée"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "le C traditionel rejette la concaténation de chaînes de constantes"
@@ -25002,7 +25044,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
#| msgid "Invalid type-declaration attribute at %0"
msgid "invalid type for iteration variable %qE"
@@ -25014,25 +25056,25 @@ msgstr "type d'attribut de déclaration invalide à %0"
msgid "%qE is not initialized"
msgstr "initialisation manquante"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, fuzzy, gcc-internal-format
#| msgid "missing '(' after predicate"
msgid "missing controlling predicate"
msgstr "« ( » manquante après le prédicat"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
#| msgid "Invalid control expression"
msgid "invalid controlling predicate"
msgstr "Expression de contrôle invalide"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
#| msgid "missing index expression"
msgid "missing increment expression"
msgstr "expresion d'index manquante"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
#| msgid "Invalid control expression"
msgid "invalid increment expression"
@@ -25968,7 +26010,7 @@ msgstr "latence de la cache L%d inconnue pour %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "valeur « %s » erronée pour -mmemory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -26154,55 +26196,55 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to functions"
msgid "%qE attribute only applies to functions"
msgstr "attribut « %s » s'applique seulement aux fonctions"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "incapable de calculer la localisation réelle de la pile de paramètres"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
#| msgid "argument `%d' is not a constant"
msgid "argument must be a constant"
msgstr "l'argument de « %d » n'est pas une constante"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "sélecteur doit être un immédiat"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "masque doit être un immédiat"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "pas de registre bas disponible pour faire ressortir les registres du haut"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "routines d'interruption de service ne peuvent être codées en mode THUMB"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -26219,101 +26261,119 @@ msgstr "%Jvariable initialisé « %D » est marquée dllimport"
msgid "static variable %q+D is marked dllimport"
msgstr "%Jvariable statique « %D » est marquée dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-traditional and -ansi are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-traditional et -ansi sont mutuellement exclusives"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "`-%c' option must have argument"
+msgid "%qs function cannot have arguments"
+msgstr "l'option « -%c » requière un argument"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "function cannot be inline"
+msgid "%qs function cannot return a value"
+msgstr "fonction ne pas pas être enligne"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "Nombre de registres utilisés pour passer les arguments entiers"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr ""
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr ""
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr ""
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "seuls les variables non initialisées peuvent être placées dans une section .noinit"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "seules les variables initialisées peuvent être placées dans la zone mémoire du programme"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, fuzzy, gcc-internal-format
#| msgid "MCU `%s' supported for assembler only"
msgid "MCU %qs supported for assembler only"
msgstr "MCU « %s » est supporté pour l'assembleur seulement"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "repetition count is not an integer constant"
msgid "%s expects a compile time integer constant"
msgstr "compteur de répétition n'est pas une constante entière"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -26446,71 +26506,71 @@ msgstr "opérande invalide pour le modificateur « b »"
msgid "internal error: bad register: %d"
msgstr "erreur interne: registre erroné: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "erreur interne: effet de bord de insn sideeffect-insn ayant un effet principal"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, fuzzy, gcc-internal-format
#| msgid "unknown relocation unspec"
msgid "unknown cc_attr value"
msgstr "relocalisation unspec inconnue"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "erreur interne: cris_side_effect_mode_ok avec des opérandes erronées"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d n'est pas utilisable, n'est pas entre 0 et %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "spécification de version CRIS inconnue dans -march= ou -mcpu= : %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "spécification de version CRIS inconnue dans -mtune= : %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC et -fpic ne sont pas supportées par cette configuration"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "l'option particulière -g est invalide avec -maout et -melinux"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "unknown insn mode"
msgid "unknown src"
msgstr "mode insn inconnu"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "unknown insn mode"
msgid "unknown dest"
msgstr "mode insn inconnu"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "trame de pile trop grande: %d octets"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
#| msgid "emitting PIC operand, but PIC register isn't set up"
msgid "emitting PIC operand, but PIC register isn%'t set up"
@@ -26682,454 +26742,454 @@ msgstr "ne peut lire le fichier PCH: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "ne peut obtenir la position dans le fichier PCH: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -tune= switch"
msgid "bad value (%s) for %stune=%s %s"
msgstr "valeur erronée (%s) pour l'option -tune="
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, fuzzy, gcc-internal-format
#| msgid "code model `%s' not supported in the %s bit mode"
msgid "code model %qs not supported in the %s bit mode"
msgstr "model de code « %s » n'est pas supporté dans le mode %s bits"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %qs not supported in x32 mode"
msgstr "model de code %s n'est pas supporté en mode PIC"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %s does not support PIC mode"
msgstr "model de code %s n'est pas supporté en mode PIC"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s n'est pas supporté par cette configuration"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "mode %i bits pas compilé en"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "le processeur sélectionné ne supporte pas le jeu d'instructions x86-64"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -march= switch"
msgid "bad value (%s) for %sarch=%s %s"
msgstr "valeur erronée (%s) pour l'option -march="
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d n'est pas entre 0 et %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "-fprefetch-loop-arrays not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-fprefetch-loop-arrays n'est pas supporté pour cette machine cible"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d n'est pas entre %d et 12"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred-stack-boundary=%d n'est pas entre %d et 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "jeu d'instructions SSE désactivé, arithmétique 387 est utilisé"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "jeu d'instructions 387 désactivé, arithmétique SSE est utilisé"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, fuzzy, gcc-internal-format
#| msgid "mode of SYN incompatible with value"
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr "mode de SYN incompatible avec la valeur"
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unknown cpu: -mcpu=%s"
msgid "unknown option for -mrecip=%s"
msgstr "Processeur inconnu : -mcpu=%s"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "les attributs fastcall et regparm ne sont pas compatibles"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "regparam and thiscall attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%qE attribute requires an integer constant argument"
msgstr "l'attribut « %s » requiert un argument de type constante entière"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
#| msgid "argument to `%s' attribute larger than %d"
msgid "argument to %qE attribute larger than %d"
msgstr "l'argument pour l'attribut « %s » est plus grand que %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and cdecl attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and thiscall attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "stdcall and cdecl attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "stdcall and fastcall attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "stdcall and thiscall attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "cdecl and thiscall attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr ""
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, fuzzy, gcc-internal-format
#| msgid "-march=%s is not compatible with the selected ABI"
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "-march=%s n'est pas compatible avec l'ABI sélectionné"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, fuzzy, gcc-internal-format
#| msgid "MMX vector argument without MMX enabled changes the ABI"
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "l'argument vecteur SSE sans autorisation MXX modifie l'ABI "
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, fuzzy, gcc-internal-format
#| msgid "SSE vector return without SSE enabled changes the ABI"
msgid "SSE register return with SSE disabled"
msgstr "vecteur SSE retourné sans autorisation SSE des changements de l'ABI "
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, fuzzy, gcc-internal-format
#| msgid "SSE vector argument without SSE enabled changes the ABI"
msgid "SSE register argument with SSE disabled"
msgstr "l'argument vecteur SSE sans autorisation SSE modifie l'ABI "
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "l'argument vecteur SSE sans autorisation SSE modifie l'ABI "
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "l'argument vecteur SSE sans autorisation MXX modifie l'ABI "
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "vecteur SSE retourné sans autorisation SSE des changements de l'ABI "
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, fuzzy, gcc-internal-format
#| msgid "MMX vector argument without MMX enabled changes the ABI"
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "l'argument vecteur SSE sans autorisation MXX modifie l'ABI "
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "-mips%d does not support 64 bit fp registers"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "-mips%d ne supporte pas les registres FP de 64 bits"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "registres étendus n'a pas de demis hauts"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "taille d'opérande non supportée pour un registre étendu"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 2-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
#| msgid "shift must be an immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "décalage doit être un immédiat"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the third argument must be an 8-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 1-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
#| msgid "argument 3 must be a 4-bit unsigned literal"
msgid "the last argument must be a 4-bit immediate"
msgstr "argument 3 doit être un litéral non signé de 4 bits"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 1-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 5-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the next to last argument must be an 8-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 8-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 32-bit immediate"
msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, fuzzy, gcc-internal-format
#| msgid "selector must be an integer constant in the range 0..%i"
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "le sélecteur doit être une constante entière entre les bornes 0..%i"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, fuzzy, gcc-internal-format
#| msgid "invalid option %s"
msgid "%qE needs isa option %s"
msgstr "option invalide %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
#| msgid "mask must be an immediate"
msgid "last argument must be an immediate"
msgstr "masque doit être un immédiat"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, fuzzy, gcc-internal-format
#| msgid "ABS argument must be discrete or real mode"
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "argument ABS doit être en mode discret ou réel"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to variables"
msgid "%qE attribute only available for 32-bit"
msgstr "attribut « %s » s'applique seulement aux variables"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
#| msgid "argument of `%s' attribute is not a string constant"
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "argument de l'attribut « %s » n'est pas une chaîne de constante"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
#| msgid "`%s' incompatible attribute ignored"
msgid "%qE incompatible attribute ignored"
@@ -27209,19 +27269,19 @@ msgstr "%Jl'attribut de la zone d'adresse ne peut pas être spécifié pour des fon
msgid "%qE attribute requires a string constant argument"
msgstr "l'attribut « %s » requiert un argument de type constante entière"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "valeur de -mfixed-range doit avoir la forme REG1-REG2"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s est une étendue vide"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
#| msgid "argument of `%s' attribute is not a string constant"
msgid "version attribute is not a string"
@@ -27295,7 +27355,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "%Jattributs de section ne sont pas supportés pour la cible"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not an integer constant"
msgid "%qE attribute argument not an integer constant"
@@ -27358,7 +27418,7 @@ msgstr "%Jattribut de section n'est pas permis pour « %D »"
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "expression limitant la pile n'est pas supportée"
@@ -27924,29 +27984,29 @@ msgstr "MMIX interne: %s n'est pas un entier pouvant décalé"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, fuzzy, gcc-internal-format
#| msgid "PIC code generation is not supported in the portable runtime model\n"
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "La génération de code PIC n'est pas supportée dans le modèle portable d'exécution\n"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, fuzzy, gcc-internal-format
#| msgid "PIC code generation is not compatible with fast indirect calls\n"
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "La génération de code PIC n'est pas compatible avec les appels indirects rapides.\n"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "L'option -g est seulement supportée lorsque GAS est utilisé sur ce processeur,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "option -g désactivée"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -28402,91 +28462,91 @@ msgstr "erreur interne - mauvaise fonction interne « %s »"
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, fuzzy, gcc-internal-format
#| msgid "stack frame too big"
msgid "stack frame too large"
msgstr "trame de pile trop grande"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "pas de profilage du code de 64 bits pour cet ABI"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, fuzzy, gcc-internal-format
#| msgid "use of 'long' in AltiVec types is deprecated; use 'int'"
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "utilisation du type 'long' Altivec est obsolète; utilisez 'int'"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, fuzzy, gcc-internal-format
#| msgid "use of 'long' in AltiVec types is deprecated; use 'int'"
msgid "use of boolean types in AltiVec types is invalid"
msgstr "utilisation du type 'long' Altivec est obsolète; utilisez 'int'"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, fuzzy, gcc-internal-format
#| msgid "use of 'long' in AltiVec types is deprecated; use 'int'"
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "utilisation du type 'long' Altivec est obsolète; utilisez 'int'"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, fuzzy, gcc-internal-format
#| msgid "use of 'long' in AltiVec types is deprecated; use 'int'"
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "utilisation du type 'long' Altivec est obsolète; utilisez 'int'"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, fuzzy, gcc-internal-format
#| msgid "use of 'long' in AltiVec types is deprecated; use 'int'"
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "utilisation du type 'long' Altivec est obsolète; utilisez 'int'"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, fuzzy, gcc-internal-format
#| msgid "use of 'long' in AltiVec types is deprecated; use 'int'"
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "utilisation du type 'long' Altivec est obsolète; utilisez 'int'"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid use of %D"
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "utilisation invalide de %D"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "\"%s\" is not defined"
msgid "%s\"%s\"%s is not allowed"
msgstr "« %s » n'est pas défini"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr ""
@@ -28545,12 +28605,12 @@ msgstr "trampolines ne sont pas supportées"
msgid "-m64 not supported in this configuration"
msgstr "-m%s n'est pas supporté par cette configuration"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 requiert un processeur PowerPC64"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
#| msgid "Emit code compatible with TI tools"
msgid "-mcmodel incompatible with other toc options"
@@ -28568,64 +28628,64 @@ msgstr "Produire du code compatible avec les outils TI"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET n'est pas supporté"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "valeur erronée pour -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "valeur erronée pour -msdata=%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable et -msdata=%s sont incompatibles"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s et -msdata=%s sont incompatibles"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s et -mcall-%s sont incompatibles"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable et -mno-minimal-toc sont incompatibles"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable et -mcall-%s sont incompatibles"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC et -mcall-%s sont incompatibles"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc doit être pour un système à octets de poids fort"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr ""
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s n'est pas supporté par cette configuration"
@@ -28744,59 +28804,59 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs n'est pas supporté par la sous-cible"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to interrupt functions"
msgid "%qE attribute only applies to interrupt functions"
msgstr "attribut « %s » s'applique seulement à des fonctions d'interruption"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute is not supported on this platform"
msgid "%qE attribute is supported only for SH2A"
msgstr "attribut « %s » n'est pas supporté sur cette plate-forme"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "attribut interrupt_handler n'est pas compatible avec -m5-compact"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to functions"
msgid "%qE attribute only applies to SH2A"
msgstr "attribut « %s » s'applique seulement aux fonctions"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not an integer constant"
msgid "%qE attribute argument should be between 0 to 255"
msgstr "l'attribut « %s » de l'argument n'est pas une contante entière"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not a string constant"
msgid "%qE attribute argument not a string constant"
msgstr "l'attribut « %s » de l'argument n'est pas une contante chaîne"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
#| msgid "Use the BK register as a general purpose register"
msgid "need a second call-clobbered general purpose register"
msgstr "Utiliser le registre BK comme registre général tout usage"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -29169,44 +29229,44 @@ msgstr "« -gnat » mal épellé comme « -gant »"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
msgid "%qs attribute ignored"
msgstr "attribut « %s » ignoré"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%qs attribute requires prototypes with named arguments"
msgstr "l'attribut « %s » requiert un argument de type constante entière"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to functions"
msgid "%qs attribute only applies to variadic functions"
msgstr "attribut « %s » s'applique seulement aux fonctions"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
#| msgid "%s has no effect"
msgid "%qE attribute has no effect"
msgstr "%s n'a pas d'effet"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute `%s'"
msgid "invalid vector type for attribute %qs"
msgstr "type de vecteur invalide pour l'attribut « %s »"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to variables"
msgid "attribute %qs applies to array types only"
msgstr "attribut « %s » s'applique seulement aux variables"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute `%s'"
msgid "invalid element type for attribute %qs"
@@ -29224,7 +29284,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " pour la conversion de « %T » vers « %T »"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -29550,7 +29610,7 @@ msgstr "conversion invalide de « %T » vers « %T »"
msgid "invalid conversion from %qT to %qT"
msgstr "conversion invalide de « %T » vers « %T »"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, fuzzy, gcc-internal-format
#| msgid " initializing argument %P of `%D'"
msgid " initializing argument %P of %qD"
@@ -29561,218 +29621,218 @@ msgstr " initialisation de l'argument %P de « %D »"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
#| msgid " initializing argument %P of `%D'"
msgid " initializing argument %P of %q+D"
msgstr " initialisation de l'argument %P de « %D »"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
#| msgid "cannot bind rvalue `%E' to `%T'"
msgid "cannot bind %qT lvalue to %qT"
msgstr "ne peut lier la rvalue « %E » avec « %T »"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, fuzzy, gcc-internal-format
#| msgid "cannot bind bitfield `%E' to `%T'"
msgid "cannot bind bitfield %qE to %qT"
msgstr "ne peut lier le champ de bits « %E » avec « %T »"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, fuzzy, gcc-internal-format
#| msgid "cannot bind packed field `%E' to `%T'"
msgid "cannot bind packed field %qE to %qT"
msgstr "ne peut lier le champs empaqueté « %E » avec « %T »"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, fuzzy, gcc-internal-format
#| msgid "cannot bind rvalue `%E' to `%T'"
msgid "cannot bind rvalue %qE to %qT"
msgstr "ne peut lier la rvalue « %E » avec « %T »"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
#| msgid "class `%T' will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "classe « %T » devra être considérée pratiquement vide dans une version future de GCC"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
#| msgid "cannot receive objects of non-POD type `%#T' through `...'"
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "ne peut recevoir d'objets de type non POD « %#T » through « ... »"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
#| msgid "cannot receive objects of non-POD type `%#T' through `...'"
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "ne peut recevoir d'objets de type non POD « %#T » through « ... »"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for `%#D'"
msgid "recursive evaluation of default argument for %q#D"
msgstr "redéfinition de l'argument par défaut pour « %#D »"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
#| msgid "the default argument for parameter %d of `%D' has not yet been parsed"
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "argument par défaut pour le paramètre %d de « %D » n'a pas encore été analysé"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "argument of function call might be a candidate for a format attribute"
msgstr "Avertir à propos des fonctions qui pourraient être candidates pour les attributs de format"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, fuzzy, gcc-internal-format
#| msgid "passing `%T' as `this' argument of `%#D' discards qualifiers"
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "passant « %T» comme «cet» argument de « %#D » écarte les qualificateurs"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not an accessible base of `%T'"
msgid "%qT is not an accessible base of %qT"
msgstr "« %T » est une base accessible de « %T »"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr ""
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
#| msgid " in call to `%D'"
msgid " in call to %q+D"
msgstr " dans l'appel de « %D »"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, fuzzy, gcc-internal-format
#| msgid "could not find class$ field in java interface type `%T'"
msgid "could not find class$ field in java interface type %qT"
msgstr "ne peut repérer le champ classe$ dans le type d'interface JAVA « %T »"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, fuzzy, gcc-internal-format
#| msgid "call to non-function `%D'"
msgid "call to non-function %qD"
msgstr "appel à une non fonction « %D »"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, fuzzy, gcc-internal-format
#| msgid "cannot call destructor `%T::~%T' without object"
msgid "cannot call constructor %<%T::%D%> directly"
msgstr "ne peut appeler le destructeur «%T::~%T» sans objet"
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
#| msgid "no matching function for call to `%T::%s(%A)%#V'"
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "pas de fonction concordante pour l'appel à « %T::%s(%A)%#V »"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, fuzzy, gcc-internal-format
#| msgid "no matching function for call to `%T::%s(%A)%#V'"
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "pas de fonction concordante pour l'appel à « %T::%s(%A)%#V »"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, fuzzy, gcc-internal-format
#| msgid "call of overloaded `%s(%A)' is ambiguous"
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "appel du surchargé « %s(%A) » est ambiguë"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, fuzzy, gcc-internal-format
#| msgid "cannot call member function `%D' without object"
msgid "cannot call member function %qD without object"
msgstr "ne peut appeler la fonction membre « %D » sans objet"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, fuzzy, gcc-internal-format
#| msgid "passing `%T' chooses `%T' over `%T'"
msgid "passing %qT chooses %qT over %qT"
msgstr "passant « %T » à choisit « %T » au lieu de « %T »"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, fuzzy, gcc-internal-format
#| msgid " in call to `%D'"
msgid " in call to %qD"
msgstr " dans l'appel de « %D »"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, fuzzy, gcc-internal-format
#| msgid "choosing `%D' over `%D'"
msgid "choosing %qD over %qD"
msgstr "choix de « %D » à la place de « %D »"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, fuzzy, gcc-internal-format
#| msgid " for conversion from `%T' to `%T'"
msgid " for conversion from %qT to %qT"
msgstr " pour la conversion de « %T » vers « %T »"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " parce que la séquence de conversion pour l'argument est meilleure"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
#| msgid "default argument specified in explicit specialization"
msgid "default argument mismatch in overload resolution"
msgstr "argument par défaut spécifié dans la spécialisation explicite"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid " candidate 1: %q+#F"
msgstr "candidat 1:"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, fuzzy, gcc-internal-format
#| msgid "candidate 2:"
msgid " candidate 2: %q+#F"
msgstr "candidat 2:"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++ indique qu'ils sont ambiguës même à travers la plus mauvaise conversion pour le premier que la plus mauvaise pour la seconde:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "could not convert `%E' to `%T'"
msgid "could not convert %qE from %qT to %qT"
msgstr "ne peut convertir « %E » vers « %T »"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
#| msgid "invalid initialization of non-const reference of type '%T' from a temporary of type '%T'"
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "initialisation invalide pour une référence à un non constante de type « %T » à partir d'un type temporaire de type « %T »"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, fuzzy, gcc-internal-format
#| msgid "invalid initialization of reference of type '%T' from expression of type '%T'"
msgid "invalid initialization of reference of type %qT from expression of type %qT"
@@ -30021,110 +30081,110 @@ msgstr "champ « %D » incorrectement validé comme un type de fonction"
msgid "field %q+D invalidly declared method type"
msgstr "champ « %D » incorrectement validé comme un type de méthode"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, fuzzy, gcc-internal-format
#| msgid "ignoring packed attribute on unpacked non-POD field `%#D'"
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "attribut empaqueté ignoré sur un champ non POD non paqueté « %#D »"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, fuzzy, gcc-internal-format
#| msgid "field `%#D' with same name as class"
msgid "field %q+#D with same name as class"
msgstr "champ « %#D » avec le même nom qu'une classe"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, fuzzy, gcc-internal-format
#| msgid "`%#T' has pointer data members"
msgid "%q#T has pointer data members"
msgstr "« %#T » a un pointeur vers un membre de données"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, fuzzy, gcc-internal-format
#| msgid " but does not override `%T(const %T&)'"
msgid " but does not override %<%T(const %T&)%>"
msgstr " mais n'écrase pas « %T(const %T&) »"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, fuzzy, gcc-internal-format
#| msgid " or `operator=(const %T&)'"
msgid " or %<operator=(const %T&)%>"
msgstr " ou « operator=(const %T&) »"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, fuzzy, gcc-internal-format
#| msgid " but does not override `operator=(const %T&)'"
msgid " but does not override %<operator=(const %T&)%>"
msgstr " mais n'écrase pas « operator=(const %T&) »"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, fuzzy, gcc-internal-format
#| msgid "offset of empty base `%T' may not be ABI-compliant and maychange in a future version of GCC"
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "décalage d'une base vide « %T » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, fuzzy, gcc-internal-format
#| msgid "class `%T' will be considered nearly empty in a future version of GCC"
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "classe « %T » devra être considérée pratiquement vide dans une version future de GCC"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, fuzzy, gcc-internal-format
#| msgid "initializer specified for non-virtual method `%D'"
msgid "initializer specified for non-virtual method %q+D"
msgstr "initialisation spécifiée pour une méthode non virtuelle « %D »"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr ""
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "%T is not a class type"
msgid "%q+T is not literal because:"
msgstr "« %T » n'est pas un type de classe"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class `%#T' has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "classe de base « %#T » a un destructeur non virtuel"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr ""
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid " non-static data member %q+D has non-literal type"
msgstr "initialisation invalide dans la class de données de membre statiques d'un non entier de type « %T »"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, fuzzy, gcc-internal-format
#| msgid "non-static reference `%#D' in class without a constructor"
msgid "non-static reference %q+#D in class without a constructor"
msgstr "référence non statique « %#D » dans la classe sans un constructeur"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, fuzzy, gcc-internal-format
#| msgid "non-static const member `%#D' in class without a constructor"
msgid "non-static const member %q+#D in class without a constructor"
@@ -30132,140 +30192,140 @@ msgstr "constante non statique de membre « %#D » dans la classe sans un construc
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, fuzzy, gcc-internal-format
#| msgid "offset of virtual base `%T' is not ABI-compliant and may change in a future version of GCC"
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "décalage relatif d'une base virtuelle « %T » n'est pas compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, fuzzy, gcc-internal-format
#| msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "base directe « %T » inaccessible dans « %T » en raison de l'ambiguité"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, fuzzy, gcc-internal-format
#| msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "base virtuelle « %T » inaccessible dans « %T » en raison de l'ambiguité"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, fuzzy, gcc-internal-format
#| msgid "size assigned to `%T' may not be ABI-compliant and may change in a future version of GCC"
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "taille assignée à « %T » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, fuzzy, gcc-internal-format
#| msgid "the offset of `%D' may not be ABI-compliant and may change in a future version of GCC"
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "le décalage relatif de « %D » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, fuzzy, gcc-internal-format
#| msgid "offset of `%D' is not ABI-compliant and may change in a future version of GCC"
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "le décalage relatif de « %D » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, fuzzy, gcc-internal-format
#| msgid "`%D' contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "« %D » contient des classes vides lesquelles peuvent placer les classes de base à une localisation différente dans une version future de GCC"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, fuzzy, gcc-internal-format
#| msgid "layout of classes derived from empty class `%T' may change in a future version of GCC"
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "disposition des classes est dérivés de la classe vide « %T » peut être modifiée dans une version future de GCC"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, fuzzy, gcc-internal-format
#| msgid "redefinition of `%#T'"
msgid "redefinition of %q#T"
msgstr "redéfinition de « %#T »"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, fuzzy, gcc-internal-format
#| msgid "`%#T' has virtual functions but non-virtual destructor"
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "« %#T » a des fonctions virtuelles mais un destructeur non virtuel"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class `%T' does not have any field named `%D'"
msgid "type transparent class %qT does not have any fields"
msgstr "classe « %T » n'a pas aucun champ nommé « %D »"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
#| msgid "type `%s' has virtual member functions"
msgid "type transparent class %qT has virtual functions"
msgstr "type « %s » a des membres de fonction virtuelle"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "tentative de complétion du struct, mais a été stoppé en raison d'erreurs précédentes d'analyses syntaxiques"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, fuzzy, gcc-internal-format
#| msgid "language string `\"%s\"' not recognized"
msgid "language string %<\"%E\"%> not recognized"
msgstr "chaîne du langage « \"%s\" » n'est pas reconnue"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, fuzzy, gcc-internal-format
#| msgid "cannot resolve overloaded function `%D' based on conversion to type `%T'"
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "ne peut résoudre la fonction surchargé « %D » basé sur la conversion vers le type « %T »"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, fuzzy, gcc-internal-format
#| msgid "no matches converting function `%D' to type `%#T'"
msgid "no matches converting function %qD to type %q#T"
msgstr "pas de concordance de conversion de fonction « %D » vers le type « %#T »"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, fuzzy, gcc-internal-format
#| msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "conversion d'une fonction surchargée « %D » vers le type « %#T » est ambiguë"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, fuzzy, gcc-internal-format
#| msgid "assuming pointer to member `%D'"
msgid "assuming pointer to member %qD"
msgstr "pointeur assumé vers le membre « %D »"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, fuzzy, gcc-internal-format
#| msgid "(a pointer to member can only be formed with `&%E')"
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(un pointeur vers un membre peut seulement être formé avec «&%E»)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "pas assez d'information sur le type"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%E' from type `%T' to type `%T'"
msgid "cannot convert %qE from type %qT to type %qT"
@@ -30276,13 +30336,13 @@ msgstr "ne peut convertir « %E » du type « %T » vers le type « %T »"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %q#D"
msgstr "déclaration de « %#D »"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, fuzzy, gcc-internal-format
#| msgid "changes meaning of `%D' from `%+#D'"
msgid "changes meaning of %qD from %q+#D"
@@ -30305,7 +30365,7 @@ msgstr "ne peut convertir d'un type incomplet « %T » vers « %T »"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "conversion de « %E » à partir de « %T » vers « %T » est ambiguë"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "use of C99 long long integer constant"
msgid "zero as null pointer constant"
@@ -30341,7 +30401,7 @@ msgstr "initialisation invalide pour une référence à un non constante de type «
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "conversion de « %T » à « %T » écarte les qualificateurs"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, fuzzy, gcc-internal-format
#| msgid "casting `%T' to `%T' does not dereference pointer"
msgid "casting %qT to %qT does not dereference pointer"
@@ -30803,7 +30863,7 @@ msgstr "déclaration précédente de « %#D »"
msgid "declaration of template %q#D"
msgstr "déclaration du patron « %#D »"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, fuzzy, gcc-internal-format
#| msgid "conflicts with previous declaration `%#D'"
msgid "conflicts with previous declaration %q+#D"
@@ -30864,7 +30924,7 @@ msgstr "déclaration précédente de « namespace %D » ici"
msgid "%q+#D previously defined here"
msgstr "« %#D » précédemment défini ici"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
#| msgid "`%#D' previously declared here"
msgid "%q+#D previously declared here"
@@ -31000,7 +31060,7 @@ msgstr "%Jdéclaration de thread local de « %D » suit une déclaration non thread-
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "%Jdéclaration non thread local de « %D » suit une déclaration de thread local"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "redeclaration of %q#D"
@@ -31078,7 +31138,7 @@ msgstr "étiquette nommée wchar_t"
msgid "%qD is not a type"
msgstr "« %T::%D » n'est pas un type"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, fuzzy, gcc-internal-format
#| msgid "`%D' used without template parameters"
msgid "%qD used without template parameters"
@@ -31229,142 +31289,142 @@ msgstr "dans la déclaration de « %s », utilisation de « int » par défaut pour le
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%Hdéclaration de prototype"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "previous friend declaration of `%D'"
msgid "attribute ignored in declaration of %q#T"
msgstr "déclaration amie précédente de « %D »"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute can only be applied to class definitions"
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "attribut « %s » peut seulement être appliqué aux définitions de classes"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
#| msgid "typedef `%D' is initialized (use __typeof__ instead)"
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef « %D » est initialisé (use __typeof__ instead)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' has `extern' and is initialized"
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "déclaration de « %#D » est externe et initialisé"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, fuzzy, gcc-internal-format
#| msgid "%Jfunction `%D' definition is marked dllimport."
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "%Jdéfinition de la fonction « %D » est marquée dllimport"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, fuzzy, gcc-internal-format
#| msgid "`%#D' is not a static member of `%#T'"
msgid "%q#D is not a static member of %q#T"
msgstr "« %#D » n'est pas un membre statique de « %#T »"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ ne permet pas que « %T::%D » soit défini comme « %T::%D »"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, fuzzy, gcc-internal-format
#| msgid "duplicate initialization of %D"
msgid "duplicate initialization of %qD"
msgstr "initialisation en double de %D"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' outside of class is not definition"
msgid "declaration of %q#D outside of class is not definition"
msgstr "déclaraion de « %#D » en dehors de la classe n'est pas une définition"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, fuzzy, gcc-internal-format
#| msgid "variable `%#D' has initializer but incomplete type"
msgid "variable %q#D has initializer but incomplete type"
msgstr "la variable « %#D » est initialisée, mais a un type incomplet"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, fuzzy, gcc-internal-format
#| msgid "elements of array `%#D' have incomplete type"
msgid "elements of array %q#D have incomplete type"
msgstr "éléments du tableau « %#D » ont un type incomplet"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' has `extern' and is initialized"
msgid "declaration of %q#D has no initializer"
msgstr "déclaration de « %#D » est externe et initialisé"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, fuzzy, gcc-internal-format
#| msgid "aggregate `%#D' has incomplete type and cannot be defined"
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "aggrégat « %#D » a un type incomplet et ne peut être défini"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as reference but not initialized"
msgid "%qD declared as reference but not initialized"
msgstr "« %D » déclaré comme référence mais n'est pas initialisé"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, fuzzy, gcc-internal-format
#| msgid "name `%D' used in a GNU-style designated initializer for an array"
msgid "name used in a GNU-style designated initializer for an array"
msgstr "nom « %D » utilisé dans un style GNU de l'initialisateur désigné pour un tableau"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, fuzzy, gcc-internal-format
#| msgid "non-trivial labeled initializers"
msgid "non-trivial designated initializers not supported"
msgstr "initialiseur étiqueté de manière non trivial"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, fuzzy, gcc-internal-format
#| msgid "name `%D' used in a GNU-style designated initializer for an array"
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "nom « %D » utilisé dans un style GNU de l'initialisateur désigné pour un tableau"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of `%D'"
msgid "initializer fails to determine size of %qD"
msgstr "l'initialisation n'a pu déterminer la taille de « %D »"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, fuzzy, gcc-internal-format
#| msgid "array size missing in `%D'"
msgid "array size missing in %qD"
msgstr "taille de tableau manquante dans « %D »"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, fuzzy, gcc-internal-format
#| msgid "zero-size array `%D'"
msgid "zero-size array %qD"
@@ -31373,456 +31433,456 @@ msgstr "tableau « %D » de taille zéro"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
#| msgid "storage size of `%D' isn't known"
msgid "storage size of %qD isn%'t known"
msgstr "taille de stockage de « %D » n'est pas connue"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
#| msgid "storage size of `%D' isn't constant"
msgid "storage size of %qD isn%'t constant"
msgstr "taille de stockage de « %D » n'est pas une constante"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
#| msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "désolé: sémantique de fonction enligne de données statiques « %#D » est erronée (vous obtiendrez de multiples copies)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, fuzzy, gcc-internal-format
#| msgid "%J you can work around this by removing the initializer"
msgid " you can work around this by removing the initializer"
msgstr "%J vous pouvez contourner cela en enlevant l'initialiseur"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, fuzzy, gcc-internal-format
#| msgid "uninitialized const `%D'"
msgid "uninitialized const %qD"
msgstr "constante « %D » non initialisée"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
#| msgid "type `%s' has a user-defined constructor"
msgid "%q#T has no user-provided default constructor"
msgstr "type « %s » a un constructeur défini par l'usager"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, fuzzy, gcc-internal-format
#| msgid "invalid initializer for virtual method `%D'"
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "initialisation invalide pour la méthode virtuelle « %D »"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, fuzzy, gcc-internal-format
#| msgid "initializer for `%T' must be brace-enclosed"
msgid "initializer for %qT must be brace-enclosed"
msgstr "initialiseur de « %T » doit être entre accolades"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, fuzzy, gcc-internal-format
#| msgid "name `%D' used in a GNU-style designated initializer for an array"
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "nom « %D » utilisé dans un style GNU de l'initialisateur désigné pour un tableau"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, fuzzy, gcc-internal-format
#| msgid "`%T' has no non-static data member named `%D'"
msgid "%qT has no non-static data member named %qD"
msgstr "« %T » n'a pas de membre de données non statique nommé « %D »"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, fuzzy, gcc-internal-format
#| msgid "excess elements in aggregate initializer"
msgid "C99 designator %qE outside aggregate initializer"
msgstr "éléments en excès dans l'initialiseur d'aggrégat"
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, fuzzy, gcc-internal-format
#| msgid "too many initializers for `%T'"
msgid "too many initializers for %qT"
msgstr "trop d'initialiseurs pour « %T »"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, fuzzy, gcc-internal-format
#| msgid "braces around scalar initializer for `%T'"
msgid "braces around scalar initializer for type %qT"
msgstr "accolades autour de l'initialiseur scalaire pour « %T »"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, fuzzy, gcc-internal-format
#| msgid "missing braces around initializer"
msgid "missing braces around initializer for %qT"
msgstr "accolades manquantes autour de l'initialisation"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
#| msgid "elements of array `%#D' have incomplete type"
msgid "elements of array %q#T have incomplete type"
msgstr "éléments du tableau « %#D » ont un type incomplet"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, fuzzy, gcc-internal-format
#| msgid "variable-sized object `%D' may not be initialized"
msgid "variable-sized object %qD may not be initialized"
msgstr "objet de taille variable « %D » peut ne pas être initialisé"
# FIXME
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 forbids compound literals"
msgid "variable-sized compound literal"
msgstr "ISO C90 interdit les mots composés"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "`%D' has incomplete type"
msgid "%q#D has incomplete type"
msgstr "« %D » a un type incomplet"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, fuzzy, gcc-internal-format
#| msgid "excess elements in union initializer"
msgid "scalar object %qD requires one element in initializer"
msgstr "éléments en excès dans l'initialisation d'union"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be initialized by constructor, not by `{...}'"
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "« %D » doit être initialisé par un constructeur, non pas par « {...} »"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, fuzzy, gcc-internal-format
#| msgid "_Pragma takes a parenthesized string literal"
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "_Pragma prend une chaîne entourée de parenthèrese"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "initialisation invalide pour un membre statique avec constructeur"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ISO C++ interdit l'initialisation intra-classe d'un membre statique non constant « %D »"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(une initialisation en dehors de la classe est requise)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "affectation (non pas l'initialisation) dans la déclaration"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, fuzzy, gcc-internal-format
#| msgid "shadowing previous type declaration of `%#D'"
msgid "shadowing previous type declaration of %q#D"
msgstr "masque la déclaration précédente de « %#D »"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot be thread-local because it has non-POD type `%T'"
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "« %D » ne peut être utilisé comme un thread local parce qu'il a un non POD de type « %T »"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, fuzzy, gcc-internal-format
#| msgid "`%D' is thread-local and so cannot be dynamically initialized"
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "« %D » est un thread local et ne peut donc pas être initialisé dynamiquement"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, fuzzy, gcc-internal-format
#| msgid "array initialized from non-constant array expression"
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "tableau initialisé à l'aide de l'expression de tableau non constante"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, fuzzy, gcc-internal-format
#| msgid "function `%#D' is initialized like a variable"
msgid "function %q#D is initialized like a variable"
msgstr "fonction « %#D » est initialisée comme une variable"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of `%D'"
msgid "initializer fails to determine size of %qT"
msgstr "l'initialisation n'a pu déterminer la taille de « %D »"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in `%D'"
msgid "array size missing in %qT"
msgstr "taille de tableau manquante dans « %D »"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array `%D'"
msgid "zero-size array %qT"
msgstr "tableau « %D » de taille zéro"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, fuzzy, gcc-internal-format
#| msgid "destructor for alien class `%T' cannot be a member"
msgid "destructor for alien class %qT cannot be a member"
msgstr "destructeur pour la classe étrangère « %T » ne peut être un membre"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, fuzzy, gcc-internal-format
#| msgid "constructor for alien class `%T' cannot be a member"
msgid "constructor for alien class %qT cannot be a member"
msgstr "constructeur pour la classe étrangère « %T » ne peut être un membre"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> variable"
msgstr "« %D» déclaré comme « virtual » %s"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> variable"
msgstr "« %D» déclaré comme « inline » %s"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "spécificateurs de fonction « const» et «volatile» invalide pour « %D » dans la déclaration %s"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> parameter"
msgstr "« %D» déclaré comme « virtual » %s"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
#| msgid "%J\"%D\" declared as a non-parameter"
msgid "%qD declared as an %<inline%> parameter"
msgstr "%J\"%D\" déclaré comme un non paramètre"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "spécificateurs de fonction « const» et «volatile» invalide pour « %D » dans la déclaration %s"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> type"
msgstr "« %D» déclaré comme « virtual » %s"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> type"
msgstr "« %D» déclaré comme « inline » %s"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "spécificateurs de fonction « const» et «volatile» invalide pour « %D » dans la déclaration %s"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a `virtual' %s"
msgid "%qD declared as a %<virtual%> field"
msgstr "« %D» déclaré comme « virtual » %s"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> field"
msgstr "« %D» déclaré comme « inline » %s"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
#| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "spécificateurs de fonction « const» et «volatile» invalide pour « %D » dans la déclaration %s"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as a friend"
msgid "%q+D declared as a friend"
msgstr "« %D » déclaré comme un ami"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared with an exception specification"
msgid "%q+D declared with an exception specification"
msgstr "« %D » déclaré avec une exception de spécification"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' not in a namespace surrounding `%D'"
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "déclaration de « %D » n'est pas dans l'espace de noms entourant « %D »"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, fuzzy, gcc-internal-format
#| msgid "static member function `%#D' declared with type qualifiers"
msgid "static member function %q#D declared with type qualifiers"
msgstr "membre de fonction statique « %#D » déclaré avec des qualificateurs de tyep"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, fuzzy, gcc-internal-format
#| msgid "defining explicit specialization `%D' in friend declaration"
msgid "defining explicit specialization %qD in friend declaration"
msgstr "définition explicite de spécialisation « %D » dans lka déclaration ami"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, fuzzy, gcc-internal-format
#| msgid "invalid use of template-id `%D' in declaration of primary template"
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "utilisation invalide du template-id « %D » dans la déclaration du patron primaire"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "arguments par défaut ne sont pas permis dans la déclaration amie de la spécialisation du patron « %D »"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, fuzzy, gcc-internal-format
#| msgid "`inline' is not allowed in declaration of friend template specialization `%D'"
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "« inline» n'estpas permis dans la déclaration amie de la spécialisation du patron « %D »"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, fuzzy, gcc-internal-format
#| msgid "cannot declare `::main' to be a template"
msgid "cannot declare %<::main%> to be a template"
msgstr "ne peut déclarer « ::main » comme étant un patron"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, fuzzy, gcc-internal-format
#| msgid "cannot declare `::main' to be inline"
msgid "cannot declare %<::main%> to be inline"
msgstr "ne peut déclarer «::main» à être enligne"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, fuzzy, gcc-internal-format
#| msgid "cannot declare `::main' to be static"
msgid "cannot declare %<::main%> to be static"
msgstr "ne peut déclarer « ::main » comme étant static"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, fuzzy, gcc-internal-format
#| msgid "`%#D' does not refer to the unqualified type, so it is not used for linkage"
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "« %#D » ne réfère pas à un type non qualifié, aussi il n'est pas utilisé pour la liaison"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
#| msgid "previous declaration of `%#D' with %L linkage"
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "déclaration précédente de « %#D » avec le lien %L"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
#| msgid "%smember function `%D' cannot have `%T' method qualifier"
msgid "static member function %qD cannot have cv-qualifier"
msgstr "%sfonction membre « %D » ne peut avoir « %T » comme qualificateur de méthode"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, fuzzy, gcc-internal-format
#| msgid "%smember function `%D' cannot have `%T' method qualifier"
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "%sfonction membre « %D » ne peut avoir « %T » comme qualificateur de méthode"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
#| msgid "template with C linkage"
msgid "literal operator with C linkage"
msgstr "patron avec liaison C"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "%qD has invalid argument list"
msgstr "type d'argument invalide"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "« %D » doit être une fonction membre non statique"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, fuzzy, gcc-internal-format
#| msgid "`main' must return `int'"
msgid "%<::main%> must return %<int%>"
msgstr "« main» doit retourner « int »"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared `%D'"
msgid "definition of implicitly-declared %qD"
msgstr "définition implicitement déclarée « %D »"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared `%D'"
msgid "definition of explicitly-defaulted %q+D"
msgstr "définition implicitement déclarée « %D »"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "`%#D' previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "« %#D » précédemment défini ici"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, fuzzy, gcc-internal-format
#| msgid "no `%#D' member function declared in class `%T'"
msgid "no %q#D member function declared in class %qT"
@@ -31832,658 +31892,658 @@ msgstr "pas de fonction membre « %#D » déclarée dans la classe « %T »"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "initialisation invalide dans la class de données de membre statiques d'un non entier de type « %T »"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "initialisation invalide dans la class de données de membre statiques d'un non entier de type « %T »"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "initialisation invalide dans la class de données de membre statiques d'un non entier de type « %T »"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "initialisation invalide dans la class de données de membre statiques d'un non entier de type « %T »"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ interdit l'initialisation intra-classe d'un membre statique non constant « %D »"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids initialization of member constant `%D' of non-integral type `%T'"
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ interdit l'initialisation d'une membre constant « %D » d'un type non entier « %T »"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' has non-integral type `%T'"
msgid "size of array %qD has non-integral type %qT"
msgstr "taille du tableau « %D » n'est pas de type entier « %T »"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, fuzzy, gcc-internal-format
#| msgid "size of array has non-integral type `%T'"
msgid "size of array has non-integral type %qT"
msgstr "taille du tableau a type non entier « %T »"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' is negative"
msgid "size of array %qD is negative"
msgstr "taille du tableau « %D » est négative"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "taille du tableau est négative"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids zero-size array `%D'"
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ interdit les tableaux de taille zéro « %D »"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ interdit les tableaux de taille zéro"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' is not an integral constant-expression"
msgid "size of array %qD is not an integral constant-expression"
msgstr "taille du tableau « %D » n'a pas une expression de constante de type entier"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "taille du tableau n'est pas une expression de constante de type entier"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array `%D'"
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ interdit les tableaus de taille variable « %D »"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array"
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ interdit le tableau de taille variable"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "débordement dans les dimensions du tableau"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of %<auto%>"
msgstr "déclaration de « %s » comme un tableau de fonctions"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of voids"
msgid "declaration of %qD as array of void"
msgstr "déclaration de « %s » comme un tableau de « void »"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
#| msgid "creating array of `%T'"
msgid "creating array of void"
msgstr "création du tableau « %T »"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of functions"
msgstr "déclaration de « %s » comme un tableau de fonctions"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "creating array of functions"
msgstr "déclaration de « %s » comme un tableau de fonctions"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of references"
msgstr "déclaration de « %s » comme un tableau de fonctions"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
#| msgid "creating array of `%T'"
msgid "creating array of references"
msgstr "création du tableau « %T »"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "declaration of %qD as array of function members"
msgstr "déclaration de « %s » comme un tableau de fonctions"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%s' as array of functions"
msgid "creating array of function members"
msgstr "déclaration de « %s » comme un tableau de fonctions"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first"
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "déclaration de « %D » comme tableau multidimensionel doit avoir des bornes pour chaque dimension excepté pour la première"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "tableau multidimensionel doit avoir des bornes pour chaque dimension excepté pour la première"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "spécification de type retourné pour un constructeur est invalide"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "spécification de type retourné pour un destructeur est invalide"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, fuzzy, gcc-internal-format
#| msgid "return type specified for `operator %T'"
msgid "return type specified for %<operator %T%>"
msgstr "type spécifié retourné pour l'opérateur « %T »"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "variable non nommée ou champ déclaré void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "variable ou champ déclaré void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
#| msgid "invalid use of member `%D'"
msgid "invalid use of qualified-name %<::%D%>"
msgstr "utilisation invalide du membre « %D »"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
#| msgid "invalid definition of qualified type `%T'"
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "définition invalide d'un type qualifié « %T »"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
#| msgid "invalid use of member `%D'"
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "utilisation invalide du membre « %D »"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or namespace"
msgid "%q#T is not a class or a namespace"
msgstr "« %T » n'est pas une classe ou un espace de noms"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, fuzzy, gcc-internal-format
#| msgid "type `%T' is not derived from type `%T'"
msgid "type %qT is not derived from type %qT"
msgstr "type « %T » n'est pas dérivé du type « %T »"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as non-function"
msgid "declaration of %qD as non-function"
msgstr "déclaration de « %D » comme non-fonction"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, fuzzy, gcc-internal-format
#| msgid "redeclaration of `%T' as a non-template"
msgid "declaration of %qD as non-member"
msgstr "redéclaration de « %T » qui n'est pas un patron"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, fuzzy, gcc-internal-format
#| msgid "declarator-id missing; using reserved word `%D'"
msgid "declarator-id missing; using reserved word %qD"
msgstr "declarator-id manquant; utilisation du mot réservé « %D »"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, fuzzy, gcc-internal-format
#| msgid "function definition declared `register'"
msgid "function definition does not declare parameters"
msgstr "définition de fonction déclarée « register »"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as %s"
msgid "declaration of %qD as %<typedef%>"
msgstr "déclaration de « %D » comme « %s »"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%#D' shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "déclaration de « %#D » masque un paramètre"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
#| msgid "a template-id may not appear in a using-declaration"
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "un id de patron ne peut pas apparaître dans l'utilisation de la déclaration"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, fuzzy, gcc-internal-format
#| msgid "two or more data types in declaration of `%s'"
msgid "two or more data types in declaration of %qs"
msgstr "deux types de données ou plus dans la déclaration de « %s »"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
#| msgid "conflicting declaration '%#D'"
msgid "conflicting specifiers in declaration of %qs"
msgstr "déclaration conflictuelle « %#D »"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids declaration of `%s' with no type"
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ interdit la déclaration de « %s » sans type"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_trap not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_trap n'est pas supporté par la cible"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not support `long long'"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ ne permet pas « long long »"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for `%s'"
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "short, signed ou unsigned est invalide pour « %s »"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, fuzzy, gcc-internal-format
#| msgid "signed and unsigned given together for `%s'"
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "signed et unsigned donnés ensembles pour « %s »"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<long long%> invalid for %qs"
msgstr "« complex » invalide pour « %s »"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<long%> invalid for %qs"
msgstr "« complex » invalide pour « %s »"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "%<short%> invalid for %qs"
msgstr "« complex » invalide pour « %s »"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for `%s'"
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "« long », « short », « signed » ou « unsigned » invalide pour « %s »"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, fuzzy, gcc-internal-format
#| msgid "long or short specified with char for `%s'"
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "« long » ou « short » spécifié avec « char » pour « %s »"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, fuzzy, gcc-internal-format
#| msgid "long and short specified together for `%s'"
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "long et short spécifiés ensembles pour « %s »"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for `%s'"
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "short, signed ou unsigned est invalide pour « %s »"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned used invalidly for `%s'"
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "« long », « short », « signed » ou « unsigned » utilisé incorrectement pour « %s »"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for `%s'"
msgid "complex invalid for %qs"
msgstr "« complex » invalide pour « %s »"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, fuzzy, gcc-internal-format
#| msgid "qualifiers are not allowed on declaration of `operator %T'"
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "qualificateurs ne sont pas permis dans la déclaration de « operator %T »"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, fuzzy, gcc-internal-format
#| msgid "member `%D' cannot be declared both virtual and static"
msgid "member %qD cannot be declared both virtual and static"
msgstr "membre « %D » ne peut être déclaré virtuel et statique"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, fuzzy, gcc-internal-format
#| msgid "`%T::%D' is not a valid declarator"
msgid "%<%T::%D%> is not a valid declarator"
msgstr "« %T::%D » n'est pas un déclarateur valide"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "déclaration typedef invalide dans le paramètre de la déclaration"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter `%s'"
msgid "storage class specified for template parameter %qs"
msgstr "classe de stockage spécifiée pour le paramètre « %s »"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "spécificateurs de classe de stockage invalides dans la déclaration des paramètres"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "paramètres du patron ne peuvent pas être amis"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
#| msgid "virtual outside class declaration"
msgid "%<virtual%> outside class declaration"
msgstr "virtuel en dehors de la déclaration de classe"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, fuzzy, gcc-internal-format
#| msgid "multiple storage classes in declaration of `%s'"
msgid "multiple storage classes in declaration of %qs"
msgstr "multiples classes de stockage dans la déclaration de « %s »"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for %s `%s'"
msgid "storage class specified for %qs"
msgstr "classe de stockage spécifiée pour %s « %s »"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter `%s'"
msgid "storage class specified for parameter %qs"
msgstr "classe de stockage spécifiée pour le paramètre « %s »"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, fuzzy, gcc-internal-format
#| msgid "nested function `%s' declared `extern'"
msgid "nested function %qs declared %<extern%>"
msgstr "fonction imbriquée « %s » déclarée « extern »"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, fuzzy, gcc-internal-format
#| msgid "top-level declaration of `%s' specifies `auto'"
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "la déclaration hors de toute fonction de « %s » a spécifié « auto »"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, fuzzy, gcc-internal-format
#| msgid "function-scope `%s' implicitly auto and declared `__thread'"
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "« %s » dans le champ de la fonction est implicitement déclaré auto, et déclaré « __thread »"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "spécificateurs de classe de stockage invalide dans les déclarations de fonction amie"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, fuzzy, gcc-internal-format
#| msgid "`%s' declared as function returning a function"
msgid "%qs declared as function returning a function"
msgstr "« %s » déclaré comme une fonction retournant une fonction"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, fuzzy, gcc-internal-format
#| msgid "`%s' declared as function returning an array"
msgid "%qs declared as function returning an array"
msgstr "« %s » déclaré comme une fonction retournant un tableau"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "le destructeur ne peut être une fonction membre statique"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "le constructeur ne peut être une fonction membre statique"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, fuzzy, gcc-internal-format
#| msgid "destructors may not be `%s'"
msgid "destructors may not be cv-qualified"
msgstr "destructeurs ne peut être « %s »"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
#| msgid "constructors may not be `%s'"
msgid "constructors may not be cv-qualified"
msgstr "constructeurs ne peuvent pas être « %s »"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "constructeurs ne peut être déclarés virtuels"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function `%s'"
msgid "can%'t initialize friend function %qs"
msgstr "ne peut initialiser la fonction amie « %s »"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "fonctions virtuelles ne peuvent être amies"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "déclaration amie n'est pas dans la définition de classe"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
#| msgid "can't define friend function `%s' in a local class definition"
msgid "can%'t define friend function %qs in a local class definition"
msgstr "ne peut définir une fonction amie « %s » dans une définition locale de classe"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "destructeurs ne peuvent pas avoir de paramètre"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, fuzzy, gcc-internal-format
#| msgid "cannot declare pointer to `%#T'"
msgid "cannot declare pointer to %q#T"
msgstr "ne peut déclarer un pointeur vers « %#T »"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to `%#T'"
msgid "cannot declare reference to %q#T"
msgstr "ne peut déclarer une référence vers « %#T »"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, fuzzy, gcc-internal-format
#| msgid "cannot declare pointer to `%#T' member"
msgid "cannot declare pointer to %q#T member"
msgstr "ne peut déclarer un pointeur vers le membre « %#T »"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
#| msgid "cannot declare references to references"
msgid "cannot declare reference to qualified function type %qT"
msgstr "ne peut décalrer des références vers des références"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
#| msgid "cannot declare bit-field `%D' with function type"
msgid "cannot declare pointer to qualified function type %qT"
msgstr "ne peut déclarer un champ de bits « %D » avec un type de fonction"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' used as a declarator"
msgid "template-id %qD used as a declarator"
msgstr "identificateur de patron « %D » utilisé comme déclarateur"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "les fonctions membres sont implicitement amis de leur classe"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, fuzzy, gcc-internal-format
#| msgid "extra qualification `%T::' on member `%s' ignored"
msgid "extra qualification %<%T::%> on member %qs"
msgstr "qualification additionnelle « %T:: » sur le membre « %s » est ignorée"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%T::%s' within `%T'"
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "ne peut déclarer la fonction membre « %T::%s » à l'intérieur de « %T »"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%T::%s' within `%T'"
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "ne peut déclarer la fonction membre « %T::%s » à l'intérieur de « %T »"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member `%T::%s' within `%T'"
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "ne peut déclarer le membre « %T::%s » à l'intérieur de « %T »"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, fuzzy, gcc-internal-format
#| msgid "data member `%D' cannot be a member template"
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "membre de données « %D » ne peut être membre du patron"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, fuzzy, gcc-internal-format
#| msgid "size of array `%s' is too large"
msgid "size of array %qs is too large"
msgstr "la taille du tableau « %s » est trop grande"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, fuzzy, gcc-internal-format
#| msgid "data member may not have variably modified type `%T'"
msgid "data member may not have variably modified type %qT"
msgstr "membre de données peut ne pas avoir de type « %T » modifié de manière variable"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, fuzzy, gcc-internal-format
#| msgid "parameter may not have variably modified type `%T'"
msgid "parameter may not have variably modified type %qT"
@@ -32491,370 +32551,370 @@ msgstr "paramètre peut ne pas avoir de type « %T » modifié de manière variable"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, fuzzy, gcc-internal-format
#| msgid "only declarations of constructors can be `explicit'"
msgid "only declarations of constructors can be %<explicit%>"
msgstr "seuls les déclarations de constructeurs peuvent être « explicit »"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, fuzzy, gcc-internal-format
#| msgid "non-member `%s' cannot be declared `mutable'"
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "le non membre « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, fuzzy, gcc-internal-format
#| msgid "non-object member `%s' cannot be declared `mutable'"
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "un membre non objet « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, fuzzy, gcc-internal-format
#| msgid "function `%s' cannot be declared `mutable'"
msgid "function %qs cannot be declared %<mutable%>"
msgstr "fonction « %s » ne peut être déclarée « mutable »"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, fuzzy, gcc-internal-format
#| msgid "static `%s' cannot be declared `mutable'"
msgid "static %qs cannot be declared %<mutable%>"
msgstr "static « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, fuzzy, gcc-internal-format
#| msgid "const `%s' cannot be declared `mutable'"
msgid "const %qs cannot be declared %<mutable%>"
msgstr "const « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
#| msgid "function `%s' cannot be declared `mutable'"
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "fonction « %s » ne peut être déclarée « mutable »"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "typedef declared %<auto%>"
msgstr "type est obsolète (déclaré à %s:%d)"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, fuzzy, gcc-internal-format
#| msgid "%Jtypedef name may not be a nested-name-specifier"
msgid "typedef name may not be a nested-name-specifier"
msgstr "%Jnom du typedef peut ne pas être un nom de spécificateur imbriqué"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids nested type `%D' with same name as enclosing class"
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ interdit le type imbriqué « %D » avec le même nom que la classe de fermeture"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, fuzzy, gcc-internal-format
#| msgid "destructor cannot be static member function"
msgid "qualified function types cannot be used to declare static member functions"
msgstr "le destructeur ne peut être une fonction membre statique"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
#| msgid "function return type cannot be function"
msgid "qualified function types cannot be used to declare free functions"
msgstr "Le type retourné d'une fonction ne peut être une fonction"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "qulificateurs de types spécifiés pour la déclaration d'une classe amie"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, fuzzy, gcc-internal-format
#| msgid "`inline' specified for friend class declaration"
msgid "%<inline%> specified for friend class declaration"
msgstr "« inline » spécifié pour la déclaration d'une classe amie"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "paramètres du patron ne peuvent pas être amis"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, fuzzy, gcc-internal-format
#| msgid "friend declaration requires class-key, i.e. `friend class %T::%D'"
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "déclaration ami requiert une clé de classe, i.e. « friend class %T::%D »"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, fuzzy, gcc-internal-format
#| msgid "friend declaration requires class-key, i.e. `friend %#T'"
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "déclaration amie requiert une clé de classes, i.e. « friend %#T »"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, fuzzy, gcc-internal-format
#| msgid "trying to make class `%T' a friend of global scope"
msgid "trying to make class %qT a friend of global scope"
msgstr "tentative de rendre la classe « %T » un ami de la portée globale"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "qualificteurs invalide pour un type de fonction (autre que fonction membre)"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, fuzzy, gcc-internal-format
#| msgid "abstract declarator `%T' used as declaration"
msgid "abstract declarator %qT used as declaration"
msgstr "déclaration abstrait « %T » utilisé dans la déclaration"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, fuzzy, gcc-internal-format
#| msgid "cannot use `::' in parameter declaration"
msgid "cannot use %<::%> in parameter declaration"
msgstr "ne peut utiliser «::» dans le paramètre d'un déclaration"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' declared void"
msgid "parameter declared %<auto%>"
msgstr "paramètre « %D » déclaré «void »"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
#| msgid "`%T' has no non-static data member named `%D'"
msgid "non-static data member declared %<auto%>"
msgstr "« %T » n'a pas de membre de données non statique nommé « %D »"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `::'"
msgid "invalid use of %<::%>"
msgstr "utilisation invalide de « :: »"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
#| msgid "declaration of C function `%#D' conflicts with"
msgid "declaration of function %qD in invalid context"
msgstr "déclaration de la fonction C « %#D » en conflit avec"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, fuzzy, gcc-internal-format
#| msgid "function `%D' declared virtual inside a union"
msgid "function %qD declared virtual inside a union"
msgstr "fonction « %D » déclaré comme virtuelle à l'intérieur d'un agrégat"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot be declared virtual, since it is always static"
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "« %D » ne peut être déclaré virtuel, alors qu'il est toujours statique"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, fuzzy, gcc-internal-format
#| msgid "qualifiers are not allowed on declaration of `operator %T'"
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "qualificateurs ne sont pas permis dans la déclaration de « operator %T »"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%D' shadows a member of 'this'"
msgid "declaration of %qD as member of %qT"
msgstr "déclaration de « %D » masque un membre de « this »"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
#| msgid "destructors may not be `%s'"
msgid "a destructor cannot be %<constexpr%>"
msgstr "destructeurs ne peut être « %s »"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
#| msgid "qualifiers are not allowed on declaration of `operator %T'"
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "qualificateurs ne sont pas permis dans la déclaration de « operator %T »"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, fuzzy, gcc-internal-format
#| msgid "field `%D' has incomplete type"
msgid "field %qD has incomplete type"
msgstr "champ « %D » a un type incomplet"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, fuzzy, gcc-internal-format
#| msgid "name `%T' has incomplete type"
msgid "name %qT has incomplete type"
msgstr "nom « %T » a un type incomplet"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, fuzzy, gcc-internal-format
#| msgid " in instantiation of template `%T'"
msgid " in instantiation of template %qT"
msgstr " dans l'instanciation du patron « %T »"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, fuzzy, gcc-internal-format
#| msgid "`%s' is neither function nor member function; cannot be declared friend"
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "« %s » n'est ni une fonction ni une fonction membre ; ne peut être déclaré ami"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr ""
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
#| msgid "static member `%D' declared `register'"
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "mambre statique « %D» déclaré «register »"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, fuzzy, gcc-internal-format
#| msgid "storage class `auto' invalid for function `%s'"
msgid "storage class %<auto%> invalid for function %qs"
msgstr "classe de stockage « auto» invalide pour une fonction « %s »"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, fuzzy, gcc-internal-format
#| msgid "storage class `register' invalid for function `%s'"
msgid "storage class %<register%> invalid for function %qs"
msgstr "classe de stockage « register» invalide pour une fonction « %s »"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, fuzzy, gcc-internal-format
#| msgid "storage class `__thread' invalid for function `%s'"
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "classe de stockage « __thread » invalide pour la fonction « %s »"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
#| msgid "an asm-specification is not allowed on a function-definition"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "une spécification asm n'est pas permise dans la définition de fonction"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, fuzzy, gcc-internal-format
#| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "classe de stockage « inline» invalide pour une fonction « %s » déclarée en dehors de la portée globale"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, fuzzy, gcc-internal-format
#| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "classe de stockage « inline» invalide pour une fonction « %s » déclarée en dehors de la portée globale"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, fuzzy, gcc-internal-format
#| msgid "virtual non-class function `%s'"
msgid "virtual non-class function %qs"
msgstr "fonction virtuelle d'une non classe « %s »"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
#| msgid "method definition not in class context"
msgid "%qs defined in a non-class scope"
msgstr "méthode de définition n'est pas dans un contexte de classe"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
#| msgid "using-declaration for non-member at class scope"
msgid "%qs declared in a non-class scope"
msgstr "l'utilisation de déclaration pour un non membre au niveau de la portée de la classe"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%D' to have static linkage"
msgid "cannot declare member function %qD to have static linkage"
msgstr "ne peut déclarer la fonction membre « %D » comme ayant un lien statique"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "ne peut déclarer une fonction statique à l'intérieur d'une autre fonction"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, fuzzy, gcc-internal-format
#| msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "« static » ne peut pas être utilisé lors de la définition (contrairement à la déclaration) de données de membres statiques"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, fuzzy, gcc-internal-format
#| msgid "static member `%D' declared `register'"
msgid "static member %qD declared %<register%>"
msgstr "mambre statique « %D» déclaré «register »"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, fuzzy, gcc-internal-format
#| msgid "cannot explicitly declare member `%#D' to have extern linkage"
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "ne peut explicitement déclarer le membre « %#D » comme ayant une liaison externe"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D' outside of class is not definition"
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "déclaraion de « %#D » en dehors de la classe n'est pas une définition"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, fuzzy, gcc-internal-format
#| msgid "`%s' initialized and declared `extern'"
msgid "%qs initialized and declared %<extern%>"
msgstr "« %s » initialisé et déclaré « extern »"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, fuzzy, gcc-internal-format
#| msgid "`%s' has both `extern' and initializer"
msgid "%qs has both %<extern%> and initializer"
msgstr "« %s » a les deux « extern » et initialisateur"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "default argument for %q#D has type %qT"
msgstr "argument par défaut pour « %#D » à un type « %T »"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type `%T' has type `%T'"
msgid "default argument for parameter of type %qT has type %qT"
msgstr "argument par défaut pour le paramètre de type « %T » a le type « %T »"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
#| msgid "default argument `%E' uses local variable `%D'"
msgid "default argument %qE uses %qD"
msgstr "argument par défaut « %E » utiliser une variable locale « %D »"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, fuzzy, gcc-internal-format
#| msgid "default argument `%E' uses local variable `%D'"
msgid "default argument %qE uses local variable %qD"
msgstr "argument par défaut « %E » utiliser une variable locale « %D »"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
#| msgid "%Jparameter \"%D\" has incomplete type"
msgid "parameter %qD has Java class type"
msgstr "%Jparamètre \"%D\" a un type incomplet"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' invalidly declared method type"
msgid "parameter %qD invalidly declared method type"
msgstr "paramètre « %D » incorrectement validé comme type de méthode"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "paramètre « %D » inclut %s au tableau de bornes inconnues « %T »"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgid "parameter %qD includes reference to array of unknown bound %qT"
@@ -32875,199 +32935,199 @@ msgstr "paramètre « %D » inclut %s au tableau de bornes inconnues « %T »"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, fuzzy, gcc-internal-format
#| msgid "invalid constructor; you probably meant `%T (const %T&)'"
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "constructeur invalide; vous vouliez probablement dire « %T (const %T&) »"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, fuzzy, gcc-internal-format
#| msgid "`%D' was not declared in this scope"
msgid "%qD may not be declared within a namespace"
msgstr "« %D » n'a pas été déclaré dans cet horizon"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, fuzzy, gcc-internal-format
#| msgid "`%D' has not been declared"
msgid "%qD may not be declared as static"
msgstr "« %D » n'a pas été déclaré"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be a nonstatic member function"
msgid "%qD must be a nonstatic member function"
msgstr "« %D » doit être une fonction membre non statique"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, fuzzy, gcc-internal-format
#| msgid "`%D' must be either a non-static member function or a non-member function"
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "« %D » doit être soit un membre non statique de fonction ou une fonction non membre"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, fuzzy, gcc-internal-format
#| msgid "`%D' must have an argument of class or enumerated type"
msgid "%qD must have an argument of class or enumerated type"
msgstr "« %D » doit avoir un argument de classe ou de type énuméré"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "conversion de %s%s ne sera jamais utilisé dans un type d'opérateur de conversion"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to void will never use a type conversion operator"
msgstr "conversion de %s%s ne sera jamais utilisé dans un type d'opérateur de conversion"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "conversion de %s%s ne sera jamais utilisé dans un type d'opérateur de conversion"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to the same type will never use a type conversion operator"
msgstr "conversion de %s%s ne sera jamais utilisé dans un type d'opérateur de conversion"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "conversion de %s%s ne sera jamais utilisé dans un type d'opérateur de conversion"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a base class will never use a type conversion operator"
msgstr "conversion de %s%s ne sera jamais utilisé dans un type d'opérateur de conversion"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ interdit la surcharge de l'opérateur ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take either one or two arguments"
msgid "%qD must not have variable number of arguments"
msgstr "« %D » doit prendre seulement un OU deux arguments"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, fuzzy, gcc-internal-format
#| msgid "postfix `%D' must take `int' as its argument"
msgid "postfix %qD must take %<int%> as its argument"
msgstr "postfixe « %D» doit prendre « int » comme argument"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, fuzzy, gcc-internal-format
#| msgid "postfix `%D' must take `int' as its second argument"
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "postfixe « %D» doit prndre « int » pour son second argument"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take either zero or one argument"
msgid "%qD must take either zero or one argument"
msgstr "« %D » doit prendre seulement zéro ou un autre argument"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take either one or two arguments"
msgid "%qD must take either one or two arguments"
msgstr "« %D » doit prendre seulement un OU deux arguments"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, fuzzy, gcc-internal-format
#| msgid "prefix `%D' should return `%T'"
msgid "prefix %qD should return %qT"
msgstr "préfixe « %D » devrait retourner « %T »"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, fuzzy, gcc-internal-format
#| msgid "postfix `%D' should return `%T'"
msgid "postfix %qD should return %qT"
msgstr "postfixe « %D » devrait retourner « %T »"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take `void'"
msgid "%qD must take %<void%>"
msgstr "« %D» doit prendre « void »"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take exactly one argument"
msgid "%qD must take exactly one argument"
msgstr "« %D » doit prendre exactement un argument"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, fuzzy, gcc-internal-format
#| msgid "`%D' must take exactly two arguments"
msgid "%qD must take exactly two arguments"
msgstr "« %D » doit prendre exactemenr deux arguments"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, fuzzy, gcc-internal-format
#| msgid "user-defined `%D' always evaluates both arguments"
msgid "user-defined %qD always evaluates both arguments"
msgstr "« %D » défini par l'usager évalue toujours les 2 arguments"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, fuzzy, gcc-internal-format
#| msgid "`%D' should return by value"
msgid "%qD should return by value"
msgstr "« %D » devrait retourner par valeur"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "%qD cannot have default arguments"
msgstr "« %D » ne peut avoir d'arguments par défaut"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, fuzzy, gcc-internal-format
#| msgid "using template type parameter `%T' after `%s'"
msgid "using template type parameter %qT after %qs"
msgstr "utilisation de type de patron de paramètre « %T » après « %s »"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization `%D' for `%+D'"
msgid "using alias template specialization %qT after %qs"
msgstr "spécialisation de patron amibiguë « %D » pour « %+D »"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, fuzzy, gcc-internal-format
#| msgid "using typedef-name `%D' after `%s'"
msgid "using typedef-name %qD after %qs"
msgstr "utilisation d'un nom de typedef « %D » après « %s »"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
#| msgid "'%D' has a previous declaration as `%#D'"
msgid "%qD has a previous declaration here"
msgstr "« %D » a une déclaration précédente tel que « %#D »"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, fuzzy, gcc-internal-format
#| msgid "`%T' referred to as `%s'"
msgid "%qT referred to as %qs"
msgstr "« %TD » référé comme « %s »"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, fuzzy, gcc-internal-format
#| msgid "%Jthis is a previous declaration"
msgid "%q+T has a previous declaration here"
msgstr "%Jest la déclaration précédente"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, fuzzy, gcc-internal-format
#| msgid "`%T' referred to as enum"
msgid "%qT referred to as enum"
@@ -33080,101 +33140,101 @@ msgstr "« %T » référé comme enum"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, fuzzy, gcc-internal-format
#| msgid "template argument required for `%s %T'"
msgid "template argument required for %<%s %T%>"
msgstr "argument du patron est requis pour « %s %T »"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, fuzzy, gcc-internal-format
#| msgid "`%D' has the same name as the class in which it is declared"
msgid "%qD has the same name as the class in which it is declared"
msgstr "« %D » a le même nom que la classe dans laquelle il est déclaré"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, fuzzy, gcc-internal-format
#| msgid "reference to `%D' is ambiguous"
msgid "reference to %qD is ambiguous"
msgstr "référence à « %D » est ambiguë"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, fuzzy, gcc-internal-format
#| msgid "use of enum `%#D' without previous declaration"
msgid "use of enum %q#D without previous declaration"
msgstr "utilisation de enum « %#D » sans déclaration précédente"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, fuzzy, gcc-internal-format
#| msgid "redeclaration of `%T' as a non-template"
msgid "redeclaration of %qT as a non-template"
msgstr "redéclaration de « %T » qui n'est pas un patron"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%D'"
msgid "previous declaration %q+D"
msgstr "déclaration précédente de « %D »"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, fuzzy, gcc-internal-format
#| msgid "derived union `%T' invalid"
msgid "derived union %qT invalid"
msgstr "union dérivée « %T » invalide"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, fuzzy, gcc-internal-format
#| msgid "Java class '%T' cannot have multiple bases"
msgid "Java class %qT cannot have multiple bases"
msgstr "classe Java « %T » ne peut avoir de bases multiples"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, fuzzy, gcc-internal-format
#| msgid "Java class '%T' cannot have virtual bases"
msgid "Java class %qT cannot have virtual bases"
msgstr "classe Java « %T » ne peut avoir de bases virtuelles"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, fuzzy, gcc-internal-format
#| msgid "base type `%T' fails to be a struct or class type"
msgid "base type %qT fails to be a struct or class type"
msgstr "type de base « %T » a échoué pour devenir un type de classe ou un type construit"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, fuzzy, gcc-internal-format
#| msgid "recursive type `%T' undefined"
msgid "recursive type %qT undefined"
msgstr "type récursif « %T » non défini"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, fuzzy, gcc-internal-format
#| msgid "duplicate base type `%T' invalid"
msgid "duplicate base type %qT invalid"
msgstr "duplication du type de base « %T » invalide"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
#| msgid "%Jprevious definition here"
msgid "previous definition here"
msgstr "%Jdéfinition précédente ici"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, fuzzy, gcc-internal-format
#| msgid "argument %d to ABSTIME must be of integer type"
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
@@ -33184,81 +33244,81 @@ msgstr "argument %d à ABSTIME doit être un type entier"
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, fuzzy, gcc-internal-format
#| msgid "no integral type can represent all of the enumerator values for `%T'"
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "aucun type entier peut représenter toutes les valeurs de l'énumérateur pour « %T »"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for `%s' not integer constant"
msgid "enumerator value for %qD is not an integer constant"
msgstr "valeur de l'énumérateur pour « %s » n'est pas une constante entière"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr ""
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, fuzzy, gcc-internal-format
#| msgid "overflow in enumeration values at `%D'"
msgid "overflow in enumeration values at %qD"
msgstr "débordement dans les valeurs de l'énumération à « %D »"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, fuzzy, gcc-internal-format
#| msgid "return type `%#T' is incomplete"
msgid "return type %q#T is incomplete"
msgstr "type retourné « %#T » est incomplet"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
#| msgid "return type is an incomplete type"
msgid "return type has Java class type %q#T"
msgstr "le type du retour est incomplet"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, fuzzy, gcc-internal-format
#| msgid "`operator=' should return a reference to `*this'"
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "« operator= » devrait retourner une référence à «*ceci »"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, fuzzy, gcc-internal-format
#| msgid "%Jno previous declaration for '%D'"
msgid "no previous declaration for %q+D"
msgstr "%Jaucune déclaration précédente pour « %D »"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "déclaration de fonction invalide"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' declared void"
msgid "parameter %qD declared void"
msgstr "paramètre « %D » déclaré «void »"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label `%D' defined but not used"
msgid "parameter %q+D set but not used"
msgstr "étiquette « %D » définie mais non utilisée"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "déclaration de membre de fonction invalide"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, fuzzy, gcc-internal-format
#| msgid "`%D' is already defined in class `%T'"
msgid "%qD is already defined in class %qT"
@@ -33304,7 +33364,7 @@ msgstr "ne peut détruire une fonction. Seuls les pointeurs-d'objets sont des ar
msgid "deleting %qT is undefined"
msgstr "destruction de « %T » est indéfinie"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, fuzzy, gcc-internal-format
#| msgid "template declaration of `%#D'"
msgid "template declaration of %q#D"
@@ -33594,7 +33654,7 @@ msgstr "type « %T » incomplet utilisé dans un spécificateur de noms imbriqué"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "référence à « %D » est ambiguë"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a member of `%T'"
msgid "%qD is not a member of %qT"
@@ -33950,7 +34010,7 @@ msgstr "type « %D » n'est pas une base directe de « %T »"
msgid "bad array initializer"
msgstr "mauvaise initialisation de tableau"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
#| msgid "%T is not a class type"
msgid "%qT is not a class type"
@@ -34049,70 +34109,70 @@ msgstr "index de tableau non constant dans l'initialisation"
msgid "parenthesized initializer in array new"
msgstr "attributs après l'initialisateur mis entre parenthèses sont ignorés"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "taille d'un nouveau tableau (new) doit avoir un type entier"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new ne peut être appliqué à un type référencé"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new ne peut être appliqué à un type de fonction"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, fuzzy, gcc-internal-format
#| msgid "call to Java constructor, while `jclass' undefined"
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "appel d'un constructeur Java, alors que « jclass » est indéfini"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
#| msgid "can't find class$"
msgid "can%'t find %<class$%> in %qT"
msgstr "ne peut repérer class$"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "fin prématurée de l'initialisation"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "ne peut initialiser un table multi-dimensionnel avec initialiseur"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "problème possible détecté dans l'invocation de l'opérateur delete:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, fuzzy, gcc-internal-format
#| msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined."
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "ni le destructeur ni l'opérateur « delete » spécifique à la classe ne sera appellé, même s'ils sont déclarés lorsque la classe est définie"
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "taille du tableau inconnue dans delete"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "type du vesteur delete n'est ni un pointeur ou un type tableau"
@@ -34177,44 +34237,44 @@ msgstr "il n'y a pas d'argument à « %D » qui dépend d'un paramètre du patron, au
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(si vous utilisez « -fpermissive », G++ acceptera votre core, mais permettre l'utilisation d'un nom non déclaré est obsolète)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, fuzzy, gcc-internal-format
#| msgid "omitted middle operand to `?:' operand cannot be mangled"
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "opérande du milieu « ?: » omise, l'opérande ne peut être mutilée"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, fuzzy, gcc-internal-format
#| msgid "the mangled name of `%D' will change in a future version of GCC"
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "le nom mutilé de « %D » sera modifié dans une version future de GCC"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -34307,65 +34367,65 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
#| msgid "template declaration of `%#D'"
msgid "defaulted declaration %q+D"
msgstr "déclaration du patron de « %#D »"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
#| msgid "(Messages without a matching method signature"
msgid "does not match expected signature %qD"
msgstr "(Messages sans une méthode concordante de signature"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "a template cannot be defaulted"
msgstr "paramètres du patron ne peuvent pas être amis"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
#| msgid "`%#D' cannot be declared"
msgid "%qD cannot be defaulted"
msgstr "« %#D » ne peut être déclaré"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
#| msgid "file ends in default argument"
msgid "defaulted function %q+D with default argument"
msgstr "fin de fichier dans l'argument par défaut"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, fuzzy, gcc-internal-format
#| msgid "vtable layout for class `%T' may not be ABI-compliant and may change in a future version of GCC due to implicit virtual destructor"
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "disposition vtable pour la classe « %T » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future deGCC en raison d'un destructeur virtuel implicite"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "%Jconflicts with previous declaration here"
msgid "%q#D conflicts with a previous declaration"
msgstr "%Jentre en conflit avec la déclaration précédente ici"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%D'"
msgid "previous declaration %q+#D"
msgstr "déclaration précédente de « %D »"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, fuzzy, gcc-internal-format
#| msgid "redeclaration of `wchar_t' as `%T'"
msgid "redeclaration of %<wchar_t%> as %qT"
@@ -34377,155 +34437,155 @@ msgstr "redéclaration de « wchar_t» comme « %T »"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of `%D'"
msgid "invalid redeclaration of %q+D"
msgstr "redéclaration invalide de « %D »"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
#| msgid "%Jredeclaration of '%D' with no linkage"
msgid "declaration of %q#D with C language linkage"
msgstr "%Jredéclaration de « %D » sans lien"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
#| msgid "Generate code to check exception specifications"
msgid "due to different exception specifications"
msgstr "Générer le code pour vérifier les exceptions de spécifications"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, fuzzy, gcc-internal-format
#| msgid "type mismatch with previous external decl of `%#D'"
msgid "type mismatch with previous external decl of %q#D"
msgstr "non concordance de type avec la déclaration externe précédente de « %D »"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, fuzzy, gcc-internal-format
#| msgid "previous external decl of `%#D'"
msgid "previous external decl of %q+#D"
msgstr "déclaration externe précédente de « %#D »"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
#| msgid "extern declaration of `%#D' doesn't match"
msgid "extern declaration of %q#D doesn%'t match"
msgstr "déclaration externe de « %#D » ne concorde pas"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, fuzzy, gcc-internal-format
#| msgid "global declaration `%#D'"
msgid "global declaration %q+#D"
msgstr "déclaration globale « %#D »"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%#D' shadows a parameter"
msgid "declaration of %q#D shadows a parameter"
msgstr "déclaration de « %#D » masque un paramètre"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%#D' shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "déclaration de « %#D » masque un paramètre"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%D' shadows a previous local"
msgid "declaration of %qD shadows a previous local"
msgstr "déclaration de « %D » masque la déclaration d'un local précédent"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%D' shadows a member of 'this'"
msgid "declaration of %qD shadows a member of 'this'"
msgstr "déclaration de « %D » masque un membre de « this »"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%D' shadows a global declaration"
msgid "declaration of %qD shadows a global declaration"
msgstr "déclaration de « %D » masque une déclaration globale"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, fuzzy, gcc-internal-format
#| msgid "name lookup of `%D' changed"
msgid "name lookup of %qD changed"
msgstr "recherche du nom « %D » a changé"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, fuzzy, gcc-internal-format
#| msgid " matches this `%D' under ISO standard rules"
msgid " matches this %q+D under ISO standard rules"
msgstr " concorde avec « %D » selon les règles standards ISO"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, fuzzy, gcc-internal-format
#| msgid " matches this `%D' under old rules"
msgid " matches this %q+D under old rules"
msgstr " concorde avec « %D » selon les vieilles règles"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
#| msgid "name lookup of `%D' changed for new ISO `for' scoping"
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "recherche du nom de « %D » changé pour la nouvelle étendue ISO pour le « for »"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, fuzzy, gcc-internal-format
#| msgid " cannot use obsolete binding at `%D' because it has a destructor"
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " ne peut utiliser une liaison obsolète à « %D » parce qu'il a un destructeur"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, fuzzy, gcc-internal-format
#| msgid " using obsolete binding at `%D'"
msgid " using obsolete binding at %q+D"
msgstr " utilisation de liaison obsolète à « %D »"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, fuzzy, gcc-internal-format
#| msgid "(if you use `-fpermissive' G++ will accept your code)"
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(si vous utiliser « -fpermissive » G++ acceptera votre code)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, fuzzy, gcc-internal-format
#| msgid "`%#D' hides constructor for `%#T'"
msgid "%q#D hides constructor for %q#T"
msgstr "« %#D » cache un constructeur pour « %#T »"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, fuzzy, gcc-internal-format
#| msgid "`%#D' conflicts with previous using declaration `%#D'"
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "« %#D » en conflit avec une déclaration précédente « %#D »"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, fuzzy, gcc-internal-format
#| msgid "previous non-function declaration `%#D'"
msgid "previous non-function declaration %q+#D"
msgstr "déclaration précédente d'un non fonction « %#D »"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, fuzzy, gcc-internal-format
#| msgid "conflicts with function declaration `%#D'"
msgid "conflicts with function declaration %q#D"
@@ -34533,7 +34593,7 @@ msgstr "conflits avec la déclaration de fonction de « %#D »"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a namespace"
msgid "%qT is not a namespace"
@@ -34541,139 +34601,139 @@ msgstr "« %T » n'est pas un espace de noms"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, fuzzy, gcc-internal-format
#| msgid "a using-declaration cannot specify a template-id. Try `using %D'"
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "l'utilisation d'une déclaration ne peut spécifier un template-id. Essayer « using %D »"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, fuzzy, gcc-internal-format
#| msgid "namespace `%D' not allowed in using-declaration"
msgid "namespace %qD not allowed in using-declaration"
msgstr "espace de noms « %D » n'est pas permis dans l'utilisation d'une déclaration"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, fuzzy, gcc-internal-format
#| msgid "`%D' not declared"
msgid "%qD not declared"
msgstr "« %D » n'est pas déclaré"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, fuzzy, gcc-internal-format
#| msgid "`%D' is already declared in this scope"
msgid "%qD is already declared in this scope"
msgstr "« %D » est déjà déclaré dans cette portée"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "l'utilisation de déclaration pour un non membre au niveau de la portée de la classe"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, fuzzy, gcc-internal-format
#| msgid "`%D' names constructor"
msgid "%<%T::%D%> names destructor"
msgstr "« %D » nomme le constructeur"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, fuzzy, gcc-internal-format
#| msgid "`%D' names constructor"
msgid "%<%T::%D%> names constructor"
msgstr "« %D » nomme le constructeur"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, fuzzy, gcc-internal-format
#| msgid "`%D' names constructor"
msgid "%<%T::%D%> names constructor in %qT"
msgstr "« %D » nomme le constructeur"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, fuzzy, gcc-internal-format
#| msgid "no members matching `%D' in `%#T'"
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "aucun membre concordant « %D » dans « %#T »"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' not in a namespace surrounding `%D'"
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "déclaration de « %D » n'est pas dans l'espace de noms entourant « %D »"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, fuzzy, gcc-internal-format
#| msgid "duplicate type qualifiers in %s declaration"
msgid "explicit qualification in declaration of %qD"
msgstr "qualificateurs de types dupliqués dans déclaration %s"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, fuzzy, gcc-internal-format
#| msgid "`%D' should have been declared inside `%D'"
msgid "%qD should have been declared inside %qD"
msgstr "« %D » devrait avoir été déclaré à l'intérieur de « %D »"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%qD attribute requires a single NTBS argument"
msgstr "l'attribut « %s » requiert un argument de type constante entière"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, fuzzy, gcc-internal-format
#| msgid "`%D' attribute directive ignored"
msgid "%qD attribute directive ignored"
msgstr "« %D » attribut de directive ignoré"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, fuzzy, gcc-internal-format
#| msgid "namespace alias `%D' not allowed here, assuming `%D'"
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "alias d'espace de noms « %D » n'est pas permis ici, on assume « %D »"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "forte n'ayant un sens seulement sur l'étendue de l'espace nom"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr ""
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX on entre dans pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX on quitte pop_everything ()\n"
@@ -34801,7 +34861,7 @@ msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "«;» manquant après la déclaration « %T »"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template"
msgid "%qT is not a template"
@@ -34824,7 +34884,7 @@ msgstr "id de patron invalide"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "%s ne peut apparaître dans une expression de constante"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -34989,137 +35049,137 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "déclaration à %0 invalide dans ce contexte"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
#| msgid "unterminated string literal"
msgid "unable to find string literal operator %qD"
msgstr "chaîne litérale non terminée"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "déclaration vide"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
#| msgid "-Wno-strict-prototypes is not supported in C++"
msgid "fixed-point types not supported in C++"
msgstr "-Wno-strict-prototypes n'est pas permis en C++"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ interdit les groupes d'accolades à l'intérieur des expressions"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
#| msgid "statement-expressions are allowed only inside functions"
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "expression de déclaration sont permises seulement à l'intérieur de fonctions"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected primary-expression"
msgstr "expression d'adresse inattendue"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, fuzzy, gcc-internal-format
#| msgid "`this' may not be used in this context"
msgid "%<this%> may not be used in this context"
msgstr "« cela » ne peut être utilisé dans ce contexte"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
#| msgid "Objective-C declarations may only appear in global scope"
msgid "a template declaration cannot appear at block scope"
msgstr "déclarations Objective-C peut seulement apparaître dans l'étendue globale"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, fuzzy, gcc-internal-format
#| msgid "local variable `%D' may not appear in this context"
msgid "local variable %qD may not appear in this context"
msgstr "variable locale « %D » ne peut apparaître dans ce contexte"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected id-expression"
msgstr "expression d'adresse inattendue"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
#| msgid "declaration of '%D' shadows a member of 'this'"
msgid "declaration of %<~%T%> as member of %qT"
msgstr "déclaration de « %D » masque un membre de « this »"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, fuzzy, gcc-internal-format
#| msgid "typedef-name `%D' used as destructor declarator"
msgid "typedef-name %qD used as destructor declarator"
msgstr "nom du typdef « %D » utilisé comme déclarateur de destructeur"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr ""
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or union type"
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "« %T » n'est pas une classe ou un type d'union"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template"
msgid "%qD is not a template"
msgstr "« %T » n'est pas un patron"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected nested-name-specifier"
msgstr "un nom de type attendu"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in casts"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a %<typeid%> expression"
@@ -35127,659 +35187,659 @@ msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ interdit les chaînes composées"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, fuzzy, gcc-internal-format
#| msgid "%T is not a class type"
msgid "%qE does not have class type"
msgstr "« %T » n'est pas un type de classe"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %D"
msgid "invalid use of %qD"
msgstr "utilisation invalide de %D"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "`%D::%D' is not a member of `%T'"
msgid "%<%D::%D%> is not a class member"
msgstr "« %D::%D » n'est pas un membre de « %T »"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ ne permet de désigner les initialiseurs"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-expression"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "les limites du tableau interdisent ce qui suit après le type-id mis entre parenthèses"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "essayer d'enlever les parenthèses autour du type-id"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-type-id"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "expression dans le nouveau déclarateur doit être un type entier ou d'énumération"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "utilisation d'un vieux style de transtypage (cast)"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
#| msgid "suggest parentheses around && within ||"
msgid "suggest parentheses around %<>>%> expression"
msgstr "parenthèses suggérées autour de && à l'intérieur de ||"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ ne permet de désigner les initialiseurs"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, fuzzy, gcc-internal-format
#| msgid "conditional expression not allowed in this context"
msgid "lambda-expression in unevaluated context"
msgstr "expression conditionnelle n'est pas permise dans ce contexte"
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ ne permet de désigner les initialiseurs"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr ""
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid "%q+#D declared here"
msgstr " « %#D » déclaré ici"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
#| msgid "default argument given for parameter %d of `%#D'"
msgid "default argument specified for lambda parameter"
msgstr "argument par défaut donné pour le paramètre %d de « %#D »"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "expected labeled-statement"
msgstr "le corps du else est vide"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, fuzzy, gcc-internal-format
#| msgid "case label `%E' not within a switch statement"
msgid "case label %qE not within a switch statement"
msgstr "étiquette du CASE « %E » n'est pas à l'intérieur de la déclaration du SWITCH"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr ""
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "In statement function"
msgid "compound-statement in constexpr function"
msgstr "Dans la déclaration de fonction"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
#| msgid "empty body in an else-statement"
msgid "expected selection-statement"
msgstr "le corps du else est vide"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in conditions"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "la déclaration de l'expression a un type incomplet"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected iteration-statement"
msgstr "un nom de type attendu"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ interdit les gotos calculés"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected jump-statement"
msgstr "un nom de type attendu"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, fuzzy, gcc-internal-format
#| msgid "extra `;'"
msgid "extra %<;%>"
msgstr "« ; » superflu"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "mélange de déclarations et de définitions de fonction est interdit"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
#| msgid "pure-specifier on function-definition"
msgid "decl-specifier invalid in condition"
msgstr "spécificateur pur lors de la définition d'une fonction"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "définition de classe ne peut pas être déclaré comme ami"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid linkage-specification"
msgstr "spécification de base de classe invalide"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<decltype%> expressions"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid use of %<auto%> in conversion operator"
msgstr "utilisation invalide d'expression void"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "only constructors take base initializers"
msgid "only constructors take member initializers"
msgstr "seuls les constructeurs prennent des initialiseurs de base"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
#| msgid "missing initializer for member `%D'"
msgid "cannot expand initializer for member %<%D%>"
msgstr "initialiseur manquant pour le membre « %D »"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr ""
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "ancien style anachronique d'initialiseur de classe de base"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, fuzzy, gcc-internal-format
#| msgid "keyword `typename' not allowed in this context (a qualified member initializer is implicitly a type)"
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "mot clé « typename » n'est pas permis dans ce contexte (un initialisateur de membre qualifié est implicitement un type)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "predicate must be an identifier"
msgid "expected suffix identifier"
msgstr "le prédicat doit être un identificateur"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "opérande inattendue"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, fuzzy, gcc-internal-format
#| msgid "keyword `export' not implemented, and will be ignored"
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "mot clé « export » n'est pas implanté et sera ignoré"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "template parameter pack %qD cannot have a default argument"
msgstr "« %D » ne peut avoir d'arguments par défaut"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter pack cannot have a default argument"
msgstr "paramètres du patron ne peuvent pas être amis"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter packs cannot have default arguments"
msgstr "paramètres du patron ne peuvent pas être amis"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected template-id"
msgstr "un nom de type attendu"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<<%>"
msgstr "«;» attendu"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, fuzzy, gcc-internal-format
#| msgid "`<::' cannot begin a template-argument list"
msgid "%<<::%> cannot begin a template-argument list"
msgstr "« <:: » ne peut pas être au début d'une liste d'un patron d'arguments"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, fuzzy, gcc-internal-format
#| msgid "`<:' is an alternate spelling for `['. Insert whitespace between `<' and `::'"
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "« <: » est une épellation alternative pour « [ ». Insérer des blancs d,espacement entre « < » et « :: »"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, fuzzy, gcc-internal-format
#| msgid "`<::' cannot begin a template-argument list"
msgid "parse error in template argument list"
msgstr "« <:: » ne peut pas être au début d'une liste d'un patron d'arguments"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected template-name"
msgstr "un nom de type attendu"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, fuzzy, gcc-internal-format
#| msgid "non-template `%D' used as template"
msgid "non-template %qD used as template"
msgstr "« %D » qui n'est pas un patron est utilisé comme patron"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, fuzzy, gcc-internal-format
#| msgid "use `%T::template %D' to indicate that it is a template"
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "utiliser « %T::template %D » pour indiquer que c'est un patron"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected template-argument"
msgstr "un nom de type attendu"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
#| msgid "invalid use of '%D' as a non-type template-argument"
msgid "invalid non-type template argument"
msgstr "utilisation invalide de « %D » pour un non type de paramètre de patron"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#D' after"
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "instanciation explicite de « %#D » après"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#D' after"
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "instanciation explicite de « %#D » après"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "spécialisation de patron avec édition de liens C"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
#| msgid "sigof type specifier"
msgid "expected type specifier"
msgstr "spécificateur du type sigof"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type `%D', got `%D'"
msgid "expected template-id for type"
msgstr " attendait un patron de type « %D », a obtenu « %D »"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, gcc-internal-format
msgid "expected type-name"
msgstr "un nom de type attendu"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
#| msgid "declaration does not declare anything"
msgid "declaration %qD does not declare anything"
msgstr "déclaration ne déclarant rien du tout"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
#| msgid "invalid operation on uninstantiated type"
msgid "attributes ignored on uninstantiated type"
msgstr "opération invalide sur un type non instancié"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
#| msgid "storage class `%D' applied to template instantiation"
msgid "attributes ignored on template instantiation"
msgstr "classe de stockage « %D » appliqué à l'instanciation du patron"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function template"
msgid "%qD is an enumeration template"
msgstr "« %D » n'est pas un patron de fonction"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a namespace"
msgid "%qD is not an enumerator-name"
msgstr "« %D » n'est pas un espace de noms"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr ""
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
#| msgid "Enable automatic template instantiation"
msgid "cannot add an enumerator list to a template instantiation"
msgstr "Autoriser l'instanciation automatique de patron"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "déclaration de « %D » dans « %D » lequel n'entoure pas « %D »"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "déclaration de « %D » dans « %D » lequel n'entoure pas « %D »"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, fuzzy, gcc-internal-format
#| msgid "multiple definition of `%#T'"
msgid "multiple definition of %q#T"
msgstr "définition multiple de « %#T »"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a namespace"
msgid "%qD is not a namespace-name"
msgstr "« %D » n'est pas un espace de noms"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected namespace-name"
msgstr "un nom de type attendu"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
#| msgid "Min/max instructions not allowed"
msgid "%<namespace%> definition is not allowed here"
msgstr "instructions min/max ne sont pas permises"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "un id de patron ne peut pas apparaître dans l'utilisation de la déclaration"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
#| msgid "POS may not be specified for a list of field declarations"
msgid "types may not be defined in alias template declarations"
msgstr "POS ne peut pas être spécifiés pour une liste de déclarations de champs"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
#| msgid "%s: function definition not converted\n"
msgid "a function-definition is not allowed here"
msgstr "%s: définition de fonction n'a pas été convertie\n"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "une spécification asm n'est pas permise dans la définition de fonction"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "attributs ne sont pas permis dans la définition de fonction"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "excess unnamed initializers"
msgid "expected initializer"
msgstr "débordement d'initialiseurs sans nom"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid type in declaration"
msgstr "déclaration de fonction invalide"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
#| msgid "initializer specified for non-member function `%D'"
msgid "initializer provided for function"
msgstr "initialisation spécifiée pour une fonction « %D » n'étant pas membre"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "attributs après l'initialisateur mis entre parenthèses sont ignorés"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, fuzzy, gcc-internal-format
#| msgid "repetition count is not an integer constant"
msgid "array bound is not an integer constant"
msgstr "compteur de répétition n'est pas une constante entière"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type `%T'"
msgid "cannot define member of dependent typedef %qT"
msgstr "création d'un pointeur vers le membre de référence du type « %T »"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
#| msgid "`%T::%D' is not a type"
msgid "%<%T::%E%> is not a type"
msgstr "« %T::%D » n'est pas un type"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
#| msgid "invalid use of template `%D'"
msgid "invalid use of constructor as a template"
msgstr "utilisation invalide du patron « %D »"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -35788,277 +35848,277 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "déclarateur invalide"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declarator"
msgstr "déclaration vide"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, fuzzy, gcc-internal-format
#| msgid "`%D' is a namespace"
msgid "%qD is a namespace"
msgstr "« %D » est un nom d'espace"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type `%T'"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "création d'un pointeur vers le membre d'un type non classe « %T »"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "opérande inattendue"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
#| msgid "duplicate qualifier (offset %d)"
msgid "duplicate cv-qualifier"
msgstr "duplication du qualificateur (décalage %d)"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "multiple `virtual' specifiers"
msgid "duplicate virt-specifier"
msgstr "spécificateurs « virtual » multiples"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %D"
msgid "invalid use of %<auto%>"
msgstr "utilisation invalide de %D"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in template arguments"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected type-specifier"
msgstr "un nom de type attendu"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr ""
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in parameter types"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "utilisation de l'argument par défaut pour un paramètre d'une non fonction"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "arguments par défaut sont permis seulement pour les paramètres de fonction"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "parameter pack %qD cannot have a default argument"
msgstr "« %D » ne peut avoir d'arguments par défaut"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot have default arguments"
msgid "parameter pack cannot have a default argument"
msgstr "« %D » ne peut avoir d'arguments par défaut"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ ne permet de désigner les initialiseurs"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ ne permet de désigner les initialiseurs"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected class-name"
msgstr "un nom de type attendu"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
#| msgid "%J'%D' declared inline after its definition"
msgid "expected %<;%> after class definition"
msgstr "%J« %D » déclaré enligne après sa définition"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr ""
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
#| msgid "pure-specifier on function-definition"
msgid "expected %<;%> after union definition"
msgstr "spécificateur pur lors de la définition d'une fonction"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr ""
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "ne peut repérer le fichier pour la classe %s."
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "nom qualifié ne nomme pas une classe"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
#| msgid "invalid template declaration of `%D'"
msgid "invalid class name in declaration of %qD"
msgstr "déclaration de patron invalide « %D »"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
#| msgid "extra qualification ignored"
msgid "extra qualification not allowed"
msgstr "qualification superflue ignorée"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, fuzzy, gcc-internal-format
#| msgid "an explicit specialization must be preceded by 'template <>'"
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "spécialisation explicite doit être précédé par « template <> »"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
#| msgid "non-template `%D' used as template"
msgid "function template %qD redeclared as a class template"
msgstr "« %D » qui n'est pas un patron est utilisé comme patron"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, fuzzy, gcc-internal-format
#| msgid "previous definition of `%#T'"
msgid "previous definition of %q+#T"
msgstr "définition précédente de « %#T »"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected class-key"
msgstr "un nom de type attendu"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, fuzzy, gcc-internal-format
#| msgid "a class-key must be used when declaring a friend"
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "une clé de classe doit être utilise lors de la déclaration d'un ami"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "déclaration amie ne nomme pas une classe ou une fonction"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "spécificateur pur lors de la définition d'une fonction"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr ""
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
#| msgid "brace-enclosed initializer used to initialize `%T'"
msgid "a brace-enclosed initializer is not allowed here"
msgstr "initialiseur utilisé entre accolades pour initialiser « %T »"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, fuzzy, gcc-internal-format
#| msgid "keyword `typename' not allowed outside of templates"
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "mot clé « typename » n'est pas permis en dehors du patron"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, fuzzy, gcc-internal-format
#| msgid "keyword `typename' not allowed in this context (the base class is implicitly a type)"
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "mot clé « typename » n'est pas permis dans ce contexte (la classe de base est implicitement un type)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in an exception-specification"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in exception-declarations"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of `%D'"
msgid "invalid declaration of %<%T::%E%>"
msgstr "redéclaration invalide de « %D »"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "trop peu de patron de listes de paramètres"
@@ -36067,350 +36127,350 @@ msgstr "trop peu de patron de listes de paramètres"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "trop de patron de listes de paramètres"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "valeurs nommées à retourner ne sont plus supportées"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, fuzzy, gcc-internal-format
#| msgid "invalid declaration of member template `%#D' in local class"
msgid "invalid declaration of member template in local class"
msgstr "déclaration invalide du patron de membre « %#D » dans la classe locale"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "patron avec liaison C"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
#| msgid "explicit specialization here"
msgid "invalid explicit specialization"
msgstr "spécialisation explicite ici"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
#| msgid "template declaration of `%#D'"
msgid "template declaration of %<typedef%>"
msgstr "déclaration du patron de « %#D »"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
#| msgid "explicit specialization here"
msgid "explicit template specialization cannot have a storage class"
msgstr "spécialisation explicite ici"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
#| msgid "`>>' should be `> >' within a nested template argument list"
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "« >> » devrait être « > > » à l'intérieur du patron de la liste d'arguments"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, fuzzy, gcc-internal-format
#| msgid "spurious `>>', use `>' to terminate a template argument list"
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "faux « >> », utiliser « > » pour terminer la liste d'argument du patron"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid use of %qD in linkage specification"
msgstr "spécification de base de classe invalide"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
#| msgid "`__thread' before `extern'"
msgid "%<__thread%> before %qD"
msgstr "« __thread » avant « extern »"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected %<new%>"
msgstr "un nom de type attendu"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr ""
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<return%>"
msgstr "opérande inattendue"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<extern%>"
msgstr "opérande inattendue"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr ""
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected %<decltype%>"
msgstr "un nom de type attendu"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected %<operator%>"
msgstr "opérande inattendue"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr ""
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected %<template%>"
msgstr "un nom de type attendu"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected %<namespace%>"
msgstr "un nom de type attendu"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr ""
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected %<asm%>"
msgstr "un nom de type attendu"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected %<try%>"
msgstr "un nom de type attendu"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr ""
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr ""
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr ""
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
#| msgid "expected type-name"
msgid "expected %<@try%>"
msgstr "un nom de type attendu"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr ""
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr ""
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr ""
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr ""
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<*%>"
msgstr "«;» attendu"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<~%>"
msgstr "«;» attendu"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr ""
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr ""
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, fuzzy, gcc-internal-format
#| msgid "`%s' tag used in naming `%#T'"
msgid "%qs tag used in naming %q#T"
msgstr "étiquette « %s » utilisée dans la dénomination de « %#T »"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "`%s' previously declared here"
msgid "%q#T was previously declared here"
msgstr "« %s » précédemment déclaré ici"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, fuzzy, gcc-internal-format
#| msgid "%D redeclared with different access"
msgid "%qD redeclared with different access"
msgstr "« %#D » redéclaré avec un accès différent"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, fuzzy, gcc-internal-format
#| msgid "`template' (as a disambiguator) is only allowed within templates"
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "« template » (afin de rendre moins ambiguë) est seulement permis à l'intérieur des patron"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "fin de fichier dans l'argument par défaut"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
#| msgid "Class or interface declaration expected"
msgid "objective-c++ method declaration is expected"
msgstr "Déclaration de classe ou d'interface attendue"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "method attributes must be specified at the end"
msgstr "%Jl'attribut de section ne peut être spécifié pour des variables locales"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
#| msgid "invalid register name `%s' for register variable"
msgid "invalid type for instance variable"
msgstr "nom de registre invalide « %s » pour un variable registre"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, fuzzy, gcc-internal-format
#| msgid "Identifier expected"
msgid "identifier expected after %<@protocol%>"
msgstr "Identificateur attendu"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored for `%s'"
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "attribut « %s » ignoré pour « %s »"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid type for property"
msgstr "type d'argument invalide"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
#| msgid "register variable `%s' used in nested function"
msgid "iteration variable %qD should not be reduction"
msgstr "variable de registre « %s » utilisée dans une fonction imbriquée"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
#| msgid "not enough type information"
msgid "not enough collapsed for loops"
msgstr "pas assez d'information sur le type"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
#| msgid "junk at end of #pragma GCC java_exceptions"
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "rebut à la fin de #pragma GCC java_exceptions"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, fuzzy, gcc-internal-format
#| msgid "inter-module optimisations not implemented yet"
msgid "inter-module optimizations not implemented for C++"
@@ -36524,18 +36584,18 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "« %D » n'est pas un patron de fonction"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' for `%+D' does not match any template declaration"
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "template-id « %D » pour « %+D » ne concorde pas avec aucune déclaration de patron"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization `%D' for `%+D'"
msgid "ambiguous template specialization %qD for %q+D"
@@ -36543,57 +36603,57 @@ msgstr "spécialisation de patron amibiguë « %D » pour « %+D »"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' in declaration of primary template"
msgid "template-id %qD in declaration of primary template"
msgstr "template-id « %D » dans la déclaration de patron primaire"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "patron de liste de paramètres utilisé dans une instanciation explicite"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "définition fournie pour une instanciation explicite"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, fuzzy, gcc-internal-format
#| msgid "too many template parameter lists in declaration of `%D'"
msgid "too many template parameter lists in declaration of %qD"
msgstr "trop de patrons de listes de paramètres dans la déclaration de « %D »"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, fuzzy, gcc-internal-format
#| msgid "too few template parameter lists in declaration of `%D'"
msgid "too few template parameter lists in declaration of %qD"
msgstr "trop peu de patrons de listes de paramètres dans la déclaration de « %D »"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, fuzzy, gcc-internal-format
#| msgid "an explicit specialization must be preceded by 'template <>'"
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "spécialisation explicite doit être précédé par « template <> »"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "argument par défaut spécifié dans la spécialisation explicite"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a member template function"
msgid "%qD is not a template function"
msgstr "« %D » n'est pas une membre du patron de fonction"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
#| msgid "`%D' not declared"
msgid "%qD is not declared in %qD"
@@ -36607,89 +36667,89 @@ msgstr "« %D » n'est pas déclaré"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "spécialisation d'un membre spécial d'nue fonction déclaré implicitement"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, fuzzy, gcc-internal-format
#| msgid "no member function `%D' declared in `%T'"
msgid "no member function %qD declared in %qT"
msgstr "pas de membre de fonction « %D » déclaré dans « %T »"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, fuzzy, gcc-internal-format
#| msgid " `%D'"
msgid " %qD"
msgstr " « %D »"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
#| msgid "<anonymous>"
msgid " <anonymous>"
msgstr "<anonymous>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
msgid "declaration of %q+#D"
msgstr "déclaration de « %#D »"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, fuzzy, gcc-internal-format
#| msgid " shadows template parm `%#D'"
msgid " shadows template parm %q+#D"
msgstr " masque le paramètre du patron « %#D »"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "paramètres du patron ne sont pas utilisés dans la spécialisation partielle:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, fuzzy, gcc-internal-format
#| msgid "partial specialization `%T' does not specialize any template arguments"
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "spécialisation partielle « %T » ne spécialise pas aucun patron d'arguments"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, fuzzy, gcc-internal-format
#| msgid "template argument `%E' involves template parameter(s)"
msgid "template argument %qE involves template parameter(s)"
msgstr "patron d'argument « %E » implique des paramètres du patron"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
#| msgid "type `%T' of template argument `%E' depends on template parameter(s)"
msgid "type %qT of template argument %qE depends on a template parameter"
@@ -36697,58 +36757,58 @@ msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "type « %T » du patron d'argument « %E » dépend des paramètres du patron"
msgstr[1] "type « %T » du patron d'argument « %E » dépend des paramètres du patron"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
#| msgid "specialization of `%T' after instantiation"
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "spécialisation de « %T » après instanciation"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, fuzzy, gcc-internal-format
#| msgid "no default argument for `%D'"
msgid "no default argument for %qD"
msgstr "pas d'argument par défaut pour « %D »"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "arguments par défaut ne sont pas permis dans la déclaration amie de la spécialisation du patron « %D »"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
msgid "default template arguments may not be used in function template friend declarations"
msgstr "arguments par défaut ne sont pas permis dans la déclaration amie de la spécialisation du patron « %D »"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, fuzzy, gcc-internal-format
#| msgid "template parameters not used in partial specialization:"
msgid "default template arguments may not be used in partial specializations"
msgstr "paramètres du patron ne sont pas utilisés dans la spécialisation partielle:"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type `%T' has type `%T'"
msgid "default argument for template parameter for class enclosing %qD"
msgstr "argument par défaut pour le paramètre de type « %T » a le type « %T »"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "patron de classe sans nom"
@@ -36756,7 +36816,7 @@ msgstr "patron de classe sans nom"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, fuzzy, gcc-internal-format
#| msgid "destructor `%D' declared as member template"
msgid "destructor %qD declared as member template"
@@ -36767,66 +36827,66 @@ msgstr "destructeur « %D » déclaré en tant que membre du patron"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, fuzzy, gcc-internal-format
#| msgid "invalid template declaration of `%D'"
msgid "invalid template declaration of %qD"
msgstr "déclaration de patron invalide « %D »"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, fuzzy, gcc-internal-format
#| msgid "template definition of non-template `%#D'"
msgid "template definition of non-template %q#D"
msgstr "définition de patron d'un non patron « %#D »"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, fuzzy, gcc-internal-format
#| msgid "expected %d levels of template parms for `%#D', got %d"
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "attendait %d niveaux de patron de paramètres pour « %#D », obtenu %d"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for `%#D'"
msgid "got %d template parameters for %q#D"
msgstr "a obtenu %d paramètres de patron pour « %#D »"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for `%#T'"
msgid "got %d template parameters for %q#T"
msgstr "a obtenu %d paramètres de patron pour « %#T »"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " mais %d son requis"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
#| msgid "template-id `%D' for `%+D' does not match any template declaration"
msgid "template arguments to %qD do not match original template %qD"
msgstr "template-id « %D » pour « %+D » ne concorde pas avec aucune déclaration de patron"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, fuzzy, gcc-internal-format
#| msgid "enclosing class templates are not explicitly specialized"
msgid "use template<> for an explicit specialization"
msgstr "fermetures de patrons de classe ne sont pas explicitement spécialisées"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template type"
msgid "%qT is not a template type"
msgstr "« %T » n'est pas un type patron"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, fuzzy, gcc-internal-format
#| msgid "too few template parameter lists in declaration of `%D'"
msgid "template specifiers not specified in declaration of %qD"
msgstr "trop peu de patrons de listes de paramètres dans la déclaration de « %D »"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%D' used without template parameters"
msgid "redeclared with %d template parameter"
@@ -36834,7 +36894,7 @@ msgid_plural "redeclared with %d template parameters"
msgstr[0] "« %D » utilisé sans patron de paramétres"
msgstr[1] "« %D » utilisé sans patron de paramétres"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%#D' here"
msgid "previous declaration %q+D used %d template parameter"
@@ -36842,13 +36902,13 @@ msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "déclaration précédente de « %#D » ici"
msgstr[1] "déclaration précédente de « %#D » ici"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, fuzzy, gcc-internal-format
#| msgid "template parameter `%#D'"
msgid "template parameter %q+#D"
msgstr "patron de paramètre « %#D »"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, fuzzy, gcc-internal-format
#| msgid "redeclared here as `%#D'"
msgid "redeclared here as %q#D"
@@ -36858,295 +36918,295 @@ msgstr "redéclaré ici comme « %#D »"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for `%#D'"
msgid "redefinition of default argument for %q#D"
msgstr "redéfinition de l'argument par défaut pour « %#D »"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
#| msgid "%J original definition appeared here"
msgid "original definition appeared here"
msgstr "%J définition originale apparaît ici"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid "%qE is not a valid template argument for type %qT"
msgstr "« %E » n'est pas un argument valide pour le patron"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
#| msgid "it must be a pointer-to-member of the form `&X::Y'"
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:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for `%#D'"
msgid " couldn't deduce template parameter %qD"
msgstr "a obtenu %d paramètres de patron pour « %#D »"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types `%#T' and `%#T'"
msgid " mismatched types %qT and %qT"
msgstr "comparaison entre les types « %#T » et « %#T »"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "template argument `%E' involves template parameter(s)"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "patron d'argument « %E » implique des paramètres du patron"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr ""
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "« %E » n'est pas un argument valide pour le patron"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid " member function type %qT is not a valid template argument"
msgstr "« %E » n'est pas un argument valide pour le patron"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type `%T' to type `%T'"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "ne peut convertir type « %T » vers le type « %T »"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
#| msgid "`%T' is an ambiguous base of `%T'"
msgid " %qT is an ambiguous base class of %qT"
msgstr "« %T » est une base ambiguë de « %T »"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type `%T' is not derived from type `%T'"
msgid " %qT is not derived from %qT"
msgstr "type « %T » n'est pas dérivé du type « %T »"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr ""
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "template argument %d is invalid"
msgid " template argument %qE does not match %qD"
msgstr "patron de l'argument %d est invalide"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid " could not resolve address from overloaded function %qE"
msgstr "%s ne peut résoudre l'adresse la fonction surchargée"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
#| msgid "template argument required for `%s %T'"
msgid "in template argument for type %qT "
msgstr "argument du patron est requis pour « %s %T »"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr ""
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, fuzzy, gcc-internal-format
#| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr "il doit être l'adresse d'une fonction avec lien externe"
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "« %E » n'est pas un argument valide pour le patron"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, fuzzy, gcc-internal-format
#| msgid "`%E' is not a valid template argument"
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "« %E » n'est pas un argument valide pour le patron"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, fuzzy, gcc-internal-format
#| msgid "conditional expression not allowed in this context"
msgid "standard conversions are not allowed in this context"
msgstr "expression conditionnelle n'est pas permise dans ce contexte"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
#| msgid "missing `>' to terminate the template argument list"
msgid "ignoring attributes on template argument %qT"
msgstr "« > » manquant pour terminer la liste d'argument du patron"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, fuzzy, gcc-internal-format
#| msgid "invalid use of '%D' as a non-type template-argument"
msgid "injected-class-name %qD used as template template argument"
msgstr "utilisation invalide de « %D » pour un non type de paramètre de patron"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `restrict'"
msgid "invalid use of destructor %qE as a type"
msgstr "usage de « restrict » invalide"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, fuzzy, gcc-internal-format
#| msgid "to refer to a type member of a template parameter, use `typename %E'"
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "pour référencer un type de membre de patron de paramètres, utiliser « typename %E »"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, fuzzy, gcc-internal-format
#| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "non concordance de type/valeur pour l'argument %d dans la liste des paramètres du patron de « %D »"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, fuzzy, gcc-internal-format
#| msgid " expected a constant of type `%T', got `%T'"
msgid " expected a constant of type %qT, got %qT"
msgstr " attendait une constante de type « %T », a obtenu « %T »"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, fuzzy, gcc-internal-format
#| msgid " expected a class template, got `%E'"
msgid " expected a class template, got %qE"
msgstr " attendait un patron de classe, a obtenu « %E »"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, fuzzy, gcc-internal-format
#| msgid " expected a type, got `%E'"
msgid " expected a type, got %qE"
msgstr " attendait un type, a obtenu « %E »"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, fuzzy, gcc-internal-format
#| msgid " expected a type, got `%T'"
msgid " expected a type, got %qT"
msgstr " attendait un type, a obtenu « %T »"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, fuzzy, gcc-internal-format
#| msgid " expected a class template, got `%T'"
msgid " expected a class template, got %qT"
msgstr " attendait un patron de classe, a obtenu « %T »"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type `%D', got `%D'"
msgid " expected a template of type %qD, got %qT"
@@ -37154,81 +37214,81 @@ msgstr " attendait un patron de type « %D », a obtenu « %D »"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
#| msgid "mode mismatch in parameter %d"
msgid "type mismatch in nontype parameter pack"
msgstr "non concordance du mode dans le paramètre %d"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, fuzzy, gcc-internal-format
#| msgid "could not convert template argument `%E' to `%T'"
msgid "could not convert template argument %qE to %qT"
msgstr "ne peut convertir l'argument du patron « %E » vers « %T »"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "nombre erroné d'arguments du patron (%d devrait être %d)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "nombre erroné d'arguments du patron (%d devrait être %d)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, fuzzy, gcc-internal-format
#| msgid "provided for `%D'"
msgid "provided for %q+D"
msgstr "fournie pour « %D »"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "patron de l'argument %d est invalide"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function template"
msgid "%q#D is not a function template"
msgstr "« %D » n'est pas un patron de fonction"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, fuzzy, gcc-internal-format
#| msgid "non-template type `%T' used as a template"
msgid "non-template type %qT used as a template"
msgstr "type non patron « %T » utilisé comme un patron"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, fuzzy, gcc-internal-format
#| msgid "for template declaration `%D'"
msgid "for template declaration %q+D"
msgstr "pour la déclaration du patron « %D »"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "instantiation de la profondeur du patron excède le maximum de %d (utiliser -ftemplate-depth-NN pour augmenter le maximum) lors de l'instanciation de « %D »"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "instantiation de la profondeur du patron excède le maximum de %d (utiliser -ftemplate-depth-NN pour augmenter le maximum) lors de l'instanciation de « %D »"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, fuzzy, gcc-internal-format
#| msgid "instantiation of `%D' as type `%T'"
msgid "instantiation of %q+D as type %qT"
@@ -37247,299 +37307,299 @@ msgstr "instanciation de « %D » comme type « %T »"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
#| msgid "sizeof applied to a function type"
msgid "variable %qD has function type"
msgstr "sizeof appliqué sur un type de fonction"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, fuzzy, gcc-internal-format
#| msgid "invalid parameter type `%T'"
msgid "invalid parameter type %qT"
msgstr "paramètre invalide pour le type « %T »"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, fuzzy, gcc-internal-format
#| msgid "in declaration `%D'"
msgid "in declaration %q+D"
msgstr "dans la déclaration de « %D »"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, fuzzy, gcc-internal-format
#| msgid "function returns an aggregate"
msgid "function returning an array"
msgstr "fonction retourne un aggrégat"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, fuzzy, gcc-internal-format
#| msgid "`%s' declared as function returning a function"
msgid "function returning a function"
msgstr "« %s » déclaré comme une fonction retournant une fonction"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member function of non-class type `%T'"
msgid "creating pointer to member function of non-class type %qT"
msgstr "création d'un pointeur vers le membre d'une fonction d'un type non classe « %T »"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "formation d'une référence en void"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type `%T'"
msgid "forming pointer to reference type %qT"
msgstr "formant %s pour référencer le type « %T »"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type `%T'"
msgid "forming reference to reference type %qT"
msgstr "formant %s pour référencer le type « %T »"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type `%T'"
msgid "creating pointer to member of non-class type %qT"
msgstr "création d'un pointeur vers le membre d'un type non classe « %T »"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type `%T'"
msgid "creating pointer to member reference type %qT"
msgstr "création d'un pointeur vers le membre de référence du type « %T »"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type `%T'"
msgid "creating pointer to member of type void"
msgstr "création d'un pointeur vers le membre de référence du type « %T »"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, fuzzy, gcc-internal-format
#| msgid "creating array of `%T'"
msgid "creating array of %qT"
msgstr "création du tableau « %T »"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, fuzzy, gcc-internal-format
#| msgid "creating array of `%T', which is an abstract class type"
msgid "creating array of %qT, which is an abstract class type"
msgstr "création d'un tableau « %T », lequel est un type de classe abstraite"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class, struct, or union type"
msgid "%qT is not a class, struct, or union type"
msgstr "« %T » n'est pas une classe, struct ou un type d'union"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, fuzzy, gcc-internal-format
#| msgid "%T is not a class type"
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "« %T » n'est pas un type de classe"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, fuzzy, gcc-internal-format
#| msgid "use of `%s' in template"
msgid "use of %qs in template"
msgstr "utilisation de « %s » dans le patron"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
#| msgid "qualified type `%T' does not match destructor name `~%T'"
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "type qualifé « %T » ne concorde pas le nom du destructeur «~%T»"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, fuzzy, gcc-internal-format
#| msgid "dependent-name `%E' is parsed as a non-type, but instantiation yields a type"
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "nom dépendant « %E » est analysé comme un non type, mais son instantiation le rend comme un type"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, fuzzy, gcc-internal-format
#| msgid "say `typename %E' if a type is meant"
msgid "say %<typename %E%> if a type is meant"
msgstr "utiliser « typename %E » si un type est désiré"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, fuzzy, gcc-internal-format
#| msgid "missing static field `%s'"
msgid "using invalid field %qD"
msgstr "champ statique manquant « %s »"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid use of pack expansion expression"
msgstr "utilisation invalide d'expression void"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr ""
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "`%s' undeclared here (not in a function)"
msgid "%q+D declared here, later in the translation unit"
msgstr "« %s » non déclaré ici (hors de toute fonction)"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a class or namespace"
msgid "%qT is not a class or namespace"
msgstr "« %T » n'est pas une classe ou un espace de noms"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a class or namespace"
msgid "%qD is not a class or namespace"
msgstr "« %D » n'est pas une classe ou un espace de noms"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, fuzzy, gcc-internal-format
#| msgid "`%T' uses anonymous type"
msgid "%qT is/uses anonymous type"
msgstr "« %T » utilise un type anonyme"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
#| msgid "default argument for `%#D' has type `%T'"
msgid "template argument for %qD uses local type %qT"
msgstr "argument par défaut pour « %#D » à un type « %T »"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, fuzzy, gcc-internal-format
#| msgid "`%T' is a variably modified type"
msgid "%qT is a variably modified type"
msgstr "« %T » est type modifié de manière variable"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, fuzzy, gcc-internal-format
#| msgid "integral expression `%E' is not constant"
msgid "integral expression %qE is not constant"
msgstr "expression intégrale « %E » n'est pas une constante"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, fuzzy, gcc-internal-format
#| msgid " trying to instantiate `%D'"
msgid " trying to instantiate %qD"
msgstr " tentative d'instanciation « %D »"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, fuzzy, gcc-internal-format
#| msgid "ambiguous class template instantiation for `%#T'"
msgid "ambiguous class template instantiation for %q#T"
msgstr "instanciation ambiguë de patron de classe pour « %#T »"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template `%#D'"
msgid "explicit instantiation of non-template %q#D"
msgstr "instanciation explicite d'un non patron « %#D »"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
#| msgid "`%#D' is not a non-static data member of `%T'"
msgid "%qD is not a static data member of a class template"
msgstr "« %#D » n'est pas un membre statique de données de « %T »"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, fuzzy, gcc-internal-format
#| msgid "no matching template for `%D' found"
msgid "no matching template for %qD found"
msgstr "non concordance de patron pour « %D » repéré"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type `%T'"
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "instanciation explicite de type non patron « %T »"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#D'"
msgid "explicit instantiation of %q#D"
msgstr "instanciation explicite de « %#D »"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, fuzzy, gcc-internal-format
#| msgid "duplicate explicit instantiation of `%#D'"
msgid "duplicate explicit instantiation of %q#D"
msgstr "duplication d'instanciation explicite de « %#D »"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ interdit l'utilisation de « extern » sur instanciations explicites"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, fuzzy, gcc-internal-format
#| msgid "storage class `%D' applied to template instantiation"
msgid "storage class %qD applied to template instantiation"
msgstr "classe de stockage « %D » appliqué à l'instanciation du patron"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template `%#D'"
msgid "explicit instantiation of non-class template %qD"
msgstr "instanciation explicite d'un non patron « %#D »"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type `%T'"
msgid "explicit instantiation of non-template type %qT"
msgstr "instanciation explicite de type non patron « %T »"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%#T' before definition of template"
msgid "explicit instantiation of %q#T before definition of template"
msgstr "instanciation explicite de « %#T » avant la définition de patron"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ interdit l'utilisation de « %s » sur instanciations explicites"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, fuzzy, gcc-internal-format
#| msgid "duplicate explicit instantiation of `%#T'"
msgid "duplicate explicit instantiation of %q#T"
@@ -37552,37 +37612,37 @@ msgstr "duplication d'instanciation explicite de « %#T »"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of `%D' but no definition available"
msgid "explicit instantiation of %qD but no definition available"
msgstr "instanciation explicite de « %D » mais pas de définition disponible"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "instantiation de la profondeur du patron excède le maximum de %d (utiliser -ftemplate-depth-NN pour augmenter le maximum) lors de l'instanciation de « %D »"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "invalid catch parameter"
msgid "invalid template non-type parameter"
msgstr "paramètre d'interception invalide"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
#| msgid "`%#T' is not a valid type for a template constant parameter"
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "« %#T » n'a pas un type valide pour un patron de parametre de constante"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, fuzzy, gcc-internal-format
#| msgid "brace-enclosed initializer used to initialize `%T'"
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr "initialiseur utilisé entre accolades pour initialiser « %T »"
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -37590,12 +37650,12 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -37814,7 +37874,7 @@ msgstr "utilisation invalide de « this » hors de toute fonction"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "étendue invalide du qualificateur dans un nom de pseudo-destructeur"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, fuzzy, gcc-internal-format
#| msgid "qualified type `%T' does not match destructor name `~%T'"
msgid "qualified type %qT does not match destructor name ~%qT"
@@ -37860,501 +37920,501 @@ msgstr "définition de « %#T » à l'intérieur d'un patron de liste de paramètres"
msgid "invalid definition of qualified type %qT"
msgstr "définition invalide d'un type qualifié « %T »"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "spécification de base de classe invalide"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
#| msgid "`%D' not declared"
msgid "%qD is not captured"
msgstr "« %D » n'est pas déclaré"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, fuzzy, gcc-internal-format
#| msgid "use of %s from containing function"
msgid "use of %<auto%> variable from containing function"
msgstr "utilisation de %s d'un fonction contenante"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, fuzzy, gcc-internal-format
#| msgid "use of %s from containing function"
msgid "use of parameter from containing function"
msgstr "utilisation de %s d'un fonction contenante"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid " %q+#D declared here"
msgstr " « %#D » déclaré ici"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, fuzzy, gcc-internal-format
#| msgid "%s parameter %d must be a location"
msgid "use of parameter %qD outside function body"
msgstr "%s paramètre %d doit être une localisation"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, fuzzy, gcc-internal-format
#| msgid "template parameter `%D' of type `%T' is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "paramètre « %D » du patron du type « %T » ne sont pas permises dans une expression intégrale de constante parce qu'elle n'est pas intégral ou un type énumération"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, fuzzy, gcc-internal-format
#| msgid "use of namespace `%D' as expression"
msgid "use of namespace %qD as expression"
msgstr "utilisation d'un espace de dnomes « %D » comme expression"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, fuzzy, gcc-internal-format
#| msgid "use of class template `%T' as expression"
msgid "use of class template %qT as expression"
msgstr "utilisation du patron de classe « %T » comme expression"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, fuzzy, gcc-internal-format
#| msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "requête du membre « %D » est ambiquë dans de mutliples héritage de treillis"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot appear in a constant-expression"
msgid "%qD cannot appear in a constant-expression"
msgstr "« %D » ne peut apparaître dans une expression de constante"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, fuzzy, gcc-internal-format
#| msgid "type of `%E' is unknown"
msgid "type of %qE is unknown"
msgstr "type « %E » est inconnu"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template type"
msgid "%qT is not an enumeration type"
msgstr "« %T » n'est pas un type patron"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "spécificateurs de classe de stockage invalides dans la déclaration des paramètres"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function `%D'"
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "utilisation invalide d'un membre non statique de fonction « %D »"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
#| msgid "`%s' is not a valid class name"
msgid "%qD is not a variable in clause %qs"
msgstr "« %s » n'est pas un nom de classe valide"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "instance de la variable « %s » est déclaré privée"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
#| msgid "instance variable `%s' is declared private"
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "instance de la variable « %s » est déclaré privée"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, fuzzy, gcc-internal-format
#| msgid "%s expression must be referable"
msgid "num_threads expression must be integral"
msgstr "expression %s doit être référable"
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, fuzzy, gcc-internal-format
#| msgid "%s expression must be referable"
msgid "schedule chunk size expression must be integral"
msgstr "expression %s doit être référable"
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
#| msgid "Invalid reference type"
msgid "%qE has reference type for %qs"
msgstr "Type de référence invalide"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr ""
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
#| msgid "%Jnon-static declaration of '%D' follows static declaration"
msgid "non-constant condition for static assertion"
msgstr "%Jdéclaration non statique de « %D » suite une déclaration statique"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
#| msgid "argument 2 to MODIFY must be a string"
msgid "argument to decltype must be an expression"
msgstr "argument 2 de MODIFY doit être une chaîne"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s ne peut résoudre l'adresse la fonction surchargée"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for member function `%#D'"
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "type retourné invalide pour le membre de la fonction « %#D »"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
#| msgid "invalid return type for function `%#D'"
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "type retourné invalide pour la fonction « %#D »"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr ""
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, fuzzy, gcc-internal-format
#| msgid "IN expression does not have a mode"
msgid "constexpr constructor does not have empty body"
msgstr "expression IN n'a pas de mode"
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
#| msgid "uninitialized member `%D' with `const' type `%T'"
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "membre non initialisé « %D » avec « const » type « %T »"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr ""
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
#| msgid "friend declaration does not name a class or function"
msgid "expression %qE does not designate a constexpr function"
msgstr "déclaration amie ne nomme pas une classe ou une fonction"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function `%D'"
msgid "call to non-constexpr function %qD"
msgstr "appel à une non fonction « %D »"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot appear in a constant-expression"
msgid "%qD called in a constant expression"
msgstr "« %D » ne peut apparaître dans une expression de constante"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
#| msgid "`%D' implicitly declared before its definition"
msgid "%qD used before its definition"
msgstr "« %D » implicitement déclaré avant sa définition"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
#| msgid "protocol `%s' has circular dependency"
msgid "call has circular dependency"
msgstr "le protocole « %s » a une dépendance circulaire"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "instantiation de la profondeur du patron excède le maximum de %d (utiliser -ftemplate-depth-NN pour augmenter le maximum) lors de l'instanciation de « %D »"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
#| msgid "non-constant expression"
msgid "%q+E is not a constant expression"
msgstr "expression n'est pas une constante"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript out of bound"
msgstr "l'indice du tableau n'est pas un entier"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
#| msgid "non-constant expression"
msgid "%qE is not a constant expression"
msgstr "expression n'est pas une constante"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
#| msgid "%s cannot appear in a constant-expression"
msgid "mutable %qD is not usable in a constant expression"
msgstr "%s ne peut apparaître dans une expression de constante"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, fuzzy, gcc-internal-format
#| msgid "Missing or invalid constant expression"
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "Expresion de constante manquante ou invalide"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
#| msgid "size of array `%D' is not an integral constant-expression"
msgid "the value of %qD is not usable in a constant expression"
msgstr "taille du tableau « %D » n'a pas une expression de constante de type entier"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "excess elements in union initializer"
msgid "%qD used in its own initializer"
msgstr "éléments en excès dans l'initialisation d'union"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a function,"
msgid "%q#D is not const"
msgstr "« %D » n'est pas une fonction"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
#| msgid "`%+#D' is private"
msgid "%q#D is volatile"
msgstr "« %+#D » est privé"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
#| msgid "`%D' cannot appear in a constant-expression"
msgid "%qD was not initialized with a constant expression"
msgstr "« %D » ne peut apparaître dans une expression de constante"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
#| msgid "`%D' was not declared in this scope"
msgid "%qD was not declared %<constexpr%>"
msgstr "« %D » n'a pas été déclaré dans cet horizon"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
#| msgid "expression in new-declarator must have integral or enumeration type"
msgid "%qD does not have integral or enumeration type"
msgstr "expression dans le nouveau déclarateur doit être un type entier ou d'énumération"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "type énuméré et non énuméré dans l'expression conditionnelle"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
#| msgid "integral expression `%E' is not constant"
msgid "expression %qE is not a constant-expression"
msgstr "expression intégrale « %E » n'est pas une constante"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "unexpected expression %qE of kind %s"
msgstr "expression d'adresse inattendue"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "taille du tableau n'est pas une expression de constante de type entier"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
#| msgid "integral expression `%E' is not constant"
msgid "pointer comparison expression is not a constant expression"
msgstr "expression intégrale « %E » n'est pas une constante"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "division by zero is not a constant-expression"
msgstr "taille du tableau n'est pas une expression de constante de type entier"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "index de tableau non constant dans l'initialisation"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unexpected type for `id' (%s)"
msgid "unexpected AST of kind %s"
msgstr "type inattendu pour « id » (%s)"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
#| msgid "cannot declare %s to references"
msgid "cannot capture %qE by reference"
msgstr "ne peut déclarer %s comme références"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr ""
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, fuzzy, gcc-internal-format
#| msgid "`%V' qualifiers cannot be applied to `%T'"
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "qualificateur « %V » ne peut pas être appliqué à « %T »"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute can only be applied to Java class definitions"
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "attribut « %s » peut seulement être appliqué aux définitions de classes Java"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute can only be applied to class definitions"
msgid "%qE attribute can only be applied to class definitions"
msgstr "attribut « %s » peut seulement être appliqué aux définitions de classes"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, fuzzy, gcc-internal-format
#| msgid "`%s' is obsolete; g++ vtables are now COM-compatible by default"
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "« %s » est obsolète; vtables g++ sont maintenant COM-compatibles par défaut"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "init_priority demandé n'est pas une constante entière"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, fuzzy, gcc-internal-format
#| msgid "can only use `%s' attribute on file-scope definitions of objects of class type"
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "peut seulement utiliser l'attribut « %s » sur la portée de fichier de définitions des objets de type de classe"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "init_priority demandé est hors limite"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "init_priority demandé est réservé pour un usage interne"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute is not supported on this platform"
msgid "%qE attribute is not supported on this platform"
msgstr "attribut « %s » n'est pas supporté sur cette plate-forme"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "vérification lang_* : éched dans %s, à %s:%d"
@@ -38458,224 +38518,230 @@ msgstr "ISO C++ interdit l'application de « %s » à une expression d'un type de f
msgid "invalid use of non-static member function"
msgstr "utilisation invalide d'un membre non statique de fonction"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "prise de l'adresse du temporaire"
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
#| msgid "deprecated conversion from string constant to `%T'"
msgid "deprecated conversion from string constant to %qT"
msgstr "conversion obsolète de la chaîne de constante vers « %T »"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
#| msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "requête du membre « %D » dans « %E », lequel n'est pas de type aggrégat « %T »"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, fuzzy, gcc-internal-format
#| msgid "request for member `%D' in `%E', which is of non-class type `%T'"
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "requête du membre « %D » dans « %E », lequel n'est pas de type classe « %T »"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, fuzzy, gcc-internal-format
#| msgid "invalid use of nonstatic data member '%E'"
msgid "invalid use of nonstatic data member %qE"
msgstr "utilisation invalide d'un membre de données non statique « %E »"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, fuzzy, gcc-internal-format
#| msgid "invalid access to non-static data member `%D' of NULL object"
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "accès invalide à un membre de données non statique « %D » d'un objet null"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, fuzzy, gcc-internal-format
#| msgid "(perhaps the `offsetof' macro was used incorrectly)"
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(peut-être que le macro « offsetof » a été utilisé incorrectement)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
#| msgid "invalid access to non-static data member `%D' of NULL object"
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "accès invalide à un membre de données non statique « %D » d'un objet null"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
#| msgid "qualified type `%T' does not match destructor name `~%T'"
msgid "object type %qT does not match destructor name ~%qT"
msgstr "type qualifé « %T » ne concorde pas le nom du destructeur «~%T»"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, fuzzy, gcc-internal-format
#| msgid "the type being destroyed is `%T', but the destructor refers to `%T'"
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "le type devant être détruit est « %T », mais le destructeur réfère à « %T »"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, fuzzy, gcc-internal-format
#| msgid "`%D::%D' is not a member of `%T'"
msgid "%<%D::%D%> is not a member of %qT"
msgstr "« %D::%D » n'est pas un membre de « %T »"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a base of `%T'"
msgid "%qT is not a base of %qT"
msgstr "« %D » n'est pas une base de « %T »"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, fuzzy, gcc-internal-format
#| msgid "'%D' has no member named '%E'"
msgid "%qD has no member named %qE"
msgstr "« %D » n'a pas de membre nommé « %E »"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a member template function"
msgid "%qD is not a member template function"
msgstr "« %D » n'est pas une membre du patron de fonction"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a pointer-to-object type"
msgid "%qT is not a pointer-to-object type"
msgstr "« %T » n'est pas un type pointeur-vers-objet"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%s' on pointer to member"
msgid "invalid use of array indexing on pointer to member"
msgstr "utilisation invalide de « %s » sur un pointeur vers un membre"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%s' on pointer to member"
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "utilisation invalide de « %s » sur un pointeur vers un membre"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
#| msgid "invalid use of `%s' on pointer to member"
msgid "invalid use of implicit conversion on pointer to member"
msgstr "utilisation invalide de « %s » sur un pointeur vers un membre"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "indice manquant dans la référence du tableau"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ interdit le souscriptage de non lvalue de tableau"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, fuzzy, gcc-internal-format
#| msgid "subscripting array declared `register'"
msgid "subscripting array declared %<register%>"
msgstr "souscriptage de tableau déclaré « register »"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "la valeur indicée n'est ni un tableau ni un pointeur"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, fuzzy, gcc-internal-format
#| msgid "object missing in use of `%E'"
msgid "object missing in use of %qE"
msgstr "objet manquant dans l'usage de « %E »"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids calling `::main' from within program"
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ interdit l'appel de «::main» depuis l'intérieur du programme"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, fuzzy, gcc-internal-format
#| msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "doit utiliser .* ou ->* pour l'appel de la fonction pointer-to-member dans « %E (...) »"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, fuzzy, gcc-internal-format
#| msgid "`%E' cannot be used as a function"
msgid "%qE cannot be used as a function"
msgstr "« %E » ne peut être utilisé comme une fonction"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s `%+#D'"
msgid "too many arguments to constructor %q#D"
msgstr "trop d'arguments pour %s « %+#D »"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s `%+#D'"
msgid "too few arguments to constructor %q#D"
msgstr "pas assez d'argument pour %s « %+#D »"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to member function %q#D"
msgstr "trop d'arguments pour la fonction"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to member function %q#D"
msgstr "trop peu d'arguments pour la fonction"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function"
msgid "too many arguments to function %q#D"
msgstr "trop d'arguments pour la fonction"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to function %q#D"
msgstr "trop peu d'arguments pour la fonction"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s `%+#D'"
msgid "too many arguments to method %q#D"
msgstr "trop d'arguments pour %s « %+#D »"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s `%+#D'"
msgid "too few arguments to method %q#D"
msgstr "pas assez d'argument pour %s « %+#D »"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "trop d'arguments pour la fonction"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "trop peu d'arguments pour la fonction"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, fuzzy, gcc-internal-format
#| msgid "parameter %P of `%D' has incomplete type `%T'"
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "paramètre %P de « %D » a un type incomplet « %T »"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, fuzzy, gcc-internal-format
#| msgid "parameter %P has incomplete type `%T'"
msgid "parameter %P has incomplete type %qT"
msgstr "paramètre %P a un type incomplet « %T »"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, fuzzy, gcc-internal-format
#| msgid "assuming cast to type `%T' from overloaded function"
msgid "assuming cast to type %qT from overloaded function"
@@ -38683,293 +38749,293 @@ msgstr "transtypage vers le type « %T » est assumé à partir de la fonction surch
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL utilisé en arithmétique"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "left rotate count is negative"
msgstr "compteur de rotation %s est négatif"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "right rotate count is negative"
msgstr "compteur de rotation %s est négatif"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "left rotate count >= width of type"
msgstr "compteur de rotation %s >= largeur du type"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "right rotate count >= width of type"
msgstr "compteur de rotation %s >= largeur du type"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
#| msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behaviour"
msgstr "%Jdéclaration faible de « %D » après une première utilisation des résultats d'un comportement non spécifié"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, fuzzy, gcc-internal-format
#| msgid "the address of `%D', will always evaluate as `true'"
msgid "the address of %qD will never be NULL"
msgstr "l'adresse de « %D » sera toujours évaluée comme étant « true »"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ interdit la comparaison entre un pointeur et un entier"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
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:4346
+#: cp/typeck.c:4359
#, fuzzy, gcc-internal-format
#| msgid "invalid operands of types `%T' and `%T' to binary `%O'"
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "opérandes invalides pour les types « %T » et « %T » en binaire « %O »"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ interdit l'utilisation d'un pointeur de type « void * » dans une soustraction"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ interdit l'utilisation d'un pointeur survers une fonction dans une soustraction"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ interdit l'utilisation d'un pointeur survers une méthode dans une soustraction"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
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:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
#| msgid "taking address of destructor"
msgid "taking address of constructor %qE"
msgstr "prise de l'adresse du destructeur"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
#| msgid "taking address of destructor"
msgid "taking address of destructor %qE"
msgstr "prise de l'adresse du destructeur"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, fuzzy, gcc-internal-format
#| msgid "invalid use of '%E' to form a pointer-to-member-function. Use a qualified-id."
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "utilisation invalide de « %E » pour former pointer-to-member-function. Utiliser un identifateur qualifié"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, fuzzy, gcc-internal-format
#| msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "parenthèses autour de « %E » ne peuvent être utilisées pour former pointer-to-member-function"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say `&%T::%D'"
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ interdit de prendre l'adress d'un membre de fonction non statique non qualifié ou entre parenthèses pour former un pointeur d'un membre de fonction. Utilisers «&%T::%D»"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say `&%T::%D'"
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ interdit de prendre l'adresse d'une borne d'un membre de fontion pour former un membre à la fonction. Disons «&%T::%D»"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "prise de l'adresse du temporaire"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of xvalue (rvalue reference)"
msgstr "prise de l'adresse du temporaire"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids taking address of function `::main'"
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ interdit de prendre l'adresse d'une fonction «::main»"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ interdit de prendre l'adresse du transtypage vers une expression n'etant pas membre gauche"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, fuzzy, gcc-internal-format
#| msgid "cannot create pointer to reference member `%D'"
msgid "cannot create pointer to reference member %qD"
msgstr "ne peut déclarer un pointeur vers le membre de référence « %D »"
# FIXME: I18N
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ interdit de %ser un enum"
# FIXME: I18N
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ interdit de %ser un enum"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type `%T'"
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "ne peut utiliser %s comme pointeur sur un type incomplet « %T »"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type `%T'"
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "ne peut utiliser %s comme pointeur sur un type incomplet « %T »"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type `%T'"
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ interdit %s utilisation d'un pointeur de type « %T »"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type `%T'"
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ interdit %s utilisation d'un pointeur de type « %T »"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "expression invalide comme opérande"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, fuzzy, gcc-internal-format
#| msgid "cannot take the address of `this', which is an rvalue expression"
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "ne peut prendre l'adresse de « ceci », laquelle est une expression rvalue"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, fuzzy, gcc-internal-format
#| msgid "address of register variable `%s' requested"
msgid "address of explicit register variable %qD requested"
msgstr "adresse d'une variable registre « %s » requise"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, fuzzy, gcc-internal-format
#| msgid "address requested for `%D', which is declared `register'"
msgid "address requested for %qD, which is declared %<register%>"
msgstr "adresse requise pour « %D», lequel est déclaré «register »"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in initializer"
msgstr "%s liste d'expressions traitée comme une expression composée"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in mem-initializer"
msgstr "%s liste d'expressions traitée comme une expression composée"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in functional cast"
msgstr "%s liste d'expressions traitée comme une expression composée"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "%s liste d'expressions traitée comme une expression composée"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
#| msgid "%s from type `%T' to type `%T' casts away constness"
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "%S à partir du « %T » vers le type « %T » provoque un transtypage sans constante"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
#| msgid "%s from type `%T' to type `%T' casts away constness"
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "%S à partir du « %T » vers le type « %T » provoque un transtypage sans constante"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "reinterpret_cast de « %T » vers « %T » fait un transtypage écartant la constante (ou volatile)"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type `%T' to type `%T'"
msgid "invalid static_cast from type %qT to type %qT"
msgstr "static_cast invalide du type « %T » au type « %T »"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, fuzzy, gcc-internal-format
#| msgid "converting from `%T' to `%T'"
msgid "converting from %qT to %qT"
msgstr "conversion de « %T » vers « %T »"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, fuzzy, gcc-internal-format
#| msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "reinterpret_cast invalide d'une expression rvalue de type « %T » vers le type « %T »"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, fuzzy, gcc-internal-format
#| msgid "reinterpret_cast from `%T' to `%T' loses precision"
msgid "cast from %qT to %qT loses precision"
msgstr "reinterpret_cast de « %T » vers « %T » génère une perte de précision"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, fuzzy, gcc-internal-format
#| msgid "cast from `%T' to `%T' increases required alignment of target type"
msgid "cast from %qT to %qT increases required alignment of target type"
@@ -38979,253 +39045,253 @@ msgstr "transtypage de « %T » vers « %T » augmente l'alignement requis pour le t
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ interdit le transtypage entre un pointeur de fonction et un pointeur d'objet"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, fuzzy, gcc-internal-format
#| msgid "invalid const_cast from type `%T' to type `%T'"
msgid "invalid cast from type %qT to type %qT"
msgstr "const_cast invalide à partir du type « %T » vers le type « %T »"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, fuzzy, gcc-internal-format
#| msgid "invalid use of const_cast with type `%T', which is not a pointer, reference, nor a pointer-to-data-member type"
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "utilisation invalide de const_cast avec le type « %T », lequel n'est pas un pointeur, une référence, ni un type pointeur-vers-données-membre"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, fuzzy, gcc-internal-format
#| msgid "invalid use of const_cast with type `%T', which is a pointer or reference to a function type"
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "utilisation invalide de const_cast avec le type « %T », lequel est un pointeur ou un référence à un type de fonction"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, fuzzy, gcc-internal-format
#| msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "const_cast invalide de la rvalue du type « %T » vers le type « %T »"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, fuzzy, gcc-internal-format
#| msgid "invalid const_cast from type `%T' to type `%T'"
msgid "invalid const_cast from type %qT to type %qT"
msgstr "const_cast invalide à partir du type « %T » vers le type « %T »"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids casting to an array type `%T'"
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ interdit le transtypage vers un type tableau « %T »"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, fuzzy, gcc-internal-format
#| msgid "invalid cast to function type `%T'"
msgid "invalid cast to function type %qT"
msgstr "transtypage invalide pour un type de fonction « %T »"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, fuzzy, gcc-internal-format
#| msgid " in evaluation of `%Q(%#T, %#T)'"
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " lors de l'évaluation de « %Q(%#T, %#T) »"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "index de tableau non constant dans l'initialisation"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of `%T' to `%T'"
msgid "incompatible types in assignment of %qT to %qT"
msgstr "type incompatible dans l'affectation de « %T » vers « %T »"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
#| msgid "bad array initializer"
msgid "array used as initializer"
msgstr "mauvaise initialisation de tableau"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "invalid array assignment"
msgstr "membre gauche de l'affectation invalide"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " dans la conversion d'un pointeur vers un membre de fonction"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, fuzzy, gcc-internal-format
#| msgid "pointer to member conversion via virtual base `%T'"
msgid "pointer to member conversion via virtual base %qT"
msgstr "conversion de pointeur à membre à l'aide de la base virtuelle « %T »"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " dans la conversion d'un pointeur vers un membre"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to type `%T' from type `%T'"
msgid "invalid conversion to type %qT from type %qT"
msgstr "conversion invalide vers un type « %T » à partir du type « %T »"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "ne peut convertir « %T » à « %T » pour l'argument « %P » vers « %D »"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgid "cannot convert %qT to %qT in default argument"
msgstr "ne peut convertir « %T » à « %T » pour l'argument « %P » vers « %D »"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in argument passing"
msgstr "ne peut convertir « %T » vers « %T » dans %s"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT"
msgstr "ne peut convertir « %T » vers « %T » dans %s"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in initialization"
msgstr "ne peut convertir « %T » vers « %T » dans %s"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in return"
msgstr "ne peut convertir « %T » vers « %T » dans %s"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%T' to `%T' in %s"
msgid "cannot convert %qT to %qT in assignment"
msgstr "ne peut convertir « %T » vers « %T » dans %s"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "Avertir à propos des fonctions qui pourraient être candidates pour les attributs de format"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "parameter might be a candidate for a format attribute"
msgstr "la fonction est peut être candidate pour l'attribut de format de « %s »"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "target of conversion might be a candidate for a format attribute"
msgstr "Avertir à propos des fonctions qui pourraient être candidates pour les attributs de format"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "target of initialization might be a candidate for a format attribute"
msgstr "la fonction est peut être candidate pour l'attribut de format de « %s »"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
#| msgid "function might be possible candidate for `%s' format attribute"
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "la fonction est peut être candidate pour l'attribut de format de « %s »"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
#| msgid "in passing argument %P of `%+D'"
msgid "in passing argument %P of %q+D"
msgstr "dans le passage de l'argument %P de « %+D »"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "retourné la référence vers le temporaire"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "une référence vers quelque chose n'étant pas un membre gauche a été retourné"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, fuzzy, gcc-internal-format
#| msgid "reference to local variable `%D' returned"
msgid "reference to local variable %q+D returned"
msgstr "référence vers une variable locale « %D » retourné"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, fuzzy, gcc-internal-format
#| msgid "address of local variable `%D' returned"
msgid "address of local variable %q+D returned"
msgstr "adresse d'une variable locale « %D » retournée"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "retourné une valeur du destructeur"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "ne peut retourner d'un handler d'une fonction try-block d'un constructeur"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "retourné une valeur d'un constructeur"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, fuzzy, gcc-internal-format
#| msgid "return-statement with no value, in function returning '%T'"
msgid "return-statement with no value, in function returning %qT"
msgstr "déclaration à retourner sans valeur dans une fonction retournant « %T »"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "déclaration éa retourner avec une valeur dans une fonction retournant un « void »"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, fuzzy, gcc-internal-format
#| msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "« operator new» ne doit pas retourner NULL à moins qu'il ne soit déclaré «throw() » (ou -fcheck-new est utilisée)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -39821,7 +39887,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -42071,27 +42137,27 @@ msgstr ""
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -42308,42 +42374,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr ""
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -42359,15 +42425,15 @@ msgstr ""
msgid "can't open input file: %s"
msgstr "ne peut ouvrir le fichier de sortie « %s »"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "creating array of `%T'"
msgid "Creating array temporary at %L"
msgstr "création du tableau « %T »"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "No calls in function %s\n"
msgid "Removing call to function '%s' at %L"
@@ -42482,12 +42548,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -44388,135 +44454,135 @@ msgstr "%s: ERREUR d'écriture dans le fichier de sortie « %s ».\n"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "can't open %s for writing: %m"
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "ne peut ouvrir %s en écriture: %m"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: error writing file `%s': %s\n"
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: erreur d'écriture au fichier « %s »: %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file `%s': %s\n"
msgid "Can't delete module file '%s': %s"
msgstr "%s: ne peut détruire le fichier « %s »: %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: warning: can't rename file `%s' to `%s': %s\n"
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: AVERTISSEMENT: ne peut renommer le fichier « %s » à « %s »: %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete aux info file `%s': %s\n"
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: ne peut détruire le fichier auxiliaire d'infos « %s »: %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Symbols have a leading underscore"
msgid "Symbol '%s' already declared"
msgstr "Les symboles sont précédées d'un caractère de soulignement "
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't open file `%s' for reading: %s\n"
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "%s: ne peut ouvrir le fichier « %s » en lecture: %s\n"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -44602,7 +44668,7 @@ msgstr ""
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -45971,7 +46037,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Label %A already defined at %1 when redefined at %0"
msgid "Label %d referenced at %L is never defined"
@@ -46127,7 +46193,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -46523,189 +46589,189 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s parameter %d must be a location"
msgid "%s at %L must be a scalar"
msgstr "%s paramètre %d doit être une localisation"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "DO FOR start expression is a numbered SET"
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "expression de départ de DO FOR est un SET énuméré"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Invalid I specifier in FORMAT statement at %0"
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "spécificateur I invalide dans la déclaration de FORMAT à %0"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Invalid I specifier in FORMAT statement at %0"
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "spécificateur I invalide dans la déclaration de FORMAT à %0"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Invalid I specifier in FORMAT statement at %0"
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "spécificateur I invalide dans la déclaration de FORMAT à %0"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Invalid I specifier in FORMAT statement at %0"
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "spécificateur I invalide dans la déclaration de FORMAT à %0"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Invalid I specifier in FORMAT statement at %0"
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "spécificateur I invalide dans la déclaration de FORMAT à %0"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -46714,180 +46780,180 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "expression statement has incomplete type"
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "la déclaration de l'expression a un type incomplet"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr ""
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Range specification at %0 invalid"
msgid "Range specification at %L can never be matched"
msgstr "spécification d'étendue à %0 invalide"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "argument %d must be referable"
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "argument %d doit pouvoir être référencé"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "first argument to `%s' must be a mode"
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "premier argument de « %s » doit être un mode"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement at %0 invalid in context established by statement at %1"
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "déclaration à %0 invalide dans le contexte établi par la déclaration à %1"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -46895,965 +46961,965 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement at %0 invalid in context established by statement at %1"
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "déclaration à %0 invalide dans le contexte établi par la déclaration à %1"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unsupported VXT statement at %0"
msgid "Unsupported statement inside WHERE at %L"
msgstr "déclaration VXT non supporté à %0"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Integer at %0 too large"
msgid "String length at %L is too large"
msgstr "entier à %0 est trop grand"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%Jfinal field '%D' may not have been initialized"
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "%Jchamp final « %D » peut ne pas avoir été initialisé"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%Jfinal field '%D' may not have been initialized"
msgid "External '%s' at %L cannot have an initializer"
msgstr "%Jchamp final « %D » peut ne pas avoir été initialisé"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%s' has both `extern' and initializer"
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "« %s » a les deux « extern » et initialisateur"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%Jfinal field '%D' may not have been initialized"
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "%Jchamp final « %D » peut ne pas avoir été initialisé"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%Jfinal field '%D' may not have been initialized"
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "%Jchamp final « %D » peut ne pas avoir été initialisé"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%Jfinal field '%D' may not have been initialized"
msgid "Function '%s' at %L cannot have an initializer"
msgstr "%Jchamp final « %D » peut ne pas avoir été initialisé"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%Jfinal field '%D' may not have been initialized"
msgid "External object '%s' at %L may not have an initializer"
msgstr "%Jchamp final « %D » peut ne pas avoir été initialisé"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%D' must take exactly one argument"
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "« %D » doit prendre exactement un argument"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "trampolines not yet implemented"
msgid "Finalization at %L is not yet implemented"
msgstr "trampolines ne sont pas encore implantées"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr ""
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr ""
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr ""
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "incompatible types in %s"
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "type incompatibles dans %s"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr ""
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr ""
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr ""
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr ""
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "label `%D' defined but not used"
msgid "Label %d at %L defined but not used"
msgstr "étiquette « %D » définie mais non utilisée"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "label `%D' defined but not used"
msgid "Label %d at %L defined but cannot be used"
msgstr "étiquette « %D » définie mais non utilisée"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -48488,17 +48554,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -48750,7 +48816,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr ""
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -49071,7 +49137,7 @@ msgstr "ne peut déterminer le nom de la cible pour le tracking de dépendance"
msgid "internal error - invalid Utf8 name"
msgstr "erreur interne - nom Utf8 invalide"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "rebut à la fin de la chaîne de signature"
@@ -55853,9 +55919,6 @@ msgstr "création du sélection pour une méthode inexistente %s"
#~ msgid "usage: %s [switches] input output"
#~ msgstr "usage: %s [options] entrée sortie"
-#~ msgid "-traditional and -ansi are mutually exclusive"
-#~ msgstr "-traditional et -ansi sont mutuellement exclusives"
-
#~ msgid "filename missing after -i option"
#~ msgstr "nom de fichier manquant après l'option -i"
diff --git a/gcc/po/hr.po b/gcc/po/hr.po
new file mode 100644
index 00000000000..2841a49f4cf
--- /dev/null
+++ b/gcc/po/hr.po
@@ -0,0 +1,45015 @@
+# Translation of gcc to Croatian.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gcc package.
+#
+# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: gcc 4.7.1\n"
+"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
+"PO-Revision-Date: 2012-07-05 15:49+0200\n"
+"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
+"Language-Team: Croatian <lokalizacija@linux.hr>\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
+#: cp/error.c:656 cp/error.c:938
+msgid "<anonymous>"
+msgstr ""
+
+#: c-objc-common.c:173
+msgid "({anonymous})"
+msgstr ""
+
+#: c-parser.c:946 cp/parser.c:22268
+#, gcc-internal-format
+msgid "expected end of line"
+msgstr "oÄekujem kraj retka"
+
+#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
+#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
+#, gcc-internal-format
+msgid "expected %<;%>"
+msgstr "oÄekujem %<;%>"
+
+#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
+#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
+#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
+#, gcc-internal-format
+msgid "expected %<(%>"
+msgstr "oÄekujem %<(%>"
+
+#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
+#: cp/parser.c:21789 cp/parser.c:22232
+#, gcc-internal-format
+msgid "expected %<,%>"
+msgstr "oÄekujem %<,%>"
+
+#: c-parser.c:1866 c-parser.c:2453 c-parser.c:2765 c-parser.c:2804
+#: c-parser.c:3012 c-parser.c:3176 c-parser.c:3238 c-parser.c:3290
+#: c-parser.c:3414 c-parser.c:3599 c-parser.c:3610 c-parser.c:3619
+#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
+#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
+#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
+#, gcc-internal-format
+msgid "expected %<)%>"
+msgstr "oÄekujem %<)%>"
+
+#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
+#, gcc-internal-format
+msgid "expected %<]%>"
+msgstr "oÄekujem %<]%>"
+
+#: c-parser.c:3271
+msgid "expected %<;%>, %<,%> or %<)%>"
+msgstr "oÄekujem %<;%>, %<,%> ili %<)%>"
+
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
+#, gcc-internal-format
+msgid "expected %<}%>"
+msgstr "oÄekujem %<}%>"
+
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
+#, gcc-internal-format
+msgid "expected %<{%>"
+msgstr "oÄekujem %<{%>"
+
+#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
+#, gcc-internal-format
+msgid "expected %<:%>"
+msgstr "oÄekujem %<:%>"
+
+#: c-parser.c:4824 cp/parser.c:22150
+#, gcc-internal-format
+msgid "expected %<while%>"
+msgstr "oÄekujem %<while%>"
+
+#: c-parser.c:6279
+msgid "expected %<.%>"
+msgstr "oÄekujem %<.%>"
+
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
+#, gcc-internal-format
+msgid "expected %<@end%>"
+msgstr "oÄekujem %<@end%>"
+
+#: c-parser.c:7850 cp/parser.c:22241
+#, gcc-internal-format
+msgid "expected %<>%>"
+msgstr "oÄekujem %<>%>"
+
+#: c-parser.c:9246 cp/parser.c:22265
+#, gcc-internal-format
+msgid "expected %<,%> or %<)%>"
+msgstr "oÄekujem %<,%> ili %<)%>"
+
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
+#, gcc-internal-format
+msgid "expected %<=%>"
+msgstr "oÄekujem %<=%>"
+
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
+#, gcc-internal-format
+msgid "expected %<#pragma omp section%> or %<}%>"
+msgstr ""
+
+#: c-parser.c:10616 cp/parser.c:22229
+#, gcc-internal-format
+msgid "expected %<[%>"
+msgstr "oÄekujem %<[%>"
+
+#: c-typeck.c:6604
+msgid "(anonymous)"
+msgstr ""
+
+#: cfgrtl.c:2052
+msgid "flow control insn inside a basic block"
+msgstr ""
+
+#: cfgrtl.c:2180
+msgid "wrong insn in the fallthru edge"
+msgstr ""
+
+#: cfgrtl.c:2234
+msgid "insn outside basic block"
+msgstr "insn izvan temeljnog bloka"
+
+#: cfgrtl.c:2241
+msgid "return not followed by barrier"
+msgstr ""
+
+#: collect2.c:1691
+#, c-format
+msgid "collect2 version %s\n"
+msgstr "collect2 inaÄica %s\n"
+
+#: collect2.c:1798
+#, c-format
+msgid "%d constructor found\n"
+msgid_plural "%d constructors found\n"
+msgstr[0] "%d konstruktor pronađen\n"
+msgstr[1] "%d konstruktora pronađena\n"
+msgstr[2] "%d konstruktora pronađeno\n"
+
+#: collect2.c:1802
+#, c-format
+msgid "%d destructor found\n"
+msgid_plural "%d destructors found\n"
+msgstr[0] "%d destruktor pronađen\n"
+msgstr[1] "%d destruktora pronađena\n"
+msgstr[2] "%d destruktora pronađeno\n"
+
+#: collect2.c:1806
+#, c-format
+msgid "%d frame table found\n"
+msgid_plural "%d frame tables found\n"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: collect2.c:2062
+#, c-format
+msgid "[cannot find %s]"
+msgstr "[ne mogu naći %s]"
+
+#: collect2.c:2118
+#, c-format
+msgid "[Leaving %s]\n"
+msgstr "[Napuštam %s]\n"
+
+#: collect2.c:2346
+#, c-format
+msgid ""
+"\n"
+"write_c_file - output name is %s, prefix is %s\n"
+msgstr ""
+
+#: collect2.c:2837
+#, c-format
+msgid ""
+"\n"
+"ldd output with constructors/destructors.\n"
+msgstr ""
+"\n"
+"izlaz ldd-a s konstruktorima/destruktorima.\n"
+
+#: cprop.c:1761
+msgid "const/copy propagation disabled"
+msgstr ""
+
+#: diagnostic.c:136
+#, c-format
+msgid "%s: all warnings being treated as errors"
+msgstr ""
+
+#: diagnostic.c:141
+#, c-format
+msgid "%s: some warnings being treated as errors"
+msgstr ""
+
+#: diagnostic.c:219
+#, c-format
+msgid "compilation terminated due to -Wfatal-errors.\n"
+msgstr "kompajliranje prekinuto zbog -Wfatal-errors.\n"
+
+#: diagnostic.c:229
+#, c-format
+msgid "compilation terminated due to -fmax-errors=%u.\n"
+msgstr "kompajliranje prekinuto zbog -fmax-errors=%u.\n"
+
+#: diagnostic.c:240
+#, c-format
+msgid ""
+"Please submit a full bug report,\n"
+"with preprocessed source if appropriate.\n"
+"See %s for instructions.\n"
+msgstr ""
+"Molim pošaljite prijavu greške,\n"
+"s pretprocesiranim izvornim kodom\n"
+"ako je moguće.\n"
+"Pogledajte %s za upute.\n"
+
+#: diagnostic.c:249
+#, c-format
+msgid "compilation terminated.\n"
+msgstr "kompajliranje prekinuto.\n"
+
+#: diagnostic.c:514
+#, c-format
+msgid "%s:%d: confused by earlier errors, bailing out\n"
+msgstr "%s:%d: zbunjen prethodnim greškama, odustajem\n"
+
+#: diagnostic.c:880
+#, c-format
+msgid "Internal compiler error: Error reporting routines re-entered.\n"
+msgstr "Interna greška kompajlera: Ponovni ulazak u potprograme za prijavu grešaka.\n"
+
+#: final.c:1160
+msgid "negative insn length"
+msgstr "negativna insn duljina"
+
+#: final.c:2716
+msgid "could not split insn"
+msgstr "ne mogu razdvojiti insn"
+
+#: final.c:3124
+msgid "invalid 'asm': "
+msgstr "neispravni „asmâ€: "
+
+#: final.c:3307
+#, c-format
+msgid "nested assembly dialect alternatives"
+msgstr ""
+
+#: final.c:3324 final.c:3336
+#, c-format
+msgid "unterminated assembly dialect alternative"
+msgstr ""
+
+#: final.c:3383
+#, c-format
+msgid "operand number missing after %%-letter"
+msgstr ""
+
+#: final.c:3386 final.c:3427
+#, c-format
+msgid "operand number out of range"
+msgstr "broj operanada je izvan granica"
+
+#: final.c:3444
+#, c-format
+msgid "invalid %%-code"
+msgstr "neispravni %%-kod"
+
+#: final.c:3474
+#, c-format
+msgid "'%%l' operand isn't a label"
+msgstr "operand „%%l†nije oznaka"
+
+#. We can't handle floating point constants;
+#. PRINT_OPERAND must handle them.
+#. We can't handle floating point constants;
+#. TARGET_PRINT_OPERAND must handle them.
+#. We can't handle floating point constants;
+#. PRINT_OPERAND must handle them.
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
+#, c-format
+msgid "floating constant misused"
+msgstr ""
+
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
+#, c-format
+msgid "invalid expression as operand"
+msgstr "neispravni izraz kao operand"
+
+#: gcc.c:1329
+#, c-format
+msgid "Using built-in specs.\n"
+msgstr ""
+
+#: gcc.c:1526
+#, c-format
+msgid ""
+"Setting spec %s to '%s'\n"
+"\n"
+msgstr ""
+
+#: gcc.c:1636
+#, c-format
+msgid "Reading specs from %s\n"
+msgstr ""
+
+#: gcc.c:1761
+#, c-format
+msgid "could not find specs file %s\n"
+msgstr ""
+
+#: gcc.c:1830
+#, c-format
+msgid "rename spec %s to %s\n"
+msgstr ""
+
+#: gcc.c:1832
+#, c-format
+msgid ""
+"spec is '%s'\n"
+"\n"
+msgstr ""
+
+#: gcc.c:2249
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: gcc.c:2613
+#, c-format
+msgid ""
+"\n"
+"Go ahead? (y or n) "
+msgstr ""
+"\n"
+"Nastaviti? (y ili n) "
+
+#: gcc.c:2753
+#, c-format
+msgid "# %s %.2f %.2f\n"
+msgstr "# %s %.2f %.2f\n"
+
+#: gcc.c:2955
+#, c-format
+msgid "Usage: %s [options] file...\n"
+msgstr "Uporaba: %s [opcije] datoteka...\n"
+
+#: gcc.c:2956
+msgid "Options:\n"
+msgstr "Opcije:\n"
+
+#: gcc.c:2958
+msgid " -pass-exit-codes Exit with highest error code from a phase\n"
+msgstr ""
+
+#: gcc.c:2959
+msgid " --help Display this information\n"
+msgstr " --help Prikaži ove informacije\n"
+
+#: gcc.c:2960
+msgid " --target-help Display target specific command line options\n"
+msgstr ""
+
+#: gcc.c:2961
+msgid " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n"
+msgstr ""
+
+#: gcc.c:2962
+msgid " Display specific types of command line options\n"
+msgstr ""
+
+#: gcc.c:2964
+msgid " (Use '-v --help' to display command line options of sub-processes)\n"
+msgstr ""
+
+#: gcc.c:2965
+msgid " --version Display compiler version information\n"
+msgstr " --version Prikaži informacije o inaÄici kompajlera\n"
+
+#: gcc.c:2966
+msgid " -dumpspecs Display all of the built in spec strings\n"
+msgstr ""
+
+#: gcc.c:2967
+msgid " -dumpversion Display the version of the compiler\n"
+msgstr " -dumpversion Prikaži inaÄicu kompajlera\n"
+
+#: gcc.c:2968
+msgid " -dumpmachine Display the compiler's target processor\n"
+msgstr ""
+
+#: gcc.c:2969
+msgid " -print-search-dirs Display the directories in the compiler's search path\n"
+msgstr ""
+
+#: gcc.c:2970
+msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n"
+msgstr ""
+
+#: gcc.c:2971
+msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
+msgstr ""
+
+#: gcc.c:2972
+msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>\n"
+msgstr ""
+
+#: gcc.c:2973
+msgid " -print-multi-directory Display the root directory for versions of libgcc\n"
+msgstr ""
+
+#: gcc.c:2974
+msgid ""
+" -print-multi-lib Display the mapping between command line options and\n"
+" multiple library search directories\n"
+msgstr ""
+
+#: gcc.c:2977
+msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
+msgstr ""
+
+#: gcc.c:2978
+msgid " -print-sysroot Display the target libraries directory\n"
+msgstr ""
+
+#: gcc.c:2979
+msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n"
+msgstr ""
+
+#: gcc.c:2980
+msgid " -Wa,<options> Pass comma-separated <options> on to the assembler\n"
+msgstr ""
+
+#: gcc.c:2981
+msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor\n"
+msgstr ""
+
+#: gcc.c:2982
+msgid " -Wl,<options> Pass comma-separated <options> on to the linker\n"
+msgstr ""
+
+#: gcc.c:2983
+msgid " -Xassembler <arg> Pass <arg> on to the assembler\n"
+msgstr ""
+
+#: gcc.c:2984
+msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"
+msgstr ""
+
+#: gcc.c:2985
+msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
+msgstr ""
+
+#: gcc.c:2986
+msgid " -save-temps Do not delete intermediate files\n"
+msgstr ""
+
+#: gcc.c:2987
+msgid " -save-temps=<arg> Do not delete intermediate files\n"
+msgstr ""
+
+#: gcc.c:2988
+msgid ""
+" -no-canonical-prefixes Do not canonicalize paths when building relative\n"
+" prefixes to other gcc components\n"
+msgstr ""
+
+#: gcc.c:2991
+msgid " -pipe Use pipes rather than intermediate files\n"
+msgstr " -pipe Koristi cjevovode umjesto posrednih datoteka\n"
+
+#: gcc.c:2992
+msgid " -time Time the execution of each subprocess\n"
+msgstr " -time Vrijeme izvršavanja svakog potprocesa\n"
+
+#: gcc.c:2993
+msgid " -specs=<file> Override built-in specs with the contents of <file>\n"
+msgstr ""
+
+#: gcc.c:2994
+msgid " -std=<standard> Assume that the input sources are for <standard>\n"
+msgstr ""
+
+#: gcc.c:2995
+msgid ""
+" --sysroot=<directory> Use <directory> as the root directory for headers\n"
+" and libraries\n"
+msgstr ""
+" --sysroot=<direktorij> Koristi <direktorij> kao korijenski direktorij\n"
+" za zaglavlja i biblioteke\n"
+
+#: gcc.c:2998
+msgid " -B <directory> Add <directory> to the compiler's search paths\n"
+msgstr ""
+
+#: gcc.c:2999
+msgid " -v Display the programs invoked by the compiler\n"
+msgstr " -v Prikaži programe koje poziva kompajler\n"
+
+#: gcc.c:3000
+msgid " -### Like -v but options quoted and commands not executed\n"
+msgstr ""
+" -### Kao -v ali prikaži opcije pod navodnicima i\n"
+" naredbe koje se ne izvršavaju\n"
+
+#: gcc.c:3001
+msgid " -E Preprocess only; do not compile, assemble or link\n"
+msgstr ""
+
+#: gcc.c:3002
+msgid " -S Compile only; do not assemble or link\n"
+msgstr ""
+
+#: gcc.c:3003
+msgid " -c Compile and assemble, but do not link\n"
+msgstr ""
+
+#: gcc.c:3004
+msgid " -o <file> Place the output into <file>\n"
+msgstr " -o <datoteka> Spremi izlaz u <datoteka>\n"
+
+#: gcc.c:3005
+msgid " -pie Create a position independent executable\n"
+msgstr ""
+
+#: gcc.c:3006
+msgid " -shared Create a shared library\n"
+msgstr " -shared Napravi dijeljenu biblioteku\n"
+
+#: gcc.c:3007
+msgid ""
+" -x <language> Specify the language of the following input files\n"
+" Permissible languages include: c c++ assembler none\n"
+" 'none' means revert to the default behavior of\n"
+" guessing the language based on the file's extension\n"
+msgstr ""
+
+#: gcc.c:3014
+#, c-format
+msgid ""
+"\n"
+"Options starting with -g, -f, -m, -O, -W, or --param are automatically\n"
+" passed on to the various sub-processes invoked by %s. In order to pass\n"
+" other options on to these processes the -W<letter> options must be used.\n"
+msgstr ""
+
+#: gcc.c:5239
+#, c-format
+msgid "Processing spec (%s), which is '%s'\n"
+msgstr ""
+
+#: gcc.c:6497
+#, c-format
+msgid "install: %s%s\n"
+msgstr ""
+
+#: gcc.c:6500
+#, c-format
+msgid "programs: %s\n"
+msgstr ""
+
+#: gcc.c:6502
+#, c-format
+msgid "libraries: %s\n"
+msgstr "biblioteke: %s\n"
+
+#: gcc.c:6577
+#, c-format
+msgid ""
+"\n"
+"For bug reporting instructions, please see:\n"
+msgstr ""
+"\n"
+"Za upute o prijavljivanju grešaka, molim pogledajte:\n"
+
+#: gcc.c:6593
+#, c-format
+msgid "%s %s%s\n"
+msgstr "%s %s%s\n"
+
+#: gcc.c:6596 gcov.c:488 fortran/gfortranspec.c:305 java/jcf-dump.c:1165
+msgid "(C)"
+msgstr "(C)"
+
+#: gcc.c:6597 java/jcf-dump.c:1166
+#, c-format
+msgid ""
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+"\n"
+msgstr ""
+"Ovo je slobodan softver; pogledajte kod za upute o kopiranju. NEMA\n"
+"jamstava; Äak ni za TRGOVINSKU PRIKLADNOST ili ODGOVARANJE ODREÄENOJ SVRSI.\n"
+"\n"
+
+#: gcc.c:6614
+#, c-format
+msgid "Target: %s\n"
+msgstr ""
+
+#: gcc.c:6615
+#, c-format
+msgid "Configured with: %s\n"
+msgstr ""
+
+#: gcc.c:6629
+#, c-format
+msgid "Thread model: %s\n"
+msgstr ""
+
+#: gcc.c:6640
+#, c-format
+msgid "gcc version %s %s\n"
+msgstr "gcc inaÄica %s %s\n"
+
+#: gcc.c:6643
+#, c-format
+msgid "gcc driver version %s %sexecuting gcc version %s\n"
+msgstr ""
+
+#: gcc.c:6897
+#, c-format
+msgid ""
+"\n"
+"Linker options\n"
+"==============\n"
+"\n"
+msgstr ""
+
+#: gcc.c:6898
+#, c-format
+msgid ""
+"Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n"
+"\n"
+msgstr ""
+
+#: gcc.c:8090
+#, c-format
+msgid ""
+"Assembler options\n"
+"=================\n"
+"\n"
+msgstr ""
+
+#: gcc.c:8091
+#, c-format
+msgid ""
+"Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n"
+"\n"
+msgstr ""
+
+#: gcov.c:458
+#, c-format
+msgid ""
+"Usage: gcov [OPTION]... SOURCE|OBJ...\n"
+"\n"
+msgstr ""
+"Uporaba: gcov [OPCIJA]... IZVOR|OBJ...\n"
+"\n"
+
+#: gcov.c:459
+#, c-format
+msgid ""
+"Print code coverage information.\n"
+"\n"
+msgstr ""
+
+#: gcov.c:460
+#, c-format
+msgid " -h, --help Print this help, then exit\n"
+msgstr " -h, --help Ispiši ovu pomoć, zatim izađi\n"
+
+#: gcov.c:461
+#, c-format
+msgid " -v, --version Print version number, then exit\n"
+msgstr " -v, --version IspiÅ¡i broj inaÄice, zatim izaÄ‘i\n"
+
+#: gcov.c:462
+#, c-format
+msgid " -a, --all-blocks Show information for every basic block\n"
+msgstr " -a, --all-blocks Prikaži informacije za svaki temeljni blok\n"
+
+#: gcov.c:463
+#, c-format
+msgid " -b, --branch-probabilities Include branch probabilities in output\n"
+msgstr ""
+
+#: gcov.c:464
+#, c-format
+msgid ""
+" -c, --branch-counts Given counts of branches taken\n"
+" rather than percentages\n"
+msgstr ""
+
+#: gcov.c:466
+#, c-format
+msgid " -n, --no-output Do not create an output file\n"
+msgstr " -n, --no-output Nemoj raditi izlazne datoteke\n"
+
+#: gcov.c:467
+#, c-format
+msgid ""
+" -l, --long-file-names Use long output file names for included\n"
+" source files\n"
+msgstr ""
+
+#: gcov.c:469
+#, c-format
+msgid " -f, --function-summaries Output summaries for each function\n"
+msgstr " -f, --function-summaries Ispiši sažetke svake funkcije\n"
+
+#: gcov.c:470
+#, c-format
+msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n"
+msgstr ""
+
+#: gcov.c:471
+#, c-format
+msgid " -s, --source-prefix DIR Source prefix to elide\n"
+msgstr ""
+
+#: gcov.c:472
+#, c-format
+msgid " -r, --relative-only Only show data for relative sources\n"
+msgstr ""
+
+#: gcov.c:473
+#, c-format
+msgid " -p, --preserve-paths Preserve all pathname components\n"
+msgstr ""
+
+#: gcov.c:474
+#, c-format
+msgid " -u, --unconditional-branches Show unconditional branch counts too\n"
+msgstr ""
+
+#: gcov.c:475
+#, c-format
+msgid " -d, --display-progress Display progress information\n"
+msgstr " -d, --display-progress Prikaži podatke o napredovanju\n"
+
+#: gcov.c:476
+#, c-format
+msgid ""
+"\n"
+"For bug reporting instructions, please see:\n"
+"%s.\n"
+msgstr ""
+"\n"
+"Za upute o prijavljivanju grešaka, molim pogledajte:\n"
+"%s.\n"
+
+#: gcov.c:486
+#, c-format
+msgid "gcov %s%s\n"
+msgstr "gcov %s%s\n"
+
+#: gcov.c:490
+#, c-format
+msgid ""
+"This is free software; see the source for copying conditions.\n"
+"There is NO warranty; not even for MERCHANTABILITY or \n"
+"FITNESS FOR A PARTICULAR PURPOSE.\n"
+"\n"
+msgstr ""
+"Ovo je slobodan softver; pogledajte kod za upute o kopiranju.\n"
+"NEMA jamstava; Äak ni za TRGOVINSKU PRIKLADNOST ili\n"
+"ODGOVARANJE ODREÄENOJ SVRSI.\n"
+"\n"
+
+#: gcov.c:675 gcov.c:738
+#, c-format
+msgid "\n"
+msgstr "\n"
+
+#: gcov.c:720
+#, c-format
+msgid "Creating '%s'\n"
+msgstr "Stvaram „%sâ€\n"
+
+#: gcov.c:723
+#, c-format
+msgid "Error writing output file '%s'\n"
+msgstr ""
+
+#: gcov.c:728
+#, c-format
+msgid "Could not open output file '%s'\n"
+msgstr "Ne mogu otvoriti izlaznu datoteku „%sâ€\n"
+
+#: gcov.c:734
+#, c-format
+msgid "Removing '%s'\n"
+msgstr "Uklanjam „%sâ€\n"
+
+#: gcov.c:976
+#, c-format
+msgid "%s:source file is newer than graph file '%s'\n"
+msgstr ""
+
+#: gcov.c:981
+#, c-format
+msgid "(the message is only displayed one per source file)\n"
+msgstr "(ova poruka se prikazuje samo jednom za datoteku koda)\n"
+
+#: gcov.c:1006
+#, c-format
+msgid "%s:cannot open graph file\n"
+msgstr ""
+
+#: gcov.c:1012
+#, c-format
+msgid "%s:not a gcov graph file\n"
+msgstr ""
+
+#: gcov.c:1025
+#, c-format
+msgid "%s:version '%.4s', prefer '%.4s'\n"
+msgstr ""
+
+#: gcov.c:1065
+#, c-format
+msgid "%s:already seen blocks for '%s'\n"
+msgstr ""
+
+#: gcov.c:1196
+#, c-format
+msgid "%s:corrupted\n"
+msgstr ""
+
+#: gcov.c:1203
+#, c-format
+msgid "%s:no functions found\n"
+msgstr "%s:nisu pronađene funkcije\n"
+
+#: gcov.c:1222
+#, c-format
+msgid "%s:cannot open data file, assuming not executed\n"
+msgstr ""
+
+#: gcov.c:1229
+#, c-format
+msgid "%s:not a gcov data file\n"
+msgstr "%s:nije gcov podatkovna datoteka\n"
+
+#: gcov.c:1242
+#, c-format
+msgid "%s:version '%.4s', prefer version '%.4s'\n"
+msgstr ""
+
+#: gcov.c:1248
+#, c-format
+msgid "%s:stamp mismatch with graph file\n"
+msgstr ""
+
+#: gcov.c:1283
+#, c-format
+msgid "%s:unknown function '%u'\n"
+msgstr "%s:nepoznata funkcija „%uâ€\n"
+
+#: gcov.c:1297
+#, c-format
+msgid "%s:profile mismatch for '%s'\n"
+msgstr ""
+
+#: gcov.c:1316
+#, c-format
+msgid "%s:overflowed\n"
+msgstr "%s:preljev\n"
+
+#: gcov.c:1362
+#, c-format
+msgid "%s:'%s' lacks entry and/or exit blocks\n"
+msgstr "%s:„%s†nema ulazni ili izlazni blok\n"
+
+#: gcov.c:1367
+#, c-format
+msgid "%s:'%s' has arcs to entry block\n"
+msgstr ""
+
+#: gcov.c:1375
+#, c-format
+msgid "%s:'%s' has arcs from exit block\n"
+msgstr ""
+
+#: gcov.c:1583
+#, c-format
+msgid "%s:graph is unsolvable for '%s'\n"
+msgstr ""
+
+#: gcov.c:1691
+#, c-format
+msgid "Lines executed:%s of %d\n"
+msgstr "Izvršeno redaka:%s od %d\n"
+
+#: gcov.c:1694
+#, c-format
+msgid "No executable lines\n"
+msgstr ""
+
+#: gcov.c:1702
+#, c-format
+msgid "%s '%s'\n"
+msgstr "%s '%s'\n"
+
+#: gcov.c:1709
+#, c-format
+msgid "Branches executed:%s of %d\n"
+msgstr ""
+
+#: gcov.c:1713
+#, c-format
+msgid "Taken at least once:%s of %d\n"
+msgstr ""
+
+#: gcov.c:1719
+#, c-format
+msgid "No branches\n"
+msgstr ""
+
+#: gcov.c:1721
+#, c-format
+msgid "Calls executed:%s of %d\n"
+msgstr "Izvršeno poziva:%s od %d\n"
+
+#: gcov.c:1725
+#, c-format
+msgid "No calls\n"
+msgstr "Nema poziva\n"
+
+#: gcov.c:1973
+#, c-format
+msgid "%s:no lines for '%s'\n"
+msgstr "%s:nema redaka za „%sâ€\n"
+
+#: gcov.c:2167
+#, c-format
+msgid "call %2d returned %s\n"
+msgstr ""
+
+#: gcov.c:2172
+#, c-format
+msgid "call %2d never executed\n"
+msgstr ""
+
+#: gcov.c:2177
+#, c-format
+msgid "branch %2d taken %s%s\n"
+msgstr ""
+
+#: gcov.c:2182
+#, c-format
+msgid "branch %2d never executed\n"
+msgstr ""
+
+#: gcov.c:2187
+#, c-format
+msgid "unconditional %2d taken %s\n"
+msgstr ""
+
+#: gcov.c:2190
+#, c-format
+msgid "unconditional %2d never executed\n"
+msgstr ""
+
+#: gcov.c:2262
+#, c-format
+msgid "Cannot open source file %s\n"
+msgstr "Ne mogu otvoriti datoteku koda %s\n"
+
+#: gcse.c:2626
+msgid "PRE disabled"
+msgstr "PRE onemogućen"
+
+#: gcse.c:3175
+msgid "GCSE disabled"
+msgstr "GCSE onemogućen"
+
+#: gengtype-state.c:154
+#, c-format
+msgid "%s:%d:%d: Invalid state file; %s"
+msgstr ""
+
+#: gengtype-state.c:158
+#, c-format
+msgid "%s:%d: Invalid state file; %s"
+msgstr ""
+
+#. Fatal printf-like message while reading state. This can't be a
+#. function, because there is no way to pass a va_arg to a variant of
+#. fatal.
+#: gengtype-state.c:169
+#, c-format
+msgid "%s:%d:%d: Invalid state file; "
+msgstr ""
+
+#: gengtype-state.c:174
+#, c-format
+msgid "%s:%d: Invalid state file; "
+msgstr ""
+
+#: gengtype-state.c:699
+#, c-format
+msgid "Option tag unknown"
+msgstr "Oznaka opcije nepoznata"
+
+#: gengtype-state.c:754
+#, c-format
+msgid "Unexpected type in write_state_scalar_type"
+msgstr "NeoÄekivana vrsta u write_state_scalar_type"
+
+#: gengtype-state.c:769
+#, c-format
+msgid "Unexpected type in write_state_string_type"
+msgstr "NeoÄekivana vrsta u write_state_string_type"
+
+#: gengtype-state.c:973
+#, c-format
+msgid "Unexpected type..."
+msgstr "NeoÄekivana vrsta..."
+
+#: gengtype-state.c:1153
+#, c-format
+msgid "failed to write state trailer [%s]"
+msgstr ""
+
+#: gengtype-state.c:1179
+#, c-format
+msgid "Failed to open file %s for writing state: %s"
+msgstr "Nisam uspio otvoriti datoteku %s za pisanje stanja: %s"
+
+#: gengtype-state.c:1209
+#, c-format
+msgid "output error when writing state file %s [%s]"
+msgstr "izlazna greška pri pisanju datoteke stanja %s [%s]"
+
+#: gengtype-state.c:1212
+#, c-format
+msgid "failed to close state file %s [%s]"
+msgstr "nisam uspio zatvoriti datoteku stanja %s [%s]"
+
+#: gengtype-state.c:1215
+#, c-format
+msgid "failed to rename %s to state file %s [%s]"
+msgstr ""
+
+#: gengtype-state.c:2406
+#, c-format
+msgid "Failed to open state file %s for reading [%s]"
+msgstr ""
+
+#: gengtype-state.c:2444
+#, c-format
+msgid "failed to close read state file %s [%s]"
+msgstr ""
+
+#: incpath.c:76
+#, c-format
+msgid "ignoring duplicate directory \"%s\"\n"
+msgstr "zanemarujem direktorij duplikat „%sâ€\n"
+
+#: incpath.c:79
+#, c-format
+msgid " as it is a non-system directory that duplicates a system directory\n"
+msgstr " jer nije direktorij sustava, a duplikat je direktorija sustava\n"
+
+#: incpath.c:83
+#, c-format
+msgid "ignoring nonexistent directory \"%s\"\n"
+msgstr "zanemarujem nepostojeći direktorij „%sâ€\n"
+
+#: incpath.c:353
+#, c-format
+msgid "#include \"...\" search starts here:\n"
+msgstr "#include \"...\" pretraga zapoÄinje ovdje:\n"
+
+#: incpath.c:357
+#, c-format
+msgid "#include <...> search starts here:\n"
+msgstr "#include <...> pretraga zapoÄinje ovdje:\n"
+
+#: incpath.c:362
+#, c-format
+msgid "End of search list.\n"
+msgstr "Kraj popisa pretrage.\n"
+
+#: input.c:48 cp/error.c:1107
+msgid "<built-in>"
+msgstr ""
+
+#. Opening quotation mark.
+#: intl.c:63
+msgid "`"
+msgstr "„"
+
+#. Closing quotation mark.
+#: intl.c:66
+msgid "'"
+msgstr "â€"
+
+#: ipa-pure-const.c:156
+msgid "function might be candidate for attribute %<%s%>"
+msgstr ""
+
+#: ipa-pure-const.c:157
+msgid "function might be candidate for attribute %<%s%> if it is known to return normally"
+msgstr ""
+
+#: langhooks.c:374
+msgid "At top level:"
+msgstr ""
+
+#: langhooks.c:394 cp/error.c:2987
+#, c-format
+msgid "In member function %qs"
+msgstr ""
+
+#: langhooks.c:398 cp/error.c:2990
+#, c-format
+msgid "In function %qs"
+msgstr ""
+
+#: langhooks.c:449 cp/error.c:2940
+#, c-format
+msgid " inlined from %qs at %s:%d:%d"
+msgstr ""
+
+#: langhooks.c:454 cp/error.c:2945
+#, c-format
+msgid " inlined from %qs at %s:%d"
+msgstr ""
+
+#: langhooks.c:460 cp/error.c:2951
+#, c-format
+msgid " inlined from %qs"
+msgstr ""
+
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
+msgid "assuming that the loop is not infinite"
+msgstr ""
+
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
+msgid "cannot optimize possibly infinite loops"
+msgstr "ne mogu optimizirati potencijalno beskonaÄne petlje"
+
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
+msgid "assuming that the loop counter does not overflow"
+msgstr "pretpostavljajući da neće doći do preljeva brojaÄa petlje"
+
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
+msgid "cannot optimize loop, the loop counter may overflow"
+msgstr "ne mogu optimizirati petlju, može doći do preljeva brojaÄa petlje"
+
+#: lto-wrapper.c:183
+#, c-format
+msgid "pex_init failed"
+msgstr "pex_init nije uspio"
+
+#: lto-wrapper.c:214
+#, c-format
+msgid "can't get program status"
+msgstr "ne mogu dohvatiti stanje programa"
+
+#: lto-wrapper.c:223
+#, c-format
+msgid "%s terminated with signal %d [%s], core dumped"
+msgstr "%s prekinut signalom %d [%s], jezgra izbaÄena"
+
+#: lto-wrapper.c:226
+#, c-format
+msgid "%s terminated with signal %d [%s]"
+msgstr "%s prekinut signalom %d [%s]"
+
+#: lto-wrapper.c:231 collect2.c:1991
+#, gcc-internal-format, gfc-internal-format
+msgid "%s returned %d exit status"
+msgstr ""
+
+#: lto-wrapper.c:247
+#, c-format
+msgid "deleting LTRANS file %s"
+msgstr "uklanjam LTRANS datoteku %s"
+
+#: lto-wrapper.c:269
+#, c-format
+msgid "failed to open %s"
+msgstr "nisam uspio otvoriti %s"
+
+#: lto-wrapper.c:274
+#, c-format
+msgid "could not write to temporary file %s"
+msgstr "ne mogu pisati u privremenu datoteku %s"
+
+#: lto-wrapper.c:321
+#, c-format
+msgid "malformed COLLECT_GCC_OPTIONS"
+msgstr "izobliÄen COLLECT_GCC_OPTIONS"
+
+#: lto-wrapper.c:445
+#, c-format
+msgid "environment variable COLLECT_GCC must be set"
+msgstr "varijabla okoline COLLECT_GCC mora biti postavljena "
+
+#: lto-wrapper.c:448
+#, c-format
+msgid "environment variable COLLECT_GCC_OPTIONS must be set"
+msgstr "varijabla okoline COLLECT_GCC_OPTIONS mora biti postavljena"
+
+#: lto-wrapper.c:734
+#, c-format
+msgid "fopen: %s"
+msgstr "fopen: %s"
+
+#. What to print when a switch has no documentation.
+#: opts.c:199
+msgid "This switch lacks documentation"
+msgstr ""
+
+#: opts.c:1028
+msgid "[default]"
+msgstr "[zadano]"
+
+#: opts.c:1039
+msgid "[enabled]"
+msgstr "[omogućeno]"
+
+#: opts.c:1039
+msgid "[disabled]"
+msgstr "[onemogućeno]"
+
+#: opts.c:1058
+#, c-format
+msgid " No options with the desired characteristics were found\n"
+msgstr " Nisu pronađene opcije sa željenim svojstvima\n"
+
+#: opts.c:1067
+#, c-format
+msgid " None found. Use --help=%s to show *all* the options supported by the %s front-end\n"
+msgstr " NiÅ¡ta nije pronaÄ‘eno. Koristite --help=%s za prikaz *svih* opcija koje podržava suÄelje %s\n"
+
+#: opts.c:1073
+#, c-format
+msgid " All options with the desired characteristics have already been displayed\n"
+msgstr " Sve opcije sa željenim svojstvima su već prikazane\n"
+
+#: opts.c:1168
+msgid "The following options are target specific"
+msgstr ""
+
+#: opts.c:1171
+msgid "The following options control compiler warning messages"
+msgstr "Sljedeće opcije upravljaju porukama upozorenja kompajlera"
+
+#: opts.c:1174
+msgid "The following options control optimizations"
+msgstr "Sljedeće opcije upravljaju optimizacijama"
+
+#: opts.c:1177 opts.c:1216
+msgid "The following options are language-independent"
+msgstr "Sljedeće opcije su neovisne o jeziku"
+
+#: opts.c:1180
+msgid "The --param option recognizes the following as parameters"
+msgstr "Opcija --param prepoznaje sljedeće kao parametre"
+
+#: opts.c:1186
+msgid "The following options are specific to just the language "
+msgstr "Sljedeće opcije su posebne samo za jezik "
+
+#: opts.c:1188
+msgid "The following options are supported by the language "
+msgstr "Sljedeće opcije podržava jezik "
+
+#: opts.c:1199
+msgid "The following options are not documented"
+msgstr "Sljedeće opcije nisu dokumentirane"
+
+#: opts.c:1201
+msgid "The following options take separate arguments"
+msgstr "Sljedeće opcije primaju odvojene argumente"
+
+#: opts.c:1203
+msgid "The following options take joined arguments"
+msgstr "Sljedeće opcije primaju spojene argumente"
+
+#: opts.c:1214
+msgid "The following options are language-related"
+msgstr "Sljedeće opcije su vezane uz jezik"
+
+#: opts.c:2061
+msgid "enabled by default"
+msgstr "uobiÄajeno omogućeno"
+
+#: plugin.c:782
+msgid "Event"
+msgstr "Događaj"
+
+#: plugin.c:782
+msgid "Plugins"
+msgstr "PrikljuÄci"
+
+#: plugin.c:814
+#, c-format
+msgid "*** WARNING *** there are active plugins, do not report this as a bug unless you can reproduce it without enabling any plugins.\n"
+msgstr "*** UPOZORENJE *** neki prikljuÄci su aktivni, nemojte prijavljivati kao greÅ¡ku ako ju ne možete ponoviti bez omogućivanja prikljuÄaka.\n"
+
+#: reload.c:3812
+msgid "unable to generate reloads for:"
+msgstr ""
+
+#: reload1.c:2120
+msgid "this is the insn:"
+msgstr "ovo je insn:"
+
+#. It's the compiler's fault.
+#: reload1.c:6102
+msgid "could not find a spill register"
+msgstr ""
+
+#. It's the compiler's fault.
+#: reload1.c:7912
+msgid "VOIDmode on an output"
+msgstr ""
+
+#: reload1.c:8672
+msgid "failure trying to reload:"
+msgstr ""
+
+#: rtl-error.c:118
+msgid "unrecognizable insn:"
+msgstr "neprepoznati insn:"
+
+#: rtl-error.c:120
+msgid "insn does not satisfy its constraints:"
+msgstr "insn ne zadovoljava svoja ograniÄenja:"
+
+#: targhooks.c:1404
+#, c-format
+msgid "created and used with differing settings of '%s'"
+msgstr "napravljeno i koriÅ¡teno s razliÄitim postavkama „%sâ€"
+
+#: targhooks.c:1406
+msgid "out of memory"
+msgstr "nema dovoljno memorije"
+
+#: targhooks.c:1421
+msgid "created and used with different settings of -fpic"
+msgstr "napravljeno i koriÅ¡teno s razliÄitim postavkama -fpic"
+
+#: targhooks.c:1423
+msgid "created and used with different settings of -fpie"
+msgstr "napravljeno i koriÅ¡teno s razliÄitim postavkama -fpie"
+
+#: tlink.c:392
+#, c-format
+msgid "collect: reading %s\n"
+msgstr "collect: Äitam %s\n"
+
+#: tlink.c:548
+#, c-format
+msgid "collect: recompiling %s\n"
+msgstr "collect: ponovo kompajliram %s\n"
+
+#: tlink.c:632
+#, c-format
+msgid "collect: tweaking %s in %s\n"
+msgstr "collect: podešavam %s u %s\n"
+
+#: tlink.c:848
+#, c-format
+msgid "collect: relinking\n"
+msgstr ""
+
+#: toplev.c:342
+#, c-format
+msgid "unrecoverable error"
+msgstr "greška, nemoguć oporavak"
+
+#: toplev.c:695
+#, c-format
+msgid ""
+"%s%s%s %sversion %s (%s)\n"
+"%s\tcompiled by GNU C version %s, "
+msgstr ""
+"%s%s%s %sinaÄica %s (%s)\n"
+"%s\tkompajlirao GNU C inaÄica %s, "
+
+#: toplev.c:697
+#, c-format
+msgid "%s%s%s %sversion %s (%s) compiled by CC, "
+msgstr "%s%s%s %sinaÄica %s (%s) kompajlirao CC, "
+
+#: toplev.c:701
+#, c-format
+msgid "GMP version %s, MPFR version %s, MPC version %s\n"
+msgstr "GMP inaÄica %s, MPFR inaÄica %s, MPC inaÄica %s\n"
+
+#: toplev.c:703
+#, c-format
+msgid "%s%swarning: %s header version %s differs from library version %s.\n"
+msgstr ""
+
+#: toplev.c:705
+#, c-format
+msgid "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
+msgstr ""
+
+#: toplev.c:865
+msgid "options passed: "
+msgstr ""
+
+#: toplev.c:893
+msgid "options enabled: "
+msgstr "omogućene opcije: "
+
+#. Function has not be considered for inlining. This is the code for
+#. functions that have not been rejected for inlining yet.
+#: cif-code.def:38
+msgid "function not considered for inlining"
+msgstr ""
+
+#. Inlining failed owing to unavailable function body.
+#: cif-code.def:41
+msgid "function body not available"
+msgstr "tijelo funkcije nije dostupno"
+
+#: cif-code.def:45
+msgid "redefined extern inline functions are not considered for inlining"
+msgstr ""
+
+#. Function is not inlinable.
+#: cif-code.def:49
+msgid "function not inlinable"
+msgstr ""
+
+#. Function is not overwritable.
+#: cif-code.def:52
+msgid "function body can be overwritten at link time"
+msgstr "preko tijela funkcije se može pisati prilikom povezivanja"
+
+#. Function is not an inlining candidate.
+#: cif-code.def:55
+msgid "function not inline candidate"
+msgstr ""
+
+#: cif-code.def:59
+msgid "--param large-function-growth limit reached"
+msgstr ""
+
+#: cif-code.def:61
+msgid "--param large-stack-frame-growth limit reached"
+msgstr ""
+
+#: cif-code.def:63
+msgid "--param max-inline-insns-single limit reached"
+msgstr ""
+
+#: cif-code.def:65
+msgid "--param max-inline-insns-auto limit reached"
+msgstr ""
+
+#: cif-code.def:67
+msgid "--param inline-unit-growth limit reached"
+msgstr ""
+
+#. Recursive inlining.
+#: cif-code.def:70
+msgid "recursive inlining"
+msgstr ""
+
+#. Call is unlikely.
+#: cif-code.def:73
+msgid "call is unlikely and code size would grow"
+msgstr ""
+
+#: cif-code.def:77
+msgid "function not declared inline and code size would grow"
+msgstr ""
+
+#: cif-code.def:81
+msgid "optimizing for size and code size would grow"
+msgstr "optimiziram za veliÄinu i veliÄina koda može narasti"
+
+#. Caller and callee disagree on the arguments.
+#: cif-code.def:84
+msgid "mismatched arguments"
+msgstr ""
+
+#: cif-code.def:88
+msgid "originally indirect function call not considered for inlining"
+msgstr ""
+
+#: cif-code.def:92
+msgid "indirect function call with a yet undetermined callee"
+msgstr ""
+
+#. We can't inline different EH personalities together.
+#: cif-code.def:95
+msgid "exception handling personality mismatch"
+msgstr ""
+
+#. We can't inline if the callee can throw non-call exceptions but the
+#. caller cannot.
+#: cif-code.def:99
+msgid "non-call exception handling mismatch"
+msgstr ""
+
+#. We can't inline because of mismatched target specific options.
+#: cif-code.def:102
+msgid "target specific option mismatch"
+msgstr ""
+
+#. We can't inline because of mismatched optimization levels.
+#: cif-code.def:105
+msgid "optimization level attribute mismatch"
+msgstr ""
+
+#. The remainder are real diagnostic types.
+#: diagnostic.def:33
+msgid "fatal error: "
+msgstr "fatalna greška: "
+
+#: diagnostic.def:34
+msgid "internal compiler error: "
+msgstr "interna greška kompajlera: "
+
+#: diagnostic.def:35
+msgid "error: "
+msgstr "greška: "
+
+#: diagnostic.def:36
+msgid "sorry, unimplemented: "
+msgstr "žao mi je, nije implementirano: "
+
+#: diagnostic.def:37
+msgid "warning: "
+msgstr "upozorenje: "
+
+#: diagnostic.def:38
+msgid "anachronism: "
+msgstr ""
+
+#: diagnostic.def:39
+msgid "note: "
+msgstr "napomena: "
+
+#: diagnostic.def:40
+msgid "debug: "
+msgstr "debug: "
+
+#. These two would be re-classified as DK_WARNING or DK_ERROR, so the
+#. prefix does not matter.
+#: diagnostic.def:43
+msgid "pedwarn: "
+msgstr ""
+
+#: diagnostic.def:44
+msgid "permerror: "
+msgstr ""
+
+#: params.def:46
+msgid "Maximal estimated outcome of branch considered predictable"
+msgstr ""
+
+#: params.def:63
+msgid "The maximum number of instructions in a single function eligible for inlining"
+msgstr ""
+
+#: params.def:75
+msgid "The maximum number of instructions when automatically inlining"
+msgstr ""
+
+#: params.def:80
+msgid "The maximum number of instructions inline function can grow to via recursive inlining"
+msgstr ""
+
+#: params.def:85
+msgid "The maximum number of instructions non-inline function can grow to via recursive inlining"
+msgstr ""
+
+#: params.def:90
+msgid "The maximum depth of recursive inlining for inline functions"
+msgstr ""
+
+#: params.def:95
+msgid "The maximum depth of recursive inlining for non-inline functions"
+msgstr ""
+
+#: params.def:100
+msgid "Inline recursively only when the probability of call being executed exceeds the parameter"
+msgstr ""
+
+#: params.def:108
+msgid "The maximum number of nested indirect inlining performed by early inliner"
+msgstr ""
+
+#: params.def:114
+msgid "Probability that COMDAT function will be shared with different compilation unit"
+msgstr "Vjerojatnost da će se COMDAT funkcija dijeliti s drugom kompilacijskom jedinicom"
+
+#: params.def:120
+msgid "Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen"
+msgstr ""
+
+#: params.def:127
+msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling"
+msgstr ""
+
+#: params.def:133
+msgid "If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization"
+msgstr ""
+
+#: params.def:144
+msgid "The maximum number of instructions to consider to fill a delay slot"
+msgstr ""
+
+#: params.def:155
+msgid "The maximum number of instructions to consider to find accurate live register information"
+msgstr ""
+
+#: params.def:165
+msgid "The maximum length of scheduling's pending operations list"
+msgstr ""
+
+#: params.def:172
+msgid "The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop"
+msgstr ""
+
+#: params.def:177
+msgid "The size of function body to be considered large"
+msgstr "VeliÄina tijela funkcije koja se smatra velikom"
+
+#: params.def:181
+msgid "Maximal growth due to inlining of large function (in percent)"
+msgstr ""
+
+#: params.def:185
+msgid "The size of translation unit to be considered large"
+msgstr ""
+
+#: params.def:189
+msgid "How much can given compilation unit grow because of the inlining (in percent)"
+msgstr ""
+
+#: params.def:193
+msgid "How much can given compilation unit grow because of the interprocedural constant propagation (in percent)"
+msgstr ""
+
+#: params.def:197
+msgid "Maximal estimated growth of function body caused by early inlining of single call"
+msgstr ""
+
+#: params.def:201
+msgid "The size of stack frame to be considered large"
+msgstr "VeliÄina okvira stoga koja se smatra velikom"
+
+#: params.def:205
+msgid "Maximal stack frame growth due to inlining (in percent)"
+msgstr ""
+
+#: params.def:212
+msgid "The maximum amount of memory to be allocated by GCSE"
+msgstr "Najveća koliÄina memorije koju će alocirati GCSE"
+
+#: params.def:219
+msgid "The maximum ratio of insertions to deletions of expressions in GCSE"
+msgstr ""
+
+#: params.def:230
+msgid "The threshold ratio for performing partial redundancy elimination after reload"
+msgstr ""
+
+#: params.def:237
+msgid "The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload"
+msgstr ""
+
+#: params.def:245
+msgid "Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations"
+msgstr ""
+
+#: params.def:251
+msgid "Cost at which GCSE optimizations will not constraint the distance an expression can travel"
+msgstr ""
+
+#: params.def:259
+msgid "Maximum depth of search in the dominator tree for expressions to hoist"
+msgstr ""
+
+#: params.def:271
+msgid "The maximum number of instructions to consider to unroll in a loop"
+msgstr ""
+
+#: params.def:277
+msgid "The maximum number of instructions to consider to unroll in a loop on average"
+msgstr ""
+
+#: params.def:282
+msgid "The maximum number of unrollings of a single loop"
+msgstr ""
+
+#: params.def:287
+msgid "The maximum number of insns of a peeled loop"
+msgstr ""
+
+#: params.def:292
+msgid "The maximum number of peelings of a single loop"
+msgstr ""
+
+#: params.def:297
+msgid "The maximum number of insns of a completely peeled loop"
+msgstr ""
+
+#: params.def:302
+msgid "The maximum number of peelings of a single loop that is peeled completely"
+msgstr ""
+
+#: params.def:307
+msgid "The maximum number of insns of a peeled loop that rolls only once"
+msgstr ""
+
+#: params.def:312
+msgid "The maximum depth of a loop nest we completely peel"
+msgstr ""
+
+#: params.def:318
+msgid "The maximum number of insns of an unswitched loop"
+msgstr ""
+
+#: params.def:323
+msgid "The maximum number of unswitchings in a single loop"
+msgstr ""
+
+#: params.def:330
+msgid "Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates"
+msgstr ""
+
+#: params.def:336
+msgid "Bound on the cost of an expression to compute the number of iterations"
+msgstr ""
+
+#: params.def:342
+msgid "A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop"
+msgstr ""
+
+#: params.def:347
+msgid "The minimum value of stage count that swing modulo scheduler will generate."
+msgstr ""
+
+#: params.def:351
+msgid "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA"
+msgstr ""
+
+#: params.def:355
+msgid "A threshold on the average loop count considered by the swing modulo scheduler"
+msgstr ""
+
+#: params.def:360
+msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot"
+msgstr ""
+
+#: params.def:364
+msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot"
+msgstr ""
+
+#: params.def:369
+msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment"
+msgstr ""
+
+#: params.def:374
+msgid "Loops iterating at least selected number of iterations will get loop alignement."
+msgstr ""
+
+#: params.def:390
+msgid "The maximum number of loop iterations we predict statically"
+msgstr ""
+
+#: params.def:394
+msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available"
+msgstr ""
+
+#: params.def:398
+msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available"
+msgstr ""
+
+#: params.def:402
+msgid "Maximal code growth caused by tail duplication (in percent)"
+msgstr ""
+
+#: params.def:406
+msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent)"
+msgstr ""
+
+#: params.def:410
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available"
+msgstr ""
+
+#: params.def:414
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available"
+msgstr ""
+
+#: params.def:420
+msgid "The maximum number of incoming edges to consider for crossjumping"
+msgstr ""
+
+#: params.def:426
+msgid "The minimum number of matching instructions to consider for crossjumping"
+msgstr ""
+
+#: params.def:432
+msgid "The maximum expansion factor when copying basic blocks"
+msgstr ""
+
+#: params.def:438
+msgid "The maximum number of insns to duplicate when unfactoring computed gotos"
+msgstr ""
+
+#: params.def:444
+msgid "The maximum length of path considered in cse"
+msgstr ""
+
+#: params.def:448
+msgid "The maximum instructions CSE process before flushing"
+msgstr ""
+
+#: params.def:455
+msgid "The minimum cost of an expensive expression in the loop invariant motion"
+msgstr ""
+
+#: params.def:464
+msgid "Bound on number of candidates below that all candidates are considered in iv optimizations"
+msgstr ""
+
+#: params.def:472
+msgid "Bound on number of iv uses in loop optimized in iv optimizations"
+msgstr ""
+
+#: params.def:480
+msgid "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization"
+msgstr ""
+
+#: params.def:485
+msgid "Bound on size of expressions used in the scalar evolutions analyzer"
+msgstr ""
+
+#: params.def:490
+msgid "Bound on the complexity of the expressions in the scalar evolutions analyzer"
+msgstr ""
+
+#: params.def:495
+msgid "Bound on the number of variables in Omega constraint systems"
+msgstr ""
+
+#: params.def:500
+msgid "Bound on the number of inequalities in Omega constraint systems"
+msgstr ""
+
+#: params.def:505
+msgid "Bound on the number of equalities in Omega constraint systems"
+msgstr ""
+
+#: params.def:510
+msgid "Bound on the number of wild cards in Omega constraint systems"
+msgstr ""
+
+#: params.def:515
+msgid "Bound on the size of the hash table in Omega constraint systems"
+msgstr ""
+
+#: params.def:520
+msgid "Bound on the number of keys in Omega constraint systems"
+msgstr ""
+
+#: params.def:525
+msgid "When set to 1, use expensive methods to eliminate all redundant constraints"
+msgstr ""
+
+#: params.def:530
+msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check"
+msgstr ""
+
+#: params.def:535
+msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check"
+msgstr ""
+
+#: params.def:540
+msgid "The maximum memory locations recorded by cselib"
+msgstr ""
+
+#: params.def:553
+msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap"
+msgstr ""
+
+#: params.def:558
+msgid "Minimum heap size before we start collecting garbage, in kilobytes"
+msgstr ""
+
+#: params.def:566
+msgid "The maximum number of instructions to search backward when looking for equivalent reload"
+msgstr ""
+
+#: params.def:571
+msgid "Target block's relative execution frequency (as a percentage) required to sink a statement"
+msgstr ""
+
+#: params.def:576 params.def:586
+msgid "The maximum number of blocks in a region to be considered for interblock scheduling"
+msgstr ""
+
+#: params.def:581 params.def:591
+msgid "The maximum number of insns in a region to be considered for interblock scheduling"
+msgstr ""
+
+#: params.def:596
+msgid "The minimum probability of reaching a source block for interblock speculative scheduling"
+msgstr ""
+
+#: params.def:601
+msgid "The maximum number of iterations through CFG to extend regions"
+msgstr ""
+
+#: params.def:606
+msgid "The maximum conflict delay for an insn to be considered for speculative motion"
+msgstr ""
+
+#: params.def:611
+msgid "The minimal probability of speculation success (in percents), so that speculative insn will be scheduled."
+msgstr ""
+
+#: params.def:616
+msgid "The maximum size of the lookahead window of selective scheduling"
+msgstr ""
+
+#: params.def:621
+msgid "Maximum number of times that an insn could be scheduled"
+msgstr ""
+
+#: params.def:626
+msgid "Maximum number of instructions in the ready list that are considered eligible for renaming"
+msgstr ""
+
+#: params.def:631
+msgid "Minimal distance between possibly conflicting store and load"
+msgstr ""
+
+#: params.def:636
+msgid "The maximum number of RTL nodes that can be recorded as combiner's last value"
+msgstr ""
+
+#: params.def:644
+msgid "The upper bound for sharing integer constants"
+msgstr ""
+
+#: params.def:663
+msgid "Minimum number of virtual mappings to consider switching to full virtual renames"
+msgstr ""
+
+#: params.def:668
+msgid "Ratio between virtual mappings and virtual symbols to do full virtual renames"
+msgstr ""
+
+#: params.def:673
+msgid "The lower bound for a buffer to be considered for stack smashing protection"
+msgstr ""
+
+#: params.def:691
+msgid "Maximum number of statements allowed in a block that needs to be duplicated when threading jumps"
+msgstr ""
+
+#: params.def:700
+msgid "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable"
+msgstr ""
+
+#: params.def:705
+msgid "The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass"
+msgstr ""
+
+#: params.def:711
+msgid "Maximum number of active local stores in RTL dead store elimination"
+msgstr ""
+
+#: params.def:721
+msgid "The number of insns executed before prefetch is completed"
+msgstr ""
+
+#: params.def:728
+msgid "The number of prefetches that can run at the same time"
+msgstr ""
+
+#: params.def:735
+msgid "The size of L1 cache"
+msgstr ""
+
+#: params.def:742
+msgid "The size of L1 cache line"
+msgstr ""
+
+#: params.def:749
+msgid "The size of L2 cache"
+msgstr ""
+
+#: params.def:760
+msgid "Whether to use canonical types"
+msgstr ""
+
+#: params.def:765
+msgid "Maximum length of partial antic set when performing tree pre optimization"
+msgstr ""
+
+#: params.def:775
+msgid "Maximum size of a SCC before SCCVN stops processing a function"
+msgstr ""
+
+#: params.def:780
+msgid "Max loops number for regional RA"
+msgstr ""
+
+#: params.def:785
+msgid "Max size of conflict table in MB"
+msgstr ""
+
+#: params.def:790
+msgid "The number of registers in each class kept unused by loop invariant motion"
+msgstr ""
+
+#: params.def:798
+msgid "The maximum ratio between array size and switch branches for a switch conversion to take place"
+msgstr ""
+
+#: params.def:806
+msgid "size of tiles for loop blocking"
+msgstr ""
+
+#: params.def:813
+msgid "maximum number of parameters in a SCoP"
+msgstr ""
+
+#: params.def:820
+msgid "maximum number of basic blocks per function to be analyzed by Graphite"
+msgstr ""
+
+#: params.def:826
+msgid "Maximum number of datarefs in loop for building loop data dependencies"
+msgstr ""
+
+#: params.def:833
+msgid "Max basic blocks number in loop for loop invariant motion"
+msgstr ""
+
+#: params.def:839
+msgid "Maximum number of instructions in basic block to be considered for SLP vectorization"
+msgstr ""
+
+#: params.def:844
+msgid "Min. ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count"
+msgstr ""
+
+#: params.def:850
+msgid "Min. ratio of insns to mem ops to enable prefetching in a loop"
+msgstr ""
+
+#: params.def:857
+msgid "Max. size of var tracking hash tables"
+msgstr ""
+
+#: params.def:865
+msgid "Max. recursion depth for expanding var tracking expressions"
+msgstr ""
+
+#: params.def:872
+msgid "The minimum UID to be used for a nondebug insn"
+msgstr ""
+
+#: params.def:877
+msgid "Maximum allowed growth of size of new parameters ipa-sra replaces a pointer to an aggregate with"
+msgstr ""
+
+#: params.def:883
+msgid "Size in bytes after which thread-local aggregates should be instrumented with the logging functions instead of save/restore pairs"
+msgstr ""
+
+#: params.def:890
+msgid "Maximum size of a list of values associated with each parameter for interprocedural constant propagation"
+msgstr ""
+
+#: params.def:896
+msgid "Threshold ipa-cp opportunity evaluation that is still considered beneficial to clone."
+msgstr ""
+
+#: params.def:904
+msgid "Number of partitions the program should be split to"
+msgstr ""
+
+#: params.def:909
+msgid "Minimal size of a partition for LTO (in estimated instructions)"
+msgstr ""
+
+#: params.def:916
+msgid "Maximum number of namespaces to search for alternatives when name lookup fails"
+msgstr ""
+
+#: params.def:923
+msgid "Maximum number of conditional store pairs that can be sunk"
+msgstr ""
+
+#: params.def:931
+msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches, if 0, use the default for the machine"
+msgstr ""
+
+#: params.def:939
+msgid "Allow new data races on loads to be introduced"
+msgstr ""
+
+#: params.def:944
+msgid "Allow new data races on stores to be introduced"
+msgstr ""
+
+#: params.def:949
+msgid "Allow new data races on packed data loads to be introduced"
+msgstr ""
+
+#: params.def:954
+msgid "Allow new data races on packed data stores to be introduced"
+msgstr ""
+
+#: params.def:960
+msgid "Set the maximum number of instructions executed in parallel in reassociated tree. If 0, use the target dependent heuristic."
+msgstr ""
+
+#: params.def:966
+msgid "Maximum amount of similar bbs to compare a bb with"
+msgstr ""
+
+#: params.def:971
+msgid "Maximum amount of iterations of the pass over a function"
+msgstr ""
+
+#: params.def:978
+msgid "Maximum number of strings for which strlen optimization pass will track string lengths"
+msgstr ""
+
+#: c-family/c-format.c:367
+msgid "format"
+msgstr ""
+
+#: c-family/c-format.c:368
+msgid "field width specifier"
+msgstr ""
+
+#: c-family/c-format.c:369
+msgid "field precision specifier"
+msgstr ""
+
+#: c-family/c-format.c:483 c-family/c-format.c:507 config/i386/msformat-c.c:49
+msgid "' ' flag"
+msgstr ""
+
+#: c-family/c-format.c:483 c-family/c-format.c:507 config/i386/msformat-c.c:49
+msgid "the ' ' printf flag"
+msgstr ""
+
+#: c-family/c-format.c:484 c-family/c-format.c:508 c-family/c-format.c:542
+#: c-family/c-format.c:605 config/i386/msformat-c.c:50
+msgid "'+' flag"
+msgstr ""
+
+#: c-family/c-format.c:484 c-family/c-format.c:508 c-family/c-format.c:542
+#: config/i386/msformat-c.c:50
+msgid "the '+' printf flag"
+msgstr ""
+
+#: c-family/c-format.c:485 c-family/c-format.c:509 c-family/c-format.c:543
+#: c-family/c-format.c:581 config/i386/msformat-c.c:51
+#: config/i386/msformat-c.c:86
+msgid "'#' flag"
+msgstr ""
+
+#: c-family/c-format.c:485 c-family/c-format.c:509 c-family/c-format.c:543
+#: config/i386/msformat-c.c:51
+msgid "the '#' printf flag"
+msgstr ""
+
+#: c-family/c-format.c:486 c-family/c-format.c:510 c-family/c-format.c:579
+#: config/i386/msformat-c.c:52
+msgid "'0' flag"
+msgstr ""
+
+#: c-family/c-format.c:486 c-family/c-format.c:510 config/i386/msformat-c.c:52
+msgid "the '0' printf flag"
+msgstr ""
+
+#: c-family/c-format.c:487 c-family/c-format.c:511 c-family/c-format.c:578
+#: c-family/c-format.c:608 config/i386/msformat-c.c:53
+msgid "'-' flag"
+msgstr ""
+
+#: c-family/c-format.c:487 c-family/c-format.c:511 config/i386/msformat-c.c:53
+msgid "the '-' printf flag"
+msgstr ""
+
+#: c-family/c-format.c:488 c-family/c-format.c:561 config/i386/msformat-c.c:54
+#: config/i386/msformat-c.c:74
+msgid "''' flag"
+msgstr ""
+
+#: c-family/c-format.c:488 config/i386/msformat-c.c:54
+msgid "the ''' printf flag"
+msgstr ""
+
+#: c-family/c-format.c:489 c-family/c-format.c:562
+msgid "'I' flag"
+msgstr ""
+
+#: c-family/c-format.c:489
+msgid "the 'I' printf flag"
+msgstr ""
+
+#: c-family/c-format.c:490 c-family/c-format.c:512 c-family/c-format.c:559
+#: c-family/c-format.c:582 c-family/c-format.c:609 config/sol2-c.c:45
+#: config/i386/msformat-c.c:55 config/i386/msformat-c.c:72
+msgid "field width"
+msgstr ""
+
+#: c-family/c-format.c:490 c-family/c-format.c:512 config/sol2-c.c:45
+#: config/i386/msformat-c.c:55
+msgid "field width in printf format"
+msgstr ""
+
+#: c-family/c-format.c:491 c-family/c-format.c:513 c-family/c-format.c:545
+#: config/i386/msformat-c.c:56
+msgid "precision"
+msgstr ""
+
+#: c-family/c-format.c:491 c-family/c-format.c:513 c-family/c-format.c:545
+#: config/i386/msformat-c.c:56
+msgid "precision in printf format"
+msgstr ""
+
+#: c-family/c-format.c:492 c-family/c-format.c:514 c-family/c-format.c:546
+#: c-family/c-format.c:560 c-family/c-format.c:612 config/sol2-c.c:46
+#: config/i386/msformat-c.c:57 config/i386/msformat-c.c:73
+msgid "length modifier"
+msgstr ""
+
+#: c-family/c-format.c:492 c-family/c-format.c:514 c-family/c-format.c:546
+#: config/sol2-c.c:46 config/i386/msformat-c.c:57
+msgid "length modifier in printf format"
+msgstr ""
+
+#: c-family/c-format.c:544
+msgid "'q' flag"
+msgstr ""
+
+#: c-family/c-format.c:544
+msgid "the 'q' diagnostic flag"
+msgstr ""
+
+#: c-family/c-format.c:556 config/i386/msformat-c.c:70
+msgid "assignment suppression"
+msgstr ""
+
+#: c-family/c-format.c:556 config/i386/msformat-c.c:70
+msgid "the assignment suppression scanf feature"
+msgstr ""
+
+#: c-family/c-format.c:557 config/i386/msformat-c.c:71
+msgid "'a' flag"
+msgstr ""
+
+#: c-family/c-format.c:557 config/i386/msformat-c.c:71
+msgid "the 'a' scanf flag"
+msgstr ""
+
+#: c-family/c-format.c:558
+msgid "'m' flag"
+msgstr ""
+
+#: c-family/c-format.c:558
+msgid "the 'm' scanf flag"
+msgstr ""
+
+#: c-family/c-format.c:559 config/i386/msformat-c.c:72
+msgid "field width in scanf format"
+msgstr ""
+
+#: c-family/c-format.c:560 config/i386/msformat-c.c:73
+msgid "length modifier in scanf format"
+msgstr ""
+
+#: c-family/c-format.c:561 config/i386/msformat-c.c:74
+msgid "the ''' scanf flag"
+msgstr ""
+
+#: c-family/c-format.c:562
+msgid "the 'I' scanf flag"
+msgstr ""
+
+#: c-family/c-format.c:577
+msgid "'_' flag"
+msgstr ""
+
+#: c-family/c-format.c:577
+msgid "the '_' strftime flag"
+msgstr ""
+
+#: c-family/c-format.c:578
+msgid "the '-' strftime flag"
+msgstr ""
+
+#: c-family/c-format.c:579
+msgid "the '0' strftime flag"
+msgstr ""
+
+#: c-family/c-format.c:580 c-family/c-format.c:604
+msgid "'^' flag"
+msgstr ""
+
+#: c-family/c-format.c:580
+msgid "the '^' strftime flag"
+msgstr ""
+
+#: c-family/c-format.c:581 config/i386/msformat-c.c:86
+msgid "the '#' strftime flag"
+msgstr ""
+
+#: c-family/c-format.c:582
+msgid "field width in strftime format"
+msgstr ""
+
+#: c-family/c-format.c:583
+msgid "'E' modifier"
+msgstr ""
+
+#: c-family/c-format.c:583
+msgid "the 'E' strftime modifier"
+msgstr ""
+
+#: c-family/c-format.c:584
+msgid "'O' modifier"
+msgstr ""
+
+#: c-family/c-format.c:584
+msgid "the 'O' strftime modifier"
+msgstr ""
+
+#: c-family/c-format.c:585
+msgid "the 'O' modifier"
+msgstr ""
+
+#: c-family/c-format.c:603
+msgid "fill character"
+msgstr ""
+
+#: c-family/c-format.c:603
+msgid "fill character in strfmon format"
+msgstr ""
+
+#: c-family/c-format.c:604
+msgid "the '^' strfmon flag"
+msgstr ""
+
+#: c-family/c-format.c:605
+msgid "the '+' strfmon flag"
+msgstr ""
+
+#: c-family/c-format.c:606
+msgid "'(' flag"
+msgstr ""
+
+#: c-family/c-format.c:606
+msgid "the '(' strfmon flag"
+msgstr ""
+
+#: c-family/c-format.c:607
+msgid "'!' flag"
+msgstr ""
+
+#: c-family/c-format.c:607
+msgid "the '!' strfmon flag"
+msgstr ""
+
+#: c-family/c-format.c:608
+msgid "the '-' strfmon flag"
+msgstr ""
+
+#: c-family/c-format.c:609
+msgid "field width in strfmon format"
+msgstr ""
+
+#: c-family/c-format.c:610
+msgid "left precision"
+msgstr ""
+
+#: c-family/c-format.c:610
+msgid "left precision in strfmon format"
+msgstr ""
+
+#: c-family/c-format.c:611
+msgid "right precision"
+msgstr ""
+
+#: c-family/c-format.c:611
+msgid "right precision in strfmon format"
+msgstr ""
+
+#: c-family/c-format.c:612
+msgid "length modifier in strfmon format"
+msgstr ""
+
+#. Handle deferred options from command-line.
+#: c-family/c-opts.c:1357 fortran/cpp.c:581
+msgid "<command-line>"
+msgstr ""
+
+#: c-family/c-pretty-print.c:345
+msgid "<type-error>"
+msgstr ""
+
+#: c-family/c-pretty-print.c:384
+msgid "<unnamed-unsigned:"
+msgstr ""
+
+#: c-family/c-pretty-print.c:385
+msgid "<unnamed-signed:"
+msgstr ""
+
+#: c-family/c-pretty-print.c:388
+msgid "<unnamed-float:"
+msgstr ""
+
+#: c-family/c-pretty-print.c:391
+msgid "<unnamed-fixed:"
+msgstr ""
+
+#: c-family/c-pretty-print.c:406
+msgid "<typedef-error>"
+msgstr ""
+
+#: c-family/c-pretty-print.c:419
+msgid "<tag-error>"
+msgstr ""
+
+#: c-family/c-pretty-print.c:1228
+msgid "<erroneous-expression>"
+msgstr ""
+
+#: c-family/c-pretty-print.c:1232 cp/cxx-pretty-print.c:153
+msgid "<return-value>"
+msgstr ""
+
+#: c-family/c-pretty-print.c:2138 cp/error.c:1802 cp/error.c:2713
+msgid "<unknown>"
+msgstr ""
+
+#: config/alpha/alpha.c:5042
+#, c-format
+msgid "invalid %%H value"
+msgstr ""
+
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
+#, c-format
+msgid "invalid %%J value"
+msgstr ""
+
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
+#, c-format
+msgid "invalid %%r value"
+msgstr ""
+
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
+#, c-format
+msgid "invalid %%R value"
+msgstr ""
+
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
+#: config/xtensa/xtensa.c:2317
+#, c-format
+msgid "invalid %%N value"
+msgstr ""
+
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
+#, c-format
+msgid "invalid %%P value"
+msgstr ""
+
+#: config/alpha/alpha.c:5125
+#, c-format
+msgid "invalid %%h value"
+msgstr ""
+
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
+#, c-format
+msgid "invalid %%L value"
+msgstr ""
+
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
+#, c-format
+msgid "invalid %%m value"
+msgstr ""
+
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
+#, c-format
+msgid "invalid %%M value"
+msgstr ""
+
+#: config/alpha/alpha.c:5224
+#, c-format
+msgid "invalid %%U value"
+msgstr ""
+
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
+#, c-format
+msgid "invalid %%s value"
+msgstr ""
+
+#: config/alpha/alpha.c:5254
+#, c-format
+msgid "invalid %%C value"
+msgstr ""
+
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
+#, c-format
+msgid "invalid %%E value"
+msgstr ""
+
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
+#, c-format
+msgid "unknown relocation unspec"
+msgstr ""
+
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
+#, c-format
+msgid "invalid %%xn code"
+msgstr ""
+
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
+#, c-format
+msgid "predicated Thumb instruction"
+msgstr ""
+
+#: config/arm/arm.c:17122
+#, c-format
+msgid "predicated instruction in conditional sequence"
+msgstr ""
+
+#: config/arm/arm.c:17253
+#, c-format
+msgid "Unsupported operand for code '%c'"
+msgstr ""
+
+#: config/arm/arm.c:17301
+#, c-format
+msgid "invalid shift operand"
+msgstr ""
+
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
+#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
+#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
+#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
+#, c-format
+msgid "invalid operand for code '%c'"
+msgstr ""
+
+#: config/arm/arm.c:17462
+#, c-format
+msgid "instruction never executed"
+msgstr ""
+
+#: config/arm/arm.c:17805
+#, c-format
+msgid "missing operand"
+msgstr ""
+
+#: config/arm/arm.c:20407
+msgid "function parameters cannot have __fp16 type"
+msgstr ""
+
+#: config/arm/arm.c:20417
+msgid "functions cannot return __fp16 type"
+msgstr ""
+
+#: config/avr/avr.c:1806
+#, c-format
+msgid "address operand requires constraint for X, Y, or Z register"
+msgstr ""
+
+#: config/avr/avr.c:1959
+msgid "operands to %T/%t must be reg + const_int:"
+msgstr ""
+
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
+msgid "bad address, not an I/O address:"
+msgstr ""
+
+#: config/avr/avr.c:2006
+msgid "bad address, not a constant:"
+msgstr ""
+
+#: config/avr/avr.c:2024
+msgid "bad address, not (reg+disp):"
+msgstr ""
+
+#: config/avr/avr.c:2031
+msgid "bad address, not post_inc or pre_dec:"
+msgstr ""
+
+#: config/avr/avr.c:2042
+msgid "internal compiler error. Bad address:"
+msgstr ""
+
+#: config/avr/avr.c:2072
+msgid "internal compiler error. Unknown mode:"
+msgstr ""
+
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
+msgid "invalid insn:"
+msgstr ""
+
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
+msgid "incorrect insn:"
+msgstr ""
+
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
+msgid "unknown move insn:"
+msgstr ""
+
+#: config/avr/avr.c:4441
+msgid "bad shift insn:"
+msgstr ""
+
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
+msgid "internal compiler error. Incorrect shift:"
+msgstr ""
+
+#: config/bfin/bfin.c:1385
+#, c-format
+msgid "invalid %%j value"
+msgstr ""
+
+#: config/bfin/bfin.c:1578 config/c6x/c6x.c:2290
+#, c-format
+msgid "invalid const_double operand"
+msgstr ""
+
+#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
+#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: lto/lto-object.c:339 lto/lto-object.c:363
+#, gcc-internal-format, gfc-internal-format
+msgid "%s"
+msgstr ""
+
+#: config/cris/cris.c:630
+msgid "unexpected index-type in cris_print_index"
+msgstr ""
+
+#: config/cris/cris.c:647
+msgid "unexpected base-type in cris_print_base"
+msgstr ""
+
+#: config/cris/cris.c:711
+msgid "invalid operand for 'b' modifier"
+msgstr ""
+
+#: config/cris/cris.c:728
+msgid "invalid operand for 'o' modifier"
+msgstr ""
+
+#: config/cris/cris.c:747
+msgid "invalid operand for 'O' modifier"
+msgstr ""
+
+#: config/cris/cris.c:780
+msgid "invalid operand for 'p' modifier"
+msgstr ""
+
+#: config/cris/cris.c:819
+msgid "invalid operand for 'z' modifier"
+msgstr ""
+
+#: config/cris/cris.c:883 config/cris/cris.c:917
+msgid "invalid operand for 'H' modifier"
+msgstr ""
+
+#: config/cris/cris.c:893
+msgid "bad register"
+msgstr ""
+
+#: config/cris/cris.c:937
+msgid "invalid operand for 'e' modifier"
+msgstr ""
+
+#: config/cris/cris.c:954
+msgid "invalid operand for 'm' modifier"
+msgstr ""
+
+#: config/cris/cris.c:979
+msgid "invalid operand for 'A' modifier"
+msgstr ""
+
+#: config/cris/cris.c:1002
+msgid "invalid operand for 'D' modifier"
+msgstr ""
+
+#: config/cris/cris.c:1016
+msgid "invalid operand for 'T' modifier"
+msgstr ""
+
+#: config/cris/cris.c:1036 config/moxie/moxie.c:181
+msgid "invalid operand modifier letter"
+msgstr ""
+
+#: config/cris/cris.c:1093
+msgid "unexpected multiplicative operand"
+msgstr ""
+
+#: config/cris/cris.c:1113 config/moxie/moxie.c:206
+msgid "unexpected operand"
+msgstr ""
+
+#: config/cris/cris.c:1152 config/cris/cris.c:1162
+msgid "unrecognized address"
+msgstr ""
+
+#: config/cris/cris.c:2435
+msgid "unrecognized supposed constant"
+msgstr ""
+
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
+msgid "unexpected side-effects in address"
+msgstr ""
+
+#. Can't possibly get a GOT-needing-fixup for a function-call,
+#. right?
+#: config/cris/cris.c:3711
+msgid "unidentifiable call op"
+msgstr ""
+
+#: config/cris/cris.c:3763
+#, c-format
+msgid "PIC register isn't set up"
+msgstr ""
+
+#. Unknown flag.
+#. Undocumented flag.
+#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
+#: config/sparc/sparc.c:8308
+#, c-format
+msgid "invalid operand output code"
+msgstr ""
+
+#: config/fr30/fr30.c:503
+#, c-format
+msgid "fr30_print_operand_address: unhandled address"
+msgstr ""
+
+#: config/fr30/fr30.c:527
+#, c-format
+msgid "fr30_print_operand: unrecognized %%p code"
+msgstr ""
+
+#: config/fr30/fr30.c:547
+#, c-format
+msgid "fr30_print_operand: unrecognized %%b code"
+msgstr ""
+
+#: config/fr30/fr30.c:568
+#, c-format
+msgid "fr30_print_operand: unrecognized %%B code"
+msgstr ""
+
+#: config/fr30/fr30.c:576
+#, c-format
+msgid "fr30_print_operand: invalid operand to %%A code"
+msgstr ""
+
+#: config/fr30/fr30.c:593
+#, c-format
+msgid "fr30_print_operand: invalid %%x code"
+msgstr ""
+
+#: config/fr30/fr30.c:600
+#, c-format
+msgid "fr30_print_operand: invalid %%F code"
+msgstr ""
+
+#: config/fr30/fr30.c:617
+#, c-format
+msgid "fr30_print_operand: unknown code"
+msgstr ""
+
+#: config/fr30/fr30.c:645 config/fr30/fr30.c:654 config/fr30/fr30.c:665
+#: config/fr30/fr30.c:678
+#, c-format
+msgid "fr30_print_operand: unhandled MEM"
+msgstr ""
+
+#: config/frv/frv.c:2532
+msgid "bad insn to frv_print_operand_address:"
+msgstr ""
+
+#: config/frv/frv.c:2543
+msgid "bad register to frv_print_operand_memory_reference_reg:"
+msgstr ""
+
+#: config/frv/frv.c:2582 config/frv/frv.c:2592 config/frv/frv.c:2601
+#: config/frv/frv.c:2622 config/frv/frv.c:2627
+msgid "bad insn to frv_print_operand_memory_reference:"
+msgstr ""
+
+#: config/frv/frv.c:2713
+#, c-format
+msgid "bad condition code"
+msgstr ""
+
+#: config/frv/frv.c:2789
+msgid "bad insn in frv_print_operand, bad const_double"
+msgstr ""
+
+#: config/frv/frv.c:2850
+msgid "bad insn to frv_print_operand, 'e' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2858
+msgid "bad insn to frv_print_operand, 'F' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2874
+msgid "bad insn to frv_print_operand, 'f' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2888
+msgid "bad insn to frv_print_operand, 'g' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2936
+msgid "bad insn to frv_print_operand, 'L' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2949
+msgid "bad insn to frv_print_operand, 'M/N' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2970
+msgid "bad insn to frv_print_operand, 'O' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2988
+msgid "bad insn to frv_print_operand, P modifier:"
+msgstr ""
+
+#: config/frv/frv.c:3008
+msgid "bad insn in frv_print_operand, z case"
+msgstr ""
+
+#: config/frv/frv.c:3039
+msgid "bad insn in frv_print_operand, 0 case"
+msgstr ""
+
+#: config/frv/frv.c:3044
+msgid "frv_print_operand: unknown code"
+msgstr ""
+
+#: config/frv/frv.c:4450
+msgid "bad output_move_single operand"
+msgstr ""
+
+#: config/frv/frv.c:4577
+msgid "bad output_move_double operand"
+msgstr ""
+
+#: config/frv/frv.c:4719
+msgid "bad output_condmove_single operand"
+msgstr ""
+
+#: config/i386/i386.c:13178
+#, c-format
+msgid "invalid UNSPEC as operand"
+msgstr ""
+
+#: config/i386/i386.c:13801
+#, c-format
+msgid "'%%&' used without any local dynamic TLS references"
+msgstr ""
+
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
+#, c-format
+msgid "invalid operand size for operand code '%c'"
+msgstr ""
+
+#: config/i386/i386.c:13962
+#, c-format
+msgid "invalid operand type used with operand code '%c'"
+msgstr ""
+
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
+#, c-format
+msgid "operand is not a condition code, invalid operand code 'D'"
+msgstr ""
+
+#: config/i386/i386.c:14109
+#, c-format
+msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
+msgstr ""
+
+#: config/i386/i386.c:14119
+#, c-format
+msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
+msgstr ""
+
+#: config/i386/i386.c:14137
+#, c-format
+msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
+msgstr ""
+
+#: config/i386/i386.c:14147
+#, c-format
+msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
+msgstr ""
+
+#: config/i386/i386.c:14162
+#, c-format
+msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
+msgstr ""
+
+#: config/i386/i386.c:14257
+#, c-format
+msgid "operand is not a condition code, invalid operand code 'Y'"
+msgstr ""
+
+#: config/i386/i386.c:14287
+#, c-format
+msgid "invalid operand code '%c'"
+msgstr ""
+
+#: config/i386/i386.c:14342
+#, c-format
+msgid "invalid constraints for operand"
+msgstr ""
+
+#: config/i386/i386.c:23356
+msgid "unknown insn mode"
+msgstr ""
+
+#: config/i386/i386-interix.h:78 config/i386/i386.opt:228
+msgid "Use native (MS) bitfield layout"
+msgstr ""
+
+#: config/i386/i386-interix.h:79
+msgid "Use gcc default bitfield layout"
+msgstr ""
+
+#. If the environment variable DJDIR is not defined, then DJGPP is not installed correctly and GCC will quickly become confused with the default prefix settings. Report the problem now so the user doesn't receive deceptive "file not found" error messages later.
+#. DJDIR is automatically defined by the DJGPP environment config file pointed to by the environment variable DJGPP. Examine DJGPP to try and figure out what's wrong.
+#: config/i386/xm-djgpp.h:61
+#, c-format
+msgid "environment variable DJGPP not defined"
+msgstr ""
+
+#: config/i386/xm-djgpp.h:63
+#, c-format
+msgid "environment variable DJGPP points to missing file '%s'"
+msgstr ""
+
+#: config/i386/xm-djgpp.h:66
+#, c-format
+msgid "environment variable DJGPP points to corrupt file '%s'"
+msgstr ""
+
+#: config/ia64/ia64.c:5177
+#, c-format
+msgid "invalid %%G mode"
+msgstr ""
+
+#: config/ia64/ia64.c:5347
+#, c-format
+msgid "ia64_print_operand: unknown code"
+msgstr ""
+
+#: config/ia64/ia64.c:10916
+msgid "invalid conversion from %<__fpreg%>"
+msgstr ""
+
+#: config/ia64/ia64.c:10919
+msgid "invalid conversion to %<__fpreg%>"
+msgstr ""
+
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
+msgid "invalid operation on %<__fpreg%>"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
+#: config/tilepro/tilepro.c:4696
+#, c-format
+msgid "invalid %%P operand"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
+#, c-format
+msgid "invalid %%p value"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3195
+#, c-format
+msgid "invalid use of %%d, %%x, or %%X"
+msgstr ""
+
+#: config/lm32/lm32.c:521
+#, c-format
+msgid "only 0.0 can be loaded as an immediate"
+msgstr ""
+
+#: config/lm32/lm32.c:591
+msgid "bad operand"
+msgstr ""
+
+#: config/lm32/lm32.c:603
+msgid "can't use non gp relative absolute address"
+msgstr ""
+
+#: config/lm32/lm32.c:607
+msgid "invalid addressing mode"
+msgstr ""
+
+#: config/m32r/m32r.c:2066
+#, c-format
+msgid "invalid operand to %%s code"
+msgstr ""
+
+#: config/m32r/m32r.c:2073
+#, c-format
+msgid "invalid operand to %%p code"
+msgstr ""
+
+#: config/m32r/m32r.c:2096
+#, c-format
+msgid "invalid operand to %%R code"
+msgstr ""
+
+#: config/m32r/m32r.c:2119
+#, c-format
+msgid "invalid operand to %%H/%%L code"
+msgstr ""
+
+#: config/m32r/m32r.c:2128
+msgid "bad insn for 'A'"
+msgstr ""
+
+#: config/m32r/m32r.c:2175
+#, c-format
+msgid "invalid operand to %%T/%%B code"
+msgstr ""
+
+#: config/m32r/m32r.c:2190
+#, c-format
+msgid "invalid operand to %%U code"
+msgstr ""
+
+#: config/m32r/m32r.c:2198
+#, c-format
+msgid "invalid operand to %%N code"
+msgstr ""
+
+#: config/m32r/m32r.c:2231
+msgid "pre-increment address is not a register"
+msgstr ""
+
+#: config/m32r/m32r.c:2238
+msgid "pre-decrement address is not a register"
+msgstr ""
+
+#: config/m32r/m32r.c:2245
+msgid "post-increment address is not a register"
+msgstr ""
+
+#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
+#: config/rs6000/rs6000.c:24534
+msgid "bad address"
+msgstr ""
+
+#: config/m32r/m32r.c:2340
+msgid "lo_sum not of register"
+msgstr ""
+
+#: config/mep/mep.c:3358
+#, c-format
+msgid "invalid %%L code"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1734
+#, c-format
+msgid "unknown punctuation '%c'"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1743
+#, c-format
+msgid "null pointer"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1778
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%C"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1807
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%N"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1827 config/microblaze/microblaze.c:1988
+msgid "insn contains an invalid address !"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1841 config/microblaze/microblaze.c:2028
+#: config/xtensa/xtensa.c:2437
+msgid "invalid address"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1940
+#, c-format
+msgid "letter %c was found & insn was not CONST_INT"
+msgstr ""
+
+#: config/mips/mips.c:7709 config/mips/mips.c:7730 config/mips/mips.c:7850
+#, c-format
+msgid "'%%%c' is not a valid operand prefix"
+msgstr ""
+
+#: config/mips/mips.c:7787 config/mips/mips.c:7794 config/mips/mips.c:7801
+#: config/mips/mips.c:7808 config/mips/mips.c:7868 config/mips/mips.c:7882
+#: config/mips/mips.c:7895 config/mips/mips.c:7904
+#, c-format
+msgid "invalid use of '%%%c'"
+msgstr ""
+
+#: config/mips/mips.c:8126
+msgid "mips_debugger_offset called with non stack/frame/arg pointer"
+msgstr ""
+
+#: config/mmix/mmix.c:1611 config/mmix/mmix.c:1741
+msgid "MMIX Internal: Expected a CONST_INT, not this"
+msgstr ""
+
+#: config/mmix/mmix.c:1690
+msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
+msgstr ""
+
+#: config/mmix/mmix.c:1709
+msgid "MMIX Internal: Expected a register, not this"
+msgstr ""
+
+#: config/mmix/mmix.c:1719
+msgid "MMIX Internal: Expected a constant, not this"
+msgstr ""
+
+#. We need the original here.
+#: config/mmix/mmix.c:1803
+msgid "MMIX Internal: Cannot decode this operand"
+msgstr ""
+
+#: config/mmix/mmix.c:1860
+msgid "MMIX Internal: This is not a recognized address"
+msgstr ""
+
+#: config/mmix/mmix.c:2735
+msgid "MMIX Internal: Trying to output invalidly reversed condition:"
+msgstr ""
+
+#: config/mmix/mmix.c:2742
+msgid "MMIX Internal: What's the CC of this?"
+msgstr ""
+
+#: config/mmix/mmix.c:2746
+msgid "MMIX Internal: What is the CC of this?"
+msgstr ""
+
+#: config/mmix/mmix.c:2810
+msgid "MMIX Internal: This is not a constant:"
+msgstr ""
+
+#: config/picochip/picochip.c:2665
+msgid "picochip_print_memory_address - Operand isn't memory based"
+msgstr ""
+
+#: config/picochip/picochip.c:2924
+msgid "Unknown mode in print_operand (CONST_DOUBLE) :"
+msgstr ""
+
+#: config/picochip/picochip.c:2970 config/picochip/picochip.c:3002
+msgid "Bad address, not (reg+disp):"
+msgstr ""
+
+#: config/picochip/picochip.c:3016
+msgid "Bad address, not register:"
+msgstr ""
+
+#: config/rl78/rl78.c:1204 config/rl78/rl78.c:1243
+#, c-format
+msgid "q/Q modifiers invalid for symbol references"
+msgstr ""
+
+#: config/rs6000/host-darwin.c:95
+#, c-format
+msgid "Out of stack space.\n"
+msgstr ""
+
+#: config/rs6000/host-darwin.c:116
+#, c-format
+msgid "Try running '%s' in the shell to raise its limit.\n"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2758
+msgid "-mvsx requires hardware floating point"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2763
+msgid "-mvsx and -mpaired are incompatible"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2768
+msgid "-mvsx used with little endian code"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2770
+msgid "-mvsx needs indexed addressing"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2774
+msgid "-mvsx and -mno-altivec are incompatible"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2776
+msgid "-mno-altivec disables vsx"
+msgstr ""
+
+#: config/rs6000/rs6000.c:7324
+msgid "bad move"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14765
+#, c-format
+msgid "invalid %%c value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14793
+#, c-format
+msgid "invalid %%f value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14802
+#, c-format
+msgid "invalid %%F value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14811
+#, c-format
+msgid "invalid %%G value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14846
+#, c-format
+msgid "invalid %%j code"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14856
+#, c-format
+msgid "invalid %%J code"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14866
+#, c-format
+msgid "invalid %%k value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
+#, c-format
+msgid "invalid %%K value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14945
+#, c-format
+msgid "invalid %%O value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14992
+#, c-format
+msgid "invalid %%q value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:15036
+#, c-format
+msgid "invalid %%S value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:15076
+#, c-format
+msgid "invalid %%T value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:15086
+#, c-format
+msgid "invalid %%u value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
+#, c-format
+msgid "invalid %%v value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
+#, c-format
+msgid "invalid %%x value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:15323
+#, c-format
+msgid "invalid %%y value, try using the 'Z' constraint"
+msgstr ""
+
+#: config/rs6000/rs6000.c:26944
+msgid "AltiVec argument passed to unprototyped function"
+msgstr ""
+
+#: config/s390/s390.c:5140
+#, c-format
+msgid "symbolic memory references are only supported on z10 or later"
+msgstr ""
+
+#: config/s390/s390.c:5151
+#, c-format
+msgid "cannot decompose address"
+msgstr ""
+
+#: config/s390/s390.c:5210
+#, c-format
+msgid "invalid comparison operator for 'E' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5231
+#, c-format
+msgid "invalid reference for 'J' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5245
+#, c-format
+msgid "memory reference expected for 'O' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5256
+#, c-format
+msgid "invalid address for 'O' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5274
+#, c-format
+msgid "memory reference expected for 'R' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5285
+#, c-format
+msgid "invalid address for 'R' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5303
+#, c-format
+msgid "memory reference expected for 'S' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5313
+#, c-format
+msgid "invalid address for 'S' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5333
+#, c-format
+msgid "register or memory expression expected for 'N' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5343
+#, c-format
+msgid "register or memory expression expected for 'M' output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5408
+#, c-format
+msgid "invalid constant - try using an output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5411
+#, c-format
+msgid "invalid constant for output modifier '%c'"
+msgstr ""
+
+#: config/s390/s390.c:5418
+#, c-format
+msgid "invalid expression - try using an output modifier"
+msgstr ""
+
+#: config/s390/s390.c:5421
+#, c-format
+msgid "invalid expression for output modifier '%c'"
+msgstr ""
+
+#: config/score/score.c:1344
+#, c-format
+msgid "invalid operand for code: '%c'"
+msgstr ""
+
+#: config/sh/sh.c:1031
+#, c-format
+msgid "invalid operand to %%R"
+msgstr ""
+
+#: config/sh/sh.c:1058
+#, c-format
+msgid "invalid operand to %%S"
+msgstr ""
+
+#: config/sh/sh.c:9154
+msgid "created and used with different architectures / ABIs"
+msgstr ""
+
+#: config/sh/sh.c:9156
+msgid "created and used with different ABIs"
+msgstr ""
+
+#: config/sh/sh.c:9158
+msgid "created and used with different endianness"
+msgstr ""
+
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
+#, c-format
+msgid "invalid %%Y operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8208
+#, c-format
+msgid "invalid %%A operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8218
+#, c-format
+msgid "invalid %%B operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
+#, c-format
+msgid "invalid %%C operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
+#, c-format
+msgid "invalid %%D operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8280
+#, c-format
+msgid "invalid %%f operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8294
+#, c-format
+msgid "invalid %%s operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8348
+#, c-format
+msgid "long long constant not a valid immediate operand"
+msgstr ""
+
+#: config/sparc/sparc.c:8351
+#, c-format
+msgid "floating point constant not a valid immediate operand"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1722 config/stormy16/stormy16.c:1793
+#, c-format
+msgid "'B' operand is not constant"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1749
+#, c-format
+msgid "'B' operand has multiple bits set"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1775
+#, c-format
+msgid "'o' operand is not constant"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1807
+#, c-format
+msgid "xstormy16_print_operand: unknown code"
+msgstr ""
+
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
+#, c-format
+msgid "invalid %%c operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:4950
+#, c-format
+msgid "invalid %%d operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5033
+#, c-format
+msgid "invalid %%H specifier"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
+#, c-format
+msgid "invalid %%h operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
+#, c-format
+msgid "invalid %%I operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
+#, c-format
+msgid "invalid %%i operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
+#, c-format
+msgid "invalid %%j operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5149
+#, c-format
+msgid "invalid %%%c operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
+#, c-format
+msgid "invalid %%N operand"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5208
+#, c-format
+msgid "invalid operand for 'r' specifier"
+msgstr ""
+
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
+#, c-format
+msgid "unable to print out operand yet; code == %d (%c)"
+msgstr ""
+
+#: config/tilepro/tilepro.c:4549
+#, c-format
+msgid "invalid %%H operand"
+msgstr ""
+
+#: config/tilepro/tilepro.c:4653
+#, c-format
+msgid "invalid %%L operand"
+msgstr ""
+
+#: config/tilepro/tilepro.c:4713
+#, c-format
+msgid "invalid %%M operand"
+msgstr ""
+
+#: config/tilepro/tilepro.c:4756
+#, c-format
+msgid "invalid %%t operand"
+msgstr ""
+
+#: config/tilepro/tilepro.c:4763
+#, c-format
+msgid "invalid %%t operand '"
+msgstr ""
+
+#: config/tilepro/tilepro.c:4784
+#, c-format
+msgid "invalid %%r operand"
+msgstr ""
+
+#: config/v850/v850.c:260
+msgid "const_double_split got a bad insn:"
+msgstr ""
+
+#: config/v850/v850.c:843
+msgid "output_move_single:"
+msgstr ""
+
+#: config/vax/vax.c:452
+#, c-format
+msgid "symbol used with both base and indexed registers"
+msgstr ""
+
+#: config/vax/vax.c:461
+#, c-format
+msgid "symbol with offset used in PIC mode"
+msgstr ""
+
+#: config/vax/vax.c:549
+#, c-format
+msgid "symbol used as immediate operand"
+msgstr ""
+
+#: config/vax/vax.c:1572
+msgid "illegal operand detected"
+msgstr ""
+
+#: config/xtensa/xtensa.c:760 config/xtensa/xtensa.c:792
+#: config/xtensa/xtensa.c:801
+msgid "bad test"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2294
+#, c-format
+msgid "invalid %%D value"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2331
+msgid "invalid mask"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2364
+#, c-format
+msgid "invalid %%d value"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2385 config/xtensa/xtensa.c:2395
+#, c-format
+msgid "invalid %%t/%%b value"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2462
+msgid "no register in address"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2470
+msgid "address offset not a constant"
+msgstr ""
+
+#: cp/call.c:8299
+msgid "candidate 1:"
+msgstr ""
+
+#: cp/call.c:8300
+msgid "candidate 2:"
+msgstr ""
+
+#: cp/cxx-pretty-print.c:172 objc/objc-act.c:6176
+msgid "<unnamed>"
+msgstr ""
+
+#: cp/cxx-pretty-print.c:2147
+msgid "template-parameter-"
+msgstr ""
+
+#: cp/decl2.c:727
+msgid "candidates are: %+#D"
+msgstr ""
+
+#: cp/decl2.c:729 cp/pt.c:1752
+#, gcc-internal-format
+msgid "candidate is: %+#D"
+msgstr ""
+
+#: cp/error.c:303
+msgid "<missing>"
+msgstr ""
+
+#: cp/error.c:393
+msgid "<brace-enclosed initializer list>"
+msgstr ""
+
+#: cp/error.c:395
+msgid "<unresolved overloaded function type>"
+msgstr ""
+
+#: cp/error.c:555
+msgid "<type error>"
+msgstr ""
+
+#: cp/error.c:658
+#, c-format
+msgid "<anonymous %s>"
+msgstr ""
+
+#. A lambda's "type" is essentially its signature.
+#: cp/error.c:663
+msgid "<lambda"
+msgstr ""
+
+#: cp/error.c:793
+msgid "<typeprefixerror>"
+msgstr ""
+
+#: cp/error.c:905
+#, c-format
+msgid "(static initializers for %s)"
+msgstr ""
+
+#: cp/error.c:907
+#, c-format
+msgid "(static destructors for %s)"
+msgstr ""
+
+#: cp/error.c:1006
+msgid "vtable for "
+msgstr ""
+
+#: cp/error.c:1018
+msgid "<return value> "
+msgstr ""
+
+#: cp/error.c:1031
+msgid "{anonymous}"
+msgstr ""
+
+#: cp/error.c:1128
+msgid "<template arguments error>"
+msgstr ""
+
+#: cp/error.c:1149
+msgid "<enumerator>"
+msgstr ""
+
+#: cp/error.c:1189
+msgid "<declaration error>"
+msgstr ""
+
+#: cp/error.c:1432 cp/error.c:2804
+msgid "with"
+msgstr ""
+
+#: cp/error.c:1630 cp/error.c:1650
+msgid "<template parameter error>"
+msgstr ""
+
+#: cp/error.c:1776
+msgid "<statement>"
+msgstr ""
+
+#. While waiting for caret diagnostics, avoid printing
+#. __cxa_allocate_exception, __cxa_throw, and the like.
+#: cp/error.c:1819
+msgid "<throw-expression>"
+msgstr ""
+
+#: cp/error.c:2336
+msgid "<unparsed>"
+msgstr ""
+
+#: cp/error.c:2486
+msgid "<expression error>"
+msgstr ""
+
+#: cp/error.c:2500
+msgid "<unknown operator>"
+msgstr ""
+
+#: cp/error.c:2756
+msgid "{unknown}"
+msgstr ""
+
+#: cp/error.c:2871
+msgid "At global scope:"
+msgstr ""
+
+#: cp/error.c:2977
+#, c-format
+msgid "In static member function %qs"
+msgstr ""
+
+#: cp/error.c:2979
+#, c-format
+msgid "In copy constructor %qs"
+msgstr ""
+
+#: cp/error.c:2981
+#, c-format
+msgid "In constructor %qs"
+msgstr ""
+
+#: cp/error.c:2983
+#, c-format
+msgid "In destructor %qs"
+msgstr ""
+
+#: cp/error.c:2985
+msgid "In lambda function"
+msgstr ""
+
+#: cp/error.c:3005
+#, c-format
+msgid "%s: In substitution of %qS:\n"
+msgstr ""
+
+#: cp/error.c:3006
+msgid "%s: In instantiation of %q#D:\n"
+msgstr ""
+
+#: cp/error.c:3029
+#, c-format
+msgid "%s:%d:%d: "
+msgstr ""
+
+#: cp/error.c:3032
+#, c-format
+msgid "%s:%d: "
+msgstr ""
+
+#: cp/error.c:3040
+#, c-format
+msgid "recursively required by substitution of %qS\n"
+msgstr ""
+
+#: cp/error.c:3041
+#, c-format
+msgid "required by substitution of %qS\n"
+msgstr ""
+
+#: cp/error.c:3046
+msgid "recursively required from %q#D\n"
+msgstr ""
+
+#: cp/error.c:3047
+msgid "required from %q#D\n"
+msgstr ""
+
+#: cp/error.c:3054
+msgid "recursively required from here"
+msgstr ""
+
+#: cp/error.c:3055
+msgid "required from here"
+msgstr ""
+
+#: cp/error.c:3097
+#, c-format
+msgid "%s:%d:%d: [ skipping %d instantiation contexts ]\n"
+msgstr ""
+
+#: cp/error.c:3101
+#, c-format
+msgid "%s:%d: [ skipping %d instantiation contexts ]\n"
+msgstr ""
+
+#: cp/error.c:3163
+#, c-format
+msgid "%s:%d:%d: in constexpr expansion of %qs"
+msgstr ""
+
+#: cp/error.c:3167
+#, c-format
+msgid "%s:%d: in constexpr expansion of %qs"
+msgstr ""
+
+#: cp/pt.c:1756
+msgid "candidates are:"
+msgstr ""
+
+#: cp/pt.c:17843 cp/call.c:3289
+#, gcc-internal-format
+msgid "candidate is:"
+msgid_plural "candidates are:"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: cp/rtti.c:537
+msgid "target is not pointer or reference to class"
+msgstr ""
+
+#: cp/rtti.c:542
+msgid "target is not pointer or reference to complete type"
+msgstr ""
+
+#: cp/rtti.c:548
+msgid "target is not pointer or reference"
+msgstr ""
+
+#: cp/rtti.c:564
+msgid "source is not a pointer"
+msgstr ""
+
+#: cp/rtti.c:569
+msgid "source is not a pointer to class"
+msgstr ""
+
+#: cp/rtti.c:574
+msgid "source is a pointer to incomplete type"
+msgstr ""
+
+#: cp/rtti.c:589
+msgid "source is not of class type"
+msgstr ""
+
+#: cp/rtti.c:594
+msgid "source is of incomplete class type"
+msgstr ""
+
+#: cp/rtti.c:607
+msgid "conversion casts away constness"
+msgstr ""
+
+#: cp/rtti.c:765
+msgid "source type is not polymorphic"
+msgstr ""
+
+#: cp/typeck.c:5116 c-typeck.c:3583
+#, gcc-internal-format
+msgid "wrong type argument to unary minus"
+msgstr ""
+
+#: cp/typeck.c:5117 c-typeck.c:3570
+#, gcc-internal-format
+msgid "wrong type argument to unary plus"
+msgstr ""
+
+#: cp/typeck.c:5140 c-typeck.c:3609
+#, gcc-internal-format
+msgid "wrong type argument to bit-complement"
+msgstr ""
+
+#: cp/typeck.c:5147 c-typeck.c:3617
+#, gcc-internal-format
+msgid "wrong type argument to abs"
+msgstr ""
+
+#: cp/typeck.c:5155 c-typeck.c:3629
+#, gcc-internal-format
+msgid "wrong type argument to conjugation"
+msgstr ""
+
+#: cp/typeck.c:5166
+msgid "in argument to unary !"
+msgstr ""
+
+#: cp/typeck.c:5215
+msgid "no pre-increment operator for type"
+msgstr ""
+
+#: cp/typeck.c:5217
+msgid "no post-increment operator for type"
+msgstr ""
+
+#: cp/typeck.c:5219
+msgid "no pre-decrement operator for type"
+msgstr ""
+
+#: cp/typeck.c:5221
+msgid "no post-decrement operator for type"
+msgstr ""
+
+#: fortran/arith.c:96
+msgid "Arithmetic OK at %L"
+msgstr ""
+
+#: fortran/arith.c:99
+msgid "Arithmetic overflow at %L"
+msgstr ""
+
+#: fortran/arith.c:102
+msgid "Arithmetic underflow at %L"
+msgstr ""
+
+#: fortran/arith.c:105
+msgid "Arithmetic NaN at %L"
+msgstr ""
+
+#: fortran/arith.c:108
+msgid "Division by zero at %L"
+msgstr ""
+
+#: fortran/arith.c:111
+msgid "Array operands are incommensurate at %L"
+msgstr ""
+
+#: fortran/arith.c:115
+msgid "Integer outside symmetric range implied by Standard Fortran at %L"
+msgstr ""
+
+#: fortran/arith.c:1346
+msgid "elemental binary operation"
+msgstr ""
+
+#: fortran/check.c:1638 fortran/check.c:2554 fortran/check.c:2608
+#, c-format
+msgid "arguments '%s' and '%s' for intrinsic %s"
+msgstr ""
+
+#: fortran/check.c:2360
+#, c-format
+msgid "arguments 'a%d' and 'a%d' for intrinsic '%s'"
+msgstr ""
+
+#: fortran/check.c:2873 fortran/intrinsic.c:3932
+#, c-format
+msgid "arguments '%s' and '%s' for intrinsic '%s'"
+msgstr ""
+
+#: fortran/error.c:738 fortran/error.c:792 fortran/error.c:827
+#: fortran/error.c:902
+msgid "Warning:"
+msgstr ""
+
+#: fortran/error.c:794 fortran/error.c:882 fortran/error.c:932
+msgid "Error:"
+msgstr ""
+
+#: fortran/error.c:956
+msgid "Fatal Error:"
+msgstr ""
+
+#: fortran/expr.c:620
+#, c-format
+msgid "Constant expression required at %C"
+msgstr ""
+
+#: fortran/expr.c:623
+#, c-format
+msgid "Integer expression required at %C"
+msgstr ""
+
+#: fortran/expr.c:628
+#, c-format
+msgid "Integer value too large in expression at %C"
+msgstr ""
+
+#: fortran/expr.c:3166
+msgid "array assignment"
+msgstr ""
+
+#: fortran/gfortranspec.c:306
+#, c-format
+msgid ""
+"GNU Fortran comes with NO WARRANTY, to the extent permitted by law.\n"
+"You may redistribute copies of GNU Fortran\n"
+"under the terms of the GNU General Public License.\n"
+"For more information about these matters, see the file named COPYING\n"
+"\n"
+msgstr ""
+
+#: fortran/gfortranspec.c:462
+#, c-format
+msgid "Driving:"
+msgstr ""
+
+#: fortran/interface.c:2478 fortran/intrinsic.c:3641
+msgid "actual argument to INTENT = OUT/INOUT"
+msgstr ""
+
+#: fortran/io.c:549
+msgid "Positive width required"
+msgstr ""
+
+#: fortran/io.c:550
+msgid "Nonnegative width required"
+msgstr ""
+
+#: fortran/io.c:551
+msgid "Unexpected element '%c' in format string at %L"
+msgstr ""
+
+#: fortran/io.c:553
+msgid "Unexpected end of format string"
+msgstr ""
+
+#: fortran/io.c:554
+msgid "Zero width in format descriptor"
+msgstr ""
+
+#: fortran/io.c:574
+msgid "Missing leading left parenthesis"
+msgstr ""
+
+#: fortran/io.c:603
+msgid "Left parenthesis required after '*'"
+msgstr ""
+
+#: fortran/io.c:634
+msgid "Expected P edit descriptor"
+msgstr ""
+
+#. P requires a prior number.
+#: fortran/io.c:642
+msgid "P descriptor requires leading scale factor"
+msgstr ""
+
+#: fortran/io.c:737 fortran/io.c:751
+msgid "Comma required after P descriptor"
+msgstr ""
+
+#: fortran/io.c:765
+msgid "Positive width required with T descriptor"
+msgstr ""
+
+#: fortran/io.c:844
+msgid "E specifier not allowed with g0 descriptor"
+msgstr ""
+
+#: fortran/io.c:914
+msgid "Positive exponent width required"
+msgstr ""
+
+#: fortran/io.c:944
+msgid "Period required in format specifier"
+msgstr ""
+
+#: fortran/io.c:1533
+#, c-format
+msgid "%s tag"
+msgstr ""
+
+#: fortran/io.c:2868
+msgid "internal unit in WRITE"
+msgstr ""
+
+#. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
+#. contexts. Thus, use an extended RESOLVE_TAG macro for that.
+#: fortran/io.c:4062
+#, c-format
+msgid "%s tag with INQUIRE"
+msgstr ""
+
+#: fortran/matchexp.c:28
+#, c-format
+msgid "Syntax error in expression at %C"
+msgstr ""
+
+#: fortran/module.c:1061
+msgid "Unexpected EOF"
+msgstr ""
+
+#: fortran/module.c:1146
+msgid "Integer overflow"
+msgstr ""
+
+#: fortran/module.c:1176
+msgid "Name too long"
+msgstr ""
+
+#: fortran/module.c:1278 fortran/module.c:1381
+msgid "Bad name"
+msgstr ""
+
+#: fortran/module.c:1405
+msgid "Expected name"
+msgstr ""
+
+#: fortran/module.c:1408
+msgid "Expected left parenthesis"
+msgstr ""
+
+#: fortran/module.c:1411
+msgid "Expected right parenthesis"
+msgstr ""
+
+#: fortran/module.c:1414
+msgid "Expected integer"
+msgstr ""
+
+#: fortran/module.c:1417 fortran/module.c:2332
+msgid "Expected string"
+msgstr ""
+
+#: fortran/module.c:1442
+msgid "find_enum(): Enum not found"
+msgstr ""
+
+#: fortran/module.c:2085
+msgid "Expected attribute bit name"
+msgstr ""
+
+#: fortran/module.c:2983
+msgid "Expected integer string"
+msgstr ""
+
+#: fortran/module.c:2987
+msgid "Error converting integer"
+msgstr ""
+
+#: fortran/module.c:3009
+msgid "Expected real string"
+msgstr ""
+
+#: fortran/module.c:3231
+msgid "Expected expression type"
+msgstr ""
+
+#: fortran/module.c:3285
+msgid "Bad operator"
+msgstr ""
+
+#: fortran/module.c:3374
+msgid "Bad type in constant expression"
+msgstr ""
+
+#: fortran/module.c:6102
+msgid "Unexpected end of module"
+msgstr ""
+
+#: fortran/parse.c:1227
+msgid "arithmetic IF"
+msgstr ""
+
+#: fortran/parse.c:1236
+msgid "attribute declaration"
+msgstr ""
+
+#: fortran/parse.c:1272
+msgid "data declaration"
+msgstr ""
+
+#: fortran/parse.c:1281
+msgid "derived type declaration"
+msgstr ""
+
+#: fortran/parse.c:1375
+msgid "block IF"
+msgstr ""
+
+#: fortran/parse.c:1384
+msgid "implied END DO"
+msgstr ""
+
+#: fortran/parse.c:1475 fortran/resolve.c:9395
+msgid "assignment"
+msgstr ""
+
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
+msgid "pointer assignment"
+msgstr ""
+
+#: fortran/parse.c:1496
+msgid "simple IF"
+msgstr ""
+
+#: fortran/resolve.c:533
+msgid "module procedure"
+msgstr ""
+
+#: fortran/resolve.c:534
+msgid "internal function"
+msgstr ""
+
+#: fortran/resolve.c:1973
+msgid "elemental procedure"
+msgstr ""
+
+#: fortran/resolve.c:3798
+#, c-format
+msgid "Invalid context for NULL() pointer at %%L"
+msgstr ""
+
+#: fortran/resolve.c:3814
+#, c-format
+msgid "Operand of unary numeric operator '%s' at %%L is %s"
+msgstr ""
+
+#: fortran/resolve.c:3830
+#, c-format
+msgid "Operands of binary numeric operator '%s' at %%L are %s/%s"
+msgstr ""
+
+#: fortran/resolve.c:3845
+#, c-format
+msgid "Operands of string concatenation operator at %%L are %s/%s"
+msgstr ""
+
+#: fortran/resolve.c:3864
+#, c-format
+msgid "Operands of logical operator '%s' at %%L are %s/%s"
+msgstr ""
+
+#: fortran/resolve.c:3878
+#, c-format
+msgid "Operand of .not. operator at %%L is %s"
+msgstr ""
+
+#: fortran/resolve.c:3892
+msgid "COMPLEX quantities cannot be compared at %L"
+msgstr ""
+
+#: fortran/resolve.c:3921
+#, c-format
+msgid "Logicals at %%L must be compared with %s instead of %s"
+msgstr ""
+
+#: fortran/resolve.c:3927
+#, c-format
+msgid "Operands of comparison operator '%s' at %%L are %s/%s"
+msgstr ""
+
+#: fortran/resolve.c:3935
+#, c-format
+msgid "Unknown operator '%s' at %%L"
+msgstr ""
+
+#: fortran/resolve.c:3937
+#, c-format
+msgid "Operand of user operator '%s' at %%L is %s"
+msgstr ""
+
+#: fortran/resolve.c:3941
+#, c-format
+msgid "Operands of user operator '%s' at %%L are %s/%s"
+msgstr ""
+
+#: fortran/resolve.c:4029
+#, c-format
+msgid "Inconsistent ranks for operator at %%L and %%L"
+msgstr ""
+
+#: fortran/resolve.c:6401
+msgid "Loop variable"
+msgstr ""
+
+#: fortran/resolve.c:6405
+msgid "iterator variable"
+msgstr ""
+
+#: fortran/resolve.c:6410
+msgid "Start expression in DO loop"
+msgstr ""
+
+#: fortran/resolve.c:6414
+msgid "End expression in DO loop"
+msgstr ""
+
+#: fortran/resolve.c:6418
+msgid "Step expression in DO loop"
+msgstr ""
+
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
+msgid "DEALLOCATE object"
+msgstr ""
+
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
+msgid "ALLOCATE object"
+msgstr ""
+
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
+msgid "STAT variable"
+msgstr ""
+
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
+msgid "ERRMSG variable"
+msgstr ""
+
+#: fortran/resolve.c:8312
+msgid "item in READ"
+msgstr ""
+
+#: fortran/resolve.c:8458
+msgid "ACQUIRED_LOCK variable"
+msgstr ""
+
+#: fortran/trans-array.c:1408
+#, c-format
+msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
+msgstr ""
+
+#: fortran/trans-array.c:5070
+msgid "Integer overflow when calculating the amount of memory to allocate"
+msgstr ""
+
+#: fortran/trans-decl.c:4791
+#, c-format
+msgid "Actual string length does not match the declared one for dummy argument '%s' (%ld/%ld)"
+msgstr ""
+
+#: fortran/trans-decl.c:4799
+#, c-format
+msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
+msgstr ""
+
+#: fortran/trans-expr.c:5964
+#, c-format
+msgid "Target of rank remapping is too small (%ld < %ld)"
+msgstr ""
+
+#: fortran/trans-intrinsic.c:895
+#, c-format
+msgid "Unequal character lengths (%ld/%ld) in %s"
+msgstr ""
+
+#: fortran/trans-intrinsic.c:6054
+#, c-format
+msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
+msgstr ""
+
+#: fortran/trans-intrinsic.c:6086
+msgid "Argument NCOPIES of REPEAT intrinsic is too large"
+msgstr ""
+
+#: fortran/trans-io.c:523
+msgid "Unit number in I/O statement too small"
+msgstr ""
+
+#: fortran/trans-io.c:532
+msgid "Unit number in I/O statement too large"
+msgstr ""
+
+#: fortran/trans-stmt.c:156
+msgid "Assigned label is not a target label"
+msgstr ""
+
+#: fortran/trans-stmt.c:793
+#, c-format
+msgid "Invalid image number %d in SYNC IMAGES"
+msgstr ""
+
+#: fortran/trans-stmt.c:1369 fortran/trans-stmt.c:1650
+msgid "Loop variable has been modified"
+msgstr ""
+
+#: fortran/trans-stmt.c:1509
+msgid "DO step value is zero"
+msgstr ""
+
+#: fortran/trans.c:48
+msgid "Array reference out of bounds"
+msgstr ""
+
+#: fortran/trans.c:49
+msgid "Incorrect function return value"
+msgstr ""
+
+#: fortran/trans.c:574
+msgid "Memory allocation failed"
+msgstr ""
+
+#: fortran/trans.c:650 fortran/trans.c:1161
+msgid "Allocation would exceed memory limit"
+msgstr ""
+
+#: fortran/trans.c:794
+#, c-format
+msgid "Attempting to allocate already allocated variable '%s'"
+msgstr ""
+
+#: fortran/trans.c:800
+msgid "Attempting to allocate already allocated variable"
+msgstr ""
+
+#: fortran/trans.c:909 fortran/trans.c:1053
+#, c-format
+msgid "Attempt to DEALLOCATE unallocated '%s'"
+msgstr ""
+
+#: go/go-backend.c:170
+msgid "lseek failed while reading export data"
+msgstr ""
+
+#: go/go-backend.c:177
+msgid "memory allocation failed while reading export data"
+msgstr ""
+
+#: go/go-backend.c:185
+msgid "read failed while reading export data"
+msgstr ""
+
+#: go/go-backend.c:191
+msgid "short read while reading export data"
+msgstr ""
+
+#: java/jcf-dump.c:1063
+#, c-format
+msgid "Not a valid Java .class file.\n"
+msgstr ""
+
+#: java/jcf-dump.c:1069
+#, c-format
+msgid "error while parsing constant pool\n"
+msgstr ""
+
+#: java/jcf-dump.c:1075 java/jcf-parse.c:1433
+#, gcc-internal-format, gfc-internal-format
+msgid "error in constant pool entry #%d\n"
+msgstr ""
+
+#: java/jcf-dump.c:1085
+#, c-format
+msgid "error while parsing fields\n"
+msgstr ""
+
+#: java/jcf-dump.c:1091
+#, c-format
+msgid "error while parsing methods\n"
+msgstr ""
+
+#: java/jcf-dump.c:1097
+#, c-format
+msgid "error while parsing final attributes\n"
+msgstr ""
+
+#: java/jcf-dump.c:1134
+#, c-format
+msgid "Try 'jcf-dump --help' for more information.\n"
+msgstr ""
+
+#: java/jcf-dump.c:1141
+#, c-format
+msgid ""
+"Usage: jcf-dump [OPTION]... CLASS...\n"
+"\n"
+msgstr ""
+
+#: java/jcf-dump.c:1142
+#, c-format
+msgid ""
+"Display contents of a class file in readable form.\n"
+"\n"
+msgstr ""
+
+#: java/jcf-dump.c:1143
+#, c-format
+msgid " -c Disassemble method bodies\n"
+msgstr ""
+
+#: java/jcf-dump.c:1144
+#, c-format
+msgid " --javap Generate output in 'javap' format\n"
+msgstr ""
+
+#: java/jcf-dump.c:1146
+#, c-format
+msgid " --classpath PATH Set path to find .class files\n"
+msgstr ""
+
+#: java/jcf-dump.c:1147
+#, c-format
+msgid " -IDIR Append directory to class path\n"
+msgstr ""
+
+#: java/jcf-dump.c:1148
+#, c-format
+msgid " --bootclasspath PATH Override built-in class path\n"
+msgstr ""
+
+#: java/jcf-dump.c:1149
+#, c-format
+msgid " --extdirs PATH Set extensions directory path\n"
+msgstr ""
+
+#: java/jcf-dump.c:1150
+#, c-format
+msgid " -o FILE Set output file name\n"
+msgstr ""
+
+#: java/jcf-dump.c:1152
+#, c-format
+msgid " --help Print this help, then exit\n"
+msgstr ""
+
+#: java/jcf-dump.c:1153
+#, c-format
+msgid " --version Print version number, then exit\n"
+msgstr ""
+
+#: java/jcf-dump.c:1154
+#, c-format
+msgid " -v, --verbose Print extra information while running\n"
+msgstr ""
+
+#: java/jcf-dump.c:1156
+#, c-format
+msgid ""
+"For bug reporting instructions, please see:\n"
+"%s.\n"
+msgstr ""
+
+#: java/jcf-dump.c:1194 java/jcf-dump.c:1262
+#, c-format
+msgid "jcf-dump: no classes specified\n"
+msgstr ""
+
+#: java/jcf-dump.c:1282
+#, c-format
+msgid "Cannot open '%s' for output.\n"
+msgstr ""
+
+#: java/jcf-dump.c:1327
+#, c-format
+msgid "bad format of .zip/.jar archive\n"
+msgstr ""
+
+#: java/jcf-dump.c:1445
+#, c-format
+msgid "Bad byte codes.\n"
+msgstr ""
+
+#: java/jvgenmain.c:48
+#, c-format
+msgid "Usage: %s [OPTIONS]... CLASSNAMEmain [OUTFILE]\n"
+msgstr ""
+
+#: java/jvgenmain.c:121
+#, c-format
+msgid "%s: Cannot open output file: %s\n"
+msgstr ""
+
+#: java/jvgenmain.c:167
+#, c-format
+msgid "%s: Failed to close output file %s\n"
+msgstr ""
+
+#: gcc.c:654
+msgid "-fuse-linker-plugin is not supported in this configuration"
+msgstr ""
+
+#: gcc.c:778 ada/gcc-interface/lang-specs.h:33 java/jvspec.c:80
+msgid "-pg and -fomit-frame-pointer are incompatible"
+msgstr ""
+
+#: gcc.c:945
+msgid "GNU C no longer supports -traditional without -E"
+msgstr ""
+
+#: gcc.c:954
+msgid "-E or -x required when input is from standard input"
+msgstr ""
+
+#: config/cris/cris.h:192
+msgid "do not specify both -march=... and -mcpu=..."
+msgstr ""
+
+#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
+#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
+msgid "consider using '-pg' instead of '-p' with gprof(1)"
+msgstr ""
+
+#: ada/gcc-interface/lang-specs.h:34
+msgid "-c or -S required for Ada"
+msgstr ""
+
+#: ada/gcc-interface/lang-specs.h:52
+msgid "-c required for gnat2why"
+msgstr ""
+
+#: config/rx/rx.h:57
+msgid "-mas100-syntax is incompatible with -gdwarf"
+msgstr ""
+
+#: config/rx/rx.h:58
+msgid "rx200 cpu does not have FPU hardware"
+msgstr ""
+
+#: config/sparc/linux64.h:158 config/sparc/linux64.h:165
+#: config/sparc/netbsd-elf.h:109 config/sparc/netbsd-elf.h:118
+#: config/sparc/sol2.h:201 config/sparc/sol2.h:207
+msgid "may not use both -m32 and -m64"
+msgstr ""
+
+#: config/pa/pa64-hpux.h:30 config/pa/pa64-hpux.h:33 config/pa/pa64-hpux.h:42
+#: config/pa/pa64-hpux.h:45 config/pa/pa-hpux10.h:89 config/pa/pa-hpux10.h:92
+#: config/pa/pa-hpux10.h:100 config/pa/pa-hpux10.h:103
+#: config/pa/pa-hpux11.h:108 config/pa/pa-hpux11.h:111
+msgid "warning: consider linking with '-static' as system libraries with"
+msgstr ""
+
+#: config/pa/pa64-hpux.h:31 config/pa/pa64-hpux.h:34 config/pa/pa64-hpux.h:43
+#: config/pa/pa64-hpux.h:46 config/pa/pa-hpux10.h:90 config/pa/pa-hpux10.h:93
+#: config/pa/pa-hpux10.h:101 config/pa/pa-hpux10.h:104
+#: config/pa/pa-hpux11.h:109 config/pa/pa-hpux11.h:112
+msgid " profiling support are only provided in archive format"
+msgstr ""
+
+#: config/lynx.h:70
+msgid "cannot use mthreads and mlegacy-threads together"
+msgstr ""
+
+#: config/lynx.h:95
+msgid "cannot use mshared and static together"
+msgstr ""
+
+#: config/i386/mingw-w64.h:83 config/i386/mingw32.h:116
+#: config/i386/cygwin.h:114
+msgid "shared and mdll are not compatible"
+msgstr ""
+
+#: config/s390/tpf.h:116
+msgid "static is not supported on TPF-OS"
+msgstr ""
+
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
+#: config/mips/mips.h:1169
+msgid "may not use both -EB and -EL"
+msgstr ""
+
+#: config/mips/r3900.h:38
+msgid "-mhard-float not supported"
+msgstr ""
+
+#: config/mips/r3900.h:40
+msgid "-msingle-float and -msoft-float cannot both be specified"
+msgstr ""
+
+#: config/sol2-bi.h:108 config/sol2-bi.h:113
+msgid "does not support multilib"
+msgstr ""
+
+#: config/arm/arm.h:157
+msgid "-mfloat-abi=soft and -mfloat-abi=hard may not be used together"
+msgstr ""
+
+#: config/arm/arm.h:159
+msgid "-mbig-endian and -mlittle-endian may not be used together"
+msgstr ""
+
+#: config/bfin/elf.h:55
+msgid "no processor type specified for linking"
+msgstr ""
+
+#: config/mcore/mcore.h:54
+msgid "the m210 does not have little endian support"
+msgstr ""
+
+#: config/vxworks.h:71
+msgid "-Xbind-now and -Xbind-lazy are incompatible"
+msgstr ""
+
+#: config/darwin.h:244
+msgid "-current_version only allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:246
+msgid "-install_name only allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:251
+msgid "-bundle not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:252
+msgid "-bundle_loader not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:253
+msgid "-client_name not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:258
+msgid "-force_flat_namespace not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:260
+msgid "-keep_private_externs not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:261
+msgid "-private_bundle not allowed with -dynamiclib"
+msgstr ""
+
+#: objc/lang-specs.h:31 objc/lang-specs.h:42
+msgid "GNU Objective C no longer supports traditional compilation"
+msgstr ""
+
+#: objc/lang-specs.h:56
+msgid "objc-cpp-output is deprecated; please use objective-c-cpp-output instead"
+msgstr ""
+
+#: config/vax/netbsd-elf.h:51
+msgid "the -shared option is not currently supported for VAX ELF"
+msgstr ""
+
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr ""
+
+#: java/lang-specs.h:33
+msgid "-fjni and -femit-class-files are incompatible"
+msgstr ""
+
+#: java/lang-specs.h:34
+msgid "-fjni and -femit-class-file are incompatible"
+msgstr ""
+
+#: java/lang-specs.h:35 java/lang-specs.h:36
+msgid "-femit-class-file should used along with -fsyntax-only"
+msgstr ""
+
+#: config/sh/sh.h:430 config/sh/sh.h:433
+msgid "SH2a does not support little-endian"
+msgstr ""
+
+#: config/rs6000/darwin.h:96
+msgid " conflicting code gen style switches are used"
+msgstr ""
+
+#: objcp/lang-specs.h:58
+msgid "objc++-cpp-output is deprecated; please use objective-c++-cpp-output instead"
+msgstr ""
+
+#: config/vax/vax.h:50 config/vax/vax.h:51
+msgid "profiling not supported with -mg"
+msgstr ""
+
+#: java/lang.opt:122
+msgid "Warn if deprecated empty statements are found"
+msgstr ""
+
+#: java/lang.opt:126
+msgid "Warn if .class files are out of date"
+msgstr ""
+
+#: java/lang.opt:130
+msgid "Warn if modifiers are specified when not necessary"
+msgstr ""
+
+#: java/lang.opt:150
+msgid "--CLASSPATH\tDeprecated; use --classpath instead"
+msgstr ""
+
+#: java/lang.opt:157
+msgid "Permit the use of the assert keyword"
+msgstr ""
+
+#: java/lang.opt:179
+msgid "--bootclasspath=<path>\tReplace system path"
+msgstr ""
+
+#: java/lang.opt:183
+msgid "Generate checks for references to NULL"
+msgstr ""
+
+#: java/lang.opt:187
+msgid "--classpath=<path>\tSet class path"
+msgstr ""
+
+#: java/lang.opt:194
+msgid "Output a class file"
+msgstr ""
+
+#: java/lang.opt:198
+msgid "Alias for -femit-class-file"
+msgstr ""
+
+#: java/lang.opt:202
+msgid "--encoding=<encoding>\tChoose input encoding (defaults from your locale)"
+msgstr ""
+
+#: java/lang.opt:206
+msgid "--extdirs=<path>\tSet the extension directory path"
+msgstr ""
+
+#: java/lang.opt:216
+msgid "Input file is a file with a list of filenames to compile"
+msgstr ""
+
+#: java/lang.opt:223
+msgid "Always check for non gcj generated classes archives"
+msgstr ""
+
+#: java/lang.opt:227
+msgid "Assume the runtime uses a hash table to map an object to its synchronization structure"
+msgstr ""
+
+#: java/lang.opt:231
+msgid "Generate instances of Class at runtime"
+msgstr ""
+
+#: java/lang.opt:235
+msgid "Use offset tables for virtual method calls"
+msgstr ""
+
+#: java/lang.opt:242
+msgid "Assume native functions are implemented using JNI"
+msgstr ""
+
+#: java/lang.opt:246
+msgid "Enable optimization of static class initialization code"
+msgstr ""
+
+#: java/lang.opt:253
+msgid "Reduce the amount of reflection meta-data generated"
+msgstr ""
+
+#: java/lang.opt:257
+msgid "Enable assignability checks for stores into object arrays"
+msgstr ""
+
+#: java/lang.opt:261
+msgid "Generate code for the Boehm GC"
+msgstr ""
+
+#: java/lang.opt:265
+msgid "Call a library routine to do integer divisions"
+msgstr ""
+
+#: java/lang.opt:269
+msgid "Generate code for built-in atomic operations"
+msgstr ""
+
+#: java/lang.opt:273
+msgid "Generated should be loaded by bootstrap loader"
+msgstr ""
+
+#: java/lang.opt:277
+msgid "Set the source language version"
+msgstr ""
+
+#: java/lang.opt:281
+msgid "Set the target VM version"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:51
+msgid "-I <dir>.\tAdd <dir> to the end of the main source path"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:55 c-family/c.opt:272
+msgid "Enable most warning messages"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:59
+msgid "Synonym of -gnatk8"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:63
+msgid "Do not look for source files in standard path"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:67
+msgid "Do not look for object files in standard path"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:71
+msgid "Select the runtime"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:75
+msgid "Catch typos"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:79
+msgid "Set name of output ALI file (internal switch)"
+msgstr ""
+
+#: ada/gcc-interface/lang.opt:83
+msgid "-gnat<options>\tSpecify options to GNAT"
+msgstr ""
+
+#: fortran/lang.opt:147
+msgid "-J<directory>\tPut MODULE files in 'directory'"
+msgstr ""
+
+#: fortran/lang.opt:199
+msgid "Warn about possible aliasing of dummy arguments"
+msgstr ""
+
+#: fortran/lang.opt:203
+msgid "Warn about alignment of COMMON blocks"
+msgstr ""
+
+#: fortran/lang.opt:207
+msgid "Warn about missing ampersand in continued character constants"
+msgstr ""
+
+#: fortran/lang.opt:211
+msgid "Warn about creation of array temporaries"
+msgstr ""
+
+#: fortran/lang.opt:215
+msgid "Warn about truncated character expressions"
+msgstr ""
+
+#: fortran/lang.opt:223
+msgid "Warn about most implicit conversions"
+msgstr ""
+
+#: fortran/lang.opt:227
+msgid "Warn about function call elimination"
+msgstr ""
+
+#: fortran/lang.opt:231
+msgid "Warn about calls with implicit interface"
+msgstr ""
+
+#: fortran/lang.opt:235
+msgid "Warn about called procedures not explicitly declared"
+msgstr ""
+
+#: fortran/lang.opt:239
+msgid "Warn about truncated source lines"
+msgstr ""
+
+#: fortran/lang.opt:243
+msgid "Warn on intrinsics not part of the selected standard"
+msgstr ""
+
+#: fortran/lang.opt:247
+msgid "Warn about real-literal-constants with 'q' exponent-letter"
+msgstr ""
+
+#: fortran/lang.opt:255
+msgid "Warn about \"suspicious\" constructs"
+msgstr ""
+
+#: fortran/lang.opt:259
+msgid "Permit nonconforming uses of the tab character"
+msgstr ""
+
+#: fortran/lang.opt:263
+msgid "Warn about underflow of numerical constant expressions"
+msgstr ""
+
+#: fortran/lang.opt:267
+msgid "Warn if a user-procedure has the same name as an intrinsic"
+msgstr ""
+
+#: fortran/lang.opt:271
+msgid "Warn about unused dummy arguments."
+msgstr ""
+
+#: fortran/lang.opt:275
+msgid "Enable preprocessing"
+msgstr ""
+
+#: fortran/lang.opt:283
+msgid "Disable preprocessing"
+msgstr ""
+
+#: fortran/lang.opt:291
+msgid "Eliminate multiple function invokations also for impure functions"
+msgstr ""
+
+#: fortran/lang.opt:295
+msgid "Enable alignment of COMMON blocks"
+msgstr ""
+
+#: fortran/lang.opt:299
+msgid "All intrinsics procedures are available regardless of selected standard"
+msgstr ""
+
+#: fortran/lang.opt:307
+msgid "Do not treat local variables and COMMON blocks as if they were named in SAVE statements"
+msgstr ""
+
+#: fortran/lang.opt:311
+msgid "Specify that backslash in string introduces an escape character"
+msgstr ""
+
+#: fortran/lang.opt:315
+msgid "Produce a backtrace when a runtime error is encountered"
+msgstr ""
+
+#: fortran/lang.opt:319
+msgid "-fblas-matmul-limit=<n>\tSize of the smallest matrix for which matmul will use BLAS"
+msgstr ""
+
+#: fortran/lang.opt:323
+msgid "Produce a warning at runtime if a array temporary has been created for a procedure argument"
+msgstr ""
+
+#: fortran/lang.opt:327
+msgid "Use big-endian format for unformatted files"
+msgstr ""
+
+#: fortran/lang.opt:331
+msgid "Use little-endian format for unformatted files"
+msgstr ""
+
+#: fortran/lang.opt:335
+msgid "Use native format for unformatted files"
+msgstr ""
+
+#: fortran/lang.opt:339
+msgid "Swap endianness for unformatted files"
+msgstr ""
+
+#: fortran/lang.opt:343
+msgid "Use the Cray Pointer extension"
+msgstr ""
+
+#: fortran/lang.opt:347
+msgid "Ignore 'D' in column one in fixed form"
+msgstr ""
+
+#: fortran/lang.opt:351
+msgid "Treat lines with 'D' in column one as comments"
+msgstr ""
+
+#: fortran/lang.opt:355
+msgid "Set the default double precision kind to an 8 byte wide type"
+msgstr ""
+
+#: fortran/lang.opt:359
+msgid "Set the default integer kind to an 8 byte wide type"
+msgstr ""
+
+#: fortran/lang.opt:363
+msgid "Set the default real kind to an 8 byte wide type"
+msgstr ""
+
+#: fortran/lang.opt:367
+msgid "Allow dollar signs in entity names"
+msgstr ""
+
+#: fortran/lang.opt:371 common.opt:659 common.opt:826 common.opt:830
+#: common.opt:834 common.opt:838 common.opt:1320
+msgid "Does nothing. Preserved for backward compatibility."
+msgstr ""
+
+#: fortran/lang.opt:375
+msgid "Display the code tree after parsing"
+msgstr ""
+
+#: fortran/lang.opt:379
+msgid "Display the code tree after front end optimization"
+msgstr ""
+
+#: fortran/lang.opt:383
+msgid "Display the code tree after parsing; deprecated option"
+msgstr ""
+
+#: fortran/lang.opt:387
+msgid "Specify that an external BLAS library should be used for matmul calls on large-size arrays"
+msgstr ""
+
+#: fortran/lang.opt:391
+msgid "Use f2c calling convention"
+msgstr ""
+
+#: fortran/lang.opt:395
+msgid "Assume that the source file is fixed form"
+msgstr ""
+
+#: fortran/lang.opt:399
+msgid "Interpret any INTEGER(4) as an INTEGER(8)"
+msgstr ""
+
+#: fortran/lang.opt:403
+msgid "Specify where to find the compiled intrinsic modules"
+msgstr ""
+
+#: fortran/lang.opt:407
+msgid "Allow arbitrary character line width in fixed mode"
+msgstr ""
+
+#: fortran/lang.opt:411
+msgid "-ffixed-line-length-<n>\tUse n as character line width in fixed mode"
+msgstr ""
+
+#: fortran/lang.opt:415
+msgid "-ffpe-trap=[...]\tStop on following floating point exceptions"
+msgstr ""
+
+#: fortran/lang.opt:419
+msgid "Assume that the source file is free form"
+msgstr ""
+
+#: fortran/lang.opt:423
+msgid "Allow arbitrary character line width in free mode"
+msgstr ""
+
+#: fortran/lang.opt:427
+msgid "-ffree-line-length-<n>\tUse n as character line width in free mode"
+msgstr ""
+
+#: fortran/lang.opt:431
+msgid "Enable front end optimization"
+msgstr ""
+
+#: fortran/lang.opt:435
+msgid "Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements"
+msgstr ""
+
+#: fortran/lang.opt:439
+msgid "-finit-character=<n>\tInitialize local character variables to ASCII value n"
+msgstr ""
+
+#: fortran/lang.opt:443
+msgid "-finit-integer=<n>\tInitialize local integer variables to n"
+msgstr ""
+
+#: fortran/lang.opt:447
+msgid "Initialize local variables to zero (from g77)"
+msgstr ""
+
+#: fortran/lang.opt:451
+msgid "-finit-logical=<true|false>\tInitialize local logical variables"
+msgstr ""
+
+#: fortran/lang.opt:455
+msgid "-finit-real=<zero|nan|inf|-inf>\tInitialize local real variables"
+msgstr ""
+
+#: fortran/lang.opt:459
+msgid "-fmax-array-constructor=<n>\tMaximum number of objects in an array constructor"
+msgstr ""
+
+#: fortran/lang.opt:463
+msgid "-fmax-identifier-length=<n>\tMaximum identifier length"
+msgstr ""
+
+#: fortran/lang.opt:467
+msgid "-fmax-subrecord-length=<n>\tMaximum length for subrecords"
+msgstr ""
+
+#: fortran/lang.opt:471
+msgid "-fmax-stack-var-size=<n>\tSize in bytes of the largest array that will be put on the stack"
+msgstr ""
+
+#: fortran/lang.opt:475
+msgid "Put all local arrays on stack."
+msgstr ""
+
+#: fortran/lang.opt:479
+msgid "Set default accessibility of module entities to PRIVATE."
+msgstr ""
+
+#: fortran/lang.opt:487
+msgid "Try to lay out derived types as compactly as possible"
+msgstr ""
+
+#: fortran/lang.opt:495
+msgid "Protect parentheses in expressions"
+msgstr ""
+
+#: fortran/lang.opt:499
+msgid "Enable range checking during compilation"
+msgstr ""
+
+#: fortran/lang.opt:503
+msgid "Interpret any REAL(4) as a REAL(8)"
+msgstr ""
+
+#: fortran/lang.opt:507
+msgid "Interpret any REAL(4) as a REAL(10)"
+msgstr ""
+
+#: fortran/lang.opt:511
+msgid "Interpret any REAL(4) as a REAL(16)"
+msgstr ""
+
+#: fortran/lang.opt:515
+msgid "Interpret any REAL(8) as a REAL(4)"
+msgstr ""
+
+#: fortran/lang.opt:519
+msgid "Interpret any REAL(8) as a REAL(10)"
+msgstr ""
+
+#: fortran/lang.opt:523
+msgid "Interpret any REAL(8) as a REAL(16)"
+msgstr ""
+
+#: fortran/lang.opt:527
+msgid "Reallocate the LHS in assignments"
+msgstr ""
+
+#: fortran/lang.opt:531
+msgid "Use a 4-byte record marker for unformatted files"
+msgstr ""
+
+#: fortran/lang.opt:535
+msgid "Use an 8-byte record marker for unformatted files"
+msgstr ""
+
+#: fortran/lang.opt:539
+msgid "Allocate local variables on the stack to allow indirect recursion"
+msgstr ""
+
+#: fortran/lang.opt:543
+msgid "Copy array sections into a contiguous block on procedure entry"
+msgstr ""
+
+#: fortran/lang.opt:547
+msgid "-fcoarray=[...]\tSpecify which coarray parallelization should be used"
+msgstr ""
+
+#: fortran/lang.opt:551
+msgid "-fcheck=[...]\tSpecify which runtime checks are to be performed"
+msgstr ""
+
+#: fortran/lang.opt:555
+msgid "Append a second underscore if the name already contains an underscore"
+msgstr ""
+
+#: fortran/lang.opt:563
+msgid "Apply negative sign to zero values"
+msgstr ""
+
+#: fortran/lang.opt:567
+msgid "Append underscores to externally visible names"
+msgstr ""
+
+#: fortran/lang.opt:571
+msgid "Compile all program units at once and check all interfaces"
+msgstr ""
+
+#: fortran/lang.opt:611
+msgid "Statically link the GNU Fortran helper library (libgfortran)"
+msgstr ""
+
+#: fortran/lang.opt:615
+msgid "Conform to the ISO Fortran 2003 standard"
+msgstr ""
+
+#: fortran/lang.opt:619
+msgid "Conform to the ISO Fortran 2008 standard"
+msgstr ""
+
+#: fortran/lang.opt:623
+msgid "Conform to the ISO Fortran 2008 standard including TS 29113"
+msgstr ""
+
+#: fortran/lang.opt:627
+msgid "Conform to the ISO Fortran 95 standard"
+msgstr ""
+
+#: fortran/lang.opt:631
+msgid "Conform to nothing in particular"
+msgstr ""
+
+#: fortran/lang.opt:635
+msgid "Accept extensions to support legacy code"
+msgstr ""
+
+#: config/alpha/alpha.opt:23 config/i386/i386.opt:284
+msgid "Do not use hardware fp"
+msgstr ""
+
+#: config/alpha/alpha.opt:27
+msgid "Use fp registers"
+msgstr ""
+
+#: config/alpha/alpha.opt:31
+msgid "Assume GAS"
+msgstr ""
+
+#: config/alpha/alpha.opt:35
+msgid "Do not assume GAS"
+msgstr ""
+
+#: config/alpha/alpha.opt:39
+msgid "Request IEEE-conformant math library routines (OSF/1)"
+msgstr ""
+
+#: config/alpha/alpha.opt:43
+msgid "Emit IEEE-conformant code, without inexact exceptions"
+msgstr ""
+
+#: config/alpha/alpha.opt:50
+msgid "Do not emit complex integer constants to read-only memory"
+msgstr ""
+
+#: config/alpha/alpha.opt:54
+msgid "Use VAX fp"
+msgstr ""
+
+#: config/alpha/alpha.opt:58
+msgid "Do not use VAX fp"
+msgstr ""
+
+#: config/alpha/alpha.opt:62
+msgid "Emit code for the byte/word ISA extension"
+msgstr ""
+
+#: config/alpha/alpha.opt:66
+msgid "Emit code for the motion video ISA extension"
+msgstr ""
+
+#: config/alpha/alpha.opt:70
+msgid "Emit code for the fp move and sqrt ISA extension"
+msgstr ""
+
+#: config/alpha/alpha.opt:74
+msgid "Emit code for the counting ISA extension"
+msgstr ""
+
+#: config/alpha/alpha.opt:78
+msgid "Emit code using explicit relocation directives"
+msgstr ""
+
+#: config/alpha/alpha.opt:82
+msgid "Emit 16-bit relocations to the small data areas"
+msgstr ""
+
+#: config/alpha/alpha.opt:86
+msgid "Emit 32-bit relocations to the small data areas"
+msgstr ""
+
+#: config/alpha/alpha.opt:90
+msgid "Emit direct branches to local functions"
+msgstr ""
+
+#: config/alpha/alpha.opt:94
+msgid "Emit indirect branches to local functions"
+msgstr ""
+
+#: config/alpha/alpha.opt:98
+msgid "Emit rdval instead of rduniq for thread pointer"
+msgstr ""
+
+#: config/alpha/alpha.opt:102 config/s390/s390.opt:98
+#: config/sparc/long-double-switch.opt:23
+msgid "Use 128-bit long double"
+msgstr ""
+
+#: config/alpha/alpha.opt:106 config/s390/s390.opt:102
+#: config/sparc/long-double-switch.opt:27
+msgid "Use 64-bit long double"
+msgstr ""
+
+#: config/alpha/alpha.opt:110
+msgid "Use features of and schedule given CPU"
+msgstr ""
+
+#: config/alpha/alpha.opt:114
+msgid "Schedule given CPU"
+msgstr ""
+
+#: config/alpha/alpha.opt:118
+msgid "Control the generated fp rounding mode"
+msgstr ""
+
+#: config/alpha/alpha.opt:122
+msgid "Control the IEEE trap mode"
+msgstr ""
+
+#: config/alpha/alpha.opt:126
+msgid "Control the precision given to fp exceptions"
+msgstr ""
+
+#: config/alpha/alpha.opt:130
+msgid "Tune expected memory latency"
+msgstr ""
+
+#: config/alpha/alpha.opt:134 config/ia64/ia64.opt:119
+#: config/rs6000/sysv4.opt:33
+msgid "Specify bit size of immediate TLS offsets"
+msgstr ""
+
+#: config/frv/frv.opt:30
+msgid "Use 4 media accumulators"
+msgstr ""
+
+#: config/frv/frv.opt:34
+msgid "Use 8 media accumulators"
+msgstr ""
+
+#: config/frv/frv.opt:38
+msgid "Enable label alignment optimizations"
+msgstr ""
+
+#: config/frv/frv.opt:42
+msgid "Dynamically allocate cc registers"
+msgstr ""
+
+#: config/frv/frv.opt:49
+msgid "Set the cost of branches"
+msgstr ""
+
+#: config/frv/frv.opt:53
+msgid "Enable conditional execution other than moves/scc"
+msgstr ""
+
+#: config/frv/frv.opt:57
+msgid "Change the maximum length of conditionally-executed sequences"
+msgstr ""
+
+#: config/frv/frv.opt:61
+msgid "Change the number of temporary registers that are available to conditionally-executed sequences"
+msgstr ""
+
+#: config/frv/frv.opt:65
+msgid "Enable conditional moves"
+msgstr ""
+
+#: config/frv/frv.opt:69
+msgid "Set the target CPU type"
+msgstr ""
+
+#: config/frv/frv.opt:73
+msgid "Known FR-V CPUs (for use with the -mcpu= option):"
+msgstr ""
+
+#: config/frv/frv.opt:122
+msgid "Use fp double instructions"
+msgstr ""
+
+#: config/frv/frv.opt:126
+msgid "Change the ABI to allow double word insns"
+msgstr ""
+
+#: config/frv/frv.opt:130 config/bfin/bfin.opt:90
+msgid "Enable Function Descriptor PIC mode"
+msgstr ""
+
+#: config/frv/frv.opt:134
+msgid "Just use icc0/fcc0"
+msgstr ""
+
+#: config/frv/frv.opt:138
+msgid "Only use 32 FPRs"
+msgstr ""
+
+#: config/frv/frv.opt:142
+msgid "Use 64 FPRs"
+msgstr ""
+
+#: config/frv/frv.opt:146
+msgid "Only use 32 GPRs"
+msgstr ""
+
+#: config/frv/frv.opt:150
+msgid "Use 64 GPRs"
+msgstr ""
+
+#: config/frv/frv.opt:154
+msgid "Enable use of GPREL for read-only data in FDPIC"
+msgstr ""
+
+#: config/frv/frv.opt:158 config/rs6000/rs6000.opt:184
+#: config/pdp11/pdp11.opt:67
+msgid "Use hardware floating point"
+msgstr ""
+
+#: config/frv/frv.opt:162 config/bfin/bfin.opt:94
+msgid "Enable inlining of PLT in function calls"
+msgstr ""
+
+#: config/frv/frv.opt:166
+msgid "Enable PIC support for building libraries"
+msgstr ""
+
+#: config/frv/frv.opt:170
+msgid "Follow the EABI linkage requirements"
+msgstr ""
+
+#: config/frv/frv.opt:174
+msgid "Disallow direct calls to global functions"
+msgstr ""
+
+#: config/frv/frv.opt:178
+msgid "Use media instructions"
+msgstr ""
+
+#: config/frv/frv.opt:182
+msgid "Use multiply add/subtract instructions"
+msgstr ""
+
+#: config/frv/frv.opt:186
+msgid "Enable optimizing &&/|| in conditional execution"
+msgstr ""
+
+#: config/frv/frv.opt:190
+msgid "Enable nested conditional execution optimizations"
+msgstr ""
+
+#: config/frv/frv.opt:195
+msgid "Do not mark ABI switches in e_flags"
+msgstr ""
+
+#: config/frv/frv.opt:199
+msgid "Remove redundant membars"
+msgstr ""
+
+#: config/frv/frv.opt:203
+msgid "Pack VLIW instructions"
+msgstr ""
+
+#: config/frv/frv.opt:207
+msgid "Enable setting GPRs to the result of comparisons"
+msgstr ""
+
+#: config/frv/frv.opt:211
+msgid "Change the amount of scheduler lookahead"
+msgstr ""
+
+#: config/frv/frv.opt:215 config/pa/pa.opt:132
+msgid "Use software floating point"
+msgstr ""
+
+#: config/frv/frv.opt:219
+msgid "Assume a large TLS segment"
+msgstr ""
+
+#: config/frv/frv.opt:223
+msgid "Do not assume a large TLS segment"
+msgstr ""
+
+#: config/frv/frv.opt:228
+msgid "Cause gas to print tomcat statistics"
+msgstr ""
+
+#: config/frv/frv.opt:233
+msgid "Link with the library-pic libraries"
+msgstr ""
+
+#: config/frv/frv.opt:237
+msgid "Allow branches to be packed with other instructions"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:30
+msgid "Target the AM33 processor"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:34
+msgid "Target the AM33/2.0 processor"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:38
+msgid "Target the AM34 processor"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:42 config/arm/arm.opt:239
+msgid "Tune code for the given processor"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:46
+msgid "Work around hardware multiply bug"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:55
+msgid "Enable linker relaxations"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:59
+msgid "Return pointers in both a0 and d0"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:63
+msgid "Allow gcc to generate LIW instructions"
+msgstr ""
+
+#: config/mn10300/mn10300.opt:67
+msgid "Allow gcc to generate the SETLB and Lcc instructions"
+msgstr ""
+
+#: config/s390/tpf.opt:23
+msgid "Enable TPF-OS tracing code"
+msgstr ""
+
+#: config/s390/tpf.opt:27
+msgid "Specify main object for TPF-OS"
+msgstr ""
+
+#: config/s390/s390.opt:39
+msgid "31 bit ABI"
+msgstr ""
+
+#: config/s390/s390.opt:43
+msgid "64 bit ABI"
+msgstr ""
+
+#: config/s390/s390.opt:47 config/i386/i386.opt:115 config/spu/spu.opt:80
+msgid "Generate code for given CPU"
+msgstr ""
+
+#: config/s390/s390.opt:78
+msgid "Maintain backchain pointer"
+msgstr ""
+
+#: config/s390/s390.opt:82
+msgid "Additional debug prints"
+msgstr ""
+
+#: config/s390/s390.opt:86
+msgid "ESA/390 architecture"
+msgstr ""
+
+#: config/s390/s390.opt:90
+msgid "Enable decimal floating point hardware support"
+msgstr ""
+
+#: config/s390/s390.opt:94
+msgid "Enable hardware floating point"
+msgstr ""
+
+#: config/s390/s390.opt:106
+msgid "Use packed stack layout"
+msgstr ""
+
+#: config/s390/s390.opt:110
+msgid "Use bras for executable < 64k"
+msgstr ""
+
+#: config/s390/s390.opt:114
+msgid "Disable hardware floating point"
+msgstr ""
+
+#: config/s390/s390.opt:118
+msgid "Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered"
+msgstr ""
+
+#: config/s390/s390.opt:122
+msgid "Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit"
+msgstr ""
+
+#: config/s390/s390.opt:126 config/ia64/ia64.opt:123
+#: config/sparc/sparc.opt:118 config/i386/i386.opt:347 config/spu/spu.opt:84
+msgid "Schedule code for given CPU"
+msgstr ""
+
+#: config/s390/s390.opt:130
+msgid "mvcle use"
+msgstr ""
+
+#: config/s390/s390.opt:134
+msgid "Warn if a function uses alloca or creates an array with dynamic size"
+msgstr ""
+
+#: config/s390/s390.opt:138
+msgid "Warn if a single function's framesize exceeds the given framesize"
+msgstr ""
+
+#: config/s390/s390.opt:142
+msgid "z/Architecture"
+msgstr ""
+
+#: config/s390/s390.opt:146
+msgid "Set the branch costs for conditional branch instructions. Reasonable"
+msgstr ""
+
+#: config/ia64/ilp32.opt:3
+msgid "Generate ILP32 code"
+msgstr ""
+
+#: config/ia64/ilp32.opt:7
+msgid "Generate LP64 code"
+msgstr ""
+
+#: config/ia64/ia64.opt:29
+msgid "Generate big endian code"
+msgstr ""
+
+#: config/ia64/ia64.opt:33
+msgid "Generate little endian code"
+msgstr ""
+
+#: config/ia64/ia64.opt:37
+msgid "Generate code for GNU as"
+msgstr ""
+
+#: config/ia64/ia64.opt:41
+msgid "Generate code for GNU ld"
+msgstr ""
+
+#: config/ia64/ia64.opt:45
+msgid "Emit stop bits before and after volatile extended asms"
+msgstr ""
+
+#: config/ia64/ia64.opt:49
+msgid "Use in/loc/out register names"
+msgstr ""
+
+#: config/ia64/ia64.opt:56
+msgid "Enable use of sdata/scommon/sbss"
+msgstr ""
+
+#: config/ia64/ia64.opt:60
+msgid "Generate code without GP reg"
+msgstr ""
+
+#: config/ia64/ia64.opt:64
+msgid "gp is constant (but save/restore gp on indirect calls)"
+msgstr ""
+
+#: config/ia64/ia64.opt:68
+msgid "Generate self-relocatable code"
+msgstr ""
+
+#: config/ia64/ia64.opt:72
+msgid "Generate inline floating point division, optimize for latency"
+msgstr ""
+
+#: config/ia64/ia64.opt:76
+msgid "Generate inline floating point division, optimize for throughput"
+msgstr ""
+
+#: config/ia64/ia64.opt:83
+msgid "Generate inline integer division, optimize for latency"
+msgstr ""
+
+#: config/ia64/ia64.opt:87
+msgid "Generate inline integer division, optimize for throughput"
+msgstr ""
+
+#: config/ia64/ia64.opt:91
+msgid "Do not inline integer division"
+msgstr ""
+
+#: config/ia64/ia64.opt:95
+msgid "Generate inline square root, optimize for latency"
+msgstr ""
+
+#: config/ia64/ia64.opt:99
+msgid "Generate inline square root, optimize for throughput"
+msgstr ""
+
+#: config/ia64/ia64.opt:103
+msgid "Do not inline square root"
+msgstr ""
+
+#: config/ia64/ia64.opt:107
+msgid "Enable Dwarf 2 line debug info via GNU as"
+msgstr ""
+
+#: config/ia64/ia64.opt:111
+msgid "Enable earlier placing stop bits for better scheduling"
+msgstr ""
+
+#: config/ia64/ia64.opt:115 config/spu/spu.opt:72 config/sh/sh.opt:258
+#: config/pa/pa.opt:58
+msgid "Specify range of registers to make fixed"
+msgstr ""
+
+#: config/ia64/ia64.opt:127
+msgid "Known Itanium CPUs (for use with the -mtune= option):"
+msgstr ""
+
+#: config/ia64/ia64.opt:137
+msgid "Use data speculation before reload"
+msgstr ""
+
+#: config/ia64/ia64.opt:141
+msgid "Use data speculation after reload"
+msgstr ""
+
+#: config/ia64/ia64.opt:145
+msgid "Use control speculation"
+msgstr ""
+
+#: config/ia64/ia64.opt:149
+msgid "Use in block data speculation before reload"
+msgstr ""
+
+#: config/ia64/ia64.opt:153
+msgid "Use in block data speculation after reload"
+msgstr ""
+
+#: config/ia64/ia64.opt:157
+msgid "Use in block control speculation"
+msgstr ""
+
+#: config/ia64/ia64.opt:161
+msgid "Use simple data speculation check"
+msgstr ""
+
+#: config/ia64/ia64.opt:165
+msgid "Use simple data speculation check for control speculation"
+msgstr ""
+
+#: config/ia64/ia64.opt:169
+msgid "If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment "
+msgstr ""
+
+#: config/ia64/ia64.opt:173
+msgid "If set, control speculative instructions will be chosen for schedule only if there are no other choices at the moment "
+msgstr ""
+
+#: config/ia64/ia64.opt:177
+msgid "Count speculative dependencies while calculating priority of instructions"
+msgstr ""
+
+#: config/ia64/ia64.opt:181
+msgid "Place a stop bit after every cycle when scheduling"
+msgstr ""
+
+#: config/ia64/ia64.opt:185
+msgid "Assume that floating-point stores and loads are not likely to cause conflict when placed into one instruction group"
+msgstr ""
+
+#: config/ia64/ia64.opt:189
+msgid "Soft limit on number of memory insns per instruction group, giving lower priority to subsequent memory insns attempting to schedule in the same insn group. Frequently useful to prevent cache bank conflicts. Default value is 1"
+msgstr ""
+
+#: config/ia64/ia64.opt:193
+msgid "Disallow more than 'msched-max-memory-insns' in instruction group. Otherwise, limit is 'soft' (prefer non-memory operations when limit is reached)"
+msgstr ""
+
+#: config/ia64/ia64.opt:197
+msgid "Don't generate checks for control speculation in selective scheduling"
+msgstr ""
+
+#: config/m32c/m32c.opt:24
+msgid "-msim\tUse simulator runtime"
+msgstr ""
+
+#: config/m32c/m32c.opt:28
+msgid "-mcpu=r8c\tCompile code for R8C variants"
+msgstr ""
+
+#: config/m32c/m32c.opt:32
+msgid "-mcpu=m16c\tCompile code for M16C variants"
+msgstr ""
+
+#: config/m32c/m32c.opt:36
+msgid "-mcpu=m32cm\tCompile code for M32CM variants"
+msgstr ""
+
+#: config/m32c/m32c.opt:40
+msgid "-mcpu=m32c\tCompile code for M32C variants"
+msgstr ""
+
+#: config/m32c/m32c.opt:44
+msgid "-memregs=\tNumber of memreg bytes (default: 16, range: 0..16)"
+msgstr ""
+
+#: config/sparc/sparc.opt:30 config/sparc/sparc.opt:34
+msgid "Use hardware FP"
+msgstr ""
+
+#: config/sparc/sparc.opt:38
+msgid "Do not use hardware FP"
+msgstr ""
+
+#: config/sparc/sparc.opt:42
+msgid "Use flat register window model"
+msgstr ""
+
+#: config/sparc/sparc.opt:46
+msgid "Assume possible double misalignment"
+msgstr ""
+
+#: config/sparc/sparc.opt:50
+msgid "Use ABI reserved registers"
+msgstr ""
+
+#: config/sparc/sparc.opt:54
+msgid "Use hardware quad FP instructions"
+msgstr ""
+
+#: config/sparc/sparc.opt:58
+msgid "Do not use hardware quad fp instructions"
+msgstr ""
+
+#: config/sparc/sparc.opt:62
+msgid "Compile for V8+ ABI"
+msgstr ""
+
+#: config/sparc/sparc.opt:66
+msgid "Use UltraSPARC Visual Instruction Set version 1.0 extensions"
+msgstr ""
+
+#: config/sparc/sparc.opt:70
+msgid "Use UltraSPARC Visual Instruction Set version 2.0 extensions"
+msgstr ""
+
+#: config/sparc/sparc.opt:74
+msgid "Use UltraSPARC Visual Instruction Set version 3.0 extensions"
+msgstr ""
+
+#: config/sparc/sparc.opt:78
+msgid "Use UltraSPARC Fused Multiply-Add extensions"
+msgstr ""
+
+#: config/sparc/sparc.opt:82
+msgid "Use UltraSPARC Population-Count instruction"
+msgstr ""
+
+#: config/sparc/sparc.opt:86
+msgid "Pointers are 64-bit"
+msgstr ""
+
+#: config/sparc/sparc.opt:90
+msgid "Pointers are 32-bit"
+msgstr ""
+
+#: config/sparc/sparc.opt:94
+msgid "Use 64-bit ABI"
+msgstr ""
+
+#: config/sparc/sparc.opt:98
+msgid "Use 32-bit ABI"
+msgstr ""
+
+#: config/sparc/sparc.opt:102
+msgid "Use stack bias"
+msgstr ""
+
+#: config/sparc/sparc.opt:106
+msgid "Use structs on stronger alignment for double-word copies"
+msgstr ""
+
+#: config/sparc/sparc.opt:110
+msgid "Optimize tail call instructions in assembler and linker"
+msgstr ""
+
+#: config/sparc/sparc.opt:114
+msgid "Use features of and schedule code for given CPU"
+msgstr ""
+
+#: config/sparc/sparc.opt:185
+msgid "Use given SPARC-V9 code model"
+msgstr ""
+
+#: config/sparc/sparc.opt:189
+msgid "Enable debug output"
+msgstr ""
+
+#: config/sparc/sparc.opt:193
+msgid "Enable strict 32-bit psABI struct return checking."
+msgstr ""
+
+#: config/sparc/sparc.opt:197
+msgid "Enable workaround for single erratum of AT697F processor"
+msgstr ""
+
+#: config/sparc/sparc.opt:221
+msgid "Specify the memory model in effect for the program."
+msgstr ""
+
+#: config/m32r/m32r.opt:34
+msgid "Compile for the m32rx"
+msgstr ""
+
+#: config/m32r/m32r.opt:38
+msgid "Compile for the m32r2"
+msgstr ""
+
+#: config/m32r/m32r.opt:42
+msgid "Compile for the m32r"
+msgstr ""
+
+#: config/m32r/m32r.opt:46
+msgid "Align all loops to 32 byte boundary"
+msgstr ""
+
+#: config/m32r/m32r.opt:50
+msgid "Prefer branches over conditional execution"
+msgstr ""
+
+#: config/m32r/m32r.opt:54
+msgid "Give branches their default cost"
+msgstr ""
+
+#: config/m32r/m32r.opt:58
+msgid "Display compile time statistics"
+msgstr ""
+
+#: config/m32r/m32r.opt:62
+msgid "Specify cache flush function"
+msgstr ""
+
+#: config/m32r/m32r.opt:66
+msgid "Specify cache flush trap number"
+msgstr ""
+
+#: config/m32r/m32r.opt:70
+msgid "Only issue one instruction per cycle"
+msgstr ""
+
+#: config/m32r/m32r.opt:74
+msgid "Allow two instructions to be issued per cycle"
+msgstr ""
+
+#: config/m32r/m32r.opt:78
+msgid "Code size: small, medium or large"
+msgstr ""
+
+#: config/m32r/m32r.opt:94
+msgid "Don't call any cache flush functions"
+msgstr ""
+
+#: config/m32r/m32r.opt:98
+msgid "Don't call any cache flush trap"
+msgstr ""
+
+#: config/m32r/m32r.opt:105
+msgid "Small data area: none, sdata, use"
+msgstr ""
+
+#: config/m68k/m68k.opt:31
+msgid "Generate code for a 520X"
+msgstr ""
+
+#: config/m68k/m68k.opt:35
+msgid "Generate code for a 5206e"
+msgstr ""
+
+#: config/m68k/m68k.opt:39
+msgid "Generate code for a 528x"
+msgstr ""
+
+#: config/m68k/m68k.opt:43
+msgid "Generate code for a 5307"
+msgstr ""
+
+#: config/m68k/m68k.opt:47
+msgid "Generate code for a 5407"
+msgstr ""
+
+#: config/m68k/m68k.opt:51 config/m68k/m68k.opt:112
+msgid "Generate code for a 68000"
+msgstr ""
+
+#: config/m68k/m68k.opt:55
+msgid "Generate code for a 68010"
+msgstr ""
+
+#: config/m68k/m68k.opt:59 config/m68k/m68k.opt:116
+msgid "Generate code for a 68020"
+msgstr ""
+
+#: config/m68k/m68k.opt:63
+msgid "Generate code for a 68040, without any new instructions"
+msgstr ""
+
+#: config/m68k/m68k.opt:67
+msgid "Generate code for a 68060, without any new instructions"
+msgstr ""
+
+#: config/m68k/m68k.opt:71
+msgid "Generate code for a 68030"
+msgstr ""
+
+#: config/m68k/m68k.opt:75
+msgid "Generate code for a 68040"
+msgstr ""
+
+#: config/m68k/m68k.opt:79
+msgid "Generate code for a 68060"
+msgstr ""
+
+#: config/m68k/m68k.opt:83
+msgid "Generate code for a 68302"
+msgstr ""
+
+#: config/m68k/m68k.opt:87
+msgid "Generate code for a 68332"
+msgstr ""
+
+#: config/m68k/m68k.opt:92
+msgid "Generate code for a 68851"
+msgstr ""
+
+#: config/m68k/m68k.opt:96
+msgid "Generate code that uses 68881 floating-point instructions"
+msgstr ""
+
+#: config/m68k/m68k.opt:100
+msgid "Align variables on a 32-bit boundary"
+msgstr ""
+
+#: config/m68k/m68k.opt:104 config/c6x/c6x.opt:67 config/arm/arm.opt:81
+#: config/score/score.opt:47
+msgid "Specify the name of the target architecture"
+msgstr ""
+
+#: config/m68k/m68k.opt:108
+msgid "Use the bit-field instructions"
+msgstr ""
+
+#: config/m68k/m68k.opt:120
+msgid "Generate code for a ColdFire v4e"
+msgstr ""
+
+#: config/m68k/m68k.opt:124
+msgid "Specify the target CPU"
+msgstr ""
+
+#: config/m68k/m68k.opt:128
+msgid "Generate code for a cpu32"
+msgstr ""
+
+#: config/m68k/m68k.opt:132
+msgid "Use hardware division instructions on ColdFire"
+msgstr ""
+
+#: config/m68k/m68k.opt:136
+msgid "Generate code for a Fido A"
+msgstr ""
+
+#: config/m68k/m68k.opt:140
+msgid "Generate code which uses hardware floating point instructions"
+msgstr ""
+
+#: config/m68k/m68k.opt:144
+msgid "Enable ID based shared library"
+msgstr ""
+
+#: config/m68k/m68k.opt:148
+msgid "Do not use the bit-field instructions"
+msgstr ""
+
+#: config/m68k/m68k.opt:152
+msgid "Use normal calling convention"
+msgstr ""
+
+#: config/m68k/m68k.opt:156
+msgid "Consider type 'int' to be 32 bits wide"
+msgstr ""
+
+#: config/m68k/m68k.opt:160
+msgid "Generate pc-relative code"
+msgstr ""
+
+#: config/m68k/m68k.opt:164
+msgid "Use different calling convention using 'rtd'"
+msgstr ""
+
+#: config/m68k/m68k.opt:168 config/bfin/bfin.opt:78
+msgid "Enable separate data segment"
+msgstr ""
+
+#: config/m68k/m68k.opt:172 config/bfin/bfin.opt:74
+msgid "ID of shared library to build"
+msgstr ""
+
+#: config/m68k/m68k.opt:176
+msgid "Consider type 'int' to be 16 bits wide"
+msgstr ""
+
+#: config/m68k/m68k.opt:180
+msgid "Generate code with library calls for floating point"
+msgstr ""
+
+#: config/m68k/m68k.opt:184
+msgid "Do not use unaligned memory references"
+msgstr ""
+
+#: config/m68k/m68k.opt:188
+msgid "Tune for the specified target CPU or architecture"
+msgstr ""
+
+#: config/m68k/m68k.opt:192
+msgid "Support more than 8192 GOT entries on ColdFire"
+msgstr ""
+
+#: config/m68k/m68k.opt:196
+msgid "Support TLS segment larger than 64K"
+msgstr ""
+
+#: config/m68k/ieee.opt:24 config/i386/i386.opt:212
+msgid "Use IEEE math for fp comparisons"
+msgstr ""
+
+#: config/m68k/m68k-tables.opt:25
+msgid "Known M68K CPUs (for use with the -mcpu= option):"
+msgstr ""
+
+#: config/m68k/m68k-tables.opt:347
+msgid "Known M68K microarchitectures (for use with the -mtune= option):"
+msgstr ""
+
+#: config/m68k/m68k-tables.opt:393
+msgid "Known M68K ISAs (for use with the -march= option):"
+msgstr ""
+
+#: config/i386/interix.opt:33 config/i386/cygming.opt:47
+msgid "Use the GNU extension to the PE format for aligned common data"
+msgstr ""
+
+#: config/i386/djgpp.opt:25
+msgid "Ignored (obsolete)"
+msgstr ""
+
+#: config/i386/mingw.opt:29
+msgid "Warn about none ISO msvcrt scanf/printf width extensions"
+msgstr ""
+
+#: config/i386/mingw.opt:33
+msgid "For nested functions on stack executable permission is set."
+msgstr ""
+
+#: config/i386/i386.opt:79
+msgid "sizeof(long double) is 16"
+msgstr ""
+
+#: config/i386/i386.opt:83 config/i386/i386.opt:208
+msgid "Use hardware fp"
+msgstr ""
+
+#: config/i386/i386.opt:87
+msgid "sizeof(long double) is 12"
+msgstr ""
+
+#: config/i386/i386.opt:91 config/sh/sh.opt:206
+msgid "Reserve space for outgoing arguments in the function prologue"
+msgstr ""
+
+#: config/i386/i386.opt:95
+msgid "Align some doubles on dword boundary"
+msgstr ""
+
+#: config/i386/i386.opt:99
+msgid "Function starts are aligned to this power of 2"
+msgstr ""
+
+#: config/i386/i386.opt:103
+msgid "Jump targets are aligned to this power of 2"
+msgstr ""
+
+#: config/i386/i386.opt:107
+msgid "Loop code aligned to this power of 2"
+msgstr ""
+
+#: config/i386/i386.opt:111
+msgid "Align destination of the string operations"
+msgstr ""
+
+#: config/i386/i386.opt:119
+msgid "Use given assembler dialect"
+msgstr ""
+
+#: config/i386/i386.opt:123
+msgid "Known assembler dialects (for use with the -masm-dialect= option):"
+msgstr ""
+
+#: config/i386/i386.opt:133
+msgid "Branches are this expensive (1-5, arbitrary units)"
+msgstr ""
+
+#: config/i386/i386.opt:137
+msgid "Data greater than given threshold will go into .ldata section in x86-64 medium model"
+msgstr ""
+
+#: config/i386/i386.opt:141
+msgid "Use given x86-64 code model"
+msgstr ""
+
+#: config/i386/i386.opt:145 config/rs6000/linux64.opt:32
+msgid "Known code models (for use with the -mcmodel= option):"
+msgstr ""
+
+#: config/i386/i386.opt:163
+msgid "%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead"
+msgstr ""
+
+#: config/i386/i386.opt:167
+msgid "Generate sin, cos, sqrt for FPU"
+msgstr ""
+
+#: config/i386/i386.opt:171
+msgid "Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack"
+msgstr ""
+
+#: config/i386/i386.opt:175
+msgid "Return values of functions in FPU registers"
+msgstr ""
+
+#: config/i386/i386.opt:179
+msgid "Generate floating point mathematics using given instruction set"
+msgstr ""
+
+#: config/i386/i386.opt:183
+msgid "Valid arguments to -mfpmath=:"
+msgstr ""
+
+#: config/i386/i386.opt:216
+msgid "Inline all known string operations"
+msgstr ""
+
+#: config/i386/i386.opt:220
+msgid "Inline memset/memcpy string operations, but perform inline version only for small blocks"
+msgstr ""
+
+#: config/i386/i386.opt:223
+msgid "%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead"
+msgstr ""
+
+#: config/i386/i386.opt:244
+msgid "Omit the frame pointer in leaf functions"
+msgstr ""
+
+#: config/i386/i386.opt:248
+msgid "Set 80387 floating-point precision to 32-bit"
+msgstr ""
+
+#: config/i386/i386.opt:252
+msgid "Set 80387 floating-point precision to 64-bit"
+msgstr ""
+
+#: config/i386/i386.opt:256
+msgid "Set 80387 floating-point precision to 80-bit"
+msgstr ""
+
+#: config/i386/i386.opt:260
+msgid "Attempt to keep stack aligned to this power of 2"
+msgstr ""
+
+#: config/i386/i386.opt:264
+msgid "Assume incoming stack aligned to this power of 2"
+msgstr ""
+
+#: config/i386/i386.opt:268
+msgid "Use push instructions to save outgoing arguments"
+msgstr ""
+
+#: config/i386/i386.opt:272
+msgid "Use red-zone in the x86-64 code"
+msgstr ""
+
+#: config/i386/i386.opt:276
+msgid "Number of registers used to pass integer arguments"
+msgstr ""
+
+#: config/i386/i386.opt:280
+msgid "Alternate calling convention"
+msgstr ""
+
+#: config/i386/i386.opt:288
+msgid "Use SSE register passing conventions for SF and DF mode"
+msgstr ""
+
+#: config/i386/i386.opt:292
+msgid "Realign stack in prologue"
+msgstr ""
+
+#: config/i386/i386.opt:296
+msgid "Enable stack probing"
+msgstr ""
+
+#: config/i386/i386.opt:300
+msgid "Chose strategy to generate stringop using"
+msgstr ""
+
+#: config/i386/i386.opt:304
+msgid "Valid arguments to -mstringop-strategy=:"
+msgstr ""
+
+#: config/i386/i386.opt:329
+msgid "Use given thread-local storage dialect"
+msgstr ""
+
+#: config/i386/i386.opt:333
+msgid "Known TLS dialects (for use with the -mtls-dialect= option):"
+msgstr ""
+
+#: config/i386/i386.opt:343
+#, c-format
+msgid "Use direct references against %gs when accessing tls data"
+msgstr ""
+
+#: config/i386/i386.opt:351
+msgid "Generate code that conforms to the given ABI"
+msgstr ""
+
+#: config/i386/i386.opt:355
+msgid "Known ABIs (for use with the -mabi= option):"
+msgstr ""
+
+#: config/i386/i386.opt:365 config/rs6000/rs6000.opt:196
+msgid "Vector library ABI to use"
+msgstr ""
+
+#: config/i386/i386.opt:369
+msgid "Known vectorization library ABIs (for use with the -mveclibabi= option):"
+msgstr ""
+
+#: config/i386/i386.opt:379
+msgid "Return 8-byte vectors in memory"
+msgstr ""
+
+#: config/i386/i386.opt:383
+msgid "Generate reciprocals instead of divss and sqrtss."
+msgstr ""
+
+#: config/i386/i386.opt:387
+msgid "Control generation of reciprocal estimates."
+msgstr ""
+
+#: config/i386/i386.opt:391
+msgid "Generate cld instruction in the function prologue."
+msgstr ""
+
+#: config/i386/i386.opt:395
+msgid "Generate vzeroupper instruction before a transfer of control flow out of"
+msgstr ""
+
+#: config/i386/i386.opt:400
+msgid "Do dispatch scheduling if processor is bdver1 or bdver2 and Haifa scheduling"
+msgstr ""
+
+#: config/i386/i386.opt:405
+msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer."
+msgstr ""
+
+#: config/i386/i386.opt:411
+msgid "Generate 32bit i386 code"
+msgstr ""
+
+#: config/i386/i386.opt:415
+msgid "Generate 64bit x86-64 code"
+msgstr ""
+
+#: config/i386/i386.opt:419
+msgid "Generate 32bit x86-64 code"
+msgstr ""
+
+#: config/i386/i386.opt:423
+msgid "Support MMX built-in functions"
+msgstr ""
+
+#: config/i386/i386.opt:427
+msgid "Support 3DNow! built-in functions"
+msgstr ""
+
+#: config/i386/i386.opt:431
+msgid "Support Athlon 3Dnow! built-in functions"
+msgstr ""
+
+#: config/i386/i386.opt:435
+msgid "Support MMX and SSE built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:439
+msgid "Support MMX, SSE and SSE2 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:443
+msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:447
+msgid "Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:451
+msgid "Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:455 config/i386/i386.opt:459
+msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:463
+msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:466
+msgid "%<-msse5%> was removed"
+msgstr ""
+
+#: config/i386/i386.opt:471
+msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:475
+msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:479
+msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:483
+msgid "Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:487
+msgid "Support FMA4 built-in functions and code generation "
+msgstr ""
+
+#: config/i386/i386.opt:491
+msgid "Support XOP built-in functions and code generation "
+msgstr ""
+
+#: config/i386/i386.opt:495
+msgid "Support LWP built-in functions and code generation "
+msgstr ""
+
+#: config/i386/i386.opt:499
+msgid "Support code generation of Advanced Bit Manipulation (ABM) instructions."
+msgstr ""
+
+#: config/i386/i386.opt:503
+msgid "Support code generation of popcnt instruction."
+msgstr ""
+
+#: config/i386/i386.opt:507
+msgid "Support BMI built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:511
+msgid "Support BMI2 built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:515
+msgid "Support LZCNT built-in function and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:519
+msgid "Support TBM built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:523
+msgid "Support code generation of cmpxchg16b instruction."
+msgstr ""
+
+#: config/i386/i386.opt:527
+msgid "Support code generation of sahf instruction in 64bit x86-64 code."
+msgstr ""
+
+#: config/i386/i386.opt:531
+msgid "Support code generation of movbe instruction."
+msgstr ""
+
+#: config/i386/i386.opt:535
+msgid "Support code generation of crc32 instruction."
+msgstr ""
+
+#: config/i386/i386.opt:539
+msgid "Support AES built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:543
+msgid "Support PCLMUL built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:547
+msgid "Encode SSE instructions with VEX prefix"
+msgstr ""
+
+#: config/i386/i386.opt:551
+msgid "Support FSGSBASE built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:555
+msgid "Support RDRND built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:559
+msgid "Support F16C built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.opt:563
+msgid "Emit profiling counter call at function entry before prologue."
+msgstr ""
+
+#: config/i386/i386.opt:567
+msgid "Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check"
+msgstr ""
+
+#: config/i386/i386.opt:571
+msgid "Split 32-byte AVX unaligned load"
+msgstr ""
+
+#: config/i386/i386.opt:575
+msgid "Split 32-byte AVX unaligned store"
+msgstr ""
+
+#: config/i386/cygming.opt:23
+msgid "Create console application"
+msgstr ""
+
+#: config/i386/cygming.opt:27
+msgid "Generate code for a DLL"
+msgstr ""
+
+#: config/i386/cygming.opt:31
+msgid "Ignore dllimport for functions"
+msgstr ""
+
+#: config/i386/cygming.opt:35
+msgid "Use Mingw-specific thread support"
+msgstr ""
+
+#: config/i386/cygming.opt:39
+msgid "Set Windows defines"
+msgstr ""
+
+#: config/i386/cygming.opt:43
+msgid "Create GUI application"
+msgstr ""
+
+#: config/i386/cygming.opt:51
+msgid "Compile code that relies on Cygwin DLL wrappers to support C++ operator new/delete replacement"
+msgstr ""
+
+#: config/i386/mingw-w64.opt:23
+msgid "Use unicode startup and define UNICODE macro"
+msgstr ""
+
+#: config/rs6000/476.opt:24
+msgid "Preserve the PowerPC 476's link stack by matching up a blr with the bcl/bl insns used for GOT accesses"
+msgstr ""
+
+#: config/rs6000/darwin.opt:38 config/rs6000/sysv4.opt:142
+msgid "Generate 64-bit code"
+msgstr ""
+
+#: config/rs6000/darwin.opt:42 config/rs6000/sysv4.opt:146
+msgid "Generate 32-bit code"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:96
+msgid "Use POWER instruction set"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:100
+msgid "Do not use POWER instruction set"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:104
+msgid "Use POWER2 instruction set"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:108
+msgid "Use PowerPC instruction set"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:112
+msgid "Do not use PowerPC instruction set"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:116
+msgid "Use PowerPC-64 instruction set"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:120
+msgid "Use PowerPC General Purpose group optional instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:124
+msgid "Use PowerPC Graphics group optional instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:128
+msgid "Use PowerPC V2.01 single field mfcr instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:132
+msgid "Use PowerPC V2.02 popcntb instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:136
+msgid "Use PowerPC V2.02 floating point rounding instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:140
+msgid "Use PowerPC V2.05 compare bytes instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:144
+msgid "Use extended PowerPC V2.05 move floating point to/from GPR instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:148
+msgid "Use AltiVec instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:152
+msgid "Use decimal floating point instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:156
+msgid "Use 4xx half-word multiply instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:160
+msgid "Use 4xx string-search dlmzb instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:164
+msgid "Generate load/store multiple instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:168
+msgid "Generate string instructions for block moves"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:172
+msgid "Use new mnemonics for PowerPC architecture"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:176
+msgid "Use old mnemonics for PowerPC architecture"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:180 config/pdp11/pdp11.opt:79
+msgid "Do not use hardware floating point"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:188
+msgid "Use PowerPC V2.06 popcntd instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:192
+msgid "Under -ffast-math, generate a FRIZ instruction for (double)(long long) conversions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:200
+msgid "Use vector/scalar (VSX) instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:240
+msgid "Do not generate load/store with update instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:244
+msgid "Generate load/store with update instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:248 config/arm/arm.opt:191
+msgid "Do not load the PIC register in function prologues"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:252
+msgid "Avoid generation of indexed load/store instructions when possible"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:256
+msgid "Mark __tls_get_addr calls with argument info"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:263
+msgid "Schedule the start and end of the procedure"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:267
+msgid "Return all structures in memory (AIX default)"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:271
+msgid "Return small structures in registers (SVR4 default)"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:275
+msgid "Conform more closely to IBM XLC semantics"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:279 config/rs6000/rs6000.opt:283
+msgid "Generate software reciprocal divide and square root for better throughput."
+msgstr ""
+
+#: config/rs6000/rs6000.opt:287
+msgid "Assume that the reciprocal estimate instructions provide more accuracy."
+msgstr ""
+
+#: config/rs6000/rs6000.opt:291
+msgid "Do not place floating point constants in TOC"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:295
+msgid "Place floating point constants in TOC"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:299
+msgid "Do not place symbol+offset constants in TOC"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:303
+msgid "Place symbol+offset constants in TOC"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:314
+msgid "Use only one TOC entry per procedure"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:318
+msgid "Put everything in the regular TOC"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:322
+msgid "Generate VRSAVE instructions when generating AltiVec code"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:326
+msgid "Deprecated option. Use -mno-vrsave instead"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:330
+msgid "Deprecated option. Use -mvrsave instead"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:334
+msgid "Specify how many bytes should be moved inline before calling out to memcpy/memmove"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:338
+msgid "Generate isel instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:342
+msgid "Deprecated option. Use -mno-isel instead"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:346
+msgid "Deprecated option. Use -misel instead"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:350
+msgid "Generate SPE SIMD instructions on E500"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:354
+msgid "Generate PPC750CL paired-single instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:358
+msgid "Deprecated option. Use -mno-spe instead"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:362
+msgid "Deprecated option. Use -mspe instead"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:366
+msgid "-mdebug=\tEnable debug output"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:370
+msgid "Use the AltiVec ABI extensions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:374
+msgid "Do not use the AltiVec ABI extensions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:378
+msgid "Use the SPE ABI extensions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:382
+msgid "Do not use the SPE ABI extensions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:389
+msgid "using darwin64 ABI"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:392
+msgid "using old darwin ABI"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:395
+msgid "using IEEE extended precision long double"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:398
+msgid "using IBM extended precision long double"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:402
+msgid "-mcpu=\tUse features of and schedule code for given CPU"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:406
+msgid "-mtune=\tSchedule code for given CPU"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:410
+msgid "-mtraceback=\tSelect full, part, or no traceback table"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:426
+msgid "Avoid all range limits on call instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:430
+msgid "Generate Cell microcode"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:434
+msgid "Warn when a Cell microcoded instruction is emitted"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:438
+msgid "Warn about deprecated 'vector long ...' AltiVec type usage"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:442
+msgid "-mfloat-gprs=\tSelect GPR floating point method"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:446
+msgid "Valid arguments to -mfloat-gprs=:"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:462
+msgid "-mlong-double-<n>\tSpecify size of long double (64 or 128 bits)"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:466
+msgid "Determine which dependences between insns are considered costly"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:470
+msgid "Specify which post scheduling nop insertion scheme to apply"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:474
+msgid "Specify alignment of structure fields default/natural"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:478
+msgid "Valid arguments to -malign-:"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:488
+msgid "Specify scheduling priority for dispatch slot restricted insns"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:492
+msgid "Single-precision floating point unit"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:496
+msgid "Double-precision floating point unit"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:500
+msgid "Floating point unit does not support divide & sqrt"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:504
+msgid "-mfpu=\tSpecify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu)"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:526
+msgid "Specify Xilinx FPU."
+msgstr ""
+
+#: config/rs6000/rs6000.opt:530
+msgid "Use/do not use r11 to hold the static link in calls to functions via pointers."
+msgstr ""
+
+#: config/rs6000/rs6000.opt:534
+msgid "Control whether we save the TOC in the prologue for indirect calls or generate the save inline"
+msgstr ""
+
+#: config/rs6000/aix64.opt:24
+msgid "Compile for 64-bit pointers"
+msgstr ""
+
+#: config/rs6000/aix64.opt:28
+msgid "Compile for 32-bit pointers"
+msgstr ""
+
+#: config/rs6000/aix64.opt:32
+msgid "Support message passing with the Parallel Environment"
+msgstr ""
+
+#: config/rs6000/linux64.opt:24
+msgid "Call mcount for profiling before a function prologue"
+msgstr ""
+
+#: config/rs6000/linux64.opt:28
+msgid "Select code model"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:25
+msgid "Select ABI calling convention"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:29 config/c6x/c6x.opt:42
+msgid "Select method for sdata handling"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:49 config/rs6000/sysv4.opt:53
+msgid "Align to the base type of the bit-field"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:58 config/rs6000/sysv4.opt:62
+msgid "Produce code relocatable at runtime"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:66 config/rs6000/sysv4.opt:70
+msgid "Produce little endian code"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:74 config/rs6000/sysv4.opt:78
+msgid "Produce big endian code"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:83 config/rs6000/sysv4.opt:87
+#: config/rs6000/sysv4.opt:96 config/rs6000/sysv4.opt:138
+#: config/rs6000/sysv4.opt:150
+msgid "no description yet"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:91
+msgid "Assume all variable arg functions are prototyped"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:100
+msgid "Use EABI"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:104
+msgid "Allow bit-fields to cross word boundaries"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:108
+msgid "Use alternate register names"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:114
+msgid "Use default method for sdata handling"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:118
+msgid "Link with libsim.a, libc.a and sim-crt0.o"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:122
+msgid "Link with libads.a, libc.a and crt0.o"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:126
+msgid "Link with libyk.a, libc.a and crt0.o"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:130
+msgid "Link with libmvme.a, libc.a and crt0.o"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:134
+msgid "Set the PPC_EMB bit in the ELF flags header"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:154
+msgid "Generate code to use a non-exec PLT and GOT"
+msgstr ""
+
+#: config/rs6000/sysv4.opt:158
+msgid "Generate code for old exec BSS PLT"
+msgstr ""
+
+#: config/rs6000/rs6000-tables.opt:24
+msgid "Known CPUs (for use with the -mcpu= and -mtune= options):"
+msgstr ""
+
+#: config/spu/spu.opt:20
+msgid "Emit warnings when run-time relocations are generated"
+msgstr ""
+
+#: config/spu/spu.opt:24
+msgid "Emit errors when run-time relocations are generated"
+msgstr ""
+
+#: config/spu/spu.opt:28
+msgid "Specify cost of branches (Default 20)"
+msgstr ""
+
+#: config/spu/spu.opt:32
+msgid "Make sure loads and stores are not moved past DMA instructions"
+msgstr ""
+
+#: config/spu/spu.opt:36
+msgid "volatile must be specified on any memory that is effected by DMA"
+msgstr ""
+
+#: config/spu/spu.opt:40 config/spu/spu.opt:44
+msgid "Insert nops when it might improve performance by allowing dual issue (default)"
+msgstr ""
+
+#: config/spu/spu.opt:48
+msgid "Use standard main function as entry for startup"
+msgstr ""
+
+#: config/spu/spu.opt:52
+msgid "Generate branch hints for branches"
+msgstr ""
+
+#: config/spu/spu.opt:56
+msgid "Maximum number of nops to insert for a hint (Default 2)"
+msgstr ""
+
+#: config/spu/spu.opt:60
+msgid "Approximate maximum number of instructions to allow between a hint and its branch [125]"
+msgstr ""
+
+#: config/spu/spu.opt:64
+msgid "Generate code for 18 bit addressing"
+msgstr ""
+
+#: config/spu/spu.opt:68
+msgid "Generate code for 32 bit addressing"
+msgstr ""
+
+#: config/spu/spu.opt:76
+msgid "Insert hbrp instructions after hinted branch targets to avoid the SPU hang issue"
+msgstr ""
+
+#: config/spu/spu.opt:88
+msgid "Access variables in 32-bit PPU objects (default)"
+msgstr ""
+
+#: config/spu/spu.opt:92
+msgid "Access variables in 64-bit PPU objects"
+msgstr ""
+
+#: config/spu/spu.opt:96
+msgid "Allow conversions between __ea and generic pointers (default)"
+msgstr ""
+
+#: config/spu/spu.opt:100
+msgid "Size (in KB) of software data cache"
+msgstr ""
+
+#: config/spu/spu.opt:104
+msgid "Atomically write back software data cache lines (default)"
+msgstr ""
+
+#: config/mcore/mcore.opt:23
+msgid "Generate code for the M*Core M210"
+msgstr ""
+
+#: config/mcore/mcore.opt:27
+msgid "Generate code for the M*Core M340"
+msgstr ""
+
+#: config/mcore/mcore.opt:31
+msgid "Force functions to be aligned to a 4 byte boundary"
+msgstr ""
+
+#: config/mcore/mcore.opt:35 config/score/score.opt:23
+msgid "Generate big-endian code"
+msgstr ""
+
+#: config/mcore/mcore.opt:39
+msgid "Emit call graph information"
+msgstr ""
+
+#: config/mcore/mcore.opt:43
+msgid "Use the divide instruction"
+msgstr ""
+
+#: config/mcore/mcore.opt:47
+msgid "Inline constants if it can be done in 2 insns or less"
+msgstr ""
+
+#: config/mcore/mcore.opt:51 config/score/score.opt:27
+msgid "Generate little-endian code"
+msgstr ""
+
+#: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
+msgid "Assume that run-time support has been provided, so omit -lsim from the linker command line"
+msgstr ""
+
+#: config/mcore/mcore.opt:60
+msgid "Use arbitrary sized immediates in bit operations"
+msgstr ""
+
+#: config/mcore/mcore.opt:64
+msgid "Prefer word accesses over byte accesses"
+msgstr ""
+
+#: config/mcore/mcore.opt:71
+msgid "Set the maximum amount for a single stack increment operation"
+msgstr ""
+
+#: config/mcore/mcore.opt:75
+msgid "Always treat bitfields as int-sized"
+msgstr ""
+
+#: config/c6x/c6x.opt:30 config/mips/mips.opt:130 config/mep/mep.opt:82
+msgid "Use big-endian byte order"
+msgstr ""
+
+#: config/c6x/c6x.opt:34 config/mips/mips.opt:134 config/mep/mep.opt:86
+msgid "Use little-endian byte order"
+msgstr ""
+
+#: config/c6x/c6x.opt:38 config/bfin/bfin.opt:40 config/mep/mep.opt:143
+msgid "Use simulator runtime"
+msgstr ""
+
+#: config/c6x/c6x.opt:46
+msgid "Valid arguments for the -msdata= option"
+msgstr ""
+
+#: config/c6x/c6x.opt:59
+msgid "Compile for the DSBT shared library ABI"
+msgstr ""
+
+#: config/c6x/c6x.opt:63 config/bfin/bfin.opt:82
+msgid "Avoid generating pc-relative calls; use indirection"
+msgstr ""
+
+#: config/c6x/c6x-tables.opt:24
+msgid "Known C6X ISAs (for use with the -march= option):"
+msgstr ""
+
+#: config/sh/sh.opt:45
+msgid "Generate SH1 code"
+msgstr ""
+
+#: config/sh/sh.opt:49
+msgid "Generate SH2 code"
+msgstr ""
+
+#: config/sh/sh.opt:53
+msgid "Generate default double-precision SH2a-FPU code"
+msgstr ""
+
+#: config/sh/sh.opt:57
+msgid "Generate SH2a FPU-less code"
+msgstr ""
+
+#: config/sh/sh.opt:61
+msgid "Generate default single-precision SH2a-FPU code"
+msgstr ""
+
+#: config/sh/sh.opt:65
+msgid "Generate only single-precision SH2a-FPU code"
+msgstr ""
+
+#: config/sh/sh.opt:69
+msgid "Generate SH2e code"
+msgstr ""
+
+#: config/sh/sh.opt:73
+msgid "Generate SH3 code"
+msgstr ""
+
+#: config/sh/sh.opt:77
+msgid "Generate SH3e code"
+msgstr ""
+
+#: config/sh/sh.opt:81
+msgid "Generate SH4 code"
+msgstr ""
+
+#: config/sh/sh.opt:85
+msgid "Generate SH4-100 code"
+msgstr ""
+
+#: config/sh/sh.opt:89
+msgid "Generate SH4-200 code"
+msgstr ""
+
+#: config/sh/sh.opt:95
+msgid "Generate SH4-300 code"
+msgstr ""
+
+#: config/sh/sh.opt:99
+msgid "Generate SH4 FPU-less code"
+msgstr ""
+
+#: config/sh/sh.opt:103
+msgid "Generate SH4-100 FPU-less code"
+msgstr ""
+
+#: config/sh/sh.opt:107
+msgid "Generate SH4-200 FPU-less code"
+msgstr ""
+
+#: config/sh/sh.opt:111
+msgid "Generate SH4-300 FPU-less code"
+msgstr ""
+
+#: config/sh/sh.opt:115
+msgid "Generate code for SH4 340 series (MMU/FPU-less)"
+msgstr ""
+
+#: config/sh/sh.opt:120
+msgid "Generate code for SH4 400 series (MMU/FPU-less)"
+msgstr ""
+
+#: config/sh/sh.opt:125
+msgid "Generate code for SH4 500 series (FPU-less)."
+msgstr ""
+
+#: config/sh/sh.opt:130
+msgid "Generate default single-precision SH4 code"
+msgstr ""
+
+#: config/sh/sh.opt:134
+msgid "Generate default single-precision SH4-100 code"
+msgstr ""
+
+#: config/sh/sh.opt:138
+msgid "Generate default single-precision SH4-200 code"
+msgstr ""
+
+#: config/sh/sh.opt:142
+msgid "Generate default single-precision SH4-300 code"
+msgstr ""
+
+#: config/sh/sh.opt:146
+msgid "Generate only single-precision SH4 code"
+msgstr ""
+
+#: config/sh/sh.opt:150
+msgid "Generate only single-precision SH4-100 code"
+msgstr ""
+
+#: config/sh/sh.opt:154
+msgid "Generate only single-precision SH4-200 code"
+msgstr ""
+
+#: config/sh/sh.opt:158
+msgid "Generate only single-precision SH4-300 code"
+msgstr ""
+
+#: config/sh/sh.opt:162
+msgid "Generate SH4a code"
+msgstr ""
+
+#: config/sh/sh.opt:166
+msgid "Generate SH4a FPU-less code"
+msgstr ""
+
+#: config/sh/sh.opt:170
+msgid "Generate default single-precision SH4a code"
+msgstr ""
+
+#: config/sh/sh.opt:174
+msgid "Generate only single-precision SH4a code"
+msgstr ""
+
+#: config/sh/sh.opt:178
+msgid "Generate SH4al-dsp code"
+msgstr ""
+
+#: config/sh/sh.opt:182
+msgid "Generate 32-bit SHmedia code"
+msgstr ""
+
+#: config/sh/sh.opt:186
+msgid "Generate 32-bit FPU-less SHmedia code"
+msgstr ""
+
+#: config/sh/sh.opt:190
+msgid "Generate 64-bit SHmedia code"
+msgstr ""
+
+#: config/sh/sh.opt:194
+msgid "Generate 64-bit FPU-less SHmedia code"
+msgstr ""
+
+#: config/sh/sh.opt:198
+msgid "Generate SHcompact code"
+msgstr ""
+
+#: config/sh/sh.opt:202
+msgid "Generate FPU-less SHcompact code"
+msgstr ""
+
+#: config/sh/sh.opt:210
+msgid "Throttle unrolling to avoid thrashing target registers unless the unroll benefit outweighs this"
+msgstr ""
+
+#: config/sh/sh.opt:214
+msgid "Generate code in big endian mode"
+msgstr ""
+
+#: config/sh/sh.opt:218
+msgid "Generate 32-bit offsets in switch tables"
+msgstr ""
+
+#: config/sh/sh.opt:222
+msgid "Generate bit instructions"
+msgstr ""
+
+#: config/sh/sh.opt:226
+msgid "Cost to assume for a branch insn"
+msgstr ""
+
+#: config/sh/sh.opt:230
+msgid "Enable cbranchdi4 pattern"
+msgstr ""
+
+#: config/sh/sh.opt:234
+msgid "Emit cmpeqdi_t pattern even when -mcbranchdi is in effect."
+msgstr ""
+
+#: config/sh/sh.opt:238
+msgid "Enable SH5 cut2 workaround"
+msgstr ""
+
+#: config/sh/sh.opt:242
+msgid "Align doubles at 64-bit boundaries"
+msgstr ""
+
+#: config/sh/sh.opt:246
+msgid "Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table"
+msgstr ""
+
+#: config/sh/sh.opt:250
+msgid "Specify name for 32 bit signed division function"
+msgstr ""
+
+#: config/sh/sh.opt:254
+msgid "Enable the use of 64-bit floating point registers in fmov instructions. See -mdalign if 64-bit alignment is required."
+msgstr ""
+
+#: config/sh/sh.opt:262
+msgid "Enable the use of the fused floating point multiply-accumulate operation"
+msgstr ""
+
+#: config/sh/sh.opt:266
+msgid "Cost to assume for gettr insn"
+msgstr ""
+
+#: config/sh/sh.opt:270 config/sh/sh.opt:320
+msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions"
+msgstr ""
+
+#: config/sh/sh.opt:274
+msgid "Increase the IEEE compliance for floating-point code"
+msgstr ""
+
+#: config/sh/sh.opt:278
+msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact"
+msgstr ""
+
+#: config/sh/sh.opt:282
+msgid "inline code to invalidate instruction cache entries after setting up nested function trampolines"
+msgstr ""
+
+#: config/sh/sh.opt:286
+msgid "Assume symbols might be invalid"
+msgstr ""
+
+#: config/sh/sh.opt:290
+msgid "Annotate assembler instructions with estimated addresses"
+msgstr ""
+
+#: config/sh/sh.opt:294
+msgid "Generate code in little endian mode"
+msgstr ""
+
+#: config/sh/sh.opt:298
+msgid "Mark MAC register as call-clobbered"
+msgstr ""
+
+#: config/sh/sh.opt:304
+msgid "Make structs a multiple of 4 bytes (warning: ABI altered)"
+msgstr ""
+
+#: config/sh/sh.opt:308
+msgid "Emit function-calls using global offset table when generating PIC"
+msgstr ""
+
+#: config/sh/sh.opt:312
+msgid "Assume pt* instructions won't trap"
+msgstr ""
+
+#: config/sh/sh.opt:316
+msgid "Shorten address references during linking"
+msgstr ""
+
+#: config/sh/sh.opt:324
+msgid "Use software atomic sequences supported by kernel"
+msgstr ""
+
+#: config/sh/sh.opt:328
+msgid "Deprecated. Use -Os instead"
+msgstr ""
+
+#: config/sh/sh.opt:332
+msgid "Cost to assume for a multiply insn"
+msgstr ""
+
+#: config/sh/sh.opt:336
+msgid "Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate if the inline code would not work in user mode."
+msgstr ""
+
+#: config/sh/sh.opt:342
+msgid "Pretend a branch-around-a-move is a conditional move."
+msgstr ""
+
+#: config/sh/superh.opt:6
+msgid "Board name [and memory region]."
+msgstr ""
+
+#: config/sh/superh.opt:10
+msgid "Runtime name."
+msgstr ""
+
+#: config/arm/arm.opt:26
+msgid "TLS dialect to use:"
+msgstr ""
+
+#: config/arm/arm.opt:36
+msgid "Specify an ABI"
+msgstr ""
+
+#: config/arm/arm.opt:40
+msgid "Known ARM ABIs (for use with the -mabi= option):"
+msgstr ""
+
+#: config/arm/arm.opt:59
+msgid "Generate a call to abort if a noreturn function returns"
+msgstr ""
+
+#: config/arm/arm.opt:66
+msgid "Pass FP arguments in FP registers"
+msgstr ""
+
+#: config/arm/arm.opt:70
+msgid "Generate APCS conformant stack frames"
+msgstr ""
+
+#: config/arm/arm.opt:74
+msgid "Generate re-entrant, PIC code"
+msgstr ""
+
+#: config/arm/arm.opt:90
+msgid "Generate code in 32 bit ARM state."
+msgstr ""
+
+#: config/arm/arm.opt:94
+msgid "Assume target CPU is configured as big endian"
+msgstr ""
+
+#: config/arm/arm.opt:98
+msgid "Thumb: Assume non-static functions may be called from ARM code"
+msgstr ""
+
+#: config/arm/arm.opt:102
+msgid "Thumb: Assume function pointers may go to non-Thumb aware code"
+msgstr ""
+
+#: config/arm/arm.opt:106
+msgid "Cirrus: Place NOPs to avoid invalid instruction combinations"
+msgstr ""
+
+#: config/arm/arm.opt:110 config/bfin/bfin.opt:44
+msgid "Specify the name of the target CPU"
+msgstr ""
+
+#: config/arm/arm.opt:114
+msgid "Specify if floating point hardware should be used"
+msgstr ""
+
+#: config/arm/arm.opt:118
+msgid "Known floating-point ABIs (for use with the -mfloat-abi= option):"
+msgstr ""
+
+#: config/arm/arm.opt:137
+msgid "Specify the __fp16 floating-point format"
+msgstr ""
+
+#: config/arm/arm.opt:141
+msgid "Known __fp16 formats (for use with the -mfp16-format= option):"
+msgstr ""
+
+#: config/arm/arm.opt:164
+msgid "Specify the name of the target floating point hardware/format"
+msgstr ""
+
+#: config/arm/arm.opt:171
+msgid "Assume target CPU is configured as little endian"
+msgstr ""
+
+#: config/arm/arm.opt:175
+msgid "Generate call insns as indirect calls, if necessary"
+msgstr ""
+
+#: config/arm/arm.opt:179
+msgid "Specify the register to be used for PIC addressing"
+msgstr ""
+
+#: config/arm/arm.opt:183
+msgid "Store function names in object code"
+msgstr ""
+
+#: config/arm/arm.opt:187
+msgid "Permit scheduling of a function's prologue sequence"
+msgstr ""
+
+#: config/arm/arm.opt:198
+msgid "Specify the minimum bit alignment of structures"
+msgstr ""
+
+#: config/arm/arm.opt:202
+msgid "Generate code for Thumb state"
+msgstr ""
+
+#: config/arm/arm.opt:206
+msgid "Support calls between Thumb and ARM instruction sets"
+msgstr ""
+
+#: config/arm/arm.opt:210
+msgid "Specify thread local storage scheme"
+msgstr ""
+
+#: config/arm/arm.opt:214
+msgid "Specify how to access the thread pointer"
+msgstr ""
+
+#: config/arm/arm.opt:218
+msgid "Valid arguments to -mtp=:"
+msgstr ""
+
+#: config/arm/arm.opt:231
+msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
+msgstr ""
+
+#: config/arm/arm.opt:235
+msgid "Thumb: Generate (leaf) stack frames even if not needed"
+msgstr ""
+
+#: config/arm/arm.opt:248
+msgid "Assume big endian bytes, little endian words. This option is deprecated."
+msgstr ""
+
+#: config/arm/arm.opt:252
+msgid "Use Neon quad-word (rather than double-word) registers for vectorization"
+msgstr ""
+
+#: config/arm/arm.opt:256
+msgid "Use Neon double-word (rather than quad-word) registers for vectorization"
+msgstr ""
+
+#: config/arm/arm.opt:260
+msgid "Only generate absolute relocations on word sized values."
+msgstr ""
+
+#: config/arm/arm.opt:264
+msgid "Avoid overlapping destination and address registers on LDRD instructions"
+msgstr ""
+
+#: config/arm/arm.opt:269
+msgid "Enable unaligned word and halfword accesses to packed data."
+msgstr ""
+
+#: config/arm/pe.opt:23
+msgid "Ignore dllimport attribute for functions"
+msgstr ""
+
+#: config/arm/arm-tables.opt:25
+msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):"
+msgstr ""
+
+#: config/arm/arm-tables.opt:275
+msgid "Known ARM architectures (for use with the -march= option):"
+msgstr ""
+
+#: config/arm/arm-tables.opt:357
+msgid "Known ARM FPUs (for use with the -mfpu= option):"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:23
+msgid "Generate code for an 11/10"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:27
+msgid "Generate code for an 11/40"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:31
+msgid "Generate code for an 11/45"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:35
+msgid "Return floating-point results in ac0 (fr0 in Unix assembler syntax)"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:39
+msgid "Do not use inline patterns for copying memory"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:43
+msgid "Use inline patterns for copying memory"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:47
+msgid "Do not pretend that branches are expensive"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:51
+msgid "Pretend that branches are expensive"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:55
+msgid "Use the DEC assembler syntax"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:59
+msgid "Use 32 bit float"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:63
+msgid "Use 64 bit float"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:71
+msgid "Use 16 bit int"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:75
+msgid "Use 32 bit int"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:83
+msgid "Target has split I&D"
+msgstr ""
+
+#: config/pdp11/pdp11.opt:87
+msgid "Use UNIX assembler syntax"
+msgstr ""
+
+#: config/avr/avr.opt:23
+msgid "Use subroutines for function prologues and epilogues"
+msgstr ""
+
+#: config/avr/avr.opt:27
+msgid "-mmcu=MCU\tSelect the target MCU"
+msgstr ""
+
+#: config/avr/avr.opt:37
+msgid "Use an 8-bit 'int' type"
+msgstr ""
+
+#: config/avr/avr.opt:41
+msgid "Change the stack pointer without disabling interrupts"
+msgstr ""
+
+#: config/avr/avr.opt:45
+msgid "Set the branch costs for conditional branch instructions. Reasonable values are small, non-negative integers. The default branch cost is 0."
+msgstr ""
+
+#: config/avr/avr.opt:55
+msgid "Use rjmp/rcall (limited range) on >8K devices"
+msgstr ""
+
+#: config/avr/avr.opt:59
+msgid "Change only the low 8 bits of the stack pointer"
+msgstr ""
+
+#: config/avr/avr.opt:63
+msgid "Relax branches"
+msgstr ""
+
+#: config/avr/avr.opt:67
+msgid "Make the linker relaxation machine assume that a program counter wrap-around occurs."
+msgstr ""
+
+#: config/avr/avr.opt:71
+msgid "Accumulate outgoing function arguments and acquire/release the needed stack space for outpoing function arguments in function prologue/epilogue. Without this option, outgoing arguments are pushed before calling a function and popped afterwards. This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf."
+msgstr ""
+
+#: config/avr/avr.opt:75
+msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
+msgstr ""
+
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
+#: config/avr/avr-tables.opt:24
+msgid "Known MCU names:"
+msgstr ""
+
+#: config/rl78/rl78.opt:27 config/rx/rx.opt:84
+msgid "Use the simulator runtime."
+msgstr ""
+
+#: config/rl78/rl78.opt:31
+msgid "Select hardware or software multiplication support."
+msgstr ""
+
+#: config/pa/pa-hpux.opt:27
+msgid "Generate cpp defines for server IO"
+msgstr ""
+
+#: config/pa/pa-hpux.opt:31 config/pa/pa-hpux1010.opt:23
+#: config/pa/pa-hpux1111.opt:23 config/pa/pa-hpux1131.opt:23
+msgid "Specify UNIX standard for predefines and linking"
+msgstr ""
+
+#: config/pa/pa-hpux.opt:35
+msgid "Generate cpp defines for workstation IO"
+msgstr ""
+
+#: config/pa/pa.opt:30 config/pa/pa.opt:83 config/pa/pa.opt:91
+msgid "Generate PA1.0 code"
+msgstr ""
+
+#: config/pa/pa.opt:34 config/pa/pa.opt:95 config/pa/pa.opt:136
+msgid "Generate PA1.1 code"
+msgstr ""
+
+#: config/pa/pa.opt:38 config/pa/pa.opt:99
+msgid "Generate PA2.0 code (requires binutils 2.10 or later)"
+msgstr ""
+
+#: config/pa/pa.opt:42
+msgid "Generate code for huge switch statements"
+msgstr ""
+
+#: config/pa/pa.opt:46
+msgid "Disable FP regs"
+msgstr ""
+
+#: config/pa/pa.opt:50
+msgid "Disable indexed addressing"
+msgstr ""
+
+#: config/pa/pa.opt:54
+msgid "Generate fast indirect calls"
+msgstr ""
+
+#: config/pa/pa.opt:62
+msgid "Assume code will be assembled by GAS"
+msgstr ""
+
+#: config/pa/pa.opt:66
+msgid "Put jumps in call delay slots"
+msgstr ""
+
+#: config/pa/pa.opt:71
+msgid "Enable linker optimizations"
+msgstr ""
+
+#: config/pa/pa.opt:75
+msgid "Always generate long calls"
+msgstr ""
+
+#: config/pa/pa.opt:79
+msgid "Emit long load/store sequences"
+msgstr ""
+
+#: config/pa/pa.opt:87
+msgid "Disable space regs"
+msgstr ""
+
+#: config/pa/pa.opt:103
+msgid "Use portable calling conventions"
+msgstr ""
+
+#: config/pa/pa.opt:107
+msgid "Specify CPU for scheduling purposes. Valid arguments are 700, 7100, 7100LC, 7200, 7300, and 8000"
+msgstr ""
+
+#: config/pa/pa.opt:140
+msgid "Do not disable space regs"
+msgstr ""
+
+#: config/pa/pa64-hpux.opt:23
+msgid "Assume code will be linked by GNU ld"
+msgstr ""
+
+#: config/pa/pa64-hpux.opt:27
+msgid "Assume code will be linked by HP ld"
+msgstr ""
+
+#: config/xtensa/xtensa.opt:23
+msgid "Use CONST16 instruction to load constants"
+msgstr ""
+
+#: config/xtensa/xtensa.opt:27
+msgid "Disable position-independent code (PIC) for use in OS kernel code"
+msgstr ""
+
+#: config/xtensa/xtensa.opt:31
+msgid "Use indirect CALLXn instructions for large programs"
+msgstr ""
+
+#: config/xtensa/xtensa.opt:35
+msgid "Automatically align branch targets to reduce branch penalties"
+msgstr ""
+
+#: config/xtensa/xtensa.opt:39
+msgid "Intersperse literal pools with code in the text section"
+msgstr ""
+
+#: config/xtensa/xtensa.opt:43
+msgid "-mno-serialize-volatile\tDo not serialize volatile memory references with MEMW instructions"
+msgstr ""
+
+#: config/stormy16/stormy16.opt:24
+msgid "Provide libraries for the simulator"
+msgstr ""
+
+#: config/mips/mips.opt:32
+msgid "-mabi=ABI\tGenerate code that conforms to the given ABI"
+msgstr ""
+
+#: config/mips/mips.opt:36
+msgid "Known MIPS ABIs (for use with the -mabi= option):"
+msgstr ""
+
+#: config/mips/mips.opt:55
+msgid "Generate code that can be used in SVR4-style dynamic objects"
+msgstr ""
+
+#: config/mips/mips.opt:59
+msgid "Use PMC-style 'mad' instructions"
+msgstr ""
+
+#: config/mips/mips.opt:63
+msgid "-march=ISA\tGenerate code for the given ISA"
+msgstr ""
+
+#: config/mips/mips.opt:67
+msgid "-mbranch-cost=COST\tSet the cost of branches to roughly COST instructions"
+msgstr ""
+
+#: config/mips/mips.opt:71
+msgid "Use Branch Likely instructions, overriding the architecture default"
+msgstr ""
+
+#: config/mips/mips.opt:75
+msgid "Switch on/off MIPS16 ASE on alternating functions for compiler testing"
+msgstr ""
+
+#: config/mips/mips.opt:79
+msgid "Trap on integer divide by zero"
+msgstr ""
+
+#: config/mips/mips.opt:83
+msgid "-mcode-readable=SETTING\tSpecify when instructions are allowed to access code"
+msgstr ""
+
+#: config/mips/mips.opt:87
+msgid "Valid arguments to -mcode-readable=:"
+msgstr ""
+
+#: config/mips/mips.opt:100
+msgid "Use branch-and-break sequences to check for integer divide by zero"
+msgstr ""
+
+#: config/mips/mips.opt:104
+msgid "Use trap instructions to check for integer divide by zero"
+msgstr ""
+
+#: config/mips/mips.opt:108
+msgid "Allow the use of MDMX instructions"
+msgstr ""
+
+#: config/mips/mips.opt:112
+msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations"
+msgstr ""
+
+#: config/mips/mips.opt:116
+msgid "Use MIPS-DSP instructions"
+msgstr ""
+
+#: config/mips/mips.opt:120
+msgid "Use MIPS-DSP REV 2 instructions"
+msgstr ""
+
+#: config/mips/mips.opt:138 config/iq2000/iq2000.opt:61
+msgid "Use ROM instead of RAM"
+msgstr ""
+
+#: config/mips/mips.opt:142
+msgid "Use NewABI-style %reloc() assembly operators"
+msgstr ""
+
+#: config/mips/mips.opt:146
+msgid "Use -G for data that is not defined by the current object"
+msgstr ""
+
+#: config/mips/mips.opt:150
+msgid "Work around certain 24K errata"
+msgstr ""
+
+#: config/mips/mips.opt:154
+msgid "Work around certain R4000 errata"
+msgstr ""
+
+#: config/mips/mips.opt:158
+msgid "Work around certain R4400 errata"
+msgstr ""
+
+#: config/mips/mips.opt:162
+msgid "Work around certain R10000 errata"
+msgstr ""
+
+#: config/mips/mips.opt:166
+msgid "Work around errata for early SB-1 revision 2 cores"
+msgstr ""
+
+#: config/mips/mips.opt:170
+msgid "Work around certain VR4120 errata"
+msgstr ""
+
+#: config/mips/mips.opt:174
+msgid "Work around VR4130 mflo/mfhi errata"
+msgstr ""
+
+#: config/mips/mips.opt:178
+msgid "Work around an early 4300 hardware bug"
+msgstr ""
+
+#: config/mips/mips.opt:182
+msgid "FP exceptions are enabled"
+msgstr ""
+
+#: config/mips/mips.opt:186
+msgid "Use 32-bit floating-point registers"
+msgstr ""
+
+#: config/mips/mips.opt:190
+msgid "Use 64-bit floating-point registers"
+msgstr ""
+
+#: config/mips/mips.opt:194
+msgid "-mflush-func=FUNC\tUse FUNC to flush the cache before calling stack trampolines"
+msgstr ""
+
+#: config/mips/mips.opt:198
+msgid "Generate floating-point multiply-add instructions"
+msgstr ""
+
+#: config/mips/mips.opt:202
+msgid "Use 32-bit general registers"
+msgstr ""
+
+#: config/mips/mips.opt:206
+msgid "Use 64-bit general registers"
+msgstr ""
+
+#: config/mips/mips.opt:210
+msgid "Use GP-relative addressing to access small data"
+msgstr ""
+
+#: config/mips/mips.opt:214
+msgid "When generating -mabicalls code, allow executables to use PLTs and copy relocations"
+msgstr ""
+
+#: config/mips/mips.opt:218
+msgid "Allow the use of hardware floating-point ABI and instructions"
+msgstr ""
+
+#: config/mips/mips.opt:222
+msgid "Generate code that can be safely linked with MIPS16 code."
+msgstr ""
+
+#: config/mips/mips.opt:226
+msgid "-mipsN\tGenerate code for ISA level N"
+msgstr ""
+
+#: config/mips/mips.opt:230
+msgid "Generate MIPS16 code"
+msgstr ""
+
+#: config/mips/mips.opt:234
+msgid "Use MIPS-3D instructions"
+msgstr ""
+
+#: config/mips/mips.opt:238
+msgid "Use ll, sc and sync instructions"
+msgstr ""
+
+#: config/mips/mips.opt:242
+msgid "Use -G for object-local data"
+msgstr ""
+
+#: config/mips/mips.opt:246
+msgid "Use indirect calls"
+msgstr ""
+
+#: config/mips/mips.opt:250
+msgid "Use a 32-bit long type"
+msgstr ""
+
+#: config/mips/mips.opt:254
+msgid "Use a 64-bit long type"
+msgstr ""
+
+#: config/mips/mips.opt:258
+msgid "Pass the address of the ra save location to _mcount in $12"
+msgstr ""
+
+#: config/mips/mips.opt:262
+msgid "Don't optimize block moves"
+msgstr ""
+
+#: config/mips/mips.opt:266
+msgid "Allow the use of MT instructions"
+msgstr ""
+
+#: config/mips/mips.opt:270
+msgid "Prevent the use of all floating-point operations"
+msgstr ""
+
+#: config/mips/mips.opt:274
+msgid "Do not use a cache-flushing function before calling stack trampolines"
+msgstr ""
+
+#: config/mips/mips.opt:278
+msgid "Do not use MDMX instructions"
+msgstr ""
+
+#: config/mips/mips.opt:282
+msgid "Generate normal-mode code"
+msgstr ""
+
+#: config/mips/mips.opt:286
+msgid "Do not use MIPS-3D instructions"
+msgstr ""
+
+#: config/mips/mips.opt:290
+msgid "Use paired-single floating-point instructions"
+msgstr ""
+
+#: config/mips/mips.opt:294
+msgid "-mr10k-cache-barrier=SETTING\tSpecify when r10k cache barriers should be inserted"
+msgstr ""
+
+#: config/mips/mips.opt:298
+msgid "Valid arguments to -mr10k-cache-barrier=:"
+msgstr ""
+
+#: config/mips/mips.opt:311
+msgid "Try to allow the linker to turn PIC calls into direct calls"
+msgstr ""
+
+#: config/mips/mips.opt:315
+msgid "When generating -mabicalls code, make the code suitable for use in shared libraries"
+msgstr ""
+
+#: config/mips/mips.opt:319
+msgid "Restrict the use of hardware floating-point instructions to 32-bit operations"
+msgstr ""
+
+#: config/mips/mips.opt:323
+msgid "Use SmartMIPS instructions"
+msgstr ""
+
+#: config/mips/mips.opt:327
+msgid "Prevent the use of all hardware floating-point instructions"
+msgstr ""
+
+#: config/mips/mips.opt:331
+msgid "Optimize lui/addiu address loads"
+msgstr ""
+
+#: config/mips/mips.opt:335
+msgid "Assume all symbols have 32-bit values"
+msgstr ""
+
+#: config/mips/mips.opt:339
+msgid "Use synci instruction to invalidate i-cache"
+msgstr ""
+
+#: config/mips/mips.opt:343
+msgid "-mtune=PROCESSOR\tOptimize the output for PROCESSOR"
+msgstr ""
+
+#: config/mips/mips.opt:347 config/iq2000/iq2000.opt:74
+msgid "Put uninitialized constants in ROM (needs -membedded-data)"
+msgstr ""
+
+#: config/mips/mips.opt:351
+msgid "Perform VR4130-specific alignment optimizations"
+msgstr ""
+
+#: config/mips/mips.opt:355
+msgid "Lift restrictions on GOT size"
+msgstr ""
+
+#: config/mips/mips-tables.opt:24
+msgid "Known MIPS CPUs (for use with the -march= and -mtune= options):"
+msgstr ""
+
+#: config/mips/mips-tables.opt:28
+msgid "Known MIPS ISA levels (for use with the -mips option):"
+msgstr ""
+
+#: config/fr30/fr30.opt:23
+msgid "Assume small address space"
+msgstr ""
+
+#: config/vax/vax.opt:23 config/vax/vax.opt:27
+msgid "Target DFLOAT double precision code"
+msgstr ""
+
+#: config/vax/vax.opt:31 config/vax/vax.opt:35
+msgid "Generate GFLOAT double precision code"
+msgstr ""
+
+#: config/vax/vax.opt:39
+msgid "Generate code for GNU assembler (gas)"
+msgstr ""
+
+#: config/vax/vax.opt:43
+msgid "Generate code for UNIX assembler"
+msgstr ""
+
+#: config/vax/vax.opt:47
+msgid "Use VAXC structure conventions"
+msgstr ""
+
+#: config/vax/vax.opt:51
+msgid "Use new adddi3/subdi3 patterns"
+msgstr ""
+
+#: config/cris/linux.opt:27
+msgid "Together with -fpic and -fPIC, do not use GOTPLT references"
+msgstr ""
+
+#: config/cris/cris.opt:45
+msgid "Work around bug in multiplication instruction"
+msgstr ""
+
+#: config/cris/cris.opt:51
+msgid "Compile for ETRAX 4 (CRIS v3)"
+msgstr ""
+
+#: config/cris/cris.opt:56
+msgid "Compile for ETRAX 100 (CRIS v8)"
+msgstr ""
+
+#: config/cris/cris.opt:64
+msgid "Emit verbose debug information in assembly code"
+msgstr ""
+
+#: config/cris/cris.opt:71
+msgid "Do not use condition codes from normal instructions"
+msgstr ""
+
+#: config/cris/cris.opt:80
+msgid "Do not emit addressing modes with side-effect assignment"
+msgstr ""
+
+#: config/cris/cris.opt:89
+msgid "Do not tune stack alignment"
+msgstr ""
+
+#: config/cris/cris.opt:98
+msgid "Do not tune writable data alignment"
+msgstr ""
+
+#: config/cris/cris.opt:107
+msgid "Do not tune code and read-only data alignment"
+msgstr ""
+
+#: config/cris/cris.opt:116
+msgid "Align code and data to 32 bits"
+msgstr ""
+
+#: config/cris/cris.opt:133
+msgid "Don't align items in code or data"
+msgstr ""
+
+#: config/cris/cris.opt:142
+msgid "Do not emit function prologue or epilogue"
+msgstr ""
+
+#: config/cris/cris.opt:149
+msgid "Use the most feature-enabling options allowed by other options"
+msgstr ""
+
+#: config/cris/cris.opt:158
+msgid "Override -mbest-lib-options"
+msgstr ""
+
+#: config/cris/cris.opt:165
+msgid "-march=ARCH\tGenerate code for the specified chip or CPU version"
+msgstr ""
+
+#: config/cris/cris.opt:169
+msgid "-mtune=ARCH\tTune alignment for the specified chip or CPU version"
+msgstr ""
+
+#: config/cris/cris.opt:173
+msgid "-mmax-stackframe=SIZE\tWarn when a stackframe is larger than the specified size"
+msgstr ""
+
+#: config/h8300/h8300.opt:23
+msgid "Generate H8S code"
+msgstr ""
+
+#: config/h8300/h8300.opt:27
+msgid "Generate H8SX code"
+msgstr ""
+
+#: config/h8300/h8300.opt:31
+msgid "Generate H8S/2600 code"
+msgstr ""
+
+#: config/h8300/h8300.opt:35
+msgid "Make integers 32 bits wide"
+msgstr ""
+
+#: config/h8300/h8300.opt:42
+msgid "Use registers for argument passing"
+msgstr ""
+
+#: config/h8300/h8300.opt:46
+msgid "Consider access to byte sized memory slow"
+msgstr ""
+
+#: config/h8300/h8300.opt:50
+msgid "Enable linker relaxing"
+msgstr ""
+
+#: config/h8300/h8300.opt:54
+msgid "Generate H8/300H code"
+msgstr ""
+
+#: config/h8300/h8300.opt:58
+msgid "Enable the normal mode"
+msgstr ""
+
+#: config/h8300/h8300.opt:62
+msgid "Use H8/300 alignment rules"
+msgstr ""
+
+#: config/v850/v850.opt:29
+msgid "Use registers r2 and r5"
+msgstr ""
+
+#: config/v850/v850.opt:33
+msgid "Use 4 byte entries in switch tables"
+msgstr ""
+
+#: config/v850/v850.opt:37
+msgid "Enable backend debugging"
+msgstr ""
+
+#: config/v850/v850.opt:41
+msgid "Do not use the callt instruction"
+msgstr ""
+
+#: config/v850/v850.opt:45
+msgid "Reuse r30 on a per function basis"
+msgstr ""
+
+#: config/v850/v850.opt:49
+msgid "Support Green Hills ABI"
+msgstr ""
+
+#: config/v850/v850.opt:53
+msgid "Prohibit PC relative function calls"
+msgstr ""
+
+#: config/v850/v850.opt:57
+msgid "Use stubs for function prologues"
+msgstr ""
+
+#: config/v850/v850.opt:61
+msgid "Set the max size of data eligible for the SDA area"
+msgstr ""
+
+#: config/v850/v850.opt:68
+msgid "Enable the use of the short load instructions"
+msgstr ""
+
+#: config/v850/v850.opt:72
+msgid "Same as: -mep -mprolog-function"
+msgstr ""
+
+#: config/v850/v850.opt:76
+msgid "Set the max size of data eligible for the TDA area"
+msgstr ""
+
+#: config/v850/v850.opt:83
+msgid "Do not enforce strict alignment"
+msgstr ""
+
+#: config/v850/v850.opt:87
+msgid "Put jump tables for switch statements into the .data section rather than the .code section"
+msgstr ""
+
+#: config/v850/v850.opt:94
+msgid "Compile for the v850 processor"
+msgstr ""
+
+#: config/v850/v850.opt:98
+msgid "Compile for the v850e processor"
+msgstr ""
+
+#: config/v850/v850.opt:102
+msgid "Compile for the v850e1 processor"
+msgstr ""
+
+#: config/v850/v850.opt:106
+msgid "Compile for the v850es variant of the v850e1"
+msgstr ""
+
+#: config/v850/v850.opt:110
+msgid "Compile for the v850e2 processor"
+msgstr ""
+
+#: config/v850/v850.opt:114
+msgid "Compile for the v850e2v3 processor"
+msgstr ""
+
+#: config/v850/v850.opt:118
+msgid "Set the max size of data eligible for the ZDA area"
+msgstr ""
+
+#: config/mmix/mmix.opt:24
+msgid "For intrinsics library: pass all parameters in registers"
+msgstr ""
+
+#: config/mmix/mmix.opt:28
+msgid "Use register stack for parameters and return value"
+msgstr ""
+
+#: config/mmix/mmix.opt:32
+msgid "Use call-clobbered registers for parameters and return value"
+msgstr ""
+
+#: config/mmix/mmix.opt:37
+msgid "Use epsilon-respecting floating point compare instructions"
+msgstr ""
+
+#: config/mmix/mmix.opt:41
+msgid "Use zero-extending memory loads, not sign-extending ones"
+msgstr ""
+
+#: config/mmix/mmix.opt:45
+msgid "Generate divide results with reminder having the same sign as the divisor (not the dividend)"
+msgstr ""
+
+#: config/mmix/mmix.opt:49
+msgid "Prepend global symbols with \":\" (for use with PREFIX)"
+msgstr ""
+
+#: config/mmix/mmix.opt:53
+msgid "Do not provide a default start-address 0x100 of the program"
+msgstr ""
+
+#: config/mmix/mmix.opt:57
+msgid "Link to emit program in ELF format (rather than mmo)"
+msgstr ""
+
+#: config/mmix/mmix.opt:61
+msgid "Use P-mnemonics for branches statically predicted as taken"
+msgstr ""
+
+#: config/mmix/mmix.opt:65
+msgid "Don't use P-mnemonics for branches"
+msgstr ""
+
+#: config/mmix/mmix.opt:79
+msgid "Use addresses that allocate global registers"
+msgstr ""
+
+#: config/mmix/mmix.opt:83
+msgid "Do not use addresses that allocate global registers"
+msgstr ""
+
+#: config/mmix/mmix.opt:87
+msgid "Generate a single exit point for each function"
+msgstr ""
+
+#: config/mmix/mmix.opt:91
+msgid "Do not generate a single exit point for each function"
+msgstr ""
+
+#: config/mmix/mmix.opt:95
+msgid "Set start-address of the program"
+msgstr ""
+
+#: config/mmix/mmix.opt:99
+msgid "Set start-address of data"
+msgstr ""
+
+#: config/iq2000/iq2000.opt:31
+msgid "Specify CPU for code generation purposes"
+msgstr ""
+
+#: config/iq2000/iq2000.opt:47
+msgid "Specify CPU for scheduling purposes"
+msgstr ""
+
+#: config/iq2000/iq2000.opt:51
+msgid "Known IQ2000 CPUs (for use with the -mcpu= option):"
+msgstr ""
+
+#: config/iq2000/iq2000.opt:65 config/microblaze/microblaze.opt:80
+msgid "Use GP relative sdata/sbss sections"
+msgstr ""
+
+#: config/iq2000/iq2000.opt:70
+msgid "No default crt0.o"
+msgstr ""
+
+#: config/bfin/bfin.opt:48
+msgid "Omit frame pointer for leaf functions"
+msgstr ""
+
+#: config/bfin/bfin.opt:52
+msgid "Program is entirely located in low 64k of memory"
+msgstr ""
+
+#: config/bfin/bfin.opt:56
+msgid "Work around a hardware anomaly by adding a number of NOPs before a"
+msgstr ""
+
+#: config/bfin/bfin.opt:61
+msgid "Avoid speculative loads to work around a hardware anomaly."
+msgstr ""
+
+#: config/bfin/bfin.opt:65
+msgid "Enabled ID based shared library"
+msgstr ""
+
+#: config/bfin/bfin.opt:69
+msgid "Generate code that won't be linked against any other ID shared libraries,"
+msgstr ""
+
+#: config/bfin/bfin.opt:86
+msgid "Link with the fast floating-point library"
+msgstr ""
+
+#: config/bfin/bfin.opt:98
+msgid "Do stack checking using bounds in L1 scratch memory"
+msgstr ""
+
+#: config/bfin/bfin.opt:102
+msgid "Enable multicore support"
+msgstr ""
+
+#: config/bfin/bfin.opt:106
+msgid "Build for Core A"
+msgstr ""
+
+#: config/bfin/bfin.opt:110
+msgid "Build for Core B"
+msgstr ""
+
+#: config/bfin/bfin.opt:114
+msgid "Build for SDRAM"
+msgstr ""
+
+#: config/bfin/bfin.opt:118
+msgid "Assume ICPLBs are enabled at runtime."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:24
+msgid "Don't use any of r32..r63."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:28
+msgid "preferentially allocate registers that allow short instruction generation."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:32
+msgid "Set branch cost"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:36
+msgid "enable conditional move instruction usage."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:40
+msgid "set number of nops to emit before each insn pattern"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:52
+msgid "Use software floating point comparisons"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:56
+msgid "Enable split of 32 bit immediate loads into low / high part"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:60
+msgid "Enable use of POST_INC / POST_DEC"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:64
+msgid "Enable use of POST_MODIFY"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:68
+msgid "Set number of bytes on the stack preallocated for use by the callee."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:72
+msgid "Assume round to nearest is selected for purposes of scheduling."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:76
+msgid "Generate call insns as indirect calls"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:80
+msgid "Generate call insns as direct calls"
+msgstr ""
+
+#: config/epiphany/epiphany.opt:84
+msgid "Assume labels and symbols can be addressed using 16 bit absolute addresses."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:108
+msgid "Vectorize for double-word operations."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:124
+msgid "Split unaligned 8 byte vector moves before post-modify address generation."
+msgstr ""
+
+#: config/epiphany/epiphany.opt:128
+msgid "Set register to hold -1."
+msgstr ""
+
+#: config/cr16/cr16.opt:23
+msgid "-msim Use simulator runtime"
+msgstr ""
+
+#: config/cr16/cr16.opt:27
+msgid "Generate SBIT, CBIT instructions"
+msgstr ""
+
+#: config/cr16/cr16.opt:31
+msgid "Support multiply accumulate instructions"
+msgstr ""
+
+#: config/cr16/cr16.opt:38
+msgid "Treat data references as near, far or medium. medium is default"
+msgstr ""
+
+#: config/cr16/cr16.opt:42
+msgid "Generate code for CR16C architecture"
+msgstr ""
+
+#: config/cr16/cr16.opt:46
+msgid "Generate code for CR16C+ architecture (Default)"
+msgstr ""
+
+#: config/cr16/cr16.opt:50
+msgid "Treat integers as 32-bit."
+msgstr ""
+
+#: config/tilegx/tilegx.opt:24 config/tilepro/tilepro.opt:29
+msgid "-mcpu=CPU\tUse features of and schedule code for given CPU"
+msgstr ""
+
+#: config/tilegx/tilegx.opt:28
+msgid "Known TILE-Gx CPUs (for use with the -mcpu= option):"
+msgstr ""
+
+#: config/tilegx/tilegx.opt:35
+msgid "Compile with 32 bit longs and pointers."
+msgstr ""
+
+#: config/tilegx/tilegx.opt:39
+msgid "Compile with 64 bit longs and pointers."
+msgstr ""
+
+#: config/tilepro/tilepro.opt:24
+msgid "Compile with 32 bit longs and pointers, which is the only supported"
+msgstr ""
+
+#: config/tilepro/tilepro.opt:33
+msgid "Known TILEPro CPUs (for use with the -mcpu= option):"
+msgstr ""
+
+#: config/picochip/picochip.opt:23
+msgid "Specify which type of AE to target. This option sets the mul-type and byte-access."
+msgstr ""
+
+#: config/picochip/picochip.opt:27
+msgid "Specify which type of multiplication to use. Can be mem, mac or none."
+msgstr ""
+
+#: config/picochip/picochip.opt:31
+msgid "Specify whether the byte access instructions should be used. Enabled by default."
+msgstr ""
+
+#: config/picochip/picochip.opt:35
+msgid "Enable debug output to be generated."
+msgstr ""
+
+#: config/picochip/picochip.opt:39
+msgid "Allow a symbol value to be used as an immediate value in an instruction."
+msgstr ""
+
+#: config/picochip/picochip.opt:43
+msgid "Generate warnings when inefficient code is known to be generated."
+msgstr ""
+
+#: config/vxworks.opt:36
+msgid "Assume the VxWorks RTP environment"
+msgstr ""
+
+#: config/vxworks.opt:43
+msgid "Assume the VxWorks vThreads environment"
+msgstr ""
+
+#: config/darwin.opt:53 c-family/c.opt:71 c-family/c.opt:74 c-family/c.opt:77
+#: c-family/c.opt:80 c-family/c.opt:179 c-family/c.opt:182 c-family/c.opt:220
+#: c-family/c.opt:224 c-family/c.opt:236 c-family/c.opt:1125
+#: c-family/c.opt:1133 common.opt:301 common.opt:304 common.opt:2278
+#, c-format
+msgid "missing filename after %qs"
+msgstr ""
+
+#: config/darwin.opt:114
+msgid "Generate compile-time CFString objects"
+msgstr ""
+
+#: config/darwin.opt:208
+msgid "Warn if constant CFString objects contain non-portable characters"
+msgstr ""
+
+#: config/darwin.opt:213
+msgid "Generate AT&T-style stubs for Mach-O"
+msgstr ""
+
+#: config/darwin.opt:217
+msgid "Generate code suitable for executables (NOT shared libs)"
+msgstr ""
+
+#: config/darwin.opt:221
+msgid "Generate code suitable for fast turn around debugging"
+msgstr ""
+
+#: config/darwin.opt:230
+msgid "The earliest MacOS X version on which this program will run"
+msgstr ""
+
+#: config/darwin.opt:234
+msgid "Set sizeof(bool) to 1"
+msgstr ""
+
+#: config/darwin.opt:238
+msgid "Generate code for darwin loadable kernel extensions"
+msgstr ""
+
+#: config/darwin.opt:242
+msgid "Generate code for the kernel or loadable kernel extensions"
+msgstr ""
+
+#: config/darwin.opt:246
+msgid "-iframework <dir>\tAdd <dir> to the end of the system framework include path"
+msgstr ""
+
+#: config/lynx.opt:23
+msgid "Support legacy multi-threading"
+msgstr ""
+
+#: config/lynx.opt:27
+msgid "Use shared libraries"
+msgstr ""
+
+#: config/lynx.opt:31
+msgid "Support multi-threading"
+msgstr ""
+
+#: config/score/score.opt:31
+msgid "Disable bcnz instruction"
+msgstr ""
+
+#: config/score/score.opt:35
+msgid "Enable unaligned load/store instruction"
+msgstr ""
+
+#: config/score/score.opt:39
+msgid "Support SCORE 7 ISA"
+msgstr ""
+
+#: config/score/score.opt:43
+msgid "Support SCORE 7D ISA"
+msgstr ""
+
+#: config/score/score.opt:51
+msgid "Known SCORE architectures (for use with the -march= option):"
+msgstr ""
+
+#: config/linux.opt:24
+msgid "Use Bionic C library"
+msgstr ""
+
+#: config/linux.opt:28
+msgid "Use GNU C library"
+msgstr ""
+
+#: config/linux.opt:32
+msgid "Use uClibc C library"
+msgstr ""
+
+#: config/mep/mep.opt:23
+msgid "Enable absolute difference instructions"
+msgstr ""
+
+#: config/mep/mep.opt:27
+msgid "Enable all optional instructions"
+msgstr ""
+
+#: config/mep/mep.opt:31
+msgid "Enable average instructions"
+msgstr ""
+
+#: config/mep/mep.opt:35
+msgid "Variables this size and smaller go in the based section. (default 0)"
+msgstr ""
+
+#: config/mep/mep.opt:39
+msgid "Enable bit manipulation instructions"
+msgstr ""
+
+#: config/mep/mep.opt:43
+msgid "Section to put all const variables in (tiny, near, far) (no default)"
+msgstr ""
+
+#: config/mep/mep.opt:47
+msgid "Enable clip instructions"
+msgstr ""
+
+#: config/mep/mep.opt:51
+msgid "Configuration name"
+msgstr ""
+
+#: config/mep/mep.opt:55
+msgid "Enable MeP Coprocessor"
+msgstr ""
+
+#: config/mep/mep.opt:59
+msgid "Enable MeP Coprocessor with 32-bit registers"
+msgstr ""
+
+#: config/mep/mep.opt:63
+msgid "Enable MeP Coprocessor with 64-bit registers"
+msgstr ""
+
+#: config/mep/mep.opt:67
+msgid "Enable IVC2 scheduling"
+msgstr ""
+
+#: config/mep/mep.opt:71
+msgid "Const variables default to the near section"
+msgstr ""
+
+#: config/mep/mep.opt:78
+msgid "Enable 32-bit divide instructions"
+msgstr ""
+
+#: config/mep/mep.opt:93
+msgid "__io vars are volatile by default"
+msgstr ""
+
+#: config/mep/mep.opt:97
+msgid "All variables default to the far section"
+msgstr ""
+
+#: config/mep/mep.opt:101
+msgid "Enable leading zero instructions"
+msgstr ""
+
+#: config/mep/mep.opt:108
+msgid "All variables default to the near section"
+msgstr ""
+
+#: config/mep/mep.opt:112
+msgid "Enable min/max instructions"
+msgstr ""
+
+#: config/mep/mep.opt:116
+msgid "Enable 32-bit multiply instructions"
+msgstr ""
+
+#: config/mep/mep.opt:120
+msgid "Disable all optional instructions"
+msgstr ""
+
+#: config/mep/mep.opt:127
+msgid "Allow gcc to use the repeat/erepeat instructions"
+msgstr ""
+
+#: config/mep/mep.opt:131
+msgid "All variables default to the tiny section"
+msgstr ""
+
+#: config/mep/mep.opt:135
+msgid "Enable saturation instructions"
+msgstr ""
+
+#: config/mep/mep.opt:139
+msgid "Use sdram version of runtime"
+msgstr ""
+
+#: config/mep/mep.opt:147
+msgid "Use simulator runtime without vectors"
+msgstr ""
+
+#: config/mep/mep.opt:151
+msgid "All functions default to the far section"
+msgstr ""
+
+#: config/mep/mep.opt:155
+msgid "Variables this size and smaller go in the tiny section. (default 4)"
+msgstr ""
+
+#: config/vms/vms.opt:24
+msgid "Malloc data into P2 space"
+msgstr ""
+
+#: config/vms/vms.opt:28
+msgid "Set name of main routine for the debugger"
+msgstr ""
+
+#: config/rx/rx.opt:29
+msgid "Store doubles in 64 bits."
+msgstr ""
+
+#: config/rx/rx.opt:33
+msgid "Stores doubles in 32 bits. This is the default."
+msgstr ""
+
+#: config/rx/rx.opt:37
+msgid "Disable the use of RX FPU instructions. "
+msgstr ""
+
+#: config/rx/rx.opt:44
+msgid "Enable the use of RX FPU instructions. This is the default."
+msgstr ""
+
+#: config/rx/rx.opt:50
+msgid "Specify the target RX cpu type."
+msgstr ""
+
+#: config/rx/rx.opt:68
+msgid "Data is stored in big-endian format."
+msgstr ""
+
+#: config/rx/rx.opt:72
+msgid "Data is stored in little-endian format. (Default)."
+msgstr ""
+
+#: config/rx/rx.opt:78
+msgid "Maximum size of global and static variables which can be placed into the small data area."
+msgstr ""
+
+#: config/rx/rx.opt:90
+msgid "Generate assembler output that is compatible with the Renesas AS100 assembler. This may restrict some of the compiler's capabilities. The default is to generate GAS compatable syntax."
+msgstr ""
+
+#: config/rx/rx.opt:96
+msgid "Enable linker relaxation."
+msgstr ""
+
+#: config/rx/rx.opt:102
+msgid "Maximum size in bytes of constant values allowed as operands."
+msgstr ""
+
+#: config/rx/rx.opt:108
+msgid "Specifies the number of registers to reserve for interrupt handlers."
+msgstr ""
+
+#: config/rx/rx.opt:114
+msgid "Specifies whether interrupt functions should save and restore the accumulator register."
+msgstr ""
+
+#: config/rx/rx.opt:120
+msgid "Enables Position-Independent-Data (PID) mode."
+msgstr ""
+
+#: config/lm32/lm32.opt:24
+msgid "Enable multiply instructions"
+msgstr ""
+
+#: config/lm32/lm32.opt:28
+msgid "Enable divide and modulus instructions"
+msgstr ""
+
+#: config/lm32/lm32.opt:32
+msgid "Enable barrel shift instructions"
+msgstr ""
+
+#: config/lm32/lm32.opt:36
+msgid "Enable sign extend instructions"
+msgstr ""
+
+#: config/lm32/lm32.opt:40
+msgid "Enable user-defined instructions"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:40
+msgid "Use software emulation for floating point (default)"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:44
+msgid "Use hardware floating point instructions"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:48
+msgid "Use table lookup optimization for small signed integer divisions"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:52
+msgid "-mcpu=PROCESSOR\t\tUse features of and schedule code for given CPU"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:56
+msgid "Don't optimize block moves, use memcpy"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:60
+msgid "Use the soft multiply emulation (default)"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:64
+msgid "Use the software emulation for divides (default)"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:68
+msgid "Use the hardware barrel shifter instead of emulation"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:72
+msgid "Use pattern compare instructions"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:75
+#, c-format
+msgid "%qs is deprecated; use -fstack-check"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:76
+msgid "Check for stack overflow at runtime"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:83
+#, c-format
+msgid "%qs is deprecated; use -fno-zero-initialized-in-bss"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:84
+msgid "Clear the BSS to zero and place zero initialized in BSS"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:88
+msgid "Use multiply high instructions for high part of 32x32 multiply"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:92
+msgid "Use hardware floating point conversion instructions"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:96
+msgid "Use hardware floating point square root instruction"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:100
+msgid "Description for mxl-mode-executable"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:104
+msgid "Description for mxl-mode-xmdstub"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:108
+msgid "Description for mxl-mode-bootstrap"
+msgstr ""
+
+#: config/microblaze/microblaze.opt:112
+msgid "Description for mxl-mode-novectors"
+msgstr ""
+
+#: config/linux-android.opt:23
+msgid "Generate code for the Android platform."
+msgstr ""
+
+#: config/g.opt:28
+msgid "-G<number>\tPut global and static data smaller than <number> bytes into a special section (on some targets)"
+msgstr ""
+
+#: config/sol2.opt:32
+msgid "Pass -z text to linker"
+msgstr ""
+
+#: config/fused-madd.opt:23
+msgid "%<-mfused-madd%> is deprecated; use %<-ffp-contract=%> instead"
+msgstr ""
+
+#: c-family/c.opt:44 c-family/c.opt:47 c-family/c.opt:185
+#, c-format
+msgid "assertion missing after %qs"
+msgstr ""
+
+#: c-family/c.opt:56 c-family/c.opt:59 c-family/c.opt:167 c-family/c.opt:170
+#: c-family/c.opt:197 c-family/c.opt:256
+#, c-format
+msgid "macro name missing after %qs"
+msgstr ""
+
+#: c-family/c.opt:86 c-family/c.opt:89 c-family/c.opt:92 c-family/c.opt:95
+#: c-family/c.opt:204 c-family/c.opt:212 c-family/c.opt:1121
+#: c-family/c.opt:1141 c-family/c.opt:1145 c-family/c.opt:1149
+#, c-format
+msgid "missing path after %qs"
+msgstr ""
+
+#: c-family/c.opt:186
+msgid "-A<question>=<answer>\tAssert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question>"
+msgstr ""
+
+#: c-family/c.opt:190
+msgid "Do not discard comments"
+msgstr ""
+
+#: c-family/c.opt:194
+msgid "Do not discard comments in macro expansions"
+msgstr ""
+
+#: c-family/c.opt:198
+msgid "-D<macro>[=<val>]\tDefine a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1"
+msgstr ""
+
+#: c-family/c.opt:205
+msgid "-F <dir>\tAdd <dir> to the end of the main framework include path"
+msgstr ""
+
+#: c-family/c.opt:209
+msgid "Print the name of header files as they are used"
+msgstr ""
+
+#: c-family/c.opt:213
+msgid "-I <dir>\tAdd <dir> to the end of the main include path"
+msgstr ""
+
+#: c-family/c.opt:217
+msgid "Generate make dependencies"
+msgstr ""
+
+#: c-family/c.opt:221
+msgid "Generate make dependencies and compile"
+msgstr ""
+
+#: c-family/c.opt:225
+msgid "-MF <file>\tWrite dependency output to the given file"
+msgstr ""
+
+#: c-family/c.opt:229
+msgid "Treat missing header files as generated files"
+msgstr ""
+
+#: c-family/c.opt:233
+msgid "Like -M but ignore system header files"
+msgstr ""
+
+#: c-family/c.opt:237
+msgid "Like -MD but ignore system header files"
+msgstr ""
+
+#: c-family/c.opt:241
+msgid "Generate phony targets for all headers"
+msgstr ""
+
+#: c-family/c.opt:244 c-family/c.opt:248
+#, c-format
+msgid "missing makefile target after %qs"
+msgstr ""
+
+#: c-family/c.opt:245
+msgid "-MQ <target>\tAdd a MAKE-quoted target"
+msgstr ""
+
+#: c-family/c.opt:249
+msgid "-MT <target>\tAdd an unquoted target"
+msgstr ""
+
+#: c-family/c.opt:253
+msgid "Do not generate #line directives"
+msgstr ""
+
+#: c-family/c.opt:257
+msgid "-U<macro>\tUndefine <macro>"
+msgstr ""
+
+#: c-family/c.opt:261
+msgid "Warn about things that will change when compiling with an ABI-compliant compiler"
+msgstr ""
+
+#: c-family/c.opt:268
+msgid "Warn about suspicious uses of memory addresses"
+msgstr ""
+
+#: c-family/c.opt:276
+msgid "Warn whenever an Objective-C assignment is being intercepted by the garbage collector"
+msgstr ""
+
+#: c-family/c.opt:280
+msgid "Warn about casting functions to incompatible types"
+msgstr ""
+
+#: c-family/c.opt:284
+msgid "Warn when a built-in preprocessor macro is undefined or redefined"
+msgstr ""
+
+#: c-family/c.opt:288
+msgid "Warn about C constructs that are not in the common subset of C and C++"
+msgstr ""
+
+#: c-family/c.opt:292
+msgid "Deprecated in favor of -Wc++11-compat"
+msgstr ""
+
+#: c-family/c.opt:296
+msgid "Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011"
+msgstr ""
+
+#: c-family/c.opt:300
+msgid "Warn about casts which discard qualifiers"
+msgstr ""
+
+#: c-family/c.opt:304
+msgid "Warn about subscripts whose type is \"char\""
+msgstr ""
+
+#: c-family/c.opt:308
+msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\""
+msgstr ""
+
+#: c-family/c.opt:312
+msgid "Warn about possibly nested block comments, and C++ comments spanning more than one physical line"
+msgstr ""
+
+#: c-family/c.opt:316
+msgid "Synonym for -Wcomment"
+msgstr ""
+
+#: c-family/c.opt:320
+msgid "Warn for implicit type conversions that may change a value"
+msgstr ""
+
+#: c-family/c.opt:324
+msgid "Warn for converting NULL from/to a non-pointer type"
+msgstr ""
+
+#: c-family/c.opt:328
+msgid "Warn for implicit type conversions between signed and unsigned integers"
+msgstr ""
+
+#: c-family/c.opt:332
+msgid "Warn when all constructors and destructors are private"
+msgstr ""
+
+#: c-family/c.opt:336
+msgid "Warn when a declaration is found after a statement"
+msgstr ""
+
+#: c-family/c.opt:340
+msgid "Warn about deleting polymorphic objects with non-virtual destructors"
+msgstr ""
+
+#: c-family/c.opt:344
+msgid "Warn if a deprecated compiler feature, class, method, or field is used"
+msgstr ""
+
+#: c-family/c.opt:348
+msgid "Warn about compile-time integer division by zero"
+msgstr ""
+
+#: c-family/c.opt:352
+msgid "Warn about violations of Effective C++ style rules"
+msgstr ""
+
+#: c-family/c.opt:356
+msgid "Warn about an empty body in an if or else statement"
+msgstr ""
+
+#: c-family/c.opt:360
+msgid "Warn about stray tokens after #elif and #endif"
+msgstr ""
+
+#: c-family/c.opt:364
+msgid "Warn about comparison of different enum types"
+msgstr ""
+
+#: c-family/c.opt:372
+msgid "This switch is deprecated; use -Werror=implicit-function-declaration instead"
+msgstr ""
+
+#: c-family/c.opt:376
+msgid "Warn if testing floating point numbers for equality"
+msgstr ""
+
+#: c-family/c.opt:380
+msgid "Warn about printf/scanf/strftime/strfmon format string anomalies"
+msgstr ""
+
+#: c-family/c.opt:384
+msgid "Warn if passing too many arguments to a function for its format string"
+msgstr ""
+
+#: c-family/c.opt:388
+msgid "Warn about format strings that are not literals"
+msgstr ""
+
+#: c-family/c.opt:392
+msgid "Warn about format strings that contain NUL bytes"
+msgstr ""
+
+#: c-family/c.opt:396
+msgid "Warn about possible security problems with format functions"
+msgstr ""
+
+#: c-family/c.opt:400
+msgid "Warn about strftime formats yielding 2-digit years"
+msgstr ""
+
+#: c-family/c.opt:404
+msgid "Warn about zero-length formats"
+msgstr ""
+
+#: c-family/c.opt:411
+msgid "Warn whenever type qualifiers are ignored."
+msgstr ""
+
+#: c-family/c.opt:415
+msgid "Warn about variables which are initialized to themselves"
+msgstr ""
+
+#: c-family/c.opt:419
+msgid "Warn about implicit declarations"
+msgstr ""
+
+#: c-family/c.opt:423
+msgid "Warn about implicit conversions from \"float\" to \"double\""
+msgstr ""
+
+#: c-family/c.opt:427
+msgid "Warn about implicit function declarations"
+msgstr ""
+
+#: c-family/c.opt:431
+msgid "Warn when a declaration does not specify a type"
+msgstr ""
+
+#: c-family/c.opt:438
+msgid "Warn when there is a cast to a pointer from an integer of a different size"
+msgstr ""
+
+#: c-family/c.opt:442
+msgid "Warn about invalid uses of the \"offsetof\" macro"
+msgstr ""
+
+#: c-family/c.opt:446
+msgid "Warn about PCH files that are found but not used"
+msgstr ""
+
+#: c-family/c.opt:450
+msgid "Warn when a jump misses a variable initialization"
+msgstr ""
+
+#: c-family/c.opt:454
+msgid "Warn when a logical operator is suspiciously always evaluating to true or false"
+msgstr ""
+
+#: c-family/c.opt:458
+msgid "Do not warn about using \"long long\" when -pedantic"
+msgstr ""
+
+#: c-family/c.opt:462
+msgid "Warn about suspicious declarations of \"main\""
+msgstr ""
+
+#: c-family/c.opt:466
+msgid "Warn about possibly missing braces around initializers"
+msgstr ""
+
+#: c-family/c.opt:470
+msgid "Warn about global functions without previous declarations"
+msgstr ""
+
+#: c-family/c.opt:474
+msgid "Warn about missing fields in struct initializers"
+msgstr ""
+
+#: c-family/c.opt:478
+msgid "Warn about functions which might be candidates for format attributes"
+msgstr ""
+
+#: c-family/c.opt:482
+msgid "Warn about user-specified include directories that do not exist"
+msgstr ""
+
+#: c-family/c.opt:486
+msgid "Warn about function parameters declared without a type specifier in K&R-style functions"
+msgstr ""
+
+#: c-family/c.opt:490
+msgid "Warn about global functions without prototypes"
+msgstr ""
+
+#: c-family/c.opt:494
+msgid "Warn about constructs not instrumented by -fmudflap"
+msgstr ""
+
+#: c-family/c.opt:498
+msgid "Warn about use of multi-character character constants"
+msgstr ""
+
+#: c-family/c.opt:502
+msgid "Warn about narrowing conversions within { } that are ill-formed in C++11"
+msgstr ""
+
+#: c-family/c.opt:506
+msgid "Warn about \"extern\" declarations not at file scope"
+msgstr ""
+
+#: c-family/c.opt:510
+msgid "Warn when a noexcept expression evaluates to false even though the expression can't actually throw"
+msgstr ""
+
+#: c-family/c.opt:514
+msgid "Warn when non-templatized friend functions are declared within a template"
+msgstr ""
+
+#: c-family/c.opt:518
+msgid "Warn about non-virtual destructors"
+msgstr ""
+
+#: c-family/c.opt:522
+msgid "Warn about NULL being passed to argument slots marked as requiring non-NULL"
+msgstr ""
+
+#: c-family/c.opt:526
+msgid "-Wnormalized=<id|nfc|nfkc>\tWarn about non-normalised Unicode strings"
+msgstr ""
+
+#: c-family/c.opt:530
+msgid "Warn if a C-style cast is used in a program"
+msgstr ""
+
+#: c-family/c.opt:534
+msgid "Warn for obsolescent usage in a declaration"
+msgstr ""
+
+#: c-family/c.opt:538
+msgid "Warn if an old-style parameter definition is used"
+msgstr ""
+
+#: c-family/c.opt:542
+msgid "Warn if a string is longer than the maximum portable length specified by the standard"
+msgstr ""
+
+#: c-family/c.opt:546
+msgid "Warn about overloaded virtual function names"
+msgstr ""
+
+#: c-family/c.opt:550
+msgid "Warn about overriding initializers without side effects"
+msgstr ""
+
+#: c-family/c.opt:554
+msgid "Warn about packed bit-fields whose offset changed in GCC 4.4"
+msgstr ""
+
+#: c-family/c.opt:558
+msgid "Warn about possibly missing parentheses"
+msgstr ""
+
+#: c-family/c.opt:562
+msgid "Warn when converting the type of pointers to member functions"
+msgstr ""
+
+#: c-family/c.opt:566
+msgid "Warn about function pointer arithmetic"
+msgstr ""
+
+#: c-family/c.opt:570
+msgid "Warn when a pointer is cast to an integer of a different size"
+msgstr ""
+
+#: c-family/c.opt:574
+msgid "Warn about misuses of pragmas"
+msgstr ""
+
+#: c-family/c.opt:578
+msgid "Warn if a property for an Objective-C object has no assign semantics specified"
+msgstr ""
+
+#: c-family/c.opt:582
+msgid "Warn if inherited methods are unimplemented"
+msgstr ""
+
+#: c-family/c.opt:586
+msgid "Warn about multiple declarations of the same object"
+msgstr ""
+
+#: c-family/c.opt:590
+msgid "Warn when the compiler reorders code"
+msgstr ""
+
+#: c-family/c.opt:594
+msgid "Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)"
+msgstr ""
+
+#: c-family/c.opt:598
+msgid "Warn if a selector has multiple methods"
+msgstr ""
+
+#: c-family/c.opt:602
+msgid "Warn about possible violations of sequence point rules"
+msgstr ""
+
+#: c-family/c.opt:606
+msgid "Warn about signed-unsigned comparisons"
+msgstr ""
+
+#: c-family/c.opt:610
+msgid "Warn when overload promotes from unsigned to signed"
+msgstr ""
+
+#: c-family/c.opt:614
+msgid "Warn about uncasted NULL used as sentinel"
+msgstr ""
+
+#: c-family/c.opt:618
+msgid "Warn about unprototyped function declarations"
+msgstr ""
+
+#: c-family/c.opt:622
+msgid "Warn if type signatures of candidate methods do not match exactly"
+msgstr ""
+
+#: c-family/c.opt:626
+msgid "Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used"
+msgstr ""
+
+#: c-family/c.opt:630
+msgid "Deprecated. This switch has no effect"
+msgstr ""
+
+#: c-family/c.opt:638
+msgid "Warn about features not present in traditional C"
+msgstr ""
+
+#: c-family/c.opt:642
+msgid "Warn of prototypes causing type conversions different from what would happen in the absence of prototype"
+msgstr ""
+
+#: c-family/c.opt:646
+msgid "Warn if trigraphs are encountered that might affect the meaning of the program"
+msgstr ""
+
+#: c-family/c.opt:650
+msgid "Warn about @selector()s without previously declared methods"
+msgstr ""
+
+#: c-family/c.opt:654
+msgid "Warn if an undefined macro is used in an #if directive"
+msgstr ""
+
+#: c-family/c.opt:658
+msgid "Warn about unrecognized pragmas"
+msgstr ""
+
+#: c-family/c.opt:662
+msgid "Warn about unsuffixed float constants"
+msgstr ""
+
+#: c-family/c.opt:666
+msgid "Warn when typedefs locally defined in a function are not used"
+msgstr ""
+
+#: c-family/c.opt:670
+msgid "Warn about macros defined in the main file that are not used"
+msgstr ""
+
+#: c-family/c.opt:674
+msgid "Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value"
+msgstr ""
+
+#: c-family/c.opt:678
+msgid "Do not warn about using variadic macros when -pedantic"
+msgstr ""
+
+#: c-family/c.opt:682
+msgid "Warn if a variable length array is used"
+msgstr ""
+
+#: c-family/c.opt:686
+msgid "Warn when a register variable is declared volatile"
+msgstr ""
+
+#: c-family/c.opt:690
+msgid "In C++, nonzero means warn about deprecated conversion from string literals to 'char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard."
+msgstr ""
+
+#: c-family/c.opt:694
+msgid "Warn when a pointer differs in signedness in an assignment"
+msgstr ""
+
+#: c-family/c.opt:698
+msgid "Warn when a literal '0' is used as null pointer"
+msgstr ""
+
+#: c-family/c.opt:702
+msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)"
+msgstr ""
+
+#: c-family/c.opt:710
+msgid "Enforce class member access control semantics"
+msgstr ""
+
+#: c-family/c.opt:713 c-family/c.opt:720 c-family/c.opt:786 c-family/c.opt:802
+#: c-family/c.opt:825 c-family/c.opt:831 c-family/c.opt:838 c-family/c.opt:862
+#: c-family/c.opt:885 c-family/c.opt:888 c-family/c.opt:902
+#: c-family/c.opt:1021 c-family/c.opt:1032 c-family/c.opt:1046
+#: c-family/c.opt:1077 c-family/c.opt:1081 c-family/c.opt:1097
+#: c-family/c-opts.c:569
+#, gcc-internal-format
+msgid "switch %qs is no longer supported"
+msgstr ""
+
+#: c-family/c.opt:717
+msgid "Allow variadic functions without named parameter"
+msgstr ""
+
+#: c-family/c.opt:721 c-family/c.opt:839 c-family/c.opt:1078
+#: c-family/c.opt:1082 c-family/c.opt:1098
+msgid "No longer supported"
+msgstr ""
+
+#: c-family/c.opt:725
+msgid "Recognize the \"asm\" keyword"
+msgstr ""
+
+#: c-family/c.opt:733
+msgid "Recognize built-in functions"
+msgstr ""
+
+#: c-family/c.opt:740
+msgid "Check the return value of new"
+msgstr ""
+
+#: c-family/c.opt:744
+msgid "Allow the arguments of the '?' operator to have different types"
+msgstr ""
+
+#: c-family/c.opt:748
+msgid "Reduce the size of object files"
+msgstr ""
+
+#: c-family/c.opt:751
+#, c-format
+msgid "no class name specified with %qs"
+msgstr ""
+
+#: c-family/c.opt:752
+msgid "-fconst-string-class=<name>\tUse class <name> for constant strings"
+msgstr ""
+
+#: c-family/c.opt:756
+msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth"
+msgstr ""
+
+#: c-family/c.opt:760
+msgid "Emit debug annotations during preprocessing"
+msgstr ""
+
+#: c-family/c.opt:764
+msgid "-fdeduce-init-list\tenable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list"
+msgstr ""
+
+#: c-family/c.opt:768 c-family/c.opt:955 common.opt:937 common.opt:1115
+#: common.opt:1390 common.opt:1644 common.opt:1680 common.opt:1765
+#: common.opt:1769 common.opt:1845 common.opt:1923 common.opt:1939
+#: common.opt:2023
+msgid "Does nothing. Preserved for backward compatibility."
+msgstr ""
+
+#: c-family/c.opt:772
+msgid "Preprocess directives only."
+msgstr ""
+
+#: c-family/c.opt:776
+msgid "Permit '$' as an identifier character"
+msgstr ""
+
+#: c-family/c.opt:783
+msgid "Generate code to check exception specifications"
+msgstr ""
+
+#: c-family/c.opt:790
+msgid "-fexec-charset=<cset>\tConvert all strings and character constants to character set <cset>"
+msgstr ""
+
+#: c-family/c.opt:794
+msgid "Permit universal character names (\\u and \\U) in identifiers"
+msgstr ""
+
+#: c-family/c.opt:798
+msgid "-finput-charset=<cset>\tSpecify the default character set for source files"
+msgstr ""
+
+#: c-family/c.opt:806
+msgid "Scope of for-init-statement variables is local to the loop"
+msgstr ""
+
+#: c-family/c.opt:810
+msgid "Do not assume that standard C libraries and \"main\" exist"
+msgstr ""
+
+#: c-family/c.opt:814
+msgid "Recognize GNU-defined keywords"
+msgstr ""
+
+#: c-family/c.opt:818
+msgid "Generate code for GNU runtime environment"
+msgstr ""
+
+#: c-family/c.opt:822
+msgid "Use traditional GNU semantics for inline functions"
+msgstr ""
+
+#: c-family/c.opt:828
+msgid "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
+msgstr ""
+
+#: c-family/c.opt:835
+msgid "Assume normal C execution environment"
+msgstr ""
+
+#: c-family/c.opt:843
+msgid "Export functions even if they can be inlined"
+msgstr ""
+
+#: c-family/c.opt:847
+msgid "Emit implicit instantiations of inline templates"
+msgstr ""
+
+#: c-family/c.opt:851
+msgid "Emit implicit instantiations of templates"
+msgstr ""
+
+#: c-family/c.opt:855
+msgid "Inject friend functions into enclosing namespace"
+msgstr ""
+
+#: c-family/c.opt:859
+msgid "Don't emit dllexported inline functions unless needed"
+msgstr ""
+
+#: c-family/c.opt:866
+msgid "Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types."
+msgstr ""
+
+#: c-family/c.opt:870
+msgid "Don't warn about uses of Microsoft extensions"
+msgstr ""
+
+#: c-family/c.opt:874
+msgid "Add mudflap bounds-checking instrumentation for single-threaded program"
+msgstr ""
+
+#: c-family/c.opt:878
+msgid "Add mudflap bounds-checking instrumentation for multi-threaded program"
+msgstr ""
+
+#: c-family/c.opt:882
+msgid "Ignore read operations when inserting mudflap instrumentation"
+msgstr ""
+
+#: c-family/c.opt:892
+msgid "Generate code for NeXT (Apple Mac OS X) runtime environment"
+msgstr ""
+
+#: c-family/c.opt:896
+msgid "Assume that receivers of Objective-C messages may be nil"
+msgstr ""
+
+#: c-family/c.opt:906
+msgid "Treat a throw() exception specification as noexcept to improve code size"
+msgstr ""
+
+#: c-family/c.opt:910
+msgid "Specify which ABI to use for Objective-C family code and meta-data generation."
+msgstr ""
+
+#: c-family/c.opt:916
+msgid "Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed"
+msgstr ""
+
+#: c-family/c.opt:920
+msgid "Allow fast jumps to the message dispatcher"
+msgstr ""
+
+#: c-family/c.opt:926
+msgid "Enable Objective-C exception and synchronization syntax"
+msgstr ""
+
+#: c-family/c.opt:930
+msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs"
+msgstr ""
+
+#: c-family/c.opt:934
+msgid "Enable inline checks for nil receivers with the NeXT runtime and ABI version 2."
+msgstr ""
+
+#: c-family/c.opt:939
+msgid "Enable Objective-C setjmp exception handling runtime"
+msgstr ""
+
+#: c-family/c.opt:943
+msgid "Conform to the Objective-C 1.0 language as implemented in GCC 4.0"
+msgstr ""
+
+#: c-family/c.opt:947
+msgid "Enable OpenMP (implies -frecursive in Fortran)"
+msgstr ""
+
+#: c-family/c.opt:951
+msgid "Recognize C++ keywords like \"compl\" and \"xor\""
+msgstr ""
+
+#: c-family/c.opt:962
+msgid "Look for and use PCH files even when preprocessing"
+msgstr ""
+
+#: c-family/c.opt:966
+msgid "Downgrade conformance errors to warnings"
+msgstr ""
+
+#: c-family/c.opt:970
+msgid "Enable Plan 9 language extensions"
+msgstr ""
+
+#: c-family/c.opt:974
+msgid "Treat the input file as already preprocessed"
+msgstr ""
+
+#: c-family/c.opt:982
+msgid "-ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages"
+msgstr ""
+
+#: c-family/c.opt:986
+msgid "-fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments"
+msgstr ""
+
+#: c-family/c.opt:990
+msgid "Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime"
+msgstr ""
+
+#: c-family/c.opt:994
+msgid "Enable automatic template instantiation"
+msgstr ""
+
+#: c-family/c.opt:998
+msgid "Generate run time type descriptor information"
+msgstr ""
+
+#: c-family/c.opt:1002
+msgid "Use the same size for double as for float"
+msgstr ""
+
+#: c-family/c.opt:1006
+msgid "Use the narrowest integer type possible for enumeration types"
+msgstr ""
+
+#: c-family/c.opt:1010
+msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\""
+msgstr ""
+
+#: c-family/c.opt:1014
+msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed"
+msgstr ""
+
+#: c-family/c.opt:1018
+msgid "Make \"char\" signed by default"
+msgstr ""
+
+#: c-family/c.opt:1025
+msgid "Display statistics accumulated during compilation"
+msgstr ""
+
+#: c-family/c.opt:1029
+msgid "Assume that values of enumeration type are always within the minimum range of that type"
+msgstr ""
+
+#: c-family/c.opt:1036
+msgid "-ftabstop=<number>\tDistance between tab stops for column reporting"
+msgstr ""
+
+#: c-family/c.opt:1043
+msgid "-ftemplate-depth=<number>\tSpecify maximum template instantiation depth"
+msgstr ""
+
+#: c-family/c.opt:1050
+msgid "-fno-threadsafe-statics\tDo not generate thread-safe code for initializing local statics"
+msgstr ""
+
+#: c-family/c.opt:1054
+msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned"
+msgstr ""
+
+#: c-family/c.opt:1058
+msgid "Make \"char\" unsigned by default"
+msgstr ""
+
+#: c-family/c.opt:1062
+msgid "Use __cxa_atexit to register destructors"
+msgstr ""
+
+#: c-family/c.opt:1066
+msgid "Use __cxa_get_exception_ptr in exception handling"
+msgstr ""
+
+#: c-family/c.opt:1070
+msgid "Marks all inlined functions and methods as having hidden visibility"
+msgstr ""
+
+#: c-family/c.opt:1074
+msgid "Changes visibility to match Microsoft Visual Studio by default"
+msgstr ""
+
+#: c-family/c.opt:1086
+msgid "Emit common-like symbols as weak symbols"
+msgstr ""
+
+#: c-family/c.opt:1090
+msgid "-fwide-exec-charset=<cset>\tConvert all wide strings and character constants to character set <cset>"
+msgstr ""
+
+#: c-family/c.opt:1094
+msgid "Generate a #line directive pointing at the current working directory"
+msgstr ""
+
+#: c-family/c.opt:1102
+msgid "Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode"
+msgstr ""
+
+#: c-family/c.opt:1106
+msgid "Dump declarations to a .decl file"
+msgstr ""
+
+#: c-family/c.opt:1110
+msgid "-femit-struct-debug-baseonly\tAggressive reduced debug info for structs"
+msgstr ""
+
+#: c-family/c.opt:1114
+msgid "-femit-struct-debug-reduced\tConservative reduced debug info for structs"
+msgstr ""
+
+#: c-family/c.opt:1118
+msgid "-femit-struct-debug-detailed=<spec-list>\tDetailed reduced debug info for structs"
+msgstr ""
+
+#: c-family/c.opt:1122
+msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path"
+msgstr ""
+
+#: c-family/c.opt:1126
+msgid "-imacros <file>\tAccept definition of macros in <file>"
+msgstr ""
+
+#: c-family/c.opt:1130
+msgid "-imultilib <dir>\tSet <dir> to be the multilib include subdirectory"
+msgstr ""
+
+#: c-family/c.opt:1134
+msgid "-include <file>\tInclude the contents of <file> before other files"
+msgstr ""
+
+#: c-family/c.opt:1138
+msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options"
+msgstr ""
+
+#: c-family/c.opt:1142
+msgid "-isysroot <dir>\tSet <dir> to be the system root directory"
+msgstr ""
+
+#: c-family/c.opt:1146
+msgid "-isystem <dir>\tAdd <dir> to the start of the system include path"
+msgstr ""
+
+#: c-family/c.opt:1150
+msgid "-iquote <dir>\tAdd <dir> to the end of the quote include path"
+msgstr ""
+
+#: c-family/c.opt:1154
+msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path"
+msgstr ""
+
+#: c-family/c.opt:1158
+msgid "-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path"
+msgstr ""
+
+#: c-family/c.opt:1168
+msgid "Do not search standard system include directories (those specified with -isystem will still be used)"
+msgstr ""
+
+#: c-family/c.opt:1172
+msgid "Do not search standard system include directories for C++"
+msgstr ""
+
+#: c-family/c.opt:1188
+msgid "Generate C header of platform-specific features"
+msgstr ""
+
+#: c-family/c.opt:1192
+msgid "Remap file names when including files"
+msgstr ""
+
+#: c-family/c.opt:1196 c-family/c.opt:1200
+msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum"
+msgstr ""
+
+#: c-family/c.opt:1204
+msgid "Conform to the ISO 2011 C++ standard (experimental and incomplete support)"
+msgstr ""
+
+#: c-family/c.opt:1208
+msgid "Deprecated in favor of -std=c++11"
+msgstr ""
+
+#: c-family/c.opt:1212 c-family/c.opt:1294
+msgid "Conform to the ISO 2011 C standard (experimental and incomplete support)"
+msgstr ""
+
+#: c-family/c.opt:1216
+msgid "Deprecated in favor of -std=c11"
+msgstr ""
+
+#: c-family/c.opt:1220 c-family/c.opt:1224 c-family/c.opt:1278
+msgid "Conform to the ISO 1990 C standard"
+msgstr ""
+
+#: c-family/c.opt:1228 c-family/c.opt:1286
+msgid "Conform to the ISO 1999 C standard"
+msgstr ""
+
+#: c-family/c.opt:1232
+msgid "Deprecated in favor of -std=c99"
+msgstr ""
+
+#: c-family/c.opt:1236 c-family/c.opt:1241
+msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical"
+msgstr ""
+
+#: c-family/c.opt:1246
+msgid "Conform to the ISO 2011 C++ standard with GNU extensions (experimental and incomplete support)"
+msgstr ""
+
+#: c-family/c.opt:1250
+msgid "Deprecated in favor of -std=gnu++11"
+msgstr ""
+
+#: c-family/c.opt:1254
+msgid "Conform to the ISO 2011 C standard with GNU extensions (experimental and incomplete support)"
+msgstr ""
+
+#: c-family/c.opt:1258
+msgid "Deprecated in favor of -std=gnu11"
+msgstr ""
+
+#: c-family/c.opt:1262 c-family/c.opt:1266
+msgid "Conform to the ISO 1990 C standard with GNU extensions"
+msgstr ""
+
+#: c-family/c.opt:1270
+msgid "Conform to the ISO 1999 C standard with GNU extensions"
+msgstr ""
+
+#: c-family/c.opt:1274
+msgid "Deprecated in favor of -std=gnu99"
+msgstr ""
+
+#: c-family/c.opt:1282
+msgid "Conform to the ISO 1990 C standard as amended in 1994"
+msgstr ""
+
+#: c-family/c.opt:1290
+msgid "Deprecated in favor of -std=iso9899:1999"
+msgstr ""
+
+#: c-family/c.opt:1301
+msgid "Enable traditional preprocessing"
+msgstr ""
+
+#: c-family/c.opt:1305
+msgid "-trigraphs\tSupport ISO C trigraphs"
+msgstr ""
+
+#: c-family/c.opt:1309
+msgid "Do not predefine system-specific and GCC-specific macros"
+msgstr ""
+
+#: go/lang.opt:42
+msgid "Add explicit checks for division by zero"
+msgstr ""
+
+#: go/lang.opt:46
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
+msgstr ""
+
+#: go/lang.opt:50
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgstr ""
+
+#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
+msgid "Functions which return values must end with return statements"
+msgstr ""
+
+#: lto/lang.opt:29
+msgid "Run the link-time optimizer in local transformation (LTRANS) mode."
+msgstr ""
+
+#: lto/lang.opt:33
+msgid "Specify a file to which a list of files output by LTRANS is written."
+msgstr ""
+
+#: lto/lang.opt:37
+msgid "Run the link-time optimizer in whole program analysis (WPA) mode."
+msgstr ""
+
+#: lto/lang.opt:41
+msgid "The resolution file"
+msgstr ""
+
+#: common.opt:270
+msgid "Display this information"
+msgstr ""
+
+#: common.opt:274
+msgid "--help=<class>\tDisplay descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params"
+msgstr ""
+
+#: common.opt:386
+msgid "Alias for --help=target"
+msgstr ""
+
+#: common.opt:411
+msgid "--param <param>=<value>\tSet parameter <param> to value. See below for a complete list of parameters"
+msgstr ""
+
+#: common.opt:439
+msgid "-O<number>\tSet optimization level to <number>"
+msgstr ""
+
+#: common.opt:443
+msgid "Optimize for space rather than speed"
+msgstr ""
+
+#: common.opt:447
+msgid "Optimize for speed disregarding exact standards compliance"
+msgstr ""
+
+#: common.opt:487
+msgid "This switch is deprecated; use -Wextra instead"
+msgstr ""
+
+#: common.opt:500
+msgid "Warn about returning structures, unions or arrays"
+msgstr ""
+
+#: common.opt:504
+msgid "Warn if an array is accessed out of bounds"
+msgstr ""
+
+#: common.opt:508
+msgid "Warn about inappropriate attribute usage"
+msgstr ""
+
+#: common.opt:512
+msgid "Warn about pointer casts which increase alignment"
+msgstr ""
+
+#: common.opt:516
+msgid "Warn when a #warning directive is encountered"
+msgstr ""
+
+#: common.opt:520
+msgid "Warn about uses of __attribute__((deprecated)) declarations"
+msgstr ""
+
+#: common.opt:524
+msgid "Warn when an optimization pass is disabled"
+msgstr ""
+
+#: common.opt:528
+msgid "Treat all warnings as errors"
+msgstr ""
+
+#: common.opt:532
+msgid "Treat specified warning as error"
+msgstr ""
+
+#: common.opt:536
+msgid "Print extra (possibly unwanted) warnings"
+msgstr ""
+
+#: common.opt:540
+msgid "Exit on the first error occurred"
+msgstr ""
+
+#: common.opt:544
+msgid "-Wframe-larger-than=<number>\tWarn if a function's stack frame requires more than <number> bytes"
+msgstr ""
+
+#: common.opt:548
+msgid "Warn when attempting to free a non-heap object"
+msgstr ""
+
+#: common.opt:552
+msgid "Warn when an inlined function cannot be inlined"
+msgstr ""
+
+#: common.opt:556
+msgid "Warn when an atomic memory model parameter is known to be outside the valid range."
+msgstr ""
+
+#: common.opt:563
+msgid "-Wlarger-than=<number>\tWarn if an object is larger than <number> bytes"
+msgstr ""
+
+#: common.opt:567
+msgid "Warn if the loop cannot be optimized due to nontrivial assumptions."
+msgstr ""
+
+#: common.opt:571 common.opt:623
+msgid "Warn about functions which might be candidates for __attribute__((noreturn))"
+msgstr ""
+
+#: common.opt:575
+msgid "Warn about overflow in arithmetic expressions"
+msgstr ""
+
+#: common.opt:579
+msgid "Warn when the packed attribute has no effect on struct layout"
+msgstr ""
+
+#: common.opt:583
+msgid "Warn when padding is required to align structure members"
+msgstr ""
+
+#: common.opt:587
+msgid "Warn when one local variable shadows another"
+msgstr ""
+
+#: common.opt:591
+msgid "Warn when not issuing stack smashing protection for some reason"
+msgstr ""
+
+#: common.opt:595
+msgid "Warn if stack usage might be larger than specified amount"
+msgstr ""
+
+#: common.opt:599 common.opt:603
+msgid "Warn about code which might break strict aliasing rules"
+msgstr ""
+
+#: common.opt:607 common.opt:611
+msgid "Warn about optimizations that assume that signed overflow is undefined"
+msgstr ""
+
+#: common.opt:615
+msgid "Warn about functions which might be candidates for __attribute__((const))"
+msgstr ""
+
+#: common.opt:619
+msgid "Warn about functions which might be candidates for __attribute__((pure))"
+msgstr ""
+
+#: common.opt:627
+msgid "Warn about enumerated switches, with no default, missing a case"
+msgstr ""
+
+#: common.opt:631
+msgid "Warn about enumerated switches missing a \"default:\" statement"
+msgstr ""
+
+#: common.opt:635
+msgid "Warn about all enumerated switches missing a specific case"
+msgstr ""
+
+#: common.opt:639
+msgid "Do not suppress warnings from system headers"
+msgstr ""
+
+#: common.opt:643
+msgid "Warn whenever a trampoline is generated"
+msgstr ""
+
+#: common.opt:647
+msgid "Warn if a comparison is always true or always false due to the limited range of the data type"
+msgstr ""
+
+#: common.opt:651
+msgid "Warn about uninitialized automatic variables"
+msgstr ""
+
+#: common.opt:655
+msgid "Warn about maybe uninitialized automatic variables"
+msgstr ""
+
+#: common.opt:663
+msgid "Enable all -Wunused- warnings"
+msgstr ""
+
+#: common.opt:667
+msgid "Warn when a function parameter is only set, otherwise unused"
+msgstr ""
+
+#: common.opt:671
+msgid "Warn when a variable is only set, otherwise unused"
+msgstr ""
+
+#: common.opt:675
+msgid "Warn when a function is unused"
+msgstr ""
+
+#: common.opt:679
+msgid "Warn when a label is unused"
+msgstr ""
+
+#: common.opt:683
+msgid "Warn when a function parameter is unused"
+msgstr ""
+
+#: common.opt:687
+msgid "Warn when an expression value is unused"
+msgstr ""
+
+#: common.opt:691
+msgid "Warn when a variable is unused"
+msgstr ""
+
+#: common.opt:695
+msgid "Warn in case profiles in -fprofile-use do not match"
+msgstr ""
+
+#: common.opt:699
+msgid "Warn when a vector operation is compiled outside the SIMD"
+msgstr ""
+
+#: common.opt:715
+msgid "-aux-info <file>\tEmit declaration information into <file>"
+msgstr ""
+
+#: common.opt:734
+msgid "-d<letters>\tEnable dumps from specific passes of the compiler"
+msgstr ""
+
+#: common.opt:738
+msgid "-dumpbase <file>\tSet the file basename to be used for dumps"
+msgstr ""
+
+#: common.opt:742
+msgid "-dumpdir <dir>\tSet the directory name to be used for dumps"
+msgstr ""
+
+#: common.opt:798
+msgid "Align the start of functions"
+msgstr ""
+
+#: common.opt:805
+msgid "Align labels which are only reached by jumping"
+msgstr ""
+
+#: common.opt:812
+msgid "Align all labels"
+msgstr ""
+
+#: common.opt:819
+msgid "Align the start of loops"
+msgstr ""
+
+#: common.opt:842
+msgid "Generate unwind tables that are exact at each instruction boundary"
+msgstr ""
+
+#: common.opt:846
+msgid "Generate auto-inc/dec instructions"
+msgstr ""
+
+#: common.opt:854
+msgid "Generate code to check bounds before indexing arrays"
+msgstr ""
+
+#: common.opt:858
+msgid "Replace add, compare, branch with branch on count register"
+msgstr ""
+
+#: common.opt:862
+msgid "Use profiling information for branch probabilities"
+msgstr ""
+
+#: common.opt:866
+msgid "Perform branch target load optimization before prologue / epilogue threading"
+msgstr ""
+
+#: common.opt:870
+msgid "Perform branch target load optimization after prologue / epilogue threading"
+msgstr ""
+
+#: common.opt:874
+msgid "Restrict target load migration not to re-use registers in any basic block"
+msgstr ""
+
+#: common.opt:878
+msgid "-fcall-saved-<register>\tMark <register> as being preserved across functions"
+msgstr ""
+
+#: common.opt:882
+msgid "-fcall-used-<register>\tMark <register> as being corrupted by function calls"
+msgstr ""
+
+#: common.opt:889
+msgid "Save registers around function calls"
+msgstr ""
+
+#: common.opt:893
+msgid "Compare the results of several data dependence analyzers."
+msgstr ""
+
+#: common.opt:897
+msgid "Looks for opportunities to reduce stack adjustments and stack references."
+msgstr ""
+
+#: common.opt:901
+msgid "Do not put uninitialized globals in the common section"
+msgstr ""
+
+#: common.opt:909
+msgid "-fcompare-debug[=<opts>]\tCompile with and without e.g. -gtoggle, and compare the final-insns dump"
+msgstr ""
+
+#: common.opt:913
+msgid "Run only the second compilation of -fcompare-debug"
+msgstr ""
+
+#: common.opt:917
+msgid "Perform comparison elimination after register allocation has finished"
+msgstr ""
+
+#: common.opt:921
+msgid "Do not perform optimizations increasing noticeably stack usage"
+msgstr ""
+
+#: common.opt:925
+msgid "Perform a register copy-propagation optimization pass"
+msgstr ""
+
+#: common.opt:929
+msgid "Perform cross-jumping optimization"
+msgstr ""
+
+#: common.opt:933
+msgid "When running CSE, follow jumps to their targets"
+msgstr ""
+
+#: common.opt:941
+msgid "Omit range reduction step when performing complex division"
+msgstr ""
+
+#: common.opt:945
+msgid "Complex multiplication and division follow Fortran rules"
+msgstr ""
+
+#: common.opt:949
+msgid "Place data items into their own section"
+msgstr ""
+
+#: common.opt:953
+msgid "List all available debugging counters with their limits and counts."
+msgstr ""
+
+#: common.opt:957
+msgid "-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]\tSet the debug counter limit. "
+msgstr ""
+
+#: common.opt:961
+msgid "Map one directory name to another in debug information"
+msgstr ""
+
+#: common.opt:965
+msgid "Output .debug_types section when using DWARF v4 debuginfo."
+msgstr ""
+
+#: common.opt:971
+msgid "Defer popping functions args from stack until later"
+msgstr ""
+
+#: common.opt:975
+msgid "Attempt to fill delay slots of branch instructions"
+msgstr ""
+
+#: common.opt:979
+msgid "Delete useless null pointer checks"
+msgstr ""
+
+#: common.opt:983
+msgid "Try to convert virtual calls to direct ones."
+msgstr ""
+
+#: common.opt:987
+msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics"
+msgstr ""
+
+#: common.opt:1004
+msgid "Amend appropriate diagnostic messages with the command line option that controls them"
+msgstr ""
+
+#: common.opt:1008
+msgid "-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass"
+msgstr ""
+
+#: common.opt:1012
+msgid "-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass"
+msgstr ""
+
+#: common.opt:1016
+msgid "-fdump-<type>\tDump various compiler internals to a file"
+msgstr ""
+
+#: common.opt:1023
+msgid "-fdump-final-insns=filename\tDump to filename the insns at the end of translation"
+msgstr ""
+
+#: common.opt:1027
+msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code"
+msgstr ""
+
+#: common.opt:1031
+msgid "Suppress output of addresses in debugging dumps"
+msgstr ""
+
+#: common.opt:1035
+msgid "Dump optimization passes"
+msgstr ""
+
+#: common.opt:1039
+msgid "Suppress output of instruction numbers, line number notes and addresses in debugging dumps"
+msgstr ""
+
+#: common.opt:1043
+msgid "Suppress output of previous and next insn numbers in debugging dumps"
+msgstr ""
+
+#: common.opt:1047
+msgid "Enable CFI tables via GAS assembler directives."
+msgstr ""
+
+#: common.opt:1051
+msgid "Perform early inlining"
+msgstr ""
+
+#: common.opt:1055
+msgid "Perform DWARF2 duplicate elimination"
+msgstr ""
+
+#: common.opt:1059
+msgid "Perform interprocedural reduction of aggregates"
+msgstr ""
+
+#: common.opt:1063 common.opt:1067
+msgid "Perform unused type elimination in debug info"
+msgstr ""
+
+#: common.opt:1071
+msgid "Do not suppress C++ class debug information."
+msgstr ""
+
+#: common.opt:1075
+msgid "Enable exception handling"
+msgstr ""
+
+#: common.opt:1079
+msgid "Perform a number of minor, expensive optimizations"
+msgstr ""
+
+#: common.opt:1083
+msgid "-fexcess-precision=[fast|standard]\tSpecify handling of excess floating-point precision"
+msgstr ""
+
+#: common.opt:1086
+#, c-format
+msgid "unknown excess precision style %qs"
+msgstr ""
+
+#: common.opt:1099
+msgid "Output lto objects containing both the intermediate language and binary output."
+msgstr ""
+
+#: common.opt:1103
+msgid "Assume no NaNs or infinities are generated"
+msgstr ""
+
+#: common.opt:1107
+msgid "-ffixed-<register>\tMark <register> as being unavailable to the compiler"
+msgstr ""
+
+#: common.opt:1111
+msgid "Don't allocate floats and doubles in extended-precision registers"
+msgstr ""
+
+#: common.opt:1119
+msgid "Perform a forward propagation pass on RTL"
+msgstr ""
+
+#: common.opt:1123
+msgid "-ffp-contract=[off|on|fast] Perform floating-point expression contraction."
+msgstr ""
+
+#: common.opt:1126
+#, c-format
+msgid "unknown floating point contraction style %qs"
+msgstr ""
+
+#: common.opt:1143
+msgid "Allow function addresses to be held in registers"
+msgstr ""
+
+#: common.opt:1147
+msgid "Place each function into its own section"
+msgstr ""
+
+#: common.opt:1151
+msgid "Perform global common subexpression elimination"
+msgstr ""
+
+#: common.opt:1155
+msgid "Perform enhanced load motion during global common subexpression elimination"
+msgstr ""
+
+#: common.opt:1159
+msgid "Perform store motion after global common subexpression elimination"
+msgstr ""
+
+#: common.opt:1163
+msgid "Perform redundant load after store elimination in global common subexpression"
+msgstr ""
+
+#: common.opt:1168
+msgid "Perform global common subexpression elimination after register allocation"
+msgstr ""
+
+#: common.opt:1174
+msgid "Enable in and out of Graphite representation"
+msgstr ""
+
+#: common.opt:1178
+msgid "Enable Graphite Identity transformation"
+msgstr ""
+
+#: common.opt:1182
+msgid "Mark all loops as parallel"
+msgstr ""
+
+#: common.opt:1186
+msgid "Enable Loop Strip Mining transformation"
+msgstr ""
+
+#: common.opt:1190
+msgid "Enable Loop Interchange transformation"
+msgstr ""
+
+#: common.opt:1194
+msgid "Enable Loop Blocking transformation"
+msgstr ""
+
+#: common.opt:1198
+msgid "Enable support for GNU transactional memory"
+msgstr ""
+
+#: common.opt:1202
+msgid "Enable Loop Flattening transformation"
+msgstr ""
+
+#: common.opt:1206
+msgid "Force bitfield accesses to match their type width"
+msgstr ""
+
+#: common.opt:1210
+msgid "Enable guessing of branch probabilities"
+msgstr ""
+
+#: common.opt:1218
+msgid "Process #ident directives"
+msgstr ""
+
+#: common.opt:1222
+msgid "Perform conversion of conditional jumps to branchless equivalents"
+msgstr ""
+
+#: common.opt:1226
+msgid "Perform conversion of conditional jumps to conditional execution"
+msgstr ""
+
+#: common.opt:1230
+msgid "Convert conditional jumps in innermost loops to branchless equivalents"
+msgstr ""
+
+#: common.opt:1234
+msgid "Also if-convert conditional jumps containing memory writes"
+msgstr ""
+
+#: common.opt:1242
+msgid "Do not generate .size directives"
+msgstr ""
+
+#: common.opt:1246
+msgid "Perform indirect inlining"
+msgstr ""
+
+#: common.opt:1252
+msgid "Enable inlining of function declared \"inline\", disabling disables all inlining"
+msgstr ""
+
+#: common.opt:1256
+msgid "Integrate functions into their callers when code size is known not to grow"
+msgstr ""
+
+#: common.opt:1260
+msgid "Integrate functions not declared \"inline\" into their callers when profitable"
+msgstr ""
+
+#: common.opt:1264
+msgid "Integrate functions only required by their single caller"
+msgstr ""
+
+#: common.opt:1271
+msgid "-finline-limit=<number>\tLimit the size of inlined functions to <number>"
+msgstr ""
+
+#: common.opt:1275
+msgid "Inline __atomic operations when a lock free instruction sequence is available."
+msgstr ""
+
+#: common.opt:1279
+msgid "Instrument function entry and exit with profiling calls"
+msgstr ""
+
+#: common.opt:1283
+msgid "-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions"
+msgstr ""
+
+#: common.opt:1287
+msgid "-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files"
+msgstr ""
+
+#: common.opt:1291
+msgid "Perform Interprocedural constant propagation"
+msgstr ""
+
+#: common.opt:1295
+msgid "Perform cloning to make Interprocedural constant propagation stronger"
+msgstr ""
+
+#: common.opt:1299
+msgid "Perform interprocedural profile propagation"
+msgstr ""
+
+#: common.opt:1303
+msgid "Perform interprocedural points-to analysis"
+msgstr ""
+
+#: common.opt:1307
+msgid "Discover pure and const functions"
+msgstr ""
+
+#: common.opt:1311
+msgid "Discover readonly and non addressable static variables"
+msgstr ""
+
+#: common.opt:1315
+msgid "Perform matrix layout flattening and transposing based"
+msgstr ""
+
+#: common.opt:1324
+msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm"
+msgstr ""
+
+#: common.opt:1327
+#, c-format
+msgid "unknown IRA algorithm %qs"
+msgstr ""
+
+#: common.opt:1337
+msgid "-fira-region=[one|all|mixed] Set regions for IRA"
+msgstr ""
+
+#: common.opt:1340
+#, c-format
+msgid "unknown IRA region %qs"
+msgstr ""
+
+#: common.opt:1353
+msgid "Use IRA based register pressure calculation"
+msgstr ""
+
+#: common.opt:1358
+msgid "Share slots for saving different hard registers."
+msgstr ""
+
+#: common.opt:1362
+msgid "Share stack slots for spilled pseudo-registers."
+msgstr ""
+
+#: common.opt:1366
+msgid "-fira-verbose=<number>\tControl IRA's level of diagnostic messages."
+msgstr ""
+
+#: common.opt:1370
+msgid "Optimize induction variables on trees"
+msgstr ""
+
+#: common.opt:1374
+msgid "Use jump tables for sufficiently large switch statements"
+msgstr ""
+
+#: common.opt:1378
+msgid "Generate code for functions even if they are fully inlined"
+msgstr ""
+
+#: common.opt:1382
+msgid "Emit static const variables even if they are not used"
+msgstr ""
+
+#: common.opt:1386
+msgid "Give external symbols a leading underscore"
+msgstr ""
+
+#: common.opt:1394
+msgid "Enable link-time optimization."
+msgstr ""
+
+#: common.opt:1398
+msgid "Link-time optimization with number of parallel jobs or jobserver."
+msgstr ""
+
+#: common.opt:1402
+msgid "Partition functions and vars at linktime based on object files they originate from"
+msgstr ""
+
+#: common.opt:1406
+msgid "Partition functions and vars at linktime into approximately same sized buckets"
+msgstr ""
+
+#: common.opt:1410
+msgid "Disable partioning and streaming"
+msgstr ""
+
+#: common.opt:1415
+msgid "-flto-compression-level=<number>\tUse zlib compression level <number> for IL"
+msgstr ""
+
+#: common.opt:1419
+msgid "Report various link-time optimization statistics"
+msgstr ""
+
+#: common.opt:1423
+msgid "Set errno after built-in math functions"
+msgstr ""
+
+#: common.opt:1427
+msgid "-fmax-errors=<number>\tMaximum number of errors to report"
+msgstr ""
+
+#: common.opt:1431
+msgid "Report on permanent memory allocation"
+msgstr ""
+
+#: common.opt:1438
+msgid "Attempt to merge identical constants and constant variables"
+msgstr ""
+
+#: common.opt:1442
+msgid "Attempt to merge identical constants across compilation units"
+msgstr ""
+
+#: common.opt:1446
+msgid "Attempt to merge identical debug strings across compilation units"
+msgstr ""
+
+#: common.opt:1450
+msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line. 0 suppresses line-wrapping"
+msgstr ""
+
+#: common.opt:1454
+msgid "Perform SMS based modulo scheduling before the first scheduling pass"
+msgstr ""
+
+#: common.opt:1458
+msgid "Perform SMS based modulo scheduling with register moves allowed"
+msgstr ""
+
+#: common.opt:1462
+msgid "Move loop invariant computations out of loops"
+msgstr ""
+
+#: common.opt:1466
+msgid "Use the RTL dead code elimination pass"
+msgstr ""
+
+#: common.opt:1470
+msgid "Use the RTL dead store elimination pass"
+msgstr ""
+
+#: common.opt:1474
+msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling"
+msgstr ""
+
+#: common.opt:1478
+msgid "Support synchronous non-call exceptions"
+msgstr ""
+
+#: common.opt:1482
+msgid "When possible do not generate stack frames"
+msgstr ""
+
+#: common.opt:1486
+msgid "Do the full register move optimization pass"
+msgstr ""
+
+#: common.opt:1490
+msgid "Optimize sibling and tail recursive calls"
+msgstr ""
+
+#: common.opt:1494
+msgid "Perform partial inlining"
+msgstr ""
+
+#: common.opt:1498 common.opt:1502
+msgid "Report on memory allocation before interprocedural optimization"
+msgstr ""
+
+#: common.opt:1506
+msgid "Pack structure members together without holes"
+msgstr ""
+
+#: common.opt:1510
+msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment"
+msgstr ""
+
+#: common.opt:1514
+msgid "Return small aggregates in memory, not registers"
+msgstr ""
+
+#: common.opt:1518
+msgid "Perform loop peeling"
+msgstr ""
+
+#: common.opt:1522
+msgid "Enable machine specific peephole optimizations"
+msgstr ""
+
+#: common.opt:1526
+msgid "Enable an RTL peephole pass before sched2"
+msgstr ""
+
+#: common.opt:1530
+msgid "Generate position-independent code if possible (large mode)"
+msgstr ""
+
+#: common.opt:1534
+msgid "Generate position-independent code for executables if possible (large mode)"
+msgstr ""
+
+#: common.opt:1538
+msgid "Generate position-independent code if possible (small mode)"
+msgstr ""
+
+#: common.opt:1542
+msgid "Generate position-independent code for executables if possible (small mode)"
+msgstr ""
+
+#: common.opt:1546
+msgid "Specify a plugin to load"
+msgstr ""
+
+#: common.opt:1550
+msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>"
+msgstr ""
+
+#: common.opt:1554
+msgid "Run predictive commoning optimization."
+msgstr ""
+
+#: common.opt:1558
+msgid "Generate prefetch instructions, if available, for arrays in loops"
+msgstr ""
+
+#: common.opt:1562
+msgid "Enable basic program profiling code"
+msgstr ""
+
+#: common.opt:1566
+msgid "Insert arc-based program profiling code"
+msgstr ""
+
+#: common.opt:1570
+msgid "Set the top-level directory for storing the profile data."
+msgstr ""
+
+#: common.opt:1575
+msgid "Enable correction of flow inconsistent profile data input"
+msgstr ""
+
+#: common.opt:1579
+msgid "Enable common options for generating profile info for profile feedback directed optimizations"
+msgstr ""
+
+#: common.opt:1583
+msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir="
+msgstr ""
+
+#: common.opt:1587
+msgid "Enable common options for performing profile feedback directed optimizations"
+msgstr ""
+
+#: common.opt:1591
+msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir="
+msgstr ""
+
+#: common.opt:1595
+msgid "Insert code to profile values of expressions"
+msgstr ""
+
+#: common.opt:1602
+msgid "-frandom-seed=<string>\tMake compile reproducible using <string>"
+msgstr ""
+
+#: common.opt:1612
+msgid "Record gcc command line switches in the object file."
+msgstr ""
+
+#: common.opt:1616
+msgid "Return small aggregates in registers"
+msgstr ""
+
+#: common.opt:1620
+msgid "Enables a register move optimization"
+msgstr ""
+
+#: common.opt:1624
+msgid "Perform a register renaming optimization pass"
+msgstr ""
+
+#: common.opt:1628
+msgid "Reorder basic blocks to improve code placement"
+msgstr ""
+
+#: common.opt:1632
+msgid "Reorder basic blocks and partition into hot and cold sections"
+msgstr ""
+
+#: common.opt:1636
+msgid "Reorder functions to improve code placement"
+msgstr ""
+
+#: common.opt:1640
+msgid "Add a common subexpression elimination pass after loop optimizations"
+msgstr ""
+
+#: common.opt:1648
+msgid "Disable optimizations that assume default FP rounding behavior"
+msgstr ""
+
+#: common.opt:1652
+msgid "Enable scheduling across basic blocks"
+msgstr ""
+
+#: common.opt:1656
+msgid "Enable register pressure sensitive insn scheduling"
+msgstr ""
+
+#: common.opt:1660
+msgid "Allow speculative motion of non-loads"
+msgstr ""
+
+#: common.opt:1664
+msgid "Allow speculative motion of some loads"
+msgstr ""
+
+#: common.opt:1668
+msgid "Allow speculative motion of more loads"
+msgstr ""
+
+#: common.opt:1672
+msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler"
+msgstr ""
+
+#: common.opt:1676
+msgid "If scheduling post reload, do superblock scheduling"
+msgstr ""
+
+#: common.opt:1684
+msgid "Reschedule instructions before register allocation"
+msgstr ""
+
+#: common.opt:1688
+msgid "Reschedule instructions after register allocation"
+msgstr ""
+
+#: common.opt:1695
+msgid "Schedule instructions using selective scheduling algorithm"
+msgstr ""
+
+#: common.opt:1699
+msgid "Run selective scheduling after reload"
+msgstr ""
+
+#: common.opt:1703
+msgid "Perform software pipelining of inner loops during selective scheduling"
+msgstr ""
+
+#: common.opt:1707
+msgid "Perform software pipelining of outer loops during selective scheduling"
+msgstr ""
+
+#: common.opt:1711
+msgid "Reschedule pipelined regions without pipelining"
+msgstr ""
+
+#: common.opt:1717
+msgid "Allow premature scheduling of queued insns"
+msgstr ""
+
+#: common.opt:1721
+msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled"
+msgstr ""
+
+#: common.opt:1729
+msgid "Set dependence distance checking in premature scheduling of queued insns"
+msgstr ""
+
+#: common.opt:1733
+msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns"
+msgstr ""
+
+#: common.opt:1737
+msgid "Enable the group heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1741
+msgid "Enable the critical path heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1745
+msgid "Enable the speculative instruction heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1749
+msgid "Enable the rank heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1753
+msgid "Enable the last instruction heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1757
+msgid "Enable the dependent count heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1761
+msgid "Access data in the same section from shared anchor points"
+msgstr ""
+
+#: common.opt:1773
+msgid "Turn on Redundant Extensions Elimination pass."
+msgstr ""
+
+#: common.opt:1777
+msgid "Show column numbers in diagnostics, when available. Default on"
+msgstr ""
+
+#: common.opt:1781
+msgid "Emit function prologues only before parts of the function that need it,"
+msgstr ""
+
+#: common.opt:1786
+msgid "Disable optimizations observable by IEEE signaling NaNs"
+msgstr ""
+
+#: common.opt:1790
+msgid "Disable floating point optimizations that ignore the IEEE signedness of zero"
+msgstr ""
+
+#: common.opt:1794
+msgid "Convert floating point constants to single precision constants"
+msgstr ""
+
+#: common.opt:1798
+msgid "Split lifetimes of induction variables when loops are unrolled"
+msgstr ""
+
+#: common.opt:1802
+msgid "Generate discontiguous stack frames"
+msgstr ""
+
+#: common.opt:1806
+msgid "Split wide types into independent registers"
+msgstr ""
+
+#: common.opt:1810
+msgid "Apply variable expansion when loops are unrolled"
+msgstr ""
+
+#: common.opt:1814
+msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program"
+msgstr ""
+
+#: common.opt:1818
+msgid "Insert stack checking code into the program. Same as -fstack-check=specific"
+msgstr ""
+
+#: common.opt:1825
+msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>"
+msgstr ""
+
+#: common.opt:1829
+msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>"
+msgstr ""
+
+#: common.opt:1833
+msgid "Use propolice as a stack protection method"
+msgstr ""
+
+#: common.opt:1837
+msgid "Use a stack protection method for every function"
+msgstr ""
+
+#: common.opt:1841
+msgid "Output stack usage information on a per-function basis"
+msgstr ""
+
+#: common.opt:1853
+msgid "Assume strict aliasing rules apply"
+msgstr ""
+
+#: common.opt:1857
+msgid "Treat signed overflow as undefined"
+msgstr ""
+
+#: common.opt:1861
+msgid "Check for syntax errors, then stop"
+msgstr ""
+
+#: common.opt:1865
+msgid "Create data files needed by \"gcov\""
+msgstr ""
+
+#: common.opt:1869
+msgid "Perform jump threading optimizations"
+msgstr ""
+
+#: common.opt:1873
+msgid "Report the time taken by each compiler pass"
+msgstr ""
+
+#: common.opt:1877
+msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model"
+msgstr ""
+
+#: common.opt:1880
+#, c-format
+msgid "unknown TLS model %qs"
+msgstr ""
+
+#: common.opt:1896
+msgid "Reorder top level functions, variables, and asms"
+msgstr ""
+
+#: common.opt:1900
+msgid "Perform superblock formation via tail duplication"
+msgstr ""
+
+#: common.opt:1907
+msgid "Assume floating-point operations can trap"
+msgstr ""
+
+#: common.opt:1911
+msgid "Trap for signed overflow in addition, subtraction and multiplication"
+msgstr ""
+
+#: common.opt:1915
+msgid "Enable SSA-CCP optimization on trees"
+msgstr ""
+
+#: common.opt:1919
+msgid "Enable SSA-BIT-CCP optimization on trees"
+msgstr ""
+
+#: common.opt:1927
+msgid "Enable loop header copying on trees"
+msgstr ""
+
+#: common.opt:1931
+msgid "Replace SSA temporaries with better names in copies"
+msgstr ""
+
+#: common.opt:1935
+msgid "Enable copy propagation on trees"
+msgstr ""
+
+#: common.opt:1943
+msgid "Transform condition stores into unconditional ones"
+msgstr ""
+
+#: common.opt:1947
+msgid "Perform conversions of switch initializations."
+msgstr ""
+
+#: common.opt:1951
+msgid "Enable SSA dead code elimination optimization on trees"
+msgstr ""
+
+#: common.opt:1955
+msgid "Enable dominator optimizations"
+msgstr ""
+
+#: common.opt:1959
+msgid "Enable tail merging on trees"
+msgstr ""
+
+#: common.opt:1963
+msgid "Enable dead store elimination"
+msgstr ""
+
+#: common.opt:1967
+msgid "Enable forward propagation on trees"
+msgstr ""
+
+#: common.opt:1971
+msgid "Enable Full Redundancy Elimination (FRE) on trees"
+msgstr ""
+
+#: common.opt:1975
+msgid "Enable string length optimizations on trees"
+msgstr ""
+
+#: common.opt:1979
+msgid "Enable loop distribution on trees"
+msgstr ""
+
+#: common.opt:1983
+msgid "Enable loop distribution for patterns transformed into a library call"
+msgstr ""
+
+#: common.opt:1987
+msgid "Enable loop invariant motion on trees"
+msgstr ""
+
+#: common.opt:1991
+msgid "Enable loop interchange transforms. Same as -floop-interchange"
+msgstr ""
+
+#: common.opt:1995
+msgid "Create canonical induction variables in loops"
+msgstr ""
+
+#: common.opt:1999
+msgid "Enable loop optimizations on tree level"
+msgstr ""
+
+#: common.opt:2003
+msgid "Enable automatic parallelization of loops"
+msgstr ""
+
+#: common.opt:2007
+msgid "Enable hoisting loads from conditional pointers."
+msgstr ""
+
+#: common.opt:2011
+msgid "Enable SSA-PRE optimization on trees"
+msgstr ""
+
+#: common.opt:2015
+msgid "Perform function-local points-to analysis on trees."
+msgstr ""
+
+#: common.opt:2019
+msgid "Enable reassociation on tree level"
+msgstr ""
+
+#: common.opt:2027
+msgid "Enable SSA code sinking on trees"
+msgstr ""
+
+#: common.opt:2031
+msgid "Perform scalar replacement of aggregates"
+msgstr ""
+
+#: common.opt:2035
+msgid "Replace temporary expressions in the SSA->normal pass"
+msgstr ""
+
+#: common.opt:2039
+msgid "Perform live range splitting during the SSA->normal pass"
+msgstr ""
+
+#: common.opt:2043
+msgid "Perform Value Range Propagation on trees"
+msgstr ""
+
+#: common.opt:2047
+msgid "Compile whole compilation unit at a time"
+msgstr ""
+
+#: common.opt:2051
+msgid "Perform loop unrolling when iteration count is known"
+msgstr ""
+
+#: common.opt:2055
+msgid "Perform loop unrolling for all loops"
+msgstr ""
+
+#: common.opt:2062
+msgid "Allow loop optimizations to assume that the loops behave in normal way"
+msgstr ""
+
+#: common.opt:2066
+msgid "Allow optimization for floating-point arithmetic which may change the"
+msgstr ""
+
+#: common.opt:2071
+msgid "Same as -fassociative-math for expressions which include division."
+msgstr ""
+
+#: common.opt:2079
+msgid "Allow math optimizations that may violate IEEE or ISO standards"
+msgstr ""
+
+#: common.opt:2083
+msgid "Perform loop unswitching"
+msgstr ""
+
+#: common.opt:2087
+msgid "Just generate unwind tables for exception handling"
+msgstr ""
+
+#: common.opt:2099
+msgid "Perform variable tracking"
+msgstr ""
+
+#: common.opt:2107
+msgid "Perform variable tracking by annotating assignments"
+msgstr ""
+
+#: common.opt:2113
+msgid "Toggle -fvar-tracking-assignments"
+msgstr ""
+
+#: common.opt:2117
+msgid "Perform variable tracking and also tag variables that are uninitialized"
+msgstr ""
+
+#: common.opt:2121
+msgid "Enable loop vectorization on trees"
+msgstr ""
+
+#: common.opt:2125
+msgid "Enable basic block vectorization (SLP) on trees"
+msgstr ""
+
+#: common.opt:2129
+msgid "Enable use of cost model in vectorization"
+msgstr ""
+
+#: common.opt:2133
+msgid "Enable loop versioning when doing loop vectorization on trees"
+msgstr ""
+
+#: common.opt:2137
+msgid "-ftree-vectorizer-verbose=<number>\tSet the verbosity level of the vectorizer"
+msgstr ""
+
+#: common.opt:2141
+msgid "Enable copy propagation of scalar-evolution information."
+msgstr ""
+
+#: common.opt:2151
+msgid "Add extra commentary to assembler output"
+msgstr ""
+
+#: common.opt:2155
+msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility"
+msgstr ""
+
+#: common.opt:2158
+#, c-format
+msgid "unrecognized visibility value %qs"
+msgstr ""
+
+#: common.opt:2174
+msgid "Use expression value profiles in optimizations"
+msgstr ""
+
+#: common.opt:2178
+msgid "Construct webs and split unrelated uses of single variable"
+msgstr ""
+
+#: common.opt:2182
+msgid "Enable conditional dead code elimination for builtin calls"
+msgstr ""
+
+#: common.opt:2186
+msgid "Perform whole program optimizations"
+msgstr ""
+
+#: common.opt:2190
+msgid "Assume signed arithmetic overflow wraps around"
+msgstr ""
+
+#: common.opt:2194
+msgid "Put zero initialized data in the bss section"
+msgstr ""
+
+#: common.opt:2198
+msgid "Generate debug information in default format"
+msgstr ""
+
+#: common.opt:2202
+msgid "Generate debug information in COFF format"
+msgstr ""
+
+#: common.opt:2206
+msgid "Generate debug information in DWARF v2 (or later) format"
+msgstr ""
+
+#: common.opt:2210
+msgid "Generate debug information in default extended format"
+msgstr ""
+
+#: common.opt:2214
+msgid "Don't record gcc command line switches in DWARF DW_AT_producer."
+msgstr ""
+
+#: common.opt:2218
+msgid "Record gcc command line switches in DWARF DW_AT_producer."
+msgstr ""
+
+#: common.opt:2222
+msgid "Generate debug information in STABS format"
+msgstr ""
+
+#: common.opt:2226
+msgid "Generate debug information in extended STABS format"
+msgstr ""
+
+#: common.opt:2230
+msgid "Emit DWARF additions beyond selected version"
+msgstr ""
+
+#: common.opt:2234
+msgid "Don't emit DWARF additions beyond selected version"
+msgstr ""
+
+#: common.opt:2238
+msgid "Toggle debug information generation"
+msgstr ""
+
+#: common.opt:2242
+msgid "Generate debug information in VMS format"
+msgstr ""
+
+#: common.opt:2246
+msgid "Generate debug information in XCOFF format"
+msgstr ""
+
+#: common.opt:2250
+msgid "Generate debug information in extended XCOFF format"
+msgstr ""
+
+#: common.opt:2257
+msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory"
+msgstr ""
+
+#: common.opt:2279
+msgid "-o <file>\tPlace output into <file>"
+msgstr ""
+
+#: common.opt:2283
+msgid "Enable function profiling"
+msgstr ""
+
+#: common.opt:2290
+msgid "Issue warnings needed for strict compliance to the standard"
+msgstr ""
+
+#: common.opt:2294
+msgid "Like -pedantic but issue them as errors"
+msgstr ""
+
+#: common.opt:2331
+msgid "Do not display functions compiled or elapsed time"
+msgstr ""
+
+#: common.opt:2363
+msgid "Enable verbose output"
+msgstr ""
+
+#: common.opt:2367
+msgid "Display the compiler's version"
+msgstr ""
+
+#: common.opt:2371
+msgid "Suppress warnings"
+msgstr ""
+
+#: common.opt:2381
+msgid "Create a shared library"
+msgstr ""
+
+#: common.opt:2414
+msgid "Create a position independent executable"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:853
+msgid "invalid use of type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
+msgid "constant refers to itself"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:3900
+msgid "expected numeric type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:3905
+msgid "expected boolean type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:3911
+msgid "expected integer or boolean type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:3918
+msgid "invalid operand for unary %<&%>"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:3927
+msgid "expected pointer"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
+msgid "incompatible types in binary expression"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:5620
+msgid "shift of non-integer operand"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
+msgid "shift count not unsigned integer"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:5638
+msgid "negative shift count"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6431
+msgid "object is not a method"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6440
+msgid "method type does not match object type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6714
+msgid "invalid use of %<...%> with builtin function"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
+msgid "not enough arguments"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
+msgid "too many arguments"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6809
+msgid "argument 1 must be a map"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6876
+msgid "invalid type for make function"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6890
+msgid "length required when allocating a slice"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6904
+msgid "bad size for make"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6919
+msgid "bad capacity when making slice"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:6930
+msgid "too many arguments to make"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7588
+msgid "argument must be array or slice or channel"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7598
+msgid "argument must be string or array or slice or map or channel"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7644
+msgid "unsupported argument type to builtin function"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7655
+msgid "argument must be channel"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7657
+msgid "cannot close receive-only channel"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7677
+msgid "argument must be a field reference"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7704
+msgid "left argument must be a slice"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7712
+msgid "element types must be the same"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7717
+msgid "first argument must be []byte"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7720
+msgid "second argument must be slice or string"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7761
+msgid "argument 2 has invalid type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7777
+msgid "argument must have complex type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7795
+msgid "complex arguments must have identical types"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:7797
+msgid "complex arguments must have floating-point type"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:8666
+msgid "invalid use of %<...%> with non-slice"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
+msgid "expected function"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:8939
+msgid "incompatible type for receiver"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:8957
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
+msgid "number of results does not match number of values"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
+msgid "index must be integer"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
+msgid "slice end must be integer"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:9751
+msgid "slice of unaddressable value"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:10344
+msgid "incompatible type for map index"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:10692
+msgid "expected interface or pointer to interface"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:11260
+msgid "too many expressions for struct"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:11273
+msgid "too few expressions for struct"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
+msgid "invalid unsafe.Pointer conversion"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
+msgid "type assertion only valid for interface types"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:12958
+msgid "impossible type assertion: type does not implement interface"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
+msgid "expected channel"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
+msgid "invalid receive on send-only channel"
+msgstr ""
+
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
+#: go/gofrontend/statements.cc:590
+msgid "invalid left hand side of assignment"
+msgstr ""
+
+#: go/gofrontend/statements.cc:1105
+msgid "expected map index on right hand side"
+msgstr ""
+
+#: go/gofrontend/statements.cc:1254
+msgid "expected map index on left hand side"
+msgstr ""
+
+#: go/gofrontend/statements.cc:2632 go/gofrontend/statements.cc:2661
+msgid "not enough arguments to return"
+msgstr ""
+
+#: go/gofrontend/statements.cc:2640
+msgid "return with value in function with no return type"
+msgstr ""
+
+#: go/gofrontend/statements.cc:2667
+msgid "too many values in return statement"
+msgstr ""
+
+#: go/gofrontend/statements.cc:3145
+msgid "expected boolean expression"
+msgstr ""
+
+#: go/gofrontend/statements.cc:4334
+msgid "incompatible types in send"
+msgstr ""
+
+#: go/gofrontend/statements.cc:4339
+msgid "invalid send on receive-only channel"
+msgstr ""
+
+#: go/gofrontend/statements.cc:5226
+msgid "too many variables for range clause with channel"
+msgstr ""
+
+#: go/gofrontend/statements.cc:5233
+msgid "range clause must have array, slice, string, map, or channel type"
+msgstr ""
+
+#: go/gofrontend/types.cc:527
+msgid "invalid comparison of non-ordered type"
+msgstr ""
+
+#: go/gofrontend/types.cc:543
+msgid "slice can only be compared to nil"
+msgstr ""
+
+#: go/gofrontend/types.cc:545
+msgid "map can only be compared to nil"
+msgstr ""
+
+#: go/gofrontend/types.cc:547
+msgid "func can only be compared to nil"
+msgstr ""
+
+#: go/gofrontend/types.cc:553
+#, c-format
+msgid "invalid operation (%s)"
+msgstr ""
+
+#: go/gofrontend/types.cc:576
+msgid "invalid comparison of non-comparable type"
+msgstr ""
+
+#: go/gofrontend/types.cc:594
+msgid "invalid comparison of non-comparable struct"
+msgstr ""
+
+#: go/gofrontend/types.cc:605
+msgid "invalid comparison of non-comparable array"
+msgstr ""
+
+#: go/gofrontend/types.cc:636
+msgid "multiple value function call in single value context"
+msgstr ""
+
+#: go/gofrontend/types.cc:723
+msgid "need explicit conversion"
+msgstr ""
+
+#: go/gofrontend/types.cc:730
+#, c-format
+msgid "cannot use type %s as type %s"
+msgstr ""
+
+#: go/gofrontend/types.cc:3207
+msgid "different receiver types"
+msgstr ""
+
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
+msgid "different number of parameters"
+msgstr ""
+
+#: go/gofrontend/types.cc:3248
+msgid "different parameter types"
+msgstr ""
+
+#: go/gofrontend/types.cc:3263
+msgid "different varargs"
+msgstr ""
+
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
+msgid "different number of results"
+msgstr ""
+
+#: go/gofrontend/types.cc:3293
+msgid "different result types"
+msgstr ""
+
+#: go/gofrontend/types.cc:4249
+#, c-format
+msgid "implicit assignment of %s%s%s hidden field %s%s%s"
+msgstr ""
+
+#: go/gofrontend/types.cc:6639
+#, c-format
+msgid "need explicit conversion; missing method %s%s%s"
+msgstr ""
+
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
+#, c-format
+msgid "incompatible type for method %s%s%s"
+msgstr ""
+
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
+#, c-format
+msgid "incompatible type for method %s%s%s (%s)"
+msgstr ""
+
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
+msgid "pointer to interface type has no methods"
+msgstr ""
+
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
+msgid "type has no methods"
+msgstr ""
+
+#: go/gofrontend/types.cc:6775
+#, c-format
+msgid "ambiguous method %s%s%s"
+msgstr ""
+
+#: go/gofrontend/types.cc:6778
+#, c-format
+msgid "missing method %s%s%s"
+msgstr ""
+
+#: go/gofrontend/types.cc:6818
+#, c-format
+msgid "method %s%s%s requires a pointer"
+msgstr ""
+
+#. Warn about and ignore all others for now, but store them.
+#: attribs.c:315 c-family/c-common.c:7387 objc/objc-act.c:4952
+#: objc/objc-act.c:6922 objc/objc-act.c:8109 objc/objc-act.c:8160
+#, gcc-internal-format
+msgid "%qE attribute directive ignored"
+msgstr ""
+
+#: attribs.c:323
+#, gcc-internal-format
+msgid "wrong number of arguments specified for %qE attribute"
+msgstr ""
+
+#: attribs.c:341
+#, gcc-internal-format
+msgid "%qE attribute does not apply to types"
+msgstr ""
+
+#: attribs.c:393
+#, gcc-internal-format
+msgid "%qE attribute only applies to function types"
+msgstr ""
+
+#: attribs.c:403
+#, gcc-internal-format
+msgid "type attributes ignored after type is already defined"
+msgstr ""
+
+#: bb-reorder.c:1888
+#, gcc-internal-format, gfc-internal-format
+msgid "multiple hot/cold transitions found (bb %i)"
+msgstr ""
+
+#: bt-load.c:1546
+#, gcc-internal-format
+msgid "branch target register load optimization is not intended to be run twice"
+msgstr ""
+
+#: builtins.c:620
+#, gcc-internal-format
+msgid "offset outside bounds of constant string"
+msgstr ""
+
+#: builtins.c:1161
+#, gcc-internal-format
+msgid "second argument to %<__builtin_prefetch%> must be a constant"
+msgstr ""
+
+#: builtins.c:1168
+#, gcc-internal-format
+msgid "invalid second argument to %<__builtin_prefetch%>; using zero"
+msgstr ""
+
+#: builtins.c:1176
+#, gcc-internal-format
+msgid "third argument to %<__builtin_prefetch%> must be a constant"
+msgstr ""
+
+#: builtins.c:1183
+#, gcc-internal-format
+msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
+msgstr ""
+
+#: builtins.c:4243 gimplify.c:2414
+#, gcc-internal-format
+msgid "too few arguments to function %<va_start%>"
+msgstr ""
+
+#: builtins.c:4401
+#, gcc-internal-format
+msgid "first argument to %<va_arg%> not of type %<va_list%>"
+msgstr ""
+
+#: builtins.c:4417
+#, gcc-internal-format
+msgid "%qT is promoted to %qT when passed through %<...%>"
+msgstr ""
+
+#: builtins.c:4422
+#, gcc-internal-format
+msgid "(so you should pass %qT not %qT to %<va_arg%>)"
+msgstr ""
+
+#. We can, however, treat "undefined" any way we please.
+#. Call abort to encourage the user to fix the program.
+#: builtins.c:4429 c-typeck.c:2799
+#, gcc-internal-format
+msgid "if this code is reached, the program will abort"
+msgstr ""
+
+#: builtins.c:4556
+#, gcc-internal-format
+msgid "invalid argument to %<__builtin_frame_address%>"
+msgstr ""
+
+#: builtins.c:4558
+#, gcc-internal-format
+msgid "invalid argument to %<__builtin_return_address%>"
+msgstr ""
+
+#: builtins.c:4571
+#, gcc-internal-format
+msgid "unsupported argument to %<__builtin_frame_address%>"
+msgstr ""
+
+#: builtins.c:4573
+#, gcc-internal-format
+msgid "unsupported argument to %<__builtin_return_address%>"
+msgstr ""
+
+#: builtins.c:4837
+#, gcc-internal-format
+msgid "both arguments to %<__builtin___clear_cache%> must be pointers"
+msgstr ""
+
+#: builtins.c:4937
+#, gcc-internal-format
+msgid "trampoline generated for nested function %qD"
+msgstr ""
+
+#: builtins.c:5233 builtins.c:5246
+#, gcc-internal-format
+msgid "%qD changed semantics in GCC 4.4"
+msgstr ""
+
+#: builtins.c:5345
+#, gcc-internal-format
+msgid "invalid memory model argument to builtin"
+msgstr ""
+
+#: builtins.c:5365
+#, gcc-internal-format
+msgid "invalid memory model for %<__atomic_exchange%>"
+msgstr ""
+
+#: builtins.c:5401
+#, gcc-internal-format
+msgid "invalid failure memory model for %<__atomic_compare_exchange%>"
+msgstr ""
+
+#: builtins.c:5407
+#, gcc-internal-format
+msgid "failure memory model cannot be stronger than success memory model for %<__atomic_compare_exchange%>"
+msgstr ""
+
+#: builtins.c:5453
+#, gcc-internal-format
+msgid "invalid memory model for %<__atomic_load%>"
+msgstr ""
+
+#: builtins.c:5483 builtins.c:5589
+#, gcc-internal-format
+msgid "invalid memory model for %<__atomic_store%>"
+msgstr ""
+
+#: builtins.c:5698
+#, gcc-internal-format
+msgid "non-constant argument 1 to __atomic_always_lock_free"
+msgstr ""
+
+#: builtins.c:5740
+#, gcc-internal-format
+msgid "non-integer argument 1 to __atomic_is_lock_free"
+msgstr ""
+
+#. All valid uses of __builtin_va_arg_pack () are removed during
+#. inlining.
+#: builtins.c:6023 expr.c:9964
+#, gcc-internal-format
+msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
+msgstr ""
+
+#. All valid uses of __builtin_va_arg_pack_len () are removed during
+#. inlining.
+#: builtins.c:6029
+#, gcc-internal-format
+msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>"
+msgstr ""
+
+#: builtins.c:6268
+#, gcc-internal-format
+msgid "%<__builtin_longjmp%> second argument must be 1"
+msgstr ""
+
+#: builtins.c:7113
+#, gcc-internal-format
+msgid "target format does not support infinity"
+msgstr ""
+
+#: builtins.c:12094
+#, gcc-internal-format
+msgid "%<va_start%> used in function with fixed args"
+msgstr ""
+
+#: builtins.c:12102
+#, gcc-internal-format
+msgid "wrong number of arguments to function %<va_start%>"
+msgstr ""
+
+#. Evidently an out of date version of <stdarg.h>; can't validate
+#. va_start's second argument, but can still work as intended.
+#: builtins.c:12115
+#, gcc-internal-format
+msgid "%<__builtin_next_arg%> called without an argument"
+msgstr ""
+
+#: builtins.c:12120
+#, gcc-internal-format
+msgid "wrong number of arguments to function %<__builtin_next_arg%>"
+msgstr ""
+
+#. FIXME: Sometimes with the tree optimizers we can get the
+#. not the last argument even though the user used the last
+#. argument. We just warn and set the arg to be the last
+#. argument so that we will get wrong-code because of
+#. it.
+#: builtins.c:12150
+#, gcc-internal-format
+msgid "second parameter of %<va_start%> not last named argument"
+msgstr ""
+
+#: builtins.c:12160
+#, gcc-internal-format
+msgid "undefined behaviour when second parameter of %<va_start%> is declared with %<register%> storage"
+msgstr ""
+
+#: builtins.c:12396
+#, gcc-internal-format
+msgid "%Kfirst argument of %D must be a pointer, second integer constant"
+msgstr ""
+
+#: builtins.c:12409
+#, gcc-internal-format
+msgid "%Klast argument of %D is not integer constant between 0 and 3"
+msgstr ""
+
+#: builtins.c:12454 builtins.c:12605 builtins.c:12662
+#, gcc-internal-format
+msgid "%Kcall to %D will always overflow destination buffer"
+msgstr ""
+
+#: builtins.c:12595
+#, gcc-internal-format
+msgid "%Kcall to %D might overflow destination buffer"
+msgstr ""
+
+#: builtins.c:12683
+#, gcc-internal-format
+msgid "%Kattempt to free a non-heap object %qD"
+msgstr ""
+
+#: builtins.c:12686
+#, gcc-internal-format
+msgid "%Kattempt to free a non-heap object"
+msgstr ""
+
+#. Except for passing an argument to an unprototyped function,
+#. this is a constraint violation. When passing an argument to
+#. an unprototyped function, it is compile-time undefined;
+#. making it a constraint in that case was rejected in
+#. DR#252.
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
+#, gcc-internal-format
+msgid "void value not ignored as it ought to be"
+msgstr ""
+
+#: c-convert.c:181 fortran/convert.c:122 java/typeck.c:150
+#, gcc-internal-format
+msgid "conversion to non-scalar type requested"
+msgstr ""
+
+#: c-decl.c:717
+#, gcc-internal-format
+msgid "array %q+D assumed to have one element"
+msgstr ""
+
+#: c-decl.c:758
+#, gcc-internal-format
+msgid "%qD is static but used in inline function %qD which is not static"
+msgstr ""
+
+#: c-decl.c:763
+#, gcc-internal-format
+msgid "%q+D is static but declared in inline function %qD which is not static"
+msgstr ""
+
+#: c-decl.c:948
+#, gcc-internal-format, gfc-internal-format
+msgid "GCC supports only %u nested scopes"
+msgstr ""
+
+#: c-decl.c:1100 cp/decl.c:373
+#, gcc-internal-format
+msgid "label %q+D used but not defined"
+msgstr ""
+
+#: c-decl.c:1145
+#, gcc-internal-format
+msgid "nested function %q+D declared but never defined"
+msgstr ""
+
+#: c-decl.c:1157
+#, gcc-internal-format
+msgid "inline function %q+D declared but never defined"
+msgstr ""
+
+#: c-decl.c:1174 cp/decl.c:628
+#, gcc-internal-format
+msgid "unused variable %q+D"
+msgstr ""
+
+#: c-decl.c:1178
+#, gcc-internal-format
+msgid "variable %qD set but not used"
+msgstr ""
+
+#: c-decl.c:1183
+#, gcc-internal-format
+msgid "type of array %q+D completed incompatibly with implicit initialization"
+msgstr ""
+
+#: c-decl.c:1462 c-decl.c:5852 c-decl.c:6682 c-decl.c:7394
+#, gcc-internal-format
+msgid "originally defined here"
+msgstr ""
+
+#: c-decl.c:1532
+#, gcc-internal-format
+msgid "a parameter list with an ellipsis can%'t match an empty parameter name list declaration"
+msgstr ""
+
+#: c-decl.c:1539
+#, gcc-internal-format
+msgid "an argument type that has a default promotion can%'t match an empty parameter name list declaration"
+msgstr ""
+
+#: c-decl.c:1580
+#, gcc-internal-format
+msgid "prototype for %q+D declares more arguments than previous old-style definition"
+msgstr ""
+
+#: c-decl.c:1586
+#, gcc-internal-format
+msgid "prototype for %q+D declares fewer arguments than previous old-style definition"
+msgstr ""
+
+#: c-decl.c:1595
+#, gcc-internal-format
+msgid "prototype for %q+D declares argument %d with incompatible type"
+msgstr ""
+
+#. If we get here, no errors were found, but do issue a warning
+#. for this poor-style construct.
+#: c-decl.c:1608
+#, gcc-internal-format
+msgid "prototype for %q+D follows non-prototype definition"
+msgstr ""
+
+#: c-decl.c:1623
+#, gcc-internal-format
+msgid "previous definition of %q+D was here"
+msgstr ""
+
+#: c-decl.c:1625
+#, gcc-internal-format
+msgid "previous implicit declaration of %q+D was here"
+msgstr ""
+
+#: c-decl.c:1627
+#, gcc-internal-format
+msgid "previous declaration of %q+D was here"
+msgstr ""
+
+#: c-decl.c:1667
+#, gcc-internal-format
+msgid "%q+D redeclared as different kind of symbol"
+msgstr ""
+
+#: c-decl.c:1671
+#, gcc-internal-format
+msgid "built-in function %q+D declared as non-function"
+msgstr ""
+
+#: c-decl.c:1674 c-decl.c:1847 c-decl.c:2559
+#, gcc-internal-format
+msgid "declaration of %q+D shadows a built-in function"
+msgstr ""
+
+#: c-decl.c:1683
+#, gcc-internal-format
+msgid "redeclaration of enumerator %q+D"
+msgstr ""
+
+#. If types don't match for a built-in, throw away the
+#. built-in. No point in calling locate_old_decl here, it
+#. won't print anything.
+#: c-decl.c:1704
+#, gcc-internal-format
+msgid "conflicting types for built-in function %q+D"
+msgstr ""
+
+#: c-decl.c:1729 c-decl.c:1742 c-decl.c:1778
+#, gcc-internal-format
+msgid "conflicting types for %q+D"
+msgstr ""
+
+#: c-decl.c:1758
+#, gcc-internal-format
+msgid "conflicting named address spaces (generic vs %s) for %q+D"
+msgstr ""
+
+#: c-decl.c:1762
+#, gcc-internal-format
+msgid "conflicting named address spaces (%s vs generic) for %q+D"
+msgstr ""
+
+#: c-decl.c:1766
+#, gcc-internal-format
+msgid "conflicting named address spaces (%s vs %s) for %q+D"
+msgstr ""
+
+#: c-decl.c:1775
+#, gcc-internal-format
+msgid "conflicting type qualifiers for %q+D"
+msgstr ""
+
+#: c-decl.c:1800
+#, gcc-internal-format
+msgid "redefinition of typedef %q+D with different type"
+msgstr ""
+
+#: c-decl.c:1813
+#, gcc-internal-format
+msgid "redefinition of typedef %q+D with variably modified type"
+msgstr ""
+
+#: c-decl.c:1820
+#, gcc-internal-format
+msgid "redefinition of typedef %q+D"
+msgstr ""
+
+#: c-decl.c:1873 c-decl.c:1976
+#, gcc-internal-format
+msgid "redefinition of %q+D"
+msgstr ""
+
+#: c-decl.c:1908 c-decl.c:2014
+#, gcc-internal-format
+msgid "static declaration of %q+D follows non-static declaration"
+msgstr ""
+
+#: c-decl.c:1918 c-decl.c:1926 c-decl.c:2004 c-decl.c:2011
+#, gcc-internal-format
+msgid "non-static declaration of %q+D follows static declaration"
+msgstr ""
+
+#: c-decl.c:1942
+#, gcc-internal-format
+msgid "%<gnu_inline%> attribute present on %q+D"
+msgstr ""
+
+#: c-decl.c:1945
+#, gcc-internal-format
+msgid "but not here"
+msgstr ""
+
+#: c-decl.c:1963
+#, gcc-internal-format
+msgid "thread-local declaration of %q+D follows non-thread-local declaration"
+msgstr ""
+
+#: c-decl.c:1966
+#, gcc-internal-format
+msgid "non-thread-local declaration of %q+D follows thread-local declaration"
+msgstr ""
+
+#: c-decl.c:1996
+#, gcc-internal-format
+msgid "extern declaration of %q+D follows declaration with no linkage"
+msgstr ""
+
+#: c-decl.c:2032
+#, gcc-internal-format
+msgid "declaration of %q+D with no linkage follows extern declaration"
+msgstr ""
+
+#: c-decl.c:2038
+#, gcc-internal-format
+msgid "redeclaration of %q+D with no linkage"
+msgstr ""
+
+#: c-decl.c:2064
+#, gcc-internal-format
+msgid "redeclaration of %q+D with different visibility (old visibility preserved)"
+msgstr ""
+
+#: c-decl.c:2075
+#, gcc-internal-format
+msgid "inline declaration of %qD follows declaration with attribute noinline"
+msgstr ""
+
+#: c-decl.c:2082
+#, gcc-internal-format
+msgid "declaration of %q+D with attribute noinline follows inline declaration "
+msgstr ""
+
+#: c-decl.c:2100
+#, gcc-internal-format
+msgid "redefinition of parameter %q+D"
+msgstr ""
+
+#: c-decl.c:2127
+#, gcc-internal-format
+msgid "redundant redeclaration of %q+D"
+msgstr ""
+
+#: c-decl.c:2546
+#, gcc-internal-format
+msgid "declaration of %q+D shadows previous non-variable"
+msgstr ""
+
+#: c-decl.c:2551
+#, gcc-internal-format
+msgid "declaration of %q+D shadows a parameter"
+msgstr ""
+
+#: c-decl.c:2554
+#, gcc-internal-format
+msgid "declaration of %q+D shadows a global declaration"
+msgstr ""
+
+#: c-decl.c:2564
+#, gcc-internal-format
+msgid "declaration of %q+D shadows a previous local"
+msgstr ""
+
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
+#, gcc-internal-format
+msgid "shadowed declaration is here"
+msgstr ""
+
+#: c-decl.c:2695
+#, gcc-internal-format
+msgid "nested extern declaration of %qD"
+msgstr ""
+
+#: c-decl.c:2871 c-decl.c:2874
+#, gcc-internal-format
+msgid "implicit declaration of function %qE"
+msgstr ""
+
+#: c-decl.c:2937
+#, gcc-internal-format
+msgid "incompatible implicit declaration of built-in function %qD"
+msgstr ""
+
+#: c-decl.c:2946
+#, gcc-internal-format
+msgid "incompatible implicit declaration of function %qD"
+msgstr ""
+
+#: c-decl.c:2999
+#, gcc-internal-format
+msgid "%qE undeclared here (not in a function)"
+msgstr ""
+
+#: c-decl.c:3005
+#, gcc-internal-format
+msgid "%qE undeclared (first use in this function)"
+msgstr ""
+
+#: c-decl.c:3008
+#, gcc-internal-format
+msgid "each undeclared identifier is reported only once for each function it appears in"
+msgstr ""
+
+#: c-decl.c:3058 cp/decl.c:2598
+#, gcc-internal-format
+msgid "label %qE referenced outside of any function"
+msgstr ""
+
+#: c-decl.c:3094
+#, gcc-internal-format
+msgid "jump into scope of identifier with variably modified type"
+msgstr ""
+
+#: c-decl.c:3097
+#, gcc-internal-format
+msgid "jump skips variable initialization"
+msgstr ""
+
+#: c-decl.c:3098 c-decl.c:3154 c-decl.c:3243
+#, gcc-internal-format
+msgid "label %qD defined here"
+msgstr ""
+
+#: c-decl.c:3099 c-decl.c:3371
+#, gcc-internal-format
+msgid "%qD declared here"
+msgstr ""
+
+#: c-decl.c:3153 c-decl.c:3242
+#, gcc-internal-format
+msgid "jump into statement expression"
+msgstr ""
+
+#: c-decl.c:3175
+#, gcc-internal-format
+msgid "duplicate label declaration %qE"
+msgstr ""
+
+#: c-decl.c:3273 cp/decl.c:2921
+#, gcc-internal-format
+msgid "duplicate label %qD"
+msgstr ""
+
+#: c-decl.c:3304
+#, gcc-internal-format
+msgid "traditional C lacks a separate namespace for labels, identifier %qE conflicts"
+msgstr ""
+
+#: c-decl.c:3369
+#, gcc-internal-format
+msgid "switch jumps over variable initialization"
+msgstr ""
+
+#: c-decl.c:3370 c-decl.c:3381
+#, gcc-internal-format
+msgid "switch starts here"
+msgstr ""
+
+#: c-decl.c:3380
+#, gcc-internal-format
+msgid "switch jumps into statement expression"
+msgstr ""
+
+#: c-decl.c:3451
+#, gcc-internal-format
+msgid "%qE defined as wrong kind of tag"
+msgstr ""
+
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
+#, gcc-internal-format
+msgid "invalid use of %<restrict%>"
+msgstr ""
+
+#: c-decl.c:3684
+#, gcc-internal-format
+msgid "unnamed struct/union that defines no instances"
+msgstr ""
+
+#: c-decl.c:3694
+#, gcc-internal-format
+msgid "empty declaration with storage class specifier does not redeclare tag"
+msgstr ""
+
+#: c-decl.c:3708
+#, gcc-internal-format
+msgid "empty declaration with type qualifier does not redeclare tag"
+msgstr ""
+
+#: c-decl.c:3719
+#, gcc-internal-format
+msgid "empty declaration with %<_Alignas%> does not redeclare tag"
+msgstr ""
+
+#: c-decl.c:3741 c-decl.c:3748
+#, gcc-internal-format
+msgid "useless type name in empty declaration"
+msgstr ""
+
+#: c-decl.c:3756
+#, gcc-internal-format
+msgid "%<inline%> in empty declaration"
+msgstr ""
+
+#: c-decl.c:3762
+#, gcc-internal-format
+msgid "%<_Noreturn%> in empty declaration"
+msgstr ""
+
+#: c-decl.c:3768
+#, gcc-internal-format
+msgid "%<auto%> in file-scope empty declaration"
+msgstr ""
+
+#: c-decl.c:3774
+#, gcc-internal-format
+msgid "%<register%> in file-scope empty declaration"
+msgstr ""
+
+#: c-decl.c:3780
+#, gcc-internal-format
+msgid "useless storage class specifier in empty declaration"
+msgstr ""
+
+#: c-decl.c:3786
+#, gcc-internal-format
+msgid "useless %<__thread%> in empty declaration"
+msgstr ""
+
+#: c-decl.c:3795
+#, gcc-internal-format
+msgid "useless type qualifier in empty declaration"
+msgstr ""
+
+#: c-decl.c:3801
+#, gcc-internal-format
+msgid "useless %<_Alignas%> in empty declaration"
+msgstr ""
+
+#: c-decl.c:3808 c-parser.c:1498
+#, gcc-internal-format
+msgid "empty declaration"
+msgstr ""
+
+#: c-decl.c:3880
+#, gcc-internal-format
+msgid "ISO C90 does not support %<static%> or type qualifiers in parameter array declarators"
+msgstr ""
+
+#: c-decl.c:3884
+#, gcc-internal-format
+msgid "ISO C90 does not support %<[*]%> array declarators"
+msgstr ""
+
+#. C99 6.7.5.2p4
+#. A function definition isn't function prototype scope C99 6.2.1p4.
+#. C99 6.7.5.2p4
+#: c-decl.c:3891 c-decl.c:6250
+#, gcc-internal-format
+msgid "%<[*]%> not allowed in other than function prototype scope"
+msgstr ""
+
+#: c-decl.c:4004
+#, gcc-internal-format
+msgid "%q+D is usually a function"
+msgstr ""
+
+#: c-decl.c:4013
+#, gcc-internal-format
+msgid "typedef %qD is initialized (use __typeof__ instead)"
+msgstr ""
+
+#: c-decl.c:4018
+#, gcc-internal-format
+msgid "function %qD is initialized like a variable"
+msgstr ""
+
+#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
+#: c-decl.c:4024
+#, gcc-internal-format
+msgid "parameter %qD is initialized"
+msgstr ""
+
+#. Although C99 is unclear about whether incomplete arrays
+#. of VLAs themselves count as VLAs, it does not make
+#. sense to permit them to be initialized given that
+#. ordinary VLAs may not be initialized.
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
+#, gcc-internal-format
+msgid "variable-sized object may not be initialized"
+msgstr ""
+
+#: c-decl.c:4049
+#, gcc-internal-format
+msgid "variable %qD has initializer but incomplete type"
+msgstr ""
+
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
+#, gcc-internal-format
+msgid "inline function %q+D given attribute noinline"
+msgstr ""
+
+#: c-decl.c:4189
+#, gcc-internal-format
+msgid "uninitialized const member in %qT is invalid in C++"
+msgstr ""
+
+#: c-decl.c:4191 cp/init.c:2115 cp/init.c:2130
+#, gcc-internal-format
+msgid "%qD should be initialized"
+msgstr ""
+
+#: c-decl.c:4269
+#, gcc-internal-format
+msgid "initializer fails to determine size of %q+D"
+msgstr ""
+
+#: c-decl.c:4274
+#, gcc-internal-format
+msgid "array size missing in %q+D"
+msgstr ""
+
+#: c-decl.c:4286
+#, gcc-internal-format
+msgid "zero or negative size array %q+D"
+msgstr ""
+
+#: c-decl.c:4341 varasm.c:1972
+#, gcc-internal-format
+msgid "storage size of %q+D isn%'t known"
+msgstr ""
+
+#: c-decl.c:4352
+#, gcc-internal-format
+msgid "storage size of %q+D isn%'t constant"
+msgstr ""
+
+#: c-decl.c:4402
+#, gcc-internal-format
+msgid "ignoring asm-specifier for non-static local variable %q+D"
+msgstr ""
+
+#: c-decl.c:4432
+#, gcc-internal-format
+msgid "cannot put object with volatile field into register"
+msgstr ""
+
+#: c-decl.c:4519
+#, gcc-internal-format
+msgid "uninitialized const %qD is invalid in C++"
+msgstr ""
+
+#: c-decl.c:4577
+#, gcc-internal-format
+msgid "ISO C forbids forward parameter declarations"
+msgstr ""
+
+#: c-decl.c:4667
+#, gcc-internal-format
+msgid "defining a type in a compound literal is invalid in C++"
+msgstr ""
+
+#: c-decl.c:4719 c-decl.c:4734
+#, gcc-internal-format
+msgid "bit-field %qs width not an integer constant"
+msgstr ""
+
+#: c-decl.c:4729
+#, gcc-internal-format
+msgid "bit-field %qs width not an integer constant expression"
+msgstr ""
+
+#: c-decl.c:4740
+#, gcc-internal-format
+msgid "negative width in bit-field %qs"
+msgstr ""
+
+#: c-decl.c:4745
+#, gcc-internal-format
+msgid "zero width for bit-field %qs"
+msgstr ""
+
+#: c-decl.c:4755
+#, gcc-internal-format
+msgid "bit-field %qs has invalid type"
+msgstr ""
+
+#: c-decl.c:4765
+#, gcc-internal-format
+msgid "type of bit-field %qs is a GCC extension"
+msgstr ""
+
+#: c-decl.c:4771
+#, gcc-internal-format
+msgid "width of %qs exceeds its type"
+msgstr ""
+
+#: c-decl.c:4784
+#, gcc-internal-format
+msgid "%qs is narrower than values of its type"
+msgstr ""
+
+#: c-decl.c:4803
+#, gcc-internal-format
+msgid "ISO C90 forbids array %qE whose size can%'t be evaluated"
+msgstr ""
+
+#: c-decl.c:4807
+#, gcc-internal-format
+msgid "ISO C90 forbids array whose size can%'t be evaluated"
+msgstr ""
+
+#: c-decl.c:4814
+#, gcc-internal-format
+msgid "ISO C90 forbids variable length array %qE"
+msgstr ""
+
+#: c-decl.c:4817
+#, gcc-internal-format
+msgid "ISO C90 forbids variable length array"
+msgstr ""
+
+#: c-decl.c:4826
+#, gcc-internal-format
+msgid "the size of array %qE can%'t be evaluated"
+msgstr ""
+
+#: c-decl.c:4830
+#, gcc-internal-format
+msgid "the size of array can %'t be evaluated"
+msgstr ""
+
+#: c-decl.c:4836
+#, gcc-internal-format
+msgid "variable length array %qE is used"
+msgstr ""
+
+#: c-decl.c:4840 cp/decl.c:8065
+#, gcc-internal-format
+msgid "variable length array is used"
+msgstr ""
+
+#: c-decl.c:4999 c-decl.c:5347 c-decl.c:5357
+#, gcc-internal-format
+msgid "variably modified %qE at file scope"
+msgstr ""
+
+#: c-decl.c:5001
+#, gcc-internal-format
+msgid "variably modified field at file scope"
+msgstr ""
+
+#: c-decl.c:5021
+#, gcc-internal-format
+msgid "type defaults to %<int%> in declaration of %qE"
+msgstr ""
+
+#: c-decl.c:5025
+#, gcc-internal-format
+msgid "type defaults to %<int%> in type name"
+msgstr ""
+
+#: c-decl.c:5058
+#, gcc-internal-format
+msgid "duplicate %<const%>"
+msgstr ""
+
+#: c-decl.c:5060
+#, gcc-internal-format
+msgid "duplicate %<restrict%>"
+msgstr ""
+
+#: c-decl.c:5062
+#, gcc-internal-format
+msgid "duplicate %<volatile%>"
+msgstr ""
+
+#: c-decl.c:5066
+#, gcc-internal-format, gfc-internal-format
+msgid "conflicting named address spaces (%s vs %s)"
+msgstr ""
+
+#: c-decl.c:5090
+#, gcc-internal-format
+msgid "function definition declared %<auto%>"
+msgstr ""
+
+#: c-decl.c:5092
+#, gcc-internal-format
+msgid "function definition declared %<register%>"
+msgstr ""
+
+#: c-decl.c:5094
+#, gcc-internal-format
+msgid "function definition declared %<typedef%>"
+msgstr ""
+
+#: c-decl.c:5096
+#, gcc-internal-format
+msgid "function definition declared %<__thread%>"
+msgstr ""
+
+#: c-decl.c:5113
+#, gcc-internal-format
+msgid "storage class specified for structure field %qE"
+msgstr ""
+
+#: c-decl.c:5116
+#, gcc-internal-format
+msgid "storage class specified for structure field"
+msgstr ""
+
+#: c-decl.c:5120
+#, gcc-internal-format
+msgid "storage class specified for parameter %qE"
+msgstr ""
+
+#: c-decl.c:5123
+#, gcc-internal-format
+msgid "storage class specified for unnamed parameter"
+msgstr ""
+
+#: c-decl.c:5126 cp/decl.c:9032
+#, gcc-internal-format
+msgid "storage class specified for typename"
+msgstr ""
+
+#: c-decl.c:5143
+#, gcc-internal-format
+msgid "%qE initialized and declared %<extern%>"
+msgstr ""
+
+#: c-decl.c:5147
+#, gcc-internal-format
+msgid "%qE has both %<extern%> and initializer"
+msgstr ""
+
+#: c-decl.c:5152
+#, gcc-internal-format
+msgid "file-scope declaration of %qE specifies %<auto%>"
+msgstr ""
+
+#: c-decl.c:5156
+#, gcc-internal-format
+msgid "file-scope declaration of %qE specifies %<register%>"
+msgstr ""
+
+#: c-decl.c:5161
+#, gcc-internal-format
+msgid "nested function %qE declared %<extern%>"
+msgstr ""
+
+#: c-decl.c:5164
+#, gcc-internal-format
+msgid "function-scope %qE implicitly auto and declared %<__thread%>"
+msgstr ""
+
+#. Only the innermost declarator (making a parameter be of
+#. array type which is converted to pointer type)
+#. may have static or type qualifiers.
+#: c-decl.c:5211 c-decl.c:5541
+#, gcc-internal-format
+msgid "static or type qualifiers in non-parameter array declarator"
+msgstr ""
+
+#: c-decl.c:5259
+#, gcc-internal-format
+msgid "declaration of %qE as array of voids"
+msgstr ""
+
+#: c-decl.c:5261
+#, gcc-internal-format
+msgid "declaration of type name as array of voids"
+msgstr ""
+
+#: c-decl.c:5268
+#, gcc-internal-format
+msgid "declaration of %qE as array of functions"
+msgstr ""
+
+#: c-decl.c:5271
+#, gcc-internal-format
+msgid "declaration of type name as array of functions"
+msgstr ""
+
+#: c-decl.c:5278 c-decl.c:7178
+#, gcc-internal-format
+msgid "invalid use of structure with flexible array member"
+msgstr ""
+
+#: c-decl.c:5304
+#, gcc-internal-format
+msgid "size of array %qE has non-integer type"
+msgstr ""
+
+#: c-decl.c:5308
+#, gcc-internal-format
+msgid "size of unnamed array has non-integer type"
+msgstr ""
+
+#: c-decl.c:5318
+#, gcc-internal-format
+msgid "ISO C forbids zero-size array %qE"
+msgstr ""
+
+#: c-decl.c:5321
+#, gcc-internal-format
+msgid "ISO C forbids zero-size array"
+msgstr ""
+
+#: c-decl.c:5330
+#, gcc-internal-format
+msgid "size of array %qE is negative"
+msgstr ""
+
+#: c-decl.c:5332
+#, gcc-internal-format
+msgid "size of unnamed array is negative"
+msgstr ""
+
+#: c-decl.c:5406 c-decl.c:5809
+#, gcc-internal-format
+msgid "size of array %qE is too large"
+msgstr ""
+
+#: c-decl.c:5409 c-decl.c:5811
+#, gcc-internal-format
+msgid "size of unnamed array is too large"
+msgstr ""
+
+#: c-decl.c:5446
+#, gcc-internal-format
+msgid "ISO C90 does not support flexible array members"
+msgstr ""
+
+#. C99 6.7.5.2p4
+#: c-decl.c:5467
+#, gcc-internal-format
+msgid "%<[*]%> not in a declaration"
+msgstr ""
+
+#: c-decl.c:5480
+#, gcc-internal-format
+msgid "array type has incomplete element type"
+msgstr ""
+
+#: c-decl.c:5574
+#, gcc-internal-format
+msgid "%qE declared as function returning a function"
+msgstr ""
+
+#: c-decl.c:5577
+#, gcc-internal-format
+msgid "type name declared as function returning a function"
+msgstr ""
+
+#: c-decl.c:5584
+#, gcc-internal-format
+msgid "%qE declared as function returning an array"
+msgstr ""
+
+#: c-decl.c:5587
+#, gcc-internal-format
+msgid "type name declared as function returning an array"
+msgstr ""
+
+#: c-decl.c:5615
+#, gcc-internal-format
+msgid "function definition has qualified void return type"
+msgstr ""
+
+#: c-decl.c:5618 cp/decl.c:9138
+#, gcc-internal-format
+msgid "type qualifiers ignored on function return type"
+msgstr ""
+
+#: c-decl.c:5647 c-decl.c:5825 c-decl.c:5937 c-decl.c:6032
+#, gcc-internal-format
+msgid "ISO C forbids qualified function types"
+msgstr ""
+
+#: c-decl.c:5714
+#, gcc-internal-format
+msgid "%qs combined with %<auto%> qualifier for %qE"
+msgstr ""
+
+#: c-decl.c:5718
+#, gcc-internal-format
+msgid "%qs combined with %<register%> qualifier for %qE"
+msgstr ""
+
+#: c-decl.c:5724
+#, gcc-internal-format
+msgid "%qs specified for auto variable %qE"
+msgstr ""
+
+#: c-decl.c:5740
+#, gcc-internal-format
+msgid "%qs specified for parameter %qE"
+msgstr ""
+
+#: c-decl.c:5743
+#, gcc-internal-format
+msgid "%qs specified for unnamed parameter"
+msgstr ""
+
+#: c-decl.c:5749
+#, gcc-internal-format
+msgid "%qs specified for structure field %qE"
+msgstr ""
+
+#: c-decl.c:5752
+#, gcc-internal-format
+msgid "%qs specified for structure field"
+msgstr ""
+
+#: c-decl.c:5765
+#, gcc-internal-format
+msgid "alignment specified for typedef %qE"
+msgstr ""
+
+#: c-decl.c:5767
+#, gcc-internal-format
+msgid "alignment specified for %<register%> object %qE"
+msgstr ""
+
+#: c-decl.c:5772
+#, gcc-internal-format
+msgid "alignment specified for parameter %qE"
+msgstr ""
+
+#: c-decl.c:5774
+#, gcc-internal-format
+msgid "alignment specified for unnamed parameter"
+msgstr ""
+
+#: c-decl.c:5779
+#, gcc-internal-format
+msgid "alignment specified for bit-field %qE"
+msgstr ""
+
+#: c-decl.c:5781
+#, gcc-internal-format
+msgid "alignment specified for unnamed bit-field"
+msgstr ""
+
+#: c-decl.c:5784
+#, gcc-internal-format
+msgid "alignment specified for function %qE"
+msgstr ""
+
+#: c-decl.c:5791
+#, gcc-internal-format
+msgid "%<_Alignas%> specifiers cannot reduce alignment of %qE"
+msgstr ""
+
+#: c-decl.c:5794
+#, gcc-internal-format
+msgid "%<_Alignas%> specifiers cannot reduce alignment of unnamed field"
+msgstr ""
+
+#: c-decl.c:5833
+#, gcc-internal-format
+msgid "typedef %q+D declared %<inline%>"
+msgstr ""
+
+#: c-decl.c:5835
+#, gcc-internal-format
+msgid "typedef %q+D declared %<_Noreturn%>"
+msgstr ""
+
+#: c-decl.c:5871
+#, gcc-internal-format
+msgid "ISO C forbids const or volatile function types"
+msgstr ""
+
+#. C99 6.7.2.1p8
+#: c-decl.c:5881
+#, gcc-internal-format
+msgid "a member of a structure or union cannot have a variably modified type"
+msgstr ""
+
+#: c-decl.c:5898 cp/decl.c:8293
+#, gcc-internal-format
+msgid "variable or field %qE declared void"
+msgstr ""
+
+#: c-decl.c:5929
+#, gcc-internal-format
+msgid "attributes in parameter array declarator ignored"
+msgstr ""
+
+#: c-decl.c:5963
+#, gcc-internal-format
+msgid "parameter %q+D declared %<inline%>"
+msgstr ""
+
+#: c-decl.c:5965
+#, gcc-internal-format
+msgid "parameter %q+D declared %<_Noreturn%>"
+msgstr ""
+
+#: c-decl.c:5978
+#, gcc-internal-format
+msgid "field %qE declared as a function"
+msgstr ""
+
+#: c-decl.c:5985
+#, gcc-internal-format
+msgid "field %qE has incomplete type"
+msgstr ""
+
+#: c-decl.c:5987
+#, gcc-internal-format
+msgid "unnamed field has incomplete type"
+msgstr ""
+
+#: c-decl.c:6004 c-decl.c:6015 c-decl.c:6018
+#, gcc-internal-format
+msgid "invalid storage class for function %qE"
+msgstr ""
+
+#: c-decl.c:6069
+#, gcc-internal-format
+msgid "cannot inline function %<main%>"
+msgstr ""
+
+#: c-decl.c:6071
+#, gcc-internal-format
+msgid "%<main%> declared %<_Noreturn%>"
+msgstr ""
+
+#: c-decl.c:6084
+#, gcc-internal-format
+msgid "ISO C99 does not support %<_Noreturn%>"
+msgstr ""
+
+#: c-decl.c:6087
+#, gcc-internal-format
+msgid "ISO C90 does not support %<_Noreturn%>"
+msgstr ""
+
+#: c-decl.c:6116
+#, gcc-internal-format
+msgid "variable previously declared %<static%> redeclared %<extern%>"
+msgstr ""
+
+#: c-decl.c:6126
+#, gcc-internal-format
+msgid "variable %q+D declared %<inline%>"
+msgstr ""
+
+#: c-decl.c:6128
+#, gcc-internal-format
+msgid "variable %q+D declared %<_Noreturn%>"
+msgstr ""
+
+#: c-decl.c:6163
+#, gcc-internal-format
+msgid "non-nested function with variably modified type"
+msgstr ""
+
+#: c-decl.c:6165
+#, gcc-internal-format
+msgid "object with variably modified type must have no linkage"
+msgstr ""
+
+#: c-decl.c:6255 c-decl.c:7815
+#, gcc-internal-format
+msgid "function declaration isn%'t a prototype"
+msgstr ""
+
+#: c-decl.c:6264
+#, gcc-internal-format
+msgid "parameter names (without types) in function declaration"
+msgstr ""
+
+#: c-decl.c:6302
+#, gcc-internal-format
+msgid "parameter %u (%q+D) has incomplete type"
+msgstr ""
+
+#: c-decl.c:6306
+#, gcc-internal-format, gfc-internal-format
+msgid "parameter %u has incomplete type"
+msgstr ""
+
+#: c-decl.c:6317
+#, gcc-internal-format
+msgid "parameter %u (%q+D) has void type"
+msgstr ""
+
+#: c-decl.c:6321
+#, gcc-internal-format, gfc-internal-format
+msgid "parameter %u has void type"
+msgstr ""
+
+#: c-decl.c:6406
+#, gcc-internal-format
+msgid "%<void%> as only parameter may not be qualified"
+msgstr ""
+
+#: c-decl.c:6410 c-decl.c:6445
+#, gcc-internal-format
+msgid "%<void%> must be the only parameter"
+msgstr ""
+
+#: c-decl.c:6439
+#, gcc-internal-format
+msgid "parameter %q+D has just a forward declaration"
+msgstr ""
+
+#. The %s will be one of 'struct', 'union', or 'enum'.
+#: c-decl.c:6484
+#, gcc-internal-format
+msgid "%<%s %E%> declared inside parameter list"
+msgstr ""
+
+#. The %s will be one of 'struct', 'union', or 'enum'.
+#: c-decl.c:6488
+#, gcc-internal-format, gfc-internal-format
+msgid "anonymous %s declared inside parameter list"
+msgstr ""
+
+#: c-decl.c:6493
+#, gcc-internal-format
+msgid "its scope is only this definition or declaration, which is probably not what you want"
+msgstr ""
+
+#: c-decl.c:6593
+#, gcc-internal-format
+msgid "enum type defined here"
+msgstr ""
+
+#: c-decl.c:6599
+#, gcc-internal-format
+msgid "struct defined here"
+msgstr ""
+
+#: c-decl.c:6605
+#, gcc-internal-format
+msgid "union defined here"
+msgstr ""
+
+#: c-decl.c:6678
+#, gcc-internal-format
+msgid "redefinition of %<union %E%>"
+msgstr ""
+
+#: c-decl.c:6680
+#, gcc-internal-format
+msgid "redefinition of %<struct %E%>"
+msgstr ""
+
+#: c-decl.c:6689
+#, gcc-internal-format
+msgid "nested redefinition of %<union %E%>"
+msgstr ""
+
+#: c-decl.c:6691
+#, gcc-internal-format
+msgid "nested redefinition of %<struct %E%>"
+msgstr ""
+
+#: c-decl.c:6723 c-decl.c:7412
+#, gcc-internal-format
+msgid "defining type in %qs expression is invalid in C++"
+msgstr ""
+
+#: c-decl.c:6792 cp/decl.c:4152
+#, gcc-internal-format
+msgid "declaration does not declare anything"
+msgstr ""
+
+#: c-decl.c:6799
+#, gcc-internal-format
+msgid "ISO C99 doesn%'t support unnamed structs/unions"
+msgstr ""
+
+#: c-decl.c:6802
+#, gcc-internal-format
+msgid "ISO C90 doesn%'t support unnamed structs/unions"
+msgstr ""
+
+#: c-decl.c:6894 c-decl.c:6913 c-decl.c:6976
+#, gcc-internal-format
+msgid "duplicate member %q+D"
+msgstr ""
+
+#: c-decl.c:7086
+#, gcc-internal-format
+msgid "union has no named members"
+msgstr ""
+
+#: c-decl.c:7088
+#, gcc-internal-format
+msgid "union has no members"
+msgstr ""
+
+#: c-decl.c:7093
+#, gcc-internal-format
+msgid "struct has no named members"
+msgstr ""
+
+#: c-decl.c:7095
+#, gcc-internal-format
+msgid "struct has no members"
+msgstr ""
+
+#: c-decl.c:7158
+#, gcc-internal-format
+msgid "flexible array member in union"
+msgstr ""
+
+#: c-decl.c:7164
+#, gcc-internal-format
+msgid "flexible array member not at end of struct"
+msgstr ""
+
+#: c-decl.c:7170
+#, gcc-internal-format
+msgid "flexible array member in otherwise empty struct"
+msgstr ""
+
+#: c-decl.c:7289
+#, gcc-internal-format
+msgid "union cannot be made transparent"
+msgstr ""
+
+#: c-decl.c:7385
+#, gcc-internal-format
+msgid "nested redefinition of %<enum %E%>"
+msgstr ""
+
+#. This enum is a named one that has been declared already.
+#: c-decl.c:7392
+#, gcc-internal-format
+msgid "redeclaration of %<enum %E%>"
+msgstr ""
+
+#: c-decl.c:7467
+#, gcc-internal-format
+msgid "enumeration values exceed range of largest integer"
+msgstr ""
+
+#: c-decl.c:7484
+#, gcc-internal-format
+msgid "specified mode too small for enumeral values"
+msgstr ""
+
+#: c-decl.c:7589 c-decl.c:7605
+#, gcc-internal-format
+msgid "enumerator value for %qE is not an integer constant"
+msgstr ""
+
+#: c-decl.c:7600
+#, gcc-internal-format
+msgid "enumerator value for %qE is not an integer constant expression"
+msgstr ""
+
+#: c-decl.c:7624
+#, gcc-internal-format
+msgid "overflow in enumeration values"
+msgstr ""
+
+#: c-decl.c:7632
+#, gcc-internal-format
+msgid "ISO C restricts enumerator values to range of %<int%>"
+msgstr ""
+
+#: c-decl.c:7717
+#, gcc-internal-format
+msgid "inline function %qD given attribute noinline"
+msgstr ""
+
+#: c-decl.c:7735
+#, gcc-internal-format
+msgid "return type is an incomplete type"
+msgstr ""
+
+#: c-decl.c:7745
+#, gcc-internal-format
+msgid "return type defaults to %<int%>"
+msgstr ""
+
+#: c-decl.c:7823
+#, gcc-internal-format
+msgid "no previous prototype for %qD"
+msgstr ""
+
+#: c-decl.c:7832
+#, gcc-internal-format
+msgid "%qD was used with no prototype before its definition"
+msgstr ""
+
+#: c-decl.c:7839
+#, gcc-internal-format
+msgid "no previous declaration for %qD"
+msgstr ""
+
+#: c-decl.c:7849
+#, gcc-internal-format
+msgid "%qD was used with no declaration before its definition"
+msgstr ""
+
+#: c-decl.c:7868
+#, gcc-internal-format
+msgid "return type of %qD is not %<int%>"
+msgstr ""
+
+#: c-decl.c:7874
+#, gcc-internal-format
+msgid "%qD is normally a non-static function"
+msgstr ""
+
+#: c-decl.c:7911
+#, gcc-internal-format
+msgid "old-style parameter declarations in prototyped function definition"
+msgstr ""
+
+#: c-decl.c:7925
+#, gcc-internal-format
+msgid "traditional C rejects ISO C style function definitions"
+msgstr ""
+
+#: c-decl.c:7941
+#, gcc-internal-format
+msgid "parameter name omitted"
+msgstr ""
+
+#: c-decl.c:7978
+#, gcc-internal-format
+msgid "old-style function definition"
+msgstr ""
+
+#: c-decl.c:7987
+#, gcc-internal-format
+msgid "parameter name missing from parameter list"
+msgstr ""
+
+#: c-decl.c:8002
+#, gcc-internal-format
+msgid "%qD declared as a non-parameter"
+msgstr ""
+
+#: c-decl.c:8008
+#, gcc-internal-format
+msgid "multiple parameters named %qD"
+msgstr ""
+
+#: c-decl.c:8017
+#, gcc-internal-format
+msgid "parameter %qD declared with void type"
+msgstr ""
+
+#: c-decl.c:8046 c-decl.c:8050
+#, gcc-internal-format
+msgid "type of %qD defaults to %<int%>"
+msgstr ""
+
+#: c-decl.c:8070
+#, gcc-internal-format
+msgid "parameter %qD has incomplete type"
+msgstr ""
+
+#: c-decl.c:8077
+#, gcc-internal-format
+msgid "declaration for parameter %qD but no such parameter"
+msgstr ""
+
+#: c-decl.c:8129
+#, gcc-internal-format
+msgid "number of arguments doesn%'t match built-in prototype"
+msgstr ""
+
+#: c-decl.c:8140
+#, gcc-internal-format
+msgid "number of arguments doesn%'t match prototype"
+msgstr ""
+
+#: c-decl.c:8143 c-decl.c:8185 c-decl.c:8199
+#, gcc-internal-format
+msgid "prototype declaration"
+msgstr ""
+
+#: c-decl.c:8177
+#, gcc-internal-format
+msgid "promoted argument %qD doesn%'t match built-in prototype"
+msgstr ""
+
+#: c-decl.c:8182
+#, gcc-internal-format
+msgid "promoted argument %qD doesn%'t match prototype"
+msgstr ""
+
+#: c-decl.c:8192
+#, gcc-internal-format
+msgid "argument %qD doesn%'t match built-in prototype"
+msgstr ""
+
+#: c-decl.c:8197
+#, gcc-internal-format
+msgid "argument %qD doesn%'t match prototype"
+msgstr ""
+
+#: c-decl.c:8380 cp/decl.c:13528
+#, gcc-internal-format
+msgid "no return statement in function returning non-void"
+msgstr ""
+
+#: c-decl.c:8400
+#, gcc-internal-format
+msgid "parameter %qD set but not used"
+msgstr ""
+
+#. If we get here, declarations have been used in a for loop without
+#. the C99 for loop scope. This doesn't make much sense, so don't
+#. allow it.
+#: c-decl.c:8489
+#, gcc-internal-format
+msgid "%<for%> loop initial declarations are only allowed in C99 mode"
+msgstr ""
+
+#: c-decl.c:8494
+#, gcc-internal-format
+msgid "use option -std=c99 or -std=gnu99 to compile your code"
+msgstr ""
+
+#: c-decl.c:8528
+#, gcc-internal-format
+msgid "declaration of static variable %qD in %<for%> loop initial declaration"
+msgstr ""
+
+#: c-decl.c:8532
+#, gcc-internal-format
+msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
+msgstr ""
+
+#: c-decl.c:8539
+#, gcc-internal-format
+msgid "%<struct %E%> declared in %<for%> loop initial declaration"
+msgstr ""
+
+#: c-decl.c:8544
+#, gcc-internal-format
+msgid "%<union %E%> declared in %<for%> loop initial declaration"
+msgstr ""
+
+#: c-decl.c:8548
+#, gcc-internal-format
+msgid "%<enum %E%> declared in %<for%> loop initial declaration"
+msgstr ""
+
+#: c-decl.c:8552
+#, gcc-internal-format
+msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
+msgstr ""
+
+#: c-decl.c:8821
+#, gcc-internal-format
+msgid "incompatible address space qualifiers %qs and %qs"
+msgstr ""
+
+#: c-decl.c:8860 c-decl.c:9171 c-decl.c:9565
+#, gcc-internal-format
+msgid "duplicate %qE"
+msgstr ""
+
+#: c-decl.c:8886 c-decl.c:9182 c-decl.c:9439
+#, gcc-internal-format
+msgid "two or more data types in declaration specifiers"
+msgstr ""
+
+#: c-decl.c:8898 cp/parser.c:2512
+#, gcc-internal-format
+msgid "%<long long long%> is too long for GCC"
+msgstr ""
+
+#: c-decl.c:8911
+#, gcc-internal-format
+msgid "ISO C90 does not support %<long long%>"
+msgstr ""
+
+#: c-decl.c:9077 c-parser.c:6639
+#, gcc-internal-format
+msgid "ISO C90 does not support complex types"
+msgstr ""
+
+#: c-decl.c:9116
+#, gcc-internal-format
+msgid "ISO C does not support saturating types"
+msgstr ""
+
+#: c-decl.c:9190
+#, gcc-internal-format
+msgid "%<__int128%> is not supported for this target"
+msgstr ""
+
+#: c-decl.c:9195
+#, gcc-internal-format
+msgid "ISO C does not support %<__int128%> type"
+msgstr ""
+
+#: c-decl.c:9398
+#, gcc-internal-format
+msgid "ISO C does not support decimal floating point"
+msgstr ""
+
+#: c-decl.c:9420 c-decl.c:9646 c-parser.c:6232
+#, gcc-internal-format
+msgid "fixed-point types not supported for this target"
+msgstr ""
+
+#: c-decl.c:9422
+#, gcc-internal-format
+msgid "ISO C does not support fixed-point types"
+msgstr ""
+
+#: c-decl.c:9456
+#, gcc-internal-format
+msgid "C++ lookup of %qD would return a field, not a type"
+msgstr ""
+
+#: c-decl.c:9469
+#, gcc-internal-format
+msgid "%qE fails to be a typedef or built in type"
+msgstr ""
+
+#: c-decl.c:9511
+#, gcc-internal-format
+msgid "%qE is not at beginning of declaration"
+msgstr ""
+
+#: c-decl.c:9530
+#, gcc-internal-format
+msgid "%<__thread%> used with %<auto%>"
+msgstr ""
+
+#: c-decl.c:9532
+#, gcc-internal-format
+msgid "%<__thread%> used with %<register%>"
+msgstr ""
+
+#: c-decl.c:9534
+#, gcc-internal-format
+msgid "%<__thread%> used with %<typedef%>"
+msgstr ""
+
+#: c-decl.c:9545
+#, gcc-internal-format
+msgid "%<__thread%> before %<extern%>"
+msgstr ""
+
+#: c-decl.c:9554
+#, gcc-internal-format
+msgid "%<__thread%> before %<static%>"
+msgstr ""
+
+#: c-decl.c:9570
+#, gcc-internal-format
+msgid "multiple storage classes in declaration specifiers"
+msgstr ""
+
+#: c-decl.c:9577
+#, gcc-internal-format
+msgid "%<__thread%> used with %qE"
+msgstr ""
+
+#: c-decl.c:9644
+#, gcc-internal-format
+msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
+msgstr ""
+
+#: c-decl.c:9658
+#, gcc-internal-format
+msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
+msgstr ""
+
+#: c-decl.c:9703 c-decl.c:9716 c-decl.c:9742
+#, gcc-internal-format
+msgid "ISO C does not support complex integer types"
+msgstr ""
+
+#: c-decl.c:9896 toplev.c:484
+#, gcc-internal-format
+msgid "%q+F used but never defined"
+msgstr ""
+
+#: c-parser.c:244
+#, gcc-internal-format
+msgid "identifier %qE conflicts with C++ keyword"
+msgstr ""
+
+#: c-parser.c:1242
+#, gcc-internal-format
+msgid "ISO C forbids an empty translation unit"
+msgstr ""
+
+#: c-parser.c:1340 c-parser.c:7537
+#, gcc-internal-format
+msgid "ISO C does not allow extra %<;%> outside of a function"
+msgstr ""
+
+#: c-parser.c:1466 c-parser.c:2047 c-parser.c:3316
+#, gcc-internal-format
+msgid "unknown type name %qE"
+msgstr ""
+
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
+#, gcc-internal-format
+msgid "expected declaration specifiers"
+msgstr ""
+
+#: c-parser.c:1511 c-parser.c:2632
+#, gcc-internal-format
+msgid "expected %<;%>, identifier or %<(%>"
+msgstr ""
+
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
+#, gcc-internal-format
+msgid "prefix attributes are ignored for methods"
+msgstr ""
+
+#: c-parser.c:1564
+#, gcc-internal-format
+msgid "prefix attributes are ignored for implementations"
+msgstr ""
+
+#: c-parser.c:1585
+#, gcc-internal-format
+msgid "unexpected attribute"
+msgstr ""
+
+#: c-parser.c:1628
+#, gcc-internal-format
+msgid "data definition has no type or storage class"
+msgstr ""
+
+#: c-parser.c:1703 cp/parser.c:10475
+#, gcc-internal-format
+msgid "expected %<,%> or %<;%>"
+msgstr ""
+
+#. This can appear in many cases looking nothing like a
+#. function definition, so we don't give a more specific
+#. error suggesting there was one.
+#: c-parser.c:1710 c-parser.c:1726
+#, gcc-internal-format
+msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
+msgstr ""
+
+#: c-parser.c:1718
+#, gcc-internal-format
+msgid "ISO C forbids nested functions"
+msgstr ""
+
+#: c-parser.c:1834
+#, gcc-internal-format
+msgid "ISO C99 does not support %<_Static_assert%>"
+msgstr ""
+
+#: c-parser.c:1837
+#, gcc-internal-format
+msgid "ISO C90 does not support %<_Static_assert%>"
+msgstr ""
+
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
+#, gcc-internal-format
+msgid "expected string literal"
+msgstr ""
+
+#: c-parser.c:1870
+#, gcc-internal-format
+msgid "expression in static assertion is not an integer"
+msgstr ""
+
+#: c-parser.c:1877
+#, gcc-internal-format
+msgid "expression in static assertion is not an integer constant expression"
+msgstr ""
+
+#: c-parser.c:1882
+#, gcc-internal-format
+msgid "expression in static assertion is not constant"
+msgstr ""
+
+#: c-parser.c:1887
+#, gcc-internal-format
+msgid "static assertion failed: %E"
+msgstr ""
+
+#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
+#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
+#, gcc-internal-format
+msgid "expected identifier"
+msgstr ""
+
+#: c-parser.c:2295 cp/parser.c:14618
+#, gcc-internal-format
+msgid "comma at end of enumerator list"
+msgstr ""
+
+#: c-parser.c:2301
+#, gcc-internal-format
+msgid "expected %<,%> or %<}%>"
+msgstr ""
+
+#: c-parser.c:2332
+#, gcc-internal-format
+msgid "ISO C forbids forward references to %<enum%> types"
+msgstr ""
+
+#: c-parser.c:2448
+#, gcc-internal-format
+msgid "expected class name"
+msgstr ""
+
+#: c-parser.c:2467
+#, gcc-internal-format
+msgid "extra semicolon in struct or union specified"
+msgstr ""
+
+#: c-parser.c:2496
+#, gcc-internal-format
+msgid "no semicolon at end of struct or union"
+msgstr ""
+
+#: c-parser.c:2594 c-parser.c:3643
+#, gcc-internal-format
+msgid "expected specifier-qualifier-list"
+msgstr ""
+
+#: c-parser.c:2605
+#, gcc-internal-format
+msgid "ISO C forbids member declarations with no members"
+msgstr ""
+
+#: c-parser.c:2695
+#, gcc-internal-format
+msgid "expected %<,%>, %<;%> or %<}%>"
+msgstr ""
+
+#: c-parser.c:2702
+#, gcc-internal-format
+msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
+msgstr ""
+
+#: c-parser.c:2755
+#, gcc-internal-format
+msgid "%<typeof%> applied to a bit-field"
+msgstr ""
+
+#: c-parser.c:2789
+#, gcc-internal-format
+msgid "ISO C99 does not support %<_Alignas%>"
+msgstr ""
+
+#: c-parser.c:2792
+#, gcc-internal-format
+msgid "ISO C90 does not support %<_Alignas%>"
+msgstr ""
+
+#: c-parser.c:3020
+#, gcc-internal-format
+msgid "expected identifier or %<(%>"
+msgstr ""
+
+#: c-parser.c:3227
+#, gcc-internal-format
+msgid "ISO C requires a named argument before %<...%>"
+msgstr ""
+
+#: c-parser.c:3323
+#, gcc-internal-format
+msgid "expected declaration specifiers or %<...%>"
+msgstr ""
+
+#: c-parser.c:3377
+#, gcc-internal-format
+msgid "wide string literal in %<asm%>"
+msgstr ""
+
+#: c-parser.c:3743
+#, gcc-internal-format
+msgid "ISO C forbids empty initializer braces"
+msgstr ""
+
+#: c-parser.c:3794
+#, gcc-internal-format
+msgid "obsolete use of designated initializer with %<:%>"
+msgstr ""
+
+#: c-parser.c:3934
+#, gcc-internal-format
+msgid "ISO C forbids specifying range of elements to initialize"
+msgstr ""
+
+#: c-parser.c:3947
+#, gcc-internal-format
+msgid "ISO C90 forbids specifying subobject to initialize"
+msgstr ""
+
+#: c-parser.c:3954
+#, gcc-internal-format
+msgid "obsolete use of designated initializer without %<=%>"
+msgstr ""
+
+#: c-parser.c:4118
+#, gcc-internal-format
+msgid "ISO C forbids label declarations"
+msgstr ""
+
+#: c-parser.c:4124 c-parser.c:4205
+#, gcc-internal-format
+msgid "expected declaration or statement"
+msgstr ""
+
+#: c-parser.c:4156 c-parser.c:4186
+#, gcc-internal-format
+msgid "ISO C90 forbids mixed declarations and code"
+msgstr ""
+
+#: c-parser.c:4213
+#, gcc-internal-format
+msgid "expected %<}%> before %<else%>"
+msgstr ""
+
+#: c-parser.c:4218 cp/parser.c:8996
+#, gcc-internal-format
+msgid "%<else%> without a previous %<if%>"
+msgstr ""
+
+#: c-parser.c:4235
+#, gcc-internal-format
+msgid "label at end of compound statement"
+msgstr ""
+
+#: c-parser.c:4280
+#, gcc-internal-format
+msgid "expected %<:%> or %<...%>"
+msgstr ""
+
+#: c-parser.c:4311
+#, gcc-internal-format
+msgid "a label can only be part of a statement and a declaration is not a statement"
+msgstr ""
+
+#: c-parser.c:4486
+#, gcc-internal-format
+msgid "expected identifier or %<*%>"
+msgstr ""
+
+#. Avoid infinite loop in error recovery:
+#. c_parser_skip_until_found stops at a closing nesting
+#. delimiter without consuming it, but here we need to consume
+#. it to proceed further.
+#: c-parser.c:4559 cp/parser.c:8724
+#, gcc-internal-format
+msgid "expected statement"
+msgstr ""
+
+#: c-parser.c:4657 cp/parser.c:9078
+#, gcc-internal-format
+msgid "suggest braces around empty body in an %<if%> statement"
+msgstr ""
+
+#: c-parser.c:4685 cp/parser.c:9101
+#, gcc-internal-format
+msgid "suggest braces around empty body in an %<else%> statement"
+msgstr ""
+
+#: c-parser.c:4816
+#, gcc-internal-format
+msgid "suggest braces around empty body in %<do%> statement"
+msgstr ""
+
+#: c-parser.c:4932 c-parser.c:4962
+#, gcc-internal-format
+msgid "multiple iterating variables in fast enumeration"
+msgstr ""
+
+#: c-parser.c:4982
+#, gcc-internal-format
+msgid "invalid iterating variable in fast enumeration"
+msgstr ""
+
+#: c-parser.c:5015
+#, gcc-internal-format
+msgid "missing collection in fast enumeration"
+msgstr ""
+
+#: c-parser.c:5086
+#, gcc-internal-format
+msgid "%E qualifier ignored on asm"
+msgstr ""
+
+#: c-parser.c:5440
+#, gcc-internal-format
+msgid "ISO C forbids omitting the middle term of a ?: expression"
+msgstr ""
+
+#: c-parser.c:5897
+#, gcc-internal-format
+msgid "traditional C rejects the unary plus operator"
+msgstr ""
+
+#: c-parser.c:6026
+#, gcc-internal-format
+msgid "%<sizeof%> applied to a bit-field"
+msgstr ""
+
+#: c-parser.c:6047
+#, gcc-internal-format
+msgid "ISO C99 does not support %qE"
+msgstr ""
+
+#: c-parser.c:6050
+#, gcc-internal-format
+msgid "ISO C90 does not support %qE"
+msgstr ""
+
+#: c-parser.c:6101
+#, gcc-internal-format
+msgid "ISO C does not allow %<%E (expression)%>"
+msgstr ""
+
+#: c-parser.c:6126
+#, gcc-internal-format
+msgid "cannot take address of %qs"
+msgstr ""
+
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
+#, gcc-internal-format
+msgid "expected expression"
+msgstr ""
+
+#: c-parser.c:6315
+#, gcc-internal-format
+msgid "braced-group within expression allowed only inside a function"
+msgstr ""
+
+#: c-parser.c:6328
+#, gcc-internal-format
+msgid "ISO C forbids braced-groups within expressions"
+msgstr ""
+
+#: c-parser.c:6520
+#, gcc-internal-format
+msgid "wrong number of arguments to %<__builtin_choose_expr%>"
+msgstr ""
+
+#: c-parser.c:6536
+#, gcc-internal-format
+msgid "first argument to %<__builtin_choose_expr%> not a constant"
+msgstr ""
+
+#: c-parser.c:6602
+#, gcc-internal-format
+msgid "wrong number of arguments to %<__builtin_complex%>"
+msgstr ""
+
+#: c-parser.c:6624
+#, gcc-internal-format
+msgid "%<__builtin_complex%> operand not of real binary floating-point type"
+msgstr ""
+
+#: c-parser.c:6633
+#, gcc-internal-format
+msgid "%<__builtin_complex%> operands of different types"
+msgstr ""
+
+#: c-parser.c:6679
+#, gcc-internal-format
+msgid "wrong number of arguments to %<__builtin_shuffle%>"
+msgstr ""
+
+#: c-parser.c:6801
+#, gcc-internal-format
+msgid "compound literal has variable size"
+msgstr ""
+
+#: c-parser.c:6812
+#, gcc-internal-format
+msgid "compound literal qualified by address-space qualifier"
+msgstr ""
+
+#: c-parser.c:6817
+#, gcc-internal-format
+msgid "ISO C90 forbids compound literals"
+msgstr ""
+
+#: c-parser.c:7141
+#, gcc-internal-format
+msgid "expected identifier or %<)%>"
+msgstr ""
+
+#: c-parser.c:7237
+#, gcc-internal-format
+msgid "extra semicolon"
+msgstr ""
+
+#: c-parser.c:7485
+#, gcc-internal-format
+msgid "extra semicolon in method definition specified"
+msgstr ""
+
+#: c-parser.c:7617
+#, gcc-internal-format
+msgid "method attributes must be specified at the end only"
+msgstr ""
+
+#: c-parser.c:7637
+#, gcc-internal-format
+msgid "expected %<;%> or %<{%> after method attribute definition"
+msgstr ""
+
+#: c-parser.c:7758
+#, gcc-internal-format
+msgid "objective-c method declaration is expected"
+msgstr ""
+
+#: c-parser.c:8180
+#, gcc-internal-format
+msgid "no type or storage class may be specified here,"
+msgstr ""
+
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
+#, gcc-internal-format
+msgid "unknown property attribute"
+msgstr ""
+
+#: c-parser.c:8291 cp/parser.c:24674
+#, gcc-internal-format
+msgid "missing %<=%> (after %<getter%> attribute)"
+msgstr ""
+
+#: c-parser.c:8294 cp/parser.c:24677
+#, gcc-internal-format
+msgid "missing %<=%> (after %<setter%> attribute)"
+msgstr ""
+
+#: c-parser.c:8308 cp/parser.c:24692
+#, gcc-internal-format
+msgid "the %<setter%> attribute may only be specified once"
+msgstr ""
+
+#: c-parser.c:8313 cp/parser.c:24698
+#, gcc-internal-format
+msgid "setter name must terminate with %<:%>"
+msgstr ""
+
+#: c-parser.c:8320 cp/parser.c:24706
+#, gcc-internal-format
+msgid "the %<getter%> attribute may only be specified once"
+msgstr ""
+
+#: c-parser.c:8506 cp/parser.c:27295
+#, gcc-internal-format
+msgid "%<#pragma omp barrier%> may only be used in compound statements"
+msgstr ""
+
+#: c-parser.c:8517 cp/parser.c:27310
+#, gcc-internal-format
+msgid "%<#pragma omp flush%> may only be used in compound statements"
+msgstr ""
+
+#: c-parser.c:8528 cp/parser.c:27326
+#, gcc-internal-format
+msgid "%<#pragma omp taskwait%> may only be used in compound statements"
+msgstr ""
+
+#: c-parser.c:8539 cp/parser.c:27342
+#, gcc-internal-format
+msgid "%<#pragma omp taskyield%> may only be used in compound statements"
+msgstr ""
+
+#: c-parser.c:8552 cp/parser.c:27370
+#, gcc-internal-format
+msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
+msgstr ""
+
+#: c-parser.c:8558 cp/parser.c:27285
+#, gcc-internal-format
+msgid "%<#pragma GCC pch_preprocess%> must be first"
+msgstr ""
+
+#: c-parser.c:8723 cp/parser.c:24962
+#, gcc-internal-format
+msgid "too many %qs clauses"
+msgstr ""
+
+#: c-parser.c:8825 cp/parser.c:25077
+#, gcc-internal-format
+msgid "collapse argument needs positive constant integer expression"
+msgstr ""
+
+#: c-parser.c:8891 cp/parser.c:25128
+#, gcc-internal-format
+msgid "expected %<none%> or %<shared%>"
+msgstr ""
+
+#: c-parser.c:9026 c-parser.c:9240
+#, gcc-internal-format
+msgid "expected integer expression"
+msgstr ""
+
+#: c-parser.c:9038
+#, gcc-internal-format
+msgid "%<num_threads%> value must be positive"
+msgstr ""
+
+#: c-parser.c:9142 cp/parser.c:25347
+#, gcc-internal-format
+msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
+msgstr ""
+
+#: c-parser.c:9231 cp/parser.c:25432
+#, gcc-internal-format
+msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
+msgstr ""
+
+#: c-parser.c:9235 cp/parser.c:25435
+#, gcc-internal-format
+msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
+msgstr ""
+
+#: c-parser.c:9253 cp/parser.c:25451
+#, gcc-internal-format
+msgid "invalid schedule kind"
+msgstr ""
+
+#: c-parser.c:9381 cp/parser.c:25583
+#, gcc-internal-format
+msgid "expected %<#pragma omp%> clause"
+msgstr ""
+
+#: c-parser.c:9390 cp/parser.c:25592
+#, gcc-internal-format
+msgid "%qs is not valid for %qs"
+msgstr ""
+
+#: c-parser.c:9682 cp/parser.c:25876
+#, gcc-internal-format
+msgid "invalid form of %<#pragma omp atomic%>"
+msgstr ""
+
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
+#, gcc-internal-format
+msgid "invalid operator for %<#pragma omp atomic%>"
+msgstr ""
+
+#: c-parser.c:9826 c-parser.c:9847
+#, gcc-internal-format
+msgid "expected %<(%> or end of line"
+msgstr ""
+
+#: c-parser.c:9882 cp/parser.c:26195
+#, gcc-internal-format
+msgid "for statement expected"
+msgstr ""
+
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
+#, gcc-internal-format
+msgid "expected iteration declaration or initialization"
+msgstr ""
+
+#: c-parser.c:10016
+#, gcc-internal-format
+msgid "not enough perfectly nested loops"
+msgstr ""
+
+#: c-parser.c:10069 cp/parser.c:26537
+#, gcc-internal-format
+msgid "collapsed loops not perfectly nested"
+msgstr ""
+
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
+#, gcc-internal-format
+msgid "iteration variable %qD should not be firstprivate"
+msgstr ""
+
+#: c-parser.c:10568
+#, gcc-internal-format
+msgid "%qD is not a variable"
+msgstr ""
+
+#: c-parser.c:10570 cp/semantics.c:4327
+#, gcc-internal-format
+msgid "%qE declared %<threadprivate%> after first use"
+msgstr ""
+
+#: c-parser.c:10572 cp/semantics.c:4329
+#, gcc-internal-format
+msgid "automatic variable %qE cannot be %<threadprivate%>"
+msgstr ""
+
+#: c-parser.c:10576 cp/semantics.c:4331
+#, gcc-internal-format
+msgid "%<threadprivate%> %qE has incomplete type"
+msgstr ""
+
+#: c-parser.c:10773 cp/parser.c:27181
+#, gcc-internal-format
+msgid "%<__transaction_cancel%> without transactional memory support enabled"
+msgstr ""
+
+#: c-parser.c:10779 cp/parser.c:27187
+#, gcc-internal-format
+msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
+msgstr ""
+
+#: c-parser.c:10788 cp/parser.c:27196
+#, gcc-internal-format
+msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
+msgstr ""
+
+#: c-parser.c:10790 cp/parser.c:27199
+#, gcc-internal-format
+msgid " or a %<transaction_may_cancel_outer%> function"
+msgstr ""
+
+#: c-parser.c:10796 cp/parser.c:27205
+#, gcc-internal-format
+msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
+msgstr ""
+
+#: c-typeck.c:214
+#, gcc-internal-format
+msgid "%qD has an incomplete type"
+msgstr ""
+
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
+#, gcc-internal-format
+msgid "invalid use of void expression"
+msgstr ""
+
+#: c-typeck.c:243
+#, gcc-internal-format
+msgid "invalid use of flexible array member"
+msgstr ""
+
+#: c-typeck.c:249 cp/typeck2.c:426
+#, gcc-internal-format
+msgid "invalid use of array with unspecified bounds"
+msgstr ""
+
+#: c-typeck.c:257
+#, gcc-internal-format
+msgid "invalid use of undefined type %<%s %E%>"
+msgstr ""
+
+#. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL.
+#: c-typeck.c:261
+#, gcc-internal-format
+msgid "invalid use of incomplete typedef %qD"
+msgstr ""
+
+#: c-typeck.c:327
+#, gcc-internal-format
+msgid "%qT and %qT are in disjoint named address spaces"
+msgstr ""
+
+#: c-typeck.c:566 c-typeck.c:591
+#, gcc-internal-format
+msgid "function types not truly compatible in ISO C"
+msgstr ""
+
+#: c-typeck.c:734
+#, gcc-internal-format
+msgid "can%'t mix operands of decimal float and vector types"
+msgstr ""
+
+#: c-typeck.c:739
+#, gcc-internal-format
+msgid "can%'t mix operands of decimal float and complex types"
+msgstr ""
+
+#: c-typeck.c:744
+#, gcc-internal-format
+msgid "can%'t mix operands of decimal float and other float types"
+msgstr ""
+
+#: c-typeck.c:1220
+#, gcc-internal-format
+msgid "types are not quite compatible"
+msgstr ""
+
+#: c-typeck.c:1224
+#, gcc-internal-format
+msgid "pointer target types incompatible in C++"
+msgstr ""
+
+#: c-typeck.c:1556
+#, gcc-internal-format
+msgid "function return types not compatible due to %<volatile%>"
+msgstr ""
+
+#: c-typeck.c:1732 c-typeck.c:3495
+#, gcc-internal-format
+msgid "arithmetic on pointer to an incomplete type"
+msgstr ""
+
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
+#, gcc-internal-format
+msgid "%qT has no member named %qE"
+msgstr ""
+
+#: c-typeck.c:2214
+#, gcc-internal-format
+msgid "request for member %qE in something not a structure or union"
+msgstr ""
+
+#: c-typeck.c:2263
+#, gcc-internal-format
+msgid "dereferencing pointer to incomplete type"
+msgstr ""
+
+#: c-typeck.c:2267
+#, gcc-internal-format
+msgid "dereferencing %<void *%> pointer"
+msgstr ""
+
+#: c-typeck.c:2323
+#, gcc-internal-format
+msgid "subscripted value is neither array nor pointer nor vector"
+msgstr ""
+
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
+#, gcc-internal-format
+msgid "array subscript is not an integer"
+msgstr ""
+
+#: c-typeck.c:2341
+#, gcc-internal-format
+msgid "subscripted value is pointer to function"
+msgstr ""
+
+#: c-typeck.c:2366
+#, gcc-internal-format
+msgid "index value is out of bound"
+msgstr ""
+
+#: c-typeck.c:2410
+#, gcc-internal-format
+msgid "ISO C forbids subscripting %<register%> array"
+msgstr ""
+
+#: c-typeck.c:2413
+#, gcc-internal-format
+msgid "ISO C90 forbids subscripting non-lvalue array"
+msgstr ""
+
+#: c-typeck.c:2521
+#, gcc-internal-format
+msgid "enum constant defined here"
+msgstr ""
+
+#: c-typeck.c:2759
+#, gcc-internal-format
+msgid "called object %qE is not a function"
+msgstr ""
+
+#. This situation leads to run-time undefined behavior. We can't,
+#. therefore, simply error unless we can prove that all possible
+#. executions of the program must execute the code.
+#: c-typeck.c:2796
+#, gcc-internal-format
+msgid "function called through a non-compatible type"
+msgstr ""
+
+#: c-typeck.c:2810 c-typeck.c:2863
+#, gcc-internal-format
+msgid "function with qualified void return type called"
+msgstr ""
+
+#: c-typeck.c:2900
+#, gcc-internal-format
+msgid "__builtin_shuffle last argument must be an integer vector"
+msgstr ""
+
+#: c-typeck.c:2908
+#, gcc-internal-format
+msgid "__builtin_shuffle arguments must be vectors"
+msgstr ""
+
+#: c-typeck.c:2914
+#, gcc-internal-format
+msgid "__builtin_shuffle argument vectors must be of the same type"
+msgstr ""
+
+#: c-typeck.c:2924
+#, gcc-internal-format
+msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
+msgstr ""
+
+#: c-typeck.c:2933
+#, gcc-internal-format
+msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
+msgstr ""
+
+#: c-typeck.c:3045
+#, gcc-internal-format
+msgid "too many arguments to method %qE"
+msgstr ""
+
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
+#, gcc-internal-format
+msgid "too many arguments to function %qE"
+msgstr ""
+
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
+#, gcc-internal-format
+msgid "declared here"
+msgstr ""
+
+#: c-typeck.c:3086
+#, gcc-internal-format, gfc-internal-format
+msgid "type of formal parameter %d is incomplete"
+msgstr ""
+
+#: c-typeck.c:3101
+#, gcc-internal-format
+msgid "passing argument %d of %qE as integer rather than floating due to prototype"
+msgstr ""
+
+#: c-typeck.c:3106
+#, gcc-internal-format
+msgid "passing argument %d of %qE as integer rather than complex due to prototype"
+msgstr ""
+
+#: c-typeck.c:3111
+#, gcc-internal-format
+msgid "passing argument %d of %qE as complex rather than floating due to prototype"
+msgstr ""
+
+#: c-typeck.c:3116
+#, gcc-internal-format
+msgid "passing argument %d of %qE as floating rather than integer due to prototype"
+msgstr ""
+
+#: c-typeck.c:3121
+#, gcc-internal-format
+msgid "passing argument %d of %qE as complex rather than integer due to prototype"
+msgstr ""
+
+#: c-typeck.c:3126
+#, gcc-internal-format
+msgid "passing argument %d of %qE as floating rather than complex due to prototype"
+msgstr ""
+
+#: c-typeck.c:3139
+#, gcc-internal-format
+msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
+msgstr ""
+
+#: c-typeck.c:3164
+#, gcc-internal-format
+msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
+msgstr ""
+
+#: c-typeck.c:3186
+#, gcc-internal-format
+msgid "passing argument %d of %qE with different width due to prototype"
+msgstr ""
+
+#: c-typeck.c:3210
+#, gcc-internal-format
+msgid "passing argument %d of %qE as unsigned due to prototype"
+msgstr ""
+
+#: c-typeck.c:3215
+#, gcc-internal-format
+msgid "passing argument %d of %qE as signed due to prototype"
+msgstr ""
+
+#: c-typeck.c:3250 cp/call.c:6005
+#, gcc-internal-format
+msgid "implicit conversion from %qT to %qT when passing argument to function"
+msgstr ""
+
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
+#, gcc-internal-format
+msgid "too few arguments to function %qE"
+msgstr ""
+
+#: c-typeck.c:3365 c-typeck.c:3370
+#, gcc-internal-format
+msgid "comparison with string literal results in unspecified behavior"
+msgstr ""
+
+#: c-typeck.c:3384
+#, gcc-internal-format
+msgid "comparison between %qT and %qT"
+msgstr ""
+
+#: c-typeck.c:3436
+#, gcc-internal-format
+msgid "pointer of type %<void *%> used in subtraction"
+msgstr ""
+
+#: c-typeck.c:3439
+#, gcc-internal-format
+msgid "pointer to a function used in subtraction"
+msgstr ""
+
+#: c-typeck.c:3603
+#, gcc-internal-format
+msgid "ISO C does not support %<~%> for complex conjugation"
+msgstr ""
+
+#: c-typeck.c:3642
+#, gcc-internal-format
+msgid "wrong type argument to unary exclamation mark"
+msgstr ""
+
+#: c-typeck.c:3693
+#, gcc-internal-format
+msgid "increment of enumeration value is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:3696
+#, gcc-internal-format
+msgid "decrement of enumeration value is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:3709
+#, gcc-internal-format
+msgid "ISO C does not support %<++%> and %<--%> on complex types"
+msgstr ""
+
+#: c-typeck.c:3728 c-typeck.c:3760
+#, gcc-internal-format
+msgid "wrong type argument to increment"
+msgstr ""
+
+#: c-typeck.c:3730 c-typeck.c:3763
+#, gcc-internal-format
+msgid "wrong type argument to decrement"
+msgstr ""
+
+#: c-typeck.c:3750
+#, gcc-internal-format
+msgid "increment of pointer to unknown structure"
+msgstr ""
+
+#: c-typeck.c:3753
+#, gcc-internal-format
+msgid "decrement of pointer to unknown structure"
+msgstr ""
+
+#: c-typeck.c:3837
+#, gcc-internal-format
+msgid "taking address of expression of type %<void%>"
+msgstr ""
+
+#: c-typeck.c:3995 c-family/c-common.c:9033
+#, gcc-internal-format
+msgid "assignment of read-only location %qE"
+msgstr ""
+
+#: c-typeck.c:3998 c-family/c-common.c:9034
+#, gcc-internal-format
+msgid "increment of read-only location %qE"
+msgstr ""
+
+#: c-typeck.c:4001 c-family/c-common.c:9035
+#, gcc-internal-format
+msgid "decrement of read-only location %qE"
+msgstr ""
+
+#: c-typeck.c:4042
+#, gcc-internal-format
+msgid "cannot take address of bit-field %qD"
+msgstr ""
+
+#: c-typeck.c:4070
+#, gcc-internal-format
+msgid "global register variable %qD used in nested function"
+msgstr ""
+
+#: c-typeck.c:4073
+#, gcc-internal-format
+msgid "register variable %qD used in nested function"
+msgstr ""
+
+#: c-typeck.c:4078
+#, gcc-internal-format
+msgid "address of global register variable %qD requested"
+msgstr ""
+
+#: c-typeck.c:4080
+#, gcc-internal-format
+msgid "address of register variable %qD requested"
+msgstr ""
+
+#: c-typeck.c:4174
+#, gcc-internal-format
+msgid "non-lvalue array in conditional expression"
+msgstr ""
+
+#: c-typeck.c:4230 cp/call.c:4625
+#, gcc-internal-format
+msgid "implicit conversion from %qT to %qT to match other result of conditional"
+msgstr ""
+
+#: c-typeck.c:4304
+#, gcc-internal-format
+msgid "ISO C forbids conditional expr with only one void side"
+msgstr ""
+
+#: c-typeck.c:4321
+#, gcc-internal-format
+msgid "pointers to disjoint address spaces used in conditional expression"
+msgstr ""
+
+#: c-typeck.c:4329 c-typeck.c:4338
+#, gcc-internal-format
+msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
+msgstr ""
+
+#: c-typeck.c:4351
+#, gcc-internal-format
+msgid "pointer type mismatch in conditional expression"
+msgstr ""
+
+#: c-typeck.c:4360 c-typeck.c:4371
+#, gcc-internal-format
+msgid "pointer/integer type mismatch in conditional expression"
+msgstr ""
+
+#: c-typeck.c:4385 tree-cfg.c:3841
+#, gcc-internal-format
+msgid "type mismatch in conditional expression"
+msgstr ""
+
+#: c-typeck.c:4484
+#, gcc-internal-format
+msgid "left-hand operand of comma expression has no effect"
+msgstr ""
+
+#: c-typeck.c:4554
+msgid "cast adds %q#v qualifier to function type"
+msgstr ""
+
+#: c-typeck.c:4560
+msgid "cast discards %q#v qualifier from pointer target type"
+msgstr ""
+
+#: c-typeck.c:4595
+#, gcc-internal-format
+msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
+msgstr ""
+
+#: c-typeck.c:4632
+#, gcc-internal-format
+msgid "cast specifies array type"
+msgstr ""
+
+#: c-typeck.c:4638
+#, gcc-internal-format
+msgid "cast specifies function type"
+msgstr ""
+
+#: c-typeck.c:4654
+#, gcc-internal-format
+msgid "ISO C forbids casting nonscalar to the same type"
+msgstr ""
+
+#: c-typeck.c:4671
+#, gcc-internal-format
+msgid "ISO C forbids casts to union type"
+msgstr ""
+
+#: c-typeck.c:4681
+#, gcc-internal-format
+msgid "cast to union type from type not present in union"
+msgstr ""
+
+#: c-typeck.c:4716
+#, gcc-internal-format, gfc-internal-format
+msgid "cast to %s address space pointer from disjoint generic address space pointer"
+msgstr ""
+
+#: c-typeck.c:4721
+#, gcc-internal-format, gfc-internal-format
+msgid "cast to generic address space pointer from disjoint %s address space pointer"
+msgstr ""
+
+#: c-typeck.c:4726
+#, gcc-internal-format, gfc-internal-format
+msgid "cast to %s address space pointer from disjoint %s address space pointer"
+msgstr ""
+
+#: c-typeck.c:4746
+#, gcc-internal-format
+msgid "cast increases required alignment of target type"
+msgstr ""
+
+#: c-typeck.c:4757
+#, gcc-internal-format
+msgid "cast from pointer to integer of different size"
+msgstr ""
+
+#: c-typeck.c:4762
+#, gcc-internal-format
+msgid "cast from function call of type %qT to non-matching type %qT"
+msgstr ""
+
+#: c-typeck.c:4771 cp/typeck.c:6577
+#, gcc-internal-format
+msgid "cast to pointer from integer of different size"
+msgstr ""
+
+#: c-typeck.c:4785
+#, gcc-internal-format
+msgid "ISO C forbids conversion of function pointer to object pointer type"
+msgstr ""
+
+#: c-typeck.c:4794
+#, gcc-internal-format
+msgid "ISO C forbids conversion of object pointer to function pointer type"
+msgstr ""
+
+#: c-typeck.c:4877
+#, gcc-internal-format
+msgid "defining a type in a cast is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:5016 c-typeck.c:5313
+#, gcc-internal-format
+msgid "enum conversion in assignment is invalid in C++"
+msgstr ""
+
+#. This macro is used to emit diagnostics to ensure that all format
+#. strings are complete sentences, visible to gettext and checked at
+#. compile time.
+#. This macro is used to emit diagnostics to ensure that all format
+#. strings are complete sentences, visible to gettext and checked at
+#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
+#. extra parameter to enumerate qualifiers.
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
+#, gcc-internal-format
+msgid "expected %qT but argument is of type %qT"
+msgstr ""
+
+#: c-typeck.c:5311
+#, gcc-internal-format
+msgid "enum conversion when passing argument %d of %qE is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:5315 c-typeck.c:7880
+#, gcc-internal-format
+msgid "enum conversion in initialization is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:5317
+#, gcc-internal-format
+msgid "enum conversion in return is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:5346
+#, gcc-internal-format
+msgid "cannot pass rvalue to reference parameter"
+msgstr ""
+
+#: c-typeck.c:5476 c-typeck.c:5699
+msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
+msgstr ""
+
+#: c-typeck.c:5479 c-typeck.c:5702
+msgid "assignment makes %q#v qualified function pointer from unqualified"
+msgstr ""
+
+#: c-typeck.c:5482 c-typeck.c:5704
+msgid "initialization makes %q#v qualified function pointer from unqualified"
+msgstr ""
+
+#: c-typeck.c:5485 c-typeck.c:5706
+msgid "return makes %q#v qualified function pointer from unqualified"
+msgstr ""
+
+#: c-typeck.c:5492 c-typeck.c:5662
+msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
+msgstr ""
+
+#: c-typeck.c:5494 c-typeck.c:5664
+msgid "assignment discards %qv qualifier from pointer target type"
+msgstr ""
+
+#: c-typeck.c:5496 c-typeck.c:5666
+msgid "initialization discards %qv qualifier from pointer target type"
+msgstr ""
+
+#: c-typeck.c:5498 c-typeck.c:5668
+msgid "return discards %qv qualifier from pointer target type"
+msgstr ""
+
+#: c-typeck.c:5507
+#, gcc-internal-format
+msgid "ISO C prohibits argument conversion to union type"
+msgstr ""
+
+#: c-typeck.c:5562
+#, gcc-internal-format
+msgid "request for implicit conversion from %qT to %qT not permitted in C++"
+msgstr ""
+
+#: c-typeck.c:5574
+#, gcc-internal-format
+msgid "passing argument %d of %qE from pointer to non-enclosed address space"
+msgstr ""
+
+#: c-typeck.c:5578
+#, gcc-internal-format
+msgid "assignment from pointer to non-enclosed address space"
+msgstr ""
+
+#: c-typeck.c:5582
+#, gcc-internal-format
+msgid "initialization from pointer to non-enclosed address space"
+msgstr ""
+
+#: c-typeck.c:5586
+#, gcc-internal-format
+msgid "return from pointer to non-enclosed address space"
+msgstr ""
+
+#: c-typeck.c:5604
+#, gcc-internal-format
+msgid "argument %d of %qE might be a candidate for a format attribute"
+msgstr ""
+
+#: c-typeck.c:5610
+#, gcc-internal-format
+msgid "assignment left-hand side might be a candidate for a format attribute"
+msgstr ""
+
+#: c-typeck.c:5615
+#, gcc-internal-format
+msgid "initialization left-hand side might be a candidate for a format attribute"
+msgstr ""
+
+#: c-typeck.c:5620 cp/typeck.c:7554
+#, gcc-internal-format
+msgid "return type might be a candidate for a format attribute"
+msgstr ""
+
+#: c-typeck.c:5644
+#, gcc-internal-format
+msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
+msgstr ""
+
+#: c-typeck.c:5647
+#, gcc-internal-format
+msgid "ISO C forbids assignment between function pointer and %<void *%>"
+msgstr ""
+
+#: c-typeck.c:5649
+#, gcc-internal-format
+msgid "ISO C forbids initialization between function pointer and %<void *%>"
+msgstr ""
+
+#: c-typeck.c:5651
+#, gcc-internal-format
+msgid "ISO C forbids return between function pointer and %<void *%>"
+msgstr ""
+
+#: c-typeck.c:5680
+#, gcc-internal-format
+msgid "pointer targets in passing argument %d of %qE differ in signedness"
+msgstr ""
+
+#: c-typeck.c:5682
+#, gcc-internal-format
+msgid "pointer targets in assignment differ in signedness"
+msgstr ""
+
+#: c-typeck.c:5684
+#, gcc-internal-format
+msgid "pointer targets in initialization differ in signedness"
+msgstr ""
+
+#: c-typeck.c:5686
+#, gcc-internal-format
+msgid "pointer targets in return differ in signedness"
+msgstr ""
+
+#: c-typeck.c:5715
+#, gcc-internal-format
+msgid "passing argument %d of %qE from incompatible pointer type"
+msgstr ""
+
+#: c-typeck.c:5717
+#, gcc-internal-format
+msgid "assignment from incompatible pointer type"
+msgstr ""
+
+#: c-typeck.c:5718
+#, gcc-internal-format
+msgid "initialization from incompatible pointer type"
+msgstr ""
+
+#: c-typeck.c:5720
+#, gcc-internal-format
+msgid "return from incompatible pointer type"
+msgstr ""
+
+#. ??? This should not be an error when inlining calls to
+#. unprototyped functions.
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
+#, gcc-internal-format
+msgid "invalid use of non-lvalue array"
+msgstr ""
+
+#: c-typeck.c:5738
+#, gcc-internal-format
+msgid "passing argument %d of %qE makes pointer from integer without a cast"
+msgstr ""
+
+#: c-typeck.c:5740
+#, gcc-internal-format
+msgid "assignment makes pointer from integer without a cast"
+msgstr ""
+
+#: c-typeck.c:5742
+#, gcc-internal-format
+msgid "initialization makes pointer from integer without a cast"
+msgstr ""
+
+#: c-typeck.c:5744
+#, gcc-internal-format
+msgid "return makes pointer from integer without a cast"
+msgstr ""
+
+#: c-typeck.c:5752
+#, gcc-internal-format
+msgid "passing argument %d of %qE makes integer from pointer without a cast"
+msgstr ""
+
+#: c-typeck.c:5754
+#, gcc-internal-format
+msgid "assignment makes integer from pointer without a cast"
+msgstr ""
+
+#: c-typeck.c:5756
+#, gcc-internal-format
+msgid "initialization makes integer from pointer without a cast"
+msgstr ""
+
+#: c-typeck.c:5758
+#, gcc-internal-format
+msgid "return makes integer from pointer without a cast"
+msgstr ""
+
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
+#, gcc-internal-format
+msgid "incompatible type for argument %d of %qE"
+msgstr ""
+
+#: c-typeck.c:5781
+#, gcc-internal-format
+msgid "incompatible types when assigning to type %qT from type %qT"
+msgstr ""
+
+#: c-typeck.c:5786
+#, gcc-internal-format
+msgid "incompatible types when initializing type %qT using type %qT"
+msgstr ""
+
+#: c-typeck.c:5791
+#, gcc-internal-format
+msgid "incompatible types when returning type %qT but %qT was expected"
+msgstr ""
+
+#: c-typeck.c:5855
+#, gcc-internal-format
+msgid "traditional C rejects automatic aggregate initialization"
+msgstr ""
+
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
+#, gcc-internal-format
+msgid "(near initialization for %qs)"
+msgstr ""
+
+#: c-typeck.c:6081
+#, gcc-internal-format
+msgid "array initialized from parenthesized string constant"
+msgstr ""
+
+#: c-typeck.c:6154 c-typeck.c:7029
+#, gcc-internal-format
+msgid "initialization of a flexible array member"
+msgstr ""
+
+#: c-typeck.c:6164 cp/typeck2.c:890
+#, gcc-internal-format
+msgid "char-array initialized from wide string"
+msgstr ""
+
+#: c-typeck.c:6172
+#, gcc-internal-format
+msgid "wide character array initialized from non-wide string"
+msgstr ""
+
+#: c-typeck.c:6178
+#, gcc-internal-format
+msgid "wide character array initialized from incompatible wide string"
+msgstr ""
+
+#: c-typeck.c:6212
+#, gcc-internal-format
+msgid "array of inappropriate type initialized from string constant"
+msgstr ""
+
+#: c-typeck.c:6306
+#, gcc-internal-format
+msgid "array initialized from non-constant array expression"
+msgstr ""
+
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
+#, gcc-internal-format
+msgid "initializer element is not constant"
+msgstr ""
+
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
+#, gcc-internal-format
+msgid "initializer element is not a constant expression"
+msgstr ""
+
+#: c-typeck.c:6377 c-typeck.c:7858
+#, gcc-internal-format
+msgid "initializer element is not computable at load time"
+msgstr ""
+
+#: c-typeck.c:6395
+#, gcc-internal-format
+msgid "invalid initializer"
+msgstr ""
+
+#: c-typeck.c:6669 cp/decl.c:5538
+#, gcc-internal-format
+msgid "opaque vector types cannot be initialized"
+msgstr ""
+
+#: c-typeck.c:6884
+#, gcc-internal-format
+msgid "extra brace group at end of initializer"
+msgstr ""
+
+#: c-typeck.c:6905
+#, gcc-internal-format
+msgid "missing braces around initializer"
+msgstr ""
+
+#: c-typeck.c:6966
+#, gcc-internal-format
+msgid "braces around scalar initializer"
+msgstr ""
+
+#: c-typeck.c:7026
+#, gcc-internal-format
+msgid "initialization of flexible array member in a nested context"
+msgstr ""
+
+#: c-typeck.c:7065
+#, gcc-internal-format
+msgid "missing initializer"
+msgstr ""
+
+#: c-typeck.c:7087
+#, gcc-internal-format
+msgid "empty scalar initializer"
+msgstr ""
+
+#: c-typeck.c:7092
+#, gcc-internal-format
+msgid "extra elements in scalar initializer"
+msgstr ""
+
+#: c-typeck.c:7203 c-typeck.c:7284
+#, gcc-internal-format
+msgid "array index in non-array initializer"
+msgstr ""
+
+#: c-typeck.c:7208 c-typeck.c:7340
+#, gcc-internal-format
+msgid "field name not in record or union initializer"
+msgstr ""
+
+#: c-typeck.c:7257
+#, gcc-internal-format
+msgid "array index in initializer not of integer type"
+msgstr ""
+
+#: c-typeck.c:7266 c-typeck.c:7275
+#, gcc-internal-format
+msgid "array index in initializer is not an integer constant expression"
+msgstr ""
+
+#: c-typeck.c:7280 c-typeck.c:7282
+#, gcc-internal-format
+msgid "nonconstant array index in initializer"
+msgstr ""
+
+#: c-typeck.c:7286 c-typeck.c:7289
+#, gcc-internal-format
+msgid "array index in initializer exceeds array bounds"
+msgstr ""
+
+#: c-typeck.c:7303
+#, gcc-internal-format
+msgid "empty index range in initializer"
+msgstr ""
+
+#: c-typeck.c:7312
+#, gcc-internal-format
+msgid "array index range in initializer exceeds array bounds"
+msgstr ""
+
+#: c-typeck.c:7347
+#, gcc-internal-format
+msgid "unknown field %qE specified in initializer"
+msgstr ""
+
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
+#, gcc-internal-format
+msgid "initialized field with side-effects overwritten"
+msgstr ""
+
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
+#, gcc-internal-format
+msgid "initialized field overwritten"
+msgstr ""
+
+#: c-typeck.c:8173
+#, gcc-internal-format
+msgid "excess elements in char array initializer"
+msgstr ""
+
+#: c-typeck.c:8180 c-typeck.c:8241
+#, gcc-internal-format
+msgid "excess elements in struct initializer"
+msgstr ""
+
+#: c-typeck.c:8256
+#, gcc-internal-format
+msgid "non-static initialization of a flexible array member"
+msgstr ""
+
+#: c-typeck.c:8327
+#, gcc-internal-format
+msgid "excess elements in union initializer"
+msgstr ""
+
+#: c-typeck.c:8349
+#, gcc-internal-format
+msgid "traditional C rejects initialization of unions"
+msgstr ""
+
+#: c-typeck.c:8417
+#, gcc-internal-format
+msgid "excess elements in array initializer"
+msgstr ""
+
+#: c-typeck.c:8451
+#, gcc-internal-format
+msgid "excess elements in vector initializer"
+msgstr ""
+
+#: c-typeck.c:8483
+#, gcc-internal-format
+msgid "excess elements in scalar initializer"
+msgstr ""
+
+#: c-typeck.c:8707
+#, gcc-internal-format
+msgid "ISO C forbids %<goto *expr;%>"
+msgstr ""
+
+#: c-typeck.c:8729 cp/typeck.c:7766
+#, gcc-internal-format
+msgid "function declared %<noreturn%> has a %<return%> statement"
+msgstr ""
+
+#: c-typeck.c:8752
+#, gcc-internal-format
+msgid "%<return%> with no value, in function returning non-void"
+msgstr ""
+
+#: c-typeck.c:8762
+#, gcc-internal-format
+msgid "%<return%> with a value, in function returning void"
+msgstr ""
+
+#: c-typeck.c:8764
+#, gcc-internal-format
+msgid "ISO C forbids %<return%> with expression, in function returning void"
+msgstr ""
+
+#: c-typeck.c:8825
+#, gcc-internal-format
+msgid "function returns address of local variable"
+msgstr ""
+
+#: c-typeck.c:8898 cp/semantics.c:1045
+#, gcc-internal-format
+msgid "switch quantity not an integer"
+msgstr ""
+
+#: c-typeck.c:8911
+#, gcc-internal-format
+msgid "%<long%> switch expression not converted to %<int%> in ISO C"
+msgstr ""
+
+#: c-typeck.c:8947 c-typeck.c:8955
+#, gcc-internal-format
+msgid "case label is not an integer constant expression"
+msgstr ""
+
+#: c-typeck.c:8961 cp/parser.c:8827
+#, gcc-internal-format
+msgid "case label not within a switch statement"
+msgstr ""
+
+#: c-typeck.c:8963
+#, gcc-internal-format
+msgid "%<default%> label not within a switch statement"
+msgstr ""
+
+#: c-typeck.c:9046 cp/parser.c:9127
+#, gcc-internal-format
+msgid "suggest explicit braces to avoid ambiguous %<else%>"
+msgstr ""
+
+#: c-typeck.c:9155 cp/parser.c:9854
+#, gcc-internal-format
+msgid "break statement not within loop or switch"
+msgstr ""
+
+#: c-typeck.c:9157 cp/parser.c:9875
+#, gcc-internal-format
+msgid "continue statement not within a loop"
+msgstr ""
+
+#: c-typeck.c:9162 cp/parser.c:9865
+#, gcc-internal-format
+msgid "break statement used with OpenMP for loop"
+msgstr ""
+
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
+#, gcc-internal-format
+msgid "statement with no effect"
+msgstr ""
+
+#: c-typeck.c:9214
+#, gcc-internal-format
+msgid "expression statement has incomplete type"
+msgstr ""
+
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
+#, gcc-internal-format
+msgid "conversion of scalar to vector involves truncation"
+msgstr ""
+
+#: c-typeck.c:9950 cp/typeck.c:3939
+#, gcc-internal-format
+msgid "right shift count is negative"
+msgstr ""
+
+#: c-typeck.c:9961 cp/typeck.c:3946
+#, gcc-internal-format
+msgid "right shift count >= width of type"
+msgstr ""
+
+#: c-typeck.c:10002 cp/typeck.c:3968
+#, gcc-internal-format
+msgid "left shift count is negative"
+msgstr ""
+
+#: c-typeck.c:10009 cp/typeck.c:3974
+#, gcc-internal-format
+msgid "left shift count >= width of type"
+msgstr ""
+
+#: c-typeck.c:10032 c-typeck.c:10169
+#, gcc-internal-format
+msgid "comparing vectors with different element types"
+msgstr ""
+
+#: c-typeck.c:10039 c-typeck.c:10176
+#, gcc-internal-format
+msgid "comparing vectors with different number of elements"
+msgstr ""
+
+#: c-typeck.c:10055 cp/typeck.c:4020
+#, gcc-internal-format
+msgid "comparing floating point with == or != is unsafe"
+msgstr ""
+
+#: c-typeck.c:10072 c-typeck.c:10092
+#, gcc-internal-format
+msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
+msgstr ""
+
+#: c-typeck.c:10078 c-typeck.c:10098
+#, gcc-internal-format
+msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
+msgstr ""
+
+#: c-typeck.c:10119 c-typeck.c:10219
+#, gcc-internal-format
+msgid "comparison of pointers to disjoint address spaces"
+msgstr ""
+
+#: c-typeck.c:10126 c-typeck.c:10132
+#, gcc-internal-format
+msgid "ISO C forbids comparison of %<void *%> with function pointer"
+msgstr ""
+
+#: c-typeck.c:10139 c-typeck.c:10229
+#, gcc-internal-format
+msgid "comparison of distinct pointer types lacks a cast"
+msgstr ""
+
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
+#, gcc-internal-format
+msgid "comparison between pointer and integer"
+msgstr ""
+
+#: c-typeck.c:10207
+#, gcc-internal-format
+msgid "comparison of complete and incomplete pointers"
+msgstr ""
+
+#: c-typeck.c:10209
+#, gcc-internal-format
+msgid "ISO C forbids ordered comparisons of pointers to functions"
+msgstr ""
+
+#: c-typeck.c:10214
+#, gcc-internal-format
+msgid "ordered comparison of pointer with null pointer"
+msgstr ""
+
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
+#, gcc-internal-format
+msgid "ordered comparison of pointer with integer zero"
+msgstr ""
+
+#: c-typeck.c:10294 cp/typeck.c:4350
+#, gcc-internal-format
+msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
+msgstr ""
+
+#: c-typeck.c:10578
+#, gcc-internal-format
+msgid "used array that cannot be converted to pointer where scalar is required"
+msgstr ""
+
+#: c-typeck.c:10582
+#, gcc-internal-format
+msgid "used struct type value where scalar is required"
+msgstr ""
+
+#: c-typeck.c:10586
+#, gcc-internal-format
+msgid "used union type value where scalar is required"
+msgstr ""
+
+#: c-typeck.c:10597
+#, gcc-internal-format
+msgid "used vector type where scalar is required"
+msgstr ""
+
+#: c-typeck.c:10751 cp/semantics.c:4202
+#, gcc-internal-format
+msgid "%qE has invalid type for %<reduction%>"
+msgstr ""
+
+#: c-typeck.c:10788 cp/semantics.c:4217
+#, gcc-internal-format
+msgid "%qE has invalid type for %<reduction(%s)%>"
+msgstr ""
+
+#: c-typeck.c:10805 cp/semantics.c:4227
+#, gcc-internal-format
+msgid "%qE must be %<threadprivate%> for %<copyin%>"
+msgstr ""
+
+#: c-typeck.c:10815 cp/semantics.c:3995
+#, gcc-internal-format
+msgid "%qE is not a variable in clause %qs"
+msgstr ""
+
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
+#, gcc-internal-format
+msgid "%qE appears more than once in data clauses"
+msgstr ""
+
+#: c-typeck.c:10838 cp/semantics.c:4018
+#, gcc-internal-format
+msgid "%qE is not a variable in clause %<firstprivate%>"
+msgstr ""
+
+#: c-typeck.c:10860 cp/semantics.c:4040
+#, gcc-internal-format
+msgid "%qE is not a variable in clause %<lastprivate%>"
+msgstr ""
+
+#: c-typeck.c:10928 cp/semantics.c:4273
+#, gcc-internal-format
+msgid "%qE is predetermined %qs for %qs"
+msgstr ""
+
+#: c-typeck.c:11030
+#, gcc-internal-format
+msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
+msgstr ""
+
+#: calls.c:2316
+#, gcc-internal-format
+msgid "function call has aggregate value"
+msgstr ""
+
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
+#, gcc-internal-format
+msgid "size of variable %q+D is too large"
+msgstr ""
+
+#: cfgexpand.c:4421
+#, gcc-internal-format
+msgid "stack protector not protecting local variables: variable length buffer"
+msgstr ""
+
+#: cfgexpand.c:4425
+#, gcc-internal-format, gfc-internal-format
+msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
+msgstr ""
+
+#: cfghooks.c:110
+#, gcc-internal-format, gfc-internal-format
+msgid "bb %d on wrong place"
+msgstr ""
+
+#: cfghooks.c:116
+#, gcc-internal-format, gfc-internal-format
+msgid "prev_bb of %d should be %d, not %d"
+msgstr ""
+
+#: cfghooks.c:133
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Block %i has loop_father, but there are no loops"
+msgstr ""
+
+#: cfghooks.c:139
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Block %i lacks loop_father"
+msgstr ""
+
+#: cfghooks.c:145
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Wrong count of block %i %i"
+msgstr ""
+
+#: cfghooks.c:151
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Wrong frequency of block %i %i"
+msgstr ""
+
+#: cfghooks.c:159
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Duplicate edge %i->%i"
+msgstr ""
+
+#: cfghooks.c:165
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
+msgstr ""
+
+#: cfghooks.c:171
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Wrong count of edge %i->%i %i"
+msgstr ""
+
+#: cfghooks.c:183
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Basic block %d succ edge is corrupted"
+msgstr ""
+
+#: cfghooks.c:197
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong amount of branch edges after unconditional jump %i"
+msgstr ""
+
+#: cfghooks.c:205 cfghooks.c:216
+#, gcc-internal-format, gfc-internal-format
+msgid "basic block %d pred edge is corrupted"
+msgstr ""
+
+#: cfghooks.c:217
+#, gcc-internal-format, gfc-internal-format
+msgid "its dest_idx should be %d, not %d"
+msgstr ""
+
+#: cfghooks.c:246
+#, gcc-internal-format, gfc-internal-format
+msgid "basic block %i edge lists are corrupted"
+msgstr ""
+
+#: cfghooks.c:259
+#, gcc-internal-format
+msgid "verify_flow_info failed"
+msgstr ""
+
+#: cfghooks.c:320
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support redirect_edge_and_branch"
+msgstr ""
+
+#: cfghooks.c:340
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support can_remove_branch_p"
+msgstr ""
+
+#: cfghooks.c:393
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support redirect_edge_and_branch_force"
+msgstr ""
+
+#: cfghooks.c:431
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support split_block"
+msgstr ""
+
+#: cfghooks.c:483
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support move_block_after"
+msgstr ""
+
+#: cfghooks.c:496
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support delete_basic_block"
+msgstr ""
+
+#: cfghooks.c:546
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support split_edge"
+msgstr ""
+
+#: cfghooks.c:619
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support create_basic_block"
+msgstr ""
+
+#: cfghooks.c:647
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support can_merge_blocks_p"
+msgstr ""
+
+#: cfghooks.c:658
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support predict_edge"
+msgstr ""
+
+#: cfghooks.c:667
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support predicted_by_p"
+msgstr ""
+
+#: cfghooks.c:681
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support merge_blocks"
+msgstr ""
+
+#: cfghooks.c:734
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support make_forwarder_block"
+msgstr ""
+
+#: cfghooks.c:889
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support force_nonfallthru"
+msgstr ""
+
+#: cfghooks.c:917
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support can_duplicate_block_p"
+msgstr ""
+
+#: cfghooks.c:939
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support duplicate_block"
+msgstr ""
+
+#: cfghooks.c:1014
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support block_ends_with_call_p"
+msgstr ""
+
+#: cfghooks.c:1025
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support block_ends_with_condjump_p"
+msgstr ""
+
+#: cfghooks.c:1043
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support flow_call_edges_add"
+msgstr ""
+
+#: cfgloop.c:1335
+#, gcc-internal-format, gfc-internal-format
+msgid "size of loop %d should be %d, not %d"
+msgstr ""
+
+#: cfgloop.c:1349
+#, gcc-internal-format, gfc-internal-format
+msgid "bb %d do not belong to loop %d"
+msgstr ""
+
+#: cfgloop.c:1364
+#, gcc-internal-format
+msgid "loop %d%'s header does not have exactly 2 entries"
+msgstr ""
+
+#: cfgloop.c:1371
+#, gcc-internal-format
+msgid "loop %d%'s latch does not have exactly 1 successor"
+msgstr ""
+
+#: cfgloop.c:1376
+#, gcc-internal-format
+msgid "loop %d%'s latch does not have header as successor"
+msgstr ""
+
+#: cfgloop.c:1381
+#, gcc-internal-format
+msgid "loop %d%'s latch does not belong directly to it"
+msgstr ""
+
+#: cfgloop.c:1387
+#, gcc-internal-format
+msgid "loop %d%'s header does not belong directly to it"
+msgstr ""
+
+#: cfgloop.c:1393
+#, gcc-internal-format
+msgid "loop %d%'s latch is marked as part of irreducible region"
+msgstr ""
+
+#: cfgloop.c:1426
+#, gcc-internal-format, gfc-internal-format
+msgid "basic block %d should be marked irreducible"
+msgstr ""
+
+#: cfgloop.c:1432
+#, gcc-internal-format, gfc-internal-format
+msgid "basic block %d should not be marked irreducible"
+msgstr ""
+
+#: cfgloop.c:1440
+#, gcc-internal-format, gfc-internal-format
+msgid "edge from %d to %d should be marked irreducible"
+msgstr ""
+
+#: cfgloop.c:1447
+#, gcc-internal-format, gfc-internal-format
+msgid "edge from %d to %d should not be marked irreducible"
+msgstr ""
+
+#: cfgloop.c:1462
+#, gcc-internal-format, gfc-internal-format
+msgid "corrupted head of the exits list of loop %d"
+msgstr ""
+
+#: cfgloop.c:1480
+#, gcc-internal-format, gfc-internal-format
+msgid "corrupted exits list of loop %d"
+msgstr ""
+
+#: cfgloop.c:1489
+#, gcc-internal-format, gfc-internal-format
+msgid "nonempty exits list of loop %d, but exits are not recorded"
+msgstr ""
+
+#: cfgloop.c:1515
+#, gcc-internal-format, gfc-internal-format
+msgid "exit %d->%d not recorded"
+msgstr ""
+
+#: cfgloop.c:1533
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong list of exited loops for edge %d->%d"
+msgstr ""
+
+#: cfgloop.c:1542
+#, gcc-internal-format
+msgid "too many loop exits recorded"
+msgstr ""
+
+#: cfgloop.c:1553
+#, gcc-internal-format, gfc-internal-format
+msgid "%d exits recorded for loop %d (having %d exits)"
+msgstr ""
+
+#: cfgrtl.c:1835
+#, gcc-internal-format, gfc-internal-format
+msgid "BB_RTL flag not set for block %d"
+msgstr ""
+
+#: cfgrtl.c:1842
+#, gcc-internal-format, gfc-internal-format
+msgid "insn %d basic block pointer is %d, should be %d"
+msgstr ""
+
+#: cfgrtl.c:1853
+#, gcc-internal-format, gfc-internal-format
+msgid "insn %d in header of bb %d has non-NULL basic block"
+msgstr ""
+
+#: cfgrtl.c:1861
+#, gcc-internal-format, gfc-internal-format
+msgid "insn %d in footer of bb %d has non-NULL basic block"
+msgstr ""
+
+#: cfgrtl.c:1883
+#, gcc-internal-format
+msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
+msgstr ""
+
+#: cfgrtl.c:1902
+#, gcc-internal-format
+msgid "EDGE_CROSSING incorrectly set across same section"
+msgstr ""
+
+#: cfgrtl.c:1907
+#, gcc-internal-format, gfc-internal-format
+msgid "fallthru edge crosses section boundary (bb %i)"
+msgstr ""
+
+#: cfgrtl.c:1913
+#, gcc-internal-format, gfc-internal-format
+msgid "EH edge crosses section boundary (bb %i)"
+msgstr ""
+
+#: cfgrtl.c:1920
+#, gcc-internal-format
+msgid "EDGE_CROSSING missing across section boundary"
+msgstr ""
+
+#: cfgrtl.c:1943
+#, gcc-internal-format, gfc-internal-format
+msgid "missing REG_EH_REGION note in the end of bb %i"
+msgstr ""
+
+#: cfgrtl.c:1948
+#, gcc-internal-format, gfc-internal-format
+msgid "too many eh edges %i"
+msgstr ""
+
+#: cfgrtl.c:1956
+#, gcc-internal-format, gfc-internal-format
+msgid "too many outgoing branch edges from bb %i"
+msgstr ""
+
+#: cfgrtl.c:1961
+#, gcc-internal-format, gfc-internal-format
+msgid "fallthru edge after unconditional jump %i"
+msgstr ""
+
+#: cfgrtl.c:1966
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong number of branch edges after unconditional jump %i"
+msgstr ""
+
+#: cfgrtl.c:1973
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong amount of branch edges after conditional jump %i"
+msgstr ""
+
+#: cfgrtl.c:1979
+#, gcc-internal-format, gfc-internal-format
+msgid "call edges for non-call insn in bb %i"
+msgstr ""
+
+#: cfgrtl.c:1988
+#, gcc-internal-format, gfc-internal-format
+msgid "abnormal edges for no purpose in bb %i"
+msgstr ""
+
+#: cfgrtl.c:2000
+#, gcc-internal-format, gfc-internal-format
+msgid "insn %d inside basic block %d but block_for_insn is NULL"
+msgstr ""
+
+#: cfgrtl.c:2004
+#, gcc-internal-format, gfc-internal-format
+msgid "insn %d inside basic block %d but block_for_insn is %i"
+msgstr ""
+
+#: cfgrtl.c:2018 cfgrtl.c:2028
+#, gcc-internal-format, gfc-internal-format
+msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
+msgstr ""
+
+#: cfgrtl.c:2041
+#, gcc-internal-format, gfc-internal-format
+msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
+msgstr ""
+
+#: cfgrtl.c:2051
+#, gcc-internal-format, gfc-internal-format
+msgid "in basic block %d:"
+msgstr ""
+
+#: cfgrtl.c:2103 cfgrtl.c:2193
+#, gcc-internal-format, gfc-internal-format
+msgid "insn %d outside of basic blocks has non-NULL bb field"
+msgstr ""
+
+#: cfgrtl.c:2111
+#, gcc-internal-format, gfc-internal-format
+msgid "end insn %d for block %d not found in the insn stream"
+msgstr ""
+
+#: cfgrtl.c:2124
+#, gcc-internal-format, gfc-internal-format
+msgid "insn %d is in multiple basic blocks (%d and %d)"
+msgstr ""
+
+#: cfgrtl.c:2136
+#, gcc-internal-format, gfc-internal-format
+msgid "head insn %d for block %d not found in the insn stream"
+msgstr ""
+
+#: cfgrtl.c:2153
+#, gcc-internal-format, gfc-internal-format
+msgid "missing barrier after block %i"
+msgstr ""
+
+#: cfgrtl.c:2169
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
+msgstr ""
+
+#: cfgrtl.c:2178
+#, gcc-internal-format, gfc-internal-format
+msgid "verify_flow_info: Incorrect fallthru %i->%i"
+msgstr ""
+
+#: cfgrtl.c:2211
+#, gcc-internal-format
+msgid "basic blocks not laid down consecutively"
+msgstr ""
+
+#: cfgrtl.c:2248
+#, gcc-internal-format, gfc-internal-format
+msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
+msgstr ""
+
+#: cgraph.c:1987
+#, gcc-internal-format
+msgid "%D renamed after being referenced in assembly"
+msgstr ""
+
+#: cgraphunit.c:411
+#, gcc-internal-format
+msgid "caller edge count is negative"
+msgstr ""
+
+#: cgraphunit.c:416
+#, gcc-internal-format
+msgid "caller edge frequency is negative"
+msgstr ""
+
+#: cgraphunit.c:421
+#, gcc-internal-format
+msgid "caller edge frequency is too large"
+msgstr ""
+
+#: cgraphunit.c:437
+#, gcc-internal-format, gfc-internal-format
+msgid "caller edge frequency %i does not match BB frequency %i"
+msgstr ""
+
+#: cgraphunit.c:507
+#, gcc-internal-format, gfc-internal-format
+msgid "aux field set for edge %s->%s"
+msgstr ""
+
+#: cgraphunit.c:514
+#, gcc-internal-format
+msgid "execution count is negative"
+msgstr ""
+
+#: cgraphunit.c:519
+#, gcc-internal-format
+msgid "externally visible inline clone"
+msgstr ""
+
+#: cgraphunit.c:524
+#, gcc-internal-format
+msgid "inline clone with address taken"
+msgstr ""
+
+#: cgraphunit.c:529
+#, gcc-internal-format
+msgid "inline clone is needed"
+msgstr ""
+
+#: cgraphunit.c:536
+#, gcc-internal-format, gfc-internal-format
+msgid "aux field set for indirect edge from %s"
+msgstr ""
+
+#: cgraphunit.c:543
+#, gcc-internal-format, gfc-internal-format
+msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
+msgstr ""
+
+#: cgraphunit.c:560
+#, gcc-internal-format
+msgid "inlined_to pointer is wrong"
+msgstr ""
+
+#: cgraphunit.c:565
+#, gcc-internal-format
+msgid "multiple inline callers"
+msgstr ""
+
+#: cgraphunit.c:572
+#, gcc-internal-format
+msgid "inlined_to pointer set for noninline callers"
+msgstr ""
+
+#: cgraphunit.c:581
+#, gcc-internal-format
+msgid "inlined_to pointer is set but no predecessors found"
+msgstr ""
+
+#: cgraphunit.c:586
+#, gcc-internal-format
+msgid "inlined_to pointer refers to itself"
+msgstr ""
+
+#: cgraphunit.c:592
+#, gcc-internal-format
+msgid "node not found in cgraph_hash"
+msgstr ""
+
+#: cgraphunit.c:604
+#, gcc-internal-format
+msgid "node has wrong clone_of"
+msgstr ""
+
+#: cgraphunit.c:616
+#, gcc-internal-format
+msgid "node has wrong clone list"
+msgstr ""
+
+#: cgraphunit.c:622
+#, gcc-internal-format
+msgid "node is in clone list but it is not clone"
+msgstr ""
+
+#: cgraphunit.c:627
+#, gcc-internal-format
+msgid "node has wrong prev_clone pointer"
+msgstr ""
+
+#: cgraphunit.c:632
+#, gcc-internal-format
+msgid "double linked list of clones corrupted"
+msgstr ""
+
+#: cgraphunit.c:641
+#, gcc-internal-format
+msgid "non-DECL_ONE_ONLY node in a same_comdat_group list"
+msgstr ""
+
+#: cgraphunit.c:646
+#, gcc-internal-format
+msgid "node is alone in a comdat group"
+msgstr ""
+
+#: cgraphunit.c:653
+#, gcc-internal-format
+msgid "same_comdat_group is not a circular list"
+msgstr ""
+
+#: cgraphunit.c:670
+#, gcc-internal-format
+msgid "Alias has call edges"
+msgstr ""
+
+#: cgraphunit.c:676
+#, gcc-internal-format
+msgid "Alias has non-alias reference"
+msgstr ""
+
+#: cgraphunit.c:681
+#, gcc-internal-format
+msgid "Alias has more than one alias reference"
+msgstr ""
+
+#: cgraphunit.c:688
+#, gcc-internal-format
+msgid "Analyzed alias has no reference"
+msgstr ""
+
+#: cgraphunit.c:696
+#, gcc-internal-format
+msgid "No edge out of thunk node"
+msgstr ""
+
+#: cgraphunit.c:701
+#, gcc-internal-format
+msgid "More than one edge out of thunk node"
+msgstr ""
+
+#: cgraphunit.c:706
+#, gcc-internal-format
+msgid "Thunk is not supposed to have body"
+msgstr ""
+
+#: cgraphunit.c:736
+#, gcc-internal-format
+msgid "shared call_stmt:"
+msgstr ""
+
+#: cgraphunit.c:744
+#, gcc-internal-format
+msgid "edge points to wrong declaration:"
+msgstr ""
+
+#: cgraphunit.c:753
+#, gcc-internal-format
+msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
+msgstr ""
+
+#: cgraphunit.c:763
+#, gcc-internal-format
+msgid "missing callgraph edge for call stmt:"
+msgstr ""
+
+#: cgraphunit.c:779
+#, gcc-internal-format, gfc-internal-format
+msgid "edge %s->%s has no corresponding call_stmt"
+msgstr ""
+
+#: cgraphunit.c:791
+#, gcc-internal-format, gfc-internal-format
+msgid "an indirect edge from %s has no corresponding call_stmt"
+msgstr ""
+
+#: cgraphunit.c:802
+#, gcc-internal-format
+msgid "verify_cgraph_node failed"
+msgstr ""
+
+#: cgraphunit.c:851
+#, gcc-internal-format
+msgid "function %q+D part of alias cycle"
+msgstr ""
+
+#: cgraphunit.c:956
+#, gcc-internal-format
+msgid "%<weakref%> attribute should be accompanied with an %<alias%> attribute"
+msgstr ""
+
+#: cgraphunit.c:1011 cgraphunit.c:1056
+#, gcc-internal-format
+msgid "%<externally_visible%> attribute have effect only on public objects"
+msgstr ""
+
+#: cgraphunit.c:1020
+#, gcc-internal-format
+msgid "%<weakref%> attribute ignored because function is defined"
+msgstr ""
+
+#: cgraphunit.c:1032
+#, gcc-internal-format
+msgid "always_inline function might not be inlinable"
+msgstr ""
+
+#: cgraphunit.c:1066
+#, gcc-internal-format
+msgid "%<weakref%> attribute ignored because variable is initialized"
+msgstr ""
+
+#: cgraphunit.c:1420
+#, gcc-internal-format
+msgid "failed to reclaim unneeded function"
+msgstr ""
+
+#: cgraphunit.c:1447
+#, gcc-internal-format
+msgid "failed to reclaim unneeded function in same comdat group"
+msgstr ""
+
+#: cgraphunit.c:2251
+#, gcc-internal-format
+msgid "nodes with unreleased memory found"
+msgstr ""
+
+#: collect2.c:900
+#, gcc-internal-format
+msgid "COLLECT_LTO_WRAPPER must be set"
+msgstr ""
+
+#: collect2.c:1231
+#, gcc-internal-format
+msgid "no arguments"
+msgstr ""
+
+#: collect2.c:1442 opts.c:786
+#, gcc-internal-format
+msgid "LTO support has not been enabled in this configuration"
+msgstr ""
+
+#: collect2.c:1470
+#, gcc-internal-format
+msgid "can't open %s: %m"
+msgstr ""
+
+#: collect2.c:1584
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown demangling style '%s'"
+msgstr ""
+
+#: collect2.c:1680 collect2.c:1863 collect2.c:1898
+#, gcc-internal-format
+msgid "fopen %s: %m"
+msgstr ""
+
+#: collect2.c:1683 collect2.c:1868 collect2.c:1901
+#, gcc-internal-format
+msgid "fclose %s: %m"
+msgstr ""
+
+#: collect2.c:1965
+#, gcc-internal-format
+msgid "can't get program status: %m"
+msgstr ""
+
+#: collect2.c:1973
+#, gcc-internal-format, gfc-internal-format
+msgid "%s terminated with signal %d [%s]%s"
+msgstr ""
+
+#: collect2.c:2034
+#, gcc-internal-format, gfc-internal-format
+msgid "could not open response file %s"
+msgstr ""
+
+#: collect2.c:2039
+#, gcc-internal-format, gfc-internal-format
+msgid "could not write to response file %s"
+msgstr ""
+
+#: collect2.c:2044
+#, gcc-internal-format, gfc-internal-format
+msgid "could not close response file %s"
+msgstr ""
+
+#: collect2.c:2077
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot find '%s'"
+msgstr ""
+
+#: collect2.c:2081 collect2.c:2617 collect2.c:2813 gcc.c:2658
+#, gcc-internal-format
+msgid "pex_init failed: %m"
+msgstr ""
+
+#: collect2.c:2090 collect2.c:2626 collect2.c:2821 gcc.c:7027
+#, gcc-internal-format
+msgid "%s: %m"
+msgstr ""
+
+#: collect2.c:2591
+#, gcc-internal-format
+msgid "cannot find 'nm'"
+msgstr ""
+
+#: collect2.c:2639
+#, gcc-internal-format
+msgid "can't open nm output: %m"
+msgstr ""
+
+#: collect2.c:2722
+#, gcc-internal-format, gfc-internal-format
+msgid "init function found in object %s"
+msgstr ""
+
+#: collect2.c:2732
+#, gcc-internal-format, gfc-internal-format
+msgid "fini function found in object %s"
+msgstr ""
+
+#: collect2.c:2788
+#, gcc-internal-format
+msgid "cannot find 'ldd'"
+msgstr ""
+
+#: collect2.c:2834
+#, gcc-internal-format
+msgid "can't open ldd output: %m"
+msgstr ""
+
+#: collect2.c:2852
+#, gcc-internal-format, gfc-internal-format
+msgid "dynamic dependency %s not found"
+msgstr ""
+
+#: collect2.c:2864
+#, gcc-internal-format, gfc-internal-format
+msgid "unable to open dynamic dependency '%s'"
+msgstr ""
+
+#: collect2.c:3025
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: not a COFF file"
+msgstr ""
+
+#: collect2.c:3155
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: cannot open as COFF file"
+msgstr ""
+
+#: collect2.c:3213
+#, gcc-internal-format, gfc-internal-format
+msgid "library lib%s not found"
+msgstr ""
+
+#: convert.c:83
+#, gcc-internal-format
+msgid "cannot convert to a pointer type"
+msgstr ""
+
+#: convert.c:384
+#, gcc-internal-format
+msgid "pointer value used where a floating point value was expected"
+msgstr ""
+
+#: convert.c:388
+#, gcc-internal-format
+msgid "aggregate value used where a float was expected"
+msgstr ""
+
+#: convert.c:413
+#, gcc-internal-format
+msgid "conversion to incomplete type"
+msgstr ""
+
+#: convert.c:881 convert.c:957
+#, gcc-internal-format
+msgid "can%'t convert between vector values of different size"
+msgstr ""
+
+#: convert.c:887
+#, gcc-internal-format
+msgid "aggregate value used where an integer was expected"
+msgstr ""
+
+#: convert.c:937
+#, gcc-internal-format
+msgid "pointer value used where a complex was expected"
+msgstr ""
+
+#: convert.c:941
+#, gcc-internal-format
+msgid "aggregate value used where a complex was expected"
+msgstr ""
+
+#: convert.c:963
+#, gcc-internal-format
+msgid "can%'t convert value to a vector"
+msgstr ""
+
+#: convert.c:1002
+#, gcc-internal-format
+msgid "aggregate value used where a fixed-point was expected"
+msgstr ""
+
+#: coverage.c:189
+#, gcc-internal-format
+msgid "%qs is not a gcov data file"
+msgstr ""
+
+#: coverage.c:200
+#, gcc-internal-format
+msgid "%qs is version %q.*s, expected version %q.*s"
+msgstr ""
+
+#: coverage.c:276 coverage.c:285
+#, gcc-internal-format, gfc-internal-format
+msgid "Profile data for function %u is corrupted"
+msgstr ""
+
+#: coverage.c:277
+#, gcc-internal-format
+msgid "checksum is (%x,%x) instead of (%x,%x)"
+msgstr ""
+
+#: coverage.c:286
+#, gcc-internal-format, gfc-internal-format
+msgid "number of counters is %d instead of %d"
+msgstr ""
+
+#: coverage.c:292
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot merge separate %s counters for function %u"
+msgstr ""
+
+#: coverage.c:311
+#, gcc-internal-format
+msgid "%qs has overflowed"
+msgstr ""
+
+#: coverage.c:361
+#, gcc-internal-format
+msgid "the control flow of function %qE does not match its profile data (counter %qs)"
+msgstr ""
+
+#: coverage.c:365
+#, gcc-internal-format
+msgid "use -Wno-error=coverage-mismatch to tolerate the mismatch but performance may drop if the function is hot"
+msgstr ""
+
+#: coverage.c:371
+#, gcc-internal-format
+msgid "coverage mismatch ignored"
+msgstr ""
+
+#: coverage.c:373
+#, gcc-internal-format
+msgid "execution counts estimated"
+msgstr ""
+
+#: coverage.c:374
+#, gcc-internal-format
+msgid "execution counts assumed to be zero"
+msgstr ""
+
+#: coverage.c:377
+#, gcc-internal-format
+msgid "this can result in poorly optimized code"
+msgstr ""
+
+#: coverage.c:385
+#, gcc-internal-format
+msgid "source locations for function %qE have changed, the profile data may be out of date"
+msgstr ""
+
+#: coverage.c:603
+#, gcc-internal-format
+msgid "error writing %qs"
+msgstr ""
+
+#: coverage.c:1111
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot open %s"
+msgstr ""
+
+#: cppspec.c:92
+#, gcc-internal-format
+msgid "%qs is not a valid option to the preprocessor"
+msgstr ""
+
+#: cppspec.c:111
+#, gcc-internal-format
+msgid "too many input files"
+msgstr ""
+
+#: cprop.c:1729 gcse.c:3646
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: %d basic blocks and %d edges/basic block"
+msgstr ""
+
+#: cprop.c:1742 gcse.c:3659
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: %d basic blocks and %d registers"
+msgstr ""
+
+#: data-streamer-in.c:52
+#, gcc-internal-format
+msgid "bytecode stream: string too long for the string table"
+msgstr ""
+
+#: data-streamer-in.c:83
+#, gcc-internal-format
+msgid "bytecode stream: found non-null terminated string"
+msgstr ""
+
+#: dbgcnt.c:135
+#, gcc-internal-format
+msgid "cannot find a valid counter:value pair:"
+msgstr ""
+
+#: dbgcnt.c:136
+#, gcc-internal-format, gfc-internal-format
+msgid "-fdbg-cnt=%s"
+msgstr ""
+
+#: dbgcnt.c:137
+#, gcc-internal-format, gfc-internal-format
+msgid " %s"
+msgstr ""
+
+#: dbxout.c:3363
+#, gcc-internal-format
+msgid "common symbol debug info is not structured as symbol+offset"
+msgstr ""
+
+#: diagnostic.c:899
+#, gcc-internal-format, gfc-internal-format
+msgid "in %s, at %s:%d"
+msgstr ""
+
+#: dominance.c:1027
+#, gcc-internal-format, gfc-internal-format
+msgid "dominator of %d status unknown"
+msgstr ""
+
+#: dominance.c:1034
+#, gcc-internal-format, gfc-internal-format
+msgid "dominator of %d should be %d, not %d"
+msgstr ""
+
+#: dwarf2out.c:1035
+#, gcc-internal-format
+msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
+msgstr ""
+
+#: dwarf2out.c:10710
+#, gcc-internal-format, gfc-internal-format
+msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
+msgstr ""
+
+#: emit-rtl.c:2556
+#, gcc-internal-format
+msgid "invalid rtl sharing found in the insn"
+msgstr ""
+
+#: emit-rtl.c:2558
+#, gcc-internal-format
+msgid "shared rtx"
+msgstr ""
+
+#: emit-rtl.c:2560
+#, gcc-internal-format
+msgid "internal consistency failure"
+msgstr ""
+
+#: emit-rtl.c:3691
+#, gcc-internal-format
+msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
+msgstr ""
+
+#: errors.c:133
+#, gcc-internal-format, gfc-internal-format
+msgid "abort in %s, at %s:%d"
+msgstr ""
+
+#: except.c:2037
+#, gcc-internal-format
+msgid "argument of %<__builtin_eh_return_regno%> must be constant"
+msgstr ""
+
+#: except.c:2174
+#, gcc-internal-format
+msgid "__builtin_eh_return not supported on this target"
+msgstr ""
+
+#: except.c:3239 except.c:3264
+#, gcc-internal-format, gfc-internal-format
+msgid "region_array is corrupted for region %i"
+msgstr ""
+
+#: except.c:3252 except.c:3283
+#, gcc-internal-format, gfc-internal-format
+msgid "lp_array is corrupted for lp %i"
+msgstr ""
+
+#: except.c:3269
+#, gcc-internal-format, gfc-internal-format
+msgid "outer block of region %i is wrong"
+msgstr ""
+
+#: except.c:3274
+#, gcc-internal-format, gfc-internal-format
+msgid "negative nesting depth of region %i"
+msgstr ""
+
+#: except.c:3288
+#, gcc-internal-format, gfc-internal-format
+msgid "region of lp %i is wrong"
+msgstr ""
+
+#: except.c:3315
+#, gcc-internal-format, gfc-internal-format
+msgid "tree list ends on depth %i"
+msgstr ""
+
+#: except.c:3320
+#, gcc-internal-format
+msgid "region_array does not match region_tree"
+msgstr ""
+
+#: except.c:3325
+#, gcc-internal-format
+msgid "lp_array does not match region_tree"
+msgstr ""
+
+#: except.c:3332
+#, gcc-internal-format
+msgid "verify_eh_tree failed"
+msgstr ""
+
+#: explow.c:1444
+#, gcc-internal-format
+msgid "stack limits not supported on this target"
+msgstr ""
+
+#: expmed.c:1806
+#, gcc-internal-format
+msgid "multiple accesses to volatile structure member because of packed attribute"
+msgstr ""
+
+#: expmed.c:1810
+#, gcc-internal-format
+msgid "multiple accesses to volatile structure bitfield because of packed attribute"
+msgstr ""
+
+#: expmed.c:1820
+#, gcc-internal-format
+msgid "mis-aligned access used for structure member"
+msgstr ""
+
+#: expmed.c:1823
+#, gcc-internal-format
+msgid "mis-aligned access used for structure bitfield"
+msgstr ""
+
+#: expmed.c:1829
+#, gcc-internal-format
+msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
+msgstr ""
+
+#: expr.c:7498
+#, gcc-internal-format
+msgid "local frame unavailable (naked function?)"
+msgstr ""
+
+#: expr.c:9971
+#, gcc-internal-format
+msgid "%Kcall to %qs declared with attribute error: %s"
+msgstr ""
+
+#: expr.c:9978
+#, gcc-internal-format
+msgid "%Kcall to %qs declared with attribute warning: %s"
+msgstr ""
+
+#: final.c:1467
+#, gcc-internal-format
+msgid "invalid argument %qs to -fdebug-prefix-map"
+msgstr ""
+
+#: final.c:1575
+#, gcc-internal-format
+msgid "the frame size of %wd bytes is larger than %wd bytes"
+msgstr ""
+
+#: final.c:4430 toplev.c:1421 tree-optimize.c:173
+#, gcc-internal-format
+msgid "could not open final insn dump file %qs: %m"
+msgstr ""
+
+#: final.c:4483 tree-optimize.c:189
+#, gcc-internal-format
+msgid "could not close final insn dump file %qs: %m"
+msgstr ""
+
+#: fixed-value.c:103
+#, gcc-internal-format
+msgid "large fixed-point constant implicitly truncated to fixed-point type"
+msgstr ""
+
+#: fold-const.c:661
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when negating a division"
+msgstr ""
+
+#: fold-const.c:3456 fold-const.c:3468
+#, gcc-internal-format, gfc-internal-format
+msgid "comparison is always %d due to width of bit-field"
+msgstr ""
+
+#: fold-const.c:4853 tree-ssa-reassoc.c:1819
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when simplifying range test"
+msgstr ""
+
+#: fold-const.c:5289 fold-const.c:5303
+#, gcc-internal-format, gfc-internal-format
+msgid "comparison is always %d"
+msgstr ""
+
+#: fold-const.c:5436
+#, gcc-internal-format
+msgid "%<or%> of unmatched not-equal tests is always 1"
+msgstr ""
+
+#: fold-const.c:5441
+#, gcc-internal-format
+msgid "%<and%> of mutually exclusive equal-tests is always 0"
+msgstr ""
+
+#: fold-const.c:8675
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when reducing constant in comparison"
+msgstr ""
+
+#: fold-const.c:8840
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C1 +- C2"
+msgstr ""
+
+#: fold-const.c:9103
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when combining constants around a comparison"
+msgstr ""
+
+#: fold-const.c:14225
+#, gcc-internal-format
+msgid "fold check: original tree changed by fold"
+msgstr ""
+
+#: function.c:252
+#, gcc-internal-format
+msgid "total size of local objects too large"
+msgstr ""
+
+#: function.c:1732 gimplify.c:5163
+#, gcc-internal-format
+msgid "impossible constraint in %<asm%>"
+msgstr ""
+
+#: function.c:3959
+#, gcc-internal-format
+msgid "variable %q+D might be clobbered by %<longjmp%> or %<vfork%>"
+msgstr ""
+
+#: function.c:3980
+#, gcc-internal-format
+msgid "argument %q+D might be clobbered by %<longjmp%> or %<vfork%>"
+msgstr ""
+
+#: function.c:4502
+#, gcc-internal-format
+msgid "function returns an aggregate"
+msgstr ""
+
+#: function.c:4896
+#, gcc-internal-format
+msgid "unused parameter %q+D"
+msgstr ""
+
+#: gcc.c:1732 gcc.c:1752
+#, gcc-internal-format, gfc-internal-format
+msgid "specs %%include syntax malformed after %ld characters"
+msgstr ""
+
+#: gcc.c:1778 gcc.c:1787 gcc.c:1797 gcc.c:1807
+#, gcc-internal-format, gfc-internal-format
+msgid "specs %%rename syntax malformed after %ld characters"
+msgstr ""
+
+#: gcc.c:1817
+#, gcc-internal-format, gfc-internal-format
+msgid "specs %s spec was not found to be renamed"
+msgstr ""
+
+#: gcc.c:1824
+#, gcc-internal-format
+msgid "%s: attempt to rename spec %qs to already defined spec %qs"
+msgstr ""
+
+#: gcc.c:1845
+#, gcc-internal-format, gfc-internal-format
+msgid "specs unknown %% command after %ld characters"
+msgstr ""
+
+#: gcc.c:1856 gcc.c:1869
+#, gcc-internal-format, gfc-internal-format
+msgid "specs file malformed after %ld characters"
+msgstr ""
+
+#: gcc.c:1921
+#, gcc-internal-format
+msgid "spec file has no spec for linking"
+msgstr ""
+
+#: gcc.c:2450
+#, gcc-internal-format
+msgid "system path %qs is not absolute"
+msgstr ""
+
+#: gcc.c:2535
+#, gcc-internal-format
+msgid "-pipe not supported"
+msgstr ""
+
+#: gcc.c:2697
+#, gcc-internal-format
+msgid "failed to get exit status: %m"
+msgstr ""
+
+#: gcc.c:2703
+#, gcc-internal-format
+msgid "failed to get process times: %m"
+msgstr ""
+
+#: gcc.c:2729
+#, gcc-internal-format, gfc-internal-format
+msgid "%s (program %s)"
+msgstr ""
+
+#: gcc.c:3148 opts-common.c:986 opts-common.c:1058
+#, gcc-internal-format
+msgid "unrecognized command line option %qs"
+msgstr ""
+
+#: gcc.c:3401
+#, gcc-internal-format
+msgid "%qs is an unknown -save-temps option"
+msgstr ""
+
+#: gcc.c:3862
+#, gcc-internal-format
+msgid "-pipe ignored because -save-temps specified"
+msgstr ""
+
+#: gcc.c:3948
+#, gcc-internal-format
+msgid "%<-x %s%> after last input file has no effect"
+msgstr ""
+
+#: gcc.c:4115
+#, gcc-internal-format
+msgid "unable to locate default linker script %qs in the library search paths"
+msgstr ""
+
+#: gcc.c:4318
+#, gcc-internal-format
+msgid "switch %qs does not start with %<-%>"
+msgstr ""
+
+#: gcc.c:4321
+#, gcc-internal-format
+msgid "spec-generated switch is just %<-%>"
+msgstr ""
+
+#: gcc.c:4412
+#, gcc-internal-format, gfc-internal-format
+msgid "could not open temporary response file %s"
+msgstr ""
+
+#: gcc.c:4418
+#, gcc-internal-format, gfc-internal-format
+msgid "could not write to temporary response file %s"
+msgstr ""
+
+#: gcc.c:4424
+#, gcc-internal-format, gfc-internal-format
+msgid "could not close temporary response file %s"
+msgstr ""
+
+#: gcc.c:4547
+#, gcc-internal-format
+msgid "spec %qs invalid"
+msgstr ""
+
+#: gcc.c:4696
+#, gcc-internal-format
+msgid "spec %qs has invalid %<%%0%c%>"
+msgstr ""
+
+#: gcc.c:5006
+#, gcc-internal-format
+msgid "spec %qs has invalid %<%%W%c%>"
+msgstr ""
+
+#: gcc.c:5028
+#, gcc-internal-format
+msgid "spec %qs has invalid %<%%x%c%>"
+msgstr ""
+
+#. Catch the case where a spec string contains something like
+#. '%{foo:%*}'. i.e. there is no * in the pattern on the left
+#. hand side of the :.
+#: gcc.c:5216
+#, gcc-internal-format
+msgid "spec failure: %<%%*%> has not been initialized by pattern match"
+msgstr ""
+
+#: gcc.c:5259
+#, gcc-internal-format
+msgid "spec failure: unrecognized spec option %qc"
+msgstr ""
+
+#: gcc.c:5319
+#, gcc-internal-format
+msgid "unknown spec function %qs"
+msgstr ""
+
+#: gcc.c:5337
+#, gcc-internal-format
+msgid "error in args to spec function %qs"
+msgstr ""
+
+#: gcc.c:5385
+#, gcc-internal-format
+msgid "malformed spec function name"
+msgstr ""
+
+#. )
+#: gcc.c:5388
+#, gcc-internal-format
+msgid "no arguments for spec function"
+msgstr ""
+
+#: gcc.c:5407
+#, gcc-internal-format
+msgid "malformed spec function arguments"
+msgstr ""
+
+#: gcc.c:5668
+#, gcc-internal-format
+msgid "braced spec %qs is invalid at %qc"
+msgstr ""
+
+#: gcc.c:5756
+#, gcc-internal-format
+msgid "braced spec body %qs is invalid"
+msgstr ""
+
+#: gcc.c:6005
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: could not determine length of compare-debug file %s"
+msgstr ""
+
+#: gcc.c:6016
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: -fcompare-debug failure (length)"
+msgstr ""
+
+#: gcc.c:6026 gcc.c:6067
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: could not open compare-debug file %s"
+msgstr ""
+
+#: gcc.c:6046 gcc.c:6083
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: -fcompare-debug failure"
+msgstr ""
+
+#: gcc.c:6161
+#, gcc-internal-format
+msgid "atexit failed"
+msgstr ""
+
+#: gcc.c:6302
+#, gcc-internal-format
+msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC"
+msgstr ""
+
+#: gcc.c:6325
+#, gcc-internal-format
+msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC"
+msgstr ""
+
+#: gcc.c:6491
+#, gcc-internal-format
+msgid "unrecognized option %<-%s%>"
+msgstr ""
+
+#. The error status indicates that only one set of fixed
+#. headers should be built.
+#: gcc.c:6568
+#, gcc-internal-format
+msgid "not configured with sysroot headers suffix"
+msgstr ""
+
+#: gcc.c:6651
+#, gcc-internal-format
+msgid "no input files"
+msgstr ""
+
+#: gcc.c:6700
+#, gcc-internal-format
+msgid "cannot specify -o with -c, -S or -E with multiple files"
+msgstr ""
+
+#: gcc.c:6730
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: %s compiler not installed on this system"
+msgstr ""
+
+#: gcc.c:6752
+#, gcc-internal-format
+msgid "recompiling with -fcompare-debug"
+msgstr ""
+
+#: gcc.c:6768
+#, gcc-internal-format
+msgid "during -fcompare-debug recompilation"
+msgstr ""
+
+#: gcc.c:6777
+#, gcc-internal-format
+msgid "comparing final insns dumps"
+msgstr ""
+
+#: gcc.c:6883
+#, gcc-internal-format, gfc-internal-format
+msgid "-fuse-linker-plugin, but %s not found"
+msgstr ""
+
+#: gcc.c:6915
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: linker input file unused because linking not done"
+msgstr ""
+
+#: gcc.c:6956
+#, gcc-internal-format, gfc-internal-format
+msgid "language %s not recognized"
+msgstr ""
+
+#: gcc.c:7182
+#, gcc-internal-format
+msgid "multilib spec %qs is invalid"
+msgstr ""
+
+#: gcc.c:7374
+#, gcc-internal-format
+msgid "multilib exclusions %qs is invalid"
+msgstr ""
+
+#: gcc.c:7432 gcc.c:7573
+#, gcc-internal-format
+msgid "multilib select %qs is invalid"
+msgstr ""
+
+#: gcc.c:7611
+#, gcc-internal-format
+msgid "multilib exclusion %qs is invalid"
+msgstr ""
+
+#: gcc.c:7817
+#, gcc-internal-format
+msgid "environment variable %qs not defined"
+msgstr ""
+
+#: gcc.c:7929 gcc.c:7934
+#, gcc-internal-format
+msgid "invalid version number %qs"
+msgstr ""
+
+#: gcc.c:7977
+#, gcc-internal-format, gfc-internal-format
+msgid "too few arguments to %%:version-compare"
+msgstr ""
+
+#: gcc.c:7983
+#, gcc-internal-format, gfc-internal-format
+msgid "too many arguments to %%:version-compare"
+msgstr ""
+
+#: gcc.c:8024
+#, gcc-internal-format
+msgid "unknown operator %qs in %%:version-compare"
+msgstr ""
+
+#: gcc.c:8147
+#, gcc-internal-format, gfc-internal-format
+msgid "too many arguments to %%:compare-debug-dump-opt"
+msgstr ""
+
+#: gcc.c:8215
+#, gcc-internal-format, gfc-internal-format
+msgid "too many arguments to %%:compare-debug-self-opt"
+msgstr ""
+
+#: gcc.c:8250
+#, gcc-internal-format, gfc-internal-format
+msgid "too few arguments to %%:compare-debug-auxbase-opt"
+msgstr ""
+
+#: gcc.c:8253
+#, gcc-internal-format, gfc-internal-format
+msgid "too many arguments to %%:compare-debug-auxbase-opt"
+msgstr ""
+
+#: gcc.c:8260
+#, gcc-internal-format, gfc-internal-format
+msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk"
+msgstr ""
+
+#: ggc-common.c:467 ggc-common.c:475 ggc-common.c:549 ggc-common.c:568
+#: ggc-page.c:2308 ggc-page.c:2339 ggc-page.c:2346 ggc-zone.c:2431
+#: ggc-zone.c:2442 ggc-zone.c:2446
+#, gcc-internal-format
+msgid "can%'t write PCH file: %m"
+msgstr ""
+
+#: ggc-common.c:561 config/i386/host-cygwin.c:55
+#, gcc-internal-format
+msgid "can%'t get position in PCH file: %m"
+msgstr ""
+
+#: ggc-common.c:571
+#, gcc-internal-format
+msgid "can%'t write padding to PCH file: %m"
+msgstr ""
+
+#: ggc-common.c:626 ggc-common.c:634 ggc-common.c:641 ggc-common.c:644
+#: ggc-common.c:654 ggc-common.c:657 ggc-page.c:2436 ggc-zone.c:2465
+#, gcc-internal-format
+msgid "can%'t read PCH file: %m"
+msgstr ""
+
+#: ggc-common.c:649
+#, gcc-internal-format
+msgid "had to relocate PCH"
+msgstr ""
+
+#: ggc-page.c:1648
+#, gcc-internal-format
+msgid "open /dev/zero: %m"
+msgstr ""
+
+#: ggc-page.c:2324 ggc-page.c:2330
+#, gcc-internal-format
+msgid "can%'t write PCH file"
+msgstr ""
+
+#: ggc-zone.c:2428 ggc-zone.c:2439
+#, gcc-internal-format
+msgid "can%'t seek PCH file: %m"
+msgstr ""
+
+#: gimple-streamer-in.c:187
+#, gcc-internal-format
+msgid "use of type %<%E%> with two mismatching declarations at field %<%E%>"
+msgstr ""
+
+#: gimple-streamer-in.c:193
+#, gcc-internal-format
+msgid "original type declared here"
+msgstr ""
+
+#: gimple-streamer-in.c:195
+#, gcc-internal-format
+msgid "field in mismatching type declared here"
+msgstr ""
+
+#: gimple-streamer-in.c:201
+#, gcc-internal-format
+msgid "type of field declared here"
+msgstr ""
+
+#: gimple-streamer-in.c:208
+#, gcc-internal-format
+msgid "type of mismatching field declared here"
+msgstr ""
+
+#: gimple-streamer-in.c:241
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream: unknown GIMPLE statement tag %s"
+msgstr ""
+
+#: gimple.c:1192
+#, gcc-internal-format, gfc-internal-format
+msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
+msgstr ""
+
+#: gimplify.c:2518
+#, gcc-internal-format
+msgid "using result of function returning %<void%>"
+msgstr ""
+
+#: gimplify.c:5048
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid lvalue in asm output %d"
+msgstr ""
+
+#: gimplify.c:5164
+#, gcc-internal-format, gfc-internal-format
+msgid "non-memory input %d must stay in memory"
+msgstr ""
+
+#: gimplify.c:5186
+#, gcc-internal-format, gfc-internal-format
+msgid "memory input %d is not directly addressable"
+msgstr ""
+
+#: gimplify.c:5681
+#, gcc-internal-format
+msgid "threadprivate variable %qE used in untied task"
+msgstr ""
+
+#: gimplify.c:5683 gimplify.c:5745
+#, gcc-internal-format
+msgid "enclosing task"
+msgstr ""
+
+#: gimplify.c:5742
+#, gcc-internal-format
+msgid "%qE not specified in enclosing parallel"
+msgstr ""
+
+#: gimplify.c:5747
+#, gcc-internal-format
+msgid "enclosing parallel"
+msgstr ""
+
+#: gimplify.c:5852
+#, gcc-internal-format
+msgid "iteration variable %qE should be private"
+msgstr ""
+
+#: gimplify.c:5866
+#, gcc-internal-format
+msgid "iteration variable %qE should not be firstprivate"
+msgstr ""
+
+#: gimplify.c:5869
+#, gcc-internal-format
+msgid "iteration variable %qE should not be reduction"
+msgstr ""
+
+#: gimplify.c:6032
+#, gcc-internal-format
+msgid "%s variable %qE is private in outer context"
+msgstr ""
+
+#: gimplify.c:7794
+#, gcc-internal-format
+msgid "gimplification failed"
+msgstr ""
+
+#: godump.c:1234
+#, gcc-internal-format
+msgid "could not close Go dump file: %m"
+msgstr ""
+
+#: godump.c:1246
+#, gcc-internal-format
+msgid "could not open Go dump file %qs: %m"
+msgstr ""
+
+#: graph.c:411 toplev.c:1531 java/jcf-parse.c:1751 java/jcf-parse.c:1889
+#: objc/objc-act.c:449
+#, gcc-internal-format
+msgid "can%'t open %s: %m"
+msgstr ""
+
+#: graphite-clast-to-gimple.c:1339 graphite-poly.c:691 toplev.c:930
+#: toplev.c:1133
+#, gcc-internal-format
+msgid "can%'t open %s for writing: %m"
+msgstr ""
+
+#: graphite-poly.c:593
+#, gcc-internal-format
+msgid "the file is not in OpenScop format"
+msgstr ""
+
+#: graphite-poly.c:604
+#, gcc-internal-format
+msgid "the language is not recognized"
+msgstr ""
+
+#: graphite-poly.c:615
+#, gcc-internal-format
+msgid "parameters number in the scop file is different from the internal scop parameter number"
+msgstr ""
+
+#: graphite-poly.c:628
+#, gcc-internal-format
+msgid "number of statements in the OpenScop file does not match the graphite internal statements number"
+msgstr ""
+
+#: graphite-poly.c:719
+#, gcc-internal-format
+msgid "can%'t open %s for reading: %m"
+msgstr ""
+
+#: graphite-poly.c:746
+#, gcc-internal-format, gfc-internal-format
+msgid "the graphite file read for scop %d does not contain a legal transform"
+msgstr ""
+
+#: graphite.c:290
+#, gcc-internal-format
+msgid "Graphite loop optimizations cannot be used"
+msgstr ""
+
+#. Fatal error here. We do not want to support compiling ltrans units
+#. with different version of compiler or different flags than the WPA
+#. unit, so this should never happen.
+#: ipa-inline-analysis.c:3123
+#, gcc-internal-format
+msgid "ipa inline summary is missing in input file"
+msgstr ""
+
+#. Fatal error here. We do not want to support compiling ltrans units with
+#. different version of compiler or different flags than the WPA unit, so
+#. this should never happen.
+#: ipa-reference.c:1208
+#, gcc-internal-format
+msgid "ipa reference summary is missing in ltrans unit"
+msgstr ""
+
+#: ira.c:1821 ira.c:1834 ira.c:1848
+#, gcc-internal-format, gfc-internal-format
+msgid "%s cannot be used in asm here"
+msgstr ""
+
+#: lto-cgraph.c:1010
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream: found multiple instances of cgraph node %d"
+msgstr ""
+
+#: lto-cgraph.c:1147
+#, gcc-internal-format
+msgid "bytecode stream: no caller found while reading edge"
+msgstr ""
+
+#: lto-cgraph.c:1153
+#, gcc-internal-format
+msgid "bytecode stream: no callee found while reading edge"
+msgstr ""
+
+#: lto-cgraph.c:1217
+#, gcc-internal-format
+msgid "bytecode stream: found empty cgraph node"
+msgstr ""
+
+#: lto-cgraph.c:1382
+#, gcc-internal-format, gfc-internal-format
+msgid "At most %i profile runs is supported. Perhaps corrupted profile?"
+msgstr ""
+
+#: lto-cgraph.c:1430
+#, gcc-internal-format, gfc-internal-format
+msgid "Profile information in %s corrupted"
+msgstr ""
+
+#: lto-cgraph.c:1465
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot find LTO cgraph in %s"
+msgstr ""
+
+#: lto-cgraph.c:1475
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot find LTO varpool in %s"
+msgstr ""
+
+#: lto-cgraph.c:1483
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot find LTO section refs in %s"
+msgstr ""
+
+#: lto-compress.c:189 lto-compress.c:197 lto-compress.c:218 lto-compress.c:279
+#: lto-compress.c:287 lto-compress.c:308
+#, gcc-internal-format, gfc-internal-format
+msgid "compressed stream: %s"
+msgstr ""
+
+#: lto-section-in.c:423
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream: trying to read %d bytes after the end of the input buffer"
+msgstr ""
+
+#: lto-section-in.c:433
+#, gcc-internal-format, gfc-internal-format
+msgid "%s out of range: Range is %i to %i, value is %i"
+msgstr ""
+
+#: lto-streamer-in.c:77
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream: unexpected tag %s"
+msgstr ""
+
+#: lto-streamer-out.c:324
+#, gcc-internal-format
+msgid "tree code %qs is not supported in LTO streams"
+msgstr ""
+
+#: lto-streamer.c:163
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream: unexpected LTO section %s"
+msgstr ""
+
+#: lto-streamer.c:380
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream generated with LTO version %d.%d instead of the expected %d.%d"
+msgstr ""
+
+#: lto-symtab.c:474
+#, gcc-internal-format
+msgid "%qD has already been defined"
+msgstr ""
+
+#: lto-symtab.c:476
+#, gcc-internal-format
+msgid "previously defined here"
+msgstr ""
+
+#: lto-symtab.c:557
+#, gcc-internal-format
+msgid "type of %qD does not match original declaration"
+msgstr ""
+
+#: lto-symtab.c:564
+#, gcc-internal-format
+msgid "alignment of %qD is bigger than original declaration"
+msgstr ""
+
+#: lto-symtab.c:570 lto-symtab.c:678
+#, gcc-internal-format
+msgid "previously declared here"
+msgstr ""
+
+#: lto-symtab.c:603
+#, gcc-internal-format
+msgid "multiple prevailing defs for %qE"
+msgstr ""
+
+#: lto-symtab.c:661
+#, gcc-internal-format
+msgid "variable %qD redeclared as function"
+msgstr ""
+
+#: lto-symtab.c:667
+#, gcc-internal-format
+msgid "function %qD redeclared as variable"
+msgstr ""
+
+#: omp-low.c:1846
+#, gcc-internal-format
+msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
+msgstr ""
+
+#: omp-low.c:1851
+#, gcc-internal-format
+msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
+msgstr ""
+
+#: omp-low.c:1869
+#, gcc-internal-format
+msgid "master region may not be closely nested inside of work-sharing or explicit task region"
+msgstr ""
+
+#: omp-low.c:1884
+#, gcc-internal-format
+msgid "ordered region may not be closely nested inside of critical or explicit task region"
+msgstr ""
+
+#: omp-low.c:1890
+#, gcc-internal-format
+msgid "ordered region must be closely nested inside a loop region with an ordered clause"
+msgstr ""
+
+#: omp-low.c:1905
+#, gcc-internal-format
+msgid "critical region may not be nested inside a critical region with the same name"
+msgstr ""
+
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
+#, gcc-internal-format
+msgid "invalid exit from OpenMP structured block"
+msgstr ""
+
+#: omp-low.c:7026 omp-low.c:7031
+#, gcc-internal-format
+msgid "invalid entry to OpenMP structured block"
+msgstr ""
+
+#. Otherwise, be vague and lazy, but efficient.
+#: omp-low.c:7034
+#, gcc-internal-format
+msgid "invalid branch to/from an OpenMP structured block"
+msgstr ""
+
+#: opts-common.c:997
+#, gcc-internal-format
+msgid "command line option %qs is not supported by this configuration"
+msgstr ""
+
+#: opts-common.c:1007
+#, gcc-internal-format
+msgid "missing argument to %qs"
+msgstr ""
+
+#: opts-common.c:1013 opts.c:543
+#, gcc-internal-format
+msgid "argument to %qs should be a non-negative integer"
+msgstr ""
+
+#: opts-common.c:1028
+#, gcc-internal-format
+msgid "unrecognized argument in option %qs"
+msgstr ""
+
+#: opts-common.c:1044
+#, gcc-internal-format
+msgid "valid arguments to %qs are: %s"
+msgstr ""
+
+#: opts-global.c:102
+#, gcc-internal-format
+msgid "command line option %qs is valid for the driver but not for %s"
+msgstr ""
+
+#. Eventually this should become a hard error IMO.
+#: opts-global.c:108
+#, gcc-internal-format
+msgid "command line option %qs is valid for %s but not for %s"
+msgstr ""
+
+#: opts-global.c:139
+#, gcc-internal-format, gfc-internal-format
+msgid "unrecognized command line option \"%s\""
+msgstr ""
+
+#: opts-global.c:351
+#, gcc-internal-format
+msgid "unrecognized command line option %<-fdump-%s%>"
+msgstr ""
+
+#: opts-global.c:371 opts-global.c:379
+#, gcc-internal-format
+msgid "plugin support is disabled; configure with --enable-plugin"
+msgstr ""
+
+#: opts-global.c:403
+#, gcc-internal-format
+msgid "unrecognized register name %qs"
+msgstr ""
+
+#: opts.c:91
+#, gcc-internal-format
+msgid "argument %qs to %<-femit-struct-debug-detailed%> not recognized"
+msgstr ""
+
+#: opts.c:127
+#, gcc-internal-format
+msgid "argument %qs to %<-femit-struct-debug-detailed%> unknown"
+msgstr ""
+
+#: opts.c:134
+#, gcc-internal-format
+msgid "%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-femit-struct-debug-detailed=ind:...%>"
+msgstr ""
+
+#: opts.c:657
+#, gcc-internal-format
+msgid "section anchors must be disabled when unit-at-a-time is disabled"
+msgstr ""
+
+#: opts.c:661
+#, gcc-internal-format
+msgid "toplevel reorder must be disabled when unit-at-a-time is disabled"
+msgstr ""
+
+#: opts.c:667
+#, gcc-internal-format
+msgid "transactional memory is not supported with non-call exceptions"
+msgstr ""
+
+#: opts.c:686
+#, gcc-internal-format
+msgid "section anchors must be disabled when toplevel reorder is disabled"
+msgstr ""
+
+#: opts.c:721 config/darwin.c:3002 config/sh/sh.c:809
+#, gcc-internal-format
+msgid "-freorder-blocks-and-partition does not work with exceptions on this architecture"
+msgstr ""
+
+#: opts.c:736 config/sh/sh.c:817
+#, gcc-internal-format
+msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
+msgstr ""
+
+#: opts.c:753 config/pa/pa.c:524
+#, gcc-internal-format
+msgid "-freorder-blocks-and-partition does not work on this architecture"
+msgstr ""
+
+#: opts.c:789
+#, gcc-internal-format
+msgid "-fno-fat-lto-objects are supported only with linker plugin."
+msgstr ""
+
+#: opts.c:797
+#, gcc-internal-format
+msgid "only one -flto-partition value can be specified"
+msgstr ""
+
+#: opts.c:808
+#, gcc-internal-format
+msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
+msgstr ""
+
+#: opts.c:1206
+#, gcc-internal-format
+msgid "unrecognized include_flags 0x%x passed to print_specific_help"
+msgstr ""
+
+#: opts.c:1386
+#, gcc-internal-format
+msgid "--help argument %q.*s is ambiguous, please be more specific"
+msgstr ""
+
+#: opts.c:1395
+#, gcc-internal-format
+msgid "unrecognized argument to --help= option: %q.*s"
+msgstr ""
+
+#: opts.c:1547
+#, gcc-internal-format, gfc-internal-format
+msgid "structure alignment must be a small power of two, not %d"
+msgstr ""
+
+#: opts.c:1660
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown stack check parameter \"%s\""
+msgstr ""
+
+#: opts.c:1695
+#, gcc-internal-format, gfc-internal-format
+msgid "dwarf version %d is not supported"
+msgstr ""
+
+#: opts.c:1768
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: --param arguments should be of the form NAME=VALUE"
+msgstr ""
+
+#: opts.c:1774
+#, gcc-internal-format
+msgid "invalid --param value %qs"
+msgstr ""
+
+#: opts.c:1892
+#, gcc-internal-format
+msgid "target system does not support debug output"
+msgstr ""
+
+#: opts.c:1901
+#, gcc-internal-format, gfc-internal-format
+msgid "debug format \"%s\" conflicts with prior selection"
+msgstr ""
+
+#: opts.c:1917
+#, gcc-internal-format, gfc-internal-format
+msgid "unrecognised debug output level \"%s\""
+msgstr ""
+
+#: opts.c:1919
+#, gcc-internal-format, gfc-internal-format
+msgid "debug output level %s is too high"
+msgstr ""
+
+#: opts.c:1939
+#, gcc-internal-format
+msgid "getting core file size maximum limit: %m"
+msgstr ""
+
+#: opts.c:1942
+#, gcc-internal-format
+msgid "setting core file size limit to maximum: %m"
+msgstr ""
+
+#: opts.c:1990
+#, gcc-internal-format, gfc-internal-format
+msgid "unrecognized gcc debugging option: %c"
+msgstr ""
+
+#: opts.c:2016
+#, gcc-internal-format, gfc-internal-format
+msgid "-Werror=%s: no option -%s"
+msgstr ""
+
+#: params.c:121
+#, gcc-internal-format
+msgid "minimum value of parameter %qs is %u"
+msgstr ""
+
+#: params.c:126
+#, gcc-internal-format
+msgid "maximum value of parameter %qs is %u"
+msgstr ""
+
+#. If we didn't find this parameter, issue an error message.
+#: params.c:136
+#, gcc-internal-format
+msgid "invalid parameter %qs"
+msgstr ""
+
+#: passes.c:700
+#, gcc-internal-format
+msgid "unrecognized option -fenable"
+msgstr ""
+
+#: passes.c:702
+#, gcc-internal-format
+msgid "unrecognized option -fdisable"
+msgstr ""
+
+#: passes.c:710
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown pass %s specified in -fenable"
+msgstr ""
+
+#: passes.c:712
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown pass %s specified in -fdisable"
+msgstr ""
+
+#: passes.c:739 passes.c:829
+#, gcc-internal-format, gfc-internal-format
+msgid "enable pass %s for functions in the range of [%u, %u]"
+msgstr ""
+
+#: passes.c:742 passes.c:840
+#, gcc-internal-format, gfc-internal-format
+msgid "disable pass %s for functions in the range of [%u, %u]"
+msgstr ""
+
+#: passes.c:778 passes.c:806
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid range %s in option %s"
+msgstr ""
+
+#: passes.c:825
+#, gcc-internal-format, gfc-internal-format
+msgid "enable pass %s for function %s"
+msgstr ""
+
+#: passes.c:836
+#, gcc-internal-format, gfc-internal-format
+msgid "disable pass %s for function %s"
+msgstr ""
+
+#: passes.c:1049
+#, gcc-internal-format
+msgid "invalid pass positioning operation"
+msgstr ""
+
+#: passes.c:1091
+#, gcc-internal-format
+msgid "plugin cannot register a missing pass"
+msgstr ""
+
+#: passes.c:1094
+#, gcc-internal-format
+msgid "plugin cannot register an unnamed pass"
+msgstr ""
+
+#: passes.c:1098
+#, gcc-internal-format
+msgid "plugin cannot register pass %qs without reference pass name"
+msgstr ""
+
+#: passes.c:1118
+#, gcc-internal-format
+msgid "pass %qs not found but is referenced by new pass %qs"
+msgstr ""
+
+#: plugin.c:152
+#, gcc-internal-format
+msgid "inaccessible plugin file %s expanded from short plugin name %s: %m"
+msgstr ""
+
+#: plugin.c:173
+#, gcc-internal-format, gfc-internal-format
+msgid ""
+"plugin %s was specified with different paths:\n"
+"%s\n"
+"%s"
+msgstr ""
+
+#: plugin.c:219
+#, gcc-internal-format, gfc-internal-format
+msgid "malformed option -fplugin-arg-%s (multiple '=' signs)"
+msgstr ""
+
+#: plugin.c:235
+#, gcc-internal-format, gfc-internal-format
+msgid "malformed option -fplugin-arg-%s (missing -<key>[=<value>])"
+msgstr ""
+
+#: plugin.c:297
+#, gcc-internal-format, gfc-internal-format
+msgid "plugin %s should be specified before -fplugin-arg-%s in the command line"
+msgstr ""
+
+#: plugin.c:417
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown callback event registered by plugin %s"
+msgstr ""
+
+#: plugin.c:446
+#, gcc-internal-format, gfc-internal-format
+msgid "plugin %s registered a null callback function for event %s"
+msgstr ""
+
+#: plugin.c:567
+#, gcc-internal-format, gfc-internal-format
+msgid ""
+"cannot load plugin %s\n"
+"%s"
+msgstr ""
+
+#: plugin.c:576
+#, gcc-internal-format, gfc-internal-format
+msgid ""
+"plugin %s is not licensed under a GPL-compatible license\n"
+"%s"
+msgstr ""
+
+#: plugin.c:585
+#, gcc-internal-format, gfc-internal-format
+msgid ""
+"cannot find %s in plugin %s\n"
+"%s"
+msgstr ""
+
+#: plugin.c:593
+#, gcc-internal-format, gfc-internal-format
+msgid "fail to initialize plugin %s"
+msgstr ""
+
+#: plugin.c:874
+#, gcc-internal-format
+msgid "-iplugindir <dir> option not passed from the gcc driver"
+msgstr ""
+
+#: profile.c:413
+#, gcc-internal-format
+msgid "corrupted profile info: edge count exceeds maximal count"
+msgstr ""
+
+#: profile.c:417
+#, gcc-internal-format, gfc-internal-format
+msgid "corrupted profile info: edge from %i to %i exceeds maximal count"
+msgstr ""
+
+#: profile.c:496
+#, gcc-internal-format
+msgid "corrupted profile info: run_max * runs < sum_max"
+msgstr ""
+
+#: profile.c:502
+#, gcc-internal-format
+msgid "corrupted profile info: sum_all is smaller than sum_max"
+msgstr ""
+
+#: profile.c:674
+#, gcc-internal-format
+msgid "correcting inconsistent profile data"
+msgstr ""
+
+#: profile.c:684
+#, gcc-internal-format
+msgid "corrupted profile info: profile data is not flow-consistent"
+msgstr ""
+
+#: profile.c:701
+#, gcc-internal-format, gfc-internal-format
+msgid "corrupted profile info: number of iterations for basic block %d thought to be %i"
+msgstr ""
+
+#: profile.c:722
+#, gcc-internal-format, gfc-internal-format
+msgid "corrupted profile info: number of executions for edge %d-%d thought to be %i"
+msgstr ""
+
+#: reg-stack.c:537
+#, gcc-internal-format, gfc-internal-format
+msgid "output constraint %d must specify a single register"
+msgstr ""
+
+#: reg-stack.c:547
+#, gcc-internal-format, gfc-internal-format
+msgid "output constraint %d cannot be specified together with \"%s\" clobber"
+msgstr ""
+
+#: reg-stack.c:570
+#, gcc-internal-format
+msgid "output regs must be grouped at top of stack"
+msgstr ""
+
+#: reg-stack.c:607
+#, gcc-internal-format
+msgid "implicitly popped regs must be grouped at top of stack"
+msgstr ""
+
+#: reg-stack.c:626
+#, gcc-internal-format
+msgid "output operand %d must use %<&%> constraint"
+msgstr ""
+
+#: regcprop.c:1157
+#, gcc-internal-format, gfc-internal-format
+msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
+msgstr ""
+
+#: regcprop.c:1169
+#, gcc-internal-format, gfc-internal-format
+msgid "validate_value_data: Loop in regno chain (%u)"
+msgstr ""
+
+#: regcprop.c:1172
+#, gcc-internal-format, gfc-internal-format
+msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
+msgstr ""
+
+#: regcprop.c:1184
+#, gcc-internal-format, gfc-internal-format
+msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
+msgstr ""
+
+#: reginfo.c:822
+#, gcc-internal-format
+msgid "can%'t use %qs as a call-saved register"
+msgstr ""
+
+#: reginfo.c:826
+#, gcc-internal-format
+msgid "can%'t use %qs as a call-used register"
+msgstr ""
+
+#: reginfo.c:838
+#, gcc-internal-format
+msgid "can%'t use %qs as a fixed register"
+msgstr ""
+
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown register name: %s"
+msgstr ""
+
+#: reginfo.c:877
+#, gcc-internal-format
+msgid "stack register used for global register variable"
+msgstr ""
+
+#: reginfo.c:883
+#, gcc-internal-format
+msgid "global register variable follows a function definition"
+msgstr ""
+
+#: reginfo.c:888
+#, gcc-internal-format
+msgid "register of %qD used for multiple global register variables"
+msgstr ""
+
+#: reginfo.c:891
+#, gcc-internal-format
+msgid "conflicts with %qD"
+msgstr ""
+
+#: reginfo.c:896
+#, gcc-internal-format
+msgid "call-clobbered register used for global register variable"
+msgstr ""
+
+#: reload.c:1272
+#, gcc-internal-format
+msgid "cannot reload integer constant operand in %<asm%>"
+msgstr ""
+
+#: reload.c:1286
+#, gcc-internal-format
+msgid "impossible register constraint in %<asm%>"
+msgstr ""
+
+#: reload.c:3637
+#, gcc-internal-format
+msgid "%<&%> constraint used with no register class"
+msgstr ""
+
+#: reload.c:3813 reload.c:4070
+#, gcc-internal-format
+msgid "inconsistent operand constraints in an %<asm%>"
+msgstr ""
+
+#: reload1.c:1253
+#, gcc-internal-format
+msgid "%<asm%> operand has impossible constraints"
+msgstr ""
+
+#: reload1.c:1273
+#, gcc-internal-format
+msgid "frame size too large for reliable stack checking"
+msgstr ""
+
+#: reload1.c:1276
+#, gcc-internal-format
+msgid "try reducing the number of local variables"
+msgstr ""
+
+#: reload1.c:2107
+#, gcc-internal-format
+msgid "can%'t find a register in class %qs while reloading %<asm%>"
+msgstr ""
+
+#: reload1.c:2112
+#, gcc-internal-format
+msgid "unable to find a register to spill in class %qs"
+msgstr ""
+
+#: reload1.c:4690
+#, gcc-internal-format
+msgid "%<asm%> operand requires impossible reload"
+msgstr ""
+
+#: reload1.c:6107
+#, gcc-internal-format
+msgid "%<asm%> operand constraint incompatible with operand size"
+msgstr ""
+
+#: reload1.c:7913
+#, gcc-internal-format
+msgid "output operand is constant in %<asm%>"
+msgstr ""
+
+#: rtl.c:742
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%d"
+msgstr ""
+
+#: rtl.c:752
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
+msgstr ""
+
+#: rtl.c:762
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%d"
+msgstr ""
+
+#: rtl.c:771
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL check: expected code '%s', have '%s' in %s, at %s:%d"
+msgstr ""
+
+#: rtl.c:781
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%d"
+msgstr ""
+
+#: rtl.c:808
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%d"
+msgstr ""
+
+#: rtl.c:818
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
+msgstr ""
+
+#: rtl.c:829
+#, gcc-internal-format, gfc-internal-format
+msgid "RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%d"
+msgstr ""
+
+#: stmt.c:315
+#, gcc-internal-format
+msgid "output operand constraint lacks %<=%>"
+msgstr ""
+
+#: stmt.c:330
+#, gcc-internal-format
+msgid "output constraint %qc for operand %d is not at the beginning"
+msgstr ""
+
+#: stmt.c:353
+#, gcc-internal-format
+msgid "operand constraint contains incorrectly positioned %<+%> or %<=%>"
+msgstr ""
+
+#: stmt.c:360 stmt.c:459
+#, gcc-internal-format
+msgid "%<%%%> constraint used with last operand"
+msgstr ""
+
+#: stmt.c:379
+#, gcc-internal-format
+msgid "matching constraint not valid in output operand"
+msgstr ""
+
+#: stmt.c:450
+#, gcc-internal-format
+msgid "input operand constraint contains %qc"
+msgstr ""
+
+#: stmt.c:492
+#, gcc-internal-format
+msgid "matching constraint references invalid operand number"
+msgstr ""
+
+#: stmt.c:530
+#, gcc-internal-format
+msgid "invalid punctuation %qc in constraint"
+msgstr ""
+
+#: stmt.c:554
+#, gcc-internal-format
+msgid "matching constraint does not allow a register"
+msgstr ""
+
+#: stmt.c:608
+#, gcc-internal-format
+msgid "asm-specifier for variable %qE conflicts with asm clobber list"
+msgstr ""
+
+#: stmt.c:700
+#, gcc-internal-format
+msgid "unknown register name %qs in %<asm%>"
+msgstr ""
+
+#: stmt.c:714
+#, gcc-internal-format
+msgid "PIC register clobbered by %qs in %<asm%>"
+msgstr ""
+
+#: stmt.c:762
+#, gcc-internal-format
+msgid "more than %d operands in %<asm%>"
+msgstr ""
+
+#: stmt.c:829
+#, gcc-internal-format, gfc-internal-format
+msgid "output number %d not directly addressable"
+msgstr ""
+
+#: stmt.c:915
+#, gcc-internal-format
+msgid "asm operand %d probably doesn%'t match constraints"
+msgstr ""
+
+#: stmt.c:925
+#, gcc-internal-format, gfc-internal-format
+msgid "use of memory input without lvalue in asm operand %d is deprecated"
+msgstr ""
+
+#: stmt.c:1087
+#, gcc-internal-format
+msgid "asm clobber conflict with output operand"
+msgstr ""
+
+#: stmt.c:1094
+#, gcc-internal-format
+msgid "asm clobber conflict with input operand"
+msgstr ""
+
+#: stmt.c:1221
+#, gcc-internal-format
+msgid "too many alternatives in %<asm%>"
+msgstr ""
+
+#: stmt.c:1233
+#, gcc-internal-format
+msgid "operand constraints for %<asm%> differ in number of alternatives"
+msgstr ""
+
+#: stmt.c:1300
+#, gcc-internal-format
+msgid "duplicate asm operand name %qs"
+msgstr ""
+
+#: stmt.c:1396
+#, gcc-internal-format
+msgid "missing close brace for named operand"
+msgstr ""
+
+#: stmt.c:1421
+#, gcc-internal-format
+msgid "undefined named operand %qs"
+msgstr ""
+
+#: stmt.c:1566 cp/cvt.c:1117 cp/cvt.c:1361
+#, gcc-internal-format
+msgid "value computed is not used"
+msgstr ""
+
+#: stor-layout.c:711
+#, gcc-internal-format
+msgid "size of %q+D is %d bytes"
+msgstr ""
+
+#: stor-layout.c:713
+#, gcc-internal-format
+msgid "size of %q+D is larger than %wd bytes"
+msgstr ""
+
+#: stor-layout.c:1131
+#, gcc-internal-format
+msgid "packed attribute causes inefficient alignment for %q+D"
+msgstr ""
+
+#: stor-layout.c:1135
+#, gcc-internal-format
+msgid "packed attribute is unnecessary for %q+D"
+msgstr ""
+
+#: stor-layout.c:1152
+#, gcc-internal-format
+msgid "padding struct to align %q+D"
+msgstr ""
+
+#: stor-layout.c:1214
+#, gcc-internal-format
+msgid "offset of packed bit-field %qD has changed in GCC 4.4"
+msgstr ""
+
+#: stor-layout.c:1520
+#, gcc-internal-format
+msgid "padding struct size to alignment boundary"
+msgstr ""
+
+#: stor-layout.c:1548
+#, gcc-internal-format
+msgid "packed attribute causes inefficient alignment for %qE"
+msgstr ""
+
+#: stor-layout.c:1552
+#, gcc-internal-format
+msgid "packed attribute is unnecessary for %qE"
+msgstr ""
+
+#: stor-layout.c:1558
+#, gcc-internal-format
+msgid "packed attribute causes inefficient alignment"
+msgstr ""
+
+#: stor-layout.c:1560
+#, gcc-internal-format
+msgid "packed attribute is unnecessary"
+msgstr ""
+
+#: stor-layout.c:2244
+#, gcc-internal-format
+msgid "alignment of array elements is greater than element size"
+msgstr ""
+
+#: targhooks.c:168
+#, gcc-internal-format
+msgid "__builtin_saveregs not supported by this target"
+msgstr ""
+
+#: targhooks.c:807
+#, gcc-internal-format
+msgid "nested functions not supported on this target"
+msgstr ""
+
+#: targhooks.c:820
+#, gcc-internal-format
+msgid "nested function trampolines not supported on this target"
+msgstr ""
+
+#: targhooks.c:1154
+#, gcc-internal-format
+msgid "target attribute is not supported on this machine"
+msgstr ""
+
+#: targhooks.c:1164
+#, gcc-internal-format
+msgid "#pragma GCC target is not supported for this machine"
+msgstr ""
+
+#: tlink.c:492
+#, gcc-internal-format
+msgid "removing .rpo file: %m"
+msgstr ""
+
+#: tlink.c:494
+#, gcc-internal-format
+msgid "renaming .rpo file: %m"
+msgstr ""
+
+#: tlink.c:498
+#, gcc-internal-format, gfc-internal-format
+msgid "repository file '%s' does not contain command-line arguments"
+msgstr ""
+
+#: tlink.c:624
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' was assigned to '%s', but was not defined during recompilation, or vice versa"
+msgstr ""
+
+#: tlink.c:859
+#, gcc-internal-format, gfc-internal-format
+msgid "ld returned %d exit status"
+msgstr ""
+
+#: toplev.c:486
+#, gcc-internal-format
+msgid "%q+F declared %<static%> but never defined"
+msgstr ""
+
+#: toplev.c:514
+#, gcc-internal-format
+msgid "%q+D defined but not used"
+msgstr ""
+
+#: toplev.c:951
+#, gcc-internal-format
+msgid "-frecord-gcc-switches is not supported by the current target"
+msgstr ""
+
+#: toplev.c:1056
+#, gcc-internal-format
+msgid "stack usage computation not supported for this target"
+msgstr ""
+
+#: toplev.c:1110
+#, gcc-internal-format
+msgid "stack usage might be unbounded"
+msgstr ""
+
+#: toplev.c:1114
+#, gcc-internal-format
+msgid "stack usage might be %wd bytes"
+msgstr ""
+
+#: toplev.c:1117
+#, gcc-internal-format
+msgid "stack usage is %wd bytes"
+msgstr ""
+
+#: toplev.c:1294
+#, gcc-internal-format
+msgid "this target does not support %qs"
+msgstr ""
+
+#: toplev.c:1322
+#, gcc-internal-format
+msgid "Graphite loop optimizations cannot be used (-fgraphite, -fgraphite-identity, -floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine, -floop-parallelize-all, and -ftree-loop-linear)"
+msgstr ""
+
+#: toplev.c:1329
+#, gcc-internal-format
+msgid "mudflap cannot be used together with link-time optimization"
+msgstr ""
+
+#: toplev.c:1338
+#, gcc-internal-format
+msgid "-fstrict-volatile-bitfields disabled; it is incompatible with ABI versions < 2"
+msgstr ""
+
+#: toplev.c:1366
+#, gcc-internal-format
+msgid "instruction scheduling not supported on this target machine"
+msgstr ""
+
+#: toplev.c:1370
+#, gcc-internal-format
+msgid "this target machine does not have delayed branches"
+msgstr ""
+
+#: toplev.c:1384
+#, gcc-internal-format, gfc-internal-format
+msgid "-f%sleading-underscore not supported on this target machine"
+msgstr ""
+
+#: toplev.c:1427
+#, gcc-internal-format
+msgid "could not close zeroed insn dump file %qs: %m"
+msgstr ""
+
+#: toplev.c:1466
+#, gcc-internal-format, gfc-internal-format
+msgid "target system does not support the \"%s\" debug format"
+msgstr ""
+
+#: toplev.c:1478
+#, gcc-internal-format
+msgid "variable tracking requested, but useless unless producing debug info"
+msgstr ""
+
+#: toplev.c:1481
+#, gcc-internal-format
+msgid "variable tracking requested, but not supported by this debug format"
+msgstr ""
+
+#: toplev.c:1515
+#, gcc-internal-format
+msgid "var-tracking-assignments changes selective scheduling"
+msgstr ""
+
+#: toplev.c:1538
+#, gcc-internal-format
+msgid "-ffunction-sections not supported for this target"
+msgstr ""
+
+#: toplev.c:1543
+#, gcc-internal-format
+msgid "-fdata-sections not supported for this target"
+msgstr ""
+
+#: toplev.c:1550
+#, gcc-internal-format
+msgid "-ffunction-sections disabled; it makes profiling impossible"
+msgstr ""
+
+#: toplev.c:1557
+#, gcc-internal-format
+msgid "-fprefetch-loop-arrays not supported for this target"
+msgstr ""
+
+#: toplev.c:1563
+#, gcc-internal-format
+msgid "-fprefetch-loop-arrays not supported for this target (try -march switches)"
+msgstr ""
+
+#: toplev.c:1572
+#, gcc-internal-format
+msgid "-fprefetch-loop-arrays is not supported with -Os"
+msgstr ""
+
+#: toplev.c:1583
+#, gcc-internal-format
+msgid "-fassociative-math disabled; other options take precedence"
+msgstr ""
+
+#: toplev.c:1599
+#, gcc-internal-format
+msgid "-fstack-protector not supported for this target"
+msgstr ""
+
+#: toplev.c:1612
+#, gcc-internal-format
+msgid "unwind tables currently require a frame pointer for correctness"
+msgstr ""
+
+#: toplev.c:1873
+#, gcc-internal-format
+msgid "error writing to %s: %m"
+msgstr ""
+
+#: toplev.c:1875 java/jcf-parse.c:1770
+#, gcc-internal-format
+msgid "error closing %s: %m"
+msgstr ""
+
+#: trans-mem.c:570
+#, gcc-internal-format
+msgid "invalid volatile use of %qD inside transaction"
+msgstr ""
+
+#: trans-mem.c:596
+#, gcc-internal-format
+msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
+msgstr ""
+
+#: trans-mem.c:664 trans-mem.c:4194
+#, gcc-internal-format
+msgid "unsafe function call %qD within atomic transaction"
+msgstr ""
+
+#: trans-mem.c:670
+#, gcc-internal-format
+msgid "unsafe function call %qE within atomic transaction"
+msgstr ""
+
+#: trans-mem.c:674
+#, gcc-internal-format
+msgid "unsafe indirect function call within atomic transaction"
+msgstr ""
+
+#: trans-mem.c:682 trans-mem.c:4127
+#, gcc-internal-format
+msgid "unsafe function call %qD within %<transaction_safe%> function"
+msgstr ""
+
+#: trans-mem.c:688
+#, gcc-internal-format
+msgid "unsafe function call %qE within %<transaction_safe%> function"
+msgstr ""
+
+#: trans-mem.c:692
+#, gcc-internal-format
+msgid "unsafe indirect function call within %<transaction_safe%> function"
+msgstr ""
+
+#: trans-mem.c:707 trans-mem.c:4166
+#, gcc-internal-format
+msgid "asm not allowed in atomic transaction"
+msgstr ""
+
+#: trans-mem.c:710
+#, gcc-internal-format
+msgid "asm not allowed in %<transaction_safe%> function"
+msgstr ""
+
+#: trans-mem.c:721
+#, gcc-internal-format
+msgid "relaxed transaction in atomic transaction"
+msgstr ""
+
+#: trans-mem.c:724
+#, gcc-internal-format
+msgid "relaxed transaction in %<transaction_safe%> function"
+msgstr ""
+
+#: trans-mem.c:731
+#, gcc-internal-format
+msgid "outer transaction in transaction"
+msgstr ""
+
+#: trans-mem.c:734
+#, gcc-internal-format
+msgid "outer transaction in %<transaction_may_cancel_outer%> function"
+msgstr ""
+
+#: trans-mem.c:738
+#, gcc-internal-format
+msgid "outer transaction in %<transaction_safe%> function"
+msgstr ""
+
+#: trans-mem.c:3792
+#, gcc-internal-format
+msgid "%Kasm not allowed in %<transaction_safe%> function"
+msgstr ""
+
+#: tree-cfg.c:2636
+#, gcc-internal-format
+msgid "constant not recomputed when ADDR_EXPR changed"
+msgstr ""
+
+#: tree-cfg.c:2641
+#, gcc-internal-format
+msgid "side effects not recomputed when ADDR_EXPR changed"
+msgstr ""
+
+#: tree-cfg.c:2652
+#, gcc-internal-format
+msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
+msgstr ""
+
+#: tree-cfg.c:2681
+#, gcc-internal-format
+msgid "SSA name in freelist but still referenced"
+msgstr ""
+
+#: tree-cfg.c:2687 tree-cfg.c:3970
+#, gcc-internal-format
+msgid "INDIRECT_REF in gimple IL"
+msgstr ""
+
+#: tree-cfg.c:2695
+#, gcc-internal-format
+msgid "invalid first operand of MEM_REF"
+msgstr ""
+
+#: tree-cfg.c:2701
+#, gcc-internal-format
+msgid "invalid offset operand of MEM_REF"
+msgstr ""
+
+#: tree-cfg.c:2714
+#, gcc-internal-format
+msgid "ASSERT_EXPR with an always-false condition"
+msgstr ""
+
+#: tree-cfg.c:2720
+#, gcc-internal-format
+msgid "MODIFY_EXPR not expected while having tuples"
+msgstr ""
+
+#: tree-cfg.c:2747 tree-ssa.c:880
+#, gcc-internal-format
+msgid "address taken, but ADDRESSABLE bit not set"
+msgstr ""
+
+#: tree-cfg.c:2758
+#, gcc-internal-format
+msgid "non-integral used in condition"
+msgstr ""
+
+#: tree-cfg.c:2763
+#, gcc-internal-format
+msgid "invalid conditional operand"
+msgstr ""
+
+#: tree-cfg.c:2810
+#, gcc-internal-format
+msgid "invalid position or size operand to BIT_FIELD_REF"
+msgstr ""
+
+#: tree-cfg.c:2817
+#, gcc-internal-format
+msgid "integral result type precision does not match field size of BIT_FIELD_REF"
+msgstr ""
+
+#: tree-cfg.c:2825
+#, gcc-internal-format
+msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
+msgstr ""
+
+#: tree-cfg.c:2836
+#, gcc-internal-format
+msgid "invalid reference prefix"
+msgstr ""
+
+#: tree-cfg.c:2847
+#, gcc-internal-format
+msgid "invalid operand to plus/minus, type is a pointer"
+msgstr ""
+
+#: tree-cfg.c:2858
+#, gcc-internal-format
+msgid "invalid operand to pointer plus, first operand is not a pointer"
+msgstr ""
+
+#: tree-cfg.c:2864
+#, gcc-internal-format
+msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
+msgstr ""
+
+#: tree-cfg.c:2915
+#, gcc-internal-format
+msgid "invalid CASE_CHAIN"
+msgstr ""
+
+#: tree-cfg.c:2943
+#, gcc-internal-format
+msgid "invalid expression for min lvalue"
+msgstr ""
+
+#: tree-cfg.c:2954
+#, gcc-internal-format
+msgid "invalid operand in indirect reference"
+msgstr ""
+
+#: tree-cfg.c:2983
+#, gcc-internal-format
+msgid "invalid operands to array reference"
+msgstr ""
+
+#: tree-cfg.c:2994
+#, gcc-internal-format
+msgid "type mismatch in array reference"
+msgstr ""
+
+#: tree-cfg.c:3003
+#, gcc-internal-format
+msgid "type mismatch in array range reference"
+msgstr ""
+
+#: tree-cfg.c:3014
+#, gcc-internal-format
+msgid "type mismatch in real/imagpart reference"
+msgstr ""
+
+#: tree-cfg.c:3024
+#, gcc-internal-format
+msgid "type mismatch in component reference"
+msgstr ""
+
+#: tree-cfg.c:3041
+#, gcc-internal-format
+msgid "conversion of an SSA_NAME on the left hand side"
+msgstr ""
+
+#: tree-cfg.c:3048
+#, gcc-internal-format
+msgid "conversion of register to a different size"
+msgstr ""
+
+#: tree-cfg.c:3063
+#, gcc-internal-format
+msgid "invalid address operand in MEM_REF"
+msgstr ""
+
+#: tree-cfg.c:3070
+#, gcc-internal-format
+msgid "invalid offset operand in MEM_REF"
+msgstr ""
+
+#: tree-cfg.c:3080
+#, gcc-internal-format
+msgid "invalid address operand in TARGET_MEM_REF"
+msgstr ""
+
+#: tree-cfg.c:3087
+#, gcc-internal-format
+msgid "invalid offset operand in TARGET_MEM_REF"
+msgstr ""
+
+#: tree-cfg.c:3141
+#, gcc-internal-format
+msgid "gimple call has two targets"
+msgstr ""
+
+#: tree-cfg.c:3150
+#, gcc-internal-format
+msgid "gimple call has no target"
+msgstr ""
+
+#: tree-cfg.c:3157
+#, gcc-internal-format
+msgid "invalid function in gimple call"
+msgstr ""
+
+#: tree-cfg.c:3167
+#, gcc-internal-format
+msgid "non-function in gimple call"
+msgstr ""
+
+#: tree-cfg.c:3178
+#, gcc-internal-format
+msgid "invalid pure const state for function"
+msgstr ""
+
+#: tree-cfg.c:3186
+#, gcc-internal-format
+msgid "invalid LHS in gimple call"
+msgstr ""
+
+#: tree-cfg.c:3192
+#, gcc-internal-format
+msgid "LHS in noreturn call"
+msgstr ""
+
+#: tree-cfg.c:3209
+#, gcc-internal-format
+msgid "invalid conversion in gimple call"
+msgstr ""
+
+#: tree-cfg.c:3218
+#, gcc-internal-format
+msgid "invalid static chain in gimple call"
+msgstr ""
+
+#: tree-cfg.c:3229
+#, gcc-internal-format
+msgid "static chain in indirect gimple call"
+msgstr ""
+
+#: tree-cfg.c:3236
+#, gcc-internal-format
+msgid "static chain with function that doesn%'t use one"
+msgstr ""
+
+#: tree-cfg.c:3254
+#, gcc-internal-format
+msgid "invalid argument to gimple call"
+msgstr ""
+
+#: tree-cfg.c:3274
+#, gcc-internal-format
+msgid "invalid operands in gimple comparison"
+msgstr ""
+
+#: tree-cfg.c:3290
+#, gcc-internal-format
+msgid "mismatching comparison operand types"
+msgstr ""
+
+#: tree-cfg.c:3309
+#, gcc-internal-format
+msgid "non-vector operands in vector comparison"
+msgstr ""
+
+#: tree-cfg.c:3319
+#, gcc-internal-format
+msgid "invalid vector comparison resulting type"
+msgstr ""
+
+#: tree-cfg.c:3326
+#, gcc-internal-format
+msgid "bogus comparison result type"
+msgstr ""
+
+#: tree-cfg.c:3348
+#, gcc-internal-format
+msgid "non-register as LHS of unary operation"
+msgstr ""
+
+#: tree-cfg.c:3354
+#, gcc-internal-format
+msgid "invalid operand in unary operation"
+msgstr ""
+
+#: tree-cfg.c:3386
+#, gcc-internal-format
+msgid "invalid types in nop conversion"
+msgstr ""
+
+#: tree-cfg.c:3401
+#, gcc-internal-format
+msgid "invalid types in address space conversion"
+msgstr ""
+
+#: tree-cfg.c:3415
+#, gcc-internal-format
+msgid "invalid types in fixed-point conversion"
+msgstr ""
+
+#: tree-cfg.c:3430
+#, gcc-internal-format
+msgid "invalid types in conversion to floating point"
+msgstr ""
+
+#: tree-cfg.c:3445
+#, gcc-internal-format
+msgid "invalid types in conversion to integer"
+msgstr ""
+
+#: tree-cfg.c:3479
+#, gcc-internal-format
+msgid "non-trivial conversion in unary operation"
+msgstr ""
+
+#: tree-cfg.c:3504
+#, gcc-internal-format
+msgid "non-register as LHS of binary operation"
+msgstr ""
+
+#: tree-cfg.c:3511
+#, gcc-internal-format
+msgid "invalid operands in binary operation"
+msgstr ""
+
+#: tree-cfg.c:3526
+#, gcc-internal-format
+msgid "type mismatch in complex expression"
+msgstr ""
+
+#: tree-cfg.c:3555
+#, gcc-internal-format
+msgid "type mismatch in shift expression"
+msgstr ""
+
+#: tree-cfg.c:3578
+#, gcc-internal-format
+msgid "type mismatch in vector shift expression"
+msgstr ""
+
+#: tree-cfg.c:3591
+#, gcc-internal-format
+msgid "non-element sized vector shift of floating point vector"
+msgstr ""
+
+#: tree-cfg.c:3605 tree-cfg.c:3626
+#, gcc-internal-format
+msgid "type mismatch in widening vector shift expression"
+msgstr ""
+
+#: tree-cfg.c:3648
+#, gcc-internal-format
+msgid "invalid non-vector operands to vector valued plus"
+msgstr ""
+
+#: tree-cfg.c:3668
+#, gcc-internal-format
+msgid "invalid (pointer) operands to plus/minus"
+msgstr ""
+
+#: tree-cfg.c:3683
+#, gcc-internal-format
+msgid "type mismatch in pointer plus expression"
+msgstr ""
+
+#: tree-cfg.c:3760
+#, gcc-internal-format
+msgid "type mismatch in binary expression"
+msgstr ""
+
+#: tree-cfg.c:3788
+#, gcc-internal-format
+msgid "non-register as LHS of ternary operation"
+msgstr ""
+
+#: tree-cfg.c:3797
+#, gcc-internal-format
+msgid "invalid operands in ternary operation"
+msgstr ""
+
+#: tree-cfg.c:3813
+#, gcc-internal-format
+msgid "type mismatch in widening multiply-accumulate expression"
+msgstr ""
+
+#: tree-cfg.c:3827
+#, gcc-internal-format
+msgid "type mismatch in fused multiply-add expression"
+msgstr ""
+
+#: tree-cfg.c:3853
+#, gcc-internal-format
+msgid "type mismatch in vector permute expression"
+msgstr ""
+
+#: tree-cfg.c:3865
+#, gcc-internal-format
+msgid "vector types expected in vector permute expression"
+msgstr ""
+
+#: tree-cfg.c:3879
+#, gcc-internal-format
+msgid "vectors with different element number found in vector permute expression"
+msgstr ""
+
+#: tree-cfg.c:3892
+#, gcc-internal-format
+msgid "invalid mask type in vector permute expression"
+msgstr ""
+
+#: tree-cfg.c:3928
+#, gcc-internal-format
+msgid "non-trivial conversion at assignment"
+msgstr ""
+
+#: tree-cfg.c:3945
+#, gcc-internal-format
+msgid "invalid operand in unary expression"
+msgstr ""
+
+#: tree-cfg.c:3959
+#, gcc-internal-format
+msgid "type mismatch in address expression"
+msgstr ""
+
+#: tree-cfg.c:3985 tree-cfg.c:4011
+#, gcc-internal-format
+msgid "invalid rhs for gimple memory store"
+msgstr ""
+
+#: tree-cfg.c:4073
+#, gcc-internal-format
+msgid "invalid operand in return statement"
+msgstr ""
+
+#: tree-cfg.c:4087
+#, gcc-internal-format
+msgid "invalid conversion in return statement"
+msgstr ""
+
+#: tree-cfg.c:4111
+#, gcc-internal-format
+msgid "goto destination is neither a label nor a pointer"
+msgstr ""
+
+#: tree-cfg.c:4126
+#, gcc-internal-format
+msgid "invalid operand to switch statement"
+msgstr ""
+
+#: tree-cfg.c:4168
+#, gcc-internal-format
+msgid "incorrect entry in label_to_block_map"
+msgstr ""
+
+#: tree-cfg.c:4178
+#, gcc-internal-format
+msgid "incorrect setting of landing pad number"
+msgstr ""
+
+#: tree-cfg.c:4206
+#, gcc-internal-format
+msgid "invalid comparison code in gimple cond"
+msgstr ""
+
+#: tree-cfg.c:4214
+#, gcc-internal-format
+msgid "invalid labels in gimple cond"
+msgstr ""
+
+#: tree-cfg.c:4275 tree-cfg.c:4284
+#, gcc-internal-format
+msgid "invalid PHI result"
+msgstr ""
+
+#: tree-cfg.c:4294
+#, gcc-internal-format
+msgid "missing PHI def"
+msgstr ""
+
+#: tree-cfg.c:4308
+#, gcc-internal-format
+msgid "invalid PHI argument"
+msgstr ""
+
+#: tree-cfg.c:4315
+#, gcc-internal-format, gfc-internal-format
+msgid "incompatible types in PHI argument %u"
+msgstr ""
+
+#: tree-cfg.c:4399 tree-cfg.c:4595
+#, gcc-internal-format
+msgid "verify_gimple failed"
+msgstr ""
+
+#: tree-cfg.c:4460
+#, gcc-internal-format
+msgid "dead STMT in EH table"
+msgstr ""
+
+#: tree-cfg.c:4494
+#, gcc-internal-format
+msgid "gimple_bb (phi) is set to a wrong basic block"
+msgstr ""
+
+#: tree-cfg.c:4506 tree-cfg.c:4540
+#, gcc-internal-format
+msgid "incorrect sharing of tree nodes"
+msgstr ""
+
+#: tree-cfg.c:4529
+#, gcc-internal-format
+msgid "gimple_bb (stmt) is set to a wrong basic block"
+msgstr ""
+
+#: tree-cfg.c:4555
+#, gcc-internal-format
+msgid "in statement"
+msgstr ""
+
+#: tree-cfg.c:4570
+#, gcc-internal-format
+msgid "statement marked for throw, but doesn%'t"
+msgstr ""
+
+#: tree-cfg.c:4577
+#, gcc-internal-format
+msgid "statement marked for throw in middle of block"
+msgstr ""
+
+#: tree-cfg.c:4618
+#, gcc-internal-format
+msgid "ENTRY_BLOCK has IL associated with it"
+msgstr ""
+
+#: tree-cfg.c:4624
+#, gcc-internal-format
+msgid "EXIT_BLOCK has IL associated with it"
+msgstr ""
+
+#: tree-cfg.c:4631
+#, gcc-internal-format, gfc-internal-format
+msgid "fallthru to exit from bb %d"
+msgstr ""
+
+#: tree-cfg.c:4655
+#, gcc-internal-format
+msgid "nonlocal label "
+msgstr ""
+
+#: tree-cfg.c:4664
+#, gcc-internal-format
+msgid "EH landing pad label "
+msgstr ""
+
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
+#, gcc-internal-format
+msgid "label "
+msgstr ""
+
+#: tree-cfg.c:4697
+#, gcc-internal-format, gfc-internal-format
+msgid "control flow in the middle of basic block %d"
+msgstr ""
+
+#: tree-cfg.c:4730
+#, gcc-internal-format, gfc-internal-format
+msgid "fallthru edge after a control statement in bb %d"
+msgstr ""
+
+#: tree-cfg.c:4743
+#, gcc-internal-format, gfc-internal-format
+msgid "true/false edge after a non-GIMPLE_COND in bb %d"
+msgstr ""
+
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong outgoing edge flags at end of bb %d"
+msgstr ""
+
+#: tree-cfg.c:4776
+#, gcc-internal-format, gfc-internal-format
+msgid "explicit goto at end of bb %d"
+msgstr ""
+
+#: tree-cfg.c:4810
+#, gcc-internal-format, gfc-internal-format
+msgid "return edge does not point to exit in bb %d"
+msgstr ""
+
+#: tree-cfg.c:4840
+#, gcc-internal-format
+msgid "found default case not at the start of case vector"
+msgstr ""
+
+#: tree-cfg.c:4848
+#, gcc-internal-format
+msgid "case labels not sorted: "
+msgstr ""
+
+#: tree-cfg.c:4865
+#, gcc-internal-format, gfc-internal-format
+msgid "extra outgoing edge %d->%d"
+msgstr ""
+
+#: tree-cfg.c:4888
+#, gcc-internal-format, gfc-internal-format
+msgid "missing edge %i->%i"
+msgstr ""
+
+#: tree-cfg.c:7544
+#, gcc-internal-format
+msgid "%<noreturn%> function does return"
+msgstr ""
+
+#: tree-cfg.c:7564
+#, gcc-internal-format
+msgid "control reaches end of non-void function"
+msgstr ""
+
+#: tree-cfg.c:7702
+#, gcc-internal-format
+msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
+msgstr ""
+
+#: tree-cfg.c:7707
+#, gcc-internal-format
+msgid "ignoring return value of function declared with attribute warn_unused_result"
+msgstr ""
+
+#: tree-dump.c:932
+#, gcc-internal-format
+msgid "could not open dump file %qs: %m"
+msgstr ""
+
+#: tree-dump.c:1065
+#, gcc-internal-format
+msgid "ignoring unknown option %q.*s in %<-fdump-%s%>"
+msgstr ""
+
+#: tree-eh.c:4320
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i has multiple EH edges"
+msgstr ""
+
+#: tree-eh.c:4332
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i can not throw but has an EH edge"
+msgstr ""
+
+#: tree-eh.c:4340
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i last statement has incorrectly set lp"
+msgstr ""
+
+#: tree-eh.c:4346
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i is missing an EH edge"
+msgstr ""
+
+#: tree-eh.c:4352
+#, gcc-internal-format, gfc-internal-format
+msgid "Incorrect EH edge %i->%i"
+msgstr ""
+
+#: tree-eh.c:4386 tree-eh.c:4405
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i is missing an edge"
+msgstr ""
+
+#: tree-eh.c:4422
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i too many fallthru edges"
+msgstr ""
+
+#: tree-eh.c:4431
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i has incorrect edge"
+msgstr ""
+
+#: tree-eh.c:4437
+#, gcc-internal-format, gfc-internal-format
+msgid "BB %i has incorrect fallthru edge"
+msgstr ""
+
+#: tree-inline.c:3040
+#, gcc-internal-format
+msgid "function %q+F can never be copied because it receives a non-local goto"
+msgstr ""
+
+#: tree-inline.c:3054
+#, gcc-internal-format
+msgid "function %q+F can never be copied because it saves address of local label in a static variable"
+msgstr ""
+
+#: tree-inline.c:3094
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
+msgstr ""
+
+#: tree-inline.c:3108
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it uses setjmp"
+msgstr ""
+
+#: tree-inline.c:3122
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it uses variable argument lists"
+msgstr ""
+
+#: tree-inline.c:3134
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
+msgstr ""
+
+#: tree-inline.c:3142
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it uses non-local goto"
+msgstr ""
+
+#: tree-inline.c:3154
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
+msgstr ""
+
+#: tree-inline.c:3174
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it contains a computed goto"
+msgstr ""
+
+#: tree-inline.c:3254
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
+msgstr ""
+
+#: tree-inline.c:3262
+#, gcc-internal-format
+msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
+msgstr ""
+
+#: tree-inline.c:3843
+#, gcc-internal-format
+msgid "inlining failed in call to always_inline %q+F: %s"
+msgstr ""
+
+#: tree-inline.c:3845 tree-inline.c:3860
+#, gcc-internal-format
+msgid "called from here"
+msgstr ""
+
+#: tree-inline.c:3858
+#, gcc-internal-format
+msgid "inlining failed in call to %q+F: %s"
+msgstr ""
+
+#: tree-mudflap.c:897
+#, gcc-internal-format
+msgid "mudflap checking not yet implemented for ARRAY_RANGE_REF"
+msgstr ""
+
+#: tree-mudflap.c:1090
+#, gcc-internal-format
+msgid "mudflap cannot track %qE in stub function"
+msgstr ""
+
+#: tree-mudflap.c:1334
+#, gcc-internal-format
+msgid "mudflap cannot track unknown size extern %qE"
+msgstr ""
+
+#: tree-nomudflap.c:47
+#, gcc-internal-format
+msgid "mudflap: this language is not supported"
+msgstr ""
+
+#: tree-optimize.c:450
+#, gcc-internal-format
+msgid "size of return value of %q+D is %u bytes"
+msgstr ""
+
+#: tree-optimize.c:453
+#, gcc-internal-format
+msgid "size of return value of %q+D is larger than %wd bytes"
+msgstr ""
+
+#: tree-outof-ssa.c:784 tree-outof-ssa.c:841 tree-ssa-coalesce.c:951
+#: tree-ssa-coalesce.c:966 tree-ssa-coalesce.c:1188 tree-ssa-live.c:1340
+#, gcc-internal-format
+msgid "SSA corruption"
+msgstr ""
+
+#: tree-profile.c:418
+#, gcc-internal-format
+msgid "unimplemented functionality"
+msgstr ""
+
+#: tree-ssa-operands.c:1127
+#, gcc-internal-format
+msgid "virtual definition of statement not up-to-date"
+msgstr ""
+
+#: tree-ssa-operands.c:1134
+#, gcc-internal-format
+msgid "virtual def operand missing for stmt"
+msgstr ""
+
+#: tree-ssa-operands.c:1144
+#, gcc-internal-format
+msgid "virtual use of statement not up-to-date"
+msgstr ""
+
+#: tree-ssa-operands.c:1151
+#, gcc-internal-format
+msgid "virtual use operand missing for stmt"
+msgstr ""
+
+#: tree-ssa-operands.c:1167
+#, gcc-internal-format
+msgid "excess use operand for stmt"
+msgstr ""
+
+#: tree-ssa-operands.c:1175
+#, gcc-internal-format
+msgid "use operand missing for stmt"
+msgstr ""
+
+#: tree-ssa-operands.c:1192
+#, gcc-internal-format
+msgid "excess def operand for stmt"
+msgstr ""
+
+#: tree-ssa-operands.c:1200
+#, gcc-internal-format
+msgid "def operand missing for stmt"
+msgstr ""
+
+#: tree-ssa-operands.c:1207
+#, gcc-internal-format
+msgid "stmt volatile flag not up-to-date"
+msgstr ""
+
+#: tree-ssa-uninit.c:1958 tree-ssa.c:1653
+#, gcc-internal-format
+msgid "%qD may be used uninitialized in this function"
+msgstr ""
+
+#: tree-ssa.c:628
+#, gcc-internal-format
+msgid "expected an SSA_NAME object"
+msgstr ""
+
+#: tree-ssa.c:634
+#, gcc-internal-format
+msgid "type mismatch between an SSA_NAME and its symbol"
+msgstr ""
+
+#: tree-ssa.c:640
+#, gcc-internal-format
+msgid "found an SSA_NAME that had been released into the free pool"
+msgstr ""
+
+#: tree-ssa.c:646
+#, gcc-internal-format
+msgid "found a virtual definition for a GIMPLE register"
+msgstr ""
+
+#: tree-ssa.c:652
+#, gcc-internal-format
+msgid "virtual SSA name for non-VOP decl"
+msgstr ""
+
+#: tree-ssa.c:658
+#, gcc-internal-format
+msgid "found a real definition for a non-register"
+msgstr ""
+
+#: tree-ssa.c:665
+#, gcc-internal-format
+msgid "found a default name with a non-empty defining statement"
+msgstr ""
+
+#: tree-ssa.c:694
+#, gcc-internal-format
+msgid "RESULT_DECL should be read only when DECL_BY_REFERENCE is set"
+msgstr ""
+
+#: tree-ssa.c:700
+#, gcc-internal-format, gfc-internal-format
+msgid "SSA_NAME created in two different blocks %i and %i"
+msgstr ""
+
+#: tree-ssa.c:709 tree-ssa.c:1021
+#, gcc-internal-format
+msgid "SSA_NAME_DEF_STMT is wrong"
+msgstr ""
+
+#: tree-ssa.c:761
+#, gcc-internal-format
+msgid "missing definition"
+msgstr ""
+
+#: tree-ssa.c:767
+#, gcc-internal-format, gfc-internal-format
+msgid "definition in block %i does not dominate use in block %i"
+msgstr ""
+
+#: tree-ssa.c:775
+#, gcc-internal-format, gfc-internal-format
+msgid "definition in block %i follows the use"
+msgstr ""
+
+#: tree-ssa.c:782
+#, gcc-internal-format
+msgid "SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set"
+msgstr ""
+
+#: tree-ssa.c:790
+#, gcc-internal-format
+msgid "no immediate_use list"
+msgstr ""
+
+#: tree-ssa.c:802
+#, gcc-internal-format
+msgid "wrong immediate use list"
+msgstr ""
+
+#: tree-ssa.c:836
+#, gcc-internal-format
+msgid "incoming edge count does not match number of PHI arguments"
+msgstr ""
+
+#: tree-ssa.c:850
+#, gcc-internal-format, gfc-internal-format
+msgid "PHI argument is missing for edge %d->%d"
+msgstr ""
+
+#: tree-ssa.c:859
+#, gcc-internal-format
+msgid "PHI argument is not SSA_NAME, or invariant"
+msgstr ""
+
+#: tree-ssa.c:887
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong edge %d->%d for PHI argument"
+msgstr ""
+
+#: tree-ssa.c:968
+#, gcc-internal-format, gfc-internal-format
+msgid "AUX pointer initialized for edge %d->%d"
+msgstr ""
+
+#: tree-ssa.c:993
+#, gcc-internal-format
+msgid "stmt (%p) marked modified after optimization pass: "
+msgstr ""
+
+#: tree-ssa.c:1050
+#, gcc-internal-format
+msgid "verify_ssa failed"
+msgstr ""
+
+#: tree-ssa.c:1616 varasm.c:326
+#, gcc-internal-format
+msgid "%qD was declared here"
+msgstr ""
+
+#: tree-ssa.c:1648
+#, gcc-internal-format
+msgid "%qD is used uninitialized in this function"
+msgstr ""
+
+#: tree-ssa.c:1685
+#, gcc-internal-format
+msgid "%qE is used uninitialized in this function"
+msgstr ""
+
+#: tree-ssa.c:1690
+#, gcc-internal-format
+msgid "%qE may be used uninitialized in this function"
+msgstr ""
+
+#: tree-streamer-in.c:306 tree-streamer-in.c:1075
+#, gcc-internal-format
+msgid "machine independent builtin code out of range"
+msgstr ""
+
+#: tree-streamer-in.c:311 tree-streamer-in.c:1083
+#, gcc-internal-format
+msgid "target specific builtin not available"
+msgstr ""
+
+#: tree-streamer-in.c:903
+#, gcc-internal-format
+msgid "cl_target_option size mismatch in LTO reader and writer"
+msgstr ""
+
+#: tree-streamer-in.c:920
+#, gcc-internal-format
+msgid "cl_optimization size mismatch in LTO reader and writer"
+msgstr ""
+
+#: tree-streamer-out.c:364
+#, gcc-internal-format
+msgid "tree bytecode streams do not support machine specific builtin functions on this target"
+msgstr ""
+
+#: tree-vect-generic.c:244
+#, gcc-internal-format
+msgid "vector operation will be expanded piecewise"
+msgstr ""
+
+#: tree-vect-generic.c:247
+#, gcc-internal-format
+msgid "vector operation will be expanded in parallel"
+msgstr ""
+
+#: tree-vect-generic.c:299
+#, gcc-internal-format
+msgid "vector operation will be expanded with a single scalar operation"
+msgstr ""
+
+#: tree-vect-generic.c:656
+#, gcc-internal-format
+msgid "vector shuffling operation will be expanded piecewise"
+msgstr ""
+
+#: tree-vrp.c:5300
+#, gcc-internal-format
+msgid "array subscript is outside array bounds"
+msgstr ""
+
+#: tree-vrp.c:5312 tree-vrp.c:5399
+#, gcc-internal-format
+msgid "array subscript is above array bounds"
+msgstr ""
+
+#: tree-vrp.c:5319 tree-vrp.c:5387
+#, gcc-internal-format
+msgid "array subscript is below array bounds"
+msgstr ""
+
+#: tree-vrp.c:6028
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when simplifying conditional to constant"
+msgstr ""
+
+#: tree-vrp.c:6034
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when simplifying conditional"
+msgstr ""
+
+#: tree-vrp.c:6078
+#, gcc-internal-format
+msgid "comparison always false due to limited range of data type"
+msgstr ""
+
+#: tree-vrp.c:6080
+#, gcc-internal-format
+msgid "comparison always true due to limited range of data type"
+msgstr ""
+
+#: tree-vrp.c:6871
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
+msgstr ""
+
+#: tree-vrp.c:6953
+#, gcc-internal-format
+msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
+msgstr ""
+
+#: tree.c:4235
+#, gcc-internal-format
+msgid "ignoring attributes applied to %qT after definition"
+msgstr ""
+
+#: tree.c:5460
+#, gcc-internal-format
+msgid "%q+D already declared with dllexport attribute: dllimport ignored"
+msgstr ""
+
+#: tree.c:5472
+#, gcc-internal-format
+msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
+msgstr ""
+
+#: tree.c:5487
+#, gcc-internal-format
+msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
+msgstr ""
+
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
+#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
+#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
+#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
+#: c-family/c-common.c:6083 c-family/c-common.c:6111 c-family/c-common.c:6132
+#: c-family/c-common.c:6153 c-family/c-common.c:6180 c-family/c-common.c:6211
+#: c-family/c-common.c:6248 c-family/c-common.c:6275 c-family/c-common.c:6333
+#: c-family/c-common.c:6417 c-family/c-common.c:6447 c-family/c-common.c:6501
+#: c-family/c-common.c:6864 c-family/c-common.c:6882 c-family/c-common.c:6944
+#: c-family/c-common.c:6987 c-family/c-common.c:7058 c-family/c-common.c:7186
+#: c-family/c-common.c:7254 c-family/c-common.c:7312 c-family/c-common.c:7360
+#: c-family/c-common.c:7523 c-family/c-common.c:7544 c-family/c-common.c:7656
+#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
+#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
+#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
+#, gcc-internal-format
+msgid "%qE attribute ignored"
+msgstr ""
+
+#: tree.c:5570
+#, gcc-internal-format
+msgid "inline function %q+D declared as dllimport: attribute ignored"
+msgstr ""
+
+#: tree.c:5578
+#, gcc-internal-format
+msgid "function %q+D definition is marked dllimport"
+msgstr ""
+
+#: tree.c:5586
+#, gcc-internal-format
+msgid "variable %q+D definition is marked dllimport"
+msgstr ""
+
+#: tree.c:5614
+#, gcc-internal-format
+msgid "external linkage required for symbol %q+D because of %qE attribute"
+msgstr ""
+
+#: tree.c:5628
+#, gcc-internal-format
+msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
+msgstr ""
+
+#: tree.c:7378
+#, gcc-internal-format
+msgid "arrays of functions are not meaningful"
+msgstr ""
+
+#: tree.c:7545
+#, gcc-internal-format
+msgid "function return type cannot be function"
+msgstr ""
+
+#: tree.c:8844 tree.c:8929 tree.c:8990
+#, gcc-internal-format, gfc-internal-format
+msgid "tree check: %s, have %s in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:8881
+#, gcc-internal-format, gfc-internal-format
+msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:8894
+#, gcc-internal-format
+msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:8943
+#, gcc-internal-format
+msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:8956
+#, gcc-internal-format, gfc-internal-format
+msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:9016
+#, gcc-internal-format
+msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:9030
+#, gcc-internal-format, gfc-internal-format
+msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:9043
+#, gcc-internal-format, gfc-internal-format
+msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:9056
+#, gcc-internal-format, gfc-internal-format
+msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
+msgstr ""
+
+#: tree.c:11340
+#, gcc-internal-format
+msgid "%qD is deprecated (declared at %s:%d): %s"
+msgstr ""
+
+#: tree.c:11344
+#, gcc-internal-format
+msgid "%qD is deprecated (declared at %s:%d)"
+msgstr ""
+
+#: tree.c:11369
+#, gcc-internal-format
+msgid "%qE is deprecated (declared at %s:%d): %s"
+msgstr ""
+
+#: tree.c:11373
+#, gcc-internal-format
+msgid "%qE is deprecated (declared at %s:%d)"
+msgstr ""
+
+#: tree.c:11380
+#, gcc-internal-format, gfc-internal-format
+msgid "type is deprecated (declared at %s:%d): %s"
+msgstr ""
+
+#: tree.c:11384
+#, gcc-internal-format, gfc-internal-format
+msgid "type is deprecated (declared at %s:%d)"
+msgstr ""
+
+#: tree.c:11393
+#, gcc-internal-format
+msgid "%qE is deprecated: %s"
+msgstr ""
+
+#: tree.c:11396
+#, gcc-internal-format
+msgid "%qE is deprecated"
+msgstr ""
+
+#: tree.c:11401
+#, gcc-internal-format, gfc-internal-format
+msgid "type is deprecated: %s"
+msgstr ""
+
+#: tree.c:11404
+#, gcc-internal-format
+msgid "type is deprecated"
+msgstr ""
+
+#: value-prof.c:376
+#, gcc-internal-format
+msgid "dead histogram"
+msgstr ""
+
+#: value-prof.c:407
+#, gcc-internal-format
+msgid "Histogram value statement does not correspond to the statement it is associated with"
+msgstr ""
+
+#: value-prof.c:420
+#, gcc-internal-format
+msgid "verify_histograms failed"
+msgstr ""
+
+#: value-prof.c:467
+#, gcc-internal-format, gfc-internal-format
+msgid "correcting inconsistent value profile: %s profiler overall count (%d) does not match BB count (%d)"
+msgstr ""
+
+#: value-prof.c:477
+#, gcc-internal-format, gfc-internal-format
+msgid "corrupted value profile: %s profile counter (%d out of %d) inconsistent with basic-block count (%d)"
+msgstr ""
+
+#: value-prof.c:1105 value-prof.c:1107
+#, gcc-internal-format, gfc-internal-format
+msgid "Inconsistent profile: indirect call target (%d) does not exist"
+msgstr ""
+
+#: value-prof.c:1129
+#, gcc-internal-format, gfc-internal-format
+msgid "Skipping target %s with mismatching types for icall "
+msgstr ""
+
+#: var-tracking.c:6586
+#, gcc-internal-format
+msgid "variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without"
+msgstr ""
+
+#: var-tracking.c:6590
+#, gcc-internal-format
+msgid "variable tracking size limit exceeded"
+msgstr ""
+
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr ""
+
+#: varasm.c:322
+#, gcc-internal-format
+msgid "%+D causes a section type conflict with %D"
+msgstr ""
+
+#: varasm.c:964
+#, gcc-internal-format
+msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
+msgstr ""
+
+#: varasm.c:1202 varasm.c:1211
+#, gcc-internal-format
+msgid "register name not specified for %q+D"
+msgstr ""
+
+#: varasm.c:1213
+#, gcc-internal-format
+msgid "invalid register name for %q+D"
+msgstr ""
+
+#: varasm.c:1215
+#, gcc-internal-format
+msgid "data type of %q+D isn%'t suitable for a register"
+msgstr ""
+
+#: varasm.c:1218
+#, gcc-internal-format
+msgid "the register specified for %q+D cannot be accessed by the current target"
+msgstr ""
+
+#: varasm.c:1221
+#, gcc-internal-format
+msgid "the register specified for %q+D is not general enough to be used as a register variable"
+msgstr ""
+
+#: varasm.c:1224
+#, gcc-internal-format
+msgid "register specified for %q+D isn%'t suitable for data type"
+msgstr ""
+
+#: varasm.c:1234
+#, gcc-internal-format
+msgid "global register variable has initial value"
+msgstr ""
+
+#: varasm.c:1238
+#, gcc-internal-format
+msgid "optimization may eliminate reads and/or writes to register variables"
+msgstr ""
+
+#: varasm.c:1276
+#, gcc-internal-format
+msgid "register name given for non-register variable %q+D"
+msgstr ""
+
+#: varasm.c:1393
+#, gcc-internal-format
+msgid "global destructors not supported on this target"
+msgstr ""
+
+#: varasm.c:1459
+#, gcc-internal-format
+msgid "global constructors not supported on this target"
+msgstr ""
+
+#: varasm.c:1856
+#, gcc-internal-format
+msgid "thread-local COMMON data not implemented"
+msgstr ""
+
+#: varasm.c:1885
+#, gcc-internal-format
+msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
+msgstr ""
+
+#: varasm.c:4603
+#, gcc-internal-format
+msgid "initializer for integer/fixed-point value is too complicated"
+msgstr ""
+
+#: varasm.c:4608
+#, gcc-internal-format
+msgid "initializer for floating value is not a floating constant"
+msgstr ""
+
+#: varasm.c:4915
+#, gcc-internal-format
+msgid "invalid initial value for member %qE"
+msgstr ""
+
+#: varasm.c:5261
+#, gcc-internal-format
+msgid "weak declaration of %q+D must be public"
+msgstr ""
+
+#: varasm.c:5263
+#, gcc-internal-format
+msgid "weak declaration of %q+D not supported"
+msgstr ""
+
+#: varasm.c:5292 varasm.c:5868
+#, gcc-internal-format
+msgid "only weak aliases are supported in this configuration"
+msgstr ""
+
+#: varasm.c:5511
+#, gcc-internal-format
+msgid "weakref is not supported in this configuration"
+msgstr ""
+
+#: varasm.c:5534 varasm.c:5865
+#, gcc-internal-format
+msgid "ifunc is not supported in this configuration"
+msgstr ""
+
+#: varasm.c:5788
+#, gcc-internal-format
+msgid "%q+D aliased to undefined symbol %qE"
+msgstr ""
+
+#: varasm.c:5802
+#, gcc-internal-format
+msgid "%q+D aliased to external symbol %qE"
+msgstr ""
+
+#: varasm.c:5842
+#, gcc-internal-format
+msgid "weakref %q+D ultimately targets itself"
+msgstr ""
+
+#: varasm.c:5851
+#, gcc-internal-format
+msgid "weakref %q+D must have static linkage"
+msgstr ""
+
+#: varasm.c:5858
+#, gcc-internal-format
+msgid "alias definitions not supported in this configuration"
+msgstr ""
+
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
+#, gcc-internal-format
+msgid "visibility attribute not supported in this configuration; ignored"
+msgstr ""
+
+#: varpool.c:486
+#, gcc-internal-format
+msgid "variable %q+D part of alias cycle"
+msgstr ""
+
+#: vec.c:527
+#, gcc-internal-format, gfc-internal-format
+msgid "vector %s %s domain error, in %s at %s:%u"
+msgstr ""
+
+#. Print an error message for unrecognized stab codes.
+#: xcoffout.c:194
+#, gcc-internal-format
+msgid "no sclass for %s stab (0x%x)"
+msgstr ""
+
+#: lto-streamer.h:962
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream: expected tag %s instead of %s"
+msgstr ""
+
+#: lto-streamer.h:972
+#, gcc-internal-format, gfc-internal-format
+msgid "bytecode stream: tag %s is not in the expected range [%s, %s]"
+msgstr ""
+
+#: c-family/c-common.c:916
+#, gcc-internal-format
+msgid "%qD is not defined outside of function scope"
+msgstr ""
+
+#: c-family/c-common.c:966
+#, gcc-internal-format
+msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
+msgstr ""
+
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
+#, gcc-internal-format
+msgid "overflow in constant expression"
+msgstr ""
+
+#: c-family/c-common.c:1529
+#, gcc-internal-format
+msgid "integer overflow in expression"
+msgstr ""
+
+#: c-family/c-common.c:1534
+#, gcc-internal-format
+msgid "floating point overflow in expression"
+msgstr ""
+
+#: c-family/c-common.c:1538
+#, gcc-internal-format
+msgid "fixed-point overflow in expression"
+msgstr ""
+
+#: c-family/c-common.c:1542
+#, gcc-internal-format
+msgid "vector overflow in expression"
+msgstr ""
+
+#: c-family/c-common.c:1548
+#, gcc-internal-format
+msgid "complex integer overflow in expression"
+msgstr ""
+
+#: c-family/c-common.c:1551
+#, gcc-internal-format
+msgid "complex floating point overflow in expression"
+msgstr ""
+
+#: c-family/c-common.c:1594
+#, gcc-internal-format
+msgid "logical %<or%> applied to non-boolean constant"
+msgstr ""
+
+#: c-family/c-common.c:1597
+#, gcc-internal-format
+msgid "logical %<and%> applied to non-boolean constant"
+msgstr ""
+
+#: c-family/c-common.c:1642
+#, gcc-internal-format
+msgid "logical %<or%> of collectively exhaustive tests is always true"
+msgstr ""
+
+#: c-family/c-common.c:1646
+#, gcc-internal-format
+msgid "logical %<and%> of mutually exclusive tests is always false"
+msgstr ""
+
+#: c-family/c-common.c:1681
+#, gcc-internal-format
+msgid "type-punning to incomplete type might break strict-aliasing rules"
+msgstr ""
+
+#: c-family/c-common.c:1696
+#, gcc-internal-format
+msgid "dereferencing type-punned pointer will break strict-aliasing rules"
+msgstr ""
+
+#: c-family/c-common.c:1703 c-family/c-common.c:1721
+#, gcc-internal-format
+msgid "dereferencing type-punned pointer might break strict-aliasing rules"
+msgstr ""
+
+#: c-family/c-common.c:1752
+#, gcc-internal-format
+msgid "first argument of %q+D should be %<int%>"
+msgstr ""
+
+#: c-family/c-common.c:1761
+#, gcc-internal-format
+msgid "second argument of %q+D should be %<char **%>"
+msgstr ""
+
+#: c-family/c-common.c:1770
+#, gcc-internal-format
+msgid "third argument of %q+D should probably be %<char **%>"
+msgstr ""
+
+#: c-family/c-common.c:1781
+#, gcc-internal-format
+msgid "%q+D takes only zero or two arguments"
+msgstr ""
+
+#: c-family/c-common.c:1830
+#, gcc-internal-format
+msgid "use -flax-vector-conversions to permit conversions between vectors with differing element types or numbers of subparts"
+msgstr ""
+
+#: c-family/c-common.c:2002
+#, gcc-internal-format
+msgid "negative integer implicitly converted to unsigned type"
+msgstr ""
+
+#: c-family/c-common.c:2008
+#, gcc-internal-format
+msgid "conversion of unsigned constant value to negative integer"
+msgstr ""
+
+#: c-family/c-common.c:2102
+#, gcc-internal-format
+msgid "conversion to %qT from %qT may change the sign of the result"
+msgstr ""
+
+#: c-family/c-common.c:2171
+#, gcc-internal-format
+msgid "conversion to %qT from boolean expression"
+msgstr ""
+
+#: c-family/c-common.c:2178
+#, gcc-internal-format
+msgid "conversion to %qT alters %qT constant value"
+msgstr ""
+
+#: c-family/c-common.c:2205
+#, gcc-internal-format
+msgid "conversion to %qT from %qT may alter its value"
+msgstr ""
+
+#: c-family/c-common.c:2233
+#, gcc-internal-format
+msgid "large integer implicitly truncated to unsigned type"
+msgstr ""
+
+#: c-family/c-common.c:2239 c-family/c-common.c:2246 c-family/c-common.c:2254
+#, gcc-internal-format
+msgid "overflow in implicit constant conversion"
+msgstr ""
+
+#: c-family/c-common.c:2426
+#, gcc-internal-format
+msgid "operation on %qE may be undefined"
+msgstr ""
+
+#: c-family/c-common.c:2737
+#, gcc-internal-format
+msgid "case label does not reduce to an integer constant"
+msgstr ""
+
+#: c-family/c-common.c:2777
+#, gcc-internal-format
+msgid "case label value is less than minimum value for type"
+msgstr ""
+
+#: c-family/c-common.c:2785
+#, gcc-internal-format
+msgid "case label value exceeds maximum value for type"
+msgstr ""
+
+#: c-family/c-common.c:2793
+#, gcc-internal-format
+msgid "lower value in case label range less than minimum value for type"
+msgstr ""
+
+#: c-family/c-common.c:2802
+#, gcc-internal-format
+msgid "upper value in case label range exceeds maximum value for type"
+msgstr ""
+
+#: c-family/c-common.c:2881
+#, gcc-internal-format
+msgid "GCC cannot support operators with integer types and fixed-point types that have too many integral and fractional bits together"
+msgstr ""
+
+#: c-family/c-common.c:3384
+#, gcc-internal-format
+msgid "invalid operands to binary %s (have %qT and %qT)"
+msgstr ""
+
+#: c-family/c-common.c:3633
+#, gcc-internal-format
+msgid "comparison is always false due to limited range of data type"
+msgstr ""
+
+#: c-family/c-common.c:3635
+#, gcc-internal-format
+msgid "comparison is always true due to limited range of data type"
+msgstr ""
+
+#: c-family/c-common.c:3714
+#, gcc-internal-format
+msgid "comparison of unsigned expression >= 0 is always true"
+msgstr ""
+
+#: c-family/c-common.c:3724
+#, gcc-internal-format
+msgid "comparison of unsigned expression < 0 is always false"
+msgstr ""
+
+#: c-family/c-common.c:3766
+#, gcc-internal-format
+msgid "pointer of type %<void *%> used in arithmetic"
+msgstr ""
+
+#: c-family/c-common.c:3772
+#, gcc-internal-format
+msgid "pointer to a function used in arithmetic"
+msgstr ""
+
+#: c-family/c-common.c:3778
+#, gcc-internal-format
+msgid "pointer to member function used in arithmetic"
+msgstr ""
+
+#: c-family/c-common.c:3990
+#, gcc-internal-format
+msgid "the address of %qD will always evaluate as %<true%>"
+msgstr ""
+
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
+#, gcc-internal-format
+msgid "suggest parentheses around assignment used as truth value"
+msgstr ""
+
+#: c-family/c-common.c:4357
+#, gcc-internal-format
+msgid "invalid application of %<sizeof%> to a function type"
+msgstr ""
+
+#: c-family/c-common.c:4367
+#, gcc-internal-format
+msgid "ISO C++ does not permit %<alignof%> applied to a function type"
+msgstr ""
+
+#: c-family/c-common.c:4370
+#, gcc-internal-format
+msgid "ISO C does not permit %<_Alignof%> applied to a function type"
+msgstr ""
+
+#: c-family/c-common.c:4381
+#, gcc-internal-format
+msgid "invalid application of %qs to a void type"
+msgstr ""
+
+#: c-family/c-common.c:4390
+#, gcc-internal-format
+msgid "invalid application of %qs to incomplete type %qT"
+msgstr ""
+
+#: c-family/c-common.c:4398
+#, gcc-internal-format
+msgid "invalid application of %qs to array type %qT of incomplete element type"
+msgstr ""
+
+#: c-family/c-common.c:4440
+#, gcc-internal-format
+msgid "%<__alignof%> applied to a bit-field"
+msgstr ""
+
+#: c-family/c-common.c:5151
+#, gcc-internal-format
+msgid "cannot disable built-in function %qs"
+msgstr ""
+
+#: c-family/c-common.c:5342
+#, gcc-internal-format
+msgid "pointers are not permitted as case values"
+msgstr ""
+
+#: c-family/c-common.c:5349
+#, gcc-internal-format
+msgid "range expressions in switch statements are non-standard"
+msgstr ""
+
+#: c-family/c-common.c:5375
+#, gcc-internal-format
+msgid "empty range specified"
+msgstr ""
+
+#: c-family/c-common.c:5435
+#, gcc-internal-format
+msgid "duplicate (or overlapping) case value"
+msgstr ""
+
+#: c-family/c-common.c:5437
+#, gcc-internal-format
+msgid "this is the first entry overlapping that value"
+msgstr ""
+
+#: c-family/c-common.c:5441
+#, gcc-internal-format
+msgid "duplicate case value"
+msgstr ""
+
+#: c-family/c-common.c:5442
+#, gcc-internal-format
+msgid "previously used here"
+msgstr ""
+
+#: c-family/c-common.c:5446
+#, gcc-internal-format
+msgid "multiple default labels in one switch"
+msgstr ""
+
+#: c-family/c-common.c:5448
+#, gcc-internal-format
+msgid "this is the first default label"
+msgstr ""
+
+#: c-family/c-common.c:5500
+#, gcc-internal-format
+msgid "case value %qs not in enumerated type"
+msgstr ""
+
+#: c-family/c-common.c:5505
+#, gcc-internal-format
+msgid "case value %qs not in enumerated type %qT"
+msgstr ""
+
+#: c-family/c-common.c:5564
+#, gcc-internal-format
+msgid "switch missing default case"
+msgstr ""
+
+#: c-family/c-common.c:5636
+#, gcc-internal-format
+msgid "enumeration value %qE not handled in switch"
+msgstr ""
+
+#: c-family/c-common.c:5662
+#, gcc-internal-format
+msgid "taking the address of a label is non-standard"
+msgstr ""
+
+#: c-family/c-common.c:5854
+#, gcc-internal-format
+msgid "%qE attribute ignored for field of type %qT"
+msgstr ""
+
+#: c-family/c-common.c:5948 c-family/c-common.c:5974
+#, gcc-internal-format
+msgid "%qE attribute conflicts with attribute %s"
+msgstr ""
+
+#: c-family/c-common.c:6088 lto/lto-lang.c:220
+#, gcc-internal-format
+msgid "%qE attribute has no effect on unit local functions"
+msgstr ""
+
+#: c-family/c-common.c:6242
+#, gcc-internal-format
+msgid "%qE attribute have effect only on public objects"
+msgstr ""
+
+#: c-family/c-common.c:6354
+#, gcc-internal-format
+msgid "destructor priorities are not supported"
+msgstr ""
+
+#: c-family/c-common.c:6356
+#, gcc-internal-format
+msgid "constructor priorities are not supported"
+msgstr ""
+
+#: c-family/c-common.c:6373
+#, gcc-internal-format, gfc-internal-format
+msgid "destructor priorities from 0 to %d are reserved for the implementation"
+msgstr ""
+
+#: c-family/c-common.c:6378
+#, gcc-internal-format, gfc-internal-format
+msgid "constructor priorities from 0 to %d are reserved for the implementation"
+msgstr ""
+
+#: c-family/c-common.c:6386
+#, gcc-internal-format, gfc-internal-format
+msgid "destructor priorities must be integers from 0 to %d inclusive"
+msgstr ""
+
+#: c-family/c-common.c:6389
+#, gcc-internal-format, gfc-internal-format
+msgid "constructor priorities must be integers from 0 to %d inclusive"
+msgstr ""
+
+#: c-family/c-common.c:6545
+#, gcc-internal-format
+msgid "unknown machine mode %qE"
+msgstr ""
+
+#: c-family/c-common.c:6574
+#, gcc-internal-format
+msgid "specifying vector types with __attribute__ ((mode)) is deprecated"
+msgstr ""
+
+#: c-family/c-common.c:6577
+#, gcc-internal-format
+msgid "use __attribute__ ((vector_size)) instead"
+msgstr ""
+
+#: c-family/c-common.c:6586
+#, gcc-internal-format
+msgid "unable to emulate %qs"
+msgstr ""
+
+#: c-family/c-common.c:6597
+#, gcc-internal-format
+msgid "invalid pointer mode %qs"
+msgstr ""
+
+#: c-family/c-common.c:6614
+#, gcc-internal-format
+msgid "signedness of type and machine mode %qs don%'t match"
+msgstr ""
+
+#: c-family/c-common.c:6625
+#, gcc-internal-format
+msgid "no data type for mode %qs"
+msgstr ""
+
+#: c-family/c-common.c:6635
+#, gcc-internal-format
+msgid "cannot use mode %qs for enumeral types"
+msgstr ""
+
+#: c-family/c-common.c:6662
+#, gcc-internal-format
+msgid "mode %qs applied to inappropriate type"
+msgstr ""
+
+#: c-family/c-common.c:6694
+#, gcc-internal-format
+msgid "section attribute cannot be specified for local variables"
+msgstr ""
+
+#: c-family/c-common.c:6705 config/bfin/bfin.c:4737 config/bfin/bfin.c:4788
+#: config/bfin/bfin.c:4815 config/bfin/bfin.c:4828
+#, gcc-internal-format
+msgid "section of %q+D conflicts with previous declaration"
+msgstr ""
+
+#: c-family/c-common.c:6713
+#, gcc-internal-format
+msgid "section of %q+D cannot be overridden"
+msgstr ""
+
+#: c-family/c-common.c:6721
+#, gcc-internal-format
+msgid "section attribute not allowed for %q+D"
+msgstr ""
+
+#: c-family/c-common.c:6728
+#, gcc-internal-format
+msgid "section attributes are not supported for this target"
+msgstr ""
+
+#: c-family/c-common.c:6747
+#, gcc-internal-format
+msgid "requested alignment is not an integer constant"
+msgstr ""
+
+#: c-family/c-common.c:6754
+#, gcc-internal-format
+msgid "requested alignment is not a power of 2"
+msgstr ""
+
+#: c-family/c-common.c:6759
+#, gcc-internal-format
+msgid "requested alignment is too large"
+msgstr ""
+
+#: c-family/c-common.c:6815
+#, gcc-internal-format
+msgid "alignment may not be specified for %q+D"
+msgstr ""
+
+#: c-family/c-common.c:6822
+#, gcc-internal-format
+msgid "alignment for %q+D was previously specified as %d and may not be decreased"
+msgstr ""
+
+#: c-family/c-common.c:6826
+#, gcc-internal-format
+msgid "alignment for %q+D must be at least %d"
+msgstr ""
+
+#: c-family/c-common.c:6851
+#, gcc-internal-format
+msgid "inline function %q+D declared weak"
+msgstr ""
+
+#: c-family/c-common.c:6856
+#, gcc-internal-format
+msgid "indirect function %q+D cannot be declared weak"
+msgstr ""
+
+#: c-family/c-common.c:6893
+#, gcc-internal-format
+msgid "%q+D defined both normally and as %qE attribute"
+msgstr ""
+
+#: c-family/c-common.c:6901
+#, gcc-internal-format
+msgid "weak %q+D cannot be defined %qE"
+msgstr ""
+
+#: c-family/c-common.c:6918
+#, gcc-internal-format
+msgid "attribute %qE argument not a string"
+msgstr ""
+
+#: c-family/c-common.c:6994
+#, gcc-internal-format
+msgid "indirect function %q+D cannot be declared weakref"
+msgstr ""
+
+#: c-family/c-common.c:7016
+#, gcc-internal-format
+msgid "weakref attribute must appear before alias attribute"
+msgstr ""
+
+#: c-family/c-common.c:7045
+#, gcc-internal-format
+msgid "%qE attribute ignored on non-class types"
+msgstr ""
+
+#: c-family/c-common.c:7051
+#, gcc-internal-format
+msgid "%qE attribute ignored because %qT is already defined"
+msgstr ""
+
+#: c-family/c-common.c:7064
+#, gcc-internal-format
+msgid "visibility argument not a string"
+msgstr ""
+
+#: c-family/c-common.c:7076
+#, gcc-internal-format
+msgid "%qE attribute ignored on types"
+msgstr ""
+
+#: c-family/c-common.c:7092
+#, gcc-internal-format
+msgid "visibility argument must be one of \"default\", \"hidden\", \"protected\" or \"internal\""
+msgstr ""
+
+#: c-family/c-common.c:7103
+#, gcc-internal-format
+msgid "%qD redeclared with different visibility"
+msgstr ""
+
+#: c-family/c-common.c:7106 c-family/c-common.c:7110
+#, gcc-internal-format
+msgid "%qD was declared %qs which implies default visibility"
+msgstr ""
+
+#: c-family/c-common.c:7194
+#, gcc-internal-format
+msgid "tls_model argument not a string"
+msgstr ""
+
+#: c-family/c-common.c:7207
+#, gcc-internal-format
+msgid "tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\""
+msgstr ""
+
+#: c-family/c-common.c:7227 c-family/c-common.c:7333 c-family/c-common.c:8302
+#: config/m32c/m32c.c:3161
+#, gcc-internal-format
+msgid "%qE attribute applies only to functions"
+msgstr ""
+
+#: c-family/c-common.c:7233 c-family/c-common.c:7339 c-family/c-common.c:8308
+#, gcc-internal-format
+msgid "can%'t set %qE attribute after definition"
+msgstr ""
+
+#: c-family/c-common.c:7279
+#, gcc-internal-format
+msgid "alloc_size parameter outside range"
+msgstr ""
+
+#: c-family/c-common.c:7397
+#, gcc-internal-format
+msgid "%qE attribute duplicated"
+msgstr ""
+
+#: c-family/c-common.c:7399
+#, gcc-internal-format
+msgid "%qE attribute follows %qE"
+msgstr ""
+
+#: c-family/c-common.c:7498
+#, gcc-internal-format
+msgid "type was previously declared %qE"
+msgstr ""
+
+#: c-family/c-common.c:7551
+#, gcc-internal-format
+msgid "%qE argument not an identifier"
+msgstr ""
+
+#: c-family/c-common.c:7562
+#, gcc-internal-format
+msgid "%qD is not compatible with %qD"
+msgstr ""
+
+#: c-family/c-common.c:7565
+#, gcc-internal-format
+msgid "transaction_wrap argument is not a function"
+msgstr ""
+
+#: c-family/c-common.c:7613
+#, gcc-internal-format
+msgid "deprecated message is not a string"
+msgstr ""
+
+#: c-family/c-common.c:7654
+#, gcc-internal-format
+msgid "%qE attribute ignored for %qE"
+msgstr ""
+
+#: c-family/c-common.c:7714
+#, gcc-internal-format
+msgid "invalid vector type for attribute %qE"
+msgstr ""
+
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
+#, gcc-internal-format
+msgid "vector size not an integral multiple of component size"
+msgstr ""
+
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
+#, gcc-internal-format
+msgid "zero vector size"
+msgstr ""
+
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
+#, gcc-internal-format
+msgid "number of components of the vector not a power of two"
+msgstr ""
+
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
+#, gcc-internal-format
+msgid "nonnull attribute without arguments on a non-prototype"
+msgstr ""
+
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
+#, gcc-internal-format, gfc-internal-format
+msgid "nonnull argument has invalid operand number (argument %lu)"
+msgstr ""
+
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
+#, gcc-internal-format, gfc-internal-format
+msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
+msgstr ""
+
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
+#, gcc-internal-format, gfc-internal-format
+msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
+msgstr ""
+
+#: c-family/c-common.c:7885
+#, gcc-internal-format
+msgid "not enough variable arguments to fit a sentinel"
+msgstr ""
+
+#: c-family/c-common.c:7899
+#, gcc-internal-format
+msgid "missing sentinel in function call"
+msgstr ""
+
+#: c-family/c-common.c:7940
+#, gcc-internal-format, gfc-internal-format
+msgid "null argument where non-null required (argument %lu)"
+msgstr ""
+
+#: c-family/c-common.c:8005
+#, gcc-internal-format
+msgid "cleanup argument not an identifier"
+msgstr ""
+
+#: c-family/c-common.c:8012
+#, gcc-internal-format
+msgid "cleanup argument not a function"
+msgstr ""
+
+#: c-family/c-common.c:8049
+#, gcc-internal-format
+msgid "%qE attribute requires prototypes with named arguments"
+msgstr ""
+
+#: c-family/c-common.c:8057
+#, gcc-internal-format
+msgid "%qE attribute only applies to variadic functions"
+msgstr ""
+
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
+#, gcc-internal-format
+msgid "requested position is not an integer constant"
+msgstr ""
+
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
+#, gcc-internal-format
+msgid "requested position is less than zero"
+msgstr ""
+
+#: c-family/c-common.c:8197
+#, gcc-internal-format, gfc-internal-format
+msgid "bad option %s to optimize attribute"
+msgstr ""
+
+#: c-family/c-common.c:8200
+#, gcc-internal-format, gfc-internal-format
+msgid "bad option %s to pragma attribute"
+msgstr ""
+
+#: c-family/c-common.c:8427
+#, gcc-internal-format
+msgid "not enough arguments to function %qE"
+msgstr ""
+
+#: c-family/c-common.c:8463 c-family/c-common.c:8509
+#, gcc-internal-format
+msgid "non-floating-point argument in call to function %qE"
+msgstr ""
+
+#: c-family/c-common.c:8486
+#, gcc-internal-format
+msgid "non-floating-point arguments in call to function %qE"
+msgstr ""
+
+#: c-family/c-common.c:8502
+#, gcc-internal-format
+msgid "non-const integer argument %u in call to function %qE"
+msgstr ""
+
+#: c-family/c-common.c:8522
+#, gcc-internal-format
+msgid "non-integer argument 3 in call to function %qE"
+msgstr ""
+
+#: c-family/c-common.c:8847
+#, gcc-internal-format
+msgid "cannot apply %<offsetof%> to static data member %qD"
+msgstr ""
+
+#: c-family/c-common.c:8852
+#, gcc-internal-format
+msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
+msgstr ""
+
+#: c-family/c-common.c:8859
+#, gcc-internal-format
+msgid "cannot apply %<offsetof%> to a non constant address"
+msgstr ""
+
+#: c-family/c-common.c:8872 cp/typeck.c:5030
+#, gcc-internal-format
+msgid "attempt to take address of bit-field structure member %qD"
+msgstr ""
+
+#: c-family/c-common.c:8924
+#, gcc-internal-format
+msgid "index %E denotes an offset greater than size of %qT"
+msgstr ""
+
+#: c-family/c-common.c:8964
+#, gcc-internal-format
+msgid "the omitted middle operand in ?: will always be %<true%>, suggest explicit middle operand"
+msgstr ""
+
+#: c-family/c-common.c:8985
+#, gcc-internal-format
+msgid "assignment of member %qD in read-only object"
+msgstr ""
+
+#: c-family/c-common.c:8987
+#, gcc-internal-format
+msgid "increment of member %qD in read-only object"
+msgstr ""
+
+#: c-family/c-common.c:8989
+#, gcc-internal-format
+msgid "decrement of member %qD in read-only object"
+msgstr ""
+
+#: c-family/c-common.c:8991
+#, gcc-internal-format
+msgid "member %qD in read-only object used as %<asm%> output"
+msgstr ""
+
+#: c-family/c-common.c:8995
+#, gcc-internal-format
+msgid "assignment of read-only member %qD"
+msgstr ""
+
+#: c-family/c-common.c:8996
+#, gcc-internal-format
+msgid "increment of read-only member %qD"
+msgstr ""
+
+#: c-family/c-common.c:8997
+#, gcc-internal-format
+msgid "decrement of read-only member %qD"
+msgstr ""
+
+#: c-family/c-common.c:8998
+#, gcc-internal-format
+msgid "read-only member %qD used as %<asm%> output"
+msgstr ""
+
+#: c-family/c-common.c:9002
+#, gcc-internal-format
+msgid "assignment of read-only variable %qD"
+msgstr ""
+
+#: c-family/c-common.c:9003
+#, gcc-internal-format
+msgid "increment of read-only variable %qD"
+msgstr ""
+
+#: c-family/c-common.c:9004
+#, gcc-internal-format
+msgid "decrement of read-only variable %qD"
+msgstr ""
+
+#: c-family/c-common.c:9005
+#, gcc-internal-format
+msgid "read-only variable %qD used as %<asm%> output"
+msgstr ""
+
+#: c-family/c-common.c:9008
+#, gcc-internal-format
+msgid "assignment of read-only parameter %qD"
+msgstr ""
+
+#: c-family/c-common.c:9009
+#, gcc-internal-format
+msgid "increment of read-only parameter %qD"
+msgstr ""
+
+#: c-family/c-common.c:9010
+#, gcc-internal-format
+msgid "decrement of read-only parameter %qD"
+msgstr ""
+
+#: c-family/c-common.c:9011
+#, gcc-internal-format
+msgid "read-only parameter %qD use as %<asm%> output"
+msgstr ""
+
+#: c-family/c-common.c:9016
+#, gcc-internal-format
+msgid "assignment of read-only named return value %qD"
+msgstr ""
+
+#: c-family/c-common.c:9018
+#, gcc-internal-format
+msgid "increment of read-only named return value %qD"
+msgstr ""
+
+#: c-family/c-common.c:9020
+#, gcc-internal-format
+msgid "decrement of read-only named return value %qD"
+msgstr ""
+
+#: c-family/c-common.c:9022
+#, gcc-internal-format
+msgid "read-only named return value %qD used as %<asm%>output"
+msgstr ""
+
+#: c-family/c-common.c:9027
+#, gcc-internal-format
+msgid "assignment of function %qD"
+msgstr ""
+
+#: c-family/c-common.c:9028
+#, gcc-internal-format
+msgid "increment of function %qD"
+msgstr ""
+
+#: c-family/c-common.c:9029
+#, gcc-internal-format
+msgid "decrement of function %qD"
+msgstr ""
+
+#: c-family/c-common.c:9030
+#, gcc-internal-format
+msgid "function %qD used as %<asm%> output"
+msgstr ""
+
+#: c-family/c-common.c:9036
+#, gcc-internal-format
+msgid "read-only location %qE used as %<asm%> output"
+msgstr ""
+
+#: c-family/c-common.c:9050
+#, gcc-internal-format
+msgid "lvalue required as left operand of assignment"
+msgstr ""
+
+#: c-family/c-common.c:9053
+#, gcc-internal-format
+msgid "lvalue required as increment operand"
+msgstr ""
+
+#: c-family/c-common.c:9056
+#, gcc-internal-format
+msgid "lvalue required as decrement operand"
+msgstr ""
+
+#: c-family/c-common.c:9059
+#, gcc-internal-format
+msgid "lvalue required as unary %<&%> operand"
+msgstr ""
+
+#: c-family/c-common.c:9062
+#, gcc-internal-format
+msgid "lvalue required in asm statement"
+msgstr ""
+
+#: c-family/c-common.c:9079
+#, gcc-internal-format
+msgid "invalid type argument (have %qT)"
+msgstr ""
+
+#: c-family/c-common.c:9083
+#, gcc-internal-format
+msgid "invalid type argument of array indexing (have %qT)"
+msgstr ""
+
+#: c-family/c-common.c:9088
+#, gcc-internal-format
+msgid "invalid type argument of unary %<*%> (have %qT)"
+msgstr ""
+
+#: c-family/c-common.c:9093
+#, gcc-internal-format
+msgid "invalid type argument of %<->%> (have %qT)"
+msgstr ""
+
+#: c-family/c-common.c:9098
+#, gcc-internal-format
+msgid "invalid type argument of implicit conversion (have %qT)"
+msgstr ""
+
+#: c-family/c-common.c:9231
+#, gcc-internal-format
+msgid "size of array is too large"
+msgstr ""
+
+#: c-family/c-common.c:9427
+#, gcc-internal-format
+msgid "incorrect number of arguments to function %qE"
+msgstr ""
+
+#: c-family/c-common.c:9435
+#, gcc-internal-format
+msgid "argument 1 of %qE must be a non-void pointer type"
+msgstr ""
+
+#: c-family/c-common.c:9444
+#, gcc-internal-format
+msgid "argument 1 of %qE must be a pointer to a constant size type"
+msgstr ""
+
+#: c-family/c-common.c:9455
+#, gcc-internal-format
+msgid "argument 1 of %qE must be a pointer to a nonzero size object"
+msgstr ""
+
+#: c-family/c-common.c:9470
+#, gcc-internal-format
+msgid "argument %d of %qE must be a pointer type"
+msgstr ""
+
+#: c-family/c-common.c:9477
+#, gcc-internal-format
+msgid "size mismatch in argument %d of %qE"
+msgstr ""
+
+#: c-family/c-common.c:9493
+#, gcc-internal-format
+msgid "invalid memory model argument %d of %qE"
+msgstr ""
+
+#: c-family/c-common.c:9500
+#, gcc-internal-format
+msgid "non-integer memory model argument %d of %qE"
+msgstr ""
+
+#: c-family/c-common.c:10026
+#, gcc-internal-format
+msgid "array subscript has type %<char%>"
+msgstr ""
+
+#: c-family/c-common.c:10061
+#, gcc-internal-format
+msgid "suggest parentheses around %<+%> inside %<<<%>"
+msgstr ""
+
+#: c-family/c-common.c:10064
+#, gcc-internal-format
+msgid "suggest parentheses around %<-%> inside %<<<%>"
+msgstr ""
+
+#: c-family/c-common.c:10070
+#, gcc-internal-format
+msgid "suggest parentheses around %<+%> inside %<>>%>"
+msgstr ""
+
+#: c-family/c-common.c:10073
+#, gcc-internal-format
+msgid "suggest parentheses around %<-%> inside %<>>%>"
+msgstr ""
+
+#: c-family/c-common.c:10079
+#, gcc-internal-format
+msgid "suggest parentheses around %<&&%> within %<||%>"
+msgstr ""
+
+#: c-family/c-common.c:10088
+#, gcc-internal-format
+msgid "suggest parentheses around arithmetic in operand of %<|%>"
+msgstr ""
+
+#: c-family/c-common.c:10093
+#, gcc-internal-format
+msgid "suggest parentheses around comparison in operand of %<|%>"
+msgstr ""
+
+#: c-family/c-common.c:10097
+#, gcc-internal-format
+msgid "suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%> to %<~%>"
+msgstr ""
+
+#: c-family/c-common.c:10107
+#, gcc-internal-format
+msgid "suggest parentheses around arithmetic in operand of %<^%>"
+msgstr ""
+
+#: c-family/c-common.c:10112
+#, gcc-internal-format
+msgid "suggest parentheses around comparison in operand of %<^%>"
+msgstr ""
+
+#: c-family/c-common.c:10118
+#, gcc-internal-format
+msgid "suggest parentheses around %<+%> in operand of %<&%>"
+msgstr ""
+
+#: c-family/c-common.c:10121
+#, gcc-internal-format
+msgid "suggest parentheses around %<-%> in operand of %<&%>"
+msgstr ""
+
+#: c-family/c-common.c:10126
+#, gcc-internal-format
+msgid "suggest parentheses around comparison in operand of %<&%>"
+msgstr ""
+
+#: c-family/c-common.c:10130
+#, gcc-internal-format
+msgid "suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%> to %<~%>"
+msgstr ""
+
+#: c-family/c-common.c:10138
+#, gcc-internal-format
+msgid "suggest parentheses around comparison in operand of %<==%>"
+msgstr ""
+
+#: c-family/c-common.c:10144
+#, gcc-internal-format
+msgid "suggest parentheses around comparison in operand of %<!=%>"
+msgstr ""
+
+#: c-family/c-common.c:10155
+#, gcc-internal-format
+msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning"
+msgstr ""
+
+#: c-family/c-common.c:10170
+#, gcc-internal-format
+msgid "label %q+D defined but not used"
+msgstr ""
+
+#: c-family/c-common.c:10172
+#, gcc-internal-format
+msgid "label %q+D declared but not defined"
+msgstr ""
+
+#: c-family/c-common.c:10188
+#, gcc-internal-format
+msgid "division by zero"
+msgstr ""
+
+#: c-family/c-common.c:10220
+#, gcc-internal-format
+msgid "comparison between types %qT and %qT"
+msgstr ""
+
+#: c-family/c-common.c:10271
+#, gcc-internal-format
+msgid "comparison between signed and unsigned integer expressions"
+msgstr ""
+
+#: c-family/c-common.c:10322
+#, gcc-internal-format
+msgid "promoted ~unsigned is always non-zero"
+msgstr ""
+
+#: c-family/c-common.c:10325
+#, gcc-internal-format
+msgid "comparison of promoted ~unsigned with constant"
+msgstr ""
+
+#: c-family/c-common.c:10335
+#, gcc-internal-format
+msgid "comparison of promoted ~unsigned with unsigned"
+msgstr ""
+
+#: c-family/c-common.c:10513
+#, gcc-internal-format
+msgid "typedef %qD locally defined but not used"
+msgstr ""
+
+#: c-family/c-format.c:126 c-family/c-format.c:313
+#, gcc-internal-format
+msgid "format string has invalid operand number"
+msgstr ""
+
+#: c-family/c-format.c:142
+#, gcc-internal-format
+msgid "function does not return string type"
+msgstr ""
+
+#: c-family/c-format.c:176
+#, gcc-internal-format
+msgid "format string argument is not a string type"
+msgstr ""
+
+#: c-family/c-format.c:202
+#, gcc-internal-format
+msgid "found a %<%s%> reference but the format argument should be a string"
+msgstr ""
+
+#: c-family/c-format.c:205
+#, gcc-internal-format
+msgid "found a %qT but the format argument should be a string"
+msgstr ""
+
+#: c-family/c-format.c:215
+#, gcc-internal-format
+msgid "format argument should be a %<%s%> reference but a string was found"
+msgstr ""
+
+#: c-family/c-format.c:237
+#, gcc-internal-format
+msgid "format argument should be a %<%s%> reference"
+msgstr ""
+
+#: c-family/c-format.c:281
+#, gcc-internal-format
+msgid "unrecognized format specifier"
+msgstr ""
+
+#: c-family/c-format.c:296
+#, gcc-internal-format
+msgid "%qE is only allowed in Objective-C dialects"
+msgstr ""
+
+#: c-family/c-format.c:305
+#, gcc-internal-format
+msgid "%qE is an unrecognized format function type"
+msgstr ""
+
+#: c-family/c-format.c:319
+#, gcc-internal-format
+msgid "%<...%> has invalid operand number"
+msgstr ""
+
+#: c-family/c-format.c:326
+#, gcc-internal-format
+msgid "format string argument follows the args to be formatted"
+msgstr ""
+
+#: c-family/c-format.c:1065
+#, gcc-internal-format
+msgid "function might be possible candidate for %qs format attribute"
+msgstr ""
+
+#: c-family/c-format.c:1155 c-family/c-format.c:1176 c-family/c-format.c:2221
+#, gcc-internal-format
+msgid "missing $ operand number in format"
+msgstr ""
+
+#: c-family/c-format.c:1185
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support %%n$ operand number formats"
+msgstr ""
+
+#: c-family/c-format.c:1192
+#, gcc-internal-format
+msgid "operand number out of range in format"
+msgstr ""
+
+#: c-family/c-format.c:1215
+#, gcc-internal-format, gfc-internal-format
+msgid "format argument %d used more than once in %s format"
+msgstr ""
+
+#: c-family/c-format.c:1247
+#, gcc-internal-format
+msgid "$ operand number used after format without operand number"
+msgstr ""
+
+#: c-family/c-format.c:1278
+#, gcc-internal-format, gfc-internal-format
+msgid "format argument %d unused before used argument %d in $-style format"
+msgstr ""
+
+#: c-family/c-format.c:1373
+#, gcc-internal-format
+msgid "format not a string literal, format string not checked"
+msgstr ""
+
+#: c-family/c-format.c:1388 c-family/c-format.c:1391
+#, gcc-internal-format
+msgid "format not a string literal and no format arguments"
+msgstr ""
+
+#: c-family/c-format.c:1394
+#, gcc-internal-format
+msgid "format not a string literal, argument types not checked"
+msgstr ""
+
+#: c-family/c-format.c:1407
+#, gcc-internal-format
+msgid "too many arguments for format"
+msgstr ""
+
+#: c-family/c-format.c:1410
+#, gcc-internal-format
+msgid "unused arguments in $-style format"
+msgstr ""
+
+#: c-family/c-format.c:1413
+#, gcc-internal-format, gfc-internal-format
+msgid "zero-length %s format string"
+msgstr ""
+
+#: c-family/c-format.c:1417
+#, gcc-internal-format
+msgid "format is a wide character string"
+msgstr ""
+
+#: c-family/c-format.c:1420
+#, gcc-internal-format
+msgid "unterminated format string"
+msgstr ""
+
+#: c-family/c-format.c:1664
+#, gcc-internal-format
+msgid "spurious trailing %<%%%> in format"
+msgstr ""
+
+#: c-family/c-format.c:1708 c-family/c-format.c:1988
+#, gcc-internal-format, gfc-internal-format
+msgid "repeated %s in format"
+msgstr ""
+
+#: c-family/c-format.c:1721
+#, gcc-internal-format
+msgid "missing fill character at end of strfmon format"
+msgstr ""
+
+#: c-family/c-format.c:1809
+#, gcc-internal-format, gfc-internal-format
+msgid "zero width in %s format"
+msgstr ""
+
+#: c-family/c-format.c:1827
+#, gcc-internal-format, gfc-internal-format
+msgid "empty left precision in %s format"
+msgstr ""
+
+#: c-family/c-format.c:1903
+#, gcc-internal-format, gfc-internal-format
+msgid "empty precision in %s format"
+msgstr ""
+
+#: c-family/c-format.c:1972
+#, gcc-internal-format
+msgid "%s does not support the %qs %s length modifier"
+msgstr ""
+
+#: c-family/c-format.c:2005
+#, gcc-internal-format
+msgid "conversion lacks type at end of format"
+msgstr ""
+
+#: c-family/c-format.c:2016
+#, gcc-internal-format
+msgid "unknown conversion type character %qc in format"
+msgstr ""
+
+#: c-family/c-format.c:2019
+#, gcc-internal-format
+msgid "unknown conversion type character 0x%x in format"
+msgstr ""
+
+#: c-family/c-format.c:2026
+#, gcc-internal-format
+msgid "%s does not support the %<%%%c%> %s format"
+msgstr ""
+
+#: c-family/c-format.c:2042
+#, gcc-internal-format
+msgid "%s used with %<%%%c%> %s format"
+msgstr ""
+
+#: c-family/c-format.c:2051
+#, gcc-internal-format, gfc-internal-format
+msgid "%s does not support %s"
+msgstr ""
+
+#: c-family/c-format.c:2061
+#, gcc-internal-format
+msgid "%s does not support %s with the %<%%%c%> %s format"
+msgstr ""
+
+#: c-family/c-format.c:2097
+#, gcc-internal-format
+msgid "%s ignored with %s and %<%%%c%> %s format"
+msgstr ""
+
+#: c-family/c-format.c:2101
+#, gcc-internal-format, gfc-internal-format
+msgid "%s ignored with %s in %s format"
+msgstr ""
+
+#: c-family/c-format.c:2108
+#, gcc-internal-format
+msgid "use of %s and %s together with %<%%%c%> %s format"
+msgstr ""
+
+#: c-family/c-format.c:2112
+#, gcc-internal-format, gfc-internal-format
+msgid "use of %s and %s together in %s format"
+msgstr ""
+
+#: c-family/c-format.c:2131
+#, gcc-internal-format
+msgid "%<%%%c%> yields only last 2 digits of year in some locales"
+msgstr ""
+
+#: c-family/c-format.c:2134
+#, gcc-internal-format
+msgid "%<%%%c%> yields only last 2 digits of year"
+msgstr ""
+
+#. The end of the format string was reached.
+#: c-family/c-format.c:2151
+#, gcc-internal-format
+msgid "no closing %<]%> for %<%%[%> format"
+msgstr ""
+
+#: c-family/c-format.c:2165
+#, gcc-internal-format
+msgid "use of %qs length modifier with %qc type character"
+msgstr ""
+
+#: c-family/c-format.c:2183
+#, gcc-internal-format
+msgid "%s does not support the %<%%%s%c%> %s format"
+msgstr ""
+
+#: c-family/c-format.c:2200
+#, gcc-internal-format
+msgid "operand number specified with suppressed assignment"
+msgstr ""
+
+#: c-family/c-format.c:2203
+#, gcc-internal-format
+msgid "operand number specified for format taking no argument"
+msgstr ""
+
+#: c-family/c-format.c:2288
+#, gcc-internal-format
+msgid "embedded %<\\0%> in format"
+msgstr ""
+
+#: c-family/c-format.c:2357
+#, gcc-internal-format, gfc-internal-format
+msgid "writing through null pointer (argument %d)"
+msgstr ""
+
+#: c-family/c-format.c:2365
+#, gcc-internal-format, gfc-internal-format
+msgid "reading through null pointer (argument %d)"
+msgstr ""
+
+#: c-family/c-format.c:2385
+#, gcc-internal-format, gfc-internal-format
+msgid "writing into constant object (argument %d)"
+msgstr ""
+
+#: c-family/c-format.c:2396
+#, gcc-internal-format, gfc-internal-format
+msgid "extra type qualifiers in format argument (argument %d)"
+msgstr ""
+
+#: c-family/c-format.c:2512
+#, gcc-internal-format
+msgid "%s %<%s%.*s%> expects argument of type %<%s%s%>, but argument %d has type %qT"
+msgstr ""
+
+#: c-family/c-format.c:2519
+#, gcc-internal-format
+msgid "%s %<%s%.*s%> expects a matching %<%s%s%> argument"
+msgstr ""
+
+#: c-family/c-format.c:2527
+#, gcc-internal-format
+msgid "%s %<%s%.*s%> expects argument of type %<%T%s%>, but argument %d has type %qT"
+msgstr ""
+
+#: c-family/c-format.c:2534
+#, gcc-internal-format
+msgid "%s %<%s%.*s%> expects a matching %<%T%s%> argument"
+msgstr ""
+
+#: c-family/c-format.c:2594 c-family/c-format.c:2600 c-family/c-format.c:2751
+#, gcc-internal-format
+msgid "%<__gcc_host_wide_int__%> is not defined as a type"
+msgstr ""
+
+#: c-family/c-format.c:2607 c-family/c-format.c:2761
+#, gcc-internal-format
+msgid "%<__gcc_host_wide_int__%> is not defined as %<long%> or %<long long%>"
+msgstr ""
+
+#: c-family/c-format.c:2657
+#, gcc-internal-format
+msgid "%<locus%> is not defined as a type"
+msgstr ""
+
+#: c-family/c-format.c:2710
+#, gcc-internal-format
+msgid "%<location_t%> is not defined as a type"
+msgstr ""
+
+#: c-family/c-format.c:2727
+#, gcc-internal-format
+msgid "%<tree%> is not defined as a type"
+msgstr ""
+
+#: c-family/c-format.c:2732
+#, gcc-internal-format
+msgid "%<tree%> is not defined as a pointer type"
+msgstr ""
+
+#: c-family/c-format.c:3005
+#, gcc-internal-format
+msgid "args to be formatted is not %<...%>"
+msgstr ""
+
+#: c-family/c-format.c:3017
+#, gcc-internal-format
+msgid "strftime formats cannot format arguments"
+msgstr ""
+
+#: c-family/c-lex.c:228
+#, gcc-internal-format
+msgid "badly nested C headers from preprocessor"
+msgstr ""
+
+#: c-family/c-lex.c:263
+#, gcc-internal-format, gfc-internal-format
+msgid "ignoring #pragma %s %s"
+msgstr ""
+
+#. ... or not.
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
+#, gcc-internal-format
+msgid "stray %<@%> in program"
+msgstr ""
+
+#: c-family/c-lex.c:420
+#, gcc-internal-format
+msgid "stray %qs in program"
+msgstr ""
+
+#: c-family/c-lex.c:430
+#, gcc-internal-format, gfc-internal-format
+msgid "missing terminating %c character"
+msgstr ""
+
+#: c-family/c-lex.c:432
+#, gcc-internal-format
+msgid "stray %qc in program"
+msgstr ""
+
+#: c-family/c-lex.c:434
+#, gcc-internal-format
+msgid "stray %<\\%o%> in program"
+msgstr ""
+
+#: c-family/c-lex.c:638
+#, gcc-internal-format
+msgid "this decimal constant is unsigned only in ISO C90"
+msgstr ""
+
+#: c-family/c-lex.c:642
+#, gcc-internal-format
+msgid "this decimal constant would be unsigned in ISO C90"
+msgstr ""
+
+#: c-family/c-lex.c:662
+#, gcc-internal-format
+msgid "integer constant is too large for %<unsigned long%> type"
+msgstr ""
+
+#: c-family/c-lex.c:700
+#, gcc-internal-format
+msgid "unsuffixed float constant"
+msgstr ""
+
+#: c-family/c-lex.c:732
+#, gcc-internal-format
+msgid "unsupported non-standard suffix on floating constant"
+msgstr ""
+
+#: c-family/c-lex.c:737
+#, gcc-internal-format
+msgid "non-standard suffix on floating constant"
+msgstr ""
+
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
+#, gcc-internal-format
+msgid "floating constant exceeds range of %qT"
+msgstr ""
+
+#: c-family/c-lex.c:804
+#, gcc-internal-format
+msgid "floating constant truncated to zero"
+msgstr ""
+
+#: c-family/c-lex.c:1000
+#, gcc-internal-format
+msgid "repeated %<@%> before Objective-C string"
+msgstr ""
+
+#: c-family/c-lex.c:1019 cp/parser.c:3478
+#, gcc-internal-format
+msgid "unsupported non-standard concatenation of string literals"
+msgstr ""
+
+#: c-family/c-lex.c:1047
+#, gcc-internal-format
+msgid "traditional C rejects string constant concatenation"
+msgstr ""
+
+#: c-family/c-omp.c:144
+#, gcc-internal-format
+msgid "invalid expression type for %<#pragma omp atomic%>"
+msgstr ""
+
+#: c-family/c-omp.c:201
+#, gcc-internal-format
+msgid "%<#pragma omp atomic update%> uses two different variables for memory"
+msgstr ""
+
+#: c-family/c-omp.c:203 c-family/c-omp.c:215
+#, gcc-internal-format
+msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
+msgstr ""
+
+#: c-family/c-omp.c:368 cp/semantics.c:4797
+#, gcc-internal-format
+msgid "invalid type for iteration variable %qE"
+msgstr ""
+
+#: c-family/c-omp.c:381
+#, gcc-internal-format
+msgid "%qE is not initialized"
+msgstr ""
+
+#: c-family/c-omp.c:398 cp/semantics.c:4712
+#, gcc-internal-format
+msgid "missing controlling predicate"
+msgstr ""
+
+#: c-family/c-omp.c:480 cp/semantics.c:4469
+#, gcc-internal-format
+msgid "invalid controlling predicate"
+msgstr ""
+
+#: c-family/c-omp.c:487 cp/semantics.c:4718
+#, gcc-internal-format
+msgid "missing increment expression"
+msgstr ""
+
+#: c-family/c-omp.c:556 cp/semantics.c:4574
+#, gcc-internal-format
+msgid "invalid increment expression"
+msgstr ""
+
+#: c-family/c-opts.c:308
+#, gcc-internal-format
+msgid "-I- specified twice"
+msgstr ""
+
+#: c-family/c-opts.c:311
+#, gcc-internal-format
+msgid "obsolete option -I- used, please use -iquote instead"
+msgstr ""
+
+#: c-family/c-opts.c:494
+#, gcc-internal-format
+msgid "-Werror=normalized=: set -Wnormalized=nfc"
+msgstr ""
+
+#: c-family/c-opts.c:508
+#, gcc-internal-format
+msgid "argument %qs to %<-Wnormalized%> not recognized"
+msgstr ""
+
+#: c-family/c-opts.c:739 fortran/cpp.c:347
+#, gcc-internal-format
+msgid "output filename specified twice"
+msgstr ""
+
+#: c-family/c-opts.c:878
+#, gcc-internal-format
+msgid "-fexcess-precision=standard for C++"
+msgstr ""
+
+#: c-family/c-opts.c:891
+#, gcc-internal-format
+msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode"
+msgstr ""
+
+#: c-family/c-opts.c:970
+#, gcc-internal-format
+msgid "-Wformat-y2k ignored without -Wformat"
+msgstr ""
+
+#: c-family/c-opts.c:972
+#, gcc-internal-format
+msgid "-Wformat-extra-args ignored without -Wformat"
+msgstr ""
+
+#: c-family/c-opts.c:974
+#, gcc-internal-format
+msgid "-Wformat-zero-length ignored without -Wformat"
+msgstr ""
+
+#: c-family/c-opts.c:976
+#, gcc-internal-format
+msgid "-Wformat-nonliteral ignored without -Wformat"
+msgstr ""
+
+#: c-family/c-opts.c:978
+#, gcc-internal-format
+msgid "-Wformat-contains-nul ignored without -Wformat"
+msgstr ""
+
+#: c-family/c-opts.c:980
+#, gcc-internal-format
+msgid "-Wformat-security ignored without -Wformat"
+msgstr ""
+
+#: c-family/c-opts.c:1017
+#, gcc-internal-format
+msgid "opening output file %s: %m"
+msgstr ""
+
+#: c-family/c-opts.c:1022
+#, gcc-internal-format, gfc-internal-format
+msgid "too many filenames given. Type %s --help for usage"
+msgstr ""
+
+#: c-family/c-opts.c:1152
+#, gcc-internal-format
+msgid "opening dependency file %s: %m"
+msgstr ""
+
+#: c-family/c-opts.c:1162
+#, gcc-internal-format
+msgid "closing dependency file %s: %m"
+msgstr ""
+
+#: c-family/c-opts.c:1165
+#, gcc-internal-format
+msgid "when writing output to %s: %m"
+msgstr ""
+
+#: c-family/c-opts.c:1245
+#, gcc-internal-format
+msgid "to generate dependencies you must specify either -M or -MM"
+msgstr ""
+
+#: c-family/c-opts.c:1268
+#, gcc-internal-format
+msgid "-MG may only be used with -M or -MM"
+msgstr ""
+
+#: c-family/c-opts.c:1298
+#, gcc-internal-format
+msgid "-fdirectives-only is incompatible with -Wunused_macros"
+msgstr ""
+
+#: c-family/c-opts.c:1300
+#, gcc-internal-format
+msgid "-fdirectives-only is incompatible with -traditional"
+msgstr ""
+
+#: c-family/c-opts.c:1456
+#, gcc-internal-format
+msgid "too late for # directive to set debug directory"
+msgstr ""
+
+#: c-family/c-pch.c:132
+#, gcc-internal-format
+msgid "can%'t create precompiled header %s: %m"
+msgstr ""
+
+#: c-family/c-pch.c:154
+#, gcc-internal-format
+msgid "can%'t write to %s: %m"
+msgstr ""
+
+#: c-family/c-pch.c:160
+#, gcc-internal-format
+msgid "%qs is not a valid output file"
+msgstr ""
+
+#: c-family/c-pch.c:193 c-family/c-pch.c:208 c-family/c-pch.c:225
+#, gcc-internal-format
+msgid "can%'t write %s: %m"
+msgstr ""
+
+#: c-family/c-pch.c:198 c-family/c-pch.c:215
+#, gcc-internal-format
+msgid "can%'t seek in %s: %m"
+msgstr ""
+
+#: c-family/c-pch.c:206 c-family/c-pch.c:253 c-family/c-pch.c:294
+#: c-family/c-pch.c:345
+#, gcc-internal-format
+msgid "can%'t read %s: %m"
+msgstr ""
+
+#: c-family/c-pch.c:483
+#, gcc-internal-format
+msgid "pch_preprocess pragma should only be used with -fpreprocessed"
+msgstr ""
+
+#: c-family/c-pch.c:484
+#, gcc-internal-format
+msgid "use #include instead"
+msgstr ""
+
+#: c-family/c-pch.c:490
+#, gcc-internal-format
+msgid "%s: couldn%'t open PCH file: %m"
+msgstr ""
+
+#: c-family/c-pch.c:495
+#, gcc-internal-format
+msgid "use -Winvalid-pch for more information"
+msgstr ""
+
+#: c-family/c-pch.c:496
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: PCH file was invalid"
+msgstr ""
+
+#: c-family/c-pragma.c:101
+#, gcc-internal-format
+msgid "#pragma pack (pop) encountered without matching #pragma pack (push)"
+msgstr ""
+
+#: c-family/c-pragma.c:114
+#, gcc-internal-format
+msgid "#pragma pack(pop, %E) encountered without matching #pragma pack(push, %E)"
+msgstr ""
+
+#: c-family/c-pragma.c:144
+#, gcc-internal-format
+msgid "missing %<(%> after %<#pragma pack%> - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:155 c-family/c-pragma.c:187
+#, gcc-internal-format
+msgid "invalid constant in %<#pragma pack%> - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:159 c-family/c-pragma.c:201
+#, gcc-internal-format
+msgid "malformed %<#pragma pack%> - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:164
+#, gcc-internal-format
+msgid "malformed %<#pragma pack(push[, id][, <n>])%> - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:166
+#, gcc-internal-format
+msgid "malformed %<#pragma pack(pop[, id])%> - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:175
+#, gcc-internal-format
+msgid "unknown action %qE for %<#pragma pack%> - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:204
+#, gcc-internal-format
+msgid "junk at end of %<#pragma pack%>"
+msgstr ""
+
+#: c-family/c-pragma.c:207
+#, gcc-internal-format
+msgid "#pragma pack has no effect with -fpack-struct - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:227
+#, gcc-internal-format, gfc-internal-format
+msgid "alignment must be a small power of two, not %d"
+msgstr ""
+
+#: c-family/c-pragma.c:267
+#, gcc-internal-format
+msgid "applying #pragma weak %q+D after first use results in unspecified behavior"
+msgstr ""
+
+#: c-family/c-pragma.c:345 c-family/c-pragma.c:350
+#, gcc-internal-format
+msgid "malformed #pragma weak, ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:354
+#, gcc-internal-format
+msgid "junk at end of %<#pragma weak%>"
+msgstr ""
+
+#: c-family/c-pragma.c:425 c-family/c-pragma.c:427
+#, gcc-internal-format
+msgid "malformed #pragma redefine_extname, ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:430
+#, gcc-internal-format
+msgid "junk at end of %<#pragma redefine_extname%>"
+msgstr ""
+
+#: c-family/c-pragma.c:459 c-family/c-pragma.c:554
+#, gcc-internal-format
+msgid "#pragma redefine_extname ignored due to conflict with previous rename"
+msgstr ""
+
+#: c-family/c-pragma.c:487
+#, gcc-internal-format
+msgid "#pragma redefine_extname ignored due to conflict with previous #pragma redefine_extname"
+msgstr ""
+
+#: c-family/c-pragma.c:508
+#, gcc-internal-format
+msgid "malformed #pragma extern_prefix, ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:511
+#, gcc-internal-format
+msgid "junk at end of %<#pragma extern_prefix%>"
+msgstr ""
+
+#: c-family/c-pragma.c:518
+#, gcc-internal-format
+msgid "#pragma extern_prefix not supported on this target"
+msgstr ""
+
+#: c-family/c-pragma.c:545
+#, gcc-internal-format
+msgid "asm declaration ignored due to conflict with previous rename"
+msgstr ""
+
+#: c-family/c-pragma.c:578
+#, gcc-internal-format
+msgid "#pragma redefine_extname ignored due to conflict with __asm__ declaration"
+msgstr ""
+
+#: c-family/c-pragma.c:640
+#, gcc-internal-format
+msgid "#pragma GCC visibility push() must specify default, internal, hidden or protected"
+msgstr ""
+
+#: c-family/c-pragma.c:682
+#, gcc-internal-format
+msgid "#pragma GCC visibility must be followed by push or pop"
+msgstr ""
+
+#: c-family/c-pragma.c:688
+#, gcc-internal-format
+msgid "no matching push for %<#pragma GCC visibility pop%>"
+msgstr ""
+
+#: c-family/c-pragma.c:693 c-family/c-pragma.c:700
+#, gcc-internal-format
+msgid "missing %<(%> after %<#pragma GCC visibility push%> - ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:696
+#, gcc-internal-format
+msgid "malformed #pragma GCC visibility push"
+msgstr ""
+
+#: c-family/c-pragma.c:704
+#, gcc-internal-format
+msgid "junk at end of %<#pragma GCC visibility%>"
+msgstr ""
+
+#: c-family/c-pragma.c:719
+#, gcc-internal-format
+msgid "missing [error|warning|ignored] after %<#pragma GCC diagnostic%>"
+msgstr ""
+
+#: c-family/c-pragma.c:738
+#, gcc-internal-format
+msgid "expected [error|warning|ignored|push|pop] after %<#pragma GCC diagnostic%>"
+msgstr ""
+
+#: c-family/c-pragma.c:742
+#, gcc-internal-format
+msgid "missing option after %<#pragma GCC diagnostic%> kind"
+msgstr ""
+
+#: c-family/c-pragma.c:754
+#, gcc-internal-format
+msgid "unknown option after %<#pragma GCC diagnostic%> kind"
+msgstr ""
+
+#: c-family/c-pragma.c:767
+#, gcc-internal-format
+msgid "#pragma GCC option is not allowed inside functions"
+msgstr ""
+
+#: c-family/c-pragma.c:780
+#, gcc-internal-format
+msgid "%<#pragma GCC option%> is not a string"
+msgstr ""
+
+#: c-family/c-pragma.c:807
+#, gcc-internal-format
+msgid "%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>"
+msgstr ""
+
+#: c-family/c-pragma.c:813
+#, gcc-internal-format
+msgid "#pragma GCC target string... is badly formed"
+msgstr ""
+
+#: c-family/c-pragma.c:836
+#, gcc-internal-format
+msgid "#pragma GCC optimize is not allowed inside functions"
+msgstr ""
+
+#: c-family/c-pragma.c:849
+#, gcc-internal-format
+msgid "%<#pragma GCC optimize%> is not a string or number"
+msgstr ""
+
+#: c-family/c-pragma.c:875
+#, gcc-internal-format
+msgid "%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>"
+msgstr ""
+
+#: c-family/c-pragma.c:881
+#, gcc-internal-format
+msgid "#pragma GCC optimize string... is badly formed"
+msgstr ""
+
+#: c-family/c-pragma.c:923
+#, gcc-internal-format
+msgid "junk at end of %<#pragma push_options%>"
+msgstr ""
+
+#: c-family/c-pragma.c:953
+#, gcc-internal-format
+msgid "junk at end of %<#pragma pop_options%>"
+msgstr ""
+
+#: c-family/c-pragma.c:960
+#, gcc-internal-format
+msgid "%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC push_options%>"
+msgstr ""
+
+#: c-family/c-pragma.c:1002
+#, gcc-internal-format
+msgid "junk at end of %<#pragma reset_options%>"
+msgstr ""
+
+#: c-family/c-pragma.c:1040 c-family/c-pragma.c:1047
+#, gcc-internal-format
+msgid "expected a string after %<#pragma message%>"
+msgstr ""
+
+#: c-family/c-pragma.c:1042
+#, gcc-internal-format
+msgid "malformed %<#pragma message%>, ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:1052
+#, gcc-internal-format
+msgid "junk at end of %<#pragma message%>"
+msgstr ""
+
+#: c-family/c-pragma.c:1055
+#, gcc-internal-format, gfc-internal-format
+msgid "#pragma message: %s"
+msgstr ""
+
+#: c-family/c-pragma.c:1092
+#, gcc-internal-format
+msgid "invalid location for %<pragma %s%>, ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:1099 c-family/c-pragma.c:1113
+#, gcc-internal-format
+msgid "malformed %<#pragma %s%>, ignored"
+msgstr ""
+
+#: c-family/c-pragma.c:1119
+#, gcc-internal-format
+msgid "junk at end of %<#pragma %s%>"
+msgstr ""
+
+#: c-family/c-pragma.c:1137
+#, gcc-internal-format
+msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++"
+msgstr ""
+
+#: c-family/c-pragma.c:1146
+#, gcc-internal-format
+msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target"
+msgstr ""
+
+#: c-family/c-pragma.c:1152
+#, gcc-internal-format
+msgid "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>"
+msgstr ""
+
+#: c-family/c-semantics.c:159
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong type argument to %s"
+msgstr ""
+
+#: common/config/alpha/alpha-common.c:78
+#, gcc-internal-format
+msgid "bad value %qs for -mtls-size switch"
+msgstr ""
+
+#: common/config/bfin/bfin-common.c:305 common/config/m68k/m68k-common.c:58
+#, gcc-internal-format, gfc-internal-format
+msgid "-mshared-library-id=%s is not between 0 and %d"
+msgstr ""
+
+#: common/config/bfin/bfin-common.c:324
+#, gcc-internal-format, gfc-internal-format
+msgid "-mcpu=%s is not valid"
+msgstr ""
+
+#: common/config/bfin/bfin-common.c:360
+#, gcc-internal-format, gfc-internal-format
+msgid "-mcpu=%s has invalid silicon revision"
+msgstr ""
+
+#: common/config/i386/i386-common.c:560
+#, gcc-internal-format
+msgid "-malign-loops is obsolete, use -falign-loops"
+msgstr ""
+
+#: common/config/i386/i386-common.c:562
+#, gcc-internal-format, gfc-internal-format
+msgid "-malign-loops=%d is not between 0 and %d"
+msgstr ""
+
+#: common/config/i386/i386-common.c:569
+#, gcc-internal-format
+msgid "-malign-jumps is obsolete, use -falign-jumps"
+msgstr ""
+
+#: common/config/i386/i386-common.c:571
+#, gcc-internal-format, gfc-internal-format
+msgid "-malign-jumps=%d is not between 0 and %d"
+msgstr ""
+
+#: common/config/i386/i386-common.c:579
+#, gcc-internal-format
+msgid "-malign-functions is obsolete, use -falign-functions"
+msgstr ""
+
+#: common/config/i386/i386-common.c:581
+#, gcc-internal-format, gfc-internal-format
+msgid "-malign-functions=%d is not between 0 and %d"
+msgstr ""
+
+#: common/config/i386/i386-common.c:590
+#, gcc-internal-format, gfc-internal-format
+msgid "-mbranch-cost=%d is not between 0 and 5"
+msgstr ""
+
+#: common/config/i386/i386-common.c:640
+#, gcc-internal-format
+msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
+msgstr ""
+
+#: common/config/i386/i386-common.c:646
+#, gcc-internal-format
+msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
+msgstr ""
+
+#: common/config/ia64/ia64-common.c:60
+#, gcc-internal-format
+msgid "bad value %<%s%> for -mtls-size= switch"
+msgstr ""
+
+#: common/config/rs6000/rs6000-common.c:208 config/sparc/sparc.c:958
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown -mdebug-%s switch"
+msgstr ""
+
+#: common/config/rs6000/rs6000-common.c:254
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown switch -mlong-double-%s"
+msgstr ""
+
+#: common/config/rs6000/rs6000-common.c:264
+#, gcc-internal-format
+msgid "-msingle-float option equivalent to -mhard-float"
+msgstr ""
+
+#: common/config/rs6000/rs6000-common.c:280
+#, gcc-internal-format
+msgid "-msimple-fpu option ignored"
+msgstr ""
+
+#: common/config/rx/rx-common.c:60
+#, gcc-internal-format
+msgid "the RX200 cpu does not have FPU hardware"
+msgstr ""
+
+#: common/config/s390/s390-common.c:94
+#, gcc-internal-format
+msgid "stack guard value must be an exact power of 2"
+msgstr ""
+
+#: common/config/s390/s390-common.c:99
+#, gcc-internal-format
+msgid "stack size must be an exact power of 2"
+msgstr ""
+
+#: common/config/v850/v850-common.c:48
+#, gcc-internal-format
+msgid "value passed in %qs is too large"
+msgstr ""
+
+#: config/darwin-c.c:85
+#, gcc-internal-format
+msgid "too many #pragma options align=reset"
+msgstr ""
+
+#: config/darwin-c.c:105 config/darwin-c.c:108 config/darwin-c.c:110
+#: config/darwin-c.c:112
+#, gcc-internal-format
+msgid "malformed '#pragma options', ignoring"
+msgstr ""
+
+#: config/darwin-c.c:115
+#, gcc-internal-format
+msgid "junk at end of '#pragma options'"
+msgstr ""
+
+#: config/darwin-c.c:125
+#, gcc-internal-format
+msgid "malformed '#pragma options align={mac68k|power|reset}', ignoring"
+msgstr ""
+
+#: config/darwin-c.c:137
+#, gcc-internal-format
+msgid "missing '(' after '#pragma unused', ignoring"
+msgstr ""
+
+#: config/darwin-c.c:158
+#, gcc-internal-format
+msgid "missing ')' after '#pragma unused', ignoring"
+msgstr ""
+
+#: config/darwin-c.c:161
+#, gcc-internal-format
+msgid "junk at end of '#pragma unused'"
+msgstr ""
+
+#: config/darwin-c.c:172
+#, gcc-internal-format
+msgid "malformed '#pragma ms_struct', ignoring"
+msgstr ""
+
+#: config/darwin-c.c:180
+#, gcc-internal-format
+msgid "malformed '#pragma ms_struct {on|off|reset}', ignoring"
+msgstr ""
+
+#: config/darwin-c.c:183
+#, gcc-internal-format
+msgid "junk at end of '#pragma ms_struct'"
+msgstr ""
+
+#: config/darwin-c.c:409
+#, gcc-internal-format, gfc-internal-format
+msgid "subframework include %s conflicts with framework include"
+msgstr ""
+
+#: config/darwin-c.c:592
+#, gcc-internal-format
+msgid "unknown value %qs of -mmacosx-version-min"
+msgstr ""
+
+#: config/darwin-driver.c:48
+#, gcc-internal-format
+msgid "sysctl for kern.osversion failed: %m"
+msgstr ""
+
+#: config/darwin-driver.c:85
+#, gcc-internal-format
+msgid "couldn%'t understand kern.osversion %q.*s"
+msgstr ""
+
+#: config/darwin.c:1620
+#, gcc-internal-format
+msgid "the use of _OBJC_-prefixed variable names to select meta-data sections is deprecated at 4.6 and will be removed in 4.7"
+msgstr ""
+
+#: config/darwin.c:1826
+#, gcc-internal-format, gfc-internal-format
+msgid "failed to open temporary file %s for LTO output"
+msgstr ""
+
+#: config/darwin.c:1915
+#, gcc-internal-format
+msgid "%qE 2.95 vtable-compatibility attribute applies only when compiling a kext"
+msgstr ""
+
+#: config/darwin.c:1922
+#, gcc-internal-format
+msgid "%qE 2.95 vtable-compatibility attribute applies only to C++ classes"
+msgstr ""
+
+#: config/darwin.c:2634
+#, gcc-internal-format
+msgid "internal and protected visibility attributes not supported in this configuration; ignored"
+msgstr ""
+
+#: config/darwin.c:2790
+#, gcc-internal-format, gfc-internal-format
+msgid "failed to open temporary file %s with LTO output"
+msgstr ""
+
+#: config/darwin.c:2963
+#, gcc-internal-format
+msgid "%<-fobjc-abi-version%> >= 2 must be used for %<-m64%> targets with %<-fnext-runtime%>"
+msgstr ""
+
+#: config/darwin.c:2967
+#, gcc-internal-format
+msgid "%<-fobjc-abi-version%> >= 2 is not supported on %<-m32%> targets with %<-fnext-runtime%>"
+msgstr ""
+
+#: config/darwin.c:3038
+#, gcc-internal-format
+msgid "%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>"
+msgstr ""
+
+#: config/darwin.c:3223
+#, gcc-internal-format
+msgid "built-in function %qD requires the %<-mconstant-cfstrings%> flag"
+msgstr ""
+
+#: config/darwin.c:3230
+#, gcc-internal-format
+msgid "built-in function %qD takes one argument only"
+msgstr ""
+
+#: config/darwin.c:3304
+#, gcc-internal-format
+msgid "CFString literal is missing"
+msgstr ""
+
+#: config/darwin.c:3315
+#, gcc-internal-format
+msgid "CFString literal expression is not a string constant"
+msgstr ""
+
+#: config/darwin.c:3338
+#, gcc-internal-format, gfc-internal-format
+msgid "%s in CFString literal"
+msgstr ""
+
+#: config/host-darwin.c:61
+#, gcc-internal-format
+msgid "couldn%'t unmap pch_address_space: %m"
+msgstr ""
+
+#: config/sol2-c.c:93 config/sol2-c.c:109
+#, gcc-internal-format
+msgid "malformed %<#pragma align%>, ignoring"
+msgstr ""
+
+#: config/sol2-c.c:102
+#, gcc-internal-format
+msgid "invalid alignment for %<#pragma align%>, ignoring"
+msgstr ""
+
+#: config/sol2-c.c:117
+#, gcc-internal-format
+msgid "%<#pragma align%> must appear before the declaration of %D, ignoring"
+msgstr ""
+
+#: config/sol2-c.c:129 config/sol2-c.c:141
+#, gcc-internal-format
+msgid "malformed %<#pragma align%>"
+msgstr ""
+
+#: config/sol2-c.c:136
+#, gcc-internal-format
+msgid "junk at end of %<#pragma align%>"
+msgstr ""
+
+#: config/sol2-c.c:157 config/sol2-c.c:164
+#, gcc-internal-format
+msgid "malformed %<#pragma init%>, ignoring"
+msgstr ""
+
+#: config/sol2-c.c:188 config/sol2-c.c:200
+#, gcc-internal-format
+msgid "malformed %<#pragma init%>"
+msgstr ""
+
+#: config/sol2-c.c:195
+#, gcc-internal-format
+msgid "junk at end of %<#pragma init%>"
+msgstr ""
+
+#: config/sol2-c.c:216 config/sol2-c.c:223
+#, gcc-internal-format
+msgid "malformed %<#pragma fini%>, ignoring"
+msgstr ""
+
+#: config/sol2-c.c:247 config/sol2-c.c:259
+#, gcc-internal-format
+msgid "malformed %<#pragma fini%>"
+msgstr ""
+
+#: config/sol2-c.c:254
+#, gcc-internal-format
+msgid "junk at end of %<#pragma fini%>"
+msgstr ""
+
+#: config/sol2.c:56
+#, gcc-internal-format
+msgid "ignoring %<#pragma align%> for explicitly aligned %q+D"
+msgstr ""
+
+#: config/vxworks.c:146
+#, gcc-internal-format
+msgid "PIC is only supported for RTPs"
+msgstr ""
+
+#. Mach-O supports 'weak imports', and 'weak definitions' in coalesced
+#. sections. machopic_select_section ensures that weak variables go in
+#. coalesced sections. Weak aliases (or any other kind of aliases) are
+#. not supported. Weak symbols that aren't visible outside the .s file
+#. are not supported.
+#: config/darwin.h:441
+#, gcc-internal-format
+msgid "alias definitions not supported in Mach-O; ignored"
+msgstr ""
+
+#. No profiling.
+#: config/vx-common.h:89
+#, gcc-internal-format
+msgid "profiler support for VxWorks"
+msgstr ""
+
+#: config/alpha/alpha.c:282
+#, gcc-internal-format
+msgid "bad value %qs for -mtrap-precision switch"
+msgstr ""
+
+#: config/alpha/alpha.c:296
+#, gcc-internal-format
+msgid "bad value %qs for -mfp-rounding-mode switch"
+msgstr ""
+
+#: config/alpha/alpha.c:311
+#, gcc-internal-format
+msgid "bad value %qs for -mfp-trap-mode switch"
+msgstr ""
+
+#: config/alpha/alpha.c:325
+#, gcc-internal-format
+msgid "bad value %qs for -mcpu switch"
+msgstr ""
+
+#: config/alpha/alpha.c:337
+#, gcc-internal-format
+msgid "bad value %qs for -mtune switch"
+msgstr ""
+
+#: config/alpha/alpha.c:345
+#, gcc-internal-format
+msgid "fp software completion requires -mtrap-precision=i"
+msgstr ""
+
+#: config/alpha/alpha.c:361
+#, gcc-internal-format
+msgid "rounding mode not supported for VAX floats"
+msgstr ""
+
+#: config/alpha/alpha.c:366
+#, gcc-internal-format
+msgid "trap mode not supported for VAX floats"
+msgstr ""
+
+#: config/alpha/alpha.c:370
+#, gcc-internal-format
+msgid "128-bit long double not supported for VAX floats"
+msgstr ""
+
+#: config/alpha/alpha.c:398
+#, gcc-internal-format, gfc-internal-format
+msgid "L%d cache latency unknown for %s"
+msgstr ""
+
+#: config/alpha/alpha.c:413
+#, gcc-internal-format
+msgid "bad value %qs for -mmemory-latency"
+msgstr ""
+
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
+#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
+#: config/tilepro/tilepro.c:3098
+#, gcc-internal-format
+msgid "bad builtin fcode"
+msgstr ""
+
+#: config/arm/arm.c:1512
+#, gcc-internal-format, gfc-internal-format
+msgid "switch -mcpu=%s conflicts with -march=%s switch"
+msgstr ""
+
+#: config/arm/arm.c:1629
+#, gcc-internal-format
+msgid "target CPU does not support ARM mode"
+msgstr ""
+
+#: config/arm/arm.c:1635
+#, gcc-internal-format
+msgid "target CPU does not support interworking"
+msgstr ""
+
+#: config/arm/arm.c:1641
+#, gcc-internal-format
+msgid "target CPU does not support THUMB instructions"
+msgstr ""
+
+#: config/arm/arm.c:1659
+#, gcc-internal-format
+msgid "enabling backtrace support is only meaningful when compiling for the Thumb"
+msgstr ""
+
+#: config/arm/arm.c:1662
+#, gcc-internal-format
+msgid "enabling callee interworking support is only meaningful when compiling for the Thumb"
+msgstr ""
+
+#: config/arm/arm.c:1666
+#, gcc-internal-format
+msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
+msgstr ""
+
+#: config/arm/arm.c:1674
+#, gcc-internal-format
+msgid "-fpic and -mapcs-reent are incompatible"
+msgstr ""
+
+#: config/arm/arm.c:1677
+#, gcc-internal-format
+msgid "APCS reentrant code not supported. Ignored"
+msgstr ""
+
+#: config/arm/arm.c:1685
+#, gcc-internal-format
+msgid "-g with -mno-apcs-frame may not give sensible debugging"
+msgstr ""
+
+#: config/arm/arm.c:1688
+#, gcc-internal-format
+msgid "passing floating point arguments in fp regs not yet supported"
+msgstr ""
+
+#: config/arm/arm.c:1691
+#, gcc-internal-format
+msgid "%<mwords-little-endian%> is deprecated and will be removed in a future release"
+msgstr ""
+
+#: config/arm/arm.c:1753
+#, gcc-internal-format
+msgid "iwmmxt requires an AAPCS compatible ABI for proper operation"
+msgstr ""
+
+#: config/arm/arm.c:1756
+#, gcc-internal-format
+msgid "iwmmxt abi requires an iwmmxt capable cpu"
+msgstr ""
+
+#: config/arm/arm.c:1804
+#, gcc-internal-format
+msgid "FPA is unsupported in the AAPCS"
+msgstr ""
+
+#: config/arm/arm.c:1809
+#, gcc-internal-format
+msgid "AAPCS does not support -mcaller-super-interworking"
+msgstr ""
+
+#: config/arm/arm.c:1812
+#, gcc-internal-format
+msgid "AAPCS does not support -mcallee-super-interworking"
+msgstr ""
+
+#: config/arm/arm.c:1819
+#, gcc-internal-format
+msgid "iWMMXt and hardware floating point"
+msgstr ""
+
+#: config/arm/arm.c:1823
+#, gcc-internal-format
+msgid "Thumb-2 iWMMXt"
+msgstr ""
+
+#: config/arm/arm.c:1827
+#, gcc-internal-format
+msgid "__fp16 and no ldrh"
+msgstr ""
+
+#: config/arm/arm.c:1847
+#, gcc-internal-format
+msgid "-mfloat-abi=hard and VFP"
+msgstr ""
+
+#: config/arm/arm.c:1872
+#, gcc-internal-format
+msgid "can not use -mtp=cp15 with 16-bit Thumb"
+msgstr ""
+
+#: config/arm/arm.c:1888
+#, gcc-internal-format
+msgid "structure size boundary can only be set to 8, 32 or 64"
+msgstr ""
+
+#: config/arm/arm.c:1890
+#, gcc-internal-format
+msgid "structure size boundary can only be set to 8 or 32"
+msgstr ""
+
+#: config/arm/arm.c:1898
+#, gcc-internal-format
+msgid "RTP PIC is incompatible with Thumb"
+msgstr ""
+
+#: config/arm/arm.c:1907
+#, gcc-internal-format
+msgid "RTP PIC is incompatible with -msingle-pic-base"
+msgstr ""
+
+#: config/arm/arm.c:1919
+#, gcc-internal-format
+msgid "-mpic-register= is useless without -fpic"
+msgstr ""
+
+#: config/arm/arm.c:1928
+#, gcc-internal-format, gfc-internal-format
+msgid "unable to use '%s' for PIC register"
+msgstr ""
+
+#: config/arm/arm.c:1960
+#, gcc-internal-format
+msgid "target CPU does not support unaligned accesses"
+msgstr ""
+
+#: config/arm/arm.c:1984
+#, gcc-internal-format
+msgid "-freorder-blocks-and-partition not supported on this architecture"
+msgstr ""
+
+#: config/arm/arm.c:4036
+#, gcc-internal-format
+msgid "non-AAPCS derived PCS variant"
+msgstr ""
+
+#: config/arm/arm.c:4038
+#, gcc-internal-format
+msgid "variadic functions must use the base AAPCS variant"
+msgstr ""
+
+#: config/arm/arm.c:4057
+#, gcc-internal-format
+msgid "PCS variant"
+msgstr ""
+
+#: config/arm/arm.c:4252
+#, gcc-internal-format
+msgid "Thumb-1 hard-float VFP ABI"
+msgstr ""
+
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
+#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
+#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/v850/v850.c:2057
+#, gcc-internal-format
+msgid "%qE attribute only applies to functions"
+msgstr ""
+
+#: config/arm/arm.c:18928
+#, gcc-internal-format
+msgid "unable to compute real location of stacked parameter"
+msgstr ""
+
+#: config/arm/arm.c:20667
+#, gcc-internal-format
+msgid "argument must be a constant"
+msgstr ""
+
+#. @@@ better error message
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
+#, gcc-internal-format
+msgid "selector must be an immediate"
+msgstr ""
+
+#. @@@ better error message
+#: config/arm/arm.c:21116
+#, gcc-internal-format
+msgid "mask must be an immediate"
+msgstr ""
+
+#: config/arm/arm.c:21900
+#, gcc-internal-format
+msgid "no low registers available for popping high registers"
+msgstr ""
+
+#: config/arm/arm.c:22125
+#, gcc-internal-format
+msgid "interrupt Service Routines cannot be coded in Thumb mode"
+msgstr ""
+
+#: config/arm/arm.c:24411
+#, gcc-internal-format
+msgid "the mangling of %<va_list%> has changed in GCC 4.4"
+msgstr ""
+
+#: config/arm/pe.c:158 config/mcore/mcore.c:2951
+#, gcc-internal-format
+msgid "initialized variable %q+D is marked dllimport"
+msgstr ""
+
+#: config/arm/pe.c:167
+#, gcc-internal-format
+msgid "static variable %q+D is marked dllimport"
+msgstr ""
+
+#: config/avr/avr.c:548
+#, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr ""
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr ""
+
+#: config/avr/avr.c:576
+#, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr ""
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
+#, gcc-internal-format
+msgid "'builtin_return_address' contains only 2 bytes of address"
+msgstr ""
+
+#: config/avr/avr.c:1886
+#, gcc-internal-format
+msgid "pointer offset from symbol maybe incorrect"
+msgstr ""
+
+#: config/avr/avr.c:2009
+#, gcc-internal-format
+msgid "accessing data memory with program memory address"
+msgstr ""
+
+#: config/avr/avr.c:2058
+#, gcc-internal-format
+msgid "accessing program memory with data memory address"
+msgstr ""
+
+#: config/avr/avr.c:2464
+#, gcc-internal-format, gfc-internal-format
+msgid "fixed register %s used to pass parameter to function"
+msgstr ""
+
+#: config/avr/avr.c:2586
+#, gcc-internal-format
+msgid "writing to address space %qs not supported"
+msgstr ""
+
+#: config/avr/avr.c:6977
+#, gcc-internal-format
+msgid "%qT uses address space %qs beyond flash of %qs"
+msgstr ""
+
+#: config/avr/avr.c:6980
+#, gcc-internal-format
+msgid "%s %q+D uses address space %qs beyond flash of %qs"
+msgstr ""
+
+#: config/avr/avr.c:6987
+#, gcc-internal-format
+msgid "pointer targeting address space %qs must be const in %qT"
+msgstr ""
+
+#: config/avr/avr.c:6990
+#, gcc-internal-format
+msgid "pointer targeting address space %qs must be const in %s %q+D"
+msgstr ""
+
+#: config/avr/avr.c:7028
+#, gcc-internal-format
+msgid "variable %q+D located in address space %qs beyond flash of %qs"
+msgstr ""
+
+#: config/avr/avr.c:7044
+#, gcc-internal-format
+msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
+msgstr ""
+
+#: config/avr/avr.c:7258
+#, gcc-internal-format
+msgid "only uninitialized variables can be placed in the .noinit section"
+msgstr ""
+
+#: config/avr/avr.c:7299
+#, gcc-internal-format
+msgid "uninitialized variable %q+D put into program memory area"
+msgstr ""
+
+#: config/avr/avr.c:7366
+#, gcc-internal-format
+msgid "MCU %qs supported for assembler only"
+msgstr ""
+
+#: config/avr/avr.c:10628
+#, gcc-internal-format, gfc-internal-format
+msgid "%s expects a compile time integer constant"
+msgstr ""
+
+#: config/avr/avr.c:10642
+#, gcc-internal-format, gfc-internal-format
+msgid "%s expects a compile time long integer constant as first argument"
+msgstr ""
+
+#: config/bfin/bfin.c:2348
+#, gcc-internal-format
+msgid "-mfdpic is not supported, please use a bfin-linux-uclibc target"
+msgstr ""
+
+#: config/bfin/bfin.c:2353
+#, gcc-internal-format
+msgid "-mshared-library-id= specified without -mid-shared-library"
+msgstr ""
+
+#: config/bfin/bfin.c:2357
+#, gcc-internal-format
+msgid "-fstack-limit- options are ignored with -mfdpic; use -mstack-check-l1"
+msgstr ""
+
+#: config/bfin/bfin.c:2362
+#, gcc-internal-format
+msgid "can%'t use multiple stack checking methods together"
+msgstr ""
+
+#: config/bfin/bfin.c:2365
+#, gcc-internal-format
+msgid "ID shared libraries and FD-PIC mode can%'t be used together"
+msgstr ""
+
+#: config/bfin/bfin.c:2370 config/m68k/m68k.c:537
+#, gcc-internal-format
+msgid "cannot specify both -msep-data and -mid-shared-library"
+msgstr ""
+
+#: config/bfin/bfin.c:2390
+#, gcc-internal-format
+msgid "-mmulticore can only be used with BF561"
+msgstr ""
+
+#: config/bfin/bfin.c:2393
+#, gcc-internal-format
+msgid "-mcorea should be used with -mmulticore"
+msgstr ""
+
+#: config/bfin/bfin.c:2396
+#, gcc-internal-format
+msgid "-mcoreb should be used with -mmulticore"
+msgstr ""
+
+#: config/bfin/bfin.c:2399
+#, gcc-internal-format
+msgid "-mcorea and -mcoreb can%'t be used together"
+msgstr ""
+
+#: config/bfin/bfin.c:4641
+#, gcc-internal-format
+msgid "multiple function type attributes specified"
+msgstr ""
+
+#: config/bfin/bfin.c:4708
+#, gcc-internal-format
+msgid "can%'t apply both longcall and shortcall attributes to the same function"
+msgstr ""
+
+#: config/bfin/bfin.c:4758 config/i386/winnt.c:61 config/mep/mep.c:3915
+#: config/mep/mep.c:4053
+#, gcc-internal-format
+msgid "%qE attribute only applies to variables"
+msgstr ""
+
+#: config/bfin/bfin.c:4765
+#, gcc-internal-format
+msgid "%qE attribute cannot be specified for local variables"
+msgstr ""
+
+#: config/c6x/c6x.c:235
+#, gcc-internal-format
+msgid "-fpic and -fPIC not supported without -mdsbt on this target"
+msgstr ""
+
+#: config/c6x/c6x.h:362
+#, gcc-internal-format
+msgid "profiling is not yet implemented for this architecture"
+msgstr ""
+
+#: config/cr16/cr16.c:294
+#, gcc-internal-format
+msgid "data-model=far not valid for cr16c architecture"
+msgstr ""
+
+#: config/cr16/cr16.c:297
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid data model option -mdata-model=%s"
+msgstr ""
+
+#: config/cr16/cr16.h:431
+#, gcc-internal-format
+msgid "profiler support for CR16"
+msgstr ""
+
+#. This function is for retrieving a part of an instruction name for
+#. an operator, for immediate output. If that ever happens for
+#. MULT, we need to apply TARGET_MUL_BUG in the caller. Make sure
+#. we notice.
+#: config/cris/cris.c:522
+#, gcc-internal-format
+msgid "MULT case in cris_op_str"
+msgstr ""
+
+#: config/cris/cris.c:860
+#, gcc-internal-format
+msgid "invalid use of ':' modifier"
+msgstr ""
+
+#: config/cris/cris.c:1047 config/moxie/moxie.c:189
+#, gcc-internal-format, gfc-internal-format
+msgid "internal error: bad register: %d"
+msgstr ""
+
+#: config/cris/cris.c:1778
+#, gcc-internal-format
+msgid "internal error: sideeffect-insn affecting main effect"
+msgstr ""
+
+#: config/cris/cris.c:1875
+#, gcc-internal-format
+msgid "unknown cc_attr value"
+msgstr ""
+
+#. If we get here, the caller got its initial tests wrong.
+#: config/cris/cris.c:2266
+#, gcc-internal-format
+msgid "internal error: cris_side_effect_mode_ok with bad operands"
+msgstr ""
+
+#: config/cris/cris.c:2506
+#, gcc-internal-format, gfc-internal-format
+msgid "-max-stackframe=%d is not usable, not between 0 and %d"
+msgstr ""
+
+#: config/cris/cris.c:2534
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
+msgstr ""
+
+#: config/cris/cris.c:2570
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown CRIS cpu version specification in -mtune= : %s"
+msgstr ""
+
+#: config/cris/cris.c:2591
+#, gcc-internal-format
+msgid "-fPIC and -fpic are not supported in this configuration"
+msgstr ""
+
+#: config/cris/cris.c:2606
+#, gcc-internal-format
+msgid "that particular -g option is invalid with -maout and -melinux"
+msgstr ""
+
+#: config/cris/cris.c:2832
+#, gcc-internal-format
+msgid "unknown src"
+msgstr ""
+
+#: config/cris/cris.c:2893
+#, gcc-internal-format
+msgid "unknown dest"
+msgstr ""
+
+#: config/cris/cris.c:3178
+#, gcc-internal-format, gfc-internal-format
+msgid "stackframe too big: %d bytes"
+msgstr ""
+
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
+#, gcc-internal-format
+msgid "expand_binop failed in movsi got"
+msgstr ""
+
+#: config/cris/cris.c:3780
+#, gcc-internal-format
+msgid "emitting PIC operand, but PIC register isn%'t set up"
+msgstr ""
+
+#. Definitions for GCC. Part of the machine description for CRIS.
+#. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
+#. 2009, 2010, 2011 Free Software Foundation, Inc.
+#. Contributed by Axis Communications. Written by Hans-Peter Nilsson.
+#.
+#. This file is part of GCC.
+#.
+#. GCC is free software; you can redistribute it and/or modify
+#. it under the terms of the GNU General Public License as published by
+#. the Free Software Foundation; either version 3, or (at your option)
+#. any later version.
+#.
+#. GCC is distributed in the hope that it will be useful,
+#. but WITHOUT ANY WARRANTY; without even the implied warranty of
+#. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#. GNU General Public License for more details.
+#.
+#. You should have received a copy of the GNU General Public License
+#. along with GCC; see the file COPYING3. If not see
+#. <http://www.gnu.org/licenses/>.
+#. After the first "Node:" comment comes all preprocessor directives and
+#. attached declarations described in the info files, the "Using and
+#. Porting GCC" manual (uapgcc), in the same order as found in the "Target
+#. macros" section in the gcc-2.9x CVS edition of 2000-03-17. FIXME: Not
+#. really, but needs an update anyway.
+#.
+#. There is no generic copy-of-uapgcc comment, you'll have to see uapgcc
+#. for that. If applicable, there is a CRIS-specific comment. The order
+#. of macro definitions follow the order in the manual. Every section in
+#. the manual (node in the info pages) has an introductory `Node:
+#. <subchapter>' comment. If no macros are defined for a section, only
+#. the section-comment is present.
+#. Note that other header files (e.g. config/elfos.h, config/linux.h,
+#. config/cris/linux.h and config/cris/aout.h) are responsible for lots of
+#. settings not repeated below. This file contains general CRIS
+#. definitions and definitions for the cris-*-elf subtarget.
+#. We don't want to use gcc_assert for everything, as that can be
+#. compiled out.
+#: config/cris/cris.h:43
+#, gcc-internal-format
+msgid "CRIS-port assertion failed: "
+msgstr ""
+
+#. Node: Caller Saves
+#. (no definitions)
+#. Node: Function entry
+#. See cris.c for TARGET_ASM_FUNCTION_PROLOGUE and
+#. TARGET_ASM_FUNCTION_EPILOGUE.
+#. Node: Profiling
+#: config/cris/cris.h:731
+#, gcc-internal-format
+msgid "no FUNCTION_PROFILER for CRIS"
+msgstr ""
+
+#: config/epiphany/epiphany.c:441 config/epiphany/epiphany.c:481
+#, gcc-internal-format
+msgid "argument of %qE attribute is not a string constant"
+msgstr ""
+
+#: config/epiphany/epiphany.c:456
+#, gcc-internal-format
+msgid "argument of %qE attribute is not \"reset\", \"software_exception\", \"page_miss\", \"timer0\", \"timer1\", \"message\", \"dma0\", \"dma1\", \"wand\" or \"swi\""
+msgstr ""
+
+#: config/epiphany/epiphany.c:1431
+#, gcc-internal-format
+msgid "stack_offset must be at least 4"
+msgstr ""
+
+#: config/epiphany/epiphany.c:1433
+#, gcc-internal-format
+msgid "stack_offset must be a multiple of 4"
+msgstr ""
+
+#: config/frv/frv.c:8681
+#, gcc-internal-format
+msgid "accumulator is not a constant integer"
+msgstr ""
+
+#: config/frv/frv.c:8686
+#, gcc-internal-format
+msgid "accumulator number is out of bounds"
+msgstr ""
+
+#: config/frv/frv.c:8697
+#, gcc-internal-format
+msgid "inappropriate accumulator for %qs"
+msgstr ""
+
+#: config/frv/frv.c:8773
+#, gcc-internal-format
+msgid "invalid IACC argument"
+msgstr ""
+
+#: config/frv/frv.c:8796
+#, gcc-internal-format
+msgid "%qs expects a constant argument"
+msgstr ""
+
+#: config/frv/frv.c:8801
+#, gcc-internal-format
+msgid "constant argument out of range for %qs"
+msgstr ""
+
+#: config/frv/frv.c:9282
+#, gcc-internal-format
+msgid "media functions are not available unless -mmedia is used"
+msgstr ""
+
+#: config/frv/frv.c:9294
+#, gcc-internal-format
+msgid "this media function is only available on the fr500"
+msgstr ""
+
+#: config/frv/frv.c:9322
+#, gcc-internal-format
+msgid "this media function is only available on the fr400 and fr550"
+msgstr ""
+
+#: config/frv/frv.c:9341
+#, gcc-internal-format
+msgid "this builtin function is only available on the fr405 and fr450"
+msgstr ""
+
+#: config/frv/frv.c:9350
+#, gcc-internal-format
+msgid "this builtin function is only available on the fr500 and fr550"
+msgstr ""
+
+#: config/frv/frv.c:9362
+#, gcc-internal-format
+msgid "this builtin function is only available on the fr450"
+msgstr ""
+
+#: config/h8300/h8300.c:336
+#, gcc-internal-format
+msgid "-ms2600 is used without -ms"
+msgstr ""
+
+#: config/h8300/h8300.c:342
+#, gcc-internal-format
+msgid "-mn is used without -mh or -ms"
+msgstr ""
+
+#: config/i386/host-cygwin.c:62
+#, gcc-internal-format
+msgid "can%'t extend PCH file: %m"
+msgstr ""
+
+#: config/i386/host-cygwin.c:73
+#, gcc-internal-format
+msgid "can%'t set position in PCH file: %m"
+msgstr ""
+
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value (%s) for %stune=%s %s"
+msgstr ""
+
+#: config/i386/i386.c:3133
+#, gcc-internal-format, gfc-internal-format
+msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
+msgstr ""
+
+#. rep; movq isn't available in 32-bit code.
+#: config/i386/i386.c:3163
+#, gcc-internal-format
+msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
+msgstr ""
+
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
+#, gcc-internal-format
+msgid "code model %qs not supported in the %s bit mode"
+msgstr ""
+
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
+#, gcc-internal-format
+msgid "code model %qs not supported in x32 mode"
+msgstr ""
+
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
+#, gcc-internal-format, gfc-internal-format
+msgid "code model %s does not support PIC mode"
+msgstr ""
+
+#: config/i386/i386.c:3250
+#, gcc-internal-format
+msgid "-masm=intel not supported in this configuration"
+msgstr ""
+
+#: config/i386/i386.c:3254
+#, gcc-internal-format, gfc-internal-format
+msgid "%i-bit mode not compiled in"
+msgstr ""
+
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
+#, gcc-internal-format
+msgid "CPU you selected does not support x86-64 instruction set"
+msgstr ""
+
+#: config/i386/i386.c:3366
+#, gcc-internal-format, gfc-internal-format
+msgid "generic CPU can be used only for %stune=%s %s"
+msgstr ""
+
+#: config/i386/i386.c:3369
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value (%s) for %sarch=%s %s"
+msgstr ""
+
+#: config/i386/i386.c:3482
+#, gcc-internal-format
+msgid "-mregparm is ignored in 64-bit mode"
+msgstr ""
+
+#: config/i386/i386.c:3485
+#, gcc-internal-format, gfc-internal-format
+msgid "-mregparm=%d is not between 0 and %d"
+msgstr ""
+
+#: config/i386/i386.c:3526
+#, gcc-internal-format, gfc-internal-format
+msgid "%srtd%s is ignored in 64bit mode"
+msgstr ""
+
+#: config/i386/i386.c:3590
+#, gcc-internal-format
+msgid "-mpreferred-stack-boundary is not supported for this target"
+msgstr ""
+
+#: config/i386/i386.c:3593
+#, gcc-internal-format, gfc-internal-format
+msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
+msgstr ""
+
+#: config/i386/i386.c:3614
+#, gcc-internal-format, gfc-internal-format
+msgid "-mincoming-stack-boundary=%d is not between %d and 12"
+msgstr ""
+
+#: config/i386/i386.c:3628
+#, gcc-internal-format, gfc-internal-format
+msgid "%ssseregparm%s used without SSE enabled"
+msgstr ""
+
+#: config/i386/i386.c:3636
+#, gcc-internal-format
+msgid "SSE instruction set disabled, using 387 arithmetics"
+msgstr ""
+
+#: config/i386/i386.c:3641
+#, gcc-internal-format
+msgid "387 instruction set disabled, using SSE arithmetics"
+msgstr ""
+
+#: config/i386/i386.c:3685
+#, gcc-internal-format, gfc-internal-format
+msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
+msgstr ""
+
+#: config/i386/i386.c:3698
+#, gcc-internal-format, gfc-internal-format
+msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
+msgstr ""
+
+#: config/i386/i386.c:3779
+#, gcc-internal-format
+msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
+msgstr ""
+
+#: config/i386/i386.c:3786
+#, gcc-internal-format
+msgid "-mno-fentry isn%'t compatible with SEH"
+msgstr ""
+
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown option for -mrecip=%s"
+msgstr ""
+
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
+#, gcc-internal-format, gfc-internal-format
+msgid "attribute(target(\"%s\")) is unknown"
+msgstr ""
+
+#: config/i386/i386.c:4299
+#, gcc-internal-format, gfc-internal-format
+msgid "option(\"%s\") was already specified"
+msgstr ""
+
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
+#, gcc-internal-format
+msgid "fastcall and regparm attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4912
+#, gcc-internal-format
+msgid "regparam and thiscall attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
+#, gcc-internal-format
+msgid "%qE attribute requires an integer constant argument"
+msgstr ""
+
+#: config/i386/i386.c:4925
+#, gcc-internal-format
+msgid "argument to %qE attribute larger than %d"
+msgstr ""
+
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
+#, gcc-internal-format
+msgid "fastcall and cdecl attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4954
+#, gcc-internal-format
+msgid "fastcall and stdcall attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
+#, gcc-internal-format
+msgid "fastcall and thiscall attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
+#, gcc-internal-format
+msgid "stdcall and cdecl attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4976
+#, gcc-internal-format
+msgid "stdcall and fastcall attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
+#, gcc-internal-format
+msgid "stdcall and thiscall attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
+#, gcc-internal-format
+msgid "cdecl and thiscall attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:5003
+#, gcc-internal-format
+msgid "%qE attribute is used for none class-method"
+msgstr ""
+
+#: config/i386/i386.c:5229
+#, gcc-internal-format
+msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
+msgstr ""
+
+#: config/i386/i386.c:5232
+#, gcc-internal-format
+msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
+msgstr ""
+
+#: config/i386/i386.c:5447
+#, gcc-internal-format
+msgid "ms_hook_prologue is not compatible with nested function"
+msgstr ""
+
+#: config/i386/i386.c:5599
+#, gcc-internal-format
+msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
+msgstr ""
+
+#: config/i386/i386.c:5723
+#, gcc-internal-format
+msgid "AVX vector argument without AVX enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:5905
+#, gcc-internal-format
+msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
+msgstr ""
+
+#: config/i386/i386.c:6021
+#, gcc-internal-format
+msgid "the ABI of passing union with long double has changed in GCC 4.4"
+msgstr ""
+
+#: config/i386/i386.c:6136
+#, gcc-internal-format
+msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
+msgstr ""
+
+#: config/i386/i386.c:6282
+#, gcc-internal-format
+msgid "SSE register return with SSE disabled"
+msgstr ""
+
+#: config/i386/i386.c:6288
+#, gcc-internal-format
+msgid "SSE register argument with SSE disabled"
+msgstr ""
+
+#: config/i386/i386.c:6304
+#, gcc-internal-format
+msgid "x87 register return with x87 disabled"
+msgstr ""
+
+#: config/i386/i386.c:6683
+#, gcc-internal-format
+msgid "SSE vector argument without SSE enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:6721
+#, gcc-internal-format
+msgid "MMX vector argument without MMX enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:7096
+#, gcc-internal-format, gfc-internal-format
+msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
+msgstr ""
+
+#: config/i386/i386.c:7432
+#, gcc-internal-format
+msgid "SSE vector return without SSE enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:7442
+#, gcc-internal-format
+msgid "MMX vector return without MMX enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:10028
+#, gcc-internal-format
+msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
+msgstr ""
+
+#: config/i386/i386.c:11025
+#, gcc-internal-format
+msgid "-fsplit-stack does not support fastcall with nested function"
+msgstr ""
+
+#: config/i386/i386.c:11039
+#, gcc-internal-format
+msgid "-fsplit-stack does not support 2 register parameters for a nested function"
+msgstr ""
+
+#. FIXME: We could make this work by pushing a register
+#. around the addition and comparison.
+#: config/i386/i386.c:11050
+#, gcc-internal-format
+msgid "-fsplit-stack does not support 3 register parameters"
+msgstr ""
+
+#: config/i386/i386.c:13637
+#, gcc-internal-format
+msgid "extended registers have no high halves"
+msgstr ""
+
+#: config/i386/i386.c:13652
+#, gcc-internal-format
+msgid "unsupported operand size for extended register"
+msgstr ""
+
+#: config/i386/i386.c:13899
+#, gcc-internal-format, gfc-internal-format
+msgid "non-integer operand used with operand code '%c'"
+msgstr ""
+
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
+#, gcc-internal-format
+msgid "the last argument must be a 2-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28196
+#, gcc-internal-format
+msgid "the fifth argument must be an 8-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28291
+#, gcc-internal-format
+msgid "the third argument must be an 8-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28699
+#, gcc-internal-format
+msgid "the last argument must be an 1-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28718
+#, gcc-internal-format
+msgid "the last argument must be a 4-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28736
+#, gcc-internal-format
+msgid "the last argument must be a 1-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28745
+#, gcc-internal-format
+msgid "the last argument must be a 5-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28754
+#, gcc-internal-format
+msgid "the next to last argument must be an 8-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
+#, gcc-internal-format
+msgid "the last argument must be an 8-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:28980
+#, gcc-internal-format
+msgid "the last argument must be a 32-bit immediate"
+msgstr ""
+
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
+#, gcc-internal-format
+msgid "selector must be an integer constant in the range 0..%wi"
+msgstr ""
+
+#: config/i386/i386.c:29191
+#, gcc-internal-format
+msgid "%qE needs unknown isa option"
+msgstr ""
+
+#: config/i386/i386.c:29195
+#, gcc-internal-format
+msgid "%qE needs isa option %s"
+msgstr ""
+
+#: config/i386/i386.c:29366
+#, gcc-internal-format
+msgid "last argument must be an immediate"
+msgstr ""
+
+#: config/i386/i386.c:29560
+#, gcc-internal-format
+msgid "last argument must be scale 1, 2, 4, 8"
+msgstr ""
+
+#: config/i386/i386.c:31806
+#, gcc-internal-format
+msgid "%qE attribute only available for 32-bit"
+msgstr ""
+
+#: config/i386/i386.c:31827
+#, gcc-internal-format
+msgid "argument to %qE attribute is neither zero, nor one"
+msgstr ""
+
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
+#, gcc-internal-format
+msgid "ms_abi and sysv_abi attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
+#, gcc-internal-format
+msgid "%qE incompatible attribute ignored"
+msgstr ""
+
+#: config/i386/winnt.c:83
+#, gcc-internal-format
+msgid "%qE attribute applies only to initialized variables with external linkage"
+msgstr ""
+
+#: config/i386/winnt.c:145
+#, gcc-internal-format
+msgid "definition of static data member %q+D of dllimport%'d class"
+msgstr ""
+
+#: config/i386/winnt.c:331
+#, gcc-internal-format
+msgid "%q+D:'selectany' attribute applies only to initialized objects"
+msgstr ""
+
+#: config/i386/winnt.c:476
+#, gcc-internal-format
+msgid "%q+D causes a section type conflict"
+msgstr ""
+
+#: config/i386/cygming.h:197
+#, gcc-internal-format
+msgid "-fPIC ignored for target (all code is position independent)"
+msgstr ""
+
+#: config/i386/cygming.h:203
+#, gcc-internal-format, gfc-internal-format
+msgid "-f%s ignored for target (all code is position independent)"
+msgstr ""
+
+#: config/i386/djgpp.h:162
+#, gcc-internal-format
+msgid "-mbnu210 is ignored (option is obsolete)"
+msgstr ""
+
+#: config/ia64/ia64-c.c:52
+#, gcc-internal-format
+msgid "malformed #pragma builtin"
+msgstr ""
+
+#: config/ia64/ia64.c:700
+#, gcc-internal-format
+msgid "invalid argument of %qE attribute"
+msgstr ""
+
+#: config/ia64/ia64.c:713
+#, gcc-internal-format
+msgid "an address area attribute cannot be specified for local variables"
+msgstr ""
+
+#: config/ia64/ia64.c:720
+#, gcc-internal-format
+msgid "address area of %q+D conflicts with previous declaration"
+msgstr ""
+
+#: config/ia64/ia64.c:728
+#, gcc-internal-format
+msgid "address area attribute cannot be specified for functions"
+msgstr ""
+
+#: config/ia64/ia64.c:769
+#, gcc-internal-format
+msgid "%qE attribute requires a string constant argument"
+msgstr ""
+
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
+#: config/spu/spu.c:5187
+#, gcc-internal-format
+msgid "value of -mfixed-range must have form REG1-REG2"
+msgstr ""
+
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
+#: config/spu/spu.c:5213
+#, gcc-internal-format, gfc-internal-format
+msgid "%s-%s is an empty range"
+msgstr ""
+
+#: config/ia64/ia64.c:10963
+#, gcc-internal-format
+msgid "version attribute is not a string"
+msgstr ""
+
+#: config/iq2000/iq2000.c:1833
+#, gcc-internal-format, gfc-internal-format
+msgid "gp_offset (%ld) or end_offset (%ld) is less than zero"
+msgstr ""
+
+#: config/iq2000/iq2000.c:2594
+#, gcc-internal-format
+msgid "argument %qd is not a constant"
+msgstr ""
+
+#: config/iq2000/iq2000.c:2897 config/xtensa/xtensa.c:2432
+#, gcc-internal-format
+msgid "PRINT_OPERAND_ADDRESS, null pointer"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3052
+#, gcc-internal-format, gfc-internal-format
+msgid "PRINT_OPERAND: Unknown punctuation '%c'"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3061 config/xtensa/xtensa.c:2286
+#, gcc-internal-format
+msgid "PRINT_OPERAND null pointer"
+msgstr ""
+
+#: config/m32c/m32c-pragma.c:61
+#, gcc-internal-format
+msgid "junk at end of #pragma GCC memregs [0..16]"
+msgstr ""
+
+#: config/m32c/m32c-pragma.c:68
+#, gcc-internal-format
+msgid "#pragma GCC memregs must precede any function decls"
+msgstr ""
+
+#: config/m32c/m32c-pragma.c:76 config/m32c/m32c-pragma.c:83
+#, gcc-internal-format
+msgid "#pragma GCC memregs takes a number [0..16]"
+msgstr ""
+
+#: config/m32c/m32c-pragma.c:111
+#, gcc-internal-format
+msgid "junk at end of #pragma ADDRESS"
+msgstr ""
+
+#: config/m32c/m32c-pragma.c:116
+#, gcc-internal-format
+msgid "malformed #pragma ADDRESS variable address"
+msgstr ""
+
+#: config/m32c/m32c.c:411
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid target memregs value '%d'"
+msgstr ""
+
+#: config/m32c/m32c.c:3153
+#, gcc-internal-format
+msgid "%qE attribute is not supported for R8C target"
+msgstr ""
+
+#. The argument must be a constant integer.
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
+#, gcc-internal-format
+msgid "%qE attribute argument not an integer constant"
+msgstr ""
+
+#: config/m32c/m32c.c:3178
+#, gcc-internal-format
+msgid "%qE attribute argument should be between 18 to 255"
+msgstr ""
+
+#: config/m32c/m32c.c:4353
+#, gcc-internal-format
+msgid "%<bank_switch%> has no effect on non-interrupt functions"
+msgstr ""
+
+#: config/m32c/m32c.c:4457
+#, gcc-internal-format
+msgid "%<fast_interrupt%> attribute directive ignored"
+msgstr ""
+
+#: config/m32r/m32r.c:383
+#, gcc-internal-format
+msgid "invalid argument of %qs attribute"
+msgstr ""
+
+#: config/m68k/m68k.c:478
+#, gcc-internal-format, gfc-internal-format
+msgid "-mcpu=%s conflicts with -march=%s"
+msgstr ""
+
+#: config/m68k/m68k.c:549
+#, gcc-internal-format
+msgid "-mpcrel -fPIC is not currently supported on selected cpu"
+msgstr ""
+
+#: config/m68k/m68k.c:611
+#, gcc-internal-format, gfc-internal-format
+msgid "-falign-labels=%d is not supported"
+msgstr ""
+
+#: config/m68k/m68k.c:616
+#, gcc-internal-format, gfc-internal-format
+msgid "-falign-loops=%d is not supported"
+msgstr ""
+
+#: config/m68k/m68k.c:732
+#, gcc-internal-format
+msgid "multiple interrupt attributes not allowed"
+msgstr ""
+
+#: config/m68k/m68k.c:739
+#, gcc-internal-format
+msgid "interrupt_thread is available only on fido"
+msgstr ""
+
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
+#, gcc-internal-format
+msgid "stack limit expression is not supported"
+msgstr ""
+
+#: config/mep/mep-pragma.c:71
+#, gcc-internal-format
+msgid "junk at end of #pragma io_volatile"
+msgstr ""
+
+#: config/mep/mep-pragma.c:85
+#, gcc-internal-format
+msgid "#pragma io_volatile takes only on or off"
+msgstr ""
+
+#: config/mep/mep-pragma.c:124
+#, gcc-internal-format
+msgid "invalid coprocessor register range"
+msgstr ""
+
+#: config/mep/mep-pragma.c:144
+#, gcc-internal-format
+msgid "invalid coprocessor register %qE"
+msgstr ""
+
+#: config/mep/mep-pragma.c:167
+#, gcc-internal-format
+msgid "malformed coprocessor register"
+msgstr ""
+
+#: config/mep/mep-pragma.c:254
+#, gcc-internal-format
+msgid "junk at end of #pragma GCC coprocessor width"
+msgstr ""
+
+#: config/mep/mep-pragma.c:261
+#, gcc-internal-format
+msgid "#pragma GCC coprocessor width takes only 32 or 64"
+msgstr ""
+
+#: config/mep/mep-pragma.c:295
+#, gcc-internal-format
+msgid "#pragma GCC coprocessor subclass letter must be in [ABCD]"
+msgstr ""
+
+#: config/mep/mep-pragma.c:300
+#, gcc-internal-format, gfc-internal-format
+msgid "#pragma GCC coprocessor subclass '%c' already defined"
+msgstr ""
+
+#: config/mep/mep-pragma.c:318
+#, gcc-internal-format
+msgid "malformed #pragma GCC coprocessor subclass"
+msgstr ""
+
+#: config/mep/mep-pragma.c:340
+#, gcc-internal-format
+msgid "malformed #pragma disinterrupt"
+msgstr ""
+
+#: config/mep/mep-pragma.c:354
+#, gcc-internal-format
+msgid "malformed #pragma GCC coprocessor"
+msgstr ""
+
+#: config/mep/mep-pragma.c:359
+#, gcc-internal-format
+msgid "coprocessor not enabled"
+msgstr ""
+
+#: config/mep/mep-pragma.c:370
+#, gcc-internal-format
+msgid "unknown #pragma GCC coprocessor %E"
+msgstr ""
+
+#: config/mep/mep-pragma.c:392
+#, gcc-internal-format
+msgid "malformed #pragma call"
+msgstr ""
+
+#: config/mep/mep.c:353
+#, gcc-internal-format
+msgid "-fpic is not supported"
+msgstr ""
+
+#: config/mep/mep.c:355
+#, gcc-internal-format
+msgid "-fPIC is not supported"
+msgstr ""
+
+#: config/mep/mep.c:357
+#, gcc-internal-format
+msgid "only one of -ms and -mm may be given"
+msgstr ""
+
+#: config/mep/mep.c:359
+#, gcc-internal-format
+msgid "only one of -ms and -ml may be given"
+msgstr ""
+
+#: config/mep/mep.c:361
+#, gcc-internal-format
+msgid "only one of -mm and -ml may be given"
+msgstr ""
+
+#: config/mep/mep.c:363
+#, gcc-internal-format
+msgid "only one of -ms and -mtiny= may be given"
+msgstr ""
+
+#: config/mep/mep.c:365
+#, gcc-internal-format
+msgid "only one of -mm and -mtiny= may be given"
+msgstr ""
+
+#: config/mep/mep.c:367
+#, gcc-internal-format
+msgid "-mclip currently has no effect without -mminmax"
+msgstr ""
+
+#: config/mep/mep.c:374
+#, gcc-internal-format
+msgid "-mc= must be -mc=tiny, -mc=near, or -mc=far"
+msgstr ""
+
+#: config/mep/mep.c:1502
+#, gcc-internal-format
+msgid "unusual TP-relative address"
+msgstr ""
+
+#: config/mep/mep.c:3474
+#, gcc-internal-format
+msgid "unconvertible operand %c %qs"
+msgstr ""
+
+#: config/mep/mep.c:3922 config/mep/mep.c:3985
+#, gcc-internal-format
+msgid "address region attributes not allowed with auto storage class"
+msgstr ""
+
+#: config/mep/mep.c:3928 config/mep/mep.c:3991
+#, gcc-internal-format
+msgid "address region attributes on pointed-to types ignored"
+msgstr ""
+
+#: config/mep/mep.c:3977
+#, gcc-internal-format
+msgid "%qE attribute only applies to variables and functions"
+msgstr ""
+
+#: config/mep/mep.c:3997 config/mep/mep.c:4313
+#, gcc-internal-format
+msgid "duplicate address region attribute %qE in declaration of %qE on line %d"
+msgstr ""
+
+#: config/mep/mep.c:4031
+#, gcc-internal-format
+msgid "cannot inline interrupt function %qE"
+msgstr ""
+
+#: config/mep/mep.c:4037
+#, gcc-internal-format
+msgid "interrupt function must have return type of void"
+msgstr ""
+
+#: config/mep/mep.c:4042
+#, gcc-internal-format
+msgid "interrupt function must have no arguments"
+msgstr ""
+
+#: config/mep/mep.c:4063
+#, gcc-internal-format
+msgid "%qE attribute allows only an integer constant argument"
+msgstr ""
+
+#: config/mep/mep.c:4096
+#, gcc-internal-format
+msgid "%qE attribute only applies to functions, not %s"
+msgstr ""
+
+#: config/mep/mep.c:4107
+#, gcc-internal-format, gfc-internal-format
+msgid ""
+"to describe a pointer to a VLIW function, use syntax like this:\n"
+"%s"
+msgstr ""
+
+#: config/mep/mep.c:4116
+#, gcc-internal-format, gfc-internal-format
+msgid ""
+"to describe an array of VLIW function pointers, use syntax like this:\n"
+"%s"
+msgstr ""
+
+#: config/mep/mep.c:4122
+#, gcc-internal-format
+msgid "VLIW functions are not allowed without a VLIW configuration"
+msgstr ""
+
+#: config/mep/mep.c:4272
+#, gcc-internal-format, gfc-internal-format
+msgid "\"#pragma disinterrupt %s\" not used"
+msgstr ""
+
+#: config/mep/mep.c:4438
+#, gcc-internal-format
+msgid "__io address 0x%x is the same for %qE and %qE"
+msgstr ""
+
+#: config/mep/mep.c:4586
+#, gcc-internal-format, gfc-internal-format
+msgid "variable %s (%ld bytes) is too large for the %s section (%d bytes)"
+msgstr ""
+
+#: config/mep/mep.c:4684
+#, gcc-internal-format
+msgid "variable %D of type %<io%> must be uninitialized"
+msgstr ""
+
+#: config/mep/mep.c:4689
+#, gcc-internal-format
+msgid "variable %D of type %<cb%> must be uninitialized"
+msgstr ""
+
+#: config/mep/mep.c:6139
+#, gcc-internal-format
+msgid "coprocessor intrinsic %qs is not available in this configuration"
+msgstr ""
+
+#: config/mep/mep.c:6142
+#, gcc-internal-format
+msgid "%qs is not available in VLIW functions"
+msgstr ""
+
+#: config/mep/mep.c:6145
+#, gcc-internal-format
+msgid "%qs is not available in non-VLIW functions"
+msgstr ""
+
+#: config/mep/mep.c:6307 config/mep/mep.c:6424
+#, gcc-internal-format
+msgid "argument %d of %qE must be in the range %d...%d"
+msgstr ""
+
+#: config/mep/mep.c:6310
+#, gcc-internal-format
+msgid "argument %d of %qE must be a multiple of %d"
+msgstr ""
+
+#: config/mep/mep.c:6363
+#, gcc-internal-format
+msgid "too few arguments to %qE"
+msgstr ""
+
+#: config/mep/mep.c:6368
+#, gcc-internal-format
+msgid "too many arguments to %qE"
+msgstr ""
+
+#: config/mep/mep.c:6386
+#, gcc-internal-format
+msgid "argument %d of %qE must be an address"
+msgstr ""
+
+#: config/mep/mep.c:7182
+#, gcc-internal-format
+msgid "2 byte cop instructions are not allowed in 64-bit VLIW mode"
+msgstr ""
+
+#: config/mep/mep.c:7188
+#, gcc-internal-format, gfc-internal-format
+msgid "unexpected %d byte cop instruction"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1305
+#, gcc-internal-format
+msgid "%qs is an invalid argument to -mcpu="
+msgstr ""
+
+#: config/microblaze/microblaze.c:1354
+#, gcc-internal-format
+msgid "-mxl-multiply-high can be used only with -mcpu=v6.00.a or greater"
+msgstr ""
+
+#: config/microblaze/microblaze.c:1358
+#, gcc-internal-format
+msgid "-mxl-multiply-high requires -mno-xl-soft-mul"
+msgstr ""
+
+#: config/mips/mips.c:1282 config/mips/mips.c:1284
+#, gcc-internal-format
+msgid "%qs attribute only applies to functions"
+msgstr ""
+
+#: config/mips/mips.c:1294
+#, gcc-internal-format
+msgid "%qE cannot have both %<mips16%> and %<nomips16%> attributes"
+msgstr ""
+
+#: config/mips/mips.c:1316 config/mips/mips.c:1319
+#, gcc-internal-format
+msgid "%qE redeclared with conflicting %qs attributes"
+msgstr ""
+
+#: config/mips/mips.c:6570
+#, gcc-internal-format
+msgid "cannot handle inconsistent calls to %qs"
+msgstr ""
+
+#: config/mips/mips.c:9523
+#, gcc-internal-format
+msgid "the %<interrupt%> attribute requires a MIPS32r2 processor"
+msgstr ""
+
+#: config/mips/mips.c:9525
+#, gcc-internal-format
+msgid "the %<interrupt%> attribute requires %<-msoft-float%>"
+msgstr ""
+
+#: config/mips/mips.c:9527
+#, gcc-internal-format
+msgid "interrupt handlers cannot be MIPS16 functions"
+msgstr ""
+
+#: config/mips/mips.c:13589
+#, gcc-internal-format
+msgid "invalid argument to built-in function"
+msgstr ""
+
+#: config/mips/mips.c:13789
+#, gcc-internal-format
+msgid "built-in function %qE not supported for MIPS16"
+msgstr ""
+
+#: config/mips/mips.c:14381
+#, gcc-internal-format
+msgid "%qs does not support MIPS16 code"
+msgstr ""
+
+#: config/mips/mips.c:15623
+#, gcc-internal-format
+msgid "MIPS16 PIC for ABIs other than o32 and o64"
+msgstr ""
+
+#: config/mips/mips.c:15626
+#, gcc-internal-format
+msgid "MIPS16 -mxgot code"
+msgstr ""
+
+#: config/mips/mips.c:15629
+#, gcc-internal-format
+msgid "hard-float MIPS16 code for ABIs other than o32 and o64"
+msgstr ""
+
+#: config/mips/mips.c:15818
+#, gcc-internal-format
+msgid "%<-%s%> conflicts with the other architecture options, which specify a %s processor"
+msgstr ""
+
+#: config/mips/mips.c:15828
+#, gcc-internal-format
+msgid "%<-march=%s%> is not compatible with the selected ABI"
+msgstr ""
+
+#: config/mips/mips.c:15843
+#, gcc-internal-format
+msgid "%<-mgp64%> used with a 32-bit processor"
+msgstr ""
+
+#: config/mips/mips.c:15845
+#, gcc-internal-format
+msgid "%<-mgp32%> used with a 64-bit ABI"
+msgstr ""
+
+#: config/mips/mips.c:15847
+#, gcc-internal-format
+msgid "%<-mgp64%> used with a 32-bit ABI"
+msgstr ""
+
+#: config/mips/mips.c:15863 config/mips/mips.c:15865 config/mips/mips.c:15956
+#, gcc-internal-format, gfc-internal-format
+msgid "unsupported combination: %s"
+msgstr ""
+
+#: config/mips/mips.c:15869
+#, gcc-internal-format
+msgid "%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the mfhc1 and mthc1 instructions"
+msgstr ""
+
+#: config/mips/mips.c:15872
+#, gcc-internal-format
+msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI"
+msgstr ""
+
+#: config/mips/mips.c:15895 config/mips/mips.c:15897 config/mips/mips.c:15910
+#, gcc-internal-format
+msgid "%qs is incompatible with %qs"
+msgstr ""
+
+#. We have traditionally allowed non-abicalls code to use
+#. an LP64 form of o64. However, it would take a bit more
+#. effort to support the combination of 32-bit GOT entries
+#. and 64-bit pointers, so we treat the abicalls case as
+#. an error.
+#: config/mips/mips.c:15904
+#, gcc-internal-format
+msgid "the combination of %qs and %qs is incompatible with %qs"
+msgstr ""
+
+#: config/mips/mips.c:15950
+#, gcc-internal-format
+msgid "the %qs architecture does not support branch-likely instructions"
+msgstr ""
+
+#: config/mips/mips.c:15990
+#, gcc-internal-format
+msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>"
+msgstr ""
+
+#: config/mips/mips.c:15998 config/mips/mips.c:16001
+#, gcc-internal-format
+msgid "cannot use small-data accesses for %qs"
+msgstr ""
+
+#: config/mips/mips.c:16015
+#, gcc-internal-format
+msgid "%<-mips3d%> requires %<-mpaired-single%>"
+msgstr ""
+
+#: config/mips/mips.c:16024
+#, gcc-internal-format
+msgid "%qs must be used with %qs"
+msgstr ""
+
+#: config/mips/mips.c:16031
+#, gcc-internal-format
+msgid "the %qs architecture does not support paired-single instructions"
+msgstr ""
+
+#: config/mips/mips.c:16037
+#, gcc-internal-format
+msgid "%qs requires a target that provides the %qs instruction"
+msgstr ""
+
+#: config/mips/mips.c:16142
+#, gcc-internal-format
+msgid "%qs requires branch-likely instructions"
+msgstr ""
+
+#: config/mips/mips.c:16146
+#, gcc-internal-format
+msgid "the %qs architecture does not support the synci instruction"
+msgstr ""
+
+#: config/mips/mips.c:16596
+#, gcc-internal-format
+msgid "mips16 function profiling"
+msgstr ""
+
+#: config/mmix/mmix.c:298
+#, gcc-internal-format, gfc-internal-format
+msgid "-f%s not supported: ignored"
+msgstr ""
+
+#: config/mmix/mmix.c:789
+#, gcc-internal-format
+msgid "support for mode %qs"
+msgstr ""
+
+#: config/mmix/mmix.c:803
+#, gcc-internal-format, gfc-internal-format
+msgid "too large function value type, needs %d registers, have only %d registers for this"
+msgstr ""
+
+#: config/mmix/mmix.c:982
+#, gcc-internal-format
+msgid "function_profiler support for MMIX"
+msgstr ""
+
+#: config/mmix/mmix.c:1006
+#, gcc-internal-format
+msgid "MMIX Internal: Last named vararg would not fit in a register"
+msgstr ""
+
+#: config/mmix/mmix.c:1619 config/mmix/mmix.c:1643 config/mmix/mmix.c:1759
+#, gcc-internal-format, gfc-internal-format
+msgid "MMIX Internal: Bad register: %d"
+msgstr ""
+
+#. Presumably there's a missing case above if we get here.
+#: config/mmix/mmix.c:1751
+#, gcc-internal-format
+msgid "MMIX Internal: Missing %qc case in mmix_print_operand"
+msgstr ""
+
+#: config/mmix/mmix.c:2037
+#, gcc-internal-format
+msgid "stack frame not a multiple of 8 bytes: %wd"
+msgstr ""
+
+#: config/mmix/mmix.c:2271
+#, gcc-internal-format
+msgid "stack frame not a multiple of octabyte: %wd"
+msgstr ""
+
+#: config/mmix/mmix.c:2555 config/mmix/mmix.c:2619
+#, gcc-internal-format, gfc-internal-format
+msgid "MMIX Internal: %s is not a shiftable int"
+msgstr ""
+
+#: config/mn10300/mn10300.c:111
+#, gcc-internal-format
+msgid "-mtune= expects mn10300, am33, am33-2, or am34"
+msgstr ""
+
+#: config/pa/pa.c:499
+#, gcc-internal-format
+msgid "PIC code generation is not supported in the portable runtime model"
+msgstr ""
+
+#: config/pa/pa.c:504
+#, gcc-internal-format
+msgid "PIC code generation is not compatible with fast indirect calls"
+msgstr ""
+
+#: config/pa/pa.c:509
+#, gcc-internal-format
+msgid "-g is only supported when using GAS on this processor,"
+msgstr ""
+
+#: config/pa/pa.c:510
+#, gcc-internal-format
+msgid "-g option disabled"
+msgstr ""
+
+#: config/pa/pa.c:8622
+#, gcc-internal-format, gfc-internal-format
+msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
+msgstr ""
+
+#: config/pa/pa-hpux11.h:82
+#, gcc-internal-format
+msgid "-munix=98 option required for C89 Amendment 1 features.\n"
+msgstr ""
+
+#: config/picochip/picochip.c:422
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid AE type specified (%s)"
+msgstr ""
+
+#: config/picochip/picochip.c:445
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid mul type specified (%s) - expected mac, mul or none"
+msgstr ""
+
+#: config/picochip/picochip.c:739
+#, gcc-internal-format, gfc-internal-format
+msgid "unexpected mode %s encountered in picochip_emit_save_register"
+msgstr ""
+
+#: config/picochip/picochip.c:907
+#, gcc-internal-format, gfc-internal-format
+msgid "defaulting to stack for %s register creation"
+msgstr ""
+
+#: config/picochip/picochip.c:1592
+#, gcc-internal-format
+msgid "LCFI labels have already been deferred"
+msgstr ""
+
+#: config/picochip/picochip.c:1655
+#, gcc-internal-format
+msgid "LM label has already been deferred"
+msgstr ""
+
+#: config/picochip/picochip.c:1665
+#, gcc-internal-format
+msgid "LCFI labels have already been deferred."
+msgstr ""
+
+#: config/picochip/picochip.c:1940
+#, gcc-internal-format, gfc-internal-format
+msgid "picochip_asm_output_opcode - Found multiple lines in VLIW packet %s"
+msgstr ""
+
+#: config/picochip/picochip.c:2043
+#, gcc-internal-format
+msgid "picochip_asm_output_opcode - can%'t output unknown operator %c"
+msgstr ""
+
+#: config/picochip/picochip.c:2294 config/picochip/picochip.c:2354
+#, gcc-internal-format
+msgid "%s: at least one operand can%'t be handled"
+msgstr ""
+
+#: config/picochip/picochip.c:2435
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown short branch in %s (type %d)"
+msgstr ""
+
+#: config/picochip/picochip.c:2472
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown long branch in %s (type %d)"
+msgstr ""
+
+#: config/picochip/picochip.c:2512 config/picochip/picochip.c:2580
+#, gcc-internal-format, gfc-internal-format
+msgid "PUT uses port array index %d, which is out of range [%d..%d)"
+msgstr ""
+
+#: config/picochip/picochip.c:2546
+#, gcc-internal-format, gfc-internal-format
+msgid "GET uses port array index %d, which is out of range [%d..%d)"
+msgstr ""
+
+#: config/picochip/picochip.c:3425
+#, gcc-internal-format, gfc-internal-format
+msgid "too many ALU instructions emitted (%d)"
+msgstr ""
+
+#: config/picochip/picochip.c:4058 config/picochip/picochip.c:4151
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: Second source operand is not a constant"
+msgstr ""
+
+#: config/picochip/picochip.c:4061 config/picochip/picochip.c:4112
+#: config/picochip/picochip.c:4154
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: Third source operand is not a constant"
+msgstr ""
+
+#: config/picochip/picochip.c:4115
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: Fourth source operand is not a constant"
+msgstr ""
+
+#: config/picochip/picochip.c:4413
+#, gcc-internal-format, gfc-internal-format
+msgid "%s (disable warning using -mno-inefficient-warnings)"
+msgstr ""
+
+#: config/rs6000/host-darwin.c:60
+#, gcc-internal-format
+msgid "Segmentation Fault (code)"
+msgstr ""
+
+#: config/rs6000/host-darwin.c:130
+#, gcc-internal-format
+msgid "Segmentation Fault"
+msgstr ""
+
+#: config/rs6000/host-darwin.c:144
+#, gcc-internal-format
+msgid "While setting up signal stack: %m"
+msgstr ""
+
+#: config/rs6000/host-darwin.c:150
+#, gcc-internal-format
+msgid "While setting up signal handler: %m"
+msgstr ""
+
+#. Handle the machine specific pragma longcall. Its syntax is
+#.
+#. # pragma longcall ( TOGGLE )
+#.
+#. where TOGGLE is either 0 or 1.
+#.
+#. rs6000_default_long_calls is set to the value of TOGGLE, changing
+#. whether or not new function declarations receive a longcall
+#. attribute by default.
+#: config/rs6000/rs6000-c.c:51
+#, gcc-internal-format
+msgid "ignoring malformed #pragma longcall"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:64
+#, gcc-internal-format
+msgid "missing open paren"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:66
+#, gcc-internal-format
+msgid "missing number"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:68
+#, gcc-internal-format
+msgid "missing close paren"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:71
+#, gcc-internal-format
+msgid "number must be 0 or 1"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:74
+#, gcc-internal-format
+msgid "junk at end of #pragma longcall"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:3528
+#, gcc-internal-format, gfc-internal-format
+msgid "%s only accepts %d arguments"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:3533
+#, gcc-internal-format, gfc-internal-format
+msgid "%s only accepts 1 argument"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:3538
+#, gcc-internal-format, gfc-internal-format
+msgid "%s only accepts 2 arguments"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:3603
+#, gcc-internal-format
+msgid "vec_extract only accepts 2 arguments"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:3679
+#, gcc-internal-format
+msgid "vec_insert only accepts 3 arguments"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:3782
+#, gcc-internal-format
+msgid "passing arg %d of %qE discards qualifiers frompointer target type"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:3825
+#, gcc-internal-format
+msgid "invalid parameter combination for AltiVec intrinsic"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2436
+#, gcc-internal-format
+msgid "-mrecip requires -ffinite-math or -ffast-math"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2438
+#, gcc-internal-format
+msgid "-mrecip requires -fno-trapping-math or -ffast-math"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2440
+#, gcc-internal-format
+msgid "-mrecip requires -freciprocal-math or -ffast-math"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2535
+#, gcc-internal-format
+msgid "-m64 requires PowerPC64 architecture, enabling"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2616
+#, gcc-internal-format
+msgid "-malign-power is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2622
+#, gcc-internal-format
+msgid "not configured for SPE ABI"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2710
+#, gcc-internal-format
+msgid "AltiVec not supported in this target"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2712
+#, gcc-internal-format
+msgid "SPE not supported in this target"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2739
+#, gcc-internal-format
+msgid "-mmultiple is not supported on little endian systems"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2746
+#, gcc-internal-format
+msgid "-mstring is not supported on little endian systems"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2852
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2864
+#, gcc-internal-format
+msgid "target attribute or pragma changes long double size"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2885 config/rs6000/rs6000.c:2900
+#, gcc-internal-format
+msgid "target attribute or pragma changes AltiVec ABI"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2917
+#, gcc-internal-format
+msgid "target attribute or pragma changes darwin64 ABI"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2958
+#, gcc-internal-format
+msgid "target attribute or pragma changes SPE ABI"
+msgstr ""
+
+#: config/rs6000/rs6000.c:3281
+#, gcc-internal-format
+msgid "target attribute or pragma changes single precision floating point"
+msgstr ""
+
+#: config/rs6000/rs6000.c:3284
+#, gcc-internal-format
+msgid "target attribute or pragma changes double precision floating point"
+msgstr ""
+
+#: config/rs6000/rs6000.c:7420
+#, gcc-internal-format
+msgid "GCC vector returned by reference: non-standard ABI extension with no compatibility guarantee"
+msgstr ""
+
+#: config/rs6000/rs6000.c:7561
+#, gcc-internal-format
+msgid "cannot return value in vector register because altivec instructions are disabled, use -maltivec to enable them"
+msgstr ""
+
+#: config/rs6000/rs6000.c:7904
+#, gcc-internal-format
+msgid "cannot pass argument in vector register because altivec instructions are disabled, use -maltivec to enable them"
+msgstr ""
+
+#: config/rs6000/rs6000.c:8830
+#, gcc-internal-format
+msgid "GCC vector passed by reference: non-standard ABI extension with no compatibility guarantee"
+msgstr ""
+
+#: config/rs6000/rs6000.c:9459
+#, gcc-internal-format, gfc-internal-format
+msgid "internal error: builtin function %s already processed"
+msgstr ""
+
+#: config/rs6000/rs6000.c:9832
+#, gcc-internal-format
+msgid "argument 1 must be a 5-bit signed literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:9935 config/rs6000/rs6000.c:10952
+#, gcc-internal-format
+msgid "argument 2 must be a 5-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:9974
+#, gcc-internal-format
+msgid "argument 1 of __builtin_altivec_predicate must be a constant"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10026
+#, gcc-internal-format
+msgid "argument 1 of __builtin_altivec_predicate is out of range"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10283
+#, gcc-internal-format
+msgid "argument 3 must be a 4-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10301
+#, gcc-internal-format
+msgid "argument 3 must be a 2-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10313
+#, gcc-internal-format
+msgid "argument 3 must be a 1-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10496
+#, gcc-internal-format
+msgid "argument to %qs must be a 2-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10637
+#, gcc-internal-format
+msgid "unresolved overload for Altivec builtin %qF"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10743
+#, gcc-internal-format
+msgid "argument to dss must be a 2-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11072
+#, gcc-internal-format
+msgid "argument 1 of __builtin_paired_predicate must be a constant"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11119
+#, gcc-internal-format
+msgid "argument 1 of __builtin_paired_predicate is out of range"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11144
+#, gcc-internal-format
+msgid "argument 1 of __builtin_spe_predicate must be a constant"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11216
+#, gcc-internal-format
+msgid "argument 1 of __builtin_spe_predicate is out of range"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11298
+#, gcc-internal-format, gfc-internal-format
+msgid "Builtin function %s is only valid for the cell processor"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11300
+#, gcc-internal-format, gfc-internal-format
+msgid "Builtin function %s requires the -mvsx option"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11302
+#, gcc-internal-format, gfc-internal-format
+msgid "Builtin function %s requires the -maltivec option"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11304
+#, gcc-internal-format, gfc-internal-format
+msgid "Builtin function %s requires the -mpaired option"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11306
+#, gcc-internal-format, gfc-internal-format
+msgid "Builtin function %s requires the -mspe option"
+msgstr ""
+
+#: config/rs6000/rs6000.c:11308
+#, gcc-internal-format, gfc-internal-format
+msgid "Builtin function %s is not supported with the current options"
+msgstr ""
+
+#: config/rs6000/rs6000.c:12568
+#, gcc-internal-format, gfc-internal-format
+msgid "internal error: builtin function %s had no type"
+msgstr ""
+
+#: config/rs6000/rs6000.c:12575
+#, gcc-internal-format, gfc-internal-format
+msgid "internal error: builtin function %s had an unexpected return type %s"
+msgstr ""
+
+#: config/rs6000/rs6000.c:12591
+#, gcc-internal-format, gfc-internal-format
+msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
+msgstr ""
+
+#: config/rs6000/rs6000.c:18577
+#, gcc-internal-format
+msgid "stack frame too large"
+msgstr ""
+
+#: config/rs6000/rs6000.c:22051
+#, gcc-internal-format
+msgid "no profiling of 64-bit code for this ABI"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24036
+#, gcc-internal-format
+msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
+msgstr ""
+
+#: config/rs6000/rs6000.c:24117
+#, gcc-internal-format
+msgid "use of %<long double%> in AltiVec types is invalid"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24119
+#, gcc-internal-format
+msgid "use of boolean types in AltiVec types is invalid"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24121
+#, gcc-internal-format
+msgid "use of %<complex%> in AltiVec types is invalid"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24123
+#, gcc-internal-format
+msgid "use of decimal floating point types in AltiVec types is invalid"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24129
+#, gcc-internal-format
+msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24132
+#, gcc-internal-format
+msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24137
+#, gcc-internal-format
+msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
+msgstr ""
+
+#: config/rs6000/rs6000.c:24140
+#, gcc-internal-format
+msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
+msgstr ""
+
+#: config/rs6000/rs6000.c:26979
+#, gcc-internal-format, gfc-internal-format
+msgid "emitting microcode insn %s\t[%s] #%d"
+msgstr ""
+
+#: config/rs6000/rs6000.c:26983
+#, gcc-internal-format, gfc-internal-format
+msgid "emitting conditional microcode insn %s\t[%s] #%d"
+msgstr ""
+
+#: config/rs6000/rs6000.c:27207
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid cpu \"%s\" for %s\"%s\"%s"
+msgstr ""
+
+#: config/rs6000/rs6000.c:27210
+#, gcc-internal-format, gfc-internal-format
+msgid "%s\"%s\"%s is not allowed"
+msgstr ""
+
+#: config/rs6000/rs6000.c:27212
+#, gcc-internal-format, gfc-internal-format
+msgid "%s\"%s\"%s is invalid"
+msgstr ""
+
+#: config/rs6000/aix43.h:32 config/rs6000/aix51.h:32 config/rs6000/aix52.h:32
+#: config/rs6000/aix53.h:32 config/rs6000/aix61.h:32
+#, gcc-internal-format
+msgid "-maix64 and POWER architecture are incompatible"
+msgstr ""
+
+#: config/rs6000/aix43.h:37 config/rs6000/aix51.h:37 config/rs6000/aix52.h:37
+#: config/rs6000/aix53.h:37 config/rs6000/aix61.h:37
+#, gcc-internal-format
+msgid "-maix64 requires PowerPC64 architecture remain enabled"
+msgstr ""
+
+#: config/rs6000/aix43.h:43 config/rs6000/aix52.h:43 config/rs6000/aix53.h:43
+#: config/rs6000/aix61.h:43
+#, gcc-internal-format
+msgid "soft-float and long-double-128 are incompatible"
+msgstr ""
+
+#: config/rs6000/aix43.h:47 config/rs6000/aix51.h:41 config/rs6000/aix52.h:47
+#: config/rs6000/aix53.h:47 config/rs6000/aix61.h:47
+#, gcc-internal-format
+msgid "-maix64 required: 64-bit computation with 32-bit addressing not yet supported"
+msgstr ""
+
+#: config/rs6000/e500.h:40
+#, gcc-internal-format
+msgid "AltiVec and E500 instructions cannot coexist"
+msgstr ""
+
+#: config/rs6000/e500.h:42
+#, gcc-internal-format
+msgid "VSX and E500 instructions cannot coexist"
+msgstr ""
+
+#: config/rs6000/e500.h:44
+#, gcc-internal-format
+msgid "64-bit E500 not supported"
+msgstr ""
+
+#: config/rs6000/e500.h:46
+#, gcc-internal-format
+msgid "E500 and FPRs not supported"
+msgstr ""
+
+#: config/rs6000/eabispe.h:38 config/rs6000/linuxspe.h:38
+#, gcc-internal-format
+msgid "-m64 not supported in this configuration"
+msgstr ""
+
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
+#, gcc-internal-format
+msgid "-m64 requires a PowerPC64 cpu"
+msgstr ""
+
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
+#, gcc-internal-format
+msgid "-mcmodel incompatible with other toc options"
+msgstr ""
+
+#. Definitions for __builtin_return_address and __builtin_frame_address.
+#. __builtin_return_address (0) should give link register (65), enable
+#. this.
+#. This should be uncommented, so that the link register is used, but
+#. currently this would result in unmatched insns and spilling fixed
+#. registers so we'll leave it for another day. When these problems are
+#. taken care of one additional fetch will be necessary in RETURN_ADDR_RTX.
+#. (mrs)
+#. #define RETURN_ADDR_IN_PREVIOUS_FRAME
+#. Number of bytes into the frame return addresses can be found. See
+#. rs6000_stack_info in rs6000.c for more information on how the different
+#. abi's store the return address.
+#: config/rs6000/rs6000.h:1655
+#, gcc-internal-format
+msgid "RETURN_ADDRESS_OFFSET not supported"
+msgstr ""
+
+#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
+#. get control in TARGET_OPTION_OVERRIDE.
+#: config/rs6000/sysv4.h:114
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value for -mcall-%s"
+msgstr ""
+
+#: config/rs6000/sysv4.h:130
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value for -msdata=%s"
+msgstr ""
+
+#: config/rs6000/sysv4.h:147
+#, gcc-internal-format, gfc-internal-format
+msgid "-mrelocatable and -msdata=%s are incompatible"
+msgstr ""
+
+#: config/rs6000/sysv4.h:156
+#, gcc-internal-format, gfc-internal-format
+msgid "-f%s and -msdata=%s are incompatible"
+msgstr ""
+
+#: config/rs6000/sysv4.h:165
+#, gcc-internal-format, gfc-internal-format
+msgid "-msdata=%s and -mcall-%s are incompatible"
+msgstr ""
+
+#: config/rs6000/sysv4.h:174
+#, gcc-internal-format
+msgid "-mrelocatable and -mno-minimal-toc are incompatible"
+msgstr ""
+
+#: config/rs6000/sysv4.h:180
+#, gcc-internal-format, gfc-internal-format
+msgid "-mrelocatable and -mcall-%s are incompatible"
+msgstr ""
+
+#: config/rs6000/sysv4.h:187
+#, gcc-internal-format, gfc-internal-format
+msgid "-fPIC and -mcall-%s are incompatible"
+msgstr ""
+
+#: config/rs6000/sysv4.h:194
+#, gcc-internal-format
+msgid "-mcall-aixdesc must be big endian"
+msgstr ""
+
+#: config/rs6000/sysv4.h:199
+#, gcc-internal-format
+msgid "-msecure-plt not supported by your assembler"
+msgstr ""
+
+#: config/rs6000/sysv4.h:218
+#, gcc-internal-format, gfc-internal-format
+msgid "-m%s not supported in this configuration"
+msgstr ""
+
+#: config/rx/rx.c:641
+#, gcc-internal-format, gfc-internal-format
+msgid "unrecognized control register number: %d - using 'psw'"
+msgstr ""
+
+#: config/rx/rx.c:2383
+#, gcc-internal-format, gfc-internal-format
+msgid "__builtin_rx_%s takes 'C', 'Z', 'S', 'O', 'I', or 'U'"
+msgstr ""
+
+#: config/rx/rx.c:2385
+#, gcc-internal-format
+msgid "use __builtin_rx_mvtc (0, ... ) to write arbitrary values to PSW"
+msgstr ""
+
+#: config/rx/rx.c:2440 config/xtensa/xtensa.c:3123 config/xtensa/xtensa.c:3163
+#, gcc-internal-format
+msgid "bad builtin code"
+msgstr ""
+
+#: config/rx/rx.c:2551
+#, gcc-internal-format
+msgid "RX FPU instructions do not support NaNs and infinities"
+msgstr ""
+
+#: config/s390/s390.c:1539
+#, gcc-internal-format, gfc-internal-format
+msgid "z/Architecture mode not supported on %s"
+msgstr ""
+
+#: config/s390/s390.c:1541
+#, gcc-internal-format
+msgid "64-bit ABI not supported in ESA/390 mode"
+msgstr ""
+
+#: config/s390/s390.c:1553
+#, gcc-internal-format, gfc-internal-format
+msgid "hardware decimal floating point instructions not available on %s"
+msgstr ""
+
+#: config/s390/s390.c:1556
+#, gcc-internal-format
+msgid "hardware decimal floating point instructions not available in ESA/390 mode"
+msgstr ""
+
+#: config/s390/s390.c:1566
+#, gcc-internal-format
+msgid "-mhard-dfp can%'t be used in conjunction with -msoft-float"
+msgstr ""
+
+#: config/s390/s390.c:1590
+#, gcc-internal-format
+msgid "-mbackchain -mpacked-stack -mhard-float are not supported in combination"
+msgstr ""
+
+#: config/s390/s390.c:1596
+#, gcc-internal-format
+msgid "stack size must be greater than the stack guard value"
+msgstr ""
+
+#: config/s390/s390.c:1598
+#, gcc-internal-format
+msgid "stack size must not be greater than 64k"
+msgstr ""
+
+#: config/s390/s390.c:1601
+#, gcc-internal-format
+msgid "-mstack-guard implies use of -mstack-size"
+msgstr ""
+
+#: config/s390/s390.c:7370
+#, gcc-internal-format
+msgid "total size of local variables exceeds architecture limit"
+msgstr ""
+
+#: config/s390/s390.c:8077
+#, gcc-internal-format
+msgid "frame size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes. An unconditional trap is added."
+msgstr ""
+
+#: config/s390/s390.c:8092
+#, gcc-internal-format
+msgid "frame size of function %qs is %wd bytes which is more than half the stack size. The dynamic check would not be reliable. No check emitted for this function."
+msgstr ""
+
+#: config/s390/s390.c:8120
+#, gcc-internal-format
+msgid "frame size of %qs is %wd bytes"
+msgstr ""
+
+#: config/s390/s390.c:8124
+#, gcc-internal-format
+msgid "%qs uses dynamic stack allocation"
+msgstr ""
+
+#: config/sh/sh.c:775
+#, gcc-internal-format
+msgid "ignoring -fschedule-insns because of exception handling bug"
+msgstr ""
+
+#: config/sh/sh.c:796
+#, gcc-internal-format
+msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
+msgstr ""
+
+#: config/sh/sh.c:7674
+#, gcc-internal-format
+msgid "__builtin_saveregs not supported by this subtarget"
+msgstr ""
+
+#: config/sh/sh.c:8838
+#, gcc-internal-format
+msgid "%qE attribute only applies to interrupt functions"
+msgstr ""
+
+#: config/sh/sh.c:8896
+#, gcc-internal-format
+msgid "%qE attribute is supported only for SH2A"
+msgstr ""
+
+#: config/sh/sh.c:8926
+#, gcc-internal-format
+msgid "attribute interrupt_handler is not compatible with -m5-compact"
+msgstr ""
+
+#: config/sh/sh.c:8943
+#, gcc-internal-format
+msgid "%qE attribute only applies to SH2A"
+msgstr ""
+
+#: config/sh/sh.c:8965
+#, gcc-internal-format
+msgid "%qE attribute argument should be between 0 to 255"
+msgstr ""
+
+#. The argument must be a constant string.
+#: config/sh/sh.c:9038
+#, gcc-internal-format
+msgid "%qE attribute argument not a string constant"
+msgstr ""
+
+#: config/sh/sh.c:11618
+#, gcc-internal-format
+msgid "r0 needs to be available as a call-clobbered register"
+msgstr ""
+
+#: config/sh/sh.c:11639
+#, gcc-internal-format
+msgid "need a second call-clobbered general purpose register"
+msgstr ""
+
+#: config/sh/sh.c:11647
+#, gcc-internal-format
+msgid "need a call-clobbered target register"
+msgstr ""
+
+#. FIXME
+#: config/sh/netbsd-elf.h:75
+#, gcc-internal-format
+msgid "unimplemented-shmedia profiling"
+msgstr ""
+
+#. The kernel loader cannot handle the relaxation relocations, so it cannot load kernel modules (which are ET_REL) or RTP executables (which are linked with --emit-relocs). No relaxation relocations appear in shared libraries, so relaxation is OK for RTP PIC.
+#: config/sh/vxworks.h:43
+#, gcc-internal-format
+msgid "-mrelax is only supported for RTP PIC"
+msgstr ""
+
+#: config/sparc/sparc.c:980
+#, gcc-internal-format, gfc-internal-format
+msgid "%s is not supported by this configuration"
+msgstr ""
+
+#: config/sparc/sparc.c:987
+#, gcc-internal-format
+msgid "-mlong-double-64 not allowed with -m64"
+msgstr ""
+
+#: config/sparc/sparc.c:1007
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value (%s) for -mcmodel= switch"
+msgstr ""
+
+#: config/sparc/sparc.c:1012
+#, gcc-internal-format
+msgid "-mcmodel= is not supported on 32 bit systems"
+msgstr ""
+
+#: config/sparc/sparc.c:1019
+#, gcc-internal-format
+msgid "-fcall-saved-REG is not supported for out registers"
+msgstr ""
+
+#: config/spu/spu-c.c:135
+#, gcc-internal-format, gfc-internal-format
+msgid "insufficient arguments to overloaded function %s"
+msgstr ""
+
+#: config/spu/spu-c.c:166
+#, gcc-internal-format, gfc-internal-format
+msgid "too many arguments to overloaded function %s"
+msgstr ""
+
+#: config/spu/spu-c.c:178
+#, gcc-internal-format, gfc-internal-format
+msgid "parameter list does not match a valid signature for %s()"
+msgstr ""
+
+#: config/spu/spu.c:548
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value (%s) for -march= switch"
+msgstr ""
+
+#: config/spu/spu.c:559
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value (%s) for -mtune= switch"
+msgstr ""
+
+#: config/spu/spu.c:5467 config/spu/spu.c:5470
+#, gcc-internal-format
+msgid "creating run-time relocation for %qD"
+msgstr ""
+
+#: config/spu/spu.c:5475 config/spu/spu.c:5477
+#, gcc-internal-format
+msgid "creating run-time relocation"
+msgstr ""
+
+#: config/spu/spu.c:6604
+#, gcc-internal-format, gfc-internal-format
+msgid "%s expects an integer literal in the range [%d, %d]"
+msgstr ""
+
+#: config/spu/spu.c:6624
+#, gcc-internal-format
+msgid "%s expects an integer literal in the range [%d, %d]. (%wd)"
+msgstr ""
+
+#: config/spu/spu.c:6653
+#, gcc-internal-format, gfc-internal-format
+msgid "%d least significant bits of %s are ignored"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1036
+#, gcc-internal-format
+msgid "local variable memory requirements exceed capacity"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1190
+#, gcc-internal-format
+msgid "function_profiler support"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1284
+#, gcc-internal-format
+msgid "cannot use va_start in interrupt function"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1851
+#, gcc-internal-format, gfc-internal-format
+msgid "switch statement of size %lu entries too large"
+msgstr ""
+
+#: config/stormy16/stormy16.c:2223
+#, gcc-internal-format
+msgid "%<__BELOW100__%> attribute only applies to variables"
+msgstr ""
+
+#: config/stormy16/stormy16.c:2230
+#, gcc-internal-format
+msgid "__BELOW100__ attribute not allowed with auto storage class"
+msgstr ""
+
+#: config/tilegx/tilegx.c:3397 config/tilepro/tilepro.c:3101
+#, gcc-internal-format
+msgid "bad builtin icode"
+msgstr ""
+
+#: config/tilegx/tilegx.c:3438 config/tilepro/tilepro.c:3127
+#, gcc-internal-format
+msgid "operand must be an immediate of the right size"
+msgstr ""
+
+#: config/v850/v850-c.c:67
+#, gcc-internal-format
+msgid "#pragma GHS endXXXX found without previous startXXX"
+msgstr ""
+
+#: config/v850/v850-c.c:70
+#, gcc-internal-format
+msgid "#pragma GHS endXXX does not match previous startXXX"
+msgstr ""
+
+#: config/v850/v850-c.c:96
+#, gcc-internal-format
+msgid "cannot set interrupt attribute: no current function"
+msgstr ""
+
+#: config/v850/v850-c.c:104
+#, gcc-internal-format
+msgid "cannot set interrupt attribute: no such identifier"
+msgstr ""
+
+#: config/v850/v850-c.c:153
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs section"
+msgstr ""
+
+#: config/v850/v850-c.c:170
+#, gcc-internal-format
+msgid "unrecognized section name %qE"
+msgstr ""
+
+#: config/v850/v850-c.c:185
+#, gcc-internal-format
+msgid "malformed #pragma ghs section"
+msgstr ""
+
+#: config/v850/v850-c.c:204
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs interrupt"
+msgstr ""
+
+#: config/v850/v850-c.c:215
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs starttda"
+msgstr ""
+
+#: config/v850/v850-c.c:226
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs startsda"
+msgstr ""
+
+#: config/v850/v850-c.c:237
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs startzda"
+msgstr ""
+
+#: config/v850/v850-c.c:248
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs endtda"
+msgstr ""
+
+#: config/v850/v850-c.c:259
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs endsda"
+msgstr ""
+
+#: config/v850/v850-c.c:270
+#, gcc-internal-format
+msgid "junk at end of #pragma ghs endzda"
+msgstr ""
+
+#: config/v850/v850.c:2094
+#, gcc-internal-format
+msgid "data area attributes cannot be specified for local variables"
+msgstr ""
+
+#: config/v850/v850.c:2105
+#, gcc-internal-format
+msgid "data area of %q+D conflicts with previous declaration"
+msgstr ""
+
+#: config/v850/v850.c:2236
+#, gcc-internal-format, gfc-internal-format
+msgid "bogus JR construction: %d"
+msgstr ""
+
+#: config/v850/v850.c:2254 config/v850/v850.c:2361
+#, gcc-internal-format, gfc-internal-format
+msgid "bad amount of stack space removal: %d"
+msgstr ""
+
+#: config/v850/v850.c:2341
+#, gcc-internal-format, gfc-internal-format
+msgid "bogus JARL construction: %d"
+msgstr ""
+
+#: config/v850/v850.c:2638
+#, gcc-internal-format, gfc-internal-format
+msgid "bogus DISPOSE construction: %d"
+msgstr ""
+
+#: config/v850/v850.c:2657
+#, gcc-internal-format, gfc-internal-format
+msgid "too much stack space to dispose of: %d"
+msgstr ""
+
+#: config/v850/v850.c:2759
+#, gcc-internal-format, gfc-internal-format
+msgid "bogus PREPEARE construction: %d"
+msgstr ""
+
+#: config/v850/v850.c:2776
+#, gcc-internal-format, gfc-internal-format
+msgid "too much stack space to prepare: %d"
+msgstr ""
+
+#: config/vms/vms-c.c:44
+#, gcc-internal-format
+msgid "junk at end of #pragma __nostandard"
+msgstr ""
+
+#: config/vms/vms-c.c:55
+#, gcc-internal-format
+msgid "junk at end of #pragma __standard"
+msgstr ""
+
+#: config/vms/vms-c.c:80
+#, gcc-internal-format
+msgid "malformed '#pragma member_alignment', ignoring"
+msgstr ""
+
+#: config/vms/vms-c.c:95
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown '#pragma member_alignment' name %s"
+msgstr ""
+
+#: config/vms/vms-c.c:100
+#, gcc-internal-format
+msgid "malformed '#pragma member_alignment'"
+msgstr ""
+
+#: config/vms/vms-c.c:130
+#, gcc-internal-format
+msgid "unhandled alignment for '#pragma nomember_alignment'"
+msgstr ""
+
+#: config/vms/vms-c.c:143
+#, gcc-internal-format
+msgid "garbage at end of '#pragma nomember_alignment'"
+msgstr ""
+
+#: config/vms/vms-c.c:182
+#, gcc-internal-format
+msgid "malformed '#pragma extern_model', ignoring"
+msgstr ""
+
+#: config/vms/vms-c.c:201
+#, gcc-internal-format
+msgid "extern model globalvalue"
+msgstr ""
+
+#: config/vms/vms-c.c:206
+#, gcc-internal-format, gfc-internal-format
+msgid "unknown '#pragma extern_model' model '%s'"
+msgstr ""
+
+#: config/vms/vms-c.c:212
+#, gcc-internal-format
+msgid "junk at end of '#pragma extern_model'"
+msgstr ""
+
+#: config/vms/vms-c.c:226
+#, gcc-internal-format
+msgid "vms '#pragma __message' is ignored"
+msgstr ""
+
+#: config/vms/vms-c.c:251 config/vms/vms-c.c:257
+#, gcc-internal-format
+msgid "malformed '#pragma __extern_prefix', ignoring"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2172
+#, gcc-internal-format
+msgid "boolean registers required for the floating-point option"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2207
+#, gcc-internal-format, gfc-internal-format
+msgid "-f%s is not supported with CONST16 instructions"
+msgstr ""
+
+#: config/xtensa/xtensa.c:2214
+#, gcc-internal-format
+msgid "PIC is required but not supported with CONST16 instructions"
+msgstr ""
+
+#: config/xtensa/xtensa.c:3293
+#, gcc-internal-format
+msgid "only uninitialized variables can be placed in a .bss section"
+msgstr ""
+
+#: ada/gcc-interface/misc.c:128
+#, gcc-internal-format
+msgid "%<-gnat%> misspelled as %<-gant%>"
+msgstr ""
+
+#: ada/gcc-interface/misc.c:229
+#, gcc-internal-format
+msgid "-fexcess-precision=standard for Ada"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
+#, gcc-internal-format
+msgid "%qs attribute ignored"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5430
+#, gcc-internal-format
+msgid "%qs attribute requires prototypes with named arguments"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5439
+#, gcc-internal-format
+msgid "%qs attribute only applies to variadic functions"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5510
+#, gcc-internal-format
+msgid "%qE attribute has no effect"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5616
+#, gcc-internal-format
+msgid "invalid vector type for attribute %qs"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5679
+#, gcc-internal-format
+msgid "attribute %qs applies to array types only"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5706
+#, gcc-internal-format
+msgid "invalid element type for attribute %qs"
+msgstr ""
+
+#. Conversion of implicit `this' argument failed.
+#: cp/call.c:3110
+#, gcc-internal-format
+msgid " no known conversion for implicit %<this%> parameter from %qT to %qT"
+msgstr ""
+
+#: cp/call.c:3114
+#, gcc-internal-format
+msgid " no known conversion for argument %d from %qT to %qT"
+msgstr ""
+
+#: cp/call.c:3125 cp/pt.c:5576
+#, gcc-internal-format, gfc-internal-format
+msgid " candidate expects %d argument, %d provided"
+msgid_plural " candidate expects %d arguments, %d provided"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: cp/call.c:3148
+#, gcc-internal-format
+msgid "%s%D(%T, %T, %T) <built-in>"
+msgstr ""
+
+#: cp/call.c:3153
+#, gcc-internal-format
+msgid "%s%D(%T, %T) <built-in>"
+msgstr ""
+
+#: cp/call.c:3157
+#, gcc-internal-format
+msgid "%s%D(%T) <built-in>"
+msgstr ""
+
+#: cp/call.c:3161
+#, gcc-internal-format
+msgid "%s%T <conversion>"
+msgstr ""
+
+#: cp/call.c:3163
+#, gcc-internal-format
+msgid "%s%#D <near match>"
+msgstr ""
+
+#: cp/call.c:3165
+#, gcc-internal-format
+msgid "%s%#D <deleted>"
+msgstr ""
+
+#: cp/call.c:3167
+#, gcc-internal-format
+msgid "%s%#D"
+msgstr ""
+
+#: cp/call.c:3186
+#, gcc-internal-format
+msgid " return type %qT of explicit conversion function cannot be converted to %qT with a qualification conversion"
+msgstr ""
+
+#: cp/call.c:3192
+#, gcc-internal-format
+msgid " conversion from return type %qT of template conversion function specialization to %qT is not an exact match"
+msgstr ""
+
+#: cp/call.c:3203
+#, gcc-internal-format
+msgid " substitution of deduced template arguments resulted in errors seen above"
+msgstr ""
+
+#. Re-run template unification with diagnostics.
+#: cp/call.c:3208
+#, gcc-internal-format
+msgid " template argument deduction/substitution failed:"
+msgstr ""
+
+#: cp/call.c:3227
+#, gcc-internal-format
+msgid " a constructor taking a single argument of its own class type is invalid"
+msgstr ""
+
+#: cp/call.c:3585
+#, gcc-internal-format
+msgid "conversion from %qT to %qT is ambiguous"
+msgstr ""
+
+#: cp/call.c:3701
+#, gcc-internal-format
+msgid "conversion from %qT to %qT not considered for non-type template argument"
+msgstr ""
+
+#: cp/call.c:3819
+#, gcc-internal-format
+msgid "no matching function for call to %<%D(%A)%>"
+msgstr ""
+
+#: cp/call.c:3822
+#, gcc-internal-format
+msgid "call of overloaded %<%D(%A)%> is ambiguous"
+msgstr ""
+
+#. It's no good looking for an overloaded operator() on a
+#. pointer-to-member-function.
+#: cp/call.c:4024
+#, gcc-internal-format
+msgid "pointer-to-member function %E cannot be called without an object; consider using .* or ->*"
+msgstr ""
+
+#: cp/call.c:4096
+#, gcc-internal-format
+msgid "no match for call to %<(%T) (%A)%>"
+msgstr ""
+
+#: cp/call.c:4109
+#, gcc-internal-format
+msgid "call of %<(%T) (%A)%> is ambiguous"
+msgstr ""
+
+#: cp/call.c:4163
+#, gcc-internal-format
+msgid "ambiguous overload for ternary %<operator?:%> in %<%E ? %E : %E%>"
+msgstr ""
+
+#: cp/call.c:4166
+#, gcc-internal-format
+msgid "no match for ternary %<operator?:%> in %<%E ? %E : %E%>"
+msgstr ""
+
+#: cp/call.c:4173
+#, gcc-internal-format
+msgid "ambiguous overload for %<operator%s%> in %<%E%s%>"
+msgstr ""
+
+#: cp/call.c:4176
+#, gcc-internal-format
+msgid "no match for %<operator%s%> in %<%E%s%>"
+msgstr ""
+
+#: cp/call.c:4182
+#, gcc-internal-format
+msgid "ambiguous overload for %<operator[]%> in %<%E[%E]%>"
+msgstr ""
+
+#: cp/call.c:4185
+#, gcc-internal-format
+msgid "no match for %<operator[]%> in %<%E[%E]%>"
+msgstr ""
+
+#: cp/call.c:4192
+#, gcc-internal-format
+msgid "ambiguous overload for %qs in %<%s %E%>"
+msgstr ""
+
+#: cp/call.c:4195
+#, gcc-internal-format
+msgid "no match for %qs in %<%s %E%>"
+msgstr ""
+
+#: cp/call.c:4202
+#, gcc-internal-format
+msgid "ambiguous overload for %<operator%s%> in %<%E %s %E%>"
+msgstr ""
+
+#: cp/call.c:4205
+#, gcc-internal-format
+msgid "no match for %<operator%s%> in %<%E %s %E%>"
+msgstr ""
+
+#: cp/call.c:4209
+#, gcc-internal-format
+msgid "ambiguous overload for %<operator%s%> in %<%s%E%>"
+msgstr ""
+
+#: cp/call.c:4212
+#, gcc-internal-format
+msgid "no match for %<operator%s%> in %<%s%E%>"
+msgstr ""
+
+#: cp/call.c:4307
+#, gcc-internal-format
+msgid "ISO C++ forbids omitting the middle term of a ?: expression"
+msgstr ""
+
+#: cp/call.c:4396
+#, gcc-internal-format
+msgid "second operand to the conditional operator is of type %<void%>, but the third operand is neither a throw-expression nor of type %<void%>"
+msgstr ""
+
+#: cp/call.c:4401
+#, gcc-internal-format
+msgid "third operand to the conditional operator is of type %<void%>, but the second operand is neither a throw-expression nor of type %<void%>"
+msgstr ""
+
+#: cp/call.c:4443 cp/call.c:4687
+#, gcc-internal-format
+msgid "operands to ?: have different types %qT and %qT"
+msgstr ""
+
+#: cp/call.c:4634
+#, gcc-internal-format
+msgid "enumeral mismatch in conditional expression: %qT vs %qT"
+msgstr ""
+
+#: cp/call.c:4645
+#, gcc-internal-format
+msgid "enumeral and non-enumeral type in conditional expression"
+msgstr ""
+
+#: cp/call.c:5034
+#, gcc-internal-format
+msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead"
+msgstr ""
+
+#: cp/call.c:5036
+#, gcc-internal-format
+msgid "no %<%D(int)%> declared for postfix %qs"
+msgstr ""
+
+#: cp/call.c:5130
+#, gcc-internal-format
+msgid "comparison between %q#T and %q#T"
+msgstr ""
+
+#: cp/call.c:5384
+#, gcc-internal-format
+msgid "non-placement deallocation function %q+D"
+msgstr ""
+
+#: cp/call.c:5385
+#, gcc-internal-format
+msgid "selected for placement delete"
+msgstr ""
+
+#: cp/call.c:5464
+#, gcc-internal-format
+msgid "no corresponding deallocation function for %qD"
+msgstr ""
+
+#: cp/call.c:5469
+#, gcc-internal-format
+msgid "no suitable %<operator %s%> for %qT"
+msgstr ""
+
+#: cp/call.c:5487
+#, gcc-internal-format
+msgid "%q+#D is private"
+msgstr ""
+
+#: cp/call.c:5489
+#, gcc-internal-format
+msgid "%q+#D is protected"
+msgstr ""
+
+#: cp/call.c:5491
+#, gcc-internal-format
+msgid "%q+#D is inaccessible"
+msgstr ""
+
+#: cp/call.c:5492
+#, gcc-internal-format
+msgid "within this context"
+msgstr ""
+
+#: cp/call.c:5539
+#, gcc-internal-format
+msgid "passing NULL to non-pointer argument %P of %qD"
+msgstr ""
+
+#: cp/call.c:5543
+#, gcc-internal-format
+msgid "converting to non-pointer type %qT from NULL"
+msgstr ""
+
+#: cp/call.c:5552
+#, gcc-internal-format
+msgid "converting %<false%> to pointer type for argument %P of %qD"
+msgstr ""
+
+#: cp/call.c:5556
+#, gcc-internal-format
+msgid "converting %<false%> to pointer type %qT"
+msgstr ""
+
+#: cp/call.c:5598
+#, gcc-internal-format
+msgid "too many braces around initializer for %qT"
+msgstr ""
+
+#: cp/call.c:5604
+#, gcc-internal-format
+msgid "invalid user-defined conversion from %qT to %qT"
+msgstr ""
+
+#: cp/call.c:5634 cp/cvt.c:223
+#, gcc-internal-format
+msgid "invalid conversion from %qT to %qT"
+msgstr ""
+
+#: cp/call.c:5638 cp/call.c:5854
+#, gcc-internal-format
+msgid " initializing argument %P of %qD"
+msgstr ""
+
+#: cp/call.c:5682
+#, gcc-internal-format
+msgid "converting to %qT from initializer list would use explicit constructor %qD"
+msgstr ""
+
+#: cp/call.c:5743 cp/call.c:5869
+#, gcc-internal-format
+msgid " initializing argument %P of %q+D"
+msgstr ""
+
+#: cp/call.c:5866
+#, gcc-internal-format
+msgid "cannot bind %qT lvalue to %qT"
+msgstr ""
+
+#: cp/call.c:5898
+#, gcc-internal-format
+msgid "cannot bind bitfield %qE to %qT"
+msgstr ""
+
+#: cp/call.c:5901 cp/call.c:5917
+#, gcc-internal-format
+msgid "cannot bind packed field %qE to %qT"
+msgstr ""
+
+#: cp/call.c:5904
+#, gcc-internal-format
+msgid "cannot bind rvalue %qE to %qT"
+msgstr ""
+
+#: cp/call.c:6016 cp/cvt.c:1654
+#, gcc-internal-format
+msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
+msgstr ""
+
+#: cp/call.c:6051
+#, gcc-internal-format
+msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
+msgstr ""
+
+#. conditionally-supported behavior [expr.call] 5.2.2/7.
+#: cp/call.c:6080
+#, gcc-internal-format
+msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
+msgstr ""
+
+#: cp/call.c:6136
+#, gcc-internal-format
+msgid "recursive evaluation of default argument for %q#D"
+msgstr ""
+
+#: cp/call.c:6144
+#, gcc-internal-format
+msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
+msgstr ""
+
+#: cp/call.c:6257
+#, gcc-internal-format
+msgid "argument of function call might be a candidate for a format attribute"
+msgstr ""
+
+#: cp/call.c:6465
+#, gcc-internal-format
+msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
+msgstr ""
+
+#: cp/call.c:6493
+#, gcc-internal-format
+msgid "%qT is not an accessible base of %qT"
+msgstr ""
+
+#: cp/call.c:6571
+#, gcc-internal-format
+msgid "deducing %qT as %qT"
+msgstr ""
+
+#: cp/call.c:6574
+#, gcc-internal-format
+msgid " in call to %q+D"
+msgstr ""
+
+#: cp/call.c:6576
+#, gcc-internal-format
+msgid " (you can disable this with -fno-deduce-init-list)"
+msgstr ""
+
+#: cp/call.c:6842
+#, gcc-internal-format
+msgid "could not find class$ field in java interface type %qT"
+msgstr ""
+
+#: cp/call.c:7101
+#, gcc-internal-format
+msgid "call to non-function %qD"
+msgstr ""
+
+#: cp/call.c:7146 cp/typeck.c:2605
+#, gcc-internal-format
+msgid "cannot call constructor %<%T::%D%> directly"
+msgstr ""
+
+#: cp/call.c:7148
+#, gcc-internal-format
+msgid " for a function-style cast, remove the redundant %<::%D%>"
+msgstr ""
+
+#: cp/call.c:7261
+#, gcc-internal-format
+msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
+msgstr ""
+
+#: cp/call.c:7274
+#, gcc-internal-format
+msgid "no matching function for call to %<%T::%s(%A)%#V%>"
+msgstr ""
+
+#: cp/call.c:7299
+#, gcc-internal-format
+msgid "call of overloaded %<%s(%A)%> is ambiguous"
+msgstr ""
+
+#: cp/call.c:7328
+#, gcc-internal-format
+msgid "cannot call member function %qD without object"
+msgstr ""
+
+#: cp/call.c:8068
+#, gcc-internal-format
+msgid "passing %qT chooses %qT over %qT"
+msgstr ""
+
+#: cp/call.c:8070 cp/name-lookup.c:5495
+#, gcc-internal-format
+msgid " in call to %qD"
+msgstr ""
+
+#: cp/call.c:8127
+#, gcc-internal-format
+msgid "choosing %qD over %qD"
+msgstr ""
+
+#: cp/call.c:8128
+#, gcc-internal-format
+msgid " for conversion from %qT to %qT"
+msgstr ""
+
+#: cp/call.c:8131
+#, gcc-internal-format
+msgid " because conversion sequence for the argument is better"
+msgstr ""
+
+#: cp/call.c:8250
+#, gcc-internal-format
+msgid "default argument mismatch in overload resolution"
+msgstr ""
+
+#: cp/call.c:8253
+#, gcc-internal-format
+msgid " candidate 1: %q+#F"
+msgstr ""
+
+#: cp/call.c:8255
+#, gcc-internal-format
+msgid " candidate 2: %q+#F"
+msgstr ""
+
+#: cp/call.c:8296
+#, gcc-internal-format
+msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
+msgstr ""
+
+#: cp/call.c:8449
+#, gcc-internal-format
+msgid "could not convert %qE from %qT to %qT"
+msgstr ""
+
+#: cp/call.c:8639
+#, gcc-internal-format
+msgid "a temporary bound to %qD only persists until the constructor exits"
+msgstr ""
+
+#: cp/call.c:8745
+#, gcc-internal-format
+msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
+msgstr ""
+
+#: cp/call.c:8749
+#, gcc-internal-format
+msgid "invalid initialization of reference of type %qT from expression of type %qT"
+msgstr ""
+
+#: cp/class.c:296
+#, gcc-internal-format
+msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
+msgstr ""
+
+#: cp/class.c:998
+#, gcc-internal-format
+msgid "Java class %qT cannot have a destructor"
+msgstr ""
+
+#: cp/class.c:1000
+#, gcc-internal-format
+msgid "Java class %qT cannot have an implicit non-trivial destructor"
+msgstr ""
+
+#: cp/class.c:1103
+#, gcc-internal-format
+msgid "%q+#D cannot be overloaded"
+msgstr ""
+
+#: cp/class.c:1104
+#, gcc-internal-format
+msgid "with %q+#D"
+msgstr ""
+
+#: cp/class.c:1173
+#, gcc-internal-format
+msgid "conflicting access specifications for method %q+D, ignored"
+msgstr ""
+
+#: cp/class.c:1176
+#, gcc-internal-format
+msgid "conflicting access specifications for field %qE, ignored"
+msgstr ""
+
+#: cp/class.c:1238 cp/class.c:1246
+#, gcc-internal-format
+msgid "%q+D invalid in %q#T"
+msgstr ""
+
+#: cp/class.c:1239
+#, gcc-internal-format
+msgid " because of local method %q+#D with same name"
+msgstr ""
+
+#: cp/class.c:1247
+#, gcc-internal-format
+msgid " because of local member %q+#D with same name"
+msgstr ""
+
+#: cp/class.c:1291
+#, gcc-internal-format
+msgid "cannot derive from %<final%> base %qT in derived type %qT"
+msgstr ""
+
+#: cp/class.c:1303
+#, gcc-internal-format
+msgid "base class %q#T has a non-virtual destructor"
+msgstr ""
+
+#: cp/class.c:1707
+#, gcc-internal-format
+msgid "all member functions in class %qT are private"
+msgstr ""
+
+#: cp/class.c:1719
+#, gcc-internal-format
+msgid "%q#T only defines a private destructor and has no friends"
+msgstr ""
+
+#: cp/class.c:1764
+#, gcc-internal-format
+msgid "%q#T only defines private constructors and has no friends"
+msgstr ""
+
+#: cp/class.c:2157
+#, gcc-internal-format
+msgid "no unique final overrider for %qD in %qT"
+msgstr ""
+
+#: cp/class.c:2524
+#, gcc-internal-format
+msgid "%q+#D marked final, but is not virtual"
+msgstr ""
+
+#: cp/class.c:2526
+#, gcc-internal-format
+msgid "%q+#D marked override, but does not override"
+msgstr ""
+
+#. Here we know it is a hider, and no overrider exists.
+#: cp/class.c:2595
+#, gcc-internal-format
+msgid "%q+D was hidden"
+msgstr ""
+
+#: cp/class.c:2596
+#, gcc-internal-format
+msgid " by %q+D"
+msgstr ""
+
+#: cp/class.c:2639 cp/decl2.c:1359
+#, gcc-internal-format
+msgid "%q+#D invalid; an anonymous union can only have non-static data members"
+msgstr ""
+
+#: cp/class.c:2642
+#, gcc-internal-format
+msgid "%q+#D invalid; an anonymous struct can only have non-static data members"
+msgstr ""
+
+#: cp/class.c:2650 cp/decl2.c:1365
+#, gcc-internal-format
+msgid "private member %q+#D in anonymous union"
+msgstr ""
+
+#: cp/class.c:2652
+#, gcc-internal-format
+msgid "private member %q+#D in anonymous struct"
+msgstr ""
+
+#: cp/class.c:2657 cp/decl2.c:1367
+#, gcc-internal-format
+msgid "protected member %q+#D in anonymous union"
+msgstr ""
+
+#: cp/class.c:2659
+#, gcc-internal-format
+msgid "protected member %q+#D in anonymous struct"
+msgstr ""
+
+#: cp/class.c:2887
+#, gcc-internal-format
+msgid "bit-field %q+#D with non-integral type"
+msgstr ""
+
+#: cp/class.c:2903
+#, gcc-internal-format
+msgid "bit-field %q+D width not an integer constant"
+msgstr ""
+
+#: cp/class.c:2908
+#, gcc-internal-format
+msgid "negative width in bit-field %q+D"
+msgstr ""
+
+#: cp/class.c:2913
+#, gcc-internal-format
+msgid "zero width for bit-field %q+D"
+msgstr ""
+
+#: cp/class.c:2919
+#, gcc-internal-format
+msgid "width of %q+D exceeds its type"
+msgstr ""
+
+#: cp/class.c:2923
+#, gcc-internal-format
+msgid "%q+D is too small to hold all values of %q#T"
+msgstr ""
+
+#: cp/class.c:2982
+#, gcc-internal-format
+msgid "member %q+#D with constructor not allowed in union"
+msgstr ""
+
+#: cp/class.c:2985
+#, gcc-internal-format
+msgid "member %q+#D with destructor not allowed in union"
+msgstr ""
+
+#: cp/class.c:2987
+#, gcc-internal-format
+msgid "member %q+#D with copy assignment operator not allowed in union"
+msgstr ""
+
+#: cp/class.c:2991
+#, gcc-internal-format
+msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/class.c:3025
+#, gcc-internal-format
+msgid "multiple fields in union %qT initialized"
+msgstr ""
+
+#: cp/class.c:3109
+#, gcc-internal-format
+msgid "%q+D may not be static because it is a member of a union"
+msgstr ""
+
+#: cp/class.c:3114
+#, gcc-internal-format
+msgid "%q+D may not have reference type %qT because it is a member of a union"
+msgstr ""
+
+#: cp/class.c:3125
+#, gcc-internal-format
+msgid "field %q+D invalidly declared function type"
+msgstr ""
+
+#: cp/class.c:3131
+#, gcc-internal-format
+msgid "field %q+D invalidly declared method type"
+msgstr ""
+
+#: cp/class.c:3187
+#, gcc-internal-format
+msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
+msgstr ""
+
+#: cp/class.c:3285
+#, gcc-internal-format
+msgid "field %q+#D with same name as class"
+msgstr ""
+
+#: cp/class.c:3308
+#, gcc-internal-format
+msgid "%q#T has pointer data members"
+msgstr ""
+
+#: cp/class.c:3313
+#, gcc-internal-format
+msgid " but does not override %<%T(const %T&)%>"
+msgstr ""
+
+#: cp/class.c:3315
+#, gcc-internal-format
+msgid " or %<operator=(const %T&)%>"
+msgstr ""
+
+#: cp/class.c:3319
+#, gcc-internal-format
+msgid " but does not override %<operator=(const %T&)%>"
+msgstr ""
+
+#: cp/class.c:3790
+#, gcc-internal-format
+msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:3917
+#, gcc-internal-format
+msgid "class %qT will be considered nearly empty in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:3999
+#, gcc-internal-format
+msgid "initializer specified for non-virtual method %q+D"
+msgstr ""
+
+#: cp/class.c:4390
+#, gcc-internal-format
+msgid "method overrides both %<transaction_pure%> and %qE methods"
+msgstr ""
+
+#: cp/class.c:4411
+#, gcc-internal-format
+msgid "method declared %qE overriding %qE method"
+msgstr ""
+
+#: cp/class.c:4877 cp/semantics.c:5729
+#, gcc-internal-format
+msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
+msgstr ""
+
+#: cp/class.c:4902
+#, gcc-internal-format
+msgid "%q+T is not literal because:"
+msgstr ""
+
+#: cp/class.c:4904
+#, gcc-internal-format
+msgid " %q+T has a non-trivial destructor"
+msgstr ""
+
+#: cp/class.c:4909
+#, 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"
+msgstr ""
+
+#: cp/class.c:4945
+#, gcc-internal-format
+msgid " base class %qT of %q+T is non-literal"
+msgstr ""
+
+#: cp/class.c:4959
+#, gcc-internal-format
+msgid " non-static data member %q+D has non-literal type"
+msgstr ""
+
+#: cp/class.c:5071
+#, gcc-internal-format
+msgid "non-static reference %q+#D in class without a constructor"
+msgstr ""
+
+#: cp/class.c:5076
+#, gcc-internal-format
+msgid "non-static const member %q+#D in class without a constructor"
+msgstr ""
+
+#. If the function is defaulted outside the class, we just
+#. give the synthesis error.
+#: cp/class.c:5102
+#, gcc-internal-format
+msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
+msgstr ""
+
+#: cp/class.c:5105
+#, gcc-internal-format
+msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
+msgstr ""
+
+#: cp/class.c:5329
+#, gcc-internal-format
+msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5430
+#, gcc-internal-format
+msgid "direct base %qT inaccessible in %qT due to ambiguity"
+msgstr ""
+
+#: cp/class.c:5442
+#, gcc-internal-format
+msgid "virtual base %qT inaccessible in %qT due to ambiguity"
+msgstr ""
+
+#: cp/class.c:5628
+#, gcc-internal-format
+msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5668
+#, gcc-internal-format
+msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5696
+#, gcc-internal-format
+msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5706
+#, gcc-internal-format
+msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5794
+#, gcc-internal-format
+msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
+#, gcc-internal-format
+msgid "redefinition of %q#T"
+msgstr ""
+
+#: cp/class.c:6114
+#, gcc-internal-format
+msgid "%q#T has virtual functions and accessible non-virtual destructor"
+msgstr ""
+
+#: cp/class.c:6140
+#, gcc-internal-format
+msgid "type transparent class %qT does not have any fields"
+msgstr ""
+
+#: cp/class.c:6146
+#, gcc-internal-format
+msgid "type transparent class %qT has base classes"
+msgstr ""
+
+#: cp/class.c:6150
+#, gcc-internal-format
+msgid "type transparent class %qT has virtual functions"
+msgstr ""
+
+#: cp/class.c:6252
+#, gcc-internal-format
+msgid "trying to finish struct, but kicked out due to previous parse errors"
+msgstr ""
+
+#: cp/class.c:6758
+#, gcc-internal-format
+msgid "language string %<\"%E\"%> not recognized"
+msgstr ""
+
+#: cp/class.c:6848
+#, gcc-internal-format
+msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
+msgstr ""
+
+#: cp/class.c:6972
+#, gcc-internal-format
+msgid "no matches converting function %qD to type %q#T"
+msgstr ""
+
+#: cp/class.c:6995
+#, gcc-internal-format
+msgid "converting overloaded function %qD to type %q#T is ambiguous"
+msgstr ""
+
+#: cp/class.c:7022
+#, gcc-internal-format
+msgid "assuming pointer to member %qD"
+msgstr ""
+
+#: cp/class.c:7025
+#, gcc-internal-format
+msgid "(a pointer to member can only be formed with %<&%E%>)"
+msgstr ""
+
+#: cp/class.c:7087 cp/class.c:7121
+#, gcc-internal-format
+msgid "not enough type information"
+msgstr ""
+
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#, gcc-internal-format
+msgid "cannot convert %qE from type %qT to type %qT"
+msgstr ""
+
+#. [basic.scope.class]
+#.
+#. A name N used in a class S shall refer to the same declaration
+#. in its context and when re-evaluated in the completed scope of
+#. S.
+#: cp/class.c:7415 cp/decl.c:1287
+#, gcc-internal-format
+msgid "declaration of %q#D"
+msgstr ""
+
+#: cp/class.c:7416
+#, gcc-internal-format
+msgid "changes meaning of %qD from %q+#D"
+msgstr ""
+
+#: cp/cp-gimplify.c:1446
+#, gcc-internal-format
+msgid "%qE implicitly determined as %<firstprivate%> has reference type"
+msgstr ""
+
+#: cp/cvt.c:90
+#, gcc-internal-format
+msgid "can%'t convert from incomplete type %qT to %qT"
+msgstr ""
+
+#: cp/cvt.c:99
+#, gcc-internal-format
+msgid "conversion of %qE from %qT to %qT is ambiguous"
+msgstr ""
+
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
+#, gcc-internal-format
+msgid "zero as null pointer constant"
+msgstr ""
+
+#: cp/cvt.c:378
+#, gcc-internal-format
+msgid "initialization of volatile reference type %q#T from rvalue of type %qT"
+msgstr ""
+
+#: cp/cvt.c:381
+#, gcc-internal-format
+msgid "conversion to volatile reference type %q#T from rvalue of type %qT"
+msgstr ""
+
+#: cp/cvt.c:384
+#, gcc-internal-format
+msgid "initialization of non-const reference type %q#T from rvalue of type %qT"
+msgstr ""
+
+#: cp/cvt.c:387
+#, gcc-internal-format
+msgid "conversion to non-const reference type %q#T from rvalue of type %qT"
+msgstr ""
+
+#: cp/cvt.c:460
+#, gcc-internal-format
+msgid "conversion from %qT to %qT discards qualifiers"
+msgstr ""
+
+#: cp/cvt.c:478 cp/typeck.c:6182
+#, gcc-internal-format
+msgid "casting %qT to %qT does not dereference pointer"
+msgstr ""
+
+#: cp/cvt.c:506
+#, gcc-internal-format
+msgid "cannot convert type %qT to type %qT"
+msgstr ""
+
+#: cp/cvt.c:712
+#, gcc-internal-format
+msgid "conversion from %q#T to %q#T"
+msgstr ""
+
+#: cp/cvt.c:728
+#, gcc-internal-format
+msgid "the result of the conversion is unspecified because %qE is outside the range of type %qT"
+msgstr ""
+
+#: cp/cvt.c:739 cp/cvt.c:770
+#, gcc-internal-format
+msgid "%q#T used where a %qT was expected"
+msgstr ""
+
+#: cp/cvt.c:785
+#, gcc-internal-format
+msgid "%q#T used where a floating point value was expected"
+msgstr ""
+
+#: cp/cvt.c:845
+#, gcc-internal-format
+msgid "conversion from %qT to non-scalar type %qT requested"
+msgstr ""
+
+#: cp/cvt.c:903
+#, gcc-internal-format
+msgid "pseudo-destructor is not called"
+msgstr ""
+
+#: cp/cvt.c:980
+#, gcc-internal-format
+msgid "conversion to void will not access object of incomplete type %qT"
+msgstr ""
+
+#: cp/cvt.c:984
+#, gcc-internal-format
+msgid "indirection will not access object of incomplete type %qT in second operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:989
+#, gcc-internal-format
+msgid "indirection will not access object of incomplete type %qT in third operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:994
+#, gcc-internal-format
+msgid "indirection will not access object of incomplete type %qT in right operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:999
+#, gcc-internal-format
+msgid "indirection will not access object of incomplete type %qT in left operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:1004
+#, gcc-internal-format
+msgid "indirection will not access object of incomplete type %qT in statement"
+msgstr ""
+
+#: cp/cvt.c:1008
+#, gcc-internal-format
+msgid "indirection will not access object of incomplete type %qT in for increment expression"
+msgstr ""
+
+#: cp/cvt.c:1024
+#, gcc-internal-format
+msgid "conversion to void will not access object of type %qT"
+msgstr ""
+
+#: cp/cvt.c:1028
+#, gcc-internal-format
+msgid "implicit dereference will not access object of type %qT in second operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:1033
+#, gcc-internal-format
+msgid "implicit dereference will not access object of type %qT in third operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:1038
+#, gcc-internal-format
+msgid "implicit dereference will not access object of type %qT in right operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:1043
+#, gcc-internal-format
+msgid "implicit dereference will not access object of type %qT in left operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:1048
+#, gcc-internal-format
+msgid "implicit dereference will not access object of type %qT in statement"
+msgstr ""
+
+#: cp/cvt.c:1052
+#, gcc-internal-format
+msgid "implicit dereference will not access object of type %qT in for increment expression"
+msgstr ""
+
+#: cp/cvt.c:1066
+#, gcc-internal-format
+msgid "conversion to void will not access object of non-trivially-copyable type %qT"
+msgstr ""
+
+#: cp/cvt.c:1071
+#, gcc-internal-format
+msgid "indirection will not access object of non-trivially-copyable type %qT in second operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:1076
+#, gcc-internal-format
+msgid "indirection will not access object of non-trivially-copyable type %qT in third operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:1081
+#, gcc-internal-format
+msgid "indirection will not access object of non-trivially-copyable type %qT in right operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:1086
+#, gcc-internal-format
+msgid "indirection will not access object of non-trivially-copyable type %qT in left operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:1091
+#, gcc-internal-format
+msgid "indirection will not access object of non-trivially-copyable type %qT in statement"
+msgstr ""
+
+#: cp/cvt.c:1096
+#, gcc-internal-format
+msgid "indirection will not access object of non-trivially-copyable type %qT in for increment expression"
+msgstr ""
+
+#: cp/cvt.c:1134
+#, gcc-internal-format
+msgid "conversion to void will not access object %qE of incomplete type %qT"
+msgstr ""
+
+#: cp/cvt.c:1138
+#, gcc-internal-format
+msgid "variable %qE of incomplete type %qT will not be accessed in second operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:1143
+#, gcc-internal-format
+msgid "variable %qE of incomplete type %qT will not be accessed in third operand of conditional expression"
+msgstr ""
+
+#: cp/cvt.c:1148
+#, gcc-internal-format
+msgid "variable %qE of incomplete type %qT will not be accessed in right operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:1153
+#, gcc-internal-format
+msgid "variable %qE of incomplete type %qT will not be accessed in left operand of comma operator"
+msgstr ""
+
+#: cp/cvt.c:1158
+#, gcc-internal-format
+msgid "variable %qE of incomplete type %qT will not be accessed in statement"
+msgstr ""
+
+#: cp/cvt.c:1162
+#, gcc-internal-format
+msgid "variable %qE of incomplete type %qT will not be accessed in for increment expression"
+msgstr ""
+
+#: cp/cvt.c:1211
+#, gcc-internal-format
+msgid "conversion to void cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/cvt.c:1215
+#, gcc-internal-format
+msgid "second operand of conditional expression cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/cvt.c:1219
+#, gcc-internal-format
+msgid "third operand of conditional expression cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/cvt.c:1223
+#, gcc-internal-format
+msgid "right operand of comma operator cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/cvt.c:1227
+#, gcc-internal-format
+msgid "left operand of comma operator cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/cvt.c:1231
+#, gcc-internal-format
+msgid "statement cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/cvt.c:1235
+#, gcc-internal-format
+msgid "for increment expression cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/cvt.c:1251
+#, gcc-internal-format
+msgid "second operand of conditional expression is a reference, not call, to function %qE"
+msgstr ""
+
+#: cp/cvt.c:1256
+#, gcc-internal-format
+msgid "third operand of conditional expression is a reference, not call, to function %qE"
+msgstr ""
+
+#: cp/cvt.c:1261
+#, gcc-internal-format
+msgid "right operand of comma operator is a reference, not call, to function %qE"
+msgstr ""
+
+#: cp/cvt.c:1266
+#, gcc-internal-format
+msgid "left operand of comma operator is a reference, not call, to function %qE"
+msgstr ""
+
+#: cp/cvt.c:1271
+#, gcc-internal-format
+msgid "statement is a reference, not call, to function %qE"
+msgstr ""
+
+#: cp/cvt.c:1276
+#, gcc-internal-format
+msgid "for increment expression is a reference, not call, to function %qE"
+msgstr ""
+
+#: cp/cvt.c:1303
+#, gcc-internal-format
+msgid "second operand of conditional expression has no effect"
+msgstr ""
+
+#: cp/cvt.c:1307
+#, gcc-internal-format
+msgid "third operand of conditional expression has no effect"
+msgstr ""
+
+#: cp/cvt.c:1311
+#, gcc-internal-format
+msgid "right operand of comma operator has no effect"
+msgstr ""
+
+#: cp/cvt.c:1315
+#, gcc-internal-format
+msgid "left operand of comma operator has no effect"
+msgstr ""
+
+#: cp/cvt.c:1319
+#, gcc-internal-format
+msgid "statement has no effect"
+msgstr ""
+
+#: cp/cvt.c:1323
+#, gcc-internal-format
+msgid "for increment expression has no effect"
+msgstr ""
+
+#: cp/cvt.c:1472
+#, gcc-internal-format
+msgid "converting NULL to non-pointer type"
+msgstr ""
+
+#: cp/cvt.c:1546 cp/cvt.c:1595
+#, gcc-internal-format
+msgid "ambiguous default type conversion from %qT"
+msgstr ""
+
+#: cp/cvt.c:1548
+#, gcc-internal-format
+msgid " candidate conversions include %qD"
+msgstr ""
+
+#: cp/cvt.c:1597
+#, gcc-internal-format
+msgid " candidate conversions include %qD and %qD"
+msgstr ""
+
+#: cp/decl.c:637
+#, gcc-internal-format
+msgid "variable %q+D set but not used"
+msgstr ""
+
+#: cp/decl.c:1108
+#, gcc-internal-format
+msgid "%qD was declared %<extern%> and later %<static%>"
+msgstr ""
+
+#: cp/decl.c:1109 cp/decl.c:1709 objc/objc-act.c:3378 objc/objc-act.c:3964
+#: objc/objc-act.c:3992 objc/objc-act.c:4048 objc/objc-act.c:6831
+#, gcc-internal-format
+msgid "previous declaration of %q+D"
+msgstr ""
+
+#: cp/decl.c:1141
+#, gcc-internal-format
+msgid "declaration of %qF has a different exception specifier"
+msgstr ""
+
+#: cp/decl.c:1143
+#, gcc-internal-format
+msgid "from previous declaration %q+F"
+msgstr ""
+
+#: cp/decl.c:1168
+#, gcc-internal-format
+msgid "redeclaration %qD differs in %<constexpr%>"
+msgstr ""
+
+#: cp/decl.c:1169
+#, gcc-internal-format
+msgid "from previous declaration %q+D"
+msgstr ""
+
+#: cp/decl.c:1214
+#, gcc-internal-format
+msgid "literal operator template %q+D conflicts with raw literal operator %qD"
+msgstr ""
+
+#: cp/decl.c:1219
+#, gcc-internal-format
+msgid "raw literal operator %q+D conflicts with literal operator template %qD"
+msgstr ""
+
+#: cp/decl.c:1240
+#, gcc-internal-format
+msgid "function %q+D redeclared as inline"
+msgstr ""
+
+#: cp/decl.c:1242
+#, gcc-internal-format
+msgid "previous declaration of %q+D with attribute noinline"
+msgstr ""
+
+#: cp/decl.c:1249
+#, gcc-internal-format
+msgid "function %q+D redeclared with attribute noinline"
+msgstr ""
+
+#: cp/decl.c:1251
+#, gcc-internal-format
+msgid "previous declaration of %q+D was inline"
+msgstr ""
+
+#: cp/decl.c:1275 cp/decl.c:1349
+#, gcc-internal-format
+msgid "shadowing built-in function %q#D"
+msgstr ""
+
+#: cp/decl.c:1276 cp/decl.c:1350
+#, gcc-internal-format
+msgid "shadowing library function %q#D"
+msgstr ""
+
+#: cp/decl.c:1283
+#, gcc-internal-format
+msgid "library function %q#D redeclared as non-function %q#D"
+msgstr ""
+
+#: cp/decl.c:1288
+#, gcc-internal-format
+msgid "conflicts with built-in declaration %q#D"
+msgstr ""
+
+#: cp/decl.c:1342 cp/decl.c:1471 cp/decl.c:1488
+#, gcc-internal-format
+msgid "new declaration %q#D"
+msgstr ""
+
+#: cp/decl.c:1343
+#, gcc-internal-format
+msgid "ambiguates built-in declaration %q#D"
+msgstr ""
+
+#: cp/decl.c:1435
+#, gcc-internal-format
+msgid "%q#D redeclared as different kind of symbol"
+msgstr ""
+
+#: cp/decl.c:1438
+#, gcc-internal-format
+msgid "previous declaration of %q+#D"
+msgstr ""
+
+#: cp/decl.c:1457
+#, gcc-internal-format
+msgid "declaration of template %q#D"
+msgstr ""
+
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
+#, gcc-internal-format
+msgid "conflicts with previous declaration %q+#D"
+msgstr ""
+
+#: cp/decl.c:1472 cp/decl.c:1489
+#, gcc-internal-format
+msgid "ambiguates old declaration %q+#D"
+msgstr ""
+
+#: cp/decl.c:1480
+#, gcc-internal-format
+msgid "declaration of C function %q#D conflicts with"
+msgstr ""
+
+#: cp/decl.c:1482
+#, gcc-internal-format
+msgid "previous declaration %q+#D here"
+msgstr ""
+
+#: cp/decl.c:1497
+#, gcc-internal-format
+msgid "conflicting declaration %q#D"
+msgstr ""
+
+#: cp/decl.c:1498
+#, gcc-internal-format
+msgid "%q+D has a previous declaration as %q#D"
+msgstr ""
+
+#. [namespace.alias]
+#.
+#. A namespace-name or namespace-alias shall not be declared as
+#. the name of any other entity in the same declarative region.
+#. A namespace-name defined at global scope shall not be
+#. declared as the name of any other entity in any global scope
+#. of the program.
+#: cp/decl.c:1550
+#, gcc-internal-format
+msgid "declaration of namespace %qD conflicts with"
+msgstr ""
+
+#: cp/decl.c:1551
+#, gcc-internal-format
+msgid "previous declaration of namespace %q+D here"
+msgstr ""
+
+#: cp/decl.c:1562
+#, gcc-internal-format
+msgid "%q+#D previously defined here"
+msgstr ""
+
+#: cp/decl.c:1563 cp/name-lookup.c:1136
+#, gcc-internal-format
+msgid "%q+#D previously declared here"
+msgstr ""
+
+#. Prototype decl follows defn w/o prototype.
+#: cp/decl.c:1572
+#, gcc-internal-format
+msgid "prototype for %q+#D"
+msgstr ""
+
+#: cp/decl.c:1574
+#, gcc-internal-format
+msgid "follows non-prototype definition here"
+msgstr ""
+
+#: cp/decl.c:1614
+#, gcc-internal-format
+msgid "previous declaration of %q+#D with %qL linkage"
+msgstr ""
+
+#: cp/decl.c:1616
+#, gcc-internal-format
+msgid "conflicts with new declaration with %qL linkage"
+msgstr ""
+
+#: cp/decl.c:1639 cp/decl.c:1645
+#, gcc-internal-format
+msgid "default argument given for parameter %d of %q#D"
+msgstr ""
+
+#: cp/decl.c:1641 cp/decl.c:1647
+#, gcc-internal-format
+msgid "after previous specification in %q+#D"
+msgstr ""
+
+#: cp/decl.c:1708
+#, gcc-internal-format
+msgid "redundant redeclaration of %qD in same scope"
+msgstr ""
+
+#: cp/decl.c:1714
+#, gcc-internal-format
+msgid "deleted definition of %qD"
+msgstr ""
+
+#: cp/decl.c:1715
+#, gcc-internal-format
+msgid "after previous declaration %q+D"
+msgstr ""
+
+#. From [temp.expl.spec]:
+#.
+#. If a template, a member template or the member of a class
+#. template is explicitly specialized then that
+#. specialization shall be declared before the first use of
+#. that specialization that would cause an implicit
+#. instantiation to take place, in every translation unit in
+#. which such a use occurs.
+#: cp/decl.c:2074
+#, gcc-internal-format
+msgid "explicit specialization of %qD after first use"
+msgstr ""
+
+#: cp/decl.c:2200
+#, gcc-internal-format
+msgid "%q+D: visibility attribute ignored because it"
+msgstr ""
+
+#: cp/decl.c:2202
+#, gcc-internal-format
+msgid "conflicts with previous declaration here"
+msgstr ""
+
+#. Reject two definitions.
+#: cp/decl.c:2369 cp/decl.c:2398 cp/decl.c:2427 cp/decl.c:2444 cp/decl.c:2516
+#, gcc-internal-format
+msgid "redefinition of %q#D"
+msgstr ""
+
+#: cp/decl.c:2385
+#, gcc-internal-format
+msgid "%qD conflicts with used function"
+msgstr ""
+
+#: cp/decl.c:2395
+#, gcc-internal-format
+msgid "%q#D not declared in class"
+msgstr ""
+
+#: cp/decl.c:2409 cp/decl.c:2454
+#, gcc-internal-format
+msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
+msgstr ""
+
+#: cp/decl.c:2412 cp/decl.c:2457
+#, gcc-internal-format
+msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
+msgstr ""
+
+#. is_primary=
+#. is_partial=
+#. is_friend_decl=
+#: cp/decl.c:2473
+#, gcc-internal-format
+msgid "redeclaration of friend %q#D may not have default template arguments"
+msgstr ""
+
+#: cp/decl.c:2487
+#, gcc-internal-format
+msgid "thread-local declaration of %q#D follows non-thread-local declaration"
+msgstr ""
+
+#: cp/decl.c:2490
+#, gcc-internal-format
+msgid "non-thread-local declaration of %q#D follows thread-local declaration"
+msgstr ""
+
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
+#, gcc-internal-format
+msgid "redeclaration of %q#D"
+msgstr ""
+
+#: cp/decl.c:2679
+#, gcc-internal-format
+msgid "jump to label %qD"
+msgstr ""
+
+#: cp/decl.c:2681
+#, gcc-internal-format
+msgid "jump to case label"
+msgstr ""
+
+#: cp/decl.c:2683 cp/decl.c:2825 cp/decl.c:2865
+#, gcc-internal-format
+msgid " from here"
+msgstr ""
+
+#: cp/decl.c:2702 cp/decl.c:2868
+#, gcc-internal-format
+msgid " exits OpenMP structured block"
+msgstr ""
+
+#: cp/decl.c:2724
+#, gcc-internal-format
+msgid " crosses initialization of %q+#D"
+msgstr ""
+
+#: cp/decl.c:2726 cp/decl.c:2842
+#, gcc-internal-format
+msgid " enters scope of %q+#D which has non-trivial destructor"
+msgstr ""
+
+#: cp/decl.c:2740 cp/decl.c:2847
+#, gcc-internal-format
+msgid " enters try block"
+msgstr ""
+
+#. Can't skip init of __exception_info.
+#: cp/decl.c:2742 cp/decl.c:2836 cp/decl.c:2849
+#, gcc-internal-format
+msgid " enters catch block"
+msgstr ""
+
+#: cp/decl.c:2752 cp/decl.c:2852
+#, gcc-internal-format
+msgid " enters OpenMP structured block"
+msgstr ""
+
+#: cp/decl.c:2824 cp/decl.c:2864
+#, gcc-internal-format
+msgid "jump to label %q+D"
+msgstr ""
+
+#: cp/decl.c:2840
+#, gcc-internal-format
+msgid " skips initialization of %q+#D"
+msgstr ""
+
+#: cp/decl.c:2917
+#, gcc-internal-format
+msgid "label named wchar_t"
+msgstr ""
+
+#: cp/decl.c:3225
+#, gcc-internal-format
+msgid "%qD is not a type"
+msgstr ""
+
+#: cp/decl.c:3231 cp/parser.c:5055
+#, gcc-internal-format
+msgid "%qD used without template parameters"
+msgstr ""
+
+#: cp/decl.c:3240
+#, gcc-internal-format
+msgid "%q#T is not a class"
+msgstr ""
+
+#: cp/decl.c:3264 cp/decl.c:3354
+#, gcc-internal-format
+msgid "no class template named %q#T in %q#T"
+msgstr ""
+
+#: cp/decl.c:3265
+#, gcc-internal-format
+msgid "no type named %q#T in %q#T"
+msgstr ""
+
+#: cp/decl.c:3277
+#, gcc-internal-format
+msgid "lookup of %qT in %qT is ambiguous"
+msgstr ""
+
+#: cp/decl.c:3286
+#, gcc-internal-format
+msgid "%<typename %T::%D%> names %q#T, which is not a class template"
+msgstr ""
+
+#: cp/decl.c:3293
+#, gcc-internal-format
+msgid "%<typename %T::%D%> names %q#T, which is not a type"
+msgstr ""
+
+#: cp/decl.c:3363
+#, gcc-internal-format
+msgid "template parameters do not match template"
+msgstr ""
+
+#: cp/decl.c:3364 cp/friend.c:327 cp/friend.c:335
+#, gcc-internal-format
+msgid "%q+D declared here"
+msgstr ""
+
+#: cp/decl.c:4082
+#, gcc-internal-format
+msgid "an anonymous struct cannot have function members"
+msgstr ""
+
+#: cp/decl.c:4085
+#, gcc-internal-format
+msgid "an anonymous union cannot have function members"
+msgstr ""
+
+#: cp/decl.c:4103
+#, gcc-internal-format
+msgid "member %q+#D with constructor not allowed in anonymous aggregate"
+msgstr ""
+
+#: cp/decl.c:4106
+#, gcc-internal-format
+msgid "member %q+#D with destructor not allowed in anonymous aggregate"
+msgstr ""
+
+#: cp/decl.c:4109
+#, gcc-internal-format
+msgid "member %q+#D with copy assignment operator not allowed in anonymous aggregate"
+msgstr ""
+
+#: cp/decl.c:4134
+#, gcc-internal-format
+msgid "multiple types in one declaration"
+msgstr ""
+
+#: cp/decl.c:4138
+#, gcc-internal-format
+msgid "redeclaration of C++ built-in type %qT"
+msgstr ""
+
+#: cp/decl.c:4155
+#, gcc-internal-format
+msgid "%<auto%> can only be specified for variables or function declarations"
+msgstr ""
+
+#: cp/decl.c:4181
+#, gcc-internal-format
+msgid "missing type-name in typedef-declaration"
+msgstr ""
+
+#: cp/decl.c:4188
+#, gcc-internal-format
+msgid "ISO C++ prohibits anonymous structs"
+msgstr ""
+
+#: cp/decl.c:4195
+#, gcc-internal-format
+msgid "%qs can only be specified for functions"
+msgstr ""
+
+#: cp/decl.c:4201
+#, gcc-internal-format
+msgid "%<friend%> can only be specified inside a class"
+msgstr ""
+
+#: cp/decl.c:4203
+#, gcc-internal-format
+msgid "%<explicit%> can only be specified for constructors"
+msgstr ""
+
+#: cp/decl.c:4205
+#, gcc-internal-format
+msgid "a storage class can only be specified for objects and functions"
+msgstr ""
+
+#: cp/decl.c:4211
+#, gcc-internal-format
+msgid "qualifiers can only be specified for objects and functions"
+msgstr ""
+
+#: cp/decl.c:4214
+#, gcc-internal-format
+msgid "%<typedef%> was ignored in this declaration"
+msgstr ""
+
+#: cp/decl.c:4216
+#, gcc-internal-format
+msgid "%<constexpr%> cannot be used for type declarations"
+msgstr ""
+
+#: cp/decl.c:4227
+#, gcc-internal-format
+msgid "attribute ignored in declaration of %q#T"
+msgstr ""
+
+#: cp/decl.c:4228
+#, gcc-internal-format
+msgid "attribute for %q#T must follow the %qs keyword"
+msgstr ""
+
+#: cp/decl.c:4297
+#, gcc-internal-format
+msgid "ignoring attributes applied to class type %qT outside of definition"
+msgstr ""
+
+#. A template type parameter or other dependent type.
+#: cp/decl.c:4301
+#, gcc-internal-format
+msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
+msgstr ""
+
+#: cp/decl.c:4371 cp/decl2.c:815
+#, gcc-internal-format
+msgid "typedef %qD is initialized (use decltype instead)"
+msgstr ""
+
+#: cp/decl.c:4389
+#, gcc-internal-format
+msgid "declaration of %q#D has %<extern%> and is initialized"
+msgstr ""
+
+#: cp/decl.c:4418
+#, gcc-internal-format
+msgid "definition of %q#D is marked %<dllimport%>"
+msgstr ""
+
+#: cp/decl.c:4438
+#, gcc-internal-format
+msgid "%q#D is not a static member of %q#T"
+msgstr ""
+
+#: cp/decl.c:4444
+#, gcc-internal-format
+msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
+msgstr ""
+
+#: cp/decl.c:4453
+#, gcc-internal-format
+msgid "template header not allowed in member definition of explicitly specialized class"
+msgstr ""
+
+#: cp/decl.c:4461
+#, gcc-internal-format
+msgid "duplicate initialization of %qD"
+msgstr ""
+
+#: cp/decl.c:4466
+#, gcc-internal-format
+msgid "%qD declared %<constexpr%> outside its class"
+msgstr ""
+
+#: cp/decl.c:4505
+#, gcc-internal-format
+msgid "declaration of %q#D outside of class is not definition"
+msgstr ""
+
+#: cp/decl.c:4600
+#, gcc-internal-format
+msgid "variable %q#D has initializer but incomplete type"
+msgstr ""
+
+#: cp/decl.c:4606 cp/decl.c:5401
+#, gcc-internal-format
+msgid "elements of array %q#D have incomplete type"
+msgstr ""
+
+#: cp/decl.c:4613 cp/decl.c:6011
+#, gcc-internal-format
+msgid "declaration of %q#D has no initializer"
+msgstr ""
+
+#: cp/decl.c:4615
+#, gcc-internal-format
+msgid "aggregate %q#D has incomplete type and cannot be defined"
+msgstr ""
+
+#: cp/decl.c:4649
+#, gcc-internal-format
+msgid "%qD declared as reference but not initialized"
+msgstr ""
+
+#: cp/decl.c:4690
+#, gcc-internal-format
+msgid "name used in a GNU-style designated initializer for an array"
+msgstr ""
+
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
+#, gcc-internal-format
+msgid "non-trivial designated initializers not supported"
+msgstr ""
+
+#: cp/decl.c:4703
+#, gcc-internal-format
+msgid "name %qD used in a GNU-style designated initializer for an array"
+msgstr ""
+
+#: cp/decl.c:4751
+#, gcc-internal-format
+msgid "initializer fails to determine size of %qD"
+msgstr ""
+
+#: cp/decl.c:4758
+#, gcc-internal-format
+msgid "array size missing in %qD"
+msgstr ""
+
+#: cp/decl.c:4770
+#, gcc-internal-format
+msgid "zero-size array %qD"
+msgstr ""
+
+#. An automatic variable with an incomplete type: that is an error.
+#. Don't talk about array types here, since we took care of that
+#. message in grokdeclarator.
+#: cp/decl.c:4813
+#, gcc-internal-format
+msgid "storage size of %qD isn%'t known"
+msgstr ""
+
+#: cp/decl.c:4836
+#, gcc-internal-format
+msgid "storage size of %qD isn%'t constant"
+msgstr ""
+
+#: cp/decl.c:4882
+#, gcc-internal-format
+msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
+msgstr ""
+
+#: cp/decl.c:4886
+#, gcc-internal-format
+msgid " you can work around this by removing the initializer"
+msgstr ""
+
+#: cp/decl.c:4917
+#, gcc-internal-format
+msgid "uninitialized const %qD"
+msgstr ""
+
+#: cp/decl.c:4924
+#, gcc-internal-format
+msgid "%q#T has no user-provided default constructor"
+msgstr ""
+
+#: cp/decl.c:4928
+#, gcc-internal-format
+msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
+msgstr ""
+
+#: cp/decl.c:4930
+#, gcc-internal-format
+msgid "and the implicitly-defined constructor does not initialize %q+#D"
+msgstr ""
+
+#: cp/decl.c:5049
+#, gcc-internal-format
+msgid "invalid type %qT as initializer for a vector of type %qT"
+msgstr ""
+
+#: cp/decl.c:5090
+#, gcc-internal-format
+msgid "initializer for %qT must be brace-enclosed"
+msgstr ""
+
+#: cp/decl.c:5107
+#, gcc-internal-format
+msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
+msgstr ""
+
+#: cp/decl.c:5117
+#, gcc-internal-format
+msgid "%qT has no non-static data member named %qD"
+msgstr ""
+
+#: cp/decl.c:5158
+#, gcc-internal-format
+msgid "C99 designator %qE outside aggregate initializer"
+msgstr ""
+
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/typeck2.c:1299 cp/typeck2.c:1346
+#, gcc-internal-format
+msgid "too many initializers for %qT"
+msgstr ""
+
+#: cp/decl.c:5228
+#, gcc-internal-format
+msgid "braces around scalar initializer for type %qT"
+msgstr ""
+
+#: cp/decl.c:5321
+#, gcc-internal-format
+msgid "missing braces around initializer for %qT"
+msgstr ""
+
+#: cp/decl.c:5403
+#, gcc-internal-format
+msgid "elements of array %q#T have incomplete type"
+msgstr ""
+
+#: cp/decl.c:5412
+#, gcc-internal-format
+msgid "variable-sized object %qD may not be initialized"
+msgstr ""
+
+#: cp/decl.c:5414
+#, gcc-internal-format
+msgid "variable-sized compound literal"
+msgstr ""
+
+#: cp/decl.c:5469
+#, gcc-internal-format
+msgid "%q#D has incomplete type"
+msgstr ""
+
+#: cp/decl.c:5489
+#, gcc-internal-format
+msgid "scalar object %qD requires one element in initializer"
+msgstr ""
+
+#: cp/decl.c:5532
+#, gcc-internal-format
+msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
+msgstr ""
+
+#: cp/decl.c:5612
+#, gcc-internal-format
+msgid "array %qD initialized by parenthesized string literal %qE"
+msgstr ""
+
+#: cp/decl.c:5639
+#, gcc-internal-format
+msgid "initializer invalid for static member with constructor"
+msgstr ""
+
+#: cp/decl.c:5641
+#, gcc-internal-format
+msgid "non-constant in-class initialization invalid for static member %qD"
+msgstr ""
+
+#: cp/decl.c:5645
+#, gcc-internal-format
+msgid "(an out of class initialization is required)"
+msgstr ""
+
+#: cp/decl.c:5980
+#, gcc-internal-format
+msgid "assignment (not initialization) in declaration"
+msgstr ""
+
+#: cp/decl.c:6138
+#, gcc-internal-format
+msgid "shadowing previous type declaration of %q#D"
+msgstr ""
+
+#: cp/decl.c:6170
+#, gcc-internal-format
+msgid "%qD cannot be thread-local because it has non-trivial type %qT"
+msgstr ""
+
+#: cp/decl.c:6212
+#, gcc-internal-format
+msgid "Java object %qD not allocated with %<new%>"
+msgstr ""
+
+#: cp/decl.c:6220
+#, gcc-internal-format
+msgid "%qD is thread-local and so cannot be dynamically initialized"
+msgstr ""
+
+#: cp/decl.c:6238
+#, gcc-internal-format
+msgid "%qD cannot be initialized by a non-constant expression when being declared"
+msgstr ""
+
+#: cp/decl.c:6286
+#, gcc-internal-format
+msgid "non-static data member %qD has Java class type"
+msgstr ""
+
+#: cp/decl.c:6351
+#, gcc-internal-format
+msgid "function %q#D is initialized like a variable"
+msgstr ""
+
+#: cp/decl.c:6950
+#, gcc-internal-format
+msgid "initializer fails to determine size of %qT"
+msgstr ""
+
+#: cp/decl.c:6954
+#, gcc-internal-format
+msgid "array size missing in %qT"
+msgstr ""
+
+#: cp/decl.c:6957
+#, gcc-internal-format
+msgid "zero-size array %qT"
+msgstr ""
+
+#: cp/decl.c:6973
+#, gcc-internal-format
+msgid "destructor for alien class %qT cannot be a member"
+msgstr ""
+
+#: cp/decl.c:6975
+#, gcc-internal-format
+msgid "constructor for alien class %qT cannot be a member"
+msgstr ""
+
+#: cp/decl.c:6999
+#, gcc-internal-format
+msgid "%qD declared as a %<virtual%> variable"
+msgstr ""
+
+#: cp/decl.c:7001
+#, gcc-internal-format
+msgid "%qD declared as an %<inline%> variable"
+msgstr ""
+
+#: cp/decl.c:7003
+#, gcc-internal-format
+msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
+msgstr ""
+
+#: cp/decl.c:7008
+#, gcc-internal-format
+msgid "%qD declared as a %<virtual%> parameter"
+msgstr ""
+
+#: cp/decl.c:7010
+#, gcc-internal-format
+msgid "%qD declared as an %<inline%> parameter"
+msgstr ""
+
+#: cp/decl.c:7012
+#, gcc-internal-format
+msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
+msgstr ""
+
+#: cp/decl.c:7017
+#, gcc-internal-format
+msgid "%qD declared as a %<virtual%> type"
+msgstr ""
+
+#: cp/decl.c:7019
+#, gcc-internal-format
+msgid "%qD declared as an %<inline%> type"
+msgstr ""
+
+#: cp/decl.c:7021
+#, gcc-internal-format
+msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
+msgstr ""
+
+#: cp/decl.c:7026
+#, gcc-internal-format
+msgid "%qD declared as a %<virtual%> field"
+msgstr ""
+
+#: cp/decl.c:7028
+#, gcc-internal-format
+msgid "%qD declared as an %<inline%> field"
+msgstr ""
+
+#: cp/decl.c:7030
+#, gcc-internal-format
+msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
+msgstr ""
+
+#: cp/decl.c:7037
+#, gcc-internal-format
+msgid "%q+D declared as a friend"
+msgstr ""
+
+#: cp/decl.c:7043
+#, gcc-internal-format
+msgid "%q+D declared with an exception specification"
+msgstr ""
+
+#: cp/decl.c:7077
+#, gcc-internal-format
+msgid "definition of %qD is not in namespace enclosing %qT"
+msgstr ""
+
+#: cp/decl.c:7117
+#, gcc-internal-format
+msgid "static member function %q#D declared with type qualifiers"
+msgstr ""
+
+#: cp/decl.c:7216
+#, gcc-internal-format
+msgid "defining explicit specialization %qD in friend declaration"
+msgstr ""
+
+#. Something like `template <class T> friend void f<T>()'.
+#: cp/decl.c:7226
+#, gcc-internal-format
+msgid "invalid use of template-id %qD in declaration of primary template"
+msgstr ""
+
+#: cp/decl.c:7256
+#, gcc-internal-format
+msgid "default arguments are not allowed in declaration of friend template specialization %qD"
+msgstr ""
+
+#: cp/decl.c:7264
+#, gcc-internal-format
+msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
+msgstr ""
+
+#: cp/decl.c:7306
+#, gcc-internal-format
+msgid "cannot declare %<::main%> to be a template"
+msgstr ""
+
+#: cp/decl.c:7308
+#, gcc-internal-format
+msgid "cannot declare %<::main%> to be inline"
+msgstr ""
+
+#: cp/decl.c:7310
+#, gcc-internal-format
+msgid "cannot declare %<::main%> to be static"
+msgstr ""
+
+#: cp/decl.c:7338
+#, gcc-internal-format
+msgid "anonymous type with no linkage used to declare function %q#D with linkage"
+msgstr ""
+
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
+#, gcc-internal-format
+msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
+msgstr ""
+
+#: cp/decl.c:7348
+#, gcc-internal-format
+msgid "type %qT with no linkage used to declare function %q#D with linkage"
+msgstr ""
+
+#: cp/decl.c:7370
+#, gcc-internal-format
+msgid "static member function %qD cannot have cv-qualifier"
+msgstr ""
+
+#: cp/decl.c:7371
+#, gcc-internal-format
+msgid "non-member function %qD cannot have cv-qualifier"
+msgstr ""
+
+#: cp/decl.c:7387
+#, gcc-internal-format
+msgid "literal operator with C linkage"
+msgstr ""
+
+#: cp/decl.c:7396
+#, gcc-internal-format
+msgid "%qD has invalid argument list"
+msgstr ""
+
+#: cp/decl.c:7404
+#, gcc-internal-format
+msgid "integer suffix %<%s%> shadowed by implementation"
+msgstr ""
+
+#: cp/decl.c:7410
+#, gcc-internal-format
+msgid "floating point suffix %<%s%> shadowed by implementation"
+msgstr ""
+
+#: cp/decl.c:7416
+#, gcc-internal-format
+msgid "%qD must be a non-member function"
+msgstr ""
+
+#: cp/decl.c:7460
+#, gcc-internal-format
+msgid "%<::main%> must return %<int%>"
+msgstr ""
+
+#: cp/decl.c:7502
+#, gcc-internal-format
+msgid "definition of implicitly-declared %qD"
+msgstr ""
+
+#: cp/decl.c:7507
+#, gcc-internal-format
+msgid "definition of explicitly-defaulted %q+D"
+msgstr ""
+
+#: cp/decl.c:7508
+#, gcc-internal-format
+msgid "%q+#D explicitly defaulted here"
+msgstr ""
+
+#: cp/decl.c:7525 cp/decl2.c:736
+#, gcc-internal-format
+msgid "no %q#D member function declared in class %qT"
+msgstr ""
+
+#. DRs 132, 319 and 389 seem to indicate types with
+#. no linkage can only be used to declare extern "C"
+#. entities. Since it's not always an error in the
+#. ISO C++ 90 Standard, we only issue a warning.
+#: cp/decl.c:7696
+#, gcc-internal-format
+msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
+msgstr ""
+
+#: cp/decl.c:7705
+#, gcc-internal-format
+msgid "type %qT with no linkage used to declare variable %q#D with linkage"
+msgstr ""
+
+#: cp/decl.c:7828
+#, gcc-internal-format
+msgid "in-class initialization of static data member %q#D of incomplete type"
+msgstr ""
+
+#: cp/decl.c:7832
+#, gcc-internal-format
+msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
+msgstr ""
+
+#: cp/decl.c:7835
+#, gcc-internal-format
+msgid "in-class initialization of static data member %q#D of non-literal type"
+msgstr ""
+
+#: cp/decl.c:7848
+#, gcc-internal-format
+msgid "invalid in-class initialization of static data member of non-integral type %qT"
+msgstr ""
+
+#: cp/decl.c:7854
+#, gcc-internal-format
+msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
+msgstr ""
+
+#: cp/decl.c:7858
+#, gcc-internal-format
+msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
+msgstr ""
+
+#: cp/decl.c:7935 cp/decl.c:7963
+#, gcc-internal-format
+msgid "size of array %qD has non-integral type %qT"
+msgstr ""
+
+#: cp/decl.c:7938 cp/decl.c:7965
+#, gcc-internal-format
+msgid "size of array has non-integral type %qT"
+msgstr ""
+
+#: cp/decl.c:8015
+#, gcc-internal-format
+msgid "size of array %qD is negative"
+msgstr ""
+
+#: cp/decl.c:8017
+#, gcc-internal-format
+msgid "size of array is negative"
+msgstr ""
+
+#: cp/decl.c:8031
+#, gcc-internal-format
+msgid "ISO C++ forbids zero-size array %qD"
+msgstr ""
+
+#: cp/decl.c:8033
+#, gcc-internal-format
+msgid "ISO C++ forbids zero-size array"
+msgstr ""
+
+#: cp/decl.c:8045
+#, gcc-internal-format
+msgid "size of array %qD is not an integral constant-expression"
+msgstr ""
+
+#: cp/decl.c:8048
+#, gcc-internal-format
+msgid "size of array is not an integral constant-expression"
+msgstr ""
+
+#: cp/decl.c:8054
+#, gcc-internal-format
+msgid "ISO C++ forbids variable length array %qD"
+msgstr ""
+
+#: cp/decl.c:8056
+#, gcc-internal-format
+msgid "ISO C++ forbids variable length array"
+msgstr ""
+
+#: cp/decl.c:8062
+#, gcc-internal-format
+msgid "variable length array %qD is used"
+msgstr ""
+
+#: cp/decl.c:8100
+#, gcc-internal-format
+msgid "overflow in array dimension"
+msgstr ""
+
+#: cp/decl.c:8160
+#, gcc-internal-format
+msgid "declaration of %qD as array of %<auto%>"
+msgstr ""
+
+#: cp/decl.c:8168
+#, gcc-internal-format
+msgid "declaration of %qD as array of void"
+msgstr ""
+
+#: cp/decl.c:8170
+#, gcc-internal-format
+msgid "creating array of void"
+msgstr ""
+
+#: cp/decl.c:8175
+#, gcc-internal-format
+msgid "declaration of %qD as array of functions"
+msgstr ""
+
+#: cp/decl.c:8177
+#, gcc-internal-format
+msgid "creating array of functions"
+msgstr ""
+
+#: cp/decl.c:8182
+#, gcc-internal-format
+msgid "declaration of %qD as array of references"
+msgstr ""
+
+#: cp/decl.c:8184
+#, gcc-internal-format
+msgid "creating array of references"
+msgstr ""
+
+#: cp/decl.c:8189
+#, gcc-internal-format
+msgid "declaration of %qD as array of function members"
+msgstr ""
+
+#: cp/decl.c:8191
+#, gcc-internal-format
+msgid "creating array of function members"
+msgstr ""
+
+#: cp/decl.c:8205
+#, gcc-internal-format
+msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
+msgstr ""
+
+#: cp/decl.c:8209
+#, gcc-internal-format
+msgid "multidimensional array must have bounds for all dimensions except the first"
+msgstr ""
+
+#: cp/decl.c:8244
+#, gcc-internal-format
+msgid "return type specification for constructor invalid"
+msgstr ""
+
+#: cp/decl.c:8254
+#, gcc-internal-format
+msgid "return type specification for destructor invalid"
+msgstr ""
+
+#: cp/decl.c:8267
+#, gcc-internal-format
+msgid "return type specified for %<operator %T%>"
+msgstr ""
+
+#: cp/decl.c:8289
+#, gcc-internal-format
+msgid "unnamed variable or field declared void"
+msgstr ""
+
+#: cp/decl.c:8296
+#, gcc-internal-format
+msgid "variable or field declared void"
+msgstr ""
+
+#: cp/decl.c:8480
+#, gcc-internal-format
+msgid "invalid use of qualified-name %<::%D%>"
+msgstr ""
+
+#: cp/decl.c:8483
+#, gcc-internal-format
+msgid "invalid use of qualified-name %<%T::%D%>"
+msgstr ""
+
+#: cp/decl.c:8486
+#, gcc-internal-format
+msgid "invalid use of qualified-name %<%D::%D%>"
+msgstr ""
+
+#: cp/decl.c:8495
+#, gcc-internal-format
+msgid "%q#T is not a class or a namespace"
+msgstr ""
+
+#: cp/decl.c:8503
+#, gcc-internal-format
+msgid "type %qT is not derived from type %qT"
+msgstr ""
+
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
+#, gcc-internal-format
+msgid "declaration of %qD as non-function"
+msgstr ""
+
+#: cp/decl.c:8525
+#, gcc-internal-format
+msgid "declaration of %qD as non-member"
+msgstr ""
+
+#: cp/decl.c:8556
+#, gcc-internal-format
+msgid "declarator-id missing; using reserved word %qD"
+msgstr ""
+
+#: cp/decl.c:8603
+#, gcc-internal-format
+msgid "function definition does not declare parameters"
+msgstr ""
+
+#: cp/decl.c:8628
+#, gcc-internal-format
+msgid "declaration of %qD as %<typedef%>"
+msgstr ""
+
+#: cp/decl.c:8633
+#, gcc-internal-format
+msgid "declaration of %qD as parameter"
+msgstr ""
+
+#: cp/decl.c:8666
+#, gcc-internal-format
+msgid "%<constexpr%> cannot appear in a typedef declaration"
+msgstr ""
+
+#: cp/decl.c:8674
+#, gcc-internal-format
+msgid "two or more data types in declaration of %qs"
+msgstr ""
+
+#: cp/decl.c:8680
+#, gcc-internal-format
+msgid "conflicting specifiers in declaration of %qs"
+msgstr ""
+
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
+#, gcc-internal-format
+msgid "ISO C++ forbids declaration of %qs with no type"
+msgstr ""
+
+#: cp/decl.c:8769
+#, gcc-internal-format
+msgid "%<__int128%> is not supported by this target"
+msgstr ""
+
+#: cp/decl.c:8774
+#, gcc-internal-format
+msgid "ISO C++ does not support %<__int128%> for %qs"
+msgstr ""
+
+#: cp/decl.c:8795 cp/decl.c:8815
+#, gcc-internal-format
+msgid "%<signed%> or %<unsigned%> invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8797
+#, gcc-internal-format
+msgid "%<signed%> and %<unsigned%> specified together for %qs"
+msgstr ""
+
+#: cp/decl.c:8799
+#, gcc-internal-format
+msgid "%<long long%> invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8801
+#, gcc-internal-format
+msgid "%<long%> invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8803
+#, gcc-internal-format
+msgid "%<short%> invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8805
+#, gcc-internal-format
+msgid "%<long%> or %<short%> invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8807
+#, gcc-internal-format
+msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8809
+#, gcc-internal-format
+msgid "%<long%> or %<short%> specified with char for %qs"
+msgstr ""
+
+#: cp/decl.c:8811
+#, gcc-internal-format
+msgid "%<long%> and %<short%> specified together for %qs"
+msgstr ""
+
+#: cp/decl.c:8817
+#, gcc-internal-format
+msgid "%<short%> or %<long%> invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8825
+#, gcc-internal-format
+msgid "long, short, signed or unsigned used invalidly for %qs"
+msgstr ""
+
+#: cp/decl.c:8893
+#, gcc-internal-format
+msgid "complex invalid for %qs"
+msgstr ""
+
+#: cp/decl.c:8921
+#, gcc-internal-format
+msgid "qualifiers are not allowed on declaration of %<operator %T%>"
+msgstr ""
+
+#: cp/decl.c:8942
+#, gcc-internal-format
+msgid "member %qD cannot be declared both virtual and static"
+msgstr ""
+
+#: cp/decl.c:8950
+#, gcc-internal-format
+msgid "%<%T::%D%> is not a valid declarator"
+msgstr ""
+
+#: cp/decl.c:8959
+#, gcc-internal-format
+msgid "typedef declaration invalid in parameter declaration"
+msgstr ""
+
+#: cp/decl.c:8964
+#, gcc-internal-format
+msgid "storage class specified for template parameter %qs"
+msgstr ""
+
+#: cp/decl.c:8970
+#, gcc-internal-format
+msgid "storage class specifiers invalid in parameter declarations"
+msgstr ""
+
+#: cp/decl.c:8976
+#, gcc-internal-format
+msgid "a parameter cannot be declared %<constexpr%>"
+msgstr ""
+
+#: cp/decl.c:8985
+#, gcc-internal-format
+msgid "%<virtual%> outside class declaration"
+msgstr ""
+
+#: cp/decl.c:9003
+#, gcc-internal-format
+msgid "multiple storage classes in declaration of %qs"
+msgstr ""
+
+#: cp/decl.c:9026
+#, gcc-internal-format
+msgid "storage class specified for %qs"
+msgstr ""
+
+#: cp/decl.c:9030
+#, gcc-internal-format
+msgid "storage class specified for parameter %qs"
+msgstr ""
+
+#: cp/decl.c:9043
+#, gcc-internal-format
+msgid "nested function %qs declared %<extern%>"
+msgstr ""
+
+#: cp/decl.c:9047
+#, gcc-internal-format
+msgid "top-level declaration of %qs specifies %<auto%>"
+msgstr ""
+
+#: cp/decl.c:9053
+#, gcc-internal-format
+msgid "function-scope %qs implicitly auto and declared %<__thread%>"
+msgstr ""
+
+#: cp/decl.c:9060
+#, gcc-internal-format
+msgid "storage class specifiers invalid in friend function declarations"
+msgstr ""
+
+#: cp/decl.c:9154
+#, gcc-internal-format
+msgid "%qs declared as function returning a function"
+msgstr ""
+
+#: cp/decl.c:9159
+#, gcc-internal-format
+msgid "%qs declared as function returning an array"
+msgstr ""
+
+#: cp/decl.c:9185
+#, gcc-internal-format
+msgid "%qs function uses %<auto%> type specifier without trailing return type"
+msgstr ""
+
+#: cp/decl.c:9191
+#, gcc-internal-format
+msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
+msgstr ""
+
+#. Not using maybe_warn_cpp0x because this should
+#. always be an error.
+#: cp/decl.c:9202
+#, gcc-internal-format
+msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/decl.c:9205
+#, gcc-internal-format
+msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
+msgstr ""
+
+#: cp/decl.c:9238
+#, gcc-internal-format
+msgid "destructor cannot be static member function"
+msgstr ""
+
+#: cp/decl.c:9239
+#, gcc-internal-format
+msgid "constructor cannot be static member function"
+msgstr ""
+
+#: cp/decl.c:9243
+#, gcc-internal-format
+msgid "destructors may not be cv-qualified"
+msgstr ""
+
+#: cp/decl.c:9244
+#, gcc-internal-format
+msgid "constructors may not be cv-qualified"
+msgstr ""
+
+#: cp/decl.c:9261
+#, gcc-internal-format
+msgid "constructors cannot be declared virtual"
+msgstr ""
+
+#: cp/decl.c:9274
+#, gcc-internal-format
+msgid "can%'t initialize friend function %qs"
+msgstr ""
+
+#. Cannot be both friend and virtual.
+#: cp/decl.c:9278
+#, gcc-internal-format
+msgid "virtual functions cannot be friends"
+msgstr ""
+
+#: cp/decl.c:9282
+#, gcc-internal-format
+msgid "friend declaration not in class definition"
+msgstr ""
+
+#: cp/decl.c:9284
+#, gcc-internal-format
+msgid "can%'t define friend function %qs in a local class definition"
+msgstr ""
+
+#: cp/decl.c:9305
+#, gcc-internal-format
+msgid "destructors may not have parameters"
+msgstr ""
+
+#: cp/decl.c:9324
+#, gcc-internal-format
+msgid "cannot declare pointer to %q#T"
+msgstr ""
+
+#: cp/decl.c:9337 cp/decl.c:9344
+#, gcc-internal-format
+msgid "cannot declare reference to %q#T"
+msgstr ""
+
+#: cp/decl.c:9346
+#, gcc-internal-format
+msgid "cannot declare pointer to %q#T member"
+msgstr ""
+
+#: cp/decl.c:9369
+#, gcc-internal-format
+msgid "cannot declare reference to qualified function type %qT"
+msgstr ""
+
+#: cp/decl.c:9370
+#, gcc-internal-format
+msgid "cannot declare pointer to qualified function type %qT"
+msgstr ""
+
+#: cp/decl.c:9444
+#, gcc-internal-format
+msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
+msgstr ""
+
+#: cp/decl.c:9497
+#, gcc-internal-format
+msgid "both %<const%> and %<constexpr%> cannot be used here"
+msgstr ""
+
+#: cp/decl.c:9499
+#, gcc-internal-format
+msgid "both %<volatile%> and %<constexpr%> cannot be used here"
+msgstr ""
+
+#: cp/decl.c:9511
+#, gcc-internal-format
+msgid "template-id %qD used as a declarator"
+msgstr ""
+
+#: cp/decl.c:9562
+#, gcc-internal-format
+msgid "member functions are implicitly friends of their class"
+msgstr ""
+
+#: cp/decl.c:9567
+#, gcc-internal-format
+msgid "extra qualification %<%T::%> on member %qs"
+msgstr ""
+
+#: cp/decl.c:9597
+#, gcc-internal-format
+msgid "cannot define member function %<%T::%s%> within %<%T%>"
+msgstr ""
+
+#: cp/decl.c:9599
+#, gcc-internal-format
+msgid "cannot declare member function %<%T::%s%> within %<%T%>"
+msgstr ""
+
+#: cp/decl.c:9608
+#, gcc-internal-format
+msgid "cannot declare member %<%T::%s%> within %qT"
+msgstr ""
+
+#: cp/decl.c:9634
+#, gcc-internal-format
+msgid "non-parameter %qs cannot be a parameter pack"
+msgstr ""
+
+#: cp/decl.c:9644
+#, gcc-internal-format
+msgid "size of array %qs is too large"
+msgstr ""
+
+#: cp/decl.c:9655
+#, gcc-internal-format
+msgid "data member may not have variably modified type %qT"
+msgstr ""
+
+#: cp/decl.c:9657
+#, gcc-internal-format
+msgid "parameter may not have variably modified type %qT"
+msgstr ""
+
+#. [dcl.fct.spec] The explicit specifier shall only be used in
+#. declarations of constructors within a class definition.
+#: cp/decl.c:9665
+#, gcc-internal-format
+msgid "only declarations of constructors can be %<explicit%>"
+msgstr ""
+
+#: cp/decl.c:9673
+#, gcc-internal-format
+msgid "non-member %qs cannot be declared %<mutable%>"
+msgstr ""
+
+#: cp/decl.c:9678
+#, gcc-internal-format
+msgid "non-object member %qs cannot be declared %<mutable%>"
+msgstr ""
+
+#: cp/decl.c:9684
+#, gcc-internal-format
+msgid "function %qs cannot be declared %<mutable%>"
+msgstr ""
+
+#: cp/decl.c:9689
+#, gcc-internal-format
+msgid "static %qs cannot be declared %<mutable%>"
+msgstr ""
+
+#: cp/decl.c:9694
+#, gcc-internal-format
+msgid "const %qs cannot be declared %<mutable%>"
+msgstr ""
+
+#: cp/decl.c:9699
+#, gcc-internal-format
+msgid "reference %qs cannot be declared %<mutable%>"
+msgstr ""
+
+#: cp/decl.c:9734
+#, gcc-internal-format
+msgid "typedef declared %<auto%>"
+msgstr ""
+
+#: cp/decl.c:9744
+#, gcc-internal-format
+msgid "typedef name may not be a nested-name-specifier"
+msgstr ""
+
+#: cp/decl.c:9762
+#, gcc-internal-format
+msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
+msgstr ""
+
+#: cp/decl.c:9864
+#, gcc-internal-format
+msgid "qualified function types cannot be used to declare static member functions"
+msgstr ""
+
+#: cp/decl.c:9866
+#, gcc-internal-format
+msgid "qualified function types cannot be used to declare free functions"
+msgstr ""
+
+#: cp/decl.c:9893
+#, gcc-internal-format
+msgid "type qualifiers specified for friend class declaration"
+msgstr ""
+
+#: cp/decl.c:9898
+#, gcc-internal-format
+msgid "%<inline%> specified for friend class declaration"
+msgstr ""
+
+#: cp/decl.c:9906
+#, gcc-internal-format
+msgid "template parameters cannot be friends"
+msgstr ""
+
+#: cp/decl.c:9908
+#, gcc-internal-format
+msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
+msgstr ""
+
+#: cp/decl.c:9912
+#, gcc-internal-format
+msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
+msgstr ""
+
+#: cp/decl.c:9925
+#, gcc-internal-format
+msgid "trying to make class %qT a friend of global scope"
+msgstr ""
+
+#: cp/decl.c:9943
+#, gcc-internal-format
+msgid "invalid qualifiers on non-member function type"
+msgstr ""
+
+#: cp/decl.c:9953
+#, gcc-internal-format
+msgid "abstract declarator %qT used as declaration"
+msgstr ""
+
+#: cp/decl.c:9982
+#, gcc-internal-format
+msgid "cannot use %<::%> in parameter declaration"
+msgstr ""
+
+#: cp/decl.c:9986
+#, gcc-internal-format
+msgid "parameter declared %<auto%>"
+msgstr ""
+
+#: cp/decl.c:10028
+#, gcc-internal-format
+msgid "non-static data member declared %<auto%>"
+msgstr ""
+
+#. Something like struct S { int N::j; };
+#: cp/decl.c:10050
+#, gcc-internal-format
+msgid "invalid use of %<::%>"
+msgstr ""
+
+#: cp/decl.c:10072
+#, gcc-internal-format
+msgid "declaration of function %qD in invalid context"
+msgstr ""
+
+#: cp/decl.c:10081
+#, gcc-internal-format
+msgid "function %qD declared virtual inside a union"
+msgstr ""
+
+#: cp/decl.c:10090
+#, gcc-internal-format
+msgid "%qD cannot be declared virtual, since it is always static"
+msgstr ""
+
+#: cp/decl.c:10106
+#, gcc-internal-format
+msgid "expected qualified name in friend declaration for destructor %qD"
+msgstr ""
+
+#: cp/decl.c:10113
+#, gcc-internal-format
+msgid "declaration of %qD as member of %qT"
+msgstr ""
+
+#: cp/decl.c:10119
+#, gcc-internal-format
+msgid "a destructor cannot be %<constexpr%>"
+msgstr ""
+
+#: cp/decl.c:10125
+#, gcc-internal-format
+msgid "expected qualified name in friend declaration for constructor %qD"
+msgstr ""
+
+#: cp/decl.c:10171
+#, gcc-internal-format
+msgid "field %qD has incomplete type"
+msgstr ""
+
+#: cp/decl.c:10173
+#, gcc-internal-format
+msgid "name %qT has incomplete type"
+msgstr ""
+
+#: cp/decl.c:10182
+#, gcc-internal-format
+msgid " in instantiation of template %qT"
+msgstr ""
+
+#: cp/decl.c:10191
+#, gcc-internal-format
+msgid "%qE is neither function nor member function; cannot be declared friend"
+msgstr ""
+
+#: cp/decl.c:10243
+#, gcc-internal-format
+msgid "constexpr static data member %qD must have an initializer"
+msgstr ""
+
+#: cp/decl.c:10252
+#, gcc-internal-format
+msgid "non-static data member %qE declared %<constexpr%>"
+msgstr ""
+
+#: cp/decl.c:10302
+#, gcc-internal-format
+msgid "storage class %<auto%> invalid for function %qs"
+msgstr ""
+
+#: cp/decl.c:10304
+#, gcc-internal-format
+msgid "storage class %<register%> invalid for function %qs"
+msgstr ""
+
+#: cp/decl.c:10306
+#, gcc-internal-format
+msgid "storage class %<__thread%> invalid for function %qs"
+msgstr ""
+
+#: cp/decl.c:10309
+#, gcc-internal-format
+msgid "virt-specifiers in %qs not allowed outside a class definition"
+msgstr ""
+
+#: cp/decl.c:10320
+#, gcc-internal-format
+msgid "%<static%> specified invalid for function %qs declared out of global scope"
+msgstr ""
+
+#: cp/decl.c:10324
+#, gcc-internal-format
+msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
+msgstr ""
+
+#: cp/decl.c:10332
+#, gcc-internal-format
+msgid "virtual non-class function %qs"
+msgstr ""
+
+#: cp/decl.c:10339
+#, gcc-internal-format
+msgid "%qs defined in a non-class scope"
+msgstr ""
+
+#: cp/decl.c:10340
+#, gcc-internal-format
+msgid "%qs declared in a non-class scope"
+msgstr ""
+
+#: cp/decl.c:10368
+#, gcc-internal-format
+msgid "cannot declare member function %qD to have static linkage"
+msgstr ""
+
+#. FIXME need arm citation
+#: cp/decl.c:10375
+#, gcc-internal-format
+msgid "cannot declare static function inside another function"
+msgstr ""
+
+#: cp/decl.c:10405
+#, gcc-internal-format
+msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
+msgstr ""
+
+#: cp/decl.c:10412
+#, gcc-internal-format
+msgid "static member %qD declared %<register%>"
+msgstr ""
+
+#: cp/decl.c:10418
+#, gcc-internal-format
+msgid "cannot explicitly declare member %q#D to have extern linkage"
+msgstr ""
+
+#: cp/decl.c:10425
+#, gcc-internal-format
+msgid "declaration of constexpr variable %qD is not a definition"
+msgstr ""
+
+#: cp/decl.c:10438
+#, gcc-internal-format
+msgid "%qs initialized and declared %<extern%>"
+msgstr ""
+
+#: cp/decl.c:10442
+#, gcc-internal-format
+msgid "%qs has both %<extern%> and initializer"
+msgstr ""
+
+#: cp/decl.c:10570
+#, gcc-internal-format
+msgid "default argument for %q#D has type %qT"
+msgstr ""
+
+#: cp/decl.c:10573
+#, gcc-internal-format
+msgid "default argument for parameter of type %qT has type %qT"
+msgstr ""
+
+#: cp/decl.c:10601
+#, gcc-internal-format
+msgid "default argument %qE uses %qD"
+msgstr ""
+
+#: cp/decl.c:10603
+#, gcc-internal-format
+msgid "default argument %qE uses local variable %qD"
+msgstr ""
+
+#: cp/decl.c:10691
+#, gcc-internal-format
+msgid "parameter %qD has Java class type"
+msgstr ""
+
+#: cp/decl.c:10719
+#, gcc-internal-format
+msgid "parameter %qD invalidly declared method type"
+msgstr ""
+
+#: cp/decl.c:10744
+#, gcc-internal-format
+msgid "parameter %qD includes pointer to array of unknown bound %qT"
+msgstr ""
+
+#: cp/decl.c:10746
+#, gcc-internal-format
+msgid "parameter %qD includes reference to array of unknown bound %qT"
+msgstr ""
+
+#. [class.copy]
+#.
+#. A declaration of a constructor for a class X is ill-formed if
+#. its first parameter is of type (optionally cv-qualified) X
+#. and either there are no other parameters or else all other
+#. parameters have default arguments.
+#.
+#. We *don't* complain about member template instantiations that
+#. have this form, though; they can occur as we try to decide
+#. what constructor to use during overload resolution. Since
+#. overload resolution will never prefer such a constructor to
+#. the non-template copy constructor (which is either explicitly
+#. or implicitly defined), there's no need to worry about their
+#. existence. Theoretically, they should never even be
+#. instantiated, but that's hard to forestall.
+#: cp/decl.c:10987
+#, gcc-internal-format
+msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
+msgstr ""
+
+#: cp/decl.c:11109
+#, gcc-internal-format
+msgid "%qD may not be declared within a namespace"
+msgstr ""
+
+#: cp/decl.c:11114
+#, gcc-internal-format
+msgid "%qD may not be declared as static"
+msgstr ""
+
+#: cp/decl.c:11140
+#, gcc-internal-format
+msgid "%qD must be a nonstatic member function"
+msgstr ""
+
+#: cp/decl.c:11149
+#, gcc-internal-format
+msgid "%qD must be either a non-static member function or a non-member function"
+msgstr ""
+
+#: cp/decl.c:11171
+#, gcc-internal-format
+msgid "%qD must have an argument of class or enumerated type"
+msgstr ""
+
+#: cp/decl.c:11200
+#, gcc-internal-format
+msgid "conversion to a reference to void will never use a type conversion operator"
+msgstr ""
+
+#: cp/decl.c:11202
+#, gcc-internal-format
+msgid "conversion to void will never use a type conversion operator"
+msgstr ""
+
+#: cp/decl.c:11209
+#, gcc-internal-format
+msgid "conversion to a reference to the same type will never use a type conversion operator"
+msgstr ""
+
+#: cp/decl.c:11211
+#, gcc-internal-format
+msgid "conversion to the same type will never use a type conversion operator"
+msgstr ""
+
+#: cp/decl.c:11219
+#, gcc-internal-format
+msgid "conversion to a reference to a base class will never use a type conversion operator"
+msgstr ""
+
+#: cp/decl.c:11221
+#, gcc-internal-format
+msgid "conversion to a base class will never use a type conversion operator"
+msgstr ""
+
+#. 13.4.0.3
+#: cp/decl.c:11230
+#, gcc-internal-format
+msgid "ISO C++ prohibits overloading operator ?:"
+msgstr ""
+
+#: cp/decl.c:11235
+#, gcc-internal-format
+msgid "%qD must not have variable number of arguments"
+msgstr ""
+
+#: cp/decl.c:11286
+#, gcc-internal-format
+msgid "postfix %qD must take %<int%> as its argument"
+msgstr ""
+
+#: cp/decl.c:11289
+#, gcc-internal-format
+msgid "postfix %qD must take %<int%> as its second argument"
+msgstr ""
+
+#: cp/decl.c:11297
+#, gcc-internal-format
+msgid "%qD must take either zero or one argument"
+msgstr ""
+
+#: cp/decl.c:11299
+#, gcc-internal-format
+msgid "%qD must take either one or two arguments"
+msgstr ""
+
+#: cp/decl.c:11321
+#, gcc-internal-format
+msgid "prefix %qD should return %qT"
+msgstr ""
+
+#: cp/decl.c:11327
+#, gcc-internal-format
+msgid "postfix %qD should return %qT"
+msgstr ""
+
+#: cp/decl.c:11336
+#, gcc-internal-format
+msgid "%qD must take %<void%>"
+msgstr ""
+
+#: cp/decl.c:11338 cp/decl.c:11347
+#, gcc-internal-format
+msgid "%qD must take exactly one argument"
+msgstr ""
+
+#: cp/decl.c:11349
+#, gcc-internal-format
+msgid "%qD must take exactly two arguments"
+msgstr ""
+
+#: cp/decl.c:11358
+#, gcc-internal-format
+msgid "user-defined %qD always evaluates both arguments"
+msgstr ""
+
+#: cp/decl.c:11372
+#, gcc-internal-format
+msgid "%qD should return by value"
+msgstr ""
+
+#: cp/decl.c:11383 cp/decl.c:11388
+#, gcc-internal-format
+msgid "%qD cannot have default arguments"
+msgstr ""
+
+#: cp/decl.c:11449
+#, gcc-internal-format
+msgid "using template type parameter %qT after %qs"
+msgstr ""
+
+#: cp/decl.c:11471
+#, gcc-internal-format
+msgid "using alias template specialization %qT after %qs"
+msgstr ""
+
+#: cp/decl.c:11474
+#, gcc-internal-format
+msgid "using typedef-name %qD after %qs"
+msgstr ""
+
+#: cp/decl.c:11476
+#, gcc-internal-format
+msgid "%qD has a previous declaration here"
+msgstr ""
+
+#: cp/decl.c:11484
+#, gcc-internal-format
+msgid "%qT referred to as %qs"
+msgstr ""
+
+#: cp/decl.c:11485 cp/decl.c:11492
+#, gcc-internal-format
+msgid "%q+T has a previous declaration here"
+msgstr ""
+
+#: cp/decl.c:11491
+#, gcc-internal-format
+msgid "%qT referred to as enum"
+msgstr ""
+
+#. If a class template appears as elaborated type specifier
+#. without a template header such as:
+#.
+#. template <class T> class C {};
+#. void f(class C); // No template header here
+#.
+#. then the required template argument is missing.
+#: cp/decl.c:11506
+#, gcc-internal-format
+msgid "template argument required for %<%s %T%>"
+msgstr ""
+
+#: cp/decl.c:11554 cp/name-lookup.c:3052
+#, gcc-internal-format
+msgid "%qD has the same name as the class in which it is declared"
+msgstr ""
+
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
+#, gcc-internal-format
+msgid "reference to %qD is ambiguous"
+msgstr ""
+
+#: cp/decl.c:11696
+#, gcc-internal-format
+msgid "use of enum %q#D without previous declaration"
+msgstr ""
+
+#: cp/decl.c:11717
+#, gcc-internal-format
+msgid "redeclaration of %qT as a non-template"
+msgstr ""
+
+#: cp/decl.c:11718
+#, gcc-internal-format
+msgid "previous declaration %q+D"
+msgstr ""
+
+#: cp/decl.c:11852
+#, gcc-internal-format
+msgid "derived union %qT invalid"
+msgstr ""
+
+#: cp/decl.c:11861
+#, gcc-internal-format
+msgid "Java class %qT cannot have multiple bases"
+msgstr ""
+
+#: cp/decl.c:11872
+#, gcc-internal-format
+msgid "Java class %qT cannot have virtual bases"
+msgstr ""
+
+#: cp/decl.c:11892
+#, gcc-internal-format
+msgid "base type %qT fails to be a struct or class type"
+msgstr ""
+
+#: cp/decl.c:11925
+#, gcc-internal-format
+msgid "recursive type %qT undefined"
+msgstr ""
+
+#: cp/decl.c:11927
+#, gcc-internal-format
+msgid "duplicate base type %qT invalid"
+msgstr ""
+
+#: cp/decl.c:12051
+#, gcc-internal-format
+msgid "scoped/unscoped mismatch in enum %q#T"
+msgstr ""
+
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
+#, gcc-internal-format
+msgid "previous definition here"
+msgstr ""
+
+#: cp/decl.c:12059
+#, gcc-internal-format
+msgid "underlying type mismatch in enum %q#T"
+msgstr ""
+
+#: cp/decl.c:12071
+#, gcc-internal-format
+msgid "different underlying type in enum %q#T"
+msgstr ""
+
+#: cp/decl.c:12138
+#, gcc-internal-format
+msgid "underlying type %<%T%> of %<%T%> must be an integral type"
+msgstr ""
+
+#. DR 377
+#.
+#. IF no integral type can represent all the enumerator values, the
+#. enumeration is ill-formed.
+#: cp/decl.c:12272
+#, gcc-internal-format
+msgid "no integral type can represent all of the enumerator values for %qT"
+msgstr ""
+
+#: cp/decl.c:12407
+#, gcc-internal-format
+msgid "enumerator value for %qD is not an integer constant"
+msgstr ""
+
+#: cp/decl.c:12457
+#, gcc-internal-format
+msgid "incremented enumerator value is too large for %<unsigned long%>"
+msgstr ""
+
+#: cp/decl.c:12469
+#, gcc-internal-format
+msgid "overflow in enumeration values at %qD"
+msgstr ""
+
+#: cp/decl.c:12489
+#, gcc-internal-format
+msgid "enumerator value %E is too large for underlying type %<%T%>"
+msgstr ""
+
+#: cp/decl.c:12586
+#, gcc-internal-format
+msgid "return type %q#T is incomplete"
+msgstr ""
+
+#: cp/decl.c:12588
+#, gcc-internal-format
+msgid "return type has Java class type %q#T"
+msgstr ""
+
+#: cp/decl.c:12712 cp/typeck.c:7909
+#, gcc-internal-format
+msgid "%<operator=%> should return a reference to %<*this%>"
+msgstr ""
+
+#: cp/decl.c:12807
+#, gcc-internal-format
+msgid "no previous declaration for %q+D"
+msgstr ""
+
+#: cp/decl.c:13022
+#, gcc-internal-format
+msgid "invalid function declaration"
+msgstr ""
+
+#: cp/decl.c:13106
+#, gcc-internal-format
+msgid "parameter %qD declared void"
+msgstr ""
+
+#: cp/decl.c:13559
+#, gcc-internal-format
+msgid "parameter %q+D set but not used"
+msgstr ""
+
+#: cp/decl.c:13654
+#, gcc-internal-format
+msgid "invalid member function declaration"
+msgstr ""
+
+#: cp/decl.c:13668
+#, gcc-internal-format
+msgid "%qD is already defined in class %qT"
+msgstr ""
+
+#: cp/decl2.c:318
+#, gcc-internal-format
+msgid "name missing for member function"
+msgstr ""
+
+#: cp/decl2.c:389 cp/decl2.c:403
+#, gcc-internal-format
+msgid "ambiguous conversion for array subscript"
+msgstr ""
+
+#: cp/decl2.c:397
+#, gcc-internal-format
+msgid "invalid types %<%T[%T]%> for array subscript"
+msgstr ""
+
+#: cp/decl2.c:441
+#, gcc-internal-format
+msgid "deleting array %q#D"
+msgstr ""
+
+#: cp/decl2.c:447
+#, gcc-internal-format
+msgid "type %q#T argument given to %<delete%>, expected pointer"
+msgstr ""
+
+#: cp/decl2.c:459
+#, gcc-internal-format
+msgid "cannot delete a function. Only pointer-to-objects are valid arguments to %<delete%>"
+msgstr ""
+
+#: cp/decl2.c:467
+#, gcc-internal-format
+msgid "deleting %qT is undefined"
+msgstr ""
+
+#: cp/decl2.c:512 cp/pt.c:4891
+#, gcc-internal-format
+msgid "template declaration of %q#D"
+msgstr ""
+
+#: cp/decl2.c:564
+#, gcc-internal-format
+msgid "Java method %qD has non-Java return type %qT"
+msgstr ""
+
+#: cp/decl2.c:581
+#, gcc-internal-format
+msgid "Java method %qD has non-Java parameter type %qT"
+msgstr ""
+
+#: cp/decl2.c:630
+#, gcc-internal-format
+msgid "template parameter lists provided don%'t match the template parameters of %qD"
+msgstr ""
+
+#: cp/decl2.c:698
+#, gcc-internal-format
+msgid "prototype for %q#D does not match any in class %qT"
+msgstr ""
+
+#: cp/decl2.c:774
+#, gcc-internal-format
+msgid "local class %q#T shall not have static data member %q#D"
+msgstr ""
+
+#: cp/decl2.c:835
+#, gcc-internal-format
+msgid "explicit template argument list not allowed"
+msgstr ""
+
+#: cp/decl2.c:841
+#, gcc-internal-format
+msgid "member %qD conflicts with virtual function table field name"
+msgstr ""
+
+#: cp/decl2.c:881
+#, gcc-internal-format
+msgid "%qD is already defined in %qT"
+msgstr ""
+
+#: cp/decl2.c:910 cp/decl2.c:918
+#, gcc-internal-format
+msgid "invalid initializer for member function %qD"
+msgstr ""
+
+#: cp/decl2.c:924
+#, gcc-internal-format
+msgid "initializer specified for static member function %qD"
+msgstr ""
+
+#: cp/decl2.c:947
+#, gcc-internal-format
+msgid "field initializer is not constant"
+msgstr ""
+
+#: cp/decl2.c:980
+#, gcc-internal-format
+msgid "%<asm%> specifiers are not permitted on non-static data members"
+msgstr ""
+
+#: cp/decl2.c:1031
+#, gcc-internal-format
+msgid "bit-field %qD with non-integral type"
+msgstr ""
+
+#: cp/decl2.c:1037
+#, gcc-internal-format
+msgid "cannot declare %qD to be a bit-field type"
+msgstr ""
+
+#: cp/decl2.c:1047
+#, gcc-internal-format
+msgid "cannot declare bit-field %qD with function type"
+msgstr ""
+
+#: cp/decl2.c:1054
+#, gcc-internal-format
+msgid "%qD is already defined in the class %qT"
+msgstr ""
+
+#: cp/decl2.c:1061
+#, gcc-internal-format
+msgid "static member %qD cannot be a bit-field"
+msgstr ""
+
+#: cp/decl2.c:1071
+#, gcc-internal-format
+msgid "width of bit-field %qD has non-integral type %qT"
+msgstr ""
+
+#: cp/decl2.c:1344
+#, gcc-internal-format
+msgid "anonymous struct not inside named type"
+msgstr ""
+
+#: cp/decl2.c:1432
+#, gcc-internal-format
+msgid "namespace-scope anonymous aggregates must be static"
+msgstr ""
+
+#: cp/decl2.c:1441
+#, gcc-internal-format
+msgid "anonymous union with no members"
+msgstr ""
+
+#: cp/decl2.c:1479
+#, gcc-internal-format
+msgid "%<operator new%> must return type %qT"
+msgstr ""
+
+#. [basic.stc.dynamic.allocation]
+#.
+#. The first parameter shall not have an associated default
+#. argument.
+#: cp/decl2.c:1490
+#, gcc-internal-format
+msgid "the first parameter of %<operator new%> cannot have a default argument"
+msgstr ""
+
+#: cp/decl2.c:1506
+#, gcc-internal-format
+msgid "%<operator new%> takes type %<size_t%> (%qT) as first parameter"
+msgstr ""
+
+#: cp/decl2.c:1535
+#, gcc-internal-format
+msgid "%<operator delete%> must return type %qT"
+msgstr ""
+
+#: cp/decl2.c:1544
+#, gcc-internal-format
+msgid "%<operator delete%> takes type %qT as first parameter"
+msgstr ""
+
+#: cp/decl2.c:2328
+#, gcc-internal-format
+msgid "%qT has a field %qD whose type uses the anonymous namespace"
+msgstr ""
+
+#: cp/decl2.c:2335
+#, gcc-internal-format
+msgid "%qT declared with greater visibility than the type of its field %qD"
+msgstr ""
+
+#: cp/decl2.c:2348
+#, gcc-internal-format
+msgid "%qT has a base %qT whose type uses the anonymous namespace"
+msgstr ""
+
+#: cp/decl2.c:2354
+#, gcc-internal-format
+msgid "%qT declared with greater visibility than its base %qT"
+msgstr ""
+
+#: cp/decl2.c:3670
+#, gcc-internal-format
+msgid "%q+#D, declared using anonymous type, is used but never defined"
+msgstr ""
+
+#: cp/decl2.c:3677
+#, gcc-internal-format
+msgid "%q+#D, declared using local type %qT, is used but never defined"
+msgstr ""
+
+#: cp/decl2.c:4006
+#, gcc-internal-format
+msgid "inline function %q+D used but never defined"
+msgstr ""
+
+#: cp/decl2.c:4193
+#, gcc-internal-format
+msgid "default argument missing for parameter %P of %q+#D"
+msgstr ""
+
+#. We mark a lambda conversion op as deleted if we can't
+#. generate it properly; see maybe_add_lambda_conv_op.
+#: cp/decl2.c:4250
+#, gcc-internal-format
+msgid "converting lambda which uses %<...%> to function pointer"
+msgstr ""
+
+#: cp/decl2.c:4255
+#, gcc-internal-format
+msgid "use of deleted function %qD"
+msgstr ""
+
+#: cp/error.c:3263
+#, gcc-internal-format
+msgid "extended initializer lists only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3268
+#, gcc-internal-format
+msgid "explicit conversion operators only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3273
+#, gcc-internal-format
+msgid "variadic templates only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3278
+#, gcc-internal-format
+msgid "lambda expressions only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3283
+#, gcc-internal-format
+msgid "C++0x auto only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3287
+#, gcc-internal-format
+msgid "scoped enums only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3291
+#, gcc-internal-format
+msgid "defaulted and deleted functions only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3296
+#, gcc-internal-format
+msgid "inline namespaces only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3301
+#, gcc-internal-format
+msgid "override controls (override/final) only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3306
+#, gcc-internal-format
+msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3311
+#, gcc-internal-format
+msgid "user-defined literals only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3316
+#, gcc-internal-format
+msgid "delegating constructors only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/error.c:3363
+#, gcc-internal-format
+msgid "incomplete type %qT used in nested name specifier"
+msgstr ""
+
+#: cp/error.c:3367
+#, gcc-internal-format
+msgid "reference to %<%T::%D%> is ambiguous"
+msgstr ""
+
+#: cp/error.c:3372 cp/typeck.c:2186
+#, gcc-internal-format
+msgid "%qD is not a member of %qT"
+msgstr ""
+
+#: cp/error.c:3376
+#, gcc-internal-format
+msgid "%qD is not a member of %qD"
+msgstr ""
+
+#: cp/error.c:3381
+#, gcc-internal-format
+msgid "%<::%D%> has not been declared"
+msgstr ""
+
+#. Can't throw a reference.
+#: cp/except.c:294
+#, gcc-internal-format
+msgid "type %qT is disallowed in Java %<throw%> or %<catch%>"
+msgstr ""
+
+#: cp/except.c:305
+#, gcc-internal-format
+msgid "call to Java %<catch%> or %<throw%> with %<jthrowable%> undefined"
+msgstr ""
+
+#. Thrown object must be a Throwable.
+#: cp/except.c:312
+#, gcc-internal-format
+msgid "type %qT is not derived from %<java::lang::Throwable%>"
+msgstr ""
+
+#: cp/except.c:373
+#, gcc-internal-format
+msgid "mixing C++ and Java catches in a single translation unit"
+msgstr ""
+
+#: cp/except.c:469 java/except.c:583
+#, gcc-internal-format
+msgid "exception handling disabled, use -fexceptions to enable"
+msgstr ""
+
+#: cp/except.c:719
+#, gcc-internal-format
+msgid "throwing NULL, which has integral, not pointer type"
+msgstr ""
+
+#: cp/except.c:743 cp/init.c:2308
+#, gcc-internal-format
+msgid "%qD should never be overloaded"
+msgstr ""
+
+#: cp/except.c:847
+#, gcc-internal-format
+msgid " in thrown expression"
+msgstr ""
+
+#: cp/except.c:971
+#, gcc-internal-format
+msgid "expression %qE of abstract class type %qT cannot be used in throw-expression"
+msgstr ""
+
+#: cp/except.c:1057
+#, gcc-internal-format
+msgid "exception of type %qT will be caught"
+msgstr ""
+
+#: cp/except.c:1060
+#, gcc-internal-format
+msgid " by earlier handler for %qT"
+msgstr ""
+
+#: cp/except.c:1089
+#, gcc-internal-format
+msgid "%<...%> handler must be the last handler for its try block"
+msgstr ""
+
+#: cp/except.c:1172
+#, gcc-internal-format
+msgid "noexcept-expression evaluates to %<false%> because of a call to %qD"
+msgstr ""
+
+#: cp/except.c:1174
+#, gcc-internal-format
+msgid "but %q+D does not throw; perhaps it should be declared %<noexcept%>"
+msgstr ""
+
+#: cp/friend.c:153
+#, gcc-internal-format
+msgid "%qD is already a friend of class %qT"
+msgstr ""
+
+#: cp/friend.c:236
+#, gcc-internal-format
+msgid "invalid type %qT declared %<friend%>"
+msgstr ""
+
+#. [temp.friend]
+#. Friend declarations shall not declare partial
+#. specializations.
+#. template <class U> friend class T::X<U>;
+#. [temp.friend]
+#. Friend declarations shall not declare partial
+#. specializations.
+#: cp/friend.c:254 cp/friend.c:284
+#, gcc-internal-format
+msgid "partial specialization %qT declared %<friend%>"
+msgstr ""
+
+#: cp/friend.c:262
+#, gcc-internal-format
+msgid "class %qT is implicitly friends with itself"
+msgstr ""
+
+#: cp/friend.c:320
+#, gcc-internal-format
+msgid "%qT is not a member of %qT"
+msgstr ""
+
+#: cp/friend.c:325
+#, gcc-internal-format
+msgid "%qT is not a member class template of %qT"
+msgstr ""
+
+#: cp/friend.c:333
+#, gcc-internal-format
+msgid "%qT is not a nested class of %qT"
+msgstr ""
+
+#. template <class T> friend class T;
+#: cp/friend.c:346
+#, gcc-internal-format
+msgid "template parameter type %qT declared %<friend%>"
+msgstr ""
+
+#. template <class T> friend class A; where A is not a template
+#: cp/friend.c:352
+#, gcc-internal-format
+msgid "%q#T is not a template"
+msgstr ""
+
+#: cp/friend.c:374
+#, gcc-internal-format
+msgid "%qD is already a friend of %qT"
+msgstr ""
+
+#: cp/friend.c:383
+#, gcc-internal-format
+msgid "%qT is already a friend of %qT"
+msgstr ""
+
+#: cp/friend.c:507
+#, gcc-internal-format
+msgid "member %qD declared as friend before type %qT defined"
+msgstr ""
+
+#: cp/friend.c:556
+#, gcc-internal-format
+msgid "friend declaration %qD in local class without prior declaration"
+msgstr ""
+
+#: cp/friend.c:579
+#, gcc-internal-format
+msgid "friend declaration %q#D declares a non-template function"
+msgstr ""
+
+#: cp/friend.c:583
+#, gcc-internal-format
+msgid "(if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) "
+msgstr ""
+
+#: cp/init.c:383
+#, gcc-internal-format
+msgid "value-initialization of incomplete type %qT"
+msgstr ""
+
+#: cp/init.c:442
+#, gcc-internal-format
+msgid "cannot value-initialize array of unknown bound %qT"
+msgstr ""
+
+#: cp/init.c:482
+#, gcc-internal-format
+msgid "value-initialization of function type %qT"
+msgstr ""
+
+#: cp/init.c:488
+#, gcc-internal-format
+msgid "value-initialization of reference type %qT"
+msgstr ""
+
+#: cp/init.c:559
+#, gcc-internal-format
+msgid "%qD should be initialized in the member initialization list"
+msgstr ""
+
+#: cp/init.c:577
+#, gcc-internal-format
+msgid "%qD is initialized with itself"
+msgstr ""
+
+#: cp/init.c:671
+#, gcc-internal-format
+msgid "invalid initializer for array member %q#D"
+msgstr ""
+
+#: cp/init.c:684 cp/init.c:702
+#, gcc-internal-format
+msgid "uninitialized member %qD with %<const%> type %qT"
+msgstr ""
+
+#: cp/init.c:698
+#, gcc-internal-format
+msgid "uninitialized reference member %qD"
+msgstr ""
+
+#: cp/init.c:858
+#, gcc-internal-format
+msgid "%q+D will be initialized after"
+msgstr ""
+
+#: cp/init.c:861
+#, gcc-internal-format
+msgid "base %qT will be initialized after"
+msgstr ""
+
+#: cp/init.c:864
+#, gcc-internal-format
+msgid " %q+#D"
+msgstr ""
+
+#: cp/init.c:866
+#, gcc-internal-format
+msgid " base %qT"
+msgstr ""
+
+#: cp/init.c:868
+#, gcc-internal-format
+msgid " when initialized here"
+msgstr ""
+
+#: cp/init.c:885
+#, gcc-internal-format
+msgid "multiple initializations given for %qD"
+msgstr ""
+
+#: cp/init.c:889
+#, gcc-internal-format
+msgid "multiple initializations given for base %qT"
+msgstr ""
+
+#: cp/init.c:973
+#, gcc-internal-format
+msgid "initializations for multiple members of %qT"
+msgstr ""
+
+#: cp/init.c:1061
+#, gcc-internal-format
+msgid "base class %q#T should be explicitly initialized in the copy constructor"
+msgstr ""
+
+#: cp/init.c:1283 cp/init.c:1302
+#, gcc-internal-format
+msgid "class %qT does not have any field named %qD"
+msgstr ""
+
+#: cp/init.c:1289
+#, gcc-internal-format
+msgid "%q#D is a static data member; it can only be initialized at its definition"
+msgstr ""
+
+#: cp/init.c:1296
+#, gcc-internal-format
+msgid "%q#D is not a non-static data member of %qT"
+msgstr ""
+
+#: cp/init.c:1335
+#, gcc-internal-format
+msgid "unnamed initializer for %qT, which has no base classes"
+msgstr ""
+
+#: cp/init.c:1343
+#, gcc-internal-format
+msgid "unnamed initializer for %qT, which uses multiple inheritance"
+msgstr ""
+
+#: cp/init.c:1390
+#, gcc-internal-format
+msgid "%qD is both a direct base and an indirect virtual base"
+msgstr ""
+
+#: cp/init.c:1398
+#, gcc-internal-format
+msgid "type %qT is not a direct or virtual base of %qT"
+msgstr ""
+
+#: cp/init.c:1401
+#, gcc-internal-format
+msgid "type %qT is not a direct base of %qT"
+msgstr ""
+
+#: cp/init.c:1486
+#, gcc-internal-format
+msgid "bad array initializer"
+msgstr ""
+
+#: cp/init.c:1778 cp/semantics.c:2780
+#, gcc-internal-format
+msgid "%qT is not a class type"
+msgstr ""
+
+#: cp/init.c:1832
+#, gcc-internal-format
+msgid "incomplete type %qT does not have member %qD"
+msgstr ""
+
+#: cp/init.c:1845
+#, gcc-internal-format
+msgid "invalid pointer to bit-field %qD"
+msgstr ""
+
+#: cp/init.c:1922
+#, gcc-internal-format
+msgid "invalid use of non-static member function %qD"
+msgstr ""
+
+#: cp/init.c:1928
+#, gcc-internal-format
+msgid "invalid use of non-static data member %qD"
+msgstr ""
+
+#: cp/init.c:2110
+#, gcc-internal-format
+msgid "uninitialized reference member in %q#T using %<new%> without new-initializer"
+msgstr ""
+
+#: cp/init.c:2113
+#, gcc-internal-format
+msgid "uninitialized reference member in %q#T"
+msgstr ""
+
+#: cp/init.c:2125
+#, gcc-internal-format
+msgid "uninitialized const member in %q#T using %<new%> without new-initializer"
+msgstr ""
+
+#: cp/init.c:2128
+#, gcc-internal-format
+msgid "uninitialized const member in %q#T"
+msgstr ""
+
+#: cp/init.c:2225
+#, gcc-internal-format
+msgid "invalid type %<void%> for new"
+msgstr ""
+
+#: cp/init.c:2268
+#, gcc-internal-format
+msgid "uninitialized const in %<new%> of %q#T"
+msgstr ""
+
+#: cp/init.c:2302
+#, gcc-internal-format
+msgid "call to Java constructor with %qs undefined"
+msgstr ""
+
+#: cp/init.c:2318
+#, gcc-internal-format
+msgid "Java class %q#T object allocated using placement new"
+msgstr ""
+
+#: cp/init.c:2348
+#, gcc-internal-format
+msgid "no suitable %qD found in class %qT"
+msgstr ""
+
+#: cp/init.c:2355 cp/search.c:1107
+#, gcc-internal-format
+msgid "request for member %qD is ambiguous"
+msgstr ""
+
+#: cp/init.c:2563
+#, gcc-internal-format
+msgid "non-constant array size in new, unable to verify length of initializer-list"
+msgstr ""
+
+#: cp/init.c:2574
+#, gcc-internal-format
+msgid "parenthesized initializer in array new"
+msgstr ""
+
+#: cp/init.c:2808
+#, gcc-internal-format
+msgid "size in array new must have integral type"
+msgstr ""
+
+#: cp/init.c:2822
+#, gcc-internal-format
+msgid "new cannot be applied to a reference type"
+msgstr ""
+
+#: cp/init.c:2831
+#, gcc-internal-format
+msgid "new cannot be applied to a function type"
+msgstr ""
+
+#: cp/init.c:2875
+#, gcc-internal-format
+msgid "call to Java constructor, while %<jclass%> undefined"
+msgstr ""
+
+#: cp/init.c:2893
+#, gcc-internal-format
+msgid "can%'t find %<class$%> in %qT"
+msgstr ""
+
+#: cp/init.c:3382
+#, gcc-internal-format
+msgid "initializer ends prematurely"
+msgstr ""
+
+#: cp/init.c:3446
+#, gcc-internal-format
+msgid "cannot initialize multi-dimensional array with initializer"
+msgstr ""
+
+#: cp/init.c:3620
+#, gcc-internal-format
+msgid "possible problem detected in invocation of delete operator:"
+msgstr ""
+
+#: cp/init.c:3624
+#, gcc-internal-format
+msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
+msgstr ""
+
+#: cp/init.c:3640
+#, gcc-internal-format
+msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
+msgstr ""
+
+#: cp/init.c:3645
+#, gcc-internal-format
+msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
+msgstr ""
+
+#: cp/init.c:3667
+#, gcc-internal-format
+msgid "unknown array size in delete"
+msgstr ""
+
+#: cp/init.c:3936
+#, gcc-internal-format
+msgid "type to vector delete is neither pointer or array type"
+msgstr ""
+
+#: cp/lex.c:322
+#, gcc-internal-format, gfc-internal-format
+msgid "junk at end of #pragma %s"
+msgstr ""
+
+#: cp/lex.c:329
+#, gcc-internal-format, gfc-internal-format
+msgid "invalid #pragma %s"
+msgstr ""
+
+#: cp/lex.c:337
+#, gcc-internal-format
+msgid "#pragma vtable no longer supported"
+msgstr ""
+
+#: cp/lex.c:409
+#, gcc-internal-format
+msgid "#pragma implementation for %qs appears after file is included"
+msgstr ""
+
+#: cp/lex.c:433
+#, gcc-internal-format
+msgid "junk at end of #pragma GCC java_exceptions"
+msgstr ""
+
+#: cp/lex.c:448
+#, gcc-internal-format
+msgid "%qD not defined"
+msgstr ""
+
+#: cp/lex.c:454
+#, gcc-internal-format
+msgid "%qD was not declared in this scope"
+msgstr ""
+
+#. In a template, it is invalid to write "f()" or "f(3)" if no
+#. declaration of "f" is available. Historically, G++ and most
+#. other compilers accepted that usage since they deferred all name
+#. lookup until instantiation time rather than doing unqualified
+#. name lookup at template definition time; explain to the user what
+#. is going wrong.
+#.
+#. Note that we have the exact wording of the following message in
+#. the manual (trouble.texi, node "Name lookup"), so they need to
+#. be kept in synch.
+#: cp/lex.c:494
+#, gcc-internal-format
+msgid "there are no arguments to %qD that depend on a template parameter, so a declaration of %qD must be available"
+msgstr ""
+
+#: cp/lex.c:503
+#, gcc-internal-format
+msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
+msgstr ""
+
+#: cp/mangle.c:2029
+#, gcc-internal-format
+msgid "mangling typeof, use decltype instead"
+msgstr ""
+
+#: cp/mangle.c:2033
+#, gcc-internal-format
+msgid "mangling __underlying_type"
+msgstr ""
+
+#: cp/mangle.c:2257
+#, gcc-internal-format
+msgid "mangling unknown fixed point type"
+msgstr ""
+
+#: cp/mangle.c:2816
+#, gcc-internal-format, gfc-internal-format
+msgid "mangling %C"
+msgstr ""
+
+#: cp/mangle.c:2891
+#, gcc-internal-format
+msgid "omitted middle operand to %<?:%> operand cannot be mangled"
+msgstr ""
+
+#: cp/mangle.c:2955
+#, gcc-internal-format
+msgid "string literal in function template signature"
+msgstr ""
+
+#: cp/mangle.c:3244
+#, gcc-internal-format
+msgid "the mangled name of %qD will change in a future version of GCC"
+msgstr ""
+
+#: cp/mangle.c:3388
+#, gcc-internal-format
+msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
+msgstr ""
+
+#: cp/method.c:405
+#, gcc-internal-format
+msgid "generic thunk code fails for method %q#D which uses %<...%>"
+msgstr ""
+
+#: cp/method.c:664 cp/method.c:1003
+#, gcc-internal-format
+msgid "non-static const member %q#D, can%'t use default assignment operator"
+msgstr ""
+
+#: cp/method.c:670 cp/method.c:1009
+#, gcc-internal-format
+msgid "non-static reference member %q#D, can%'t use default assignment operator"
+msgstr ""
+
+#: cp/method.c:786
+#, gcc-internal-format
+msgid "synthesized method %qD first required here "
+msgstr ""
+
+#: cp/method.c:948
+#, gcc-internal-format
+msgid "union member %q+D with non-trivial %qD"
+msgstr ""
+
+#: cp/method.c:964
+#, gcc-internal-format
+msgid "defaulted constructor calls non-constexpr %q+D"
+msgstr ""
+
+#: cp/method.c:1025
+#, gcc-internal-format
+msgid "initializer for %q+#D is invalid"
+msgstr ""
+
+#: cp/method.c:1048
+#, gcc-internal-format
+msgid "uninitialized non-static const member %q#D"
+msgstr ""
+
+#: cp/method.c:1055
+#, gcc-internal-format
+msgid "uninitialized non-static reference member %q#D"
+msgstr ""
+
+#: cp/method.c:1071
+#, gcc-internal-format
+msgid "defaulted default constructor does not initialize %q+#D"
+msgstr ""
+
+#. A trivial constructor doesn't have any NSDMI.
+#: cp/method.c:1220
+#, gcc-internal-format
+msgid "defaulted default constructor does not initialize any non-static data member"
+msgstr ""
+
+#: cp/method.c:1298
+#, gcc-internal-format
+msgid "%qT has virtual bases, default move assignment operator cannot be generated"
+msgstr ""
+
+#: cp/method.c:1388
+#, gcc-internal-format
+msgid "a lambda closure type has a deleted default constructor"
+msgstr ""
+
+#: cp/method.c:1391
+#, gcc-internal-format
+msgid "a lambda closure type has a deleted copy assignment operator"
+msgstr ""
+
+#: cp/method.c:1401
+#, gcc-internal-format
+msgid "%q+#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator"
+msgstr ""
+
+#: cp/method.c:1411
+#, gcc-internal-format
+msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
+msgstr ""
+
+#: cp/method.c:1621
+#, gcc-internal-format
+msgid "defaulted declaration %q+D"
+msgstr ""
+
+#: cp/method.c:1623
+#, gcc-internal-format
+msgid "does not match expected signature %qD"
+msgstr ""
+
+#: cp/method.c:1637
+#, gcc-internal-format
+msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
+msgstr ""
+
+#: cp/method.c:1658
+#, gcc-internal-format
+msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
+msgstr ""
+
+#: cp/method.c:1680
+#, gcc-internal-format
+msgid "a template cannot be defaulted"
+msgstr ""
+
+#: cp/method.c:1708
+#, gcc-internal-format
+msgid "%qD cannot be defaulted"
+msgstr ""
+
+#: cp/method.c:1717
+#, gcc-internal-format
+msgid "defaulted function %q+D with default argument"
+msgstr ""
+
+#: cp/method.c:1805
+#, gcc-internal-format
+msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
+msgstr ""
+
+#: cp/name-lookup.c:555
+#, gcc-internal-format
+msgid "%q#D conflicts with a previous declaration"
+msgstr ""
+
+#: cp/name-lookup.c:557
+#, gcc-internal-format
+msgid "previous declaration %q+#D"
+msgstr ""
+
+#: cp/name-lookup.c:769
+#, gcc-internal-format
+msgid "redeclaration of %<wchar_t%> as %qT"
+msgstr ""
+
+#. A redeclaration of main, but not a duplicate of the
+#. previous one.
+#.
+#. [basic.start.main]
+#.
+#. This function shall not be overloaded.
+#: cp/name-lookup.c:799
+#, gcc-internal-format
+msgid "invalid redeclaration of %q+D"
+msgstr ""
+
+#: cp/name-lookup.c:800
+#, gcc-internal-format
+msgid "as %qD"
+msgstr ""
+
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
+#, gcc-internal-format
+msgid "declaration of %q#D with C language linkage"
+msgstr ""
+
+#: cp/name-lookup.c:847
+#, gcc-internal-format
+msgid "due to different exception specifications"
+msgstr ""
+
+#: cp/name-lookup.c:948
+#, gcc-internal-format
+msgid "type mismatch with previous external decl of %q#D"
+msgstr ""
+
+#: cp/name-lookup.c:949
+#, gcc-internal-format
+msgid "previous external decl of %q+#D"
+msgstr ""
+
+#: cp/name-lookup.c:1047
+#, gcc-internal-format
+msgid "extern declaration of %q#D doesn%'t match"
+msgstr ""
+
+#: cp/name-lookup.c:1048
+#, gcc-internal-format
+msgid "global declaration %q+#D"
+msgstr ""
+
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
+#, gcc-internal-format
+msgid "declaration of %q#D shadows a parameter"
+msgstr ""
+
+#: cp/name-lookup.c:1146
+#, gcc-internal-format
+msgid "declaration of %qD shadows a lambda capture"
+msgstr ""
+
+#: cp/name-lookup.c:1150
+#, gcc-internal-format
+msgid "declaration of %qD shadows a previous local"
+msgstr ""
+
+#. Location of previous decl is not useful in this case.
+#: cp/name-lookup.c:1180
+#, gcc-internal-format
+msgid "declaration of %qD shadows a member of 'this'"
+msgstr ""
+
+#: cp/name-lookup.c:1194
+#, gcc-internal-format
+msgid "declaration of %qD shadows a global declaration"
+msgstr ""
+
+#: cp/name-lookup.c:1329
+#, gcc-internal-format
+msgid "name lookup of %qD changed"
+msgstr ""
+
+#: cp/name-lookup.c:1330
+#, gcc-internal-format
+msgid " matches this %q+D under ISO standard rules"
+msgstr ""
+
+#: cp/name-lookup.c:1332
+#, gcc-internal-format
+msgid " matches this %q+D under old rules"
+msgstr ""
+
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
+#, gcc-internal-format
+msgid "name lookup of %qD changed for ISO %<for%> scoping"
+msgstr ""
+
+#: cp/name-lookup.c:1352
+#, gcc-internal-format
+msgid " cannot use obsolete binding at %q+D because it has a destructor"
+msgstr ""
+
+#: cp/name-lookup.c:1361
+#, gcc-internal-format
+msgid " using obsolete binding at %q+D"
+msgstr ""
+
+#: cp/name-lookup.c:1367 cp/parser.c:12468
+#, gcc-internal-format
+msgid "(if you use %<-fpermissive%> G++ will accept your code)"
+msgstr ""
+
+#: cp/name-lookup.c:1422
+#, gcc-internal-format
+msgid "%s %s(%E) %p %d\n"
+msgstr ""
+
+#: cp/name-lookup.c:1425
+#, gcc-internal-format
+msgid "%s %s %p %d\n"
+msgstr ""
+
+#: cp/name-lookup.c:2252
+#, gcc-internal-format
+msgid "%q#D hides constructor for %q#T"
+msgstr ""
+
+#: cp/name-lookup.c:2269
+#, gcc-internal-format
+msgid "%q#D conflicts with previous using declaration %q#D"
+msgstr ""
+
+#: cp/name-lookup.c:2292
+#, gcc-internal-format
+msgid "previous non-function declaration %q+#D"
+msgstr ""
+
+#: cp/name-lookup.c:2293
+#, gcc-internal-format
+msgid "conflicts with function declaration %q#D"
+msgstr ""
+
+#. It's a nested name with template parameter dependent scope.
+#. This can only be using-declaration for class member.
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
+#, gcc-internal-format
+msgid "%qT is not a namespace"
+msgstr ""
+
+#. 7.3.3/5
+#. A using-declaration shall not name a template-id.
+#: cp/name-lookup.c:2393
+#, gcc-internal-format
+msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
+msgstr ""
+
+#: cp/name-lookup.c:2400
+#, gcc-internal-format
+msgid "namespace %qD not allowed in using-declaration"
+msgstr ""
+
+#: cp/name-lookup.c:2436
+#, gcc-internal-format
+msgid "%qD not declared"
+msgstr ""
+
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
+#, gcc-internal-format
+msgid "%qD is already declared in this scope"
+msgstr ""
+
+#: cp/name-lookup.c:3201
+#, gcc-internal-format
+msgid "using-declaration for non-member at class scope"
+msgstr ""
+
+#: cp/name-lookup.c:3208
+#, gcc-internal-format
+msgid "%<%T::%D%> names destructor"
+msgstr ""
+
+#: cp/name-lookup.c:3213
+#, gcc-internal-format
+msgid "%<%T::%D%> names constructor"
+msgstr ""
+
+#: cp/name-lookup.c:3218
+#, gcc-internal-format
+msgid "%<%T::%D%> names constructor in %qT"
+msgstr ""
+
+#: cp/name-lookup.c:3268
+#, gcc-internal-format
+msgid "no members matching %<%T::%D%> in %q#T"
+msgstr ""
+
+#: cp/name-lookup.c:3355
+#, gcc-internal-format
+msgid "declaration of %qD not in a namespace surrounding %qD"
+msgstr ""
+
+#: cp/name-lookup.c:3363
+#, gcc-internal-format
+msgid "explicit qualification in declaration of %qD"
+msgstr ""
+
+#: cp/name-lookup.c:3446
+#, gcc-internal-format
+msgid "%qD should have been declared inside %qD"
+msgstr ""
+
+#: cp/name-lookup.c:3490
+#, gcc-internal-format
+msgid "%qD attribute requires a single NTBS argument"
+msgstr ""
+
+#: cp/name-lookup.c:3497
+#, gcc-internal-format
+msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
+msgstr ""
+
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
+#, gcc-internal-format
+msgid "%qD attribute directive ignored"
+msgstr ""
+
+#: cp/name-lookup.c:3550
+#, gcc-internal-format
+msgid "namespace alias %qD not allowed here, assuming %qD"
+msgstr ""
+
+#: cp/name-lookup.c:3882
+#, gcc-internal-format
+msgid "strong using only meaningful at namespace scope"
+msgstr ""
+
+#: cp/name-lookup.c:3886
+#, gcc-internal-format
+msgid "current namespace %qD does not enclose strongly used namespace %qD"
+msgstr ""
+
+#: cp/name-lookup.c:4224
+#, gcc-internal-format
+msgid "maximum limit of %d namespaces searched for %qE"
+msgstr ""
+
+#: cp/name-lookup.c:4234
+#, gcc-internal-format
+msgid "suggested alternative:"
+msgid_plural "suggested alternatives:"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: cp/name-lookup.c:4238
+#, gcc-internal-format
+msgid " %qE"
+msgstr ""
+
+#: cp/name-lookup.c:5494
+#, gcc-internal-format
+msgid "argument dependent lookup finds %q+D"
+msgstr ""
+
+#: cp/name-lookup.c:5990
+#, gcc-internal-format
+msgid "XXX entering pop_everything ()\n"
+msgstr ""
+
+#: cp/name-lookup.c:5999
+#, gcc-internal-format
+msgid "XXX leaving pop_everything ()\n"
+msgstr ""
+
+#: cp/optimize.c:355
+#, gcc-internal-format
+msgid "making multiple clones of %qD"
+msgstr ""
+
+#: cp/parser.c:752
+#, gcc-internal-format
+msgid "identifier %qE is a keyword in C++11"
+msgstr ""
+
+#: cp/parser.c:2374
+#, gcc-internal-format
+msgid "%<#pragma%> is not allowed here"
+msgstr ""
+
+#: cp/parser.c:2405
+#, gcc-internal-format
+msgid "%<%E::%E%> has not been declared"
+msgstr ""
+
+#: cp/parser.c:2408
+#, gcc-internal-format
+msgid "%<::%E%> has not been declared"
+msgstr ""
+
+#: cp/parser.c:2411
+#, gcc-internal-format
+msgid "request for member %qE in non-class type %qT"
+msgstr ""
+
+#: cp/parser.c:2414
+#, gcc-internal-format
+msgid "%<%T::%E%> has not been declared"
+msgstr ""
+
+#: cp/parser.c:2417
+#, gcc-internal-format
+msgid "%qE has not been declared"
+msgstr ""
+
+#: cp/parser.c:2424
+#, gcc-internal-format
+msgid "%<%E::%E%> is not a type"
+msgstr ""
+
+#: cp/parser.c:2428
+#, gcc-internal-format
+msgid "%<%E::%E%> is not a class or namespace"
+msgstr ""
+
+#: cp/parser.c:2433
+#, gcc-internal-format
+msgid "%<%E::%E%> is not a class, namespace, or enumeration"
+msgstr ""
+
+#: cp/parser.c:2446
+#, gcc-internal-format
+msgid "%<::%E%> is not a type"
+msgstr ""
+
+#: cp/parser.c:2449
+#, gcc-internal-format
+msgid "%<::%E%> is not a class or namespace"
+msgstr ""
+
+#: cp/parser.c:2453
+#, gcc-internal-format
+msgid "%<::%E%> is not a class, namespace, or enumeration"
+msgstr ""
+
+#: cp/parser.c:2465
+#, gcc-internal-format
+msgid "%qE is not a type"
+msgstr ""
+
+#: cp/parser.c:2468
+#, gcc-internal-format
+msgid "%qE is not a class or namespace"
+msgstr ""
+
+#: cp/parser.c:2472
+#, gcc-internal-format
+msgid "%qE is not a class, namespace, or enumeration"
+msgstr ""
+
+#: cp/parser.c:2515
+#, gcc-internal-format
+msgid "ISO C++ 1998 does not support %<long long%>"
+msgstr ""
+
+#: cp/parser.c:2537
+#, gcc-internal-format
+msgid "duplicate %qs"
+msgstr ""
+
+#: cp/parser.c:2582
+#, gcc-internal-format
+msgid "new types may not be defined in a return type"
+msgstr ""
+
+#: cp/parser.c:2584
+#, gcc-internal-format
+msgid "(perhaps a semicolon is missing after the definition of %qT)"
+msgstr ""
+
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
+#, gcc-internal-format
+msgid "%qT is not a template"
+msgstr ""
+
+#: cp/parser.c:2606
+#, gcc-internal-format
+msgid "%qE is not a template"
+msgstr ""
+
+#: cp/parser.c:2608
+#, gcc-internal-format
+msgid "invalid template-id"
+msgstr ""
+
+#: cp/parser.c:2641
+#, gcc-internal-format
+msgid "floating-point literal cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2645 cp/pt.c:13536
+#, gcc-internal-format
+msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2650
+#, gcc-internal-format
+msgid "%<typeid%> operator cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2654
+#, gcc-internal-format
+msgid "non-constant compound literals cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2658
+#, gcc-internal-format
+msgid "a function call cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2662
+#, gcc-internal-format
+msgid "an increment cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2666
+#, gcc-internal-format
+msgid "an decrement cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2670
+#, gcc-internal-format
+msgid "an array reference cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2674
+#, gcc-internal-format
+msgid "the address of a label cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2678
+#, gcc-internal-format
+msgid "calls to overloaded operators cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2682
+#, gcc-internal-format
+msgid "an assignment cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2685
+#, gcc-internal-format
+msgid "a comma operator cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2689
+#, gcc-internal-format
+msgid "a call to a constructor cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2693
+#, gcc-internal-format
+msgid "a transaction expression cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2739
+#, gcc-internal-format
+msgid "%qs cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/parser.c:2768
+#, gcc-internal-format
+msgid "invalid use of template-name %qE without an argument list"
+msgstr ""
+
+#: cp/parser.c:2771
+#, gcc-internal-format
+msgid "invalid use of destructor %qD as a type"
+msgstr ""
+
+#. Something like 'unsigned A a;'
+#: cp/parser.c:2774
+#, gcc-internal-format
+msgid "invalid combination of multiple type-specifiers"
+msgstr ""
+
+#. Issue an error message.
+#: cp/parser.c:2778
+#, gcc-internal-format
+msgid "%qE does not name a type"
+msgstr ""
+
+#: cp/parser.c:2787
+#, gcc-internal-format
+msgid "C++11 %<constexpr%> only available with -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/parser.c:2814
+#, gcc-internal-format
+msgid "(perhaps %<typename %T::%E%> was intended)"
+msgstr ""
+
+#: cp/parser.c:2829
+#, gcc-internal-format
+msgid "%qE in namespace %qE does not name a type"
+msgstr ""
+
+#. A<T>::A<T>()
+#: cp/parser.c:2835
+#, gcc-internal-format
+msgid "%<%T::%E%> names the constructor, not the type"
+msgstr ""
+
+#: cp/parser.c:2838
+#, gcc-internal-format
+msgid "and %qT has no template constructors"
+msgstr ""
+
+#: cp/parser.c:2843
+#, gcc-internal-format
+msgid "need %<typename%> before %<%T::%E%> because %qT is a dependent scope"
+msgstr ""
+
+#: cp/parser.c:2847
+#, gcc-internal-format
+msgid "%qE in %q#T does not name a type"
+msgstr ""
+
+#: cp/parser.c:3400
+#, gcc-internal-format
+msgid "expected string-literal"
+msgstr ""
+
+#: cp/parser.c:3462
+#, gcc-internal-format
+msgid "inconsistent user-defined literal suffixes %qD and %qD in string literal"
+msgstr ""
+
+#: cp/parser.c:3505
+#, gcc-internal-format
+msgid "a wide string is invalid in this context"
+msgstr ""
+
+#: cp/parser.c:3618 cp/parser.c:3628
+#, gcc-internal-format
+msgid "unable to find character literal operator %qD with %qT argument"
+msgstr ""
+
+#: cp/parser.c:3725
+#, gcc-internal-format
+msgid "unable to find numeric literal operator %qD"
+msgstr ""
+
+#: cp/parser.c:3752
+#, gcc-internal-format
+msgid "unable to find string literal operator %qD"
+msgstr ""
+
+#: cp/parser.c:3761
+#, gcc-internal-format
+msgid "unable to find string literal operator %qD with %qT, %qT arguments"
+msgstr ""
+
+#: cp/parser.c:3821 cp/parser.c:10370
+#, gcc-internal-format
+msgid "expected declaration"
+msgstr ""
+
+#: cp/parser.c:3924
+#, gcc-internal-format
+msgid "fixed-point types not supported in C++"
+msgstr ""
+
+#: cp/parser.c:4015
+#, gcc-internal-format
+msgid "ISO C++ forbids braced-groups within expressions"
+msgstr ""
+
+#: cp/parser.c:4027
+#, gcc-internal-format
+msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
+msgstr ""
+
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
+#, gcc-internal-format
+msgid "expected primary-expression"
+msgstr ""
+
+#: cp/parser.c:4117
+#, gcc-internal-format
+msgid "%<this%> may not be used in this context"
+msgstr ""
+
+#: cp/parser.c:4232
+#, gcc-internal-format
+msgid "a template declaration cannot appear at block scope"
+msgstr ""
+
+#: cp/parser.c:4366
+#, gcc-internal-format
+msgid "local variable %qD may not appear in this context"
+msgstr ""
+
+#: cp/parser.c:4530
+#, gcc-internal-format
+msgid "expected id-expression"
+msgstr ""
+
+#: cp/parser.c:4660
+#, gcc-internal-format
+msgid "scope %qT before %<~%> is not a class-name"
+msgstr ""
+
+#: cp/parser.c:4782
+#, gcc-internal-format
+msgid "declaration of %<~%T%> as member of %qT"
+msgstr ""
+
+#: cp/parser.c:4797
+#, gcc-internal-format
+msgid "typedef-name %qD used as destructor declarator"
+msgstr ""
+
+#: cp/parser.c:4830
+#, gcc-internal-format
+msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
+msgstr ""
+
+#: cp/parser.c:4841 cp/parser.c:16238
+#, gcc-internal-format
+msgid "expected unqualified-id"
+msgstr ""
+
+#: cp/parser.c:4948
+#, gcc-internal-format
+msgid "found %<:%> in nested-name-specifier, expected %<::%>"
+msgstr ""
+
+#: cp/parser.c:5017
+#, gcc-internal-format
+msgid "decltype evaluates to %qT, which is not a class or enumeration type"
+msgstr ""
+
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
+#, gcc-internal-format
+msgid "%qD is not a template"
+msgstr ""
+
+#: cp/parser.c:5187
+#, gcc-internal-format
+msgid "expected nested-name-specifier"
+msgstr ""
+
+#: cp/parser.c:5384 cp/parser.c:7095
+#, gcc-internal-format
+msgid "types may not be defined in casts"
+msgstr ""
+
+#: cp/parser.c:5444
+#, gcc-internal-format
+msgid "types may not be defined in a %<typeid%> expression"
+msgstr ""
+
+#. Warn the user that a compound literal is not
+#. allowed in standard C++.
+#: cp/parser.c:5553
+#, gcc-internal-format
+msgid "ISO C++ forbids compound-literals"
+msgstr ""
+
+#: cp/parser.c:5943
+#, gcc-internal-format
+msgid "%qE does not have class type"
+msgstr ""
+
+#: cp/parser.c:6032 cp/typeck.c:2366
+#, gcc-internal-format
+msgid "invalid use of %qD"
+msgstr ""
+
+#: cp/parser.c:6041
+#, gcc-internal-format
+msgid "%<%D::%D%> is not a class member"
+msgstr ""
+
+#: cp/parser.c:6302
+#, gcc-internal-format
+msgid "non-scalar type"
+msgstr ""
+
+#: cp/parser.c:6396
+#, gcc-internal-format
+msgid "ISO C++ does not allow %<alignof%> with a non-type"
+msgstr ""
+
+#: cp/parser.c:6459
+#, gcc-internal-format
+msgid "types may not be defined in %<noexcept%> expressions"
+msgstr ""
+
+#: cp/parser.c:6684
+#, gcc-internal-format
+msgid "types may not be defined in a new-expression"
+msgstr ""
+
+#: cp/parser.c:6697
+#, gcc-internal-format
+msgid "array bound forbidden after parenthesized type-id"
+msgstr ""
+
+#: cp/parser.c:6699
+#, gcc-internal-format
+msgid "try removing the parentheses around the type-id"
+msgstr ""
+
+#: cp/parser.c:6780
+#, gcc-internal-format
+msgid "types may not be defined in a new-type-id"
+msgstr ""
+
+#: cp/parser.c:6904
+#, gcc-internal-format
+msgid "expression in new-declarator must have integral or enumeration type"
+msgstr ""
+
+#: cp/parser.c:7160
+#, gcc-internal-format
+msgid "use of old-style cast"
+msgstr ""
+
+#: cp/parser.c:7292
+#, gcc-internal-format
+msgid "%<>>%> operator is treated as two right angle brackets in C++11"
+msgstr ""
+
+#: cp/parser.c:7295
+#, gcc-internal-format
+msgid "suggest parentheses around %<>>%> expression"
+msgstr ""
+
+#: cp/parser.c:7440
+#, gcc-internal-format
+msgid "ISO C++ does not allow ?: with omitted middle operand"
+msgstr ""
+
+#: cp/parser.c:8060
+#, gcc-internal-format
+msgid "lambda-expression in unevaluated context"
+msgstr ""
+
+#: cp/parser.c:8189
+#, gcc-internal-format
+msgid "expected end of capture-list"
+msgstr ""
+
+#: cp/parser.c:8203
+#, gcc-internal-format
+msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
+msgstr ""
+
+#: cp/parser.c:8244
+#, gcc-internal-format
+msgid "ISO C++ does not allow initializers in lambda expression capture lists"
+msgstr ""
+
+#: cp/parser.c:8277
+#, gcc-internal-format
+msgid "capture of non-variable %qD "
+msgstr ""
+
+#: cp/parser.c:8279 cp/parser.c:8288
+#, gcc-internal-format
+msgid "%q+#D declared here"
+msgstr ""
+
+#: cp/parser.c:8285
+#, gcc-internal-format
+msgid "capture of variable %qD with non-automatic storage duration"
+msgstr ""
+
+#: cp/parser.c:8314
+#, gcc-internal-format
+msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
+msgstr ""
+
+#: cp/parser.c:8319
+#, gcc-internal-format
+msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
+msgstr ""
+
+#: cp/parser.c:8374
+#, gcc-internal-format
+msgid "default argument specified for lambda parameter"
+msgstr ""
+
+#: cp/parser.c:8777
+#, gcc-internal-format
+msgid "expected labeled-statement"
+msgstr ""
+
+#: cp/parser.c:8815
+#, gcc-internal-format
+msgid "case label %qE not within a switch statement"
+msgstr ""
+
+#: cp/parser.c:8890
+#, gcc-internal-format
+msgid "need %<typename%> before %qE because %qT is a dependent scope"
+msgstr ""
+
+#: cp/parser.c:8899
+#, gcc-internal-format
+msgid "%<%T::%D%> names the constructor, not the type"
+msgstr ""
+
+#: cp/parser.c:8948
+#, gcc-internal-format
+msgid "compound-statement in constexpr function"
+msgstr ""
+
+#: cp/parser.c:9160 cp/parser.c:22274
+#, gcc-internal-format
+msgid "expected selection-statement"
+msgstr ""
+
+#: cp/parser.c:9193
+#, gcc-internal-format
+msgid "types may not be defined in conditions"
+msgstr ""
+
+#: cp/parser.c:9536
+#, gcc-internal-format
+msgid "range-based %<for%> expression of type %qT has incomplete type"
+msgstr ""
+
+#: cp/parser.c:9574
+#, gcc-internal-format
+msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
+msgstr ""
+
+#: cp/parser.c:9580
+#, gcc-internal-format
+msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
+msgstr ""
+
+#: cp/parser.c:9618
+#, gcc-internal-format
+msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
+msgstr ""
+
+#: cp/parser.c:9749 cp/parser.c:22277
+#, gcc-internal-format
+msgid "expected iteration-statement"
+msgstr ""
+
+#: cp/parser.c:9796
+#, gcc-internal-format
+msgid "range-based %<for%> loops are not allowed in C++98 mode"
+msgstr ""
+
+#. Issue a warning about this use of a GNU extension.
+#: cp/parser.c:9918
+#, gcc-internal-format
+msgid "ISO C++ forbids computed gotos"
+msgstr ""
+
+#: cp/parser.c:9931 cp/parser.c:22280
+#, gcc-internal-format
+msgid "expected jump-statement"
+msgstr ""
+
+#: cp/parser.c:10063 cp/parser.c:18871
+#, gcc-internal-format
+msgid "extra %<;%>"
+msgstr ""
+
+#: cp/parser.c:10297
+#, gcc-internal-format
+msgid "%<__label__%> not at the beginning of a block"
+msgstr ""
+
+#: cp/parser.c:10448
+#, gcc-internal-format
+msgid "mixing declarations and function-definitions is forbidden"
+msgstr ""
+
+#: cp/parser.c:10592
+#, gcc-internal-format
+msgid "%<friend%> used outside of class"
+msgstr ""
+
+#. Complain about `auto' as a storage specifier, if
+#. we're complaining about C++0x compatibility.
+#: cp/parser.c:10651
+#, gcc-internal-format
+msgid "%<auto%> changes meaning in C++11; please remove it"
+msgstr ""
+
+#: cp/parser.c:10687
+#, gcc-internal-format
+msgid "decl-specifier invalid in condition"
+msgstr ""
+
+#: cp/parser.c:10778
+#, gcc-internal-format
+msgid "class definition may not be declared a friend"
+msgstr ""
+
+#: cp/parser.c:10847 cp/parser.c:19243
+#, gcc-internal-format
+msgid "templates may not be %<virtual%>"
+msgstr ""
+
+#: cp/parser.c:10888
+#, gcc-internal-format
+msgid "invalid linkage-specification"
+msgstr ""
+
+#: cp/parser.c:11023
+#, gcc-internal-format
+msgid "types may not be defined in %<decltype%> expressions"
+msgstr ""
+
+#: cp/parser.c:11280
+#, gcc-internal-format
+msgid "invalid use of %<auto%> in conversion operator"
+msgstr ""
+
+#: cp/parser.c:11366
+#, gcc-internal-format
+msgid "only constructors take member initializers"
+msgstr ""
+
+#: cp/parser.c:11388
+#, gcc-internal-format
+msgid "cannot expand initializer for member %<%D%>"
+msgstr ""
+
+#: cp/parser.c:11400
+#, gcc-internal-format
+msgid "mem-initializer for %qD follows constructor delegation"
+msgstr ""
+
+#: cp/parser.c:11412
+#, gcc-internal-format
+msgid "constructor delegation follows mem-initializer for %qD"
+msgstr ""
+
+#: cp/parser.c:11464
+#, gcc-internal-format
+msgid "anachronistic old-style base class initializer"
+msgstr ""
+
+#: cp/parser.c:11532
+#, gcc-internal-format
+msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
+msgstr ""
+
+#: cp/parser.c:11849
+#, gcc-internal-format
+msgid "expected empty string after %<operator%> keyword"
+msgstr ""
+
+#: cp/parser.c:11867
+#, gcc-internal-format
+msgid "expected suffix identifier"
+msgstr ""
+
+#: cp/parser.c:11872
+#, gcc-internal-format
+msgid "missing space between %<\"\"%> and suffix identifier"
+msgstr ""
+
+#: cp/parser.c:11887
+#, gcc-internal-format
+msgid "expected operator"
+msgstr ""
+
+#. Warn that we do not support `export'.
+#: cp/parser.c:11924
+#, gcc-internal-format
+msgid "keyword %<export%> not implemented, and will be ignored"
+msgstr ""
+
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
+#, gcc-internal-format
+msgid "template parameter pack %qD cannot have a default argument"
+msgstr ""
+
+#: cp/parser.c:12119 cp/parser.c:17348
+#, gcc-internal-format
+msgid "template parameter pack cannot have a default argument"
+msgstr ""
+
+#: cp/parser.c:12217 cp/parser.c:12324
+#, gcc-internal-format
+msgid "template parameter packs cannot have default arguments"
+msgstr ""
+
+#: cp/parser.c:12406
+#, gcc-internal-format
+msgid "expected template-id"
+msgstr ""
+
+#: cp/parser.c:12453 cp/parser.c:22238
+#, gcc-internal-format
+msgid "expected %<<%>"
+msgstr ""
+
+#: cp/parser.c:12460
+#, gcc-internal-format
+msgid "%<<::%> cannot begin a template-argument list"
+msgstr ""
+
+#: cp/parser.c:12464
+#, gcc-internal-format
+msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
+msgstr ""
+
+#: cp/parser.c:12542
+#, gcc-internal-format
+msgid "parse error in template argument list"
+msgstr ""
+
+#. The name does not name a template.
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
+#, gcc-internal-format
+msgid "expected template-name"
+msgstr ""
+
+#. Explain what went wrong.
+#: cp/parser.c:12656
+#, gcc-internal-format
+msgid "non-template %qD used as template"
+msgstr ""
+
+#: cp/parser.c:12658
+#, gcc-internal-format
+msgid "use %<%T::template %D%> to indicate that it is a template"
+msgstr ""
+
+#: cp/parser.c:12792
+#, gcc-internal-format
+msgid "expected parameter pack before %<...%>"
+msgstr ""
+
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
+#, gcc-internal-format
+msgid "expected template-argument"
+msgstr ""
+
+#: cp/parser.c:13043
+#, gcc-internal-format
+msgid "invalid non-type template argument"
+msgstr ""
+
+#: cp/parser.c:13159
+#, gcc-internal-format
+msgid "explicit instantiation shall not use %<inline%> specifier"
+msgstr ""
+
+#: cp/parser.c:13162
+#, gcc-internal-format
+msgid "explicit instantiation shall not use %<constexpr%> specifier"
+msgstr ""
+
+#: cp/parser.c:13221
+#, gcc-internal-format
+msgid "template specialization with C linkage"
+msgstr ""
+
+#: cp/parser.c:13441
+#, gcc-internal-format
+msgid "expected type specifier"
+msgstr ""
+
+#: cp/parser.c:13688
+#, gcc-internal-format
+msgid "expected template-id for type"
+msgstr ""
+
+#: cp/parser.c:13715
+#, gcc-internal-format
+msgid "expected type-name"
+msgstr ""
+
+#: cp/parser.c:13952
+#, gcc-internal-format
+msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
+msgstr ""
+
+#: cp/parser.c:14137
+#, gcc-internal-format
+msgid "declaration %qD does not declare anything"
+msgstr ""
+
+#: cp/parser.c:14223
+#, gcc-internal-format
+msgid "attributes ignored on uninstantiated type"
+msgstr ""
+
+#: cp/parser.c:14227
+#, gcc-internal-format
+msgid "attributes ignored on template instantiation"
+msgstr ""
+
+#: cp/parser.c:14232
+#, gcc-internal-format
+msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
+msgstr ""
+
+#: cp/parser.c:14365
+#, gcc-internal-format
+msgid "%qD is an enumeration template"
+msgstr ""
+
+#: cp/parser.c:14373
+#, gcc-internal-format
+msgid "%qD is not an enumerator-name"
+msgstr ""
+
+#: cp/parser.c:14436
+#, gcc-internal-format
+msgid "expected %<;%> or %<{%>"
+msgstr ""
+
+#: cp/parser.c:14484
+#, gcc-internal-format
+msgid "cannot add an enumerator list to a template instantiation"
+msgstr ""
+
+#: cp/parser.c:14493 cp/parser.c:18444
+#, gcc-internal-format
+msgid "declaration of %qD in namespace %qD which does not enclose %qD"
+msgstr ""
+
+#: cp/parser.c:14498 cp/parser.c:18449
+#, gcc-internal-format
+msgid "declaration of %qD in %qD which does not enclose %qD"
+msgstr ""
+
+#: cp/parser.c:14521
+#, gcc-internal-format
+msgid "multiple definition of %q#T"
+msgstr ""
+
+#: cp/parser.c:14548
+#, gcc-internal-format
+msgid "opaque-enum-specifier without name"
+msgstr ""
+
+#: cp/parser.c:14551
+#, gcc-internal-format
+msgid "opaque-enum-specifier must use a simple identifier"
+msgstr ""
+
+#: cp/parser.c:14727
+#, gcc-internal-format
+msgid "%qD is not a namespace-name"
+msgstr ""
+
+#: cp/parser.c:14728
+#, gcc-internal-format
+msgid "expected namespace-name"
+msgstr ""
+
+#: cp/parser.c:14853
+#, gcc-internal-format
+msgid "%<namespace%> definition is not allowed here"
+msgstr ""
+
+#: cp/parser.c:14999
+#, gcc-internal-format
+msgid "a template-id may not appear in a using-declaration"
+msgstr ""
+
+#: cp/parser.c:15039
+#, gcc-internal-format
+msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
+msgstr ""
+
+#: cp/parser.c:15094
+#, gcc-internal-format
+msgid "types may not be defined in alias template declarations"
+msgstr ""
+
+#: cp/parser.c:15541
+#, gcc-internal-format
+msgid "a function-definition is not allowed here"
+msgstr ""
+
+#: cp/parser.c:15553
+#, gcc-internal-format
+msgid "an asm-specification is not allowed on a function-definition"
+msgstr ""
+
+#: cp/parser.c:15557
+#, gcc-internal-format
+msgid "attributes are not allowed on a function-definition"
+msgstr ""
+
+#: cp/parser.c:15594
+#, gcc-internal-format
+msgid "expected constructor, destructor, or type conversion"
+msgstr ""
+
+#. Anything else is an error.
+#: cp/parser.c:15629 cp/parser.c:17509
+#, gcc-internal-format
+msgid "expected initializer"
+msgstr ""
+
+#: cp/parser.c:15649
+#, gcc-internal-format
+msgid "invalid type in declaration"
+msgstr ""
+
+#: cp/parser.c:15725
+#, gcc-internal-format
+msgid "initializer provided for function"
+msgstr ""
+
+#: cp/parser.c:15757
+#, gcc-internal-format
+msgid "attributes after parenthesized initializer ignored"
+msgstr ""
+
+#: cp/parser.c:16161
+#, gcc-internal-format
+msgid "array bound is not an integer constant"
+msgstr ""
+
+#: cp/parser.c:16282
+#, gcc-internal-format
+msgid "cannot define member of dependent typedef %qT"
+msgstr ""
+
+#: cp/parser.c:16286
+#, gcc-internal-format
+msgid "%<%T::%E%> is not a type"
+msgstr ""
+
+#: cp/parser.c:16314
+#, gcc-internal-format
+msgid "invalid use of constructor as a template"
+msgstr ""
+
+#: cp/parser.c:16316
+#, gcc-internal-format
+msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
+msgstr ""
+
+#. We do not attempt to print the declarator
+#. here because we do not have enough
+#. information about its original syntactic
+#. form.
+#: cp/parser.c:16333
+#, gcc-internal-format
+msgid "invalid declarator"
+msgstr ""
+
+#: cp/parser.c:16399
+#, gcc-internal-format
+msgid "expected declarator"
+msgstr ""
+
+#: cp/parser.c:16494
+#, gcc-internal-format
+msgid "%qD is a namespace"
+msgstr ""
+
+#: cp/parser.c:16496
+#, gcc-internal-format
+msgid "cannot form pointer to member of non-class %q#T"
+msgstr ""
+
+#: cp/parser.c:16513
+#, gcc-internal-format
+msgid "expected ptr-operator"
+msgstr ""
+
+#: cp/parser.c:16572
+#, gcc-internal-format
+msgid "duplicate cv-qualifier"
+msgstr ""
+
+#: cp/parser.c:16630
+#, gcc-internal-format
+msgid "duplicate virt-specifier"
+msgstr ""
+
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
+#, gcc-internal-format
+msgid "invalid use of %<auto%>"
+msgstr ""
+
+#: cp/parser.c:16811
+#, gcc-internal-format
+msgid "types may not be defined in template arguments"
+msgstr ""
+
+#: cp/parser.c:16892
+#, gcc-internal-format
+msgid "expected type-specifier"
+msgstr ""
+
+#: cp/parser.c:17136
+#, gcc-internal-format
+msgid "expected %<,%> or %<...%>"
+msgstr ""
+
+#: cp/parser.c:17193
+#, gcc-internal-format
+msgid "types may not be defined in parameter types"
+msgstr ""
+
+#: cp/parser.c:17319
+#, gcc-internal-format
+msgid "deprecated use of default argument for parameter of non-function"
+msgstr ""
+
+#: cp/parser.c:17323
+#, gcc-internal-format
+msgid "default arguments are only permitted for function parameters"
+msgstr ""
+
+#: cp/parser.c:17342
+#, gcc-internal-format
+msgid "parameter pack %qD cannot have a default argument"
+msgstr ""
+
+#: cp/parser.c:17350
+#, gcc-internal-format
+msgid "parameter pack cannot have a default argument"
+msgstr ""
+
+#: cp/parser.c:17637
+#, gcc-internal-format
+msgid "ISO C++ does not allow designated initializers"
+msgstr ""
+
+#: cp/parser.c:17651
+#, gcc-internal-format
+msgid "ISO C++ does not allow C99 designated initializers"
+msgstr ""
+
+#: cp/parser.c:17755 cp/parser.c:17879
+#, gcc-internal-format
+msgid "expected class-name"
+msgstr ""
+
+#: cp/parser.c:18067
+#, gcc-internal-format
+msgid "expected %<;%> after class definition"
+msgstr ""
+
+#: cp/parser.c:18069
+#, gcc-internal-format
+msgid "expected %<;%> after struct definition"
+msgstr ""
+
+#: cp/parser.c:18071
+#, gcc-internal-format
+msgid "expected %<;%> after union definition"
+msgstr ""
+
+#: cp/parser.c:18392
+#, gcc-internal-format
+msgid "expected %<{%> or %<:%>"
+msgstr ""
+
+#: cp/parser.c:18403
+#, gcc-internal-format
+msgid "cannot specify %<override%> for a class"
+msgstr ""
+
+#: cp/parser.c:18411
+#, gcc-internal-format
+msgid "global qualification of class name is invalid"
+msgstr ""
+
+#: cp/parser.c:18418
+#, gcc-internal-format
+msgid "qualified name does not name a class"
+msgstr ""
+
+#: cp/parser.c:18430
+#, gcc-internal-format
+msgid "invalid class name in declaration of %qD"
+msgstr ""
+
+#: cp/parser.c:18463
+#, gcc-internal-format
+msgid "extra qualification not allowed"
+msgstr ""
+
+#: cp/parser.c:18475
+#, gcc-internal-format
+msgid "an explicit specialization must be preceded by %<template <>%>"
+msgstr ""
+
+#: cp/parser.c:18505
+#, gcc-internal-format
+msgid "function template %qD redeclared as a class template"
+msgstr ""
+
+#: cp/parser.c:18536
+#, gcc-internal-format
+msgid "could not resolve typename type"
+msgstr ""
+
+#: cp/parser.c:18588
+#, gcc-internal-format
+msgid "previous definition of %q+#T"
+msgstr ""
+
+#: cp/parser.c:18661 cp/parser.c:22283
+#, gcc-internal-format
+msgid "expected class-key"
+msgstr ""
+
+#: cp/parser.c:18890
+#, gcc-internal-format
+msgid "in C++03 a class-key must be used when declaring a friend"
+msgstr ""
+
+#: cp/parser.c:18908
+#, gcc-internal-format
+msgid "friend declaration does not name a class or function"
+msgstr ""
+
+#: cp/parser.c:19118
+#, gcc-internal-format
+msgid "pure-specifier on function-definition"
+msgstr ""
+
+#: cp/parser.c:19166
+#, gcc-internal-format
+msgid "expected %<;%> at end of member declaration"
+msgstr ""
+
+#: cp/parser.c:19237
+#, gcc-internal-format
+msgid "invalid pure specifier (only %<= 0%> is allowed)"
+msgstr ""
+
+#: cp/parser.c:19272
+#, gcc-internal-format
+msgid "a brace-enclosed initializer is not allowed here"
+msgstr ""
+
+#: cp/parser.c:19403
+#, gcc-internal-format
+msgid "%<virtual%> specified more than once in base-specified"
+msgstr ""
+
+#: cp/parser.c:19423
+#, gcc-internal-format
+msgid "more than one access specifier in base-specified"
+msgstr ""
+
+#: cp/parser.c:19447
+#, gcc-internal-format
+msgid "keyword %<typename%> not allowed outside of templates"
+msgstr ""
+
+#: cp/parser.c:19450
+#, gcc-internal-format
+msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
+msgstr ""
+
+#: cp/parser.c:19543 cp/parser.c:19625
+#, gcc-internal-format
+msgid "types may not be defined in an exception-specification"
+msgstr ""
+
+#: cp/parser.c:19607
+#, gcc-internal-format
+msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
+msgstr ""
+
+#: cp/parser.c:19806
+#, gcc-internal-format
+msgid "types may not be defined in exception-declarations"
+msgstr ""
+
+#: cp/parser.c:20706
+#, gcc-internal-format
+msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
+msgstr ""
+
+#: cp/parser.c:20711
+#, gcc-internal-format
+msgid "invalid declaration of %<%T::%E%>"
+msgstr ""
+
+#: cp/parser.c:20715
+#, gcc-internal-format
+msgid "too few template-parameter-lists"
+msgstr ""
+
+#. Otherwise, there are too many template parameter lists. We have
+#. something like:
+#.
+#. template <class T> template <class U> void S::f();
+#: cp/parser.c:20722
+#, gcc-internal-format
+msgid "too many template-parameter-lists"
+msgstr ""
+
+#: cp/parser.c:21019
+#, gcc-internal-format
+msgid "named return values are no longer supported"
+msgstr ""
+
+#: cp/parser.c:21106
+#, gcc-internal-format
+msgid "invalid declaration of member template in local class"
+msgstr ""
+
+#: cp/parser.c:21115
+#, gcc-internal-format
+msgid "template with C linkage"
+msgstr ""
+
+#: cp/parser.c:21134
+#, gcc-internal-format
+msgid "invalid explicit specialization"
+msgstr ""
+
+#: cp/parser.c:21220
+#, gcc-internal-format
+msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
+msgstr ""
+
+#: cp/parser.c:21294
+#, gcc-internal-format
+msgid "template declaration of %<typedef%>"
+msgstr ""
+
+#: cp/parser.c:21371
+#, gcc-internal-format
+msgid "explicit template specialization cannot have a storage class"
+msgstr ""
+
+#: cp/parser.c:21606
+#, gcc-internal-format
+msgid "%<>>%> should be %<> >%> within a nested template argument list"
+msgstr ""
+
+#: cp/parser.c:21619
+#, gcc-internal-format
+msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
+msgstr ""
+
+#: cp/parser.c:22025
+#, gcc-internal-format
+msgid "invalid use of %qD in linkage specification"
+msgstr ""
+
+#: cp/parser.c:22038
+#, gcc-internal-format
+msgid "%<__thread%> before %qD"
+msgstr ""
+
+#: cp/parser.c:22141
+#, gcc-internal-format
+msgid "expected %<new%>"
+msgstr ""
+
+#: cp/parser.c:22144
+#, gcc-internal-format
+msgid "expected %<delete%>"
+msgstr ""
+
+#: cp/parser.c:22147
+#, gcc-internal-format
+msgid "expected %<return%>"
+msgstr ""
+
+#: cp/parser.c:22153
+#, gcc-internal-format
+msgid "expected %<extern%>"
+msgstr ""
+
+#: cp/parser.c:22156
+#, gcc-internal-format
+msgid "expected %<static_assert%>"
+msgstr ""
+
+#: cp/parser.c:22159
+#, gcc-internal-format
+msgid "expected %<decltype%>"
+msgstr ""
+
+#: cp/parser.c:22162
+#, gcc-internal-format
+msgid "expected %<operator%>"
+msgstr ""
+
+#: cp/parser.c:22165
+#, gcc-internal-format
+msgid "expected %<class%>"
+msgstr ""
+
+#: cp/parser.c:22168
+#, gcc-internal-format
+msgid "expected %<template%>"
+msgstr ""
+
+#: cp/parser.c:22171
+#, gcc-internal-format
+msgid "expected %<namespace%>"
+msgstr ""
+
+#: cp/parser.c:22174
+#, gcc-internal-format
+msgid "expected %<using%>"
+msgstr ""
+
+#: cp/parser.c:22177
+#, gcc-internal-format
+msgid "expected %<asm%>"
+msgstr ""
+
+#: cp/parser.c:22180
+#, gcc-internal-format
+msgid "expected %<try%>"
+msgstr ""
+
+#: cp/parser.c:22183
+#, gcc-internal-format
+msgid "expected %<catch%>"
+msgstr ""
+
+#: cp/parser.c:22186
+#, gcc-internal-format
+msgid "expected %<throw%>"
+msgstr ""
+
+#: cp/parser.c:22189
+#, gcc-internal-format
+msgid "expected %<__label__%>"
+msgstr ""
+
+#: cp/parser.c:22192
+#, gcc-internal-format
+msgid "expected %<@try%>"
+msgstr ""
+
+#: cp/parser.c:22195
+#, gcc-internal-format
+msgid "expected %<@synchronized%>"
+msgstr ""
+
+#: cp/parser.c:22198
+#, gcc-internal-format
+msgid "expected %<@throw%>"
+msgstr ""
+
+#: cp/parser.c:22201
+#, gcc-internal-format
+msgid "expected %<__transaction_atomic%>"
+msgstr ""
+
+#: cp/parser.c:22204
+#, gcc-internal-format
+msgid "expected %<__transaction_relaxed%>"
+msgstr ""
+
+#: cp/parser.c:22235
+#, gcc-internal-format
+msgid "expected %<::%>"
+msgstr ""
+
+#: cp/parser.c:22247
+#, gcc-internal-format
+msgid "expected %<...%>"
+msgstr ""
+
+#: cp/parser.c:22250
+#, gcc-internal-format
+msgid "expected %<*%>"
+msgstr ""
+
+#: cp/parser.c:22253
+#, gcc-internal-format
+msgid "expected %<~%>"
+msgstr ""
+
+#: cp/parser.c:22259
+#, gcc-internal-format
+msgid "expected %<:%> or %<::%>"
+msgstr ""
+
+#: cp/parser.c:22287
+#, gcc-internal-format
+msgid "expected %<class%>, %<typename%>, or %<template%>"
+msgstr ""
+
+#: cp/parser.c:22525
+#, gcc-internal-format
+msgid "%qs tag used in naming %q#T"
+msgstr ""
+
+#: cp/parser.c:22530
+#, gcc-internal-format
+msgid "%q#T was previously declared here"
+msgstr ""
+
+#: cp/parser.c:22549
+#, gcc-internal-format
+msgid "%qD redeclared with different access"
+msgstr ""
+
+#: cp/parser.c:22568
+#, gcc-internal-format
+msgid "%<template%> (as a disambiguator) is only allowed within templates"
+msgstr ""
+
+#: cp/parser.c:22801
+#, gcc-internal-format
+msgid "file ends in default argument"
+msgstr ""
+
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
+#, gcc-internal-format
+msgid "misplaced %<@%D%> Objective-C++ construct"
+msgstr ""
+
+#: cp/parser.c:23127
+#, gcc-internal-format
+msgid "objective-c++ message argument(s) are expected"
+msgstr ""
+
+#: cp/parser.c:23156
+#, gcc-internal-format
+msgid "%<@encode%> must specify a type as an argument"
+msgstr ""
+
+#: cp/parser.c:23532
+#, gcc-internal-format
+msgid "invalid Objective-C++ selector name"
+msgstr ""
+
+#: cp/parser.c:23607 cp/parser.c:23625
+#, gcc-internal-format
+msgid "objective-c++ method declaration is expected"
+msgstr ""
+
+#: cp/parser.c:23619 cp/parser.c:23684
+#, gcc-internal-format
+msgid "method attributes must be specified at the end"
+msgstr ""
+
+#: cp/parser.c:23727
+#, gcc-internal-format
+msgid "stray %qs between Objective-C++ methods"
+msgstr ""
+
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
+#, gcc-internal-format
+msgid "invalid type for instance variable"
+msgstr ""
+
+#: cp/parser.c:24061
+#, gcc-internal-format
+msgid "identifier expected after %<@protocol%>"
+msgstr ""
+
+#: cp/parser.c:24232
+#, gcc-internal-format
+msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
+msgstr ""
+
+#: cp/parser.c:24239
+#, gcc-internal-format
+msgid "prefix attributes are ignored before %<@%D%>"
+msgstr ""
+
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
+#, gcc-internal-format
+msgid "invalid type for property"
+msgstr ""
+
+#: cp/parser.c:26256
+#, gcc-internal-format
+msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
+msgstr ""
+
+#: cp/parser.c:26423 cp/pt.c:12731
+#, gcc-internal-format
+msgid "iteration variable %qD should not be reduction"
+msgstr ""
+
+#: cp/parser.c:26491
+#, gcc-internal-format
+msgid "not enough collapsed for loops"
+msgstr ""
+
+#: cp/parser.c:27049 cp/semantics.c:5019
+#, gcc-internal-format
+msgid "%<__transaction_relaxed%> without transactional memory support enabled"
+msgstr ""
+
+#: cp/parser.c:27051 cp/semantics.c:5021
+#, gcc-internal-format
+msgid "%<__transaction_atomic%> without transactional memory support enabled"
+msgstr ""
+
+#: cp/parser.c:27248
+#, gcc-internal-format
+msgid "junk at end of %<#pragma GCC pch_preprocess%>"
+msgstr ""
+
+#: cp/parser.c:27427
+#, gcc-internal-format
+msgid "inter-module optimizations not implemented for C++"
+msgstr ""
+
+#: cp/pt.c:287
+#, gcc-internal-format
+msgid "data member %qD cannot be a member template"
+msgstr ""
+
+#: cp/pt.c:299
+#, gcc-internal-format
+msgid "invalid member template declaration %qD"
+msgstr ""
+
+#: cp/pt.c:666
+#, gcc-internal-format
+msgid "explicit specialization in non-namespace scope %qD"
+msgstr ""
+
+#: cp/pt.c:680
+#, gcc-internal-format
+msgid "enclosing class templates are not explicitly specialized"
+msgstr ""
+
+#: cp/pt.c:766
+#, gcc-internal-format
+msgid "specialization of %qD must appear at namespace scope"
+msgstr ""
+
+#: cp/pt.c:774
+#, gcc-internal-format
+msgid "specialization of %qD in different namespace"
+msgstr ""
+
+#: cp/pt.c:775 cp/pt.c:892
+#, gcc-internal-format
+msgid " from definition of %q+#D"
+msgstr ""
+
+#: cp/pt.c:792
+#, gcc-internal-format
+msgid "explicit instantiation of %qD in namespace %qD (which does not enclose namespace %qD)"
+msgstr ""
+
+#: cp/pt.c:810
+#, gcc-internal-format
+msgid "name of class shadows template template parameter %qD"
+msgstr ""
+
+#: cp/pt.c:851
+#, gcc-internal-format
+msgid "specialization of %qT after instantiation"
+msgstr ""
+
+#: cp/pt.c:855
+#, gcc-internal-format
+msgid "partial specialization of alias template %qD"
+msgstr ""
+
+#: cp/pt.c:891
+#, gcc-internal-format
+msgid "specializing %q#T in different namespace"
+msgstr ""
+
+#. But if we've had an implicit instantiation, that's a
+#. problem ([temp.expl.spec]/6).
+#: cp/pt.c:930
+#, gcc-internal-format
+msgid "specialization %qT after instantiation %qT"
+msgstr ""
+
+#: cp/pt.c:947
+#, gcc-internal-format
+msgid "template specialization of %qD not allowed by ISO C++"
+msgstr ""
+
+#: cp/pt.c:951
+#, gcc-internal-format
+msgid "explicit specialization of non-template %qT"
+msgstr ""
+
+#: cp/pt.c:1368
+#, gcc-internal-format
+msgid "specialization of %qD after instantiation"
+msgstr ""
+
+#: cp/pt.c:1759
+#, gcc-internal-format
+msgid "%s %+#D"
+msgstr ""
+
+#: cp/pt.c:1843
+#, gcc-internal-format
+msgid "%qD is not a function template"
+msgstr ""
+
+#: cp/pt.c:2066
+#, gcc-internal-format
+msgid "template-id %qD for %q+D does not match any template declaration"
+msgstr ""
+
+#: cp/pt.c:2069
+#, gcc-internal-format
+msgid "saw %d %<template<>%>, need %d for specializing a member function template"
+msgstr ""
+
+#: cp/pt.c:2078
+#, gcc-internal-format
+msgid "ambiguous template specialization %qD for %q+D"
+msgstr ""
+
+#. This case handles bogus declarations like template <>
+#. template <class T> void f<int>();
+#: cp/pt.c:2314 cp/pt.c:2368
+#, gcc-internal-format
+msgid "template-id %qD in declaration of primary template"
+msgstr ""
+
+#: cp/pt.c:2327
+#, gcc-internal-format
+msgid "template parameter list used in explicit instantiation"
+msgstr ""
+
+#: cp/pt.c:2333
+#, gcc-internal-format
+msgid "definition provided for explicit instantiation"
+msgstr ""
+
+#: cp/pt.c:2341
+#, gcc-internal-format
+msgid "too many template parameter lists in declaration of %qD"
+msgstr ""
+
+#: cp/pt.c:2344
+#, gcc-internal-format
+msgid "too few template parameter lists in declaration of %qD"
+msgstr ""
+
+#: cp/pt.c:2346
+#, gcc-internal-format
+msgid "explicit specialization of %qD must be introduced by %<template <>%>"
+msgstr ""
+
+#: cp/pt.c:2365
+#, gcc-internal-format
+msgid "function template partial specialization %qD is not allowed"
+msgstr ""
+
+#: cp/pt.c:2397
+#, gcc-internal-format
+msgid "default argument specified in explicit specialization"
+msgstr ""
+
+#: cp/pt.c:2427
+#, gcc-internal-format
+msgid "%qD is not a template function"
+msgstr ""
+
+#: cp/pt.c:2435
+#, gcc-internal-format
+msgid "%qD is not declared in %qD"
+msgstr ""
+
+#. From [temp.expl.spec]:
+#.
+#. If such an explicit specialization for the member
+#. of a class template names an implicitly-declared
+#. special member function (clause _special_), the
+#. program is ill-formed.
+#.
+#. Similar language is found in [temp.explicit].
+#: cp/pt.c:2497
+#, gcc-internal-format
+msgid "specialization of implicitly-declared special member function"
+msgstr ""
+
+#: cp/pt.c:2541
+#, gcc-internal-format
+msgid "no member function %qD declared in %qT"
+msgstr ""
+
+#: cp/pt.c:3187
+#, gcc-internal-format
+msgid "base initializer expansion %<%T%> contains no parameter packs"
+msgstr ""
+
+#: cp/pt.c:3248
+#, gcc-internal-format
+msgid "expansion pattern %<%T%> contains no argument packs"
+msgstr ""
+
+#: cp/pt.c:3250
+#, gcc-internal-format
+msgid "expansion pattern %<%E%> contains no argument packs"
+msgstr ""
+
+#: cp/pt.c:3293
+#, gcc-internal-format
+msgid "parameter packs not expanded with %<...%>:"
+msgstr ""
+
+#: cp/pt.c:3308 cp/pt.c:4386
+#, gcc-internal-format
+msgid " %qD"
+msgstr ""
+
+#: cp/pt.c:3310
+#, gcc-internal-format
+msgid " <anonymous>"
+msgstr ""
+
+#: cp/pt.c:3427
+#, gcc-internal-format
+msgid "declaration of %q+#D"
+msgstr ""
+
+#: cp/pt.c:3428
+#, gcc-internal-format
+msgid " shadows template parm %q+#D"
+msgstr ""
+
+#: cp/pt.c:4382
+#, gcc-internal-format
+msgid "template parameters not used in partial specialization:"
+msgstr ""
+
+#: cp/pt.c:4400
+#, gcc-internal-format
+msgid "partial specialization %qT does not specialize any template arguments"
+msgstr ""
+
+#: cp/pt.c:4445
+#, gcc-internal-format
+msgid "parameter pack argument %qE must be at the end of the template argument list"
+msgstr ""
+
+#: cp/pt.c:4448
+#, gcc-internal-format
+msgid "parameter pack argument %qT must be at the end of the template argument list"
+msgstr ""
+
+#: cp/pt.c:4467
+#, gcc-internal-format
+msgid "template argument %qE involves template parameter(s)"
+msgstr ""
+
+#: cp/pt.c:4513
+#, gcc-internal-format
+msgid "type %qT of template argument %qE depends on a template parameter"
+msgid_plural "type %qT of template argument %qE depends on template parameters"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: cp/pt.c:4543
+#, gcc-internal-format
+msgid "partial specialization of %qT after instantiation of %qT"
+msgstr ""
+
+#: cp/pt.c:4636
+#, gcc-internal-format
+msgid "no default argument for %qD"
+msgstr ""
+
+#: cp/pt.c:4657
+#, gcc-internal-format
+msgid "parameter pack %qE must be at the end of the template parameter list"
+msgstr ""
+
+#: cp/pt.c:4660
+#, gcc-internal-format
+msgid "parameter pack %qT must be at the end of the template parameter list"
+msgstr ""
+
+#: cp/pt.c:4697
+#, gcc-internal-format
+msgid "default template arguments may not be used in function template friend re-declaration"
+msgstr ""
+
+#: cp/pt.c:4700
+#, gcc-internal-format
+msgid "default template arguments may not be used in function template friend declarations"
+msgstr ""
+
+#: cp/pt.c:4703
+#, gcc-internal-format
+msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
+msgstr ""
+
+#: cp/pt.c:4706
+#, gcc-internal-format
+msgid "default template arguments may not be used in partial specializations"
+msgstr ""
+
+#: cp/pt.c:4709 cp/pt.c:4760
+#, gcc-internal-format
+msgid "default argument for template parameter for class enclosing %qD"
+msgstr ""
+
+#: cp/pt.c:4853
+#, gcc-internal-format
+msgid "template class without a name"
+msgstr ""
+
+#. [temp.mem]
+#.
+#. A destructor shall not be a member template.
+#: cp/pt.c:4863
+#, gcc-internal-format
+msgid "destructor %qD declared as member template"
+msgstr ""
+
+#. [basic.stc.dynamic.allocation]
+#.
+#. An allocation function can be a function
+#. template. ... Template allocation functions shall
+#. have two or more parameters.
+#: cp/pt.c:4878
+#, gcc-internal-format
+msgid "invalid template declaration of %qD"
+msgstr ""
+
+#: cp/pt.c:5002
+#, gcc-internal-format
+msgid "template definition of non-template %q#D"
+msgstr ""
+
+#: cp/pt.c:5045
+#, gcc-internal-format
+msgid "expected %d levels of template parms for %q#D, got %d"
+msgstr ""
+
+#: cp/pt.c:5057
+#, gcc-internal-format
+msgid "got %d template parameters for %q#D"
+msgstr ""
+
+#: cp/pt.c:5060
+#, gcc-internal-format
+msgid "got %d template parameters for %q#T"
+msgstr ""
+
+#: cp/pt.c:5062
+#, gcc-internal-format, gfc-internal-format
+msgid " but %d required"
+msgstr ""
+
+#: cp/pt.c:5083
+#, gcc-internal-format
+msgid "template arguments to %qD do not match original template %qD"
+msgstr ""
+
+#: cp/pt.c:5087
+#, gcc-internal-format
+msgid "use template<> for an explicit specialization"
+msgstr ""
+
+#: cp/pt.c:5188
+#, gcc-internal-format
+msgid "%qT is not a template type"
+msgstr ""
+
+#: cp/pt.c:5201
+#, gcc-internal-format
+msgid "template specifiers not specified in declaration of %qD"
+msgstr ""
+
+#: cp/pt.c:5212
+#, gcc-internal-format, gfc-internal-format
+msgid "redeclared with %d template parameter"
+msgid_plural "redeclared with %d template parameters"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: cp/pt.c:5216
+#, gcc-internal-format
+msgid "previous declaration %q+D used %d template parameter"
+msgid_plural "previous declaration %q+D used %d template parameters"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: cp/pt.c:5253
+#, gcc-internal-format
+msgid "template parameter %q+#D"
+msgstr ""
+
+#: cp/pt.c:5254
+#, gcc-internal-format
+msgid "redeclared here as %q#D"
+msgstr ""
+
+#. We have in [temp.param]:
+#.
+#. A template-parameter may not be given default arguments
+#. by two different declarations in the same scope.
+#: cp/pt.c:5264
+#, gcc-internal-format
+msgid "redefinition of default argument for %q#D"
+msgstr ""
+
+#: cp/pt.c:5266
+#, gcc-internal-format
+msgid "original definition appeared here"
+msgstr ""
+
+#: cp/pt.c:5384
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
+msgstr ""
+
+#: cp/pt.c:5388
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
+msgstr ""
+
+#: cp/pt.c:5412 cp/pt.c:6013
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT"
+msgstr ""
+
+#: cp/pt.c:5414
+#, gcc-internal-format
+msgid "it must be a pointer-to-member of the form %<&X::Y%>"
+msgstr ""
+
+#: cp/pt.c:5465
+#, gcc-internal-format
+msgid " couldn't deduce template parameter %qD"
+msgstr ""
+
+#: cp/pt.c:5480
+#, gcc-internal-format
+msgid " types %qT and %qT have incompatible cv-qualifiers"
+msgstr ""
+
+#: cp/pt.c:5489
+#, gcc-internal-format
+msgid " mismatched types %qT and %qT"
+msgstr ""
+
+#: cp/pt.c:5498
+#, gcc-internal-format
+msgid " template parameter %qD is not a parameter pack, but argument %qD is"
+msgstr ""
+
+#: cp/pt.c:5509
+#, gcc-internal-format
+msgid " template argument %qE does not match pointer-to-member constant %qE"
+msgstr ""
+
+#: cp/pt.c:5519
+#, gcc-internal-format
+msgid " %qE is not equivalent to %qE"
+msgstr ""
+
+#: cp/pt.c:5528
+#, gcc-internal-format
+msgid " inconsistent parameter pack deduction with %qT and %qT"
+msgstr ""
+
+#: cp/pt.c:5540
+#, gcc-internal-format
+msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
+msgstr ""
+
+#: cp/pt.c:5544
+#, gcc-internal-format
+msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
+msgstr ""
+
+#: cp/pt.c:5555
+#, gcc-internal-format
+msgid " variable-sized array type %qT is not a valid template argument"
+msgstr ""
+
+#: cp/pt.c:5566
+#, gcc-internal-format
+msgid " member function type %qT is not a valid template argument"
+msgstr ""
+
+#: cp/pt.c:5599
+#, gcc-internal-format
+msgid " cannot convert %qE (type %qT) to type %qT"
+msgstr ""
+
+#: cp/pt.c:5612
+#, gcc-internal-format
+msgid " %qT is an ambiguous base class of %qT"
+msgstr ""
+
+#: cp/pt.c:5616
+#, gcc-internal-format
+msgid " %qT is not derived from %qT"
+msgstr ""
+
+#: cp/pt.c:5627
+#, gcc-internal-format
+msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
+msgstr ""
+
+#: cp/pt.c:5637
+#, gcc-internal-format
+msgid " can't deduce a template for %qT from non-template type %qT"
+msgstr ""
+
+#: cp/pt.c:5647
+#, gcc-internal-format
+msgid " template argument %qE does not match %qD"
+msgstr ""
+
+#: cp/pt.c:5656
+#, gcc-internal-format
+msgid " could not resolve address from overloaded function %qE"
+msgstr ""
+
+#: cp/pt.c:5695
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
+msgstr ""
+
+#: cp/pt.c:5832
+#, gcc-internal-format
+msgid "in template argument for type %qT "
+msgstr ""
+
+#: cp/pt.c:5874
+#, gcc-internal-format
+msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
+msgstr ""
+
+#: cp/pt.c:5892
+#, gcc-internal-format
+msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
+msgstr ""
+
+#: cp/pt.c:5899
+#, gcc-internal-format
+msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
+msgstr ""
+
+#: cp/pt.c:5906
+#, gcc-internal-format
+msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
+msgstr ""
+
+#: cp/pt.c:5936
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
+msgstr ""
+
+#: cp/pt.c:5943
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
+msgstr ""
+
+#: cp/pt.c:5960
+#, gcc-internal-format
+msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
+msgstr ""
+
+#: cp/pt.c:5969
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
+msgstr ""
+
+#: cp/pt.c:5977
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
+msgstr ""
+
+#: cp/pt.c:6014
+#, gcc-internal-format
+msgid "it must be the address of a function with external linkage"
+msgstr ""
+
+#: cp/pt.c:6028
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because it is a pointer"
+msgstr ""
+
+#: cp/pt.c:6030
+#, gcc-internal-format
+msgid "try using %qE instead"
+msgstr ""
+
+#: cp/pt.c:6068 cp/pt.c:6097
+#, gcc-internal-format
+msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
+msgstr ""
+
+#: cp/pt.c:6074
+#, gcc-internal-format
+msgid "standard conversions are not allowed in this context"
+msgstr ""
+
+#: cp/pt.c:6384
+#, gcc-internal-format
+msgid "ignoring attributes on template argument %qT"
+msgstr ""
+
+#: cp/pt.c:6442
+#, gcc-internal-format
+msgid "injected-class-name %qD used as template template argument"
+msgstr ""
+
+#: cp/pt.c:6471
+#, gcc-internal-format
+msgid "invalid use of destructor %qE as a type"
+msgstr ""
+
+#: cp/pt.c:6476
+#, gcc-internal-format
+msgid "to refer to a type member of a template parameter, use %<typename %E%>"
+msgstr ""
+
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
+#, gcc-internal-format
+msgid "type/value mismatch at argument %d in template parameter list for %qD"
+msgstr ""
+
+#: cp/pt.c:6496
+#, gcc-internal-format
+msgid " expected a constant of type %qT, got %qT"
+msgstr ""
+
+#: cp/pt.c:6500
+#, gcc-internal-format
+msgid " expected a class template, got %qE"
+msgstr ""
+
+#: cp/pt.c:6502
+#, gcc-internal-format
+msgid " expected a type, got %qE"
+msgstr ""
+
+#: cp/pt.c:6515
+#, gcc-internal-format
+msgid " expected a type, got %qT"
+msgstr ""
+
+#: cp/pt.c:6517
+#, gcc-internal-format
+msgid " expected a class template, got %qT"
+msgstr ""
+
+#: cp/pt.c:6562
+#, gcc-internal-format
+msgid " expected a template of type %qD, got %qT"
+msgstr ""
+
+#. Not sure if this is reachable, but it doesn't hurt
+#. to be robust.
+#: cp/pt.c:6595
+#, gcc-internal-format
+msgid "type mismatch in nontype parameter pack"
+msgstr ""
+
+#: cp/pt.c:6617
+#, gcc-internal-format
+msgid "could not convert template argument %qE to %qT"
+msgstr ""
+
+#: cp/pt.c:6683 cp/pt.c:6847
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong number of template arguments (%d, should be %d)"
+msgstr ""
+
+#: cp/pt.c:6843
+#, gcc-internal-format, gfc-internal-format
+msgid "wrong number of template arguments (%d, should be %d or more)"
+msgstr ""
+
+#: cp/pt.c:6851
+#, gcc-internal-format
+msgid "provided for %q+D"
+msgstr ""
+
+#: cp/pt.c:6932
+#, gcc-internal-format, gfc-internal-format
+msgid "template argument %d is invalid"
+msgstr ""
+
+#: cp/pt.c:7121
+#, gcc-internal-format
+msgid "%q#D is not a function template"
+msgstr ""
+
+#: cp/pt.c:7285
+#, gcc-internal-format
+msgid "non-template type %qT used as a template"
+msgstr ""
+
+#: cp/pt.c:7287
+#, gcc-internal-format
+msgid "for template declaration %q+D"
+msgstr ""
+
+#: cp/pt.c:8092
+msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
+msgstr ""
+
+#: cp/pt.c:8096
+#, gcc-internal-format
+msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
+msgstr ""
+
+#: cp/pt.c:9443
+#, gcc-internal-format
+msgid "mismatched argument pack lengths while expanding %<%T%>"
+msgstr ""
+
+#: cp/pt.c:9447
+#, gcc-internal-format
+msgid "mismatched argument pack lengths while expanding %<%E%>"
+msgstr ""
+
+#: cp/pt.c:10573
+#, gcc-internal-format
+msgid "instantiation of %q+D as type %qT"
+msgstr ""
+
+#. It may seem that this case cannot occur, since:
+#.
+#. typedef void f();
+#. void g() { f x; }
+#.
+#. declares a function, not a variable. However:
+#.
+#. typedef void f();
+#. template <typename T> void g() { T t; }
+#. template void g<f>();
+#.
+#. is an attempt to declare a variable with function
+#. type.
+#: cp/pt.c:10731
+#, gcc-internal-format
+msgid "variable %qD has function type"
+msgstr ""
+
+#: cp/pt.c:10900
+#, gcc-internal-format
+msgid "invalid parameter type %qT"
+msgstr ""
+
+#: cp/pt.c:10902
+#, gcc-internal-format
+msgid "in declaration %q+D"
+msgstr ""
+
+#: cp/pt.c:10979
+#, gcc-internal-format
+msgid "function returning an array"
+msgstr ""
+
+#: cp/pt.c:10981
+#, gcc-internal-format
+msgid "function returning a function"
+msgstr ""
+
+#: cp/pt.c:11011
+#, gcc-internal-format
+msgid "creating pointer to member function of non-class type %qT"
+msgstr ""
+
+#: cp/pt.c:11552
+#, gcc-internal-format
+msgid "forming reference to void"
+msgstr ""
+
+#: cp/pt.c:11554
+#, gcc-internal-format
+msgid "forming pointer to reference type %qT"
+msgstr ""
+
+#: cp/pt.c:11556
+#, gcc-internal-format
+msgid "forming reference to reference type %qT"
+msgstr ""
+
+#: cp/pt.c:11605
+#, gcc-internal-format
+msgid "creating pointer to member of non-class type %qT"
+msgstr ""
+
+#: cp/pt.c:11611
+#, gcc-internal-format
+msgid "creating pointer to member reference type %qT"
+msgstr ""
+
+#: cp/pt.c:11617
+#, gcc-internal-format
+msgid "creating pointer to member of type void"
+msgstr ""
+
+#: cp/pt.c:11679
+#, gcc-internal-format
+msgid "creating array of %qT"
+msgstr ""
+
+#: cp/pt.c:11685
+#, gcc-internal-format
+msgid "creating array of %qT, which is an abstract class type"
+msgstr ""
+
+#: cp/pt.c:11714
+#, gcc-internal-format
+msgid "%qT is not a class, struct, or union type"
+msgstr ""
+
+#: cp/pt.c:11751
+#, gcc-internal-format
+msgid "%qT resolves to %qT, which is not an enumeration type"
+msgstr ""
+
+#: cp/pt.c:11759
+#, gcc-internal-format
+msgid "%qT resolves to %qT, which is is not a class type"
+msgstr ""
+
+#: cp/pt.c:11876
+#, gcc-internal-format
+msgid "use of %qs in template"
+msgstr ""
+
+#: cp/pt.c:12016
+#, gcc-internal-format
+msgid "qualifying type %qT does not match destructor name ~%qT"
+msgstr ""
+
+#: cp/pt.c:12031
+#, gcc-internal-format
+msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
+msgstr ""
+
+#: cp/pt.c:12033
+#, gcc-internal-format
+msgid "say %<typename %E%> if a type is meant"
+msgstr ""
+
+#: cp/pt.c:12186
+#, gcc-internal-format
+msgid "using invalid field %qD"
+msgstr ""
+
+#: cp/pt.c:12541 cp/pt.c:13351
+#, gcc-internal-format
+msgid "invalid use of pack expansion expression"
+msgstr ""
+
+#: cp/pt.c:12545 cp/pt.c:13355
+#, gcc-internal-format
+msgid "use %<...%> to expand argument pack"
+msgstr ""
+
+#: cp/pt.c:13931
+#, gcc-internal-format
+msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
+msgstr ""
+
+#: cp/pt.c:13940
+#, gcc-internal-format
+msgid "declarations in dependent base %qT are not found by unqualified lookup"
+msgstr ""
+
+#: cp/pt.c:13945
+#, gcc-internal-format
+msgid "use %<this->%D%> instead"
+msgstr ""
+
+#: cp/pt.c:13948
+#, gcc-internal-format
+msgid "use %<%T::%D%> instead"
+msgstr ""
+
+#: cp/pt.c:13952
+#, gcc-internal-format
+msgid "%q+D declared here, later in the translation unit"
+msgstr ""
+
+#: cp/pt.c:14185
+#, gcc-internal-format
+msgid "%qT is not a class or namespace"
+msgstr ""
+
+#: cp/pt.c:14188
+#, gcc-internal-format
+msgid "%qD is not a class or namespace"
+msgstr ""
+
+#: cp/pt.c:14480
+#, gcc-internal-format
+msgid "%qT is/uses anonymous type"
+msgstr ""
+
+#: cp/pt.c:14482
+#, gcc-internal-format
+msgid "template argument for %qD uses local type %qT"
+msgstr ""
+
+#: cp/pt.c:14492
+#, gcc-internal-format
+msgid "%qT is a variably modified type"
+msgstr ""
+
+#: cp/pt.c:14503
+#, gcc-internal-format
+msgid "integral expression %qE is not constant"
+msgstr ""
+
+#: cp/pt.c:14521
+#, gcc-internal-format
+msgid " trying to instantiate %qD"
+msgstr ""
+
+#: cp/pt.c:17842
+#, gcc-internal-format
+msgid "ambiguous class template instantiation for %q#T"
+msgstr ""
+
+#: cp/pt.c:17846
+#, gcc-internal-format
+msgid "%s %+#T"
+msgstr ""
+
+#: cp/pt.c:17870 cp/pt.c:17953
+#, gcc-internal-format
+msgid "explicit instantiation of non-template %q#D"
+msgstr ""
+
+#: cp/pt.c:17885
+#, gcc-internal-format
+msgid "%qD is not a static data member of a class template"
+msgstr ""
+
+#: cp/pt.c:17891 cp/pt.c:17948
+#, gcc-internal-format
+msgid "no matching template for %qD found"
+msgstr ""
+
+#: cp/pt.c:17896
+#, gcc-internal-format
+msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
+msgstr ""
+
+#: cp/pt.c:17904
+#, gcc-internal-format
+msgid "explicit instantiation of %q#D"
+msgstr ""
+
+#: cp/pt.c:17940
+#, gcc-internal-format
+msgid "duplicate explicit instantiation of %q#D"
+msgstr ""
+
+#: cp/pt.c:17963 cp/pt.c:18060
+#, gcc-internal-format
+msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
+msgstr ""
+
+#: cp/pt.c:17968 cp/pt.c:18077
+#, gcc-internal-format
+msgid "storage class %qD applied to template instantiation"
+msgstr ""
+
+#: cp/pt.c:18036
+#, gcc-internal-format
+msgid "explicit instantiation of non-class template %qD"
+msgstr ""
+
+#: cp/pt.c:18038
+#, gcc-internal-format
+msgid "explicit instantiation of non-template type %qT"
+msgstr ""
+
+#: cp/pt.c:18047
+#, gcc-internal-format
+msgid "explicit instantiation of %q#T before definition of template"
+msgstr ""
+
+#: cp/pt.c:18065
+#, gcc-internal-format
+msgid "ISO C++ forbids the use of %qE on explicit instantiations"
+msgstr ""
+
+#: cp/pt.c:18111
+#, gcc-internal-format
+msgid "duplicate explicit instantiation of %q#T"
+msgstr ""
+
+#. [temp.explicit]
+#.
+#. The definition of a non-exported function template, a
+#. non-exported member function template, or a non-exported
+#. member function or static data member of a class template
+#. shall be present in every translation unit in which it is
+#. explicitly instantiated.
+#: cp/pt.c:18665
+#, gcc-internal-format
+msgid "explicit instantiation of %qD but no definition available"
+msgstr ""
+
+#: cp/pt.c:18841
+#, gcc-internal-format
+msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
+msgstr ""
+
+#: cp/pt.c:19221
+#, gcc-internal-format
+msgid "invalid template non-type parameter"
+msgstr ""
+
+#: cp/pt.c:19223
+#, gcc-internal-format
+msgid "%q#T is not a valid type for a template non-type parameter"
+msgstr ""
+
+#: cp/pt.c:20309
+#, gcc-internal-format
+msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
+msgstr ""
+
+#: cp/pt.c:20367
+#, gcc-internal-format
+msgid "variable %q#D with %<auto%> type used in its own initializer"
+msgstr ""
+
+#. If type is error_mark_node a diagnostic must have been
+#. emitted by now. Also, having a mention to '<type error>'
+#. in the diagnostic is not really useful to the user.
+#: cp/pt.c:20399
+#, gcc-internal-format
+msgid "unable to deduce %qT from %qE"
+msgstr ""
+
+#: cp/pt.c:20410
+#, gcc-internal-format
+msgid "inconsistent deduction for %qT: %qT and then %qT"
+msgstr ""
+
+#: cp/repo.c:119
+#, gcc-internal-format
+msgid "-frepo must be used with -c"
+msgstr ""
+
+#: cp/repo.c:209
+#, gcc-internal-format, gfc-internal-format
+msgid "mysterious repository information in %s"
+msgstr ""
+
+#: cp/repo.c:227
+#, gcc-internal-format
+msgid "can%'t create repository information file %qs"
+msgstr ""
+
+#: cp/rtti.c:288
+#, gcc-internal-format
+msgid "cannot use typeid with -fno-rtti"
+msgstr ""
+
+#: cp/rtti.c:294
+#, gcc-internal-format
+msgid "must #include <typeinfo> before using typeid"
+msgstr ""
+
+#: cp/rtti.c:398
+#, gcc-internal-format
+msgid "cannot create type information for type %qT because it involves types of variable size"
+msgstr ""
+
+#: cp/rtti.c:666 cp/rtti.c:681
+#, gcc-internal-format
+msgid "dynamic_cast of %q#D to %q#T can never succeed"
+msgstr ""
+
+#: cp/rtti.c:692
+#, gcc-internal-format
+msgid "%<dynamic_cast%> not permitted with -fno-rtti"
+msgstr ""
+
+#: cp/rtti.c:769
+#, gcc-internal-format
+msgid "cannot dynamic_cast %qE (of type %q#T) to type %q#T (%s)"
+msgstr ""
+
+#: cp/search.c:258
+#, gcc-internal-format
+msgid "%qT is an ambiguous base of %qT"
+msgstr ""
+
+#: cp/search.c:276
+#, gcc-internal-format
+msgid "%qT is an inaccessible base of %qT"
+msgstr ""
+
+#: cp/search.c:1901
+#, gcc-internal-format
+msgid "deprecated covariant return type for %q+#D"
+msgstr ""
+
+#: cp/search.c:1903 cp/search.c:1918 cp/search.c:1923 cp/search.c:1947
+#, gcc-internal-format
+msgid " overriding %q+#D"
+msgstr ""
+
+#: cp/search.c:1917
+#, gcc-internal-format
+msgid "invalid covariant return type for %q+#D"
+msgstr ""
+
+#: cp/search.c:1922
+#, gcc-internal-format
+msgid "conflicting return type specified for %q+#D"
+msgstr ""
+
+#: cp/search.c:1937
+#, gcc-internal-format
+msgid "looser throw specifier for %q+#F"
+msgstr ""
+
+#: cp/search.c:1938
+#, gcc-internal-format
+msgid " overriding %q+#F"
+msgstr ""
+
+#: cp/search.c:1946
+#, gcc-internal-format
+msgid "conflicting type attributes specified for %q+#D"
+msgstr ""
+
+#: cp/search.c:1956
+#, gcc-internal-format
+msgid "deleted function %q+D"
+msgstr ""
+
+#: cp/search.c:1957
+#, gcc-internal-format
+msgid "overriding non-deleted function %q+D"
+msgstr ""
+
+#: cp/search.c:1962
+#, gcc-internal-format
+msgid "non-deleted function %q+D"
+msgstr ""
+
+#: cp/search.c:1963
+#, gcc-internal-format
+msgid "overriding deleted function %q+D"
+msgstr ""
+
+#: cp/search.c:1969
+#, gcc-internal-format
+msgid "virtual function %q+D"
+msgstr ""
+
+#: cp/search.c:1970
+#, gcc-internal-format
+msgid "overriding final function %q+D"
+msgstr ""
+
+#. A static member function cannot match an inherited
+#. virtual member function.
+#: cp/search.c:2066
+#, gcc-internal-format
+msgid "%q+#D cannot be declared"
+msgstr ""
+
+#: cp/search.c:2067
+#, gcc-internal-format
+msgid " since %q+#D declared in base class"
+msgstr ""
+
+#: cp/semantics.c:772
+#, gcc-internal-format
+msgid "suggest explicit braces around empty body in %<do%> statement"
+msgstr ""
+
+#: cp/semantics.c:1393
+#, gcc-internal-format
+msgid "type of asm operand %qE could not be determined"
+msgstr ""
+
+#: cp/semantics.c:1451
+#, gcc-internal-format
+msgid "__label__ declarations are only allowed in function scopes"
+msgstr ""
+
+#: cp/semantics.c:1554
+#, gcc-internal-format
+msgid "invalid use of member %q+D in static member function"
+msgstr ""
+
+#: cp/semantics.c:1556
+#, gcc-internal-format
+msgid "invalid use of non-static data member %q+D"
+msgstr ""
+
+#: cp/semantics.c:1557
+#, gcc-internal-format
+msgid "from this location"
+msgstr ""
+
+#: cp/semantics.c:2170
+#, gcc-internal-format
+msgid "arguments to destructor are not allowed"
+msgstr ""
+
+#: cp/semantics.c:2251
+#, gcc-internal-format
+msgid "%<this%> is unavailable for static member functions"
+msgstr ""
+
+#: cp/semantics.c:2257
+#, gcc-internal-format
+msgid "invalid use of %<this%> in non-member function"
+msgstr ""
+
+#: cp/semantics.c:2259
+#, gcc-internal-format
+msgid "invalid use of %<this%> at top level"
+msgstr ""
+
+#: cp/semantics.c:2283
+#, gcc-internal-format
+msgid "invalid qualifying scope in pseudo-destructor name"
+msgstr ""
+
+#: cp/semantics.c:2288 cp/typeck.c:2392
+#, gcc-internal-format
+msgid "qualified type %qT does not match destructor name ~%qT"
+msgstr ""
+
+#: cp/semantics.c:2310
+#, gcc-internal-format
+msgid "%qE is not of type %qT"
+msgstr ""
+
+#: cp/semantics.c:2351
+#, gcc-internal-format
+msgid "compound literal of non-object type %qT"
+msgstr ""
+
+#: cp/semantics.c:2463
+#, gcc-internal-format
+msgid "template type parameters must use the keyword %<class%> or %<typename%>"
+msgstr ""
+
+#: cp/semantics.c:2505
+#, gcc-internal-format
+msgid "invalid use of type %qT as a default value for a template template-parameter"
+msgstr ""
+
+#: cp/semantics.c:2508
+#, gcc-internal-format
+msgid "invalid default argument for a template template parameter"
+msgstr ""
+
+#: cp/semantics.c:2525
+#, gcc-internal-format
+msgid "definition of %q#T inside template parameter list"
+msgstr ""
+
+#: cp/semantics.c:2556
+#, gcc-internal-format
+msgid "invalid definition of qualified type %qT"
+msgstr ""
+
+#: cp/semantics.c:2775
+#, gcc-internal-format
+msgid "invalid base-class specification"
+msgstr ""
+
+#: cp/semantics.c:2996 cp/semantics.c:8816
+#, gcc-internal-format
+msgid "%qD is not captured"
+msgstr ""
+
+#: cp/semantics.c:3002
+#, gcc-internal-format
+msgid "use of %<auto%> variable from containing function"
+msgstr ""
+
+#: cp/semantics.c:3003
+#, gcc-internal-format
+msgid "use of parameter from containing function"
+msgstr ""
+
+#: cp/semantics.c:3004
+#, gcc-internal-format
+msgid " %q+#D declared here"
+msgstr ""
+
+#: cp/semantics.c:3015
+#, gcc-internal-format
+msgid "use of parameter %qD outside function body"
+msgstr ""
+
+#: cp/semantics.c:3052
+#, gcc-internal-format
+msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
+msgstr ""
+
+#: cp/semantics.c:3212
+#, gcc-internal-format
+msgid "use of namespace %qD as expression"
+msgstr ""
+
+#: cp/semantics.c:3217
+#, gcc-internal-format
+msgid "use of class template %qT as expression"
+msgstr ""
+
+#. Ambiguous reference to base members.
+#: cp/semantics.c:3223
+#, gcc-internal-format
+msgid "request for member %qD is ambiguous in multiple inheritance lattice"
+msgstr ""
+
+#: cp/semantics.c:3246
+#, gcc-internal-format
+msgid "%qD cannot appear in a constant-expression"
+msgstr ""
+
+#: cp/semantics.c:3367
+#, gcc-internal-format
+msgid "type of %qE is unknown"
+msgstr ""
+
+#: cp/semantics.c:3395
+#, gcc-internal-format
+msgid "%qT is not an enumeration type"
+msgstr ""
+
+#. Parameter packs can only be used in templates
+#: cp/semantics.c:3543
+#, gcc-internal-format
+msgid "Parameter pack __bases only valid in template declaration"
+msgstr ""
+
+#: cp/semantics.c:3563
+#, gcc-internal-format
+msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
+msgstr ""
+
+#: cp/semantics.c:3574
+#, gcc-internal-format
+msgid "cannot apply %<offsetof%> to member function %qD"
+msgstr ""
+
+#: cp/semantics.c:3993
+#, gcc-internal-format
+msgid "%qD is not a variable in clause %qs"
+msgstr ""
+
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
+#, gcc-internal-format
+msgid "%qD appears more than once in data clauses"
+msgstr ""
+
+#: cp/semantics.c:4016
+#, gcc-internal-format
+msgid "%qD is not a variable in clause %<firstprivate%>"
+msgstr ""
+
+#: cp/semantics.c:4038
+#, gcc-internal-format
+msgid "%qD is not a variable in clause %<lastprivate%>"
+msgstr ""
+
+#: cp/semantics.c:4080
+#, gcc-internal-format
+msgid "num_threads expression must be integral"
+msgstr ""
+
+#: cp/semantics.c:4101
+#, gcc-internal-format
+msgid "schedule chunk size expression must be integral"
+msgstr ""
+
+#: cp/semantics.c:4244
+#, gcc-internal-format
+msgid "%qE has reference type for %qs"
+msgstr ""
+
+#: cp/semantics.c:4320
+#, gcc-internal-format
+msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
+msgstr ""
+
+#: cp/semantics.c:4334
+#, gcc-internal-format
+msgid "%<threadprivate%> %qE directive not in %qT definition"
+msgstr ""
+
+#: cp/semantics.c:4479
+#, gcc-internal-format
+msgid "difference between %qE and %qD does not have integer type"
+msgstr ""
+
+#. Report the error.
+#: cp/semantics.c:5132
+#, gcc-internal-format, gfc-internal-format
+msgid "static assertion failed: %s"
+msgstr ""
+
+#: cp/semantics.c:5135
+#, gcc-internal-format
+msgid "non-constant condition for static assertion"
+msgstr ""
+
+#: cp/semantics.c:5164
+#, gcc-internal-format
+msgid "argument to decltype must be an expression"
+msgstr ""
+
+#: cp/semantics.c:5193
+#, gcc-internal-format
+msgid "decltype cannot resolve address of overloaded function"
+msgstr ""
+
+#: cp/semantics.c:5516
+#, gcc-internal-format
+msgid "__is_convertible_to"
+msgstr ""
+
+#: cp/semantics.c:5633
+#, gcc-internal-format
+msgid "the type %qT of constexpr variable %qD is not literal"
+msgstr ""
+
+#: cp/semantics.c:5703
+#, gcc-internal-format
+msgid "invalid type for parameter %d of constexpr function %q+#D"
+msgstr ""
+
+#: cp/semantics.c:5717
+#, gcc-internal-format
+msgid "invalid return type %qT of constexpr function %q+D"
+msgstr ""
+
+#: cp/semantics.c:5739
+#, gcc-internal-format
+msgid "%q#T has virtual base classes"
+msgstr ""
+
+#: cp/semantics.c:5876
+#, gcc-internal-format
+msgid "constexpr constructor does not have empty body"
+msgstr ""
+
+#: cp/semantics.c:6039
+#, gcc-internal-format
+msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
+msgstr ""
+
+#: cp/semantics.c:6077
+#, gcc-internal-format
+msgid "uninitialized member %qD in %<constexpr%> constructor"
+msgstr ""
+
+#: cp/semantics.c:6108
+#, gcc-internal-format
+msgid "body of constexpr function %qD not a return-statement"
+msgstr ""
+
+#: cp/semantics.c:6163
+#, gcc-internal-format
+msgid "%q+D is not usable as a constexpr function because:"
+msgstr ""
+
+#: cp/semantics.c:6487
+#, gcc-internal-format
+msgid "expression %qE does not designate a constexpr function"
+msgstr ""
+
+#: cp/semantics.c:6501 cp/semantics.c:8085
+#, gcc-internal-format
+msgid "call to non-constexpr function %qD"
+msgstr ""
+
+#. The definition of fun was somehow unsuitable.
+#: cp/semantics.c:6529
+#, gcc-internal-format
+msgid "%qD called in a constant expression"
+msgstr ""
+
+#: cp/semantics.c:6533
+#, gcc-internal-format
+msgid "%qD used before its definition"
+msgstr ""
+
+#: cp/semantics.c:6567
+#, gcc-internal-format
+msgid "call has circular dependency"
+msgstr ""
+
+#: cp/semantics.c:6575
+#, gcc-internal-format, gfc-internal-format
+msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
+msgstr ""
+
+#: cp/semantics.c:6653
+#, gcc-internal-format
+msgid "%q+E is not a constant expression"
+msgstr ""
+
+#: cp/semantics.c:6793
+#, gcc-internal-format
+msgid "array subscript out of bound"
+msgstr ""
+
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
+#, gcc-internal-format
+msgid "%qE is not a constant expression"
+msgstr ""
+
+#: cp/semantics.c:6845
+#, gcc-internal-format
+msgid "mutable %qD is not usable in a constant expression"
+msgstr ""
+
+#: cp/semantics.c:6860
+#, gcc-internal-format
+msgid "accessing %qD member instead of initialized %qD member in constant expression"
+msgstr ""
+
+#: cp/semantics.c:7401
+#, gcc-internal-format
+msgid "accessing value of %qE through a %qT glvalue in a constant expression"
+msgstr ""
+
+#: cp/semantics.c:7432
+#, gcc-internal-format
+msgid "the value of %qD is not usable in a constant expression"
+msgstr ""
+
+#: cp/semantics.c:7439
+#, gcc-internal-format
+msgid "%qD used in its own initializer"
+msgstr ""
+
+#: cp/semantics.c:7444
+#, gcc-internal-format
+msgid "%q#D is not const"
+msgstr ""
+
+#: cp/semantics.c:7447
+#, gcc-internal-format
+msgid "%q#D is volatile"
+msgstr ""
+
+#: cp/semantics.c:7451
+#, gcc-internal-format
+msgid "%qD was not initialized with a constant expression"
+msgstr ""
+
+#: cp/semantics.c:7460
+#, gcc-internal-format
+msgid "%qD was not declared %<constexpr%>"
+msgstr ""
+
+#: cp/semantics.c:7463
+#, gcc-internal-format
+msgid "%qD does not have integral or enumeration type"
+msgstr ""
+
+#: cp/semantics.c:7524 cp/semantics.c:8217
+#, gcc-internal-format
+msgid "use of the value of the object being constructed in a constant expression"
+msgstr ""
+
+#: cp/semantics.c:7552 cp/semantics.c:8355
+#, gcc-internal-format
+msgid "temporary of non-literal type %qT in a constant expression"
+msgstr ""
+
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
+#, gcc-internal-format
+msgid "expression %qE is not a constant-expression"
+msgstr ""
+
+#: cp/semantics.c:7805
+#, gcc-internal-format
+msgid "unexpected expression %qE of kind %s"
+msgstr ""
+
+#: cp/semantics.c:7836
+#, gcc-internal-format
+msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
+msgstr ""
+
+#: cp/semantics.c:7849
+#, gcc-internal-format
+msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
+msgstr ""
+
+#: cp/semantics.c:8020
+#, gcc-internal-format
+msgid "expression %qE has side-effects"
+msgstr ""
+
+#: cp/semantics.c:8103
+#, gcc-internal-format
+msgid "calling a member function of the object being constructed in a constant expression"
+msgstr ""
+
+#: cp/semantics.c:8185
+#, gcc-internal-format
+msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
+msgstr ""
+
+#: cp/semantics.c:8271
+#, gcc-internal-format
+msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
+msgstr ""
+
+#: cp/semantics.c:8284
+#, gcc-internal-format
+msgid "difference of two pointer expressions is not a constant expression"
+msgstr ""
+
+#: cp/semantics.c:8303
+#, gcc-internal-format
+msgid "pointer comparison expression is not a constant expression"
+msgstr ""
+
+#: cp/semantics.c:8404
+#, gcc-internal-format
+msgid "division by zero is not a constant-expression"
+msgstr ""
+
+#: cp/semantics.c:8517
+#, gcc-internal-format
+msgid "non-constant array initialization"
+msgstr ""
+
+#: cp/semantics.c:8523
+#, gcc-internal-format, gfc-internal-format
+msgid "unexpected AST of kind %s"
+msgstr ""
+
+#: cp/semantics.c:9013
+#, gcc-internal-format
+msgid "cannot capture %qE by reference"
+msgstr ""
+
+#: cp/semantics.c:9036
+#, gcc-internal-format
+msgid "already captured %qD in lambda expression"
+msgstr ""
+
+#: cp/semantics.c:9182
+#, gcc-internal-format
+msgid "%<this%> was not captured for this lambda function"
+msgstr ""
+
+#: cp/tree.c:1025
+#, gcc-internal-format
+msgid "%qV qualifiers cannot be applied to %qT"
+msgstr ""
+
+#: cp/tree.c:2805
+#, gcc-internal-format
+msgid "%qE attribute can only be applied to Java class definitions"
+msgstr ""
+
+#: cp/tree.c:2834
+#, gcc-internal-format
+msgid "%qE attribute can only be applied to class definitions"
+msgstr ""
+
+#: cp/tree.c:2840
+#, gcc-internal-format
+msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
+msgstr ""
+
+#: cp/tree.c:2864
+#, gcc-internal-format
+msgid "requested init_priority is not an integer constant"
+msgstr ""
+
+#: cp/tree.c:2885
+#, gcc-internal-format
+msgid "can only use %qE attribute on file-scope definitions of objects of class type"
+msgstr ""
+
+#: cp/tree.c:2893
+#, gcc-internal-format
+msgid "requested init_priority is out of range"
+msgstr ""
+
+#: cp/tree.c:2903
+#, gcc-internal-format
+msgid "requested init_priority is reserved for internal use"
+msgstr ""
+
+#: cp/tree.c:2914
+#, gcc-internal-format
+msgid "%qE attribute is not supported on this platform"
+msgstr ""
+
+#: cp/tree.c:3594
+#, gcc-internal-format, gfc-internal-format
+msgid "lang_* check: failed in %s, at %s:%d"
+msgstr ""
+
+#: cp/typeck.c:455
+#, gcc-internal-format
+msgid "comparison between distinct pointer types %qT and %qT lacks a cast"
+msgstr ""
+
+#: cp/typeck.c:461
+#, gcc-internal-format
+msgid "conversion between distinct pointer types %qT and %qT lacks a cast"
+msgstr ""
+
+#: cp/typeck.c:467
+#, gcc-internal-format
+msgid "conditional expression between distinct pointer types %qT and %qT lacks a cast"
+msgstr ""
+
+#: cp/typeck.c:609
+#, gcc-internal-format
+msgid "ISO C++ forbids comparison between pointer of type %<void *%> and pointer-to-function"
+msgstr ""
+
+#: cp/typeck.c:614
+#, gcc-internal-format
+msgid "ISO C++ forbids conversion between pointer of type %<void *%> and pointer-to-function"
+msgstr ""
+
+#: cp/typeck.c:619
+#, gcc-internal-format
+msgid "ISO C++ forbids conditional expression between pointer of type %<void *%> and pointer-to-function"
+msgstr ""
+
+#: cp/typeck.c:686
+#, gcc-internal-format
+msgid "comparison between distinct pointer-to-member types %qT and %qT lacks a cast"
+msgstr ""
+
+#: cp/typeck.c:691
+#, gcc-internal-format
+msgid "conversion between distinct pointer-to-member types %qT and %qT lacks a cast"
+msgstr ""
+
+#: cp/typeck.c:696
+#, gcc-internal-format
+msgid "conditional expression between distinct pointer-to-member types %qT and %qT lacks a cast"
+msgstr ""
+
+#: cp/typeck.c:1393
+#, gcc-internal-format
+msgid "canonical types differ for identical types %T and %T"
+msgstr ""
+
+#: cp/typeck.c:1400
+#, gcc-internal-format
+msgid "same canonical type node for different types %T and %T"
+msgstr ""
+
+#: cp/typeck.c:1525
+#, gcc-internal-format
+msgid "invalid application of %qs to a member function"
+msgstr ""
+
+#: cp/typeck.c:1602
+#, gcc-internal-format
+msgid "invalid application of %<sizeof%> to a bit-field"
+msgstr ""
+
+#: cp/typeck.c:1610
+#, gcc-internal-format
+msgid "ISO C++ forbids applying %<sizeof%> to an expression of function type"
+msgstr ""
+
+#: cp/typeck.c:1661
+#, gcc-internal-format
+msgid "invalid application of %<__alignof%> to a bit-field"
+msgstr ""
+
+#: cp/typeck.c:1672
+#, gcc-internal-format
+msgid "ISO C++ forbids applying %<__alignof%> to an expression of function type"
+msgstr ""
+
+#: cp/typeck.c:1730
+#, gcc-internal-format
+msgid "invalid use of non-static member function"
+msgstr ""
+
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr ""
+
+#: cp/typeck.c:2023
+#, gcc-internal-format
+msgid "deprecated conversion from string constant to %qT"
+msgstr ""
+
+#: cp/typeck.c:2150 cp/typeck.c:2549
+#, gcc-internal-format
+msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
+msgstr ""
+
+#: cp/typeck.c:2154 cp/typeck.c:2553
+#, gcc-internal-format
+msgid "request for member %qD in %qE, which is of non-class type %qT"
+msgstr ""
+
+#: cp/typeck.c:2184
+#, gcc-internal-format
+msgid "invalid use of nonstatic data member %qE"
+msgstr ""
+
+#: cp/typeck.c:2240
+#, gcc-internal-format
+msgid "invalid access to non-static data member %qD of NULL object"
+msgstr ""
+
+#: cp/typeck.c:2243 cp/typeck.c:2274
+#, gcc-internal-format
+msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
+msgstr ""
+
+#: cp/typeck.c:2271
+#, gcc-internal-format
+msgid "invalid access to non-static data member %qD of NULL object"
+msgstr ""
+
+#: cp/typeck.c:2404
+#, gcc-internal-format
+msgid "object type %qT does not match destructor name ~%qT"
+msgstr ""
+
+#: cp/typeck.c:2412
+#, gcc-internal-format
+msgid "the type being destroyed is %qT, but the destructor refers to %qT"
+msgstr ""
+
+#: cp/typeck.c:2593
+#, gcc-internal-format
+msgid "%<%D::%D%> is not a member of %qT"
+msgstr ""
+
+#: cp/typeck.c:2617
+#, gcc-internal-format
+msgid "%qT is not a base of %qT"
+msgstr ""
+
+#: cp/typeck.c:2637
+#, gcc-internal-format
+msgid "%qD has no member named %qE"
+msgstr ""
+
+#: cp/typeck.c:2655
+#, gcc-internal-format
+msgid "%qD is not a member template function"
+msgstr ""
+
+#: cp/typeck.c:2799
+#, gcc-internal-format
+msgid "%qT is not a pointer-to-object type"
+msgstr ""
+
+#: cp/typeck.c:2830
+#, gcc-internal-format
+msgid "invalid use of array indexing on pointer to member"
+msgstr ""
+
+#: cp/typeck.c:2833
+#, gcc-internal-format
+msgid "invalid use of unary %<*%> on pointer to member"
+msgstr ""
+
+#: cp/typeck.c:2836
+#, gcc-internal-format
+msgid "invalid use of implicit conversion on pointer to member"
+msgstr ""
+
+#: cp/typeck.c:2871
+#, gcc-internal-format
+msgid "subscript missing in array reference"
+msgstr ""
+
+#: cp/typeck.c:2955
+#, gcc-internal-format
+msgid "ISO C++ forbids subscripting non-lvalue array"
+msgstr ""
+
+#: cp/typeck.c:2968
+#, gcc-internal-format
+msgid "subscripting array declared %<register%>"
+msgstr ""
+
+#: cp/typeck.c:3005
+#, gcc-internal-format
+msgid "subscripted value is neither array nor pointer"
+msgstr ""
+
+#: cp/typeck.c:3071
+#, gcc-internal-format
+msgid "object missing in use of %qE"
+msgstr ""
+
+#: cp/typeck.c:3265
+#, gcc-internal-format
+msgid "ISO C++ forbids calling %<::main%> from within program"
+msgstr ""
+
+#: cp/typeck.c:3284
+#, gcc-internal-format
+msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
+msgstr ""
+
+#: cp/typeck.c:3299
+#, gcc-internal-format
+msgid "%qE cannot be used as a function"
+msgstr ""
+
+#: cp/typeck.c:3346
+#, gcc-internal-format
+msgid "too many arguments to constructor %q#D"
+msgstr ""
+
+#: cp/typeck.c:3347
+#, gcc-internal-format
+msgid "too few arguments to constructor %q#D"
+msgstr ""
+
+#: cp/typeck.c:3352
+#, gcc-internal-format
+msgid "too many arguments to member function %q#D"
+msgstr ""
+
+#: cp/typeck.c:3353
+#, gcc-internal-format
+msgid "too few arguments to member function %q#D"
+msgstr ""
+
+#: cp/typeck.c:3359
+#, gcc-internal-format
+msgid "too many arguments to function %q#D"
+msgstr ""
+
+#: cp/typeck.c:3360
+#, gcc-internal-format
+msgid "too few arguments to function %q#D"
+msgstr ""
+
+#: cp/typeck.c:3370
+#, gcc-internal-format
+msgid "too many arguments to method %q#D"
+msgstr ""
+
+#: cp/typeck.c:3371
+#, gcc-internal-format
+msgid "too few arguments to method %q#D"
+msgstr ""
+
+#: cp/typeck.c:3374
+#, gcc-internal-format
+msgid "too many arguments to function"
+msgstr ""
+
+#: cp/typeck.c:3375
+#, gcc-internal-format
+msgid "too few arguments to function"
+msgstr ""
+
+#: cp/typeck.c:3454
+#, gcc-internal-format
+msgid "parameter %P of %qD has incomplete type %qT"
+msgstr ""
+
+#: cp/typeck.c:3457
+#, gcc-internal-format
+msgid "parameter %P has incomplete type %qT"
+msgstr ""
+
+#: cp/typeck.c:3752 cp/typeck.c:3763
+#, gcc-internal-format
+msgid "assuming cast to type %qT from overloaded function"
+msgstr ""
+
+#. Some sort of arithmetic operation involving NULL was
+#. performed.
+#: cp/typeck.c:3806
+#, gcc-internal-format
+msgid "NULL used in arithmetic"
+msgstr ""
+
+#: cp/typeck.c:3997
+#, gcc-internal-format
+msgid "left rotate count is negative"
+msgstr ""
+
+#: cp/typeck.c:3998
+#, gcc-internal-format
+msgid "right rotate count is negative"
+msgstr ""
+
+#: cp/typeck.c:4004
+#, gcc-internal-format
+msgid "left rotate count >= width of type"
+msgstr ""
+
+#: cp/typeck.c:4005
+#, gcc-internal-format
+msgid "right rotate count >= width of type"
+msgstr ""
+
+#: cp/typeck.c:4024 cp/typeck.c:4254
+#, gcc-internal-format
+msgid "comparison with string literal results in unspecified behaviour"
+msgstr ""
+
+#: cp/typeck.c:4043 cp/typeck.c:4055
+#, gcc-internal-format
+msgid "the address of %qD will never be NULL"
+msgstr ""
+
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
+#, gcc-internal-format
+msgid "ISO C++ forbids comparison between pointer and integer"
+msgstr ""
+
+#: cp/typeck.c:4312
+#, gcc-internal-format
+msgid "unordered comparison on non-floating point argument"
+msgstr ""
+
+#: cp/typeck.c:4359
+#, gcc-internal-format
+msgid "invalid operands of types %qT and %qT to binary %qO"
+msgstr ""
+
+#: cp/typeck.c:4584
+#, gcc-internal-format
+msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
+msgstr ""
+
+#: cp/typeck.c:4586
+#, gcc-internal-format
+msgid "ISO C++ forbids using pointer to a function in subtraction"
+msgstr ""
+
+#: cp/typeck.c:4588
+#, gcc-internal-format
+msgid "ISO C++ forbids using pointer to a method in subtraction"
+msgstr ""
+
+#: cp/typeck.c:4601
+#, gcc-internal-format
+msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
+msgstr ""
+
+#: cp/typeck.c:4659
+#, gcc-internal-format
+msgid "taking address of constructor %qE"
+msgstr ""
+
+#: cp/typeck.c:4660
+#, gcc-internal-format
+msgid "taking address of destructor %qE"
+msgstr ""
+
+#: cp/typeck.c:4674
+#, gcc-internal-format
+msgid "invalid use of %qE to form a pointer-to-member-function"
+msgstr ""
+
+#: cp/typeck.c:4677
+#, gcc-internal-format
+msgid " a qualified-id is required"
+msgstr ""
+
+#: cp/typeck.c:4682
+#, gcc-internal-format
+msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
+msgstr ""
+
+#. An expression like &memfn.
+#: cp/typeck.c:4843
+#, gcc-internal-format
+msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
+msgstr ""
+
+#: cp/typeck.c:4848
+#, gcc-internal-format
+msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
+msgstr ""
+
+#. Make this a permerror because we used to accept it.
+#: cp/typeck.c:4885
+#, gcc-internal-format
+msgid "taking address of temporary"
+msgstr ""
+
+#: cp/typeck.c:4887
+#, gcc-internal-format
+msgid "taking address of xvalue (rvalue reference)"
+msgstr ""
+
+#: cp/typeck.c:4904
+#, gcc-internal-format
+msgid "ISO C++ forbids taking address of function %<::main%>"
+msgstr ""
+
+#: cp/typeck.c:4959
+#, gcc-internal-format
+msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
+msgstr ""
+
+#: cp/typeck.c:4987
+#, gcc-internal-format
+msgid "cannot create pointer to reference member %qD"
+msgstr ""
+
+#: cp/typeck.c:5251
+#, gcc-internal-format
+msgid "ISO C++ forbids incrementing an enum"
+msgstr ""
+
+#: cp/typeck.c:5252
+#, gcc-internal-format
+msgid "ISO C++ forbids decrementing an enum"
+msgstr ""
+
+#: cp/typeck.c:5268
+#, gcc-internal-format
+msgid "cannot increment a pointer to incomplete type %qT"
+msgstr ""
+
+#: cp/typeck.c:5269
+#, gcc-internal-format
+msgid "cannot decrement a pointer to incomplete type %qT"
+msgstr ""
+
+#: cp/typeck.c:5280
+#, gcc-internal-format
+msgid "ISO C++ forbids incrementing a pointer of type %qT"
+msgstr ""
+
+#: cp/typeck.c:5281
+#, gcc-internal-format
+msgid "ISO C++ forbids decrementing a pointer of type %qT"
+msgstr ""
+
+#: cp/typeck.c:5314
+#, gcc-internal-format
+msgid "invalid use of Boolean expression as operand to %<operator--%>"
+msgstr ""
+
+#: cp/typeck.c:5476
+#, gcc-internal-format
+msgid "cannot take the address of %<this%>, which is an rvalue expression"
+msgstr ""
+
+#: cp/typeck.c:5498
+#, gcc-internal-format
+msgid "address of explicit register variable %qD requested"
+msgstr ""
+
+#: cp/typeck.c:5503
+#, gcc-internal-format
+msgid "address requested for %qD, which is declared %<register%>"
+msgstr ""
+
+#: cp/typeck.c:5584
+#, gcc-internal-format
+msgid "list-initializer for non-class type must not be parenthesized"
+msgstr ""
+
+#: cp/typeck.c:5596
+#, gcc-internal-format
+msgid "expression list treated as compound expression in initializer"
+msgstr ""
+
+#: cp/typeck.c:5600
+#, gcc-internal-format
+msgid "expression list treated as compound expression in mem-initializer"
+msgstr ""
+
+#: cp/typeck.c:5604
+#, gcc-internal-format
+msgid "expression list treated as compound expression in functional cast"
+msgstr ""
+
+#: cp/typeck.c:5638
+#, gcc-internal-format, gfc-internal-format
+msgid "%s expression list treated as compound expression"
+msgstr ""
+
+#: cp/typeck.c:5711
+#, gcc-internal-format
+msgid "no context to resolve type of %qE"
+msgstr ""
+
+#: cp/typeck.c:5744
+#, gcc-internal-format
+msgid "cast from type %qT to type %qT casts away qualifiers"
+msgstr ""
+
+#: cp/typeck.c:5750
+#, gcc-internal-format
+msgid "static_cast from type %qT to type %qT casts away qualifiers"
+msgstr ""
+
+#: cp/typeck.c:5756
+#, gcc-internal-format
+msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
+msgstr ""
+
+#: cp/typeck.c:6097
+#, gcc-internal-format
+msgid "invalid static_cast from type %qT to type %qT"
+msgstr ""
+
+#: cp/typeck.c:6120
+#, gcc-internal-format
+msgid "converting from %qT to %qT"
+msgstr ""
+
+#: cp/typeck.c:6169
+#, gcc-internal-format
+msgid "invalid cast of an rvalue expression of type %qT to type %qT"
+msgstr ""
+
+#: cp/typeck.c:6239
+#, gcc-internal-format
+msgid "cast from %qT to %qT loses precision"
+msgstr ""
+
+#: cp/typeck.c:6279
+#, gcc-internal-format
+msgid "cast from %qT to %qT increases required alignment of target type"
+msgstr ""
+
+#. Only issue a warning, as we have always supported this
+#. where possible, and it is necessary in some cases. DR 195
+#. addresses this issue, but as of 2004/10/26 is still in
+#. drafting.
+#: cp/typeck.c:6298
+#, gcc-internal-format
+msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
+msgstr ""
+
+#: cp/typeck.c:6311
+#, gcc-internal-format
+msgid "invalid cast from type %qT to type %qT"
+msgstr ""
+
+#: cp/typeck.c:6367
+#, gcc-internal-format
+msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
+msgstr ""
+
+#: cp/typeck.c:6376
+#, gcc-internal-format
+msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
+msgstr ""
+
+#: cp/typeck.c:6416
+#, gcc-internal-format
+msgid "invalid const_cast of an rvalue of type %qT to type %qT"
+msgstr ""
+
+#: cp/typeck.c:6472
+#, gcc-internal-format
+msgid "invalid const_cast from type %qT to type %qT"
+msgstr ""
+
+#: cp/typeck.c:6549 cp/typeck.c:6557
+#, gcc-internal-format
+msgid "ISO C++ forbids casting to an array type %qT"
+msgstr ""
+
+#: cp/typeck.c:6566
+#, gcc-internal-format
+msgid "invalid cast to function type %qT"
+msgstr ""
+
+#: cp/typeck.c:6842
+#, gcc-internal-format
+msgid " in evaluation of %<%Q(%#T, %#T)%>"
+msgstr ""
+
+#: cp/typeck.c:6903
+#, gcc-internal-format
+msgid "assigning to an array from an initializer list"
+msgstr ""
+
+#: cp/typeck.c:6917
+#, gcc-internal-format
+msgid "incompatible types in assignment of %qT to %qT"
+msgstr ""
+
+#: cp/typeck.c:6931
+#, gcc-internal-format
+msgid "array used as initializer"
+msgstr ""
+
+#: cp/typeck.c:6933
+#, gcc-internal-format
+msgid "invalid array assignment"
+msgstr ""
+
+#: cp/typeck.c:7045
+#, gcc-internal-format
+msgid " in pointer to member function conversion"
+msgstr ""
+
+#: cp/typeck.c:7059
+#, gcc-internal-format
+msgid "pointer to member conversion via virtual base %qT"
+msgstr ""
+
+#: cp/typeck.c:7106 cp/typeck.c:7125
+#, gcc-internal-format
+msgid " in pointer to member conversion"
+msgstr ""
+
+#: cp/typeck.c:7204
+#, gcc-internal-format
+msgid "invalid conversion to type %qT from type %qT"
+msgstr ""
+
+#: cp/typeck.c:7486
+#, gcc-internal-format
+msgid "cannot convert %qT to %qT for argument %qP to %qD"
+msgstr ""
+
+#: cp/typeck.c:7492
+#, gcc-internal-format
+msgid "cannot convert %qT to %qT in default argument"
+msgstr ""
+
+#: cp/typeck.c:7496
+#, gcc-internal-format
+msgid "cannot convert %qT to %qT in argument passing"
+msgstr ""
+
+#: cp/typeck.c:7500
+#, gcc-internal-format
+msgid "cannot convert %qT to %qT"
+msgstr ""
+
+#: cp/typeck.c:7504
+#, gcc-internal-format
+msgid "cannot convert %qT to %qT in initialization"
+msgstr ""
+
+#: cp/typeck.c:7508
+#, gcc-internal-format
+msgid "cannot convert %qT to %qT in return"
+msgstr ""
+
+#: cp/typeck.c:7512
+#, gcc-internal-format
+msgid "cannot convert %qT to %qT in assignment"
+msgstr ""
+
+#: cp/typeck.c:7535
+#, gcc-internal-format
+msgid "parameter %qP of %qD might be a candidate for a format attribute"
+msgstr ""
+
+#: cp/typeck.c:7539
+#, gcc-internal-format
+msgid "parameter might be a candidate for a format attribute"
+msgstr ""
+
+#: cp/typeck.c:7544
+#, gcc-internal-format
+msgid "target of conversion might be a candidate for a format attribute"
+msgstr ""
+
+#: cp/typeck.c:7549
+#, gcc-internal-format
+msgid "target of initialization might be a candidate for a format attribute"
+msgstr ""
+
+#: cp/typeck.c:7559
+#, gcc-internal-format
+msgid "left-hand side of assignment might be a candidate for a format attribute"
+msgstr ""
+
+#: cp/typeck.c:7654 cp/typeck.c:7656
+#, gcc-internal-format
+msgid "in passing argument %P of %q+D"
+msgstr ""
+
+#: cp/typeck.c:7711
+#, gcc-internal-format
+msgid "returning reference to temporary"
+msgstr ""
+
+#: cp/typeck.c:7718
+#, gcc-internal-format
+msgid "reference to non-lvalue returned"
+msgstr ""
+
+#: cp/typeck.c:7734
+#, gcc-internal-format
+msgid "reference to local variable %q+D returned"
+msgstr ""
+
+#: cp/typeck.c:7737
+#, gcc-internal-format
+msgid "address of local variable %q+D returned"
+msgstr ""
+
+#: cp/typeck.c:7772
+#, gcc-internal-format
+msgid "returning a value from a destructor"
+msgstr ""
+
+#. If a return statement appears in a handler of the
+#. function-try-block of a constructor, the program is ill-formed.
+#: cp/typeck.c:7780
+#, gcc-internal-format
+msgid "cannot return from a handler of a function-try-block of a constructor"
+msgstr ""
+
+#. You can't return a value from a constructor.
+#: cp/typeck.c:7783
+#, gcc-internal-format
+msgid "returning a value from a constructor"
+msgstr ""
+
+#: cp/typeck.c:7806
+#, gcc-internal-format
+msgid "inconsistent types %qT and %qT deduced for lambda return type"
+msgstr ""
+
+#: cp/typeck.c:7832
+#, gcc-internal-format
+msgid "return-statement with no value, in function returning %qT"
+msgstr ""
+
+#: cp/typeck.c:7853
+#, gcc-internal-format
+msgid "return-statement with a value, in function returning 'void'"
+msgstr ""
+
+#: cp/typeck.c:7883
+#, gcc-internal-format
+msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
+msgstr ""
+
+#. Make this a permerror because we used to accept it.
+#: cp/typeck.c:8454
+#, gcc-internal-format
+msgid "using temporary as lvalue"
+msgstr ""
+
+#: cp/typeck.c:8456
+#, gcc-internal-format
+msgid "using xvalue (rvalue reference) as lvalue"
+msgstr ""
+
+#: cp/typeck2.c:53
+#, gcc-internal-format
+msgid "type %qT is not a base type for type %qT"
+msgstr ""
+
+#: cp/typeck2.c:107
+#, gcc-internal-format
+msgid "assignment of constant field %qD"
+msgstr ""
+
+#: cp/typeck2.c:109
+#, gcc-internal-format
+msgid "constant field %qD used as %<asm%> output"
+msgstr ""
+
+#: cp/typeck2.c:111
+#, gcc-internal-format
+msgid "increment of constant field %qD"
+msgstr ""
+
+#: cp/typeck2.c:113
+#, gcc-internal-format
+msgid "decrement of constant field %qD"
+msgstr ""
+
+#: cp/typeck2.c:120
+#, gcc-internal-format
+msgid "assignment of read-only reference %qD"
+msgstr ""
+
+#: cp/typeck2.c:122
+#, gcc-internal-format
+msgid "read-only reference %qD used as %<asm%> output"
+msgstr ""
+
+#: cp/typeck2.c:124
+#, gcc-internal-format
+msgid "increment of read-only reference %qD"
+msgstr ""
+
+#: cp/typeck2.c:126
+#, gcc-internal-format
+msgid "decrement of read-only reference %qD"
+msgstr ""
+
+#: cp/typeck2.c:310
+#, gcc-internal-format
+msgid "cannot declare variable %q+D to be of abstract type %qT"
+msgstr ""
+
+#: cp/typeck2.c:313
+#, gcc-internal-format
+msgid "cannot declare parameter %q+D to be of abstract type %qT"
+msgstr ""
+
+#: cp/typeck2.c:316
+#, gcc-internal-format
+msgid "cannot declare field %q+D to be of abstract type %qT"
+msgstr ""
+
+#: cp/typeck2.c:320
+#, gcc-internal-format
+msgid "invalid abstract return type for member function %q+#D"
+msgstr ""
+
+#: cp/typeck2.c:322
+#, gcc-internal-format
+msgid "invalid abstract return type for function %q+#D"
+msgstr ""
+
+#. Here we do not have location information.
+#: cp/typeck2.c:325
+#, gcc-internal-format
+msgid "invalid abstract type %qT for %qE"
+msgstr ""
+
+#: cp/typeck2.c:327
+#, gcc-internal-format
+msgid "invalid abstract type for %q+D"
+msgstr ""
+
+#: cp/typeck2.c:330
+#, gcc-internal-format
+msgid "cannot allocate an object of abstract type %qT"
+msgstr ""
+
+#: cp/typeck2.c:339
+#, gcc-internal-format
+msgid " because the following virtual functions are pure within %qT:"
+msgstr ""
+
+#: cp/typeck2.c:345
+#, gcc-internal-format
+msgid "\t%+#D"
+msgstr ""
+
+#: cp/typeck2.c:354
+#, gcc-internal-format
+msgid " since type %qT has pure virtual functions"
+msgstr ""
+
+#: cp/typeck2.c:392
+#, gcc-internal-format
+msgid "%q+D has incomplete type"
+msgstr ""
+
+#: cp/typeck2.c:405
+#, gcc-internal-format
+msgid "invalid use of incomplete type %q#T"
+msgstr ""
+
+#: cp/typeck2.c:408
+#, gcc-internal-format
+msgid "forward declaration of %q+#T"
+msgstr ""
+
+#: cp/typeck2.c:411
+#, gcc-internal-format
+msgid "declaration of %q+#T"
+msgstr ""
+
+#: cp/typeck2.c:416
+#, gcc-internal-format
+msgid "invalid use of %qT"
+msgstr ""
+
+#: cp/typeck2.c:438
+#, gcc-internal-format
+msgid "invalid use of member function (did you forget the %<()%> ?)"
+msgstr ""
+
+#: cp/typeck2.c:442
+#, gcc-internal-format
+msgid "invalid use of member (did you forget the %<&%> ?)"
+msgstr ""
+
+#: cp/typeck2.c:453
+#, gcc-internal-format
+msgid "invalid use of template type parameter %qT"
+msgstr ""
+
+#: cp/typeck2.c:458
+#, gcc-internal-format
+msgid "invalid use of template template parameter %qT"
+msgstr ""
+
+#: cp/typeck2.c:464
+#, gcc-internal-format
+msgid "invalid use of dependent type %qT"
+msgstr ""
+
+#: cp/typeck2.c:471
+#, gcc-internal-format
+msgid "invalid use of brace-enclosed initializer list"
+msgstr ""
+
+#: cp/typeck2.c:479
+#, gcc-internal-format
+msgid "address of overloaded function with no contextual type information"
+msgstr ""
+
+#: cp/typeck2.c:483
+#, gcc-internal-format
+msgid "overloaded function with no contextual type information"
+msgstr ""
+
+#: cp/typeck2.c:486
+#, gcc-internal-format
+msgid "insufficient contextual information to determine type"
+msgstr ""
+
+#: cp/typeck2.c:677
+#, gcc-internal-format
+msgid "constructor syntax used, but no constructor declared for type %qT"
+msgstr ""
+
+#: cp/typeck2.c:690
+#, gcc-internal-format
+msgid "cannot initialize arrays using this syntax"
+msgstr ""
+
+#: cp/typeck2.c:832
+#, gcc-internal-format
+msgid "narrowing conversion of %qE from %qT to %qT inside { }"
+msgstr ""
+
+#: cp/typeck2.c:836
+#, gcc-internal-format
+msgid "narrowing conversion of %qE from %qT to %qT inside { } is ill-formed in C++11"
+msgstr ""
+
+#: cp/typeck2.c:899
+#, gcc-internal-format
+msgid "int-array initialized from non-wide string"
+msgstr ""
+
+#: cp/typeck2.c:905
+#, gcc-internal-format
+msgid "int-array initialized from incompatible wide string"
+msgstr ""
+
+#: cp/typeck2.c:925
+#, gcc-internal-format
+msgid "initializer-string for array of chars is too long"
+msgstr ""
+
+#: cp/typeck2.c:973
+#, gcc-internal-format
+msgid "cannot initialize aggregate of type %qT with a compound literal"
+msgstr ""
+
+#: cp/typeck2.c:991
+#, gcc-internal-format
+msgid "array must be initialized with a brace-enclosed initializer"
+msgstr ""
+
+#: cp/typeck2.c:1220 cp/typeck2.c:1249
+#, gcc-internal-format
+msgid "missing initializer for member %qD"
+msgstr ""
+
+#: cp/typeck2.c:1227
+#, gcc-internal-format
+msgid "uninitialized const member %qD"
+msgstr ""
+
+#: cp/typeck2.c:1234
+#, gcc-internal-format
+msgid "member %qD with uninitialized const fields"
+msgstr ""
+
+#: cp/typeck2.c:1241
+#, gcc-internal-format
+msgid "member %qD is uninitialized reference"
+msgstr ""
+
+#: cp/typeck2.c:1321
+#, gcc-internal-format
+msgid "no field %qD found in union being initialized"
+msgstr ""
+
+#: cp/typeck2.c:1332
+#, gcc-internal-format
+msgid "index value instead of field name in union initializer"
+msgstr ""
+
+#: cp/typeck2.c:1500
+#, gcc-internal-format
+msgid "circular pointer delegation detected"
+msgstr ""
+
+#: cp/typeck2.c:1513
+#, gcc-internal-format
+msgid "base operand of %<->%> has non-pointer type %qT"
+msgstr ""
+
+#: cp/typeck2.c:1537
+#, gcc-internal-format
+msgid "result of %<operator->()%> yields non-pointer result"
+msgstr ""
+
+#: cp/typeck2.c:1539
+#, gcc-internal-format
+msgid "base operand of %<->%> is not a pointer"
+msgstr ""
+
+#: cp/typeck2.c:1564
+#, gcc-internal-format
+msgid "%qE cannot be used as a member pointer, since it is of type %qT"
+msgstr ""
+
+#: cp/typeck2.c:1573
+#, gcc-internal-format
+msgid "cannot apply member pointer %qE to %qE, which is of non-class type %qT"
+msgstr ""
+
+#: cp/typeck2.c:1595
+#, gcc-internal-format
+msgid "pointer to member type %qT incompatible with object type %qT"
+msgstr ""
+
+#: cp/typeck2.c:1663
+#, gcc-internal-format
+msgid "functional cast to array type %qT"
+msgstr ""
+
+#: cp/typeck2.c:1684
+#, gcc-internal-format
+msgid "invalid value-initialization of reference type"
+msgstr ""
+
+#: cp/typeck2.c:1913
+#, gcc-internal-format
+msgid "call to function %qD which throws incomplete type %q#T"
+msgstr ""
+
+#: cp/typeck2.c:1916
+#, gcc-internal-format
+msgid "call to function which throws incomplete type %q#T"
+msgstr ""
+
+#: fortran/arith.c:46
+#, gcc-internal-format, gfc-internal-format
+msgid "Conversion of an Infinity or Not-a-Number at %L to INTEGER"
+msgstr ""
+
+#: fortran/arith.c:905 fortran/arith.c:927
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Noninteger exponent in an initialization expression at %L"
+msgstr ""
+
+#: fortran/arith.c:913
+#, gcc-internal-format, gfc-internal-format
+msgid "Raising a negative REAL at %L to a REAL power is prohibited"
+msgstr ""
+
+#: fortran/arith.c:1909
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic OK converting %s to %s at %L"
+msgstr ""
+
+#: fortran/arith.c:1913
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic overflow converting %s to %s at %L. This check can be disabled with the option -fno-range-check"
+msgstr ""
+
+#: fortran/arith.c:1918
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic underflow converting %s to %s at %L. This check can be disabled with the option -fno-range-check"
+msgstr ""
+
+#: fortran/arith.c:1923
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic NaN converting %s to %s at %L. This check can be disabled with the option -fno-range-check"
+msgstr ""
+
+#: fortran/arith.c:1928
+#, gcc-internal-format, gfc-internal-format
+msgid "Division by zero converting %s to %s at %L"
+msgstr ""
+
+#: fortran/arith.c:1932
+#, gcc-internal-format, gfc-internal-format
+msgid "Array operands are incommensurate converting %s to %s at %L"
+msgstr ""
+
+#: fortran/arith.c:1936
+#, gcc-internal-format, gfc-internal-format
+msgid "Integer outside symmetric range implied by Standard Fortran converting %s to %s at %L"
+msgstr ""
+
+#: fortran/arith.c:2268
+#, gcc-internal-format, gfc-internal-format
+msgid "The Hollerith constant at %L is too long to convert to %s"
+msgstr ""
+
+#: fortran/array.c:98
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected array subscript at %C"
+msgstr ""
+
+#: fortran/array.c:107
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected '*' in coarray subscript at %C"
+msgstr ""
+
+#: fortran/array.c:131
+#, gcc-internal-format, gfc-internal-format
+msgid "Strides not allowed in coarray subscript at %C"
+msgstr ""
+
+#: fortran/array.c:139
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected array subscript stride at %C"
+msgstr ""
+
+#: fortran/array.c:196
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid form of array reference at %C"
+msgstr ""
+
+#: fortran/array.c:201 fortran/array.c:267
+#, gcc-internal-format, gfc-internal-format
+msgid "Array reference at %C cannot have more than %d dimensions"
+msgstr ""
+
+#: fortran/array.c:216 fortran/array.c:576 fortran/check.c:2149
+#: fortran/check.c:3915 fortran/check.c:3953 fortran/check.c:4120
+#: fortran/match.c:1766 fortran/match.c:2833 fortran/match.c:3029
+#: fortran/simplify.c:4538
+#, gcc-internal-format, gfc-internal-format
+msgid "Coarrays disabled at %C, use -fcoarray= to enable"
+msgstr ""
+
+#: fortran/array.c:222
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected coarray designator at %C"
+msgstr ""
+
+#: fortran/array.c:237
+#, gcc-internal-format, gfc-internal-format
+msgid "Too few codimensions at %C, expected %d not %d"
+msgstr ""
+
+#: fortran/array.c:243
+#, gcc-internal-format, gfc-internal-format
+msgid "Too many codimensions at %C, expected %d not %d"
+msgstr ""
+
+#: fortran/array.c:253
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected '*' for codimension %d of %d at %C"
+msgstr ""
+
+#: fortran/array.c:256
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid form of coarray reference at %C"
+msgstr ""
+
+#: fortran/array.c:261
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid codimension %d at %C, only %d codimensions exist"
+msgstr ""
+
+#: fortran/array.c:313
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L in this context must be constant"
+msgstr ""
+
+#: fortran/array.c:316
+#, gcc-internal-format, gfc-internal-format
+msgid "Expression at %L in this context must be constant"
+msgstr ""
+
+#: fortran/array.c:407
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected expression in array specification at %C"
+msgstr ""
+
+#: fortran/array.c:486
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad array specification for implied-shape array at %C"
+msgstr ""
+
+#: fortran/array.c:502 fortran/array.c:614
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad array specification for an explicitly shaped array at %C"
+msgstr ""
+
+#: fortran/array.c:512 fortran/array.c:624
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad array specification for assumed shape array at %C"
+msgstr ""
+
+#: fortran/array.c:526 fortran/array.c:638
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad specification for deferred shape array at %C"
+msgstr ""
+
+#: fortran/array.c:536 fortran/array.c:642
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad specification for assumed size array at %C"
+msgstr ""
+
+#: fortran/array.c:545 fortran/array.c:651
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected another dimension in array declaration at %C"
+msgstr ""
+
+#: fortran/array.c:551 fortran/array.c:582 fortran/array.c:657
+#, gcc-internal-format, gfc-internal-format
+msgid "Array specification at %C has more than %d dimensions"
+msgstr ""
+
+#: fortran/array.c:557
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Array specification at %C with more than 7 dimensions"
+msgstr ""
+
+#: fortran/array.c:570
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Coarray declaration at %C"
+msgstr ""
+
+#: fortran/array.c:665
+#, gcc-internal-format, gfc-internal-format
+msgid "Upper bound of last coarray dimension must be '*' at %C"
+msgstr ""
+
+#: fortran/array.c:885
+#, gcc-internal-format, gfc-internal-format
+msgid "DO-iterator '%s' at %L is inside iterator of the same name"
+msgstr ""
+
+#: fortran/array.c:977 fortran/array.c:1109
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in array constructor at %C"
+msgstr ""
+
+#: fortran/array.c:1029
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: [...] style array constructors at %C"
+msgstr ""
+
+#: fortran/array.c:1049
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Array constructor including type specification at %C"
+msgstr ""
+
+#: fortran/array.c:1055 fortran/match.c:3465
+#, gcc-internal-format, gfc-internal-format
+msgid "Type-spec at %L cannot contain a deferred type parameter"
+msgstr ""
+
+#: fortran/array.c:1071
+#, gcc-internal-format, gfc-internal-format
+msgid "Empty array constructor at %C is not allowed"
+msgstr ""
+
+#: fortran/array.c:1156
+#, gcc-internal-format, gfc-internal-format
+msgid "Element in %s array constructor at %L is %s"
+msgstr ""
+
+#: fortran/array.c:1484
+#, gcc-internal-format, gfc-internal-format
+msgid "Iterator step at %L cannot be zero"
+msgstr ""
+
+#. Problems occur when we get something like
+#. integer :: a(lots) = (/(i, i=1, lots)/)
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
+#, gcc-internal-format, gfc-internal-format
+msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
+msgstr ""
+
+#: fortran/array.c:1818
+#, gcc-internal-format, gfc-internal-format
+msgid "Different CHARACTER lengths (%d/%d) in array constructor at %L"
+msgstr ""
+
+#: fortran/check.c:46
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a scalar"
+msgstr ""
+
+#: fortran/check.c:62
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be %s"
+msgstr ""
+
+#: fortran/check.c:90
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a numeric type"
+msgstr ""
+
+#: fortran/check.c:105
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or REAL"
+msgstr ""
+
+#: fortran/check.c:122
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be REAL or COMPLEX"
+msgstr ""
+
+#: fortran/check.c:139
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or PROCEDURE"
+msgstr ""
+
+#: fortran/check.c:168 fortran/check.c:5193
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a constant"
+msgstr ""
+
+#: fortran/check.c:177
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid kind for %s at %L"
+msgstr ""
+
+#: fortran/check.c:196
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be double precision"
+msgstr ""
+
+#: fortran/check.c:219
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected coarray variable as '%s' argument to the %s intrinsic at %L"
+msgstr ""
+
+#: fortran/check.c:236
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a logical array"
+msgstr ""
+
+#: fortran/check.c:262
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be an array"
+msgstr ""
+
+#: fortran/check.c:283
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L must be nonnegative"
+msgstr ""
+
+#: fortran/check.c:314
+#, gcc-internal-format, gfc-internal-format
+msgid "The absolute value of SHIFT at %L must be less than or equal to BIT_SIZE('%s')"
+msgstr ""
+
+#: fortran/check.c:325
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L must be less than or equal to BIT_SIZE('%s')"
+msgstr ""
+
+#: fortran/check.c:335
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L must be less than BIT_SIZE('%s')"
+msgstr ""
+
+#: fortran/check.c:362
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L must be less than or equal to the BIT_SIZE of INTEGER(KIND=%d)"
+msgstr ""
+
+#: fortran/check.c:388
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s + %s' at %L must be less than or equal to BIT_SIZE('%s')"
+msgstr ""
+
+#: fortran/check.c:406
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be the same type and kind as '%s'"
+msgstr ""
+
+#: fortran/check.c:423
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of rank %d"
+msgstr ""
+
+#: fortran/check.c:438
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must not be OPTIONAL"
+msgstr ""
+
+#: fortran/check.c:459
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
+msgstr ""
+
+#: fortran/check.c:477
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of kind %d"
+msgstr ""
+
+#: fortran/check.c:515
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)"
+msgstr ""
+
+#: fortran/check.c:536
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a variable"
+msgstr ""
+
+#: fortran/check.c:585
+#, gcc-internal-format, gfc-internal-format
+msgid "'dim' argument of '%s' intrinsic at %L is not a valid codimension index"
+msgstr ""
+
+#: fortran/check.c:634
+#, gcc-internal-format, gfc-internal-format
+msgid "'dim' argument of '%s' intrinsic at %L is not a valid dimension index"
+msgstr ""
+
+#: fortran/check.c:732
+#, gcc-internal-format, gfc-internal-format
+msgid "Unequal character lengths (%ld/%ld) in %s at %L"
+msgstr ""
+
+#: fortran/check.c:854 fortran/check.c:5162
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have the same type"
+msgstr ""
+
+#: fortran/check.c:863 fortran/check.c:1793 fortran/check.c:1919
+#: fortran/check.c:1993 fortran/check.c:2345
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Different type kinds at %L"
+msgstr ""
+
+#: fortran/check.c:901
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
+msgstr ""
+
+#: fortran/check.c:910 fortran/check.c:946 fortran/check.c:2853
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L shall not be coindexed"
+msgstr ""
+
+#: fortran/check.c:928
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a pointer or target VARIABLE or FUNCTION"
+msgstr ""
+
+#: fortran/check.c:937
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER or a TARGET"
+msgstr ""
+
+#: fortran/check.c:962
+#, gcc-internal-format, gfc-internal-format
+msgid "Array section with a vector subscript at %L shall not be the target of a pointer"
+msgstr ""
+
+#: fortran/check.c:973
+#, gcc-internal-format, gfc-internal-format
+msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function"
+msgstr ""
+
+#: fortran/check.c:1012
+#, gcc-internal-format, gfc-internal-format
+msgid "ATOM argument at %L to intrinsic function %s shall be an integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND"
+msgstr ""
+
+#: fortran/check.c:1020
+#, gcc-internal-format, gfc-internal-format
+msgid "ATOM argument at %L of the %s intrinsic function shall be a coarray or coindexed"
+msgstr ""
+
+#: fortran/check.c:1027
+#, gcc-internal-format, gfc-internal-format
+msgid "ATOM and VALUE argument of the %s intrinsic function shall have the same type at %L"
+msgstr ""
+
+#: fortran/check.c:1045
+#, gcc-internal-format, gfc-internal-format
+msgid "ATOM argument of the %s intrinsic function at %L shall be definable"
+msgstr ""
+
+#: fortran/check.c:1062
+#, gcc-internal-format, gfc-internal-format
+msgid "VALUE argument of the %s intrinsic function at %L shall be definable"
+msgstr ""
+
+#: fortran/check.c:1082
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Negative argument N at %L"
+msgstr ""
+
+#: fortran/check.c:1254 fortran/check.c:1413
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must not be present if 'x' is COMPLEX"
+msgstr ""
+
+#: fortran/check.c:1263 fortran/check.c:1422
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must have a type of either REAL or INTEGER"
+msgstr ""
+
+#: fortran/check.c:1307 fortran/check.c:1838 fortran/check.c:1941
+#: fortran/check.c:2135 fortran/check.c:2180 fortran/check.c:3382
+#: fortran/check.c:3516 fortran/check.c:3571 fortran/check.c:4106
+#: fortran/check.c:4235
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: '%s' intrinsic with KIND argument at %L"
+msgstr ""
+
+#: fortran/check.c:1354 fortran/check.c:1604
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L has invalid shape in dimension %d (%ld/%ld)"
+msgstr ""
+
+#: fortran/check.c:1369 fortran/check.c:1619 fortran/check.c:1647
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of intrinsic '%s' at %L of must have rank %d or be a scalar"
+msgstr ""
+
+#: fortran/check.c:1472 fortran/check.c:2439 fortran/check.c:2447
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be numeric or LOGICAL"
+msgstr ""
+
+#: fortran/check.c:1486
+#, gcc-internal-format, gfc-internal-format
+msgid "Different shape for arguments '%s' and '%s' at %L for intrinsic 'dot_product'"
+msgstr ""
+
+#: fortran/check.c:1505 fortran/check.c:1513
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be default real"
+msgstr ""
+
+#: fortran/check.c:1534
+#, gcc-internal-format, gfc-internal-format
+msgid "'I' at %L and 'J' at %L cannot both be BOZ literal constants"
+msgstr ""
+
+#: fortran/check.c:1665
+#, gcc-internal-format, gfc-internal-format
+msgid "GNU extension: non-default INTEGER kind argument to %s intrinsic at %L"
+msgstr ""
+
+#: fortran/check.c:1725
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: COMPLEX argument '%s' argument of '%s' intrinsic at %L"
+msgstr ""
+
+#: fortran/check.c:1889
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of %s at %L must be of length one"
+msgstr ""
+
+#: fortran/check.c:1948
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be the same kind as '%s'"
+msgstr ""
+
+#: fortran/check.c:2038
+#, gcc-internal-format, gfc-internal-format
+msgid "SIZE at %L must be positive"
+msgstr ""
+
+#: fortran/check.c:2050
+#, gcc-internal-format, gfc-internal-format
+msgid "The absolute value of SHIFT at %L must be less than or equal to SIZE at %L"
+msgstr ""
+
+#: fortran/check.c:2111
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
+msgstr ""
+
+#: fortran/check.c:2318
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic '%s' at %L must have at least two arguments"
+msgstr ""
+
+#: fortran/check.c:2351
+#, gcc-internal-format, gfc-internal-format
+msgid "'a%d' argument of '%s' intrinsic at %L must be %s(%d)"
+msgstr ""
+
+#: fortran/check.c:2382
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: '%s' intrinsic with CHARACTER argument at %L"
+msgstr ""
+
+#: fortran/check.c:2389
+#, gcc-internal-format, gfc-internal-format
+msgid "'a1' argument of '%s' intrinsic at %L must be INTEGER, REAL or CHARACTER"
+msgstr ""
+
+#: fortran/check.c:2456
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument types of '%s' intrinsic at %L must match (%s/%s)"
+msgstr ""
+
+#: fortran/check.c:2470
+#, gcc-internal-format, gfc-internal-format
+msgid "Different shape on dimension 1 for arguments '%s' and '%s' at %L for intrinsic matmul"
+msgstr ""
+
+#: fortran/check.c:2489
+#, gcc-internal-format, gfc-internal-format
+msgid "Different shape on dimension 2 for argument '%s' and dimension 1 for argument '%s' at %L for intrinsic matmul"
+msgstr ""
+
+#: fortran/check.c:2498
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of rank 1 or 2"
+msgstr ""
+
+#: fortran/check.c:2673
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER"
+msgstr ""
+
+#: fortran/check.c:2739
+#, gcc-internal-format, gfc-internal-format
+msgid "The TO arguments in MOVE_ALLOC at %L must be polymorphic if FROM is polymorphic"
+msgstr ""
+
+#: fortran/check.c:2750
+#, gcc-internal-format, gfc-internal-format
+msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must have the same rank %d/%d"
+msgstr ""
+
+#: fortran/check.c:2759
+#, gcc-internal-format, gfc-internal-format
+msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must be of the same kind %d/%d"
+msgstr ""
+
+#: fortran/check.c:2788
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument 'S' of NEAREST at %L shall not be zero"
+msgstr ""
+
+#: fortran/check.c:2838
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER, ALLOCATABLE or procedure pointer"
+msgstr ""
+
+#: fortran/check.c:2846
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: NULL intrinsic with allocatable MOLD at %L"
+msgstr ""
+
+#: fortran/check.c:2925 fortran/check.c:4182
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must provide at least as many elements as there are .TRUE. values in '%s' (%ld/%d)"
+msgstr ""
+
+#: fortran/check.c:2983
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of a dummy variable"
+msgstr ""
+
+#: fortran/check.c:2991
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of an OPTIONAL dummy variable"
+msgstr ""
+
+#: fortran/check.c:3010
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must not be a subobject of '%s'"
+msgstr ""
+
+#: fortran/check.c:3058
+#, gcc-internal-format, gfc-internal-format
+msgid "The argument of the RANK intrinsic at %L must be a data object"
+msgstr ""
+
+#: fortran/check.c:3162
+#, gcc-internal-format, gfc-internal-format
+msgid "'shape' argument of 'reshape' intrinsic at %L must be an array of constant size"
+msgstr ""
+
+#: fortran/check.c:3172
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L is empty"
+msgstr ""
+
+#: fortran/check.c:3179
+#, gcc-internal-format, gfc-internal-format
+msgid "'shape' argument of 'reshape' intrinsic at %L has more than %d elements"
+msgstr ""
+
+#: fortran/check.c:3196
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L has negative element (%d)"
+msgstr ""
+
+#: fortran/check.c:3236
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L has wrong number of elements (%d/%d)"
+msgstr ""
+
+#: fortran/check.c:3254
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L has out-of-range dimension (%d)"
+msgstr ""
+
+#: fortran/check.c:3263
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L has invalid permutation of dimensions (dimension '%d' duplicated)"
+msgstr ""
+
+#: fortran/check.c:3299
+#, gcc-internal-format, gfc-internal-format
+msgid "Without padding, there are not enough elements in the intrinsic RESHAPE source at %L to match the shape"
+msgstr ""
+
+#: fortran/check.c:3317 fortran/check.c:3335
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of a derived type"
+msgstr ""
+
+#: fortran/check.c:3326 fortran/check.c:3344
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of an extensible type"
+msgstr ""
+
+#: fortran/check.c:3443
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: SELECTED_REAL_KIND with neither 'P' nor 'R' argument at %L"
+msgstr ""
+
+#: fortran/check.c:3474
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: '%s' intrinsic with RADIX argument at %L"
+msgstr ""
+
+#: fortran/check.c:3509
+#, gcc-internal-format, gfc-internal-format
+msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size array"
+msgstr ""
+
+#: fortran/check.c:3586
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L may not be a procedure"
+msgstr ""
+
+#: fortran/check.c:3600
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be an interoperable data entity"
+msgstr ""
+
+#: fortran/check.c:3629
+#, gcc-internal-format, gfc-internal-format
+msgid "GNU extension: non double precision REAL argument to %s intrinsic at %L"
+msgstr ""
+
+#: fortran/check.c:3642
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be less than rank %d"
+msgstr ""
+
+#: fortran/check.c:3661
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L is not a valid dimension index"
+msgstr ""
+
+#: fortran/check.c:3924
+#, gcc-internal-format, gfc-internal-format
+msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
+msgstr ""
+
+#: fortran/check.c:3935
+#, gcc-internal-format, gfc-internal-format
+msgid "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall be %d (corank) not %d"
+msgstr ""
+
+#: fortran/check.c:3959
+#, gcc-internal-format, gfc-internal-format
+msgid "DIM argument without ARRAY argument not allowed for THIS_IMAGE intrinsic at %L"
+msgstr ""
+
+#: fortran/check.c:4046
+#, gcc-internal-format, gfc-internal-format
+msgid "'MOLD' argument of 'TRANSFER' intrinsic at %L must not be %s"
+msgstr ""
+
+#: fortran/check.c:4074
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %ld < result size %ld"
+msgstr ""
+
+#: fortran/check.c:4196
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must have the same rank as '%s' or be a scalar"
+msgstr ""
+
+#: fortran/check.c:4209
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have identical shape."
+msgstr ""
+
+#: fortran/check.c:4468 fortran/check.c:4500
+#, gcc-internal-format, gfc-internal-format
+msgid "Size of '%s' argument of '%s' intrinsic at %L too small (%i/%i)"
+msgstr ""
+
+#: fortran/check.c:4508
+#, gcc-internal-format, gfc-internal-format
+msgid "Too many arguments to %s at %L"
+msgstr ""
+
+#: fortran/check.c:4794
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of a kind not wider than the default kind (%d)"
+msgstr ""
+
+#: fortran/check.c:5146 fortran/check.c:5154
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL"
+msgstr ""
+
+#: fortran/class.c:470
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed size polymorphic objects or components, such as that at %C, have not yet been implemented"
+msgstr ""
+
+#. Since the extension field is 8 bit wide, we can only have
+#. up to 255 extension levels.
+#: fortran/class.c:556 fortran/decl.c:7561
+#, gcc-internal-format, gfc-internal-format
+msgid "Maximum extension level reached with type '%s' at %L"
+msgstr ""
+
+#: fortran/class.c:948 fortran/class.c:1022
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' of '%s' is PRIVATE at %L"
+msgstr ""
+
+#: fortran/cpp.c:443
+#, gcc-internal-format
+msgid "To enable preprocessing, use -cpp"
+msgstr ""
+
+#: fortran/cpp.c:540 fortran/cpp.c:551 fortran/cpp.c:657
+#, gcc-internal-format, gfc-internal-format
+msgid "opening output file %s: %s"
+msgstr ""
+
+#: fortran/data.c:65
+#, gcc-internal-format, gfc-internal-format
+msgid "non-constant array in DATA statement %L"
+msgstr ""
+
+#: fortran/data.c:134
+#, gcc-internal-format, gfc-internal-format
+msgid "failure to simplify substring reference in DATA statement at %L"
+msgstr ""
+
+#: fortran/data.c:158
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialization string starting at %L was truncated to fit the variable (%d/%d)"
+msgstr ""
+
+#: fortran/data.c:247
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L already is initialized at %L"
+msgstr ""
+
+#: fortran/data.c:271
+#, gcc-internal-format, gfc-internal-format
+msgid "Data element below array lower bound at %L"
+msgstr ""
+
+#: fortran/data.c:288 fortran/data.c:377
+#, gcc-internal-format, gfc-internal-format
+msgid "Data element above array upper bound at %L"
+msgstr ""
+
+#: fortran/data.c:317 fortran/data.c:483
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: re-initialization of '%s' at %L"
+msgstr ""
+
+#: fortran/decl.c:264
+#, gcc-internal-format, gfc-internal-format
+msgid "Host associated variable '%s' may not be in the DATA statement at %C"
+msgstr ""
+
+#: fortran/decl.c:271
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: initialization of common block variable '%s' in DATA statement at %C"
+msgstr ""
+
+#: fortran/decl.c:380
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' must be a PARAMETER in DATA statement at %C"
+msgstr ""
+
+#: fortran/decl.c:405
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid initializer %s in Data statement at %C"
+msgstr ""
+
+#: fortran/decl.c:508
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialization at %C is not allowed in a PURE procedure"
+msgstr ""
+
+#: fortran/decl.c:570
+#, gcc-internal-format, gfc-internal-format
+msgid "DATA statement at %C is not allowed in a PURE procedure"
+msgstr ""
+
+#: fortran/decl.c:658
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad INTENT specification at %C"
+msgstr ""
+
+#: fortran/decl.c:679
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: deferred type parameter at %C"
+msgstr ""
+
+#: fortran/decl.c:716
+#, gcc-internal-format, gfc-internal-format
+msgid "Conflict in attributes of function argument at %C"
+msgstr ""
+
+#: fortran/decl.c:741
+#, gcc-internal-format, gfc-internal-format
+msgid "Obsolescent feature: Old-style character length at %C"
+msgstr ""
+
+#: fortran/decl.c:773
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in character length specification at %C"
+msgstr ""
+
+#: fortran/decl.c:896
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %C is already defined at %L"
+msgstr ""
+
+#: fortran/decl.c:904
+#, gcc-internal-format, gfc-internal-format
+msgid "Name '%s' at %C is already defined as a generic interface at %L"
+msgstr ""
+
+#: fortran/decl.c:917
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %C has an explicit interface and must not have attributes declared at %L"
+msgstr ""
+
+#: fortran/decl.c:989
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L must have the BIND(C) attribute to be C interoperable"
+msgstr ""
+
+#: fortran/decl.c:1017
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L is a dummy argument to the BIND(C) procedure '%s' but is not C interoperable because derived type '%s' is not C interoperable"
+msgstr ""
+
+#: fortran/decl.c:1024
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L is a dummy argument to the BIND(C) procedure '%s' but is not C interoperable because it is polymorphic"
+msgstr ""
+
+#: fortran/decl.c:1030
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L is a parameter to the BIND(C) procedure '%s' but may not be C interoperable"
+msgstr ""
+
+#: fortran/decl.c:1045
+#, gcc-internal-format, gfc-internal-format
+msgid "Character argument '%s' at %L must be length 1 because procedure '%s' is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1059
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L cannot have the ALLOCATABLE attribute because procedure '%s' is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1068
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L cannot have the POINTER attribute because procedure '%s' is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1077
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L cannot have both the OPTIONAL and the VALUE attribute because procedure '%s' is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1084
+#, gcc-internal-format, gfc-internal-format
+msgid "TS29113: Variable '%s' at %L with OPTIONAL attribute in procedure '%s' which is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1098
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1108
+#, gcc-internal-format, gfc-internal-format
+msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1189
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:1231
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER expression at %L is being truncated (%d/%d)"
+msgstr ""
+
+#: fortran/decl.c:1238
+#, gcc-internal-format, gfc-internal-format
+msgid "The CHARACTER elements of the array constructor at %L must have the same length (%d/%d)"
+msgstr ""
+
+#: fortran/decl.c:1328
+#, gcc-internal-format, gfc-internal-format
+msgid "Initializer not allowed for PARAMETER '%s' at %C"
+msgstr ""
+
+#: fortran/decl.c:1338
+#, gcc-internal-format, gfc-internal-format
+msgid "PARAMETER at %L is missing an initializer"
+msgstr ""
+
+#: fortran/decl.c:1348
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %C with an initializer already appears in a DATA statement"
+msgstr ""
+
+#: fortran/decl.c:1429
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't initialize implied-shape array at %L with scalar"
+msgstr ""
+
+#: fortran/decl.c:1447
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-constant lower bound in implied-shape declaration at %L"
+msgstr ""
+
+#: fortran/decl.c:1542
+#, gcc-internal-format, gfc-internal-format
+msgid "Component at %C must have the POINTER attribute"
+msgstr ""
+
+#: fortran/decl.c:1550
+#, gcc-internal-format, gfc-internal-format
+msgid "Array component of structure at %C must have explicit or deferred shape"
+msgstr ""
+
+#: fortran/decl.c:1631
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer array component of structure at %C must have a deferred shape"
+msgstr ""
+
+#: fortran/decl.c:1640
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable component of structure at %C must have a deferred shape"
+msgstr ""
+
+#: fortran/decl.c:1649
+#, gcc-internal-format, gfc-internal-format
+msgid "Array component of structure at %C must have an explicit shape"
+msgstr ""
+
+#: fortran/decl.c:1683
+#, gcc-internal-format, gfc-internal-format
+msgid "NULL() initialization at %C is ambiguous"
+msgstr ""
+
+#: fortran/decl.c:1710
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialization of pointer at %C is not allowed in a PURE procedure"
+msgstr ""
+
+#: fortran/decl.c:1730
+#, gcc-internal-format, gfc-internal-format
+msgid "Error in pointer initialization at %C"
+msgstr ""
+
+#: fortran/decl.c:1737
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: non-NULL pointer initialization at %C"
+msgstr ""
+
+#: fortran/decl.c:1760
+#, gcc-internal-format, gfc-internal-format
+msgid "Function name '%s' not allowed at %C"
+msgstr ""
+
+#: fortran/decl.c:1823
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-PARAMETER symbol '%s' at %L can't be implied-shape"
+msgstr ""
+
+#: fortran/decl.c:1834
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Implied-shape array at %L"
+msgstr ""
+
+#: fortran/decl.c:1898 fortran/decl.c:6418
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate array spec for Cray pointee at %C"
+msgstr ""
+
+#: fortran/decl.c:1969
+#, gcc-internal-format, gfc-internal-format
+msgid "The type of '%s' at %C has not been declared within the interface"
+msgstr ""
+
+#: fortran/decl.c:1993
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Old-style initialization at %C"
+msgstr ""
+
+#: fortran/decl.c:2008 fortran/decl.c:4916
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialization at %C isn't for a pointer variable"
+msgstr ""
+
+#: fortran/decl.c:2021
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer initialization at %C requires '=>', not '='"
+msgstr ""
+
+#: fortran/decl.c:2030 fortran/decl.c:7713
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected an initialization expression at %C"
+msgstr ""
+
+#: fortran/decl.c:2037
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialization of variable at %C is not allowed in a PURE procedure"
+msgstr ""
+
+#: fortran/decl.c:2050
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialization of allocatable component at %C is not allowed"
+msgstr ""
+
+#: fortran/decl.c:2104 fortran/decl.c:2140
+#, gcc-internal-format, gfc-internal-format
+msgid "Old-style type declaration %s*%d not supported at %C"
+msgstr ""
+
+#: fortran/decl.c:2145
+#, gcc-internal-format, gfc-internal-format
+msgid "Nonstandard type declaration %s*%d at %C"
+msgstr ""
+
+#: fortran/decl.c:2196 fortran/decl.c:2272
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing right parenthesis at %C"
+msgstr ""
+
+#: fortran/decl.c:2209 fortran/decl.c:2343
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected initialization expression at %C"
+msgstr ""
+
+#: fortran/decl.c:2217 fortran/decl.c:2349
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected scalar initialization expression at %C"
+msgstr ""
+
+#: fortran/decl.c:2248
+#, gcc-internal-format, gfc-internal-format
+msgid "Kind %d not supported for type %s at %C"
+msgstr ""
+
+#: fortran/decl.c:2261
+#, gcc-internal-format, gfc-internal-format
+msgid "C kind type parameter is for type %s but type at %L is %s"
+msgstr ""
+
+#: fortran/decl.c:2270
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing right parenthesis or comma at %C"
+msgstr ""
+
+#: fortran/decl.c:2369
+#, gcc-internal-format, gfc-internal-format
+msgid "Kind %d is not supported for CHARACTER at %C"
+msgstr ""
+
+#: fortran/decl.c:2501
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in CHARACTER declaration at %C"
+msgstr ""
+
+#: fortran/decl.c:2586
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: BYTE type at %C"
+msgstr ""
+
+#: fortran/decl.c:2592
+#, gcc-internal-format, gfc-internal-format
+msgid "BYTE type used at %C is not available on the target machine"
+msgstr ""
+
+#: fortran/decl.c:2618 fortran/decl.c:2649 fortran/decl.c:2679
+#: fortran/decl.c:2829
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: TYPE with intrinsic-type-spec at %C"
+msgstr ""
+
+#: fortran/decl.c:2674
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: DOUBLE COMPLEX at %C"
+msgstr ""
+
+#: fortran/decl.c:2712
+#, gcc-internal-format, gfc-internal-format
+msgid "Unlimited polymorphism at %C not yet supported"
+msgstr ""
+
+#: fortran/decl.c:2721
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: CLASS statement at %C"
+msgstr ""
+
+#: fortran/decl.c:2757 fortran/decl.c:2770 fortran/decl.c:3144
+#: fortran/decl.c:3152
+#, gcc-internal-format, gfc-internal-format
+msgid "Type name '%s' at %C is ambiguous"
+msgstr ""
+
+#: fortran/decl.c:2785
+#, gcc-internal-format, gfc-internal-format
+msgid "Type name '%s' at %C conflicts with previously declared entity at %L, which has the same name"
+msgstr ""
+
+#: fortran/decl.c:2905
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing character range in IMPLICIT at %C"
+msgstr ""
+
+#: fortran/decl.c:2951
+#, gcc-internal-format, gfc-internal-format
+msgid "Letters must be in alphabetic order in IMPLICIT statement at %C"
+msgstr ""
+
+#: fortran/decl.c:3007
+#, gcc-internal-format, gfc-internal-format
+msgid "Empty IMPLICIT statement at %C"
+msgstr ""
+
+#: fortran/decl.c:3109
+#, gcc-internal-format, gfc-internal-format
+msgid "IMPORT statement at %C only permitted in an INTERFACE body"
+msgstr ""
+
+#: fortran/decl.c:3114
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: IMPORT statement at %C"
+msgstr ""
+
+#: fortran/decl.c:3129
+#, gcc-internal-format, gfc-internal-format
+msgid "Expecting list of named entities at %C"
+msgstr ""
+
+#: fortran/decl.c:3158
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot IMPORT '%s' from host scoping unit at %C - does not exist."
+msgstr ""
+
+#: fortran/decl.c:3165
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' is already IMPORTed from host scoping unit at %C."
+msgstr ""
+
+#: fortran/decl.c:3208
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in IMPORT statement at %C"
+msgstr ""
+
+#: fortran/decl.c:3507
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing codimension specification at %C"
+msgstr ""
+
+#: fortran/decl.c:3509
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing dimension specification at %C"
+msgstr ""
+
+#: fortran/decl.c:3592
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate %s attribute at %L"
+msgstr ""
+
+#: fortran/decl.c:3611
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ALLOCATABLE attribute at %C in a TYPE definition"
+msgstr ""
+
+#: fortran/decl.c:3621
+#, gcc-internal-format, gfc-internal-format
+msgid "Attribute at %L is not allowed in a TYPE definition"
+msgstr ""
+
+#: fortran/decl.c:3639
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Attribute %s at %L in a TYPE definition"
+msgstr ""
+
+#: fortran/decl.c:3650
+#, gcc-internal-format, gfc-internal-format
+msgid "%s attribute at %L is not allowed outside of the specification part of a module"
+msgstr ""
+
+#: fortran/decl.c:3665
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ASYNCHRONOUS attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:3678
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: CONTIGUOUS attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:3724 fortran/decl.c:6713
+#, gcc-internal-format, gfc-internal-format
+msgid "PROTECTED at %C only allowed in specification part of a module"
+msgstr ""
+
+#: fortran/decl.c:3730
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: PROTECTED attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:3761
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: VALUE attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:3771
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: VOLATILE attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:3816
+#, gcc-internal-format, gfc-internal-format
+msgid "Multiple identifiers provided with single NAME= specifier at %C"
+msgstr ""
+
+#: fortran/decl.c:3913
+#, gcc-internal-format, gfc-internal-format
+msgid "Implicitly declared BIND(C) function '%s' at %L may not be C interoperable"
+msgstr ""
+
+#: fortran/decl.c:3934
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' in common block '%s' at %L may not be a C interoperable kind though common block '%s' is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:3943
+#, gcc-internal-format, gfc-internal-format
+msgid "Type declaration '%s' at %L is not C interoperable but it is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:3947
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L may not be a C interoperable kind but it is bind(c)"
+msgstr ""
+
+#: fortran/decl.c:3959
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' in common block '%s' at %L cannot be declared with BIND(C) since it is not a global"
+msgstr ""
+
+#: fortran/decl.c:3973
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes"
+msgstr ""
+
+#: fortran/decl.c:3981
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L cannot have both the ALLOCATABLE and BIND(C) attributes"
+msgstr ""
+
+#: fortran/decl.c:3993
+#, gcc-internal-format, gfc-internal-format
+msgid "Return type of BIND(C) function '%s' at %L cannot be an array"
+msgstr ""
+
+#: fortran/decl.c:4001
+#, gcc-internal-format, gfc-internal-format
+msgid "Return type of BIND(C) function '%s' at %L cannot be a character string"
+msgstr ""
+
+#. Use gfc_warning_now because we won't say that the symbol fails
+#. just because of this.
+#: fortran/decl.c:4012
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %L is marked PRIVATE but has been given the binding label '%s'"
+msgstr ""
+
+#: fortran/decl.c:4088
+#, gcc-internal-format, gfc-internal-format
+msgid "Need either entity or common block name for attribute specification statement at %C"
+msgstr ""
+
+#: fortran/decl.c:4135
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing entity or common block name for attribute specification statement at %C"
+msgstr ""
+
+#. Now we have an error, which we signal, and then fix up
+#. because the knock-on is plain and simple confusing.
+#: fortran/decl.c:4244
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type at %C has not been previously defined and so cannot appear in a derived type definition"
+msgstr ""
+
+#: fortran/decl.c:4276
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in data declaration at %C"
+msgstr ""
+
+#: fortran/decl.c:4350
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: IMPURE procedure at %C"
+msgstr ""
+
+#: fortran/decl.c:4363
+#, gcc-internal-format, gfc-internal-format
+msgid "PURE and IMPURE must not appear both at %C"
+msgstr ""
+
+#: fortran/decl.c:4469
+#, gcc-internal-format, gfc-internal-format
+msgid "Name '%s' at %C is the name of the procedure"
+msgstr ""
+
+#: fortran/decl.c:4481
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk in formal argument list at %C"
+msgstr ""
+
+#: fortran/decl.c:4498
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate symbol '%s' in formal argument list at %C"
+msgstr ""
+
+#: fortran/decl.c:4549
+#, gcc-internal-format, gfc-internal-format
+msgid "RESULT variable at %C must be different than function name"
+msgstr ""
+
+#: fortran/decl.c:4626
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after function declaration at %C"
+msgstr ""
+
+#: fortran/decl.c:4636 fortran/decl.c:5670
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: BIND(C) attribute at %L may not be specified for an internal procedure"
+msgstr ""
+
+#: fortran/decl.c:4780
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface '%s' at %C may not be generic"
+msgstr ""
+
+#: fortran/decl.c:4786
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface '%s' at %C may not be a statement function"
+msgstr ""
+
+#: fortran/decl.c:4799
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:4854
+#, gcc-internal-format, gfc-internal-format
+msgid "BIND(C) attribute at %C requires an interface with BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:4861
+#, gcc-internal-format, gfc-internal-format
+msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:4867
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME"
+msgstr ""
+
+#: fortran/decl.c:4891
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L already has basic type of %s"
+msgstr ""
+
+#: fortran/decl.c:4940 fortran/decl.c:5108 fortran/decl.c:8195
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in PROCEDURE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:4989 fortran/decl.c:8096
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected '::' after binding-attributes at %C"
+msgstr ""
+
+#: fortran/decl.c:4996
+#, gcc-internal-format, gfc-internal-format
+msgid "NOPASS or explicit interface required at %C"
+msgstr ""
+
+#: fortran/decl.c:5000
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Procedure pointer component at %C"
+msgstr ""
+
+#: fortran/decl.c:5065
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in procedure pointer component at %C"
+msgstr ""
+
+#: fortran/decl.c:5082
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE at %C must be in a generic interface"
+msgstr ""
+
+#: fortran/decl.c:5148
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: PROCEDURE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:5216
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected formal argument list in function definition at %C"
+msgstr ""
+
+#: fortran/decl.c:5240 fortran/decl.c:5244 fortran/decl.c:5448
+#: fortran/decl.c:5452 fortran/decl.c:5638 fortran/decl.c:5642
+#: fortran/symbol.c:1588
+#, gcc-internal-format, gfc-internal-format
+msgid "BIND(C) attribute at %L can only be used for variables or common blocks"
+msgstr ""
+
+#: fortran/decl.c:5359
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008 obsolescent feature: ENTRY statement at %C"
+msgstr ""
+
+#: fortran/decl.c:5369
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a PROGRAM"
+msgstr ""
+
+#: fortran/decl.c:5372
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a MODULE"
+msgstr ""
+
+#: fortran/decl.c:5375
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a BLOCK DATA"
+msgstr ""
+
+#: fortran/decl.c:5379
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within an INTERFACE"
+msgstr ""
+
+#: fortran/decl.c:5383
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block"
+msgstr ""
+
+#: fortran/decl.c:5387
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within an IF-THEN block"
+msgstr ""
+
+#: fortran/decl.c:5392
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a DO block"
+msgstr ""
+
+#: fortran/decl.c:5396
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a SELECT block"
+msgstr ""
+
+#: fortran/decl.c:5400
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a FORALL block"
+msgstr ""
+
+#: fortran/decl.c:5404
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a WHERE block"
+msgstr ""
+
+#: fortran/decl.c:5408
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear within a contained subprogram"
+msgstr ""
+
+#: fortran/decl.c:5426
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY statement at %C cannot appear in a contained procedure"
+msgstr ""
+
+#: fortran/decl.c:5480 fortran/decl.c:5678
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing required parentheses before BIND(C) at %C"
+msgstr ""
+
+#: fortran/decl.c:5736 fortran/decl.c:5752
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in NAME= specifier for binding label at %C"
+msgstr ""
+
+#: fortran/decl.c:5767
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing closing quote '\"' for binding label at %C"
+msgstr ""
+
+#: fortran/decl.c:5776
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing closing quote ''' for binding label at %C"
+msgstr ""
+
+#: fortran/decl.c:5786
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing closing paren for binding label at %C"
+msgstr ""
+
+#: fortran/decl.c:5792
+#, gcc-internal-format, gfc-internal-format
+msgid "No binding name is allowed in BIND(C) at %C"
+msgstr ""
+
+#: fortran/decl.c:5798
+#, gcc-internal-format, gfc-internal-format
+msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C"
+msgstr ""
+
+#: fortran/decl.c:5827
+#, gcc-internal-format, gfc-internal-format
+msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C"
+msgstr ""
+
+#: fortran/decl.c:6032
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected END statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6040
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: END statement instead of %s statement at %L"
+msgstr ""
+
+#. We would have required END [something].
+#: fortran/decl.c:6048
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement expected at %L"
+msgstr ""
+
+#: fortran/decl.c:6059
+#, gcc-internal-format, gfc-internal-format
+msgid "Expecting %s statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6075
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected block name of '%s' in %s statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6092
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected terminating name at %C"
+msgstr ""
+
+#: fortran/decl.c:6101 fortran/decl.c:6109
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected label '%s' for %s statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6174
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing array specification at %L in DIMENSION statement"
+msgstr ""
+
+#: fortran/decl.c:6182
+#, gcc-internal-format, gfc-internal-format
+msgid "Dimensions specified for %s at %L after its initialisation"
+msgstr ""
+
+#: fortran/decl.c:6190
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing array specification at %L in CODIMENSION statement"
+msgstr ""
+
+#: fortran/decl.c:6199
+#, gcc-internal-format, gfc-internal-format
+msgid "Array specification must be deferred at %L"
+msgstr ""
+
+#: fortran/decl.c:6298
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected character in variable list at %C"
+msgstr ""
+
+#: fortran/decl.c:6335
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected '(' at %C"
+msgstr ""
+
+#: fortran/decl.c:6349 fortran/decl.c:6389
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected variable name at %C"
+msgstr ""
+
+#: fortran/decl.c:6365
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray pointer at %C must be an integer"
+msgstr ""
+
+#: fortran/decl.c:6369
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray pointer at %C has %d bytes of precision; memory addresses require %d bytes"
+msgstr ""
+
+#: fortran/decl.c:6375
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected \",\" at %C"
+msgstr ""
+
+#: fortran/decl.c:6438
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected \")\" at %C"
+msgstr ""
+
+#: fortran/decl.c:6450
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected \",\" or end of statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6476
+#, gcc-internal-format, gfc-internal-format
+msgid "INTENT is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/decl.c:6508
+#, gcc-internal-format, gfc-internal-format
+msgid "OPTIONAL is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/decl.c:6527
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray pointer declaration at %C requires -fcray-pointer flag"
+msgstr ""
+
+#: fortran/decl.c:6566
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: CONTIGUOUS statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6664
+#, gcc-internal-format, gfc-internal-format
+msgid "Access specification of the %s operator at %C has already been specified"
+msgstr ""
+
+#: fortran/decl.c:6681
+#, gcc-internal-format, gfc-internal-format
+msgid "Access specification of the .%s. operator at %C has already been specified"
+msgstr ""
+
+#: fortran/decl.c:6719
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: PROTECTED statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6759
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in PROTECTED statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6783
+#, gcc-internal-format, gfc-internal-format
+msgid "PRIVATE statement at %C is only allowed in the specification part of a module"
+msgstr ""
+
+#: fortran/decl.c:6820
+#, gcc-internal-format, gfc-internal-format
+msgid "PUBLIC statement at %C is only allowed in the specification part of a module"
+msgstr ""
+
+#: fortran/decl.c:6848
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected variable name at %C in PARAMETER statement"
+msgstr ""
+
+#: fortran/decl.c:6855
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected = sign in PARAMETER statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6861
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected expression at %C in PARAMETER statement"
+msgstr ""
+
+#: fortran/decl.c:6881
+#, gcc-internal-format, gfc-internal-format
+msgid "Initializing already initialized variable at %C"
+msgstr ""
+
+#: fortran/decl.c:6916
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected characters in PARAMETER statement at %C"
+msgstr ""
+
+#: fortran/decl.c:6940
+#, gcc-internal-format, gfc-internal-format
+msgid "Blanket SAVE statement at %C follows previous SAVE statement"
+msgstr ""
+
+#: fortran/decl.c:6952
+#, gcc-internal-format, gfc-internal-format
+msgid "SAVE statement at %C follows blanket SAVE statement"
+msgstr ""
+
+#: fortran/decl.c:6999
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in SAVE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7013
+#, gcc-internal-format, gfc-internal-format
+msgid "VALUE is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/decl.c:7017
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: VALUE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7057
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in VALUE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7068
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: VOLATILE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7092
+#, gcc-internal-format, gfc-internal-format
+msgid "Specifying VOLATILE for coarray variable '%s' at %C, which is use-/host-associated"
+msgstr ""
+
+#: fortran/decl.c:7118
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in VOLATILE statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7129
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ASYNCHRONOUS statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7171
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in ASYNCHRONOUS statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7195
+#, gcc-internal-format, gfc-internal-format
+msgid "MODULE PROCEDURE at %C must be in a generic module interface"
+msgstr ""
+
+#: fortran/decl.c:7220
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: double colon in MODULE PROCEDURE statement at %L"
+msgstr ""
+
+#: fortran/decl.c:7254
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE"
+msgstr ""
+
+#: fortran/decl.c:7303
+#, gcc-internal-format, gfc-internal-format
+msgid "Ambiguous symbol in TYPE definition at %C"
+msgstr ""
+
+#: fortran/decl.c:7309
+#, gcc-internal-format, gfc-internal-format
+msgid "No such symbol in TYPE definition at %C"
+msgstr ""
+
+#: fortran/decl.c:7317
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' in EXTENDS expression at %C is not a derived type"
+msgstr ""
+
+#: fortran/decl.c:7324
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' cannot be extended at %C because it is BIND(C)"
+msgstr ""
+
+#: fortran/decl.c:7331
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' cannot be extended at %C because it is a SEQUENCE type"
+msgstr ""
+
+#: fortran/decl.c:7354
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type at %C can only be PRIVATE in the specification part of a module"
+msgstr ""
+
+#: fortran/decl.c:7366
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type at %C can only be PUBLIC in the specification part of a module"
+msgstr ""
+
+#: fortran/decl.c:7387
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ABSTRACT type at %C"
+msgstr ""
+
+#: fortran/decl.c:7452
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected :: in TYPE definition at %C"
+msgstr ""
+
+#: fortran/decl.c:7463
+#, gcc-internal-format, gfc-internal-format
+msgid "Type name '%s' at %C cannot be the same as an intrinsic type"
+msgstr ""
+
+#: fortran/decl.c:7473
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type name '%s' at %C already has a basic type of %s"
+msgstr ""
+
+#: fortran/decl.c:7490
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type definition of '%s' at %C has already been defined"
+msgstr ""
+
+#: fortran/decl.c:7598
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray Pointee at %C cannot be assumed shape array"
+msgstr ""
+
+#: fortran/decl.c:7618
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ENUM and ENUMERATOR at %C"
+msgstr ""
+
+#: fortran/decl.c:7651
+#, gcc-internal-format, gfc-internal-format
+msgid "Enumerator exceeds the C integer type at %C"
+msgstr ""
+
+#: fortran/decl.c:7730
+#, gcc-internal-format, gfc-internal-format
+msgid "ENUMERATOR %L not initialized with integer expression"
+msgstr ""
+
+#: fortran/decl.c:7778
+#, gcc-internal-format, gfc-internal-format
+msgid "ENUM definition statement expected before %C"
+msgstr ""
+
+#: fortran/decl.c:7814
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in ENUMERATOR definition at %C"
+msgstr ""
+
+#: fortran/decl.c:7861 fortran/decl.c:7876
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate access-specifier at %C"
+msgstr ""
+
+#: fortran/decl.c:7896
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding attributes already specify passing, illegal NOPASS at %C"
+msgstr ""
+
+#: fortran/decl.c:7916
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding attributes already specify passing, illegal PASS at %C"
+msgstr ""
+
+#: fortran/decl.c:7943
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate POINTER attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:7961
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate NON_OVERRIDABLE at %C"
+msgstr ""
+
+#: fortran/decl.c:7977
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate DEFERRED at %C"
+msgstr ""
+
+#: fortran/decl.c:7990
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected access-specifier at %C"
+msgstr ""
+
+#: fortran/decl.c:7992
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected binding attribute at %C"
+msgstr ""
+
+#: fortran/decl.c:8000
+#, gcc-internal-format, gfc-internal-format
+msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C"
+msgstr ""
+
+#: fortran/decl.c:8012
+#, gcc-internal-format, gfc-internal-format
+msgid "POINTER attribute is required for procedure pointer component at %C"
+msgstr ""
+
+#: fortran/decl.c:8054
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface-name expected after '(' at %C"
+msgstr ""
+
+#: fortran/decl.c:8060
+#, gcc-internal-format, gfc-internal-format
+msgid "')' expected at %C"
+msgstr ""
+
+#: fortran/decl.c:8080
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface must be specified for DEFERRED binding at %C"
+msgstr ""
+
+#: fortran/decl.c:8085
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE(interface) at %C should be declared DEFERRED"
+msgstr ""
+
+#: fortran/decl.c:8108
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected binding name at %C"
+msgstr ""
+
+#: fortran/decl.c:8112
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: PROCEDURE list at %C"
+msgstr ""
+
+#: fortran/decl.c:8125
+#, gcc-internal-format, gfc-internal-format
+msgid "'=> target' is invalid for DEFERRED binding at %C"
+msgstr ""
+
+#: fortran/decl.c:8131
+#, gcc-internal-format, gfc-internal-format
+msgid "'::' needed in PROCEDURE binding with explicit target at %C"
+msgstr ""
+
+#: fortran/decl.c:8141
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected binding target after '=>' at %C"
+msgstr ""
+
+#: fortran/decl.c:8158
+#, gcc-internal-format, gfc-internal-format
+msgid "Type '%s' containing DEFERRED binding at %C is not ABSTRACT"
+msgstr ""
+
+#: fortran/decl.c:8169
+#, gcc-internal-format, gfc-internal-format
+msgid "There is already a procedure with binding name '%s' for the derived type '%s' at %C"
+msgstr ""
+
+#: fortran/decl.c:8218
+#, gcc-internal-format, gfc-internal-format
+msgid "GENERIC at %C must be inside a derived-type CONTAINS"
+msgstr ""
+
+#: fortran/decl.c:8238
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected '::' at %C"
+msgstr ""
+
+#: fortran/decl.c:8250
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected generic name or operator descriptor at %C"
+msgstr ""
+
+#: fortran/decl.c:8276
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected '=>' at %C"
+msgstr ""
+
+#: fortran/decl.c:8318
+#, gcc-internal-format, gfc-internal-format
+msgid "There's already a non-generic procedure with binding name '%s' for the derived type '%s' at %C"
+msgstr ""
+
+#: fortran/decl.c:8326
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding at %C must have the same access as already defined binding '%s'"
+msgstr ""
+
+#: fortran/decl.c:8375
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected specific binding name at %C"
+msgstr ""
+
+#: fortran/decl.c:8385
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' already defined as specific binding for the generic '%s' at %C"
+msgstr ""
+
+#: fortran/decl.c:8403
+#, gcc-internal-format, gfc-internal-format
+msgid "Junk after GENERIC binding at %C"
+msgstr ""
+
+#: fortran/decl.c:8438
+#, gcc-internal-format, gfc-internal-format
+msgid "FINAL declaration at %C must be inside a derived type CONTAINS section"
+msgstr ""
+
+#: fortran/decl.c:8449
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type declaration with FINAL at %C must be in the specification part of a MODULE"
+msgstr ""
+
+#: fortran/decl.c:8471
+#, gcc-internal-format, gfc-internal-format
+msgid "Empty FINAL at %C"
+msgstr ""
+
+#: fortran/decl.c:8478
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected module procedure name at %C"
+msgstr ""
+
+#: fortran/decl.c:8488
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected ',' at %C"
+msgstr ""
+
+#: fortran/decl.c:8494
+#, gcc-internal-format, gfc-internal-format
+msgid "Unknown procedure name \"%s\" at %C"
+msgstr ""
+
+#: fortran/decl.c:8508
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %C is already defined as FINAL procedure!"
+msgstr ""
+
+#: fortran/decl.c:8577
+#, gcc-internal-format, gfc-internal-format
+msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C"
+msgstr ""
+
+#: fortran/decl.c:8624
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C"
+msgstr ""
+
+#. We are told not to check dependencies.
+#. We do it, however, and issue a warning in case we find one.
+#. If a dependency is found in the case
+#. elemental == ELEM_CHECK_VARIABLE, we will generate
+#. a temporary, so we don't need to bother the user.
+#: fortran/dependency.c:720
+#, gcc-internal-format, gfc-internal-format
+msgid "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
+msgstr ""
+
+#: fortran/error.c:301
+#, gcc-internal-format, gfc-internal-format
+msgid " Included at %s:%d:"
+msgstr ""
+
+#: fortran/error.c:385
+#, gcc-internal-format
+msgid "<During initialization>\n"
+msgstr ""
+
+#: fortran/error.c:719
+#, gcc-internal-format, gfc-internal-format
+msgid "Error count reached limit of %d."
+msgstr ""
+
+#: fortran/error.c:975
+#, gcc-internal-format
+msgid "Internal Error at (1):"
+msgstr ""
+
+#: fortran/expr.c:1229
+#, gcc-internal-format, gfc-internal-format
+msgid "Index in dimension %d is out of bounds at %L"
+msgstr ""
+
+#: fortran/expr.c:1408 fortran/expr.c:1459
+#, gcc-internal-format, gfc-internal-format
+msgid "index in dimension %d is out of bounds at %L"
+msgstr ""
+
+#: fortran/expr.c:2073
+#, gcc-internal-format, gfc-internal-format
+msgid "elemental function arguments at %C are not compliant"
+msgstr ""
+
+#: fortran/expr.c:2117
+#, gcc-internal-format, gfc-internal-format
+msgid "Numeric or CHARACTER operands are required in expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2142
+#, gcc-internal-format, gfc-internal-format
+msgid "Concatenation operator in expression at %L must have two CHARACTER operands"
+msgstr ""
+
+#: fortran/expr.c:2149
+#, gcc-internal-format, gfc-internal-format
+msgid "Concat operator at %L must concatenate strings of the same kind"
+msgstr ""
+
+#: fortran/expr.c:2159
+#, gcc-internal-format, gfc-internal-format
+msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
+msgstr ""
+
+#: fortran/expr.c:2175
+#, gcc-internal-format, gfc-internal-format
+msgid "LOGICAL operands are required in expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2186
+#, gcc-internal-format, gfc-internal-format
+msgid "Only intrinsic operators can be used in expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2194
+#, gcc-internal-format, gfc-internal-format
+msgid "Numeric operands are required in expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2217
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid initialization expression for ALLOCATABLE component '%s' in structure constructor at %L"
+msgstr ""
+
+#: fortran/expr.c:2315
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed or deferred character length variable '%s' in constant expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2381
+#, gcc-internal-format, gfc-internal-format
+msgid "transformational intrinsic '%s' at %L is not permitted in an initialization expression"
+msgstr ""
+
+#: fortran/expr.c:2412
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Evaluation of nonstandard initialization expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2468
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' in initialization expression at %L must be an intrinsic function"
+msgstr ""
+
+#: fortran/expr.c:2480
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic function '%s' at %L is not permitted in an initialization expression"
+msgstr ""
+
+#: fortran/expr.c:2515
+#, gcc-internal-format, gfc-internal-format
+msgid "PARAMETER '%s' is used at %L before its definition is complete"
+msgstr ""
+
+#: fortran/expr.c:2535
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed size array '%s' at %L is not permitted in an initialization expression"
+msgstr ""
+
+#: fortran/expr.c:2541
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed shape array '%s' at %L is not permitted in an initialization expression"
+msgstr ""
+
+#: fortran/expr.c:2547
+#, gcc-internal-format, gfc-internal-format
+msgid "Deferred array '%s' at %L is not permitted in an initialization expression"
+msgstr ""
+
+#: fortran/expr.c:2553
+#, gcc-internal-format, gfc-internal-format
+msgid "Array '%s' at %L is a variable, which does not reduce to a constant expression"
+msgstr ""
+
+#: fortran/expr.c:2563
+#, gcc-internal-format, gfc-internal-format
+msgid "Parameter '%s' at %L has not been declared or is a variable, which does not reduce to a constant expression"
+msgstr ""
+
+#: fortran/expr.c:2716
+#, gcc-internal-format, gfc-internal-format
+msgid "Specification function '%s' at %L cannot be a statement function"
+msgstr ""
+
+#: fortran/expr.c:2723
+#, gcc-internal-format, gfc-internal-format
+msgid "Specification function '%s' at %L cannot be an internal function"
+msgstr ""
+
+#: fortran/expr.c:2730
+#, gcc-internal-format, gfc-internal-format
+msgid "Specification function '%s' at %L must be PURE"
+msgstr ""
+
+#: fortran/expr.c:2737
+#, gcc-internal-format, gfc-internal-format
+msgid "Specification function '%s' at %L cannot be RECURSIVE"
+msgstr ""
+
+#: fortran/expr.c:2871
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' not allowed in expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2878
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' at %L cannot be OPTIONAL"
+msgstr ""
+
+#: fortran/expr.c:2885
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
+msgstr ""
+
+#: fortran/expr.c:2916
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' cannot appear in the expression at %L"
+msgstr ""
+
+#: fortran/expr.c:2967
+#, gcc-internal-format, gfc-internal-format
+msgid "Expression at %L must be of INTEGER type, found %s"
+msgstr ""
+
+#: fortran/expr.c:2979
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' at %L must be PURE"
+msgstr ""
+
+#: fortran/expr.c:2988
+#, gcc-internal-format, gfc-internal-format
+msgid "Expression at %L must be scalar"
+msgstr ""
+
+#: fortran/expr.c:3022
+#, gcc-internal-format, gfc-internal-format
+msgid "Incompatible ranks in %s (%d and %d) at %L"
+msgstr ""
+
+#: fortran/expr.c:3036
+#, gcc-internal-format, gfc-internal-format
+msgid "Different shape for %s at %L on dimension %d (%d and %d)"
+msgstr ""
+
+#: fortran/expr.c:3125
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L is not a VALUE"
+msgstr ""
+
+#: fortran/expr.c:3132
+#, gcc-internal-format, gfc-internal-format
+msgid "Incompatible ranks %d and %d in assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3139
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable type is UNKNOWN in assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3151
+#, gcc-internal-format, gfc-internal-format
+msgid "NULL appears on right-hand side in assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3161
+#, gcc-internal-format, gfc-internal-format
+msgid "POINTER valued function appears on right-hand side of assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3171
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
+msgstr ""
+
+#: fortran/expr.c:3177 fortran/resolve.c:9095
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
+msgstr ""
+
+#: fortran/expr.c:3187 fortran/resolve.c:9105
+#, gcc-internal-format, gfc-internal-format
+msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
+msgstr ""
+
+#: fortran/expr.c:3195 fortran/resolve.c:9114
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
+msgstr ""
+
+#: fortran/expr.c:3199 fortran/resolve.c:9118
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
+msgstr ""
+
+#: fortran/expr.c:3203 fortran/resolve.c:9122
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
+msgstr ""
+
+#: fortran/expr.c:3235
+#, gcc-internal-format, gfc-internal-format
+msgid "Change of value in conversion from %s to %s at %L"
+msgstr ""
+
+#: fortran/expr.c:3243 fortran/intrinsic.c:4335 fortran/intrinsic.c:4347
+#, gcc-internal-format, gfc-internal-format
+msgid "Possible change of value in conversion from %s to %s at %L"
+msgstr ""
+
+#: fortran/expr.c:3251 fortran/intrinsic.c:4330 fortran/intrinsic.c:4356
+#, gcc-internal-format, gfc-internal-format
+msgid "Conversion from %s to %s at %L"
+msgstr ""
+
+#: fortran/expr.c:3272
+#, gcc-internal-format, gfc-internal-format
+msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
+msgstr ""
+
+#: fortran/expr.c:3308
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer assignment target is not a POINTER at %L"
+msgstr ""
+
+#: fortran/expr.c:3317
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' in the pointer assignment at %L cannot be an l-value since it is a procedure"
+msgstr ""
+
+#: fortran/expr.c:3340
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected bounds specification for '%s' at %L"
+msgstr ""
+
+#: fortran/expr.c:3345
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3359
+#, gcc-internal-format, gfc-internal-format
+msgid "Lower bound has to be present at %L"
+msgstr ""
+
+#: fortran/expr.c:3365
+#, gcc-internal-format, gfc-internal-format
+msgid "Stride must not be present at %L"
+msgstr ""
+
+#: fortran/expr.c:3377
+#, gcc-internal-format, gfc-internal-format
+msgid "Either all or none of the upper bounds must be specified at %L"
+msgstr ""
+
+#: fortran/expr.c:3403
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer object at %L shall not have a coindex"
+msgstr ""
+
+#: fortran/expr.c:3424
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid procedure pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3430
+#, gcc-internal-format, gfc-internal-format
+msgid "Abstract interface '%s' is invalid in procedure pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3440
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement function '%s' is invalid in procedure pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3446
+#, gcc-internal-format, gfc-internal-format
+msgid "Internal procedure '%s' is invalid in procedure pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3454
+#, gcc-internal-format, gfc-internal-format
+msgid "Nonintrinsic elemental procedure '%s' is invalid in procedure pointer assigment at %L"
+msgstr ""
+
+#: fortran/expr.c:3477
+#, gcc-internal-format, gfc-internal-format
+msgid "Mismatch in the procedure pointer assignment at %L: mismatch in the calling convention"
+msgstr ""
+
+#: fortran/expr.c:3508
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface mismatch in procedure pointer assignment at %L: %s"
+msgstr ""
+
+#: fortran/expr.c:3518
+#, gcc-internal-format, gfc-internal-format
+msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s"
+msgstr ""
+
+#: fortran/expr.c:3526
+#, gcc-internal-format, gfc-internal-format
+msgid "Different kind type parameters in pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3533
+#, gcc-internal-format, gfc-internal-format
+msgid "Different ranks in pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3552
+#, gcc-internal-format, gfc-internal-format
+msgid "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L"
+msgstr ""
+
+#: fortran/expr.c:3565
+#, gcc-internal-format, gfc-internal-format
+msgid "Rank remapping target must be rank 1 or simply contiguous at %L"
+msgstr ""
+
+#: fortran/expr.c:3569
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Rank remapping target is not rank 1 at %L"
+msgstr ""
+
+#: fortran/expr.c:3594
+#, gcc-internal-format, gfc-internal-format
+msgid "Target expression in pointer assignment at %L must deliver a pointer result"
+msgstr ""
+
+#: fortran/expr.c:3602
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
+msgstr ""
+
+#: fortran/expr.c:3609
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad target in pointer assignment in PURE procedure at %L"
+msgstr ""
+
+#: fortran/expr.c:3619
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer assignment with vector subscript on rhs at %L"
+msgstr ""
+
+#: fortran/expr.c:3627
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer assignment target has PROTECTED attribute at %L"
+msgstr ""
+
+#: fortran/expr.c:3640
+#, gcc-internal-format, gfc-internal-format
+msgid "Data target at %L shall not have a coindex"
+msgstr ""
+
+#: fortran/expr.c:3688
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer initialization target at %C must not be ALLOCATABLE "
+msgstr ""
+
+#: fortran/expr.c:3694
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer initialization target at %C must have the TARGET attribute"
+msgstr ""
+
+#: fortran/expr.c:3700
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer initialization target at %C must have the SAVE attribute"
+msgstr ""
+
+#: fortran/expr.c:3712
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure pointer initialization target at %L may not be a procedure pointer"
+msgstr ""
+
+#: fortran/expr.c:4593
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Pointer functions in variable definition context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4601
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-variable expression in variable definition context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4609
+#, gcc-internal-format, gfc-internal-format
+msgid "Named constant '%s' in variable definition context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4618
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' in variable definition context (%s) at %L is not a variable"
+msgstr ""
+
+#: fortran/expr.c:4629
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-POINTER in pointer association context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4642
+#, gcc-internal-format, gfc-internal-format
+msgid "LOCK_TYPE in variable definition context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4668
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4676
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4689
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4697
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
+msgstr ""
+
+#: fortran/expr.c:4709
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
+msgstr ""
+
+#: fortran/expr.c:4768
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
+msgstr ""
+
+#: fortran/expr.c:4772
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
+msgstr ""
+
+#: fortran/expr.c:4784
+#, gcc-internal-format, gfc-internal-format
+msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
+msgstr ""
+
+#: fortran/f95-lang.c:222
+#, gcc-internal-format
+msgid "Unexpected type in truthvalue_conversion"
+msgstr ""
+
+#: fortran/f95-lang.c:284
+#, gcc-internal-format, gfc-internal-format
+msgid "can't open input file: %s"
+msgstr ""
+
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
+#: fortran/trans-intrinsic.c:5422
+#, gcc-internal-format, gfc-internal-format
+msgid "Creating array temporary at %L"
+msgstr ""
+
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
+#, gcc-internal-format, gfc-internal-format
+msgid "Removing call to function '%s' at %L"
+msgstr ""
+
+#: fortran/gfortranspec.c:170
+#, gcc-internal-format
+msgid "overflowed output arg list for %qs"
+msgstr ""
+
+#: fortran/gfortranspec.c:330
+#, gcc-internal-format
+msgid "no input files; unwilling to write output files"
+msgstr ""
+
+#: fortran/interface.c:176
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in generic specification at %C"
+msgstr ""
+
+#: fortran/interface.c:203
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error: Trailing garbage in INTERFACE statement at %C"
+msgstr ""
+
+#: fortran/interface.c:222
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy procedure '%s' at %C cannot have a generic interface"
+msgstr ""
+
+#: fortran/interface.c:255
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ABSTRACT INTERFACE at %C"
+msgstr ""
+
+#: fortran/interface.c:263
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in ABSTRACT INTERFACE statement at %C"
+msgstr ""
+
+#: fortran/interface.c:294
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error: Trailing garbage in END INTERFACE statement at %C"
+msgstr ""
+
+#: fortran/interface.c:307
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected a nameless interface at %C"
+msgstr ""
+
+#: fortran/interface.c:320
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected 'END INTERFACE ASSIGNMENT (=)' at %C"
+msgstr ""
+
+#: fortran/interface.c:350
+#, gcc-internal-format, gfc-internal-format
+msgid "Expecting 'END INTERFACE OPERATOR (%s)' at %C, but got %s"
+msgstr ""
+
+#: fortran/interface.c:364
+#, gcc-internal-format, gfc-internal-format
+msgid "Expecting 'END INTERFACE OPERATOR (.%s.)' at %C"
+msgstr ""
+
+#: fortran/interface.c:375
+#, gcc-internal-format, gfc-internal-format
+msgid "Expecting 'END INTERFACE %s' at %C"
+msgstr ""
+
+#: fortran/interface.c:607
+#, gcc-internal-format, gfc-internal-format
+msgid "Alternate return cannot appear in operator interface at %L"
+msgstr ""
+
+#: fortran/interface.c:635
+#, gcc-internal-format, gfc-internal-format
+msgid "Operator interface at %L has the wrong number of arguments"
+msgstr ""
+
+#: fortran/interface.c:646
+#, gcc-internal-format, gfc-internal-format
+msgid "Assignment operator interface at %L must be a SUBROUTINE"
+msgstr ""
+
+#: fortran/interface.c:652
+#, gcc-internal-format, gfc-internal-format
+msgid "Assignment operator interface at %L must have two arguments"
+msgstr ""
+
+#: fortran/interface.c:669
+#, gcc-internal-format, gfc-internal-format
+msgid "Assignment operator interface at %L must not redefine an INTRINSIC type assignment"
+msgstr ""
+
+#: fortran/interface.c:678
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic operator interface at %L must be a FUNCTION"
+msgstr ""
+
+#: fortran/interface.c:689
+#, gcc-internal-format, gfc-internal-format
+msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)"
+msgstr ""
+
+#: fortran/interface.c:696
+#, gcc-internal-format, gfc-internal-format
+msgid "Second argument of defined assignment at %L must be INTENT(IN)"
+msgstr ""
+
+#: fortran/interface.c:705 fortran/resolve.c:13759
+#, gcc-internal-format, gfc-internal-format
+msgid "First argument of operator interface at %L must be INTENT(IN)"
+msgstr ""
+
+#: fortran/interface.c:712 fortran/resolve.c:13777
+#, gcc-internal-format, gfc-internal-format
+msgid "Second argument of operator interface at %L must be INTENT(IN)"
+msgstr ""
+
+#: fortran/interface.c:817
+#, gcc-internal-format, gfc-internal-format
+msgid "Operator interface at %L conflicts with intrinsic interface"
+msgstr ""
+
+#: fortran/interface.c:1270
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' in %s at %L has no explicit interface"
+msgstr ""
+
+#: fortran/interface.c:1273
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' in %s at %L is neither function nor subroutine"
+msgstr ""
+
+#: fortran/interface.c:1285
+#, gcc-internal-format, gfc-internal-format
+msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
+msgstr ""
+
+#: fortran/interface.c:1289
+#, gcc-internal-format, gfc-internal-format
+msgid "In %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived type"
+msgstr ""
+
+#: fortran/interface.c:1297
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Internal procedure '%s' in %s at %L"
+msgstr ""
+
+#: fortran/interface.c:1354 fortran/interface.c:1358
+#, gcc-internal-format, gfc-internal-format
+msgid "Ambiguous interfaces '%s' and '%s' in %s at %L"
+msgstr ""
+
+#: fortran/interface.c:1362
+#, gcc-internal-format, gfc-internal-format
+msgid "Although not referenced, '%s' has ambiguous interfaces at %L"
+msgstr ""
+
+#: fortran/interface.c:1396
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L is not a module procedure"
+msgstr ""
+
+#: fortran/interface.c:1606
+#, gcc-internal-format, gfc-internal-format
+msgid "Rank mismatch in argument '%s' at %L (scalar and rank-%d)"
+msgstr ""
+
+#: fortran/interface.c:1611
+#, gcc-internal-format, gfc-internal-format
+msgid "Rank mismatch in argument '%s' at %L (rank-%d and scalar)"
+msgstr ""
+
+#: fortran/interface.c:1616
+#, gcc-internal-format, gfc-internal-format
+msgid "Rank mismatch in argument '%s' at %L (rank-%d and rank-%d)"
+msgstr ""
+
+#: fortran/interface.c:1658
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid procedure argument at %L"
+msgstr ""
+
+#: fortran/interface.c:1666
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface mismatch in dummy procedure '%s' at %L: %s"
+msgstr ""
+
+#: fortran/interface.c:1691
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument to contiguous pointer dummy '%s' at %L must be simply contigous"
+msgstr ""
+
+#: fortran/interface.c:1704
+#, gcc-internal-format, gfc-internal-format
+msgid "Type mismatch in argument '%s' at %L; passed %s to %s"
+msgstr ""
+
+#: fortran/interface.c:1718
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument to '%s' at %L must be polymorphic"
+msgstr ""
+
+#: fortran/interface.c:1726
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument to '%s' at %L must have the same declared type"
+msgstr ""
+
+#: fortran/interface.c:1735
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument to '%s' at %L must be a coarray"
+msgstr ""
+
+#: fortran/interface.c:1754
+#, gcc-internal-format, gfc-internal-format
+msgid "Corank mismatch in argument '%s' at %L (%d and %d)"
+msgstr ""
+
+#: fortran/interface.c:1771
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument to '%s' at %L must be simply contiguous"
+msgstr ""
+
+#: fortran/interface.c:1785
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument to non-INTENT(INOUT) dummy '%s' at %L, which is LOCK_TYPE or has a LOCK_TYPE component"
+msgstr ""
+
+#: fortran/interface.c:1802
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' has to be a pointer or assumed-shape array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILE"
+msgstr ""
+
+#: fortran/interface.c:1815
+#, gcc-internal-format, gfc-internal-format
+msgid "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument '%s'"
+msgstr ""
+
+#: fortran/interface.c:1822
+#, gcc-internal-format, gfc-internal-format
+msgid "Passing coarray at %L to allocatable, noncoarray dummy argument '%s', which is invalid if the allocation status is modified"
+msgstr ""
+
+#: fortran/interface.c:1884
+#, gcc-internal-format, gfc-internal-format
+msgid "Polymorphic scalar passed to array dummy argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:1893
+#, gcc-internal-format, gfc-internal-format
+msgid "Element of assumed-shaped or pointer array passed to array dummy argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:1905
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:1913
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2213
+#, gcc-internal-format, gfc-internal-format
+msgid "Keyword argument '%s' at %L is not in the procedure"
+msgstr ""
+
+#: fortran/interface.c:2221
+#, gcc-internal-format, gfc-internal-format
+msgid "Keyword argument '%s' at %L is already associated with another actual argument"
+msgstr ""
+
+#: fortran/interface.c:2231
+#, gcc-internal-format, gfc-internal-format
+msgid "More actual than formal arguments in procedure call at %L"
+msgstr ""
+
+#: fortran/interface.c:2243 fortran/interface.c:2569
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing alternate return spec in subroutine call at %L"
+msgstr ""
+
+#: fortran/interface.c:2251
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected alternate return spec in subroutine call at %L"
+msgstr ""
+
+#: fortran/interface.c:2261
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected NULL() intrinsic at %L to dummy '%s'"
+msgstr ""
+
+#: fortran/interface.c:2264
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Null pointer at %L to non-pointer dummy '%s'"
+msgstr ""
+
+#: fortran/interface.c:2288
+#, gcc-internal-format, gfc-internal-format
+msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2295
+#, gcc-internal-format, gfc-internal-format
+msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2309
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument at %L to allocatable or pointer dummy argument '%s' must have a deferred length type parameter if and only if the dummy has one"
+msgstr ""
+
+#: fortran/interface.c:2326
+#, gcc-internal-format, gfc-internal-format
+msgid "Character length of actual argument shorter than of dummy argument '%s' (%lu/%lu) at %L"
+msgstr ""
+
+#: fortran/interface.c:2331
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument contains too few elements for dummy argument '%s' (%lu/%lu) at %L"
+msgstr ""
+
+#: fortran/interface.c:2350
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected a procedure pointer for argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2362
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected a procedure for argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2376
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument for '%s' cannot be an assumed-size array at %L"
+msgstr ""
+
+#: fortran/interface.c:2385
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument for '%s' must be a pointer at %L"
+msgstr ""
+
+#: fortran/interface.c:2395
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy '%s'"
+msgstr ""
+
+#: fortran/interface.c:2405
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed actual argument at %L to pointer dummy '%s'"
+msgstr ""
+
+#: fortran/interface.c:2418
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed actual argument at %L to allocatable dummy '%s' requires INTENT(IN)"
+msgstr ""
+
+#: fortran/interface.c:2432
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy '%s' has neither ASYNCHRONOUS nor VOLATILE"
+msgstr ""
+
+#: fortran/interface.c:2446
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed actual argument at %L with allocatable ultimate component to dummy '%s' requires either VALUE or INTENT(IN)"
+msgstr ""
+
+#: fortran/interface.c:2458
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual CLASS array argument for '%s' must be a full array at %L"
+msgstr ""
+
+#: fortran/interface.c:2468
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument for '%s' must be ALLOCATABLE at %L"
+msgstr ""
+
+#: fortran/interface.c:2497
+#, gcc-internal-format, gfc-internal-format
+msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument '%s'"
+msgstr ""
+
+#: fortran/interface.c:2515
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute"
+msgstr ""
+
+#: fortran/interface.c:2527
+#, gcc-internal-format, gfc-internal-format
+msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute"
+msgstr ""
+
+#: fortran/interface.c:2546
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument '%s' due to VOLATILE attribute"
+msgstr ""
+
+#: fortran/interface.c:2576
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing actual argument for argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2762
+#, gcc-internal-format, gfc-internal-format
+msgid "Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) argument '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2818
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)"
+msgstr ""
+
+#: fortran/interface.c:2828
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure argument at %L is local to a PURE procedure and is passed to an INTENT(%s) argument"
+msgstr ""
+
+#: fortran/interface.c:2836
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute"
+msgstr ""
+
+#: fortran/interface.c:2848
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argument"
+msgstr ""
+
+#: fortran/interface.c:2856
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argument"
+msgstr ""
+
+#: fortran/interface.c:2867
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument '%s'"
+msgstr ""
+
+#: fortran/interface.c:2893
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' called with an implicit interface at %L"
+msgstr ""
+
+#: fortran/interface.c:2897
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' called at %L is not explicitly declared"
+msgstr ""
+
+#: fortran/interface.c:2907
+#, gcc-internal-format, gfc-internal-format
+msgid "The pointer object '%s' at %L must have an explicit function interface or be declared as array"
+msgstr ""
+
+#: fortran/interface.c:2915
+#, gcc-internal-format, gfc-internal-format
+msgid "The allocatable object '%s' at %L must have an explicit function interface or be declared as array"
+msgstr ""
+
+#: fortran/interface.c:2923
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable function '%s' at %L must have an explicit function interface"
+msgstr ""
+
+#: fortran/interface.c:2933
+#, gcc-internal-format, gfc-internal-format
+msgid "Keyword argument requires explicit interface for procedure '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2945
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure '%s'"
+msgstr ""
+
+#: fortran/interface.c:2954
+#, gcc-internal-format, gfc-internal-format
+msgid "MOLD argument to NULL required at %L"
+msgstr ""
+
+#: fortran/interface.c:2985
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure pointer component '%s' called with an implicit interface at %L"
+msgstr ""
+
+#: fortran/interface.c:2996
+#, gcc-internal-format, gfc-internal-format
+msgid "Keyword argument requires explicit interface for procedure pointer component '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:3076
+#, gcc-internal-format, gfc-internal-format
+msgid "MOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %s"
+msgstr ""
+
+#: fortran/interface.c:3527
+#, gcc-internal-format, gfc-internal-format
+msgid "Entity '%s' at %C is already present in the interface"
+msgstr ""
+
+#: fortran/interface.c:3724
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't overwrite GENERIC '%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:3736
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a procedure binding declared NON_OVERRIDABLE"
+msgstr ""
+
+#: fortran/interface.c:3744
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
+msgstr ""
+
+#: fortran/interface.c:3752
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a PURE procedure and must also be PURE"
+msgstr ""
+
+#: fortran/interface.c:3761
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
+msgstr ""
+
+#: fortran/interface.c:3767
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either"
+msgstr ""
+
+#: fortran/interface.c:3776
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
+msgstr ""
+
+#: fortran/interface.c:3787
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a FUNCTION and must also be a FUNCTION"
+msgstr ""
+
+#: fortran/interface.c:3797
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L and the overridden FUNCTION should have matching result types and ranks"
+msgstr ""
+
+#: fortran/interface.c:3813
+#, gcc-internal-format, gfc-internal-format
+msgid "Character length mismatch between '%s' at '%L' and overridden FUNCTION"
+msgstr ""
+
+#: fortran/interface.c:3818
+#, gcc-internal-format, gfc-internal-format
+msgid "Possible character length mismatch between '%s' at '%L' and overridden FUNCTION"
+msgstr ""
+
+#: fortran/interface.c:3838
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a PUBLIC procedure and must not be PRIVATE"
+msgstr ""
+
+#: fortran/interface.c:3867
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' of '%s' at %L should be named '%s' as to match the corresponding argument of the overridden procedure"
+msgstr ""
+
+#: fortran/interface.c:3878
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument mismatch for the overriding procedure '%s' at %L: %s"
+msgstr ""
+
+#: fortran/interface.c:3887
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L must have the same number of formal arguments as the overridden procedure"
+msgstr ""
+
+#: fortran/interface.c:3896
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a NOPASS binding and must also be NOPASS"
+msgstr ""
+
+#: fortran/interface.c:3907
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L overrides a binding with PASS and must also be PASS"
+msgstr ""
+
+#: fortran/interface.c:3914
+#, gcc-internal-format, gfc-internal-format
+msgid "Passed-object dummy argument of '%s' at %L must be at the same position as the passed-object dummy argument of the overridden procedure"
+msgstr ""
+
+#: fortran/intrinsic.c:935
+#, gcc-internal-format, gfc-internal-format
+msgid "The intrinsic '%s' at %L is not included in the selected standard but %s and '%s' will be treated as if declared EXTERNAL. Use an appropriate -std=* option or define -fall-intrinsics to allow this intrinsic."
+msgstr ""
+
+#: fortran/intrinsic.c:3518
+#, gcc-internal-format, gfc-internal-format
+msgid "Too many arguments in call to '%s' at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:3533
+#, gcc-internal-format, gfc-internal-format
+msgid "The argument list functions %%VAL, %%LOC or %%REF are not allowed in this context at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:3536
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't find keyword named '%s' in call to '%s' at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:3543
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' appears twice in call to '%s' at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:3557
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing actual argument '%s' in call to '%s' at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:3572
+#, gcc-internal-format, gfc-internal-format
+msgid "ALTERNATE RETURN not permitted at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:3629
+#, gcc-internal-format, gfc-internal-format
+msgid "Type of argument '%s' in call to '%s' at %L should be %s, not %s"
+msgstr ""
+
+#: fortran/intrinsic.c:4014
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic '%s' (is %s) is used at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:4085
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Function '%s' as initialization expression at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:4161
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Elemental function as initialization expression with non-integer/non-character arguments at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:4222
+#, gcc-internal-format, gfc-internal-format
+msgid "Subroutine call to intrinsic '%s' at %L is not PURE"
+msgstr ""
+
+#: fortran/intrinsic.c:4295
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Conversion from %s to %s at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:4409
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't convert %s to %s at %L"
+msgstr ""
+
+#: fortran/intrinsic.c:4503
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' declared at %L may shadow the intrinsic of the same name. In order to call the intrinsic, explicit INTRINSIC declarations may be required."
+msgstr ""
+
+#: fortran/intrinsic.c:4508
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' declared at %L is also the name of an intrinsic. It can only be called via an explicit interface or if declared EXTERNAL."
+msgstr ""
+
+#: fortran/io.c:168 fortran/primary.c:872
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: backslash character at %C"
+msgstr ""
+
+#: fortran/io.c:204 fortran/io.c:207
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Tab character in format at %C"
+msgstr ""
+
+#: fortran/io.c:453
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: DP format specifier not allowed at %C"
+msgstr ""
+
+#: fortran/io.c:460
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: DC format specifier not allowed at %C"
+msgstr ""
+
+#: fortran/io.c:649
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: X descriptor requires leading space count at %L"
+msgstr ""
+
+#: fortran/io.c:679
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: $ descriptor at %L"
+msgstr ""
+
+#: fortran/io.c:684
+#, gcc-internal-format, gfc-internal-format
+msgid "$ should be the last specifier in format at %L"
+msgstr ""
+
+#: fortran/io.c:782
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Missing positive width after L descriptor at %L"
+msgstr ""
+
+#: fortran/io.c:826
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: 'G0' in format at %L"
+msgstr ""
+
+#: fortran/io.c:854
+#, gcc-internal-format, gfc-internal-format
+msgid "Positive width required in format specifier %s at %L"
+msgstr ""
+
+#: fortran/io.c:870 fortran/io.c:877
+#, gcc-internal-format, gfc-internal-format
+msgid "Period required in format specifier %s at %L"
+msgstr ""
+
+#: fortran/io.c:949
+#, gcc-internal-format, gfc-internal-format
+msgid "Period required in format specifier at %L"
+msgstr ""
+
+#: fortran/io.c:971
+#, gcc-internal-format, gfc-internal-format
+msgid "The H format specifier at %L is a Fortran 95 deleted feature"
+msgstr ""
+
+#: fortran/io.c:1059 fortran/io.c:1122
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Missing comma at %L"
+msgstr ""
+
+#: fortran/io.c:1141
+#, gcc-internal-format, gfc-internal-format
+msgid "%s in format string at %L"
+msgstr ""
+
+#: fortran/io.c:1178
+#, gcc-internal-format, gfc-internal-format
+msgid "Extraneous characters in format at %L"
+msgstr ""
+
+#: fortran/io.c:1200
+#, gcc-internal-format, gfc-internal-format
+msgid "Format statement in module main block at %C"
+msgstr ""
+
+#: fortran/io.c:1206
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing format label at %C"
+msgstr ""
+
+#: fortran/io.c:1261 fortran/io.c:1292 fortran/io.c:1357
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid value for %s specification at %C"
+msgstr ""
+
+#: fortran/io.c:1267 fortran/io.c:1298
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate %s specification at %C"
+msgstr ""
+
+#: fortran/io.c:1305
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable %s cannot be INTENT(IN) at %C"
+msgstr ""
+
+#: fortran/io.c:1312
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable %s cannot be assigned in PURE procedure at %C"
+msgstr ""
+
+#: fortran/io.c:1363
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate %s label specification at %C"
+msgstr ""
+
+#: fortran/io.c:1383
+#, gcc-internal-format, gfc-internal-format
+msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
+msgstr ""
+
+#: fortran/io.c:1401
+#, gcc-internal-format, gfc-internal-format
+msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
+msgstr ""
+
+#: fortran/io.c:1407
+#, gcc-internal-format, gfc-internal-format
+msgid "Deleted feature: ASSIGNED variable in FORMAT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1413
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L has not been assigned a format label"
+msgstr ""
+
+#: fortran/io.c:1420
+#, gcc-internal-format, gfc-internal-format
+msgid "Scalar '%s' in FORMAT tag at %L is not an ASSIGNED variable"
+msgstr ""
+
+#: fortran/io.c:1432
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Non-character in FORMAT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1438
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-character assumed shape array element in FORMAT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1445
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-character assumed size array element in FORMAT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1452
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-character pointer array element in FORMAT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1478
+#, gcc-internal-format, gfc-internal-format
+msgid "%s tag at %L must be of type %s"
+msgstr ""
+
+#: fortran/io.c:1485
+#, gcc-internal-format, gfc-internal-format
+msgid "%s tag at %L must be a character string of default kind"
+msgstr ""
+
+#: fortran/io.c:1492
+#, gcc-internal-format, gfc-internal-format
+msgid "%s tag at %L must be scalar"
+msgstr ""
+
+#: fortran/io.c:1498
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: IOMSG tag at %L"
+msgstr ""
+
+#: fortran/io.c:1506
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 95 requires default INTEGER in %s tag at %L"
+msgstr ""
+
+#: fortran/io.c:1514
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Nondefault LOGICAL in %s tag at %L"
+msgstr ""
+
+#: fortran/io.c:1522
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: NEWUNIT specifier at %L"
+msgstr ""
+
+#: fortran/io.c:1540
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: CONVERT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1726 fortran/io.c:1734
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: %s specifier in %s statement at %C has value '%s'"
+msgstr ""
+
+#: fortran/io.c:1753 fortran/io.c:1761
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: %s specifier in %s statement at %C has value '%s'"
+msgstr ""
+
+#: fortran/io.c:1774 fortran/io.c:1782
+#, gcc-internal-format, gfc-internal-format
+msgid "%s specifier in %s statement at %C has invalid value '%s'"
+msgstr ""
+
+#: fortran/io.c:1835
+#, gcc-internal-format, gfc-internal-format
+msgid "OPEN statement not allowed in PURE procedure at %C"
+msgstr ""
+
+#: fortran/io.c:1849
+#, gcc-internal-format, gfc-internal-format
+msgid "UNIT specifier not allowed with NEWUNIT at %C"
+msgstr ""
+
+#: fortran/io.c:1857
+#, gcc-internal-format, gfc-internal-format
+msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %C"
+msgstr ""
+
+#: fortran/io.c:1864
+#, gcc-internal-format, gfc-internal-format
+msgid "OPEN statement at %C must have UNIT or NEWUNIT specified"
+msgstr ""
+
+#: fortran/io.c:1896
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ASYNCHRONOUS= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:1914 fortran/io.c:3363
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: BLANK= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:1932 fortran/io.c:3342
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: DECIMAL= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:1964
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ENCODING= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:2015 fortran/io.c:3405
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ROUND= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:2035
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: SIGN= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:2248
+#, gcc-internal-format, gfc-internal-format
+msgid "CLOSE statement not allowed in PURE procedure at %C"
+msgstr ""
+
+#: fortran/io.c:2308
+#, gcc-internal-format, gfc-internal-format
+msgid "CLOSE statement at %L requires a UNIT number"
+msgstr ""
+
+#: fortran/io.c:2316
+#, gcc-internal-format, gfc-internal-format
+msgid "UNIT number in CLOSE statement at %L must be non-negative"
+msgstr ""
+
+#: fortran/io.c:2414 fortran/match.c:2682
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement not allowed in PURE procedure at %C"
+msgstr ""
+
+#: fortran/io.c:2449 fortran/io.c:2881
+#, gcc-internal-format, gfc-internal-format
+msgid "UNIT number in statement at %L must be non-negative"
+msgstr ""
+
+#: fortran/io.c:2481
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: FLUSH statement at %C"
+msgstr ""
+
+#: fortran/io.c:2537
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate UNIT specification at %C"
+msgstr ""
+
+#: fortran/io.c:2611
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate format specification at %C"
+msgstr ""
+
+#: fortran/io.c:2628
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' in namelist '%s' is INTENT(IN) at %C"
+msgstr ""
+
+#: fortran/io.c:2664
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate NML specification at %C"
+msgstr ""
+
+#: fortran/io.c:2673
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %C must be a NAMELIST group name"
+msgstr ""
+
+#: fortran/io.c:2738
+#, gcc-internal-format, gfc-internal-format
+msgid "END tag at %C not allowed in output statement"
+msgstr ""
+
+#: fortran/io.c:2815
+#, gcc-internal-format, gfc-internal-format
+msgid "UNIT not specified at %L"
+msgstr ""
+
+#: fortran/io.c:2827
+#, gcc-internal-format, gfc-internal-format
+msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
+msgstr ""
+
+#: fortran/io.c:2849
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid form of WRITE statement at %L, UNIT required"
+msgstr ""
+
+#: fortran/io.c:2860
+#, gcc-internal-format, gfc-internal-format
+msgid "Internal unit with vector subscript at %L"
+msgstr ""
+
+#: fortran/io.c:2874
+#, gcc-internal-format, gfc-internal-format
+msgid "External IO UNIT cannot be an array at %L"
+msgstr ""
+
+#: fortran/io.c:2902
+#, gcc-internal-format, gfc-internal-format
+msgid "NAMELIST '%s' in READ statement at %L contains the symbol '%s' which may not appear in a variable definition context"
+msgstr ""
+
+#: fortran/io.c:2912
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Comma before i/o item list at %L"
+msgstr ""
+
+#: fortran/io.c:2922
+#, gcc-internal-format, gfc-internal-format
+msgid "ERR tag label %d at %L not defined"
+msgstr ""
+
+#: fortran/io.c:2934
+#, gcc-internal-format, gfc-internal-format
+msgid "END tag label %d at %L not defined"
+msgstr ""
+
+#: fortran/io.c:2946
+#, gcc-internal-format, gfc-internal-format
+msgid "EOR tag label %d at %L not defined"
+msgstr ""
+
+#: fortran/io.c:2956
+#, gcc-internal-format, gfc-internal-format
+msgid "FORMAT label %d at %L not defined"
+msgstr ""
+
+#: fortran/io.c:3078
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in I/O iterator at %C"
+msgstr ""
+
+#: fortran/io.c:3109
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected variable in READ statement at %C"
+msgstr ""
+
+#: fortran/io.c:3115
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected expression in %s statement at %C"
+msgstr ""
+
+#. A general purpose syntax error.
+#: fortran/io.c:3173 fortran/io.c:3772 fortran/gfortran.h:2465
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in %s statement at %C"
+msgstr ""
+
+#: fortran/io.c:3258
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Internal file at %L with namelist"
+msgstr ""
+
+#: fortran/io.c:3316
+#, gcc-internal-format, gfc-internal-format
+msgid "ASYNCHRONOUS= specifier at %L must be an initialization expression"
+msgstr ""
+
+#: fortran/io.c:3384
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: PAD= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:3450
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: DELIM= at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:3599
+#, gcc-internal-format, gfc-internal-format
+msgid "PRINT namelist at %C is an extension"
+msgstr ""
+
+#: fortran/io.c:3742
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected comma in I/O list at %C"
+msgstr ""
+
+#: fortran/io.c:3806
+#, gcc-internal-format, gfc-internal-format
+msgid "PRINT statement at %C not allowed within PURE procedure"
+msgstr ""
+
+#: fortran/io.c:3965 fortran/io.c:4019
+#, gcc-internal-format, gfc-internal-format
+msgid "INQUIRE statement not allowed in PURE procedure at %C"
+msgstr ""
+
+#: fortran/io.c:3995
+#, gcc-internal-format, gfc-internal-format
+msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
+msgstr ""
+
+#: fortran/io.c:4005 fortran/trans-io.c:1229
+#, gcc-internal-format, gfc-internal-format
+msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
+msgstr ""
+
+#: fortran/io.c:4012
+#, gcc-internal-format, gfc-internal-format
+msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
+msgstr ""
+
+#: fortran/io.c:4028
+#, gcc-internal-format, gfc-internal-format
+msgid "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
+msgstr ""
+
+#: fortran/io.c:4199
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: WAIT at %C not allowed in Fortran 95"
+msgstr ""
+
+#: fortran/io.c:4205
+#, gcc-internal-format, gfc-internal-format
+msgid "WAIT statement not allowed in PURE procedure at %C"
+msgstr ""
+
+#: fortran/match.c:165
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing ')' in statement at or before %L"
+msgstr ""
+
+#: fortran/match.c:170
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing '(' in statement at or before %L"
+msgstr ""
+
+#: fortran/match.c:367
+#, gcc-internal-format, gfc-internal-format
+msgid "Integer too large at %C"
+msgstr ""
+
+#: fortran/match.c:460 fortran/parse.c:693
+#, gcc-internal-format, gfc-internal-format
+msgid "Too many digits in statement label at %C"
+msgstr ""
+
+#: fortran/match.c:466
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement label at %C is zero"
+msgstr ""
+
+#: fortran/match.c:499
+#, gcc-internal-format, gfc-internal-format
+msgid "Label name '%s' at %C is ambiguous"
+msgstr ""
+
+#: fortran/match.c:505
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate construct label '%s' at %C"
+msgstr ""
+
+#: fortran/match.c:536
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid character in name at %C"
+msgstr ""
+
+#: fortran/match.c:549
+#, gcc-internal-format, gfc-internal-format
+msgid "Name at %C is too long"
+msgstr ""
+
+#: fortran/match.c:560
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension"
+msgstr ""
+
+#: fortran/match.c:610 fortran/match.c:657
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid C name in NAME= specifier at %C"
+msgstr ""
+
+#: fortran/match.c:648
+#, gcc-internal-format, gfc-internal-format
+msgid "Embedded space in NAME= specifier at %C"
+msgstr ""
+
+#: fortran/match.c:972
+#, gcc-internal-format, gfc-internal-format
+msgid "Loop variable at %C cannot be a coarray"
+msgstr ""
+
+#: fortran/match.c:978
+#, gcc-internal-format, gfc-internal-format
+msgid "Loop variable at %C cannot be a sub-component"
+msgstr ""
+
+#: fortran/match.c:1012
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected a step value in iterator at %C"
+msgstr ""
+
+#: fortran/match.c:1024
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in iterator at %C"
+msgstr ""
+
+#: fortran/match.c:1265
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid form of PROGRAM statement at %C"
+msgstr ""
+
+#: fortran/match.c:1395 fortran/match.c:1476
+#, gcc-internal-format, gfc-internal-format
+msgid "Obsolescent feature: Arithmetic IF statement at %C"
+msgstr ""
+
+#: fortran/match.c:1451
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in IF-expression at %C"
+msgstr ""
+
+#: fortran/match.c:1462
+#, gcc-internal-format, gfc-internal-format
+msgid "Block label not appropriate for arithmetic IF statement at %C"
+msgstr ""
+
+#: fortran/match.c:1500
+#, gcc-internal-format, gfc-internal-format
+msgid "Block label is not appropriate for IF statement at %C"
+msgstr ""
+
+#: fortran/match.c:1586
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot assign to a named constant at %C"
+msgstr ""
+
+#: fortran/match.c:1596
+#, gcc-internal-format, gfc-internal-format
+msgid "Unclassifiable statement in IF-clause at %C"
+msgstr ""
+
+#: fortran/match.c:1603
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in IF-clause at %C"
+msgstr ""
+
+#: fortran/match.c:1647
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after ELSE statement at %C"
+msgstr ""
+
+#: fortran/match.c:1653 fortran/match.c:1688
+#, gcc-internal-format, gfc-internal-format
+msgid "Label '%s' at %C doesn't match IF label '%s'"
+msgstr ""
+
+#: fortran/match.c:1682
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after ELSE IF statement at %C"
+msgstr ""
+
+#: fortran/match.c:1746
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement CRITICAL at %C in PURE procedure"
+msgstr ""
+
+#: fortran/match.c:1752
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement CRITICAL at %C in DO CONCURRENT block"
+msgstr ""
+
+#: fortran/match.c:1760
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: CRITICAL statement at %C"
+msgstr ""
+
+#: fortran/match.c:1772
+#, gcc-internal-format, gfc-internal-format
+msgid "Nested CRITICAL block at %C"
+msgstr ""
+
+#: fortran/match.c:1824
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected association list at %C"
+msgstr ""
+
+#: fortran/match.c:1837
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected association at %C"
+msgstr ""
+
+#: fortran/match.c:1846
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate name '%s' in association at %C"
+msgstr ""
+
+#: fortran/match.c:1854
+#, gcc-internal-format, gfc-internal-format
+msgid "Association target at %C must not be coindexed"
+msgstr ""
+
+#: fortran/match.c:1872
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected ')' or ',' at %C"
+msgstr ""
+
+#: fortran/match.c:1890
+#, gcc-internal-format, gfc-internal-format
+msgid "Junk after ASSOCIATE statement at %C"
+msgstr ""
+
+#: fortran/match.c:1959
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' at %L may not be ABSTRACT"
+msgstr ""
+
+#: fortran/match.c:2022
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid type-spec at %C"
+msgstr ""
+
+#: fortran/match.c:2116
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in FORALL iterator at %C"
+msgstr ""
+
+#: fortran/match.c:2384
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: DO CONCURRENT construct at %C"
+msgstr ""
+
+#: fortran/match.c:2510
+#, gcc-internal-format, gfc-internal-format
+msgid "Name '%s' in %s statement at %C is unknown"
+msgstr ""
+
+#: fortran/match.c:2518
+#, gcc-internal-format, gfc-internal-format
+msgid "Name '%s' in %s statement at %C is not a construct name"
+msgstr ""
+
+#: fortran/match.c:2530
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C leaves CRITICAL construct"
+msgstr ""
+
+#. F2008, C821 & C845.
+#: fortran/match.c:2538
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C leaves DO CONCURRENT construct"
+msgstr ""
+
+#: fortran/match.c:2550
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C is not within a construct"
+msgstr ""
+
+#: fortran/match.c:2553
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C is not within construct '%s'"
+msgstr ""
+
+#: fortran/match.c:2578
+#, gcc-internal-format, gfc-internal-format
+msgid "CYCLE statement at %C is not applicable to non-loop construct '%s'"
+msgstr ""
+
+#: fortran/match.c:2583
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: EXIT statement with no do-construct-name at %C"
+msgstr ""
+
+#: fortran/match.c:2589
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C is not applicable to construct '%s'"
+msgstr ""
+
+#: fortran/match.c:2596
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C leaving OpenMP structured block"
+msgstr ""
+
+#: fortran/match.c:2620
+#, gcc-internal-format, gfc-internal-format
+msgid "EXIT statement at %C terminating !$OMP DO loop"
+msgstr ""
+
+#: fortran/match.c:2625
+#, gcc-internal-format, gfc-internal-format
+msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
+msgstr ""
+
+#: fortran/match.c:2692
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement STOP at %C in CRITICAL block"
+msgstr ""
+
+#: fortran/match.c:2697
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement STOP at %C in DO CONCURRENT block"
+msgstr ""
+
+#: fortran/match.c:2705
+#, gcc-internal-format, gfc-internal-format
+msgid "STOP code at %L must be either INTEGER or CHARACTER type"
+msgstr ""
+
+#: fortran/match.c:2712
+#, gcc-internal-format, gfc-internal-format
+msgid "STOP code at %L must be scalar"
+msgstr ""
+
+#: fortran/match.c:2720
+#, gcc-internal-format, gfc-internal-format
+msgid "STOP code at %L must be default character KIND=%d"
+msgstr ""
+
+#: fortran/match.c:2728
+#, gcc-internal-format, gfc-internal-format
+msgid "STOP code at %L must be default integer KIND=%d"
+msgstr ""
+
+#: fortran/match.c:2774
+#, gcc-internal-format, gfc-internal-format
+msgid "Deleted feature: PAUSE statement at %C"
+msgstr ""
+
+#: fortran/match.c:2797
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: ERROR STOP statement at %C"
+msgstr ""
+
+#: fortran/match.c:2823
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement %s at %C in PURE procedure"
+msgstr ""
+
+#: fortran/match.c:2839
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement %s at %C in CRITICAL block"
+msgstr ""
+
+#: fortran/match.c:2846
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement %s at %C in DO CONCURRENT block"
+msgstr ""
+
+#: fortran/match.c:2876 fortran/match.c:3087 fortran/match.c:3599
+#: fortran/match.c:3923
+#, gcc-internal-format, gfc-internal-format
+msgid "Redundant STAT tag found at %L "
+msgstr ""
+
+#: fortran/match.c:2897 fortran/match.c:3107 fortran/match.c:3626
+#: fortran/match.c:3949
+#, gcc-internal-format, gfc-internal-format
+msgid "Redundant ERRMSG tag found at %L "
+msgstr ""
+
+#: fortran/match.c:2918
+#, gcc-internal-format, gfc-internal-format
+msgid "Redundant ACQUIRED_LOCK tag found at %L "
+msgstr ""
+
+#: fortran/match.c:2979
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: LOCK statement at %C"
+msgstr ""
+
+#: fortran/match.c:2990
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: UNLOCK statement at %C"
+msgstr ""
+
+#: fortran/match.c:3016
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement SYNC at %C in PURE procedure"
+msgstr ""
+
+#: fortran/match.c:3023
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: SYNC statement at %C"
+msgstr ""
+
+#: fortran/match.c:3035
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement SYNC at %C in CRITICAL block"
+msgstr ""
+
+#: fortran/match.c:3041
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement SYNC at %C in DO CONCURRENT block"
+msgstr ""
+
+#: fortran/match.c:3221
+#, gcc-internal-format, gfc-internal-format
+msgid "Deleted feature: ASSIGN statement at %C"
+msgstr ""
+
+#: fortran/match.c:3267
+#, gcc-internal-format, gfc-internal-format
+msgid "Deleted feature: Assigned GOTO statement at %C"
+msgstr ""
+
+#: fortran/match.c:3314 fortran/match.c:3367
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement label list in GOTO at %C cannot be empty"
+msgstr ""
+
+#: fortran/match.c:3377
+#, gcc-internal-format, gfc-internal-format
+msgid "Obsolescent feature: Computed GOTO at %C"
+msgstr ""
+
+#: fortran/match.c:3449
+#, gcc-internal-format, gfc-internal-format
+msgid "Error in type-spec at %L"
+msgstr ""
+
+#: fortran/match.c:3459
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: typespec in ALLOCATE at %L"
+msgstr ""
+
+#: fortran/match.c:3498
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad allocate-object at %C for a PURE procedure"
+msgstr ""
+
+#: fortran/match.c:3523
+#, gcc-internal-format, gfc-internal-format
+msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
+msgstr ""
+
+#: fortran/match.c:3528
+#, gcc-internal-format, gfc-internal-format
+msgid "ALLOCATE of coarray at %C in CRITICAL block"
+msgstr ""
+
+#: fortran/match.c:3540
+#, gcc-internal-format, gfc-internal-format
+msgid "Type of entity at %L is type incompatible with typespec"
+msgstr ""
+
+#: fortran/match.c:3548
+#, gcc-internal-format, gfc-internal-format
+msgid "Kind type parameter for entity at %L differs from the kind type parameter of the typespec"
+msgstr ""
+
+#: fortran/match.c:3575
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocate-object at %L is not a nonprocedure pointer or an allocatable variable"
+msgstr ""
+
+#: fortran/match.c:3582
+#, gcc-internal-format, gfc-internal-format
+msgid "Shape specification for allocatable scalar at %C"
+msgstr ""
+
+#: fortran/match.c:3619
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ERRMSG tag at %L"
+msgstr ""
+
+#: fortran/match.c:3643
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: SOURCE tag at %L"
+msgstr ""
+
+#: fortran/match.c:3650
+#, gcc-internal-format, gfc-internal-format
+msgid "Redundant SOURCE tag found at %L "
+msgstr ""
+
+#: fortran/match.c:3657
+#, gcc-internal-format, gfc-internal-format
+msgid "SOURCE tag at %L conflicts with the typespec at %L"
+msgstr ""
+
+#: fortran/match.c:3663
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: SOURCE tag at %L with more than a single allocate object"
+msgstr ""
+
+#: fortran/match.c:3681
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: MOLD tag at %L"
+msgstr ""
+
+#: fortran/match.c:3688
+#, gcc-internal-format, gfc-internal-format
+msgid "Redundant MOLD tag found at %L "
+msgstr ""
+
+#: fortran/match.c:3695
+#, gcc-internal-format, gfc-internal-format
+msgid "MOLD tag at %L conflicts with the typespec at %L"
+msgstr ""
+
+#: fortran/match.c:3721
+#, gcc-internal-format, gfc-internal-format
+msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
+msgstr ""
+
+#: fortran/match.c:3729
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tag"
+msgstr ""
+
+#: fortran/match.c:3790
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer object at %C shall not be coindexed"
+msgstr ""
+
+#: fortran/match.c:3873
+#, gcc-internal-format, gfc-internal-format
+msgid "Illegal allocate-object at %C for a PURE procedure"
+msgstr ""
+
+#: fortran/match.c:3883
+#, gcc-internal-format, gfc-internal-format
+msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
+msgstr ""
+
+#: fortran/match.c:3890
+#, gcc-internal-format, gfc-internal-format
+msgid "DEALLOCATE of coarray at %C in CRITICAL block"
+msgstr ""
+
+#: fortran/match.c:3906
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocate-object at %C is not a nonprocedure pointer or an allocatable variable"
+msgstr ""
+
+#: fortran/match.c:3943
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ERRMSG at %L"
+msgstr ""
+
+#: fortran/match.c:4001
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement RETURN at %C in CRITICAL block"
+msgstr ""
+
+#: fortran/match.c:4007
+#, gcc-internal-format, gfc-internal-format
+msgid "Image control statement RETURN at %C in DO CONCURRENT block"
+msgstr ""
+
+#: fortran/match.c:4016
+#, gcc-internal-format, gfc-internal-format
+msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
+msgstr ""
+
+#: fortran/match.c:4021
+#, gcc-internal-format, gfc-internal-format
+msgid "Obsolescent feature: Alternate RETURN at %C"
+msgstr ""
+
+#: fortran/match.c:4051
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: RETURN statement in main program at %C"
+msgstr ""
+
+#: fortran/match.c:4079
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected component reference at %C"
+msgstr ""
+
+#: fortran/match.c:4085
+#, gcc-internal-format, gfc-internal-format
+msgid "Junk after CALL at %C"
+msgstr ""
+
+#: fortran/match.c:4095
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected type-bound procedure or procedure pointer component at %C"
+msgstr ""
+
+#: fortran/match.c:4315
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in common block name at %C"
+msgstr ""
+
+#: fortran/match.c:4351
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %C is already an external symbol that is not COMMON"
+msgstr ""
+
+#. If we find an error, just print it and continue,
+#. cause it's just semantic, and we can see if there
+#. are more errors.
+#: fortran/match.c:4410
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is bind(c)"
+msgstr ""
+
+#: fortran/match.c:4419
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' in common block '%s' at %C can not be bind(c) since it is not global"
+msgstr ""
+
+#: fortran/match.c:4426
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %C is already in a COMMON block"
+msgstr ""
+
+#: fortran/match.c:4434
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialized symbol '%s' at %C can only be COMMON in BLOCK DATA"
+msgstr ""
+
+#: fortran/match.c:4461
+#, gcc-internal-format, gfc-internal-format
+msgid "Array specification for symbol '%s' in COMMON at %C must be explicit"
+msgstr ""
+
+#: fortran/match.c:4471
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array"
+msgstr ""
+
+#: fortran/match.c:4503
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to another COMMON block '%s'"
+msgstr ""
+
+#: fortran/match.c:4611
+#, gcc-internal-format, gfc-internal-format
+msgid "Namelist group name '%s' at %C already has a basic type of %s"
+msgstr ""
+
+#: fortran/match.c:4619
+#, gcc-internal-format, gfc-internal-format
+msgid "Namelist group name '%s' at %C already is USE associated and cannot be respecified."
+msgstr ""
+
+#: fortran/match.c:4646
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed"
+msgstr ""
+
+#: fortran/match.c:4780
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type component %C is not a permitted EQUIVALENCE member"
+msgstr ""
+
+#: fortran/match.c:4788
+#, gcc-internal-format, gfc-internal-format
+msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
+msgstr ""
+
+#: fortran/match.c:4816
+#, gcc-internal-format, gfc-internal-format
+msgid "EQUIVALENCE at %C requires two or more objects"
+msgstr ""
+
+#: fortran/match.c:4830
+#, gcc-internal-format, gfc-internal-format
+msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
+msgstr ""
+
+#: fortran/match.c:4843
+#, gcc-internal-format, gfc-internal-format
+msgid "Expecting a comma in EQUIVALENCE at %C"
+msgstr ""
+
+#: fortran/match.c:4959
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement function at %L is recursive"
+msgstr ""
+
+#: fortran/match.c:4965
+#, gcc-internal-format, gfc-internal-format
+msgid "Obsolescent feature: Statement function at %C"
+msgstr ""
+
+#: fortran/match.c:5051
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected initialization expression in CASE at %C"
+msgstr ""
+
+#: fortran/match.c:5083
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected block name '%s' of SELECT construct at %C"
+msgstr ""
+
+#: fortran/match.c:5267
+#, gcc-internal-format, gfc-internal-format
+msgid "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
+msgstr ""
+
+#: fortran/match.c:5300
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected CASE statement at %C"
+msgstr ""
+
+#: fortran/match.c:5352
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in CASE specification at %C"
+msgstr ""
+
+#: fortran/match.c:5370
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected TYPE IS statement at %C"
+msgstr ""
+
+#: fortran/match.c:5403
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in TYPE IS specification at %C"
+msgstr ""
+
+#: fortran/match.c:5476
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in CLASS IS specification at %C"
+msgstr ""
+
+#: fortran/match.c:5598
+#, gcc-internal-format, gfc-internal-format
+msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
+msgstr ""
+
+#: fortran/match.c:5636
+#, gcc-internal-format, gfc-internal-format
+msgid "Label '%s' at %C doesn't match WHERE label '%s'"
+msgstr ""
+
+#: fortran/matchexp.c:72
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad character '%c' in OPERATOR name at %C"
+msgstr ""
+
+#: fortran/matchexp.c:80
+#, gcc-internal-format, gfc-internal-format
+msgid "The name '%s' cannot be used as a defined operator at %C"
+msgstr ""
+
+#: fortran/matchexp.c:173
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected a right parenthesis in expression at %C"
+msgstr ""
+
+#: fortran/matchexp.c:279
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected exponent in expression at %C"
+msgstr ""
+
+#: fortran/matchexp.c:317 fortran/matchexp.c:322 fortran/matchexp.c:426
+#: fortran/matchexp.c:431
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Unary operator following arithmetic operator (use parentheses) at %C"
+msgstr ""
+
+#: fortran/module.c:555
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: module nature in USE statement at %C"
+msgstr ""
+
+#: fortran/module.c:567
+#, gcc-internal-format, gfc-internal-format
+msgid "Module nature in USE statement at %C shall be either INTRINSIC or NON_INTRINSIC"
+msgstr ""
+
+#: fortran/module.c:580
+#, gcc-internal-format, gfc-internal-format
+msgid "\"::\" was expected after module nature at %C but was not found"
+msgstr ""
+
+#: fortran/module.c:590
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: \"USE :: module\" at %C"
+msgstr ""
+
+#: fortran/module.c:650
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing generic specification in USE statement at %C"
+msgstr ""
+
+#: fortran/module.c:658
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Renaming operators in USE statements at %C"
+msgstr ""
+
+#: fortran/module.c:700
+#, gcc-internal-format, gfc-internal-format
+msgid "The name '%s' at %C has already been used as an external module name."
+msgstr ""
+
+#: fortran/module.c:1013
+#, gcc-internal-format, gfc-internal-format
+msgid "Reading module %s at line %d column %d: %s"
+msgstr ""
+
+#: fortran/module.c:1017
+#, gcc-internal-format, gfc-internal-format
+msgid "Writing module %s at line %d column %d: %s"
+msgstr ""
+
+#: fortran/module.c:1021
+#, gcc-internal-format, gfc-internal-format
+msgid "Module %s at line %d column %d: %s"
+msgstr ""
+
+#: fortran/module.c:1469
+#, gcc-internal-format, gfc-internal-format
+msgid "Error writing modules file: %s"
+msgstr ""
+
+#: fortran/module.c:3416
+#, gcc-internal-format, gfc-internal-format
+msgid "Namelist %s cannot be renamed by USE association to %s"
+msgstr ""
+
+#: fortran/module.c:4476
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
+msgstr ""
+
+#: fortran/module.c:4775
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' referenced at %L not found in module '%s'"
+msgstr ""
+
+#: fortran/module.c:4782
+#, gcc-internal-format, gfc-internal-format
+msgid "User operator '%s' referenced at %L not found in module '%s'"
+msgstr ""
+
+#: fortran/module.c:4787
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
+msgstr ""
+
+#: fortran/module.c:5424
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't open module file '%s' for writing at %C: %s"
+msgstr ""
+
+#: fortran/module.c:5457
+#, gcc-internal-format, gfc-internal-format
+msgid "Error writing module file '%s' for writing: %s"
+msgstr ""
+
+#: fortran/module.c:5466
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't delete module file '%s': %s"
+msgstr ""
+
+#: fortran/module.c:5469
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't rename module file '%s' to '%s': %s"
+msgstr ""
+
+#: fortran/module.c:5475
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't delete temporary module file '%s': %s"
+msgstr ""
+
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' already declared"
+msgstr ""
+
+#: fortran/module.c:5598 fortran/module.c:5877
+#, gcc-internal-format, gfc-internal-format
+msgid "The symbol '%s', referenced at %L, is not in the selected standard"
+msgstr ""
+
+#: fortran/module.c:5685
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
+msgstr ""
+
+#: fortran/module.c:5862
+#, gcc-internal-format, gfc-internal-format
+msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
+msgstr ""
+
+#: fortran/module.c:5885
+#, gcc-internal-format, gfc-internal-format
+msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
+msgstr ""
+
+#: fortran/module.c:5955
+#, gcc-internal-format, gfc-internal-format
+msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
+msgstr ""
+
+#: fortran/module.c:6013
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
+msgstr ""
+
+#: fortran/module.c:6052
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
+msgstr ""
+
+#: fortran/module.c:6062
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ISO_C_BINDING module at %C"
+msgstr ""
+
+#: fortran/module.c:6074
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't find an intrinsic module named '%s' at %C"
+msgstr ""
+
+#: fortran/module.c:6079
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't open module file '%s' for reading at %C: %s"
+msgstr ""
+
+#: fortran/module.c:6087
+#, gcc-internal-format, gfc-internal-format
+msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
+msgstr ""
+
+#: fortran/module.c:6107
+#, gcc-internal-format, gfc-internal-format
+msgid "File '%s' opened at %C is not a GFORTRAN module file"
+msgstr ""
+
+#: fortran/module.c:6114
+#, gcc-internal-format, gfc-internal-format
+msgid "Parse error when checking module version for file '%s' opened at %C"
+msgstr ""
+
+#: fortran/module.c:6119
+#, gcc-internal-format, gfc-internal-format
+msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
+msgstr ""
+
+#: fortran/module.c:6134
+#, gcc-internal-format
+msgid "Can't USE the same module we're building!"
+msgstr ""
+
+#: fortran/openmp.c:133 fortran/openmp.c:595
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON block /%s/ not found at %C"
+msgstr ""
+
+#: fortran/openmp.c:164
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in OpenMP variable list at %C"
+msgstr ""
+
+#: fortran/openmp.c:297
+#, gcc-internal-format, gfc-internal-format
+msgid "%s is not INTRINSIC procedure name at %C"
+msgstr ""
+
+#: fortran/openmp.c:414
+#, gcc-internal-format, gfc-internal-format
+msgid "COLLAPSE clause argument not constant positive integer at %C"
+msgstr ""
+
+#: fortran/openmp.c:482
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after TASKWAIT clause at %C"
+msgstr ""
+
+#: fortran/openmp.c:496
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after TASKYIELD clause at %C"
+msgstr ""
+
+#: fortran/openmp.c:514
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after $OMP CRITICAL statement at %C"
+msgstr ""
+
+#: fortran/openmp.c:542
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after $OMP FLUSH statement at %C"
+msgstr ""
+
+#: fortran/openmp.c:574
+#, gcc-internal-format, gfc-internal-format
+msgid "Threadprivate variable at %C is an element of a COMMON block"
+msgstr ""
+
+#: fortran/openmp.c:614
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in !$OMP THREADPRIVATE list at %C"
+msgstr ""
+
+#: fortran/openmp.c:690
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after $OMP WORKSHARE statement at %C"
+msgstr ""
+
+#: fortran/openmp.c:704
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after $OMP MASTER statement at %C"
+msgstr ""
+
+#: fortran/openmp.c:718
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after $OMP ORDERED statement at %C"
+msgstr ""
+
+#: fortran/openmp.c:741
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after $OMP ATOMIC statement at %C"
+msgstr ""
+
+#: fortran/openmp.c:755
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after $OMP BARRIER statement at %C"
+msgstr ""
+
+#: fortran/openmp.c:772
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected junk after NOWAIT clause at %C"
+msgstr ""
+
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
+#, gcc-internal-format, gfc-internal-format
+msgid "IF clause at %L requires a scalar LOGICAL expression"
+msgstr ""
+
+#: fortran/openmp.c:827
+#, gcc-internal-format, gfc-internal-format
+msgid "FINAL clause at %L requires a scalar LOGICAL expression"
+msgstr ""
+
+#: fortran/openmp.c:835
+#, gcc-internal-format, gfc-internal-format
+msgid "NUM_THREADS clause at %L requires a scalar INTEGER expression"
+msgstr ""
+
+#: fortran/openmp.c:843
+#, gcc-internal-format, gfc-internal-format
+msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression"
+msgstr ""
+
+#: fortran/openmp.c:885
+#, gcc-internal-format, gfc-internal-format
+msgid "Object '%s' is not a variable at %L"
+msgstr ""
+
+#: fortran/openmp.c:894 fortran/openmp.c:905 fortran/openmp.c:913
+#: fortran/openmp.c:924
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' present on multiple clauses at %L"
+msgstr ""
+
+#: fortran/openmp.c:947
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-THREADPRIVATE object '%s' in COPYIN clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:950
+#, gcc-internal-format, gfc-internal-format
+msgid "COPYIN clause object '%s' at %L has ALLOCATABLE components"
+msgstr ""
+
+#: fortran/openmp.c:958
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed size array '%s' in COPYPRIVATE clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:961
+#, gcc-internal-format, gfc-internal-format
+msgid "COPYPRIVATE clause object '%s' at %L has ALLOCATABLE components"
+msgstr ""
+
+#: fortran/openmp.c:969
+#, gcc-internal-format, gfc-internal-format
+msgid "THREADPRIVATE object '%s' in SHARED clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:972
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray pointee '%s' in SHARED clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:980
+#, gcc-internal-format, gfc-internal-format
+msgid "THREADPRIVATE object '%s' in %s clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:983
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray pointee '%s' in %s clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:990
+#, gcc-internal-format, gfc-internal-format
+msgid "POINTER object '%s' in %s clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:996
+#, gcc-internal-format, gfc-internal-format
+msgid "%s clause object '%s' has ALLOCATABLE components at %L"
+msgstr ""
+
+#: fortran/openmp.c:1001
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray pointer '%s' in %s clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:1005
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed size array '%s' in %s clause at %L"
+msgstr ""
+
+#: fortran/openmp.c:1010
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' in %s clause is used in NAMELIST statement at %L"
+msgstr ""
+
+#: fortran/openmp.c:1019
+#, gcc-internal-format, gfc-internal-format
+msgid "%c REDUCTION variable '%s' at %L must be of numeric type, got %s"
+msgstr ""
+
+#: fortran/openmp.c:1030
+#, gcc-internal-format, gfc-internal-format
+msgid "%s REDUCTION variable '%s' must be LOGICAL at %L"
+msgstr ""
+
+#: fortran/openmp.c:1041
+#, gcc-internal-format, gfc-internal-format
+msgid "%s REDUCTION variable '%s' must be INTEGER or REAL at %L"
+msgstr ""
+
+#: fortran/openmp.c:1050
+#, gcc-internal-format, gfc-internal-format
+msgid "%s REDUCTION variable '%s' must be INTEGER at %L"
+msgstr ""
+
+#: fortran/openmp.c:1168
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
+msgstr ""
+
+#: fortran/openmp.c:1194
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC READ statement must read from a scalar variable of intrinsic type at %L"
+msgstr ""
+
+#: fortran/openmp.c:1199
+#, gcc-internal-format, gfc-internal-format
+msgid "expr in !$OMP ATOMIC WRITE assignment var = expr must be scalar and cannot reference var at %L"
+msgstr ""
+
+#: fortran/openmp.c:1221 fortran/openmp.c:1491
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC CAPTURE capture statement must read from a scalar variable of intrinsic type at %L"
+msgstr ""
+
+#: fortran/openmp.c:1236
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC CAPTURE update statement must set a scalar variable of intrinsic type at %L"
+msgstr ""
+
+#: fortran/openmp.c:1243 fortran/openmp.c:1498
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC CAPTURE capture statement reads from different variable than update statement writes into at %L"
+msgstr ""
+
+#: fortran/openmp.c:1287
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC assignment operator must be +, *, -, /, .AND., .OR., .EQV. or .NEQV. at %L"
+msgstr ""
+
+#: fortran/openmp.c:1335
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L"
+msgstr ""
+
+#: fortran/openmp.c:1349
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op (expr) at %L"
+msgstr ""
+
+#: fortran/openmp.c:1381
+#, gcc-internal-format, gfc-internal-format
+msgid "expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot reference var at %L"
+msgstr ""
+
+#: fortran/openmp.c:1405
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments at %L"
+msgstr ""
+
+#: fortran/openmp.c:1412
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L"
+msgstr ""
+
+#: fortran/openmp.c:1428
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC intrinsic arguments except one must not reference '%s' at %L"
+msgstr ""
+
+#: fortran/openmp.c:1431
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L"
+msgstr ""
+
+#: fortran/openmp.c:1437
+#, gcc-internal-format, gfc-internal-format
+msgid "First or last !$OMP ATOMIC intrinsic argument must be '%s' at %L"
+msgstr ""
+
+#: fortran/openmp.c:1455
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC assignment must have an operator or intrinsic on right hand side at %L"
+msgstr ""
+
+#: fortran/openmp.c:1469
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP ATOMIC CAPTURE capture statement must set a scalar variable of intrinsic type at %L"
+msgstr ""
+
+#: fortran/openmp.c:1661
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP DO cannot be a DO WHILE or DO without loop control at %L"
+msgstr ""
+
+#: fortran/openmp.c:1667
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP DO iteration variable must be of type integer at %L"
+msgstr ""
+
+#: fortran/openmp.c:1671
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP DO iteration variable must not be THREADPRIVATE at %L"
+msgstr ""
+
+#: fortran/openmp.c:1679
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP DO iteration variable present on clause other than PRIVATE or LASTPRIVATE at %L"
+msgstr ""
+
+#: fortran/openmp.c:1697
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP DO collapsed loops don't form rectangular iteration space at %L"
+msgstr ""
+
+#: fortran/openmp.c:1711
+#, gcc-internal-format, gfc-internal-format
+msgid "collapsed !$OMP DO loops not perfectly nested at %L"
+msgstr ""
+
+#: fortran/openmp.c:1720 fortran/openmp.c:1728
+#, gcc-internal-format, gfc-internal-format
+msgid "not enough DO loops for collapsed !$OMP DO at %L"
+msgstr ""
+
+#: fortran/options.c:261
+#, gcc-internal-format
+msgid "-fexcess-precision=standard for Fortran"
+msgstr ""
+
+#: fortran/options.c:356
+#, gcc-internal-format, gfc-internal-format
+msgid "Reading file '%s' as free form"
+msgstr ""
+
+#: fortran/options.c:366
+#, gcc-internal-format
+msgid "'-fd-lines-as-comments' has no effect in free form"
+msgstr ""
+
+#: fortran/options.c:369
+#, gcc-internal-format
+msgid "'-fd-lines-as-code' has no effect in free form"
+msgstr ""
+
+#: fortran/options.c:387
+#, gcc-internal-format, gfc-internal-format
+msgid "Flag -fno-automatic overwrites -fmax-stack-var-size=%d"
+msgstr ""
+
+#: fortran/options.c:390
+#, gcc-internal-format
+msgid "Flag -fno-automatic overwrites -frecursive"
+msgstr ""
+
+#: fortran/options.c:392
+#, gcc-internal-format
+msgid "Flag -fno-automatic overwrites -frecursive implied by -fopenmp"
+msgstr ""
+
+#: fortran/options.c:396
+#, gcc-internal-format, gfc-internal-format
+msgid "Flag -frecursive overwrites -fmax-stack-var-size=%d"
+msgstr ""
+
+#: fortran/options.c:400
+#, gcc-internal-format, gfc-internal-format
+msgid "Flag -fmax-stack-var-size=%d overwrites -frecursive implied by -fopenmp"
+msgstr ""
+
+#: fortran/options.c:483
+#, gcc-internal-format
+msgid "gfortran: Only one -J option allowed"
+msgstr ""
+
+#: fortran/options.c:529
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument to -ffpe-trap is not valid: %s"
+msgstr ""
+
+#: fortran/options.c:544
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument to -fcoarray is not valid: %s"
+msgstr ""
+
+#: fortran/options.c:582
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument to -fcheck is not valid: %s"
+msgstr ""
+
+#: fortran/options.c:754
+#, gcc-internal-format
+msgid "Fixed line length must be at least seven."
+msgstr ""
+
+#: fortran/options.c:772
+#, gcc-internal-format
+msgid "Free line length must be at least three."
+msgstr ""
+
+#: fortran/options.c:790
+#, gcc-internal-format
+msgid "-static-libgfortran is not supported in this configuration"
+msgstr ""
+
+#: fortran/options.c:838
+#, gcc-internal-format, gfc-internal-format
+msgid "Maximum supported identifier length is %d"
+msgstr ""
+
+#: fortran/options.c:898
+#, gcc-internal-format, gfc-internal-format
+msgid "Unrecognized option to -finit-logical: %s"
+msgstr ""
+
+#: fortran/options.c:914
+#, gcc-internal-format, gfc-internal-format
+msgid "Unrecognized option to -finit-real: %s"
+msgstr ""
+
+#: fortran/options.c:930
+#, gcc-internal-format
+msgid "The value of n in -finit-character=n must be between 0 and 127"
+msgstr ""
+
+#: fortran/options.c:1032
+#, gcc-internal-format, gfc-internal-format
+msgid "Maximum subrecord length cannot exceed %d"
+msgstr ""
+
+#: fortran/parse.c:520
+#, gcc-internal-format, gfc-internal-format
+msgid "Unclassifiable statement at %C"
+msgstr ""
+
+#: fortran/parse.c:542
+#, gcc-internal-format, gfc-internal-format
+msgid "OpenMP directives at %C may not appear in PURE or ELEMENTAL procedures"
+msgstr ""
+
+#: fortran/parse.c:628
+#, gcc-internal-format, gfc-internal-format
+msgid "Unclassifiable OpenMP directive at %C"
+msgstr ""
+
+#: fortran/parse.c:654
+#, gcc-internal-format, gfc-internal-format
+msgid "Unclassifiable GCC directive at %C"
+msgstr ""
+
+#: fortran/parse.c:696 fortran/parse.c:870
+#, gcc-internal-format, gfc-internal-format
+msgid "Zero is not a valid statement label at %C"
+msgstr ""
+
+#: fortran/parse.c:703 fortran/parse.c:862
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-numeric character in statement label at %C"
+msgstr ""
+
+#: fortran/parse.c:715 fortran/parse.c:911
+#, gcc-internal-format, gfc-internal-format
+msgid "Semicolon at %C needs to be preceded by statement"
+msgstr ""
+
+#: fortran/parse.c:723 fortran/parse.c:926
+#, gcc-internal-format, gfc-internal-format
+msgid "Ignoring statement label in empty statement at %L"
+msgstr ""
+
+#: fortran/parse.c:772 fortran/parse.c:913
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Semicolon at %C without preceding statement"
+msgstr ""
+
+#: fortran/parse.c:848 fortran/parse.c:889
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad continuation line at %C"
+msgstr ""
+
+#: fortran/parse.c:1152
+#, gcc-internal-format, gfc-internal-format
+msgid "FORMAT statement at %L does not have a statement label"
+msgstr ""
+
+#: fortran/parse.c:1755
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement at %C"
+msgstr ""
+
+#: fortran/parse.c:1902
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C cannot follow %s statement at %L"
+msgstr ""
+
+#: fortran/parse.c:1919
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected end of file in '%s'"
+msgstr ""
+
+#: fortran/parse.c:1951
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived-type '%s' with SEQUENCE must not have a CONTAINS section at %C"
+msgstr ""
+
+#: fortran/parse.c:1954
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived-type '%s' with BIND(C) must not have a CONTAINS section at %C"
+msgstr ""
+
+#: fortran/parse.c:1974
+#, gcc-internal-format, gfc-internal-format
+msgid "Components in TYPE at %C must precede CONTAINS"
+msgstr ""
+
+#: fortran/parse.c:1978
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Type-bound procedure at %C"
+msgstr ""
+
+#: fortran/parse.c:1987
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: GENERIC binding at %C"
+msgstr ""
+
+#: fortran/parse.c:1997
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: FINAL procedure declaration at %C"
+msgstr ""
+
+#: fortran/parse.c:2009
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Derived type definition at %C with empty CONTAINS section"
+msgstr ""
+
+#: fortran/parse.c:2020 fortran/parse.c:2123
+#, gcc-internal-format, gfc-internal-format
+msgid "PRIVATE statement in TYPE at %C must be inside a MODULE"
+msgstr ""
+
+#: fortran/parse.c:2027
+#, gcc-internal-format, gfc-internal-format
+msgid "PRIVATE statement at %C must precede procedure bindings"
+msgstr ""
+
+#: fortran/parse.c:2034 fortran/parse.c:2136
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate PRIVATE statement at %C"
+msgstr ""
+
+#: fortran/parse.c:2044
+#, gcc-internal-format, gfc-internal-format
+msgid "SEQUENCE statement at %C must precede CONTAINS"
+msgstr ""
+
+#: fortran/parse.c:2048
+#, gcc-internal-format, gfc-internal-format
+msgid "Already inside a CONTAINS block at %C"
+msgstr ""
+
+#: fortran/parse.c:2106
+#, gcc-internal-format, gfc-internal-format
+msgid "FINAL declaration at %C must be inside CONTAINS"
+msgstr ""
+
+#: fortran/parse.c:2114
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Derived type definition at %C without components"
+msgstr ""
+
+#: fortran/parse.c:2130
+#, gcc-internal-format, gfc-internal-format
+msgid "PRIVATE statement at %C must precede structure components"
+msgstr ""
+
+#: fortran/parse.c:2147
+#, gcc-internal-format, gfc-internal-format
+msgid "SEQUENCE statement at %C must precede structure components"
+msgstr ""
+
+#: fortran/parse.c:2153
+#, gcc-internal-format, gfc-internal-format
+msgid "SEQUENCE attribute at %C already specified in TYPE statement"
+msgstr ""
+
+#: fortran/parse.c:2158
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate SEQUENCE statement at %C"
+msgstr ""
+
+#: fortran/parse.c:2168
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: CONTAINS block in derived type definition at %C"
+msgstr ""
+
+#: fortran/parse.c:2255
+#, gcc-internal-format, gfc-internal-format
+msgid "Component %s at %L of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attribute"
+msgstr ""
+
+#: fortran/parse.c:2261
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer component %s at %L has a noncoarray subcomponent of type LOCK_TYPE, which must have a codimension or be a subcomponent of a coarray"
+msgstr ""
+
+#: fortran/parse.c:2266
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable component %s at %L of type LOCK_TYPE must have a codimension"
+msgstr ""
+
+#: fortran/parse.c:2270
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable component %s at %L must have a codimension as it has a noncoarray subcomponent of type LOCK_TYPE"
+msgstr ""
+
+#: fortran/parse.c:2275
+#, gcc-internal-format, gfc-internal-format
+msgid "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as already a coarray subcomponent exists)"
+msgstr ""
+
+#: fortran/parse.c:2282
+#, gcc-internal-format, gfc-internal-format
+msgid "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as %s at %L has a codimension or a coarray subcomponent)"
+msgstr ""
+
+#: fortran/parse.c:2334
+#, gcc-internal-format, gfc-internal-format
+msgid "ENUM declaration at %C has no ENUMERATORS"
+msgstr ""
+
+#: fortran/parse.c:2418
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement in INTERFACE block at %C"
+msgstr ""
+
+#: fortran/parse.c:2442
+#, gcc-internal-format, gfc-internal-format
+msgid "Name '%s' of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type"
+msgstr ""
+
+#: fortran/parse.c:2473
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement at %C in INTERFACE body"
+msgstr ""
+
+#: fortran/parse.c:2491
+#, gcc-internal-format, gfc-internal-format
+msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
+msgstr ""
+
+#: fortran/parse.c:2615
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/parse.c:2702
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement must appear in a MODULE"
+msgstr ""
+
+#: fortran/parse.c:2710
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C follows another accessibility specification"
+msgstr ""
+
+#: fortran/parse.c:2761
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad kind expression for function '%s' at %L"
+msgstr ""
+
+#: fortran/parse.c:2765
+#, gcc-internal-format, gfc-internal-format
+msgid "The type for function '%s' at %L is not accessible"
+msgstr ""
+
+#: fortran/parse.c:2823
+#, gcc-internal-format, gfc-internal-format
+msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE"
+msgstr ""
+
+#: fortran/parse.c:2845
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement in WHERE block at %C"
+msgstr ""
+
+#: fortran/parse.c:2904
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement in FORALL block at %C"
+msgstr ""
+
+#: fortran/parse.c:2955
+#, gcc-internal-format, gfc-internal-format
+msgid "ELSE IF statement at %C cannot follow ELSE statement at %L"
+msgstr ""
+
+#: fortran/parse.c:2973
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate ELSE statements at %L and %C"
+msgstr ""
+
+#: fortran/parse.c:3034
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C"
+msgstr ""
+
+#: fortran/parse.c:3117
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected TYPE IS, CLASS IS or END SELECT statement following SELECT TYPE at %C"
+msgstr ""
+
+#: fortran/parse.c:3179
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
+msgstr ""
+
+#: fortran/parse.c:3212
+#, gcc-internal-format, gfc-internal-format
+msgid "End of nonblock DO statement at %C is within another block"
+msgstr ""
+
+#: fortran/parse.c:3222
+#, gcc-internal-format, gfc-internal-format
+msgid "End of nonblock DO statement at %C is interwoven with another DO loop"
+msgstr ""
+
+#: fortran/parse.c:3269
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement label in END CRITICAL at %C does not match CRITIAL label"
+msgstr ""
+
+#: fortran/parse.c:3337
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: BLOCK construct at %C"
+msgstr ""
+
+#: fortran/parse.c:3367
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: ASSOCIATE construct at %C"
+msgstr ""
+
+#: fortran/parse.c:3467
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement label in ENDDO at %C doesn't match DO label"
+msgstr ""
+
+#: fortran/parse.c:3483
+#, gcc-internal-format, gfc-internal-format
+msgid "Named block DO at %L requires matching ENDDO name"
+msgstr ""
+
+#: fortran/parse.c:3606
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing !$OMP END ATOMIC after !$OMP ATOMIC CAPTURE at %C"
+msgstr ""
+
+#: fortran/parse.c:3757
+#, gcc-internal-format, gfc-internal-format
+msgid "Name after !$omp critical and !$omp end critical does not match at %C"
+msgstr ""
+
+#: fortran/parse.c:3814
+#, gcc-internal-format, gfc-internal-format
+msgid "%s statement at %C cannot terminate a non-block DO loop"
+msgstr ""
+
+#: fortran/parse.c:4017
+#, gcc-internal-format, gfc-internal-format
+msgid "Contained procedure '%s' at %C is already ambiguous"
+msgstr ""
+
+#: fortran/parse.c:4073
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement in CONTAINS section at %C"
+msgstr ""
+
+#: fortran/parse.c:4097
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: CONTAINS statement without FUNCTION or SUBROUTINE statement at %C"
+msgstr ""
+
+#: fortran/parse.c:4174
+#, gcc-internal-format, gfc-internal-format
+msgid "CONTAINS statement at %C is already in a contained program unit"
+msgstr ""
+
+#: fortran/parse.c:4224
+#, gcc-internal-format, gfc-internal-format
+msgid "Global name '%s' at %L is already being used as a %s at %L"
+msgstr ""
+
+#: fortran/parse.c:4245
+#, gcc-internal-format, gfc-internal-format
+msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L"
+msgstr ""
+
+#: fortran/parse.c:4271
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement in BLOCK DATA at %C"
+msgstr ""
+
+#: fortran/parse.c:4314
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected %s statement in MODULE at %C"
+msgstr ""
+
+#. If we see a duplicate main program, shut down. If the second
+#. instance is an implied main program, i.e. data decls or executable
+#. statements, we're in for lots of errors.
+#: fortran/parse.c:4679
+#, gcc-internal-format, gfc-internal-format
+msgid "Two main PROGRAMs at %L and %C"
+msgstr ""
+
+#: fortran/primary.c:106
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing kind-parameter at %C"
+msgstr ""
+
+#: fortran/primary.c:233
+#, gcc-internal-format, gfc-internal-format
+msgid "Integer kind %d at %C not available"
+msgstr ""
+
+#: fortran/primary.c:242
+#, gcc-internal-format, gfc-internal-format
+msgid "Integer too big for its kind at %C. This check can be disabled with the option -fno-range-check"
+msgstr ""
+
+#: fortran/primary.c:271
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Hollerith constant at %C"
+msgstr ""
+
+#: fortran/primary.c:283
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid Hollerith constant: %L must contain at least one character"
+msgstr ""
+
+#: fortran/primary.c:289
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid Hollerith constant: Integer kind at %L should be default"
+msgstr ""
+
+#: fortran/primary.c:309
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid Hollerith constant at %L contains a wide character"
+msgstr ""
+
+#: fortran/primary.c:395
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Hexadecimal constant at %C uses non-standard syntax"
+msgstr ""
+
+#: fortran/primary.c:405
+#, gcc-internal-format, gfc-internal-format
+msgid "Empty set of digits in BOZ constant at %C"
+msgstr ""
+
+#: fortran/primary.c:411
+#, gcc-internal-format, gfc-internal-format
+msgid "Illegal character in BOZ constant at %C"
+msgstr ""
+
+#: fortran/primary.c:434
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: BOZ constant at %C uses non-standard postfix syntax"
+msgstr ""
+
+#: fortran/primary.c:465
+#, gcc-internal-format, gfc-internal-format
+msgid "Integer too big for integer kind %i at %C"
+msgstr ""
+
+#: fortran/primary.c:471
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: BOZ used outside a DATA statement at %C"
+msgstr ""
+
+#: fortran/primary.c:562 fortran/primary.c:566
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: exponent-letter 'q' in real-literal-constant at %C"
+msgstr ""
+
+#: fortran/primary.c:582
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing exponent in real number at %C"
+msgstr ""
+
+#: fortran/primary.c:638
+#, gcc-internal-format, gfc-internal-format
+msgid "Real number at %C has a 'd' exponent and an explicit kind"
+msgstr ""
+
+#: fortran/primary.c:668
+#, gcc-internal-format, gfc-internal-format
+msgid "Real number at %C has a 'q' exponent and an explicit kind"
+msgstr ""
+
+#: fortran/primary.c:682
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid exponent-letter 'q' in real-literal-constant at %C"
+msgstr ""
+
+#: fortran/primary.c:715
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid real kind %d at %C"
+msgstr ""
+
+#: fortran/primary.c:730
+#, gcc-internal-format, gfc-internal-format
+msgid "Real constant overflows its kind at %C"
+msgstr ""
+
+#: fortran/primary.c:735
+#, gcc-internal-format, gfc-internal-format
+msgid "Real constant underflows its kind at %C"
+msgstr ""
+
+#: fortran/primary.c:827
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in SUBSTRING specification at %C"
+msgstr ""
+
+#: fortran/primary.c:1039
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid kind %d for CHARACTER constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1060
+#, gcc-internal-format, gfc-internal-format
+msgid "Unterminated character constant beginning at %C"
+msgstr ""
+
+#: fortran/primary.c:1089
+#, gcc-internal-format, gfc-internal-format
+msgid "Character '%s' in string at %C is not representable in character kind %d"
+msgstr ""
+
+#: fortran/primary.c:1172
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad kind for logical constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1204
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected PARAMETER symbol in complex constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1210
+#, gcc-internal-format, gfc-internal-format
+msgid "Numeric PARAMETER required in complex constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1216
+#, gcc-internal-format, gfc-internal-format
+msgid "Scalar PARAMETER required in complex constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1220
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: PARAMETER symbol in complex constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1250
+#, gcc-internal-format, gfc-internal-format
+msgid "Error converting PARAMETER constant in complex constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1378
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in COMPLEX constant at %C"
+msgstr ""
+
+#: fortran/primary.c:1584
+#, gcc-internal-format, gfc-internal-format
+msgid "Keyword '%s' at %C has already appeared in the current argument list"
+msgstr ""
+
+#: fortran/primary.c:1648
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: argument list function at %C"
+msgstr ""
+
+#: fortran/primary.c:1717
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected alternate return label at %C"
+msgstr ""
+
+#: fortran/primary.c:1735
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing keyword name in actual argument list at %C"
+msgstr ""
+
+#: fortran/primary.c:1781
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in argument list at %C"
+msgstr ""
+
+#: fortran/primary.c:1840
+#, gcc-internal-format, gfc-internal-format
+msgid "Array section designator, e.g. '(:)', is required besides the coarray designator '[...]' at %C"
+msgstr ""
+
+#: fortran/primary.c:1848
+#, gcc-internal-format, gfc-internal-format
+msgid "Coarray designator at %C but '%s' is not a coarray"
+msgstr ""
+
+#: fortran/primary.c:1926
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected structure component name at %C"
+msgstr ""
+
+#: fortran/primary.c:1973
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected argument list at %C"
+msgstr ""
+
+#: fortran/primary.c:2005
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure pointer component '%s' requires an argument list at %C"
+msgstr ""
+
+#: fortran/primary.c:2093
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed procedure-pointer component at %C"
+msgstr ""
+
+#: fortran/primary.c:2342
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Structure constructor with missing optional arguments at %C"
+msgstr ""
+
+#: fortran/primary.c:2350
+#, gcc-internal-format, gfc-internal-format
+msgid "No initializer for component '%s' given in the structure constructor at %C!"
+msgstr ""
+
+#: fortran/primary.c:2398
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't construct ABSTRACT type '%s' at %L"
+msgstr ""
+
+#: fortran/primary.c:2418
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Structure constructor with named arguments at %C"
+msgstr ""
+
+#: fortran/primary.c:2434
+#, gcc-internal-format, gfc-internal-format
+msgid "Component initializer without name after component named %s at %L!"
+msgstr ""
+
+#: fortran/primary.c:2439
+#, gcc-internal-format, gfc-internal-format
+msgid "Too many components in structure constructor at %L!"
+msgstr ""
+
+#: fortran/primary.c:2476
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' is initialized twice in the structure constructor at %L!"
+msgstr ""
+
+#: fortran/primary.c:2488
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed expression to pointer component '%s' in structure constructor at %L!"
+msgstr ""
+
+#: fortran/primary.c:2541
+#, gcc-internal-format, gfc-internal-format
+msgid "component '%s' at %L has already been set by a parent derived type constructor"
+msgstr ""
+
+#: fortran/primary.c:2725
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
+msgstr ""
+
+#: fortran/primary.c:2844
+#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected use of subroutine name '%s' at %C"
+msgstr ""
+
+#: fortran/primary.c:2875
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement function '%s' requires argument list at %C"
+msgstr ""
+
+#: fortran/primary.c:2878
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' requires an argument list at %C"
+msgstr ""
+
+#: fortran/primary.c:2928
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing argument to '%s' at %C"
+msgstr ""
+
+#: fortran/primary.c:3087
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing argument list in function '%s' at %C"
+msgstr ""
+
+#: fortran/primary.c:3121
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol at %C is not appropriate for an expression"
+msgstr ""
+
+#: fortran/primary.c:3220
+#, gcc-internal-format, gfc-internal-format
+msgid "Named constant at %C in an EQUIVALENCE"
+msgstr ""
+
+#: fortran/primary.c:3254
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %C is not a variable"
+msgstr ""
+
+#: fortran/resolve.c:117
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L is of the ABSTRACT type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:120
+#, gcc-internal-format, gfc-internal-format
+msgid "ABSTRACT type '%s' used at %L"
+msgstr ""
+
+#: fortran/resolve.c:142
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE '%s' at %L may not be used as its own interface"
+msgstr ""
+
+#: fortran/resolve.c:148
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface '%s', used by procedure '%s' at %L, is declared in a later PROCEDURE statement"
+msgstr ""
+
+#: fortran/resolve.c:208
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface '%s' of procedure '%s' at %L must be explicit"
+msgstr ""
+
+#: fortran/resolve.c:256
+#, gcc-internal-format, gfc-internal-format
+msgid "Alternate return specifier in elemental subroutine '%s' at %L is not allowed"
+msgstr ""
+
+#: fortran/resolve.c:260
+#, gcc-internal-format, gfc-internal-format
+msgid "Alternate return specifier in function '%s' at %L is not allowed"
+msgstr ""
+
+#: fortran/resolve.c:321
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy procedure '%s' of PURE procedure at %L must also be PURE"
+msgstr ""
+
+#: fortran/resolve.c:331
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Argument '%s' of pure function '%s' at %L with VALUE attribute but without INTENT(IN)"
+msgstr ""
+
+#: fortran/resolve.c:336
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN) or VALUE"
+msgstr ""
+
+#: fortran/resolve.c:344
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Argument '%s' of pure subroutine '%s' at %L with VALUE attribute but without INTENT"
+msgstr ""
+
+#: fortran/resolve.c:349
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of pure subroutine '%s' at %L must have its INTENT specified or have the VALUE attribute"
+msgstr ""
+
+#: fortran/resolve.c:381
+#, gcc-internal-format, gfc-internal-format
+msgid "Coarray dummy argument '%s' at %L to elemental procedure"
+msgstr ""
+
+#: fortran/resolve.c:389
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of elemental procedure at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:398
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of elemental procedure at %L cannot have the ALLOCATABLE attribute"
+msgstr ""
+
+#: fortran/resolve.c:408
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of elemental procedure at %L cannot have the POINTER attribute"
+msgstr ""
+
+#: fortran/resolve.c:416
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy procedure '%s' not allowed in elemental procedure '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:424
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of elemental procedure '%s' at %L must have its INTENT specified"
+msgstr ""
+
+#: fortran/resolve.c:436
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of statement function at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:446
+#, gcc-internal-format, gfc-internal-format
+msgid "Character-valued argument '%s' of statement function at %L must have constant length"
+msgstr ""
+
+#: fortran/resolve.c:504
+#, gcc-internal-format, gfc-internal-format
+msgid "Contained function '%s' at %L has no IMPLICIT type"
+msgstr ""
+
+#: fortran/resolve.c:507
+#, gcc-internal-format, gfc-internal-format
+msgid "Result '%s' of contained function '%s' at %L has no IMPLICIT type"
+msgstr ""
+
+#: fortran/resolve.c:531
+#, gcc-internal-format, gfc-internal-format
+msgid "Character-valued %s '%s' at %L must not be assumed length"
+msgstr ""
+
+#: fortran/resolve.c:706
+#, gcc-internal-format, gfc-internal-format
+msgid "Function %s at %L has entries with mismatched array specifications"
+msgstr ""
+
+#: fortran/resolve.c:723
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Function %s at %L with entries returning variables of different string lengths"
+msgstr ""
+
+#: fortran/resolve.c:750
+#, gcc-internal-format, gfc-internal-format
+msgid "FUNCTION result %s can't be an array in FUNCTION %s at %L"
+msgstr ""
+
+#: fortran/resolve.c:754
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY result %s can't be an array in FUNCTION %s at %L"
+msgstr ""
+
+#: fortran/resolve.c:761
+#, gcc-internal-format, gfc-internal-format
+msgid "FUNCTION result %s can't be a POINTER in FUNCTION %s at %L"
+msgstr ""
+
+#: fortran/resolve.c:765
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY result %s can't be a POINTER in FUNCTION %s at %L"
+msgstr ""
+
+#: fortran/resolve.c:803
+#, gcc-internal-format, gfc-internal-format
+msgid "FUNCTION result %s can't be of type %s in FUNCTION %s at %L"
+msgstr ""
+
+#: fortran/resolve.c:808
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY result %s can't be of type %s in FUNCTION %s at %L"
+msgstr ""
+
+#: fortran/resolve.c:851
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L is in COMMON but only in BLOCK DATA initialization is allowed"
+msgstr ""
+
+#: fortran/resolve.c:855
+#, gcc-internal-format, gfc-internal-format
+msgid "Initialized variable '%s' at %L is in a blank COMMON but initialization is only allowed in named common blocks"
+msgstr ""
+
+#: fortran/resolve.c:866
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type variable '%s' in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute"
+msgstr ""
+
+#: fortran/resolve.c:870
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type variable '%s' in COMMON at %L has an ultimate component that is allocatable"
+msgstr ""
+
+#: fortran/resolve.c:874
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type variable '%s' in COMMON at %L may not have default initializer"
+msgstr ""
+
+#: fortran/resolve.c:904
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON block '%s' at %L is used as PARAMETER at %L"
+msgstr ""
+
+#: fortran/resolve.c:908
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON block '%s' at %L can not have the EXTERNAL attribute"
+msgstr ""
+
+#: fortran/resolve.c:912
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON block '%s' at %L is also an intrinsic procedure"
+msgstr ""
+
+#: fortran/resolve.c:916
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: COMMON block '%s' at %L that is also a function result"
+msgstr ""
+
+#: fortran/resolve.c:921
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: COMMON block '%s' at %L that is also a global procedure"
+msgstr ""
+
+#: fortran/resolve.c:985
+#, gcc-internal-format, gfc-internal-format
+msgid "Components of structure constructor '%s' at %L are PRIVATE"
+msgstr ""
+
+#: fortran/resolve.c:1021
+#, gcc-internal-format, gfc-internal-format
+msgid "The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)"
+msgstr ""
+
+#: fortran/resolve.c:1043
+#, gcc-internal-format, gfc-internal-format
+msgid "The element in the structure constructor at %L, for pointer component '%s', is %s but should be %s"
+msgstr ""
+
+#: fortran/resolve.c:1122
+#, gcc-internal-format, gfc-internal-format
+msgid "The NULL in the structure constructor at %L is being applied to component '%s', which is neither a POINTER nor ALLOCATABLE"
+msgstr ""
+
+#: fortran/resolve.c:1155
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface mismatch for procedure-pointer component '%s' in structure constructor at %L: %s"
+msgstr ""
+
+#: fortran/resolve.c:1171
+#, gcc-internal-format, gfc-internal-format
+msgid "The element in the structure constructor at %L, for pointer component '%s' should be a POINTER or a TARGET"
+msgstr ""
+
+#: fortran/resolve.c:1182
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer initialization target at %L must not be ALLOCATABLE "
+msgstr ""
+
+#: fortran/resolve.c:1188
+#, gcc-internal-format, gfc-internal-format
+msgid "Pointer initialization target at %L must have the SAVE attribute"
+msgstr ""
+
+#: fortran/resolve.c:1199
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid expression in the structure constructor for pointer component '%s' at %L in PURE procedure"
+msgstr ""
+
+#: fortran/resolve.c:1328
+#, gcc-internal-format, gfc-internal-format
+msgid "The upper bound in the last dimension must appear in the reference to the assumed size array '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:1390
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L is ambiguous"
+msgstr ""
+
+#: fortran/resolve.c:1394
+#, gcc-internal-format, gfc-internal-format
+msgid "GENERIC procedure '%s' is not allowed as an actual argument at %L"
+msgstr ""
+
+#: fortran/resolve.c:1506
+#, gcc-internal-format, gfc-internal-format
+msgid "Type specified for intrinsic function '%s' at %L is ignored"
+msgstr ""
+
+#: fortran/resolve.c:1519
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic subroutine '%s' at %L shall not have a type specifier"
+msgstr ""
+
+#: fortran/resolve.c:1530
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' declared INTRINSIC at %L does not exist"
+msgstr ""
+
+#: fortran/resolve.c:1541
+#, gcc-internal-format, gfc-internal-format
+msgid "The intrinsic '%s' declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate -std=* option or enable -fall-intrinsics in order to use it."
+msgstr ""
+
+#: fortran/resolve.c:1577
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
+msgstr ""
+
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
+#, gcc-internal-format, gfc-internal-format
+msgid "Label %d referenced at %L is never defined"
+msgstr ""
+
+#: fortran/resolve.c:1655
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement function '%s' at %L is not allowed as an actual argument"
+msgstr ""
+
+#: fortran/resolve.c:1663
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic '%s' at %L is not allowed as an actual argument"
+msgstr ""
+
+#: fortran/resolve.c:1671
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Internal procedure '%s' is used as actual argument at %L"
+msgstr ""
+
+#: fortran/resolve.c:1679
+#, gcc-internal-format, gfc-internal-format
+msgid "ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument at %L"
+msgstr ""
+
+#: fortran/resolve.c:1706
+#, gcc-internal-format, gfc-internal-format
+msgid "Unable to find a specific INTRINSIC procedure for the reference '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:1728
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %L is ambiguous"
+msgstr ""
+
+#: fortran/resolve.c:1783
+#, gcc-internal-format, gfc-internal-format
+msgid "By-value argument at %L is not of numeric type"
+msgstr ""
+
+#: fortran/resolve.c:1790
+#, gcc-internal-format, gfc-internal-format
+msgid "By-value argument at %L cannot be an array or an array section"
+msgstr ""
+
+#: fortran/resolve.c:1804
+#, gcc-internal-format, gfc-internal-format
+msgid "By-value argument at %L is not allowed in this context"
+msgstr ""
+
+#: fortran/resolve.c:1816
+#, gcc-internal-format, gfc-internal-format
+msgid "Passing internal procedure at %L by location not allowed"
+msgstr ""
+
+#: fortran/resolve.c:1827
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed actual argument at %L with ultimate pointer component"
+msgstr ""
+
+#: fortran/resolve.c:1950
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (12.4.1.5)"
+msgstr ""
+
+#: fortran/resolve.c:1989
+#, gcc-internal-format, gfc-internal-format
+msgid "Actual argument at %L for INTENT(%s) dummy '%s' of ELEMENTAL subroutine '%s' is a scalar, but another actual argument is an array"
+msgstr ""
+
+#: fortran/resolve.c:2151
+#, gcc-internal-format, gfc-internal-format
+msgid "Character length mismatch in return type of function '%s' at %L (%ld/%ld)"
+msgstr ""
+
+#: fortran/resolve.c:2159
+#, gcc-internal-format, gfc-internal-format
+msgid "Return type mismatch of function '%s' at %L (%s/%s)"
+msgstr ""
+
+#: fortran/resolve.c:2178
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' of procedure '%s' at %L has an attribute that requires an explicit interface for this procedure"
+msgstr ""
+
+#: fortran/resolve.c:2188
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L with assumed-shape dummy argument '%s' must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2196
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L with coarray dummy argument '%s' must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2204
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L with parametrized derived type argument '%s' must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2213
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L with polymorphic dummy argument '%s' must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2225
+#, gcc-internal-format, gfc-internal-format
+msgid "The reference to function '%s' at %L either needs an explicit INTERFACE or the rank is incorrect"
+msgstr ""
+
+#: fortran/resolve.c:2237
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' at %L with a POINTER or ALLOCATABLE result must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2250
+#, gcc-internal-format, gfc-internal-format
+msgid "Nonconstant character-length function '%s' at %L must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2260
+#, gcc-internal-format, gfc-internal-format
+msgid "ELEMENTAL procedure '%s' at %L must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2267
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L with BIND(C) attribute must have an explicit interface"
+msgstr ""
+
+#: fortran/resolve.c:2373
+#, gcc-internal-format, gfc-internal-format
+msgid "There is no specific function for the generic '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:2391
+#, gcc-internal-format, gfc-internal-format
+msgid "Generic function '%s' at %L is not consistent with a specific intrinsic interface"
+msgstr ""
+
+#: fortran/resolve.c:2429
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
+msgstr ""
+
+#: fortran/resolve.c:2478
+#, gcc-internal-format, gfc-internal-format
+msgid "Unable to resolve the specific function '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' at %L has no IMPLICIT type"
+msgstr ""
+
+#: fortran/resolve.c:2735
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument to '%s' at %L is not a variable"
+msgstr ""
+
+#: fortran/resolve.c:2779
+#, gcc-internal-format, gfc-internal-format
+msgid "More actual than formal arguments in '%s' call at %L"
+msgstr ""
+
+#: fortran/resolve.c:2791
+#, gcc-internal-format, gfc-internal-format
+msgid "Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer"
+msgstr ""
+
+#: fortran/resolve.c:2800
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed argument not permitted in '%s' call at %L"
+msgstr ""
+
+#: fortran/resolve.c:2823
+#, gcc-internal-format, gfc-internal-format
+msgid "Array section not permitted in '%s' call at %L"
+msgstr ""
+
+#: fortran/resolve.c:2834
+#, gcc-internal-format, gfc-internal-format
+msgid "Array section in '%s' call at %L"
+msgstr ""
+
+#: fortran/resolve.c:2853
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable variable '%s' used as a parameter to '%s' at %L must not be an array of zero size"
+msgstr ""
+
+#: fortran/resolve.c:2870
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable"
+msgstr ""
+
+#: fortran/resolve.c:2880
+#, gcc-internal-format, gfc-internal-format
+msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable"
+msgstr ""
+
+#: fortran/resolve.c:2903 fortran/resolve.c:2940
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1"
+msgstr ""
+
+#. Case 1c, section 15.1.2.5, J3/04-007: an associated
+#. scalar pointer.
+#: fortran/resolve.c:2916
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' to '%s' at %L must be an associated scalar POINTER"
+msgstr ""
+
+#: fortran/resolve.c:2932
+#, gcc-internal-format, gfc-internal-format
+msgid "Parameter '%s' to '%s' at %L must be a scalar"
+msgstr ""
+
+#: fortran/resolve.c:2948
+#, gcc-internal-format, gfc-internal-format
+msgid "Parameter '%s' to '%s' at %L must not be polymorphic"
+msgstr ""
+
+#. TODO: Update this error message to allow for procedure
+#. pointers once they are implemented.
+#: fortran/resolve.c:2961
+#, gcc-internal-format, gfc-internal-format
+msgid "Parameter '%s' to '%s' at %L must be a procedure"
+msgstr ""
+
+#: fortran/resolve.c:2969
+#, gcc-internal-format, gfc-internal-format
+msgid "Parameter '%s' to '%s' at %L must be BIND(C)"
+msgstr ""
+
+#: fortran/resolve.c:3018
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L is not a function"
+msgstr ""
+
+#: fortran/resolve.c:3026 fortran/resolve.c:3657
+#, gcc-internal-format, gfc-internal-format
+msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L"
+msgstr ""
+
+#. Internal procedures are taken care of in resolve_contained_fntype.
+#: fortran/resolve.c:3081
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument"
+msgstr ""
+
+#: fortran/resolve.c:3134
+#, gcc-internal-format, gfc-internal-format
+msgid "User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE construct"
+msgstr ""
+
+#: fortran/resolve.c:3184
+#, gcc-internal-format, gfc-internal-format
+msgid "Reference to non-PURE function '%s' at %L inside a FORALL %s"
+msgstr ""
+
+#: fortran/resolve.c:3191
+#, gcc-internal-format, gfc-internal-format
+msgid "Reference to non-PURE function '%s' at %L inside a DO CONCURRENT %s"
+msgstr ""
+
+#: fortran/resolve.c:3198
+#, gcc-internal-format, gfc-internal-format
+msgid "Function reference to '%s' at %L is to a non-PURE procedure within a PURE procedure"
+msgstr ""
+
+#: fortran/resolve.c:3217
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY '%s' at %L cannot be called recursively, as function '%s' is not RECURSIVE"
+msgstr ""
+
+#: fortran/resolve.c:3221
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' at %L cannot be called recursively, as it is not RECURSIVE"
+msgstr ""
+
+#: fortran/resolve.c:3260
+#, gcc-internal-format, gfc-internal-format
+msgid "Subroutine call to '%s' in FORALL block at %L is not PURE"
+msgstr ""
+
+#: fortran/resolve.c:3263
+#, gcc-internal-format, gfc-internal-format
+msgid "Subroutine call to '%s' in DO CONCURRENT block at %L is not PURE"
+msgstr ""
+
+#: fortran/resolve.c:3266
+#, gcc-internal-format, gfc-internal-format
+msgid "Subroutine call to '%s' at %L is not PURE"
+msgstr ""
+
+#: fortran/resolve.c:3332
+#, gcc-internal-format, gfc-internal-format
+msgid "There is no specific subroutine for the generic '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:3341
+#, gcc-internal-format, gfc-internal-format
+msgid "Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine interface"
+msgstr ""
+
+#: fortran/resolve.c:3450
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing SHAPE parameter for call to %s at %L"
+msgstr ""
+
+#: fortran/resolve.c:3458
+#, gcc-internal-format, gfc-internal-format
+msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array"
+msgstr ""
+
+#: fortran/resolve.c:3525
+#, gcc-internal-format, gfc-internal-format
+msgid "Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
+msgstr ""
+
+#: fortran/resolve.c:3569
+#, gcc-internal-format, gfc-internal-format
+msgid "Unable to resolve the specific subroutine '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:3629
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L has a type, which is not consistent with the CALL at %L"
+msgstr ""
+
+#: fortran/resolve.c:3667
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY '%s' at %L cannot be called recursively, as subroutine '%s' is not RECURSIVE"
+msgstr ""
+
+#: fortran/resolve.c:3671
+#, gcc-internal-format, gfc-internal-format
+msgid "SUBROUTINE '%s' at %L cannot be called recursively, as it is not RECURSIVE"
+msgstr ""
+
+#: fortran/resolve.c:3747
+#, gcc-internal-format, gfc-internal-format
+msgid "Shapes for operands at %L and %L are not conformable"
+msgstr ""
+
+#: fortran/resolve.c:4245
+#, gcc-internal-format, gfc-internal-format
+msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4250
+#, gcc-internal-format, gfc-internal-format
+msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4260
+#, gcc-internal-format, gfc-internal-format
+msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4265
+#, gcc-internal-format, gfc-internal-format
+msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4285
+#, gcc-internal-format, gfc-internal-format
+msgid "Illegal stride of zero at %L"
+msgstr ""
+
+#: fortran/resolve.c:4302
+#, gcc-internal-format, gfc-internal-format
+msgid "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4310
+#, gcc-internal-format, gfc-internal-format
+msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4326
+#, gcc-internal-format, gfc-internal-format
+msgid "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4335
+#, gcc-internal-format, gfc-internal-format
+msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
+msgstr ""
+
+#: fortran/resolve.c:4374
+#, gcc-internal-format, gfc-internal-format
+msgid "Rightmost upper bound of assumed size array section not specified at %L"
+msgstr ""
+
+#: fortran/resolve.c:4384
+#, gcc-internal-format, gfc-internal-format
+msgid "Rank mismatch in array reference at %L (%d/%d)"
+msgstr ""
+
+#: fortran/resolve.c:4392
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindex rank mismatch in array reference at %L (%d/%d)"
+msgstr ""
+
+#: fortran/resolve.c:4408
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindex of codimension %d must be a scalar at %L"
+msgstr ""
+
+#: fortran/resolve.c:4436
+#, gcc-internal-format, gfc-internal-format
+msgid "Array index at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:4442
+#, gcc-internal-format, gfc-internal-format
+msgid "Array index at %L must be of INTEGER type, found %s"
+msgstr ""
+
+#: fortran/resolve.c:4448
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: REAL array index at %L"
+msgstr ""
+
+#: fortran/resolve.c:4487
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument dim at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:4494
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument dim at %L must be of INTEGER type"
+msgstr ""
+
+#: fortran/resolve.c:4604
+#, gcc-internal-format, gfc-internal-format
+msgid "Array index at %L is an array of rank %d"
+msgstr ""
+
+#: fortran/resolve.c:4702
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring start index at %L must be of type INTEGER"
+msgstr ""
+
+#: fortran/resolve.c:4709
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring start index at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:4718
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring start index at %L is less than one"
+msgstr ""
+
+#: fortran/resolve.c:4731
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring end index at %L must be of type INTEGER"
+msgstr ""
+
+#: fortran/resolve.c:4738
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring end index at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:4748
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring end index at %L exceeds the string length"
+msgstr ""
+
+#: fortran/resolve.c:4758
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring end index at %L is too large"
+msgstr ""
+
+#: fortran/resolve.c:4904
+#, gcc-internal-format, gfc-internal-format
+msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L"
+msgstr ""
+
+#: fortran/resolve.c:4911
+#, gcc-internal-format, gfc-internal-format
+msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L"
+msgstr ""
+
+#: fortran/resolve.c:4930
+#, gcc-internal-format, gfc-internal-format
+msgid "Two or more part references with nonzero rank must not be specified at %L"
+msgstr ""
+
+#: fortran/resolve.c:5135
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s', used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameter"
+msgstr ""
+
+#: fortran/resolve.c:5140
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' is used at %L before the ENTRY statement in which it is a parameter"
+msgstr ""
+
+#: fortran/resolve.c:5204
+#, gcc-internal-format, gfc-internal-format
+msgid "Polymorphic subobject of coindexed object at %L"
+msgstr ""
+
+#: fortran/resolve.c:5217
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
+msgstr ""
+
+#: fortran/resolve.c:5543
+#, gcc-internal-format, gfc-internal-format
+msgid "Passed-object at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:5550
+#, gcc-internal-format, gfc-internal-format
+msgid "Base object for procedure-pointer component call at %L is of ABSTRACT type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:5582
+#, gcc-internal-format, gfc-internal-format
+msgid "Base object for type-bound procedure call at %L is of ABSTRACT type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:5591
+#, gcc-internal-format, gfc-internal-format
+msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
+msgstr ""
+
+#. Nothing matching found!
+#: fortran/resolve.c:5775
+#, gcc-internal-format, gfc-internal-format
+msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:5802
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L should be a SUBROUTINE"
+msgstr ""
+
+#: fortran/resolve.c:5849
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L should be a FUNCTION"
+msgstr ""
+
+#: fortran/resolve.c:6366
+#, gcc-internal-format, gfc-internal-format
+msgid "%s at %L must be a scalar"
+msgstr ""
+
+#: fortran/resolve.c:6376
+#, gcc-internal-format, gfc-internal-format
+msgid "Deleted feature: %s at %L must be integer"
+msgstr ""
+
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
+#, gcc-internal-format, gfc-internal-format
+msgid "%s at %L must be INTEGER"
+msgstr ""
+
+#: fortran/resolve.c:6428
+#, gcc-internal-format, gfc-internal-format
+msgid "Step expression in DO loop at %L cannot be zero"
+msgstr ""
+
+#: fortran/resolve.c:6463
+#, gcc-internal-format, gfc-internal-format
+msgid "DO loop at %L will be executed zero times"
+msgstr ""
+
+#: fortran/resolve.c:6524
+#, gcc-internal-format, gfc-internal-format
+msgid "FORALL index-name at %L must be a scalar INTEGER"
+msgstr ""
+
+#: fortran/resolve.c:6529
+#, gcc-internal-format, gfc-internal-format
+msgid "FORALL start expression at %L must be a scalar INTEGER"
+msgstr ""
+
+#: fortran/resolve.c:6536
+#, gcc-internal-format, gfc-internal-format
+msgid "FORALL end expression at %L must be a scalar INTEGER"
+msgstr ""
+
+#: fortran/resolve.c:6544
+#, gcc-internal-format, gfc-internal-format
+msgid "FORALL stride expression at %L must be a scalar %s"
+msgstr ""
+
+#: fortran/resolve.c:6549
+#, gcc-internal-format, gfc-internal-format
+msgid "FORALL stride expression at %L cannot be zero"
+msgstr ""
+
+#: fortran/resolve.c:6565
+#, gcc-internal-format, gfc-internal-format
+msgid "FORALL index '%s' may not appear in triplet specification at %L"
+msgstr ""
+
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
+msgstr ""
+
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed allocatable object at %L"
+msgstr ""
+
+#: fortran/resolve.c:6774
+#, gcc-internal-format, gfc-internal-format
+msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
+msgstr ""
+
+#: fortran/resolve.c:6802
+#, gcc-internal-format, gfc-internal-format
+msgid "Source-expr at %L and allocate-object at %L must have the same shape"
+msgstr ""
+
+#: fortran/resolve.c:6955
+#, gcc-internal-format, gfc-internal-format
+msgid "Type of entity at %L is type incompatible with source-expr at %L"
+msgstr ""
+
+#: fortran/resolve.c:6968
+#, gcc-internal-format, gfc-internal-format
+msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
+msgstr ""
+
+#: fortran/resolve.c:6982
+#, gcc-internal-format, gfc-internal-format
+msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
+msgstr ""
+
+#: fortran/resolve.c:6995
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
+msgstr ""
+
+#: fortran/resolve.c:7006
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
+msgstr ""
+
+#: fortran/resolve.c:7091
+#, gcc-internal-format, gfc-internal-format
+msgid "Array specification required in ALLOCATE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:7105
+#, gcc-internal-format, gfc-internal-format
+msgid "Coarray specification required in ALLOCATE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:7132
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad array specification in ALLOCATE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:7151
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
+msgstr ""
+
+#: fortran/resolve.c:7166
+#, gcc-internal-format, gfc-internal-format
+msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:7177
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad coarray specification in ALLOCATE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:7207
+#, gcc-internal-format, gfc-internal-format
+msgid "Stat-variable at %L must be a scalar INTEGER variable"
+msgstr ""
+
+#: fortran/resolve.c:7230
+#, gcc-internal-format, gfc-internal-format
+msgid "Stat-variable at %L shall not be %sd within the same %s statement"
+msgstr ""
+
+#: fortran/resolve.c:7241
+#, gcc-internal-format, gfc-internal-format
+msgid "ERRMSG at %L is useless without a STAT tag"
+msgstr ""
+
+#: fortran/resolve.c:7251
+#, gcc-internal-format, gfc-internal-format
+msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
+msgstr ""
+
+#: fortran/resolve.c:7274
+#, gcc-internal-format, gfc-internal-format
+msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
+msgstr ""
+
+#: fortran/resolve.c:7304
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocate-object at %L also appears at %L"
+msgstr ""
+
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocate-object at %L is subobject of object at %L"
+msgstr ""
+
+#. The cases overlap, or they are the same
+#. element in the list. Either way, we must
+#. issue an error and get the next case from P.
+#. FIXME: Sort P and Q by line number.
+#: fortran/resolve.c:7511
+#, gcc-internal-format, gfc-internal-format
+msgid "CASE label at %L overlaps with CASE label at %L"
+msgstr ""
+
+#: fortran/resolve.c:7562
+#, gcc-internal-format, gfc-internal-format
+msgid "Expression in CASE statement at %L must be of type %s"
+msgstr ""
+
+#: fortran/resolve.c:7573
+#, gcc-internal-format, gfc-internal-format
+msgid "Expression in CASE statement at %L must be of kind %d"
+msgstr ""
+
+#: fortran/resolve.c:7586
+#, gcc-internal-format, gfc-internal-format
+msgid "Expression in CASE statement at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:7632
+#, gcc-internal-format, gfc-internal-format
+msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
+msgstr ""
+
+#: fortran/resolve.c:7650
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of SELECT statement at %L cannot be %s"
+msgstr ""
+
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
+#, gcc-internal-format, gfc-internal-format
+msgid "Expression in CASE statement at %L is not in the range of %s"
+msgstr ""
+
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
+#, gcc-internal-format, gfc-internal-format
+msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
+msgstr ""
+
+#: fortran/resolve.c:7764
+#, gcc-internal-format, gfc-internal-format
+msgid "Logical range in CASE statement at %L is not allowed"
+msgstr ""
+
+#: fortran/resolve.c:7776
+#, gcc-internal-format, gfc-internal-format
+msgid "Constant logical value in CASE statement is repeated at %L"
+msgstr ""
+
+#: fortran/resolve.c:7790
+#, gcc-internal-format, gfc-internal-format
+msgid "Range specification at %L can never be matched"
+msgstr ""
+
+#: fortran/resolve.c:7893
+#, gcc-internal-format, gfc-internal-format
+msgid "Logical SELECT CASE block at %L has more that two cases"
+msgstr ""
+
+#: fortran/resolve.c:7958
+#, gcc-internal-format, gfc-internal-format
+msgid "Associate-name '%s' at %L is used as array"
+msgstr ""
+
+#: fortran/resolve.c:8000
+#, gcc-internal-format, gfc-internal-format
+msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:8026
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' at %L must be extensible"
+msgstr ""
+
+#: fortran/resolve.c:8036
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' at %L must be an extension of '%s'"
+msgstr ""
+
+#: fortran/resolve.c:8208
+#, gcc-internal-format, gfc-internal-format
+msgid "Double CLASS IS block in SELECT TYPE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:8299
+#, gcc-internal-format, gfc-internal-format
+msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
+msgstr ""
+
+#. FIXME: Test for defined input/output.
+#: fortran/resolve.c:8327
+#, gcc-internal-format, gfc-internal-format
+msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
+msgstr ""
+
+#: fortran/resolve.c:8339
+#, gcc-internal-format, gfc-internal-format
+msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
+msgstr ""
+
+#: fortran/resolve.c:8348
+#, gcc-internal-format, gfc-internal-format
+msgid "Data transfer element at %L cannot have procedure pointer components"
+msgstr ""
+
+#: fortran/resolve.c:8355
+#, gcc-internal-format, gfc-internal-format
+msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
+msgstr ""
+
+#: fortran/resolve.c:8363
+#, gcc-internal-format, gfc-internal-format
+msgid "Data transfer element at %L cannot have PRIVATE components"
+msgstr ""
+
+#: fortran/resolve.c:8372
+#, gcc-internal-format, gfc-internal-format
+msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
+msgstr ""
+
+#: fortran/resolve.c:8422
+#, gcc-internal-format, gfc-internal-format
+msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
+msgstr ""
+
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
+#, gcc-internal-format, gfc-internal-format
+msgid "STAT= argument at %L must be a scalar INTEGER variable"
+msgstr ""
+
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
+#, gcc-internal-format, gfc-internal-format
+msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
+msgstr ""
+
+#: fortran/resolve.c:8453
+#, gcc-internal-format, gfc-internal-format
+msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
+msgstr ""
+
+#: fortran/resolve.c:8470
+#, gcc-internal-format, gfc-internal-format
+msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
+msgstr ""
+
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
+#, gcc-internal-format, gfc-internal-format
+msgid "Imageset argument at %L must between 1 and num_images()"
+msgstr ""
+
+#: fortran/resolve.c:8527
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:8536
+#, gcc-internal-format, gfc-internal-format
+msgid "Branch at %L may result in an infinite loop"
+msgstr ""
+
+#. Note: A label at END CRITICAL does not leave the CRITICAL
+#. construct as END CRITICAL is still part of it.
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
+#, gcc-internal-format, gfc-internal-format
+msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
+msgstr ""
+
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
+#, gcc-internal-format, gfc-internal-format
+msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
+msgstr ""
+
+#. The label is not in an enclosing block, so illegal. This was
+#. allowed in Fortran 66, so we allow it as extension. No
+#. further checks are necessary in this case.
+#: fortran/resolve.c:8597
+#, gcc-internal-format, gfc-internal-format
+msgid "Label at %L is not in the same block as the GOTO statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:8669
+#, gcc-internal-format, gfc-internal-format
+msgid "WHERE mask at %L has inconsistent shape"
+msgstr ""
+
+#: fortran/resolve.c:8685
+#, gcc-internal-format, gfc-internal-format
+msgid "WHERE assignment target at %L has inconsistent shape"
+msgstr ""
+
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
+msgstr ""
+
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
+#, gcc-internal-format, gfc-internal-format
+msgid "Unsupported statement inside WHERE at %L"
+msgstr ""
+
+#: fortran/resolve.c:8734
+#, gcc-internal-format, gfc-internal-format
+msgid "Assignment to a FORALL index variable at %L"
+msgstr ""
+
+#: fortran/resolve.c:8743
+#, gcc-internal-format, gfc-internal-format
+msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
+msgstr ""
+
+#: fortran/resolve.c:8912
+#, gcc-internal-format, gfc-internal-format
+msgid "An outer FORALL construct already has an index with this name %L"
+msgstr ""
+
+#: fortran/resolve.c:8992
+#, gcc-internal-format, gfc-internal-format
+msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
+msgstr ""
+
+#: fortran/resolve.c:9146
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
+msgstr ""
+
+#: fortran/resolve.c:9178
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
+msgstr ""
+
+#: fortran/resolve.c:9183
+#, gcc-internal-format, gfc-internal-format
+msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
+msgstr ""
+
+#: fortran/resolve.c:9193
+#, gcc-internal-format, gfc-internal-format
+msgid "Assignment to coindexed variable at %L in a PURE procedure"
+msgstr ""
+
+#: fortran/resolve.c:9224
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
+msgstr ""
+
+#: fortran/resolve.c:9233
+#, gcc-internal-format, gfc-internal-format
+msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
+msgstr ""
+
+#: fortran/resolve.c:9368
+#, gcc-internal-format, gfc-internal-format
+msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
+msgstr ""
+
+#: fortran/resolve.c:9371
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' has not been assigned a target label at %L"
+msgstr ""
+
+#: fortran/resolve.c:9382
+#, gcc-internal-format, gfc-internal-format
+msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
+msgstr ""
+
+#: fortran/resolve.c:9417
+#, gcc-internal-format, gfc-internal-format
+msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
+msgstr ""
+
+#: fortran/resolve.c:9450
+#, gcc-internal-format, gfc-internal-format
+msgid "Arithmetic IF statement at %L requires a numeric expression"
+msgstr ""
+
+#: fortran/resolve.c:9509
+#, gcc-internal-format, gfc-internal-format
+msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
+msgstr ""
+
+#: fortran/resolve.c:9593
+#, gcc-internal-format, gfc-internal-format
+msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
+msgstr ""
+
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
+msgstr ""
+
+#. Common block names match but binding labels do not.
+#: fortran/resolve.c:9693
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:9740
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
+msgstr ""
+
+#. Make sure global procedures don't collide with anything.
+#: fortran/resolve.c:9792
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
+msgstr ""
+
+#. Make sure procedures in interface bodies don't collide.
+#: fortran/resolve.c:9805
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:9818
+#, gcc-internal-format, gfc-internal-format
+msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:9897
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
+msgstr ""
+
+#: fortran/resolve.c:9910
+#, gcc-internal-format, gfc-internal-format
+msgid "String length at %L is too large"
+msgstr ""
+
+#: fortran/resolve.c:10247
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable array '%s' at %L must have a deferred shape"
+msgstr ""
+
+#: fortran/resolve.c:10251
+#, gcc-internal-format, gfc-internal-format
+msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
+msgstr ""
+
+#: fortran/resolve.c:10259
+#, gcc-internal-format, gfc-internal-format
+msgid "Array pointer '%s' at %L must have a deferred shape"
+msgstr ""
+
+#: fortran/resolve.c:10269
+#, gcc-internal-format, gfc-internal-format
+msgid "Array '%s' at %L cannot have a deferred shape"
+msgstr ""
+
+#: fortran/resolve.c:10282
+#, gcc-internal-format, gfc-internal-format
+msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
+msgstr ""
+
+#: fortran/resolve.c:10294
+#, gcc-internal-format, gfc-internal-format
+msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
+msgstr ""
+
+#: fortran/resolve.c:10325
+#, gcc-internal-format, gfc-internal-format
+msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
+msgstr ""
+
+#: fortran/resolve.c:10347
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
+msgstr ""
+
+#. The shape of a main program or module array needs to be
+#. constant.
+#: fortran/resolve.c:10394
+#, gcc-internal-format, gfc-internal-format
+msgid "The module or main program array '%s' at %L must have constant shape"
+msgstr ""
+
+#: fortran/resolve.c:10403
+#, gcc-internal-format, gfc-internal-format
+msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
+msgstr ""
+
+#: fortran/resolve.c:10417
+#, gcc-internal-format, gfc-internal-format
+msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
+msgstr ""
+
+#: fortran/resolve.c:10436
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L must have constant character length in this context"
+msgstr ""
+
+#: fortran/resolve.c:10442
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON variable '%s' at %L must have constant character length"
+msgstr ""
+
+#: fortran/resolve.c:10487
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable '%s' at %L cannot have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10490
+#, gcc-internal-format, gfc-internal-format
+msgid "External '%s' at %L cannot have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10494
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy '%s' at %L cannot have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10497
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic '%s' at %L cannot have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10500
+#, gcc-internal-format, gfc-internal-format
+msgid "Function result '%s' at %L cannot have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10503
+#, gcc-internal-format, gfc-internal-format
+msgid "Automatic array '%s' at %L cannot have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10540
+#, gcc-internal-format, gfc-internal-format
+msgid "Character-valued statement function '%s' at %L must have constant length"
+msgstr ""
+
+#: fortran/resolve.c:10562
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
+msgstr ""
+
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
+msgstr ""
+
+#: fortran/resolve.c:10626
+#, gcc-internal-format, gfc-internal-format
+msgid "Function '%s' at %L cannot have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10635
+#, gcc-internal-format, gfc-internal-format
+msgid "External object '%s' at %L may not have an initializer"
+msgstr ""
+
+#: fortran/resolve.c:10643
+#, gcc-internal-format, gfc-internal-format
+msgid "ELEMENTAL function '%s' at %L must have a scalar result"
+msgstr ""
+
+#: fortran/resolve.c:10653
+#, gcc-internal-format, gfc-internal-format
+msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
+msgstr ""
+
+#: fortran/resolve.c:10672
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
+msgstr ""
+
+#: fortran/resolve.c:10676
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
+msgstr ""
+
+#: fortran/resolve.c:10680
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER(*) function '%s' at %L cannot be pure"
+msgstr ""
+
+#: fortran/resolve.c:10684
+#, gcc-internal-format, gfc-internal-format
+msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
+msgstr ""
+
+#: fortran/resolve.c:10696
+#, gcc-internal-format, gfc-internal-format
+msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:10751
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:10757
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:10763
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:10771
+#, gcc-internal-format, gfc-internal-format
+msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:10777
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
+msgstr ""
+
+#: fortran/resolve.c:10823
+#, gcc-internal-format, gfc-internal-format
+msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
+msgstr ""
+
+#: fortran/resolve.c:10831
+#, gcc-internal-format, gfc-internal-format
+msgid "FINAL procedure at %L must have exactly one argument"
+msgstr ""
+
+#: fortran/resolve.c:10840
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of FINAL procedure at %L must be of type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:10848
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of FINAL procedure at %L must not be a POINTER"
+msgstr ""
+
+#: fortran/resolve.c:10854
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
+msgstr ""
+
+#: fortran/resolve.c:10860
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
+msgstr ""
+
+#: fortran/resolve.c:10868
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
+msgstr ""
+
+#: fortran/resolve.c:10876
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
+msgstr ""
+
+#: fortran/resolve.c:10895
+#, gcc-internal-format, gfc-internal-format
+msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
+msgstr ""
+
+#: fortran/resolve.c:10928
+#, gcc-internal-format, gfc-internal-format
+msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
+msgstr ""
+
+#. TODO: Remove this error when finalization is finished.
+#: fortran/resolve.c:10933
+#, gcc-internal-format, gfc-internal-format
+msgid "Finalization at %L is not yet implemented"
+msgstr ""
+
+#: fortran/resolve.c:10964
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:10974
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
+msgstr ""
+
+#: fortran/resolve.c:11033
+#, gcc-internal-format, gfc-internal-format
+msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:11045
+#, gcc-internal-format, gfc-internal-format
+msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
+msgstr ""
+
+#: fortran/resolve.c:11075
+#, gcc-internal-format, gfc-internal-format
+msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
+msgstr ""
+
+#: fortran/resolve.c:11131
+#, gcc-internal-format, gfc-internal-format
+msgid "Type-bound operator at %L can't be NOPASS"
+msgstr ""
+
+#: fortran/resolve.c:11294
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
+msgstr ""
+
+#: fortran/resolve.c:11331
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
+msgstr ""
+
+#: fortran/resolve.c:11345
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' with PASS at %L must have at least one argument"
+msgstr ""
+
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:11367
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:11376
+#, gcc-internal-format, gfc-internal-format
+msgid "Passed-object dummy argument of '%s' at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:11382
+#, gcc-internal-format, gfc-internal-format
+msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
+msgstr ""
+
+#: fortran/resolve.c:11388
+#, gcc-internal-format, gfc-internal-format
+msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
+msgstr ""
+
+#: fortran/resolve.c:11417
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L has the same name as a component of '%s'"
+msgstr ""
+
+#: fortran/resolve.c:11426
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
+msgstr ""
+
+#: fortran/resolve.c:11521
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
+msgstr ""
+
+#: fortran/resolve.c:11579
+#, gcc-internal-format, gfc-internal-format
+msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
+msgstr ""
+
+#: fortran/resolve.c:11592
+#, gcc-internal-format, gfc-internal-format
+msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
+msgstr ""
+
+#: fortran/resolve.c:11605
+#, gcc-internal-format, gfc-internal-format
+msgid "Deferred-length character component '%s' at %L is not yet supported"
+msgstr ""
+
+#: fortran/resolve.c:11615
+#, gcc-internal-format, gfc-internal-format
+msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
+msgstr ""
+
+#: fortran/resolve.c:11624
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
+msgstr ""
+
+#: fortran/resolve.c:11634
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
+msgstr ""
+
+#: fortran/resolve.c:11643
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
+msgstr ""
+
+#: fortran/resolve.c:11651
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
+msgstr ""
+
+#: fortran/resolve.c:11716
+#, gcc-internal-format, gfc-internal-format
+msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
+msgstr ""
+
+#: fortran/resolve.c:11756
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
+msgstr ""
+
+#: fortran/resolve.c:11770
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
+msgstr ""
+
+#: fortran/resolve.c:11786
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:11796
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:11805
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
+msgstr ""
+
+#: fortran/resolve.c:11814
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
+msgstr ""
+
+#: fortran/resolve.c:11851
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
+msgstr ""
+
+#: fortran/resolve.c:11864
+#, gcc-internal-format, gfc-internal-format
+msgid "Character length of component '%s' needs to be a constant specification expression at %L"
+msgstr ""
+
+#: fortran/resolve.c:11875
+#, gcc-internal-format, gfc-internal-format
+msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
+msgstr ""
+
+#: fortran/resolve.c:11887
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
+msgstr ""
+
+#: fortran/resolve.c:11895
+#, gcc-internal-format, gfc-internal-format
+msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
+msgstr ""
+
+#: fortran/resolve.c:11904
+#, gcc-internal-format, gfc-internal-format
+msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
+msgstr ""
+
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
+#, gcc-internal-format, gfc-internal-format
+msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
+msgstr ""
+
+#: fortran/resolve.c:11945
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
+msgstr ""
+
+#: fortran/resolve.c:11995
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
+msgstr ""
+
+#: fortran/resolve.c:12047
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
+msgstr ""
+
+#: fortran/resolve.c:12053
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:12060
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:12069
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:12079
+#, gcc-internal-format, gfc-internal-format
+msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
+msgstr ""
+
+#: fortran/resolve.c:12089
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
+msgstr ""
+
+#. FIXME: Once UDDTIO is implemented, the following can be
+#. removed.
+#: fortran/resolve.c:12097
+#, gcc-internal-format, gfc-internal-format
+msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
+msgstr ""
+
+#: fortran/resolve.c:12114
+#, gcc-internal-format, gfc-internal-format
+msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:12124
+#, gcc-internal-format, gfc-internal-format
+msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:12135
+#, gcc-internal-format, gfc-internal-format
+msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:12162
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:12181
+#, gcc-internal-format, gfc-internal-format
+msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
+msgstr ""
+
+#: fortran/resolve.c:12193
+#, gcc-internal-format, gfc-internal-format
+msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
+msgstr ""
+
+#: fortran/resolve.c:12204
+#, gcc-internal-format, gfc-internal-format
+msgid "Incompatible derived type in PARAMETER at %L"
+msgstr ""
+
+#: fortran/resolve.c:12273
+#, gcc-internal-format, gfc-internal-format
+msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
+msgstr ""
+
+#: fortran/resolve.c:12276
+#, gcc-internal-format, gfc-internal-format
+msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
+msgstr ""
+
+#: fortran/resolve.c:12359
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
+msgstr ""
+
+#: fortran/resolve.c:12377
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed size array at %L must be a dummy argument"
+msgstr ""
+
+#: fortran/resolve.c:12380
+#, gcc-internal-format, gfc-internal-format
+msgid "Assumed shape array at %L must be a dummy argument"
+msgstr ""
+
+#: fortran/resolve.c:12393
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol at %L is not a DUMMY variable"
+msgstr ""
+
+#: fortran/resolve.c:12399
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
+msgstr ""
+
+#: fortran/resolve.c:12409
+#, gcc-internal-format, gfc-internal-format
+msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
+msgstr ""
+
+#: fortran/resolve.c:12418
+#, gcc-internal-format, gfc-internal-format
+msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
+msgstr ""
+
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
+#, gcc-internal-format, gfc-internal-format
+msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
+msgstr ""
+
+#: fortran/resolve.c:12458
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
+msgstr ""
+
+#: fortran/resolve.c:12538
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:12552
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
+msgstr ""
+
+#: fortran/resolve.c:12570
+#, gcc-internal-format, gfc-internal-format
+msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
+msgstr ""
+
+#: fortran/resolve.c:12582
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
+msgstr ""
+
+#: fortran/resolve.c:12594
+#, gcc-internal-format, gfc-internal-format
+msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
+msgstr ""
+
+#: fortran/resolve.c:12603
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
+msgstr ""
+
+#: fortran/resolve.c:12615
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
+msgstr ""
+
+#: fortran/resolve.c:12630
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
+msgstr ""
+
+#: fortran/resolve.c:12638
+#, gcc-internal-format, gfc-internal-format
+msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
+msgstr ""
+
+#: fortran/resolve.c:12645
+#, gcc-internal-format, gfc-internal-format
+msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
+msgstr ""
+
+#: fortran/resolve.c:12657
+#, gcc-internal-format, gfc-internal-format
+msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
+msgstr ""
+
+#: fortran/resolve.c:12666
+#, gcc-internal-format, gfc-internal-format
+msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
+msgstr ""
+
+#: fortran/resolve.c:12738
+#, gcc-internal-format, gfc-internal-format
+msgid "Threadprivate at %L isn't SAVEd"
+msgstr ""
+
+#: fortran/resolve.c:12832
+#, gcc-internal-format, gfc-internal-format
+msgid "BLOCK DATA element '%s' at %L must be in COMMON"
+msgstr ""
+
+#: fortran/resolve.c:12838
+#, gcc-internal-format, gfc-internal-format
+msgid "DATA array '%s' at %L must be specified in a previous declaration"
+msgstr ""
+
+#: fortran/resolve.c:12847
+#, gcc-internal-format, gfc-internal-format
+msgid "DATA element '%s' at %L cannot have a coindex"
+msgstr ""
+
+#: fortran/resolve.c:12861
+#, gcc-internal-format, gfc-internal-format
+msgid "DATA element '%s' at %L is a pointer and so must be a full array"
+msgstr ""
+
+#: fortran/resolve.c:12907
+#, gcc-internal-format, gfc-internal-format
+msgid "Nonconstant array section at %L in DATA statement"
+msgstr ""
+
+#: fortran/resolve.c:12920
+#, gcc-internal-format, gfc-internal-format
+msgid "DATA statement at %L has more variables than values"
+msgstr ""
+
+#: fortran/resolve.c:13019
+#, gcc-internal-format, gfc-internal-format
+msgid "start of implied-do loop at %L could not be simplified to a constant value"
+msgstr ""
+
+#: fortran/resolve.c:13027
+#, gcc-internal-format, gfc-internal-format
+msgid "end of implied-do loop at %L could not be simplified to a constant value"
+msgstr ""
+
+#: fortran/resolve.c:13035
+#, gcc-internal-format, gfc-internal-format
+msgid "step of implied-do loop at %L could not be simplified to a constant value"
+msgstr ""
+
+#: fortran/resolve.c:13160
+#, gcc-internal-format, gfc-internal-format
+msgid "DATA statement at %L has more values than variables"
+msgstr ""
+
+#: fortran/resolve.c:13299
+#, gcc-internal-format, gfc-internal-format
+msgid "Label %d at %L defined but not used"
+msgstr ""
+
+#: fortran/resolve.c:13304
+#, gcc-internal-format, gfc-internal-format
+msgid "Label %d at %L defined but cannot be used"
+msgstr ""
+
+#: fortran/resolve.c:13388
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
+msgstr ""
+
+#: fortran/resolve.c:13397
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
+msgstr ""
+
+#: fortran/resolve.c:13405
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
+msgstr ""
+
+#: fortran/resolve.c:13421
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
+msgstr ""
+
+#: fortran/resolve.c:13524
+#, gcc-internal-format, gfc-internal-format
+msgid "Syntax error in EQUIVALENCE statement at %L"
+msgstr ""
+
+#: fortran/resolve.c:13539
+#, gcc-internal-format, gfc-internal-format
+msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
+msgstr ""
+
+#: fortran/resolve.c:13551
+#, gcc-internal-format, gfc-internal-format
+msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
+msgstr ""
+
+#: fortran/resolve.c:13560
+#, gcc-internal-format, gfc-internal-format
+msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
+msgstr ""
+
+#: fortran/resolve.c:13639
+#, gcc-internal-format, gfc-internal-format
+msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
+msgstr ""
+
+#: fortran/resolve.c:13650
+#, gcc-internal-format, gfc-internal-format
+msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
+msgstr ""
+
+#: fortran/resolve.c:13661
+#, gcc-internal-format, gfc-internal-format
+msgid "Substring at %L has length zero"
+msgstr ""
+
+#: fortran/resolve.c:13704
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:13717
+#, gcc-internal-format, gfc-internal-format
+msgid "ENTRY '%s' at %L has no IMPLICIT type"
+msgstr ""
+
+#: fortran/resolve.c:13734
+#, gcc-internal-format, gfc-internal-format
+msgid "User operator procedure '%s' at %L must be a FUNCTION"
+msgstr ""
+
+#: fortran/resolve.c:13744
+#, gcc-internal-format, gfc-internal-format
+msgid "User operator procedure '%s' at %L cannot be assumed character length"
+msgstr ""
+
+#: fortran/resolve.c:13752
+#, gcc-internal-format, gfc-internal-format
+msgid "User operator procedure '%s' at %L must have at least one argument"
+msgstr ""
+
+#: fortran/resolve.c:13766
+#, gcc-internal-format, gfc-internal-format
+msgid "First argument of operator interface at %L cannot be optional"
+msgstr ""
+
+#: fortran/resolve.c:13784
+#, gcc-internal-format, gfc-internal-format
+msgid "Second argument of operator interface at %L cannot be optional"
+msgstr ""
+
+#: fortran/resolve.c:13791
+#, gcc-internal-format, gfc-internal-format
+msgid "Operator interface at %L must have, at most, two arguments"
+msgstr ""
+
+#: fortran/resolve.c:13867
+#, gcc-internal-format, gfc-internal-format
+msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
+msgstr ""
+
+#: fortran/scanner.c:773
+#, gcc-internal-format, gfc-internal-format
+msgid "!$OMP at %C starts a commented line as it neither is followed by a space nor is a continuation line"
+msgstr ""
+
+#: fortran/scanner.c:1052 fortran/scanner.c:1190
+#, gcc-internal-format, gfc-internal-format
+msgid "Line truncated at %L"
+msgstr ""
+
+#: fortran/scanner.c:1102 fortran/scanner.c:1234
+#, gcc-internal-format, gfc-internal-format
+msgid "Limit of %d continuations exceeded in statement at %C"
+msgstr ""
+
+#: fortran/scanner.c:1151
+#, gcc-internal-format, gfc-internal-format
+msgid "Missing '&' in continued character constant at %C"
+msgstr ""
+
+#: fortran/scanner.c:1384
+#, gcc-internal-format, gfc-internal-format
+msgid "Nonconforming tab character at %C"
+msgstr ""
+
+#: fortran/scanner.c:1472 fortran/scanner.c:1475
+#, gcc-internal-format, gfc-internal-format
+msgid "'&' not allowed by itself in line %d"
+msgstr ""
+
+#: fortran/scanner.c:1534
+#, gcc-internal-format, gfc-internal-format
+msgid "Nonconforming tab character in column %d of line %d"
+msgstr ""
+
+#: fortran/scanner.c:1759
+#, gcc-internal-format, gfc-internal-format
+msgid "%s:%d: file %s left but not entered"
+msgstr ""
+
+#: fortran/scanner.c:1793
+#, gcc-internal-format, gfc-internal-format
+msgid "%s:%d: Illegal preprocessor directive"
+msgstr ""
+
+#: fortran/scanner.c:1918
+#, gcc-internal-format, gfc-internal-format
+msgid "Can't open file '%s'"
+msgstr ""
+
+#: fortran/simplify.c:86
+#, gcc-internal-format, gfc-internal-format
+msgid "Result of %s overflows its kind at %L"
+msgstr ""
+
+#: fortran/simplify.c:91
+#, gcc-internal-format, gfc-internal-format
+msgid "Result of %s underflows its kind at %L"
+msgstr ""
+
+#: fortran/simplify.c:96
+#, gcc-internal-format, gfc-internal-format
+msgid "Result of %s is NaN at %L"
+msgstr ""
+
+#: fortran/simplify.c:100
+#, gcc-internal-format, gfc-internal-format
+msgid "Result of %s gives range error for its kind at %L"
+msgstr ""
+
+#: fortran/simplify.c:123
+#, gcc-internal-format, gfc-internal-format
+msgid "KIND parameter of %s at %L must be an initialization expression"
+msgstr ""
+
+#: fortran/simplify.c:131
+#, gcc-internal-format, gfc-internal-format
+msgid "Invalid KIND parameter of %s at %L"
+msgstr ""
+
+#: fortran/simplify.c:701
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of %s function at %L is negative"
+msgstr ""
+
+#: fortran/simplify.c:708
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of %s function at %L outside of range [0,127]"
+msgstr ""
+
+#: fortran/simplify.c:726
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of %s function at %L is too large for the collating sequence of kind %d"
+msgstr ""
+
+#: fortran/simplify.c:763
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of ACOS at %L must be between -1 and 1"
+msgstr ""
+
+#: fortran/simplify.c:796
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of ACOSH at %L must not be less than 1"
+msgstr ""
+
+#: fortran/simplify.c:1040
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of ASIN at %L must be between -1 and 1"
+msgstr ""
+
+#: fortran/simplify.c:1131
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of ATANH at %L must be inside the range -1 to 1"
+msgstr ""
+
+#: fortran/simplify.c:1162
+#, gcc-internal-format, gfc-internal-format
+msgid "If first argument of ATAN2 %L is zero, then the second argument must not be zero"
+msgstr ""
+
+#: fortran/simplify.c:1254
+#, gcc-internal-format, gfc-internal-format
+msgid "Result of BESSEL_YN is -INF at %L"
+msgstr ""
+
+#: fortran/simplify.c:2439
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of IACHAR at %L must be of length one"
+msgstr ""
+
+#: fortran/simplify.c:2446
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of IACHAR function at %L outside of range 0..127"
+msgstr ""
+
+#: fortran/simplify.c:2561
+#, gcc-internal-format, gfc-internal-format
+msgid "Sum of second and third arguments of IBITS exceeds bit size at %L"
+msgstr ""
+
+#: fortran/simplify.c:2636
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of ICHAR at %L must be of length one"
+msgstr ""
+
+#. Left shift, as in SHIFTL.
+#: fortran/simplify.c:3002 fortran/simplify.c:3010
+#, gcc-internal-format, gfc-internal-format
+msgid "Second argument of %s is negative at %L"
+msgstr ""
+
+#: fortran/simplify.c:3022
+#, gcc-internal-format, gfc-internal-format
+msgid "Magnitude of second argument of %s exceeds bit size at %L"
+msgstr ""
+
+#: fortran/simplify.c:3148
+#, gcc-internal-format, gfc-internal-format
+msgid "Magnitude of second argument of ISHFTC exceeds BIT_SIZE of first argument at %L"
+msgstr ""
+
+#: fortran/simplify.c:3448 fortran/simplify.c:3580
+#, gcc-internal-format, gfc-internal-format
+msgid "DIM argument at %L is out of bounds"
+msgstr ""
+
+#: fortran/simplify.c:3751
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of LOG at %L cannot be less than or equal to zero"
+msgstr ""
+
+#: fortran/simplify.c:3764
+#, gcc-internal-format, gfc-internal-format
+msgid "Complex argument of LOG at %L cannot be zero"
+msgstr ""
+
+#: fortran/simplify.c:3792
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of LOG10 at %L cannot be less than or equal to zero"
+msgstr ""
+
+#. Result is processor-dependent.
+#: fortran/simplify.c:4240
+#, gcc-internal-format, gfc-internal-format
+msgid "Second argument MOD at %L is zero"
+msgstr ""
+
+#. Result is processor-dependent.
+#: fortran/simplify.c:4251
+#, gcc-internal-format, gfc-internal-format
+msgid "Second argument of MOD at %L is zero"
+msgstr ""
+
+#. Result is processor-dependent. This processor just opts
+#. to not handle it at all.
+#. Result is processor-dependent.
+#: fortran/simplify.c:4293 fortran/simplify.c:4305
+#, gcc-internal-format, gfc-internal-format
+msgid "Second argument of MODULO at %L is zero"
+msgstr ""
+
+#: fortran/simplify.c:4380
+#, gcc-internal-format, gfc-internal-format
+msgid "Result of NEAREST is NaN at %L"
+msgstr ""
+
+#: fortran/simplify.c:4844
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument NCOPIES of REPEAT intrinsic is negative at %L"
+msgstr ""
+
+#: fortran/simplify.c:4899
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument NCOPIES of REPEAT intrinsic is too large at %L"
+msgstr ""
+
+#: fortran/simplify.c:5151
+#, gcc-internal-format, gfc-internal-format
+msgid "Result of SCALE overflows its kind at %L"
+msgstr ""
+
+#: fortran/simplify.c:5862
+#, gcc-internal-format, gfc-internal-format
+msgid "Argument of SQRT at %L has a negative value"
+msgstr ""
+
+#: fortran/simplify.c:6173
+#, gcc-internal-format, gfc-internal-format
+msgid "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY lower bound is %ld)"
+msgstr ""
+
+#: fortran/simplify.c:6196
+#, gcc-internal-format, gfc-internal-format
+msgid "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY upper bound is %ld)"
+msgstr ""
+
+#: fortran/simplify.c:6613
+#, gcc-internal-format, gfc-internal-format
+msgid "Character '%s' in string at %L cannot be converted into character kind %d"
+msgstr ""
+
+#: fortran/symbol.c:135
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate IMPLICIT NONE statement at %C"
+msgstr ""
+
+#: fortran/symbol.c:175
+#, gcc-internal-format, gfc-internal-format
+msgid "Letter '%c' already set in IMPLICIT statement at %C"
+msgstr ""
+
+#: fortran/symbol.c:197
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot specify IMPLICIT at %C after IMPLICIT NONE"
+msgstr ""
+
+#: fortran/symbol.c:207
+#, gcc-internal-format, gfc-internal-format
+msgid "Letter %c already has an IMPLICIT type at %C"
+msgstr ""
+
+#: fortran/symbol.c:263
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %L has no IMPLICIT type"
+msgstr ""
+
+#. BIND(C) variables should not be implicitly declared.
+#: fortran/symbol.c:280
+#, gcc-internal-format, gfc-internal-format
+msgid "Implicitly declared BIND(C) variable '%s' at %L may not be C interoperable"
+msgstr ""
+
+#. Dummy args to a BIND(C) routine may not be interoperable if
+#. they are implicitly typed.
+#: fortran/symbol.c:294
+#, gcc-internal-format, gfc-internal-format
+msgid "Implicitly declared variable '%s' at %L may not be C interoperable but it is a dummy argument to the BIND(C) procedure '%s' at %L"
+msgstr ""
+
+#: fortran/symbol.c:335
+#, gcc-internal-format, gfc-internal-format
+msgid "Function result '%s' at %L has no IMPLICIT type"
+msgstr ""
+
+#: fortran/symbol.c:424
+#, gcc-internal-format, gfc-internal-format
+msgid "%s attribute not allowed in BLOCK DATA program unit at %L"
+msgstr ""
+
+#: fortran/symbol.c:448
+#, gcc-internal-format, gfc-internal-format
+msgid "Namelist group name at %L cannot have the SAVE attribute"
+msgstr ""
+
+#: fortran/symbol.c:482
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: Procedure pointer at %C"
+msgstr ""
+
+#: fortran/symbol.c:644
+#, gcc-internal-format, gfc-internal-format
+msgid "%s attribute applied to %s %s at %L"
+msgstr ""
+
+#: fortran/symbol.c:651
+#, gcc-internal-format, gfc-internal-format
+msgid "BIND(C) applied to %s %s at %L"
+msgstr ""
+
+#: fortran/symbol.c:762 fortran/symbol.c:1485
+#, gcc-internal-format, gfc-internal-format
+msgid "%s attribute conflicts with %s attribute at %L"
+msgstr ""
+
+#: fortran/symbol.c:765
+#, gcc-internal-format, gfc-internal-format
+msgid "%s attribute conflicts with %s attribute in '%s' at %L"
+msgstr ""
+
+#: fortran/symbol.c:773
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: %s attribute with %s attribute at %L"
+msgstr ""
+
+#: fortran/symbol.c:779
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: %s attribute with %s attribute in '%s' at %L"
+msgstr ""
+
+#: fortran/symbol.c:823
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot change attributes of USE-associated symbol at %L"
+msgstr ""
+
+#: fortran/symbol.c:826
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot change attributes of USE-associated symbol %s at %L"
+msgstr ""
+
+#: fortran/symbol.c:842
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate %s attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:884
+#, gcc-internal-format, gfc-internal-format
+msgid "ALLOCATABLE specified outside of INTERFACE body at %L"
+msgstr ""
+
+#: fortran/symbol.c:910
+#, gcc-internal-format, gfc-internal-format
+msgid "CODIMENSION specified for '%s' outside its INTERFACE body at %L"
+msgstr ""
+
+#: fortran/symbol.c:936
+#, gcc-internal-format, gfc-internal-format
+msgid "DIMENSION specified for '%s' outside its INTERFACE body at %L"
+msgstr ""
+
+#: fortran/symbol.c:1066
+#, gcc-internal-format, gfc-internal-format
+msgid "Cray Pointee at %L appears in multiple pointer() statements"
+msgstr ""
+
+#: fortran/symbol.c:1085
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate PROTECTED attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:1119
+#, gcc-internal-format, gfc-internal-format
+msgid "SAVE attribute at %L cannot be specified in a PURE procedure"
+msgstr ""
+
+#: fortran/symbol.c:1130
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate SAVE attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:1151
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate VALUE attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:1171
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate VOLATILE attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:1190
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate ASYNCHRONOUS attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:1481
+#, gcc-internal-format, gfc-internal-format
+msgid "%s attribute of '%s' conflicts with %s attribute at %L"
+msgstr ""
+
+#: fortran/symbol.c:1515
+#, gcc-internal-format, gfc-internal-format
+msgid "%s procedure at %L is already declared as %s procedure"
+msgstr ""
+
+#: fortran/symbol.c:1550
+#, gcc-internal-format, gfc-internal-format
+msgid "INTENT (%s) conflicts with INTENT(%s) at %L"
+msgstr ""
+
+#: fortran/symbol.c:1574
+#, gcc-internal-format, gfc-internal-format
+msgid "ACCESS specification at %L was already specified"
+msgstr ""
+
+#: fortran/symbol.c:1591
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate BIND attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:1598
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: BIND(C) at %L"
+msgstr ""
+
+#: fortran/symbol.c:1615
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate EXTENDS attribute specified at %L"
+msgstr ""
+
+#: fortran/symbol.c:1619
+#, gcc-internal-format, gfc-internal-format
+msgid "Fortran 2003: EXTENDS at %L"
+msgstr ""
+
+#: fortran/symbol.c:1641
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %L already has an explicit interface"
+msgstr ""
+
+#: fortran/symbol.c:1648
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %L has attributes specified outside its INTERFACE body"
+msgstr ""
+
+#: fortran/symbol.c:1682
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %L conflicts with symbol from module '%s', use-associated at %L"
+msgstr ""
+
+#: fortran/symbol.c:1686
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %L already has basic type of %s"
+msgstr ""
+
+#: fortran/symbol.c:1693
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure '%s' at %L may not have basic type of %s"
+msgstr ""
+
+#: fortran/symbol.c:1705
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %L cannot have a type"
+msgstr ""
+
+#: fortran/symbol.c:1874
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %C already declared at %L"
+msgstr ""
+
+#: fortran/symbol.c:1885
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %C already in the parent type at %L"
+msgstr ""
+
+#: fortran/symbol.c:1967
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %C is ambiguous"
+msgstr ""
+
+#: fortran/symbol.c:1999
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' at %C is being used before it is defined"
+msgstr ""
+
+#: fortran/symbol.c:2037
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %C is a PRIVATE component of '%s'"
+msgstr ""
+
+#: fortran/symbol.c:2055
+#, gcc-internal-format, gfc-internal-format
+msgid "'%s' at %C is not a member of the '%s' structure"
+msgstr ""
+
+#: fortran/symbol.c:2196
+#, gcc-internal-format, gfc-internal-format
+msgid "Duplicate statement label %d at %L and %L"
+msgstr ""
+
+#: fortran/symbol.c:2206
+#, gcc-internal-format, gfc-internal-format
+msgid "Label %d at %C already referenced as branch target"
+msgstr ""
+
+#: fortran/symbol.c:2215
+#, gcc-internal-format, gfc-internal-format
+msgid "Label %d at %C already referenced as a format label"
+msgstr ""
+
+#: fortran/symbol.c:2257
+#, gcc-internal-format, gfc-internal-format
+msgid "Label %d at %C previously used as a FORMAT label"
+msgstr ""
+
+#: fortran/symbol.c:2265
+#, gcc-internal-format, gfc-internal-format
+msgid "Label %d at %C previously used as branch target"
+msgstr ""
+
+#: fortran/symbol.c:2576
+#, gcc-internal-format, gfc-internal-format
+msgid "Name '%s' at %C is an ambiguous reference to '%s' from module '%s'"
+msgstr ""
+
+#: fortran/symbol.c:2579
+#, gcc-internal-format, gfc-internal-format
+msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
+msgstr ""
+
+#. Symbol is from another namespace.
+#: fortran/symbol.c:2759
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' at %C has already been host associated"
+msgstr ""
+
+#: fortran/symbol.c:3602
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' declared at %L must have the BIND attribute to be C interoperable"
+msgstr ""
+
+#: fortran/symbol.c:3620
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' with BIND(C) attribute at %L is empty, and may be inaccessible by the C companion processor"
+msgstr ""
+
+#: fortran/symbol.c:3641
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %L cannot have the POINTER attribute because it is a member of the BIND(C) derived type '%s' at %L"
+msgstr ""
+
+#: fortran/symbol.c:3651
+#, gcc-internal-format, gfc-internal-format
+msgid "Procedure pointer component '%s' at %L cannot be a member of the BIND(C) derived type '%s' at %L"
+msgstr ""
+
+#: fortran/symbol.c:3662
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type '%s' at %L"
+msgstr ""
+
+#. If the derived type is bind(c), all fields must be
+#. interop.
+#: fortran/symbol.c:3700
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' in derived type '%s' at %L may not be C interoperable, even though derived type '%s' is BIND(C)"
+msgstr ""
+
+#. If derived type is param to bind(c) routine, or to one
+#. of the iso_c_binding procs, it must be interoperable, so
+#. all fields must interop too.
+#: fortran/symbol.c:3709
+#, gcc-internal-format, gfc-internal-format
+msgid "Component '%s' in derived type '%s' at %L may not be C interoperable"
+msgstr ""
+
+#: fortran/symbol.c:3723
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' at %L cannot be declared with both PRIVATE and BIND(C) attributes"
+msgstr ""
+
+#: fortran/symbol.c:3731
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' at %L cannot have the SEQUENCE attribute because it is BIND(C)"
+msgstr ""
+
+#: fortran/symbol.c:4739
+#, gcc-internal-format, gfc-internal-format
+msgid "Symbol '%s' is used before it is typed at %L"
+msgstr ""
+
+#: fortran/symbol.c:4745
+#, gcc-internal-format, gfc-internal-format
+msgid "Extension: Symbol '%s' is used before it is typed at %L"
+msgstr ""
+
+#: fortran/target-memory.c:643
+#, gcc-internal-format, gfc-internal-format
+msgid "Overlapping unequal initializers in EQUIVALENCE at %L"
+msgstr ""
+
+#: fortran/target-memory.c:731
+#, gcc-internal-format, gfc-internal-format
+msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
+msgstr ""
+
+#: fortran/trans-array.c:7003
+#, gcc-internal-format, gfc-internal-format
+msgid "Creating array temporary at %L for argument '%s'"
+msgstr ""
+
+#: fortran/trans-array.c:8129
+#, gcc-internal-format
+msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
+msgstr ""
+
+#: fortran/trans-array.c:8626
+#, gcc-internal-format, gfc-internal-format
+msgid "bad expression type during walk (%d)"
+msgstr ""
+
+#: fortran/trans-common.c:400
+#, gcc-internal-format, gfc-internal-format
+msgid "Named COMMON block '%s' at %L shall be of the same size as elsewhere (%lu vs %lu bytes)"
+msgstr ""
+
+#: fortran/trans-common.c:853
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad array reference at %L"
+msgstr ""
+
+#: fortran/trans-common.c:861
+#, gcc-internal-format, gfc-internal-format
+msgid "Illegal reference type at %L as EQUIVALENCE object"
+msgstr ""
+
+#: fortran/trans-common.c:901
+#, gcc-internal-format, gfc-internal-format
+msgid "Inconsistent equivalence rules involving '%s' at %L and '%s' at %L"
+msgstr ""
+
+#. Aligning this field would misalign a previous field.
+#: fortran/trans-common.c:1034
+#, gcc-internal-format, gfc-internal-format
+msgid "The equivalence set for variable '%s' declared at %L violates alignment requirements"
+msgstr ""
+
+#: fortran/trans-common.c:1099
+#, gcc-internal-format, gfc-internal-format
+msgid "Equivalence for '%s' does not match ordering of COMMON '%s' at %L"
+msgstr ""
+
+#: fortran/trans-common.c:1114
+#, gcc-internal-format, gfc-internal-format
+msgid "The equivalence set for '%s' cause an invalid extension to COMMON '%s' at %L"
+msgstr ""
+
+#: fortran/trans-common.c:1129
+#, gcc-internal-format, gfc-internal-format
+msgid "Padding of %d bytes required before '%s' in COMMON '%s' at %L; reorder elements or use -fno-align-commons"
+msgstr ""
+
+#: fortran/trans-common.c:1134
+#, gcc-internal-format, gfc-internal-format
+msgid "Padding of %d bytes required before '%s' in COMMON at %L; reorder elements or use -fno-align-commons"
+msgstr ""
+
+#: fortran/trans-common.c:1155
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON '%s' at %L does not exist"
+msgstr ""
+
+#: fortran/trans-common.c:1163
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON '%s' at %L requires %d bytes of padding; reorder elements or use -fno-align-commons"
+msgstr ""
+
+#: fortran/trans-common.c:1167
+#, gcc-internal-format, gfc-internal-format
+msgid "COMMON at %L requires %d bytes of padding; reorder elements or use -fno-align-commons"
+msgstr ""
+
+#: fortran/trans-const.c:313
+#, gcc-internal-format, gfc-internal-format
+msgid "Assigning value other than 0 or 1 to LOGICAL has undefined result at %L"
+msgstr ""
+
+#: fortran/trans-const.c:349
+#, gcc-internal-format, gfc-internal-format
+msgid "gfc_conv_constant_to_tree(): invalid type: %s"
+msgstr ""
+
+#: fortran/trans-const.c:380
+#, gcc-internal-format, gfc-internal-format
+msgid "non-constant initialization expression at %L"
+msgstr ""
+
+#: fortran/trans-decl.c:1347
+#, gcc-internal-format
+msgid "intrinsic variable which isn't a procedure"
+msgstr ""
+
+#: fortran/trans-decl.c:3518 fortran/trans-decl.c:5382
+#, gcc-internal-format, gfc-internal-format
+msgid "Return value of function '%s' at %L not set"
+msgstr ""
+
+#: fortran/trans-decl.c:3837
+#, gcc-internal-format
+msgid "Deferred type parameter not yet supported"
+msgstr ""
+
+#: fortran/trans-decl.c:4044
+#, gcc-internal-format, gfc-internal-format
+msgid "backend decl for module variable %s already exists"
+msgstr ""
+
+#: fortran/trans-decl.c:4568
+#, gcc-internal-format, gfc-internal-format
+msgid "Dummy argument '%s' at %L was declared INTENT(OUT) but was not set"
+msgstr ""
+
+#: fortran/trans-decl.c:4572
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived-type dummy argument '%s' at %L was declared INTENT(OUT) but was not set and does not have a default initializer"
+msgstr ""
+
+#: fortran/trans-decl.c:4581 fortran/trans-decl.c:4693
+#, gcc-internal-format, gfc-internal-format
+msgid "Unused dummy argument '%s' at %L"
+msgstr ""
+
+#: fortran/trans-decl.c:4594
+#, gcc-internal-format, gfc-internal-format
+msgid "Unused variable '%s' declared at %L"
+msgstr ""
+
+#: fortran/trans-decl.c:4601
+#, gcc-internal-format, gfc-internal-format
+msgid "Unused module variable '%s' which has been explicitly imported at %L"
+msgstr ""
+
+#: fortran/trans-decl.c:4648
+#, gcc-internal-format, gfc-internal-format
+msgid "Unused parameter '%s' declared at %L"
+msgstr ""
+
+#: fortran/trans-decl.c:4651
+#, gcc-internal-format, gfc-internal-format
+msgid "Unused parameter '%s' which has been explicitly imported at %L"
+msgstr ""
+
+#: fortran/trans-decl.c:4666
+#, gcc-internal-format, gfc-internal-format
+msgid "Return value '%s' of function '%s' declared at %L not set"
+msgstr ""
+
+#: fortran/trans-expr.c:1985
+#, gcc-internal-format
+msgid "Unknown intrinsic op"
+msgstr ""
+
+#: fortran/trans-expr.c:3213
+#, gcc-internal-format, gfc-internal-format
+msgid "Unknown argument list function at %L"
+msgstr ""
+
+#: fortran/trans-intrinsic.c:856
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic function %s(%d) not recognized"
+msgstr ""
+
+#: fortran/trans-intrinsic.c:1035 fortran/trans-intrinsic.c:1385
+#: fortran/trans-intrinsic.c:1563
+#, gcc-internal-format, gfc-internal-format
+msgid "'dim' argument of %s intrinsic at %L is not a valid dimension index"
+msgstr ""
+
+#: fortran/trans-io.c:2031
+#, gcc-internal-format, gfc-internal-format
+msgid "Derived type '%s' at %L has PRIVATE components"
+msgstr ""
+
+#: fortran/trans-io.c:2179
+#, gcc-internal-format, gfc-internal-format
+msgid "Bad IO basetype (%d)"
+msgstr ""
+
+#: fortran/trans-openmp.c:1837
+#, gcc-internal-format
+msgid "gfc_trans_omp_workshare(): Bad statement code"
+msgstr ""
+
+#: fortran/trans-stmt.c:539
+#, gcc-internal-format, gfc-internal-format
+msgid "An alternate return at %L without a * dummy argument"
+msgstr ""
+
+#: fortran/trans-stmt.c:862
+#, gcc-internal-format, gfc-internal-format
+msgid "Sorry, only support for integer kind %d implemented for image-set at %L"
+msgstr ""
+
+#: fortran/trans-types.c:497
+#, gcc-internal-format
+msgid "INTEGER(KIND=8) is not available for -fdefault-integer-8 option"
+msgstr ""
+
+#: fortran/trans-types.c:505
+#, gcc-internal-format
+msgid "INTEGER(KIND=8) is not available for -finteger-4-integer-8 option"
+msgstr ""
+
+#: fortran/trans-types.c:523
+#, gcc-internal-format
+msgid "REAL(KIND=8) is not available for -fdefault-real-8 option"
+msgstr ""
+
+#: fortran/trans-types.c:530
+#, gcc-internal-format
+msgid "REAL(KIND=8) is not available for -freal-4-real-8 option"
+msgstr ""
+
+#: fortran/trans-types.c:537
+#, gcc-internal-format
+msgid "REAL(KIND=10) is not available for -freal-4-real-10 option"
+msgstr ""
+
+#: fortran/trans-types.c:544
+#, gcc-internal-format
+msgid "REAL(KIND=16) is not available for -freal-4-real-16 option"
+msgstr ""
+
+#: fortran/trans-types.c:558
+#, gcc-internal-format
+msgid "Use of -fdefault-double-8 requires -fdefault-real-8"
+msgstr ""
+
+#: fortran/trans-types.c:567
+#, gcc-internal-format
+msgid "REAL(KIND=4) is not available for -freal-8-real-4 option"
+msgstr ""
+
+#: fortran/trans-types.c:574
+#, gcc-internal-format
+msgid "REAL(KIND=10) is not available for -freal-8-real-10 option"
+msgstr ""
+
+#: fortran/trans-types.c:581
+#, gcc-internal-format
+msgid "REAL(KIND=10) is not available for -freal-8-real-16 option"
+msgstr ""
+
+#: fortran/trans-types.c:1432
+#, gcc-internal-format, gfc-internal-format
+msgid "Array element size too big at %C"
+msgstr ""
+
+#: fortran/trans.c:1538
+#, gcc-internal-format
+msgid "gfc_trans_code(): Bad statement code"
+msgstr ""
+
+#: java/class.c:836
+#, gcc-internal-format
+msgid "bad method signature"
+msgstr ""
+
+#: java/class.c:895
+#, gcc-internal-format
+msgid "misplaced ConstantValue attribute (not in any field)"
+msgstr ""
+
+#: java/class.c:898
+#, gcc-internal-format, gfc-internal-format
+msgid "duplicate ConstantValue attribute for field '%s'"
+msgstr ""
+
+#: java/class.c:909
+#, gcc-internal-format, gfc-internal-format
+msgid "ConstantValue attribute of field '%s' has wrong type"
+msgstr ""
+
+#: java/class.c:1637
+#, gcc-internal-format
+msgid "abstract method in non-abstract class"
+msgstr ""
+
+#: java/class.c:2701
+#, gcc-internal-format
+msgid "non-static method %q+D overrides static method"
+msgstr ""
+
+#: java/decl.c:1206
+#, gcc-internal-format
+msgid "%q+D used prior to declaration"
+msgstr ""
+
+#: java/decl.c:1629
+#, gcc-internal-format
+msgid "In %+D: overlapped variable and exception ranges at %d"
+msgstr ""
+
+#: java/decl.c:1680
+#, gcc-internal-format
+msgid "bad type in parameter debug info"
+msgstr ""
+
+#: java/decl.c:1689
+#, gcc-internal-format
+msgid "bad PC range for debug info for local %q+D"
+msgstr ""
+
+#: java/expr.c:357
+#, gcc-internal-format, gfc-internal-format
+msgid "need to insert runtime check for %s"
+msgstr ""
+
+#: java/expr.c:505 java/expr.c:552
+#, gcc-internal-format, gfc-internal-format
+msgid "assert: %s is assign compatible with %s"
+msgstr ""
+
+#: java/expr.c:663
+#, gcc-internal-format
+msgid "stack underflow - dup* operation"
+msgstr ""
+
+#: java/expr.c:1662
+#, gcc-internal-format
+msgid "reference %qs is ambiguous: appears in interface %qs and interface %qs"
+msgstr ""
+
+#: java/expr.c:1690
+#, gcc-internal-format
+msgid "field %qs not found"
+msgstr ""
+
+#: java/expr.c:2249
+#, gcc-internal-format, gfc-internal-format
+msgid "method '%s' not found in class"
+msgstr ""
+
+#: java/expr.c:2442
+#, gcc-internal-format, gfc-internal-format
+msgid "failed to find class '%s'"
+msgstr ""
+
+#: java/expr.c:2483
+#, gcc-internal-format, gfc-internal-format
+msgid "class '%s' has no method named '%s' matching signature '%s'"
+msgstr ""
+
+#: java/expr.c:2514
+#, gcc-internal-format
+msgid "invokestatic on non static method"
+msgstr ""
+
+#: java/expr.c:2519
+#, gcc-internal-format
+msgid "invokestatic on abstract method"
+msgstr ""
+
+#: java/expr.c:2527
+#, gcc-internal-format
+msgid "invoke[non-static] on static method"
+msgstr ""
+
+#: java/expr.c:2885
+#, gcc-internal-format, gfc-internal-format
+msgid "missing field '%s' in '%s'"
+msgstr ""
+
+#: java/expr.c:2892
+#, gcc-internal-format, gfc-internal-format
+msgid "mismatching signature for field '%s' in '%s'"
+msgstr ""
+
+#: java/expr.c:2921
+#, gcc-internal-format
+msgid "assignment to final field %q+D not in field%'s class"
+msgstr ""
+
+#: java/expr.c:3149
+#, gcc-internal-format
+msgid "invalid PC in line number table"
+msgstr ""
+
+#: java/expr.c:3199
+#, gcc-internal-format, gfc-internal-format
+msgid "unreachable bytecode from %d to before %d"
+msgstr ""
+
+#: java/expr.c:3241
+#, gcc-internal-format, gfc-internal-format
+msgid "unreachable bytecode from %d to the end of the method"
+msgstr ""
+
+#. duplicate code from LOAD macro
+#: java/expr.c:3549
+#, gcc-internal-format
+msgid "unrecognized wide sub-instruction"
+msgstr ""
+
+#: java/jcf-parse.c:506
+#, gcc-internal-format, gfc-internal-format
+msgid "<constant pool index %d not in range>"
+msgstr ""
+
+#: java/jcf-parse.c:516
+#, gcc-internal-format, gfc-internal-format
+msgid "<constant pool index %d unexpected type"
+msgstr ""
+
+#: java/jcf-parse.c:1098
+#, gcc-internal-format
+msgid "bad string constant"
+msgstr ""
+
+#: java/jcf-parse.c:1116
+#, gcc-internal-format, gfc-internal-format
+msgid "bad value constant type %d, index %d"
+msgstr ""
+
+#: java/jcf-parse.c:1396 java/jcf-parse.c:1402
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot find file for class %s"
+msgstr ""
+
+#: java/jcf-parse.c:1427
+#, gcc-internal-format
+msgid "not a valid Java .class file"
+msgstr ""
+
+#: java/jcf-parse.c:1430
+#, gcc-internal-format
+msgid "error while parsing constant pool"
+msgstr ""
+
+#. FIXME - where was first time
+#: java/jcf-parse.c:1445
+#, gcc-internal-format, gfc-internal-format
+msgid "reading class %s for the second time from %s"
+msgstr ""
+
+#: java/jcf-parse.c:1463
+#, gcc-internal-format
+msgid "error while parsing fields"
+msgstr ""
+
+#: java/jcf-parse.c:1466
+#, gcc-internal-format
+msgid "error while parsing methods"
+msgstr ""
+
+#: java/jcf-parse.c:1469
+#, gcc-internal-format
+msgid "error while parsing final attributes"
+msgstr ""
+
+#: java/jcf-parse.c:1508
+#, gcc-internal-format
+msgid "duplicate class will only be compiled once"
+msgstr ""
+
+#: java/jcf-parse.c:1604
+#, gcc-internal-format
+msgid "missing Code attribute"
+msgstr ""
+
+#: java/jcf-parse.c:1849
+#, gcc-internal-format
+msgid "no input file specified"
+msgstr ""
+
+#: java/jcf-parse.c:1885
+#, gcc-internal-format
+msgid "can%'t close input file %s: %m"
+msgstr ""
+
+#: java/jcf-parse.c:1928
+#, gcc-internal-format, gfc-internal-format
+msgid "bad zip/jar file %s"
+msgstr ""
+
+#: java/jcf-parse.c:2130
+#, gcc-internal-format, gfc-internal-format
+msgid "error while reading %s from zip file"
+msgstr ""
+
+#: java/jvspec.c:396
+#, gcc-internal-format
+msgid "can%'t specify %<-D%> without %<--main%>"
+msgstr ""
+
+#: java/jvspec.c:399
+#, gcc-internal-format
+msgid "%qs is not a valid class name"
+msgstr ""
+
+#: java/jvspec.c:405
+#, gcc-internal-format
+msgid "--resource requires -o"
+msgstr ""
+
+#: java/jvspec.c:412
+#, gcc-internal-format
+msgid "already-compiled .class files ignored with -C"
+msgstr ""
+
+#: java/jvspec.c:419
+#, gcc-internal-format
+msgid "cannot specify both -C and -o"
+msgstr ""
+
+#: java/jvspec.c:431
+#, gcc-internal-format
+msgid "cannot create temporary file"
+msgstr ""
+
+#: java/jvspec.c:453
+#, gcc-internal-format
+msgid "using both @FILE with multiple files not implemented"
+msgstr ""
+
+#: java/jvspec.c:537
+#, gcc-internal-format
+msgid "cannot specify %<main%> class when not linking"
+msgstr ""
+
+#: java/lang.c:583
+#, gcc-internal-format
+msgid "-fexcess-precision=standard for Java"
+msgstr ""
+
+#: java/lang.c:594
+#, gcc-internal-format
+msgid "-findirect-dispatch is incompatible with -freduced-reflection"
+msgstr ""
+
+#: java/lang.c:597
+#, gcc-internal-format
+msgid "-fjni is incompatible with -freduced-reflection"
+msgstr ""
+
+#: java/lang.c:608
+#, gcc-internal-format
+msgid "can%'t do dependency tracking with input from stdin"
+msgstr ""
+
+#: java/lang.c:624
+#, gcc-internal-format
+msgid "couldn%'t determine target name for dependency tracking"
+msgstr ""
+
+#: java/mangle_name.c:325 java/mangle_name.c:402
+#, gcc-internal-format
+msgid "internal error - invalid Utf8 name"
+msgstr ""
+
+#: java/typeck.c:433
+#, gcc-internal-format
+msgid "junk at end of signature string"
+msgstr ""
+
+#: java/verify-glue.c:378
+#, gcc-internal-format, gfc-internal-format
+msgid "verification failed: %s"
+msgstr ""
+
+#: java/verify-glue.c:380
+#, gcc-internal-format, gfc-internal-format
+msgid "verification failed at PC=%d: %s"
+msgstr ""
+
+#: java/verify-glue.c:468
+#, gcc-internal-format
+msgid "bad pc in exception_table"
+msgstr ""
+
+#: lto/lto-lang.c:730
+#, gcc-internal-format
+msgid "-fwpa and -fltrans are mutually exclusive"
+msgstr ""
+
+#: lto/lto-object.c:112
+#, gcc-internal-format, gfc-internal-format
+msgid "open %s failed: %s"
+msgstr ""
+
+#: lto/lto-object.c:153 lto/lto-object.c:186 lto/lto-object.c:284
+#: lto/lto-object.c:341 lto/lto-object.c:365
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: %s"
+msgstr ""
+
+#: lto/lto-object.c:155
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: %s: %s"
+msgstr ""
+
+#: lto/lto-object.c:195
+#, gcc-internal-format, gfc-internal-format
+msgid "close: %s"
+msgstr ""
+
+#: lto/lto-object.c:252
+#, gcc-internal-format, gfc-internal-format
+msgid "two or more sections for %s"
+msgstr ""
+
+#: lto/lto.c:235
+#, gcc-internal-format, gfc-internal-format
+msgid "%s: section %s is missing"
+msgstr ""
+
+#: lto/lto.c:950
+#, gcc-internal-format
+msgid "bytecode stream: garbage at the end of symbols section"
+msgstr ""
+
+#: lto/lto.c:977
+#, gcc-internal-format
+msgid "could not parse hex number"
+msgstr ""
+
+#: lto/lto.c:1010
+#, gcc-internal-format, gfc-internal-format
+msgid "unexpected file name %s in linker resolution file. Expected %s"
+msgstr ""
+
+#: lto/lto.c:1019
+#, gcc-internal-format
+msgid "could not parse file offset"
+msgstr ""
+
+#: lto/lto.c:1022
+#, gcc-internal-format
+msgid "unexpected offset"
+msgstr ""
+
+#: lto/lto.c:1043
+#, gcc-internal-format
+msgid "invalid line in the resolution file"
+msgstr ""
+
+#: lto/lto.c:1056
+#, gcc-internal-format
+msgid "invalid resolution in the resolution file"
+msgstr ""
+
+#: lto/lto.c:1062
+#, gcc-internal-format
+msgid "resolution sub id "
+msgstr ""
+
+#: lto/lto.c:1157
+#, gcc-internal-format, gfc-internal-format
+msgid "cannot read LTO decls from %s"
+msgstr ""
+
+#: lto/lto.c:1261
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot open %s"
+msgstr ""
+
+#: lto/lto.c:1282
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot map %s"
+msgstr ""
+
+#: lto/lto.c:1293
+#, gcc-internal-format, gfc-internal-format
+msgid "Cannot read %s"
+msgstr ""
+
+#: lto/lto.c:2272
+#, gcc-internal-format
+msgid "no LTRANS output list filename provided"
+msgstr ""
+
+#: lto/lto.c:2275
+#, gcc-internal-format
+msgid "opening LTRANS output list %s: %m"
+msgstr ""
+
+#: lto/lto.c:2321
+#, gcc-internal-format
+msgid "lto_obj_file_open() failed"
+msgstr ""
+
+#: lto/lto.c:2347
+#, gcc-internal-format
+msgid "writing to LTRANS output list %s: %m"
+msgstr ""
+
+#: lto/lto.c:2355
+#, gcc-internal-format
+msgid "closing LTRANS output list %s: %m"
+msgstr ""
+
+#: lto/lto.c:2582
+#, gcc-internal-format
+msgid "could not open symbol resolution file: %m"
+msgstr ""
+
+#: lto/lto.c:2657
+#, gcc-internal-format
+msgid "errors during merging of translation units"
+msgstr ""
+
+#: objc/objc-act.c:413 objc/objc-act.c:6776
+#, gcc-internal-format
+msgid "%<@end%> missing in implementation context"
+msgstr ""
+
+#: objc/objc-act.c:566
+#, gcc-internal-format
+msgid "class attributes are not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:581
+#, gcc-internal-format
+msgid "category attributes are not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:584
+#, gcc-internal-format
+msgid "category attributes are not available in this version of the compiler, (ignored)"
+msgstr ""
+
+#: objc/objc-act.c:590
+#, gcc-internal-format
+msgid "class extensions are not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:604
+#, gcc-internal-format
+msgid "class extension for class %qE declared after its %<@implementation%>"
+msgstr ""
+
+#: objc/objc-act.c:619
+#, gcc-internal-format
+msgid "protocol attributes are not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:684
+#, gcc-internal-format
+msgid "%<@end%> must appear in an @implementation context"
+msgstr ""
+
+#: objc/objc-act.c:693
+#, gcc-internal-format
+msgid "%<@package%> is not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:695
+#, gcc-internal-format
+msgid "%<@package%> presently has the same effect as %<@public%>"
+msgstr ""
+
+#: objc/objc-act.c:706
+#, gcc-internal-format
+msgid "%<@optional%> is not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:708
+#, gcc-internal-format
+msgid "%<@required%> is not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:716
+#, gcc-internal-format
+msgid "%<@optional%> is allowed in @protocol context only"
+msgstr ""
+
+#: objc/objc-act.c:718
+#, gcc-internal-format
+msgid "%<@required%> is allowed in @protocol context only"
+msgstr ""
+
+#: objc/objc-act.c:825
+#, gcc-internal-format
+msgid "%<@property%> is not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:829
+#, gcc-internal-format
+msgid "%<readonly%> attribute conflicts with %<readwrite%> attribute"
+msgstr ""
+
+#: objc/objc-act.c:846
+#, gcc-internal-format
+msgid "%<readonly%> attribute conflicts with %<setter%> attribute"
+msgstr ""
+
+#: objc/objc-act.c:852
+#, gcc-internal-format
+msgid "%<assign%> attribute conflicts with %<retain%> attribute"
+msgstr ""
+
+#: objc/objc-act.c:857
+#, gcc-internal-format
+msgid "%<assign%> attribute conflicts with %<copy%> attribute"
+msgstr ""
+
+#: objc/objc-act.c:862
+#, gcc-internal-format
+msgid "%<retain%> attribute conflicts with %<copy%> attribute"
+msgstr ""
+
+#: objc/objc-act.c:879
+#, gcc-internal-format
+msgid "property declaration not in @interface or @protocol context"
+msgstr ""
+
+#: objc/objc-act.c:890
+#, gcc-internal-format
+msgid "invalid property declaration"
+msgstr ""
+
+#: objc/objc-act.c:898
+#, gcc-internal-format
+msgid "property can not be an array"
+msgstr ""
+
+#. A @property is not an actual variable, but it is a way to
+#. describe a pair of accessor methods, so its type (which is
+#. the type of the return value of the getter and the first
+#. argument of the setter) can't be a bitfield (as return values
+#. and arguments of functions can not be bitfields). The
+#. underlying instance variable could be a bitfield, but that is
+#. a different matter.
+#: objc/objc-act.c:916
+#, gcc-internal-format
+msgid "property can not be a bit-field"
+msgstr ""
+
+#: objc/objc-act.c:948
+#, gcc-internal-format
+msgid "object property %qD has no %<assign%>, %<retain%> or %<copy%> attribute; assuming %<assign%>"
+msgstr ""
+
+#: objc/objc-act.c:951
+#, gcc-internal-format
+msgid "%<assign%> can be unsafe for Objective-C objects; please state explicitly if you need it"
+msgstr ""
+
+#: objc/objc-act.c:958
+#, gcc-internal-format
+msgid "%<retain%> attribute is only valid for Objective-C objects"
+msgstr ""
+
+#: objc/objc-act.c:962
+#, gcc-internal-format
+msgid "%<copy%> attribute is only valid for Objective-C objects"
+msgstr ""
+
+#: objc/objc-act.c:1016
+#, gcc-internal-format
+msgid "redeclaration of property %qD"
+msgstr ""
+
+#: objc/objc-act.c:1019 objc/objc-act.c:1084 objc/objc-act.c:1094
+#: objc/objc-act.c:1107 objc/objc-act.c:1118 objc/objc-act.c:1129
+#: objc/objc-act.c:1166 objc/objc-act.c:7547 objc/objc-act.c:7610
+#: objc/objc-act.c:7632 objc/objc-act.c:7645 objc/objc-act.c:7663
+#: objc/objc-act.c:7762
+#, gcc-internal-format
+msgid "originally specified here"
+msgstr ""
+
+#: objc/objc-act.c:1081
+#, gcc-internal-format
+msgid "'nonatomic' attribute of property %qD conflicts with previous declaration"
+msgstr ""
+
+#: objc/objc-act.c:1091
+#, gcc-internal-format
+msgid "'getter' attribute of property %qD conflicts with previous declaration"
+msgstr ""
+
+#: objc/objc-act.c:1104
+#, gcc-internal-format
+msgid "'setter' attribute of property %qD conflicts with previous declaration"
+msgstr ""
+
+#: objc/objc-act.c:1115
+#, gcc-internal-format
+msgid "assign semantics attributes of property %qD conflict with previous declaration"
+msgstr ""
+
+#: objc/objc-act.c:1126
+#, gcc-internal-format
+msgid "'readonly' attribute of property %qD conflicts with previous declaration"
+msgstr ""
+
+#: objc/objc-act.c:1164
+#, gcc-internal-format
+msgid "type of property %qD conflicts with previous declaration"
+msgstr ""
+
+#: objc/objc-act.c:1637
+#, gcc-internal-format
+msgid "the dot syntax is not available in Objective-C 1.0"
+msgstr ""
+
+#. We know that 'class_name' is an Objective-C class name as the
+#. parser won't call this function if it is not. This is only a
+#. double-check for safety.
+#: objc/objc-act.c:1653
+#, gcc-internal-format
+msgid "could not find class %qE"
+msgstr ""
+
+#. Again, this should never happen, but we do check.
+#: objc/objc-act.c:1661
+#, gcc-internal-format
+msgid "could not find interface for class %qE"
+msgstr ""
+
+#: objc/objc-act.c:1667 objc/objc-act.c:6813 objc/objc-act.c:6944
+#, gcc-internal-format
+msgid "class %qE is deprecated"
+msgstr ""
+
+#: objc/objc-act.c:1696
+#, gcc-internal-format
+msgid "could not find setter/getter for %qE in class %qE"
+msgstr ""
+
+#: objc/objc-act.c:1732
+#, gcc-internal-format
+msgid "readonly property can not be set"
+msgstr ""
+
+#. PS: At the moment, due to how the parser works, it should be
+#. impossible to get here. But it's good to have the check in
+#. case the parser changes.
+#.
+#: objc/objc-act.c:2002
+#, gcc-internal-format
+msgid "method declaration not in @interface context"
+msgstr ""
+
+#: objc/objc-act.c:2006
+#, gcc-internal-format
+msgid "method attributes are not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:2026
+#, gcc-internal-format
+msgid "method definition not in @implementation context"
+msgstr ""
+
+#: objc/objc-act.c:2041
+#, gcc-internal-format
+msgid "method attributes can not be specified in @implementation context"
+msgstr ""
+
+#: objc/objc-act.c:2270
+#, gcc-internal-format
+msgid "class %qs does not implement the %qE protocol"
+msgstr ""
+
+#: objc/objc-act.c:2273
+#, gcc-internal-format
+msgid "type %qs does not conform to the %qE protocol"
+msgstr ""
+
+#: objc/objc-act.c:2554
+#, gcc-internal-format
+msgid "comparison of distinct Objective-C types lacks a cast"
+msgstr ""
+
+#: objc/objc-act.c:2558
+#, gcc-internal-format
+msgid "initialization from distinct Objective-C type"
+msgstr ""
+
+#: objc/objc-act.c:2562
+#, gcc-internal-format
+msgid "assignment from distinct Objective-C type"
+msgstr ""
+
+#: objc/objc-act.c:2566
+#, gcc-internal-format
+msgid "distinct Objective-C type in return"
+msgstr ""
+
+#: objc/objc-act.c:2570
+#, gcc-internal-format
+msgid "passing argument %d of %qE from distinct Objective-C type"
+msgstr ""
+
+#: objc/objc-act.c:2708
+#, gcc-internal-format
+msgid "statically allocated instance of Objective-C class %qE"
+msgstr ""
+
+#: objc/objc-act.c:2717
+#, gcc-internal-format
+msgid "redeclaration of Objective-C class %qs"
+msgstr ""
+
+#. This case happens when we are given an 'interface' which
+#. is not a valid class name. For example if a typedef was
+#. used, and 'interface' really is the identifier of the
+#. typedef, but when you resolve it you don't get an
+#. Objective-C class, but something else, such as 'int'.
+#. This is an error; protocols make no sense unless you use
+#. them with Objective-C objects.
+#: objc/objc-act.c:2759
+#, gcc-internal-format
+msgid "only Objective-C object types can be qualified with a protocol"
+msgstr ""
+
+#: objc/objc-act.c:2823
+#, gcc-internal-format
+msgid "protocol %qE has circular dependency"
+msgstr ""
+
+#: objc/objc-act.c:2856 objc/objc-act.c:5676
+#, gcc-internal-format
+msgid "cannot find protocol declaration for %qE"
+msgstr ""
+
+#: objc/objc-act.c:3158 objc/objc-act.c:3816 objc/objc-act.c:6389
+#: objc/objc-act.c:6864 objc/objc-act.c:6937 objc/objc-act.c:6990
+#, gcc-internal-format
+msgid "cannot find interface declaration for %qE"
+msgstr ""
+
+#: objc/objc-act.c:3162
+#, gcc-internal-format
+msgid "interface %qE does not have valid constant string layout"
+msgstr ""
+
+#: objc/objc-act.c:3167
+#, gcc-internal-format
+msgid "cannot find reference tag for class %qE"
+msgstr ""
+
+#: objc/objc-act.c:3312
+#, gcc-internal-format
+msgid "%qE is not an Objective-C class name or alias"
+msgstr ""
+
+#: objc/objc-act.c:3327 objc/objc-act.c:3358 objc/objc-act.c:6770
+#: objc/objc-act.c:8093 objc/objc-act.c:8144
+#, gcc-internal-format
+msgid "Objective-C declarations may only appear in global scope"
+msgstr ""
+
+#: objc/objc-act.c:3332
+#, gcc-internal-format
+msgid "cannot find class %qE"
+msgstr ""
+
+#: objc/objc-act.c:3334
+#, gcc-internal-format
+msgid "class %qE already exists"
+msgstr ""
+
+#: objc/objc-act.c:3376 objc/objc-act.c:6829
+#, gcc-internal-format
+msgid "%qE redeclared as different kind of symbol"
+msgstr ""
+
+#: objc/objc-act.c:3670
+#, gcc-internal-format
+msgid "strong-cast assignment has been intercepted"
+msgstr ""
+
+#: objc/objc-act.c:3712
+#, gcc-internal-format
+msgid "strong-cast may possibly be needed"
+msgstr ""
+
+#: objc/objc-act.c:3722
+#, gcc-internal-format
+msgid "instance variable assignment has been intercepted"
+msgstr ""
+
+#: objc/objc-act.c:3741
+#, gcc-internal-format
+msgid "pointer arithmetic for garbage-collected objects not allowed"
+msgstr ""
+
+#: objc/objc-act.c:3747
+#, gcc-internal-format
+msgid "global/static variable assignment has been intercepted"
+msgstr ""
+
+#: objc/objc-act.c:3961 objc/objc-act.c:3989 objc/objc-act.c:4045
+#, gcc-internal-format
+msgid "duplicate instance variable %q+D"
+msgstr ""
+
+#: objc/objc-act.c:4105
+#, gcc-internal-format
+msgid "%<-fobjc-exceptions%> is required to enable Objective-C exception syntax"
+msgstr ""
+
+#: objc/objc-act.c:4189
+#, gcc-internal-format
+msgid "@catch parameter is not a known Objective-C class type"
+msgstr ""
+
+#: objc/objc-act.c:4195
+#, gcc-internal-format
+msgid "@catch parameter can not be protocol-qualified"
+msgstr ""
+
+#: objc/objc-act.c:4240
+#, gcc-internal-format
+msgid "exception of type %<%T%> will be caught"
+msgstr ""
+
+#: objc/objc-act.c:4242
+#, gcc-internal-format
+msgid " by earlier handler for %<%T%>"
+msgstr ""
+
+#: objc/objc-act.c:4289
+#, gcc-internal-format
+msgid "%<@try%> without %<@catch%> or %<@finally%>"
+msgstr ""
+
+#: objc/objc-act.c:4317
+#, gcc-internal-format
+msgid "%<@throw%> (rethrow) used outside of a @catch block"
+msgstr ""
+
+#: objc/objc-act.c:4330
+#, gcc-internal-format
+msgid "%<@throw%> argument is not an object"
+msgstr ""
+
+#: objc/objc-act.c:4351
+#, gcc-internal-format
+msgid "%<@synchronized%> argument is not an object"
+msgstr ""
+
+#: objc/objc-act.c:4559
+#, gcc-internal-format
+msgid "%s %qs"
+msgstr ""
+
+#: objc/objc-act.c:4582 objc/objc-act.c:4601
+#, gcc-internal-format
+msgid "inconsistent instance variable specification"
+msgstr ""
+
+#: objc/objc-act.c:4658
+#, gcc-internal-format
+msgid "can not use an object as parameter to a method"
+msgstr ""
+
+#: objc/objc-act.c:4702
+#, gcc-internal-format
+msgid "method argument attributes are not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:5085
+#, gcc-internal-format
+msgid "multiple methods named %<%c%E%> found"
+msgstr ""
+
+#: objc/objc-act.c:5088
+#, gcc-internal-format
+msgid "using %<%c%s%>"
+msgstr ""
+
+#: objc/objc-act.c:5097
+#, gcc-internal-format
+msgid "multiple selectors named %<%c%E%> found"
+msgstr ""
+
+#: objc/objc-act.c:5100
+#, gcc-internal-format
+msgid "found %<%c%s%>"
+msgstr ""
+
+#: objc/objc-act.c:5109
+#, gcc-internal-format
+msgid "also found %<%c%s%>"
+msgstr ""
+
+#. If 'rtype' is NULL_TREE at this point it means that
+#. we have seen no @interface corresponding to that
+#. class name, only a @class declaration (alternatively,
+#. this was a call such as [objc_getClass("SomeClass")
+#. alloc], where we've never seen the @interface of
+#. SomeClass). So, we have a class name (class_tree)
+#. but no actual details of the class methods. We won't
+#. be able to check that the class responds to the
+#. method, and we will have to guess the method
+#. prototype. Emit a warning, then keep going (this
+#. will use any method with a matching name, as if the
+#. receiver was of type 'Class').
+#. We could not find an @interface declaration, and
+#. there are no protocols attached to the receiver,
+#. so we can't complete the check that the receiver
+#. responds to the method, and we can't retrieve the
+#. method prototype. But, because the receiver has
+#. a well-specified class, the programmer did want
+#. this check to be performed. Emit a warning, then
+#. keep going as if it was an 'id'. To remove the
+#. warning, either include an @interface for the
+#. class, or cast the receiver to 'id'. Note that
+#. rtype is an IDENTIFIER_NODE at this point.
+#: objc/objc-act.c:5395 objc/objc-act.c:5529
+#, gcc-internal-format
+msgid "@interface of class %qE not found"
+msgstr ""
+
+#: objc/objc-act.c:5403
+#, gcc-internal-format
+msgid "no super class declared in @interface for %qE"
+msgstr ""
+
+#: objc/objc-act.c:5454
+#, gcc-internal-format
+msgid "found %<-%E%> instead of %<+%E%> in protocol(s)"
+msgstr ""
+
+#. We have a type, but it's not an Objective-C type (!).
+#: objc/objc-act.c:5566
+#, gcc-internal-format
+msgid "invalid receiver type %qs"
+msgstr ""
+
+#: objc/objc-act.c:5583
+#, gcc-internal-format
+msgid "%<%c%E%> not found in protocol(s)"
+msgstr ""
+
+#: objc/objc-act.c:5597
+#, gcc-internal-format
+msgid "%qE may not respond to %<%c%E%>"
+msgstr ""
+
+#: objc/objc-act.c:5605
+#, gcc-internal-format
+msgid "no %<%c%E%> method found"
+msgstr ""
+
+#: objc/objc-act.c:5612
+#, gcc-internal-format
+msgid "(Messages without a matching method signature"
+msgstr ""
+
+#: objc/objc-act.c:5614
+#, gcc-internal-format
+msgid "will be assumed to return %<id%> and accept"
+msgstr ""
+
+#: objc/objc-act.c:5616
+#, gcc-internal-format
+msgid "%<...%> as arguments.)"
+msgstr ""
+
+#: objc/objc-act.c:5725
+#, gcc-internal-format
+msgid "undeclared selector %qE"
+msgstr ""
+
+#. Historically, a class method that produced objects (factory
+#. method) would assign `self' to the instance that it
+#. allocated. This would effectively turn the class method into
+#. an instance method. Following this assignment, the instance
+#. variables could be accessed. That practice, while safe,
+#. violates the simple rule that a class method should not refer
+#. to an instance variable. It's better to catch the cases
+#. where this is done unknowingly than to support the above
+#. paradigm.
+#: objc/objc-act.c:5749
+#, gcc-internal-format
+msgid "instance variable %qE accessed in class method"
+msgstr ""
+
+#: objc/objc-act.c:5980 objc/objc-act.c:6000
+#, gcc-internal-format
+msgid "method %<%c%E%> declared %<@optional%> and %<@required%> at the same time"
+msgstr ""
+
+#: objc/objc-act.c:5984
+#, gcc-internal-format
+msgid "previous declaration of %<%c%E%> as %<@required%>"
+msgstr ""
+
+#: objc/objc-act.c:6004
+#, gcc-internal-format
+msgid "previous declaration of %<%c%E%> as %<@optional%>"
+msgstr ""
+
+#: objc/objc-act.c:6064
+#, gcc-internal-format
+msgid "duplicate declaration of method %<%c%E%> with conflicting types"
+msgstr ""
+
+#: objc/objc-act.c:6068
+#, gcc-internal-format
+msgid "previous declaration of %<%c%E%>"
+msgstr ""
+
+#: objc/objc-act.c:6105
+#, gcc-internal-format
+msgid "duplicate interface declaration for category %<%E(%E)%>"
+msgstr ""
+
+#: objc/objc-act.c:6193
+#, gcc-internal-format
+msgid "illegal reference type specified for instance variable %qs"
+msgstr ""
+
+#: objc/objc-act.c:6204
+#, gcc-internal-format
+msgid "instance variable %qs has unknown size"
+msgstr ""
+
+#: objc/objc-act.c:6225
+#, gcc-internal-format
+msgid "instance variable %qs uses flexible array member"
+msgstr ""
+
+#: objc/objc-act.c:6252
+#, gcc-internal-format
+msgid "type %qE has no default constructor to call"
+msgstr ""
+
+#: objc/objc-act.c:6258
+#, gcc-internal-format
+msgid "destructor for %qE shall not be run either"
+msgstr ""
+
+#. Vtable pointers are Real Bad(tm), since Obj-C cannot
+#. initialize them.
+#: objc/objc-act.c:6270
+#, gcc-internal-format
+msgid "type %qE has virtual member functions"
+msgstr ""
+
+#: objc/objc-act.c:6271
+#, gcc-internal-format
+msgid "illegal aggregate type %qE specified for instance variable %qs"
+msgstr ""
+
+#: objc/objc-act.c:6281
+#, gcc-internal-format
+msgid "type %qE has a user-defined constructor"
+msgstr ""
+
+#: objc/objc-act.c:6283
+#, gcc-internal-format
+msgid "type %qE has a user-defined destructor"
+msgstr ""
+
+#: objc/objc-act.c:6287
+#, gcc-internal-format
+msgid "C++ constructors and destructors will not be invoked for Objective-C fields"
+msgstr ""
+
+#: objc/objc-act.c:6418
+#, gcc-internal-format
+msgid "instance variable %qE is declared private"
+msgstr ""
+
+#: objc/objc-act.c:6429
+#, gcc-internal-format
+msgid "instance variable %qE is %s; this will be a hard error in the future"
+msgstr ""
+
+#: objc/objc-act.c:6436
+#, gcc-internal-format
+msgid "instance variable %qE is declared %s"
+msgstr ""
+
+#: objc/objc-act.c:6547 objc/objc-act.c:6662
+#, gcc-internal-format
+msgid "incomplete implementation of class %qE"
+msgstr ""
+
+#: objc/objc-act.c:6551 objc/objc-act.c:6666
+#, gcc-internal-format
+msgid "incomplete implementation of category %qE"
+msgstr ""
+
+#: objc/objc-act.c:6560 objc/objc-act.c:6674
+#, gcc-internal-format
+msgid "method definition for %<%c%E%> not found"
+msgstr ""
+
+#: objc/objc-act.c:6715
+#, gcc-internal-format
+msgid "%s %qE does not fully implement the %qE protocol"
+msgstr ""
+
+#: objc/objc-act.c:6805
+#, gcc-internal-format
+msgid "cannot find interface declaration for %qE, superclass of %qE"
+msgstr ""
+
+#: objc/objc-act.c:6844
+#, gcc-internal-format
+msgid "reimplementation of class %qE"
+msgstr ""
+
+#: objc/objc-act.c:6877
+#, gcc-internal-format
+msgid "conflicting super class name %qE"
+msgstr ""
+
+#: objc/objc-act.c:6880
+#, gcc-internal-format
+msgid "previous declaration of %qE"
+msgstr ""
+
+#: objc/objc-act.c:6882
+#, gcc-internal-format
+msgid "previous declaration"
+msgstr ""
+
+#: objc/objc-act.c:6895 objc/objc-act.c:6897
+#, gcc-internal-format
+msgid "duplicate interface declaration for class %qE"
+msgstr ""
+
+#: objc/objc-act.c:7216 objc/objc-act.c:7411
+#, gcc-internal-format
+msgid "can not find instance variable associated with property"
+msgstr ""
+
+#. TODO: This should be caught much earlier than this.
+#: objc/objc-act.c:7377
+#, gcc-internal-format
+msgid "invalid setter, it must have one argument"
+msgstr ""
+
+#: objc/objc-act.c:7540 objc/objc-act.c:7755
+#, gcc-internal-format
+msgid "property %qs already specified in %<@dynamic%>"
+msgstr ""
+
+#: objc/objc-act.c:7543 objc/objc-act.c:7758
+#, gcc-internal-format
+msgid "property %qs already specified in %<@synthesize%>"
+msgstr ""
+
+#: objc/objc-act.c:7557 objc/objc-act.c:7772
+#, gcc-internal-format
+msgid "no declaration of property %qs found in the interface"
+msgstr ""
+
+#: objc/objc-act.c:7584
+#, gcc-internal-format
+msgid "ivar %qs used by %<@synthesize%> declaration must be an existing ivar"
+msgstr ""
+
+#: objc/objc-act.c:7605
+#, gcc-internal-format
+msgid "property %qs is using instance variable %qs of incompatible type"
+msgstr ""
+
+#: objc/objc-act.c:7627
+#, gcc-internal-format
+msgid "'assign' property %qs is using bit-field instance variable %qs"
+msgstr ""
+
+#: objc/objc-act.c:7640
+#, gcc-internal-format
+msgid "'atomic' property %qs is using bit-field instance variable %qs"
+msgstr ""
+
+#: objc/objc-act.c:7658
+#, gcc-internal-format
+msgid "property %qs is using the same instance variable as property %qs"
+msgstr ""
+
+#: objc/objc-act.c:7699
+#, gcc-internal-format
+msgid "%<@synthesize%> is not available in Objective-C 1.0"
+msgstr ""
+
+#. We can get here only in Objective-C; the Objective-C++ parser
+#. detects the problem while parsing, outputs the error
+#. "misplaced '@synthesize' Objective-C++ construct" and skips
+#. the declaration.
+#: objc/objc-act.c:7710
+#, gcc-internal-format
+msgid "%<@synthesize%> not in @implementation context"
+msgstr ""
+
+#: objc/objc-act.c:7716
+#, gcc-internal-format
+msgid "%<@synthesize%> can not be used in categories"
+msgstr ""
+
+#: objc/objc-act.c:7725
+#, gcc-internal-format
+msgid "%<@synthesize%> requires the @interface of the class to be available"
+msgstr ""
+
+#: objc/objc-act.c:7808
+#, gcc-internal-format
+msgid "%<@dynamic%> is not available in Objective-C 1.0"
+msgstr ""
+
+#. We can get here only in Objective-C; the Objective-C++ parser
+#. detects the problem while parsing, outputs the error
+#. "misplaced '@dynamic' Objective-C++ construct" and skips the
+#. declaration.
+#: objc/objc-act.c:7819
+#, gcc-internal-format
+msgid "%<@dynamic%> not in @implementation context"
+msgstr ""
+
+#: objc/objc-act.c:7841
+#, gcc-internal-format
+msgid "%<@dynamic%> requires the @interface of the class to be available"
+msgstr ""
+
+#: objc/objc-act.c:8039
+#, gcc-internal-format
+msgid "definition of protocol %qE not found"
+msgstr ""
+
+#. It would be nice to use warn_deprecated_use() here, but
+#. we are using TREE_CHAIN (which is supposed to be the
+#. TYPE_STUB_DECL for a TYPE) for something different.
+#: objc/objc-act.c:8070
+#, gcc-internal-format
+msgid "protocol %qE is deprecated"
+msgstr ""
+
+#: objc/objc-act.c:8189
+#, gcc-internal-format
+msgid "duplicate declaration for protocol %qE"
+msgstr ""
+
+#: objc/objc-act.c:8699
+#, gcc-internal-format
+msgid "conflicting types for %<%c%s%>"
+msgstr ""
+
+#: objc/objc-act.c:8703
+#, gcc-internal-format
+msgid "previous declaration of %<%c%s%>"
+msgstr ""
+
+#: objc/objc-act.c:8803
+#, gcc-internal-format
+msgid "no super class declared in interface for %qE"
+msgstr ""
+
+#: objc/objc-act.c:8830
+#, gcc-internal-format
+msgid "[super ...] must appear in a method context"
+msgstr ""
+
+#: objc/objc-act.c:8870
+#, gcc-internal-format
+msgid "method possibly missing a [super dealloc] call"
+msgstr ""
+
+#: objc/objc-act.c:9334
+#, gcc-internal-format
+msgid "instance variable %qs is declared private"
+msgstr ""
+
+#: objc/objc-act.c:9379
+#, gcc-internal-format
+msgid "local declaration of %qE hides instance variable"
+msgstr ""
+
+#. This can happen if DECL_ARTIFICIAL (*expr_p), but
+#. should be impossible for real properties, which always
+#. have a getter.
+#: objc/objc-act.c:9424
+#, gcc-internal-format
+msgid "no %qs getter found"
+msgstr ""
+
+#: objc/objc-act.c:9664
+#, gcc-internal-format
+msgid "fast enumeration is not available in Objective-C 1.0"
+msgstr ""
+
+#: objc/objc-act.c:9674
+#, gcc-internal-format
+msgid "iterating variable in fast enumeration is not an object"
+msgstr ""
+
+#: objc/objc-act.c:9680
+#, gcc-internal-format
+msgid "collection in fast enumeration is not an object"
+msgstr ""
+
+#: objc/objc-encoding.c:132
+#, gcc-internal-format
+msgid "type %qT does not have a known size"
+msgstr ""
+
+#: objc/objc-encoding.c:720
+#, gcc-internal-format
+msgid "unknown type %<%T%> found during Objective-C encoding"
+msgstr ""
+
+#. Do not do any encoding, produce an error and keep going.
+#: objc/objc-encoding.c:803
+#, gcc-internal-format
+msgid "trying to encode non-integer type as a bitfield"
+msgstr ""
+
+#: objc/objc-gnu-runtime-abi-01.c:131
+#, gcc-internal-format
+msgid "%<-fobjc-gc%> is ignored for %<-fgnu-runtime%>"
+msgstr ""
+
+#: objc/objc-gnu-runtime-abi-01.c:139
+#, gcc-internal-format
+msgid "%<-fobjc-sjlj-exceptions%> is ignored for %<-fgnu-runtime%>"
+msgstr ""
+
+#: objc/objc-gnu-runtime-abi-01.c:2170 objc/objc-next-runtime-abi-01.c:2849
+#: objc/objc-next-runtime-abi-02.c:3626
+#, gcc-internal-format
+msgid "non-objective-c type '%T' cannot be caught"
+msgstr ""
+
+#: objc/objc-next-runtime-abi-01.c:152
+#, gcc-internal-format
+msgid "%<-fobjc-sjlj-exceptions%> is the only supported exceptions system for %<-fnext-runtime%> with %<-fobjc-abi-version%> < 2"
+msgstr ""
+
+#: objc/objc-next-runtime-abi-02.c:244
+#, gcc-internal-format
+msgid "%<-fobjc-sjlj-exceptions%> is ignored for %<-fnext-runtime%> when %<-fobjc-abi-version%> >= 2"
+msgstr ""
+
+#: objc/objc-runtime-shared-support.c:426
+#, gcc-internal-format
+msgid "creating selector for nonexistent method %qE"
+msgstr ""
diff --git a/gcc/po/id.po b/gcc/po/id.po
index db5531ffa93..12e5697df24 100644
--- a/gcc/po/id.po
+++ b/gcc/po/id.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.4.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2009-11-10 09:00+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anonim>"
@@ -27,7 +27,7 @@ msgstr "<anonim>"
msgid "({anonymous})"
msgstr "<anonim>"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of line"
@@ -35,11 +35,11 @@ msgstr "Tidak terduga akhir dari modul"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "diduga %<,%>"
@@ -47,17 +47,17 @@ msgstr "diduga %<,%>"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "diduga %<(%>"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<,%>"
@@ -69,20 +69,20 @@ msgstr "diduga %<{%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<)%>"
msgstr "diduga %<{%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<]%>"
@@ -94,27 +94,27 @@ msgstr "diduga %<{%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "diduga %<,%>, %<,%> atau %<}%>"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<}%>"
msgstr "diduga %<{%>"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "diduga %<{%>"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<:%>"
msgstr "diduga %<{%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<while%>"
@@ -126,43 +126,43 @@ msgstr "diduga %<{%>"
msgid "expected %<.%>"
msgstr "diduga %<{%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@end%>"
msgstr "diduga %<{%>"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<>%>"
msgstr "diduga %<{%>"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<,%> or %<)%>"
msgstr "diduga %<,%> atau %<,%>"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "diduga %<=%>"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "diduga %<#pragma omp section%> atau %<}%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<[%>"
msgstr "diduga %<{%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
#| msgid "<anonymous>"
msgid "(anonymous)"
@@ -345,12 +345,12 @@ msgstr "'%%l' operan bukan sebuah label"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "konstanta pecahan disalah gunakan"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "ekspresi sebagai operan tidak valid"
@@ -1269,19 +1269,19 @@ msgstr " inlined dari %qs di %s:%d"
msgid " inlined from %qs"
msgstr " inlined dari %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "mengasumsikan kalau loop bukan infinite"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "tidak dapat mengoptimisasi kemungkinan loop tak terhingga"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "mengasumsikan pertemuan loop tidak overflow"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "tidak dapat mengoptimisasi loop, pertemuan loop mungkin overflow"
@@ -1456,16 +1456,16 @@ msgid "this is the insn:"
msgstr "ini adalah insn:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "tidak dapat menemukan register spill"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "VOIDmode di sebuah keluaran"
-#: reload1.c:8658
+#: reload1.c:8672
#, fuzzy
#| msgid "Failure trying to reload:"
msgid "failure trying to reload:"
@@ -2647,118 +2647,118 @@ msgstr ""
msgid "<unknown>"
msgstr "Tidak diketahui src"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "nilai %%H tidak valid"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "nilai %%J tidak valid"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "nilai %%r tidak valid"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "nilai %%R tidak valid"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "nilai %%N tidak valid"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "nilai %%P tidak valid"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "nilai %%h tidak valid"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "nilai %%L tidak valid"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "nilai %%m tidak valid"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "nilai %%M tidak valid"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "nilai %%U tidak valid"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "nilai %%s tidak valid"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "nilai %%C tidak valid"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "nilai %%E tidak valid"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "relokasi unspek tidak diketahui"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "kode %%xn tidak valid"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "instruksi Thumb terprediksi"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "instruksi terprediksi dalam urutan berkondisi"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "operan tidak valid untuk kode '%c'"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "operan shift tidak valid"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2766,89 +2766,89 @@ msgstr "operan shift tidak valid"
msgid "invalid operand for code '%c'"
msgstr "operan tidak valid untuk kode '%c'"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "instruksi tidak pernah dijalankan"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "hilang operan"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
#| msgid "function returns an aggregate"
msgid "function parameters cannot have __fp16 type"
msgstr "fungsi mengembalikan sebuah kumpulan"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "fungsi tidak mengembalikan tipe string"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "alamat operan membutuhkan batasan untuk X, Y, atau Z register"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use %<&%> constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "keluaran operan %d harus menggunakan batasan %<&%>"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "alamat buruk, bukan (reg+disp):"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "address offset not a constant"
msgid "bad address, not a constant:"
msgstr "ofset alamat bukan sebuah konstanta"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "alamat buruk, bukan (reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "alamat buruk, bukan post_inc atau pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "internal kompiler error. Alamat buruk:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "internal kompiler error. Kode tidak diketahui:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "insn tidak valid:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "insn tidak benar:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "insn move tidak dikenal:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "shift insn buruk:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "internal kompiler error. shift tidak benar:"
@@ -2864,8 +2864,8 @@ msgstr "operan const_double tidak valid"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2943,23 +2943,23 @@ msgstr "operan tidak terduga"
msgid "unrecognized address"
msgstr "alamat tidak dikenal"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "konstanta yang diharapkan tidak dikenal"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "efek-samping tidak terduga dalam alamat"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
#, fuzzy
#| msgid "Unidentifiable call op"
msgid "unidentifiable call op"
msgstr "call op tidak teridentifikasi"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "PIC register belum di setup"
@@ -2967,7 +2967,7 @@ msgstr "PIC register belum di setup"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "operan kode keluaran tidak valid"
@@ -3096,76 +3096,76 @@ msgstr "operan output_move_double buruk"
msgid "bad output_condmove_single operand"
msgstr "operan output_condmove_single buruk"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "UNSPEC tidak valid sebagai operan"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand size for operand code '%c'"
msgstr "operan tidak valid untuk kode '%c'"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand type used with operand code '%c'"
msgstr "operan tidak valid untuk kode '%c'"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "operan bukan sebuah kode kondisi, kode operan 'D' tidak valid"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "operan bukan sebuah konstanta ataupun sebuah kode kondisi, kode operan 'C' tidak valid"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "operan bukan sebuah konstanta ataupun sebuah kode kondisi, kode operan 'F' tidak valid"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "operan bukan sebuah konstanta ataupun sebuah kode kondisi, kode operan 'c' tidak valid"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "operan bukan sebuah konstanta ataupun sebuah kode kondisi, kode operan 'f' tidak valid"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is not a condition code, invalid operand code 'D'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "operan bukan sebuah kode kondisi, kode operan 'D' tidak valid"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
#| msgid "operand is not a condition code, invalid operand code 'D'"
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "operan bukan sebuah kode kondisi, kode operan 'D' tidak valid"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "kode operan '%c' tidak valid"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "batasan untuk operan tidak valid"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "mode insn tidak diketahui"
@@ -3196,36 +3196,36 @@ msgstr "variabel lingkungan DJGPP menunjuk ke berkas hilang '%s'"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "variabel lingkungan DJGPP menunjuk ke berkas terkorupsi '%s'"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%j code"
msgid "invalid %%G mode"
msgstr "kode %%j tidak valid"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: kode tidak diketahui"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "konversi dari %<__fpreg%> tidak valid"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "konversi ke %<__fpreg%> tidak valid"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "operasi di %<__fpreg%> tidak valid"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "operan %%P tidak valid"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "nilai %%p tidak valid"
@@ -3308,7 +3308,7 @@ msgid "post-increment address is not a register"
msgstr "alamat post-increment bukan sebuah register"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "alamat buruk"
@@ -3490,88 +3490,88 @@ msgstr ""
msgid "bad move"
msgstr "tes buruk"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%H value"
msgid "invalid %%c value"
msgstr "nilai %%H tidak valid"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "nilai %%f tidak valid"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "nilai %%F tidak valid"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "nilai %%G tidak valid"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "kode %%j tidak valid"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "kode %%J tidak valid"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "nilai %%k tidak valid"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "nilai %%K tidak valid"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "nilai %%O tidak valid"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "nilai %%q tidak valid"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "nilai %%S tidak valid"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "nilai %%T tidak valid"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "nilai %%u tidak valid"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "nilai %%v tidak valid"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "nilai %%x tidak valid"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "nilai %%ytidak valid, coba menggunakan batasan 'Z'"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "Argumen AltiVec dilewatkan ke fungsi yang tidak berprototipe"
@@ -3679,62 +3679,62 @@ msgstr "operan tidak valid ke %%R"
msgid "invalid operand to %%S"
msgstr "operan tidak valid ke %%S"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "dibuat dan digunakan dengan arsitektur berbeda / ABI"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "dibuat dan digunakan dengan ABI berbeda"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "dibuat dan digunakan dengan endianness berbeda"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "operan %%Y tidak valid"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "operan %%A tidak valid"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "operan %%B tidak valid"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%C operand"
msgstr "operan %%P tidak valid"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%D operand"
msgstr "operan %%P tidak valid"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "operan %%f tidak valid"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "operan %%s tidak valid"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "konstanta long long bukan sebuah operan langsung yang valid"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "konstanta titik pecahan bukan sebuah operan langsung yang valid"
@@ -3759,7 +3759,7 @@ msgstr "operan 'o' bukan sebuah konstanta"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: kode tidak diketahui"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "operan %%c tidak valid"
@@ -3775,25 +3775,25 @@ msgstr "operan %%d tidak valid"
msgid "invalid %%H specifier"
msgstr "kode %%j tidak valid"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "operan %%P tidak valid"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "operan %%P tidak valid"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "operan %%P tidak valid"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3805,7 +3805,7 @@ msgstr "operan %%P tidak valid"
msgid "invalid %%%c operand"
msgstr "operan %%c tidak valid"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3817,42 +3817,42 @@ msgstr "operan %%P tidak valid"
msgid "invalid operand for 'r' specifier"
msgstr "operan tidak valid untuk pemodifikasi 'b'"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "operan %%P tidak valid"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "operan %%P tidak valid"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "operan %%P tidak valid"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "operan %%P tidak valid"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "operan %%P tidak valid"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -3920,11 +3920,11 @@ msgstr "tidak ada register dalam alamat"
msgid "address offset not a constant"
msgstr "ofset alamat bukan sebuah konstanta"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "kandidat 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "kandidat 2:"
@@ -4182,7 +4182,7 @@ msgstr ""
msgid "candidates are:"
msgstr "kandidat adalah:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid "candidate is:"
@@ -4246,54 +4246,54 @@ msgstr "konversi ke %qT mengubah nilai konstanta %qT"
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "tipe argumen salah ke unary minus"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "tipe argume salah ke unary plus"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "tipe argumen salah ke bit-complement"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "tipe argumen salah ke abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "tipe argumen salah ke konjugasi"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "wrong type argument to unary plus"
msgid "in argument to unary !"
msgstr "tipe argume salah ke unary plus"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
#, fuzzy
#| msgid "cannot increment a pointer to incomplete type %qT"
msgid "no pre-increment operator for type"
msgstr "tidak dapat meningkatkan sebuah penunjuk ke tipe tidak lengkap %qT"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
#, fuzzy
#| msgid "cannot decrement a pointer to incomplete type %qT"
msgid "no pre-decrement operator for type"
msgstr "tidak dapat mengurangi penunjuk ke tipe tidak lengkap %qT"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4555,7 +4555,7 @@ msgstr "Operator buruk"
msgid "Bad type in constant expression"
msgstr "Tipe buruk dalam ekspresi konstanta"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "Tidak terduga akhir dari modul"
@@ -4583,11 +4583,11 @@ msgstr "blok IF"
msgid "implied END DO"
msgstr "Diimplikasikan END DO"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "assignment"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "assignmen penunjuk"
@@ -4675,59 +4675,59 @@ msgstr "Operan dari operator pengguna '%s' di %%L adalah %s/%s"
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "Tingkat tidak konsisten untuk operator di %%L dan %%L"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
#| msgid "%qD is not a variable"
msgid "iterator variable"
msgstr "%qD bukan sebuah variabel"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Start expression in DO loop"
msgstr "Ekspresi step dalam loop DO di %L tidak dapat berupa nol"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
#| msgid "invalid expression as operand"
msgid "End expression in DO loop"
msgstr "ekspresi sebagai operan tidak valid"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Step expression in DO loop"
msgstr "Ekspresi step dalam loop DO di %L tidak dapat berupa nol"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
#, fuzzy
#| msgid "DEALLOCATE "
msgid "DEALLOCATE object"
msgstr "DEALOKASIKAN "
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
#, fuzzy
#| msgid "ALLOCATE "
msgid "ALLOCATE object"
msgstr "ALOKASIKAN "
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4737,7 +4737,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr "Pajang KARAKTER berbeda (%d/%d) dalam konstruktor array di %L"
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4817,7 +4817,7 @@ msgstr "Nilai kembali fungsi tidak benar"
msgid "Memory allocation failed"
msgstr "Alokasi memori gagal"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -5031,7 +5031,7 @@ msgstr "Jangan spesifikasikan baik -march=... dan -mcpu=..."
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -5092,6 +5092,10 @@ msgstr "shared dan mdll tidak kompatibel"
msgid "static is not supported on TPF-OS"
msgstr "static tidak didukung dalam TPF-OS"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "tidak boleh menggunakan bersamaan -EB dan -EL"
@@ -5122,10 +5126,6 @@ msgstr "-mbig-endian dan -mlittle-endian tidak boleh digunakan bersamaan"
msgid "no processor type specified for linking"
msgstr "tipe prosesor tidak dispesifikasikan untuk penyambungan"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran tidak mendukung -E tanpa -cpp"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 tidak memiliki dukungan little endian"
@@ -5178,6 +5178,10 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "pilihan -shared saat ini tidak didukung untuk VAX ELF"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran tidak mendukung -E tanpa -cpp"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni dan -femit-class-files adalah tidak kompatibel"
@@ -8463,6 +8467,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -11064,18 +11072,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Jangan predefine sistem-spesifik dan GCC-spesifik makro"
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
#| msgid "function declared %<noreturn%> has a %<return%> statement"
msgid "Functions which return values must end with return statements"
@@ -12743,306 +12763,317 @@ msgstr "Buat sebuah perpustakaan terbagi"
msgid "Create a position independent executable"
msgstr "Buat sebuah aplikasi bebas posisi"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of %qD"
msgid "invalid use of type"
msgstr "penggunaan tidak valid dari %qD"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating constant truncated to zero"
-msgid "floating point constant truncated to integer"
-msgstr "konstanta floating dipotong ke nol"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
#, fuzzy
#| msgid "inlined_to pointer refers to itself"
msgid "constant refers to itself"
msgstr "penunjuk inlined_to mereferensikan ke dirinya sendiri"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
#| msgid "Expected expression type"
msgid "expected numeric type"
msgstr "Diduga tipe ekspresi"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "unexpected non-tuple"
+msgid "expected boolean type"
+msgstr "diduga bukan tuple"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
#| msgid "expected integer expression"
msgid "expected integer or boolean type"
msgstr "diduga ekspresi integer"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
#| msgid "invalid operand to %%R"
msgid "invalid operand for unary %<&%>"
msgstr "operan tidak valid ke %%R"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
#| msgid "Expected integer"
msgid "expected pointer"
msgstr "Diduga integer"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in binary expression"
msgstr "tipe tidak kompatibel dalam kembali"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
#| msgid "size of array %qs has non-integer type"
msgid "shift of non-integer operand"
msgstr "ukuran dari array %qs memiliki tipe bukan integer"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
#| msgid "switch quantity not an integer"
msgid "shift count not unsigned integer"
msgstr "switch kuantiti bukan sebuah integer"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative insn length"
msgid "negative shift count"
msgstr "panjang insn negatif"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "called object %qE is not a function"
msgid "object is not a method"
msgstr "dipanggil objek %qE bukan sebuah fungsi"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
#| msgid "argument of type %qT does not match %qT"
msgid "method type does not match object type"
msgstr "argumen dari tipe %qT tidak cocok dengan %qT"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid argument to built-in function"
msgid "invalid use of %<...%> with builtin function"
msgstr "argumen ke fungsi bawaan tidak valid"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "tidak ada argumen"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments"
msgstr "terlalu banyak argumen untuk format"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument must be a constant"
msgid "argument 1 must be a map"
msgstr "argumen harus berupa sebuah konstanta"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
#| msgid "invalid pure const state for function"
msgid "invalid type for make function"
msgstr "pure const state tidak valid untuk fungsi"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "insn untuk 'A' buruk"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments to make"
msgstr "terlalu banyak argumen untuk format"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
#| msgid "argument must be a constant"
msgid "argument must be array or slice or channel"
msgstr "argumen harus berupa sebuah konstanta"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "invalid argument to built-in function"
msgid "unsupported argument type to builtin function"
msgstr "argumen ke fungsi bawaan tidak valid"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
#| msgid "argument must be a constant"
msgid "argument must be channel"
msgstr "argumen harus berupa sebuah konstanta"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
#| msgid "last argument must be an immediate"
msgid "argument must be a field reference"
msgstr "argumen terakhir harus berupa sebuah immediate"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
#| msgid "last argument must be an immediate"
msgid "left argument must be a slice"
msgstr "argumen terakhir harus berupa sebuah immediate"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "last argument must be an immediate"
msgid "first argument must be []byte"
msgstr "argumen terakhir harus berupa sebuah immediate"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "argument must be a constant"
msgid "second argument must be slice or string"
msgstr "argumen harus berupa sebuah konstanta"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "%Jparameter %u has void type"
msgid "argument 2 has invalid type"
msgstr "%J parameter %u memiliki tipe void"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
#| msgid "%Jparameter %u has incomplete type"
msgid "argument must have complex type"
msgstr "%J parameter %u memiliki tipe tidak lengkap"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
#| msgid "cleanup argument not an identifier"
msgid "complex arguments must have identical types"
msgstr "membersihkan argumen bukan sebuah identifikasi"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
#| msgid "Do not use hardware floating point"
msgid "complex arguments must have floating-point type"
msgstr "Jangan gunakan piranti keras titik pecahan"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of %<this%> at top level"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "penggunaan tidak valid ari %<this%> di tingkat paling atas"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "deleted function %q+D"
msgid "expected function"
msgstr "fungsi %q+D terhapus"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible type for receiver"
msgstr "tipe tidak kompatibel dalam kembali"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of %<this%> in non-member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "penggunaan tidak valid dari %<this%> dalam fungsi bukan anggota"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "incoming edge count does not match number of PHI arguments"
msgid "number of results does not match number of values"
msgstr "jumlah ujung masukan tidak cocok dengan jumlah dari argumen PHI"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
#| msgid "Cray pointer at %C must be an integer"
msgid "index must be integer"
msgstr "Penunjuk Cray di %C harus berupa sebuah integer"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
#| msgid "Cray pointer at %C must be an integer"
msgid "slice end must be integer"
msgstr "Penunjuk Cray di %C harus berupa sebuah integer"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible type for map index"
msgstr "tipe tidak kompatibel dalam kembali"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many expressions for struct"
msgstr "terlalu banyak argumen untuk format"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "terlalu sedikit argumen untuk format"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
#| msgid "invalid types in fixed-point conversion"
msgid "invalid unsafe.Pointer conversion"
msgstr "tipe tidak valid dalam konversi titik tetap"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "expected class name"
msgid "expected channel"
msgstr "diduga nama class"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
#| msgid "lvalue required as left operand of assignment"
@@ -13083,23 +13114,23 @@ msgstr "operan tidak valid dalam pernyataan return"
msgid "expected boolean expression"
msgstr "diduga ekspresi"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in send"
msgstr "tipe tidak kompatibel dalam kembali"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
#, fuzzy
#| msgid "invalid operand in indirect reference"
msgid "invalid send on receive-only channel"
msgstr "operan tidak valid dalam referensi tidak langsung"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -13165,83 +13196,83 @@ msgstr "Peringatkan tentang konversi implisit"
msgid "cannot use type %s as type %s"
msgstr "tidak dapat mengubah tipe %qT ke tipe %qT"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
#| msgid "invalid receiver type %qs"
msgid "different receiver types"
msgstr "tipe penerima %qs tidak valid"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "redefinition of parameter %q+D"
msgid "different number of parameters"
msgstr "redefinisi dari parameter %q+D"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "invalid parameter type %qT"
msgid "different parameter types"
msgstr "tipe parameter %qT tidak valid"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s"
msgstr "tipe tidak kompatibel untuk argumen %d dari %qE"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s (%s)"
msgstr "tipe tidak kompatibel untuk argumen %d dari %qE"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "error while parsing methods"
msgid "type has no methods"
msgstr "error ketika parsing metoda"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
#| msgid "ambiguous abbreviation %s"
msgid "ambiguous method %s%s%s"
msgstr "kependekan %s ambigu"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
#| msgid "missing argument to \"%s\""
msgid "missing method %s%s%s"
msgstr "hilang argumen ke \"%s\""
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -13312,7 +13343,7 @@ msgstr "argumen ketiga ke %<__builtin_prefetch%> harus berupa sebuah konstan"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "argumen ketiga ke %<__builtin_prefetch%> tidak valid; menggunakan nol"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "terlalu sedikit argumen ke fungsi %<va_start%>"
@@ -13334,7 +13365,7 @@ msgstr "(jadi anda harus melewatkan %qT bukan %qT ke %<va_arg%>)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "jika kode ini dicapai, aplikasi akan digagalkan"
@@ -13420,7 +13451,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "%K penggunakan tidak valid dari %<__builtin_va_arg_pack ()%>"
@@ -13516,8 +13547,8 @@ msgstr "%Kmencoba membebaskan sebuah objek bukan heap"
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "nilai void tidak diabaikan karena ini seharusnya"
@@ -13800,7 +13831,7 @@ msgstr "deklarasi dari %q+D membayangi sebuah deklarasi global"
msgid "declaration of %q+D shadows a previous local"
msgstr "deklarasi dari %q+D membayangi lokal sebelumnya"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
msgid "shadowed declaration is here"
@@ -13915,7 +13946,7 @@ msgstr "melompat kedalam pernyataan ekspresi"
msgid "%qE defined as wrong kind of tag"
msgstr "%H%qE didefinisikan sebagai jenis salah dari tag"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "penggunaan tidak valid dari %<restrict%>"
@@ -14036,7 +14067,7 @@ msgstr "parameter %qD dinisialisasi"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "objek berukuran-variabel tidak boleh diinisialisasi"
@@ -14046,7 +14077,7 @@ msgstr "objek berukuran-variabel tidak boleh diinisialisasi"
msgid "variable %qD has initializer but incomplete type"
msgstr "variabel %qD memiliki penginisialisasi tetapi tipe tidak lengkap"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "fungsi inline %q+D memberikan atribut noinline"
@@ -14078,7 +14109,7 @@ msgstr "ukuran array hilang dalam %q+D"
msgid "zero or negative size array %q+D"
msgstr "ukuran array nol atau negatif %q+D"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "ukuran penyimpanan dari %q+D tidak diketahui"
@@ -14194,7 +14225,7 @@ msgstr "ukuran dari array tidak dapat dievaluasi"
msgid "variable length array %qE is used"
msgstr "array dengan panjang bervariabel %qs digunakan"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr "array dengan panjang bervariabel digunakan"
@@ -14288,7 +14319,7 @@ msgstr "class penyimpanan dispesifikasikan untuk parameter %qs"
msgid "storage class specified for unnamed parameter"
msgstr "class penyimpanan dispesifikasikan untuk parameter %qs"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "class penyimpanan dispesifikasikan untuk nama tipe"
@@ -14459,7 +14490,7 @@ msgstr "%qs dideklarasikan sebagai fungsi yang mengembalikan sebuah array"
msgid "function definition has qualified void return type"
msgstr "definisi fungsi memiliki pengkualifikasi tipe kembali void"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "tipe pengkualifikasi diabaikan di tipe kembali fungsi"
@@ -14584,7 +14615,7 @@ msgstr "ISO C melarang tipe fungsi const atau volatile"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "sebuah anggota dari sebuah struktur atau union tidak dapat memiliki sebuah tipe variabel termodifikasi"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "variabel atau field %qE dideklarasikan void"
@@ -15046,7 +15077,7 @@ msgstr "argumen %qD tidak cocok dengan prototipe bawaan"
msgid "argument %qD doesn%'t match prototype"
msgstr "argumen %qD tidak cocok dengan prototipe"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "tidak ada pernyataaan kembali dalam fungsi yang mengembalikan bukan void"
@@ -15246,7 +15277,7 @@ msgstr "pengidentifikasi %qs konflik dengan kata kunci C++"
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C melarang sebuah satuan terjemahan kosong"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C tidak mengijinkan kelebihan %<;%> diluar dari sebuah fungsi"
@@ -15257,7 +15288,7 @@ msgstr "ISO C tidak mengijinkan kelebihan %<;%> diluar dari sebuah fungsi"
msgid "unknown type name %qE"
msgstr "nama register: %s tidak dikenal"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "diduga penspesifikasi deklarasi"
@@ -15268,7 +15299,7 @@ msgstr "diduga penspesifikasi deklarasi"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "diduga pengidentifikasi atau %<(%>"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored for methods"
@@ -15291,7 +15322,7 @@ msgstr "Diduga nama atribut bit"
msgid "data definition has no type or storage class"
msgstr "definisi data tidak memiliki tipe atau class penyimpanan"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "diduga %<,%> atau %<,%>"
@@ -15321,7 +15352,7 @@ msgstr "ISO C90 tidak mendukung %<long long%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 tidak mendukung %<long long%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "diduga string literal"
@@ -15351,18 +15382,18 @@ msgstr "static assertion gagal: %E"
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "diduga pengidentifikasi"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "koma di akhir dari daftar pengenumerasi"
@@ -15494,7 +15525,7 @@ msgstr "ISO C90 melarang pencampuran deklarasi dan kode"
msgid "expected %<}%> before %<else%>"
msgstr "diduga %<}%> sebelum %<else%>"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr "%<else%> tanpa sebuah sebelumnya %<if%>"
@@ -15523,17 +15554,17 @@ msgstr "diduga pengidentifikasi atau %<*%>"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "diduga pernyataan"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "disarankan kurung diantara tubuh kosong dalam sebuah pernyataan %<if%>"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "disarankan kurung diantara tubuh kosong dalam sebuah pernyataan %<else%>"
@@ -15605,7 +15636,7 @@ msgstr "ISO C tidak mengijinkan kelebihan %<;%> diluar dari sebuah fungsi"
msgid "cannot take address of %qs"
msgstr "tidak dapat mengambil alamat dari bit-field %qD"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "diduga ekspresi"
@@ -15648,268 +15679,268 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "%<__builtin_longjmp%> argumen kedua harus berupa 1"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments to function %<__builtin_next_arg%>"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "jumlah dari argumen ke fungsi %<__builtin_next_arg%> salah"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "compound literal memiliki ukuran variabel"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 melarang compound literals"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
#| msgid "expected identifier or %<(%>"
msgid "expected identifier or %<)%>"
msgstr "diduga pengidentifikasi atau %<(%>"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "kelebihan semikolon dalam metoda definisi dispesifikasikan"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "objective-c method declaration is expected"
msgstr "diduga penspesifikasi deklarasi"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for %qs"
msgid "no type or storage class may be specified here,"
msgstr "kelas penyimpanan dispesifikasikan untuk %qs"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "hilang %<(%> setelah %<#pragma pack%> - diabaikan"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "hilang %<(%> setelah %<#pragma pack%> - diabaikan"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "the %<setter%> attribute may only be specified once"
msgstr "%J atribut daerah tidak dapat dispesifikasikan untuk variabel lokal"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
#| msgid "%Jaddress area attribute cannot be specified for functions"
msgid "the %<getter%> attribute may only be specified once"
msgstr "%J alamat daerah atribut tidak dapat dispesifikasikan untuk fungsi"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> hanya mungkin digunakan dalam pernyataan compound"
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr "%<#pragma omp flush%> hanya mungkin digunakan dalam pernyataan compound"
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%> hanya boleh digunakan dalam pernyataan compound"
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%> hanya boleh digunakan dalam pernyataan compound"
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr "%<#pragma omp section%> hanya bisa digunakan dalam %<#pragma omp section%> konstruk"
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%> harus menjadi pertama"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr "terlalu banyak %qs clauses"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "argumen collapes membutuhkan konstanta positif ekspresi integer"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "diduga %<none%> atau %<shared%>"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr "diduga ekspresi integer"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr "%<num_threads%> nilai harus positif"
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, fuzzy, gcc-internal-format
#| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "diduga %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, atau %<||%>"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr "jadwal %<runtime%> tidak mengambil sebuah parameter %<chunk_size%>"
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr "penjadwalan %<auto%> tidak mengambil sebuah parameter %<chunk_size%>"
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "jenis penjadwalan tidak valid"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "diduga clause %<#pragma omp%>"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs tidak valid untuk %qs"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "invalid operator for %<#pragma omp atomic%>"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "operator tidak valid untuk %<#pragma omp atomic%>"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "operator tidak valid untuk %<#pragma omp atomic%>"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "diduga %<(%> atau akhir dari baris"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr "diduga pernyataan for"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "diduga iterasi deklarasi atau inisialisasi"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr "tidak cukup secara sempurna nested loops"
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr "collapsed loops tidak secara sempurna nested"
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "iterasi variabel %qD seharusnya bukan first private"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr "%qD bukan sebuah variabel"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%qE dideklarasikan %<threadprivate%> setelah penggunaan pertama"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "variabel otomatis %qE tidak dapat berupa %<threadprivate%>"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%<threadprivate%> %qE memiliki tipe tidak lengkap"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15919,7 +15950,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD memiliki tipe tidak lengkap"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "penggunaan tidak valid dari ekspresi void"
@@ -15986,69 +16017,74 @@ msgstr "penunjuk ke anggota tipe %qT tidak kompatibel dengan tipe objek %qT"
msgid "function return types not compatible due to %<volatile%>"
msgstr "tipe kembali fungsi tidak kompatibel karena %<volatile%>"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "aritmetik di penunjuk ke sebuah tipe tidak lengkap"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT tidak memiliki anggota bernama %qE"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "meminta untuk anggota %qE dalam sesuatu bukan sebuah struktur atau union"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "dereferencing pointer ke tipe tidak lengkap"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "dereferensi penunjuk %<void *%>"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "nilai subscripted adalah bukan array ataupun penunjuk"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "array subscrip bukan sebuah integer"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "nilai subscripted adalah penunjuk ke fungsi"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "index in dimension %d is out of bounds at %L"
msgid "index value is out of bound"
msgstr "indeks dalam dimensi %d diluar dari jangkauan di %L"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C melarang subscripting %<register%> array"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 melarang subscripting array bukan lvalue"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "dipanggil objek %qE bukan sebuah fungsi"
@@ -16056,384 +16092,384 @@ msgstr "dipanggil objek %qE bukan sebuah fungsi"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "fungsi dipanggil melalui sebuah tipe tidak kompatibel"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
#| msgid "function definition has qualified void return type"
msgid "function with qualified void return type called"
msgstr "definisi fungsi memiliki pengkualifikasi tipe kembali void"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
#| msgid "the last argument must be an 8-bit immediate"
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "argumen terakhir harus berupa sebuah 8 bit immediate"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "%<__builtin_longjmp%> argumen kedua harus berupa 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to method %qE"
msgstr "terlalu banyak argumen ke fungsi %qE"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "terlalu banyak argumen ke fungsi %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "declared here"
msgstr "%q+D dideklarasikan disini"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "tipe dari parameter format %d tidak lengkap"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai integer daripada pecahan karena ada prototipe"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai integer daripada kompleks kerana ada prototipe"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai kompleks daripada pecahan kerana ada prototipe"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai pecahan daripada integer karena ada prototipe"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai kompleks daripada integer karena ada prototipe"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai pecahan daripada kompleks karena ada prototipe"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai %<float%> daripada %<double%> karena adaprototipe"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai %qT daripada %qT karena ada prototipe"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "melewatkan argumen %d dari %qE dengan lebar berbeda karena ada prototipe"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai unsigned karena ada prototipe"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "melewatkan argumen %d dari %qE sebagai signed karena ada prototipe"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "meminta untuk konversi implisit dari %qT ke %qT tidak diijinkan dalam C++"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "terlalu sediki argumen ke fungsi %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "perbandingan dengan string literal menghasilkan perilaku yang tidak dispesifikasikan"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
#| msgid "comparison between %q#T and %q#T"
msgid "comparison between %qT and %qT"
msgstr "perbandingan antara %q#T dan %q#T"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "tipe dari penunjuk %<void *%> digunakan dalam pengurangan"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "penunjuk ke sebuah fungsi digunakan dalam pengurangan"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C tidak mendukung %<~%> untuk konjugasi kompleks"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "tipe argumen salah ke unary exclamation mark"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C tidak mendukung %<++%> dan %<--%> di tipe kompleks"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "tipe argumen salah ke peningkatan"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "tipe argumen salah ke pengurangan"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "peningkatan dari penunjuk ke struktur yang tidak dikenal"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "pengurangan dari penunjuk ke struktur yang tidak dikenal"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of expression of type %<void%>"
msgstr "memakai alamat dari sementara"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "penempatan dari lokasi baca-saja %qE"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "peningkatan dari lokasi baca-saja %qE"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "pengurangan dari lokasi baca-saja %qE"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "tidak dapat mengambil alamat dari bit-field %qD"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "variabel global register %qD digunakan dalam fungsi nested"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "variabel register %qD digunakan dalam fungsi nested"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "alamat dari variabel global register %qD diminta"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "alamat dari variabel register %qD diminta"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "array bukan lvalue dalam ekspresi kondisional"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "meminta untuk konversi implisit dari %qT ke %qT tidak diijinkan dalam C++"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C melarang kondisional ekspresi dengan hanya satu sisi void"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
#| msgid "pointer type mismatch in conditional expression"
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "tipe penunjuk tidak cocok dalam ekspresi kondisional"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C melarang kondisional ekpsresi diantara %<void *%> dan penunjuk fungsi"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "tipe penunjuk tidak cocok dalam ekspresi kondisional"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "tipe penunjuk/integer tidak cocok dalam ekspresi kondisional"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "tipe tidak cocok dalam ekspresi kondisional"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "operan tangan-kiri dari ekspresi koma tidak memiliki efek"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
#| msgid "cast adds new qualifiers to function type"
msgid "cast adds %q#v qualifier to function type"
msgstr "cast menambahkan kualifier baru ke tipe fungsi"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "cast mengabaikan kualifier dari tipe target penunjuk"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "cast menspesifikasikan tipe array"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "cast menspesifikasikan tipe fungsi"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C melarang casting bukan skalar ke tipe yang sama"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO melarang cast ke tipe union"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "cast ke tipe union dari tipe yang tidak ada dalam union"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "cast meningkatkan alignmen yang dibutuhkan dari tipe target"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "cast dari penunjuk ke integer dari ukuran berbeda"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "cast dari panggilan fungsi dari tipe %qT ke tipe yang tidak cocok %qT"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "cast ke penunjuk dari integer dari ukuran yang berbeda"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C melarang konversi dari fungsi penunjuk ke tipe objek penunjuk"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C melarang konversi dari objek penunjuk ke tipe fungsi penunjuk"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -16445,714 +16481,714 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "diduga %qT tetapi argumen memiliki tipe %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "target penunjuk dalam melewatkan argumen %d dari %qE berbeda dalam signedness"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, fuzzy, gcc-internal-format
#| msgid "Perform conversions of switch initializations."
msgid "enum conversion in initialization is invalid in C++"
msgstr "Lakukan konversi dari kondisional switch."
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion in return statement"
msgid "enum conversion in return is invalid in C++"
msgstr "konversi tidak valid dalam pernyataan return"
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "tidak dapat melewatkan rvalue ke parameter referensi"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
#| msgid "passing argument %d of %qE makes qualified function pointer from unqualified"
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "melewatkan argumen %d dari %qE membuat fungsi penunjuk terkualifikasi dari tidak terkualifikasi"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
#| msgid "assignment makes qualified function pointer from unqualified"
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "penempatan membuat fungsi penunjuk terkualifikasi dari tidak terkualifikasi"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
#| msgid "initialization makes qualified function pointer from unqualified"
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "inisialisasi membuat fungsi penunjuk terkualifikasi dari tidak terkualifikasi"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
#| msgid "return makes qualified function pointer from unqualified"
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "return membuat fungsi penunjuk terkualifikasi dari tidak terkualifikasi"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
#| msgid "passing argument %d of %qE discards qualifiers from pointer target type"
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "melewatkan argumen %d dari %qE mengabaikan pengkualifikasi dari tipe target penunjuk"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
#| msgid "assignment discards qualifiers from pointer target type"
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "penempatan mengabaikan pengkualifikasi dari tipe target penunjuk"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
#| msgid "initialization discards qualifiers from pointer target type"
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "inisialisasi mengabaikan pengkualifikasi dari tipe target penunjuk"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
#| msgid "return discards qualifiers from pointer target type"
msgid "return discards %qv qualifier from pointer target type"
msgstr "return mengabaikan pengkualifikasi dari tipe target penunjuk"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C melarang konversi argumen ke tipe union"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "meminta untuk konversi implisit dari %qT ke %qT tidak diijinkan dalam C++"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
#| msgid "passing argument %d of %qE from incompatible pointer type"
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "melewatkan argumen %d dari %qE dari tipe penunjuk yang tidak kompatibel"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "assignment from pointer to non-enclosed address space"
msgstr "cast dari penunjuk ke integer dari ukuran berbeda"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
#| msgid "initialization from incompatible pointer type"
msgid "initialization from pointer to non-enclosed address space"
msgstr "inisialisasi dari tipe penunjuk yang tidak kompatibel"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "argumen %d dari %qE mungkin menjadi sebuah kandidat untuk sebuah format atribut"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "penempatan sisi tangan-kiri mungkin menjadi sebuah kandidat untuk sebuah atribut format"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "inisialisasi sisi tangan kiri mungkin menjadi sebuah kandidat untuk sebuah format atribut"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "tipe kembali mungkin berupa sebuah kandidat untuk sebuah atribut format"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C melarang melewatkan argumen %d dari %qE diantara fungsi penunjuk dan %<void *%>"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C melarang penempatan diantara fungsi penunjuk dan %<void *%>"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C melarang inisialisasi diantara fungsi penunjuk dan %<void *%>"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C melarang kembali diantara fungsi penunjuk dan %<void *%>"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "target penunjuk dalam melewatkan argumen %d dari %qE berbeda dalam signedness"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "target penunjuk dalam assignmen berbeda dalam signedness"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "target penunjuk dalam inisialisasi berbeda dalam signedness"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "target penunjuk dalam kembali berbeda dalam signedness"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "melewatkan argumen %d dari %qE dari tipe penunjuk yang tidak kompatibel"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "penempatan dari tipe penunjuk yang tidak kompatibel"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "inisialisasi dari tipe penunjuk yang tidak kompatibel"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "kembali dari tipe penunjuk yang tidak kompatibel"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "penggunaan tidak valid dari bukan-lvalue array"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "melewatkan argumen %d dari %qE membuat penunjuk dari integer tanpa sebuah cast"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "penempatan membuat penunjuk dari integer tanpa sebuah cast"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "inisialisasi membuat penunjuk dari integer tanpa sebuah cast"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "return membuat penunjuk dari integer tanpa sebuah cast"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "melewatkan argumen %d dari %qE membuat integer dari penunjuk tanpa sebuah cast"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "penempatan membuat integer dari penunjuk tanpa sebuah cast"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "inisialisasi membuat integer dari penunjuk tanpa sebuah cast"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "return membuat integer dari penunjuk tanpa sebuah cast"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "tipe tidak kompatibel untuk argumen %d dari %qE"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "tipe tidak kompatibel dalam penempatan ke tipe %qT dari tipe %qT"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "tipe tidak kompatibel ketika menginisialisasi tipe %qT menggunakan tipe %qT"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "tipe tidak kompatibel ketika mengembalikan tipe %qT tetapi %qT telah diduga"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "tradisional C menolak inisialisasi otomatis bersama"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(dekat inisialisasi untuk %qs)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "array terinisialisasi dari konstanta string bertanda-petik"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "inisialisasi dari sebuah anggota array fleksibel"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "char-array terinisialisasi dari string lebar"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "array karakter lebar terinisialisasi dari string bukan lebar"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "array karakter lebar terinisialisasi dari string bukan lebar tidak kompatibel"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "array dari tipe yang tidak sesuai terinisialisasi dari konstanta string"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "array terinisialisasi dari ekspresi array bukan-konstanta"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "elemen penginisialisasi bukan sebuah konstanta"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not constant"
msgid "initializer element is not a constant expression"
msgstr "elemen penginisialisasi bukan sebuah konstanta"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "elemen penginisialisasi tidak dapat dihitung di waktu load"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "penginisialisasi tidak valid"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "tipe vektor opaque tidak dapat diinisialisasi"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "kelebihan grup kurung diakhir dari penginisialisasi"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "hilang kurung disekitar penginisialisasi"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "kurung disekitar penginisialisasi skalar"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "inisialisasi dari anggota array fleksibel dalam sebuah konteks bertelur"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "hilang penginisialisasi"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "penginisialisasi skalar kosong"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "kelebihan elemen dalam penginisialisasi skalar"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "indeks array dalam penginisialisasi bukan-array"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "nama bagian tidak dalam rekaman atau union penginisialisasi"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "indeks array dalam penginisialisasi bukan tipe integer"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer not of integer type"
msgid "array index in initializer is not an integer constant expression"
msgstr "indeks array dalam penginisialisasi bukan tipe integer"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "indeks array bukan konstan dalam penginisialisasi"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "indeks array dalam penginisialisasi melebihi batasan array"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "jangkauan indeks kosong dalam penginisialisasi"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "jangkauan indeks array dalam penginisialisasi melebihi batasan array"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "field %qE tidak dikenal dispesifikasikan dalam penginisialisasi"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "bagian terinisialisasi dengan efek-samping overwritten"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "bagian terinisialisasi overwritten"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "kelebihan elemen dalam char array penginisialisasi"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "kelebihan elemen dalam struktur penginisialisasi"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "inisialisasi tidak statis dari sebuah anggota array fleksibel"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "kelebihan elemen dalam penginisialisasi union"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "tradisional C menolah inisialisasi dari unions"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "kelebihan elemen dalam array penginisialisasi"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "kelebihan elemen dalam penginisialisasi vektor"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "kelebihan elemen dalam penginisialisasi skalar"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C melarang %<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "fungsi dideklarasikan %<noreturn%> memiliki sebuah pernyataan %<return%>"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "%<return%> dengan tidak ada nilai, dalam fungsi mengembalikan bukan void"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "%<return%> dengan sebuah nilai, dalam fungsi mengembalikan void"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "ISO C melarang %<return%> dengan ekspresi, dalam fungsi mengembalikan void"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "fungsi mengembalikan alamat dari variabel lokal"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch kuantiti bukan sebuah integer"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "pilihan %<long%> ekspresi tidak diubah ke %<int%> dalam ISO C"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "case label is not an integer constant expression"
msgstr "ukuran dari array bukan sebuah integral konstan ekspresi"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "label case tidak dalam label pernyataan switch"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "%<default%> label tidak dalam sebuah pernyataan switch"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, fuzzy, gcc-internal-format
#| msgid "%Hsuggest explicit braces to avoid ambiguous %<else%>"
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%H disarankan kurung eksplisit untuk menghindari ambigu %<else%>"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "pernyataan break tidak dalam loop atau switch"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "pernyataan continue tidak dalam sebuah loop"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "pernyataan break digunakan dengan OpenMP untuk loop"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "pernyataan dengan tidak ada efek"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "ekspresi pernyataan memiliki tipe tidak lengkap"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "jumlah geser kanan negatif"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "jumlah geser kanan >= lebar dari tipe"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "jumlah geser kiri negatif"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "jumlah geser kiri >= lebar dari tipe"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "comparing vectors with different element types"
msgstr "Peringatkan mengenai perbandingan dari tipe enum yang berbeda"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "membandingkan titik pecahan dengan == atau != adalah tidak aman"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
#| msgid "comparison of distinct pointer types lacks a cast"
msgid "comparison of pointers to disjoint address spaces"
msgstr "perbandingan dari tipe penunjuk berbeda kurang sebuah cast"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C melarang perbandingan dari %<void *%> dengan fungsi penunjuk"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "perbandingan dari tipe penunjuk berbeda kurang sebuah cast"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "perbandingan diantara penunjuk dan integer"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "perbandingan dari penunjuk lengkap dan tidak lengkap"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C melarang perbandingan terurut dari penunjuk ke fungsi"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "perbandingan terurut dari penunjuk dengan integer nol"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "perbandingan terurut dari penunjuk dengan integer nol"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "meminta untuk konversi implisit dari %qT ke %qT tidak diijinkan dalam C++"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "menggunakan array yang tidak dapat diubah ke penunjuk dimana skalar dibutuhkan"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "menggunakan nilai tipe struct dimana skalar dibutuhkan"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "menggunaka nilai tipe union dimana skalar dibutuhkan"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "menggunakan nilai tipe struct dimana skalar dibutuhkan"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "%qE memiliki tipe tidak valid untuk %<reduction%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE memiliki tipe tidak valid untuk %<reduction(%s)%>"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE harus berupa %<threadprivate%> untuk %<copyin%>"
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE bukan sebuah variabel dalam clause %qs"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr "%qE muncul lebih dari sekali dalam clause data"
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "%qE bukan sebuah variabel dalam clause %<firstprivate%>"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "%qE bukan sebuah variabel dalam clause %<lastprivate%>"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qE adalah predetermined %qs untuk %qs"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -17162,7 +17198,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "pemanggilan fungsi memiliki nilai bersama"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "ukuran dari variabel %q+D terlalu besar"
@@ -18007,54 +18043,54 @@ msgstr "%s: tidak dapat membuka sebagai berkas COFF"
msgid "library lib%s not found"
msgstr "perpustakaan lib%s tidak ditemukan"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "tidak dapat mengubah ke sebuah tipe penunjuk"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "nilai penunjuk yang digunakan dimana sebuah nilai titik pecahan diduga"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "nilai bersama digunakan dimana sebuah float telah diduga"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "konversi ke tipe yang tidak lengkap"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
#| msgid "can't convert between vector values of different size"
msgid "can%'t convert between vector values of different size"
msgstr "tidak dapat mengubah diantara nilai vektor dari ukuran yang berbeda"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "nilai bersama digunakan dimana sebuah integer diduga"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "nilai penunjuk digunakan dimana sebuah kompleks diduga"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "nilai bersama digunakan dimana sebuah kompleks diduga"
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
#| msgid "can't convert value to a vector"
msgid "can%'t convert value to a vector"
msgstr "tidak dapat mengubah nilai ke sebuah vektor"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr "nilai bersama digunakan dimana sebuah titik tetap diduga"
@@ -18215,7 +18251,7 @@ msgstr "dominasi dari %d seharusnya %d, bukan %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -18309,45 +18345,45 @@ msgstr "verify_eh_tree gagal"
msgid "stack limits not supported on this target"
msgstr "batas stact tidak didukung dalam target ini"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure member"
msgstr "class penyimpanan dispesifikasikan untuk daerah struktur %qs"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure bitfield"
msgstr "class penyimpanan dispesifikasikan untuk daerah struktur %qs"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "variabel global register %qD digunakan dalam fungsi nested"
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%K panggilan ke %qs dideklarasikan dengan atribut error: %s"
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "%K panggilan ke %qs dideklarasikan dengan atribut peringatan: %s"
@@ -18425,7 +18461,7 @@ msgstr "diasumsikan signed overflow tidak terjadi ketika menyederhanakan && atau
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr "diasumsikan signed overflow tidak terjadi ketika mengkombinasi konstan diantar sebuah perbandingan"
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "pemeriksaan fold: pohon asal diubah oleh fold"
@@ -18436,7 +18472,7 @@ msgstr "pemeriksaan fold: pohon asal diubah oleh fold"
msgid "total size of local objects too large"
msgstr "%J ukuran total dari objek lokal terlalu besar"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "batasan tidak memungkinkan dalam %<asm%>"
@@ -18927,87 +18963,87 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "pemeriksaan gimple: diduga %s(%s), memiliki %s(%s) dalam %s, di %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
#| msgid "no return statement in function returning non-void"
msgid "using result of function returning %<void%>"
msgstr "tidak ada pernyataaan kembali dalam fungsi yang mengembalikan bukan void"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "lvalue tidak valid dalam keluaran asm %d"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr "masukan %d bukan memori harus tetap berada dalam memori"
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "masukan memori %d tidak secara langsung dapat dialamatkan"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "threadprivate variable %qE used in untied task"
msgstr "variabel register %qD digunakan dalam fungsi nested"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, fuzzy, gcc-internal-format
#| msgid "%Henclosing parallel"
msgid "enclosing task"
msgstr "%Hparallel yang melingkupi"
-#: gimplify.c:5735
+#: gimplify.c:5742
#, fuzzy, gcc-internal-format
#| msgid "%qs not specified in enclosing parallel"
msgid "%qE not specified in enclosing parallel"
msgstr "%qs tidak dispesifikan dalam parallel yang melingkupi"
-#: gimplify.c:5740
+#: gimplify.c:5747
#, fuzzy, gcc-internal-format
#| msgid "%Henclosing parallel"
msgid "enclosing parallel"
msgstr "%Hparallel yang melingkupi"
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qs should be private"
msgid "iteration variable %qE should be private"
msgstr "iterasi variabel %qs seharusnya private"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qD should not be firstprivate"
msgid "iteration variable %qE should not be firstprivate"
msgstr "iterasi variabel %qD seharusnya bukan first private"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qs should not be reduction"
msgid "iteration variable %qE should not be reduction"
msgstr "iterasi variabel %qs seharusnya bukan reduksi"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
#| msgid "%s variable %qs is private in outer context"
msgid "%s variable %qE is private in outer context"
msgstr "%s variabel %qs private dalam konteks luar"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "gimplification gagal"
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not close Go dump file: %m"
msgstr "tidak dapat membuka berkas dump %qs: %s"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not open Go dump file %qs: %m"
@@ -19066,7 +19102,7 @@ msgstr "Optimasi graphite loop tidak dapat digunakan"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -19217,48 +19253,48 @@ msgstr "field %qs dideklarasikan sebagai sebuah fungsi"
msgid "function %qD redeclared as variable"
msgstr "fungsi %q+D redeklarasi sebagai inline"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "daerah barrier mungkin tidak secara dekat nested didalam dari work-sharing, critical, terurut atau eksplisit daerah tugas"
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "daerah work-sharing mungkin tidak secara dekat nested didalam dari work-sharing, critical, terurut atau eksplisit daerah tugas"
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr "daerah master mungkin tidak secara dekat nested didalam daerah work-sharing atau eksplist daerah tugas"
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr "daerah terurut mungkin tidak secara dekat nested didalam daerah kritis atau eksplist daerah tugas"
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr "daerah terurut harus secara dekat nested didalam sebuah daerah loop dalam sebuah clause terurut"
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr "daerah kritis mungkin tidak nested didalam sebuah daerah kritikal dengan nama sama"
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr "exit tidak valid dari blok struktur OpenMP"
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr "masukan tidak valid ke blok struktur OpenMP"
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr "cabang tidak valid ke/dari sebuah blok struktur OpenMP"
@@ -19377,7 +19413,7 @@ msgstr "-freorder-blocks-and-partition tidak bekerja dalam arsitektur ini"
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition tidak bekerja dalam arsitektur ini"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition tidak bekerja dalam arsitektur ini"
@@ -19756,9 +19792,9 @@ msgstr "tidak dapat menggunakan '%s' sebagai sebuah register %s"
msgid "can%'t use %qs as a fixed register"
msgstr "tidak dapat menggunakan '%s' sebagai sebuah register %s"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "nama register: %s tidak dikenal"
@@ -19842,12 +19878,12 @@ msgstr "tidak dapat menemukan sebuah register untuk spill dalam kelas %qs"
msgid "%<asm%> operand requires impossible reload"
msgstr "operan %<asm%> membutuhkan reload yang tidak memungkinkan"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "batasan operan %<asm%> tidak kompatibel dengan ukuran operan"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "keluaran operan adalah konstanta dalam %<asm%>"
@@ -20072,7 +20108,7 @@ msgstr "atribut packed menyebabkan alignmen tidak efisien"
msgid "packed attribute is unnecessary"
msgstr "atribut packed tidak diperlukan"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "alignmen dari elemen array lebih besar dari ukuran elemen"
@@ -20296,7 +20332,7 @@ msgstr "%Hpenggunaan tidak valid dari %qD dalam spesifikasi linkage"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -20312,7 +20348,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr "aslinya pemanggilan fungsi tidak langsung tidak dipertimbangkan untuk inlining"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -20327,7 +20363,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
#| msgid "%H%<[*]%> not allowed in other than a declaration"
msgid "asm not allowed in atomic transaction"
@@ -20366,650 +20402,650 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
#| msgid "%Hattributes are not allowed on a function-definition"
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "%Hatribut tidak diijinkan dalam sebuah definisi fungsi"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "konstanta tidak dihitung ketika ADDR_EXPR berubah"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "efek samping tidak diperhitungkan ketika ADDR_EXPR berubah"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "SSA nama dalam daftar bebas tetapi tetap direferensikan"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid first operand of MEM_REF"
msgstr "operan tidak valid ke %%R"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand of MEM_REF"
msgstr "operan tidak valid ke %%R"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR dengan sebuah kondisi always-false"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, fuzzy, gcc-internal-format
#| msgid "MODIFY_EXPR not expected while having tuples."
msgid "MODIFY_EXPR not expected while having tuples"
msgstr "MODIFY_EXPR tidak terduga ketika memiliki tuples."
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "alamat diambil, tetapi bit ADDRESSABLE tidak diset"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr "bukan integral digunakan dalam kondisi"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "kondisional operan tidak valid"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "posisi atau ukuran operan tidak valid ke BIT_FIELD_REF"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr "tipe ketepatan hasil integral tidak cocok dengan ukuran field dari BIT_FIELD_REF"
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr "mode ketepatan dari hasil bukan integral tidak cocok dengan ukuran field dari BIT_FIELD_REF"
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "awalan referensi tidak valid"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "operan ke plus/minus tidak valid, tipe adalah sebuah penunjuk"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "operan ke penunjuk plus tidak valid, operan pertama bukan sebuah penunjuk"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to pointer plus, second operand is not an integer with type of sizetype."
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr "operan ke penunjuk plus tidak valid, operan kedua bukan sebuah integer dengan tipe dari sizetype."
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "ekspresi tidak valid untuk minimal lvalue"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "operan tidak valid dalam referensi tidak langsung"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "operan tidak valid untuk referensi array"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "tipe tidak cocok dalam referensi array"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "tipe tidak cocok dalam jangkauan referensi array"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "tipe tidak cocok dalam referensi real/imagpart"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "tipe tidak cocok dalam referensi komponen"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "cast dari penunjuk ke integer dari ukuran berbeda"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid address operand in MEM_REF"
msgstr "operan tidak valid ke %%R"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid shift operand"
msgid "invalid offset operand in MEM_REF"
msgstr "operan shift tidak valid"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, fuzzy, gcc-internal-format
#| msgid "invalid position or size operand to BIT_FIELD_REF"
msgid "invalid address operand in TARGET_MEM_REF"
msgstr "posisi atau ukuran operan tidak valid ke BIT_FIELD_REF"
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, fuzzy, gcc-internal-format
#| msgid "invalid position or size operand to BIT_FIELD_REF"
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "posisi atau ukuran operan tidak valid ke BIT_FIELD_REF"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion in gimple call"
msgid "invalid function in gimple call"
msgstr "konversi tidak valid dalam panggilan gimple"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr "bukan fungsi dalam panggilan gimple"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "pure const state tidak valid untuk fungsi"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "LHS tidak valid dalam panggilan gimple"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "konversi tidak valid dalam panggilan gimple"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion in gimple call"
msgid "invalid static chain in gimple call"
msgstr "konversi tidak valid dalam panggilan gimple"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion in gimple call"
msgid "static chain in indirect gimple call"
msgstr "konversi tidak valid dalam panggilan gimple"
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
#| msgid "invalid LHS in gimple call"
msgid "invalid argument to gimple call"
msgstr "LHS tidak valid dalam panggilan gimple"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "operan tidak valid dalam perbandingan gimple"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in comparison expression"
msgid "mismatching comparison operand types"
msgstr "tipe tidak cocok dalam ekspresi perbandingan"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, fuzzy, gcc-internal-format
#| msgid "invalid operands in gimple comparison"
msgid "non-vector operands in vector comparison"
msgstr "operan tidak valid dalam perbandingan gimple"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "invalid operands in comparison expression"
msgid "invalid vector comparison resulting type"
msgstr "operan tidak valid dalam ekspresi perbandingan"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "bogus comparison result type"
msgstr "Peringatkan mengenai perbandingan dari tipe enum yang berbeda"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr "bukan register seperti RHS dari operasi unary"
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "operan tidak valid dalam operasi unari"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "tipe tidak valid dalam konversi nop"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
#| msgid "invalid types in nop conversion"
msgid "invalid types in address space conversion"
msgstr "tipe tidak valid dalam konversi nop"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "tipe tidak valid dalam konversi titik tetap"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "tipe tidak valid dalam konversi ke titik pecahan"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "tipe tidak valid dalam konversi ke integer"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "konversi bukan trivial dalam operasi unari"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr "bukan register seperti LHS dari operasi binari"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "operan tidak valid dalam operasi binary"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "tipe tidak cocok dalam ekspresi kompleks"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "tipe tidak cocok dalam ekspresi shift"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "tipe tidak cocok dalam ekspresi vektor shift"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in vector shift expression"
msgid "type mismatch in widening vector shift expression"
msgstr "tipe tidak cocok dalam ekspresi vektor shift"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, fuzzy, gcc-internal-format
#| msgid "invalid (pointer) operands to plus/minus"
msgid "invalid non-vector operands to vector valued plus"
msgstr "operan (penunjuk) tidak valid ke plus/minus"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "operan (penunjuk) tidak valid ke plus/minus"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "tipe tidak cocok dalam penunjuk plus ekspresi"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "tipe tidak cocok dalam ekspresi binary"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, fuzzy, gcc-internal-format
#| msgid "non-register as LHS of unary operation"
msgid "non-register as LHS of ternary operation"
msgstr "bukan register seperti RHS dari operasi unary"
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
#| msgid "invalid operands in binary operation"
msgid "invalid operands in ternary operation"
msgstr "operan tidak valid dalam operasi binary"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "tipe tidak cocok dalam ekspresi kondisional"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in complex expression"
msgid "type mismatch in fused multiply-add expression"
msgstr "tipe tidak cocok dalam ekspresi kompleks"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in vector shift expression"
msgid "type mismatch in vector permute expression"
msgstr "tipe tidak cocok dalam ekspresi vektor shift"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
#| msgid "expected integer expression"
msgid "vector types expected in vector permute expression"
msgstr "diduga ekspresi integer"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "invalid operands in truth expression"
msgid "invalid mask type in vector permute expression"
msgstr "operan tidak valid dalam ekspresi kebenaran"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "konversi bukan trivial di penempatan"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "operan tidak valid dalam ekspresi unary"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "tipe tidak cocok dalam ekspresi alamat"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr "rhs tidak valid untuk penyimpanan memori gimple"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "operan tidak valid dalam pernyataan return"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "konversi tidak valid dalam pernyataan return"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "tujuan goto bukan sebuah label ataupun sebuah penunjuk"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "operan tidak valid ke pernyataan switch"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, fuzzy, gcc-internal-format
#| msgid "incorrect entry in label_to_block_map.\n"
msgid "incorrect entry in label_to_block_map"
msgstr "masukan tidak benar dalam label_to_block_map.\n"
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
#| msgid "format string has invalid operand number"
msgid "incorrect setting of landing pad number"
msgstr "string format memiliki jumlah operan yang tidak valid"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion in gimple call"
msgid "invalid comparison code in gimple cond"
msgstr "konversi tidak valid dalam panggilan gimple"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
#| msgid "invalid operands in gimple comparison"
msgid "invalid labels in gimple cond"
msgstr "operan tidak valid dalam perbandingan gimple"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "Invalid PHI result"
msgid "invalid PHI result"
msgstr "Hasil PHI tidak valid"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, gcc-internal-format
msgid "missing PHI def"
msgstr "hilang definisi PHI"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "Invalid PHI argument"
msgid "invalid PHI argument"
msgstr "argumen PHI tidak valid"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Incompatible types in PHI argument"
msgid "incompatible types in PHI argument %u"
msgstr "tipe tidak kompatibel dalam argumen PHI"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr "verify_gimple gagal"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, fuzzy, gcc-internal-format
#| msgid "Dead STMT in EH table"
msgid "dead STMT in EH table"
msgstr "STMT dalam tabel EH mati"
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "gimple_bb (phi) diset ke blok dasar salah"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "pembagian tidak benar dari titik pohon"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "gimple_bb (stmt) diset ke blok dasar yang salah"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr "dalam pernyataan"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "pernyataan ditandai untuk throw, tetapi tidak"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "pernyataan ditandai untuk throw di tengah dari blok"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "ENTRY_BLOCK memiliki IL diasosiasikan dengannya"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr "EXIT_BLOCK memiliki IL diasosiasikan dengannya"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "fallthru ke keluar dari bb %d"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "bukan lokal label "
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "label "
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "kontrol aliran di tengah dari blok dasar %d"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "fallthry edge setelah sebuah pernyataan kontrol dalam bb %d"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "benar/salah edge setelah sebuah bukan-COND_COND dalam bb %d"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "tanda edge keluar salah diakhir dari bb %d"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "eksplisit goto di akhir dari bb %d"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "return edge tidak menunjuk ke akhir dalam bb %d"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr "ditemukan case baku bukan diawal dari case vektor"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr "case label tidak diurutkan: "
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "kelebihan outgoing edge %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "hilang edge %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
#| msgid "%H%<noreturn%> function does return"
msgid "%<noreturn%> function does return"
msgstr "%H%<noreturn%> fungsi tidak kembali"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "kontrol mencapai akhir dari fungsi bukan void"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of %qD, declared with attribute warn_unused_result"
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%H mengabaikan nilai kembali dari %qD, dideklarasikan dengan atribut warn_unused_result"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of function declared with attribute warn_unused_result"
msgid "ignoring return value of function declared with attribute warn_unused_result"
@@ -21078,75 +21114,75 @@ msgstr "BB %i pernyataan terakhir memiliki daerah set tidak benar"
msgid "BB %i has incorrect fallthru edge"
msgstr "insn salah dalam ujung fallthru"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it receives a non-local goto"
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "fungsi %q+F tidak akan dapat inline karena ini menerima sebuah goto bukan lokal"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it saves address of local label in a static variable"
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "fungsi %q+F tidak akan dapat inline karena ini menyimpan alamat dari label lokal dalam sebuah variabel statis"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "fungsi %q+F tidak akan dapat terinline karena ini menggunakan alloca (override menggunaka always_inline atribut)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "fungsi %q+F tidak akan dapat inline karena ini menggunakan setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "fungsi %q+F tidak akan dapat inline karena ini menggunakan daftar argumen variabel"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "fungsi %q+F tidak akan dapat inline karena ini menggunakan penanganan setjmp-longjmp exception"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "fungsi %q+F tidak akan dapat inline karena ini menggunakan goto tidak lokal"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "fungsi %q+F tidak akan dapat inline karena ini menggunakan __builtin_return atau __builtin_apply_args"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "fungsi %q+F tidak akan dapat inline karena ini berisi sebuah goto yang dihitung"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "fungsi %q+F tidak akan inline karena ini ditekan menggunakan -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "fungsi %q+F tidak akan inline karena ini menggunakan atribut yang konflik dengan inline"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "inlining failed in call to %q+F: %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "inlining gagal dalam panggilan ke %q+F: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "dipanggil dari sini"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "inlining gagal dalam panggilan ke %q+F: %s"
@@ -21363,7 +21399,7 @@ msgstr "stmt (%p) ditandai dimodifikasi setelah tahap optimisasi: "
msgid "verify_ssa failed"
msgstr "verify_ssa gagal"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
#| msgid "%J%qD was declared here"
msgid "%qD was declared here"
@@ -21427,56 +21463,56 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
#| msgid "%Harray subscript is outside array bounds"
msgid "array subscript is outside array bounds"
msgstr "%H array subscript diluar dari cakupan array"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
#| msgid "%Harray subscript is above array bounds"
msgid "array subscript is above array bounds"
msgstr "%H array subscript diatas dari array bounds"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
#| msgid "%Harray subscript is below array bounds"
msgid "array subscript is below array bounds"
msgstr "%Harray subscrip dibawah dari array bounds"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr "diasumsikan signed overflow tidak terjadi ketika menyederhakan kondisi ke konstanta"
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr "diasumsikan signed overflow tidak terjadi ketika menyederhanakan kondisional"
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "perbandingan selalu salah karena jangkauan terbatas dari tipe data"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "perbandingan selalu benar karena jangkauan terbatas dari tipe data"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, fuzzy, gcc-internal-format
#| msgid "assuming signed overflow does not occur when simplifying && or || to & or |"
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr "diasumsikan signed overflow tidak terjadi ketika menyederhanakan && atau || ke & atau |"
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, fuzzy, gcc-internal-format
#| msgid "assuming signed overflow does not occur when simplifying && or || to & or |"
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
@@ -21487,22 +21523,22 @@ msgstr "diasumsikan signed overflow tidak terjadi ketika menyederhanakan && atau
msgid "ignoring attributes applied to %qT after definition"
msgstr "mengabaikan atribut yang diaplikasikan ke %qT setelah definisi"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D telah dideklarasikan dengan atribut dllexport: dllimport diabaikan"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D redeklarasi tanpa atribut dllimport setelah telah direferensikan dengan dll linkage"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D redeklarasi tanpa atribut dllimport: sebelumnya dllimport diabaikan"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -21517,149 +21553,149 @@ msgstr "%q+D redeklarasi tanpa atribut dllimport: sebelumnya dllimport diabaikan
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "%qE atribut diabaikan"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "fungsi inline %q+D dideklarasikan sebagai dllimport: atribut diabaikan"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "definisi fungsi %q+D ditandai dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "definisi variabel %q+D ditandai dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, fuzzy, gcc-internal-format
#| msgid "external linkage required for symbol %q+D because of %qs attribute"
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "external linkage dibutuhkan untuk simbol %q+D karena atribut %qs"
-#: tree.c:5627
+#: tree.c:5628
#, fuzzy, gcc-internal-format
#| msgid "%qs implies default visibility, but %qD has already been declared with a different visibility"
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qs mengimplikasikan visibility baku, tetapi %qD telah dideklarasikan dengan sebuah visibility berbeda"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "array dari fungsi tidak berarti"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "tipe kembali fungsi tidak dapat berupa fungsi"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "pemeriksaan pohon: %s, memiliki %s dalam %s, di %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "pemeriksaan pohon: diduga kosong dari %s, memiliki %s dalam %s, di %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "pemeriksaan pohon: diduga kelas %qs, memiliki %qs (%s) dalam %s, di %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "pemeriksaan pohon: tidak menduga kelas %qs, memiliki %qs (%s dalam %s, di %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "pemeriksaan pohon: diduga omp_clause %s, memiliki %s dalam %s, di %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "pemeriksaan pohon: diduga pohon yang berisi struktur %qs, memiliki %qs dalam %s, di %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "pemeriksaan pohon: diakses elt %d dari tree_vec dengan %d elts dalam %s, di %s:%d"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "pemeriksaan pohon: diakses operan %d dari %s dengan %d operan dalam %s, di %s:%d"
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "pemeriksaan pohon: diakses operan %d dari omp_clause %s dengan %d operan dalam %s, di %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
#| msgid "%qD is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%qD sudah ditinggalkan (dideklarasikan di %s:%d)"
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%qD sudah ditinggalkan (dideklarasikan di %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
#| msgid "%qD is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%qD sudah ditinggalkan (dideklarasikan di %s:%d)"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
#| msgid "%qD is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%qD sudah ditinggalkan (dideklarasikan di %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "tipe sudah ditinggalkan (dideklarasikan di %s:%d)"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "tipe sudah ditinggalkan (dideklarasikan di %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated: %s"
msgstr "%qs sudah ditinggalkan"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated"
msgstr "%qs sudah ditinggalkan"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated"
msgid "type is deprecated: %s"
msgstr "tipe sudah ditinggalkan"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "tipe sudah ditinggalkan"
@@ -21712,156 +21748,161 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D menyebabkan konflik sebuah tipe daerah"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%+D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%+D menyebabkan konflik sebuah tipe daerah"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "alignmen dari %q+D lebih besar dari berkas objek maksimum alignmen. Menggunakan %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "nama register tidak dispesifikasikan untuk %q+D"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "nama register tidak valid untuk %q+D"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "tipe data dari %q+D tidak cocok untuk sebuah register"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
#| msgid "register specified for %q+D isn%'t suitable for data type"
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "register yang dispesifikasikan untuk %q+D tidak cocok untuk tipe data"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "register digunakan untuk dua variabel register global"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "register yang dispesifikasikan untuk %q+D tidak cocok untuk tipe data"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "variabel global register memiliki nilai inisial"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "optimisasi mungkin menghapus baca dan/atau tulis ke variabel register"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "nama register diberikan untuk variabel bukan register %q+D"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "global desktruktor tidak didukung di target ini"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "global konstruktor tidak didukung di target ini"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "thread-local COMMON data tidak terimplementasi"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "alignmen yang diminta untuk %q+D lebih besar dari alignmen yang diimplementasikan dari %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "penginisialisasi untuk nilai integer/titik-tetap terlalu kompleks"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "penginisialisasi untuk nilai pecahan bukan sebuah konstanta pecahan"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
#| msgid "invalid initial value for member %qs"
msgid "invalid initial value for member %qE"
msgstr "nilai inisial tidak valid untuk anggota %qs"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "deklarasi lemah dari %q+D harus berupa publik"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "deklarasi lemah dari %q+D tidak didukung"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "hanya aliases lemah yang didukung dalam konfigurasi ini"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
#| msgid "%Jweakref is not supported in this configuration"
msgid "weakref is not supported in this configuration"
msgstr "%J weakref tidak didukung dalam konfigurasi ini"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "ifunc is not supported in this configuration"
msgstr "-m%s tidak didukung dalam konfigurasi ini"
-#: varasm.c:5751
+#: varasm.c:5788
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to undefined symbol %qs"
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D teraliasi ke simbol tidak terdefinisi %qs"
-#: varasm.c:5765
+#: varasm.c:5802
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to external symbol %qs"
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D teraliasi ke simbol eksternal %qs"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "weakref %q+D secara ultimate mentarget dirinya sendiri"
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "weakref %q+D harus memiliki static linkage"
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
#| msgid "%Jalias definitions not supported in this configuration"
msgid "alias definitions not supported in this configuration"
msgstr "%J definisi alias tidak didukung dalam konfigurasi ini"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "visibility atribut tidak didukung dalam konfigurasi ini; diabaikan"
@@ -21903,8 +21944,8 @@ msgstr "%qD tidak didefinisikan diluar dari jangkauan fungsi"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "panjang string %qd lebih besar daripada panjang %qd ISO C%d kompiler dibutuhkan untuk mendukung"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "overflow dalam konstanta ekspresi"
@@ -22121,7 +22162,7 @@ msgstr "penunjuk ke anggota fungsi digunakan dalam aritmetik"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "alamat dari %qD akan selalu dievaluasi sebagai %<true%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "disarankan parentheses disekitar assignmen digunakan sebagai nilai kebenaran"
@@ -22561,40 +22602,40 @@ msgstr "%qE atribut diabaikan untuk %qE"
msgid "invalid vector type for attribute %qE"
msgstr "tipe vektori tidak valid untuk atribut %qE"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "ukuran vektor bukan sebuah kelipatan integral dari ukuran komponen"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "ukuran vektor nol"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "jumlah dari komponen dari vektor bukan kelipatan dari dua"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "atribut bukan null tanpa argumen di sebuah bukan prototipe"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "argumen bukan null memiliki jumlah operan tidak valid (argumen %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "argumen bukan null dengan diluar-dari-jangkauan jumlah operan (argumen %lu, operan %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "referensi argumen nonnull operan bukan penunjuk (argumen %lu, operan %lu)"
@@ -22634,12 +22675,12 @@ msgstr "%qE atribut membutuhkan prototipe dengan argumen bernama"
msgid "%qE attribute only applies to variadic functions"
msgstr "%qE atribut hanya berlaku untuk fungsi variadic"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "posisi yang diminta bukan sebuah konstanta integer"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "posisi yang diminta lebih kecil dari nol"
@@ -22698,7 +22739,7 @@ msgstr "tidak dapat mengaplikasikan %<offsetof%> ketika %<operator[]%> adalah ov
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "tidak dapat mengaplikasikan %<offsetof%> ke anggota fungsi %qD"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "mencoba untuk mengambil alamat dari bit-field anggota struktur %qD"
@@ -23462,86 +23503,86 @@ msgid "ignoring #pragma %s %s"
msgstr "%H mengabaikan #pragma %s %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
#| msgid "%Hstray %<@%> in program"
msgid "stray %<@%> in program"
msgstr "%H hilang %<@%> dalam aplikasi"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "hilang %qs dalam aplikasi"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "hilang karakter %c pengakhir"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "hilang %qc dalam aplikasi"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "hilang %<\\%o%> dalam aplikasi"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "konstanta desimal ini hanya tidak unsigned dalam ISO C90"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "konstanta desimal ini akan menjadi unsigned dalam ISO C90"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for %qs type"
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "konstanta integer terlalu besar untuk tipe %qs"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
#| msgid "non-standard suffix on floating constant"
msgid "unsuffixed float constant"
msgstr "akhiran bukan-standar di konstanta floating"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr "tidak didukung akhiran bukan-standar di konstanta floating"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr "akhiran bukan-standar di konstanta floating"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "konstanta floating melebihi jangkauan dari %qT"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "konstanta floating dipotong ke nol"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, fuzzy, gcc-internal-format
#| msgid "%Hmisplaced %<@%D%> Objective-C++ construct"
msgid "repeated %<@%> before Objective-C string"
msgstr "%Hsalah tempat %<@%D%> Objective-C++ konstruk"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr "tidak didukung bukan-standar pemotongan dari string literals"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "tradisional C menolak pemotongan konstanta string"
@@ -23561,7 +23602,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "tipe tidak valid untuk iterasi variabel %qE"
@@ -23571,22 +23612,22 @@ msgstr "tipe tidak valid untuk iterasi variabel %qE"
msgid "%qE is not initialized"
msgstr "%qE tidak terinisialisasi"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr "hilang predikat pengontrol"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "predikat pengontrol tidak valid"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr "hilang ekspresi peningkatan"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "ekspresi peningkatan tidak valid"
@@ -24467,7 +24508,7 @@ msgstr "L%d cache latensi tidak diketahui untuk %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "nilai buruk %qs untuk -mmemory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -24651,54 +24692,54 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to functions"
msgid "%qE attribute only applies to functions"
msgstr "atribut %qs hanya berlaku ke fungsi"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "tidak dapat menghitung lokasi ril dari parameter terstack"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, gcc-internal-format
msgid "argument must be a constant"
msgstr "argumen harus berupa sebuah konstanta"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "pemilih harus berupa sebuah immediate"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "mask harus berupa sebuah immediate"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "tidak ada register bawah yang tersedia unruk popping register atas"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "Interrupt Sevice Routines tidak dapat dikodekan dalam mode Thumb"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr "mangling dari %<va_list%> telah berubah dalam GCC 4.4"
@@ -24713,101 +24754,120 @@ msgstr "variabel yang diinisialisasikan %q+D ditandai dllimport"
msgid "static variable %q+D is marked dllimport"
msgstr "variabel statis %q+D ditandai dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-G and -static are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-G dan -static adalah mutually exclusive"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "%qD cannot have default arguments"
+msgid "%qs function cannot have arguments"
+msgstr "%qD tidak dapat memiliki argumen baku"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "Function does not return a value"
+msgid "%qs function cannot return a value"
+msgstr "Fungsi tidak mengembalikan sebuah nilai"
+
+#: config/avr/avr.c:583
+#, fuzzy, gcc-internal-format
+#| msgid "%qs appears to be a misspelled signal handler"
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs sepertinya salah nama signal handler"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "Jumlah dari register yang digunakan untuk melewati argumen integer"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D not supported"
msgid "writing to address space %qs not supported"
msgstr "deklarasi lemah dari %q+D tidak didukung"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs sepertinya salah nama interrupt handler"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs sepertinya salah nama signal handler"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "hanya variabel yang belum terinisialisasi yang dapat ditempatkan dalam daerah .noinit"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "hanya variabel terinisialisasi yang dapat ditempatkan kedalam daerah memori aplikasi"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU %qs hanya didukung untuk perakit saja"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of module in string constant"
msgid "%s expects a compile time integer constant"
msgstr "Tidak terduga akhir dari modul dalam konstanta string"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -24938,70 +24998,70 @@ msgstr "penggunaan tidak valid dari pemodifikasi ':'"
msgid "internal error: bad register: %d"
msgstr "internal error: register buruk: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "internal error: sideeffect-insn mempengaruhi efek utama"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "nilai cc_attr tidak diketahui"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "internal error: cris_side_effect_mode_ok dengan operan buruk"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d tidak digunakan, diantara 0 dan %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "spesifikasi versi CRIS tidak diketahui dalam -march= atau -mcpu= : %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "spesifikasi versi cpu CRIS tidak diketahui dalam -mtune= : %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC dan -fpic tidak didukung dalam konfigurasi ini"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "pilihan -g tertentu tidak valid dengan -maout dan -melinux"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "Unknown src"
msgid "unknown src"
msgstr "Tidak diketahui src"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "Unknown dest"
msgid "unknown dest"
msgstr "Tidak diketahui dest"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "stackframe terlalu besar: %d bytes"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "expand_binop gagal dalam movsi got"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
#| msgid "emitting PIC operand, but PIC register isn't set up"
msgid "emitting PIC operand, but PIC register isn%'t set up"
@@ -25166,316 +25226,316 @@ msgstr "tidak dapat extend berkas PCH: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "tidak dapat menset posisi dalam berkas PCH: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "nilai (%s) buruk untuk %stune=%s %s"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%stune=x86-64%s is deprecated. Use %stune=k8%s or %stune=generic%s instead as appropriate."
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr "%smtune=x86-64%s sudah ditinggalkan. Lebih baik gunakan %stune=k8%s atau %stune=generic%s yang lebih sesuai."
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "model kode %qs tidak mendukung dalam mode %s bit"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %qs not supported in the %s bit mode"
msgid "code model %qs not supported in x32 mode"
msgstr "model kode %qs tidak mendukung dalam mode %s bit"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "model kode %s tidak mendukung kode PIC"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s tidak didukung dalam konfigurasi ini"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i-bit mode tidak terkompile"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "CPU yang anda pilih tidak mendukung set instruksi x86-64"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "CPU generik hanya dapat digunakan untuk pilihan %stune=%s %s"
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr "nilai (%s) buruk untuk pilihan %sarch=%s %s"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, fuzzy, gcc-internal-format
#| msgid "%sregparm%s is ignored in 64-bit mode"
msgid "-mregparm is ignored in 64-bit mode"
msgstr "%sregparm%s diabaikan dalam mode 64 bit"
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%sregparm=%d%s is not between 0 and %d"
msgid "-mregparm=%d is not between 0 and %d"
msgstr "%sregparm=%d%s tidak berada diantara 0 dan %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "%srtd%s diabaikan dalam mode 64 bit"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "-fprefetch-loop-arrays not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-fprefetch-loop-array tidak didukung untuk target ini"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%spreferred-stack-boundary=%d%s is not between %d and 12"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "%spreferred-stack-boundary=%d%s tidak berada diantara %d dan 12"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mincoming-stack-boundary=%d tidak berada diantara %d dan 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr "%ssseregparam%s digunakan tanpa SSE aktif"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "set instruksi SSE non-aktif, menggunakan 387 aritmetik"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "set instruksi 387 non-aktif, menggunakan aritmetik SSE"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "unwind tabel saat ini membutuhkan baik sebuah frame pointer atau %saccumulate-outgoing-args%s untuk pembenaran"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "stack probing membutuhkan %saccumulate-outgoing-args%s untuk pembenaran"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unknown -m%s= option specified: '%s'"
msgid "unknown option for -mrecip=%s"
msgstr "pilihan -m%s= tidak diketahui dispesifikasikan: '%s'"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr "atribut(target(\"%s\")) tidak diketahui"
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr "pilihan(\"%s\") telah dispesifikasikan"
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "atribut fastcall dan regparm tidak kompatibel"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "regparam and thiscall attributes are not compatible"
msgstr "atribut fastcall dan stdcall tidak kompatibel"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%qE attribute requires an integer constant argument"
msgstr "atribut %qs membutuhkan sebuah argumen konstanta integer"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
#| msgid "argument to %qs attribute larger than %d"
msgid "argument to %qE attribute larger than %d"
msgstr "argumen ke atribut %qs lebih besar daripada %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "atribut fastcall dan cdecl tidak kompatibel"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "atribut fastcall dan stdcall tidak kompatibel"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and thiscall attributes are not compatible"
msgstr "atribut fastcall dan stdcall tidak kompatibel"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "atribut stdcall dan cdecl tidak kompatibel"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "atribut stdcall dan fastcall tidak kompatibel"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "stdcall and thiscall attributes are not compatible"
msgstr "atribut stdcall dan fastcall tidak kompatibel"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "cdecl and thiscall attributes are not compatible"
msgstr "atribut stdcall dan fastcall tidak kompatibel"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "%qE attribute is used for none class-method"
msgstr "%qE atribut diabaikan dalam tipe bukan-class"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, fuzzy, gcc-internal-format
#| msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Memanggil %qD dengan atribut sseregparm tanpa mengaktifkan SSE/SSE2"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, fuzzy, gcc-internal-format
#| msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Memanggil %qT dengan atribut sseregparm tanpa mengaktifkan SSE/SSE2"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr "atribut ms_abi membutuhkan -maccumulate-outgoing-args atau mengindikasikan optimasi subtarget"
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "argumen vektor AVX tanpa AVX aktif mengubah ABI"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, fuzzy, gcc-internal-format
#| msgid "The ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr "ABI dari melewatkan struct dengan sebuah anggota array flexible telah berubah dalam GCC 4.4"
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, fuzzy, gcc-internal-format
#| msgid "The ABI of passing union with long double has changed in GCC 4.4"
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr "ABI dari melewatkan union dengan long double telah berubah dalam GCC 4.4"
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, fuzzy, gcc-internal-format
#| msgid "The ABI of passing structure with complex float member has changed in GCC 4.4"
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr "ABI dari melewatkan structure dengan anggota float kompleks telah berubah dalam GCC 4.4"
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "register SSE kembali dengan SSE tidak aktif"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "argumen register SSE dengan SSE tidak aktif"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "x87 register kembali dengan x87 tidak aktif"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "argumen vektor SSE tanpa SSE aktif mengubah ABI"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "argumen vektor MMX tanpa MMX aktif mengubah ABI"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The ABI of passing union with long double has changed in GCC 4.4"
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr "ABI dari melewatkan union dengan long double telah berubah dalam GCC 4.4"
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "SSE vektor kembali tanpa SSE aktif mengubah ABI"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "MMX vektor kembali tanpa MMX aktif mengubah ABI"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, fuzzy, gcc-internal-format
#| msgid "%s not supported for nested functions"
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "%s tidak didukung untuk fungsi nested"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, fuzzy, gcc-internal-format
#| msgid "%s not supported for nested functions"
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
@@ -25483,126 +25543,126 @@ msgstr "%s tidak didukung untuk fungsi nested"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 does not support flexible array members"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "ISO C90 tidak mendukung keanggotaan array fleksibel"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "register extended tidak memiliki setengah tinggi"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "ukuran operan tidak didukung untuk register ekstended"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid operand code '%c'"
msgid "non-integer operand used with operand code '%c'"
msgstr "kode operan '%c' tidak valid"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "argumen terakhir harus berupa sebuah 2 bit immediate"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
#| msgid "the fifth argument must be a 8-bit immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "argumen kelima harus berupa sebuah 8 bit immediate"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
#| msgid "the third argument must be a 8-bit immediate"
msgid "the third argument must be an 8-bit immediate"
msgstr "argumen ketiga harus berupa sebuah 8 bit immediate"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "the last argument must be a 1-bit immediate"
msgid "the last argument must be an 1-bit immediate"
msgstr "argumen terakhir harus berupa sebuah 1 bit immediate"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "argumen terakhir harus berupa sebuah 4 bit immediate"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "argumen terakhir harus berupa sebuah 1 bit immediate"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "argumen terakhir harus berupa sebuah 5 bit immediate"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "argumen selanjutnya ke terakhir harus berupa sebuah 8 bit immediate"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "argumen terakhir harus berupa sebuah 8 bit immediate"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
#| msgid "the last argument must be a 2-bit immediate"
msgid "the last argument must be a 32-bit immediate"
msgstr "argumen terakhir harus berupa sebuah 2 bit immediate"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "pemilih harus berupa sebuah konstanta integer dalam jangkauan 0..%wi"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr "%qE membutuhkan pilihan isa tidak diketahui"
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr "%qE membutuhkan pilihan isa %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "argumen terakhir harus berupa sebuah immediate"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, fuzzy, gcc-internal-format
#| msgid "last argument must be an immediate"
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "argumen terakhir harus berupa sebuah immediate"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only available for 64-bit"
msgid "%qE attribute only available for 32-bit"
msgstr "%qs atribut hanya tersedia untuk 64 bit"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
#| msgid "argument of %qs attribute is not a string constant"
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "argumen dari atribut %qs bukan sebuah konstanta string"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "atribut ms_abi dan sysv_abi tidak kompatibel"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
#| msgid "%qs incompatible attribute ignored"
msgid "%qE incompatible attribute ignored"
@@ -25680,19 +25740,19 @@ msgstr "%J alamat daerah atribut tidak dapat dispesifikasikan untuk fungsi"
msgid "%qE attribute requires a string constant argument"
msgstr "atribut %qs membutuhkan sebuah argumen konstanta integer"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "nilai dari -mfixed-range harus memiliki bentuk REG1-REG2"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s adalah sebuah ruang kosong"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr "atribut versi bukan sebuah string"
@@ -25761,7 +25821,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "atribut `%s' tidak didukung untuk target R8C"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not an integer constant"
msgid "%qE attribute argument not an integer constant"
@@ -25819,7 +25879,7 @@ msgstr "multiple atribut interupsi tidak diijinkan"
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread hanya tersedia di fido"
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "ekspresi batas stack tidak didukung"
@@ -26375,27 +26435,27 @@ msgstr "MMIX Internal: %s bukan sebuah shiftable int"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "Pembuatan kode PIC tidak didukung dalam model portablle waktu-jalan"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "Pembuatan kode PIC tidak kompatibel dangan panggilan cepat tidak langsung"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g hanya didukung ketika menggunakan GAS di prosesor ini,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "-g pilihan tidak aktif"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr "alignmen (%u) untuk %s melebihi maksimal alignmen untuk global common data. Menggunakan %u"
@@ -26845,87 +26905,87 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "stack frame terlalu besar"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "tidak ada profiling dari kode 64 bit untuk ABI ini"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "penggunaan dari %<long double%> dalam tipe AltiVec tidak valid"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "penggunaan dari tipe boolean dalam tipe AltiVec tidak valid"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "penggunaan dari %<complex%> dalam tipe AltiVec tidak valid"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "penggunaan dari tipe titik pecahan desimal dalam tipe AltiVec tidak valid"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, fuzzy, gcc-internal-format
#| msgid "use of %<long%> in AltiVec types is invalid for 64-bit code"
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "penggunaan dari %<long%> dalam tipe AltiVec tidak valid untuk kode 64 bit"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "penggunaan dari %<long%> dalam tipe AltiVec sudah ditinggalkan; gunakan %<int%>"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, fuzzy, gcc-internal-format
#| msgid "use of %<long long%> in AltiVec types is invalid"
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "penggunaan dari %<long long%> dalam tipe AltiVec tidak valid"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, fuzzy, gcc-internal-format
#| msgid "use of %<double%> in AltiVec types is invalid"
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "penggunaan dari %<double%> dalam tipe AltiVec tidak valid"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr "mengeluarkan instruksi microcode %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr "mengeluarkan kondisional instruksi microcode %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid use of '%%%c'"
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "penggunaan dari '%%%c' tidak valid"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%H%<#pragma%> is not allowed here"
msgid "%s\"%s\"%s is not allowed"
msgstr "%H%<#pragma%> tidak diijinkan disini"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "spec '%s' is invalid"
msgid "%s\"%s\"%s is invalid"
@@ -26981,12 +27041,12 @@ msgstr "E500 dan FPR tidak didukung"
msgid "-m64 not supported in this configuration"
msgstr "-m64 tidak didukung dalam konfigurasi ini"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 membutuhkan sebuah cpu PowerPC64"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
#| msgid "-fdirectives-only is incompatible with -traditional"
msgid "-mcmodel incompatible with other toc options"
@@ -27004,64 +27064,64 @@ msgstr "-fdirectives-only tidak kompatibel dengan -traditional"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET tidak didukung"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "nilai buruk untuk -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "nilai buruk untuk -msdata=%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable dan -msdata=%s tidak kompatibel"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s dan -msdata=%s tidak kompatibel"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s dan -mcall-%s tidak kompatibel"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable dan -mno-minimal-toc tidak kompatibel"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable dan -mcall-%s tidak kompatibel"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC dan -mcall-%s tidak kompatibel"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc harus berupa big endian"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-msecure-plt tidak didukung oleh perakit anda"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s tidak didukung dalam konfigurasi ini"
@@ -27177,59 +27237,59 @@ msgstr "mengabaikan -fschedule-insns karean penanganan eksepsi bug"
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "unwind tabel saat ini membutuhkan baik sebuah frame pointer atau %saccumulate-outgoing-args%s untuk pembenaran"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs tidak didukung oleh subtarget ini"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to interrupt functions"
msgid "%qE attribute only applies to interrupt functions"
msgstr "atribut %qs hanya berlaku ke fungsi interupsi"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute is supported only for SH2A"
msgid "%qE attribute is supported only for SH2A"
msgstr "atribut %qs tidak didukung hanya untuk SH2A"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "atribut interrupt_handler tidak kompatibeldengan -m5-compact"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to SH2A"
msgid "%qE attribute only applies to SH2A"
msgstr "atribut %qs hanya berlaku ke SH2A"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument should be between 0 to 255"
msgid "%qE attribute argument should be between 0 to 255"
msgstr "argumen atribut `%s' seharusnya berada diantara 0 sampai 255"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not a string constant"
msgid "%qE attribute argument not a string constant"
msgstr "argumen atribut %qs bukan sebuah konstanta string"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 harus tersedia sebaga sebuah call-clobbered register"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
#| msgid "Need a second call-clobbered general purpose register"
msgid "need a second call-clobbered general purpose register"
msgstr "Butuh sebuah call-clobbered general purpose register kedua"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, fuzzy, gcc-internal-format
#| msgid "Need a call-clobbered target register"
msgid "need a call-clobbered target register"
@@ -27595,43 +27655,43 @@ msgstr "%<-gnat%> salah penyebutan sebagai %<-gant%>"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "%qs atribut diabaikan"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute requires prototypes with named arguments"
msgid "%qs attribute requires prototypes with named arguments"
msgstr "%qE atribut membutuhkan prototipe dengan argumen bernama"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute only applies to variadic functions"
msgid "%qs attribute only applies to variadic functions"
msgstr "%qE atribut hanya berlaku untuk fungsi variadic"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored"
msgid "%qE attribute has no effect"
msgstr "%qE atribut diabaikan"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid vector type for attribute %qs"
msgstr "tipe vektori tidak valid untuk atribut %qE"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to variables"
msgid "attribute %qs applies to array types only"
msgstr "%qs atribut hanya berlaku ke variabel"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid element type for attribute %qs"
@@ -27649,7 +27709,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " untuk konversi dari %qT ke %qT"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -27957,7 +28017,7 @@ msgstr "konversi dari %qT ke %qT tidak valid"
msgid "invalid conversion from %qT to %qT"
msgstr "konversi dari %qT ke %qT tidak valid"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " inisialisasi argumen %P dari %qD"
@@ -27967,199 +28027,199 @@ msgstr " inisialisasi argumen %P dari %qD"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr "mengubah ke %qT untuk daftar penginisialisasi akan menggunakan konstruktor eksplist %qD"
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
#| msgid " initializing argument %P of %qD"
msgid " initializing argument %P of %q+D"
msgstr " inisialisasi argumen %P dari %qD"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
#| msgid "cannot bind rvalue %qE to %qT"
msgid "cannot bind %qT lvalue to %qT"
msgstr "tidak dapat mengikat rvalue %qE ke %qT"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "tidak dapat mengikat bitfield %qE ke %qT"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "tidak dapat mengikat packed field %qE ke %qT"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "tidak dapat mengikat rvalue %qE ke %qT"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
#| msgid "class %qT will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "class %qT akan dipertimbangkan dekat kosong dalam versi GCC yang akan datang"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
#| msgid "cannot pass objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "tidak dapat melewatkan objek dari tipe bukan POD %q#T melalui %<...%>; panggilan akan dibatalkan pada saat waktu-jalan"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
#| msgid "cannot receive objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "tidak dapat menerima objek dari tipe bukan POD %q#T melalui %<...%>; panggilan akan dibatalkan pada saat waktu-jalan"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "evaluasi rekursi dari argumen baku untuk %q#D"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
#| msgid "the default argument for parameter %d of %qD has not yet been parsed"
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "argumen baku untuk parameter %d dari %qD belum diparse"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "argumen dari fungsi panggilan mungkin menjadi sebuah kandidat untuk sebuah atribut format"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "melewatkan %qT sebagai %<this%> argumen dari %q#D mengabaikan kualifier"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT bukan sebuah dasar yang bisa diakses dari %qT"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD as %s"
msgid "deducing %qT as %qT"
msgstr "deklarasi dari %qD sebagai %s"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
#| msgid " in call to %qD"
msgid " in call to %q+D"
msgstr " dalam panggilan ke %qD"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "tidak dapat menemukan class$ field dalam antar-muka java tipe %qT"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "panggilan ke bukan-fungsi %qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
#| msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "tidak pasangan fungsi untuk panggilan ke %<%T::%s(%A)%#V%>"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "tidak pasangan fungsi untuk panggilan ke %<%T::%s(%A)%#V%>"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "panggilan dari overloaded %<%s(%A)%> adalah ambigu"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "tidak dapat memanggil anggota fungsi %qD tanpa objek"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "melewatkan %qT memilih %qT diatas %qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " dalam panggilan ke %qD"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "memilih %qD diatas %qD"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " untuk konversi dari %qT ke %qT"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " karena urutan konversi untuk argumen lebih baik"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "argumen baku tidak cocok dalam kelebihan beban resolusi"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr " kandidat 1: %q+#F"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr " kandidat 2: %q+#F"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++ mengatakan bahwa ini adalah ambigu, meskipun melalui konversi terburuk untuk yang pertama lebih baik daripada konversi terburuk untuk yang kedua:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "could not convert %qE to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "tidak dapat mengubah %qE ke %qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
#| msgid "invalid initialization of non-const reference of type %qT from a temporary of type %qT"
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "inisialisasi dari referensi bukan const dari tipe %qT dari sebuah tipe sementara %qT tidak valid"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "inisialisasi dari referensi dari tipe %qT dari ekspresi dari tipe %qT tidak valid"
@@ -28373,226 +28433,226 @@ msgstr "field %q+D secara tidak valid mendeklarasikan tipe fungsi"
msgid "field %q+D invalidly declared method type"
msgstr "field %q+D secara tidak valid mendeklrasikan tipe metoda"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "mengabaikan atribut packed karena dari unpacked non-POD field %q+#D"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "field %q+#D dengan nama sama seperti class"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T memiliki anggota data penunjuk"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " tetapi tidak override %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " atau %<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " tetapi tidak override %<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "ofset dari basis kosong %qT mungkin buka ABI komplian dan mungkin berubah di versi GCC yang akan datang"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "class %qT akan dipertimbangkan dekat kosong dalam versi GCC yang akan datang"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "penginisialisasi dispesifikasikan untuk metode %q+D bukan virtual"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function %qD"
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "penggunaan tidak valid dari anggota fungsi %qD bukan statis"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q+T is not literal because:"
msgstr "%q#T bukan sebuah kelas"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "kelas dasar %q#T memiliki desktruktor tidak virtual"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " base class %qT of %q+T is non-literal"
msgstr "kelas dasar %q#T memiliki desktruktor tidak virtual"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
#| msgid "non-static data member %qD has Java class type"
msgid " non-static data member %q+D has non-literal type"
msgstr "anggota data bukan statis %qD memiliki tipe kelas Java"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "referensi bukan-statis %q+#D dalam kelas tanpa sebuah konstruktor"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "anggota const bukan-statis %q+#D dalam kelas tanpa sebuah konstruktor"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "ofset dari basis virtual %qT bukan ABI komplian dan mungkin berubah dalam versi GCC yang akan datang"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "direct base %qT tidak dapat diakses dalam %qT karena adanya ambigu"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "virtual base %qT tidak dapat diakses dalam %qT karena adanya ambigu"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "ukuran yang diberikan ke %qT mungkin bukan ABI komplian dan mungkin berubah dalam versi GCC yang akan datang"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "ofset dari %qD mungkin bukan ABI komplian dan mungkin berubah dalam versi GCC yang akan datang"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "ofset dari %q+D adalah bukan ABI komplian dan mungkin berubah dalam versi GCC yang akan datang"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D berisi kelas kosong yang mungkin menyebabkan kelas dasar untuk ditempatkan di lokasi berbeda dalam versi GCC yang akan datang"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "layout dari kelas turunan dari kelas kosong %qT mungkin berubah dalam versi GCC yang akan datang"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "redefinisi dari %q#T"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T memiliki fungsi maya dan dapat diakses bukan virtual desktruktor"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class %qT does not have any field named %qD"
msgid "type transparent class %qT does not have any fields"
msgstr "kelas %qT tidak memiliki field apapun bernama %qD"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
#| msgid "type %qs has virtual member functions"
msgid "type transparent class %qT has virtual functions"
msgstr "tipe %qs memiliki anggota fungsi virtual"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "mencoba menyelesaikan struct, tetapi ditendang keluar karena error parse sebelumnya"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "bahasa string %<\"%E\"%> tidak dikenal"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "tidak dapat meresolf fungsi overloaded %qD berdasar dari konversi ke tipe %qT"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "tidak cocok mengubah fungsi %qD ke tipe %q#T"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "mengubah fungsi overloaded %qD ke tipe %q#T adalah ambigu"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "mengasumsikan penunjuk ke anggota %qD"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(sebuah penunjuk ke anggota hanya dapat dibentuk dengan %<&%E%>)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "tidak cukup informasi mengenai tipe"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "tidak dapat mengubah %qE dari tipe %qT ke tipe %qT"
@@ -28602,12 +28662,12 @@ msgstr "tidak dapat mengubah %qE dari tipe %qT ke tipe %qT"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "deklarasi dari %q#D"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "perubahan berarti dari %qD dari %q+#D"
@@ -28628,7 +28688,7 @@ msgstr "tidak dapat mengubah dari tipe tidak lengkap %qT ke %qT"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "konversi dari %qE dari %qT ke %qT adalah ambigu"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "array bound is not an integer constant"
msgid "zero as null pointer constant"
@@ -28663,7 +28723,7 @@ msgstr "inisialisasi dari referensi bukan const dari tipe %qT dari sebuah tipe s
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "konversi dari %qT ke %qT mengabaikan kualifikasi"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "casting %qT ke %qT tidak medereferensi penunjuk"
@@ -29104,7 +29164,7 @@ msgstr "deklarasi sebelumnya dari %q+#D"
msgid "declaration of template %q#D"
msgstr "deklarasi dari template %q#D"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "konflik dengan deklarasi sebelumnya %q+#D"
@@ -29156,7 +29216,7 @@ msgstr "deklarasi sebelumnya dari namespace %q+D disini"
msgid "%q+#D previously defined here"
msgstr "%q+#D sebelumnya didefinisikan disini"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously defined here"
msgid "%q+#D previously declared here"
@@ -29285,7 +29345,7 @@ msgstr "thread-local deklarasi dari %q+D mengikuti deklarasi bukan-thread-lokal"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "non-thread-local deklarasi dari %q+D mengikuti deklarasi thread-local"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D"
msgid "redeclaration of %q#D"
@@ -29358,7 +29418,7 @@ msgstr "label bernama wchar_t"
msgid "%qD is not a type"
msgstr "%qD bukan sebuah tipe"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "%qD digunakan tanpa parameter template"
@@ -29494,126 +29554,126 @@ msgstr "%<typedef%> telah diabaikan dalam deklarasi ini"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<register%> dalam file-scope deklarasi kosong"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "attribute ignored in declaration of %q+#T"
msgid "attribute ignored in declaration of %q#T"
msgstr "atribut diabaikan dalam deklarasi dari %q+#T"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, fuzzy, gcc-internal-format
#| msgid "attribute for %q+#T must follow the %qs keyword"
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "atribut untuk %q+#T harus mengikuti kata kunci %qs"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "mengabaikan atribut yang diaplikasikan ke tipe kelas %qT diluar dari definisi"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr "mengabaikan atribut yang diaplikasikan ke tipe dependen %qT tanpa sebuah deklarasi yang berasosiasi"
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD diinisialisasi (lebih baik gunakan decltype)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "deklarasi dari %q#D memiliki %<extern%> dan terinisialisasi"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "definisi dari %q#D ditandai %<dllimport%>"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D bukan sebuah anggota statis dari %q#T"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ tidak mengijinkan %<%T::%D%> untuk didefinisikan sebagai %<%T::%D%>"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "template header tidak diijinkan dalam anggota definisi dari kelas secara eksplisit terspesialisasi"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "duplikasi inisialisasi dari %qD"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, fuzzy, gcc-internal-format
#| msgid "%qE declared %<threadprivate%> after first use"
msgid "%qD declared %<constexpr%> outside its class"
msgstr "%qE dideklarasikan %<threadprivate%> setelah penggunaan pertama"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "deklarasi dari %q#D diluar dari kelas bukan sebuah definisi"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "variabel %q#D memiliki penginisialisasi tetapi tipe tidak lengkap"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "elemen dari array %q#D memiliki tipe tidak lengkap"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "deklarasi dari %q#D tidak memiliki penginisialisasi"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "kumpulan %q#D memiliki tipe tidak lengkap dan tidak dapat didefinisikan"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD dideklarasikan sebagai referensi tetapi tidak terinisialisasi"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr "nama digunakan dalam sebuah gaya GNU diperuntukan penginisialisasi untuk sebuah array"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "bukan trivial designated penginisialisasi tidak didukung"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "nama %qD digunakan dalam sebuah gaya GNU didesign penginisialisasi untuk sebuah array"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "penginisialisasi gagal untuk menentukan ukuran dari %qD"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "ukuran array hilang dalam %qD"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "array berukuran-nol %qD"
@@ -29621,419 +29681,419 @@ msgstr "array berukuran-nol %qD"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t known"
msgid "storage size of %qD isn%'t known"
msgstr "ukuran penyimpanan dari %q+D tidak diketahui"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t constant"
msgid "storage size of %qD isn%'t constant"
msgstr "ukuran penyimpanan dari %q+D bukan konstant"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
#| msgid "sorry: semantics of inline function static data %q+#D are wrong (you'll wind up with multiple copies)"
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "maaf: semantik dari fungsi inline data statis %q+#D salah (anda akan berputar putar dengan beberap salinan)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, fuzzy, gcc-internal-format
#| msgid "%J you can work around this by removing the initializer"
msgid " you can work around this by removing the initializer"
msgstr "%J anda dapat memperbaiki ini dengan menghapus penginisialisasi"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "tidak terinisialisasi const %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
#| msgid "type %qs has a user-defined constructor"
msgid "%q#T has no user-provided default constructor"
msgstr "tipe %qs memiliki sebuah konstruktor yang didefinisikan pengguna"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "tipe tidak valid %qT sebagai penginisialisasi untuk sebuah vektor dari tipe %qT"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "penginisialisasi untuk %qT harus berupa kurung dilingkupi"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "nama %qD digunakan dalam sebuah gaya GNU didesign penginisialisasi untuk sebuah array"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT memiliki anggota data tidak statis bernama %qD"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "terlalu banyak penginisialisasi untuk %qT"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "kurung disekitar penginisialisasi skalar untuk tipe %qT"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "hilang kurung diantara penginisialisasi untuk %qT"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "elemen dari array %q#T memiliki tipe tidak lengkap"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "objek dengan ukuran bervariabel %qD mungkin tidak diinisialisasikan"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "ukuran-variabel compound literals"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "%qD has incomplete type"
msgid "%q#D has incomplete type"
msgstr "%qD memiliki tipe tidak lengkap"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "objek skalar %qD membutuhkan satu elemen dalam penginisialisasi"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "dalam C++98 %qD harus diinisialisasi dengan konstruktor, bukan dengan %<{...}%>"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "array %qD diinisialisasi dengan tanda kurung string literal %qE"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "penginisialisasi tidak valid untuk anggota statis dengan konstruktor"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ISO C++ melarang dalam kelas inisialisasi dari anggota statis bukan const %qD"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(diluar dari kelas inisialisasi dibutuhkan)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "penempatan (tidak terinisialisasi) dalam deklarasi"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "membayangi tipe deklarasi sebelumnya dari %q#D"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot be thread-local because it has non-POD type %qT"
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD tidak dapat thread-local karena ini bukan tipe POD %qT"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr "Java objek %qD tidak dialokasikan dengan %<new%>"
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD adalah thread-lokal dan jadi tidak dapat secara dinamis diinisialisasi"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qD tidak dapat diinisialisasi dengan sebuah ekspresi bukan konstan ketita sedang dideklarasikan"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr "anggota data bukan statis %qD memiliki tipe kelas Java"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "fungsi %q#D telah dinisialisasi seperti sebuah variabel"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of %qD"
msgid "initializer fails to determine size of %qT"
msgstr "penginisialisasi gagal untuk menentukan ukuran dari %qD"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in %qD"
msgid "array size missing in %qT"
msgstr "ukuran array hilang dalam %qD"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array %qD"
msgid "zero-size array %qT"
msgstr "array berukuran-nol %qD"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "desktruktor untuk alien kelas %qT tidak dapat berupa sebuah anggota"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "konstruktor untuk alien kelas %qT tidak dapt berupa sebuah anggota"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD dideklarasikan sebagai sebuah %<virtual%> %s"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD dideklarasikan sebagai sebuah %<inline%> %s"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "%<const%> dan %<volatile%> fungsi penspesifikasi di %qD tidak valid dalam %s deklarasi"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD dideklarasikan sebagai sebuah %<virtual%> %s"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD dideklarasikan sebagai sebuah %<inline%> %s"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "%<const%> dan %<volatile%> fungsi penspesifikasi di %qD tidak valid dalam %s deklarasi"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD dideklarasikan sebagai sebuah %<virtual%> %s"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> type"
msgstr "%qD dideklarasikan sebagai sebuah %<inline%> %s"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "%<const%> dan %<volatile%> fungsi penspesifikasi di %qD tidak valid dalam %s deklarasi"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD dideklarasikan sebagai sebuah %<virtual%> %s"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> field"
msgstr "%qD dideklarasikan sebagai sebuah %<inline%> %s"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "%<const%> dan %<volatile%> fungsi penspesifikasi di %qD tidak valid dalam %s deklarasi"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D dideklarasikan sebagai sebuah friend"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D dideklarasikan dengan spesifikasi eksepsi"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "definisi dari %qD tidak dalam namespace melingkupi %qT"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "anggota fungsi statis %q#D dideklarasikan dengan tipe pengkualifikasi"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "mendifinisikan eksplisit spesialisasi %qD dalam deklarasi friend"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "penggunaan tidak valid dari template-id %qD dalam deklarasi dari primary template"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "argumen baku tidak diijinkan dalam deklarasi dari spesialisasi template friend %qD"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "%<inline%> tidak diijinkan dalam deklarasi dari spesialisasi template friend %qD"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "tidak dapat mendeklarasikan %<::main%> untuk menjadi sebuah template"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "tidak dapat mendeklarasikan %<::main%> untuk menjadi inline"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "tidak dapat mendeklarasikan %<::main%> untuk menjadi statis"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D tidak merefer ke tipe tidak terkualifikasi, jadi ini tidak digunakan untuk linkage"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
#| msgid "previous declaration of %q+#D with %qL linkage"
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "deklarasi sebelumnya dari %q+#D dengan %qL linkage"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "anggota fungsi statis %qD tidak dapat memiliki cv kualifier"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "fungsi bukan-anggota %qD tidak dapat memiliki cv-kualifier"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
#| msgid "%Htemplate with C linkage"
msgid "literal operator with C linkage"
msgstr "%Htemplate dengan C linkage"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "invalid option argument %qs"
msgid "%qD has invalid argument list"
msgstr "pilihan argumen %qs tidak valid"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "%qD must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "%qD harus berupa sebuah anggota fungsi tidak statis"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> harus kembali %<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "definisi dari secara implisit dideklarasikan %qD"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared %qD"
msgid "definition of explicitly-defaulted %q+D"
msgstr "definisi dari secara implisit dideklarasikan %qD"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D sebelumnya didefinisikan disini"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "bukan %q#D anggota fungsi dideklarasikan dalam kelas %qT"
@@ -30042,443 +30102,443 @@ msgstr "bukan %q#D anggota fungsi dideklarasikan dalam kelas %qT"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "tidak valid dalam kelas penginisialisasian dari anggota data statis dari tipe bukan integral %qT"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "tidak valid dalam kelas penginisialisasian dari anggota data statis dari tipe bukan integral %qT"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "tidak valid dalam kelas penginisialisasian dari anggota data statis dari tipe bukan integral %qT"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "tidak valid dalam kelas penginisialisasian dari anggota data statis dari tipe bukan integral %qT"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ melarang dalam kelas inisialisasi dari anggota statis bukan const %qD"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ melarang inisialisasi dari anggota constant %qD dari bukan integral tipe %qT"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "ukuran dari array %qD memiliki tipe bukan integral %qT"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "ukuran dari array memiliki tipe %qT bukan integral"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "ukuran dari array %qD negatif"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "ukuran dari array negatif"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ melarang array berukuran-nol %qD"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ melarang array berukuran-nol"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "ukuran dari array %qD bukan sebuah integral konstan-ekspresi"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "ukuran dari array bukan sebuah integral konstan ekspresi"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ melarang array dengan variabel panjang %qD"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ melarang array dengan variabel panjang"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr "array dengan panjang bervariabel %qD digunakan"
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "overflow dalam dimensi array"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of %<auto%>"
msgstr "deklarasi dari %qs sebagai array dari fungsi"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of voids"
msgid "declaration of %qD as array of void"
msgstr "deklarasi dari %qs sebagai dari voids"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of void"
msgstr "membuat array dari %qT"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of functions"
msgstr "deklarasi dari %qs sebagai array dari fungsi"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of functions"
msgstr "membuat array dari %qT"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of references"
msgstr "deklarasi dari %qs sebagai array dari fungsi"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of references"
msgstr "membuat array dari %qT"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of function members"
msgstr "deklarasi dari %qs sebagai array dari fungsi"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "creating array of function members"
msgstr "deklarasi dari %qs sebagai array dari fungsi"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "deklarasi dari %qD sebagai array multidimensi harus memiliki batasan untuk seluruh dimensi kecuali yang pertama"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "array multidimensi harus memiliki batasan untuk seluruh dimensi kecuali yang pertama"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "spesifikasi tipe kembali untuk konstruktor tidak valid"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "spesifikasi tipe kembali untuk desktruktor tidak valid"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "tipe kembali yang dispesifikasikan untuk %<operator %T%>"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "variabel tidak bernama atau field dideklarasikan void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "variabel atau field dideklarasikan void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "penggunaan tidak valid dari nama kualifikasi %<::%D%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "penggunaan tidak valid dari nama kualifikasi %<%T::%D%>"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "penggunaan tidak valid dari nama kualifikasi %<%D::%D%>"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%q#T bukan sebuah kelas atau ruang nama"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "tipe %qT tidak diturunkan dari tipe %qT"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "deklarasi dari %qD sebagai bukan fungsi"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "deklarasi dari %qD sebagai bukan anggota"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "id pendeklarasi hilang; menggunaka kata reserved %qD"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "definisi fungsi tidak mendeklarasikan parameter"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD as %s"
msgid "declaration of %qD as %<typedef%>"
msgstr "deklarasi dari %qD sebagai %s"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "deklarasi dari %q+D membayangi sebuah parameter"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
#| msgid "%Ha template-id may not appear in a using-declaration"
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%Hsebuah template-id mungkin tidak muncul dalam sebuah using deklarasi"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "dua atau lebih tipe data dalam deklarasi dari %qs"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "penspesifikasi konflik dalam deklarasi dari %qs"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ melarang deklarasi dari %qs dengan tidak ada tipe"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_saveregs not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_saveregs tidak didukung oleh target ini"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ 1998 does not support %<long long%>"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ 1998 tidak mendukung %<long long%>"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%<signed%> atau %<unsigned%> tidak valid untuk %qs"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%<signed%> dan %<unsigned%> dispesifikasikan bersama untuk %qs"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long%> tidak valid untuk %qs"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "%<long%> tidak valid untuk %qs"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "%<short%> tidak valid untuk %qs"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%> atau %<short%> tidak valid untuk %qs"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
#| msgid "%<long%> or %<short%> invalid for %qs"
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%> atau %<short%> tidak valid untuk %qs"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "%<long%> atau %<short%> dispesifikasikan dengan char untuk %qs"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%<long%> dan %<short%> dispesifikasikan bersama untuk %qs"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<short%> atau %<long%> tidak valid untuk %qs"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "long, short, signed, atau unsigned digunakan secara tidak valid untuk %qs"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "kompleks tidak valid untuk %qs"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "kualifier tidak diijinkan dalam deklarasi dari %<operator %T%>"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "anggota %qD tidak dapat dideklarasikan baik virtual dan statis"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> bukan sebuah deklarator yang valid"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "type deklarasi tidak valid dalam parameter deklarasi"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter %qs"
msgid "storage class specified for template parameter %qs"
msgstr "class penyimpanan dispesifikasikan untuk parameter %qs"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "penspesifikasi kelas penyimpanan dalam parameter deklarasi"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
#| msgid "parameter declared %<auto%>"
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "parameter dideklarasikan %<auto%>"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "%<virtual%> diluar deklarasi kelas"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "multiple storage kelas dalam deklarasi dari %qs"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "kelas penyimpanan dispesifikasikan untuk %qs"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "class penyimpanan dispesifikasikan untuk parameter %qs"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "fungsi nested %qs dideklarasikan %<extern%>"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "top-level deklarasi dari %qs menspesifikasikan %<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "lingkup-fungsi %qs secara implisit auto dan dideklarasikan %<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "spesifikasi kelas penyimpanan tidak valid dalam deklarasi fungsi friend"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs dideklarasikan sebagai fungsi yang mengembalikan sebuah fungsi"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs dideklarasikan sebagai fungsi yang mengembalikan sebuah array"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, fuzzy, gcc-internal-format
#| msgid "%qs function uses %<auto%> type specifier without late return type"
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr "%qs fungsi menggunakan penspesifikasi tipe %<auto%> tanpa tipe kembali late"
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, fuzzy, gcc-internal-format
#| msgid "%qs function with late return type has %qT as its type rather than plain %<auto%>"
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
@@ -30486,490 +30546,490 @@ msgstr "%qs fungsi dengan tipe kembali late memiliki %qT sebagai tipenya daripad
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, fuzzy, gcc-internal-format
#| msgid "%s only available with -std=c++0x or -std=gnu++0x"
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr "%s hanya tersedia dengan -std=c++0x atau -std=gnu++0x"
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, fuzzy, gcc-internal-format
#| msgid "%qs function with late return type not declared with %<auto%> type specifier"
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr "%qs fungsi dengan tipe kembali late tidak dideklarasikan dengan penspesifikasi tipe %<auto%>"
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "desktruktor tidak dapat berupa anggota statis fungsi"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, fuzzy, gcc-internal-format
#| msgid "destructor cannot be static member function"
msgid "constructor cannot be static member function"
msgstr "desktruktor tidak dapat berupa anggota statis fungsi"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "desktruktor mungkin berupa cv-kualified"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
#| msgid "destructors may not be cv-qualified"
msgid "constructors may not be cv-qualified"
msgstr "desktruktor mungkin berupa cv-kualified"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "konstruktor tidak dapat dideklarasikan virtual"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function %qs"
msgid "can%'t initialize friend function %qs"
msgstr "tidak dapat menginisialisasi fungsi friend %qs"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "fungsi virtual tidak dapat menjadi friend"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "deklarasi friend tidak dalam definisi kelas"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
#| msgid "can't define friend function %qs in a local class definition"
msgid "can%'t define friend function %qs in a local class definition"
msgstr "tidak dapat mendefinisikan fungsi friend %qs dalam sebuah definisi lokal kelas"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "destruktor mungkin tidak memiliki parameter"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "tidak dapat mendeklarasikan penunjuk ke %q#T"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "tidak dapat mendeklarasikan referensi ke %q#T"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "tidak dapat mendeklarasikan penunjuk ke %q#T anggota"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
#| msgid "cannot declare %s to qualified function type %qT"
msgid "cannot declare reference to qualified function type %qT"
msgstr "tidak dapat mendeklarasikan %s untuk fungsi yang dikualifikasikan dengan tipe %qT"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
#| msgid "cannot declare %s to qualified function type %qT"
msgid "cannot declare pointer to qualified function type %qT"
msgstr "tidak dapat mendeklarasikan %s untuk fungsi yang dikualifikasikan dengan tipe %qT"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr "tidak dapat mendeklarasikan referensi ke %q#T, yang bukan sebuah typedef atau sebuah argumen tipe template"
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, fuzzy, gcc-internal-format
#| msgid "both %<_Sat%> and %<complex%> in declaration specifiers"
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr "baik %<_Sat%> dan %<complex%> dalam penspesifikasi deklarasi"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "template-id %qD digunakan sebagai sebuah pendeklarasi"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "anggota fungsi secara implisit friends dari kelasnya"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "ekstra kualifikasi %<%T::%> di anggota %qs"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "tidak dapat mendefinisikan anggota fungsi %<%T::%s%> dalam %<%T%>"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
#| msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "tidak dapat mendefinisikan anggota fungsi %<%T::%s%> dalam %<%T%>"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "tidak dapat mendeklarasikan anggota %<%T::%s%> dalam %qT"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "bukan parameter %qs tidak dapat menjadi parameter pack"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "ukuran dari array %qs adalah terlalu besar"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "anggota member tidak boleh memiliki tipe variabel termodifikasi %qT"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "parameter mungkin tidak memiliki tipe variabel termodifikasi %qT"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "hanya deklarasi dari konstruktor yang dapan berupa %<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "bukan-anggota %qs tidak dapat dideklarasikan %<mutable%>"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "anggota bukan-objek %qs tidak dapat dideklarasikan %<mutable%>"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "fungsi %qs tidak dapat dideklarasikan %<mutable%>"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "statis %qs tidak dapat dideklarasikan %<mutable%>"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "const %qs tidak dapat dideklarasikan %<mutable%>"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
#| msgid "function %qs cannot be declared %<mutable%>"
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "fungsi %qs tidak dapat dideklarasikan %<mutable%>"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
#| msgid "parameter declared %<auto%>"
msgid "typedef declared %<auto%>"
msgstr "parameter dideklarasikan %<auto%>"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, fuzzy, gcc-internal-format
#| msgid "%Jtypedef name may not be a nested-name-specifier"
msgid "typedef name may not be a nested-name-specifier"
msgstr "%J typedef nama mungkin berupa sebuah nested-name-specifier"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ melarang tipe nested %qD dengan nama sama seperti kelas yang melingkupi"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "tipe fungsi yang berkualifikasi tidak digunakan untuk mendeklarasikan anggota statis fungsi"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "tipe fungsi yang berkualifikasi tidak dapat digunakan untuk mendeklarasi fungsi bebas"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "tipe kualifier yang dispesifikan untuk deklarasi kelas friend"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "%<inline%> dispesifikan untuk deklarasi kelas friend"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "parameter template tidak dapat berupa friends"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "deklarasi friend membutuhkan kunci kelas, i.e. %<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "deklarasi friend membutuhkan class-key, i.e. %<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "mencoba untuk membuat kelas %qT sebuah friend dari lingkup global"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "kualifier tidak valid di tipe fungsi bukan anggota"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "deklarasi abstrak %qT digunakan sebagai deklarasi"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "tidak dapat menggunakan %<::%> dalam parameter deklarasi"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "parameter dideklarasikan %<auto%>"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
#| msgid "parameter declared %<auto%>"
msgid "non-static data member declared %<auto%>"
msgstr "parameter dideklarasikan %<auto%>"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "penggunaan tidak valid dari %<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
#| msgid "declaration of C function %q#D conflicts with"
msgid "declaration of function %qD in invalid context"
msgstr "deklarasi dari C fungsi %q#D konflik dengan"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "fungsi %qD dideklarasikan virtual didalam sebuah union"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD tidak dapat dideklarasikan virtual, karena itu selalu statis"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "diduga nama yang dikualifikasikan dalam deklarasi friend untuk destruktor %qD"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "deklarasi dari %qD sebagai anggota dari %qT"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
#| msgid "destructor cannot be static member function"
msgid "a destructor cannot be %<constexpr%>"
msgstr "desktruktor tidak dapat berupa anggota statis fungsi"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "diduga kualifikasi nama dalam deklarasi friend untuk konstruktor %qD"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "field %qD memiliki tipe tidak lengkap"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "nama %qT memiliki tipe tidak lengkap"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " dalam instantiation dari template %qT"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qE bukan fungsi atau anggota fungsi; tidak dapat dideklarasikan sebagai friend"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
#| msgid "non-static data member %qD has Java class type"
msgid "constexpr static data member %qD must have an initializer"
msgstr "anggota data bukan statis %qD memiliki tipe kelas Java"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
#| msgid "static member %qD declared %<register%>"
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "anggota statis %qD dideklarasikan %<register%>"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "kelas penyimpanan %<auto%> tidak valid untuk fungsi %qs"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "kelas penyimpanan %<register%> tidak valid untuk fungsi %qs"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "kelas penyimpanan %<__thread%> tidak valid untuk fungsi %qs"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
#| msgid "%Han asm-specification is not allowed on a function-definition"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "%Hsebuah spesifikasi asm tidak diijinkan dalam sebuah definisi fungsi"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "%<static%> dispesifikasikan tidak valid untuk fungsi %qs dideklarasikan diluar lingkup global"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "%<inline%> penspesifikasi tidak valid untuk fungsi %qs dideklarasikan diluar dari lingkup global"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "virtual bukan kelas fungsi %qs"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "%qs didefinisikan dalam sebuah lingkup bukan kelas"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
#| msgid "%qs defined in a non-class scope"
msgid "%qs declared in a non-class scope"
msgstr "%qs didefinisikan dalam sebuah lingkup bukan kelas"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "tidak dapat mendeklarasikan anggota fungsi %qD untuk memiliki linkage statis"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "tidak dapat mendeklarasikan fungsi statis didalam fungsi lainnya"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "%<static%> mungkin tidak digunakan ketika mendefinisikan (terbalik untuk deklarasi) sebuah anggota data statis"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "anggota statis %qD dideklarasikan %<register%>"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "tidak dapat secara eksplisit mendeklarasikan anggota %q#D untuk memiliki extern linkage"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D outside of class is not definition"
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "deklarasi dari %q#D diluar dari kelas bukan sebuah definisi"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs diinisialisasi dan dideklarasi %<extern%>"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs keduanya memiliki %<extern> dan penginisialisasi"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "argumen baku untuk %q#D memiliki tipe %qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "argumen baku untuk parameter dari tipe %qT memiliki tipe %qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
#| msgid "default argument %qE uses local variable %qD"
msgid "default argument %qE uses %qD"
msgstr "argumen baku %qE menggunakan variabel lokal %qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "argumen baku %qE menggunakan variabel lokal %qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "parameter %qD memiliki tipe kelas Java"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "parameter %qD secara tidak valid dideklarasikan tipe metode"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, fuzzy, gcc-internal-format
#| msgid "parameter %qD includes %s to array of unknown bound %qT"
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "parameter %qD includes %s ke array dari ikatan tidak dikenal %qT"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, fuzzy, gcc-internal-format
#| msgid "parameter %qD includes %s to array of unknown bound %qT"
msgid "parameter %qD includes reference to array of unknown bound %qT"
@@ -30990,176 +31050,176 @@ msgstr "parameter %qD includes %s ke array dari ikatan tidak dikenal %qT"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "konstruktor tidak valid; anda mungkin bermaksud %<%T (const %T&)%>"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qD mungkin tidak dideklarasikan dalam sebuah namespace"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD tidak boleh dideklarasikan sebagai statis"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD harus berupa sebuah anggota fungsi tidak statis"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD harus baik sebuah anggota fungsi tidak statis atau bukan anggota fungsi"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD harus memiliki sebuah argumen dari kelas atau tipe enumerasi"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "konversi ke %s%s tidak akan pernah menggunakan sebuah tipe operator konversi"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to void will never use a type conversion operator"
msgstr "konversi ke %s%s tidak akan pernah menggunakan sebuah tipe operator konversi"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "konversi ke %s%s tidak akan pernah menggunakan sebuah tipe operator konversi"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to the same type will never use a type conversion operator"
msgstr "konversi ke %s%s tidak akan pernah menggunakan sebuah tipe operator konversi"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "konversi ke %s%s tidak akan pernah menggunakan sebuah tipe operator konversi"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a base class will never use a type conversion operator"
msgstr "konversi ke %s%s tidak akan pernah menggunakan sebuah tipe operator konversi"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ melarang overloading operator ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qD tidak boleh memiliki argumen dengan jumlah bervariabel"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "postfix %qD harus mengambil %<int%> sebagai argumennya"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "postfix %qD harus mengambil %<int%> sebagai argumen keduanya"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD harus mengambil baik nol atau satu argumen"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD harus mengambil baik satu atau dua argumen"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "prefix %qD seharusnya mengembalikan %qT"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "postfix %qD seharusnya mengembalikan %qT"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD harus mengambil %<void%>"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD harus mengambil secara tepat satu argumen"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD harus mengambil secara tepat dua argumen"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "definisi-pengguna %qD selalu mengevaluasikan kedua argumen"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD seharusnya kembali dengan nilai"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD tidak dapat memiliki argumen baku"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "menggunakan parameter tipe template %qT setelah %qs"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization %qD for %q+D"
msgid "using alias template specialization %qT after %qs"
msgstr "spesialisasi template ambigu %qD untuk %q+D"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "menggunakan typedef-name %qD setelah %qs"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
#| msgid "%q+D has a previous declaration here"
msgid "%qD has a previous declaration here"
msgstr "%q+D telah dideklarasikan sebelumnya disini"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "%qT mereferensikan sebagai %qs"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T telah dideklarasikan sebelumnya disini"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT direferensikan sebagai enum"
@@ -31171,89 +31231,89 @@ msgstr "%qT direferensikan sebagai enum"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "argumen template dibutuhkan untuk %<%s %T%>"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD memiliki nama sama seperti kelas yang telah dideklarasikan"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "referensi ke %qD adalah ambigu"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "penggunaan dari enum %q#D tanpa deklarasi sebelumnya"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "redeklarasi dari %qT sebagai bukan-template"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "deklarasi sebelumnya %q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "union turunan %qT tidak valid"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "Kelas Java %qT tidak dapat memiliki multiple bases"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "Kelas Java %qT tidak dapat memiliki bases virtual"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "tipe base %qT gagal untuk menjadi sebuah struct atau tipe kelas"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "tipe rekursif %qT tidak terdefinisi"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "duplikasi tipe dasar %qT tidak valid"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
#| msgid "%Jprevious definition here"
msgid "previous definition here"
msgstr "%J definisi sebelumnya disini"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr "tipe yang digaris bawahi %<%T%> dari %<%T%> harus berupa sebuah tipe integral"
@@ -31262,74 +31322,74 @@ msgstr "tipe yang digaris bawahi %<%T%> dari %<%T%> harus berupa sebuah tipe int
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "tidak ada tipe integral yang dapat merepresentasikan seluruh dari nilai enumerasi untuk %qT"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "nilai enumerasi untuk %qD bukan sebuah konstanta integer"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
#| msgid "enumerator value %E is too large for underlying type %<%T%>"
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "nilai pengenumerasi untuk %E terlalu besar untuk tipe yang digaris bawahi %<%T%>"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "overflow dalam nilai enumerasi di %qD"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "nilai pengenumerasi untuk %E terlalu besar untuk tipe yang digaris bawahi %<%T%>"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "tipe kembali %q#T tidak lengkap"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "tipe kembali memiliki tipe kelas Java %q#T"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> seharusnya mengembalikan referensi ke %<*this%>"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "tidak deklarasi sebelumnya untuk %q+D"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "deklarasi fungsi tidak valid"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "parameter %qD dideklarasikan void"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label %q+D defined but not used"
msgid "parameter %q+D set but not used"
msgstr "label %q+D didefinisikan tetapi tidak digunakan"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "deklarasi anggota fungsi tidak valid"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD telah didefinisikan dalam kelas %qT"
@@ -31369,7 +31429,7 @@ msgstr "tidak dapat menghapus sebuah fungsi. Hanya penunjuk-ke-objek yang valid
msgid "deleting %qT is undefined"
msgstr "menghapus %qT tidak terdefinisi"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "template deklarasi dari %q#D"
@@ -31651,7 +31711,7 @@ msgstr "%Htipe %qT tidak lengkap digunakan dalam nama penspesifikasi nested"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "%Hreferensi ke %<%T::%D%> adalah ambigu"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD bukan sebuah anggota dari %qT"
@@ -31976,7 +32036,7 @@ msgstr "tipe %qT bukan sebuah dasar langsung dari %qT"
msgid "bad array initializer"
msgstr "array penginisialisasi buruk"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%qT bukan sebuah tipe kelas"
@@ -32065,69 +32125,69 @@ msgstr "bukan ukuran konstanta array dalam new, tidak dapat memverifikasi panjan
msgid "parenthesized initializer in array new"
msgstr "atribut setelah tanda kurung penginisialisasi diabaikan"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "ukuran dalam array baru harus memiliki tipe integral"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new tidak dapat diaplikasikan untuk mereferensikan sebuah tipe"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new tidak dapat diaplikasikan ke sebuah fungsi tipe"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "panggilan ke konstruktor Java, ketika %<jclass%> tidak terdefinisi"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
#| msgid "can't find %<class$%> in %qT"
msgid "can%'t find %<class$%> in %qT"
msgstr "tidak dapat menemukan %<class$%> dalam %qT"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "penginisialisasi berakhir secara prematur"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "tidak dapat menginisialisasi array multidimensi dengan penginisialisasi"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "kemungkinan masalah terdeteksi dalam penggunaan dari operator delete:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, fuzzy, gcc-internal-format
#| msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined."
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "bukan destruktor ataupu class-specific operator delete yang akan dipanggil, meskipun mereka dideklarasikan ketika kelas didefinisikan."
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "ukuran array tidak diketahui dalam delete"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "tipe dari vektor delete bukan penunjuk ataupun tipe array"
@@ -32187,43 +32247,43 @@ msgstr "tidak ada argumen ke %qD yang tergantung di sebuah parameter template, j
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(jika anda menggunakan %<-fpermissive%>, G++ akan menerima kode anda, tetapi mengijinkan penggunaan dari sebuah nama tidak dideklarasikan sudah ditinggalkan)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr "mangling typeof, lebih baik gunakan decltype"
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, fuzzy, gcc-internal-format
#| msgid "mangling unknown fixed point type"
msgid "mangling __underlying_type"
msgstr "mangling tipe fixed point tidak diketahui"
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr "mangling tipe fixed point tidak diketahui"
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr "mangling %C"
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "diabaikan operan tengah ke %<?:%> operan tidak dapat mangled"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "nama mangled dari %qD tidak akan berubah dalam versi yang akan datang dari GCC"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -32315,63 +32375,63 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
#| msgid "repeated using declaration %q+D"
msgid "defaulted declaration %q+D"
msgstr "diulang menggunakan deklarasi %q+D"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
#| msgid "array does not match the region tree"
msgid "does not match expected signature %qD"
msgstr "array tidak cocok dengan daerah pohon"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot be defaulted"
msgid "a template cannot be defaulted"
msgstr "%qD tidak dapat dibakukan"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "%qD tidak dapat dibakukan"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
#| msgid "%Hfile ends in default argument"
msgid "defaulted function %q+D with default argument"
msgstr "%Hberkas berakhir dalam argumen baku"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "vtable layout untuk kelas %qT mungkin bukan ABI kompliat mungkin berubah dalam versi yang akan datang dari GCC karena implisit destruktor maya"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "%q#D conflicts with previous using declaration %q#D"
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D konflik dengan deklarasi sebelumnya menggunakan %q#D"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+D"
msgid "previous declaration %q+#D"
msgstr "deklarasi sebelumnya %q+D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "redeklarasi dari %<wchar_t%> sebagai %qT"
@@ -32382,268 +32442,268 @@ msgstr "redeklarasi dari %<wchar_t%> sebagai %qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "redeklarasi tidak valid dari %q+D"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "sebagai %qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "deklarasi dari %q#D dengan sambungan bahasa C"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr "karena perbedaan eksepsi spesifikasi"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "tipe tidak cocok dengan deklarasi eksternal sebelumnya dari %q#D"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "deklarasi eksternal sebelumnya dari %q+#D"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
#| msgid "extern declaration of %q#D doesn't match"
msgid "extern declaration of %q#D doesn%'t match"
msgstr "deklarasi extern dari %q#D tidak cocok"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "global deklarasi %q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "deklarasi dari %q#D membayangi sebuah parameter"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "deklarasi dari %q+D membayangi sebuah parameter"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "deklarasi dari %qD membayangi sebuah lokal sebelumnya"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "deklarasi dari %qD membayangi sebuah anggota dari 'this'"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "deklarasi dari %qD membayangi sebuah deklarasi global"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "pencarian nama dari %qD berubah"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " pasangkan ini %q+D dibawah aturan ISO baku"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " pasangkan ini %q+D dibawah aturan lama"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "pencarian nama dari %qD berubah untuk ISO baru %<for%> scoping"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " tidak dapat menggunakan obsolete binding di %q+D karena ini memiliki sebuah desktruktor"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " menggunakan obsolete binding di %q+D"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(jika anda menggunakan %<-fpermissive%> G++ akan menerima kode anda)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D menyembunyikan konstruktor untuk %q#T"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D konflik dengan deklarasi sebelumnya menggunakan %q#D"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "deklarasi sebelumnya bukan fungsi %q+#D"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "konflik dengan deklarasi fungsi %q#D"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT bukan sebuah namespace"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "sebuah using-declaration tidak dapat menspesifikasikan sebuah template-id. Coba %<using %D%>"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "namespace %qD tidak diijinkan dalam using-declaration"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "%qD tidak dideklarasikan"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD telah dideklarasikan dalam lingkup ini"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "using-declaration untuk bukan-anggota di class scope"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> names desktruktor"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%> names konstruktor"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> names konstruktor dalam %qT"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "tidak ada anggota yang cocok %<%T::%D%> dalam %q#T"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "deklarasi dari %qD bukan dalam sebuah lingkup namespace %qD"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "eksplisit kualifikasi dalam deklarasi dari %qD"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD seharusnya telah dideklarasikan didalam %qD"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "%qD atribut membutuhkan sebuah argumen NTBS tunggal"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr "%qD atribut tidak berarti karena anggota dari anonymous namespace memperoleh simbol lokal"
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "atribut %qD direktif diabaikan"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "namespace alias %qD tidak diijinkan disini, diasumsikan %qD"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "strong using hanya berarti di lingkup namespace"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "namespace %qD sekarang tidak melingkupi secara kuat namespace %qD yang digunakan"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, fuzzy, gcc-internal-format
#| msgid " %q+#D"
msgid " %qE"
msgstr " %q+#D"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr "argumen tergantung pencarian menemukan %q+D"
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX memasuki pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX meninggalkan pop_everything ()\n"
@@ -32772,7 +32832,7 @@ msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(mungkin sebuah semikolom hilang setelah definisi dari %qT)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT mungkin bukan sebuah template"
@@ -32795,7 +32855,7 @@ msgstr "%Htemplate-id tidak valid"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "%s tidak dapat muncul dalam sebuah konstanta ekspresi"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr "sebuah cast ke sebuah tipe selain dari sebuah integral atau tipe enumerasi tidak dapat muncul dalam sebuah ekspresi konstan"
@@ -32962,139 +33022,139 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "Argumen dengan nilai di %L tidak diperbolehkan dalam konteks ini"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find numeric literal operator %qD"
msgstr "tidak dapat menemukan sebuah register untuk spill dalam kelas %qs"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find string literal operator %qD"
msgstr "tidak dapat menemukan sebuah register untuk spill dalam kelas %qs"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "deklarasi kosong"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
#| msgid "%Hfixed-point types not supported in C++"
msgid "fixed-point types not supported in C++"
msgstr "%Htipe titik tetap tidak didukung dalam C++"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ melarang braced-groups didalam ekspresi"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
#| msgid "%Hstatement-expressions are not allowed outside functions nor in template-argument lists"
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "%Hpernyataan ekspresi tidak diijinkan diluar fungsi atau didalam daftar template argumen"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected primary-expression"
msgstr "diduga ekspresi"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, fuzzy, gcc-internal-format
#| msgid "%H%<this%> may not be used in this context"
msgid "%<this%> may not be used in this context"
msgstr "%H%<this%> mungkin tidak digunakan dalam konteks ini"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
#| msgid "Objective-C declarations may only appear in global scope"
msgid "a template declaration cannot appear at block scope"
msgstr "deklarasi Objective-C mungkin hanya muncul dalam lingkup global"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, fuzzy, gcc-internal-format
#| msgid "%Hlocal variable %qD may not appear in this context"
msgid "local variable %qD may not appear in this context"
msgstr "%Hvariabel lokal %qD mungkin tidak muncul dalam konteks ini"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected id-expression"
msgstr "diduga ekspresi"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, fuzzy, gcc-internal-format
#| msgid "%Hscope %qT before %<~%> is not a class-name"
msgid "scope %qT before %<~%> is not a class-name"
msgstr "%Hlingkup %qT sebelum %<~%> bukan sebuah class-name"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
#| msgid "%Hdeclaration of %<~%T%> as member of %qT"
msgid "declaration of %<~%T%> as member of %qT"
msgstr "%Hdeklarasi dari %<~%T%> sebagai anggota dari %qT"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, fuzzy, gcc-internal-format
#| msgid "%Htypedef-name %qD used as destructor declarator"
msgid "typedef-name %qD used as destructor declarator"
msgstr "%Htypedef-nama %qD digunakan sebagai desktruktor deklarator"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
#| msgid "expected specifier-qualifier-list"
msgid "expected unqualified-id"
msgstr "diduga specifier-qualifier-list"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
#| msgid "%qT resolves to %qT, which is not an enumeration type"
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "%qT meresolf ke %qT, yang bukan sebuah tipe enumerasi"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qD bukan sebuah template"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected nested-name-specifier"
msgstr "diduga penspesifikasi deklarasi"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in casts"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in a %<typeid%> expression"
@@ -33102,255 +33162,255 @@ msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ melarang compound literals"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, fuzzy, gcc-internal-format
#| msgid "%H%qE does not have class type"
msgid "%qE does not have class type"
msgstr "%H%qE tidak memiliki tipe kelas"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "penggunaan tidak valid dari %qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "%<%D::%D%> is not a member of %qT"
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%> bukan sebuah anggota dari %qT"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ tidak mengijinkan designated penginisialisasi"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in a new-expression"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, fuzzy, gcc-internal-format
#| msgid "%Harray bound forbidden after parenthesized type-id"
msgid "array bound forbidden after parenthesized type-id"
msgstr "%Harray bound dilarang setelah parenthesized tipe id"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "mencoba menghapus tanda kurung disekitar tipe-id"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in a new-type-id"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, fuzzy, gcc-internal-format
#| msgid "%Hexpression in new-declarator must have integral or enumeration type"
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "%Hekspresi dalam pendeklarasi new harus memiliki integral atau tipe enumerasi"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "penggunaan dari gaya-lama cast"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, fuzzy, gcc-internal-format
#| msgid "%H%<>>%> operator will be treated as two right angle brackets in C++0x"
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr "%H%<>>%> operator akan diperlakukan sebagai dua sudut brackets dalam C++0x"
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "disarankan tanda kurung disekeliling ekspresi %<>>%>"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ tidak mengijinkan designated penginisialisasi"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of capture-list"
msgstr "Tidak terduga akhir dari modul"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ tidak mengijinkan designated penginisialisasi"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "peningkatan dari variabel baca-saja %qD"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%q+#D declared here"
msgstr "%q+D dideklarasikan disini"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
#| msgid "default argument given for parameter %d of %q#D"
msgid "default argument specified for lambda parameter"
msgstr "argumen baku diberikan untuk parameter %d dari %q#D"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected labeled-statement"
msgstr "diduga pernyataan"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, fuzzy, gcc-internal-format
#| msgid "%Hcase label %qE not within a switch statement"
msgid "case label %qE not within a switch statement"
msgstr "%Hlabel case %qE tidak dalam sebuah pernyataan switch"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> names constructor in %qT"
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> names konstruktor dalam %qT"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "Discover pure and const functions"
msgid "compound-statement in constexpr function"
msgstr "Temukan fungsi pure dan const"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected selection-statement"
msgstr "diduga deklarasi atau pernyataan"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in conditions"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "ekspresi pernyataan memiliki tipe tidak lengkap"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected iteration-statement"
msgstr "diduga deklarasi atau pernyataan"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, fuzzy, gcc-internal-format
#| msgid "%<for%> loop initial declarations are only allowed in C99 mode"
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "%<for%> deklarasi inisial loop hanya diijinkan dalam mode C99"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ melarang gotos yang sudah dihitung"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected jump-statement"
msgstr "diduga pernyataan"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "kelebihan %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, fuzzy, gcc-internal-format
#| msgid "%H%<__label__%> not at the beginning of a block"
msgid "%<__label__%> not at the beginning of a block"
msgstr "%H%<__label__%> tidak berada diawal dari sebuah blok"
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, fuzzy, gcc-internal-format
#| msgid "%Hmixing declarations and function-definitions is forbidden"
msgid "mixing declarations and function-definitions is forbidden"
msgstr "%Hpencampuran deklarasi dan definisi fungsi dilarang"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, fuzzy, gcc-internal-format
#| msgid "%H%<friend%> used outside of class"
msgid "%<friend%> used outside of class"
@@ -33358,411 +33418,411 @@ msgstr "%H%<friend%> digunakan diluar dari kelas"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, fuzzy, gcc-internal-format
#| msgid "%H%<auto%> will change meaning in C++0x; please remove it"
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr "%H%<auto%> akan mengubah arti dalam C++0x; mohon hapus itu"
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
#| msgid "%Hpure-specifier on function-definition"
msgid "decl-specifier invalid in condition"
msgstr "%Hpenspesifikasi pure di definisi fungsi"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, fuzzy, gcc-internal-format
#| msgid "%Hclass definition may not be declared a friend"
msgid "class definition may not be declared a friend"
msgstr "%Hdefinisi kelas mungkin tidka dideklarasikan sebagai friend"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, fuzzy, gcc-internal-format
#| msgid "%Htemplates may not be %<virtual%>"
msgid "templates may not be %<virtual%>"
msgstr "%Htemplate mungkin bukan %<virtual%>"
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid linkage-specification"
msgstr "spesifikasi kelas dasar tidak valid"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in %<decltype%> expressions"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "penggunaan tidak valid dari %<auto%> dalam operator konversi"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "%Honly constructors take base initializers"
msgid "only constructors take member initializers"
msgstr "%Hhanya konstruktor yang mengambil penginisialisasi dasar"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
#| msgid "%Hcannot expand initializer for member %<%D%>"
msgid "cannot expand initializer for member %<%D%>"
msgstr "%Htidak dapat mengekspand penginisialisasi untuk anggota %<%D%>"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "deklarasi statis dari %q+D mengikuti deklarasi bukan statis"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "anachronistic gaya-lama kelas dasar penginisialisasi"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, fuzzy, gcc-internal-format
#| msgid "%Hkeyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "%Hkata kunci %<typename%> tidak diijinkan dalam konteks ini (sebuah anggota terkualifikasi secara implisit adalah sebuah tipe)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, fuzzy, gcc-internal-format
#| msgid "expected a string after %<#pragma message%>"
msgid "expected empty string after %<operator%> keyword"
msgstr "diduga sebuah string setelah %<#pragma message%>"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected suffix identifier"
msgstr "diduga pengidentifikasi"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "operan tidak terduga"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "kata kunci %<export%> tidak terimplementasi, dan akan diabaikan"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
#| msgid "%Htemplate parameter pack %qD cannot have a default argument"
msgid "template parameter pack %qD cannot have a default argument"
msgstr "%Htemplate parameter pack %qD tidak dapat memiliki sebuah argumen baku"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
#| msgid "%Htemplate parameter pack cannot have a default argument"
msgid "template parameter pack cannot have a default argument"
msgstr "%Htemplate parameter pack tidak dapat memiliki sebuah argumen baku"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
#| msgid "%Htemplate parameter packs cannot have default arguments"
msgid "template parameter packs cannot have default arguments"
msgstr "%Htemplate parameter pack tidak dapat memiliki argumen baku"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-id"
msgstr "diduga pernyataan"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<<%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%<<::%> tidak dapat berawal sebuah daftar template argumen"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> adalah sebuah penyebutan alternatif untuk %<[%>. Masukan spasi diantara %<<%> dan %<::%>"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, fuzzy, gcc-internal-format
#| msgid "%Hparse error in template argument list"
msgid "parse error in template argument list"
msgstr "%Hparse error dalam daftar argumen template"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-name"
msgstr "diduga pernyataan"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, fuzzy, gcc-internal-format
#| msgid "%Hnon-template %qD used as template"
msgid "non-template %qD used as template"
msgstr "%Hbukan-template %qD digunakan sebagai template"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "gunakan %<%T::template %D%> untuk mengindikasikan bahwa ini adalah template"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, fuzzy, gcc-internal-format
#| msgid "%Hexpected parameter pack before %<...%>"
msgid "expected parameter pack before %<...%>"
msgstr "%Hdiduga parameter pack sebelum %<...%>"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-argument"
msgstr "diduga pernyataan"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid non-type template argument"
msgstr "tipe argumen tidak valid"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "eksplisit instantiation dari tipe bukan template %qT"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "eksplisit instantiation dari tipe bukan template %qT"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, fuzzy, gcc-internal-format
#| msgid "%Htemplate specialization with C linkage"
msgid "template specialization with C linkage"
msgstr "%Hspesialisasi template dengan C linkage"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected type specifier"
msgstr "diduga penspesifikasi deklarasi"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "expected template-id for type"
msgstr "Diduga tipe ekspresi"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected type-name"
msgstr "Diduga nama"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "deklarasi %qD tidak mendeklarasikan apapun"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "atribut diabaikan di tipe uninstantiasi"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "atribut diabaikan di template instantiation"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr "atribut diabaikan di elaborated type penspesifikasi yang tidak memforward sebuah deklarasi"
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%qD is an enumeration template"
msgstr "%qD bukan sebuah template fungsi"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "%H%qD is not a namespace-name"
msgid "%qD is not an enumerator-name"
msgstr "%H%qD bukan sebuah nama namespace"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<;%> or %<{%>"
msgstr "diduga %<,%> atau %<,%>"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
#| msgid "Enable automatic template instantiation"
msgid "cannot add an enumerator list to a template instantiation"
msgstr "Aktifkan instantiation template otomatis"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
#| msgid "%Hdeclaration of %qD in namespace %qD which does not enclose %qD"
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "%Hdeklarasi dari %qD dalam namespace %qD yang tidak dilingkupi %qD"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, fuzzy, gcc-internal-format
#| msgid "%Hdeclaration of %qD in %qD which does not enclose %qD"
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "%Hdeklarasi dari %qD dalam %qD yang tidak dilingkup %qD"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "multiple definisi dari %q#T"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, fuzzy, gcc-internal-format
#| msgid "%H%qD is not a namespace-name"
msgid "%qD is not a namespace-name"
msgstr "%H%qD bukan sebuah nama namespace"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected namespace-name"
msgstr "diduga nama class"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
#| msgid "%H%<namespace%> definition is not allowed here"
msgid "%<namespace%> definition is not allowed here"
msgstr "%H%<namespace%> definisi tidak diijinkan disini"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, fuzzy, gcc-internal-format
#| msgid "%Ha template-id may not appear in a using-declaration"
msgid "a template-id may not appear in a using-declaration"
msgstr "%Hsebuah template-id mungkin tidak muncul dalam sebuah using deklarasi"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in alias template declarations"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
#| msgid "%H%<namespace%> definition is not allowed here"
msgid "a function-definition is not allowed here"
msgstr "%H%<namespace%> definisi tidak diijinkan disini"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, fuzzy, gcc-internal-format
#| msgid "%Han asm-specification is not allowed on a function-definition"
msgid "an asm-specification is not allowed on a function-definition"
msgstr "%Hsebuah spesifikasi asm tidak diijinkan dalam sebuah definisi fungsi"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, fuzzy, gcc-internal-format
#| msgid "%Hattributes are not allowed on a function-definition"
msgid "attributes are not allowed on a function-definition"
msgstr "%Hatribut tidak diijinkan dalam sebuah definisi fungsi"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected initializer"
msgstr "diduga pengidentifikasi"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid type in declaration"
msgstr "deklarasi fungsi tidak valid"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
#| msgid "%Hinitializer provided for function"
msgid "initializer provided for function"
msgstr "%Hpenginisialisasi disediakan untuk fungsi"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "atribut setelah tanda kurung penginisialisasi diabaikan"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "array bound bukan sebuah konstanta integer"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type %qT"
msgid "cannot define member of dependent typedef %qT"
msgstr "membuat penunjuk ke anggota referensi tipe %qT"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
#| msgid "%H%<%T::%E%> is not a type"
msgid "%<%T::%E%> is not a type"
msgstr "%H%<%T::%E%> bukan sebuah tipe"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid use of constructor as a template"
msgid "invalid use of constructor as a template"
msgstr "%Hpenggunaan tidak valid dari konstruktor sebagai sebuah template"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "penggunaan %<%T::%D%> daripada %<%T::%D%> untuk menamai konstruktor dalam sebuah nama berkualifikasi"
@@ -33771,286 +33831,286 @@ msgstr "penggunaan %<%T::%D%> daripada %<%T::%D%> untuk menamai konstruktor dala
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid declarator"
msgstr "deklarasi fungsi tidak valid"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected declarator"
msgstr "diduga penspesifikasi deklarasi"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, fuzzy, gcc-internal-format
#| msgid "%H%qD is a namespace"
msgid "%qD is a namespace"
msgstr "%H%qD adalah sebuah namespace"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type %qT"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "membuat penunjuk ke anggota dari tipe bukan kelas %qT"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "operan tidak terduga"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
#| msgid "%Hduplicate cv-qualifier"
msgid "duplicate cv-qualifier"
msgstr "%Hduplikasi cv kualifikasi"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "%Hduplicate cv-qualifier"
msgid "duplicate virt-specifier"
msgstr "%Hduplikasi cv kualifikasi"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "penggunaan tidak valid dari %<auto%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in template arguments"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected type-specifier"
msgstr "diduga pengidentifikasi"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<,%> or %<...%>"
msgstr "diduga %<:%> atau %<...%>"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in parameter types"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "penggunaan deprecated dari argumen baku untuk parameter bukan fungsi"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, fuzzy, gcc-internal-format
#| msgid "%Hdefault arguments are only permitted for function parameters"
msgid "default arguments are only permitted for function parameters"
msgstr "%Hargumen baku hanya diijinkan untuk parameter fungsi"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
#| msgid "%H%sparameter pack %qD cannot have a default argument"
msgid "parameter pack %qD cannot have a default argument"
msgstr "%H%s parameter pack %qD tidak dapat memiliki sebuah argumen baku"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
#| msgid "%H%sparameter pack cannot have a default argument"
msgid "parameter pack cannot have a default argument"
msgstr "%H%s parameter pack tidak dapat memiliki sebuah argumen baku"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ tidak mengijinkan designated penginisialisasi"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ tidak mengijinkan designated penginisialisasi"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-name"
msgstr "diduga nama class"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after class definition"
msgstr "%q+D dideklarasikan inline setelah definisinya"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after struct definition"
msgstr "%q+D dideklarasikan inline setelah definisinya"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
#| msgid "Unexpected junk after function declaration at %C"
msgid "expected %<;%> after union definition"
msgstr "Tidak terduga sampah setelah deklarasi fungsi di %C"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<{%> or %<:%>"
msgstr "diduga %<,%> atau %<,%>"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "tidak dapat menemukan berkas untuk class %s"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
#| msgid "%Hfriend declaration does not name a class or function"
msgid "qualified name does not name a class"
msgstr "%Hdeklarasi friend tidak bernama sebuah kelas atau fungsi"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid class name in declaration of %qD"
msgid "invalid class name in declaration of %qD"
msgstr "%Hnama kelas tidak valid dalam deklarasi dari %qD"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
#| msgid "%Hextra qualification not allowed"
msgid "extra qualification not allowed"
msgstr "%Hekstra pengkualifikasi diabaikan"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, fuzzy, gcc-internal-format
#| msgid "%Han explicit specialization must be preceded by %<template <>%>"
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "%Hsebuah eksplisit spesialisasi harus diawali oleh %<template <>%>"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
#| msgid "%Hfunction template %qD redeclared as a class template"
msgid "function template %qD redeclared as a class template"
msgstr "%Htemplate fungsi %qD redeklarasikan sebagai sebuah template kelas"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, fuzzy, gcc-internal-format
#| msgid "%Hprevious definition of %q+#T"
msgid "previous definition of %q+#T"
msgstr "%Hdefinisi sebelumnya dari %q+#T"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-key"
msgstr "diduga nama class"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, fuzzy, gcc-internal-format
#| msgid "%Ha class-key must be used when declaring a friend"
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "%Hsebuah class-key harus digunakan ketikan mendeklarasikan sebuah friend"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, fuzzy, gcc-internal-format
#| msgid "%Hfriend declaration does not name a class or function"
msgid "friend declaration does not name a class or function"
msgstr "%Hdeklarasi friend tidak bernama sebuah kelas atau fungsi"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, fuzzy, gcc-internal-format
#| msgid "%Hpure-specifier on function-definition"
msgid "pure-specifier on function-definition"
msgstr "%Hpenspesifikasi pure di definisi fungsi"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
#| msgid "expected %<(%> or end of line"
msgid "expected %<;%> at end of member declaration"
msgstr "diduga %<(%> atau akhir dari baris"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, fuzzy, gcc-internal-format
#| msgid "invalid AE type specified (%s)\n"
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr "tipe AE yang dispesifikasikan (%s) tidak valid\n"
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
#| msgid "%H%<namespace%> definition is not allowed here"
msgid "a brace-enclosed initializer is not allowed here"
msgstr "%H%<namespace%> definisi tidak diijinkan disini"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, fuzzy, gcc-internal-format
#| msgid "%Hkeyword %<typename%> not allowed outside of templates"
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "%Hkata kunci %<typename%> tidak diijinkan diluar dari templates"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, fuzzy, gcc-internal-format
#| msgid "%Hkeyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "%Hkata kunci %<typename%> tidak diijinkan dalam konteks ini (kelas dasar adalah sebuah tipe implisit)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in an exception-specification"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
#| msgid "%Hnew types may not be defined in a return type"
msgid "types may not be defined in exception-declarations"
msgstr "%Htipe baru mungkin tidak didefinisikan dalam sebuah tipe kembali"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of %q+D"
msgid "invalid declaration of %<%T::%E%>"
msgstr "redeklarasi tidak valid dari %q+D"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, fuzzy, gcc-internal-format
#| msgid "%Htoo few template-parameter-lists"
msgid "too few template-parameter-lists"
@@ -34060,369 +34120,369 @@ msgstr "%Hterlalu sedikit template-parameter-list"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, fuzzy, gcc-internal-format
#| msgid "%Htoo many template-parameter-lists"
msgid "too many template-parameter-lists"
msgstr "%Hterlalu banyak template-parameter-lists"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, fuzzy, gcc-internal-format
#| msgid "%Hnamed return values are no longer supported"
msgid "named return values are no longer supported"
msgstr "%Hnilai kembali bernama tidak lagi didukung"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid declaration of member template in local class"
msgid "invalid declaration of member template in local class"
msgstr "%Hdeklarasi tidak valid dari anggota template dalam kelas lokal"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, fuzzy, gcc-internal-format
#| msgid "%Htemplate with C linkage"
msgid "template with C linkage"
msgstr "%Htemplate dengan C linkage"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid explicit specialization"
msgstr "spesifikasi kelas dasar tidak valid"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
#| msgid "template declaration of %q#D"
msgid "template declaration of %<typedef%>"
msgstr "template deklarasi dari %q#D"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
#| msgid "%Hexplicit template specialization cannot have a storage class"
msgid "explicit template specialization cannot have a storage class"
msgstr "%Heksplisit template spesialisasi tidak dapat memiliki sebuah kelas penyimpanan"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
#| msgid "%H%<>>%> should be %<> >%> within a nested template argument list"
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%H%<>>%> seharusnya %<> >%> didalam sebuah daftar argumen template nested"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, fuzzy, gcc-internal-format
#| msgid "%Hspurious %<>>%>, use %<>%> to terminate a template argument list"
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "%Hspurious %<>>%>, gunakan %<>%> untuk mengakhiri sebuah daftar argumen template"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid use of %qD in linkage specification"
msgid "invalid use of %qD in linkage specification"
msgstr "%Hpenggunaan tidak valid dari %qD dalam spesifikasi linkage"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
#| msgid "%H%<__thread%> before %qD"
msgid "%<__thread%> before %qD"
msgstr "%H%<__thread%> sebelum %qD"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<new%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<delete%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<return%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<extern%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected %<static_assert%>"
msgstr "diduga pernyataan"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<decltype%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<operator%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<class%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<template%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<namespace%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<using%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<asm%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<try%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<catch%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<throw%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<__label__%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@try%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@synchronized%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@throw%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, fuzzy, gcc-internal-format
#| msgid "expected %<none%> or %<shared%>"
msgid "expected %<__transaction_relaxed%>"
msgstr "diduga %<none%> atau %<shared%>"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<::%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<...%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<*%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<~%>"
msgstr "diduga %<{%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<:%> or %<::%>"
msgstr "diduga %<:%> atau %<...%>"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%>, %<;%> or %<}%>"
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "diduga %<,%>, %<,%> atau %<}%>"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "%qs tag digunakan dalam penamaan %q#T"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "%q+T has a previous declaration here"
msgid "%q#T was previously declared here"
msgstr "%q+T telah dideklarasikan sebelumnya disini"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, fuzzy, gcc-internal-format
#| msgid "%H%qD redeclared with different access"
msgid "%qD redeclared with different access"
msgstr "%H%qD redeklarasi dengan akses berbeda"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, fuzzy, gcc-internal-format
#| msgid "%H%<template%> (as a disambiguator) is only allowed within templates"
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "%H%<template%> (sebagai sebuah disambiguator) hanya diijinkan dalam templates"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, fuzzy, gcc-internal-format
#| msgid "%Hfile ends in default argument"
msgid "file ends in default argument"
msgstr "%Hberkas berakhir dalam argumen baku"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, fuzzy, gcc-internal-format
#| msgid "%Hmisplaced %<@%D%> Objective-C++ construct"
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "%Hsalah tempat %<@%D%> Objective-C++ konstruk"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, fuzzy, gcc-internal-format
#| msgid "%H%<@encode%> must specify a type as an argument"
msgid "%<@encode%> must specify a type as an argument"
msgstr "%H%<@encode%> harus menspesifikasikan sebuah tipe sebagai sebuah argumen"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid Objective-C++ selector name"
msgid "invalid Objective-C++ selector name"
msgstr "%Hpemilih nama Objective-C++ tidak valid"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "objective-c++ method declaration is expected"
msgstr "diduga penspesifikasi deklarasi"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "method attributes must be specified at the end"
msgstr "%J atribut daerah tidak dapat dispesifikasikan untuk variabel lokal"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
#| msgid "invalid type for iteration variable %qE"
msgid "invalid type for instance variable"
msgstr "tipe tidak valid untuk iterasi variabel %qE"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, fuzzy, gcc-internal-format
#| msgid "%Hidentifier expected after %<@protocol%>"
msgid "identifier expected after %<@protocol%>"
msgstr "%Hpengidentifikasi diduga setelah %<@protocol%>"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "%qE atribut diabaikan untuk %qE"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid type for property"
msgstr "tipe argumen tidak valid"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr "inisialisasi berkurung tidak diijinkan dalam loop OpenMP %<for%>"
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "iterasi variabel %qD seharusnya bukan reduksi"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
#| msgid "%Hnot enough collapsed for loops"
msgid "not enough collapsed for loops"
msgstr "%Htidak cukup kolaps untuk loops"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
#| msgid "%Hjunk at end of %<#pragma GCC pch_preprocess%>"
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "%Hsampah diakhir dari %<#pragma GCC pch_preprocess%>"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "inter-module optimisasi tidak diimplementasikan untuk C++"
@@ -34522,69 +34582,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD bukan sebuah template fungsi"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "template-id %qD untuk %q+D tidak cocok dengan deklarasi template apapun"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "spesialisasi template ambigu %qD untuk %q+D"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "template-id %qD dalam deklarasi dari template utama"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "daftar parameter template digunakan dalam instantiation eksplisit"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "definisi disediakan untuk instantiation eksplisit"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "terlalu banyak daftar parameter template dalam deklarasi dari %qD"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "terlalu sedikit daftar parameter template dalam deklarasi dari %qD"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "eksplisit spesialisasi dari %qD harus dikenalkan oleh %<template <>%>"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "fungsi template partial spesialisasi %qD tidak diijinkan"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "argumen baku dispesifikasikan dalam spesialisasi eksplisit"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD bukan sebuah fungsi template"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD tidak dideklarasikan dalam %qD"
@@ -34597,82 +34657,82 @@ msgstr "%qD tidak dideklarasikan dalam %qD"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "spesialisasi dari anggota fungsi spesial secara implist dideklarasikan"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "tidak ada anggota fungsi %qD dideklarasikan dalam %qT"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr "ekspansi penginisialisasi dasar %<%T%> berisi parameter packs"
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr "pola ekspansi %<%T%> berisi tidak ada argumen packs"
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr "pola ekspansi %<%E%> berisi tidak ada argumen packs"
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr "parameter packs tidak diekspan dengan %<...%>:"
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr " <anonymous>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "deklarasi dari %q+#D"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr " bayangan template parameter %q+#D"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "parameter template tidak digunakan dalam spesialisasi partial:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "partial spesialisasi %qT tidak menspesialisasikan argumen template apapun"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr "parameter pack argumen %qE harus berada di akhir dari daftar argumen template"
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr "parameter pack argumen %qT harus berada di akhir dari daftar argumen template"
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "template argumen %qE melibatkan parameter template"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
#| msgid "type %qT of template argument %qE depends on template parameter(s)"
msgid "type %qT of template argument %qE depends on a template parameter"
@@ -34680,57 +34740,57 @@ msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "tipe %qT dari template argumen %qE tergantung di parameter template"
msgstr[1] "tipe %qT dari template argumen %qE tergantung di parameter template"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
#| msgid "specialization %qT after instantiation %qT"
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "spesialisasi %qT setelah instantiation %qT"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "tidak ada argumen baku untuk %qD"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr "parameter pack %qE harus berada di akhir dari daftar parameter template"
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr "parameter pack %qT harus berada diakhir dari daftar parameter template"
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "argumen baku tidak diijinkan dalam deklarasi dari spesialisasi template friend %qD"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend declarations"
msgstr "argumen baku tidak diijinkan dalam deklarasi dari spesialisasi template friend %qD"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, fuzzy, gcc-internal-format
#| msgid "template parameters not used in partial specialization:"
msgid "default template arguments may not be used in partial specializations"
msgstr "parameter template tidak digunakan dalam spesialisasi partial:"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type %qT has type %qT"
msgid "default argument for template parameter for class enclosing %qD"
msgstr "argumen baku untuk parameter dari tipe %qT memiliki tipe %qT"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "template kelas tanpa sebuah nama"
@@ -34738,7 +34798,7 @@ msgstr "template kelas tanpa sebuah nama"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "destruktor %qD dideklarasikan sebagai anggota template"
@@ -34748,57 +34808,57 @@ msgstr "destruktor %qD dideklarasikan sebagai anggota template"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "deklarasi template dari %qD tidak valid"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "definisi template dari bukan template %q#D"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "diduga %d tingkat dari parm template untuk %q#D, diperoleh %d"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "diperoleh %d parameter template untuk %q#D"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "diperoleh %d parameter template untuk %q#T"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " tetapi %d dibutuhkan"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "template argumen ke %qD tidak cocok dengan template asli %qD"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr "gunakan template<> untuk spesialisasi eksplisit"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT bukan sebuah tipe template"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "penspesifikasi template tidak dispesifikasikan dalam deklarasi dari %qD"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "redeclared with %d template parameter(s)"
msgid "redeclared with %d template parameter"
@@ -34806,7 +34866,7 @@ msgid_plural "redeclared with %d template parameters"
msgstr[0] "redeklarasikan dengan %d parameter template"
msgstr[1] "redeklarasikan dengan %d parameter template"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+D used %d template parameter(s)"
msgid "previous declaration %q+D used %d template parameter"
@@ -34814,12 +34874,12 @@ msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "deklarasi sebelumnya %q+D digunakan %d parameter template"
msgstr[1] "deklarasi sebelumnya %q+D digunakan %d parameter template"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "parameter template %q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "redeklarasikan disini sebagai %q#D"
@@ -34828,281 +34888,281 @@ msgstr "redeklarasikan disini sebagai %q#D"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "redefinisi dari argumen baku untuk %q#D"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
#| msgid "%Joriginal definition appeared here"
msgid "original definition appeared here"
msgstr "%J definisi asli muncul disini"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT karena objek %qD bukan eksternal linkage"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qE bukan sebuah argumen template yang valid dari tipe %qT karena %qD tidak memiliki eksternal linkage"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
#| msgid "(a pointer to member can only be formed with %<&%E%>)"
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "(sebuah penunjuk ke anggota hanya dapat dibentuk dengan %<&%E%>)"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for %q#D"
msgid " couldn't deduce template parameter %qD"
msgstr "diperoleh %d parameter template untuk %q#D"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types %qT and %qT"
msgid " mismatched types %qT and %qT"
msgstr "perbandingan diantara tipe %qT dan %qT"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, fuzzy, gcc-internal-format
#| msgid "%Htemplate parameter pack %qD cannot have a default argument"
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr "%Htemplate parameter pack %qD tidak dapat memiliki sebuah argumen baku"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "template arguments to %qD do not match original template %qD"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "template argumen ke %qD tidak cocok dengan template asli %qD"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
#| msgid "%qs is not valid for %qs"
msgid " %qE is not equivalent to %qE"
msgstr "%qs tidak valid untuk %qs"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
#| msgid "partial specialization %qT does not specialize any template arguments"
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "partial spesialisasi %qT tidak menspesialisasikan argumen template apapun"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT"
msgid " member function type %qT is not a valid template argument"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "tidak dapat mengubah tipe %qT ke tipe %qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
#| msgid "%qT is an ambiguous base of %qT"
msgid " %qT is an ambiguous base class of %qT"
msgstr "%qT adalah sebuah dasar ambigu dari %qT"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type %qT is not derived from type %qT"
msgid " %qT is not derived from %qT"
msgstr "tipe %qT tidak diturunkan dari tipe %qT"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
#| msgid "cannot decrement a pointer to incomplete type %qT"
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "tidak dapat mengurangi penunjuk ke tipe tidak lengkap %qT"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "template arguments to %qD do not match original template %qD"
msgid " template argument %qE does not match %qD"
msgstr "template argumen ke %qD tidak cocok dengan template asli %qD"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid " could not resolve address from overloaded function %qE"
msgstr "%s tidak dapat meresolf alamat dari fungsi overloaded"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT karena string literal tidak dapat digunakan dalam konteks ini"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT"
msgid "in template argument for type %qT "
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qD bukan sebuah template argumen yang valid karena %qD bukan sebuah variabel, bukan alamat dari sebuah variabel"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE bukan sebuah argumen template yang valid dari tipe %qT karena %qE bukan sebuah variabel"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qE bukan sebuah argumen template yang valid dari tipe %qT karena %qD tidak memiliki eksternal linkage"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE bukan sebuah argumen template yang valid dari tipe %qT karena %qE bukan sebuah variabel"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "%qE bukan sebuah template argumen yang valid untuk tipe %qT karena konflik dalam cv kualifikasi"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT karena ini bukan sebuah lvalue"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is a non-constant expression"
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%qE bukan sebuah template argumen yang valid untuk tipe %qT karena ini bukan sebuah ekspresi konstan"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT karena objek %qD bukan eksternal linkage"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT karena objek %qD bukan eksternal linkage"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr "ini harus berupa alamat dari sebuah fungsi dengan hubungan eksternal"
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT karena ini adalah sebuah penunjuk"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "lebih baik coba gunakan %qE"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE bukan sebuah argumen template yang valid untuk tipe %qT karena ini dari tipe %qT"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "konversi baku tidak diijinkan dalam konteks ini"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
#| msgid "Conflict in attributes of function argument at %C"
msgid "ignoring attributes on template argument %qT"
msgstr "Konflik dalam atribut dari argumen fungsi di %C"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, fuzzy, gcc-internal-format
#| msgid "name of class shadows template template parameter %qD"
msgid "injected-class-name %qD used as template template argument"
msgstr "nama dari template kelas bayangan parameter template %qD"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid use of destructor %qD as a type"
msgid "invalid use of destructor %qE as a type"
msgstr "%Hpenggunaan tidak valid dari desktruktor %qD memiliki sebuah tipe"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "merefer ke sebuah anggota tipe dari sebuah parameter template, gunakan %<typename %E%>"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "tipe/nilai tidak cocok di argumen %d dalam daftar parameter template untuk %qD"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " diduga sebuah konstanta dari tipe %qT, diperoleh %qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " diduga sebuah template kelas, diperoleh %qE"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " diduga sebuah tipe, diperoleh %qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " diduga sebuah tipe, diperoleh %qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " diduga sebuah template kelas, diperoleh %qT"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type %qD, got %qD"
msgid " expected a template of type %qD, got %qT"
@@ -35110,76 +35170,76 @@ msgstr " diduga sebuah template dari tipe %qD, diperoleh %qD"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "tipe tidak cocok dalam paket parameter bukan tipe"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "tidak dapat mengubah argumen template %qE ke %qT"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "jumlah dari argumen template salah (%d, seharusnya %d)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "jumlah dari argumen template salah (%d, seharusnya %d)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "disediakan untuk %q+D"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "template argumen %d tidak valid"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%q#D is not a function template"
msgstr "%qD bukan sebuah template fungsi"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "tipe bukan template %qT digunakan sebuah sebuah template"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "untuk deklarasi template %q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "kedalaman template instantiation melebihi maksimal dari %d (gunakan -ftemplate-depth-NN untuk meningkatkan maksimal) instantiating %qD"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "kedalaman template instantiation melebihi maksimal dari %d (gunakan -ftemplate-depth-NN untuk meningkatkan maksimal) instantiating %qD"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr "panjang argumen pack tidak cocok akan diekspan %<%T%>"
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr "panjang argumen pack tidak cocok ketika mengekspan %<%E%>"
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "instantiation dari %q+D sebagai tipe %qT"
@@ -35197,262 +35257,262 @@ msgstr "instantiation dari %q+D sebagai tipe %qT"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr "variabel %qD memiliki tipe fungsi"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "tipe parameter %qT tidak valid"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "dalam deklarasi %q+D"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "fungsi mengembalikan sebuah array"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "fungsi mengembalikan sebuah fungsi"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "membuat penunjuk ke anggota fungsi dari tipe bukan kelas %qT"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "membentuk referensi ke void"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming pointer to reference type %qT"
msgstr "membentuk %s ke tipe referensi %qT"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming reference to reference type %qT"
msgstr "membentuk %s ke tipe referensi %qT"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "membuat penunjuk ke anggota dari tipe bukan kelas %qT"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "membuat penunjuk ke anggota referensi tipe %qT"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "membuat penunjuk ke anggota dari tipe void"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "membuat array dari %qT"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "membuat array dari %qT, yang merupakan tipe kelas abstrak"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT bukan sebuah tipe class, struct, atau union"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%qT meresolf ke %qT, yang bukan sebuah tipe enumerasi"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT meresolf ke %qT, yang bukan sebuah tipe class"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "penggunaan dari %qs dalam template"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
#| msgid "qualified type %qT does not match destructor name ~%qT"
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "tipe kualifikasi %qT tidak cocok dengan nama destruktor ~%qT"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "dependent-name %qE diparse sebagai sebuah bukan-tipe, tetapi instantiation menghasilkan sebuah tipe"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "katakan %<typename %E%> jika sebuah tipe adalah berarti"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "menggunakan field tidak valid %qD"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "penggunaan tidak valid dari ekspresi ekspansi pack"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr "gunakan %<...%> untuk mengekspan argumen pack"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr ""
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "%q+D declared here, later in the translation unit"
msgstr "%q+D dideklarasikan inline setelah definisinya"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT bukan sebuah class atau namespace"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD bukan sebuah class atau namespace"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT adalah/menggunakan tipe anonymous"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "argumen template untuk %qD menggunakan tipe lokal %qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT adalah sebuah tipe variabel termodifikasi"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "ekspresi integral %qE bukan konstan"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " mencoba untuk instantiate %qD"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "template class instantiation ambigu untuk %q#T"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "instantiation eksplisit dari bukan-template %q#D"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "%qD bukan sebuah anggota data statis dari sebuah template class"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "template tidak cocok untuk %qD yang ditemukan"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "tipe %qT untuk instantiation eksplisit %qD tidak cocok dengan tipe yang dideklarasikan %qT"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "eksplisit instantiation dari %q#D"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "duplikasi eksplisit instantiation dari %q#D"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ 1998 melarang penggunaan dari %<extern%> di instantiation eksplisit"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "class penyimpanan %qD diaplikasikan ke template instantiation"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template %q#D"
msgid "explicit instantiation of non-class template %qD"
msgstr "instantiation eksplisit dari bukan-template %q#D"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "eksplisit instantiation dari tipe bukan template %qT"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "eksplisit instantiation dari %q#T sebelum definisi dari template"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ melarang penggunaan dari %qE di instantiasi eksplisit"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "duplikasi instansiasi eksplisit dari %q#T"
@@ -35464,36 +35524,36 @@ msgstr "duplikasi instansiasi eksplisit dari %q#T"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "eksplisit instansiasi dari %qD tetapi tidak ada definisi yang tersedia"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth-NN to increase the maximum)"
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "kedalaman template instansiasi melebihi maksimal dari %d instantiating %q+D, kemungkinan dari pembuatan tabel virtual (gunakan -ftemplate-depth-NN untuk meningkatkan maksimal)"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "using template type parameter %qT after %qs"
msgid "invalid template non-type parameter"
msgstr "menggunakan parameter tipe template %qT setelah %qs"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a valid type for a template constant parameter"
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#T bukan sebuah tipe valid untuk sebuah parameter template konstan"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, fuzzy, gcc-internal-format
#| msgid "deducing auto from brace-enclosed initializer list requires #include <initializer_list>"
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr "deduksi auto dari daftar penginisialisasi dikurung membutuhkan #include <daftar_penginisialisasi>"
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -35501,12 +35561,12 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "tidak dapat mendeduksi %qT dari %qE"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -35701,7 +35761,7 @@ msgstr "penggunaan tidak valid ari %<this%> di tingkat paling atas"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "tidak valid pengkualifikasi lingkup dalam nama pseudo-destruktor"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "tipe kualifikasi %qT tidak cocok dengan nama destruktor ~%qT"
@@ -35741,483 +35801,483 @@ msgstr "definisi dari %q#T didalam daftar parameter template"
msgid "invalid definition of qualified type %qT"
msgstr "definisi tidak valid dari tipe pengkualifikasi %qT"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "spesifikasi kelas dasar tidak valid"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a type"
msgid "%qD is not captured"
msgstr "%qD bukan sebuah tipe"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "penggunaan dari variabel %<auto%> dari fungsi yang berisi"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, fuzzy, gcc-internal-format
#| msgid "use of %<auto%> variable from containing function"
msgid "use of parameter from containing function"
msgstr "penggunaan dari variabel %<auto%> dari fungsi yang berisi"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr " %q+#D dideklarasikan disini"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr ""
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "parameter template %qD dari tipe %qT tidak diijinkan dalam sebuah ekspresi konstanta integral karena ini bukan tipe integral atau enumerasi"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "penggunaan dari namespace %qD sebagai ekspresi"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "penggunaan dari template class %qT sebagai ekspresi"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "permintaan untuk anggota %qD adalah ambigu dalam multiple inheritance lattice"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qD tidak dapat muncul dalam sebuah ekspresi konstan"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "tipe dari %qE tidak dikenal"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a template type"
msgid "%qT is not an enumeration type"
msgstr "%qT bukan sebuah tipe template"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "penspesifikasi kelas penyimpanan dalam parameter deklarasi"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr "tidak dapat mengaplikasikan %<offsetof%> ke destruktor %<~%T%>"
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "tidak dapat mengaplikasikan %<offsetof%> ke anggota fungsi %qD"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qD bukan sebuah variabel dalam clause %qs"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr "%qD muncul lebih dari sekali dalam data clauses"
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "%qD bukan sebuah variabel dalam clause %<firstprivate%>"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "%qD bukan sebuah variabel dalam clause %<lastprivate%>"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr "num_threads ekspresi harus integral"
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr "schedule chunk ukuran ekspresi harus integral"
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "%qE memiliki tipe referensi untuk %qs"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr "%<threadprivate%> %qD bukan berkas, namespace atau blok scope variabel"
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "%<threadprivate%> %qE direktif tidak dalam definisi %qT"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, fuzzy, gcc-internal-format
#| msgid "%Hdifference between %qE and %qD does not have integer type"
msgid "difference between %qE and %qD does not have integer type"
msgstr "%Hperbedaan antara %qE dan %qD tidak memiliki tipe integer"
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "static assertion failed: %E"
msgid "static assertion failed: %s"
msgstr "static assertion gagal: %E"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "kondisi bukan konstan untuk assertion static"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "argumen ke decltype harus berupa sebuah ekspresi"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s tidak dapat meresolf alamat dari fungsi overloaded"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr "__is_convertible_to"
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "tipe kembali abstrak tidak valid untuk fungsi %q+#D"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "tipe kembali abstrak tidak valid untuk fungsi %q+#D"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q#T has virtual base classes"
msgstr "%q#T bukan sebuah kelas"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
#| msgid "%Juninitialized member %qD with %<const%> type %qT"
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "%J anggota tidak terinisialisasi %qD dengan %<const%> tipe %qT"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion in return statement"
msgid "body of constexpr function %qD not a return-statement"
msgstr "konversi tidak valid dalam pernyataan return"
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
#| msgid "%q+D is normally a non-static function"
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%q+D secara normal sebuah fungsi bukan-statis"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
#| msgid "%Hfriend declaration does not name a class or function"
msgid "expression %qE does not designate a constexpr function"
msgstr "%Hdeklarasi friend tidak bernama sebuah kelas atau fungsi"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "panggilan ke bukan-fungsi %qD"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD called in a constant expression"
msgstr "%qD tidak dapat muncul dalam sebuah ekspresi konstan"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
#| msgid "%q+D was used with no prototype before its definition"
msgid "%qD used before its definition"
msgstr "%q+D telah digunakan dengan tidak ada prototipe sebelum definisinya"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
#| msgid "protocol %qs has circular dependency"
msgid "call has circular dependency"
msgstr "protokol %qs memiliki ketergantungan circular"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "kedalaman template instantiation melebihi maksimal dari %d (gunakan -ftemplate-depth-NN untuk meningkatkan maksimal) instantiating %qD"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
#| msgid "%s cannot appear in a constant-expression"
msgid "%q+E is not a constant expression"
msgstr "%s tidak dapat muncul dalam sebuah konstanta ekspresi"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
#| msgid "%Harray subscript is outside array bounds"
msgid "array subscript out of bound"
msgstr "%H array subscript diluar dari cakupan array"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
#| msgid "%s cannot appear in a constant-expression"
msgid "%qE is not a constant expression"
msgstr "%s tidak dapat muncul dalam sebuah konstanta ekspresi"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "mutable %qD is not usable in a constant expression"
msgstr "%qD tidak dapat muncul dalam sebuah ekspresi konstan"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
#| msgid "size of array %qD is not an integral constant-expression"
msgid "the value of %qD is not usable in a constant expression"
msgstr "ukuran dari array %qD bukan sebuah integral konstan-ekspresi"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "%qE is not initialized"
msgid "%qD used in its own initializer"
msgstr "%qE tidak terinisialisasi"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q#D is not const"
msgstr "%q#T bukan sebuah kelas"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
#| msgid "%q+#D is private"
msgid "%q#D is volatile"
msgstr "%q+#D adalah private"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD was not initialized with a constant expression"
msgstr "%qD tidak dapat muncul dalam sebuah ekspresi konstan"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
#| msgid "%qD was not declared in this scope"
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD belum pernah dideklarasikan dalam lingkup ini"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
#| msgid "%Hexpression in new-declarator must have integral or enumeration type"
msgid "%qD does not have integral or enumeration type"
msgstr "%Hekspresi dalam pendeklarasi new harus memiliki integral atau tipe enumerasi"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "tipe enumeral dan bukan enumeral dalam ekspresi kondisional"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "expression %qE is not a constant-expression"
msgstr "ekspresi integral %qE bukan konstan"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "unexpected expression %qE of kind %s"
msgstr "diduga ekspresi"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, fuzzy, gcc-internal-format
#| msgid "cast from type %qT to type %qT casts away constness"
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr "cast dari tipe %qT ke tipe %qT menghilangkan constness"
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "ukuran dari array bukan sebuah integral konstan ekspresi"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "pointer comparison expression is not a constant expression"
msgstr "ekspresi integral %qE bukan konstan"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "division by zero is not a constant-expression"
msgstr "ukuran dari array bukan sebuah integral konstan ekspresi"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "indeks array bukan konstan dalam penginisialisasi"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of file in '%s'"
msgid "unexpected AST of kind %s"
msgstr "Tidak terduga akhir dari berkas dalam '%s'"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to %q#T"
msgid "cannot capture %qE by reference"
msgstr "tidak dapat mendeklarasikan referensi ke %q#T"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in unary expression"
msgid "already captured %qD in lambda expression"
msgstr "operan tidak valid dalam ekspresi unary"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
#| msgid "%<this%> is unavailable for static member functions"
msgid "%<this%> was not captured for this lambda function"
msgstr "%<this%> tidak tersedia untuk anggota fungsi static"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "%qV kualifier tidak dapat diaplikasikan ke %qT"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "%qE atribut hanya dapat diaplikasikan ke definisi class Java"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "%qE atribut hanya dapat diaplikasikan ke definisi class"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE sudah ditinggalkan; g++ vtables sekaran COM-compatibel secara baku"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "permintaan init_priority bukan sebuah konstanta integer"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "hanya dapat menggunakan atribut %qE di definisi lingkup-berkas dari objek dari tipe class"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "permintaan init_priority diluar dari jangkauan"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "permintaan init_priority disimpan untuk penggunaan internal"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "atribut %qE tidak didukung di platform ini"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "pemeriksaan lang_*: gagal dalam %s, di %s:%d"
@@ -36316,468 +36376,474 @@ msgstr "ISO C++ melarang mengaplikasikan %<__alignof%> ke sebuah ekspresi dari t
msgid "invalid use of non-static member function"
msgstr "penggunaan tidak valid dari anggota fungsi tidak valid"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "memakai alamat dari sementara"
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "konversi sudah ditinggalkan dari konstanta string ke %qT"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
#| msgid "request for member %qD in %qE, which is of non-class type %qT"
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "permintaan untuk anggota %qD dalam %qE, yangg tipe bukan class %qT"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "permintaan untuk anggota %qD dalam %qE, yangg tipe bukan class %qT"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "penggunaan tidak valid dari anggota data tidak statis %qE"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "akses tidak valid ke anggota data tidak statis %qD dari objek KOSONG"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(mungkin %<offsetof%> makro telah digunakan dengan tidak benar)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "akses tidak valid ke anggota data tidak statis %qD dari objek KOSONG"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "tipe objek %qT tidak cocok dengan nama destruktor ~%qT"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "tipe yang sedang dihancurkan adalah %qT, tetapi destruktor merefer ke %qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%> bukan sebuah anggota dari %qT"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT bukan sebuah basis dari %qT"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD tidak memiliki anggota bernama %qE"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD bukan sebuah anggota dari fungsi template"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT bukan sebuah penunjuk-ke-objek tipe"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of array indexing on pointer to member"
msgstr "penggunaan tidak valid dari %qs di penunjuk ke anggota"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "penggunaan tidak valid dari %qs di penunjuk ke anggota"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of implicit conversion on pointer to member"
msgstr "penggunaan tidak valid dari %qs di penunjuk ke anggota"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "subscrip hilang dalam referensi array"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ melarang subscripting array bukan-lvalue"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "subscripting array dideklarasikan %<register%>"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "nilai subscripted adalah bukan array ataupun penunjuk"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "objek hilang dalam penggunaan dari %qE"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ melarang pemanggilan %<::main%> dari dalam aplikasi"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "harus menggunakan %<.*%> atau %<->*%> untuk memanggil penunjuk-ke-anggota fungsi dalam %<%E (...)%>, contoh %<(... ->* %E) (...)%>"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qE tidak dapat digunakan sebagai sebuah fungsi"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to constructor %q#D"
msgstr "terlalu banyak argumen ke %s %q+#D"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to constructor %q#D"
msgstr "terlalu sedikit argumen ke %s %q+#D"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to member function %q#D"
msgstr "terlalu banyak argumen ke fungsi %qE"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qE"
msgid "too few arguments to member function %q#D"
msgstr "terlalu sediki argumen ke fungsi %qE"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to function %q#D"
msgstr "terlalu banyak argumen ke fungsi %qE"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qE"
msgid "too few arguments to function %q#D"
msgstr "terlalu sediki argumen ke fungsi %qE"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to method %q#D"
msgstr "terlalu banyak argumen ke %s %q+#D"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to method %q#D"
msgstr "terlalu sedikit argumen ke %s %q+#D"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "terlalu banyak argumen ke fungsi"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "terlalu sedikit argumen ke fungsi"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "parameter %P dari %qD memiliki tipe tidak lengkap %qT"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "parameter %P memiliki tipe tidak lengkap %qT"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "mengasumsikan cast ke tipe %qT dari fungsi overloaded"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL digunakan dalam aritmetik"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, gcc-internal-format
msgid "left rotate count is negative"
msgstr "jumlah rotasi kiri negatif"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr "jumlah rotasi kanan negatif"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "jumlah rotasi kiri >= lebar dari tipe"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "jumlah rotasi kanan >= lebar dari tipe"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "perbandingan dengan string literal menghasilkan perilaku yang tidak dispesifikasikan"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "alamat dari %qD tidak akan pernah menjadi KOSONG"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ melarang perbandingan diantara penunjuk dan integer"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "perbandingan tidak berurut di argumen bukan titik pecahan"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "operang tidak valid untuk tipe %qT dan %qT ke binari %qO"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ melarang menggunakan penunjuk dari tipe %<void *%> dalam pengurangan"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ melarang menggunakan penunjuk ke sebuah fungsi dalam pengurangan"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ melarang menggunakan penunjuk ke sebuah metoda dalam pengurangan"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "penggunaan tidak valid dari sebuah penunjuk ke sebuah tipe tidak lengkap dalam aritmetik penunjuk"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of constructor %qE"
msgstr "memakai alamat dari sementara"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of destructor %qE"
msgstr "memakai alamat dari sementara"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "penggunaan tidak valid dari %qE untuk membentuk sebuah penunjuk ke anggota fungsi"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr " sebuah kualified-id dibutuhkan"
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "tanda kurung disekitar %qE tidak dapat digunakan untuk membentuk sebuah penunjuk-ke-anggota-fungsi"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ melarang mengambil alamat dari tidak terkualifikasi atau bertanda kurun anggota bukan statis fungsi untuk membentuk sebuah penunjuk ke anggota fungsi. Katakan %<&%T::%D%>"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ melarang mengambil alamat dari sebuah anggota fungsi terikat ke sebuah bentuk penunjuk ke anggota fungsi. Katakan %<&%T::%D%>"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "memakai alamat dari sementara"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of xvalue (rvalue reference)"
msgstr "memakai alamat dari sementara"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ melarang mengambil alamat dari fungsi %<::main%>"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ melarang mengambil alamat dari sebuah cast ke sebuah ekspresi bukan lvalue"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "tidak dapat membuat penunjuk ke anggota referensi %qD"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ melarang menaikkan sebuah enum"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ melarang mengurangi sebuah enum"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "tidak dapat meningkatkan sebuah penunjuk ke tipe tidak lengkap %qT"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "tidak dapat mengurangi penunjuk ke tipe tidak lengkap %qT"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ melarang meningkatkan sebuah penunjuk dari tipe %qT"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ melarang mengurangi sebuah penunjuk dari tipe %qT"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "penggunaan tidak valid dari ekspresi Boolean sebagai operan ke %<operator--%>"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "tidak dapat mengambil alamat dari %<this%>, yang merupakan ekspresi rvalue"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "alamat dari variabel eksplisit register %qD diminta"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "alamat yang diminta untuk %qD, yang dideklarasikan %<register%>"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, fuzzy, gcc-internal-format
#| msgid "initializer for %qT must be brace-enclosed"
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "penginisialisasi untuk %qT harus berupa kurung dilingkupi"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in initializer"
msgstr "%s daftar ekspresi diperlakukan sebagai ekspresi compound"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in mem-initializer"
msgstr "%s daftar ekspresi diperlakukan sebagai ekspresi compound"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in functional cast"
msgstr "%s daftar ekspresi diperlakukan sebagai ekspresi compound"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "%s daftar ekspresi diperlakukan sebagai ekspresi compound"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
#| msgid "cast from type %qT to type %qT casts away constness"
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "cast dari tipe %qT ke tipe %qT menghilangkan constness"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
#| msgid "static_cast from type %qT to type %qT casts away constness"
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "static_cast dari tipe %qT ke tipe %qT menghilangkan constness"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "reinterpret_cast from type %qT to type %qT casts away constness"
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "reinterpret_cast dari tipe %qT ke tipe %qT menghilangkan constness"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "tidak valid static_cast dari tipe %qT ke tipe %qT"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "mengubah dari %qT ke %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "cast tidak valid dari sebuah ekspresi rvalue dari tipe %qT ke tipe %qT"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "cast dari %qT ke %qT kehilangan presisi"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "cast dari %qT ke %qT menaikan alignmen yang dibutuhkan dari tipe target"
@@ -36786,233 +36852,233 @@ msgstr "cast dari %qT ke %qT menaikan alignmen yang dibutuhkan dari tipe target"
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ melarang casting diantara penunjuk ke fungsi dan penunjuk ke objek"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "cast dari tipe %qT ke tipe %qT tidak valid"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "penggunaan tidak valid dari const_cast dengan tipe %qT, yang bukan sebuah penunjuk, referensi, ataupun sebuah tipe penunjuk-ke-anggota-data"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "penggunaan tidak valid dari const_cast dengan tipe %qT, yang merupakan sebuah penunjuk atau referensi ke sebuah tipe fungsi"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "const_cast tidak valid dari sebuah rvalue dari tipe %qT ke tipe %qT"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "const_cast dari tipe %qT ke tipe %qT tidak valid"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ melarang casting ke sebuah tipe array %qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "cast ke fungsi tipe %qT tidak valid"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " dalam evaluasi dari %<%Q(%#T, %#T)%>"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "indeks array bukan konstan dalam penginisialisasi"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "tipe tidak kompatibel dalam assignmen dari %qT ke %qT"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, gcc-internal-format
msgid "array used as initializer"
msgstr "array digunakan sebagai penginisialisasi"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, gcc-internal-format
msgid "invalid array assignment"
msgstr "assignmen array tidak valid"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " dalam penunjuk ke anggota fungsi konversi"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "penunjuk ke anggota konversi melalui basis maya %qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " dalam penunjuk ke anggota konversi"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "konversi tidak valid ke tipe %qT dari tipe %qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "tidak dapat mengubah %qT ke %qT untuk argumen %qP ke %qD"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgid "cannot convert %qT to %qT in default argument"
msgstr "tidak dapat mengubah %qT ke %qT untuk argumen %qP ke %qD"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in argument passing"
msgstr "tidak dapat mengubah %qT ke %qT dalam %s"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT"
msgstr "tidak dapat mengubah %qT ke %qT dalam %s"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in initialization"
msgstr "tidak dapat mengubah %qT ke %qT dalam %s"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in return"
msgstr "tidak dapat mengubah %qT ke %qT dalam %s"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in assignment"
msgstr "tidak dapat mengubah %qT ke %qT dalam %s"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
#| msgid "argument %d of %qE might be a candidate for a format attribute"
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "argumen %d dari %qE mungkin menjadi sebuah kandidat untuk sebuah format atribut"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
#| msgid "return type might be a candidate for a format attribute"
msgid "parameter might be a candidate for a format attribute"
msgstr "tipe kembali mungkin berupa sebuah kandidat untuk sebuah atribut format"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of conversion might be a candidate for a format attribute"
msgstr "argumen dari fungsi panggilan mungkin menjadi sebuah kandidat untuk sebuah atribut format"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of initialization might be a candidate for a format attribute"
msgstr "argumen dari fungsi panggilan mungkin menjadi sebuah kandidat untuk sebuah atribut format"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
#| msgid "assignment left-hand side might be a candidate for a format attribute"
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "penempatan sisi tangan-kiri mungkin menjadi sebuah kandidat untuk sebuah atribut format"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "dalam melewatkan argumen %P dari %q+D"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "mengembalikan referensi ke sementara"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "referensi ke bukan-lvalue dikembalikan"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "referensi ke variabel lokal %q+D dikembalikan"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "alamat dari variabel lokal %q+D dikembalikan"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "mengembalikan sebuah nilai dari sebuah destruktor"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "tidam dapat kembali dari sebuah penanganan dari sebuah fungsi-coba-blok dari sebuah konstruktor"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "mengembalikan sebuah nilai dari sebuah konstruktor"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "pernyataan-kembali dengan tidak ada nilai, dalam fungsi mengembalikan %qT"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "pernyataan kembali dengan sebuah nilai, dalam fungsi mengembalikan 'void'"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> harus tidak mengembalikan KOSONG kecuali ini dideklarasikan %<throw()%> (atau ada dalam pengaruh -fcheck-new )"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -37580,7 +37646,7 @@ msgstr "Langkah iterasi di %L tidak dapat nol"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr "Jumlah dari elemen dalam konstruktor array di %L membutuhkan sebuah peningkatan dari batas atas %d yang diijinkan. Lihat pilihan -fmax-array-constructor"
@@ -39811,27 +39877,27 @@ msgstr "fungsi dinilai POINTER muncul di sisi kanan dari penempatan di %L"
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr "Ekstensi: BOZ literal di %L digunakan untuk menginisialisasi variabel bukan-integer '%s'"
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr "Ekstensi: BOZ literal di %L diluar sebuah pernyataan DATA dan diluar INT/REAL/DBLE/CMPLX"
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr "BOZ literal di %L adalah bitwise dapat ditransfer bukan-integer simbol '%s'"
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Aritmetik underflow dari bit-wise dipindahkan BOZ di %L. Pemeriksaan ini dapat dinon-aktifkan dengan pilihan -fno-range-check"
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Aritmetik overflow dari bit-wise dipindahkan BOZ di %L. Pemeriksaan ini dapat dinonaktifkan dengan pilihan -fno-range-check"
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Aritmetik NaN dari bit-wise dipindahkan BOZ di %L. Pemeriksaan ini dapat dinon-aktifkan dengan pilihan -fno-range-check"
@@ -40057,46 +40123,46 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy argument '%s' not allowed in expression at %L"
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr "Dummy argumen '%s' tidak diijinkan dalam ekspresi di %L"
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "Variabel '%s' tidak dapat muncul dalam ekspresi di %L"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "Variabel '%s' tidak dapat muncul dalam ekspresi di %L"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "Variabel '%s' tidak dapat muncul dalam ekspresi di %L"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -40111,14 +40177,14 @@ msgstr "Tipe tidak terduga dalam truthvalue_conversion"
msgid "can't open input file: %s"
msgstr "tidak dapat membuka berkas masukan: %s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "Membuat array sementara di %L"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Return value of function '%s' at %L not set"
msgid "Removing call to function '%s' at %L"
@@ -40231,12 +40297,12 @@ msgstr "Argumen pertama dari penempatan yang didefinisikan di %L harus berupa IN
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "Argumen kedua dari penempatan didefinisikan di %L harus berupa INTENT(IN)"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "Argumen pertama dari antar-muka operator di %L harus berupa INTENT(IN)"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "Argumen kedua dari antar-muka operator di %L harus berupa INTENT(IN)"
@@ -42154,131 +42220,131 @@ msgstr "Error menulis berkas modul: %s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "Daftar-nama %s tidak dapat diubah namanya dengan assosiasi USE ke %s"
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr "Nama '%s' di %C adalah sebuah referensi ambigu ke '%s' dari satuan aplikasi sekarang"
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr "Simbol '%s' direferensikan di %L tidak ditemukan dalam modul '%s'"
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr "Operator pengguna '%s' direferensikan di %L tidak ditemukan dalam modul '%s'"
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr "Operator intrinsik '%s' direferensikan di %L tidak ditemukan dalam modul '%s'"
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "Tidak dapat membuka berkas modul '%s' untuk menulis di %C: %s"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "Error menulis berkas modul '%s' untuk menulis: %s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "tidak dapat menghapus berkas modul '%s': %s"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "tidak dapat mengubah nama berkas modul '%s' ke '%s': %s"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "Tidak dapat menghapus berkas modul sementara '%s': %s"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr "Simbol '%s' telah terdeklarasi"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "Simbol '%s' direferensikan di %L tidak ditemukan dalam modul '%s'"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr "Simbol '%s' direferensikan di %L tidak ditemukan dalam modul intrinsik ISO_C_BINDING"
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr "Penggunaan daro modul intrinsik '%s' di %C konflik dengan tidak-intrinsik nama modul digunakan sebelumnya"
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr "Penggunaan dari NUMERIC_STORAGE_SIZE konstanta bernama dari modul intrinsik ISO_FORTRAN_ENV di %L adalah tidak kompatibel dengan pilihan %s"
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr "Penggunaan dari NUMERIC_STORAGE_SIZE konstanta bernama dari modul intrinsik ISO_FORTRAN_ENV di %C adalah tidak kompatibel dengan pilihan %s"
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr "Simbol '%s' direferensikan di %L tidak ditemukan dalam modul intrinsik ISO_FORTRAN_ENV"
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr "Fortran 2003: ISO_FORTRAN_ENV modul intrinsik di %C"
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Fortran 2003: ISO_C_BINDING modul di %C"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr "Tidak dapat menemukan modul intrinsik bernama '%s' di %C"
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "Tidak dapat membuka berkas modul '%s' untuk pembacaan di %C: %s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr "Penggunaan dari modul tidak intrinsik '%s' di %C konflik dengan nama modul intrinsik yang digunakan sebelumnya"
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr "Berkas '%s' dibuka di %C bukan sebuah berkas modul GFORTRAN"
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr "Parse error ketika memeriksa versi modul untuk berkas '%s' dibuka di %C"
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Wrong module version '%s' (expected '"
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr "Versi modul salah '%s' (diduga '"
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "Tidak dapat MENGGUNAKAN module yang sama yang sedang kita buat!"
@@ -42373,7 +42439,7 @@ msgstr "Tidak terduga sampah setelah pernyataan ELSE di %C"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "Tidak terduga sampah setelah pernyataan ELSE di %C"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "IF clause di %L membutuhkan sebuah ekspresi skalara LOGIKAL"
@@ -43738,7 +43804,7 @@ msgstr "Intrinsik '%s' dideklarasikan INTRINSIC di %L tidak tersedia dalam konfi
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr "Bukan prosedur REKURSIF '%s' di %L mungkin memanggil dirinya sendiri secara rekursif. Deklarasikan itu secara RECURSIVE atau gunakan -frecursive"
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "Label %d direferensikan di %L tidak pernah terdefinisi"
@@ -43900,7 +43966,7 @@ msgstr "Fungsi '%s' di %L adalah INTRINSIK tetapi tidak kompatibel dengan sebuah
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "Tidak dapat meresolf fungsi spesifik '%s'di %L"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "Fungsi '%s' di %L tidak memiliki tipe IMPLISIT"
@@ -44294,189 +44360,189 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "Argumen '%s' dari prosedur elemental di %L harus berupa skalar"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr "Tidak ditemukan pengikatan spesifik yang cocok untuk panggilan ke GENERIC '%s' di %L"
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr "'%s' di %L seharusnya berupa sebuah SUBROUTINE"
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr "'%s' di %L seharusnya berupa sebuah FUNGSI"
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s di %L harus berupa sebuah skalar"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr "Featur terhapus: %s di %L harus berupa integer"
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s di %L harus berupa INTEGER"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "Ekspresi step dalam loop DO di %L tidak dapat berupa nol"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "FORALL nama-indeks di %L harus berupa sebuah skalar INTEGER"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "FORALL awal ekspresi di %L harus berupa sebuah skalar INTEGER"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "FORALL akhir ekspresi di %L harus berupa sebuah skalar INTEGER"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "FORALL stride ekspresi di %L harus berupa sebuah skalar %s"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "FORALL stride ekspresi di %L tidak dapat berupa nol"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "FORALL indeks '%s' mungkin tidak muncul dalam spesifikasi triplet di %L"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in ALLOCATE statement at %L must be ALLOCATABLE or a POINTER"
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr "Ekspresi dalam pernyataan ALOKASI di %L harus berupa DAPAT DIALOKASIKAN atau sebuah PENUNJUK"
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "Spesifikasi array dibutuhkan dalam pernyatan ALOKASI di %L"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array specification required in ALLOCATE statement at %L"
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Spesifikasi array dibutuhkan dalam pernyatan ALOKASI di %L"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "Spesifikasi array buruk dalam pernyataan ALOKASI di %L"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr "'%s' tidak boleh muncul dalam spesifikasi array di %L dalam pernyataan ALOKASI yang sama dimana ini sendiri dialokasikan"
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Bad array specification in ALLOCATE statement at %L"
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "Spesifikasi array buruk dalam pernyataan ALOKASI di %L"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Bad array specification in ALLOCATE statement at %L"
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "Spesifikasi array buruk dalam pernyataan ALOKASI di %L"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "pernyataan ASSIGN di %L membutuhkan sebuah skalar baku variabel INTEGER"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "Label di %L tidak dalam blok yang sama seperti pernyataan GOTO di %L"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "spesifikasi SATUAN di %L harus berupa sebuah ekspresi INTEGER atau sebuah KARAKTER variabel"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -44485,190 +44551,190 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr "CASE label di %L overlaps dengan CASE label di %L"
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "Ekspresi dalam pernyataan CASE di %L harus berupa tipe %s"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "Ekspresi dalam pernyataan CASE di %L harus berupa tipe %d"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "Ekspresi dalam pernyataan CASE di %L harus berupa skalar"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr "Pemilihan ekspresi dalam pernyataan GOTO yang terhitung di %L harus berupa sebuah ekspresi integer skalar"
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "Argumen dari pernyataan SELECT di %L tidak dapat berupa %s"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in CASE statement at %L must be of type %s"
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "Ekspresi dalam pernyataan CASE di %L harus berupa tipe %s"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr "KASUS BAKU di %L tidak dapat diikuti oleh sebuah KASUS BAKU kedua di %L"
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr "Jangkauan logikal dalam pernyataan CASE di %L tidak diperbolehkan"
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "constant logical value in CASE statement is repeated at %L"
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr "nilai logikan konstan dalam pernyataan CASE diulang di %L"
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr "Spesifikasi jangkauan di %L tidak pernah cocok"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr "Logikal SELECT CASE blok di %L memiliki lebih dari dua kasus"
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Global name '%s' at %L is already being used as a %s at %L"
msgid "Associate-name '%s' at %L is used as array"
msgstr "Nama global '%s' di %L telah digunakan sebuah sebuah %s di %L"
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Syntax error in EQUIVALENCE statement at %L"
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "Sintaks error dalam pernyataan EKUIVALEN di %L"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type '%s' at %L is empty"
msgid "Derived type '%s' at %L must be extensible"
msgstr "Tipe turunan '%s' di %L adalah kosong"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type '%s' at %L is empty"
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "Tipe turunan '%s' di %L adalah kosong"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have POINTER components"
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr "Elemen pemindahan data di %L tidak dapat memiliki komponen PENUNJUK"
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have POINTER components"
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr "Elemen pemindahan data di %L tidak dapat memiliki komponen PENUNJUK"
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have ALLOCATABLE components"
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr "Elemen pemindahan data di %L tidak dapat memiliki komponen DAPAT DIALOKASIKAN"
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr "Elemen pemindahan data di %L tidak dapat memiliki komponen PRIVATE"
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr "Elemen pemindahan data di %L tidak dapat berupa sebuah referensi lengkap ke sebuah array yang ukurannya diasumsikan"
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL index-name at %L must be a scalar INTEGER"
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "FORALL nama-indeks di %L harus berupa sebuah skalar INTEGER"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "pernyataan ASSIGN di %L membutuhkan sebuah skalar baku variabel INTEGER"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "pernyataan ASSIGN di %L membutuhkan sebuah skalar baku variabel INTEGER"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument dim at %L must be scalar"
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "Argumen dim di %L harus berupa skalar"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of SELECT statement at %L must be a scalar expression"
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "Argumen dari pernyataan SELECT di %L harus berupa sebuah ekspresi skalar"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of ACOS at %L must be between -1 and 1"
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "Argumen dari ACOS di %L harus berada diantara -1 dan 1"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "Pernyataan di %L bukan sebuah pernyataan pencabangan target yang valid untuk sebuah pernyataan percabangan di %L"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr "Cabang di %L bisa menyebabkan sebuah loop tak terhingga"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -44676,659 +44742,659 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "Label di %L tidak dalam blok yang sama seperti pernyataan GOTO di %L"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr "DIMANA mask di %L memiliki bentuk tidak konsisten"
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "penempatan target WHERE di %L memiliki bentuk tidak konsisten"
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr "penempatan bukan-ELEMEN didefinisikan-pengguna dalam WHERE di %L"
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "Pernyataan didalam WHERE di %L tidak didukung"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "Penempatan ke sebuah indeks variabel FORALL di %L"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr "FORALL dengan indeks '%s' tidak digunakan di sisi kiri dari penempatan di %L dan jadi mungkin menyebabkan penempatan berulang di objek ini"
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr "Sebuah konstruks FORALL luar telah memiliki sebuah indeks dengan nama ini %L"
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "WHERE/ELSEWHERE clause di %L membutuhkan sebuah array LOGIKAL"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr "Ekspresi KARAKTER akan dipotong dalam penempatan (%d/%d) di %L"
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr "Variabel impure di %L ditempatkan ke sebuah tipe variabel turunan dengan sebuah komponen PENUNJUK dalam sebuah prosedur PURE (12.6)"
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr "Variabel impure di %L ditempatkan ke sebuah tipe variabel turunan dengan sebuah komponen PENUNJUK dalam sebuah prosedur PURE (12.6)"
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assignment to a FORALL index variable at %L"
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "Penempatan ke sebuah indeks variabel FORALL di %L"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "pernyataan GOTO ASSIGNED di %L membutuhkan sebuah variabel INTEGER"
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "Variabel '%s' belum pernah ditempatkan sebuah label target di %L"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "Pernyataan RETURN alternatif di %L membutuhkan sebuah SKALAR-INTEGER return penspesifikasi"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr "pernyataan ASSIGN di %L membutuhkan sebuah skalar baku variabel INTEGER"
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr "Pernyataan aritmetik IF di %L membutuhkan sebuah ekspresi numerik"
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr "Kondisi keluar dari loop DO WHILE di %L harus berupa sebuah ekspresi skalar LOGIKAL"
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL mask clause at %L requires a LOGICAL expression"
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "FORALL mask clause di %L membutuhkan sebuah ekspresi LOGIKAL"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr "Mengikat label '%s' untuk blok umum '%s' di %L collides dengan global entiti '%s' di %L"
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr "Binding label '%s' untuk blok umum '%s' di %L tidak cocok dengan binding label '%s' untuk blok umum '%s' di %L"
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr "Binding label '%s' untuk blok umum '%s' di %L collides dengan global entity '%s' di %L"
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr "Binding label '%s' di %L collides dengan global entity '%s' di %L"
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr "Binding label '%s' dalam antar-muka tubuh di %L collides dengan global entity '%s' di %L"
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr "Binding label '%s' di %L collides dengan global entity '%s' di %L"
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "size of array %qs is too large"
msgid "String length at %L is too large"
msgstr "ukuran dari array %qs adalah terlalu besar"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "Array dapat dialokasikan '%s' di %L harus memiliki sebuah bentuk deferred"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr "Objek skalar '%s' di %L mungkin tidak dapat DIALOKASIKAN"
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "Penunjuk array '%s' di %L harus memiliki sebuah bentuk deffered"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "Array '%s' di %L tidak dapat memiliki sebuah bentuk deferred"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The type for function '%s' at %L is not accessible"
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr "Tipe dari fungsi '%s' di %L tidak dapat diakses"
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr "Tipe '%s' tidak dapat host assosiasi di %L karena ini diblok dengan sebuah objek tidak kompatibel dari nama sama yang dideklarasikan di %L"
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "Modul atau array aplikasi utama '%s' di %L harus memiliki bentuk konstan"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr "Entity dengan panjang karakter diasumsikan di %L harus berupa sebuah argumen dummy atau sebuah PARAMETER"
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr "'%s' di %L harus memiliki panjang karakter konstan dalam konteks ini"
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' at %L must have constant character length in this context"
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "'%s' di %L harus memiliki panjang karakter konstan dalam konteks ini"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "Dapat dialokasikan '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "Eksternal '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "Dummy '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "Intrinsik '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "Hasil fungsi '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "Array otomatis '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr "Pernyataan fungsi nilai-karakter '%s' di %L harus memiliki panjang konstant"
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: '%s' adalah sebuah tipe PRIVATE dan tidak dapat berupa sebuah argumen dummy dari '%s', yang mana ini adalah PUBLIK di %L"
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr "Fortran 2003: Prosedur '%s' dalam antar-muka PUBLIK '%s' di %L memakai argumen dummy dari '%s' dimana ini adalah PRIVATE"
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "Fungsi '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "Objek eksternal '%s' di %L tidak boleh memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "Fungsi ELEMEN '%s' di %L harus memiliki sebuah hasil skalar"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "Pernyataan fungsi '%s' di %L tidak diperbolehkan sebagai argumen aktual"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "Fungsi KARAKTER(*) '%s' di %L tidak dapat bernilai-array"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "Fungsi KARAKTER(*) '%s' di %L tidak dapat bernilai-penunjuk"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "Fungsi KARAKTER(*) '%s' di %L tidak dapat pure"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr "Fungsi KARAKTER(*) '%s' di %L tidak dapat rekursif"
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "Fungsi KARAKTER(*) '%s' di %L tidak dapat pure"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "atribut PROSEDUR konflik dengan atribut SAVE dalam '%s' di %L"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "atribut PROSEDUR konflik dengan atribut INTENT dalam '%s' di %L"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "atribut PROSEDUR konflik dengan atribut NAMELIST dalam '%s' di %L"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "atribut PROSEDUR konflik dengan atribut INTENT dalam '%s' di %L"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr "Prosedur FINAL '%s' di %L bukan sebuah SUBROUTINE"
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "Prosedur FINAL di %L harus memiliki tepat satu argumen"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "Argumen dari prosedur FINAL di %L harus berupa tipe '%s'"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "argumen dari prosedur FINAL di %L harus berupa sebuah PENUNJUK"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "Argumen dari prosedur FINAL di %L harus berupa DAPAT-DIALOKASIKAN"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "Argumen dari prosedur FINAL di %L tidak boleh berupa OPSIONAL"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "Argumen dari prosedur FINAL di %L harus berupa INTENT(OUT)"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "Prosedur FINAL bukan skalar di %L seharusnya memiliki diasumsikan argumen bentuk"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr "prosedur FINAL '%s' dideklarasikan di %L memiliki tingkat yang sama (%d) seperti '%s'"
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr "Hanya array prosedur FINAL dideklarasikan untuk tipe turunan '%s' didefinisikan di %L, disarankan juga skalar satu"
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr "Finalisasi di %L belum diimplementasikan"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr "'%s' dan '%s' tidak dapat dicampurkan FUNCTION/SUBROUTINE untuk GENERIC '%s' di %L"
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr "'%s' dan '%s' untuk GENERIC '%s' di %L adalah ambigu"
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr "Tidak terdefinisi pengikatan spesifik '%s' sebagai target dari GENERIC '%s' di %L"
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr "GENERIC '%s' di %L harus target sebuah pengikatan spesifik, '%s' adalah GENERIC, juga"
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr "GENERIC '%s' di %L tidak dapat overwrite pengikatan spesifik dengan nama sama"
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "'%s' harus berupa sebuah prosedur modul atau sebuah prosedur eksternal dengan sebuah antar-muka eksplisit di %L"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Prosedur '%s' dengan PASS(%s) di %L tidak memiliki argumen '%s'"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "Prosedur '%s' dengan PASS di %L harus memiliki paling tidak satu argumen"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Polymorphic entities are not yet implemented, non-polymorphic passed-object dummy argument of '%s' at %L accepted"
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr "entiti polymorphic belum diimplementasikan, bukan polymorphic objek argumen dummy dilewatkan dari '%s' di %L diterima"
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "Argumen '%s' dari '%s' dengan PASS(%s) di %L harus berupa tipe turunan '%s'"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Passed-object at %L must be scalar"
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "Objek yang dilewatkan di %L harus berupa skalar"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa DAPAT-DIALOKASIKAN"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "'%s' argumen dari '%s' instrinsik di %L harus berupa sebuah PENUNJUK"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "Prosedur '%s' di %L memiliki nama sama sebagai sebuah komponen dari '%s'"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr "Prosedur '%s' di %L memiliki nama sama seperti sebuah komponen turunan dari '%s'"
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type '%s' declared at %L must have the BIND attribute to be C interoperable"
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr "Tipe turunan '%s' dideklarasikan di %L harus memiliki atribut BIND ke Cinteroperable"
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr "Bukan ekstensible tipe turunan '%s' di %L tidak boleh berupa ABSTRACT"
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array pointer '%s' at %L must have a deferred shape"
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "Penunjuk array '%s' di %L harus memiliki sebuah bentuk deffered"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr "'%s' di %L tidak dapat memiliki VALUE atribut karena ini bukan sebuah argumen dummy"
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Interface '%s', used by procedure '%s' at %L, is declared in a later PROCEDURE statement"
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr "Antar-muka '%s', digunakan oleh prosedur '%s' di %L, dideklarasikan dalam pernyataan PROSEDUR kemudian"
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Interface '%s' of procedure '%s' at %L must be explicit"
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "Antar-muka '%s' dari prosedur '%s' di %L harus berupa eksplisit"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Prosedur '%s' dengan PASS(%s) di %L tidak memiliki argumen '%s'"
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "Prosedur '%s' dengan PASS di %L harus memiliki paling tidak satu argumen"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "Argumen '%s' dari '%s' dengan PASS(%s) di %L harus berupa tipe turunan '%s'"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "Argumen '%s' dari '%s' dengan PASS(%s) di %L harus berupa tipe turunan '%s'"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of elemental procedure at %L cannot have the POINTER attribute"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "Argumen '%s' dari prosedur elemental di %L tidak dapat memiliki atribut POINTER"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa DAPAT-DIALOKASIKAN"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "Komponen '%s' dari '%s' di %L memiliki nama sama dengan prosedur yang melingkupinya"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr "Panjang karakter dari komponen '%s' butuh untuk menjadi sebuah ekspresi spesifikasi konstan di %L"
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: Komponen '%s' adalah sebuah tipe PRIVATE dan tidak dapat berupa sebuah komponen dari '%s', yang mana adalah PUBLIK di %L"
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "Komponen %s dari tipe URUTAN dideklarasikan di %L tidak dapat memiliki atribut URUTAN"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr "Komponen penunjuk '%s' dari '%s' di %L adalah sebuah tipe yang belum pernah dideklarasikan"
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "Prosedur '%s' dengan PASS di %L harus memiliki paling tidak satu argumen"
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed"
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "Ukuran array yang diasumsikan '%s' dalam daftar nama '%s' di %C tidak diperbolehkan"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "NAMELIST array object '%s' must not have assumed shape in namelist '%s' at %L"
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr "NAMELIST array objek '%s' tidak boleh memiliki bentuk yang diasumsikan dalam daftar-nama '%s' di %L"
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "NAMELIST array object '%s' must have constant shape in namelist '%s' at %L"
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr "NAMELIST array objek '%s' harus memiliki bentuk konstan dalam daftar-nama '%s' di %L"
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "NAMELIST array object '%s' must have constant shape in namelist '%s' at %L"
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr "NAMELIST array objek '%s' harus memiliki bentuk konstan dalam daftar-nama '%s' di %L"
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "NAMELIST object '%s' in namelist '%s' at %L cannot have POINTER components"
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr "NAMELIST objek '%s' dalam daftar-nama '%s' di %L tidak dapat memiliki komponen PENUNJUK"
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "NAMELIST object '%s' in namelist '%s' at %L cannot have ALLOCATABLE components"
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
@@ -45336,331 +45402,331 @@ msgstr "NAMELIST objek '%s' dalam daftar-nama '%s' di %L tidak dapat memiliki ko
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "NAMELIST object '%s' in namelist '%s' at %L cannot have ALLOCATABLE components"
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr "NAMELIST objek '%s' dalam daftar-nama '%s' di %L tidak dapat memiliki komponen DAPAT DIALOKASIKAN"
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr "NAMELIST objek '%s' telah dideklarasikan PRIVATE dan tidak dapat berupa anggota dari PUBLIK namelist '%s' di %L"
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr "NAMELIST objek '%s' memiliki use-associated komponen PRIVATE dan tidak dapat berupa anggota dari daftar-nama '%s' di %L"
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr "NAMELIST objek '%s' meemiliki komponen PRIVATE dan tidak dapat berupa anggota dari PUBLIK daftar-nama '%s' di %L"
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "atribut PROSEDUR konflik dengan atribut NAMELIST dalam '%s' di %L"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "Parameter array '%s' di %L tidak dapat berupa otomatis atau bentuk deferred"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr "Tipe PARAMETER secara implisit '%s' di %L tidak cocok dengan tipe IMPLISIT kemudian"
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "Tipe turunan tidak kompatibel dalam PARAMETER di %L"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "atribut PROSEDUR konflik dengan atribut INTENT dalam '%s' di %L"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "atribut PROSEDUR konflik dengan atribut INTENT dalam '%s' di %L"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "Ukuran array yang diasumsikan di %L harus berupa sebuah argumen dummy"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "Bentuk array yang diasumsikan di %L harus berupa sebuah argumen dummy"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "Simbol di %L bukan sebuah variabel DUMMY"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr "'%s' di %L tidak dapat memiliki VALUE atribut karena ini bukan sebuah argumen dummy"
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "Karakter dummy variabel '%s' di %L dengan atribut NILAI harus memiliki panjang konstant"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr "C interoperable karakter dummy variabel '%s' di %L dengan atribut NILAI harus memiliki panjang satu"
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr "Tipe turunana '%s' di %L adalah tipe '%s', yang mana belum didefinisikan"
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr "Variabel '%s' di %L tidak dapat berupa BIND(C) karena ini bukan sebuah blok UMUM atau dideklarasikan dalam tingkat cakupan modul"
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "Fortran 2003: PUBLIK %s '%s' di %L dari tipe turunan '%s' PRIVATE"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr "INTENT(OUT) dummy argumen '%s' di %L adalah UKURAN DIASUMSIKAN dan jadi tidak dapat memiliki sebuah penginisialisasi baku"
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "Dummy argumen '%s' di %L tidak dapat berupa INTENT(OUT)"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Function result '%s' at %L cannot have an initializer"
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "Hasil fungsi '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array '%s' at %L cannot have a deferred shape"
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "Array '%s' di %L tidak dapat memiliki sebuah bentuk deferred"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Allocatable array '%s' at %L must have a deferred shape"
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "Array dapat dialokasikan '%s' di %L harus memiliki sebuah bentuk deferred"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "Prosedur dummy di %L tidak diperbolehkan dalam prosedur ELEMENTAL"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr "Threadprivate di %L bukan SAVEd"
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr "DATA BLOK elemen '%s' di %L harus berupa dalam COMMON"
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr "DATA array '%s' di %L harus dispesifikasikan dalam sebuah deklarasi sebelumnya"
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy '%s' at %L cannot have an initializer"
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "Dummy '%s' di %L tidak dapat memiliki sebuah penginisialisasi"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr "Daerah array tidak konstant di %L dalam pernyataan DATA"
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr "pernyataan DATA di %L memiliki lebih variabel daripada nilai"
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr "pernyataan DATA di %L memiliki lebih banyak nilai daripada variabel"
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "Label %d di %L didefinisikan tetapi tidak digunakan"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "Label %d di %L didefinisikan tetapi tidak dapat digunakan"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr "Tipe variabel turunan '%s' di %L harus memiliki atribut URUTAN untuk menjadi sebuah objek EKUIVALEN"
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr "Tipe variabel turunan '%s' di %L tidak dapat memiliki komponen DAPAT DIALOKASIKAN untuk menjadi sebuah objek EKUIVALEN"
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr "Tipe variabel turunan '%s' di %L dengan inisialisasi baku tidak dapat berada dalam EKUIVALEN dengan sebuah variabel dalam COMMON"
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr "Tipe variabel turunan '%s' di %L dengan komponen penunjuk tidak dapat berupa sebuah objek EKUIVALEN"
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "Sintaks error dalam pernyataan EKUIVALEN di %L"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr "Baik semua atau kosong dari objek dalam EKUIVALEN set di %L yang memiliki atribut TERPROTEKSI"
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr "Anggota blok umum '%s' di %L tidak dapat berupa sebuah objek EKUIVALEN dalam prosedur pure '%s'"
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Konstanta bernama '%s' di %L tidak dapat berupa sebuah objek EKUIVALEN"
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr "Array '%s' di %L dengan cakupan tidak-konstan tidak dapat berupa sebuah objek EKUIVALEN"
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Komponen struktur '%s' di %L tidak dapat berupa sebuah objek EKUIVALEN"
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "Substring di %L memiliki panjang nol"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "Fortran 2003: Fungsi PUBLIK '%s' di %L dari tipe '%s' PRIVATE"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "MASUKAN '%s' di %L tidak memiliki tipe IMPLISIT"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "Prosedur operator pengguna '%s' di %L harus berupa sebuah FUNGSI"
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr "Prosedur operator pengguna '%s' di %L tidak dapat berupa panjang karakter diasumsikan"
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "Prosedur operator pengguna '%s' di %L harus memiliki paling tida satu argumen"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr "Argumen pertama dari antar-muka operator di %L tidak dapat berupa pilihanonal"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "Argumen kedua dari antar-muka operator di %L tidak dapat berupa pilihanonal"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "Antar-muka operator di %L harus memiliki, paling tidak, dua argumen"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr "Prosedur berisi '%s' di %L dari sebuah prosedur PURE harus juga berupa PURE"
@@ -46282,18 +46348,18 @@ msgstr "Overlapping tidak sama penginisialisasi dalam EKUIVALEN di %L"
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr "BOZ konstan di %L terlalu besar (%ld vs %ld bits)"
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr "Membuat array sementara di %L untuk argumen '%s'"
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, fuzzy, gcc-internal-format
#| msgid "Possible frontend bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "Kemungkinan frontend bug: Ukuran array yang diturunkan tanpa penunjuk, atribut yang dapat dialokasikan atau tipe turunan tanpa komponen yang dapat dialokasikan."
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "tipe ekspresi buruk selama walk (%d)"
@@ -46556,7 +46622,7 @@ msgstr "real kind=8 tidak tersedia untuk pilihan -fdefault-real-8"
msgid "Array element size too big at %C"
msgstr "Ukuran elemen array terlalu besar"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code(): Pernyataan kode buruk"
@@ -46869,7 +46935,7 @@ msgstr "tidak dapat menentukan nama target untuk pelacakan ketergantungan"
msgid "internal error - invalid Utf8 name"
msgstr "internal error - nama utf8 tidak valid"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "sampah diakhir dari string tanda tangan"
@@ -49354,6 +49420,9 @@ msgstr "%H membuat pemilih untuk metode tidak ada %qE"
#~ msgid "use the -fno-jump-tables switch instead"
#~ msgstr "lebih baik gunakan pilihan -fno-jump-tables"
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs sepertinya salah nama interrupt handler"
+
#~ msgid "trampolines not supported"
#~ msgstr "trampolines tidak didukung"
@@ -50545,9 +50614,6 @@ msgstr "%H membuat pemilih untuk metode tidak ada %qE"
#~ msgid "type mismatch in not expression"
#~ msgstr "tipe tidak cocok dalam ekspresi tidak"
-#~ msgid "unexpected non-tuple"
-#~ msgstr "diduga bukan tuple"
-
#~ msgid "COND_EXPR with code in branches at the end of bb %d"
#~ msgstr "COND_EXPR dengan kode dalam percabangan di akhir dari bb %d"
@@ -50617,9 +50683,6 @@ msgstr "%H membuat pemilih untuk metode tidak ada %qE"
#~ msgid "Possible frontend bug: array constructor not expanded"
#~ msgstr "Kemungkinan bug frontend: array konstruktor tidak diekspan"
-#~ msgid "Function does not return a value"
-#~ msgstr "Fungsi tidak mengembalikan sebuah nilai"
-
#~ msgid "Function return value not set"
#~ msgstr "Fungsi mengembalikan nilai tidak diset"
diff --git a/gcc/po/ja.po b/gcc/po/ja.po
index 84447b6524f..f4fc5507394 100644
--- a/gcc/po/ja.po
+++ b/gcc/po/ja.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.6.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2011-10-30 18:48+0900\n"
"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -29,7 +29,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<ç„¡å>"
@@ -38,18 +38,18 @@ msgstr "<ç„¡å>"
msgid "({anonymous})"
msgstr "({ç„¡å})"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr "行末 (EOL) ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "%<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -57,17 +57,17 @@ msgstr "%<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "%<(%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr "%<,%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -78,19 +78,19 @@ msgstr "%<,%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr "%<)%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr "%<]%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -99,25 +99,25 @@ msgstr "%<]%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "%<;%>ã€%<,%> ã¾ãŸã¯ %<)%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr "%<}%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "%<{%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr "%<:%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr "%<while%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -126,39 +126,39 @@ msgstr "%<while%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
msgid "expected %<.%>"
msgstr "%<.%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr "%<@end%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr "%<>%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "%<,%> ã¾ãŸã¯ %<)%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "%<=%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "%<#pragma omp section%> ã¾ãŸã¯ %<}%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, gcc-internal-format
msgid "expected %<[%>"
msgstr "%<[%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(ç„¡å)"
@@ -330,12 +330,12 @@ msgstr "'%%l' 被演算å­ãŒ label ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "浮動å°æ•°å®šæ•°ã‚’使ã„æã­ã¾ã—ãŸ"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "被演算å­ã¨ã—ã¦ç„¡åŠ¹ãªå¼ã§ã™"
@@ -1229,19 +1229,19 @@ msgstr ""
msgid " inlined from %qs"
msgstr ""
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "ループãŒç„¡é™ã§ãªã„ã¨ä»®å®šã—ã¦ã„ã¾ã™"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "ç„¡é™ãƒ«ãƒ¼ãƒ—ã®å¯èƒ½æ€§ãŒã‚ã‚‹ã‚‚ã®ã‚’最é©åŒ–ã§ãã¾ã›ã‚“"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "ループカウンタãŒæº¢ã‚Œãªã„ã¨ä»®å®šã—ã¦ã„ã¾ã™"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "ループを最é©åŒ–ã§ãã¾ã›ã‚“。ループカウンタãŒæº¢ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
@@ -1407,16 +1407,16 @@ msgid "this is the insn:"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr "å†ãƒ­ãƒ¼ãƒ‰ã®è©¦ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ:"
@@ -2552,118 +2552,118 @@ msgstr "<戻り値>"
msgid "<unknown>"
msgstr "<ä¸æ˜Ž>"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "無効㪠%%H 値"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "無効㪠%%J 値"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "無効㪠%%r 値"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "無効㪠%%R 値"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "無効㪠%%N 値"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "無効㪠%%P 値"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "無効㪠%%h 値"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "無効㪠%%L 値"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "無効㪠%%m 値"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "無効㪠%%M 値"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "無効㪠%%U 値"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "無効㪠%%s 値"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "無効㪠%%C 値"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "無効㪠%%E 値"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr ""
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "無効㪠%%xn コード"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "述語付ã Thumb 命令"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "æ¡ä»¶ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã«ã‚る述語付ã命令"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "コード '%c' ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "無効ãªã‚·ãƒ•ãƒˆè¢«æ¼”ç®—å­"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2671,85 +2671,85 @@ msgstr "無効ãªã‚·ãƒ•ãƒˆè¢«æ¼”ç®—å­"
msgid "invalid operand for code '%c'"
msgstr "コード '%c' ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "命令ã¯æ±ºã—ã¦å®Ÿè¡Œã•ã‚Œã¾ã›ã‚“"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "被演算å­ãŒã‚ã‚Šã¾ã›ã‚“"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
msgid "function parameters cannot have __fp16 type"
msgstr "関数パラメータ㯠__fp16 åž‹ã‚’æŒã¦ã¾ã›ã‚“"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
msgid "functions cannot return __fp16 type"
msgstr "関数㌠__fp16 åž‹ã‚’è¿”ã—ã¾ã›ã‚“"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "アドレス被演算å­ã¯ Xã€Y ã¾ãŸã¯ Z レジスタã«å¯¾ã™ã‚‹åˆ¶ç´„ã‚’è¦æ±‚ã—ã¾ã™"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use %<&%> constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "å‡ºåŠ›è¢«æ¼”ç®—å­ %d 㯠%<&%> 制約を使用ã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "誤ã£ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚(reg+disp) ã§ã¯ã‚ã‚Šã¾ã›ã‚“:"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "bad address, not a constant):"
msgid "bad address, not a constant:"
msgstr "誤ã£ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚定数ã§ã¯ã‚ã‚Šã¾ã›ã‚“):"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "誤ã£ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚(reg+disp) ã§ã¯ã‚ã‚Šã¾ã›ã‚“:"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "誤ã£ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚post_inc ã¾ãŸã¯ pre_dec ã§ã¯ã‚ã‚Šã¾ã›ã‚“:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "コンパイラ内部エラー。誤ã£ãŸã‚¢ãƒ‰ãƒ¬ã‚¹:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "コンパイラ内部エラー。ä¸æ˜Žãªãƒ¢ãƒ¼ãƒ‰:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "無効ãªå‘½ä»¤:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "æ­£ã—ããªã„命令:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "ä¸æ˜Žãª move 命令:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "誤ã£ãŸã‚·ãƒ•ãƒˆå‘½ä»¤:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "コンパイラ内部エラー。正ã—ããªã„シフト:"
@@ -2765,8 +2765,8 @@ msgstr "無効㪠const_double 被演算å­"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2844,21 +2844,21 @@ msgstr "予期ã—ãªã„演算å­"
msgid "unrecognized address"
msgstr "èªè­˜ã§ããªã„アドレス"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "èªè­˜ã§ããªã„定数ã®ã‚ˆã†ãªã‚‚ã®"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "アドレス内ã®äºˆæœŸã—ãªã„副作用"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr "定義ã§ããªã„ call æ“作"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "PIC レジスタãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -2866,7 +2866,7 @@ msgstr "PIC レジスタãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "無効ãªè¢«æ¼”ç®—å­å‡ºåŠ›ã‚³ãƒ¼ãƒ‰"
@@ -2995,73 +2995,73 @@ msgstr "誤ã£ãŸ output_move_double 被演算å­"
msgid "bad output_condmove_single operand"
msgstr "誤ã£ãŸ output_condmove_single 被演算å­"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "被演算å­ã¨ã—ã¦ç„¡åŠ¹ãª UNSPEC ã§ã™"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr "局所動的 TLS å‚照無ã—㧠'%%&' ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "演算å­ã‚³ãƒ¼ãƒ‰ '%c' ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã‚µã‚¤ã‚ºã§ã™"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "被演算å­ã‚³ãƒ¼ãƒ‰ '%c' ã«ç„¡åŠ¹ãªè¢«æ¼”ç®—å­åž‹ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "被演算å­ã¯æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'D' ã§ã™"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'C' ã§ã™"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'F' ã§ã™"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'c' ã§ã™"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'f' ã§ã™"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is not a condition code, invalid operand code 'D'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "被演算å­ã¯æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'D' ã§ã™"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "被演算å­ã¯æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'Y' ã§ã™"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ '%c' ã§ã™"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "演算å­ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªåˆ¶ç´„ã§ã™"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "ä¸æ˜Žãªå‘½ä»¤ãƒ¢ãƒ¼ãƒ‰"
@@ -3090,35 +3090,35 @@ msgstr "環境変数 DJGPP ãŒå­˜åœ¨ã—ãªã„ファイル '%s' を指ã—ã¦ã„ã
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "環境変数 DJGPP ãŒå£Šã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ« '%s' を示ã—ã¦ã„ã¾ã™ã€‚"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, c-format
msgid "invalid %%G mode"
msgstr "無効㪠%%G モードã§ã™"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: ä¸æ˜Žãªã‚³ãƒ¼ãƒ‰ã§ã™"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "%<__fpreg%> ã‹ã‚‰ã®ç„¡åŠ¹ãªå¤‰æ›ã§ã™"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "%<__fpreg%> ã¸ã®ç„¡åŠ¹ãªå¤‰æ›ã§ã™"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "%<__fpreg%> ã«é–¢ã™ã‚‹ç„¡åŠ¹ãªæ“作ã§ã™"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "無効㪠%%p 値ã§ã™"
@@ -3197,7 +3197,7 @@ msgid "post-increment address is not a register"
msgstr "後置増分アドレスãŒãƒ¬ã‚¸ã‚¹ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "誤ã£ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™"
@@ -3360,87 +3360,87 @@ msgstr "-mno-altivec 㯠vsx を無効ã«ã—ã¾ã™"
msgid "bad move"
msgstr "誤ã£ãŸ move ã§ã™"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, c-format
msgid "invalid %%c value"
msgstr "無効㪠%%c 値ã§ã™"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "無効㪠%%f 値ã§ã™"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "無効㪠%%F 値ã§ã™"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "無効㪠%%G 値ã§ã™"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "無効㪠%%j コードã§ã™"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "無効㪠%%J コードã§ã™"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "無効㪠%%k 値ã§ã™"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "無効㪠%%K 値ã§ã™"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "無効㪠%%O 値ã§ã™"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "無効㪠%%q 値ã§ã™"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "無効㪠%%S 値ã§ã™"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "無効㪠%%T 値ã§ã™"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "無効㪠%%u 値ã§ã™"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "無効㪠%%v 値ã§ã™"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "無効㪠%%x 値ã§ã™"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "無効㪠%%y 値ã§ã™ã€‚'Z' 制約を使用ã—ã¦ã¿ã¦ãã ã•ã„"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "プロトタイプãŒç„¡ã„関数㫠AltiVec 引数ãŒæ¸¡ã•ã‚Œã¾ã—ãŸ"
@@ -3539,62 +3539,62 @@ msgstr "%%R ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
msgid "invalid operand to %%S"
msgstr "%%S ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚㧠アーキテクãƒãƒ£/ABI ãŒç•°ãªã‚Šã¾ã™"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚㧠ABI ãŒç•°ãªã‚Šã¾ã™"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚ã§ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ãŒç•°ãªã‚Šã¾ã™"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "無効㪠%%Y 被演算å­ã§ã™"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "無効㪠%%A 被演算å­ã§ã™"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "無効㪠%%B 被演算å­ã§ã™"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%C operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%D operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "無効㪠%%f 被演算å­ã§ã™"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "無効㪠%%s 被演算å­ã§ã™"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "long long 定数ã¯æœ‰åŠ¹ãªå³å€¤è¢«æ¼”ç®—å­ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "浮動å°æ•°å®šæ•°ã¯æœ‰åŠ¹ãªå³å€¤è¢«æ¼”ç®—å­ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -3619,7 +3619,7 @@ msgstr "'o' 被演算å­ãŒå®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: ä¸æ˜Žãªã‚³ãƒ¼ãƒ‰ã§ã™"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "無効㪠%%c 被演算å­ã§ã™"
@@ -3635,25 +3635,25 @@ msgstr "無効㪠%%d 被演算å­ã§ã™"
msgid "invalid %%H specifier"
msgstr "無効㪠%%L コードã§ã™"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3665,7 +3665,7 @@ msgstr "無効㪠%%P 被演算å­ã§ã™"
msgid "invalid %%%c operand"
msgstr "無効㪠%%c 被演算å­ã§ã™"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3677,42 +3677,42 @@ msgstr "無効㪠%%P 被演算å­ã§ã™"
msgid "invalid operand for 'r' specifier"
msgstr "'b' 修飾å­ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªè¢«æ¼”ç®—å­"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "無効㪠%%P 被演算å­ã§ã™"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -3777,11 +3777,11 @@ msgstr ""
msgid "address offset not a constant"
msgstr "アドレスオフセットãŒå®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "候補 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "候補 2:"
@@ -4008,7 +4008,7 @@ msgstr ""
msgid "candidates are:"
msgstr "候補:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4054,48 +4054,48 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "å˜é …マイナスã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "å˜é …プラスã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "ビットå転ã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "abs ã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "複素共役(~)ã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
msgid "in argument to unary !"
msgstr ""
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4355,7 +4355,7 @@ msgstr ""
msgid "Bad type in constant expression"
msgstr "定数å¼ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
#, fuzzy
msgid "Unexpected end of module"
msgstr "予期ã—ãªã„型㌠`id' (%s) ã«æŒ‡å®šã•ã‚Œã¾ã—ãŸ"
@@ -4385,11 +4385,11 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "代入"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
#, fuzzy
msgid "pointer assignment"
msgstr "代入"
@@ -4475,47 +4475,47 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr ""
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
msgid "End expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr "DEALLOCATE オブジェクト"
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr "ALLOCATE オブジェクト"
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr "STAT 変数"
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr "ERRMSG 変数"
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4524,7 +4524,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4594,7 +4594,7 @@ msgstr "æ­£ã—ããªã„関数戻り値ã§ã™"
msgid "Memory allocation failed"
msgstr "メモリé…ç½®ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -4802,7 +4802,7 @@ msgstr "-march=... 㨠-mcpu=... ã®ä¸¡æ–¹ã‚’指定ã—ãªã„ã§ãã ã•ã„"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr "gprof(1) を使ã†ã¨ã㯠'-p' ã®ä»£ã‚ã‚Šã« '-pg' を使用ã—ã¦ãã ã•ã„"
@@ -4861,6 +4861,12 @@ msgstr "shared 㨠mdll ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
msgid "static is not supported on TPF-OS"
msgstr "static 㯠TPF-OS ã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+#, fuzzy
+#| msgid "consider using '-pg' instead of '-p' with gprof(1)"
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr "gprof(1) を使ã†ã¨ã㯠'-p' ã®ä»£ã‚ã‚Šã« '-pg' を使用ã—ã¦ãã ã•ã„"
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "-EB 㨠-EL ã®ä¸¡æ–¹ã‚’使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
@@ -4891,10 +4897,6 @@ msgstr "-mbig-endian 㨠-mlittle-endian ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
msgid "no processor type specified for linking"
msgstr "リンク用ã®ãƒ—ロセッサ型ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran 㯠-cpp ç„¡ã—ã§ã® -E 使用をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 ã¯ãƒªãƒˆãƒ«ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã‚µãƒãƒ¼ãƒˆã‚’è¡Œãªãˆã¾ã›ã‚“"
@@ -4947,6 +4949,10 @@ msgstr "objc-cpp-output ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸã€‚代ã‚ã‚Šã« objective-c-cpp-
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "-shared オプション㯠VAX ELF 用ã«ã¯ç¾åœ¨ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran 㯠-cpp ç„¡ã—ã§ã® -E 使用をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni 㨠-femit-class-files ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
@@ -8091,6 +8097,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -10486,18 +10496,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "システムãŠã‚ˆã³ GCC 固有ã®ãƒžã‚¯ãƒ­ã‚’事å‰å®šç¾©ã—ãªã„"
#: go/lang.opt:42
+msgid "Add explicit checks for division by zero"
+msgstr ""
+
+#: go/lang.opt:46
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
+msgstr ""
+
+#: go/lang.opt:50
msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr "-fgo-dump-<type>\tGo フロントエンドã®å†…部情報をダンプã™ã‚‹"
-#: go/lang.opt:46
+#: go/lang.opt:54
msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
msgstr ""
-#: go/lang.opt:50
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
msgstr ""
-#: go/lang.opt:54
+#: go/lang.opt:66
msgid "Functions which return values must end with return statements"
msgstr "戻り値を返ã™é–¢æ•°ã¯ return æ–‡ã§çµ‚了ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ã“ã¨ã¨ã™ã‚‹"
@@ -12041,240 +12063,251 @@ msgstr "共有ライブラリを作æˆã™ã‚‹"
msgid "Create a position independent executable"
msgstr "ä½ç½®éžä¾å­˜å®Ÿè¡Œå¯èƒ½ãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã™ã‚‹"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
msgid "invalid use of type"
msgstr "無効ãªåž‹ã®ä½¿ç”¨æ³•ã§ã™"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-msgid "floating point constant truncated to integer"
-msgstr "浮動å°æ•°ç‚¹å®šæ•°ãŒæ•´æ•°ã«åˆ‡ã‚Šè©°ã‚られã¾ã—ãŸ"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr "定数ãŒè‡ªèº«ã‚’å‚ç…§ã—ã¦ã„ã¾ã™"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
msgid "expected numeric type"
msgstr "数値型ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "expected integer or boolean type"
+msgid "expected boolean type"
+msgstr "æ•´æ•°ã¾ãŸã¯çœŸå½åž‹ãŒäºˆæœŸã•ã‚Œã¾ã™"
+
+#: go/gofrontend/expressions.cc:3911
msgid "expected integer or boolean type"
msgstr "æ•´æ•°ã¾ãŸã¯çœŸå½åž‹ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
msgid "invalid operand for unary %<&%>"
msgstr "å˜é …æ¼”ç®—å­ %<&%> ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
msgid "expected pointer"
msgstr "ãƒã‚¤ãƒ³ã‚¿ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
msgid "incompatible types in binary expression"
msgstr ""
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
msgid "shift of non-integer operand"
msgstr "被演算å­ãŒéžæ•´æ•°åž‹ã®ã‚·ãƒ•ãƒˆæ¼”ç®—ã§ã™"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr "シフト数ãŒç¬¦å·ç„¡ã—æ•´æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
msgid "negative shift count"
msgstr "è² ã®ã‚·ãƒ•ãƒˆæ•°ã§ã™"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
msgid "object is not a method"
msgstr "オブジェクトãŒãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
msgid "method type does not match object type"
msgstr "メソッド型ãŒã‚ªãƒ–ジェクト型ã«ä¸€è‡´ã—ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid argument to built-in function"
msgid "invalid use of %<...%> with builtin function"
msgstr "組ã¿è¾¼ã¿é–¢æ•°ã¸ã®ç„¡åŠ¹ãªå¼•æ•°ã§ã™"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
msgid "not enough arguments"
msgstr "å分ãªå¼•æ•°ãŒã‚ã‚Šã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
msgid "too many arguments"
msgstr "引数ãŒå¤šã™ãŽã¾ã™"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument must be a constant"
msgid "argument 1 must be a map"
msgstr "引数ã¯å®šæ•°ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
msgid "invalid type for make function"
msgstr ""
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "'A' 用ã®èª¤ã£ãŸå‘½ä»¤ã§ã™"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments to %qE"
msgid "too many arguments to make"
msgstr "%qE ã¸ã®å¼•æ•°ãŒå¤šã™ãŽã¾ã™"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
msgid "argument must be array or slice or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
msgid "unsupported argument type to builtin function"
msgstr "組ã¿è¾¼ã¿é–¢æ•°ã¸ã®ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„引数ã®åž‹ã§ã™"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
msgid "argument must be channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
msgid "argument must be a field reference"
msgstr "引数ã¯ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å‚ç…§ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
msgid "left argument must be a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr "è¦ç´ ã®åž‹ãŒåŒã˜ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "last argument must be an immediate"
msgid "first argument must be []byte"
msgstr "最後ã®å¼•æ•°ã¯å³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "argument must be a constant"
msgid "second argument must be slice or string"
msgstr "引数ã¯å®šæ•°ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "parameter %u has void type"
msgid "argument 2 has invalid type"
msgstr "仮引数 %u ㌠void åž‹ã‚’æŒã£ã¦ã„ã¾ã™"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
msgid "argument must have complex type"
msgstr "引数ã¯è¤‡ç´ æ•°åž‹ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
msgid "complex arguments must have identical types"
msgstr "引数ã¯è¤‡ç´ æ•°åž‹ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
msgid "complex arguments must have floating-point type"
msgstr "引数ã¯è¤‡ç´ æ•°åž‹ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+msgid "invalid use of %<...%> with non-slice"
+msgstr "トップレベルã§ã® `this' ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
msgid "expected function"
msgstr "関数ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
msgid "incompatible type for receiver"
msgstr ""
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "éžãƒ¡ãƒ³ãƒé–¢æ•°ã§ã® `this' ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
msgid "number of results does not match number of values"
msgstr "çµæžœã®æ•°ãŒå€¤ã®æ•°ã¨ä¸€è‡´ã—ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr "æ·»ãˆå­—ã¯æ•´æ•°ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
msgid "incompatible type for map index"
msgstr ""
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr "インターフェースã¾ãŸã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¸ã®ãƒã‚¤ãƒ³ã‚¿ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
msgid "too many expressions for struct"
msgstr ""
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
msgid "too few expressions for struct"
msgstr ""
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
msgid "invalid unsafe.Pointer conversion"
msgstr "無効㪠unsafe.Pointer 変æ›ã§ã™"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
msgid "expected channel"
msgstr ""
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
msgid "invalid left hand side of assignment"
msgstr "無効ãªä»£å…¥ã®å·¦è¾ºã§ã™"
@@ -12305,19 +12338,19 @@ msgstr "return 文内ã®å€¤ãŒå¤šã™ãŽã¾ã™"
msgid "expected boolean expression"
msgstr "真å½å¼ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
msgid "incompatible types in send"
msgstr ""
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -12379,71 +12412,71 @@ msgstr "明示的ãªå¤‰æ›ãŒå¿…è¦ã§ã™"
msgid "cannot use type %s as type %s"
msgstr "åž‹ %s ã‚’åž‹ %s ã¨ã—ã¦ä½¿ç”¨ã§ãã¾ã›ã‚“"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
msgid "different receiver types"
msgstr ""
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
msgid "different number of parameters"
msgstr "引数ã®æ•°ãŒç•°ãªã‚Šã¾ã™"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
msgid "different parameter types"
msgstr "引数ã®åž‹ãŒç•°ãªã‚Šã¾ã™"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr "çµæžœã®æ•°ãŒç•°ãªã‚Šã¾ã™"
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr "çµæžœã®åž‹ãŒç•°ãªã‚Šã¾ã™"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr "暗黙的ãªä»£å…¥ %s%s%s ãŒéš ã•ã‚ŒãŸãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ %s%s%s ã«è¡Œã‚ã‚Œã¾ã™"
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr "明示的ãªå¤‰æ›ãŒå¿…è¦ã§ã™ã€‚存在ã—ãªã„メソッド %s%s%s ã§ã™"
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, c-format
msgid "incompatible type for method %s%s%s"
msgstr "メソッド %s%s%s ã¸ã®äº’æ›æ€§ã®ãªã„åž‹ã§ã™"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr ""
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr "インターフェース型ã¸ã®ãƒã‚¤ãƒ³ã‚¿ãŒãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã£ã¦ã„ã¾ã›ã‚“"
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
msgid "type has no methods"
msgstr "åž‹ãŒãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã£ã¦ã„ã¾ã›ã‚“"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr "曖昧ãªãƒ¡ã‚½ãƒƒãƒ‰ %s%s%s ã§ã™"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, c-format
msgid "missing method %s%s%s"
msgstr "メソッド %s%s%s ãŒã‚ã‚Šã¾ã›ã‚“"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr "メソッド %s%s%s ã«ã¯ãƒã‚¤ãƒ³ã‚¿ãŒå¿…è¦ã§ã™"
@@ -12510,7 +12543,7 @@ msgstr "%<__builtin_prefetch%> ã¸ã®ç¬¬ä¸‰å¼•æ•°ã¯å®šæ•°ã§ãªã‘ã‚Œã°ã„ã‘ã
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "無効㪠%<__builtin_prefetch%> ã®ç¬¬ä¸‰å¼•æ•°ã§ã™ã€‚0 を使用ã—ã¾ã™"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "関数 %<va_start%> ã¸ã®å¼•æ•°ãŒå°‘ãªã™ãŽã¾ã™"
@@ -12532,7 +12565,7 @@ msgstr ""
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "ã“ã®ã‚³ãƒ¼ãƒ‰ã¾ã§åˆ°é”ã—ãŸå ´åˆã€ãƒ—ログラムã¯ä¸­æ­¢ã•ã‚Œã¾ã™"
@@ -12617,7 +12650,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "%K %<__builtin_va_arg_pack ()%> ã®ç„¡åŠ¹ãªä½¿ç”¨æ³•ã§ã™"
@@ -12711,8 +12744,8 @@ msgstr "%K ヒープã§ã¯ãªã„オブジェクトを free ã™ã‚‹è©¦ã¿ã§ã™"
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "void ã®å€¤ãŒæœ¬æ¥ã®æ„味通りã«ç„¡è¦–ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
@@ -12987,7 +13020,7 @@ msgstr "%q+D ã®å®£è¨€ã¯å¤§åŸŸå®£è¨€ã‚’éš ã—ã¾ã™"
msgid "declaration of %q+D shadows a previous local"
msgstr "%q+D ã®å†å®£è¨€ã¯å‰ã®å±€æ‰€å®£è¨€ã‚’éš ã—ã¾ã™"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "éš ã•ã‚ŒãŸå®£è¨€ã¯ã“ã“ã§ã™"
@@ -13092,7 +13125,7 @@ msgstr ""
msgid "%qE defined as wrong kind of tag"
msgstr "%qE ãŒèª¤ã£ãŸç¨®é¡žã®ã‚¿ã‚°ã¨ã—ã¦å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "%<restrict%> ã®èª¤ã£ãŸä½¿ç”¨æ³•ã§ã™"
@@ -13213,7 +13246,7 @@ msgstr "仮引数 %qD ãŒåˆæœŸåŒ–ã•ã‚Œã¾ã™"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "å¯å¤‰é•·ã‚ªãƒ–ジェクトãŒåˆæœŸåŒ–ã•ã‚Œãªã„よã†ã§ã™"
@@ -13223,7 +13256,7 @@ msgstr "å¯å¤‰é•·ã‚ªãƒ–ジェクトãŒåˆæœŸåŒ–ã•ã‚Œãªã„よã†ã§ã™"
msgid "variable %qD has initializer but incomplete type"
msgstr "変数 %qD ã«ã¯åˆæœŸåŒ–å­ãŒã‚ã‚Šã¾ã™ãŒä¸å®Œå…¨åž‹ã§ã™"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "noinline 属性ãŒä¸Žãˆã‚‰ã‚ŒãŸã‚¤ãƒ³ãƒ©ã‚¤ãƒ³é–¢æ•° %q+D ã§ã™"
@@ -13253,7 +13286,7 @@ msgstr "%q+D 内ã«é…列ã®ã‚µã‚¤ã‚ºãŒã‚ã‚Šã¾ã›ã‚“"
msgid "zero or negative size array %q+D"
msgstr "0 ã¾ãŸã¯è² ã®ã‚µã‚¤ã‚ºã®é…列 %q+D ã§ã™"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "%q+D ã®è¨˜æ†¶åŸŸã‚µã‚¤ã‚ºãŒä¸æ˜Žã§ã™"
@@ -13363,7 +13396,7 @@ msgstr "é…列ã®ã‚µã‚¤ã‚ºã‚’評価ã§ãã¾ã›ã‚“"
msgid "variable length array %qE is used"
msgstr "å¯å¤‰é•·é…列 %qE ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr "å¯å¤‰é•·é…列ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
@@ -13448,7 +13481,7 @@ msgstr "仮引数 %qE 用ã«è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
msgid "storage class specified for unnamed parameter"
msgstr "ç„¡å仮引数用ã«è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "åž‹å用ã«è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
@@ -13597,7 +13630,7 @@ msgstr "åž‹åã¯é…列を返ã™é–¢æ•°ã¨ã—ã¦å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
msgid "function definition has qualified void return type"
msgstr "関数定義㌠void 戻り型ã®ä¿®é£¾å­ã‚’æŒã£ã¦ã„ã¾ã™"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "関数戻り値ã®åž‹ä¿®é£¾å­ã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
@@ -13716,7 +13749,7 @@ msgstr "ISO C 㯠const ã‚„ volatile ã®é–¢æ•°åž‹ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "構造体ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã¯å¯å¤‰åž‹ã‚’æŒã¤ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "変数ã¾ãŸã¯ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ %qE ㌠void ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
@@ -14144,7 +14177,7 @@ msgstr "引数 %qD ãŒçµ„ã¿è¾¼ã¿ãƒ—ロトタイプã¨ä¸€è‡´ã—ã¾ã›ã‚“"
msgid "argument %qD doesn%'t match prototype"
msgstr "引数 %qD ãŒãƒ—ロトタイプã¨ä¸€è‡´ã—ã¾ã›ã‚“"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "éž void を戻ã™é–¢æ•°å†…ã« return æ–‡ãŒã‚ã‚Šã¾ã›ã‚“"
@@ -14337,7 +14370,7 @@ msgstr "è­˜åˆ¥å­ %qE 㯠C++ 予約語ã¨ç«¶åˆã—ã¦ã„ã¾ã™"
msgid "ISO C forbids an empty translation unit"
msgstr ""
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C ã§ã¯é–¢æ•°å¤–ã§ã®ä½™åˆ†ãª %<;%> を許å¯ã—ã¦ã„ã¾ã›ã‚“"
@@ -14347,7 +14380,7 @@ msgstr "ISO C ã§ã¯é–¢æ•°å¤–ã§ã®ä½™åˆ†ãª %<;%> を許å¯ã—ã¦ã„ã¾ã›ã‚“"
msgid "unknown type name %qE"
msgstr "ä¸æ˜Žãªåž‹å %qE ã§ã™"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "宣言指定ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -14357,7 +14390,7 @@ msgstr "宣言指定ãŒäºˆæœŸã•ã‚Œã¾ã™"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "%<;%>ã€è­˜åˆ¥å­ã¾ãŸã¯ %<(%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr ""
@@ -14377,7 +14410,7 @@ msgstr "packed 属性ã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“"
msgid "data definition has no type or storage class"
msgstr "データ定義ãŒåž‹ã¾ãŸã¯è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ã‚’æŒã£ã¦ã„ã¾ã›ã‚“"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "%<,%> ã¾ãŸã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -14405,7 +14438,7 @@ msgstr "ISO C99 㯠%<_Static_assert%> をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 㯠%<_Static_assert%> をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "文字列リテラルãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -14432,18 +14465,18 @@ msgstr "é™çš„アサーションã«å¤±æ•—ã—ã¾ã—ãŸ: %E"
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "識別å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "列挙型リストã®æœ€å¾Œã«ã‚³ãƒ³ãƒžãŒã‚ã‚Šã¾ã™"
@@ -14575,7 +14608,7 @@ msgstr "ISO C90 ã¯å®£è¨€ã¨ã‚³ãƒ¼ãƒ‰ã®æ··åˆã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
msgid "expected %<}%> before %<else%>"
msgstr "%<}%> ㌠%<else%> ã®å‰ã«äºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr "%<else%> ã®å‰ã« %<if%> ãŒã‚ã‚Šã¾ã›ã‚“"
@@ -14604,17 +14637,17 @@ msgstr "識別å­ã¾ãŸã¯ %<*%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "æ–‡ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "%<if%> 文内ã®ç©ºã®æœ¬ä½“ã¯ä¸­æ‹¬å¼§ã§æ‹¬ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "%<else%> 文内ã®ç©ºã®æœ¬ä½“ã¯ä¸­æ‹¬å¼§ã§æ‹¬ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™"
@@ -14682,7 +14715,7 @@ msgstr "ISO C++ ã¯åå‰ã¤ã戻り値を許å¯ã—ã¾ã›ã‚“"
msgid "cannot take address of %qs"
msgstr "ビットフィールド %qD ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã§ãã¾ã›ã‚“"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "å¼ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -14725,261 +14758,261 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "%<__builtin_longjmp%> ã®ç¬¬äºŒå¼•æ•°ã¯ 1 ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments to function %<__builtin_next_arg%>"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "関数 %<__builtin_next_arg%> ã¸ã®å¼•æ•°ã®æ•°ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "複åˆãƒªãƒ†ãƒ©ãƒ«ãŒå¯å¤‰ã‚µã‚¤ã‚ºã‚’æŒã£ã¦ã„ã¾ã™"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C89 ã¯è¤‡åˆãƒªãƒ†ãƒ©ãƒ«ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "識別å­ã¾ãŸã¯ %<)%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "メソッド定義内ã§ä½™åˆ†ãªã‚»ãƒŸã‚³ãƒ­ãƒ³ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr "メソッド属性を指定ã™ã‚‹ã®ã¯æœ€å¾Œã®ã¿ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr "メソッド属性定義ã®å¾Œã« %<;%> ã¾ãŸã¯ %<{%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:7753
+#: c-parser.c:7758
#, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "objective-c メソッド定義ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "åž‹ã¾ãŸã¯è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒã“ã“ã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“ã€"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr "ä¸æ˜Žãª property 属性ã§ã™"
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "%<#pragma pack%> ã®å¾Œã« %<(%> ãŒã‚ã‚Šã¾ã›ã‚“ - 無視ã•ã‚Œã¾ã—ãŸ"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "%<#pragma pack%> ã®å¾Œã« %<(%> ãŒã‚ã‚Šã¾ã›ã‚“ - 無視ã•ã‚Œã¾ã—ãŸ"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "%<setter%> 属性ã¯ä¸€å›žã®ã¿æŒ‡å®šã§ãã¾ã™"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr "setter å㯠%<:%> ã§çµ‚端ã•ã‚Œãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "%<getter%> 属性ã¯ä¸€å›žã®ã¿æŒ‡å®šã§ãã¾ã™"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> ã¯è¤‡åˆæ–‡å†…ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr "%<#pragma omp flush%> ã¯è¤‡åˆæ–‡å†…ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%> ã¯è¤‡åˆæ–‡å†…ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%> ã¯è¤‡åˆæ–‡å†…ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%> ã¯æœ€åˆã«ç„¡ã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr "%qs å¥ãŒå¤šã™ãŽã¾ã™"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr ""
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "%<none%> ã¾ãŸã¯ %<shared%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr "æ•´æ•°å¼ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr "%<num_threads%> 値ã¯æ­£ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, fuzzy, gcc-internal-format
#| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "%<+%>ã€%<*%>ã€%<-%>ã€%<&%>ã€%<^%>ã€%<|%>ã€%<&&%> ã¾ãŸã¯ %<||%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr "スケジュール %<runtime%> 㯠%<chunk_size%> 仮引数をã¨ã‚Šã¾ã›ã‚“"
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr "スケジュール %<auto%> 㯠%<chunk_size%> 仮引数をã¨ã‚Šã¾ã›ã‚“"
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "`無効ãªã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ç¨®é¡žã§ã™"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "%<#pragma omp%> å¥ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs 㯠%qs 用ã«ã¯æœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "invalid operator for %<#pragma omp atomic%>"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "%<#pragma omp atomic%> 用ã®ç„¡åŠ¹ãªæ¼”ç®—å­ã§ã™"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "%<#pragma omp atomic%> 用ã®ç„¡åŠ¹ãªæ¼”ç®—å­ã§ã™"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "%<(%> ã¾ãŸã¯ãƒ•ã‚¡ã‚¤ãƒ«çµ‚端 (EOF) ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr "for æ–‡ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr ""
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr "ループãŒå®Œå…¨ãªå…¥ã‚Œå­ã«ãªã£ã¦ã„ã¾ã›ã‚“"
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr "%qD ã¯å¤‰æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%qE ã¯æœ€åˆã«ä½¿ç”¨ã—ãŸå¾Œã« %<threadprivate%> ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "自動変数 %qE 㯠%<threadprivate%> ã«ãªã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%<threadprivate%> %qE ã¯ä¸å®Œå…¨åž‹ã‚’æŒã£ã¦ã„ã¾ã™"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -14989,7 +15022,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD ã¯ä¸å®Œå…¨åž‹ã‚’æŒã£ã¦ã„ã¾ã™"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "void å¼ã®ç„¡åŠ¹ãªä½¿ç”¨æ³•ã§ã™"
@@ -15055,67 +15088,73 @@ msgstr "ãƒã‚¤ãƒ³ã‚¿ã‚¿ãƒ¼ã‚²ãƒƒãƒˆåž‹ã¯ C++ ã§ã¯äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
msgid "function return types not compatible due to %<volatile%>"
msgstr "関数ã®æˆ»ã‚Šåž‹ã¯ %<volatile%> ã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "ä¸å®Œå…¨åž‹ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã«é–¢ã™ã‚‹è¨ˆç®—ã§ã™"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, fuzzy, gcc-internal-format
+#| msgid "defining a type in a compound literal is invalid in C++"
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr "複åˆãƒªãƒ†ãƒ©ãƒ«å†…ã§ã®åž‹å®šç¾©ã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT 㯠%qE ã¨ã„ã†åå‰ã®ãƒ¡ãƒ³ãƒã‚’æŒã£ã¦ã„ã¾ã›ã‚“"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "構造体ã¾ãŸã¯å…±ç”¨ä½“ã§ã¯ãªã„何ã‹ã®ãƒ¡ãƒ³ãƒ %qE ã®è¦æ±‚ã§ã™"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "ä¸å®Œå…¨åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã¸ã®é–“接å‚ç…§"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "%<void *%> ãƒã‚¤ãƒ³ã‚¿ã®å‚照を解除ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "添字ãŒä»˜ã‘られãŸå€¤ãŒã€é…列ã€ãƒã‚¤ãƒ³ã‚¿ã¾ãŸã¯ãƒ™ã‚¯ãƒˆãƒ«ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "é…列ã®æ·»å­—ãŒæ•´æ•°åž‹ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "添字ãŒä»˜ã‘られãŸå€¤ãŒé–¢æ•°ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr ""
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C 㯠%<register%> é…列ã«æ·»å­—を付ã‘ã‚‹ã“ã¨ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 ã¯å·¦ãŒå€¤ã§ãªã„é…列ã«æ·»å­—を付ã‘ã‚‹ã“ã¨ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr "列挙型定数ãŒã“ã“ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "呼ã³å‡ºã•ã‚ŒãŸã‚ªãƒ–ジェクト %qE ã¯é–¢æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -15123,372 +15162,372 @@ msgstr "呼ã³å‡ºã•ã‚ŒãŸã‚ªãƒ–ジェクト %qE ã¯é–¢æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "関数ãŒäº’æ›æ€§ã®ãªã„型を通ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "修飾å­ä»˜ã void 戻り型ã®é–¢æ•°ãŒå‘¼ã³å‡ºã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
#| msgid "the last argument must be an 8-bit immediate"
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "最後ã®å¼•æ•°ã¯ 8 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "%<__builtin_longjmp%> ã®ç¬¬äºŒå¼•æ•°ã¯ 1 ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "メソッド %qE ã¸ã®å¼•æ•°ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "関数 %qE ã¸ã®å¼•æ•°ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, gcc-internal-format
msgid "declared here"
msgstr "ã“ã“ã§å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "æ­£å¼ãª %d 番目ã®ä»®å¼•æ•°ã®åž‹ãŒä¸å®Œå…¨ã§ã™"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯æµ®å‹•å°æ•°åž‹ã§ã¯ãªãæ•´æ•°åž‹ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯è¤‡ç´ æ•°åž‹ã§ã¯ãªãæ•´æ•°åž‹ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯æµ®å‹•å°æ•°ç‚¹åž‹ã§ã¯ãªã複素数型ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯æ•´æ•°åž‹ã§ã¯ãªã浮動å°æ•°åž‹ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯æ•´æ•°åž‹ã§ã¯ãªã複素数型ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯è¤‡ç´ æ•°åž‹ã§ã¯ãªã浮動å°æ•°åž‹ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯ %<float%> (%<double%> ã§ã¯ãªã) ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯ %qT (%qT ã§ã¯ãªã) ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯ç•°ãªã‚‹å¹…ã§ã™"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯ç¬¦å·ç„¡ã—ã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "プロトタイプã«ã‚ˆã‚‹ã¨æ¸¡ã—ã¦ã„ã‚‹ %d 番目㮠%qE ã®å¼•æ•°ã¯ç¬¦å·ä»˜ãã¨ã—ã¦ã§ã™"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "関数ã¸å¼•æ•°ã‚’渡ã™ã¨ãã« %qT ã‹ã‚‰ %qT ã¸æš—黙的ã«å¤‰æ›ã•ã‚Œã¾ã™"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "関数 %qE ã¸æ¸¡ã™å¼•æ•°ãŒå°‘ãªã™ãŽã¾ã™"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "文字列リテラルã®æ¯”較çµæžœã¯ä¸å®šã§ã™"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "%qT 㨠%qT ã®æ¯”較ã§ã™"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, fuzzy, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "`void *' åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã®å·®ã‚’求ã‚よã†ã¨ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "関数ãƒã‚¤ãƒ³ã‚¿ã®å·®ã‚’求ã‚よã†ã¨ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, fuzzy, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C ã¯è¤‡ç´ å…±å½¹ç”¨ã® `~' ã‚’å—ã‘付ã‘ã¾ã›ã‚“"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "å˜é …感嘆符(!)ã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr "列挙値ã®å¢—分㯠C++ ã§ã¯ç„¡åŠ¹ã§ã™"
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr "列挙値ã®æ¸›åˆ†ã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C ã¯è¤‡ç´ æ•°åž‹ã«é–¢ã™ã‚‹ %<++%> 㨠%<--%> をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "増分ã™ã‚‹å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "減分ã™ã‚‹å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "ä¸æ˜Žãªæ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã®å¢—分ã§ã™"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "ä¸æ˜Žãªæ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã®æ¸›åˆ†ã§ã™"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr "%<void%> åž‹ã®å¼ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "読ã¿å–り専用ä½ç½® %qE ã¸ã®ä»£å…¥ã§ã™"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "読ã¿å–り専用ä½ç½® %qE ã®å¢—分ã§ã™"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "読ã¿å–り専用ä½ç½® %qE ã®æ¸›åˆ†ã§ã™"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "ビットフィールド %qD ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã§ãã¾ã›ã‚“"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "帯域レジスタ変数 %qD ãŒå…¥ã‚Œå­ã«ãªã£ãŸé–¢æ•°å†…ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "レジスタ変数 %qD ãŒå…¥ã‚Œå­ã«ãªã£ãŸé–¢æ•°å†…ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "大域レジスタ変数 %qD ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒè¦æ±‚ã•ã‚Œã¾ã—ãŸ"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "レジスタ変数 %qD ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒè¦æ±‚ã•ã‚Œã¾ã—ãŸ"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr ""
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C ã¯ç‰‡å´ã ã‘㌠void ã¨ãªã‚‹æ¡ä»¶å¼ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr ""
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C 㯠%<void *%> ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿é–“ã®æ¯”較å¼ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "æ¡ä»¶å¼å†…ã§ãƒã‚¤ãƒ³ã‚¿åž‹ãŒä¸€è‡´ã—ã¾ã›ã‚“"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "æ¡ä»¶å¼å†…ã§ãƒã‚¤ãƒ³ã‚¿åž‹ã¨æ•´æ•°åž‹ãŒé©åˆã—ã¾ã›ã‚“"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "æ¡ä»¶å¼ã§ã®åž‹ã®çµ„åˆã‚ã›ãŒé©åˆã—ã¾ã›ã‚“"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "カンマ演算å­ã®å·¦å´ã®å¼ã«åŠ¹åŠ›ãŒã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
msgid "cast adds %q#v qualifier to function type"
msgstr ""
-#: c-typeck.c:4543
+#: c-typeck.c:4560
msgid "cast discards %q#v qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "キャストãŒé…列型を指定ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "キャストã¯é–¢æ•°åž‹ã‚’指定ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C ã¯éžã‚¹ã‚«ãƒ©ãƒ¼ã‹ã‚‰åŒã˜åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C ã¯å…±ç”¨ä½“åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "共用体ã®ä¸­ã«ãªã„åž‹ã‹ã‚‰å…±ç”¨ä½“åž‹ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ç•°ãªã‚‹ã‚µã‚¤ã‚ºã®æ•´æ•°ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã™"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "åž‹ %qT ã®é–¢æ•°å‘¼ã³å‡ºã—ã‹ã‚‰ä¸€è‡´ã—ãªã„åž‹ %qT ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã™"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "ç•°ãªã‚‹ã‚µã‚¤ã‚ºã®æ•´æ•°ã‹ã‚‰ãƒã‚¤ãƒ³ã‚¿ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã™"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C ã¯é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ã‚ªãƒ–ジェクトãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã®å¤‰æ›ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C ã¯ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰é–¢æ•°ã®ãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã®å¤‰æ›ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr "キャスト内ã§ã®åž‹å®šç¾©ã¯ C++ 内ã§ã¯ç„¡åŠ¹ã§ã™"
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr "代入内ã§ã®åˆ—挙型ã®å¤‰æ›ã¯ C++ 内ã§ã¯ç„¡åŠ¹ã§ã™"
@@ -15500,686 +15539,686 @@ msgstr "代入内ã§ã®åˆ—挙型ã®å¤‰æ›ã¯ C++ 内ã§ã¯ç„¡åŠ¹ã§ã™"
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "%d 番目㮠%qE ã®å¼•æ•°ã‚’渡ã™ã¨ãã®åˆ—挙型ã®å¤‰æ›ã¯ C++ 内ã§ã¯ç„¡åŠ¹ã§ã™"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr "åˆæœŸåŒ–内ã§ã®åˆ—挙型ã®å¤‰æ›ã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr "return 内ã§ã®åˆ—挙型ã®å¤‰æ›ã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, fuzzy, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "å‚照型ã«å¯¾ã—㦠new ã‚’é©ç”¨ã§ãã¾ã›ã‚“"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
msgid "assignment discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
msgid "initialization discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
msgid "return discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C ã§ã¯å¼•æ•°ã‹ã‚‰å…±ç”¨ä½“ã¸ã®å¤‰æ›ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr ""
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "%d 番目㮠%qE ã®å¼•æ•°ã¯ format 属性ã®å€™è£œã®ã‚ˆã†ã§ã™"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "左辺ã¸ã®ä»£å…¥ã¯ format 属性ã®å€™è£œã®ã‚ˆã†ã§ã™"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "左辺ã®åˆæœŸåŒ–㯠format 属性ã®å€™è£œã®ã‚ˆã†ã§ã™"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "戻り型㯠format 属性ã®å€™è£œã®ã‚ˆã†ã§ã™"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C ã¯é–¢æ•°ã®ãƒã‚¤ãƒ³ã‚¿ã¨ %<void *%> é–“ã®ä»£å…¥ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C ã¯é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã¨ %<void *%> é–“ã®åˆæœŸåŒ–ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C ã¯é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã¨ %<void *%> ã®é–“ã®æˆ»ã‚Šã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "%d 番目㮠%qE ã®å¼•æ•°ã‚’渡ã™ã¨ãã®ãƒã‚¤ãƒ³ã‚¿ã®å…ˆã®ç¬¦å·ãŒç•°ãªã‚Šã¾ã™"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "代入ã§ã®ãƒã‚¤ãƒ³ã‚¿ã®å…ˆã®ç¬¦å·ãŒç•°ãªã‚Šã¾ã™"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "åˆæœŸåŒ–ã§ã®ãƒã‚¤ãƒ³ã‚¿ã®å…ˆã®ç¬¦å·ãŒç•°ãªã‚Šã¾ã™"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "戻りã§ã®ãƒã‚¤ãƒ³ã‚¿ã®å…ˆã®ç¬¦å·ãŒç•°ãªã‚Šã¾ã™"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "互æ›æ€§ã®ãªã„ãƒã‚¤ãƒ³ã‚¿åž‹ã‹ã‚‰ %d 番目㮠%qE ã®å¼•æ•°ã«æ¸¡ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "互æ›æ€§ã®ãªã„ãƒã‚¤ãƒ³ã‚¿åž‹ã‹ã‚‰ã®ä»£å…¥ã§ã™"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "互æ›æ€§ã®ãªã„ãƒã‚¤ãƒ³ã‚¿åž‹ã‹ã‚‰ã®åˆæœŸåŒ–ã§ã™"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "互æ›æ€§ã®ãªã„ãƒã‚¤ãƒ³ã‚¿åž‹ã‹ã‚‰ã®æˆ»ã‚Šã§ã™"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "éžå·¦è¾ºå€¤é…列ã®ç„¡åŠ¹ãªä½¿ç”¨ã§ã™"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "%d 番目㮠%qE ã®å¼•æ•°ã¸æ¸¡ã™ã¨ãã«æ•´æ•°ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«ãƒã‚¤ãƒ³ã‚¿ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "代入ã§æ•´æ•°ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«ãƒã‚¤ãƒ³ã‚¿ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "åˆæœŸåŒ–ã§æ•´æ•°ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«ãƒã‚¤ãƒ³ã‚¿ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "戻りã§æ•´æ•°ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«ãƒã‚¤ãƒ³ã‚¿ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "passing argument %d 番目㮠%qE ã®å¼•æ•°ã‚’渡ã™ã¨ãã«ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«æ•´æ•°ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "代入ã§ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«æ•´æ•°ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "åˆæœŸåŒ–ã§ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«æ•´æ•°ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "戻りã§ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ã‚­ãƒ£ã‚¹ãƒˆç„¡ã—ã«æ•´æ•°ã‚’作æˆã—ã¦ã„ã¾ã™"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "%d 番目㮠%qE ã®å¼•æ•°ç”¨ã®äº’æ›æ€§ãŒãªã„åž‹ã§ã™"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "åž‹ %qT ã¸ã®åž‹ %qT ã‹ã‚‰ã®ä»£å…¥æ™‚ã«äº’æ›æ€§ã®ãªã„åž‹ã§ã™"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "åž‹ %qT ã‚’åž‹ %qT を使用ã—ã¦åˆæœŸåŒ–時ã«äº’æ›æ€§ã®ãªã„åž‹ã§ã™"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "åž‹ %qT を戻ã™ã¨ãã«äº’æ›æ€§ã®ãªã„åž‹ã§ã™ã€‚åž‹ %qT ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "ä¼çµ±çš„㪠C ã§ã¯è‡ªå‹•é›†ç´„åˆæœŸåŒ–ã‚’æ‹’å¦ã—ã¾ã™"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(%qs 用ã®åˆæœŸåŒ–付近)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "å°æ‹¬å¼§ã§æ‹¬ã‚‰ã‚ŒãŸæ–‡å­—列定数ã§é…列ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "å¯å¤‰é…列メンãƒã‚’åˆæœŸåŒ–ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "ワイド文字列ã‹ã‚‰ char é…列ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "éžãƒ¯ã‚¤ãƒ‰æ–‡å­—列ã§ãƒ¯ã‚¤ãƒ‰æ–‡å­—é…列ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "互æ›æ€§ã®ãªã„ワイド文字列ã§ãƒ¯ã‚¤ãƒ‰æ–‡å­—é…列ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "é©åˆ‡ã§ãªã„åž‹ã®é…列ãŒæ–‡å­—列定数ã§åˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "é…列ãŒéžå®šæ•°é…列å¼ã§åˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "åˆæœŸåŒ–å­ã®è¦ç´ ãŒå®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "åˆæœŸåŒ–å­ã®è¦ç´ ãŒå®šæ•°å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "åˆæœŸåŒ–å­ã®è¦ç´ ãŒãƒ­ãƒ¼ãƒ‰æ™‚ã«è¨ˆç®—出æ¥ã¾ã›ã‚“"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "無効ãªåˆæœŸåŒ–å­ã§ã™"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, fuzzy, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "å¯å¤‰é•·ã‚ªãƒ–ジェクトã¯åˆæœŸåŒ–ã•ã‚Œãªã„ã“ã¨ã«ãªã‚‹ã§ã—ょã†"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "åˆæœŸåŒ–å­ã®çµ‚ã‚ã‚Šã«ä½™åˆ†ãªãƒ–レースã®ã‚°ãƒ«ãƒ¼ãƒ—"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "åˆæœŸåŒ–å­ã®å‘¨ã‚Šã«ä¸­æ‹¬å¼§ãŒã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "スカラーåˆæœŸåŒ–å­ãŒä¸­æ‹¬å¼§ã§å›²ã¾ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "入れå­ã«ãªã£ãŸã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå†…ã§å¯å¤‰é…列メンãƒã‚’åˆæœŸåŒ–ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "åˆæœŸåŒ–å­ãŒã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "空ã®ã‚¹ã‚«ãƒ©ãƒ¼åˆæœŸåŒ–å­ã§ã™"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "スカラーåˆæœŸåŒ–å­å†…ã«ä½™åˆ†ãªè¦ç´ ãŒã‚ã‚Šã¾ã™"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "レコードや共用体åˆæœŸåŒ–å­ã«ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰åãŒã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr ""
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr ""
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "åˆæœŸåŒ–å­å†…ã«éžå®šæ•°ã®é…列インデックスãŒã‚ã‚Šã¾ã™"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "åˆæœŸåŒ–å­å†…ã®é…列インデックスãŒé…列ã®å¢ƒç•Œã‚’超ãˆã¾ã—ãŸ"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "åˆæœŸåŒ–å­å†…ã«ç©ºã®ç¯„囲インデックスãŒã‚ã‚Šã¾ã™"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "åˆæœŸåŒ–å­ã®ç¯„囲インデックスãŒé…列ã®å¢ƒç•Œã‚’超ãˆã¾ã—ãŸ"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "åˆæœŸåŒ–å­å†…ã§ä¸æ˜Žãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ %qE ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "åˆæœŸåŒ–ã•ã‚ŒãŸãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒå‰¯ä½œç”¨ã§ä¸Šæ›¸ãã•ã‚Œã¾ã™"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "åˆæœŸåŒ–ã•ã‚ŒãŸãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒä¸Šæ›¸ãã•ã‚Œã¾ã™"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "char é…列åˆæœŸåŒ–å­å†…ã®è¦ç´ ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "構造体åˆæœŸåŒ–å­å†…ã®è¦ç´ ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "共用体åˆæœŸåŒ–å­å†…ã®è¦ç´ ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "ä¼çµ±çš„㪠C ã§ã¯å…±ç”¨ä½“ã®åˆæœŸåŒ–ã‚’æ‹’å¦ã—ã¾ã™"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "é…列åˆæœŸåŒ–å­å†…ã®è¦ç´ ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "ベクトルåˆæœŸåŒ–å­å†…ã®è¦ç´ ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "スカラーåˆæœŸåŒ–å­å†…ã®è¦ç´ ãŒå¤šã™ãŽã¾ã™"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C 㯠%<goto *expr;%> ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "%<noreturn%> ã¨å®£è¨€ã•ã‚Œã¦ã„る関数㌠%<return%> 文をæŒã£ã¦ã„ã¾ã™"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "éž void を戻ã™é–¢æ•°å†…ã«å€¤ãŒç„¡ã„ %<return%> ãŒã‚ã‚Šã¾ã™"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "void を戻ã™é–¢æ•°å†…ã«å€¤ãŒæœ‰ã‚‹ %<return%> ãŒã‚ã‚Šã¾ã™"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "ISO C 㯠void を戻ã™é–¢æ•°å†…ã§ã€å¼ã‚’ãŒã‚ã‚‹ %<return%> ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "関数ãŒå±€æ‰€å¤‰æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã—ã¾ã™"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch ã®å†…容ãŒæ•´æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "ISO C ã§ã¯ %<long%> ã«ã‚ˆã‚‹ switch 文㯠%<int%> ã«ã‚ˆã‚‹ switch ã«å¤‰æ›ã•ã‚Œã¾ã™"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "case ラベルã¯æ•´æ•°å®šæ•°å¼ã«å‡ºæ¥ã¾ã›ã‚“"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "switch æ–‡ã®å¤–ã«ã‚ã‚‹ case ラベルã§ã™"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "switch æ–‡ã®å¤–ã«ã‚ã‚‹ %<default%> ラベルã§ã™"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%<else%> ãŒæ›–昧ã«ãªã‚‹ã“ã¨ã‚’é¿ã‘ã‚‹ãŸã‚ã«æ˜Žç¤ºçš„ã«ä¸­æ‹¬å¼§ã§æ‹¬ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "ループã¾ãŸã¯ switch æ–‡ã®å¤–ã«ã‚ã‚‹ break æ–‡ã§ã™"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "ループã®å¤–ã«ã‚ã‚‹ continue æ–‡ã§ã™"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "OpenMP ã®ãƒ«ãƒ¼ãƒ—用㫠break æ–‡ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "効果ãŒãªã„æ–‡ã§ã™"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "å¼ã®ä¸­ã®æ–‡ã«ä¸å®Œå…¨åž‹ãŒã‚ã‚Šã¾ã™"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "å³ã‚·ãƒ•ãƒˆå›žæ•°ãŒè² ã§ã™"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "å³ã‚·ãƒ•ãƒˆå›žæ•° >= åž‹ã®å¹…ã¨ãªã£ã¦ã„ã¾ã™"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "左シフト回数ãŒè² ã§ã™"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "左シフト回数 >= åž‹ã®å¹…ã¨ãªã£ã¦ã„ã¾ã™"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "comparing vectors with different element types"
msgstr "ç•°ãªã‚‹åˆ—挙型ã®æ¯”較ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, fuzzy, gcc-internal-format
#| msgid "different number of results"
msgid "comparing vectors with different number of elements"
msgstr "çµæžœã®æ•°ãŒç•°ãªã‚Šã¾ã™"
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "浮動å°æ•°ç‚¹ã®æ¯”較㧠== ã‚„ != を使ã†ã®ã¯å®‰å…¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr ""
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C 㯠%<void *%> ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®æ¯”較をç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "åž‹ãŒå…¨ãç•°ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã®æ¯”較ã§ã‚­ãƒ£ã‚¹ãƒˆã‚’欠ã„ã¦ã„ã¾ã™"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "ãƒã‚¤ãƒ³ã‚¿ã¨æ•´æ•°ã¨ã®æ¯”較を行ãªã£ã¦ã„ã¾ã™"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "完全ãªãƒã‚¤ãƒ³ã‚¿ã¨ä¸å®Œå…¨ãªãƒã‚¤ãƒ³ã‚¿ã¨ã®æ¯”較ã§ã™"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C 関数ãƒã‚¤ãƒ³ã‚¿ã®é †åºæ¯”較をç¦ã˜ã¾ã™"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr "NULL ãƒã‚¤ãƒ³ã‚¿ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã®é †åºæ¯”較ã§ã™"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "æ•´æ•° 0 ã¨ãƒã‚¤ãƒ³ã‚¿ã¨ã®é †åºæ¯”較ã§ã™"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr ""
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "スカラーãŒå¿…è¦ãªå ´æ‰€ã«ãƒã‚¤ãƒ³ã‚¿ã«å¤‰æ›ã§ããªã„é…列ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "スカラーãŒå¿…è¦ãªå ´æ‰€ã§æ§‹é€ ä½“åž‹ã®å€¤ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "スカラーãŒå¿…è¦ãªå ´æ‰€ã§å…±ç”¨ä½“åž‹ã®å€¤ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "スカラーãŒå¿…è¦ãªå ´æ‰€ã§æ§‹é€ ä½“åž‹ã®å€¤ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "%qE 㯠%<reduction%> 用ã®ç„¡åŠ¹ãªåž‹ã‚’æŒã£ã¦ã„ã¾ã™"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE 㯠%<reduction(%s)%> 用ã®ç„¡åŠ¹ãªåž‹ã‚’æŒã£ã¦ã„ã¾ã™"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE 㯠%<threadprivate%> (%<copyin%> 用ã¨ã—ã¦) ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE ã¯å¥ %qs 内ã§ã¯å¤‰æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr "%qE ãŒãƒ‡ãƒ¼ã‚¿å¥å†…ã§äºŒå›žä»¥ä¸Šå‡ºç¾ã—ã¦ã„ã¾ã™"
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "%qE 㯠%<firstprivate%> å¥å†…ã§ã¯å¤‰æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "%qE 㯠%<lastprivate%> å¥å†…ã§ã¯å¤‰æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qE 㯠%qs (%qs 用) ã¨ã—ã¦å‰ã‚‚ã£ã¦æ±ºã‚られã¦ã„ã¾ã™"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -16189,7 +16228,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "関数呼ã³å‡ºã—ãŒé›†åˆä½“ã®å€¤ã‚’æŒã£ã¦ã„ã¾ã™"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "変数 %q+D ã®ã‚µã‚¤ã‚ºãŒå¤§ãã™ãŽã¾ã™"
@@ -17008,52 +17047,52 @@ msgstr "%s: COFF ファイルã¨ã—ã¦é–‹ã‘ã¾ã›ã‚“"
msgid "library lib%s not found"
msgstr "ライブラリ lib%s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "ãƒã‚¤ãƒ³ã‚¿åž‹ã¸å¤‰æ›ã§ãã¾ã›ã‚“"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "浮動å°æ•°ç‚¹æ•°ãŒã‚ã‚‹ã¹ã箇所ã§ã€ãƒã‚¤ãƒ³ã‚¿å€¤ãŒä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "浮動å°æ•°ç‚¹åž‹ãŒã‚ã‚‹ã¹ã箇所ã§ã€é›†åˆä½“ã®å€¤ãŒä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "ä¸å®Œå…¨åž‹ã¸ã®å¤‰æ›ã§ã™"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr "ç•°ãªã‚‹ã‚µã‚¤ã‚ºã®ãƒ™ã‚¯ãƒˆãƒ«å€¤ã®é–“ã§ã®å¤‰æ›ã¯ã§ãã¾ã›ã‚“"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "æ•´æ•°åž‹ãŒã‚ã‚‹ã¹ã箇所ã§ã€é›†åˆä½“ã®å€¤ãŒä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "複素数型ãŒã‚ã‚‹ã¹ã箇所ã§ã€ãƒã‚¤ãƒ³ã‚¿å€¤ãŒä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "複素数型ãŒã‚ã‚‹ã¹ã箇所ã§ã€é›†åˆä½“ã®å€¤ãŒä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: convert.c:965
+#: convert.c:963
#, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "値をベクトルã¸å¤‰æ›ã§ãã¾ã›ã‚“"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr "固定å°æ•°ç‚¹åž‹ãŒã‚ã‚‹ã¹ã箇所ã§ã€é›†åˆä½“ã®å€¤ãŒä½¿ã‚ã‚Œã¾ã—ãŸ"
@@ -17208,7 +17247,7 @@ msgstr ""
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -17298,43 +17337,43 @@ msgstr "verify_eh_tree ã«å¤±æ•—ã—ã¾ã—ãŸ"
msgid "stack limits not supported on this target"
msgstr "スタック制é™ã¯ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr "構造体メンãƒç”¨ã«æ•´åˆ—ã•ã‚Œã¦ã„ãªã„アクセスãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
-#: expmed.c:1803
+#: expmed.c:1823
#, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr "構造体ビットフィールド用ã«æ•´åˆ—ã•ã‚Œã¦ã„ãªã„アクセスãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "帯域レジスタ変数 %qD ãŒå…¥ã‚Œå­ã«ãªã£ãŸé–¢æ•°å†…ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr ""
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr ""
@@ -17409,7 +17448,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -17419,7 +17458,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr "局所オブジェクトã®ç·ã‚µã‚¤ã‚ºãŒå¤§ãã™ãŽã¾ã™"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "%<asm%> 内ã§åˆ¶ç´„ã‚’è¡Œã†ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
@@ -17863,77 +17902,77 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:2511
+#: gimplify.c:2518
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "%<void%> ã‚’è¿”ã™é–¢æ•°ã®çµæžœã‚’使用ã—ã¦ã„ã¾ã™"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr ""
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
-#: gimplify.c:5674
+#: gimplify.c:5681
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr ""
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr ""
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr ""
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "gimplification ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: godump.c:1214
+#: godump.c:1234
#, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "Go ダンプファイルを閉ã˜ã‚‰ã‚Œã¾ã›ã‚“: %m"
-#: godump.c:1226
+#: godump.c:1246
#, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "Go ダンプファイル %qs ã‚’é–‹ã‘ã¾ã›ã‚“: %m"
@@ -17988,7 +18027,7 @@ msgstr ""
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18128,48 +18167,48 @@ msgstr "変数 %qD ãŒé–¢æ•°ã¨ã—ã¦å†å®£è¨€ã•ã‚Œã¾ã—ãŸ"
msgid "function %qD redeclared as variable"
msgstr "関数 %qD ãŒå¤‰æ•°ã¨ã—ã¦å†å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr "OpenMP 構造化ブロックã¸ã®ç„¡åŠ¹ãªã‚¨ãƒ³ãƒˆãƒªã§ã™"
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr "OpenMP 構造化ブロックã¸/ã‹ã‚‰ã®ç„¡åŠ¹ãªåˆ†å²ã§ã™"
@@ -18275,7 +18314,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition ã¯ã“ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ä¸Šã§ã¯å·»ã戻㗠(unwind) 情報をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition ã¯ã“ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ä¸Šã§ã¯å‹•ä½œã—ã¾ã›ã‚“"
@@ -18644,9 +18683,9 @@ msgstr "%qs を呼ã³å‡ºã—ã§ä½¿ç”¨ã•ã‚Œã‚‹ãƒ¬ã‚¸ã‚¹ã‚¿ã¨ã—ã¦ä½¿ç”¨ã§ãã
msgid "can%'t use %qs as a fixed register"
msgstr "%qs を固定レジスタã¨ã—ã¦ä½¿ç”¨ã§ãã¾ã›ã‚“"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "ä¸æ˜Žãªãƒ¬ã‚¸ã‚¹ã‚¿åã§ã™: %s"
@@ -18728,12 +18767,12 @@ msgstr ""
msgid "%<asm%> operand requires impossible reload"
msgstr "%<asm%> 被演算å­ã¯å†ãƒ­ãƒ¼ãƒ‰å‡ºæ¥ãªã„ã“ã¨ãŒå¿…è¦ã§ã™"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "%<asm%> 被演算å­åˆ¶ç´„ãŒè¢«æ¼”ç®—å­ã‚µã‚¤ã‚ºã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "出力被演算å­ãŒ %<asm%> 内ã®å®šæ•°ã§ã™"
@@ -18953,7 +18992,7 @@ msgstr "packed 属性ã¯éžåŠ¹çŽ‡ãªæ•´åˆ—ã®åŽŸå› ã¨ãªã‚Šã¾ã™"
msgid "packed attribute is unnecessary"
msgstr "packed 属性ã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "é…列è¦ç´ ã®æ•´åˆ—ãŒè¦ç´ ã®ã‚µã‚¤ã‚ºã‚ˆã‚Šå¤§ãã„ã§ã™"
@@ -19173,7 +19212,7 @@ msgstr "テンプレート型統一中 `%s' ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19188,7 +19227,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr ""
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19203,7 +19242,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr ""
@@ -19240,622 +19279,622 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "大域 register 変数ãŒé–¢æ•°å®šç¾©ã®å¾Œã‚ã«ã‚ã‚Šã¾ã™"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "ADDR_EXPR ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å®šæ•°ãŒå†è¨ˆç®—ã•ã‚Œã¾ã›ã‚“"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "ADDR_EXPR ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å‰¯ä½œç”¨ãŒè¨ˆç®—ã•ã‚Œã¾ã›ã‚“"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr "INDIRECT_REF ㌠gimple IL 内ã«ã‚ã‚Šã¾ã™"
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "MEM_REF ã®ç„¡åŠ¹ãªç¬¬ä¸€è¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "MEM_REF ã®ç„¡åŠ¹ãªã‚ªãƒ•ã‚»ãƒƒãƒˆè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr "æ¡ä»¶å†…ã§éžæ•´æ•°ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "無効ãªæ¡ä»¶è¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "BIT_FIELD_REF ã¸ã®ç„¡åŠ¹ãªä½ç½®ã¾ãŸã¯ã‚µã‚¤ã‚ºè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr "æ•´æ•°çµæžœã®åž‹ç²¾åº¦ãŒ BIT_FIELD_REF ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºã«é©åˆã—ã¾ã›ã‚“"
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr "éžæ•´æ•°çµæžœã®ãƒ¢ãƒ¼ãƒ‰ç²¾åº¦ãŒ BIT_FIELD_REF ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºã«é©åˆã—ã¾ã›ã‚“"
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "無効ãªå‚照接頭辞ã§ã™"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "プラス/マイナスã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™ã€‚åž‹ãŒãƒã‚¤ãƒ³ã‚¿ã§ã™"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "ãƒã‚¤ãƒ³ã‚¿åŠ ç®—ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™ã€‚第一被演算å­ãŒãƒã‚¤ãƒ³ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to pointer plus, second operand is not an integer with type of sizetype"
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr "ãƒã‚¤ãƒ³ã‚¿åŠ ç®—ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™ã€‚第二被演算å­ãŒæ•´æ•°ã§ã‚‚型サイズã§ã‚‚ã‚ã‚Šã¾ã›ã‚“"
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr ""
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "間接å‚照内ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "é…列å‚ç…§ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "é…列å‚照内ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "é…列範囲å‚照内ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "実部/虚部å‚照内ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr ""
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, gcc-internal-format
msgid "conversion of register to a different size"
msgstr ""
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "MEM_REF 内ã§ç„¡åŠ¹ãªã‚¢ãƒ‰ãƒ¬ã‚¹è¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "MEM_REF 内ã§ç„¡åŠ¹ãªã‚ªãƒ•ã‚»ãƒƒãƒˆè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, fuzzy, gcc-internal-format
#| msgid "invalid address operand in in TARGET_MEM_REF"
msgid "invalid address operand in TARGET_MEM_REF"
msgstr "TARGET_MEM_REF 内ã§ç„¡åŠ¹ãªã‚¢ãƒ‰ãƒ¬ã‚¹è¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "TARGET_MEM_REF 内ã§ç„¡åŠ¹ãªã‚ªãƒ•ã‚»ãƒƒãƒˆè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "gimple 呼ã³å‡ºã—内ã§ç„¡åŠ¹ãªé–¢æ•°ã§ã™"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr "gimple 呼ã³å‡ºã—内ã§éžé–¢æ•°ã§ã™"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr ""
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "gimple 呼ã³å‡ºã—内ã§ç„¡åŠ¹ãª LHS ã§ã™"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "gimple 呼ã³å‡ºã—内ã§ç„¡åŠ¹ãªå¤‰æ›ã§ã™call"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr ""
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "gimple 呼ã³å‡ºã—ã¸ã®ç„¡åŠ¹ãªå¼•æ•°ã§ã™"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "gimple 比較内ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in comparison expression"
msgid "mismatching comparison operand types"
msgstr "比較å¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, fuzzy, gcc-internal-format
#| msgid "invalid operands in gimple comparison"
msgid "non-vector operands in vector comparison"
msgstr "gimple 比較内ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "invalid vector permutation constant"
msgid "invalid vector comparison resulting type"
msgstr "無効ãªãƒ™ã‚¯ãƒˆãƒ«é †åˆ—定数ã§ã™"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "bogus comparison result type"
msgstr "ç•°ãªã‚‹åˆ—挙型ã®æ¯”較ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "å˜é …演算å­å†…ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "nop 変æ›å†…ã§ç„¡åŠ¹ãªåž‹ã§ã™"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "アドレス空間変æ›å†…ã§ç„¡åŠ¹ãªåž‹ã§ã™"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "固定å°æ•°å¤‰æ›å†…ã§ç„¡åŠ¹ãªåž‹ã§ã™"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "浮動å°æ•°ç‚¹ã¸ã®å¤‰æ›å†…ã§ç„¡åŠ¹ãªåž‹ã§ã™"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "æ•´æ•°ã¸ã®å¤‰æ›å†…ã§ç„¡åŠ¹ãªåž‹ã§ã™"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "二進演算内ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "複素数å¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "シフトå¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "ベクトルシフトå¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in vector shift expression"
msgid "type mismatch in widening vector shift expression"
msgstr "ベクトルシフトå¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "ベクトル値加算ã¸ã®ç„¡åŠ¹ãªéžãƒ™ã‚¯ãƒˆãƒ«è¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "プラス/マイナスã¸ã®ç„¡åŠ¹ãª (ãƒã‚¤ãƒ³ã‚¿) 被演算å­ã§ã™"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "ãƒã‚¤ãƒ³ã‚¿åŠ ç®—å¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "二進å¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr ""
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr ""
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr ""
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in vector shift expression"
msgid "type mismatch in vector permute expression"
msgstr "ベクトルシフトå¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
#| msgid "expected integer expression"
msgid "vector types expected in vector permute expression"
msgstr "æ•´æ•°å¼ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "invalid increment expression"
msgid "invalid mask type in vector permute expression"
msgstr "無効ãªå¢—分å¼ã§ã™"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr ""
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "å˜é …演算å¼å†…ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "アドレスå¼å†…ã§åž‹ä¸ä¸€è‡´ã§ã™"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr ""
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "return 文内ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "return 文内ã§ç„¡åŠ¹ãªå¤‰æ›ã§ã™"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "goto ã®å…ˆãŒãƒ©ãƒ™ãƒ«ã§ã‚‚ãƒã‚¤ãƒ³ã‚¿ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "switch æ–‡ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr "label_to_block_map 内ã«é–“é•ã£ãŸã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚Šã¾ã™"
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr ""
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "gimple æ¡ä»¶å†…ã§ç„¡åŠ¹ãªæ¯”較コードã§ã™"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "gimple æ¡ä»¶å†…ã§ç„¡åŠ¹ãªãƒ©ãƒ™ãƒ«ã§ã™"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, gcc-internal-format
msgid "invalid PHI result"
msgstr "無効㪠PHI çµæžœã§ã™"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, gcc-internal-format
msgid "missing PHI def"
msgstr "PHI 定義ãŒã‚ã‚Šã¾ã›ã‚“"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, gcc-internal-format
msgid "invalid PHI argument"
msgstr "無効㪠PHI 引数ã§ã™"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "PHI 引数 %u 内ã§äº’æ›æ€§ã®ãªã„åž‹ã§ã™"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr "verify_gimple ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr "EH 表内ã«ä¸è¦ãª (dead) STMT ãŒã‚ã‚Šã¾ã™"
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "gimple_bb (phi) ãŒé–“é•ã£ãŸåŸºæœ¬ãƒ–ロックã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "gimple_bb (stmt) ãŒé–“é•ã£ãŸåŸºæœ¬ãƒ–ロックã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr "å¼å†…"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "文㌠throw ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™ãŒã€ throw ã—ã¾ã›ã‚“"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "éžå±€æ‰€ãƒ©ãƒ™ãƒ« "
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "ラベル "
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "明示的㪠goto ãŒåŸºæœ¬ãƒ–ロック %d ã®æœ«å°¾ã«ã‚ã‚Šã¾ã™"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr ""
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr ""
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "%<noreturn%> 関数ãŒæˆ»ã‚Š (return) ã¾ã™"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "制御ãŒéž void 関数ã®çµ‚ã‚Šã«åˆ°é”ã—ã¾ã—ãŸ"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "warn_unused_result 属性付ãã§å®£è¨€ã•ã‚Œã¦ã„ã‚‹ %qD ã®æˆ»ã‚Šå€¤ã‚’無視ã—ã¦ã„ã¾ã™"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "warn_unused_result 属性付ãã§å®£è¨€ã•ã‚Œã¦ã„る関数ã®æˆ»ã‚Šå€¤ã‚’無視ã—ã¦ã„ã¾ã™"
@@ -19915,73 +19954,73 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr ""
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "関数 %q+F ã¯éžå±€æ‰€ goto ã‚’å—ã‘å–ã‚‹ãŸã‚決ã—ã¦è¤‡è£½ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "関数 %q+F ã¯é™çš„変数内ã®å±€æ‰€ãƒ©ãƒ™ãƒ«ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ä¿å­˜ã™ã‚‹ãŸã‚ã€æ±ºã—ã¦è¤‡å†™ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "関数 %q+F 㯠alloca を使用ã—ã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“ (always_inline 属性を上書ãã—ã¾ã™)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "関数 %q+F 㯠setjmp を使用ã—ã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "関数 %q+F ã¯å¯å¤‰å¼•æ•°ãƒªã‚¹ãƒˆã‚’使用ã—ã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "関数 %q+F 㯠setjmp-longjmp 例外処ç†ã‚’使用ã—ã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "関数 %q+F ã¯éžå±€æ‰€ goto を使用ã—ã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "関数 %q+F 㯠__builtin_return ã¾ãŸã¯ __builtin_apply_args を使用ã—ã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "関数 %q+F 㯠-fno-inline を使用ã—ã¦æŠ‘æ­¢ã•ã‚Œã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "関数 %q+F ã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã¨ç«¶åˆã™ã‚‹å±žæ€§ã‚’使用ã—ã¦ã„ã‚‹ãŸã‚決ã—ã¦ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã•ã‚Œã¾ã›ã‚“"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "inlining failed in call to %q+F: %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "%q+F 呼ã³å‡ºã—ã®ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "ã“ã“ã‹ã‚‰å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "%q+F 呼ã³å‡ºã—ã®ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
@@ -20196,7 +20235,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr "verify_ssa ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, gcc-internal-format
msgid "%qD was declared here"
msgstr "%qD ã¯ã“ã“ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
@@ -20258,52 +20297,52 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "é…列ã®æ·»å­—ãŒé…列境界ã®å¤–ã«ã‚ã‚Šã¾ã™"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "é…列ã®æ·»å­—ãŒé…列ã®å¢ƒç•Œã‚’上回ã£ã¦ã„ã¾ã™"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "é…列ã®æ·»å­—ãŒé…列ã®å¢ƒç•Œã‚’下回ã£ã¦ã„ã¾ã™"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "データ型ã®ç¯„囲制é™ã«ã‚ˆã‚Šæ¯”較ãŒå¸¸ã«å½ (false) ã¨ãªã‚Šã¾ã™"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "データ型ã®ç¯„囲制é™ã«ã‚ˆã‚Šæ¯”較ãŒå¸¸ã«çœŸ (true) ã¨ãªã‚Šã¾ã™"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr "%</%> ã¾ãŸã¯ %<%%%> ã‚’ %<>>%> ã¾ãŸã¯ %<&%> ã¸å˜ç´”化ã™ã‚‹ã¨ãã«ç¬¦å·ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ãŒç™ºç”Ÿã—ãªã„ã¨è¦‹ãªã—ã¦ã„ã¾ã™"
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr "%<abs (X)%> ã‚’ %<X%> ã¾ãŸã¯ %<-X%> ã¸å˜ç´”化ã™ã‚‹ã¨ãã«ç¬¦å·ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ãŒç™ºç”Ÿã—ãªã„ã¨è¦‹ãªã—ã¦ã„ã¾ã™"
@@ -20313,22 +20352,22 @@ msgstr "%<abs (X)%> ã‚’ %<X%> ã¾ãŸã¯ %<-X%> ã¸å˜ç´”化ã™ã‚‹ã¨ãã«ç¬¦å·
msgid "ignoring attributes applied to %qT after definition"
msgstr "定義ã—ãŸå¾Œã« %qT ã«é©ç”¨ã•ã‚Œã‚‹å±žæ€§ã‚’無視ã—ã¦ã„ã¾ã™"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D ã¯æ—¢ã« dllexport 属性ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™: dllimport ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D 㯠dll ã‹ã‚‰ã®å‚照後㫠dllimport 属性無ã—ã§å†å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D 㯠dllimport 属性無ã—ã§å†å®£è¨€ã•ã‚Œã¾ã—ãŸ: å‰ã® dllimport ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20343,140 +20382,140 @@ msgstr "%q+D 㯠dllimport 属性無ã—ã§å†å®£è¨€ã•ã‚Œã¾ã—ãŸ: å‰ã® dllim
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "%qE 属性ã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "インライン関数 %q+D 㯠dllimport ã¨ã—ã¦å®£è¨€ã•ã‚Œã¾ã—ãŸ: 属性ãŒç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "関数 %q+D 定義㯠dllimport ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "変数 %q+D 定義㯠dllimport ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "シンボル %q+D 用ã«å¤–部リンクãŒè¦æ±‚ã•ã‚Œã¾ã™ (%qE 属性ã®ãŸã‚)"
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qE ã¯æš—黙的ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å¯è¦–性ã¨ãªã‚Šã¾ã™ãŒã€%qD ã¯æ—¢ã«ç•°ãªã‚‹å¯è¦–性ã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "関数ã®é…列ã¯æ„味ãŒã‚ã‚Šã¾ã›ã‚“"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "関数ã®è¿”ã™åž‹ãŒé–¢æ•°ã§ã‚ã£ã¦ã¯ãªã‚Šã¾ã›ã‚“"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr ""
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%qD ã¯å»ƒæ­¢ã•ã‚Œã¾ã—㟠(宣言ä½ç½® %s:%d): %s"
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%qD ã¯å»ƒæ­¢ã•ã‚Œã¾ã—㟠(宣言ä½ç½® %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%qE ã¯å»ƒæ­¢ã•ã‚Œã¾ã—㟠(宣言ä½ç½® %s:%d): %s"
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%qE ã¯å»ƒæ­¢ã•ã‚Œã¾ã—㟠(宣言ä½ç½® %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "åž‹ã¯å»ƒæ­¢ã•ã‚Œã¾ã—㟠(宣言ä½ç½® %s:%d): %s"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "åž‹ã¯å»ƒæ­¢ã•ã‚Œã¾ã—㟠(宣言ä½ç½® %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "%qE ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸ: %s"
-#: tree.c:11392
+#: tree.c:11396
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr "%qE ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸ"
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "åž‹ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸ: %s"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "åž‹ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸ"
@@ -20526,150 +20565,155 @@ msgstr "変数追跡サイズ制é™ãŒ -fvar-tracking-assignments を超éŽã—ã
msgid "variable tracking size limit exceeded"
msgstr "変数追跡サイズ制é™ãŒè¶…éŽã—ã¾ã—ãŸ"
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D ã«ã‚ˆã‚Šã‚»ã‚¯ã‚·ãƒ§ãƒ³åž‹ãŒç«¶åˆã—ã¾ã™"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%+D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%+D ã«ã‚ˆã‚Šã‚»ã‚¯ã‚·ãƒ§ãƒ³åž‹ãŒç«¶åˆã—ã¾ã™"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "%q+D ã®æ•´åˆ—ãŒã‚ªãƒ–ジェクトファイルã®æ•´åˆ—ã®æœ€å¤§å€¤ã‚ˆã‚Šå¤§ãã„ã§ã™ã€‚%d を使用ã—ã¾ã™"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "レジスタå㌠%q+D 用ã«æŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "無効㪠%q+D 用ã®ãƒ¬ã‚¸ã‚¹ã‚¿åã§ã™"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "%q+D ã®ãƒ‡ãƒ¼ã‚¿åž‹ãŒãƒ¬ã‚¸ã‚¹ã‚¿ã«é©åˆã—ã¾ã›ã‚“"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
#| msgid "register specified for %q+D isn%'t suitable for data type"
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "%q+D 用ã«æŒ‡å®šã•ã‚ŒãŸãƒ¬ã‚¸ã‚¹ã‚¿ãŒãƒ‡ãƒ¼ã‚¿åž‹ã«é©åˆã—ã¾ã›ã‚“"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "レジスタãŒäºŒã¤ã®å¤§åŸŸãƒ¬ã‚¸ã‚¹ã‚¿å¤‰æ•°ã¨ã—ã¦ä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "%q+D 用ã«æŒ‡å®šã•ã‚ŒãŸãƒ¬ã‚¸ã‚¹ã‚¿ãŒãƒ‡ãƒ¼ã‚¿åž‹ã«é©åˆã—ã¾ã›ã‚“"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "大域レジスタ変数ãŒåˆæœŸå€¤ã‚’æŒã£ã¦ã„ã¾ã™"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "最é©åŒ–ã«ã‚ˆã‚Šãƒ¬ã‚¸ã‚¹ã‚¿å¤‰æ•°ã®èª­ã¿è¾¼ã¿/書ãè¾¼ã¿ãŒå‰Šé™¤ã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "éžãƒ¬ã‚¸ã‚¹ã‚¿å¤‰æ•° %q+D 用ã«ãƒ¬ã‚¸ã‚¹ã‚¿åãŒä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "大域デストラクタã¯ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "大域コンストラクタã¯ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "スレッド局所 COMMON データã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "è¦æ±‚ã•ã‚ŒãŸ %q+D 用ã®æ•´åˆ—ã¯å®Ÿè£…ã•ã‚Œã¦ã„る整列 %wu より大ãã„ã§ã™"
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "æ•´æ•°/固定å°æ•°ç”¨ã®åˆæœŸåŒ–å­ãŒè¤‡é›‘ã™ãŽã¾ã™"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "浮動å°æ•°ç‚¹æ•°ã®åˆæœŸè¨­å®šå­ã®å€¤ãŒã€æµ®å‹•å°æ•°ç‚¹å®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: varasm.c:4878
+#: varasm.c:4915
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "メンム%qE 用ã®ç„¡åŠ¹ãªåˆæœŸå€¤ã§ã™"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "%q+D ã®å¼±ã„ (weak) 宣言ã¯å…¬é–‹ (public) ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "%q+D ã®å¼±ã„ (weak) 宣言ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "å¼±ã„別åã®ã¿ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™"
-#: varasm.c:5474
+#: varasm.c:5511
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "å¼±ã„å‚ç…§ã¯ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "ifunc ã¯ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D ãŒæœªå®šç¾©ã‚·ãƒ³ãƒœãƒ« %qE ã®åˆ¥åã¨ãªã£ã¦ã„ã¾ã™"
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D ãŒå¤–部シンボル %qE ã®åˆ¥åã¨ãªã£ã¦ã„ã¾ã™"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "å¼±ã„å‚ç…§ %q+D ã¯é™çš„リンクã•ã‚Œãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: varasm.c:5821
+#: varasm.c:5858
#, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "ã“ã®è¨­å®šã§ã¯åˆ¥å定義ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "å¯è¦–性属性ã¯ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。無視ã•ã‚Œã¾ã—ãŸ"
@@ -20711,8 +20755,8 @@ msgstr "%qD ã¯é–¢æ•°ã‚¹ã‚³ãƒ¼ãƒ—ã®å¤–å´ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "文字列長 %qd ã¯é•·ã• %qd (ISO C%d コンパイラã§ã‚µãƒãƒ¼ãƒˆãŒè¦æ±‚ã•ã‚Œã‚‹é•·ã•) より長ã„ã§ã™"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "定数å¼å†…ã§ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
@@ -20927,7 +20971,7 @@ msgstr "メンãƒé–¢æ•°ã¸ã®ãƒã‚¤ãƒ³ã‚¿ãŒè¨ˆç®—内ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "%qD ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯å¸¸ã« %<true%> ã¨è©•ä¾¡ã•ã‚Œã¾ã™"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "真å½å€¤ã¨ã—ã¦ä½¿ã‚れる代入ã®ã¾ã‚ã‚Šã§ã¯ã€ä¸¸æ‹¬å¼§ã®ä½¿ç”¨ã‚’ãŠå‹§ã‚ã—ã¾ã™"
@@ -21342,40 +21386,40 @@ msgstr "%qE 属性㯠%qE 用ã¨ã—ã¦ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
msgid "invalid vector type for attribute %qE"
msgstr "%qE 属性用ã¨ã—ã¦ã¯ç„¡åŠ¹ãªãƒ™ã‚¯ãƒˆãƒ«åž‹ã§ã™"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "ベクトルã®ã‚µã‚¤ã‚ºãŒè¦ç´ ã®ã‚µã‚¤ã‚ºã®æ•´æ•°å€ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "ベクトルã®ã‚µã‚¤ã‚ºãŒ 0 ã§ã™"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "ベクトルã®è¦ç´ ã®æ•°ãŒ 2 ã®ç´¯ä¹—ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr ""
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr ""
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr ""
@@ -21415,12 +21459,12 @@ msgstr "%qE 属性ã¯åå‰ä»˜ã引数ãŒã‚るプロトタイプãŒå¿…è¦ã§ã
msgid "%qE attribute only applies to variadic functions"
msgstr ""
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr ""
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
@@ -21476,7 +21520,7 @@ msgstr "%<offsetof%> 㯠%<operator[]%> ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ã‚‹ã
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "一定ã§ã¯ãªã„アドレス㸠%<offsetof%> ã‚’é©ç”¨ã§ãã¾ã›ã‚“"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "ビットフィールドã§ã‚る構造体ã®ãƒ¡ãƒ³ãƒ %qD ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã—よã†ã¨ã™ã‚‹è©¦ã¿ã§ã™"
@@ -22213,82 +22257,82 @@ msgid "ignoring #pragma %s %s"
msgstr "#pragma %s %s を無視ã—ã¾ã™"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "プログラム内ã«é€¸è„±ã—㟠%<@%> ãŒã‚ã‚Šã¾ã™"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "プログラム内ã«é€¸è„±ã—㟠%qs ãŒã‚ã‚Šã¾ã™"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "終端㮠%c 文字ãŒã‚ã‚Šã¾ã›ã‚“"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "プログラム内ã«é€¸è„±ã—㟠%qc ãŒã‚ã‚Šã¾ã™"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "プログラム内ã«é€¸è„±ã—㟠%<\\%o%> ãŒã‚ã‚Šã¾ã™"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "ã“ã®å進定数㯠ISO C90 内ã§ã®ã¿ç¬¦å·ç„¡ã—ã§ã™"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "ã“ã®å進定数㯠ISO C90 ã§ã¯ãŠãらã符å·ç„¡ã—ã§ã™"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "整数定数㌠%<unsigned long%> åž‹ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr "接尾辞ãŒãªã„浮動å°æ•°å®šæ•°ã§ã™"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr "浮動å°æ•°å®šæ•°ã«é–¢ã™ã‚‹ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„éžæ¨™æº–ã®æŽ¥å°¾è¾žã§ã™"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr "浮動å°æ•°å®šæ•°ã«é–¢ã™ã‚‹éžæ¨™æº–ã®æŽ¥å°¾è¾žã§ã™"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "浮動å°æ•°å®šæ•°ãŒ %qT ã®ç¯„囲を超ãˆã¦ã„ã¾ã™"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "浮動å°æ•°å®šæ•°ãŒ 0 ã«åˆ‡ã‚Šè©°ã‚られã¾ã—ãŸ"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr "Objective-C 文字列ã®å‰ã«é€£ç¶šã—㟠%<@%> ãŒã‚ã‚Šã¾ã™"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„éžæ¨™æº–ã®æ–‡å­—列リテラルã®é€£çµã§ã™"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "ä¼çµ±çš„㪠C ã§ã¯æ–‡å­—列定数ã®é€£çµã‚’æ‹’å¦ã—ã¾ã™"
@@ -22308,7 +22352,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr ""
@@ -22318,22 +22362,22 @@ msgstr ""
msgid "%qE is not initialized"
msgstr "%qE ã¯åˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr ""
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr "増分å¼ãŒã‚ã‚Šã¾ã›ã‚“"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "無効ãªå¢—分å¼ã§ã™"
@@ -23190,7 +23234,7 @@ msgstr "L%d キャッシュレイテンシ㯠%s ã«ã¨ã£ã¦ä¸æ˜Žã§ã™"
msgid "bad value %qs for -mmemory-latency"
msgstr "-mmemory-latency 用ã®é–“é•ã£ãŸå€¤ %qs ã§ã™"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23371,53 +23415,53 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr "Thumb-1 ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•° VFP ABI"
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "%qE 属性ã¯é–¢æ•°ã¸ã®ã¿é©ç”¨ã•ã‚Œã¾ã™"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "スタックã«ç©ã¾ã‚ŒãŸä»®å¼•æ•°ã®å®Ÿéš›ã®ä½ç½®ã‚’計算ã§ãã¾ã›ã‚“"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, gcc-internal-format
msgid "argument must be a constant"
msgstr "引数ã¯å®šæ•°ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "セレクタã¯å³å€¤ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "マスクã¯å³å€¤ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "高ä½ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’ pop ã™ã‚‹ç‚ºã«ä½¿ç”¨ã§ãる低ä½ãƒ¬ã‚¸ã‚¹ã‚¿ãŒã‚ã‚Šã¾ã›ã‚“"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "割り込ã¿ã‚µãƒ¼ãƒ“スルーãƒãƒ³ã‚’ Thumb モードã§ã‚³ãƒ¼ãƒ‰åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr "%<va_list%> ã®åå‰ç¬¦å·åŒ– (mangle) 方法㯠GCC 4.4 ã§å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
@@ -23432,101 +23476,120 @@ msgstr "åˆæœŸåŒ–ã•ã‚ŒãŸå¤‰æ•° %q+D 㯠dllimport ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã
msgid "static variable %q+D is marked dllimport"
msgstr "é™çš„変数 %q+D ㌠dllimport ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-pedantic 㨠-traditional ã¨ã¯ç›¸äº’排他的ã§ã™"
+
+#: config/avr/avr.c:555
+#, fuzzy, gcc-internal-format
+#| msgid "%qE attribute has no effect on unit local functions"
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr "%qE 属性ã¯ãƒ¦ãƒ‹ãƒƒãƒˆå±€æ‰€é–¢æ•°ã«é–¢ã—ã¦ã¯åŠ¹æžœãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "interrupt function must have no arguments"
+msgid "%qs function cannot have arguments"
+msgstr "割り込ã¿é–¢æ•°ã¯å¼•æ•°ç„¡ã—ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "functions cannot return __fp16 type"
+msgid "%qs function cannot return a value"
+msgstr "関数㌠__fp16 åž‹ã‚’è¿”ã—ã¾ã›ã‚“"
+
+#: config/avr/avr.c:583
+#, fuzzy, gcc-internal-format
+#| msgid "%qs appears to be a misspelled signal handler"
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs ã¯ç¶´ã‚ŠãŒé–“é•ã£ãŸã‚·ã‚°ãƒŠãƒ«ãƒãƒ³ãƒ‰ãƒ©ã®ã‚ˆã†ã«è¦‹ãˆã¾ã™"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr "'builtin_return_address' ãŒã‚¢ãƒ‰ãƒ¬ã‚¹ã® 2 ãƒã‚¤ãƒˆã®ã¿å«ã‚“ã§ã„ã¾ã™"
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr "シンボルã‹ã‚‰ã®ãƒã‚¤ãƒ³ã‚¿ã‚ªãƒ•ã‚»ãƒƒãƒˆãŒé–“é•ã£ã¦ã„るよã†ã§ã™"
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr "プログラムメモリアドレスã¨ã—ã¦ãƒ‡ãƒ¼ã‚¿ãƒ¡ãƒ¢ãƒªã‚’アクセスã—ã¦ã„ã¾ã™"
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, fuzzy, gcc-internal-format
#| msgid "accessing program memory with data memory address"
msgid "accessing program memory with data memory address"
msgstr "データメモリアドレスã¨ã—ã¦ãƒ—ログラムメモリをアクセスã—ã¦ã„ã¾ã™"
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "レジスタã®æ•°ãŒæ•´æ•°ã‚’引数を渡ã™ãŸã‚ã«ä½¿ã‚れる"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
#| msgid "conflicting named address spaces (%s vs %s)"
msgid "writing to address space %qs not supported"
msgstr "åå‰ä»˜ãアドレス空間 (%s 㨠%s) ãŒç«¶åˆã—ã¦ã„ã¾ã™"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs ã¯ç¶´ã‚ŠãŒé–“é•ã£ãŸå‰²ã‚Šè¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã®ã‚ˆã†ã«è¦‹ãˆã¾ã™"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs ã¯ç¶´ã‚ŠãŒé–“é•ã£ãŸã‚·ã‚°ãƒŠãƒ«ãƒãƒ³ãƒ‰ãƒ©ã®ã‚ˆã†ã«è¦‹ãˆã¾ã™"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„変数ã®ã¿ .noinit セクション内ã«é…ç½®ã§ãã¾ã™"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "åˆæœŸåŒ–ã•ã‚ŒãŸå¤‰æ•°ã®ã¿ãƒ—ログラムメモリ領域内ã«é…ç½®ã§ãã¾ã™"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU %qs ã¯ã‚¢ã‚»ãƒ³ãƒ–ラã®ã¿ç”¨ã«ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr "文字列定数ã®ä¸­ã§ãƒ•ã‚¡ã‚¤ãƒ«ã®çµ‚端を検出ã—ã¾ã—ãŸ"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qs expects a constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -23650,68 +23713,68 @@ msgstr "':' 修飾å­ã®ç„¡åŠ¹ãªä½¿ç”¨æ–¹æ³•ã§ã™"
msgid "internal error: bad register: %d"
msgstr "内部エラー: é–“é•ã£ãŸãƒ¬ã‚¸ã‚¹ã‚¿ã§ã™: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "ä¸æ˜Žãª cc_attr 値ã§ã™"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "内部エラー: é–“é•ã£ãŸè¢«æ¼”ç®—å­ã‚’æŒã¤ cris_side_effect_mode_ok ã§ã™"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d ãŒä½¿ç”¨ã§ãã¾ã›ã‚“。 0 㨠%d ã®é–“ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "-march= ã¾ãŸã¯ -mcpu= 内ã§ä¸æ˜Žãª CRIS ãƒãƒ¼ã‚¸ãƒ§ãƒ³æŒ‡å®šãŒã‚ã‚Šã¾ã™: %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "-mtune= 内ã«ä¸æ˜Žãª CRIS CPU ãƒãƒ¼ã‚¸ãƒ§ãƒ³æŒ‡å®šãŒã‚ã‚Šã¾ã™: %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC ãŠã‚ˆã³ -fpic ã¯ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, gcc-internal-format
msgid "unknown src"
msgstr ""
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, gcc-internal-format
msgid "unknown dest"
msgstr ""
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "スタックフレームãŒå¤§ãã™ãŽã¾ã™: %d ãƒã‚¤ãƒˆ"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "movsi got 内㧠expand_binop ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr "PIC 被演算å­ã‚’発行ã—ã¦ã„ã¾ã™ãŒã€ PIC レジスタãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -23872,419 +23935,419 @@ msgstr "PCH ファイルを拡張ã§ãã¾ã›ã‚“: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "PCH ファイル内ã§ä½ç½®ã‚’設定ã§ãã¾ã›ã‚“: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr "%stune=x86-64%s ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸã€‚代ã‚ã‚Šã« %stune=k8%s ã¾ãŸã¯ %stune=generic%s ã®é©åˆ‡ãªæ–¹ã‚’使用ã—ã¦ãã ã•ã„"
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "コードモデル %qs 㯠%s ビットモード内ã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %qs not supported in the %s bit mode"
msgid "code model %qs not supported in x32 mode"
msgstr "コードモデル %qs 㯠%s ビットモード内ã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "コードモデル %s 㯠PIC モードをサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s ã¯ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i ビットモードãŒä½¿ç”¨ã§ãるよã†ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "é¸æŠžã—㟠CPU 㯠x86-64 命令セットをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr ""
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, fuzzy, gcc-internal-format
#| msgid "%sregparm%s is ignored in 64-bit mode"
msgid "-mregparm is ignored in 64-bit mode"
msgstr "%sregparm%s 㯠64 ビットモードã§ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%sregparm=%d%s is not between 0 and %d"
msgid "-mregparm=%d is not between 0 and %d"
msgstr "%sregparm=%d%s ㌠0 㨠%d ã®é–“ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "%srtd%s 㯠64 ビットモードã§ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "%spreferred-stack-boundary%s is not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "%spreferred-stack-boundary%s ã¯ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%spreferred-stack-boundary=%d%s is not between %d and %d"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "%spreferred-stack-boundary=%d%s ㌠%d 㨠%d ã®é–“ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mincoming-stack-boundary=%d ㌠%d 㨠12 ã®é–“ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr "%ssseregparm%s ㌠SSE ãŒæœ‰åŠ¹ã§ã¯ãªã„状態ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "SSE 命令セットãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚ 387 数値演算を使用ã—ã¾ã™"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "387 命令セットãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚SSE 数値演算を使用ã—ã¾ã™"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr "-mno-fentry 㯠SEH ã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "-mrecip=%s 用ã®ä¸æ˜Žãªã‚ªãƒ—ションã§ã™"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr "attribute(target(\"%s\")) ãŒä¸æ˜Žã§ã™"
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr "option(\"%s\") ã¯æ—¢ã«æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "fastcall 㨠regparm 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr "regparam 㨠thiscall 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "%qE 属性ã«ã¯æ•´æ•°å®šæ•°å¼•æ•°ãŒå¿…è¦ã§ã™"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "%qE 属性ã¸ã®å¼•æ•°ãŒ %d より大ãã„ã§ã™"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "fastcall 㨠cdecl 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "fastcall 㨠stdcall 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr "fastcall 㨠thiscall 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "stdcall 㨠cdecl 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "stdcall 㨠fastcall 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr "stdcall 㨠thiscall 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr "cdecl 㨠thiscall 属性ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "%qE 属性ãŒéžã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ç”¨ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "SSE/SSE2 ãŒæœ‰åŠ¹ã§ãªã„状態㧠sseregparm 属性付ãã® %qD を呼ã³å‡ºã—ã¦ã„ã¾ã™"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "SSE/SSE2 ãŒæœ‰åŠ¹ã§ãªã„状態㧠sseregparm 属性付ãã® %qT を呼ã³å‡ºã—ã¦ã„ã¾ã™<"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "ms_hook_prologue ã¯å…¥ã‚Œå­ã«ãªã£ãŸé–¢æ•°ã¨ä¸¡ç«‹ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr "å¯å¤‰é•·é…列メンãƒã‚’æŒã¤æ§‹é€ ä½“を渡㙠ABI 㯠GCC 4.4 ã§å¤‰æ›´ã«ãªã£ã¦ã„ã¾ã™"
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr "long double ã‚’æŒã¤å…±ç”¨ä½“を渡㙠ABI 㯠GCC 4.4 ã§å¤‰æ›´ã«ãªã£ã¦ã„ã¾ã™"
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr "複素浮動å°æ•°ãƒ¡ãƒ³ãƒã‚’æŒã¤æ§‹é€ ä½“を渡㙠ABI 㯠GCC 4.4 ã§å¤‰æ›´ã«ãªã£ã¦ã„ã¾ã™"
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "SSE ãŒç„¡åŠ¹ã®çŠ¶æ…‹ã§ SSE レジスタを戻ã—㦠(return) ã„ã¾ã™"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "SSE ãŒç„¡åŠ¹ã®çŠ¶æ…‹ã§ SSE レジスタ引数ãŒã‚ã‚Šã¾ã™"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "x87 ãŒç„¡åŠ¹ãªçŠ¶æ…‹ã§ x87 レジスタを戻ã—㦠(return) ã„ã¾ã™"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "SSE ãŒæœ‰åŠ¹ã§ãªã„状態ã§ã® SSE ベクトル引数㯠ABI を変更ã—ã¾ã™"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "MMX ãŒæœ‰åŠ¹ã§ãªã„状態ã§ã® MMX ベクトル引数㯠ABI を変更ã—ã¾ã™"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr "%d ãƒã‚¤ãƒˆæ•´åˆ—ã®ä»®å¼•æ•°ã‚’渡㙠ABI 㯠GCC 4.6 ã§å¤‰æ›´ã«ãªã£ã¦ã„ã¾ã™"
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "SSE ãŒæœ‰åŠ¹ã§ãªã„状態ã§ã® SSE ベクトル戻㗠(return) 㯠ABI を変更ã—ã¾ã™"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "MMX ãŒæœ‰åŠ¹ã§ãªã„状態ã§ã® MMX ベクトル戻㗠(return) 㯠ABI を変更ã—ã¾ã™"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr "ms_hook_prologue 属性㯠32 ビット用㮠-mfentry ã¨ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr ""
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "最後ã®å¼•æ•°ã¯ 2 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "第五引数㯠8 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "第三引数㯠8 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "the last argument must be a 1-bit immediate"
msgid "the last argument must be an 1-bit immediate"
msgstr "最後ã®å¼•æ•°ã¯ 1 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "最後ã®å¼•æ•°ã¯ 4 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "最後ã®å¼•æ•°ã¯ 1 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "最後ã®å¼•æ•°ã¯ 5 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "最後ã®å¼•æ•°ã®å‰ã®å¼•æ•°ã¯ 8 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "最後ã®å¼•æ•°ã¯ 8 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "最後ã®å¼•æ•°ã¯ 32 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr "%qE 㯠isa オプション %s ãŒå¿…è¦ã§ã™"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "最後ã®å¼•æ•°ã¯å³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, fuzzy, gcc-internal-format
#| msgid "last argument must be an immediate"
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "最後ã®å¼•æ•°ã¯å³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "%qE 属性㯠32 ビットã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "%qE 属性ã¸ã®å¼•æ•°ãŒ 0 ã§ã‚‚ 1 ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "ms_abi 㨠sysv_abi 属性ã¯äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "互æ›æ€§ãŒãªã„ %qE 属性ã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
@@ -24354,19 +24417,19 @@ msgstr "アドレス領域属性ã¯é–¢æ•°ç”¨ã«ã¯æŒ‡å®šã§ãã¾ã›ã‚“"
msgid "%qE attribute requires a string constant argument"
msgstr "%qE 属性ã¯æ–‡å­—列定数引数を必è¦ã¨ã—ã¾ã™"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "-mfixed-range ã®å€¤ã¯ REG1-REG2 å½¢å¼ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s ãŒç©ºã®ç¯„囲ã§ã™"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr "version 属性ãŒæ–‡å­—列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -24432,7 +24495,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "%qE 属性㯠R8C ターゲット用ã«ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "%qE 属性ã®å¼•æ•°ãŒæ•´æ•°å®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -24487,7 +24550,7 @@ msgstr "複数ã®å‰²ã‚Šè¾¼ã¿å±žæ€§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread 㯠fido 上ã§ã®ã¿ä½¿ç”¨å‡ºæ¥ã¾ã™"
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "スタック制é™å¼ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -25005,27 +25068,27 @@ msgstr "MMIX 内部: %s ã¯ã‚·ãƒ•ãƒˆæ¼”ç®—å¯èƒ½ãª int ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr "-mtune= 㯠mn10300ã€am33ã€am33-2 ã¾ãŸã¯ am34 ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "PIC コード生æˆã¯ç§»æ¤æ€§ãŒã‚るランタイムモデル内ã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "PIC コード生æˆã¯é«˜é€Ÿé–“接呼ã³å‡ºã—ã¨ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g ã¯ã“ã®ãƒ—ロセッサã§ã¯ GAS を使用ã™ã‚‹æ™‚ã ã‘サãƒãƒ¼ãƒˆã•ã‚Œã¾ã™ã€‚"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "-g オプションãŒç„¡åŠ¹ã«ãªã‚Šã¾ã—ãŸ"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -25457,82 +25520,82 @@ msgstr "内部エラー: 組ã¿è¾¼ã¿é–¢æ•° %s ãŒäºˆæœŸã—ãªã„戻り型 %s ã‚
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr "内部エラー: 組ã¿è¾¼ã¿é–¢æ•° %s ã®ç¬¬ %d 引数ãŒäºˆæœŸã—ãªã„引数型 %s ã‚’æŒã£ã¦ã„ã¾ã™"
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "スタックフレームãŒå¤§ãã™ãŽã¾ã™"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "AltiVec 型内ã§ã® %<long double%> ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "AltiVec 型内ã§ã®çœŸå½åž‹ (boolean) ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "AltiVec 型内ã§ã® %<complex%> ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "AltiVec 型内ã§ã®å進浮動å°æ•°ç‚¹ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "-mvsx ç„¡ã—㧠64 ビットコード用㮠AltiVec 型内ã§ã® %<long%> ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "AltiVec 型内ã§ã® %<long%> ã®ä½¿ç”¨ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸã€‚%<int%> を使用ã—ã¦ãã ã•ã„"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "-mvsx ç„¡ã—㧠AltiVec 型内ã§ã® %<long long%> ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "-mvsx ç„¡ã—㧠AltiVec 型内ã§ã® %<double%> ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr "マイクロコード命令 %s\t[%s] #%d を発行ã—ã¦ã„ã¾ã™"
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr "æ¡ä»¶ä»˜ãマイクロコード命令 %s\t[%s] #%d を発行ã—ã¦ã„ã¾ã™"
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "CPU \"%s\" 㯠%s\"%s\"%s 用ã«ã¯ç„¡åŠ¹ã§ã™"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr "%s\"%s\"%s ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr "%s\"%s\"%s ã¯ç„¡åŠ¹ã§ã™"
@@ -25586,12 +25649,12 @@ msgstr "E500 㨠FPR ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
msgid "-m64 not supported in this configuration"
msgstr "-m64 ã¯ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 㯠PowerPC64 CPU ãŒå¿…è¦ã§ã™"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr "-mcmodel ã¯ä»–ã® toc オプションã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
@@ -25608,64 +25671,64 @@ msgstr "-mcmodel ã¯ä»–ã® toc オプションã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "-mcall-%s 用ã®é–“é•ã£ãŸå€¤ã§ã™"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "-msdata=%s 用ã®é–“é•ã£ãŸå€¤ã§ã™"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable 㨠-msdata=%s ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s 㨠-msdata=%s ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s 㨠-mcall-%s ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable 㨠-mno-minimal-toc ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable 㨠-mcall-%s ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC 㨠-mcall-%s ã¯ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc ã¯ãƒ“ッグエンディアンã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-msecure-plt ã¯ä½¿ç”¨ã™ã‚‹ã‚¢ã‚»ãƒ³ãƒ–ラã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s ã¯ã“ã®è¨­å®šã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -25777,53 +25840,53 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "%qE 属性ã¯å‰²ã‚Šè¾¼ã¿é–¢æ•°ã¸ã®ã¿é©ç”¨ã•ã‚Œã¾ã™"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "%qE 属性㯠SH2A 用ã«ã®ã¿ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "interrupt_handler 属性㯠-m5-compact ã¨ä½µç”¨ã§ãã¾ã›ã‚“"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "%qE 属性㯠SH2A ã¸ã®ã¿é©ç”¨ã•ã‚Œã¾ã™"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "%qE 属性引数㯠0 㨠255 ã®é–“ã§ã‚ã‚‹ã¹ãã§ã™"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "%qE 属性ã®å¼•æ•°ãŒæ–‡å­—列定数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 ã¯å‘¼ã³å‡ºã—ã«ã‚ˆã£ã¦ä¸Šæ›¸ãã•ã‚Œã‚‹ãƒ¬ã‚¸ã‚¹ã‚¿ã¨ã—ã¦åˆ©ç”¨ã§ãã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -26178,38 +26241,38 @@ msgstr "%<-gnat%> ㌠%<-gant%> ã¨é–“é•ã£ã¦ç¶´ã‚‰ã‚Œã¦ã„ã¾ã™"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "%qs 属性ãŒç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "%qs 属性ã¯åå‰ä»˜ã引数をæŒã¤ãƒ—ロトタイプãŒå¿…è¦ã§ã™"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr ""
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "%qE 属性ã¯åŠ¹æžœãŒã‚ã‚Šã¾ã›ã‚“"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "%qs 属性用ã®ç„¡åŠ¹ãªãƒ™ã‚¯ãƒˆãƒ«åž‹ã§ã™"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "%qs 属性ã¯é…列型ã®ã¿ã«é©ç”¨ã§ãã¾ã™"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "%qs 属性用ã®ç„¡åŠ¹ãªã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆåž‹ã§ã™"
@@ -26225,7 +26288,7 @@ msgstr " %qT ã‹ã‚‰ %qT 㸠%<this%> パラメータを暗黙的ã«å¤‰æ›ã™ã‚‹
msgid " no known conversion for argument %d from %qT to %qT"
msgstr "第 %d 引数を %qT ã‹ã‚‰ %qT ã¸å¤‰æ›ã™ã‚‹æ–¹æ³•ãŒä¸æ˜Žã§ã™"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26511,7 +26574,7 @@ msgstr "%qT ã‹ã‚‰ %qT ã¸ã®ç„¡åŠ¹ãªå¤‰æ›ã§ã™"
msgid "invalid conversion from %qT to %qT"
msgstr "%qT ã‹ã‚‰ %qT ã¸ã®ç„¡åŠ¹ãªå¤‰æ›ã§ã™"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr ""
@@ -26521,188 +26584,188 @@ msgstr ""
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr ""
-#: cp/call.c:5862
+#: cp/call.c:5866
#, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr ""
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr ""
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr ""
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "%q+D ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã¯ ABI ã«é©åˆã—ã¦ã„ãªã„ãŸã‚å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯å¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr ""
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr ""
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr ""
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr ""
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "関数呼ã³å‡ºã—ã®å¼•æ•°ãŒ format 属性ã®å€™è£œã§ã‚るよã†ã§ã™"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr ""
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr ""
-#: cp/call.c:6564
+#: cp/call.c:6574
#, gcc-internal-format
msgid " in call to %q+D"
msgstr ""
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr " (-fno-deduce-init-list ã§ã“れを無効ã«å‡ºæ¥ã¾ã™)"
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "éžé–¢æ•° %qD ã®å‘¼ã³å‡ºã—ã§ã™"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr "コンストラクタ %<%T::%D%> を直接呼ã³å‡ºã™ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr ""
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr ""
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸ %<%s(%A)%> ã®å‘¼ã³å‡ºã—ã¯æ›–昧ã§ã™"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "オブジェクト以外ãŒãƒ¡ãƒ³ãƒé–¢æ•° %qD を呼ã³å‡ºã™ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr ""
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr ""
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr " 候補 1: %q+#F"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr " 候補 2: %q+#F"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr ""
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr "%qE ã‹ã‚‰ %qT ã¸å¤‰æ›ã§ãã¾ã›ã‚“"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr ""
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr ""
@@ -26915,221 +26978,221 @@ msgstr "フィールド %q+D ã¯ãŒé–¢æ•°åž‹ã¨ã—ã¦ç„¡åŠ¹ãªå®£è¨€ã‚’ã•ã‚Œã¾
msgid "field %q+D invalidly declared method type"
msgstr "フィールド %q+D ã¯ãƒ¡ã‚½ãƒƒãƒ‰åž‹ã¨ã—ã¦ç„¡åŠ¹ãªå®£è¨€ã‚’ã•ã‚Œã¾ã—ãŸ"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr ""
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "フィールド %q+#D ãŒã‚¯ãƒ©ã‚¹åã¨åŒã˜ã§ã™"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T ãŒãƒã‚¤ãƒ³ã‚¿ãƒ‡ãƒ¼ã‚¿ãƒ¡ãƒ³ãƒã‚’æŒã£ã¦ã„ã¾ã™"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr ""
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr ""
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "éžä»®æƒ³é–¢æ•° %q+D 用ã®åˆæœŸåŒ–å­ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "éžãƒ¡ãƒ³ãƒé–¢æ•°ã§ã® `this' ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr "クラスタイプ項を欠ã„ã¦ã„ã¾ã™"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "基底クラス %q#T ãŒéžä»®æƒ³ãƒ‡ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’æŒã£ã¦ã„ã¾ã™"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " base class %qT of %q+T is non-literal"
msgstr "基底クラス %q#T ãŒéžä»®æƒ³ãƒ‡ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’æŒã£ã¦ã„ã¾ã™"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr "関数を inline ã«ã§ãã¾ã›ã‚“"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "コンストラクタãŒç„¡ã„クラス内ã«éžé™çš„å‚ç…§ %q+#D ãŒã‚ã‚Šã¾ã™"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "コンストラクタãŒç„¡ã„クラス内ã«éžé™çš„定数メンム%q+#D ãŒã‚ã‚Šã¾ã™"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr "%q+D ã¯å®šæ•°å‚照をå–るよã†ã«å®£è¨€ã•ã‚Œã¦ã„ã¾ã™ãŒã€æš—黙的ãªå®£è¨€ã§ã¯éžå®šæ•°å‚照をå–ã‚Šã¾ã™"
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "仮想基底 %qT ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã¯ ABI ã«é©åˆã—ã¦ã„ãªã„ãŸã‚å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯å¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "直接ã®åŸºåº• %qT ã¯æ›–昧ãªãŸã‚ %qT 内ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "仮想基底 %qT ã¯æ›–昧ãªãŸã‚ %qT 内ã§ã¯ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "%qT ã¸ä»£å…¥ã•ã‚ŒãŸã‚µã‚¤ã‚ºã¯ ABI ã«é©åˆã—ã¦ã„ãªã„ã‹ã‚‚ã—ã‚Œãªã„ãŸã‚å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯å¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "%qD ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã¯ ABI ã«é©åˆã—ã¦ã„ãªã„ã‹ã‚‚ã—ã‚Œãªã„ãŸã‚å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯å¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "%q+D ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã¯ ABI ã«é©åˆã—ã¦ã„ãªã„ãŸã‚å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯å¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D ã¯ç©ºã®ã‚¯ãƒ©ã‚¹ã‚’å«ã‚“ã§ã„ã‚‹ãŸã‚å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯åŸºåº•ã‚¯ãƒ©ã‚¹ãŒåˆ¥ã®å ´æ‰€ã«é…ç½®ã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "空ã®ã‚¯ãƒ©ã‚¹ %qT ã‹ã‚‰å¾—られãŸã‚¯ãƒ©ã‚¹ã®é…ç½®ã¯å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯å¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "%q#T ãŒå†å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T ã¯ä»®æƒ³é–¢æ•°ã‚’æŒã£ã¦ãŠã‚Šéžä»®æƒ³ãƒ‡ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ã§ã™"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr ""
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr "メンãƒé–¢æ•°ã®åå‰ã‚’欠ã„ã¦ã„ã¾ã™"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "言語文字列 %<\"%E\"%> ã¯èªè­˜ã§ãã¾ã›ã‚“"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "関数 %qD ã‹ã‚‰åž‹ %q#T ã¸ã®å¤‰æ›ãŒé©åˆã—ã¾ã›ã‚“"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸé–¢æ•° %qD ã‹ã‚‰åž‹ %q#T ã¸ã®å¤‰æ›ã¯æ›–昧ã§ã™"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "メンム%qD ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã¨è¦‹ãªã—ã¦ã„ã¾ã™"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "型情報ãŒä¸å分ã§ã™"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "%qE ã‚’åž‹ %qT ã‹ã‚‰åž‹ %qT ã¸å¤‰æ›ã§ãã¾ã›ã‚“"
@@ -27139,12 +27202,12 @@ msgstr "%qE ã‚’åž‹ %qT ã‹ã‚‰åž‹ %qT ã¸å¤‰æ›ã§ãã¾ã›ã‚“"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "%q#D ãŒå®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "%qD ã®æ„味㮠%q+#D ã‹ã‚‰ã®å¤‰æ›´ã§ã™"
@@ -27164,7 +27227,7 @@ msgstr "ä¸å®Œå…¨åž‹ %qT ã‹ã‚‰ %qT ã¸å¤‰æ›ã§ãã¾ã›ã‚“"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "%qE ã® %qT ã‹ã‚‰ %qT ã¸ã®å¤‰æ›ã¯æ›–昧ã§ã™"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "é…列ã®æ·»å­—ãŒæ•´æ•°åž‹ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -27194,7 +27257,7 @@ msgstr ""
msgid "conversion from %qT to %qT discards qualifiers"
msgstr ""
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr ""
@@ -27602,7 +27665,7 @@ msgstr ""
msgid "declaration of template %q#D"
msgstr ""
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr ""
@@ -27654,7 +27717,7 @@ msgstr ""
msgid "%q+#D previously defined here"
msgstr ""
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
#| msgid "previously declared here"
msgid "%q+#D previously declared here"
@@ -27773,7 +27836,7 @@ msgstr ""
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr ""
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr ""
@@ -27844,7 +27907,7 @@ msgstr ""
msgid "%qD is not a type"
msgstr "%s ã¯åž‹ %s ã§ã¯ã‚ã‚Šã¾ã›ã‚“ (引数 %d)"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr ""
@@ -27975,123 +28038,123 @@ msgstr "`%s' ã®å®£è¨€ã§åž‹ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã® `int' ã¨ã•ã‚Œã¾ã—ãŸ"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr ""
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr "`%s' ã®å®£è¨€ã«äºŒã¤ä»¥ä¸Šã®ãƒ‡ãƒ¼ã‚¿åž‹ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "`com_interface' 属性ã¯ã‚¯ãƒ©ã‚¹å®šç¾©ã«ã®ã¿ç”¨ã„る事ãŒã§ãã¾ã™"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef `%s' ãŒåˆæœŸåŒ–ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "`%s' ã®å®£è¨€ã« `extern' ãŒã¤ã„ã¦ãŠã‚Šã€åˆæœŸåŒ–ã‚‚ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, fuzzy, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "åˆæœŸåŒ–ã•ã‚ŒãŸå¤‰æ•° `%s' 㯠dllimport マークã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr ""
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, fuzzy, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "é‡è¤‡ã—ãŸåˆæœŸåŒ–å­"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "friend 宣言ãŒã‚¯ãƒ©ã‚¹å®šç¾©ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, fuzzy, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "変数 `%s' ã«ã¯åˆæœŸåŒ–å­ãŒã‚ã‚Šã¾ã™ãŒã€ä¸å®Œå…¨åž‹ã§ã™"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, fuzzy, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "é…列 `%s' ã®è¦ç´ ã«ä¸å®Œå…¨åž‹ãŒã‚ã‚Šã¾ã™"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "`%s' ã®å®£è¨€ã« `extern' ãŒã¤ã„ã¦ãŠã‚Šã€åˆæœŸåŒ–ã‚‚ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, fuzzy, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "仮引数 `%s' ã¯ä¸å®Œå…¨åž‹ã§ã™"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, fuzzy, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "自明ã§ãªã„ラベルã®ã¤ã„ãŸåˆæœŸåŒ–å­ã§ã™"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, fuzzy, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "åˆæœŸåŒ–å­ã¯ `%s' ã®ã‚µã‚¤ã‚ºã®ç‰¹å®šã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, fuzzy, gcc-internal-format
msgid "array size missing in %qD"
msgstr "`%s' ã§ã®é…列サイズを欠ã„ã¦ã„ã¾ã™"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, fuzzy, gcc-internal-format
msgid "zero-size array %qD"
msgstr "ISO C 㯠サイズ 0 ã®é…列 `%s' ã‚’ç¦ã˜ã¾ã™"
@@ -28099,391 +28162,391 @@ msgstr "ISO C 㯠サイズ 0 ã®é…列 `%s' ã‚’ç¦ã˜ã¾ã™"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr ""
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr ""
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr ""
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, fuzzy, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "未åˆæœŸåŒ–定数を ROM ã«ç½®ã‹ãªã„"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr ""
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, fuzzy, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "無効ãªãƒ“ット列åˆæœŸåŒ–å­ã§ã™"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, fuzzy, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "ç„¡å基底クラスã®åˆæœŸè¨­å®šå­ãŒæ›–昧ã§ã™"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, fuzzy, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%s ã« `%s' ã¨ã„ã†åå‰ã®ãƒ¡ãƒ³ãƒã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, fuzzy, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "入力ファイルãŒå¤šã™ãŽã¾ã™"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, fuzzy, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "スカラーåˆæœŸåŒ–å­ãŒãƒ–レースã§å›²ã¾ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, fuzzy, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "åˆæœŸåŒ–å­ã®ã¾ã‚ã‚Šã®ãƒ–レースを欠ã„ã¦ã„ã¾ã™"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "é…列 `%s' ã®è¦ç´ ã«ä¸å®Œå…¨åž‹ãŒã‚ã‚Šã¾ã™"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, fuzzy, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "å¯å¤‰é•·ã‚ªãƒ–ジェクトã¯åˆæœŸåŒ–ã•ã‚Œãªã„ã“ã¨ã«ãªã‚‹ã§ã—ょã†"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "ISO C89 ã¯è¤‡åˆãƒªãƒ†ãƒ©ãƒ«ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr "`%s' ã¯ä¸å®Œå…¨åž‹ã§ã™"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, fuzzy, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "共用体åˆæœŸåŒ–å­å†…ã®è¦ç´ ãŒå¤šã™ãŽã¾ã™"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, fuzzy, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "_Pramga ãŒæ‹¬å¼§ã§å›²ã¾ã‚ŒãŸæ–‡å­—列リテラルをå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "コンストラクタã®é™çš„メンãƒåˆæœŸåŒ–å­ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr ""
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(クラス外ã§ã®åˆæœŸåŒ–ã‚’å¿…è¦ã¨ã—ã¾ã™)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "宣言ã®ä¸­ã«ä»£å…¥(åˆæœŸåŒ–ã§ã¯ãªã)ãŒã‚ã‚Šã¾ã™"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, fuzzy, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "å‰æ–¹ã§ã® `%s' ã®å®£è¨€"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr ""
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, fuzzy, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "éžå®šæ•°é…列å¼ã‹ã‚‰é…列ãŒåˆæœŸåŒ–ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, fuzzy, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "関数 `%s' ãŒå¤‰æ•°ã§ã‚ã‚‹ã‹ã®ã‚ˆã†ã«åˆæœŸåŒ–ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr "åˆæœŸåŒ–å­ã¯ `%s' ã®ã‚µã‚¤ã‚ºã®ç‰¹å®šã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
msgid "array size missing in %qT"
msgstr "`%s' ã§ã®é…列サイズを欠ã„ã¦ã„ã¾ã™"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
msgid "zero-size array %qT"
msgstr "ISO C 㯠サイズ 0 ã®é…列 `%s' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, fuzzy, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "ä»–ã®ã‚¯ãƒ©ã‚¹ `%s' ã®ãƒ‡ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’ã€ãƒ¡ãƒ³ãƒã«ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, fuzzy, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "ä»–ã®ã‚¯ãƒ©ã‚¹ `%s' ã®ãƒ‡ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’ã€ãƒ¡ãƒ³ãƒã«ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr ""
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr ""
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr ""
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr ""
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr ""
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr ""
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr ""
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr ""
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr ""
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr ""
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr ""
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, fuzzy, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "領域 `%s' ã¯é–¢æ•°ã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, fuzzy, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "例外仕様ã®æ¤œæŸ»ã‚’ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生æˆã—ãªã„"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, fuzzy, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "宣言ã®ä¸­ã«ä»£å…¥(åˆæœŸåŒ–ã§ã¯ãªã)ãŒã‚ã‚Šã¾ã™"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr ""
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "`::main' ã‚’ template ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "`::main' ã‚’ inline ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "`::main' ã‚’ static ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr ""
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "%qs is an invalid argument to -mcpu="
msgid "%qD has invalid argument list"
msgstr "%qs 㯠-mcpu= ã¸ã®å¼•æ•°ã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr "デストラクタをé™çš„メンãƒé–¢æ•°ã¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, fuzzy, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "`main' 㯠`int' ã‚’è¿”ã•ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "redefinition of typedef %q+D"
msgid "definition of explicitly-defaulted %q+D"
msgstr "typedef %q+D ãŒå†å®šç¾©ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "`%s' ã¯å‰ã«ã“ã“ã§å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, fuzzy, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "メンãƒé–¢æ•°ã¸ã®ãƒã‚¤ãƒ³ã‚¿ãŒå‘¼ã°ã‚Œã¾ã—ãŸãŒã€ã‚¯ãƒ©ã‚¹ã‚¹ã‚³ãƒ¼ãƒ—内ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -28492,892 +28555,892 @@ msgstr "メンãƒé–¢æ•°ã¸ã®ãƒã‚¤ãƒ³ã‚¿ãŒå‘¼ã°ã‚Œã¾ã—ãŸãŒã€ã‚¯ãƒ©ã‚¹ã‚¹
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "ISO C++ 㯠new å¼ã®åˆæœŸåŒ–ã§ã® `=' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr ""
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr ""
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ 㯠new å¼ã®åˆæœŸåŒ–ã§ã® `=' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ 㯠new å¼ã®åˆæœŸåŒ–ã§ã® `=' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, fuzzy, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "é…列 `%s' ã®å¤§ãã•ã¯éžæ•´æ•°åž‹"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, fuzzy, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "é…列 `%s' ã®å¤§ãã•ã¯éžæ•´æ•°åž‹"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, fuzzy, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "é…列 `%s' ã®å¤§ãã•ãŒè² ã§ã™"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, fuzzy, gcc-internal-format
msgid "size of array is negative"
msgstr "é…列 `%s' ã®å¤§ãã•ãŒè² ã§ã™"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C 㯠サイズ 0 ã®é…列 `%s' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C 㯠サイズ 0 ã®é…列 `%s' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, fuzzy, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "é…列 `%s' ã®å¤§ãã•ã¯éžæ•´æ•°åž‹"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, fuzzy, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "定数å¼ãŒæ¬ ã‘ã¦ã„ã‚‹ã‹ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C89 ã¯å¯å¤‰é•·ã‚µã‚¤ã‚ºã®é…列 `%s' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C89 ã¯å¯å¤‰é•·ã‚µã‚¤ã‚ºã®é…列 `%s' ã‚’ç¦ã˜ã¾ã™"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "é…列ã®æ¬¡å…ƒãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr "`%s' ã®å®£è¨€ã¯ void ã®é…列"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "`%s' ã®å®£è¨€ã¯ void ã®é…列"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
msgid "creating array of void"
msgstr "`%s' ã®å®£è¨€ã¯ void ã®é…列"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "`%s' ã®å®£è¨€ã¯é–¢æ•°ã®é…列"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
msgid "creating array of functions"
msgstr "`%s' ã®å®£è¨€ã¯é–¢æ•°ã®é…列"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "`%s' ã®å®£è¨€ã¯é–¢æ•°ã®é…列"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
msgid "creating array of references"
msgstr "é…列å‚ç…§ã§ã®æ·»å­—を欠ã„ã¦ã„ã¾ã™"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "`%s' ã®å®£è¨€ã¯é–¢æ•°ã®é…列"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
msgid "creating array of function members"
msgstr "`%s' ã®å®£è¨€ã¯é–¢æ•°ã®é…列"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, fuzzy, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "コンストラクタã«å¯¾ã™ã‚‹æˆ»ã‚Šå€¤ã®åž‹æŒ‡å®šã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, fuzzy, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "コンストラクタã«å¯¾ã™ã‚‹æˆ»ã‚Šå€¤ã®åž‹æŒ‡å®šã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, fuzzy, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "コンストラクタã«å¯¾ã™ã‚‹æˆ»ã‚Šå€¤ã®åž‹æŒ‡å®šã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "ç„¡å変数やフィールド㌠void ã¨å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "変数ã¾ãŸã¯ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒ void ã¨å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "未定義ã®åž‹ `%s %s' ã®ä½¿ç”¨ã¯ä¸é©åˆ‡ã§ã™"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "未定義ã®åž‹ `%s %s' ã®ä½¿ç”¨ã¯ä¸é©åˆ‡ã§ã™"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "未定義ã®åž‹ `%s %s' ã®ä½¿ç”¨ã¯ä¸é©åˆ‡ã§ã™"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr ""
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr ""
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "`%s' ã®å®£è¨€ã¯é–¢æ•°ã®é…列"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ã‚’覆ã„éš ã—ã¾ã™"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, fuzzy, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "関数ã®å®šç¾©ãŒ `register' ã¨å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "`%s' ã® extern 宣言ãŒãƒã‚¹ãƒˆã—ã¦ã„ã¾ã™"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "%q+D ã®å†å®£è¨€ã¯ä»®å¼•æ•°ã‚’éš ã—ã¾ã™"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr ""
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, fuzzy, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "`%s' ã®å®£è¨€ã«äºŒã¤ä»¥ä¸Šã®ãƒ‡ãƒ¼ã‚¿åž‹ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "`%s' ã®å®£è¨€ãŒçŸ›ç›¾ã—ã¦ã„ã¾ã™"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ ã§ã¯åž‹ã®ç„¡ã„ %qs ã®å®£è¨€ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã¯ %<__int128%> ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ 㯠%<__int128%> ã‚’ %qs ã«å¯¾ã—ã¦ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%<signed%> ã¾ãŸã¯ %<unsigned%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%<signed%> 㨠%<unsigned%> ㌠%qs ã«å¯¾ã—ã¦ä¸¡æ–¹æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "%<long%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "%<short%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%> ã¾ãŸã¯ %<short%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%>ã€%<int%>ã€%<short%>ã€ã¾ãŸã¯ %<char%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "%<long%> ã¾ãŸã¯ %<short%> ㌠char ã¨å…±ã« %qs ã«å¯¾ã—ã¦æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%<long%> ãŠã‚ˆã³ %<short%> ㌠%qs ã«å¯¾ã—ã¦ä¸¡æ–¹æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<short%> ã¾ãŸã¯ %<long%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "long, short, signed ã¾ãŸã¯ unsigned ã®ä½¿ç”¨ã¯ %qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "complex 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, fuzzy, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "éžãƒ¡ãƒ³ãƒ `%s' ã‚’ `mutable' ã¨ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> ã¯æœ‰åŠ¹ãªå®£è¨€å­ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "仮引数宣言ã®ä¸­ã® typedef 宣言ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "仮引数 `%s' ã§æŒ‡å®šã•ã‚ŒãŸè¨˜æ†¶ã‚¯ãƒ©ã‚¹"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "仮引数宣言ã®ä¸­ã®è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "仮引数㯠%<constexpr%> ã¨ã—ã¦å®£è¨€ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "%<virtual%> ãŒã‚¯ãƒ©ã‚¹å®£è¨€å¤–ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "%qs ã®å®£è¨€å†…ã«è¤‡æ•°ã®è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒã‚ã‚Šã¾ã™"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "%qs ã«å¯¾ã—ã¦è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "仮引数 %qs ã«å¯¾ã—ã¦è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ã‚¿æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, fuzzy, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "ãƒã‚¹ãƒˆã—ãŸé–¢æ•° `%s' 㯠`extern' ã«å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, fuzzy, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "`%s' ã®ãƒˆãƒƒãƒ—レベルã®å®£è¨€ãŒ `auto' を指定ã—ã¾ã™"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr ""
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "friend 関数宣言内ã®è¨˜æ†¶ã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, fuzzy, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "`%s' ã¯é–¢æ•°ã‚’è¿”ã™é–¢æ•°ã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, fuzzy, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "`%s' ã¯é…列を返ã™é–¢æ•°ã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, fuzzy, gcc-internal-format
#| msgid "unrestricted unions only available with -std=c++0x or -std=gnu++0x"
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr "制é™ã®ãªã„共用体㯠-std=c++0x ã¾ãŸã¯ -std=gnu++0x を指定ã—ãŸæ™‚ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "デストラクタをé™çš„メンãƒé–¢æ•°ã¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, fuzzy, gcc-internal-format
#| msgid "destructor cannot be static member function"
msgid "constructor cannot be static member function"
msgstr "デストラクタをé™çš„メンãƒé–¢æ•°ã¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, fuzzy, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "コンストラクタ㯠virtual 宣言ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "コンストラクタ㯠virtual 宣言ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "コンストラクタ㯠virtual 宣言ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "仮想関数㯠friend ã«ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "friend 宣言ãŒã‚¯ãƒ©ã‚¹å®šç¾©ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr ""
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, fuzzy, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "デストラクタã¯ä»®å¼•æ•°ã‚’å–ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "ãƒã‚¤ãƒ³ã‚¿ã‚’å‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "å‚照をå‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "ãƒã‚¤ãƒ³ã‚¿ã‚’å‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "å‚照をå‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "ãƒã‚¤ãƒ³ã‚¿ã‚’å‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "メンãƒé–¢æ•°ã¯æš—黙的ã«ãã®ã‚¯ãƒ©ã‚¹ã® friend ã§ã™"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "`::main' ã‚’ static ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr ""
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, fuzzy, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "éžãƒ¡ãƒ³ãƒ `%s' ã‚’ `mutable' ã¨ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, fuzzy, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "é…列 `%s' ã®å¤§ãã•ãŒå¤§ãã™ãŽã¾ã™"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, fuzzy, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "`explicit' ã«ã§ãã‚‹ã®ã¯ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã ã‘ã§ã™"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, fuzzy, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "éžãƒ¡ãƒ³ãƒ `%s' ã‚’ `mutable' ã¨ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, fuzzy, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "éžã‚ªãƒ–ジェクトメンム`%s' ã‚’ `mutable' ã¨ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, fuzzy, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "関数 `%s' ã‚’ `mutable' ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, fuzzy, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "static `%s' ã‚’ mutable ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, fuzzy, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "const `%s' ã‚’ `mutable' ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "関数 `%s' ã‚’ `mutable' ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr "仮引数 `%s' ㌠void ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, fuzzy, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "デストラクタをé™çš„メンãƒé–¢æ•°ã¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "関数ã®è¿”ã™åž‹ãŒé–¢æ•°ã§ã‚ã£ã¦ã¯ãªã‚Šã¾ã›ã‚“"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, fuzzy, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "一ã¤ã®ç©ºã®å®£è¨€ä¸­ã«ã€äºŒã¤ã®åž‹ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, fuzzy, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "クラス宣言ã®å¤–å´ã§ virtual 指定ã—ã¦ã„ã¾ã™"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, fuzzy, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "複雑ãªãƒ‘ラメタをもã¤é–¢æ•°ã¯ inline ã«ã§ãã¾ã›ã‚“"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, fuzzy, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "friend 宣言ãŒã‚¯ãƒ©ã‚¹å®šç¾©ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, fuzzy, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "クラス `%s' を大域スコープ㮠friend ã«ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, fuzzy, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "éžãƒ¡ãƒ³ãƒé–¢æ•°ã§ã® `this' ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, fuzzy, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "`%s' ã®å®£è¨€ã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«å®£è¨€ã‚’覆ã„éš ã—ã¾ã™"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, fuzzy, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "仮引数宣言ã®ä¸­ã§ `::' を使ãˆã¾ã›ã‚“"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "仮引数 `%s' ㌠void ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "仮引数 `%s' ㌠void ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, fuzzy, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "無効ãªç”¨æ³•ã® of %%d, %%x, åˆã¯ %%X"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "%s: 関数 `%s' ã®å®£è¨€ãŒå¤‰æ›ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, fuzzy, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "領域 `%s' ã¯é–¢æ•°ã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, fuzzy, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "`::main' ã‚’ static ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr ""
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "`%s' ã®å®£è¨€ã«ã‚ˆã‚Š `this' ã®ãƒ¡ãƒ³ãƒãŒè¦†ã„éš ã•ã‚Œã¾ã™"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr "デストラクタをé™çš„メンãƒé–¢æ•°ã¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr ""
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, fuzzy, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "領域 `%s' ã¯ä¸å®Œå…¨ãªåž‹ã§ã™"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, fuzzy, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "仮引数ãŒä¸å®Œå…¨åž‹ã§ã™"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, fuzzy, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr "%s: `%s' ã®åˆæœŸåŒ–:\n"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, fuzzy, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "`%s' ã¯é–¢æ•°ã§ã‚‚メンãƒé–¢æ•°ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“ -- friend ã¨ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "関数を inline ã«ã§ãã¾ã›ã‚“"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr ""
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, fuzzy, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "関数 `%s' ã«å¯¾ã™ã‚‹è¨˜æ†¶ã‚¯ãƒ©ã‚¹ `auto' ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, fuzzy, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "関数 `%s' ã«å¯¾ã™ã‚‹è¨˜æ†¶ã‚¯ãƒ©ã‚¹ `register' ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, fuzzy, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "関数 `%s' ã«å¯¾ã™ã‚‹è¨˜æ†¶ã‚¯ãƒ©ã‚¹ `auto' ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "åˆæœŸåŒ–å­ãƒªã‚¹ãƒˆã¯éžãƒ¡ãƒ³ãƒé–¢æ•°ã§ã¯ä½¿ãˆã¾ã›ã‚“"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, fuzzy, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "大域スコープ外ã®é–¢æ•° `%s' ã«å¯¾ã™ã‚‹è¨˜æ†¶ã‚¯ãƒ©ã‚¹ `inline' ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, fuzzy, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "大域スコープ外ã®é–¢æ•° `%s' ã«å¯¾ã™ã‚‹è¨˜æ†¶ã‚¯ãƒ©ã‚¹ `inline' ã¯ç„¡åŠ¹ã§ã™"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, fuzzy, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "virtual ãªéžã‚¯ãƒ©ã‚¹é–¢æ•° `%s'"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "メソッド定義ãŒã‚¯ãƒ©ã‚¹ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå†…ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "メソッド定義ãŒã‚¯ãƒ©ã‚¹ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå†…ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, fuzzy, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "`::main' ã‚’ static ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "ä»–ã®é–¢æ•°å†…㧠static 関数を宣言ã§ãã¾ã›ã‚“"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr ""
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr ""
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, fuzzy, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "`%s' ãŒåˆæœŸåŒ–ã•ã‚Œã‚‹ã¨ã“ã‚ã§ã€`extern' 宣言ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, fuzzy, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "`%s' ã« `extern' ã¨åˆæœŸåŒ–å­ã®ä¸¡æ–¹ãŒã‚ã‚Šã¾ã™"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr ""
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr ""
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "関数ãŒãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã—ã¦ã„ã¾ã™"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "関数ãŒãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã—ã¦ã„ã¾ã™"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "仮引数 `%s' ã¯ä¸å®Œå…¨åž‹ã§ã™"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, fuzzy, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "パラメタã¯ãƒ¡ã‚½ãƒƒãƒ‰ã®åž‹ã‚’ä¸æ­£ã«å®£è¨€ã—ã¾ã—ãŸ"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr ""
@@ -29397,169 +29460,169 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr ""
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, fuzzy, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "`::main' ã‚’ static ã¨ã—ã¦ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, fuzzy, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "デストラクタをé™çš„メンãƒé–¢æ•°ã¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "%s%s ã¸ã®å¤‰æ›ã§åž‹å¤‰æ›æ¼”ç®—å­ãŒåˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã¯æ±ºã—ã¦ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr "%s%s ã¸ã®å¤‰æ›ã§åž‹å¤‰æ›æ¼”ç®—å­ãŒåˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã¯æ±ºã—ã¦ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "%s%s ã¸ã®å¤‰æ›ã§åž‹å¤‰æ›æ¼”ç®—å­ãŒåˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã¯æ±ºã—ã¦ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr "%s%s ã¸ã®å¤‰æ›ã§åž‹å¤‰æ›æ¼”ç®—å­ãŒåˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã¯æ±ºã—ã¦ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "%s%s ã¸ã®å¤‰æ›ã§åž‹å¤‰æ›æ¼”ç®—å­ãŒåˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã¯æ±ºã—ã¦ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr "%s%s ã¸ã®å¤‰æ›ã§åž‹å¤‰æ›æ¼”ç®—å­ãŒåˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã¯æ±ºã—ã¦ã‚ã‚Šã¾ã›ã‚“"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, fuzzy, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ ã¯ç„¡å構造体をç¦æ­¢ã—ã¦ã„ã¾ã™"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr ""
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, fuzzy, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "`%s' 㯠0 ã‹ 2 個ã®å¼•æ•°ã—ã‹ã¨ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, fuzzy, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "`%s' 㯠0 ã‹ 2 個ã®å¼•æ•°ã—ã‹ã¨ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, fuzzy, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "`%s' 㯠0 ã‹ 2 個ã®å¼•æ•°ã—ã‹ã¨ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr ""
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr ""
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
#| msgid "invalid template declaration of %qD"
msgid "using alias template specialization %qT after %qs"
msgstr "%qD ã®ç„¡åŠ¹ãªãƒ†ãƒ³ãƒ—レート宣言ã§ã™"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "å‰æ–¹ã§ã® `%s' ã®å®£è¨€"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, fuzzy, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "å‰æ–¹ã§ã® `%s' ã®å®£è¨€"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -29571,88 +29634,88 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr ""
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, fuzzy, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "%s: オプション `%s' ã¯ã‚ã„ã¾ã„ã§ã™\n"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, fuzzy, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "事å‰ã®å®£è¨€ãªã—ã®å¤§åŸŸé–¢æ•°ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, fuzzy, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ã‚’覆ã„éš ã—ã¾ã™"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "å‰æ–¹ã§ã® `%s' ã®å®£è¨€"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, fuzzy, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "åž‹ä¿®é£¾å­ `%s' 㯠struct ã‚„ class ã®å¾Œã«ã¯ä½¿ãˆã¾ã›ã‚“"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, fuzzy, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "é‡è¤‡ã—㟠case ã®å€¤"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
msgid "previous definition here"
msgstr "`%s' ã¯å‰ã«ã“ã“ã§å®šç¾©ã•ã‚Œã¾ã—ãŸ"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -29661,73 +29724,73 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "`%s' ã®åˆ—挙値ãŒæ•´æ•°å®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for %<unsigned long%> type"
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "整数定数㌠%<unsigned long%> åž‹ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, fuzzy, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "列挙値ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, fuzzy, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "戻り値ã®åž‹ãŒä¸å®Œå…¨åž‹ã§ã™"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "戻り値ã®åž‹ãŒä¸å®Œå…¨åž‹ã§ã™"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, fuzzy, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "`%s' ã®å‰æ–¹å®£è¨€ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
msgid "invalid function declaration"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, fuzzy, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "仮引数 `%s' ㌠void ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr ""
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, fuzzy, gcc-internal-format
msgid "invalid member function declaration"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr ""
@@ -29767,7 +29830,7 @@ msgstr "関数を削除 (delete) ã§ãã¾ã›ã‚“。%<delete%> ã®æœ‰åŠ¹ãªå¼•æ•°
msgid "deleting %qT is undefined"
msgstr "%qT ã®å‰Šé™¤ã¯å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "%q#D ã®ãƒ†ãƒ³ãƒ—レート宣言ã§ã™"
@@ -30040,7 +30103,7 @@ msgstr ""
msgid "reference to %<%T::%D%> is ambiguous"
msgstr ""
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, fuzzy, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%s ã« `%s' ã¨ã„ã†åå‰ã®ãƒ¡ãƒ³ãƒã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -30348,7 +30411,7 @@ msgstr ""
msgid "bad array initializer"
msgstr "é…列ã®ä¸æ­£ãªåˆæœŸåŒ–"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
msgid "%qT is not a class type"
msgstr "クラスタイプ項を欠ã„ã¦ã„ã¾ã™"
@@ -30433,67 +30496,67 @@ msgstr "åˆæœŸåŒ–å­å†…ã«éžå®šæ•°ã®é…列インデックスãŒã‚ã‚Šã¾ã™"
msgid "parenthesized initializer in array new"
msgstr "ISO C++ 㯠new å¼ã®åˆæœŸåŒ–ã§ã® `=' ã‚’ç¦ã˜ã¾ã™"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "é…列 new ã§ã®ã‚µã‚¤ã‚ºã¯å®Œå…¨ãªåž‹ã‚’æŒãŸã­ã°ãªã‚Šã¾ã›ã‚“"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "å‚照型ã«å¯¾ã—㦠new ã‚’é©ç”¨ã§ãã¾ã›ã‚“"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "関数型ã«å¯¾ã—㦠new ã‚’é©ç”¨ã§ãã¾ã›ã‚“"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, fuzzy, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "Java コンストラクタãŒå‘¼ã°ã‚Œã¾ã—ãŸãŒã€`jclass' ã¯æœªå®šç¾©ã§ã™"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr ""
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "åˆæœŸè¨­å®šå­ã®æœ«å°¾ãŒæœ¬æ¥ã‚ˆã‚Šæ—©ã出ç¾ã—ã¾ã—ãŸ"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "多次元é…列ã¯åˆæœŸåŒ–å­ã§åˆæœŸåŒ–ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr ""
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "delete ã§ã®é…列サイズãŒä¸æ˜Žã§ã™"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "ベクトル型㮠delete ã§ã™ãŒã€ãƒã‚¤ãƒ³ã‚¿ã§ã‚‚é…列型ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“"
@@ -30553,42 +30616,42 @@ msgstr ""
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr "警告: "
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -30675,57 +30738,57 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr "キャストã«ã‚ˆã‚‹é–¢æ•°ã®åž‹ãŒé©åˆã—ã¾ã›ã‚“"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "複雑ãªãƒ‘ラメタをもã¤é–¢æ•°ã¯ inline ã«ã§ãã¾ã›ã‚“"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr ""
-#: cp/method.c:1716
+#: cp/method.c:1717
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr ""
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "`%s' ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã¯å‰æ–¹ã§ã«å®£è¨€ã•ã‚ŒãŸã‚‚ã®ã¨è¡çªã—ã¾ã™"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+#D"
msgstr "å‰æ–¹ã§ã® `%s' ã®å®£è¨€"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, fuzzy, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "`%s' ãŒå†å®£è¨€ã•ã‚Œã¾ã—ãŸ"
@@ -30736,265 +30799,265 @@ msgstr "`%s' ãŒå†å®£è¨€ã•ã‚Œã¾ã—ãŸ"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, fuzzy, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr ""
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
msgid "due to different exception specifications"
msgstr "例外仕様ã®æ¤œæŸ»ã‚’ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生æˆã—ãªã„"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, fuzzy, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "åž‹ãŒå‰æ–¹ã®å¤–部宣言ã¨ä¸€è‡´ã—ã¾ã›ã‚“"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, fuzzy, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "å‰æ–¹ã® `%s' ã®å¤–部宣言"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr ""
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, fuzzy, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ã‚’覆ã„éš ã—ã¾ã™"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "%q+D ã®å†å®£è¨€ã¯ä»®å¼•æ•°ã‚’éš ã—ã¾ã™"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "`%s' ã®å®£è¨€ã¯å‰æ–¹ã®ãƒ­ãƒ¼ã‚«ãƒ«ã‚·ãƒ³ãƒœãƒ«ã‚’覆ã„éš ã—ã¾ã™"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "`%s' ã®å®£è¨€ã«ã‚ˆã‚Š `this' ã®ãƒ¡ãƒ³ãƒãŒè¦†ã„éš ã•ã‚Œã¾ã™"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "`%s' ã®å®£è¨€ã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«å®£è¨€ã‚’覆ã„éš ã—ã¾ã™"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, fuzzy, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "`%s' ã®åå‰å¼•ãã¯å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr ""
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "`%s' ã®åå‰å¼•ãã¯æ–°ãŸãª ISO `for' スコープã«å¤‰ã‚ã‚Šã¾ã—ãŸ"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, fuzzy, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s: %s: "
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, fuzzy, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%d 個ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ\n"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "`%s' ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã¯å‰æ–¹ã§ã«å®£è¨€ã•ã‚ŒãŸã‚‚ã®ã¨è¡çªã—ã¾ã™"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, fuzzy, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "å‰æ–¹ã§ã® `%s' ã®æš—黙的ãªå®£è¨€"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, fuzzy, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "`%s' ã®å®£è¨€ãŒçŸ›ç›¾ã—ã¦ã„ã¾ã™"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, fuzzy, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%s=%s ã¯æ•°å€¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr ""
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr ""
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr ""
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr ""
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr ""
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr ""
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr ""
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, fuzzy, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "`%s' ã®å®£è¨€ãŒçŸ›ç›¾ã—ã¦ã„ã¾ã™"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "%s: オプション `%s' ã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™\n"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, fuzzy, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "`%s' 属性ã®ç–‘似命令ãŒç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr ""
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr ""
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -31105,7 +31168,7 @@ msgstr "å‚照型ã«å¯¾ã—㦠new ã‚’é©ç”¨ã§ãã¾ã›ã‚“"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "%s 宣言ã®å¾Œã‚ã®ã‚»ãƒŸã‚³ãƒ­ãƒ³ã‚’欠ã„ã¦ã„ã¾ã™"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr ""
@@ -31125,7 +31188,7 @@ msgstr "無効ãªåž‹: `void &'"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr ""
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -31269,719 +31332,719 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr ""
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr ""
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, gcc-internal-format
msgid "expected declaration"
msgstr ""
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "-Wno-strict-prototypes 㯠C++ ã§ã¯å—ã‘付ã‘られã¾ã›ã‚“"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ ã¯ãƒ–レースã§ã¾ã¨ã‚られãŸå¼ã‚’ç¦ã˜ã¾ã™"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr ""
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, gcc-internal-format
msgid "expected primary-expression"
msgstr ""
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, fuzzy, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "マクロ引数内ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’使ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr ""
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, gcc-internal-format
msgid "expected id-expression"
msgstr ""
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "`%s' ã®å®£è¨€ã«ã‚ˆã‚Š `this' ã®ãƒ¡ãƒ³ãƒãŒè¦†ã„éš ã•ã‚Œã¾ã™"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr ""
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr ""
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr ""
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr ""
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr ""
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr ""
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr ""
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ ã¯è¤‡åˆãƒªãƒ†ãƒ©ãƒ«ã‚’ç¦ã˜ã¾ã™"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr ""
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "無効㪠%qD ã®ä½¿ç”¨ã§ã™"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> is not a valid declarator"
msgid "%<%D::%D%> is not a class member"
msgstr "%<%T::%D%> ã¯æœ‰åŠ¹ãªå®£è¨€å­ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr "éžã‚¹ã‚«ãƒ©ãƒ¼åž‹"
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ ã¯åå‰ã¤ã戻り値を許å¯ã—ã¾ã›ã‚“"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr ""
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "\"%s\" ã¯ãƒžã‚¯ãƒ­ä»®å¼•æ•°ãƒªã‚¹ãƒˆã«ç¾ã‚Œã¦ã¯ãªã‚Šã¾ã›ã‚“"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr ""
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, fuzzy, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "é…列 new ã§ã®ã‚µã‚¤ã‚ºã¯å®Œå…¨ãªåž‹ã‚’æŒãŸã­ã°ãªã‚Šã¾ã›ã‚“"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "å¤ã„スタイルã®ã‚­ãƒ£ã‚¹ãƒˆã‚’使用ã—ã¦ã„ã¾ã™"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "|| ã¨å…±ã«ä½¿ã‚れる && ã®å‘¨ã‚Šã§ã¯æ‹¬å¼§ã‚’ã¤ã‘ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr ""
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr ""
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "読ã¿å–り専用変数 %qD ã®å¢—分ã§ã™"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
msgid "%q+#D declared here"
msgstr "`%s' ã¯å‰ã«ã“ã“ã§å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "仮引数 `%s' ã§æŒ‡å®šã•ã‚ŒãŸè¨˜æ†¶ã‚¯ãƒ©ã‚¹"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, gcc-internal-format
msgid "expected labeled-statement"
msgstr "ラベル付ãæ–‡ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case ラベル %qE ㌠switch æ–‡ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr ""
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "Discover pure and const functions"
msgid "compound-statement in constexpr function"
msgstr "純粋ãŠã‚ˆã³å®šæ•°é–¢æ•°ã‚’見ã¤ã‘ã‚‹"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, gcc-internal-format
msgid "expected selection-statement"
msgstr ""
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr ""
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "å¼ã®ä¸­ã®æ–‡ã«ä¸å®Œå…¨åž‹ãŒã‚ã‚Šã¾ã™"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr ""
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, fuzzy, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "#if å¼ã®ä¸­ã§ã¯æ–‡å­—列定数ãŒä½¿ãˆã¾ã›ã‚“"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ ã¯è¨ˆç®—åž‹ goto ã‚’ç¦ã˜ã¾ã™"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, gcc-internal-format
msgid "expected jump-statement"
msgstr ""
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "%<friend%> ãŒã‚¯ãƒ©ã‚¹ã®å¤–å´ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, fuzzy, gcc-internal-format
#| msgid "%<auto%> will change meaning in C++0x; please remove it"
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr "%<auto%> 㯠C++0x ã§æ„味ãŒå¤‰æ›´ã«ãªã‚Šã¾ã™ã€‚削除ã—ã¦ãã ã•ã„"
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr ""
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, fuzzy, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "`%s' ã¯é–¢æ•°ã§ã‚‚メンãƒé–¢æ•°ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“ -- friend ã¨ã¯å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "無効ãªãƒªãƒ³ã‚¯æŒ‡å®šã§ã™"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr ""
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "void å¼ã®ä¸é©åˆ‡ãªä½¿ç”¨"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, gcc-internal-format
msgid "only constructors take member initializers"
msgstr ""
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "メンム`%s' ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªåˆæœŸå€¤"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "%q+D ã¯é™çš„宣言ã®å¾Œã«éžé™çš„宣言ãŒç¶šã„ã¦ã„ã¾ã™"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, fuzzy, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "å‰æ™‚代的ãªå¤ã„スタイルã®åŸºåº•ã‚¯ãƒ©ã‚¹åˆæœŸåŒ–å­ã§ã™"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, fuzzy, gcc-internal-format
#| msgid "expected a string after %<#pragma message%>"
msgid "expected empty string after %<operator%> keyword"
msgstr "%<#pragma message%> ã®å¾Œã«æ–‡å­—列ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected suffix identifier"
msgstr "識別å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, gcc-internal-format
msgid "expected operator"
msgstr "演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "strftime フォーマットã¯å¼•æ•°ã‚’フォーマットã§ãã¾ã›ã‚“"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, gcc-internal-format
msgid "expected template-id"
msgstr ""
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, gcc-internal-format
msgid "expected %<<%>"
msgstr "%<<%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr ""
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr ""
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, fuzzy, gcc-internal-format
msgid "parse error in template argument list"
msgstr "マクロ引数リストã«ã‚ã‚Šå¾—ãªã„トークン"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, gcc-internal-format
msgid "expected template-name"
msgstr "テンプレートåãŒäºˆæœŸã•ã‚Œã¾ã™"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "éžãƒ†ãƒ³ãƒ—レート %qD ãŒãƒ†ãƒ³ãƒ—レートã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, gcc-internal-format
msgid "expected template-argument"
msgstr "テンプレート引数ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, gcc-internal-format
msgid "invalid non-type template argument"
msgstr ""
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr ""
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr ""
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr ""
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, gcc-internal-format
msgid "expected type specifier"
msgstr "型指定ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, gcc-internal-format
msgid "expected template-id for type"
msgstr ""
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, gcc-internal-format
msgid "expected type-name"
msgstr "åž‹åãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "宣言 %qD ãŒä½•ã‚‚宣言ã—ã¦ã„ã¾ã›ã‚“"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "インスタンス化ã•ã‚Œãªã„åž‹ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªæ“作ã§ã™"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "自動テンプレート実体化を有効ã«ã™ã‚‹"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr ""
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr ""
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "%<;%> ã¾ãŸã¯ %<{%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr ""
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "%q#T ãŒè¤‡æ•°å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD ã¯åå‰ç©ºé–“åã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, gcc-internal-format
msgid "expected namespace-name"
msgstr "åå‰ç©ºé–“åãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "ã“ã“ã§ã¯ %<namespace%> 定義ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr ""
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "一ã¤ã®ç©ºã®å®£è¨€ä¸­ã«ã€äºŒã¤ã®åž‹ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "ã“ã“ã§ã¯é–¢æ•°å®šç¾©ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, fuzzy, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "åˆæœŸåŒ–å­ãƒªã‚¹ãƒˆã¯éžãƒ¡ãƒ³ãƒé–¢æ•°ã§ã¯ä½¿ãˆã¾ã›ã‚“"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, fuzzy, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "大域 register 変数ãŒé–¢æ•°å®šç¾©ã®å¾Œã‚ã«ã‚ã‚Šã¾ã™"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, gcc-internal-format
msgid "expected initializer"
msgstr ""
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, gcc-internal-format
msgid "invalid type in declaration"
msgstr ""
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
msgid "initializer provided for function"
msgstr "friend 関数 `%s' ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, fuzzy, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "é…列ã®æ·»å­—ãŒæ•´æ•°åž‹ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr ""
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr ""
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "トップレベルã§ã® `this' ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -31990,248 +32053,248 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "無効ãªå®£è¨€å­ã§ã™"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, gcc-internal-format
msgid "expected declarator"
msgstr "宣言å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD ã¯åå‰ç©ºé–“ã§ã™"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr " ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ãƒ¡ãƒ³ãƒã¸ã®å¤‰æ›ã§"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, gcc-internal-format
msgid "expected ptr-operator"
msgstr "ãƒã‚¤ãƒ³ã‚¿æ¼”ç®—å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr ""
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "expected type-specifier"
msgid "duplicate virt-specifier"
msgstr "型指定å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "無効㪠%<auto%> ã®ä½¿ç”¨ã§ã™"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "\"%s\" ã¯ãƒžã‚¯ãƒ­ä»®å¼•æ•°ãƒªã‚¹ãƒˆã«ç¾ã‚Œã¦ã¯ãªã‚Šã¾ã›ã‚“"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, gcc-internal-format
msgid "expected type-specifier"
msgstr "型指定å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "%<,%> ã¾ãŸã¯ %<...%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "\"%s\" ã¯ãƒžã‚¯ãƒ­ä»®å¼•æ•°ãƒªã‚¹ãƒˆã«ç¾ã‚Œã¦ã¯ãªã‚Šã¾ã›ã‚“"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr ""
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, fuzzy, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "メソッドã¯é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã«å¤‰æ›ã§ãã¾ã›ã‚“"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "strftime フォーマットã¯å¼•æ•°ã‚’フォーマットã§ãã¾ã›ã‚“"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "strftime フォーマットã¯å¼•æ•°ã‚’フォーマットã§ãã¾ã›ã‚“"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ ã¯åå‰ã¤ã戻り値を許å¯ã—ã¾ã›ã‚“"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ ã¯åå‰ã¤ã戻り値を許å¯ã—ã¾ã›ã‚“"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, gcc-internal-format
msgid "expected class-name"
msgstr ""
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "クラス定義ã®å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "構造体定義ã®å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "共用体定義ã®å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "%<{%> ã¾ãŸã¯ %<:%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr "クラス %s 用ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’見ã¤ã‘られã¾ã›ã‚“。"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr ""
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "%qD ã®å®£è¨€å†…ã«ç„¡åŠ¹ãªã‚¯ãƒ©ã‚¹åã§ã™"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr ""
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr ""
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "関数テンプレート %qD ãŒã‚¯ãƒ©ã‚¹ãƒ†ãƒ³ãƒ—レートã¨ã—ã¦å†å®šç¾©ã•ã‚Œã¾ã—ãŸ"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "%q+#T ã®å‰ã®å®šç¾©"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, gcc-internal-format
msgid "expected class-key"
msgstr ""
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr ""
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "メンãƒå®£è¨€ã®æœ€å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr ""
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr ""
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "例外仕様ã®æ¤œæŸ»ã‚’ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生æˆã—ãªã„"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "一ã¤ã®ç©ºã®å®£è¨€ä¸­ã«ã€äºŒã¤ã®åž‹ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr ""
@@ -32240,320 +32303,320 @@ msgstr ""
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr ""
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, fuzzy, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "--driver ã¯æœ€æ—©ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr ""
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, gcc-internal-format
msgid "invalid explicit specialization"
msgstr ""
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "`%s' ã® extern 宣言ãŒãƒã‚¹ãƒˆã—ã¦ã„ã¾ã™"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr ""
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "`>>' ã¯ãƒ†ãƒ³ãƒ—レートクラスå㯠`> >' ã¨ã™ã¹ãã§ã™"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "テンプレート型統一中 `%s' ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> ㌠%qD ã®å‰ã«ã‚ã‚Šã¾ã™"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, gcc-internal-format
msgid "expected %<new%>"
msgstr "%<new%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr "%<delete%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, gcc-internal-format
msgid "expected %<return%>"
msgstr "%<return%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, gcc-internal-format
msgid "expected %<extern%>"
msgstr "%<extern%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr "%<static_assert%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "%<decltype%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, gcc-internal-format
msgid "expected %<operator%>"
msgstr "%<operator%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr "%<class%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, gcc-internal-format
msgid "expected %<template%>"
msgstr "%<template%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "%<namespace%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr "%<using%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, gcc-internal-format
msgid "expected %<asm%>"
msgstr "%<asm%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, gcc-internal-format
msgid "expected %<try%>"
msgstr "%<try%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr "%<catch%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr "%<throw%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "%<__label__%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, gcc-internal-format
msgid "expected %<@try%>"
msgstr "%<@try%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr "%<@synchronized%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr "%<@throw%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, fuzzy, gcc-internal-format
#| msgid "expected %<static_assert%>"
msgid "expected %<__transaction_atomic%>"
msgstr "%<static_assert%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, fuzzy, gcc-internal-format
#| msgid "expected %<static_assert%>"
msgid "expected %<__transaction_relaxed%>"
msgstr "%<static_assert%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr "%<::%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr "%<...%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, gcc-internal-format
msgid "expected %<*%>"
msgstr "%<*%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, gcc-internal-format
msgid "expected %<~%>"
msgstr "%<~%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "%<:%> ã¾ãŸã¯ %<::%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "%<class%>ã€%<typename%>ã€ã¾ãŸã¯ %<template%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr ""
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "previously declared here"
msgid "%q#T was previously declared here"
msgstr "å‰ã¯ã“ã“ã§å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, fuzzy, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "`%s' ãŒåˆ¥ã®ã‚·ãƒ³ãƒœãƒ«ç¨®ã¨ã—ã¦å†å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "デフォルト引数内ã§ãƒ•ã‚¡ã‚¤ãƒ«ãŒçµ‚了ã—ã¦ã„ã¾ã™"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr ""
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr ""
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, gcc-internal-format
msgid "invalid type for instance variable"
msgstr ""
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, fuzzy, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "識別å­ãŒå¿…è¦ã§ã™"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr ""
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, gcc-internal-format
msgid "invalid type for property"
msgstr ""
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "レジスタ変数 `%s' ãŒå…¥ã‚Œå­é–¢æ•°ã®ä¸­ã§ä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr "ä¸å分ãªåž‹æƒ…å ±"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "#pragma GCC java_exceptions ã®æœ«å°¾ã«ã‚´ãƒŸ"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, fuzzy, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "ret 命令ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -32650,69 +32713,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD ã¯é–¢æ•°ãƒ†ãƒ³ãƒ—レートã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, fuzzy, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "`operator delete' ã®å®£è¨€å†…ã«å¤šã™ãŽã‚‹å¼•æ•°"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, fuzzy, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "#define 中ã®ä»®å¼•æ•°ãƒªã‚¹ãƒˆãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "%qD ã®å®£è¨€å†…ã§ãƒ†ãƒ³ãƒ—レート仮引数リストãŒå¤šã™ãŽã¾ã™"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "%qD ã®å®£è¨€å†…ã§ãƒ†ãƒ³ãƒ—レート仮引数リストãŒå°‘ãªã™ãŽã¾ã™"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr ""
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD ã¯ãƒ†ãƒ³ãƒ—レート関数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD 㯠%qD 内ã§ã¯å®£è¨€ã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -32725,134 +32788,134 @@ msgstr "%qD 㯠%qD 内ã§ã¯å®£è¨€ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "メンãƒé–¢æ•° %qD 㯠%qT 内ã§ã¯å®£è¨€ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr " <ç„¡å>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "%q+#D ã®å®£è¨€ã§ã™"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr ""
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] ""
msgstr[1] ""
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr ""
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "%qD 用ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå¼•æ•°ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr ""
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr ""
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr ""
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "クロスコンパイル時ã®å®Ÿæ•°å€¤ãƒ†ãƒ³ãƒ—レート仮引数"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "åå‰ç„¡ã—テンプレートクラスã§ã™"
@@ -32860,7 +32923,7 @@ msgstr "åå‰ç„¡ã—テンプレートクラスã§ã™"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "デストラクタ %qD ãŒãƒ¡ãƒ³ãƒãƒ†ãƒ³ãƒ—レートã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
@@ -32870,76 +32933,76 @@ msgstr "デストラクタ %qD ãŒãƒ¡ãƒ³ãƒãƒ†ãƒ³ãƒ—レートã¨ã—ã¦å®£è¨€ã•ã
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "%qD ã®ç„¡åŠ¹ãªãƒ†ãƒ³ãƒ—レート宣言ã§ã™"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "éžãƒ†ãƒ³ãƒ—レート %q#D ã®ãƒ†ãƒ³ãƒ—レート定義ã§ã™"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr ""
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr ""
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr ""
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr ""
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr ""
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT ã¯ãƒ†ãƒ³ãƒ—レート型ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr ""
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] ""
msgstr[1] ""
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ã‚’覆ã„éš ã—ã¾ã™"
msgstr[1] "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ã‚’覆ã„éš ã—ã¾ã™"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "テンプレート仮引数 %q+#D ã§ã™"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "ã“ã“㧠%q#D ã¨ã—ã¦å†å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
@@ -32948,336 +33011,336 @@ msgstr "ã“ã“㧠%q#D ã¨ã—ã¦å†å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "%q#D 用ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå¼•æ•°ã®å†å®šç¾©ã§ã™"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, gcc-internal-format
msgid "original definition appeared here"
msgstr "å…ƒã®å®šç¾©ã¯ã“ã“ã«å‡ºç¾ã—ã¦ã„ã¾ã™"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "`%s' ã®å¼•æ•°ã¨ã—ã¦ç„¡åŠ¹ãªåž‹"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr ""
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr ""
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr ""
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "template parameter %q+#D"
msgid " couldn't deduce template parameter %qD"
msgstr "テンプレート仮引数 %q+#D ã§ã™"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types %qT and %qT"
msgid " mismatched types %qT and %qT"
msgstr "åž‹ %qT 㨠%qT ã®é–“ã§ã®æ¯”較ã§ã™"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, fuzzy, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr "strftime フォーマットã¯å¼•æ•°ã‚’フォーマットã§ãã¾ã›ã‚“"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute argument not an integer constant"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "%qE 属性ã®å¼•æ•°ãŒæ•´æ•°å®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
#| msgid "%qs is not valid for %qs"
msgid " %qE is not equivalent to %qE"
msgstr "%qs 㯠%qs 用ã«ã¯æœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "åž‹ %qT ã‹ã‚‰åž‹ %qT ã¸å¤‰æ›ã§ãã¾ã›ã‚“"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr "%s ã« `%s' ã¨ã„ã†åå‰ã®ãƒ¡ãƒ³ãƒã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr "%s ã« `%s' ã¨ã„ã†åå‰ã®ãƒ¡ãƒ³ãƒã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "ä¸å®Œå…¨åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã¸ã®é–“接å‚ç…§"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "argument of type %qT does not match %qT"
msgid " template argument %qE does not match %qD"
msgstr "åž‹ %qT ã®å¼•æ•°ãŒ %qT ã¨ä¸€è‡´ã—ã¾ã›ã‚“"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "<unresolved overloaded function type>"
msgid " could not resolve address from overloaded function %qE"
msgstr "<未解決オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸé–¢æ•°åž‹>"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr ""
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "`%s' ã®å¼•æ•°ã¨ã—ã¦ç„¡åŠ¹ãªåž‹"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr ""
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr ""
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr ""
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr ""
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr ""
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr ""
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr ""
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr ""
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr ""
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr ""
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, fuzzy, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "#if å¼ã®ä¸­ã§ã¯æ–‡å­—列定数ãŒä½¿ãˆã¾ã›ã‚“"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "ä¸å®Œå…¨ãª typedef `%s' ã®ä½¿ç”¨ã¯ä¸é©åˆ‡ã§ã™"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr "`restrict' ã®ç”¨æ³•ãŒä¸é©åˆ‡ã§ã™"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr ""
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr ""
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, fuzzy, gcc-internal-format
msgid " expected a type, got %qE"
msgstr "予期ã—ãªã„型㌠`id' (%s) ã«æŒ‡å®šã•ã‚Œã¾ã—ãŸ"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, fuzzy, gcc-internal-format
msgid " expected a type, got %qT"
msgstr "予期ã—ãªã„型㌠`id' (%s) ã«æŒ‡å®šã•ã‚Œã¾ã—ãŸ"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr ""
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr ""
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "åž‹ãŒå‰æ–¹ã®å¤–部宣言ã¨ä¸€è‡´ã—ã¾ã›ã‚“"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr ""
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr ""
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr ""
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "マクロ引数 \"%s\" ã¯æ–‡å­—列化ã•ã‚Œã¾ã™"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%q#D is not a function template"
msgstr "%qD ã¯é–¢æ•°ãƒ†ãƒ³ãƒ—レートã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr ""
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, fuzzy, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "空ã®å®£è¨€ã§ã™"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr ""
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr ""
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, fuzzy, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "%s: `%s' ã®åˆæœŸåŒ–:\n"
@@ -33295,258 +33358,258 @@ msgstr "%s: `%s' ã®åˆæœŸåŒ–:\n"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
msgid "variable %qD has function type"
msgstr "sizeof ãŒé–¢æ•°åž‹ã«é©ç”¨ã•ã‚Œã¾ã—ãŸ"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, fuzzy, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "仮引数 `%s' ã¯ç„¡åŠ¹ã§ã™"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, fuzzy, gcc-internal-format
msgid "in declaration %q+D"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, fuzzy, gcc-internal-format
msgid "function returning an array"
msgstr "関数ãŒé›†åˆä½“ã‚’è¿”ã—ã¦ã„ã¾ã™"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, fuzzy, gcc-internal-format
msgid "function returning a function"
msgstr "`%s' ã¯é–¢æ•°ã‚’è¿”ã™é–¢æ•°ã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, fuzzy, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "メンãƒé–¢æ•°ã¸ã®ãƒã‚¤ãƒ³ã‚¿ãŒå‘¼ã°ã‚Œã¾ã—ãŸãŒã€ã‚¯ãƒ©ã‚¹ã‚¹ã‚³ãƒ¼ãƒ—内ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, fuzzy, gcc-internal-format
msgid "forming reference to void"
msgstr "一時オブジェクトã¸ã®å‚照を返ãã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "ä¸å®Œå…¨åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã¸ã®é–“接å‚ç…§"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "å‚照をå‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, fuzzy, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr " ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ãƒ¡ãƒ³ãƒã¸ã®å¤‰æ›ã§"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, fuzzy, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr " ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ãƒ¡ãƒ³ãƒã¸ã®å¤‰æ›ã§"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, fuzzy, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr " ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ãƒ¡ãƒ³ãƒã¸ã®å¤‰æ›ã§"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, fuzzy, gcc-internal-format
msgid "creating array of %qT"
msgstr "大ãã•ã‚¼ãƒ­ã®é…列を作ã‚ã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, fuzzy, gcc-internal-format
msgid "use of %qs in template"
msgstr "テンプレート内㧠`%s' を使用ã—ã¦ã„ã¾ã™"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, fuzzy, gcc-internal-format
msgid "using invalid field %qD"
msgstr "static フィールド `%s' を欠ã„ã¦ã„ã¾ã™"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "void å¼ã®ä¸é©åˆ‡ãªä½¿ç”¨"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr ""
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "%qE undeclared here (not in a function)"
msgid "%q+D declared here, later in the translation unit"
msgstr "%qE ãŒã“ã“ã§ã¯å®£è¨€ã•ã‚Œã¦ã„ã¾ã›ã‚“ (関数内ã§ã¯ãªã„)"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr ""
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr ""
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr ""
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr ""
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, fuzzy, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "åˆæœŸåŒ–å­ã®è¦ç´ ãŒå®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, fuzzy, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr "ä¸æ­£ãªæ–‡å­—列定数ã§ã™"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, fuzzy, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "自動テンプレート実体化を有効ã«ã™ã‚‹"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, fuzzy, gcc-internal-format
msgid "%s %+#T"
msgstr "%s: %s"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆã™ã‚‹"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr ""
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr ""
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "%s: `%s' ã®åˆæœŸåŒ–:\n"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆã™ã‚‹"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ ã¯æ¸›ç®—ã«ãƒ¡ã‚½ãƒƒãƒ‰ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, fuzzy, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "自動テンプレート実体化を有効ã«ã™ã‚‹"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆã™ã‚‹"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆã™ã‚‹"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆã™ã‚‹"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ ã¯æ¸›ç®—ã«é–¢æ•°ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆã™ã‚‹"
@@ -33558,32 +33621,32 @@ msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆ
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "インラインテンプレートã®æ˜Žç¤ºçš„ãªå®Ÿä½“化ã®ã¿ã‚’生æˆã™ã‚‹"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr ""
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "ä¸å®Œå…¨ãª typedef `%s' ã®ä½¿ç”¨ã¯ä¸é©åˆ‡ã§ã™"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "'#' ã«ãƒžã‚¯ãƒ­ä»®å¼•æ•°åãŒç¶šã„ã¦ã„ã¾ã›ã‚“"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -33591,12 +33654,12 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -33789,7 +33852,7 @@ msgstr "トップレベルã§ã® `this' ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
@@ -33829,449 +33892,449 @@ msgstr "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ãƒªã‚¹ãƒˆã®ã‚·ãƒ³ãƒœãƒ«ã‚’覆ã„éš ã—ã¾ã™"
msgid "invalid definition of qualified type %qT"
msgstr "インスタンス化ã•ã‚Œãªã„åž‹ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªæ“作ã§ã™"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, fuzzy, gcc-internal-format
msgid "invalid base-class specification"
msgstr "無効ãªå®£è¨€ã§ã™"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, gcc-internal-format
msgid "%qD is not captured"
msgstr ""
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr ""
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, fuzzy, gcc-internal-format
msgid " %q+#D declared here"
msgstr "`%s' ã¯å‰ã«ã“ã“ã§å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr ""
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr ""
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, fuzzy, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "è¦æ±‚ã•ã‚ŒãŸãƒ¡ãƒ³ãƒ `%s' ã¯å¤šé‡ç¶™æ‰¿ã‚°ãƒ©ãƒ•ã®ä¸­ã§æ›–昧ã§ã™"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, fuzzy, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "定数å¼ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, fuzzy, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "レジスタ '%c' ãŒä¸æ˜Žã§ã™"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a template type"
msgid "%qT is not an enumeration type"
msgstr "%qT ã¯ãƒ†ãƒ³ãƒ—レート型ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "仮引数宣言ã®ä¸­ã®è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šã¯ç„¡åŠ¹ã§ã™"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "ISO C++ ã¯ãƒ¡ãƒ³ãƒé–¢æ•°ã¸ã® `sizeof' ã®é©ç”¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "インスタンス変数 `%s' 㯠%s ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "インスタンス変数 `%s' 㯠private ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "インスタンス変数 `%s' 㯠private ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "無効ãªå‚照型ã§ã™"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "static assertion failed: %E"
msgid "static assertion failed: %s"
msgstr "é™çš„アサーションã«å¤±æ•—ã—ã¾ã—ãŸ: %E"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr ""
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr ""
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "<unresolved overloaded function type>"
msgid "decltype cannot resolve address of overloaded function"
msgstr "<未解決オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸé–¢æ•°åž‹>"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "関数 `%s' ã«å¯¾ã—ã¦ä¸é©åˆ‡ãªä¿å­˜ã‚¯ãƒ©ã‚¹"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "関数 `%s' ã«å¯¾ã—ã¦ä¸é©åˆ‡ãªä¿å­˜ã‚¯ãƒ©ã‚¹"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr "クラスタイプ項を欠ã„ã¦ã„ã¾ã™"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr ""
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%qD ã¯é–¢æ•°ãƒ†ãƒ³ãƒ—レートã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr ""
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "éžé–¢æ•° %qD ã®å‘¼ã³å‡ºã—ã§ã™"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "定数å¼ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, gcc-internal-format
msgid "%qD used before its definition"
msgstr ""
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr ""
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr ""
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr ""
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, gcc-internal-format
msgid "array subscript out of bound"
msgstr ""
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr ""
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
#| msgid "%qD was not initialized with a constant expression"
msgid "mutable %qD is not usable in a constant expression"
msgstr "%qD ã¯å®šæ•°å¼ã§åˆæœŸåŒ–ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr ""
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "%qE ã¯åˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, gcc-internal-format
msgid "%q#D is not const"
msgstr "%q#D 㯠const ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr "%q#D 㯠volatile ã§ã™"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "%qD ã¯å®šæ•°å¼ã§åˆæœŸåŒ–ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr ""
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr ""
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, fuzzy, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr "%qE ã®åˆ—挙値ãŒæ•´æ•°å®šæ•°å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "定数å¼ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr ""
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr ""
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, fuzzy, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr "%qE ã®åˆ—挙値ãŒæ•´æ•°å®šæ•°å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr ""
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr ""
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "åˆæœŸåŒ–å­ã®è¦ç´ ãŒå®šæ•°å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
msgid "non-constant array initialization"
msgstr "åˆæœŸåŒ–å­å†…ã«éžå®šæ•°ã®é…列インデックスãŒã‚ã‚Šã¾ã™"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "ファイル \"%s\" ã«æˆ»ã‚‹ã¯ãšã§ã—ãŸ"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "%s ã‚’å‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in unary expression"
msgid "already captured %qD in lambda expression"
msgstr "å˜é …演算å¼å†…ã§ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr ""
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "`java_interface' 属性㯠Java クラス定義ã«å¯¾ã—ã¦ã®ã¿ç”¨ã„る事ãŒã§ãã¾ã™"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "`com_interface' 属性ã¯ã‚¯ãƒ©ã‚¹å®šç¾©ã«ã®ã¿ç”¨ã„る事ãŒã§ãã¾ã™"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "è¦æ±‚ã•ã‚ŒãŸ init_priority ã¯æ•´æ•°åž‹ã®å®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, fuzzy, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "init_priority 属性ã¯ã‚¯ãƒ©ã‚¹åž‹ã‚ªãƒ–ジェクトã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚¹ã‚³ãƒ¼ãƒ—定義ã§ã®ã¿ä½¿ãˆã¾ã™"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "è¦æ±‚ã•ã‚ŒãŸ init_priority ãŒç¯„囲外ã§ã™"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "è¦æ±‚ã•ã‚ŒãŸ init_priority ã¯å†…部ã§ä½¿ç”¨ã™ã‚‹ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, fuzzy, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "init_priority 属性ã¯ã“ã®ãƒ—ラットフォームã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "Tree 検査: %s ãŒã‚ã‚‹ã¹ã所㫠%s ãŒã‚ã‚Šã¾ã™(%s 内, %s:%d)"
@@ -34361,446 +34424,452 @@ msgstr "ISO C++ ã¯é–¢æ•°åž‹ã®å¼ã¸ã® `sizeof' ã®é©ç”¨ã‚’ç¦ã˜ã¾ã™"
msgid "invalid use of non-static member function"
msgstr "éžãƒ¡ãƒ³ãƒé–¢æ•°ã§ã® `this' ã®ä½¿ç”¨ã¯ç„¡åŠ¹ã§ã™"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "一時オブジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚ã†ã¨ã—ã¦ã„ã¾ã™"
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "文字列定数中㮠\\r エスケープ"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr ""
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, fuzzy, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "メンãƒã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã®ç„¡åŠ¹ãª `%s' ã®ä½¿ç”¨"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr ""
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr ""
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, fuzzy, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%s ã« `%s' ã¨ã„ã†åå‰ã®ãƒ¡ãƒ³ãƒã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, fuzzy, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "メンãƒé–¢æ•°ã®åå‰ã‚’欠ã„ã¦ã„ã¾ã™"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr ""
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "メンãƒã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã®ç„¡åŠ¹ãª `%s' ã®ä½¿ç”¨"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "メンãƒã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã®ç„¡åŠ¹ãª `%s' ã®ä½¿ç”¨"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "メンãƒã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã®ç„¡åŠ¹ãª `%s' ã®ä½¿ç”¨"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "é…列å‚ç…§ã§ã®æ·»å­—を欠ã„ã¦ã„ã¾ã™"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ ã¯å·¦è¾ºå€¤ã§ã¯ãªã„é…列ã®æ·»å­—ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, fuzzy, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "`register' ã¨å®£è¨€ã•ã‚ŒãŸé…列ã«æ·»å­—ã‚’ã¤ã‘よã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "添字をã¤ã‘られãŸå€¤ãŒé…列ã§ã‚‚ãƒã‚¤ãƒ³ã‚¿ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, fuzzy, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "メンãƒã¸ã®ãƒã‚¤ãƒ³ã‚¿æ§‹ç¯‰ã®ä½¿ç”¨ã§ã‚ªãƒ–ジェクトを欠ã„ã¦ã„ã¾ã™"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ ã¯ãƒ—ログラムã®ä¸­ã‹ã‚‰ `::main' を呼ã³å‡ºã™ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, fuzzy, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "\"%s\" ã¯ãƒžã‚¯ãƒ­åã¨ã—ã¦ã¯ä½¿ãˆã¾ã›ã‚“"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr ""
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr ""
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr ""
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr ""
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr ""
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr ""
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr ""
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr ""
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "関数ã«å¯¾ã™ã‚‹å¼•æ•°ãŒå¤šã™ãŽã¾ã™"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "関数ã¸ã®å¼•æ•°ãŒå°‘ãªã™ãŽã¾ã™"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, fuzzy, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "仮引数ãŒä¸å®Œå…¨åž‹ã§ã™"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, fuzzy, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "仮引数ãŒä¸å®Œå…¨åž‹ã§ã™"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr ""
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, fuzzy, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "関数ãƒã‚¤ãƒ³ã‚¿ãŒè¨ˆç®—ã§ä½¿ã‚ã‚Œã¾ã—ãŸ"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
msgid "left rotate count is negative"
msgstr "%s ローテート回数ãŒè² ã®å€¤ã§ã™"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
msgid "right rotate count is negative"
msgstr "%s ローテート回数ãŒè² ã®å€¤ã§ã™"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "%s ローテート回数 >= åž‹ã®å¹…ã§ã™"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "%s ローテート回数 >= åž‹ã®å¹…ã§ã™"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr ""
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr ""
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ ã¯ãƒã‚¤ãƒ³ã‚¿ã¨æ•´æ•°ã¨ã®æ¯”較をç¦ã˜ã¾ã™"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "éžæµ®å‹•å°æ•°ç‚¹å¼•æ•°ã§ã®é †åºä»˜ã‘られãªã„比較ã§ã™"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, fuzzy, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "äºŒé …æ¼”ç®—å­ %s ãŒä¸é©åˆ‡ã§ã™"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ ã¯æ¸›ç®—ã« `void *' åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ ã¯æ¸›ç®—ã«é–¢æ•°ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ ã¯æ¸›ç®—ã«ãƒ¡ã‚½ãƒƒãƒ‰ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "ãƒã‚¤ãƒ³ã‚¿æ¼”ç®—ã§ä¸å®Œå…¨åž‹ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã¯ç„¡åŠ¹ã§ã™"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr "一時オブジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚ã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "一時オブジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚ã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, fuzzy, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "メンãƒã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã®ç„¡åŠ¹ãª `%s' ã®ä½¿ç”¨"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ ã¯éžå·¦è¾ºå€¤å¼ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚‹ã“ã¨ã‚’ç¦ã˜ã¾ã™"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "一時オブジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚ã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr ""
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ 㯠`::main' 関数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚‹ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ ã¯éžå·¦è¾ºå€¤å¼ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚‹ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, fuzzy, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "ãƒã‚¤ãƒ³ã‚¿ã‚’å‚ç…§ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ 㯠enum ã® %s ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ 㯠enum ã® %s ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "ä¸å®Œå…¨åž‹ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã™ã‚‹æ¼”ç®—"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "ä¸å®Œå…¨åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã¸ã®é–“接å‚ç…§"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ ã¯æ¸›ç®—ã« `void *' åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ ã¯æ¸›ç®—ã« `void *' åž‹ã®ãƒã‚¤ãƒ³ã‚¿ã‚’使ã†ã“ã¨ã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "オペランドã¨ã—ã¦ç„¡åŠ¹ãªå¼"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, fuzzy, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "`this' ã¯å³è¾ºå€¤å¼ã§ã‚ã‚Šã€ãã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, fuzzy, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "register 変数 `%s' ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒè¦æ±‚ã•ã‚Œã¾ã—ãŸ"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, fuzzy, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "ç„¡å基底クラスã®åˆæœŸè¨­å®šå­ãŒæ›–昧ã§ã™"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr ""
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr ""
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr ""
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "åˆæœŸåŒ–å­ãƒªã‚¹ãƒˆã¯è¤‡åˆå¼ã¨ã—ã¦å–り扱ã‚ã‚Œã¾ã—ãŸ"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, fuzzy, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "NaN ã‹ã‚‰æ•´æ•°ã¸ã®å¤‰æ›ã§ã™"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, fuzzy, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "%s: 全体的ãªç²¾åº¦ã®ä½Žä¸‹"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, fuzzy, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "キャストã«ã‚ˆã£ã¦ãƒã‚¤ãƒ³ã‚¿ãŒç¤ºã™åž‹ã®è¦æ±‚アラインメントãŒå¢—加ã—ã¾ã™"
@@ -34809,221 +34878,221 @@ msgstr "キャストã«ã‚ˆã£ã¦ãƒã‚¤ãƒ³ã‚¿ãŒç¤ºã™åž‹ã®è¦æ±‚アラインメ
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ ã¯é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã¨ã‚ªãƒ–ジェクトãƒã‚¤ãƒ³ã‚¿ã®é–“ã§ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, fuzzy, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "ä¸å®Œå…¨ãª typedef `%s' ã®ä½¿ç”¨ã¯ä¸é©åˆ‡ã§ã™"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr ""
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C ã¯å…±ç”¨ä½“åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’ç¦ã˜ã¾ã™"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, fuzzy, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "関数 `%s' ã«å¯¾ã—ã¦ä¸é©åˆ‡ãªä¿å­˜ã‚¯ãƒ©ã‚¹"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr ""
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, fuzzy, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "%d 番目ã®å¼•æ•°ãŒ `%s' ã®åž‹ã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
msgid "array used as initializer"
msgstr "é…列ã®ä¸æ­£ãªåˆæœŸåŒ–"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
msgid "invalid array assignment"
msgstr "代入ã¨ã—ã¦ç„¡åŠ¹ãªå·¦è¾ºå€¤ã§ã™"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ãƒ¡ãƒ³ãƒé–¢æ•°ã¸ã®å¤‰æ›ã§"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, fuzzy, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr " ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ãƒ¡ãƒ³ãƒã¸ã®å¤‰æ›ã§"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰ãƒ¡ãƒ³ãƒã¸ã®å¤‰æ›ã§"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, fuzzy, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "無効ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·å½¢å¼"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr ""
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr ""
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr ""
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr ""
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr ""
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr ""
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr ""
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "format 属性をã®å€™è£œã¨ãªã‚Šãã†ãªé–¢æ•°ã«ã¤ã„ã¦è­¦å‘Šã™ã‚‹"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "引数 %d 個㮠`%s' を渡ã—ã¾ã™"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "一時オブジェクトã¸ã®å‚照を返ãã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "éžå·¦è¾ºå€¤ã¸ã®å‚ç…§ãŒè¿”ã•ã‚Œã¾ã—ãŸ"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, fuzzy, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "éžå·¦è¾ºå€¤ã¸ã®å‚ç…§ãŒè¿”ã•ã‚Œã¾ã—ãŸ"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, fuzzy, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "è¦æ±‚ã•ã‚ŒãŸå¤§åŸŸãƒ¬ã‚¸ã‚¹ã‚¿å¤‰æ•° `%s' ã®ã‚¢ãƒ‰ãƒ¬ã‚¹"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "デストラクタã‹ã‚‰å€¤ã‚’è¿”ãã†ã¨ã—ã¦ã„ã¾ã™"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "コンストラクタã®é–¢æ•° try ブロックã®ãƒãƒ³ãƒ‰ãƒ©ã‹ã‚‰ã¯ return ã§ãã¾ã›ã‚“"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "コンストラクタã‹ã‚‰å€¤ã‚’è¿”ãã†ã¨ã—ã¦ã„ã¾ã™"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, fuzzy, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "戻り型ãŒé–¢æ•°ã§ã€`return' ã«å€¤ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, fuzzy, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "戻り型㌠void ã®é–¢æ•°ã§ã€`return' ã«å€¤ãŒã‚ã‚Šã¾ã™"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -35561,7 +35630,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -37706,27 +37775,27 @@ msgstr ""
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -37936,42 +38005,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr ""
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -37986,14 +38055,14 @@ msgstr ""
msgid "can't open input file: %s"
msgstr "入力ファイル %s ã‚’ close ã§ãã¾ã›ã‚“"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "一時オブジェクトã¸ã®å‚照を返ãã†ã¨ã—ã¦ã„ã¾ã™"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "FPU レジスタ内ã®æ©Ÿèƒ½ã®å€¤ã‚’è¿”ã™"
@@ -38103,12 +38172,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -39921,128 +39990,128 @@ msgstr "%s ã¸ã®æ›¸ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ã§ã™"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "%s: 読ã¿è¾¼ã¿ç”¨ã«ãƒ•ã‚¡ã‚¤ãƒ« `%s' ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s\n"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: ファイル `%s' ã«æ›¸ãè¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼: %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "%s: ファイル `%s' を削除ã§ãã¾ã›ã‚“: %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: 警告: ファイル `%s' ã‚’ `%s' åå‰å¤‰æ›´ã§ãã¾ã›ã‚“: %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: 副 info ファイル `%s' を削除ã§ãã¾ã›ã‚“: %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr "シンボルã®é ­ã«ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã‚’ã¤ã‘ã‚‹"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "%s: 読ã¿è¾¼ã¿ç”¨ã«ãƒ•ã‚¡ã‚¤ãƒ« `%s' ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s\n"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -40127,7 +40196,7 @@ msgstr ""
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -41446,7 +41515,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "ラベル %s ãŒã‚らゆる関数ã®å¤–å´ã§å‚ç…§ã•ã‚Œã¾ã—ãŸ"
@@ -41596,7 +41665,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -41977,182 +42046,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -42161,175 +42230,175 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "å¼ã®ä¸­ã®æ–‡ã«ä¸å®Œå…¨åž‹ãŒã‚ã‚Šã¾ã™"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr ""
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr ""
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr ""
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -42337,950 +42406,950 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "é…列 `%s' ã®å¤§ãã•ãŒå¤§ãã™ãŽã¾ã™"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "`%s' ã« `extern' ã¨åˆæœŸåŒ–å­ã®ä¸¡æ–¹ãŒã‚ã‚Šã¾ã™"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "関数を inline ã«ã§ãã¾ã›ã‚“"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "å¯å¤‰é•·ã‚ªãƒ–ジェクトã¯åˆæœŸåŒ–ã•ã‚Œãªã„ã“ã¨ã«ãªã‚‹ã§ã—ょã†"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "組ã¿è¾¼ã¿é–¢æ•° `%s' ã¯éžé–¢æ•°ã¨ã—ã¦å®£è¨€ã•ã‚Œã¾ã—ãŸ"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr ""
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr "Trampoline ã¯ã€ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr ""
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr ""
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr ""
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "%s ã«äº’æ›æ€§ã®ãªã„åž‹"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr ""
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr ""
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr ""
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr "データ領域 '%s' ã¯å‰ã®å®£è¨€ã¨çŸ›ç›¾ã—ã¾ã™"
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr ""
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "ラベル `%s' ãŒå®šç¾©ã•ã‚Œã¾ã—ãŸãŒä½¿ã‚ã‚Œã¦ã„ã¾ã›ã‚“"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "ラベル `%s' ãŒå®šç¾©ã•ã‚Œã¾ã—ãŸãŒä½¿ã‚ã‚Œã¦ã„ã¾ã›ã‚“"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -43890,17 +43959,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -44142,7 +44211,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr ""
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -44445,7 +44514,7 @@ msgstr ""
msgid "internal error - invalid Utf8 name"
msgstr "内部エラー - 無効㪠Utf8 åã§ã™"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "ã‚·ã‚°ãƒã‚¤ãƒãƒ£æ–‡å­—列ã®çµ‚ã‚Šã«ã‚´ãƒŸãŒã‚ã‚Šã¾ã™"
@@ -45694,6 +45763,9 @@ msgstr ""
#~ msgid "Perform structure layout optimizations based"
#~ msgstr "構造体ã®é…置を最é©åŒ–ã«åŸºã¥ã„ã¦è¡Œã†"
+#~ msgid "floating point constant truncated to integer"
+#~ msgstr "浮動å°æ•°ç‚¹å®šæ•°ãŒæ•´æ•°ã«åˆ‡ã‚Šè©°ã‚られã¾ã—ãŸ"
+
#~ msgid "arguments 1 and 2 have different types"
#~ msgstr "引数1ã¨å¼•æ•°2ãŒç•°ãªã‚‹åž‹ã‚’æŒã£ã¦ã„ã¾ã™"
@@ -45791,6 +45863,9 @@ msgstr ""
#~ msgid "unrecognized argument to -mmcu= option: %qs"
#~ msgstr "--help= オプションã¸ã®èªè­˜ã§ããªã„引数ã§ã™: %q.*s"
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs ã¯ç¶´ã‚ŠãŒé–“é•ã£ãŸå‰²ã‚Šè¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã®ã‚ˆã†ã«è¦‹ãˆã¾ã™"
+
#~ msgid "%slarge-data-threshold=%d%s is negative"
#~ msgstr "%slarge-data-threshold=%d%s ãŒè² ã§ã™"
diff --git a/gcc/po/nl.po b/gcc/po/nl.po
index 326017cc895..73c183b9df2 100644
--- a/gcc/po/nl.po
+++ b/gcc/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.3.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2008-03-18 21:16+0100\n"
"Last-Translator: Tim Van Holder <tim.van.holder@telenet.be>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anoniem>"
@@ -28,18 +28,18 @@ msgstr "<anoniem>"
msgid "({anonymous})"
msgstr "<anoniem>"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
msgid "expected end of line"
msgstr "ongeldige operand van %s"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, fuzzy, gcc-internal-format
msgid "expected %<;%>"
msgstr "ongeldige operand van %s"
@@ -47,17 +47,17 @@ msgstr "ongeldige operand van %s"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, fuzzy, gcc-internal-format
msgid "expected %<(%>"
msgstr "ongeldige operand van %s"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
msgid "expected %<,%>"
msgstr "ongeldige operand van %s"
@@ -68,19 +68,19 @@ msgstr "ongeldige operand van %s"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
msgid "expected %<)%>"
msgstr "ongeldige operand van %s"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
msgid "expected %<]%>"
msgstr "ongeldige operand van %s"
@@ -90,25 +90,25 @@ msgstr "ongeldige operand van %s"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
msgid "expected %<}%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, fuzzy, gcc-internal-format
msgid "expected %<{%>"
msgstr "ongeldige operand van %s"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
msgid "expected %<:%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, fuzzy, gcc-internal-format
msgid "expected %<while%>"
msgstr "ongeldige operand van %s"
@@ -118,39 +118,39 @@ msgstr "ongeldige operand van %s"
msgid "expected %<.%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
msgid "expected %<@end%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
msgid "expected %<>%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, fuzzy, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, fuzzy, gcc-internal-format
msgid "expected %<=%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, fuzzy, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "top-level declaratie van %qs specifieert %<auto%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
msgid "expected %<[%>"
msgstr "ongeldige operand van %s"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
#| msgid "<anonymous>"
msgid "(anonymous)"
@@ -332,12 +332,12 @@ msgstr "operand van '%%l' is geen label"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "floating-point constante verkeerd gebruikt"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "ongeldige expressie als operand"
@@ -1208,19 +1208,19 @@ msgstr " inline gemaakt vanuit %qs op %s:%d"
msgid " inlined from %qs"
msgstr " inline gemaakt vanuit %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr ""
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
@@ -1399,16 +1399,16 @@ msgid "this is the insn:"
msgstr "dit is de insn:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr ""
@@ -2558,120 +2558,120 @@ msgstr ""
msgid "<unknown>"
msgstr "onbekende machine-modus %qs"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "ongeldige waarde voor %%H"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "ongeldige waarde voor %%J"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "ongeldige waarde voor %%r"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "ongeldige waarde voor %%R"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "ongeldige waarde voor %%N"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "ongeldige waarde voor %%P"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "ongeldige waarde voor %%h"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "ongeldige waarde voor %%L"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "ongeldige waarde voor %%m"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "ongeldige waarde voor %%M"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "ongeldige waarde voor %%U"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "ongeldige waarde voor %%s"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "ongeldige waarde voor %%C"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "ongeldige waarde voor %%E"
# mja, is nogal technisch - ikke nie snap nie
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "onbekende 'unspec' relocatie"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "ongeldige code voor %%xn"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "Thumb-instructie met predicaat"
# mja. snappen wie snappen kan ^^
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "instructie met predicaat in voorwaardelijke sequentie"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "ongeldige operand voor code '%c'"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "ongeldige shift-operand"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2679,86 +2679,86 @@ msgstr "ongeldige shift-operand"
msgid "invalid operand for code '%c'"
msgstr "ongeldige operand voor code '%c'"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "instructie wordt nooit uitgevoerd"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "operand ontbreekt"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
#| msgid "function return type cannot be function"
msgid "function parameters cannot have __fp16 type"
msgstr "de terugkeerwaarde van een functie kan geen funtie zijn"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "functie geeft geen string-type terug"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
msgid "operands to %T/%t must be reg + const_int:"
msgstr "operand %<%d%> is geen register"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
msgid "bad address, not an I/O address:"
msgstr ""
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "address offset not a constant"
msgid "bad address, not a constant:"
msgstr "adres-offset is geen constante"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr ""
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "interne compilerfout. Slecht adres:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "interne compilerfout. Onbekende modus:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "ongeldige insn:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "onbekende move-insn:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "interne compilerfout. Verkeerde shift:"
@@ -2774,8 +2774,8 @@ msgstr "ongeldige const_double operand"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2854,21 +2854,21 @@ msgid "unrecognized address"
msgstr "adres niet herkend"
# betere vertaling voor "supposed"? "denkelijk"?
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "vermoedelijke constante niet herkend"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr ""
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr ""
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr ""
@@ -2876,7 +2876,7 @@ msgstr ""
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "ongeldige code voor operanduitvoer"
@@ -3006,81 +3006,81 @@ msgstr "ongeldige output_move_double operand"
msgid "bad output_condmove_single operand"
msgstr "ongeldige output_condmove_single operand"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "ongeldige UNSPEC als operand"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand size for operand code '%c'"
msgstr "ongeldige operand voor code '%c'"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand type used with operand code '%c'"
msgstr "ongeldige operand voor code '%c'"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "operand is noch een constante, noch een conditiecode ⇒ ongeldige operandcode 'c'"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "operand is noch een constante, noch een conditiecode ⇒ ongeldige operandcode 'c'"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "operand is noch een constante, noch een conditiecode ⇒ ongeldige operandcode 'c'"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "operand is noch een constante, noch een conditiecode ⇒ ongeldige operandcode 'c'"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "operand is noch een constante, noch een conditiecode ⇒ ongeldige operandcode 'c'"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "operand is noch een constante, noch een conditiecode ⇒ ongeldige operandcode 'c'"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "operand is noch een constante, noch een conditiecode ⇒ ongeldige operandcode 'c'"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "ongeldige operand voor '%c'"
# "constraints" hier te vertalen ("beperkingen"/"restricties") of niet?
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "ongeldige constraints voor operand"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "onbekende insn-modus"
@@ -3109,36 +3109,36 @@ msgstr ""
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr ""
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%xn code"
msgid "invalid %%G mode"
msgstr "ongeldige code voor %%xn"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: onbekende code"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "ongeldige conversie van %<__fpreg%>"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "ongeldige conversie naar %<__fpreg%>"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "ongeldige bewerking met %<__fpreg%>"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "ongeldige operand voor %%P"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "ongeldige waarde voor %%p"
@@ -3223,7 +3223,7 @@ msgid "post-increment address is not a register"
msgstr "post-increment adres is geen register"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "slecht adres"
@@ -3401,88 +3401,88 @@ msgstr ""
msgid "bad move"
msgstr "slechte test"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%H value"
msgid "invalid %%c value"
msgstr "ongeldige waarde voor %%H"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr ""
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "ongeldige waarde voor %%K"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "ongeldige waarde voor %%O"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "ongeldige waarde voor %%q"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr ""
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "ongeldige waarde voor %%x"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "twee %<u%>s in integerconstante"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "AltiVec argument doorgegeven aan functie zonder prototype"
@@ -3590,63 +3590,63 @@ msgstr "ongeldige operand voor %%R"
msgid "invalid operand to %%S"
msgstr "ongeldige operand voor %%N"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "aangemaakt en gebruikt met verschillende architecturen / ABIs"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "aangemaakt en gebruikt met verschillende ABIs"
# Vertaling voor "endianness"? Of niet nodig?
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "aangemaakt en gebruikt met verschillende \"endianness\""
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "ongeldige operand voor %%Y"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "ongeldige operand voor %%A"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "ongeldige operand voor %%B"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%C operand"
msgstr "ongeldige operand voor %%P"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%D operand"
msgstr "ongeldige operand voor %%P"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "ongeldige operand voor %%f"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "ongeldige operand voor %%s"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "een long long constante is geen geldige onmiddellijke operand"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "een floating-point constante is geen geldige onmiddellijke operand"
@@ -3671,7 +3671,7 @@ msgstr "'o' operand is geen constante"
msgid "xstormy16_print_operand: unknown code"
msgstr ""
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "ongeldige operand voor %%c"
@@ -3687,25 +3687,25 @@ msgstr "ongeldige operand voor %%d"
msgid "invalid %%H specifier"
msgstr "ongeldige operand voor %%P"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "ongeldige operand voor %%P"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "ongeldige operand voor %%P"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "ongeldige operand voor %%P"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3717,7 +3717,7 @@ msgstr "ongeldige operand voor %%P"
msgid "invalid %%%c operand"
msgstr "ongeldige operand voor %%c"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3729,42 +3729,42 @@ msgstr "ongeldige operand voor %%P"
msgid "invalid operand for 'r' specifier"
msgstr "ongeldige operand voor 'b' modifier"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "ongeldige operand voor %%P"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "ongeldige operand voor %%P"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "ongeldige operand voor %%P"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "ongeldige operand voor %%P"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "ongeldige operand voor %%P"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -3832,11 +3832,11 @@ msgstr "geen register in adres"
msgid "address offset not a constant"
msgstr "adres-offset is geen constante"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "kandidaat 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "kandidaat 2:"
@@ -4078,7 +4078,7 @@ msgstr ""
msgid "candidates are:"
msgstr "kandidaten zijn:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid "candidate is:"
@@ -4138,55 +4138,55 @@ msgstr "ongeldige registernaam voor %qs"
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "argument van verkeerd type voor unaire min"
# 'unary' = 'unair'?
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "argument van verkeerd type voor unaire plus"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "argument van verkeerd type voor bit-complement"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "argument van verkeerd type voor abs"
# OK, ik geef het op: wat is hier een goede vertaling voor 'conjugation'?
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "argument van verkeerd type voor vervoeging"
# 'unary' = 'unair'?
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "wrong type argument to unary plus"
msgid "in argument to unary !"
msgstr "argument van verkeerd type voor unaire plus"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
#, fuzzy
msgid "no pre-increment operator for type"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
#, fuzzy
msgid "no pre-decrement operator for type"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4464,7 +4464,7 @@ msgstr "ongeldige operand voor %P"
msgid "Bad type in constant expression"
msgstr "overflow in constante expressie"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
#, fuzzy
msgid "Unexpected end of module"
msgstr "ongeldige operand van %s"
@@ -4496,12 +4496,12 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
#, fuzzy
msgid "assignment"
msgstr "beginwaarde ontbreekt"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
#, fuzzy
msgid "pointer assignment"
msgstr "ongeldige lvalue in toewijzing"
@@ -4589,50 +4589,50 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "incompatibele operands voor %s"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
msgid "iterator variable"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
#| msgid "invalid expression as operand"
msgid "End expression in DO loop"
msgstr "ongeldige expressie als operand"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4641,7 +4641,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4715,7 +4715,7 @@ msgstr "%<noreturn%> functie geeft niet-void waarde terug"
msgid "Memory allocation failed"
msgstr ""
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -4916,7 +4916,7 @@ msgstr "-EB en -EL mogen niet samen gebruikt worden"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -4977,6 +4977,10 @@ msgstr "-shared en -mdll zijn niet compatibel"
msgid "static is not supported on TPF-OS"
msgstr "sectie-attributen worden niet ondersteund op dit doelsysteem"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "-EB en -EL mogen niet samen gebruikt worden"
@@ -5009,12 +5013,6 @@ msgstr "-mbig-endian en -mlittle-endian mogen niet samen gebruikt worden"
msgid "no processor type specified for linking"
msgstr "specbestand heeft geen spec voor het linken"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-#| msgid "GCC does not support -C or -CC without -E"
-msgid "gfortran does not support -E without -cpp"
-msgstr "GCC ondersteunt -C of -CC niet zonder -E"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr ""
@@ -5069,6 +5067,12 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "De -shared optie wordt op het ogenblik niet ondersteund voor VAX ELF."
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+#| msgid "GCC does not support -C or -CC without -E"
+msgid "gfortran does not support -E without -cpp"
+msgstr "GCC ondersteunt -C of -CC niet zonder -E"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fini en -femit-class-files zijn niet compatibel"
@@ -8298,6 +8302,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -10797,18 +10805,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Definieer geen systeem-specifieke of GCC-specifieke macros op voorhand"
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
msgid "Functions which return values must end with return statements"
msgstr "als %<noreturn%> gedeclareerde functie bevat een %<return%> statement"
@@ -12391,275 +12411,284 @@ msgstr ""
msgid "Create a position independent executable"
msgstr "Positie-onafhankelijke code wordt niet ondersteund. Genegeerd"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
msgid "invalid use of type"
msgstr "ongeldig gebruik van %<restrict%>"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-msgid "floating point constant truncated to integer"
-msgstr "floating-point constante verkeerd gebruikt"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
#, fuzzy
msgid "constant refers to itself"
msgstr "sectie-pointer ontbreekt"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
msgid "expected numeric type"
msgstr "ongeldige operand van %s"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+msgid "expected boolean type"
+msgstr "ongeldige operand van %s"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
msgid "expected integer or boolean type"
msgstr "ongeldige waarheidsexpressie"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
msgid "invalid operand for unary %<&%>"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
msgid "expected pointer"
msgstr "ongeldige operand van %s"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
msgid "incompatible types in binary expression"
msgstr "incompatibele types bij %s"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
#| msgid "size of array %qs has non-integer type"
msgid "shift of non-integer operand"
msgstr "grootte van array %qs is van een niet-integer type"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
#| msgid "switch quantity not an integer"
msgid "shift count not unsigned integer"
msgstr "switch-waarde is geen integer"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative insn length"
msgid "negative shift count"
msgstr "negatieve insn-lengte"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
msgid "object is not a method"
msgstr "opgeroepen object is geen functie"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
msgid "method type does not match object type"
msgstr "argument %qs komt niet overeen met prototype"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
msgid "invalid use of %<...%> with builtin function"
msgstr "ongeldig argument voor %<__builtin_return_address%>"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "geen argumenten"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments"
msgstr "te veel argumenten voor formaat"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
msgid "argument 1 must be a map"
msgstr "het argument van %<asm%> is geen constante string"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
msgid "invalid type for make function"
msgstr "ongeldig gebruik van %<restrict%>"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "slechte insn voor 'A'"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments to make"
msgstr "te veel argumenten voor formaat"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
msgid "argument must be array or slice or channel"
msgstr "het argument van %<asm%> is geen constante string"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
msgid "unsupported argument type to builtin function"
msgstr "ongeldig argument voor %<__builtin_return_address%>"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
msgid "argument must be channel"
msgstr "het argument van %<asm%> is geen constante string"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
msgid "argument must be a field reference"
msgstr "%<defined%> zonder een naam"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
msgid "left argument must be a slice"
msgstr "%<defined%> zonder een naam"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
msgid "first argument must be []byte"
msgstr "%<defined%> zonder een naam"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
msgid "second argument must be slice or string"
msgstr "het argument van %<asm%> is geen constante string"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "%Jparameter %u has void type"
msgid "argument 2 has invalid type"
msgstr "%Jparameter %u heeft %<void%> als type"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
#| msgid "%Jparameter %u has incomplete type"
msgid "argument must have complex type"
msgstr "%Jparameter %u heeft een onvolledig type"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
msgid "complex arguments must have identical types"
msgstr "het argument van %<cleanup%> is geen naam"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
msgid "complex arguments must have floating-point type"
msgstr ""
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+msgid "invalid use of %<...%> with non-slice"
+msgstr "ongeldig gebruik van %<this%> op hoogste niveau"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
msgid "expected function"
msgstr "ongeldige operand van %s"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
msgid "incompatible type for receiver"
msgstr "incompatibele types bij %s"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "%s laat qualifiers van doeltype van pointer vallen"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "number of arguments doesn%'t match prototype"
msgid "number of results does not match number of values"
msgstr "aantal argumenten kom niet overeen met prototype"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
msgid "index must be integer"
msgstr "%<defined%> zonder een naam"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
msgid "incompatible type for map index"
msgstr "incompatibele types bij %s"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many expressions for struct"
msgstr "te veel argumenten voor formaat"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "te weinig argumenten voor formaat"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
msgid "invalid unsafe.Pointer conversion"
msgstr "ongeldige operand in de instructie"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
msgid "expected channel"
msgstr "ongeldige operand van %s"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
msgid "invalid left hand side of assignment"
@@ -12693,21 +12722,21 @@ msgstr "ongeldige lvalue in asm-statement"
msgid "expected boolean expression"
msgstr "ongeldige waarheidsexpressie"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
msgid "incompatible types in send"
msgstr "incompatibele types bij %s"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
#, fuzzy
msgid "invalid send on receive-only channel"
msgstr "ongeldige operand in de instructie"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -12768,76 +12797,76 @@ msgstr "parameternamen (zonder types) in functiedeclaratie"
msgid "cannot use type %s as type %s"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
msgid "different receiver types"
msgstr "ongeldige operand voor %p-code"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
msgid "different number of parameters"
msgstr "%Jherdefinitie van parameter %qD"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
msgid "different parameter types"
msgstr "ongeldige operand voor %p-code"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s"
msgstr "incompatibel type voor argument %d van %qs"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "incompatibel type voor argument %d van %qs"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "struct has no members"
msgid "type has no methods"
msgstr "struct heeft geen leden"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
msgid "missing method %s%s%s"
msgstr "Bestandsnaam ontbreekt na %qs optie"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -12908,7 +12937,7 @@ msgstr "derde argument voor %<__builtin_prefetch%> moet een constante zijn"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "ongeldig derde argument voor __builtin_prefetch; zal nul gebruiken"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "te weinig argumenten voor functie %<va_start%>"
@@ -12931,7 +12960,7 @@ msgstr "(dus U zou %qT, en niet %qT, moeten doorgeven aan %<va_arg%>)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "indien deze code bereikt wordt, zal het programma afgebroken worden"
@@ -13013,7 +13042,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, fuzzy, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "ongeldig argument voor %<__builtin_frame_address%>"
@@ -13107,8 +13136,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "void-waarde niet genegeerd zoals het hoort"
@@ -13388,7 +13417,7 @@ msgstr "de declaratie van %qs verbergt een parameter"
msgid "declaration of %q+D shadows a previous local"
msgstr "de declaratie van %qs verbergt een parameter"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
msgid "shadowed declaration is here"
@@ -13495,7 +13524,7 @@ msgstr "overflow in constante expressie"
msgid "%qE defined as wrong kind of tag"
msgstr ""
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "ongeldig gebruik van %<restrict%>"
@@ -13617,7 +13646,7 @@ msgstr "parameter %qD krijgt beginwaarde"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
@@ -13627,7 +13656,7 @@ msgstr "object van variabele lengte mag geen beginwaarde krijgen"
msgid "variable %qD has initializer but incomplete type"
msgstr "variabele %qD heeft beginwaarde, maar een onvolledig type"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, fuzzy, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "%J%<noinline%> attribuut gegeven aan ingebouwde functie %qD"
@@ -13657,7 +13686,7 @@ msgstr "array-grootte ontbreekt in %qs"
msgid "zero or negative size array %q+D"
msgstr "%Jarray %qD heeft grootte die negatief of nul is"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, fuzzy, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "opslaggrootte van %qs is onbekend"
@@ -13770,7 +13799,7 @@ msgstr "grootte van array %qs is negatief"
msgid "variable length array %qE is used"
msgstr "ISO C90 verbiedt array %qs van variabele grootte"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -13863,7 +13892,7 @@ msgstr "opslagklasse opgegeven voor parameter %qs"
msgid "storage class specified for unnamed parameter"
msgstr "opslagklasse opgegeven voor parameter %qs"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "opslagklasse opgegeven voor typenaam"
@@ -14031,7 +14060,7 @@ msgstr "%qs gedeclareerd als een functie die een array teruggeeft"
msgid "function definition has qualified void return type"
msgstr "functiedefinitie heeft een gekwalificeerde %<void%> als teruggeeftype"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "typekwalificaties op teruggeeftypes van functies worden genegeerd"
@@ -14151,7 +14180,7 @@ msgstr "ISO C verbiedt %<const%> of %<volatile%> functie-types"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "argument %d is alleen-lezen"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, fuzzy, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "variabele of veld %qs als void gedeclareerd"
@@ -14595,7 +14624,7 @@ msgstr "argument %qs komt niet overeen met prototype"
msgid "argument %qD doesn%'t match prototype"
msgstr "argument %qs komt niet overeen met prototype"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, fuzzy, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "%<return%> zonder waarde in een functie die een niet-void waarde teruggeeft"
@@ -14790,7 +14819,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C verbiedt een leeg bronbestand"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, fuzzy, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C staat geen extra %<;%> buiten een functie toe"
@@ -14801,7 +14830,7 @@ msgstr "ISO C staat geen extra %<;%> buiten een functie toe"
msgid "unknown type name %qE"
msgstr "onbekende machine-modus %qs"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, fuzzy, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "meerdere opslagklassen in declaratie van %qs"
@@ -14811,7 +14840,7 @@ msgstr "meerdere opslagklassen in declaratie van %qs"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "het %qs attribuut wordt genegeerd voor %qs"
@@ -14831,7 +14860,7 @@ msgstr "ongeldige operand van %s"
msgid "data definition has no type or storage class"
msgstr "datadefinitie heeft geen type of opslagklasse"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -14861,7 +14890,7 @@ msgstr "ISO C90 ondersteunt %<long long%> niet"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 ondersteunt %<long long%> niet"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr ""
@@ -14889,18 +14918,18 @@ msgstr ""
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, fuzzy, gcc-internal-format
msgid "expected identifier"
msgstr "ongeldige operand van %s"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "komma aan het einde van enumerator-lijst"
@@ -15032,7 +15061,7 @@ msgstr "ISO C90 verbiedt labeldeclaraties"
msgid "expected %<}%> before %<else%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -15061,17 +15090,17 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, fuzzy, gcc-internal-format
msgid "expected statement"
msgstr "ongeldige beginwaarde"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "leeg body in een else-statement"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "leeg body in een else-statement"
@@ -15142,7 +15171,7 @@ msgstr "ISO C90 ondersteunt %<long long%> niet"
msgid "cannot take address of %qs"
msgstr "kan adres van bitveld %qs niet nemen"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, fuzzy, gcc-internal-format
msgid "expected expression"
msgstr "ongeldige waarheidsexpressie"
@@ -15184,259 +15213,259 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "tweede argument van %<__builtin_longjmp%> moet 1 zijn"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "te weinig argumenten voor functie %<va_start%>"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, fuzzy, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 verbiedt het gebruik van samengestelde expressies als lvalues"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "ongeldige operand van %s"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, fuzzy, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "extra puntkomma opgegeven in definitie van methode"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "opslagklasse opgegeven voor parameter %qs"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "misvormde #pragma pack"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "misvormde #pragma pack"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "the %<setter%> attribute may only be specified once"
msgstr "%Jsectie-attribuut kan niet opgegeven worden voor lokale variabelen"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "sectie-attribuut kan niet opgegeven worden voor lokale variabelen"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, fuzzy, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "misvormde #pragma pack(pop[,id])"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
msgid "too many %qs clauses"
msgstr "te veel invoerbestanden"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "vergelijking tussen signed en unsigned"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
msgid "expected integer expression"
msgstr "ongeldige waarheidsexpressie"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
msgid "invalid schedule kind"
msgstr "ongeldige const_double operand"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "-fPIC is niet geldig met -mcoff"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "ongeldige bewerking met %<__fpreg%>"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, fuzzy, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "ongeldige bewerking met %<__fpreg%>"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, fuzzy, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "ongeldige operand van %s"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
msgid "for statement expected"
msgstr "overflow in constante expressie"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "herdeclaratie van %qs"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, fuzzy, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "statische variable %qs is als dllimport aangeduid"
# dit klinkt niet al te best
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable"
msgstr "functie-oproep heeft geaggregeerde waarde"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, fuzzy, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "label %qs gebruikt maar niet gedefinieerd"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, fuzzy, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%Jparameter %u heeft een onvolledig type"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15446,7 +15475,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qs heeft een onvolledig type"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "ongeldig gebruik van een void-expressie"
@@ -15514,68 +15543,73 @@ msgid "function return types not compatible due to %<volatile%>"
msgstr "de terugkeerwaarde van een functie kan geen funtie zijn"
# 'Arithmetic'?? 'rekensom' is wel correct, maar het klinkt zo stom.
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "rekensom met pointer naar onvolledig type"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, fuzzy, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "union heeft geen lid dat %qs heet"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, fuzzy, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "vraag naar lid %qs in iets dat geen structure of union is"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "dereferentie van pointer naar onvolledig type"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, fuzzy, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "%<void *%> pointer wordt gederefereerd"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "waarde met subscript is noch een array, noch een pointer"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "array subscript is geen integer"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, fuzzy, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "doorgeven van argument %d van pointer naar functie"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
msgid "index value is out of bound"
msgstr "het argument van %<asm%> is geen constante string"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, fuzzy, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C verbiedt het gebruik van subscripts bij een %<register%> array"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, fuzzy, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 verbiedt het gebruik van subscripts bij een array die geen lvalue is"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, fuzzy, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "opgeroepen object is geen functie"
@@ -15583,376 +15617,376 @@ msgstr "opgeroepen object is geen functie"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr ""
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "functiedefinitie heeft een gekwalificeerde %<void%> als teruggeeftype"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "%<defined%> zonder een naam"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "tweede argument van %<__builtin_longjmp%> moet 1 zijn"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "te veel argumenten voor functie %qE"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, fuzzy, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "te veel argumenten voor functie %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
msgid "declared here"
msgstr "%qs tevoren hier gedeclareerd"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "het type van formele parameter %d is onvolledig"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "%s als integer in plaats van floating-point ten gevolge van een prototype"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "%s als floating-point in plaats van complex ten gevolge van een prototype"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "%s als complex in plaats van floating-point ten gevolge van een prototype"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "%s als floating-point in plaats van integer ten gevolge van een prototype"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "%s als complex in plaats van floating-point ten gevolge van een prototype"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "%s als floating-point in plaats van complex ten gevolge van een prototype"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "%s als %<float%> in plaats van %<double%> ten gevolge van een prototype"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "%s als floating-point in plaats van complex ten gevolge van een prototype"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "%s met andere breedte ten gevolge van prototype"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "%s als unsigned ten gevolge van prototype"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "%s als signed ten gevolge van prototype"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "ongeldige registernaam voor %qs"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "te weinig argumenten voor functie %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "de zwakke declaratie van %qs moet aan de definitie voorafgaan"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "vergelijking tussen signed en unsigned"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, fuzzy, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "pointer van type %<void *%> gebruikt in aftrekking"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "pointer naar functie gebruikt in aftrekking"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, fuzzy, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C ondersteunt het %<%c%> formaat niet"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "argument van verkeerd type voor unair uitroepingsteken"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, fuzzy, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C ondersteunt het %<%c%> formaat niet"
# Wat is beter: 'incrementeren', 'incrementering', of 'increment'?
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "argument van verkeerd type voor incrementeren"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "argument van verkeerd type voor decrementeren"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "incrementeren van pointer naar onbekend structure"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "decrementeren van pointer naar onbekend structure"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr ""
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "%s van alleen-lezen locatie"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "%s van alleen-lezen locatie"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "%s van alleen-lezen locatie"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, fuzzy, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "kan adres van bitveld %qs niet nemen"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, fuzzy, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "globale registervariabele %qs gebruikt in geneste functie"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, fuzzy, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "registervariabele %qs gebruikt in geneste functie"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, fuzzy, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "adres van globale registervariabele %qs gevraagd"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, fuzzy, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "adres van registervariabele %qs gevraagd"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, fuzzy, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "ongeldige registernaam voor %qs"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, fuzzy, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C verbiedt voorwaardelijke expressies met maar één void-zijde"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
#| msgid "pointer type mismatch in conditional expression"
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "pointertypes in voorwaardelijke expressie komen niet overeen"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, fuzzy, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C verbiedt voorwaardelijke expressies tussen %<void *%> en een functiepointer"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "pointertypes in voorwaardelijke expressie komen niet overeen"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "types in voorwaardelijke expressie komen niet overeen (pointer/integer)"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "linker operand van comma-expressie heeft geen effect"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
msgid "cast adds %q#v qualifier to function type"
msgstr "cast geeft functie-type op"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "cast laat qualifiers van doeltype van pointer vallen"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "cast geeft array-type op"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "cast geeft functie-type op"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, fuzzy, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C verbiedt het casten van een niet-scalair naar hetzelfde type"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, fuzzy, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C verbiedt casts naar een union-type"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "cast naar union-type van een type dat geen deel uitmaakt van de union"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "cast verhoogt het benodigde alignment van het doeltype"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "cast van pointer naar integer met andere grootte"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "cast naar pointer van integer met andere grootte"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, fuzzy, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C verbiedt een vergelijking van %<void *%> met een functie-pointer"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, fuzzy, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C verbiedt een vergelijking van %<void *%> met een functie-pointer"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -15964,707 +15998,707 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, fuzzy, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "eerste argument van %qs zou een %<int%> moeten zijn"
# 'signedness' = 'signed-heid'?
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, fuzzy, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "doelen van pointer in %s verschillen in signedness"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "%s maakt gekwalificeerde functiepointer van een niet gekwalificeerde"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "%s maakt gekwalificeerde functiepointer van een niet gekwalificeerde"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "%s maakt gekwalificeerde functiepointer van een niet gekwalificeerde"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "%s maakt gekwalificeerde functiepointer van een niet gekwalificeerde"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "cast laat qualifiers van doeltype van pointer vallen"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "cast laat qualifiers van doeltype van pointer vallen"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "cast laat qualifiers van doeltype van pointer vallen"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
msgid "return discards %qv qualifier from pointer target type"
msgstr "cast laat qualifiers van doeltype van pointer vallen"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, fuzzy, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C verbiedt conversie van argumenten naar union type"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, fuzzy, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "ongeldige registernaam voor %qs"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "%s van incompatibel pointertype"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "assignment from pointer to non-enclosed address space"
msgstr "cast van pointer naar integer met andere grootte"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "%s van incompatibel pointertype"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %qs formaat-attribuut"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, fuzzy, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %<noreturn%> attribuut"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, fuzzy, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %qs formaat-attribuut"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, fuzzy, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %qs formaat-attribuut"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, fuzzy, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C verbiedt %s tussen functiepointer en %<void *%>"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, fuzzy, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C verbiedt %s tussen functiepointer en %<void *%>"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, fuzzy, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C verbiedt %s tussen functiepointer en %<void *%>"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, fuzzy, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C verbiedt %s tussen functiepointer en %<void *%>"
# 'signedness' = 'signed-heid'?
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, fuzzy, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "doelen van pointer in %s verschillen in signedness"
# 'signedness' = 'signed-heid'?
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, fuzzy, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "doelen van pointer in %s verschillen in signedness"
# 'signedness' = 'signed-heid'?
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, fuzzy, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "doelen van pointer in %s verschillen in signedness"
# 'signedness' = 'signed-heid'?
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, fuzzy, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "doelen van pointer in %s verschillen in signedness"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "%s van incompatibel pointertype"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, fuzzy, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "%s van incompatibel pointertype"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, fuzzy, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "%s van incompatibel pointertype"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, fuzzy, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "%s van incompatibel pointertype"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "ongeldig gebruik van array die geen lvalue is"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "%s maakt pointer van integer zonder een cast"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, fuzzy, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "%s maakt pointer van integer zonder een cast"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, fuzzy, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "%s maakt pointer van integer zonder een cast"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, fuzzy, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "%s maakt pointer van integer zonder een cast"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "%s maakt integer van pointer zonder een cast"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, fuzzy, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "%s maakt integer van pointer zonder een cast"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, fuzzy, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "%s maakt integer van pointer zonder een cast"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, fuzzy, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "%s maakt integer van pointer zonder een cast"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, fuzzy, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "incompatibel type voor argument %d van %qs"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "incompatibel type voor argument %d van %qs"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "incompatibele types bij %s"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, fuzzy, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "incompatibel type voor argument %d van %qs"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, fuzzy, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(dicht bij initialisatie van %qs)"
# moet beter kunnen - "... waar haakjes rond staan" klinkt ook al niet geweldig
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "array heeft stringconstante tussen haakjes als beginwaarde"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "initialisatie van flexibel array-lid"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "char-array heeft wide string als beginwaarde"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from non-wide string"
msgstr "wchar_t-array heeft geen wide string als beginwaarde"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from incompatible wide string"
msgstr "wchar_t-array heeft geen wide string als beginwaarde"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "array van ongeschikt type heeft stringconstante als beginwaarde"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "array krijgt niet-constante array-expressie als beginwaarde"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "beginwaarde-element is niet constant"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not constant"
msgid "initializer element is not a constant expression"
msgstr "beginwaarde-element is niet constant"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "beginwaarde-element kan niet berekend worden tijdens het laden"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "ongeldige beginwaarde"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, fuzzy, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "extra accolade-groep aan einde van beginwaarde"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "accolades ontbreken rond beginwaarde"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "accolades rond scalaire beginwaarde"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "initialisatie van flexibel array-lid in een geneste context"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "beginwaarde ontbreekt"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "lege scalaire beginwaarde"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "extra elementen in scalaire beginwaarde"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "array-index in beginwaarde van niet-array"
# of gewoon "veldnaam niet in beginwaarde van record of union"?
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "veldnaam in beginwaarde van iets anders dan record of union"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "array-index in beginwaarde is niet van een integer type"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer not of integer type"
msgid "array index in initializer is not an integer constant expression"
msgstr "array-index in beginwaarde is niet van een integer type"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "niet-constante array-index in beginwaarde"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "array-index in beginwaarde overschrijdt de grenzen van de array"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "leeg indexbereik in beginwaarde"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "array-indexbereik in beginwaarde overschrijdt de grenzen van de array"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, fuzzy, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "onbekend veld %qs opgegeven in beginwaarde"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "geïnitialiseerd veld met neveneffecten wordt overschreven"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "geïnitialiseerd veld wordt overschreven"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "overtollige elementen in beginwaarde van char array"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "overtollige elementen in beginwaarde van struct"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "niet-statische initialisatie van flexibel array-lid"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "overtollige elementen in beginwaarde van union"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "overtollige elementen in beginwaarde van array"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "overtollige elementen in beginwaarde van vector"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "overtollige elementen in beginwaarde van scalair"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, fuzzy, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C verbiedt %<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, fuzzy, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "als %<noreturn%> gedeclareerde functie bevat een %<return%> statement"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, fuzzy, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "%<return%> zonder waarde in een functie die een niet-void waarde teruggeeft"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, fuzzy, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "%<return%> met waarde in een functie die void teruggeeft"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "%<return%> met waarde in een functie die void teruggeeft"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "functie geeft adres van lokale variabele terug"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch-waarde is geen integer"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, fuzzy, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "%<long%> switch-expressie wordt in ISO C niet naar %<int%> geconverteerd"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "ongeldig gebruik van een void-expressie"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case-label niet in een switch-statement"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, fuzzy, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "default-label niet in een switch-statement"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr ""
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break-statement niet in een lus of switch"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue-statement niet in een lus"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, fuzzy, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "break-statement niet in een lus of switch"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "statement zonder effect"
# vertaling voor 'statement'?
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "expressie-statement heeft onvolledig type"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "teller van rechtse shift is negatief"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "teller van rechtse shift is >= breedte van het type"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "teller van links shift is negatief"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "teller van links shift is >= breedte van het type"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr ""
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
#| msgid "comparison of distinct pointer types lacks a cast"
msgid "comparison of pointers to disjoint address spaces"
msgstr "een cast ontbreekt bij vergelijking van ongelijke pointer-types"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, fuzzy, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C verbiedt een vergelijking van %<void *%> met een functie-pointer"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "een cast ontbreekt bij vergelijking van ongelijke pointer-types"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "vergelijking tussen pointer en integer"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "vergelijking van volledige en onvolledige pointers"
# 'ordered' -> 'bevolen' of 'geordend'? Waarschijnlijk het laatste.
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, fuzzy, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C verbiedt geordende vergelijkingen tussen pointers naar functies"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "geordende vergelijking van een pointer met integer nul"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "geordende vergelijking van een pointer met integer nul"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "ongeldige registernaam voor %qs"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, fuzzy, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "waarde van array-type gebruikt waar een scalair nodig is"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, fuzzy, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "waarde van struct-type gebruikt waar een scalair nodig is"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, fuzzy, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "waarde van union-type gebruikt waar een scalair nodig is"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr "waarde van struct-type gebruikt waar een scalair nodig is"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "ongeldig gebruik van %<restrict%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, fuzzy, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qs is geen bestand, pipe of tty"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, fuzzy, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, fuzzy, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -16675,7 +16709,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "functie-oproep heeft geaggregeerde waarde"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, fuzzy, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "variabele %qs is te groot"
@@ -17497,53 +17531,53 @@ msgstr "%s: kan niet openen als COFF-bestand"
msgid "library lib%s not found"
msgstr "library lib%s niet gevonden"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr ""
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr ""
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr ""
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr "cast van pointer naar integer met andere grootte"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr ""
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr ""
@@ -17699,7 +17733,7 @@ msgstr ""
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -17789,44 +17823,44 @@ msgstr ""
msgid "stack limits not supported on this target"
msgstr "sectie-attributen worden niet ondersteund op dit doelsysteem"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure member"
msgstr "opslagklasse opgegeven voor structure-veld %qs"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure bitfield"
msgstr "opslagklasse opgegeven voor structure-veld %qs"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr "globale registervariabele %qs gebruikt in geneste functie"
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "functie %qs geherdeclareerd met noinline attribuut"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "functie %qs geherdeclareerd met noinline attribuut"
@@ -17902,7 +17936,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -17912,7 +17946,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr "variabele %qs is te groot"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, fuzzy, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "incompatibele operands voor %s"
@@ -18386,77 +18420,77 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "%<return%> zonder waarde in een functie die een niet-void waarde teruggeeft"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "ongeldige lvalue in toewijzing"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr "registervariabele %qs gebruikt in geneste functie"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr "registervariabele %qs gebruikt in geneste functie"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr "registervariabele %qs gebruikt in geneste functie"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "kan bestand '%s' niet openen"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "kan bestand '%s' niet openen"
@@ -18513,7 +18547,7 @@ msgstr "lege declaratie"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18654,48 +18688,48 @@ msgstr "veld %qs als een functie gedeclareerd"
msgid "function %qD redeclared as variable"
msgstr "functie %qs geherdeclareerd als inline"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, fuzzy, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr "continue-statement niet in een lus"
@@ -18806,7 +18840,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr ""
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
@@ -19167,9 +19201,9 @@ msgstr ""
msgid "can%'t use %qs as a fixed register"
msgstr ""
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr ""
@@ -19249,12 +19283,12 @@ msgstr ""
msgid "%<asm%> operand requires impossible reload"
msgstr ""
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:7899
+#: reload1.c:7913
#, fuzzy, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "operand %<%d%> is geen register"
@@ -19474,7 +19508,7 @@ msgstr ""
msgid "packed attribute is unnecessary"
msgstr ""
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, fuzzy, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "alignment van %qs is groter dan het maximale alignment van het objectbestand. %d wordt gebruikt."
@@ -19689,7 +19723,7 @@ msgstr "ongeldige linker operand van %s"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19704,7 +19738,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr ""
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19719,7 +19753,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr "%qs staat niet aan het begin van een declaratie"
@@ -19755,630 +19789,630 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "globale registervariabele volgt op een functiedefinitie"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid first operand of MEM_REF"
msgstr "ongeldige operand voor %%R"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand of MEM_REF"
msgstr "ongeldige operand voor %%R"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
msgid "non-integral used in condition"
msgstr "herdefinitie van %<union %s%>"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, fuzzy, gcc-internal-format
msgid "invalid conditional operand"
msgstr "ongeldige const_double operand"
# "constraints" hier te vertalen ("beperkingen"/"restricties") of niet?
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "ongeldige constraints voor operand"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid reference prefix"
msgstr "Ongeldige modus voor gen_tst_reg"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "ongeldige operand in de instructie"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "ongeldige expressie als operand"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "ongeldige operand in de instructie"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "Ongeldige vorm van arrayverwijzing op %C"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "subscript ontbreekt in array-referentie"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, fuzzy, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "subscript ontbreekt in array-referentie"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "cast van pointer naar integer met andere grootte"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid address operand in MEM_REF"
msgstr "ongeldige operand voor %%R"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid shift operand"
msgid "invalid offset operand in MEM_REF"
msgstr "ongeldige shift-operand"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
#| msgid "function not inlinable"
msgid "non-function in gimple call"
msgstr "functie kan niet inline gemaakt worden"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
#| msgid "invalid storage class for function %qs"
msgid "invalid pure const state for function"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid LHS in gimple call"
msgstr "ongeldige PC in tabel met regelnummers"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid conversion in gimple call"
msgstr "ongeldige conversie naar %<__fpreg%>"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid static chain in gimple call"
msgstr "ongeldige PC in tabel met regelnummers"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "ongeldig argument voor %<__builtin_return_address%>"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "ongeldige operand in de instructie"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, fuzzy, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr "ongeldig gebruik van een void-expressie"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr "ongeldig gebruik van een void-expressie"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "Ongeldig token in expressie"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "Ongeldig token in expressie"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "Ongeldig token in expressie"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "ongeldige conversie naar %<__fpreg%>"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "ongeldige conversie naar %<__fpreg%>"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "ongeldige lvalue in toewijzing"
# Is 'elementair' wel een goede vertaling voor 'elemental'?
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, fuzzy, gcc-internal-format
#| msgid "elemental binary operation"
msgid "non-register as LHS of binary operation"
msgstr "elementaire binaire operatie"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, fuzzy, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr "ongeldige waarheidsexpressie"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr "ongeldige operand in de instructie"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "ongeldige lvalue in toewijzing"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr ""
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "ongeldige operand voor %%s-code"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "ongeldige operand voor %%s-code"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "goto destination is neither a label nor a pointer"
msgstr "waarde met subscript is noch een array, noch een pointer"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "ongeldige operand voor %%s-code"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr "de formaatstring heeft een niet-constant operand-nummer"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "ongeldige operand in de instructie"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "Ongeldig token in expressie"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "ongeldig adres"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
msgid "missing PHI def"
msgstr "beginwaarde ontbreekt"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
msgid "invalid PHI argument"
msgstr "ongeldige waarde voor %%C"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "incompatibele types bij %s"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr ""
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
msgid "in statement"
msgstr "ongeldige beginwaarde"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "eerdere impliciete declaratie van %qs"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
msgid "case labels not sorted: "
msgstr "-pipe wordt niet ondersteund"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "beginwaarde ontbreekt"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "%<noreturn%> functie keert terug"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, fuzzy, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "einde van niet-void functie werd bereikt zonder teruggeefwaarde"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of %qD, declared with attribute warn_unused_result"
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%Hde returnwaarde van %qD, gedeclareerd met het %<warn_unused_result%> atribuut, wordt genegeerd"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, fuzzy, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "%Hde returnwaarde van een functie, gedeclareerd met het %<warn_unused_result%> atribuut, wordt genegeerd"
@@ -20440,72 +20474,72 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr ""
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr ""
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr ""
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr ""
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr ""
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr ""
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr ""
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "inline maken mislukt in oproep van %qs"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "van hieruit opgeroepen"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, fuzzy, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "inline maken mislukt in oproep van %qs"
@@ -20718,7 +20752,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr ""
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
msgid "%qD was declared here"
msgstr "%qs tevoren hier gedeclareerd"
@@ -20778,54 +20812,54 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "array subscript is geen integer"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "array subscript is geen integer"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "array subscript is geen integer"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, fuzzy, gcc-internal-format
#| msgid "comparison is always false due to limited range of data type"
msgid "comparison always false due to limited range of data type"
msgstr "vergelijking is altijd vals omwille van het beperkte bereik van het datatype"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, fuzzy, gcc-internal-format
#| msgid "comparison is always true due to limited range of data type"
msgid "comparison always true due to limited range of data type"
msgstr "vergelijking is altijd waar omwille van het beperkte bereik van het datatype"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -20835,22 +20869,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr ""
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20865,140 +20899,140 @@ msgstr ""
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, fuzzy, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "het %qs attribuut wordt genegeerd"
-#: tree.c:5569
+#: tree.c:5570
#, fuzzy, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "functie %qs geherdeclareerd met noinline attribuut"
-#: tree.c:5577
+#: tree.c:5578
#, fuzzy, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "functie-definitie als %<auto%> gedeclareerd"
-#: tree.c:5585
+#: tree.c:5586
#, fuzzy, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:5627
+#: tree.c:5628
#, fuzzy, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qs als ander soort symbool geherdeclareerd"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "arrays van functies zijn niet betekenisvol"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "de terugkeerwaarde van een functie kan geen funtie zijn"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr ""
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
@@ -21048,147 +21082,152 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr ""
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr "%qs gedeclareerd als een functie die een functie teruggeeft"
-#: varasm.c:958
+#: varasm.c:964
#, fuzzy, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "alignment van %qs is groter dan het maximale alignment van het objectbestand. %d wordt gebruikt."
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, fuzzy, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "registernaam niet opgegeven voor %qs"
-#: varasm.c:1207
+#: varasm.c:1213
#, fuzzy, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "ongeldige registernaam voor %qs"
-#: varasm.c:1209
+#: varasm.c:1215
#, fuzzy, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "datatype van %qs is niet geschikt voor een register"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "het registernummer voor %qs is niet geschikt voor dat datatype"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "het registernummer voor %qs is niet geschikt voor dat datatype"
-#: varasm.c:1218
+#: varasm.c:1224
#, fuzzy, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "het registernummer voor %qs is niet geschikt voor dat datatype"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "globale registervariabele heeft beginwaarde"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1270
+#: varasm.c:1276
#, fuzzy, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "registernaam opgegeven voor niet-registervariabele %qs"
-#: varasm.c:1387
+#: varasm.c:1393
#, fuzzy, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "sectie-attributen worden niet ondersteund op dit doelsysteem"
-#: varasm.c:1453
+#: varasm.c:1459
#, fuzzy, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "sectie-attributen worden niet ondersteund op dit doelsysteem"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1879
+#: varasm.c:1885
#, fuzzy, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "het gevraagde alignment voor %s is groter dan het geïmplementeerde aligment van %d."
-#: varasm.c:4566
+#: varasm.c:4603
#, fuzzy, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "initializer voor integerwaarde is te ingewikkeld"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "initializer voor floating-point waarde is geen floating-point constante"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "ongeldige beginwaarde voor member %qs"
-#: varasm.c:5224
+#: varasm.c:5261
#, fuzzy, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "de zwakke declaratie van %qs moet publiek zijn"
-#: varasm.c:5226
+#: varasm.c:5263
#, fuzzy, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "de zwakke declaratie van %qs moet publiek zijn"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "enkel zwakke aliasen worden in deze configuratie ondersteund"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
-#: varasm.c:5751
+#: varasm.c:5788
#, fuzzy, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "kan klasse '%s' niet vinden"
-#: varasm.c:5765
+#: varasm.c:5802
#, fuzzy, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "kan klasse '%s' niet vinden"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, fuzzy, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
@@ -21230,8 +21269,8 @@ msgstr "%qD is niet gedefinieerd buiten een functie"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "stringlengte %qd is groter dan %qd, de lengte die ISO C%d compilers moeten ondersteunen"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "overflow in constante expressie"
@@ -21447,7 +21486,7 @@ msgstr "pointer naar lid-functie gebruikt in rekensom"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "het adres van %qD, zal altijd %<true%> zijn"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "gebruik liefst haakjes rond toewijzingen die als waarheid gebruikt worden"
@@ -21873,40 +21912,40 @@ msgstr "het %qs attribuut wordt genegeerd voor %qs"
msgid "invalid vector type for attribute %qE"
msgstr "ongeldig vector-type voor attribuut %qs"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "het aantal componenten van de vector is geen macht van twee"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "nonnull attribuut zonder argumenten gebruikt voor een niet-prototype"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "argument van %<nonnull%> heeft een ongeldig operandnummer (argument %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "argument van %<nonnull%> heeft een operandnummer dat buiten bereik is (argument %lu, operand %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "argument van %<nonnull%> verwijst naar niet-pointer operand (argument %lu, operand %lu)"
@@ -21948,12 +21987,12 @@ msgstr "het %qs attribuut vereist prototypes met benoemde argumenten"
msgid "%qE attribute only applies to variadic functions"
msgstr "het %qs attribuut is enkel van toepassing op variadische functies"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "gevraagde positie is geen integerconstante"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "gevraagde positie is kleiner dan nul"
@@ -22013,7 +22052,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, fuzzy, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "poging om het adres te nemen van lid %qs van een bitveld-structure"
@@ -22766,82 +22805,82 @@ msgid "ignoring #pragma %s %s"
msgstr "pragma wordt genegeerd: %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "misplaatste '\\' in programma"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, fuzzy, gcc-internal-format
msgid "stray %qs in program"
msgstr "misplaatste '\\' in programma"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "niet-beëindigde string- of karakterconstante"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, fuzzy, gcc-internal-format
msgid "stray %qc in program"
msgstr "misplaatste '\\' in programma"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, fuzzy, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "misplaatste '\\' in programma"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr ""
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr ""
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "integerconstante is zo groot dat hij unsigned is"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr ""
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, fuzzy, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "floating-point getal overschrijdt het bereik van een %<float%>"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, fuzzy, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "floating-point constante verkeerd gebruikt"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr ""
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "traditionele C verwerpt het aaneenplakken van stringconstantes"
@@ -22861,7 +22900,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "ongeldig vector-type voor attribuut %qs"
@@ -22871,23 +22910,23 @@ msgstr "ongeldig vector-type voor attribuut %qs"
msgid "%qE is not initialized"
msgstr "parameter %qD krijgt beginwaarde"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, fuzzy, gcc-internal-format
msgid "missing controlling predicate"
msgstr "Ongeldig token in expressie"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "Ongeldig token in expressie"
# moet beter kunnen...
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
msgid "missing increment expression"
msgstr "toewijzingsonderdrukking"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
msgid "invalid increment expression"
msgstr "Ongeldig token in expressie"
@@ -23756,7 +23795,7 @@ msgstr "L%d cache-latency niet gekend voor %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "slechte waarde %qs voor -mmeroy-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23935,53 +23974,53 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
msgid "argument must be a constant"
msgstr "het argument van %<asm%> is geen constante string"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr ""
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -23996,97 +24035,113 @@ msgstr "variable met beginwaarde %qs is als dllimport aangeduid"
msgid "static variable %q+D is marked dllimport"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-G and -static are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-G en -static sluiten elkaar uit"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr "functie geeft geen string-type terug"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr "registervariabele %qs gebruikt in geneste functie"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr "de zwakke declaratie van %qs moet publiek zijn"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr ""
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr ""
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, fuzzy, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "Enkel variabelen met beginwaarde kunnen in het 8-bit gebied geplaatst worden."
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr "Enkel variabelen met beginwaarde kunnen in het 8-bit gebied geplaatst worden."
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, fuzzy, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "-pipe wordt niet ondersteund"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr "ongeldige registernaam voor %qs"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr "herhalings-aantal is geen integerconstante"
@@ -24206,69 +24261,69 @@ msgstr "ongeldige operand voor %N-code"
msgid "internal error: bad register: %d"
msgstr "formaatstring niet beëindigd"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
# mja, is nogal technisch - ikke nie snap nie
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, fuzzy, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "onbekende 'unspec' relocatie"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-mregparm=%d ligt niet tussen 0 en %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, fuzzy, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
msgid "unknown src"
msgstr "onbekende machine-modus %qs"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
msgid "unknown dest"
msgstr "onbekende machine-modus %qs"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr ""
@@ -24427,414 +24482,414 @@ msgstr "kan bestand '%s' niet openen"
msgid "can%'t set position in PCH file: %m"
msgstr "kan bestand '%s' niet openen"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "slechte waarde (%s) voor de -march= optie"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, fuzzy, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "ISO C ondersteunt de %<%c%> lengte-optie niet"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr "ISO C ondersteunt de %<%c%> lengte-optie niet"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "afrondingsmodus niet ondersteund voor VAX-floats"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, fuzzy, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "doel-CPU ondersteunt geen interworking"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "slechte waarde (%s) voor de -march= optie"
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -march= switch"
msgid "bad value (%s) for %sarch=%s %s"
msgstr "slechte waarde (%s) voor de -march= optie"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d ligt niet tussen 0 en %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "sectie-attributen worden niet ondersteund voor dit doelsysteem"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred_stack_boundary=%d ligt niet tussen 2 en 31"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred_stack_boundary=%d ligt niet tussen 2 en 31"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, fuzzy, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "pointer naar functie gebruikt in rekensom"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, fuzzy, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "pointer naar functie gebruikt in rekensom"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "onbekende machine-modus %qs"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, fuzzy, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "herhalings-aantal is geen integerconstante"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "kan het %qs attribuut niet instellen na een definitie"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, fuzzy, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, fuzzy, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, fuzzy, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, fuzzy, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "het %qs attribuut wordt genegeerd voor niet-class-types"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "conflicterende types voor ingebouwde functie %qs"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "conflicterende types voor ingebouwde functie %qs"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 does not support flexible array members"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "ISO C90 ondersteunt geen flexibele array-leden"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid operand code '%c'"
msgid "non-integer operand used with operand code '%c'"
msgstr "ongeldige operand voor '%c'"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, fuzzy, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "%<defined%> zonder een naam"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "het argument van %<asm%> is geen constante string"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, fuzzy, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "-pg en -fomit-frame-pointer zijn niet compatibel"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "het %qs attribuut wordt genegeerd"
@@ -24905,19 +24960,19 @@ msgstr "sectie-attribuut kan niet opgegeven worden voor lokale variabelen"
msgid "%qE attribute requires a string constant argument"
msgstr "herhalings-aantal is geen integerconstante"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "leeg bereik"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
msgid "version attribute is not a string"
msgstr "het argument van %<asm%> is geen constante string"
@@ -24985,7 +25040,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "%Jsectie-attributen worden niet ondersteund voor dit doelsysteem"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "herhalings-aantal is geen integerconstante"
@@ -25042,7 +25097,7 @@ msgstr "%J%<noinline%> attribuut gegeven aan ingebouwde functie %qD"
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, fuzzy, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "-pipe wordt niet ondersteund"
@@ -25569,27 +25624,27 @@ msgstr ""
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, fuzzy, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "ISO C ondersteunt de %<%c%> lengte-optie niet"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr ""
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, fuzzy, gcc-internal-format
msgid "-g option disabled"
msgstr "ingeschakelde opties: "
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -26022,83 +26077,83 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, fuzzy, gcc-internal-format
msgid "stack frame too large"
msgstr "bestand %qs is te groot"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid use of '%%%c'"
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "ongeldig gebruik van '%%%c'"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr ""
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "spec '%s' is invalid"
msgid "%s\"%s\"%s is invalid"
@@ -26153,12 +26208,12 @@ msgstr "-pipe wordt niet ondersteund"
msgid "-m64 not supported in this configuration"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr ""
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr ""
@@ -26175,64 +26230,64 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "slechte waarde (%s) voor optie -mcpu"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "slechte waarde (%s) voor optie -msdata"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-fpic en -mapcs-reent zijn niet compatibel"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-fpic en -mapcs-reent zijn niet compatibel"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-mbsd en -mxopen zijn niet compatibel"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, fuzzy, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-fpic en -mapcs-reent zijn niet compatibel"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-fpic en -mapcs-reent zijn niet compatibel"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fpic en -mapcs-reent zijn niet compatibel"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr ""
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, fuzzy, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-pipe wordt niet ondersteund"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "alias-definities worden niet ondersteund in deze configuratie; genegeerd"
@@ -26342,53 +26397,53 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs wordt niet ondersteund door dit sub-doelsysteem"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "sectie-attributen worden niet ondersteund op dit doelsysteem"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "herhalings-aantal is geen integerconstante"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "asm-template is geen stringconstante"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -26744,39 +26799,39 @@ msgstr ""
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "het %qs attribuut wordt genegeerd"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "het %qs attribuut vereist prototypes met benoemde argumenten"
# goede vertaling van variadic?
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "het %qs attribuut is enkel van toepassing op variadische functies"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "het %qs attribuut wordt genegeerd"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "ongeldig vector-type voor attribuut %qs"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "ongeldig vector-type voor attribuut %qs"
@@ -26792,7 +26847,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -27082,7 +27137,7 @@ msgid "invalid conversion from %qT to %qT"
msgstr "ongeldige registernaam voor %qs"
# Is the %s the argument, or is it 'of' the argument?
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr "ongeldig type-argument %qs"
@@ -27093,191 +27148,191 @@ msgid "converting to %qT from initializer list would use explicit constructor %q
msgstr ""
# Is the %s the argument, or is it 'of' the argument?
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr "ongeldig type-argument %qs"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "niet-constante beginwaarde voor %qs"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, fuzzy, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "niet-constante beginwaarde voor %qs"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:5900
+#: cp/call.c:5904
#, fuzzy, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "niet-constante beginwaarde voor %qs"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr ""
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr ""
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr ""
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "herdefinitie van %<struct %s%>"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "argumenten aan macro %qs gegeven"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, fuzzy, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %<noreturn%> attribuut"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:6483
+#: cp/call.c:6493
#, fuzzy, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qs is geen bestand, pipe of tty"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, fuzzy, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "herdeclaratie van %qs"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
msgid " in call to %q+D"
msgstr "kan oproep van %qs niet inline maken"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:7091
+#: cp/call.c:7101
#, fuzzy, gcc-internal-format
msgid "call to non-function %qD"
msgstr "kan functie %<main%> niet inline maken"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "Teveel argumenten in oproep van %qs"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, fuzzy, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "Teveel argumenten in oproep van %qs"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr ""
-#: cp/call.c:8053
+#: cp/call.c:8068
#, fuzzy, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "doorgeven van argument %d van %qs"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, fuzzy, gcc-internal-format
msgid " in call to %qD"
msgstr "kan oproep van %qs niet inline maken"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:8113
+#: cp/call.c:8128
#, fuzzy, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "parameternaam ontbreekt uit parameterlijst"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 1: %q+#F"
msgstr "kandidaat is: %+#D"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 2: %q+#F"
msgstr "kandidaat is: %+#D"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr ""
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr ""
@@ -27488,219 +27543,219 @@ msgstr "veld %qs als een functie gedeclareerd"
msgid "field %q+D invalidly declared method type"
msgstr "bitveld %qs heeft een ongeldig type"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, fuzzy, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "het %<%s%> attribuut wordt genegeerd voor %qs"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr ""
-#: cp/class.c:3307
+#: cp/class.c:3308
#, fuzzy, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%s heeft geen benoemde leden"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr ""
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr ""
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3998
+#: cp/class.c:3999
#, fuzzy, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "geen beginwaarde voor variant-veld %qs"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr "%qs is geen iterator"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
msgid " %q+T has a non-trivial destructor"
msgstr "veld %qs heeft een onvolledig type"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr "veld %qs heeft een onvolledig type"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr "%qs is geen static veld"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr ""
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr ""
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr ""
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, fuzzy, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "herdefinitie van %qs"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, fuzzy, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "veld %qs heeft een onvolledig type"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr "%qs is smaller dan waarden van zijn type"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:6757
+#: cp/class.c:6758
#, fuzzy, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "taal %s niet herkend"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr ""
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr ""
-#: cp/class.c:7021
+#: cp/class.c:7022
#, fuzzy, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "herhaald lid %qs"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr ""
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr ""
@@ -27710,12 +27765,12 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D"
msgstr "herdeclaratie van %qs"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr ""
@@ -27735,7 +27790,7 @@ msgstr "parameter %qs wijst naar een onvolledig type"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr ""
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "array subscript is geen integer"
@@ -27765,7 +27820,7 @@ msgstr "ongeldige registernaam voor %qs"
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "cast laat qualifiers van doeltype van pointer vallen"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, fuzzy, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "kan niet derefereren, is geen pointer."
@@ -28179,7 +28234,7 @@ msgstr "eerdere declaratie van %qs"
msgid "declaration of template %q#D"
msgstr "herdeclaratie van %<enum %s%>"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, fuzzy, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "sectie van %qs geeft een conflict met een eerdere declaratie"
@@ -28231,7 +28286,7 @@ msgstr "eerdere declaratie van %qs"
msgid "%q+#D previously defined here"
msgstr "%qs tevoren hier gedefinieerd"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "%qs tevoren hier gedefinieerd"
@@ -28349,7 +28404,7 @@ msgstr "%Jdeclaratie van %qD als thread-local volgt declaratie als niet-thread-l
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "%Jdeclaratie van %qD als niet-thread-local volgt declaratie als thread-local"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "herdeclaratie van %qs"
@@ -28420,7 +28475,7 @@ msgstr "er is geen label dat %qs heet"
msgid "%qD is not a type"
msgstr "%qs is geen iterator"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, fuzzy, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "macro %qs gebruikt zonder argumenten"
@@ -28551,124 +28606,124 @@ msgstr "type krijgt standaardwaarde %<int%> in de declaratie van %qs"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<register%> in lege declaratie op bestandsniveau"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr "eerdere declaratie van %qs"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, fuzzy, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
#| msgid "typedef %qD is initialized (use __typeof__ instead)"
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD krijgt beginwaarde (gebruik beter __typeof__)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "de declaratie van %qs is %<extern%> en heeft een beginwaarde"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, fuzzy, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "functie-definitie als %<auto%> gedeclareerd"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, fuzzy, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%qs is geen static veld"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, fuzzy, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "dubbele beginwaarde"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, fuzzy, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr "label %qs gebruikt maar niet gedefinieerd"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "de zwakke declaratie van %qs moet aan de definitie voorafgaan"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, fuzzy, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "variabele %qs heeft beginwaarde, maar een onvolledig type"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, fuzzy, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "elementen van array %qs hebben een onvolledig type"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "de declaratie van %qs is %<extern%> en heeft een beginwaarde"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, fuzzy, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "parameter %qs heeft een onvolledig type"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, fuzzy, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qs als ander soort symbool geherdeclareerd"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, fuzzy, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "ISO C++ staat het gebruik van %<varargs.h%> niet toe"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, fuzzy, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "beginwaarde legt grootte van %qs niet vast"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, fuzzy, gcc-internal-format
msgid "array size missing in %qD"
msgstr "array-grootte ontbreekt in %qs"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, fuzzy, gcc-internal-format
msgid "zero-size array %qD"
msgstr "array %qs heeft grootte die negatief of 0 is"
@@ -28676,389 +28731,389 @@ msgstr "array %qs heeft grootte die negatief of 0 is"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "opslaggrootte van %qs is onbekend"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "opslaggrootte van %qs is niet constant"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr ""
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, fuzzy, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "niet-constante beginwaarde voor %qs"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr ""
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, fuzzy, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "array krijgt niet-constante array-expressie als beginwaarde"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, fuzzy, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "union heeft geen lid dat %qs heet"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, fuzzy, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "ongeldige beginwaarde voor veld %qs"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, fuzzy, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "accolades rond scalaire beginwaarde"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, fuzzy, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "accolades ontbreken rond beginwaarde"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "elementen van array %qs hebben een onvolledig type"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, fuzzy, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "ISO C90 verbiedt het gebruik van samengestelde expressies als lvalues"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr "%qs heeft een onvolledig type"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, fuzzy, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "overtollige elementen in beginwaarde van union"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, fuzzy, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "Onbeëindigde stringconstante"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "(dicht bij initialisatie van %qs)"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, fuzzy, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "eerdere declaratie van %qs"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr ""
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, fuzzy, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "overflow in constante expressie"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, fuzzy, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr "%qs is geen static veld"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, fuzzy, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "typedef %qs krijgt beginwaarde alsof het een variabele is"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr "beginwaarde legt grootte van %qs niet vast"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
msgid "array size missing in %qT"
msgstr "array-grootte ontbreekt in %qs"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
msgid "zero-size array %qT"
msgstr "array %qs heeft grootte die negatief of 0 is"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr ""
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr ""
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr ""
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, fuzzy, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "veld %qs als een functie gedeclareerd"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, fuzzy, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%qs gedeclareerd als een functie die een functie teruggeeft"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, fuzzy, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, fuzzy, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, fuzzy, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "POS mag niet opgegeven worden voor een lijst van veld-declaraties"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, fuzzy, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "ongeldig gebruik van een void-expressie"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr ""
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, fuzzy, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "eerdere declaratie van %qs"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, fuzzy, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
msgid "literal operator with C linkage"
msgstr "conflicterende declaraties van %qs"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "Ongeldige optie %qs"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr ""
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, fuzzy, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "functie-definitie als %<auto%> gedeclareerd"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr "functie-definitie als %<auto%> gedeclareerd"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "%qs tevoren hier gedefinieerd"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, fuzzy, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
@@ -29067,901 +29122,901 @@ msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "(dicht bij initialisatie van %qs)"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "(dicht bij initialisatie van %qs)"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "(dicht bij initialisatie van %qs)"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "(dicht bij initialisatie van %qs)"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "(dicht bij initialisatie van %qs)"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, fuzzy, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "grootte van array %qs is van een niet-integraal type"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, fuzzy, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "grootte van array %qs is van een niet-integraal type"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, fuzzy, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "grootte van array %qs is negatief"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, fuzzy, gcc-internal-format
msgid "size of array is negative"
msgstr "grootte van array %qs is negatief"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ verbiedt array %qs met lengte 0"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ verbiedt array %qs met lengte 0"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, fuzzy, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "grootte van array %qs is van een niet-integraal type"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, fuzzy, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "ongeldig gebruik van een void-expressie"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ verbiedt array %qs van variabele lengte"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ verbiedt array %qs van variabele lengte"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of %<auto%>"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of voids"
msgid "declaration of %qD as array of void"
msgstr "%qs wordt gedeclareerd als een array van voids"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
msgid "creating array of void"
msgstr "doorgeven van argument %d van %qs"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of functions"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
msgid "creating array of functions"
msgstr "doorgeven van argument %d van %qs"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of references"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
msgid "creating array of references"
msgstr "doorgeven van argument %d van %qs"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of function members"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "creating array of function members"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, fuzzy, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "registernaam niet opgegeven voor %qs"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "ongeldig gebruik van %<restrict%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "ongeldig gebruik van het niet gedefinieerde type %<%s %s%>"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "ongeldig gebruik van het niet gedefinieerde type %<%s %s%>"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%qs is geen iterator"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, fuzzy, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "iterator %qs is van een afgeleid type"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, fuzzy, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "functie-definitie als %<register%> gedeclareerd"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "herdeclaratie van %qs"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr "de declaratie van %qs verbergt een parameter"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, fuzzy, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "twee of meer data types in de declaratie van %qs"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "conflicterende declaraties van %qs"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ verbiedt lid-declaraties zonder leden"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_saveregs not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_saveregs wordt niet ondersteund door dit doelsysteem"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ ondersteunt %<long long%> niet"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "'long', 'short', 'signed' of 'unsigned' ongeldig voor %qs"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, fuzzy, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "zowel 'signed' als 'unsigned' opgegeven voor %qs"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "'complex' ongeldig voor %qs"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, fuzzy, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "'complex' ongeldig voor %qs"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, fuzzy, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "'complex' ongeldig voor %qs"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "'long', 'short', 'signed' of 'unsigned' ongeldig voor %qs"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "'long', 'short', 'signed' of 'unsigned' ongeldig voor %qs"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, fuzzy, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "'long' of 'short' opgegeven bij 'char' voor %qs"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, fuzzy, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "zowel 'long' als 'short' opgegeven voor %qs"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "'long', 'short', 'signed' of 'unsigned' ongeldig voor %qs"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, fuzzy, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "ongeldig gebruik van 'long', 'short', 'signed' of 'unsigned' voor %qs"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, fuzzy, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "'complex' ongeldig voor %qs"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%qs is geen iterator"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter %qs"
msgid "storage class specified for template parameter %qs"
msgstr "opslagklasse opgegeven voor parameter %qs"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "POS mag niet opgegeven worden voor een lijst van veld-declaraties"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, fuzzy, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, fuzzy, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "opslagklasse opgegeven voor parameter %qs"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "opslagklasse opgegeven voor parameter %qs"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, fuzzy, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "top-level declaratie van %qs specifieert %<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr ""
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs gedeclareerd als een functie die een functie teruggeeft"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs gedeclareerd als een functie die een array teruggeeft"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, fuzzy, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, fuzzy, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "structure heeft geen lid dat %qs heet"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "structure heeft geen lid dat %qs heet"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "ingebouwde functie %qs kan niet uitgeschakeld worden"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr ""
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "kan niet derefereren, is geen pointer."
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "kan niet derefereren, is geen pointer."
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, fuzzy, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr "zowel %<short%> als %<double%> opgegeven bij declaratie"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, fuzzy, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "parameter %qs heeft enkel een voorwaartse declaratie"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, fuzzy, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "kan niet derefereren, is geen pointer."
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "kan niet derefereren, is geen pointer."
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, fuzzy, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "kan niet derefereren, is geen pointer."
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, fuzzy, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "omvang van array %qs is te groot"
# Ik weet het, 'alleen-lezen' is lelijk, maar het is de min of meer geijkte vertaling.
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, fuzzy, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "argument %d is alleen-lezen"
# Ik weet het, 'alleen-lezen' is lelijk, maar het is de min of meer geijkte vertaling.
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, fuzzy, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "argument %d is alleen-lezen"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr ""
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, fuzzy, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, fuzzy, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, fuzzy, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, fuzzy, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, fuzzy, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr "%Jtypedef %qD als %<inline%> gedeclareerd"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, fuzzy, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "de terugkeerwaarde van een functie kan geen funtie zijn"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "de terugkeerwaarde van een functie kan geen funtie zijn"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, fuzzy, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "twee types opgegeven in één lege declaratie"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, fuzzy, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "POS mag niet opgegeven worden voor een lijst van veld-declaraties"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, fuzzy, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "niet-beëindigde parameterlijst in %<#define%>"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr ""
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, fuzzy, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "%s laat qualifiers van doeltype van pointer vallen"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, fuzzy, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "de declaratie van %qs verbergt een globale declaratie"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, fuzzy, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "attributen genegeerd in declarator van parameter-array"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "%Jparameter %qD als %<inline%> gedeclareerd"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "variabele %qs als inline gedeclareerd"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, fuzzy, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "ongeldig gebruik van %<restrict%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "impliciete declaratie van functie %qs"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, fuzzy, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "veld %qs als een functie gedeclareerd"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, fuzzy, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "eerdere impliciete declaratie van `%s'"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "de declaratie van %qs verbergt een parameter"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr ""
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "eerdere impliciete declaratie van `%s'"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, fuzzy, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "veld %qs heeft een onvolledig type"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, fuzzy, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "parameter %qs heeft een onvolledig type"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, fuzzy, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr "impliciete declaratie van functie %qs"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, fuzzy, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qs mag niet als alleen-lezen gedeclareerd worden"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "%qs is geen static veld"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, fuzzy, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, fuzzy, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, fuzzy, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "globale registervariabele volgt op een functiedefinitie"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, fuzzy, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "het %qs attribuut wordt genegeerd voor niet-class-types"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr ""
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, fuzzy, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "de zwakke declaratie van %qs moet aan de definitie voorafgaan"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs krijgt beginwaarde en is als %<extern%> gedeclareerd"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs heeft zowel %<extern%> als een beginwaarde"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, fuzzy, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "eerste argument van %qs zou een %<int%> moeten zijn"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, fuzzy, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "eerste argument van %qs zou een %<int%> moeten zijn"
# Is the %s the argument, or is it 'of' the argument?
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "ongeldig type-argument %qs"
# Is the %s the argument, or is it 'of' the argument?
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, fuzzy, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "ongeldig type-argument %qs"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "%Jparameter %qD heeft een onvolledig type"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, fuzzy, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "parameter %qs als void gedeclareerd"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr ""
@@ -29981,168 +30036,168 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, fuzzy, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, fuzzy, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, fuzzy, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, fuzzy, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, fuzzy, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, fuzzy, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, fuzzy, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, fuzzy, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, fuzzy, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, fuzzy, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, fuzzy, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, fuzzy, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, fuzzy, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "incompatibel type voor argument %d van %qs"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr "incompatibel type voor argument %d van %qs"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, fuzzy, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "beginwaarde ontbreekt"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "dit is een eerdere declaratie"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, fuzzy, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "dit is een eerdere declaratie"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -30154,88 +30209,88 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, fuzzy, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, fuzzy, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "grootte van %qs is %u bytes"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, fuzzy, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "sectie van %qs geeft een conflict met een eerdere declaratie"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, fuzzy, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "ingebouwde functie %qs als niet-functie gedeclareerd"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "eerdere declaratie van %qs"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, fuzzy, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "overtollige elementen in beginwaarde van union"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, fuzzy, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "%qs is geen typedef of ingebouwd type"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, fuzzy, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "herhaalde case-waarde"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
msgid "previous definition here"
msgstr "eerdere definitie van %qs"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -30244,74 +30299,74 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "enumeratiewaarde voor %qE is geen integerconstante"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
#| msgid "ISO C restricts enumerator values to range of %<int%>"
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "ISO C beperkt enumeratiewaarden tot het bereik van het %<int%> type"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, fuzzy, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "overflow in enumeratiewaarden"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for %qE is not an integer constant"
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "enumeratiewaarde voor %qE is geen integerconstante"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, fuzzy, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "type van teruggeefwaarde is onvolledig"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "teruggeeftype is onvolledig"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, fuzzy, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "%Jgeen eerdere declaratie voor %qD"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
msgid "invalid function declaration"
msgstr "herhaalde label-declaratie %qs"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, fuzzy, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "parameter %qs als void gedeclareerd"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr "label %qs gedefinieerd maar niet gebruikt"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, fuzzy, gcc-internal-format
msgid "invalid member function declaration"
msgstr "herhaalde label-declaratie %qs"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, fuzzy, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "kan klasse '%s' niet vinden"
@@ -30351,7 +30406,7 @@ msgstr ""
msgid "deleting %qT is undefined"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, fuzzy, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "herdeclaratie van %qs"
@@ -30613,7 +30668,7 @@ msgstr ""
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "grootte van %qs is %u bytes"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, fuzzy, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qs is geen bestand, pipe of tty"
@@ -30920,7 +30975,7 @@ msgstr "%qs is geen bestand, pipe of tty"
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%qs is geen iterator"
@@ -31006,67 +31061,67 @@ msgstr "niet-constante array-index in beginwaarde"
msgid "parenthesized initializer in array new"
msgstr "attributen genegeerd in declarator van parameter-array"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr ""
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "kan %s niet vinden"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr ""
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr ""
@@ -31127,42 +31182,42 @@ msgstr ""
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -31248,58 +31303,58 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "lege declaratie"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr ""
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "niet-beëindigde parameterlijst in %<#define%>"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "%<%.*s%> is niet gedefinieerd"
# Is the %s the argument, or is it 'of' the argument?
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "ongeldig type-argument %qs"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "sectie van %qs geeft een conflict met een eerdere declaratie"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+#D"
msgstr "eerdere declaratie van %qs"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, fuzzy, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "herdeclaratie van %qs"
@@ -31310,265 +31365,265 @@ msgstr "herdeclaratie van %qs"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, fuzzy, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "herdeclaratie van %qs"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, fuzzy, gcc-internal-format
msgid "as %qD"
msgstr "%s voor %qs"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "%Jherdeclaratie van %qD zonder specifieke linkage"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
msgid "due to different exception specifications"
msgstr "%qs gedeclareerd als een functie die een functie teruggeeft"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, fuzzy, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "type-conflict met eerdere externe declaratie"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, fuzzy, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "eerdere externe declaratie van %qs"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "externe declaratie van %qs komt niet overeen met de globale declaratie"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, fuzzy, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "herhaalde label-declaratie %qs"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "de declaratie van %qs verbergt een parameter"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr "de declaratie van %qs verbergt een parameter"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "de declaratie van %qs verbergt een parameter"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "de declaratie van %qs verbergt een parameter"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, fuzzy, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "de declaratie van %qs verbergt een parameter"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr ""
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr ""
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr ""
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr ""
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, fuzzy, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%d constructor(s) gevonden\n"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, fuzzy, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "sectie van %qs geeft een conflict met een eerdere declaratie"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, fuzzy, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "eerdere declaratie van %qs"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, fuzzy, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "conflicterende declaraties van %qs"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, fuzzy, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qs is geen iterator"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, fuzzy, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, fuzzy, gcc-internal-format
msgid "%qD not declared"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, fuzzy, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%qs is geen iterator"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%qs is geen iterator"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%d constructor(s) gevonden\n"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, fuzzy, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, fuzzy, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, fuzzy, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "eerdere impliciete declaratie van `%s'"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "herhalings-aantal is geen integerconstante"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, fuzzy, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "attribuut-commando %qs wordt genegeerd"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, fuzzy, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, fuzzy, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, fuzzy, gcc-internal-format
msgid " %qE"
msgstr "%s voor %qs"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -31678,7 +31733,7 @@ msgstr ""
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "conflicterende declaraties van %qs"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, fuzzy, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qs is geen iterator"
@@ -31698,7 +31753,7 @@ msgstr "ongeldig karakter in naam van macro-parameter"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "overflow in constante expressie"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -31841,718 +31896,718 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "globale registervariabele volgt op een functiedefinitie"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr ""
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "lege declaratie"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "sectie-attributen worden niet ondersteund voor dit doelsysteem"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ verbiedt accolade-groepen in expressies"
# 'braced-group'? Wie schrijft verdorie die foutmeldingen?
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "accolade-groep in expressie enkel toegestaan binnen een functie"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
msgid "expected primary-expression"
msgstr "ongeldige waarheidsexpressie"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, fuzzy, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "overbodige herdeclaratie van %qs in zelfde bereik"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
msgid "expected id-expression"
msgstr "ongeldige waarheidsexpressie"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, fuzzy, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "%qs is geen iterator"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "de declaratie van %qs verbergt een parameter"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, fuzzy, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "parameter %qs heeft enkel een voorwaartse declaratie"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
msgid "expected unqualified-id"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "%qs is smaller dan waarden van zijn type"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, fuzzy, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qs is geen iterator"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ verbiedt het gebruik van samengestelde expressies als lvalues"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qs is smaller dan waarden van zijn type"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, fuzzy, gcc-internal-format
msgid "invalid use of %qD"
msgstr "ongeldig gebruik van %<restrict%>"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr "%qs is geen bestand, pipe of tty"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ staat het gebruik van %<varargs.h%> niet toe"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "gebruik liefst haakjes rond && binnen ||"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ staat het gebruik van %<varargs.h%> niet toe"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, fuzzy, gcc-internal-format
msgid "expected end of capture-list"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ staat het gebruik van %<varargs.h%> niet toe"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr "%s van alleen-lezen variabele %qs"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
msgid "%q+#D declared here"
msgstr "%qs tevoren hier gedeclareerd"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "argumenten aan macro %qs gegeven"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
msgid "expected labeled-statement"
msgstr "ongeldige beginwaarde"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, fuzzy, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case-label niet in een switch-statement"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%d constructor(s) gevonden\n"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr ""
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
msgid "expected selection-statement"
msgstr "herdeclaratie van %qs"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr "%<%.*s%> is niet gedefinieerd"
# vertaling voor 'statement'?
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "expressie-statement heeft onvolledig type"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
msgid "expected iteration-statement"
msgstr "herdeclaratie van %qs"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ verbiedt geneste functies"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
msgid "expected jump-statement"
msgstr "ongeldige beginwaarde"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, fuzzy, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "argument-formaat opgegeven voor niet-functie %qs"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr "herdefinitie van %<union %s%>"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, fuzzy, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "%qs mag niet als alleen-lezen gedeclareerd worden"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "ongeldige linker operand van %s"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr "types in voorwaardelijke expressie komen niet overeen"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "%s laat qualifiers van doeltype van pointer vallen"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "only constructors take member initializers"
msgstr "niet-constante array-index in beginwaarde"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "ongeldige beginwaarde voor member %qs"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "%Jdeclaratie van %qD als static volgt declaratie als niet-static"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
msgid "expected suffix identifier"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "onverwachte operand"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "niet-beëindigde parameterlijst in %<#define%>"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
msgid "expected template-id"
msgstr "ongeldige beginwaarde"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
msgid "expected %<<%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, fuzzy, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%qs is geen iterator"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr ""
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, fuzzy, gcc-internal-format
msgid "parse error in template argument list"
msgstr "%qs is geen iterator"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
msgid "expected template-name"
msgstr "ongeldige beginwaarde"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, fuzzy, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "parameter %qs heeft enkel een voorwaartse declaratie"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, fuzzy, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr "top-level declaratie van %qs specifieert %<auto%>"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
msgid "expected template-argument"
msgstr "ongeldige beginwaarde"
# Is the %s the argument, or is it 'of' the argument?
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "ongeldig type-argument %qs"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "impliciete declaratie van functie %qs"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "impliciete declaratie van functie %qs"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr ""
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
msgid "expected type specifier"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
msgid "expected template-id for type"
msgstr "herdeclaratie van %qs"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
msgid "expected type-name"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "declaratie declareert niets"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "het %qs attribuut wordt genegeerd voor niet-class-types"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "herhaalde definitie %qs"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "%qs is geen iterator"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr "%qs is geen iterator"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr "herhaalde definitie %qs"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "%qs wordt gedeclareerd als een array van functies"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, fuzzy, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "herdefinitie van %qs"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, fuzzy, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qs is geen iterator"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
msgid "expected namespace-name"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, fuzzy, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "geen eerdere declaratie voor %qs"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, fuzzy, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "globale registervariabele volgt op een functiedefinitie"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
msgid "expected initializer"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
msgid "invalid type in declaration"
msgstr "lege declaratie"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
msgid "initializer provided for function"
msgstr "ingebouwde functie %qs kan niet uitgeschakeld worden"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, fuzzy, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "attributen genegeerd in declarator van parameter-array"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, fuzzy, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "array subscript is geen integer"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "herhaald lid %qs"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "%qs is geen iterator"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "ongeldige beginwaarde voor member %qs"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -32561,248 +32616,248 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
msgid "invalid declarator"
msgstr "herdeclaratie van %qs"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
msgid "expected declarator"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, fuzzy, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qs is geen iterator"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr "herhaald lid %qs"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "onverwachte operand"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "herhaalde case-waarde"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr "herhaalde case-waarde"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "ongeldig gebruik van %<restrict%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "%qs is geen iterator"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
msgid "expected type-specifier"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "%qs is geen iterator"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, fuzzy, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "argumenten aan macro %qs gegeven"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, fuzzy, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "argumenten aan macro %qs gegeven"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ staat het gebruik van %<varargs.h%> niet toe"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ staat het gebruik van %<varargs.h%> niet toe"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
msgid "expected class-name"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "%J%qD als inline gedeclareerd na zijn definitie"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "%J%qD als inline gedeclareerd na zijn definitie"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "conflicterende declaraties van %qs"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr "[kan %s niet vinden]"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "ingebouwde functie %qs als niet-functie gedeclareerd"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "herdeclaratie van %qs"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr ""
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, fuzzy, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "impliciete declaratie van functie %qs"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "parameter %qs heeft enkel een voorwaartse declaratie"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, fuzzy, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "eerdere definitie van %qs"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
msgid "expected class-key"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, fuzzy, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "ingebouwde functie %qs als niet-functie gedeclareerd"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr ""
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "%qs gedeclareerd als een functie die een functie teruggeeft"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "%qs staat niet aan het begin van een declaratie"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "herdeclaratie van %qs"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, fuzzy, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "twee of meer data types in de declaratie van %qs"
@@ -32811,320 +32866,320 @@ msgstr "twee of meer data types in de declaratie van %qs"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, fuzzy, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, fuzzy, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "-pipe wordt niet ondersteund"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, fuzzy, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr "herdeclaratie van %<enum %s%>"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr ""
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "ongeldige linker operand van %s"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "herdeclaratie van %qs"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "impliciete declaratie van functie %qs"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%qs is geen iterator"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "ongeldige linker operand van %s"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> vóór %<extern%> gebruikt"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
msgid "expected %<new%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
msgid "expected %<delete%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
msgid "expected %<return%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
msgid "expected %<extern%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr "ongeldige beginwaarde"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
msgid "expected %<operator%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
msgid "expected %<class%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
msgid "expected %<template%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
msgid "expected %<using%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
msgid "expected %<asm%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
msgid "expected %<try%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
msgid "expected %<catch%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
msgid "expected %<throw%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
msgid "expected %<@try%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, fuzzy, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, fuzzy, gcc-internal-format
msgid "expected %<@throw%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
msgid "expected %<::%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, fuzzy, gcc-internal-format
msgid "expected %<...%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
msgid "expected %<*%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
msgid "expected %<~%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "ongeldige operand van %s"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, fuzzy, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "Ongeldige optie %qs"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "dit is een eerdere declaratie"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, fuzzy, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qs als ander soort symbool geherdeclareerd"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
# Is the %s the argument, or is it 'of' the argument?
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, fuzzy, gcc-internal-format
msgid "file ends in default argument"
msgstr "ongeldig type-argument %qs"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "method attributes must be specified at the end"
msgstr "%Jsectie-attribuut kan niet opgegeven worden voor lokale variabelen"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "ongeldig vector-type voor attribuut %qs"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr ""
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "het %qs attribuut wordt genegeerd voor %qs"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid operand for 'p' modifier"
msgid "invalid type for property"
msgstr "ongeldige operand voor 'p' modifier"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "registervariabele %qs gebruikt in geneste functie"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr ""
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "misvormde #pragma pack"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr ""
@@ -33221,69 +33276,69 @@ msgstr ""
msgid "%qD is not a function template"
msgstr "%qs is geen iterator"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, fuzzy, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "impliciete declaratie van functie %qs"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, fuzzy, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "meerdere opslagklassen in declaratie van %qs"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, fuzzy, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "twee of meer data types in de declaratie van %qs"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, fuzzy, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "impliciete declaratie van functie %qs"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, fuzzy, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qs is meestal een functie"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%<%.*s%> is niet gedefinieerd"
@@ -33296,137 +33351,137 @@ msgstr "%<%.*s%> is niet gedefinieerd"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, fuzzy, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "%qs impliciet als functie gedeclareerd"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, fuzzy, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "geneste functie %qs is als %<extern%> gedeclareerd"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr ""
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
msgid " <anonymous>"
msgstr "<anoniem>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, fuzzy, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "herdeclaratie van %qs"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, fuzzy, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, fuzzy, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
# Ik weet het, 'alleen-lezen' is lelijk, maar het is de min of meer geijkte vertaling.
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, fuzzy, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "argument %d is alleen-lezen"
# Ik weet het, 'alleen-lezen' is lelijk, maar het is de min of meer geijkte vertaling.
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "argument %d is alleen-lezen"
msgstr[1] "argument %d is alleen-lezen"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "de declaratie van %qs is %<extern%> en heeft een beginwaarde"
# Is the %s the argument, or is it 'of' the argument?
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, fuzzy, gcc-internal-format
msgid "no default argument for %qD"
msgstr "ongeldig type-argument %qs"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr ""
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr "argumenten aan macro %qs gegeven"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr ""
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "eerste argument van %qs zou een %<int%> moeten zijn"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr ""
@@ -33434,7 +33489,7 @@ msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, fuzzy, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "%<%s %s%> binnen parameterlijst gedeclareerd"
@@ -33444,76 +33499,76 @@ msgstr "%<%s %s%> binnen parameterlijst gedeclareerd"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, fuzzy, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "herhaalde label-declaratie %qs"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, fuzzy, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "herdefinitie van %<union %s%>"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, fuzzy, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "niet-beëindigde parameterlijst in %<#define%>"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr ""
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, fuzzy, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, fuzzy, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "twee of meer data types in de declaratie van %qs"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "macro %qs gebruikt zonder argumenten"
msgstr[1] "macro %qs gebruikt zonder argumenten"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "eerdere declaratie van %qs"
msgstr[1] "eerdere declaratie van %qs"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, fuzzy, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, fuzzy, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "ongeldige naam %qs"
@@ -33522,333 +33577,333 @@ msgstr "ongeldige naam %qs"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, fuzzy, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "herdefinitie van %<struct %s%>"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
msgid "original definition appeared here"
msgstr "functie-definitie als %<typdef%> gedeclareerd"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr ""
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr "vergelijking tussen pointer en integer"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, fuzzy, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr "%qs neemt ofwel geen, ofwel twee argumenten"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "niet-beëindigde parameterlijst in %<#define%>"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr "-fPIC is niet geldig met -mcoff"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr "variabele %qs als inline gedeclareerd"
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr "%qs is geen bestand, pipe of tty"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr "iterator %qs is van een afgeleid type"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr "niet-beëindigde parameterlijst in %<#define%>"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr "einde van niet-void functie werd bereikt zonder teruggeefwaarde"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr ""
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "eerste argument van %qs zou een %<int%> moeten zijn"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, fuzzy, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, fuzzy, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qs is geen iterator"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr ""
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qs is geen iterator"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qs is geen iterator"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr ""
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, fuzzy, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr "ongeldige beginwaarde voor member %qs"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, fuzzy, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "meerdere parameters hebben de naam %qs"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr ""
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr ""
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr ""
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr ""
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr ""
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr "meerdere parameters hebben de naam %qs"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "types in voorwaardelijke expressie komen niet overeen"
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, fuzzy, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of arguments specified for %qs attribute"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "verkeerd aantal argumenten opgegeven voor het %qs attribuut"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, fuzzy, gcc-internal-format
msgid "provided for %q+D"
msgstr "eerdere grant voor %qs"
# Ik weet het, 'alleen-lezen' is lelijk, maar het is de min of meer geijkte vertaling.
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "argument %d is alleen-lezen"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
msgid "%q#D is not a function template"
msgstr "%qs is geen iterator"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, fuzzy, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "parameter %qs heeft enkel een voorwaartse declaratie"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, fuzzy, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "lege declaratie"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr ""
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr ""
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, fuzzy, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "ongeldig gebruik van het niet gedefinieerde type %<%s %s%>"
@@ -33866,259 +33921,259 @@ msgstr "ongeldig gebruik van het niet gedefinieerde type %<%s %s%>"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
msgid "variable %qD has function type"
msgstr "variabele %qs als inline gedeclareerd"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, fuzzy, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "ongeldige operand voor %p-code"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, fuzzy, gcc-internal-format
msgid "in declaration %q+D"
msgstr "herdeclaratie van %qs"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, fuzzy, gcc-internal-format
msgid "function returning an array"
msgstr "%qs gedeclareerd als een functie die een array teruggeeft"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, fuzzy, gcc-internal-format
msgid "function returning a function"
msgstr "%qs gedeclareerd als een functie die een functie teruggeeft"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, fuzzy, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "pointer naar lid-functie gebruikt in rekensom"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "herhaald lid %qs"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "herhaald lid %qs"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, fuzzy, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "herhaald lid %qs"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, fuzzy, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "herhaald lid %qs"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, fuzzy, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "herhaald lid %qs"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, fuzzy, gcc-internal-format
msgid "creating array of %qT"
msgstr "doorgeven van argument %d van %qs"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, fuzzy, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qs is geen bestand, pipe of tty"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, fuzzy, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qs is smaller dan waarden van zijn type"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, fuzzy, gcc-internal-format
msgid "use of %qs in template"
msgstr "%qs is geen iterator"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "argument %qs komt niet overeen met prototype"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
# 'whitespace' -> 'witruimte'?
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, fuzzy, gcc-internal-format
msgid "using invalid field %qD"
msgstr "ontbrekende witruimte na getal %qs"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "ongeldig gebruik van een void-expressie"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr "%qs is geen iterator"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr "%J%qD als inline gedeclareerd na zijn definitie"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, fuzzy, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qs is geen iterator"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, fuzzy, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qs is geen iterator"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr ""
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "eerste argument van %qs zou een %<int%> moeten zijn"
# Ik weet het, 'alleen-lezen' is lelijk, maar het is de min of meer geijkte vertaling.
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, fuzzy, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "argument %d is alleen-lezen"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, fuzzy, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "beginwaarde-element is niet constant"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, fuzzy, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr "slechte stringconstante"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, fuzzy, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "herhaalde definitie %qs"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "impliciete declaratie van functie %qs"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "%qs is geen static veld"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "impliciete declaratie van functie %qs"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "eerdere impliciete declaratie van %qs"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "herhaalde definitie %qs"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "pointer naar functie gebruikt in aftrekking"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, fuzzy, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "herhaalde definitie %qs"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "impliciete declaratie van functie %qs"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "impliciete declaratie van functie %qs"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "impliciete declaratie van functie %qs"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "pointer naar functie gebruikt in aftrekking"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "herhaalde definitie %qs"
@@ -34130,32 +34185,32 @@ msgstr "herhaalde definitie %qs"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "eerdere impliciete declaratie van %qs"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr ""
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "incompatibel type voor argument %d van %qs"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%qs is geen iterator"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -34164,13 +34219,13 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, fuzzy, gcc-internal-format
#| msgid "unable to emulate %qs"
msgid "unable to deduce %qT from %qE"
msgstr "kan %qs niet nabootsen"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -34362,7 +34417,7 @@ msgstr "ongeldig gebruik van %<this%> op hoogste niveau"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "%s laat qualifiers van doeltype van pointer vallen"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
@@ -34402,444 +34457,444 @@ msgstr "de declaratie van %qs verbergt een symbool uit de parameterlijst"
msgid "invalid definition of qualified type %qT"
msgstr "ongeldig gebruik van het niet gedefinieerde type %<%s %s%>"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, fuzzy, gcc-internal-format
msgid "invalid base-class specification"
msgstr "ongeldige linker operand van %s"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
msgid "%qD is not captured"
msgstr "%qs is geen iterator"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr ""
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, fuzzy, gcc-internal-format
msgid " %q+#D declared here"
msgstr "%qs tevoren hier gedeclareerd"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr ""
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, fuzzy, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "modi in %s expressie komen niet overeen"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, fuzzy, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "modi in %s expressie komen niet overeen"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, fuzzy, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "grootte van %qs is %u bytes"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, fuzzy, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "overflow in constante expressie"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, fuzzy, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "opslaggrootte van %qs is onbekend"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "%qs is geen iterator"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "useless type qualifier in empty declaration"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "nutteloze type-kwalificatie in lege declaratie"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qs is geen bestand, pipe of tty"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "statische variable %qs is als dllimport aangeduid"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "Ongeldige modus voor gen_tst_reg"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "%Jparameter %u heeft een onvolledig type"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr ""
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "%Jdeclaratie van %qD als niet-static volgt declaratie als static"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "modi in %s expressie komen niet overeen"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "einde van niet-void functie werd bereikt zonder teruggeefwaarde"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr "%qs is geen iterator"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%J%qD is gewoonlijk een niet-static funtie"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "ingebouwde functie %qs als niet-functie gedeclareerd"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr "kan functie %<main%> niet inline maken"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "overflow in constante expressie"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
msgid "%qD used before its definition"
msgstr "%J%qD werd voor haar definitie gebruikt zonder protoype"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr ""
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr ""
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "overflow in constante expressie"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
msgid "array subscript out of bound"
msgstr "array subscript is geen integer"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "overflow in constante expressie"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "overflow in constante expressie"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "grootte van array %qs is van een niet-integraal type"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "array-index in beginwaarde van niet-array"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
msgid "%q#D is not const"
msgstr "%qs is geen iterator"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
msgid "%q#D is volatile"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "overflow in constante expressie"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "%<%.*s%> is niet gedefinieerd"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "%qs is smaller dan waarden van zijn type"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "overflow in constante expressie"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "beginwaarde-element is niet constant"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "ongeldige waarheidsexpressie"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr "ongeldig gebruik van een void-expressie"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "beginwaarde-element is niet constant"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "ongeldig gebruik van een void-expressie"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "niet-constante array-index in beginwaarde"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unexpected operand"
msgid "unexpected AST of kind %s"
msgstr "onverwachte operand"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "kan niet derefereren, is geen pointer."
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, fuzzy, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "het %qs attribuut heeft enkel betekenis voor functies"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, fuzzy, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "sectie-attributen worden niet ondersteund op dit doelsysteem"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -34929,454 +34984,459 @@ msgstr "ISO C++ verbiedt het adres van een gecaste expressie"
msgid "invalid use of non-static member function"
msgstr "%<this%> is niet beschikbaar in static member-funties"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr ""
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr ""
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, fuzzy, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "ongeldig gebruik van onvolledige typedef %qs"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, fuzzy, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ongeldig gebruik van onvolledige typedef %qs"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ongeldig gebruik van onvolledige typedef %qs"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "argument %qs komt niet overeen met prototype"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, fuzzy, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%qs is geen bestand, pipe of tty"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, fuzzy, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qs is geen bestand, pipe of tty"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, fuzzy, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "union heeft geen lid dat %qs heet"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, fuzzy, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qs is meestal een functie"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, fuzzy, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qs is geen iterator"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "ongeldig gebruik van array die geen lvalue is"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "ongeldig gebruik van array die geen lvalue is"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "ongeldig gebruik van array die geen lvalue is"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "subscript ontbreekt in array-referentie"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ verbiedt het gebruik van subscripts bij een array die geen lvalue is"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, fuzzy, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "subscript ontbreekt in array-referentie"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "waarde met subscript is noch een array, noch een pointer"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, fuzzy, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "array-grootte ontbreekt in %qs"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ verbiedt accolade-groepen in expressies"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, fuzzy, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "veld %qs als een functie gedeclareerd"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "te veel argumenten voor %s %q+#D"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "te weinig argumenten voor functie %qs"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr "te veel argumenten voor functie %qE"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr "te weinig argumenten voor functie %qE"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr "te veel argumenten voor functie %qE"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr "te weinig argumenten voor functie %qE"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "te veel argumenten voor %s %q+#D"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "te weinig argumenten voor functie %qs"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "te veel argumenten voor functie"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "te weinig argumenten voor functie"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, fuzzy, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "parameter heeft een onvolledig type"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, fuzzy, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "parameter heeft een onvolledig type"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, fuzzy, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "einde van niet-void functie werd bereikt zonder teruggeefwaarde"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, fuzzy, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "pointer naar functie gebruikt in rekensom"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
msgid "left rotate count is negative"
msgstr "teller van links shift is negatief"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
msgid "right rotate count is negative"
msgstr "teller van rechtse shift is negatief"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "teller van links shift is >= breedte van het type"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "teller van rechtse shift is >= breedte van het type"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "de zwakke declaratie van %qs moet aan de definitie voorafgaan"
# is de "," deel van de special format spec of niet? en moet "true" hier vertaald worden of niet?
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, fuzzy, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "het adres van %qD, zal altijd %<true%> zijn"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "vergelijking tussen pointer en integer"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, fuzzy, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "geordende vergelijking van een pointer met integer nul"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, fuzzy, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "ongeldige operanden voor binaire %s-operator"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "pointer van type %<void *%> gebruikt in aftrekking"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "pointer naar functie gebruikt in aftrekking"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "pointer naar functie gebruikt in aftrekking"
# 'Arithmetic'?? 'rekensom' is wel correct, maar het klinkt zo stom.
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, fuzzy, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "rekensom met pointer naar onvolledig type"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr ""
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "ongeldige beginwaarde voor member %qs"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, fuzzy, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "ongeldig gebruik van array die geen lvalue is"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, fuzzy, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "ongeldig gebruik van array die geen lvalue is"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ verbiedt het adres van een gecaste expressie"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr ""
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ verbiedt het adres van een gecaste expressie"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ verbiedt het adres van een gecaste expressie"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, fuzzy, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "ongeldige beginwaarde voor member %qs"
# DANGER WILL ROBINSON! Dit is nu net hoe gettext NIET gebruikt zou mogen worden...
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ verbiedt het %sen van een enum"
# DANGER WILL ROBINSON! Dit is nu net hoe gettext NIET gebruikt zou mogen worden...
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ verbiedt het %sen van een enum"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "parameter %qs wijst naar een onvolledig type"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ verbiedt het %sen van een pointer van type %qT"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ verbiedt het %sen van een pointer van type %qT"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "ongeldige expressie als operand"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, fuzzy, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "kan adres van bitveld %qs niet nemen"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, fuzzy, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "adres van registervariabele %qs gevraagd"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
# vertaling voor 'statement'?
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "expressie-statement heeft onvolledig type"
# vertaling voor 'statement'?
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "expressie-statement heeft onvolledig type"
# vertaling voor 'statement'?
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "expressie-statement heeft onvolledig type"
# vertaling voor 'statement'?
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "expressie-statement heeft onvolledig type"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "cast laat qualifiers van doeltype van pointer vallen"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, fuzzy, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, fuzzy, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, fuzzy, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr ""
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, fuzzy, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "cast verhoogt het benodigde alignment van het doeltype"
@@ -35385,228 +35445,228 @@ msgstr "cast verhoogt het benodigde alignment van het doeltype"
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ verbiedt voorwaardelijke expressies tussen 0 en een functiepointer"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, fuzzy, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr ""
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, fuzzy, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ verbiedt casts naar een union-type"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, fuzzy, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "ongeldige opslagklasse voor functie %qs"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "niet-constante array-index in beginwaarde"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, fuzzy, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "incompatibel type voor argument %d van %qs"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
msgid "array used as initializer"
msgstr "array-index in beginwaarde van niet-array"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
msgid "invalid array assignment"
msgstr "ongeldige lvalue in toewijzing"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, fuzzy, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "pointer naar lid-functie gebruikt in rekensom"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, fuzzy, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "ongeldige registernaam voor %qs"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr ""
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
# 'regio' klinkt niet echt, maar 'streek' lijkt me nog slechter
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr "kon 0x%l.8x niet naar een regio omzetten"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %qs formaat-attribuut"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %qs formaat-attribuut"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %<noreturn%> attribuut"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %<noreturn%> attribuut"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "deze functie is een mogelijke kandidaat voor het %<noreturn%> attribuut"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "doorgeven van argument %d van %qs"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, fuzzy, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "adres van globale registervariabele %qs gevraagd"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, fuzzy, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "adres van globale registervariabele %qs gevraagd"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr ""
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, fuzzy, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "%<return%> zonder waarde in een functie die een niet-void waarde teruggeeft"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, fuzzy, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "%<return%> met waarde in een functie die void teruggeeft"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -36151,7 +36211,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -38347,27 +38407,27 @@ msgstr "ongeldige lvalue in toewijzing"
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -38578,42 +38638,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr "overflow in constante expressie"
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "overflow in constante expressie"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "overflow in constante expressie"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "overflow in constante expressie"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -38628,14 +38688,14 @@ msgstr ""
msgid "can't open input file: %s"
msgstr "kan bestand '%s' niet openen"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "doorgeven van argument %d van %qs"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "Bestandsnaam ontbreekt na %qs optie"
@@ -38745,12 +38805,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -40579,131 +40639,131 @@ msgstr "%s:fout bij schrijven van uitvoerbestand '%s'\n"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "%s: kan bestand '%s' niet openen om te lezen: %s\n"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: fout bij schrijven van bestand '%s': %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file '%s': %s\n"
msgid "Can't delete module file '%s': %s"
msgstr "%s: kan bestand '%s' niet verwijderen: %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: warning: can't rename file '%s' to '%s': %s\n"
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: waarschuwing: kan naam van bestand '%s' niet wijzigen in '%s': %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete aux info file '%s': %s\n"
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: kan aux-infobestand '%s' niet verwijderen: %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "%s: kan bestand '%s' niet openen om te lezen: %s\n"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -40788,7 +40848,7 @@ msgstr "ongeldige beginwaarde"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "conflicterende declaraties van %qs"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -42114,7 +42174,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "naar label %s gerefereerd buiten enige functie"
@@ -42264,7 +42324,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "fout in argumenten voor spec-functie '%s'"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -42650,183 +42710,183 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "overflow in constante expressie"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "ongeldige expressie als operand"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "%s voor %qs"
# vertaling voor 'statement'?
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "expressie-statement heeft onvolledig type"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -42835,180 +42895,180 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
# vertaling voor 'statement'?
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "expressie-statement heeft onvolledig type"
# vertaling voor 'statement'?
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "expressie-statement heeft onvolledig type"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
# vertaling voor 'statement'?
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "expressie-statement heeft onvolledig type"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
# vertaling voor 'statement'?
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "expressie-statement heeft onvolledig type"
# vertaling voor 'statement'?
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "expressie-statement heeft onvolledig type"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "%<defined%> zonder een naam"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr ""
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -43016,955 +43076,955 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "%s van alleen-lezen variabele %qs"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "%s van alleen-lezen variabele %qs"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "size of array %qs is too large"
msgid "String length at %L is too large"
msgstr "omvang van array %qs is te groot"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
# vertaling voor 'statement'?
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "expressie-statement heeft onvolledig type"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "'%s' argument voor intrinsic '%s' op %L moet een scalair zijn"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr ""
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "parameternamen (zonder types) in functiedeclaratie"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "parameternamen (zonder types) in functiedeclaratie"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr "Te veel argumenten voor %s op %L"
# rank -> rang: correct in Fortran-context?
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "'%s' argument voor intrinsic '%s' op %L moet kleiner dan rang %d zijn"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a scalar"
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "'%s' argument voor intrinsic '%s' op %L moet een scalair zijn"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "Te veel argumenten voor %s op %L"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "veld %qs heeft al een beginwaarde gekregen"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
# rank -> rang: correct in Fortran-context?
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "'%s' argument voor intrinsic '%s' op %L moet kleiner dan rang %d zijn"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "'%s' argument voor intrinsic '%s' op %L moet een scalair zijn"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "'%s' argument voor intrinsic '%s' op %L moet een scalair zijn"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "Lege array-constructor op %C is niet toegestaan"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "het %qs attribuut heeft geen betekenis voor types"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "overflow in constante expressie"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "object van variabele lengte mag geen beginwaarde krijgen"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "label %qs gedefinieerd maar niet gebruikt"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "label %qs gedefinieerd maar niet gebruikt"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "Intrinsic '%s' op %L moet minstens twee argumenten hebben"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -44579,17 +44639,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -44832,7 +44892,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr "case-waarde buiten bereik"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -45140,7 +45200,7 @@ msgid "internal error - invalid Utf8 name"
msgstr ""
# Moet 'signature-string' vertaald worden?
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "Brol aan einde van signature-string."
@@ -47279,10 +47339,6 @@ msgstr ""
#~ msgstr "adres van registervariabele %qs gevraagd"
#, fuzzy
-#~ msgid "Function does not return a value"
-#~ msgstr "functie geeft geen string-type terug"
-
-#, fuzzy
#~ msgid "Function return value not set"
#~ msgstr "de terugkeerwaarde van een functie kan geen funtie zijn"
diff --git a/gcc/po/ru.po b/gcc/po/ru.po
index 223a1ef8c3b..aa8a3510307 100644
--- a/gcc/po/ru.po
+++ b/gcc/po/ru.po
@@ -6,12 +6,13 @@
# Nickolay V. Shmyrev <nshmyrev@yandex.ru>, 2008.
# Pavel Maryanov <acid_jack@ukr.net>, 2006, 2008.
# Yuri Kozlov <yuray@komyakino.ru>, 2011.
+# Pavel Maryanov <acid@jack.kiev.ua>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.6.0\n"
+"Project-Id-Version: gcc 4.7.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
-"PO-Revision-Date: 2011-04-03 13:22+0200\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
+"PO-Revision-Date: 2012-07-01 16:16+0200\n"
"Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
"Language-Team: Russian <gnu@mx.ru>\n"
"Language: ru\n"
@@ -19,9 +20,8 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 1.0\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anonymous>"
@@ -30,18 +30,18 @@ msgstr "<anonymous>"
msgid "({anonymous})"
msgstr "({anonymous})"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr "ожидалÑÑ ÐºÐ¾Ð½ÐµÑ† Ñтроки"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "ожидалоÑÑŒ %<;%>"
@@ -49,17 +49,17 @@ msgstr "ожидалоÑÑŒ %<;%>"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "ожидалоÑÑŒ %<(%>"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr "ожидалоÑÑŒ %<,%>"
@@ -70,19 +70,19 @@ msgstr "ожидалоÑÑŒ %<,%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr "ожидалоÑÑŒ %<)%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr "ожидалоÑÑŒ %<]%>"
@@ -91,25 +91,25 @@ msgstr "ожидалоÑÑŒ %<]%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "ожидалоÑÑŒ %<;%>, %<,%> или %<)%>"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr "ожидалоÑÑŒ %<}%>"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "ожидалоÑÑŒ %<{%>"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr "ожидалоÑÑŒ %<:%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr "ожидалоÑÑŒ %<while%>"
@@ -118,39 +118,39 @@ msgstr "ожидалоÑÑŒ %<while%>"
msgid "expected %<.%>"
msgstr "ожидалоÑÑŒ %<.%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr "ожидалоÑÑŒ %<@end%>"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr "ожидалоÑÑŒ %<>%>"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "ожидалоÑÑŒ %<,%> или %<)%>"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "ожидалоÑÑŒ %<=%>"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "ожидалоÑÑŒ %<#pragma omp section%> или %<}%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
msgid "expected %<[%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(anonymous)"
@@ -172,7 +172,6 @@ msgstr "отÑутÑтвует барьер поÑле return"
#: collect2.c:1691
#, fuzzy, c-format
-#| msgid "collect2 version %s"
msgid "collect2 version %s\n"
msgstr "collect2 верÑÐ¸Ñ %s"
@@ -235,13 +234,11 @@ msgstr "ключ -g игнорируетÑÑ"
#: diagnostic.c:136
#, fuzzy, c-format
-#| msgid "%s: all warnings being treated as errors\n"
msgid "%s: all warnings being treated as errors"
msgstr "%s: вÑе Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñчитать ошибками\n"
#: diagnostic.c:141
#, fuzzy, c-format
-#| msgid "%s: some warnings being treated as errors\n"
msgid "%s: some warnings being treated as errors"
msgstr "%s: некоторые Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñчитать ошибками\n"
@@ -329,12 +326,12 @@ msgstr "операнд '%%l' не ÑвлÑетÑÑ Ð¼ÐµÑ‚ÐºÐ¾Ð¹"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "некорректное иÑпользование плавающей конÑтанты"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "в ÑпиÑке операндов задано некорректное выражение"
@@ -420,7 +417,6 @@ msgstr " --target-help Показать ÑпецифичеÑкие Ð
#: gcc.c:2961
#, fuzzy
-#| msgid " --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n"
msgid " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n"
msgstr " --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n"
@@ -620,7 +616,6 @@ msgstr ""
#: gcc.c:5239
#, fuzzy, c-format
-#| msgid "Processing spec %c%s%c, which is '%s'\n"
msgid "Processing spec (%s), which is '%s'\n"
msgstr "Обработка Ñпецификации %c%s%c, Ñ‚.е. '%s'\n"
@@ -738,9 +733,6 @@ msgstr ""
#: gcov.c:458
#, fuzzy, c-format
-#| msgid ""
-#| "Usage: gcov [OPTION]... SOURCEFILE...\n"
-#| "\n"
msgid ""
"Usage: gcov [OPTION]... SOURCE|OBJ...\n"
"\n"
@@ -819,7 +811,6 @@ msgstr ""
#: gcov.c:472
#, fuzzy, c-format
-#| msgid " -a, --all-blocks Show information for every basic block\n"
msgid " -r, --relative-only Only show data for relative sources\n"
msgstr " -a, --all-blocks Показать ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ñех блоков\n"
@@ -874,25 +865,21 @@ msgstr "\n"
#: gcov.c:720
#, fuzzy, c-format
-#| msgid "%s:creating '%s'\n"
msgid "Creating '%s'\n"
msgstr "%s:Ñоздание '%s'\n"
#: gcov.c:723
#, fuzzy, c-format
-#| msgid "%s:error writing output file '%s'\n"
msgid "Error writing output file '%s'\n"
msgstr "%s:ошибка запиÑи в выходной файл '%s'\n"
#: gcov.c:728
#, fuzzy, c-format
-#| msgid "%s:could not open output file '%s'\n"
msgid "Could not open output file '%s'\n"
msgstr "%s:ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла '%s'\n"
#: gcov.c:734
#, fuzzy, c-format
-#| msgid "[Leaving %s]\n"
msgid "Removing '%s'\n"
msgstr "[Выход из %s]\n"
@@ -1068,7 +1055,6 @@ msgstr "безуÑловный переход %2d ни разу не выполÐ
#: gcov.c:2262
#, fuzzy, c-format
-#| msgid "%s:cannot open source file\n"
msgid "Cannot open source file %s\n"
msgstr "%s:ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¸Ñходного файла\n"
@@ -1241,19 +1227,19 @@ msgstr " включённом из %qs в %s:%d"
msgid " inlined from %qs"
msgstr " включённом из %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "предполагаетÑÑ, что цикл не беÑконечный"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "невозможно оптимизировать беÑконечные циклы"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "предполагаетÑÑ, что Ñчётчик цикла не выходит за границы"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "невозможно оптимизировать циклы, в которых Ñчётчик выходит за границы"
@@ -1421,16 +1407,16 @@ msgid "this is the insn:"
msgstr "Ñто insn:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "не найден региÑÑ‚Ñ€ Ð´Ð»Ñ Ð²Ñ‹Ñ‚Ð°Ð»ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "режим VOID выходного потока"
-#: reload1.c:8658
+#: reload1.c:8672
#, fuzzy
msgid "failure trying to reload:"
msgstr "Ошибка при повторной попытке загрузки:"
@@ -1614,7 +1600,6 @@ msgstr ""
#. caller cannot.
#: cif-code.def:99
#, fuzzy
-#| msgid "Enable exception handling"
msgid "non-call exception handling mismatch"
msgstr "Ðктивировать обработку иÑключительных Ñитуаций"
@@ -1741,7 +1726,6 @@ msgstr "МакÑимальный размер ÑпиÑка ждущих опер
#: params.def:172
#, fuzzy
-#| msgid "The maximum number of instructions to consider to unroll in a loop"
msgid "The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop"
msgstr "МакÑимальное чиÑло инÑтрукций в развернутом цикле"
@@ -2252,13 +2236,11 @@ msgstr ""
#: params.def:949
#, fuzzy
-#| msgid "Allow branches to be packed with other instructions"
msgid "Allow new data races on packed data loads to be introduced"
msgstr "Комбинировать уÑловные переходы Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ инÑтрукциÑми"
#: params.def:954
#, fuzzy
-#| msgid "Allow branches to be packed with other instructions"
msgid "Allow new data races on packed data stores to be introduced"
msgstr "Комбинировать уÑловные переходы Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ инÑтрукциÑми"
@@ -2595,118 +2577,117 @@ msgstr ""
msgid "<unknown>"
msgstr "ÐеизвеÑтный иÑточник"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "некорректное %%H значение"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "некорректное %%J значение"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "некорректное значение %%r"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "некорректное значение %%R"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "некорректное значение %%N"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "некорректное значение %%P"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "некорректное значение %%h"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "некорректное значение %%L"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "некорректное значение %%M"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "некорректное значение %%M"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "некорректное значение %%U"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "некорректное значение %%s"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "некорректное значение %%C"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "некорректное значение %%E"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "некорректное unspec-перемещение"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "некорректный код %%xn"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "Ð¿Ñ€ÐµÐ´Ð¸ÐºÐ°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Thumb"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "Ð¿Ñ€ÐµÐ´Ð¸ÐºÐ°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð² уÑловной поÑледовательноÑти"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
-#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "недопуÑтимый операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° '%c'"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "некорректный оператор Ñдвига"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2714,86 +2695,84 @@ msgstr "некорректный оператор Ñдвига"
msgid "invalid operand for code '%c'"
msgstr "недопуÑтимый операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° '%c'"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не выполнÑетÑÑ"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "отÑутÑтвует операнд"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
msgid "function parameters cannot have __fp16 type"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ агрегатное значение"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
msgid "functions cannot return __fp16 type"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ значение не Ñтрокового типа"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° адреÑа требуютÑÑ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из региÑтров X, Y или Z"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
-#| msgid "output operand %d must use %<&%> constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "выходной операнд %d должен Ñодержать ограничитель %<&%>"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
-#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "некорректный адреÑ, не (reg+disp)"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
msgid "bad address, not a constant:"
msgstr "адреÑное Ñмещение - не конÑтанта"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "некорректный адреÑ, не (reg+disp)"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "некорректный адреÑ, не post_inc или pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° компилÑтора: некорректный адреÑ:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° компилÑтора: неизвеÑтный режим:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½ÑтрукциÑ:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ñдвига:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° компилÑтора: некорректный Ñдвиг:"
@@ -2809,8 +2788,8 @@ msgstr "некорректный операнд const_double"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2888,22 +2867,22 @@ msgstr "некорректный операнд"
msgid "unrecognized address"
msgstr "некорректный адреÑ"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "Ð½ÐµÐ¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "некорректные побочные Ñффекты в адреÑе"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
#, fuzzy
msgid "unidentifiable call op"
msgstr "ÐÐµÐ¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸Ñ†Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð°"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "PIC-региÑÑ‚Ñ€ не уÑтановлен"
@@ -2911,7 +2890,7 @@ msgstr "PIC-региÑÑ‚Ñ€ не уÑтановлен"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "неверный код выходного операнда"
@@ -3040,72 +3019,72 @@ msgstr "некорректный операнд Ð´Ð»Ñ output_move_double"
msgid "bad output_condmove_single operand"
msgstr "некорректный операнд Ð´Ð»Ñ output_condmove_single"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "некорректный операнд UNSPEC"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "недопуÑтимый операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° '%c'"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "недопуÑтимый операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° '%c'"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, fuzzy, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "операнд не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой или кодом уÑловиÑ, неверный код операнда 'c'"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, fuzzy, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "операнд не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой или кодом уÑловиÑ, неверный код операнда 'c'"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, fuzzy, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "операнд не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой или кодом уÑловиÑ, неверный код операнда 'c'"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "операнд не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой или кодом уÑловиÑ, неверный код операнда 'c'"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, fuzzy, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "операнд не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой или кодом уÑловиÑ, неверный код операнда 'c'"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "операнд не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой или кодом уÑловиÑ, неверный код операнда 'c'"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "операнд не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой или кодом уÑловиÑ, неверный код операнда 'c'"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "некорректный код операнда '%c'"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "некорректные Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "некорректный режим инÑтрукции"
@@ -3115,7 +3094,6 @@ msgstr "ИÑпользовать размещение битовых полей
#: config/i386/i386-interix.h:79
#, fuzzy
-#| msgid "Use native (MS) bitfield layout"
msgid "Use gcc default bitfield layout"
msgstr "ИÑпользовать размещение битовых полей по ÑоглашениÑм MS"
@@ -3136,35 +3114,35 @@ msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ DJGPP указывает на н
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ DJGPP указывает на иÑпорченный файл '%s'"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
msgid "invalid %%G mode"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%j"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: некорректный код"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "некорректное преобразование из %<__fpreg%>"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "некорректное преобразование к %<__fpreg%>"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "некорректный операнд Ð´Ð»Ñ %<__fpreg%>"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "неверное значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%p"
@@ -3245,7 +3223,7 @@ msgid "post-increment address is not a register"
msgstr "поÑтинкрементный Ð°Ð´Ñ€ÐµÑ - не региÑÑ‚Ñ€"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "некорректный адреÑ"
@@ -3417,87 +3395,87 @@ msgstr ""
msgid "bad move"
msgstr "ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ°"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
msgid "invalid %%c value"
msgstr "некорректное %%H значение"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%f"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%F"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%G"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%j"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%J"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%k"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%K"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%O"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%q"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%S"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%T"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%u"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%v"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "неверное значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%x"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "некорректный знак %qc в ограничителе"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "Ðргумент AltiVec передан в функцию без прототипа"
@@ -3596,60 +3574,60 @@ msgstr "некорректный операнд Ð´Ð»Ñ %%R"
msgid "invalid operand to %%S"
msgstr "некорректный операнд Ð´Ð»Ñ %%S"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "Ñоздан Ñ Ð¾Ð´Ð½Ð¾Ð¹ архитектурой / ABI, а иÑпользуетÑÑ Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "Ñоздан Ñ Ð¾Ð´Ð½Ð¸Ð¼ ABI, а иÑпользуетÑÑ Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "Ñоздан Ñ Ð¾Ð´Ð½Ð¸Ð¼ значением endianness, а иÑпользуетÑÑ Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "некорректный операнд Ð´Ð»Ñ %%Y"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "некорректный операнд Ð´Ð»Ñ %%A"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "некорректный операнд Ð´Ð»Ñ %%B"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
msgid "invalid %%C operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
msgid "invalid %%D operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "некорректный операнд Ð´Ð»Ñ %%f"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "некорректный операнд Ð´Ð»Ñ %%s"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "конÑтанта long long не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ непоÑредÑтвенным операндом"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ ÐºÐ¾Ð½Ñтанта не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ непоÑредÑтвенным операндом"
@@ -3674,7 +3652,7 @@ msgstr "операнд Ñ ÐºÐ¾Ð´Ð¾Ð¼ 'o' - не конÑтанта"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: некорректный код"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "некорректный операнд Ð´Ð»Ñ %%c"
@@ -3689,86 +3667,73 @@ msgstr "некорректный операнд Ð´Ð»Ñ %%d"
msgid "invalid %%H specifier"
msgstr "недопуÑтимое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%j"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
#: config/tilegx/tilegx.c:5149
#, fuzzy, c-format
-#| msgid "invalid %%c operand"
msgid "invalid %%%c operand"
msgstr "некорректный операнд Ð´Ð»Ñ %%c"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
#: config/tilegx/tilegx.c:5208
#, fuzzy, c-format
-#| msgid "invalid operand for 'b' modifier"
msgid "invalid operand for 'r' specifier"
msgstr "некорректный операнд Ð´Ð»Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° 'b'"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
-#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
msgstr "неверный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%P"
@@ -3832,11 +3797,11 @@ msgstr "не задан региÑÑ‚Ñ€ в адреÑе"
msgid "address offset not a constant"
msgstr "адреÑное Ñмещение - не конÑтанта"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "кандидат 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "кандидат 2:"
@@ -4033,19 +3998,16 @@ msgstr ""
#: cp/error.c:3047
#, fuzzy
-#| msgid "provided for %q+D"
msgid "required from %q#D\n"
msgstr "задано Ð´Ð»Ñ %q+D"
#: cp/error.c:3054
#, fuzzy
-#| msgid "called from here"
msgid "recursively required from here"
msgstr "ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð° здеÑÑŒ"
#: cp/error.c:3055
#, fuzzy
-#| msgid "called from here"
msgid "required from here"
msgstr "ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð° здеÑÑŒ"
@@ -4073,7 +4035,7 @@ msgstr ""
msgid "candidates are:"
msgstr "претенденты:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4129,51 +4091,51 @@ msgstr "преобразование из %qT в %qT неоднозначно"
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "неверный тип аргумента Ð´Ð»Ñ ÑƒÐ½Ð°Ñ€Ð½Ð¾Ð³Ð¾ минуÑа"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "неверный тип аргумента Ð´Ð»Ñ ÑƒÐ½Ð°Ñ€Ð½Ð¾Ð³Ð¾ плюÑа"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "неверный тип аргумента Ð´Ð»Ñ Ð¿Ð¾Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ дополнениÑ"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "неверный тип аргумента Ð´Ð»Ñ abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "неверный тип аргумента Ð´Ð»Ñ ÑопрÑжениÑ"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
msgid "in argument to unary !"
msgstr "неверный тип аргумента Ð´Ð»Ñ ÑƒÐ½Ð°Ñ€Ð½Ð¾Ð³Ð¾ плюÑа"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
#, fuzzy
msgid "no pre-increment operator for type"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ %s указатель на неполный тип %qT"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
#, fuzzy
msgid "no pre-decrement operator for type"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ %s указатель на неполный тип %qT"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4435,7 +4397,7 @@ msgstr "некорректный операнд"
msgid "Bad type in constant expression"
msgstr "переполнение при вычиÑлении конÑтантного выражениÑ"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
#, fuzzy
msgid "Unexpected end of module"
msgstr "некорректный операнд"
@@ -4467,11 +4429,11 @@ msgstr ""
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "приÑваивание"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
#, fuzzy
msgid "pointer assignment"
msgstr "приÑваивание"
@@ -4560,52 +4522,52 @@ msgstr ""
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "некорректные ограничители операндов в операторе `asm'"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
msgid "iterator variable"
msgstr "Выполнить отÑлеживание переменных"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr ""
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
msgid "End expression in DO loop"
msgstr "в ÑпиÑке операндов задано некорректное выражение"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
#, fuzzy
msgid "Step expression in DO loop"
msgstr "некорректное адреÑное выражение"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
#, fuzzy
msgid "DEALLOCATE object"
msgstr "DEALLOCATE "
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
#, fuzzy
msgid "ALLOCATE object"
msgstr "ALLOCATE "
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4614,7 +4576,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4688,7 +4650,7 @@ msgstr "Ðекорректной результат функции"
msgid "Memory allocation failed"
msgstr "Ð¡Ð²Ð¾Ð±Ð¾Ð´Ð½Ð°Ñ Ð¿Ð°Ð¼ÑÑ‚ÑŒ закончилаÑÑŒ - malloc() завершилÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -4895,7 +4857,7 @@ msgstr "не допуÑкаетÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ одновременно -C Ð
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -4905,7 +4867,6 @@ msgstr "Ð”Ð»Ñ Ñзыка Ada нужно передать -c или -S"
#: ada/gcc-interface/lang-specs.h:52
#, fuzzy
-#| msgid "-c or -S required for Ada"
msgid "-c required for gnat2why"
msgstr "Ð”Ð»Ñ Ñзыка Ada нужно передать -c или -S"
@@ -4955,6 +4916,10 @@ msgstr "shared и mdll неÑовмеÑтимы"
msgid "static is not supported on TPF-OS"
msgstr "в TFP-OS не поддерживаетÑÑ static"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "-EB и -EL неÑовмеÑтимы"
@@ -4973,7 +4938,6 @@ msgstr "не поддерживает мультибиблиотеку"
#: config/arm/arm.h:157
#, fuzzy
-#| msgid "-msoft-float and -mhard_float may not be used together"
msgid "-mfloat-abi=soft and -mfloat-abi=hard may not be used together"
msgstr "-msoft-float и -mhard_float неÑовмеÑтимы"
@@ -4986,11 +4950,6 @@ msgstr "ключи -mbig-endian и -mlittle-endian неÑовмеÑтимы"
msgid "no processor type specified for linking"
msgstr "в файле Ñпецификаций отÑутÑтвует ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-msgid "gfortran does not support -E without -cpp"
-msgstr "ключ -C или -CC допуÑтим только Ñ -E"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "Ð´Ð»Ñ m210 обратный (little endian) порÑдок байт не поддерживаетÑÑ"
@@ -5043,6 +5002,11 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "Ключ -shared не поддерживаетÑÑ Ð´Ð»Ñ VAX ELF"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+msgid "gfortran does not support -E without -cpp"
+msgstr "ключ -C или -CC допуÑтим только Ñ -E"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni и -femit-class-files неÑовмеÑтимы"
@@ -5197,7 +5161,6 @@ msgstr "Включить вÑе оÑновные виды предупрежде
#: ada/gcc-interface/lang.opt:59
#, fuzzy
-#| msgid "Synonym for -Wcomment"
msgid "Synonym of -gnatk8"
msgstr "То же, что -Wcomment"
@@ -5262,7 +5225,6 @@ msgstr "Предупреждать о неÑвных декларациÑÑ… фу
#: fortran/lang.opt:227
#, fuzzy
-#| msgid "Warn about implicit function declarations"
msgid "Warn about function call elimination"
msgstr "Предупреждать о неÑвных декларациÑÑ… функций"
@@ -5468,7 +5430,6 @@ msgstr "ИÑпользовать n как ширину Ñтроки в ÑвобÐ
#: fortran/lang.opt:431
#, fuzzy
-#| msgid "Enable linker optimizations"
msgid "Enable front end optimization"
msgstr "Включить оптимизации компоновки"
@@ -6242,7 +6203,6 @@ msgstr "Ðе иÑпользовать аппаратный указатель Ñ
#: config/sparc/sparc.opt:42
#, fuzzy
-#| msgid "Use alternate register names"
msgid "Use flat register window model"
msgstr "ИÑпользовать альтернативные имена региÑтров"
@@ -6268,25 +6228,21 @@ msgstr "ИÑпользовать ABI Ð´Ð»Ñ V8+"
#: config/sparc/sparc.opt:66
#, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
msgid "Use UltraSPARC Visual Instruction Set version 1.0 extensions"
msgstr "ИÑпользовать набор команд раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ UltraSPARC Visual"
#: config/sparc/sparc.opt:70
#, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
msgid "Use UltraSPARC Visual Instruction Set version 2.0 extensions"
msgstr "ИÑпользовать набор команд раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ UltraSPARC Visual"
#: config/sparc/sparc.opt:74
#, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
msgid "Use UltraSPARC Visual Instruction Set version 3.0 extensions"
msgstr "ИÑпользовать набор команд раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ UltraSPARC Visual"
#: config/sparc/sparc.opt:78
#, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
msgid "Use UltraSPARC Fused Multiply-Add extensions"
msgstr "ИÑпользовать набор команд раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ UltraSPARC Visual"
@@ -6712,19 +6668,16 @@ msgstr "ИÑключать указатель кадра в лиÑтовых Ñ„Ñ
#: config/i386/i386.opt:248
#, fuzzy
-#| msgid "Use 32-bit floating-point registers"
msgid "Set 80387 floating-point precision to 32-bit"
msgstr "ИÑпользовать 32-битные региÑтры ÑопроцеÑÑора плавающей арифметики"
#: config/i386/i386.opt:252
#, fuzzy
-#| msgid "Use 32-bit floating-point registers"
msgid "Set 80387 floating-point precision to 64-bit"
msgstr "ИÑпользовать 32-битные региÑтры ÑопроцеÑÑора плавающей арифметики"
#: config/i386/i386.opt:256
#, fuzzy
-#| msgid "Use 32-bit floating-point registers"
msgid "Set 80387 floating-point precision to 80-bit"
msgstr "ИÑпользовать 32-битные региÑтры ÑопроцеÑÑора плавающей арифметики"
@@ -6843,7 +6796,6 @@ msgstr "Генерировать 64-битный код x86-64"
#: config/i386/i386.opt:419
#, fuzzy
-#| msgid "Generate 64bit x86-64 code"
msgid "Generate 32bit x86-64 code"
msgstr "Генерировать 64-битный код x86-64"
@@ -7300,25 +7252,21 @@ msgstr "Включить отладочную выдачу"
#: config/rs6000/rs6000.opt:370
#, fuzzy
-#| msgid "Use the Cray Pointer extension"
msgid "Use the AltiVec ABI extensions"
msgstr "ИÑпользовать раÑширение указателей Cray"
#: config/rs6000/rs6000.opt:374
#, fuzzy
-#| msgid "Do not use the bit-field instructions"
msgid "Do not use the AltiVec ABI extensions"
msgstr "Ðе иÑпользовать команды работы Ñ Ð±Ð¸Ñ‚Ð¾Ð²Ñ‹Ð¼Ð¸ полÑми"
#: config/rs6000/rs6000.opt:378
#, fuzzy
-#| msgid "Use the Cray Pointer extension"
msgid "Use the SPE ABI extensions"
msgstr "ИÑпользовать раÑширение указателей Cray"
#: config/rs6000/rs6000.opt:382
#, fuzzy
-#| msgid "Do not use the bit-field instructions"
msgid "Do not use the SPE ABI extensions"
msgstr "Ðе иÑпользовать команды работы Ñ Ð±Ð¸Ñ‚Ð¾Ð²Ñ‹Ð¼Ð¸ полÑми"
@@ -7688,7 +7636,6 @@ msgstr "ИÑпользовать Ñреду запуÑка ÑимулÑтора"
#: config/c6x/c6x.opt:46
#, fuzzy
-#| msgid "Pass arguments on the stack"
msgid "Valid arguments for the -msdata= option"
msgstr "Передавать аргументы в Ñтеке"
@@ -8123,7 +8070,6 @@ msgstr "Минимальное битовое выравнивание в ÑÑ‚Ñ€
#: config/arm/arm.opt:202
#, fuzzy
-#| msgid "Generate code for GNU as"
msgid "Generate code for Thumb state"
msgstr "Генерировать код Ð´Ð»Ñ GNU-аÑÑемблера"
@@ -8133,7 +8079,6 @@ msgstr "Включить поддержку вызовов между ÑиÑте
#: config/arm/arm.opt:210
#, fuzzy
-#| msgid "Use given thread-local storage dialect"
msgid "Specify thread local storage scheme"
msgstr "ИÑпользовать указанный диалект локально-поточной памÑти"
@@ -8156,7 +8101,6 @@ msgstr "Thumb: генерировать (лиÑтовые) кадры Ñтека
#: config/arm/arm.opt:248
#, fuzzy
-#| msgid "Assume big endian bytes, little endian words"
msgid "Assume big endian bytes, little endian words. This option is deprecated."
msgstr "Считать, что байты имеют прÑмой порÑдок бит, а Ñлова - обратный порÑдок байт"
@@ -8304,6 +8248,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -8519,7 +8467,6 @@ msgstr ""
#: config/mips/mips.opt:150
#, fuzzy
-#| msgid "Work around certain R4000 errata"
msgid "Work around certain 24K errata"
msgstr "Обходить некоторые ошибки процеÑÑора R4000"
@@ -9138,7 +9085,6 @@ msgstr "МакÑимальный коÑффициент развертки циÐ
#: config/epiphany/epiphany.opt:52
#, fuzzy
-#| msgid "Use software floating point"
msgid "Use software floating point comparisons"
msgstr "ИÑпользовать программную реализацию плавающей арифметики"
@@ -9164,13 +9110,11 @@ msgstr ""
#: config/epiphany/epiphany.opt:76
#, fuzzy
-#| msgid "Generate call insns as indirect calls, if necessary"
msgid "Generate call insns as indirect calls"
msgstr "Генерировать коÑвенные вызовы, еÑли нужно"
#: config/epiphany/epiphany.opt:80
#, fuzzy
-#| msgid "Generate call insns as indirect calls, if necessary"
msgid "Generate call insns as direct calls"
msgstr "Генерировать коÑвенные вызовы, еÑли нужно"
@@ -9180,7 +9124,6 @@ msgstr ""
#: config/epiphany/epiphany.opt:108
#, fuzzy
-#| msgid "Use structs on stronger alignment for double-word copies"
msgid "Vectorize for double-word operations."
msgstr "ИÑпользовать более Ñтрогое выравнивание Ñтруктур Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð²Ð¾Ð¹Ð½Ñ‹Ð¼Ð¸ Ñловами"
@@ -9212,19 +9155,16 @@ msgstr ""
#: config/cr16/cr16.opt:42
#, fuzzy
-#| msgid "Generate code for C31 CPU"
msgid "Generate code for CR16C architecture"
msgstr "Генерировать код Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑора C31"
#: config/cr16/cr16.opt:46
#, fuzzy
-#| msgid "Generate code for GNU assembler (gas)"
msgid "Generate code for CR16C+ architecture (Default)"
msgstr "Генерировать код Ð´Ð»Ñ GNU-аÑÑемблера (gas)"
#: config/cr16/cr16.opt:50
#, fuzzy
-#| msgid "Pointers are 32-bit"
msgid "Treat integers as 32-bit."
msgstr "Генерировать код Ñ 32-битными указателÑми"
@@ -9239,13 +9179,11 @@ msgstr ""
#: config/tilegx/tilegx.opt:35
#, fuzzy
-#| msgid "Compile for 32-bit pointers"
msgid "Compile with 32 bit longs and pointers."
msgstr "Генерировать код Ñ 32-битными указателÑми"
#: config/tilegx/tilegx.opt:39
#, fuzzy
-#| msgid "Compile for 64-bit pointers"
msgid "Compile with 64 bit longs and pointers."
msgstr "Генерировать код Ñ 64-битными указателÑми"
@@ -9854,7 +9792,6 @@ msgstr "Предупреждать о конÑтрукциÑÑ… C, не ÑвлÑÑ
#: c-family/c.opt:292
#, fuzzy
-#| msgid "Deprecated in favor of -std=c99"
msgid "Deprecated in favor of -Wc++11-compat"
msgstr "Ðе рекомендуетÑÑ; иÑпользуйте -std=c99"
@@ -9908,7 +9845,6 @@ msgstr "Предупреждать о декларациÑÑ…, вÑтретивш
#: c-family/c.opt:340
#, fuzzy
-#| msgid "Warn about non-virtual destructors"
msgid "Warn about deleting polymorphic objects with non-virtual destructors"
msgstr "Предупреждать о невиртуальных деÑтрукторах"
@@ -10233,7 +10169,6 @@ msgstr "Предупреждать о \"подозрительных\" конÑÑ
#: c-family/c.opt:666
#, fuzzy
-#| msgid "Warn about macros defined in the main file that are not used"
msgid "Warn when typedefs locally defined in a function are not used"
msgstr "Предупреждать об определенных в оÑновном файле, но неиÑпользованных макроÑах"
@@ -10269,7 +10204,6 @@ msgstr "Предупреждать о различиÑÑ… в знаковоÑти
#: c-family/c.opt:698
#, fuzzy
-#| msgid "Warn when a label is unused"
msgid "Warn when a literal '0' is used as null pointer"
msgstr "Предупреждать о неиÑпользуемых метках"
@@ -10338,7 +10272,6 @@ msgstr "Глубина конкретизации шаблонов"
#: c-family/c.opt:760
#, fuzzy
-#| msgid "Enable traditional preprocessing"
msgid "Emit debug annotations during preprocessing"
msgstr "Традиционное препроцеÑÑирование"
@@ -10601,7 +10534,6 @@ msgstr ""
#: c-family/c.opt:1070
#, fuzzy
-#| msgid "Marks all inlined methods as having hidden visibility"
msgid "Marks all inlined functions and methods as having hidden visibility"
msgstr "Отметить облаÑÑ‚ÑŒ видимоÑти вÑех вÑтроенных методов как Ñкрытую"
@@ -10709,7 +10641,6 @@ msgstr "Преобразовывать имена файлов при включ
#: c-family/c.opt:1196 c-family/c.opt:1200
#, fuzzy
-#| msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum"
msgstr "Компилировать в ÑоответÑтвии Ñ ISO 1998 C++ Ñ Ñ€Ð°ÑширениÑми GNU"
@@ -10720,7 +10651,6 @@ msgstr "Компилировать в ÑоответÑтвии Ñ ISO 1990 C Ñ
#: c-family/c.opt:1208
#, fuzzy
-#| msgid "Deprecated in favor of -std=c99"
msgid "Deprecated in favor of -std=c++11"
msgstr "Ðе рекомендуетÑÑ; иÑпользуйте -std=c99"
@@ -10731,7 +10661,6 @@ msgstr "Компилировать в ÑоответÑтвии Ñ ISO 1990 C Ñ
#: c-family/c.opt:1216
#, fuzzy
-#| msgid "Deprecated in favor of -std=c99"
msgid "Deprecated in favor of -std=c11"
msgstr "Ðе рекомендуетÑÑ; иÑпользуйте -std=c99"
@@ -10749,7 +10678,6 @@ msgstr "Ðе рекомендуетÑÑ; иÑпользуйте -std=c99"
#: c-family/c.opt:1236 c-family/c.opt:1241
#, fuzzy
-#| msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical"
msgstr "Компилировать в ÑоответÑтвии Ñ ISO 1998 C++ Ñ Ñ€Ð°ÑширениÑми GNU"
@@ -10760,7 +10688,6 @@ msgstr "Компилировать в ÑоответÑтвии Ñ ISO 1998 C++ Ñ
#: c-family/c.opt:1250
#, fuzzy
-#| msgid "Deprecated in favor of -std=gnu99"
msgid "Deprecated in favor of -std=gnu++11"
msgstr "УÑтаревший ключ, теперь Ñледует иÑпользовать -std=gnu99"
@@ -10771,7 +10698,6 @@ msgstr "Компилировать в ÑоответÑтвии Ñ ISO 1998 C++ Ñ
#: c-family/c.opt:1258
#, fuzzy
-#| msgid "Deprecated in favor of -std=gnu99"
msgid "Deprecated in favor of -std=gnu11"
msgstr "УÑтаревший ключ, теперь Ñледует иÑпользовать -std=gnu99"
@@ -10809,18 +10735,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Ðе предопределÑÑ‚ÑŒ ÑиÑтемные макроÑÑ‹ и макроÑÑ‹ GCC"
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
msgid "Functions which return values must end with return statements"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ %<noreturn%> Ñодержит оператор %<return%>"
@@ -11027,7 +10965,6 @@ msgstr "Предупреждать о неинициализированных Ð
#: common.opt:655
#, fuzzy
-#| msgid "Warn about uninitialized automatic variables"
msgid "Warn about maybe uninitialized automatic variables"
msgstr "Предупреждать о неинициализированных автоматичеÑких переменных"
@@ -11278,7 +11215,6 @@ msgstr "ПодавлÑÑ‚ÑŒ вывод номеров инÑтрукций и нÐ
#: common.opt:1035
#, fuzzy
-#| msgid "Do the full register move optimization pass"
msgid "Dump optimization passes"
msgstr "Выполнить полную оптимизацию Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтров"
@@ -11478,13 +11414,11 @@ msgstr "ПодÑтавлÑÑ‚ÑŒ тела проÑÑ‚Ñ‹Ñ… функций в меÑÑ
#: common.opt:1260
#, fuzzy
-#| msgid "Integrate functions called once into their callers"
msgid "Integrate functions not declared \"inline\" into their callers when profitable"
msgstr "ПодÑтавлÑÑ‚ÑŒ тела функций, вызываемых один раз, в меÑта вызовов"
#: common.opt:1264
#, fuzzy
-#| msgid "Integrate functions called once into their callers"
msgid "Integrate functions only required by their single caller"
msgstr "ПодÑтавлÑÑ‚ÑŒ тела функций, вызываемых один раз, в меÑта вызовов"
@@ -12118,7 +12052,6 @@ msgstr "Включить оптимизации доминаторов"
#: common.opt:1959
#, fuzzy
-#| msgid "Enable loop header copying on trees"
msgid "Enable tail merging on trees"
msgstr "Включить копирование заголовков циклов в древовидном предÑтавлении"
@@ -12137,7 +12070,6 @@ msgstr "Выполнить полный набор оптимизаций уда
#: common.opt:1975
#, fuzzy
-#| msgid "Enable SSA-CCP optimization on trees"
msgid "Enable string length optimizations on trees"
msgstr "Включить SSA-оптимизацию раÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñтант на древовидном предÑтавлении"
@@ -12435,267 +12367,275 @@ msgstr "Поддерживать разделÑемые библиотеки нÐ
msgid "Create a position independent executable"
msgstr "Генерировать позиционно-незавиÑимый код Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñемых модулей, еÑли возможно (режим large)"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
msgid "invalid use of type"
msgstr "некорректное иÑпользование %qD"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-msgid "floating point constant truncated to integer"
-msgstr "деление на ноль плавающей конÑтанты"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
#, fuzzy
msgid "constant refers to itself"
msgstr "указатель inlined_to ÑÑылаетÑÑ Ð½Ð° ÑебÑ"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
msgid "expected numeric type"
msgstr "некорректное адреÑное выражение"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+msgid "expected boolean type"
+msgstr "ожидалоÑÑŒ выражение"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
msgid "expected integer or boolean type"
msgstr "ожидалоÑÑŒ выражение"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
msgid "invalid operand for unary %<&%>"
msgstr "неверные операнды бинарной операции %s"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
msgid "expected pointer"
msgstr "ОжидалоÑÑŒ целочиÑленное значение"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
msgid "incompatible types in binary expression"
msgstr "неÑовмеÑтимые типы в операторе возврата"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
msgid "shift of non-integer operand"
msgstr "размер маÑÑива %qs имеет не целочиÑленный тип"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
msgid "shift count not unsigned integer"
msgstr "в операторе switch задано не целое"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
msgid "negative shift count"
msgstr "Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° RTL-инÑтрукции"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
msgid "object is not a method"
msgstr "вызываемый объект %qE не ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
msgid "method type does not match object type"
msgstr "аргумент типа %qT не ÑоответÑтвует типу %qT"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
msgid "invalid use of %<...%> with builtin function"
msgstr "некорректный аргумент внутренней функции"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
msgid "not enough arguments"
msgstr "отÑутÑтвуют аргументы"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
msgid "too many arguments"
msgstr "Ñлишком много аргументов Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
msgid "argument 1 must be a map"
msgstr "аргумент %qD не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
msgid "invalid type for make function"
msgstr "неверное употребление Ñпецификатора %<restrict%>"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
-#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð´Ð»Ñ 'A'"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
msgid "too many arguments to make"
msgstr "Ñлишком много аргументов Ð´Ð»Ñ %s `%+#D'"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
msgid "argument must be array or slice or channel"
msgstr "аргумент %qD не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
msgid "unsupported argument type to builtin function"
msgstr "некорректный аргумент внутренней функции"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
msgid "argument must be channel"
msgstr "аргумент %qD не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
#, fuzzy
msgid "cannot close receive-only channel"
msgstr "некорректный операнд в инÑтрукции"
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
msgid "argument must be a field reference"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
msgid "left argument must be a slice"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
msgid "first argument must be []byte"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
msgid "second argument must be slice or string"
msgstr "аргумент %qD не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
msgid "argument 2 has invalid type"
msgstr "%Jпараметр %u имеет неполный void"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
msgid "argument must have complex type"
msgstr "%Jпараметр %u имеет неполный тип"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
msgid "complex arguments must have identical types"
msgstr "аргумент атрибута cleanup - не идентификатор"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
msgid "complex arguments must have floating-point type"
msgstr "Ðе иÑпользовать аппаратную плавающую арифметику"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+msgid "invalid use of %<...%> with non-slice"
+msgstr "некорректное иÑпользование %<this%> на внешнем уровне"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
msgid "expected function"
msgstr "ОжидалаÑÑŒ Ñтрока"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
msgid "incompatible type for receiver"
msgstr "неÑовмеÑтимые типы в операторе возврата"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "некорректное иÑпользование %<this%> в функции, не ÑвлÑющейÑÑ Ñлементом"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
msgid "number of results does not match number of values"
msgstr "чиÑло входÑщих дуг не ÑоответÑтвует чиÑлу аргументов PHI"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
msgid "index must be integer"
msgstr "предикат должен быть идентификатором"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
msgid "slice end must be integer"
msgstr "предикат должен быть идентификатором"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
msgid "incompatible type for map index"
msgstr "неÑовмеÑтимые типы в приÑваивании"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
msgid "too many expressions for struct"
msgstr "Ñлишком много аргументов Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
msgid "too few expressions for struct"
msgstr "недоÑтаточно аргументов Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ формата"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
msgid "invalid unsafe.Pointer conversion"
msgstr "некорректный операнд в инÑтрукции"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
msgid "expected channel"
msgstr "ожидалоÑÑŒ Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
msgid "invalid left hand side of assignment"
@@ -12730,21 +12670,21 @@ msgstr "неверное lvalue-выражение в операторе asm"
msgid "expected boolean expression"
msgstr "ожидалоÑÑŒ выражение"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
msgid "incompatible types in send"
msgstr "неÑовмеÑтимые типы в операторе возврата"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
#, fuzzy
msgid "invalid send on receive-only channel"
msgstr "некорректный операнд в инÑтрукции"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
#, fuzzy
msgid "range clause must have array, slice, string, map, or channel type"
msgstr "аргумент %qD не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
@@ -12771,7 +12711,6 @@ msgstr "%Hповторно вÑтреченный клаÑÑ Ð±ÑƒÐ´ÐµÑ‚ Ñком
#: go/gofrontend/types.cc:553
#, fuzzy, c-format
-#| msgid "invalid operand to %%R"
msgid "invalid operation (%s)"
msgstr "некорректный операнд Ð´Ð»Ñ %%R"
@@ -12787,7 +12726,6 @@ msgstr "некорректный операнд в инÑтрукции"
#: go/gofrontend/types.cc:605
#, fuzzy
-#| msgid "invalid use of non-lvalue array"
msgid "invalid comparison of non-comparable array"
msgstr "некорректное иÑпользование маÑÑива, не ÑвлÑющегоÑÑ Ð»ÐµÐ²Ð¾Ð¹ чаÑтью приÑваиваниÑ"
@@ -12805,75 +12743,75 @@ msgstr "Предупреждать о неÑвных декларациÑÑ… фу
msgid "cannot use type %s as type %s"
msgstr "некорректное преобразование от типа %qT к типу %qT"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
msgid "different receiver types"
msgstr "некорректный тип приемника %qs"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
msgid "different number of parameters"
msgstr "повторное определение параметра %q+D"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
msgid "different parameter types"
msgstr "некорректный тип параметра %qT"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s"
msgstr "неÑовмеÑтимый тип аргумента %d функции %qE"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "неÑовмеÑтимый тип аргумента %d функции %qE"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
msgid "type has no methods"
msgstr "ошибка при грамматичеÑком разборе методов"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
msgid "ambiguous method %s%s%s"
msgstr "неоднозначное Ñокращение %s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
msgid "missing method %s%s%s"
msgstr "отÑутÑтвует аргумент Ð´Ð»Ñ \"%s\""
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -12940,7 +12878,7 @@ msgstr "третий аргумент %<__builtin_prefetch%> должен быт
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "вмеÑто неверного третьего аргумента `__builtin_prefetch' иÑпользуетÑÑ Ð½Ð¾Ð»ÑŒ"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "Ñлишком мало аргументов в вызове функции %<va_start%>"
@@ -12962,7 +12900,7 @@ msgstr "(поÑтому %<va_arg%> нужно передать %qT, а не %qT)
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "при доÑтижении Ñтого кода выполнение программы завершитÑÑ Ð°Ð²Ð°Ñ€Ð¸Ð¹Ð½Ð¾"
@@ -13044,7 +12982,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, fuzzy, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "неверный аргумент Ð´Ð»Ñ %<__builtin_frame_address%>"
@@ -13138,8 +13076,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "иÑпользование пуÑтого (void) значениÑ"
@@ -13414,7 +13352,7 @@ msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D перекрывает глобальную д
msgid "declaration of %q+D shadows a previous local"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D перекрывает декларированную ранее локальную переменную"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "%JÐ¿ÐµÑ€ÐµÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ð·Ð´ÐµÑÑŒ"
@@ -13519,7 +13457,7 @@ msgstr "переход в выражение-оператор"
msgid "%qE defined as wrong kind of tag"
msgstr "%H%qE: определение Ñ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ видом тега"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "неверное употребление Ñпецификатора %<restrict%>"
@@ -13541,7 +13479,6 @@ msgstr "пуÑÑ‚Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñ ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ тип
#: c-decl.c:3719
#, fuzzy, gcc-internal-format
-#| msgid "empty declaration with type qualifier does not redeclare tag"
msgid "empty declaration with %<_Alignas%> does not redeclare tag"
msgstr "пуÑÑ‚Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñ ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ типа не переопределÑет тег"
@@ -13557,7 +13494,6 @@ msgstr "%<inline%> в пуÑтой декларации"
#: c-decl.c:3762
#, fuzzy, gcc-internal-format
-#| msgid "%<inline%> in empty declaration"
msgid "%<_Noreturn%> in empty declaration"
msgstr "%<inline%> в пуÑтой декларации"
@@ -13588,7 +13524,6 @@ msgstr "беÑполезный квалификатор типа в пуÑтой
#: c-decl.c:3801
#, fuzzy, gcc-internal-format
-#| msgid "useless %<__thread%> in empty declaration"
msgid "useless %<_Alignas%> in empty declaration"
msgstr "беÑполезное %<__thread%> в пуÑтой декларации"
@@ -13640,7 +13575,7 @@ msgstr "параметр %qD инициализирован"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "объект переменного размера Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ"
@@ -13650,7 +13585,7 @@ msgstr "объект переменного размера Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð½Ð¸Ñ†
msgid "variable %qD has initializer but incomplete type"
msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD инициализирована, Ñ…Ð¾Ñ‚Ñ Ð¸Ð¼ÐµÐµÑ‚ неполный тип"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "inline Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %q+D Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ noinline"
@@ -13680,7 +13615,7 @@ msgstr "не задан размер маÑÑива Ð´Ð»Ñ %q+D"
msgid "zero or negative size array %q+D"
msgstr "размер маÑÑива %q+D нулевой или отрицательный"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "размер %q+D в памÑти неизвеÑтен"
@@ -13790,7 +13725,7 @@ msgstr "размер типа невозможно вычиÑлить Ñвно"
msgid "variable length array %qE is used"
msgstr "иÑпользуетÑÑ Ð¼Ð°ÑÑив переменного размера %qD"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -13875,7 +13810,7 @@ msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации параметра %
msgid "storage class specified for unnamed parameter"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации параметра %qs"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½ Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ типа"
@@ -14024,7 +13959,7 @@ msgstr "%qs объÑвлена как функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð
msgid "function definition has qualified void return type"
msgstr "в определении функции задан квалифицированный void-тип возвращаемого значениÑ"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "квалификаторы в опиÑании типа возвращаемого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ "
@@ -14071,7 +14006,6 @@ msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации Ð¿Ð¾Ð»Ñ ÑтрукÑ
#: c-decl.c:5765
#, fuzzy, gcc-internal-format
-#| msgid "alignment may not be specified for %q+D"
msgid "alignment specified for typedef %qE"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ выравнивание Ð´Ð»Ñ %q+D"
@@ -14092,7 +14026,6 @@ msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации параметра %
#: c-decl.c:5779
#, fuzzy, gcc-internal-format
-#| msgid "alignment may not be specified for %q+D"
msgid "alignment specified for bit-field %qE"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ выравнивание Ð´Ð»Ñ %q+D"
@@ -14123,7 +14056,6 @@ msgstr "typedef %q+D декларирован %<inline%>"
#: c-decl.c:5835
#, fuzzy, gcc-internal-format
-#| msgid "typedef %q+D declared %<inline%>"
msgid "typedef %q+D declared %<_Noreturn%>"
msgstr "typedef %q+D декларирован %<inline%>"
@@ -14138,7 +14070,7 @@ msgstr "в ISO C функции Ñ ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ const и volat
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "Ñлемент данных не может иметь тип %qT модифицируемого размера"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ поле %qE объÑвлено void"
@@ -14155,7 +14087,6 @@ msgstr "параметр %q+D объÑвлен %<inline%>"
#: c-decl.c:5965
#, fuzzy, gcc-internal-format
-#| msgid "parameter %q+D declared %<inline%>"
msgid "parameter %q+D declared %<_Noreturn%>"
msgstr "параметр %q+D объÑвлен %<inline%>"
@@ -14196,7 +14127,6 @@ msgstr "ISO C90 не поддерживает тип %<long long%>"
#: c-decl.c:6087
#, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
msgid "ISO C90 does not support %<_Noreturn%>"
msgstr "ISO C90 не поддерживает тип %<long long%>"
@@ -14212,7 +14142,6 @@ msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %q+D декларирована Ñо Ñпецифи
#: c-decl.c:6128
#, fuzzy, gcc-internal-format
-#| msgid "variable %q+D declared %<inline%>"
msgid "variable %q+D declared %<_Noreturn%>"
msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %q+D декларирована Ñо Ñпецификатором %<inline%>"
@@ -14564,7 +14493,7 @@ msgstr "аргумент %qD не ÑоответÑтвует вÑтроенноÐ
msgid "argument %qD doesn%'t match prototype"
msgstr "аргумент %qD не ÑоответÑтвует прототипу"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "в функции, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° возвращать значение, отÑутÑтвует оператор return"
@@ -14757,7 +14686,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr "ÑоглаÑно ISO C, входной файл не должен быть пуÑтым"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, fuzzy, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ÑоглаÑно ISO C, избыточный знак %<;%> поÑле функции не допуÑкаетÑÑ"
@@ -14767,7 +14696,7 @@ msgstr "ÑоглаÑно ISO C, избыточный знак %<;%> поÑле Ñ
msgid "unknown type name %qE"
msgstr "неизвеÑтное Ð¸Ð¼Ñ Ñ€ÐµÐ³Ð¸Ñтра: %s"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "ожидалиÑÑŒ Ñпецификаторы декларации"
@@ -14777,7 +14706,7 @@ msgstr "ожидалиÑÑŒ Ñпецификаторы декларации"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "ожидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ или %<(%>"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "атрибут %qE Ð´Ð»Ñ %qE проигнорирован"
@@ -14797,7 +14726,7 @@ msgstr "атрибут packed не требуетÑÑ"
msgid "data definition has no type or storage class"
msgstr "определение данных не Ñодержит ни типа, ни клаÑÑа хранениÑ"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "ожидалоÑÑŒ %<,%> или %<;%>"
@@ -14825,7 +14754,7 @@ msgstr "ISO C90 не поддерживает тип %<long long%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 не поддерживает тип %<long long%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "ожидалÑÑ Ñтроковый литерал"
@@ -14852,18 +14781,18 @@ msgstr "Ðе выполнено необходимое уÑловие в кодÐ
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "ожидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "запÑÑ‚Ð°Ñ Ð² конце ÑпиÑка значений перечиÑлимого типа"
@@ -14920,13 +14849,11 @@ msgstr "оператор %<typeof%> применен к битовому полÑ
#: c-parser.c:2789
#, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
msgid "ISO C99 does not support %<_Alignas%>"
msgstr "ISO C90 не поддерживает тип %<long long%>"
#: c-parser.c:2792
#, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
msgid "ISO C90 does not support %<_Alignas%>"
msgstr "ISO C90 не поддерживает тип %<long long%>"
@@ -14995,7 +14922,7 @@ msgstr "%HISO C90 запрещает Ñмешение деклараций и к
msgid "expected %<}%> before %<else%>"
msgstr "ожидалоÑÑŒ %<,%> или %<;%>"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -15024,17 +14951,17 @@ msgstr "ожидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ или %<*%>"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "%HпуÑтое тело в операторе if"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "%HпуÑÑ‚Ð°Ñ else-чаÑÑ‚ÑŒ"
@@ -15081,13 +15008,11 @@ msgstr "оператор %<sizeof%> применен к битовому полÑ
#: c-parser.c:6047
#, fuzzy, gcc-internal-format
-#| msgid "%s does not support %s"
msgid "ISO C99 does not support %qE"
msgstr "%s не поддерживает %s"
#: c-parser.c:6050
#, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
msgid "ISO C90 does not support %qE"
msgstr "ISO C90 не поддерживает тип %<long long%>"
@@ -15098,11 +15023,10 @@ msgstr "ISO C++ не поддерживает назначенные инициÐ
#: c-parser.c:6126
#, fuzzy, gcc-internal-format
-#| msgid "cannot take address of bit-field %qD"
msgid "cannot take address of %qs"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° взÑÑ‚ÑŒ Ð°Ð´Ñ€ÐµÑ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ %qD"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "ожидалоÑÑŒ выражение"
@@ -15139,261 +15063,260 @@ msgstr ""
#: c-parser.c:6633
#, fuzzy, gcc-internal-format
-#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "%<__builtin_complex%> operands of different types"
msgstr "второй аргумент %<__builtin_longjmp%> должен быть 1"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "Ñлишком мало аргументов в вызове функции %<va_start%>"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, fuzzy, gcc-internal-format
msgid "compound literal has variable size"
msgstr "ÑоÑтавной литерал имеет переменный размер"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, fuzzy, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 не поддерживает ÑоÑтавные литеральные выражениÑ"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "ожидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ или %<(%>"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, fuzzy, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "Ð¸Ð·Ð±Ñ‹Ñ‚Ð¾Ñ‡Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð·Ð°Ð¿Ñтой определении метода"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "ожидалиÑÑŒ Ñпецификаторы декларации"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "Ð´Ð»Ñ %qs задан клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "отÑутÑтвует %<(%> поÑле %<#pragma pack%> - директива проигнорирована"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "отÑутÑтвует %<(%> поÑле %<#pragma pack%> - директива проигнорирована"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "%Jатрибут section недопуÑтим Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… переменных"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "%Jатрибут адреÑного проÑтранÑтва Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ недопуÑтим"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, fuzzy, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "некорректный формат #pragma GCC pch_preprocess, директива проигнорирована"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
msgid "too many %qs clauses"
msgstr "Ñлишком много входных файлов"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "Ñравнение знакового и беззнакового целых выражений"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, fuzzy, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "ожидалоÑÑŒ %<,%> или %<;%>"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
msgid "expected integer expression"
msgstr "ожидалоÑÑŒ выражение"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, fuzzy, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "ожидалоÑÑŒ %<:%>, %<,%>, %<;%>, %<}%> или %<__attribute__%>"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
msgid "invalid schedule kind"
msgstr "некорректный операнд const_double"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ выходным файлом"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "некорректный операнд Ð´Ð»Ñ %<__fpreg%>"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, fuzzy, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "некорректный операнд Ð´Ð»Ñ %<__fpreg%>"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, fuzzy, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "некорректный операнд"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
msgid "for statement expected"
msgstr "перед `*' должно быть Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "ожидалаÑÑŒ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¸Ð»Ð¸ оператор"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, fuzzy, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable"
msgstr "аргумент `asm' - не конÑÑ‚Ð°Ð½Ñ‚Ð½Ð°Ñ Ñтрока"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, fuzzy, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%q+F объÑвлена %<static%>, но нигде не определена"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, fuzzy, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%Jпараметр %u имеет неполный тип"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15403,7 +15326,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD имеет неполный тип"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "неправильное иÑпользование void-выражениÑ"
@@ -15469,67 +15392,72 @@ msgstr "тип Ñлемента `%T::' неÑовмеÑтим Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ об
msgid "function return types not compatible due to %<volatile%>"
msgstr "типы возвращаемых значений функции неÑовмеÑтимы из-за %<volatile%>"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "арифметичеÑÐºÐ°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ð°Ð´ указателем на неполный тип"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT не Ñодержит Ñлемента Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %qE"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "выборка Ñлемента %qE из объекта, не ÑвлÑющегоÑÑ Ñтруктурой или объединением"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "доÑтуп по указателю на неполный тип"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "доÑтуп по указателю %<void *%>"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "индекÑируемый объект не ÑвлÑетÑÑ Ð½Ð¸ маÑÑивом, ни указателем"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ñ‹Ð¼ значением"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "индекÑируемый Ñлемент ÑвлÑетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼ на функцию"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
msgid "index value is out of bound"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾Ñти %d выходит за границы в %L"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "в ISO C индекÑирование %<register%>-маÑÑивов запрещено"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "в ISO C индекÑирование не-lvalue маÑÑива запрещено"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "вызываемый объект %qE не ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹"
@@ -15537,373 +15465,372 @@ msgstr "вызываемый объект %qE не ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "вызов функции через неÑовмеÑтимый тип"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "в определении функции задан квалифицированный void-тип возвращаемого значениÑ"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "первый аргумент должен быть 5-битным знаковым литеральным значением"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
-#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "второй аргумент %<__builtin_longjmp%> должен быть 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, fuzzy, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr "аргумент `%s' должен быть 2-битным беззнаковым литеральным значением"
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "Ñлишком много аргументов в вызове функции %qE"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "Ñлишком много аргументов в вызове функции %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
msgid "declared here"
msgstr "%q+D объÑвлено здеÑÑŒ"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "формальный параметр %d имеет неполный тип"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как целое, а не плавающее"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как целое, а не комплекÑное"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как комплекÑное, а не плавающее"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как плавающее, а не целое"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как комплекÑное, а не целое"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как плавающее, а не комплекÑное"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как %<float%>, а не %<double%>"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как целое, а не комплекÑное"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ шириной"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как unsigned"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "аргумент %d %qE ÑоглаÑно прототипу будет передан как signed"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "неÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð· %qT в %qT, Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð½Ð°Ñ Ð² C++"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "Ñлишком мало аргументов в вызове функции %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "Ð´Ð»Ñ weak декларации %q+D поÑле первого иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑиÑтемы не Ñпецифицировано"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "Ñравнение между %q#T и %q#T"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "указатель %<void *%> в операции вычитаниÑ"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "указатель на функцию в операции вычитаниÑ"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "в ISO C не поддерживаетÑÑ Ð¸Ñпользование %<~%> Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ комплекÑного ÑопрÑжениÑ"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "неверный тип аргумента Ð´Ð»Ñ ÑƒÐ½Ð°Ñ€Ð½Ð¾Ð³Ð¾ `!'"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "в ISO C операции %<++%> и %<--%> Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑных типов не поддерживаютÑÑ"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "неверный тип аргумента инкрементации"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "неверный тип аргумента декрементации"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "Ð¸Ð½ÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° неизвеÑтную Ñтруктуру"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "Ð´ÐµÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° неизвеÑтную Ñтруктуру"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr "Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ временной переменной"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "приÑваивание позиции в памÑти, доÑтупной только на чтение"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "Ð¸Ð½ÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ в памÑти, доÑтупной только на чтение"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "Ð´ÐµÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ в памÑти, доÑтупной только на чтение"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° взÑÑ‚ÑŒ Ð°Ð´Ñ€ÐµÑ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ %qD"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD иÑпользована во вложенной функции"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "региÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD иÑпользована во вложенной функции"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "запрошен Ð°Ð´Ñ€ÐµÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¹ региÑтровой переменной %qD"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "запрошен Ð°Ð´Ñ€ÐµÑ Ñ€ÐµÐ³Ð¸Ñтровой переменной %qD"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "не lvalue-маÑÑив в уÑловном выражении"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "неÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð· %qT в %qT, Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð½Ð°Ñ Ð² C++"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "в ISO C запрещены уÑловные выражениÑ, где только одна из альтернатив имеет тип void"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "неÑоответÑтвие указательных типов в уÑловном выражении"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "в ISO C запрещены уÑловные выражениÑ, Ñ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð°Ð¼Ð¸ типа %<void *%> и указатель на функцию"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "неÑоответÑтвие указательных типов в уÑловном выражении"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "неÑоответÑтвие типов указатель/целое в уÑловном выражении"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "левый операнд операции `запÑтаÑ' не имеет побочных Ñффектов"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
msgid "cast adds %q#v qualifier to function type"
msgstr "приведение типа добавлÑет дополнительные квалификаторы к типу функции"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "приведение типа отменÑет квалификаторы указуемого типа"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "тип маÑÑива в операции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "тип функции в операции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "в ISO C приведение неÑкалÑрного типа к тому же типу запрещено"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "в ISO C приведение к типу Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "приведение к типу Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¾Ñ‚ типа, отÑутÑтвующего в объединении"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "приведение типа требует большего выравниваниÑ, чем иÑходный тип"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "приведение ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ðº целому другого размера"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "приведение вызова функции типа %qT к неÑоответÑтвующему типу %qT"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "приведение к типу ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð¾Ñ‚ целого другого размера"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C запрещает преобразование ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию к указателю на объект"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C запрещает преобразование ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° объект к указателю на функцию "
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -15915,692 +15842,691 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, fuzzy, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "формат %q.*s предполагает тип %<%T%s%>, но аргумент %d имеет тип %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, fuzzy, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "при передаче аргумента %d %qE: указуемые типы различаютÑÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¾Ñтью"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "передача rvalue-Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² качеÑтве параметра-ÑÑылки запрещена"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "передача аргумента %d %qE добавлÑет квалификатор к указателю на функцию без квалификаторов"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "приÑваивание добавлÑет квалификатор к указателю на функцию без квалификаторов"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñет квалификатор к указателю на функцию без квалификаторов"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "возврат Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñет квалификатор к указателю на функцию без квалификаторов"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "передача аргумента %d %qE отменÑет квалификаторы указуемого типа"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "приÑваивание отменÑет квалификаторы указуемого типа"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñет квалификаторы указуемого типа"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
msgid "return discards %qv qualifier from pointer target type"
msgstr "возврат результата отменÑет квалификаторы указуемого типа"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "в ISO C преобразование аргумента к типу Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "неÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð· %qT в %qT, Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð½Ð°Ñ Ð² C++"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "в передаче аргумента %d %qE: неÑовмеÑтимый тип указателÑ"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr "приведение ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ðº целому другого размера"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "неÑовмеÑтимый тип ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð² инициализации"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "аргументу %d %qE, вероÑтно, можно назначить атрибут format"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "левой чаÑти приÑваиваниÑ, вероÑтно, можно назначить атрибут format"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "левой чаÑти инициализации, вероÑтно, можно задать атрибут format"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "тип результата, вероÑтно, может быть задан Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ format"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "в ISO C передача аргумента %d функции %qE Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию в тип %<void * %> запрещена"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "в ISO C приÑваивание Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию в тип %<void *%> запрещено"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "в ISO C Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию в тип %<void *%> запрещена"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "в ISO C возврат результата Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию в тип %<void *%> запрещен"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "при передаче аргумента %d %qE: указуемые типы различаютÑÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¾Ñтью"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "в приÑваивании указуемые типы различаютÑÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¾Ñтью"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "в инициализации указуемые типы различаютÑÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¾Ñтью"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "при возврате результата указуемые типы различаютÑÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¾Ñтью"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "в передаче аргумента %d %qE: неÑовмеÑтимый тип указателÑ"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "неÑовмеÑтимый тип ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð² приÑваивании"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "неÑовмеÑтимый тип ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð² инициализации"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "неÑовмеÑтимый тип ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¸ возврате результата функции"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "некорректное иÑпользование маÑÑива, не ÑвлÑющегоÑÑ Ð»ÐµÐ²Ð¾Ð¹ чаÑтью приÑваиваниÑ"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "при передаче аргумента %d %qE целое преобразуетÑÑ Ð² указатель без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "в приÑваивании целое преобразуетÑÑ Ð² указатель без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "при инициализации целое преобразуетÑÑ Ð² указатель без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "при возврате результата функции целое преобразуетÑÑ Ð² указатель без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "при передаче аргумента %d %qE указатель преобразуетÑÑ Ð² целое без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "в приÑваивании указатель преобразуетÑÑ Ð² целое без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "при инициализации указатель преобразуетÑÑ Ð² целое без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "при возврате результата указатель преобразуетÑÑ Ð² целое без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "неÑовмеÑтимый тип аргумента %d функции %qE"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "неÑовмеÑтимые типы в приÑваивании %qT -> %qT"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "неÑовмеÑтимые типы при инициализации"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, fuzzy, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "неÑовмеÑтимые типы в приÑваивании %qT -> %qT"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "в традиционном C Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑких агрегатных переменных запрещена"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(где-то Ñ€Ñдом Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹ Ð´Ð»Ñ %qs)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñимвольного маÑÑива Ñтрокой в Ñкобках"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ³ÑƒÐ»Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñлемента-маÑÑива"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñимвольного маÑÑива Ñтрокой широких Ñимволов"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "маÑÑив Ñимволов типа wchar_t инициализирован Ñтрокой обычных Ñимволов"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "маÑÑив Ñимволов типа wchar_t инициализирован Ñтрокой обычных Ñимволов"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼Ð°ÑÑива неÑоответÑтвующего типа Ñтроковой конÑтантой"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼Ð°ÑÑива неконÑтантным выражением"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "Ñлемент инициализатора не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "Ñлемент инициализатора не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "инициализирующий Ñлемент не может быть вычиÑлен во Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "неверный инициализатор"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "вектор Ñкрытого типа не может быть инициализирован"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "избыточные фигурные Ñкобки в конце инициализатора"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "отÑутÑтвуют фигурные Ñкобки вокруг инициализатора"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "фигурные Ñкобки вокруг ÑкалÑрного инициализатора"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñлемента регулируемого Ñлемента-маÑÑива во вложенном контекÑте"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "пропущен инициализатор"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "пуÑтой ÑкалÑрный инициализатор"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "избыточные Ñлементы в ÑкалÑрном инициализаторе"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициализаторе не Ð´Ð»Ñ Ð¼Ð°ÑÑива"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð² инициализаторе не Ð´Ð»Ñ Ñтруктуры или объединениÑ"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициализации не целого типа"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициализации не целого типа"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "неконÑтантный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициализаторе"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициализаторе - за границами маÑÑива"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "пуÑтой диапазон индекÑов в инициализаторе"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "диапазон индекÑов маÑÑива в инициализаторе - за границами маÑÑива"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "неизвеÑтное поле %qE в инициализаторе"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»Ñ Ñ Ð¿Ð¾Ð±Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ Ñффектами"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "инициализированное поле перезапиÑано"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "избыточные Ñлементы в инициализаторе Ñимвольного маÑÑива"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "избыточные Ñлементы в инициализаторе Ñтруктуры"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "не ÑтатичеÑÐºÐ°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ³ÑƒÐ»Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñлемента-маÑÑива в Ñтруктуре"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "избыточные Ñлементы в инициализаторе объединениÑ"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "в традиционном C Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¹ запрещена"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "избыточные Ñлементы в инициализаторе маÑÑива"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "избыточные Ñлементы в инициализаторе вектора"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "избыточные Ñлементы в инициализаторе ÑкалÑра"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "в ISO C операторы вида %<goto *expr;%> запрещены"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ %<noreturn%> Ñодержит оператор %<return%>"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "оператор %<return%> без Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² функции, возвращающей не void-значение"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "оператор %<return%> <значение> в функции возвращающей void"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "оператор %<return%> <значение> в функции возвращающей void"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ Ð°Ð´Ñ€ÐµÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ переменной"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "в операторе switch задано не целое"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "в ISO C %<long%>-выражение в операторе switch не преобразуетÑÑ Ð² %<int%>"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "размер маÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case-метка вне оператора switch"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "метка %<default%> вне оператора switch"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, fuzzy, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%HиÑпользуйте фигурные Ñкобки во избежание неоднозначной трактовки %<else%>"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "оператор break вне цикла или оператора switch"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "оператор continue вне цикла"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, fuzzy, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "оператор break вне цикла или оператора switch"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "оператор без побочного Ñффекта"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "оператор-выражение имеет неполный тип"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "Ñдвиг вправо на отрицательное чиÑло позиций"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "величина Ñдвига вправо больше или равна ширине данного типа"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "Ñдвиг влево на отрицательное чиÑло позиций"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "величина Ñдвига влево больше или равна ширине данного типа"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr "Предупреждать о отÑтуплениÑÑ… от ÑÑ‚Ð¸Ð»Ñ Effective C++"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "Ñравнение плавающих значений при помощи == или != не надежно"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr "Ñравнение различных указательных типов без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "в ISO C Ñравнение ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼ %<void *%> запрещено"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "Ñравнение различных указательных типов без Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "Ñравнение ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð¸ целого"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "Ñравнение указателей на полный и неполный типы"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C разрешает Ñравнение указателей на функции только на равенÑтво/неравенÑтво"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr "упорÑдоченное Ñравнение ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным нулем"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "упорÑдоченное Ñравнение ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным нулем"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "неÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð· %qT в %qT, Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð½Ð°Ñ Ð² C++"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "маÑÑив, не приводимый к указателю, употреблен в контекÑте, где допуÑтимо только ÑкалÑрное значение"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "Ñтруктурное значение употреблено в контекÑте, где допуÑтимо только ÑкалÑрное значение"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "объединение употреблено в контекÑте, где допуÑтимо только ÑкалÑрное значение"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
-#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "Ñтруктурное значение употреблено в контекÑте, где допуÑтимо только ÑкалÑрное значение"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "неверное употребление Ñпецификатора %<restrict%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, fuzzy, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qT не ÑвлÑетÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¼ Ð´Ð»Ñ %qT"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, fuzzy, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, fuzzy, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -16610,7 +16536,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ агрегатное значение"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "размер переменной %q+D Ñлишком велик"
@@ -16767,7 +16693,6 @@ msgstr "%s не поддерживает make_forwarder_block"
#: cfghooks.c:889
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s does not support move_block_after"
msgid "%s does not support force_nonfallthru"
msgstr "%s не поддерживает move_block_after"
@@ -16928,7 +16853,6 @@ msgstr "ÑÐºÐ²Ð¾Ð·Ð½Ð°Ñ Ð´ÑƒÐ³Ð° переÑекает границу Ñекци
#: cfgrtl.c:1913
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "fallthru edge crosses section boundary (bb %i)"
msgid "EH edge crosses section boundary (bb %i)"
msgstr "ÑÐºÐ²Ð¾Ð·Ð½Ð°Ñ Ð´ÑƒÐ³Ð° переÑекает границу Ñекции (блок %i)"
@@ -17249,7 +17173,6 @@ msgstr "процедура verify_cgraph_node выÑвила ошибки"
#: cgraphunit.c:851
#, fuzzy, gcc-internal-format
-#| msgid "function %q+D redeclared as inline"
msgid "function %q+D part of alias cycle"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %q+D повторно декларирована как inline"
@@ -17270,7 +17193,6 @@ msgstr "атрибут %qE Ð´Ð»Ñ Ð½Ðµ клаÑÑовых типов игнорÐ
#: cgraphunit.c:1032
#, fuzzy, gcc-internal-format
-#| msgid "Warn when an inlined function cannot be inlined"
msgid "always_inline function might not be inlinable"
msgstr "Предупреждать об inline-функциÑÑ…, подÑтановка которых невозможна"
@@ -17286,7 +17208,6 @@ msgstr "ошибка при возврате ненужной функции"
#: cgraphunit.c:1447
#, fuzzy, gcc-internal-format
-#| msgid "failed to reclaim unneeded function"
msgid "failed to reclaim unneeded function in same comdat group"
msgstr "ошибка при возврате ненужной функции"
@@ -17322,19 +17243,16 @@ msgstr "неизвеÑтный Ñтиль Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼Ñ‘Ð½ '%
#: collect2.c:1680 collect2.c:1863 collect2.c:1898
#, fuzzy, gcc-internal-format
-#| msgid "fopen %s"
msgid "fopen %s: %m"
msgstr "fopen %s"
#: collect2.c:1683 collect2.c:1868 collect2.c:1901
#, fuzzy, gcc-internal-format
-#| msgid "fclose %s"
msgid "fclose %s: %m"
msgstr "fclose %s"
#: collect2.c:1965
#, fuzzy, gcc-internal-format
-#| msgid "can't get program status"
msgid "can't get program status: %m"
msgstr "не удалоÑÑŒ получить ÑоÑтоÑние программы"
@@ -17380,7 +17298,6 @@ msgstr "не удалоÑÑŒ найти 'nm'"
#: collect2.c:2639
#, fuzzy, gcc-internal-format
-#| msgid "can't open nm output"
msgid "can't open nm output: %m"
msgstr "не удалоÑÑŒ открыть выходной файл nm"
@@ -17401,7 +17318,6 @@ msgstr "не найдена программа `ldd'"
#: collect2.c:2834
#, fuzzy, gcc-internal-format
-#| msgid "can't open ldd output"
msgid "can't open ldd output: %m"
msgstr "не удалоÑÑŒ открыть выходной файл ldd"
@@ -17430,52 +17346,52 @@ msgstr "%s: ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ COFF-файла"
msgid "library lib%s not found"
msgstr "не найдена библиотека lib%s"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "преобразование к типу ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "указатель вмеÑто ожидаемого плавающего значениÑ"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "агрегатное значение вмеÑто ожидаемого плавающего"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "преобразование к неполному типу"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr "невозможно преобразовать векторное значение в векторное значение другого размера"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "агрегатное значение вмеÑто ожидаемого целого"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "указатель вмеÑто ожидаемого комплекÑного значениÑ"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "агрегатное значение вмеÑто ожидаемого комплекÑного"
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "невозможно преобразовать значение в вектор"
-#: convert.c:1004
+#: convert.c:1002
#, fuzzy, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr "агрегатное значение вмеÑто ожидаемого плавающего"
@@ -17497,7 +17413,6 @@ msgstr ""
#: coverage.c:277
#, fuzzy, gcc-internal-format
-#| msgid "checksum is %x instead of %x"
msgid "checksum is (%x,%x) instead of (%x,%x)"
msgstr "ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма %x, а должна быть %x"
@@ -17631,7 +17546,7 @@ msgstr "доминатором %d должен быть %d, а не %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -17721,43 +17636,42 @@ msgstr "процедура verify_eh_tree выÑвила ошибки"
msgid "stack limits not supported on this target"
msgstr "проверка выхода за границу Ñтека не поддерживаетÑÑ Ð´Ð»Ñ Ñтой платформы"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации Ð¿Ð¾Ð»Ñ Ñтруктуры %qs"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации Ð¿Ð¾Ð»Ñ Ñтруктуры %qs"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
-#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD иÑпользована во вложенной функции"
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%JÑ„ÑƒÐ½ÐºÑ†Ð¸Ñ %qD повторно декларирована Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ noinline"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "%JÑ„ÑƒÐ½ÐºÑ†Ð¸Ñ %qD повторно декларирована Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ noinline"
@@ -17832,7 +17746,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "проверка fold: иÑходное дерево изменено функцией fold"
@@ -17842,7 +17756,7 @@ msgstr "проверка fold: иÑходное дерево изменено Ñ„
msgid "total size of local objects too large"
msgstr "%Jобщий размер локальных объектов Ñлишком велик"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "некорректное ограничение в %<asm%>"
@@ -18125,7 +18039,6 @@ msgstr "результат ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ - вÑегда %d"
#: gcc.c:6883
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "field %qs not found"
msgid "-fuse-linker-plugin, but %s not found"
msgstr "нет Ð¿Ð¾Ð»Ñ %qs"
@@ -18287,77 +18200,77 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "дерево: ожидалÑÑ ÐºÐ»Ð°ÑÑ %qs, обнаружен %qs (%s) в %s, на %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "в функции, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° возвращать значение, отÑутÑтвует оператор return"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "неверное lvalue-выражение в выходном операторе %d оператора asm"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "невозможна прÑÐ¼Ð°Ñ Ð°Ð´Ñ€ÐµÑÐ°Ñ†Ð¸Ñ Ðº входной позиции памÑти %d"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr "региÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD иÑпользована во вложенной функции"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr "региÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs иÑпользована во вложенной функции"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr "Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD недопуÑтима в данном контекÑте"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð´Ð°Ð¼Ð¿-файла %qs: %s"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð´Ð°Ð¼Ð¿-файла %qs: %s"
@@ -18412,7 +18325,7 @@ msgstr "Включить оптимизации циклов на древови
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18551,48 +18464,48 @@ msgstr "поле %qs опиÑано как функциÑ"
msgid "function %qD redeclared as variable"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %q+D повторно декларирована как inline"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, fuzzy, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr " входит в try-блок"
@@ -18698,7 +18611,7 @@ msgstr "-freorder-blocks-and-partition не работает Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition не работает Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ архитектуры"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition не работает Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ архитектуры"
@@ -18826,13 +18739,11 @@ msgstr "неопознанный ключ '-%s'"
#: passes.c:710
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "unknown field %qE specified in initializer"
msgid "unknown pass %s specified in -fenable"
msgstr "неизвеÑтное поле %qE в инициализаторе"
#: passes.c:712
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "unknown field %qE specified in initializer"
msgid "unknown pass %s specified in -fdisable"
msgstr "неизвеÑтное поле %qE в инициализаторе"
@@ -18848,7 +18759,6 @@ msgstr ""
#: passes.c:778 passes.c:806
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "invalid floating point option: -mfpu=%s"
msgid "Invalid range %s in option %s"
msgstr "некорректный ключ плавающей арифметики: -mfpu=%s"
@@ -19056,9 +18966,9 @@ msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать '%s' как %s региÑÑ‚Ñ€"
msgid "can%'t use %qs as a fixed register"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать '%s' как %s региÑÑ‚Ñ€"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "неизвеÑтное Ð¸Ð¼Ñ Ñ€ÐµÐ³Ð¸Ñтра: %s"
@@ -19075,13 +18985,11 @@ msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ - за
#: reginfo.c:888
#, fuzzy, gcc-internal-format
-#| msgid "register used for two global register variables"
msgid "register of %qD used for multiple global register variables"
msgstr "региÑÑ‚Ñ€ назначен Ð´Ð»Ñ Ð´Ð²ÑƒÑ… глобальных региÑтровых переменных"
#: reginfo.c:891
#, fuzzy, gcc-internal-format
-#| msgid " conflict with %q+D"
msgid "conflicts with %qD"
msgstr " конфликт Ñ %q+D"
@@ -19140,12 +19048,12 @@ msgstr "не найден региÑÑ‚Ñ€ клаÑÑа %qs Ð´Ð»Ñ Ð²Ñ‹Ñ‚Ð°Ð»ÐºÐ¸Ð
msgid "%<asm%> operand requires impossible reload"
msgstr "Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° %<asm%> требуетÑÑ Ð½ÐµÐ¾ÑущеÑÑ‚Ð²Ð¸Ð¼Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° данных"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "ограничитель операнда %<asm%> не ÑоглаÑуетÑÑ Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ операнда"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "выходной операнд %<asm%> - конÑтанта"
@@ -19365,7 +19273,7 @@ msgstr "атрибут packed приводит к неÑффективному Ð
msgid "packed attribute is unnecessary"
msgstr "атрибут packed не требуетÑÑ"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "выравнивание Ñлементов маÑÑива превышает их размер"
@@ -19397,13 +19305,11 @@ msgstr "#pragma extern_prefix Ð´Ð»Ñ Ñтой платформы не подде
#: tlink.c:492
#, fuzzy, gcc-internal-format
-#| msgid "removing .rpo file"
msgid "removing .rpo file: %m"
msgstr "удаление файла .rpo"
#: tlink.c:494
#, fuzzy, gcc-internal-format
-#| msgid "renaming .rpo file"
msgid "renaming .rpo file: %m"
msgstr "переименование файла .rpo"
@@ -19449,13 +19355,11 @@ msgstr ""
#: toplev.c:1114
#, fuzzy, gcc-internal-format
-#| msgid "stackframe too big: %d bytes"
msgid "stack usage might be %wd bytes"
msgstr "кадр Ñтека Ñлишком велик: %d байт"
#: toplev.c:1117
#, fuzzy, gcc-internal-format
-#| msgid "stackframe too big: %d bytes"
msgid "stack usage is %wd bytes"
msgstr "кадр Ñтека Ñлишком велик: %d байт"
@@ -19584,7 +19488,7 @@ msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ клÐ
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19596,11 +19500,10 @@ msgstr ""
#: trans-mem.c:674
#, fuzzy, gcc-internal-format
-#| msgid "originally indirect function call not considered for inlining"
msgid "unsafe indirect function call within atomic transaction"
msgstr "inline-функции, переопределённые как extern, не подлежат подÑтановке"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19615,20 +19518,18 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr "проÑтранÑтво имён %qD не допуÑкаетÑÑ Ð² using-декларации"
#: trans-mem.c:710
#, fuzzy, gcc-internal-format
-#| msgid "attributes are not allowed on a function-definition"
msgid "asm not allowed in %<transaction_safe%> function"
msgstr "атрибуты не допуÑкаютÑÑ Ð¿Ñ€Ð¸ определении функции"
#: trans-mem.c:721
#, fuzzy, gcc-internal-format
-#| msgid "Place each function into its own section"
msgid "relaxed transaction in atomic transaction"
msgstr "Помещать каждую функцию в отдельную Ñекцию"
@@ -19639,7 +19540,6 @@ msgstr ""
#: trans-mem.c:731
#, fuzzy, gcc-internal-format
-#| msgid "pointer to a function used in subtraction"
msgid "outer transaction in transaction"
msgstr "указатель на функцию в операции вычитаниÑ"
@@ -19653,613 +19553,612 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
-#| msgid "attributes are not allowed on a function-definition"
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "атрибуты не допуÑкаютÑÑ Ð¿Ñ€Ð¸ определении функции"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "конÑтанта не перевычиÑлена поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ADDR_EXPR"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "побочные Ñффекты не перевычиÑлены поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ADDR_EXPR"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "Ð¸Ð¼Ñ SSA в ÑпиÑке Ñвободных, но на него еÑÑ‚ÑŒ ÑÑылки"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "некорректный операнд Ð´Ð»Ñ %%R"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "некорректный операнд Ð´Ð»Ñ %%R"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR Ñ Ñ‚Ð¾Ð¶Ð´ÐµÑтвенно ложным уÑловием"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "Ð°Ð´Ñ€ÐµÑ Ð±Ñ‹Ð» взÑÑ‚, а бит ADDRESSABLE не уÑтановлен"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
msgid "non-integral used in condition"
msgstr "в уÑловии иÑпользовано не булево выражение"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "некорректный операнд уÑловного оператора"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "некорректные Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "неверный Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ÑÑылки"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "некорректный операнд в инÑтрукции"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "в ÑпиÑке операндов задано некорректное выражение"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "некорректный операнд в инÑтрукции"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "неверные операнды бинарной операции %s"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "отÑутÑтвует Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, fuzzy, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "отÑутÑтвует Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
msgid "conversion of register to a different size"
msgstr "приведение ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ðº целому другого размера"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "некорректный операнд Ð´Ð»Ñ %%R"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "некорректный оператор Ñдвига"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, fuzzy, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr "некорректный операнд Ð´Ð»Ñ %%R"
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "некорректное приведение к типу функции %qT"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
msgid "non-function in gimple call"
msgstr "inline-подÑтановка функции невозможна"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs задан неверный клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "некорректное значение PC в таблице номеров Ñтрок"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "некорректное преобразование к %<__fpreg%>"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr "некорректное значение PC в таблице номеров Ñтрок"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "некорректный аргумент внутренней функции"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "некорректный операнд в инÑтрукции"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, fuzzy, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr "некорректный операнд в инÑтрукции"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr "неправильное иÑпользование void-выражениÑ"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, fuzzy, gcc-internal-format
msgid "bogus comparison result type"
msgstr "Предупреждать о отÑтуплениÑÑ… от ÑÑ‚Ð¸Ð»Ñ Effective C++"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "неверные операнды бинарной операции %s"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "переполнение при вычиÑлении конÑтантного выражениÑ"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "переполнение при вычиÑлении конÑтантного выражениÑ"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "переполнение при вычиÑлении конÑтантного выражениÑ"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "некорректное преобразование к %<__fpreg%>"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "некорректное преобразование к %<__fpreg%>"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð»ÐµÐ²Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ в приÑваивании"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, fuzzy, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr "В подпрограмме"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "неверные операнды бинарной операции %s"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, fuzzy, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "неверные операнды бинарной операции %s"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "неверные операнды бинарной операции %s"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "неверные операнды бинарной операции %s"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr "ожидалоÑÑŒ выражение"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr "некорректный операнд в инÑтрукции"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð»ÐµÐ²Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ в приÑваивании"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "неверные операнды бинарной операции %s"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr "ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ¾ÑÐ²ÐµÐ½Ð½Ð°Ñ Ð°Ð´Ñ€ÐµÑÐ°Ñ†Ð¸Ñ Ð¿Ð°Ð¼Ñти"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "некорректный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%s"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "некорректный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%s"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "индекÑируемый объект не ÑвлÑетÑÑ Ð½Ð¸ маÑÑивом, ни указателем"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "некорректный операнд Ð´Ð»Ñ ÐºÐ¾Ð´Ð° %%s"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr "неверное чиÑло операндов в форматной Ñтроке"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "некорректный операнд в инÑтрукции"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "неверное lvalue-выражение в выходном операторе %d оператора asm"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
msgid "invalid PHI result"
msgstr "некорректный адреÑ"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
msgid "missing PHI def"
msgstr "отÑутÑтвует определение"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
msgid "invalid PHI argument"
msgstr "некорректный тип аргумента"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "неÑовмеÑтимые типы в приÑваивании"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, fuzzy, gcc-internal-format
msgid "verify_gimple failed"
msgstr "процедура verify_stmts выÑвила ошибки"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, fuzzy, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "bb_for_stmt (phi) указывает не на тот блок"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "недопуÑтимое разделение узлов дерева"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, fuzzy, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "bb_for_stmt (stmt) указывает не на тот блок"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
msgid "in statement"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "оператор помечен как throw, но не ÑвлÑетÑÑ Ñ‚Ð°ÐºÐ¾Ð²Ñ‹Ð¼"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "оператор помечен как throw в Ñередине блока"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, fuzzy, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "Ñ ENTRY_BLOCK аÑÑоциирован ÑпиÑок операторов"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, fuzzy, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr "Ñ EXIT_BLOCK аÑÑоциирован ÑпиÑок операторов"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "Ñквозной выход из блока %d"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð¼ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ блока %d"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "ÑÐºÐ²Ð¾Ð·Ð½Ð°Ñ Ð´ÑƒÐ³Ð° поÑле оператора ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² блоке %d"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "дуга true/false поÑле не COND_EXPR в блоке %d"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "некорректные флаги выходной дуги в конце блока %d"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "Ñвный переход goto в конце блока %d"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "дуга return не указывает на конец блока %d"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, fuzzy, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr "Ñлучай default - не в конце case-вектора"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
msgid "case labels not sorted: "
msgstr "case-метки не отÑортированы"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "лишнÑÑ Ð¸ÑходÑÑ‰Ð°Ñ Ð´ÑƒÐ³Ð° %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "отÑутÑтвует дуга %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "%Hвыход из функции Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ %<noreturn%>"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, fuzzy, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "%Hуправление доÑтигает конца не-void функции"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%Hрезультат %qD, декларированной Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ warn_unused_result, игнорируетÑÑ"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, fuzzy, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "%Hрезультат функции, декларированной Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ warn_unused_result, игнорируетÑÑ"
@@ -20319,73 +20218,72 @@ msgstr "в поÑледнем операторе блока %i некоррекÑ
msgid "BB %i has incorrect fallthru edge"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ RTL-инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð² Ñквозной дуге"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку имеют нелокальные переходы в Ñту функцию"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, fuzzy, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ñпользует переменные переменного размера"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ñпользует alloca (задайте атрибут always_inline)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ñпользует setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ñпользует ÑпиÑки из переменного чиÑла аргументов"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñодержит обработку иÑключительных Ñитуаций setjmp-longjmp"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ñпользует не локальный goto"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ñпользует __builtin_return или __builtin_apply_args"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "inline-подÑтановка функции %q+F невозможна, поÑкольку Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ñпользует вычиÑлÑемый goto"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "подÑтановка функций %q+F невозможна, Ñ‚.к. задан ключ -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "подÑтановка функции %q+F невозможна, Ñ‚.к. она имеет атрибуты, препÑÑ‚Ñтвующие inline-подÑтановке"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
-#| msgid "inlining failed in call to %q+F: %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "inline-подÑтановка при вызове %q+F не выполнена: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð° здеÑÑŒ"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "inline-подÑтановка при вызове %q+F не выполнена: %s"
@@ -20458,19 +20356,16 @@ msgstr ""
#: tree-ssa-operands.c:1175
#, fuzzy, gcc-internal-format
-#| msgid "operand number missing after %%-letter"
msgid "use operand missing for stmt"
msgstr "не задан номер операнда поÑле %%-буква"
#: tree-ssa-operands.c:1192
#, fuzzy, gcc-internal-format
-#| msgid "expected declaration or statement"
msgid "excess def operand for stmt"
msgstr "ожидалаÑÑŒ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¸Ð»Ð¸ оператор"
#: tree-ssa-operands.c:1200
#, fuzzy, gcc-internal-format
-#| msgid "operand number missing after %%-letter"
msgid "def operand missing for stmt"
msgstr "не задан номер операнда поÑле %%-буква"
@@ -20599,7 +20494,7 @@ msgstr "оператор (%p) помечен как измененный поÑÐ
msgid "verify_ssa failed"
msgstr "процедура verify_ssa выÑвила ошибки"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
msgid "%qD was declared here"
msgstr " Ð¸Ð¼Ñ `%#D' объÑвлено здеÑÑŒ"
@@ -20659,52 +20554,52 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ñ‹Ð¼ значением"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ñ‹Ð¼ значением"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ñ‹Ð¼ значением"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, fuzzy, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "из-за ограниченноÑти диапазона типа данных, результат ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð²Ñегда ложь"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, fuzzy, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "из-за ограниченноÑти диапазона типа данных, результат ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð²Ñегда иÑтина"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -20714,22 +20609,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr "отброшены атрибуты клаÑÑа, заданные вне его объÑвлениÑ"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D уже декларирован(а) Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ dllexport: dllimport игнорируетÑÑ"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D повторно декларирован(а) без атрибута dllimport поÑле ÑÑылок Ñ dll привÑзкой"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D повторно декларирован(а) без атрибута dllimport: предшеÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñ dllimport игнорируетÑÑ"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20744,140 +20639,140 @@ msgstr "%q+D повторно декларирован(а) без атрибут
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "атрибут %qE проигнорирован"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "inline Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %q+D декларирована как dllimport: атрибут игнорируетÑÑ"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "определение функции %q+D помечено dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "определение переменной %q+D помечено dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, fuzzy, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "Ñимвол %q+D должен быть внешним, поÑкольку задан атрибут %qs"
-#: tree.c:5627
+#: tree.c:5628
#, fuzzy, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%J%qD повторно декларирован как Ñимвол другого вида"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "маÑÑивы функций не имеют оÑмыÑленной интерпретации"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "результат функции не может иметь тип функции"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "дерево: %s, имеетÑÑ %s в %s, на %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "дерево: не ожидалоÑÑŒ ничего из %s, обнаружено %s в %s, на %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "дерево: ожидалÑÑ ÐºÐ»Ð°ÑÑ %qs, обнаружен %qs (%s) в %s, на %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, fuzzy, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "дерево: ожидалÑÑ ÐºÐ»Ð°ÑÑ %qs, обнаружен %qs (%s) в %s, на %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "дерево: не ожидалоÑÑŒ ничего из %s, обнаружено %s в %s, на %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, fuzzy, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "дерево: ожидалоÑÑŒ дерево, Ñодержащее Ñтруктуру %qs, обнаружено %qs в %s, на %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "дерево: доÑтуп к Ñлементу %d вектора tree_vec Ñ %d Ñлементами в %s, на %s:%d"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "дерево: доÑтуп к операнду %d функции %s Ñ %d операндами в %s, в %s:%d"
-#: tree.c:9052
+#: tree.c:9056
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "дерево: доÑтуп к операнду %d функции %s Ñ %d операндами в %s, в %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ тип %qs (Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð² %s:%d)"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ тип %qs (Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð² %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ тип %qs (Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð² %s:%d)"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ тип %qs (Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð² %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "поддержка данного типа будет иÑключена в будущих верÑиÑÑ… (Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð² %s:%d)"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "поддержка данного типа будет иÑключена в будущих верÑиÑÑ… (Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð² %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "Ð¸Ð¼Ñ %qs будет иÑключено в будущих верÑиÑÑ…"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
msgid "%qE is deprecated"
msgstr "Ð¸Ð¼Ñ %qs будет иÑключено в будущих верÑиÑÑ…"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "поддержка данного типа будет иÑключена в будущих верÑиÑÑ…"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "поддержка данного типа будет иÑключена в будущих верÑиÑÑ…"
@@ -20927,150 +20822,152 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D Ñоздает конфликт типов Ñекций"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
-#| msgid "%+D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%+D Ñоздает конфликт типов Ñекций"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "выравнивание %q+D превышает макÑимальное выравнивание в объектном файле. ИÑпользуетÑÑ %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "не задано Ð¸Ð¼Ñ Ñ€ÐµÐ³Ð¸Ñтра Ð´Ð»Ñ %q+D"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "некорректное Ð¸Ð¼Ñ Ñ€ÐµÐ³Ð¸Ñтра Ð´Ð»Ñ %q+D"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "данные типа %q+D Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑтить на региÑÑ‚Ñ€"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
-#| msgid "register specified for %q+D isn%'t suitable for data type"
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "региÑÑ‚Ñ€, заданный Ð´Ð»Ñ %q+D, не годитÑÑ Ð´Ð»Ñ Ñтого типа данных"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
-#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "региÑÑ‚Ñ€ назначен Ð´Ð»Ñ Ð´Ð²ÑƒÑ… глобальных региÑтровых переменных"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "региÑÑ‚Ñ€, заданный Ð´Ð»Ñ %q+D, не годитÑÑ Ð´Ð»Ñ Ñтого типа данных"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ начальное значение"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ удалить Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ запиÑи региÑтровых переменных"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "Ð¸Ð¼Ñ Ñ€ÐµÐ³Ð¸Ñтра задано Ð´Ð»Ñ Ð½ÐµÑ€ÐµÐ³Ð¸Ñтровой переменной %q+D"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "глобальные деÑтрукторы не поддерживаютÑÑ Ð´Ð»Ñ Ñтой платформы"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "глобальные конÑтрукторы не поддерживаютÑÑ Ð´Ð»Ñ Ñтой платформы"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "поддержка локально-поточных COMMON-данных не реализована"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "запрошенное выравнивание Ð´Ð»Ñ %q+D превышает поддерживаемое выравнивание Ð´Ð»Ñ %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, fuzzy, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "Ñлишком Ñложное инициализирующее выражение Ð´Ð»Ñ Ñ†ÐµÐ»Ð¾Ð³Ð¾"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "инициализирующее выражение Ð´Ð»Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ³Ð¾ не ÑвлÑетÑÑ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ конÑтантой"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "некорректное начальное значение Ð´Ð»Ñ Ñлемента %qs"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "weak Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D должна быть public"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "weak Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D не поддерживаетÑÑ"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "в данной конфигурации поддерживаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñлабые алиаÑÑ‹"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "%Jweakref в данной конфигурации не поддерживаетÑÑ"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "-m%s в данной конфигурации не поддерживаетÑÑ"
-#: varasm.c:5751
+#: varasm.c:5788
#, fuzzy, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D - Ð°Ð»Ð¸Ð°Ñ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñимвола %qs"
-#: varasm.c:5765
+#: varasm.c:5802
#, fuzzy, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D - Ð°Ð»Ð¸Ð°Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñимвола %qs"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "ÑÐ»Ð°Ð±Ð°Ñ ÑÑылка %q+D в конечном Ñчёте направлена на ÑебÑ"
-#: varasm.c:5814
+#: varasm.c:5851
#, fuzzy, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑтатичеÑкого Ñлемента-функции %qD"
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "%Jв данной конфигурации Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð°Ð»Ð¸Ð°Ñов не поддерживаютÑÑ"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "атрибут видимоÑти не поддерживаетÑÑ Ð² данной конфигурации; определение игнорируетÑÑ"
@@ -21111,8 +21008,8 @@ msgstr "%qD не определено вне функции"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "Ñтрока имеет длину %qd, превышающую макÑимальную длину %qd, которую должны поддерживать компилÑторы по Ñтандарту ISO C%d"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "переполнение при вычиÑлении конÑтантного выражениÑ"
@@ -21327,7 +21224,7 @@ msgstr "в арифметичеÑком выражении иÑпользоваÐ
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "Ð°Ð´Ñ€ÐµÑ %qD вÑегда будет %<иÑтина%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "приÑваивание, иÑпользуемое как логичеÑкое выражение, рекомендуетÑÑ "
@@ -21354,13 +21251,11 @@ msgstr "недопуÑтимое применение %qs к типу void"
#: c-family/c-common.c:4390
#, fuzzy, gcc-internal-format
-#| msgid "invalid application of %qs to incomplete type %qT "
msgid "invalid application of %qs to incomplete type %qT"
msgstr "некорректное применение %qs к неполному типу %qT "
#: c-family/c-common.c:4398
#, fuzzy, gcc-internal-format
-#| msgid "invalid application of %qs to incomplete type %qT "
msgid "invalid application of %qs to array type %qT of incomplete element type"
msgstr "некорректное применение %qs к неполному типу %qT "
@@ -21567,7 +21462,6 @@ msgstr "%Jатрибут section Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ платформы не пÐ
#: c-family/c-common.c:6747
#, fuzzy, gcc-internal-format
-#| msgid "requested alignment is not a constant"
msgid "requested alignment is not an integer constant"
msgstr "выравнивание не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
@@ -21694,13 +21588,11 @@ msgstr ""
#: c-family/c-common.c:7397
#, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored"
msgid "%qE attribute duplicated"
msgstr "атрибут %qE проигнорирован"
#: c-family/c-common.c:7399
#, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored for %qE"
msgid "%qE attribute follows %qE"
msgstr "атрибут %qE Ð´Ð»Ñ %qE проигнорирован"
@@ -21711,19 +21603,16 @@ msgstr "Ñто предыдущее определение `%#D'"
#: c-family/c-common.c:7551
#, fuzzy, gcc-internal-format
-#| msgid "cleanup argument not an identifier"
msgid "%qE argument not an identifier"
msgstr "аргумент атрибута cleanup - не идентификатор"
#: c-family/c-common.c:7562
#, fuzzy, gcc-internal-format
-#| msgid "%qD is not declared in %qD"
msgid "%qD is not compatible with %qD"
msgstr "отÑутÑтвует Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD в %qD"
#: c-family/c-common.c:7565
#, fuzzy, gcc-internal-format
-#| msgid "cleanup argument not a function"
msgid "transaction_wrap argument is not a function"
msgstr "аргумент атрибута cleanup - не функциÑ"
@@ -21742,40 +21631,40 @@ msgstr "атрибут %qE Ð´Ð»Ñ %qE проигнорирован"
msgid "invalid vector type for attribute %qE"
msgstr "неверно задан векторный тип Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° %qE"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "размер вектора не кратен размеру компонент"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "нулевой размер вектора"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "чиÑло компонент вектора не ÑвлÑетÑÑ Ñтепенью двойки"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "непуÑтой атрибут без аргументов допуÑтим только в прототипах"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "в непуÑтом аргументе задан неверный номер операнда (аргумент %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "непуÑтой аргумент Ñодержит номер операнда вне диапазона (аргумент %lu, операнд %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "непуÑтой аргумент ÑÑылаетÑÑ Ð½Ð° операнд, не ÑвлÑющийÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼ (аргумент %lu, операнд %lu)"
@@ -21815,12 +21704,12 @@ msgstr "в атрибуте %qE требуетÑÑ Ð¿Ñ€Ð¾Ñ‚Ð¾Ñ‚Ð¸Ð¿ Ñ Ð¸Ð¼ÐµÐ½Ð
msgid "%qE attribute only applies to variadic functions"
msgstr "атрибут %qE допуÑтим только Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼ чиÑлом аргументом"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ðµ ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ð¹ конÑтантой"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð¼ÐµÐ½ÑŒÑˆÐµ нулÑ"
@@ -21875,7 +21764,7 @@ msgstr "недопуÑтимое применение %<offsetof%> к Ñтати
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "некорректное иÑпользование неÑтатичеÑкой функции-Ñлемента %qD"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "взÑтие адреÑа от битового Ð¿Ð¾Ð»Ñ Ñтруктуры %qD"
@@ -22102,13 +21991,11 @@ msgstr "при передаче аргумента %P функции `%+D'"
#: c-family/c-common.c:9493
#, fuzzy, gcc-internal-format
-#| msgid "incompatible type for argument %d of %qE"
msgid "invalid memory model argument %d of %qE"
msgstr "неÑовмеÑтимый тип аргумента %d функции %qE"
#: c-family/c-common.c:9500
#, fuzzy, gcc-internal-format
-#| msgid "incompatible type for argument %d of %qE"
msgid "non-integer memory model argument %d of %qE"
msgstr "неÑовмеÑтимый тип аргумента %d функции %qE"
@@ -22244,7 +22131,6 @@ msgstr "Ñравнение ~unsigned Ñ unsigned"
#: c-family/c-common.c:10513
#, fuzzy, gcc-internal-format
-#| msgid "%q+D defined but not used"
msgid "typedef %qD locally defined but not used"
msgstr "%q+D определена, но нигде не иÑпользуетÑÑ"
@@ -22605,82 +22491,82 @@ msgid "ignoring #pragma %s %s"
msgstr "%Hдиректива #pragma %s %s проигнорирована"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "%Hнекорректное употребление Ñимвола %<@%>"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "в программе обнаружен непарный Ñимвол %qs"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "отÑутÑтвует терминирующий Ñимвол %c"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "в программе обнаружен непарный Ñимвол %qc"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "в программе обнаружен некорректный Ñимвол %<\\%o%>"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "Ñта деÑÑÑ‚Ð¸Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта ÑвлÑетÑÑ Ð±ÐµÐ·Ð·Ð½Ð°ÐºÐ¾Ð²Ð¾Ð¹ только в ISO C90"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "Ñта деÑÑÑ‚Ð¸Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта ÑвлÑлаÑÑŒ бы беззнаковой только в ISO C90"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "Ñ†ÐµÐ»Ð°Ñ ÐºÐ¾Ð½Ñтанта Ñлишком велика Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %qs"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
msgid "unsuffixed float constant"
msgstr "размер %qD в памÑти не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, fuzzy, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ ÐºÐ¾Ð½Ñтанта превышает диапазон Ð´Ð»Ñ %<%s%>"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "деление на ноль плавающей конÑтанты"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, fuzzy, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr "неверное положение %<@%D%> конÑтрукции Objective-C++"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð¼ С не поддерживаетÑÑ ÐºÐ¾Ð½ÐºÐ°Ñ‚ÐµÐ½Ð°Ñ†Ð¸Ñ Ñтрок"
@@ -22700,7 +22586,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "неверно задан векторный тип Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° %qE"
@@ -22710,22 +22596,22 @@ msgstr "неверно задан векторный тип Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ
msgid "%qE is not initialized"
msgstr "параметр %qD инициализирован"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, fuzzy, gcc-internal-format
msgid "missing controlling predicate"
msgstr "некорректный операнд уÑловного оператора"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "некорректный операнд уÑловного оператора"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
msgid "missing increment expression"
msgstr "подавление приÑваиваниÑ"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
msgid "invalid increment expression"
msgstr "неверное логичеÑкое выражение"
@@ -23288,7 +23174,6 @@ msgstr ""
#: common/config/v850/v850-common.c:48
#, fuzzy, gcc-internal-format
-#| msgid "requested alignment is too large"
msgid "value passed in %qs is too large"
msgstr "выравнивание Ñлишком велико"
@@ -23405,7 +23290,6 @@ msgstr ""
#: config/darwin.c:3038
#, fuzzy, gcc-internal-format
-#| msgid "-mdynamic-no-pic overrides -fpic or -fPIC"
msgid "%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>"
msgstr "-mdynamic-no-pic отменÑет -fpic или -fPIC"
@@ -23575,7 +23459,7 @@ msgstr "L%d латентноÑÑ‚ÑŒ кÑша Ð´Ð»Ñ %s неизвеÑтна"
msgid "bad value %qs for -mmemory-latency"
msgstr "некорректное значение %qs Ð´Ð»Ñ -mmemory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23694,13 +23578,11 @@ msgstr "недопуÑтимо иÑпользовать -mtp=cp15 и -mthumb"
#: config/arm/arm.c:1888
#, fuzzy, gcc-internal-format
-#| msgid "structure size boundary can only be set to %s"
msgid "structure size boundary can only be set to 8, 32 or 64"
msgstr "граница размера Ñтруктуры может быть только %s"
#: config/arm/arm.c:1890
#, fuzzy, gcc-internal-format
-#| msgid "structure size boundary can only be set to %s"
msgid "structure size boundary can only be set to 8 or 32"
msgstr "граница размера Ñтруктуры может быть только %s"
@@ -23754,53 +23636,53 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "невозможно вычиÑлить фактичеÑкое положение параметра в Ñтеке"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
msgid "argument must be a constant"
msgstr "аргумент %qD не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "Ñелектор должен быть непоÑредÑтвенным значением"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "нет Ñвободных low-региÑтров Ð´Ð»Ñ Ð²Ñ‹Ñ‚Ð°Ð»ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ high-региÑтров"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "подпрограммы Service Routines Ð´Ð»Ñ Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ð¹ не могут иÑпользоватьÑÑ Ð² режиме Thumb"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -23815,102 +23697,113 @@ msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %q+D помеÑ
msgid "static variable %q+D is marked dllimport"
msgstr "ÑтатичеÑÐºÐ°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %q+D помечена как dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-G и -static неÑовмеÑтимы"
+
+#: config/avr/avr.c:555
+#, fuzzy, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr "%qE атрибут дейÑтвует только в public-объектах"
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr "%qD не может иметь аргументов по умолчанию"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ значение не Ñтрокового типа"
+
+#: config/avr/avr.c:583
+#, fuzzy, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs возможно некорректно названный обработчик Ñигнала"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "ЧиÑло региÑтров Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ целочиÑленных аргументов"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr "конфликтующее Ð¸Ð¼Ñ ÑуперклаÑÑа %qs"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs возможно некорректно названный обработчик прерываниÑ"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs возможно некорректно названный обработчик Ñигнала"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, fuzzy, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr "неÑоответÑтвие указательных типов в уÑловном выражении"
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, fuzzy, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr "неÑоответÑтвие указательных типов в уÑловном выражении"
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "Только неинициализированные переменные могут размещатьÑÑ Ð² Ñекции .noinit"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
-#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "Только инициализированные переменные могут размещатьÑÑ Ð² облаÑти программной памÑти"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU %qs поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð°ÑÑемблера"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unexpected end of module in string constant"
msgid "%s expects a compile time integer constant"
msgstr "Ðеожиданное окончание Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð² Ñтроковой конÑтанте"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%qs expects a constant argument"
msgid "%s expects a compile time long integer constant as first argument"
msgstr "Ð´Ð»Ñ %qs требуетÑÑ ÐºÐ¾Ð½Ñтантный аргумент"
@@ -24002,7 +23895,6 @@ msgstr ""
#: config/cr16/cr16.c:297
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "invalid thread pointer option: -mtp=%s"
msgid "invalid data model option -mdata-model=%s"
msgstr "некорректный ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ°: -mtp=%s"
@@ -24030,68 +23922,68 @@ msgstr "некорректный операнд Ð´Ð»Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð°
msgid "internal error: bad register: %d"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: некорректный региÑÑ‚Ñ€: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ñ Ð¿Ð¾Ð±Ð¾Ñ‡Ð½Ñ‹Ð¼ Ñффектом, влиÑющим на оÑновной Ñффект"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "неизвеÑтное значение cc_attr"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: некорректные операнды cris_side_effect_mode_ok"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "значение ключа -max-stackframe=%d вне диапазона 0 - %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²ÐµÑ€Ñии CRIS в -march= или -mcpu= : %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²ÐµÑ€Ñии CRIS в -mtune= : %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "ключи -fPIC и -fpic в данной конфигурации не поддерживаютÑÑ"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "заданный ключ -g неÑовмеÑтим Ñ -maout и -melinux"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
msgid "unknown src"
msgstr "ÐеизвеÑтный иÑточник"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
msgid "unknown dest"
msgstr "ÐеизвеÑтное назначение"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "кадр Ñтека Ñлишком велик: %d байт"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "в movsi не удалоÑÑŒ выполнить expand_binop"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr "Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ PIC-операнда при неуÑтановленном PIC-региÑтре"
@@ -24250,413 +24142,411 @@ msgstr "ошибка раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ PCH файла: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "ошибка Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² PCH файле: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "некорректное значение (%s) Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -mtune="
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "модель ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %s не поддерживаетÑÑ Ð² %s-битном режиме"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
-#| msgid "code model %qs not supported in the %s bit mode"
msgid "code model %qs not supported in x32 mode"
msgstr "модель ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %s не поддерживаетÑÑ Ð² %s-битном режиме"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "модель ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %s не поддерживаетÑÑ Ð² режиме PIC"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
-#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s в данной конфигурации не поддерживаетÑÑ"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i-битный режим не компилируетÑÑ Ð²"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "заданный процеÑÑор не поддерживает набор команд x86-64"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "некорректное значение (%s) Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -mtune="
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr "некорректное значение (%s) Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -march"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, fuzzy, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr "ÑÐ¾Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¾ вызовах -mrtd не поддерживаютÑÑ Ð² 64-битном режиме"
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d вне диапазона 0 - %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "ÑÐ¾Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¾ вызовах -mrtd не поддерживаютÑÑ Ð² 64-битном режиме"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-fprefetch-loop-arrays не поддерживаетÑÑ Ð´Ð»Ñ Ñтой целевой машины"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d вне диапазона %d - 12"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred-stack-boundary=%d вне диапазона %d - 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr "ключ -msseregparm иÑпользован без SSE"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "набор команд SSE отменен, иÑпользуетÑÑ Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸ÐºÐ° 387"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "набор команд 387 отменен, иÑпользуетÑÑ Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸ÐºÐ° SSE"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ поддержки таблиц раÑкрутки Ñтека требуетÑÑ Ð»Ð¸Ð±Ð¾ указатель кадра, либо -maccumulate-outgoing-args"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ поддержки таблиц раÑкрутки Ñтека требуетÑÑ Ð»Ð¸Ð±Ð¾ указатель кадра, либо -maccumulate-outgoing-args"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "некорректный ключ -m%s=: '%s'"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "атрибуты fastcall и regparm неÑовмеÑтимы"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr "атрибуты fastcall и stdcall неÑовмеÑтимы"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "аргументом атрибута %qs должна быть Ñ†ÐµÐ»Ð°Ñ ÐºÐ¾Ð½Ñтанта"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "аргумент атрибута %qs больше %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "атрибуты fastcall и cdecl неÑовмеÑтимы"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "атрибуты fastcall и stdcall неÑовмеÑтимы"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr "атрибуты fastcall и stdcall неÑовмеÑтимы"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "атрибуты stdcall и cdecl неÑовмеÑтимы"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "атрибуты stdcall и fastcall неÑовмеÑтимы"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr "атрибуты stdcall и fastcall неÑовмеÑтимы"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr "атрибуты stdcall и fastcall неÑовмеÑтимы"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "атрибут %qE Ð´Ð»Ñ Ð½Ðµ клаÑÑовых типов игнорируетÑÑ"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, fuzzy, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Вызов %qD Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ sseregparm без Ð·Ð°Ð´Ð°Ð½Ð¸Ñ SSE/SSE2"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, fuzzy, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Вызов %qT Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ sseregparm без Ð·Ð°Ð´Ð°Ð½Ð¸Ñ SSE/SSE2"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, fuzzy, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "аргумент - вектор MMX без Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ MMX изменÑет ABI"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "возврат результата в SSE региÑтре без Ð·Ð°Ð´Ð°Ð½Ð¸Ñ SSE"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "аргумент - SSE региÑÑ‚Ñ€ без Ð·Ð°Ð´Ð°Ð½Ð¸Ñ SSE"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "результат - вектор SSE без Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ SSE изменÑет ABI"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "аргумент - вектор SSE без Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ SSE изменÑет ABI"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "аргумент - вектор MMX без Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ MMX изменÑет ABI"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "результат - вектор SSE без Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ SSE изменÑет ABI"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "возврат вектора MMX без Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ MMX изменÑет ABI"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "Ð¸Ð½Ð´ÑƒÐºÑ†Ð¸Ñ Ð½Ðµ поддерживаетÑÑ"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "Ð¸Ð½Ð´ÑƒÐºÑ†Ð¸Ñ Ð½Ðµ поддерживаетÑÑ"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "ISO C90 не поддерживает регулируемые Ñлементы-маÑÑивы"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "раÑширенные региÑтры не имеют верхних половин"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "некорректный размер операнда Ð´Ð»Ñ Ñ€Ð°Ñширенного региÑтра"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr "некорректный код операнда '%c'"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "третий аргумент должен быть 4-битным беззнаковым литеральным значением"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "первый аргумент должен быть 5-битным знаковым литеральным значением"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "первый аргумент должен быть 5-битным знаковым литеральным значением"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "третий аргумент должен быть 4-битным беззнаковым литеральным значением"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "третий аргумент должен быть 4-битным беззнаковым литеральным значением"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "третий аргумент должен быть 4-битным беззнаковым литеральным значением"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "третий аргумент должен быть 4-битным беззнаковым литеральным значением"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "первый аргумент должен быть 5-битным знаковым литеральным значением"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "первый аргумент должен быть 5-битным знаковым литеральным значением"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "третий аргумент должен быть 4-битным беззнаковым литеральным значением"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "Ñелектор должен быть целой конÑтантой в диапазоне 0..%wi"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, fuzzy, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "аргумент атрибута %qs не ÑвлÑетÑÑ Ñтроковой конÑтантой"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, fuzzy, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "атрибуты fastcall и stdcall неÑовмеÑтимы"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "%qs - неÑовмеÑтимый атрибут, игнорируетÑÑ"
@@ -24726,19 +24616,19 @@ msgstr "%Jатрибут адреÑного проÑтранÑтва Ð´Ð»Ñ Ñ„Ñƒ
msgid "%qE attribute requires a string constant argument"
msgstr "аргументом атрибута %qs должна быть Ñ†ÐµÐ»Ð°Ñ ÐºÐ¾Ð½Ñтанта"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "значение ключа -mfixed-range имеет вид РЕГ1-РЕГ2"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s задает пуÑтой диапазон"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
msgid "version attribute is not a string"
msgstr "аргумент атрибута %qs не ÑвлÑетÑÑ Ñтроковой конÑтантой"
@@ -24804,7 +24694,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "%Jатрибут section Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ платформы не поддерживаетÑÑ"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "аргумент атрибута %qs не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ð¹ конÑтантой"
@@ -24859,7 +24749,7 @@ msgstr "задано неÑколько атрибутов типа функци
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "выражение Ð´Ð»Ñ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ Ñтека не поддерживаетÑÑ"
@@ -25374,27 +25264,27 @@ msgstr "Внутреннее Ñообщение MMIX: %s не ÑвлÑетÑÑ Ñ
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, fuzzy, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ PIC не поддерживаетÑÑ Ð² портируемой модели времени выполнениÑ\n"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, fuzzy, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ PIC неÑовмеÑтима Ñ Ð±Ñ‹Ñтрыми коÑвенными вызовами\n"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "Ð´Ð»Ñ Ñтого процеÑÑора -g поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при иÑпользовании GAS,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "ключ -g игнорируетÑÑ"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -25621,7 +25511,6 @@ msgstr ""
#: config/rs6000/rs6000.c:2622
#, fuzzy, gcc-internal-format
-#| msgid "not configured for ABI: '%s'"
msgid "not configured for SPE ABI"
msgstr "Ð´Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ поддерживает ABI: '%s'"
@@ -25820,82 +25709,82 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, fuzzy, gcc-internal-format
msgid "stack frame too large"
msgstr "кадр Ñтека Ñлишком велик: %d байт"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "отÑутÑтвует профилирование 64-битного кода Ð´Ð»Ñ Ñтого ABI"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, fuzzy, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, fuzzy, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, fuzzy, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, fuzzy, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, fuzzy, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, fuzzy, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, fuzzy, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, fuzzy, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "иÑпользование 'long' в типах AltiVec-данных будет отменено; иÑпользуйте 'int'"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "недопуÑтимое иÑпользование '%%%c'"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr "некорректно употреблÑÑ‚ÑŒ %<#pragma%>"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr "недопуÑтимый параметр '%s'"
@@ -25949,12 +25838,12 @@ msgstr "\"трамплины\" не поддерживаютÑÑ"
msgid "-m64 not supported in this configuration"
msgstr "-m%s в данной конфигурации не поддерживаетÑÑ"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "Ð´Ð»Ñ -m64 требуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑор PowerPC64"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr "Генерировать код, ÑовмеÑтимый Ñ Ñ„Ð¸Ñ€Ð¼ÐµÐ½Ð½Ñ‹Ð¼Ð¸ инÑтрументами TI"
@@ -25971,64 +25860,64 @@ msgstr "Генерировать код, ÑовмеÑтимый Ñ Ñ„Ð¸Ñ€Ð¼ÐµÐ½Ð
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET не поддерживаетÑÑ"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "Ðекорректное значение ключа -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "Ðекорректное значение ключа -msdata=%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "ключи -mrelocatable и -msdata=%s неÑовмеÑтимы"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "ключи -f%s и -msdata=%s неÑовмеÑтимы"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "ключи -msdata=%s и -mcall-%s неÑовмеÑтимы"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "ключи -mrelocatable и -mno-minimal-toc неÑовмеÑтимы"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "ключи -mrelocatable и -mcall-%s неÑовмеÑтимы"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "ключи -fPIC и -mcall-%s неÑовмеÑтимы"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "ключ -mcall-aixdesc требует прÑмого порÑдка байт"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, fuzzy, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "MCU %qs поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð°ÑÑемблера"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s в данной конфигурации не поддерживаетÑÑ"
@@ -26138,53 +26027,53 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ поддержки таблиц раÑкрутки Ñтека требуетÑÑ Ð»Ð¸Ð±Ð¾ указатель кадра, либо -maccumulate-outgoing-args"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs Ð´Ð»Ñ Ñтой платформы не поддерживаетÑÑ"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "атрибут %qs применим только к функциÑм обработки прерываний"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "атрибут %qs не поддерживаетÑÑ Ð½Ð° данной платформе"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "атрибут interrupt_handler неÑовмеÑтим Ñ -m5-compact"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "аргумент атрибута %qs не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ð¹ конÑтантой"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "аргумент атрибута %qs не ÑвлÑетÑÑ Ñтроковой конÑтантой"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr "ИÑпользовать региÑÑ‚Ñ€ BK как региÑÑ‚Ñ€ общего назначениÑ"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, fuzzy, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr "ИÑпользовать региÑÑ‚Ñ€ BK как региÑÑ‚Ñ€ общего назначениÑ"
@@ -26223,7 +26112,6 @@ msgstr "ключ -mcmodel= на 32-битных ÑиÑтемах не подде
#: config/sparc/sparc.c:1019
#, fuzzy, gcc-internal-format
-#| msgid "-fdata-sections not supported for this target"
msgid "-fcall-saved-REG is not supported for out registers"
msgstr "-fdata-sections не поддерживаетÑÑ Ð´Ð»Ñ Ñтой целевой машины"
@@ -26314,7 +26202,6 @@ msgstr "некорректный вÑтроенный fcode"
#: config/tilegx/tilegx.c:3438 config/tilepro/tilepro.c:3127
#, fuzzy, gcc-internal-format
-#| msgid "mask must be an immediate"
msgid "operand must be an immediate of the right size"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
@@ -26435,13 +26322,11 @@ msgstr "Слишком велик размер облаÑти Ñтека длÑ
#: config/vms/vms-c.c:44
#, fuzzy, gcc-internal-format
-#| msgid "junk at end of #pragma ghs starttda"
msgid "junk at end of #pragma __nostandard"
msgstr "муÑор в конце #pragma ghs starttda"
#: config/vms/vms-c.c:55
#, fuzzy, gcc-internal-format
-#| msgid "junk at end of #pragma %s"
msgid "junk at end of #pragma __standard"
msgstr "муÑор в конце #pragma %s"
@@ -26467,13 +26352,11 @@ msgstr "некорректный ÑинтакÑÐ¸Ñ #pragma align - директ
#: config/vms/vms-c.c:143
#, fuzzy, gcc-internal-format
-#| msgid "junk at end of '#pragma options'"
msgid "garbage at end of '#pragma nomember_alignment'"
msgstr "муÑор в конце директивы '#pragma options'"
#: config/vms/vms-c.c:182
#, fuzzy, gcc-internal-format
-#| msgid "malformed '#pragma options', ignoring"
msgid "malformed '#pragma extern_model', ignoring"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° '#pragma options', игнорируетÑÑ"
@@ -26499,7 +26382,6 @@ msgstr "неверный ÑинтакÑÐ¸Ñ #pragma weak, директива пÑ
#: config/vms/vms-c.c:251 config/vms/vms-c.c:257
#, fuzzy, gcc-internal-format
-#| msgid "malformed #pragma extern_prefix, ignored"
msgid "malformed '#pragma __extern_prefix', ignoring"
msgstr "неверный ÑинтакÑÐ¸Ñ #pragma extern_prefix, директива проигнорирована"
@@ -26533,38 +26415,38 @@ msgstr "ошибка: %<-gant%> вмеÑто %<-gnat%>"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "атрибут %qs проигнорирован"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "в атрибуте %qE требуетÑÑ Ð¿Ñ€Ð¾Ñ‚Ð¾Ñ‚Ð¸Ð¿ Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ аргументами"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "атрибут %qE допуÑтим только Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼ чиÑлом аргументом"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "атрибут %qE проигнорирован"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "неверно задан векторный тип Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° %qE"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "неверно задан векторный тип Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° %qE"
@@ -26580,7 +26462,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " при преобразовании из %qT в %qT,"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26641,7 +26523,6 @@ msgstr ""
#. Re-run template unification with diagnostics.
#: cp/call.c:3208
#, fuzzy, gcc-internal-format
-#| msgid "template argument %d is invalid"
msgid " template argument deduction/substitution failed:"
msgstr "некорректный аргумент шаблона %d"
@@ -26859,7 +26740,6 @@ msgstr "отÑутÑтвуют фигурные Ñкобки вокруг ини
#: cp/call.c:5604
#, fuzzy, gcc-internal-format
-#| msgid "invalid conversion from %qT to %qT"
msgid "invalid user-defined conversion from %qT to %qT"
msgstr "некорректное преобразование из %qT в %qT"
@@ -26868,7 +26748,7 @@ msgstr "некорректное преобразование из %qT в %qT"
msgid "invalid conversion from %qT to %qT"
msgstr "некорректное преобразование из %qT в %qT"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " при инициализации %P -го аргумента %qD"
@@ -26878,191 +26758,188 @@ msgstr " при инициализации %P -го аргумента %qD"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr " при инициализации %P -го аргумента %qD"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "недопуÑтимое ÑвÑзывание rvalue %qE Ñ %qT"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "недопуÑтимое ÑвÑзывание битового Ð¿Ð¾Ð»Ñ %qE Ñ %qT"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "недопуÑтимое ÑвÑзывание упакованного Ð¿Ð¾Ð»Ñ %qE Ñ %qT"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "недопуÑтимое ÑвÑзывание rvalue %qE Ñ %qT"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
-#| msgid "class %qT will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "клаÑÑ %qT будет раÑÑматриватьÑÑ ÐºÐ°Ðº почти пуÑтой в будущих верÑиÑÑ… GCC"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð° объекта не POD-типа %q#T через %<...%>; вызов завершитÑÑ Ð°Ð²Ð°Ñ€Ð¸Ð¹Ð½Ð¾ во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "некорректное получение объекта не POD-типа %q#T через %<...%>; вызов завершитÑÑ Ð°Ð²Ð°Ñ€Ð¸Ð¹Ð½Ð¾ во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "повторное определение аргумента по умолчанию Ð´Ð»Ñ `%#D'"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
-#| msgid "the default argument for parameter %d of %qD has not yet been parsed"
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "аргумент по умолчанию Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %d %qD еще не был проанализирован"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, fuzzy, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "Предупреждать о функциÑÑ…, которым можно назначить атрибут format"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, fuzzy, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "передача %qT как `this'-аргумента `%#D' отменÑет квалификаторы"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT не ÑвлÑетÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¼ Ð´Ð»Ñ %qT"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, fuzzy, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD как %s"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
msgid " in call to %q+D"
msgstr " в вызове %qD"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "не найдено поле клаÑÑа в интерфейÑном типе java %qT"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "вызов не функции %qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "нет подходÑщей функции Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° %<%T::%s(%A)%#V%>"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "нет подходÑщей функции Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° %<%T::%s(%A)%#V%>"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "вызов перегруженной %<%s(%A)%> имеет неоднозначную трактовку"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "некорректный вызов Ñлемента-функции %qD без объекта"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "при передаче %qT предпочтение отдаетÑÑ %qT, а не %qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " в вызове %qD"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "предпочтение отдаетÑÑ %qD (а не %qD)"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " при преобразовании из %qT в %qT,"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " поÑкольку Ñто дает лучшую поÑледовательноÑÑ‚ÑŒ преобразований аргумента"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "отÑутÑтвует аргумент по умолчанию Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %P функции %q+#D"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, fuzzy, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr "претендент: %+#D"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, fuzzy, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr "претендент: %+#D"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr ""
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
-#| msgid "could not convert %qE to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qE в %qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½ÐµÐºÐ¾Ð½Ñтантной ÑÑылки типа %qT из временного Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑÑылки типа %qT из Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT"
@@ -27119,7 +26996,6 @@ msgstr " поÑкольку имеетÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñлемент `%
#: cp/class.c:1291
#, fuzzy, gcc-internal-format
-#| msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
msgid "cannot derive from %<final%> base %qT in derived type %qT"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ %qT в производный тип %qT через виртуальный базовый тип %qT"
@@ -27150,7 +27026,6 @@ msgstr "отÑутÑтвует уникальное переопределени
#: cp/class.c:2524
#, fuzzy, gcc-internal-format
-#| msgid "%q+D defined but not used"
msgid "%q+#D marked final, but is not virtual"
msgstr "%q+D определена, но нигде не иÑпользуетÑÑ"
@@ -27275,222 +27150,219 @@ msgstr "поле %q+D ошибочно декларировано Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼
msgid "field %q+D invalidly declared method type"
msgstr "поле %q+D ошибочно декларировано Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ метода"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "атрибут packed проигнорирован Ð´Ð»Ñ Ð½ÐµÑƒÐ¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ не-POD Ð¿Ð¾Ð»Ñ %q+#D"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "поле %q+#D Ñ Ñ‚ÐµÐ¼ же именем, что и клаÑÑ"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q+#T Ñодержит Ñлементы данных типа указатель"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " но не переопределÑет %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " или %<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " но не переопределÑет %<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "Ñмещение пуÑтой базы %qT может быть неÑовмеÑтимо Ñ ABI и может быть изменено в будущих верÑиÑÑ… GCC"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "клаÑÑ %qT будет раÑÑматриватьÑÑ ÐºÐ°Ðº почти пуÑтой в будущих верÑиÑÑ… GCC"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "инициализатор задан Ð´Ð»Ñ Ð½ÐµÐ²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ метода %q+D"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "%qs не ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ типа"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
-#| msgid "%q#T is not a class"
msgid "%q+T is not literal because:"
msgstr "%q#T не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
-#| msgid "base class %q#T has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "базовый клаÑÑ %q#T имеет невиртуальный деÑтруктор"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr "%qs не ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ типа"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr "`%#D' не ÑвлÑетÑÑ Ð½ÐµÑтатичеÑким Ñлементом %qT"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "неÑтатичеÑÐºÐ°Ñ ÑÑылка %q+#D в клаÑÑе без конÑтруктора"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "неÑтатичеÑкий конÑтантный Ñлемент %q+#D в клаÑÑе без конÑтруктора"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "Ñмещение виртуальной базы %qT неÑовмеÑтимо Ñ ABI и может быть изменено в будущих верÑиÑÑ… GCC"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "непоÑредÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð±Ð°Ð·Ð° %qT недоÑтупна в %qT из-за неоднозначноÑти"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð±Ð°Ð·Ð° %qT недоÑтупна в %qT из-за неоднозначноÑти"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "размер, приÑвоенный %qT, может быть неÑовмеÑтим Ñ ABI и может быть изменен в будущих верÑиÑÑ… GCC"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "Ñмещение %qD может быть неÑовмеÑтимо Ñ ABI и может быть изменено в будущих верÑиÑÑ… GCC"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "Ñмещение %q+D неÑовмеÑтимо Ñ ABI и может изменитьÑÑ Ð² будущих верÑиÑÑ… GCC"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D Ñодержит пуÑтые клаÑÑÑ‹; поÑтому базовые клаÑÑÑ‹ могут размещены иначе в будущих верÑиÑÑ… GCC"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "предÑтавление клаÑÑов, производных от пуÑтого клаÑÑа %qT, может изменитьÑÑ Ð² будущих верÑиÑÑ… GCC"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "повторное определение %q#T"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T Ñодержит виртуальные функции, но невиртуальный деÑтруктор"
-#: cp/class.c:6139
-#, fuzzy, gcc-internal-format
-#| msgid "class %qT does not have any field named %qD"
+#: cp/class.c:6140
+#, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
-msgstr "в клаÑÑе %qT не имеет Ð¿Ð¾Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %qD"
+msgstr "в типе прозрачного клаÑÑа %qT нет никаких полей"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
-#, fuzzy, gcc-internal-format
+#: cp/class.c:6150
+#, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
-msgstr "тип %qs имеет виртуальную функцию-Ñлемент"
+msgstr "в типе прозрачного клаÑÑа %qT еÑÑ‚ÑŒ виртуальные функции"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "не удалоÑÑŒ завершить Ñтруктуру из-за предыдущих грамматичеÑких ошибок"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ñтрока %<\"%E\"%>, Ð·Ð°Ð´Ð°ÑŽÑ‰Ð°Ñ Ñзык"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "ошибка при выборе перегруженной функции %qD при преобразовании к типу %qT"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "нет ÑпоÑоба Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qD к типу %q#T"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "преобразование перегруженной функции %qD к типу %q#T неоднозначно"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "предполагаетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ на Ñлемент %qD"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(указатель на Ñлемент можно получить только при помощи %<&%E%>)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "недоÑÑ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ типе"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qE из типа %qT в тип %qT"
@@ -27500,12 +27372,12 @@ msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qE из типа %qT в тиÐ
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "делает трактовку %qD отличной от %q+#D"
@@ -27525,7 +27397,7 @@ msgstr "ошибка при преобразовании неполного ти
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "преобразование %qE из %qT в %qT неоднозначно"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ñ‹Ð¼ значением"
@@ -27555,7 +27427,7 @@ msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½ÐµÐºÐ¾Ð½Ñтант
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "преобразование из %qT в %qT отменÑет квалификаторы"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "преобразование %qT в %qT не Ñнимает указатель"
@@ -27842,7 +27714,6 @@ msgstr "неоднозначное преобразование из типа %q
#: cp/cvt.c:1548
#, fuzzy, gcc-internal-format
-#| msgid " candidate conversions include %qD and %qD"
msgid " candidate conversions include %qD"
msgstr " возможные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ - %qD и %qD"
@@ -27962,7 +27833,7 @@ msgstr "Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD"
msgid "declaration of template %q#D"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° `%#D'"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, fuzzy, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "противоречит предыдущей декларации `%#D'"
@@ -28014,7 +27885,7 @@ msgstr "Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ `namespace %D' находитÑ
msgid "%q+#D previously defined here"
msgstr "Ñто предыдущее определение `%#D'"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "Ñто предыдущее определение `%#D'"
@@ -28132,7 +28003,7 @@ msgstr "Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D ÑлеÐ
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "не Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D Ñледует поÑле локальной Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° декларации"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D"
@@ -28203,7 +28074,7 @@ msgstr "метка Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ wchar_t"
msgid "%qD is not a type"
msgstr "%qD не ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "иÑпользование %qD без параметров шаблона"
@@ -28285,7 +28156,6 @@ msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ типа
#: cp/decl.c:4155
#, fuzzy, gcc-internal-format
-#| msgid "%qs can only be specified for functions"
msgid "%<auto%> can only be specified for variables or function declarations"
msgstr "%qs допуÑтим только Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹"
@@ -28334,125 +28204,123 @@ msgstr "%<typedef%> в Ñтой декларации отброшен"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<register%> в пуÑтой декларации на уровне файла"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
-#| msgid "attribute ignored in declaration of %q+#T"
msgid "attribute ignored in declaration of %q#T"
msgstr "атрибуты декларации %q+#T отброшены"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, fuzzy, gcc-internal-format
-#| msgid "attribute for %q+#T must follow the %qs keyword"
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "атрибут Ð´Ð»Ñ %q+#T должен Ñледовать за ключевым Ñловом %qs"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "отброшены атрибуты клаÑÑа, заданные вне его объÑвлениÑ"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, fuzzy, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr "отброшены атрибуты клаÑÑа, заданные вне его объÑвлениÑ"
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹ (иÑпользуйте конÑтрукцию __typeof__)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D Ñодержит %<extern%> и инициализацию"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "определение функции %q#D помечено %<dllimport%>"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D не ÑвлÑетÑÑ ÑтатичеÑким Ñлементом %q#T"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ не разрешает определÑÑ‚ÑŒ %<%T::%D%> как %<%T::%D%>"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "заголовок шаблона недопуÑтим в определении члена Ñвно Ñпециализированного клаÑÑа"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ %qD"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, fuzzy, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr "%q+F объÑвлена %<static%>, но нигде не определена"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D вне клаÑÑа не ÑвлÑетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %q#D инициализирована, Ñ…Ð¾Ñ‚Ñ Ð¸Ð¼ÐµÐµÑ‚ неполный тип"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "Ñлементы маÑÑива %q#D имеют неполный тип"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D Ñодержит %<extern%> и инициализацию"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "агрегатный тип %q#D неполон и не может быть определён"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD декларирована как ÑÑылка, но не инициализирована"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, fuzzy, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr "Ð¸Ð¼Ñ %qD иÑпользовано в назначенном инициализаторе маÑÑива, ÑвлÑющемÑÑ GNU-раÑширением Ñзыка"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, fuzzy, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "нетривиальные инициализаторы Ñ Ð¼ÐµÑ‚ÐºÐ°Ð¼Ð¸"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "Ð¸Ð¼Ñ %qD иÑпользовано в назначенном инициализаторе маÑÑива, ÑвлÑющемÑÑ GNU-раÑширением Ñзыка"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "при инициализации не удалоÑÑŒ определить размер %qD"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "не задан размер маÑÑива Ð´Ð»Ñ %qD"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "маÑÑив %qD имеет нулевой размер"
@@ -28460,397 +28328,389 @@ msgstr "маÑÑив %qD имеет нулевой размер"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "размер %q+D в памÑти неизвеÑтен"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "размер %q+D в памÑти не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ñемантика ÑтатичеÑких данных %q+#D inline-функции (придётÑÑ Ð·Ð°Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ неÑколько копий)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, fuzzy, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr "%J проблему можно обойти, иÑключив инициализацию"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "Ð½ÐµÐ¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "тип %qs имеет конÑтруктор, определённый пользователем"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "некорректный тип %qT ÑвлÑетÑÑ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð´Ð»Ñ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° типа %qT"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "инициализатор Ð´Ð»Ñ %qT должен быт заключен в фигурные Ñкобки"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, fuzzy, gcc-internal-format
-#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "Ð¸Ð¼Ñ %qD иÑпользовано в назначенном инициализаторе маÑÑива, ÑвлÑющемÑÑ GNU-раÑширением Ñзыка"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT не имеет неÑтатичеÑкого Ñлемента данных Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %qD"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "избыточные Ñлементы в инициализаторе Ð´Ð»Ñ %qT"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "фигурные Ñкобки вокруг ÑкалÑрного инициализатора Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %qT"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "отÑутÑтвуют фигурные Ñкобки вокруг инициализатора %qT"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "Ñлементы маÑÑива %q#D имеют неполный тип"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %qD переменного размера недопуÑтима"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "ISO C90 не поддерживает ÑоÑтавные литеральные выражениÑ"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
-#| msgid "%qD has incomplete type"
msgid "%q#D has incomplete type"
msgstr "%qD имеет неполный тип"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "в инициализаторе ÑкалÑрного объекта %qD должен быть только один Ñлемент"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, fuzzy, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "%qD Ñледует инициализировать при помощи конÑтруктора, а не %<{...}%>"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "маÑÑив %qD инициализируетÑÑ Ñтроковой конÑтантой %qE, заключённой в Ñкобки"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "инициализатор недопуÑтим Ð´Ð»Ñ ÑтатичеÑкого Ñлемента Ñ ÐºÐ¾Ð½Ñтруктором"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ISO C++ запрещает инициализацию внутри клаÑÑа неконÑтантного ÑтатичеÑкого Ñлемента %qD"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(запрошена Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ð½Ðµ клаÑÑа)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "приÑваивание (а не инициализациÑ) в декларации"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "перекрытие предыдущей декларации %q#D"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, fuzzy, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD не может быть локально-поточным, поÑкольку имеет не-POD тип %qT"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD ÑвлÑетÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾-поточным, поÑтому не может быть динамичеÑки инициализирован"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "во Ð²Ñ€ÐµÐ¼Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ð¸ не допуÑкаетÑÑ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ %qD неконÑтантным выражением"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, fuzzy, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr "`%#D' не ÑвлÑетÑÑ Ð½ÐµÑтатичеÑким Ñлементом %qT"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %q#D инициализирована как переменнаÑ"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
-#| msgid "initializer fails to determine size of %qD"
msgid "initializer fails to determine size of %qT"
msgstr "при инициализации не удалоÑÑŒ определить размер %qD"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
-#| msgid "array size missing in %qD"
msgid "array size missing in %qT"
msgstr "не задан размер маÑÑива Ð´Ð»Ñ %qD"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
-#| msgid "zero-size array %qD"
msgid "zero-size array %qT"
msgstr "маÑÑив %qD имеет нулевой размер"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "деÑтруктор чужого клаÑÑа %qT не может быть Ñлементом"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "конÑтруктор чужого клаÑÑа %qT не может быть Ñлементом"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD декларирован как %<virtual%> %s"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD декларирован как %<inline%> %s"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "Ñпецификаторы %<const%> и %<volatile%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qD некорректны в декларации %s"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD декларирован как %<virtual%> %s"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD декларирован как %<inline%> %s"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "Ñпецификаторы %<const%> и %<volatile%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qD некорректны в декларации %s"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD декларирован как %<virtual%> %s"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "%qD декларирован как %<inline%> %s"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "Ñпецификаторы %<const%> и %<volatile%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qD некорректны в декларации %s"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD декларирован как %<virtual%> %s"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "%qD декларирован как %<inline%> %s"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "Ñпецификаторы %<const%> и %<volatile%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qD некорректны в декларации %s"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D декларировано как friend"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D декларировано Ñо Ñпецификацией иÑключительной Ñитуации"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "определение %qD вне проÑтранÑтва имён, объемлющего %qT"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "ÑтатичеÑÐºÐ°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ-член %q#D объÑвлена Ñ ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ типа"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "определение Ñвной Ñпециализации %qD в friend-декларации"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "некорректное иÑпользование идентификатора шаблона %qD в декларации первичного шаблона"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "аргументы по умолчанию не допуÑкаютÑÑ Ð² декларации Ñпециализации friend-шаблона %qD"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "не допуÑкаетÑÑ Ð¸Ñпользовать %<inline%> в декларации Ñпециализации friend-шаблона %qD"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %<::main%> как шаблона"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %<::main%> как inline-функции"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %<::main%> как ÑтатичеÑкой функции"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D не ÑÑылаетÑÑ Ð½Ð° неквалифицированный тип, поÑтому не иÑпользуетÑÑ Ð´Ð»Ñ ÑвÑзываниÑ"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ `%#D' Ñ Ð¿Ñ€Ð¸Ð²Ñзкой %L"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "%sÑлемент, Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %qD, не может иметь квалификатор метода - %qT"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
-#| msgid "template with C linkage"
msgid "literal operator with C linkage"
msgstr "шаблон Ñ Ð¿Ñ€Ð¸Ð²Ñзкой C"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "некорректный аргумент внутренней функции"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
-#| msgid "%qD must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "%qD должен быть неÑтатичеÑкой Ñлементом-функцией"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> должна возвращать %<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "определение неÑвно декларированного %qD"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
-#| msgid "definition of implicitly-declared %qD"
msgid "definition of explicitly-defaulted %q+D"
msgstr "определение неÑвно декларированного %qD"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "Ñто предыдущее определение `%#D'"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "нет Ñлемента-функции %q#D в клаÑÑе %qT"
@@ -28859,892 +28719,889 @@ msgstr "нет Ñлемента-функции %q#D в клаÑÑе %qT"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ клаÑÑа ÑтатичеÑкого Ñлемента данных нецелочиÑленного типа %qT"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ клаÑÑа ÑтатичеÑкого Ñлемента данных нецелочиÑленного типа %qT"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ клаÑÑа ÑтатичеÑкого Ñлемента данных нецелочиÑленного типа %qT"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ клаÑÑа ÑтатичеÑкого Ñлемента данных нецелочиÑленного типа %qT"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ запрещает инициализацию внутри клаÑÑа неконÑтантного ÑтатичеÑкого Ñлемента %qD"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ запрещает инициализацию Ñлемента-конÑтанты %qD нецелочиÑленного типа %qT"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "размер маÑÑива %qD имеет нецелочиÑленный тип %qT"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "размер маÑÑива имеет нецелочиÑленный тип %qT"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "размер маÑÑива %qD отрицательный"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "размер маÑÑива отрицательный"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ запрещает маÑÑив нулевого размера %qD"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ запрещает маÑÑивы нулевого размера"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "размер маÑÑива %qD не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "размер маÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ запрещает маÑÑив переменного размера %qD"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ запрещает маÑÑивы переменного размера"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr "иÑпользуетÑÑ Ð¼Ð°ÑÑив переменного размера %qD"
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "переполнение в размерноÑти маÑÑива"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr "Ð¸Ð¼Ñ %qs опиÑано как маÑÑив Ñлементов типа void"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "Ð¸Ð¼Ñ %qs опиÑано как маÑÑив Ñлементов типа void"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
msgid "creating array of void"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "Ð¸Ð¼Ñ %qs опиÑано как маÑÑив функций"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
msgid "creating array of functions"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "Ð¸Ð¼Ñ %qs опиÑано как маÑÑив функций"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
msgid "creating array of references"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "Ð¸Ð¼Ñ %qs опиÑано как маÑÑив функций"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
msgid "creating array of function members"
msgstr "Ð¸Ð¼Ñ %qs опиÑано как маÑÑив функций"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑ€Ð½Ð¾Ð³Ð¾ маÑÑива %qD должна определÑÑ‚ÑŒ границы Ð´Ð»Ñ Ð²Ñех размерноÑтей, кроме первой"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "в многомерном маÑÑиве должны быть определены границы Ð´Ð»Ñ Ð²Ñех размерноÑтей, кроме первой"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ типа в конÑтрукторе"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ типа в деÑтрукторе"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "тип результата задан Ð´Ð»Ñ %<operator %T%>"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð±ÐµÐ·Ñ‹Ð¼Ñнной переменной или Ð¿Ð¾Ð»Ñ Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ или Ð¿Ð¾Ð»Ñ Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "недопуÑтимое иÑпользование квалифицированного имени %<::%D%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "недопуÑтимое иÑпользование квалифицированного имени %<%T::%D%>"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "недопуÑтимое иÑпользование квалифицированного имени %<%D::%D%>"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%qT не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом или проÑтранÑтвом имён"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "тип %qT не ÑвлÑетÑÑ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ñ‹Ð¼ от %qT"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD как не-функции"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD как не-Ñлемента"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "декларатор отÑутÑтвует; иÑпользуетÑÑ Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð¾Ðµ Ñлово %qD"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "определение функции не объÑвлÑет параметры"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ `%#D'"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
-#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D перекрывает параметр"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "идентификатор шаблона недопуÑтим в using-декларации"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "два или более типа в декларации имени %qs"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "конфликтующие Ñпецификаторы в декларации %qs"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ запрещает декларации %qs без типа"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_saveregs не поддерживаетÑÑ Ð´Ð»Ñ Ñтой целевой платформы"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ не поддерживает %<long long%>"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%<signed%> или %<unsigned%> некорректны Ð´Ð»Ñ %qs"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%<signed%> и %<unsigned%> одновременно заданы Ð´Ð»Ñ %qs"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "недопуÑтимо иÑпользовать %<long long%> Ð´Ð»Ñ %qs"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "недопуÑтимо иÑпользовать %<long%> Ð´Ð»Ñ %qs"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "недопуÑтимо иÑпользовать %<short%> Ð´Ð»Ñ %qs"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%> или %<short%> некорректны Ð´Ð»Ñ %qs"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%> или %<short%> некорректны Ð´Ð»Ñ %qs"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "%<long%> или %<short%> заданы в опиÑании %qs Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ char"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%<long%> и %<short%> одновременно заданы Ð´Ð»Ñ %qs"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<long%> или %<short%> некорректны Ð´Ð»Ñ %qs"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "неверное употребление long, short, signed или unsigned в опиÑании %s"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "Ñпецификатор complex Ð´Ð»Ñ %qs недопуÑтим"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "квалификаторы не допуÑкаютÑÑ Ð² декларации %<operator %T%>"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "Ñлемент %qD не может быть декларирован как virtual и static"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ декларатором"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "typedef-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ допуÑкаетÑÑ Ð² декларации параметров"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации параметра %qs"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "Ñпецификаторы клаÑÑа Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ допуÑкаютÑÑ Ð² декларациÑÑ… параметров"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ-Ñлемента %qs как %<mutable%>"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "virtual вне декларации клаÑÑа"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "в декларации %qs задано более одного клаÑÑа хранениÑ"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "Ð´Ð»Ñ %qs задан клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² декларации параметра %qs"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %qs объÑвлена %<extern%>"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "Ð¸Ð¼Ñ %qs опиÑано на верхнем уровне Ñ ÐºÐ»Ð°ÑÑом Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ %<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "Ð¸Ð¼Ñ %qs на уровне функции неÑвно имеет клаÑÑ auto и объÑвлено %<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ допуÑкаетÑÑ Ð² декларации friend-функции"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs объÑвлена как функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs объÑвлена как функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð¼Ð°ÑÑив"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "деÑтруктор не может быть ÑтатичеÑкой Ñлементом-функцией"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, fuzzy, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "деÑтруктор не может быть ÑтатичеÑкой Ñлементом-функцией"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "деÑтрукторы не могут быть cv-квалифицированы"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "деÑтрукторы не могут быть cv-квалифицированы"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "конÑтрукторы Ð½ÐµÐ»ÑŒÐ·Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ как virtual"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ friend-функции %qs"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "виртуальные функции не могут быть friend-функциÑми"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "friend-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð²Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑа"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr "недопуÑтимое определение friend-функции %qs в определении локального клаÑÑа"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "деÑтрукторы не могут иметь параметров"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° %q#T"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑÑылки на %q#T"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент %q#T"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑÑылки на %q#T"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ %s указатель на неполный тип %qT"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr "ÐедопуÑтимо определÑÑ‚ÑŒ ÑÑылку на %q#T, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ будет определением типа или аргументом шаблона"
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, fuzzy, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr "в декларации иÑпользованы Ñпецификаторы %<short%> и %<double%>"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "идентификатор шаблона %qD иÑпользован как декларатор"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "Ñлементы-функции неÑвно ÑчитаютÑÑ friend-функциÑми Ñвоего клаÑÑа"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "Ð¸Ð·Ð±Ñ‹Ñ‚Ð¾Ñ‡Ð½Ð°Ñ ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ %<%T::%> Ñлемента %qs"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñлемента-функции %<%T::%s%> внутри %<%T%>"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñлемента-функции %<%T::%s%> внутри %<%T%>"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñлемента %<%T::%s%> внутри %qT"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "не параметричеÑкий %qs не может Ñодержать параметры"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "размер маÑÑива %qs Ñлишком велик"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "Ñлемент данных не может иметь тип %qT модифицируемого размера"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "параметр не может иметь модифицированный тип `%T"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "только декларации конÑтрукторов могут быть %<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ-Ñлемента %qs как %<mutable%>"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ объектного Ñлемента %qs как %<mutable%>"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs как %<mutable%>"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑтатичеÑкого %qs как %<mutable%>"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð½Ñтантного %qs как %<mutable%>"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs как %<mutable%>"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr "параметр %q+D объÑвлен %<inline%>"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, fuzzy, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr "%JÐ´Ð»Ñ typedef-имени недопуÑтимы квалификаторы клаÑÑов"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ запрещает определÑÑ‚ÑŒ вложенный тип %qD Ñ Ñ‚ÐµÐ¼ же именем, что и объемлющий клаÑÑ"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "типы квалифицированных функций не могут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑтатичеÑких Ñлементов-функций"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "типы квалифицированных функций не могут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñвободных функций"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "в декларации friend-клаÑÑа иÑпользованы квалификаторы типа"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "в декларации friend-клаÑÑа иÑпользован квалификатор %<inline%>"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "параметры шаблона не могут быть friend"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "в friend-декларации требуетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ клаÑÑа: %<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "в friend-декларации требуетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ клаÑÑа: %<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "попытка Ñделать клаÑÑ %qT \"другом\" глобальной облаÑти видимоÑти"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "некорректные квалификаторы Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° функции, не ÑвлÑющейÑÑ Ñлементом"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "абÑтрактный декларатор %qT иÑпользован в качеÑтве декларатора"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "недопуÑтимое иÑпользование %<::%> в декларации параметра"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "параметр %q+D объÑвлен %<inline%>"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "ÑтатичеÑкий Ñлемент %qD объÑвлен как %<register%>"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "недопуÑтимое иÑпользование %<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ C-функции `%#D' противоречит"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %qD объÑвлена виртуальной внутри объединениÑ"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD не может быть объÑвлена виртуальной, поÑкольку она вÑегда ÑтатичеÑкаÑ"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, fuzzy, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "квалификаторы не допуÑкаютÑÑ Ð² декларации `operator %T'"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD перекрывает Ñлемент клаÑÑа, на который указывает 'this'"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr "конÑтрукторы Ð½ÐµÐ»ÑŒÐ·Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ как virtual"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "квалификаторы не допуÑкаютÑÑ Ð² декларации `operator %T'"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "поле %qD имеет неполный тип"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "Ð¸Ð¼Ñ %qT имеет неполный тип"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " в конкретизации шаблона %qT"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, fuzzy, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qs не ÑвлÑетÑÑ Ð½Ð¸ функцией, ни Ñлементом-функцией; friend-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ допуÑкаетÑÑ"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "`%#D' не ÑвлÑетÑÑ Ð½ÐµÑтатичеÑким Ñлементом %qT"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "ÑтатичеÑкий Ñлемент %qD объÑвлен как %<register%>"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "некорректный клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ %<auto%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "некорректный клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ %<register%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "некорректный клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ %<__thread%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
-#| msgid "an asm-specification is not allowed on a function-definition"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ asm не допуÑкаетÑÑ Ð¿Ñ€Ð¸ определении функции"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "некорректно указано %<static%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs, объÑвленной вне глобальной облаÑти видимоÑти"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "некорректно указано %<inline%> Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %qs, объÑвленной вне глобальной облаÑти видимоÑти"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %qs не ÑвлÑетÑÑ Ñлементом клаÑÑа"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "атрибут %qE Ð´Ð»Ñ Ð½Ðµ клаÑÑовых типов игнорируетÑÑ"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "атрибут %qE Ð´Ð»Ñ Ð½Ðµ клаÑÑовых типов игнорируетÑÑ"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑтатичеÑкого Ñлемента-функции %qD"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑтатичеÑкой функции внутри другой функции"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "Ñлово %<static%> недопуÑтимо при определении (в отличие от объÑвлениÑ) ÑтатичеÑкого Ñлемента данных в клаÑÑе"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "ÑтатичеÑкий Ñлемент %qD объÑвлен как %<register%>"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑÐ²Ð½Ð°Ñ extern-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñлемента %q#D"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D вне клаÑÑа не ÑвлÑетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%<extern%> Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qs Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "Ð´Ð»Ñ %qs задан Ñпецификатор %<extern%> и инициализатор"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "аргумент по умолчанию Ð´Ð»Ñ %q#D имеет тип %qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "аргумент по умолчанию Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° типа %qT имеет тип %qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
-#| msgid "default argument %qE uses local variable %qD"
msgid "default argument %qE uses %qD"
msgstr "аргумент по умолчанию %qE иÑпользует локальную переменную %qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "аргумент по умолчанию %qE иÑпользует локальную переменную %qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "параметр %q+D имеет неполный тип"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %qD Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ метода"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, fuzzy, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "параметр %qD включает %s на маÑÑив Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтной границей %qT"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, fuzzy, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr "параметр %qD включает %s на маÑÑив Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтной границей %qT"
@@ -29764,170 +29621,168 @@ msgstr "параметр %qD включает %s на маÑÑив Ñ Ð½ÐµÐ¸Ð·Ð²
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "некорректный конÑтруктор; возможно, вы имели в виду %<%T (const %T&)%>"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD может не дейÑтвовать в проÑтранÑтве имён"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD можно не определÑÑ‚ÑŒ ÑтатичеÑкой"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD должен быть неÑтатичеÑкой Ñлементом-функцией"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD должен быть либо неÑтатичеÑким Ñлементом-функцией или функцией-не-Ñлементом"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD должен иметь аргумент типа клаÑÑ Ð¸Ð»Ð¸ перечиÑлимого типа"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "преобразование к %s%s никогда не будет иÑпользовать операцию Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr "преобразование к %s%s никогда не будет иÑпользовать операцию Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "преобразование к %s%s никогда не будет иÑпользовать операцию Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr "преобразование к %s%s никогда не будет иÑпользовать операцию Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "преобразование к %s%s никогда не будет иÑпользовать операцию Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr "преобразование к %s%s никогда не будет иÑпользовать операцию Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ не поддерживает перегрузку операции ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qD не может иметь переменное чиÑло аргументов"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "поÑтфикÑный %qD должен иметь аргумент типа %<int%>"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "поÑтфикÑный %qD должен иметь второй аргумент типа %<int%>"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD должен иметь не более одного аргумента"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD должен иметь один или два аргумента"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "префикÑный %qD должен возвращать %qT"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "поÑтфикÑный %qD должен возвращать %qT"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD должен иметь ÑпиÑок параметров %<void%>"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD должен иметь ровно один аргумент"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD должен иметь ровно два аргумента"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "пользовательÑкий оператор %qD вÑегда вычиÑлÑет оба аргумента"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD должен возвращать результат по значению"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD не может иметь аргументов по умолчанию"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "иÑпользование параметра шаблона %qT поÑле %qs"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
-#| msgid "ambiguous template specialization %qD for %q+D"
msgid "using alias template specialization %qT after %qs"
msgstr "Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° %qD Ð´Ð»Ñ %q+D"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "иÑпользование typedef-имени %qD поÑле %qs"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
-#| msgid "%q+D has a previous declaration here"
msgid "%qD has a previous declaration here"
msgstr "%q+D ранее декларирован здеÑÑŒ"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "ÑÑылка на %qT как на %qs"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T ранее декларирован здеÑÑŒ"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "ÑÑылка на %qT как на enum"
@@ -29939,88 +29794,88 @@ msgstr "ÑÑылка на %qT как на enum"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "Ð´Ð»Ñ %<%s %T%> нужен аргумент-шаблон"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD имеет то же имÑ, что и клаÑÑ, в котором он(а) декларируетÑÑ"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "ÑÑылка на %qD противоречива"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "иÑпользование перечиÑÐ»ÐµÐ½Ð¸Ñ %q#D без предыдущей декларации"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qT как не-шаблона"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "некорректный производный тип union %qT"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "Java-клаÑÑ %qT не может иметь неÑколько базовых клаÑÑов"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "Java-клаÑÑ %qT не может иметь виртуальных базовых клаÑÑов"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "базовый тип %qT не ÑвлÑетÑÑ Ð½Ð¸ Ñтруктурой, ни клаÑÑом"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "рекурÑивный тип %qT не определён"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "некорректное дублирование базового типа %qT"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
msgid "previous definition here"
msgstr "%JÑто предыдущее определение"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -30029,72 +29884,72 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "ни один целочиÑленный тип не годитÑÑ Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñех значений перечиÑлимого типа %qT"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "значение перечиÑлимого типа Ð´Ð»Ñ %qD не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой целого типа"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "Ñ†ÐµÐ»Ð°Ñ ÐºÐ¾Ð½Ñтанта Ñлишком велика Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %qs"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "переполнение в перечиÑлÑемых значениÑÑ… Ð´Ð»Ñ %qD"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, fuzzy, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "значение перечиÑлимого типа Ð´Ð»Ñ %qE не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой целого типа"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "тип результата %q#T неполный"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "тип возвращаемого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ðµ полный"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> должен возвращать ÑÑылку на %<*this%>"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "отÑутÑтвует Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
msgid "invalid function declaration"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñлемента-функции"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "параметр %qD объÑвлен void"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr "метка %q+D определена, но не иÑпользуетÑÑ"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ñлемента-функции"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD уже определена в клаÑÑе %qT"
@@ -30134,7 +29989,7 @@ msgstr "удаление функции недопуÑтимо. ÐргуменÑ
msgid "deleting %qT is undefined"
msgstr "удаление %qT не определено"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D"
@@ -30395,7 +30250,7 @@ msgstr "неполный тип %qT иÑпользован во вложенно
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "иÑпользование %qD неоднозначно"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD не ÑвлÑетÑÑ Ñлементом %qT"
@@ -30568,7 +30423,6 @@ msgstr "(еÑли Ñто не ÑоответÑтвует вашим намере
#: cp/init.c:383
#, fuzzy, gcc-internal-format
-#| msgid "invalid application of %qs to incomplete type %qT "
msgid "value-initialization of incomplete type %qT"
msgstr "некорректное применение %qs к неполному типу %qT "
@@ -30660,7 +30514,7 @@ msgstr "базовый клаÑÑ `%#T' должен быть Ñвно иницÐ
#: cp/init.c:1283 cp/init.c:1302
#, gcc-internal-format
msgid "class %qT does not have any field named %qD"
-msgstr "в клаÑÑе %qT не имеет Ð¿Ð¾Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %qD"
+msgstr "в клаÑÑе %qT нет Ð¿Ð¾Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %qD"
#: cp/init.c:1289
#, fuzzy, gcc-internal-format
@@ -30702,7 +30556,7 @@ msgstr "тип %qD не ÑвлÑетÑÑ Ð½ÐµÐ¿Ð¾ÑредÑтвенной баз
msgid "bad array initializer"
msgstr "некорректный инициализатор маÑÑива"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%q#T не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом"
@@ -30784,71 +30638,70 @@ msgstr "неконÑтантный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициал
#: cp/init.c:2574
#, fuzzy, gcc-internal-format
-#| msgid "attributes after parenthesized initializer ignored"
msgid "parenthesized initializer in array new"
msgstr "атрибуты поÑле инициализатора в Ñкобках проигнорированы"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "размер в new Ð´Ð»Ñ Ð¼Ð°ÑÑива должен иметь целочиÑленный тип"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑÑ‚ÑŒ к ÑÑылочному типу"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑÑ‚ÑŒ к типу функции"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "вызов Java-конÑтрукторов, Ñ…Ð¾Ñ‚Ñ %<jclass%> не определен"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "отÑутÑтвует %<class$%> в %qT"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "преждевременное завершение инициализатора"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑ€Ð½Ð¾Ð³Ð¾ маÑÑива при помощи инициализатора"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "в вызове оператора delete обнаружена Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, fuzzy, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "ни деÑтруктор, ни ÑпецифичеÑкий Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа оператор delete не будут вызваны, даже еÑли они декларированы в определении клаÑÑа."
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "неизвеÑтный размер маÑÑива в операторе delete"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "тип, заданный в векторном delete, не ÑвлÑетÑÑ Ð½Ð¸ маÑÑивом, ни указателем"
@@ -30908,42 +30761,42 @@ msgstr "%qD не имеет аргументов, завиÑÑщих от пар
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ %<-fpermissive%>, G++ примет данный код, но разрешение иÑпользовать недекларированные имена будет отменено в дальнейших верÑиÑÑ…)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, fuzzy, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "невозможно кодирование пропущенного Ñреднего операнда %<?:%>"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "кодированное Ð¸Ð¼Ñ %qD изменитÑÑ Ð² будущих верÑиÑÑ… GCC"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -31029,59 +30882,57 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "Ð´Ð»Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ð¸ шаблона %qD"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr "маÑÑив не ÑоответÑтвует дереву регионов"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+#D недопуÑтима,"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+#D недопуÑтима,"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "конец файла в аргументе по умолчанию"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "Ñтруктура vtable Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа %qT может быть неÑовмеÑтима Ñ ABI и может быть изменена в будущих верÑиÑÑ… GCC из-за неÑвного виртуального деÑтруктора"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
-#| msgid "%q#D conflicts with previous using declaration %q#D"
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D конфликтует Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ иÑпользованием декларации %q#D"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
-#| msgid "previous declaration %q+D"
msgid "previous declaration %q+#D"
msgstr "Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %<wchar_t%> Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ %qT"
@@ -31092,244 +30943,243 @@ msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %<wchar_t%> Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ %qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "как %qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D без привÑзки"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
msgid "due to different exception specifications"
msgstr "Генерировать код Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ иÑключительных Ñитуаций"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "неÑоответÑтвие типов Ñ Ð¿Ñ€ÐµÐ´ÑˆÐµÑтвующей внешней декларацией %q#D"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð²Ð½ÐµÑˆÐ½ÑÑ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+#D"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "нет ÑоответÑÑ‚Ð²Ð¸Ñ Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ декларацией %q#D"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q#D перекрывает параметр"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
-#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D перекрывает параметр"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD перекрывает декларированную ранее локальную переменную"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD перекрывает Ñлемент клаÑÑа, на который указывает 'this'"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD перекрывает глобальную декларирацию"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "поиÑк имени %qD изменен"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " ÑоответÑтвует декларации %q+D по правилам Ñтандарта ISO"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " ÑоответÑтвует декларации %q+D по Ñтарым правилам"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "поиÑк имени %qD изменен в ÑоответÑтвии Ñ Ð½Ð¾Ð²Ð¾Ð¹ трактовкой ISO Ð´Ð»Ñ Ð¾Ð±Ð»Ð°Ñти %<for%>"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать уÑтаревшую привÑзку в %q+D, потому что имеетÑÑ Ð´ÐµÑтруктор"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " иÑпользуетÑÑ ÑƒÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ð¿Ñ€Ð¸Ð²Ñзка в %q+D"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, fuzzy, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(G++ примет такой код Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ `-fpermissive')"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D Ñкрывает конÑтруктор Ð´Ð»Ñ %q#T"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D конфликтует Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ иÑпользованием декларации %q#D"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ-функции %q+#D"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "противоречит декларации функции %q#D"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT не ÑвлÑетÑÑ Ð¿Ñ€Ð¾ÑтранÑтвом имён"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "в using-декларации Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ идентификатор шаблона. Попробуйте %<using %D%>"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "проÑтранÑтво имён %qD не допуÑкаетÑÑ Ð² using-декларации"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "отÑутÑтвует Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "в Ñтой облаÑти видимоÑти уже еÑÑ‚ÑŒ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "using-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð½Ðµ-Ñлемента внутри клаÑÑа"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> обозначает деÑтруктор"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%%<%T::%D%> обозначает конÑтруктор"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> обозначает конÑтруктор в %qT"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "нет Ñлементов, ÑоответÑтвующих %<%T::%D%>, в %q#T"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD вне проÑтранÑтва имён, объемлющего %qD"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "Ñвные квалификаторы в декларации %qD"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD Ñледовало объÑвить внутри %qD"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "аргументом атрибута %qs должна быть Ñ†ÐµÐ»Ð°Ñ ÐºÐ¾Ð½Ñтанта"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "атрибут %qD игнорируетÑÑ"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "иÑпользование проÑтранÑтва имён %qD здеÑÑŒ недопуÑтимо; предполагаетÑÑ %qD"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "strong имеет ÑмыÑл только в пределах namespace"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, fuzzy, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD в %qD, который не объемлет %qD"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
@@ -31337,22 +31187,22 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, fuzzy, gcc-internal-format
msgid " %qE"
msgstr " `%#D'"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX вход в pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX выход из pop_everything ()\n"
@@ -31462,7 +31312,7 @@ msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(возможно, пропущена точка Ñ Ð·Ð°Ð¿Ñтой поÑле Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ %qT)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT не ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
@@ -31482,7 +31332,7 @@ msgstr "некорректный идентификатор шаблона"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -31625,718 +31475,711 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "Ñтандартные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² данном контекÑте недопуÑтимы"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, fuzzy, gcc-internal-format
-#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find numeric literal operator %qD"
msgstr "не найден региÑÑ‚Ñ€ клаÑÑа %qs Ð´Ð»Ñ Ð²Ñ‹Ñ‚Ð°Ð»ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð² памÑÑ‚ÑŒ"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
-#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find string literal operator %qD"
msgstr "не найден региÑÑ‚Ñ€ клаÑÑа %qs Ð´Ð»Ñ Ð²Ñ‹Ñ‚Ð°Ð»ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð² памÑÑ‚ÑŒ"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
msgid "expected declaration"
msgstr "пуÑÑ‚Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "-fdata-sections не поддерживаетÑÑ Ð´Ð»Ñ Ñтой целевой машины"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ запрещает конÑтрукции в фигурных Ñкобках внутри выражений"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "операторы-Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿ÑƒÑтимы только внутри функций"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
msgid "expected primary-expression"
msgstr "ожидалоÑÑŒ выражение"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%<this%> недопуÑтим в данном контекÑте"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "декларации Objective-C могут находитьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в глобальной облаÑти"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qD недопуÑтима в данном контекÑте"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
msgid "expected id-expression"
msgstr "ожидалоÑÑŒ выражение"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, fuzzy, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "%qT не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом или проÑтранÑтвом имён"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD перекрывает Ñлемент клаÑÑа, на который указывает 'this'"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "typedef-Ð¸Ð¼Ñ %qD иÑпользовано как декларатор деÑтруктора"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
msgid "expected unqualified-id"
msgstr "ожидалÑÑ ÑпиÑок Ñпецификаторов и квалификаторов"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT, ÑвлÑющегоÑÑ Ð°Ð±Ñтрактным клаÑÑом"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, fuzzy, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qs не ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "ожидалиÑÑŒ Ñпецификаторы декларации"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "в ISO C++ ÑоÑтавные литеральные конÑтрукции запрещены"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qE не клаÑÑ"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "некорректное иÑпользование %qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr "`%D::%D' не ÑвлÑетÑÑ Ñлементом %qT"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ не поддерживает назначенные инициализаторы"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "граница маÑÑива не допуÑкаетÑÑ Ð¿Ð¾Ñле идентификатора типа в Ñкобках"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "попробуйте убрать Ñкобки вокруг идентификатора типа"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "выражение в деклараторе new должно иметь целый или перечиÑлимый тип"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "иÑпользование уÑтаревшей конÑтрукции Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "рекомендуетÑÑ Ð¾ÐºÑ€ÑƒÐ¶Ð°Ñ‚ÑŒ Ñкобками выражение &&, иÑпользуемое в операнде ||"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ не поддерживает назначенные инициализаторы"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, fuzzy, gcc-internal-format
msgid "expected end of capture-list"
msgstr "некорректный операнд"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ не поддерживает назначенные инициализаторы"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
-#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "Ð¸Ð½ÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ %qD, доÑтупной только на чтение"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
-#| msgid "%q+D declared here"
msgid "%q+#D declared here"
msgstr "%q+D объÑвлено здеÑÑŒ"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "аргумент по умолчанию Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %d функции `%#D'"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
msgid "expected labeled-statement"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case-метка %qE вне оператора switch"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> обозначает конÑтруктор в %qT"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr "%qD не ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ шаблоном"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
msgid "expected selection-statement"
msgstr "ожидалаÑÑŒ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¸Ð»Ð¸ оператор"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
-#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "оператор-выражение имеет неполный тип"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
msgid "expected iteration-statement"
msgstr "ожидалаÑÑŒ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¸Ð»Ð¸ оператор"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, fuzzy, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "Ñтандартные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² данном контекÑте недопуÑтимы"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ не поддерживает вычиÑлÑемые goto"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
msgid "expected jump-statement"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "Ð¸Ð·Ð±Ñ‹Ñ‚Ð¾Ñ‡Ð½Ð°Ñ %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "Ñмешивание деклараций и определений функций запрещено"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, fuzzy, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "%qD может быть задан только внутри клаÑÑа"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr "Ñпецификатор pure в определении функции"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "определение клаÑÑа не должно Ñодержать friend"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ клаÑÑа"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "некорректное иÑпользование %<this%> в функции, не ÑвлÑющейÑÑ Ñлементом"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
msgid "only constructors take member initializers"
msgstr "только Ð´Ð»Ñ ÐºÐ¾Ð½Ñтрукторов возможна Ð±Ð°Ð·Ð¾Ð²Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "отÑутÑтвует инициализатор Ð´Ð»Ñ Ñлемента %qD"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
-#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "static-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D поÑле неstatic-декларации"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "уÑтаревший Ñтиль инициализатора базового клаÑÑа"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "ключевое Ñлово %<typename%> запрещено в Ñтом контекÑте (инициализатор квалифицированного Ñлемента неÑвно ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, fuzzy, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr "ожидалÑÑ Ñтроковый литерал"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
-#| msgid "expected identifier"
msgid "expected suffix identifier"
msgstr "ожидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
msgid "expected operator"
msgstr "некорректный операнд"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "ключевое Ñлово %<export%> не реализовано; игнорируетÑÑ"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "%qD не может иметь аргументов по умолчанию"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "%qD не может иметь аргументов по умолчанию"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "параметры шаблона не могут быть friend"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
msgid "expected template-id"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
msgid "expected %<<%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "ÑпиÑок аргументов шаблона не должен начинатьÑÑ Ñ %<<::%>"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> - альтернативное напиÑание %<[%>. Ð’Ñтавьте пробел между %<<%> и %<::%>"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, fuzzy, gcc-internal-format
msgid "parse error in template argument list"
msgstr "ÑпиÑок аргументов шаблона не должен начинатьÑÑ Ñ `<::'"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
msgid "expected template-name"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "не шаблон %qD иÑпользован как шаблон"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "иÑпользуйте нотацию %<%T::template %D%> Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¾ том, что Ñто шаблон"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, fuzzy, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr "ожидалиÑÑŒ Ñпецификаторы декларации или %<...%>"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
msgid "expected template-argument"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "некорректный тип аргумента"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT, не ÑвлÑющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT, не ÑвлÑющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "ÑÐ¿ÐµÑ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ñ Ð¿Ñ€Ð¸Ð²Ñзкой C"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
msgid "expected type specifier"
msgstr "ожидалиÑÑŒ Ñпецификаторы декларации"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
msgid "expected template-id for type"
msgstr "некорректное адреÑное выражение"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
msgid "expected type-name"
msgstr "ОжидалоÑÑŒ имÑ"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¸Ñ‡ÐµÐ³Ð¾ не опиÑывает"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "атрибут %qE Ð´Ð»Ñ Ð½Ðµ клаÑÑовых типов игнорируетÑÑ"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ %qD в конкретизации шаблона"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "%qD не ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼ функции"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr "%qT не ÑвлÑетÑÑ Ð¿Ñ€Ð¾ÑтранÑтвом имён"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "ожидалоÑÑŒ %<,%> или %<;%>"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr "Включить автоматичеÑкую конкретизацию шаблонов"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD в %qD, который не объемлет %qD"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD в %qD, который не объемлет %qD"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "повторное определение %q#T"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, fuzzy, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qT не ÑвлÑетÑÑ Ð¿Ñ€Ð¾ÑтранÑтвом имён"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
msgid "expected namespace-name"
msgstr "ожидалоÑÑŒ Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "#pragma %s уже зарегиÑтрирована"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "идентификатор шаблона недопуÑтим в using-декларации"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "#pragma %s уже зарегиÑтрирована"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ asm не допуÑкаетÑÑ Ð¿Ñ€Ð¸ определении функции"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "атрибуты не допуÑкаютÑÑ Ð¿Ñ€Ð¸ определении функции"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
msgid "expected initializer"
msgstr "ожидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
msgid "invalid type in declaration"
msgstr "пуÑÑ‚Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
msgid "initializer provided for function"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ friend-функции %qs"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "атрибуты поÑле инициализатора в Ñкобках проигнорированы"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, fuzzy, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ñ‹Ð¼ значением"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "Ñоздание ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент ÑÑылочного типа %qT"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%D%> не ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, fuzzy, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "некорректное иÑпользование неÑтатичеÑкого Ñлемента данных '%E'"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "иÑпользуйте %<%T::%D%> вмеÑто %<%T::%D%> Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½Ñтруктора в имени Ñ ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼"
@@ -32345,251 +32188,247 @@ msgstr "иÑпользуйте %<%T::%D%> вмеÑто %<%T::%D%> Ð´Ð»Ñ Ð¸Ð¼ÐµÐ
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
msgid "invalid declarator"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
msgid "expected declarator"
msgstr "ожидалиÑÑŒ Ñпецификаторы декларации"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, fuzzy, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qT не ÑвлÑетÑÑ Ð¿Ñ€Ð¾ÑтранÑтвом имён"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
-#| msgid "creating pointer to member of non-class type %qT"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "Ñоздание ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент не клаÑÑового типа %qT"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
msgid "expected ptr-operator"
msgstr "некорректный операнд"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, fuzzy, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "повтор case-значениÑ,"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr "повтор case-значениÑ,"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "недопуÑтимое иÑпользование %<::%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
msgid "expected type-specifier"
msgstr "ожидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "ожидалоÑÑŒ %<:%> или %<...%>"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "уÑтаревшее иÑпользование аргумента по умолчанию в качеÑтве параметра не-функции"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "аргументы по умолчанию разрешены только Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² функций"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "%qD не может иметь аргументов по умолчанию"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "%qD не может иметь аргументов по умолчанию"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ не поддерживает назначенные инициализаторы"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
-#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ не поддерживает назначенные инициализаторы"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
msgid "expected class-name"
msgstr "ожидалоÑÑŒ Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "%q+D: inline-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ñле определениÑ"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "%q+D: inline-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ñле определениÑ"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "Ðекорректный муÑор поÑле Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð² %C"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "ожидалоÑÑŒ %<,%> или %<;%>"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
-#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "нет файла Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа %s"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "в декларации friend нет имени клаÑÑа или функции"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, fuzzy, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ template-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
msgid "extra qualification not allowed"
msgstr "избыточные квалификаторы проигнориованы"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, fuzzy, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "перед Ñвной Ñпециализацией должно быть 'template <>'"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "не шаблон %qD иÑпользован как шаблон"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "предыдущее определение %q+#T"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
msgid "expected class-key"
msgstr "ожидалоÑÑŒ Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, fuzzy, gcc-internal-format
-#| msgid "a class-key must be used when declaring a friend"
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "в декларации friend должно быть иÑпользовано ключевое Ñлово клаÑÑа"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "в декларации friend нет имени клаÑÑа или функции"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "Ñпецификатор pure в определении функции"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "некорректный операнд"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr "#pragma %s уже зарегиÑтрирована"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, fuzzy, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "иÑпользование `typename' вне шаблона"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, fuzzy, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "ключевое Ñлово `typename' запрещено в Ñтом контекÑте (инициализатор квалифицированного Ñлемента неÑвно ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "недоÑтаточно ÑпиÑков параметров шаблонов"
@@ -32598,317 +32437,317 @@ msgstr "недоÑтаточно ÑпиÑков параметров шаблоÐ
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "Ñлишком много ÑпиÑков параметров шаблонов"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "именованные возвращаемые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ не поддерживаютÑÑ"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, fuzzy, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°-Ñлемента `%#D' в локальном клаÑÑе"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "шаблон Ñ Ð¿Ñ€Ð¸Ð²Ñзкой C"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ клаÑÑа"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ `%#D'"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "ÑÐ²Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð² не-namespace облаÑти %qD"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%H%<>>%> должно быть %<> >%> внутри ÑпиÑка аргументов вложенного шаблона"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "ошибочное иÑпользование %<>>%>, иÑпользуйте %<>%> Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÑпиÑка аргументов шаблона"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ клаÑÑа"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> перед %<extern%>"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
msgid "expected %<new%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
msgid "expected %<delete%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
msgid "expected %<return%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
msgid "expected %<extern%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
msgid "expected %<operator%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
msgid "expected %<class%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
msgid "expected %<template%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
msgid "expected %<using%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
msgid "expected %<asm%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
msgid "expected %<try%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
msgid "expected %<catch%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
msgid "expected %<throw%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
msgid "expected %<@try%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, fuzzy, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, fuzzy, gcc-internal-format
msgid "expected %<@throw%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, fuzzy, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, fuzzy, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr "ожидалÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
msgid "expected %<::%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, fuzzy, gcc-internal-format
msgid "expected %<...%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
msgid "expected %<*%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
msgid "expected %<~%>"
msgstr "ожидалоÑÑŒ %<{%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "ожидалоÑÑŒ %<:%> или %<...%>"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "ожидалоÑÑŒ %<,%>, %<;%> или %<}%>"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, fuzzy, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "определение %qD уже еÑÑ‚ÑŒ в %qT"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "Ñто предыдущее определение `%#D'"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, fuzzy, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%J%qD повторно декларирован как Ñимвол другого вида"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "Ñлово %<template%> (Ð´Ð»Ñ ÑнÑÑ‚Ð¸Ñ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¾Ñти) допуÑкаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ внутри шаблонов"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "конец файла в аргументе по умолчанию"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "неверное положение %<@%D%> конÑтрукции Objective-C++"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "в конÑтрукции %<@encode%> в качеÑтве аргумента должен быть задан тип"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr "ожидалиÑÑŒ Ñпецификаторы декларации"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "%Jатрибут section недопуÑтим Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… переменных"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "неверно задан векторный тип Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° %qE"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, fuzzy, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "ОжидалÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "атрибут %qE Ð´Ð»Ñ %qE проигнорирован"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
msgid "invalid type for property"
msgstr "некорректный тип аргумента"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "региÑÑ‚Ñ€Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs иÑпользована во вложенной функции"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr "недоÑÑ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ типе"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "муÑор в конце директивы %<#pragma pack%>"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, fuzzy, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "межмодульные оптимизации пока не реализованы"
@@ -32965,7 +32804,6 @@ msgstr "ÑÐ¿ÐµÑ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ %qT поÑле конкретизации"
#: cp/pt.c:855
#, fuzzy, gcc-internal-format
-#| msgid "explicit specialization of non-template %qT"
msgid "partial specialization of alias template %qD"
msgstr "ÑÐ²Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ðµ-шаблона %qT"
@@ -33006,69 +32844,69 @@ msgstr ""
msgid "%qD is not a function template"
msgstr "%qD не ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼ функции"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, fuzzy, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "идентификатор шаблона %qD иÑпользован как декларатор"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° %qD Ð´Ð»Ñ %q+D"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr ""
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, fuzzy, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "перед Ñвной Ñпециализацией должно быть 'template <>'"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD не ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ шаблоном"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "отÑутÑтвует Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD в %qD"
@@ -33081,82 +32919,82 @@ msgstr "отÑутÑтвует Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD в %qD"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr ""
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr ""
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
msgid " <anonymous>"
msgstr "<anonymous>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, fuzzy, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ `%#D'"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, fuzzy, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr "параметр шаблона `%#D'"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
@@ -33164,52 +33002,52 @@ msgstr[0] "неÑоответÑÑ‚Ð²Ð¸Ñ Ñ‚Ð¸Ð¿Ð°/Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² аргумÐ
msgstr[1] "неÑоответÑÑ‚Ð²Ð¸Ñ Ñ‚Ð¸Ð¿Ð°/Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² аргументе %d в ÑпиÑке параметров шаблона Ð´Ð»Ñ %qD"
msgstr[2] ""
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "ÑÐ¿ÐµÑ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ %qT поÑле конкретизации %qT"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr ""
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, fuzzy, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "аргументы по умолчанию не допуÑкаютÑÑ Ð² декларации Ñпециализации friend-шаблона %qD"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr "аргументы по умолчанию не допуÑкаютÑÑ Ð² декларации Ñпециализации friend-шаблона %qD"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, fuzzy, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr "аргументы по умолчанию не допуÑкаютÑÑ Ð² декларации Ñпециализации friend-шаблона %qD"
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, fuzzy, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr "аргументы по умолчанию не допуÑкаютÑÑ Ð² декларации Ñпециализации friend-шаблона %qD"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "аргумент по умолчанию Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° типа %qT имеет тип %qT"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr ""
@@ -33217,7 +33055,7 @@ msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "деÑтруктор %qD объÑвлен как шаблон Ñлемента"
@@ -33227,57 +33065,57 @@ msgstr "деÑтруктор %qD объÑвлен как шаблон Ñлеме
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ template-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %qD"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, fuzzy, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "определение шаблона Ð´Ð»Ñ Ð½Ðµ-шаблона `%#D'"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, fuzzy, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "ожидалоÑÑŒ %d уровней параметров шаблона Ð´Ð»Ñ `%#D', обнаружено %d"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "обнаружено %d параметров шаблона Ð´Ð»Ñ `%#D'"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, fuzzy, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "обнаружено %d параметров шаблона Ð´Ð»Ñ %q#T"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " вмеÑто требуемых %d"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "параметры шаблона не могут быть friend"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, fuzzy, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr "объемлющие шаблоны клаÑÑов не были Ñвно Ñпециализированы"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT не ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ñ‹Ð¼ типом"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, fuzzy, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "в декларации %qs по умолчанию уÑтановлен тип `int'"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
@@ -33285,7 +33123,7 @@ msgstr[0] "иÑпользование %qD без параметров шабло
msgstr[1] "иÑпользование %qD без параметров шаблона"
msgstr[2] ""
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
@@ -33293,12 +33131,12 @@ msgstr[0] "предыдущей декларации `%#D', ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ð°Ñ
msgstr[1] "предыдущей декларации `%#D', ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ð·Ð´ÐµÑÑŒ"
msgstr[2] ""
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, fuzzy, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "параметр шаблона `%#D'"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, fuzzy, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "повторно объÑвлен здеÑÑŒ как `%#D'"
@@ -33307,334 +33145,329 @@ msgstr "повторно объÑвлен здеÑÑŒ как `%#D'"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, fuzzy, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "повторное определение аргумента по умолчанию Ð´Ð»Ñ `%#D'"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
msgid "original definition appeared here"
msgstr "%J иÑходное определение находитÑÑ Ð·Ð´ÐµÑÑŒ"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "Ñтроковый литерал %E не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона, потому что Ñто Ð°Ð´Ñ€ÐµÑ ÑтатичеÑкого объекта"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "Ñтроковый литерал %E не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона, потому что Ñто Ð°Ð´Ñ€ÐµÑ ÑтатичеÑкого объекта"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "(указатель на Ñлемент можно получить только при помощи %<&%E%>)"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr "обнаружено %d параметров шаблона Ð´Ð»Ñ `%#D'"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr "Ñравнение между типами `%#T' и `%#T'"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, fuzzy, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr "%qD не может иметь аргументов по умолчанию"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "параметры шаблона не могут быть friend"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr "%qs не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ выходным файлом"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
-#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "некорректное преобразование от типа %qT к типу %qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
-#| msgid "%qT is an ambiguous base of %qT"
msgid " %qT is an ambiguous base class of %qT"
msgstr "%qT ÑвлÑетÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¾Ð¹ базой %qT"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
-#| msgid "type %qT is not derived from type %qT"
msgid " %qT is not derived from %qT"
msgstr "тип %qT не ÑвлÑетÑÑ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ñ‹Ð¼ от %qT"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ %s указатель на неполный тип %qT"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr "параметры шаблона не могут быть friend"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr "%s: ошибка при определении адреÑа перегруженной функции"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "Ñтроковый литерал %E не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона, потому что Ñто Ð°Ð´Ñ€ÐµÑ ÑтатичеÑкого объекта"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "аргумент по умолчанию Ð´Ð»Ñ `%#D' имеет тип %qT"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, fuzzy, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "Ñтроковый литерал %E не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона, потому что Ñто Ð°Ð´Ñ€ÐµÑ ÑтатичеÑкого объекта"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, fuzzy, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "Ñтроковый литерал %E не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона, потому что Ñто Ð°Ð´Ñ€ÐµÑ ÑтатичеÑкого объекта"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "Ñтроковый литерал %E не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона, потому что Ñто Ð°Ð´Ñ€ÐµÑ ÑтатичеÑкого объекта"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "попробуйте задать %qE"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, fuzzy, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ аргументом шаблона"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "Ñтандартные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² данном контекÑте недопуÑтимы"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "некорректный тип аргумента"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, fuzzy, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr "параметр шаблона `%#D'"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
-#| msgid "invalid use of destructor %qD as a type"
msgid "invalid use of destructor %qE as a type"
msgstr "некорректное иÑпользование деÑтруктора %qD в качеÑтве типа"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы ÑоÑлатьÑÑ Ð½Ð° тип параметра шаблона, иÑпользуйте конÑтрукцию %<typename %E%>"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "неÑоответÑÑ‚Ð²Ð¸Ñ Ñ‚Ð¸Ð¿Ð°/Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² аргументе %d в ÑпиÑке параметров шаблона Ð´Ð»Ñ %qD"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " ожидалаÑÑŒ конÑтанта типа %qT, а обнаружено %qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " ожидалÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½ клаÑÑа, а обнаружено %qE"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " ожидалÑÑ Ñ‚Ð¸Ð¿, обнаружено %qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " ожидалÑÑ Ñ‚Ð¸Ð¿, обнаружено %qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " ожидалÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½ клаÑÑа, обнаружено %qT"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr " ожидалÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½ типа %qD, обнаружено %qD"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "неÑоответÑтвие типов в уÑловном выражении"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "ошибка при преобразовании аргумента шаблона %qE в %qT"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "неправильное чиÑло аргументов шаблона (%d, а должно быть %d)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "неправильное чиÑло аргументов шаблона (%d, а должно быть %d)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "задано Ð´Ð»Ñ %q+D"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "некорректный аргумент шаблона %d"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
-#| msgid "%qD is not a function template"
msgid "%q#D is not a function template"
msgstr "%qD не ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼ функции"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "не-шаблонный тип %qT иÑпользован как шаблон"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "Ð´Ð»Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ð¸ шаблона %q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "глубина конкретизации шаблона превышает макÑимум %d (задайте -ftemplate-depth-NN, чтобы увеличить макÑимум) при конкретизации %qD"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, fuzzy, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "глубина конкретизации шаблона превышает макÑимум %d (задайте -ftemplate-depth-NN, чтобы увеличить макÑимум) при конкретизации %qD"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, fuzzy, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ %qD Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %qT"
@@ -33652,257 +33485,257 @@ msgstr "ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ %qD Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %qT"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
msgid "variable %qD has function type"
msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs инициализирована, Ñ…Ð¾Ñ‚Ñ Ð¸Ð¼ÐµÐµÑ‚ неполный тип"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "некорректный тип параметра %qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "в декларации %q+D"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, fuzzy, gcc-internal-format
msgid "function returning an array"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ агрегатное значение"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, fuzzy, gcc-internal-format
msgid "function returning a function"
msgstr "%qs объÑвлена как функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "Ñоздание ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент-функцию не клаÑÑового типа %qT"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "Ñоздание ÑÑылки на void"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "Ñоздание %s на ÑÑылочный тип %qT"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "Ñоздание %s на ÑÑылочный тип %qT"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "Ñоздание ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент не клаÑÑового типа %qT"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "Ñоздание ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент ÑÑылочного типа %qT"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, fuzzy, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "Ñоздание ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент ÑÑылочного типа %qT"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT, ÑвлÑющегоÑÑ Ð°Ð±Ñтрактным клаÑÑом"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT не ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼ class, struct или union"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, fuzzy, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT, ÑвлÑющегоÑÑ Ð°Ð±Ñтрактным клаÑÑом"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "иÑпользование %qs в шаблоне"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "квалифицированный тип %qT не ÑоответÑтвует имени деÑтруктора `~%T'"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "задайте %<typename %E%>, еÑли подразумеваетÑÑ Ñ‚Ð¸Ð¿"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, fuzzy, gcc-internal-format
msgid "using invalid field %qD"
msgstr "отÑутÑтвует ÑтатичеÑкое поле %qs"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "неправильное иÑпользование void-выражениÑ"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, fuzzy, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr "аргументы %<...%>.)"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr "%<%T::%D%> не ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr "%H%qE не опиÑан в Ñтой облаÑти (не в функции)"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом или проÑтранÑтвом имён"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом или проÑтранÑтвом имён"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, fuzzy, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "в %qT иÑпользуетÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ‹Ð¹ тип"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "аргумент по умолчанию Ð´Ð»Ñ `%#D' имеет тип %qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "целочиÑленное выражение %qE не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " при конкретизации %qD"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, fuzzy, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° клаÑÑа Ð´Ð»Ñ %q#T"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ `%#D', не ÑвлÑющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "`%#D' не ÑвлÑетÑÑ Ð½ÐµÑтатичеÑким Ñлементом %qT"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "нет подходÑщего шаблона Ð´Ð»Ñ %qD"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT, не ÑвлÑющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ `%#D'"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, fuzzy, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ `%#D'"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ запрещает иÑпользование %<extern%> в Ñвной конкретизации"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ %qD в конкретизации шаблона"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ `%#D', не ÑвлÑющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT, не ÑвлÑющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ %q#T до Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ запрещает иÑпользование %qE в Ñвных конкретизациÑÑ…"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ %q#T"
@@ -33914,32 +33747,32 @@ msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ %q#T"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "ÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ %qD без определениÑ"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, fuzzy, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "глубина конкретизации шаблона превышает макÑимум %d (задайте -ftemplate-depth-NN, чтобы увеличить макÑимум) при конкретизации %qD"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "неправильное иÑпользование недоопределенного typedef %qD"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "`%#T' не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ типом Ð´Ð»Ñ ÐºÐ¾Ð½Ñтантного параметра шаблона"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, fuzzy, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %qD переменного размера недопуÑтима"
@@ -33947,12 +33780,12 @@ msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %qD переменного Ñ€Ð
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, fuzzy, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "ÑмулÑÑ†Ð¸Ñ %qs невозможна"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -34069,7 +33902,6 @@ msgstr "перекрытие %s функции %q#D"
#: cp/search.c:1969
#, fuzzy, gcc-internal-format
-#| msgid "virtual non-class function %qs"
msgid "virtual function %q+D"
msgstr "Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %qs не ÑвлÑетÑÑ Ñлементом клаÑÑа"
@@ -34145,7 +33977,7 @@ msgstr "некорректное иÑпользование %<this%> на вне
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, fuzzy, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "квалифицированный тип %qT не ÑоответÑтвует имени деÑтруктора `~%T'"
@@ -34185,445 +34017,441 @@ msgstr "определение %q#T внутри ÑпиÑка параметро
msgid "invalid definition of qualified type %qT"
msgstr "некорректное определение квалифицированного типа %qT"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ клаÑÑа"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
msgid "%qD is not captured"
msgstr "%qD не ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, fuzzy, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "иÑпользование %s в объемлющей функции"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, fuzzy, gcc-internal-format
msgid "use of parameter from containing function"
msgstr "иÑпользование %s в объемлющей функции"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, fuzzy, gcc-internal-format
msgid " %q+#D declared here"
msgstr " Ð¸Ð¼Ñ `%#D' объÑвлено здеÑÑŒ"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, fuzzy, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr "иÑпользование %s в объемлющей функции"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "иÑпользование проÑтранÑтва имён %qD в качеÑтве выражениÑ"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "иÑпользование шаблона клаÑÑа %qT в качеÑтве выражениÑ"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñлемента %qD неоднозначен в Ñетке множеÑтвенного наÑледованиÑ"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr ""
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "тип %qE неизвеÑтен"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "%qT не ÑвлÑетÑÑ Ð¿Ñ€Ð¾ÑтранÑтвом имён"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
-#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "Ñпецификаторы клаÑÑа Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ допуÑкаютÑÑ Ð² декларациÑÑ… параметров"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "некорректное иÑпользование неÑтатичеÑкой функции-Ñлемента %qD"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qT не ÑвлÑетÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¼ Ð´Ð»Ñ %qT"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "instance-Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %qs объÑвлена как private"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "Ñоздание %s на ÑÑылочный тип %qT"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, fuzzy, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "%Jпараметр %u имеет неполный тип"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr "Ðе выполнено необходимое уÑловие в коде CRIS: "
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "неstatic-Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ %q+D поÑле static-декларации"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "иÑпользование шаблона клаÑÑа %qT в качеÑтве выражениÑ"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s: ошибка при определении адреÑа перегруженной функции"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "некорректное иÑпользование Ñлемента %q+D в ÑтатичеÑком Ñлементе-функции"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "некорректный тип результата Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ `%#D'"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
-#| msgid "%q#T is not a class"
msgid "%q#T has virtual base classes"
msgstr "%q#T не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ клаÑÑа ÑтатичеÑкого Ñлемента данных нецелочиÑленного типа %qT"
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "неинициализированный Ñлемент %qD конÑтантного типа %qT"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%qD не ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ шаблоном"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "в декларации friend нет имени клаÑÑа или функции"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
-#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "вызов не функции %qD"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
msgid "%qD used before its definition"
msgstr "%q+D иÑпользована без предварительного определениÑ"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
msgid "call has circular dependency"
msgstr "цикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚ÑŒ в протоколе %qs"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "глубина конкретизации шаблона превышает макÑимум %d (задайте -ftemplate-depth-NN, чтобы увеличить макÑимум) при конкретизации %qD"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
msgid "array subscript out of bound"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ñ‹Ð¼ значением"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "размер маÑÑива %qD не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "размер маÑÑива %qD не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "некорректный инициализатор маÑÑива"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
msgid "%q#D is not const"
msgstr "%q#T не ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
msgid "%q#D is volatile"
msgstr "`%+#D' - чаÑтный (private) Ñлемент"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "нет декларации %qD в Ñтой облаÑти видимоÑти"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "выражение в деклараторе new должно иметь целый или перечиÑлимый тип"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, fuzzy, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr "размер маÑÑива %qD не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
-#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "перечиÑлимый и неперечиÑлимый тип в уÑловном выражении"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "целочиÑленное выражение %qE не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "ожидалоÑÑŒ выражение"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, fuzzy, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr "выражение %qE, имеющее тип абÑтрактного клаÑÑа %qT, Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в throw-выражении"
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, fuzzy, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr "размер маÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "целочиÑленное выражение %qE не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñтантой"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "размер маÑÑива не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленным конÑтантным выражением"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
msgid "non-constant array initialization"
msgstr "неконÑтантный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициализаторе"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "Ðеожиданное окончание Ñтроки формата"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ ÑÑылки на %q#T"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, fuzzy, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr "неверные операнды бинарной операции %s"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "Ð¸Ð¼Ñ %<this%> недоÑтупно Ð´Ð»Ñ ÑтатичеÑких Ñлементов-функций"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, fuzzy, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "квалификаторы `%V' не могут быть применены к %qT"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ð¹ Java-клаÑÑов"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, fuzzy, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ð¹ клаÑÑов"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, fuzzy, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qs уÑтарел; таблицы виртуальных функций g++ теперь COM-ÑовмеÑтимы по умолчанию"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "заданный init_priority не ÑвлÑетÑÑ Ñ†ÐµÐ»Ð¾Ð¹ конÑтантой"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, fuzzy, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "атрибут %qs может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ð¹ объектов типа class на уровне файла"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "заданный init_priority вне диапазона"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "заданный init_priority зарезервировано Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ иÑпользованиÑ"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, fuzzy, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "атрибут %qs не поддерживаетÑÑ Ð½Ð° данной платформе"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_* check: ошибка в %s, в %s:%d"
@@ -34713,448 +34541,451 @@ msgstr "ISO C++ не поддерживает взÑтие адреÑа от Ñ„Ñ
msgid "invalid use of non-static member function"
msgstr "некорректное иÑпользование неÑтатичеÑкой функции-Ñлемента"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr "Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ временной переменной"
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "преобразование Ñтроковой конÑтанты к типу %qT не будет поддерживатьÑÑ Ð² будущих верÑиÑÑ… компилÑтора"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
-#| msgid "request for member %qD in %qE, which is of non-class type %qT"
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñлемента %qD в %qE, имеющего не клаÑÑовый тип %qT"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñлемента %qD в %qE, имеющего не клаÑÑовый тип %qT"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, fuzzy, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "некорректное иÑпользование неÑтатичеÑкого Ñлемента данных '%E'"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "некорректный доÑтуп к неÑтатичеÑкому Ñлементу данных %qD NULL-объекта"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(возможно, некорректное иÑпользование макроÑа %<offsetof%>)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "некорректный доÑтуп к неÑтатичеÑкому Ñлементу данных %qD NULL-объекта"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "квалифицированный тип %qT не ÑоответÑтвует имени деÑтруктора `~%T'"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "разрушаемый тип %qT, а деÑтруктор отноÑитÑÑ Ðº %qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, fuzzy, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "`%D::%D' не ÑвлÑетÑÑ Ñлементом %qT"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT не ÑвлÑетÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¼ Ð´Ð»Ñ %qT"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, fuzzy, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD не имеет Ñлемента Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ '%E'"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD не ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ñ‹Ð¼ Ñлементом-функцией"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT не ÑвлÑетÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° объект"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "некорректное применение %qs к указателю на Ñлемент"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "некорректное применение %qs к указателю на Ñлемент"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "некорректное применение %qs к указателю на Ñлемент"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "отÑутÑтвует Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ не поддерживает индекÑирование маÑÑива, не ÑвлÑющегоÑÑ Ð»ÐµÐ²Ð¾Ð¹ чаÑтью приÑваиваниÑ"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "индекÑируемый маÑÑив объÑвлен как %<register%>"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "индекÑируемый объект не ÑвлÑетÑÑ Ð½Ð¸ маÑÑивом, ни указателем"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "не задан объект при иÑпользовании %qE"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ запрещает иÑпользование %<::main%> из программы"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, fuzzy, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "необходимо иÑпользовать .* или ->* Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° по указателю на Ñлемент-функцию в `%E (...)'"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать как функцию"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "Ñлишком много аргументов Ð´Ð»Ñ %s `%+#D'"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "Ñлишком мало аргументов Ð´Ð»Ñ %s `%+#D'"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr "Ñлишком много аргументов в вызове функции %qE"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr "Ñлишком мало аргументов в вызове функции %qE"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr "Ñлишком много аргументов в вызове функции %qE"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr "Ñлишком мало аргументов в вызове функции %qE"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "Ñлишком много аргументов Ð´Ð»Ñ %s `%+#D'"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "Ñлишком мало аргументов Ð´Ð»Ñ %s `%+#D'"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ задано Ñлишком много аргументов"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "Ñлишком мало аргументов функции"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "параметр %P %qD имеет неполный тип %qT"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "параметр %P имеет неполный тип %qT"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "предполагаетÑÑ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ к типу %qT из перегруженной функции"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL в арифметичеÑком выражении"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
msgid "left rotate count is negative"
msgstr "%s величина Ñдвига Ð´Ð»Ñ rotate отрицательнаÑ"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
msgid "right rotate count is negative"
msgstr "%s величина Ñдвига Ð´Ð»Ñ rotate отрицательнаÑ"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "%s величина Ñдвига Ð´Ð»Ñ rotate >= ширина типа"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "%s величина Ñдвига Ð´Ð»Ñ rotate >= ширина типа"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "Ð´Ð»Ñ weak декларации %q+D поÑле первого иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑиÑтемы не Ñпецифицировано"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, fuzzy, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "Ð°Ð´Ñ€ÐµÑ %qD вÑегда будет %<иÑтина%>"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ не поддерживает Ñравнение между указателем и целым"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "аргумент неупорÑдоченного ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ - не плавающее значение"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, fuzzy, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "некорректные операнды типов %qT и %qT Ð´Ð»Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¾Ð¹ операции `%O'"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ не поддерживает иÑпользование ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ %<void *%> в вычитании"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ не поддерживает иÑпользование ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию в вычитании"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ не поддерживает иÑпользование ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° метод в вычитании"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "некорректное иÑпользование ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° неполный тип в вычиÑлениÑÑ… Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñми"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr "Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ временной переменной"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ временной переменной"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, fuzzy, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "некорректное иÑпользование '%E' Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент-функцию. ИÑпользуйте квалифицированный идентификатор."
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, fuzzy, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñкобки вокруг '%E' Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент-функцию."
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ не поддерживает взÑтие адреÑа от неквалифицированного Ñлемента-функцииили Ñлемента в Ñкобках Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент-функцию.ИÑпользуйте ÑинтакÑÐ¸Ñ %<&%T::%D%>"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ не поддерживает взÑтие адреÑа от bound-Ñлемента-функции Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент-функцию. ИÑпользуйте ÑинтакÑÐ¸Ñ %<&%T::%D%>"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ временной переменной"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr "Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ временной переменной"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ не поддерживает взÑтие адреÑа от функции %<::main%>"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ не поддерживает взÑтие адреÑа от Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ðº не-lvalue-выражению"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать указатель на Ñлемент-ÑÑылку %qD"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ не поддерживает %sацию по отношению к перечиÑлимому типу"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ не поддерживает %sацию по отношению к перечиÑлимому типу"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ %s указатель на неполный тип %qT"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ %s указатель на неполный тип %qT"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ не поддерживает %sацию по отношению к указателю на тип %qT"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ не поддерживает %sацию по отношению к указателю на тип %qT"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "в ÑпиÑке операндов задано некорректное выражение"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ð·ÑÑ‚ÑŒ Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ %<this%>, поÑкольку Ñто rvalue-выражение"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, fuzzy, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "запрошен Ð°Ð´Ñ€ÐµÑ Ñ€ÐµÐ³Ð¸Ñтровой переменной %qs"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, fuzzy, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "взÑтие адреÑа от %qD, объÑвленного как `register'"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, fuzzy, gcc-internal-format
-#| msgid "initializer for %qT must be brace-enclosed"
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "инициализатор Ð´Ð»Ñ %qT должен быт заключен в фигурные Ñкобки"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "%s - ÑпиÑок выражений раÑÑматриваетÑÑ ÐºÐ°Ðº ÑоÑтавное выражение"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "%s - ÑпиÑок выражений раÑÑматриваетÑÑ ÐºÐ°Ðº ÑоÑтавное выражение"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "%s - ÑпиÑок выражений раÑÑматриваетÑÑ ÐºÐ°Ðº ÑоÑтавное выражение"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "%s - ÑпиÑок выражений раÑÑматриваетÑÑ ÐºÐ°Ðº ÑоÑтавное выражение"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "преобразование из %qT в %qT отменÑет квалификаторы"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "некорректное применение static_cast от типа %qT к типу %qT"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "некорректное применение static_cast от типа %qT к типу %qT"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "некорректное применение static_cast от типа %qT к типу %qT"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "преобразование из %qT в %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, fuzzy, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "некорректное применение reinterpret_cast от rvalue-Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT к типу %qT"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, fuzzy, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "reinterpret_cast от %qT к %qT Ñнижает точноÑÑ‚ÑŒ"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "приведение от %qT к %qT увеличивает размер Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑƒÐºÐ°Ð·ÑƒÐµÐ¼Ð¾Ð³Ð¾ типа"
@@ -35163,221 +34994,221 @@ msgstr "приведение от %qT к %qT увеличивает размер
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ не поддерживает приведение типа ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° функцию к указателю на объект"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, fuzzy, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "некорректное применение const_cast от типа %qT к типу %qT"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "некорректное применение const_cast Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ %qT, не ÑвлÑющимÑÑ Ð½Ð¸ указателем, ни ÑÑылкой, ни указателем на Ñлемент данных"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "некорректное применение const_cast Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ %qT, ÑвлÑющимÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼ или ÑÑылкой на функцию"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "некорректное применение const_cast от rvalue-Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %qT к типу %qT"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "некорректное применение const_cast от типа %qT к типу %qT"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ не поддерживает приведение к типу маÑÑива %qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "некорректное приведение к типу функции %qT"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " в вычиÑлении %<%Q(%#T, %#T)%>"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr "неконÑтантный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива в инициализаторе"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "неÑовмеÑтимые типы в приÑваивании %qT -> %qT"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
msgid "array used as initializer"
msgstr "некорректный инициализатор маÑÑива"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
msgid "invalid array assignment"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð»ÐµÐ²Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ в приÑваивании"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " в преобразовании ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент-функцию"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "преобразование ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ðº Ñлементу через виртуальную базу %qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " в преобразовании ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñлемент"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "некорректное преобразование к типу %qT от типа %qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qT в %qT Ð´Ð»Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð° `%P' функции %qD"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qT в %qT Ð´Ð»Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð° `%P' функции %qD"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qT в %qT в %s"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qT в %qT в %s"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qT в %qT в %s"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qT в %qT в %s"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr "ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %qT в %qT в %s"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "аргументу %d %qE, вероÑтно, можно назначить атрибут format"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr "тип результата, вероÑтно, может быть задан Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ format"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "Предупреждать о функциÑÑ…, которым можно назначить атрибут format"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr "Предупреждать о функциÑÑ…, которым можно назначить атрибут format"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "левой чаÑти приÑваиваниÑ, вероÑтно, можно назначить атрибут format"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "при передаче аргумента %P функции `%+D'"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "возврат ÑÑылки на временную переменную"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "возвращена ÑÑылка на не-lvalue-выражение"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "возвращена ÑÑылка на локальную переменную %q+D"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "возвращен Ð°Ð´Ñ€ÐµÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ переменной %q+D"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "возвращен результат деÑтруктора"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "возврат в обработчике try-блока конÑтруктора"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "возврат результата конÑтруктора"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, fuzzy, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "в опиÑании возвращаемого типа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚ÑŒ новые типы"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "return без Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² функции, возвращающей %qT"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "return Ñо значением в функции, возвращающей 'void'"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> не должен возвращать NULL, еÑли только он не декларирован %<throw()%> (или задан ключ -fcheck-new)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -35510,7 +35341,6 @@ msgstr "некорректное иÑпользование %qD"
#: cp/typeck2.c:438
#, fuzzy, gcc-internal-format
-#| msgid "invalid use of non-static member function %qD"
msgid "invalid use of member function (did you forget the %<()%> ?)"
msgstr "некорректное иÑпользование неÑтатичеÑкой функции-Ñлемента %qD"
@@ -35666,7 +35496,6 @@ msgstr "тип Ñлемента `%T::' неÑовмеÑтим Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ об
#: cp/typeck2.c:1663
#, fuzzy, gcc-internal-format
-#| msgid "invalid cast to function type %qT"
msgid "functional cast to array type %qT"
msgstr "некорректное приведение к типу функции %qT"
@@ -35915,7 +35744,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -38060,27 +37889,27 @@ msgstr ""
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -38290,42 +38119,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr "аргумент `asm' - не конÑÑ‚Ð°Ð½Ñ‚Ð½Ð°Ñ Ñтрока"
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -38340,14 +38169,14 @@ msgstr ""
msgid "can't open input file: %s"
msgstr "ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла %qs"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "Ñоздание маÑÑива Ñлементов типа %qT"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "%JвнутреннÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ `%D' декларирована как не функциÑ"
@@ -38457,12 +38286,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -40275,128 +40104,128 @@ msgstr "%s:ошибка запиÑи в выходной файл '%s'\n"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "%s: ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° '%s' на чтение: %s\n"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "%s: ошибка запиÑи файла '%s': %s\n"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "%s: ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° '%s': %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: ошибка Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° '%s' в '%s': %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð²Ñпомогательного файла '%s': %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "%s: ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° '%s' на чтение: %s\n"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -40481,7 +40310,7 @@ msgstr "Ðеподдерживаемый VXT-оператор в %0"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "Ðеподдерживаемый VXT-оператор в %0"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -41800,7 +41629,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "Метка %A уже определена в %1 а затем переопределена в %0"
@@ -41950,7 +41779,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "ошибка в аргументах spec-функции '%s'"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -42331,182 +42160,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr "предикат должен быть идентификатором"
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "Выход за границы в подÑтроке или обращении к маÑÑиву Ð´Ð»Ñ `%A' в операторе в %0"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Выход за границы в подÑтроке или обращении к маÑÑиву Ð´Ð»Ñ `%A' в операторе в %0"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "Ðет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚ÐºÐ¸ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° FORMAT в %0"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "Ðет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚ÐºÐ¸ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° FORMAT в %0"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "Ðет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚ÐºÐ¸ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° FORMAT в %0"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "Оператор в %0 некорректен в контекÑте, уÑтановленном оператором в %1"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -42515,175 +42344,175 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "оператор-выражение имеет неполный тип"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "оператор-выражение имеет неполный тип"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "оператор-выражение имеет неполный тип"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr "предикат должен быть идентификатором"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "предикат должен быть идентификатором"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "маÑка должна быть непоÑредÑтвенным значением"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "Оператор в %0 некорректен в контекÑте, уÑтановленном оператором в %1"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr "оператор continue вне цикла"
@@ -42691,950 +42520,950 @@ msgstr "оператор continue вне цикла"
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "Оператор в %0 некорректен в контекÑте, уÑтановленном оператором в %1"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "Ðеподдерживаемый VXT-оператор в %0"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "%s по отношению к переменной %qs, доÑтупной только на чтение"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "%s по отношению к переменной %qs, доÑтупной только на чтение"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "размер маÑÑива %qs Ñлишком велик"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr "Ðльтернативный Ñпецификатор возврата в %0 некорректен внутри функции"
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "%Jфинальное поле %qD, возможно, не было инициализировано"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "%Jфинальное поле %qD, возможно, не было инициализировано"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "%Jфинальное поле %qD, возможно, не было инициализировано"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "%Jфинальное поле '%D', возможно, не было инициализировано"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "%Jфинальное поле '%D', возможно, не было инициализировано"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "%Jфинальное поле %qD, возможно, не было инициализировано"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "%Jфинальное поле '%D', возможно, не было инициализировано"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "%Jфинальное поле %qD, возможно, не было инициализировано"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "ФункциÑ-оператор `%A', Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð°Ñ Ð² %0, не иÑпользуетÑÑ"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "%qD должен иметь ровно один аргумент"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "оператор-выражение имеет неполный тип"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "аргумент `asm' - не конÑÑ‚Ð°Ð½Ñ‚Ð½Ð°Ñ Ñтрока"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "аргумент `%s' должен быть 2-битным беззнаковым литеральным значением"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr ""
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "Предупреждать о неÑвных декларациÑÑ… функций"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Предупреждать о неÑвных декларациÑÑ… функций"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "Предупреждать о неÑвных декларациÑÑ… функций"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr "Слишком много аргументов %s в %L"
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "аргумент `asm' - не конÑÑ‚Ð°Ð½Ñ‚Ð½Ð°Ñ Ñтрока"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "аргумент `%s' должен быть 2-битным беззнаковым литеральным значением"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "Слишком много аргументов %s в %L"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr "\"трамплины\" не поддерживаютÑÑ"
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr "ВнешнÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° `%A' передана как фактичеÑкий аргумент в %0, но не декларирована Ñвно как EXTERNAL"
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "аргумент `asm' - не конÑÑ‚Ð°Ð½Ñ‚Ð½Ð°Ñ Ñтрока"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "Компонент в %C должен иметь атрибут POINTER"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "Ðльтернативный Ñпецификатор возврата в %0 некорректен внутри функции"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "неÑовмеÑтимые типы в операторе `%s'"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "атрибут %qs допуÑтим только Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "ПуÑтой аргумент в %0 в вызове функции-оператора в %1"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "Слишком много аргументов %s в %L"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "%Jфинальное поле '%D', возможно, не было инициализировано"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "%s не может приÑутÑтвовать в конÑтантном выражении"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "%Jфинальное поле %qD, возможно, не было инициализировано"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "метка %qD определена, но не иÑпользуетÑÑ"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "метка %qD определена, но не иÑпользуетÑÑ"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -44244,17 +44073,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -44496,7 +44325,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr "Элемент маÑÑива в %0 вне диапазона, заданного в определении"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -44639,7 +44468,6 @@ msgstr "недоÑтижимый байткод от %d до конца мето
#. duplicate code from LOAD macro
#: java/expr.c:3549
#, fuzzy, gcc-internal-format
-#| msgid "unrecogized wide sub-instruction"
msgid "unrecognized wide sub-instruction"
msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑˆÐ¸Ñ€Ð¾ÐºÐ°Ñ Ñуб-инÑтрукциÑ"
@@ -44799,7 +44627,7 @@ msgstr "ошибка Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ цели при отÑлÐ
msgid "internal error - invalid Utf8 name"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° - некорректное Utf8-имÑ"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "муÑор в конце Ñтроки Ñигнатуры"
@@ -44902,19 +44730,16 @@ msgstr "нет клаÑÑа %qs"
#: lto/lto.c:1261
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "cannot open %s"
msgid "Cannot open %s"
msgstr "ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ %s"
#: lto/lto.c:1282
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "cannot open %s"
msgid "Cannot map %s"
msgstr "ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ %s"
#: lto/lto.c:1293
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "cannot open %s"
msgid "Cannot read %s"
msgstr "ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ %s"
@@ -45338,7 +45163,6 @@ msgstr "Перехвачено приÑваивание к глобальной
#: objc/objc-act.c:3961 objc/objc-act.c:3989 objc/objc-act.c:4045
#, fuzzy, gcc-internal-format
-#| msgid "unused variable %q+D"
msgid "duplicate instance variable %q+D"
msgstr "неиÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %q+D"
@@ -46055,6 +45879,10 @@ msgstr "%HÑоздаётÑÑ Ñелектор Ð´Ð»Ñ Ð½ÐµÑущеÑтвующеÐ
#~ msgstr "Выполнить понижение мощноÑти операций"
#, fuzzy
+#~ msgid "floating point constant truncated to integer"
+#~ msgstr "деление на ноль плавающей конÑтанты"
+
+#, fuzzy
#~ msgid "arguments 1 and 2 have different types"
#~ msgstr "Разрешить разные типы Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð¾Ð² операции '?'"
@@ -46165,6 +45993,9 @@ msgstr "%HÑоздаётÑÑ Ñелектор Ð´Ð»Ñ Ð½ÐµÑущеÑтвующеÐ
#~ msgid "unrecognized argument to -mmcu= option: %qs"
#~ msgstr "предупреждение: неизвеÑтный аргумент ключа --help=: %.*s\n"
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs возможно некорректно названный обработчик прерываниÑ"
+
#, fuzzy
#~ msgid "unknown ABI (%s) for %sabi=%s %s"
#~ msgstr "Ðекорректное значение ABI: '%s'"
@@ -48172,10 +48003,6 @@ msgstr "%HÑоздаётÑÑ Ñелектор Ð´Ð»Ñ Ð½ÐµÑущеÑтвующеÐ
#~ msgstr "запрошен Ð°Ð´Ñ€ÐµÑ Ñ€ÐµÐ³Ð¸Ñтровой переменной %qs"
#, fuzzy
-#~ msgid "Function does not return a value"
-#~ msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ значение не Ñтрокового типа"
-
-#, fuzzy
#~ msgid "Function return value not set"
#~ msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ агрегатное значение"
diff --git a/gcc/po/sr.po b/gcc/po/sr.po
index f99d8bea2bf..fd6c4ee95d8 100644
--- a/gcc/po/sr.po
+++ b/gcc/po/sr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.2.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2007-08-19 12:00+0200\n"
"Last-Translator: Caslav Ilic <caslav.ilic@gmx.net>\n"
"Language-Team: Serbian <gnu@prevod.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<анонимно>"
@@ -27,7 +27,7 @@ msgstr "<анонимно>"
msgid "({anonymous})"
msgstr "<анонимно>"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of line"
@@ -35,11 +35,11 @@ msgstr "Ðеочекиван крај модула"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "очекивано је %<;%>"
@@ -47,17 +47,17 @@ msgstr "очекивано је %<;%>"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "очекивано је %<(%>"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<,%>"
@@ -69,20 +69,20 @@ msgstr "очекивано је %<{%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<)%>"
msgstr "очекивано је %<{%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<]%>"
@@ -94,27 +94,27 @@ msgstr "очекивано је %<{%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "очекивано је %<,%>, %<;%> или %<}%>"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<}%>"
msgstr "очекивано је %<{%>"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "очекивано је %<{%>"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<:%>"
msgstr "очекивано је %<{%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<while%>"
@@ -126,43 +126,43 @@ msgstr "очекивано је %<{%>"
msgid "expected %<.%>"
msgstr "очекивано је %<{%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@end%>"
msgstr "очекивано је %<{%>"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<>%>"
msgstr "очекивано је %<{%>"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<,%> or %<)%>"
msgstr "очекивано је %<,%> или %<;%>"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "очекивано је %<=%>"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "очекивано је %<#pragma omp section%> или %<}%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<[%>"
msgstr "очекивано је %<{%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
#| msgid "<anonymous>"
msgid "(anonymous)"
@@ -351,12 +351,12 @@ msgstr "операнд уз ‘%%l’ није етикета"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "лоша употреба реалне конÑтанте"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "неиÑправан израз као операнд"
@@ -1284,19 +1284,19 @@ msgstr " Укључено код %s:%d:"
msgid " inlined from %qs"
msgstr "complex неиÑправно за %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "под претпоÑтавком да петља није беÑконачна"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "не могу да оптимизујем могуће беÑконачне петље"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "под претпоÑтавком да Ñе бројач петље не прелива"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "не могу да оптимизујем петљу, бројач петље Ñе може прелити"
@@ -1495,16 +1495,16 @@ msgid "this is the insn:"
msgstr "ово је ија:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "ниÑам могао да нађем региÑтар проÑипања"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "VOIDmode на излазу"
-#: reload1.c:8658
+#: reload1.c:8672
#, fuzzy
#| msgid "Failure trying to reload:"
msgid "failure trying to reload:"
@@ -2718,118 +2718,118 @@ msgstr ""
msgid "<unknown>"
msgstr "Ðепознат извор"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "неиÑправна %%H вредноÑÑ‚"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "неиÑправна %%J вредноÑÑ‚"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "неиÑправна %%r вредноÑÑ‚"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "неиÑправна %%R вредноÑÑ‚"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "неиÑправна %%N вредноÑÑ‚"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "неиÑправна %%P вредноÑÑ‚"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "неиÑправна %%h вредноÑÑ‚"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "неиÑправна %%L вредноÑÑ‚"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "неиÑправна %%m вредноÑÑ‚"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "неиÑправна %%M вредноÑÑ‚"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "неиÑправна %%U вредноÑÑ‚"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "неиÑправна %%s вредноÑÑ‚"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "неиÑправна %%C вредноÑÑ‚"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "неиÑправна %%E вредноÑÑ‚"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "непознато unspec релокације"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "неиÑправан %%xn кôд"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "предикатна инÑтрукција Тамба"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "предикатна инÑтрукција у уÑловном редоÑледу"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "неиÑправан операнд за кôд ‘%c’"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "неиÑправан операнд помака"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2837,90 +2837,90 @@ msgstr "неиÑправан операнд помака"
msgid "invalid operand for code '%c'"
msgstr "неиÑправан операнд за кôд ‘%c’"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, fuzzy, c-format
#| msgid "instruction never exectued"
msgid "instruction never executed"
msgstr "инÑтрукција Ñе никад не извршава"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "недоÑтаје операнд"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
#| msgid "function returns an aggregate"
msgid "function parameters cannot have __fp16 type"
msgstr "функција враћа ÑкупинÑку вредноÑÑ‚"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "функција не враћа податак типа ниÑке"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "адреÑни операнд захтева ограничење за X, Y или Z региÑтар"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use %<&%> constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "излазни операнд %d мора кориÑтити ограничење %<&%>"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "лоша адреÑа, није (reg+disp):"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "address offset not a constant"
msgid "bad address, not a constant:"
msgstr "помак адреÑе није конÑтанта"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "лоша адреÑа, није (reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "лоша адреÑа, није post_inc или pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "унутрашња грешка компилатора. Лоша адреÑа:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "унутрашња грешка компилатора. Ðепознат режим:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "неиÑправна ија:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "нетачна ија:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "непозната ија премештања:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "лоша ија помака:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "унутрашња грешка компилатора. Ðетачан помак:"
@@ -2936,8 +2936,8 @@ msgstr "неиÑправан const_double операнд"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -3015,23 +3015,23 @@ msgstr "неочекиван операнд"
msgid "unrecognized address"
msgstr "непрепозната адреÑа"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "непрепозната претпоÑтављена конÑтанта"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "неочекивани Ñпоредни ефекти у адреÑи"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
#, fuzzy
#| msgid "Unidentifiable call op"
msgid "unidentifiable call op"
msgstr "Ðеидентификован оп. позива"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "ПИЦ региÑтар није поÑтављен"
@@ -3039,7 +3039,7 @@ msgstr "ПИЦ региÑтар није поÑтављен"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "неиÑправан кôд излаза операнада"
@@ -3168,80 +3168,80 @@ msgstr "лош операнд output_move_double"
msgid "bad output_condmove_single operand"
msgstr "лош операнд output_condmove_single"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "неиÑправан УÐСПЕЦ као операнд"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand size for operand code '%c'"
msgstr "неиÑправан операнд за кôд ‘%c’"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand type used with operand code '%c'"
msgstr "неиÑправан операнд за кôд ‘%c’"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "операнд није ни конÑтанта ни уÑловни кôд, неиÑправан кôд аргумента ‘c’"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "операнд није ни конÑтанта ни уÑловни кôд, неиÑправан кôд аргумента ‘c’"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "операнд није ни конÑтанта ни уÑловни кôд, неиÑправан кôд аргумента ‘c’"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "операнд није ни конÑтанта ни уÑловни кôд, неиÑправан кôд аргумента ‘c’"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "операнд није ни конÑтанта ни уÑловни кôд, неиÑправан кôд аргумента ‘c’"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "операнд није ни конÑтанта ни уÑловни кôд, неиÑправан кôд аргумента ‘c’"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "операнд није ни конÑтанта ни уÑловни кôд, неиÑправан кôд аргумента ‘c’"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "неиÑправан кôд операнда ‘%c;’"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "неиÑправна ограничења за операнд"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "непознат режим ије"
@@ -3272,36 +3272,36 @@ msgstr "променљива окружења DJGPP указује на недо
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "променљива окружења DJGPP указује на иÑкварену датотеку ‘%s’"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%j code"
msgid "invalid %%G mode"
msgstr "неиÑправан %%j кôд"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: непознат кôд"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "неиÑправно претварање из %<__fpreg%>"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "неиÑправно претварање у %<__fpreg%>"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "неиÑправна операција на %<__fpreg%>"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "неиÑправан %%P операнд"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "неиÑправна %%p вредноÑÑ‚"
@@ -3384,7 +3384,7 @@ msgid "post-increment address is not a register"
msgstr "адреÑа поÑтувећања није региÑтар"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "лоша адреÑа"
@@ -3570,89 +3570,89 @@ msgstr ""
msgid "bad move"
msgstr "лоша проба"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%H value"
msgid "invalid %%c value"
msgstr "неиÑправна %%H вредноÑÑ‚"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "неиÑправна %%f вредноÑÑ‚"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "неиÑправна %%F вредноÑÑ‚"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "неиÑправна %%G вредноÑÑ‚"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "неиÑправан %%j кôд"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "неиÑправан %%J кôд"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "неиÑправна %%k вредноÑÑ‚"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "неиÑправна %%K вредноÑÑ‚"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "неиÑправна %%O вредноÑÑ‚"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "неиÑправна %%q вредноÑÑ‚"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "неиÑправна %%S вредноÑÑ‚"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "неиÑправна %%T вредноÑÑ‚"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "неиÑправна %%u вредноÑÑ‚"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "неиÑправна %%v вредноÑÑ‚"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "неиÑправна %%x вредноÑÑ‚"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
#| msgid "invalid punctuation %qc in constraint"
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "неиÑправна интерпункција %qc у ограничењу"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "алтивек аргумент проÑлеђен непрототипизираној функцији"
@@ -3760,60 +3760,60 @@ msgstr "неиÑправан операнд за %%R"
msgid "invalid operand to %%S"
msgstr "неиÑправан операнд за %%S"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "направљено и употребљено на различитим архитектурама / ÐБИјима"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "направљено и употребљено Ñа различитим ÐБИјима"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "направљено и употребељно Ñа различитом крајношћу"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "неиÑправан %%Y операнд"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "неиÑправан %%A операнд"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "неиÑправан %%B операнд"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "неиÑправан %%C операнд"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "неиÑправан %%D операнд"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "неиÑправан %%f операнд"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "неиÑправан %%s операнд"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "long long конÑтанта није прихватљив непоÑредни операнд"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "реална конÑтанта није прихватљив непоÑредни операнд"
@@ -3838,7 +3838,7 @@ msgstr "‘o’ операнд није конÑтанта"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: непознат кôд"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "неиÑправан %%c операнд"
@@ -3854,25 +3854,25 @@ msgstr "неиÑправан %%d операнд"
msgid "invalid %%H specifier"
msgstr "неиÑправан %%j кôд"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "неиÑправан %%P операнд"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "неиÑправан %%P операнд"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "неиÑправан %%P операнд"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3884,7 +3884,7 @@ msgstr "неиÑправан %%P операнд"
msgid "invalid %%%c operand"
msgstr "неиÑправан %%c операнд"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3896,42 +3896,42 @@ msgstr "неиÑправан %%P операнд"
msgid "invalid operand for 'r' specifier"
msgstr "неиÑправан операнд за модификатор ‘b’"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "неиÑправан %%P операнд"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "неиÑправан %%P операнд"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "неиÑправан %%P операнд"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "неиÑправан %%P операнд"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "неиÑправан %%P операнд"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -4000,11 +4000,11 @@ msgstr "нема региÑтара у адреÑи"
msgid "address offset not a constant"
msgstr "помак адреÑе није конÑтанта"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "кандидат 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "кандидат 2:"
@@ -4264,7 +4264,7 @@ msgstr ""
msgid "candidates are:"
msgstr "кандидати Ñу:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid "candidate is:"
@@ -4328,50 +4328,50 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "погрешан тип аргумента уз унарно минуÑ"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "погрешан тип аргумента уз унарно плуÑ"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "погрешан тип аргумента уз битÑки комплемент"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "погрешан тип аргумента за abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "погрешан тип аргумента за конјугацију"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "wrong type argument to unary plus"
msgid "in argument to unary !"
msgstr "погрешан тип аргумента уз унарно плуÑ"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4644,7 +4644,7 @@ msgstr "Лош оператор"
msgid "Bad type in constant expression"
msgstr "Лош тип у конÑтантном изразу"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "Ðеочекиван крај модула"
@@ -4672,11 +4672,11 @@ msgstr "блоковÑко IF"
msgid "implied END DO"
msgstr "имплицитно END DO"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "додела"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "додела показивача"
@@ -4768,59 +4768,59 @@ msgstr "Операнди кориÑничког оператора ‘%s’ ко
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "ÐеуÑаглашени рангови за оператор код %L и %L"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
#| msgid "Perform variable tracking"
msgid "iterator variable"
msgstr "Изврши праћење променљивих"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Start expression in DO loop"
msgstr "Израз за корак у петљи DO код %L не може бити нула"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
#| msgid "invalid expression as operand"
msgid "End expression in DO loop"
msgstr "неиÑправан израз као операнд"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Step expression in DO loop"
msgstr "Израз за корак у петљи DO код %L не може бити нула"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
#, fuzzy
#| msgid "DEALLOCATE "
msgid "DEALLOCATE object"
msgstr "DEALLOCATE "
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
#, fuzzy
#| msgid "ALLOCATE "
msgid "ALLOCATE object"
msgstr "ALLOCATE "
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4829,7 +4829,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4908,7 +4908,7 @@ msgstr "Ðетачна вредноÑÑ‚ повратка из функције"
msgid "Memory allocation failed"
msgstr "гимплификација није уÑпела"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -5117,7 +5117,7 @@ msgstr "не могу Ñе задати и -C и -o"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -5178,6 +5178,10 @@ msgstr "shared и mdll ниÑу ÑаглаÑни"
msgid "static is not supported on TPF-OS"
msgstr "static није подржано на ТПФ-ОСу"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "не могу Ñе навеÑти и -EB и -EL"
@@ -5210,12 +5214,6 @@ msgstr "-mbig-endian и -mlittle-endian не могу Ñе кориÑтити з
msgid "no processor type specified for linking"
msgstr "датотека навода нема навод за повезивање"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-#| msgid "GCC does not support -C or -CC without -E"
-msgid "gfortran does not support -E without -cpp"
-msgstr "ГЦЦ не подржава -C или -CC без -E"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "Ðœ210 нема подршку мале крајноÑти"
@@ -5268,6 +5266,12 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "опција -shared тренутно није подржана за Ð’ÐКСов ЕЛФ"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+#| msgid "GCC does not support -C or -CC without -E"
+msgid "gfortran does not support -E without -cpp"
+msgstr "ГЦЦ не подржава -C или -CC без -E"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni и -femit-class-files ниÑу ÑаглаÑни"
@@ -8653,6 +8657,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -11282,18 +11290,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Ðе предефиниши макрое поÑебне за ÑиÑтем и ГЦЦ"
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
#| msgid "function declared %<noreturn%> has a %<return%> statement"
msgid "Functions which return values must end with return statements"
@@ -12997,308 +13017,319 @@ msgstr "Укључи дељене библиотеке на оÑнову ИДа"
msgid "Create a position independent executable"
msgstr "Стварај положајно-незавиÑни кôд за извршне ако је могуће (велики режим)"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of %qD"
msgid "invalid use of type"
msgstr "неиÑправна употреба %qD"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating point constant not a valid immediate operand"
-msgid "floating point constant truncated to integer"
-msgstr "реална конÑтанта није прихватљив непоÑредни операнд"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
#, fuzzy
#| msgid "inlined_to pointer refers to itself"
msgid "constant refers to itself"
msgstr "показивач inlined_to упућује на Ñамог Ñебе"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
#| msgid "Expected expression type"
msgid "expected numeric type"
msgstr "Очекиван је тип израза"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "Expected expression type"
+msgid "expected boolean type"
+msgstr "Очекиван је тип израза"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
#| msgid "expected integer expression"
msgid "expected integer or boolean type"
msgstr "очекиван је целобројни израз"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
#| msgid "invalid operands to binary %s"
msgid "invalid operand for unary %<&%>"
msgstr "неиÑправни операнди за бинарно %s"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
#| msgid "Expected integer"
msgid "expected pointer"
msgstr "Очекиван је цео број"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in binary expression"
msgstr "неÑаглаÑни типови у повратку"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
#| msgid "size of array %qs has non-integer type"
msgid "shift of non-integer operand"
msgstr "величина низа %qs има нецелобројни тип"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
#| msgid "switch quantity not an integer"
msgid "shift count not unsigned integer"
msgstr "величина у прекидачу није целобројна"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative insn length"
msgid "negative shift count"
msgstr "негативна дужина ије"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "called object %qE is not a function"
msgid "object is not a method"
msgstr "позвани објекат %qE није функција"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
#| msgid "argument of type %qT does not match %qT"
msgid "method type does not match object type"
msgstr "аргумент типа %qT не поклапа Ñе Ñа %qT"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid argument to builtin function"
msgid "invalid use of %<...%> with builtin function"
msgstr "неиÑправан аргумент за уграђену функцију"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "без аргумената"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments"
msgstr "превише аргумената за формат"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument 1 must be a map"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
#| msgid "%qE has invalid type for %<reduction%>"
msgid "invalid type for make function"
msgstr "%qE има неиÑправан тип за %<reduction%>"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "лоша ија за ‘A’"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments to make"
msgstr "превише аргумената за формат"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument must be array or slice or channel"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "invalid argument to builtin function"
msgid "unsupported argument type to builtin function"
msgstr "неиÑправан аргумент за уграђену функцију"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
#| msgid "Argument dim at %L must be scalar"
msgid "argument must be channel"
msgstr "Ðргумент димензије код %L мора бити Ñкалар"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
#| msgid "Qualifier must be a reference"
msgid "argument must be a field reference"
msgstr "Одредба мора бити упућивач"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "left argument must be a slice"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "first argument of %q+D should be %<int%>"
msgid "first argument must be []byte"
msgstr "први аргумент за %q+D треба да је %<int%>"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "tls_model argument not a string"
msgid "second argument must be slice or string"
msgstr "аргумент за tls_model није ниÑка"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "%Jparameter %u has void type"
msgid "argument 2 has invalid type"
msgstr "%Jпараметар %u има празан тип"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
#| msgid "%Jparameter %u has incomplete type"
msgid "argument must have complex type"
msgstr "%Jпараметар %u има непотпун тип"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
#| msgid "cleanup argument not an identifier"
msgid "complex arguments must have identical types"
msgstr "чиÑтачки аргумент није идентификатор"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
#| msgid "Do not use hardware floating point"
msgid "complex arguments must have floating-point type"
msgstr "Ðе кориÑти хардверÑки покретан зарез"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of %<this%> at top level"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "неиÑправна употреба %<this%> на највишем нивоу"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "Expected string"
msgid "expected function"
msgstr "Очекивана је ниÑка"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible type for receiver"
msgstr "неÑаглаÑни типови у повратку"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of %<this%> in non-member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "неиÑправна употреба %<this%> у нечланÑкој функцији"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "incoming edge count does not match number of PHI arguments"
msgid "number of results does not match number of values"
msgstr "долазна ивица Ñе не поклапа Ñа бројем ПХИ аргумената"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
#| msgid "Cray pointer at %C must be an integer."
msgid "index must be integer"
msgstr "Крејов показивач код %C мора бити целобројни."
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
#| msgid "schedule chunk size expression must be integral"
msgid "slice end must be integer"
msgstr "израз за величину одломка при раÑпоређивању мора бити интегрални"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "incompatible types in assignment"
msgid "incompatible type for map index"
msgstr "неÑаглаÑни типови у додели"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many expressions for struct"
msgstr "превише аргумената за формат"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "премало аргумената за формат"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
#| msgid "invalid use of void expression"
msgid "invalid unsafe.Pointer conversion"
msgstr "неиÑправна употреба израза празног типа"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
#, fuzzy
#| msgid "Invalid interface type"
msgid "type assertion only valid for interface types"
msgstr "ÐеиÑправан тип Ñучеља"
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "expected class name"
msgid "expected channel"
msgstr "очекивано је име клаÑе"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
#| msgid "Invalid left hand side of assignment"
@@ -13339,21 +13370,21 @@ msgstr "ÐедоÑтаје наредба повратка"
msgid "expected boolean expression"
msgstr "очекиван је израз"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in send"
msgstr "неÑаглаÑни типови у повратку"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -13419,83 +13450,83 @@ msgstr "Упозори на имплицитно претварање"
msgid "cannot use type %s as type %s"
msgstr "не може Ñе претворити из типа %qT у %qT"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
#| msgid "invalid receiver type %qs"
msgid "different receiver types"
msgstr "неиÑправан тип примаоца %qs"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "redefinition of parameter %q+D"
msgid "different number of parameters"
msgstr "поновљена дефиниција параметра %q+D"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "invalid parameter type %qT"
msgid "different parameter types"
msgstr "неиÑправан тип параметра %qT"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s"
msgstr "неÑаглаÑни тип за аргумент %d у %qE"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s (%s)"
msgstr "неÑаглаÑни тип за аргумент %d у %qE"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "error while parsing methods"
msgid "type has no methods"
msgstr "грешка при рашчлањивању метода"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
#| msgid "ambiguous abbreviation %s"
msgid "ambiguous method %s%s%s"
msgstr "двоÑмиÑлена Ñкраћеница %s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
#| msgid "missing argument to \"%s\""
msgid "missing method %s%s%s"
msgstr "недоÑтаје аргумент за „%s“"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -13566,7 +13597,7 @@ msgstr "трећи аргумент за %<__builtin_prefetch%> мора битÐ
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "неиÑправан трећи аргумент за %<__builtin_prefetch%>; кориÑтим нулу"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "премало аргумената за функцију %<va_start%>"
@@ -13588,7 +13619,7 @@ msgstr "(Ñтога би требало да проÑледите %qT умеÑÑ‚
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "ако Ñе овај кôд доÑегне, програм ће Ñе прекинути"
@@ -13675,7 +13706,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, fuzzy, gcc-internal-format
#| msgid "invalid argument to %<__builtin_frame_address%>"
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
@@ -13777,8 +13808,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "празна вредноÑÑ‚ није игнориÑана а требало би"
@@ -14061,7 +14092,7 @@ msgstr "декларација %q+D заклања глобалну деклар
msgid "declaration of %q+D shadows a previous local"
msgstr "декларација %q+D заклања претходну локалну"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
msgid "shadowed declaration is here"
@@ -14177,7 +14208,7 @@ msgstr "Ñкок у наредбени израз"
msgid "%qE defined as wrong kind of tag"
msgstr "%H%qE дефиниÑан као погрешна врÑта ознаке"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "неиÑправна употреба %<restrict%>"
@@ -14298,7 +14329,7 @@ msgstr "параметар %qD је уÑпоÑтављен"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "објекат променљиве величине не може Ñе уÑпоÑтављати"
@@ -14308,7 +14339,7 @@ msgstr "објекат променљиве величине не може Ñе
msgid "variable %qD has initializer but incomplete type"
msgstr "променљива %qD има уÑпоÑтављач али је непотпуног типа"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "утканој функцији %q+D дат је атрибут noinline"
@@ -14340,7 +14371,7 @@ msgstr "недоÑтаје величина низа у %q+D"
msgid "zero or negative size array %q+D"
msgstr "нулта или негативна величина низа %q+D"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "величина Ñкладишта за %q+D није позната"
@@ -14458,7 +14489,7 @@ msgstr "величина типа не може бити екÑплицитно
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -14552,7 +14583,7 @@ msgstr "Ñкладишна клаÑа наведена за параметар %
msgid "storage class specified for unnamed parameter"
msgstr "Ñкладишна клаÑа наведена за параметар %qs"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "Ñкладишна клаÑа наведена за име типа"
@@ -14724,7 +14755,7 @@ msgstr "%qs деклариÑано као функција која враћа Ð
msgid "function definition has qualified void return type"
msgstr "дефиниција функције има одређен празан повратни тип"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "одредбе типова Ñе игноришу на повратном типу функције"
@@ -14849,7 +14880,7 @@ msgstr "ИСО Ц забрањује конÑтантне или непоÑтоÑ
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "члан Ñтруктуре или уније не може имати променљиво измењив тип"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "променљива или поље %qE деклариÑано празним"
@@ -15312,7 +15343,7 @@ msgstr "аргумент %qD не одговара уграђеном прото
msgid "argument %qD doesn%'t match prototype"
msgstr "аргумент %qD не одговара прототипу"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "нема повратне наредбе у функцији која враћа непразан тип"
@@ -15517,7 +15548,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr "ИСО Ц забрањује празну изворну датотеку"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ИСО Ц не дозвољава додатно %<;%> изван функције"
@@ -15528,7 +15559,7 @@ msgstr "ИСО Ц не дозвољава додатно %<;%> изван фун
msgid "unknown type name %qE"
msgstr "непознато име региÑтра: %s"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "очекивани Ñу наводиоци декларације"
@@ -15539,7 +15570,7 @@ msgstr "очекивани Ñу наводиоци декларације"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "очекиван је идентификатор или %<(%>"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored for methods"
@@ -15562,7 +15593,7 @@ msgstr "Очекивано је име атрибутÑког бита"
msgid "data definition has no type or storage class"
msgstr "дефиниција података нема тип или Ñкладишну клаÑу"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "очекивано је %<,%> или %<;%>"
@@ -15592,7 +15623,7 @@ msgstr "ИСО Ц 90 не подржава %<long long%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ИСО Ц 90 не подржава %<long long%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "очекивана је доÑловна ниÑка"
@@ -15623,18 +15654,18 @@ msgstr "Тврдња КРИС-порта није прошла: "
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "очекиван је идентификатор"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "зарез на крају лиÑте набрајања"
@@ -15768,7 +15799,7 @@ msgstr "%HИСО Ц 90 забрањује мешање декларација и
msgid "expected %<}%> before %<else%>"
msgstr "очекивано је %<,%> или %<}%>"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -15797,18 +15828,18 @@ msgstr "очекиван је идентификатор или %<*%>"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "очекивана је наредба"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
#| msgid "%Hempty body in an if-statement"
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "%Hпразно тело у наредби if"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
#| msgid "%Hempty body in an else-statement"
msgid "suggest braces around empty body in an %<else%> statement"
@@ -15880,7 +15911,7 @@ msgstr "ИСО Ц не дозвољава додатно %<;%> изван фун
msgid "cannot take address of %qs"
msgstr "не може Ñе узети адреÑа битÑког поља %qD"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "очекиван је израз"
@@ -15923,273 +15954,273 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "%<__builtin_longjmp%> други аргумент мора бити 1"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments specified for %qs attribute"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "погрешан број аргумената наведне за атрибут %qs"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "Ñложена доÑловна ниÑка има променљиву величину"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ИСО Ц 90 забрањује Ñложене доÑловне ниÑке"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
#| msgid "expected identifier or %<(%>"
msgid "expected identifier or %<)%>"
msgstr "очекиван је идентификатор или %<(%>"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "Ñувишна тачка-зарез у дефиницији метода"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
#| msgid "Class or interface declaration expected"
msgid "objective-c method declaration is expected"
msgstr "Очекивана је декларација клаÑе или Ñучеља"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for %qs"
msgid "no type or storage class may be specified here,"
msgstr "Ñкладишна клаÑа наведена за %qs"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "недоÑтаје %<(%> поÑле %<#pragma pack%> — игноришем"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "недоÑтаје %<(%> поÑле %<#pragma pack%> — игноришем"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "the %<setter%> attribute may only be specified once"
msgstr "%Jатрибут одељка Ñе не може навеÑти за локалне променљиве"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
#| msgid "%Jaddress area attribute cannot be specified for functions"
msgid "the %<getter%> attribute may only be specified once"
msgstr "%JадреÑна облаÑÑ‚ атрибута не може бити наведена за функције"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> може бити употребљено Ñамо у Ñложеним наредбама"
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr "%<#pragma omp flush%> може бити употребљено Ñамо у Ñложеним наредбама"
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> може бити употребљено Ñамо у Ñложеним наредбама"
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> може бити употребљено Ñамо у Ñложеним наредбама"
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr "%<#pragma omp section%> може бити употребљено Ñамо у конÑтрукцији %<#pragma omp sections%>"
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%> мора бити прво"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr "превише %qs одредби"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
#| msgid "comparison between signed and unsigned integer expressions"
msgid "collapse argument needs positive constant integer expression"
msgstr "поређење означених и неозначених целобројних израза"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "очекивано је %<none%> или %<shared%>"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr "очекиван је целобројни израз"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr "вредноÑÑ‚ %<num_threads%> мора бити позитивна"
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, fuzzy, gcc-internal-format
#| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "очекивано је %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%> или %<||%>"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr "раÑпоред %<runtime%> не узима параметар %<chunk_size%>"
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, fuzzy, gcc-internal-format
#| msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr "раÑпоред %<runtime%> не узима параметар %<chunk_size%>"
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "неиÑправна врÑта раÑпореда"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "очекивана је одредба %<#pragma omp%>"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs није иÑправно за %qs"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "invalid operator for %<#pragma omp atomic%>"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "неиÑправан оператор за %<#pragma omp atomic%>"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "неиÑправан оператор за %<#pragma omp atomic%>"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "очекивано је %<(%> или крај линије"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr "очекивана је наредба for"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "очекивано је уÑпоÑтављање или декларација итерације"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qs should not be firstprivate"
msgid "iteration variable %qD should not be firstprivate"
msgstr "не би требало да променљива итерације %qs буде firstprivate"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a variable in clause %qs"
msgid "%qD is not a variable"
msgstr "%qD није променљива у одредби %qs"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%qE деклариÑано као нитно-локално поÑле прве употребе"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "аутоматÑка променљива %qE не може бити нитно-локална"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "нитно-локално %qE има непотпун тип"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -16199,7 +16230,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD има непотпун тип"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "неиÑправна употреба израза празног типа"
@@ -16266,69 +16297,74 @@ msgstr "тип показивача на члан %qT није ÑаглаÑан
msgid "function return types not compatible due to %<volatile%>"
msgstr "повратни типови функција ниÑу ÑаглаÑни уÑлед %<volatile%>"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "аритметика Ñа показивачем на непотпун тип"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT нема члан по имену %qE"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "захтев за члан %qE у нечему што није ни Ñтруктура ни унија"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "разрешавање показивача на непотпун тип"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "разрешавање %<void *%> показивача"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "индекÑирана вредноÑÑ‚ није ни низ ни показивач"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° није целобројан"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "индекÑирана вредноÑÑ‚ је показивач на функцију"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "index in dimension %d is out of bounds at %L"
msgid "index value is out of bound"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ñƒ димензији %d је ван граница код %L"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ИСО Ц забрањује %<register%> низове"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ИСО Ц 90 забрањује индекÑирање не-л-вредноÑног низа"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "позвани објекат %qE није функција"
@@ -16336,387 +16372,387 @@ msgstr "позвани објекат %qE није функција"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "функција позвана кроз неÑаглаÑан тип"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
#| msgid "function definition has qualified void return type"
msgid "function with qualified void return type called"
msgstr "дефиниција функције има одређен празан повратни тип"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr ""
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "%<__builtin_longjmp%> други аргумент мора бити 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to method %qE"
msgstr "превише аргумената за функцију %qE"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "превише аргумената за функцију %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "declared here"
msgstr "%q+D деклариÑано овде"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "тип формалног параметра %d није потпун"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као целобројног умеÑто као реалног, због прототипа"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као целобројног умеÑто као комплекÑног, због прототипа"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као комплекÑног умеÑто као реалног, због прототипа"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као реалног умеÑто као целобројног, због прототипа"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као комплекÑног умеÑто као целобројног, због прототипа"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као реалног умеÑто као комплекÑног, због прототипа"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као %<float%> умеÑто као %<double%>, због прототипа"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као %qT умеÑто као %qT, због прототипа"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE Ñа различитом ширином, због прототипа"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као неозначеног, због прототипа"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "проÑлеђивање аргумента %d за %qE као означеног, због прототипа"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "захтев за имплицтно претварање из %qT у %qT није дозвољен у Ц++у"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "премало аргумената за функцију %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "comparison with string literal results in unspecified behaviour"
msgid "comparison with string literal results in unspecified behavior"
msgstr "поређење Ñа доÑловном ниÑком резултује неодређеним понашањем"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
#| msgid "comparison between %q#T and %q#T"
msgid "comparison between %qT and %qT"
msgstr "поређење између %q#T и %q#T"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "показивачи типа %<void *%> употребљени у одузимању"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "показивач на функцију употребљен у одузимању"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ИСО Ц не подржава %<~%> за комплекÑну конјугацију"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "погрешан тип аргумента уз унарни знак узвика"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ИСО Ц не подржава %<++%> и %<--%> за комплекÑне типове"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "погрешан тип аргумента уз увећање"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "погрешан тип аргумента уз умањење"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "увећање показивача на непознату Ñтруктуру"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "умањење показивача на непознату Ñтруктуру"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of expression of type %<void%>"
msgstr "узимање адреÑе привременог"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
#| msgid "assignment of read-only location"
msgid "assignment of read-only location %qE"
msgstr "додела Ñамо-за-читање локацији"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only location"
msgid "increment of read-only location %qE"
msgstr "увећање Ñамо-за-читање локације"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
#| msgid "decrement of read-only location"
msgid "decrement of read-only location %qE"
msgstr "умањење Ñамо-за-читање локације"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "не може Ñе узети адреÑа битÑког поља %qD"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "глобална региÑтарÑка променљива %qD употребљена у угњежденој функцији"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "региÑтарÑка променљива %qD употребљена у угњежденој функцији"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "затражена адреÑа глобалне региÑтарÑке променљиве %qD"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "затражена адреÑа региÑтарÑке променљиве %qD"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "не-л-вредноÑни низ у уÑловном изразу"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "захтев за имплицтно претварање из %qT у %qT није дозвољен у Ц++у"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ИСО Ц забрањује уÑловне изразе Ñа Ñамо једном празном Ñтраном"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
#| msgid "pointer type mismatch in conditional expression"
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "неÑлагање показивачких типова у уÑловном изразу"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ИСО Ц забрањује уÑловни израз између %<void *%> и функцијÑког показивача"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "неÑлагање показивачких типова у уÑловном изразу"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "неÑлагање типова показивача или целобројних у уÑловном изразу"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "леви операнд зарез-израза нема ефекта"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
#| msgid "cast adds new qualifiers to function type"
msgid "cast adds %q#v qualifier to function type"
msgstr "претапање додаје нове одредбе функцијÑком типу"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "претапање одбацује одредбе Ñа циљног типа показивача"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "претапање наводи низовни тип"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "претапање наводи функцијÑки тип"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ИСО Ц забрањује претапање неÑкалара у иÑти тип"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ИСО Ц забрањује претапање у унијÑки тип"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "претапање у унијÑки тип из типа који не чини унију"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "претапање увећава неопходно равнање циљног типа"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "претапање из показивача у целобројни различите величине"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "претапање из функцијÑког позива типа %qT у непоклапајући тип %qT"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "претапање из целобројног у показивач различите величине"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ИСО Ц забрањује претварање показивача на функцију у показивач на објекат"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ИСО Ц забрањује претварање показивача на објекат у показивач на функцијÑки тип"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -16728,718 +16764,718 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, fuzzy, gcc-internal-format
#| msgid "format %q.*s expects type %<%T%s%>, but argument %d has type %qT"
msgid "expected %qT but argument is of type %qT"
msgstr "формат %q.*s очекује тип %<%T%s%>, али аргумент %d је типа %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "циљеви показивача у проÑлеђивању аргумента %d за %qE разликују Ñе у означеноÑти"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "д-вредноÑÑ‚ Ñе не може проÑледити упућивачком параметру"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
#| msgid "passing argument %d of %qE makes qualified function pointer from unqualified"
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "проÑлеђивање аргумента %d од %qE прави одређени функцијÑки показивач од неодређеног"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
#| msgid "assignment makes qualified function pointer from unqualified"
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "додела прави одређени функцијÑки показивач од неодређеног"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
#| msgid "initialization makes qualified function pointer from unqualified"
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "уÑпоÑтављање прави одређени функцијÑки показивач од неодређеног"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
#| msgid "return makes qualified function pointer from unqualified"
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "повратак прави одређени функцијÑки показивач од неодређеног"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
#| msgid "passing argument %d of %qE discards qualifiers from pointer target type"
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "проÑлеђивање аргумента %d од %qE одбацује одредбе Ñа циљног типа показивача"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
#| msgid "assignment discards qualifiers from pointer target type"
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "додела одбацује одредбе Ñа циљног типа показивача"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
#| msgid "initialization discards qualifiers from pointer target type"
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "уÑпоÑтављање одбацује одредбе Ñа циљног типа показивача"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
#| msgid "return discards qualifiers from pointer target type"
msgid "return discards %qv qualifier from pointer target type"
msgstr "повратак одбацује одредбе Ñа циљног типа показивача"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ИСО Ц забрањује претварање аргумента у унијÑки тип"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "захтев за имплицтно претварање из %qT у %qT није дозвољен у Ц++у"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
#| msgid "passing argument %d of %qE from incompatible pointer type"
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "проÑлеђивање аргумента %d од %qE из неÑаглаÑног показивачког типа"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "assignment from pointer to non-enclosed address space"
msgstr "претапање из показивача у целобројни различите величине"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
#| msgid "initialization from incompatible pointer type"
msgid "initialization from pointer to non-enclosed address space"
msgstr "уÑпоÑтављање из неÑаглаÑног показивачког типа"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "аргумент %d од %qE може бити кандидат за форматÑки атрибут"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "лева Ñтрана доделе може бити кандидат за форматÑки атрибут"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "лева Ñтрана уÑпоÑтављања може бити кандидат за форматÑки атрибут"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "повратни тип може бити кандидат за форматÑки атрибут"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ИСО Ц забрањује проÑлеђивање аргумента %d од %qE између функцијÑког показивача и %<void *%>"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ИСО Ц забрањује доделу између функцијÑког показивача и %<void *%>"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ИСО Ц забрањује уÑпоÑтављање између функцијÑког показивача и %<void *%>"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ИСО Ц забрањује повратак између функцијÑког показивача и %<void *%>"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "циљеви показивача у проÑлеђивању аргумента %d за %qE разликују Ñе у означеноÑти"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "циљеви показивача у додели разликују Ñе у означеноÑти"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "циљеви показивача у уÑпоÑтављању разликују Ñе у означеноÑти"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "циљеви показивача у повратку разликују Ñе у означеноÑти"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "проÑлеђивање аргумента %d од %qE из неÑаглаÑног показивачког типа"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "додела из неÑаглаÑног показивачког типа"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "уÑпоÑтављање из неÑаглаÑног показивачког типа"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "повратак из неÑаглаÑног показивачког типа"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "неиÑправна употреба не-л-вредноÑног низа"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "проÑлеђивање аргумента %d од %qE прави показивач од целобројног без претапања"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "додела прави показивач од целобројног без претапања"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "уÑпоÑтављање прави показивач од целобројног без претапања"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "повратак прави показивач од целобројног без претапања"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "проÑлеђивање аргумента %d од %qE прави целобројни од показивача без претапања"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "додела прави целобројни од показивача без претапања"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "уÑпоÑтављање прави целобројни од показивача без претапања"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "повратак прави целобројни од показивача без претапања"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "неÑаглаÑни тип за аргумент %d у %qE"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of %qT to %qT"
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "неÑаглаÑни типови у додели %qT у %qT"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in initialization"
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "неÑаглаÑни типови у уÑпоÑтављању"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of %qT to %qT"
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "неÑаглаÑни типови у додели %qT у %qT"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "традиционални Ц одбија аутоматÑку уÑпоÑтављање Ñкупина"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(близу уÑпоÑтављања за %qs)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "низ уÑпоÑтављен конÑтантном ниÑком у заградама"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "уÑпоÑтављање флекÑибилног чланÑког низа"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "char-низ уÑпоÑтављен широком ниÑком"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from non-wide string"
msgstr "wchar_t-низ уÑпоÑтављен не-широком ниÑком"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from incompatible wide string"
msgstr "wchar_t-низ уÑпоÑтављен не-широком ниÑком"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "низ неподеÑног типа уÑпоÑтављен конÑтантном ниÑком"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "низ уÑпоÑтављен не-конÑтантним низовним изразом"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "елемент уÑпоÑтављача није конÑтантан"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not constant"
msgid "initializer element is not a constant expression"
msgstr "елемент уÑпоÑтављача није конÑтантан"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "елемент уÑпоÑтављача Ñе не може израчунати при учитавању"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "неиÑправан уÑпоÑтављач"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "непрозирни векторÑки типови не могу бити уÑпоÑтављени"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "Ñувишна група витичаÑтих заграда на крају уÑпоÑтављача"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "недоÑтају витичаÑте заграде око уÑпоÑтављача"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "витичаÑте заграде око Ñкаларног уÑпоÑтављача"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "уÑпоÑтављање флекÑибилног чланÑког низа у угњежденом контекÑту"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "недоÑтаје уÑпоÑтављач"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "празан Ñкаларни уÑпоÑтављач"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "Ñувишни елементи у Ñкаларном инцијализатору"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° у не-низовном уÑпоÑтављачу"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "име поља није у уÑпоÑтављачу Ñлога или уније"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° у уÑпоÑтављачу није целобројан"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer not of integer type"
msgid "array index in initializer is not an integer constant expression"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° у уÑпоÑтављачу није целобројан"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "неконÑтантан Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° у уÑпоÑтављачу"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ñƒ уÑпоÑтављачу премашује границе низа"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "празан индекÑни опÑег у уÑпоÑтављачу"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "индекÑни опÑег у уÑпоÑтављачу премашује границе низа"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "непознато поље %qE наведено у уÑпоÑтављачу"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "уÑпоÑтављено поље Ñа Ñпоредним ефектима пребриÑано"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "уÑпоÑтављено поље пребриÑано"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "Ñувишни елементи у уÑпоÑтављачу знаковног низа"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "Ñувишни елементи у уÑпоÑтављачу Ñтруктуре"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "неÑтатичко уÑпоÑтављање флекÑибилног чланÑког низа"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "Ñувишни елементи у уÑпоÑтављачу уније"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "традиционални Ц одбија уÑпоÑтављање унија"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "Ñувишни елементи у уÑпоÑтављачу низа"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "Ñувишни елементи у уÑпоÑтављачу вектора"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "Ñувишни елементи у уÑпоÑтављачу Ñкалара"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ИСО Ц забрањује %<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "функција деклариÑана Ñа %<noreturn%> има наредбу %<return%>"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "%<return%> без вредноÑти у функцији која не враћа празан тип"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "%<return%> Ñа вредношћу у функцији која враћа празан тип"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
#| msgid "%<return%> with a value, in function returning void"
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "%<return%> Ñа вредношћу у функцији која враћа празан тип"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "функција враћа адреÑу на локалну променљиву"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "величина у прекидачу није целобројна"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "%<long%> израз у прекидачу не претвара Ñе у %<int%> у ИСО Ц-у"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "case label is not an integer constant expression"
msgstr "величина низа није интегралан конÑтатан израз"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "етикета Ñлучаја није у оквиру наредбе прекидача"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "етикета %<default%> није у оквиру наредбе прекидача"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, fuzzy, gcc-internal-format
#| msgid "%Hsuggest explicit braces to avoid ambiguous %<else%>"
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%Hпредложи екÑплицитне витичаÑте заграде ради избегавања двоÑмиÑленог %<else%>"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "наредба иÑкакања није у оквиру петље или прекидача"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "наредба наÑтављања није у оквиру петље"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "наредба иÑкакања употребљена Ñа ОпенМПом за петљу"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "наредба без ефекта"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "наредба израза има непотпун тип"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "негативан деÑни помак"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "деÑни помак >= од ширине типа"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "негативан леви помак"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "леви помак >= од ширине типа"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr ""
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "поређење реалних помоћу == или != није безбедно"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
#| msgid "comparison of distinct pointer types lacks a cast"
msgid "comparison of pointers to disjoint address spaces"
msgstr "поређењу различитих показивачких типова недоÑтаје претапање"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ИСО Ц забрањује поређење %<void *%> и функцијÑког показивача"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "поређењу различитих показивачких типова недоÑтаје претапање"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "поређење између показивача и целобројног"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "поређење потпуног и непотпуног показивача"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ИСО Ц забрањује поређена уређеноÑти показивача на функције"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "поређење уређеноÑти показивача Ñа целобројном нулом"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "поређење уређеноÑти показивача Ñа целобројном нулом"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "захтев за имплицтно претварање из %qT у %qT није дозвољен у Ц++у"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "употребљен низ који Ñе не може претворити у показивач где Ñе захтева Ñкалар"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "употребљена вредноÑÑ‚ Ñтруктурног типа где Ñе захтева Ñкалар"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "употребљена вредноÑÑ‚ унијÑког типа где Ñе захтева Ñкалар"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "употребљена вредноÑÑ‚ Ñтруктурног типа где Ñе захтева Ñкалар"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "%qE има неиÑправан тип за %<reduction%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE има неиÑправан тип за %<reduction(%s)%>"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE мора бити нитно-локално за %<copyin%>"
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE није променљива у одредби %qs"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr "%qE Ñе појављује више од једном у одредбама података"
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "%qE није променљива у одредби %<firstprivate%>"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "%qE није променљива у одредби %<lastprivate%>"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qE је предодређено као %qs за %qs"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -17449,7 +17485,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "позив функције има ÑкупинÑку вредноÑÑ‚"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "величина променљиве %q+D је превелика"
@@ -18300,54 +18336,54 @@ msgstr "%s: не могу да отворим као КОФФ датотеку"
msgid "library lib%s not found"
msgstr "библиотека lib%s није нађена"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "не могу да претворим у показивачки тип"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "показивачка вредноÑÑ‚ употребљена где Ñе очекивала реална"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "ÑкупинÑка вредноÑÑ‚ употребљена где Ñе очекивала реална"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "претварање у непотпун тип"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
#| msgid "can't convert between vector values of different size"
msgid "can%'t convert between vector values of different size"
msgstr "не могу да претварам између векторÑких вредноÑти различитих величина"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "ÑкупинÑка вредноÑÑ‚ употребљена где Ñе очекивала целобројна"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "показивачка вредноÑÑ‚ употребљена где Ñе очекивала комплекÑна"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "ÑкупинÑка вредноÑÑ‚ употребљена где Ñе очекивала комплекÑна"
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
#| msgid "can't convert value to a vector"
msgid "can%'t convert value to a vector"
msgstr "не могу да претворим вредноÑÑ‚ у вектор"
-#: convert.c:1004
+#: convert.c:1002
#, fuzzy, gcc-internal-format
#| msgid "aggregate value used where a float was expected"
msgid "aggregate value used where a fixed-point was expected"
@@ -18509,7 +18545,7 @@ msgstr "доминатор %d треба да је %d, не %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -18603,46 +18639,46 @@ msgstr "verify_eh_tree није уÑпело"
msgid "stack limits not supported on this target"
msgstr "ограничења Ñтека ниÑу подржана на овом циљу"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure member"
msgstr "Ñкладишна клаÑа наведена за поље Ñтруктуре %qs"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure bitfield"
msgstr "Ñкладишна клаÑа наведена за поље Ñтруктуре %qs"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "глобална региÑтарÑка променљива %qD употребљена у угњежденој функцији"
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
#| msgid "function %q+D redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "функција %q+D поново деклариÑана Ñа атрибутом неуткане"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
#| msgid "function %q+D redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute warning: %s"
@@ -18726,7 +18762,7 @@ msgstr "претпоÑтављам да Ñе означено преливање
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr "претпоÑтављам да Ñе означено преливање не дешава при негирању дељења"
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "провера Ñажимања: првобитно дрво измењено Ñажимањем"
@@ -18737,7 +18773,7 @@ msgstr "провера Ñажимања: првобитно дрво измењÐ
msgid "total size of local objects too large"
msgstr "%Jукупна величина локалних објеката је превелика"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "немогуће ограничење у %<asm%>"
@@ -19230,87 +19266,87 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "провера Ñтабла: очекивах клаÑу %qs, имам %qs (%s) у %s, код %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
#| msgid "no return statement in function returning non-void"
msgid "using result of function returning %<void%>"
msgstr "нема повратне наредбе у функцији која враћа непразан тип"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "неиÑправна л-вредноÑÑ‚ у излазу аÑемблера %d"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr "немеморијÑки улаз %d мора оÑтати у меморији"
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "меморијÑки улаз %d не може Ñе непоÑредно адреÑирати"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
#| msgid "threadprivate variables not supported in this target"
msgid "threadprivate variable %qE used in untied task"
msgstr "нитно-локалне променљиве ниÑу подржане за овај циљ"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, fuzzy, gcc-internal-format
#| msgid "%Henclosing parallel"
msgid "enclosing task"
msgstr "%Hобухватајуће паралелно"
-#: gimplify.c:5735
+#: gimplify.c:5742
#, fuzzy, gcc-internal-format
#| msgid "%qs not specified in enclosing parallel"
msgid "%qE not specified in enclosing parallel"
msgstr "%qs није наведено у обухватајућем паралелном"
-#: gimplify.c:5740
+#: gimplify.c:5747
#, fuzzy, gcc-internal-format
#| msgid "%Henclosing parallel"
msgid "enclosing parallel"
msgstr "%Hобухватајуће паралелно"
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qs should be private"
msgid "iteration variable %qE should be private"
msgstr "требало би да променљива итерације %qs буде приватна"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qs should not be firstprivate"
msgid "iteration variable %qE should not be firstprivate"
msgstr "не би требало да променљива итерације %qs буде firstprivate"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qs should not be reduction"
msgid "iteration variable %qE should not be reduction"
msgstr "не би требало да променљива итерације %qs буде Ñвођена"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
#| msgid "%s variable %qs is private in outer context"
msgid "%s variable %qE is private in outer context"
msgstr "%s променљива %qs је приватна у Ñпољашњем контекÑту"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "гимплификација није уÑпела"
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not close Go dump file: %m"
msgstr "ниÑам могао да отворим датотеку попиÑа %qs: %s"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not open Go dump file %qs: %m"
@@ -19370,7 +19406,7 @@ msgstr "Укључи оптимизације петљи на нивоу ÑтаÐ
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -19521,52 +19557,52 @@ msgstr "поље %qs деклариÑано као функција"
msgid "function %qD redeclared as variable"
msgstr "функција %q+D поново деклариÑана као уткана"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, fuzzy, gcc-internal-format
#| msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered or master region"
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "подељена облаÑÑ‚ не може бити блиÑко угњеждена унутар подељене, критичне, уређене или главне облаÑти"
-#: omp-low.c:1839
+#: omp-low.c:1851
#, fuzzy, gcc-internal-format
#| msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered or master region"
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "подељена облаÑÑ‚ не може бити блиÑко угњеждена унутар подељене, критичне, уређене или главне облаÑти"
-#: omp-low.c:1857
+#: omp-low.c:1869
#, fuzzy, gcc-internal-format
#| msgid "master region may not be closely nested inside of work-sharing region"
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr "главна облаÑÑ‚ не може бити блиÑко угњеждена унутар дељене"
-#: omp-low.c:1872
+#: omp-low.c:1884
#, fuzzy, gcc-internal-format
#| msgid "ordered region may not be closely nested inside of critical region"
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr "уређена облаÑÑ‚ не може бити блиÑко угњеждена унутар критичне"
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr "уређена облаÑÑ‚ мора бити блиÑко угњеждена унутар петље Ñа одредбом уређеноÑти"
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr "критична облаÑÑ‚ не може бити угњеждена унутар иÑтоимене критичне облаÑти"
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr "неиÑправан излаз из Ñтруктуираног блока ОпенМПа"
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr "неиÑправан улаз у Ñтруктуирани блок ОпенМПа"
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, fuzzy, gcc-internal-format
#| msgid "invalid exit from OpenMP structured block"
msgid "invalid branch to/from an OpenMP structured block"
@@ -19684,7 +19720,7 @@ msgstr "-freorder-blocks-and-partition не ради на овој архитеÐ
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition не ради на овој архитектури"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition не ради на овој архитектури"
@@ -20064,9 +20100,9 @@ msgstr "„%s“ Ñе не може кориÑтити као %s региÑтаÑ
msgid "can%'t use %qs as a fixed register"
msgstr "„%s“ Ñе не може кориÑтити као %s региÑтар"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "непознато име региÑтра: %s"
@@ -20150,12 +20186,12 @@ msgstr "не могу да нађем региÑтар за проÑипање Ñ
msgid "%<asm%> operand requires impossible reload"
msgstr "операнд у %<asm%> захтева немогуће поновно учитавање"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "ограничење операнда у %<asm%> неÑаглаÑно Ñа величином операнда"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "излазни операнд је конÑтантан у %<asm%>"
@@ -20379,7 +20415,7 @@ msgstr "атрибут паковања доводи до неефикаÑног
msgid "packed attribute is unnecessary"
msgstr "атрибут паковања непотребан"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "равнање елемената низа је веће од величине елемента"
@@ -20607,7 +20643,7 @@ msgstr "неиÑправна употреба %qD у одредници пове
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -20623,7 +20659,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr "изворно поÑредан позив функције Ñе не разматра за уткивање"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -20638,7 +20674,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
#| msgid "%<[*]%> not allowed in other than a declaration"
msgid "asm not allowed in atomic transaction"
@@ -20677,684 +20713,684 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
#| msgid "attributes are not allowed on a function-definition"
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "атрибути ниÑу дозвољени на дефиницији функције"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "конÑтанта није поново израчуната када Ñе ADDR_EXPR промени"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "Ñпоредни ефекти ниÑу поново израчунати када Ñе ADDR_EXPR промени"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "ССРиме у лиÑти Ñлободних, али Ñе упућује на Ñš"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid first operand of MEM_REF"
msgstr "неиÑправан операнд за %%R"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand of MEM_REF"
msgstr "неиÑправан операнд за %%R"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR Ñа увек нетачним уÑловом"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "адреÑа узета, али бит ADDRESSABLE није поÑтављен"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
#| msgid "non-boolean used in condition"
msgid "non-integral used in condition"
msgstr "не-логичка вредноÑÑ‚ употребљена у уÑлову"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "неиÑправан операнд уÑлова"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "неиÑправна ограничења за операнд"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "неиÑправан Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ÑƒÐ¿ÑƒÑ›Ð¸Ð²Ð°Ñ‡Ð°"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "неиÑправан операнд у инÑтрукцији"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid expression for min lvalue"
msgstr "неиÑправан израз као операнд"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in indirect reference"
msgstr "неиÑправан операнд у инÑтрукцији"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
#| msgid "Invalid form of array reference at %C"
msgid "invalid operands to array reference"
msgstr "ÐеиÑправан облик упућивача низа код %C"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
#| msgid "Rank mismatch in array reference at %L (%d/%d)"
msgid "type mismatch in array reference"
msgstr "ÐеÑлагање рангова у упућивачу низа код %L (%d/%d)"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, fuzzy, gcc-internal-format
#| msgid "Rank mismatch in array reference at %L (%d/%d)"
msgid "type mismatch in array range reference"
msgstr "ÐеÑлагање рангова у упућивачу низа код %L (%d/%d)"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in real/imagpart reference"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in component reference"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "претапање из показивача у целобројни различите величине"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid address operand in MEM_REF"
msgstr "неиÑправан операнд за %%R"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid shift operand"
msgid "invalid offset operand in MEM_REF"
msgstr "неиÑправан операнд помака"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
#| msgid "invalid cast to function type %qT"
msgid "invalid function in gimple call"
msgstr "неиÑправно претапање у функцијÑки тип %qT"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
#| msgid "function not inlinable"
msgid "non-function in gimple call"
msgstr "функција Ñе не може уткати"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
#| msgid "invalid storage class for function %qs"
msgid "invalid pure const state for function"
msgstr "неиÑправна Ñкладишна клаÑа за функцију %qs"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid LHS in gimple call"
msgstr "неиÑправан ПЦ у табели бројева линија"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid conversion in gimple call"
msgstr "неиÑправно претварање у %<__fpreg%>"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid static chain in gimple call"
msgstr "неиÑправан ПЦ у табели бројева линија"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
#| msgid "invalid argument to builtin function"
msgid "invalid argument to gimple call"
msgstr "неиÑправан аргумент за уграђену функцију"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in gimple comparison"
msgstr "неиÑправан операнд у инÑтрукцији"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr ""
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "Invalid method declaration, return type required"
msgid "invalid vector comparison resulting type"
msgstr "ÐеиÑправна декларација метода, неопходан је повратни тип"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in unary operation"
msgstr "неиÑправан операнд у инÑтрукцији"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
#| msgid "Invalid type expression"
msgid "invalid types in nop conversion"
msgstr "ÐеиÑправан типÑки израз"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid types in address space conversion"
msgstr "неиÑправан израз као операнд"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
#| msgid "Invalid type expression"
msgid "invalid types in fixed-point conversion"
msgstr "ÐеиÑправан типÑки израз"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid types in conversion to floating point"
msgstr "неиÑправно претварање у %<__fpreg%>"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid types in conversion to integer"
msgstr "неиÑправно претварање у %<__fpreg%>"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, fuzzy, gcc-internal-format
#| msgid "Elemental binary operation"
msgid "non-register as LHS of binary operation"
msgstr "Елементална бинарна операција"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operands in binary operation"
msgstr "неиÑправни операнди за бинарно %s"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in complex expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in shift expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector shift expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening vector shift expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid (pointer) operands to plus/minus"
msgstr "неиÑправни операнди за бинарно %s"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in pointer plus expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in binary expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in ternary operation"
msgstr "неиÑправан операнд у инÑтрукцији"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in fused multiply-add expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector permute expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
#| msgid "expected integer expression"
msgid "vector types expected in vector permute expression"
msgstr "очекиван је целобројни израз"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid increment expression"
msgid "invalid mask type in vector permute expression"
msgstr "%HнеиÑправан израз увећања"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment"
msgid "non-trivial conversion at assignment"
msgstr "неÑаглаÑни типови у додели"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operand in unary expression"
msgstr "неиÑправни операнди за бинарно %s"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in address expression"
msgstr "неÑлагање типова у уÑловном изразу"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
#| msgid "invalid indirect memory address"
msgid "invalid rhs for gimple memory store"
msgstr "неиÑправна поÑредна меморијÑка адреÑа"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in return statement"
msgstr "неиÑправан операнд у инÑтрукцији"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
#| msgid "Invalid init statement"
msgid "invalid conversion in return statement"
msgstr "ÐеиÑправна уÑпоÑтављачка наредба"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "goto destination is neither a label nor a pointer"
msgstr "индекÑирана вредноÑÑ‚ није ни низ ни показивач"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%s code"
msgid "invalid operand to switch statement"
msgstr "неиÑправан операнд за %%s кôд"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
#| msgid "format string has invalid operand number"
msgid "incorrect setting of landing pad number"
msgstr "форматирајућа ниÑка има неиÑправан број операнада"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%p code"
msgid "invalid comparison code in gimple cond"
msgstr "неиÑправан операнд за %%p кôд"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in asm output %d"
msgid "invalid labels in gimple cond"
msgstr "неиÑправна л-вредноÑÑ‚ у излазу аÑемблера %d"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "неиÑправна адреÑа"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
#| msgid "missing definition"
msgid "missing PHI def"
msgstr "недоÑтаје дефиниција"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "invalid IACC argument"
msgid "invalid PHI argument"
msgstr "неодговарајући аргумент за IACC"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "incompatible types in assignment"
msgid "incompatible types in PHI argument %u"
msgstr "неÑаглаÑни типови у додели"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, fuzzy, gcc-internal-format
#| msgid "verify_stmts failed"
msgid "verify_gimple failed"
msgstr "verify_stmts није уÑпело"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, fuzzy, gcc-internal-format
#| msgid "bb_for_stmt (phi) is set to a wrong basic block"
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "bb_for_stmt (phi) поÑтављено на погрешан оÑновни блок"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "нетачно дељење чворова Ñтабла"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, fuzzy, gcc-internal-format
#| msgid "bb_for_stmt (stmt) is set to a wrong basic block"
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "bb_for_stmt (stmt) поÑтављено на погрешан оÑновни блок"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
#| msgid "Invalid init statement"
msgid "in statement"
msgstr "ÐеиÑправна уÑпоÑтављачка наредба"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "наредба означена за бацање, али не чини то"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "наредба означена за бацање уÑред блока"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, fuzzy, gcc-internal-format
#| msgid "ENTRY_BLOCK has a statement list associated with it"
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "ENTRY_BLOCK има придружену лиÑту наредби"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, fuzzy, gcc-internal-format
#| msgid "EXIT_BLOCK has a statement list associated with it"
msgid "EXIT_BLOCK has IL associated with it"
msgstr "EXIT_BLOCK има придружену лиÑту наредби"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "пропад до излаза из об. %d"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "нелокална етикета "
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "етикета "
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "контролни ток уÑред оÑновног блока %d"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "пропадна ивица поÑле контролне наредбе у об. %d"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "true/false edge after a non-COND_EXPR in bb %d"
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "ивица тачно/нетачно поÑле не-COND_EXPR у об. %d"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "погрешне заÑтавице излазне ивице на крају об. %d"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "екÑплицитно goto на крају об. %d"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "повратна ивица не показује на излаз у об. %d"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, fuzzy, gcc-internal-format
#| msgid "found default case not at end of case vector"
msgid "found default case not at the start of case vector"
msgstr "нађен подразумевани Ñлучај који није на крају вектора Ñлучаја"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr "етикете Ñлучајева ниÑу Ñортиране: "
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "Ñувишна излазна ивица %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "недоÑтаје ивица %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
#| msgid "%H%<noreturn%> function does return"
msgid "%<noreturn%> function does return"
msgstr "%H%<noreturn%> функција ипак враћа"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, fuzzy, gcc-internal-format
#| msgid "%Hcontrol reaches end of non-void function"
msgid "control reaches end of non-void function"
msgstr "%Hконтрола Ñтиже до краја функције непразног типа"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of %qD, declared with attribute warn_unused_result"
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%Hигноришем повратну вредноÑÑ‚ из %qD деклариÑану уз атрибут warn_unused_result"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of function declared with attribute warn_unused_result"
msgid "ignoring return value of function declared with attribute warn_unused_result"
@@ -21423,75 +21459,75 @@ msgstr "ПоÑледња наредба у об. %i има неиÑправно
msgid "BB %i has incorrect fallthru edge"
msgstr "погрешна ија у пропадном потегу"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it receives a non-local goto"
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "функција %q+F Ñе не може уткати јер прима нелокално goto"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it uses variable sized variables"
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "функција %q+F Ñе не може уткати јер кориÑти променљиве променљиве величине"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "функција %q+F Ñе не може уткати јер кориÑти alloca (потиÑните атрибутом always_inline)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "функција %q+F Ñе не може уткати јер кориÑти setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "функција %q+F Ñе не може уткати јер кориÑти променљиву лиÑту аргумената"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "функција %q+F Ñе не може уткати јер кориÑти јер кориÑти руковање изузецима типа setjmp-longjmp"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "функција %q+F Ñе не може уткати јер кориÑти нелокално goto"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "функција %q+F Ñе не може уткати јер кориÑти __builtin_return или __builtin_apply_args"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "функција %q+F Ñе не може уткати јер кориÑти рачунÑко goto"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "функција %q+F не може никако бити уткана јер је то Ñузбијено помоћу -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "функција %q+F не може никако бити уткана јер кориÑти атрибуте Ñукобљене Ñа уткивањем"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "inlining failed in call to %q+F: %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "уткивање није уÑпело у позиву %q+F: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "позвано одавде"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "уткивање није уÑпело у позиву %q+F: %s"
@@ -21709,7 +21745,7 @@ msgstr "наредба (%p) означена измењеном поÑле опÑ
msgid "verify_ssa failed"
msgstr "verify_ssa није уÑпело"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
#| msgid "%J%qD was declared here"
msgid "%qD was declared here"
@@ -21773,58 +21809,58 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is outside array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° није целобројан"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is above array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° није целобројан"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is below array bounds"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° није целобројан"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr "претпоÑтављам да Ñе означено преливање не дешава при упрошћавању уÑлова до конÑтанте"
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr "претпоÑтављам да Ñе означено преливање не дешава при упрошћавању уÑлова"
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, fuzzy, gcc-internal-format
#| msgid "comparison is always false due to limited range of data type"
msgid "comparison always false due to limited range of data type"
msgstr "поређење је увек нетачно уÑлед ограниченог опÑега типа"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, fuzzy, gcc-internal-format
#| msgid "comparison is always true due to limited range of data type"
msgid "comparison always true due to limited range of data type"
msgstr "поређење је увек тачно уÑлед ограниченог опÑега типа"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, fuzzy, gcc-internal-format
#| msgid "assuming signed overflow does not occur when simplifying range test"
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr "претпоÑтављам да Ñе означено преливање не дешава при упрошћавању пробе опÑега"
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, fuzzy, gcc-internal-format
#| msgid "assuming signed overflow does not occur when simplifying range test"
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
@@ -21836,22 +21872,22 @@ msgstr "претпоÑтављам да Ñе означено преливање
msgid "ignoring attributes applied to %qT after definition"
msgstr "атрибут %qE може Ñе применити Ñамо на дефиниције клаÑа"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D већ деклариÑано Ñа атрибутом dllexport: dllimport Ñе игнорише"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D поново деклариÑано без атрибута dllimport пошто је на Ñš упућено ДЛЛ повезивошћу"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D поново деклариÑано без атрибута dllimport: претходно dllimport Ñе игнорише"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -21866,151 +21902,151 @@ msgstr "%q+D поново деклариÑано без атрибута dllimpo
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "атрибут %qE Ñе игнорише"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "уткана функција %q+D поново деклариÑана као dllimport: атрибут Ñе игнорише"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "дефиниција функције %q+D означена као dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "дефиниција променљиве %q+D означена као dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, fuzzy, gcc-internal-format
#| msgid "external linkage required for symbol %q+D because of %qs attribute"
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "Ñпољашња повезивоÑÑ‚ неопходна за Ñимбол %q+D због атрибута %qs"
-#: tree.c:5627
+#: tree.c:5628
#, fuzzy, gcc-internal-format
#| msgid "%qD redeclared with different visibility"
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qD поново деклариÑано Ñа другачијом видљивошћу"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "низови функција немају ÑмиÑла"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "повратни тип функције не може бити функција"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "провера Ñтабла: %s, имам %s у %s, код %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "провера Ñтабла: не очекивах ниједно од %s, имам %s у %s, код %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "провера Ñтабла: очекивах клаÑу %qs, имам %qs (%s) у %s, код %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "провера Ñтабла: ниÑам очекивао клаÑу %qs, имам %qs (%s) у %s, код %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "провера Ñтабла: очекивах omp_clause %s, имам %s у %s, код %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "провера Ñтабла: очекивах Ñтабло које Ñадржи Ñтруктуру %qs, имам %qs у %s, код %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "провера Ñтабла: приÑтупих елту %d у tree_vec Ñа %d елтова у %s, код %s:%d"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "провера Ñтабла: приÑтупих операнду %d од %s Ñа %d операнада у %s, код %s:%d"
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "провера Ñтабла: приÑтупих операнду %d од omp_clause %s Ñа %d операнада у %s, код %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%qs је превазиђено (деклариÑано код %s:%d)"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%qs је превазиђено (деклариÑано код %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%qs је превазиђено (деклариÑано код %s:%d)"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%qs је превазиђено (деклариÑано код %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "тип је превазиђен (деклариÑан код %s:%d)"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "тип је превазиђен (деклариÑан код %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated: %s"
msgstr "%qs је превазиђено"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated"
msgstr "%qs је превазиђено"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated"
msgid "type is deprecated: %s"
msgstr "тип је превазиђен"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "тип је превазиђен"
@@ -22064,157 +22100,162 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D изазива Ñукоб типа одељка"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%+D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%+D изазива Ñукоб типа одељка"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "равнање за %q+D веће је од највећег равнања објектне датотеке. КориÑтим %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "име региÑтра није наведено за %q+D"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "неиÑправно име региÑтра за %q+D"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "тип податка за %q+D није погодан за региÑтар"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
#| msgid "register specified for %q+D isn%'t suitable for data type"
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "региÑтар наведен за %q+D није погодан за тип податка"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "региÑтар Ñе кориÑти за две глобалне региÑтарÑке променљиве"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "региÑтар наведен за %q+D није погодан за тип податка"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "глобална региÑтарÑка променљива има почетну вредноÑÑ‚"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "оптимизација може уклонити читања и/или пиÑања у региÑтарÑке променљиве"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "име региÑтра дато за нерегиÑтарÑку променљиву %q+D"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "глобални деÑтруктори ниÑу подржани на овом циљу"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "глобални конÑтруктори ниÑу подржани на овом циљу"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "нитно-локални COMMON подаци ниÑу имплементирани"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "захтевано равнање за %q+D веће је од имплементираног равнања за %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, fuzzy, gcc-internal-format
#| msgid "initializer for integer value is too complicated"
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "уÑпоÑтављач за целобројну вредноÑÑ‚ је превише компликован"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "уÑпоÑтављач за реалну вредноÑÑ‚ није реална конÑтанта"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
#| msgid "invalid initial value for member %qs"
msgid "invalid initial value for member %qE"
msgstr "неиÑправна почетна вредноÑÑ‚ за члан %qs"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "Ñлаба декларација %q+D мора бити јавна"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "Ñлаба декларација %q+D није подржана"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "Ñамо Ñлаби алијаÑи Ñу подржани у овој конфигурацији"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
#| msgid "%Jweakref is not supported in this configuration"
msgid "weakref is not supported in this configuration"
msgstr "%JÑлаби упућивач није подржан у овој конфигурацији"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "ifunc is not supported in this configuration"
msgstr "-m%s није подржано у овој конфигурацији"
-#: varasm.c:5751
+#: varasm.c:5788
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to undefined symbol %qs"
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D удволичено Ñа недефиниÑаним Ñимболом %qs"
-#: varasm.c:5765
+#: varasm.c:5802
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to external symbol %qs"
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D удволичено Ñа Ñпољашњим Ñимболом %qs"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "Ñлаби упућивач %q+D на крају циља Ñамог Ñебе"
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "Ñлаби упућивач %q+D мора имати Ñтатичку повезивоÑÑ‚"
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
#| msgid "%Jalias definitions not supported in this configuration"
msgid "alias definitions not supported in this configuration"
msgstr "%Jдефиниције алијаÑа ниÑу подржане у овој конфигурацији"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "атрибут видљивоÑти није подржан у овој конфигурацији, игноришем"
@@ -22256,8 +22297,8 @@ msgstr "%qD није дефиниÑано изван доÑега функциј
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "дужина ниÑке %qd већа је од дужине %qd коју ИСО компилатори Ц%d морају да подрже"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "преливање у конÑтантном изразу"
@@ -22482,7 +22523,7 @@ msgstr "показивач на чланÑку функцију употребљ
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "адреÑа за %qD ће увек бити израчуната као %<true%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "предлажем заграде око израза употребљеног као иÑтинитоÑна вредноÑÑ‚"
@@ -22927,40 +22968,40 @@ msgstr "атрибут %qE Ñе игнорише за %qE"
msgid "invalid vector type for attribute %qE"
msgstr "неиÑправан тип вектора за атрибут %qE"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "величина вектора није целобројни умножак величине компоненте"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "нулта величина вектора"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "број компоненти вектора није Ñтепен двојке"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "ненулти атрибут без аргумената код непрототипа"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "ненулти аргумент има неиÑправан број операнада (аргумент %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "ненулти аргумент Ñа бројем операнада ван опÑега (аргумент %lu, операнд %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "ненулти аргумент упућује на непоказивачки операнд (аргумент %lu, операнд %lu)"
@@ -23000,12 +23041,12 @@ msgstr "атрибут %qE захтева прототипове Ñа имено
msgid "%qE attribute only applies to variadic functions"
msgstr "атрибут %qE је примењив Ñамо на варијадичке функције"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "захтевани положај није целобројна конÑтанта"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "захтевани положај је мањи од нуле"
@@ -23066,7 +23107,7 @@ msgstr "не могу применити %<offsetof%> када је %<operator[]
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "не може Ñе применити %<offsetof%> на чланÑку функцију %qD"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "покушај узимања адреÑе битÑког поља %qD у Ñтруктури"
@@ -23848,87 +23889,87 @@ msgid "ignoring #pragma %s %s"
msgstr "%Hигноришем #pragma %s %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
#| msgid "%Hstray %<@%> in program"
msgid "stray %<@%> in program"
msgstr "%Hзалутало %<@%> у програму"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "залутало %qs у програму"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "недоÑтаје окончавајући знак %c"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "залутало %qc у програму"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "залутало %<\\%o%> у програму"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "ова декадна конÑтанта је неозначена Ñамо у ИЦО Ц-у 90"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "ова декадна конÑтанта би била неозначена у ИЦО Ц-у 90"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for %qs type"
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "целобројна конÑтанта превелика за тип %qs"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
#| msgid "storage size not constant"
msgid "unsuffixed float constant"
msgstr "величина Ñкладишта није конÑтантна"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "реална конÑтанта премашује опÑег за %qT"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, fuzzy, gcc-internal-format
#| msgid "floating constant misused"
msgid "floating constant truncated to zero"
msgstr "лоша употреба реалне конÑтанте"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, fuzzy, gcc-internal-format
#| msgid "misplaced %<@%D%> Objective-C++ construct"
msgid "repeated %<@%> before Objective-C string"
msgstr "конÑтрукција %<@%D%> објективног Ц++а на погрешном меÑту"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "традиционални Ц одбија надовезивање конÑтантних ниÑки"
@@ -23948,7 +23989,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid type for iteration variable %qE"
msgid "invalid type for iteration variable %qE"
@@ -23960,25 +24001,25 @@ msgstr "%HнеиÑправан тип променљиве итерације %q
msgid "%qE is not initialized"
msgstr "%H%qE није уÑпоÑтављено"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, fuzzy, gcc-internal-format
#| msgid "%Hmissing controlling predicate"
msgid "missing controlling predicate"
msgstr "%HнедоÑтаје контролишући предикат"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid controlling predicate"
msgid "invalid controlling predicate"
msgstr "%HнеиÑправан контролишући предикат"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
#| msgid "%Hmissing increment expression"
msgid "missing increment expression"
msgstr "%HнедоÑтаје израз увећања"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid increment expression"
msgid "invalid increment expression"
@@ -24867,7 +24908,7 @@ msgstr "Кашњење L%d оÑтаве непознато за %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "лоша вредноÑÑ‚ %qs за -mmemory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -25055,55 +25096,55 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to functions"
msgid "%qE attribute only applies to functions"
msgstr "атрибут %qs примењује Ñе Ñамо на функције"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "не могу да Ñрачунам Ñтварну локацију параметра на Ñтеку"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
#| msgid "argument %qd is not a constant"
msgid "argument must be a constant"
msgstr "аргумент %qd није конÑтанта"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "Ñелектор мора бити непоÑредни"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "маÑка мора бити непоÑредна"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "нема доÑтупних ниÑких региÑтара за подизање виÑоких региÑтара"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "ÑервиÑне рутине прекида не могу бити кодиране у режиму Тамба"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -25118,101 +25159,120 @@ msgstr "уÑпоÑтављена променљива %q+D означена је
msgid "static variable %q+D is marked dllimport"
msgstr "Ñтатичка променљива %q+D означена је као dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-G and -static are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-G и -static Ñу међуÑобно иÑкључиви"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "%qD cannot have default arguments"
+msgid "%qs function cannot have arguments"
+msgstr "%qD не може имати подразумеване аргументе"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "Function does not return a value"
+msgid "%qs function cannot return a value"
+msgstr "Функција не враћа вредноÑÑ‚"
+
+#: config/avr/avr.c:583
+#, fuzzy, gcc-internal-format
+#| msgid "%qs appears to be a misspelled signal handler"
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs изгледа као погрешно напиÑан руковалац Ñигналима"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "Број региÑтара који Ñе кориÑти за проÑлеђивање целобројних аргумената"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D not supported"
msgid "writing to address space %qs not supported"
msgstr "Ñлаба декларација %q+D није подржана"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs изгледа као погрешно напиÑан руковалац прекидима"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs изгледа као погрешно напиÑан руковалац Ñигналима"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "Ñамо неуÑпоÑтављене променљиве могу Ñе ÑмеÑтити у одељак .noint"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "Ñамо уÑпоÑтављене променљиве могу Ñе ÑмеÑтити у меморијÑку облаÑÑ‚ програма"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "МЦУ %qs подржан Ñамо за аÑемблер"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of module in string constant"
msgid "%s expects a compile time integer constant"
msgstr "Ðеочекиван крај модула у конÑтантној ниÑки"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -25345,70 +25405,70 @@ msgstr "неиÑправна употреба модификатора „:“"
msgid "internal error: bad register: %d"
msgstr "унутрашња грешка: лош региÑтар %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "унутрашња грешка: ија за Ñпоредни ефекат утиче на главни ефекат"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "непозната вредноÑÑ‚ cc_attr"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "унутрашња грешка: cris_side_effect_mode_ok Ñа лошим операндима"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d није употребљиво, није између 0 и %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "непозната одредница верзије КРИСа у -march= или -mcpu= : %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "непозната одредница верзије КРИСа у -mtune= : %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC и -fpic ниÑу подржани у овој конфигурацији"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "та конкретна опција -g није иÑправна уз -maout и -melinux"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "Unknown src"
msgid "unknown src"
msgstr "Ðепознат извор"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "Unknown dest"
msgid "unknown dest"
msgstr "Ðепознато одредиште"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "оквир Ñтека превелик: %d бајтова"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "expand_binop није уÑпело у movsi got"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
#| msgid "emitting PIC operand, but PIC register isn't set up"
msgid "emitting PIC operand, but PIC register isn%'t set up"
@@ -25573,321 +25633,321 @@ msgstr "не могу да проширим ПЦХ датотеку: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "не могу да поÑтавим положај у ПЦХ датотеци: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -mtune= switch"
msgid "bad value (%s) for %stune=%s %s"
msgstr "лоша вредноÑÑ‚ (%s) за прекидач -mtune="
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mtune=x86-64 is deprecated. Use -mtune=k8 or -mtune=generic instead as appropriate."
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr "-mtune=x86-64 је превазиђено. КориÑтите -mtune=k8 или -mtune=generic умеÑто тога."
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "модела кôда %qs није подржан у %s-битном режиму"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %qs not supported in x32 mode"
msgstr "модела кôда %s није подржан у ПИЦ режиму"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %s does not support PIC mode"
msgstr "модела кôда %s није подржан у ПИЦ режиму"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s није подржано у овој конфигурацији"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i-битни режим није укомпилован"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "ЦПУ који Ñте изабрали не подржава Ñкуп инÑтрукција икÑ86-64"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "generic CPU can be used only for -mtune= switch"
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "генерички ЦПУ може бити употребљен Ñамо за прекидач -mtune="
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -march= switch"
msgid "bad value (%s) for %sarch=%s %s"
msgstr "лоша вредноÑÑ‚ (%s) за прекидач -march="
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d није између 0 и %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "-fprefetch-loop-arrays not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-fprefetch-loop-arrays није подржано за овај циљ"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d није између %d и 12"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred-stack-boundary=%d није између %d и 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-msseregparm used without SSE enabled"
msgid "%ssseregparm%s used without SSE enabled"
msgstr "-msseregparm употребљено без укључених ССЕ инÑтрукција"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "Ñкуп ССЕ инÑтрукција иÑкључен, кориÑтим 387 аритметику"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "Ñкуп 387 инÑтрукција иÑкључен, кориÑтим ССЕ аритметику"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "табеле одмотавања тренутно захтевају или показивач оквира или -maccumulate-outgoing-args за иÑправноÑÑ‚"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "табеле одмотавања тренутно захтевају или показивач оквира или -maccumulate-outgoing-args за иÑправноÑÑ‚"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unknown -m%s= option specified: '%s'"
msgid "unknown option for -mrecip=%s"
msgstr "непозната опција типа -m%s=: „%s“"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ACCESS specification at %L was already specified"
msgid "option(\"%s\") was already specified"
msgstr "Одредница ACCESS код %L је већ наведена "
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "атрибути fastcall и regparm ниÑу ÑаглаÑни"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "regparam and thiscall attributes are not compatible"
msgstr "атрибути fastcall и stdcall ниÑу ÑаглаÑни"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%qE attribute requires an integer constant argument"
msgstr "атрибут %qs захтева целобројну конÑтанту као аргумент"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
#| msgid "argument to %qs attribute larger than %d"
msgid "argument to %qE attribute larger than %d"
msgstr "аргумент за атрибут %qs већи од %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "атрибути fastcall и cdecl ниÑу ÑаглаÑни"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "атрибути fastcall и stdcall ниÑу ÑаглаÑни"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and thiscall attributes are not compatible"
msgstr "атрибути fastcall и stdcall ниÑу ÑаглаÑни"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "атрибути stdcall и cdecl ниÑу ÑаглаÑни"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "атрибути stdcall и fastcall ниÑу ÑаглаÑни"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "stdcall and thiscall attributes are not compatible"
msgstr "атрибути stdcall и fastcall ниÑу ÑаглаÑни"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "cdecl and thiscall attributes are not compatible"
msgstr "атрибути stdcall и fastcall ниÑу ÑаглаÑни"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "%qE attribute is used for none class-method"
msgstr "атрибут %qE Ñе игнорише на не-клаÑним типовима"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, fuzzy, gcc-internal-format
#| msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Позивање %qD Ñа атрибутом sseregparm без укључених ССЕ/ССЕ2"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, fuzzy, gcc-internal-format
#| msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "Позивање %qT Ñа атрибутом sseregparm без укључених ССЕ/ССЕ2"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, fuzzy, gcc-internal-format
#| msgid "-march=%s is not compatible with the selected ABI"
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "-march=%s није ÑаглаÑно Ñа изабраним ÐБИјем"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, fuzzy, gcc-internal-format
#| msgid "MMX vector argument without MMX enabled changes the ABI"
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "ÐœÐœÐ˜ÐºÑ Ð²ÐµÐºÑ‚Ð¾Ñ€Ñки аргумент без укључених ÐœÐœÐ˜ÐºÑ Ð¼ÐµÑšÐ° ÐБИ"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "ССЕ враћање региÑтра уз иÑкључене ССЕ"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "ССЕ региÑтарÑки аргумент уз иÑкључене ССЕ"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "враћање из региÑтра x87 када је x87 иÑкључено"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "ССЕ векторÑки аргумент без укључених ССЕ мења ÐБИ"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "ÐœÐœÐ˜ÐºÑ Ð²ÐµÐºÑ‚Ð¾Ñ€Ñки аргумент без укључених ÐœÐœÐ˜ÐºÑ Ð¼ÐµÑšÐ° ÐБИ"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "ССЕ векторÑко враћање без укључених ССЕ мења ÐБИ"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "ÐœÐœÐ˜ÐºÑ Ð²ÐµÐºÑ‚Ð¾Ñ€Ñко враћање без укључених ÐœÐœÐ˜ÐºÑ Ð¼ÐµÑšÐ° ÐБИ"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, fuzzy, gcc-internal-format
#| msgid "%s not supported for nested functions"
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "%s није подржано за угњеждене функције"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, fuzzy, gcc-internal-format
#| msgid "%s not supported for nested functions"
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
@@ -25895,133 +25955,133 @@ msgstr "%s није подржано за угњеждене функције"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "%s functions limited to %d register parameters"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "%s функције ограничене на %d региÑтарÑких параметара"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "проширени региÑтри немају виÑоке половине"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "неподржана величина операнда за проширени региÑтар"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid operand code '%c'"
msgid "non-integer operand used with operand code '%c'"
msgstr "неиÑправан кôд операнда ‘%c;’"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 2-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
#| msgid "shift must be an immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "помак мора бити непоÑредни"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the third argument must be an 8-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 1-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
#| msgid "argument 3 must be a 4-bit unsigned literal"
msgid "the last argument must be a 4-bit immediate"
msgstr "аргумент 3 мора бити четворобитна неозначена конÑтанта"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 1-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 5-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the next to last argument must be an 8-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 8-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 32-bit immediate"
msgstr "аргумент 1 мора бити петобитна означена конÑтанта"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "Ñелектор мора бити целобројна конÑтанта у опÑегу 0..%wi"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
#| msgid "mask must be an immediate"
msgid "last argument must be an immediate"
msgstr "маÑка мора бити непоÑредна"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to variables"
msgid "%qE attribute only available for 32-bit"
msgstr "атрибут %qs примењује Ñе Ñамо на променљиве"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
#| msgid "argument of %qs attribute is not a string constant"
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "аргумент атрибута %qs није конÑтантна ниÑка"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "атрибути fastcall и stdcall ниÑу ÑаглаÑни"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
#| msgid "%qs incompatible attribute ignored"
msgid "%qE incompatible attribute ignored"
@@ -26099,19 +26159,19 @@ msgstr "%JадреÑна облаÑÑ‚ атрибута не може бити н
msgid "%qE attribute requires a string constant argument"
msgstr "атрибут %qs захтева целобројну конÑтанту као аргумент"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "вредноÑÑ‚ уз -mfixed-range мора бити облика РЕГ1-РЕГ2"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s је празан опÑег"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
#| msgid "argument of %qs attribute is not a string constant"
msgid "version attribute is not a string"
@@ -26181,7 +26241,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "атрибут %qE није подржан на овој платформи"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not an integer constant"
msgid "%qE attribute argument not an integer constant"
@@ -26244,7 +26304,7 @@ msgstr "наведени вишеÑтруки атрибути типа функ
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "израз ограничења Ñтека није подржан"
@@ -26809,27 +26869,27 @@ msgstr "ММИИкÑ-унутрашње: %s није помицљив целоб
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "Ñтварање ПИЦ кôда није подржано преноÑивим моделом извршавања"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "Ñтварање ПИЦ кôда није ÑаглаÑно Ñа брзим поÑредним позивима"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g је подржано Ñамо када Ñе кориÑти ГÐС на овом процеÑору,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "опција -g иÑкључена"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr "равнање (%u) за %s премашује највеће равнање за глобалне заједничке податке. КориÑтим %u"
@@ -27276,87 +27336,87 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "оквир Ñтека превелик"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "нема профилиÑања 64-битног кôда за овај ÐБИ"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "употреба %<long double%> у алтивек типовима није иÑправна"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "употреба логичких типова у алтивек типовима није иÑправна"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "употреба %<complex%> у алтивек типовима није иÑправна"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "употреба децималних реалних типова у алтивек типовима није иÑправна"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, fuzzy, gcc-internal-format
#| msgid "use of %<long%> in AltiVec types is invalid for 64-bit code"
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "употреба %<long%> у алтивек типовима није иÑправна у 64-битном кôду"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "превазиђена употреба %<long%> у алтивек; кориÑтите %<int%>"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, fuzzy, gcc-internal-format
#| msgid "use of %<long long%> in AltiVec types is invalid"
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "употреба %<long long%> у алтивек типовима није иÑправна"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, fuzzy, gcc-internal-format
#| msgid "use of %<double%> in AltiVec types is invalid"
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "употреба %<double%> у алтивек типовима није иÑправна"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "неиÑправна употреба %<::%>"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%<#pragma%> is not allowed here"
msgid "%s\"%s\"%s is not allowed"
msgstr "%<#pragma%> није дозвољена овде"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "spec '%s' is invalid"
msgid "%s\"%s\"%s is invalid"
@@ -27414,12 +27474,12 @@ msgstr "трамполине ниÑу подржане"
msgid "-m64 not supported in this configuration"
msgstr "-m64 није подржано у овој конфигурацији"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 захтева ЦПУ типа ПауерПЦ-64"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
#| msgid "Emit code compatible with TI tools"
msgid "-mcmodel incompatible with other toc options"
@@ -27437,64 +27497,64 @@ msgstr "Емитуј кôд ÑаглаÑан Ñа ТИјевим алатима"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET није подржано"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "лоша вредноÑÑ‚ за -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "лоша вредноÑÑ‚ за -msdata=%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable и -msdata=%s ниÑу ÑаглаÑни"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s и -msdata=%s ниÑу ÑаглаÑни"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s и -mcall-%s ниÑу ÑаглаÑни"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable и -mno-minimal-toc ниÑу ÑаглаÑни"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable и -mcall-%s ниÑу ÑаглаÑни"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC и -mcall-%s ниÑу ÑаглаÑни"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc мора бити велике крајноÑти"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "ваш аÑемблер на подржава -msecure-plt"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s није подржано у овој конфигурацији"
@@ -27608,59 +27668,59 @@ msgstr "игноришем -fschedule-insns због грешке у руковÐ
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "табеле одмотавања тренутно захтевају или показивач оквира или -maccumulate-outgoing-args за иÑправноÑÑ‚"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs није подржано овим подциљем"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to interrupt functions"
msgid "%qE attribute only applies to interrupt functions"
msgstr "атрибут %qs примењив је Ñамо на функције прекида"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute is not supported on this platform"
msgid "%qE attribute is supported only for SH2A"
msgstr "атрибут %qE није подржан на овој платформи"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "атрибут interrupt_handler није ÑаглаÑан Ñа -m5-compact"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to functions"
msgid "%qE attribute only applies to SH2A"
msgstr "атрибут %qs примењује Ñе Ñамо на функције"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not an integer constant"
msgid "%qE attribute argument should be between 0 to 255"
msgstr "аргумент атрибута %qs није целобројна конÑтанта"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not a string constant"
msgid "%qE attribute argument not a string constant"
msgstr "аргумент атрибута %qs није конÑтантна ниÑка"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 мора бити доÑтупан као позивом продрман региÑтар"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
#| msgid "Need a second call-clobbered general purpose register"
msgid "need a second call-clobbered general purpose register"
msgstr "Потребан је други позивом продрман региÑтар опште намене"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, fuzzy, gcc-internal-format
#| msgid "Need a call-clobbered target register"
msgid "need a call-clobbered target register"
@@ -28026,43 +28086,43 @@ msgstr "%<-gnat%> погрешно упиÑано као %<-gant%>"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "атрибут %qs Ñе игнорише"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute requires prototypes with named arguments"
msgid "%qs attribute requires prototypes with named arguments"
msgstr "атрибут %qE захтева прототипове Ñа именованим аргументима"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute only applies to variadic functions"
msgid "%qs attribute only applies to variadic functions"
msgstr "атрибут %qE је примењив Ñамо на варијадичке функције"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored"
msgid "%qE attribute has no effect"
msgstr "атрибут %qE Ñе игнорише"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid vector type for attribute %qs"
msgstr "неиÑправан тип вектора за атрибут %qE"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to variables"
msgid "attribute %qs applies to array types only"
msgstr "атрибут %qs примењује Ñе Ñамо на променљиве"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid element type for attribute %qs"
@@ -28080,7 +28140,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " за претварање из %qT у %qT"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -28393,7 +28453,7 @@ msgstr "неиÑправно претварање из %qT у %qT"
msgid "invalid conversion from %qT to %qT"
msgstr "неиÑправно претварање из %qT у %qT"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " уÑпоÑтављање аргумента %P од %qD"
@@ -28403,203 +28463,203 @@ msgstr " уÑпоÑтављање аргумента %P од %qD"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
#| msgid " initializing argument %P of %qD"
msgid " initializing argument %P of %q+D"
msgstr " уÑпоÑтављање аргумента %P од %qD"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
#| msgid "cannot bind rvalue %qE to %qT"
msgid "cannot bind %qT lvalue to %qT"
msgstr "не може Ñе повезати д-вредноÑÑ‚ %qE Ñа %qT"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "не може Ñе повезати битÑко поље %qE Ñа %qT"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "не може Ñе повезати паковано поље %qE Ñа %qT"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "не може Ñе повезати д-вредноÑÑ‚ %qE Ñа %qT"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
#| msgid "class %qT will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "клаÑа %qT ће бити Ñматрана Ñкоро празном у будућим верзијама ГЦЦа"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
#| msgid "cannot pass objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "не могу Ñе проÑледити објекти не-ПОД типа %q#T кроз %<...%>; позив ће иÑкочити при извршавању"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
#| msgid "cannot receive objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "не могу Ñе примати објекти не-ПОД типа %q#T кроз %<...%>; позив ће иÑкочити при извршавању"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for %q#D"
msgid "recursive evaluation of default argument for %q#D"
msgstr "поновљена дефиниција подразумеваног аргумента за %q#D"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
#| msgid "the default argument for parameter %d of %qD has not yet been parsed"
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "подразумевани аргумент за параметер %d у %qD још увек није рашчлањен"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "аргумент позива функције може бити кандидат за форматÑки атрибут"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "проÑлеђивање %qT као аргумента %<this%> у %q#D одбацује одредбе"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT није приÑтупна оÑнова од %qT"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD as %s"
msgid "deducing %qT as %qT"
msgstr "декларација %qD као %s"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
#| msgid " in call to %qD"
msgid " in call to %q+D"
msgstr " у позиву %qD"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "не могу да нађем поље class$ у јаванÑком типу Ñучеља %qT"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "позив не-функције %qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
#| msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "нема одговарајуће функције за позив %<%T::%s(%A)%#V%>"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "нема одговарајуће функције за позив %<%T::%s(%A)%#V%>"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "двоÑмиÑлен позив препуњене %<%s(%A)%>"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "чланÑка функција %qD не може Ñе позвати без објекта"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "проÑлеђивање %qT бира %qT пре него %qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " у позиву %qD"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "бирам %qD пре него %qD"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " за претварање из %qT у %qT"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " зато што је редоÑлед претварања за аргумент бољи"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
#| msgid "default argument specified in explicit specialization"
msgid "default argument mismatch in overload resolution"
msgstr "наведен подразумевани аргумент у екÑплицитној Ñпецијализацији"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 1: %q+#F"
msgstr "кандидат је: %+#D"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 2: %q+#F"
msgstr "кандидат је: %+#D"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ИСО Ц++ каже да је ово двоÑмиÑлено, чак иако је најгоре претварање првог боље од најгорег претварања другог:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "could not convert %qE to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "не могу да претворим %qE у %qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
#| msgid "invalid initialization of non-const reference of type %qT from a temporary of type %qT"
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "неиÑправно уÑпоÑтављање неконÑтантног упућивача типа %qT привременим типа %qT"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "неиÑправно уÑпоÑтављање упућивача типа %qT изразом типа %qT"
@@ -28815,227 +28875,227 @@ msgstr "поље %q+D неиÑправно деклариÑан функцијÑ
msgid "field %q+D invalidly declared method type"
msgstr "поље %q+D неиÑправно деклариÑан методÑки тип"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "игноришем атрибут паковања због непакованог не-ПОД поља %q+#D"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "поље %q+#D иÑтог имена као и клаÑа"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T има показивачке чланÑке податке"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " али не потиÑкује %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " или %<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " али не потиÑкује %<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "помак празне оÑнове %qT можда не поштује ÐБИ и може Ñе изменити у будућим верзијама ГЦЦа"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "клаÑа %qT ће бити Ñматрана Ñкоро празном у будућим верзијама ГЦЦа"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "уÑпоÑтављач наведен за невиртуелни метод %q+D"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function %qD"
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "неиÑправна употреба неÑтатичке чланÑке функције %qD"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q+T is not literal because:"
msgstr "%q#T није клаÑа"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "оÑновна клаÑа %q#T има не-виртуелни деÑтруктор"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " base class %qT of %q+T is non-literal"
msgstr "оÑновна клаÑа %q#T има не-виртуелни деÑтруктор"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static data member %q+D"
msgid " non-static data member %q+D has non-literal type"
msgstr "неиÑправна употреба неÑтатичког чланÑког податка %q+D"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "неÑтатички упућивач %q+#D у клаÑи без конÑтруктора"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "неÑтатчики конÑтантни члан %q+#D у клаÑи без конÑтруктора"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "помак виртуелне оÑнове %qT не поштује ÐБИ и може Ñе изменити у будућим верзијама ГЦЦа"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "непоÑредна оÑнова %qT није доÑтупна у %qT уÑлед двоÑмиÑленоÑти"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "виртуелна оÑнова %qT није доÑтупна у %qT уÑлед двоÑмиÑленоÑти"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "величина додељена %qT можда не поштује ÐБИ и може Ñе изменити у будућим верзијама ГЦЦа"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "помак за %qD можда не поштује ÐБИ и може Ñе изменити у будућим верзијама ГЦЦа"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "помак за %q+D можда не поштује ÐБИ и може Ñе изменити у будућим верзијама ГЦЦа"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D Ñадржи празне клаÑе које могу довеÑти до Ñмештања оÑновних клаÑа на различитој локацији у будућим верзијама ГЦЦа"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "раÑпоред клаÑа изведених из празне клаÑе %qT може бити промењен у будућим верзијама ГЦЦа"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "поновна дефиниција %q#T"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, fuzzy, gcc-internal-format
#| msgid "%q#T has virtual functions but non-virtual destructor"
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T има виртуелне функције, али невиртуелни деÑтруктор"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class %qT does not have any field named %qD"
msgid "type transparent class %qT does not have any fields"
msgstr "клаÑа %qT нема поље по имену %qD"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
#| msgid "type %qs has virtual member functions"
msgid "type transparent class %qT has virtual functions"
msgstr "тип %qs има виртуелне чланÑке функције"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "у покушају да довршим Ñтруктуру, али избачен уÑлед претходних грешака у рашчлањивању"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "језичка ниÑка %<\"%E\"%> није препозната"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "не могу да разрешим препуњену функцију %qD на оÑнову претварања у тип %qT"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "нема поклапања за претварање функције %qD у тип %q#T"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "двоÑмиÑлено претварање препуњене функције %qD у тип %q#T"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "претпоÑтављам показивач на члан %qD"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(показивач на члан може бити формиран Ñамо помоћу %<&%E%>)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "нема довољно података о типу"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "не може Ñе претворити %qE из типа %qT у тип %qT"
@@ -29045,12 +29105,12 @@ msgstr "не може Ñе претворити %qE из типа %qT у тип
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "декларација %q#D"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "мења значење за %qD Ñа %q+#D"
@@ -29071,7 +29131,7 @@ msgstr "не може Ñе претворити из непотпуног тип
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "двоÑмиÑлено претварање %qE из %qT у %qT"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "array bound is not an integer constant"
msgid "zero as null pointer constant"
@@ -29106,7 +29166,7 @@ msgstr "неиÑправно уÑпоÑтављање неконÑтантног
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "претварање из %qT у %qT одбацује одредбе"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "претапање %qT у %qT не разрешава показивач"
@@ -29548,7 +29608,7 @@ msgstr "претходна декларација %q+#D"
msgid "declaration of template %q#D"
msgstr "декларација шаблона %q#D"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "коÑи Ñе Ñа претходном декларацијом %q+#D"
@@ -29600,7 +29660,7 @@ msgstr "претходном декларацијом именÑког проÑÑ
msgid "%q+#D previously defined here"
msgstr "%q+#D претходно дефиниÑано овде"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "%q+#D претходно деклариÑано овде"
@@ -29730,7 +29790,7 @@ msgstr "нитно-локална декларација %q+D прати не-н
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "не-нитно-локална декларација %q+D прати нитно-локалну декларацију"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D"
msgid "redeclaration of %q#D"
@@ -29803,7 +29863,7 @@ msgstr "етикета по имену wchar_t"
msgid "%qD is not a type"
msgstr "%qD није тип"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "%qD употребљено без параметара шаблона"
@@ -29939,130 +29999,130 @@ msgstr "декларација typedef није иÑправна у деклар
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<register%> у празној декларацији у доÑегу датотеке"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "attribute ignored in declaration of %q+#T"
msgid "attribute ignored in declaration of %q#T"
msgstr "атрибут игнориÑан у декларацији %q+#T"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, fuzzy, gcc-internal-format
#| msgid "attribute for %q+#T must follow the %qs keyword"
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "атрибут за %q+#T мора пратити кључну реч %qs"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute can only be applied to class definitions"
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "атрибут %qE може Ñе применити Ñамо на дефиниције клаÑа"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
#| msgid "typedef %qD is initialized (use __typeof__ instead)"
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "дефиниција типа %qD је уÑпоÑтављена (употребите __typeof__)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "декларација %q#D има %<extern%> и ипак је уÑпоÑтављена"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "дефиниција %q+D означена као %<dllimport%>"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D није Ñтатички члан у %q#T"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ИСО Ц++ не дозвољава да %<%T::%D%> буде дефиниÑано као %<%T::%D%>"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "заглавље шаблона није дозвољено у дефиницији члана екÑплицитно Ñпецијализоване клаÑе"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "удвоÑтручено уÑпоÑтављање %qD"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, fuzzy, gcc-internal-format
#| msgid "%qE declared %<threadprivate%> after first use"
msgid "%qD declared %<constexpr%> outside its class"
msgstr "%qE деклариÑано као нитно-локално поÑле прве употребе"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "декларација %q#D изван клаÑе није дефиниција"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "променљива %q#D има уÑпоÑтављач али је непотпуног типа"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "елементи низа %q#D имају непотпун тип"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D has %<extern%> and is initialized"
msgid "declaration of %q#D has no initializer"
msgstr "декларација %q#D има %<extern%> и ипак је уÑпоÑтављена"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "Ñкупина %q#D има непотпун тип и не може Ñе дефиниÑати"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD деклариÑано као упућивач али није уÑпоÑтављено"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "name used in a GNU-style designated initializer for an array"
msgstr "име %qD употребљено у уÑпоÑтављачу низа утврђеном као Гну-Ñтил"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "нетривијални утврђени уÑпоÑтављачи ниÑу подржани"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "име %qD употребљено у уÑпоÑтављачу низа утврђеном као Гну-Ñтил"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "уÑпоÑтављач не одређује величину %qD"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "недоÑтаје величина низа у %qD"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "низ %qD нулте величине"
@@ -30070,425 +30130,425 @@ msgstr "низ %qD нулте величине"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t known"
msgid "storage size of %qD isn%'t known"
msgstr "величина Ñкладишта за %q+D није позната"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t constant"
msgid "storage size of %qD isn%'t constant"
msgstr "величина Ñкладишта за %q+D није конÑтантна"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
#| msgid "sorry: semantics of inline function static data %q+#D are wrong (you'll wind up with multiple copies)"
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "извините: Ñемантика Ñтатичких података уткане функције %q+#D је погрешна (доћи ће до вишеÑтруких копија)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, fuzzy, gcc-internal-format
#| msgid "%J you can work around this by removing the initializer"
msgid " you can work around this by removing the initializer"
msgstr "%J можете ово заобићи уклањањем уÑпоÑтављача"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "неуÑпоÑтављена конÑтанта %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
#| msgid "type %qs has a user-defined constructor"
msgid "%q#T has no user-provided default constructor"
msgstr "тип %qs има кориÑнички дефиниÑан конÑтруктор"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "неиÑправан тип %qT као уÑпоÑтављач за вектор типа %qT"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "уÑпоÑтављач за %qT мора бити у витичаÑтим заградама"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "име %qD употребљено у уÑпоÑтављачу низа утврђеном као Гну-Ñтил"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT нема неÑтатички чланÑки податак по имену %qD"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "превише уÑпоÑтављача за %qT"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "витичаÑте заграде око Ñкаларног уÑпоÑтављача за тип %qT"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "недоÑтају витичаÑте заграде око уÑпоÑтављача за %qT"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
#| msgid "elements of array %q#D have incomplete type"
msgid "elements of array %q#T have incomplete type"
msgstr "елементи низа %q#D имају непотпун тип"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "објекат %qD променљиве величине не може Ñе уÑпоÑтављати"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 forbids compound literals"
msgid "variable-sized compound literal"
msgstr "ИСО Ц 90 забрањује Ñложене доÑловне ниÑке"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "%qD has incomplete type"
msgid "%q#D has incomplete type"
msgstr "%qD има непотпун тип"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "Ñкаларни објекат %qD захтева један елемент у уÑпоÑтављачу"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, fuzzy, gcc-internal-format
#| msgid "%qD must be initialized by constructor, not by %<{...}%>"
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "%qD мора бити уÑпоÑтављен конÑтруктором, не помоћу %<{...}%>"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "низ %qD уÑпоÑтављен заграђеном конÑтантном ниÑком %qE"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "уÑпоÑтављач неиÑправан за Ñтатички члан Ñа конÑтруктором"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ИСО Ц++ забрањује уÑпоÑтављање унутар клаÑе неконÑтантног Ñтатичког члана %qD"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(потребно је уÑпоÑтављање изван клаÑе)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "додела (не уÑпоÑтављање) у декларацији"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "заклањање претходне декларације типа за %q#D"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot be thread-local because it has non-POD type %qT"
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD не може бити нитно-локално зато што је не-ПОД типа %qT"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD је нитно-локално и Ñтога Ñе не може динамички уÑпоÑтављати"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qD Ñе не може уÑпоÑтављати не-конÑтантним изразом када Ñе декларише"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, fuzzy, gcc-internal-format
#| msgid "definition of static data member %q+D of dllimport'd class"
msgid "non-static data member %qD has Java class type"
msgstr "дефиниција Ñтатичког чланÑког податка %q+D dllimport клаÑе"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "функција %q#D уÑпоÑтављена као променљива"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of %qD"
msgid "initializer fails to determine size of %qT"
msgstr "уÑпоÑтављач не одређује величину %qD"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in %qD"
msgid "array size missing in %qT"
msgstr "недоÑтаје величина низа у %qD"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array %qD"
msgid "zero-size array %qT"
msgstr "низ %qD нулте величине"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "деÑтруктор за туђинÑку клаÑу %qT не може бити члан"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "конÑтруктор за туђинÑку клаÑу %qT не може бити члан"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD деклариÑано као %<virtual%> %s"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD деклариÑано као %<inline%> %s"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "наводиоци функције %<const%> и %<volatile%> за %qD ниÑу иÑправни у декларацији %s"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD деклариÑано као %<virtual%> %s"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD деклариÑано као %<inline%> %s"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "наводиоци функције %<const%> и %<volatile%> за %qD ниÑу иÑправни у декларацији %s"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD деклариÑано као %<virtual%> %s"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> type"
msgstr "%qD деклариÑано као %<inline%> %s"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "наводиоци функције %<const%> и %<volatile%> за %qD ниÑу иÑправни у декларацији %s"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD деклариÑано као %<virtual%> %s"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> field"
msgstr "%qD деклариÑано као %<inline%> %s"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "наводиоци функције %<const%> и %<volatile%> за %qD ниÑу иÑправни у декларацији %s"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D деклариÑано као пријатељ"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D деклариÑано Ñа одредницом изузетака"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "дефиниција %qD није у именÑком проÑтору који обухвата %qT"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "Ñтатичка чланÑка функција %q#D деклариÑана Ñа одредбама типа"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "дефиниција екÑплицитне Ñпецијализације %qD у декларацији пријатеља"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "неиÑправна употреба ид. шаблона %qD у декларацији примарног шаблона"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "подразумевани аргументи ниÑу дозвољени у декларацији пријатељÑке Ñпецијализације шаблона %qD"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "%<inline%> није дозвољено у декларацији пријатељÑке Ñпецијализације шаблона %qD"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "%<::main%> Ñе не може деклариÑати као шаблон"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "%<::main%> Ñе не може деклариÑати као уткано"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "%<::main%> Ñе не може деклариÑати као Ñтатичко"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D не упућује на неодређени тип, тако да Ñе не кориÑти за повезивоÑÑ‚"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
#| msgid "previous declaration of %q+#D with %qL linkage"
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "претходна декларација %q+#D Ñа повезивошћу %qL"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
#| msgid "%smember function %qD cannot have cv-qualifier"
msgid "static member function %qD cannot have cv-qualifier"
msgstr "%sчланÑка функција %qD не може имати кн-одредбу"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, fuzzy, gcc-internal-format
#| msgid "%smember function %qD cannot have cv-qualifier"
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "%sчланÑка функција %qD не може имати кн-одредбу"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
#| msgid "template with C linkage"
msgid "literal operator with C linkage"
msgstr "шаблон Ñа Ц повезивошћу"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "invalid option argument %qs"
msgid "%qD has invalid argument list"
msgstr "неиÑправан аргумент опције %qs"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "%qD must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "%qD мора бити неÑтатичка чланÑка функција"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> мора враћати %<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "дефиниција имплицитно деклариÑаног %qD"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared %qD"
msgid "definition of explicitly-defaulted %q+D"
msgstr "дефиниција имплицитно деклариÑаног %qD"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D претходно дефиниÑано овде"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "чланÑка функција %q#D није деклариÑана у клаÑи %qT"
@@ -30497,938 +30557,938 @@ msgstr "чланÑка функција %q#D није деклариÑана у
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "неиÑправно уÑпоÑтављање унутар клаÑе Ñтатичког чланÑког податка неинтегралног типа %qT"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "неиÑправно уÑпоÑтављање унутар клаÑе Ñтатичког чланÑког податка неинтегралног типа %qT"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "неиÑправно уÑпоÑтављање унутар клаÑе Ñтатичког чланÑког податка неинтегралног типа %qT"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "неиÑправно уÑпоÑтављање унутар клаÑе Ñтатичког чланÑког податка неинтегралног типа %qT"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ИСО Ц++ забрањује уÑпоÑтављање унутар клаÑе неконÑтантног Ñтатичког члана %qD"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ИСО Ц++ забрањује уÑпоÑтављање чланÑке конÑтанте %qD неинтегралног типа %qT"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "величина низа %qD има неинтегрални тип %qT"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "величина низа има неинтегрални тип %qT"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "негативна величина низа %qD"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "негативна величина низа"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ИСО Ц++ забрањује низ нулте величине %qD"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ИСО Ц++ забрањује низ нулте величине"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "величина низа %qD није интегралан конÑтатан израз"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "величина низа није интегралан конÑтатан израз"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array %qD"
msgid "ISO C++ forbids variable length array %qD"
msgstr "ИСО Ц++ забрањује низ променљиве величине %qD"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array"
msgid "ISO C++ forbids variable length array"
msgstr "ИСО Ц++ забрањује низ променљиве величине"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "преливање у димензији низа"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of %<auto%>"
msgstr "декларација %qs као низа функција"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of voids"
msgid "declaration of %qD as array of void"
msgstr "декларација %qs као низа празних"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of void"
msgstr "Ñтварање низа типа %qT"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of functions"
msgstr "декларација %qs као низа функција"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of functions"
msgstr "Ñтварање низа типа %qT"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of references"
msgstr "декларација %qs као низа функција"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of references"
msgstr "Ñтварање низа типа %qT"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of function members"
msgstr "декларација %qs као низа функција"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "creating array of function members"
msgstr "декларација %qs као низа функција"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "декларација %qD као вишедимензионог низа мора имати границе за Ñве димензије оÑим прве"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "вишедимензиони низ мора имати границе за Ñве димензије оÑим прве"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "навод повратног типа за конÑтруктор није иÑправан"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "навод повратног типа за деÑтруктор није иÑправан"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "наведен повратни тип за %<operator %T%>"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "неименована променљива или поље деклариÑано празним"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "променљива или поље деклариÑано празним"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "неиÑправна употреба одређеног имена %<::%D%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "неиÑправна употреба одређеног имена %<%T::%D%>"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "неиÑправна употреба одређеног имена %<%D::%D%>"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a class or namespace"
msgid "%q#T is not a class or a namespace"
msgstr "%qT није ни клаÑа ни именÑки проÑтор"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "тип %qT није изведен из типа %qT"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "декларација %qD као не-функције"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "декларација %qD као не-члана"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "недоÑтаје ид. декларатора; кориÑти Ñе резервиÑана реч %qD"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "дефиниција функције не декларише параметре"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD as %s"
msgid "declaration of %qD as %<typedef%>"
msgstr "декларација %qD као %s"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "декларација %q+D заклања параметар"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
#| msgid "a template-id may not appear in a using-declaration"
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "ид. шаблона не може да Ñе јави у декларацији употребе"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "два или више типова података у декларацији %qs"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "Ñукобљени наводиоци у декларацији %qs"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ИСО Ц++ забрањује декларацију %qs без типа"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_saveregs not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_saveregs није подржано овим циљем"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not support %<long long%>"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ИСО Ц++ не подржава %<long long%>"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%<signed%> или %<unsigned%> неиÑправни за %qs"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%<signed%> и %<unsigned%> наведени заједно за %qs"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long%> неиÑправно за %qs"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "%<long%> неиÑправно за %qs"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "%<short%> неиÑправно за %qs"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%> или %<short%> неиÑправни за %qs"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
#| msgid "%<long%> or %<short%> invalid for %qs"
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%> или %<short%> неиÑправни за %qs"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "%<long%> или %<short%> наведено уз char за %qs"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%<long%> и %<short%> наведени заједно за %qs"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
#| msgid "%<long%> or %<short%> invalid for %qs"
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<long%> или %<short%> неиÑправни за %qs"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "long, short, signed или unsigned употребљени неиÑправно за %qs"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "complex неиÑправно за %qs"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "одредбе ниÑу дозвољене уз декларацију %<operator %T%>"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "члан %qD не може бити деклариÑан и као виртуелни и као Ñтатички"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> није иÑправан декларатор"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "декларација typedef није иÑправна у декларацији параметра"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter %qs"
msgid "storage class specified for template parameter %qs"
msgstr "Ñкладишна клаÑа наведена за параметар %qs"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "наводиоци Ñкладишне клаÑе ниÑу иÑправни у декларацијама параметара"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
#| msgid "non-member %qs cannot be declared %<mutable%>"
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "не-члан %qs не може бити деклариÑан %<mutable%>"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
#| msgid "virtual outside class declaration"
msgid "%<virtual%> outside class declaration"
msgstr "virtual изван декларације клаÑе"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "вишеÑтруке Ñкладишне клаÑе у декларацији %qs"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "Ñкладишна клаÑа наведена за %qs"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "Ñкладишна клаÑа наведена за параметар %qs"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "угњеждена функција %qs деклариÑана као %<extern%>"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "декларација %qs на највишем нивоу наводи %<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "%qs доÑега функције имплицитно аутоматÑка и деклараÑина као %<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "наводиоци Ñкладишне клаÑе ниÑу иÑправни у декларацијама пријатељÑких функција"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs деклариÑано као функција која враћа функцију"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs деклариÑано као функција која враћа низ"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "деÑтруктор не може бити Ñтатичка чланÑка функција"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "конÑтруктор не може бити Ñтатичка чланÑка функција"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "деÑтруктори не могу бити кн-одређени"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "конÑтруктори не могу бити кн-одређени"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "конÑтруктор не може бити виртуелан"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function %qs"
msgid "can%'t initialize friend function %qs"
msgstr "не може Ñе уÑпоÑтављати пријатељÑка функција %qs"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "виртуелне функције не могу бити пријатељи"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "декларација пријатеља није у дефиницији клаÑе"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
#| msgid "can't define friend function %qs in a local class definition"
msgid "can%'t define friend function %qs in a local class definition"
msgstr "не може Ñе дефиниÑати пријатељÑка функција %qs у дефиницији локалне клаÑе"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "деÑтруктори не могу имати параметре"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "не може Ñе деклариÑати показивач на %q#T"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "не може Ñе деклариÑати упућивач на %q#T"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "не може Ñе деклариÑати показивач на члан %q#T"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to %q#T"
msgid "cannot declare reference to qualified function type %qT"
msgstr "не може Ñе деклариÑати упућивач на %q#T"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
#| msgid "cannot declare bit-field %qD with function type"
msgid "cannot declare pointer to qualified function type %qT"
msgstr "не може Ñе деклариÑати битÑко поље %qD Ñа функцијÑким типом"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "ид. шаблона %qD употребљен као декларатор"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "чланÑке функције Ñу имплицитно пријатељи Ñвојих клаÑа"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "Ñувишна одредба %<%T::%> на члану %qs"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "не може Ñе дефиниÑати чланÑка функција %<%T::%s%> унутар %<%T%>"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "не може Ñе деклариÑати функција %<%T::%s%> унутар %<%T%>"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "не може Ñе деклариÑати члан %<%T::%s%> унутар %qT"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, fuzzy, gcc-internal-format
#| msgid "data member %qD cannot be a member template"
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "чланÑки податак %qD не може бити чланÑки шаблон"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "величина низа %qs је превелика"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "чланÑки податак не може имати променљиво измењив тип %qT"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "параметар не може имати променљиво измењив тип %qT"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "Ñамо декларације конÑтруктора могу имати %<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "не-члан %qs не може бити деклариÑан %<mutable%>"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "не-објектни члан %qs не може бити деклариÑан %<mutable%>"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "функција %qs не може бити деклариÑана %<mutable%>"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "Ñтатичко %qs не може бити деклариÑано %<mutable%>"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "конÑтантно %qs не може бити деклариÑано %<mutable%>"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
#| msgid "function %qs cannot be declared %<mutable%>"
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "функција %qs не може бити деклариÑана %<mutable%>"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
#| msgid "typedef %q+D declared %<inline%>"
msgid "typedef declared %<auto%>"
msgstr "дефиниција типа %q+D деклариÑана као %<inline%>"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, fuzzy, gcc-internal-format
#| msgid "%Jtypedef name may not be a nested-name-specifier"
msgid "typedef name may not be a nested-name-specifier"
msgstr "%Jиме за дефиницију типа не може бити угњеждени-именÑки-наводилац"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ИСО Ц++ забрањује угњеждени тип %qD иÑтог имена као и обухватајућа клаÑа"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, fuzzy, gcc-internal-format
#| msgid "qualified function types cannot be used to declare %s functions"
msgid "qualified function types cannot be used to declare static member functions"
msgstr "одређени функцијÑки типови не могу бити коришћени за декларацију %s функција"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
#| msgid "qualified function types cannot be used to declare %s functions"
msgid "qualified function types cannot be used to declare free functions"
msgstr "одређени функцијÑки типови не могу бити коришћени за декларацију %s функција"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "одредбе типа наведене уз декларацију пријатељÑке клаÑе"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "%<inline%> наведено уз декларацију пријатељÑке клаÑе"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "шаблонÑки параметри не могу бити пријатељи"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "декларација пријатеља захтева реч class, тј. %<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "декларација пријатеља захтева реч class, тј. %<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "покушај да Ñе клаÑа %qT учини пријатељем глобалног доÑега"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "неиÑправне одредбе уз тип не-чланÑке функције"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "апÑтрактни декларатор %qT употребљен као декларација"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "не може Ñе кориÑтити %<::%> у декларацији параметра"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
#| msgid "parameter %q+D declared %<inline%>"
msgid "parameter declared %<auto%>"
msgstr "параметар %q+D деклариÑан као %<inline%>"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
#| msgid "static member %qD declared %<register%>"
msgid "non-static data member declared %<auto%>"
msgstr "Ñтатички члан %qD деклариÑан као %<register%>"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "неиÑправна употреба %<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
#| msgid "declaration of C function %q#D conflicts with"
msgid "declaration of function %qD in invalid context"
msgstr "декларација Ц функције %q#D коÑи Ñе Ñа"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "функција %qD деклариÑана виртуелном унутар уније"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD не може бити деклариÑана виртуелном, јер је увек Ñтатичка"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "очекивано одређено име у декларацији пријатеља за деÑтруктор %qD"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "декларација %qD као члана %qT"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
#| msgid "Constructor can't be %s"
msgid "a destructor cannot be %<constexpr%>"
msgstr "КонÑтруктор не може бити %s"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
#| msgid "expected qualified name in friend declaration for destructor %qD"
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "очекивано одређено име у декларацији пријатеља за деÑтруктор %qD"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "поље %qD има непотпун тип"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "име %qT има непотпун тип"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " у извођењу шаблона %qT"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qE није ни функција ни чланÑка функција; не може Ñе деклариÑати пријатељем"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
#| msgid "Intrinsic '%s' at %L cannot have an initializer"
msgid "constexpr static data member %qD must have an initializer"
msgstr "СопÑтвено ‘%s’ код %L не може имати уÑпоÑтављач"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
#| msgid "static member %qD declared %<register%>"
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "Ñтатички члан %qD деклариÑан као %<register%>"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "Ñкладишна клаÑа %<auto%> неиÑправна за функцију %qs"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "Ñкладишна клаÑа %<register%> неиÑправна за функцију %qs"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "Ñкладишна клаÑа %<__thread%> неиÑправна за функцију %qs"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
#| msgid "an asm-specification is not allowed on a function-definition"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "навод asm није дозвољен на дефиницији функције"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "%<static%> неиÑправно наведено за функцију %qs деклариÑану изван глобалног доÑега"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "наводилац %<inline%> није иÑправан за функцију %qs деклариÑану изван глобалног доÑега"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "виртуелна не-клаÑна функција %qs"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
#| msgid "No variable %qs defined in class %qs"
msgid "%qs defined in a non-class scope"
msgstr "Променљива %qs није дефиниÑана у клаÑи %qs"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
#| msgid "%qD was not declared in this scope"
msgid "%qs declared in a non-class scope"
msgstr "%qD није деклариÑано у овом доÑегу"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "не може Ñе деклариÑати Ñтатичка повезивоÑÑ‚ за чланÑку функцију %qD"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "не може Ñе деклариÑати Ñтатичка функција унутар друге функције"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "%<static%> не може бити употребљено при дефиниÑању (наÑупрот деклариÑања) Ñтатичког чланÑког податка"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "Ñтатички члан %qD деклариÑан као %<register%>"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "не може Ñе екÑплицитно деклариÑати Ñпољашња повезивоÑÑ‚ за члан %q#D"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D outside of class is not definition"
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "декларација %q#D изван клаÑе није дефиниција"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs уÑпоÑтављено и деклариÑано као %<extern%>"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs има и %<extern%> и уÑпоÑтављач"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "подразумевани аргумент за %q#D има тип %qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "подразумевани аргумент за параметар типа %qT има тип %qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
#| msgid "default argument %qE uses local variable %qD"
msgid "default argument %qE uses %qD"
msgstr "подразумевани аргумент %qE кориÑти локалну променљиву %qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "подразумевани аргумент %qE кориÑти локалну променљиву %qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
#| msgid "parameter %q+D has incomplete type"
msgid "parameter %qD has Java class type"
msgstr "параметар %q+D има непотпун тип"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "параметар %qD неиÑправно декларише тип метода"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, fuzzy, gcc-internal-format
#| msgid "parameter %qD includes %s to array of unknown bound %qT"
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "параметар %qD укључује %s у низ непознатих граница %qT"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, fuzzy, gcc-internal-format
#| msgid "parameter %qD includes %s to array of unknown bound %qT"
msgid "parameter %qD includes reference to array of unknown bound %qT"
@@ -31449,176 +31509,176 @@ msgstr "параметар %qD укључује %s у низ непознатиÑ
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "неиÑправан конÑтруктор; вероватно Ñте миÑлили %<%T (const %T&)%>"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qD не може бити деклариÑано унутар именÑког проÑтора"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD не може бити деклариÑано Ñтатичко"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD мора бити неÑтатичка чланÑка функција"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD мора бити или неÑтатичка чланÑка функција или не-чланÑка функција"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD мора имати аргумент клаÑног или набројивог типа"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "претварање у %s%s никад неће кориÑтити оператор претварања типа"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to void will never use a type conversion operator"
msgstr "претварање у %s%s никад неће кориÑтити оператор претварања типа"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "претварање у %s%s никад неће кориÑтити оператор претварања типа"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to the same type will never use a type conversion operator"
msgstr "претварање у %s%s никад неће кориÑтити оператор претварања типа"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "претварање у %s%s никад неће кориÑтити оператор претварања типа"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a base class will never use a type conversion operator"
msgstr "претварање у %s%s никад неће кориÑтити оператор претварања типа"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ИСО Ц++ забрањује препуњавање оператора ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qD не може имати променљив број аргумената"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "поÑтфикÑно %qD мора узимати %<int%> као аргумент"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "поÑтфикÑно %qD мора узимати %<int%> као други аргумент"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD мора узимати ниједан или један аргумент"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD мора узимати један или два аргумента"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "префикÑно %qD треба да враћа %qT"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "поÑтфикÑно %qD треба да враћа %qT"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD мора узимати %<void%>"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD мора узимати тачно један аргумент"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD мора узимати тачно два аргумента"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "кориÑнички дефиниÑано %qD увек израчунава оба аргумента"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD треба да враћа по вредноÑÑ‚"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD не може имати подразумеване аргументе"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "употреба параметра шаблонÑког типа %qT поÑле %qs"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization %qD for %q+D"
msgid "using alias template specialization %qT after %qs"
msgstr "двоÑмиÑлена Ñпецијализација шаблона %qD за %q+D"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "употреба typedef-имена %qD поÑле %qs"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
#| msgid "%q+D has a previous declaration here"
msgid "%qD has a previous declaration here"
msgstr "%q+D има претходну декларацију овде"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "%qT Ñе помиње као %qs"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T има претходну декларацију овде"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT Ñе помиње као набрајање"
@@ -31630,89 +31690,89 @@ msgstr "%qT Ñе помиње као набрајање"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "потребан шаблонÑки аргумент за %<%s %T%>"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD има иÑто име као и клаÑа у којој је деклариÑано"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "двоÑмиÑлено упућивање на %qD"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "употреба набрајања %q#D без претходне декларације"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "поновљена декларација %qT као не-шаблона"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "претходна декларација %q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "неиÑправна изведена унија %qT"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "јаванÑка клаÑа %qT не може имати вишеÑтруке оÑнове"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "јаванÑка клаÑа %qT не може имати виртуелне оÑнове"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "тип оÑнове %qT није клаÑа или Ñтруктура"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "недефиниÑан рекурзивни тип %qT"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "неиÑправан удвоÑтручен тип оÑнове %qT"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
#| msgid "%Jprevious definition here"
msgid "previous definition here"
msgstr "%Jпретходна дефиниција је овде"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -31721,78 +31781,78 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "ниједан интегрални тип не може предÑтављати Ñве вредноÑти набрајача за %qT"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for %qE is not an integer constant"
msgid "enumerator value for %qD is not an integer constant"
msgstr "вредноÑÑ‚ набрајача за %qE није целобројна конÑтанта"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
#| msgid "ISO C restricts enumerator values to range of %<int%>"
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "ИСО Ц ограничава вредноÑти набрајача на опÑег %<int%>"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "преливање у вредноÑтима набрајача код %qD"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for %qE is not an integer constant"
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "вредноÑÑ‚ набрајача за %qE није целобројна конÑтанта"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "повратни тип %q#T није потпун"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
#| msgid "return type is an incomplete type"
msgid "return type has Java class type %q#T"
msgstr "повратни тип је непотпун тип"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> треба да враћа упућивач на %<*this%>"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "нема претходне декларације за %q+D"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, fuzzy, gcc-internal-format
#| msgid "invalid member function declaration"
msgid "invalid function declaration"
msgstr "неиÑправна декларација чланÑке функције"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "параметар %qD деклариÑан празним"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label %q+D defined but not used"
msgid "parameter %q+D set but not used"
msgstr "етикета %q+D дефиниÑана али неупотребљена"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "неиÑправна декларација чланÑке функције"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD је већ дефиниÑано у клаÑи %qT"
@@ -31832,7 +31892,7 @@ msgstr "не може Ñе обриÑати функција. Само покаÐ
msgid "deleting %qT is undefined"
msgstr "бриÑање %qT није дефиниÑано"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "декларација шаблона %q#D"
@@ -32101,7 +32161,7 @@ msgstr "непотпун тип %qT употребљен у угњежденом
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "двоÑмиÑлено упућивање на %<%T::%D%>"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD није члан у %qT"
@@ -32426,7 +32486,7 @@ msgstr "тип %qT није непоÑредна оÑнова од %qT"
msgid "bad array initializer"
msgstr "лош уÑпоÑтављач низа"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%qT is not a class type"
@@ -32518,69 +32578,69 @@ msgstr "неконÑтантан Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° у уÑпоÑтављач
msgid "parenthesized initializer in array new"
msgstr "игноришу Ñе атрибути поÑле заграђеног уÑпоÑтављача"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "величина у низовном new мора бити интегралног типа"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new Ñе не може применити на упућивачки тип"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new Ñе не може применити на функцијиÑки тип"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "позив јаванÑком конÑтруктору док је %<jclass%> недефиниÑано"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
#| msgid "can't find %<class$%> in %qT"
msgid "can%'t find %<class$%> in %qT"
msgstr "не могу да нађем %<class$%> у %qT"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "уÑпоÑтављач Ñе прерано окончава"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "у уÑпоÑтављачу Ñе не могу уÑпоÑтављати вишедимензиони низови"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "откривен могућ проблем у позиву оператора delete:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, fuzzy, gcc-internal-format
#| msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined."
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "ни деÑтруктор, ни клаÑи поÑебан оператор delete неће бити позван, чак и ако Ñу деклариÑани када Ñе клаÑа дефинише."
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "непозната величина низа за delete"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "тип уз векторÑко delete није ни показивачки ни низовни"
@@ -32640,42 +32700,42 @@ msgstr "%qD нема аргументе који завиÑе од шаблонÑ
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(ако употребите %<-fpermissive%>, Г++ ће прихватити овакав кôд, али дозвољавање недеклариÑаног имена је превазиђено)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "изоÑтављени Ñредњи операнд у %<?:%> не може бити запетљан"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "запетљано име за %qD биће измењено у будућим верзијама ГЦЦа"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -32768,64 +32828,64 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
#| msgid "repeated using declaration %q+D"
msgid "defaulted declaration %q+D"
msgstr "поновљена декларација коришћења %q+D"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
#| msgid "array does not match the region tree"
msgid "does not match expected signature %qD"
msgstr "низ не одговара Ñтаблу облаÑти"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "a template cannot be defaulted"
msgstr "шаблонÑки параметри не могу бити пријатељи"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
#| msgid "%q+#D cannot be declared"
msgid "%qD cannot be defaulted"
msgstr "%q+#D Ñе не може деклариÑати"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
#| msgid "file ends in default argument"
msgid "defaulted function %q+D with default argument"
msgstr "датотека Ñе завршава подразумеваним аргументом"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "раÑпоред в-табеле за клаÑу %qT можда не поштује ÐБИ, и може Ñе изменити у будућим верзијама ГЦЦа уÑлед имплицитног виртуелног деÑтруктора"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "%q#D conflicts with previous using declaration %q#D"
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D Ñе коÑи Ñа претходном декларацијом употребе %q#D"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+D"
msgid "previous declaration %q+#D"
msgstr "претходна декларација %q+D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "поновљена декларација %<wchar_t%> као %qT"
@@ -32836,250 +32896,250 @@ msgstr "поновљена декларација %<wchar_t%> као %qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "неиÑправна поновљена декларација %q+D"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "као %qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
#| msgid "redeclaration of %q+D with no linkage"
msgid "declaration of %q#D with C language linkage"
msgstr "поновљена декларација %q+D без повезивоÑти"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
#| msgid "Generate code to check exception specifications"
msgid "due to different exception specifications"
msgstr "Створи кôд за проверу одредница изузетака"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "неÑлагање типа Ñа претходном Ñпољашњом декларацијом %q#D"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "претходна Ñпољашња декларација %q+#D"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
#| msgid "extern declaration of %q#D doesn't match"
msgid "extern declaration of %q#D doesn%'t match"
msgstr "Ñпољашња декларација %q#D не Ñлаже Ñе"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "глобална декларација %q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "декларација %q#D заклања параметар"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "декларација %q+D заклања параметар"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "декларација %qD заклања претходну локалну"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "декларација %qD заклања члан у „this“"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "декларација %qD заклања глобалну декларацију"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "измењена потрага имена за %qD"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " одговара овом %q+D по правилима ИСО Ñтандарда"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " одговара овом %q+D по Ñтарим правилима"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
#| msgid "name lookup of %qD changed for new ISO %<for%> scoping"
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "измењена потрага %qD према новом доÑезању ИСО %<for%>"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " не може Ñе кориÑтити заÑтарело везивање код %q+D јер има деÑтруктор"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " кориÑти Ñе заÑтарело везивање код %q+D"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, fuzzy, gcc-internal-format
#| msgid "(if you use -fpermissive G++ will accept your code)"
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(Г++ ће прихватити ово ако задате -fpermissive)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D Ñкрива конÑтруктор за %q#T"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D Ñе коÑи Ñа претходном декларацијом употребе %q#D"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "претходна нефункцијÑка декларација %q+#D"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "коÑи Ñе Ñа функцијÑком декларацијом %q#D"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT није именÑки проÑтор"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "декларација употребе не може навеÑти ид. шаблона. Покушајте %<using %D%>"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "именÑки проÑтор %qD није дозвоље у декларацији употребе"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "%qD није деклариÑано"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD је већ деклариÑано у овом доÑегу"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "декларација употребе за не-члан у доÑегу клаÑе"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> именује деÑтруктор"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%> именује конÑтруктор"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> именује конÑтруктор у %qT"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "нема члана који одговара %<%T::%D%> у %q#T"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "декларација %qD није у именÑком проÑтору који окружује %qD"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "екÑплицитна одредба у декларацији %qD"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD треба да је деклариÑано унутар %qD"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute requires a single NTBS argument"
msgid "%qD attribute requires a single NTBS argument"
msgstr "атрибут %qs захтева тачно један ÐТБС аргумент"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "атрибутÑка директива %qD игнориÑана"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "Ð°Ð»Ð¸Ñ˜Ð°Ñ Ð¸Ð¼ÐµÐ½Ñког проÑтора %qD није дозвољен овде, претпоÑтављам %qD"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "јако using има ÑмиÑла Ñамо у доÑегу именÑког проÑтора"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "текући именÑки проÑтор %qD не обухвата јако употребљени именÑки проÑтор %qD"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
@@ -33088,23 +33148,23 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, fuzzy, gcc-internal-format
#| msgid " %q+#D"
msgid " %qE"
msgstr " %q+#D"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr "потрага у завиÑноÑти од аргумента даје %q+D"
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX entering pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX leaving pop_everything ()\n"
@@ -33230,7 +33290,7 @@ msgstr "не могу Ñе дефиниÑати нови типови у повÑ
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(можда недоÑтаје тачка-зарез поÑле дефиниције %qT)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT није шаблон"
@@ -33251,7 +33311,7 @@ msgstr "неиÑправан ид. шаблона"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "%s не може да Ñе јави у конÑтантном изразу"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr "претапање у тип који није ни интегрални ни набројиви не може Ñе јавити у изразу конÑтанте"
@@ -33412,134 +33472,134 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "Ðргумент-по-вредноÑти код %L није дозвољен у овом контекÑту"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find numeric literal operator %qD"
msgstr "не могу да нађем региÑтар за проÑипање у клаÑи %qs"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find string literal operator %qD"
msgstr "не могу да нађем региÑтар за проÑипање у клаÑи %qs"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "празна декларација"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
#| msgid "-pipe not supported"
msgid "fixed-point types not supported in C++"
msgstr "-pipe није подржано"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ИСО Ц++ забрањује витичаÑто заграђене групе унутар израза"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
#| msgid "statement-expressions are allowed only inside functions"
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "наредбени изрази дозвољени Ñу Ñамо унутар функција"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected primary-expression"
msgstr "очекиван је израз"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%<this%> Ñе не може употребити у овом контекÑту"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
#| msgid "Objective-C declarations may only appear in global scope"
msgid "a template declaration cannot appear at block scope"
msgstr "декларације објективног Ц-а могу Ñе јављати Ñамо у глобалном доÑегу"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "локална променљива %qD не може Ñе појавити у овом контекÑту"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected id-expression"
msgstr "очекиван је израз"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "доÑег %qT пре %<~%> није име клаÑе"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "декларација %<~%T%> као члана у %qT"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "typedef-име %qD употребљено као декларатор деÑтруктора"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
#| msgid "expected specifier-qualifier-list"
msgid "expected unqualified-id"
msgstr "очекивана је лиÑта наводилаца-одредби"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
#| msgid "%qT resolves to %qT, which is not an enumeration type"
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "%qT Ñе разрешава до %qT, што није набројиви тип"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qD није шаблон"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected nested-name-specifier"
msgstr "очекивани Ñу наводиоци декларације"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in casts"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a %<typeid%> expression"
@@ -33547,646 +33607,646 @@ msgstr "не могу Ñе дефиниÑати нови типови у повÑ
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ИСО Ц++ забрањује Ñложене конÑтанте"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qE нема клаÑни тип"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "неиÑправна употреба %qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "%<%D::%D%> is not a member of %qT"
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%> није члан у %qT"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ИСО Ц++ не дозвољава утврђене уÑпоÑтављаче"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-expression"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "граница низа забрањена је поÑле заграђеног ид. типа"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "покушајте да уклоните заграде око ид. типа"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-type-id"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "израз у декларатору new мора имати интегрални или набројиви тип"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "употреба ÑтаровремÑког претапања"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
#| msgid "suggest parentheses around && within ||"
msgid "suggest parentheses around %<>>%> expression"
msgstr "предложи заграде око && унутар ||"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ИСО Ц++ не дозвољава утврђене уÑпоÑтављаче"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of capture-list"
msgstr "Ðеочекиван крај модула"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ИСО Ц++ не дозвољава утврђене уÑпоÑтављаче"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "увећање Ñамо-за-читање променљиве %qD"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%q+#D declared here"
msgstr "%q+D деклариÑано овде"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
#| msgid "default argument given for parameter %d of %q#D"
msgid "default argument specified for lambda parameter"
msgstr "подразумевани аргумент дат за параметар %d у %q#D"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected labeled-statement"
msgstr "очекивана је наредба"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "етикета Ñлучаја %qE ван наредбе пребацивања"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> names constructor in %qT"
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> именује конÑтруктор у %qT"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "Discover pure and const functions"
msgid "compound-statement in constexpr function"
msgstr "Откривај чиÑте и конÑтантне функције"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected selection-statement"
msgstr "очекивана је декларација или наредба"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in conditions"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "наредба израза има непотпун тип"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected iteration-statement"
msgstr "очекивана је декларација или наредба"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ИСО Ц++ забрањује рачунÑко goto"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected jump-statement"
msgstr "очекивана је наредба"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "Ñувишно %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "забрањено је мешање декларација и дефиниција функција"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "%<friend%> употребљено изван клаÑе"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
#| msgid "pure-specifier on function-definition"
msgid "decl-specifier invalid in condition"
msgstr "наводилац pure на дефиницији функције"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "дефиниција клаÑе не може бити деклариÑана пријатељем"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr "шаблони не могу бити виртуелни"
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid linkage-specification"
msgstr "неиÑправан навод оÑновне клаÑе"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<decltype%> expressions"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<this%> in non-member function"
msgid "invalid use of %<auto%> in conversion operator"
msgstr "неиÑправна употреба %<this%> у нечланÑкој функцији"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "only constructors take base initializers"
msgid "only constructors take member initializers"
msgstr "Ñамо конÑтруктори узимају уÑпоÑтављаче оÑнове"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
#| msgid "missing initializer for member %qD"
msgid "cannot expand initializer for member %<%D%>"
msgstr "недоÑтаје уÑпоÑтављач за члан %qD"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "Ñтатичка декларација %q+D прати неÑтатичку декларацију"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "анахрониÑтични ÑтаровремÑки уÑпоÑтављач оÑновне клаÑе"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "кључна реч %<typename%> није дозвољена у овом контекÑту (уÑпоÑтављач одређеног члана имплицитно је тип)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected suffix identifier"
msgstr "очекиван је идентификатор"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "неочекиван операнд"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "кључна реч %<export%> није имплементирана, игнорише Ñе"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "template parameter pack %qD cannot have a default argument"
msgstr "%qD не може имати подразумеване аргументе"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter pack cannot have a default argument"
msgstr "шаблонÑки параметри не могу бити пријатељи"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter packs cannot have default arguments"
msgstr "шаблонÑки параметри не могу бити пријатељи"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-id"
msgstr "очекивана је наредба"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<<%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%<<::%> не може започети лиÑту шаблонÑких аргумената"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> је другачије напиÑано %<[%>. Убаците размак између %<<%> и %<::%>"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr "грешка у рашчлањивању лиÑте шаблонÑких аргумената"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-name"
msgstr "очекивана је наредба"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "%qD употребљено као шаблон, а није"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "употребите %<%T::template %D%> да назначите да је шаблон"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers or %<...%>"
msgid "expected parameter pack before %<...%>"
msgstr "очекивани Ñу наводиоци декларације или %<...%>"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-argument"
msgstr "очекивана је наредба"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid non-type template argument"
msgstr "неиÑправан типÑки аргумент"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "екÑплицитно извођење нешаблонÑког типа %qT"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "екÑплицитно извођење нешаблонÑког типа %qT"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "Ñпецијализација шаблона Ñа Ц повезивошћу"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected type specifier"
msgstr "очекивани Ñу наводиоци декларације"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "expected template-id for type"
msgstr "Очекиван је тип израза"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected type-name"
msgstr "Очекивано је име"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
#| msgid "declaration does not declare anything"
msgid "declaration %qD does not declare anything"
msgstr "декларација ништа не декларише"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "атрибут Ñе игнорише за клаÑе без примерака"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "атрибут Ñе игнорише при извођењу шаблона"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr "атрибут Ñе игнорише при предоченом-наводиоцу-типа који није унапредна декларација"
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%qD is an enumeration template"
msgstr "%qD није шаблон функције"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a namespace-name"
msgid "%qD is not an enumerator-name"
msgstr "%qD није име именÑког проÑтора"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<;%> or %<{%>"
msgstr "очекивано је %<,%> или %<;%>"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
#| msgid "Enable automatic template instantiation"
msgid "cannot add an enumerator list to a template instantiation"
msgstr "Укључи аутоматÑко извођење шаблона"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD in %qD which does not enclose %qD"
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "декларација %qD у %qD која не обухвата %qD"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "декларација %qD у %qD која не обухвата %qD"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "вишеÑтруке дефиниције %q#T"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD није име именÑког проÑтора"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected namespace-name"
msgstr "очекивано је име клаÑе"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma%> is not allowed here"
msgid "%<namespace%> definition is not allowed here"
msgstr "%<#pragma%> није дозвољена овде"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "ид. шаблона не може да Ñе јави у декларацији употребе"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in alias template declarations"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
#| msgid "%s: function definition not converted\n"
msgid "a function-definition is not allowed here"
msgstr "%s: дефиниција функције није претворена\n"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "навод asm није дозвољен на дефиницији функције"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "атрибути ниÑу дозвољени на дефиницији функције"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected initializer"
msgstr "очекиван је идентификатор"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
#| msgid "derived type declaration"
msgid "invalid type in declaration"
msgstr "декларација изведеног типа"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, gcc-internal-format
msgid "initializer provided for function"
msgstr "уÑпоÑтављач дат за функцију"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "игноришу Ñе атрибути поÑле заграђеног уÑпоÑтављача"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "граница низа није целобројна конÑтанта"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type %qT"
msgid "cannot define member of dependent typedef %qT"
msgstr "Ñтварање показивача на члан упућивачког типа %qT"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> is not a type"
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%D%> није тип"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "неиÑправна употреба конÑтруктора као шаблона"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "употреба %<%T::%D%> умеÑто %<%T::%D%> за именовање конÑтруктора у одређеном имену"
@@ -34195,275 +34255,275 @@ msgstr "употреба %<%T::%D%> умеÑто %<%T::%D%> за именоваÑ
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
#| msgid "Invalid declaration"
msgid "invalid declarator"
msgstr "ÐеиÑправна декларација"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected declarator"
msgstr "очекивани Ñу наводиоци декларације"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD је именÑки проÑтор"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type %qT"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "Ñтварање показивача на члан неклаÑног типа %qT"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "неочекиван операнд"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "удвоÑтручена кн-одредба"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "duplicate cv-qualifier"
msgid "duplicate virt-specifier"
msgstr "удвоÑтручена кн-одредба"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid use of %<auto%>"
msgstr "неиÑправна употреба %<::%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in template arguments"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected type-specifier"
msgstr "очекиван је идентификатор"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<,%> or %<...%>"
msgstr "очекивано је %<:%> или %<...%>"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in parameter types"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "превазиђена употреба подразумеваног аргумента као параметра не-функције"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "подразумевани аргументи Ñу дозвољени Ñамо за параметре функција"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "parameter pack %qD cannot have a default argument"
msgstr "%qD не може имати подразумеване аргументе"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "parameter pack cannot have a default argument"
msgstr "%qD не може имати подразумеване аргументе"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ИСО Ц++ не дозвољава утврђене уÑпоÑтављаче"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ИСО Ц++ не дозвољава утврђене уÑпоÑтављаче"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-name"
msgstr "очекивано је име клаÑе"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after class definition"
msgstr "%q+D деклариÑано уткано поÑле Ñвоје дефиниције"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after struct definition"
msgstr "%q+D деклариÑано уткано поÑле Ñвоје дефиниције"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
#| msgid "Unexpected junk after function declaration at %C"
msgid "expected %<;%> after union definition"
msgstr "Ðеочекивано Ñмеће поÑле декларације функције код %C"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<{%> or %<:%>"
msgstr "очекивано је %<,%> или %<;%>"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "не могу да нађем датотеку за клаÑу %s"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
#| msgid "friend declaration does not name a class or function"
msgid "qualified name does not name a class"
msgstr "декларација пријатеља не именује ни клаÑу ни функцију"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "неиÑправно име клаÑе у декларацији %qD"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
#| msgid "extra qualification ignored"
msgid "extra qualification not allowed"
msgstr "Ñувишне одредбе Ñе игноришу"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "екÑплицитној Ñпецијализацији мора претходити %<template <>%>"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
#| msgid "non-template %qD used as template"
msgid "function template %qD redeclared as a class template"
msgstr "%qD употребљено као шаблон, а није"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "претходна дефиниција %q+#T"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-key"
msgstr "очекивано је име клаÑе"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, fuzzy, gcc-internal-format
#| msgid "a class-key must be used when declaring a friend"
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "при декларацији пријатеља мора бити употребљена кључна реч class"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "декларација пријатеља не именује ни клаÑу ни функцију"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "наводилац pure на дефиницији функције"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
#| msgid "expected %<(%> or end of line"
msgid "expected %<;%> at end of member declaration"
msgstr "очекивано је %<(%> или крај линије"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr ""
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "кључна реч %<typename%> није дозвољена изван шаблона"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "кључна реч %<typename%> није дозвољена у овом контекÑту (оÑновна клаÑа је имплицитно тип)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in an exception-specification"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in exception-declarations"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of %q+D"
msgid "invalid declaration of %<%T::%E%>"
msgstr "неиÑправна поновљена декларација %q+D"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "премало лиÑта параметара шаблона"
@@ -34472,355 +34532,355 @@ msgstr "премало лиÑта параметара шаблона"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "превише лиÑта шаблонÑких параметера"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "именоване повратне вредноÑти ниÑу више подржане"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr "неиÑправна декларација чланÑког шаблона у локалној клаÑи"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "шаблон Ñа Ц повезивошћу"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid explicit specialization"
msgstr "неиÑправан навод оÑновне клаÑе"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
#| msgid "template declaration of %qs"
msgid "template declaration of %<typedef%>"
msgstr "декларација шаблона %qs"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
#| msgid "explicit specialization in non-namespace scope %qD"
msgid "explicit template specialization cannot have a storage class"
msgstr "екÑплицитна Ñпецијализација у не-именÑкопроÑторном доÑегу %qD"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
#| msgid "%H%<>>%> should be %<> >%> within a nested template argument list"
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%H%<>>%> треба да је %<> >%> унутар угњеждене лиÑте шаблонÑких аргумената"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "Ñувишно %<>>%>, кориÑтите %<>%> за затварање лиÑте шаблонÑких аргумената"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "неиÑправна употреба %qD у одредници повезивоÑти"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> пре %qD"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<new%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<delete%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<return%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<extern%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected %<static_assert%>"
msgstr "очекивана је наредба"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<decltype%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<operator%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<class%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<template%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<namespace%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<using%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<asm%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<try%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<catch%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<throw%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<__label__%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@try%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@synchronized%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@throw%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, fuzzy, gcc-internal-format
#| msgid "expected %<none%> or %<shared%>"
msgid "expected %<__transaction_relaxed%>"
msgstr "очекивано је %<none%> или %<shared%>"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<::%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<...%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<*%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<~%>"
msgstr "очекивано је %<{%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<:%> or %<::%>"
msgstr "очекивано је %<:%> или %<...%>"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%>, %<;%> or %<}%>"
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "очекивано је %<,%>, %<;%> или %<}%>"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "ознака %qs употребљена при именовању %q#T"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously declared here"
msgid "%q#T was previously declared here"
msgstr "%q+#D претходно деклариÑано овде"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qD поново деклариÑано Ñа другачијим приÑтупом"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "%<template%> (као разјашњење двоÑмиÑленоÑти) дозвољено је Ñамо унутар шаблона"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "датотека Ñе завршава подразумеваним аргументом"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "конÑтрукција %<@%D%> објективног Ц++а на погрешном меÑту"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "%<@encode%> мора навеÑти тип као аргумент"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr "неиÑправно име Ñелектора објективног Ц++а"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
#| msgid "Class or interface declaration expected"
msgid "objective-c++ method declaration is expected"
msgstr "Очекивана је декларација клаÑе или Ñучеља"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "method attributes must be specified at the end"
msgstr "%Jатрибут одељка Ñе не може навеÑти за локалне променљиве"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
#| msgid "%Hinvalid type for iteration variable %qE"
msgid "invalid type for instance variable"
msgstr "%HнеиÑправан тип променљиве итерације %qE"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "очекиван је идентификатор поÑле %<@protocol%>"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "атрибут %qE Ñе игнорише за %qE"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid type for property"
msgstr "неиÑправан типÑки аргумент"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
#| msgid "iteration variable %qs should not be reduction"
msgid "iteration variable %qD should not be reduction"
msgstr "не би требало да променљива итерације %qs буде Ñвођена"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
#| msgid "not enough type information"
msgid "not enough collapsed for loops"
msgstr "нема довољно података о типу"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "Ñмеће на крају %<#pragma GCC pch_preprocess%>"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "унутармодулÑке оптимизације ниÑу имплеметиране за Ц++"
@@ -34920,69 +34980,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD није шаблон функције"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "ид. шаблона %qD за %q+D не одговара ниједној декларацији шаблона"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "двоÑмиÑлена Ñпецијализација шаблона %qD за %q+D"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "ид. шаблона %qD у декларацији примарног шаблона"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "лиÑта шаблонÑких параметара употребљена у екÑплицитном извођењу"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "дефиниција дата за екÑплицитно извођење"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "превише лиÑта шаблонÑких параметара у декларацији %qD"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "премало лиÑта шаблонÑких параметара у декларацији %qD"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "екÑплицитна Ñпецијализација %qD мора бити уведена помоћу %<template <>%>"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "делимична Ñпецијализација шаблона функције %qD није дозвољена"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "наведен подразумевани аргумент у екÑплицитној Ñпецијализацији"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD није шаблонÑка функција"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD није деклариÑано у %qD"
@@ -34995,83 +35055,83 @@ msgstr "%qD није деклариÑано у %qD"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "Ñпецијализација имплицитно деклариÑане поÑебне чланÑке функције"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "нема чланÑке функције %qD деклариÑане у %qT"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
#| msgid "<anonymous>"
msgid " <anonymous>"
msgstr "<анонимно>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "декларација %q+#D"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr " заклања шаблонÑки параметар %q+#D"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "шаблонÑки параметри неиÑкоришћени у делимичној Ñпецијализацији:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "делимична Ñпецијализација %qT не Ñпецијализује ниједан шаблонÑки аргумент"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "шаблонÑки аргумент %qE уплиће шаблонÑке параметре"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
#| msgid "type %qT of template argument %qE depends on template parameter(s)"
msgid "type %qT of template argument %qE depends on a template parameter"
@@ -35081,57 +35141,57 @@ msgstr[1] "тип %qT шаблонÑког аргумента %qE завиÑи Ð
msgstr[2] "тип %qT шаблонÑког аргумента %qE завиÑи од шаблонÑких параметара"
msgstr[3] "тип %qT шаблонÑког аргумента %qE завиÑи од шаблонÑких параметара"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
#| msgid "specialization %qT after instantiation %qT"
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "Ñпецијализација %qT поÑле извођења %qT"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "нема подразумеваног аргумента за %qD"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "подразумевани аргументи ниÑу дозвољени у декларацији пријатељÑке Ñпецијализације шаблона %qD"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend declarations"
msgstr "подразумевани аргументи ниÑу дозвољени у декларацији пријатељÑке Ñпецијализације шаблона %qD"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, fuzzy, gcc-internal-format
#| msgid "template parameters not used in partial specialization:"
msgid "default template arguments may not be used in partial specializations"
msgstr "шаблонÑки параметри неиÑкоришћени у делимичној Ñпецијализацији:"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type %qT has type %qT"
msgid "default argument for template parameter for class enclosing %qD"
msgstr "подразумевани аргумент за параметар типа %qT има тип %qT"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "шаблонÑка клаÑа без имена"
@@ -35139,7 +35199,7 @@ msgstr "шаблонÑка клаÑа без имена"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "деÑтруктор %qD деклариÑан као чланÑки шаблон"
@@ -35149,59 +35209,59 @@ msgstr "деÑтруктор %qD деклариÑан као чланÑки ша
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "неиÑправна декларација шаблона %qD"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "шаблонÑка дефиниција нешаблонÑког %q#D"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "очекивах %d нивоа шаблонÑких параметара за %q#D, добих %d"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "добих %d шаблонÑких параметара за %q#D"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "добих %d шаблонÑких параметара за %q#T"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " а потребно је %d"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
#| msgid "template parameters do not match template"
msgid "template arguments to %qD do not match original template %qD"
msgstr "параметри шаблона Ñе не поклапају Ñа шаблоном"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, fuzzy, gcc-internal-format
#| msgid "enclosing class templates are not explicitly specialized"
msgid "use template<> for an explicit specialization"
msgstr "обухватајући шаблони клаÑа не бивају екÑплицитно Ñпецијализовани"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT није шаблонÑки тип"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "наводиоци шаблона ниÑу задати у декларацији %qD"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qD used without template parameters"
msgid "redeclared with %d template parameter"
@@ -35211,7 +35271,7 @@ msgstr[1] "%qD употребљено без параметара шаблона
msgstr[2] "%qD употребљено без параметара шаблона"
msgstr[3] "%qD употребљено без параметара шаблона"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+#D here"
msgid "previous declaration %q+D used %d template parameter"
@@ -35221,12 +35281,12 @@ msgstr[1] "претходном декларацијом %q+#D овде"
msgstr[2] "претходном декларацијом %q+#D овде"
msgstr[3] "претходном декларацијом %q+#D овде"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "шаблонÑки параметар %q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "поново деклариÑано овде као %q#D"
@@ -35235,282 +35295,282 @@ msgstr "поново деклариÑано овде као %q#D"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "поновљена дефиниција подразумеваног аргумента за %q#D"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
#| msgid "%J original definition appeared here"
msgid "original definition appeared here"
msgstr "%J првобитна дефиниција налази Ñе овде"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер објекат %qD нема Ñпољашњу повезивоÑÑ‚"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qE није иÑправан шаблонÑки аргумент типа %qT јер %qD нема Ñпољашњу повезивоÑÑ‚"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер је показивач"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
#| msgid "(a pointer to member can only be formed with %<&%E%>)"
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "(показивач на члан може бити формиран Ñамо помоћу %<&%E%>)"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for %q#D"
msgid " couldn't deduce template parameter %qD"
msgstr "добих %d шаблонÑких параметара за %q#D"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types %q#T and %q#T"
msgid " mismatched types %qT and %qT"
msgstr "поређење између типова %q#T и %q#T"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "template argument %qE involves template parameter(s)"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "шаблонÑки аргумент %qE уплиће шаблонÑке параметре"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
#| msgid "%qs is not valid for %qs"
msgid " %qE is not equivalent to %qE"
msgstr "%qs није иÑправно за %qs"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, fuzzy, gcc-internal-format
#| msgid "Inconsistent ranks for operator at %L and %L"
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr "ÐеуÑаглашени рангови за оператор код %L и %L"
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
#| msgid "partial specialization %qT does not specialize any template arguments"
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "делимична Ñпецијализација %qT не Ñпецијализује ниједан шаблонÑки аргумент"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
#| msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgid " member function type %qT is not a valid template argument"
msgstr "Ðаредбена функција ‘%s’ код %L није дозвољена као Ñтварни аргумент"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "не може Ñе претворити из типа %qT у %qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
#| msgid "%qT is an ambiguous base of %qT"
msgid " %qT is an ambiguous base class of %qT"
msgstr "%qT је двоÑмиÑлена оÑнова за %qT"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type %qT is not derived from type %qT"
msgid " %qT is not derived from %qT"
msgstr "тип %qT није изведен из типа %qT"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "не може Ñе %s показивач на непотпуни тип %qT"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "argument of type %qT does not match %qT"
msgid " template argument %qE does not match %qD"
msgstr "аргумент типа %qT не поклапа Ñе Ñа %qT"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid " could not resolve address from overloaded function %qE"
msgstr "%s не може да разреши адреÑу препуњене функције"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер Ñе конÑтантне ниÑке не могу кориÑтити у овом контекÑту"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
#| msgid "template argument for %qD uses local type %qT"
msgid "in template argument for type %qT "
msgstr "шаблонÑки аргумент за %qD кориÑти локални тип %qT"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qD није иÑправан шаблонÑки аргумент јер је %qD променљива, а не адреÑа неке променљиве"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE није иÑправан шаблонÑки аргумент типа %qT јер %qE није променљива"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qE није иÑправан шаблонÑки аргумент типа %qT јер %qD нема Ñпољашњу повезивоÑÑ‚"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE није иÑправан шаблонÑки аргумент типа %qT јер %qE није променљива"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер Ñе коÑи Ñа кн-одредбом"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер није л-вредноÑÑ‚"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is a non-constant expression"
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер није конÑтантан израз"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер објекат %qD нема Ñпољашњу повезивоÑÑ‚"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер објекат %qD нема Ñпољашњу повезивоÑÑ‚"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер је показивач"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "покушајте Ñа %qE умеÑто тога"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE није иÑправан шаблонÑки аргумент за тип %qT јер је типа %qT"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "Ñтандардна претварања ниÑу дозвољена у овом контекÑту"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
#| msgid "applying attributes to template parameters is not implemented"
msgid "ignoring attributes on template argument %qT"
msgstr "примењивање атрибута на шаблонÑке параметре није имплементирано"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, fuzzy, gcc-internal-format
#| msgid "name of class shadows template template parameter %qD"
msgid "injected-class-name %qD used as template template argument"
msgstr "име клаÑе заклања шаблонÑки шаблонÑки параметар %qD"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "invalid use of destructor %qD as a type"
msgid "invalid use of destructor %qE as a type"
msgstr "неиÑправна употреба деÑтруктора %qD као типа"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "да упутите на тип шаблонÑког параметра, употребите %<typename %E%>"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "неÑлагање типа/вредноÑти код аргумента %d у лиÑти шаблонÑких параметара за %qD"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " очекивах конÑтанту типа %qT, добих %qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " очекивах шаблон клаÑе, добих %qE"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " очекивах тип, добих %qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " очекивах тип, добих %qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " очекивах шаблон клаÑе, добих %qT"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type %qD, got %qD"
msgid " expected a template of type %qD, got %qT"
@@ -35518,77 +35578,77 @@ msgstr " очекивах шаблон типа %qD, добих %qD"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in nontype parameter pack"
msgstr "неÑлагање типова у уÑловном изразу"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "ниÑам могао да претворим шаблонÑки аргумент %qE у %qT"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "погрешан број шаблонÑких аргумената ((%d, а треба %d)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "погрешан број шаблонÑких аргумената ((%d, а треба %d)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "дат за %q+D"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "неиÑправан шаблонÑки аргумент %d"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%q#D is not a function template"
msgstr "%qD није шаблон функције"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "нешаблонÑки тип %qT употребљен као шаблон"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "за декларацију шаблона %q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "дубина извођења шаблона премашује макÑимум од %d (употребите -ftemplate-depth-NN да повећате дубину) извођења %qD"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "дубина извођења шаблона премашује макÑимум од %d (употребите -ftemplate-depth-NN да повећате дубину) извођења %qD"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "извођење %q+D је типа %qT"
@@ -35606,268 +35666,268 @@ msgstr "извођење %q+D је типа %qT"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr "променљива %qD има функцијÑки тип"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "неиÑправан тип параметра %qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "у декларацији %q+D"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "функција враћа низ"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "функција враћа функцију"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "Ñтварање показивача на чланÑку функцију неклаÑног типа %qT"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "обликовање упућивача на празно"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming pointer to reference type %qT"
msgstr "обликовање %s на тип упућивача %qT"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming reference to reference type %qT"
msgstr "обликовање %s на тип упућивача %qT"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "Ñтварање показивача на члан неклаÑног типа %qT"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "Ñтварање показивача на члан упућивачког типа %qT"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "Ñтварање показивача на члан празног типа"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "Ñтварање низа типа %qT"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "Ñтварање низа типа %qT, који је апÑтрактна клаÑа"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT није тип клаÑе, Ñтруктуре, нити уније"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%qT Ñе разрешава до %qT, што није набројиви тип"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT Ñе разрешава до %qT, што није клаÑни тип"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "употреба %qs у шаблону"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
#| msgid "qualified type %qT does not match destructor name ~%qT"
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "одређени тип %qT не поклапа Ñе Ñа именом деÑтруктора ~%qT"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "завиÑно име %qE рашчлањује Ñе као не-тип, али извођење производи тип"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "Ñтавите %<typename %E%> ако миÑлите на тип"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "употреба неиÑправног поља %qD"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid use of pack expansion expression"
msgstr "неиÑправна употреба израза празног типа"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, fuzzy, gcc-internal-format
#| msgid "%<...%> as arguments.)"
msgid "use %<...%> to expand argument pack"
msgstr "%<...%> за аргументе.)"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> is not a type"
msgid "use %<%T::%D%> instead"
msgstr "%<%T::%D%> није тип"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "%q+D declared here, later in the translation unit"
msgstr "%q+D деклариÑано уткано поÑле Ñвоје дефиниције"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT није ни клаÑа ни именÑки проÑтор"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD није ни клаÑа ни именÑки проÑтор"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT јеÑте/кориÑти анонимни тип"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "шаблонÑки аргумент за %qD кориÑти локални тип %qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT је променљиво измењив тип"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "интегрални израз %qE није конÑтанта"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " покушај извођења %qD"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "двоÑмиÑлено извођење шаблона клаÑе за %q#T"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "екÑплицитно извођење не-шаблона %q#D"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
#| msgid "%q#D is not a non-static data member of %qT"
msgid "%qD is not a static data member of a class template"
msgstr "%q#D је неÑтатички чланÑки податак у %qT"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "поклапајући шаблон за %qD није нађен"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "екÑплицитно извођење нешаблонÑког типа %qT"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "екÑплицитно извођење %q#D"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "удвоÑтручено екÑплицитно извођење %q#D"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids the use of %<extern%> on explicit instantiations"
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ИСО Ц++ забрањује употребу %<extern%> на екÑплицитним извођењима"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "Ñкладишна клаÑа %qD примењена на извођење шаблона"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template %q#D"
msgid "explicit instantiation of non-class template %qD"
msgstr "екÑплицитно извођење не-шаблона %q#D"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "екÑплицитно извођење нешаблонÑког типа %qT"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "екÑплицитно извођење %q#T пре дефиниције шаблона"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ИСО Ц++ забрањује употребу %qE на екÑплицитним извођењима"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "удвоÑтручено екÑплицитно извођење %q#T"
@@ -35879,35 +35939,35 @@ msgstr "удвоÑтручено екÑплицитно извођење %q#T"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "екÑплицитно извођење %qD али дефиниција није доÑтупна"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth-NN to increase the maximum)"
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "дубина извођења шаблона премашује макÑимум од %d извођења %q+D, могуће уÑлед Ñтварања виртуелних табела (употребите -ftemplate-depth-NN да повећате макÑимум)"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "using template type parameter %qT after %qs"
msgid "invalid template non-type parameter"
msgstr "употреба параметра шаблонÑког типа %qT поÑле %qs"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a valid type for a template constant parameter"
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#T није иÑправан тип за шаблонÑки конÑтантан параметар"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, fuzzy, gcc-internal-format
#| msgid "variable %qD may not have been initialized"
msgid "variable %q#D with %<auto%> type used in its own initializer"
@@ -35916,13 +35976,13 @@ msgstr "променљива %qD можда није уÑпоÑтављена"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, fuzzy, gcc-internal-format
#| msgid "unable to emulate %qs"
msgid "unable to deduce %qT from %qE"
msgstr "не могу да емулирам %qs"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -36124,7 +36184,7 @@ msgstr "неиÑправна употреба %<this%> на највишем нÐ
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "неиÑправан одредбени доÑег у имену пÑеудодеÑтруктора"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "одређени тип %qT не поклапа Ñе Ñа именом деÑтруктора ~%qT"
@@ -36164,486 +36224,486 @@ msgstr "дефиниција %q#T унутар лиÑте шаблонÑких Ð
msgid "invalid definition of qualified type %qT"
msgstr "неиÑправна дефиниција одређеног типа %qT"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "неиÑправан навод оÑновне клаÑе"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a type"
msgid "%qD is not captured"
msgstr "%qD није тип"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "употреба %<auto%> променљиве из обухватајуће функције"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr "употреба параметра из обухватајуће вункције"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr " %q+#D деклариÑано овде"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, fuzzy, gcc-internal-format
#| msgid "use of parameter from containing function"
msgid "use of parameter %qD outside function body"
msgstr "употреба параметра из обухватајуће вункције"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "шаблонÑки параметар %qD типа %qT није дозвољен у интегралном конÑтантном изразу јер није интегралног или набројивог типа"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "употреба именÑког проÑтора %qD као израза"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "употреба шаблона клаÑе %qT као израза"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "захтев за члан %qD двоÑмиÑлен је у вишеÑтруком Ñнопу наÑлеђивања"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qD Ñе не може јавити у конÑтантном изразу"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "тип за %qE није познат"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a template type"
msgid "%qT is not an enumeration type"
msgstr "%qT није шаблонÑки тип"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "наводиоци Ñкладишне клаÑе ниÑу иÑправни у декларацијама параметара"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr "не може Ñе применити %<offsetof%> на деÑтруктор %<~%T%>"
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "не може Ñе применити %<offsetof%> на чланÑку функцију %qD"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qD није променљива у одредби %qs"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr "%qD Ñе појављује више од једном у одредбама података"
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a variable in clause %<firstprivate%>"
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "%qE није променљива у одредби %<firstprivate%>"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a variable in clause %<lastprivate%>"
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "%qE није променљива у одредби %<lastprivate%>"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr "израз за num_threads мора бити интегрални"
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr "израз за величину одломка при раÑпоређивању мора бити интегрални"
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "%qE има упућивачки тип за %qs"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, fuzzy, gcc-internal-format
#| msgid "%<threadprivate%> %qE is not file, namespace or block scope variable"
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr "%<threadprivate%> %qE није датотека, именÑки проÑтор нити променљива блоковÑког доÑега"
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, fuzzy, gcc-internal-format
#| msgid "%<threadprivate%> %qE has incomplete type"
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "нитно-локално %qE има непотпун тип"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CRIS-port assertion failed: "
msgid "static assertion failed: %s"
msgstr "Тврдња КРИС-порта није прошла: "
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
#| msgid "non-static declaration of %q+D follows static declaration"
msgid "non-constant condition for static assertion"
msgstr "неÑтатичка декларација %q+D прати Ñтатичку декларацију"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
#| msgid "Argument of SELECT statement at %L must be a scalar expression"
msgid "argument to decltype must be an expression"
msgstr "Ðргумент наредбе SELECT код %L мора бити Ñкаларни израз"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s не може да разреши адреÑу препуњене функције"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "неиÑправан апÑтрактни повратни тип за функцију %q+#D"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "неиÑправан апÑтрактни повратни тип за функцију %q+#D"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q#T has virtual base classes"
msgstr "%q#T није клаÑа"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
#| msgid "%Juninitialized member %qD with %<const%> type %qT"
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "%JнеуÑпоÑтављени члан %qD Ñа %<const%> типом %qT"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
#| msgid "%q+D is normally a non-static function"
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%q+D је обично неÑтатичка функција"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
#| msgid "friend declaration does not name a class or function"
msgid "expression %qE does not designate a constexpr function"
msgstr "декларација пријатеља не именује ни клаÑу ни функцију"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "позив не-функције %qD"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD called in a constant expression"
msgstr "%qD Ñе не може јавити у конÑтантном изразу"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
#| msgid "%q+D was used with no prototype before its definition"
msgid "%qD used before its definition"
msgstr "%q+D је употребљено без прототипа пре дефиниције"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
#| msgid "protocol %qs has circular dependency"
msgid "call has circular dependency"
msgstr "протокол %qs има кружну завиÑноÑÑ‚"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "дубина извођења шаблона премашује макÑимум од %d (употребите -ftemplate-depth-NN да повећате дубину) извођења %qD"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
#| msgid "Missing or invalid constant expression"
msgid "%q+E is not a constant expression"
msgstr "ÐедоÑтаје или неиÑправан конÑтантан израз"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript out of bound"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° није целобројан"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
#| msgid "Missing or invalid constant expression"
msgid "%qE is not a constant expression"
msgstr "ÐедоÑтаје или неиÑправан конÑтантан израз"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "mutable %qD is not usable in a constant expression"
msgstr "%qD Ñе не може јавити у конÑтантном изразу"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, fuzzy, gcc-internal-format
#| msgid "Missing or invalid constant expression"
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "ÐедоÑтаје или неиÑправан конÑтантан израз"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
#| msgid "size of array %qD is not an integral constant-expression"
msgid "the value of %qD is not usable in a constant expression"
msgstr "величина низа %qD није интегралан конÑтатан израз"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "array used as initializer"
msgid "%qD used in its own initializer"
msgstr "низ употребљен као уÑпоÑтављач"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q#D is not const"
msgstr "%q#T није клаÑа"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
#| msgid "%q+#D is private"
msgid "%q#D is volatile"
msgstr "%q+#D је приватно"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD was not initialized with a constant expression"
msgstr "%qD Ñе не може јавити у конÑтантном изразу"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
#| msgid "%qD was not declared in this scope"
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD није деклариÑано у овом доÑегу"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
#| msgid "expression in new-declarator must have integral or enumeration type"
msgid "%qD does not have integral or enumeration type"
msgstr "израз у декларатору new мора имати интегрални или набројиви тип"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "набројиви и ненабројиви тип у уÑловном изразу"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "expression %qE is not a constant-expression"
msgstr "интегрални израз %qE није конÑтанта"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "unexpected expression %qE of kind %s"
msgstr "очекиван је израз"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "величина низа није интегралан конÑтатан израз"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "pointer comparison expression is not a constant expression"
msgstr "интегрални израз %qE није конÑтанта"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "division by zero is not a constant-expression"
msgstr "величина низа није интегралан конÑтатан израз"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "неконÑтантан Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° у уÑпоÑтављачу"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of file in '%s'"
msgid "unexpected AST of kind %s"
msgstr "Ðеочекиван крај датотеке у ‘%s’"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to %q#T"
msgid "cannot capture %qE by reference"
msgstr "не може Ñе деклариÑати упућивач на %q#T"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
#| msgid "%<this%> is unavailable for static member functions"
msgid "%<this%> was not captured for this lambda function"
msgstr "%<this%> није доÑтупно за Ñтатичке чланÑке функције"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "%qV одредбе не могу Ñе применити на %qT"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "атрибут %qE може Ñе применити Ñамо на јаванÑке дефиниције клаÑа"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "атрибут %qE може Ñе применити Ñамо на дефиниције клаÑа"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE је заÑтарело; в-табеле Ñу Ñада подразумевано ÑаглаÑне Ñа КОМом"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "захтевано init_priority није целобројна конÑтанта"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "атрибут %qE може Ñе кориÑтити Ñамо уз дефиниције објеката клаÑног типа у датотечном доÑегу"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "захтевано init_priority је ван опÑега"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "захтевано init_priority резервиÑано је за унутрашњу употребу"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "атрибут %qE није подржан на овој платформи"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "провера lang_*: крах у %s, код %s:%d"
@@ -36744,482 +36804,488 @@ msgstr "ИСО Ц++ забрањује примену %<__alignof%> на изрÐ
msgid "invalid use of non-static member function"
msgstr "неиÑправна употреба неÑтатичке чланÑке функције"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "узимање адреÑе привременог"
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "превазиђено претварање из конÑтантне ниÑке у %qT"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
#| msgid "request for member %qD in %qE, which is of non-class type %qT"
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "захтев за члан %qD у %qE, које је не-клаÑног типа %qT"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "захтев за члан %qD у %qE, које је не-клаÑног типа %qT"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "неиÑправна употреба неÑтатичког чланÑког податка %qE"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "неиÑправан приÑтуп неÑтатичком чланÑком податку %qD нултог објекта"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(можда је макро %<offsetof%> погрешно употребљен)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
#| msgid "invalid access to non-static data member %qD of NULL object"
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "неиÑправан приÑтуп неÑтатичком чланÑком податку %qD нултог објекта"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
#| msgid "qualified type %qT does not match destructor name ~%qT"
msgid "object type %qT does not match destructor name ~%qT"
msgstr "одређени тип %qT не поклапа Ñе Ñа именом деÑтруктора ~%qT"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "тип који Ñе уништава је %qT, али деÑтруктор упућује на %qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%> није члан у %qT"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT није оÑнова за %qT"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD нема члан по имену %qE"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD није чланÑка шаблонÑка функција"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT није типа показивач-на-објекат"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of array indexing on pointer to member"
msgstr "неиÑправна употреба %qs на показивачу-на-члан"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "неиÑправна употреба %qs на показивачу-на-члан"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of implicit conversion on pointer to member"
msgstr "неиÑправна употреба %qs на показивачу-на-члан"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "недоÑтаје Ð¸Ð½Ð´ÐµÐºÑ Ñƒ упућивачу низа"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ИСО Ц++ забрањује индекÑирање не-л-вредноÑног низа"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "индекÑирање низа деклариÑаног као %<register%>"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "индекÑирана вредноÑÑ‚ није ни низ ни показивач"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "недоÑтаје објекат у употреби %qE"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ИСО Ц++ забрањује звање %<::main%> унутар програма"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, fuzzy, gcc-internal-format
#| msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>"
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "мора Ñе употребити или %<.*%> или %<->*%> за позив показивача на чланÑку функцију у %<%E (...)%>"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qE не може бити употребљено као функција"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to constructor %q#D"
msgstr "превише аргумената за %s %q+#D"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to constructor %q#D"
msgstr "премало аргумената за %s %q+#D"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qs"
msgid "too many arguments to member function %q#D"
msgstr "превише аргумената за функцију %qs"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qs"
msgid "too few arguments to member function %q#D"
msgstr "премало аргумената за функцију %qs"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qs"
msgid "too many arguments to function %q#D"
msgstr "превише аргумената за функцију %qs"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qs"
msgid "too few arguments to function %q#D"
msgstr "премало аргумената за функцију %qs"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to method %q#D"
msgstr "превише аргумената за %s %q+#D"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to method %q#D"
msgstr "премало аргумената за %s %q+#D"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "превише аргумената за функцију"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "превише аргумената за функцију"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "параметар %P за %qD непотпуног је типа %qT"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "параметар %P непотпуног је типа %qT"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "претпоÑтавља Ñе претапање у тип %qT из препуњене функције"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL употребљено аритметички"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "left rotate count is negative"
msgstr "негативно ротирање %s"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "right rotate count is negative"
msgstr "негативно ротирање %s"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "left rotate count >= width of type"
msgstr "ротирање %s >= ширина типа"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "right rotate count >= width of type"
msgstr "ротирање %s >= ширина типа"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "поређење Ñа доÑловном ниÑком резултује неодређеним понашањем"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "адреÑа за %qD никако не може бити NULL"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ИСО Ц++ забрањује поређење показивача и целобројног"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "неуређено поређење Ñа не-реалним аргументом"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "неиÑправни операнди типова %qT и %qT за бинарно %qO"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ИСО Ц++ забрањује употребу показивача типа %<void *%> у одузимању"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ИСО Ц++ забрањује употребу показивача на функцију у одузимању"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ИСО Ц++ забрањује употребу показивача на метод у одузимању"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "неиÑправна употреба показивача на непотпун тип у аритметици Ñа показивачима"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of constructor %qE"
msgstr "узимање адреÑе привременог"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of destructor %qE"
msgstr "узимање адреÑе привременог"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "неиÑправна употреба %qE за добијање показивача-на-чланÑку-функцију"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr " неопходан је одређен ид."
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "заграде око %qE не могу бити коришћене за добијање показивача-на-чланÑку-функцију"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ИСО Ц++ забрањује узимање адреÑе неодређене или заграћене неÑтатичке чланÑке функције, за добијање показивача на чланÑку функцију. Употребите %<&%T::%D%>"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ИСО Ц++ забрањује узимање адреÑе везане чланÑке функције за добијање показивача на чланÑку функцију. Употребите %<&%T::%D%>"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "узимање адреÑе привременог"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of xvalue (rvalue reference)"
msgstr "узимање адреÑе привременог"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ИСО Ц++ забрањује узимање адреÑе функције %<::main%>"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ИСО Ц++ забрањује узимање адреÑе претапања у не-л-вредноÑни израз"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "не може Ñе Ñтворити показивач на упућивачки члан %qD"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids incrementing an enum"
msgstr "ИСО Ц++ забрањује %s-вање набрајања"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids decrementing an enum"
msgstr "ИСО Ц++ забрањује %s-вање набрајања"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "не може Ñе %s показивач на непотпуни тип %qT"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "не може Ñе %s показивач на непотпуни тип %qT"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type %qT"
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ИСО Ц++ забрањује %s-вање показивача типа %qT"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type %qT"
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ИСО Ц++ забрањује %s-вање показивача типа %qT"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "неиÑправан израз као операнд"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "не може Ñе узети адреÑа од %<this%>, јер је д-вредноÑни израз"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "затражена је адреÑа екÑплицитне региÑтарÑке променљиве %qD"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "затражена је адреÑа од %qD, а деклариÑано је као %<register%>"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, fuzzy, gcc-internal-format
#| msgid "initializer for %qT must be brace-enclosed"
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "уÑпоÑтављач за %qT мора бити у витичаÑтим заградама"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in initializer"
msgstr "лиÑта израза %s узима Ñе као Ñложени израз"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in mem-initializer"
msgstr "лиÑта израза %s узима Ñе као Ñложени израз"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in functional cast"
msgstr "лиÑта израза %s узима Ñе као Ñложени израз"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "лиÑта израза %s узима Ñе као Ñложени израз"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
#| msgid "conversion from %qT to %qT discards qualifiers"
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "претварање из %qT у %qT одбацује одредбе"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type %qT to type %qT"
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "неиÑправно Ñтатичко претапање из типа %qT у тип %qT"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type %qT to type %qT"
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "неиÑправно Ñтатичко претапање из типа %qT у тип %qT"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "неиÑправно Ñтатичко претапање из типа %qT у тип %qT"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "претварање из %qT у %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "неиÑправно претапање д-вредноÑног израза типа %qT у тип %qT"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "претапање из %qT у %qT губи на тачноÑти"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "претапање из %qT у %qT повећава неопходно равнање циљног типа"
@@ -37228,234 +37294,234 @@ msgstr "претапање из %qT у %qT повећава неопходно Ñ
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ИСО Ц++ забрањује претапање између показивача на функцију и показивача на објекат"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "неиÑправно претапање из типа %qT у тип %qT"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "неиÑправна употреба конÑтантног претапања Ñа типом %qT, који није показивач, нити показивач на чланÑки податак"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "неиÑправна употреба конÑтантног претапања Ñа типом %qT, који је показивач или упућивач на функцијÑки тип"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "неиÑправно конÑтантно претапање д-вредноÑти типа %qT у тип %qT"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "неиÑправно конÑтантно претапање из типа %qT у тип %qT"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ИСО Ц++ забрањује претапање у низовни тип %qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "неиÑправно претапање у функцијÑки тип %qT"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " у израчунавању %<%Q(%#T, %#T)%>"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "неконÑтантан Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð° у уÑпоÑтављачу"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "неÑаглаÑни типови у додели %qT у %qT"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, gcc-internal-format
msgid "array used as initializer"
msgstr "низ употребљен као уÑпоÑтављач"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, gcc-internal-format
msgid "invalid array assignment"
msgstr "неиÑправна додела низа"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " у претварању показивача на чланÑку функцију"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "претварање показивача на члан преко виртуелне оÑнове %qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " у претварању показивача на члан"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "неиÑправно претварање у тип %qT из типа %qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "не може Ñе претворити %qT у %qT као аргумент %qP за %qD"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgid "cannot convert %qT to %qT in default argument"
msgstr "не може Ñе претворити %qT у %qT као аргумент %qP за %qD"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in argument passing"
msgstr "не може Ñе претворити %qT у %qT у %s"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT"
msgstr "не може Ñе претворити %qT у %qT у %s"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in initialization"
msgstr "не може Ñе претворити %qT у %qT у %s"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in return"
msgstr "не може Ñе претворити %qT у %qT у %s"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in assignment"
msgstr "не може Ñе претворити %qT у %qT у %s"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
#| msgid "argument %d of %qE might be a candidate for a format attribute"
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "аргумент %d од %qE може бити кандидат за форматÑки атрибут"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
#| msgid "return type might be a candidate for a format attribute"
msgid "parameter might be a candidate for a format attribute"
msgstr "повратни тип може бити кандидат за форматÑки атрибут"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of conversion might be a candidate for a format attribute"
msgstr "аргумент позива функције може бити кандидат за форматÑки атрибут"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of initialization might be a candidate for a format attribute"
msgstr "аргумент позива функције може бити кандидат за форматÑки атрибут"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
#| msgid "assignment left-hand side might be a candidate for a format attribute"
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "лева Ñтрана доделе може бити кандидат за форматÑки атрибут"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "у проÑлеђивању аргумента %P за %q+D"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "враћање упућивача на привремени"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "враћање упућивача на не-л-вредноÑÑ‚"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "враћање упућивача на локалну променљиву %q+D"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "враћање адреÑе локалне променљиве %q+D"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "враћање вредноÑти из деÑтруктора"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "не може Ñе враћати из руковаоца у блоку покушаја у конÑтруктору"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "враћање вредноÑти из конÑтруктора"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "не могу Ñе дефиниÑати нови типови у повратном типу"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "наредба враћања без вредноÑти, у функцији која враћа %qT"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "наредба враћања Ñа вредношћу, у функцији која враћа ‘void’"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> не Ñме вратити NULL, оÑим ако је деклариÑан уз %<throw()%> (или је задато -fcheck-new)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -38030,7 +38096,7 @@ msgstr "Корак итератора код %L не може бити нула"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -40350,27 +40416,27 @@ msgstr "Функција Ñа показивачком вредношћу пој
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -40602,45 +40668,45 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "Променљива ‘%s’ Ñе не може јавити у изразу код %L"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "Променљива ‘%s’ Ñе не може јавити у изразу код %L"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "Променљива ‘%s’ Ñе не може јавити у изразу код %L"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -40655,15 +40721,15 @@ msgstr "Ðеочекивани тип у претварању иÑтинитоÑ
msgid "can't open input file: %s"
msgstr "не могу да отворим улазну датотеку: %s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "creating array of %qT"
msgid "Creating array temporary at %L"
msgstr "Ñтварање низа типа %qT"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Missing argument list in function '%s' at %C"
msgid "Removing call to function '%s' at %L"
@@ -40779,12 +40845,12 @@ msgstr "Први аргумент дефиниÑане доделе код %L м
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "Други аргумент дефиниÑане доделе код %L мора бити намере-у"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "Први аргумент Ñучеља оператора код %L мора бити намере-у"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "Други аргумент Ñучеља оператора код %L мора бити намере-у"
@@ -42737,137 +42803,137 @@ msgstr "Грешка при пиÑању датотеке модула: %s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "ЛиÑта имена %s не може Ñе преименовати у %s придружењем USE."
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr "Име ‘%s’ код %C је двоÑмиÑлен упућивач на ‘%s’ из текуће програмÑке јединице"
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr "Симбол ‘%s’ поменут код %L није нађен у модулу ‘%s’"
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr "КориÑнички оператор ‘%s’ поменут код %L није нађен у модулу ‘%s’"
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr "СопÑтвени оператор ‘%s’ поменут код %L није нађен у модулу ‘%s’"
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "Ðе могу да отворим датотеку модула ‘%s’ за пиÑање код %C: %s"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "Грешка при отварању датотеке модула ‘%s’ за пиÑање: %s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file '%s': %s\n"
msgid "Can't delete module file '%s': %s"
msgstr "%s: не могу да обришем датотеку ‘%s’: %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: warning: can't rename file '%s' to '%s': %s\n"
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: упозорење: не могу да преименујем датотеку ‘%s’ у ‘%s’: %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete aux info file '%s': %s\n"
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: не могу да обришем помоћну инфотеку ‘%s’: %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' at %C already declared at %L"
msgid "Symbol '%s' already declared"
msgstr "Компонента ‘%s’ код %C већ је деклариÑана код %L"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L is not included in the selected standard"
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "СопÑтвено ‘%s’ код %L није укључено у изабрани Ñтандард"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr "Симбол ‘%s’ поменут код %L није нађен у модулу ‘%s’"
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr "Симбол ‘%s’ поменут код %L није нађен у модулу ‘%s’"
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Fortran 2003: IOMSG tag at %L"
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Фортран 2003: Ознака IOMSG код %L"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "Ðе могу да отворим датотеку модула ‘%s’ за читање код %C: %s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr "Датотека ‘%s’ отворена код %C није модул Гфортрана"
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "Ðе може USE за иÑти модул који градимо!"
@@ -42962,7 +43028,7 @@ msgstr "Ðеочекивано Ñмеће поÑле наредбе ELSE код
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "Ðеочекивано Ñмеће поÑле наредбе ELSE код %C"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "Одредба IF код %L захтева Ñкаларни логички израз"
@@ -44378,7 +44444,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "Етикета %d поменута код %L није дефиниÑана"
@@ -44540,7 +44606,7 @@ msgstr "Функција ‘%s’ код %L је ÑопÑтвена али ниÑ
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "Ðе могу да разрешим одређену функцију ‘%s’ код %L"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "Функција ‘%s’ код %L нема имплицитан тип"
@@ -44953,194 +45019,194 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "Ðргумент ‘%s’ елементалне процедуре код %L мора бити Ñкалар"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' at %L is not a VALUE"
msgid "'%s' at %L should be a SUBROUTINE"
msgstr "‘%s’ код %L није вредноÑÑ‚"
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgid "'%s' at %L should be a FUNCTION"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора бити функција"
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s код %L мора бити Ñкалар"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Cray pointer at %C must be an integer."
msgid "Deleted feature: %s at %L must be integer"
msgstr "Крејов показивач код %C мора бити целобројни."
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s код %L мора бити целобројно"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "Израз за корак у петљи DO код %L не може бити нула"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "ИндекÑ-име у FORALL код %L мора бити Ñкларни целобројан"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "Израз за почетак у FORALL код %L мора бити Ñкаларни целобројан"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "Израз за крај у FORALL код %L мора бити Ñкаларни целобројан"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "Израз за корак у FORALL код %L мора бити Ñкаларни %s"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "Израз за корак у FORALL код %L не може бити нула"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "Променљива ‘%s’ Ñе не може јавити у изразу код %L"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in ALLOCATE statement at %L must be ALLOCATABLE or a POINTER"
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr "Израз у наредби ALLOCATE код %L мора бити резервљив или показивач"
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "Потребна је одредница низа у наредби ALLOCATE код %L"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array specification required in ALLOCATE statement at %L"
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Потребна је одредница низа у наредби ALLOCATE код %L"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "Лоша одредница низа у наредби ALLOCATE код %L"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' must not appear an the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr "‘%s’ не може да Ñе јави у одредници низа код %L у иÑтој наредби резервиÑања где Ñе и Ñамо резервише"
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Bad array specification in ALLOCATE statement at %L"
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "Лоша одредница низа у наредби ALLOCATE код %L"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Bad array specification in ALLOCATE statement at %L"
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "Лоша одредница низа у наредби ALLOCATE код %L"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "ASSIGN код %L захтева Ñкаларну подразумевану целобројну променљиву"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "Етикета код %L није у иÑтом блоку као наредба GOTO код %L"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "Одредница UNIT код %L мора бити целобројни израз или знаковна променљива"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -45149,179 +45215,179 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr "Етикета CASE код %L преклапа етикету CASE код %L"
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "Израз у наредби CASE код %L мора бити типа %s"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in CASE statement at %L must be kind %d"
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "Израз у наредби CASE код %L мора бити врÑта %d"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "Израз у наредби CASE код %L мора бити Ñкалар"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr "Изборни израз у рачунÑком GOTO код %L мора бити Ñкаларни целобројан израз"
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "Ðргумент наредбе SELECT код %L не може бити %s"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in CASE statement at %L must be of type %s"
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "Израз у наредби CASE код %L мора бити типа %s"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr "DEFAULT CASE код %L не може бити праћен другим DEFAULT CASE код %L"
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr "Логички опÑег у наредби CASE код %L није дозвољен"
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "constant logical value in CASE statement is repeated at %L"
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr "конÑтантна логичка вредноÑÑ‚ у наредби CASE поновљена је код %L"
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr "Одредница опÑега код %L не може никако бити поклопљена"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr "Блок логичког SELECT CASE код %L има више од два Ñлучаја"
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Global name '%s' at %L is already being used as a %s at %L"
msgid "Associate-name '%s' at %L is used as array"
msgstr "Глобално име ‘%s’ код %L Ñе већ кориÑти као %s код %L"
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Syntax error in EQUIVALENCE statement at %L"
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "СинтакÑна грешка у наредби EQUIVALENCE код %L"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type '%s' at %C is being used before it is defined"
msgid "Derived type '%s' at %L must be extensible"
msgstr "Изведени тип ‘%s’ код %C кориÑти Ñе пре него што је дефиниÑан"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type name '%s' at %C already has a basic type of %s"
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "Име изведеног типа ‘%s’ код %C већ има оÑновни тип %s"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have POINTER components"
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr "Елемент преноÑа података код %L не може имати показивачке компоненте"
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have POINTER components"
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr "Елемент преноÑа података код %L не може имати показивачке компоненте"
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have ALLOCATABLE components"
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr "Елемент преноÑа података код %L не може имати резервљиве компоненте"
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr "Елемент преноÑа података код %L не може имати приватне компоненте"
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr "Елемент преноÑа података код %L не може бити пун упућивач на низ претпоÑтављене величине"
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL index-name at %L must be a scalar INTEGER"
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "ИндекÑ-име у FORALL код %L мора бити Ñкларни целобројан"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "ASSIGN код %L захтева Ñкаларну подразумевану целобројну променљиву"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "ASSIGN код %L захтева Ñкаларну подразумевану целобројну променљиву"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument dim at %L must be scalar"
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "Ðргумент димензије код %L мора бити Ñкалар"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of SELECT statement at %L must be a scalar expression"
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "Ðргумент наредбе SELECT код %L мора бити Ñкаларни израз"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of ACOS at %L must be between -1 and 1"
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "Ðргумент у ACOS код %L мора бити између -1 и 1"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "Ðаредба код %L није иÑправна наредба циља гранања за наредбу гранања код %L"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Branch at %L causes an infinite loop"
msgid "Branch at %L may result in an infinite loop"
@@ -45329,12 +45395,12 @@ msgstr "Гранање код %L води у беÑконачну петљу"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -45342,679 +45408,679 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "Етикета код %L није у иÑтом блоку као наредба GOTO код %L"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr "МаÑка у WHERE код %L има неуÑаглашен облик"
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "Циљ доделе у WHERE код %L има неуÑаглашен облик"
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "Ðеподржана наредба унутар WHERE код %L"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "Додела у индекÑну променљиву за FORALL код %L"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The FORALL with index '%s' cause more than one assignment to this object at %L"
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr "FORALL Ñа индекÑом ‘%s’ изазива више од једне доделе овом објекту код %L"
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr "Спољашња конÑтрукција FORALL већ има Ð¸Ð½Ð´ÐµÐºÑ Ñа овим именом %L"
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "Одредба WHERE/ELSEWHERE код %L захтева логички низ"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CHARACTER expression at %L is being truncated (%d/%d)"
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr "Знаковни израз код %L бива подÑечен (%d/%d)"
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Right side of assignment at %L is a derived type containing a POINTER in a PURE procedure"
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr "ДеÑна Ñтрана доделе код %L је изведени тип који Ñадржи показивач у чиÑтој процедури"
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Right side of assignment at %L is a derived type containing a POINTER in a PURE procedure"
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr "ДеÑна Ñтрана доделе код %L је изведени тип који Ñадржи показивач у чиÑтој процедури"
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assignment to a FORALL index variable at %L"
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "Додела у индекÑну променљиву за FORALL код %L"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "Ðаредба ASSIGNED GOTO код %L захтева целобројну променљиву"
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "Променљивој ‘%s’ није додељена циљна етикета код %L"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "Ðлтернативна наредба повратка код %L захтева Ñкаларни целобројни наводилац повратка"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr "ASSIGN код %L захтева Ñкаларну подразумевану целобројну променљиву"
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr "Ðритметичко IF код %L захтева бројевни израз"
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr "Излазни уÑлов из петље DO WHILE код %L мора бити Ñкаларни логички израз"
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL mask clause at %L requires a LOGICAL expression"
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "Одредба маÑке у FORALL код %L захтева логички израз"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "size of array %qs is too large"
msgid "String length at %L is too large"
msgstr "величина низа %qs је превелика"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "Резервљиви низ ‘%s’ код %L мора имати одложени облик"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr "Скаларни објекат ‘%s’ код %L не може бити резервљив"
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "Ðизовни показивач ‘%s’ код %L мора имати одложен облик"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "Ðиз ‘%s’ код %L не може имати одложен облик"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The type %s cannot be host associated at %L because it is blocked by an incompatible object of the same name at %L"
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr "Тип %s не може бити придружен домаћину код %L зато што га блокира неÑаглаÑан објекат иÑтог имена код %L"
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "Ðиз модула или главног програма ‘%s’ код %L мора имати конÑтантан облик"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr "Ентитет Ñа претпоÑтављеном знаковном дужином код %L мора бити лажни аргумент или параметар"
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr "‘%s’ код %L мора имати конÑтантну знаковну дужину у овом контекÑту"
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' at %L must have constant character length in this context"
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "‘%s’ код %L мора имати конÑтантну знаковну дужину у овом контекÑту"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "Резервљиво ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "Спољашње ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "Лажно ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "СопÑтвено ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "Резултат функцији ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "ÐутоматÑки низ ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr "Ðаредбена функција знаковне вредноÑти ‘%s’ код %L мора имати конÑтантну дужину"
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr "‘%s’ је приватног типа и не може бити лажни аргумент у ‘%s’, који је јаван код %L"
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Function result '%s' at %L cannot have an initializer"
msgid "Function '%s' at %L cannot have an initializer"
msgstr "Резултат функцији ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "Спољашњи објекат ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "Елементална функција ‘%s’ код %L мора имати Ñкаларни резултат"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "Ðаредбена функција ‘%s’ код %L није дозвољена као Ñтварни аргумент"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "Функција типа CHARACTER(*) ‘%s’ код %L не може имати низовну вредноÑÑ‚"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "Функција типа CHARACTER(*) ‘%s’ код %L не може имати показивачку вредноÑÑ‚"
# no-c-format
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "Функција типа CHARACTER(*) ‘%s’ код %L не може бити чиÑта"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr "Функција типа CHARACTER(*) ‘%s’ код %L не може бити рекурзивна"
# no-c-format
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "Функција типа CHARACTER(*) ‘%s’ код %L не може бити чиÑта"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "Ðтрибут процедуре коÑи Ñе Ñа атрибутом лиÑте имена у ‘%s’ код %L"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "Ðтрибут процедуре коÑи Ñе Ñа атрибутом лиÑте имена у ‘%s’ код %L"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "Ðтрибут процедуре коÑи Ñе Ñа атрибутом лиÑте имена у ‘%s’ код %L"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "Ðтрибут %s коÑи Ñе Ñа атрибутом %s у ‘%s’ код %L"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора бити функција"
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора имати бар један аргумент"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of ICHAR at %L must be of length one"
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "Ðргумент у ICHAR код %L мора бити дужине један"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити показивач"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити резервљив"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must not be OPTIONAL"
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L не Ñме бити опциони"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "First argument of operator interface at %L must be INTENT(IN)"
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "Први аргумент Ñучеља оператора код %L мора бити намере-у"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора имати бар један аргумент"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr "Процедура Ñучеља ‘%s’ код %L има иÑто име као и обухватајућа процедура"
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Initialization at %C is not allowed in a PURE procedure"
msgid "Finalization at %L is not yet implemented"
msgstr "УÑпоÑтављање код %C није дозвољено у чиÑтој процедури"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' called with an implicit interface at %L"
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "Процедура ‘%s’ позвана Ñа имплицитним Ñучељем код %L"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' in %s at %L is neither function nor subroutine"
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Процедура ‘%s’ у %s код %L није ни функција ни потпрограм"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора имати бар један аргумент"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити неизведени тип"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a scalar"
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити Ñкалар"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити резервљив"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити показивач"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "Процедура Ñучеља ‘%s’ код %L има иÑто име као и обухватајућа процедура"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr "Процедура Ñучеља ‘%s’ код %L има иÑто име као и обухватајућа процедура"
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array pointer '%s' at %L must have a deferred shape"
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "Ðизовни показивач ‘%s’ код %L мора имати одложен облик"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN)"
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "Ðргумент ‘%s’ чиÑте функције ‘%s’ код %L мора бити намере-у"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Показивачка компонента ‘%s’ у ‘%s’ код %L припада типу који није деклариÑан"
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора имати бар један аргумент"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити неизведени тип"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of statement function at %L must be scalar"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "Ðргумент ‘%s’ наредбене функције код %L мора бити Ñкалар"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of elemental procedure at %L cannot have the POINTER attribute"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "Ðргумент ‘%s’ елементалне процедуре код %L не може имати атрибут показивача"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "Ðргумент ‘%s’ за ÑопÑтвено ‘%s’ код %L мора бити резервљив"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "Процедура Ñучеља ‘%s’ код %L има иÑто име као и обухватајућа процедура"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Character length of component '%s' needs to be a constant specification expression at %L."
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr "Знаковна дужина компоненте ‘%s’ мора бити конÑтантан одреднички израз код %L."
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr "Компонента ‘%s’ је приватни тип и не може бити компонента у ‘%s’, која је јавна код %L"
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "Компонента %s типа SEQUENCE деклариÑаног код %L нема атрибут SEQUENCE"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr "Показивачка компонента ‘%s’ у ‘%s’ код %L припада типу који није деклариÑан"
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' of '%s' at %L must have constant array bounds."
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "Компонента ‘%s’ у ‘%s’ код %L мора имати конÑтантне границе низа."
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assumed size array '%s' in namelist '%s'at %C is not allowed."
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "Ðиз претпоÑтављене величине ‘%s’ у лиÑти имена ‘%s’ код %C није дозвољен."
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "NAMELIST object '%s' at %L cannot have ALLOCATABLE components"
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
@@ -46022,338 +46088,338 @@ msgstr "Објекат лиÑте имена ‘%s’ код %L не може и
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PRIVATE symbol '%s' cannot be member of PUBLIC namelist at %L"
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr "Приватни Ñимбол ‘%s’ не може бити члан јавне лиÑте имена код %L"
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PRIVATE symbol '%s' cannot be member of PUBLIC namelist at %L"
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr "Приватни Ñимбол ‘%s’ не може бити члан јавне лиÑте имена код %L"
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "Ðтрибут процедуре коÑи Ñе Ñа атрибутом лиÑте имена у ‘%s’ код %L"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Parameter array '%s' at %L cannot be automatic or assumed shape"
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "ПараметарÑки низ ‘%s’ код %L не може бити аутоматÑког или претпоÑтављеног облика"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr "Имплицитно типÑки параметар ‘%s’ код %L не одговара каÑнијем имплицитном типу"
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "ÐеÑаглаÑан изведени тип у параметру код %L"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "Ðтрибут процедуре коÑи Ñе Ñа атрибутом лиÑте имена у ‘%s’ код %L"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "Ðтрибут процедуре коÑи Ñе Ñа атрибутом лиÑте имена у ‘%s’ код %L"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "Ðиз претпоÑтављене величине код %L мора бити лажни аргумент"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "Ðиз претпоÑтављеног облика код %L мора бити лажни аргумент"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "Симбол код %L није лажна променљива"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Character-valued statement function '%s' at %L must have constant length"
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "Ðаредбена функција знаковне вредноÑти ‘%s’ код %L мора имати конÑтантну дужину"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The derived type '%s' at %L is of type '%s', which has not been defined."
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr "Изведени тип ‘%s’ код %L је типа ‘%s’, који није дефиниÑан."
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'"
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "Јавна функција ‘%s’ код %L не може бити приватног типа ‘%s’"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr "Лажни аргумент намере-из ‘%s’ код %L је претпоÑтављене величине и зато не може имати подразумевани уÑпоÑтављач"
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "Лажни аргумент ‘%s’ код %L не може бити намере-из"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Function result '%s' at %L cannot have an initializer"
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "Резултат функцији ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array '%s' at %L cannot have a deferred shape"
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "Ðиз ‘%s’ код %L не може имати одложен облик"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Allocatable array '%s' at %L must have a deferred shape"
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "Резервљиви низ ‘%s’ код %L мора имати одложени облик"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "Лажна процедура код %L није дозвољена у елементалној процедури"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr "Ðитно-приватно код %L не Ñнима Ñе"
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr "BLOCK DATA елемент ‘%s’ код %L мора бити у заједничком"
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy '%s' at %L cannot have an initializer"
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "Лажно ‘%s’ код %L не може имати уÑпоÑтављач"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr "ÐеконÑтантан одељак низа код %L у наредби DATA"
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr "Ðаредба DATA код %L има више променљивих него вредноÑти"
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr "Ðаредба DATA код %L има више вредноÑти него променљивих"
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "Ознака %d код %L дефиниÑана али неупотребљена"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "Ознака %d код %L дефиниÑана али не може бити употребљена"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr "Променљива изведеног типа ‘%s’ код %L мора имати атрибут SEQUENCE да би била објекат еквиваленције"
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr "Променљива изведеног типа ‘%s’ код %L не може имати резервљиве компоненте како би била објекат еквиваленције"
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type variable '%s' at %L with default initializer cannot be an EQUIVALENCE object"
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr "Променљива изведеног типа ‘%s’ код %L Ñа подразумеваним уÑпоÑтављачем не може бити објекат еквиваленције"
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr "Променљива изведеног типа ‘%s’ код %L Ñа показивачким компонентама не може бити објекат еквиваленције"
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "СинтакÑна грешка у наредби EQUIVALENCE код %L"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr "Члан заједничког блока ‘%s’ код %L не може бити објекат еквиваленције у чиÑтој процедури ‘%s’"
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Именована конÑтанта ‘%s’ код %L не може бити објекат еквиваленције"
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr "Ðиз ‘%s’ код %L Ñа неконÑтантним границама не може бити објекат еквиваленције"
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Компонената Ñтруктуре ‘%s’ код %L не може бити објекат еквиваленције"
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "ПодниÑка код %L има нулту дужину"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'"
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "Јавна функција ‘%s’ код %L не може бити приватног типа ‘%s’"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "Ð£Ð½Ð¾Ñ â€˜%s’ код %L нема имплицитан тип"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора бити функција"
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L не може бити претпоÑтављене знаковне дужине"
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "Процедура кориÑничког оператора ‘%s’ код %L мора имати бар један аргумент"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr "Први аргумент Ñучеља оператора код %L не може бити опциони"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "Други аргумент Ñучеља оператора код %L не може бити опциони"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "Сучеље оператора код %L мора имати, највише, два аргумента"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr "Садржана процедура ‘%s’ код %L у чиÑтој процедури мора такође бити чиÑта"
@@ -46999,18 +47065,18 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, fuzzy, gcc-internal-format
#| msgid "Possible frontend bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "Могућа грешка у прочељу: Ðиз одложене величине без показивача, атрибута резервљивоÑти или изведеног типа без резервљивих компоненти."
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "лош тип израза током хода (%d)"
@@ -47280,7 +47346,7 @@ msgstr "реална врÑта =8 није доÑтупна уз опцију -
msgid "Array element size too big at %C"
msgstr "Величина елемента низа превелика"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code(): лош кôд наредбе"
@@ -47594,7 +47660,7 @@ msgstr "ниÑам могао да одредим име циља ради прÐ
msgid "internal error - invalid Utf8 name"
msgstr "унутрашња грешка - неиÑправно UTF8-ns име"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "Ñмеће на крају ниÑке потпиÑа"
@@ -51102,6 +51168,9 @@ msgstr "%Hправи Ñе Ñелектор за непоÑтојећи метоÐ
#~ msgid "large frame pointer change (%d) with -mtiny-stack"
#~ msgstr "велика промена (%d) показивача оквира уз -mtiny-stack"
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs изгледа као погрешно напиÑан руковалац прекидима"
+
#~ msgid "`%s' attribute only applies to functions"
#~ msgstr "атрибут „%s“ примењив је Ñамо на функције"
@@ -51438,9 +51507,6 @@ msgstr "%Hправи Ñе Ñелектор за непоÑтојећи метоÐ
#~ msgid "Possible frontend bug: array constructor not expanded"
#~ msgstr "Могућа грешка у прочељу: конÑтруктор низа није проширен"
-#~ msgid "Function does not return a value"
-#~ msgstr "Функција не враћа вредноÑÑ‚"
-
#~ msgid "module symbol %s in wrong namespace"
#~ msgstr "модулÑки Ñимбол %s у погрешном именÑком проÑтору"
diff --git a/gcc/po/sv.po b/gcc/po/sv.po
index 1e62e7c7a8d..424e879e556 100644
--- a/gcc/po/sv.po
+++ b/gcc/po/sv.po
@@ -8,10 +8,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.7.0\n"
+"Project-Id-Version: gcc 4.7.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
-"PO-Revision-Date: 2012-04-18 21:44+0200\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
+"PO-Revision-Date: 2012-06-25 13:11+0200\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anonym>"
@@ -29,18 +29,18 @@ msgstr "<anonym>"
msgid "({anonymous})"
msgstr "({anonym})"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr "oväntat radslut"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "%<;%> förväntades"
@@ -48,17 +48,17 @@ msgstr "%<;%> förväntades"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "%<(%> förväntades"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr "%<,%> förväntades"
@@ -69,19 +69,19 @@ msgstr "%<,%> förväntades"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr "%<)%> förväntades"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr "%<]%> förväntades"
@@ -90,25 +90,25 @@ msgstr "%<]%> förväntades"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "%<;%>, %<,%> eller %<)%> förväntades"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr "%<}%> förväntades"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "%<{%> förväntades"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr "%<:%> förväntades"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr "%<while%> förväntades"
@@ -117,39 +117,39 @@ msgstr "%<while%> förväntades"
msgid "expected %<.%>"
msgstr "%<.%> förväntades"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr "%<@end%> förväntades"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr "%<>%> förväntades"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "%<,%> eller %<)%> förväntades"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "%<=%> förväntades"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "%<#pragma omp section%> eller %<}%> förväntades"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, gcc-internal-format
msgid "expected %<[%>"
msgstr "%<[%> förväntades"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(anonym)"
@@ -321,12 +321,12 @@ msgstr "'%%l'-operand är inte en etikett"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "flyttalskonstant felanvänd"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "ogiltigt uttryck som operand"
@@ -1216,19 +1216,19 @@ msgstr " inline:ad från %qs vid %s:%d"
msgid " inlined from %qs"
msgstr " inline:ad från %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "antar att slingan inte är oändlig"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "kan inte optimera potentiellt oändliga slingor"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "antar att slingräknaren inte spiller över"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "kan inte optimera slinga, slingräknaren kan spilla över"
@@ -1394,16 +1394,16 @@ msgid "this is the insn:"
msgstr "detta är instruktionen:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "kunde inte hitta något spillregister"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "VOIDmode vid utmatning"
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr "misslyckande vid omläsningsförsök:"
@@ -2535,117 +2535,117 @@ msgstr "<returvärde>"
msgid "<unknown>"
msgstr "<okänd>"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "ogiltigt %%H-värde"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "ogiltigt %%J-värde"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "ogiltigt %%r-värde"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "ogiltigt %%R-värde"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "ogiltigt %%N-värde"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "ogiltigt %%P-värde"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "ogiltigt %%h-värde"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "ogiltigt %%L-värde"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "ogiltigt %%m-värde"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "ogiltigt %%M-värde"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "ogiltigt %%U-värde"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "ogiltigt %%s-värde"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "ogiltigt %%C-värde"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "ogiltigt %%E-värde"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "okänd avspecifikation av omlokalisering"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "ogiltig %%xn-kod"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "förutsade Thumb-instruktion"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "förutsade instruktion i villkorlig sekvens"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, c-format
msgid "Unsupported operand for code '%c'"
msgstr "Ej stödd operand för kod â€%câ€"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "ogiltig skiftoperand"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2653,79 +2653,79 @@ msgstr "ogiltig skiftoperand"
msgid "invalid operand for code '%c'"
msgstr "ogiltig operand för kod â€%câ€"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "instruktionen aldrig utförd"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "operand saknas"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
msgid "function parameters cannot have __fp16 type"
msgstr "funktionsparaketrar kan inte ha typen __fp16"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
msgid "functions cannot return __fp16 type"
msgstr "funktioner kan inte reutnrera typen __fp16"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "adressoperander kräver begränsning för X-, Y- eller Z-register"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
msgid "operands to %T/%t must be reg + const_int:"
msgstr "operander till %T/%t måste vara reg + const_int:"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
msgid "bad address, not an I/O address:"
msgstr "felaktig adress, inte en I/O-adress:"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
msgid "bad address, not a constant:"
msgstr "felaktig adress, inte en konstant:"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "felaktig adress, inte (reg+avst):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "felaktig adress, inte post_inc eller pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "internt kompilatorfel. Felaktig adress:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "internt kompilatorfel. Okänt läge:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "ogiltig instruktion:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "felaktig instruktion:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "okänd move-instruktion:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "felaktig skiftinstruktion:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "internt kompilatorfel. Felaktig skift:"
@@ -2741,8 +2741,8 @@ msgstr "ogiltig const_double-operand"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2820,21 +2820,21 @@ msgstr "oväntad operand"
msgid "unrecognized address"
msgstr "okänd adress"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "okänd förmodad konstant"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "oväntad sidoeffekt i adress"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr "oidentifierbar call-operation"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "PIC-register är inte uppsatt"
@@ -2842,7 +2842,7 @@ msgstr "PIC-register är inte uppsatt"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "ogiltig operand i utmatningskod"
@@ -2971,72 +2971,72 @@ msgstr "felaktig operand till output_move_double"
msgid "bad output_condmove_single operand"
msgstr "felaktig operand till output_condmove_single"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "ogiltig UNSPEC som operand"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr "â€%%&†använt utan nÃ¥gon lokal dynamisk TLS-referens"
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "ogiltig operandstorlek för operandkod â€%câ€"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "ogiltig operandtyp vid operandkod â€%câ€"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "operand är inte en villkorskod, ogiltig operandkod â€Dâ€"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "operand är varken en konstant eller en villkorskod, ogiltig operandkod â€Câ€"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "operand är varken en konstant eller en villkorskod, ogiltig operandkod â€Fâ€"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "operand är varken en konstant eller en villkorskod, ogiltig operandkod â€câ€"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "operand är varken en konstant eller en villkorskod, ogiltig operandkod â€fâ€"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, c-format
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "operand är inte en justerbar minnesreferens, ogiltig operandkod â€Hâ€"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "operanden är inte en villkorskod, ogiltig operandkod â€Yâ€"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "ogiltig operandkod â€%câ€"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "ogiltig begränsning för operand"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "okänt instruktionsläge"
@@ -3065,35 +3065,35 @@ msgstr "omgivningsvariabeln DJGPP pekar pÃ¥ fil â€%s†som saknas"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "omgivningsvariabeln DJGPP pekar pÃ¥ fil â€%s†som är trasig"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, c-format
msgid "invalid %%G mode"
msgstr "ogiltigt %%G-läge"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: okänd kod"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "ogiltig konvertering från %<__fpreg%>"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "ogiltig konvertering till %<__fpreg%>"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "ogiltig operation på %<__fpreg%>"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "ogiltig %%P-operand"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "ogiltigt %%p-värde"
@@ -3172,7 +3172,7 @@ msgid "post-increment address is not a register"
msgstr "efterinkrementeringsadress är inte ett register"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "felaktig adress"
@@ -3335,87 +3335,87 @@ msgstr "-mno-altivec avaktiverar vsx"
msgid "bad move"
msgstr "felaktig förflyttning"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, c-format
msgid "invalid %%c value"
msgstr "ogiltigt %%c-värde"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "ogiltigt %%f-värde"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "ogiltigt %%F-värde"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "ogiltigt %%G-värde"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "ogiltig %%j-kod"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "ogiltig %%J-kod"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "ogiltigt %%k-värde"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "ogiltigt %%K-värde"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "ogiltigt %%O-värde"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "ogiltigt %%q-värde"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "ogiltigt %%S-värde"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "ogiltigt %%T-värde"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "ogiltigt %%u-värde"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "ogiltig %%v-kod"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "ogiltigt %%x-värde"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "ogiltigt %%y-värde, försök använda â€Zâ€-begränsningen"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "AltiVec-argument skickat till funktion utan prototyp"
@@ -3514,60 +3514,60 @@ msgstr "ogiltig operand till %%R"
msgid "invalid operand to %%S"
msgstr "ogiltig operand till %%R"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "skapad och använd med olika arkitekturer/ABI:er"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "skapad och använd med olika ABI:er"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "skapad och använd med olika byteordning"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "ogiltig %%Y-operand"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "ogiltig %%A-operand"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "ogiltig %%B-operand"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "ogiltig %%C-operand"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "ogiltig %%D-operand"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "ogiltig %%f-operand"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "ogiltig %%s-operand"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "long long-konstant inte en giltig omedelbar operand"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "flyttalskonstant inte en giltig omedelbar operand"
@@ -3592,7 +3592,7 @@ msgstr "â€oâ€-operand är ej konstant"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: okänd kod"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "ogiltig %%c-operand"
@@ -3607,22 +3607,22 @@ msgstr "ogiltig %%d-operand"
msgid "invalid %%H specifier"
msgstr "ogiltig %%H-specificerare"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, c-format
msgid "invalid %%h operand"
msgstr "ogiltig %%h-operand"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, c-format
msgid "invalid %%I operand"
msgstr "ogiltig %%I-operand"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, c-format
msgid "invalid %%i operand"
msgstr "ogiltig %%i-operand"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, c-format
msgid "invalid %%j operand"
msgstr "ogiltig %%j-operand"
@@ -3632,7 +3632,7 @@ msgstr "ogiltig %%j-operand"
msgid "invalid %%%c operand"
msgstr "ogiltig %%%c-operand"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, c-format
msgid "invalid %%N operand"
msgstr "ogiltig %%N-operand"
@@ -3642,39 +3642,39 @@ msgstr "ogiltig %%N-operand"
msgid "invalid operand for 'r' specifier"
msgstr "ogiltig operand för â€râ€-modifierare"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr "kan inte skriva ut operanden ännu; kod == %d (%c)"
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, c-format
msgid "invalid %%H operand"
msgstr "ogiltig %%H-operand"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, c-format
msgid "invalid %%L operand"
msgstr "ogiltig %%L-operand"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, c-format
msgid "invalid %%M operand"
msgstr "ogiltig %%M-operand"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, c-format
msgid "invalid %%t operand"
msgstr "ogiltig %%t-operand"
# Detta är bara första delen av strängen, stränkonkatenering används.
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52726
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, c-format
msgid "invalid %%t operand '"
msgstr "ogiltig %%t-operand â€"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, c-format
msgid "invalid %%r operand"
msgstr "ogiltig %%r-operand"
@@ -3738,11 +3738,11 @@ msgstr "inget register i adress"
msgid "address offset not a constant"
msgstr "adressavstånd inte en konstant"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "kandidat 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "kandidat 2:"
@@ -3958,7 +3958,7 @@ msgstr "%s:%d: i expansion av konstantuttryck i från %qs"
msgid "candidates are:"
msgstr "kandidater är:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4005,48 +4005,48 @@ msgstr "konvertering konverterar bort konstantskap"
msgid "source type is not polymorphic"
msgstr "källtypen är inte polymorfisk"
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "fel typ på argument till unärt minus"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "fel typ på argument till unärt plus"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "fel typ på argument till bitkomplement"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "fel typ på argument till abs"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "fel typ på argument till konjunktion"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
msgid "in argument to unary !"
msgstr "i argument till unärt !"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr "ingen pre-ökningsoperator för typen"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr "ingen post-ökningsoperator för typen"
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr "ingen pre-minskningsoperator för typen"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr "ingen post-minskningsoperator för typen"
@@ -4299,7 +4299,7 @@ msgstr "Felaktig operator"
msgid "Bad type in constant expression"
msgstr "Felaktig typ i konstant uttryck"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "Oväntat modulslut"
@@ -4327,11 +4327,11 @@ msgstr "block-IF"
msgid "implied END DO"
msgstr "underförstådd END DO"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "tilldelning"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "pekartilldelning"
@@ -4415,47 +4415,47 @@ msgstr "Operanderna till användaroperatorn â€%s†vid %%L är %s/%s"
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "Inkonsistenta ordningar för operator vid %%L och %%L"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr "Slingvariabel"
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
msgid "iterator variable"
msgstr "iteratorvariabel"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr "Startuttryck i DO-slinga"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
msgid "End expression in DO loop"
msgstr "Slututtryck i DO-slinga"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr "Steguttryck i DO-slinga"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr "DEALLOCATE-objekt"
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr "ALLOCATE-objekt"
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr "STAT-variabel"
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr "ERRMSG-variabel"
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr "objekt i READ"
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr "ACQUIRED_LOCK-variabel"
@@ -4464,7 +4464,7 @@ msgstr "ACQUIRED_LOCK-variabel"
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr "Olika CHARACTER-längder (%ld/%ld) i vektorkonstruerare"
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr "Heltalsspill vid beräkning av mängden minne att allokera"
@@ -4534,7 +4534,7 @@ msgstr "Felaktigt returvärde för funktion"
msgid "Memory allocation failed"
msgstr "Minnesallokering misslyckades"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr "Allokering skulle överstiga minnesgräns"
@@ -4738,7 +4738,7 @@ msgstr "ange inte både -march=... och -mcpu=..."
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr "överväg att använda â€-pg†istället för â€-p†med gprof(1)"
@@ -4795,6 +4795,10 @@ msgstr "shared och mdll är inkompatibla"
msgid "static is not supported on TPF-OS"
msgstr "static stöds inte på TPF-OS"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr "överväg att använda â€-pg†istället för â€-p†med gprof(1)"
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "får inte använda både -EB och -EL"
@@ -4823,10 +4827,6 @@ msgstr "-mbig-endian och -mlittle-endian får inte användas tillsammans"
msgid "no processor type specified for linking"
msgstr "ingen processortyp angiven för länkning"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran stödjer inte -E utan -cpp"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 har inte stöd för omvänd byteordning"
@@ -4879,6 +4879,10 @@ msgstr "objc-cpp-output bör undvikas; använd objective-c-cpp-output istället"
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "flaggan -shared stöds för närvarande inte för VAX ELF"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran stödjer inte -E utan -cpp"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni och -femit-class-files är inkompatibla"
@@ -7940,6 +7944,10 @@ msgstr "Samla utgående funktionsargument och ta/släpp det nödvändiga stackut
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr "När RAM skall nås, använd X som hårdvaran framtvingar, d.v.s. använda bara för-dekrementering, efter-inkrementering och indirekt adressering med registret X. Utan denna flagga kan kompilatorn anta att det finns ett adresseringsläge X+konstant liknande Y+konstant och Z+konstant och mata ut instriktioner för att emulera ett sådant adresseringsläge för X."
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr "Enheten har inget SPH-specialfunktionsregister. Denna flagga kommer åsidosättas av kompilatordrivrutinen med de riktiga inställningarna om närvaro/frånvaro av SPH kan avgöras från -mmcu=MCU."
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr "Kända MCU-namn:"
@@ -10272,18 +10280,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Fördefiniera inte systemspecifika och GCC-specifika makron"
#: go/lang.opt:42
+msgid "Add explicit checks for division by zero"
+msgstr "Lägg till explicita kontroller av division med noll"
+
+#: go/lang.opt:46
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
+msgstr "Lägg till explicita kontroller av spill vid division av INT_MIN / -1"
+
+#: go/lang.opt:50
msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr "-fgo-dump-<typ>\tSkriv ut Go-framändens interna information"
-#: go/lang.opt:46
+#: go/lang.opt:54
msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
msgstr "-fgo-optimize-<typ>\tSlå på optimeringspass i framänden"
-#: go/lang.opt:50
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr "-fgo-pkgpath=<sträng>\tSätt Go-paketsökväg"
+
+#: go/lang.opt:62
msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
msgstr "-fgo-prefix=<sträng>\tSätt paketspecifika prefix för exporterade Go-namn"
-#: go/lang.opt:54
+#: go/lang.opt:66
msgid "Functions which return values must end with return statements"
msgstr "Funktioner med returvärden måste sluta med retursatser"
@@ -11797,224 +11817,231 @@ msgstr "Skapa ett delat bibliotek"
msgid "Create a position independent executable"
msgstr "Skapa ett positionsoberoende körbart program"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
msgid "invalid use of type"
msgstr "ogiltigt användning av typ"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-msgid "floating point constant truncated to integer"
-msgstr "flyttalskonstant avkortas till heltal"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr "konstant refererar till sig själv"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
msgid "expected numeric type"
msgstr "numerisk typ förväntades"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+msgid "expected boolean type"
+msgstr "boolesk typ förväntades"
+
+#: go/gofrontend/expressions.cc:3911
msgid "expected integer or boolean type"
msgstr "heltal eller boolesk typ förväntades"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
msgid "invalid operand for unary %<&%>"
msgstr "ogiltig operand till unärt %<&%>"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
msgid "expected pointer"
msgstr "pekare förväntades"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
msgid "incompatible types in binary expression"
msgstr "inkompatibla typer i binärt uttryck"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
msgid "shift of non-integer operand"
msgstr "skift med operand som inte är heltal"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr "skiftantal är inte teckenlöst heltal"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
msgid "negative shift count"
msgstr "negativt skiftantal"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
msgid "object is not a method"
msgstr "objektet är inte en metod"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
msgid "method type does not match object type"
msgstr "metodtypen stämmer inte med objekttypen"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
msgid "invalid use of %<...%> with builtin function"
msgstr "ogiltig användning av %<...%> med inbyggd funktion"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
msgid "not enough arguments"
msgstr "inte tillräckligt med argument"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
msgid "too many arguments"
msgstr "för många argument"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
msgid "argument 1 must be a map"
msgstr "argument 1 måste vara en avbildning"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
msgid "invalid type for make function"
msgstr "ogiltigt typ för make-funktion"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr "en längd behövs när en skiva allokeras"
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
msgid "bad size for make"
msgstr "felaktig storlek för make"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr "felaktig kapacitet när en skiva görs"
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
msgid "too many arguments to make"
msgstr "för många argument till make"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
msgid "argument must be array or slice or channel"
msgstr "argumentet måste vara en vektor eller skiva eller kanal"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr "argumentet måste vara en sträng eller vektor eller skiva eller avbildning eller kanal"
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
msgid "unsupported argument type to builtin function"
msgstr "argumenttyp som inte stödjs till inbyggd funktion"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
msgid "argument must be channel"
msgstr "argumentet måste vara en kanal"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr "kan inte stänga en kanal endast för mottagning"
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
msgid "argument must be a field reference"
msgstr "argumentet måste vara en fältreferens"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
msgid "left argument must be a slice"
msgstr "vänstra argumentet måste vara en skiva"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr "elementtyper måste vara samma"
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
msgid "first argument must be []byte"
msgstr "första argumentet måste vara []byte"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
msgid "second argument must be slice or string"
msgstr "andra argumentet måste vara en skiva eller sträng"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
msgid "argument 2 has invalid type"
msgstr "parameter 2 har ogiltig typ"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
msgid "argument must have complex type"
msgstr "argumentet måste ha komplex typ"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
msgid "complex arguments must have identical types"
msgstr "komplexa argument måste ha identiska typer"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
msgid "complex arguments must have floating-point type"
msgstr "komplexa argument måste ha flyttalstyp"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+msgid "invalid use of %<...%> with non-slice"
+msgstr "ogiltig användning av %<...%> med annat än skiva"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
msgid "expected function"
msgstr "en funktion förväntades"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
msgid "incompatible type for receiver"
msgstr "inkompatibel typ för mottagare"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "ogiltig användning av %<.%> i en funktion som inte är variadisk"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
msgid "number of results does not match number of values"
msgstr "antalet resultat stämmer inte med antalet värden"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr "indexet måste vara ett heltal"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr "skivslut måste vara ett heltal"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr "skiva av oadresserbart värde"
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
msgid "incompatible type for map index"
msgstr "inkompatibel typ för avbildningsindex"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr "gränssnitt eller pekare till gränssnitt förväntades"
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
msgid "too many expressions for struct"
msgstr "för många uttryck för post"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
msgid "too few expressions for struct"
msgstr "för få argument för post"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr "för många element i sammansatt literal"
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
msgid "invalid unsafe.Pointer conversion"
msgstr "ogiltiga unsafe.Pointer-konvertering"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr "typförsäkran är endast giltigt för gränssnittstyper"
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr "omöjlig typförsäkran: typen implementerar inte ett gränssnitt"
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
msgid "expected channel"
msgstr "kanal förväntades"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr "ogiltig receive på kanal endast för sändning"
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr "parenteser krävs runt denna sammansatta literal för att undvika tvetydigheter i tolkningen"
+
#: go/gofrontend/statements.cc:590
msgid "invalid left hand side of assignment"
msgstr "ogiltig vänsterhandssida i tilldelning"
@@ -12043,19 +12070,19 @@ msgstr "för många värden i retursats"
msgid "expected boolean expression"
msgstr "booleskt uttryck förväntades"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
msgid "incompatible types in send"
msgstr "inkompatibla typer i send"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr "ogiltig send på kanal endast för mottagning"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr "för många variabler för intervallklausul med kanal"
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr "en intervallklausul måste ha vektor-, skiv-, sträng-, avbildnings- eller kanaltyp"
@@ -12105,71 +12132,71 @@ msgstr "explicit konverting behövs"
msgid "cannot use type %s as type %s"
msgstr "det går inte att använda typ %s som typ %s"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
msgid "different receiver types"
msgstr "olika mottagartyper"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
msgid "different number of parameters"
msgstr "olika antal parametrar"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
msgid "different parameter types"
msgstr "olika parametertyper"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr "olika varargs"
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr "olika antal resultat"
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr "olika resultattyper"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr "implicit tilldelning av dolt fält %4$s%5$s%6$s i %1$s%2$s%3$s"
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr "en explicit konvertering behövs, metoden %s%s%s saknas"
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, c-format
msgid "incompatible type for method %s%s%s"
msgstr "inkompatibel typ för metoden %s%s%s"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "inkompatibel typ för metoden %s%s%s (%s)"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr "pekare till gränssnittstyp har inga metoder"
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
msgid "type has no methods"
msgstr "typen har inga metoder"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr "tvetydig metod %s%s%s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, c-format
msgid "missing method %s%s%s"
msgstr "metoden saknas %s%s%s"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr "metoden %s%s%s kräver en pekare"
@@ -12236,7 +12263,7 @@ msgstr "tredje argumentet till %<__builtin_prefetch%> måste vara en konstant"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "ogiltigt tredje argument till %<__builtin_prefetch%>; använder noll"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "För många argument till funktionen %<va_start%>"
@@ -12258,7 +12285,7 @@ msgstr "(alltså skall du skicka %qT och inte %qT till %<va_arg%>)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "om denna kod nås, kommer programmet att avbryta"
@@ -12340,7 +12367,7 @@ msgstr "argument 1 till __atomic_is_lock_free är inte heltal"
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "%Kogiltigt användning av %<__builtin_va_arg_pack ()%>"
@@ -12434,8 +12461,8 @@ msgstr "%Kförsök att frigöra ett icke-heap-objekt"
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "värdet av typen void ignoreras inte vilket bör göras"
@@ -12711,7 +12738,7 @@ msgstr "deklaration av %q+D skuggar en global deklaration"
msgid "declaration of %q+D shadows a previous local"
msgstr "deklaration av %q+D skuggar en tidigare lokal deklaration"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "skuggad deklaration är här"
@@ -12816,7 +12843,7 @@ msgstr "switch hoppar in i satsuttryck"
msgid "%qE defined as wrong kind of tag"
msgstr "%qE definierad som fel sorts tagg"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "ogiltigt användning av %<restrict%>"
@@ -12934,7 +12961,7 @@ msgstr "parametern %qD är initierad"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "objekt med variabel storlek kan inte initieras"
@@ -12944,7 +12971,7 @@ msgstr "objekt med variabel storlek kan inte initieras"
msgid "variable %qD has initializer but incomplete type"
msgstr "variabeln %qD har initierare men ofullständig typ"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "inline-funktionen %q+D har fått attributet noinline"
@@ -12974,7 +13001,7 @@ msgstr "vektorstorlek saknas i %q+D"
msgid "zero or negative size array %q+D"
msgstr "noll eller negativ storlek på vektorn %q+D"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "lagringsstorlek på %q+D är okänd"
@@ -13084,7 +13111,7 @@ msgstr "storleken på vektorn kan inte beräknas"
msgid "variable length array %qE is used"
msgstr "vektor %qE med variabel längd används"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr "vektor med variabel längd används"
@@ -13169,7 +13196,7 @@ msgstr "lagringsklass angiven för parameter %qE"
msgid "storage class specified for unnamed parameter"
msgstr "lagringsklass angiven för namnlös parameter"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "lagringsklass angiven för typnamn"
@@ -13318,7 +13345,7 @@ msgstr "typnamn är deklarerat som en funktion som returnerar en vektor"
msgid "function definition has qualified void return type"
msgstr "funktionsdefinition som har kvalificerad void-returtyp"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "typkvalificerare ignoreras för funktions returtyp"
@@ -13429,7 +13456,7 @@ msgstr "ISO C förbjuder const- eller volatile-funktionstyper"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "en medlem av an post eller union får inte ha variabel typ"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "variabel eller fält %qE deklarerad void"
@@ -13852,7 +13879,7 @@ msgstr "argument %qD stämmer inte med inbyggd prototyp"
msgid "argument %qD doesn%'t match prototype"
msgstr "argument %qD stämmer inte med prototypen"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "ingen retursats i funktion som returnerar icke-void"
@@ -14045,7 +14072,7 @@ msgstr "identifieraren %qE står i konflikt med ett nyckelord i C++"
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C förbjuder tomma översättningsenheter"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C tillåter inte extra %<;%> utanför funktioner"
@@ -14055,7 +14082,7 @@ msgstr "ISO C tillåter inte extra %<;%> utanför funktioner"
msgid "unknown type name %qE"
msgstr "okänt typnamn %qE"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "deklarationsspecificerare förväntades"
@@ -14065,7 +14092,7 @@ msgstr "deklarationsspecificerare förväntades"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "%<;%>, identifierare eller %<(%> förväntades"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "prefixattribut ignoreras för metoder"
@@ -14085,7 +14112,7 @@ msgstr "oväntat attribut"
msgid "data definition has no type or storage class"
msgstr "datadefinition har ingen typ eller lagringsklass"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "%<,%> eller %<;%> förväntades"
@@ -14113,7 +14140,7 @@ msgstr "ISO C99 stödjer inte %<_Static_assert%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 stödjer inte %<_Static_assert%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "strängkonstant förväntades"
@@ -14140,18 +14167,18 @@ msgstr "statisk försäkran misslyckades: %E"
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "identifierare förväntades"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "komma i slutet av uppräkningslista"
@@ -14281,7 +14308,7 @@ msgstr "ISO C90 förbjuder blandade deklarationer och kod"
msgid "expected %<}%> before %<else%>"
msgstr "%<}%> förväntades före %<else%>"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr "%<else%> utan ett föregående %<if%>"
@@ -14310,17 +14337,17 @@ msgstr "identifierare eller %<*%> förväntades"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "sats förväntades"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "föreslår klamrar runt tom kropp i en %<if%>-sats"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "föreslår klamrar runt tom kropp i en %<else%>-sats"
@@ -14385,7 +14412,7 @@ msgstr "ISO C tillåter inte %<%E (uttryck)%>"
msgid "cannot take address of %qs"
msgstr "kan inte ta adressen till %qs"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "uttryck förväntades"
@@ -14425,257 +14452,257 @@ msgstr "%<__builtin_complex%>-operand är inte av en reel binär flyttalstyp"
msgid "%<__builtin_complex%> operands of different types"
msgstr "operander till %<__builtin_complex%> av olika typer"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "fel antal argument till %<__builtin_shuffle%>"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "sammansatt literal har variabel storlek"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr "sammansatta literal kvalificerad med adressrymdskvalificerare"
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 förbjuder sammansatta literaler"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "identifierare eller %<)%> förväntades"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr "extra semikolon"
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "extra semikolon angivet i metoddefintion"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr "metodattribut måste anges endast i slutet"
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr "%<;%> eller %<{%> förväntades efter metodattributsdefinition"
-#: c-parser.c:7753
+#: c-parser.c:7758
#, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "objective-c-metoddeklaration förväntas"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "ingen typ eller lagringsklass kan anges här,"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr "okänt egenskapsattribut"
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "%<=%> saknas (efter attributet %<getter%>)"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "%<=%> saknas (efter attributet %<setter%>)"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "attributet %<setter%> kan bara anges en gång"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr "setter-namn måste avslutas med %<:%>"
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "attributet %<getter%> kan bara anges en gång"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%> får bara användas i sammansatta satser"
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr "%<#pragma omp flush%> får bara användas i sammansatta satser"
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%> får bara användas i sammansatta satser"
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr "%<#pragma omp taskyield%> får bara användas i sammansatta satser"
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr "%<#pragma omp section%> får bara användas i %<#pragma omp sections%>-konstruktion"
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%> måste komma först"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr "för många %qs-klausuler"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "collapse-argument behöver ett positivt konstant heltalsuttryck"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "%<none%> eller %<shared%> förväntades"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr "heltalsuttryck förväntades"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr "%<num_threads%>-värdet måste vara positivt"
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> eller %<max%> förväntades"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr "%<runtime%>-schemaläggning tar ingen %<chunk_size%>-parameter"
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr "%<auto%>-schemaläggning tar ingen %<chunk_size%>-parameter"
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "ogiltig schedule-sort"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "förväntade %<#pragma omp%>-klausul"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs är inte giltigt för %qs"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "ogiltig form på %<#pragma omp atomic%>"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "ogiltig operator för %<#pragma omp atomic%>"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "%<(%> eller filslut förväntades"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr "for-sats förväntades"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "iterationsdeklaration eller initiering förväntades"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr "inte tillräckligt med perfekt nästade slingor"
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr "kollapsade slingor inte perfekt nästade"
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "iterationsvariabel %qD får inte vara firstprivate"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr "%qD är inte en variabel"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%qE är deklarerad %<threadprivate%> efter första användningen"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "automatisk variabel %E kan inte vara %<threadprivate%>"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%<threadprivate%> %qE har ofullständig typ"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr "%<__transaction_cancel%> utan att stöd för transaktionsminne är aktiverat"
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr "%<__transaction_cancel%> inom en %<__transaction_relaxed%>"
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr "yttre %<__transaction_cancel%> som inte är inom en yttre %<__transaction_atomic%>"
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr " eller en %<transaction_may_cancel_outer%>-funktion"
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr "%<__transaction_cancel%> inte inom %<__transaction_atomic%>"
@@ -14685,7 +14712,7 @@ msgstr "%<__transaction_cancel%> inte inom %<__transaction_atomic%>"
msgid "%qD has an incomplete type"
msgstr "%qD har en ofullständig typ"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "ogiltig användning av void-uttryck"
@@ -14751,67 +14778,72 @@ msgstr "pekares måltyper är inkompatibla i C++"
msgid "function return types not compatible due to %<volatile%>"
msgstr "funktionsreturtyper är inte kompatibla på grund av %<volatile%>"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "aritmetik på pekare till ofullständig typ"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr "konvertering av en sammansatt vektorliteral till en pekare är felaktigt i C++"
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT har ingen medlem med namnet %qE"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "begäran av medlem %qE i något som inte är en post eller union"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "derefererar pekare till ofullständig typ"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "derefererar %<void *%>-pekare"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "indexerat värde är varken en vektor eller pekare"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "fältindex är inte ett heltal"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "indexerat värde är en funktionspekare"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr "indexvärdet är utanför gränsen"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C förbjuder indexering av %<register%>-vektor"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 förbjuder indexering av icke-l-värde-vektor"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr "uppräkningskonstant definierad här"
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "anropat objekt %qE är inte en funktion"
@@ -14819,370 +14851,370 @@ msgstr "anropat objekt %qE är inte en funktion"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "funktion anropad via en inkompatibel typ"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "funktion med kvalificerad void-returtyp anropad"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "sista argumentet till __builtin_shuffle måste vara en heltalsvektor"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, gcc-internal-format
msgid "__builtin_shuffle arguments must be vectors"
msgstr "argumenten till __builtin_shuffle måste vara vektorer"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr "argumentvektorerna till __builtin_shuffle måste ha samma typ"
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr "__builtin_shuffle antalet element i argumentvektorn och maskvektorn skall vara samma"
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr "__builtin_shuffle argumentvektorns inre typ måste ha samma storlek som den inre typen för masken"
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "för många argument till metoden %qE"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "för många argument till funktionen %qE"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, gcc-internal-format
msgid "declared here"
msgstr "deklarerad här"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "typen på formell parameter %d är ofullständig"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "skickar argument %d till %qE som heltal istället för flyttal på grund av prototyp"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "skickar argument %d till %qE som heltal istället för komplext på grund av prototyp"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "skickar argument %d till %qE som komplext istället för flyttal på grund av prototyp"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "skickar argument %d till %qE som flyttal istället för heltal på grund av prototyp"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "skickar argument %d till %qE som komplext istället för heltal på grund av prototyp"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "skickar argument %d till %qE som flyttal istället för komplext på grund av prototyp"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "skickar argument %d till %qE som %<float%> istället för %<double%> på grund av prototyp"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "skickar argument %d till %qE som som %qT istället för %qT på grund av prototyp"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "skickar argument %d till %qE med annan vidd på grund av prototyp"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "skickar argument %d till %qE teckenlöst på grund av prototyp"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "skickar argument %d till %qE med tecken på grund av prototyp"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "implicit konvertering från %qT till %qT när argument skickas till en funktion"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "för få argument till funktionen %qE"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "jämförelse med strängliteral resulterar i odefinierat beteende"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "jämförelse mellan %qT och %qT"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "pekare av typ %<void *%> använd i subtraktion"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "pekare till funktion använd i subtraktion"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C stödjer inte %<~%> för komplex konjugering"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "fel typ på argument till unärt utropstecken"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr "ökning av uppräkningsvärde är ogiltigt i C++"
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr "minskning av uppräkningsvärde är ogiltigt i C++"
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C stödjer inte %<++%> och %<--%> på komplexa typer"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "fel typ på argument till ökning"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "fel typ på argument till minskning"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "ökning av pekare på okänd post"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "minskning av pekare på okänd post"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr "tar adressen till uttryck av typ %<void%>"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "tilldelning till endast läsbar plats %qE"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "ökning av endast läsbar plats %qE"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "minskning av endast läsbar plats %qE"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "kan inte ta adressen till bitfält %qD"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "global registervariabel %qD använd i nästad funktion"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "registervariabel %qD använd i nästad funktion"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "adress till global registervariabel %qD efterfrågad"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "adress på registervariabeln %qD efterfrågad"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "icke-l-värde-vektor i villkorsuttryck"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "implicit konvertering från %qT till %qT för att stämma med andra resultat i villkor"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C förbjuder villkorliga uttryck med bara en sida void"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "pekare till skilda adressrymder använda i villkorsuttryck"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C förbjuder villkorliga uttryck mellan %<void *%> och funktionspekare"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "pekartyper stämmer inte i villkorsuttryck"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "pekar-/heltalstyper stämmer inte i villkorsuttryck"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "typer stämmer inte i villkorsuttryck"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "vänster operand av kommauttryck har ingen effekt"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
msgid "cast adds %q#v qualifier to function type"
msgstr "typkonvertering lägger %q#v-kvalificerare till funktionstyp"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "typkonvertering kastar bort %q#v-kvalificerare från pekarmåltyp"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr "för att vara säker måste alla mellanliggande pekare i typkonvertering från %qT till %qT vara %<const%>-kvalificerade"
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "typkonvertering anger vektortyp"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "typkonvertering anger funktionstyp"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C förbjuder typkonvertering av ickeskalärer till samma typ"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C förbjuder typkonvertering till unionstyper"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "typkonvertering till unionstyp från typ som ej finns i unionen"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr "typkonvertering till adressrymdspekare %s från skild generisk adressrymdspekare "
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr "typkonvertering till generisk adressrymdspekare från skild adressrymdspekare till %s"
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr "typkonvertering från adressrymdspekare till %s från skild adressrymdspekare till %s"
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "typkonvertering ökar kravet på justering av måltypen"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "typkonvertering från pekare till heltal av annan storlek"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "typkonvertering från funktionsanrop av typ %qT till typ %qT matchar inte"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "typkonvertering till pekare från heltal med annan storlek"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C förbjuder konvertering av funktionspekare till objektpekartyp"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C förbjuder konvertering av objektpekare till funktionspekartyp"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr "definition av en typ i en typkonvertering är ogiltigt i C++"
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr "uppräkningskonvertering i tilldelning är ogiltigt i C++"
@@ -15194,683 +15226,683 @@ msgstr "uppräkningskonvertering i tilldelning är ogiltigt i C++"
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "%qT förväntades men argumentet har typ %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "enum-konvertering när argument %d till %qE skickades är ogiltigt i C++"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr "enum-konvertering i initiering är ogiltigt i C++"
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr "enum-konvertering i retursats är ogiltigt i C++"
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "kan inte skicka rvalue till referensparameter"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "att skicka argument %d till %qE skapar en %q#v-kvalificerad funktionspekare från en okvalificerad"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "tilldelning skapar en %q#v-kvalificerad funktionspekare från en okvalificerad"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "initiering skapar en %q#v-kvalificerad funktionspekare från en okvalificerad"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "retur skapar en %q#v-kvalificerad funktionspekare från en okvalificerad"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "att skicka argument %d till %qE kastar %qv-kvalificerare från pekarmåltyp"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "tilldelning kastar %qv-kvalificerare från pekarmåltyp"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "initiering kastar %qv-kvalificerare från pekarmåltyp"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
msgid "return discards %qv qualifier from pointer target type"
msgstr "retur kastar %qv-kvalificerare från pekarmåltyp"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C förbjuder argumentkonvertering till unionstyp"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "begäran om implicit konvertering från %qT till %qT tillåts inte i C++"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "skickar argument %d till %qE från pekare till adressutrymme som inte är inneslutet"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr "tilldelning från pekare till adressutrymme som inte är inneslutet"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "initiering från pekare till adressutrymme som inte är inneslutet"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr "retur från pekare till ej omgivande adressrymd"
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "argumentet %d till %qE kan vara kandidat för ett formatattribut"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "vänsterhandssida av tilldelning kan vara en kandidat för ett formatattribut"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "vänsterhandssida av initiering kan vara en kandidat för ett formatattribut"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "returtypen kan vara en kandidat för ett formatattribut"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C förbjuder att skicka argument %d till %qE mellan funktionspekare och %<void *%>"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C förbjuder tilldelning mellan funktionspekare och %<void *%>"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C förbjuder initiering mellan funktionspekare och %<void *%>"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C förbjuder retur mellan funktionspekare och %<void *%>"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "pekarmål när argument %d till %qE skickades skiljer i teckenhet"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "pekarmål i tilldelning skiljer i teckenhet"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "pekarmål i initiering skiljer i teckenhet"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "pekarmål i retur skiljer i teckenhet"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "skickar argument %d till %qE från inkompatibel pekartyp"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "tilldelning från inkompatibel pekartyp"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "initiering från inkompatibel pekartyp"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "retur från inkompatibel pekartyp"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "ogiltig användning av icke-l-värde-vektor"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "att skicka argument %d till %qE skapar pekare av ett heltal utan typkonvertering"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "tilldelning skapar pekare av heltal utan typkonvertering"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "initiering skapar pekare från heltal utan typkonvertering"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "retur skapar pekare från heltal utan typkonvertering"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "att skicka argument %d till %qE skapar pekare från heltal utan typkonvertering"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "tilldelning skapar heltal från pekare utan typkonvertering"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "initiering skapar heltal från pekare utan typkonvertering"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "retur skapar heltal från pekare utan typkonvertering"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "inkompatibel typ för argument %d av %qE"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "inkompatibla typer i tilldelning till typ %qT från typ %qT"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "inkompatibla typer i när typ %qT inierades med typ %qT"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "inkompatibla typer när typ %qT returnerades men %qT förväntades"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "traditionell C tillåter inte aggregatinitiering"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(i närheten av initiering av %qs)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "vektor initierad från strängkonstant inom parentes"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "initiering av medlem som är en flexibel vektor"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "char-vektor initierad från bred sträng"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "bred teckenvektor initierad från icke-bred sträng"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "bred teckenvektor initierad från en inkompatibel bred sträng"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "vektor av typ som inte passar initierad från strängkonstant"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "vektor initierad från icke-konstant vektoruttryck"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "initierarelement är inte konstant"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "initierarelement är inte ett konstant uttryck"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "initierarelement är inte beräkningsbart vid laddtidpunkt"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "ogiltig initierare"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "ogenomskinliga vektortyper kan inte initieras"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "extra klammergrupp vid slutet av initierare"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "klamrar saknas runt initierare"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "klamrar runt skalär initierare"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "initiering av medlem som är en flexibel vektor i nästat sammanhang"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "initierare saknas"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "tom skalär initierare"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "extra element i skalär initierare"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "vektorindex i initierare för annat än vektor"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "fältnamn i initierare för annat än post eller union"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "vektorindex i initierare inte av heltalstyp"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "vektorindex i initierare inte av ett konstant heltalsuttryck"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "ickekonstant vektorindex i initierare"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "vektorindex i initierare överskrider vektorns storlek"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "tomt indexintervall i initierare"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "vektorindexintervall i initierare överskrider vektorns gränser"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "okänt fält %qE angivet i initierare"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "initierat fält med sidoeffekter överskrivet"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "initierat fält överskrivet"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "överflödiga element i teckenvektorinitierare"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "överflödiga element i postinitierare"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "icke-statisk initiering av an flexibel vektormedlem"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "överflödiga element i unioninitierare"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "traditionell C tillåter inte initiering av unioner"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "överflödiga element i vektorinitierare"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "överflödiga element i vector-initierare"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "överflödiga element i skalärinitierare"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C förbjuder %<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "funktion deklarerad %<noreturn%> har en %<return%>-sats"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "%<return%> utan värde i funktion som returnerar icke-void"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "%<return%> med värde i funktion som returnerar void"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "ISO C förbjuder %<return%> med värde i funktion som returnerar void"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "funktionen returnerar adress till en lokal variabel"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch-argument är inte ett heltal"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "%<long%>-switch-uttryck konverteras inte till %<int%> i ISO C"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "case-etikett är inte ett konstant heltalsuttryck"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case-etikett är inte i en switch-sats"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "%<default%>-etikett som inte ligger i en switch-sats"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "föreslår uttryckliga klamrar för att undvika tvetydighet i %<else%>"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break-sats som inte är i en loop eller switch"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue-sats som inte är i en loop"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "break-sats använd med OpenMP-for-slinga"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "sats utan effekt"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "uttryckssats har ofullständig typ"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr "konvertering av skalär till vektor innebär avhuggning"
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "högershiftoperanden är negativ"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "högershiftoperanden >= storleken på typen"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "vänstershiftoperanden är negativ"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "vänstershiftoperanden >= storleken på typen"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, gcc-internal-format
msgid "comparing vectors with different element types"
msgstr "jämför vektorer med skilda elementtyper"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr "jämför vektorer med olika antal element"
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "jämföra flyttal med == eller != är osäkert"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr "jämförelsen kommer alltid beräknas till %<false%> för adressen till %qD kommer aldrig att vara NULL"
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr "jämförelsen kommer alltid beräknas till %<true%> för adressen till %qD kommer aldrig att vara NULL"
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr "jämförelse av pekare till skilda adressutrymmen"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C förbjuder jämförelse mellan %<void *%> och funktionspekare"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "jämförelse av skilda pekartyper saknar en typkonvertering"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "jämförelse mellan pekare och heltal"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "jämförelse av kompletta och ofullständiga pekare"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C förbjuder ordningsjämförelse på pekare till funktioner"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr "ordningsjämförelse av pekare med nollpekare"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "ordningsjämförelse av pekare med heltalet noll"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "implicit konvertering från %qT till %qT för att matcha den andra operanden i binärt uttryck"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "vektor använd som inte kan konverteras till en pekare där en skalär krävs"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "struct-typvärde använt där skalär krävs"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "värde av uniontyp använt där skalär krävs"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr "vektortyp använd där skalär krävs"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "%qE har ogiltig typ för %<reduction%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE har ogiltig typ för %<reduction(%s)%>"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE måste vara %<threadprivate%> för %<copyin%>"
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE är inte en variabel i klausul %qs"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr "%qE förekommer mer än en gång i dataklausuler"
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "%qE är inte en variabel i klausul %<firstprivate%>"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "%qE är inte en variabel i klausul %<lastprivate%>"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qE är förutbestämd som %qs för %qs"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr "C++ kräver en befodrad typ, inte en uppräkningstyp, i %<va_arg%>"
@@ -15880,7 +15912,7 @@ msgstr "C++ kräver en befodrad typ, inte en uppräkningstyp, i %<va_arg%>"
msgid "function call has aggregate value"
msgstr "funktionsanrop har sammansatt värde"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "storleken på variabeln %q+D är för stor"
@@ -16690,52 +16722,52 @@ msgstr "%s: kan inte öppna som COFF-fil"
msgid "library lib%s not found"
msgstr "biblioteket lib%s finns inte"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "kan inte konvertera till en pekartyp"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "pekarvärde använd där ett flyttalsvärde förväntades"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "sammansatt värde använt där ett flyttalsvärde förväntades"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "konvertering till ofullständig typ"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr "det går inte att konvertera mellan vektorvärden av olika storlek"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "sammansatt värde användes där ett heltal förväntades"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "pekarvärde använt där ett komplext värde förväntades"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "sammansatt värde använt där ett komplext värde förväntades"
-#: convert.c:965
+#: convert.c:963
#, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "det går inte att konvertera värden till en vektor"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr "sammansatt värde använt där ett fixdecimalvärde förväntades"
@@ -16890,7 +16922,7 @@ msgstr "dominerare av %d vara %d, inte %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr "multipla EH-personligheter stöds endast med assemblerare som stödjer direktivet .cfi.personality."
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr "odelegitimerad UNSPEC %s (%d) funnen på variabelplats"
@@ -16980,42 +17012,42 @@ msgstr "verify_eh_tree misslyckades"
msgid "stack limits not supported on this target"
msgstr "stackgränser stöds inte på denna målarkitektur"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr "flera åtkomster av flyktig postmedlem på grund av attributet packed"
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr "flera åtkomster av flyktigt postbitfält på grund av attributet packed"
-#: expmed.c:1800
+#: expmed.c:1820
#, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr "feljusterad åtkomst använd för postmedlem"
-#: expmed.c:1803
+#: expmed.c:1823
#, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr "feljusterad åtkomst använd för postbitfält"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr "när ett flyktigt objekt sträcker sig över flera typstora platser måste kompilatorn välja mellan att använda en enda feljusterad åtkomst för att bevara flyktigheten, eller använder flera justerade åtkomster för att undvika fel vid körtillfället; denna kod kan misslyckas vid körning om maskinvaran inte tillåter denna åtkomst"
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr "lokal ram otillgänglig (naken funktion?)"
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%Kanrop av %qs deklarerad med attributet error: %s"
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "%K anrop av %qs deklarerad med attributet warning: %s"
@@ -17090,7 +17122,7 @@ msgstr "antar att teckenspill inte förekommer vid förenkling av X ± K1 jmf K2
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr "antar att teckenspill inte förekommer vid kombination av konstanter runt en jämförelse"
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "vikningskontroll: originalträdet ändrat av vikning"
@@ -17100,7 +17132,7 @@ msgstr "vikningskontroll: originalträdet ändrat av vikning"
msgid "total size of local objects too large"
msgstr "total storlek på lokala objekt är för stor"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "omöjlig begränsning i %<asm%>"
@@ -17544,77 +17576,77 @@ msgstr "bytekodström: okänd GIMPLE-satstagg %s"
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "gimple-kontroll: %s(%s) förväntades, har %s(%s) i %s, vid %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "använder resultat från funktion som returnerar %<void%>"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "ogiltigt l-värde i asm-utdata %d"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr "icke-minnesindata %d måste stanna i minnet"
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "minnesindata %d är inte direkt adresserbar"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr "trådprivat variabel %qE använd i obunden uppgift"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr "omgivande uppgift"
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr "%qE inte angiven i omgivande parallel"
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr "omgivande parallel"
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr "instansvariabel %qE skall vara privat"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr "iterationsvariabel %qE får inte vara firstprivate"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr "iterationsvariabel %qE skall inte vara reduction"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr "%s-variabel %qE är privat i yttre sammanhang"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "gimplification misslyckades"
-#: godump.c:1214
+#: godump.c:1234
#, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "det gick inte att stänga Go-dump-filen: %m"
-#: godump.c:1226
+#: godump.c:1246
#, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "det gick inte att öppna Go-dump-filen %qs: %m"
@@ -17669,7 +17701,7 @@ msgstr "Graphite-slingoptimeringar kan inte användas"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr "ipa-inline-sammanfattning saknas i indatafil"
@@ -17808,48 +17840,48 @@ msgstr "variabeln %qD omdeklarerad som en funktion"
msgid "function %qD redeclared as variable"
msgstr "funktionen %qD omdeklarerad som en variabel"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "barriärregion får inte vara nära innesluten inuti arbetsdelande, kritisk, ordnad, huvud- eller explicit uppgiftsregion"
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "arbetsdelande region får inte vara nära innesluten inuti arbetsdelande, kritisk, ordnad, huvud- eller explicit uppgiftsregion"
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr "huvudregion får inte vara nära innesluten inuti arbetsdelande eller explicit uppgiftsregion"
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr "ordnad region får inte vara nära innesluten inuti kritisk eller explicit uppgiftsregion"
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr "ordnad region måste vara nära innesluten inuti en slinga med en ordnad klausul"
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr "kritisk region får inte vara innesluten inuti en kritisk region med samma namn"
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr "ogiltig utgång från OpenMP strukturerat block"
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr "ogiltig ingång till OpenMP strukturerat block"
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr "ogiltig gren till/från OpenMP-strukturerat block"
@@ -17955,7 +17987,7 @@ msgstr "-freorder-blocks-and-partition fungerar inte med undantag på denna arki
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition stödjer inte upprullningsinformation på denna arkitektur"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition fungerar inte på denna arkitektur"
@@ -18319,9 +18351,9 @@ msgstr "det går inte att använda %qs som ett anropsanvänt register"
msgid "can%'t use %qs as a fixed register"
msgstr "det går inte att använda %qs som ett fast register"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "okänt registernamn: %s"
@@ -18401,12 +18433,12 @@ msgstr "kan inte hitta ett register att spilla i klass %qs"
msgid "%<asm%> operand requires impossible reload"
msgstr "%<asm%>-operand kräver omöjlig omlastning"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "%<asm%>-operandbegränsningar inkompatibla med operandstorlek"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "utdataoperand är konstant i %<asm%>"
@@ -18626,7 +18658,7 @@ msgstr "attributet packed medför ineffektiv justering"
msgid "packed attribute is unnecessary"
msgstr "attributet packed är onödigt"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "justeringen av vektorelement är större än elementstorleken"
@@ -18841,7 +18873,7 @@ msgstr "ogiltig volatil användning av %qD inuti transaktion"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr "%<transaction_may_cancel_outer%>-funktionsanrop som inte är inuti en yttre transaktion eller %<transaction_may_cancel_outer%>"
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr "osäkert funktionsanrop av %qD inuti atomär transaktion"
@@ -18856,7 +18888,7 @@ msgstr "osäkert funktionsanrop av %qE inuti atomär transaktion"
msgid "unsafe indirect function call within atomic transaction"
msgstr "osäkert indirekt funktionsanrop inuti en atomär transaktion"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr "osäkert funktionsanrop av %qD inuti %<transaction_safe%>-funktion"
@@ -18871,7 +18903,7 @@ msgstr "osäkert funktionsanrop av %qE inuti %<transaction_safe%>-funktion"
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr "osäkert indirekt funktionsanrop inuti en %<transaction_safe%>-funktion"
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr "asm är inte tillåtet i en atomär transaktion"
@@ -18906,614 +18938,614 @@ msgstr "yttre transaktion i %<transaction_may_cancel_outer%>-funktion"
msgid "outer transaction in %<transaction_safe%> function"
msgstr "yttre transaktion i %<transaction_safe%>-funktion"
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "%Kasm är inte tillåtet i en %<transaction_safe%>-funktion"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "konstant inte omräknad när ADDR_EXPR ändrades"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "sidoeffekter inte omräknade när ADDR_EXPR ändrades"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr "DECL_GIMPLE_REG_P satt på en variabel vars adress tas"
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "SSA-namn i frilista men fortfarande refererad"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr "INDIRECT_REF i gimple IL"
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "ogiltig första operand till MEM_REF"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "ogiltig avståndsoperand till MEM_REF"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR med villkor som alltid är falskt"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr "MODIFY_EXPR förväntades inte när man har tupler"
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "adress tagen, men ADDRESSABLE-biten är inte satt"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr "icke-heltal använt i villkor"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "ogiltig villkorlig operand"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "ogiltig position eller storleksoperand till BIT_FIELD_REF"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr "precisionen på typen på heltalsresultatet stämmer inte med fältstorleken på BIT_FIELD_REF"
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr "lägesprecisionen på resultat av icke-heltalstyp stämmer imte med fältstorleken på BIT_FIELD_REF"
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "ogiltigt referensprefix"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "ogiltig operand till plus/minus, typen är en pekare"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "ogiltig operand till pekarplus, första operanden är inte en pekare"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr "ogiltig operand till pekarplus, andra operanden är inte en heltalstyp med lämplig bredd"
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr "ogiltig CASE_CHAIN"
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "ogiltigt uttryck som min-l-värde"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "ogiltig operand i indirektreferens"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "ogiltiga operander i vektorreferens"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "typfel i vektorreferens"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "typfel i vektorintervallreferens"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "typfel i referens till reel-/imaginärdel"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "typfel i komponentreferens"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr "konvertering av en SSA_NAME på vänster sida"
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, gcc-internal-format
msgid "conversion of register to a different size"
msgstr "konvertering av register till en annan storlek"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "ogiltig adressoperand i MEM_REF"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "ogiltig avståndsoperand i MEM_REF"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr "ogiltig adressoperand i in TARGET_MEM_REF"
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "ogiltig avståndsoperand i TARGET_MEM_REF"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr "gimple-anrop har två mål"
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr "gimple-anrop har inget mål"
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "ogiltig funktion i gimple-anrop"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr "icke-funktion i gimple-anrop"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "ogiltigt pure-const-tillstånd för funktion"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "ogiltig vänstersida i gimple-anrop"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr "LHS i noreturn-anrop"
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "ogiltig konvertering i gimple-anrop"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr "ogiltig statisk kedja i gimple-anrop"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr "statisk kedja i indirekt gimple-anrop"
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr "statisk kedja med funktion som inte använder en"
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "ogiltigt argument till gimple-anrop"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "ogiltiga operander i gimple-jämförelse"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr "typen på operander i jämförelse stämmer inte överens"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr "icke-vektoroperander i vektorjämförelse"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr "ogiltig resultattyp i vektorjämförelse"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr "felaktig resultatyp i jämförelse"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr "icke-register som vänstersida av unär operation"
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "ogiltig operand i unär operation"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "ogiltiga typer i nop-konvertering"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "ogiltiga typer adressrymdskonvertering"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "ogiltiga typer i fixdecimalskonvertering"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "ogiltiga typer i konvertering till flyttal"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "ogiltiga typer i konvertering till heltal"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "icketrivial konvertering i unär operation"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr "ej register som vänstersida av binär operation"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "ogiltiga operander binär operation"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "typfel i komplext uttryck"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "typfel i skiftuttryck"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "typfel i vektorskiftuttryck"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr "ej elementstor vektorskiftning eller flyttalsvektor"
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr "typfel i breddande vektorskiftuttryck"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "ogiltig operander som inte är vektor till vektorvärt plus"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "ogiltiga (pekar)operander till plus/minus"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "typfel i pekar-plus-uttryck"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "typfel i binärt uttryck"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr "icke-register som vänstersida av treställig operation"
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "ogiltiga operander treställig operation"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "typer stämmer inte i vidgande multiplicera-ackumulera-uttryck"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "typer stämmer inte i sammansmält multiplicera-addera-uttryck"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, gcc-internal-format
msgid "type mismatch in vector permute expression"
msgstr "typfel i vektorpermuteringsuttryck"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr "vektortyper förväntades i vektorpermuteringsuttryck"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr "vektorer med olika elementantal funna i vektorpermuteringsuttryck"
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, gcc-internal-format
msgid "invalid mask type in vector permute expression"
msgstr "ogiltig masktyp i vektorpermuteringsuttryck"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "icketrivial konvertering vid tilldelning"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "ogiltig operand till i unärt uttryck"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "typfel i adressuttryck"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr "ogiltig högersida för gimple-minneslagring"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "ogiltig operand i retursats"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "ogiltig konvertering i retursats"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "goto-destination är varken en etikett eller en pekare"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "ogiltig operand till switch-sats"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr "felaktig post i label_to_block_map"
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr "felaktig inställning av nummer på landningsplatta"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "ogiltig jämförelsekod i gimple-villkor"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "ogiltig etikett i gimple-villkor"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, gcc-internal-format
msgid "invalid PHI result"
msgstr "ogiltigt PHI-resultat"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, gcc-internal-format
msgid "missing PHI def"
msgstr "PHI-definition saknas"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, gcc-internal-format
msgid "invalid PHI argument"
msgstr "ogiltigt PHI-argument"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "inkompatibla typer i PHI-argument %u"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr "verify_gimple misslyckades"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr "dött STMT i EH-tabell"
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "gimple_bb (phi) är satt till ett felaktigt grundblock"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "felaktig delning av trädnoder"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "gimple_bb (sats) är satt till ett felaktigt grundblock"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr "i sats"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "sats markerad för att kasta, men gör inte det"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "sats markerad för att kasta i mitten av block"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "ENTRY_BLOCK har IL associerat med sig"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr "EXIT_BLOCK har IL associerat med sig"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "fall igenom till utgång från bb %d"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "ickelokal etikett "
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr "EH-landningsplattas etikett "
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "etikett "
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "flödesstyrning mitt i grundblock %d"
# bb -> basic block -> grundblock -> gb
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "fall igenom-båge efter styrsats i gb %d"
# bb -> basic block -> grundblock -> gb
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "sant/falskt-båge efter en icke-GIMPLE_COND i gb %d"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "felaktiga utgående bågeflaggor vid slutet av bb %d"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "uttrycklig goto vid slutet av bb %d"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "returbåge pekar inte på utgång i bb %d"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr "hittade standardfall som inte var vid början av case-vektor"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr "case-etiketter är inte sorterade: "
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "extra utgående båge %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "båge saknas %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "%<noreturn%>-funktion returnerar"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "flödet når slutet på en icke-void-funktion"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "ignorerar returvärdet av %qD, deklarerad med attributet warn_unused_result"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "ignorerar returvärdet av funktion deklarerad med attributet warn_unused_result"
@@ -19573,72 +19605,72 @@ msgstr "BB %i har felaktig båge"
msgid "BB %i has incorrect fallthru edge"
msgstr "BB %i har felaktig fall-igenom-båge"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "funktion %q+F kan aldrig kopieras eftersom den tar emot ett icke-lokalt goto"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "funktion %q+F kan aldrig kopieras eftersom den sparar adressen av en lokal etikett i en statisk variabel"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "funktion %q+F kan aldrig inline:as för att den använder alloca (åsidosätt genom att använda attributet always_inline)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "funktion %q+F kan aldrig inline:as eftersom den använder setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "funktion %q+F kan aldrig inline:as eftersom den använder variabel argumentlista"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "funktion %q+F kan aldrig inline:as eftersom den använder setjmp-lonjgmp-undantagshantering"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "funktion %q+F kan aldrig inline:as eftersom den använder icke-lokala goto"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "funktion %q+F kan aldrig inline:as eftersom den använder __builtin_return eller __builtin_apply_args"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "funktion %q+F kan aldrig inline:as eftersom den innehåller ett beräknat goto"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "funktionen %q+F kan aldrig vara inline eftersom det stängs av av -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "funktionen %q+F kan aldrig vara inline eftersom den använder attribut som står i konflikt med inline"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "inline:ing misslyckades i anrop av always_inline %q+F: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "anropad härifrån"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "inline:ing misslyckades i anrop av %q+F: %s"
@@ -19849,7 +19881,7 @@ msgstr "sats (%p) markerad som modifierad efter optimeringspass: "
msgid "verify_ssa failed"
msgstr "verify_ssa misslyckades"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, gcc-internal-format
msgid "%qD was declared here"
msgstr "%qD deklarerades här"
@@ -19909,52 +19941,52 @@ msgstr "vektoroperationen kommer expanderas parallellt"
msgid "vector operation will be expanded with a single scalar operation"
msgstr "vektoroperationen kommer expanderas med en ensam skalär operation"
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr "vektorblandningsoperationen kommer expanderas bitvis"
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "vektorindex är utanför vektorgränserna"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "vektorindex är ovanför vektorgränsen"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "vektorindex är under vektorgränsen"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr "antar att teckenspill inte förekommer vid förenkling av villkor till konstant"
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr "antar att teckenspill inte förekommer vid förenkling av villkor"
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "jämförelsen är alltid falsk på grund av begränsat intervall för datatypen"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "jämförelsen är alltid sann på grund av begränsat intervall för datatypen"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr "antar att teckenspill inte förekommer vid förenkling av %</%> eller %<%%%> till %<>>%> eller %<&%>"
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr "antar att teckenspill inte förekommer vid förenkling av %<abs (X)%> till %<X%> eller %<-X%>"
@@ -19964,22 +19996,22 @@ msgstr "antar att teckenspill inte förekommer vid förenkling av %<abs (X)%> ti
msgid "ignoring attributes applied to %qT after definition"
msgstr "ignorerar attribut använda på %qT efter dess definition"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D är redan deklarerad med attributet dllexport: dllimport ignoreras"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D omdeklarerad utan attributet dllimport efter att ha refererats med länkklass dll"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D omdeklarerades utan attributet dllimport: tidigare dllimport ignoreras"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -19994,140 +20026,140 @@ msgstr "%q+D omdeklarerades utan attributet dllimport: tidigare dllimport ignore
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "attributet %qE ignorerat"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "inline-funktionen %q+D deklarerades som dllimport: attributet ignorerat"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "funktionsdefinition %q+D är markerad dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "variabeldefinition %q+D är markerad dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "extern länkklass krävs för symbol %q+D på grund av attributet %qE"
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qE implicerar standardsynlighet, men %qD har redan deklarerats med annan synlighet"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "vektorer av funktioner är inte meningsfulla"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "funktionsreturtyp kan inte vara funktion"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "trädkontroll: %s, har %s i %s, vid %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "trädkontroll: förväntade ingen av %s, har %s i %s, vid %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "trädkontroll: förväntade klass %qs, har %qs (%s) i %s, vid %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "trädkontroll: klass %qs förväntades inte, har %qs (%s) i %s, vid %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "trädkontroll: omp_clause %s förväntades, har %s i %s, vid %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "trädkontroll: förväntade träd som innehåller posten %qs, har %qs i %s, vid %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "trädkontroll: använde element %d av tree_vec med %d element i %s, vid %s:%d"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "trädkontroll: använde operand %d av %s med %d operander i %s, vid %s:%d"
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "trädkontroll: använde operand %d av omp_clause %s med %d operander i %s, vid %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%qD bör undvikas (deklarerad vid %s:%d): %s"
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%qD bör undvikas (deklarerad vid %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%qE bör undvikas (deklarerad vid %s:%d): %s"
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%qE bör undvikas (deklarerad vid %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "typen bör undvikas (deklarerad vid %s:%d): %s"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "typen bör undvikas (deklarerad vid %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "%qE bör undvikas: %s"
-#: tree.c:11392
+#: tree.c:11396
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr "%qE bör undvikas"
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "typen bör undvikas: %s"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "typen bör undvikas"
@@ -20178,147 +20210,152 @@ msgstr "storleksgräns på variabelspårning överskriden med -vfar-tracking-ass
msgid "variable tracking size limit exceeded"
msgstr "storleksgräns på variabelspårning överskriden"
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D orsakar en sektionstypkonflikt"
+
+#: varasm.c:322
#, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr "%+D orsakar en sektionstypkonflikt med %D"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "justeringen av %q+D är större än den objektfilers maximala justering. Använder %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "inget registernamn angivet för %q+D"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "ogiltig registernamn för %q+D"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "datatyp %q+D passar inte för ett register"
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "registret angivet för %q+D kan inte nås av det aktuella målet"
-#: varasm.c:1215
+#: varasm.c:1221
#, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "registret angivet för %q+D är inte tillräckligt generellt för att användas som en registervariabel"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "registret angivet för %q+D passar inte för datatypen"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "global registervariabel har startvärde"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "optimering kan eliminera läsningar och/eller skrivningar till registervariabler"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "registernamn angivet icke-registervariabel %q+D"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "globala destruerare stöds inte på denna målarkitektur"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "globala konstruerare stöds inte för denna målarkitektur"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "trådlokal COMMON-data är inte implementerat"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "efterfrågad justering för %q+D är större än implementerad justering av %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "initierare för heltals-/fixdecimalvärde är för komplicerad"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "initierare för flyttalsvärde är inte en flyttalskonstant"
-#: varasm.c:4878
+#: varasm.c:4915
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "ogiltigt startvärde för medlem %qE"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "svagdeklaration av %q+D måste vara publik"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "svagdeklaration av %q+D stöds inte"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "bara svaga alias stöds i denna konfiguration"
-#: varasm.c:5474
+#: varasm.c:5511
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "weakref stöds inte i denna konfiguration"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "ifunc stödjs inte i denna konfiguration"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D är aliasat till en odefinierad symbol %qE"
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D är aliasat till den externa symbolen %qE"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "weakref %q+D är ytterst sitt eget mål"
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "weakref %q+D måste ha statisk länkklass"
-#: varasm.c:5821
+#: varasm.c:5858
#, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "aliasdefinitioner stöds inte i denna konfiguration"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "synlighetsattribut stöds inte för denna konfiguration, ignoreras"
@@ -20359,8 +20396,8 @@ msgstr "%qD är inte definierad utanför funktionsnivå"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "stränglängden %qd är större än den längden %qd som ISO C%d kompilatorer skall stödja"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "spill i konstant uttryck"
@@ -20575,7 +20612,7 @@ msgstr "pekare till medlemsfunktion använd i aritmetik"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "adressen till %qD kommer alltid beräknas till %<true%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "föreslår parenteser runt tilldelning som används som sanningsvärde"
@@ -20982,40 +21019,40 @@ msgstr "attributet %qE ignorerat för %qE"
msgid "invalid vector type for attribute %qE"
msgstr "ogiltig vektortyp för attributet %qE"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "vektorstorleken är inte en hel multipel av komponentstorleken"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "vektorstorlek noll"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "antal komponenter i vektorn inte en tvåpotens"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "attributet nonnull utan argument på en icke-prototyp"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "argument till nonnull har ett ogiltigt värde (argument %lu)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "nonnull-argument med felaktigt operandnummer (argument %lu, operand %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "nonnull-argument refererar icke-pekar-operand (argument %lu, operand %lu)"
@@ -21055,12 +21092,12 @@ msgstr "attributet %qE kräver prototyper med namngivna argument"
msgid "%qE attribute only applies to variadic functions"
msgstr "attributet %qE är bara tillämplig på funktioner med variabelt antal argument"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "den begärda positionen är inte en heltalskonstant"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "begärd position är mindre än noll"
@@ -21115,7 +21152,7 @@ msgstr "går inte att applicera %<offsetof%> när %<operator[]%> är överlagrad
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "det går inte att använda %<offsetof%> på en icke-konstant adress"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "försök att ta adressen till en medlemmen %qD i en bitfältspost"
@@ -21842,82 +21879,82 @@ msgid "ignoring #pragma %s %s"
msgstr "ignorerar #pragma %s %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "överblivet %<@%> i program"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "överblivet %qs i program"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "avslutande %c-tecken saknas"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "överblivet %qc i program"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "överblivet %<\\\\%o%> i program"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "denna decimala konstant är teckenlös endast i ISO C90"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "denna decimala konstant skulle varit teckenlös i ISO C90"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "heltalskonstant är för stor för typen %<unsigned long%>"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr "flyttalskonstant utan suffix"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr "icke-standardsuffix på flyttalskonstant stöds inte"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr "icke-standardsuffix på flyttalskonstant"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "flyttalskonstant överskrider intervallet för %qT"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "flyttalskonstant avkortas till noll"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr "upprepat %<@%> före Objective-C++-sträng"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr "ej stödd konkatenering av strängliteraler som inte följer standard"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "traditionell C stödjer inte strängkonstantsammanslagning"
@@ -21937,7 +21974,7 @@ msgstr "%<#pragma omp atomic update%> använder två olika variabler till minne"
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr "%<#pragma omp atomic capture%> använder två olika variabler till minne"
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "ogiltig typ för iterationsvariabeln %qE"
@@ -21947,22 +21984,22 @@ msgstr "ogiltig typ för iterationsvariabeln %qE"
msgid "%qE is not initialized"
msgstr "%qE är inte initierad"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr "styrpredikat saknas"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "ogiltigt styrpredikat"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr "utelämnat ökningsuttryck"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "ogiltigt ökningsuttryck"
@@ -22810,7 +22847,7 @@ msgstr "L%d-cachelatens okänd för %s"
msgid "bad value %qs for -mmemory-latency"
msgstr "felaktigt värde %qs till flaggan -memory-latency"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -22987,53 +23024,53 @@ msgstr "PCS-variant"
msgid "Thumb-1 hard-float VFP ABI"
msgstr "Thumb-1 hårda flyttals VFP ABI"
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "attributet %qE är bara tillämpligt på funktioner"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "kan inte beräkna verklig plats för stackparameter"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, gcc-internal-format
msgid "argument must be a constant"
msgstr "argumentet måste vara en konstant"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "väljare måste vara en omedelbar"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "mask måste vara en omedelbar"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "inga låga register tillgängliga för att poppa höga register"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "avbrottsservicerutiner kan inte kodas i Thumb-läge"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr "manglingen av %<va_list%> har ändrats i GCC 4.4"
@@ -23048,97 +23085,112 @@ msgstr "initierad variabel %q+D är markerad som dllimport"
msgid "static variable %q+D is marked dllimport"
msgstr "statisk variabel %q+D är markerad som dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "funktionsattributen %qs, %qs och %qs är ömsesidigt uteslutande"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr "funktionsattributen %qs och %qs har ingen effekt på funktionen %qs"
+
+#: config/avr/avr.c:573
+#, gcc-internal-format
+msgid "%qs function cannot have arguments"
+msgstr "funktionen %qs kan inte ha argument"
+
+#: config/avr/avr.c:576
+#, gcc-internal-format
+msgid "%qs function cannot return a value"
+msgstr "funktionen %qs kan inte reutnrera ett värde"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs verkar vara en felstavad %s-hanterare"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr "â€builtin_return_address†innehÃ¥ller bara 2 byte adress"
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr "pekarförskjutning från symbol kan vara oriktig"
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr "Ã¥tkomst av dataminne med programminnesadress"
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr "Ã¥tkomst av programminne med dataminnesadress"
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, gcc-internal-format, gfc-internal-format
msgid "fixed register %s used to pass parameter to function"
msgstr "fast register %s använt för att skicka en parameter till en funktion"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr "skrivning till adressrymden %qs stödjs inte"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs verkar vara en felstavad avbrottshanterare"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs verkar vara en felstavad signalhanterare"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr "%qT använder adressrymden %qs bortom flash för %qs"
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr "%s %q+D använder adressrymden %qs bortom flash för %qs"
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr "pekare med mål i adressrymden %qs måste vara konstanta i %qT"
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr "pekare med mål i adressrymden %qs måste vara konstanta i %s %q+D"
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr "variabeln %q+D ligger i adressrymden %qs bortom flash för %qs"
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr "variabeln %q+D måste vara const för att kunna läggas i en endast läsbar sektion med hjälp av %qs"
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "bara oinitierade variabler kan placeras i sektionen .noinit"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr "den oinitierade variabeln %q+D placerad i programminnesområdet"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU %qs stöds endast i assembler"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time integer constant"
msgstr "%s förväntar sig ett heltal konstant vid kompileringstillfället"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr "%s förväntar sig ett långt heltal konstant vid kompileringstillfället som första argument"
@@ -23258,68 +23310,68 @@ msgstr "ogiltig användning av â€:â€-modifierare"
msgid "internal error: bad register: %d"
msgstr "internt fel: felaktigt register: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "internt fel: sidoeffektinstruktion påverkar huvudeffekten"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "okänt cc_attr-värde"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "internt fel: cris_side_effect_mode_ok med felaktiga operander"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d är inte användbar, inte mellan 0 och %d"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "okänd CRIS-version angiven i -march= eller -mcpu= : %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "okänd CRIS-cpu-version angiven i -mtune= : %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC och -fpic stöds inte i denna konfiguration"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "den speciella flaggan -g är ogiltig med -maout och -melinux"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, gcc-internal-format
msgid "unknown src"
msgstr "okänd källa"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, gcc-internal-format
msgid "unknown dest"
msgstr "okänd destination"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "för stor stackram: %d byte"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "expand_binop misslyckades i movsi got"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr "skickar ut PIC-operand, men PIC-registret är inte uppsatt"
@@ -23478,412 +23530,412 @@ msgstr "det går inte att utöka PCH-fil: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "det går inte att sätta position i PCH-fil: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "felaktigt värde (%s) till %stune=%s %s"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr "%stune=x86-64%s bör undvikas. Använd istället det som passar av %stune=k8%s och %stune=generic%s"
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr "-mstringop-strategy=rep_8byte stödjs inte för 32-bitarskod"
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "kodmodellen %qs stöds inte i %s-bitsläge"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr "kodmodellen %qs stöds inte i x32-läge"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "kodmodellen %s stödjer inte PIC-läge"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr "-masm=intel stödjs inte i denna konfiguration"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i-bitsläge inte inkompilerat"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "CPU:n du valde stödjer inte instruktionsuppsättningen x86-64"
# "generic" är bokstavligt argument till flaggan
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "generic CPU kan användas endast till %stune=%s %s"
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr "felaktigt värde (%s) till %sarch=%s %s"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr "-mregparm ignoreras i 64-bitsläge"
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d är inte mellan 0 och %d"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "%srtd%s ignoreras i 64-bitsläge"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-mprefetch-stack-boundary stödjs inte för denna målarkitektur"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d är inte mellan %d och %d"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mincoming-stack-boundary=%d är inte mellan %d och 12"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr "%ssseregparm%s använd utan SSE aktiverat"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "instruktionsuppsättningen SSE avaktiverad, använder 387-aritmetik"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "instruktionsuppsättningen 387 avaktiverad, använder SSE-aritmetik"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "utrullning av tabeller kräver antingen en rampekare eller %saccumulate-outgoing-args%s för att bli korrekt"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "utrullning av tabeller kräver antingen en rampekare eller %saccumulate-outgoing-args%s för att bli korrekt"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr "-mfentry stödjs inte för 32 bitar i kombination med -fpic"
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr "-mno-fentry är inte kompatibelt med SEH"
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "okänt alternativ till -mrecip=%s"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr "attribute(target(â€%sâ€)) är okänt"
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr "option(â€%sâ€) var redan angivet"
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "attributen fastcall och regparm är inte kompatibla"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr "attributen regparam och thiscall är inte kompatibla"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "attributet %qE kräver en heltalskonstant som argument"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "argument till attributet %qE är större än %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "attributen fastcall och cdecl är inte kompatibla"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "attributen fastcall och stdcall är inte kompatibla"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr "attributen fastcall och thiscall är inte kompatibla"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "attributen stdcall och cdecl är inte kompatibla"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "attributen stdcall och fastcall är inte kompatibla"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr "attributen stdcall och thiscall är inte kompatibla"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr "attributen cdecl och thiscall är inte kompatibla"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "attributet %qE används för annat än klassmetod"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "anrop av %qD med attributet sseregparm utan SSE/SSE2 aktiverat"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "anrop av %qT med attributet sseregparm utan SSE/SSE2 aktiverat"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "ms_hook_prologue är inte kompatibelt med nästade funktioner"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr "attributet ms_abi kräver -maccumulate-outgoing-args eller optimering av undermålarkitektur som implicerar det"
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "AVX-vektorargument utan AVX aktiverat ändrar ABI:et"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr "ABI:et för att skicka en post med en flexibel vektormedlem har ändrats i GCC 4.4"
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr "ABI:et för att skicka unioner med long double har ändrats i GCC 4.4"
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr "ABI:et för att skicka en post med complex float medlem har ändrats i GCC 4.4"
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "SSE-registerretur med SSE avaktiverat"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "SSE-registerargument med SSE avaktiverat"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "x87-registerretur med x87 avaktiverat"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "SSE-vektorargument utan SSE aktiverat ändrar ABI:et"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "MMX-vektorargument utan MMX aktiverat ändrar ABI:et"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr "ABI:et för att skicka parametrar med %d-bytejustering har ändrats i GCC 4.6"
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "SSE-vektorretur utan SSE aktiverat ändrar ABI:et"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "MMX-vektorretur utan MMX aktiverat ändrar ABI:et"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr "attributet ms_hook_prologue är inte kompatibelt med -mfentry i 32-bitsläge"
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "-fsplit-stack stödjer inte fastcall med nästade funktioner"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "-fsplit-stack stödjer inte 2 registerparametrar för en nästad funktion"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "-fsplit-stack stödjer inte 3 registerparametrar"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "utökade register har inga höga halvor"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "ej stödd operandstorlek för utökat register"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr "operand som inte är heltal använt med operandkod â€%câ€"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "det sista argumentet måste vara en 2-bitars omedelbar"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "det femte argumentet måste vara en 8-bitars omedelbar"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "det tredje argumentet måste vara en 8-bitars omedelbar"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr "det sista argumentet måste vara en 1-bits omedelbar"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "det sista argumentet måste vara en 4-bitars omedelbar"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "det sista argumentet måste vara en 1-bits omedelbar"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "det sista argumentet måste vara en 5-bitars omedelbar"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "det näst sista argumentet måste vara en 8-bitars omedelbar"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "det sista argumentet måste vara en 8-bitars omedelbar"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "det sista argumentet måste vara en 32-bitars omedelbar"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "selektor måste vara en heltalskonstant i intervallet 0..%wi"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr "%qE behöver en okänd isa-flagga"
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr "%qE behöver isa-flaggan %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "sista argumentet måste vara en omedelbar"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "sista argumentet ha skala 1, 2, 4, 8"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "attributet %qE är bara tillgängligt för 32 bitar"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "argumentet till attributet %qE är varken noll eller ett"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "attributen ms_abi och sysv_abi är inte kompatibla"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "%qE-inkompatibelt attribut ignorerat"
@@ -23953,19 +24005,19 @@ msgstr "adressområdesattribut kan inte anges för funktioner"
msgid "%qE attribute requires a string constant argument"
msgstr "attributet %qE kräver en strängkonstant som argument"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "värdet av -mfixed-range måste ha formen REG1-REG2"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s är ett tomt intervall"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr "versionsattributet är inte en sträng"
@@ -24031,7 +24083,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "attributet %qE stöds inte för denna målarkitekturen R8C"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "argumentet till attribut %qE är inte en heltalskonstant"
@@ -24086,7 +24138,7 @@ msgstr "flera avbrottsattribut är inte tillåtet"
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread är tillgängligt endast för fido"
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "stackgränsuttryck stöds inte"
@@ -24605,27 +24657,27 @@ msgstr "MMIX internt: %s är inte ett heltal som kan skiftas"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr "-mtune= förväntar sig mn10300, am33, am33-2 eller am34"
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "PIC-kodgenerering stöds inte i den portabla körtidsmodellen"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "PIC-kodsgenerering är inte inte kompatibelt med snabba indirekta anrop"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g stöds bara när man använder GAS på denna processor,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "flaggan -g är avslagen"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr "justering (%u) för %s överskrider maximal justering för globala common-data. Använder %u"
@@ -25050,82 +25102,82 @@ msgstr "internt fel: inbyggd funktion %s hade en oväntad returtyp %s"
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr "internt fel: inbyggd funktion %s, argument %d har en oväntad argumenttyp %s"
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "för stor stackram"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "ingen profilering av 64-bitskod för detta ABI"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr "Du kan inte ta adressen till en nästad funktion om du använder flaggan -mno-pointers-to-nested-functions"
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "användning av %<long double%> i AltiVec-typer är ogiltigt"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "användning av booleaner i AltiVec-typer är ogiltigt"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "användning av %<complex%> i AltiVec-typer är ogiltigt"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "användning av decimala flyttalstyper i AltiVec-typer är ogiltigt"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "användning av %<long%> i AltiVec-typer är ogiltigt för 64-bitskod utan -mvsx"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "användning av %<long%> i AltiVec-typer bör undvikas, använd %<int%>"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "användning av %<long long%> i AltiVec-typer är ogiltigt utan -mvsx"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "användning av %<double%> i AltiVec-typer är ogiltigt utan -mvsx"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr "matar ut mikrokodsinstruktion %s\t[%s] nr %d"
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr "matar ut villkorlig mikrokodsinstruktion %s\t[%s] nr %d"
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "felaktig cpu â€%s†för %sâ€%sâ€%s"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr "%sâ€%sâ€%s är inte tillÃ¥tet"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr "%sâ€%sâ€%s är ogiltigt"
@@ -25179,12 +25231,12 @@ msgstr "E500 och FPR:er stöds inte"
msgid "-m64 not supported in this configuration"
msgstr "-m64 stöds inte i denna konfiguration"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 kräver en PowerPC64-CPU"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr "-mcmodel är inkompatibel med andra toc-flaggor"
@@ -25201,64 +25253,64 @@ msgstr "-mcmodel är inkompatibel med andra toc-flaggor"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET stöds inte"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "felaktigt värde för -mcall-%s"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "felaktigt värde för -msdata-%s"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable och -msdata=%s är inkompatibla"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s och -msdata=%s är inkompatibla"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-mmsdata=%s och -mcall-%s är inkompatibla"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable och -mno-minimal-toc är inkompatibla"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable och -mcall-%s är inkompatibla"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC och -mcall-%s är inkompatibla"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc måste ha rak byteordning"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-msecure-plt stöds inte av din assembler"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s stöds inte i denna konfiguration"
@@ -25368,53 +25420,53 @@ msgstr "ignorerar -fschedule-insns på grund av ett fel i undantagshanteringen"
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "utrullningstabeller kräver för närvarande antingen en rampekare eller -maccumulate-outgoing-args för att bli korrekt"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs stöds inte på denna målunderarkitektur"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "attributet %qE är bara tillämpligt på avbrottsfunktioner"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "attributet %qE stöds endast för SH2A"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "attributet interrupt_handler är inte kompatibelt -m5-compact"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "attributet %qE är bara tillämpligt på SH2A"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "argument till attribut %qE skall vara mellan 0 och 255"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "argument till attribut %qE är inte en strängkonstant"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 behöver vara tillgängligt som ett anropsöverskrivet register"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr "behöver ett andra generellt anropsöverskrivet register"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr "behöver ett anropsöverskrivet målregister"
@@ -25760,38 +25812,38 @@ msgstr "%<-gnat%> felstavat %<-gant%>"
msgid "-fexcess-precision=standard for Ada"
msgstr "-fexcess-precision=standard för Ada"
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "attributet %qs ignorerat"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "attributet %qs kräver prototyper med namngivna argument"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "attributet %qs fungerar bara på funktioner med variabelt antal argument"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "attributet %qE har ingen effekt"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "ogiltig vektortyp för attributet %qs"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "attributet %qs är bara tillämpbart på vektortyper"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "ogiltig elementtyp för attributet %qs"
@@ -25807,7 +25859,7 @@ msgstr " ingen känd konvertering för implicit %<this%>-parameter från %qT ti
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " ingen känd konvertering för argument %d från %qT till %qT"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26092,7 +26144,7 @@ msgstr "ogiltig användardefinierad konvertering från %qT till %qT"
msgid "invalid conversion from %qT to %qT"
msgstr "ogiltig konvertering från %qT till %qT"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " initierar argument %P till %qD"
@@ -26102,188 +26154,188 @@ msgstr " initierar argument %P till %qD"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr "att konvertera till %qT från initierarlista skulle använda den explicita konstrueraren %qD"
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr " initierar argument %P till %q+D"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "det går inte att binda l-värde %qT till %qT"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "det går inte att binda bitfält %qE till %qT"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "det går inte att binda packat fält %qE till %qT"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "det går inte att binda rvalue %qE till %qT"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "enum %qT med räckvidd kommer inte befordras till en heltalstyp i en framtida version av GCC"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "det går inte att skicka objekt av ej trivialt kopierbar typ %q#T via %<...%>"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "det går inte att ta emot objekt av ej trivialt kopierbar typ %q#T via %<...%>"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "rekursiv beräkning av standardargument till %q#D"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "anrop till %qD använder standardargumentet för parameter %P, vilket inte definierats ännu"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "argument till funktionsanrop kan vara en kandidat för ett formatattribut"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "att skicka %qT som %<this%>-argument till %q#D kastar kvalificerare"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT är inte en åtkomlig bas till %qT"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "härleder %qT som %qT"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, gcc-internal-format
msgid " in call to %q+D"
msgstr " i anrop till %q+D"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr " (du kan avaktivera detta med -fno-deduce-init-list)"
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "kunde inte hitta class$-fält i java-gränssnittstyp %qT"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "anrop av icke-funktion %qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr "kan inte anropa konstrueraren %<%T::%D%> direkt"
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr " för en typkonvertering i funktionsstil, ta bort det överflödiga %<::%D%>"
-#: cp/call.c:7251
+#: cp/call.c:7261
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "ingen matchande funktion för anrop av %<%T::operator %T(%A)%#V%>"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "ingen matchande funktion för anrop av %<%T::%s(%A)%#V%>"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "anrop av överlagrad %<%s(%A)%> är tvetydigt"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "det går inte att anropa medlemsfunktion %qD utan ett objekt"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "att skicka %qT väljer %qT framför %qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " i anrop till %qD"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "väljer %qD framför %qD"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " för konvertering från %qT till %qT"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " för att konverteringssekvensen för argumentet är bättre"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "standardargument stämmer inte överens i upplösning av överlagring"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr " kandidat 1: %q+#F"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr " kandidat 2: %q+#F"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++ säger att dessa är tvetydiga, trots att den sämsta konverteringen för den första är bättre än den sämsta konverteringen för den andra:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr "kunde inte konvertera %qE från %qT till %qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr "en temporär bunden till %qD består endast tills konstrueraren avslutar"
-#: cp/call.c:8730
+#: cp/call.c:8745
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "ogiltig initiering av icke konstant referens av typ %qT från ett r-värde av typ %qT"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "ogiltig initiering av referens av typ %qT från uttryck av typ %qT"
@@ -26494,219 +26546,219 @@ msgstr "fält %q+D ogiltigt deklarerad funktionstyp"
msgid "field %q+D invalidly declared method type"
msgstr "fält %q+D ogiltigt deklarerad metodtyp"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "ignorerar attributet packed på grund av opackat icke-POD-fält %q+#D"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "fält %q+#D med samma namn som en klass"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T har pekardatamedlemmar"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " men ersätter inte %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " eller %<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " men ersätter inte %<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "förskjutning av tom bas %qT följer kanske inte ABI:et och kan ändras i en framtida version av GCC"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "klass %qT kommer betraktas som nästan tom i en framtida version av GCC"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "initierare angiven för icke-virtuell metod %q+D"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr "metoden åsidosätter både metoderna %<transaction_pure%> och %qE"
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr "metod deklarerad %qE åsidosätter %qE-metod"
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "omslutande klass till constexpr icke-statisk medlemsfunktion %q+#D är inte en literal typ"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr "%q+T är inte literal för att:"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, gcc-internal-format
msgid " %q+T has a non-trivial destructor"
msgstr " %q+T har en icke-trivial destruerare"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr " %q+T är inte ett aggregat, har inte en trivial standardkonstruerare och har ingen constexpr-konstruerare som inte är en kopierings- eller flyttningskonstruerare"
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr " basklassen %qT till %q+T är inte literal"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr " den icke-statiska datamedlemmen %q+D har icke-literal typ"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "icke-statisk referens %q+#D i klass utan en konstruerare"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "icke-statisk const-medlem %q+#D i klass utan en konstruerare"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr "%q+D deklarerad att ta const-referens, men implicit deklaration skulle ta icke-const"
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr "%q+D deklarerad att ta icke-const-referens kan inte standarddefinieras i klasskroppen"
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "förskjutning av virtuell bas %qT följer inte ABI:et och kan ändras i en framtida version av GCC"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "direkt bas %qT är oåtkomlig i %qT på grund av tvetydighet"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "virtuell bas %qT är oåtkomlig i %qT på grund av tvetydighet"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "storlek tilldelad till %qT följer kanske inte ABI:et och kan ändras i en framtida version av GCC"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "förskjutningen för %qD följer kanske inte ABI:et och kan ändras i en framtida version av GCC"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "förskjutningen av %q+D följer inte ABI:et och kan ändras i en framtida version av GCC"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D innehåller tomma klasser som kan få grundklasser att läggas på annan plats i en framtida version av GCC"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "utplaceringen av klasser härledda från en tom klass %qT kan ändras i en framtida version av GCC"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "omdefinition av %q#T"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T har virtuella funktioner och åtkomlig ickevirtuell destruerare"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr "den typgenomskinliga klassen %qT har inga fält"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr "den typgenomskinliga klassen %qT har basklasser"
-#: cp/class.c:6149
+#: cp/class.c:6150
#, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr "den typgenomskinliga klassen %qT har virtuella funktioner"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "försökte avsluta post, men hoppade ut på grund av tidigare parsningsfel"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "sprÃ¥ksträng %<â€%Eâ€%> känns inte igen"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "det går inte att lösa upp överlagrad funktion %qD baserat på konvertering till typ %qT"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "ingen match som konverterar funktionen %qD till typen %q#T"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "konvertering av överlagrad funktion %qD till typ %q#T är tvetydig"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "antar pekare till medlem %qD"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(en pekare på medlem kan bara skapas med %<&%E%>)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "inte tillräcklig typinformation"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "kan inte konvertera %qE från typ %qT till typ %qT"
@@ -26716,12 +26768,12 @@ msgstr "kan inte konvertera %qE från typ %qT till typ %qT"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "deklaration av %q#D"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "byter betydelse av %qD från %q+#D"
@@ -26741,7 +26793,7 @@ msgstr "det går inte att konvertera från ofullständig typ %qT till %qT"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "konvertering av %qE från %qT till %qT är tvetydig"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, gcc-internal-format
msgid "zero as null pointer constant"
msgstr "noll som en nollpekarkonstant"
@@ -26771,7 +26823,7 @@ msgstr "konvertering till icke konstant referens av typ %q#T från ett r-värde
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "konvertering från %qT till %qT kastar kvalificerare"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "typkonvertering av %qT till %qT derefererar inte pekare"
@@ -27177,7 +27229,7 @@ msgstr "tidigare deklaration av %q+#D"
msgid "declaration of template %q#D"
msgstr "omdeklaration av mallen %q#D"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "står i konflikt med tidigare deklaration %q+#D"
@@ -27229,7 +27281,7 @@ msgstr "tidigare deklaration av namnrymden %q+D här"
msgid "%q+#D previously defined here"
msgstr "%q+#D definierades tidigare här"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "%q+#D tidigare deklarerad här"
@@ -27347,7 +27399,7 @@ msgstr "trådlokal deklaration av %q#D följer på icke trådlokal deklaration"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "icke trådlokal deklaration av %q#D följer på trådlokal deklaration"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "omdeklaration av %q#D"
@@ -27418,7 +27470,7 @@ msgstr "etikett med namnet wchar_t"
msgid "%qD is not a type"
msgstr "%qD är inte en typ"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "%qD använd utan mallparametrar"
@@ -27548,123 +27600,123 @@ msgstr "%<typedef%> ignorerades i denna deklaration"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<constexpr%> kan inte användas för typdeklarationer"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, gcc-internal-format
msgid "attribute ignored in declaration of %q#T"
msgstr "attribut ignoreras i deklaration av %q#T"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "attribut för %q#T måste komma efter nyckelordet %qs"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "ignorerar attribut använda på klasstypen %qT utanför dess definition"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr "ignorerar attribut använda på beroende typ %qT utan en associerad deklaration"
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD är initierad (använd decltype istället)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "deklarationen av %q#D har %<extern%> och är initierad"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "definitionen av %q#D är markerad %<dllimport%>"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D är inte en statisk medlem av %q#T"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ tillåter inte %<%T::%D%> att definieras som %<%T::%D%>"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "mallhuvud inte tillåtet i medlemsdefinition av explicit specialiserad klass"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "dubblerad initierare av %qD"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr "%qD är deklarerad %<constexpr%> utanför sin klass"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "deklaration av %q#D utanför en klass är inte en definition"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "variabeln %q#D har initierare men ofullständig typ"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "elementen i vektorn %q#D har ofullständig typ"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "deklarationen av %q#D har ingen initierare"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "aggregatet %q#D har ofullständig typ och kan inte definieras"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD är deklarerad som en referens men inte initierad"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr "namn använt i en designerad initierare i GNU-stil för en vektor"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "icketriviala designerade initierare stöds inte"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "namnet %qD använt i en designerad initierare i GNU-stil för en vektor"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "initierare misslyckas med att bestämma storleken på %qD"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "vektorstorlek saknas i %qD"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "vektor med storlek noll %qD"
@@ -27672,389 +27724,389 @@ msgstr "vektor med storlek noll %qD"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "lagringsstorlek på %qD är inte känd"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "lagringsstorlek på %qD är inte konstant"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "tyvärr: semantiken för inline-funktioners statiska data %q+#D är felaktig (du kommer få flera exemplar)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr " du kan gå runt detta genom att ta bort initieraren"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "oinitierade const %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "%q#T har ingen användardefinierad standardkonstruerare"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr "konstrueraren är inte användarens egna eftersom den är uttryckligen standarddefinierad i klasskroppen"
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr "och den implicit definierade konstrueraren initierar inte %q+#D"
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "ogiltig typ %qT som initierare för en vektor med typ %qT"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "initierare för %qT måste vara inom klamrar"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "%<[%E] =%> använt i en designerad initierare i GNU-stil för klassen %qT"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT har ingen icke-statisk medlem med namnet %qD"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr "C99-beteckningen %qE utanför aggregatinitierare"
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "för många initierare för %qT"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "klamrar runt skalär initierare för typen %qT"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "klamrar saknas runt initierare för %qT"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "element i vektorn %q#T har ofullständig typ"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "objekt %qD med variabel storlek kan inte initieras"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "sammansatta literal med variabel storlek"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, gcc-internal-format
msgid "%q#D has incomplete type"
msgstr "%q#D har ofullständig typ"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "skalärt objekt %qD kräver ett element i initieraren"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "i C++98 måste %qD initieras med en konstruerare, inte med %<{...}%>"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "vektor %qD initierad från strängkonstant inom parentes %qE"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "initierare är ogiltig för statisk medlem med konstruerare"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ej konstant initiering inom klassen av statisk medlem %qD"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(en initiering utanför klassen krävs)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "tilldelning (inte initiering) i deklaration"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "skuggar tidigare typdeklaration av %q#D"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD kan inte vara trådlokal för den har ej trivial typ %qT"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr "Javaobjekt %qD är inte allokerat med %<new%>"
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD är trådlokal och kan därför inte initieras dynamiskt"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qD kan inte initieras från ett icke-konstant uttryck vid deklarationen"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr "icke-statisk datamedlem %qD har Javaklasstyp"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "funktionen %q#D är initierad som en variabel"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr "initierare misslyckas med att bestämma storleken på %qT"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, gcc-internal-format
msgid "array size missing in %qT"
msgstr "vektorstorlek saknas i %qT"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, gcc-internal-format
msgid "zero-size array %qT"
msgstr "vektor med storlek noll %qT"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "destruerare för främmande class %qT kan inte vara en medlem"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "konstruerare för främmande klass %qT kan inte vara en medlem"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD deklarerad som en %<virtual%>-variabel"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD deklarerad som en %<inline%>-variabel"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "%<const%>- och %<volatile%>-funktionsspecificerare på %qD är ogiltiga i variabeldeklaration"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD deklarerad som en %<virtual%>-parameter"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD deklarerad som en %<inline%>-parameter"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "%<const%>- och %<volatile%>-funktionsspecificerare på %qD är ogiltiga i parameterdeklaration"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD deklarerad som en %<virtual%>-typ"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "%qD deklarerad som en %<inline%>-typ"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "%<const%>- och %<volatile%>-funktionsspecificerare på %qD är ogiltiga i typdeklaration"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD deklarerat som ett %<virtual%>-fält"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "%qD deklarerat som ett %<inline%>-fält"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "%<const%>- och %<volatile%>-funktionsspecificerare på %qD är ogiltiga i fältdeklaration"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D deklarerad som en vän"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D deklarerad med en undantagsspecifikationer"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "definitionen av %qD är inte i en namnrymd som innesluter %qT"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "statisk medlemsfunktion %q#D deklarerad med typkvalificerare"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "definierar explicit specialisering %qD i vändeklaration"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "ogiltig användning av mall-id %qD i deklaration av primär mall"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "standardargument är inte tillåtna i deklaration av vänmallspecialisering %qD"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "%<inline%> är inte tillåtet i deklaration av vänmallspecialisering %qD"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "det går inte att deklarera %<::main%> som en mall"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "det går inte att deklarera %<::main%> som inline"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "det går inte att deklarera %<::main%> som static"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr "anonym typ utan länkklass används för att deklarera funktionen %q#D med länkklass"
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%+#D refererar inte till den okvalificerade typen, så den används int för länkklass"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "typen %qT utan någon länkklass använd för att deklarera funktionen %q#D med länkklass"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "statisk medlemsfunktion %qD kan inte ha cv-kvalificerare"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "icke-medlemsfunktion %qD kan inte ha cv-kvalificerare"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr "literal operator med C-länkning"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "%qD har en ogiltig argumentlista"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr "heltalssuffixet %<%s%> skuggas av implementationen"
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr "flyttalssuffixet %<%s%> skuggas av implementationen"
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, gcc-internal-format
msgid "%qD must be a non-member function"
msgstr "%qD måste vara en icke-medlems-funktion"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> måste returnera %<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "omdefinition av implicit deklarerad %qD"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr "definition av explicit standarddefinierad %q+D"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D explicit standarddefinierad här"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "ingen medlemsfunktion %q#D deklarerad i klassen %qT"
@@ -28063,889 +28115,889 @@ msgstr "ingen medlemsfunktion %q#D deklarerad i klassen %qT"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr "anonym typ utan länkklass används för att deklarera variabeln %q#D med länkklass"
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr "typen %qT utan länkklass använd för att deklarera variabeln %q#D med länkklass"
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "initiering i klassen av statisk datamedlem %q#D med icke literal typ"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "%<constexpr%> behövs för initiering i klassen av statisk datamedlem med icke heltaltyp %q#D"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "initiering i klassen av statisk datamedlem med icke heltaltyp %q#D"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "ogiltig initiering i klassen av statisk datamedlem med icke heltaltyp %qT"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ förbjuder initiering inom klassen av icke-konstant statisk medlem %qD"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ förbjuder initiering av medlemskonstant %qD av icke heltalstyp %qT"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "storlek på vektorn %qD av typen %qT är inte en heltalstyp"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "storlek på vektorn av typen %qT är inte en heltalstyp"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "storleken på vektorn %qD är negativ"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "storleken på vektorn är negativ"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ förbjuder vektor %qD med storlek noll"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ förbjuder vektor med storlek noll"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "storlek på vektorn %qD är inte ett konstantuttryck av heltalstyp"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "storlek på vektorn är inte ett konstantuttryck av heltalstyp"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ förbjuder vektor %qD med variabel längd"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ förbjuder vektor med variabel längd"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr "vektor %qD med variabel längd används"
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "spill i vektordimension"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr "deklaration av %qD som en vektor av %<auto%>"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "deklaration av %qD som en vektor av void"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, gcc-internal-format
msgid "creating array of void"
msgstr "skapar vektor av void"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "deklaration av %qD som en vektor av funktioner"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, gcc-internal-format
msgid "creating array of functions"
msgstr "skapar vektor av funktioner"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "deklaration av %qD som en vektor av referenser"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, gcc-internal-format
msgid "creating array of references"
msgstr "skapar vektor av referenser"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "deklaration av %qD som en vektor av funktionsmedlemmar"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, gcc-internal-format
msgid "creating array of function members"
msgstr "skapar vektor av funktionsmedlemmar"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "deklaration av %qD som flerdimensionell vektor måste ha gränser för alla dimensioner utom den första"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "flerdimensionell vektor måste ha gränser för alla dimensioner utom den första"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "en returtypsspecifikation för konstruerare är ogiltig"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "specifikation av returtyp för destruerare är ogiltigt"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "returtyp angiven för %<operator %T%>"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "namnlös variabel eller fält deklarerad void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "variabel eller fält deklarerad void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "ogiltigt användning av kvalificerat namn %<::%D%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "ogiltig användning av kvalificerat namn %<%T::%D%>"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "ogiltig användning av kvalificerat namn %<%D::%D%>"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%q#T är inte en klass eller namnrymd"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "typ %qT är inte härledd från typen %qT"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "deklaration av %qD som en icke-funktion"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "deklaration av %qD som icke-medlem"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "deklarerar-id saknas, använder reserverat ord %qD"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "funktionsdefinition deklarerar inte parametrar"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "deklaration av %qD som %<typedef%>"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr "deklaration av %qD som en parameter"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%<constexpr%> kan inte förekomma i en typedef-deklaration"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "två eller fler datatyper i deklaration av %qs"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "motstridande specificerare i deklarationen av %qs"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ förbjuder deklaration av %qs utan typ"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "%<__int128%> stödjs inte på denna målarkitektur"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ stödjer inte %<__int128%> för %qs"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%<signed%> eller %<unsigned%> är ogiltigt för %qs"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%<signed%> och %<unsigned%> givna tillsammans för %qs"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long%> ogiltig för %qs"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "%<long%> ogiltig för %qs"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "%<short%> ogiltig för %qs"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%> eller %<short%> ogiltig för %qs"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%>, %<int%>, %<short%> eller %<char%> ogiltig för %qs"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "%<long%> eller %<short%> angiven med char för %qs"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%<long%> och %<short%> angivna tillsammans för %qs"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<short%> eller %<long%> ogiltig för %qs"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "long, short, signed eller unsigned använd felaktigt för %qs"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "complex ogiltig för %qs"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "kvalificerare är inte tillåtna på deklaration av %<operator %T%>"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "medlem %qD kan inte deklareras både virtual och static"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> är inte en giltig deklarerare"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "typedef-deklaration ogiltig i parameterdeklaration"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "lagringsklass angiven för mallparameter %qs"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "specificerare av lagringsklass ogiltig i parameterdeklarationer"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "en parameter kan inte deklareras %<constexpr%>"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "%<virtual%> utanför klassdeklaration"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "flera lagringsklasser i deklaration av %qs"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "lagringsklass angiven för %qs"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "lagringsklass angiven för parameter %qs"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "nästad funktion %qs är deklarerad %<extern%>"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "toppnivådeklaration av %qs anger %<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "funktionsdefinitionsområde %qs implicit auto och deklarerat %<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "ogiltig specificerare av lagringsklass i vänfunktionsdeklarationer"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs är deklarerad som en funktion som returnerar en funktion"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs är deklarerad som en funktion som returnerar en vektor"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr "funktionen %qs använder typspecificeraren %<auto%> utan avslutande returtyp"
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr "funktionen %qs med avslutande returtyp har %qT som sin typ istället för bara %<auto%>"
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr "avslutande returtyp är endast tillgänglig med -std=c++11 eller -std=gnu++11"
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr "funktionen %qs med avslutande returtyp är inte deklarerad med typspecificeraren %<auto%>"
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "destruerare kan inte vara en statisk medlemsfunktion"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "konstruerare kan inte vara en statisk medlemsfunktion"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "destruerare får inte vara cv-kvalificerade"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "konstruerare får inte vara cv-kvalificerade"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "konstruerare kan inte deklareras virtual"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "det går inte att initiera vänfunktionen %qs"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "virtuella funktioner kan inte vara vänner"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "vändeklaration är inte i klassdefinition"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr "det går inte att definiera vänfunktion %qs i en lokal klassdefinition"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "destruerare får inte ha parametrar"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "det går inte att deklarera pekare till %q#T"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "det går inte att deklarera referens till %q#T"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "det går inte att deklarera pekare medlem av %q#T"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "det går inte att deklarera en referens till en kvalificerad funktionstyp %qT"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "det går inte att deklarera en pekare till en kvalificerad funktionstyp %qT"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr "det går inte att deklarera en referens till %q#T, som inte är ett typedef- eller ett malltypargument"
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr "man kan inte använda både %<const%> och %<constexpr%> här"
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr "det går inte att använda både %<volatile%> och %<constexpr%> här"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "mall-id %qD använd som en deklarerare"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "medlemsfunktioner är implicit vänner till sin klass"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "extra kvalifikation %<%T::%> på medlem %qs"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "det går inte att definiera medlemsfunktion %<%T::%s%> inuti %<%T%>"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "det går inte att deklarera medlemsfunktionen %<%T::%s%> inuti %<%T%>"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "det går inte att deklarera medlem %<%T::%s%> inuti %qT"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "icke-parameter %qs kan inte vara ett parameterpaket"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "storleken på vektorn %qs är för stor"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "datamedlem får inte ha variabel typ %qT"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "parameter får inte ha variabel typ %qT"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "endast deklarationer av konstruerare kan vara %<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "icke-medlem %qs kan inte deklareras %<mutable%>"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "icke-objektmedlem %qs kan inte deklareras %<mutable%>"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "funktionen %qs kan inte deklareras %<mutable%>"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "statiska %qs kan inte deklareras %<mutable%>"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "const %qs kan inte deklareras %<mutable%>"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "referensen %qs kan inte deklareras %<mutable%>"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr "typedef deklarerad %<auto%>"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr "typedef-namn får inte vara en nästad-namnspecificerare"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ förbjuder nästad typ %qD med samma namn som en omgivande klass"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "kvalificerade funktiontyper kan inte användas för att deklarera statiska medlemsfunktioner"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "kvalificerade funktiontyper kan inte användas för att deklarera fria funktioner"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "typkvalificerare angivna för vänklassdeklaration"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "%<inline%> angivet för vänklassdeklaration"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "mallparametrar kan inte vara vänner"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "vändeklaration kräver klassnyckel, d.v.s. %<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "vändeklaration kräver klassnyckel, d.v.s. %<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "försöker göra klassen %qT en vän med global räckvidd"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "ogiltiga kvalificerare på typ som inte är medlemsfunktion"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "abstrakt deklarerare %qT använd som deklaration"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "det går inte att använda %<::%> i parameterdeklaration"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "parametern deklarerad %<auto%>"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr "ej statisk datamedlem deklarerad %<auto%>"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "ogiltigt användning av %<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "deklaration av funktionen %qD i ogiltig kontext"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "funktionen %qD deklarerad virtuell inuti en union"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD kan inte deklareras virtuell, eftersom den redan är statisk"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "kvalificerat namn förväntades i vändeklaration för destruerare %qD"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "deklaration av %qD som medlem av %qT"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr "en destruerare kan inte vara %<constexpr%>"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "kvalificerat namn förväntades i vändeklaration för konstruerare %qD"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "fält %qD har ofullständig typ"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "namnet %qT har ofullständig typ"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " i instansiering av mallen %qT"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qE är varken en funktion eller medlemsfunktion, kan inte deklareras som vän"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "statisk constexpr-datamedlemmen %qD måste ha en initierare"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "ickestatisk datamedlem %qE deklarerad %<constexpr%>"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "lagringsklassen %<auto%> är ogiltig för funktionen %qs"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "lagringsklassen %<register%> är ogiltig för funktionen %qs"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "lagringsklassen %<__thread%> är ogiltig för funktionen %qs"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "virt-specificerare i %qs är inte tillåtet utanför en klassdefinition"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "specificerare %<static%> är ogiltigt för funktion %qs deklarerad utanför global räckvidd"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "specificerare %<inline%> är ogiltig för funktionen %qs deklarerad utanför global räckvidd"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "virtuell icke klassfunktion %qs"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "%qs definierad utan att vara i klassräckvidd"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr "%qs deklarerad utan att vara i klassräckvidd"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "det går inte deklarera medlemsfunktionen %qD att ha statisk länkklass"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "kan inte deklarera en statisk funktion i en annan funktion"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "%<static%> får inte användas vid definition (till skillnad mot deklaration) av statisk datamedlem"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "statisk medlem %qD deklarerad %<register%>"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "det går inte att deklarera medlem %q#D att ha extern länkklass"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "deklarationen av constexpr-variabeln %qD är inte en definition"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs initierad och deklarerad %<extern%>"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs har både %<extern%> och initierare"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "standardargumentet för %q#D har typen %qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "standardargumentet för parameter av typen %qT har typen %qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr "standardargument %qE använder %qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "standardargument %qE använder lokal variabel %qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "parametern %qD har Javaklasstyp"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "parameter %qD ogiltigt deklarerad metodtyp"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "parameter %qD inkluderar pekare till vektor %qT med okänd gräns"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr "parameter %qD inkluderar referens till vektor %qT med okänd gräns"
@@ -28965,168 +29017,168 @@ msgstr "parameter %qD inkluderar referens till vektor %qT med okänd gräns"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "ogiltig konstruerare, du menade förmodligen %<%T (const %T&)%>"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qD är kanske inte deklarerad i en namnrymd"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD får inte deklareras som statisk"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD måste vara en icke-statisk medlemsfunktion"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD måste vara antingen en medlemsfunktion som inte är statisk eller funktion som inte är medlem"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD måste ha ett argument med klass- eller uppräkningstyp"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "konvertering till en referens till void kommer aldrig använda en typkonverteringsoperator"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr "konvertering till void kommer aldrig använda en typkonverteringsoperator"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "konvertering till en referens till samma typ kommer aldrig använda en typkonverteringsoperator"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr "konvertering till samma typ kommer aldrig använda en typkonverteringsoperator"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "konvertering till en referens till en basklass kommer aldrig använda en typkonverteringsoperator"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr "konvertering till en basklass kommer aldrig använda en typkonverteringsoperator"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ förhindrar överlagring av operatorn ?:"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qD får inte ha variabelt antal argument"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "postfix %qD måste ta %<int%> som sitt argument"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "postfix %qD måste ta %<int%> som sitt andra argument"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD måste ta antingen noll eller ett argument"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD måste ta antingen ett eller två argument"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "prefix %qD skall returnera %qT"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "postfix %qD skall returnera %qT"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD måste ta %<void%>"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD måste ta exakt ett argument"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD måste ta exakt två argument"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "användardefinierad %qD beräknar alltid båda argumenten"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD skall returnera som värde"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD kan inte ha standardargument"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "malltypparametern %qT används efter %qs"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr "användning av aliasmallspecialisering %qT efter %qs"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "typedef-namnet %qD används efter %qs"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr "%qD har en tidigare deklaration här"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "%qT refererad till som %qs"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T har en tidigare deklaration här"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT refererad till som enum"
@@ -29138,88 +29190,88 @@ msgstr "%qT refererad till som enum"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "mallargument krävs för %<%s %T%>"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD har samma namn som klassen den är deklarerad i"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "referens till %qD är tvetydig"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "enum %q#D används utan tidigare deklaration"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "omdeklaration av %qT som en icke-mall"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "tidigare deklaration %q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "härledd unionen %qT ogiltig"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "Javaklass %qT kan inte ha flera baser"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "Javaklass %qT kan inte ha virtuella baser"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "bastyp %qT är ingen post- eller klasstyp"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "rekursiv typ %qT odefinierad"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "upprepat bastyp %qT ogiltig"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr "uppräkningstyp med/utan räckviddsbegränsning stämmer inte överens för enum %q#T"
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, gcc-internal-format
msgid "previous definition here"
msgstr "tidigare definition här"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr "underliggande typ stämmer inte överens i enum %q#T"
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr "olika underliggande typ i enum %q#T"
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr "underliggande typ %<%T%> till %<%T%> måste vara en heltalstyp"
@@ -29228,72 +29280,72 @@ msgstr "underliggande typ %<%T%> till %<%T%> måste vara en heltalstyp"
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "ingen heltalstyp kan representera alla uppräkningsvärdena i %qT"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "uppräkningsvärde för %qD är inte en heltalskonstant"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "ökat uppräkningsvärde är för stort för %<unsigned long%>"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "överspill i uppräkningsvärden vid %qD"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "uppräkningsvärde %E är för stort för den underliggande typen %<%T%>"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "returtypen %q#T är ofullständig"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "returtypen har Javaklasstyp %q#T"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> skall returnera en referens till %<*this%>"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "ingen tidigare deklaration av %q+D"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "ogiltig funktionsdeklaration"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "parameter %qD deklarerad void"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr "parametern %q+D sätts men används inte"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "ogiltig medlemsfunktionsdeklaration"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD är redan definierad i klassen %qT"
@@ -29333,7 +29385,7 @@ msgstr "det går inte att radera en funktion. Endast pekare till objekt är gil
msgid "deleting %qT is undefined"
msgstr "radera %qT är odefinierat"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "malldeklaration av %q#D"
@@ -29594,7 +29646,7 @@ msgstr "ofullständig typ %qT använd i nästad namnspecificerare"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "referens till %<%T::%D%> är tvetydig"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD har inte en medlem av %qT"
@@ -29900,7 +29952,7 @@ msgstr "typ %qT är inte en direkt bas till %qT"
msgid "bad array initializer"
msgstr "felaktig vektorinitierare"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%qT är inte en klasstyp"
@@ -29985,67 +30037,67 @@ msgstr "ickekonstant vektorstorlek i new, kan inte verifiera längden på initie
msgid "parenthesized initializer in array new"
msgstr "initierare inom parentes i vektor-new"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "storlek i vektor-new måste ha heltalstyp"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new kan inte användas på en referenstyp"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new kan inte användas på en funktionstyp"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "anrop till Javakonstruerare med %<jclass%> odefinierad"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "kan inte hitta %<class$%> i %qT"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "initierare tar slut i förtid"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "det går inte att initiera en flerdimensionell vektor med initierare"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "möjligt problem upptäckt vid anrop av delete-operatorn:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "varken destrueraren eller den klasspecifika operatorn delete kommer anropas, även om de är deklarerade när klassen definieras"
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr "radering av objekt av den abstrakta klasstypen %qT som har en ej virtuell destruerare kommer medföra odefinierat beteende"
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr "radering av objekt av den polymorfa klasstypen %qT som har en ej virtuell destruerare kommer medföra odefinierat beteende"
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "okänd vektorstorlek i delete"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "typ till vektor-delete är varken pekar- eller vektortyp"
@@ -30105,42 +30157,42 @@ msgstr "det finns inga argument till %qD som beror på en mallparameter, så en
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(om du använder %<-fpermissive%>, kommer G++ acceptera din kod, men man bör undvika att tillåta användning av ett odeklarerat namn)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr "manglar typeof, använd decltype istället"
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr "manglar __underlying_type"
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr "manglar okänd fixdecimaltyp"
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr "manglar %C"
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "utelämnad mittenoperand till %<?:%> kan inte manglas"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr "strängliteral i funktionsmallsignatur"
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "det manglade namnet för %qD kommer ändras i en framtida version av GCC"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr "-fabi-version=6 (eller =0) undviker detta fel med en ändring av manglingen"
@@ -30226,57 +30278,57 @@ msgstr "%q+#D är implicit deklarerad som raderad för att %qT deklarerar en fly
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr "%q+#D är underförstått raderad eftersom standarddefinitionen skulle vara felformulerad:"
-#: cp/method.c:1620
+#: cp/method.c:1621
#, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "standarddefinierad deklaration %q+D"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr "stämmer inte med förväntad signatur %qD"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr "funktionen %q+D standarddefinierades i sin första deklaration med en undantagsspecifikation som skiljer från den implicita deklarationen %q#D"
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr "den explicit standarddefinierade funktionen %q+D kan inte deklareras som constexpr för att den implicita deklarationen är inte constexpr:"
-#: cp/method.c:1679
+#: cp/method.c:1680
#, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr "en mall kan inte standarddefinieras"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "%qD kan inte standarddefinieras"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "standarddefinierad funktion %q+D med standardargument"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "vtable-utplacering för klass %qT följer kanske inte ABI:et och kan ändras i en framtida version av GCC på grund av implicit virtuell destruerare"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, gcc-internal-format
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D står i konflikt med tidigare deklaration"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, gcc-internal-format
msgid "previous declaration %q+#D"
msgstr "tidigare deklaration %q+#D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "omdeklaration av %<wchar_t%> som %qT"
@@ -30287,266 +30339,266 @@ msgstr "omdeklaration av %<wchar_t%> som %qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "ogiltig omdeklaration av %q+D"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "som %qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "deklaration av %q#D med C-länkklass"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr "på grund av olika undantagsspecifikationer"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "typ stämmer inte med tidigare externdeklaration av %q#D"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "tidigare externdeklaration av %q+#D"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "externdeklaration av %q#D stämmer inte"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "global deklaration av %q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "deklaration av %q#D skuggar en parameter"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr "deklaration av %qD skuggar en lambdafångst"
# local, det kan troligen vara både lokal variabel och lokal funktionsdeklartion
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "deklaration av %qD skuggar en tidigare lokal deklaration"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "deklaration av %qD skuggar en medlem av â€thisâ€"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "deklaration av %qD skuggar en global deklaration"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "namuppslagning av %qD ändrades"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " stämmer med denna %qD under ISO:s standardregler"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " stämmer med denna %q+D under gamla regler"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "namnuppslagning av %qD ändrad för räckvidd i %<for%> enligt ISO"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " det går inte att använda föråldrad bindning vid %q+D för att den har en destruerare"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " använder föråldrad bindning vid %q+D"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(om du använder %<--fpermissive%> kommer G++ acceptera din kod)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D döljer konstruerare för %q#T"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D står i konflikt med tidigare using-deklaration %q#D"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "tidigare icke-funktions-deklaration av %q+#D"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "står i konflikt med funktionsdeklaration %q#D"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT är inte en namnrymd"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "en using-deklaration kan inte ange ett mall-id. Försök med %<using %D%>"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "namnrymd %qD är inte tillåten i using-deklaration"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "%qD inte deklarerad"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD är redan deklarerad i detta definitionsområde"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "using-deklaration för icke-medlem vid klassräckvidd"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> namnger en destruerare"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%> namnger en konstruerare"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> namnger konstruerare i %qT"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "inga medlemmar matchar %<%T::%D%> i %q#T"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "deklaration av %qD inte i namnrymd som omger %qD"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "explicit-kvalifikation i deklaration av %qD"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD borde ha deklarerats inuti %qD"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "attributet %qD kräver ett ensamt NTBS-argument"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr "attributet %qD är meningslöst eftersom medlemmar av den anonyma namnrymden får lokala symboler"
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "attributdirektivet %qD ignorerat"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "namnrymdsalias %qD inte tillåtet här, antar %qD"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "strong using är endast meningsfullt vid namnrymdsräckvidd"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "nuvarande namnrymd %qD innesluter inte den starkt använda namnrymden %qD"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr "maxgräns på %d namnrymder sökta %qE"
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] "föreslaget alternativ:"
msgstr[1] "föreslagna alternativ:"
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr " %qE"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr "argumentberoende uppslagning hittar %q+D"
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX går in i pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX lämnar pop_everything ()\n"
@@ -30656,7 +30708,7 @@ msgstr "nya typer får inte definieras i en returtyp"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(kanske ett semikolon saknas efter definitionen av %qT)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT är inte en mall"
@@ -30676,7 +30728,7 @@ msgstr "ogiltigt mall-id"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "en flyttalsliteral får inte finnas i ett konstantuttryck"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr "en typomvandling till en annan typ än en heltals- eller uppräkningstyp kan inte förekomma i ett konstantuttryck"
@@ -30819,711 +30871,711 @@ msgstr "inkonsistenta användardefinierade literalsuffix %qD och %qD i strängli
msgid "a wide string is invalid in this context"
msgstr "en bred sträng är inte tillåten i denna kontext"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr "kan inte hitta en teckenliteraloperator %qD med argumentet %qT"
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr "kan inte hitta en numerisk literaloperator %qD"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr "kan inte hitta en strängliteraloperator %qD"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr "kan inte hitta en strängliteraloperator %qD med argumenten %qT, %qT"
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, gcc-internal-format
msgid "expected declaration"
msgstr "en deklaration förväntades"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "fixdecimaltyper stöds inte i C++"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ förbjuder klammergrupper inuti uttryck"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "satsuttryck är inte tillåtna utanför funktioner eller i mallargumentlistor"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, gcc-internal-format
msgid "expected primary-expression"
msgstr "primäruttryck förväntades"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%<this%> kan inte användas i detta sammanhang"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "en malldeklaration får inte förekomma på blocknivå"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "lokal variabel %qD får inte förekomma i detta sammanhang"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, gcc-internal-format
msgid "expected id-expression"
msgstr "id-uttryck förväntades"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "räckvidd %qT före %<~%> är inte ett klassnamn"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "deklaration av %<~%T%> som medlem av %qT"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "typedef-namnet %qD använt som destruerardeklarerare"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr "literala operatorsuffix som inte föregås av %<_%> är reserverade för framtida standardisering"
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr "okvalificerat id förväntades"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr "%<:%> hittades i kapslad namnspecifikation, %<::%> förväntades"
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "decltype beräknas till %qT, som inte är en klass eller uppräkningstyp"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qD är inte en mall"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "nästat namn-specificerare förväntades"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "typer får inte definieras i typkonverteringar"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr "typer får inte definieras i ett %<typeid%>-uttryck"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ förbjuder sammansatta literaler"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qE har inte klasstyp"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "ogiltigt användning av %qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, gcc-internal-format
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%> är inte en klassmedlem"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr "icke skalär typ"
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ tillåter inte %<alignof%> med annat än en typ"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "typer får inte definieras i %<noexcept%>-uttryck"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr "typer får inte definieras i en new-uttryck"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "vektorgräns är förbjuden efter typ-id i parenteser"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "försök ta bort parenteserna runt typ-id:t"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr "typer får inte definieras i en new-type-id"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "uttryck i new-deklarerare måste ha heltals- eller uppräkningstyp"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "användning av gammaldags typkonvertering"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr "operatorn %<>>%> hanteras som två högervinkelparenteser i C++11"
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "föreslår parenteser runt %<>>%>-uttryck"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ tillåter inte ?: med mellersta operanden utelämnad"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr "lambdauttryck i oevaluerat sammanhang"
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr "slut på fångstlista förväntades"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr "explicit fångst via kopiering av %<this%> överflödigt med standardfall av fångst via kopiering"
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ tillåter inte initierare i lambdauttrycks fångstlistor"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr "fångst av en icke-variabel %qD"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, gcc-internal-format
msgid "%q+#D declared here"
msgstr "%q+#D är deklarerad här"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr "fångst av variabeln %qD med ej automatisk lagringsvaraktighet"
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr "explicit fångst via kopiering av %qD överflödigt vid standardfångst via kopiering"
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr "explicit fångst via referens av %qD överflödigt med standardfångst via referens"
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "standardargumentet angivet för lambdaparameter"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, gcc-internal-format
msgid "expected labeled-statement"
msgstr "etikettsats förväntades"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case-etikett %qE är inte i en switch-sats"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr "%<typename%> behövs före %qE för att %qT är en beroende räckvidd"
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> namnger konstrueraren, inte typen"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr "sammansatt sats i en constexpr-funktion"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, gcc-internal-format
msgid "expected selection-statement"
msgstr "selektionssats förväntades"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr "typer får inte definieras i villkor"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "intervallbaserat %<for%>-uttryck av typen %qT har ofullständig typ"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr "intevallbaserat %<for%>-uttryck av typen %qT har en %<end%>-medlem men inte någon %<begin%>"
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr "intervallbaserat %<for%>-uttryck av typen %qT har en %<begin%>-medlem men inte någon %<end%>"
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr "inkonsistenta start-/sluttyper i intervallbaserat %<for%>-sats: %qT och %qT"
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr "iterationssats förväntades"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "intervallbaserade %<for%>-slingor är inte tillåtna i C++98-läge"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ förbjuder beräknade goto"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, gcc-internal-format
msgid "expected jump-statement"
msgstr "hoppsats förväntades"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "extra %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr "%<__label__%> som inte inleder ett block"
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "att blanda deklarationer och funktionsdefinitioner är förbjudet"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "%<friend%> använd utanför en klass"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr "%<auto%> ändrar betydelse i C++11; var god ta bort det"
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr "decl-specificerare är ogiltig i villkor"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "klassdefinition kan inte deklareras som en vän"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr "mallar får inte vara %<virtual%>"
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "ogiltig länkklasspecifikation"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr "typer får inte definieras i %<decltype%>-uttryck"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "ogiltig användning av %<auto%> i konverteringsoperator"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, gcc-internal-format
msgid "only constructors take member initializers"
msgstr "endast konstruerare tar medlemsinitierare"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "det går inte att expandera initierare för medlem %<%D%>"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "minnesinitierare för %qD följer en konstruerardelegering"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr "konstruerardelegering följer mem-initierare för %qD"
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "anakronistisk gammaldags basklassinitierare"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "nyckelordet %<typename%> är inte tillåtet i detta sammanhang (en kvalificerat medlemsinitierare är implicit en typ)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr "en tom sträng förväntades efter nyckelordet %<operator%>"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, gcc-internal-format
msgid "expected suffix identifier"
msgstr "suffixidentifierare förväntades"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr "mellanrum saknas mellan %<\"\"%> och suffixidentifierare"
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, gcc-internal-format
msgid "expected operator"
msgstr "operator förväntades"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "nyckelordet %<export%> är inte implementerat och kommer ignoreras"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "mallparameterpaket %qD kan inte ha ett standardargument"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "mallparameterpaket kan inte ha ett standardargument"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "mallparameterpaket kan inte ha standardargument"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, gcc-internal-format
msgid "expected template-id"
msgstr "mall-id förväntades"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, gcc-internal-format
msgid "expected %<<%>"
msgstr "%<<%> förväntades"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%<<::%> kan inte inleda en argumentlista till en mall"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> är en alternativ stavning av %<[%>. Lägg in mellanrum mellan %<<%> och %<::%>"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr "syntaxfel i argumentlista till mall"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, gcc-internal-format
msgid "expected template-name"
msgstr "mallnamn förväntades"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "icke-mall %qD använd som mall"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "använd %<%T::template %D%> för att indikera att det är en mall"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr "parameterpaket förväntades före %<...%>"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, gcc-internal-format
msgid "expected template-argument"
msgstr "mallargument förväntades"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "ogiltigt mallargument som inte är en typ"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "en explicit instansiering skall inte använda %<inline%>-specificerare"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "en explicit instansiering skall inte använda %<constexpr%>-specificerare"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "mallspecialisering med C-länkning"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, gcc-internal-format
msgid "expected type specifier"
msgstr "typspecificerare förväntades"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, gcc-internal-format
msgid "expected template-id for type"
msgstr "mall-id för typ förväntades"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, gcc-internal-format
msgid "expected type-name"
msgstr "typnamn förväntades"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr "beräknad typspecifikation för en enum med räckvidd får inte använda nyckelordet %<%D%>"
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "deklaration %qD deklarerar inte något"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "attributet ignorerat på oinstansierad typ"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "attribut ignoreras vid mallinstansiering"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr "attribut ignoreras för bearbetade typspecificerare som inte är en framåtdeklaration"
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "%qD är en uppräkningsmall"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr "%qD är inte ett uppräkningsnamn"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "%<;%> eller %<{%> förväntades"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr "det går inte att lägga till en uppräkningslista till en mallinstansiering"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "deklaration av %qD i namnrymd %qD som inte innesluter %qD"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "deklaration av %qD i %qD som inte innesluter %qD"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "fler definitioner av %q#T"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr "ogenomskinlig enum-specifikation utan namn"
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr "en ogenomskinlig enum-specifikation måste använda en enkel identifierare"
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD är inte ett namnrymdsnamn"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, gcc-internal-format
msgid "expected namespace-name"
msgstr "namnrymdsnamn förväntades"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "%<namespace%>-definition är inte tillåten här"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "ett mall-id får inte förekomma i en using-deklaration"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr "åtkomstdeklarationer bör undvikas till förmån för using-deklarationer; förslag: lägg till nyckelordet %<using%>"
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr "typer får inte definieras i aliasmalldeklarationer"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "en funktionsdefinition är inte tillåten här"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "en asm-specifikation är inte tillåten på en funktionsdefinition"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "attribut är inte tillåtna vid en funktionsdefinition"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr "konstruerare, destruerare eller typkonvertering förväntades"
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, gcc-internal-format
msgid "expected initializer"
msgstr "initierare förväntades"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, gcc-internal-format
msgid "invalid type in declaration"
msgstr "ogiltig typ i deklaration"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, gcc-internal-format
msgid "initializer provided for function"
msgstr "initierare angiven för funktion"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "attribut efter initierare inom parentes ignoreras"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "vektorgräns är inte en heltalskonstant"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "det går inte att definiera medlem av beroende typedef %qT"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%E%> är inte en typ"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "ogiltig användning av konstruerare som en mall"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "använd %<%T::%D%> istället för %<%T::%D%> för att namnge konstrueraren i ett kvalificerat namn"
@@ -31532,247 +31584,247 @@ msgstr "använd %<%T::%D%> istället för %<%T::%D%> för att namnge konstruerar
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "ogiltig deklarator"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, gcc-internal-format
msgid "expected declarator"
msgstr "deklarator förväntades"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD är en namnrymd"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr "kan inte skapa en pekare till medlem av %q#T som inte är en klass"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, gcc-internal-format
msgid "expected ptr-operator"
msgstr "oväntad pekaroperator"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "upprepade cv-kvalificerare"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr "upprepade virt-specificerare"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "ogiltigt användning av %<auto%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "typer får inte definieras i mallargument"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, gcc-internal-format
msgid "expected type-specifier"
msgstr "typspecificerare förväntades"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "%<,%> eller %<...%> förväntades"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "typer får inte definieras i parametertyper"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "användning av standardargument för parametrar till annat än funktioner bör undvikas"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "standardargument är endast tillåtna för funktionsparametrar"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr "parameterpaket %qD kan inte ha ett standardargument"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr "parameterpaket kan inte ha ett standardargument"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ tillåter inte designerade initierare"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ tillåter inte C99:s designerade initierare"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, gcc-internal-format
msgid "expected class-name"
msgstr "klassnamn förväntades"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "%<;%> förväntades efter klassdefinition"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "%<;%> förväntades efter postdefinition"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "%<;%> förväntades efter uniondefinition"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "%<{%> eller %<:%> förväntades"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr "det går inte att ange %<override%> för en klass"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr "globala kvalificering av klassnamn är ogiltigt"
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "kvalificerat namn namnger inte en klass"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "ogiltigt klassnamn i deklaration av %qD"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr "extra kvalifikation inte tillåten"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "en explicit specialisering måste föregås av %<template <>%>"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "funktionsmall %qD omdeklarerad som en klassmall"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr "det gick inte att lösa upp typnamnstyp"
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "föregående definition av %q+#T"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, gcc-internal-format
msgid "expected class-key"
msgstr "klassnyckel förväntades"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "i C++03 måste en klassnyckel användas när en vän deklareras"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "vändeklaration som inte namnger en klass eller funktion"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "pure-specificerare på funktionsdefinition"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "%<;%> förväntades vid slutet av medlemsdeklaration"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr "ogiltig pure-specifiserare (endast %<= 0%> är tillåtet)"
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr "en klammeromsluten initierare är inte tillåten här"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr "%<virtual%> anges mer än en gång i basspecificerade"
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr "mer än en åtkomstspecifikation i basspecificerade"
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "nyckelordet %<typename%> är inte tillåtet utanför mallar"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "nyckelordet %<typename%> är inte tillåtet i detta sammanhang (basklassen är implicit en typ)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "typer får inte definieras i en undantagsspecifikation"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr "dynamiska undantagsspecifikationer undanbedes i C++0x, använd %<noexcept%> istället"
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "typer får inte definieras i undantagsdeklarationer"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr "specialisering av medlem %<%T::%E%> kräver %<template<>%>-syntax"
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "ogiltig omdeklaration av %<%T::%E%>"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "för få mallparameterlistor"
@@ -31781,318 +31833,318 @@ msgstr "för få mallparameterlistor"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "för många mallparameterlistor"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "namngivna returvärden stödjs inte längre"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr "ogiltig deklaration av medlemsmall i lokal klass"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "mall med C-länkning"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "ogiltig explicit specifikation"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr "den literala operatormallen %qD har ogiltig parameterlista. Ett mallargument som inte är en typ pack <char…> förväntades"
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "malldeklaration av %<typedef%>"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "explicit mallspecialisering kan inte ha en lagringsklass"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%<>>%> skulle vara %<> >%> inuti en nästad mallargumentlista"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "vilsekommet %<>>%>, använd %<>%> för att avsluta en mallargumentlista"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "ogiltig användning av %qD i länkklasspecifikation"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> före %qD"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, gcc-internal-format
msgid "expected %<new%>"
msgstr "%<new%> förväntades"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr "%<delete%> förväntades"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, gcc-internal-format
msgid "expected %<return%>"
msgstr "%<return%> förväntades"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, gcc-internal-format
msgid "expected %<extern%>"
msgstr "%<extern%> förväntades"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr "%<static_assert%> förväntades"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "%<decltype%> förväntades"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, gcc-internal-format
msgid "expected %<operator%>"
msgstr "%<operator%> förväntades"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr "%<class%> förväntades"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, gcc-internal-format
msgid "expected %<template%>"
msgstr "%<template%> förväntades"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "%<namespace%> förväntades"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr "%<using%> förväntades"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, gcc-internal-format
msgid "expected %<asm%>"
msgstr "%<asm%> förväntades"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, gcc-internal-format
msgid "expected %<try%>"
msgstr "%<try%> förväntades"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr "%<catch%> förväntades"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr "%<throw%> förväntades"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "%<__label__%> förväntades"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, gcc-internal-format
msgid "expected %<@try%>"
msgstr "%<@try%> förväntades"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr "%<synchronized%> förväntades"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr "%<@throw%> förväntades"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr "%<__transaction_atomic%> förväntades"
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr "%<__transaction _relaxed%> förväntades"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr "%<::%> förväntades"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr "%<...%> förväntades"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, gcc-internal-format
msgid "expected %<*%>"
msgstr "%<*%> förväntades"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, gcc-internal-format
msgid "expected %<~%>"
msgstr "%<~%> förväntades"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "%<:%> eller %<::%> förväntades"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "%<class%>, %<typename%> eller %<template%> förväntades"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "%qs-tagg använd vid namngivning av %q#T"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr "%q#T deklarerades tidigare här"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qD omdeklarerad med annan åtkomst"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "%<template%> (för att lösa upp tvetydighet) är endast tillåtet inuti mallar"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "filen slutar i standardargument"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "felplacerad Objective-C++-konstruktion %<@%D%>"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr "objective-c++-meddelandeargument förväntades"
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "%<@encode%> måste ange en typ som ett argument"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr "ogiltigt Objective-C++-selekterarnamn"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr "metodeklaration i objective-c++ förväntades"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "metodattribut måste anges på slutet"
# %qs blir "{" eller "}"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr "vilsekommet %qs mellan Objective-C++ metoder"
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "ogiltig typ för iterationsvariabel"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "identifierare förväntades efter %<@protocol%>"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr "attribut får inte anges före Objective-C++-nyckelordet %<@%D%>"
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "prefixattribut ignoreras före %<@%D%>"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, gcc-internal-format
msgid "invalid type for property"
msgstr "ogiltigt typ på egenskap"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr "initiering i parenteser är inte tillåtet i en OpenMP-%<for%>-slinga"
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "iterationsvariabel %qD skall inte vara reduction"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr "inte tillräcklig kollapsat för slingor"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr "%<__transaction_relaxed%> utan stöd för transaktionsminne aktiverat"
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr "%<__transaction_atomic%> utan stöd för transaktionsminne aktiverat"
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "skräp vid slutet av %<#pragma GCC pch_preprocess%>"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "intermoduloptimeringar inte implementerade för C++"
@@ -32189,69 +32241,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD är inte en funktionsmall"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "mall-id %qD för %q+D stämmer inte med någon malldeklaration"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr "såg %d %<template<>%>, behöver %d för specialisering av medlemsfunktionsmall"
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "tvetydig mallspecialisering %qD för %q+D"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "mall-id %qD i deklaration av primär mall"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "mallparameterlista använd i explicit instansiering"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "definition given för explicit instansiering"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "för många mallparameterlistor i deklarationen av %qD"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "för få mallparameterlistor i deklarationen av %qD"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "explicit specialisering av %qD måste inledas av %<template <>%>"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "partiell specialisering av funktionsmall %qD är inte tillåten"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "standardargument angivet i explicit specialisering"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD är inte en mallfunktion"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD inte deklarerad i %qD"
@@ -32264,134 +32316,134 @@ msgstr "%qD inte deklarerad i %qD"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "specialisering av implicit deklarerad specialmedlemsfunktion"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "ingen medlemsfunktion %qD är deklarerad i %qT"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr "basinitierarexpansionen %<%T%> innehåller inga parameterpaket"
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr "expansionsmönster %<%T%> innehåller inga argumentpaket"
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr "expansionsmönster %<%E%> innehåller inga argumentpaket"
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr "parameterpaket expanderas inte med %<...%>:"
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr " <anonym>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "deklaration av %q+#D"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr " skuggar mallparameter %q+#D"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "mallparameter används inte i partiell specialisering:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "partiell specialisering %qT specialiserar inte något mallargument"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr "parameterpaketargument %qE måste vara vid slutet av mallens argumentlista"
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr "parameterpaketargument %qT måste vara vid slutet av mallens argumentlista"
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "mallargument %qE berör mallparametrar"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "typ %qT för mallargument %qE beror på en mallparameter"
msgstr[1] "typ %qT för mallargument %qE beror på mallparametrar"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "partiell specialisering %qT efter instansiering av %qT"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "inget standardargument för %qD"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr "parameterpaket %qE måste vara vid slutet av mallens parameterlista"
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr "parameterpaket %qT måste vara vid slutet av mallens parameterlista"
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "standardmallargument får inte användas i vänomdeklaration av funktionsmall"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr "standardmallargument får inte användas i vändeklarerade funktionsmallar"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr "standarmallargument får inte användas i funktionsmallar utan -std=c++11 eller -std=gnu++11"
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr "standardmallargument får inte användas i partiella specialiseringar"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "standardargumentet för mallparameter för klass om omsluter %qD"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "mallklass utan ett namn"
@@ -32399,7 +32451,7 @@ msgstr "mallklass utan ett namn"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "destrueraren %qD deklarerad som medlemsmall"
@@ -32409,76 +32461,76 @@ msgstr "destrueraren %qD deklarerad som medlemsmall"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "ogiltig malldeklaration av %qD"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "malldefinition av icke-mall %q#D"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "%d nivåer av mallparametrar förväntades till %q#D, %d fanns"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "fick %d mallparametrar till %q#D"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "fick %d mallparametrar till %q#T"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " men %d behövs"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "mallargument till %qD stämmer inte med orginalmallen %qD"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr "använd template<> för en explicit specialisering"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT är inte en malltyp"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "mallspecificerare inte angivna i deklarationen av %qD"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "omdeklarerad med %d mallparameter"
msgstr[1] "omdeklarerad med %d mallparametrar"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "tidigare deklaration av %q+D använde %d mallparameter"
msgstr[1] "tidigare deklaration av %q+D använde %d mallparametrar"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "mallparameter %q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "omdeklarerad här som %q#D"
@@ -32487,328 +32539,328 @@ msgstr "omdeklarerad här som %q#D"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "omdefinition av standardargument till %q#D"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, gcc-internal-format
msgid "original definition appeared here"
msgstr "ursprunglig definition fanns här"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qE är inte ett giltigt mallargument för typ %qT eftersom %qD inte har någon länkklass"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qE är inte ett giltigt mallargument för typen %qT eftersom %qD inte har extern länkklass"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE är inte ett giltigt mallargument för typen %qT"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "det måste vara en pekare-till-medlem på formen %<&X::Y%>"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr " kunde inte härleda mallparametrar %qD"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr " typerna %qT och %qT har inkompatibla cv-kvalificerare"
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr " typerna %qT och %qT stämmer inte överens"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr "mallparameter %qD är inte ett parameterpaket, men argunet %qD är det"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr " mallargument %qE stämmer inte med pekare till medlem-konstanten %qE"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr " %qE är inte ekvivalent med %qE"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr " inkonsistent härledning av parameterpaket med %qT och %qT"
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr " härledda typer i konflikt för parametern %qT (T%qT och %qT)"
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr " härledda värden i konflikt för icke-typ-parametern %qE (%qE och %qE)"
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr " vektortypen %qT med variabel storlek är inte ett giltigt mallargument"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr " medlemsfunktionstypen %qT är inte ett giltigt mallargument"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr " kan inte konvertera %qE (typen %qT) till typ %qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr " %qT är en tvetydig basklass till %qT"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, gcc-internal-format
msgid " %qT is not derived from %qT"
msgstr " %qT är inte härledd från %qT"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr " mallparametrarna till ett mallmallargument är inkonsistenta med andra härledda mallargument"
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr " det går inte att härleda en mall för %qT från typen %qT som inte är en mall"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr " mallargument %qE stämmer inte med %qD"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr " kunde inte lösa upp adressen från en överlagrad funktion %qE"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qE är inte ett giltigt mallargument för typ %qT eftersom strängkonstanter aldrig kan användas i detta sammanhang"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "i mallargument för typen %qT"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qD är inte ett giltigt mallargument för att %qD är en variabel, inte adressen till en variabel"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE är inte ett giltigt mallargument för typen %qT eftersom %qE inte är en variabel"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qE är inte ett giltigt mallargument av typ %qT eftersom %qD inte har extern länkklass"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE är inte ett giltigt mallargument för typen %qT eftersom %qD inte har någon länkklass"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "%qE är inte ett giltigt mallargument för typ %qT eftersom det står i konflikt med cv-kvalificeringar"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE är inte ett giltigt mallargument för typ %qT eftersom inte är ett l-värde"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%q#D är inte ett giltigt mallargument till typen %qT eftersom en referensvariabel inte har en konstant adress"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qE är inte ett giltigt mallargument för typen %qT eftersom det inte är ett objekt med extern länkklass"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qE är inte ett giltigt mallargument för typ %qT eftersom objekt %qD inte har extern länkklass"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr "det måste vara adressen till en funktion med extern lagringsklass"
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE är inte ett giltigt mallargument för typen %qT eftersom det är en pekare"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "försök att använda %qE istället"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE är inte ett giltigt mallargument för typen %qT eftersom det är av typen %qT"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "standardkonverteringar är inte tillåtna i denna kontext"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "ignorerar attribut på mallargumentet %qT"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr "inskjutet klassnamn %qD använt som mallmallargument"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr "ogiltig användning av destrueraren %qE som en typ"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "för att referera till en typmedlem av en mallparameter, använd %<typename %E%>"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "typ/värde stämmer inte vid argument %d i mallparameterlistan till %qD"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " förväntade en konstant av typen %qT, fick %qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " förväntade en klassmall, fick %qE"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " förväntade en typ, fick %qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " förväntade en typ, fick %qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " förväntade en klassmall, fick %qT"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr " förväntade en mall av typen %qD, fick %qT"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "typer stämmer inte i icke-typs parameterpaket"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "kunde inte konvertera mallargument %qE till %qT"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "fel antal mallargument (%d, skulle vara %d)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "fel antal mallargument (%d, skulle vara %d eller fler)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "angivna till %q+D"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "mallargument %d är ogiltigt"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, gcc-internal-format
msgid "%q#D is not a function template"
msgstr "%q#D är inte en funktionsmall"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "icke-malltyp %qT använd som en mall"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "för malldeklaration %q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "mallinstansieringsdjupet överskrider maxvärdet på %d (använd -ftemplate-depth= för att öka maxvärdet) ersätter med %qS"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "mallinstansieringsdjupet överskrider maxvärdet på %d (använd -ftemplate-depth= för att öka maxvärdet) vid instansiering av %qD"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr "argumentpaketlängder stämmer inte överens vid expansion av %<%T%>"
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr "argumentpaketlängder stämmer inte överens vid expansion av %<%E%>"
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "instansiering av %q+D som typ %qT"
@@ -32826,257 +32878,257 @@ msgstr "instansiering av %q+D som typ %qT"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr "variabeln %qD har funktionstyp"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "ogiltig parametertyp %qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "i deklaration %q+D"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "funktion som returnerar en vektor"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "funktion som returnerar en funktion"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "skapar pekare till medlemsfunktion i typ %qT som inte är en klass"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "formar referens till void"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "formar pekare till en referenstyp %qT"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "formar referens till en referenstyp %qT"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "skapar pekare till medlem av typ %qT som inte är en klass"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "skapar pekare till medlemsreferenstyp %qT"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "skapar pekare till medlem av typ void"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "skapar vektor av %qT"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "skapar vektor av %qT, som är en abstrakt klasstyp"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT är inte en klass-, post- eller unionstyp"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%T slås upp till %qT som inte är en uppräkningstyp"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT löses upp till %qT, som inte är en klasstyp"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "användning av %qs i mall"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "kvalificerande typ %qT matchar inte destruerarnamnet ~%qT"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "namnet %qE i den beroende tolkas som något annat än en typ, men instansiering ger en typ"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "säg %<typename %E%> om en typ avses"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "användning av ogiltigt fält %qD"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "ogiltig användning av paketexpansionsuttryck"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr "använd %<...%> för att expandera argumentpaket"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr "%qD har inte deklarerats i denna räckvidd, och inga deklarationer hittades vid argumentberoende uppslagning vid instantieringspunkten"
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr "deklarationer i beroende bas %qT hittas inte av en okvalificerad uppslagning"
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr "använd %<this->%D%> istället"
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr "använd %<%T::%D%> istället"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr "%q+D är deklarerad här, senare i översättningsenheten"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT är inte en klass eller namnrymd"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD är inte en klass eller namnrymd"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT är/använder en anonym typ"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "mallargumentet för %qD använder lokal typ %qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT är en variabel typ"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "heltalsuttryck %qE är inte konstant"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " försöker instansiera %qD"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "tvetydig klassmallinstansiering av %q#T"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "explicit instansieringar av icke-mall %q#D"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "%qD är inte en statisk datamedlem i en klassmall"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "det finns ingen matchande mall för %qD"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "typ %qT för explicit instansiering %qD stämmer inte med deklarerad typ %qT"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "explicit instansiering av %q#D"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "dubblerad explicit instansiering av %q#D"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ 1998 förbjuder användning av %<extern%> vid explicita instansieringar"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "lagringsklass %qD tillämpad på mallinstansiering"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr "explicit instansieringar av mallen %q#D som inte är en klass"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "explicit instansieringar av icke-malltyp %qT"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "explicit instansiering av %q#T före definitionen av mallen"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ förbjuder användning av %qE vid explicita instansieringar"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "dubblerad explicit instansiering av %q#T"
@@ -33088,32 +33140,32 @@ msgstr "dubblerad explicit instansiering av %q#T"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "explicit instansiering av %qD men ingen definition tillgänglig"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "mallinstansieringsdjupet överskrider maxvärdet på %d vid instansiering av %q+D, möjligen från generering av virtuell tabell (använd -ftemplate-depth= för att öka maxvärdet)"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, gcc-internal-format
msgid "invalid template non-type parameter"
msgstr "ogiltig mallparameter som inte är en typ"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#T är inte en giltig typ för en mallparameter som inte är en typ"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr "härledning från klammeromgiven initierarlista kräver #include <initializer_list>"
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr "variabeln %q#D med %<auto%>-typ använd i sin egen initierare"
@@ -33121,12 +33173,12 @@ msgstr "variabeln %q#D med %<auto%>-typ använd i sin egen initierare"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "kan inte härleda %qT från %qE"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr "inkonsistent härledning för %qT: %qT och sedan %qT"
@@ -33318,7 +33370,7 @@ msgstr "ogiltigt användning av %<this%> på toppnivå"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "ogiltigt kvalificerande räckvidd i pseudodestruerarnamn"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "kvalificerad typ %qT matchar inte destruerarnamnet ~%qT"
@@ -33358,442 +33410,442 @@ msgstr "definition av %q#T inuti mallparameterlista"
msgid "invalid definition of qualified type %qT"
msgstr "ogiltig definition av kvalificerad typ %qT"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "ogiltig basklasspecifikation"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, gcc-internal-format
msgid "%qD is not captured"
msgstr "%qD är inte fångad"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "användning av %<auto%>-variabel från den kringliggande funktionen"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr "användning av parameter från den kringliggande funktionen"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr " %q+#D deklarerades här"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr "användning av parametern %qD utanför funktionskropp"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "mallparameter %qD av typ %qT är inte tillåten i ett konstant heltalsuttryck eftersom den inte är av heltals- eller uppräkningstyp"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "användning av namnrymden %q+D som uttryck"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "användning av klassmall %qT som uttryck"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "begäran av medlem %qD är tvetydig i gitter av multipelt arv"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qD får inte finnas i ett konstantuttryck"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "typen på %qE är okänd"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr "%qT är inte ett uppräkningstyp"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, gcc-internal-format
msgid "Parameter pack __bases only valid in template declaration"
msgstr "Parameterpakets-__bases är endast giltiga i malldeklarationer"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr "det går inte att applicera %<offsetof%> på destrueraren %<~%T%>"
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "det går inte att använda %<offsetof%> på medlemsfunktion %qD"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qD är inte en variabel i klausul %qs"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr "%qD förekommer mer än en gång i dataklausuler"
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "%qD är inte en variabel i klausul %<firstprivate%>"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "%qD är inte en variabel i klausul %<lastprivate%>"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr "num_threads-uttryck måste vara heltal"
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr "uttryck för styckesstorlek för schemaläggning måste vara heltal"
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "%qE har referenstyp för %qs"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr "%<threadprivate%> %qD är inte fil-, namnrymds- eller blockräckviddsvariabel"
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "%<threadprivate%> %qE-direktiv inte i %qT-definition"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr "skillnaden mellan %qE och %qD har inte heltalstyp"
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr "statisk försäkran misslyckades: %s"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "icke-konstant villkor i statisk deklaration"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "argument till decltype måste vara ett uttryck"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "decltype kan inte lösa upp adressen till en överlagrad funktion"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr "__is_convertible_to"
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr "typen %qT för constexpr-variabeln %qD är inte en literal"
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "ogiltig typ för parameter %d till constexpr-funktion %q+#D"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "ogiltig returtyp %qT för constexpr-funktionen %q+D"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr "%q#T har virtuella basklasser"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr "constexpr-konstruerare har inte tom kropp"
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr "%<constexpr%>-konstrueraren för unionen %qT måste initiera precis en icke statisk datamedlem"
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "oinitierad medlem %qD i %<constexpr%>-konstruerare"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr "kroppen i constexpr-funktionen %qD är inte en retursats"
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, gcc-internal-format
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%q+D är inte användbar som en constexpr-funktion eftersom:"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "uttrycket %qE anger inte en constexpr-funktion"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr "anrop av icke-constexpr-funktion %qD"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, gcc-internal-format
msgid "%qD called in a constant expression"
msgstr "%qD anropad i ett konstant uttryck"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, gcc-internal-format
msgid "%qD used before its definition"
msgstr "%qD användes före sin definition"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr "anrop har cirkulärt beroende"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "beräkning av constexpr överskrider maxvärdet på %d (använd -fconstexpr-depth= för att öka maxvärdet)"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "%q+E är inte ett konstant uttryck"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, gcc-internal-format
msgid "array subscript out of bound"
msgstr "vektorindex är utanför gränserna"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "%qE är inte ett konstant uttryck"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "muterbar %qD är inte användbart i ett konstant uttryck"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr "använder medlem %qD istället för initierad medlem %qD i ett konstant uttryck"
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "använder värdet av %qE genom ett %qT-glvalue i ett konstant uttryck"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "värdet på %qD är inte användbart i ett konstant uttryck"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "%qD använd i sin egen initierare"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, gcc-internal-format
msgid "%q#D is not const"
msgstr "%q#D är inte const"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr "%q+#D är volatile"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "%qD initierades inte med ett konstant uttryck"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD deklarerades inte %<constexpr%>"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "%qD har inte heltals- eller uppräkningstyp"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr "användning av värdet på objektet som konstrueras i ett konstant uttryck"
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, gcc-internal-format
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "temporär av den ej literala typen %qT i ett konstant uttryck"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "uttrycket %qE är inte ett konstantuttryck"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "oväntat uttryck %qE av sorten %s"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr "%qT kan inte vara typen på ett komplett konstantuttryck eftersom det har muterbara delobjekt"
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr "konvertering från pekartypen %qT till den aritmetiska typen %qT i ett konstant uttryck"
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr "uttrycket %qE har sidoeffekter"
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr "anrop av en medlemsfunktion i objektet som konstrueras i ett konstant uttryck"
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr "adress-av på ett objekt %qE med trådlokal eller automatisk lagring är inte ett konstant uttryck"
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr "typeid-uttryck är inte ett konstant uttryck eftersom %qE har polymorf typ"
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr "skillnaden mellan två pekaruttryck är inte ett konstant uttryck"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "pekarjämförelseuttryck är inte ett konstant uttryck"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "division med noll är inte ett konstantuttryck"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, gcc-internal-format
msgid "non-constant array initialization"
msgstr "ickekonstant vektorinitierare"
# ast = abstract syntax tree
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "oväntat AST av sorten %s"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "det går inte att fånga %qE via referens"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr "redan infångad %qD i lambdauttryck"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "%<this%> fångades inte för denna lambdafunktion"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "%qV-kvalificerare kan inte tillämpas på %qT"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "attributet %qE kan bara användas på klassdefinitioner i Java"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "attributet %qE kan bara användas på klassdefinitioner"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE är föråldrad, g++-vtabeller är nu COM-kompatibla som standard"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "begärd init_priority är inte en heltalskonstant"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "det går bara att använda attributet %qE på definitioner av objekt- eller klasstyp med filräckvidd"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "begärd init_priority är utanför sitt intervall"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "begärt init_priority är reserverad för internt bruk"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "attributet %qE stöds inte på denna plattform"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_*-kontroll: misslyckades i %s, vid %s:%d"
@@ -33883,446 +33935,451 @@ msgstr "ISO C++ förbjuder användning av %<__alignof%> på ett uttryck med funk
msgid "invalid use of non-static member function"
msgstr "ogiltig användning av icke-statisk medlemsfunktion"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr "tar adress till temporär vektor"
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "konvertering från strängkonstant till %qT bör undvikas"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "begäran av medlem %qD i %qE, som är av pekartypen %qT (kanske du hade tänkt använda %<->%> ?)"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "begäran av medlem %qD i %qE, som är av icke-klasstyp %qT"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "ogiltig användning av icke-statisk datamedlem %qE"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ogiltig åtkomst av ickestatisk datamedlem %qD från NULL-objekt"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(kanske makrot %<offsetof%> användes felaktigt)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ogiltig åtkomst av ickestatisk datamedlem %qD från NULL-objekt"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "objekttyp %qT stämmer inte med destruerarnamnet ~%qT"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "typen som destrueras är %qT, men destrueraren refererar till %qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%> är inte en medlem av %qT"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT är inte en basklass till %qT"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD har ingen medlem med namnet %qE"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD är inte en medlemsmallfunktion"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT är inte en pekare-på-objekt-typ"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "ogiltig användning av vektorindexering på pekare till medlem"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "ogiltig användning av unärt %<*%> på pekare till medlem"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "ogiltig användning av implicit konvertering av pekare till medlem"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "index saknas i vektorreferens"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ förbjuder indexering av icke-lvalue-vektor"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "indexering av vektor deklarerad %<register%>"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "indexerat värde är varken en vektor eller pekare"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "objekt saknas i användning av %qE"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ förbjuder anrop av %<::main%> inifrån program"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "man måste använda %<.*%> eller %<->*%> för att anropa en pekare-till-medlems-funktion i %<%E (...)%>, t.ex. %<(... ->* %E) (...)%>"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qE kan inte användas som en funktion"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "för många argument till konstrueraren %q#D"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "för få argument till konstrueraren %q#D"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr "för många argument till medlemsfunktionen %q#D"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr "för få argument till medlemsfunktionen %q#D"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr "för många argument till funktionen %q#D"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr "för få argument till funktionen %q#D"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "för många argument till metoden %q#D"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "för få argument till metoden %q#D"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "för många argument till funktion"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "för få argument till funktion"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "parameter %P till %qD har ofullständig typ %qT"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "parametern %P har ofullständig typ %qT"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "antar typkonvertering till %qT från överlagrad funktion"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "NULL använd i aritmetik"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, gcc-internal-format
msgid "left rotate count is negative"
msgstr "längd att rotera till vänster är negativ"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr "längd att rotera till höger är negativ"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "längd att rotera till vänster >= storleken på typen"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "längd att rotera till höger >= storleken på typen"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "jämförelse med strängkonstant resulterar i odefinierat beteende"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "adressen till %qD kommer aldrig vara NULL"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ förbjuder jämförelse mellan pekare och heltal"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "oordnad jämförelse av argument som inte är flyttal"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "ogiltiga operander av typ %qT och %qT till binär %qO"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ förbjuder användning av pekare av typ %<void *%> i subtraktion"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ förbjuder användning av pekare till en funktion i subtraktion"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ förbjuder användning av pekare till en metod i subtraktion"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "ogiltig användning av en pekare till en ofullständig typ i pekararitmetik"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr "tar adressen till konstrueraren %qE"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "tar adressen till destrueraren %qE"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "ogiltig användning av %qE för att skapa en pekare-till-medlem-funktion"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr " ett kvalificerat id krävs"
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "parenteser runt %qE kan inte användas för att skapa en pekare-till-medlem-funktion"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ förbjuder att ta adressen till en okvalificerad eller parentetiserad icke-statisk medlemsfunktion för att skapa en pekare till en medlemsfunktion. Säg %<&%T::%D%>"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ förbjuder att ta adressen till en bunden medlemsfunktion för att skapa en pekare till medlemsfunktion. Säg %<&%T::%D%>"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "tar adress till något temporärt"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr "tar adressen till xvalue (rvalue-referens)"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ förbjuder att ta adressen till funktionen %<::main%>"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ förbjuder att ta adressen till en typkonvertering till ett icke-lvärde-uttryck"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "kan inte skapa pekare till referensmedlem %qD"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ förbjuder ökning av enum"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ förbjuder minskning av enum"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "det går inte att öka en pekare på en ofullständig typ %qT"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "det går inte att minska en pekare på en ofullständig typ %qT"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ förbjuder ökning av pekare på typ %qT"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ förbjuder minskning av pekare på typ %qT"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "ogiltigt användning av Booleskt uttryck som operand till %<operator--%>"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "kan inte ta adressen till %<this%>, som är ett rvalue-uttryck"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "adress till explicit registervariabel %qD begärd"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "adress begärd till %qD, som är deklarerad %<register%>"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "listinitierare för en typ som inte är en klass får inte vara inom parenteser"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "uttryckslista behandlas som sammansatt uttryck i initierare"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "uttryckslista behandlas som sammansatt uttryck i medlemsinitierare"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "uttryckslista behandlas som sammansatt uttryck i funtionstypkonvertering"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "uttryckslistan %s behandlas som sammansatt uttryck"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr "ingen kontext för att lösa upp typen på %qE"
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "konvertering från typ %qT till typ %qT slänger bort kvalificerare"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "static_cast från typ %qT till typ %qT slänger bort kvalificerare"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "reinterpret_cast från typ %qT till typ %qT slänger bort kvalificerare"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "ogiltig static_cast från typ %qT till typ %qT"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "konvertering från %qT till %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "ogiltig typkonvertering av ett rvärdeuttryck av typ %qT till typ %qT"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "konvertering från %qT till %qT förlorar precision"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "typkonvertering från %qT till %qT ökar kravet på justering för måltypen"
@@ -34331,221 +34388,221 @@ msgstr "typkonvertering från %qT till %qT ökar kravet på justering för målt
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ förbjuder konvertering mellan pekare-till-funktion och pekare-till-objekt"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "ogiltig konvertering från typ %qT till typ %qT"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "ogiltig användning av const_cast med typ %qT, som inte är en pekare, referens, eller pekare-till-datamedlem-typ"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "ogiltig användning av const_cast med typ %qT, som är en pekare eller referens till en funktionstyp"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "ogiltig const_cast av ett rvärde av typ %qT till typ %qT"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "ogiltig const_cast från typ %qT till typ %qT"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ förbjuder typkonvertering till en vektortyp %qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "ogiltig konvertering till funktionstyp %qT"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " i beräkningen av %<%Q(%#T, %#T)%>"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr "tilldelning till en vektor från en initierarlista"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "inkompatibla typer i tilldelning av %qT till %qT"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, gcc-internal-format
msgid "array used as initializer"
msgstr "vektor använd som initierare"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, gcc-internal-format
msgid "invalid array assignment"
msgstr "ogiltig vektortilldelning"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " i konvertering av pekare till medlemsfunktion"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "konvertering av pekare till medlem via virtuell bas %qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " i konvertering av pekare till medlem"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "ogiltig konvertering till typ %qT från typ %qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "kan inte konvertera %qT till %qT för argument %qP till %qD"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "det går inte att konvertera %qT till %qT i standardargument"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr "det går inte att konvertera %qT till %qT när argument skickas"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr "det går inte att konvertera %qT till %qT"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr "det går inte att konvertera %qT till %qT i initiering"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr "det går inte att konvertera %qT till %qT i retur"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr "det går inte att konvertera %qT till %qT i tilldelning"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "parameter %qP till %qD kan vara en kandidat för ett formatattribut"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr "parameter kan vara en kandidat för ett formatattribut"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "målet för konvertering kan vara en kandidat för ett formatattribut"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr "målet för initialisering kan vara en kandidat för ett formatattribut"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "vänsterhandssida av tilldelning kan vara en kandidat för ett formatattribut"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "när argument %P till %q+D skickades"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "returnerar referens till en temporär"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "referens till annat än lvärde returnerad"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "referens till lokal variabel %q+D returnerad"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "adress till lokal variabel %q+D returnerad"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "returnerar ett värde från en destruktor"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "det går inte att returnerar från en hanterare i ett funktions-try-block eller en konstruerare"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "returnerar ett värde från en konstruerare"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "inkonsistenta typer %qT och %qT härledda för lambda-returtypen"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "return-sats utan värde i funktion som returnerar %qT"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "return-sats med värde i funktion som returnerar â€voidâ€"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> får inte returnera NULL om den inte är deklarerad %<throw()%> (eller -fcheck-new är aktivt)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr "använder temporär som lvärde"
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr "hjälp xvärde (rvärdesreferens) som lvärde"
@@ -35081,7 +35138,7 @@ msgstr "Iteratorsteg vid %L kan inte vara noll"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr "Antalet element i vektorkonstrueraren vid %L kräver en ökning av den tillåtna övre gränsen %d. Se flaggan -fmax-array-constructor"
@@ -37226,27 +37283,27 @@ msgstr "POINTER-värd funktion förekommer på högersidan av tilldelning vid %L
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr "Utökning: BOZ-literal vid %L används för att initiera icke-heltalsvariabeln â€%sâ€"
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr "Utökning: BOZ-literal vid %L utanför en DATA-sats och utanför INT/REAL/DBLE/CMPLX"
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr "BOZ-literal vid %L är bitvis överförd icke-heltalssymbol â€%sâ€"
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Aritmetiskt underspill av bitvis överförd BOZ vid %L. Denna kontroll kan avaktiveras med flaggan -fno-range-check"
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Aritmetiskt överspill vid bitvis överförd BOZ vid %L. Denna kontroll kan avaktiveras med flaggan -fno-range-check"
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "Aritmetisk NaN vid bitvis överförd BOZ vid %L. Denna kontroll kan avaktiveras med flaggan -fno-range-check"
@@ -37456,42 +37513,42 @@ msgstr "Icke-POINTER i pekarenassociationssammanhang (%s) vid %L"
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr "LOCK_TYPE i variabeldefinitionssammanhang (%s) vid %L"
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr "Attrappargument â€%s†med INTENT(IN) i pekarassociationssammanhang (%s) vid %L"
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr "Attrappargument â€%s†med INTENT(IN) i variabeldefinitionssammanhang (%s) vid %L"
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "Variabeln â€%s†är PROTECTED och kan inte förekomma i ett pekarassociationssammanhang (%s) vid %L"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "Variabeln â€%s†är PROTECTED och kan inte förekomma i ett variabeldefinitionssammanhang (%s) vid %L"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "Variabeln â€%s†kan inte förekomma i ett variabeldefinitionssammanhang (%s) vid %L"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr "â€%s†vid %L som är associerad med vektorindexeradt mÃ¥l kan inte användas i ett variabeldefinitionssammanhang (%s)"
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr "â€%s†vid %L som är associerad med uttryck kan inte användas i ett variabeldefinitionssammanhang (%s)"
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr "Associationsnamn â€%s†kan inte förekomma i ett variabeldefinitionssammanhang (%s) vid %L eftersom dess mÃ¥l vid %L inte heller kan"
@@ -37506,14 +37563,14 @@ msgstr "Oväntad typ i truthvalue_conversion"
msgid "can't open input file: %s"
msgstr "Kan inte öppna indatafil: %s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "Skapar vektortemporär vid %L"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, gcc-internal-format, gfc-internal-format
msgid "Removing call to function '%s' at %L"
msgstr "Tar bort anrop av funktionen â€%s†vid %L"
@@ -37623,12 +37680,12 @@ msgstr "Första argumentet till definierad tilldelning vid %L måste vara INTENT
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "Andra argumentet av definierad tilldelning vid %L måste vara INTENT(IN)"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "Första argumentet till operatorgränssnitt vid %L måste vara INTENT(IN)"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "Andra argumentet till operatorgränssnitt vid %L måste vara INTENT(IN)"
@@ -39441,128 +39498,128 @@ msgstr "Fel när modulfil skrevs: %s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "Namnlistan %s får inte namnändras av USE-association till %s"
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr "â€%s†i modulen â€%sâ€, importerad vid %C, är ocksÃ¥ namnet pÃ¥ den aktuella programenheten"
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr "Symbolen â€%s†refererad frÃ¥n %L finns inte i modulen â€%sâ€"
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr "Användaroperatorn â€%s†refererad frÃ¥n %L finns inte i modulen â€%sâ€"
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr "Inbyggd operator â€%s†refererad frÃ¥n %L finns inte i modulen â€%sâ€"
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "Kan inte öppna modulfilen â€%s†för skrivning vid %C: %s"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "Fel när modulfilen â€%s†skrevs: %s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "Kan inte radera modulfil â€%sâ€: %s"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "Kan inte ändra namn pÃ¥ modulfilen â€%s†till â€%sâ€: %s"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "Kan inte radera temporär modulfil â€%sâ€: %s"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr "Symbolen â€%s†är redan deklarerad"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "Symbolen â€%sâ€, refererad vid %L, finns inte i den valda standarden"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr "Symbolen â€%s†refererad frÃ¥n %L hittas inte i den inbyggda modulen ISO_C_BINDING"
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr "Användning av inbyggd modul â€%s†vid %C stÃ¥r i konflikt med namn pÃ¥ ej inbyggd modul använd tidigare"
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr "Användning av namngiven NUMERIC_STORAGE_SIZE-konstant från inbyggd modul ISO_FORTRAN_ENV vid %L är inte kompatibelt med flaggan %s"
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr "Användning av namngiven NUMERIC_STORAGE_SIZE-konstant från inbyggd modul ISO_FORTRAN_ENV vid %C är inte kompatibelt med flaggan %s"
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr "Symbolen â€%s†refererad vid %L hittas inte i den inbyggda modulen ISO_FORTRAN_ENV"
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr "Fortran 2003: inbyggd modul ISO_FORTRAN_ENV vid %C"
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Fortran 2003: ISO_C_BINDING-modul vid %C"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr "Det finns ingen inbyggd modul med namnet â€%s†vid %C"
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "Kan inte öppna modulfilen â€%s†för läsning vid %C: %s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr "Användning av ej inbyggd modul â€%s†vid %C stÃ¥r i konflikt med namn pÃ¥ inbyggd modul använd tidigare"
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr "Filen â€%s†öppnad vid %C är inte en GFORTRAN-modulfil"
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr "Tolkningsfel vid kontroll av modulversion för filen â€%s†öppnad vid %C"
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr "Fel modulversion â€%s†(â€%s†förväntades) för filen â€%s†öppnad vid %C"
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "Det går inta att USE samma modul vi bygger!"
@@ -39647,7 +39704,7 @@ msgstr "Oväntat skräp efter $OMP BARRIER-sats vid %C"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "Oväntat skräp efter NOWAIT-klausul vid %C"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "IF-klausul vid %L kräver ett skalärt LOGICAL-uttryck"
@@ -40966,7 +41023,7 @@ msgstr "Den inbyggda â€%s†deklarerad INTRINSIC vid %L är inte tillgänglig
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr "Icke RECURSIVE procedur â€%s†vid %L anropar kanske sig själv rekursivt. Deklarera den RECURSIVE eller använd -frecursive."
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "Etikett %d som refereras vid %L är aldrig definierad"
@@ -41116,7 +41173,7 @@ msgstr "Funktionen â€%s†vid %L är INTRINSIC men är inte kompatibel med en
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "Kan inte slÃ¥ upp den specifika funktionen â€%s†vid %L"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "Funktionen â€%s†vid %L har ingen IMPLICIT-typ"
@@ -41497,182 +41554,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "Basobjekt för typbundet NOPASS-proceduranrop vid %L måste vara skalärt"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr "Hittade ingen matchande specifik bindning för anropet till GENERIC â€%s†vid %L"
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr "â€%s†vid %L skulle vara en SUBROUTINE"
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr "â€%s†vid %L skulle vara en SUBROUTINE"
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s vid %L måste vara en skalär"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr "Borttagen funktion: %s vid %L måste vara ett heltal"
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s vid %L måste vara INTEGER"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "Steguttryck i DO-slinga vid %L får inte vara noll"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr "DO-slinga vid %L kommer köras noll gånger"
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "FORALL-indexnamn vid %L måste vara en skalär INTEGER"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "FORALL-slututtryck vid %L måste vara en skalär INTEGER"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "FORALL-slututtryck vid %L måste vara en skalär INTEGER"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "FORALL-steguttryck vid %L måste vara en skalär %s"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "FORALL-steguttryck vid %L får inte vara noll"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "FORALL-index â€%s†fÃ¥r inte förekomma i triplettspecifikation vid %L"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr "Allokeringsojbekt vid %L måste vara ALLOCATABLE eller en POINTER"
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr "Co-indexerat allokerbart objekt vid %L"
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr "Källuttryck vid %L måste vara skalärt eller ha samma ordning som allokeringsobjektet vid %L"
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr "Källuttryck vid %L och allokeringsobjekt vid %L måste ha samma form"
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr "Typen på enheten vid %L är typinkompatibel med källuttrycket vid %L"
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr "Allokeringsobjektet vid %L och källuttrycket vid %L skall ha samma sorts typparameter"
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr "Källuttrycket vid %L skall varken vara av typen LOCK_TYPE eller ha en LOCK_TYPE-komponent om det allokerbara objektet vid %L är en co-vektor"
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr "Allokering %s av ABSTRACT bastyp vid %L behöver en typspecifikation eller source-uttryck"
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr "Allokerar %s vid %L med typspecifikation kräver samma teckenlängdsparameter som i deklarationen"
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "Vektorspecifikation krävs i ALLOCATE-sats vid %L"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Co-vektorspecifikation krävs i ALLOCATE-sats vid %L"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "Felaktig vektorspecifikation i ALLOCATE-sats vid %L"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr "â€%s†fÃ¥r inte förekomma i vektorspecifikationen vid %L i samma ALLOCATE-sats där den själv allokeras"
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "â€*†förväntades i co-indexspecifikation i ALLOCATE-sats vid %L"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "Felaktig co-vektorspecifikation i ALLOCATE-sats vid %L"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "Statvariabel vid %L måste vara en INTEGER-variabel"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "Statvariabel vid %L skall inte %s:as i samma %s-sats"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr "ERRMSG vid %L är oanvändbart utan en STAT-tagg"
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "Errmsg-variabeln vid %L måste vara en skalär CHARACTER-variabel"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr "Errmsg-variabel vid %L skall inte %s:as i samma %s-sats"
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr "Allokeringsobjekt vid %L förekommer också vid %L"
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr "Allokeringsobjekt vid %L är underobjet till objekt vid %L"
@@ -41681,175 +41738,175 @@ msgstr "Allokeringsobjekt vid %L är underobjet till objekt vid %L"
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr "CASE-etikett vid %L överlappar med CASE-etikett vid %L"
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "uttryck i CASE-sats vid %L måste vara av typ %s"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "Uttryck i CASE-sats vid %L måste ha sort %d"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "Uttryck i CASE-sats vid %L måste vara skalärt"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr "Valuttryck i beräknad-GOTO-sats vid %L måste vara ett skalärt heltalsuttryck"
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "Argument till SELECT-sats vid %L kan inte vara %s"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "Uttryck i CASE-sats vid %L ligger inte i intervallet %s"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr "DEFAULT CASE vid %L får inte följas av ett andra DEFAULT CASE vid %L"
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr "Logiskt intervall CASE-sats vid %L är inte tillåtet"
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr "Konstant logiskt värde i CASE-sats upprepas vid %L"
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr "Intervallspecifikationen vid %L kan aldrig matchas"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr "Logiskt SELECT CASE-block vid %L har mer än två fall"
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr "Associationsnamn â€%s†vid %L används som en vektor"
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "Selektorer skall vara polymorfiska i SELECT TYPE-sats vid %L"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr "Härledd typ â€%s†vid %L mÃ¥ste vara utökningsbar"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "Härledd typ â€%s†vid %L mÃ¥ste vara en utökning av â€%sâ€"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr "Dubbelt CLASS IS-block i SELECT TYPE-sats vid %L"
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr "Inbyggd NULL vid %L i dataöverföringssats kräver MOLD="
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr "Dataöverföringselementet vid %L kan inte vara polymorft om det inte behandlas av en definierad input/output-procedur"
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr "Dataöverföringselementet vid %L kan inte ha POINTER-komponenter om det inte behandlas av en definierad input/output-procedur"
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr "Dataöverföringselement vid %L får inte ha procedurpekarkomponenter"
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr "Dataöverföringselementet vid %L kan inte ha ALLOCATABLE-komponenter om det inte behandlas av en definierad input/output-procedur"
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr "Dataöverföringselement vid %L får inte ha PRIVATE-komponenter"
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr "Dataöverföringselement vid %L får inte vara en full referens till en vektor med förmodad storlek"
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "Låsvariabel vid %L måste vara en skalär av typen LOCK_TYPE"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "STAT=-argumentet vid %L måste vara en skalär INTEGER-variabel"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "ERRMSG=-variabeln vid %L måste vara en skalär CHARACTER-variabel"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "ACQUIRED_LOCK=-argumentet vid %L måste vara en skalär LOGICAL-variabel"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "Bildmängdsargument vid %L måste vara ett skalärt eller ordning-1-uttryck"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "Bildmängdsargument vid %L måste vara mellan 1 och num_images()"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "Sats vid %L är inte en giltig grenmålssats för grensatsen vid %L"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr "Gren vid %L kan orsaka en oändlig slinga"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr "GOTO-sats vid %L lämnar CRITICAL-konstruktion för etikett vid %L"
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr "GOTO-sats vid %L lämnar DO CONCURRENT-konstruktion för etikett vid %L"
@@ -41857,950 +41914,950 @@ msgstr "GOTO-sats vid %L lämnar DO CONCURRENT-konstruktion för etikett vid %L"
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "Etiketten vid %L är inte i samma block som GOTO-satsen vid %L"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr "WHERE-mask vid %L har inkonsistent form"
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "WHERE-tilldelningsmål vid %L har inkonsistent form"
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr "Ej ELEMENTAL användardefinierad tilldelning i WHERE vid %L"
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "Ej stödd sats inuti WHERE vid %L"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "Tilldelning till en FORALL-indexvariabel vid %L"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr "FORALL med index â€%s†används inte pÃ¥ vänster sida av en tilldelning vid %L och kan därför orsaka multipla tilldelningar till detta objekt"
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr "En yttre FORALL-konstruktion har redan ett index med detta namn %L"
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "WHERE/ELSEWHERE-klausul vid %L kräver en LOGICAL-vektor"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr "CHARACTER-uttryck kommer att huggas av i tilldelning (%d/%d) vid %L"
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr "Co-indexerat uttryck vid %L är tilldelat till en härledd typvariabel med en POINTER-komponent i en PURE-procedur"
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr "Den orena variabeln vid %L är tilldelad till en härledd typvariabel med en POINTER-komponent i en PURE-procedur (12.6)"
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "Tilldelning till en co-indexerad variabel vid %L i en PURE-procedur"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr "Variabeln fÃ¥r inte vara polymorf i inbyggd tilldelning vid %L - kontrollera att det finns en matchande specifik subrutin för operatorn â€=â€"
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr "Co-indexerad variabel får inte ha en allokerbar yttersta komponent i tilldelningen vid %L"
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "ASSIGNED GOTO-sats vid %L kräver en INTEGER-variabel"
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "Variabeln â€%s†har inte tilldelats nÃ¥gon mÃ¥letikett vid %L"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "Alternativ RETURN-sats vid %L kräver en SCALAR-INTEGER-retuspecificerare"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr "ASSIGN-sats vid %L kräver en skalär standard-INTEGER-variabel"
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr "Aritmetisk IF-sats vid %L kräver ett numeriskt uttryck"
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr "Avslutsvillkor i DO WHILE-slinga vid %L måste vara ett skalärt LOGICAL-uttryck"
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "FORALL-maskklausul vid %L kräver ett skalärt LOGICAL-uttryck"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr "Bindande av etikett â€%s†för common-block â€%s†vid %L kolliderar med den globala entiteten â€%s†vid %L"
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr "Bindning av etikett â€%s†för common-block â€%s†vid %L stämmer inte överens med bindningen av etikett â€%s†för common-block â€%s†vid %L"
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr "Bindning av etikett â€%s†för common-block â€%s†vid %L kolliderar med global entitet â€%s†vid %L"
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr "Bindning av etikett â€%s†vid %L kolliderar med den globala entiteten â€%s†vid %L"
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr "Bindning av etikett â€%s†i gränssnittskropp vid %L kolliderar med den globala entiteten â€%s†vid %L"
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr "Bindning av etikett â€%s†vid %L kolliderar med global entitet â€%s†vid %L"
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr "CHARACTER-variabel vid %L har negativ längd %d, längden har satts till noll"
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "Stränglängden vid %L är för stor"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "Allokerbar vektor â€%s†vid %L mÃ¥ste ha en fördröjd form"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr "Skalärt objekt â€%s†vid %L fÃ¥r inte vara ALLOCATABLE"
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "Vektorpekare â€%s†vid %L mÃ¥ste ha en fördröjd form"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "Vektor â€%s†vid %L kan inte ha en fördröjd form"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr "Typen â€%s†pÃ¥ CLASS-variabeln â€%s†vid %L är inte utvidgningsbar"
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr "CLASS-variabel â€%s†vid %L mÃ¥ste vara en atrapp, allokerbar eller pekare"
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr "Typen â€%s†kan inte vara värdassocierad vid %L för att den blockeras av ett inkompatibelt objekt med samma namn deklarerat vid %L"
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr "Fortran 2008: Implicerad SAVE för modulvariabel â€%s†vid %L, behövs pÃ¥ grund av standardinitieringar"
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "Modul- eller huvudprogramvektorn â€%s†vid %L mÃ¥ste ha konstant form"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr "Enheten â€%s†vid %L har en fördröjd typparameter och kräver antingen attributet pointer eller allocatable"
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr "Entitet med antagen teckenlängd vid %L måste vara ett attrappargument eller en PARAMETER"
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr "â€%s†vid %L mÃ¥ste ha konstant teckenlängd i detta sammanhang"
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "COMMON-variabeln â€%s†vid %L mÃ¥ste ha konstant teckenlängd"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "Allokerbar â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "Extern â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "Attrapp-â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "Inbyggd â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "Funktionsresultat â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "Automatisk vektor â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr "Teckenvärd satsfunktion â€%s†vid %L mÃ¥ste ha konstant längd"
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: â€%s†är av en PRIVATE-typ och kan inte vara ett attrappargument till â€%sâ€, som är PUBLIC vid %L"
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr "Fortran 2003: Procedur â€%s†i PUBLIC-gränssnitt â€%s†vid %L tar attrappargument för â€%s†som är PRIVATE"
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "Funktion â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "Externt objekt â€%s†vid %L kan inte ha en initierare"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "ELEMENTAL-funktion â€%s†vid %L mÃ¥ste ha ett skalärt resultat"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "Satsfunktionen â€%s†vid %L fÃ¥r inte ha attributet pointer eller allocatable"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "CHARACTER(*)-funktion â€%s†vid %L kan inte ha vektorvärde"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "CHARACTER(*)-funktion â€%s†vid %L kan inte ha pekarvärde"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "CHARACTER(*)-funktion â€%s†vid %L kan inte vara pure"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr "CHARACTER(*)-funktion â€%s†vid %L kan inte vara rekursiv"
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "Förlegad funktion: CHARACTER(*)-funktion â€%s†vid %L"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "PROCEDURE-attribut i konflikt med SAVE-attribut i â€%s†vid %L"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "PROCEDURE-attribut i konflikt med INTENT-attribut i â€%s†vid %L"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "PROCEDURE-attribut i konflikt med RESULT-attribut i â€%s†vid %L"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "EXTERNAL-attribut i konflikt med FUNCTION-attribut i â€%s†vid %L"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr "Procedurpekarresultat â€%s†vid %L saknar pekarattributet"
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr "FINAL-procedur â€%s†vid %L är inte en SUBROUTINE"
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "FINAL-procedur vid %L måste ha precis ett argument"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "Argument till FINAL-procedur vid %L mÃ¥ste ha typen â€%sâ€"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "Argument till FINAL-procedur vid %L får inte vara en POINTER"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "Argument till FINAL-procedur vid %L får inte vara ALLOCATABLE"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "Argument till FINAL-procedur vid %L får inte vara OPTIONAL"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "Argument till FINAL-procedur vid %L får inte vara INTENT(OUT)"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "Ickeskalär FINAL-procedur vid %L skulle ha argument med förmodad form"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr "FINAL-procedur â€%s†deklarerad vid %L har samma ordning (%d) som â€%sâ€"
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr "Endast vektor-FINAL-procedurer deklarerade för den härledda typen â€%s†definierade vid %L, föreslÃ¥r även en skalär"
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr "Avslutningen vid %L är inte implementerad ännu"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr "â€%s†och â€%s†kan inte blandad FUNCTION/SUBROUTINE för GENERIC â€%s†vid %L"
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr "â€%s†och â€%s†för GENERIC â€%s†vid %L är tvetydiga"
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr "Odefinierad specifik bindning â€%s†som mÃ¥l för GENERIC â€%s†vid %L"
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr "GENERIC â€%s†vid %L mÃ¥ste ha som mÃ¥l en specifik bindning, â€%s†är ocksÃ¥ GENERIC"
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr "GENERIC â€%s†vid %L kan inte Ã¥sidosätta en specifik bindning med samma namn"
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr "Typgränsoperator vid %L kan inte vara NOPASS"
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "â€%s†mÃ¥ste vara en modulprocedur eller en extern procedur med ett explicit gränssnitt vid %L"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Proceduren â€%s†med PASS(%s) vid %L har inget argument â€%sâ€"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "Procedur â€%s†med PASS vid %L mÃ¥ste ha Ã¥tminstone ett argument"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr "Ickepolymorfa attrappargument för pass-objekt till â€%s†vid %L"
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "Argument â€%s†till â€%s†med PASS(%s) vid %L mÃ¥ste ha den härledda typen â€%sâ€"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "Skickat objekt-attrappargument till â€%s†vid %L mÃ¥ste vara skalärt"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "Skickat objekt-attrappargument till â€%s†vid %L fÃ¥r inte vara ALLOCATABLE"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "Skickat objekt-atrappargument till â€%s†vid %L fÃ¥r inte vara POINTER"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "Procedur â€%s†vid %L har samma namn som en komponent i â€%sâ€"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr "Proceduren â€%s†vid %L har samma namn som den ärvd komponent i â€%sâ€"
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr "Härledd typ â€%s†deklarerad vid %L mÃ¥ste vara ABSTRACT för att â€%s†är DEFERRED och inte Ã¥sidosatt"
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr "Eftersom utvidgningen av â€%s†vid %L har en co-vektorkomponent, skall föräldratypen â€%s†ocksÃ¥ ha en"
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr "Ej utvidgningsbar härledd typ â€%s†vid %L fÃ¥r inte vara ABSTRACT"
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr "Teckenkomponenten â€%s†med fördröjd längd vid %L stödjs inte ännu"
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "Co-vektorkomponent â€%s†vid %L mÃ¥ste vara allokerbar med fördröjd form"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr "Komponenten â€%s†vid %L av TYPE(C_PTR) eller TYPE(C_FUNPTR) fÃ¥r inte vara en co-vektor"
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr "Komponenten â€%s†vid %L med co-vektorkomponent skall skalär som inte är en pekare eller allokerbar"
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr "Component â€%s†vid %L har attributet CONTIGUOUS men är inte en vektorpekare"
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr "Gränssnitt â€%sâ€, använt av procedurpekarkomponenten â€%s†vid %L, är deklarerat i en senare PROCEDURE-sats"
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "Gränssnitt â€%s†till procedurpekarkomponent â€%s†vid %L mÃ¥ste vara explicit"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "Procedurpekarkomponent â€%s†med PASS(%s) vid %L har inget argument â€%sâ€"
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "Procedurpekarkomponent â€%s†med PASS vid %L mÃ¥ste ha Ã¥tminstone ett argument"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "Argument â€%s†till â€%s†med PASS(%s) vid %L mÃ¥ste ha den härledda typen â€%sâ€"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "Argument â€%s†till â€%s†med PASS(%s) vid %L mÃ¥ste vara skalärt"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "Argumentet â€%s†till â€%s†med PASS(%s) vid %L fÃ¥r inte ha attributet POINTER"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "Argumentet â€%s†till â€%s†med PASS(%s) vid %L fÃ¥r inte vara ALLOCATABLE"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "Komponent â€%s†i â€%s†vid %L har samma namn som en ärvd typbunden procedur"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr "Teckenlängd pÃ¥ komponent â€%s†behöver vara ett konstant specifikationsuttryck vid %L"
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr "Teckenkomponent â€%s†av â€%s†vid %L med fördröjd längd mÃ¥ste vara en POINTER eller ALLOCATABLE"
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003: komponenten â€%s†är en PRIVATE-typ och kan inte vara en komponent i â€%sâ€, som är PUBLIC vid %L"
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr "Polymorf komponent %s vid %L i SEQUENCE- eller BIND(C)-typ %s"
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "Komponent %s av SEQUENCE-typ deklarerad vid %L har inte attributet SEQUENCE"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr "Pekarkomponenten â€%s†av â€%s†vid %L är en typen som inte har deklarerats"
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "Procedur â€%s†med CLASS vid %L mÃ¥ste vara allokerbar eller en pekare"
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr "Fortran 2003: Generiskt namn â€%s†pÃ¥ funktionen â€%s†vid %L är samma namn som den härledda typen vid %L"
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "Vektor â€%s†med underförstÃ¥dd storlek i namnlistan â€%s†vid %L är inte tillÃ¥tet"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr "Fortran 2003: NAMELIST-vektorobjekt â€%s†med förmodad form i namnlistan â€%s†vid %L"
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr "Fortran 2003: NAMELIST-vektorobjekt â€%s†med icke-konstant form in namnlista â€%s†vid %L"
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr "Fortran 2003: NAMELIST-vektorobjekt â€%s†med icke-konstant form i namnlistan â€%s†vid %L"
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr "NAMELIST-objekt â€%s†i namnlistan â€%s†vid %L är polymorf om och behöver en en definierad input/output-procedur"
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr "Fortran 2003: NAMELIST-objekt â€%s†i namnlistan â€%s†vid %L med ALLOCATABLE- eller POINTER-komponenter"
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr "NAMELIST-objekt â€%s†i namnlistan â€%s†vid %L har ALLOCATABLE- eller POINTER-komponenter och behöver därför en definierad input/output-procedur"
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr "NAMELIST-objekt â€%s†deklarerades PRIVATE och kan inte vara medlem av PUBLIC-namnlista â€%s†vid %L"
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr "NAMELIST-objekt â€%s†har användningsassociativa PRIVATE-komponenter och kan inte vara medlem av namnlistan â€%s†vid %L"
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr "NAMELIST-objekt â€%s†har PRIVATE-komponenter och kan inte vara medlem av PUBLIC-namnlista â€%s†vid %L"
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "PROCEDURE-attribut i konflikt med NAMELIST-attribut i â€%s†vid %L"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "Parametervektor â€%s†vid %L kan inte ha automatisk eller fördröjd form"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr "Implicit typad PARAMETER â€%s†vid %L matchar inte en senare IMPLICIT-typ"
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "Inkompatibel härledd typ i PARAMETER vid %L"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "Attributet PROTECTED står i konflikt med attributet EXTERNAL vid %L"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "Attributet PROCEDURE står i konflikt med attributet PROTECTED vid %L"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr "â€%s†vid %L har attributet CONTIGUOUS, men är inte en vektorpekare eller en vektor med förmodad form"
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "Vektor med underförstådd storlek vid %L måste vara ett attrappargument"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "Vektor med underförstådd form vid %L måste vara ett attrappargument"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "Symbol vid %L är inte en DUMMY-variabel"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr "â€%s†vid %L kan inte ha attributet VALUE eftersom det inte är ett attrappargument"
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "Teckenvärd attrappvariabel â€%s†vid %L med attributet VALUE mÃ¥ste ha konstant längd"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr "C-interoperativ teckenattrappvariabel â€%s†vid %L med attributet VALUE mÃ¥ste ha längd ett"
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr "Den härledda typen â€%s†vid %L har typen â€%sâ€, som inte har definierats"
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr "Variabel â€%s†vid %L kan inte vara BIND(C) eftersom den varken är ett COMMON-block eller deklarerad med räckvidd modulnivÃ¥"
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "Fortran 2003: PUBLIC %s â€%s†vid %L har PRIVATE härledd typ â€%sâ€"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr "Variabeln %s vid %L av typen LOCK_TYPE eller med en delkomponent av typen LOCK_TYPE måste vara en co-vektor"
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr "INTENT(OUT)-attrappargumentet â€%s†vid %L har ASSUMED SIZE och kan därför inte ha en standardinitierare"
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "Attrappargumentet â€%s†vid %L av LOCK_TYPE fÃ¥r inte vara INTENT(OUT)"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "Funktionsresultat â€%s†vid %L skall inte vara en co-vektor eller ha en co-vektorkomponent"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr "Variabeln â€%s†vid %L av TYPE(C_PTR) eller TYPE(C_FUNPTR) fÃ¥r inte vara en co-vektor"
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr "Variabeln â€%s†vid %L med co-vektorkomponent skall vara en skalär som inte är en pekare eller allokerbar"
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr "Variabeln â€%s†vid %L är en co-vektor och är inte ALLOCATABLE, SAVE eller ett attrappargument"
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "Co-vektorvariabeln â€%s†vid %L skall inte ha co-dimensioner med fördröjd form"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "Allokerbar co-vektorvariabel â€%s†vid %L mÃ¥ste ha en fördröjd form"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr "Variabeln â€%s†vid %L är INTENT(OUT) och kan alltsÃ¥ inte vara en allokerbara co-vektor eller har co-vektorkomponenter"
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "Co-attrappvariabeln â€%s†vid %L är inte tillÃ¥ten i BIND(C)-proceduren â€%sâ€"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr "Trådprivat vid %L är inte SAVE:ad"
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr "BLOCK DATA-element â€%s†vid %L mÃ¥ste vara i COMMON"
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr "DATA-vektor â€%s†vid %L mÃ¥ste anges i en tidigare deklaration"
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "DATA-elementet â€%s†vid %L kan inte ha ett co-index"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr "DATA-element â€%s†vid %L är en pekare och mÃ¥ste dÃ¥ vara en fullständig vektor"
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr "Ickekonstant vektorsektion vid %L i DATA-sats."
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr "DATA-sats vid %L har fler variabler än värden"
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr "början av underförstådd do-slinga vid %L kan inte förenklas till ett konstant värde"
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr "slutet av underförstådd do-slinga vid %L kan inte förenklas till ett konstant värde"
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr "steget i underförstådd do-slinga vid %L kan inte förenklas till ett konstant värde"
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr "DATA-sats vid %L har fler värden än variabler"
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "Etiketten %d vid %L är definierad men inte använd"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "Etiketten %d vid %L är definierad men kan inte användas"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr "Härledd typvariabel â€%s†vid %L mÃ¥ste ha attributet SEQUENCE för att vara ett EQUIVALENCE-objekt"
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr "Härledd typvariabel â€%s†vid %L kan inte ha ALLOCATABLE-komponenter för att vara ett EQUIVALENCE-objekt"
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr "Härledd typvariabel â€%s†vid %L med standardinitiering kan inte vara i EQUIVALENCE med en variabel i COMMON"
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr "Härledd typvariabel â€%s†vid %L med pekarkomponent(er) kan inte vara ett EQUIVALENCE-objekt"
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "Syntaxfel i EQUIVALENCE-sats vid %L"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr "Antingen alla eller inget av objekten i EQUIVALENCE-mängden vid %L kan ha attributet PROTECTED"
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr "Common-blockmedlem â€%s†vid %L kan inte vara ett EQUIVALENCE-objekt i den rena proceduren â€%sâ€"
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Namngiven konstant â€%s†vid %L kan inte vara ett EQUIVALENCE-objekt"
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr "Vektor â€%s†vid %L med icke-konstanta gränser kan inte vara ett EQUIVALENCE-objekt"
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Postkomponent â€%s†vid %L kan inte vara ett EQUIVALENCE-objekt"
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "Delsträng vid %L har längden noll"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "Fortran 2003: PUBLIC-funktion â€%s†vid %L har PRIVATE typ â€%sâ€"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "ENTRY â€%s†vid %L har ingen IMPLICIT-typ"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "Användaroperatorprocedur â€%s†vid %L mÃ¥ste vara en FUNCTION"
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr "Användaroperatorprocedur â€%s†vid %L fÃ¥r inte ha antagen teckenlängd"
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "Användaroperatorprocedur â€%s†vid %L mÃ¥ste ha Ã¥tminstone ett argument"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr "Första argumentet till operatorgränssnitt vid %L får inte vara frivilligt"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "Andra argumentet till operatorgränssnitt vid %L får inte vara valfritt"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "Operatorgränssnitt vid %L måste ha, högst, två argument"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr "Innesluten procedur â€%s†vid %L i en PURE-procedur mÃ¥ste ocksÃ¥ vara PURE"
@@ -43411,17 +43468,17 @@ msgstr "Överlappande olika initierare i EQUIVALENCE vid %L"
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr "BOZ-konstant vid %L är för stor (%ld jämfört med %ld bitar)"
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr "Skapar vektortemporär vid %L för argument â€%sâ€"
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "Möjligt fel i framänden: Fördröjd vektorstorlek utan pekare, attributet allocatable eller härledd typ utan allokerbara komponenter."
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "felaktig uttryckstyp under genomlöpning (%d)"
@@ -43663,7 +43720,7 @@ msgstr "REAL(KIND=10) är inte tillgänglig för flaggan -freal-8-real-16"
msgid "Array element size too big at %C"
msgstr "Vektorelementstorlek är för stor vid %C"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code(): Felaktig satskod"
@@ -43965,7 +44022,7 @@ msgstr "det gick inte att avgöra målnamn för att spåra beroenden"
msgid "internal error - invalid Utf8 name"
msgstr "internt fel - ogiltigt Utf8-namn"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "skräp vid slutet av signatursträng"
diff --git a/gcc/po/tr.po b/gcc/po/tr.po
index 0875664b348..b86f84b0812 100644
--- a/gcc/po/tr.po
+++ b/gcc/po/tr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.1.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2006-11-16 10:10+0200\n"
"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anonim>"
@@ -28,7 +28,7 @@ msgstr "<anonim>"
msgid "({anonymous})"
msgstr "<anonim>"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of line"
@@ -36,11 +36,11 @@ msgstr "Beklenmeyen modül sonu"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "%<;%> umuluyordu"
@@ -48,18 +48,18 @@ msgstr "%<;%> umuluyordu"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<(%>"
msgstr "%<{%> umuluyordu"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<,%>"
@@ -71,20 +71,20 @@ msgstr "%<{%> umuluyordu"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<)%>"
msgstr "%<{%> umuluyordu"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<]%>"
@@ -96,27 +96,27 @@ msgstr "%<{%> umuluyordu"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "%<,%>, %<;%> veya %<}%> umuluyordu"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<}%>"
msgstr "%<{%> umuluyordu"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "%<{%> umuluyordu"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<:%>"
msgstr "%<{%> umuluyordu"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<while%>"
@@ -128,44 +128,44 @@ msgstr "%<{%> umuluyordu"
msgid "expected %<.%>"
msgstr "%<{%> umuluyordu"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@end%>"
msgstr "%<{%> umuluyordu"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<>%>"
msgstr "%<{%> umuluyordu"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<,%> or %<)%>"
msgstr "%<,%> veya %<;%> umuluyordu"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "%<=%> umuluyordu"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<}%>"
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "%<,%> veya %<}%> umuluyordu"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<[%>"
msgstr "%<{%> umuluyordu"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
#| msgid "<anonymous>"
msgid "(anonymous)"
@@ -348,12 +348,12 @@ msgstr "'%%l' terimi bir yafta deÄŸil"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "gerçel sayı sabit yanlış kullanılmış"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "terim olarak ifade geçersiz"
@@ -1292,19 +1292,19 @@ msgstr ""
msgid " inlined from %qs"
msgstr "%qs için complex geçersiz"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "döngünün sonsuz olmadığı varsayılıyor"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "olası sonsuz döngüler en iyilenemez"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "döngü sayacının taşmaya sebep olmayacağı var sayılıyor"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "döngü en iyilenemez, döngü sayacının taşma olasılığı var"
@@ -1503,16 +1503,16 @@ msgid "this is the insn:"
msgstr "bu o komuttur:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "bir döküm yazmacı bulunamadı"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "bir çıktıda VOIDmode"
-#: reload1.c:8658
+#: reload1.c:8672
#, fuzzy
#| msgid "Failure trying to reload:"
msgid "failure trying to reload:"
@@ -2754,119 +2754,119 @@ msgstr ""
msgid "<unknown>"
msgstr "Bilinmeyen kaynak"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "%%H değeri geçersiz"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "%%J değeri geçersiz"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "%%r değeri geçersiz"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "%%R değeri geçersiz"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "%%N değeri geçersiz"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "%%P değeri geçersiz"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "%%h değeri geçersiz"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "%%L değeri geçersiz"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "%%m değeri geçersiz"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "%%M değeri geçersiz"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "%%U değeri geçersiz"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "%%s değeri geçersiz"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "%%C değeri geçersiz"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "%%E değeri geçersiz"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "bilinmeyen yerdeÄŸiÅŸim unspec"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "%%xn kodu geçersiz"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "isnatlı Thumb komutu"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "koşullu dizilimde isnatlı komut"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "terim, kod `%c' için geçersiz"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, fuzzy, c-format
#| msgid "invalid %%f operand"
msgid "invalid shift operand"
msgstr "geçersiz %%f terimi"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2874,90 +2874,90 @@ msgstr "geçersiz %%f terimi"
msgid "invalid operand for code '%c'"
msgstr "terim, kod `%c' için geçersiz"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, fuzzy, c-format
#| msgid "instruction never exectued"
msgid "instruction never executed"
msgstr "komut hiç çalıştırılmadı"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "terim eksik"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
#| msgid "function returns an aggregate"
msgid "function parameters cannot have __fp16 type"
msgstr "işlev bir küme ile dönüyor"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "işlev dizge türü ile dönmüyor"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use %<&%> constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "çıktı terimi %d %<&%> kısıtını kullanmalı"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "hatalı adres, (reg+disp) değil:"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "address offset not a constant"
msgid "bad address, not a constant:"
msgstr "adres mesafesi bir sabit deÄŸil"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "hatalı adres, (reg+disp) değil:"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "hatalı adres, post_inc veya pre_dec değil:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "derleyici iç hatası. Hatalı adres:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "Derleyici iç hatası. Bilinmeyen kip:"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "geçersiz komut:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "yanlış komut:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "bilinmeyen taşıma komutu:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "hatalı kaydırma komutu:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "derleyici iç hatası. Yanlış kaydırma:"
@@ -2973,8 +2973,8 @@ msgstr "const_double terim geçersiz"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -3052,23 +3052,23 @@ msgstr "beklenmeyen terim"
msgid "unrecognized address"
msgstr "tanınmayan adres"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "tanınmayan tahmini sabit"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "adreste beklenmeyen yan etkiler"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
#, fuzzy
#| msgid "Unidentifiable call op"
msgid "unidentifiable call op"
msgstr "Tanımlanamayabilen çağrı işlemi"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "PIC yazmacı ayarlı değil"
@@ -3076,7 +3076,7 @@ msgstr "PIC yazmacı ayarlı değil"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "geçersiz terim çıktı kodu"
@@ -3205,80 +3205,80 @@ msgstr "output_move_double terimi hatalı"
msgid "bad output_condmove_single operand"
msgstr "output_condmove_single terimi hatalı"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "terim olarak UNSPEC geçersiz"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand size for operand code '%c'"
msgstr "terim, kod `%c' için geçersiz"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand type used with operand code '%c'"
msgstr "terim, kod `%c' için geçersiz"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "terim ne bir sabit ne de bir koşul kodu, geçersiz terim kodu 'c'"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "terim ne bir sabit ne de bir koşul kodu, geçersiz terim kodu 'c'"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "terim ne bir sabit ne de bir koşul kodu, geçersiz terim kodu 'c'"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "terim ne bir sabit ne de bir koşul kodu, geçersiz terim kodu 'c'"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "terim ne bir sabit ne de bir koşul kodu, geçersiz terim kodu 'c'"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "terim ne bir sabit ne de bir koşul kodu, geçersiz terim kodu 'c'"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "terim ne bir sabit ne de bir koşul kodu, geçersiz terim kodu 'c'"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "terim kodu `%c' geçersiz"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "kısıtlar terim için geçersiz"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "bilinmeyen komut kipi"
@@ -3309,36 +3309,36 @@ msgstr "ortam değişkeni DJGPP olmayan '%s' dosyasını gösteriyor"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "ortam değişkeni DJGPP bozuk '%s' dosyasını gösteriyor"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%j code"
msgid "invalid %%G mode"
msgstr "%%j kodu geçersiz"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: bilinmeyen kod"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "%<__fpreg%> türünden dönüşüm geçersiz"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "%<__fpreg%> türüne dönüşüm geçersiz"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "%<__fpreg%> üzerinde geçersiz işlem"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "%%P terimi geçersiz"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "%%p değeri geçersiz"
@@ -3421,7 +3421,7 @@ msgid "post-increment address is not a register"
msgstr "sonradan arttırımlı adres bir yazmaç değil"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "hatalı adres"
@@ -3607,89 +3607,89 @@ msgstr ""
msgid "bad move"
msgstr "hatalı test"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%H value"
msgid "invalid %%c value"
msgstr "%%H değeri geçersiz"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "%%f değeri geçersiz"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "%%F değeri geçersiz"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "%%G değeri geçersiz"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "%%j kodu geçersiz"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "%%J kodu geçersiz"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "%%k değeri geçersiz"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "%%K değeri geçersiz"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "%%O değeri geçersiz"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "%%q değeri geçersiz"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "%%S değeri geçersiz"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "%%T değeri geçersiz"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "%%u değeri geçersiz"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "%%v değeri geçersiz"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "%%x değeri geçersiz"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
#| msgid "invalid punctuation %qc in constraint"
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "kısıt içindeki `%qc' işareti geçersiz"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "AltiVec argümanı prototipsiz işleve aktarıldı"
@@ -3798,60 +3798,60 @@ msgstr "%%R için terim geçersiz"
msgid "invalid operand to %%S"
msgstr "%%S için terim geçersiz"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "farklı ABI/mimarilerle oluşturulup kullanılmış"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "farklı ABI'lerle oluşturulup kullanılmış"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "farklı bayt sıralaması ile oluşturulup kullanılmış"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "geçersiz %%Y terimi"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "geçersiz %%A terimi"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "geçersiz %%B terimi"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "geçersiz %%C terimi"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "geçersiz %%D terimi"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "geçersiz %%f terimi"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "geçersiz %%s terimi"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "long long sabit geçerli bir anlık terim değil"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "gerçel sayı sabit geçerli bir anlık terim değil"
@@ -3876,7 +3876,7 @@ msgstr "`o' terimi sabit deÄŸil"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: kod bilinmiyor"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "geçersiz %%c terimi"
@@ -3892,25 +3892,25 @@ msgstr "geçersiz %%d terimi"
msgid "invalid %%H specifier"
msgstr "%%j kodu geçersiz"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "%%P terimi geçersiz"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "%%P terimi geçersiz"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "%%P terimi geçersiz"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3922,7 +3922,7 @@ msgstr "%%P terimi geçersiz"
msgid "invalid %%%c operand"
msgstr "geçersiz %%c terimi"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3934,42 +3934,42 @@ msgstr "%%P terimi geçersiz"
msgid "invalid operand for 'r' specifier"
msgstr "'b' değiştirici için terim geçersiz"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "%%P terimi geçersiz"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "%%P terimi geçersiz"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "%%P terimi geçersiz"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "%%P terimi geçersiz"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "%%P terimi geçersiz"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -4038,11 +4038,11 @@ msgstr "adreste yazmaç yok"
msgid "address offset not a constant"
msgstr "adres mesafesi bir sabit deÄŸil"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "1. aday:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "2. aday:"
@@ -4300,7 +4300,7 @@ msgstr ""
msgid "candidates are:"
msgstr "adaylar:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid "candidate is:"
@@ -4362,50 +4362,50 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "tek terimli eksiye yanlış türde argüman"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "tek terimli artıya yanlış türde argüman"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "bit-tümler için yanlış türde argüman"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "abs'a yanlış türde argüman"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "mantıksal çarpım için yanlış türde argüman"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "wrong type argument to unary plus"
msgid "in argument to unary !"
msgstr "tek terimli artıya yanlış türde argüman"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4679,7 +4679,7 @@ msgstr "Hatalı işleç"
msgid "Bad type in constant expression"
msgstr "Sabit ifadesinde tür hatalı"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "Beklenmeyen modül sonu"
@@ -4707,11 +4707,11 @@ msgstr "blok IF"
msgid "implied END DO"
msgstr "örtük END DO"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "atama"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "gösterici ataması"
@@ -4803,59 +4803,59 @@ msgstr "%%L'deki '%s' kullanıcı işlecinin terimleri %s/%s"
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "%L ve %L'de işliçler için sıralar uyumsuz"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
#| msgid "Perform variable tracking"
msgid "iterator variable"
msgstr "Değişken izleme uygulanır"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Start expression in DO loop"
msgstr "%L'de Do döngüsündeki adım ifadesi sıfır olamaz"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
#| msgid "invalid expression as operand"
msgid "End expression in DO loop"
msgstr "terim olarak ifade geçersiz"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Step expression in DO loop"
msgstr "%L'de Do döngüsündeki adım ifadesi sıfır olamaz"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
#, fuzzy
#| msgid "DEALLOCATE "
msgid "DEALLOCATE object"
msgstr "YERAÇ "
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
#, fuzzy
#| msgid "ALLOCATE "
msgid "ALLOCATE object"
msgstr "AYIR "
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4864,7 +4864,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4941,7 +4941,7 @@ msgstr "İşlevinin dönüş değeri yanlış"
msgid "Memory allocation failed"
msgstr "gimpleme başarısız"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -5150,7 +5150,7 @@ msgstr "hem -C hem de -o belirtilemez"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -5211,6 +5211,10 @@ msgstr "shared ve mdll uyumsuz"
msgid "static is not supported on TPF-OS"
msgstr "static TPF-OS'da desteklenmiyor"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "-EB ve -EL birlikte kullanılamayabilir"
@@ -5243,12 +5247,6 @@ msgstr "-mbig-endian ve -mlittle-endian birlikte kullanılamayabilir"
msgid "no processor type specified for linking"
msgstr "belirtim dosyası ilintilenecek özellik içermiyor"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-#| msgid "GCC does not support -C or -CC without -E"
-msgid "gfortran does not support -E without -cpp"
-msgstr "GCC -E olmaksızın -C veya -CC desteklemez"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 kıymetli baytın sonda olduğu sıralamayı desteklemez"
@@ -5301,6 +5299,12 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "-shared seçeneği VAX ELF için şu an desteklenmiyor."
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+#| msgid "GCC does not support -C or -CC without -E"
+msgid "gfortran does not support -E without -cpp"
+msgstr "GCC -E olmaksızın -C veya -CC desteklemez"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni ve -femit-class-files uyumsuz"
@@ -8710,6 +8714,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -11339,18 +11347,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "Sisteme özgü ve GCCye özgü makrolar önceden tanımlanmaz"
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
#| msgid "function declared %<noreturn%> has a %<return%> statement"
msgid "Functions which return values must end with return statements"
@@ -13062,306 +13082,317 @@ msgstr "ID tabanlı paylaşımlı kütüphane etkin olur"
msgid "Create a position independent executable"
msgstr "Mümkünse, çalıştırılabilirler için konumdan bağımsız kod üretilir (büyük kip)"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of %qD"
msgid "invalid use of type"
msgstr "%qD kullanımı geçersiz"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating point constant not a valid immediate operand"
-msgid "floating point constant truncated to integer"
-msgstr "gerçel sayı sabit geçerli bir anlık terim değil"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
#, fuzzy
#| msgid "inlined_to pointer refers to itself"
msgid "constant refers to itself"
msgstr "Inlined_to göstericisi kendini gösteriyor"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
#| msgid "Expected expression type"
msgid "expected numeric type"
msgstr "İfade türü umuluyordu"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "Expected expression type"
+msgid "expected boolean type"
+msgstr "İfade türü umuluyordu"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
#| msgid "Expected integer string"
msgid "expected integer or boolean type"
msgstr "Tamsayı dizgesi umuluyordu"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
#| msgid "invalid operands to binary %s"
msgid "invalid operand for unary %<&%>"
msgstr "iki terimli %s için terimler geçersiz"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
#| msgid "Expected integer"
msgid "expected pointer"
msgstr "Tamsayı umuluyordu"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in binary expression"
msgstr "dönüş değerinde uyumsuz türler"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
#| msgid "size of array %qs has non-integer type"
msgid "shift of non-integer operand"
msgstr "%qs dizisinin boyutu tamsayı tür değil"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
#| msgid "switch quantity not an integer"
msgid "shift count not unsigned integer"
msgstr "switch miktarı bir tamsayı değil"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative insn length"
msgid "negative shift count"
msgstr "negatif komut uzunluÄŸu"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "called object %qE is not a function"
msgid "object is not a method"
msgstr "çağrılan nesne %qE bir işlev değil"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
#| msgid "argument of type %qT does not match %qT"
msgid "method type does not match object type"
msgstr "%qT türündeki argüman %qT ile eşleşmiyor"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid argument to builtin function"
msgid "invalid use of %<...%> with builtin function"
msgstr "yerleşik işleve aktarılan argüman geçersiz"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "argüman yok"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments"
msgstr "biçim için argüman sayısı çok fazla"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument 1 must be a map"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
#| msgid "invalid type argument"
msgid "invalid type for make function"
msgstr "tür argümanı geçersiz"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "'A' için hatalı komut"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments to make"
msgstr "biçim için argüman sayısı çok fazla"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument must be array or slice or channel"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "invalid argument to builtin function"
msgid "unsupported argument type to builtin function"
msgstr "yerleşik işleve aktarılan argüman geçersiz"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
#| msgid "Argument dim at %L must be scalar"
msgid "argument must be channel"
msgstr "%L'de boyut argümanı değişmez olmalı"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument must be a field reference"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "left argument must be a slice"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "first argument of %q+D should be %<int%>"
msgid "first argument must be []byte"
msgstr "%q+D için ilk argüman %<int%> olmalıydı"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "tls_model argument not a string"
msgid "second argument must be slice or string"
msgstr "tls_model argümanı bir dizge değil"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "%Jparameter %u has void type"
msgid "argument 2 has invalid type"
msgstr "%J%u. parametre void türde"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
#| msgid "%Jparameter %u has incomplete type"
msgid "argument must have complex type"
msgstr "%J%u. parametre tamamlanmamış türde"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
#| msgid "cleanup argument not an identifier"
msgid "complex arguments must have identical types"
msgstr "cleanup argümanı bir betimleyici değil"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
#| msgid "Do not use hardware floating point"
msgid "complex arguments must have floating-point type"
msgstr "Donanım kayan nokta aritmetiği kullanılmaz"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of %<this%> at top level"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "tepe seviyede %<this%> kullanımı geçersiz"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "unexpected node"
msgid "expected function"
msgstr "umulmadık düğüm"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible type for receiver"
msgstr "dönüş değerinde uyumsuz türler"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of %<this%> in non-member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "üye olmayan işlevde %<this%> kullanımı geçersiz"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "incoming edge count does not match number of PHI arguments"
msgid "number of results does not match number of values"
msgstr "gelen ayrıt sayısı PHI argüman sayısı ile uyuşmuyor"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
#| msgid "Cray pointer at %C must be an integer."
msgid "index must be integer"
msgstr "%C'deki Cray göstericisi bir tamsayı olmalı."
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
#| msgid "Cray pointer at %C must be an integer."
msgid "slice end must be integer"
msgstr "%C'deki Cray göstericisi bir tamsayı olmalı."
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "incompatible types in assignment"
msgid "incompatible type for map index"
msgstr "atamada uyumsuz türler"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many expressions for struct"
msgstr "biçim için argüman sayısı çok fazla"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "biçim için argüman sayısı yetersiz"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
#| msgid "invalid use of void expression"
msgid "invalid unsafe.Pointer conversion"
msgstr "void ifade kullanımı geçersiz"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "expected class name"
msgid "expected channel"
msgstr "sınıf ismi umuluyordu"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
#| msgid "invalid lvalue in assignment"
@@ -13402,21 +13433,21 @@ msgstr "asm deyiminde geçersiz sol taraf"
msgid "expected boolean expression"
msgstr "ifade umuluyordu"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in send"
msgstr "dönüş değerinde uyumsuz türler"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -13482,81 +13513,81 @@ msgstr "Dolaylı dönüşümlerde uyarır"
msgid "cannot use type %s as type %s"
msgstr "%qT türü %qT türüne dönüştürülemiyor"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
#| msgid "invalid receiver type %qs"
msgid "different receiver types"
msgstr "alıcı tür %qs geçersiz"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "redefinition of parameter %q+D"
msgid "different number of parameters"
msgstr "%q+D parametresinin yeniden tanımlanması"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "invalid parameter type %qT"
msgid "different parameter types"
msgstr "geçersiz parametre türü %qT"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s"
msgstr "%2$qE işlevinin %1$d. argümanı için tür uyumsuz"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "%2$qE işlevinin %1$d. argümanı için tür uyumsuz"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "error while parsing methods"
msgid "type has no methods"
msgstr "yöntemler çözümlenirken hata"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
#| msgid "ambiguous abbreviation %s"
msgid "ambiguous method %s%s%s"
msgstr "belirsiz kısaltma %s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
#| msgid "missing argument to \"%s\""
msgid "missing method %s%s%s"
msgstr "\"%s\" için argüman eksik"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -13628,7 +13659,7 @@ msgstr "%<__builtin_prefetch%> için 3. argüman bir sabit olmalı"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "%<__builtin_prefetch%> için 3. argüman geçersiz; sıfır kullanılıyor"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "%<va_start%> işlevine çok az argüman verilmiş"
@@ -13650,7 +13681,7 @@ msgstr "(bu durumda %<va_arg%>'a %qT değil %qT akarılmalı)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "Bu kodun bitiminde uygulama çıkacak"
@@ -13736,7 +13767,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, fuzzy, gcc-internal-format
#| msgid "invalid argument to %<__builtin_frame_address%>"
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
@@ -13838,8 +13869,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "void değer yoksayılması gerekirken yoksayılmadı"
@@ -14122,7 +14153,7 @@ msgstr "%q+D bildirimi bir genel bildirimi gölgeliyor"
msgid "declaration of %q+D shadows a previous local"
msgstr "%q+D bildirimi önceki yerel bildirimi gölgeliyor"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
msgid "shadowed declaration is here"
@@ -14238,7 +14269,7 @@ msgstr "deyim ifadesine jump"
msgid "%qE defined as wrong kind of tag"
msgstr "%H%qEyanlış etiket çeşidi olarak tanımlı"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "%<restrict%> kullanımı geçersiz"
@@ -14359,7 +14390,7 @@ msgstr "%qD parametresi ilklendirilmiÅŸ"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "deÄŸiÅŸken uzunluklu nesne ilklendirilemeyebilir"
@@ -14369,7 +14400,7 @@ msgstr "deÄŸiÅŸken uzunluklu nesne ilklendirilemeyebilir"
msgid "variable %qD has initializer but incomplete type"
msgstr "%qD değişkeni ilklendiricili ama içi boş türde"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "satıriçi %q+D işlevine satıriçi olmayan öznitelik verilmiş"
@@ -14401,7 +14432,7 @@ msgstr "%q+D de dizi boyutu eksik"
msgid "zero or negative size array %q+D"
msgstr "%q+D dizisi sıfır ya da negatif uzunlukta"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "%q+D nin saklama uzunluÄŸu bilinmiyor"
@@ -14519,7 +14550,7 @@ msgstr "tür boyutu doğrudan değerlendirilemez"
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -14613,7 +14644,7 @@ msgstr "%qs parametresi için saklama sınıfı belirtilmiş"
msgid "storage class specified for unnamed parameter"
msgstr "%qs parametresi için saklama sınıfı belirtilmiş"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "veri türü ismi için saklama sınıfı belirtildi"
@@ -14785,7 +14816,7 @@ msgstr "%qs dizi ile dönen işlev olarak bildirilmiş"
msgid "function definition has qualified void return type"
msgstr "işlev tanımı nitelikli void dönüş türü içeriyor"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "tür niteleyicileri işlev dönüş türünde yok sayıldı"
@@ -14911,7 +14942,7 @@ msgstr "ISO C 'const' ya da 'volatile' işlev türlerini yasaklar"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "veri üyesi değişken olarak değiştirilmiş %qT türünde olamayabilir"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "void bildirimli deÄŸiÅŸken ya da alan %qE"
@@ -15374,7 +15405,7 @@ msgstr "%qD argümanı yerleşik prototiple eslesmiyor"
msgid "argument %qD doesn%'t match prototype"
msgstr "%qD argümanı prototiple uyumsuz"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "void olmayan dönüşlü işlevde `return' deyimi yok"
@@ -15580,7 +15611,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C boş kaynak dosyalarına izin vermez"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C işlevler dışında fazladan %<;%> kullanımına izin vermez"
@@ -15591,7 +15622,7 @@ msgstr "ISO C işlevler dışında fazladan %<;%> kullanımına izin vermez"
msgid "unknown type name %qE"
msgstr "bilinmeyen yazmaç ismi: %s"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "bildirim belirteçleri umuluyordu"
@@ -15602,7 +15633,7 @@ msgstr "bildirim belirteçleri umuluyordu"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "betimleyici veya %<(%> umuluyordu"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored for methods"
@@ -15625,7 +15656,7 @@ msgstr "Öznitelik bit ismi umuluyordu"
msgid "data definition has no type or storage class"
msgstr "veri tanımı tür ya da saklama sınıfı içermiyor"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "%<,%> veya %<;%> umuluyordu"
@@ -15655,7 +15686,7 @@ msgstr "ISO C90 %<long long%>'u desteklemez"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 %<long long%>'u desteklemez"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "dizge sabiti umuluyordu"
@@ -15686,18 +15717,18 @@ msgstr "CRIS-port olumlaması başarısız: "
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "betimleyici umuluyordu"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "sembolik sabitler listesinin sonunda virgul"
@@ -15831,7 +15862,7 @@ msgstr "%HISO C90 kod ve bildirimlerin karışmasına izin vermez"
msgid "expected %<}%> before %<else%>"
msgstr "%<,%> veya %<}%> umuluyordu"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -15860,18 +15891,18 @@ msgstr "betimleyici veya %<*%> umuluyordu"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "deyim umuluyordu"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
#| msgid "%Hempty body in an if-statement"
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "%Hif deyiminin gövdesi boş"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
#| msgid "%Hempty body in an else-statement"
msgid "suggest braces around empty body in an %<else%> statement"
@@ -15943,7 +15974,7 @@ msgstr "ISO C işlevler dışında fazladan %<;%> kullanımına izin vermez"
msgid "cannot take address of %qs"
msgstr "%qD bit-alanının adresi alınamaz"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "ifade umuluyordu"
@@ -15986,282 +16017,282 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "?: için terimler farklı türde"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments specified for %qs attribute"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "%qs özniteliği için belirtilen argüman sayısı yanlış"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "bileÅŸik sabit deÄŸiÅŸken boyuta sahip"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 bileÅŸik sabitlere izin vermez"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
#| msgid "expected identifier or %<(%>"
msgid "expected identifier or %<)%>"
msgstr "betimleyici veya %<(%> umuluyordu"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "yöntem tanımında fazladan ; belirtilmiş"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "objective-c method declaration is expected"
msgstr "bildirim belirteçleri umuluyordu"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for %qs"
msgid "no type or storage class may be specified here,"
msgstr "%qs için saklatım sınıfı belirtilmiş"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "%<#pragma pack%> sonrasında %<(%> eksik - yoksayıldı"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "%<#pragma pack%> sonrasında %<(%> eksik - yoksayıldı"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "the %<setter%> attribute may only be specified once"
msgstr "%Jbölüm özniteliği yerel değişkenler için belirtilmiş olamaz"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
#| msgid "%Jaddress area attribute cannot be specified for functions"
msgid "the %<getter%> attribute may only be specified once"
msgstr "%Jadres alanı özelliği işlevler için belirtilemez"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, fuzzy, gcc-internal-format
#| msgid "malformed #pragma GCC pch_preprocess, ignored"
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "#pragma GCC pch_preprocess bozuk, yoksayıldı"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
#| msgid "too many input files"
msgid "too many %qs clauses"
msgstr "girdi dosyası sayısı çok fazla"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
#| msgid "comparison between signed and unsigned integer expressions"
msgid "collapse argument needs positive constant integer expression"
msgstr "işaretli ve işaretsiz tamsayı ifadeler arasında karşılaştırma"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<none%> or %<shared%>"
msgstr "%<,%> veya %<;%> umuluyordu"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected integer expression"
msgstr "ifade umuluyordu"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
#| msgid "invalid const_double operand"
msgid "invalid schedule kind"
msgstr "const_double terim geçersiz"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
#| msgid "%qs is not a valid output file"
msgid "%qs is not valid for %qs"
msgstr "%qs geçerli bir çıktı dosyası değil"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "malformed %<#pragma align%>"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "%<#pragma align%> bozuk"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, fuzzy, gcc-internal-format
#| msgid "invalid operation on %<__fpreg%>"
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "%<__fpreg%> üzerinde geçersiz işlem"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected %<(%> or end of line"
msgstr "Beklenmeyen modül sonu"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
#| msgid "%s statement expected at %L"
msgid "for statement expected"
msgstr "%s deyimi %L'de umuluyordu"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected iteration declaration or initialization"
msgstr "bildirim veya deyim umuluyordu"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "iteration variable %qD should not be firstprivate"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a template"
msgid "%qD is not a variable"
msgstr "%qD bir ÅŸablon deÄŸil"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, fuzzy, gcc-internal-format
#| msgid "%q+F declared %<static%> but never defined"
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%<static%> olarak bildirilen `%q+F hiç tanımlanmamış"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
#| msgid "%Jparameter %u has incomplete type"
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%J%u. parametre tamamlanmamış türde"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -16271,7 +16302,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD bir tamamlanmamış tür içeriyor"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "void ifade kullanımı geçersiz"
@@ -16338,69 +16369,74 @@ msgstr "%qT üye türünde gösterici nesne türü %qT ile uyumsuz"
msgid "function return types not compatible due to %<volatile%>"
msgstr "işlevin dönüş türü %<volatile%> den dolayı uyumsuz"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "bir içi boş tür göstericisi üzerinde aritmetik"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT türü %qE isimli üye içermiyor"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "bir struct veya union olmayan şeyin %qE üyesi için istek"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "içi boş ture gösterici ilişkilendirme"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "%<void *%> gösterici ilişkilendirmesi"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "indisli değer ne dizi ne de bir gösterici"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "dizi indisi bir tamsayı değil"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "indisli değer, işleve göstericidir"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "Substring end index at %L is out of bounds"
msgid "index value is out of bound"
msgstr "%L'deki altdizge son indisi sınırların dışında"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C %<register%> dizisi indislemesine izin vermez"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 sol tarafsız dizi indislemesine izin vermez"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "çağrılan nesne %qE bir işlev değil"
@@ -16408,387 +16444,387 @@ msgstr "çağrılan nesne %qE bir işlev değil"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "uyumlu olmayan türde işlev çağrısı"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
#| msgid "function definition has qualified void return type"
msgid "function with qualified void return type called"
msgstr "işlev tanımı nitelikli void dönüş türü içeriyor"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr ""
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "%<__builtin_longjmp%>'in ikinci argümanı 1 olmalı"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to method %qE"
msgstr "%qE işlevi için çok fazla argüman belirtildi"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "%qE işlevi için çok fazla argüman belirtildi"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "declared here"
msgstr "burada bildirilmiÅŸ %q+D"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "%d biçimsel parametre türü tamamlanmayan türde"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı gerçel sayı değil tamsayı aktarılması"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı karmaşık sayı değil tamsayı aktarılması"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı gercel sayı değil karmaşık sayı aktarılması"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı tamsayı değil gercel sayı aktarılması"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı tamsayı değil karmaşık sayı aktarılması"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı karmaşık sayı değil gerçel sayı aktarılması"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı %<double%> değil %<float%> aktarılması"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı karmaşık sayı değil tamsayı aktarılması"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı farklı genişlikte değer aktarılması"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı işaretsiz tamsayı aktarılması"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "%2$qE işlevinin %1$d. argümanına prototipten dolayı işaretli tamsayı aktarılması"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "%qT türünden %qT türüne örtük dönüşüme C++'da izin verilmez"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "%qE işlevi için çok az argüman belirtildi"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behavior"
msgstr "%q+D zayıf bildirimi ilk kullanımdan sonra belirsiz davranışla sonuçlanıyor"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
#| msgid "comparison between %q#T and %q#T"
msgid "comparison between %qT and %qT"
msgstr "%q#T ile %q#T arasında karşılaştırma"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "çıkartmada %<void *%> türünde gösterici kullanılmış"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "çıkartmada işlev göstericisi kullanılmış"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C karmaşık sayıların mantıksal çarpımında %<~%> desteklemez"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "tek terimli tümleyen için yanlış türde argüman"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C karmaşık sayı türlerinde %<++%> ve %<--%> desteklemez"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "arttırımda yanlış türde argüman"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "eksiltmede yanlış türde argüman"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "bilinmeyen yapı göstericisinde arttırma"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "bilinmeyen yapı göstericisinde eksiltme"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of expression of type %<void%>"
msgstr "gecicinin adresi alıniyor"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
#| msgid "assignment of read-only location"
msgid "assignment of read-only location %qE"
msgstr "salt-okunur konuma atama"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only location"
msgid "increment of read-only location %qE"
msgstr "salt-okunur konuma eksiltim"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
#| msgid "decrement of read-only location"
msgid "decrement of read-only location %qE"
msgstr "salt-okunur konuma arttırım"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "%qD bit-alanının adresi alınamaz"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "genel yazmaç değişkeni %qD iç işlevde kullanılmış"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "yazmaç değişkeni %qD iç işlevde kullanılmış"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "%qD genel yazmaç değişkeninin adresi istenmiş"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "%qD yazmaç değişkeninin adresi istendi"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "koÅŸullu ifadede sol deÄŸersiz dizi"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "%qT türünden %qT türüne örtük dönüşüme C++'da izin verilmez"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C tek taraflı void tür içeren koşullu ifadelere izin vermez"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
#| msgid "pointer type mismatch in conditional expression"
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "koşullu ifadede gösterici türü uyumsuzluğu"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C %<void *%> ve işlev göstericisi arasında koşullu ifadelere izin vermez"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "koşullu ifadede gösterici türü uyumsuzluğu"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "koşullu ifadede gösterici/tamsayı tür uyumsuzluğu"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "virgüllü ifadenin sol terimi etkisiz"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
#| msgid "cast adds new qualifiers to function type"
msgid "cast adds %q#v qualifier to function type"
msgstr "tür dönüşümü, işlev türüne yeni niteleyiciler ekliyor"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "tür dönüşümü, gösterici hedef türünden niteleyicileri iptal ediyor"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "tür dönüşümü dizi belirtiyor"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "tür dönüşümü işlev belirtiyor"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C skalar olmayandan aynı türe dönüşüme izin vermez"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C union türe dönüşüme izin vermez"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "union içinde mevcut olmayan türden union türe dönüşüm"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "tür dönüşümü hedef türün gerekli hizalamasını azaltıyor"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "göstericiden farklı tamsayı türlere dönüşüm"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "%qT türündeki işlev çağrısından eşleşmeyen %qT türüne dönüşüm"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "farklı boyuttaki tamsayı türden göstericiye dönüşüm"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C işlev göstericisinin nesne göstericisine dönüştürülmesini yasaklar"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C nesne göstericisinin işlev göstericisine dönüştürülmesini yasaklar"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -16800,721 +16836,721 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, fuzzy, gcc-internal-format
#| msgid "format %q.*s expects type %<%T%s%>, but argument %d has type %qT"
msgid "expected %qT but argument is of type %qT"
msgstr "%q.*s biçiminin %<%T%s%> türünde olması umuluyor, ama %d. argüman %qT türünde"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, fuzzy, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "%2$qE işlevinin %1$d. argümanının aktarımında gösterici hedefleri farklı sign'lıkta"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "sağ taraf değeri, başvuru parametresine aktarılamaz"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "%2$qE işlevinin %1$d. argümanına aktarım niteliksiz göstericiyi nitelikli yapıyor"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
#| msgid "assignment makes qualified function pointer from unqualified"
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "atama niteliksiz işlev göstericisini nitelikli yapıyor"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
#| msgid "initialization makes qualified function pointer from unqualified"
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "ilklendirme niteliksiz işlev göstericisini nitelikli yapıyor"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
#| msgid "return makes qualified function pointer from unqualified"
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "dönüş değeri niteliksiz işlev göstericisini nitelikli yapıyor"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "%2$qE işlevinin %1$d. argümanına aktarım gösterici hedef türündeki niteleyicileri iptal ediyor"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
#| msgid "assignment discards qualifiers from pointer target type"
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "atama gösterici hedef türündeki niteleyicileri iptal ediyor"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
#| msgid "initialization discards qualifiers from pointer target type"
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "ilklendirme gösterici hedef türündeki niteleyicileri iptal ediyor"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
#| msgid "return discards qualifiers from pointer target type"
msgid "return discards %qv qualifier from pointer target type"
msgstr "dönüş değeri gösterici hedef türündeki niteleyicileri iptal ediyor"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C union türe argüman dönüşümünü yasaklar"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "%qT türünden %qT türüne örtük dönüşüme C++'da izin verilmez"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "%2$qE işlevinin %1$d. argümanına uyumsuz gösterici türünde aktarım"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "assignment from pointer to non-enclosed address space"
msgstr "göstericiden farklı tamsayı türlere dönüşüm"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
#| msgid "initialization from incompatible pointer type"
msgid "initialization from pointer to non-enclosed address space"
msgstr "uyumsuz gösterici türünde ilklendirme"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "%2$qE işlevinin %1$d. argümanı bir biçim özniteliği adayı olabilir"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "atamada sol taraf bir biçim özniteliği adayı olabilir"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "ilklendirmede sol taraf bir biçim özniteliği adayı olabilir"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "dönüş türü bir biçim özniteliği adayı olabilir"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, fuzzy, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C işlev göstericisi ile %<void *%> arasında %2$qE işlevinin %1$d. argümanının aktarımına izin vermez"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C de işlev göstericisi ile %<void *%> arasında atama yasaktır"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C de işlev göstericisi ile %<void *%> arasında ilklendirme yasaktır"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C de işlev göstericisi ile %<void *%> arasında return yasaktır"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, fuzzy, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "%2$qE işlevinin %1$d. argümanının aktarımında gösterici hedefleri farklı sign'lıkta"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "atama sırasında gösterici hedefleri farklı signed'lıkta"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "ilklendirmede gösterici hedefleri farklı signed'lıkta"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "dönüş değerinde gösterici hedefleri farklı signed'lıkta"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "%2$qE işlevinin %1$d. argümanına uyumsuz gösterici türünde aktarım"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "uyumsuz gösterici türünde atama"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "uyumsuz gösterici türünde ilklendirme"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "uyumsuz gösterici türünde dönüş değeri"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "sol değersiz dizi kullanımı geçersiz"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "%2$qE işlevinin %1$d. argümanının aktarımı sırasında bir tür dönüşümü olmaksızın tamsayıdan gösterici yapılıyor"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "atama bir tür dönüşümü olmaksızın tamsayıdan gösterici yapıyor"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "ilklendirme bir tür dönüşümü olmaksızın tamsayıdan gösterici yapıyor"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "dönüş değeri bir tür dönüşümü olmaksızın tamsayıdan gösterici yapıyor"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, fuzzy, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "%2$qE işlevinin %1$d. argümanının aktarımı sırasında bir tür dönüşümü olmaksızın göstericiden tamsayı yapılıyor"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "atamada bir tür dönüşümü olmaksızın göstericiden tamsayı yapılıyor"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "ilklendirmede bir tür dönüşümü olmaksızın göstericiden tamsayı yapılıyor"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "dönüş değerinde bir tür dönüşümü olmaksızın göstericiden tamsayı yapılıyor"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, fuzzy, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "%2$qE işlevinin %1$d. argümanı için tür uyumsuz"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of %qT to %qT"
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "%qT'nin %qT'ye atanmasında türler uyumsuz"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in initialization"
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "ilklendirmede uyumsuz türler"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of %qT to %qT"
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "%qT'nin %qT'ye atanmasında türler uyumsuz"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "geleneksel C özdevinimli ortak değer ilklendirmesini reddeder"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(%qs için near ilklendirme)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "parantezli dizge sabitten ilklendirmeli dizi"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "esnek dizi üyesi ilklendirmesi"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "karakter dizisinin ilklendiricisi olarak geniş dizge kullanılmış"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from non-wide string"
msgstr "geniÅŸ karakterli olmayan dizgeden ilklendirmeli wchar_t-array"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from incompatible wide string"
msgstr "geniÅŸ karakterli olmayan dizgeden ilklendirmeli wchar_t-array"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "dizge sabitten ilgisiz türde ilklendirilmiş dizi"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "dizi sabit olmayan dizi ifadesinden ilklendirilmiÅŸ"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "ilklendirici öğe bir sabit değil"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not constant"
msgid "initializer element is not a constant expression"
msgstr "ilklendirici öğe bir sabit değil"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "ilkledirici öğe yükleme sırasında hesaplanabilir değil"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "geçersiz ilklendirici"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "opak vektör türleri ilklendirilemez"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "ilklendiricinin sonunda fazladan parantezli grup"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "ilklendiriciyi çevreleyen parantezler yok"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "skalar ilklendiriciyi kuÅŸatan parantezler"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "iç içe bağlam içinde esnek dizi üyesi ilklendirmesi"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "ilklendirici yok"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "skalar ilklendirici boÅŸ"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "skalar ilklendiricide fazladan öğeler"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "dizi olmayan ilklendiricide dizi indisi"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "alan ismi kayıt ya da union ilklendiricisinde kullanılmamış"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "ilklendiricideki dizi indisi tamsayı türünde değil"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer not of integer type"
msgid "array index in initializer is not an integer constant expression"
msgstr "ilklendiricideki dizi indisi tamsayı türünde değil"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "ilklendiricide sabit olmayan dizi indisi"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "ilklendiricideki dizi indisi dizi sınırlarının dışında"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "ilklendiricide indis aralığı boş"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "ilklendiricideki dizi indisi aralığı dizi sınırlarını aşıyor"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "ilklendiricide bilinmeyen %qE alanı belirtilmiş"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "yan etkili ilklendirilmiş alanın üzerine yazıldı"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, fuzzy, gcc-internal-format
#| msgid "initialized field with side-effects overwritten"
msgid "initialized field overwritten"
msgstr "yan etkili ilklendirilmiş alanın üzerine yazıldı"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "karakter dizisi ilklendiricide gereğinden fazla öğe"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "struct ilklendiricide gereğinden fazla öğe"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "esnek dizi üyesinin statik olmayan ilklendirmesi"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "union ilklendiricide gereğinden fazla öğe"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "geleneksel C union ilklendirmesini reddeder"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "dizi ilklendiricide gereğinden fazla öğe"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "vektör ilklendiricide gereğinden fazla öğe"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "skalar ilklendiricide gereğinden fazla öğe"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C %<goto *expr;%> kullanımına izin vermez"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "%<noreturn%> olarak bildirilmiş işlev %<return%> deyimi içeriyor"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "dönüş değeri void olmayan işlevde %<return%> değer içermiyor"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "void dönüşlü işlevde %<return%> değer içeriyor"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
#| msgid "%<return%> with a value, in function returning void"
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "void dönüşlü işlevde %<return%> değer içeriyor"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "işlev yerel değişkenin adresi ile dönüyor"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch miktarı bir tamsayı değil"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "ISO C'de %<long%> switch ifadesi %<int%> türüne dönüştürülmez"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "case label is not an integer constant expression"
msgstr "dizi boyutu bir tümleyen sabit ifadesi değil"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case etiketi bir switch deyimi içinde değil"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "%<default%> etiketi bir switch deyimi içinde değil"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, fuzzy, gcc-internal-format
#| msgid "%Hsuggest explicit braces to avoid ambiguous %<else%>"
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%Hanlamca belirsiz %<else%>den kaçınmak için kaşlı ayraçlar önerilir"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break deyimi switch ya da döngü içinde değil"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue deyimi bir döngü içinde değil"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, fuzzy, gcc-internal-format
#| msgid "break statement not within loop or switch"
msgid "break statement used with OpenMP for loop"
msgstr "break deyimi switch ya da döngü içinde değil"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "deyim etkisiz"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "ifade deyimi boş tür içeriyor"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "sağa kaydırma sayısı negatif"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "sağa kaydırma sayısı tür genişliğinden büyük ya da eşit"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "sola kaydırma sayısı negatif"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "sola kaydırma sayısı tür genişliğinden büyük ya da eşit"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "operands to ?: have different types"
msgid "comparing vectors with different element types"
msgstr "?: için terimler farklı türde"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "== veya != ile karşılaştırma gerçel sayılarda güvenli değil"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
#| msgid "comparison of distinct pointer types lacks a cast"
msgid "comparison of pointers to disjoint address spaces"
msgstr "bir tür dönüşümü olmaksızın ayrı gösterici türlerinin karşılaştırması"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C %<void *%> ile işlev göstericisinin karşılaştırılmasına izin vermez"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "bir tür dönüşümü olmaksızın ayrı gösterici türlerinin karşılaştırması"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "gösterici ile tamsayı arasında karşılaştırma"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "tamamlanmış ve içi boş göstericilerin karşılaştırılması"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C işlev göstericilerinin sıralı karşılaştırmalarına izin vermez"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "tamsayı sıfır ile sıralı gösterici karşılaştırması"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "tamsayı sıfır ile sıralı gösterici karşılaştırması"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "%qT türünden %qT türüne örtük dönüşüme C++'da izin verilmez"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "doğrudan değer gereken yerde göstericiye dönüştürülemeyen dizi kullanılmış"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "doğrudan değer gereken yerde yapı türünde değer kullanılmış"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "doğrudan değer gereken yerde union türünde değer kullanılmış"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "doğrudan değer gereken yerde yapı türünde değer kullanılmış"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<restrict%>"
msgid "%qE has invalid type for %<reduction%>"
msgstr "%<restrict%> kullanımı geçersiz"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, fuzzy, gcc-internal-format
#| msgid "%qT is not an accessible base of %qT"
msgid "%qE is not a variable in clause %qs"
msgstr "%qT erişilebilir bir %qT tabanı değil"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -17524,7 +17560,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "işlev çağrısı küme değeri içeriyor"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "%q+D değişkeninin boyutu çok geniş"
@@ -18375,54 +18411,54 @@ msgstr "%s: bir COFF dosyası olarak açılamıyor"
msgid "library lib%s not found"
msgstr "lib%s kitaplığı bulunamadı"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "bir gösterici türüne dönüştürülemez"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "bir gerçel sayı değer umulurken gösterici değeri kullanılmış"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "bir gerçel sayı umulurken küme değeri kullanılmış"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "tamamlanmamış türe dönüşüm"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
#| msgid "can't convert between vector values of different size"
msgid "can%'t convert between vector values of different size"
msgstr "farklı boyuttaki vektör değerleri arasında dönüşüm yapılamaz"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "bir tamsayı umulurken küme değeri kullanılmış"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "karmaşık sayı umulan yerde gösterici değeri kullanılmış"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "karmaşık sayı umulan yerde küme değeri kullanılmış"
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
#| msgid "can't convert value to a vector"
msgid "can%'t convert value to a vector"
msgstr "değer bir vektöre dönüştürülemez"
-#: convert.c:1004
+#: convert.c:1002
#, fuzzy, gcc-internal-format
#| msgid "aggregate value used where a float was expected"
msgid "aggregate value used where a fixed-point was expected"
@@ -18584,7 +18620,7 @@ msgstr "%d nin baskını %d olmalı, %d değil"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -18678,46 +18714,46 @@ msgstr "verify_eh_tree başarısız"
msgid "stack limits not supported on this target"
msgstr "bu hedefte yığıt sınırları desteklenmiyor"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure member"
msgstr "%qs yapı alan için saklama sınıfı belirtilmiş"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure bitfield"
msgstr "%qs yapı alan için saklama sınıfı belirtilmiş"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "genel yazmaç değişkeni %qD iç işlevde kullanılmış"
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
#| msgid "function %q+D redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%q+D işlevinin yeniden bildirimi inline öznitelikli değil"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
#| msgid "function %q+D redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute warning: %s"
@@ -18798,7 +18834,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "fold sınaması: özgün ağac fold tarafından değiştirildi"
@@ -18809,7 +18845,7 @@ msgstr "fold sınaması: özgün ağac fold tarafından değiştirildi"
msgid "total size of local objects too large"
msgstr "%Jyerel nesnelerin toplam boyutu çok büyük"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "%<asm%> içindeki kısıt imnkansız"
@@ -19301,84 +19337,84 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "ağaç denetimi: %1$qs sınıfı umuluyordu, %5$s dosyasının %6$d. satırında %4$s işlevinde %2$qs (%3$s) var"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
#| msgid "no return statement in function returning non-void"
msgid "using result of function returning %<void%>"
msgstr "void olmayan dönüşlü işlevde `return' deyimi yok"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "asm çıktısı %d içinde geçersiz sol değer"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "bellek girdisi %d doÄŸrudan adreslenebilir deÄŸil"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "threadprivate variable %qE used in untied task"
msgstr "yazmaç değişkeni %qD iç işlevde kullanılmış"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "iteration variable %qE should be private"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "iteration variable %qE should not be firstprivate"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "iteration variable %qE should not be reduction"
msgstr "yazmaç değişkeni %qD iç işlevde kullanılmış"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
#| msgid "local variable %qD may not appear in this context"
msgid "%s variable %qE is private in outer context"
msgstr "yerel değişken %qD bu kapsamda görünemez"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "gimpleme başarısız"
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not close Go dump file: %m"
msgstr "döküm dosyası %qs açılamadı: %s"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not open Go dump file %qs: %m"
@@ -19438,7 +19474,7 @@ msgstr "Ağaç seviyesinde döngü eniyilemeleri etkinleştirilir"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -19589,48 +19625,48 @@ msgstr "%qs alanı bir işlev olarak bildirilmiş"
msgid "function %qD redeclared as variable"
msgstr "iÅŸlev %q+D 'inline' olarak yeniden bildirilmiÅŸ"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -19747,7 +19783,7 @@ msgstr "-freorder-blocks-and-partition bu mimaride çalışmaz"
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition bu mimaride çalışmaz"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition bu mimaride çalışmaz"
@@ -20126,9 +20162,9 @@ msgstr "'%s' bir %s yazmacı olarak kullanılamıyor"
msgid "can%'t use %qs as a fixed register"
msgstr "'%s' bir %s yazmacı olarak kullanılamıyor"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "bilinmeyen yazmaç ismi: %s"
@@ -20213,12 +20249,12 @@ msgstr "%qs sınıfı içinde dökülecek bir yazmaç bulunamadı"
msgid "%<asm%> operand requires impossible reload"
msgstr "%<asm%> terimi imkansız yeniden yükleme gerektiriyor"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "%<asm%> teriminin kısıtı terim boyutu ile uyumsuz"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "çıktı terimi %<asm%> içindeki bir sabit"
@@ -20442,7 +20478,7 @@ msgstr "paketli öznitelik yetersiz hizalamaya sebep oluyor"
msgid "packed attribute is unnecessary"
msgstr "paketli öznitelik gereksiz"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "dizi elemanlarının hizalaması eleman boyutundan büyük"
@@ -20671,7 +20707,7 @@ msgstr "DB komutunun kullanımı etkin olur"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -20687,7 +20723,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr "aslen dolaylı işlev çağrıları satır içine almaya konu olmaz"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -20702,7 +20738,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
#| msgid "namespace %qD not allowed in using-declaration"
msgid "asm not allowed in atomic transaction"
@@ -20741,684 +20777,684 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
#| msgid "attributes are not allowed on a function-definition"
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "bir işlev tanımıda özniteliklere izin verilmez"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "ADDR_EXPR değişirken sabit yeniden hesaplanmadı"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "ADDR_EXPR değişirken yan etkiler yeniden hesaplanmadı"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "SSA ismi serbest birakılanlar listesinde ama hala atıflı"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid first operand of MEM_REF"
msgstr "%%R için terim geçersiz"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand of MEM_REF"
msgstr "%%R için terim geçersiz"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "always-false koÅŸuluyla ASSERT_EXPR"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "adres alındı, ama ADDRESSABLE biti etkin değil"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
#| msgid "non-boolean used in condition"
msgid "non-integral used in condition"
msgstr "şartlı ifadedeki kip mantıksal kip değil"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "koşullu terim geçersiz"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "kısıtlar terim için geçersiz"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "başvuru öneki geçersiz"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "komuttaki terim geçersiz"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid expression for min lvalue"
msgstr "terim olarak ifade geçersiz"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in indirect reference"
msgstr "komuttaki terim geçersiz"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
#| msgid "Invalid form of array reference at %C"
msgid "invalid operands to array reference"
msgstr "%C'de dizi başvurusunun yapılışı geçersiz"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
#| msgid "Rank mismatch in array reference at %L (%d/%d)"
msgid "type mismatch in array reference"
msgstr "%L'de dizi başvurusunda sıra uyumsuz (%d/%d)"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, fuzzy, gcc-internal-format
#| msgid "Rank mismatch in array reference at %L (%d/%d)"
msgid "type mismatch in array range reference"
msgstr "%L'de dizi başvurusunda sıra uyumsuz (%d/%d)"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in real/imagpart reference"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in component reference"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "göstericiden farklı tamsayı türlere dönüşüm"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid address operand in MEM_REF"
msgstr "%%R için terim geçersiz"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand in MEM_REF"
msgstr "%%R için terim geçersiz"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid function in gimple call"
msgstr "işlev bildirimi geçersiz"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
#| msgid "function not inlinable"
msgid "non-function in gimple call"
msgstr "işlev satıriçine alınabilir değil"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
#| msgid "invalid storage class for function %qs"
msgid "invalid pure const state for function"
msgstr "%qs işlevi için geçersiz saklama sınıfı"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid LHS in gimple call"
msgstr "satır numarası tablosunda geçersiz program sayacı (PC)"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid conversion in gimple call"
msgstr "%<__fpreg%> türüne dönüşüm geçersiz"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid static chain in gimple call"
msgstr "satır numarası tablosunda geçersiz program sayacı (PC)"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
#| msgid "invalid argument to builtin function"
msgid "invalid argument to gimple call"
msgstr "yerleşik işleve aktarılan argüman geçersiz"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in gimple comparison"
msgstr "komuttaki terim geçersiz"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr ""
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "invalid covariant return type for %q+#D"
msgid "invalid vector comparison resulting type"
msgstr "%q+#D için ortak değişen dönüş türü geçersiz"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in unary operation"
msgstr "komuttaki terim geçersiz"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "invalid types in nop conversion"
msgstr "Sabit ifadesinde tür hatalı"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid types in address space conversion"
msgstr "terim olarak ifade geçersiz"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid types in fixed-point conversion"
msgstr "komuttaki terim geçersiz"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid types in conversion to floating point"
msgstr "%<__fpreg%> türüne dönüşüm geçersiz"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid types in conversion to integer"
msgstr "%<__fpreg%> türüne dönüşüm geçersiz"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, fuzzy, gcc-internal-format
#| msgid "Elemental binary operation"
msgid "non-register as LHS of binary operation"
msgstr "Öğesel ikilik işlem"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operands in binary operation"
msgstr "iki terimli %s için terimler geçersiz"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in complex expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in shift expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector shift expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening vector shift expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid (pointer) operands to plus/minus"
msgstr "iki terimli %s için terimler geçersiz"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in pointer plus expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in binary expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in ternary operation"
msgstr "komuttaki terim geçersiz"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in fused multiply-add expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector permute expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr ""
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid mask type in vector permute expression"
msgstr "void ifade kullanımı geçersiz"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "non-trivial conversion at assignment"
msgstr "atamanın sol tarafı geçersiz"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operand in unary expression"
msgstr "iki terimli %s için terimler geçersiz"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in address expression"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
#| msgid "invalid indirect memory address"
msgid "invalid rhs for gimple memory store"
msgstr "geçersiz dolaylı bellek adresi"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in return statement"
msgstr "komuttaki terim geçersiz"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in asm statement"
msgid "invalid conversion in return statement"
msgstr "asm deyiminde geçersiz sol taraf"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "goto destination is neither a label nor a pointer"
msgstr "indisli değer ne dizi ne de bir gösterici"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%s code"
msgid "invalid operand to switch statement"
msgstr "%%s kodu için terim geçersiz"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
#| msgid "format string has invalid operand number"
msgid "incorrect setting of landing pad number"
msgstr "biçim dizgesi geçersiz sayıda terim içeriyor"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%p code"
msgid "invalid comparison code in gimple cond"
msgstr "%%p kodu için terim geçersiz"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in increment"
msgid "invalid labels in gimple cond"
msgstr "arttırmada geçersiz sol taraf"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "adres geçersiz"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
#| msgid "missing definition"
msgid "missing PHI def"
msgstr "tanım eksik"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "invalid IACC argument"
msgid "invalid PHI argument"
msgstr "IACC argümanı geçersiz"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "incompatible types in assignment"
msgid "incompatible types in PHI argument %u"
msgstr "atamada uyumsuz türler"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, fuzzy, gcc-internal-format
#| msgid "verify_stmts failed"
msgid "verify_gimple failed"
msgstr "verify_stmts başarısız"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, fuzzy, gcc-internal-format
#| msgid "bb_for_stmt (phi) is set to a wrong basic block"
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "bb_for_stmt (phi) yanlış temel bloka atanmış"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "Ağaç düğümlerinin paylaşımı yanlış"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, fuzzy, gcc-internal-format
#| msgid "bb_for_stmt (stmt) is set to a wrong basic block"
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "bb_for_stmt (stmt) yanlış temel bloka atanmış"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "in statement"
msgstr "deyim umuluyordu"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "deyim yakalama için imli, ama olmuyor."
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "Deyim blokun ortasında yakalama için imlenmiş"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, fuzzy, gcc-internal-format
#| msgid "ENTRY_BLOCK has a statement list associated with it"
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "ENTRY_BLOCK onunla ilişkili bir deyim listesi içeriyor"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, fuzzy, gcc-internal-format
#| msgid "EXIT_BLOCK has a statement list associated with it"
msgid "EXIT_BLOCK has IL associated with it"
msgstr "EXIT_BLOCK onunla ilişkili bir deyim listesi içeriyor"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "bb %d deki çıkışa düşüş"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "%d. temel blokun ortasında denetim akışı"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "bb %d içinde bir denetim deyimi sonrası düşen kenar"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "fallthru edge after a control statement in bb %d"
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "bb %d içinde bir denetim deyimi sonrası düşen kenar"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "bb %d sonunda çıkan ayrıt bayrağı sayısı yanlış"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "bb %d sonunda açıkça goto"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "dönüş ayrıtı bb %d içindeki çıkışı göstermiyor"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, fuzzy, gcc-internal-format
#| msgid "found default case not at end of case vector"
msgid "found default case not at the start of case vector"
msgstr "default case, case vektörünün sonunda değil"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
#| msgid "case labels not sorted:"
msgid "case labels not sorted: "
msgstr "sırasız case etiketleri:"
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "fazladan çıkan ayrıt %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "ayrıt %i->%i eksik"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
#| msgid "%H%<noreturn%> function does return"
msgid "%<noreturn%> function does return"
msgstr "%H%<noreturn%> işlev değer döndürüyor"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, fuzzy, gcc-internal-format
#| msgid "%Hcontrol reaches end of non-void function"
msgid "control reaches end of non-void function"
msgstr "%Hdenetim void olmayan işlevin sonunu aşıyor"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of %qD, declared with attribute warn_unused_result"
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%H%qD dönüş değeri yoksayılıyor, warn_unused_result özniteliği ile bildirilmiş"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of function declared with attribute warn_unused_result"
msgid "ignoring return value of function declared with attribute warn_unused_result"
@@ -21487,75 +21523,75 @@ msgstr "BB %i son deyiminin bölgesi yanlış belirlenmiş"
msgid "BB %i has incorrect fallthru edge"
msgstr "düşen ayrıtta yanlış komut"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it receives a non-local goto"
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "%q+F işlevi yerel olmayan goto içerdiğinden satıriçine alınamaz"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it uses variable sized variables"
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "%q+F işlevi değişken boyutlu değişkenler kullandığından satıriçine alınamaz"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "%q+F işlevi alloca kullandığından satıriçine alınamaz (always_inline özniteliği ile zorlanabilir)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "%q+F işlevi setjmp kullandığından asla satıriçine alınamaz"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "%q+F işlevi değişkin argüman listesi kullandığından asla satıriçine alınamaz"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "%q+F işlevi setjmp-longjmp olağandışılık eylemcisi kullandığından asla satıriçine alınamaz"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "%q+F işlevi yerel olmayan goto içerdiğinden asla satıriçine alınamaz"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "%q+F işlevi __builtin_return veya __builtin_apply_args kullandığından satıriçine alınamaz"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "%q+F işlevi bir hesaplanmış goto içerdiğinden satıriçine alınamaz"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "%q+F işlevi -fno-inline kullanılarak engellendiğinden satır içine alınamaz"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "%q+F işlevinin öznitelikleri satıriçine alınma ile çeliştiğinden işlev asla satıriçine alınamaz"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "inlining failed in call to %q+F: %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "%q+F çağrısında satıriçine alma başarısız: %s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "buradan çağrıldı"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "%q+F çağrısında satıriçine alma başarısız: %s"
@@ -21773,7 +21809,7 @@ msgstr "eniyileme aşamasından sonra değişmiş olarak imlenmiş deyim (%p):"
msgid "verify_ssa failed"
msgstr "verify_ssa başarısız"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%qD was declared here"
@@ -21837,57 +21873,57 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is outside array bounds"
msgstr "dizi indisi bir tamsayı değil"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is above array bounds"
msgstr "dizi indisi bir tamsayı değil"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is below array bounds"
msgstr "dizi indisi bir tamsayı değil"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, fuzzy, gcc-internal-format
#| msgid "comparison is always false due to limited range of data type"
msgid "comparison always false due to limited range of data type"
msgstr "veri türünün aralığı sınırlı olduğundan karşılaştırma sonucu daima yanlıştır"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, fuzzy, gcc-internal-format
#| msgid "comparison is always true due to limited range of data type"
msgid "comparison always true due to limited range of data type"
msgstr "veri türünün aralığı sınırlı olduğundan karşılaştırma sonucu daima doğrudur"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -21898,22 +21934,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr "%qE özniteliği sadece sınıf tanımlarına uygulanabilir"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D zaten dllexport özniteliği ile bildirilmiş: dllimport yoksayıldı"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D' dll ilintileme ile ilişkilendirildikten sonra dllimport özniteliği olmaksızın yeniden bildirildi"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D dllimport özniteliği olmaksızın yeniden bildirildi; önceki dllimport yoksayıldı"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -21928,148 +21964,148 @@ msgstr "%q+D dllimport özniteliği olmaksızın yeniden bildirildi; önceki dll
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "%qE özniteliği yoksayıldı"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "%q+D satıriçi işlevi dllimport olarak bildirilmiş: öznitelik yoksayıldı"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "%q+D işlevinin tanımı dllimport imli"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "%q+D değişkeninin tanımı dllimport imli"
-#: tree.c:5613
+#: tree.c:5614
#, fuzzy, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "%2$qs özniteliğinden dolayı %1$q+D' simgesi için dış ilintileme gerekli"
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr ""
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "işlev dizileri anlamlı değil"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "işlevin dönüş türü işlev olamaz"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "ağaç denetimi: %1$s, %4$s dosyasının %5$d. satırında %3$s işlevinde %2$s var"
-#: tree.c:8877
+#: tree.c:8881
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "ağaç denetimi: %1$s umulmuyordu, %4$s dosyasının %5$d. satırında %3$s işlevinde %2$s var"
-#: tree.c:8890
+#: tree.c:8894
#, fuzzy, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "ağaç denetimi: %1$qs sınıfı umuluyordu, %5$s dosyasının %6$d. satırında %4$s işlevinde %2$qs (%3$s) var"
-#: tree.c:8939
+#: tree.c:8943
#, fuzzy, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "ağaç denetimi: %1$qs sınıfı umuluyordu, %5$s dosyasının %6$d. satırında %4$s işlevinde %2$qs (%3$s) var"
-#: tree.c:8952
+#: tree.c:8956
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "ağaç denetimi: %1$s umulmuyordu, %4$s dosyasının %5$d. satırında %3$s işlevinde %2$s var"
-#: tree.c:9012
+#: tree.c:9016
#, fuzzy, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "ağaç denetimi: %1$qs yapısını içeren ağaç umuluyordu, %4$s dosyasının %5$d. satırında %3$s işlevinde %2$qs var"
-#: tree.c:9026
+#: tree.c:9030
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "ağaç denetimi: %4$s dosyasının %5$d. satırında %3$s işlevinde %2$d öğelik ağaç vektörünün %1$d. öğesine erişildi"
-#: tree.c:9039
+#: tree.c:9043
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "ağaç denetimi: %5$s dosyasının %6$d. satırında %4$s işlevinde %3$d terimli %2$s düğümünün %1$d. terimine erişildi"
-#: tree.c:9052
+#: tree.c:9056
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "ağaç denetimi: %5$s dosyasının %6$d. satırında %4$s işlevinde %3$d terimli %2$s düğümünün %1$d. terimine erişildi"
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "`%qs' önerilmiyor (%s:%d. satırında bildirilmiş)"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "`%qs' önerilmiyor (%s:%d. satırında bildirilmiş)"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "`%qs' önerilmiyor (%s:%d. satırında bildirilmiş)"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "`%qs' önerilmiyor (%s:%d. satırında bildirilmiş)"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "tür önerilmiyor (%s:%d. satırında bildirilmiş)"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "tür önerilmiyor (%s:%d. satırında bildirilmiş)"
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated: %s"
msgstr "%qs önerilmiyor"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated"
msgstr "%qs önerilmiyor"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated"
msgid "type is deprecated: %s"
msgstr "tür önerilmiyor"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "tür önerilmiyor"
@@ -22123,158 +22159,163 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D bir bölüm türü çelişkiye sebep oluyor"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%+D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%+D bir bölüm türü çelişkiye sebep oluyor"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "%q+D hizalaması azami nesne dosyası hizalamasından daha büyük. %d kullanılıyor"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "%q+D için yazmaç ismi belirtilmemiş"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "%q+D için yazmaç ismi geçersiz"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "%q+D veri türü bir yazmaç için uygun değil"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
#| msgid "register specified for %q+D isn%'t suitable for data type"
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "%q+D için belirtilen yazmaç, veri türü için uygun değil"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "yazmaç iki genel yazmaç değişkeni için kullanılmış"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "%q+D için belirtilen yazmaç, veri türü için uygun değil"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "genel yazmaç değişkeni ilk değer içeriyor"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "eniyileme yazmaç dağişkenleri üzerinde okuma/yazma işlemlerini eleyebilir"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "yazmaç olmayan değişken %q+D için yazmaç ismi verilmiş"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "bu hedefte global yıkıcılar desteklenmiyor"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "bu hedefte global yapıcılar desteklenmiyor"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "yerel evreli COMMON verisi henüz gerçeklenmedi"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "%q+D için istenen hizalama gerçeklenmiş hizalama %wu'den daha büyük"
-#: varasm.c:4566
+#: varasm.c:4603
#, fuzzy, gcc-internal-format
#| msgid "initializer for integer value is too complicated"
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "tamsayı değer için ilklendirici fazla karmaşık"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "gerçel sayı için ilklendirici bir gerçel sayı sabit değil"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
#| msgid "invalid initial value for member %qs"
msgid "invalid initial value for member %qE"
msgstr "üye %qs için ilk değer geçersiz"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "%q+D zayıf bildirimi 'public' olmalı"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "%q+D zayıf bildirimi desteklenmiyor"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "bu yapılandırmada sadece zayıf takma adlar destekleniyor"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
#| msgid "%Jweakref is not supported in this configuration"
msgid "weakref is not supported in this configuration"
msgstr "%Jweakref bu yapılandırmada desteklenmiyor"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "ifunc is not supported in this configuration"
msgstr "-m%s bu yapılandırmada desteklenmiyor"
-#: varasm.c:5751
+#: varasm.c:5788
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to undefined symbol %qs"
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D tanımsız %qs simgesine rumuzlu"
-#: varasm.c:5765
+#: varasm.c:5802
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to external symbol %qs"
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D harici %qs simgesine takma ad yapıldı"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "weakref %q+D eninde sonunda kendini hedefliyor"
-#: varasm.c:5814
+#: varasm.c:5851
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function %qD to have static linkage"
msgid "weakref %q+D must have static linkage"
msgstr "üye işlev %qD static ilintilemeli olarak bildirilemez"
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
#| msgid "%Jalias definitions not supported in this configuration"
msgid "alias definitions not supported in this configuration"
msgstr "%Jtakma ad tanımlamaları bu yapılandırmada desteklenmiyor"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "görünürlük özniteliği bu yapılandırmada desteklenmiyor; yoksayıldı"
@@ -22316,8 +22357,8 @@ msgstr "%qD işlev etki alanı dışında tanımlı değil"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "dizge uzunluğu %1$qd ISO C%3$d derleyicilerin desteklemesi gereken uzunluk %2$qd den büyük"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "sabit ifadesinde taÅŸma"
@@ -22543,7 +22584,7 @@ msgstr "aritmetikte üye işlev göstericisi kullanılmış"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "%qD adresi, daima %<true%> olarak deÄŸerlendirilecek"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "atamayı sarmalayan parantezler muhtemelen doğruluk değeri olarak kullanılmış"
@@ -22987,40 +23028,40 @@ msgstr "%qE özniteliği %qE için yoksayıldı"
msgid "invalid vector type for attribute %qE"
msgstr "%qE özniteliği için vektör türü geçersiz"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "vektör boyutu bileşen boyutunun katlarından biri değil"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "vektör boyutu sıfır"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "vektör elemanlarının sayısı ikinin üstel katlarından biri değil"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "bir prototip olmayanda argümansız null olmayan öznitelik"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "null olmayan argüman geçersiz sayıda terim içeriyor (%lu. argüman)"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "null olmayan argüman aralığın dışında sayıda terim içeriyor (%lu. argüman, %lu terim)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "null olmayan argüman gösterici olmayan terime başvuruyor (%lu. argüman, %lu. terim)"
@@ -23060,12 +23101,12 @@ msgstr "%qE özniteliği isimli argümanları olan prototipler gerektirir"
msgid "%qE attribute only applies to variadic functions"
msgstr "%qE özniteliği sadece değişkin işlevlere uygulanır"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "istenen konum bir tamsayı sabit değil"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "istenen konum sıfırdan küçük"
@@ -23126,7 +23167,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "bit-alanı yapısının %qD üyesinin adresi alınmaya çalışılıyor"
@@ -23908,88 +23949,88 @@ msgid "ignoring #pragma %s %s"
msgstr "%H#pragma %s %s yoksalıyor"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
#| msgid "%Hstray %<@%> in program"
msgid "stray %<@%> in program"
msgstr "%Hkodda serseri %<@%>"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "programda serseri %qs"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "%c sonlandırma karakteri eksik"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "programda serseri %qc"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "programda serseri %<\\%o%>"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "bu ondalık sabit sadece ISO C90'da unsigned'dir"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "bu ondalık sabit sadece ISO C90'da unsigned olurdu"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for %qs type"
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "tamsayı sabit %qs türü için oldukça büyük"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
#| msgid "storage size not constant"
msgid "unsuffixed float constant"
msgstr "saklama boyutu sabit deÄŸil"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, fuzzy, gcc-internal-format
#| msgid "floating constant exceeds range of %<%s%>"
msgid "floating constant exceeds range of %qT"
msgstr "gerçel sayı sabit %<%s%> aralığı dışında"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, fuzzy, gcc-internal-format
#| msgid "floating constant misused"
msgid "floating constant truncated to zero"
msgstr "gerçel sayı sabit yanlış kullanılmış"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, fuzzy, gcc-internal-format
#| msgid "misplaced %<@%D%> Objective-C++ construct"
msgid "repeated %<@%> before Objective-C string"
msgstr "yanlış yere konmuş %<@%D%> Nesnel-C++ oluşumu"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "geleneksel C dizge sabitlerin birleÅŸtirilmesine izin vermez"
@@ -24010,7 +24051,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid type for iteration variable %qE"
@@ -24022,24 +24063,24 @@ msgstr "%qE özniteliği için vektör türü geçersiz"
msgid "%qE is not initialized"
msgstr "ilklendirici yok"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
#| msgid "invalid conditional operand"
msgid "invalid controlling predicate"
msgstr "koşullu terim geçersiz"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
#| msgid "assignment suppression"
msgid "missing increment expression"
msgstr "atama engelleme"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
#| msgid "invalid truth-value expression"
msgid "invalid increment expression"
@@ -24931,7 +24972,7 @@ msgstr "%2$s için L%1$d arabellek gecikmesi bilinmiyor"
msgid "bad value %qs for -mmemory-latency"
msgstr "-mmemory-latency için değer %qs hatalı"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -25118,55 +25159,55 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to functions"
msgid "%qE attribute only applies to functions"
msgstr "%qs özniteliği sadece işlevlere uygulanır"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "yığıttaki parametrenin gerçek konumu hesaplanamıyor"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
#| msgid "argument %qd is not a constant"
msgid "argument must be a constant"
msgstr "%qd argümanı bir sabit değil"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "seçici bir anlık değer olmalı"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "mask bir anlık değer olmalı"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "yüksek yazmaçları çekmeye elverişli düşük yazmaç yok"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "sistem kesmesi Servis Ä°ÅŸlemleri Thumb kipinde kodlanamaz"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -25181,101 +25222,120 @@ msgstr "ilklendirilmiÅŸ deÄŸiÅŸken %q+D dllimport imli"
msgid "static variable %q+D is marked dllimport"
msgstr "statik deÄŸiÅŸken %q+D dllimport imli"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-G and -static are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-G ve -static birlikte kullanılamaz"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "%qD cannot have default arguments"
+msgid "%qs function cannot have arguments"
+msgstr "%qD öntanımlı argümanlara sahip olamaz"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "Function does not return a value"
+msgid "%qs function cannot return a value"
+msgstr "iÅŸlev bir deÄŸer ile donmuyor"
+
+#: config/avr/avr.c:583
+#, fuzzy, gcc-internal-format
+#| msgid "%qs appears to be a misspelled signal handler"
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs imlası bozuk bir sinyal eylemcisi gibi görünüyor"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "Tamsayı argümanları aktarmada kullanılan yazmaçların sayısı"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D not supported"
msgid "writing to address space %qs not supported"
msgstr "%q+D zayıf bildirimi desteklenmiyor"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs imlası bozuk bir kesme eylemcisi gibi görünüyor"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs imlası bozuk bir sinyal eylemcisi gibi görünüyor"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ".noinit alanına sadece ilklendirilmiş değişkenler yerleştirilebilir"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "program bellek alanına sadece ilklendirilmiş değişkenler yerleştirilebilir"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU `%qs' sadece sembolik çevirici için desteklenir"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of module in string constant"
msgid "%s expects a compile time integer constant"
msgstr "Dizge sabitinde umulmadık modül sonu"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -25408,70 +25468,70 @@ msgstr "':' değiştirici kullanımı geçersiz"
msgid "internal error: bad register: %d"
msgstr "iç hata: hatalı yazmaç: %d"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "iç hata: yan etkili komut main etkisi oluşturuyor"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "bilinmeyen cc_attr deÄŸeri"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "iç hata: hatalı terimli cris_side_effect_mode_ok"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d, 0 ile %d arasında olmadığından kullanışsız"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "-march= veya -mcpu= seçenekleri ile belirtilen CRIS sürüm belirtimi bilinmiyor: %s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "-mtune= seçeneği ile belirtilen CRIS işlemci sürümü belirtimi bilinmiyor: %s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC ve -fpic bu yapılandırmada desteklenmiyor"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "-g seçeneği, -maout ve -melinux ile geçersiz"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "Unknown src"
msgid "unknown src"
msgstr "Bilinmeyen kaynak"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "Unknown dest"
msgid "unknown dest"
msgstr "Bilinmeyen hedef"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "yığıt kapsamı çok büyük: %d bayt"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
#| msgid "emitting PIC operand, but PIC register isn't set up"
msgid "emitting PIC operand, but PIC register isn%'t set up"
@@ -25636,452 +25696,452 @@ msgstr "PCH dosyası uzatılamıyor: %m"
msgid "can%'t set position in PCH file: %m"
msgstr "PCH dosyası içinde konum belirlenemiyor: %m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -mtune= switch"
msgid "bad value (%s) for %stune=%s %s"
msgstr "-mtune= seçeneğinin değeri (%s) hatalı"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, fuzzy, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "%2$s bit kipinde %1$qs kod modeli desteklenmiyor"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %qs not supported in x32 mode"
msgstr "PIC kipinde %s kod modeli desteklenmiyor"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %s does not support PIC mode"
msgstr "PIC kipinde %s kod modeli desteklenmiyor"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s bu yapılandırmada desteklenmiyor"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "%i bitlik kip bunun içinde derlenmiş değil:"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "Seçtiginiz işlemci x86-64 komutlarını desteklemiyor."
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -march= switch"
msgid "bad value (%s) for %sarch=%s %s"
msgstr "-march= seçeneğinin değeri (%s) hatalı"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d, 0 ile %d arasında değil"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "-fprefetch-loop-arrays not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "bu hedefte -fprefetch-loop-arrays desteklenmiyor"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d, %d ile 12 arasında değil"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred-stack-boundary=%d, %d ile 12 arasında değil"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-msseregparm used without SSE enabled"
msgid "%ssseregparm%s used without SSE enabled"
msgstr "-msseregparm SSE etkin değilken kullanılmış"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "SSE komut kümesi iptal edildi, 387 aritmetiği kullanılıyor"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "387 komut kümesi iptal edildi, SSE aritmetiği kullanılıyor"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "birbirlerini etkilemeyenler tabloları doğruluk için ya bir çerçeve göstericisi ya da -maccumulate-outgoing-args gerektirir"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "birbirlerini etkilemeyenler tabloları doğruluk için ya bir çerçeve göstericisi ya da -maccumulate-outgoing-args gerektirir"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unknown -m%s= option specified: '%s'"
msgid "unknown option for -mrecip=%s"
msgstr "bilinmeyen -m%s= seçeneği belirtilmiş: '%s'"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ACCESS specification at %L was already specified"
msgid "option(\"%s\") was already specified"
msgstr "ACCESS belirtimi %L'de zaten belirtilmiÅŸ"
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "fastcall ve regparm öznitelikleri uyumlu değil"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "regparam and thiscall attributes are not compatible"
msgstr "fastcall ve stdcall öznitelikleri uyumsuz"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%qE attribute requires an integer constant argument"
msgstr "%qs özniteliği bir tamsayı sabit argüman gerektirir"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
#| msgid "argument to %qs attribute larger than %d"
msgid "argument to %qE attribute larger than %d"
msgstr "%qs özniteliğine argüman %d den büyük"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "fastcall ve cdecl öznitelikleri uyumsuz"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "fastcall ve stdcall öznitelikleri uyumsuz"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and thiscall attributes are not compatible"
msgstr "fastcall ve stdcall öznitelikleri uyumsuz"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "stdcall ve cdecl öznitelikleri uyumsuz"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "fastcall ve stdcall öznitelikleri uyumsuz"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "stdcall and thiscall attributes are not compatible"
msgstr "fastcall ve stdcall öznitelikleri uyumsuz"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "cdecl and thiscall attributes are not compatible"
msgstr "fastcall ve stdcall öznitelikleri uyumsuz"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "%qE attribute is used for none class-method"
msgstr "%qE özniteliği sınıf türleri dışında yoksayılır"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, fuzzy, gcc-internal-format
#| msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "SSE/SSE2 etkin değilken sseregparm öznitelikli %qD çağrısı"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, fuzzy, gcc-internal-format
#| msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "SSE/SSE2 etkin değilken sseregparm öznitelikli %qT çağrısı"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, fuzzy, gcc-internal-format
#| msgid "-march=%s is not compatible with the selected ABI"
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "-march=%s seçilen ABI ile uyumsuz"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, fuzzy, gcc-internal-format
#| msgid "MMX vector argument without MMX enabled changes the ABI"
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "MMX etkin değilken MMX vektör argümanı ABI'yi değiştirir"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "SSE etkin değilken SSE yazmaç dönüşü"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "SSE etkin değilken SSE yazmaç argümanı"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, fuzzy, gcc-internal-format
#| msgid "SSE register return with SSE disabled"
msgid "x87 register return with x87 disabled"
msgstr "SSE etkin değilken SSE yazmaç dönüşü"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "SSE etkin değilken SSE vektör argümanı ABI'yi değiştirir"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "MMX etkin değilken MMX vektör argümanı ABI'yi değiştirir"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "SSE etkin değilken SSE vektör dönüşü ABI'yi değiştirir"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "MMX etkin değilken MMX vektör dönüşü ABI'yi değiştirir"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 does not support flexible array members"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "ISO C90 esnek dizi üyelerini desteklemez"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "ek yazmaçların yüksek yarıları yok"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "ek yazmaç için desteklenmeyen terim boyutu"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid operand code '%c'"
msgid "non-integer operand used with operand code '%c'"
msgstr "terim kodu `%c' geçersiz"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 2-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
#| msgid "shift must be an immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "shift bir anlık değer olmalı"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the third argument must be an 8-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 1-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
#| msgid "argument 3 must be a 4-bit unsigned literal"
msgid "the last argument must be a 4-bit immediate"
msgstr "3. argüman 4 bitlik bir işaretsiz sabit olmalı"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 1-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 5-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the next to last argument must be an 8-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 8-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 32-bit immediate"
msgstr "1. argüman 5 bitlik bir işaretli sabit olmalı"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "seçici 0..%wi aralığında bir tamsayı sabit olmalı"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
#| msgid "mask must be an immediate"
msgid "last argument must be an immediate"
msgstr "mask bir anlık değer olmalı"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to variables"
msgid "%qE attribute only available for 32-bit"
msgstr "%qs özniteliği sadece değişkenlere uygulanır"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
#| msgid "argument of %qs attribute is not a string constant"
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "%qs özniteliğinin argümanı bir dizge sabiti değil"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "fastcall ve stdcall öznitelikleri uyumsuz"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
#| msgid "%qs incompatible attribute ignored"
msgid "%qE incompatible attribute ignored"
@@ -26160,19 +26220,19 @@ msgstr "%Jadres alanı özelliği işlevler için belirtilemez"
msgid "%qE attribute requires a string constant argument"
msgstr "%qs özniteliği bir tamsayı sabit argüman gerektirir"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "-mfixed-range için değer YAZMAC1-YAZMAC2 şeklinde olmalı"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s aralığı boş"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
#| msgid "argument of %qs attribute is not a string constant"
msgid "version attribute is not a string"
@@ -26242,7 +26302,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "bu platformda %qE özniteliği desteklenmiyor"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not an integer constant"
msgid "%qE attribute argument not an integer constant"
@@ -26305,7 +26365,7 @@ msgstr "çok sayıda işlev türü öznitelik belirtilmiş"
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "yığıt sınırlama ifadesi desteklenmiyor"
@@ -26868,27 +26928,27 @@ msgstr "MMIX Dahili: %s bir biti kaydırılabilir tamsayı değil"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "PIC kod üretimi uyarlanabilir çalışma anı modelinde desteklenmez"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "PIC kod üretimi hızlı dolaylı çağrılar ile uyumlu değildir"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "-g sadece bu işlemci üzerinde GAS kullanıldığında desteklenir,"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "-g seçeneği iptal edildi"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr "hizalama (%u) %s için genel ortak veri azami hizalamasını aşıyor. %u kullanılıyor"
@@ -27335,88 +27395,88 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "yığıt çerçevesi çok büyük"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "bu ABI için 64 bitlik profilleme kodu yok"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "AltiVec türlerde %<long double%> kullanımı geçersiz"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "AltiVec türlerde mantıksal türlerin kullanımı geçersiz"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "AltiVec türlerde %<complex%> kullanımı geçersiz"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, fuzzy, gcc-internal-format
#| msgid "use of boolean types in AltiVec types is invalid"
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "AltiVec türlerde mantıksal türlerin kullanımı geçersiz"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, fuzzy, gcc-internal-format
#| msgid "use of %<long%> in AltiVec types is invalid for 64-bit code"
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "AltiVec türlerde %<long%> kullanımı 64 bitlik kod için geçersiz"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "AltiVec türlerde %<long%> kullanımı önerilmiyor; %<int%> kullanın"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, fuzzy, gcc-internal-format
#| msgid "use of %<long long%> in AltiVec types is invalid"
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "AltiVec türlerde %<long long%> kullanımı geçersiz"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, fuzzy, gcc-internal-format
#| msgid "use of %<double%> in AltiVec types is invalid"
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "AltiVec türlerde %<double%> kullanımı geçersiz"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "%<::%> kullanımı geçersiz"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%<#pragma%> is not allowed here"
msgid "%s\"%s\"%s is not allowed"
msgstr "%<#pragma%> burada kullanılamaz"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "spec '%s' is invalid"
msgid "%s\"%s\"%s is invalid"
@@ -27474,12 +27534,12 @@ msgstr "trampolines desteklenmiyor"
msgid "-m64 not supported in this configuration"
msgstr "-m64 bu yapılandırmada desteklenmiyor"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 seçeneği PowerPC64 mimarisi gerektirir"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
#| msgid "Emit code compatible with TI tools"
msgid "-mcmodel incompatible with other toc options"
@@ -27497,64 +27557,64 @@ msgstr "TI araçları ile uyumlu kod üretilir"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET desteklenmiyor"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "-mcall-%s için değer hatalı"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "-msdata=%s için değer hatalı"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable ile -msdata=%s uyumsuz"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s ile -msdata=%s uyumsuz."
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s ile -mcall-%s uyumsuz."
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable ile -mno-minimal-toc uyumsuz."
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable ile -mcall-%s uyumsuz."
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC ile -mcall-%s uyumsuz."
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc kıymetli baytın başta olduğu sıralamaya sahip olmalı"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-msecure-plt çeviriciniz tarafından desteklenmiyor"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s bu yapılandırmada desteklenmiyor"
@@ -27668,59 +27728,59 @@ msgstr "olağandışılık yakalama (iç) hatası yüzünden -fschedule-insns yo
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "birbirlerini etkilemeyenler tabloları doğruluk için ya bir çerçeve göstericisi ya da -maccumulate-outgoing-args gerektirir"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs bu alt hedef tarafından desteklenmiyor"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to interrupt functions"
msgid "%qE attribute only applies to interrupt functions"
msgstr "%qs özniteliği sadece kesme işlevlerine uygulanır"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute is not supported on this platform"
msgid "%qE attribute is supported only for SH2A"
msgstr "bu platformda %qE özniteliği desteklenmiyor"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "kesme yakalayıcı özniteliği -m5-compact ile uyumlu değil"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to functions"
msgid "%qE attribute only applies to SH2A"
msgstr "%qs özniteliği sadece işlevlere uygulanır"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not an integer constant"
msgid "%qE attribute argument should be between 0 to 255"
msgstr "%qs öznitelik argümanı bir tamsayı sabit değil"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not a string constant"
msgid "%qE attribute argument not a string constant"
msgstr "%qs öznitelik argümanı bir dizge sabit değil"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 bir çağrı taşırmalı yazmaç olarak kullanılabilmeyi gerektirir"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
#| msgid "Need a second call-clobbered general purpose register"
msgid "need a second call-clobbered general purpose register"
msgstr "İkinci bir çağrı taşırmalı genel amaçlı yazmaç gerekir"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, fuzzy, gcc-internal-format
#| msgid "Need a call-clobbered target register"
msgid "need a call-clobbered target register"
@@ -28086,43 +28146,43 @@ msgstr "%<-gnat%> yerine yanlış olarak %<-gant%> kullanılmış"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "%qs özniteliği yoksayıldı"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute requires prototypes with named arguments"
msgid "%qs attribute requires prototypes with named arguments"
msgstr "%qE özniteliği isimli argümanları olan prototipler gerektirir"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute only applies to variadic functions"
msgid "%qs attribute only applies to variadic functions"
msgstr "%qE özniteliği sadece değişkin işlevlere uygulanır"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored"
msgid "%qE attribute has no effect"
msgstr "%qE özniteliği yoksayıldı"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid vector type for attribute %qs"
msgstr "%qE özniteliği için vektör türü geçersiz"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to variables"
msgid "attribute %qs applies to array types only"
msgstr "%qs özniteliği sadece değişkenlere uygulanır"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid element type for attribute %qs"
@@ -28140,7 +28200,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " %qT türünden %qT türüne dönüşüm için seçiliyor,"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -28437,7 +28497,7 @@ msgstr "%qT türünden %qT türüne dönüşüm geçersiz"
msgid "invalid conversion from %qT to %qT"
msgstr "%qT türünden %qT türüne dönüşüm geçersiz"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " %2$qD işlevinin %1$P argümanının ilklendirilmesi"
@@ -28447,200 +28507,200 @@ msgstr " %2$qD işlevinin %1$P argümanının ilklendirilmesi"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr " %2$qD işlevinin %1$P argümanının ilklendirilmesi"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
#| msgid "cannot bind rvalue %qE to %qT"
msgid "cannot bind %qT lvalue to %qT"
msgstr "sağ taraf değeri %qE, %qT türüne bağlanamaz"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "%qE bitalanı %qT türüne bağlanamaz"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "%qE paketli alanı %qT türüne bağlanamaz"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "sağ taraf değeri %qE, %qT türüne bağlanamaz"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
#| msgid "class %qT will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "%qT sınıfı GCC'nin gelecek sürümünde neredeyse boş sayılacak"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
#| msgid "cannot pass objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "POD olmayan %q#T türünün nesneleri %<...%> üzerinden aktarılamaz; çalışma anında çağrı çıkış yaptıracak"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
#| msgid "cannot receive objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "POD olmayan %q#T türünün nesneleri %<...%> üzerinden alınamaz; çalışma anında çağrı çıkış yaptıracak"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for %q#D"
msgid "recursive evaluation of default argument for %q#D"
msgstr "%q#D için öntanımlı argümanın yeniden tanımı"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "%2$qD işlevinin %1$d. parametresi için öntanımlı argüman henüz çözümlenmedi"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "işlev çağrısı argümanı bir biçim özniteliği için aday olabilir"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, fuzzy, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "%2$q#D işlevinin %<this%> parametresi olarak %1$qT aktarımı niteleyicileri iptal ediyor"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT erişilebilir bir %qT tabanı değil"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, fuzzy, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "%2$s olarak %1$qD bildirimi"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
#| msgid " in call to %qD"
msgid " in call to %q+D"
msgstr " %qD çağrısında"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "java arabiriminde %qT türünde class$ alanı bulunamadı"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "işlev olmayan %qD ye çağrı"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
#| msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "%<%T::%s(%A)%#V%> çağrısı ile eşleşen işlev yok"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "%<%T::%s(%A)%#V%> çağrısı ile eşleşen işlev yok"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "aşırı yüklü %<%s(%A)%> çağrısı belirsiz"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "üye işlev %qD nesne olmaksızın çağrılamaz"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "%qT aktarımı %qT türünü %qT türü üzerinden seçiyor"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " %qD çağrısında"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "%qD %qD üzerinden,"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " %qT türünden %qT türüne dönüşüm için seçiliyor,"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " çünkü argüman için dönüşüm süreci daha iyi"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
#| msgid "default argument specified in explicit specialization"
msgid "default argument mismatch in overload resolution"
msgstr "doğrudan özelleştirmede öntanımlı argüman belirtilmiş"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 1: %q+#F"
msgstr "aday: %+#D"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 2: %q+#F"
msgstr "aday: %+#D"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "İlkinin en kotü dönüşümü ikincisinden daha iyi olsa bile ISO C++ bunlar belirsizdir der:"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "could not convert %qE to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "%qE %qT türüne dönüştürülemedi"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
#| msgid "invalid initialization of non-const reference of type %qT from a temporary of type %qT"
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "%qT türündeki sabit olmayan başvurunun geçici %qT türünden ilklendirilmesi geçersiz"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "%qT türündeki başvurunun %qT türündeki ifadeden ilklendirilmesi geçersiz"
@@ -28856,228 +28916,228 @@ msgstr "%q+D alanı ile geçersiz olarak işlev türü bildirildi"
msgid "field %q+D invalidly declared method type"
msgstr "%q+D alanı ile geçersiz olarak yöntem türü bildirildi"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, fuzzy, gcc-internal-format
#| msgid "ignoring packed attribute on unpacked non-POD field %q+#D"
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "paketsiz POD olmayan %q+#D alanı üzerinde paketli öznitelik yoksayılıyor"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "%q+#D alanı sınıf ile aynı isimde"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T gösterici veri üyeleri içeriyor"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " ama %<%T(const %T&)%>ye deÄŸiÅŸtirilmiyor"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " ya da %<operator=(const %T&)%> içeriyor"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " ama %<operator=(const %T&)%>ye deÄŸiÅŸtirilmiyor"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "boş %qT tabanının göreli konumu ABI-uyumlu olmayabilir ve bu GCC'nin gelecek sürümünde değişebilir"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "%qT sınıfı GCC'nin gelecek sürümünde neredeyse boş sayılacak"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "sanal olmayan yöntem %q+D için ilklendirici belirtilmiş"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function %qD"
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "static olmayan üye işlev %qD kullanımı geçersiz"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a base of %qT"
msgid "%q+T is not literal because:"
msgstr "%qT %qT tabanında değil"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "taban sınıf %q#T bir sanal olmayan yıkıcıya sahip"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " base class %qT of %q+T is non-literal"
msgstr "taban sınıf %q#T bir sanal olmayan yıkıcıya sahip"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static data member %q+D"
msgid " non-static data member %q+D has non-literal type"
msgstr "static olmayan veri üyesi %q+D kullanımı geçersiz"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "bir kurucu olmaksızın sınıf içinde static olmayan başvuru %q+#D"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "bir kurucu olmaksızın sınıf içinde static olmayan sabit üye %q+#D"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "sanal %qT tabanının göreli konumu ABI-uyumlu değil ve bu GCC'nin gelecek sürümünde değişebilir"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "doğrudan taban %qT belirsizlikten dolayı %qT içinde erişilebilir değil"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "sanal taban %qT belirsizlikten dolayı %qT içinde erişilebilir değil"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "%qT türüne atanan boyut ABI-uyumlu olmayabilir ve bu GCC'nin gelecek sürümünde değişebilir"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "%qD alanının göreli konumu ABI-uyumlu olmayabilir ve bu GCC'nin gelecek sürümünde değişebilir"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "%q+D alanının göreli konumu ABI-uyumlu değil ve bu GCC'nin gelecek sürümünde değişebilir"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D alanı GCC'nin gelecek sürümünde taban sınıfların farklı yere konmasına sebep olabilecek boş sınıfları içeriyor"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "boş %qT sınıfından türetilmiş sınıf yerleşimi GCC'nin gelecek sürümünde değişebilir"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "%q#T sınıfın yeniden tanımı"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, fuzzy, gcc-internal-format
#| msgid "%q#T has virtual functions but non-virtual destructor"
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T sanal olmayan kuruculu sanal işlevler içeriyor"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class %qT does not have any field named %qD"
msgid "type transparent class %qT does not have any fields"
msgstr "sınıf %qT %qD isminde alan içermiyor"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
#| msgid "type %qs has virtual member functions"
msgid "type transparent class %qT has virtual functions"
msgstr "%qs türü sanal üye işlevlere sahip"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "yapı tamamlanmaya çalışılırken önceki ayrıştırma hatalarından dolayı kesildi"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "dil dizgesi %<\"%E\"%> tanınmıyor"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, fuzzy, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "%2$qT türüne dönüşüme dayalı aşırı yüklü %1$qD işlevi çözümlenemiyor"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "%qD işlevinin %q#T türüne dönüşümü için eşleşme yok"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "aşırı yüklü %qD işlevinin %q#T türüne dönüşümü belirsiz"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "%qD üyesine gösterici varsayılıyor"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(bir üye göstericisi sadece %<&%E%> ile şekillendirilebilir)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "tür bilgisi yetersiz"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "%qE ifadesi %qT türünden %qT türüne dönüştürülemez"
@@ -29087,12 +29147,12 @@ msgstr "%qE ifadesi %qT türünden %qT türüne dönüştürülemez"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "%q#D yeniden bildirimi"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "%qD'nin %q+#D üzerindeki anlamını değişiyor"
@@ -29113,7 +29173,7 @@ msgstr "içi boş %qT türünden %qT türüne dönüşüm yapılamaz"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "%qE ifadesinin %qT türünden %qT türüne dönüşümü belirsiz"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "array bound is not an integer constant"
msgid "zero as null pointer constant"
@@ -29148,7 +29208,7 @@ msgstr "%qT türündeki sabit olmayan başvurunun geçici %qT türünden ilklend
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "%qT türünden %qT türüne dönüşüm niteleyicileri iptal ediyor"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "%qT türünden %qT türüne dönüşüm gösterici başvurusunu kaldırmaz"
@@ -29583,7 +29643,7 @@ msgstr "önceki %q+#D bildirimi"
msgid "declaration of template %q#D"
msgstr "%q#D ÅŸablon bildirimi"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "önceki %q+#D bildirimiyle çelişiyor"
@@ -29635,7 +29695,7 @@ msgstr "buradaki isim alanı bildirimi %q+D ile çelişiyor"
msgid "%q+#D previously defined here"
msgstr "%q+#D evvelce burada tanımlanmış"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "%q+#D evvelce burada bildirilmiÅŸ"
@@ -29765,7 +29825,7 @@ msgstr "%q+D'nin yerel-evreli bildirimi yerel-olmayan-evreli bildirimi izliyor"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "%q+D'nin yerel-olmayan-evreli bildirimi yerel-evreli bildirimi izliyor"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D"
msgid "redeclaration of %q#D"
@@ -29840,7 +29900,7 @@ msgstr "wchar_t isimli yafta"
msgid "%qD is not a type"
msgstr "%qD bir ÅŸablon deÄŸil"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "%qD şablon parametreleri olmaksızın kullanılmış"
@@ -29979,130 +30039,130 @@ msgstr "typedef bildirimi parametre bildiriminde geçersiz"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "dosya etki alanı boş bildiriminde %<register%>"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "attribute ignored in declaration of %q+#T"
msgid "attribute ignored in declaration of %q#T"
msgstr "%q+#T bildiriminde öznitelik yoksayıldı"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, fuzzy, gcc-internal-format
#| msgid "attribute for %q+#T must follow the %qs keyword"
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "%q+#T için öznitelik %qs anahtar sözcüğünü izlemeli"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute can only be applied to class definitions"
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "%qE özniteliği sadece sınıf tanımlarına uygulanabilir"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
#| msgid "typedef %qD is initialized (use __typeof__ instead)"
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD ilklendirilmiş (yerine __typeof__ kullanın)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "%q#D hem %<extern%> olarak bildirilmiÅŸ hem de ilklendirilmiÅŸ"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, fuzzy, gcc-internal-format
#| msgid "function %q+D definition is marked dllimport"
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "%q+D işlevinin tanımı dllimport imli"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D bildirimi %q#T bağlamının bir static üyesi değildir"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ %<%T::%D%>nin %<%T::%D%> olarak tanımlanmasına izin vermez"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "açıkça özelleştirilmiş sınıfın üye tanımında şablon başlığına izin verilmez"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "%qD ilklendirmesi yinelenmiÅŸ"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "sınıf dışında %q#D bildirimi bir tanım değildir"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "%q#D değişkeni ilklendirilmiş ama içi boş türde"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "%q#D dizisinin elemanları içi boş türde"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D has %<extern%> and is initialized"
msgid "declaration of %q#D has no initializer"
msgstr "%q#D hem %<extern%> olarak bildirilmiÅŸ hem de ilklendirilmiÅŸ"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "küme %q#D içi boş türde olup tanımlı olamaz"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD baÅŸvuru olarak bildirilmiÅŸ ama ilklendirilmemiÅŸ"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "name used in a GNU-style designated initializer for an array"
msgstr "%qD ismi bir dizi için GNU tarzında tasarlanmış bir ilklendiricide kullanılmış"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "alelade olmayan ilklendiriciler desteklenmiyor"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "%qD ismi bir dizi için GNU tarzında tasarlanmış bir ilklendiricide kullanılmış"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "ilklendirici %qD bildiriminin boyutunu saptayamıyor"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "%qD bildiriminde dizi boyutu eksik"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "sıfır boyutlu dizi %qD"
@@ -30110,421 +30170,421 @@ msgstr "sıfır boyutlu dizi %qD"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t known"
msgid "storage size of %qD isn%'t known"
msgstr "%q+D nin saklama uzunluÄŸu bilinmiyor"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t constant"
msgid "storage size of %qD isn%'t constant"
msgstr "%q+D nin saklama geniÅŸligi sabit deÄŸil"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
#| msgid "sorry: semantics of inline function static data %q+#D are wrong (you'll wind up with multiple copies)"
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "özür: satıriçi işlev static verisi %q+#D'nin kodlaması yanlış (sizi çoklu kopyalara sürükleyecek)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, fuzzy, gcc-internal-format
#| msgid "%J you can work around this by removing the initializer"
msgid " you can work around this by removing the initializer"
msgstr "%J ilklendiriciyi kaldırarak bunun olurunu bulabilirsiniz"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "ilklendirilmemiÅŸ sabit %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
#| msgid "type %qs has a user-defined constructor"
msgid "%q#T has no user-provided default constructor"
msgstr "%qs türü bir kullanıcı tanımlı yapıcıya sahip"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, fuzzy, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "%2$qT türündeki bir vektör için ilklendirici olarak %1$qT türü geçersiz"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "%qT için ilklendirici {} içinde olmalı"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "%qD ismi bir dizi için GNU tarzında tasarlanmış bir ilklendiricide kullanılmış"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT %qD isminde statik olmayan bir üyeye sahip değil"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "%qT için ilklendirici sayısı çok fazla"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "%qT için skalar ilklendiriciyi kuşatan parantezler"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "%qT için ilklendiriciyi çevreleyen parantezler yok"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
#| msgid "elements of array %q#D have incomplete type"
msgid "elements of array %q#T have incomplete type"
msgstr "%q#D dizisinin elemanları içi boş türde"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "deÄŸiÅŸken-boyutlu nesne %qD ilklendirilmemiÅŸ olabilir"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 forbids compound literals"
msgid "variable-sized compound literal"
msgstr "ISO C90 bileÅŸik sabitlere izin vermez"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "%qD has incomplete type"
msgid "%q#D has incomplete type"
msgstr "%qD içi boş türde"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, fuzzy, gcc-internal-format
#| msgid "excess elements in union initializer"
msgid "scalar object %qD requires one element in initializer"
msgstr "union ilklendiricide gereğinden fazla öğe"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, fuzzy, gcc-internal-format
#| msgid "%qD must be initialized by constructor, not by %<{...}%>"
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "%qD bir kurucu ile ilklendirilmeli, %<{...}%> ile deÄŸil"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, fuzzy, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "parantezli dizge sabiti %2$qE ile ilklendirilmiÅŸ %1$qD dizgesi"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "kuruculu statik üye için ilklendirici geçersiz"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ISO C++ sabit olmayan statik %qD üyesinin sınıf içi ilklendirmesine izin vermez"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(bir sınıf dışı ilklendirme gerekli)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "bildirim içinde atama (ilklendirme değil)"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "önceki %q#D tür bildirimini gölgeliyor"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot be thread-local because it has non-POD type %qT"
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD evreye yerel olamaz çünkü POD olmayan %qT türünde"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD evreye yerel olup özdevimli ilklendirilemez"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qD bildirilirken bir sabit olmayan ifade tarafından ilklendirilemez"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, fuzzy, gcc-internal-format
#| msgid "definition of static data member %q+D of dllimport'd class"
msgid "non-static data member %qD has Java class type"
msgstr "dllimport'lu sınıfın %q+D durağan veri üyesinin tanımı"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "%q#D iÅŸlevi bir deÄŸiÅŸken gibi ilklendirilmiÅŸ"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of %qD"
msgid "initializer fails to determine size of %qT"
msgstr "ilklendirici %qD bildiriminin boyutunu saptayamıyor"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in %qD"
msgid "array size missing in %qT"
msgstr "%qD bildiriminde dizi boyutu eksik"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array %qD"
msgid "zero-size array %qT"
msgstr "sıfır boyutlu dizi %qD"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "yabancı sınıf %qT için yıkıcı, bir üye olamaz"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "yabancı sınıf %qT için kurucu, bir üye olamaz"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD bir %<virtual%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD nesnesi bir %<inline%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "%2$s bildirimindeki %<const%> ve %<volatile%> işlev belirtecleri %1$qD için geçersiz"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD bir %<virtual%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD nesnesi bir %<inline%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "%2$s bildirimindeki %<const%> ve %<volatile%> işlev belirtecleri %1$qD için geçersiz"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD bir %<virtual%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> type"
msgstr "%qD nesnesi bir %<inline%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "%2$s bildirimindeki %<const%> ve %<volatile%> işlev belirtecleri %1$qD için geçersiz"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD bir %<virtual%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> field"
msgstr "%qD nesnesi bir %<inline%> %s olarak bildirilmiÅŸ"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "%2$s bildirimindeki %<const%> ve %<volatile%> işlev belirtecleri %1$qD için geçersiz"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D bir kardeÅŸ olarak bildirilmiÅŸ"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D bir olağandışılık belirtimi ile bildirilmiş"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "%qD tanımı %qT bağlamını kapsayan isim alanınında değil"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "statik üye işlev %q#D tür niteleyicilerle bildirilmiş"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "%qD doğrudan özelleştirmesinin kardeş bildirimde tanımı"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "birincil şablon bildiriminde %qD şablon kimliğinin kullanımı geçersiz"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "öntanımlı argümanlara kardeş şablon özelleştirmesi %qD bildiriminde izin verilmez"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "kardeş şablon özelleştirmesi %qD bildiriminde %<inline%> kullanılamaz"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "%<::main%> bir ÅŸablon olarak bildirilemez"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "%<::main%> inline olarak bildirilemez"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "%<::main%> static olarak bildirilemez"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D niteliksiz türe başvurmuyor, dolasıyla ilintileme için kullanılmaz"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "%2$qL ilintili önceki %1$q+#D bildirimi"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
#| msgid "%smember function %qD cannot have cv-qualifier"
msgid "static member function %qD cannot have cv-qualifier"
msgstr "%süye işlev %qD cv niteleyicisini içeremez"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, fuzzy, gcc-internal-format
#| msgid "%smember function %qD cannot have cv-qualifier"
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "%süye işlev %qD cv niteleyicisini içeremez"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
#| msgid "template with C linkage"
msgid "literal operator with C linkage"
msgstr "C ilintilemeli ÅŸablon"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "invalid option argument %qs"
msgid "%qD has invalid argument list"
msgstr "seçenek argümanı %qs geçersiz"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "%qD must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "%qD static olmayan bir üye işlev olmalıdır"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> %<int%> döndürmeli"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "dolaylı bildirimli %qD tanımı"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared %qD"
msgid "definition of explicitly-defaulted %q+D"
msgstr "dolaylı bildirimli %qD tanımı"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D evvelce burada tanımlanmış"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, fuzzy, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "sınıf %2$qT içinde bildirilmiş %1$q#D diye bir üye işlev yok"
@@ -30533,949 +30593,949 @@ msgstr "sınıf %2$qT içinde bildirilmiş %1$q#D diye bir üye işlev yok"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "tümleyen olmayan %qT türündeki statik veri üyesinin sınıf içi ilklendirmesi geçersiz"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "tümleyen olmayan %qT türündeki statik veri üyesinin sınıf içi ilklendirmesi geçersiz"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "tümleyen olmayan %qT türündeki statik veri üyesinin sınıf içi ilklendirmesi geçersiz"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "tümleyen olmayan %qT türündeki statik veri üyesinin sınıf içi ilklendirmesi geçersiz"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ sabit olmayan statik %qD üyesinin sınıf içi ilklendirmesine izin vermez"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, fuzzy, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ tümlemeyen %2$qT türündeki %1$qD üye sabitinin ilklendirilmesine izin vermez"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "%qD dizisinin boyutu tümlemeyen %qT türünde"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "dizi boyutu tümlemeyen %qT türünde"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "%qD dizisinin boyutu negatif"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "dizi boyutu negatif"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C++ da sıfır boyutlu %qD dizisi yasaktır"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++'da sıfır boyutlu dizi yasaktır"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "%qD dizisinin boyutu bir tümleyen sabit ifadesi değil"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "dizi boyutu bir tümleyen sabit ifadesi değil"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array %qD"
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ deÄŸiÅŸken boyutlu %qD dizisine izin vermez"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array"
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ deÄŸiÅŸken boyutlu diziye izin vermez"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "dizi boyutunda taÅŸma"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of %<auto%>"
msgstr "iÅŸlev dizisi olarak %qs bildirimi"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of voids"
msgid "declaration of %qD as array of void"
msgstr "void dizisi olarak %qs bildirimi"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of void"
msgstr "%qT dizisi oluşturulması"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of functions"
msgstr "iÅŸlev dizisi olarak %qs bildirimi"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of functions"
msgstr "%qT dizisi oluşturulması"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of references"
msgstr "iÅŸlev dizisi olarak %qs bildirimi"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of references"
msgstr "%qT dizisi oluşturulması"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of function members"
msgstr "iÅŸlev dizisi olarak %qs bildirimi"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "creating array of function members"
msgstr "iÅŸlev dizisi olarak %qs bildirimi"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "çok boyutlu dizi olarak %qD bildiriminde ilki dışında tüm boyutlar sınırlanmış olmalıdır"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "çok boyutlu dizi bildiriminde ilki dışında tüm boyutlar sınırlanmış olmalıdır"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "kurucu için dönüş türü belirtimi geçersiz"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "yıkıcı için dönüş türü belirtimi geçersiz"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "%<operator %T%> için dönüş türü belirtilmiş"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "void bildirimli adsız değişken ya da alan"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "void bildirimli deÄŸiÅŸken ya da alan"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid use of qualified-name %<::%D%>"
msgstr "%<::%> kullanımı geçersiz"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
#| msgid "invalid use of undefined type %<%s %E%>"
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "tanımsız tür %<%s %E%> kullanımı geçersiz"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
#| msgid "invalid use of undefined type %<%s %E%>"
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "tanımsız tür %<%s %E%> kullanımı geçersiz"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a class or namespace"
msgid "%q#T is not a class or a namespace"
msgstr "%qT bir sınıf ya da isim alanı değil"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "%qT türü %qT türünden türetilmemiş"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "iÅŸlev olmayan olarak %qD bildirimi"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "üye olmayan olarak %qD bildirimi"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "bildirimci kimliği eksik; yedek sözcük %qD kullanılıyor"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, fuzzy, gcc-internal-format
#| msgid "function definition declared %<register%>"
msgid "function definition does not declare parameters"
msgstr "%<register%> bildirimli işlev tanımı"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr "%2$s olarak %1$qD bildirimi"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "%q+D bildirimi bir parametreyi gölgeliyor"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
#| msgid "a template-id may not appear in a using-declaration"
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "using bildiriminde bir ÅŸablon kimliÄŸi bulunamaz"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "%qs bildiriminde iki veya daha fazla veri türü"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
#| msgid "conflicting declaration %q#D"
msgid "conflicting specifiers in declaration of %qs"
msgstr "%q#D bildirimi çelişkili"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ türsüz %qs bildirimine izin verilmez"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_saveregs not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_saveregs bu hedef tarafından desteklenmiyor"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not support %<long long%>"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ %<long long%> desteklemez"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for %qs"
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "%qs için short, signed veya unsigned geçersiz"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, fuzzy, gcc-internal-format
#| msgid "signed and unsigned given together for %qs"
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "%qs için signed ve unsigned birlikte verilmiş"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for %qs"
msgid "%<long long%> invalid for %qs"
msgstr "%qs için complex geçersiz"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for %qs"
msgid "%<long%> invalid for %qs"
msgstr "%qs için complex geçersiz"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for %qs"
msgid "%<short%> invalid for %qs"
msgstr "%qs için complex geçersiz"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for %qs"
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%qs için long, short, signed ya da unsigned geçersiz"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for %qs"
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%qs için long, short, signed ya da unsigned geçersiz"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, fuzzy, gcc-internal-format
#| msgid "long or short specified with char for %qs"
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "%qs için char ile long veya short belirtilmiş"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, fuzzy, gcc-internal-format
#| msgid "long and short specified together for %qs"
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "%qs için long ve short birlikte belirtilmiş"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for %qs"
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%qs için short, signed veya unsigned geçersiz"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "%qs için long, short, signed ya da unsigned geçersiz olarak kullanılmış"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "%qs için complex geçersiz"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "%<operator %T%> bildiriminde niteleyicilere izin verilmez"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "üye %qD, hem virtual hem de static olarak bildirilemez"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> geçerli bir bildirici değil"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "typedef bildirimi parametre bildiriminde geçersiz"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter %qs"
msgid "storage class specified for template parameter %qs"
msgstr "%qs parametresi için saklama sınıfı belirtilmiş"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "saklatım sınıfı belirteçleri parametre bildiriminde geçersiz"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
#| msgid "non-member %qs cannot be declared %<mutable%>"
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "üye olmayan %qs, %<mutable%> olarak bildirilemez"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
#| msgid "virtual outside class declaration"
msgid "%<virtual%> outside class declaration"
msgstr "sanal dış sınıf bildirimi"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "%qs bildiriminde çok sayıda saklama sınıfı"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "%qs için saklatım sınıfı belirtilmiş"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "%qs parametresi için saklama sınıfı belirtilmiş"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "iç işlev %qs %<extern%> olarak bildirilmiş"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "%qs için tepe-seviye bildirim %<auto%> belirtiyor"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "%qs işlevinin etki alanı dolaylı olarak auto ve %<__thread%> bildirimli"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "saklatım sınıfı belirteçleri kardeş işlev bildirimlerinde geçersiz"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs işlevle dönen işlev olarak bildirilmiş"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs dizi ile dönen işlev olarak bildirilmiş"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "yıkıcı bir statik üye işlev olamaz"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "kurucu bir statik üye işlev olamaz"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "yıkıcılar cv-nitelemeli olmayabilir"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "kurucular cv-nitelemeli olmayabilir"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "kurucular virtual olarak bildirilemez"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function %qs"
msgid "can%'t initialize friend function %qs"
msgstr "kardeÅŸ iÅŸlev %qs ilklendirilemiyor"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "sanal iÅŸlevler kardeÅŸ iÅŸlev olamaz"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "kardeş bildirimi sınıf bildiriminde değil"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
#| msgid "can't define friend function %qs in a local class definition"
msgid "can%'t define friend function %qs in a local class definition"
msgstr "yerel sınıf tanımı içinde kardeş işlev %qs tanımlanamaz"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "yıkıcılar parametre almayabilir"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "%q#T türüne gösterici bildirilemez"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "%q#T türüne başvuru bildirilemez"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "%q#T üyeye gösterici bildirilemez"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to %q#T"
msgid "cannot declare reference to qualified function type %qT"
msgstr "%q#T türüne başvuru bildirilemez"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
#| msgid "cannot declare bit-field %qD with function type"
msgid "cannot declare pointer to qualified function type %qT"
msgstr "bit alanı %qD işlev türü ile bildirilemez"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "şablon kimliği %qD bir bildirici olarak kullanılmış"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "üye işlevler sınıflarının örtük kardeşleridir"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, fuzzy, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "üye %2$qs üzerinde fazladan niteleme %<%1$T::%>"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "üye işlev %<%T::%s%> %<%T%> içinde tanımlanamaz"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "uye işlev %<%T::%s%> %<%T%> içinde bildirilemez"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "üye %<%T::%s%> %qT içinde bildirilemez"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, fuzzy, gcc-internal-format
#| msgid "data member %qD cannot be a member template"
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "veri üyesi %qD bir üye şablon olamaz"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "%qs dizisinin boyutu çok büyük"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "veri üyesi değişken olarak değiştirilmiş %qT türünde olamayabilir"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "parametre değişken olarak değiştirilmiş %qT türünde olamayabilir"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "sadece kurucuların bildirimleri %<explicit%> olabilir"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "üye olmayan %qs, %<mutable%> olarak bildirilemez"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "nesne olmayan üye %qs %<mutable%> olarak bildirilemez"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "iÅŸlev %qs %<mutable%> olarak bildirilemez"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "static %qs %<mutable%> olarak bildirilemez"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "sabit %qs %<mutable%> olarak bildirilemez"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
#| msgid "function %qs cannot be declared %<mutable%>"
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "iÅŸlev %qs %<mutable%> olarak bildirilemez"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
#| msgid "typedef %q+D declared %<inline%>"
msgid "typedef declared %<auto%>"
msgstr "%<inline%> bildirimli typedef %q+D"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, fuzzy, gcc-internal-format
#| msgid "%Jtypedef name may not be a nested-name-specifier"
msgid "typedef name may not be a nested-name-specifier"
msgstr "%Jtypedef ismi bir iç içe isimli belirteç olmayabilir"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ kapsayan sınıf ile aynı isimde yuvalanmış %qD türüne izin vermez"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, fuzzy, gcc-internal-format
#| msgid "qualified function types cannot be used to declare %s functions"
msgid "qualified function types cannot be used to declare static member functions"
msgstr "nitelikli işlev türleri %s işlevlerini bildirmekte kullanılamaz"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
#| msgid "qualified function types cannot be used to declare %s functions"
msgid "qualified function types cannot be used to declare free functions"
msgstr "nitelikli işlev türleri %s işlevlerini bildirmekte kullanılamaz"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "kardeş sınıf bildirimi için tür niteleyiciler belirtilmiş"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "kardeş sınıf bildirimi için %<inline%> belirtilmiş"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "ÅŸablon parametreleri kardeÅŸ olamazlar"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "friend bildirimi sınıf anahtarı gerektirir, %<friend class %T::%D%> gibi"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "friend bildirimi %<friend %#T%> gibi bir sınıf anahtarı gerektirir"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "sınıf %qT genel bağlamın kardeşi yapılmaya çalışılıyor"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "üye olmayan işlev türünde niteleyiciler geçersiz"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "mutlak bildirimci %qT bildirim olarak kullanılmış"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "parametre bildiriminde %<::%> kullanılamaz"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
#| msgid "parameter %q+D declared %<inline%>"
msgid "parameter declared %<auto%>"
msgstr "%<inline%> bildirimli %q+D parametresi"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
#| msgid "static member %qD declared %<register%>"
msgid "non-static data member declared %<auto%>"
msgstr "statik üye %qD %<register%> olarak bildirilmiş"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "%<::%> kullanımı geçersiz"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
#| msgid "declaration of C function %q#D conflicts with"
msgid "declaration of function %qD in invalid context"
msgstr "C iÅŸlevi %q#D bildirimi"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "işlev %qD bir union içinde virtual olarak bildirilmiş"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD daima static olduÄŸundan sanal olarak bildirilemez"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "yıkıcı %qD için kardeş bildiriminde nitelikli isim umuluyordu"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, fuzzy, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "%2$qT üyesi olarak %1$qD bildirimi"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
#| msgid "Constructor can't be %s"
msgid "a destructor cannot be %<constexpr%>"
msgstr "Kurucu %s olmayabilir"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
#| msgid "expected qualified name in friend declaration for destructor %qD"
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "yıkıcı %qD için kardeş bildiriminde nitelikli isim umuluyordu"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "%qD alanı içi boş türde"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "%qT ismi içi boş türde"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " şablon %qT örnekleniminde"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qE ne işlev ne de üye işlev; friend olarak bildirilemez"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
#| msgid "Intrinsic '%s' at %L cannot have an initializer"
msgid "constexpr static data member %qD must have an initializer"
msgstr "YerleÅŸik '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
#| msgid "static member %qD declared %<register%>"
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "statik üye %qD %<register%> olarak bildirilmiş"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "saklama sınıfı %<auto%> %qs işlevi için geçersiz"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "saklama sınıfı %<register%> %qs işlevi için geçersiz"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "saklama sınıfı %<__thread%> %qs işlevi için geçersiz"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
#| msgid "an asm-specification is not allowed on a function-definition"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "bir işlev tanımında bir asm belirtimine izin verilmez"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "genel kapsam dışında bildirilen %qs işlevi için %<static%> belirteci geçersiz"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "genel kapsam dışında bildirilen %qs işlevi için %<inline%> belirteci geçersiz"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "sınıf olmayan sanal işlev %qs"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "%qs defined in a non-class scope"
msgstr "%qE özniteliği sınıf türleri dışında yoksayılır"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
#| msgid "%qD was not declared in this scope"
msgid "%qs declared in a non-class scope"
msgstr "%qD bu etki alanında bildirilmemiş"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "üye işlev %qD static ilintilemeli olarak bildirilemez"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "statik işlev başka bir işlevin içinde bildirilemez"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "bir statik veri üyesi tanımlarken (bildirime zit olarak) %<static%> kullanılamayabilir"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "statik üye %qD %<register%> olarak bildirilmiş"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "üye %q#D harici ilintilemeli olarak doğrudan bildirilemez"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D outside of class is not definition"
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "sınıf dışında %q#D bildirimi bir tanım değildir"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs ilklendirilmiÅŸ ve %<extern%> bildirilmiÅŸ"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs hem %<extern%> olarak bildirilmiÅŸ hem de ilklendrilmiÅŸ"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "%q#D için öntanımlı argüman %qT türünde"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "%qT türündeki parametre için öntanımlı argüman %qT türünde"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
#| msgid "default argument %qE uses local variable %qD"
msgid "default argument %qE uses %qD"
msgstr "öntanımlı argüman %qE %qD yerel değişkenini kullanıyor"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "öntanımlı argüman %qE %qD yerel değişkenini kullanıyor"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
#| msgid "parameter %q+D has incomplete type"
msgid "parameter %qD has Java class type"
msgstr "%q+D parametresi tamamlanmamış türde"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "parametre %qD geçersiz olarak yöntem türünde bildirilmiş"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, fuzzy, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "parametre %1$qD bilinmeyen sınırlı %3$qT dizisine %2$s içeriyor"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, fuzzy, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr "parametre %1$qD bilinmeyen sınırlı %3$qT dizisine %2$s içeriyor"
@@ -31495,175 +31555,175 @@ msgstr "parametre %1$qD bilinmeyen sınırlı %3$qT dizisine %2$s içeriyor"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "kurucu geçersiz; muhtemelen %<%T (const %T&)%> anlamında kullandınız"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qD bir isim alanı içinde bildirilemeyebilir"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD static olarak bildirilemeyebilir"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD static olmayan bir üye işlev olmalıdır"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD ya bir statik olmayan üye işlev ya da üye olmayan işlev olmalıdır"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD ya bir sınıf argümanına sahip olmalı ya da enum türünde olmalı"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "%s%s'ya dönüşüm asla bir tür dönüşüm işleci kullanmayacak"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to void will never use a type conversion operator"
msgstr "%s%s'ya dönüşüm asla bir tür dönüşüm işleci kullanmayacak"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "%s%s'ya dönüşüm asla bir tür dönüşüm işleci kullanmayacak"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to the same type will never use a type conversion operator"
msgstr "%s%s'ya dönüşüm asla bir tür dönüşüm işleci kullanmayacak"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "%s%s'ya dönüşüm asla bir tür dönüşüm işleci kullanmayacak"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a base class will never use a type conversion operator"
msgstr "%s%s'ya dönüşüm asla bir tür dönüşüm işleci kullanmayacak"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ ?: üç terimlisinin aşırı yüklenmesini yasaklar"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qD değişken sayıda argümana sahip olmamalı"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "sonek %qD argüman olarak %<int%> almalı"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "sonek %qD ikinci argümanı olarak %<int%> almalı"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD ya hiç argüman almamalı ya da bir argüman almalı"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD ya bir ya da iki argüman almalı"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "önek %qD %qT döndürmeli"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "sonek %qD %qT döndürmeli"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD %<void%> almalı"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD sadece ve sadece bir argüman almalı"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD sadece ve sadece iki argüman almalı"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "kullanıcı tanımlı %qD daima her iki argümanıyla birlikte değerlendirilir"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD değeriyle döndürülmeli"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD öntanımlı argümanlara sahip olamaz"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, fuzzy, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "%2$qs sonrası şablon türü %1$qT parametresi kullanımı"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr "%2$q+D için şablon özelleştirmesi %1$qD belirsiz"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, fuzzy, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "%2$qs sonrası typedef-ismi %1$qD kullanımı"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
#| msgid "%q+D has a previous declaration here"
msgid "%qD has a previous declaration here"
msgstr "%q+D için burada önceki bir bildirim var"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "%qT türüne %qs olarak başvuruluyor"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T için burada önceki bir bildirim var"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT türüne enum olarak başvuruluyor"
@@ -31675,89 +31735,89 @@ msgstr "%qT türüne enum olarak başvuruluyor"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "%<%s %T%> için şablon argüman gerekli"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD bildirildiği sınıf ile aynı isimde"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "%qD ile iliÅŸkilendirme belirsiz"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "önceden bildirim olmaksızın enum %q#D kullanımı"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "bir ÅŸablon olmayan olarak yeniden %qT bildirimi"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "önceden %q+D bildirimi"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "türetilmiş union %qT geçersiz"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "Java sınıfı %qT çok sayıda tabana sahip olamaz"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "Java sınıfı %qT sanal tabanlara sahip olamaz"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "taban tür %qT bir yapı veya sınıf türü olarak hatalı"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "ardışık tür %qT tanımsız"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "yinelenmiş taban türü %qT geçersiz"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
#| msgid "%Jprevious definition here"
msgid "previous definition here"
msgstr "%Jönceden burada tanımlı"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -31766,77 +31826,77 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "%qT için simgesel sabit değerlerinin tamamını hiçbir tümleyen tür temsil edemez"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for %qE is not an integer constant"
msgid "enumerator value for %qD is not an integer constant"
msgstr "%qE için sembolik sabit değeri bir tamsayı sabit değil"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
#| msgid "ISO C restricts enumerator values to range of %<int%>"
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "ISO C sembolik sabit grubunun değerlerini %<int%> kapsamında sınırlar"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "%qD'de simgesel sabit deÄŸerlerinde taÅŸma"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for %qE is not an integer constant"
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "%qE için sembolik sabit değeri bir tamsayı sabit değil"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "dönüş türü %q#T bir içi boş türdür"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
#| msgid "return type is an incomplete type"
msgid "return type has Java class type %q#T"
msgstr "dönüş türü, bir içi boş tür"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%>, %<*this%> için bir başvuru döndürmeli"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "%q+D için evvelce bildirim yok"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "işlev bildirimi geçersiz"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "parametre %qD void olarak bildirilmiÅŸ"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label %q+D defined but not used"
msgid "parameter %q+D set but not used"
msgstr "%q+D yaftası tanımlı ama kullanılmamış"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "geçersiz üye işlev bildirimi"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD zaten %qT sınıfında tanımlı"
@@ -31876,7 +31936,7 @@ msgstr "bir işlev silinemez. Sadece nesnelerin göstericileri %<delete%>'e konu
msgid "deleting %qT is undefined"
msgstr "%qT silinmesi tanımsız"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "%q#D ÅŸablon bildirimi"
@@ -32146,7 +32206,7 @@ msgstr "içi boş %qT türü alt isim belirtecinde kullanılmış"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "%<%T::%D%> ile iliÅŸkilendirme belirsiz"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD %qT'nin bir üyesi değil"
@@ -32468,7 +32528,7 @@ msgstr "%qT türü bir doğrudan %qT tabanı değil"
msgid "bad array initializer"
msgstr "dizi ilklendirici hatalı"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
#| msgid "%qE does not have class type"
msgid "%qT is not a class type"
@@ -32560,69 +32620,69 @@ msgstr "ilklendiricide sabit olmayan dizi indisi"
msgid "parenthesized initializer in array new"
msgstr "parantezli ilklendiriciden sonraki öznitelikler yoksayıldı"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "array new içindeki boyut bütünleyici türde olmalı"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new bir referans türe uygulanamaz"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new bir işlev türe uygulanamaz"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "%<jclass%> tanımsızken Java kurucusuna çağrı"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
#| msgid "can't find class$"
msgid "can%'t find %<class$%> in %qT"
msgstr "class$ bulunamıyor"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "ilklendirici erken sonlanıyor"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "çok boyutlu diziler ilklendiricilerle ilklendirilemez"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "silme işlecinin çağrısında bir sorun saptandı:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, fuzzy, gcc-internal-format
#| msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined."
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "sınıf tanımlanırken bildirilmiş olsalar bile, ne yıkıcı ne de sınıfa özel silme işleci çağrılır."
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "delete içindeki dizi boyutu bilinmiyor"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "vektör silme işlemi için tür ne gösterici ne de dizi"
@@ -32682,42 +32742,42 @@ msgstr "%qD için bir şablon parametresine bağımlı bir argüman yok, o halde
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(%<-fpermissive%> kullanırsaniz, G++ kodunuzu kabul edecek ama bildirilmemiş isim kullanımına izin vermek artık önerilmiyor)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "%<?:%> için ortadaki terim olmadığından yorumlanamadı"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "%qD' nin anlamlandırılmış ismi GCC'nin gelecek sürümünde değişecek"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -32809,64 +32869,64 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
#| msgid "repeated using declaration %q+D"
msgid "defaulted declaration %q+D"
msgstr "%q+D bildirimi kullanılarak yinelenmiş"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
#| msgid "array does not match the region tree"
msgid "does not match expected signature %qD"
msgstr "dizi bölge ağacıyla eşleşmiyor"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "a template cannot be defaulted"
msgstr "ÅŸablon parametreleri kardeÅŸ olamazlar"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
#| msgid "%q+#D cannot be declared"
msgid "%qD cannot be defaulted"
msgstr "%q+#D bildirilemez"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
#| msgid "file ends in default argument"
msgid "defaulted function %q+D with default argument"
msgstr "öntanımlı argüman içinde dosya sonu"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "sınıf %qT için vtable yerleşimi ABI-uyumlu olmayabilir ve bu GCC'nin gelecek sürümünde örtük sanal yıkıcıdan dolayı değişebilir"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "%q#D conflicts with previous using declaration %q#D"
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D önceki using bildirimi %q#D ile çelişiyor"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+D"
msgid "previous declaration %q+#D"
msgstr "önceden %q+D bildirimi"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "%qT olarak yeniden %<wchar_t%> bildirimi"
@@ -32877,273 +32937,273 @@ msgstr "%qT olarak yeniden %<wchar_t%> bildirimi"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "yeniden %q+D bildirimi geçersiz"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "%qD olarak"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
#| msgid "redeclaration of %q+D with no linkage"
msgid "declaration of %q#D with C language linkage"
msgstr "ilintisiz %q+D yeniden bildirimi"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
#| msgid "Generate code to check exception specifications"
msgid "due to different exception specifications"
msgstr "Olağan dışılık belirtimlerini sınayacak kod üretilir"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "tür önceki %q#D external bildirimi ile uyumsuz"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "önceden external %q+#D bildirimi"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
#| msgid "extern declaration of %q#D doesn't match"
msgid "extern declaration of %q#D doesn%'t match"
msgstr "%q#D extern bildirim uyumsuz"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "%q+#D genel bildirimi"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "%q#D bildirimi bir parametreyi gölgeliyor"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "%q+D bildirimi bir parametreyi gölgeliyor"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "%qD bildirimi önceki yereli gölgeliyor"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "%qD bildirimi bir `this' üyesini gölgeliyor"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "%qD bildirimi bir global bildirimi gölgeliyor"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "%qD isim araması değişti"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " bu %q+D ISO standardının kuralları altında eşleşir"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " bu %q+D eski kurallar altında eşleşir"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
#| msgid "name lookup of %qD changed for new ISO %<for%> scoping"
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "%qD isim araması yeni ISO %<for%> etki alanında değişti"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " %q+D'deki atıl baglantı bir yıkıcıya sahip olduğundan kullanılamaz"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " %qD'de atıl bağlantı kullanımı"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, fuzzy, gcc-internal-format
#| msgid "(if you use -fpermissive G++ will accept your code)"
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(-fpermissive kullanırsanız G++ kodunuzu kabul edecek)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D %q#T kurucusunu gizliyor"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D önceki using bildirimi %q#D ile çelişiyor"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "önceden işlev olmayan bildirim %q+#D"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "işlev bildirimi %q#D ile çelişiyor"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT bir isim alanı değil"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "bir using bildirimi bir ÅŸablon kimliÄŸi belirtemez. %<using %D%> deneyin"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "using bildiriminde isim alanı %qD kullanılamaz"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "%qD bildirilmemiÅŸ"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD zaten bu baÄŸlamda bildirilmiÅŸ"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "sınıf bağlamında üye olmayan için using bildirimi"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> yıkıcı isimlendiriyor"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%> kurucu isimlendiriyor"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> %qT içinde kurucu isimlendiriyor"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, fuzzy, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "%3$q#T içinde %<%1$T::%2$D%> ile eşleşen bir üye yok"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "%qD bildirimi %qD'yi kuşatan isim alanında değil"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "%qD bildiriminde doÄŸrudan niteleme"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD %qD içinde bildirilmeliydi"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%qD attribute requires a single NTBS argument"
msgstr "%qs özniteliği bir tamsayı sabit argüman gerektirir"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "%qD öznitelik yönergesi yoksayıldı"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "burada isim alanı rumuzu %qD kullanılamaz, %qD varsayılıyor"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "kesin kullanım sadece isimalanı kapsamında anlamlıdır"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, fuzzy, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "%3$qD isim alanını kapsamayan %2$qD isim alanında doğrudan %1$qD bildirimi"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
msgstr[1] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, fuzzy, gcc-internal-format
#| msgid " %q+#D"
msgid " %qE"
msgstr " %q+#D"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX, pop_everything () iÅŸlevine giriyor\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX, pop_everything () işlevini bırakıyor\n"
@@ -33268,7 +33328,7 @@ msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(belki de %qT bildiriminden sonra bir ; yoktur)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT bir ÅŸablon deÄŸil"
@@ -33289,7 +33349,7 @@ msgstr "geçersiz şablon kimliği"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "%s bir sabit ifadesinde görünemez"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -33452,135 +33512,135 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "bu baÄŸlamda"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find numeric literal operator %qD"
msgstr "%qs sınıfı içinde dökülecek bir yazmaç bulunamadı"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find string literal operator %qD"
msgstr "%qs sınıfı içinde dökülecek bir yazmaç bulunamadı"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "boÅŸ bildirim"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
#| msgid "-pipe not supported"
msgid "fixed-point types not supported in C++"
msgstr "-pipe desteklenmiyor"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ da kaşlı ayracla gruplanmış ifadelere izin verilmez"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
#| msgid "statement-expressions are allowed only inside functions"
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "deyim ifadelerine sadece işlevlerin içinde izin verilir"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected primary-expression"
msgstr "ifade umuluyordu"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "bu kapsamda %<this%> kullanılamaz"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
#| msgid "Objective-C declarations may only appear in global scope"
msgid "a template declaration cannot appear at block scope"
msgstr "Objective-C bildirimleri sadece genel etki alanında görünebilir"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "yerel değişken %qD bu kapsamda görünemez"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected id-expression"
msgstr "ifade umuluyordu"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a class or namespace"
msgid "scope %qT before %<~%> is not a class-name"
msgstr "%qT bir sınıf ya da isim alanı değil"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, fuzzy, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "%2$qT üyesi olarak %<~%1$T%> bildirimi"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "typedef ismi %qD yıkıcı bildiricisi olarak kullanılmış"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
#| msgid "expected specifier-qualifier-list"
msgid "expected unqualified-id"
msgstr "belirteç niteleyici listesi umuluyordu"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
#| msgid "%qT resolves to %qT, which is not an enumeration type"
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "%qT bir enum türü olmayan %qT türüne çözümleniyor"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qD bir ÅŸablon deÄŸil"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected nested-name-specifier"
msgstr "bildirim belirteçleri umuluyordu"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in casts"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a %<typeid%> expression"
@@ -33588,247 +33648,247 @@ msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ birleÅŸik sabitlere izin vermez"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qE sınıf türüne sahip değil"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "%qD kullanımı geçersiz"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "%<%D::%D%> is not a member of %qT"
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%>, %qT'nin bir üyesi değil"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ tasarlanmış ilkendiricilere izin vermez"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-expression"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "parantezli tür kimliğinden sonra dizi sınırı yasak"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "tür kimliğini sarmalayan parantezleri kaldırmayı deneyin"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-type-id"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "new bildirimli ifade bütünleyici ya da numaralama türünde olmalı"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "eski tarz tür dönüşümü"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
#| msgid "suggest parentheses around && within ||"
msgid "suggest parentheses around %<>>%> expression"
msgstr "|| içindeki && çevresinde parantezler önerilir"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ tasarlanmış ilkendiricilere izin vermez"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of capture-list"
msgstr "Beklenmeyen modül sonu"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ tasarlanmış ilkendiricilere izin vermez"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "salt-okunur değişken %qD için eksiltme"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%q+#D declared here"
msgstr "burada bildirilmiÅŸ %q+D"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "öntanımlı argüman %2$q#D bildiriminin %1$d. parametresi için"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected labeled-statement"
msgstr "deyim umuluyordu"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case etiketi %qE bir switch deyimi içinde değil"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> names constructor in %qT"
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> %qT içinde kurucu isimlendiriyor"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "Discover pure and const functions"
msgid "compound-statement in constexpr function"
msgstr "Saf ve sabit iÅŸlevler keÅŸfedilir"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected selection-statement"
msgstr "bildirim veya deyim umuluyordu"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in conditions"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "ifade deyimi boş tür içeriyor"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected iteration-statement"
msgstr "bildirim veya deyim umuluyordu"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ hesaplanmış goto'lara izin vermez"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected jump-statement"
msgstr "deyim umuluyordu"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "fazladan %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "karışık bildirimler ve işlev tanımları yasaktır"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, fuzzy, gcc-internal-format
#| msgid "%<friend%> can only be specified inside a class"
msgid "%<friend%> used outside of class"
@@ -33836,400 +33896,400 @@ msgstr "%<friend%> sadece bir sınıf içinde belirtilebilir"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
#| msgid "pure-specifier on function-definition"
msgid "decl-specifier invalid in condition"
msgstr "işlev tanımında pure belirteci"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "sınıf tanımı kardeş olarak bildirilemeyebilir"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid linkage-specification"
msgstr "taban sınıf belirtimi geçersiz"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<decltype%> expressions"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<this%> in non-member function"
msgid "invalid use of %<auto%> in conversion operator"
msgstr "üye olmayan işlevde %<this%> kullanımı geçersiz"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "only constructors take base initializers"
msgid "only constructors take member initializers"
msgstr "temel ilklendiricileri sadece kurucular alır"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
#| msgid "missing initializer for member %qD"
msgid "cannot expand initializer for member %<%D%>"
msgstr "uye %qD için ilklendirici eksik"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "%q+D statik bildirimi statik olmayan bildirimi izliyor"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "artık tarih olmuş eski tarz temel sınıf ilklendiricisi"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "%<typename%> anahtar sözcüğüne bu bağlamda izin verilmez (bir nitelikli üye ilklendirici örtük olarak bir tür olduğundan)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected suffix identifier"
msgstr "betimleyici umuluyordu"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "beklenmeyen terim"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "%<export%> anahtar sözcüğü gerçekleştirilmedi ve yoksayılacak"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "template parameter pack %qD cannot have a default argument"
msgstr "%qD öntanımlı argümanlara sahip olamaz"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter pack cannot have a default argument"
msgstr "ÅŸablon parametreleri kardeÅŸ olamazlar"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter packs cannot have default arguments"
msgstr "ÅŸablon parametreleri kardeÅŸ olamazlar"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-id"
msgstr "deyim umuluyordu"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<<%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "%<<::%> bir şablon argüman listesi başlatamaz"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> ile %<[%> aynı şeyi gösterir. %<<%> ile %<::%> arasında boşluk bırakın"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr "şablon argüman listesinde çözümleme hatası"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-name"
msgstr "deyim umuluyordu"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "şablon olarak şablon olmayan %qD kullanılmış"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "bir şablon olduğunu belirtmek için %<%T::template %D%> kullanın"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers or %<...%>"
msgid "expected parameter pack before %<...%>"
msgstr "bildirim belirteçleri veya %<...%> umuluyordu"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-argument"
msgstr "deyim umuluyordu"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid non-type template argument"
msgstr "tür argümanı geçersiz"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "şablon olmayan tür %qT'nin doğrudan örneklenimi"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "şablon olmayan tür %qT'nin doğrudan örneklenimi"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "C ilintileme ile şablon özelleştirmesi"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected type specifier"
msgstr "bildirim belirteçleri umuluyordu"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "expected template-id for type"
msgstr "İfade türü umuluyordu"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected type-name"
msgstr "Umulmadık isim"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
#| msgid "declaration does not declare anything"
msgid "declaration %qD does not declare anything"
msgstr "bildirim hiçbir şey bildirmiyor"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "attributes ignored on uninstantiated type"
msgstr "%qE özniteliği sınıf türleri dışında yoksayılır"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
#| msgid "storage class %qD applied to template instantiation"
msgid "attributes ignored on template instantiation"
msgstr "saklama sınıfı %qD şablon örneklenimine uygulanmış"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%qD is an enumeration template"
msgstr "%qD bir iÅŸlev ÅŸablonu deÄŸil"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a namespace-name"
msgid "%qD is not an enumerator-name"
msgstr "%qD bir isim alanı ismi değil"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<;%> or %<{%>"
msgstr "%<,%> veya %<;%> umuluyordu"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
#| msgid "Enable automatic template instantiation"
msgid "cannot add an enumerator list to a template instantiation"
msgstr "Özdevinimli şablon örneklenimi etkin olur"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "%3$qD'yi kapsamayan %2$qD etki alanı içinde %1$qD türünde bildirim"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, fuzzy, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "%3$qD'yi kapsamayan %2$qD etki alanı içinde %1$qD türünde bildirim"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "çok sayıda %q#T tanımı"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD bir isim alanı ismi değil"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected namespace-name"
msgstr "sınıf ismi umuluyordu"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma%> is not allowed here"
msgid "%<namespace%> definition is not allowed here"
msgstr "%<#pragma%> burada kullanılamaz"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "using bildiriminde bir ÅŸablon kimliÄŸi bulunamaz"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in alias template declarations"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
#| msgid "%s: function definition not converted\n"
msgid "a function-definition is not allowed here"
msgstr "%s: işlev tanımı dönüştürülmedi\n"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "bir işlev tanımında bir asm belirtimine izin verilmez"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "bir işlev tanımıda özniteliklere izin verilmez"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected initializer"
msgstr "betimleyici umuluyordu"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid type in declaration"
msgstr "işlev bildirimi geçersiz"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function %qs"
msgid "initializer provided for function"
msgstr "kardeÅŸ iÅŸlev %qs ilklendirilemiyor"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "parantezli ilklendiriciden sonraki öznitelikler yoksayıldı"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "dizi sınırı bir tamsayı sabit değil"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type %qT"
msgid "cannot define member of dependent typedef %qT"
msgstr "%qT üye referans türünde gösterici oluşturulması"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> is not a type"
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%D%> bir tür değil"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "kurucunun şablon olarak kullanımı geçersiz"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -34238,275 +34298,275 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid declarator"
msgstr "işlev bildirimi geçersiz"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected declarator"
msgstr "bildirim belirteçleri umuluyordu"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD bir isim alanıdır"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type %qT"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "sınıf olmayan %qT türünde üye göstericisi oluşturulması"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "beklenmeyen terim"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "cv-niteleyici yinelenmiÅŸ"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "duplicate cv-qualifier"
msgid "duplicate virt-specifier"
msgstr "cv-niteleyici yinelenmiÅŸ"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid use of %<auto%>"
msgstr "%<::%> kullanımı geçersiz"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in template arguments"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected type-specifier"
msgstr "betimleyici umuluyordu"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<,%> or %<...%>"
msgstr "%<:%> veya %<...%> umuluyordu"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in parameter types"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "işlev olmayanın parametresi için öntanımlı argüman kullanımı önerilmiyor"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "öntanımlı argümanlara sadece işlev parametresi olarak izin verilir"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "parameter pack %qD cannot have a default argument"
msgstr "%qD öntanımlı argümanlara sahip olamaz"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "parameter pack cannot have a default argument"
msgstr "%qD öntanımlı argümanlara sahip olamaz"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ tasarlanmış ilkendiricilere izin vermez"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ tasarlanmış ilkendiricilere izin vermez"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-name"
msgstr "sınıf ismi umuluyordu"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after class definition"
msgstr "%q+D tanımlandıktan sonra satıriçi bildirilmiş"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after struct definition"
msgstr "%q+D tanımlandıktan sonra satıriçi bildirilmiş"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
#| msgid "Unexpected junk after function declaration at %C"
msgid "expected %<;%> after union definition"
msgstr "%C'deki işlev bildiriminden sonra umulmayan döküntü"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<{%> or %<:%>"
msgstr "%<,%> veya %<;%> umuluyordu"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "sınıf %s için dosya bulunamıyor"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
#| msgid "friend declaration does not name a class or function"
msgid "qualified name does not name a class"
msgstr "kardeş bildirimi bir sınıf veya işlevi isimlendirmiyor"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "%qD bildirimindeki sınıf ismi geçersiz"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
#| msgid "extra qualification ignored"
msgid "extra qualification not allowed"
msgstr "fazladan niteleme yoksayıldı"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "bir doğrudan özelleştirme %<template <>%> ile öncelenmeli"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
#| msgid "non-template %qD used as template"
msgid "function template %qD redeclared as a class template"
msgstr "şablon olarak şablon olmayan %qD kullanılmış"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "%q+#T türünde önceden tanım"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-key"
msgstr "sınıf ismi umuluyordu"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, fuzzy, gcc-internal-format
#| msgid "a class-key must be used when declaring a friend"
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "bir kardeş bildirilirken bir sınıf anahtarı kullanılmalıdır"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "kardeş bildirimi bir sınıf veya işlevi isimlendirmiyor"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "işlev tanımında pure belirteci"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
#| msgid "cannot use %<::%> in parameter declaration"
msgid "expected %<;%> at end of member declaration"
msgstr "parametre bildiriminde %<::%> kullanılamaz"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr ""
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "şablonlar dışında %<typename%> kullanımına izin verilmez"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "%<typename%> anahtar sözcüğüne bu bağlamda izin verilmez (taban sınıfı örtük olarak bir türdür)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in an exception-specification"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in exception-declarations"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of %q+D"
msgid "invalid declaration of %<%T::%E%>"
msgstr "yeniden %q+D bildirimi geçersiz"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "şablon parametresi listesi çok az"
@@ -34515,358 +34575,358 @@ msgstr "şablon parametresi listesi çok az"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "şablon parametresi listesi çok fazla"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "isimli dönüş değerleri artık desteklenmiyor"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, fuzzy, gcc-internal-format
#| msgid "invalid declaration of member template %q#D in local class"
msgid "invalid declaration of member template in local class"
msgstr "yerel sınıf içinde %q#D üye şablonu bildirimi geçersiz"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "C ilintilemeli ÅŸablon"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid explicit specialization"
msgstr "taban sınıf belirtimi geçersiz"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
#| msgid "template declaration of %qs"
msgid "template declaration of %<typedef%>"
msgstr "%qs ÅŸablon bildirimi"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
#| msgid "explicit specialization in non-namespace scope %qD"
msgid "explicit template specialization cannot have a storage class"
msgstr "isim alanı olmayan %qD kapsamında doğrudan özelleştirme"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
#| msgid "%H%<>>%> should be %<> >%> within a nested template argument list"
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%H%<>>%> alt şablon argüman listesinde %<> >%> olmalıydı"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "sahte %<>>%>, bir şablon argüman listesini sonlandırmak için %<>%> kullanın"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid use of %qD in linkage specification"
msgstr "taban sınıf belirtimi geçersiz"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
#| msgid "%<__thread%> before %<extern%>"
msgid "%<__thread%> before %qD"
msgstr "%<extern%> öncesinde %<__thread%>"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<new%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<delete%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<return%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<extern%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected %<static_assert%>"
msgstr "deyim umuluyordu"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<decltype%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<operator%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<class%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<template%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<namespace%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<using%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<asm%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<try%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<catch%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<throw%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<__label__%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@try%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@synchronized%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@throw%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<::%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<...%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<*%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<~%>"
msgstr "%<{%> umuluyordu"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<:%> or %<::%>"
msgstr "%<:%> veya %<...%> umuluyordu"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%>, %<;%> or %<}%>"
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "%<,%>, %<;%> veya %<}%> umuluyordu"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "%qs yaftası %q#T isimlemesinde kullanılmış"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously declared here"
msgid "%q#T was previously declared here"
msgstr "%q+#D evvelce burada bildirilmiÅŸ"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qD farklı erişimle tekrar bildirilmiş"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "%<template%> (bir belirsizlik giderici olarak) sadece şablonlarda kullanılabilir"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "öntanımlı argüman içinde dosya sonu"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "yanlış yere konmuş %<@%D%> Nesnel-C++ oluşumu"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "%<@encode%> bir argüman olarak bir tür belirtmeli"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr "Nesnel-C++ seçici ismi geçersiz"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "objective-c++ method declaration is expected"
msgstr "bildirim belirteçleri umuluyordu"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "method attributes must be specified at the end"
msgstr "%Jbölüm özniteliği yerel değişkenler için belirtilmiş olamaz"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
#| msgid "illegal reference type specified for instance variable %qs"
msgid "invalid type for instance variable"
msgstr "gerçekleme değişkeni %qs için ilişkilendirme türü kuraldışı"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "%<@protocol%> sonrasında betimleyici umuluyordu"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "%qE özniteliği %qE için yoksayıldı"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid type for property"
msgstr "tür argümanı geçersiz"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "iteration variable %qD should not be reduction"
msgstr "yazmaç değişkeni %qD iç işlevde kullanılmış"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
#| msgid "not enough type information"
msgid "not enough collapsed for loops"
msgstr "tür bilgisi yetersiz"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
#| msgid "junk at end of %<#pragma pack%>"
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "%<#pragma pack%> sonunda döküntü"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "modüller arası eniyilemeler henüz C++ için gerçeklenmedi"
@@ -34967,69 +35027,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD bir iÅŸlev ÅŸablonu deÄŸil"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "şablon kimliği %qD %q+D için hiçbir şablon bildirimi ile eşleşmiyor"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, fuzzy, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "%2$q+D için şablon özelleştirmesi %1$qD belirsiz"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "birincil ÅŸablon bildiriminde ÅŸablon kimliÄŸi %qD"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "şablon parametre listesi doğrudan örneklenimde kullanılmış"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "tanım doğrudan örneklenim için sağlanmış"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "%qD bildiriminde çok fazla şablon parametresi listeleniyor"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "%qD bildiriminde çok az şablon parametresi listeleniyor"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "%qD doğrudan özelleştirmesi %<template <>%> tarafından vurgulanmalı"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "işlev şablonu kısmi özelleştirmesi %qD bildiricisine izin verilmez"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "doğrudan özelleştirmede öntanımlı argüman belirtilmiş"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD bir ÅŸablon iÅŸlevi deÄŸildir"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
#| msgid "%qD not declared"
msgid "%qD is not declared in %qD"
@@ -35043,139 +35103,139 @@ msgstr "%qD bildirilmemiÅŸ"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "örtük bildirimli özel üye işlev özelleştirmesi"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, fuzzy, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "%2$qT türünde bildirimli %1$qD isminde üye işlev yok"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
#| msgid "<anonymous>"
msgid " <anonymous>"
msgstr "<anonim>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "%q+#D bildirimi"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr " şablon parametresi %q+#D gölgeleniyor"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "kismi özelleştirmede kullanılmayan şablon parametreleri:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "kısmi özelleştirme %qT hiç bir şablon argümanını özelleştirmiyor"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "şablon argümanı %qE şablon parametre(ler)ini içine alıyor"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "%2$qE şablon argümanının %1$qT türü şablon parametre(ler)ine bağımlı oluyor"
msgstr[1] "%2$qE şablon argümanının %1$qT türü şablon parametre(ler)ine bağımlı oluyor"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "örneklenim %2$qT sonrası %1$qT özelleştirmesi"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "%qD için öntanımlı argüman yok"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "öntanımlı argümanlara kardeş şablon özelleştirmesi %qD bildiriminde izin verilmez"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend declarations"
msgstr "öntanımlı argümanlara kardeş şablon özelleştirmesi %qD bildiriminde izin verilmez"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, fuzzy, gcc-internal-format
#| msgid "template parameters not used in partial specialization:"
msgid "default template arguments may not be used in partial specializations"
msgstr "kismi özelleştirmede kullanılmayan şablon parametreleri:"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type %qT has type %qT"
msgid "default argument for template parameter for class enclosing %qD"
msgstr "%qT türündeki parametre için öntanımlı argüman %qT türünde"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "bir isim olmaksızın şablon sınıfı"
@@ -35183,7 +35243,7 @@ msgstr "bir isim olmaksızın şablon sınıfı"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "yıkıcı %qD üye şablon olarak bildirilmiş"
@@ -35193,59 +35253,59 @@ msgstr "yıkıcı %qD üye şablon olarak bildirilmiş"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "%qD şablon bildirimi geçersiz"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "şablon olmayan %q#D için şablon tanımı"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "%d seviye umulurken %q#D için şablon parametresi seviyesi olarak %d seviye alındı"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "%d şablon parametresi %q#D için alındı"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "%d şablon parametresi %q#T için alındı"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " ama %d gerekiyordu"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
#| msgid "template parameters do not match template"
msgid "template arguments to %qD do not match original template %qD"
msgstr "ÅŸablon parametreleri bu ÅŸablonla uyuÅŸmuyor:"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, fuzzy, gcc-internal-format
#| msgid "enclosing class templates are not explicitly specialized"
msgid "use template<> for an explicit specialization"
msgstr "sınıf sablonlarının kapsanması doğrudan özelleştirilmez"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT bir şablon türü değil"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "%qD bildiriminde şablon belirteçleri belirtilmemiş"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qD used without template parameters"
msgid "redeclared with %d template parameter"
@@ -35253,7 +35313,7 @@ msgid_plural "redeclared with %d template parameters"
msgstr[0] "%qD şablon parametreleri olmaksızın kullanılmış"
msgstr[1] "%qD şablon parametreleri olmaksızın kullanılmış"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+#D here"
msgid "previous declaration %q+D used %d template parameter"
@@ -35261,12 +35321,12 @@ msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "buradaki önceki %q+#D bildirimi ile çelişiyor"
msgstr[1] "buradaki önceki %q+#D bildirimi ile çelişiyor"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "ÅŸablon parametresi %q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "burada %q#D olarak yeniden bildirilmiÅŸ"
@@ -35275,285 +35335,285 @@ msgstr "burada %q#D olarak yeniden bildirilmiÅŸ"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "%q#D için öntanımlı argümanın yeniden tanımı"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
#| msgid "%J original definition appeared here"
msgid "original definition appeared here"
msgstr "%J ozgun tanımı burada görüldü"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü %qD nesnesi için harici ilintileme yok"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü %qD nesnesi için harici ilintileme yok"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü o bir göstericidir"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
#| msgid "(a pointer to member can only be formed with %<&%E%>)"
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "(bir üye göstericisi sadece %<&%E%> ile şekillendirilebilir)"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for %q#D"
msgid " couldn't deduce template parameter %qD"
msgstr "%d şablon parametresi %q#D için alındı"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types %q#T and %q#T"
msgid " mismatched types %qT and %qT"
msgstr "%q#T ile %q#T türleri arasında karşılaştırma"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "template argument %qE involves template parameter(s)"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "şablon argümanı %qE şablon parametre(ler)ini içine alıyor"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a base of %qT"
msgid " %qE is not equivalent to %qE"
msgstr "%qT %qT tabanında değil"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, fuzzy, gcc-internal-format
#| msgid "Inconsistent ranks for operator at %L and %L"
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr "%L ve %L'de işliçler için sıralar uyumsuz"
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
#| msgid "partial specialization %qT does not specialize any template arguments"
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "kısmi özelleştirme %qT hiç bir şablon argümanını özelleştirmiyor"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
#| msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgid " member function type %qT is not a valid template argument"
msgstr "'%s' beyan işlevine bir fiili argüman olarak izin verilmez (%L'de)"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "%qT türü %qT türüne dönüştürülemiyor"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
#| msgid "%qT is an ambiguous base of %qT"
msgid " %qT is an ambiguous base class of %qT"
msgstr "%qT bir belirsiz %qT tabanıdır"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type %qT is not derived from type %qT"
msgid " %qT is not derived from %qT"
msgstr "%qT türü %qT türünden türetilmemiş"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "%s içi boş %qT türüne bir gösterici olamaz"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "argument of type %qT does not match %qT"
msgid " template argument %qE does not match %qD"
msgstr "%qT türündeki argüman %qT ile eşleşmiyor"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid " could not resolve address from overloaded function %qE"
msgstr "%s aşırı yüklü işlevin adresini çözümleyemiyor"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü bu bağlamda dizge sabitler kullanılamaz"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
#| msgid "default argument for %q#D has type %qT"
msgid "in template argument for type %qT "
msgstr "%q#D için öntanımlı argüman %qT türünde"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a lvalue"
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil cunku o bir sol taraf terimi değil"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a lvalue"
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil cunku o bir sol taraf terimi değil"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü %qD nesnesi için harici ilintileme yok"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü %qD nesnesi için harici ilintileme yok"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "cv nitelemesinde çeliştiğinden dolayı %qE %qT türü için geçerli bir şablon argümanı değildir"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a lvalue"
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil cunku o bir sol taraf terimi değil"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a constant pointer"
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü o bir sabit göstericisi değildir"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü %qD nesnesi için harici ilintileme yok"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü %qD nesnesi için harici ilintileme yok"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü o bir göstericidir"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "yerine %qE kullanmayı deneyin"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE %qT türü için geçerli bir şablon argümanı değil çünkü %qT türündedir"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "standart uzlaşımlara bu bağlam içinde izin verilmez"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
#| msgid "applying attributes to template parameters is not implemented"
msgid "ignoring attributes on template argument %qT"
msgstr "özniteliklerin şablon parametrelerine uygulanması gerçeklenmedi"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "invalid use of constructor as a template"
msgid "invalid use of destructor %qE as a type"
msgstr "kurucunun şablon olarak kullanımı geçersiz"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "bir şablon parametresinin bir tür üyesine basvurmak için %<typename %E%> kullanın"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, fuzzy, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "%2$qD için şablon parametre listesindeki %1$d. argümanda tür/değer uyumsuzluğu"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " %qT türünde bir sabit umulurken %qT alındı"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " bir sınıf sablonu umulurken %qE alındı"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " bir tür umulurken %qE alındı"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " bir tür umulurken %qT alındı"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " bir sınıf sablonu umulurken %qT alındı"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type %qD, got %qD"
msgid " expected a template of type %qD, got %qT"
@@ -35561,77 +35621,77 @@ msgstr " %qD türünde bir şablon umulurken %qD alındı"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in nontype parameter pack"
msgstr "koşullu ifadede tür uyumsuzluğu"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "şablon argümanı %qE %qT'ye dönüştürülemedi"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "yanlış sayıda şablon argümanı (%d yerine %d olmalıydı)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "yanlış sayıda şablon argümanı (%d yerine %d olmalıydı)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "%q+D için sağlanmış"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "%d. şablon argümanı geçersiz"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%q#D is not a function template"
msgstr "%qD bir iÅŸlev ÅŸablonu deÄŸil"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "şablon olarak şablon olmayan tür %qT kullanılmış"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "%q+D şablon bildirimi için"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "%d lik azami şablon örneklenim derinliği %qD örnekleniminde aşılıyor (azami değeri arttırmak için -ftemplate-depth-NN kullanın)"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "%d lik azami şablon örneklenim derinliği %qD örnekleniminde aşılıyor (azami değeri arttırmak için -ftemplate-depth-NN kullanın)"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "%q+D örneklenimi %qT türünde"
@@ -35649,270 +35709,270 @@ msgstr "%q+D örneklenimi %qT türünde"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
#| msgid "variable %qD has initializer but incomplete type"
msgid "variable %qD has function type"
msgstr "%qD değişkeni ilklendiricili ama içi boş türde"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "geçersiz parametre türü %qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "%q+D bildiriminde"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "bir dizi döndüren işlev"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "bir işlev döndüren işlev"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "sınıf olmayan %qT türünde üye işlev göstericisi oluşturulması"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "void'e referans oluÅŸturuluyor"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming pointer to reference type %qT"
msgstr "%s %qT referans türünde şekilleniyor"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming reference to reference type %qT"
msgstr "%s %qT referans türünde şekilleniyor"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "sınıf olmayan %qT türünde üye göstericisi oluşturulması"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "%qT üye referans türünde gösterici oluşturulması"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "void türünde üyeye gösterici oluşturulması"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "%qT dizisi oluşturulması"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "mutlak sınıf türünde olan %qT dizisinin oluşturulması"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT ne bir class, ne struct, ne de union türünde"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%qT bir enum türü olmayan %qT türüne çözümleniyor"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT bir sınıf türü olmayan %qT türüne çözümleniyor"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "şablonda %qs kullanımı"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
#| msgid "qualified type %qT does not match destructor name ~%qT"
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "yetkin tür %qT, yıkıcı ismi ~%qT ile eslesmiyor"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "%qE bağımlı ismi bir tür olarak çözümlenmedi ama örneklenim onun bir tür olmasını istiyor"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "eğer bu bir tür anlamındaysa %<typename %E%> deyin"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "geçersiz alan %qD kullanımı"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid use of pack expansion expression"
msgstr "void ifade kullanımı geçersiz"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, fuzzy, gcc-internal-format
#| msgid "%<...%> as arguments.)"
msgid "use %<...%> to expand argument pack"
msgstr "%<...%> kabul edeceği varsayılacak.)"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> is not a type"
msgid "use %<%T::%D%> instead"
msgstr "%<%T::%D%> bir tür değil"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "%q+D declared here, later in the translation unit"
msgstr "%q+D tanımlandıktan sonra satıriçi bildirilmiş"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT bir sınıf ya da isim alanı değil"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD ne bir sınıf ne de isim alanı"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT anonim türdür/tür kullanır"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
#| msgid "default argument for %q#D has type %qT"
msgid "template argument for %qD uses local type %qT"
msgstr "%q#D için öntanımlı argüman %qT türünde"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT değişkene göre değişen türde"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "bütünleyen ifade %qE bir sabit değil"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " %qD örneklenmeye çalışılıyor"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "%q#T için sınıf şablonu örneklenimi belirsiz"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "şablon olmayan %q#D'nin doğrudan örneklenimi"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
#| msgid "%q#D is not a non-static data member of %qT"
msgid "%qD is not a static data member of a class template"
msgstr "%q#D %qT'nin bir static olmayan üyesi değildir"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "%qD için eşleşen bir şablon yok"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "şablon olmayan tür %qT'nin doğrudan örneklenimi"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "%q#D'nin doğrudan örneklenimi"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "yinelenmiş doğrudan %q#D örneklenimi"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids the use of %<extern%> on explicit instantiations"
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ doğrudan örneklenimlerde %<extern%> kullanımına izin vermez"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "saklama sınıfı %qD şablon örneklenimine uygulanmış"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template %q#D"
msgid "explicit instantiation of non-class template %qD"
msgstr "şablon olmayan %q#D'nin doğrudan örneklenimi"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "şablon olmayan tür %qT'nin doğrudan örneklenimi"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "şablon tanımından önce %q#T'nin doğrudan örneklenimi"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ doğrudan örneklenimlerde %qE kullanımına izin vermez"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "yinelenmiş doğrudan %q#T örneklenimi"
@@ -35924,35 +35984,35 @@ msgstr "yinelenmiş doğrudan %q#T örneklenimi"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "bir tanımlama olmadan %qD'nin doğrudan örneklenimi"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth-NN to increase the maximum)"
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "%d lik azami şablon örneklenim derinliği %q+D örnekleniminde aşılıyor (azami değeri arttırmak için -ftemplate-depth-NN kullanın)"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "invalid catch parameter"
msgid "invalid template non-type parameter"
msgstr "yakalama parametresi geçersiz"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a valid type for a template constant parameter"
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#T bir şablon sabiti parametresi için geçerli bir tür değildir"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, fuzzy, gcc-internal-format
#| msgid "variable %qD may not have been initialized"
msgid "variable %q#D with %<auto%> type used in its own initializer"
@@ -35961,13 +36021,13 @@ msgstr "deÄŸiÅŸken %q+D ilklendirilmiÅŸ olmayabilir"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, fuzzy, gcc-internal-format
#| msgid "unable to emulate %qs"
msgid "unable to deduce %qT from %qE"
msgstr "%qs öykünümü mümkün değil"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -36171,7 +36231,7 @@ msgstr "tepe seviyede %<this%> kullanımı geçersiz"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "sözde yıkıcı isminde niteleyen etki alanı geçersiz"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "yetkin tür %qT, yıkıcı ismi ~%qT ile eslesmiyor"
@@ -36212,485 +36272,485 @@ msgstr "şablon parametre listesi içinde %q#T tanımı"
msgid "invalid definition of qualified type %qT"
msgstr "nitelikli tür %qT tanımı geçersiz"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "taban sınıf belirtimi geçersiz"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a template"
msgid "%qD is not captured"
msgstr "%qD bir ÅŸablon deÄŸil"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "iceren işlevden %<auto%> kullanımı"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr "iceren işlevden parametre kullanımı"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr " %q+#D burada bildirilmiÅŸ"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, fuzzy, gcc-internal-format
#| msgid "use of parameter from containing function"
msgid "use of parameter %qD outside function body"
msgstr "iceren işlevden parametre kullanımı"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "%qD şablon parametresi %qT türündeyse butunleyen ya da sırali türde olmadığından bir butunleyen sabit ifadesinde kullanılmaz"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "isim alanı %qD'nin ifade olarak kullanımı"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "sınıf sablonu %qT'nin ifade olarak kullanımı"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "uye %qD için istek çoklu miras kafesi içinde belirsiz"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qD bir sabit ifadesinde bulunamaz"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "%qE türü bilinmiyor"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a template type"
msgid "%qT is not an enumeration type"
msgstr "%qT bir şablon türü değil"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "saklatım sınıfı belirteçleri parametre bildiriminde geçersiz"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function %qD"
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "static olmayan üye işlev %qD kullanımı geçersiz"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
#| msgid "%qT is not an accessible base of %qT"
msgid "%qD is not a variable in clause %qs"
msgstr "%qT erişilebilir bir %qT tabanı değil"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "gerçeklenim değişkeni %qs private olarak bildirilmiş"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "%qE has reference type for %qs"
msgstr "%s %qT referans türünde şekilleniyor"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CRIS-port assertion failed: "
msgid "static assertion failed: %s"
msgstr "CRIS-port olumlaması başarısız: "
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
#| msgid "non-static declaration of %q+D follows static declaration"
msgid "non-constant condition for static assertion"
msgstr "%q+D statik olmayan bildirim statik bildirimi izliyor"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
#| msgid "Argument of SELECT statement at %L must be a scalar expression"
msgid "argument to decltype must be an expression"
msgstr "%L'deki SELECT deyiminin argümanı bir sabit ifadesi olmalı"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s aşırı yüklü işlevin adresini çözümleyemiyor"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "işlev %q+#D için soyut dönüş değeri türü geçersiz"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "işlev %q+#D için soyut dönüş değeri türü geçersiz"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
#| msgid "type %qs has virtual member functions"
msgid "%q#T has virtual base classes"
msgstr "%qs türü sanal üye işlevlere sahip"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "%1$J%<const%> %3$qT türü ile ilklendirilmemiş üye %2$qD"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
#| msgid "%q+D is normally a non-static function"
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%q+D normalde bir static olmayan iÅŸlevdir"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
#| msgid "friend declaration does not name a class or function"
msgid "expression %qE does not designate a constexpr function"
msgstr "kardeş bildirimi bir sınıf veya işlevi isimlendirmiyor"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "işlev olmayan %qD ye çağrı"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD called in a constant expression"
msgstr "%qD bir sabit ifadesinde bulunamaz"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
#| msgid "%q+D was used with no prototype before its definition"
msgid "%qD used before its definition"
msgstr "%q+D tanımlanmadan önce prototipsiz kullanılmış"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
#| msgid "protocol %qs has circular dependency"
msgid "call has circular dependency"
msgstr "protokol %qs döngüsel bağımlılık içeriyor"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "%d lik azami şablon örneklenim derinliği %qD örnekleniminde aşılıyor (azami değeri arttırmak için -ftemplate-depth-NN kullanın)"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
#| msgid "%s cannot appear in a constant-expression"
msgid "%q+E is not a constant expression"
msgstr "%s bir sabit ifadesinde görünemez"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript out of bound"
msgstr "dizi indisi bir tamsayı değil"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
#| msgid "%s cannot appear in a constant-expression"
msgid "%qE is not a constant expression"
msgstr "%s bir sabit ifadesinde görünemez"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "mutable %qD is not usable in a constant expression"
msgstr "%qD bir sabit ifadesinde bulunamaz"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
#| msgid "size of array %qD is not an integral constant-expression"
msgid "the value of %qD is not usable in a constant expression"
msgstr "%qD dizisinin boyutu bir tümleyen sabit ifadesi değil"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "no field %qD found in union being initialized"
msgid "%qD used in its own initializer"
msgstr "ilklendirilen union içinde %qD diye bir alan yok"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
#| msgid "%q+D is not a function,"
msgid "%q#D is not const"
msgstr "%q+D bir iÅŸlev deÄŸil,"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
#| msgid "%q+#D is private"
msgid "%q#D is volatile"
msgstr "%q+#D private'dir"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD was not initialized with a constant expression"
msgstr "%qD bir sabit ifadesinde bulunamaz"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
#| msgid "%qD was not declared in this scope"
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD bu etki alanında bildirilmemiş"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
#| msgid "expression in new-declarator must have integral or enumeration type"
msgid "%qD does not have integral or enumeration type"
msgstr "new bildirimli ifade bütünleyici ya da numaralama türünde olmalı"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "koşullu ifade içinde enum ve enum olmayan türler"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "expression %qE is not a constant-expression"
msgstr "bütünleyen ifade %qE bir sabit değil"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "unexpected expression %qE of kind %s"
msgstr "ifade umuluyordu"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "dizi boyutu bir tümleyen sabit ifadesi değil"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "pointer comparison expression is not a constant expression"
msgstr "bütünleyen ifade %qE bir sabit değil"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "division by zero is not a constant-expression"
msgstr "dizi boyutu bir tümleyen sabit ifadesi değil"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "ilklendiricide sabit olmayan dizi indisi"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of file in '%s'"
msgid "unexpected AST of kind %s"
msgstr "'%s' de umulmadık dosya sonu"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to %q#T"
msgid "cannot capture %qE by reference"
msgstr "%q#T türüne başvuru bildirilemez"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
#| msgid "%<this%> is unavailable for static member functions"
msgid "%<this%> was not captured for this lambda function"
msgstr "statik üye işlevlerde %<this%> kullanılmaz"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "%qV niteleyicileri %qT'ye uygulanamaz"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "%qE özniteliği sadece Java sınıf tanımlarına uygulanabilir"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "%qE özniteliği sadece sınıf tanımlarına uygulanabilir"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE artik kullanilmiyor; g++ vtables simdi öntanımlı olarak COM-uyumludur"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "istenen init_priority bir tamsayı sabit değil"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "%qE özniteliği sadece sınıf türünde nesnelerin dosya bağlamı tanımlarında kullanılabilir"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "istenen init_priority aralık dışında"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "istenen init_priority iç kullanim için ayrilmiştir"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "bu platformda %qE özniteliği desteklenmiyor"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_* denetimi: %2$s dosyasının %3$d. satırındaki %1$s içinde başarısız"
@@ -36793,485 +36853,491 @@ msgstr "ISO C++ işlev türünde bir ifadeye %qs uygulanmasına izin vermez"
msgid "invalid use of non-static member function"
msgstr "statik olmayan üye işlev kullanımı geçersiz "
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "gecicinin adresi alıniyor"
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
#| msgid "deprecated conversion from string constant to %qT'"
msgid "deprecated conversion from string constant to %qT"
msgstr "dizge sabitten %qT'ye dönüşüm artik önerilmiyor"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "sınıf olmayan %3$qT türündeki %2$qE içindeki %1$qD üyesi için istek"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, fuzzy, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "sınıf olmayan %3$qT türündeki %2$qE içindeki %1$qD üyesi için istek"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "static olmayan veri üyesi %qE kullanımı geçersiz"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "NULL nesnenin static olmayan veri üyesi %qD'ye erişim geçersiz"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(belkide %<offsetof%> makrosu yanlış kullanıldı)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
#| msgid "invalid access to non-static data member %qD of NULL object"
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "NULL nesnenin static olmayan veri üyesi %qD'ye erişim geçersiz"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
#| msgid "qualified type %qT does not match destructor name ~%qT"
msgid "object type %qT does not match destructor name ~%qT"
msgstr "yetkin tür %qT, yıkıcı ismi ~%qT ile eslesmiyor"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "iptal edilen tür %qT iken yıkıcı %qT ile ilişkili"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%>, %qT'nin bir üyesi değil"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT %qT tabanında değil"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD %qE isimli üyeye sahip değil"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD bir üye şablon işlevi değil"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT bir nesne göstericisi türü değil"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of array indexing on pointer to member"
msgstr "uye göstericisinde %qs kullanımı geçersiz"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "uye göstericisinde %qs kullanımı geçersiz"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of implicit conversion on pointer to member"
msgstr "uye göstericisinde %qs kullanımı geçersiz"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "dizi baÅŸvurusunda altindis yok"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ sol yan olmayan dizi indislemesine izin vermez"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "%<register%> olarak bildirilmiÅŸ dizi indislemesi"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "indisli değer ne dizi ne de bir gösterici"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "%qE kullanimında nesne eksik"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ program içinden %<::main%> çağrısına izin vermez"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, fuzzy, gcc-internal-format
#| msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>"
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "%<%E (...)%> içinde üye gösterici işlevi çağrısı için %<.*%> veya %<->*%> kullanılmalı"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qE bir iÅŸlev olarak kullanilamaz"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to constructor %q#D"
msgstr "%s %q+#D için argümanlar çok fazla"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to constructor %q#D"
msgstr "%s %q+#D için argümanlar çok az"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qs"
msgid "too many arguments to member function %q#D"
msgstr "%qs işlevi için argümanlar çok fazla"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qs"
msgid "too few arguments to member function %q#D"
msgstr "%qs işlevi için argümanlar çok az"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qs"
msgid "too many arguments to function %q#D"
msgstr "%qs işlevi için argümanlar çok fazla"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qs"
msgid "too few arguments to function %q#D"
msgstr "%qs işlevi için argümanlar çok az"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to method %q#D"
msgstr "%s %q+#D için argümanlar çok fazla"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to method %q#D"
msgstr "%s %q+#D için argümanlar çok az"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "işlev için çok fazla argüman belirtildi"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "işlev için çok az argüman belirtildi"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "%P parametresi %qD içinde tamamlanmamış %qT türünde"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "parametre %P tamamlanmamış %qT türünde"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "aşırı yüklü işlevden %qT türüne dönüşüm yapildigi varsayılıyor"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "aritmetik içinde NULL kullanımı"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "left rotate count is negative"
msgstr "%s döngü sayısı negatif"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "right rotate count is negative"
msgstr "%s döngü sayısı negatif"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "left rotate count >= width of type"
msgstr "%s döngü sayısı >= tür genişligi"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "right rotate count >= width of type"
msgstr "%s döngü sayısı >= tür genişligi"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behaviour"
msgstr "%q+D zayıf bildirimi ilk kullanımdan sonra belirsiz davranışla sonuçlanıyor"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, fuzzy, gcc-internal-format
#| msgid "the address of %qD, will always evaluate as %<true%>"
msgid "the address of %qD will never be NULL"
msgstr "%qD adresi, daima %<true%> olarak deÄŸerlendirilecek"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ da gösterici ile tamsayı arasında karşılaştırmaya izin verilmez"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "gerçel sayı olmayan argümanlar arasında düzenlenmemiş karşılaştırma"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "%qT ve %qT türündeki terimler iki terimli `%qO' için geçersiz"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ bir çıkarma içinde %<void *%> türde gösterici kullanımına izin vermez"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ bir çıkartma işlemi içindeki bir işlev göstericisi kullanımına izin vermez"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ bir çıkartma işlemi içinde bir yöntem göstericisi kullanımına izin vermez"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "gösterici aritmetiginde tamamlanmamış ture gösterici kullanımı geçersiz"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of constructor %qE"
msgstr "gecicinin adresi alıniyor"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of destructor %qE"
msgstr "gecicinin adresi alıniyor"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "%qE kullanımı üye işleve gösterici biçiminde geçersiz"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr " bir nitelemeli kimlik gerekli"
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, fuzzy, gcc-internal-format
#| msgid "parenthesis around %qE cannot be used to form a pointer-to-member-function"
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "parantez icene alınmis %qE üye işleve gösterici biçiminde kullanilamaz"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ üye işleve bir gösterici şekillendirecek bir niteliksiz ya da parantezli statik olmayan üye işlevin adresinin alınmasına izin vermez. %<&%T::%D%> denebilir."
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ üye işleve bir gösterici şekillendirecek bir sınır üye işlevin adresinin alınmasına izin vermez. %<&%T::%D%> denebilir"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "gecicinin adresi alıniyor"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of xvalue (rvalue reference)"
msgstr "gecicinin adresi alıniyor"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ %<::main%> işlevinin adresinin alınmasına izin vermez"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ bir sol yan olmayan ifadeye dönüşüm adresi alınmasına izin vermez"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "referans üye %qD için gösterici oluşturulamaz"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ bir enum'um %s-lenmesine izin vermez"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ bir enum'um %s-lenmesine izin vermez"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "%s içi boş %qT türüne bir gösterici olamaz"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "%s içi boş %qT türüne bir gösterici olamaz"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type %qT"
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ bir göstericinin %s işlemine %qT türündeyse izin vermez"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type %qT"
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ bir göstericinin %s işlemine %qT türündeyse izin vermez"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "terim olarak ifade geçersiz"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "bir sağ taraf ifadesi olan %<this%>'in adresi alınamaz"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "%qD doğrudan yazmaç değişkeninin adresi istendi"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr " %qD için adres istegi (%<register%> olarak bildirilmiş olan)"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, fuzzy, gcc-internal-format
#| msgid "initializer for %qT must be brace-enclosed"
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "%qT için ilklendirici {} içinde olmalı"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in initializer"
msgstr "%s ifade listesi bilesik ifade olarak ele alıniyor"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in mem-initializer"
msgstr "%s ifade listesi bilesik ifade olarak ele alıniyor"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in functional cast"
msgstr "%s ifade listesi bilesik ifade olarak ele alıniyor"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "%s ifade listesi bilesik ifade olarak ele alıniyor"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
#| msgid "conversion from %qT to %qT discards qualifiers"
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "%qT türünden %qT türüne dönüşüm niteleyicileri iptal ediyor"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type %qT to type %qT"
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "%qT türünden %qT türüne static_cast geçersiz"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type %qT to type %qT"
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "%qT türünden %qT türüne static_cast geçersiz"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "%qT türünden %qT türüne static_cast geçersiz"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "%qT'den %qT'ye dönüşüm"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "%qT türündeki bir sağ taraf değerinin %qT türüne dönüşümü geçersiz"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "%qT'den %qT'ye tür dönüşümü hassasiyet kaybi oluşturuyor"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "%qT türünden %qT türüne dönüşüm hedef türün hizalama gereksinimini arttiriyor"
@@ -37280,234 +37346,234 @@ msgstr "%qT türünden %qT türüne dönüşüm hedef türün hizalama gereksini
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ işlev ve nesne göstericileri arasında dönüşüme izin vermez"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "%qT türünden %qT türüne const_cast geçersiz"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "ne bir gösterici türü ne de bir veri üyesine gösterici türü olan %qT ile const_cast kullanımı geçersiz"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "bir gösterici ya da bir işlev türüne referans olan %qT türü ile const_cast kullanımı geçersiz"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "%qT türündeki bir sağ taraf değerinden %qT türüne const_cast geçersiz"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "%qT türünden %qT türüne const_cast geçersiz"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ %qT dizi türüne dönüşüme izin vermez"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "%qT işlev türüne dönüşüm geçersiz"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " %<%Q(%#T, %#T)%> nin gelisiminde"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "ilklendiricide sabit olmayan dizi indisi"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "%qT'nin %qT'ye atanmasında türler uyumsuz"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
#| msgid "bad array initializer"
msgid "array used as initializer"
msgstr "dizi ilklendirici hatalı"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "invalid array assignment"
msgstr "atamanın sol tarafı geçersiz"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " üye işleve gösterici dönüşümünde"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "sanal taban %qT üzerinden üye göstericisine dönüşüm"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " üyeye gösterici dönüşümünde"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "%qT'ye %qT'den dönüşüm geçersiz"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "%4$qD işlevinin %3$qP. argümanı için %1$qT türü %2$qT türüne dönüştürülemez"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "%4$qD işlevinin %3$qP. argümanı için %1$qT türü %2$qT türüne dönüştürülemez"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in argument passing"
msgstr "%qT %qT'ye %s içinde dönüştürülemez"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT"
msgstr "%qT %qT'ye %s içinde dönüştürülemez"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in initialization"
msgstr "%qT %qT'ye %s içinde dönüştürülemez"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in return"
msgstr "%qT %qT'ye %s içinde dönüştürülemez"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in assignment"
msgstr "%qT %qT'ye %s içinde dönüştürülemez"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "%2$qE işlevinin %1$d. argümanı bir biçim özniteliği adayı olabilir"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
#| msgid "return type might be a candidate for a format attribute"
msgid "parameter might be a candidate for a format attribute"
msgstr "dönüş türü bir biçim özniteliği adayı olabilir"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of conversion might be a candidate for a format attribute"
msgstr "işlev çağrısı argümanı bir biçim özniteliği için aday olabilir"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of initialization might be a candidate for a format attribute"
msgstr "işlev çağrısı argümanı bir biçim özniteliği için aday olabilir"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
#| msgid "assignment left-hand side might be a candidate for a format attribute"
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "atamada sol taraf bir biçim özniteliği adayı olabilir"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, fuzzy, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "%2$q+D işlevinin %1$P. argümanına aktarımda"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "geçiciye başvuru dönüyor"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "sag yansiz dönüşluye referans"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "yerel deÄŸiÅŸken %q+D'ye referans donduruldu"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "yerel deÄŸiÅŸken %q+D adresi donduruldu"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "bir yıkıcıdan değer donuyor"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "bir kurucunun bir işlev deneme blokunun bir tutamagından dondurulemez"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "kurucudan bir deÄŸer dondurulemez"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "new türleri bir dönüş türünde tanımlanamayabilir"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "%qT donduren işlevde değer içermeyen return"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "'void' dönüşlu işlevde değer içeren `return' deyimi"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%>', %<throw()%> olarak bildirilmedikce (ya da -fcheck-new etkinken) NULL donmemeli"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -38083,7 +38149,7 @@ msgstr "%L'deki yineleyici adımı sıfır olamaz"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -40410,27 +40476,27 @@ msgstr "POINTER değerli işlev %L'deki atamanın sağ tarafında görünüyor"
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -40662,45 +40728,45 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "Değişken '%s' (%L'de) ifade içinde görünemez"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "Değişken '%s' (%L'de) ifade içinde görünemez"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "Değişken '%s' (%L'de) ifade içinde görünemez"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -40715,15 +40781,15 @@ msgstr "truthvalue_conversion içinde umulmadık tür"
msgid "can't open input file: %s"
msgstr "girdi dosyası açılamıyor: %s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "creating array of %qT"
msgid "Creating array temporary at %L"
msgstr "%qT dizisi oluşturulması"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Missing argument list in function '%s' at %C"
msgid "Removing call to function '%s' at %L"
@@ -40843,12 +40909,12 @@ msgstr "%L'de tanımlanmış atamanın ilk argümanı INTENT(IN) veya INTENT(INO
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "%L'de tanımlanmış atamanın ikinci argümanı INTENT(IN) olmalıdır"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "%L'deki işleç arayüzünün ilk argümanı INTENT(IN) olmalıdır"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "%L'deki işleç arayüzünün ikinci argümanı INTENT(IN) olmalıdır"
@@ -42802,137 +42868,137 @@ msgstr "Modul dosyasına yazarken hata: %s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "İsim listesinin ismi %s USE ilişkisiyle %s yapılamaz"
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr "'%s' ismi (%C'deki) ÅŸu an ki program biriminden '%s'e belirsiz bir baÅŸvurudur"
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr "Başvurulan '%s' simgesi (%L'de), '%s' modülünde yok"
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr "Başvurulan '%s' işleci (%L'de), '%s' modülünde yok"
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr "Başvurulan '%s' yerleşik işleci (%L'de), '%s' modülünde yok"
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "Modül dosyası`%s' yazmak için açılamıyor (%C'de): %s"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "Modül dosyası `%s' yazmak için açılırken hata: %s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file '%s': %s\n"
msgid "Can't delete module file '%s': %s"
msgstr "%s: `%s' silinemiyor: %s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: warning: can't rename file '%s' to '%s': %s\n"
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s: UYARI: `%s' dosyasının ismi `%s' yapılamıyor: %s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete aux info file '%s': %s\n"
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s: yardımcı bilgi dosyası `%s' silinemiyor: %s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' at %C already declared at %L"
msgid "Symbol '%s' already declared"
msgstr "'%s' bileÅŸeni (%C'deki) zaten %L'de bildirilmiÅŸ"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L is not included in the selected standard"
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "%L'deki yerleşik '%s' seçilmiş standartta bulunmuyor"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr "Başvurulan '%s' simgesi (%L'de), '%s' modülünde yok"
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr "Başvurulan '%s' simgesi (%L'de), '%s' modülünde yok"
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Fortran 2003: IOMSG tag at %L"
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Fortran 2003: %L'de IOMSG etiketi"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "Modül dosyası`%s' okumak için açılamıyor (%C'de): %s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "Bizim oluşturduğumuz modülün aynısı (USE olamaz)/kullanılamaz!?"
@@ -43029,7 +43095,7 @@ msgstr "%C'deki ELSE deyiminden sonra umulmadık döküntü"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "%C'deki ELSE deyiminden sonra umulmadık döküntü"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "%L'deki IF deyimi bir sabit LOGICAL ifadesi gerektirir"
@@ -44453,7 +44519,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "Yafta %d (%L'de başvurulu) hiç tanımlanmamış"
@@ -44617,7 +44683,7 @@ msgstr "Ä°ÅŸlev '%s' (%L'de) bir INTRINSIC ama bir yerleÅŸik ile uyumlu deÄŸil"
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "'%s' özel işlevi (%L'de) çözümlenemiyor"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "'%s' işlevi (%L'de) hiç IMPLICIT tür içermiyor"
@@ -45029,193 +45095,193 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "Öğesel yordamın '%s' argümanı değişmez olmalı (%L'de)"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' at %L is not a VALUE"
msgid "'%s' at %L should be a SUBROUTINE"
msgstr "'%s' %L'de bir VALUE deÄŸil"
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgid "'%s' at %L should be a FUNCTION"
msgstr "Yerleşik işleç arayüzü '%s' %L'de bir FUNCTION olmalı"
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s' (%L'de) bir değişmez olmalıdır"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Cray pointer at %C must be an integer."
msgid "Deleted feature: %s at %L must be integer"
msgstr "%C'deki Cray göstericisi bir tamsayı olmalı."
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s' (%L'de) bir INTEGER olmalıdır"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "%L'de Do döngüsündeki adım ifadesi sıfır olamaz"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "%L'de FORALL indis ismi bir değişmez INTEGER olmalıdır"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "%L'de FORALL başlatma ifadesi bir değişmez INTEGER olmalıdır"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "%L'de FORALL son ifadesi bir değişmez INTEGER olmalıdır"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "%L'deki FORALL adım ifadesi bir değişmez %s olmalıdır"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "%L'deki FORALL adım ifadesi sıfır olamaz"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "Değişken '%s' (%L'de) ifade içinde görünemez"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in ALLOCATE statement at %L must be ALLOCATABLE or a POINTER"
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr "%L'de ALLOCATE deyimindeki ifade ya bir POINTER ya da ALLOCATABLE olmalı"
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "%L'deki ALLOCATE deyimde dizi belirtimi gerekli "
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array specification required in ALLOCATE statement at %L"
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "%L'deki ALLOCATE deyimde dizi belirtimi gerekli "
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "%L'deki ALLOCATE deyimde dizi belirtimi hatalı"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Bad array specification in ALLOCATE statement at %L"
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "%L'deki ALLOCATE deyimde dizi belirtimi hatalı"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Bad array specification in ALLOCATE statement at %L"
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "%L'deki ALLOCATE deyimde dizi belirtimi hatalı"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "%L'deki ASSIGN deyimi bir sabit öntanımlı INTEGER değişken gerektirir"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "%L'deki yafta %L'deki GOTO deyimiyle aynı blokta değil"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "%L'deki UNIT belirtimi ya bir INTEGER ifadesi ya da bir CHARACTER değişkeni olmalıdır"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -45224,179 +45290,179 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr "%L'deki CASE etiketi ile %L'deki CASE etiketi birbirinin üzerine taşıyor"
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "%L'de CASE deyimindeki ifade %s türünde olmalı"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in CASE statement at %L must be kind %d"
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "%L'de CASE deyimindeki ifade %d. çeşit olmalı"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "%L'de CASE deyimindeki ifade bir değişmez olmalı"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr "%L'de hesaplanmış GOTO deyimindeki seçim ifadesi bir değişmez tamsayı ifadesi olmalıdır"
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "%L'deki SELECT deyiminin argümanı %s olamaz"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in CASE statement at %L must be of type %s"
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "%L'de CASE deyimindeki ifade %s türünde olmalı"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr "%L'deki DEFAULT CASE deyiminden sonra %L'de ikinci bir DEFAULT CASE olamaz"
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr "%L'deki CASE deyiminde mantıksal aralığa izin verilmez"
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Logical range in CASE statement at %L is not allowed"
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr "%L'deki CASE deyiminde mantıksal aralığa izin verilmez"
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr "%L'deki aralık belirtimi asla eşleşmeyebilir"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr "%L'deki mantıksal SELECT CASE blokunun ikiden fazla case'i var"
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Global name '%s' at %L is already being used as a %s at %L"
msgid "Associate-name '%s' at %L is used as array"
msgstr "Genel isim '%s' (%L'de), zaten %s (%L'de) olarak kullanılıyor"
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Syntax error in EQUIVALENCE statement at %L"
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "%L'deki EQUIVALENCE deyiminde söz dizimi hatası"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type '%s' at %C is being used before it is defined"
msgid "Derived type '%s' at %L must be extensible"
msgstr "Türetilmiş '%s' türü (%C'deki) tanımından önce kullanılıyor"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type name '%s' at %C already has a basic type of %s"
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "Türetilmiş tür ismi '%s' %C'de zaten temel %s türünde"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have POINTER components"
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr "%L'deki veri aktarım elemanının POINTER bileşenleri olamaz"
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have POINTER components"
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr "%L'deki veri aktarım elemanının POINTER bileşenleri olamaz"
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have PRIVATE components"
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr "%L'deki veri aktarım elemanının PRIVATE bileşenleri olamaz"
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr "%L'deki veri aktarım elemanının PRIVATE bileşenleri olamaz"
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr "%L'deki veri aktarım elemanı tahmini boyutlu bir diziye bir tam başvuru olamaz"
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL index-name at %L must be a scalar INTEGER"
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "%L'de FORALL indis ismi bir değişmez INTEGER olmalıdır"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "%L'deki ASSIGN deyimi bir sabit öntanımlı INTEGER değişken gerektirir"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "%L'deki ASSIGN deyimi bir sabit öntanımlı INTEGER değişken gerektirir"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument dim at %L must be scalar"
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "%L'de boyut argümanı değişmez olmalı"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of SELECT statement at %L must be a scalar expression"
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "%L'deki SELECT deyiminin argümanı bir sabit ifadesi olmalı"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of ACOS at %L must be between -1 and 1"
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "%L'deki ACOS argümanı -1 .. 1 arasında olmalı"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "%L'deki deyim %L'deki dallanma deyimi için geçerli bir dallanma hedef deyimi değildir"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Branch at %L causes an infinite loop"
msgid "Branch at %L may result in an infinite loop"
@@ -45404,12 +45470,12 @@ msgstr "%L'deki dallanma bir sonsuz döngüye sebep oluyor"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -45417,1017 +45483,1017 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "%L'deki yafta %L'deki GOTO deyimiyle aynı blokta değil"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr "%L'deki WHERE maskesi uyumsuz biçimde"
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "%L'deki WHERE atama hedefi uyumsuz biçimde"
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "%L'deki WHERE içinde desteklenmeyen deyim"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "%L'de bir FORALL indis deÄŸiÅŸkenine atama"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The FORALL with index '%s' cause more than one assignment to this object at %L"
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr "'%s' indisli FORALL %L'de bu nesneye birden fazla atamaya sebep oluyor"
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr "Bir dış FORALL oluşumu zaten bu isimde bir indise sahip (%L'de)"
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "%L'deki WHERE/ELSEWHERE deyimi bir deÄŸiÅŸmez LOGICAL dizisi gerektirir"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Right side of assignment at %L is a derived type containing a POINTER in a PURE procedure"
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr "%L'deki atamanın sağ tarafı bir PURE yordamda bir POINTER içeren türetilmiş bir türdür"
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Right side of assignment at %L is a derived type containing a POINTER in a PURE procedure"
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr "%L'deki atamanın sağ tarafı bir PURE yordamda bir POINTER içeren türetilmiş bir türdür"
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assignment to a FORALL index variable at %L"
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "%L'de bir FORALL indis deÄŸiÅŸkenine atama"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "%L'deki ASSIGNED GOTO deyimi bir INTEGER deÄŸiÅŸken gerektirir"
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "'%s' değişkenine %L'de bir hedef etiketi atanmış olmamalıydı"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Alternate RETURN statement at %L requires an INTEGER return specifier"
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "Diğer RETURN deyimi %L'de bir INTEGER dönüş belirteci gerektirir"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr "%L'deki ASSIGN deyimi bir sabit öntanımlı INTEGER değişken gerektirir"
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr "%L'deki aritmetik IF deyimi bir sayısal ifade gerektirir"
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr "%L'deki DO WHILE döngüsünün çıkış koşulu bir sabit LOGICAL ifadesi olmalıdır"
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL mask clause at %L requires a LOGICAL expression"
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "%L'deki FORALL maske deyimi bir LOGICAL ifadesi gerektirir"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "size of array %qs is too large"
msgid "String length at %L is too large"
msgstr "%qs dizisinin boyutu çok büyük"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "Ayrılabilir '%s' dizisi %L'de ertelenmiş bir biçimde olmalı"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr "'%s' sabit nesnesi %L'de ALLOCATABLE olmayabilir"
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "'%s' dizi göstericisi %L'de ertelenmiş bir biçimde olmalı"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "'%s' dizisi %L'de ertelenmiş bir biçimde olamaz"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "Modül veya ana program dizisi '%s' %L'de sabit biçimde olmalı"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Possible frontend bug: Deferred array size without pointer or allocatable attribute."
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr "Olası önyüz hatası: gösterici veya tahsis edilebilir öznitelik olmaksızın ertelenmiş dizi boyutu"
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr "%L'deki tahmini karakter uzunluklu öğe ya bir sözde argüman ya da bir PARAMETER olmalı"
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr "'%s' %L'de bu bağlam için sabit karakter uzunluklu olmalı"
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' at %L must have constant character length in this context"
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "'%s' %L'de bu bağlam için sabit karakter uzunluklu olmalı"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "Ayrılabilir '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "Harici '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "Sözde '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "YerleÅŸik '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "iÅŸlev sonucu '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "Özdevinimli dizi '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr "Karakter değerli deyim işlevi '%s' %L'de sabit uzunlukta olmalı"
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr "'%s' bir PRIVATE türündedir ve '%s' (%L'de PUBLIC tanımlı) için bir sözde argüman olamaz"
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Function result '%s' at %L cannot have an initializer"
msgid "Function '%s' at %L cannot have an initializer"
msgstr "iÅŸlev sonucu '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "Harici nesne '%s' %L'de bir ilklendiriciye sahip olamayabilir"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L must have at least two arguments"
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "yerleşik `%s' için (%L'de) en az iki argüman olmalı"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "'%s' beyan işlevine bir fiili argüman olarak izin verilmez (%L'de)"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "CHARACTER(*) iÅŸlevi '%s' %L'de dizi deÄŸerli olamaz"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "CHARACTER(*) işlevi '%s' %L'de gösterici değerli olamaz"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "CHARACTER(*) işlevi '%s' %L'de katıksız olamaz"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr "CHARACTER(*) işlevi '%s' %L'de iç içe olamaz"
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "CHARACTER(*) işlevi '%s' %L'de katıksız olamaz"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "PROCEDURE özniteliği '%s' içinde NAMELIST özniteliği ile çelişiyor (%L'de)"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "PROCEDURE özniteliği '%s' içinde NAMELIST özniteliği ile çelişiyor (%L'de)"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "PROCEDURE özniteliği '%s' içinde NAMELIST özniteliği ile çelişiyor (%L'de)"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "%s özniteliği ile %s özniteliği '%s' içinde %L'de çelişiyor"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr "Yerleşik işleç arayüzü '%s' %L'de bir FUNCTION olmalı"
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "Kullanıcı işleci yordamı '%s' (%L'de) için en azından bir argüman bulunmalı"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of ICHAR at %L must be of length one"
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "%L'de ICHAR'ın argümanı bir uzunlukta olmalı"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) bir POINTER olmalı"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) ALLOCATABLE olmalı"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must not be OPTIONAL"
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) OPTIONAL olmamalı"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "First argument of operator interface at %L must be INTENT(IN)"
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "%L'deki işleç arayüzünün ilk argümanı INTENT(IN) olmalıdır"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "Kullanıcı işleci yordamı '%s' (%L'de) için en azından bir argüman bulunmalı"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Initialization at %C is not allowed in a PURE procedure"
msgid "Finalization at %L is not yet implemented"
msgstr "%C'de ilklendirmeye bir PURE iÅŸlevinde izin verilmez"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' called with an implicit interface at %L"
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "Yordam '%s' bir örtük arayüz ile çağrılmış (%L'de)"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' in %s at %L is neither function nor subroutine"
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "'%s' yordamı (%s içinde, %L'de) be işlev ne de altyordam"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "Kullanıcı işleci yordamı '%s' (%L'de) için en azından bir argüman bulunmalı"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) türetilmemiş bir türde olmalı"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a scalar"
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "`%s' argümanı `%s' yerleşiği için %L'de bir değişmez olmalı"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) ALLOCATABLE olmalı"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) bir POINTER olmalı"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' at %C is a PRIVATE component of '%s'"
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "'%s' bileÅŸeni (%C'deki) '%s'nin bir PRIVATE bileÅŸenidir"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array pointer '%s' at %L must have a deferred shape"
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "'%s' dizi göstericisi %L'de ertelenmiş bir biçimde olmalı"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN)"
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "'%s' ('%s' pure işlevinin) argümanı INTENT(IN) olmalıdır (%L'de) INTENT(IN)"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "User operator procedure '%s' at %L must have at least one argument"
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "Kullanıcı işleci yordamı '%s' (%L'de) için en azından bir argüman bulunmalı"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) türetilmemiş bir türde olmalı"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of statement function at %L must be scalar"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "Deyim işlevinin '%s' argümanı değişmez olmalı (%L'de)"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of elemental procedure at %L cannot have the POINTER attribute"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "Öğesel yordamın '%s' argümanı POINTER özniteliğine sahip olamaz (%L'de)"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "`%s' argümanı `%s' yerleşiği için (%L'de) ALLOCATABLE olmalı"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' of '%s' at %L must have constant array bounds."
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "'%s' ('%s'in bileşeni) %L'de sabit dizi sınırlarına sahip olmalı"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Character length of component '%s' needs to be a constant specification expression at %L."
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr "Bileşen karakter uzunluğu '%s'in %L'de bir sabit belirtim ifadesi olması gerekir"
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr "Bileşen '%s' bir PRIVATE türdür ve '%s' (%L'de PUBLIC tanımlı) bileşeni olamaz"
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component %s of SEQUENCE type declared at %C does not have the SEQUENCE attribute"
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "SEQUENCE türünün %s bileşeni SEQUENCE özniteliğine sahip değil (%C'de)"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The derived type '%s' at %L is of type '%s', which has not been defined."
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr "Türetilmiş '%s' türü (%L'de) tanımlanmamış olan '%s' türündedir."
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' of '%s' at %L must have constant array bounds."
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "'%s' ('%s'in bileşeni) %L'de sabit dizi sınırlarına sahip olmalı"
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assumed size array '%s' in namelist '%s'at %C is not allowed."
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "'%s' tahmini boyutlu dizisine '%s' isim listesinde izin verilmiyor (%C'de)."
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PRIVATE symbol '%s' cannot be member of PUBLIC namelist at %L"
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr "'%s' PRIVATE simgesi %L'de PUBLIC isim listesi üyesi olamaz"
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PRIVATE symbol '%s' cannot be member of PUBLIC namelist at %L"
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr "'%s' PRIVATE simgesi %L'de PUBLIC isim listesi üyesi olamaz"
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "PROCEDURE özniteliği '%s' içinde NAMELIST özniteliği ile çelişiyor (%L'de)"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Parameter array '%s' at %L cannot be automatic or assumed shape"
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "Parametre dizisi '%s' %L'de özdevinimli veya tahmini biçimli olamaz"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr "Örtük olarak PARAMETER türlü '%s' %L'de sonraki bir IMPLICIT türle eşleşmiyor"
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "%L'de PARAMETER içindeki türetilmiş tür uyumsuz"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "PROCEDURE özniteliği '%s' içinde NAMELIST özniteliği ile çelişiyor (%L'de)"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "PROCEDURE özniteliği '%s' içinde NAMELIST özniteliği ile çelişiyor (%L'de)"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "%L'deki tahmini boyutlu dizi bir sözde argüman olmalı"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assumed shape array at %L must be a dummy argument"
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "Tahmini boyutlu dizi bir sözde argüman olmalı"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "%L'deki simge bir DUMMY deÄŸiÅŸken deÄŸil"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Character-valued statement function '%s' at %L must have constant length"
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "Karakter değerli deyim işlevi '%s' %L'de sabit uzunlukta olmalı"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "The derived type '%s' at %L is of type '%s', which has not been defined."
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr "Türetilmiş '%s' türü (%L'de) tanımlanmamış olan '%s' türündedir."
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'"
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "PUBLIC işlev '%s' %L'de PRIVATE '%s' türünde olamaz"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr "INTENT(OUT) sözde argüman '%s' %L'de ASSUMED SIZE olduğundan bir öntanımlı ilklerdiriciye sahip olamaz"
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "Sözde argüman '%s' (%L'de) INTENT(OUT) olamaz"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Function result '%s' at %L cannot have an initializer"
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "iÅŸlev sonucu '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array '%s' at %L cannot have a deferred shape"
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "'%s' dizisi %L'de ertelenmiş bir biçimde olamaz"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Allocatable array '%s' at %L must have a deferred shape"
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "Ayrılabilir '%s' dizisi %L'de ertelenmiş bir biçimde olmalı"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "%L'deki sözde yordama ELEMENTAL yordamında izin verilmez"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr "BLOCK DATA öğesi '%s' %L'de COMMON içinde olmalıdır"
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy '%s' at %L cannot have an initializer"
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "Sözde '%s' %L'de bir ilklendiriciye sahip olamaz"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr "DATA deyiminde %L'de sabit olmayan dizi bölümü"
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr "%L'deki DATA deyiminde değerden çok değişken var"
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr "%L'deki DATA deyiminde değişkenden çok değer var"
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "%d yaftası %L'de tanımlanmış ama kullanılmamış"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "%d yaftası %L'de tanımlanmış ama kullanılamıyor"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr "Türetilmiş tür değişkeni '%s' %L'de bir EQUIVALENCE nesnesi olarak SEQUENCE özniteliğine sahip olmalı"
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr "Türetilmiş tür değişkeni '%s' %L'de gösterici bileşen(ler)le bir EQUIVALENCE nesnesi olamaz"
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Derived type variable '%s' at %L with default initializer cannot be an EQUIVALENCE object"
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr "Türetilmiş tür değişkeni '%s' %L'de öntanımlı ilklendiriciyle bir EQUIVALENCE nesnesi olamaz"
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr "Türetilmiş tür değişkeni '%s' %L'de gösterici bileşen(ler)le bir EQUIVALENCE nesnesi olamaz"
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "%L'deki EQUIVALENCE deyiminde söz dizimi hatası"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr "Ortak blok üyesi '%s' (%L'de), '%s' pure yordamındaki bir EQUIVALENCE nesnesi olamaz"
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "'%s' isimli sabiti %L'de bir EQUIVALENCE nesnesi olamaz"
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr "Sınırları sabit olmayan '%s' dizisi (%L'de) bir EQUIVALENCE nesnesi olamaz"
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr "Yapı bileşeni '%s' %L'de bir EQUIVALENCE nesnesi olamaz"
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "%L'deki altdizge sıfır uzunlukta"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'"
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "PUBLIC işlev '%s' %L'de PRIVATE '%s' türünde olamaz"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "ENTRY '%s' %L'de hiç IMPLICIT tür içermiyor"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "Yerleşik işleç arayüzü '%s' %L'de bir FUNCTION olmalı"
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr "Kullanıcı işleci yordamı '%s' %L'de tahmini karakter uzunluğunda olamaz"
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "Kullanıcı işleci yordamı '%s' (%L'de) için en azından bir argüman bulunmalı"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr "%L'deki işleç arayüzünün ilk argümanı isteğe bağlı olamaz"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "%L'deki işleç arayüzünün ikinci argümanı isteğe bağlı olamaz"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "%L'deki işleç arayüzünün en fazla iki argümanı olmalı"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
@@ -47076,18 +47142,18 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, fuzzy, gcc-internal-format
#| msgid "Possible frontend bug: Deferred array size without pointer or allocatable attribute."
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "Olası önyüz hatası: gösterici veya tahsis edilebilir öznitelik olmaksızın ertelenmiş dizi boyutu"
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "yürüyüş sırasında ifade türü hatalı (%d)"
@@ -47367,7 +47433,7 @@ msgstr "-fdefault-real-8 seçeneği için gerçel sayı çeşidi=8 elverişli de
msgid "Array element size too big at %C"
msgstr "Dizi elemanı boyutu çok büyük"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code(): Hatalı deyim kodu"
@@ -47682,7 +47748,7 @@ msgstr "bağımlılık izlemesi için hedef isim saptanamıyor"
msgid "internal error - invalid Utf8 name"
msgstr "iç hata - Utf8 ismi geçersiz"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "imza dizgesinden sonrası karışık"
@@ -50910,6 +50976,9 @@ msgstr "%Holmayan yöntem %qE için seçici oluşturuyor"
#~ msgid "large frame pointer change (%d) with -mtiny-stack"
#~ msgstr "-mtiny-stack ile büyük çerçeve göstericisi değişikliği (%d)"
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs imlası bozuk bir kesme eylemcisi gibi görünüyor"
+
#~ msgid "`%s' attribute only applies to functions"
#~ msgstr "%s özniteliği sadece işlevlere uygulanır"
@@ -51285,9 +51354,6 @@ msgstr "%Holmayan yöntem %qE için seçici oluşturuyor"
#~ msgid "Possible frontend bug: array constructor not expanded"
#~ msgstr "Olası önyüz hatası: dizi kurucu genişletilmedi"
-#~ msgid "Function does not return a value"
-#~ msgstr "iÅŸlev bir deÄŸer ile donmuyor"
-
#~ msgid "module symbol %s in wrong namespace"
#~ msgstr "modül simgesi %s yanlış isim alanında"
diff --git a/gcc/po/vi.po b/gcc/po/vi.po
index 7eaca5938d2..ba02ee7109d 100644
--- a/gcc/po/vi.po
+++ b/gcc/po/vi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.5.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2010-10-13 22:15+1030\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: LocFactoryEditor 1.8\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<nặc danh>"
@@ -27,18 +27,18 @@ msgstr "<nặc danh>"
msgid "({anonymous})"
msgstr "({nặc danh})"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr "mong đợi kết thúc dòng"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "mong đợi %<;%>"
@@ -46,17 +46,17 @@ msgstr "mong đợi %<;%>"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "mong đợi %<(%>"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr "mong đợi %<,%>"
@@ -67,19 +67,19 @@ msgstr "mong đợi %<,%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr "mong đợi %<)%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr "mong đợi %<]%>"
@@ -88,25 +88,25 @@ msgstr "mong đợi %<]%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "mong đợi %<;%>, %<,%> or %<)%>"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr "mong đợi %<}%>"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "mong đợi %<{%>"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr "mong đợi %<:%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr "mong đợi %<while%>"
@@ -117,40 +117,40 @@ msgstr "mong đợi %<while%>"
msgid "expected %<.%>"
msgstr "mong đợi %<;%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr "mong đợi %<@end%>"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr "mong đợi %<>%>"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "mong đợi %<,%> hoặc %<)%>"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "mong đợi %<=%>"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "mong đợi %<#pragma omp section%> hoặc %<}%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<[%>"
msgstr "mong đợi %<;%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(nặc danh)"
@@ -321,12 +321,12 @@ msgstr "toán hạng « %%l » không phải là một nhãn"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "sai sử dụng hằng số nổi"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "sai lập biểu tượng dưới dạng toán hạng"
@@ -1261,19 +1261,19 @@ msgstr " trực tiếp từ %qs tại %s:%d"
msgid " inlined from %qs"
msgstr " trực tiếp từ %qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "giả sử rằng vòng lặp có giới hạn"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "không thể tối ưu hoá vòng lặp có thể là vô hạn"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "giả sử rằng bộ đếm vòng lặp không bị tràn"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "không thể tối ưu hoá vòng lặp vì bộ đếm vòng lặp có thể bị tràn"
@@ -1440,16 +1440,16 @@ msgid "this is the insn:"
msgstr "đây là lệnh:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "không tìm thấy một thanh ghi làm tràn"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "Chế độ VOIDmode trên một đầu ra"
-#: reload1.c:8658
+#: reload1.c:8672
#, fuzzy
#| msgid "Failure trying to reload:"
msgid "failure trying to reload:"
@@ -2600,118 +2600,118 @@ msgstr "<giá trị trả lại>"
msgid "<unknown>"
msgstr "<không rõ>"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "giá trị %%H sai"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "giá trị %%J sai"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "giá trị %%r sai"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "giá trị %%R sai"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "giá trị %%N sai"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "giá trị %%P sai"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "giá trị %%h sai"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "giá trị %%L sai"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "giá trị %%m sai"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "giá trị %%M sai"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "giá trị %%U sai"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "giá trị %%s sai"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "giá trị %%C sai"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "giá trị %%E sai"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "không rõ bỠghi rõ bố trí lại"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "mã %%xn sai"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "lệnh Thumb căn cứ vào"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "gặp lệnh căn cứ vào trong dãy có Ä‘iá»u kiện"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "sai lập toán hạng cho mã « %c »"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "sai lập toán hạng dá»i"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2719,83 +2719,83 @@ msgstr "sai lập toán hạng dá»i"
msgid "invalid operand for code '%c'"
msgstr "sai lập toán hạng cho mã « %c »"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "lệnh chưa bao giỠthực hiện"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "toán hạng còn thiếu"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
msgid "function parameters cannot have __fp16 type"
msgstr "tham số hàm không thể có loại « __fp16 »"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
msgid "functions cannot return __fp16 type"
msgstr "hàm không thể trả lại loại « __fp16 »"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "toán hạng địa chỉ yêu cầu ràng buộc cho thanh ghi X, Y, hay Z"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
msgid "operands to %T/%t must be reg + const_int:"
msgstr ""
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "địa chỉ sai, không phải (reg+disp):"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "bad address, not a constant):"
msgid "bad address, not a constant:"
msgstr "địa chỉ sai, không phải là một hằng số):"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "địa chỉ sai, không phải (reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "địa chỉ sai, không phải post_inc hoặc pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "lỗi biên dịch nội bộ : địa chỉ sai:"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "lỗi biên dịch nội bộ : không rõ chế độ :"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "lệnh sai:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "lệnh không đúng:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "không rõ lệnh di chuyển:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "lệnh dá»i sai:"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "lá»—i biên dịch ná»™i bá»™ : dá»i không đúng:"
@@ -2811,8 +2811,8 @@ msgstr "toán hạng const_double sai"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2890,23 +2890,23 @@ msgstr "gặp toán hạng bất thÆ°á»ng"
msgid "unrecognized address"
msgstr "không nhận ra địa chỉ"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "không nhận ra Ä‘iá»u nên là hằng số"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "gặp hiệu ứng khác bất thÆ°á»ng trong địa chỉ"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
#, fuzzy
#| msgid "Unidentifiable call op"
msgid "unidentifiable call op"
msgstr "Không thể nhận diện toán tá»­ gá»i"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "Chưa thiết lập thanh ghi PIC"
@@ -2914,7 +2914,7 @@ msgstr "Chưa thiết lập thanh ghi PIC"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "sai lập mã kết xuất toán hạng"
@@ -3043,73 +3043,73 @@ msgstr "lập sai toán hạng output_move_double"
msgid "bad output_condmove_single operand"
msgstr "lập sai toán hạng output_condmove_single"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "lập sai UNSPEC như là toán hạng"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr "« %%& » bị sử dụng mà không có tham chiếu TLS năng động cục bộ"
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "sai lập kích cỡ toán hạng cho mã toán hạng « %c »"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "sử dụng loại toán hạng không hợp lệ với mã toán hạng « %c »"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "toán hạng không phải là má»™t mã Ä‘iá»u kiện, mã toán hạng sai « D »"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "toán hạng không phải là hằng số, cÅ©ng không phải là má»™t mã Ä‘iá»u kiện, mã toán hạng sai « C »"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "toán hạng không phải là hằng số, cÅ©ng không phải là má»™t mã Ä‘iá»u kiện, mã toán hạng sai « F »"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "toán hạng không phải là hằng số, cÅ©ng không phải là má»™t mã Ä‘iá»u kiện, mã toán hạng sai « c »"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "toán hạng không phải là hằng số, cÅ©ng không phải là má»™t mã Ä‘iá»u kiện, mã toán hạng sai « f »"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is not a condition code, invalid operand code 'D'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "toán hạng không phải là má»™t mã Ä‘iá»u kiện, mã toán hạng sai « D »"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "toán hạng không phải là má»™t mã Ä‘iá»u kiện, mã toán hạng sai « Y »"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "mã toán hạng sai « %c »"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "sai lập ràng buộc cho toán hạng"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "không rõ chế độ lệnh"
@@ -3140,35 +3140,35 @@ msgstr "biến môi trÆ°á»ng DJGPP chỉ tá»›i tập tin còn thiếu « %s »"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "biến môi trÆ°á»ng DJGPP chỉ tá»›i tập tin bị há»ng « %s »"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, c-format
msgid "invalid %%G mode"
msgstr "chế độ %%G không hợp lệ"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: gặp mã không hợp lệ"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "sai chuyển đổi từ %<__fpreg%>"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "sai chuyển đổi sang %<__fpreg%>"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "thao tác sai %<__fpreg%>"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "gặp toán hạng %%P sai"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "gặp giá trị %%p sai"
@@ -3248,7 +3248,7 @@ msgid "post-increment address is not a register"
msgstr "địa chỉ hậu gia không phải là một thanh ghi"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "địa chỉ sai"
@@ -3414,87 +3414,87 @@ msgstr "« -mno-altivec » thì tắt vsx"
msgid "bad move"
msgstr "sai di chuyển"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, c-format
msgid "invalid %%c value"
msgstr "giá trị %%c sai"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "giá trị %%f sai"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "giá trị %%F sai"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "giá trị %%G sai"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "mã %%j sai"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "mã %%J sai"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "giá trị %%k sai"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "giá trị %%K sai"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "giá trị %%O sai"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "giá trị %%q sai"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "giá trị %%S sai"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "giá trị %%T sai"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "giá trị %%u sai"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "giá trị %%v sai"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "giá trị %%x sai"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "giá trị %%y sai, hãy thử sử dụng ràng buộc « Z »"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "đối số AltiVec bị gửi cho hàm không nguyên mẫu"
@@ -3602,62 +3602,62 @@ msgstr "sai lập toán hạng tới %%R"
msgid "invalid operand to %%S"
msgstr "sai lập toán hạng tới %%S"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "tạo và sử dụng với các kiến trúc hoặc ABI khác nhau"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "tạo và sử dụng với các ABI khác nhau"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "tạo và sử dụng với các trình trạng cuối khác nhau"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "toán hạng %%Y sai"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "toán hạng %%A sai"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "toán hạng %%B sai"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%C operand"
msgstr "gặp toán hạng %%P sai"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%D operand"
msgstr "gặp toán hạng %%P sai"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "toán hạng %%f sai"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "toán hạng %%s sai"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "hằng số dài dài không phải là một toán hạng ngay lập tức đúng"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "hằng số điểm phù động không phải là một toán hạng ngay lập tức đúng"
@@ -3682,7 +3682,7 @@ msgstr "toán hạng « o » không phải là một hằng số"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: gặp mã không rõ"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "toán hạng %%c sai"
@@ -3698,25 +3698,25 @@ msgstr "toán hạng %%d sai"
msgid "invalid %%H specifier"
msgstr "mã %%L sai"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "gặp toán hạng %%P sai"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "gặp toán hạng %%P sai"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "gặp toán hạng %%P sai"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3728,7 +3728,7 @@ msgstr "gặp toán hạng %%P sai"
msgid "invalid %%%c operand"
msgstr "toán hạng %%c sai"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3740,42 +3740,42 @@ msgstr "gặp toán hạng %%P sai"
msgid "invalid operand for 'r' specifier"
msgstr "sai lập toán hạng cho sự sửa đổi « b »"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "gặp toán hạng %%P sai"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "gặp toán hạng %%P sai"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "gặp toán hạng %%P sai"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "gặp toán hạng %%P sai"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "gặp toán hạng %%P sai"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -3840,11 +3840,11 @@ msgstr "địa chỉ không chứa thanh ghi"
msgid "address offset not a constant"
msgstr "hiệu số địa chỉ không phải là một hằng số"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "ứng cử 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "ứng cử 2:"
@@ -4070,7 +4070,7 @@ msgstr "%s:%d: lần tạo từ %qs\n"
msgid "candidates are:"
msgstr "ứng cử là:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate is:"
msgid "candidate is:"
@@ -4117,48 +4117,48 @@ msgstr "việc chuyển đổi cũng bỠtrình trạng bất biến"
msgid "source type is not polymorphic"
msgstr "nguồn không có loại nhiá»u dạng"
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "đối số có loại sai đối với dấu trừ nguyên phân"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "đối số có loại sai đối với dấu cộng nguyên phân"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "đối số có loại sai đối với phần bù bit"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "đối số có loại sai đối với bộ tuyệt đối"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "đối số có loại sai đối với phần chia"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
msgid "in argument to unary !"
msgstr "trong đối số tới bộ nguyên phân !"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr "không có toán tá»­ tiá»n gia cho loại"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr "không có toán tử hậu gia cho loại"
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr "không có toán tử giảm gia cho loại"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr "không có toán tử hậu giảm cho loại"
@@ -4414,7 +4414,7 @@ msgstr "Toán tử sai"
msgid "Bad type in constant expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "Gặp kết thức mô-Ä‘un bất thÆ°á»ng"
@@ -4442,11 +4442,11 @@ msgstr "IF (nếu) loại khối"
msgid "implied END DO"
msgstr "ngụ ý END DO (kết thúc làm)"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "sự gán"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "sá»± gán hàm trá»"
@@ -4530,53 +4530,53 @@ msgstr "Tại %%L có má»™t toán tá»­ ngÆ°á»i dùng « %s » vá»›i các toán
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "Tại %%L và %%L có một toán tử với các phân hàng mâu thuẫn nhau"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr "Biến vòng lặp"
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
#| msgid "Loop variable"
msgid "iterator variable"
msgstr "Biến vòng lặp"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr "Biểu thức bắt đầu trong vòng lặp DO (làm)"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
msgid "End expression in DO loop"
msgstr "Biểu thức kết thúc trong vòng lặp DO (làm)"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr "Biểu thức bước trong vòng lặp DO (làm)"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
msgid "DEALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
msgid "ALLOCATE object"
msgstr ""
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
#, fuzzy
#| msgid "Loop variable"
msgid "STAT variable"
msgstr "Biến vòng lặp"
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
#, fuzzy
#| msgid "Loop variable"
msgid "ERRMSG variable"
msgstr "Biến vòng lặp"
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4585,7 +4585,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr "Bá»™ dá»±ng mảng chứa các chiá»u dài KÃ_Tá»° khác nhau (%ld/%ld)"
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4656,7 +4656,7 @@ msgstr "Giá trị trả lại hàm không đúng"
msgid "Memory allocation failed"
msgstr "Lỗi cấp phát vùng nhớ"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -4866,7 +4866,7 @@ msgstr "Äừng ghi rõ đồng thá»i hai tuỳ chá»n « -march=... » và «
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
#, fuzzy
#| msgid "consider using `-pg' instead of `-p' with gprof(1)"
msgid "consider using '-pg' instead of '-p' with gprof(1)"
@@ -4929,6 +4929,10 @@ msgstr "« shared » và « mdll » không tương thích với nhau"
msgid "static is not supported on TPF-OS"
msgstr "trên TPF-OS thì không hỗ trợ « static »"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr "sử dụng gprof(1) thì đỠnghị bạn lập « -pg » thay cho « -p »"
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "không cho phép sá»­ dụng đồng thá»i hai tuỳ chá»n « -EB » và « -EL »"
@@ -4959,10 +4963,6 @@ msgstr "không cho phép sá»­ dụng đồng thá»i hai tuỳ chá»n « -mbig-en
msgid "no processor type specified for linking"
msgstr "chưa ghi rõ loại bộ xử lý cần liên kết"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran không hỗ trợ sử dụng « -E » mà không có « -cpp »"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 không có há»— trợ vá» cuối nhá»"
@@ -5015,6 +5015,10 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "tuỳ chá»n « -shared » (chia sẻ) hiện thá»i không được há»— trợ cho VAX ELF"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran không hỗ trợ sử dụng « -E » mà không có « -cpp »"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "hai tùy chá»n « --fjni » và « --femit-class-files » không tÆ°Æ¡ng thích vá»›i nhau"
@@ -8201,6 +8205,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -10603,18 +10611,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
msgid "Functions which return values must end with return statements"
msgstr ""
@@ -12161,266 +12181,275 @@ msgstr ""
msgid "Create a position independent executable"
msgstr ""
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of '%%%c'"
msgid "invalid use of type"
msgstr "sai sử dụng « %%%c »"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating point constant not a valid immediate operand"
-msgid "floating point constant truncated to integer"
-msgstr "hằng số điểm phù động không phải là một toán hạng ngay lập tức đúng"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
msgid "constant refers to itself"
msgstr ""
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
#| msgid "Expected expression type"
msgid "expected numeric type"
msgstr "Mong đợi một loại biểu thức"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "Expected expression type"
+msgid "expected boolean type"
+msgstr "Mong đợi một loại biểu thức"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
#| msgid "Expected integer string"
msgid "expected integer or boolean type"
msgstr "Mong đợi một chuỗi số nguyên"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
#| msgid "invalid operand to %%R"
msgid "invalid operand for unary %<&%>"
msgstr "sai lập toán hạng tới %%R"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
#| msgid "Expected integer"
msgid "expected pointer"
msgstr "Mong đợi một số nguyên"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "Bad type in constant expression"
msgid "incompatible types in binary expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
msgid "shift of non-integer operand"
msgstr ""
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
msgid "shift count not unsigned integer"
msgstr ""
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative insn length"
msgid "negative shift count"
msgstr "chiá»u dài lệnh âm"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "move insn not handled"
msgid "object is not a method"
msgstr "lệnh di chuyển chưa quản lý"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
msgid "method type does not match object type"
msgstr ""
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
msgid "invalid use of %<...%> with builtin function"
msgstr ""
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "không có đối số nào"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "no arguments"
msgid "too many arguments"
msgstr "không có đối số nào"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
msgid "argument 1 must be a map"
msgstr ""
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
#| msgid "internal function"
msgid "invalid type for make function"
msgstr "hàm nội bộ"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "sai lập lệnh cho « A »"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments to %%:version-compare"
msgid "too many arguments to make"
msgstr "quá nhiá»u đối số tá»›i %%:version-compare"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
msgid "argument must be array or slice or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "Support 3DNow! built-in functions"
msgid "unsupported argument type to builtin function"
msgstr "Hỗ trợ các hàm dựng sẵn 3DNow!"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
msgid "argument must be channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
#| msgid "target is not pointer or reference"
msgid "argument must be a field reference"
msgstr "đích không phải là một hàm trỠhoặc một tham chiếu"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
msgid "left argument must be a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
msgid "first argument must be []byte"
msgstr ""
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
msgid "second argument must be slice or string"
msgstr ""
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
msgid "argument 2 has invalid type"
msgstr ""
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
msgid "argument must have complex type"
msgstr ""
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
msgid "complex arguments must have identical types"
msgstr ""
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
#| msgid "Do not use hardware floating point"
msgid "complex arguments must have floating-point type"
msgstr "Äừng sá»­ dụng Ä‘iểm phù Ä‘á»™ng loại phần cứng"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of '%%%c'"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "sai sử dụng « %%%c »"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "Expected string"
msgid "expected function"
msgstr "Mong đợi một chuỗi"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
msgid "incompatible type for receiver"
msgstr ""
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr ""
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
msgid "number of results does not match number of values"
msgstr ""
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr ""
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "Enable the normal mode"
msgid "incompatible type for map index"
msgstr "Hiệu lá»±c chế Ä‘á»™ thông thÆ°á»ng"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
msgid "too many expressions for struct"
msgstr ""
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
msgid "too few expressions for struct"
msgstr ""
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
#| msgid "invalid constraints for operand"
msgid "invalid unsafe.Pointer conversion"
msgstr "sai lập ràng buộc cho toán hạng"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "Expected name"
msgid "expected channel"
msgstr "Mong đợi một tên"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
#| msgid "invalid addressing mode"
@@ -12459,19 +12488,19 @@ msgstr ""
msgid "expected boolean expression"
msgstr "Mong đợi một loại biểu thức"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
msgid "incompatible types in send"
msgstr ""
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -12528,73 +12557,73 @@ msgstr ""
msgid "cannot use type %s as type %s"
msgstr ""
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
msgid "different receiver types"
msgstr ""
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "maximum number of parameters in a SCoP"
msgid "different number of parameters"
msgstr "số tối đa các tham số trong một SCoP"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
msgid "different parameter types"
msgstr ""
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, c-format
msgid "incompatible type for method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr ""
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
msgid "type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, c-format
msgid "missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -12661,7 +12690,7 @@ msgstr ""
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr ""
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr ""
@@ -12683,7 +12712,7 @@ msgstr ""
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
@@ -12766,7 +12795,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
@@ -12860,8 +12889,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr ""
@@ -13136,7 +13165,7 @@ msgstr ""
msgid "declaration of %q+D shadows a previous local"
msgstr ""
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, gcc-internal-format
msgid "shadowed declaration is here"
msgstr ""
@@ -13241,7 +13270,7 @@ msgstr ""
msgid "%qE defined as wrong kind of tag"
msgstr ""
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr ""
@@ -13360,7 +13389,7 @@ msgstr ""
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "không thể sơ khởi một đối tượng có kích cỡ biến đổi"
@@ -13370,7 +13399,7 @@ msgstr "không thể sÆ¡ khởi má»™t đối tượng có kích cỡ biến Ä‘á»
msgid "variable %qD has initializer but incomplete type"
msgstr ""
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr ""
@@ -13401,7 +13430,7 @@ msgstr ""
msgid "zero or negative size array %q+D"
msgstr ""
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr ""
@@ -13511,7 +13540,7 @@ msgstr ""
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -13596,7 +13625,7 @@ msgstr ""
msgid "storage class specified for unnamed parameter"
msgstr ""
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr ""
@@ -13745,7 +13774,7 @@ msgstr ""
msgid "function definition has qualified void return type"
msgstr ""
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr ""
@@ -13857,7 +13886,7 @@ msgstr ""
msgid "a member of a structure or union cannot have a variably modified type"
msgstr ""
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr ""
@@ -14280,7 +14309,7 @@ msgstr ""
msgid "argument %qD doesn%'t match prototype"
msgstr ""
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr ""
@@ -14474,7 +14503,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr ""
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr ""
@@ -14484,7 +14513,7 @@ msgstr ""
msgid "unknown type name %qE"
msgstr ""
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr ""
@@ -14495,7 +14524,7 @@ msgstr ""
msgid "expected %<;%>, identifier or %<(%>"
msgstr "mong đợi %<;%>, %<,%> or %<)%>"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr ""
@@ -14516,7 +14545,7 @@ msgstr "Mong đợi một tên bit thuộc tính"
msgid "data definition has no type or storage class"
msgstr ""
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -14544,7 +14573,7 @@ msgstr ""
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr ""
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr ""
@@ -14573,18 +14602,18 @@ msgstr ""
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr ""
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr ""
@@ -14716,7 +14745,7 @@ msgstr ""
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -14745,17 +14774,17 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr ""
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr ""
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr ""
@@ -14824,7 +14853,7 @@ msgstr ""
msgid "cannot take address of %qs"
msgstr "không thể phân ly địa chỉ"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr ""
@@ -14865,259 +14894,259 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr ""
-#: c-parser.c:6674
+#: c-parser.c:6679
#, gcc-internal-format
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr ""
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr ""
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<)%>"
msgid "expected identifier or %<)%>"
msgstr "mong đợi %<,%> hoặc %<)%>"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr ""
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr ""
-#: c-parser.c:8175
+#: c-parser.c:8180
#, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr ""
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, fuzzy, gcc-internal-format
#| msgid "<unknown operator>"
msgid "unknown property attribute"
msgstr "<không rõ toán hạng>"
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr ""
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr ""
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr ""
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr ""
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr ""
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr ""
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr ""
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr ""
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr ""
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, gcc-internal-format
msgid "invalid form of %<#pragma omp atomic%>"
msgstr ""
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr ""
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr ""
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr ""
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr ""
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr ""
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15127,7 +15156,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr ""
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr ""
@@ -15193,67 +15222,72 @@ msgstr ""
msgid "function return types not compatible due to %<volatile%>"
msgstr ""
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr ""
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr ""
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr ""
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr ""
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr ""
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr ""
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr ""
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr ""
@@ -15261,371 +15295,371 @@ msgstr ""
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr ""
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr ""
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr ""
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, gcc-internal-format
msgid "__builtin_shuffle arguments must be vectors"
msgstr ""
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %%:version-compare"
msgid "too many arguments to method %qE"
msgstr "quá nhiá»u đối số tá»›i %%:version-compare"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr ""
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, gcc-internal-format
msgid "declared here"
msgstr ""
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr ""
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr ""
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr ""
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr ""
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr ""
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr ""
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr ""
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr ""
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr ""
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr ""
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr ""
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr ""
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr ""
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr ""
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr ""
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr ""
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr ""
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr ""
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr ""
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr ""
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr ""
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr ""
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:4537
+#: c-typeck.c:4554
msgid "cast adds %q#v qualifier to function type"
msgstr ""
-#: c-typeck.c:4543
+#: c-typeck.c:4560
msgid "cast discards %q#v qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr ""
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr ""
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr ""
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr ""
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr ""
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -15637,684 +15671,684 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr "chuyển đổi enum trong bộ sơ khởi thì không hợp lệ trong C++"
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
msgid "assignment discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
msgid "initialization discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
msgid "return discards %qv qualifier from pointer target type"
msgstr ""
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr ""
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr ""
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr ""
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr ""
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr ""
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr ""
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr ""
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr ""
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr ""
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "sai sử dụng mảng không phải lvalue"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr ""
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr ""
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr ""
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr ""
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "mảng bị sơ khởi từ hằng số chuỗi nằm trong ngoặc đơn"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "đã sơ khởi một bộ phận mảng dẻo"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "mảng ký tự bị sơ khởi từ chuỗi rộng"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "mảng ký tự rộng bị sơ khởi từ chuỗi không phải rộng"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "mảng ký tự rộng bị sơ khởi từ chuỗi rộng không tương thích"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "mảng loại không thích hợp bị sơ khởi từ hằng số chuỗi"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "mảng bị sơ khởi từ biểu tượng mảng không phải hằng số"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "yếu tố sơ khởi không phải hằng số"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "yếu tố sơ khởi không tính được vào lúc nạp"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "bộ sơ khởi sai"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr ""
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "gặp nhóm ngoặc móc thừa tại kết thúc của bộ sơ khởi"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "thiếu ngoặc móc chung quanh bộ sơ khởi"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "ngoặc chung quanh bộ sơ khởi vô hướng"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "bộ phận mảng dẻo bị sơ khởi trong một ngữ cảnh lồng nhau"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "bộ sơ khởi còn thiếu"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "bộ sơ khởi vô hướng vẫn trống"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi vô hướng"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "gặp chỉ mục mảng trong bộ sơ khởi không phải mảng"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "không có tên trÆ°á»ng trong bá»™ sÆ¡ khởi hợp hoặc mục ghi"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "bộ sơ khởi chứa một chỉ mục mảng không có loại số nguyên"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải là một biểu tượng hằng số nguyên"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải hằng số"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "bộ sơ khởi chứa một chỉ mục mảng vượt quá giới hạn mảng"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "bộ sơ khởi chứa phạm vi chỉ mục vẫn trống"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "bộ sơ khởi chứa một phạm vi chỉ mục mảng vượt quá giới hạn mảng"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr ""
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "trÆ°á»ng đã sÆ¡ khởi vá»›i hiệu ứng khác bị ghi đè"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "trÆ°á»ng đã sÆ¡ khởi bị ghi đè"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi mảng ký tự"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi cấu trúc"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "một bộ phận mảng dẻo bị sơ khởi một cách không phải tĩnh"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi hợp"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi mảng"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi véc-tơ"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi vô hướng"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr ""
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr ""
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr ""
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr ""
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr ""
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr ""
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr ""
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr ""
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr ""
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr ""
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr ""
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr ""
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr ""
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr ""
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr ""
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "comparing vectors with different element types"
msgstr "Cảnh báo vỠsự so sánh các loại đếm (enum) khác nhau"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr ""
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr ""
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr ""
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr ""
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr ""
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr ""
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr ""
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, gcc-internal-format
msgid "used vector type where scalar is required"
msgstr ""
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr ""
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr ""
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr ""
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr ""
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -16324,7 +16358,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr ""
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr ""
@@ -17146,52 +17180,52 @@ msgstr "%s: không thể mở dưới dạng tập tin COFF"
msgid "library lib%s not found"
msgstr "không tìm thấy thư viện lib%s"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr ""
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr ""
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr ""
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr ""
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:965
+#: convert.c:963
#, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr ""
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr ""
@@ -17347,7 +17381,7 @@ msgstr ""
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -17437,42 +17471,42 @@ msgstr ""
msgid "stack limits not supported on this target"
msgstr ""
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr ""
-#: expmed.c:1803
+#: expmed.c:1823
#, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr ""
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, gcc-internal-format
msgid "local frame unavailable (naked function?)"
msgstr ""
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr ""
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr ""
@@ -17550,7 +17584,7 @@ msgstr "giả sử rằng sự tràn đã ký không xảy ra khi giản dị ho
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -17560,7 +17594,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr ""
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr ""
@@ -18031,78 +18065,78 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:2511
+#: gimplify.c:2518
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr ""
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr ""
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
-#: gimplify.c:5674
+#: gimplify.c:5681
#, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr ""
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr ""
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr ""
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "could not close response file %s"
msgid "could not close Go dump file: %m"
msgstr "không thể đóng đáp ứng tập tin %s"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "%s:could not open output file '%s'\n"
msgid "could not open Go dump file %qs: %m"
@@ -18159,7 +18193,7 @@ msgstr ""
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18302,48 +18336,48 @@ msgstr ""
msgid "function %qD redeclared as variable"
msgstr ""
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -18453,7 +18487,7 @@ msgstr ""
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr ""
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
@@ -18819,9 +18853,9 @@ msgstr ""
msgid "can%'t use %qs as a fixed register"
msgstr ""
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr ""
@@ -18901,12 +18935,12 @@ msgstr ""
msgid "%<asm%> operand requires impossible reload"
msgstr ""
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr ""
@@ -19127,7 +19161,7 @@ msgstr ""
msgid "packed attribute is unnecessary"
msgstr ""
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr ""
@@ -19346,7 +19380,7 @@ msgstr "Cho phép sử dụng câu lệnh MDMX"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19362,7 +19396,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr "cuá»™c gá»i hàm gián tiếp lần đầu tiên không phải được tính để chèn vào trá»±c tiếp"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19377,7 +19411,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, gcc-internal-format
msgid "asm not allowed in atomic transaction"
msgstr ""
@@ -19413,623 +19447,623 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, gcc-internal-format
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr ""
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid first operand of MEM_REF"
msgstr "sai lập toán hạng tới %%R"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand of MEM_REF"
msgstr "sai lập toán hạng tới %%R"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr ""
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr ""
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr ""
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr ""
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr ""
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr ""
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr ""
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr ""
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr ""
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr ""
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr ""
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, gcc-internal-format
msgid "conversion of register to a different size"
msgstr ""
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid address operand in MEM_REF"
msgstr "sai lập toán hạng tới %%R"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid shift operand"
msgid "invalid offset operand in MEM_REF"
msgstr "sai lập toán hạng dá»i"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, gcc-internal-format
msgid "invalid function in gimple call"
msgstr ""
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr ""
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr ""
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr ""
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr ""
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr ""
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr ""
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr ""
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr ""
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, gcc-internal-format
msgid "invalid vector comparison resulting type"
msgstr ""
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "bogus comparison result type"
msgstr "Cảnh báo vỠsự so sánh các loại đếm (enum) khác nhau"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr ""
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr ""
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr ""
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr ""
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr ""
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr ""
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr ""
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr ""
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr ""
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr ""
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, gcc-internal-format
msgid "type mismatch in widening vector shift expression"
msgstr ""
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr ""
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr ""
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr ""
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in ternary operation"
msgstr "lệnh chứa một toán hạng sai"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr ""
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
#| msgid "Generate fused multiply/add instructions"
msgid "type mismatch in fused multiply-add expression"
msgstr "Tạo ra câu lệnh nhân/cộng hợp nhau"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "type mismatch in vector permute expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr ""
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "invalid mask type in vector permute expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr ""
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr ""
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr ""
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr ""
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr ""
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr ""
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr ""
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr ""
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr ""
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr ""
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr ""
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "địa chỉ sai"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, gcc-internal-format
msgid "missing PHI def"
msgstr ""
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "invalid %%H value"
msgid "invalid PHI argument"
msgstr "giá trị %%H sai"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr ""
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr ""
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr ""
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr ""
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr ""
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr ""
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr ""
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr ""
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr ""
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr ""
@@ -20090,72 +20124,72 @@ msgstr ""
msgid "BB %i has incorrect fallthru edge"
msgstr ""
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr ""
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr ""
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr ""
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr ""
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr ""
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr ""
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, gcc-internal-format
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr ""
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr ""
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr ""
@@ -20368,7 +20402,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr ""
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, gcc-internal-format
msgid "%qD was declared here"
msgstr ""
@@ -20428,52 +20462,52 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr ""
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr ""
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr ""
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr ""
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr ""
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -20483,22 +20517,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr ""
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr ""
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20513,140 +20547,140 @@ msgstr ""
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr ""
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr ""
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr ""
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr ""
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr ""
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: tree.c:11389
+#: tree.c:11393
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr ""
-#: tree.c:11392
+#: tree.c:11396
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr ""
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr ""
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
@@ -20696,147 +20730,152 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr ""
+
+#: varasm.c:322
#, gcc-internal-format
msgid "%+D causes a section type conflict with %D"
msgstr ""
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr ""
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr ""
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr ""
-#: varasm.c:1212
+#: varasm.c:1218
#, gcc-internal-format
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr ""
-#: varasm.c:1215
+#: varasm.c:1221
#, gcc-internal-format
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr ""
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr ""
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr ""
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr ""
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr ""
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr ""
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr ""
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4878
+#: varasm.c:4915
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr ""
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr ""
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr ""
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5474
+#: varasm.c:5511
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr ""
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr ""
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5821
+#: varasm.c:5858
#, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr ""
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr ""
@@ -20877,8 +20916,8 @@ msgstr ""
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr ""
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr ""
@@ -21093,7 +21132,7 @@ msgstr ""
msgid "the address of %qD will always evaluate as %<true%>"
msgstr ""
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
@@ -21504,40 +21543,40 @@ msgstr ""
msgid "invalid vector type for attribute %qE"
msgstr ""
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr ""
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr ""
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr ""
@@ -21577,12 +21616,12 @@ msgstr ""
msgid "%qE attribute only applies to variadic functions"
msgstr ""
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr ""
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
@@ -21638,7 +21677,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr ""
@@ -22367,82 +22406,82 @@ msgid "ignoring #pragma %s %s"
msgstr ""
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr ""
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr ""
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr ""
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr ""
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr ""
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr ""
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr ""
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr ""
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr ""
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr ""
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr ""
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr ""
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr ""
@@ -22462,7 +22501,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr ""
@@ -22472,22 +22511,22 @@ msgstr ""
msgid "%qE is not initialized"
msgstr ""
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr ""
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr ""
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr ""
@@ -23341,7 +23380,7 @@ msgstr ""
msgid "bad value %qs for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23518,53 +23557,53 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr ""
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, gcc-internal-format
msgid "argument must be a constant"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr ""
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -23579,99 +23618,116 @@ msgstr ""
msgid "static variable %q+D is marked dllimport"
msgstr ""
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, gcc-internal-format
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr ""
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "'-%c' option must have argument"
+msgid "%qs function cannot have arguments"
+msgstr "Tuỳ chá»n « -%c » phải có đối số"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "functions cannot return __fp16 type"
+msgid "%qs function cannot return a value"
+msgstr "hàm không thể trả lại loại « __fp16 »"
+
+#: config/avr/avr.c:583
+#, gcc-internal-format
+msgid "%qs appears to be a misspelled %s handler"
+msgstr ""
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "Số các thanh ghi được sử dụng để gửi đối số nguyên cho đích"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, gcc-internal-format
msgid "writing to address space %qs not supported"
msgstr ""
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr ""
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr ""
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, gcc-internal-format
msgid "uninitialized variable %q+D put into program memory area"
msgstr ""
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr ""
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of module in string constant"
msgid "%s expects a compile time integer constant"
msgstr "Gặp kết thúc mô-Ä‘un bất thÆ°á»ng trong hằng số chuá»—i"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, gcc-internal-format, gfc-internal-format
msgid "%s expects a compile time long integer constant as first argument"
msgstr ""
@@ -23793,70 +23849,70 @@ msgstr "số dòng sai"
msgid "internal error: bad register: %d"
msgstr ""
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr ""
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr ""
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "<unknown>"
msgid "unknown src"
msgstr "<không rõ>"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "unknown insn mode"
msgid "unknown dest"
msgstr "không rõ chế độ lệnh"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
#| msgid "PIC register isn't set up"
msgid "emitting PIC operand, but PIC register isn%'t set up"
@@ -24016,416 +24072,416 @@ msgstr ""
msgid "can%'t set position in PCH file: %m"
msgstr ""
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, gcc-internal-format
msgid "code model %qs not supported in x32 mode"
msgstr ""
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr ""
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, gcc-internal-format
msgid "-masm=intel not supported in this configuration"
msgstr ""
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr ""
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr ""
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, gcc-internal-format
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr ""
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, gcc-internal-format, gfc-internal-format
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr ""
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, fuzzy, gcc-internal-format
#| msgid "-mas100-syntax is incompatible with -gdwarf"
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr "« -mas100-syntax » không tương thích với « -gdwarf »"
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr ""
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
#| msgid "shared and mdll are not compatible"
msgid "regparam and thiscall attributes are not compatible"
msgstr "« shared » và « mdll » không tương thích với nhau"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr ""
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
#| msgid "shared and mdll are not compatible"
msgid "fastcall and thiscall attributes are not compatible"
msgstr "« shared » và « mdll » không tương thích với nhau"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
#| msgid "shared and mdll are not compatible"
msgid "stdcall and thiscall attributes are not compatible"
msgstr "« shared » và « mdll » không tương thích với nhau"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
#| msgid "shared and mdll are not compatible"
msgid "cdecl and thiscall attributes are not compatible"
msgstr "« shared » và « mdll » không tương thích với nhau"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr ""
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr ""
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr ""
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, gcc-internal-format
msgid "the last argument must be an 1-bit immediate"
msgstr ""
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr ""
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr ""
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr ""
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr ""
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr ""
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr ""
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr ""
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr ""
@@ -24495,19 +24551,19 @@ msgstr ""
msgid "%qE attribute requires a string constant argument"
msgstr ""
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr ""
@@ -24573,7 +24629,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr ""
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr ""
@@ -24628,7 +24684,7 @@ msgstr ""
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr ""
@@ -25144,27 +25200,27 @@ msgstr ""
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr ""
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr ""
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr ""
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -25590,83 +25646,83 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr ""
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr ""
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid use of '%%%c'"
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "sai sử dụng « %%%c »"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr ""
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "spec '%s' is invalid"
msgid "%s\"%s\"%s is invalid"
@@ -25721,12 +25777,12 @@ msgstr ""
msgid "-m64 not supported in this configuration"
msgstr ""
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr ""
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr ""
@@ -25743,64 +25799,64 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr ""
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr ""
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr ""
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr ""
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr ""
@@ -25912,53 +25968,53 @@ msgstr ""
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr ""
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr ""
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr ""
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr ""
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr ""
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
@@ -26302,38 +26358,38 @@ msgstr ""
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr ""
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr ""
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr ""
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr ""
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr ""
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr ""
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr ""
@@ -26349,7 +26405,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr ""
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26636,7 +26692,7 @@ msgstr "sai chuyển đổi từ %<__fpreg%>"
msgid "invalid conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr ""
@@ -26646,188 +26702,188 @@ msgstr ""
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr ""
-#: cp/call.c:5862
+#: cp/call.c:5866
#, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr ""
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr ""
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr ""
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr ""
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr ""
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr ""
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr ""
-#: cp/call.c:6140
+#: cp/call.c:6144
#, gcc-internal-format
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr ""
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr ""
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr ""
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr ""
-#: cp/call.c:6564
+#: cp/call.c:6574
#, gcc-internal-format
msgid " in call to %q+D"
msgstr ""
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr ""
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr ""
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr ""
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr ""
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr ""
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr ""
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr ""
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr ""
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr ""
-#: cp/call.c:8434
+#: cp/call.c:8449
#, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
msgstr ""
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr ""
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr ""
@@ -27038,220 +27094,220 @@ msgstr ""
msgid "field %q+D invalidly declared method type"
msgstr ""
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr ""
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr ""
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr ""
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr ""
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr ""
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr ""
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr ""
-#: cp/class.c:4901
+#: cp/class.c:4902
#, gcc-internal-format
msgid "%q+T is not literal because:"
msgstr ""
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "Warn about non-virtual destructors"
msgid " %q+T has a non-trivial destructor"
msgstr "Cảnh báo vỠbộ hủy cấu trúc không phải ảo"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr ""
-#: cp/class.c:4958
+#: cp/class.c:4959
#, gcc-internal-format
msgid " non-static data member %q+D has non-literal type"
msgstr ""
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr ""
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr ""
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr ""
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr ""
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr ""
-#: cp/class.c:6139
+#: cp/class.c:6140
#, gcc-internal-format
msgid "type transparent class %qT does not have any fields"
msgstr ""
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, gcc-internal-format
msgid "type transparent class %qT has virtual functions"
msgstr ""
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr ""
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr ""
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr ""
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr ""
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr ""
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr ""
@@ -27261,12 +27317,12 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr ""
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr ""
@@ -27286,7 +27342,7 @@ msgstr ""
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr ""
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "'B' operand is not constant"
msgid "zero as null pointer constant"
@@ -27317,7 +27373,7 @@ msgstr ""
msgid "conversion from %qT to %qT discards qualifiers"
msgstr ""
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr ""
@@ -27724,7 +27780,7 @@ msgstr ""
msgid "declaration of template %q#D"
msgstr ""
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr ""
@@ -27776,7 +27832,7 @@ msgstr ""
msgid "%q+#D previously defined here"
msgstr ""
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr ""
@@ -27894,7 +27950,7 @@ msgstr ""
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr ""
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr ""
@@ -27965,7 +28021,7 @@ msgstr ""
msgid "%qD is not a type"
msgstr ""
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr ""
@@ -28095,124 +28151,124 @@ msgstr ""
msgid "%<constexpr%> cannot be used for type declarations"
msgstr ""
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "attribute declaration"
msgid "attribute ignored in declaration of %q#T"
msgstr "lá»i tuyên bố thuá»™c tính"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, gcc-internal-format
msgid "attribute for %q#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr ""
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr ""
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr ""
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr ""
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr ""
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr ""
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr ""
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr ""
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr ""
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr ""
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr ""
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr ""
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr ""
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr ""
@@ -28220,392 +28276,392 @@ msgstr ""
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr ""
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr ""
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr ""
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr ""
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr ""
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr ""
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, gcc-internal-format
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr ""
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr ""
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr ""
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr ""
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr ""
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr ""
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr ""
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr ""
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "source is of incomplete class type"
msgid "%q#D has incomplete type"
msgstr "nguồn có loại hạng không hoàn toàn"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr ""
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr ""
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
#| msgid "non-static initialization of a flexible array member"
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "một bộ phận mảng dẻo bị sơ khởi một cách không phải tĩnh"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr ""
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr ""
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr ""
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr ""
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, gcc-internal-format
msgid "initializer fails to determine size of %qT"
msgstr ""
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, gcc-internal-format
msgid "array size missing in %qT"
msgstr ""
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, gcc-internal-format
msgid "zero-size array %qT"
msgstr ""
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr ""
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr ""
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr ""
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr ""
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr ""
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr ""
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr ""
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr ""
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr ""
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr ""
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr ""
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr ""
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr ""
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr ""
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr ""
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr ""
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr ""
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr ""
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, gcc-internal-format
msgid "literal operator with C linkage"
msgstr ""
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr ""
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "In static member function %qs"
msgid "%qD must be a non-member function"
msgstr "Trong hàm bộ phận tĩnh %qs"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr ""
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, gcc-internal-format
msgid "definition of explicitly-defaulted %q+D"
msgstr ""
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, gcc-internal-format
msgid "%q+#D explicitly defaulted here"
msgstr ""
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr ""
@@ -28614,892 +28670,892 @@ msgstr ""
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
#| msgid "initialization of flexible array member in a nested context"
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "bộ phận mảng dẻo bị sơ khởi trong một ngữ cảnh lồng nhau"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr ""
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr ""
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr ""
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr ""
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr ""
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr ""
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr ""
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr ""
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr ""
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr ""
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, gcc-internal-format
msgid "declaration of %qD as array of %<auto%>"
msgstr ""
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr ""
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, gcc-internal-format
msgid "creating array of void"
msgstr ""
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr ""
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, gcc-internal-format
msgid "creating array of functions"
msgstr ""
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr ""
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, gcc-internal-format
msgid "creating array of references"
msgstr ""
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr ""
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, gcc-internal-format
msgid "creating array of function members"
msgstr ""
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr ""
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr ""
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr ""
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr ""
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr ""
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr ""
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr ""
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr ""
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr ""
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, gcc-internal-format
msgid "declaration of %qD as %<typedef%>"
msgstr ""
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, gcc-internal-format
msgid "declaration of %qD as parameter"
msgstr ""
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr ""
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr ""
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr ""
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr ""
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr ""
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr ""
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr ""
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr ""
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr ""
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr ""
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr ""
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr ""
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr ""
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr ""
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr ""
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr ""
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr ""
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr ""
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr ""
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr ""
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr ""
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr ""
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr ""
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, fuzzy, gcc-internal-format
#| msgid "In static member function %qs"
msgid "constructor cannot be static member function"
msgstr "Trong hàm bộ phận tĩnh %qs"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "(static initializers for %s)"
msgid "can%'t initialize friend function %qs"
msgstr "(bộ sơ khởi tĩnh cho %s)"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr ""
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr ""
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr ""
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr ""
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr ""
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr ""
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr ""
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr ""
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr ""
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr ""
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, gcc-internal-format
msgid "typedef declared %<auto%>"
msgstr ""
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr ""
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr ""
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr ""
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr ""
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr ""
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr ""
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr ""
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, gcc-internal-format
msgid "non-static data member declared %<auto%>"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr ""
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr ""
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr ""
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr ""
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr ""
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr ""
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr ""
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr ""
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr ""
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr ""
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr ""
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr ""
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr ""
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr ""
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr ""
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, gcc-internal-format
msgid "%qs declared in a non-class scope"
msgstr ""
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr ""
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr ""
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr ""
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr ""
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr ""
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr ""
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, gcc-internal-format
msgid "default argument %qE uses %qD"
msgstr ""
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr ""
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr ""
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr ""
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr ""
@@ -29519,168 +29575,168 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr ""
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr ""
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr ""
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr ""
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr ""
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr ""
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr ""
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr ""
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, gcc-internal-format
msgid "using alias template specialization %qT after %qs"
msgstr ""
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, gcc-internal-format
msgid "%qD has a previous declaration here"
msgstr ""
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr ""
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -29692,88 +29748,88 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr ""
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr ""
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr ""
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr ""
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr ""
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr ""
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, gcc-internal-format
msgid "previous definition here"
msgstr ""
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -29782,72 +29838,72 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr ""
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, gcc-internal-format
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr ""
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr ""
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr ""
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr ""
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr ""
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr ""
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr ""
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr ""
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr ""
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr ""
@@ -29887,7 +29943,7 @@ msgstr ""
msgid "deleting %qT is undefined"
msgstr ""
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr ""
@@ -30149,7 +30205,7 @@ msgstr ""
msgid "reference to %<%T::%D%> is ambiguous"
msgstr ""
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr ""
@@ -30456,7 +30512,7 @@ msgstr ""
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr ""
@@ -30542,67 +30598,67 @@ msgstr ""
msgid "parenthesized initializer in array new"
msgstr "bộ sơ khởi chứa một chỉ mục mảng vượt quá giới hạn mảng"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr ""
-#: cp/init.c:2891
+#: cp/init.c:2893
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr ""
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3622
+#: cp/init.c:3624
#, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr ""
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr ""
@@ -30662,42 +30718,42 @@ msgstr ""
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -30785,59 +30841,59 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr ""
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr ""
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, gcc-internal-format
msgid "a template cannot be defaulted"
msgstr ""
-#: cp/method.c:1707
+#: cp/method.c:1708
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr ""
-#: cp/method.c:1716
+#: cp/method.c:1717
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr ""
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "Warn about global functions without previous declarations"
msgid "%q#D conflicts with a previous declaration"
msgstr "Cảnh báo vá» hàm toàn cục không có lá»i tuyên bố trÆ°á»›c"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "attribute declaration"
msgid "previous declaration %q+#D"
msgstr "lá»i tuyên bố thuá»™c tính"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr ""
@@ -30848,264 +30904,264 @@ msgstr ""
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr ""
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr ""
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr ""
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr ""
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr ""
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr ""
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr ""
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr ""
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, gcc-internal-format
msgid "declaration of %qD shadows a lambda capture"
msgstr ""
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr ""
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr ""
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr ""
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr ""
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr ""
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr ""
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr ""
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr ""
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr ""
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr ""
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr ""
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr ""
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr ""
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr ""
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr ""
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr ""
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr ""
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr ""
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr ""
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr ""
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr ""
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr ""
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr ""
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr ""
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
@@ -31219,7 +31275,7 @@ msgstr ""
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr ""
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr ""
@@ -31240,7 +31296,7 @@ msgstr ""
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -31394,733 +31450,733 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr ""
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, gcc-internal-format
msgid "unable to find numeric literal operator %qD"
msgstr ""
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, gcc-internal-format
msgid "unable to find string literal operator %qD"
msgstr ""
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "derived type declaration"
msgid "expected declaration"
msgstr "lá»i tuyên bố loại có hÆ°á»›ng"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr ""
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr ""
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "expected primary-expression"
msgstr "Mong đợi một loại biểu thức"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr ""
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
#| msgid "Warn about \"extern\" declarations not at file scope"
msgid "a template declaration cannot appear at block scope"
msgstr "Cảnh báo vá» lá»i tuyên bố « extern » (bên ngoài) ở ngoại phạm vi tập tin"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "expected id-expression"
msgstr "Mong đợi một loại biểu thức"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr ""
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr ""
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected unqualified-id"
msgstr "Mong đợi một tên"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, gcc-internal-format
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr ""
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr ""
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr ""
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr ""
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr ""
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr ""
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr ""
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr ""
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "'%s' is not a valid class name"
msgid "%<%D::%D%> is not a class member"
msgstr "« %s » không phải là một tên hạng đúng"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr ""
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr ""
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, gcc-internal-format
msgid "types may not be defined in a new-expression"
msgstr ""
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr ""
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr ""
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr ""
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr ""
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, gcc-internal-format
msgid "capture of non-variable %qD "
msgstr ""
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, gcc-internal-format
msgid "%q+#D declared here"
msgstr ""
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr ""
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, gcc-internal-format
msgid "expected labeled-statement"
msgstr ""
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr ""
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr ""
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, gcc-internal-format
msgid "compound-statement in constexpr function"
msgstr ""
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, gcc-internal-format
msgid "expected selection-statement"
msgstr ""
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr ""
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr ""
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr ""
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected jump-statement"
msgstr "Mong đợi một tên"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr ""
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr ""
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
#| msgid "Enable linker optimizations"
msgid "invalid linkage-specification"
msgstr "Hiệu lực số tối ưu hoá bộ liên kết"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr ""
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr ""
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "only constructors take member initializers"
msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải hằng số"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr ""
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, gcc-internal-format
msgid "mem-initializer for %qD follows constructor delegation"
msgstr ""
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr ""
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "Expected integer"
msgid "expected suffix identifier"
msgstr "Mong đợi một số nguyên"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "gặp toán hạng bất thÆ°á»ng"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr ""
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected template-id"
msgstr "gặp toán hạng bất thÆ°á»ng"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<<%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr ""
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr ""
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr ""
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected template-name"
msgstr "Mong đợi một tên"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr ""
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
#| msgid "template-parameter-"
msgid "expected template-argument"
msgstr "template-parameter-"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, gcc-internal-format
msgid "invalid non-type template argument"
msgstr ""
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr ""
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr ""
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr ""
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
#| msgid "expected end of line"
msgid "expected type specifier"
msgstr "mong đợi kết thúc dòng"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "expected template-id for type"
msgstr "Mong đợi một loại biểu thức"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected type-name"
msgstr "Mong đợi một tên"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr ""
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr ""
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr ""
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr ""
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr ""
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<)%>"
msgid "expected %<;%> or %<{%>"
msgstr "mong đợi %<,%> hoặc %<)%>"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr ""
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr ""
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr ""
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected namespace-name"
msgstr "Mong đợi một tên"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr ""
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr ""
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, gcc-internal-format
msgid "types may not be defined in alias template declarations"
msgstr ""
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr ""
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "Expected integer"
msgid "expected initializer"
msgstr "Mong đợi một số nguyên"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
#| msgid "derived type declaration"
msgid "invalid type in declaration"
msgstr "lá»i tuyên bố loại có hÆ°á»›ng"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, gcc-internal-format
msgid "initializer provided for function"
msgstr ""
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr ""
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr ""
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr ""
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr ""
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
@@ -32129,257 +32185,257 @@ msgstr ""
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid declarator"
msgstr "sai lập toán hạng tới %%R"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "Expected P edit descriptor"
msgid "expected declarator"
msgstr "Mong đợi bộ mô tả chỉnh sửa « P »"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr ""
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, gcc-internal-format
msgid "cannot form pointer to member of non-class %q#T"
msgstr ""
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "gặp toán hạng bất thÆ°á»ng"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr ""
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, gcc-internal-format
msgid "duplicate virt-specifier"
msgstr ""
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr ""
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr ""
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
#| msgid "Expected integer"
msgid "expected type-specifier"
msgstr "Mong đợi một số nguyên"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<)%>"
msgid "expected %<,%> or %<...%>"
msgstr "mong đợi %<,%> hoặc %<)%>"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr ""
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr ""
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr ""
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, gcc-internal-format
msgid "parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, gcc-internal-format
msgid "parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, gcc-internal-format
msgid "ISO C++ does not allow C99 designated initializers"
msgstr ""
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected class-name"
msgstr "Mong đợi một tên"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr ""
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr ""
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr ""
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<)%>"
msgid "expected %<{%> or %<:%>"
msgstr "mong đợi %<,%> hoặc %<)%>"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, gcc-internal-format
msgid "cannot specify %<override%> for a class"
msgstr ""
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, gcc-internal-format
msgid "qualified name does not name a class"
msgstr ""
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr ""
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr ""
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr ""
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr ""
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr ""
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected class-key"
msgstr "Mong đợi một tên"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, gcc-internal-format
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr ""
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
#| msgid "expected end of line"
msgid "expected %<;%> at end of member declaration"
msgstr "mong đợi kết thúc dòng"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
#| msgid "<brace-enclosed initializer list>"
msgid "a brace-enclosed initializer is not allowed here"
msgstr "<danh sách bộ sơ khởi nằm trong dấu ngoặc>"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr ""
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr ""
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr ""
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr ""
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr ""
@@ -32388,345 +32444,345 @@ msgstr ""
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr ""
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr ""
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr ""
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
#| msgid "invalid initializer"
msgid "invalid explicit specialization"
msgstr "bộ sơ khởi sai"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr ""
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr ""
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr ""
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr ""
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr ""
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<new%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
#| msgid "expected %<while%>"
msgid "expected %<delete%>"
msgstr "mong đợi %<while%>"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
#| msgid "expected %<@end%>"
msgid "expected %<return%>"
msgstr "mong đợi %<@end%>"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
#| msgid "expected %<@end%>"
msgid "expected %<extern%>"
msgstr "mong đợi %<@end%>"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
#| msgid "expected %<while%>"
msgid "expected %<static_assert%>"
msgstr "mong đợi %<while%>"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
#| msgid "expected %<while%>"
msgid "expected %<decltype%>"
msgstr "mong đợi %<while%>"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<operator%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<class%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
#| msgid "expected %<while%>"
msgid "expected %<template%>"
msgstr "mong đợi %<while%>"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<namespace%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<using%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<asm%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<try%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<catch%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<throw%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
#| msgid "expected %<while%>"
msgid "expected %<__label__%>"
msgstr "mong đợi %<while%>"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<@try%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, fuzzy, gcc-internal-format
#| msgid "expected %<@end%>"
msgid "expected %<@synchronized%>"
msgstr "mong đợi %<@end%>"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<@throw%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, fuzzy, gcc-internal-format
#| msgid "expected %<while%>"
msgid "expected %<__transaction_relaxed%>"
msgstr "mong đợi %<while%>"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%>"
msgid "expected %<::%>"
msgstr "mong đợi %<:%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<...%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<*%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>"
msgid "expected %<~%>"
msgstr "mong đợi %<;%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<)%>"
msgid "expected %<:%> or %<::%>"
msgstr "mong đợi %<,%> hoặc %<)%>"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
#| msgid "expected %<;%>, %<,%> or %<)%>"
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "mong đợi %<;%>, %<,%> or %<)%>"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr ""
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, gcc-internal-format
msgid "%q#T was previously declared here"
msgstr ""
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr ""
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr ""
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr ""
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr ""
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, gcc-internal-format
msgid "invalid type for instance variable"
msgstr ""
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr ""
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr ""
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid operand for 'p' modifier"
msgid "invalid type for property"
msgstr "sai lập toán hạng cho sự sửa đổi « p »"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr ""
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr ""
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr ""
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr ""
@@ -32823,69 +32879,69 @@ msgstr ""
msgid "%qD is not a function template"
msgstr ""
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr ""
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr ""
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr ""
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr ""
@@ -32898,133 +32954,133 @@ msgstr ""
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr ""
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr ""
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr ""
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr ""
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr ""
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] ""
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr ""
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr ""
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr ""
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr ""
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr ""
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr ""
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr ""
@@ -33032,7 +33088,7 @@ msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr ""
@@ -33042,74 +33098,74 @@ msgstr ""
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr ""
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr ""
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr ""
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr ""
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr ""
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr ""
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr ""
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr ""
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr ""
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] ""
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] ""
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr ""
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr ""
@@ -33118,330 +33174,330 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr ""
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, gcc-internal-format
msgid "original definition appeared here"
msgstr ""
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr ""
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr ""
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr ""
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr ""
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, gcc-internal-format
msgid " couldn't deduce template parameter %qD"
msgstr ""
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, gcc-internal-format
msgid " mismatched types %qT and %qT"
msgstr ""
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, gcc-internal-format
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr ""
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, gcc-internal-format
msgid " %qE is not equivalent to %qE"
msgstr ""
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, gcc-internal-format
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr ""
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, gcc-internal-format
msgid " variable-sized array type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, gcc-internal-format
msgid " member function type %qT is not a valid template argument"
msgstr ""
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, gcc-internal-format
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr ""
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, gcc-internal-format
msgid " %qT is an ambiguous base class of %qT"
msgstr ""
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid " inlined from %qs"
msgid " %qT is not derived from %qT"
msgstr " trực tiếp từ %qs"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, gcc-internal-format
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr ""
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, gcc-internal-format
msgid " template argument %qE does not match %qD"
msgstr ""
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "<unresolved overloaded function type>"
msgid " could not resolve address from overloaded function %qE"
msgstr "<chưa giải quyết loại hàm quá tải>"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr ""
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, gcc-internal-format
msgid "in template argument for type %qT "
msgstr ""
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr ""
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr ""
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr ""
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr ""
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr ""
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr ""
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr ""
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr ""
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr ""
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr ""
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr ""
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr ""
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr ""
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, gcc-internal-format
msgid "invalid use of destructor %qE as a type"
msgstr ""
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr ""
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr ""
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr ""
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr ""
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr ""
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr ""
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr ""
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr ""
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr ""
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr ""
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr ""
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, gcc-internal-format
msgid "%q#D is not a function template"
msgstr ""
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr ""
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr ""
-#: cp/pt.c:8060
+#: cp/pt.c:8092
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr ""
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr ""
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr ""
@@ -33459,257 +33515,257 @@ msgstr ""
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr ""
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr ""
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr ""
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr ""
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr ""
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr ""
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr ""
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr ""
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr ""
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr ""
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr ""
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr ""
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr ""
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr ""
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr ""
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, gcc-internal-format
msgid "use %<%T::%D%> instead"
msgstr ""
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, gcc-internal-format
msgid "%q+D declared here, later in the translation unit"
msgstr ""
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr ""
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr ""
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr ""
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr ""
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr ""
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr ""
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr ""
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr ""
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr ""
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr ""
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr ""
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr ""
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, gcc-internal-format
msgid "explicit instantiation of non-class template %qD"
msgstr ""
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr ""
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr ""
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr ""
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr ""
@@ -33721,33 +33777,33 @@ msgstr ""
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr ""
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr ""
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "template-parameter-"
msgid "invalid template non-type parameter"
msgstr "template-parameter-"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, gcc-internal-format
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr ""
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr ""
@@ -33755,12 +33811,12 @@ msgstr ""
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -33954,7 +34010,7 @@ msgstr ""
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
@@ -33994,461 +34050,461 @@ msgstr ""
msgid "invalid definition of qualified type %qT"
msgstr ""
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr ""
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, gcc-internal-format
msgid "%qD is not captured"
msgstr ""
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr ""
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr ""
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr ""
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr ""
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr ""
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr ""
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, gcc-internal-format
msgid "%qT is not an enumeration type"
msgstr ""
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, gcc-internal-format
msgid "Parameter pack __bases only valid in template declaration"
msgstr ""
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr ""
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr ""
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr ""
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr ""
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr ""
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, gcc-internal-format, gfc-internal-format
msgid "static assertion failed: %s"
msgstr ""
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr ""
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr ""
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "<unresolved overloaded function type>"
msgid "decltype cannot resolve address of overloaded function"
msgstr "<chưa giải quyết loại hàm quá tải>"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr ""
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
#| msgid "invalid register in the move instruction"
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "gặp thanh ghi sai trong lệnh di chuyển"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, gcc-internal-format
msgid "%q#T has virtual base classes"
msgstr ""
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr ""
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
#| msgid "Do not use push to store function arguments"
msgid "%q+D is not usable as a constexpr function because:"
msgstr "Äừng sá»­ dụng push để lÆ°u các đối số hàm"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr ""
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, gcc-internal-format
msgid "call to non-constexpr function %qD"
msgstr ""
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "%qD called in a constant expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, gcc-internal-format
msgid "%qD used before its definition"
msgstr ""
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr ""
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr ""
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "%q+E is not a constant expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
#| msgid "Array reference out of bounds"
msgid "array subscript out of bound"
msgstr "Tham chiếu mảng ở ngoại phạm vi"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "%qE is not a constant expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "mutable %qD is not usable in a constant expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer is not an integer constant expression"
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải là một biểu tượng hằng số nguyên"
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "the value of %qD is not usable in a constant expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "excess elements in union initializer"
msgid "%qD used in its own initializer"
msgstr "gặp yếu tố thừa trong bộ sơ khởi hợp"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, gcc-internal-format
msgid "%q#D is not const"
msgstr ""
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr ""
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "%qD was not initialized with a constant expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr ""
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr ""
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "Gặp loại saio trong biểu thức bất biến"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "expression %qE is not a constant-expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "unexpected expression %qE of kind %s"
msgstr "Mong đợi một loại biểu thức"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "pointer comparison expression is not a constant expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not a constant expression"
msgid "division by zero is not a constant-expression"
msgstr "yếu tố sơ khởi không phải là một biểu tượng hằng số"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải hằng số"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "expected end of line"
msgid "unexpected AST of kind %s"
msgstr "mong đợi kết thúc dòng"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr ""
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr ""
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr ""
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -34538,454 +34594,459 @@ msgstr ""
msgid "invalid use of non-static member function"
msgstr ""
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, gcc-internal-format
+msgid "taking address of temporary array"
+msgstr ""
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr ""
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr ""
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr ""
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr ""
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr ""
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr ""
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr ""
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr ""
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr ""
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr ""
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr ""
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr ""
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr ""
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr ""
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr ""
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr ""
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %%:version-compare"
msgid "too many arguments to constructor %q#D"
msgstr "quá nhiá»u đối số tá»›i %%:version-compare"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %%:version-compare"
msgid "too few arguments to constructor %q#D"
msgstr "quá ít đối số tới %%:version-compare"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "no arguments for spec function"
msgid "too many arguments to member function %q#D"
msgstr "không có đối số tới hàm đặc tả"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "no arguments for spec function"
msgid "too few arguments to member function %q#D"
msgstr "không có đối số tới hàm đặc tả"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "no arguments for spec function"
msgid "too many arguments to function %q#D"
msgstr "không có đối số tới hàm đặc tả"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "no arguments for spec function"
msgid "too few arguments to function %q#D"
msgstr "không có đối số tới hàm đặc tả"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %%:version-compare"
msgid "too many arguments to method %q#D"
msgstr "quá nhiá»u đối số tá»›i %%:version-compare"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %%:version-compare"
msgid "too few arguments to method %q#D"
msgstr "quá ít đối số tới %%:version-compare"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr ""
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr ""
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr ""
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr ""
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr ""
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr ""
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, gcc-internal-format
msgid "left rotate count is negative"
msgstr ""
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr ""
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr ""
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr ""
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr ""
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr ""
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr ""
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr ""
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr ""
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr ""
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr ""
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr ""
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr ""
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr ""
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr ""
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr ""
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr ""
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, gcc-internal-format
msgid "list-initializer for non-class type must not be parenthesized"
msgstr ""
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr ""
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr ""
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr ""
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr ""
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr ""
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr ""
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr ""
@@ -34994,227 +35055,227 @@ msgstr ""
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr ""
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr ""
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr ""
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "bộ sơ khởi chứa một chỉ mục mảng không phải hằng số"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr ""
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, gcc-internal-format
msgid "array used as initializer"
msgstr ""
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, gcc-internal-format
msgid "invalid array assignment"
msgstr ""
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr ""
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr ""
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr ""
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr ""
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr ""
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr ""
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr ""
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr ""
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr ""
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "Cảnh báo vỠhàm có thể yêu cầu thuộc tính định dạng"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "parameter might be a candidate for a format attribute"
msgstr "Cảnh báo vỠhàm có thể yêu cầu thuộc tính định dạng"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "target of conversion might be a candidate for a format attribute"
msgstr "Cảnh báo vỠhàm có thể yêu cầu thuộc tính định dạng"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "target of initialization might be a candidate for a format attribute"
msgstr "Cảnh báo vỠhàm có thể yêu cầu thuộc tính định dạng"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
#| msgid "Warn about functions which might be candidates for format attributes"
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "Cảnh báo vỠhàm có thể yêu cầu thuộc tính định dạng"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr ""
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr ""
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr ""
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr ""
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr ""
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr ""
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -35752,7 +35813,7 @@ msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -37897,27 +37958,27 @@ msgstr ""
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -38127,42 +38188,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr ""
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -38177,14 +38238,14 @@ msgstr ""
msgid "can't open input file: %s"
msgstr ""
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr ""
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "error in args to spec function '%s'"
msgid "Removing call to function '%s' at %L"
@@ -38296,12 +38357,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -40115,128 +40176,128 @@ msgstr ""
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr ""
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr ""
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr ""
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr ""
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr ""
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr ""
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr ""
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -40321,7 +40382,7 @@ msgstr ""
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr ""
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -41640,7 +41701,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr ""
@@ -41790,7 +41851,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
@@ -42171,182 +42232,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -42355,175 +42416,175 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr ""
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr ""
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, gcc-internal-format, gfc-internal-format
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr ""
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr ""
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr ""
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr ""
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr ""
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -42531,950 +42592,950 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr ""
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr ""
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr ""
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr ""
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr ""
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr ""
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr ""
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr ""
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr ""
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr ""
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr ""
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr ""
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr ""
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr ""
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr ""
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr ""
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr ""
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr ""
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr ""
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr ""
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -44084,17 +44145,17 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -44336,7 +44397,7 @@ msgstr ""
msgid "Array element size too big at %C"
msgstr ""
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -44643,7 +44704,7 @@ msgstr ""
msgid "internal error - invalid Utf8 name"
msgstr ""
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr ""
@@ -45773,9 +45834,6 @@ msgstr ""
#~ msgid " -V <version> Run gcc version number <version>, if installed\n"
#~ msgstr " -V <phiên_bản> Chạy gcc phiên bản này (nếu được cài đặt)\n"
-#~ msgid "'-%c' option must have argument"
-#~ msgstr "Tuỳ chá»n « -%c » phải có đối số"
-
#~ msgid "couldn't run '%s': %s"
#~ msgstr "không thể chạy « %s »: %s"
diff --git a/gcc/po/zh_CN.po b/gcc/po/zh_CN.po
index 5f7f5a84e71..21ddab5ecea 100644
--- a/gcc/po/zh_CN.po
+++ b/gcc/po/zh_CN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.6.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2011-05-19 15:04+0800\n"
"Last-Translator: Meng Jie <zuxy.meng@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -20,7 +20,7 @@ msgstr ""
"X-Poedit-Basepath: C:\\MSYS\\source\\gcc-4.6.0\\gcc\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<匿å>"
@@ -29,18 +29,18 @@ msgstr "<匿å>"
msgid "({anonymous})"
msgstr "{{匿å}}"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, gcc-internal-format
msgid "expected end of line"
msgstr "需è¦è¡Œå°¾"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "需è¦%<;%>"
@@ -48,17 +48,17 @@ msgstr "需è¦%<;%>"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, gcc-internal-format
msgid "expected %<(%>"
msgstr "需è¦%<(%>"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, gcc-internal-format
msgid "expected %<,%>"
msgstr "éœ€è¦ %<,%>"
@@ -69,19 +69,19 @@ msgstr "éœ€è¦ %<,%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, gcc-internal-format
msgid "expected %<)%>"
msgstr "需è¦%<)%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, gcc-internal-format
msgid "expected %<]%>"
msgstr "需è¦%<]%>"
@@ -90,25 +90,25 @@ msgstr "需è¦%<]%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "éœ€è¦ %<;%>ã€%<,%> 或 %<)%>"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, gcc-internal-format
msgid "expected %<}%>"
msgstr "éœ€è¦ %<}%>"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "需è¦%<{%>"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, gcc-internal-format
msgid "expected %<:%>"
msgstr "éœ€è¦ %<:%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, gcc-internal-format
msgid "expected %<while%>"
msgstr "éœ€è¦ %<while%>"
@@ -117,39 +117,39 @@ msgstr "éœ€è¦ %<while%>"
msgid "expected %<.%>"
msgstr "需è¦%<.%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, gcc-internal-format
msgid "expected %<@end%>"
msgstr "éœ€è¦ %<@end%>"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, gcc-internal-format
msgid "expected %<>%>"
msgstr "éœ€è¦ %<>%>"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, gcc-internal-format
msgid "expected %<,%> or %<)%>"
msgstr "éœ€è¦ %<,%> 或 %<)%>"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "需è¦%<=%>"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "需è¦%<#pragma omp section%>或%<}%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, gcc-internal-format
msgid "expected %<[%>"
msgstr "需è¦%<[%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
msgid "(anonymous)"
msgstr "(匿å)"
@@ -321,12 +321,12 @@ msgstr "‘%%l’æ“作数ä¸æ˜¯ä¸€ä¸ªæ ‡å·"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "错误地使用了浮点常é‡"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "无效的表达å¼ç”¨ä½œæ“作数"
@@ -1216,19 +1216,19 @@ msgstr " 内è”自%qs于 %s:%d"
msgid " inlined from %qs"
msgstr " 内è”自%qs"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "å‡å®šå¾ªçŽ¯æœ‰ç©·"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "无法优化å¯èƒ½æ— ç©·çš„循环"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "å‡å®šå¾ªçŽ¯è®¡æ•°ä¸ä¼šæº¢å‡º"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "无法优化循环,循环å˜é‡å¯èƒ½æº¢å‡º"
@@ -1394,16 +1394,16 @@ msgid "this is the insn:"
msgstr "这是指令:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "找ä¸åˆ°å¯æº¢å‡ºçš„寄存器"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "输出有 VOIDmode"
-#: reload1.c:8658
+#: reload1.c:8672
msgid "failure trying to reload:"
msgstr "试图é‡æ–°è½½å…¥æ—¶å¤±è´¥ï¼š"
@@ -2549,118 +2549,118 @@ msgstr "<返回值>"
msgid "<unknown>"
msgstr "<未知>"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "无效 %%H 值"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "无效 %%J 值"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "无效 %%r 值"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "无效 %%R 值"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "无效 %%N 值"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "无效 %%P 值"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "无效 %%h 值"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "无效 %%L 值"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "无效 %%m 值"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "无效 %%M 值"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "无效 %%U 值"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "无效 %%s 值"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "无效 %%C 值"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "无效 %%E 值"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "未指定未知的é‡å®šä½æ–¹å¼"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "无效的 %%xn 代ç "
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "预测到的 Thumb 指令"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "在æ¡ä»¶åºåˆ—中预测到的指令"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "代ç â€˜%c’的æ“作数无效"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, c-format
msgid "invalid shift operand"
msgstr "无效的移ä½æ“作数"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2668,85 +2668,85 @@ msgstr "无效的移ä½æ“作数"
msgid "invalid operand for code '%c'"
msgstr "代ç â€˜%c’的æ“作数无效"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, c-format
msgid "instruction never executed"
msgstr "指令从ä¸è¢«æ‰§è¡Œ"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "缺少æ“作数"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
msgid "function parameters cannot have __fp16 type"
msgstr "函数形å‚ä¸èƒ½æœ‰ __fp16 类型"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
msgid "functions cannot return __fp16 type"
msgstr "函数ä¸èƒ½è¿”回 __fp16 类型"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr "地å€æ“ä½œæ•°éœ€è¦ Xã€Y 或 Z 寄存器约æŸ"
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use %<&%> constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "输出æ“作数 %d 必须使用%<&%>约æŸ"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "地å€é”™è¯¯ï¼Œä¸æ˜¯(reg+disp):"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "bad address, not a constant):"
msgid "bad address, not a constant:"
msgstr "错误的地å€ï¼Œä¸æ˜¯ä¸€ä¸ªå¸¸é‡):"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "地å€é”™è¯¯ï¼Œä¸æ˜¯(reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "错误的地å€ï¼Œä¸æ˜¯ post_inc 或 pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "编译器内部错误。错误的地å€ï¼š"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "编译器内部错误。未知的模å¼ï¼š"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "无效指令:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "错误指令:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "无效的 move 指令:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "错误的 shift 指令"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "编译器内部错误。ä¸æ­£ç¡®çš„移ä½é‡ï¼š"
@@ -2762,8 +2762,8 @@ msgstr "无效的åŒç²¾åº¦å¸¸é‡æ“作数"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2841,21 +2841,21 @@ msgstr "éžé¢„期的æ“作数"
msgid "unrecognized address"
msgstr "无法识别的地å€"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "预期的常é‡æ— æ³•è¯†åˆ«"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "地å€ä¸­æœ‰éžé¢„期的副作用"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
msgid "unidentifiable call op"
msgstr "无法识别的 call æ“作"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "尚未设定好 PIC 寄存器"
@@ -2863,7 +2863,7 @@ msgstr "尚未设定好 PIC 寄存器"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "无效的æ“作数输出代ç "
@@ -2992,73 +2992,73 @@ msgstr "错误的 output_move_double æ“作数"
msgid "bad output_condmove_single operand"
msgstr "错误的 output_condmove_single æ“作数"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "无效的 UNSPEC 用作æ“作数"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr "使用‘%%&’ æ—¶æ²¡æœ‰æŒ‡å®šä»»ä½•åŠ¨æ€ TLS 引用"
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, c-format
msgid "invalid operand size for operand code '%c'"
msgstr "æ“作数代ç â€˜%c’的æ“作数大å°æ— æ•ˆ"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr "æ“作数代ç â€˜%c’的æ“作数类型无效"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "æ“作数ä¸æ˜¯ä¸€ä¸ªæ¡ä»¶ç ï¼Œæ— æ•ˆçš„æ“作数代ç â€˜D’"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "æ“作数既ä¸æ˜¯ä¸€ä¸ªå¸¸é‡ä¹Ÿä¸æ˜¯ä¸€ä¸ªæ¡ä»¶ç ï¼Œæ— æ•ˆçš„æ“作数代ç â€˜C’"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "æ“作数既ä¸æ˜¯ä¸€ä¸ªå¸¸é‡ä¹Ÿä¸æ˜¯ä¸€ä¸ªæ¡ä»¶ç ï¼Œæ— æ•ˆçš„æ“作数代ç â€˜F’"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "æ“作数既ä¸æ˜¯ä¸€ä¸ªå¸¸é‡ä¹Ÿä¸æ˜¯ä¸€ä¸ªæ¡ä»¶ç ï¼Œæ— æ•ˆçš„æ“作数代ç â€˜c’"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "æ“作数既ä¸æ˜¯ä¸€ä¸ªå¸¸é‡ä¹Ÿä¸æ˜¯ä¸€ä¸ªæ¡ä»¶ç ï¼Œæ— æ•ˆçš„æ“作数代ç â€˜f’"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is not a condition code, invalid operand code 'D'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "æ“作数ä¸æ˜¯ä¸€ä¸ªæ¡ä»¶ç ï¼Œæ— æ•ˆçš„æ“作数代ç â€˜D’"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "æ“作数ä¸æ˜¯ä¸€ä¸ªæ¡ä»¶ç ï¼Œæ— æ•ˆçš„æ“作数代ç â€˜Y’"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "无效的æ“作数代ç â€˜%c’"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "æ“作数的约æŸæ— æ•ˆ"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "未知的指令模å¼"
@@ -3089,35 +3089,35 @@ msgstr "环境å˜é‡ DJGPP 指å‘的文件‘%s’ä¸å­˜åœ¨"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "环境å˜é‡ DJGPP 指å‘的文件‘%s’已æŸå"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, c-format
msgid "invalid %%G mode"
msgstr "无效 %%G 模å¼"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand:未知代ç "
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "从%<__fpreg%>的转æ¢æ— æ•ˆ"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "å‘%<__fpreg%>的转æ¢æ— æ•ˆ"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "对%<__fpreg%>çš„æ“作无效"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "无效的 %%P æ“作数"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "无效的 %%p 值"
@@ -3196,7 +3196,7 @@ msgid "post-increment address is not a register"
msgstr "åŽè‡ªå¢žåœ°å€ä¸æ˜¯ä¸€ä¸ªå¯„存器"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "错误地å€"
@@ -3360,87 +3360,87 @@ msgstr "-mno-altivec ç¦ç”¨äº† VSX"
msgid "bad move"
msgstr "错误的移动"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, c-format
msgid "invalid %%c value"
msgstr "无效 %%c 值"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "无效 %%f 值"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "无效 %%F 值"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "无效 %%G 值"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "无效 %%j 代ç "
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "无效 %%J 代ç "
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "无效 %%k 值"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "无效 %%K 值"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "无效 %%O 值"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "无效 %%q 值"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "无效 %%S 值"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "无效 %%T 值"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "无效 %%u 值"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "无效 %%v 值"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "无效的 %%x 值"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "无效 %%y 值,请试用“Zâ€çº¦æŸ"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "传递 AltiVec å‚数给无原型的函数"
@@ -3539,62 +3539,62 @@ msgstr "%%R çš„æ“作数无效"
msgid "invalid operand to %%S"
msgstr "%%S çš„æ“作数无效"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "创建和使用时使用了ä¸åŒçš„架构/ABI"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "创建和使用时使用了ä¸åŒçš„ ABI"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "创建和使用时使用了ä¸åŒçš„大å°ç«¯è®¾å®š"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "无效的 %%Y æ“作数"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "无效的 %%A æ“作数"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "无效的 %%B æ“作数"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%C operand"
msgstr "无效的 %%P æ“作数"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%D operand"
msgstr "无效的 %%P æ“作数"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "无效的 %%f æ“作数"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "无效的 %%s æ“作数"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "long long 常é‡ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ç«‹å³æ•°æ“作数"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "浮点常é‡ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ç«‹å³æ•°æ“作数"
@@ -3619,7 +3619,7 @@ msgstr "‘o’æ“作数ä¸æ˜¯ä¸€ä¸ªå¸¸é‡"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand:未知代ç "
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "无效的 %%c æ“作数"
@@ -3635,25 +3635,25 @@ msgstr "无效的 %%d æ“作数"
msgid "invalid %%H specifier"
msgstr "无效 %%L 代ç "
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "无效的 %%P æ“作数"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "无效的 %%P æ“作数"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "无效的 %%P æ“作数"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3665,7 +3665,7 @@ msgstr "无效的 %%P æ“作数"
msgid "invalid %%%c operand"
msgstr "无效的 %%c æ“作数"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3677,42 +3677,42 @@ msgstr "无效的 %%P æ“作数"
msgid "invalid operand for 'r' specifier"
msgstr "‘b’修饰符的æ“作数无效"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "无效的 %%P æ“作数"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "无效的 %%P æ“作数"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "无效的 %%P æ“作数"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "无效的 %%P æ“作数"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "无效的 %%P æ“作数"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -3777,11 +3777,11 @@ msgstr "地å€ä¸­æ— å¯„存器"
msgid "address offset not a constant"
msgstr "地å€å移é‡ä¸æ˜¯ä¸€ä¸ªå¸¸é‡"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "备选 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "备选 2:"
@@ -4008,7 +4008,7 @@ msgstr "%s:%d:在%qs的广义常表达å¼æ‰©å±•ä¸­"
msgid "candidates are:"
msgstr "备选为:"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, gcc-internal-format
msgid "candidate is:"
msgid_plural "candidates are:"
@@ -4054,48 +4054,48 @@ msgstr "转æ¢ä¸¢å¤±äº†å¸¸é‡å±žæ€§"
msgid "source type is not polymorphic"
msgstr "æºç±»åž‹ä¸æ˜¯å¤šæ€çš„"
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "å•ç›®å‡çš„æ“作数类型错误"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "å•ç›®åŠ çš„æ“作数类型错误"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "按ä½å–åçš„å‚数类型错误"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "ä¸èƒ½å¯¹è¯¥ç±»åž‹çš„å‚数求ç»å¯¹å€¼"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "ä¸èƒ½å¯¹è¯¥ç±»åž‹çš„å‚数求共轭"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
msgid "in argument to unary !"
msgstr "å•ç›® ! çš„å‚数中"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr "类型没有å‰è‡ªå¢žè¿ç®—符"
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr "类型没有åŽè‡ªå¢žè¿ç®—符"
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr "类型没有å‰è‡ªå‡è¿ç®—符"
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr "类型没有åŽè‡ªå‡è¿ç®—符"
@@ -4348,7 +4348,7 @@ msgstr "错误的è¿ç®—符"
msgid "Bad type in constant expression"
msgstr "常é‡è¡¨è¾¾å¼ä¸­ç±»åž‹é”™è¯¯"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "éžé¢„期的模å—结æŸ"
@@ -4376,11 +4376,11 @@ msgstr "å— IF"
msgid "implied END DO"
msgstr "暗示的 END DO"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "赋值"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "指针赋值"
@@ -4464,53 +4464,53 @@ msgstr "用户è¿ç®—符‘%s’(ä½äºŽ %%L)çš„æ“作数为 %s/%s"
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "%%Lå’Œ%%L处的æ“作数的秩ä¸ä¸€è‡´"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr "循环å˜é‡"
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
msgid "iterator variable"
msgstr "未使用的å˜é‡%q+D"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
msgid "Start expression in DO loop"
msgstr "DO 循环中的开始表达å¼"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
msgid "End expression in DO loop"
msgstr "DO 循环中结æŸè¡¨è¾¾å¼"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
msgid "Step expression in DO loop"
msgstr "DO 循环中的步进表达å¼"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
#, fuzzy
msgid "DEALLOCATE object"
msgstr "å‡å°ç›®æ ‡æ–‡ä»¶"
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
#, fuzzy
msgid "ALLOCATE object"
msgstr "å‡å°ç›®æ ‡æ–‡ä»¶"
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
#, fuzzy
msgid "STAT variable"
msgstr "未使用的å˜é‡%q+D"
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
#, fuzzy
msgid "ERRMSG variable"
msgstr "未使用的å˜é‡%q+D"
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
#, fuzzy
msgid "item in READ"
msgstr "读å–链接脚本"
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4519,7 +4519,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr "数组构造函数中 CHARACTER 长度ä¸åŒ(%ld/%ld)"
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
#, fuzzy
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr "试图分é…负数大å°çš„内存。å¯èƒ½æœ‰æ•´æ•°æº¢å‡º"
@@ -4591,7 +4591,7 @@ msgstr "ä¸æ­£ç¡®çš„函数返回值"
msgid "Memory allocation failed"
msgstr "内存分é…失败"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr "内存分é…将超过内存上é™"
@@ -4798,7 +4798,7 @@ msgstr "请勿åŒæ—¶æŒ‡å®š -march=... å’Œ -mcpu=..."
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
#, fuzzy
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr "与 gprof(1) 一起使用时请考虑使用‘-pg’以代替‘-p’"
@@ -4859,6 +4859,12 @@ msgstr "shared å’Œ mdll 互ä¸å…¼å®¹"
msgid "static is not supported on TPF-OS"
msgstr "TPF-OS ä¸æ”¯æŒ static"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+#, fuzzy
+#| msgid "consider using `-pg' instead of `-p' with gprof(1) "
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr "与 gprof(1) 一起使用时请考虑使用‘-pg’以代替‘-p’"
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "ä¸èƒ½åŒæ—¶ä½¿ç”¨ -EB å’Œ -EL"
@@ -4889,10 +4895,6 @@ msgstr "-mbig-endian å’Œ -mlittle-endian ä¸èƒ½ä¸€èµ·ä½¿ç”¨"
msgid "no processor type specified for linking"
msgstr "没有指定链接用的处ç†å™¨ç±»åž‹"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
-msgstr "gfortran ä¸æ”¯æŒå•ç‹¬ä½¿ç”¨ -E 而ä¸å¸¦ -cpp"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 ä¸æ”¯æŒå°ç«¯åœ¨å‰"
@@ -4945,6 +4947,10 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "-shared 选项目å‰åœ¨ VAX ELF 下ä¸å—支æŒ"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
+msgstr "gfortran ä¸æ”¯æŒå•ç‹¬ä½¿ç”¨ -E 而ä¸å¸¦ -cpp"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni å’Œ -femit-class-files 互ä¸å…¼å®¹"
@@ -8093,6 +8099,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -10496,19 +10506,31 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "ä¸é¢„定义系统或 GCC 特定的å®"
#: go/lang.opt:42
+msgid "Add explicit checks for division by zero"
+msgstr ""
+
+#: go/lang.opt:46
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
+msgstr ""
+
+#: go/lang.opt:50
#, fuzzy
msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr "-fdump-<类型>\t将一些编译器内部信æ¯è½¬å‚¨åˆ°ä¸€ä¸ªæ–‡ä»¶é‡Œ"
-#: go/lang.opt:46
+#: go/lang.opt:54
msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
msgstr ""
-#: go/lang.opt:50
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
msgstr ""
-#: go/lang.opt:54
+#: go/lang.opt:66
#, fuzzy
msgid "Functions which return values must end with return statements"
msgstr "被声明为%<noreturn%>的函数å´æœ‰%<return%>语å¥"
@@ -12056,256 +12078,268 @@ msgstr "生æˆä¸€ä¸ªå…±äº«åº“"
msgid "Create a position independent executable"
msgstr "生æˆä½ç½®æ— å…³å¯æ‰§è¡Œæ–‡ä»¶"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
msgid "invalid use of type"
msgstr "对未定义类型%<%s %E%>的使用无效"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-msgid "floating point constant truncated to integer"
-msgstr "大定点常é‡éšå¼æˆªæ–­ä¸ºå®šç‚¹ç±»åž‹"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
#, fuzzy
msgid "constant refers to itself"
msgstr "inlined_to pointer 指å‘自身"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
msgid "expected numeric type"
msgstr "需è¦æ•°å­—类型"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "expected integer or boolean type"
+msgid "expected boolean type"
+msgstr "需è¦æ•´æ•°æˆ–布尔类型"
+
+#: go/gofrontend/expressions.cc:3911
msgid "expected integer or boolean type"
msgstr "需è¦æ•´æ•°æˆ–布尔类型"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
msgid "invalid operand for unary %<&%>"
msgstr "代ç â€˜%c’的æ“作数无效"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
msgid "expected pointer"
msgstr "需è¦æŒ‡é’ˆ"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
msgid "incompatible types in binary expression"
msgstr "二元表达å¼ä¸­ç±»åž‹ä¸åŒ¹é…"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
msgid "shift of non-integer operand"
msgstr "éžæ•´æ•°æ“作数使用了æ“作数代ç â€˜%c’"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
msgid "shift count not unsigned integer"
msgstr "switch 语å¥ä¸­çš„值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
msgid "negative shift count"
msgstr "移ä½æ¬¡æ•°ä¸ºè´Ÿ"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
msgid "object is not a method"
msgstr "对象ä¸æ˜¯ä¸€ä¸ªæ–¹æ³•"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
msgid "method type does not match object type"
msgstr "方法类型ä¸åŒ¹é…对象类型"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid argument to built-in function"
msgid "invalid use of %<...%> with builtin function"
msgstr "内建函数实å‚无效"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
msgid "not enough arguments"
msgstr "实å‚太少"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
msgid "too many arguments"
msgstr "实å‚太多"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument must be a constant"
msgid "argument 1 must be a map"
msgstr "实å‚必须是常数"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
msgid "invalid type for make function"
msgstr "函数%q+#D的抽象返回类型无效"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
#, fuzzy
#| msgid "bad length when making slice"
msgid "length required when allocating a slice"
msgstr "生æˆåˆ‡ç‰‡æ—¶é•¿åº¦é”™è¯¯"
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad size when making map"
msgid "bad size for make"
msgstr "生æˆæ˜ å°„时大å°é”™è¯¯"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr "生æˆåˆ‡ç‰‡æ—¶å®¹é‡é”™è¯¯"
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments to %qE"
msgid "too many arguments to make"
msgstr "%qE实å‚太多"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
msgid "argument must be array or slice or channel"
msgstr "å³å®žå‚必须是一个切片或字符串"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
msgid "unsupported argument type to builtin function"
msgstr "%<__builtin_frame_address%>的实å‚ä¸å—支æŒ"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
msgid "argument must be channel"
msgstr "实å‚必须是通é“"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
#, fuzzy
msgid "cannot close receive-only channel"
msgstr "间接引用æ“作数无效"
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
msgid "argument must be a field reference"
msgstr "%3$L处内建函数‘%2$s’的实å‚‘%1$s’必须是 %4$s"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
msgid "left argument must be a slice"
msgstr "左实å‚必须是一个切片"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr "元素类型必须一样"
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "left argument must be a slice"
msgid "first argument must be []byte"
msgstr "左实å‚必须是一个切片"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "right argument must be a slice or a string"
msgid "second argument must be slice or string"
msgstr "å³å®žå‚必须是一个切片或字符串"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "parameter %u has void type"
msgid "argument 2 has invalid type"
msgstr "第 %u 个å‚数类型为 void"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
msgid "argument must have complex type"
msgstr "实å‚必须具有å¤æ•°ç±»åž‹"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
msgid "complex arguments must have identical types"
msgstr "å¤æ•°å®žå‚必须具有相åŒçš„类型"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
msgid "complex arguments must have floating-point type"
msgstr "å¤æ•°å®žå‚必须具有浮点类型"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of %<this%> at top level"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "在文件作用域使用%<this%>无效"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
msgid "expected function"
msgstr "需è¦å‡½æ•°"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
msgid "incompatible type for receiver"
msgstr "接收器类型ä¸å…¼å®¹"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of %<this%> in non-member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "在éžæˆå‘˜å‡½æ•°ä¸­ä½¿ç”¨%<this%>无效"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
msgid "number of results does not match number of values"
msgstr "返回值的数é‡ä¸åŒ¹é…值的数é‡"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
msgid "index must be integer"
msgstr "索引必须是整数"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
msgid "slice end must be integer"
msgstr "切片结尾必须是整数"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
msgid "incompatible type for map index"
msgstr "映射索引类型ä¸å…¼å®¹"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
#, fuzzy
msgid "expected interface or pointer to interface"
msgstr "%<delete%>çš„å‚数类型应为指针而éž%q#T"
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
msgid "too many expressions for struct"
msgstr "æ供给格å¼å­—符串的实å‚太多"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
msgid "too few expressions for struct"
msgstr "æ ¼å¼å­—符串实å‚太少"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
msgid "invalid unsafe.Pointer conversion"
msgstr "从%<__fpreg%>的转æ¢æ— æ•ˆ"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
msgid "expected channel"
msgstr "需è¦é€šé“"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
msgid "invalid left hand side of assignment"
@@ -12339,21 +12373,21 @@ msgstr "返回语å¥ä¸­å€¼å¤ªå¤š"
msgid "expected boolean expression"
msgstr "需è¦å¸ƒå°”表达å¼"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
msgid "incompatible types in send"
msgstr "指针目标类型在 C++ 中ä¸å…¼å®¹"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
#, fuzzy
msgid "invalid send on receive-only channel"
msgstr "间接引用æ“作数无效"
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
#, fuzzy
msgid "range clause must have array, slice, string, map, or channel type"
msgstr "å³å®žå‚必须是一个切片或字符串"
@@ -12419,73 +12453,73 @@ msgstr "需è¦æ˜¾å¼è½¬æ¢"
msgid "cannot use type %s as type %s"
msgstr "ä¸èƒ½å°†ç±»åž‹ %s 用作 %s"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
msgid "different receiver types"
msgstr "ä¸åŒçš„接收器类型"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
msgid "different number of parameters"
msgstr "å½¢å‚æ•°é‡ä¸åŒ"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
msgid "different parameter types"
msgstr "å½¢å‚类型ä¸åŒ"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr "ä¸åŒçš„å¯å˜å‚æ•°"
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
#, fuzzy
msgid "different number of results"
msgstr "å½¢å‚æ•°é‡ä¸åŒ"
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
#, fuzzy
msgid "different result types"
msgstr "ä¸åŒçš„接收器类型"
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr "对%s%s%sçš„éšå¼èµ‹å€¼éšè—了字段%s%s%s"
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr "需è¦æ˜¾å¼è½¬æ¢ï¼›ç¼ºå°‘方法%s%s%s"
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, c-format
msgid "incompatible type for method %s%s%s"
msgstr "方法%s%s%s类型ä¸å…¼å®¹"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
msgid "incompatible type for method %s%s%s (%s)"
msgstr "方法%s%s%s类型ä¸å…¼å®¹"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
msgid "type has no methods"
msgstr "类型没有方法"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, c-format
msgid "ambiguous method %s%s%s"
msgstr "有歧义的方法%s%s%s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, c-format
msgid "missing method %s%s%s"
msgstr "缺少方法%s%s%s"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr "方法%s%s%s需è¦ä¸€ä¸ªæŒ‡é’ˆ"
@@ -12552,7 +12586,7 @@ msgstr "%<__builtin_prefetch%>的第三个实å‚必须是一个常é‡"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "%<__builtin_prefetch%>的第三个实å‚无效;使用 0"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "给函数%<va_start%>çš„å‚数太少"
@@ -12574,7 +12608,7 @@ msgstr "(因此您应该å‘%<va_arg%>传递%qT而ä¸æ˜¯%qT)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "如果执行到这段代ç ï¼Œç¨‹åºå°†ä¸­æ­¢"
@@ -12659,7 +12693,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr "%K对%<__builtin_va_arg_pack ()%>的使用无效"
@@ -12753,8 +12787,8 @@ msgstr "%K试图 free 一个ä¸åœ¨å †ä¸Šçš„对象"
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "void 值未如预期地被忽略"
@@ -13029,7 +13063,7 @@ msgstr "%q+D的声明éšè—了一个全局声明"
msgid "declaration of %q+D shadows a previous local"
msgstr "%q+D的声明éšè—了先å‰çš„一个局部å˜é‡"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, gcc-internal-format
msgid "shadowed declaration is here"
msgstr "被éšè—的声明在这里"
@@ -13134,7 +13168,7 @@ msgstr "开关跳转至语å¥è¡¨è¾¾å¼ä¸­"
msgid "%qE defined as wrong kind of tag"
msgstr "%qE定义为类型错误的标记"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "错误地使用了%<restrict%>"
@@ -13255,7 +13289,7 @@ msgstr "å½¢å‚%qDå·²åˆå§‹åŒ–"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "å¯å˜å¤§å°çš„对象ä¸èƒ½è¢«åˆå§‹åŒ–"
@@ -13265,7 +13299,7 @@ msgstr "å¯å˜å¤§å°çš„对象ä¸èƒ½è¢«åˆå§‹åŒ–"
msgid "variable %qD has initializer but incomplete type"
msgstr "å˜é‡%qD有åˆå§‹å€¼è®¾å®šä½†ç±»åž‹ä¸å®Œå…¨"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "为内è”函数%q+D给定了 noinline 属性"
@@ -13295,7 +13329,7 @@ msgstr "在%q+D中缺少数组大å°"
msgid "zero or negative size array %q+D"
msgstr "数组%q+D大å°ä¸º 0 或负"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "%q+D的存储大å°æœªçŸ¥"
@@ -13405,7 +13439,7 @@ msgstr "数组大å°ä¸èƒ½ç¡®å®š"
msgid "variable length array %qE is used"
msgstr "使用了å˜é•¿æ•°ç»„%qE"
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr "使用了å˜é•¿æ•°ç»„"
@@ -13490,7 +13524,7 @@ msgstr "为形å‚%qE指定了存储类"
msgid "storage class specified for unnamed parameter"
msgstr "为无åå½¢å‚指定了存储类"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "为类型å指定了存储类"
@@ -13639,7 +13673,7 @@ msgstr "类型å声明为返回一个数组的函数"
msgid "function definition has qualified void return type"
msgstr "函数定义有é™å®šçš„ void 返回类型"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "忽略函数返回类型的类型é™å®š"
@@ -13758,7 +13792,7 @@ msgstr "ISO C ä¸å…许使用 const 或 volatile é™å®šå‡½æ•°ç±»åž‹"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "结构或è”åˆæˆå‘˜ä¸èƒ½å…·æœ‰å¯å˜ç±»åž‹"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "å˜é‡æˆ–字段%qE声明为 void"
@@ -14186,7 +14220,7 @@ msgstr "实å‚%qD与内建原型ä¸ç¬¦"
msgid "argument %qD doesn%'t match prototype"
msgstr "实å‚%qD与原型ä¸ç¬¦"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "在有返回值的函数中未å‘现 return 语å¥"
@@ -14379,7 +14413,7 @@ msgstr "标识符%qE与 C++ 关键字冲çª"
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C ä¸å…许翻译å•å…ƒä¸ºç©º"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C ä¸æ”¯æŒåœ¨å‡½æ•°å¤–使用多余的%<;%>"
@@ -14389,7 +14423,7 @@ msgstr "ISO C ä¸æ”¯æŒåœ¨å‡½æ•°å¤–使用多余的%<;%>"
msgid "unknown type name %qE"
msgstr "未知的类型å%qE"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "需è¦æŒ‡å®šå£°æ˜Ž"
@@ -14399,7 +14433,7 @@ msgstr "需è¦æŒ‡å®šå£°æ˜Ž"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "需è¦æ ‡è¯†ç¬¦æˆ–%<(%>"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "此目标机ä¸æ”¯æŒèŠ‚属性"
@@ -14419,7 +14453,7 @@ msgstr "éžé¢„期的属性"
msgid "data definition has no type or storage class"
msgstr "æ•°æ®å®šä¹‰æ—¶æ²¡æœ‰ç±»åž‹æˆ–存储类"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "需è¦%<,%>或%<;%>"
@@ -14447,7 +14481,7 @@ msgstr "ISO C90 ä¸æ”¯æŒ%<_Static_assert%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 ä¸æ”¯æŒ%<_Static_assert%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "需è¦å­—é¢å­—符串"
@@ -14474,18 +14508,18 @@ msgstr "é™æ€æ–­è¨€é”™è¯¯ï¼š%E"
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "需è¦æ ‡è¯†ç¬¦"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "枚举表以逗å·ç»“å°¾"
@@ -14617,7 +14651,7 @@ msgstr "ISO C90 ä¸å…许混åˆä½¿ç”¨å£°æ˜Žå’Œä»£ç "
msgid "expected %<}%> before %<else%>"
msgstr "%<else%>å‰éœ€è¦%<}%>"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr "%<else%>之å‰æ²¡æœ‰%<if%>"
@@ -14646,17 +14680,17 @@ msgstr "需è¦æ ‡è¯†ç¬¦æˆ–%<*%>"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "需è¦è¯­å¥"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "建议在空的%<if%>语å¥ä½“周围加上花括å·"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr "建议在空的%<else%>语å¥ä½“周围加上花括å·"
@@ -14725,7 +14759,7 @@ msgstr "ISO C++ ä¸å…许对éžç±»åž‹ä½¿ç”¨%<alignof%>"
msgid "cannot take address of %qs"
msgstr "无法å–å¾—ä½æ®µ%qD的地å€"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "需è¦è¡¨è¾¾å¼"
@@ -14768,261 +14802,261 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "%<__builtin_longjmp%>的第二个实å‚必须是 1"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments to function %<__builtin_next_arg%>"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "给函数%<__builtin_next_arg%>çš„å‚æ•°æ•°ç›®ä¸å¯¹"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "å¤åˆå­—é¢å€¼æœ‰å¯å˜çš„大å°"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr "组åˆå­—é¢å¸¸é‡æœ‰åœ°å€ç©ºé—´é™å®š"
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 ä¸å…许å¤åˆå­—é¢å€¼"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
msgid "expected identifier or %<)%>"
msgstr "需è¦æ ‡è¯†ç¬¦æˆ–%<(%>"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "为方法定义指定了多余的分å·"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
msgid "objective-c method declaration is expected"
msgstr "需è¦æŒ‡å®šå£°æ˜Ž"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
msgid "no type or storage class may be specified here,"
msgstr "为%qs指定了存储类"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, fuzzy, gcc-internal-format
msgid "unknown property attribute"
msgstr "attribute(target(\"%s\"))未知"
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "%qsåŽæ–­è¨€"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "%qsåŽæ–­è¨€"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
msgid "the %<setter%> attribute may only be specified once"
msgstr "ä¸èƒ½ä¸ºå‡½æ•°æŒ‡å®šåœ°å€åŒºåŸŸå±žæ€§"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr "setter çš„å字必须以%<:%>结尾"
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "ä¸èƒ½ä¸ºå‡½æ•°æŒ‡å®šåœ°å€åŒºåŸŸå±žæ€§"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr "%<#pragma omp barrier%>åªèƒ½ç”¨åœ¨å¤åˆè¯­å¥ä¸­"
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr "%<#pragma omp flush%>åªèƒ½ç”¨åœ¨å¤åˆè¯­å¥ä¸­"
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%>åªèƒ½ç”¨åœ¨å¤åˆè¯­å¥ä¸­"
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr "%<#pragma omp taskwait%>åªèƒ½ç”¨åœ¨å¤åˆè¯­å¥ä¸­"
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr "%<#pragma omp section%>åªèƒ½ç”¨åœ¨%<#pragma omp sections%>结构中"
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%>必须是第一个"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr "太多的%qså­å¥"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr "折å å‚数需è¦æ­£æ•´å¸¸é‡è¡¨è¾¾å¼"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "需è¦%<none%>或%<shared%>"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, gcc-internal-format
msgid "expected integer expression"
msgstr "需è¦æ•´æ•°è¡¨è¾¾å¼"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr "%<num_threads%>值必须为正"
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, fuzzy, gcc-internal-format
#| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "需è¦%<+%>ã€%<*%>ã€%<-%>ã€%<&%>ã€%<^%>ã€%<|%>ã€%<&&%>或%<||%>"
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr "调度%<runtime%>ä¸æŽ¥å—一个%<chunk_size%>å‚æ•°"
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr "调度%<auto%>ä¸æŽ¥å—一个%<chunk_size%>å‚æ•°"
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "无效的调度类型"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr "需è¦%<#pragma omp%>å­å¥"
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr "%qs对%qs而言无效"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "invalid operator for %<#pragma omp atomic%>"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "%<#pragma omp atomic%>è¿ç®—符无效"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "%<#pragma omp atomic%>è¿ç®—符无效"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr "需è¦%<(%>或行尾"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, gcc-internal-format
msgid "for statement expected"
msgstr "éœ€è¦ for 语å¥"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "需è¦è¿­ä»£å£°æ˜Žæˆ–åˆå§‹åŒ–"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr "ä¸å¤Ÿå®Œç¾Žçš„嵌套循环"
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr "折å çš„循环没有完美的嵌套"
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr "迭代å˜é‡%qDä¸åº”当是 firstprivate"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%qE在其首次使用åŽè¢«å£°æ˜Žä¸º%<threadprivate%>"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "自动å˜é‡%qEä¸èƒ½æ˜¯%<threadprivate%>"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%<threadprivate%>%qE的类型ä¸å®Œå…¨"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -15032,7 +15066,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD类型ä¸å®Œå…¨"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "对 void 表达å¼çš„使用无效"
@@ -15098,67 +15132,73 @@ msgstr "指针目标类型在 C++ 中ä¸å…¼å®¹"
msgid "function return types not compatible due to %<volatile%>"
msgstr "由于%<volatile%>,函数返回类型ä¸å…¼å®¹"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "在指å‘ä¸å®Œå…¨ç±»åž‹çš„指针上执行算术è¿ç®—"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, fuzzy, gcc-internal-format
+#| msgid "defining a type in a compound literal is invalid in C++"
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr "C++ ä¸å…许在组åˆå­—é¢å¸¸é‡ä¸­å®šä¹‰ç±»åž‹"
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT没有å为%qEçš„æˆå‘˜"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "在éžç»“构或è”åˆä¸­è¯·æ±‚æˆå‘˜%qE"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "æ领指å‘ä¸å®Œå…¨ç±»åž‹çš„指针"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "æ领%<void *%>指针"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "下标è¿ç®—çš„å·¦æ“作数既éžæ•°ç»„也éžæŒ‡é’ˆ"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "数组下标ä¸æ˜¯ä¸€ä¸ªæ•´æ•°"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "下标è¿ç®—çš„å·¦æ“作数是函数指针"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, gcc-internal-format
msgid "index value is out of bound"
msgstr "索引值越界"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C ä¸å…许按下标访问%<register%>数组"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 ä¸å…许éžå·¦å€¼çš„数组作为下标è¿ç®—çš„å·¦æ“作数"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr "枚举常é‡åœ¨æ­¤å®šä¹‰"
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "被调用的对象%qEä¸æ˜¯ä¸€ä¸ªå‡½æ•°"
@@ -15166,374 +15206,374 @@ msgstr "被调用的对象%qEä¸æ˜¯ä¸€ä¸ªå‡½æ•°"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "函数ç»ç”±ä¸å…¼å®¹çš„类型调用"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr "调用了有é™å®š void 返回类型的函数"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, fuzzy, gcc-internal-format
#| msgid "the last argument must be an 8-bit immediate"
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个 8 ä½ç«‹å³æ•°"
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "%<__builtin_longjmp%>的第二个实å‚必须是 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, fuzzy, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr "%4$L处‘%3$s’内建函数的‘%1$s’和‘%2$s’实å‚类型必须相åŒ"
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %qE"
msgstr "æ供给函数%qE的实å‚太多"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "æ供给函数%qE的实å‚太多"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, gcc-internal-format
msgid "declared here"
msgstr "在此声明"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "å®žå‚ %d 的类型ä¸å®Œå…¨"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为整数而ä¸æ˜¯æµ®ç‚¹æ•°ä¼ é€’"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为整数而ä¸æ˜¯å¤æ•°ä¼ é€’"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为å¤æ•°è€Œä¸æ˜¯æµ®ç‚¹æ•°ä¼ é€’"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为浮点数而ä¸æ˜¯æ•´æ•°ä¼ é€’"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为å¤æ•°è€Œä¸æ˜¯æ•´æ•°ä¼ é€’"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为浮点数而ä¸æ˜¯å¤æ•°ä¼ é€’"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为%<float%>而ä¸æ˜¯%<double%>传递"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE)将作为%qT而ä¸æ˜¯%qT传递"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将以ä¸åŒçš„宽度传递"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作用无符å·æ•°ä¼ é€’"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为有符å·æ•°ä¼ é€’"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "C++ 中ä¸å…许从%qT到%qTçš„éšå¼è½¬æ¢"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "æ供给函数%qE的实å‚太少"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr "与字é¢å­—符串比较的结构是ä¸å¯é¢„测的"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr "在%qT和%qT间比较"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "在å‡æ³•ä¸­ä½¿ç”¨ç±»åž‹ä¸º%<void *%>的指针"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "函数指针ä¸èƒ½ç›¸å‡"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C ä¸æ”¯æŒç”¨%<~%>求共轭å¤æ•°"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "å•ç›® ! 的实å‚类型无效"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr "C++ 中枚举自增æ“作无效"
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr "C++ 中枚举自å‡æ“作无效"
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C ä¸æ”¯æŒå¯¹å¤æ•°ç±»åž‹è¿›è¡Œ%<++%>或%<--%>æ“作"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "该类型ä¸æ”¯æŒè‡ªå¢ž"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "该类型ä¸æ”¯æŒè‡ªå‡"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "自增指å‘未知结构的指针"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "自å‡æŒ‡å‘未知结构的指针"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr "å–一个类型为%<void%>的表达å¼çš„地å€"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr "å‘åªè¯»ä½ç½®%qE赋值"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr "令åªè¯»ä½ç½®%qE自增"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr "令åªè¯»ä½ç½®%qE自å‡"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "无法å–å¾—ä½æ®µ%qD的地å€"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "嵌套函数中使用了全局寄存器å˜é‡%qD"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "嵌套函数中使用了寄存器å˜é‡%qD"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "è¦æ±‚全局寄存器å˜é‡%qD的地å€"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "è¦æ±‚寄存器å˜é‡%qD的地å€ã€‚"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "éžå·¦å€¼æ•°ç»„出现在æ¡ä»¶è¡¨è¾¾å¼ä¸­"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "C++ 中ä¸å…许从%qT到%qTçš„éšå¼è½¬æ¢"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C ä¸å…许æ¡ä»¶è¡¨è¾¾å¼ä»…有一边为空"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­ä½¿ç”¨äº†æŒ‡å‘ä¸ç›¸äº¤åœ°å€ç©ºé—´çš„指针"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C ä¸å…许在æ¡ä»¶è¡¨è¾¾å¼ä¸­åŒæ—¶ä½¿ç”¨%<void *%>和函数指针"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼æŒ‡é’ˆç±»åž‹ä¸åŒ¹é…"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æŒ‡é’ˆ/整数类型ä¸åŒ¹é…"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­ç±»åž‹ä¸åŒ¹é…"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "逗å·è¡¨è¾¾å¼çš„å·¦æ“作数ä¸èµ·ä½œç”¨"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
msgid "cast adds %q#v qualifier to function type"
msgstr "类型转æ¢ä¸ºå‡½æ•°ç±»åž‹æ·»åŠ äº†æ–°çš„é™å®š"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "类型转æ¢ä¸¢å¼ƒäº†æŒ‡é’ˆç›®æ ‡ç±»åž‹çš„é™å®š"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "类型转æ¢æŒ‡å®šäº†æ•°ç»„类型"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "类型转æ¢æŒ‡å®šäº†å‡½æ•°ç±»åž‹"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C ä¸å…许将éžæ ‡é‡è½¬æ¢ä¸ºå…¶è‡ªèº«ç±»åž‹"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C ä¸å…许转æ¢ä¸ºè”åˆç±»åž‹"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "类型转æ¢çš„æºç±»åž‹æœªå‡ºçŽ°åœ¨è”åˆä¸­"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr "å°†ä¸ç›¸äº¤çš„普通地å€ç©ºé—´æŒ‡é’ˆè½¬æ¢ä¸º %s 地å€ç©ºé—´æŒ‡é’ˆ"
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr "å°†ä¸ç›¸äº¤çš„ %s 地å€ç©ºé—´æŒ‡é’ˆè½¬æ¢ä¸ºæ™®é€šåœ°å€ç©ºé—´æŒ‡é’ˆ"
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr "å°†ä¸ç›¸äº¤çš„ %2$s 地å€ç©ºé—´æŒ‡é’ˆè½¬æ¢ä¸º %1$s 地å€ç©ºé—´æŒ‡é’ˆ"
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "类型转æ¢å¢žå¤§äº†ç›®æ ‡ç±»åž‹çš„对é½éœ€æ±‚"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "将一个指针转æ¢ä¸ºå¤§å°ä¸åŒçš„æ•´æ•°"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "从类型为%qT的函数调用转æ¢åˆ°ä¸åŒ¹é…的类型%qT"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "将一个整数转æ¢ä¸ºå¤§å°ä¸åŒçš„指针"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C ä¸å…许将一个函数指针转æ¢ä¸ºä¸€ä¸ªå¯¹è±¡æŒ‡é’ˆ"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C ä¸å…许将一个对象指针转æ¢ä¸ºä¸€ä¸ªå‡½æ•°æŒ‡é’ˆ"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr "C++ ç¦æ­¢åœ¨ç±»åž‹è½¬æ¢ä¸­å®šä¹‰ç±»åž‹"
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr "C++ ç¦æ­¢åœ¨èµ‹å€¼æ—¶è¿›è¡Œæžšä¸¾è½¬æ¢"
@@ -15545,693 +15585,693 @@ msgstr "C++ ç¦æ­¢åœ¨èµ‹å€¼æ—¶è¿›è¡Œæžšä¸¾è½¬æ¢"
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr "需è¦ç±»åž‹%qT,但实å‚的类型为%qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "C++ ç¦æ­¢åœ¨ä¼ é€’%2$qE的第 %1$d 个å‚数时进行枚举转æ¢"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr "C++ ç¦æ­¢åœ¨åˆå§‹åŒ–时进行枚举转æ¢"
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr "C++ ç¦æ­¢åœ¨è¿”回时进行枚举转æ¢"
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "ä¸èƒ½å°†å³å€¼ä¼ é€’给引用å‚æ•°"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "传递%2$qE的第 %1$d 个实å‚时从未é™å®šçš„函数指针构造了é™å®šçš„函数指针"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "将未é™å®šçš„函数指针赋予é™å®šçš„函数指针"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "返回时将未é™å®šçš„函数指针赋给é™å®šçš„函数指针"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "返回时将未é™å®šçš„函数指针赋给é™å®šçš„函数指针"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "传递%2$qE的第 %1$d 个实å‚时丢弃了指针目标类型的é™å®š"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "赋值丢弃了指针目标类型的é™å®š"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "åˆå§‹åŒ–丢弃了指针目标类型的é™å®š"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
msgid "return discards %qv qualifier from pointer target type"
msgstr "返回时丢弃了指针目标类型的é™å®š"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C ä¸å…许将实å‚转æ¢ä¸ºè”åˆ"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "C++ 中ä¸å…许从%qT到%qTçš„éšå¼è½¬æ¢"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "传递%2$qE的第 %1$d 个å‚数时从指针转æ¢ä¸ºæœªè¢«åŒ…围的地å€ç©ºé—´"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
msgstr "将指针赋值给未被包围的地å€ç©ºé—´"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
msgstr "从指针å‘未被包围的地å€ç©ºé—´åˆå§‹åŒ–"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr "返回时将指针赋值给未被包围的地å€ç©ºé—´"
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "%2$qE的第 %1$d 个实å‚å¯èƒ½æ˜¯ format 属性的备选"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "赋值的左手边å¯èƒ½æ˜¯ format 属性的备选时"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "åˆå§‹åŒ–的左手边å¯èƒ½æ˜¯ format 属性的备选时"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "返回类型å¯èƒ½æ˜¯ format 属性的备选"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C ä¸å…许将%2$qE的第 %1$d 个实å‚在函数指针和%<void *%>间传递"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C ä¸å…许在函数指针和%<void *%>间赋值"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C ä¸å…许在函数指针和%<void *%>é—´åˆå§‹åŒ–"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C ä¸å…许在函数指针和%<void *%>间返回"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "传递%2$qE的第 %1$d 个å‚数给指针时,目标与指针符å·ä¸ä¸€è‡´"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "对指针赋值时目标与指针符å·ä¸ä¸€è‡´"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "åˆå§‹åŒ–指针时目标与指针符å·ä¸ä¸€è‡´"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "返回指针时目标与指针符å·ä¸ä¸€è‡´"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "传递%2$qE的第 %1$d 个å‚数时在ä¸å…¼å®¹çš„指针类型间转æ¢"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "从ä¸å…¼å®¹çš„指针类型赋值"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "从ä¸å…¼å®¹çš„指针类型åˆå§‹åŒ–"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "返回了ä¸å…¼å®¹çš„指针类型"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "对éžå·¦å€¼æ•°ç»„的使用无效"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "传递%2$qE的第 %1$d 个å‚数时将整数赋给指针,未作类型转æ¢"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "赋值时将整数赋给指针,未作类型转æ¢"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "åˆå§‹åŒ–时将整数赋给指针,未作类型转æ¢"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "返回时将整数赋给指针,未作类型转æ¢"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "传递%2$qE的第 %1$d 个å‚数时将指针赋给整数,未作类型转æ¢"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "赋值时将指针赋给整数,未作类型转æ¢"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "åˆå§‹åŒ–将指针赋给整数,未作类型转æ¢"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "返回时将指针赋给整数,未作类型转æ¢"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "%2$qE的第 %1$d 个实å‚类型ä¸å…¼å®¹"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "å°†%2$qT赋值给%1$qT时类型ä¸å…¼å®¹"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "用%2$qTåˆå§‹åŒ–%1$qT时类型ä¸å…¼å®¹"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "å°†%qT返回为%qT时类型ä¸å…¼å®¹"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "传统 C ä¸æŽ¥å—自动的èšåˆåˆå§‹åŒ–"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(在%qsçš„åˆå§‹åŒ–附近)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "用括å·ä¸­çš„字符串常é‡åˆå§‹åŒ–数组"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "对å¯å˜æ•°ç»„æˆå‘˜çš„åˆå§‹åŒ–"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "用宽字符串åˆå§‹åŒ– char 数组"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, gcc-internal-format
msgid "wide character array initialized from non-wide string"
msgstr "用窄字符串åˆå§‹åŒ–宽字符数组"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, gcc-internal-format
msgid "wide character array initialized from incompatible wide string"
msgstr "用ä¸å…¼å®¹çš„宽字符串åˆå§‹åŒ–宽字符数组"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "用字符串常é‡åˆå§‹åŒ–的数组类型ä¸åˆé€‚"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "用éžå¸¸é‡çš„数组表达å¼åˆå§‹åŒ–数组"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "åˆå§‹å€¼è®¾å®šå…ƒç´ ä¸æ˜¯å¸¸é‡"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, gcc-internal-format
msgid "initializer element is not a constant expression"
msgstr "åˆå§‹å€¼è®¾å®šä¸­å…ƒç´ ä¸æ˜¯å¸¸é‡è¡¨è¾¾å¼"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "åˆå§‹å€¼è®¾å®šä¸­çš„元素在载入时无法被计算出"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "无效的åˆå§‹å€¼è®¾å®š"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "ä¸é€æ˜Žçš„å‘é‡ç±»åž‹ä¸èƒ½è¢«åˆå§‹åŒ–"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "åˆå§‹å€¼è®¾å®šé¡¹æœ«å°¾æœ‰å¤šä½™çš„花括å·ç»„"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "åˆå§‹å€¼è®¾å®šå‘¨å›´ç¼ºå°‘花括å·"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "æ ‡é‡åˆå§‹åŒ–带花括å·"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "在嵌套的上下文中åˆå§‹åŒ–å¯å˜æ•°ç»„æˆå‘˜"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "缺少åˆå§‹å€¼è®¾å®š"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "空的标é‡åˆå§‹å€¼è®¾å®šé¡¹"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "æ ‡é‡åˆå§‹å€¼è®¾å®šä¸­æœ‰å¤šä½™å…ƒç´ "
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "在éžæ•°ç»„åˆå§‹å€¼è®¾å®šé¡¹ä¸­å‡ºçŽ°æ•°ç»„索引"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "字段åä¸åœ¨è®°å½•æˆ–è”åˆåˆå§‹å€¼è®¾å®šä¸­"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°ç»„索引ä¸æ˜¯æ•´åž‹"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, gcc-internal-format
msgid "array index in initializer is not an integer constant expression"
msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°ç»„索引ä¸æ˜¯æ•´åž‹å¸¸é‡è¡¨è¾¾å¼"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°ç»„索引ä¸æ˜¯å¸¸æ•°"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "åˆå§‹åŒ–时数组索引越界"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "åˆå§‹å€¼è®¾å®šé¡¹ä¸­ç´¢å¼•èŒƒå›´ä¸ºç©º"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°æ®ç´¢å¼•èŒƒå›´è¶…出数组边界"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "åˆå§‹å€¼è®¾å®šé¡¹é‡Œæœ‰æœªçŸ¥çš„字段%qE"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "带副作用的字段åˆå§‹å€¼è®¾å®šè¢«è¦†ç›–"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, gcc-internal-format
msgid "initialized field overwritten"
msgstr "å·²åˆå§‹åŒ–的字段被覆盖"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "字符数组åˆå§‹å€¼è®¾å®šé¡¹ä¸­æœ‰å¤šä½™å…ƒç´ "
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "结构åˆå§‹å€¼è®¾å®šé¡¹ä¸­æœ‰å¤šä½™å…ƒç´ "
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "对å¯å˜æ•°ç»„æˆå‘˜éžé™æ€åœ°åˆå§‹åŒ–"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "è”åˆåˆå§‹å€¼è®¾å®šé¡¹ä¸­æœ‰å¤šä½™å…ƒç´ "
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "传统 C ä¸æŽ¥å—对è”åˆçš„åˆå§‹åŒ–"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "数组åˆå§‹å€¼è®¾å®šé¡¹ä¸­æœ‰å¤šä½™çš„元素"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "å‘é‡åˆå§‹å€¼è®¾å®šé¡¹ä¸­æœ‰å¤šä½™å…ƒç´ "
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "æ ‡é‡åˆå§‹å€¼è®¾å®šé¡¹ä¸­æœ‰å¤šä½™å…ƒç´ "
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C++ ä¸å…许%<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "被声明为%<noreturn%>的函数å´æœ‰%<return%>语å¥"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "在有返回值的的函数中,%<return%>ä¸å¸¦è¿”回值"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "在无返回值的函数中,%<return%>带返回值"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "ISO C ä¸å…许在无返回值的函数中%<return%>带返回值"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "函数返回局部å˜é‡çš„地å€"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch 语å¥ä¸­çš„值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "在 ISO C 中,%<long%>开关表达å¼ä¸è¢«è½¬æ¢ä¸º%<int%>"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr "case æ ‡å·ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡è¡¨è¾¾å¼"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case æ ‡å·å‡ºçŽ°åœ¨å¼€å…³è¯­å¥å¤–"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "%<default%>æ ‡å·æœªå‡ºçŽ°åœ¨ switch 语å¥å†…"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "建议显å¼åœ°ä½¿ç”¨èŠ±æ‹¬å·ä»¥é¿å…出现有歧义的%<else%>"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break 语å¥ä¸åœ¨å¾ªçŽ¯æˆ–开关语å¥å†…"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue 语å¥å‡ºçŽ°åœ¨å¾ªçŽ¯ä»¥å¤–"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr "OpenMP for 循环中使用了 break 语å¥"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "语å¥ä¸èµ·ä½œç”¨"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "表达å¼è¯­å¥ç±»åž‹ä¸å®Œå…¨"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "å³ç§»æ¬¡æ•°ä¸ºè´Ÿ"
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "å³ç§»æ¬¡æ•°å¤§äºŽæˆ–等于类型宽度"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "左移次数为负"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "左移次数大于或等于类型宽度"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "comparing vectors with different element types"
msgstr "对ä¸åŒæžšä¸¾ç±»åž‹ä¹‹é—´çš„比较给出警告"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, fuzzy, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr "å½¢å‚æ•°é‡ä¸åŒ"
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "使用 == 或 != 比较浮点数是ä¸å®‰å…¨çš„"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
msgstr "比较指å‘ä¸ç›¸äº¤çš„地å€ç©ºé—´çš„指针"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C ä¸å…许在%<void *%>和函数指针间比较"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "比较ä¸ç›¸å…³çš„指针时缺少类型转æ¢"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "比较指针和整数"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "在完全和ä¸å®Œå…¨æŒ‡é’ˆé—´æ¯”较"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C ä¸å…许函数指针间比较大å°"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
msgid "ordered comparison of pointer with null pointer"
msgstr "指针与整数 0 比较大å°"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "指针与整数 0 比较大å°"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "C++ 中ä¸å…许从%qT到%qTçš„éšå¼è½¬æ¢"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "需è¦æ ‡é‡æ—¶ä½¿ç”¨äº†ä¸èƒ½è¢«è½¬æ¢ä¸ºæŒ‡é’ˆçš„数组"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "需è¦æ ‡é‡æ—¶ä½¿ç”¨äº†ç»“构类型"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "需è¦æ ‡é‡æ—¶ä½¿ç”¨äº†è”åˆç±»åž‹"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "需è¦æ ‡é‡æ—¶ä½¿ç”¨äº†ç»“构类型"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr "%qE的类型对%<reduction%>无效"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE的类型对%<reduction(%s)%>无效"
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE必须是%<threadprivate%>æ–¹å¯%<copyin%>"
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE在å­å¥%qs中ä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr "%qE在数æ®å­å¥ä¸­å¤šæ¬¡å‡ºçŽ°"
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "%qE在å­å¥%<firstprivate%>中ä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "%qE在å­å¥%<lastprivate%>中ä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qEå¯è¢«é¢„先确定为%qs,为%qs"
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr "C++ 在%<va_arg%>中需è¦æå‡åŽçš„类型而ä¸æ˜¯æžšä¸¾"
@@ -16241,7 +16281,7 @@ msgstr "C++ 在%<va_arg%>中需è¦æå‡åŽçš„类型而ä¸æ˜¯æžšä¸¾"
msgid "function call has aggregate value"
msgstr "函数调用有èšåˆç±»åž‹"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "å˜é‡%q+D的大å°å¤ªå¤§"
@@ -17061,52 +17101,52 @@ msgstr "%s:ä¸èƒ½æ‰“å¼€ COFF 文件"
msgid "library lib%s not found"
msgstr "找ä¸åˆ°åº“ lib%s"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "无法转æ¢ä¸ºæŒ‡é’ˆç±»åž‹"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "需è¦æµ®ç‚¹æ•°å€¼æ—¶ä½¿ç”¨äº†æŒ‡é’ˆå€¼"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "需è¦æµ®ç‚¹æ•°æ—¶ä½¿ç”¨äº†èšåˆå€¼"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "转æ¢ä¸ºä¸å®Œå…¨ç±»åž‹"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
msgid "can%'t convert between vector values of different size"
msgstr "ä¸èƒ½åœ¨ä¸åŒå¤§å°çš„矢é‡ç±»åž‹é—´è¿›è¡Œè½¬æ¢"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "需è¦æ•´æ•°æ—¶ä½¿ç”¨äº†èšåˆå€¼"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "需è¦å¤æ•°æ—¶ä½¿ç”¨äº†æŒ‡é’ˆå€¼"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "需è¦å¤æ•°æ—¶ä½¿ç”¨äº†èšåˆå€¼"
-#: convert.c:965
+#: convert.c:963
#, gcc-internal-format
msgid "can%'t convert value to a vector"
msgstr "ä¸èƒ½å°†å€¼è½¬æ¢ä¸ºå‘é‡"
-#: convert.c:1004
+#: convert.c:1002
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr "需è¦å®šç‚¹æ•°æ—¶ä½¿ç”¨äº†èšåˆå€¼"
@@ -17262,7 +17302,7 @@ msgstr "%d 的主导者应该为 %d,而ä¸æ˜¯ %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr "多个 EH 个性需è¦æ±‡ç¼–å™¨æ”¯æŒ .cfi.personality 指示。"
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "non-delegitimized UNSPEC %d found in variable location"
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
@@ -17353,43 +17393,43 @@ msgstr "verify_eh_tree 失败"
msgid "stack limits not supported on this target"
msgstr "堆栈é™åˆ¶åœ¨æ­¤ç›®æ ‡æœºä¸Šä¸å—支æŒ"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
msgid "mis-aligned access used for structure member"
msgstr "为结构字段指定了存储类"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
msgid "mis-aligned access used for structure bitfield"
msgstr "为结构字段指定了存储类"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "嵌套函数中使用了全局寄存器å˜é‡%qD"
-#: expr.c:9996
+#: expr.c:9971
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "%K调用%qs,声明有错误属性:%s"
-#: expr.c:10003
+#: expr.c:9978
#, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "%K调用%qs,声明有警告属性:%s"
@@ -17464,7 +17504,7 @@ msgstr "å°† && 或 || 简化为 & 或 | æ—¶å‡å®šæœ‰ç¬¦å·æ•°ä»Žä¸æº¢å‡º"
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr "在比较周围组åˆå˜é‡æ—¶å‡å®šæœ‰ç¬¦å·æ•°ä»Žä¸æº¢å‡º"
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr "折å æ£€æŸ¥: 原始树因折å è€Œæ”¹å˜ "
@@ -17474,7 +17514,7 @@ msgstr "折å æ£€æŸ¥: 原始树因折å è€Œæ”¹å˜ "
msgid "total size of local objects too large"
msgstr "局部对象的总大å°å¤ªå¤§"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "%<asm%>中ä¸å¯èƒ½çš„约æŸ"
@@ -17919,77 +17959,77 @@ msgstr "字节ç æµï¼šæœªçŸ¥çš„ GIMPLE 语å¥æ ‡è®° %s"
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "gimple æ£€æŸ¥ï¼šéœ€è¦ %s(%s),得到 %s(%s) 在 %s 中,于 %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, gcc-internal-format
msgid "using result of function returning %<void%>"
msgstr "使用返回%<void%>的函数的结果"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "汇编输出 %d 中左值无效"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr "éžå†…存输入 %d 必须在内存中"
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "内存输入 %d ä¸å¯ç›´æŽ¥å¯»å€"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
msgid "threadprivate variable %qE used in untied task"
msgstr "嵌套函数中使用了寄存器å˜é‡%qD"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, fuzzy, gcc-internal-format
msgid "enclosing task"
msgstr "括入并行"
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr "%qE未为在括入的并行中指定"
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr "括入并行"
-#: gimplify.c:5845
+#: gimplify.c:5852
#, gcc-internal-format
msgid "iteration variable %qE should be private"
msgstr "迭代å˜é‡%qE应当是ç§æœ‰çš„"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
msgstr "迭代å˜é‡%qEä¸åº”当是 firstprivate"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
msgstr "迭代å˜é‡%qEä¸åº”当是 reduction"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, gcc-internal-format
msgid "%s variable %qE is private in outer context"
msgstr "%s å˜é‡%qE在外层上下文中是ç§æœ‰çš„"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "gimplification 失败"
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
msgid "could not close Go dump file: %m"
msgstr "无法打开用零填充的指令转储文件%qs:%s"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
msgid "could not open Go dump file %qs: %m"
msgstr "无法打开最终指令转储文件%qs:%s"
@@ -18044,7 +18084,7 @@ msgstr "ä¸èƒ½ä½¿ç”¨ Graphite 循环优化"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -18186,48 +18226,48 @@ msgstr "å˜é‡%qDé‡å£°æ˜Žä¸ºå‡½æ•°"
msgid "function %qD redeclared as variable"
msgstr "函数%qDé‡å£°æ˜Žä¸ºå˜é‡"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "å±éšœåŒºåŸŸä¸å¯ä»¥ç´§å¯†åµŒå¥—在工作共享ã€ä¸´ç•Œã€æœ‰åºã€ä¸»è¦çš„或显å¼çš„任务区域内"
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr "工作共享区域ä¸å¯ä»¥ç´§å¯†åµŒå¥—在工作共享ã€ä¸´ç•Œã€æœ‰åºã€ä¸»è¦çš„或显å¼çš„任务区域内"
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr "主è¦åŒºåŸŸä¸å¯ä»¥ç´§å¯†åµŒå¥—在工作共享或显å¼çš„任务区域内"
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr "有åºåŒºåŸŸä¸å¯ä»¥ç´§å¯†åµŒå¥—在临界或显å¼çš„任务区域内"
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr "有åºåŒºåŸŸå¿…须紧密嵌套在一个有次åºåˆ†å¥çš„循环内"
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr "临界区域ä¸å¯ä»¥è¢«åµŒå¥—在åŒå的临界区域内"
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr "OpenMP 结构å—出å£æ— æ•ˆ"
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr "OpenMP 结构å—å…¥å£æ— æ•ˆ"
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr "进出 OpenMP 结构å—的分支无效"
@@ -18334,7 +18374,7 @@ msgstr "-freorder-blocks-and-partition ä¸èƒ½åœ¨æ­¤æž¶æž„下和异常一起工ä½
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition 在此架构下ä¸æ”¯æŒå †æ ˆå±•å¼€ä¿¡æ¯"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition ä¸èƒ½åœ¨æ­¤æž¶æž„下工作"
@@ -18703,9 +18743,9 @@ msgstr "无法将%qs用作调用者使用寄存器"
msgid "can%'t use %qs as a fixed register"
msgstr "无法将%qs用作调用者固定寄存器"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "未知的寄存器å:%s"
@@ -18787,12 +18827,12 @@ msgstr "在类%qs中找ä¸åˆ°å¯æº¢å‡ºçš„寄存器"
msgid "%<asm%> operand requires impossible reload"
msgstr "%<asm%>è¦æ±‚ä¸å¯èƒ½çš„é‡æ–°åŠ è½½"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "%<asm%>æ“作数的约æŸä¸Žæ“作数大å°ä¸å…¼å®¹"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "%<asm%>的输出æ“作数是常é‡"
@@ -19012,7 +19052,7 @@ msgstr "packed 属性导致低效率的对é½"
msgid "packed attribute is unnecessary"
msgstr "ä¸éœ€è¦ packed 属性"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "数组元素的对é½è¾¹ç•Œæ¯”元素大å°è¿˜è¦å¤§"
@@ -19233,7 +19273,7 @@ msgstr "指定链接时使用%qD无效"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -19249,7 +19289,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr "间接函数调用目标未定义"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -19265,7 +19305,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr "间接函数调用目标未定义"
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
#| msgid "namespace %qD not allowed in using-declaration"
msgid "asm not allowed in atomic transaction"
@@ -19304,621 +19344,621 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
#| msgid "attributes are not allowed on a function-definition"
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "函数定义中ä¸å…许有属性"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr "ADDR_EXPR å˜åŒ–时常é‡æœªè¢«é‡æ–°è®¡ç®—"
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr "ADDR_EXPR å˜åŒ–时副作用未被é‡æ–°è®¡ç®—"
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr "为一个已被å–地å€çš„å˜é‡è®¾å®šäº† DECL_GIMPLE_REG_P"
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr "SSA å在 freelist 中,å´ä»ç„¶è¢«æ领"
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, fuzzy, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr "间接 gimple 调用中有é™æ€è°ƒç”¨é“¾"
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
msgid "invalid first operand of MEM_REF"
msgstr "%%R çš„æ“作数无效"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
msgid "invalid offset operand of MEM_REF"
msgstr "%%R çš„æ“作数无效"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR 具有一个总是å‡çš„æ¡ä»¶"
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, fuzzy, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr "当有元组的时候ä¸æœŸæœ› MODIFY_EXPR。"
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr "å·²å–地å€ï¼Œä½†æ˜¯ ADDRESSABLE ä½æœªè¢«è®¾ç½®"
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä½¿ç”¨äº†éžæ•´æ•°å€¼"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "无效的æ¡ä»¶æ“作数"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "BIT_FIELD_REF ä½ç½®æˆ–大å°æ“作数无效"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr "整体结果类型精度ä¸åŒ¹é… BIT_FIELD_REF 字段尺寸"
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr "éžæ•´ä½“结果的模å¼ç²¾åº¦ä¸åŒ¹é… BIT_FIELD_REF 的字段尺寸"
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "无效的引用å‰ç¼€"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "+/- æ“作数无效,类型为指针"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr "指数增的æ“作数无效,第一个æ“作数ä¸æ˜¯ä¸€ä¸ªæŒ‡é’ˆ"
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, fuzzy, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr "指数增的æ“作数无效,第二个æ“作数ä¸æ˜¯ä¸€ä¸ªå…·æœ‰ sizetype 类型的整数"
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr "无效的最å°å·¦å€¼è¡¨è¾¾å¼"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr "间接引用æ“作数无效"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr "数组引用æ“作数无效"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr "数组引用类型ä¸åŒ¹é…"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr "数组范围引用中类型ä¸åŒ¹é…"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr "实数/虚数引用中类型ä¸åŒ¹é…"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr "组件引用中类型ä¸åŒ¹é…"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, fuzzy, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr "在左æ“作数边转化 SSA_NAME。"
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
msgid "conversion of register to a different size"
msgstr "将一个指针转æ¢ä¸ºå¤§å°ä¸åŒçš„æ•´æ•°"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
msgid "invalid address operand in MEM_REF"
msgstr "%%R çš„æ“作数无效"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
msgid "invalid offset operand in MEM_REF"
msgstr "无效的移ä½æ“作数"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, fuzzy, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr "%%R çš„æ“作数无效"
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, fuzzy, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr "BIT_FIELD_REF ä½ç½®æˆ–大å°æ“作数无效"
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, gcc-internal-format
msgid "invalid function in gimple call"
msgstr "gimple 调用中有éžæ³•å‡½æ•°"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr "gimple 调用了éžå‡½æ•°"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr "纯常函数状æ€æ— æ•ˆ"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr "gimple 调用中左æ“作数无效"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr "ä¸è¿”回的调用中有左值"
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr "gimple 调用中转æ¢æ— æ•ˆ"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, gcc-internal-format
msgid "invalid static chain in gimple call"
msgstr "gimple 调用中é™æ€é“¾æ— æ•ˆ"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr "间接 gimple 调用中有é™æ€è°ƒç”¨é“¾"
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, fuzzy, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr "é™æ€è°ƒç”¨é“¾ä¸­æœ‰ä¸ä½¿ç”¨é™æ€è°ƒç”¨çš„函数"
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, gcc-internal-format
msgid "invalid argument to gimple call"
msgstr "gimple 调用中å‚数无效"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr "gimple 比较中æ“作数无效"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in comparison expression"
msgid "mismatching comparison operand types"
msgstr "比较表达å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, fuzzy, gcc-internal-format
#| msgid "invalid operands in gimple comparison"
msgid "non-vector operands in vector comparison"
msgstr "gimple 比较中æ“作数无效"
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "invalid vector permutation constant"
msgid "invalid vector comparison resulting type"
msgstr "无效的å‘é‡ç½®æ¢å¸¸é‡"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, fuzzy, gcc-internal-format
#| msgid "Warn about comparison of different enum types"
msgid "bogus comparison result type"
msgstr "对ä¸åŒæžšä¸¾ç±»åž‹ä¹‹é—´çš„比较给出警告"
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr "éžå¯„存器作为å•ç›®æ“作的左æ“作数"
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr "å•ç›®æ“作中æ“作数无效"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr "空转æ¢ä¸­ç±»åž‹æ— æ•ˆ"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, gcc-internal-format
msgid "invalid types in address space conversion"
msgstr "地å€ç©ºé—´è½¬æ¢ä¸­ç±»åž‹æ— æ•ˆ"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr "整点转æ¢ä¸­ç±»åž‹æ— æ•ˆ"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr "å‘浮点转æ¢æ—¶ç±»åž‹æ— æ•ˆ"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr "å‘整数转æ¢æ—¶ç±»åž‹æ— æ•ˆ"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr "å•ç›®æ“作时ä¸å¹³å‡¡çš„转æ¢"
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr "éžå¯„存器作为二元æ“作的左æ“作数"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr "二元æ“作中中æ“作数无效"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr "å¤æ•°è¡¨è¾¾å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr "移ä½è¡¨è¾¾å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr "å‘é‡ç§»ä½è¡¨è¾¾å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr "对浮点å‘é‡çš„éžå…ƒç´ å¤§å°çš„å‘é‡ç§»ä½"
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in vector shift expression"
msgid "type mismatch in widening vector shift expression"
msgstr "å‘é‡ç§»ä½è¡¨è¾¾å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr "å‘é‡å€¼çš„加法中有无效的éžå‘é‡æ“作数"
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr "+/-(指针)æ“作数无效"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr "指针加法表达å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr "二元表达å¼ä¸­ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, fuzzy, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr "éžå¯„存器作为å•ç›®æ“作的左æ“作数"
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
msgid "invalid operands in ternary operation"
msgstr "二元æ“作中中æ“作数无效"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
msgid "type mismatch in fused multiply-add expression"
msgstr "å¤æ•°è¡¨è¾¾å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in vector shift expression"
msgid "type mismatch in vector permute expression"
msgstr "å‘é‡ç§»ä½è¡¨è¾¾å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, fuzzy, gcc-internal-format
#| msgid "expected integer expression"
msgid "vector types expected in vector permute expression"
msgstr "需è¦æ•´æ•°è¡¨è¾¾å¼"
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "invalid increment expression"
msgid "invalid mask type in vector permute expression"
msgstr "无效的自增语å¥"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr "赋值时ä¸å¹³å‡¡çš„转æ¢"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr "å•ç›®è¡¨è¾¾å¼ä¸­æ“作数无效"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr "地å€è¡¨è¾¾å¼ç±»åž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr "gimple 内存存储中å³æ“作数无效"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr "返回语å¥æ“作数无效"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr "返回语å¥è½¬æ¢æ— æ•ˆ"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr "goto 的目标既éžæ ‡å·äº¦éžæŒ‡é’ˆ"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr "开关语å¥æ“作数无效"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr "label_to_block_map 中æ¡ç›®ä¸æ­£ç¡®"
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, gcc-internal-format
msgid "incorrect setting of landing pad number"
msgstr "ç€é™†åœºå·ç è®¾ç½®ä¸æ­£ç¡®"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, gcc-internal-format
msgid "invalid comparison code in gimple cond"
msgstr "gimple æ¡ä»¶ä¸­æ¯”较代ç æ— æ•ˆ"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, gcc-internal-format
msgid "invalid labels in gimple cond"
msgstr "gimple æ¡ä»¶ä¸­çš„æ ‡å·æ— æ•ˆ"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, gcc-internal-format
msgid "invalid PHI result"
msgstr "无效的 PHI 结果"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, gcc-internal-format
msgid "missing PHI def"
msgstr "缺少 PHI 定义"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, gcc-internal-format
msgid "invalid PHI argument"
msgstr "无效的 PHI 实å‚"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "incompatible types in PHI argument %u"
msgstr "PHI å®žå‚ %u 类型ä¸å…¼å®¹"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr "verify_gimple 失败"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, fuzzy, gcc-internal-format
msgid "dead STMT in EH table"
msgstr "在 EH 表中死了的 STMT"
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "gimple_bb (phi) 设置为一个错误的基本å—"
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "对树结节的共享ä¸æ­£ç¡®"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "gimple_bb (stmt) 设置为一个错误的基本å—"
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, gcc-internal-format
msgid "in statement"
msgstr "在语å¥ä¸­"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr "语å¥è¢«æ ‡è®°ä¸ºæŠ›å‡ºå¼‚常,但实际上并未抛出"
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr "语å¥åœ¨å—中被标记为抛出"
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr "ENTRY_BLOCK 有与之关è”çš„ IL"
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr "EXIT_BLOCK 有与之关è”çš„ IL"
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr "ç›´é€šè¾¹ä»ŽåŸºæœ¬å— %d 退出"
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr "éžå±€éƒ¨æ ‡å·"
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr "EH ç€é™†åœºæ ‡å·"
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr "æ ‡å·"
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "åŸºæœ¬å— %d 中出现æµç¨‹æŽ§åˆ¶"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr "åœ¨åŸºæœ¬å— %d 中控制语å¥åŽçš„直通边"
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "åŸºæœ¬å— %d ä¸­éž GIMPLE_COND åŽçš„真å‡è¾¹"
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr "åŸºæœ¬å— %d 结尾处有错误的出边标记"
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "åŸºæœ¬å— %d 末尾显å¼çš„ goto"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr "åŸºæœ¬å— %d 中,返回边并ä¸æŒ‡å‘退出"
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr "默认 case ä¸åœ¨ case å‘é‡çš„开头"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr "case æ ‡å·æœªæŽ’åºï¼š "
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "多余的出边 %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "缺少边 %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, gcc-internal-format
msgid "%<noreturn%> function does return"
msgstr "%<noreturn%>函数返回了"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr "在有返回值的函数中,控制æµç¨‹åˆ°è¾¾å‡½æ•°å°¾"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, gcc-internal-format
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "忽略声明有 warn_unused_result 属性的%qD的返回值"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, gcc-internal-format
msgid "ignoring return value of function declared with attribute warn_unused_result"
msgstr "忽略声明有 warn_unused_result 属性的函数的返回值"
@@ -19978,73 +20018,73 @@ msgstr "åŸºæœ¬å— %i 有ä¸æ­£ç¡®çš„è¾¹"
msgid "BB %i has incorrect fallthru edge"
msgstr "åŸºæœ¬å— %i 有ä¸æ­£ç¡®çš„下è½è¾¹"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, gcc-internal-format
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "函数%q+F无法被å¤åˆ¶ï¼Œå› ä¸ºå®ƒæŽ¥å—了éžå±€éƒ¨çš„ goto"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, gcc-internal-format
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "函数%q+F无法被å¤åˆ¶ï¼Œå› ä¸ºå®ƒåœ¨ä¸€ä¸ªé™æ€å˜é‡ä¸­ä¿å­˜äº†å±€éƒ¨æ ‡å·çš„地å€"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "函数%q+F无法被内è”,因为它使用了 alloca (使用 always_inline 属性强制内è”)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "函数%q+F无法被内è”,因为它使用了 setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "函数%q+F无法被内è”,因为它使用了å˜é•¿å®žå‚表"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "函数%q+F无法被内è”,因为它使用了 setjmp-longjmp 异常处ç†"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "函数%q+F无法被内è”,因为使用了éžå±€éƒ¨çš„ goto"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "函数%q+F无法被内è”,因为使用了 __builtin_return 或 __builtin_apply_args"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "函数%q+F无法被内è”,因为包å«ä¸€ä¸ªè®¡ç®—转移"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "函数%q+F无法被内è”,因为使用了 -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "函数%q+F无法被内è”,因为它使用了与内è”冲çªçš„属性"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "inlining failed in call to %q+F: %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "调用%q+F时内è”失败:%s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "从此处调用"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "调用%q+F时内è”失败:%s"
@@ -20259,7 +20299,7 @@ msgstr "stmt (%p) 在优化以åŽæ ‡è®°ä¸ºä¿®æ”¹çš„:"
msgid "verify_ssa failed"
msgstr "verify_ssa 失败"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, gcc-internal-format
msgid "%qD was declared here"
msgstr "%qD在此声明"
@@ -20322,52 +20362,52 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr "数组下标越过了数组边界"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr "数组下标大于数组边界"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr "数组下标å°äºŽæ•°ç»„边界"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr "å°†æ¡ä»¶ç®€åŒ–为常é‡æ—¶å‡å®šæœ‰ç¬¦å·æ•°ä»Žä¸æº¢å‡º"
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr "简化æ¡ä»¶æ—¶å‡å®šæœ‰ç¬¦å·æ•°ä»Žä¸æº¢å‡º"
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr "由于数æ®ç±»åž‹èŒƒå›´é™åˆ¶ï¼Œæ¯”较结果永远为å‡"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr "由于数æ®ç±»åž‹èŒƒå›´é™åˆ¶ï¼Œæ¯”较结果永远为真"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr "å°†%</%>或%<%%%>简化为%<>>%>或%<&%>æ—¶å‡å®šæœ‰ç¬¦å·æ•°ä»Žä¸æº¢å‡º"
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr "å°†%<abs (X)%>简化为%<X%>或%<-X%>æ—¶å‡å®šæœ‰ç¬¦å·æ•°ä»Žä¸æº¢å‡º"
@@ -20377,22 +20417,22 @@ msgstr "å°†%<abs (X)%>简化为%<X%>或%<-X%>æ—¶å‡å®šæœ‰ç¬¦å·æ•°ä»Žä¸æº¢å‡º"
msgid "ignoring attributes applied to %qT after definition"
msgstr "忽略在其定义之åŽä¸º%qT应用的属性"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D已被声明为具有 dllexport 属性:忽略 dllimport"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+Dé‡å£°æ˜Žæ—¶æ²¡æœ‰ dllimport 属性,但已被作为 dllimport 链接引用过"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+Dé‡å£°æ˜Žæ—¶æ²¡æœ‰ dllimport 属性:忽略先å‰çš„ dllimport"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -20407,140 +20447,140 @@ msgstr "%q+Dé‡å£°æ˜Žæ—¶æ²¡æœ‰ dllimport 属性:忽略先å‰çš„ dllimport"
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "%qE属性被忽略"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "内è”函数%q+D声明为 dllimport:忽略此属性"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "函数%q+D的定义被标记为 dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "å˜é‡%q+D的定义被标记为 dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr "符å·%q+D需è¦å¤–部链接,因为%qE属性"
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr "%qEæ„味ç€é»˜è®¤å¯è§æ€§ï¼›ä½†%qDå·²ç»è¢«å£°æ˜Žä¸ºæœ‰ä¸åŒçš„å¯è§æ€§"
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "函数数组是没有æ„义的"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "函数ä¸èƒ½è¿”回函数"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "树检查:%s,得到 %s 在 %s,于 %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "树检查:ä¸éœ€è¦ %s,得到 %s 在 %s,于 %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "树检查:需è¦ç±»%qs,得到%qs(%s) 在 %s,于 %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "树检查:ä¸éœ€è¦ç±»%qs,得到%qs(%s) 在 %s,于 %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "æ ‘æ£€æŸ¥ï¼šéœ€è¦ omp_clause %s,得到 %s 在 %s,于 %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "树检查:需è¦åŒ…å«%qs结构的树,得到%qs在 %s,于 %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr "树检查:访问了 %3$s 中有 %2$d 个 elt 的 tree_vec 的 elt %1$d,于 %4$s:%5$d"
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr "树检查:在 %4$s 中访问有 %3$d 个æ“作数的 %2$s 的第 %1$d 个æ“作数,于 %5$s:%6$d"
-#: tree.c:9052
+#: tree.c:9056
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "树检查:在 %4$s 中访问有 %3$d 个æ“作数的 omp_clause %2$s 的第 %1$d 个æ“作数,于 %5$s:%6$d"
-#: tree.c:11336
+#: tree.c:11340
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "ä¸å»ºè®®ä½¿ç”¨%qD(声明于 %s:%d):%s"
-#: tree.c:11340
+#: tree.c:11344
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "ä¸å»ºè®®ä½¿ç”¨%qD(声明于 %s:%d)"
-#: tree.c:11365
+#: tree.c:11369
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "ä¸å»ºè®®ä½¿ç”¨%qE(声明于 %s:%d):%s"
-#: tree.c:11369
+#: tree.c:11373
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "ä¸å»ºè®®ä½¿ç”¨%qE(声明于 %s:%d)"
-#: tree.c:11376
+#: tree.c:11380
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "ä¸å»ºè®®ä½¿ç”¨ç±»åž‹(声明于 %s:%d):%s"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "ä¸å»ºè®®ä½¿ç”¨ç±»åž‹(声明于 %s:%d)"
-#: tree.c:11389
+#: tree.c:11393
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr "ä¸å»ºè®®ä½¿ç”¨%qE:%s"
-#: tree.c:11392
+#: tree.c:11396
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr "ä¸å»ºè®®ä½¿ç”¨%qE"
-#: tree.c:11397
+#: tree.c:11401
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated: %s"
msgstr "ä¸å»ºè®®ä½¿ç”¨ç±»åž‹ï¼š%s"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "ä¸å»ºè®®ä½¿ç”¨æ­¤ç±»åž‹"
@@ -20590,150 +20630,155 @@ msgstr "å˜é‡è·Ÿè¸ªå¤§å°è¶Šé™ï¼Œè¯·ä¸å¸¦ -fvar-tracking-assignments é‡è¯•"
msgid "variable tracking size limit exceeded"
msgstr "å˜é‡è·Ÿè¸ªå¤§å°è¶Šé™"
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D 导致一个节类型冲çª"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%+D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%+D 导致一个节类型冲çª"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "%q+D的对é½è¦æ±‚大于目标文件的最大对é½è¾¹ç•Œã€‚使用 %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "%q+D的寄存器å无效"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "%q+D的寄存器å无效"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "为%q+D指定的寄存器ä¸é€‚åˆæ­¤æ•°æ®ç±»åž‹"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
#| msgid "register specified for %q+D isn%'t suitable for data type"
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "为%q+D指定的寄存器ä¸é€‚åˆæ­¤æ•°æ®ç±»åž‹"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "寄存器用作两个全局寄存器å˜é‡"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "为%q+D指定的寄存器ä¸é€‚åˆæ­¤æ•°æ®ç±»åž‹"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "全局寄存器å˜é‡æœ‰åˆå§‹å€¼"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "优化å¯èƒ½ä¼šåŽ»é™¤å¯¹å¯„存器å˜é‡çš„读写"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "为éžå¯„存器å˜é‡%q+D给定了寄存器å"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "全局æžæž„函数在此目标机上ä¸å—支æŒ"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "全局构造函数在此目标机上ä¸å—支æŒ"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "线程局部的 COMMON æ•°æ®æ²¡æœ‰å®žçŽ°"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "%q+D需è¦çš„对é½è¾¹ç•Œå¤§äºŽå®žçŽ°çš„对é½è¾¹ç•Œ %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "æ•´æ•°/定点值的åˆå§‹å€¼è®¾å®šå¤ªå¤æ‚"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "浮点值的åˆå§‹å€¼è®¾å®šä¸æ˜¯ä¸€ä¸ªæµ®ç‚¹å¸¸é‡"
-#: varasm.c:4878
+#: varasm.c:4915
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr "æˆå‘˜%qEçš„åˆå§‹å€¼æ— æ•ˆ"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "%q+D的弱声明必须是公共的"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "ä¸æ”¯æŒ%q+D的弱声明"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "æ­¤é…置下åªæ”¯æŒå¼±åˆ«å"
-#: varasm.c:5474
+#: varasm.c:5511
#, gcc-internal-format
msgid "weakref is not supported in this configuration"
msgstr "弱引用在此é…置下ä¸å—支æŒ"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
msgid "ifunc is not supported in this configuration"
msgstr "弱引用在此é…置下ä¸å—支æŒ"
-#: varasm.c:5751
+#: varasm.c:5788
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D是未定义符å·%qE的别å"
-#: varasm.c:5765
+#: varasm.c:5802
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D是外部符å·%qE的别å"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "weakref%q+D最终指å‘其自身"
-#: varasm.c:5814
+#: varasm.c:5851
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr "弱引用%q+D必须有é™æ€é“¾æŽ¥"
-#: varasm.c:5821
+#: varasm.c:5858
#, gcc-internal-format
msgid "alias definitions not supported in this configuration"
msgstr "别å定义在此é…置下ä¸å—支æŒ"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "å¯è§æ€§å±žæ€§åœ¨æ­¤é…置下ä¸å—支æŒï¼›å·²å¿½ç•¥"
@@ -20774,8 +20819,8 @@ msgstr "%qD在函数作用域外未被定义"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "字符串长%qd比%qd(ISO C%d 被è¦æ±‚支æŒçš„最大长度) 还è¦é•¿"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "常é‡è¡¨è¾¾å¼æº¢å‡º"
@@ -20990,7 +21035,7 @@ msgstr "在算术表达å¼ä¸­ä½¿ç”¨äº†æˆå‘˜æŒ‡é’ˆ"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "%qD的地å€æ€»æ˜¯ç­‰ä»·ä¸º%<true%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "建议在用作真值的赋值语å¥å‰åŽåŠ ä¸Šæ‹¬å·"
@@ -21408,40 +21453,40 @@ msgstr "%qE属性为%qE所忽略"
msgid "invalid vector type for attribute %qE"
msgstr "属性%qEçš„å‘é‡ç±»åž‹æ— æ•ˆ"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr "å‘é‡å¤§å°ä¸æ˜¯ç»„件大å°çš„æ•´æ•°å€"
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr "å‘é‡å¤§å°ä¸º 0"
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "å‘é‡ä¸­åˆ†é‡æ•°ä¸æ˜¯ 2 çš„æŸæ¬¡æ–¹"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "éžç©ºçš„属性在éžåŽŸåž‹ä¸­æ²¡æœ‰å®žå‚"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "éžç©ºçš„å®žå‚ %lu æ“作数å·ä¸å¯¹"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "éžç©ºçš„实å‚æ“作数å·è¶Šç•Œ(å®žå‚ %lu,æ“作数 %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "éžç©ºçš„å®žå‚ %lu 引用了éžæŒ‡é’ˆæ“作数 %lu"
@@ -21481,12 +21526,12 @@ msgstr "%qE属性需è¦å¸¦æœ‰å实å‚的原型"
msgid "%qE attribute only applies to variadic functions"
msgstr "%qE属性åªèƒ½ç”¨äºŽå¸¦å¯å˜å‚数函数"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "è¦æ±‚çš„ä½ç½®ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "è¦æ±‚çš„ä½ç½®å°äºŽ 0"
@@ -21542,7 +21587,7 @@ msgstr "%<operator[]%>é‡è½½åŽä¾¿ä¸èƒ½ä½¿ç”¨%<offsetof%>"
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "ä¸èƒ½ä¸ºéžå¸¸é‡åœ°å€åº”用%<offsetof%>"
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "试图å–ä½æ®µç»“æž„æˆå‘˜%qD的地å€"
@@ -22278,82 +22323,82 @@ msgid "ignoring #pragma %s %s"
msgstr "忽略 #pragma %s %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, gcc-internal-format
msgid "stray %<@%> in program"
msgstr "程åºä¸­æœ‰æ¸¸ç¦»çš„ %<@%>"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "程åºä¸­æœ‰æ¸¸ç¦»çš„%qs"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "缺少结尾的 %c 字符"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "程åºä¸­æœ‰æ¸¸ç¦»çš„%qc"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "程åºä¸­æœ‰æ¸¸ç¦»çš„%<\\%o%>"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "这个å进制数常é‡ä»…在 ISO C90 中是无符å·çš„"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "这个å进制数常é‡åœ¨ ISO C90 中将是无符å·çš„"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, gcc-internal-format
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "对%<unsigned long%>类型而言整数常é‡å¤ªå¤§"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, gcc-internal-format
msgid "unsuffixed float constant"
msgstr "æ— åŽç¼€çš„浮点常é‡"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr "ä¸è¢«æ”¯æŒçš„éžæ ‡å‡†æµ®ç‚¹å¸¸é‡åŽç¼€"
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr "éžæ ‡å‡†çš„浮点常é‡åŽç¼€"
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr "浮点常é‡è¶…出%qT的范围"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr "浮点常é‡å‘零截断"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, fuzzy, gcc-internal-format
msgid "repeated %<@%> before Objective-C string"
msgstr "ä½ç½®é”™è¯¯çš„%<@%D%>Objective-C++ 构造"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr "ä¸å—支æŒçš„éžæ ‡å‡†å­—é¢å­—符串毗连"
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "传统 C ä¸æŽ¥å—字符串常é‡æ¯—è¿ž"
@@ -22373,7 +22418,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "迭代å˜é‡%qE类型无效"
@@ -22383,22 +22428,22 @@ msgstr "迭代å˜é‡%qE类型无效"
msgid "%qE is not initialized"
msgstr "%qE未ç»åˆå§‹åŒ–"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr "缺少控制谓è¯"
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr "无效的控制谓è¯"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, gcc-internal-format
msgid "missing increment expression"
msgstr "缺少自增语å¥"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "无效的自增语å¥"
@@ -23257,7 +23302,7 @@ msgstr "L%d 缓存延迟未知,对 %s æ¥è¯´"
msgid "bad value %qs for -mmemory-latency"
msgstr "-mmemory-latency 开关的值%qs错误"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -23437,53 +23482,53 @@ msgstr "PCS å˜åŠ¨"
msgid "Thumb-1 hard-float VFP ABI"
msgstr "Thumb-1 硬件浮点 VFP ABI"
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr "%qE属性åªèƒ½ç”¨äºŽå‡½æ•°"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr "无法计算出栈中å‚数的真实地å€"
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, gcc-internal-format
msgid "argument must be a constant"
msgstr "实å‚必须是常数"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "选择å­å¿…须是立å³æ•°"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "掩ç å¿…须是一个立å³æ•°"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "高寄存器弹栈时没有å¯ç”¨çš„低寄存器"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "Thumb 模å¼ä¸­ä¸èƒ½ç¼–ç ä¸­æ–­æœåŠ¡è¿›ç¨‹"
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr "在 GCC 4.4中对%<va_list%>的修饰有å˜åŒ–"
@@ -23498,104 +23543,123 @@ msgstr "ç»åˆå§‹åŒ–çš„å˜é‡%q+D被标记为 dllimport"
msgid "static variable %q+D is marked dllimport"
msgstr "ç»åˆå§‹åŒ–çš„å˜é‡%q+D被标记为 dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-flto and -fwhopr are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "-flto and -fwhopr 互斥"
+
+#: config/avr/avr.c:555
+#, fuzzy, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr "%qE属性åªèƒ½ç”¨äºŽå‡½æ•°"
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "%qD cannot have default arguments"
+msgid "%qs function cannot have arguments"
+msgstr "%qDä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "functions cannot return __fp16 type"
+msgid "%qs function cannot return a value"
+msgstr "函数ä¸èƒ½è¿”回 __fp16 类型"
+
+#: config/avr/avr.c:583
+#, fuzzy, gcc-internal-format
+#| msgid "%qs appears to be a misspelled signal handler"
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs似乎是一个拼写错的信å·å¤„ç†è€…"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr "‘builtin_return_address’åªåŒ…å«ä¸¤å­—节地å€"
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, fuzzy, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr "相对符å·çš„指针å移é‡å¯èƒ½ä¸æ­£ç¡®ã€‚"
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr "用程åºå†…存地å€è®¿é—®æ•°æ®å†…å­˜"
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, fuzzy, gcc-internal-format
#| msgid "accessing program memory with data memory address"
msgid "accessing program memory with data memory address"
msgstr "用数æ®å†…存地å€è®¿é—®ç¨‹åºå†…å­˜"
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "用以传递整数å‚数的寄存器个数"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
#| msgid "conflicting named address spaces (%s vs %s)"
msgid "writing to address space %qs not supported"
msgstr "冲çªçš„有å地å€ç©ºé—´(%så’Œ%s)"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs似乎是一个拼写错的中断处ç†è€…"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs似乎是一个拼写错的信å·å¤„ç†è€…"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, fuzzy, gcc-internal-format
#| msgid "pointers to disjoint address spaces used in conditional expression"
msgid "pointer targeting address space %qs must be const in %qT"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­ä½¿ç”¨äº†æŒ‡å‘ä¸ç›¸äº¤åœ°å€ç©ºé—´çš„指针"
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, fuzzy, gcc-internal-format
#| msgid "pointers to disjoint address spaces used in conditional expression"
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­ä½¿ç”¨äº†æŒ‡å‘ä¸ç›¸äº¤åœ°å€ç©ºé—´çš„指针"
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "åªæœ‰æœªåˆå§‹åŒ–çš„å˜é‡æ‰èƒ½æ”¾åœ¨ .noinit 节中"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "only initialized variables can be placed into program memory area"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "åªæœ‰åˆå§‹åŒ–çš„å˜é‡æ‰èƒ½æ”¾å…¥ç¨‹åºå†…存区"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU%qsåªæ”¯æŒæ±‡ç¼–器"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of module in string constant"
msgid "%s expects a compile time integer constant"
msgstr "字符串常é‡ä¸­å‡ºçŽ°éžé¢„期的模å—结æŸ"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qs expects a constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -23718,68 +23782,68 @@ msgstr "错误地使用了‘:’修饰符"
msgid "internal error: bad register: %d"
msgstr "内部错误:错误的寄存器:%dt"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "内部错误:副作用指令影å“到主è¦ä½œç”¨"
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "未知的 cc_attr 值"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "内部错误: cris_side_effect_mode_ok æ“作数错误"
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d ä¸å¯ç”¨ï¼Œä¸åœ¨ 0 å’Œ %d 之间"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "-march= 或 -mcpu= 中未知的 CRIS CPU 版本设定:%s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "-mtune= 中未知的 CRIS CPU 版本设定:%s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC å’Œ -fpic 在此é…置下ä¸å—支æŒ"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "此 -g 选项与 -maout 和 -melinux 并用时无效"
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, gcc-internal-format
msgid "unknown src"
msgstr "未知æº"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, gcc-internal-format
msgid "unknown dest"
msgstr "未知目标"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "栈帧太大:%d 字节"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr "在 movsi got 中 expand_binop 失败"
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn%'t set up"
msgstr "ç”Ÿæˆ PIC æ“作数,但尚未设置 PIC 寄存器"
@@ -23940,421 +24004,421 @@ msgstr "无法扩展 PCH 文件:%m"
msgid "can%'t set position in PCH file: %m"
msgstr "ä¸èƒ½åœ¨ PCH 文件中设定ä½ç½®ï¼š%m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr "%2$stune=%3$s%4$s所带å‚æ•°(%1$s)ä¸æ­£ç¡®"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr "ä¸å»ºè®®ä½¿ç”¨%stune=x86-64%s;请视情况改用%stune=k8%s或%stune=generic%s"
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "代ç æ¨¡å¼%qs在 %s ä½æ¨¡å¼ä¸‹ä¸å—支æŒ"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %qs not supported in the %s bit mode"
msgid "code model %qs not supported in x32 mode"
msgstr "代ç æ¨¡å¼%qs在 %s ä½æ¨¡å¼ä¸‹ä¸å—支æŒ"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, gcc-internal-format, gfc-internal-format
msgid "code model %s does not support PIC mode"
msgstr "代ç æ¨¡å¼ %s 在 PIC 模å¼ä¸‹ä¸å—支æŒ"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s 在此é…置下ä¸å—支æŒ"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "未编译入对 %i ä½æ¨¡å¼çš„支æŒ"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "您选择的 CPU ä¸æ”¯æŒ x86-64 指令集"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr "generic åªèƒ½ç”¨åœ¨%stune%s %s中"
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, gcc-internal-format, gfc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr "%2$sarch=%3$s %4$s所带å‚æ•°(%1$s)ä¸æ­£ç¡®"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, fuzzy, gcc-internal-format
#| msgid "%sregparm%s is ignored in 64-bit mode"
msgid "-mregparm is ignored in 64-bit mode"
msgstr "%sregparm%s 在 64 ä½æ¨¡å¼ä¸‹è¢«å¿½ç•¥"
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%sregparm=%d%s is not between 0 and %d"
msgid "-mregparm=%d is not between 0 and %d"
msgstr "%sregparm=%d%s ä¸åœ¨ 0 å’Œ %d 之间"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr "%srtd%s 在 64 ä½æ¨¡å¼ä¸‹è¢«å¿½ç•¥"
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "%spreferred-stack-boundary%s is not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "%spreferred-stack-boundary%s 在此目标机上ä¸è¢«æ”¯æŒ"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%spreferred-stack-boundary=%d%s is not between %d and %d"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "%spreferred-stack-boundary=%d%s ä¸åœ¨ %d å’Œ %d 之间"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, gcc-internal-format, gfc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mincoming-stack-boundary=%d ä¸åœ¨ %d å’Œ 12 之间"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, gcc-internal-format, gfc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr "使用了 %ssseregparm%s å´æ²¡æœ‰å¯ç”¨ SEE"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "SSE 指令集已ç¦ç”¨ï¼Œä½¿ç”¨ 387 指令"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "387 指令集已ç¦ç”¨ï¼Œä½¿ç”¨ SSE 指令"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, gcc-internal-format, gfc-internal-format
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "解å·è¡¨ç›®å‰éœ€è¦æ¡†æž¶æŒ‡é’ˆæˆ– %saccumulate-outgoing-args%s æ¥ä¿è¯æ­£ç¡®æ€§"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, gcc-internal-format, gfc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "堆栈探针目å‰éœ€è¦æ¡†æž¶æŒ‡é’ˆæˆ– %saccumulate-outgoing-args%s æ¥ä¿è¯æ­£ç¡®æ€§"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr "-mfentry 在 32 ä½ä¸‹ä¸èƒ½å’Œ -pic åŒæ—¶ä½¿ç”¨"
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr "-mno-fentry 与 SEH ä¸å…¼å®¹"
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unknown option for -mrecip=%s"
msgstr "L%d 缓存延迟未知,对 %s æ¥è¯´"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr "attribute(target(\"%s\"))未知"
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr "option(\"%s\")å·²ç»è¢«æŒ‡å®š"
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "fastcall å’Œ regparm 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
msgid "regparam and thiscall attributes are not compatible"
msgstr "fastcall å’Œ thiscall 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr "%qE属性需è¦ä¸€ä¸ªæ•´å¸¸é‡ä½œä¸ºå®žå‚"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr "%qE属性的实å‚大于 %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "fastcall å’Œ cdecl 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "fastcall å’Œ stdcall 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, gcc-internal-format
msgid "fastcall and thiscall attributes are not compatible"
msgstr "fastcall å’Œ thiscall 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "stdcall å’Œ cdecl 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "stdcall å’Œ fastcall 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, gcc-internal-format
msgid "stdcall and thiscall attributes are not compatible"
msgstr "stdcall å’Œ thiscall 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, gcc-internal-format
msgid "cdecl and thiscall attributes are not compatible"
msgstr "cdecl å’Œ thiscall 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, gcc-internal-format
msgid "%qE attribute is used for none class-method"
msgstr "%qE属性用于éžç±»æ–¹æ³•"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, gcc-internal-format
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "带属性 sseregparm 调用%qDå´æ²¡æœ‰å¯ç”¨ SSE/SSE2"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, gcc-internal-format
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "带属性 sseregparm 调用%qTå´æ²¡æœ‰å¯ç”¨ SSE/SSE2"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, gcc-internal-format
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "ms_hook_prologue 与嵌套函数ä¸å…¼å®¹"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr "ms_abi å±žæ€§éœ€è¦ -maccumulate-outgoing-args 或éšå«å®ƒçš„å­ç›®æ ‡ä¼˜åŒ–"
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "没有å¯ç”¨ AVX,å´å‡ºçŽ°äº† AVX å‘é‡å®žå‚,这改å˜äº† ABI"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr "在 GCC 4.4 中传递带有一个å¯å˜æ•°ç»„æˆå‘˜çš„结构的 ABI 有了改å˜"
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr "在 GCC 4.4 中传递有 long double çš„è”åˆçš„ ABI 有改å˜"
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr "在 GCC 4.4 中传递带有å¤æ•°æµ®ç‚¹æˆå‘˜ç»“æž„çš„ ABI 有了改å˜"
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "å·²ç¦ç”¨ SSE å´åœ¨ SSE 寄存器中返回"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "å·²ç¦ç”¨ SSE å´åœ¨ SSE 寄存器中传递å‚æ•°"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr "å·²ç¦ç”¨ x87 å´åœ¨ x87 寄存器中返回"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "没有å¯ç”¨ SSE,å´å‡ºçŽ°äº† SSE å‘é‡å®žå‚,这改å˜äº† ABI"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "没有å¯ç”¨ MMX,å´å‡ºçŽ°äº† MMX å‘é‡å®žå‚,这改å˜äº† ABI"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr "在 GCC 4.4 中传递有 long double çš„è”åˆçš„ ABI 有改å˜"
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "没有å¯ç”¨ SSE,å´æœ‰ SSE å‘é‡è¿”回值,这改å˜äº† ABI"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "没有å¯ç”¨ MMXå´è¿”回 MMX å‘é‡ï¼Œè¿™æ”¹å˜äº† ABI"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, fuzzy, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr "ms_hook_prologue 与嵌套函数ä¸å…¼å®¹"
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr "-fsplit-stack ä¸æ”¯æŒåœ¨åµŒå¥—函数中使用两个寄存器å‚æ•°"
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "-fsplit-stack ä¸æ”¯æŒåœ¨åµŒå¥—函数中使用两个寄存器å‚æ•°"
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "ISO C90 ä¸å…许å¯å˜æ•°ç»„æˆå‘˜"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "扩展的寄存器没有高åŠéƒ¨åˆ†"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "扩展的寄存器ä¸æ”¯æŒçš„æ“作数大å°"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, gcc-internal-format, gfc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr "éžæ•´æ•°æ“作数使用了æ“作数代ç â€˜%c’"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个 2 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
#| msgid "the fifth argument must be a 8-bit immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "第五个实å‚必须是一个 8 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
#| msgid "the third argument must be a 8-bit immediate"
msgid "the third argument must be an 8-bit immediate"
msgstr "第三个实å‚必须是一个 8 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "the last argument must be a 1-bit immediate"
msgid "the last argument must be an 1-bit immediate"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个 1 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个 4 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个 1 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个 5 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr "倒数第二个实å‚必须是一个 8 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个 8 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, gcc-internal-format
msgid "the last argument must be a 32-bit immediate"
msgstr "最åŽä¸€ä¸ªå‚数必须是一个 32 ä½ç«‹å³æ•°"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "选择å­å¿…须是 0 到 %wi 间的整常é‡"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr "%qE需è¦æœªçŸ¥çš„ ISA 选项"
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr "%qEéœ€è¦ ISA 选项 %s"
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr "最åŽä¸€ä¸ªå®žå‚必须是一个立å³æ•°"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, fuzzy, gcc-internal-format
#| msgid "left argument must be a slice"
msgid "last argument must be scale 1, 2, 4, 8"
msgstr "左实å‚必须是一个切片"
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, gcc-internal-format
msgid "%qE attribute only available for 32-bit"
msgstr "%qE属性åªèƒ½åœ¨ 32 ä½ä¸‹ä½¿ç”¨"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "%qE属性的实å‚ä¸æ˜¯ä¸€ä¸ªå­—符串常é‡"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "ms_abi å’Œ sysv_abi 属性互ä¸å…¼å®¹"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr "%qEä¸å…¼å®¹çš„属性已被忽略"
@@ -24424,19 +24488,19 @@ msgstr "ä¸èƒ½ä¸ºå‡½æ•°æŒ‡å®šåœ°å€åŒºåŸŸå±žæ€§"
msgid "%qE attribute requires a string constant argument"
msgstr "%qE属性需è¦ä¸€ä¸ªå­—符串常é‡ä½œä¸ºå®žå‚"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "-mfixed-range 值必须有“寄存器1-寄存器2â€çš„å½¢å¼"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s 是一个空的范围"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr "版本属性ä¸æ˜¯ä¸€ä¸ªå­—符串"
@@ -24502,7 +24566,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "%qE属性在 R8C 目标机上ä¸å—支æŒ"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "%qE属性需è¦ä¸€ä¸ªæ•´å¸¸é‡ä½œä¸ºå®žå‚"
@@ -24557,7 +24621,7 @@ msgstr "ä¸å…许多个中断属性"
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread åªåœ¨ fido 中å¯ç”¨"
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "ä¸æ”¯æŒå †æ ˆé™åˆ¶è¡¨è¾¾å¼"
@@ -25074,27 +25138,27 @@ msgstr "MMIX 内部错误:%s ä¸æ˜¯ä¸€ä¸ªå¯ç§»ä½çš„æ•´æ•°"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr "-mtune= éœ€è¦ mn10300ã€am33ã€am33-2 或 am34"
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "PIC 代ç ç”Ÿæˆåœ¨å¯ç§»æ¤è¿è¡Œæ—¶æ¨¡åž‹ä¸­ä¸å—支æŒ"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "PIC 代ç ç”Ÿæˆä¸Žå¿«é€Ÿé—´æŽ¥è°ƒç”¨ä¸å…¼å®¹"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "此处ç†å™¨åªæœ‰ä½¿ç”¨ GAS æ—¶æ‰æ”¯æŒ -g"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "-g 选项已被ç¦ç”¨"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr "对é½è¾¹ç•Œ(%u) 对 %s æ¥è¯´è¶…过了全局共åŒæ•°æ®çš„最大对é½è¾¹ç•Œã€‚使用 %u"
@@ -25521,82 +25585,82 @@ msgstr "内部错误:内建函数 %s 有éžé¢„期的返回类型 %s"
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr "内部错误:内建函数 %s 的第 %d 个å‚数有éžé¢„期的å‚数类型 %s"
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "栈帧太大"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "æ­¤ ABI ä¸æ”¯æŒå–æ · 64 ä½ä»£ç "
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "在 AltiVec 类型中使用%<long double%>无效"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "在 AltiVec 类型中使用布尔类型无效"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "在 AltiVec 类型中使用%<complex%>无效"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "在 AltiVec 类型中使用å进制浮点类型无效"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "ä¸ä½¿ç”¨ -mvsx 时,在 AltiVec 类型中使用%<long%>对 64 ä½ä»£ç æ— æ•ˆ"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "ä¸å»ºè®®åœ¨ AltiVec 类型中使用%<long%>;请改用%<int%>"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "ä¸ä½¿ç”¨ -mvsx 时,在 AltiVec 类型中使用%<long long%>无效"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "ä¸ä½¿ç”¨ -mvsx 时,在 AltiVec 类型中使用%<double%>无效"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr "生æˆå¾®ä»£ç æŒ‡ä»¤ %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr "生æˆæ¡ä»¶å¾®ä»£ç æŒ‡ä»¤ %s\t[%s] #%d"
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "代ç â€˜%c’的æ“作数无效"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is not allowed"
msgstr "在这里ä¸å…许使用%<#pragma%>"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr "spec‘%s’是无效的"
@@ -25650,12 +25714,12 @@ msgstr "ä¸æ”¯æŒ E500 å’Œ FPR"
msgid "-m64 not supported in this configuration"
msgstr "在当å‰é…置下 -m64 ä¸è¢«æ”¯æŒ"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 éœ€è¦ PowerPC64 CPU"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
msgid "-mcmodel incompatible with other toc options"
msgstr "-fdirectives-only 与 -traditional ä¸å…¼å®¹"
@@ -25672,64 +25736,64 @@ msgstr "-fdirectives-only 与 -traditional ä¸å…¼å®¹"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET ä¸å—支æŒ"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "-mcall-%s 值ä¸æ­£ç¡®"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "-msdata=%s 值ä¸æ­£ç¡®"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable 与 -msdata=%s 互ä¸å…¼å®¹"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s å’Œ -msdata=%s 互ä¸å…¼å®¹"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s 与 -mcall-%s 互ä¸å…¼å®¹"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable å’Œ -mno-minimal-toc 互ä¸å…¼å®¹"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable 与 -mcall-%s 互ä¸å…¼å®¹"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC 与 -mcall-%s 互ä¸å…¼å®¹"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc 必须是大端在å‰"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-msecure-plt ä¸ä¸ºæ‚¨çš„汇编器所支æŒ"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s 在此é…置下ä¸å—支æŒ"
@@ -25841,53 +25905,53 @@ msgstr "忽略 -fschedule-insns 以绕开异常处ç†çš„缺陷"
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "解å·è¡¨ç›®å‰éœ€è¦æ¡†æž¶æŒ‡é’ˆæˆ– %saccumulate-outgoing-args%s æ¥ä¿è¯æ­£ç¡®æ€§"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs 在此å­ç›®æ ‡ä¸Šä¸å—支æŒ"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr "%qE属性åªèƒ½ç”¨äºŽä¸­æ–­å‡½æ•°"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr "%qE属性åªä¸º SH2A 所支æŒ"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "属性 interrupt_handler 与 -m5-compact ä¸å…¼å®¹"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr "%qE属性åªèƒ½ç”¨äºŽ SH2A"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr "%qE属性的å‚数应当在 0 å’Œ 255 之间"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr "%qE属性需è¦ä¸€ä¸ªå­—符串常é‡ä½œä¸ºå®žå‚"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 需è¦ç”¨ä½œè°ƒç”¨ç¯¡æ”¹çš„寄存器"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
msgid "need a second call-clobbered general purpose register"
msgstr "需è¦å¦ä¸€ä¸ªè°ƒç”¨ç¯¡æ”¹çš„通用寄存器"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, fuzzy, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr "需è¦ä¸€ä¸ªè°ƒç”¨ç¯¡æ”¹çš„通用寄存器"
@@ -26242,38 +26306,38 @@ msgstr "%<-gnat%>被错误地拼写为%<-gant%>"
msgid "-fexcess-precision=standard for Ada"
msgstr "对 Ada 而言 -fexcess-precision=standard"
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "忽略%qs属性"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, gcc-internal-format
msgid "%qs attribute requires prototypes with named arguments"
msgstr "%qs属性需è¦å¸¦æœ‰åå‚数的原型"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, gcc-internal-format
msgid "%qs attribute only applies to variadic functions"
msgstr "%qs属性åªèƒ½ç”¨äºŽå¸¦å¯å˜å‚数函数"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
msgid "%qE attribute has no effect"
msgstr "ä¸å»ºè®®ä½¿ç”¨ã€‚此开关ä¸èµ·ä½œç”¨ã€‚"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, gcc-internal-format
msgid "invalid vector type for attribute %qs"
msgstr "属性%qsçš„å‘é‡ç±»åž‹æ— æ•ˆ"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, gcc-internal-format
msgid "attribute %qs applies to array types only"
msgstr "%qs属性åªèƒ½ä¸ºæ•°ç»„类型使用"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, gcc-internal-format
msgid "invalid element type for attribute %qs"
msgstr "属性%qs的元素类型无效"
@@ -26289,7 +26353,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr "以从%qT转æ¢ä¸º%qT"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -26576,7 +26640,7 @@ msgstr "从类型%qT到类型%qT的转æ¢æ— æ•ˆ"
msgid "invalid conversion from %qT to %qT"
msgstr "从类型%qT到类型%qT的转æ¢æ— æ•ˆ"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " åˆå§‹åŒ–%2$qDçš„å®žå‚ %1$P"
@@ -26586,191 +26650,191 @@ msgstr " åˆå§‹åŒ–%2$qDçš„å®žå‚ %1$P"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr "从åˆå§‹åŒ–列表转æ¢ä¸º%qT将使用显å¼æž„造函数%qD"
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, gcc-internal-format
msgid " initializing argument %P of %q+D"
msgstr "以åˆå§‹åŒ–%2$q+Dçš„å®žå‚ %1$P"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, gcc-internal-format
msgid "cannot bind %qT lvalue to %qT"
msgstr "无法将左值%qT绑定到%qT"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "无法将ä½æ®µ%qE绑定到%qT"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "ä¸èƒ½å°†ç´§å®žçš„字段%qE绑定到%qT"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "无法将å³å€¼%qE绑定到%qT"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
#| msgid "class %qT will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "在 GCC 的未æ¥ç‰ˆæœ¬ä¸­ç±»%qT将被看作几乎为空"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, gcc-internal-format
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "ä¸èƒ½é€šè¿‡%<...%>传递有ä¸èƒ½å¹³å‡¡å¤åˆ¶çš„类型%q#T"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, gcc-internal-format
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "ä¸èƒ½é€šè¿‡%<...%>接å—ä¸èƒ½å¹³å‡¡å¤åˆ¶çš„类型%q#Tï¼›"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr "递归计算%q#D的默认å‚æ•°"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
#| msgid "the default argument for parameter %d of %qD has not yet been parsed"
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "%2$qD的第 %1$d 个形å‚的默认实å‚尚未被解æžåˆ°"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "函数的实å‚å¯èƒ½æ˜¯ format 属性的备选"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "å°†%qT作为%q#Dçš„%<this%>实å‚时丢弃了类型é™å®š"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT是%qT的一个ä¸å¯è®¿é—®çš„基类"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, gcc-internal-format
msgid "deducing %qT as %qT"
msgstr "演绎 %qT 为 %qT"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, gcc-internal-format
msgid " in call to %q+D"
msgstr "在调用%q+D时"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr "(您å¯ä»¥ç”¨ -fno-deduce-init-lis ç¦ç”¨å®ƒ)"
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "在 java 接å£ç±»åž‹%qT中找ä¸åˆ° class$ 字段"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "调用éžå‡½æ•°çš„%qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr "ä¸èƒ½ç›´æŽ¥è°ƒç”¨æž„造函数%<%T::%D%>"
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr "对于函数类型的类型转æ¢ï¼Œç§»é™¤å†—余的%<::%D%>"
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "对%<%T::%s(%A)%#V%>的调用没有匹é…的函数"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "对%<%T::%s(%A)%#V%>的调用没有匹é…的函数"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "对é‡è½½çš„%<%s(%A)%>的调用有歧义"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "没有对象无法调用æˆå‘˜å‡½æ•°%qD"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "传递%qT时选择%qT而ä¸æ˜¯%qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr "在调用%qD时"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "选择%qD而ä¸æ˜¯%qD"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr "以从%qT转æ¢ä¸º%qT"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr "因为å‰è€…的实å‚类型转æ¢åºåˆ—更好"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr "é‡è½½è§£å†³æ—¶é»˜è®¤å‚æ•°ä¸åŒ¹é…"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr "备选 1: %q+#F"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr "备选 2: %q+#F"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++ 认为有歧义,尽管第一个备选的最差类型转æ¢è¦å¥½äºŽç¬¬äºŒä¸ªå¤‡é€‰çš„最差类型转æ¢"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "could not convert %qE to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "ä¸èƒ½å°†%qE转æ¢ä¸º%qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "用类型为%2$qTçš„å³å€¼åˆå§‹åŒ–类型为%1$qTçš„éžå¸¸é‡å¼•ç”¨æ— æ•ˆ"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "将类型为%qT的引用åˆå§‹åŒ–为类型为%qT的表达å¼æ— æ•ˆ"
@@ -26983,224 +27047,224 @@ msgstr "字段%q+D无效地声明为函数类型"
msgid "field %q+D invalidly declared method type"
msgstr "字段%q+D无效地声明为方法类型"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "为éžç´§å®žçš„éžç®€å•æ—§æ•°æ®å­—段%q+#D忽略 packed 属性"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "字段%q+#D与类é‡å"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T有指针数æ®æˆå‘˜"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr "但没有é‡è½½%<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr "或者%<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr "但没有é‡è½½%<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "空基类%qTçš„å移é‡å¯èƒ½ä¸Ž ABI ä¸å…¼å®¹ï¼Œå¹¶ä¸”å¯èƒ½åœ¨ GCC 的未æ¥ç‰ˆæœ¬ä¸­æ”¹å˜"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "在 GCC 的未æ¥ç‰ˆæœ¬ä¸­ç±»%qT将被看作几乎为空"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "为éžè™šæ–¹æ³•%q+D指定了åˆå§‹å€¼è®¾å®šé¡¹"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "%3$L处 CLASS å˜é‡â€˜%2$s’的类型‘%1$s’ä¸èƒ½è¢«æ‰©å±•"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q+T is not literal because:"
msgstr "%q#Tä¸æ˜¯ä¸€ä¸ªç±»"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "基类%q#T有一个éžè™šæžæž„函数"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
msgid " base class %qT of %q+T is non-literal"
msgstr "%3$L处 CLASS å˜é‡â€˜%2$s’的类型‘%1$s’ä¸èƒ½è¢«æ‰©å±•"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
#| msgid "non-static data member %qD has Java class type"
msgid " non-static data member %q+D has non-literal type"
msgstr "éžé™æ€æ•°æ®æˆå‘˜%qD具有 Java 类类型"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "类中有éžé™æ€å¼•ç”¨%q+#D,å´æ²¡æœ‰æ供构造函数"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "类中有éžé™æ€å¸¸é‡æˆå‘˜%q+#Då´æ²¡æœ‰æž„造函数"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr "%q+D被声明为å–常é‡å¼•ç”¨ï¼Œä½†æ˜¯éšå¼å£°æ˜Žå–éžå¸¸é‡å¼•ç”¨"
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr "%q+D被声明为å–éžå¸¸é‡å¼•ç”¨ï¼Œä¸èƒ½åœ¨ç±»ä½“内默认化"
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "虚基类%qTçš„å移é‡ä¸Ž ABI ä¸å…¼å®¹ï¼Œå¹¶ä¸”å¯èƒ½åœ¨ GCC 的未æ¥ç‰ˆæœ¬ä¸­æ”¹å˜"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "由于存在歧义,直接基类%qT在%qT中无法访问"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "由于存在歧义,虚基类%qT在%qT中无法访问"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "赋于%qT的大å°å¯èƒ½ä¸Ž ABI ä¸å…¼å®¹ï¼Œå¹¶ä¸”å¯èƒ½åœ¨ GCC 的未æ¥ç‰ˆæœ¬ä¸­æ”¹å˜"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "%qDçš„å移é‡å¯èƒ½ä¸Ž ABI ä¸å…¼å®¹ï¼Œå¹¶ä¸”å¯èƒ½åœ¨ GCC 的未æ¥ç‰ˆæœ¬ä¸­æ”¹å˜"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "%q+Dçš„å移é‡ä¸Ž ABI ä¸å…¼å®¹ï¼Œå¹¶ä¸”在 GCC 的未æ¥ç‰ˆæœ¬ä¸­å¯èƒ½ä¼šæœ‰å˜åŒ–"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D包å«ä¸€ä¸ªç©ºç±»ï¼ŒåŸºç±»çš„ä½ç½®åœ¨ GCC 的未æ¥ç‰ˆæœ¬å¯èƒ½ä¼šæœ‰å˜åŒ–"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "空类%qT的派生类的布局在 GCC 的未æ¥ç‰ˆæœ¬ä¸­å¯èƒ½ä¼šèµ·å˜åŒ–"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "%q#Té‡å®šä¹‰"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T有虚函数和å¯è®¿é—®çš„éžè™šæ‹Ÿæžæž„函数"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class %qT does not have any field named %qD"
msgid "type transparent class %qT does not have any fields"
msgstr "ç±»%qT没有å为%qD的字段"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
#| msgid "type %qE has virtual member functions"
msgid "type transparent class %qT has virtual functions"
msgstr "类型%qE有虚æˆå‘˜å‡½æ•°"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "试图完æˆç»“构,但为先å‰çš„解æžé”™è¯¯æ‰€ä¸­æ–­"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "语言字符串%<\"%E\"%>ä¸å¯è¯†åˆ«"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "无法解æžé‡è½½å‡½æ•°%qD,基于å‘类型%qT的转æ¢"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "没有å¯å°†å‡½æ•°%qD转æ¢åˆ°ç±»åž‹%q#T的匹é…项"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "å°†é‡è½½å‡½æ•°%qD转æ¢ä¸ºç±»åž‹%q#T有歧义"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "å‡å®šæ˜¯æˆå‘˜æŒ‡é’ˆ%qD"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(æˆå‘˜æŒ‡é’ˆåªèƒ½ç”¨%<&%E%>æž„æˆ)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "类型信æ¯ä¸å……分"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "无法将%qE从类型%qT转æ¢åˆ°ç±»åž‹%qT"
@@ -27210,12 +27274,12 @@ msgstr "无法将%qE从类型%qT转æ¢åˆ°ç±»åž‹%qT"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "%q#D的声明"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "改å˜äº†%qD的原æ„%q+#D"
@@ -27235,7 +27299,7 @@ msgstr "无法从ä¸å®Œå…¨ç±»åž‹%qT转æ¢åˆ°%qT"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "å°†%qE从%qT转æ¢åˆ°%qT有歧义"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "array bound is not an integer constant"
msgid "zero as null pointer constant"
@@ -27266,7 +27330,7 @@ msgstr "将类型为%2$qTçš„å³å€¼è½¬æ¢ä¸ºéžå¸¸é‡å¼•ç”¨ç±»åž‹%1$q#T"
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "从%qT到%qT的转æ¢ä¸¢å¤±äº†é™å®šä¿¡æ¯"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "从%qT转æ¢åˆ°%qT并未æ领指针"
@@ -27673,7 +27737,7 @@ msgstr "%q+#Dçš„å‰ä¸€ä¸ªå£°æ˜Ž"
msgid "declaration of template %q#D"
msgstr "模æ¿å£°æ˜Ž%q#D"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "与先å‰çš„声明%q+#D冲çª"
@@ -27725,7 +27789,7 @@ msgstr "命å空间%q+D早先的声明在这里"
msgid "%q+#D previously defined here"
msgstr "%q+#D已在此定义过"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, fuzzy, gcc-internal-format
#| msgid "previously declared here"
msgid "%q+#D previously declared here"
@@ -27844,7 +27908,7 @@ msgstr "%q#D的线程局部声明出现在其éžçº¿ç¨‹å±€éƒ¨å£°æ˜Žä¹‹åŽ"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "%q#Dçš„éžçº¿ç¨‹å±€éƒ¨å£°æ˜Žå‡ºçŽ°åœ¨å…¶çº¿ç¨‹å±€éƒ¨å£°æ˜Žä¹‹åŽ"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, gcc-internal-format
msgid "redeclaration of %q#D"
msgstr "%q#Dé‡å£°æ˜Ž"
@@ -27915,7 +27979,7 @@ msgstr "æ ‡å·å为 wchar_t"
msgid "%qD is not a type"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªç±»åž‹"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "%qD使用时未带模æ¿å‚æ•°"
@@ -28047,125 +28111,125 @@ msgstr "此声明中的%<typedef%>被忽略"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "%<constexpr%>ä¸èƒ½è¢«ç”¨ä½œç±»åž‹å£°æ˜Ž"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "attribute ignored in declaration of %q+#T"
msgid "attribute ignored in declaration of %q#T"
msgstr "属性于%q+#T的声明中被忽略"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, fuzzy, gcc-internal-format
#| msgid "attribute for %q+#T must follow the %qs keyword"
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "%q+#T的属性必须跟在%qs关键字åŽé¢"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "忽略在定义之外为类类型%qT应用的属性"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr "忽略在关è”定义之外为ä¾èµ–类类型%qT应用的属性"
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef%qD被åˆå§‹åŒ–(改用 decltype)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "%q#D声明有%<extern%>并被åˆå§‹åŒ–"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "%q#D的定义被标记为 %<dllimport%>"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#Dä¸æ˜¯%q#Tçš„é™æ€æˆå‘˜"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ ä¸å…许将%<%T::%D%>定义为%<%T::%D%>"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "模æ¿å¤´ä¸å…许出现在显å¼ç‰¹ä¾‹åŒ–类的æˆå‘˜å®šä¹‰ä¸­"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "ISO C++ ä¸å…许æˆå‘˜%qDçš„åˆå§‹åŒ–"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr "%qD在其类外被声明为%<constexpr%>"
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "出现在类外的%q#D的声明ä¸æ˜¯å®šä¹‰"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "å˜é‡%q#D有åˆå§‹å€¼è®¾å®šï¼Œä½†æ˜¯ç±»åž‹ä¸å®Œå…¨"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "数组%q#D的元素类型ä¸å®Œå…¨"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr "%q#D声明有缺少åˆå§‹å€¼è®¾å®š"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "èšåˆ%q#D类型ä¸å®Œå…¨ï¼Œæ— æ³•è¢«å®šä¹‰"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD声明为引用å´æœªè¢«åˆå§‹åŒ–"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr "å字被用在 GNU 风格的数组指定元素åˆå§‹å€¼è®¾å®šä¸­"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "ä¸å¹³å‡¡çš„代ç†åˆå§‹å€¼è®¾å®šä¸å—支æŒ"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "åå­—%qD用在 GNU 风格的数组指定元素åˆå§‹å€¼è®¾å®šä¸­"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "åˆå§‹å€¼è®¾å®šæ— æ³•å†³å®š%qD的大å°"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "%qD缺少数组大å°"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "大å°ä¸º 0 的数组%qD"
@@ -28173,398 +28237,398 @@ msgstr "大å°ä¸º 0 的数组%qD"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, gcc-internal-format
msgid "storage size of %qD isn%'t known"
msgstr "%qD的存储大å°æœªçŸ¥"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, gcc-internal-format
msgid "storage size of %qD isn%'t constant"
msgstr "%qD的存储大å°ä¸æ˜¯å¸¸é‡"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "对ä¸èµ·ï¼šå†…è”函数中é™æ€æ•°æ®%q+#D的语义是错的(您会得到此å˜é‡çš„多份å¤åˆ¶)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, gcc-internal-format
msgid " you can work around this by removing the initializer"
msgstr " å˜é€šçš„作法是删除åˆå§‹å€¼è®¾å®š"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "未åˆå§‹åŒ–的常é‡%qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, gcc-internal-format
msgid "%q#T has no user-provided default constructor"
msgstr "%q#T没有用户æ供的默认构造函数"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "无效类型%qT被用作类型为%qTçš„å‘é‡çš„åˆå§‹å€¼è®¾å®š"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "%qTçš„åˆå§‹å€¼è®¾å®šå¿…须在花括å·å†…"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "åå­—%qD用在 GNU 风格的数组指定元素åˆå§‹å€¼è®¾å®šä¸­"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT没有å为%qDçš„éžé™æ€æ•°æ®æˆå‘˜"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "%qTçš„åˆå§‹å€¼è®¾å®šé¡¹å¤ªå¤š"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "类型%qTçš„æ ‡é‡åˆå§‹åŒ–带花括å·"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "%qTçš„åˆå§‹å€¼è®¾å®šå‘¨å›´ç¼ºå°‘花括å·"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr "数组%q#T的元素类型ä¸å®Œå…¨"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "å¯å˜å¤§å°çš„对象%qDä¸èƒ½è¢«åˆå§‹åŒ–"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr "å˜é•¿å¤åˆå­—é¢å€¼"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "%qD has incomplete type"
msgid "%q#D has incomplete type"
msgstr "%qD类型ä¸å®Œå…¨"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr "æ ‡é‡å¯¹è±¡%qD在åˆå§‹å€¼è®¾å®šä¸­éœ€è¦ä¸€ä¸ªå…ƒç´ "
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "在 C++98 中%qD必须由构造函数而ä¸æ˜¯%<{...}%>åˆå§‹åŒ–"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "数组%qD被有括å·çš„å­—é¢å­—符串%qE所åˆå§‹åŒ–"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "构造函数中对é™æ€æˆå‘˜çš„åˆå§‹åŒ–无效"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ISO C++ ä¸å…许在类内åˆå§‹åŒ–éžå¸¸é‡é™æ€æˆå‘˜%qD"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(需è¦ä¸€ä¸ªç±»å¤–çš„åˆå§‹åŒ–)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "赋值(ä¸æ˜¯åˆå§‹åŒ–)出现在声明中"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "éšè—了早先的类型声明%q#D"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qDä¸èƒ½æ˜¯çº¿ç¨‹å±€éƒ¨çš„,因为它有ä¸å¹³å‡¡çš„类型%qT"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr "Java 对象%qD并éžç”±%<new%>所分é…"
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD是线程局部的,所以ä¸èƒ½è¢«åŠ¨æ€åœ°åˆå§‹åŒ–"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qDä¸èƒ½ç”±ä¸€ä¸ªå£°æ˜Žæ—¶éžå¸¸é‡çš„表达å¼åˆå§‹åŒ–"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr "éžé™æ€æ•°æ®æˆå‘˜%qD具有 Java 类类型"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "函数%q#Dåƒå˜é‡ä¸€æ ·è¢«åˆå§‹åŒ–"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of %qD"
msgid "initializer fails to determine size of %qT"
msgstr "åˆå§‹å€¼è®¾å®šæ— æ³•å†³å®š%qD的大å°"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in %qD"
msgid "array size missing in %qT"
msgstr "%qD缺少数组大å°"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array %qD"
msgid "zero-size array %qT"
msgstr "大å°ä¸º 0 的数组%qD"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "其他类%qTçš„æžæž„函数ä¸èƒ½ç”¨ä½œæˆå‘˜"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "其他类%qT的构造函数ä¸èƒ½ç”¨ä½œæˆå‘˜"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD声明为%<virtual%>å˜é‡"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD声明为%<inline%>å˜é‡"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "为%qD指定的%<const%>和%<volatile%>在 %s 声明中无效"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD声明为%<virtual%>å‚æ•°"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD声明为%<inline%>å‚æ•°"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "为%qD指定的%<const%>和%<volatile%>在 %s 声明中无效"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD声明为%<virtual%>类型"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, gcc-internal-format
msgid "%qD declared as an %<inline%> type"
msgstr "%qD声明为%<inline%>类型"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "为%qD指定的%<const%>和%<volatile%>在 %s 声明中无效"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD声明为%<virtual%>字段"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, gcc-internal-format
msgid "%qD declared as an %<inline%> field"
msgstr "%qD声明为%<inline%>字段"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "为%qD指定的%<const%>和%<volatile%>在 %s 声明中无效"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D声明为å‹å…ƒ"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D声明时带有异常规范"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "%qD的定义ä¸åœ¨åŒ…å«%qT的命å空间中"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "é™æ€æˆå‘˜å‡½æ•°%q#D的声明带有类型é™å®šç¬¦"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "在å‹å…ƒå£°æ˜Žä¸­å®šä¹‰æ˜¾å¼ç‰¹ä¾‹åŒ–%qD"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "在基本模æ¿çš„声明中对模æ¿æ ‡è¯†ç¬¦%qD的使用无效"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "å‹å…ƒæ¨¡æ¿ç‰¹ä¾‹åŒ–%qD中ä¸å…许出现默认å‚æ•°"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "%<inline%>ä¸å…许用于å‹å…ƒæ¨¡æ¿ç‰¹ä¾‹åŒ–%qD的声明"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "ä¸èƒ½å°†%<::main%>声明为一个模æ¿"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "ä¸èƒ½å°†%<::main%>声明为 inline"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "ä¸èƒ½å°†%<::main%>声明为 static"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D未指明éžé™å®šç±»åž‹ï¼Œæ‰€ä»¥å®ƒä¸è¢«ç”¨ä½œå¤–部链接"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "%q+#D的早先声明有%qL链接"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr "æˆå‘˜å‡½æ•°%qDä¸èƒ½æ‹¥æœ‰ cv é™å®šç¬¦"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "éžæˆå‘˜å‡½æ•°%qDä¸èƒ½æ‹¥æœ‰ cv é™å®šç¬¦"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
#| msgid "template with C linkage"
msgid "literal operator with C linkage"
msgstr "模æ¿æœ‰ C 链接"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
msgid "%qD has invalid argument list"
msgstr "-fdebug-prefix-map çš„å‚æ•°%qs无效"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "%qD must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "%qD必须是一个éžé™æ€çš„æˆå‘˜å‡½æ•°"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%>必须返回%<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "éšå¼å£°æ˜Žçš„%qD的定义"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared %qD"
msgid "definition of explicitly-defaulted %q+D"
msgstr "éšå¼å£°æ˜Žçš„%qD的定义"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D已在此定义过"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "æˆå‘˜å‡½æ•°%q#D未在类%qT中声明"
@@ -28573,426 +28637,426 @@ msgstr "æˆå‘˜å‡½æ•°%q#D未在类%qT中声明"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, fuzzy, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr "constexpr å˜é‡%2$qD的类型%1$qTä¸æ˜¯å­—é¢å¸¸é‡"
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "类中对具有éžæ•´æ•°ç±»åž‹%qTçš„é™æ€æ•°æ®æˆå‘˜çš„åˆå§‹åŒ–无效"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "类中对具有éžæ•´æ•°ç±»åž‹%qTçš„é™æ€æ•°æ®æˆå‘˜çš„åˆå§‹åŒ–无效"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "类中对具有éžæ•´æ•°ç±»åž‹%qTçš„é™æ€æ•°æ®æˆå‘˜çš„åˆå§‹åŒ–无效"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "类中对具有éžæ•´æ•°ç±»åž‹%qTçš„é™æ€æ•°æ®æˆå‘˜çš„åˆå§‹åŒ–无效"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ ä¸å…许在类内åˆå§‹åŒ–éžå¸¸é‡é™æ€æˆå‘˜%qD"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ ä¸å…许åˆå§‹åŒ–æˆå‘˜å¸¸é‡%qD,因为它有éžæ•´æ•°çš„类型%qT"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "数组%qD的大å°å…·æœ‰éžæ•´æ•°ç±»åž‹%qT"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "数组%qT的大å°çš„类型ä¸æ˜¯æ•´æ•°"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "数组%qD的大å°ä¸ºè´Ÿ"
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "数组大å°ä¸ºè´Ÿæ•°"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C ä¸å…许大å°ä¸º 0 的数组%qD"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ ä¸å…许大å°ä¸º 0 的数组"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "数组%qD的大å°ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸è¡¨è¾¾å¼"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "数组大å°ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸è¡¨è¾¾å¼"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ ä¸å…许å˜é•¿æ•°ç»„%qD"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ ä¸å…许å˜é•¿æ•°ç»„"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr "使用了å˜é•¿æ•°ç»„%qD"
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "数组维数溢出"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD as array of void"
msgid "declaration of %qD as array of %<auto%>"
msgstr "%qD声明为 void 的数组"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, gcc-internal-format
msgid "declaration of %qD as array of void"
msgstr "%qD声明为 void 的数组"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, gcc-internal-format
msgid "creating array of void"
msgstr "创建 void 数组"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, gcc-internal-format
msgid "declaration of %qD as array of functions"
msgstr "%qD声明为函数的数组"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, gcc-internal-format
msgid "creating array of functions"
msgstr "创建函数的数组"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, gcc-internal-format
msgid "declaration of %qD as array of references"
msgstr "%qD声明为引用的数组"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, gcc-internal-format
msgid "creating array of references"
msgstr "创建引用的数组"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, gcc-internal-format
msgid "declaration of %qD as array of function members"
msgstr "%qD声明为函数æˆå‘˜çš„数组"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, gcc-internal-format
msgid "creating array of function members"
msgstr "创建函数æˆå‘˜çš„组织"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "多维数组%qD的声明必须至少指定除第一维以外所有维的大å°"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "声明多维数组必须至少指定除第一维以外所有维的大å°"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "为构造函数指定返回值无效"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "指定æžæž„函数的返回类型无效"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "为%<operator %T%>指定了返回值"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "æ— åå˜é‡æˆ–字段声明为 void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "å˜é‡æˆ–字段声明为 void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr "对é™å®šå%<::%D%>的使用无效"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "对é™å®šå%<%T::%D%>的使用无效"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "对é™å®šå%<%D::%D%>的使用无效"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr "%q#T ä¸æ˜¯ä¸€ä¸ªç±»æˆ–命å空间"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "类型%qTä¸æ˜¯ç”±ç±»åž‹%qT派生的"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "%qD没有声明为一个函数"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "%qD未声明为æˆå‘˜"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "缺少声明标识符:使用了ä¿ç•™å­—%qD"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr "函数定义未声明形å‚"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
#| msgid "template declaration of %<typedef%>"
msgid "declaration of %qD as %<typedef%>"
msgstr "%<typedef%>的模æ¿å£°æ˜Ž"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "%q+D的声明éšè—了一个形å‚"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, gcc-internal-format
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "%<constexpr%>ä¸èƒ½è¢«ç”¨äºŽ typedef 声明"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "%qs的声明指定了两个以上的数æ®ç±»åž‹"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr "%qs的声明中有相互冲çªçš„é™å®šç¬¦"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ ä¸å…许声明无类型的%qs"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
msgstr "%<__int128%>ä¸ä¸ºæ­¤ç›®æ ‡æ‰€æ”¯æŒ"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ 对%qsä¸æ”¯æŒ%<__int128%>"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "为%qs使用%<signed%>或%<unsigned%>无效"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "为%qsåŒæ—¶ç»™å®šäº†%<signed%>å’Œ%<unsigned%>"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr "%<long long%>对%qs无效"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr "%<long%>对%qs无效"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr "%<short%>对%qs无效"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "%<long%>或%<short%>对%qs无效"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "%<long%>ã€%<int%>ã€%<short%>或%<char%>对%qs无效"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "为 char%qs给定了%<long%>或%<short%>"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "为%qsåŒæ—¶ç»™å®šäº†%<long%>å’Œ%<short%>"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "%<long%>或%<short%>对%qs无效"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "为%qs使用 longã€shortã€signed 或 unsigned 无效"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "对%qs而言无效的å¤æ•°"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "%<operator %T%>的声明中ä¸èƒ½ä½¿ç”¨é™å®šç¬¦"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "æˆå‘˜%qDä¸èƒ½æ—¢è¢«å£°æ˜Žä¸ºè™šå‡½æ•°ï¼Œåˆè¢«å£°æ˜Žä¸ºé™æ€å‡½æ•°"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%>ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„声明"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "å½¢å‚声明中出现的 typedef 声明无效"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, gcc-internal-format
msgid "storage class specified for template parameter %qs"
msgstr "为模æ¿å‚æ•°%qs指定了存储类"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "为形å‚声明指定了无效的存储类"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "å½¢å‚ä¸èƒ½è¢«å£°æ˜Žä¸º%<constexpr%>"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr "%<virtual%>用在类声明以外"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "%qs的声明指定了多个存储类"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "为%qs指定了存储类"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "为形å‚%qs指定了存储类"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "嵌套函数%qs被声明为%<extern%>"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "在文件层将%qs声明为%<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "函数作用域的%qséšå¼ä¸º auto,å´è¢«å£°æ˜Žä¸º%<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "为å‹å…ƒå‡½æ•°å£°æ˜ŽæŒ‡å®šäº†æ— æ•ˆçš„存储类"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs声明为返回一个函数的函数"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs声明为返回一个数组的函数"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, fuzzy, gcc-internal-format
#| msgid "%qs function uses %<auto%> type specifier without late return type"
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr "%qs函数使用了%<auto%>类型é™å®šå´æ²¡æœ‰è¿Ÿè¿”回类型"
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, fuzzy, gcc-internal-format
#| msgid "%qs function with late return type has %qT as its type rather than plain %<auto%>"
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
@@ -29000,476 +29064,476 @@ msgstr "%qs函数使用迟返回类型%qT作为它的类型,而ä¸æ˜¯%<auto%>"
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, fuzzy, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr "å¯å˜å‚数模æ¿åªåœ¨ -std=c++0x 或 -std=gnu++0x 下å¯ç”¨"
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, fuzzy, gcc-internal-format
#| msgid "%qs function with late return type not declared with %<auto%> type specifier"
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr "%qs函数使用了迟返回类型å´æœªç”¨%<auto%>类型é™å®šå£°æ˜Ž"
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "æžæž„函数ä¸èƒ½æ˜¯é™æ€æˆå‘˜å‡½æ•°"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, fuzzy, gcc-internal-format
#| msgid "destructor cannot be static member function"
msgid "constructor cannot be static member function"
msgstr "æžæž„函数ä¸èƒ½æ˜¯é™æ€æˆå‘˜å‡½æ•°"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "æžæž„函数ä¸èƒ½è¢« cv é™å®š"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, fuzzy, gcc-internal-format
#| msgid "destructors may not be cv-qualified"
msgid "constructors may not be cv-qualified"
msgstr "æžæž„函数ä¸èƒ½è¢« cv é™å®š"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "构造函数ä¸èƒ½è¢«å£°æ˜Žä¸ºè™šå‡½æ•°"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, gcc-internal-format
msgid "can%'t initialize friend function %qs"
msgstr "无法åˆå§‹åŒ–å‹å…ƒå‡½æ•°%qs"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "虚函数ä¸èƒ½æ˜¯å‹å…ƒ"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "å‹å…ƒå£°æ˜Žä¸åœ¨ç±»å®šä¹‰å†…"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
msgid "can%'t define friend function %qs in a local class definition"
msgstr "局部类定义中ä¸èƒ½å®šä¹‰å‹å…ƒå‡½æ•°%qs"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "æžæž„函数ä¸èƒ½æœ‰å‚æ•°"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "无法声明指å‘%q#T的指针"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "无法声明对%q#T的引用"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "无法声明指å‘%q#Tæˆå‘˜çš„指针"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, gcc-internal-format
msgid "cannot declare reference to qualified function type %qT"
msgstr "ä¸èƒ½å£°æ˜ŽæŒ‡å‘é™å®šå‡½æ•°ç±»åž‹%qT的引用"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, gcc-internal-format
msgid "cannot declare pointer to qualified function type %qT"
msgstr "ä¸èƒ½å£°æ˜ŽæŒ‡å‘é™å®šå‡½æ•°ç±»åž‹%qT的指针"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr "无法声明对%q#T的引用,因为它ä¸æ˜¯ typedef 或者模æ¿ç±»åž‹å®žå‚"
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr "ä¸èƒ½åœ¨è¿™é‡ŒåŒæ—¶ä½¿ç”¨%<const%>å’Œ%<constexpr%>"
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr "ä¸èƒ½åœ¨è¿™é‡ŒåŒæ—¶ä½¿ç”¨%<volatile%>å’Œ%<constexpr%>"
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "模æ¿æ ‡è¯†ç¬¦%qD用作声明"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "æˆå‘˜å‡½æ•°éšå¼åœ°æˆä¸ºæ‰€å±žç±»çš„å‹å…ƒ"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "有多余的é™å®š%<%T::%>在æˆå‘˜%qs上"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "无法定义æˆå‘˜å‡½æ•°%<%T::%s%>,在%<%T%>中"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, fuzzy, gcc-internal-format
#| msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "无法定义æˆå‘˜å‡½æ•°%<%T::%s%>,在%<%T%>中"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "无法声明æˆå‘˜%<%T::%s%>,在%qT中"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "éžå½¢å‚%qsä¸èƒ½æ˜¯ä¸€ä¸ªå‚数包"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "数组%qs太大"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "æ•°æ®æˆå‘˜ä¸èƒ½å…·æœ‰å¯å˜ç±»åž‹%qT"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "å‚æ•°ä¸èƒ½å…·æœ‰å¯å˜ç±»åž‹%qT"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "åªæœ‰æž„造函数æ‰èƒ½è¢«å£°æ˜Žä¸º%<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "éžæˆå‘˜%qsä¸èƒ½è¢«å£°æ˜Žä¸º%<mutable%>"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "éžå¯¹è±¡æˆå‘˜%qsä¸èƒ½è¢«å£°æ˜Žä¸º%<mutable%>"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "函数%qsä¸èƒ½è¢«å£°æ˜Žä¸º%<mutable%>"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "é™æ€%qsä¸èƒ½è¢«å£°æ˜Žä¸º%<mutable%>"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "常é‡%qsä¸èƒ½è¢«å£°æ˜Žä¸º%<mutable%>"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "函数%qsä¸èƒ½è¢«å£°æ˜Žä¸º%<mutable%>"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
#| msgid "parameter declared %<auto%>"
msgid "typedef declared %<auto%>"
msgstr "å½¢å‚声明为%<auto%>"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, gcc-internal-format
msgid "typedef name may not be a nested-name-specifier"
msgstr "typedef åä¸èƒ½æ˜¯åµŒå¥—å指定"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ ä¸å…许嵌类的类型%qD与其所属的类é‡å"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, gcc-internal-format
msgid "qualified function types cannot be used to declare static member functions"
msgstr "é™å®šçš„函数类型ä¸èƒ½ç”¨æ¥å£°æ˜Žé™æ€æˆå‘˜å‡½æ•°"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr "é™å®šçš„函数类型ä¸èƒ½ç”¨æ¥å£°æ˜Žéžæˆå‘˜å‡½æ•°"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "为å‹å…ƒç±»å£°æ˜ŽæŒ‡å®šäº†ç±»åž‹é™å®š"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "å‹å…ƒå‡½æ•°å£°æ˜Žä¸­å‡ºçŽ°äº†%<inline%>"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "模æ¿å‚æ•°ä¸èƒ½æ˜¯å‹å…ƒ"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "å‹å…ƒå£°æ˜Žéœ€è¦ class,å³%<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "å‹å…ƒå£°æ˜Žéœ€è¦ class,å³%<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "试图让%qTæˆä¸ºå…¨å±€åŸŸçš„å‹å…ƒ"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "éžæˆå‘˜å‡½æ•°ç±»åž‹ä¸Šçš„é™å®šç¬¦æ— æ•ˆ"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "抽象声明%qT被用作声明"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "ä¸èƒ½åœ¨å‚数声明中使用%<::%>"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr "å½¢å‚声明为%<auto%>"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
#| msgid "non-static data member %qE declared %<constexpr%>"
msgid "non-static data member declared %<auto%>"
msgstr "éžé™æ€æ•°æ®æˆå‘˜%qE被声明为%<constexpr%>"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "错误地使用了%<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
msgid "declaration of function %qD in invalid context"
msgstr "%qD的声明中类å无效"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "è”åˆæˆå‘˜å‡½æ•°%qD被声明为虚函数"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qDä¸èƒ½å£°æ˜Žä¸ºè™šå‡½æ•°ï¼Œå› ä¸ºå®ƒæ€»æ˜¯é™æ€çš„"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "在æžæž„函数%qD中的å‹å…ƒå£°æ˜Žéœ€è¦é™å®šå"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "%qD声明为%qT的一个æˆå‘˜"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, gcc-internal-format
msgid "a destructor cannot be %<constexpr%>"
msgstr "æžæž„函数ä¸èƒ½æ˜¯%<constexpr%>"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "在构造函数%qD中的å‹å…ƒå£°æ˜Žéœ€è¦é™å®šå"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "字段%qD类型ä¸å®Œå…¨"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "åå­—%qT类型ä¸å®Œå…¨"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr "在模æ¿%qT的实例化中"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qEæ—¢ä¸æ˜¯å‡½æ•°ä¹Ÿä¸æ˜¯æˆå‘˜å‡½æ•°ï¼›ä¸èƒ½å£°æ˜Žä¸ºå‹å…ƒ"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
msgid "constexpr static data member %qD must have an initializer"
msgstr "éžé™æ€æ•°æ®æˆå‘˜%qD具有 Java 类类型"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, gcc-internal-format
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "éžé™æ€æ•°æ®æˆå‘˜%qE被声明为%<constexpr%>"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "函数%qs的存储类%<auto%>无效"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "函数%qs的存储类%<register%>无效"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "函数%qs的存储类%<__thread%>无效"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
#| msgid "an asm-specification is not allowed on a function-definition"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "函数定义中ä¸å…许出现 asm 指定"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "在全局作用域外为函数%qs指定%<static%>无效"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "在全局作用域外为函数%qs指定%<inline%>无效"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "虚函数%qsä¸æ˜¯ç±»æˆå‘˜"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr "%qs定义在在éžç±»ä½œç”¨åŸŸä¸­"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
#| msgid "%qs defined in a non-class scope"
msgid "%qs declared in a non-class scope"
msgstr "%qs定义在在éžç±»ä½œç”¨åŸŸä¸­"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "ä¸èƒ½å°†æˆå‘˜å‡½æ•°%qD声明为有é™æ€é“¾æŽ¥"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "ä¸èƒ½åœ¨å¦ä¸€ä¸ªå‡½æ•°ä¸­å£°æ˜Žä¸€ä¸ªé™æ€å‡½æ•°"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "与声明ä¸åŒï¼Œå®šä¹‰é™æ€æ•°æ®æˆå‘˜æ—¶ä¸èƒ½ä½¿ç”¨%<static%>"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "é™æ€æˆå‘˜%qD声明为%<register%>"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "ä¸èƒ½æ˜¾å¼åœ°å°†æˆå‘˜%q#D声明为有外部链接"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, gcc-internal-format
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "对广义常å˜é‡%qD的声明ä¸åŒæ—¶æ˜¯å®šä¹‰"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qså·²åˆå§‹åŒ–,å´åˆè¢«å£°æ˜Žä¸º%<extern%>"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs既有%<extern%>åˆæœ‰åˆå§‹å€¼è®¾å®š"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "%q#D的默认实å‚类型为%qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "类型为%qTçš„å½¢å‚的默认实å‚å´æœ‰ç±»åž‹%qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
#| msgid "default argument %qE uses local variable %qD"
msgid "default argument %qE uses %qD"
msgstr "默认实å‚%qE使用了局部å˜é‡%qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "默认实å‚%qE使用了局部å˜é‡%qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr "å½¢å‚%qD具有 Java 类类型"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "å½¢å‚%qD被无效地被声明为具有方法类型"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, gcc-internal-format
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "å½¢å‚%qD包å«äº†æŒ‡å‘具有未知边界数组%qT的指针"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr "å½¢å‚%qD包å«äº†æŒ‡å‘具有未知边界数组%qT的引用"
@@ -29489,170 +29553,170 @@ msgstr "å½¢å‚%qD包å«äº†æŒ‡å‘具有未知边界数组%qT的引用"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "无效的构造函数:您è¦çš„å¯èƒ½æ˜¯%<%T (const %T&)%>"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qDä¸èƒ½åœ¨å‘½å空间声明"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qDä¸èƒ½è¢«å£°æ˜Žä¸ºé™æ€çš„"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD必须是一个éžé™æ€çš„æˆå‘˜å‡½æ•°"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD必须是一个éžé™æ€æˆå‘˜å‡½æ•°æˆ–éžæˆå‘˜å‡½æ•°"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD的实å‚必须有类或枚举类型"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, gcc-internal-format
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "å‘æŒ‡å‘ void 的引用的转æ¢æ°¸è¿œä¸ä¼šç”¨åˆ°ç±»åž‹è½¬æ¢è¿ç®—符"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, gcc-internal-format
msgid "conversion to void will never use a type conversion operator"
msgstr "å‘ void 的转æ¢æ°¸è¿œä¸ä¼šç”¨åˆ°ç±»åž‹è½¬æ¢è¿ç®—符"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, gcc-internal-format
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "å‘具有相åŒç±»åž‹çš„引用的转æ¢æ°¸è¿œä¸ä¼šç”¨åˆ°ç±»åž‹è½¬æ¢è¿ç®—符"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, gcc-internal-format
msgid "conversion to the same type will never use a type conversion operator"
msgstr "å‘相åŒç±»åž‹çš„转æ¢æ°¸è¿œä¸ä¼šç”¨åˆ°ç±»åž‹è½¬æ¢è¿ç®—符"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, gcc-internal-format
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "å‘指å‘基类的引用的转æ¢æ°¸è¿œä¸ä¼šç”¨åˆ°ç±»åž‹è½¬æ¢è¿ç®—符"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, gcc-internal-format
msgid "conversion to a base class will never use a type conversion operator"
msgstr "å‘基类的转æ¢æ°¸è¿œä¸ä¼šç”¨åˆ°ç±»åž‹è½¬æ¢è¿ç®—符"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ ä¸å…许é‡è½½ ?: è¿ç®—符"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr "%qDä¸èƒ½å¸¦å¯å˜æ•°é‡çš„实å‚"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "åŽç¼€%qD必须使用%<int%>作为它的å‚æ•°"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "åŽç¼€%qD必须使用%<int%>作为它的第二个å‚æ•°"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD必须带 0 或 1 个实å‚"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD必须带 1 或 2 个实å‚"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "å‰ç¼€%qD应当返回%qT"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "åŽç¼€%qD应当返回%qT"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD必须有%<void%>类型"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD带且仅带 1 个实å‚"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD带且仅带 2 个实å‚"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "用户定义的%qD总是计算所有两个å‚æ•°"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD应当返回值而éžå¼•ç”¨"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qDä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "使用模æ¿ç±»åž‹å½¢å‚%qT,在%qsåŽ"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization %qD for %q+D"
msgid "using alias template specialization %qT after %qs"
msgstr "有歧义的模æ¿ç‰¹ä¾‹åŒ–%qD(为%q+D)"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "使用 typedef å%qD,在%qsåŽ"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
#| msgid "%q+D has a previous declaration here"
msgid "%qD has a previous declaration here"
msgstr "%q+Då…ˆå‰åœ¨æ­¤å¤„有过声明"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "%qT作为%qs被引用"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+Tå…ˆå‰åœ¨æ­¤å¤„有过声明"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT作为枚举被引用"
@@ -29664,88 +29728,88 @@ msgstr "%qT作为枚举被引用"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "%<%s %T%>需è¦æ¨¡æ¿å‚æ•°"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD与其声明所在的类é‡å"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "对%qD的引用有歧义"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "使用枚举%q#Då‰æ²¡æœ‰ç»™å‡ºå£°æ˜Ž"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "%qTé‡å£°æ˜Žä¸ºéžæ¨¡æ¿"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "å…ˆå‰çš„声明%q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "派生è”åˆ%qT无效"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "Java ç±»%qTä¸èƒ½æœ‰å¤šä¸ªåŸºç±»"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "Java ç±»%qTä¸èƒ½æœ‰è™šåŸºç±»"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "基类型%qTä¸æ˜¯ç»“构或类"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "递归的类型%qT未定义"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "é‡å¤çš„基类型%qT无效"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, gcc-internal-format
msgid "previous definition here"
msgstr "å…ˆå‰çš„定义在这里"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, fuzzy, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­ç±»åž‹ä¸åŒ¹é…"
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr "%<%2$T%>的内在类型%<%1$T%>必须是整型"
@@ -29754,73 +29818,73 @@ msgstr "%<%2$T%>的内在类型%<%1$T%>必须是整型"
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "没有一个整数类型å¯ä»¥è¡¨ç¤º%qT的所有枚举值"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr "%qD的枚举值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for %<unsigned long%> type"
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "对%<unsigned long%>类型而言整数常é‡å¤ªå¤§"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "%qD处枚举值溢出"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "枚举值 %E 对其类型%<%T%>而言太大了"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "返回值类型%q#Tä¸å®Œå…¨"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr "返回类型具有 Java 类类型%q#T"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%>应当返回一个对%<*this%>的引用"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "%q+Då…ˆå‰æ²¡æœ‰å£°æ˜Žè¿‡"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "无效的函数声明"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "å½¢å‚%qD被声明为 void"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
msgid "parameter %q+D set but not used"
msgstr "å½¢å‚%qD被设定但未被使用"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "无效的æˆå‘˜å‡½æ•°å£°æ˜Ž"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD已在类%qT中定义过"
@@ -29860,7 +29924,7 @@ msgstr "ä¸èƒ½ delete 一个函数。åªæœ‰æŒ‡å‘对象的指针æ‰æ˜¯%<delete%>
msgid "deleting %qT is undefined"
msgstr "删除%qT未定义"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "%q#D声明为模æ¿"
@@ -30132,7 +30196,7 @@ msgstr "嵌套å指定中使用了ä¸å®Œå…¨çš„类型%qT"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "对%<%T::%D%>的引用有歧义"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qDä¸æ˜¯%qTçš„æˆå‘˜"
@@ -30442,7 +30506,7 @@ msgstr "类型%qTä¸æ˜¯%qT的直接基类"
msgid "bad array initializer"
msgstr "错误的数组åˆå§‹å€¼è®¾å®š"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr "%qTä¸æ˜¯ä¸€ä¸ªç±»"
@@ -30528,67 +30592,67 @@ msgstr "new 中数组大å°ä¸æ˜¯å¸¸é‡ï¼Œæ— æ³•æ£€æŸ¥åˆå§‹å€¼åˆ—表的长度"
msgid "parenthesized initializer in array new"
msgstr "括起的åˆå§‹å€¼è®¾å®šåŽå‡ºçŽ°çš„属性被忽略"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "数组 new 的大å°å¿…须有整数类型"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new ä¸èƒ½ç”¨äºŽå¼•ç”¨ç±»åž‹"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new ä¸èƒ½ç”¨äºŽå‡½æ•°ç±»åž‹"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "调用 Java 构造函数,但没有定义%<jclass%>"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, gcc-internal-format
msgid "can%'t find %<class$%> in %qT"
msgstr "%qT中找ä¸åˆ°%<class$%>"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "åˆå§‹å€¼è®¾å®šåœ¨å®Œæˆä¹‹å‰ç»“æŸ"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "ä¸èƒ½ç”¨åˆå§‹å€¼è®¾å®šé¡¹æ¥åˆå§‹åŒ–多维数组"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "检测到调用 delete è¿ç®—符时å¯èƒ½å‡ºçŽ°çš„问题:"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, fuzzy, gcc-internal-format
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "æžæž„函数和类特定的 delete è¿ç®—符å‡ä¸ä¼šè¢«è°ƒç”¨ï¼Œå³ä½¿å®ƒä»¬åœ¨ç±»å®šä¹‰æ—¶å·²ç»å£°æ˜Žã€‚"
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "delete 时数组大å°æœªçŸ¥"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "å‘é‡ delete 的实å‚类型既éžæŒ‡é’ˆä¹Ÿéžæ•°ç»„"
@@ -30648,43 +30712,43 @@ msgstr "%qD的实å‚ä¸ä¾èµ–模æ¿å‚数,所以%qD的声明必须å¯ç”¨"
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(如果您使用%<-fpermissive%>,G++ 会接å—您的代ç ï¼Œä½†æ˜¯å…许使用未定义的å称是ä¸å»ºè®®ä½¿ç”¨çš„风格)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr "修饰 typeof,请改用 decltype"
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, fuzzy, gcc-internal-format
#| msgid "mangling unknown fixed point type"
msgid "mangling __underlying_type"
msgstr "修饰未知的定点类型"
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr "修饰未知的定点类型"
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr "修饰 %C"
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "çœç•¥çš„%<?:%>中æ“作数ä¸èƒ½è¢«ä¿®é¥°"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr "函数模æ¿ç­¾å里有字é¢å­—符串"
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "%qD修饰åŽçš„å字将在 GCC 的未æ¥ç‰ˆæœ¬ä¸­æœ‰å˜åŒ–"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, fuzzy, gcc-internal-format
#| msgid "-fabi-version=4 (or =0) avoids this error with a change in vector mangling"
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
@@ -30773,61 +30837,61 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, gcc-internal-format
msgid "defaulted declaration %q+D"
msgstr "默认化声明%q+D"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, gcc-internal-format
msgid "does not match expected signature %qD"
msgstr "ä¸åŒ¹é…%qD预期的签å"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, fuzzy, gcc-internal-format
#| msgid "function %q+D defaulted on its first declaration must not have an exception-specification"
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr "首次声明时被默认化的函数%q+Dä¸å¯ä»¥æŒ‡å®šå¼‚常"
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot be defaulted"
msgid "a template cannot be defaulted"
msgstr "%qDä¸èƒ½è¢«é»˜è®¤åŒ–"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr "%qDä¸èƒ½è¢«é»˜è®¤åŒ–"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "默认化函数%q+D有默认å‚æ•°"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "由于éšå¼çš„虚æžæž„函数,类%qTçš„ vtable 布局å¯èƒ½ä¸Ž ABI ä¸ç›¸å®¹ï¼Œå¹¶ä¸”å¯èƒ½åœ¨ GCC 的未æ¥ç‰ˆæœ¬ä¸­æ”¹å˜"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "%q#D conflicts with previous using declaration %q#D"
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D与先å‰çš„ using 声明%q#D冲çª"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+D"
msgid "previous declaration %q+#D"
msgstr "å…ˆå‰çš„声明%q+D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "%<wchar_t%>é‡å£°æ˜Žä¸º%qT"
@@ -30838,265 +30902,265 @@ msgstr "%<wchar_t%>é‡å£°æ˜Žä¸º%qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "对%q+#D无效的é‡å£°æ˜Ž"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "作为%qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr "%q#D声明为有 C 链接"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr "因为异常规范ä¸ä¸€è‡´"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "类型与先å‰çš„%q#D的外部声明ä¸åŒ¹é…"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "å…ˆå‰%q+#D的外部声明"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
msgid "extern declaration of %q#D doesn%'t match"
msgstr "%q#D的外部声明ä¸åŒ¹é…"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "全局声明%q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "%q#D的声明éšè—了一个形å‚"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "%q+D的声明éšè—了一个形å‚"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "%qD的声明éšè—了先å‰çš„一个局部å˜é‡"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "%qD的声明éšè—了‘this’的一个æˆå‘˜"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "%qD的声明éšè—了一个全局声明"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "%qDçš„å称查阅已改å˜"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr "在 ISO 标准规则下匹é…æ­¤%q+D"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr "在旧规则下匹é…æ­¤%q+D"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "在 ISO%<for%>作用域中,%qDçš„å称查找有å˜åŒ–"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr "ä¸èƒ½åœ¨%q+D使用过时的绑定,因为它有æžæž„函数"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr "在%q+D使用过时的绑定"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(如果您使用%<-fpermissive%>G++ 会接å—您的代ç )"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#Déšè—了%q#T的构造函数"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D与先å‰çš„ using 声明%q#D冲çª"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "å…ˆå‰å¯¹äºŽ%q+#Dçš„éžå‡½æ•°å£°æ˜Ž"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "与函数声明%q#D冲çª"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qTä¸æ˜¯ä¸€ä¸ªå‘½å空间"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "using 声明ä¸èƒ½æŒ‡å®šä¸€ä¸ªæ¨¡æ¿æ ‡è¯†ç¬¦ã€‚请å°è¯•%<using %D%>"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "ä¸å…许在 using 声明中使用命å空间%qD"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "%qD未声明"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD已在此作用域中声明过"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "在类作用域使用éžæˆå‘˜çš„ using 声明"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%>指定了æžæž„函数"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%>指定了构造函数"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%>在%qT内指定了构造函数"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "没有与%<%T::%D%>匹é…çš„æˆå‘˜ï¼Œåœ¨%q#T中"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "%qD的声明ä¸åœ¨åŒ…å«%qD的命å空间中"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "%qD的声明中有显å¼çš„é™å®š"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD应当先在%qD内声明"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr "%qD属性需è¦ä¸€ä¸ª NTBS 作为实å‚"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr "%qD属性无æ„义,因为匿å命å空间的æˆå‘˜æ‹¥æœ‰å±€éƒ¨ç¬¦å·"
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "指定%qD属性被忽略"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "这里ä¸å…许命å空间别å%qD,å‡å®šä¸º%qD"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "强 using åªåœ¨å‘½å空间作用域有æ„义"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "当å‰å‘½å空间%qD并ä¸åŒ…å«ç»å¸¸è¢«ä½œç”¨çš„命å空间%qD"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] "建议的替代:"
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, gcc-internal-format
msgid " %qE"
msgstr " %qE"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr "ä¾èµ–å‚数的查找找到了%q+D"
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX 进入 pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX 离开 pop_everything ()\n"
@@ -31207,7 +31271,7 @@ msgstr "ä¸èƒ½åœ¨è¿”回类型中定义新类型"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(%qT的定义末尾å¯èƒ½ç¼ºå°‘一个分å·)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qTä¸æ˜¯ä¸€ä¸ªæ¨¡æ¿"
@@ -31227,7 +31291,7 @@ msgstr "æ— æ•ˆçš„æ¨¡æ¿ ID"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "浮点字é¢å€¼ä¸èƒ½å‡ºçŽ°åœ¨å¸¸é‡è¡¨è¾¾å¼ä¸­"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr "常é‡è¡¨è¾¾å¼ä¸­ä¸èƒ½å‡ºçŽ°ç›®æ ‡ä¸æ˜¯æ•´åž‹æˆ–枚举型的类型转æ¢"
@@ -31373,727 +31437,727 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "此上下文中宽字符串无效"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find numeric literal operator %qD"
msgstr "在类%qs中找ä¸åˆ°å¯æº¢å‡ºçš„寄存器"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find string literal operator %qD"
msgstr "在类%qs中找ä¸åˆ°å¯æº¢å‡ºçš„寄存器"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, gcc-internal-format
msgid "expected declaration"
msgstr "需è¦å£°æ˜Ž"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, gcc-internal-format
msgid "fixed-point types not supported in C++"
msgstr "C++ ä¸æ”¯æŒå®šç‚¹ç±»åž‹"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ ä¸å…许在表达å¼ä¸­ä½¿ç”¨èŠ±æ‹¬å·ç»„"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, gcc-internal-format
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "语å¥è¡¨è¾¾å¼åªèƒ½ç”¨äºŽå‡½æ•°æˆ–模æ¿å®žå‚列表内"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, gcc-internal-format
msgid "expected primary-expression"
msgstr "需è¦å…ƒè¡¨è¾¾å¼"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%<this%>ä¸èƒ½ç”¨åœ¨æ­¤ä¸Šä¸‹æ–‡ä¸­"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
msgid "a template declaration cannot appear at block scope"
msgstr "Objective-C 声明åªèƒ½å‡ºçŽ°åœ¨å…¨å±€ä½œç”¨åŸŸä¸­"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "局部å˜é‡%qDä¸åº”出现在此上下文中"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
msgid "expected id-expression"
msgstr "需è¦è¡¨è¾¾å¼ç±»åž‹"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, gcc-internal-format
msgid "scope %qT before %<~%> is not a class-name"
msgstr "%<~%>å‰çš„作用域%qTä¸æ˜¯ä¸€ä¸ªç±»å"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "%<~%T%>声明为%qT的一个æˆå‘˜"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "typedef å%qD用于æžæž„函数声明"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
msgid "expected unqualified-id"
msgstr "需è¦æ¨¡æ¿ ID"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, fuzzy, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr "嵌套å指定中使用了ä¸å®Œå…¨çš„类型%qT"
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
#| msgid "%qT resolves to %qT, which is not an enumeration type"
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "%qT被解æžåˆ°éžæžšä¸¾ç±»åž‹%qT"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªæ¨¡æ¿"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
msgid "expected nested-name-specifier"
msgstr "%C 期待访问指定符"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, gcc-internal-format
msgid "types may not be defined in casts"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨ç±»åž‹è½¬æ¢ä¸­"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, gcc-internal-format
msgid "types may not be defined in a %<typeid%> expression"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨%<typeid%>表达å¼ä¸­"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ ä¸å…许å¤åˆå­—é¢å€¼"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qEä¸æ˜¯ä¸€ä¸ªç±»"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "错误地使用了%qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "%<%D::%D%> is not a member of %qT"
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%>ä¸æ˜¯%qTçš„æˆå‘˜"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr "éžæ ‡å‡†ç±»åž‹"
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, gcc-internal-format
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ ä¸å…许对éžç±»åž‹ä½¿ç”¨%<alignof%>"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨%<decltype%>中"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
#| msgid "types may not be defined in a new-type-id"
msgid "types may not be defined in a new-expression"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨ new-type-id 中"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "括起的类型标识符åŽé¢ä¸èƒ½å‡ºçŽ°æ•°ç»„边界"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "请å°è¯•åˆ é™¤ç±»åž‹æ ‡è¯†ç¬¦ä¸¤è¾¹çš„括å·"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, gcc-internal-format
msgid "types may not be defined in a new-type-id"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨ new-type-id 中"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "new 声明中的表达å¼å¿…须具有整数或枚举类型"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "使用旧å¼çš„类型转æ¢"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, fuzzy, gcc-internal-format
#| msgid "%<>>%> operator will be treated as two right angle brackets in C++0x"
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr "%<>>%>è¿ç®—符在 C++0x 中将被认为是两个å³å°–括å·"
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr "建议%<>>%>表达å¼å‘¨å›´åŠ ä¸Šæ‹¬å·"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, gcc-internal-format
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ ä¸å…许çœç•¥ ?: 的中间æ“作数"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, fuzzy, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr "å·²ç»åœ¨ Lambda 表达å¼ä¸­æ•èŽ·äº†%<this%>"
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, gcc-internal-format
msgid "expected end of capture-list"
msgstr "æ•èŽ·åˆ—表应在此结æŸ"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, gcc-internal-format
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ ä¸å…许在 lambda 表达å¼æ•èŽ·åˆ—表中有åˆå§‹å€¼è®¾å®š"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "令åªè¯»å˜é‡%qD自增"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%q+#D declared here"
msgstr "%q+D已在此声明过"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, gcc-internal-format
msgid "default argument specified for lambda parameter"
msgstr "为 lambda å½¢å‚指定了默认å‚æ•°"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, gcc-internal-format
msgid "expected labeled-statement"
msgstr "需è¦æ ‡å·è¯­å¥"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case æ ‡å·%qE未出现在 switch 语å¥ä¸­"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr "%qE之å‰éœ€è¦%<typename%>,因为%qT是一个有ä¾èµ–的作用域"
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, gcc-internal-format
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%>命å了一个构造函数而éžç±»åž‹"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a constexpr function"
msgid "compound-statement in constexpr function"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªå¹¿ä¹‰å¸¸å‡½æ•°"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, gcc-internal-format
msgid "expected selection-statement"
msgstr "需è¦é€‰æ‹©è¯­å¥"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, gcc-internal-format
msgid "types may not be defined in conditions"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨æ¡ä»¶è¡¨è¾¾å¼ä¸­"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "表达å¼è¯­å¥ç±»åž‹ä¸å®Œå…¨"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, fuzzy, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr "对%qTä¸ä¸€è‡´çš„演绎:先是%qT然åŽæ˜¯%qT"
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr "需è¦å¾ªçŽ¯è¯­å¥"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, fuzzy, gcc-internal-format
#| msgid "range-based-for loops are not allowed in C++98 mode"
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr "C++98 模å¼ä¸‹ä¸å…许使用基于范围的 for 循环"
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ ä¸å…许计算转移"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, gcc-internal-format
msgid "expected jump-statement"
msgstr "需è¦è·³è½¬è¯­å¥"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "多余的%<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr "%<__label__%>未出现在å—起始"
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "ä¸èƒ½æ··åˆå£°æ˜Žå’Œå‡½æ•°å®šä¹‰"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr "%<friend%>用在类外"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, fuzzy, gcc-internal-format
#| msgid "%<auto%> will change meaning in C++0x; please remove it"
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr "%<auto%>的语义在 C++0x 中将被改å˜ï¼›è¯·è€ƒè™‘删除它"
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
msgid "decl-specifier invalid in condition"
msgstr "%C处 NAME= é™å®šç¬¦ä¸­ C å字无效"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "类定义ä¸èƒ½è¢«å£°æ˜Žä¸ºå‹å…ƒ"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr "模æ¿ä¸èƒ½æ˜¯%<virtual%>çš„"
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
msgid "invalid linkage-specification"
msgstr "无效的基类"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨%<decltype%>中"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr "在转æ¢è¿ç®—符中使用%<auto%>无效"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
msgid "only constructors take member initializers"
msgstr "åªæœ‰æž„造函数æ‰èƒ½æœ‰åŸºç±»åˆå§‹å€¼è®¾å®š"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, gcc-internal-format
msgid "cannot expand initializer for member %<%D%>"
msgstr "无法从æˆå‘˜%<%D%>中扩展åˆå§‹å€¼"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "对%qDçš„é™æ€å£°æ˜Žå‡ºçŽ°åœ¨éžé™æ€å£°æ˜Žä¹‹åŽ"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "年代错误的旧å¼åŸºç±»åˆå§‹å€¼è®¾å®š"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "关键字%<typename%>ä¸å…许用在此上下文中(é™å®šçš„åˆå§‹å€¼è®¾å®šéšå¼åœ°æ˜¯ä¸€ä¸ªç±»åž‹)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, fuzzy, gcc-internal-format
#| msgid "expected a string after %<#pragma message%>"
msgid "expected empty string after %<operator%> keyword"
msgstr "%<#pragma message%>åŽéœ€è¦ä¸€ä¸ªå­—符串"
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected suffix identifier"
msgstr "需è¦æ ‡è¯†ç¬¦"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, gcc-internal-format
msgid "expected operator"
msgstr "需è¦æ“作符"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "关键字%<export%>未实现,将被忽略"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, gcc-internal-format
msgid "template parameter pack %qD cannot have a default argument"
msgstr "模æ¿å‚数包%qDä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "模æ¿å‚数包ä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, gcc-internal-format
msgid "template parameter packs cannot have default arguments"
msgstr "模æ¿å‚数包ä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, gcc-internal-format
msgid "expected template-id"
msgstr "需è¦æ¨¡æ¿ ID"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, gcc-internal-format
msgid "expected %<<%>"
msgstr "需è¦%<<%>"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "ä¸èƒ½ä»¥%<<::%>开始一个模æ¿å®žå‚列表"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%>是%<[%>çš„å¦ä¸€ç§æ‹¼æ³•ã€‚请在%<<%>å’Œ%<::%>间加上空格"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr "模æ¿å®žå‚表语法错误"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, gcc-internal-format
msgid "expected template-name"
msgstr "需è¦æ¨¡æ¿å"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "éžæ¨¡æ¿%qD用作模æ¿"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "使用%<%T::template %D%>æ¥è¡¨ç¤ºè¿™æ˜¯ä¸€ä¸ªæ¨¡æ¿"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
msgstr "%<...%>å‰éœ€è¦å½¢å‚包"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, gcc-internal-format
msgid "expected template-argument"
msgstr "需è¦æ¨¡æ¿å®žå‚"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
msgid "invalid non-type template argument"
msgstr "%qs(有%qT)的实å‚类型无效"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "显å¼å®žä¾‹åŒ–ä¸åº”当使用%<inline%>é™å®šç¬¦"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "显å¼å®žä¾‹åŒ–ä¸åº”当使用%<constexpr%>é™å®šç¬¦"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "特例化模æ¿æœ‰ C 链接"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
msgid "expected type specifier"
msgstr "需è¦ç±»åž‹é™å®š"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
msgid "expected template-id for type"
msgstr " 需è¦æœ‰%qD类型的模æ¿ï¼Œå´å¾—到了%qT"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, gcc-internal-format
msgid "expected type-name"
msgstr "需è¦ç±»åž‹å"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr "声明%qD没有声明任何东西"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr "属性在未åˆå§‹åŒ–类型上被忽略"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr "属性在模æ¿å®žä¾‹åŒ–上被忽略"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr "类型在éžå‰å‘声明的详尽类型é™å®šç¬¦ä¸­è¢«å¿½ç•¥"
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, gcc-internal-format
msgid "%qD is an enumeration template"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªæžšä¸¾æ¨¡æ¿"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, gcc-internal-format
msgid "%qD is not an enumerator-name"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªæžšä¸¾å"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
msgid "expected %<;%> or %<{%>"
msgstr "需è¦%<,%>或%<;%>"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
msgstr "å¯ç”¨æ¨¡æ¿è‡ªåŠ¨å®žä¾‹åŒ–"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, gcc-internal-format
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "%qD声明出现在命å空间%qD中,而åŽè€…并ä¸åŒ…å«%qD"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "%qD声明出现在%qD中,而åŽè€…并ä¸åŒ…å«%qD"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "%q#T多次定义"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªå‘½å空间å"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, gcc-internal-format
msgid "expected namespace-name"
msgstr "需è¦å‘½å空间å"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
msgstr "在这里ä¸å…许使用%<namespace%>定义"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "模æ¿æ ‡è¯†ç¬¦ä¸å…许出现在 using 声明中"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
#| msgid "types may not be defined in exception-declarations"
msgid "types may not be defined in alias template declarations"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨å¼‚常声明中"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
msgid "a function-definition is not allowed here"
msgstr "在这里ä¸å…许使用%<namespace%>定义"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "函数定义中ä¸å…许出现 asm 指定"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "函数定义中ä¸å…许有属性"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, gcc-internal-format
msgid "expected initializer"
msgstr "需è¦åˆå§‹å€¼è®¾å®š"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, gcc-internal-format
msgid "invalid type in declaration"
msgstr "声明中有无效类型"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, gcc-internal-format
msgid "initializer provided for function"
msgstr "为函数æ供了åˆå§‹å€¼è®¾å®š"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "括起的åˆå§‹å€¼è®¾å®šåŽå‡ºçŽ°çš„属性被忽略"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "数组边界ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
msgstr "生æˆå¼•ç”¨ç±»åž‹%qTçš„æˆå‘˜æŒ‡é’ˆ"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, gcc-internal-format
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%E%>ä¸æ˜¯ä¸€ä¸ªç±»åž‹"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "将构造函数用作模æ¿æ— æ•ˆ"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "使用%<%T::%D%>而ä¸æ˜¯%<%T::%D%>æ¥ä»¥é™å®šå指定构造函数"
@@ -32102,254 +32166,254 @@ msgstr "使用%<%T::%D%>而ä¸æ˜¯%<%T::%D%>æ¥ä»¥é™å®šå指定构造函数"
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, gcc-internal-format
msgid "invalid declarator"
msgstr "无效的声明"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, gcc-internal-format
msgid "expected declarator"
msgstr "需è¦å£°æ˜Ž"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD是一个命å空间"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type %qT"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "生æˆéžç±»ç±»åž‹%qTçš„æˆå‘˜æŒ‡é’ˆ"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
msgid "expected ptr-operator"
msgstr "未知的æ“作符‘%s’在 %%L处"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "é‡å¤çš„ cv é™å®š"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "duplicate cv-qualifier"
msgid "duplicate virt-specifier"
msgstr "é‡å¤çš„ cv é™å®š"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr "错误地使用了%<auto%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, gcc-internal-format
msgid "types may not be defined in template arguments"
msgstr "ä¸èƒ½åœ¨æ¨¡æ¿å®žå‚中定义类型"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, gcc-internal-format
msgid "expected type-specifier"
msgstr "需è¦ç±»åž‹é™å®š"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
msgstr "需è¦%<,%>或%<...%>"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, gcc-internal-format
msgid "types may not be defined in parameter types"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨å‚数类型中"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "ä¸å»ºè®®ä¸ºéžå‡½æ•°æŒ‡å®šé»˜è®¤å‚æ•°"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "默认å‚æ•°åªå…许出现在函数å‚数中"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
#| msgid "%H%sparameter pack %qD cannot have a default argument"
msgid "parameter pack %qD cannot have a default argument"
msgstr "%H%s模æ¿å‚数包%qDä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
#| msgid "%H%sparameter pack cannot have a default argument"
msgid "parameter pack cannot have a default argument"
msgstr "%H%s模æ¿å‚数包ä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ ä¸å…许指定元素åˆå§‹å€¼è®¾å®š"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ ä¸å…许指定元素åˆå§‹å€¼è®¾å®š"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, gcc-internal-format
msgid "expected class-name"
msgstr "需è¦ç±»å"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, gcc-internal-format
msgid "expected %<;%> after class definition"
msgstr "类定义åŽéœ€è¦%<;%>"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, gcc-internal-format
msgid "expected %<;%> after struct definition"
msgstr "结构定义åŽéœ€è¦%<;%>"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, gcc-internal-format
msgid "expected %<;%> after union definition"
msgstr "è”åˆå®šä¹‰åŽéœ€è¦%<;%>"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
msgstr "需è¦%<{%>或%<:%>"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "无法为类 %s 找到文件"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
msgid "qualified name does not name a class"
msgstr "%qEä¸æ˜¯ä¸€ä¸ªç±»"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "%qD的声明中类å无效"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, gcc-internal-format
msgid "extra qualification not allowed"
msgstr "ä¸å…许有多余的é™å®š"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "显å¼ç‰¹ä¾‹åŒ–å‰å¿…须有%<template <>%>"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
msgstr "函数模æ¿%qDé‡å£°æ˜Žä¸ºç±»æ¨¡æ¿"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, fuzzy, gcc-internal-format
msgid "could not resolve typename type"
msgstr "%<typename %T::%D%>指定了%q#T,但åŽè€…ä¸æ˜¯ä¸€ä¸ªç±»åž‹"
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "%q+#Tçš„å‰ä¸€ä¸ªå®šä¹‰"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
msgid "expected class-key"
msgstr "需è¦ç±»å"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, fuzzy, gcc-internal-format
#| msgid "a class-key must be used when declaring a friend"
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "声明å‹å…ƒæ—¶å¿…须使用 class 关键字"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "å‹å…ƒå£°æ˜Žæ²¡æœ‰æŒ‡å®šç±»æˆ–函数å"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "函数定义上有 pure 指定"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
msgstr "在%C处需è¦â€œ,â€æˆ–语å¥å°¾"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, fuzzy, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr "指定了无效的 AE 类型(%s)\n"
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, fuzzy, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr "<花括å·å†…çš„åˆå§‹å€¼åˆ—表>"
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr "在基类é™å®šä¸­æŒ‡å®šäº†å¤šäºŽä¸€æ¬¡çš„%<virtual%>"
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "关键字%<typename%>ä¸èƒ½åœ¨æ¨¡æ¿ä»¥å¤–使用"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "关键字%<typename%>ä¸å…许用在此上下文中(基类éšå¼åœ°æ˜¯ä¸€ä¸ªç±»åž‹)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, gcc-internal-format
msgid "types may not be defined in an exception-specification"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨å¼‚常规范中"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
msgstr "类型ä¸èƒ½å®šä¹‰åœ¨å¼‚常声明中"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr "特例化æˆå‘˜%<%T::%E%>需è¦%<template<>%>语法"
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
msgstr "%<%T::%E%>声明无效"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "模æ¿å‚数表太少"
@@ -32358,320 +32422,320 @@ msgstr "模æ¿å‚数表太少"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "模æ¿å‚数表太多"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "有å返回值ä¸å†è¢«æ”¯æŒ"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, gcc-internal-format
msgid "invalid declaration of member template in local class"
msgstr "局部类中对æˆå‘˜æ¨¡æ¿çš„声明无效"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "模æ¿æœ‰ C 链接"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
msgid "invalid explicit specialization"
msgstr "显å¼ç‰¹ä¾‹åŒ–éžæ¨¡æ¿%qT"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, gcc-internal-format
msgid "template declaration of %<typedef%>"
msgstr "%<typedef%>的模æ¿å£°æ˜Ž"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, gcc-internal-format
msgid "explicit template specialization cannot have a storage class"
msgstr "显å¼ç‰¹ä¾‹åŒ–ä¸èƒ½æœ‰å­˜å‚¨ç±»åž‹"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "在嵌套模æ¿å®žå‚列表中应当使用%<> >%>而éž%<>>%>"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "å¯ç–‘çš„%<>>%>,使用%<>%>æ¥ç»“æŸæ¨¡æ¿å®žå‚列表"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, gcc-internal-format
msgid "invalid use of %qD in linkage specification"
msgstr "指定链接时使用%qD无效"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, gcc-internal-format
msgid "%<__thread%> before %qD"
msgstr "%<__thread%>出现在%qD之å‰"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, gcc-internal-format
msgid "expected %<new%>"
msgstr "需è¦%<new%>"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, gcc-internal-format
msgid "expected %<delete%>"
msgstr "需è¦%<delete%>"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, gcc-internal-format
msgid "expected %<return%>"
msgstr "需è¦%<return%>"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, gcc-internal-format
msgid "expected %<extern%>"
msgstr "需è¦%<extern%>"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, gcc-internal-format
msgid "expected %<static_assert%>"
msgstr "需è¦%<static_assert%>"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, gcc-internal-format
msgid "expected %<decltype%>"
msgstr "需è¦%<decltype%>"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, gcc-internal-format
msgid "expected %<operator%>"
msgstr "需è¦%<operator%>"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, gcc-internal-format
msgid "expected %<class%>"
msgstr "需è¦%<class%>"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, gcc-internal-format
msgid "expected %<template%>"
msgstr "需è¦%<template%>"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, gcc-internal-format
msgid "expected %<namespace%>"
msgstr "需è¦%<namespace%>"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, gcc-internal-format
msgid "expected %<using%>"
msgstr "需è¦%<using%>"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, gcc-internal-format
msgid "expected %<asm%>"
msgstr "需è¦%<asm%>"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, gcc-internal-format
msgid "expected %<try%>"
msgstr "需è¦%<try%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, gcc-internal-format
msgid "expected %<catch%>"
msgstr "需è¦%<catch%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, gcc-internal-format
msgid "expected %<throw%>"
msgstr "需è¦%<throw%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, gcc-internal-format
msgid "expected %<__label__%>"
msgstr "需è¦%<__label__%>"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, gcc-internal-format
msgid "expected %<@try%>"
msgstr "需è¦%<@try%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, gcc-internal-format
msgid "expected %<@synchronized%>"
msgstr "需è¦%<@synchronized%>"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, gcc-internal-format
msgid "expected %<@throw%>"
msgstr "需è¦%<@throw%>"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, fuzzy, gcc-internal-format
#| msgid "expected %<static_assert%>"
msgid "expected %<__transaction_atomic%>"
msgstr "需è¦%<static_assert%>"
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, fuzzy, gcc-internal-format
#| msgid "expected %<static_assert%>"
msgid "expected %<__transaction_relaxed%>"
msgstr "需è¦%<static_assert%>"
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, gcc-internal-format
msgid "expected %<::%>"
msgstr "需è¦%<::%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, gcc-internal-format
msgid "expected %<...%>"
msgstr "需è¦%<...%>"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, gcc-internal-format
msgid "expected %<*%>"
msgstr "需è¦%<*%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, gcc-internal-format
msgid "expected %<~%>"
msgstr "需è¦%<~%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
msgstr "需è¦%<:%>或%<::%>"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "需è¦%<class%>ã€%<typename%>或%<template%>"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "使用了%qs标记,在命å%q#Tæ—¶"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "previously declared here"
msgid "%q#T was previously declared here"
msgstr "以å‰åœ¨æ­¤å£°æ˜Žè¿‡"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qDé‡å£°æ˜Žæ—¶æœ‰ä¸åŒçš„å¯è®¿é—®æ€§"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "用作消歧义的%<template%>åªèƒ½ç”¨äºŽæ¨¡æ¿å†…"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "文件在默认å‚数处结æŸ"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "ä½ç½®é”™è¯¯çš„%<@%D%>Objective-C++ 构造"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "%<@encode%>必须指定一个类型作为实å‚"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr "无效的 Objective-C++ 选择å­å"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
msgid "objective-c++ method declaration is expected"
msgstr "需è¦æŒ‡å®šå£°æ˜Ž"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
msgid "method attributes must be specified at the end"
msgstr "ä¸èƒ½ä¸ºå±€éƒ¨å˜é‡æŒ‡å®šèŠ‚属性"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
msgid "invalid type for instance variable"
msgstr "迭代å˜é‡%qE类型无效"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "%<@protocol%>需è¦æ ‡è¯†ç¬¦"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "%qE属性为%qE所忽略"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
msgid "invalid type for property"
msgstr "%q+D的抽象类型无效"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr "括起的åˆå§‹åŒ–ä¸å…许使用在 OpenMP %<for%>循环中"
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr "迭代å˜é‡%qDä¸åº”当是 reduction"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, gcc-internal-format
msgid "not enough collapsed for loops"
msgstr "循环折å å¾—ä¸å¤Ÿ"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "%<#pragma GCC pch_preprocess%>末尾有垃圾字符"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "模å—间优化未为 C++ 实现"
@@ -32769,69 +32833,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªå‡½æ•°æ¨¡æ¿"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "%2$q+D的模æ¿æ ‡è¯†ç¬¦%1$qDä¸åŒ¹é…任何模æ¿å£°æ˜Ž"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr "å‘现 %d 个%<template<>%>ï¼Œéœ€è¦ %d æ¥ç‰¹ä¾‹åŒ–一个æˆå‘˜å‡½æ•°æ¨¡æ¿"
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "有歧义的模æ¿ç‰¹ä¾‹åŒ–%qD(为%q+D)"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "模æ¿æ ‡è¯†ç¬¦%qD出现在基本模æ¿çš„声明中"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "显å¼åˆå§‹åŒ–中出现了模æ¿å‚数列表"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "为显å¼å®žä¾‹åŒ–æ供的定义"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "%qD声明时模æ¿å‚数表太多"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "%qD声明时模æ¿å‚数表太少"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "%qD的显å¼ç‰¹ä¾‹åŒ–必须由%<template <>%>引入"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "函数模æ¿éƒ¨åˆ†ç‰¹ä¾‹åŒ–%qD是ä¸å…许的"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "显å¼ç‰¹ä¾‹åŒ–时指定了默认å‚æ•°"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªæ¨¡æ¿å‡½æ•°"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD未在%qD中声明"
@@ -32844,134 +32908,134 @@ msgstr "%qD未在%qD中声明"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "特例化了éšå¼å£°æ˜Žçš„特殊æˆå‘˜å‡½æ•°"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "æˆå‘˜å‡½æ•°%qD未在%qT中声明"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr "基类åˆå§‹å€¼è®¾å®šå±•å¼€%<%T%>ä¸åŒ…括å‚数包"
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr "展开样å¼%<%T%>ä¸åŒ…括å‚数包"
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr "展开样å¼%<%E%>ä¸åŒ…括å‚数包"
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr "å‚数包未能在%<...%>中被展开:"
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, gcc-internal-format
msgid " <anonymous>"
msgstr " <匿å>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "%q+#D的声明"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr "éšè—了模版形å‚%q+#D"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "部分特例化中未用到模æ¿å‚数:"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "部分特例化%qT并未特例化任何模æ¿å‚æ•°"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr "å‚数包实å‚%qE必须出现在模æ¿å®žå‚表末尾"
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr "å‚数包实å‚%qT必须出现在模æ¿å®žå‚表末尾"
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "模æ¿å®žå‚%qEæ··æ‚了模æ¿å½¢å‚"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "模æ¿å®žå‚%2$qE的类型%1$qTå–决于模æ¿å‚æ•°"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "部分特例化模æ¿%qT声明为%<friend%>"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "%qD没有默认å‚æ•°"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr "å‚数包%qE必须出现在模æ¿å½¢å‚表末尾"
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr "å‚数包%qT必须出现在模æ¿å½¢å‚表末尾"
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "默认å‚æ•°ä¸èƒ½ç”¨åœ¨å‡½æ•°æ¨¡æ¿å‹å…ƒé‡å£°æ˜Žä¸­"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
msgstr "默认å‚æ•°ä¸èƒ½ç”¨åœ¨å‡½æ•°æ¨¡æ¿å‹å…ƒé‡å£°æ˜Žä¸­"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, fuzzy, gcc-internal-format
#| msgid "default template arguments may not be used in function templates without -std=c++0x or -std=gnu++0x"
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr "åªæœ‰æŒ‡å®šäº† -std=c++0x 或 -std=gnu++0x æ—¶æ‰èƒ½åœ¨å‡½æ•°æ¨¡æ¿ä¸­ä½¿ç”¨é»˜è®¤å‚æ•°"
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
msgstr "默认å‚æ•°ä¸èƒ½ç”¨åœ¨éƒ¨åˆ†ç‰¹ä¾‹åŒ–中"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
msgstr "包å«%qD的类的模æ¿å‚数有默认å‚æ•°"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "模æ¿ç±»æ²¡æœ‰åå­—"
@@ -32979,7 +33043,7 @@ msgstr "模æ¿ç±»æ²¡æœ‰åå­—"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "æžæž„函数%qD被声明为一个æˆå‘˜æ¨¡æ¿"
@@ -32989,74 +33053,74 @@ msgstr "æžæž„函数%qD被声明为一个æˆå‘˜æ¨¡æ¿"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "%qD模æ¿å£°æ˜Žæ— æ•ˆ"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "对éžæ¨¡æ¿%q#D的模æ¿å®šä¹‰"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "éœ€è¦ %d 级的%q#D模æ¿å‚数,å´ç»™å‡ºäº† %d 级"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "得到 %d 个模æ¿å‚数,为%q#D"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "%2$q#T得到了 %1$d 个模æ¿å‚æ•°"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr "ä½†å®žé™…éœ€è¦ %d 个"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr "ç»™%qD的模æ¿å®žå‚ä¸åŒ¹é…原先的模æ¿%qD"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr "使用 template<> æ¥æ˜¾å¼ç‰¹ä¾‹åŒ–"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qTä¸æ˜¯ä¸€ä¸ªæ¨¡æ¿ç±»åž‹"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "%qD的声明中没有 template é™å®š"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "é‡å£°æ˜Žä¸ºå…·æœ‰ %d 个模æ¿å‚æ•°"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "å…ˆå‰çš„声明%q+D使用了 %d 个模æ¿å‚æ•°"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "模æ¿å½¢å‚%q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "在这里åˆè¢«å£°æ˜Žä¸º%q#D"
@@ -33065,348 +33129,348 @@ msgstr "在这里åˆè¢«å£°æ˜Žä¸º%q#D"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "é‡å®šä¹‰%q#D的默认å‚æ•°"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, gcc-internal-format
msgid "original definition appeared here"
msgstr "原始定义在此"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为对象%qD没有外部链接"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为函数%qD没有外部链接"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å‚æ•°"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "它必须是格å¼ä¸ºâ€˜&X::Y’的æˆå‘˜æŒ‡é’ˆ"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for %q#D"
msgid " couldn't deduce template parameter %qD"
msgstr "得到 %d 个模æ¿å‚数,为%q#D"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types %qT and %qT"
msgid " mismatched types %qT and %qT"
msgstr "在类型%qT和%qT间比较"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, fuzzy, gcc-internal-format
#| msgid "template parameter pack %qD cannot have a default argument"
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr "模æ¿å‚数包%qDä¸èƒ½æœ‰é»˜è®¤å‚æ•°"
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "template arguments to %qD do not match original template %qD"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "ç»™%qD的模æ¿å®žå‚ä¸åŒ¹é…原先的模æ¿%qD"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
#| msgid "%qs is not valid for %qs"
msgid " %qE is not equivalent to %qE"
msgstr "%qs对%qs而言无效"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, fuzzy, gcc-internal-format
#| msgid "inconsistent deduction for %qT: %qT and then %qT"
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr "对%qTä¸ä¸€è‡´çš„演绎:先是%qT然åŽæ˜¯%qT"
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
#| msgid "partial specialization %qT does not specialize any template arguments"
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "部分特例化%qT并未特例化任何模æ¿å‚æ•°"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT"
msgid " member function type %qT is not a valid template argument"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å‚æ•°"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "ä¸èƒ½å°†ç±»åž‹%qT转æ¢ä¸ºç±»åž‹%qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
#| msgid "%qT is an ambiguous base of %qT"
msgid " %qT is an ambiguous base class of %qT"
msgstr "%qT是%qT的有歧义的基类"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type %qT is not derived from type %qT"
msgid " %qT is not derived from %qT"
msgstr "类型%qTä¸æ˜¯ç”±ç±»åž‹%qT派生的"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
#| msgid "cannot decrement a pointer to incomplete type %qT"
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "指å‘ä¸å®Œå…¨ç±»åž‹%qT的指针ä¸èƒ½è‡ªå‡"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "template arguments to %qD do not match original template %qD"
msgid " template argument %qE does not match %qD"
msgstr "ç»™%qD的模æ¿å®žå‚ä¸åŒ¹é…原先的模æ¿%qD"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
msgid " could not resolve address from overloaded function %qE"
msgstr "%s 无法解æžé‡è½½çš„函数地å€"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为字é¢å­—符串ä¸èƒ½ç”¨åœ¨æ­¤ä¸Šä¸‹æ–‡ä¸­"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
msgid "in template argument for type %qT "
msgstr "%qD的模æ¿å®žå‚使用了局部类型%qT"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, gcc-internal-format
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆæ¨¡æ¿å®žå‚,因为%qD是一个å˜é‡ï¼Œè€Œéžå˜é‡çš„地å€"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为%qEä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, gcc-internal-format
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为函数%qD没有外部链接"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为%qEä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为 cv é™å®šå†²çª"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为它ä¸æ˜¯ä¸€ä¸ªå·¦å€¼"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%q#Dä¸æ˜¯ç±»åž‹%qT的有效模æ¿å‚数,因为一个引用å˜é‡æ²¡æœ‰å¸¸é‡åœ°å€"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为它没有外部链接"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为对象%qD没有外部链接"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr "它必须是一个具有外部链接函数的地å€"
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为它是一个指针"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "å°è¯•ä½¿ç”¨%qE代替"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qEä¸æ˜¯ç±»åž‹%qT的有效模æ¿å®žå‚,因为它的类型是%qT"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "此上下文中ä¸å…许标准转æ¢"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
msgid "ignoring attributes on template argument %qT"
msgstr "%qs(有%qT)的实å‚类型无效"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr "注入的类å%qD被用作模æ¿çš„模æ¿å‚æ•°"
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "invalid use of destructor %qD as a type"
msgid "invalid use of destructor %qE as a type"
msgstr "å°†æžæž„函数%qD用作类型无效"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "需è¦ä½¿ç”¨æŸä¸ªæ¨¡æ¿å‚数的类型æˆå‘˜æ—¶ï¼Œè¯·ä½¿ç”¨%<typename %E%>"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "å®žå‚ %d 的类型/值ä¸åŒ¹é…,在%qD的模æ¿å‚数列表中"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr "需è¦ä¸€ä¸ª%qT类型的常é‡ï¼Œå´ç»™å‡ºäº†%qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr "需è¦ä¸€ä¸ªç±»æ¨¡æ¿ï¼Œå´ç»™å‡ºäº†%qE"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr "需è¦ä¸€ä¸ªç±»åž‹ï¼Œå´ç»™å‡ºäº†%qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr "需è¦ä¸€ä¸ªç±»åž‹ï¼Œå´ç»™å‡ºäº†%qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr "需è¦ä¸€ä¸ªç±»æ¨¡æ¿ï¼Œå´ç»™å‡ºäº†%qT"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr "需è¦æœ‰%qD类型的模æ¿ï¼Œå´å¾—到了%qT"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr "éžç±»åž‹å‚数包中类型ä¸åŒ¹é…"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "ä¸èƒ½å°†æ¨¡æ¿å‚数从%qE转æ¢åˆ°%qT"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "模æ¿å‚æ•°æ•°ç›®ä¸å¯¹(ä¸åº”是 %d 个而应是 %d 个)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "模æ¿å‚æ•°æ•°ç›®ä¸å¯¹(ä¸åº”是 %d 个而应是 %d 个)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "æ供给%q+D"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "模æ¿ç¬¬ %d 个å‚数无效"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%q#D is not a function template"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªå‡½æ•°æ¨¡æ¿"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "éžæ¨¡æ¿ç±»åž‹%qT用作模æ¿"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "对于模æ¿å£°æ˜Ž%q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "在实例化%2$qD时模æ¿å®žä¾‹åŒ–深度超过最大值 %1$d(使用 use -ftemplate-depth= æ¥å¢žå¤§æœ€å¤§å€¼)"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "在实例化%2$qD时模æ¿å®žä¾‹åŒ–深度超过最大值 %1$d(使用 use -ftemplate-depth= æ¥å¢žå¤§æœ€å¤§å€¼)"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr "展开%<%T%>æ—¶å‚数包长度ä¸åŒ¹é…"
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr "展开%<%E%>æ—¶å‚数包长度ä¸åŒ¹é…"
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "%q+D按类型%qT实例化"
@@ -33424,260 +33488,260 @@ msgstr "%q+D按类型%qT实例化"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr "å˜é‡%qD有函数类型"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "无效的å‚数类型%qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "在声明%q+D中"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "函数返回了一个数组"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "函数返回了一个函数"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "生æˆéžç±»ç±»åž‹%qTçš„æˆå‘˜å‡½æ•°æŒ‡é’ˆ"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "å½¢æˆå¯¹ void 的引用"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, gcc-internal-format
msgid "forming pointer to reference type %qT"
msgstr "生æˆæŒ‡å‘引用类型%qT的指针"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, gcc-internal-format
msgid "forming reference to reference type %qT"
msgstr "生æˆæŒ‡å‘引用类型%qT的引用"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "生æˆéžç±»ç±»åž‹%qTçš„æˆå‘˜æŒ‡é’ˆ"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "生æˆå¼•ç”¨ç±»åž‹%qTçš„æˆå‘˜æŒ‡é’ˆ"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "åˆ›å»ºæŒ‡å‘ void 类型的æˆå‘˜æŒ‡é’ˆ"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "生æˆ%qT的数组"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "生æˆæŠ½è±¡ç±»åž‹%qT的数组"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qTä¸æ˜¯ç±»ã€ç»“构或è”åˆç±»åž‹"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%qT被解æžåˆ°éžæžšä¸¾ç±»åž‹%qT"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT被解æžåˆ°éžç±»ç±»åž‹%qT"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "在模æ¿ä¸­ä½¿ç”¨%qs"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "é™å®šç±»åž‹%qTä¸åŒ¹é…æžæž„函数å ~%qT"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "ä¾èµ–å%qE被解æžä¸ºéžç±»åž‹ï¼Œä½†å®žä¾‹åŒ–å´äº§ç”Ÿäº†ä¸€ä¸ªç±»åž‹"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "如果您想指定类型,请使用%<typename %E%>"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "使用无效字段%qD"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr "对集展开表达å¼çš„无效使用"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr "使用%<...%>æ¥å±•å¼€å®žå‚集"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%E%> is not a type"
msgid "use %<%T::%D%> instead"
msgstr "%<%T::%E%>ä¸æ˜¯ä¸€ä¸ªç±»åž‹"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "%qE undeclared here (not in a function)"
msgid "%q+D declared here, later in the translation unit"
msgstr "%qE未声明(ä¸åœ¨å‡½æ•°å†…)"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qTæ—¢ä¸æ˜¯ç±»ä¹Ÿä¸æ˜¯å‘½å空间"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qDæ—¢ä¸æ˜¯ç±»ä¹Ÿä¸æ˜¯å‘½å空间"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT是/使用了匿å类型"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr "%qD的模æ¿å®žå‚使用了局部类型%qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT是一个å¯å˜ç±»åž‹"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "整型表达å¼%qEä¸æ˜¯å¸¸é‡"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " 试图实例化%qD"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "%q#T的类模æ¿å®žä¾‹åŒ–有歧义"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "对éžæ¨¡æ¿%q#D的显å¼å®žä¾‹åŒ–"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr "%qDä¸æ˜¯ç±»æ¨¡æ¿çš„éžé™æ€æ•°æ®æˆå‘˜"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "没有找到与%qD匹é…的模æ¿"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, gcc-internal-format
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "类型%qT用于显å¼å®žä¾‹åŒ–%qDæ—¶ä¸åŒ¹é…声明的类型%qT"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "对%q#D的显å¼å®žä¾‹åŒ–"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "对%q#Dé‡å¤çš„显å¼å®žä¾‹åŒ–"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ 1998 ä¸å…许在显å¼å®žä¾‹åŒ–时使用%<extern%>"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "为模æ¿å®žä¾‹åŒ–化应用了存储类型%qD"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template %q#D"
msgid "explicit instantiation of non-class template %qD"
msgstr "对éžæ¨¡æ¿%q#D的显å¼å®žä¾‹åŒ–"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "显å¼å®žä¾‹åŒ–éžæ¨¡æ¿ç±»åž‹%qT"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "%q#T的显å¼å®žä¾‹åŒ–出现在模æ¿å®šä¹‰ä¹‹å‰"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ ä¸å…许在显å¼å®žä¾‹åŒ–时使用%qE"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "对%q#Té‡å¤çš„显å¼å®žä¾‹åŒ–"
@@ -33689,34 +33753,34 @@ msgstr "对%q#Té‡å¤çš„显å¼å®žä¾‹åŒ–"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "显å¼å®žä¾‹åŒ–%qD时没有å¯ç”¨çš„定义"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "在实例化%2$q+D时模æ¿å®žä¾‹åŒ–深度超过了最大值 %1$d,å¯èƒ½æ˜¯ç”±äºŽç”Ÿæˆè™šå‡½æ•°è¡¨æ‰€è‡´(使用 -ftemplate-depth= æ¥å¢žå¤§æœ€å¤§å€¼)"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "invalid use of template type parameter %qT"
msgid "invalid template non-type parameter"
msgstr "对模æ¿ç±»åž‹å‚æ•°%qT的使用无效"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a valid type for a template constant parameter"
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#Tä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„模æ¿å¸¸é‡å‚数类型"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr "从花括å·ä¸­çš„åˆå§‹åŒ–åˆ—è¡¨æ¼”ç»Žéœ€è¦ #include <initializer_list>"
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
msgstr "å˜é‡%q#D在其自身的åˆå§‹å€¼è®¾å®šä¸­ä½¿ç”¨äº†%<auto%>类型"
@@ -33724,12 +33788,12 @@ msgstr "å˜é‡%q#D在其自身的åˆå§‹å€¼è®¾å®šä¸­ä½¿ç”¨äº†%<auto%>类型"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr "无法从%2$qE推导出%1$qT"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr "对%qTä¸ä¸€è‡´çš„演绎:先是%qT然åŽæ˜¯%qT"
@@ -33923,7 +33987,7 @@ msgstr "在文件作用域使用%<this%>无效"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "伪æžæž„函数åçš„é™å®šä½œç”¨åŸŸæ— æ•ˆ"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "é™å®šçš„类型%qTä¸åŒ¹é…æžæž„函数å ~%qT"
@@ -33963,452 +34027,452 @@ msgstr "在模æ¿å‚数列表中定义了%q#T"
msgid "invalid definition of qualified type %qT"
msgstr "对é™å®šç±»åž‹%qT的定义无效"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "无效的基类"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, gcc-internal-format
msgid "%qD is not captured"
msgstr "%qD未被æ•èŽ·"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "在包å«å‡½æ•°ä¸­ä½¿ç”¨%<auto%>å˜é‡"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, fuzzy, gcc-internal-format
#| msgid "use of %<auto%> variable from containing function"
msgid "use of parameter from containing function"
msgstr "在包å«å‡½æ•°ä¸­ä½¿ç”¨%<auto%>å˜é‡"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr "%q+#D已在此声明过"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, gcc-internal-format
msgid "use of parameter %qD outside function body"
msgstr "在函数体外使用形å‚%qD"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "模æ¿å‚æ•°%qD(类型为%qT)ä¸å…许出现在整数表达å¼ä¸­ï¼Œå› ä¸ºå®ƒçš„类型ä¸æ˜¯æ•´æ•°æˆ–枚举"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "命å空间%qD被用作表达å¼"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "将类模æ¿%qT用作表达å¼"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "在多继承网格中对%qD的访问有歧义"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qDä¸èƒ½å‡ºçŽ°åœ¨å¸¸é‡è¡¨è¾¾å¼ä¸­"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "%qE的类型未知"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "%qD is not an enumerator-name"
msgid "%qT is not an enumeration type"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªæžšä¸¾å"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "为形å‚声明指定了无效的存储类"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr "ä¸èƒ½ä¸ºæžæž„函数%<~%T%>使用%<offsetof%>"
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "ä¸èƒ½ä¸ºæˆå‘˜å‡½æ•°%qD应用%<offsetof%>"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr "%qD在å­å¥%qs中ä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr "%qD在数æ®å­å¥ä¸­å¤šæ¬¡å‡ºçŽ°"
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "%qD在%<firstprivate%>å­å¥ä¸­ä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "%qD在%<lastprivate%>å­å¥ä¸­ä¸æ˜¯ä¸€ä¸ªå˜é‡"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr "num_threads 表达å¼å¿…须是整型的"
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr "调度å—大å°è¡¨è¾¾å¼å¿…须为整型"
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr "%qE有%qs的引用类型"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr "%<threadprivate%>%qDä¸æ˜¯ä¸€ä¸ªæ–‡ä»¶ã€å‘½å空间或å—作用域å˜é‡"
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr "%<threadprivate%>%qE指示ä¸åœ¨%qT定义中"
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr "%qEå’Œ%qD之间的差ä¸å…·æœ‰æ•´æ•°ç±»åž‹"
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "static assertion failed: %E"
msgid "static assertion failed: %s"
msgstr "é™æ€æ–­è¨€é”™è¯¯ï¼š%E"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, gcc-internal-format
msgid "non-constant condition for static assertion"
msgstr "é™æ€æ–­è¨€ä¸­å‡ºçŽ°éžå¸¸é‡æ¡ä»¶"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, gcc-internal-format
msgid "argument to decltype must be an expression"
msgstr "decltype 的实å‚必须是一个表达å¼"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s 无法解æžé‡è½½çš„函数地å€"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr "__is_convertible_to"
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr "广义常å˜é‡%2$qD的类型%1$qTä¸æ˜¯å­—é¢å¸¸é‡"
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "函数%q+#D的抽象返回类型无效"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "函数%2$qD的返回值类型%1$qTä¸æ˜¯ä¸€ä¸ªå­—é¢ç±»åž‹"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a class"
msgid "%q#T has virtual base classes"
msgstr "%q#Tä¸æ˜¯ä¸€ä¸ªç±»"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr "广义常表达å¼æž„造函数体ä¸ä¸ºç©º"
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, fuzzy, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr "类中对具有éžæ•´æ•°ç±»åž‹%qTçš„é™æ€æ•°æ®æˆå‘˜çš„åˆå§‹åŒ–无效"
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, gcc-internal-format
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "æˆå‘˜%qD在%<constexpr%>构造函数里未åˆå§‹åŒ–"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, fuzzy, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr "返回语å¥è½¬æ¢æ— æ•ˆ"
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a constexpr function"
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªå¹¿ä¹‰å¸¸å‡½æ•°"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
msgstr "å‹å…ƒå£°æ˜Žæ²¡æœ‰æŒ‡å®šç±»æˆ–函数å"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "调用éžå‡½æ•°çš„%qD"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a constant expression"
msgid "%qD called in a constant expression"
msgstr "%qEä¸æ˜¯ä¸€ä¸ªå¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
msgid "%qD used before its definition"
msgstr "%qD用在其自身的åˆå§‹å€¼è®¾å®šä¸­"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, gcc-internal-format
msgid "call has circular dependency"
msgstr "调用存在循环ä¾èµ–"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "在实例化%2$qD时模æ¿å®žä¾‹åŒ–深度超过最大值 %1$d(使用 use -ftemplate-depth= æ¥å¢žå¤§æœ€å¤§å€¼)"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, gcc-internal-format
msgid "%q+E is not a constant expression"
msgstr "%q+Eä¸æ˜¯ä¸€ä¸ªå¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, gcc-internal-format
msgid "array subscript out of bound"
msgstr "数组下标越界"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, gcc-internal-format
msgid "%qE is not a constant expression"
msgstr "%qEä¸æ˜¯ä¸€ä¸ªå¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
msgid "mutable %qD is not usable in a constant expression"
msgstr "%qE的枚举值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, fuzzy, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°ç»„索引ä¸æ˜¯æ•´åž‹å¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, fuzzy, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr "%qE的枚举值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
msgstr "%qE的枚举值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, gcc-internal-format
msgid "%qD used in its own initializer"
msgstr "%qD用在其自身的åˆå§‹å€¼è®¾å®šä¸­"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, gcc-internal-format
msgid "%q#D is not const"
msgstr "%q#Dä¸æ˜¯ const"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, gcc-internal-format
msgid "%q#D is volatile"
msgstr "%q#D是 volatile"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
msgstr "%qDä¸èƒ½å‡ºçŽ°åœ¨å¸¸é‡è¡¨è¾¾å¼ä¸­"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD在此作用域中尚未声明"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
msgstr "new 声明中的表达å¼å¿…须具有整数或枚举类型"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, fuzzy, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr "%qE的枚举值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "枚举和éžæžšä¸¾ç±»åž‹ä¸€èµ·å‡ºçŽ°åœ¨æ¡ä»¶è¡¨è¾¾å¼ä¸­"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
msgid "expression %qE is not a constant-expression"
msgstr "%qEä¸æ˜¯ä¸€ä¸ªå¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
msgstr "表达å¼%qE有副作用"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, fuzzy, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr "表达å¼%qE具有抽象类类型%qT,ä¸èƒ½ç”¨äºŽ throw 表达å¼ä¸­"
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr "表达å¼%qE有副作用"
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, fuzzy, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°ç»„索引ä¸æ˜¯æ•´åž‹å¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
msgstr "åˆå§‹å€¼è®¾å®šä¸­å…ƒç´ ä¸æ˜¯å¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
msgstr "整型表达å¼%qEä¸æ˜¯å¸¸é‡"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
msgid "division by zero is not a constant-expression"
msgstr "åˆå§‹å€¼è®¾å®šä¸­å…ƒç´ ä¸æ˜¯å¸¸é‡è¡¨è¾¾å¼"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
msgid "non-constant array initialization"
msgstr "%L处需è¦æ ‡é‡åˆå§‹åŒ–表达å¼"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "无效的调度类型"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, gcc-internal-format
msgid "cannot capture %qE by reference"
msgstr "无法通过引用æ•èŽ·%qE"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, fuzzy, gcc-internal-format
#| msgid "already captured %<this%> in lambda expression"
msgid "already captured %qD in lambda expression"
msgstr "å·²ç»åœ¨ Lambda 表达å¼ä¸­æ•èŽ·äº†%<this%>"
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr "lambda 函数中无法æ•èŽ·%<this%>"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "%qVé™å®šç¬¦ä¸èƒ½åº”用到%qT上"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "åªèƒ½ä¸º Java 类定义应用%qE属性"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "åªèƒ½ä¸ºç±»å®šä¹‰åº”用%qE属性"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE已过时:g++ 的虚函数表现在默认与 COM 兼容"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "请求的 init_priority ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸æ•°"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "åªèƒ½å°†%qE属性用于æŸä¸ªç±»çš„对象的文件作用域定义"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "请求的 init_priority 越界"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "请求的 init_priority ä¿ç•™ä¸ºå†…部使用"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "%qE属性在此平å°ä¸Šä¸å—支æŒ"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_* check:在 %s 中失败,于 %s:%d"
@@ -34498,448 +34562,454 @@ msgstr "ISO C++ ä¸å…许将%<__alignof%>应用到函数类型的表达å¼ä¸Š"
msgid "invalid use of non-static member function"
msgstr "对éžé™æ€æˆå‘˜å‡½æ•°çš„使用无效"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "å–临时å˜é‡çš„地å€"
+
+#: cp/typeck.c:2023
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr "ä¸å»ºè®®ä½¿ç”¨ä»Žå­—符串常é‡åˆ°%qT的转æ¢"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
#| msgid "request for member %qD in %qE, which is of non-class type %qT"
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "对æˆå‘˜%qD的请求出现在%qE中,而åŽè€…具有éžç±»ç±»åž‹%qT"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "对æˆå‘˜%qD的请求出现在%qE中,而åŽè€…具有éžç±»ç±»åž‹%qT"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "对éžé™æ€æ•°æ®æˆå‘˜%qE的使用无效"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "对 NULL 对象éžé™æ€æ•°æ®æˆå‘˜%qD的访问无效"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(å¯èƒ½é”™è¯¯ä½¿ç”¨äº†%<offsetof%>å®)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "对 NULL 对象éžé™æ€æ•°æ®æˆå‘˜%qD的访问无效"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr "对象类型%qTçš„æžæž„函数å~%qTä¸åŒ¹é…"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "被æžæž„的类型是%qT,但æžæž„函数å´ä½¿ç”¨äº†%qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%>ä¸æ˜¯%qTçš„æˆå‘˜"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qTä¸æ˜¯%qT的基类"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD没有å为%qEçš„æˆå‘˜"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qDä¸æ˜¯ä¸€ä¸ªæˆå‘˜æ¨¡æ¿å‡½æ•°"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qTä¸æ˜¯ä¸€ä¸ªæŒ‡å‘对象的类型"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
msgstr "对æˆå‘˜æŒ‡é’ˆæ•°ç»„索引的使用无效"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "对æˆå‘˜æŒ‡é’ˆä½¿ç”¨ä¸€å…ƒ%<*%>éžæ³•"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
msgstr "éšå¼è½¬æ¢æˆå‘˜æŒ‡é’ˆç”¨æ³•æ— æ•ˆ"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "数组引用缺少下标"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ ä¸å…许按下标访问éžå·¦å€¼çš„数组"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "按下标访问声明为%<register%>的数组"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "下标è¿ç®—çš„å·¦æ“作数既éžæ•°ç»„也éžæŒ‡é’ˆ"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "使用%qE时缺少对象"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ ä¸å…许在程åºé‡Œè°ƒç”¨%<::main%>"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "必须用%<.*%>or%<->*%>调用%<%E (...)%>中的æˆå‘˜å‡½æ•°æŒ‡é’ˆï¼Œä¾‹å¦‚%<(... ->* %E) (...)%>"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qEä¸èƒ½ç”¨ä½œå‡½æ•°"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
msgid "too many arguments to constructor %q#D"
msgstr "给予函数 %s çš„å‚数太多,于 %L"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
msgid "too few arguments to constructor %q#D"
msgstr "ç»™ %qE 的实递å‚数太少"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
msgid "too many arguments to member function %q#D"
msgstr "æ供给函数%qE的实å‚太多"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
msgid "too few arguments to member function %q#D"
msgstr "æ供给函数%qE的实å‚太少"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
msgid "too many arguments to function %q#D"
msgstr "给予函数的实å‚太多"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
msgid "too few arguments to function %q#D"
msgstr "给予函数的实å‚太少"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
msgid "too many arguments to method %q#D"
msgstr "给予函数 %s çš„å‚数太多,于 %L"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
msgid "too few arguments to method %q#D"
msgstr "ç»™ %qE 的实递å‚数太少"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "给予函数的实å‚太多"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "给予函数的实å‚太少"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "%2$qD的第 %1$P 个形å‚的类型%3$qTä¸å®Œå…¨"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "å½¢å‚ %P 的类型%qTä¸å®Œå…¨"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "å‡å®šä»Žé‡è½½å‡½æ•°è½¬æ¢åˆ°ç±»åž‹%qT"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "算术表达å¼ä¸­ä½¿ç”¨äº† NULL"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, gcc-internal-format
msgid "left rotate count is negative"
msgstr "循环左移次数为负"
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr "循环å³ç§»æ¬¡æ•°ä¸ºè´Ÿ"
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr "循环左移次数大于或等于类型宽度"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr "循环å³ç§»æ¬¡æ•°å¤§äºŽæˆ–等于类型宽度"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr "与字é¢å­—符串比较的结构是ä¸å¯é¢„测的"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr "%qD的地å€æ°¸è¿œä¸ä¼šä¸º NULL"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ ä¸å…许比较指针和整数的值"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "éžæµ®ç‚¹å®žå‚间的无效比较"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "æ“作数类型%qTå’Œ%qT对åŒç›®%qO而言无效"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ ä¸å…许在å‡æ³•ä¸­ä½¿ç”¨ç±»åž‹ä¸º%<void *%>的指针"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ ä¸å…许在å‡æ³•ä¸­ä½¿ç”¨å‡½æ•°æŒ‡é’ˆ"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ ä¸å…许在å‡æ³•ä¸­ä½¿ç”¨æŒ‡å‘方法的指针"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "在指针算术中使用指å‘ä¸å®Œå…¨ç±»åž‹çš„指针无效"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, gcc-internal-format
msgid "taking address of constructor %qE"
msgstr "å–构造函数%qE的地å€"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, gcc-internal-format
msgid "taking address of destructor %qE"
msgstr "å–æžæž„函数%qE的地å€"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "用%qEå½¢æˆæˆå‘˜å‡½æ•°æŒ‡é’ˆçš„用法无效"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr "需è¦ä¸€ä¸ªé™å®šçš„标识符"
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, gcc-internal-format
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "%qE两边的括å·ä¸èƒ½ç”¨æ¥æž„造一个æˆå‘˜å‡½æ•°æŒ‡é’ˆ"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ ä¸å…许通过æå–一个未é™å®šçš„或带括å·çš„éžé™æ€æˆå‘˜å‡½æ•°çš„地å€æ¥å½¢æˆä¸€ä¸ªæˆå‘˜å‡½æ•°æŒ‡é’ˆã€‚请使用%<&%T::%D%>"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ ä¸å…许通过å–已绑定的æˆå‘˜å‡½æ•°çš„地å€æ¥æž„造æˆå‘˜å‡½æ•°æŒ‡é’ˆã€‚请改用%<&%T::%D%>"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "å–临时å˜é‡çš„地å€"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
msgstr "å³å€¼çš„引用用作左值"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ ä¸å…许å–函数%<::main%>的地å€"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ ä¸å…许å–转æ¢åˆ°éžå·¦å€¼è¡¨è¾¾å¼çš„地å€"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "ä¸èƒ½åˆ›å»ºæŒ‡å‘引用æˆå‘˜%qD的指针"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ ä¸å…许枚举自增"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ ä¸å…许枚举自å‡"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "指å‘ä¸å®Œå…¨ç±»åž‹%qT的指针ä¸èƒ½è‡ªå¢ž"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "指å‘ä¸å®Œå…¨ç±»åž‹%qT的指针ä¸èƒ½è‡ªå‡"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ ä¸å…许对类型为%qT的指针自增"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ ä¸å…许对类型为%qT的指针自å‡"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "布尔表达å¼ä¸èƒ½ç”¨ä½œ%<è¿ç®—符--%>çš„æ“作数"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "无法å–å³å€¼è¡¨è¾¾å¼%<this%>的地å€"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "è¦æ±‚显å¼å¯„存器å˜é‡%qD的地å€ã€‚"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "请求声明为%<register%>çš„%qD的地å€"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, fuzzy, gcc-internal-format
#| msgid "initializer for %qT must be brace-enclosed"
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "%qTçš„åˆå§‹å€¼è®¾å®šå¿…须在花括å·å†…"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
msgstr "%s 表达å¼åˆ—表被看作å¤åˆè¡¨è¾¾å¼"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
msgstr "%s 表达å¼åˆ—表被看作å¤åˆè¡¨è¾¾å¼"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
msgstr "%s 表达å¼åˆ—表被看作å¤åˆè¡¨è¾¾å¼"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "%s 表达å¼åˆ—表被看作å¤åˆè¡¨è¾¾å¼"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr "缺少用以解æž%qE类型的上下文"
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "从类型%qT到类型%qT的类型转æ¢ä¸¢å¤±äº†é™å®šç¬¦"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "从类型%qT到类型%qTçš„ static_cast 丢失了é™å®šç¬¦"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "从类型%qT到类型%qTçš„ reinterpret_cast 丢失了é™å®šç¬¦"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "从类型%qT到类型%qT中的 static_cast 无效"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "从%qT转æ¢åˆ°%qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "从具有类型%qTçš„å³å€¼è¡¨è¾¾å¼åˆ°ç±»åž‹%qT中的转æ¢æ— æ•ˆ"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "从%qT到%qT的转æ¢æŸå¤±ç²¾åº¦"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "从%qT到%qT的转æ¢å¢žå¤§äº†ç›®æ ‡ç±»åž‹çš„对é½éœ€æ±‚"
@@ -34948,221 +35018,221 @@ msgstr "从%qT到%qT的转æ¢å¢žå¤§äº†ç›®æ ‡ç±»åž‹çš„对é½éœ€æ±‚"
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ ä¸å…许在函数指针和对象指针间进行转æ¢"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "从类型%qT到类型%qT的转æ¢æ— æ•ˆ"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "在类型%qT上使用 const_cast 无效,因为它既ä¸æ˜¯æŒ‡é’ˆï¼Œä¹Ÿä¸æ˜¯å¼•ç”¨ï¼Œä¹Ÿä¸æ˜¯æ•°æ®æˆå‘˜æŒ‡é’ˆ"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "在类型%qT上使用 const_cast 无效,因为它是一个指针函数类型的指针或引用"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "从类型%qT到类型%qT中的 const_cast 无效"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "从类型%qT到类型%qT中的 const_cast 无效"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ ä¸å…许转æ¢ä¸ºæ•°ç»„类型%qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "å‘函数类型%qT的转æ¢æ— æ•ˆ"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr "在求%<%Q(%#T, %#T)%>值时"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
msgid "assigning to an array from an initializer list"
msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°ç»„索引ä¸æ˜¯å¸¸æ•°"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "å°†%qT赋值给%qT时类型ä¸å…¼å®¹"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, gcc-internal-format
msgid "array used as initializer"
msgstr "数组被用作åˆå§‹å€¼è®¾å®š"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, gcc-internal-format
msgid "invalid array assignment"
msgstr "无效的数组赋值"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr "在æˆå‘˜å‡½æ•°æŒ‡é’ˆè½¬æ¢ä¸­"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "æˆå‘˜æŒ‡é’ˆè½¬æ¢ç»ç”±è™šåŸºç±»%qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr "在æˆå‘˜æŒ‡é’ˆè½¬æ¢ä¸­"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "到类型%qT的转æ¢æ— æ•ˆï¼Œä»Žç±»åž‹%qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "ä¸èƒ½å°†%4$qD的实å‚%3$qP从%1$qT转æ¢åˆ°%2$qT"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
msgstr "ä¸èƒ½åœ¨å‚数默认时将%qT转æ¢ä¸º%qT"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
msgstr "ä¸èƒ½åœ¨ä¼ å‚时将%qT转æ¢ä¸º%qT"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, gcc-internal-format
msgid "cannot convert %qT to %qT"
msgstr "ä¸èƒ½å°†%qT转æ¢ä¸º%qT"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
msgstr "ä¸èƒ½åœ¨åˆå§‹åŒ–时将%qT转æ¢ä¸º%qT"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
msgstr "ä¸èƒ½åœ¨è¿”回时将%qT转æ¢ä¸º%qT"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
msgstr "ä¸èƒ½åœ¨èµ‹å€¼æ—¶å°†%qT转æ¢ä¸º%qT"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "%2$qE的第 %1$d 个实å‚å¯èƒ½æ˜¯ format 属性的备选"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
msgstr "%2$qE的第 %1$d 个实å‚å¯èƒ½æ˜¯ format 属性的备选"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
msgstr "%2$qE的第 %1$d 个实å‚å¯èƒ½æ˜¯ format 属性的备选"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
msgstr "åˆå§‹åŒ–的左手边å¯èƒ½æ˜¯ format 属性的备选时"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "赋值的左手边å¯èƒ½æ˜¯ format 属性的备选时"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "在传递%2$q+D的第 %1$P 个实å‚æ—¶"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "返回临时å˜é‡çš„引用"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "返回了一个éžå·¦å€¼çš„引用"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "返回了对局部å˜é‡çš„%q+D的引用"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "返回了局部å˜é‡çš„%q+D的地å€"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "æžæž„函数返回值"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "ä¸èƒ½ä»Žæž„造函数的异常处ç†ä¸­è¿”回"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "构造函数返回值"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "Lambda 返回类型演绎得到ä¸ä¸€è‡´çš„类型%qTå’Œ%qT"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "在返回%qT的函数中,返回语å¥ä¸å¸¦è¿”回值"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "在返回‘void’的函数中,返回语å¥å¸¦è¿”回值"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%>ä¸èƒ½è¿”回 NULL,除éžå®ƒè¢«å£°æ˜Žä¸º%<throw()%>(或 -fcheck-new 起作用)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, fuzzy, gcc-internal-format
msgid "using temporary as lvalue"
msgstr "å³å€¼çš„引用用作左值"
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr "å³å€¼çš„引用用作左值"
@@ -35702,7 +35772,7 @@ msgstr "%L处游标步进ä¸èƒ½ä¸ºé›¶"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr "%Lå¤„æ•°ç»„æž„é€ å‡½æ•°ä¸­çš„å…ƒç´ æ•°è¶…è¿‡å®¹è®¸çš„ä¸Šé™ %d。请å‚è§ -fmax-array-constructor 选项"
@@ -37861,27 +37931,27 @@ msgstr "%L处赋值å³æ‰‹è¾¹å‡ºçŽ°å€¼ä¸º POINTER 的函数"
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr "扩展:%L处 BOZ å­—é¢å€¼è¢«ç”¨æ¥åˆå§‹åŒ–éžæ•´æ•°å˜é‡â€˜%s’"
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr "扩展:在 %L处的 BOZ å­—é¢å€¼åœ¨ä¸€ä¸ª DATA 语å¥ä¹‹å¤–并且也在 INT/REAL/DBLE/CMPLX 之外"
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr "%L处 BOZ å­—é¢å€¼æŒ‰ä½è½¬æ¢åŽæ˜¯éžæ•´æ•°ç¬¦å·â€˜%s’"
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "%L处按ä½è½¬æ¢ BOZ 时算术下溢。这一检查å¯ç”¨ -fno-range-check 选项ç¦ç”¨"
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "%L处按ä½è½¬æ¢ BOZ 时算术上溢。这一检查å¯ç”¨ -fno-range-check 选项ç¦ç”¨"
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr "%L处按ä½è½¬æ¢ BOZ 时产生算术 NaN。这一检查å¯ç”¨ -fno-range-check 选项ç¦ç”¨"
@@ -38092,42 +38162,42 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr "å˜é‡â€˜%s’在%L处上下文中必须是常é‡"
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr "虚å‚‘%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处的表达å¼ä¸­"
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "å˜é‡â€˜%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处的表达å¼ä¸­"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "å˜é‡â€˜%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处的表达å¼ä¸­"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "å˜é‡â€˜%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处的表达å¼ä¸­"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -38142,14 +38212,14 @@ msgstr "truthvalue_conversion 中类型éžé¢„期"
msgid "can't open input file: %s"
msgstr "ä¸èƒ½æ‰“开输入文件:%s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L"
msgstr "在%L处建立临时数组"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Return value of function '%s' at %L not set"
msgid "Removing call to function '%s' at %L"
@@ -38260,12 +38330,12 @@ msgstr "%L处定义赋值的第一个å‚数必须是 INTENT(OUT) 或 INTENT(INOU
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "%L处定义赋值的第二个å‚数必须是 INTENT(IN)"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "%L处è¿ç®—符接å£çš„第一个å‚数必须是 INTENT(IN)"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "%L处è¿ç®—符接å£çš„第二个å‚数必须是 INTENT(IN)"
@@ -40086,129 +40156,129 @@ msgstr "写入模å—文件时出错:%s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "å字列表 %s ä¸èƒ½ä¸ºå¯¹ %s çš„ USE å…³è”æ¥æ›´å"
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr "%2$C处的å字‘%1$s’是从当å‰ç¨‹åºå•å…ƒå¯¹â€˜%3$s’有歧义的引用"
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr "%2$L处引用的符å·â€˜%1$s’在模å—‘%3$s’中找ä¸åˆ°"
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr "%2$L处引用的用户è¿ç®—符‘%1$s’在模å—‘%3$s’中找ä¸åˆ°"
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr "%2$L处引用的内建è¿ç®—符‘%1$s’在模å—‘%3$s’中找ä¸åˆ°"
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "ä¸èƒ½æ‰“开模å—文件‘%s’写入,在%C处:%s"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "写入模å—文件‘%s’时出错:%s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete module file '%s': %s"
msgstr "无法删除模å—文件‘%s’:%s"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, gcc-internal-format, gfc-internal-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "无法将模å—文件‘%s’é‡å‘½å为‘%s’:%s"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, gcc-internal-format, gfc-internal-format
msgid "Can't delete temporary module file '%s': %s"
msgstr "无法删除临时模å—文件‘%s’:%s"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' already declared"
msgstr "符å·â€˜%s’已ç»è¢«å£°æ˜Žè¿‡"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "%2$L处引用的符å·â€˜%1$s’在模å—‘%3$s’中找ä¸åˆ°"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr "%2$L处引用的符å·â€˜%1$sâ€™åœ¨å†…å»ºæ¨¡å— ISO_C_BINDING 中找ä¸åˆ°"
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr "%2$C处对内建模å—‘%1$s’的使用与以å‰ä½¿ç”¨çš„éžå†…建模å—å字冲çª"
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr "%Lå¤„åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中对 NUMERIC_STORAGE_SIZE 命å常数的使用与选项 %s ä¸å…¼å®¹"
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr "%Cå¤„åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中对 NUMERIC_STORAGE_SIZE 命å常数的使用与选项 %s ä¸å…¼å®¹"
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr "%2$L处引用的符å·â€˜%1$sâ€™åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中找ä¸åˆ°"
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr "Fortran 2003:%C 处的 ISO_FORTRAN_ENV 内建模å—"
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Fortran 2003:%C处的 ISO_C_BINDING 模å—"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr "%2$C处无法找到å为‘%1$s’的内建模å—"
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "无法打开模å—文件‘%s’读å–,在%C处:%s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr "%2$C处对éžå†…建模å—‘%1$s’的使用与之å‰å¯¹å†…建模å—å字的使用相冲çª"
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr "%2$C处打开的文件的‘%1$s’并éžä¸€ä¸ª GFORTRAN 模å—文件"
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr "当为在%2$C处打开的文件‘%1$s’检查模å—版本时语法分æžé”™è¯¯"
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr "%4$C处打开的文件‘%3$s’模å—版本‘%1$s’错误(需è¦â€˜%2$s’)"
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "ä¸èƒ½ USE 我们正在构建的模å—ï¼"
@@ -40293,7 +40363,7 @@ msgstr "%C处 ELSE IF 语å¥åŽæœ‰éžé¢„期的垃圾字符"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "%C处的函数声明åŽæœ‰éžé¢„期的垃圾字符"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "%L处的 IF 分å¥éœ€è¦ä¸€ä¸ªæ ‡é‡ LOGICAL 表达å¼"
@@ -41632,7 +41702,7 @@ msgstr "在%2$L处由内建函数‘%1$s’声明的 INTRINSIC 在当å‰çš„æ ‡å‡
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr "%2$Lå¤„éž RECURSIVE 过程‘%1$s’å¯èƒ½é€’归地调用它自己。请将它声明为 RECURSIVE 或使用 -frecursive"
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "æ ‡å· %d(引用自 %L)从未被定义"
@@ -41782,7 +41852,7 @@ msgstr "%2$L处的函数‘%1$s’是 INTRINSIC,但与内建函数ä¸å…¼å®¹"
msgid "Unable to resolve the specific function '%s' at %L"
msgstr "ä¸èƒ½è§£æž %2$L处的函数‘%1$s’"
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "%2$L处的函数‘%1$s’没有éšå¼ç±»åž‹"
@@ -42166,182 +42236,182 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "%L处 NOPASS 类型é™å®šè¿‡ç¨‹è°ƒç”¨çš„基对象必须是标é‡"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr "%2$L处对 GENERIC‘%1$s’的调用没有找到匹é…特别的é™å®š"
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr "%2$L处的‘%1$s’应该是一个 SUBROUTINE"
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr "%2$L处的‘%1$s’应该是一个 FUNCTION"
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s (%L处)必须是一个标é‡"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, gcc-internal-format, gfc-internal-format
msgid "Deleted feature: %s at %L must be integer"
msgstr "已删除的特性:%s 在%L处必须是一个整数"
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s (%L处)必须是 INTEGER"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "%L处的 DO 循环中的步进表达å¼ä¸èƒ½ä¸ºé›¶"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr "%L处的 DO 循环会被执行零次"
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "%L处 FORALL 索引å必须是一个标é‡æ•´æ•°"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "%L处 FORALL 起始表达å¼å¿…须是一个标é‡æ•´æ•°"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "%L处 FORALL 结æŸè¡¨è¾¾å¼å¿…须是一个标é‡æ•´æ•°"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "%L处 FORALL 间隔表达å¼å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ %s"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "%L处 FORALL 间隔表达å¼ä¸èƒ½æ˜¯é›¶"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "FORALL 索引‘%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处的三元组规格说明中"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr "%L处的分é…对象必须是 ALLOCATABLE 或 POINTER"
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr "%3$L 处“%1$sâ€åˆ†å¥å¯¹è±¡â€œ%2$sâ€æœ‰ ALLOCATABLE 组件"
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr "%L处的æºè¡¨è¾¾å¼å¿…须是标é‡æˆ–者与%L处的分é…对象有相åŒçš„秩"
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr "%L处的æºè¡¨è¾¾å¼å’Œ%L处的分é…对象必须有相åŒçš„外形"
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr "%L处实体的类型与%L处的æºè¡¨è¾¾å¼ç±»åž‹ä¸å…¼å®¹"
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr "%L处的分é…对象和%L处的æºè¡¨è¾¾å¼åº”该有相åŒçš„ç§åˆ«ç±»åž‹å‚æ•°"
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr "%2$L处分é…具有 ABSTRACT 基类型的 %1$s 需è¦ä¸€ä¸ªç±»åž‹æŒ‡å®šæˆ– SOURCE="
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr "%L处的 ALLOCATE 语å¥ä¸­éœ€è¦æ•°ç»„规格说明"
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "%L 处的 ALLOCATE 语å¥ä¸­è¦æ±‚的数组规格说明"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr "%L处的 ALLOCATE 语å¥ä¸­æœ‰é”™è¯¯çš„数组规格"
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr "‘%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处其自身被分é…çš„ ALLOCATE 语å¥çš„数组规格说明中"
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "%L 处的 ALLOCATE 语å¥ä¸­è¦æ±‚的数组规格说明"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "%L 处的 ALLOCATE 语å¥ä¸­å的数组规格说明"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "%L处 stat å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ INTEGER å˜é‡"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr "%1$L处的统计å˜é‡ä¸èƒ½åœ¨åŒä¸€ä¸ª %3$s 语å¥ä¸­è¢« %2$s"
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr "%L处的 ERRMSG 没有 STAT 标记所以ä¸èµ·ä½œç”¨"
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "%L处错误信æ¯å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ CHARACTER å˜é‡"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr "%1$L处的错误信æ¯å˜é‡ä¸èƒ½åœ¨åŒä¸€ %3$s 语å¥ä¸­è¢« %2$s"
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr "%L处分é…的对象也出现在%L处"
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr "%2$L 处对象“%1$sâ€ä¸æ˜¯ä¸€ä¸ªå˜é‡"
@@ -42350,178 +42420,178 @@ msgstr "%2$L 处对象“%1$sâ€ä¸æ˜¯ä¸€ä¸ªå˜é‡"
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr "%L处的 CASE æ ‡å·ä¸Ž%L处的 CASE æ ‡å·é‡å "
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "%L处 CASE 语å¥ä¸­çš„表达å¼å¿…须具有 %s 类型"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "%L 处 CASE 语å¥ä¸­çš„表达å¼ç§åˆ«å¿…须为 %d"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "%L处 CASE 语å¥ä¸­çš„表达å¼å¿…须为标é‡"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr "%L处计算转移 GOTO 语å¥çš„选择表达å¼å¿…须是一个标é‡æ•´æ•°è¡¨è¾¾å¼"
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "%L处 SELECT 语å¥çš„实å‚ä¸èƒ½æ˜¯ %s"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "%L 处 CASE 语å¥ä¸­çš„逻辑范围是ä¸è¢«å…许的"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr "%L处的 DEFAULT CASE 为%L处的第二个 DEFAULT CASE 所跟éš"
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr "%L处 CASE 语å¥ä¸­çš„逻辑范围是ä¸è¢«å…许的"
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr "%L 处 CASE 语å¥ä¸­çš„常é‡é€»è¾‘值被é‡å¤äº†"
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr "%L处范围规格无法匹é…"
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr "%L处逻辑 SELECT CASE å—有多于两个的情况"
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr "%2$L 处的å字“%1$sâ€å·²ç»åœ¨ %4$L 处被用作 %3$s"
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "%C处 SELECT TYPE 语å¥ä¸­çš„选择å­åº”该是多æ€çš„"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr "%2$L处派生类型‘%1$s’必须是å¯æ‰©å±•çš„"
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr "%2$L处派生类型‘%1$s’必须是‘%3$s’的一个扩展"
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr "%L处 SELECT TYPE 语å¥ä¸­æœ‰åŒé‡çš„ CLASS IS å—"
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have POINTER components"
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr "%L处数æ®ä¼ è¾“元素ä¸èƒ½æœ‰ POINTER 组件"
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr "%L处数æ®ä¼ è¾“元素ä¸èƒ½æœ‰ POINTER 组件"
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Data transfer element at %L cannot have ALLOCATABLE components"
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr "%L处数æ®ä¼ è¾“元素ä¸èƒ½æœ‰ ALLOCATABLE 组件"
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr "%L处数æ®ä¼ è¾“元素ä¸èƒ½æœ‰ PRIVATE 组件"
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr "%L处数æ®ä¼ è¾“元素ä¸èƒ½æ˜¯å¯¹ä¸€ä¸ªå‡å®šå¤§å°æ•°ç»„的全引用"
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "%L处 stat å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ INTEGER å˜é‡"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "%L处 stat å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ INTEGER å˜é‡"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "%L处错误信æ¯å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ CHARACTER å˜é‡"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "%L处 stat å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ INTEGER å˜é‡"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "%L处 SELECT 语å¥ä¸­çš„实å‚必须为标é‡"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "%L处 ACOS çš„å‚数必须在 -1 å’Œ 1 之间"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr "%L处的语å¥å¯¹%L处的分支语å¥è€Œè¨€ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„分支目标语å¥"
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr "%L处的分支å¯èƒ½å¯¼è‡´æ— ç©·å¾ªçŽ¯"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr "%s 语å¥åœ¨%C处离开 OpenMP 结构å—"
@@ -42529,952 +42599,952 @@ msgstr "%s 语å¥åœ¨%C处离开 OpenMP 结构å—"
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr "%L处的标å·ä¸Ž%L处 GOTO 语å¥ä¸åœ¨ç›¸åŒçš„å—中"
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr "%L处的 WHERE 掩ç å¤–å½¢ä¸ä¸€è‡´"
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "%L处 WHERE 赋值目标外形ä¸ä¸€è‡´"
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr "%L处 WHERE ä¸­ç”¨æˆ·å®šä¹‰çš„éž ELEMENTAL 用户赋值"
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "%L处在 WHERE 内ä¸æ”¯æŒçš„语å¥"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "%Lå¤„å‘ FORALL 索引å˜é‡èµ‹å€¼"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr "%2$L处带索引‘%1$s’的 FORALL 没有被用在赋值的左侧,所以å¯èƒ½å¯¼è‡´å¯¹è¿™ä¸ªå¯¹è±¡çš„多个赋值"
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr "%L处外部 FORALL 构造已ç»æœ‰ä¸€ä¸ªåŒå的索引"
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "%L处的 WHERE/ELSEWHERE å­å¥éœ€è¦ä¸€ä¸ª LOGICAL 数组"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr "CHARACTER 表达å¼åœ¨%3$L处赋值时将被截断(%1$d/%2$d)"
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr "在 %L 处 impure å˜é‡è¢«èµ‹å€¼åˆ°ä¸€ä¸ª PURE 过程(12.6)中的 POINTER 组件的派生类型å˜é‡"
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr "%L处一个éžçº¯å˜é‡åœ¨ PURE 过程中被赋值给带有 POINTER 组件派生类型å˜é‡(12.6)"
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "ä¸èƒ½åœ¨%2$C处的 PURE 过程中读å–å˜é‡â€˜%1$s’"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr "%L处赋值中的å˜é‡ç±»åž‹ä¸èƒ½æ˜¯å¤šæ€çš„"
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "ASSIGNED GOTO 语å¥åœ¨%L处需è¦ä¸€ä¸ª INTEGER å˜é‡"
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "å˜é‡â€˜%s’在 %L 尚未指派目标标å·"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, gcc-internal-format, gfc-internal-format
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "%L处的替代 RETURN 语å¥éœ€è¦ä¸€ä¸ª SCALAR-INTEGER 返回é™å®šç¬¦"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr "%L处的 ASSIGN 语å¥éœ€è¦ä¸€ä¸ªé»˜è®¤æ ‡é‡ INTEGER å˜é‡"
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr "%L处的算术 IF 语å¥è¦æ±‚一个数字表达å¼"
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr "%L处 DO WHILE 循环的退出æ¡ä»¶å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ LOGICAL 表达å¼"
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "%L处的 FORMALL 掩ç å­å¥éœ€è¦ä¸€ä¸ª LOGICAL 表达å¼"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr "%3$L处公共å—‘%2$s’的绑定标å·â€˜%1$s’与 %5$L 处的全局实体‘%4$s’冲çª"
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr "%3$L处公共å—‘%2$s’的绑定标å·â€˜%1$s’与%6$L处公共å—‘%5$s’的绑定标记‘%4$s’ä¸åŒ¹é…"
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr "%3$L处公共å—‘%2$s’的绑定标å·â€˜%1$s’与 %5$L 处的全局实体‘%4$s’冲çª"
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr "%2$L处的绑定标å·â€˜%1$s’与 %4$L 处的全局实体‘%3$s’冲çª"
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr "%2$L处的接å£ä½“中的绑定标记‘%1$s’与%4$L处的全局实体‘%3$s’冲çª"
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr "%2$L处的æ†ç»‘æ ‡å·â€˜%1$s’与 %4$L 处的全局实体‘%3$s’冲çª"
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr "%L处的CHARACTER å˜é‡æœ‰è´Ÿçš„长度 %d,长度已ç»è¢«è®¾ä¸ºé›¶"
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, gcc-internal-format, gfc-internal-format
msgid "String length at %L is too large"
msgstr "%L处字符串太长"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "å¯åˆ†é…的数组‘%s’在%L处必须有延迟的外形"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr "%2$L处标é‡å¯¹è±¡â€˜%1$s’ä¸èƒ½ä¸º ALLOCATABLE"
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "数组指针‘%s’在%L处必须有延迟的外形"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "数组‘%s’在%L处ä¸èƒ½æœ‰å»¶è¿Ÿçš„外形"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr "%3$L处 CLASS å˜é‡â€˜%2$s’的类型‘%1$s’ä¸èƒ½è¢«æ‰©å±•"
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr "%2$L处的 CLASS å˜é‡â€˜%1$s’必须是哑元ã€å¯åˆ†é…的或者指针"
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr "‘%s’在%L处ä¸èƒ½æ˜¯ä¸»æœºç›¸å…³çš„,因为它被在%L处声明的一个ä¸å…¼å®¹çš„åŒå对象所阻ç¢"
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr "Fortran 2008:%2$L处模å—å˜é‡â€˜%1$s’éšå«ä½¿ç”¨äº† SAVE,因为默认åˆå§‹åŒ–有此需求"
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "%2$L处的模å—或主程åºæ•°ç»„‘%1$s’必须有常é‡å¤–å½¢"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, gcc-internal-format, gfc-internal-format
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr ""
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr "%L处å‡å®šå­—符长度的实体必须是个虚å‚或是个 PARAMETER"
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr "å˜é‡â€˜%s’在%L处上下文中字符长度必须为常é‡"
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' at %L must have constant character length in this context"
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr "å˜é‡â€˜%s’在%L处上下文中字符长度必须为常é‡"
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "å¯åˆ†é…的‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "外部‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "哑元‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "内建函数‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "函数结果‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "自动数组‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr "%2$L处有字符值的语å¥å‡½æ•°â€˜%1$s’必须有常é‡é•¿åº¦"
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003:%3$L处‘%1$s’是 PRIVATE 类型因而ä¸èƒ½æ˜¯ PUBLIC 类型‘%2$s’的虚å‚"
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr "Fortran 2003: %3$L处 PUBLIC 接å£â€˜%2$s’中的过程‘%1$s’有 PRIVATE 的虚å‚‘%4$s’"
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr "函数‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "外部对象‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, gcc-internal-format, gfc-internal-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "%2$L处 ELEMENTAL 函数‘%1$s’必须有一个标é‡è¿”回值"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "语å¥å‡½æ•°â€˜%s’在%L处ä¸å…许用作实å‚"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "CHARACTER(*) 函数‘%s’在%L处ä¸èƒ½ä¸ºæ•°ç»„值"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "指定CHARACTER(*) 函数‘%s’在%L处ä¸èƒ½ä¸ºæŒ‡é’ˆå€¼"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "CHARACTER(*) 函数‘%s’在%L处ä¸èƒ½ä¸ºçº¯å‡½æ•°"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr "CHARACTER(*) 函数‘%s’在%L处ä¸èƒ½æ˜¯é€’å½’çš„"
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "已过时的特性:%2$L处的 CHARACTER(*) 函数‘%1$s’"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 SAVE 属性冲çª"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 INTENT 属性冲çª"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "PROCEDURE 属性与在%2$L处‘%1$s’中的 RESULT 属性冲çª"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, gcc-internal-format, gfc-internal-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "EXTERNAL 属性与在%2$L处‘%1$s’中的 FUNCTION 属性冲çª"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr "%2$L处过程指针结果‘%1$s’缺少指针属性"
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr "%2$L处 FINAL 过程‘%1$s’ä¸æ˜¯ä¸€ä¸ª SUBROUTINE"
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "%L处的 FINAL 过程有且åªæœ‰ä¸€ä¸ªå‚æ•°"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "%L处 FINAL 过程的å‚数必须是‘%s’类型"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "%L处 FINAL 过程的å‚æ•°å¿…é¡»ä¸æ˜¯ POINTER"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "%L处 FINAL 过程的å‚æ•°å¿…é¡»ä¸æ˜¯ ALLOCATABLE"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "%L处 FINAL 过程的å‚æ•°å¿…é¡»ä¸æ˜¯ OPTIONAL"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, gcc-internal-format, gfc-internal-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "%L处 FINAL 过程的å‚æ•°å¿…é¡»ä¸æ˜¯ INTENT(OUT)"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "%L处的éžæ ‡é‡ FINAL 过程应当有å‡å®šå¤–形的å‚æ•°"
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr "%2$L处声明的 FINAL 过程‘%1$s’有与‘%4$s’相åŒçš„秩(%3$d)"
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr "仅为定义在%2$L处的派生类型‘%1$s’声明了数组 FINAL 过程,建议也定义一个标é‡è¿‡ç¨‹"
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, gcc-internal-format, gfc-internal-format
msgid "Finalization at %L is not yet implemented"
msgstr "%L处的终结化还未实现"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr "%4$L处‘%1$s’和‘%2$s’对 GENERIC‘%3$s’ä¸èƒ½æ˜¯æ··åˆçš„ FUNCTION/SUBROUTINE"
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr "%4$L处 GENERIC‘%3$s’的‘%1$s’和‘%2$s’有歧义"
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr "未定义的指定绑定‘%1$s’用作%3$L处的 GENERIC‘%2$s’的目标"
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr "%2$L处 GENERIC‘%1$s’必须定ä½ä¸€ä¸ªç‰¹å®šçš„绑定,‘%3$s’也是 GENERIC"
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr "%2$L处 GENERIC‘%1$s’无法覆盖åŒå的特定绑定"
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr "%L处类型é™å®šçš„æ“作数ä¸èƒ½æ˜¯ NOPASS"
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "%2$L处的‘%1$s’必须是一个模å—过程或带有显å¼æŽ¥å£çš„外部过程"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "%3$L处有 PASS(%2$s)的过程‘%1$s’没有å‚数‘%4$s’"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "%2$L处有 PASS 的过程‘%1$s’必须至少带一个å‚æ•°"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr "%2$L处éžå¤šæ€çš„传递对象虚å‚‘%1$s’"
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr " %4$L处的具有 PASS(%3$s) 的‘%2$s’的å‚数‘%1$s’必须具有派生类型‘%5$s’"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "%2$L处‘%1$s’的传递对象虚å‚必须是标é‡"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "%2$L处‘%1$s’的传递对象虚å‚ä¸èƒ½æ˜¯ ALLOCATABLE"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, gcc-internal-format, gfc-internal-format
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "%2$L处‘%1$s’的传递对象虚å‚ä¸èƒ½æ˜¯ POINTER"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "%2$L处过程‘%1$s’和‘%3$s’的组件é‡å"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr "%2$L处过程‘%1$s’和‘%3$s’的继承组件é‡å"
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr "%2$L处声明的派生类型‘%1$s’必须是 ABSTRACT,因为‘%3$s’是 DEFERRED 且没有被覆盖"
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr "%2$L处ä¸èƒ½æ‰©å±•çš„派生类型‘%1$s’ä¸èƒ½æ˜¯ ABSTRACT"
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr "%L处指针赋值时å‚æ•°ç§åˆ«ç±»åž‹ä¸åŒ"
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "数组指针‘%s’在%L处必须有延迟的外形"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr "%2$L 处的“%1$sâ€ä¸èƒ½æœ‰ VALUE 属性,因为它ä¸æ˜¯ä¸ªè™šå‚"
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr "%3$L处为过程指针组件‘%2$s’所使用的接å£â€˜%1$s’在之åŽçš„ PROCEDURE 语å¥ä¸­è¢«å£°æ˜Ž"
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "%3$L处过程指针组件‘%2$s’的接å£â€˜%1$s’必须是显å¼çš„"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "%3$L处带有 PASS(%2$s)的过程指针组件‘%1$s’没有å‚数‘%4$s’"
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "%2$L处的具有 PASS 的过程指针组件‘%1$s’必须至少有一个实å‚"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "%4$L处具有 PASS(%3$s) 的‘%2$s’的å‚数‘%1$s’必须有派生类型‘%5$s’"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "%4$L 处的具有 PASS(%3$s) 的‘%2$s’的å‚数‘%1$s’必须是标é‡"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "%4$L处带 PASS(%3$s) 的‘%2$s’的å‚数‘%1$s’ä¸èƒ½æœ‰ POINTER 属性"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, gcc-internal-format, gfc-internal-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "%4$L处带 PASS(%3$s) 的‘%2$s’的å‚数‘%1$s’ä¸èƒ½æ˜¯ ALLOCATABLE"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr "%3$L处‘%2$s’的组件‘%1$s’与一个继承的类型é™å®šè¿‡ç¨‹åŒå"
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr "%2$L处组件‘%1$s’的字符长度必须是一个常é‡è§„格表达å¼"
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr "Fortran 2003:%3$L处组åˆâ€˜%1$s’是一个 PRIVATE 类型,因此ä¸èƒ½æ˜¯ PUBLIC‘%2$s’的组åˆ"
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, gcc-internal-format, gfc-internal-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "%2$L处声明的有 SEQUENCE 类型的组件 %1$s 没有 SEQUENCE 属性"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr "%3$L处‘%2$s’的指针组件‘%1$s’类型尚未声明"
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "%2$L处具有 CLASS 的组件‘%1$s’必须是å¯åˆ†é…的或指针"
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr "%3$L处纯函数‘%2$s’的实å‚‘%1$s’必须是 INTENT(IN)"
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "ä¸å…许 %3$L 处 %2$s å字列表中å‡å®šå¤§å°çš„数组“%1$sâ€"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’ä¸èƒ½æœ‰å‡å®šå¤–å½¢"
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’必须有常外形"
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’必须有常外形"
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’ä¸èƒ½æœ‰ POINTER 组件"
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’必须有 ALLOCATABLE 组件"
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’必须有 ALLOCATABLE 组件"
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr "%3$L处 NAMELIST 对象‘%1$s’声明为 PRIVATE å› æ­¤ä¸èƒ½æ˜¯ PUBLIC å字列表‘%2$s’的æˆå‘˜"
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr "%3$L处 NAMELIST 对象‘%1$s’有使用相关的 PRIVATE 组件因此ä¸èƒ½æ˜¯ NAMELIST‘%2$s’的æˆå‘˜"
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr "%3$L处 NAMELIST 对象‘%1$s’有 PRIVATE 组件因此ä¸èƒ½æ˜¯ PUBLIC å字列表‘%2$s’的æˆå‘˜"
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 NAMELIST 属性冲çª"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, gcc-internal-format, gfc-internal-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "%2$L处的å‚数数组‘%1$s’ä¸èƒ½æ˜¯è‡ªåŠ¨çš„或有延迟的外形"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr "%2$L处éšå¼ç±»åž‹çš„ PARAMETER‘%1$s’与éšåŽçš„ IMPLICIT 类型ä¸åŒ¹é…"
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr "%L处 PARAMETER 中派生类型ä¸å…¼å®¹"
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "EXTERNAL 属性与在%2$L处‘%1$s’中的 FUNCTION 属性冲çª"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "PROCEDURE 属性与在 %2$L 处“%1$sâ€ä¸­çš„ SAVE 属性冲çª"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "%L处å‡å®šå¤§å°çš„数组必须是一个虚å‚"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "%L处å‡å®šå¤–形的数组必须是一个虚å‚"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "%L处的符å·ä¸æ˜¯ä¸€ä¸ª DUMMY å˜é‡"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr "%2$L 处的“%1$sâ€ä¸èƒ½æœ‰ VALUE 属性,因为它ä¸æ˜¯ä¸ªè™šå‚"
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, gcc-internal-format, gfc-internal-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "%2$L处带 VALUE 属性的字符哑元‘%1$s’必须具有常数长度"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr "%2$L处带 VALUE 属性与 C å¯äº’æ“作的字符哑元‘%1$s’长度必须为 1"
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr "%2$L处派生类型‘%1$s’的类型‘%3$s’尚未定义"
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr "%2$L处å˜é‡â€˜%1$s’ä¸èƒ½æ˜¯ BIND(C) 因为它既ä¸æ˜¯ä¸€ä¸ª COMMON å—也ä¸æ˜¯äºŽæ¨¡å—级作用域声明的"
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "Fortran 2003:%3$L处 PUBLIC %1$s‘%2$s’具有 PRIVATE 派生类型‘%4$s’"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr "%2$L处INTENT(OUT) 虚å‚‘%1$s’是 ASSUMED SIZE,所以ä¸èƒ½æœ‰ä¸€ä¸ªé»˜è®¤åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "%2$L处的‘%1$s’虚å‚ä¸èƒ½æ˜¯ INTENT(OUT)"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "函数结果‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "数组‘%s’在%L处ä¸èƒ½æœ‰å»¶è¿Ÿçš„外形"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "%C处å¯åˆ†é…的组件必须有延迟的外形"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "%L处的哑过程ä¸å…许出现在 ELEMENTAL 过程中"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr "%L处的线程ç§æœ‰å˜é‡æœªè¢«ä¿å­˜"
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr "%2$L处 BLOCK DATA 元素‘%1$s’必须在 COMMON 中"
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr "%2$L处 BLOCK DATA 元素‘%1$s’必在å‰ä¸€ä¸ªå£°æ˜Žä¸­æŒ‡å®š"
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "%2$L 处数æ®ä¼ è¾“元素ä¸èƒ½æœ‰ PRIVATE 组件"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr "%2$L处的 DATA 元素‘%1$s’是一个指针所以必须是一个完全的数组"
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr "%L处 DATA 语å¥ä¸­æœ‰éžå¸¸é‡æ•°ç»„段"
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr "%L处的 DATA 语å中å˜é‡æ¯”值多"
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr "%L处的 DATA 语å¥ä¸­å€¼æ¯”å˜é‡å¤š"
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "æ ‡å· %d 于 %L ç»å®šä¹‰ä½†æœªè¢«ä½¿ç”¨"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "æ ‡å· %d 于 %L ç»å®šä¹‰ä½†æ— æ³•è¢«ä½¿ç”¨"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr "%2$L处的派生类型å˜é‡â€˜%1$s’必须有 SEQUENCE 属性方能æˆä¸º EQUIVALENCE 对象"
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr "%2$L处的派生类型å˜é‡â€˜%1$s’必须没有 ALLOCATABLE 组件方能æˆä¸ºä¸€ä¸ª EQUIVALENCE 对象"
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr "%2$L处的默认åˆå§‹åŒ–的派生类型å˜é‡â€˜%1$s’ä¸èƒ½æˆä¸º EQUIVALENCE 对象,因为它在 COMMON 中有å˜é‡"
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr "%2$L处的带指针组件的派生类型å˜é‡â€˜%1$s’ä¸èƒ½æˆä¸ºä¸€ä¸ª EQUIVALENCE 对象"
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "%L处 EQUIVALENCE 语å¥è¯­æ³•é”™è¯¯"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr "%L处 EQUIVALENCE 集中的对象必须都带有或者都ä¸å¸¦æœ‰ PROTECTED 属性"
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr "%2$L处的公共å—æˆå‘˜â€˜%1$s’ä¸èƒ½åœ¨çº¯è¿‡ç¨‹â€˜%3$s’中æˆä¸ºä¸€ä¸ª EQUIVALENCE 对象"
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "%2$L处的有å常é‡â€˜%1$s’ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr "%2$L处有éžå¸¸é‡ç•Œé™çš„数组‘%1$s’ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr "%2$L处结构组件‘%1$s’ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "%L çš„å­å­—符串长度为零"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "Fortran 2003:%2$L处 PRIVATE 类型‘%3$s’的 PUBLIC 函数‘%1$s’"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "%2$L处的 ENTRY‘%1$s’没有éšå¼ç±»åž‹"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "%2$L处的用户è¿ç®—符‘%1$s’必须是一个 FUNCTION"
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr "%2$L处用户è¿ç®—符过程‘%1$s’ä¸èƒ½æœ‰å‡å®šå­—符长度"
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "%2$L处的用户è¿ç®—符‘%1$s’必须至少有一个实å‚"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr "%L处è¿ç®—符接å£çš„第一个å‚æ•°ä¸èƒ½æ˜¯å¯é€‰çš„"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "%L处è¿ç®—符接å£çš„第二个å‚æ•°ä¸èƒ½æ˜¯å¯é€‰çš„"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, gcc-internal-format, gfc-internal-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "%L处的è¿ç®—符接å£å¿…须有至多两个实å‚"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr "%2$L处 PURE 过程中包å«çš„过程‘%1$s’必须也是 PURE"
@@ -44084,17 +44154,17 @@ msgstr "%L 处 EQUIVALENCE 中ä¸ç­‰çš„åˆå§‹å€¼è®¾å®šé‡å "
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr "%L处的 BOZ 常数太大(%ld 对 %ld ä½)"
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr "%L处为å˜é‡â€˜%s’建立临时数组"
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, fuzzy, gcc-internal-format
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "å¯èƒ½çš„å‰ç«¯ç¼ºé™·ï¼šæ领数组大å°æ—¶æ²¡æœ‰æŒ‡é’ˆã€å¯åˆ†é…属性或ä¸å¸¦å¯åˆ†é…组件的派生类型。"
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "走过错误的表达å¼ç±»åž‹(%d)"
@@ -44351,7 +44421,7 @@ msgstr "real kind=8 在指定了 -fdefault-real-8 选项时ä¸å¯ç”¨"
msgid "Array element size too big at %C"
msgstr "数组元素太大"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code():错误的语å¥ä»£ç "
@@ -44654,7 +44724,7 @@ msgstr "ä¸èƒ½ç¡®å®šä¾èµ–项跟踪的目标å"
msgid "internal error - invalid Utf8 name"
msgstr "内部错误 - 无效的 utf8 å"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "ç­¾å字符串末尾有垃圾字符"
@@ -45931,6 +46001,10 @@ msgstr "为ä¸å­˜åœ¨çš„方法%qE创建选择å­"
#~ msgid "Perform structure layout optimizations based"
#~ msgstr "进行基于å–样的结构布局优化"
+#, fuzzy
+#~ msgid "floating point constant truncated to integer"
+#~ msgstr "大定点常é‡éšå¼æˆªæ–­ä¸ºå®šç‚¹ç±»åž‹"
+
#~ msgid "arguments 1 and 2 have different types"
#~ msgstr "å®žå‚ 1 å’Œ 2 具有ä¸åŒçš„类型"
@@ -46055,6 +46129,9 @@ msgstr "为ä¸å­˜åœ¨çš„方法%qE创建选择å­"
#~ msgid "See --target-help for supported MCUs"
#~ msgstr "请使用 --target-help 查看支æŒçš„ MCU"
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs似乎是一个拼写错的中断处ç†è€…"
+
#~ msgid "unknown ABI (%s) for %sabi=%s %s"
#~ msgstr "ABI (%s)未知,%sabi=%s %s"
@@ -46457,9 +46534,6 @@ msgstr "为ä¸å­˜åœ¨çš„方法%qE创建选择å­"
#~ msgid "mno-cygwin and mno-win32 are not compatible"
#~ msgstr "mno-cygwin å’Œ mno-win32 互ä¸å…¼å®¹"
-#~ msgid "consider using `-pg' instead of `-p' with gprof(1) "
-#~ msgstr "与 gprof(1) 一起使用时请考虑使用‘-pg’以代替‘-p’"
-
#~ msgid "`-mno-intel-syntax' is deprecated. Use `-masm=att' instead."
#~ msgstr "ä¸å»ºè®®ä½¿ç”¨â€˜-mno-intel-syntax’。请改用‘-masm=att’。"
@@ -46610,9 +46684,6 @@ msgstr "为ä¸å­˜åœ¨çš„方法%qE创建选择å­"
#~ msgid "gimple bytecode streams do not support the target attribute"
#~ msgstr "gimple 字节ç æµä¸æ”¯æŒç›®æ ‡å±žæ€§"
-#~ msgid "-flto and -fwhopr are mutually exclusive"
-#~ msgstr "-flto and -fwhopr 互斥"
-
#~ msgid "invalid option argument %qs"
#~ msgstr "无效的选项å‚æ•°%qs"
diff --git a/gcc/po/zh_TW.po b/gcc/po/zh_TW.po
index 9d0f4129bc5..00b7299ce7f 100644
--- a/gcc/po/zh_TW.po
+++ b/gcc/po/zh_TW.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gcc 4.1.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2012-03-18 14:00+0000\n"
+"POT-Creation-Date: 2012-06-13 21:42+0000\n"
"PO-Revision-Date: 2006-03-28 09:19+0800\n"
"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424
+#: c-decl.c:4713 c-typeck.c:5961 toplev.c:1013 c-family/c-pretty-print.c:424
#: cp/error.c:656 cp/error.c:938
msgid "<anonymous>"
msgstr "<anonymous>"
@@ -29,7 +29,7 @@ msgstr "<anonymous>"
msgid "({anonymous})"
msgstr "<anonymous>"
-#: c-parser.c:946 cp/parser.c:22252
+#: c-parser.c:946 cp/parser.c:22268
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of line"
@@ -37,11 +37,11 @@ msgstr "éžé æœŸçš„模組çµæŸ"
#: c-parser.c:1796 c-parser.c:1810 c-parser.c:4116 c-parser.c:4569
#: c-parser.c:4830 c-parser.c:4988 c-parser.c:5005 c-parser.c:5170
-#: c-parser.c:7303 c-parser.c:7338 c-parser.c:7369 c-parser.c:7416
-#: c-parser.c:7597 c-parser.c:8364 c-parser.c:8434 c-parser.c:8477
-#: c-parser.c:9755 c-parser.c:9770 c-parser.c:9779 c-parser.c:9924
-#: c-parser.c:9963 c-parser.c:2500 c-parser.c:7590 cp/parser.c:21775
-#: cp/parser.c:22198
+#: c-parser.c:7308 c-parser.c:7343 c-parser.c:7374 c-parser.c:7421
+#: c-parser.c:7602 c-parser.c:8369 c-parser.c:8439 c-parser.c:8482
+#: c-parser.c:9760 c-parser.c:9775 c-parser.c:9784 c-parser.c:9929
+#: c-parser.c:9968 c-parser.c:2500 c-parser.c:7595 cp/parser.c:21791
+#: cp/parser.c:22214
#, gcc-internal-format
msgid "expected %<;%>"
msgstr "éœ€è¦ %<;%>"
@@ -49,18 +49,18 @@ msgstr "éœ€è¦ %<;%>"
#: c-parser.c:1840 c-parser.c:2438 c-parser.c:2729 c-parser.c:2794
#: c-parser.c:3407 c-parser.c:3519 c-parser.c:3524 c-parser.c:4613
#: c-parser.c:4746 c-parser.c:4910 c-parser.c:5106 c-parser.c:5232
-#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6683
-#: c-parser.c:6698 c-parser.c:6722 c-parser.c:7888 c-parser.c:7960
-#: c-parser.c:8786 c-parser.c:8807 c-parser.c:8857 c-parser.c:9010
-#: c-parser.c:9089 c-parser.c:9173 c-parser.c:9887 c-parser.c:10711
-#: c-parser.c:8930 c-parser.c:8955 cp/parser.c:22201
+#: c-parser.c:6381 c-parser.c:6419 c-parser.c:6544 c-parser.c:6688
+#: c-parser.c:6703 c-parser.c:6727 c-parser.c:7893 c-parser.c:7965
+#: c-parser.c:8791 c-parser.c:8812 c-parser.c:8862 c-parser.c:9015
+#: c-parser.c:9094 c-parser.c:9178 c-parser.c:9892 c-parser.c:10716
+#: c-parser.c:8935 c-parser.c:8960 cp/parser.c:22217
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<(%>"
msgstr "éœ€è¦ %<{%>"
#: c-parser.c:1845 c-parser.c:6389 c-parser.c:6427 c-parser.c:6555
-#: cp/parser.c:21773 cp/parser.c:22216
+#: cp/parser.c:21789 cp/parser.c:22232
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<,%>"
@@ -72,20 +72,20 @@ msgstr "éœ€è¦ %<{%>"
#: c-parser.c:4616 c-parser.c:4750 c-parser.c:5029 c-parser.c:5164
#: c-parser.c:5244 c-parser.c:5795 c-parser.c:5993 c-parser.c:6067
#: c-parser.c:6148 c-parser.c:6326 c-parser.c:6344 c-parser.c:6365
-#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6691
-#: c-parser.c:6714 c-parser.c:6735 c-parser.c:6874 c-parser.c:7146
-#: c-parser.c:7682 c-parser.c:7703 c-parser.c:7911 c-parser.c:7964
-#: c-parser.c:8336 c-parser.c:8789 c-parser.c:8810 c-parser.c:8888
-#: c-parser.c:9017 c-parser.c:9154 c-parser.c:9237 c-parser.c:9815
-#: c-parser.c:9932 c-parser.c:9974 c-parser.c:10720 cp/parser.c:22246
+#: c-parser.c:6398 c-parser.c:6499 c-parser.c:6568 c-parser.c:6696
+#: c-parser.c:6719 c-parser.c:6740 c-parser.c:6879 c-parser.c:7151
+#: c-parser.c:7687 c-parser.c:7708 c-parser.c:7916 c-parser.c:7969
+#: c-parser.c:8341 c-parser.c:8794 c-parser.c:8815 c-parser.c:8893
+#: c-parser.c:9022 c-parser.c:9159 c-parser.c:9242 c-parser.c:9820
+#: c-parser.c:9937 c-parser.c:9979 c-parser.c:10725 cp/parser.c:22262
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<)%>"
msgstr "éœ€è¦ %<{%>"
#: c-parser.c:3095 c-parser.c:3904 c-parser.c:3938 c-parser.c:5224
-#: c-parser.c:6491 c-parser.c:6755 c-parser.c:6861 c-parser.c:10623
-#: c-parser.c:10625 cp/parser.c:22210
+#: c-parser.c:6491 c-parser.c:6760 c-parser.c:6866 c-parser.c:10628
+#: c-parser.c:10630 cp/parser.c:22226
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<]%>"
@@ -97,27 +97,27 @@ msgstr "éœ€è¦ %<{%>"
msgid "expected %<;%>, %<,%> or %<)%>"
msgstr "éœ€è¦ %<,%>ã€%<;%> 或 %<}%>"
-#: c-parser.c:3767 c-parser.c:9771 cp/parser.c:22204 cp/parser.c:24021
+#: c-parser.c:3767 c-parser.c:9776 cp/parser.c:22220 cp/parser.c:24037
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<}%>"
msgstr "éœ€è¦ %<{%>"
-#: c-parser.c:4057 c-parser.c:7931 c-parser.c:10217 c-parser.c:2318
-#: c-parser.c:2521 c-parser.c:7485 cp/parser.c:14416 cp/parser.c:22207
+#: c-parser.c:4057 c-parser.c:7936 c-parser.c:10222 c-parser.c:2318
+#: c-parser.c:2521 c-parser.c:7490 cp/parser.c:14425 cp/parser.c:22223
#, gcc-internal-format
msgid "expected %<{%>"
msgstr "éœ€è¦ %<{%>"
#: c-parser.c:4276 c-parser.c:4285 c-parser.c:5128 c-parser.c:5469
-#: c-parser.c:7696 c-parser.c:8071 c-parser.c:8128 c-parser.c:9143
-#: cp/parser.c:22240 cp/parser.c:23242
+#: c-parser.c:7701 c-parser.c:8076 c-parser.c:8133 c-parser.c:9148
+#: cp/parser.c:22256 cp/parser.c:23258
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<:%>"
msgstr "éœ€è¦ %<{%>"
-#: c-parser.c:4824 cp/parser.c:22134
+#: c-parser.c:4824 cp/parser.c:22150
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<while%>"
@@ -129,44 +129,44 @@ msgstr "éœ€è¦ %<{%>"
msgid "expected %<.%>"
msgstr "éœ€è¦ %<{%>"
-#: c-parser.c:7156 c-parser.c:7188 c-parser.c:7428 cp/parser.c:23805
-#: cp/parser.c:23879
+#: c-parser.c:7161 c-parser.c:7193 c-parser.c:7433 cp/parser.c:23821
+#: cp/parser.c:23895
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@end%>"
msgstr "éœ€è¦ %<{%>"
-#: c-parser.c:7845 cp/parser.c:22225
+#: c-parser.c:7850 cp/parser.c:22241
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<>%>"
msgstr "éœ€è¦ %<{%>"
-#: c-parser.c:9241 cp/parser.c:22249
+#: c-parser.c:9246 cp/parser.c:22265
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<,%> or %<)%>"
msgstr "éœ€è¦ %<,%> 或 %<;%>"
-#: c-parser.c:9494 c-parser.c:9525 c-parser.c:9761 c-parser.c:9913
-#: c-parser.c:3961 cp/parser.c:22228
+#: c-parser.c:9499 c-parser.c:9530 c-parser.c:9766 c-parser.c:9918
+#: c-parser.c:3961 cp/parser.c:22244
#, gcc-internal-format
msgid "expected %<=%>"
msgstr "éœ€è¦ %<=%>"
-#: c-parser.c:10274 c-parser.c:10264 cp/parser.c:26658
+#: c-parser.c:10279 c-parser.c:10269 cp/parser.c:26674
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<}%>"
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr "éœ€è¦ %<,%> 或 %<}%>"
-#: c-parser.c:10611 cp/parser.c:22213
+#: c-parser.c:10616 cp/parser.c:22229
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<[%>"
msgstr "éœ€è¦ %<{%>"
-#: c-typeck.c:6587
+#: c-typeck.c:6604
#, fuzzy
#| msgid "<anonymous>"
msgid "(anonymous)"
@@ -346,12 +346,12 @@ msgstr "「%%lã€é‹ç®—å…ƒä¸æ˜¯ä¸€å€‹æ¨™ç±¤"
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689
+#: final.c:3615 config/i386/i386.c:13086 config/pdp11/pdp11.c:1689
#, c-format
msgid "floating constant misused"
msgstr "錯誤地使用了浮點常數"
-#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730
+#: final.c:3673 config/i386/i386.c:13184 config/pdp11/pdp11.c:1730
#, c-format
msgid "invalid expression as operand"
msgstr "無效的é‹ç®—å¼åšç‚ºé‹ç®—å…ƒ"
@@ -1265,19 +1265,19 @@ msgstr " 包å«æ–¼ %s:%d\n"
msgid " inlined from %qs"
msgstr "å° %qs 而言無效的複數"
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1907
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1908
msgid "assuming that the loop is not infinite"
msgstr "å‡å®šå¾ªç’°æœ‰çª®"
-#: loop-iv.c:2967 tree-ssa-loop-niter.c:1908
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1909
msgid "cannot optimize possibly infinite loops"
msgstr "無法最佳化å¯èƒ½ç„¡çª®çš„循環"
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1912
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1913
msgid "assuming that the loop counter does not overflow"
msgstr "å‡å®šå¾ªç’°è¨ˆæ•¸ä¸æœƒæº¢å‡º"
-#: loop-iv.c:2976 tree-ssa-loop-niter.c:1913
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1914
msgid "cannot optimize loop, the loop counter may overflow"
msgstr "無法最佳化循環,循環變數å¯èƒ½æº¢å‡º"
@@ -1476,16 +1476,16 @@ msgid "this is the insn:"
msgstr "這是指令:"
#. It's the compiler's fault.
-#: reload1.c:6088
+#: reload1.c:6102
msgid "could not find a spill register"
msgstr "找ä¸åˆ°å¯æ¨å‡ºçš„暫存器"
#. It's the compiler's fault.
-#: reload1.c:7898
+#: reload1.c:7912
msgid "VOIDmode on an output"
msgstr "輸出有 VOIDmode"
-#: reload1.c:8658
+#: reload1.c:8672
#, fuzzy
#| msgid "Failure trying to reload:"
msgid "failure trying to reload:"
@@ -2689,119 +2689,119 @@ msgstr ""
msgid "<unknown>"
msgstr "ä¸æ˜Žä¾†æº"
-#: config/alpha/alpha.c:5022
+#: config/alpha/alpha.c:5042
#, c-format
msgid "invalid %%H value"
msgstr "無效 %%H 值"
-#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423
+#: config/alpha/alpha.c:5063 config/bfin/bfin.c:1423
#, c-format
msgid "invalid %%J value"
msgstr "無效 %%J 值"
-#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291
+#: config/alpha/alpha.c:5093 config/ia64/ia64.c:5295
#, c-format
msgid "invalid %%r value"
msgstr "無效 %%r 值"
-#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245
-#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350
+#: config/alpha/alpha.c:5103 config/ia64/ia64.c:5249
+#: config/rs6000/rs6000.c:15018 config/xtensa/xtensa.c:2350
#, c-format
msgid "invalid %%R value"
msgstr "無效 %%R 值"
-#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938
+#: config/alpha/alpha.c:5109 config/rs6000/rs6000.c:14937
#: config/xtensa/xtensa.c:2317
#, c-format
msgid "invalid %%N value"
msgstr "無效 %%N 值"
-#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966
+#: config/alpha/alpha.c:5117 config/rs6000/rs6000.c:14965
#, c-format
msgid "invalid %%P value"
msgstr "無效 %%P 值"
-#: config/alpha/alpha.c:5105
+#: config/alpha/alpha.c:5125
#, c-format
msgid "invalid %%h value"
msgstr "無效 %%h 值"
-#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343
+#: config/alpha/alpha.c:5133 config/xtensa/xtensa.c:2343
#, c-format
msgid "invalid %%L value"
msgstr "無效 %%L 值"
-#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920
+#: config/alpha/alpha.c:5172 config/rs6000/rs6000.c:14919
#, c-format
msgid "invalid %%m value"
msgstr "無效 %%m 值"
-#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928
+#: config/alpha/alpha.c:5180 config/rs6000/rs6000.c:14927
#, c-format
msgid "invalid %%M value"
msgstr "無效 %%M 值"
-#: config/alpha/alpha.c:5204
+#: config/alpha/alpha.c:5224
#, c-format
msgid "invalid %%U value"
msgstr "無效 %%U 值"
-#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223
-#: config/rs6000/rs6000.c:15027
+#: config/alpha/alpha.c:5232 config/alpha/alpha.c:5243
+#: config/rs6000/rs6000.c:15026
#, c-format
msgid "invalid %%s value"
msgstr "無效 %%s 值"
-#: config/alpha/alpha.c:5234
+#: config/alpha/alpha.c:5254
#, c-format
msgid "invalid %%C value"
msgstr "無效 %%C 值"
-#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785
+#: config/alpha/alpha.c:5291 config/rs6000/rs6000.c:14784
#, c-format
msgid "invalid %%E value"
msgstr "無效 %%E 值"
-#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344
+#: config/alpha/alpha.c:5316 config/alpha/alpha.c:5364
#, c-format
msgid "unknown relocation unspec"
msgstr "ä¸æ˜Žçš„ä¸å¯é æœŸé‡å®šä½"
-#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537
-#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744
+#: config/alpha/alpha.c:5325 config/cr16/cr16.c:1537
+#: config/rs6000/rs6000.c:15375 config/spu/spu.c:1744
#, c-format
msgid "invalid %%xn code"
msgstr "無效的 %%xn 程å¼ç¢¼"
-#: config/arm/arm.c:17113 config/arm/arm.c:17131
+#: config/arm/arm.c:17116 config/arm/arm.c:17134
#, c-format
msgid "predicated Thumb instruction"
msgstr "é æ¸¬åˆ°çš„ Thumb 指令"
-#: config/arm/arm.c:17119
+#: config/arm/arm.c:17122
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr "在æ¢ä»¶åºåˆ—中é æ¸¬åˆ°çš„指令"
-#: config/arm/arm.c:17250
+#: config/arm/arm.c:17253
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "Unsupported operand for code '%c'"
msgstr "程å¼ç¢¼ã€Œ%cã€çš„é‹ç®—元無效"
-#: config/arm/arm.c:17298
+#: config/arm/arm.c:17301
#, fuzzy, c-format
#| msgid "invalid %%f operand"
msgid "invalid shift operand"
msgstr "無效的 %%f é‹ç®—å…ƒ"
-#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387
-#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446
-#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518
-#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567
-#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600
-#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753
-#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790
+#: config/arm/arm.c:17358 config/arm/arm.c:17380 config/arm/arm.c:17390
+#: config/arm/arm.c:17400 config/arm/arm.c:17410 config/arm/arm.c:17449
+#: config/arm/arm.c:17467 config/arm/arm.c:17502 config/arm/arm.c:17521
+#: config/arm/arm.c:17536 config/arm/arm.c:17563 config/arm/arm.c:17570
+#: config/arm/arm.c:17588 config/arm/arm.c:17595 config/arm/arm.c:17603
+#: config/arm/arm.c:17624 config/arm/arm.c:17631 config/arm/arm.c:17756
+#: config/arm/arm.c:17763 config/arm/arm.c:17786 config/arm/arm.c:17793
#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450
#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473
#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487
@@ -2809,90 +2809,90 @@ msgstr "無效的 %%f é‹ç®—å…ƒ"
msgid "invalid operand for code '%c'"
msgstr "程å¼ç¢¼ã€Œ%cã€çš„é‹ç®—元無效"
-#: config/arm/arm.c:17459
+#: config/arm/arm.c:17462
#, fuzzy, c-format
#| msgid "instruction never exectued"
msgid "instruction never executed"
msgstr "指令永é ä¸è¢«åŸ·è¡Œ"
-#: config/arm/arm.c:17802
+#: config/arm/arm.c:17805
#, c-format
msgid "missing operand"
msgstr "缺少é‹ç®—å…ƒ"
-#: config/arm/arm.c:20404
+#: config/arm/arm.c:20407
#, fuzzy
#| msgid "function returns an aggregate"
msgid "function parameters cannot have __fp16 type"
msgstr "函å¼å›žå‚³ä¸€å€‹èšåˆ"
-#: config/arm/arm.c:20414
+#: config/arm/arm.c:20417
#, fuzzy
#| msgid "function does not return string type"
msgid "functions cannot return __fp16 type"
msgstr "函å¼ä¸å›žå‚³å­—串類型"
-#: config/avr/avr.c:1695
+#: config/avr/avr.c:1806
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1848
+#: config/avr/avr.c:1959
#, fuzzy
#| msgid "output operand %d must use %<&%> constraint"
msgid "operands to %T/%t must be reg + const_int:"
msgstr "輸出é‹ç®—å…ƒ %d 必須使用 %<&%> ç´„æŸ"
-#: config/avr/avr.c:1886 config/avr/avr.c:1941
+#: config/avr/avr.c:1997 config/avr/avr.c:2052
#, fuzzy
#| msgid "bad address, not (reg+disp):"
msgid "bad address, not an I/O address:"
msgstr "ä½å€éŒ¯èª¤ï¼Œä¸æ˜¯(reg+disp):"
-#: config/avr/avr.c:1895
+#: config/avr/avr.c:2006
#, fuzzy
#| msgid "address offset not a constant"
msgid "bad address, not a constant:"
msgstr "ä½å€å移é‡ä¸æ˜¯ä¸€å€‹å¸¸æ•¸"
-#: config/avr/avr.c:1913
+#: config/avr/avr.c:2024
msgid "bad address, not (reg+disp):"
msgstr "ä½å€éŒ¯èª¤ï¼Œä¸æ˜¯(reg+disp):"
-#: config/avr/avr.c:1920
+#: config/avr/avr.c:2031
msgid "bad address, not post_inc or pre_dec:"
msgstr "錯誤的ä½å€ï¼Œä¸æ˜¯ post_inc 或 pre_dec:"
-#: config/avr/avr.c:1931
+#: config/avr/avr.c:2042
msgid "internal compiler error. Bad address:"
msgstr "編譯器內部錯誤。錯誤的ä½å€ï¼š"
-#: config/avr/avr.c:1961
+#: config/avr/avr.c:2072
msgid "internal compiler error. Unknown mode:"
msgstr "編譯器內部錯誤。ä¸æ˜Žçš„模å¼ï¼š"
-#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780
+#: config/avr/avr.c:2871 config/avr/avr.c:3444 config/avr/avr.c:3730
msgid "invalid insn:"
msgstr "無效指令:"
-#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069
-#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348
-#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809
-#: config/avr/avr.c:3900 config/avr/avr.c:4022
+#: config/avr/avr.c:2900 config/avr/avr.c:2975 config/avr/avr.c:3018
+#: config/avr/avr.c:3037 config/avr/avr.c:3128 config/avr/avr.c:3297
+#: config/avr/avr.c:3507 config/avr/avr.c:3623 config/avr/avr.c:3759
+#: config/avr/avr.c:3850 config/avr/avr.c:3972
msgid "incorrect insn:"
msgstr "錯誤指令:"
-#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419
-#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956
-#: config/avr/avr.c:4077
+#: config/avr/avr.c:3052 config/avr/avr.c:3213 config/avr/avr.c:3368
+#: config/avr/avr.c:3576 config/avr/avr.c:3669 config/avr/avr.c:3906
+#: config/avr/avr.c:4027
msgid "unknown move insn:"
msgstr "無效的 move 指令:"
-#: config/avr/avr.c:4491
+#: config/avr/avr.c:4441
msgid "bad shift insn:"
msgstr "錯誤的 shift 指令"
-#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495
+#: config/avr/avr.c:4549 config/avr/avr.c:5030 config/avr/avr.c:5445
msgid "internal compiler error. Incorrect shift:"
msgstr "編譯器內部錯誤。ä¸æ­£ç¢ºçš„移ä½é‡ï¼š"
@@ -2908,8 +2908,8 @@ msgstr "無效的 const_double é‹ç®—å…ƒ"
#: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131
#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977
-#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041
-#: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
+#: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1917 tree-vrp.c:6046
+#: cp/typeck.c:5347 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282
#: lto/lto-object.c:339 lto/lto-object.c:363
#, gcc-internal-format, gfc-internal-format
msgid "%s"
@@ -2987,23 +2987,23 @@ msgstr "éžé æœŸçš„é‹ç®—å…ƒ"
msgid "unrecognized address"
msgstr "無法辨識的ä½å€"
-#: config/cris/cris.c:2434
+#: config/cris/cris.c:2435
msgid "unrecognized supposed constant"
msgstr "é æœŸçš„常數無法識別"
-#: config/cris/cris.c:2811 config/cris/cris.c:2875
+#: config/cris/cris.c:2812 config/cris/cris.c:2876
msgid "unexpected side-effects in address"
msgstr "ä½å€ä¸­æœ‰éžé æœŸçš„副作用"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3710
+#: config/cris/cris.c:3711
#, fuzzy
#| msgid "Unidentifiable call op"
msgid "unidentifiable call op"
msgstr "無法辨識的 call 作業"
-#: config/cris/cris.c:3762
+#: config/cris/cris.c:3763
#, c-format
msgid "PIC register isn't set up"
msgstr "尚未設定好 PIC 暫存器"
@@ -3011,7 +3011,7 @@ msgstr "尚未設定好 PIC 暫存器"
#. Unknown flag.
#. Undocumented flag.
#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217
-#: config/sparc/sparc.c:8293
+#: config/sparc/sparc.c:8308
#, c-format
msgid "invalid operand output code"
msgstr "無效的é‹ç®—元輸出程å¼ç¢¼"
@@ -3140,80 +3140,80 @@ msgstr "錯誤的 output_move_double é‹ç®—å…ƒ"
msgid "bad output_condmove_single operand"
msgstr "錯誤的 output_condmove_single é‹ç®—å…ƒ"
-#: config/i386/i386.c:13125
+#: config/i386/i386.c:13178
#, c-format
msgid "invalid UNSPEC as operand"
msgstr "無效的 UNSPEC åšç‚ºé‹ç®—å…ƒ"
-#: config/i386/i386.c:13748
+#: config/i386/i386.c:13801
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-#: config/i386/i386.c:13839 config/i386/i386.c:13914
+#: config/i386/i386.c:13892 config/i386/i386.c:13967
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand size for operand code '%c'"
msgstr "程å¼ç¢¼ã€Œ%cã€çš„é‹ç®—元無效"
-#: config/i386/i386.c:13909
+#: config/i386/i386.c:13962
#, fuzzy, c-format
#| msgid "invalid operand for code '%c'"
msgid "invalid operand type used with operand code '%c'"
msgstr "程å¼ç¢¼ã€Œ%cã€çš„é‹ç®—元無效"
-#: config/i386/i386.c:13990 config/i386/i386.c:14030
+#: config/i386/i386.c:14043 config/i386/i386.c:14083
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr "é‹ç®—元既ä¸æ˜¯ä¸€å€‹å¸¸æ•¸ä¹Ÿä¸æ˜¯ä¸€å€‹æ¢ä»¶ç¢¼ï¼Œç„¡æ•ˆçš„é‹ç®—元程å¼ç¢¼ã€Œcã€"
-#: config/i386/i386.c:14056
+#: config/i386/i386.c:14109
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr "é‹ç®—元既ä¸æ˜¯ä¸€å€‹å¸¸æ•¸ä¹Ÿä¸æ˜¯ä¸€å€‹æ¢ä»¶ç¢¼ï¼Œç„¡æ•ˆçš„é‹ç®—元程å¼ç¢¼ã€Œcã€"
-#: config/i386/i386.c:14066
+#: config/i386/i386.c:14119
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr "é‹ç®—元既ä¸æ˜¯ä¸€å€‹å¸¸æ•¸ä¹Ÿä¸æ˜¯ä¸€å€‹æ¢ä»¶ç¢¼ï¼Œç„¡æ•ˆçš„é‹ç®—元程å¼ç¢¼ã€Œcã€"
-#: config/i386/i386.c:14084
+#: config/i386/i386.c:14137
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "é‹ç®—元既ä¸æ˜¯ä¸€å€‹å¸¸æ•¸ä¹Ÿä¸æ˜¯ä¸€å€‹æ¢ä»¶ç¢¼ï¼Œç„¡æ•ˆçš„é‹ç®—元程å¼ç¢¼ã€Œcã€"
-#: config/i386/i386.c:14094
+#: config/i386/i386.c:14147
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr "é‹ç®—元既ä¸æ˜¯ä¸€å€‹å¸¸æ•¸ä¹Ÿä¸æ˜¯ä¸€å€‹æ¢ä»¶ç¢¼ï¼Œç„¡æ•ˆçš„é‹ç®—元程å¼ç¢¼ã€Œcã€"
-#: config/i386/i386.c:14109
+#: config/i386/i386.c:14162
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
msgstr "é‹ç®—元既ä¸æ˜¯ä¸€å€‹å¸¸æ•¸ä¹Ÿä¸æ˜¯ä¸€å€‹æ¢ä»¶ç¢¼ï¼Œç„¡æ•ˆçš„é‹ç®—元程å¼ç¢¼ã€Œcã€"
-#: config/i386/i386.c:14204
+#: config/i386/i386.c:14257
#, fuzzy, c-format
#| msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgid "operand is not a condition code, invalid operand code 'Y'"
msgstr "é‹ç®—元既ä¸æ˜¯ä¸€å€‹å¸¸æ•¸ä¹Ÿä¸æ˜¯ä¸€å€‹æ¢ä»¶ç¢¼ï¼Œç„¡æ•ˆçš„é‹ç®—元程å¼ç¢¼ã€Œcã€"
-#: config/i386/i386.c:14234
+#: config/i386/i386.c:14287
#, c-format
msgid "invalid operand code '%c'"
msgstr "無效的é‹ç®—元程å¼ç¢¼ã€Œ%cã€"
-#: config/i386/i386.c:14289
+#: config/i386/i386.c:14342
#, c-format
msgid "invalid constraints for operand"
msgstr "é‹ç®—元的約æŸç„¡æ•ˆ"
-#: config/i386/i386.c:23303
+#: config/i386/i386.c:23356
msgid "unknown insn mode"
msgstr "ä¸æ˜Žçš„指令模å¼"
@@ -3244,36 +3244,36 @@ msgstr "環境變數 DJGPP åƒç…§çš„檔案「%sã€ä¸å­˜åœ¨"
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "環境變數 DJGPP åƒç…§çš„檔案「%sã€å·²æ壞"
-#: config/ia64/ia64.c:5173
+#: config/ia64/ia64.c:5177
#, fuzzy, c-format
#| msgid "invalid %%j code"
msgid "invalid %%G mode"
msgstr "無效 %%j 程å¼ç¢¼"
-#: config/ia64/ia64.c:5343
+#: config/ia64/ia64.c:5347
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand:ä¸æ˜Žç¨‹å¼ç¢¼"
-#: config/ia64/ia64.c:10912
+#: config/ia64/ia64.c:10916
msgid "invalid conversion from %<__fpreg%>"
msgstr "從 %<__fpreg%> 的轉æ›ç„¡æ•ˆ"
-#: config/ia64/ia64.c:10915
+#: config/ia64/ia64.c:10919
msgid "invalid conversion to %<__fpreg%>"
msgstr "å‘ %<__fpreg%> 的轉æ›ç„¡æ•ˆ"
-#: config/ia64/ia64.c:10928 config/ia64/ia64.c:10939
+#: config/ia64/ia64.c:10932 config/ia64/ia64.c:10943
msgid "invalid operation on %<__fpreg%>"
msgstr "å° %<__fpreg%> 的作業無效"
#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131
-#: config/tilepro/tilepro.c:4702
+#: config/tilepro/tilepro.c:4696
#, c-format
msgid "invalid %%P operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14955
#, c-format
msgid "invalid %%p value"
msgstr "無效的 %%p 值"
@@ -3356,7 +3356,7 @@ msgid "post-increment address is not a register"
msgstr "後自增ä½å€ä¸æ˜¯ä¸€å€‹æš«å­˜å™¨"
#: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335
-#: config/rs6000/rs6000.c:24548
+#: config/rs6000/rs6000.c:24534
msgid "bad address"
msgstr "錯誤ä½å€"
@@ -3542,89 +3542,89 @@ msgstr ""
msgid "bad move"
msgstr "錯誤的測試"
-#: config/rs6000/rs6000.c:14766
+#: config/rs6000/rs6000.c:14765
#, fuzzy, c-format
#| msgid "invalid %%H value"
msgid "invalid %%c value"
msgstr "無效 %%H 值"
-#: config/rs6000/rs6000.c:14794
+#: config/rs6000/rs6000.c:14793
#, c-format
msgid "invalid %%f value"
msgstr "無效 %%f 值"
-#: config/rs6000/rs6000.c:14803
+#: config/rs6000/rs6000.c:14802
#, c-format
msgid "invalid %%F value"
msgstr "無效 %%F 值"
-#: config/rs6000/rs6000.c:14812
+#: config/rs6000/rs6000.c:14811
#, c-format
msgid "invalid %%G value"
msgstr "無效 %%G 值"
-#: config/rs6000/rs6000.c:14847
+#: config/rs6000/rs6000.c:14846
#, c-format
msgid "invalid %%j code"
msgstr "無效 %%j 程å¼ç¢¼"
-#: config/rs6000/rs6000.c:14857
+#: config/rs6000/rs6000.c:14856
#, c-format
msgid "invalid %%J code"
msgstr "無效 %%J 程å¼ç¢¼"
-#: config/rs6000/rs6000.c:14867
+#: config/rs6000/rs6000.c:14866
#, c-format
msgid "invalid %%k value"
msgstr "無效 %%k 值"
-#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336
+#: config/rs6000/rs6000.c:14881 config/xtensa/xtensa.c:2336
#, c-format
msgid "invalid %%K value"
msgstr "無效 %%K 值"
-#: config/rs6000/rs6000.c:14946
+#: config/rs6000/rs6000.c:14945
#, c-format
msgid "invalid %%O value"
msgstr "無效 %%O 值"
-#: config/rs6000/rs6000.c:14993
+#: config/rs6000/rs6000.c:14992
#, c-format
msgid "invalid %%q value"
msgstr "無效 %%q 值"
-#: config/rs6000/rs6000.c:15037
+#: config/rs6000/rs6000.c:15036
#, c-format
msgid "invalid %%S value"
msgstr "無效 %%S 值"
-#: config/rs6000/rs6000.c:15077
+#: config/rs6000/rs6000.c:15076
#, c-format
msgid "invalid %%T value"
msgstr "無效 %%T 值"
-#: config/rs6000/rs6000.c:15087
+#: config/rs6000/rs6000.c:15086
#, c-format
msgid "invalid %%u value"
msgstr "無效 %%u 值"
-#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306
+#: config/rs6000/rs6000.c:15095 config/xtensa/xtensa.c:2306
#, c-format
msgid "invalid %%v value"
msgstr "無效 %%v 值"
-#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357
+#: config/rs6000/rs6000.c:15177 config/xtensa/xtensa.c:2357
#, c-format
msgid "invalid %%x value"
msgstr "無效的 %%x 值"
-#: config/rs6000/rs6000.c:15341
+#: config/rs6000/rs6000.c:15323
#, fuzzy, c-format
#| msgid "invalid punctuation %qc in constraint"
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr "ç´„æŸä¸­å‡ºç¾ç„¡æ•ˆçš„標點 %qc"
-#: config/rs6000/rs6000.c:26958
+#: config/rs6000/rs6000.c:26944
msgid "AltiVec argument passed to unprototyped function"
msgstr "å‚³éž AltiVec 引數給無原型的函å¼"
@@ -3733,60 +3733,60 @@ msgstr "%%R çš„é‹ç®—元無效"
msgid "invalid operand to %%S"
msgstr "%%S çš„é‹ç®—元無效"
-#: config/sh/sh.c:9142
+#: config/sh/sh.c:9154
msgid "created and used with different architectures / ABIs"
msgstr "建立和使用時使用了ä¸åŒçš„架構/ABI"
-#: config/sh/sh.c:9144
+#: config/sh/sh.c:9156
msgid "created and used with different ABIs"
msgstr "建立和使用時使用了ä¸åŒçš„ ABI"
-#: config/sh/sh.c:9146
+#: config/sh/sh.c:9158
msgid "created and used with different endianness"
msgstr "建立和使用時使用了ä¸åŒçš„高/低ä½ä½å…ƒçµ„在å‰è¨­å®š"
-#: config/sparc/sparc.c:8117 config/sparc/sparc.c:8123
+#: config/sparc/sparc.c:8132 config/sparc/sparc.c:8138
#, c-format
msgid "invalid %%Y operand"
msgstr "無效的 %%Y é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8193
+#: config/sparc/sparc.c:8208
#, c-format
msgid "invalid %%A operand"
msgstr "無效的 %%A é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8203
+#: config/sparc/sparc.c:8218
#, c-format
msgid "invalid %%B operand"
msgstr "無效的 %%B é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934
-#: config/tilepro/tilepro.c:4505
+#: config/sparc/sparc.c:8247 config/tilegx/tilegx.c:4934
+#: config/tilepro/tilepro.c:4499
#, c-format
msgid "invalid %%C operand"
msgstr "無效的 %%C é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967
+#: config/sparc/sparc.c:8264 config/tilegx/tilegx.c:4967
#, c-format
msgid "invalid %%D operand"
msgstr "無效的 %%D é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8265
+#: config/sparc/sparc.c:8280
#, c-format
msgid "invalid %%f operand"
msgstr "無效的 %%f é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8279
+#: config/sparc/sparc.c:8294
#, c-format
msgid "invalid %%s operand"
msgstr "無效的 %%s é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8333
+#: config/sparc/sparc.c:8348
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr "long long 常數ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„ç«‹å³æ•¸å€¼é‹ç®—å…ƒ"
-#: config/sparc/sparc.c:8336
+#: config/sparc/sparc.c:8351
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr "浮點常數ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„ç«‹å³æ•¸å€¼é‹ç®—å…ƒ"
@@ -3811,7 +3811,7 @@ msgstr "「oã€é‹ç®—å…ƒä¸æ˜¯ä¸€å€‹å¸¸æ•¸"
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand:ä¸æ˜Žç¨‹å¼ç¢¼"
-#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490
+#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4484
#, c-format
msgid "invalid %%c operand"
msgstr "無效的 %%c é‹ç®—å…ƒ"
@@ -3827,25 +3827,25 @@ msgstr "無效的 %%d é‹ç®—å…ƒ"
msgid "invalid %%H specifier"
msgstr "無效 %%j 程å¼ç¢¼"
-#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519
+#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4513
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%h operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583
+#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4577
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%I operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597
+#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4591
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%i operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620
+#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4614
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%j operand"
@@ -3857,7 +3857,7 @@ msgstr "無效的 %%P é‹ç®—å…ƒ"
msgid "invalid %%%c operand"
msgstr "無效的 %%c é‹ç®—å…ƒ"
-#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734
+#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4728
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%N operand"
@@ -3869,42 +3869,42 @@ msgstr "無效的 %%P é‹ç®—å…ƒ"
msgid "invalid operand for 'r' specifier"
msgstr "「bã€ä¿®é£¾ç¬¦çš„é‹ç®—元無效"
-#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816
+#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4810
#, c-format
msgid "unable to print out operand yet; code == %d (%c)"
msgstr ""
-#: config/tilepro/tilepro.c:4555
+#: config/tilepro/tilepro.c:4549
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%H operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilepro/tilepro.c:4659
+#: config/tilepro/tilepro.c:4653
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%L operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilepro/tilepro.c:4719
+#: config/tilepro/tilepro.c:4713
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%M operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilepro/tilepro.c:4762
+#: config/tilepro/tilepro.c:4756
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilepro/tilepro.c:4769
+#: config/tilepro/tilepro.c:4763
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%t operand '"
msgstr "無效的 %%P é‹ç®—å…ƒ"
-#: config/tilepro/tilepro.c:4790
+#: config/tilepro/tilepro.c:4784
#, fuzzy, c-format
#| msgid "invalid %%P operand"
msgid "invalid %%r operand"
@@ -3973,11 +3973,11 @@ msgstr "ä½å€ä¸­ç„¡æš«å­˜å™¨"
msgid "address offset not a constant"
msgstr "ä½å€å移é‡ä¸æ˜¯ä¸€å€‹å¸¸æ•¸"
-#: cp/call.c:8284
+#: cp/call.c:8299
msgid "candidate 1:"
msgstr "å‚™é¸ 1:"
-#: cp/call.c:8285
+#: cp/call.c:8300
msgid "candidate 2:"
msgstr "å‚™é¸ 2:"
@@ -4235,7 +4235,7 @@ msgstr ""
msgid "candidates are:"
msgstr "å‚™é¸ç‚ºï¼š"
-#: cp/pt.c:17805 cp/call.c:3289
+#: cp/pt.c:17843 cp/call.c:3289
#, fuzzy, gcc-internal-format
#| msgid "candidate 1:"
msgid "candidate is:"
@@ -4296,50 +4296,50 @@ msgstr ""
msgid "source type is not polymorphic"
msgstr ""
-#: cp/typeck.c:5103 c-typeck.c:3571
+#: cp/typeck.c:5116 c-typeck.c:3583
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr "å–®ä½å…ƒæ¸›çš„é‹ç®—元類型錯誤"
-#: cp/typeck.c:5104 c-typeck.c:3558
+#: cp/typeck.c:5117 c-typeck.c:3570
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr "å–®ä½å…ƒåŠ çš„é‹ç®—元類型錯誤"
-#: cp/typeck.c:5127 c-typeck.c:3597
+#: cp/typeck.c:5140 c-typeck.c:3609
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr "按ä½å–å的引數類型錯誤"
-#: cp/typeck.c:5134 c-typeck.c:3605
+#: cp/typeck.c:5147 c-typeck.c:3617
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr "ä¸èƒ½å°è©²é¡žåž‹çš„引數求絕å°å€¼"
-#: cp/typeck.c:5142 c-typeck.c:3617
+#: cp/typeck.c:5155 c-typeck.c:3629
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr "ä¸èƒ½å°è©²é¡žåž‹çš„引數求共軛"
-#: cp/typeck.c:5153
+#: cp/typeck.c:5166
#, fuzzy
#| msgid "wrong type argument to unary plus"
msgid "in argument to unary !"
msgstr "å–®ä½å…ƒåŠ çš„é‹ç®—元類型錯誤"
-#: cp/typeck.c:5202
+#: cp/typeck.c:5215
msgid "no pre-increment operator for type"
msgstr ""
-#: cp/typeck.c:5204
+#: cp/typeck.c:5217
msgid "no post-increment operator for type"
msgstr ""
-#: cp/typeck.c:5206
+#: cp/typeck.c:5219
msgid "no pre-decrement operator for type"
msgstr ""
-#: cp/typeck.c:5208
+#: cp/typeck.c:5221
msgid "no post-decrement operator for type"
msgstr ""
@@ -4609,7 +4609,7 @@ msgstr "錯誤的é‹ç®—å­"
msgid "Bad type in constant expression"
msgstr "常數é‹ç®—å¼ä¸­é¡žåž‹éŒ¯èª¤"
-#: fortran/module.c:6087
+#: fortran/module.c:6102
msgid "Unexpected end of module"
msgstr "éžé æœŸçš„模組çµæŸ"
@@ -4637,11 +4637,11 @@ msgstr "å€å¡Š IF"
msgid "implied END DO"
msgstr "暗示的 END DO"
-#: fortran/parse.c:1475 fortran/resolve.c:9396
+#: fortran/parse.c:1475 fortran/resolve.c:9395
msgid "assignment"
msgstr "賦值"
-#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438
+#: fortran/parse.c:1478 fortran/resolve.c:9434 fortran/resolve.c:9437
msgid "pointer assignment"
msgstr "指標賦值"
@@ -4731,59 +4731,59 @@ msgstr "使用者é‹ç®—å­ã€Œ%sã€(ä½æ–¼ %%L)çš„é‹ç®—元為 %s/%s"
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr "%L å’Œ %L 處的é‹ç®—元秩ä¸ä¸€è‡´"
-#: fortran/resolve.c:6402
+#: fortran/resolve.c:6401
msgid "Loop variable"
msgstr ""
-#: fortran/resolve.c:6406
+#: fortran/resolve.c:6405
#, fuzzy
#| msgid "Perform variable tracking"
msgid "iterator variable"
msgstr "進行變數追蹤"
-#: fortran/resolve.c:6411
+#: fortran/resolve.c:6410
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Start expression in DO loop"
msgstr "步進敘述於 %L 處的 DO 迴圈中ä¸å¯ç‚ºé›¶"
-#: fortran/resolve.c:6415
+#: fortran/resolve.c:6414
#, fuzzy
#| msgid "invalid expression as operand"
msgid "End expression in DO loop"
msgstr "無效的é‹ç®—å¼åšç‚ºé‹ç®—å…ƒ"
-#: fortran/resolve.c:6419
+#: fortran/resolve.c:6418
#, fuzzy
#| msgid "Step expression in DO loop at %L cannot be zero"
msgid "Step expression in DO loop"
msgstr "步進敘述於 %L 處的 DO 迴圈中ä¸å¯ç‚ºé›¶"
-#: fortran/resolve.c:6675 fortran/resolve.c:6678
+#: fortran/resolve.c:6674 fortran/resolve.c:6677
#, fuzzy
#| msgid "DEALLOCATE "
msgid "DEALLOCATE object"
msgstr "DEALLOCATE "
-#: fortran/resolve.c:7020 fortran/resolve.c:7022
+#: fortran/resolve.c:7019 fortran/resolve.c:7021
#, fuzzy
#| msgid "ALLOCATE "
msgid "ALLOCATE object"
msgstr "ALLOCATE "
-#: fortran/resolve.c:7202 fortran/resolve.c:8435
+#: fortran/resolve.c:7201 fortran/resolve.c:8434
msgid "STAT variable"
msgstr ""
-#: fortran/resolve.c:7245 fortran/resolve.c:8447
+#: fortran/resolve.c:7244 fortran/resolve.c:8446
msgid "ERRMSG variable"
msgstr ""
-#: fortran/resolve.c:8313
+#: fortran/resolve.c:8312
msgid "item in READ"
msgstr ""
-#: fortran/resolve.c:8459
+#: fortran/resolve.c:8458
msgid "ACQUIRED_LOCK variable"
msgstr ""
@@ -4792,7 +4792,7 @@ msgstr ""
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
-#: fortran/trans-array.c:5065
+#: fortran/trans-array.c:5070
msgid "Integer overflow when calculating the amount of memory to allocate"
msgstr ""
@@ -4869,7 +4869,7 @@ msgstr "ä¸æ­£ç¢ºçš„函å¼å›žå‚³å€¼"
msgid "Memory allocation failed"
msgstr "gimplification 失敗"
-#: fortran/trans.c:650 fortran/trans.c:1164
+#: fortran/trans.c:650 fortran/trans.c:1161
msgid "Allocation would exceed memory limit"
msgstr ""
@@ -5076,7 +5076,7 @@ msgstr "ä¸èƒ½åŒæ™‚指定 -C å’Œ -o"
#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46
#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96
-#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772
+#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:771
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
@@ -5137,6 +5137,10 @@ msgstr "shared å’Œ mdll 互ä¸ç›¸å®¹"
msgid "static is not supported on TPF-OS"
msgstr "TPF-OS ä¸æ”¯æ´ static"
+#: config/rs6000/freebsd64.h:160 config/rs6000/freebsd64.h:172
+msgid "consider using `-pg' instead of `-p' with gprof(1)"
+msgstr ""
+
#: config/mips/mips.h:1169
msgid "may not use both -EB and -EL"
msgstr "ä¸èƒ½åŒæ™‚使用 -EB å’Œ -EL"
@@ -5169,12 +5173,6 @@ msgstr "-mbig-endian å’Œ -mlittle-endian ä¸èƒ½ä¸€èµ·ä½¿ç”¨"
msgid "no processor type specified for linking"
msgstr "spec 檔案沒有å°é€£çµçš„設定"
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-#, fuzzy
-#| msgid "GCC does not support -C or -CC without -E"
-msgid "gfortran does not support -E without -cpp"
-msgstr "GCC åªå…許 -E 與 -C 或 -CC åˆç”¨"
-
#: config/mcore/mcore.h:54
msgid "the m210 does not have little endian support"
msgstr "m210 ä¸æ”¯æ´ä½Žä½ä½å…ƒçµ„在å‰"
@@ -5227,6 +5225,12 @@ msgstr ""
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "-shared é¸é …ç›®å‰åœ¨ VAX ELF 下ä¸å—支æ´"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+#, fuzzy
+#| msgid "GCC does not support -C or -CC without -E"
+msgid "gfortran does not support -E without -cpp"
+msgstr "GCC åªå…許 -E 與 -C 或 -CC åˆç”¨"
+
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr "-fjni å’Œ -femit-class-files 互ä¸ç›¸å®¹"
@@ -8612,6 +8616,10 @@ msgstr ""
msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
msgstr ""
+#: config/avr/avr.opt:80
+msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU."
+msgstr ""
+
#: config/avr/avr-tables.opt:24
msgid "Known MCU names:"
msgstr ""
@@ -11235,18 +11243,30 @@ msgid "Do not predefine system-specific and GCC-specific macros"
msgstr "ä¸é å®šç¾©ç³»çµ±æˆ– GCC 特定的巨集"
#: go/lang.opt:42
-msgid "-fgo-dump-<type>\tDump Go frontend internal information"
+msgid "Add explicit checks for division by zero"
msgstr ""
#: go/lang.opt:46
-msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgid "Add explicit checks for division overflow in INT_MIN / -1"
msgstr ""
#: go/lang.opt:50
-msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgid "-fgo-dump-<type>\tDump Go frontend internal information"
msgstr ""
#: go/lang.opt:54
+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend"
+msgstr ""
+
+#: go/lang.opt:58
+msgid "-fgo-pkgpath=<string>\tSet Go package path"
+msgstr ""
+
+#: go/lang.opt:62
+msgid "-fgo-prefix=<string>\tSet package-specific prefix for exported Go names"
+msgstr ""
+
+#: go/lang.opt:66
#, fuzzy
#| msgid "function declared %<noreturn%> has a %<return%> statement"
msgid "Functions which return values must end with return statements"
@@ -12948,306 +12968,317 @@ msgstr "啟用基於 ID 的共享函å¼åº«"
msgid "Create a position independent executable"
msgstr "為å¯åŸ·è¡Œæª”案盡å¯èƒ½ç”¢ç”Ÿèˆ‡ä½ç½®ç„¡é—œçš„程å¼ç¢¼(大模å¼)"
-#: go/gofrontend/expressions.cc:917
+#: go/gofrontend/expressions.cc:853
#, fuzzy
#| msgid "invalid use of %qD"
msgid "invalid use of type"
msgstr "錯誤地使用了 %qD"
-#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996
-#, fuzzy
-#| msgid "floating point constant not a valid immediate operand"
-msgid "floating point constant truncated to integer"
-msgstr "浮點常數ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„ç«‹å³æ•¸å€¼é‹ç®—å…ƒ"
-
-#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946
-#: go/gofrontend/expressions.cc:2962
+#: go/gofrontend/expressions.cc:2533 go/gofrontend/expressions.cc:2599
+#: go/gofrontend/expressions.cc:2615
#, fuzzy
#| msgid "inlined_to pointer refers to itself"
msgid "constant refers to itself"
msgstr "inlined_to pointer åƒç…§è‡ªèº«"
-#: go/gofrontend/expressions.cc:4557
+#: go/gofrontend/expressions.cc:3900
#, fuzzy
#| msgid "Expected expression type"
msgid "expected numeric type"
msgstr "需è¦é‹ç®—å¼é¡žåž‹"
-#: go/gofrontend/expressions.cc:4564
+#: go/gofrontend/expressions.cc:3905
+#, fuzzy
+#| msgid "Expected expression type"
+msgid "expected boolean type"
+msgstr "需è¦é‹ç®—å¼é¡žåž‹"
+
+#: go/gofrontend/expressions.cc:3911
#, fuzzy
#| msgid "Expected integer string"
msgid "expected integer or boolean type"
msgstr "需è¦æ•´æ•¸å­—串"
-#: go/gofrontend/expressions.cc:4571
+#: go/gofrontend/expressions.cc:3918
#, fuzzy
#| msgid "invalid operands to binary %s"
msgid "invalid operand for unary %<&%>"
msgstr "二進ä½é‹ç®—å­ %s é‹ç®—元無效"
-#: go/gofrontend/expressions.cc:4580
+#: go/gofrontend/expressions.cc:3927
#, fuzzy
#| msgid "Expected integer"
msgid "expected pointer"
msgstr "需è¦æ•´æ•¸"
-#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567
-#: go/gofrontend/expressions.cc:6585
+#: go/gofrontend/expressions.cc:5588 go/gofrontend/expressions.cc:5606
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in binary expression"
msgstr "回傳時類型ä¸ç›¸å®¹"
-#: go/gofrontend/expressions.cc:6599
+#: go/gofrontend/expressions.cc:5620
#, fuzzy
#| msgid "size of array %qs has non-integer type"
msgid "shift of non-integer operand"
msgstr "陣列 %qs 的大å°çš„é¡žåž‹ä¸æ˜¯æ•´æ•¸"
-#: go/gofrontend/expressions.cc:6604
+#: go/gofrontend/expressions.cc:5625 go/gofrontend/expressions.cc:5633
#, fuzzy
#| msgid "switch quantity not an integer"
msgid "shift count not unsigned integer"
msgstr "switch 敘述中的值ä¸æ˜¯ä¸€å€‹æ•´æ•¸"
-#: go/gofrontend/expressions.cc:6614
+#: go/gofrontend/expressions.cc:5638
#, fuzzy
#| msgid "negative insn length"
msgid "negative shift count"
msgstr "指令長度為負"
-#: go/gofrontend/expressions.cc:7322
+#: go/gofrontend/expressions.cc:6431
#, fuzzy
#| msgid "called object %qE is not a function"
msgid "object is not a method"
msgstr "被呼å«çš„物件 %qE ä¸æ˜¯ä¸€å€‹å‡½å¼"
-#: go/gofrontend/expressions.cc:7331
+#: go/gofrontend/expressions.cc:6440
#, fuzzy
#| msgid "argument of type %qT does not match %qT"
msgid "method type does not match object type"
msgstr "引數類型為 %qT,與 %qT ä¸åŒ¹é…"
-#: go/gofrontend/expressions.cc:7611
+#: go/gofrontend/expressions.cc:6714
#, fuzzy
#| msgid "invalid argument to builtin function"
msgid "invalid use of %<...%> with builtin function"
msgstr "給內建函å¼çš„引數無效"
-#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730
-#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502
-#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690
-#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924
-#: go/gofrontend/expressions.cc:9943
+#: go/gofrontend/expressions.cc:6748 go/gofrontend/expressions.cc:6805
+#: go/gofrontend/expressions.cc:6850 go/gofrontend/expressions.cc:7539
+#: go/gofrontend/expressions.cc:7686 go/gofrontend/expressions.cc:7729
+#: go/gofrontend/expressions.cc:7785 go/gofrontend/expressions.cc:8967
+#: go/gofrontend/expressions.cc:8986
#, fuzzy
#| msgid "no arguments"
msgid "not enough arguments"
msgstr "沒有åƒæ•¸"
-#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732
-#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630
-#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695
-#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638
-#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950
+#: go/gofrontend/expressions.cc:6750 go/gofrontend/expressions.cc:6807
+#: go/gofrontend/expressions.cc:7544 go/gofrontend/expressions.cc:7669
+#: go/gofrontend/expressions.cc:7691 go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:7787 go/gofrontend/expressions.cc:8662
+#: go/gofrontend/expressions.cc:8972 go/gofrontend/expressions.cc:8993
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments"
msgstr "æ供給格å¼å­—串的引數太多"
-#: go/gofrontend/expressions.cc:7734
+#: go/gofrontend/expressions.cc:6809
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument 1 must be a map"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: go/gofrontend/expressions.cc:7801
+#: go/gofrontend/expressions.cc:6876
#, fuzzy
#| msgid "invalid type argument"
msgid "invalid type for make function"
msgstr "無效的類型åƒæ•¸"
-#: go/gofrontend/expressions.cc:7815
+#: go/gofrontend/expressions.cc:6890
msgid "length required when allocating a slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7829
+#: go/gofrontend/expressions.cc:6904
#, fuzzy
#| msgid "bad insn for 'A'"
msgid "bad size for make"
msgstr "「Aã€çš„指令錯誤"
-#: go/gofrontend/expressions.cc:7844
+#: go/gofrontend/expressions.cc:6919
msgid "bad capacity when making slice"
msgstr ""
-#: go/gofrontend/expressions.cc:7855
+#: go/gofrontend/expressions.cc:6930
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many arguments to make"
msgstr "æ供給格å¼å­—串的引數太多"
-#: go/gofrontend/expressions.cc:8549
+#: go/gofrontend/expressions.cc:7588
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument must be array or slice or channel"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: go/gofrontend/expressions.cc:8559
+#: go/gofrontend/expressions.cc:7598
msgid "argument must be string or array or slice or map or channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8605
+#: go/gofrontend/expressions.cc:7644
#, fuzzy
#| msgid "invalid argument to builtin function"
msgid "unsupported argument type to builtin function"
msgstr "給內建函å¼çš„引數無效"
-#: go/gofrontend/expressions.cc:8616
+#: go/gofrontend/expressions.cc:7655
#, fuzzy
#| msgid "Argument dim at %L must be scalar"
msgid "argument must be channel"
msgstr "%L 引數維數必須是標é‡"
-#: go/gofrontend/expressions.cc:8618
+#: go/gofrontend/expressions.cc:7657
msgid "cannot close receive-only channel"
msgstr ""
-#: go/gofrontend/expressions.cc:8638
+#: go/gofrontend/expressions.cc:7677
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "argument must be a field reference"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: go/gofrontend/expressions.cc:8665
+#: go/gofrontend/expressions.cc:7704
#, fuzzy
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "left argument must be a slice"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: go/gofrontend/expressions.cc:8673
+#: go/gofrontend/expressions.cc:7712
msgid "element types must be the same"
msgstr ""
-#: go/gofrontend/expressions.cc:8678
+#: go/gofrontend/expressions.cc:7717
#, fuzzy
#| msgid "first argument of %q+D should be %<int%>"
msgid "first argument must be []byte"
msgstr "%q+D 的第一個åƒæ•¸çš„類型應該是 %<int%>"
-#: go/gofrontend/expressions.cc:8681
+#: go/gofrontend/expressions.cc:7720
#, fuzzy
#| msgid "tls_model argument not a string"
msgid "second argument must be slice or string"
msgstr "tls_model 的引數ä¸æ˜¯ä¸€å€‹å­—串"
-#: go/gofrontend/expressions.cc:8722
+#: go/gofrontend/expressions.cc:7761
#, fuzzy
#| msgid "%Jparameter %u has void type"
msgid "argument 2 has invalid type"
msgstr "%Jåƒæ•¸ %u 類型為 void"
-#: go/gofrontend/expressions.cc:8738
+#: go/gofrontend/expressions.cc:7777
#, fuzzy
#| msgid "%Jparameter %u has incomplete type"
msgid "argument must have complex type"
msgstr "%Jåƒæ•¸ %u é¡žåž‹ä¸å®Œå…¨"
-#: go/gofrontend/expressions.cc:8756
+#: go/gofrontend/expressions.cc:7795
#, fuzzy
#| msgid "cleanup argument not an identifier"
msgid "complex arguments must have identical types"
msgstr "cleanup 引數ä¸æ˜¯ä¸€å€‹è­˜åˆ¥ç¢¼"
-#: go/gofrontend/expressions.cc:8758
+#: go/gofrontend/expressions.cc:7797
#, fuzzy
#| msgid "Do not use hardware floating point"
msgid "complex arguments must have floating-point type"
msgstr "ä¸ä½¿ç”¨ç¡¬é«”浮點單元"
-#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318
+#: go/gofrontend/expressions.cc:8666
+#, fuzzy
+#| msgid "invalid use of %<this%> at top level"
+msgid "invalid use of %<...%> with non-slice"
+msgstr "在頂層使用 %<this%> 無效"
+
+#: go/gofrontend/expressions.cc:8920 go/gofrontend/expressions.cc:9361
#, fuzzy
#| msgid "unexpected node"
msgid "expected function"
msgstr "與é æœŸä¸ç¬¦çš„çµé»ž"
-#: go/gofrontend/expressions.cc:9906
+#: go/gofrontend/expressions.cc:8939
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible type for receiver"
msgstr "回傳時類型ä¸ç›¸å®¹"
-#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341
+#: go/gofrontend/expressions.cc:8957
+#, fuzzy
+#| msgid "invalid use of %<this%> in non-member function"
+msgid "invalid use of %<...%> calling non-variadic function"
+msgstr "在éžæˆå“¡å‡½å¼ä¸­ä½¿ç”¨ %<this%> 無效"
+
+#: go/gofrontend/expressions.cc:9370 go/gofrontend/expressions.cc:9384
#, fuzzy
#| msgid "number of arguments doesn%'t match prototype"
msgid "number of results does not match number of values"
msgstr "引數數目與原型ä¸ç¬¦"
-#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065
+#: go/gofrontend/expressions.cc:9688 go/gofrontend/expressions.cc:10110
#, fuzzy
#| msgid "Cray pointer at %C must be an integer."
msgid "index must be integer"
msgstr "%C 處 Cray 指標必須是一個整數。"
-#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069
+#: go/gofrontend/expressions.cc:9694 go/gofrontend/expressions.cc:10114
#, fuzzy
#| msgid "Cray pointer at %C must be an integer."
msgid "slice end must be integer"
msgstr "%C 處 Cray 指標必須是一個整數。"
-#: go/gofrontend/expressions.cc:10706
+#: go/gofrontend/expressions.cc:9751
msgid "slice of unaddressable value"
msgstr ""
-#: go/gofrontend/expressions.cc:11297
+#: go/gofrontend/expressions.cc:10344
#, fuzzy
#| msgid "incompatible types in assignment"
msgid "incompatible type for map index"
msgstr "賦值時類型ä¸ç›¸å®¹"
-#: go/gofrontend/expressions.cc:11645
+#: go/gofrontend/expressions.cc:10692
msgid "expected interface or pointer to interface"
msgstr ""
-#: go/gofrontend/expressions.cc:12182
+#: go/gofrontend/expressions.cc:11260
#, fuzzy
#| msgid "too many arguments for format"
msgid "too many expressions for struct"
msgstr "æ供給格å¼å­—串的引數太多"
-#: go/gofrontend/expressions.cc:12195
+#: go/gofrontend/expressions.cc:11273
#, fuzzy
#| msgid "too few arguments for format"
msgid "too few expressions for struct"
msgstr "æ ¼å¼å­—串引數太少"
-#: go/gofrontend/expressions.cc:12475
-msgid "too many elements in composite literal"
-msgstr ""
-
-#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752
+#: go/gofrontend/expressions.cc:12933 go/gofrontend/expressions.cc:12941
#, fuzzy
#| msgid "invalid use of void expression"
msgid "invalid unsafe.Pointer conversion"
msgstr "å° void é‹ç®—å¼çš„無效使用"
-#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539
+#: go/gofrontend/expressions.cc:12946 go/gofrontend/statements.cc:1539
msgid "type assertion only valid for interface types"
msgstr ""
-#: go/gofrontend/expressions.cc:13769
+#: go/gofrontend/expressions.cc:12958
msgid "impossible type assertion: type does not implement interface"
msgstr ""
-#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387
+#: go/gofrontend/expressions.cc:13142 go/gofrontend/statements.cc:1387
#, fuzzy
#| msgid "expected class name"
msgid "expected channel"
msgstr "需è¦é¡žåˆ¥å"
-#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392
+#: go/gofrontend/expressions.cc:13147 go/gofrontend/statements.cc:1392
msgid "invalid receive on send-only channel"
msgstr ""
+#: go/gofrontend/parse.cc:2900
+msgid "parentheses required around this composite literalto avoid parsing ambiguity"
+msgstr ""
+
#: go/gofrontend/statements.cc:590
#, fuzzy
#| msgid "invalid lvalue in assignment"
@@ -13288,21 +13319,21 @@ msgstr "asm 敘述中出ç¾ç„¡æ•ˆçš„左值"
msgid "expected boolean expression"
msgstr "需è¦é‹ç®—å¼"
-#: go/gofrontend/statements.cc:4336
+#: go/gofrontend/statements.cc:4334
#, fuzzy
#| msgid "incompatible types in return"
msgid "incompatible types in send"
msgstr "回傳時類型ä¸ç›¸å®¹"
-#: go/gofrontend/statements.cc:4341
+#: go/gofrontend/statements.cc:4339
msgid "invalid send on receive-only channel"
msgstr ""
-#: go/gofrontend/statements.cc:5228
+#: go/gofrontend/statements.cc:5226
msgid "too many variables for range clause with channel"
msgstr ""
-#: go/gofrontend/statements.cc:5235
+#: go/gofrontend/statements.cc:5233
msgid "range clause must have array, slice, string, map, or channel type"
msgstr ""
@@ -13368,83 +13399,83 @@ msgstr "å°éš±å«è½‰æ›çµ¦å‡ºè­¦å‘Š"
msgid "cannot use type %s as type %s"
msgstr "ä¸èƒ½å°‡é¡žåž‹ %qT 轉æ›ç‚ºé¡žåž‹ %qT"
-#: go/gofrontend/types.cc:3205
+#: go/gofrontend/types.cc:3207
#, fuzzy
#| msgid "invalid receiver type %qs"
msgid "different receiver types"
msgstr "無效的接收者類型 %qs"
-#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238
-#: go/gofrontend/types.cc:3253
+#: go/gofrontend/types.cc:3227 go/gofrontend/types.cc:3240
+#: go/gofrontend/types.cc:3255
#, fuzzy
#| msgid "redefinition of parameter %q+D"
msgid "different number of parameters"
msgstr "åƒæ•¸ %q+D é‡å®šç¾©"
-#: go/gofrontend/types.cc:3246
+#: go/gofrontend/types.cc:3248
#, fuzzy
#| msgid "invalid parameter type %qT"
msgid "different parameter types"
msgstr "無效的åƒæ•¸é¡žåž‹ %qT"
-#: go/gofrontend/types.cc:3261
+#: go/gofrontend/types.cc:3263
msgid "different varargs"
msgstr ""
-#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283
-#: go/gofrontend/types.cc:3298
+#: go/gofrontend/types.cc:3272 go/gofrontend/types.cc:3285
+#: go/gofrontend/types.cc:3300
msgid "different number of results"
msgstr ""
-#: go/gofrontend/types.cc:3291
+#: go/gofrontend/types.cc:3293
msgid "different result types"
msgstr ""
-#: go/gofrontend/types.cc:4247
+#: go/gofrontend/types.cc:4249
#, c-format
msgid "implicit assignment of %s%s%s hidden field %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6651
+#: go/gofrontend/types.cc:6639
#, c-format
msgid "need explicit conversion; missing method %s%s%s"
msgstr ""
-#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810
+#: go/gofrontend/types.cc:6656 go/gofrontend/types.cc:6798
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s"
msgstr "引數 %d(屬於 %qE)é¡žåž‹ä¸ç›¸å®¹"
-#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814
+#: go/gofrontend/types.cc:6660 go/gofrontend/types.cc:6802
#, fuzzy, c-format
#| msgid "incompatible type for argument %d of %qE"
msgid "incompatible type for method %s%s%s (%s)"
msgstr "引數 %d(屬於 %qE)é¡žåž‹ä¸ç›¸å®¹"
-#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764
+#: go/gofrontend/types.cc:6739 go/gofrontend/types.cc:6752
msgid "pointer to interface type has no methods"
msgstr ""
-#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766
+#: go/gofrontend/types.cc:6741 go/gofrontend/types.cc:6754
#, fuzzy
#| msgid "error while parsing methods"
msgid "type has no methods"
msgstr "解æžæ–¹æ³•æ™‚發生錯誤"
-#: go/gofrontend/types.cc:6787
+#: go/gofrontend/types.cc:6775
#, fuzzy, c-format
#| msgid "ambiguous abbreviation %s"
msgid "ambiguous method %s%s%s"
msgstr "有歧義的縮寫 %s"
-#: go/gofrontend/types.cc:6790
+#: go/gofrontend/types.cc:6778
#, fuzzy, c-format
#| msgid "missing argument to \"%s\""
msgid "missing method %s%s%s"
msgstr "「%sã€ç¼ºå°‘引數"
-#: go/gofrontend/types.cc:6830
+#: go/gofrontend/types.cc:6818
#, c-format
msgid "method %s%s%s requires a pointer"
msgstr ""
@@ -13516,7 +13547,7 @@ msgstr "%<__builtin_prefetch%> 的第三個引數必須是一個常數"
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "%<__builtin_prefetch%> 的第三個引數無效;使用 0"
-#: builtins.c:4243 gimplify.c:2407
+#: builtins.c:4243 gimplify.c:2414
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "çµ¦å‡½å¼ %<va_start%> çš„åƒæ•¸å¤ªå°‘"
@@ -13538,7 +13569,7 @@ msgstr "(å› æ­¤æ‚¨æ‡‰è©²å‘ %<va_arg%> å‚³éž %qT 而ä¸æ˜¯ %qT)"
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:4429 c-typeck.c:2787
+#: builtins.c:4429 c-typeck.c:2799
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "如果執行到這段程å¼ç¢¼ï¼Œç¨‹å¼å°‡ä¸­æ­¢"
@@ -13624,7 +13655,7 @@ msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6023 expr.c:9989
+#: builtins.c:6023 expr.c:9964
#, fuzzy, gcc-internal-format
#| msgid "invalid argument to %<__builtin_frame_address%>"
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
@@ -13726,8 +13757,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:101 c-typeck.c:1980 c-typeck.c:5315 c-typeck.c:10573
-#: cp/typeck.c:1849 cp/typeck.c:6709 cp/typeck.c:7407 fortran/convert.c:88
+#: c-convert.c:101 c-typeck.c:1992 c-typeck.c:5332 c-typeck.c:10590
+#: cp/typeck.c:1849 cp/typeck.c:6722 cp/typeck.c:7420 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "void 值未如é æœŸåœ°è¢«å¿½ç•¥"
@@ -14010,7 +14041,7 @@ msgstr "%q+D 的宣告隱è—了一個全域宣告"
msgid "declaration of %q+D shadows a previous local"
msgstr "%q+D 的宣告隱è—了先å‰çš„一個局部變數"
-#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193
+#: c-decl.c:2568 cp/name-lookup.c:1153 cp/name-lookup.c:1196
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
msgid "shadowed declaration is here"
@@ -14126,7 +14157,7 @@ msgstr "跳轉至敘述é‹ç®—å¼ä¸­"
msgid "%qE defined as wrong kind of tag"
msgstr "%H%qE 定義為類型錯誤的標記"
-#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164
+#: c-decl.c:3674 c-typeck.c:11016 c-family/c-common.c:4164
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "錯誤地使用了 %<restrict%>"
@@ -14247,7 +14278,7 @@ msgstr "åƒæ•¸ %qD å·²åˆå§‹åŒ–"
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374
+#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6391
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr "å¯è®Šå¤§å°çš„物件ä¸èƒ½è¢«åˆå§‹åŒ–"
@@ -14257,7 +14288,7 @@ msgstr "å¯è®Šå¤§å°çš„物件ä¸èƒ½è¢«åˆå§‹åŒ–"
msgid "variable %qD has initializer but incomplete type"
msgstr "變數 %qD 有åˆå§‹å€¼è¨­å®šä½†é¡žåž‹ä¸å®Œå…¨"
-#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657
+#: c-decl.c:4138 cp/decl.c:4430 cp/decl.c:12670
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr "為內è¯å‡½å¼ %q+D 給定了 noinline 屬性"
@@ -14289,7 +14320,7 @@ msgstr "在 %q+D 中缺少陣列大å°"
msgid "zero or negative size array %q+D"
msgstr "陣列 %q+D 大å°ç‚º 0 或負"
-#: c-decl.c:4341 varasm.c:1966
+#: c-decl.c:4341 varasm.c:1972
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "%q+D 的存儲大å°ä¸æ˜Ž"
@@ -14407,7 +14438,7 @@ msgstr "類型大å°ä¸èƒ½è¢«æ˜Žç¢ºåœ°è¨ˆç®—出"
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4840 cp/decl.c:8063
+#: c-decl.c:4840 cp/decl.c:8065
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
@@ -14501,7 +14532,7 @@ msgstr "為åƒæ•¸ %qs 指定了存儲類別"
msgid "storage class specified for unnamed parameter"
msgstr "為åƒæ•¸ %qs 指定了存儲類別"
-#: c-decl.c:5126 cp/decl.c:9030
+#: c-decl.c:5126 cp/decl.c:9032
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr "為類型å指定了存儲類別"
@@ -14673,7 +14704,7 @@ msgstr "%qs 宣告為回傳一個陣列的函å¼"
msgid "function definition has qualified void return type"
msgstr "函å¼å®šç¾©æœ‰é™å®šçš„ void 回傳類型"
-#: c-decl.c:5618 cp/decl.c:9136
+#: c-decl.c:5618 cp/decl.c:9138
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr "忽略函å¼å›žå‚³é¡žåž‹çš„é¡žåž‹é™å®š"
@@ -14799,7 +14830,7 @@ msgstr "ISO C ä¸å…許使用 const 或 volatile é™å®šå‡½å¼é¡žåž‹"
msgid "a member of a structure or union cannot have a variably modified type"
msgstr "資料æˆå“¡ä¸èƒ½å…·æœ‰å¯è®Šé¡žåž‹ %qT"
-#: c-decl.c:5898 cp/decl.c:8291
+#: c-decl.c:5898 cp/decl.c:8293
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr "è®Šæ•¸æˆ–æ¬„ä½ %qE 宣告為 void"
@@ -15262,7 +15293,7 @@ msgstr "引數 %qD 與內建原型ä¸ç¬¦"
msgid "argument %qD doesn%'t match prototype"
msgstr "引數 %qD 與原型ä¸ç¬¦"
-#: c-decl.c:8380 cp/decl.c:13515
+#: c-decl.c:8380 cp/decl.c:13528
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr "在有回傳值的函å¼ä¸­æœªç™¼ç¾ return 敘述"
@@ -15468,7 +15499,7 @@ msgstr ""
msgid "ISO C forbids an empty translation unit"
msgstr "ISO C ä¸å…許來æºæª”案為空"
-#: c-parser.c:1340 c-parser.c:7532
+#: c-parser.c:1340 c-parser.c:7537
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr "ISO C ä¸æ”¯æ´åœ¨å‡½å¼å¤–使用多餘的 %<;%>"
@@ -15479,7 +15510,7 @@ msgstr "ISO C ä¸æ”¯æ´åœ¨å‡½å¼å¤–使用多餘的 %<;%>"
msgid "unknown type name %qE"
msgstr "ä¸æ˜Žçš„暫存器å:%s"
-#: c-parser.c:1486 c-parser.c:8563 cp/parser.c:27364
+#: c-parser.c:1486 c-parser.c:8568 cp/parser.c:27380
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "需è¦æŒ‡å®šå®£å‘Š"
@@ -15490,7 +15521,7 @@ msgstr "需è¦æŒ‡å®šå®£å‘Š"
msgid "expected %<;%>, identifier or %<(%>"
msgstr "需è¦è­˜åˆ¥ç¢¼æˆ– %<(%>"
-#: c-parser.c:1529 cp/parser.c:23794 cp/parser.c:23868
+#: c-parser.c:1529 cp/parser.c:23810 cp/parser.c:23884
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored for methods"
@@ -15513,7 +15544,7 @@ msgstr "需è¦å±¬æ€§ä½å"
msgid "data definition has no type or storage class"
msgstr "資料定義時沒有類型或存儲類別"
-#: c-parser.c:1703 cp/parser.c:10466
+#: c-parser.c:1703 cp/parser.c:10475
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr "éœ€è¦ %<,%> 或 %<;%>"
@@ -15543,7 +15574,7 @@ msgstr "ISO C90 ä¸æ”¯æ´ %<long long%>"
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 ä¸æ”¯æ´ %<long long%>"
-#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8618 cp/parser.c:27235
+#: c-parser.c:1862 c-parser.c:3383 c-parser.c:8623 cp/parser.c:27251
#, gcc-internal-format
msgid "expected string literal"
msgstr "需è¦å­—é¢å­—串"
@@ -15574,18 +15605,18 @@ msgstr "CRIS-port 判定語錯誤:"
#: c-parser.c:2262 c-parser.c:3161 c-parser.c:3829 c-parser.c:4103
#: c-parser.c:5219 c-parser.c:5310 c-parser.c:5932 c-parser.c:6286
-#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6705 c-parser.c:6902
-#: c-parser.c:6931 c-parser.c:7116 c-parser.c:7165 c-parser.c:7325
-#: c-parser.c:7355 c-parser.c:7363 c-parser.c:7392 c-parser.c:7405
-#: c-parser.c:7710 c-parser.c:7834 c-parser.c:8261 c-parser.c:8296
-#: c-parser.c:8349 c-parser.c:8402 c-parser.c:8418 c-parser.c:8464
-#: c-parser.c:8743 c-parser.c:9818 c-parser.c:10621 cp/parser.c:22255
-#: cp/parser.c:24638 cp/parser.c:24668 cp/parser.c:24738 cp/parser.c:26955
+#: c-parser.c:6475 c-parser.c:6497 c-parser.c:6710 c-parser.c:6907
+#: c-parser.c:6936 c-parser.c:7121 c-parser.c:7170 c-parser.c:7330
+#: c-parser.c:7360 c-parser.c:7368 c-parser.c:7397 c-parser.c:7410
+#: c-parser.c:7715 c-parser.c:7839 c-parser.c:8266 c-parser.c:8301
+#: c-parser.c:8354 c-parser.c:8407 c-parser.c:8423 c-parser.c:8469
+#: c-parser.c:8748 c-parser.c:9823 c-parser.c:10626 cp/parser.c:22271
+#: cp/parser.c:24654 cp/parser.c:24684 cp/parser.c:24754 cp/parser.c:26971
#, gcc-internal-format
msgid "expected identifier"
msgstr "需è¦è­˜åˆ¥ç¢¼"
-#: c-parser.c:2295 cp/parser.c:14609
+#: c-parser.c:2295 cp/parser.c:14618
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "列舉表以逗號çµå°¾"
@@ -15719,7 +15750,7 @@ msgstr "%HISO C90 ä¸å…許混åˆä½¿ç”¨å®£å‘Šå’Œç¨‹å¼ç¢¼"
msgid "expected %<}%> before %<else%>"
msgstr "éœ€è¦ %<,%> 或 %<}%>"
-#: c-parser.c:4218 cp/parser.c:8987
+#: c-parser.c:4218 cp/parser.c:8996
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
@@ -15748,18 +15779,18 @@ msgstr "需è¦è­˜åˆ¥ç¢¼æˆ– %<*%>"
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:4559 cp/parser.c:8715
+#: c-parser.c:4559 cp/parser.c:8724
#, gcc-internal-format
msgid "expected statement"
msgstr "需è¦æ•˜è¿°"
-#: c-parser.c:4657 cp/parser.c:9069
+#: c-parser.c:4657 cp/parser.c:9078
#, fuzzy, gcc-internal-format
#| msgid "%Hempty body in an if-statement"
msgid "suggest braces around empty body in an %<if%> statement"
msgstr "%Hif 敘述體為空"
-#: c-parser.c:4685 cp/parser.c:9092
+#: c-parser.c:4685 cp/parser.c:9101
#, fuzzy, gcc-internal-format
#| msgid "%Hempty body in an else-statement"
msgid "suggest braces around empty body in an %<else%> statement"
@@ -15831,7 +15862,7 @@ msgstr "ISO C ä¸æ”¯æ´åœ¨å‡½å¼å¤–使用多餘的 %<;%>"
msgid "cannot take address of %qs"
msgstr "無法å–å¾—ä½å…ƒæ®µ %qD çš„ä½å€"
-#: c-parser.c:6297 c-parser.c:6742 c-parser.c:6761
+#: c-parser.c:6297 c-parser.c:6747 c-parser.c:6766
#, gcc-internal-format
msgid "expected expression"
msgstr "需è¦é‹ç®—å¼"
@@ -15874,282 +15905,282 @@ msgstr ""
msgid "%<__builtin_complex%> operands of different types"
msgstr "?: çš„é‹ç®—元有ä¸åŒçš„é¡žåž‹"
-#: c-parser.c:6674
+#: c-parser.c:6679
#, fuzzy, gcc-internal-format
#| msgid "wrong number of arguments specified for %qs attribute"
msgid "wrong number of arguments to %<__builtin_shuffle%>"
msgstr "為 %qs 屬性給定的引數數目錯誤"
-#: c-parser.c:6796
+#: c-parser.c:6801
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr "複åˆå­—é¢å€¼æœ‰å¯è®Šçš„大å°"
-#: c-parser.c:6807
+#: c-parser.c:6812
#, gcc-internal-format
msgid "compound literal qualified by address-space qualifier"
msgstr ""
-#: c-parser.c:6812
+#: c-parser.c:6817
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 ä¸å…許複åˆå­—é¢å€¼"
-#: c-parser.c:7136
+#: c-parser.c:7141
#, fuzzy, gcc-internal-format
#| msgid "expected identifier or %<(%>"
msgid "expected identifier or %<)%>"
msgstr "需è¦è­˜åˆ¥ç¢¼æˆ– %<(%>"
-#: c-parser.c:7232
+#: c-parser.c:7237
#, gcc-internal-format
msgid "extra semicolon"
msgstr ""
-#: c-parser.c:7480
+#: c-parser.c:7485
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr "為方法定義指定了多餘的分號"
-#: c-parser.c:7612
+#: c-parser.c:7617
#, gcc-internal-format
msgid "method attributes must be specified at the end only"
msgstr ""
-#: c-parser.c:7632
+#: c-parser.c:7637
#, gcc-internal-format
msgid "expected %<;%> or %<{%> after method attribute definition"
msgstr ""
-#: c-parser.c:7753
+#: c-parser.c:7758
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "objective-c method declaration is expected"
msgstr "需è¦æŒ‡å®šå®£å‘Š"
-#: c-parser.c:8175
+#: c-parser.c:8180
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for %qs"
msgid "no type or storage class may be specified here,"
msgstr "為 %qs 指定了存儲類別"
-#: c-parser.c:8265 c-parser.c:8322 cp/parser.c:24698
+#: c-parser.c:8270 c-parser.c:8327 cp/parser.c:24714
#, gcc-internal-format
msgid "unknown property attribute"
msgstr ""
-#: c-parser.c:8286 cp/parser.c:24658
+#: c-parser.c:8291 cp/parser.c:24674
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "%<#pragma pack%> 後缺少 %<(%>,忽略"
-#: c-parser.c:8289 cp/parser.c:24661
+#: c-parser.c:8294 cp/parser.c:24677
#, fuzzy, gcc-internal-format
#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "%<#pragma pack%> 後缺少 %<(%>,忽略"
-#: c-parser.c:8303 cp/parser.c:24676
+#: c-parser.c:8308 cp/parser.c:24692
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "the %<setter%> attribute may only be specified once"
msgstr "%Jä¸èƒ½ç‚ºå±€éƒ¨è®Šæ•¸æŒ‡å®š section 屬性"
-#: c-parser.c:8308 cp/parser.c:24682
+#: c-parser.c:8313 cp/parser.c:24698
#, gcc-internal-format
msgid "setter name must terminate with %<:%>"
msgstr ""
-#: c-parser.c:8315 cp/parser.c:24690
+#: c-parser.c:8320 cp/parser.c:24706
#, fuzzy, gcc-internal-format
#| msgid "%Jaddress area attribute cannot be specified for functions"
msgid "the %<getter%> attribute may only be specified once"
msgstr "%Jä¸èƒ½ç‚ºå‡½å¼æŒ‡å®šä½å€å€åŸŸå±¬æ€§"
-#: c-parser.c:8501 cp/parser.c:27279
+#: c-parser.c:8506 cp/parser.c:27295
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8512 cp/parser.c:27294
+#: c-parser.c:8517 cp/parser.c:27310
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8523 cp/parser.c:27310
+#: c-parser.c:8528 cp/parser.c:27326
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8534 cp/parser.c:27326
+#: c-parser.c:8539 cp/parser.c:27342
#, gcc-internal-format
msgid "%<#pragma omp taskyield%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:8547 cp/parser.c:27354
+#: c-parser.c:8552 cp/parser.c:27370
#, gcc-internal-format
msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
msgstr ""
-#: c-parser.c:8553 cp/parser.c:27269
+#: c-parser.c:8558 cp/parser.c:27285
#, fuzzy, gcc-internal-format
#| msgid "malformed #pragma GCC pch_preprocess, ignored"
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "#pragma GCC pch_preprocess æ ¼å¼ä¸æ­£ç¢ºï¼Œå·²å¿½ç•¥"
-#: c-parser.c:8718 cp/parser.c:24946
+#: c-parser.c:8723 cp/parser.c:24962
#, fuzzy, gcc-internal-format
#| msgid "too many input files"
msgid "too many %qs clauses"
msgstr "輸入檔案太多"
-#: c-parser.c:8820 cp/parser.c:25061
+#: c-parser.c:8825 cp/parser.c:25077
#, fuzzy, gcc-internal-format
#| msgid "comparison between signed and unsigned integer expressions"
msgid "collapse argument needs positive constant integer expression"
msgstr "在有號和無號整數é‹ç®—å¼é–“比較"
-#: c-parser.c:8886 cp/parser.c:25112
+#: c-parser.c:8891 cp/parser.c:25128
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<none%> or %<shared%>"
msgstr "éœ€è¦ %<,%> 或 %<;%>"
-#: c-parser.c:9021 c-parser.c:9235
+#: c-parser.c:9026 c-parser.c:9240
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected integer expression"
msgstr "需è¦é‹ç®—å¼"
-#: c-parser.c:9033
+#: c-parser.c:9038
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:9137 cp/parser.c:25331
+#: c-parser.c:9142 cp/parser.c:25347
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr ""
-#: c-parser.c:9226 cp/parser.c:25416
+#: c-parser.c:9231 cp/parser.c:25432
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9230 cp/parser.c:25419
+#: c-parser.c:9235 cp/parser.c:25435
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:9248 cp/parser.c:25435
+#: c-parser.c:9253 cp/parser.c:25451
#, fuzzy, gcc-internal-format
#| msgid "invalid const_double operand"
msgid "invalid schedule kind"
msgstr "無效的 const_double é‹ç®—å…ƒ"
-#: c-parser.c:9376 cp/parser.c:25567
+#: c-parser.c:9381 cp/parser.c:25583
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:9385 cp/parser.c:25576
+#: c-parser.c:9390 cp/parser.c:25592
#, fuzzy, gcc-internal-format
#| msgid "%qs is not a valid output file"
msgid "%qs is not valid for %qs"
msgstr "%qs ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„輸出檔案"
-#: c-parser.c:9677 cp/parser.c:25860
+#: c-parser.c:9682 cp/parser.c:25876
#, fuzzy, gcc-internal-format
#| msgid "malformed %<#pragma align%>"
msgid "invalid form of %<#pragma omp atomic%>"
msgstr "%<#pragma align%> æ ¼å¼éŒ¯èª¤"
-#: c-parser.c:9717 c-parser.c:9735 cp/parser.c:25891 cp/parser.c:25908
+#: c-parser.c:9722 c-parser.c:9740 cp/parser.c:25907 cp/parser.c:25924
#, fuzzy, gcc-internal-format
#| msgid "invalid operation on %<__fpreg%>"
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr "å° %<__fpreg%> 的作業無效"
-#: c-parser.c:9821 c-parser.c:9842
+#: c-parser.c:9826 c-parser.c:9847
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected %<(%> or end of line"
msgstr "éžé æœŸçš„模組çµæŸ"
-#: c-parser.c:9877 cp/parser.c:26179
+#: c-parser.c:9882 cp/parser.c:26195
#, fuzzy, gcc-internal-format
#| msgid "%s statement expected at %L"
msgid "for statement expected"
msgstr "éœ€è¦ %s 敘述在 %L 處"
-#: c-parser.c:9930 cp/semantics.c:4705 cp/semantics.c:4775
+#: c-parser.c:9935 cp/semantics.c:4702 cp/semantics.c:4772
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected iteration declaration or initialization"
msgstr "需è¦å®£å‘Šæˆ–敘述"
-#: c-parser.c:10011
+#: c-parser.c:10016
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:10064 cp/parser.c:26521
+#: c-parser.c:10069 cp/parser.c:26537
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690
+#: c-parser.c:10107 cp/parser.c:26380 cp/parser.c:26418 cp/pt.c:12728
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "iteration variable %qD should not be firstprivate"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: c-parser.c:10563
+#: c-parser.c:10568
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a template"
msgid "%qD is not a variable"
msgstr "%qD ä¸æ˜¯ä¸€å€‹ç¯„本"
-#: c-parser.c:10565 cp/semantics.c:4330
+#: c-parser.c:10570 cp/semantics.c:4327
#, fuzzy, gcc-internal-format
#| msgid "%q+F declared %<static%> but never defined"
msgid "%qE declared %<threadprivate%> after first use"
msgstr "%q+F 宣告為 %<static%> å»å¾žæœªå®šç¾©éŽ"
-#: c-parser.c:10567 cp/semantics.c:4332
+#: c-parser.c:10572 cp/semantics.c:4329
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: c-parser.c:10571 cp/semantics.c:4334
+#: c-parser.c:10576 cp/semantics.c:4331
#, fuzzy, gcc-internal-format
#| msgid "%Jparameter %u has incomplete type"
msgid "%<threadprivate%> %qE has incomplete type"
msgstr "%Jåƒæ•¸ %u é¡žåž‹ä¸å®Œå…¨"
-#: c-parser.c:10768 cp/parser.c:27165
+#: c-parser.c:10773 cp/parser.c:27181
#, gcc-internal-format
msgid "%<__transaction_cancel%> without transactional memory support enabled"
msgstr ""
-#: c-parser.c:10774 cp/parser.c:27171
+#: c-parser.c:10779 cp/parser.c:27187
#, gcc-internal-format
msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
msgstr ""
-#: c-parser.c:10783 cp/parser.c:27180
+#: c-parser.c:10788 cp/parser.c:27196
#, gcc-internal-format
msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
msgstr ""
-#: c-parser.c:10785 cp/parser.c:27183
+#: c-parser.c:10790 cp/parser.c:27199
#, gcc-internal-format
msgid " or a %<transaction_may_cancel_outer%> function"
msgstr ""
-#: c-parser.c:10791 cp/parser.c:27189
+#: c-parser.c:10796 cp/parser.c:27205
#, gcc-internal-format
msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
msgstr ""
@@ -16159,7 +16190,7 @@ msgstr ""
msgid "%qD has an incomplete type"
msgstr "%qD é¡žåž‹ä¸å®Œå…¨"
-#: c-typeck.c:235 c-typeck.c:8610 c-typeck.c:8642 cp/call.c:3736
+#: c-typeck.c:235 c-typeck.c:8627 c-typeck.c:8659 cp/call.c:3736
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "å° void é‹ç®—å¼çš„無效使用"
@@ -16226,69 +16257,74 @@ msgstr "æˆå“¡æŒ‡æ¨™é¡žåž‹ %qT 與物件類型 %qT ä¸ç›¸å®¹"
msgid "function return types not compatible due to %<volatile%>"
msgstr "由於 %<volatile%>,函å¼å›žå‚³é¡žåž‹ä¸ç›¸å®¹"
-#: c-typeck.c:1732 c-typeck.c:3483
+#: c-typeck.c:1732 c-typeck.c:3495
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr "在åƒç…§ä¸å®Œå…¨é¡žåž‹çš„指標上執行算術é‹ç®—"
-#: c-typeck.c:2148
+#: c-typeck.c:1796
+#, gcc-internal-format
+msgid "converting an array compound literal to a pointer is ill-formed in C++"
+msgstr ""
+
+#: c-typeck.c:2160
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr "%qT æ²’å…·å為 %qE çš„æˆå“¡"
-#: c-typeck.c:2202
+#: c-typeck.c:2214
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr "在éžçµæ§‹æˆ–è¯åˆä¸­è«‹æ±‚æˆå“¡ %qE"
-#: c-typeck.c:2251
+#: c-typeck.c:2263
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr "æé ˜åƒç…§ä¸å®Œå…¨é¡žåž‹çš„指標"
-#: c-typeck.c:2255
+#: c-typeck.c:2267
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr "æé ˜ %<void *%> 指標"
-#: c-typeck.c:2311
+#: c-typeck.c:2323
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "下標é‹ç®—çš„å·¦é‹ç®—元既éžé™£åˆ—也éžæŒ‡æ¨™"
-#: c-typeck.c:2323 cp/typeck.c:2904 cp/typeck.c:2998
+#: c-typeck.c:2335 cp/typeck.c:2917 cp/typeck.c:3011
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "陣列下標ä¸æ˜¯ä¸€å€‹æ•´æ•¸"
-#: c-typeck.c:2329
+#: c-typeck.c:2341
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr "下標é‹ç®—çš„å·¦é‹ç®—元是函å¼æŒ‡æ¨™"
-#: c-typeck.c:2354
+#: c-typeck.c:2366
#, fuzzy, gcc-internal-format
#| msgid "Substring end index at %L is out of bounds"
msgid "index value is out of bound"
msgstr "%L 處的å­å­—串終止索引越界"
-#: c-typeck.c:2398
+#: c-typeck.c:2410
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr "ISO C ä¸å…è¨±æŒ‰ä¸‹æ¨™å­˜å– %<register%> 陣列"
-#: c-typeck.c:2401
+#: c-typeck.c:2413
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO C90 ä¸å…許éžå·¦å€¼çš„陣列åšç‚ºä¸‹æ¨™é‹ç®—çš„å·¦é‹ç®—å…ƒ"
-#: c-typeck.c:2509
+#: c-typeck.c:2521
#, gcc-internal-format
msgid "enum constant defined here"
msgstr ""
-#: c-typeck.c:2747
+#: c-typeck.c:2759
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr "被呼å«çš„物件 %qE ä¸æ˜¯ä¸€å€‹å‡½å¼"
@@ -16296,388 +16332,388 @@ msgstr "被呼å«çš„物件 %qE ä¸æ˜¯ä¸€å€‹å‡½å¼"
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2784
+#: c-typeck.c:2796
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr "函å¼ç¶“ç”±ä¸ç›¸å®¹çš„類型呼å«"
-#: c-typeck.c:2798 c-typeck.c:2851
+#: c-typeck.c:2810 c-typeck.c:2863
#, fuzzy, gcc-internal-format
#| msgid "function definition has qualified void return type"
msgid "function with qualified void return type called"
msgstr "函å¼å®šç¾©æœ‰é™å®šçš„ void 回傳類型"
-#: c-typeck.c:2888
+#: c-typeck.c:2900
#, gcc-internal-format
msgid "__builtin_shuffle last argument must be an integer vector"
msgstr ""
-#: c-typeck.c:2896
+#: c-typeck.c:2908
#, fuzzy, gcc-internal-format
#| msgid "%<__builtin_longjmp%> second argument must be 1"
msgid "__builtin_shuffle arguments must be vectors"
msgstr "%<__builtin_longjmp%> 的第二個引數必須是 1"
-#: c-typeck.c:2902
+#: c-typeck.c:2914
#, gcc-internal-format
msgid "__builtin_shuffle argument vectors must be of the same type"
msgstr ""
-#: c-typeck.c:2912
+#: c-typeck.c:2924
#, gcc-internal-format
msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same"
msgstr ""
-#: c-typeck.c:2921
+#: c-typeck.c:2933
#, gcc-internal-format
msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask"
msgstr ""
-#: c-typeck.c:3033
+#: c-typeck.c:3045
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qE"
msgid "too many arguments to method %qE"
msgstr "æä¾›çµ¦å‡½å¼ %qE 的引數太多"
-#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361
+#: c-typeck.c:3048 c-family/c-common.c:8433 c-family/c-common.c:9361
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr "æä¾›çµ¦å‡½å¼ %qE 的引數太多"
-#: c-typeck.c:3039 c-typeck.c:3273 cp/decl2.c:4257 cp/typeck.c:3350
+#: c-typeck.c:3051 c-typeck.c:3285 cp/decl2.c:4257 cp/typeck.c:3363
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "declared here"
msgstr "%q+D 已在此宣告éŽ"
-#: c-typeck.c:3074
+#: c-typeck.c:3086
#, gcc-internal-format, gfc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr "引數 %d çš„é¡žåž‹ä¸å®Œå…¨"
-#: c-typeck.c:3089
+#: c-typeck.c:3101
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than floating due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºæ•´æ•¸è€Œä¸æ˜¯æµ®é»žæ•¸å‚³éž"
-#: c-typeck.c:3094
+#: c-typeck.c:3106
#, gcc-internal-format
msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºæ•´æ•¸è€Œä¸æ˜¯è¤‡æ•¸å‚³éž"
-#: c-typeck.c:3099
+#: c-typeck.c:3111
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than floating due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºè¤‡æ•¸è€Œä¸æ˜¯æµ®é»žæ•¸å‚³éž"
-#: c-typeck.c:3104
+#: c-typeck.c:3116
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than integer due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºæµ®é»žæ•¸è€Œä¸æ˜¯æ•´æ•¸å‚³éž"
-#: c-typeck.c:3109
+#: c-typeck.c:3121
#, gcc-internal-format
msgid "passing argument %d of %qE as complex rather than integer due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºè¤‡æ•¸è€Œä¸æ˜¯æ•´æ•¸å‚³éž"
-#: c-typeck.c:3114
+#: c-typeck.c:3126
#, gcc-internal-format
msgid "passing argument %d of %qE as floating rather than complex due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºæµ®é»žæ•¸è€Œä¸æ˜¯è¤‡æ•¸å‚³éž"
-#: c-typeck.c:3127
+#: c-typeck.c:3139
#, gcc-internal-format
msgid "passing argument %d of %qE as %<float%> rather than %<double%> due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚º %<float%> 而ä¸æ˜¯ %<double%> 傳éž"
-#: c-typeck.c:3152
+#: c-typeck.c:3164
#, fuzzy, gcc-internal-format
#| msgid "passing argument %d of %qE as integer rather than complex due to prototype"
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºæ•´æ•¸è€Œä¸æ˜¯è¤‡æ•¸å‚³éž"
-#: c-typeck.c:3174
+#: c-typeck.c:3186
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr "根據原型,引數 %d (%qE) 將以ä¸åŒçš„寬度傳éž"
-#: c-typeck.c:3198
+#: c-typeck.c:3210
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr "根據原型,引數 %d (%qE) 將作用無號數傳éž"
-#: c-typeck.c:3203
+#: c-typeck.c:3215
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "根據原型,引數 %d (%qE) å°‡åšç‚ºæœ‰è™Ÿæ•¸å‚³éž"
-#: c-typeck.c:3238 cp/call.c:6001
+#: c-typeck.c:3250 cp/call.c:6005
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "C++ 中ä¸å…許從 %qT 到 %qT çš„éš±å«è½‰æ›"
-#: c-typeck.c:3271 c-family/c-common.c:9279 c-family/c-common.c:9335
+#: c-typeck.c:3283 c-family/c-common.c:9279 c-family/c-common.c:9335
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr "æä¾›çµ¦å‡½å¼ %qE 的引數太少"
-#: c-typeck.c:3353 c-typeck.c:3358
+#: c-typeck.c:3365 c-typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behavior"
msgstr "%q+D 的弱宣告出ç¾åœ¨ç¬¬ä¸€æ¬¡ä½¿ç”¨ä¹‹å¾Œå°‡å°Žè‡´ä¸å¯é æœŸçš„行為"
-#: c-typeck.c:3372
+#: c-typeck.c:3384
#, fuzzy, gcc-internal-format
#| msgid "comparison between %q#T and %q#T"
msgid "comparison between %qT and %qT"
msgstr "在 %q#T 和 %q#T 間比較"
-#: c-typeck.c:3424
+#: c-typeck.c:3436
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr "在減法中使用類型為 %<void *%> 的指標"
-#: c-typeck.c:3427
+#: c-typeck.c:3439
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr "函å¼æŒ‡æ¨™ä¸èƒ½ç›¸æ¸›"
-#: c-typeck.c:3591
+#: c-typeck.c:3603
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr "ISO C ä¸æ”¯æ´ç”¨ ~ 求共軛複數"
-#: c-typeck.c:3630
+#: c-typeck.c:3642
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr "å–®ä½å…ƒ ! 的引數類型無效"
-#: c-typeck.c:3681
+#: c-typeck.c:3693
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3684
+#: c-typeck.c:3696
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
msgstr ""
-#: c-typeck.c:3697
+#: c-typeck.c:3709
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr "ISO C ä¸æ”¯æ´å°è¤‡æ•¸é¡žåž‹é€²è¡Œ %<++%> 或 %<--%> 作業"
-#: c-typeck.c:3716 c-typeck.c:3748
+#: c-typeck.c:3728 c-typeck.c:3760
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr "該類型的引數ä¸èƒ½è‡ªå¢ž"
-#: c-typeck.c:3718 c-typeck.c:3751
+#: c-typeck.c:3730 c-typeck.c:3763
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr "該類型的引數ä¸èƒ½è‡ªæ¸›"
-#: c-typeck.c:3738
+#: c-typeck.c:3750
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr "自增åƒç…§ä¸æ˜Žçµæ§‹çš„指標"
-#: c-typeck.c:3741
+#: c-typeck.c:3753
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr "自減åƒç…§ä¸æ˜Žçµæ§‹çš„指標"
-#: c-typeck.c:3825
+#: c-typeck.c:3837
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of expression of type %<void%>"
msgstr "å–臨時變數的ä½å€"
-#: c-typeck.c:3983 c-family/c-common.c:9033
+#: c-typeck.c:3995 c-family/c-common.c:9033
#, fuzzy, gcc-internal-format
#| msgid "assignment of read-only location"
msgid "assignment of read-only location %qE"
msgstr "å‘唯讀ä½ç½®è³¦å€¼"
-#: c-typeck.c:3986 c-family/c-common.c:9034
+#: c-typeck.c:3998 c-family/c-common.c:9034
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only location"
msgid "increment of read-only location %qE"
msgstr "令唯讀ä½ç½®è‡ªå¢ž"
-#: c-typeck.c:3989 c-family/c-common.c:9035
+#: c-typeck.c:4001 c-family/c-common.c:9035
#, fuzzy, gcc-internal-format
#| msgid "decrement of read-only location"
msgid "decrement of read-only location %qE"
msgstr "令唯讀ä½ç½®è‡ªæ¸›"
-#: c-typeck.c:4030
+#: c-typeck.c:4042
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr "無法å–å¾—ä½å…ƒæ®µ %qD çš„ä½å€"
-#: c-typeck.c:4058
+#: c-typeck.c:4070
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr "巢狀函å¼ä¸­ä½¿ç”¨äº†å…¨åŸŸæš«å­˜å™¨è®Šæ•¸ %qD"
-#: c-typeck.c:4061
+#: c-typeck.c:4073
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr "巢狀函å¼ä¸­ä½¿ç”¨äº†æš«å­˜å™¨è®Šæ•¸ %qD"
-#: c-typeck.c:4066
+#: c-typeck.c:4078
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr "è¦æ±‚全域暫存器變數 %qD çš„ä½å€"
-#: c-typeck.c:4068
+#: c-typeck.c:4080
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr "è¦æ±‚暫存器變數 %qD çš„ä½å€ã€‚"
-#: c-typeck.c:4162
+#: c-typeck.c:4174
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr "éžå·¦å€¼é™£åˆ—出ç¾åœ¨æ¢ä»¶é‹ç®—å¼ä¸­"
-#: c-typeck.c:4218 cp/call.c:4625
+#: c-typeck.c:4230 cp/call.c:4625
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "C++ 中ä¸å…許從 %qT 到 %qT çš„éš±å«è½‰æ›"
-#: c-typeck.c:4292
+#: c-typeck.c:4304
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C ä¸å…許æ¢ä»¶é‹ç®—å¼åƒ…有一邊為空"
-#: c-typeck.c:4309
+#: c-typeck.c:4321
#, fuzzy, gcc-internal-format
#| msgid "pointer type mismatch in conditional expression"
msgid "pointers to disjoint address spaces used in conditional expression"
msgstr "æ¢ä»¶é‹ç®—å¼æŒ‡æ¨™é¡žåž‹ä¸åŒ¹é…"
-#: c-typeck.c:4317 c-typeck.c:4326
+#: c-typeck.c:4329 c-typeck.c:4338
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr "ISO C ä¸å…許在æ¢ä»¶é‹ç®—å¼ä¸­åŒæ™‚使用 %<void *%> 和函å¼æŒ‡æ¨™"
-#: c-typeck.c:4339
+#: c-typeck.c:4351
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr "æ¢ä»¶é‹ç®—å¼æŒ‡æ¨™é¡žåž‹ä¸åŒ¹é…"
-#: c-typeck.c:4348 c-typeck.c:4359
+#: c-typeck.c:4360 c-typeck.c:4371
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­æŒ‡æ¨™/整數類型ä¸åŒ¹é…"
-#: c-typeck.c:4373 tree-cfg.c:3821
+#: c-typeck.c:4385 tree-cfg.c:3841
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: c-typeck.c:4467
+#: c-typeck.c:4484
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr "逗號é‹ç®—å¼çš„å·¦é‹ç®—å…ƒä¸èµ·ä½œç”¨"
-#: c-typeck.c:4537
+#: c-typeck.c:4554
#, fuzzy
#| msgid "cast adds new qualifiers to function type"
msgid "cast adds %q#v qualifier to function type"
msgstr "類型轉æ›ç‚ºå‡½å¼é¡žåž‹åŠ å…¥äº†æ–°çš„é™å®š"
-#: c-typeck.c:4543
+#: c-typeck.c:4560
#, fuzzy
#| msgid "cast discards qualifiers from pointer target type"
msgid "cast discards %q#v qualifier from pointer target type"
msgstr "類型轉æ›ä¸Ÿæ£„了指標目的類型的é™å®š"
-#: c-typeck.c:4578
+#: c-typeck.c:4595
#, gcc-internal-format
msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
msgstr ""
-#: c-typeck.c:4615
+#: c-typeck.c:4632
#, gcc-internal-format
msgid "cast specifies array type"
msgstr "類型轉æ›æŒ‡å®šäº†é™£åˆ—é¡žåž‹"
-#: c-typeck.c:4621
+#: c-typeck.c:4638
#, gcc-internal-format
msgid "cast specifies function type"
msgstr "類型轉æ›æŒ‡å®šäº†å‡½å¼é¡žåž‹"
-#: c-typeck.c:4637
+#: c-typeck.c:4654
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr "ISO C ä¸å…許將éžæ¨™é‡è½‰æ›ç‚ºå…¶è‡ªèº«é¡žåž‹"
-#: c-typeck.c:4654
+#: c-typeck.c:4671
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr "ISO C ä¸å…許轉æ›ç‚ºè¯åˆé¡žåž‹"
-#: c-typeck.c:4664
+#: c-typeck.c:4681
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr "類型轉æ›çš„來æºé¡žåž‹æœªå‡ºç¾åœ¨è¯åˆä¸­"
-#: c-typeck.c:4699
+#: c-typeck.c:4716
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint generic address space pointer"
msgstr ""
-#: c-typeck.c:4704
+#: c-typeck.c:4721
#, gcc-internal-format, gfc-internal-format
msgid "cast to generic address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4709
+#: c-typeck.c:4726
#, gcc-internal-format, gfc-internal-format
msgid "cast to %s address space pointer from disjoint %s address space pointer"
msgstr ""
-#: c-typeck.c:4729
+#: c-typeck.c:4746
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr "類型轉æ›å¢žå¤§äº†ç›®çš„é¡žåž‹çš„å°é½Šéœ€æ±‚"
-#: c-typeck.c:4740
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr "當將一個指標轉æ›ç‚ºå¤§å°ä¸åŒçš„整數時給出警告"
-#: c-typeck.c:4745
+#: c-typeck.c:4762
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "從類型為 %qT 的函å¼å‘¼å«è½‰æ›åˆ°ä¸åŒ¹é…çš„é¡žåž‹ %qT"
-#: c-typeck.c:4754 cp/typeck.c:6564
+#: c-typeck.c:4771 cp/typeck.c:6577
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "當將一個指標轉æ›ç‚ºå¤§å°ä¸åŒçš„整數時給出警告"
-#: c-typeck.c:4768
+#: c-typeck.c:4785
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr "ISO C ä¸å…許將一個函å¼æŒ‡æ¨™è½‰æ›ç‚ºä¸€å€‹ç‰©ä»¶æŒ‡æ¨™"
-#: c-typeck.c:4777
+#: c-typeck.c:4794
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr "ISO C ä¸å…許將一個物件指標轉æ›ç‚ºä¸€å€‹å‡½å¼æŒ‡æ¨™"
-#: c-typeck.c:4860
+#: c-typeck.c:4877
#, gcc-internal-format
msgid "defining a type in a cast is invalid in C++"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5296
+#: c-typeck.c:5016 c-typeck.c:5313
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -16689,725 +16725,725 @@ msgstr ""
#. strings are complete sentences, visible to gettext and checked at
#. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
#. extra parameter to enumerate qualifiers.
-#: c-typeck.c:5204 c-typeck.c:5234 c-typeck.c:5761
+#: c-typeck.c:5221 c-typeck.c:5251 c-typeck.c:5778
#, fuzzy, gcc-internal-format
#| msgid "format %q.*s expects type %<%T%s%>, but argument %d has type %qT"
msgid "expected %qT but argument is of type %qT"
msgstr "æ ¼å¼ %q.*s 需è¦é¡žåž‹ %<%T%s%>,但引數 %d 的類型為 %qT"
-#: c-typeck.c:5294
+#: c-typeck.c:5311
#, fuzzy, gcc-internal-format
#| msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr "傳éžåƒæ•¸ %d (屬於 %qE) 給指標時目的與指標有/無號ä¸ä¸€è‡´"
-#: c-typeck.c:5298 c-typeck.c:7863
+#: c-typeck.c:5315 c-typeck.c:7880
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:5300
+#: c-typeck.c:5317
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:5329
+#: c-typeck.c:5346
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr "ä¸èƒ½å°‡å³å€¼å‚³éžçµ¦åƒç…§åƒæ•¸"
-#: c-typeck.c:5459 c-typeck.c:5682
+#: c-typeck.c:5476 c-typeck.c:5699
#, fuzzy
#| msgid "passing argument %d of %qE makes qualified function pointer from unqualified"
msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
msgstr "傳éžå¼•æ•¸ %d(屬於 %qE)從未é™å®šçš„函å¼æŒ‡æ¨™å»ºæ§‹äº†é™å®šçš„函å¼æŒ‡æ¨™"
-#: c-typeck.c:5462 c-typeck.c:5685
+#: c-typeck.c:5479 c-typeck.c:5702
#, fuzzy
#| msgid "assignment makes qualified function pointer from unqualified"
msgid "assignment makes %q#v qualified function pointer from unqualified"
msgstr "將未é™å®šçš„函å¼æŒ‡æ¨™è³¦äºˆé™å®šçš„函å¼æŒ‡æ¨™"
-#: c-typeck.c:5465 c-typeck.c:5687
+#: c-typeck.c:5482 c-typeck.c:5704
#, fuzzy
#| msgid "initialization makes qualified function pointer from unqualified"
msgid "initialization makes %q#v qualified function pointer from unqualified"
msgstr "回傳時將未é™å®šçš„函å¼æŒ‡æ¨™è³¦çµ¦é™å®šçš„函å¼æŒ‡æ¨™"
-#: c-typeck.c:5468 c-typeck.c:5689
+#: c-typeck.c:5485 c-typeck.c:5706
#, fuzzy
#| msgid "return makes qualified function pointer from unqualified"
msgid "return makes %q#v qualified function pointer from unqualified"
msgstr "回傳時將未é™å®šçš„函å¼æŒ‡æ¨™è³¦çµ¦é™å®šçš„函å¼æŒ‡æ¨™"
-#: c-typeck.c:5475 c-typeck.c:5645
+#: c-typeck.c:5492 c-typeck.c:5662
#, fuzzy
#| msgid "passing argument %d of %qE discards qualifiers from pointer target type"
msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
msgstr "傳éžå¼•æ•¸ %d(屬於 %qE)丟棄了指標目的類型的é™å®š"
-#: c-typeck.c:5477 c-typeck.c:5647
+#: c-typeck.c:5494 c-typeck.c:5664
#, fuzzy
#| msgid "assignment discards qualifiers from pointer target type"
msgid "assignment discards %qv qualifier from pointer target type"
msgstr "賦值丟棄了指標目的類型的é™å®š"
-#: c-typeck.c:5479 c-typeck.c:5649
+#: c-typeck.c:5496 c-typeck.c:5666
#, fuzzy
#| msgid "initialization discards qualifiers from pointer target type"
msgid "initialization discards %qv qualifier from pointer target type"
msgstr "åˆå§‹åŒ–丟棄了指標目的類型的é™å®š"
-#: c-typeck.c:5481 c-typeck.c:5651
+#: c-typeck.c:5498 c-typeck.c:5668
#, fuzzy
#| msgid "return discards qualifiers from pointer target type"
msgid "return discards %qv qualifier from pointer target type"
msgstr "回傳時丟棄了指標目的類型的é™å®š"
-#: c-typeck.c:5490
+#: c-typeck.c:5507
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr "ISO C ä¸å…許將引數轉æ›ç‚ºè¯åˆ"
-#: c-typeck.c:5545
+#: c-typeck.c:5562
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "C++ 中ä¸å…許從 %qT 到 %qT çš„éš±å«è½‰æ›"
-#: c-typeck.c:5557
+#: c-typeck.c:5574
#, fuzzy, gcc-internal-format
#| msgid "passing argument %d of %qE from incompatible pointer type"
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
msgstr "傳éžåƒæ•¸ %d (屬於 %qE)時在ä¸ç›¸å®¹çš„指標類型間轉æ›"
-#: c-typeck.c:5561
+#: c-typeck.c:5578
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "assignment from pointer to non-enclosed address space"
msgstr "當將一個指標轉æ›ç‚ºå¤§å°ä¸åŒçš„整數時給出警告"
-#: c-typeck.c:5565
+#: c-typeck.c:5582
#, fuzzy, gcc-internal-format
#| msgid "initialization from incompatible pointer type"
msgid "initialization from pointer to non-enclosed address space"
msgstr "æ°¸é ä¸ç›¸å®¹çš„指標類型åˆå§‹åŒ–"
-#: c-typeck.c:5569
+#: c-typeck.c:5586
#, gcc-internal-format
msgid "return from pointer to non-enclosed address space"
msgstr ""
-#: c-typeck.c:5587
+#: c-typeck.c:5604
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr "引數 %d(屬於 %qE)å¯èƒ½æ˜¯ format 屬性的備é¸"
-#: c-typeck.c:5593
+#: c-typeck.c:5610
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr "賦值的左手邊å¯èƒ½æ˜¯ format 屬性的備é¸æ™‚"
-#: c-typeck.c:5598
+#: c-typeck.c:5615
#, gcc-internal-format
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "åˆå§‹åŒ–的左手邊å¯èƒ½æ˜¯ format 屬性的備é¸æ™‚"
-#: c-typeck.c:5603 cp/typeck.c:7541
+#: c-typeck.c:5620 cp/typeck.c:7554
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "回傳類型å¯èƒ½æ˜¯ format 屬性的備é¸"
-#: c-typeck.c:5627
+#: c-typeck.c:5644
#, gcc-internal-format
msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
msgstr "ISO C ä¸å…許將引數 %d(屬於 %qE)在函å¼æŒ‡æ¨™å’Œ %<void *%> 間傳éž"
-#: c-typeck.c:5630
+#: c-typeck.c:5647
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr "ISO C ä¸å…許在函å¼æŒ‡æ¨™å’Œ %<void *%> 間賦值"
-#: c-typeck.c:5632
+#: c-typeck.c:5649
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr "ISO C ä¸å…許在函å¼æŒ‡æ¨™å’Œ %<void *%> é–“åˆå§‹åŒ–"
-#: c-typeck.c:5634
+#: c-typeck.c:5651
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr "ISO C ä¸å…許在函å¼æŒ‡æ¨™å’Œ %<void *%> 間回傳"
-#: c-typeck.c:5663
+#: c-typeck.c:5680
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr "傳éžåƒæ•¸ %d (屬於 %qE) 給指標時目的與指標有/無號ä¸ä¸€è‡´"
-#: c-typeck.c:5665
+#: c-typeck.c:5682
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr "å°æŒ‡æ¨™è³¦å€¼æ™‚目的與指標有/無號ä¸ä¸€è‡´"
-#: c-typeck.c:5667
+#: c-typeck.c:5684
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr "åˆå§‹åŒ–指標時目的與指標有/無號ä¸ä¸€è‡´"
-#: c-typeck.c:5669
+#: c-typeck.c:5686
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr "回傳指標時目的與指標有/無號ä¸ä¸€è‡´"
-#: c-typeck.c:5698
+#: c-typeck.c:5715
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr "傳éžåƒæ•¸ %d (屬於 %qE)時在ä¸ç›¸å®¹çš„指標類型間轉æ›"
-#: c-typeck.c:5700
+#: c-typeck.c:5717
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr "æ°¸é ä¸ç›¸å®¹çš„指標類型賦值"
-#: c-typeck.c:5701
+#: c-typeck.c:5718
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr "æ°¸é ä¸ç›¸å®¹çš„指標類型åˆå§‹åŒ–"
-#: c-typeck.c:5703
+#: c-typeck.c:5720
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr "回傳了ä¸ç›¸å®¹çš„指標類型"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5711 c-typeck.c:6263 cp/typeck.c:1875
+#: c-typeck.c:5728 c-typeck.c:6280 cp/typeck.c:1875
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr "å°éžå·¦å€¼é™£åˆ—的無效使用"
-#: c-typeck.c:5721
+#: c-typeck.c:5738
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr "傳éžåƒæ•¸ %d (屬於 %qE)時將整數賦給指標,未作類型轉æ›"
-#: c-typeck.c:5723
+#: c-typeck.c:5740
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr "賦值時將整數賦給指標,未作類型轉æ›"
-#: c-typeck.c:5725
+#: c-typeck.c:5742
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr "åˆå§‹åŒ–時將整數賦給指標,未作類型轉æ›"
-#: c-typeck.c:5727
+#: c-typeck.c:5744
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr "回傳時將整數賦給指標,未作類型轉æ›"
-#: c-typeck.c:5735
+#: c-typeck.c:5752
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr "傳éžåƒæ•¸ %d (屬於 %qE)時將指標賦給整數,未作類型轉æ›"
-#: c-typeck.c:5737
+#: c-typeck.c:5754
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr "賦值時將指標賦給整數,未作類型轉æ›"
-#: c-typeck.c:5739
+#: c-typeck.c:5756
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr "åˆå§‹åŒ–將指標賦給整數,未作類型轉æ›"
-#: c-typeck.c:5741
+#: c-typeck.c:5758
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr "回傳時將指標賦給整數,未作類型轉æ›"
-#: c-typeck.c:5758 c-family/c-common.c:9296 config/mep/mep.c:6315
+#: c-typeck.c:5775 c-family/c-common.c:9296 config/mep/mep.c:6315
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr "引數 %d(屬於 %qE)é¡žåž‹ä¸ç›¸å®¹"
-#: c-typeck.c:5764
+#: c-typeck.c:5781
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of %qT to %qT"
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr "å°‡ %qT 賦值給 %qT 時類型ä¸ç›¸å®¹"
-#: c-typeck.c:5769
+#: c-typeck.c:5786
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in initialization"
msgid "incompatible types when initializing type %qT using type %qT"
msgstr "åˆå§‹åŒ–時類型ä¸ç›¸å®¹"
-#: c-typeck.c:5774
+#: c-typeck.c:5791
#, fuzzy, gcc-internal-format
#| msgid "incompatible types in assignment of %qT to %qT"
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr "å°‡ %qT 賦值給 %qT 時類型ä¸ç›¸å®¹"
-#: c-typeck.c:5838
+#: c-typeck.c:5855
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr "傳統 C ä¸æŽ¥å—自動的èšåˆåˆå§‹åŒ–"
-#: c-typeck.c:6014 c-typeck.c:6031 c-typeck.c:6049
+#: c-typeck.c:6031 c-typeck.c:6048 c-typeck.c:6066
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr "(在 %qs çš„åˆå§‹åŒ–附近)"
-#: c-typeck.c:6064
+#: c-typeck.c:6081
#, gcc-internal-format
msgid "array initialized from parenthesized string constant"
msgstr "用括號中的字串常數åˆå§‹åŒ–陣列"
-#: c-typeck.c:6137 c-typeck.c:7012
+#: c-typeck.c:6154 c-typeck.c:7029
#, gcc-internal-format
msgid "initialization of a flexible array member"
msgstr "å°å½ˆæ€§é™£åˆ—æˆå“¡çš„åˆå§‹åŒ–"
-#: c-typeck.c:6147 cp/typeck2.c:890
+#: c-typeck.c:6164 cp/typeck2.c:890
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "用寬字串åˆå§‹åŒ– char 陣列"
-#: c-typeck.c:6155
+#: c-typeck.c:6172
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from non-wide string"
msgstr "用窄字串åˆå§‹åŒ– wchar_t 陣列"
-#: c-typeck.c:6161
+#: c-typeck.c:6178
#, fuzzy, gcc-internal-format
#| msgid "wchar_t-array initialized from non-wide string"
msgid "wide character array initialized from incompatible wide string"
msgstr "用窄字串åˆå§‹åŒ– wchar_t 陣列"
-#: c-typeck.c:6195
+#: c-typeck.c:6212
#, gcc-internal-format
msgid "array of inappropriate type initialized from string constant"
msgstr "用字串常數åˆå§‹åŒ–的陣列類型ä¸åˆé©"
-#: c-typeck.c:6289
+#: c-typeck.c:6306
#, gcc-internal-format
msgid "array initialized from non-constant array expression"
msgstr "用éžå¸¸æ•¸çš„陣列é‹ç®—å¼åˆå§‹åŒ–陣列"
-#: c-typeck.c:6303 c-typeck.c:6306 c-typeck.c:6314 c-typeck.c:6353
-#: c-typeck.c:7836
+#: c-typeck.c:6320 c-typeck.c:6323 c-typeck.c:6331 c-typeck.c:6370
+#: c-typeck.c:7853
#, gcc-internal-format
msgid "initializer element is not constant"
msgstr "åˆå§‹å€¼è¨­å®šå…ƒç´ ä¸æ˜¯å¸¸æ•¸"
-#: c-typeck.c:6319 c-typeck.c:6365 c-typeck.c:7846
+#: c-typeck.c:6336 c-typeck.c:6382 c-typeck.c:7863
#, fuzzy, gcc-internal-format
#| msgid "initializer element is not constant"
msgid "initializer element is not a constant expression"
msgstr "åˆå§‹å€¼è¨­å®šå…ƒç´ ä¸æ˜¯å¸¸æ•¸"
-#: c-typeck.c:6360 c-typeck.c:7841
+#: c-typeck.c:6377 c-typeck.c:7858
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr "åˆå§‹å€¼è¨­å®šä¸­çš„元素在載入時無法被計算出"
-#: c-typeck.c:6378
+#: c-typeck.c:6395
#, gcc-internal-format
msgid "invalid initializer"
msgstr "無效的åˆå§‹å€¼è¨­å®š"
-#: c-typeck.c:6652 cp/decl.c:5536
+#: c-typeck.c:6669 cp/decl.c:5538
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "ä¸é€æ˜Žçš„å‘é‡é¡žåž‹ä¸èƒ½è¢«åˆå§‹åŒ–"
-#: c-typeck.c:6867
+#: c-typeck.c:6884
#, gcc-internal-format
msgid "extra brace group at end of initializer"
msgstr "åˆå§‹å€¼è¨­å®šé …末尾有多餘的大括號組"
-#: c-typeck.c:6888
+#: c-typeck.c:6905
#, gcc-internal-format
msgid "missing braces around initializer"
msgstr "åˆå§‹å€¼è¨­å®šå‘¨åœç¼ºå°‘大括號"
-#: c-typeck.c:6949
+#: c-typeck.c:6966
#, gcc-internal-format
msgid "braces around scalar initializer"
msgstr "標é‡åˆå§‹åŒ–帶大括號"
-#: c-typeck.c:7009
+#: c-typeck.c:7026
#, gcc-internal-format
msgid "initialization of flexible array member in a nested context"
msgstr "在巢狀的上下文中åˆå§‹åŒ–彈性陣列æˆå“¡"
-#: c-typeck.c:7048
+#: c-typeck.c:7065
#, gcc-internal-format
msgid "missing initializer"
msgstr "缺少åˆå§‹å€¼è¨­å®š"
-#: c-typeck.c:7070
+#: c-typeck.c:7087
#, gcc-internal-format
msgid "empty scalar initializer"
msgstr "空的標é‡åˆå§‹å€¼è¨­å®šé …"
-#: c-typeck.c:7075
+#: c-typeck.c:7092
#, gcc-internal-format
msgid "extra elements in scalar initializer"
msgstr "標é‡åˆå§‹åŒ–設定中有多餘元素"
-#: c-typeck.c:7186 c-typeck.c:7267
+#: c-typeck.c:7203 c-typeck.c:7284
#, gcc-internal-format
msgid "array index in non-array initializer"
msgstr "在éžé™£åˆ—åˆå§‹å€¼è¨­å®šé …中出ç¾é™£åˆ—索引"
-#: c-typeck.c:7191 c-typeck.c:7323
+#: c-typeck.c:7208 c-typeck.c:7340
#, gcc-internal-format
msgid "field name not in record or union initializer"
msgstr "欄ä½åä¸åœ¨è¨˜éŒ„或è¯åˆåˆå§‹åŒ–設定中"
-#: c-typeck.c:7240
+#: c-typeck.c:7257
#, gcc-internal-format
msgid "array index in initializer not of integer type"
msgstr "åˆå§‹å€¼è¨­å®šä¸­é™£åˆ—索引ä¸æ˜¯æ•´åž‹"
-#: c-typeck.c:7249 c-typeck.c:7258
+#: c-typeck.c:7266 c-typeck.c:7275
#, fuzzy, gcc-internal-format
#| msgid "array index in initializer not of integer type"
msgid "array index in initializer is not an integer constant expression"
msgstr "åˆå§‹å€¼è¨­å®šä¸­é™£åˆ—索引ä¸æ˜¯æ•´åž‹"
-#: c-typeck.c:7263 c-typeck.c:7265
+#: c-typeck.c:7280 c-typeck.c:7282
#, gcc-internal-format
msgid "nonconstant array index in initializer"
msgstr "åˆå§‹å€¼è¨­å®šä¸­é™£åˆ—索引ä¸æ˜¯å¸¸æ•¸"
-#: c-typeck.c:7269 c-typeck.c:7272
+#: c-typeck.c:7286 c-typeck.c:7289
#, gcc-internal-format
msgid "array index in initializer exceeds array bounds"
msgstr "åˆå§‹åŒ–時陣列索引越界"
-#: c-typeck.c:7286
+#: c-typeck.c:7303
#, gcc-internal-format
msgid "empty index range in initializer"
msgstr "åˆå§‹å€¼è¨­å®šé …中索引範åœç‚ºç©º"
-#: c-typeck.c:7295
+#: c-typeck.c:7312
#, gcc-internal-format
msgid "array index range in initializer exceeds array bounds"
msgstr "åˆå§‹å€¼è¨­å®šä¸­è³‡æ–™ç´¢å¼•ç¯„åœè¶…出陣列邊界"
-#: c-typeck.c:7330
+#: c-typeck.c:7347
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr "åˆå§‹å€¼è¨­å®šé …裡有ä¸æ˜Žçš„æ¬„ä½ %qE"
-#: c-typeck.c:7382 c-typeck.c:7409 c-typeck.c:7937
+#: c-typeck.c:7399 c-typeck.c:7426 c-typeck.c:7954
#, gcc-internal-format
msgid "initialized field with side-effects overwritten"
msgstr "帶副作用的欄ä½åˆå§‹åŒ–設定被覆寫"
-#: c-typeck.c:7384 c-typeck.c:7411 c-typeck.c:7939
+#: c-typeck.c:7401 c-typeck.c:7428 c-typeck.c:7956
#, fuzzy, gcc-internal-format
#| msgid "initialized field with side-effects overwritten"
msgid "initialized field overwritten"
msgstr "帶副作用的欄ä½åˆå§‹åŒ–設定被覆寫"
-#: c-typeck.c:8156
+#: c-typeck.c:8173
#, gcc-internal-format
msgid "excess elements in char array initializer"
msgstr "字元陣列åˆå§‹å€¼è¨­å®šé …中有多餘元素"
-#: c-typeck.c:8163 c-typeck.c:8224
+#: c-typeck.c:8180 c-typeck.c:8241
#, gcc-internal-format
msgid "excess elements in struct initializer"
msgstr "çµæ§‹åˆå§‹å€¼è¨­å®šé …中有多餘元素"
-#: c-typeck.c:8239
+#: c-typeck.c:8256
#, gcc-internal-format
msgid "non-static initialization of a flexible array member"
msgstr "å°å½ˆæ€§é™£åˆ—æˆå“¡éžéœæ…‹åœ°åˆå§‹åŒ–"
-#: c-typeck.c:8310
+#: c-typeck.c:8327
#, gcc-internal-format
msgid "excess elements in union initializer"
msgstr "è¯åˆåˆå§‹å€¼è¨­å®šé …中有多餘元素"
-#: c-typeck.c:8332
+#: c-typeck.c:8349
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr "傳統 C ä¸æŽ¥å—å°è¯åˆçš„åˆå§‹åŒ–"
-#: c-typeck.c:8400
+#: c-typeck.c:8417
#, gcc-internal-format
msgid "excess elements in array initializer"
msgstr "陣列åˆå§‹å€¼è¨­å®šé …中有多餘的元素"
-#: c-typeck.c:8434
+#: c-typeck.c:8451
#, gcc-internal-format
msgid "excess elements in vector initializer"
msgstr "å‘é‡åˆå§‹å€¼è¨­å®šé …中有多餘元素"
-#: c-typeck.c:8466
+#: c-typeck.c:8483
#, gcc-internal-format
msgid "excess elements in scalar initializer"
msgstr "標é‡åˆå§‹å€¼è¨­å®šé …中有多餘元素"
-#: c-typeck.c:8690
+#: c-typeck.c:8707
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C++ ä¸å…許 %<goto *expr;%>"
-#: c-typeck.c:8712 cp/typeck.c:7753
+#: c-typeck.c:8729 cp/typeck.c:7766
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "被宣告為 %<noreturn%> 的函å¼å»æœ‰ %<return%> 敘述"
-#: c-typeck.c:8735
+#: c-typeck.c:8752
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr "在有回傳值的的函å¼ä¸­ï¼Œ%<return%> ä¸å¸¶å›žå‚³å€¼"
-#: c-typeck.c:8745
+#: c-typeck.c:8762
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr "在無回傳值的函å¼ä¸­ï¼Œ%<return%> 帶回傳值"
-#: c-typeck.c:8747
+#: c-typeck.c:8764
#, fuzzy, gcc-internal-format
#| msgid "%<return%> with a value, in function returning void"
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr "在無回傳值的函å¼ä¸­ï¼Œ%<return%> 帶回傳值"
-#: c-typeck.c:8808
+#: c-typeck.c:8825
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "函å¼å›žå‚³å±€éƒ¨è®Šæ•¸çš„ä½å€"
-#: c-typeck.c:8881 cp/semantics.c:1045
+#: c-typeck.c:8898 cp/semantics.c:1045
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr "switch 敘述中的值ä¸æ˜¯ä¸€å€‹æ•´æ•¸"
-#: c-typeck.c:8894
+#: c-typeck.c:8911
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "在 ISO C 中,%<long%> é–‹é—œé‹ç®—å¼ä¸è¢«è½‰æ›ç‚º %<int%>"
-#: c-typeck.c:8930 c-typeck.c:8938
+#: c-typeck.c:8947 c-typeck.c:8955
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "case label is not an integer constant expression"
msgstr "陣列大å°ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸é‹ç®—å¼"
-#: c-typeck.c:8944 cp/parser.c:8818
+#: c-typeck.c:8961 cp/parser.c:8827
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr "case 標籤出ç¾åœ¨é–‹é—œæ•˜è¿°å¤–"
-#: c-typeck.c:8946
+#: c-typeck.c:8963
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr "%<default%> 標籤未出ç¾åœ¨ switch 敘述內"
-#: c-typeck.c:9029 cp/parser.c:9118
+#: c-typeck.c:9046 cp/parser.c:9127
#, fuzzy, gcc-internal-format
#| msgid "%Hsuggest explicit braces to avoid ambiguous %<else%>"
msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr "%H建議明確地使用大括號以é¿å…出ç¾æœ‰æ­§ç¾©çš„ %<else%>"
-#: c-typeck.c:9138 cp/parser.c:9845
+#: c-typeck.c:9155 cp/parser.c:9854
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr "break 敘述ä¸åœ¨å¾ªç’°æˆ–開關敘述內"
-#: c-typeck.c:9140 cp/parser.c:9866
+#: c-typeck.c:9157 cp/parser.c:9875
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr "continue 敘述出ç¾åœ¨å¾ªç’°ä»¥å¤–"
-#: c-typeck.c:9145 cp/parser.c:9856
+#: c-typeck.c:9162 cp/parser.c:9865
#, fuzzy, gcc-internal-format
#| msgid "break statement not within loop or switch"
msgid "break statement used with OpenMP for loop"
msgstr "break 敘述ä¸åœ¨å¾ªç’°æˆ–開關敘述內"
-#: c-typeck.c:9171 cp/cp-gimplify.c:402
+#: c-typeck.c:9188 cp/cp-gimplify.c:402
#, gcc-internal-format
msgid "statement with no effect"
msgstr "敘述ä¸èµ·ä½œç”¨"
-#: c-typeck.c:9197
+#: c-typeck.c:9214
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr "é‹ç®—å¼æ•˜è¿°é¡žåž‹ä¸å®Œå…¨"
-#: c-typeck.c:9456 c-typeck.c:9491 c-typeck.c:9505
+#: c-typeck.c:9473 c-typeck.c:9508 c-typeck.c:9522
#, gcc-internal-format
msgid "conversion of scalar to vector involves truncation"
msgstr ""
-#: c-typeck.c:9933 cp/typeck.c:3926
+#: c-typeck.c:9950 cp/typeck.c:3939
#, gcc-internal-format
msgid "right shift count is negative"
msgstr "å³ç§»æ¬¡æ•¸ç‚ºè² "
-#: c-typeck.c:9944 cp/typeck.c:3933
+#: c-typeck.c:9961 cp/typeck.c:3946
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "å³ç§»æ¬¡æ•¸å¤§æ–¼æˆ–等於類型寬度"
-#: c-typeck.c:9985 cp/typeck.c:3955
+#: c-typeck.c:10002 cp/typeck.c:3968
#, gcc-internal-format
msgid "left shift count is negative"
msgstr "左移次數為負"
-#: c-typeck.c:9992 cp/typeck.c:3961
+#: c-typeck.c:10009 cp/typeck.c:3974
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr "左移次數大於或等於類型寬度"
-#: c-typeck.c:10015 c-typeck.c:10152
+#: c-typeck.c:10032 c-typeck.c:10169
#, fuzzy, gcc-internal-format
#| msgid "operands to ?: have different types"
msgid "comparing vectors with different element types"
msgstr "?: çš„é‹ç®—元有ä¸åŒçš„é¡žåž‹"
-#: c-typeck.c:10022 c-typeck.c:10159
+#: c-typeck.c:10039 c-typeck.c:10176
#, gcc-internal-format
msgid "comparing vectors with different number of elements"
msgstr ""
-#: c-typeck.c:10038 cp/typeck.c:4007
+#: c-typeck.c:10055 cp/typeck.c:4020
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "使用 == 或 != 比較浮點數是ä¸å®‰å…¨çš„"
-#: c-typeck.c:10055 c-typeck.c:10075
+#: c-typeck.c:10072 c-typeck.c:10092
#, gcc-internal-format
msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10061 c-typeck.c:10081
+#: c-typeck.c:10078 c-typeck.c:10098
#, gcc-internal-format
msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:10102 c-typeck.c:10202
+#: c-typeck.c:10119 c-typeck.c:10219
#, fuzzy, gcc-internal-format
#| msgid "comparison of distinct pointer types lacks a cast"
msgid "comparison of pointers to disjoint address spaces"
msgstr "比較ä¸ç›¸é—œçš„指標時缺少類型轉æ›"
-#: c-typeck.c:10109 c-typeck.c:10115
+#: c-typeck.c:10126 c-typeck.c:10132
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr "ISO C ä¸å…許在 %<void *%> 和函å¼æŒ‡æ¨™é–“比較"
-#: c-typeck.c:10122 c-typeck.c:10212
+#: c-typeck.c:10139 c-typeck.c:10229
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr "比較ä¸ç›¸é—œçš„指標時缺少類型轉æ›"
-#: c-typeck.c:10134 c-typeck.c:10139 c-typeck.c:10238 c-typeck.c:10243
+#: c-typeck.c:10151 c-typeck.c:10156 c-typeck.c:10255 c-typeck.c:10260
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr "比較指標和整數"
-#: c-typeck.c:10190
+#: c-typeck.c:10207
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr "在完全和ä¸å®Œå…¨æŒ‡æ¨™é–“比較"
-#: c-typeck.c:10192
+#: c-typeck.c:10209
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr "ISO C ä¸å…許函å¼æŒ‡æ¨™é–“比較大å°"
-#: c-typeck.c:10197
+#: c-typeck.c:10214
#, fuzzy, gcc-internal-format
#| msgid "ordered comparison of pointer with integer zero"
msgid "ordered comparison of pointer with null pointer"
msgstr "指標與整數 0 比較大å°"
-#: c-typeck.c:10220 c-typeck.c:10223 c-typeck.c:10230 c-typeck.c:10233
-#: cp/typeck.c:4258 cp/typeck.c:4265
+#: c-typeck.c:10237 c-typeck.c:10240 c-typeck.c:10247 c-typeck.c:10250
+#: cp/typeck.c:4271 cp/typeck.c:4278
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr "指標與整數 0 比較大å°"
-#: c-typeck.c:10277 cp/typeck.c:4337
+#: c-typeck.c:10294 cp/typeck.c:4350
#, fuzzy, gcc-internal-format
#| msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "C++ 中ä¸å…許從 %qT 到 %qT çš„éš±å«è½‰æ›"
-#: c-typeck.c:10561
+#: c-typeck.c:10578
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr "需è¦æ¨™é‡æ™‚使用了ä¸èƒ½è¢«è½‰æ›ç‚ºæŒ‡æ¨™çš„陣列"
-#: c-typeck.c:10565
+#: c-typeck.c:10582
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr "需è¦æ¨™é‡æ™‚使用了çµæ§‹é¡žåž‹"
-#: c-typeck.c:10569
+#: c-typeck.c:10586
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr "需è¦æ¨™é‡æ™‚使用了è¯åˆé¡žåž‹"
-#: c-typeck.c:10580
+#: c-typeck.c:10597
#, fuzzy, gcc-internal-format
#| msgid "used struct type value where scalar is required"
msgid "used vector type where scalar is required"
msgstr "需è¦æ¨™é‡æ™‚使用了çµæ§‹é¡žåž‹"
-#: c-typeck.c:10734 cp/semantics.c:4205
+#: c-typeck.c:10751 cp/semantics.c:4202
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<restrict%>"
msgid "%qE has invalid type for %<reduction%>"
msgstr "錯誤地使用了 %<restrict%>"
-#: c-typeck.c:10771 cp/semantics.c:4220
+#: c-typeck.c:10788 cp/semantics.c:4217
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:10788 cp/semantics.c:4230
+#: c-typeck.c:10805 cp/semantics.c:4227
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:10798 cp/semantics.c:3998
+#: c-typeck.c:10815 cp/semantics.c:3995
#, fuzzy, gcc-internal-format
#| msgid "%qT is not an accessible base of %qT"
msgid "%qE is not a variable in clause %qs"
msgstr "%qT 是 %qT 的一個ä¸å¯å­˜å–的基礎類別"
-#: c-typeck.c:10806 c-typeck.c:10828 c-typeck.c:10850
+#: c-typeck.c:10823 c-typeck.c:10845 c-typeck.c:10867
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:10821 cp/semantics.c:4021
+#: c-typeck.c:10838 cp/semantics.c:4018
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: c-typeck.c:10843 cp/semantics.c:4043
+#: c-typeck.c:10860 cp/semantics.c:4040
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: c-typeck.c:10911 cp/semantics.c:4276
+#: c-typeck.c:10928 cp/semantics.c:4273
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: c-typeck.c:11013
+#: c-typeck.c:11030
#, gcc-internal-format
msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
@@ -17417,7 +17453,7 @@ msgstr ""
msgid "function call has aggregate value"
msgstr "函å¼å‘¼å«æœ‰èšåˆé¡žåž‹"
-#: cfgexpand.c:1245 function.c:1010 varasm.c:1992
+#: cfgexpand.c:1245 function.c:1010 varasm.c:1998
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr "變數 %q+D 的大å°å¤ªå¤§"
@@ -18258,54 +18294,54 @@ msgstr "%s:無法開啟 COFF 檔案"
msgid "library lib%s not found"
msgstr "找ä¸åˆ°å‡½å¼åº« lib%s"
-#: convert.c:88
+#: convert.c:83
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr "無法轉æ›ç‚ºæŒ‡æ¨™é¡žåž‹"
-#: convert.c:389
+#: convert.c:384
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr "需è¦æµ®é»žæ•¸å€¼æ™‚使用了指標值"
-#: convert.c:393
+#: convert.c:388
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr "需è¦æµ®é»žæ•¸æ™‚使用了èšåˆå€¼"
-#: convert.c:418
+#: convert.c:413
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr "轉æ›ç‚ºä¸å®Œå…¨é¡žåž‹"
-#: convert.c:883 convert.c:959
+#: convert.c:881 convert.c:957
#, fuzzy, gcc-internal-format
#| msgid "can't convert between vector values of different size"
msgid "can%'t convert between vector values of different size"
msgstr "ä¸èƒ½åœ¨ä¸åŒå¤§å°çš„å‘é‡é¡žåž‹é–“進行轉æ›"
-#: convert.c:889
+#: convert.c:887
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr "需è¦æ•´æ•¸æ™‚使用了èšåˆå€¼"
-#: convert.c:939
+#: convert.c:937
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr "需è¦è¤‡æ•¸æ™‚使用了指標值"
-#: convert.c:943
+#: convert.c:941
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr "需è¦è¤‡æ•¸æ™‚使用了èšåˆå€¼"
-#: convert.c:965
+#: convert.c:963
#, fuzzy, gcc-internal-format
#| msgid "can't convert value to a vector"
msgid "can%'t convert value to a vector"
msgstr "ä¸èƒ½å°‡å€¼è½‰æ›ç‚ºå‘é‡"
-#: convert.c:1004
+#: convert.c:1002
#, fuzzy, gcc-internal-format
#| msgid "aggregate value used where a float was expected"
msgid "aggregate value used where a fixed-point was expected"
@@ -18467,7 +18503,7 @@ msgstr "%d 的主導者應該為 %d,而ä¸æ˜¯ %d"
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr ""
-#: dwarf2out.c:10704
+#: dwarf2out.c:10710
#, gcc-internal-format, gfc-internal-format
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -18557,46 +18593,46 @@ msgstr "verify_eh_tree 失敗"
msgid "stack limits not supported on this target"
msgstr "堆疊é™åˆ¶åœ¨æ­¤ç›®æ¨™å¹³è‡ºä¸Šä¸å—支æ´"
-#: expmed.c:1786
+#: expmed.c:1806
#, gcc-internal-format
msgid "multiple accesses to volatile structure member because of packed attribute"
msgstr ""
-#: expmed.c:1790
+#: expmed.c:1810
#, gcc-internal-format
msgid "multiple accesses to volatile structure bitfield because of packed attribute"
msgstr ""
-#: expmed.c:1800
+#: expmed.c:1820
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure member"
msgstr "為çµæ§‹æ¬„ä½ %qs 指定了存儲類別"
-#: expmed.c:1803
+#: expmed.c:1823
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for structure field %qs"
msgid "mis-aligned access used for structure bitfield"
msgstr "為çµæ§‹æ¬„ä½ %qs 指定了存儲類別"
-#: expmed.c:1809
+#: expmed.c:1829
#, gcc-internal-format
msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access"
msgstr ""
-#: expr.c:7523
+#: expr.c:7498
#, fuzzy, gcc-internal-format
#| msgid "global register variable %qD used in nested function"
msgid "local frame unavailable (naked function?)"
msgstr "巢狀函å¼ä¸­ä½¿ç”¨äº†å…¨åŸŸæš«å­˜å™¨è®Šæ•¸ %qD"
-#: expr.c:9996
+#: expr.c:9971
#, fuzzy, gcc-internal-format
#| msgid "function %q+D redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr "å‡½å¼ %q+D é‡å®£å‘Šç‚ºå¸¶æœ‰ä¸å¯å…§è¯å±¬æ€§"
-#: expr.c:10003
+#: expr.c:9978
#, fuzzy, gcc-internal-format
#| msgid "function %q+D redeclared with attribute noinline"
msgid "%Kcall to %qs declared with attribute warning: %s"
@@ -18677,7 +18713,7 @@ msgstr ""
msgid "assuming signed overflow does not occur when combining constants around a comparison"
msgstr ""
-#: fold-const.c:14219
+#: fold-const.c:14225
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -18688,7 +18724,7 @@ msgstr ""
msgid "total size of local objects too large"
msgstr "%J局部物件的總大å°å¤ªå¤§"
-#: function.c:1732 gimplify.c:5156
+#: function.c:1732 gimplify.c:5163
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "%<asm%> 中ä¸å¯èƒ½çš„ç´„æŸ"
@@ -19181,84 +19217,84 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "樹檢查:需è¦é¡žåˆ¥ %qs,得到 %qs(%s) 在 %s,於 %s:%d"
-#: gimplify.c:2511
+#: gimplify.c:2518
#, fuzzy, gcc-internal-format
#| msgid "no return statement in function returning non-void"
msgid "using result of function returning %<void%>"
msgstr "在有回傳值的函å¼ä¸­æœªç™¼ç¾ return 敘述"
-#: gimplify.c:5041
+#: gimplify.c:5048
#, gcc-internal-format, gfc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr "組譯輸出 %d 中左值無效"
-#: gimplify.c:5157
+#: gimplify.c:5164
#, gcc-internal-format, gfc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:5179
+#: gimplify.c:5186
#, gcc-internal-format, gfc-internal-format
msgid "memory input %d is not directly addressable"
msgstr "記憶體輸入 %d ä¸å¯ç›´æŽ¥å®šå€"
-#: gimplify.c:5674
+#: gimplify.c:5681
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "threadprivate variable %qE used in untied task"
msgstr "巢狀函å¼ä¸­ä½¿ç”¨äº†æš«å­˜å™¨è®Šæ•¸ %qD"
-#: gimplify.c:5676 gimplify.c:5738
+#: gimplify.c:5683 gimplify.c:5745
#, gcc-internal-format
msgid "enclosing task"
msgstr ""
-#: gimplify.c:5735
+#: gimplify.c:5742
#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5740
+#: gimplify.c:5747
#, gcc-internal-format
msgid "enclosing parallel"
msgstr ""
-#: gimplify.c:5845
+#: gimplify.c:5852
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "iteration variable %qE should be private"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: gimplify.c:5859
+#: gimplify.c:5866
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "iteration variable %qE should not be firstprivate"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: gimplify.c:5862
+#: gimplify.c:5869
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "iteration variable %qE should not be reduction"
msgstr "巢狀函å¼ä¸­ä½¿ç”¨äº†æš«å­˜å™¨è®Šæ•¸ %qD"
-#: gimplify.c:6025
+#: gimplify.c:6032
#, fuzzy, gcc-internal-format
#| msgid "local variable %qD may not appear in this context"
msgid "%s variable %qE is private in outer context"
msgstr "局部變數 %qD ä¸æ‡‰å‡ºç¾åœ¨æ­¤ä¸Šä¸‹æ–‡ä¸­"
-#: gimplify.c:7787
+#: gimplify.c:7794
#, gcc-internal-format
msgid "gimplification failed"
msgstr "gimplification 失敗"
-#: godump.c:1214
+#: godump.c:1234
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not close Go dump file: %m"
msgstr "無法開啟傾å°æª”案 %qs:%s"
-#: godump.c:1226
+#: godump.c:1246
#, fuzzy, gcc-internal-format
#| msgid "could not open dump file %qs: %s"
msgid "could not open Go dump file %qs: %m"
@@ -19318,7 +19354,7 @@ msgstr "在樹層級進行循環最佳化"
#. Fatal error here. We do not want to support compiling ltrans units
#. with different version of compiler or different flags than the WPA
#. unit, so this should never happen.
-#: ipa-inline-analysis.c:3122
+#: ipa-inline-analysis.c:3123
#, gcc-internal-format
msgid "ipa inline summary is missing in input file"
msgstr ""
@@ -19469,48 +19505,48 @@ msgstr "æ¬„ä½ %qs 宣告為一個函å¼"
msgid "function %qD redeclared as variable"
msgstr "å‡½å¼ %q+D é‡å®£å‘Šç‚ºå…§è¯çš„"
-#: omp-low.c:1834
+#: omp-low.c:1846
#, gcc-internal-format
msgid "barrier region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1839
+#: omp-low.c:1851
#, gcc-internal-format
msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1869
#, gcc-internal-format
msgid "master region may not be closely nested inside of work-sharing or explicit task region"
msgstr ""
-#: omp-low.c:1872
+#: omp-low.c:1884
#, gcc-internal-format
msgid "ordered region may not be closely nested inside of critical or explicit task region"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1890
#, gcc-internal-format
msgid "ordered region must be closely nested inside a loop region with an ordered clause"
msgstr ""
-#: omp-low.c:1893
+#: omp-low.c:1905
#, gcc-internal-format
msgid "critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873
+#: omp-low.c:7024 cp/decl.c:2885 cp/parser.c:9862 cp/parser.c:9882
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:7014 omp-low.c:7019
+#: omp-low.c:7026 omp-low.c:7031
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:7022
+#: omp-low.c:7034
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
@@ -19627,7 +19663,7 @@ msgstr "-freorder-blocks-and-partition ä¸èƒ½åœ¨æ­¤æž¶æ§‹ä¸‹å·¥ä½œ"
msgid "-freorder-blocks-and-partition does not support unwind info on this architecture"
msgstr "-freorder-blocks-and-partition ä¸èƒ½åœ¨æ­¤æž¶æ§‹ä¸‹å·¥ä½œ"
-#: opts.c:753 config/pa/pa.c:521
+#: opts.c:753 config/pa/pa.c:524
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition ä¸èƒ½åœ¨æ­¤æž¶æ§‹ä¸‹å·¥ä½œ"
@@ -20006,9 +20042,9 @@ msgstr "無法將「%sã€åšç‚º %s 暫存器"
msgid "can%'t use %qs as a fixed register"
msgstr "無法將「%sã€åšç‚º %s 暫存器"
-#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756
-#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749
-#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205
+#: reginfo.c:864 config/ia64/ia64.c:5753 config/ia64/ia64.c:5760
+#: config/pa/pa.c:427 config/pa/pa.c:434 config/sh/sh.c:8761
+#: config/sh/sh.c:8768 config/spu/spu.c:5198 config/spu/spu.c:5205
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "ä¸æ˜Žçš„暫存器å:%s"
@@ -20093,12 +20129,12 @@ msgstr "在類別 %qs 中找ä¸åˆ°å¯æ¨å‡ºçš„暫存器"
msgid "%<asm%> operand requires impossible reload"
msgstr "%<asm%> è¦æ±‚ä¸å¯èƒ½çš„é‡æ–°è¼‰å…¥"
-#: reload1.c:6093
+#: reload1.c:6107
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr "%<asm%> é‹ç®—元的約æŸèˆ‡é‹ç®—元大å°ä¸ç›¸å®¹"
-#: reload1.c:7899
+#: reload1.c:7913
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "%<asm%> 的輸出é‹ç®—元是常數"
@@ -20322,7 +20358,7 @@ msgstr "packed 屬性導致低效率的å°é½Š"
msgid "packed attribute is unnecessary"
msgstr "ä¸éœ€è¦ packed 屬性"
-#: stor-layout.c:2026
+#: stor-layout.c:2244
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr "陣列元素的å°é½Šé‚Šç•Œæ¯”元素大å°é‚„è¦å¤§"
@@ -20551,7 +20587,7 @@ msgstr "啟用 DB 指令"
msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
msgstr ""
-#: trans-mem.c:664 trans-mem.c:4191
+#: trans-mem.c:664 trans-mem.c:4194
#, gcc-internal-format
msgid "unsafe function call %qD within atomic transaction"
msgstr ""
@@ -20567,7 +20603,7 @@ msgstr ""
msgid "unsafe indirect function call within atomic transaction"
msgstr "原本間接的函å¼å‘¼å«ä¸è¢«è€ƒæ…®å…§è¯"
-#: trans-mem.c:682 trans-mem.c:4124
+#: trans-mem.c:682 trans-mem.c:4127
#, gcc-internal-format
msgid "unsafe function call %qD within %<transaction_safe%> function"
msgstr ""
@@ -20582,7 +20618,7 @@ msgstr ""
msgid "unsafe indirect function call within %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:707 trans-mem.c:4163
+#: trans-mem.c:707 trans-mem.c:4166
#, fuzzy, gcc-internal-format
#| msgid "namespace %qD not allowed in using-declaration"
msgid "asm not allowed in atomic transaction"
@@ -20621,679 +20657,679 @@ msgstr ""
msgid "outer transaction in %<transaction_safe%> function"
msgstr ""
-#: trans-mem.c:3789
+#: trans-mem.c:3792
#, fuzzy, gcc-internal-format
#| msgid "attributes are not allowed on a function-definition"
msgid "%Kasm not allowed in %<transaction_safe%> function"
msgstr "函å¼å®šç¾©ä¸­ä¸å…許有屬性"
-#: tree-cfg.c:2616
+#: tree-cfg.c:2636
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2621
+#: tree-cfg.c:2641
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2632
+#: tree-cfg.c:2652
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2661
+#: tree-cfg.c:2681
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2667 tree-cfg.c:3950
+#: tree-cfg.c:2687 tree-cfg.c:3970
#, gcc-internal-format
msgid "INDIRECT_REF in gimple IL"
msgstr ""
-#: tree-cfg.c:2675
+#: tree-cfg.c:2695
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid first operand of MEM_REF"
msgstr "%%R çš„é‹ç®—元無效"
-#: tree-cfg.c:2681
+#: tree-cfg.c:2701
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand of MEM_REF"
msgstr "%%R çš„é‹ç®—元無效"
-#: tree-cfg.c:2694
+#: tree-cfg.c:2714
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2700
+#: tree-cfg.c:2720
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples"
msgstr ""
-#: tree-cfg.c:2727 tree-ssa.c:880
+#: tree-cfg.c:2747 tree-ssa.c:880
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2738
+#: tree-cfg.c:2758
#, fuzzy, gcc-internal-format
#| msgid "non-boolean used in condition"
msgid "non-integral used in condition"
msgstr "æ¢ä»¶é‹ç®—å¼ä½¿ç”¨äº†éžå¸ƒæž—值"
-#: tree-cfg.c:2743
+#: tree-cfg.c:2763
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr "無效的æ¢ä»¶é‹ç®—å…ƒ"
-#: tree-cfg.c:2790
+#: tree-cfg.c:2810
#, fuzzy, gcc-internal-format
#| msgid "invalid constraints for operand"
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr "é‹ç®—元的約æŸç„¡æ•ˆ"
-#: tree-cfg.c:2797
+#: tree-cfg.c:2817
#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2805
+#: tree-cfg.c:2825
#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2816
+#: tree-cfg.c:2836
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "無效的åƒç…§å­—首"
-#: tree-cfg.c:2827
+#: tree-cfg.c:2847
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand to plus/minus, type is a pointer"
msgstr "此指令中é‹ç®—元無效"
-#: tree-cfg.c:2838
+#: tree-cfg.c:2858
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:2844
+#: tree-cfg.c:2864
#, gcc-internal-format
msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width"
msgstr ""
-#: tree-cfg.c:2895
+#: tree-cfg.c:2915
#, gcc-internal-format
msgid "invalid CASE_CHAIN"
msgstr ""
-#: tree-cfg.c:2923
+#: tree-cfg.c:2943
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid expression for min lvalue"
msgstr "無效的é‹ç®—å¼åšç‚ºé‹ç®—å…ƒ"
-#: tree-cfg.c:2934
+#: tree-cfg.c:2954
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in indirect reference"
msgstr "此指令中é‹ç®—元無效"
-#: tree-cfg.c:2963
+#: tree-cfg.c:2983
#, fuzzy, gcc-internal-format
#| msgid "Invalid form of array reference at %C"
msgid "invalid operands to array reference"
msgstr "%C 處陣列åƒç…§å½¢å¼ç„¡æ•ˆ"
-#: tree-cfg.c:2974
+#: tree-cfg.c:2994
#, fuzzy, gcc-internal-format
#| msgid "Rank mismatch in array reference at %L (%d/%d)"
msgid "type mismatch in array reference"
msgstr "%L 處陣列åƒç…§ä¸­ç§©ä¸åŒ¹é…(%d/%d)"
-#: tree-cfg.c:2983
+#: tree-cfg.c:3003
#, fuzzy, gcc-internal-format
#| msgid "Rank mismatch in array reference at %L (%d/%d)"
msgid "type mismatch in array range reference"
msgstr "%L 處陣列åƒç…§ä¸­ç§©ä¸åŒ¹é…(%d/%d)"
-#: tree-cfg.c:2994
+#: tree-cfg.c:3014
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in real/imagpart reference"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3004
+#: tree-cfg.c:3024
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in component reference"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3021
+#: tree-cfg.c:3041
#, gcc-internal-format
msgid "conversion of an SSA_NAME on the left hand side"
msgstr ""
-#: tree-cfg.c:3028
+#: tree-cfg.c:3048
#, fuzzy, gcc-internal-format
#| msgid "cast from pointer to integer of different size"
msgid "conversion of register to a different size"
msgstr "當將一個指標轉æ›ç‚ºå¤§å°ä¸åŒçš„整數時給出警告"
-#: tree-cfg.c:3043
+#: tree-cfg.c:3063
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid address operand in MEM_REF"
msgstr "%%R çš„é‹ç®—元無效"
-#: tree-cfg.c:3050
+#: tree-cfg.c:3070
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%R"
msgid "invalid offset operand in MEM_REF"
msgstr "%%R çš„é‹ç®—元無效"
-#: tree-cfg.c:3060
+#: tree-cfg.c:3080
#, gcc-internal-format
msgid "invalid address operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3067
+#: tree-cfg.c:3087
#, gcc-internal-format
msgid "invalid offset operand in TARGET_MEM_REF"
msgstr ""
-#: tree-cfg.c:3121
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "gimple call has two targets"
msgstr ""
-#: tree-cfg.c:3130
+#: tree-cfg.c:3150
#, gcc-internal-format
msgid "gimple call has no target"
msgstr ""
-#: tree-cfg.c:3137
+#: tree-cfg.c:3157
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid function in gimple call"
msgstr "無效的函å¼å®£å‘Š"
-#: tree-cfg.c:3147
+#: tree-cfg.c:3167
#, fuzzy, gcc-internal-format
#| msgid "function not inlinable"
msgid "non-function in gimple call"
msgstr "函å¼ä¸èƒ½å…§è¯"
-#: tree-cfg.c:3158
+#: tree-cfg.c:3178
#, fuzzy, gcc-internal-format
#| msgid "invalid storage class for function %qs"
msgid "invalid pure const state for function"
msgstr "å‡½å¼ %qs 的存儲類別無效"
-#: tree-cfg.c:3166
+#: tree-cfg.c:3186
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid LHS in gimple call"
msgstr "列號表中 PC 無效"
-#: tree-cfg.c:3172
+#: tree-cfg.c:3192
#, gcc-internal-format
msgid "LHS in noreturn call"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:3209
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid conversion in gimple call"
msgstr "å‘ %<__fpreg%> 的轉æ›ç„¡æ•ˆ"
-#: tree-cfg.c:3198
+#: tree-cfg.c:3218
#, fuzzy, gcc-internal-format
#| msgid "invalid PC in line number table"
msgid "invalid static chain in gimple call"
msgstr "列號表中 PC 無效"
-#: tree-cfg.c:3209
+#: tree-cfg.c:3229
#, gcc-internal-format
msgid "static chain in indirect gimple call"
msgstr ""
-#: tree-cfg.c:3216
+#: tree-cfg.c:3236
#, gcc-internal-format
msgid "static chain with function that doesn%'t use one"
msgstr ""
-#: tree-cfg.c:3234
+#: tree-cfg.c:3254
#, fuzzy, gcc-internal-format
#| msgid "invalid argument to builtin function"
msgid "invalid argument to gimple call"
msgstr "給內建函å¼çš„引數無效"
-#: tree-cfg.c:3254
+#: tree-cfg.c:3274
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in gimple comparison"
msgstr "此指令中é‹ç®—元無效"
-#: tree-cfg.c:3270
+#: tree-cfg.c:3290
#, gcc-internal-format
msgid "mismatching comparison operand types"
msgstr ""
-#: tree-cfg.c:3289
+#: tree-cfg.c:3309
#, gcc-internal-format
msgid "non-vector operands in vector comparison"
msgstr ""
-#: tree-cfg.c:3299
+#: tree-cfg.c:3319
#, fuzzy, gcc-internal-format
#| msgid "invalid covariant return type for %q+#D"
msgid "invalid vector comparison resulting type"
msgstr "%q+#D çš„å”變回傳類型無效"
-#: tree-cfg.c:3306
+#: tree-cfg.c:3326
#, gcc-internal-format
msgid "bogus comparison result type"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3348
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3334
+#: tree-cfg.c:3354
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in unary operation"
msgstr "此指令中é‹ç®—元無效"
-#: tree-cfg.c:3366
+#: tree-cfg.c:3386
#, fuzzy, gcc-internal-format
#| msgid "Bad type in constant expression"
msgid "invalid types in nop conversion"
msgstr "常數é‹ç®—å¼ä¸­é¡žåž‹éŒ¯èª¤"
-#: tree-cfg.c:3381
+#: tree-cfg.c:3401
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid types in address space conversion"
msgstr "無效的é‹ç®—å¼åšç‚ºé‹ç®—å…ƒ"
-#: tree-cfg.c:3395
+#: tree-cfg.c:3415
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid types in fixed-point conversion"
msgstr "此指令中é‹ç®—元無效"
-#: tree-cfg.c:3410
+#: tree-cfg.c:3430
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid types in conversion to floating point"
msgstr "å‘ %<__fpreg%> 的轉æ›ç„¡æ•ˆ"
-#: tree-cfg.c:3425
+#: tree-cfg.c:3445
#, fuzzy, gcc-internal-format
#| msgid "invalid conversion to %<__fpreg%>"
msgid "invalid types in conversion to integer"
msgstr "å‘ %<__fpreg%> 的轉æ›ç„¡æ•ˆ"
-#: tree-cfg.c:3459
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3484
+#: tree-cfg.c:3504
#, fuzzy, gcc-internal-format
#| msgid "Elemental binary operation"
msgid "non-register as LHS of binary operation"
msgstr "基本的二元作業"
-#: tree-cfg.c:3491
+#: tree-cfg.c:3511
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operands in binary operation"
msgstr "二進ä½é‹ç®—å­ %s é‹ç®—元無效"
-#: tree-cfg.c:3506
+#: tree-cfg.c:3526
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in complex expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3535
+#: tree-cfg.c:3555
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in shift expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3558
+#: tree-cfg.c:3578
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector shift expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3571
+#: tree-cfg.c:3591
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3585 tree-cfg.c:3606
+#: tree-cfg.c:3605 tree-cfg.c:3626
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening vector shift expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3628
+#: tree-cfg.c:3648
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3648
+#: tree-cfg.c:3668
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid (pointer) operands to plus/minus"
msgstr "二進ä½é‹ç®—å­ %s é‹ç®—元無效"
-#: tree-cfg.c:3663
+#: tree-cfg.c:3683
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in pointer plus expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3740
+#: tree-cfg.c:3760
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in binary expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3768
+#: tree-cfg.c:3788
#, gcc-internal-format
msgid "non-register as LHS of ternary operation"
msgstr ""
-#: tree-cfg.c:3777
+#: tree-cfg.c:3797
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operands in ternary operation"
msgstr "此指令中é‹ç®—元無效"
-#: tree-cfg.c:3793
+#: tree-cfg.c:3813
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in widening multiply-accumulate expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3807
+#: tree-cfg.c:3827
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in fused multiply-add expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3833
+#: tree-cfg.c:3853
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in vector permute expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3845
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "vector types expected in vector permute expression"
msgstr ""
-#: tree-cfg.c:3859
+#: tree-cfg.c:3879
#, gcc-internal-format
msgid "vectors with different element number found in vector permute expression"
msgstr ""
-#: tree-cfg.c:3872
+#: tree-cfg.c:3892
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid mask type in vector permute expression"
msgstr "å° void é‹ç®—å¼çš„無效使用"
-#: tree-cfg.c:3908
+#: tree-cfg.c:3928
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "non-trivial conversion at assignment"
msgstr "賦值é‹ç®—中的左值無效"
-#: tree-cfg.c:3925
+#: tree-cfg.c:3945
#, fuzzy, gcc-internal-format
#| msgid "invalid operands to binary %s"
msgid "invalid operand in unary expression"
msgstr "二進ä½é‹ç®—å­ %s é‹ç®—元無效"
-#: tree-cfg.c:3939
+#: tree-cfg.c:3959
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in address expression"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: tree-cfg.c:3965 tree-cfg.c:3991
+#: tree-cfg.c:3985 tree-cfg.c:4011
#, fuzzy, gcc-internal-format
#| msgid "invalid indirect memory address"
msgid "invalid rhs for gimple memory store"
msgstr "無效的間接記憶體ä½å€"
-#: tree-cfg.c:4053
+#: tree-cfg.c:4073
#, fuzzy, gcc-internal-format
#| msgid "invalid operand in the instruction"
msgid "invalid operand in return statement"
msgstr "此指令中é‹ç®—元無效"
-#: tree-cfg.c:4067
+#: tree-cfg.c:4087
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in asm statement"
msgid "invalid conversion in return statement"
msgstr "asm 敘述中出ç¾ç„¡æ•ˆçš„左值"
-#: tree-cfg.c:4091
+#: tree-cfg.c:4111
#, fuzzy, gcc-internal-format
#| msgid "subscripted value is neither array nor pointer"
msgid "goto destination is neither a label nor a pointer"
msgstr "下標é‹ç®—çš„å·¦é‹ç®—元既éžé™£åˆ—也éžæŒ‡æ¨™"
-#: tree-cfg.c:4106
+#: tree-cfg.c:4126
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%s code"
msgid "invalid operand to switch statement"
msgstr "%%s 程å¼ç¢¼çš„é‹ç®—元無效"
-#: tree-cfg.c:4148
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map"
msgstr ""
-#: tree-cfg.c:4158
+#: tree-cfg.c:4178
#, fuzzy, gcc-internal-format
#| msgid "format string has invalid operand number"
msgid "incorrect setting of landing pad number"
msgstr "æ ¼å¼å­—串的é‹ç®—元號無效"
-#: tree-cfg.c:4186
+#: tree-cfg.c:4206
#, fuzzy, gcc-internal-format
#| msgid "invalid operand to %%p code"
msgid "invalid comparison code in gimple cond"
msgstr "%%p 程å¼ç¢¼çš„é‹ç®—元無效"
-#: tree-cfg.c:4194
+#: tree-cfg.c:4214
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in increment"
msgid "invalid labels in gimple cond"
msgstr "自增é‹ç®—中的左值無效"
-#: tree-cfg.c:4255 tree-cfg.c:4264
+#: tree-cfg.c:4275 tree-cfg.c:4284
#, fuzzy, gcc-internal-format
#| msgid "invalid address"
msgid "invalid PHI result"
msgstr "無效ä½å€"
-#: tree-cfg.c:4274
+#: tree-cfg.c:4294
#, fuzzy, gcc-internal-format
#| msgid "missing definition"
msgid "missing PHI def"
msgstr "定義缺失"
-#: tree-cfg.c:4288
+#: tree-cfg.c:4308
#, fuzzy, gcc-internal-format
#| msgid "invalid IACC argument"
msgid "invalid PHI argument"
msgstr "無效的 IACC 引數"
-#: tree-cfg.c:4295
+#: tree-cfg.c:4315
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "incompatible types in assignment"
msgid "incompatible types in PHI argument %u"
msgstr "賦值時類型ä¸ç›¸å®¹"
-#: tree-cfg.c:4379 tree-cfg.c:4575
+#: tree-cfg.c:4399 tree-cfg.c:4595
#, fuzzy, gcc-internal-format
#| msgid "verify_stmts failed"
msgid "verify_gimple failed"
msgstr "verify_stmts 失敗"
-#: tree-cfg.c:4440
+#: tree-cfg.c:4460
#, gcc-internal-format
msgid "dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4474
+#: tree-cfg.c:4494
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4486 tree-cfg.c:4520
+#: tree-cfg.c:4506 tree-cfg.c:4540
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr "å°æ¨¹çµå€æ®µçš„共享ä¸æ­£ç¢º"
-#: tree-cfg.c:4509
+#: tree-cfg.c:4529
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4535
+#: tree-cfg.c:4555
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "in statement"
msgstr "需è¦æ•˜è¿°"
-#: tree-cfg.c:4550
+#: tree-cfg.c:4570
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4557
+#: tree-cfg.c:4577
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4598
+#: tree-cfg.c:4618
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4624
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4611
+#: tree-cfg.c:4631
#, gcc-internal-format, gfc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4635
+#: tree-cfg.c:4655
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4644
+#: tree-cfg.c:4664
#, gcc-internal-format
msgid "EH landing pad label "
msgstr ""
-#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687
+#: tree-cfg.c:4673 tree-cfg.c:4682 tree-cfg.c:4707
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4677
+#: tree-cfg.c:4697
#, gcc-internal-format, gfc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr "基本å€å¡Š %d 中出ç¾æµç¨‹æŽ§åˆ¶"
-#: tree-cfg.c:4710
+#: tree-cfg.c:4730
#, gcc-internal-format, gfc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4723
+#: tree-cfg.c:4743
#, gcc-internal-format, gfc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854
+#: tree-cfg.c:4766 tree-cfg.c:4788 tree-cfg.c:4805 tree-cfg.c:4874
#, gcc-internal-format, gfc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4756
+#: tree-cfg.c:4776
#, gcc-internal-format, gfc-internal-format
msgid "explicit goto at end of bb %d"
msgstr "基本å€å¡Š %d 末尾明確的 goto"
-#: tree-cfg.c:4790
+#: tree-cfg.c:4810
#, gcc-internal-format, gfc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4820
+#: tree-cfg.c:4840
#, fuzzy, gcc-internal-format
#| msgid "found default case not at end of case vector"
msgid "found default case not at the start of case vector"
msgstr "é è¨­ case 沒有出ç¾åœ¨ case å‘é‡æœ«å°¾"
-#: tree-cfg.c:4828
+#: tree-cfg.c:4848
#, fuzzy, gcc-internal-format
#| msgid "case labels not sorted:"
msgid "case labels not sorted: "
msgstr "case 標籤未排åºï¼š "
-#: tree-cfg.c:4845
+#: tree-cfg.c:4865
#, gcc-internal-format, gfc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr "多餘的出邊 %d->%d"
-#: tree-cfg.c:4868
+#: tree-cfg.c:4888
#, gcc-internal-format, gfc-internal-format
msgid "missing edge %i->%i"
msgstr "缺少邊 %i->%i"
-#: tree-cfg.c:7524
+#: tree-cfg.c:7544
#, fuzzy, gcc-internal-format
#| msgid "%H%<noreturn%> function does return"
msgid "%<noreturn%> function does return"
msgstr "%H%<noreturn%> 函å¼ç¢ºå¯¦æœƒå›žå‚³"
-#: tree-cfg.c:7544
+#: tree-cfg.c:7564
#, fuzzy, gcc-internal-format
#| msgid "%Hcontrol reaches end of non-void function"
msgid "control reaches end of non-void function"
msgstr "%H在有回傳值的函å¼ä¸­ï¼ŒæŽ§åˆ¶æµç¨‹åˆ°é”函å¼å°¾"
-#: tree-cfg.c:7682
+#: tree-cfg.c:7702
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of %qD, declared with attribute warn_unused_result"
msgid "ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr "%H忽略宣告有 warn_unused_result 屬性的 %qD 的回傳值"
-#: tree-cfg.c:7687
+#: tree-cfg.c:7707
#, fuzzy, gcc-internal-format
#| msgid "%Hignoring return value of function declared with attribute warn_unused_result"
msgid "ignoring return value of function declared with attribute warn_unused_result"
@@ -21361,75 +21397,75 @@ msgstr "標籤 %s 在基本å€å¡Š %d 中上下文ä¸æ­£ç¢º"
msgid "BB %i has incorrect fallthru edge"
msgstr "直通邊上的錯誤指令"
-#: tree-inline.c:3020
+#: tree-inline.c:3040
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it receives a non-local goto"
msgid "function %q+F can never be copied because it receives a non-local goto"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºå®ƒæŽ¥å—一個éžå€åŸŸæ€§çš„ goto"
-#: tree-inline.c:3034
+#: tree-inline.c:3054
#, fuzzy, gcc-internal-format
#| msgid "function %q+F can never be inlined because it uses variable sized variables"
msgid "function %q+F can never be copied because it saves address of local label in a static variable"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºä½¿ç”¨äº†è®Šé•·è®Šæ•¸"
-#: tree-inline.c:3074
+#: tree-inline.c:3094
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºå®ƒä½¿ç”¨äº† alloca (使用 always_inline 屬性強制內è¯)"
-#: tree-inline.c:3088
+#: tree-inline.c:3108
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºå®ƒä½¿ç”¨äº† setjmp"
-#: tree-inline.c:3102
+#: tree-inline.c:3122
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses variable argument lists"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºå®ƒä½¿ç”¨äº†è®Šé•·å¼•æ•¸è¡¨"
-#: tree-inline.c:3114
+#: tree-inline.c:3134
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºå®ƒä½¿ç”¨äº† setjmp-longjmp 異常處ç†"
-#: tree-inline.c:3122
+#: tree-inline.c:3142
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºä½¿ç”¨äº†éžå€åŸŸæ€§çš„ goto"
-#: tree-inline.c:3134
+#: tree-inline.c:3154
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºä½¿ç”¨äº† __builtin_return 或 __builtin_apply_args"
-#: tree-inline.c:3154
+#: tree-inline.c:3174
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºåŒ…å«ä¸€å€‹åŸ·è¡Œæ™‚ goto"
-#: tree-inline.c:3234
+#: tree-inline.c:3254
#, gcc-internal-format
msgid "function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºä½¿ç”¨äº† -fno-inline"
-#: tree-inline.c:3242
+#: tree-inline.c:3262
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining"
msgstr "å‡½å¼ %q+F 無法被內è¯ï¼Œå› ç‚ºå®ƒä½¿ç”¨äº†èˆ‡å…§è¯è¡çªçš„屬性"
-#: tree-inline.c:3823
+#: tree-inline.c:3843
#, fuzzy, gcc-internal-format
#| msgid "inlining failed in call to %q+F: %s"
msgid "inlining failed in call to always_inline %q+F: %s"
msgstr "å‘¼å« %q+F 時內è¯å¤±æ•—:%s"
-#: tree-inline.c:3825 tree-inline.c:3840
+#: tree-inline.c:3845 tree-inline.c:3860
#, gcc-internal-format
msgid "called from here"
msgstr "從此處呼å«"
-#: tree-inline.c:3838
+#: tree-inline.c:3858
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr "å‘¼å« %q+F 時內è¯å¤±æ•—:%s"
@@ -21644,7 +21680,7 @@ msgstr ""
msgid "verify_ssa failed"
msgstr "verify_ssa 失敗"
-#: tree-ssa.c:1616 varasm.c:321
+#: tree-ssa.c:1616 varasm.c:326
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%qD was declared here"
@@ -21708,57 +21744,57 @@ msgstr ""
msgid "vector operation will be expanded with a single scalar operation"
msgstr ""
-#: tree-vect-generic.c:661
+#: tree-vect-generic.c:656
#, gcc-internal-format
msgid "vector shuffling operation will be expanded piecewise"
msgstr ""
-#: tree-vrp.c:5295
+#: tree-vrp.c:5300
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is outside array bounds"
msgstr "陣列下標ä¸æ˜¯ä¸€å€‹æ•´æ•¸"
-#: tree-vrp.c:5307 tree-vrp.c:5394
+#: tree-vrp.c:5312 tree-vrp.c:5399
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is above array bounds"
msgstr "陣列下標ä¸æ˜¯ä¸€å€‹æ•´æ•¸"
-#: tree-vrp.c:5314 tree-vrp.c:5382
+#: tree-vrp.c:5319 tree-vrp.c:5387
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript is below array bounds"
msgstr "陣列下標ä¸æ˜¯ä¸€å€‹æ•´æ•¸"
-#: tree-vrp.c:6023
+#: tree-vrp.c:6028
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional to constant"
msgstr ""
-#: tree-vrp.c:6029
+#: tree-vrp.c:6034
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:6073
+#: tree-vrp.c:6078
#, fuzzy, gcc-internal-format
#| msgid "comparison is always false due to limited range of data type"
msgid "comparison always false due to limited range of data type"
msgstr "由於資料類型範åœé™åˆ¶ï¼Œæ¯”較çµæžœæ°¸é ç‚ºå‡"
-#: tree-vrp.c:6075
+#: tree-vrp.c:6080
#, fuzzy, gcc-internal-format
#| msgid "comparison is always true due to limited range of data type"
msgid "comparison always true due to limited range of data type"
msgstr "由於資料類型範åœé™åˆ¶ï¼Œæ¯”較çµæžœæ°¸é ç‚ºçœŸ"
-#: tree-vrp.c:6857
+#: tree-vrp.c:6871
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %<>>%> or %<&%>"
msgstr ""
-#: tree-vrp.c:6939
+#: tree-vrp.c:6953
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
@@ -21769,22 +21805,22 @@ msgstr ""
msgid "ignoring attributes applied to %qT after definition"
msgstr "åªèƒ½ç‚ºé¡žåˆ¥å®šç¾©å¥—用 %qE 屬性"
-#: tree.c:5459
+#: tree.c:5460
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr "%q+D 已被宣告為具有 dllexport 屬性:忽略 dllimport"
-#: tree.c:5471
+#: tree.c:5472
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage"
msgstr "%q+D é‡å®£å‘Šæ™‚沒有 dllimport 屬性,但已被åšç‚º dllimport 連çµåƒç…§éŽ"
-#: tree.c:5486
+#: tree.c:5487
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr "%q+D é‡å®£å‘Šæ™‚沒有 dllimport 屬性:忽略先å‰çš„ dllimport"
-#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865
+#: tree.c:5530 tree.c:5542 tree.c:5552 c-family/c-common.c:5865
#: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930
#: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002
#: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066
@@ -21799,152 +21835,152 @@ msgstr "%q+D é‡å®£å‘Šæ™‚沒有 dllimport 屬性:忽略先å‰çš„ dllimport"
#: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994
#: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260
#: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035
-#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418
-#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845
-#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035
-#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215
+#: config/arm/arm.c:5052 config/avr/avr.c:6763 config/h8300/h8300.c:5418
+#: config/h8300/h8300.c:5442 config/i386/i386.c:4939 config/i386/i386.c:31897
+#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24321 config/spu/spu.c:4035
+#: ada/gcc-interface/utils.c:5505 lto/lto-lang.c:215
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr "%qE 屬性被忽略"
-#: tree.c:5569
+#: tree.c:5570
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr "å…§è¯å‡½å¼ %q+D 宣告為 dllimport:忽略此屬性"
-#: tree.c:5577
+#: tree.c:5578
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr "å‡½å¼ %q+D 的定義被標記為 dllimport"
-#: tree.c:5585
+#: tree.c:5586
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr "變數 %q+D 的定義被標記為 dllimport"
-#: tree.c:5613
+#: tree.c:5614
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:5627
+#: tree.c:5628
#, gcc-internal-format
msgid "%qE implies default visibility, but %qD has already been declared with a different visibility"
msgstr ""
-#: tree.c:7377
+#: tree.c:7378
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr "函å¼é™£åˆ—是沒有æ„義的"
-#: tree.c:7544
+#: tree.c:7545
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr "函å¼ä¸èƒ½å›žå‚³å‡½å¼"
-#: tree.c:8840 tree.c:8925 tree.c:8986
+#: tree.c:8844 tree.c:8929 tree.c:8990
#, gcc-internal-format, gfc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr "樹檢查:%s,得到 %s 在 %s,於 %s:%d"
-#: tree.c:8877
+#: tree.c:8881
#, gcc-internal-format, gfc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr "樹檢查:ä¸éœ€è¦ %s,得到 %s 在 %s,於 %s:%d"
-#: tree.c:8890
+#: tree.c:8894
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "樹檢查:需è¦é¡žåˆ¥ %qs,得到 %qs(%s) 在 %s,於 %s:%d"
-#: tree.c:8939
+#: tree.c:8943
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr "樹檢查:需è¦é¡žåˆ¥ %qs,得到 %qs(%s) 在 %s,於 %s:%d"
-#: tree.c:8952
+#: tree.c:8956
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr "樹檢查:ä¸éœ€è¦ %s,得到 %s 在 %s,於 %s:%d"
-#: tree.c:9012
+#: tree.c:9016
#, fuzzy, gcc-internal-format
#| msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
msgstr "樹檢查:需è¦åŒ…å« %qs çµæ§‹çš„樹,得到 %s 在 %s,於 %s:%d"
-#: tree.c:9026
+#: tree.c:9030
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:9039
+#: tree.c:9043
#, gcc-internal-format, gfc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:9052
+#: tree.c:9056
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d"
msgstr "樹檢查:ä¸éœ€è¦ %s,得到 %s 在 %s,於 %s:%d"
-#: tree.c:11336
+#: tree.c:11340
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr "%qs å·²éŽæ™‚(æ–¼ %s:%d 宣告)"
-#: tree.c:11340
+#: tree.c:11344
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qD is deprecated (declared at %s:%d)"
msgstr "%qs å·²éŽæ™‚(æ–¼ %s:%d 宣告)"
-#: tree.c:11365
+#: tree.c:11369
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr "%qs å·²éŽæ™‚(æ–¼ %s:%d 宣告)"
-#: tree.c:11369
+#: tree.c:11373
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated (declared at %s:%d)"
msgid "%qE is deprecated (declared at %s:%d)"
msgstr "%qs å·²éŽæ™‚(æ–¼ %s:%d 宣告)"
-#: tree.c:11376
+#: tree.c:11380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated (declared at %s:%d)"
msgid "type is deprecated (declared at %s:%d): %s"
msgstr "é¡žåž‹å·²éŽæ™‚(æ–¼ %s:%d 宣告)"
-#: tree.c:11380
+#: tree.c:11384
#, gcc-internal-format, gfc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr "é¡žåž‹å·²éŽæ™‚(æ–¼ %s:%d 宣告)"
-#: tree.c:11389
+#: tree.c:11393
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated: %s"
msgstr "%qs å·²éŽæ™‚"
-#: tree.c:11392
+#: tree.c:11396
#, fuzzy, gcc-internal-format
#| msgid "%qs is deprecated"
msgid "%qE is deprecated"
msgstr "%qs å·²éŽæ™‚"
-#: tree.c:11397
+#: tree.c:11401
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "type is deprecated"
msgid "type is deprecated: %s"
msgstr "é¡žåž‹å·²éŽæ™‚"
-#: tree.c:11400
+#: tree.c:11404
#, gcc-internal-format
msgid "type is deprecated"
msgstr "é¡žåž‹å·²éŽæ™‚"
@@ -21996,158 +22032,163 @@ msgstr ""
msgid "variable tracking size limit exceeded"
msgstr ""
-#: varasm.c:317
+#: varasm.c:319
+#, gcc-internal-format
+msgid "%+D causes a section type conflict"
+msgstr "%+D 導致一個å€æ®µé¡žåž‹è¡çª"
+
+#: varasm.c:322
#, fuzzy, gcc-internal-format
#| msgid "%+D causes a section type conflict"
msgid "%+D causes a section type conflict with %D"
msgstr "%+D 導致一個å€æ®µé¡žåž‹è¡çª"
-#: varasm.c:958
+#: varasm.c:964
#, gcc-internal-format
msgid "alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr "%q+D çš„å°é½Šè¦æ±‚大於目的檔案的最大å°é½Šé‚Šç•Œã€‚使用 %d"
-#: varasm.c:1196 varasm.c:1205
+#: varasm.c:1202 varasm.c:1211
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr "%q+D 的暫存器å無效"
-#: varasm.c:1207
+#: varasm.c:1213
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr "%q+D 的暫存器å無效"
-#: varasm.c:1209
+#: varasm.c:1215
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr "為 %q+D 指定的暫存器ä¸é©åˆæ­¤è³‡æ–™é¡žåž‹"
-#: varasm.c:1212
+#: varasm.c:1218
#, fuzzy, gcc-internal-format
#| msgid "register specified for %q+D isn%'t suitable for data type"
msgid "the register specified for %q+D cannot be accessed by the current target"
msgstr "為 %q+D 指定的暫存器ä¸é©åˆæ­¤è³‡æ–™é¡žåž‹"
-#: varasm.c:1215
+#: varasm.c:1221
#, fuzzy, gcc-internal-format
#| msgid "register used for two global register variables"
msgid "the register specified for %q+D is not general enough to be used as a register variable"
msgstr "暫存器åšç‚ºå…©å€‹å…¨åŸŸæš«å­˜å™¨è®Šæ•¸"
-#: varasm.c:1218
+#: varasm.c:1224
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr "為 %q+D 指定的暫存器ä¸é©åˆæ­¤è³‡æ–™é¡žåž‹"
-#: varasm.c:1228
+#: varasm.c:1234
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr "全域暫存器變數有åˆå§‹å€¼"
-#: varasm.c:1232
+#: varasm.c:1238
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr "最佳化å¯èƒ½æœƒåŽ»é™¤å°æš«å­˜å™¨è®Šæ•¸çš„讀寫"
-#: varasm.c:1270
+#: varasm.c:1276
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr "為éžæš«å­˜å™¨è®Šæ•¸ %q+D 給定了暫存器å"
-#: varasm.c:1387
+#: varasm.c:1393
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr "全域解構函å¼åœ¨æ­¤ç›®æ¨™å¹³è‡ºä¸Šä¸å—支æ´"
-#: varasm.c:1453
+#: varasm.c:1459
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "全域建構å¼åœ¨æ­¤ç›®æ¨™å¹³è‡ºä¸Šä¸å—支æ´"
-#: varasm.c:1850
+#: varasm.c:1856
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr "執行緒å€åŸŸæ€§çš„ COMMON 資料沒有實作"
-#: varasm.c:1879
+#: varasm.c:1885
#, gcc-internal-format
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "%q+D 需è¦çš„å°é½Šé‚Šç•Œå¤§æ–¼å¯¦ä½œçš„å°é½Šé‚Šç•Œ %wu"
-#: varasm.c:4566
+#: varasm.c:4603
#, fuzzy, gcc-internal-format
#| msgid "initializer for integer value is too complicated"
msgid "initializer for integer/fixed-point value is too complicated"
msgstr "整數值的åˆå§‹å€¼è¨­å®šå¤ªè¤‡é›œ"
-#: varasm.c:4571
+#: varasm.c:4608
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr "浮點值的åˆå§‹å€¼è¨­å®šä¸æ˜¯ä¸€å€‹æµ®é»žå¸¸æ•¸"
-#: varasm.c:4878
+#: varasm.c:4915
#, fuzzy, gcc-internal-format
#| msgid "invalid initial value for member %qs"
msgid "invalid initial value for member %qE"
msgstr "æˆå“¡ %qs çš„åˆå§‹å€¼ç„¡æ•ˆ"
-#: varasm.c:5224
+#: varasm.c:5261
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr "%q+D 的弱宣告必須是公共的"
-#: varasm.c:5226
+#: varasm.c:5263
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr "ä¸æ”¯æ´ %q+D 的弱宣告"
-#: varasm.c:5255 varasm.c:5831
+#: varasm.c:5292 varasm.c:5868
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr "æ­¤é…置下åªæ”¯æ´å¼±åˆ¥å"
-#: varasm.c:5474
+#: varasm.c:5511
#, fuzzy, gcc-internal-format
#| msgid "%Jweakref is not supported in this configuration"
msgid "weakref is not supported in this configuration"
msgstr "%J別ååƒç…§åœ¨æ­¤é…置下ä¸å—支æ´"
-#: varasm.c:5497 varasm.c:5828
+#: varasm.c:5534 varasm.c:5865
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "ifunc is not supported in this configuration"
msgstr "-m%s 在此é…置下ä¸å—支æ´"
-#: varasm.c:5751
+#: varasm.c:5788
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to undefined symbol %qs"
msgid "%q+D aliased to undefined symbol %qE"
msgstr "%q+D 是未定義符號 %qs 的別å"
-#: varasm.c:5765
+#: varasm.c:5802
#, fuzzy, gcc-internal-format
#| msgid "%q+D aliased to external symbol %qs"
msgid "%q+D aliased to external symbol %qE"
msgstr "%q+D 是外部符號 %qs 的別å"
-#: varasm.c:5805
+#: varasm.c:5842
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr "weakref %q+D 最終åƒç…§å…¶è‡ªèº«"
-#: varasm.c:5814
+#: varasm.c:5851
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function %qD to have static linkage"
msgid "weakref %q+D must have static linkage"
msgstr "ä¸èƒ½å°‡æˆå“¡å‡½å¼ %qD 宣告為有éœæ…‹é€£çµ"
-#: varasm.c:5821
+#: varasm.c:5858
#, fuzzy, gcc-internal-format
#| msgid "%Jalias definitions not supported in this configuration"
msgid "alias definitions not supported in this configuration"
msgstr "%J別å定義在此é…置下ä¸å—支æ´"
-#: varasm.c:6047 config/sol2.c:155 config/i386/winnt.c:254
+#: varasm.c:6084 config/sol2.c:155 config/i386/winnt.c:254
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "å¯è¦‹æ€§å±¬æ€§åœ¨æ­¤é…置下ä¸å—支æ´ï¼›å·²å¿½ç•¥"
@@ -22189,8 +22230,8 @@ msgstr "%qD 在函å¼ä½œç”¨æ¬„ä½å¤–未被定義"
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "字串長 %qd 比 %qd (ISO C%d 被è¦æ±‚支æ´çš„最大長度) é‚„è¦é•·"
-#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649
-#: cp/semantics.c:8032
+#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6646
+#: cp/semantics.c:8030
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "常數é‹ç®—å¼æº¢å‡º"
@@ -22416,7 +22457,7 @@ msgstr "在算術é‹ç®—å¼ä¸­ä½¿ç”¨äº†æˆå“¡æŒ‡æ¨™"
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "%qD çš„ä½å€ç¸½æ˜¯ç­‰åƒ¹ç‚º %<true%>"
-#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7566
+#: c-family/c-common.c:4085 cp/semantics.c:605 cp/typeck.c:7579
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr "建議在åšç‚ºçœŸå€¼çš„賦值敘述å‰å¾ŒåŠ ä¸Šæ‹¬è™Ÿ"
@@ -22862,40 +22903,40 @@ msgstr "%qE 屬性為 %qE 所忽略"
msgid "invalid vector type for attribute %qE"
msgstr "屬性 %qE çš„å‘é‡é¡žåž‹ç„¡æ•ˆ"
-#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606
-#: ada/gcc-interface/utils.c:5700
+#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5623
+#: ada/gcc-interface/utils.c:5717
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612
-#: ada/gcc-interface/utils.c:5706
+#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5629
+#: ada/gcc-interface/utils.c:5723
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620
-#: ada/gcc-interface/utils.c:5713
+#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5637
+#: ada/gcc-interface/utils.c:5730
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr "å‘é‡ä¸­åˆ†é‡æ•¸ä¸æ˜¯ 2 çš„æŸæ¬¡æ–¹"
-#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347
+#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5364
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "éžç©ºçš„屬性在éžåŽŸåž‹ä¸­æ²’有引數"
-#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361
+#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5378
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr "éžç©ºçš„引數 %lu é‹ç®—元號ä¸æ­£ç¢º"
-#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383
+#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5400
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr "éžç©ºçš„引數é‹ç®—元號越界(引數 %lu,é‹ç®—å…ƒ %lu)"
-#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392
+#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5409
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "éžç©ºçš„引數 %lu åƒç…§äº†éžæŒ‡æ¨™é‹ç®—å…ƒ %lu"
@@ -22935,12 +22976,12 @@ msgstr "%qE 屬性需è¦å¸¶å…·å引數的原型"
msgid "%qE attribute only applies to variadic functions"
msgstr "%qE 屬性åªèƒ½ç”¨æ–¼å¸¶å¯è®Šåƒæ•¸å‡½å¼"
-#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434
+#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5451
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr "è¦æ±‚çš„ä½ç½®ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸æ•¸"
-#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441
+#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5458
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "è¦æ±‚çš„ä½ç½®å°æ–¼ 0"
@@ -23001,7 +23042,7 @@ msgstr ""
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr ""
-#: c-family/c-common.c:8872 cp/typeck.c:5017
+#: c-family/c-common.c:8872 cp/typeck.c:5030
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "試圖å–ä½å…ƒæ®µçµæ§‹æˆå“¡ %qD çš„ä½å€"
@@ -23785,88 +23826,88 @@ msgid "ignoring #pragma %s %s"
msgstr "%H忽略 #pragma %s %s"
#. ... or not.
-#: c-family/c-lex.c:403 c-family/c-lex.c:1036
+#: c-family/c-lex.c:405 c-family/c-lex.c:1038
#, fuzzy, gcc-internal-format
#| msgid "%Hstray %<@%> in program"
msgid "stray %<@%> in program"
msgstr "%H程å¼ä¸­æœ‰æ¸¸é›¢çš„ %<@%>"
-#: c-family/c-lex.c:418
+#: c-family/c-lex.c:420
#, gcc-internal-format
msgid "stray %qs in program"
msgstr "程å¼ä¸­æœ‰æ¸¸é›¢çš„ %qs"
-#: c-family/c-lex.c:428
+#: c-family/c-lex.c:430
#, gcc-internal-format, gfc-internal-format
msgid "missing terminating %c character"
msgstr "缺少çµå°¾çš„ %c å­—å…ƒ"
-#: c-family/c-lex.c:430
+#: c-family/c-lex.c:432
#, gcc-internal-format
msgid "stray %qc in program"
msgstr "程å¼ä¸­æœ‰æ¸¸é›¢çš„ %qc"
-#: c-family/c-lex.c:432
+#: c-family/c-lex.c:434
#, gcc-internal-format
msgid "stray %<\\%o%> in program"
msgstr "程å¼ä¸­æœ‰æ¸¸é›¢çš„ %<\\%o%>"
-#: c-family/c-lex.c:636
+#: c-family/c-lex.c:638
#, gcc-internal-format
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "這個å°æ•¸å¸¸æ•¸åƒ… ISO C90 中是無號的"
-#: c-family/c-lex.c:640
+#: c-family/c-lex.c:642
#, gcc-internal-format
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "這個å°æ•¸å¸¸æ•¸åœ¨ ISO C90 中將是無號的"
-#: c-family/c-lex.c:660
+#: c-family/c-lex.c:662
#, fuzzy, gcc-internal-format
#| msgid "integer constant is too large for %qs type"
msgid "integer constant is too large for %<unsigned long%> type"
msgstr "å° %qs 類型而言整數常數太大"
-#: c-family/c-lex.c:698
+#: c-family/c-lex.c:700
#, fuzzy, gcc-internal-format
#| msgid "storage size not constant"
msgid "unsuffixed float constant"
msgstr "存儲大å°ä¸æ˜¯å¸¸æ•¸"
-#: c-family/c-lex.c:730
+#: c-family/c-lex.c:732
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:735
+#: c-family/c-lex.c:737
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-family/c-lex.c:791 c-family/c-lex.c:793
+#: c-family/c-lex.c:793 c-family/c-lex.c:795
#, fuzzy, gcc-internal-format
#| msgid "floating constant exceeds range of %<%s%>"
msgid "floating constant exceeds range of %qT"
msgstr "浮點常數超出 %<%s%> 的範åœ"
-#: c-family/c-lex.c:802
+#: c-family/c-lex.c:804
#, fuzzy, gcc-internal-format
#| msgid "floating constant misused"
msgid "floating constant truncated to zero"
msgstr "錯誤地使用了浮點常數"
-#: c-family/c-lex.c:998
+#: c-family/c-lex.c:1000
#, fuzzy, gcc-internal-format
#| msgid "misplaced %<@%D%> Objective-C++ construct"
msgid "repeated %<@%> before Objective-C string"
msgstr "ä½ç½®éŒ¯èª¤çš„ %<@%D%> Objective-C++ 建構"
-#: c-family/c-lex.c:1017 cp/parser.c:3478
+#: c-family/c-lex.c:1019 cp/parser.c:3478
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-family/c-lex.c:1045
+#: c-family/c-lex.c:1047
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr "傳統 C ä¸æŽ¥å—字串常數粘貼"
@@ -23887,7 +23928,7 @@ msgstr ""
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
-#: c-family/c-omp.c:368 cp/semantics.c:4800
+#: c-family/c-omp.c:368 cp/semantics.c:4797
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid type for iteration variable %qE"
@@ -23899,24 +23940,24 @@ msgstr "屬性 %qE çš„å‘é‡é¡žåž‹ç„¡æ•ˆ"
msgid "%qE is not initialized"
msgstr "缺少åˆå§‹å€¼è¨­å®š"
-#: c-family/c-omp.c:398 cp/semantics.c:4715
+#: c-family/c-omp.c:398 cp/semantics.c:4712
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-family/c-omp.c:480 cp/semantics.c:4472
+#: c-family/c-omp.c:480 cp/semantics.c:4469
#, fuzzy, gcc-internal-format
#| msgid "invalid conditional operand"
msgid "invalid controlling predicate"
msgstr "無效的æ¢ä»¶é‹ç®—å…ƒ"
-#: c-family/c-omp.c:487 cp/semantics.c:4721
+#: c-family/c-omp.c:487 cp/semantics.c:4718
#, fuzzy, gcc-internal-format
#| msgid "assignment suppression"
msgid "missing increment expression"
msgstr "å–消賦值"
-#: c-family/c-omp.c:556 cp/semantics.c:4577
+#: c-family/c-omp.c:556 cp/semantics.c:4574
#, fuzzy, gcc-internal-format
#| msgid "invalid truth-value expression"
msgid "invalid increment expression"
@@ -24806,7 +24847,7 @@ msgstr "L%d å¿«å–延é²ä¸æ˜Žï¼Œå° %s 來說"
msgid "bad value %qs for -mmemory-latency"
msgstr "-mmemory-latency 開關的值 %qs 錯誤"
-#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162
+#: config/alpha/alpha.c:6576 config/alpha/alpha.c:6579 config/s390/s390.c:9162
#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394
#: config/tilepro/tilepro.c:3098
#, gcc-internal-format
@@ -24994,55 +25035,55 @@ msgstr ""
msgid "Thumb-1 hard-float VFP ABI"
msgstr ""
-#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866
-#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
-#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899
-#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870
+#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6783
+#: config/avr/avr.c:6799 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697
+#: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4894
+#: config/i386/i386.c:31799 config/i386/i386.c:31850 config/i386/i386.c:31922
#: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011
#: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478
-#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890
-#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019
-#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
+#: config/rs6000/rs6000.c:24247 config/rx/rx.c:2502 config/sh/sh.c:8902
+#: config/sh/sh.c:8920 config/sh/sh.c:8949 config/sh/sh.c:9031
+#: config/sh/sh.c:9054 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200
#: config/v850/v850.c:2057
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to functions"
msgid "%qE attribute only applies to functions"
msgstr "%qs 屬性åªèƒ½å¥—用於函å¼"
-#: config/arm/arm.c:18925
+#: config/arm/arm.c:18928
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:20665
+#: config/arm/arm.c:20667
#, fuzzy, gcc-internal-format
#| msgid "argument %qd is not a constant"
msgid "argument must be a constant"
msgstr "引數 %qd ä¸æ˜¯ä¸€å€‹å¸¸æ•¸"
#. @@@ better error message
-#: config/arm/arm.c:21034 config/arm/arm.c:21071
+#: config/arm/arm.c:21036 config/arm/arm.c:21073
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr "é¸æ“‡å­å¿…須是立å³æ•¸å€¼"
#. @@@ better error message
-#: config/arm/arm.c:21114
+#: config/arm/arm.c:21116
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr "é®ç½©å¿…須是一個立å³æ•¸å€¼"
-#: config/arm/arm.c:21898
+#: config/arm/arm.c:21900
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr "高暫存器彈堆疊時沒有å¯ç”¨çš„低暫存器"
-#: config/arm/arm.c:22123
+#: config/arm/arm.c:22125
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:24409
+#: config/arm/arm.c:24411
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -25057,101 +25098,120 @@ msgstr "經åˆå§‹åŒ–的變數 %q+D 被標記為 dllimport"
msgid "static variable %q+D is marked dllimport"
msgstr "經åˆå§‹åŒ–的變數 %q+D 被標記為 dllimport"
-#: config/avr/avr.c:666
+#: config/avr/avr.c:548
+#, fuzzy, gcc-internal-format
+#| msgid "-G and -static are mutually exclusive"
+msgid "function attributes %qs, %qs and %qs are mutually exclusive"
+msgstr "ä¸èƒ½åŒæ™‚使用 -G å’Œ --static é¸é …"
+
+#: config/avr/avr.c:555
+#, gcc-internal-format
+msgid "function attributes %qs and %qs have no effect on %qs function"
+msgstr ""
+
+#: config/avr/avr.c:573
+#, fuzzy, gcc-internal-format
+#| msgid "%qD cannot have default arguments"
+msgid "%qs function cannot have arguments"
+msgstr "%qD ä¸èƒ½æœ‰é è¨­åƒæ•¸"
+
+#: config/avr/avr.c:576
+#, fuzzy, gcc-internal-format
+#| msgid "Function does not return a value"
+msgid "%qs function cannot return a value"
+msgstr "函å¼æ²’有回傳一個值"
+
+#: config/avr/avr.c:583
+#, fuzzy, gcc-internal-format
+#| msgid "%qs appears to be a misspelled signal handler"
+msgid "%qs appears to be a misspelled %s handler"
+msgstr "%qs 似乎是一個拼寫錯的信號處ç†è€…"
+
+#: config/avr/avr.c:733
#, gcc-internal-format
msgid "'builtin_return_address' contains only 2 bytes of address"
msgstr ""
-#: config/avr/avr.c:1775
+#: config/avr/avr.c:1886
#, gcc-internal-format
msgid "pointer offset from symbol maybe incorrect"
msgstr ""
-#: config/avr/avr.c:1898
+#: config/avr/avr.c:2009
#, gcc-internal-format
msgid "accessing data memory with program memory address"
msgstr ""
-#: config/avr/avr.c:1947
+#: config/avr/avr.c:2058
#, gcc-internal-format
msgid "accessing program memory with data memory address"
msgstr ""
-#: config/avr/avr.c:2353
+#: config/avr/avr.c:2464
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Number of registers used to pass integer arguments"
msgid "fixed register %s used to pass parameter to function"
msgstr "用以傳éžæ•´æ•¸åƒæ•¸çš„暫存器個數"
-#: config/avr/avr.c:2625
+#: config/avr/avr.c:2586
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D not supported"
msgid "writing to address space %qs not supported"
msgstr "ä¸æ”¯æ´ %q+D 的弱宣告"
-#: config/avr/avr.c:6778
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled interrupt handler"
-msgstr "%qs 似乎是一個拼寫錯的æ’斷處ç†è€…"
-
-#: config/avr/avr.c:6787
-#, gcc-internal-format
-msgid "%qs appears to be a misspelled signal handler"
-msgstr "%qs 似乎是一個拼寫錯的信號處ç†è€…"
-
-#: config/avr/avr.c:7060
+#: config/avr/avr.c:6977
#, gcc-internal-format
msgid "%qT uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7063
+#: config/avr/avr.c:6980
#, gcc-internal-format
msgid "%s %q+D uses address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7070
+#: config/avr/avr.c:6987
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %qT"
msgstr ""
-#: config/avr/avr.c:7073
+#: config/avr/avr.c:6990
#, gcc-internal-format
msgid "pointer targeting address space %qs must be const in %s %q+D"
msgstr ""
-#: config/avr/avr.c:7111
+#: config/avr/avr.c:7028
#, gcc-internal-format
msgid "variable %q+D located in address space %qs beyond flash of %qs"
msgstr ""
-#: config/avr/avr.c:7127
+#: config/avr/avr.c:7044
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %qs"
msgstr ""
-#: config/avr/avr.c:7341
+#: config/avr/avr.c:7258
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr "åªæœ‰æœªåˆå§‹åŒ–的變數æ‰èƒ½æ”¾åœ¨ .noinit å€æ®µä¸­"
-#: config/avr/avr.c:7382
+#: config/avr/avr.c:7299
#, fuzzy, gcc-internal-format
#| msgid "initialized variable %q+D is marked dllimport"
msgid "uninitialized variable %q+D put into program memory area"
msgstr "經åˆå§‹åŒ–的變數 %q+D 被標記為 dllimport"
-#: config/avr/avr.c:7449
+#: config/avr/avr.c:7366
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr "MCU %qs åªæ”¯æ´çµ„譯器"
-#: config/avr/avr.c:10677
+#: config/avr/avr.c:10628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "case label does not reduce to an integer constant"
msgid "%s expects a compile time integer constant"
msgstr "case 標籤ä¸èƒ½é‚„原為一個整常數"
-#: config/avr/avr.c:10691
+#: config/avr/avr.c:10642
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%s expects a compile time long integer constant as first argument"
@@ -25283,70 +25343,70 @@ msgstr "錯誤地使用了「:ã€ä¿®é£¾ç¬¦"
msgid "internal error: bad register: %d"
msgstr "內部錯誤:錯誤的暫存器:%dt"
-#: config/cris/cris.c:1777
+#: config/cris/cris.c:1778
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
-#: config/cris/cris.c:1874
+#: config/cris/cris.c:1875
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr "ä¸æ˜Žçš„ cc_attr 值"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2265
+#: config/cris/cris.c:2266
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2505
+#: config/cris/cris.c:2506
#, gcc-internal-format, gfc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d 無法使用,ä¸åœ¨ 0 å’Œ %d 之間"
-#: config/cris/cris.c:2533
+#: config/cris/cris.c:2534
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "-march= 或 -mcpu= 中ä¸æ˜Žçš„ CRIS CPU 版本設定:%s"
-#: config/cris/cris.c:2569
+#: config/cris/cris.c:2570
#, gcc-internal-format, gfc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "-mtune= 中ä¸æ˜Žçš„ CRIS CPU 版本設定:%s"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2591
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC å’Œ -fpic 在此é…置下ä¸å—支æ´"
-#: config/cris/cris.c:2605
+#: config/cris/cris.c:2606
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2831
+#: config/cris/cris.c:2832
#, fuzzy, gcc-internal-format
#| msgid "Unknown src"
msgid "unknown src"
msgstr "ä¸æ˜Žä¾†æº"
-#: config/cris/cris.c:2892
+#: config/cris/cris.c:2893
#, fuzzy, gcc-internal-format
#| msgid "Unknown dest"
msgid "unknown dest"
msgstr "ä¸æ˜Žç›®çš„"
-#: config/cris/cris.c:3177
+#: config/cris/cris.c:3178
#, gcc-internal-format, gfc-internal-format
msgid "stackframe too big: %d bytes"
msgstr "堆疊框架太大:%d ä½å…ƒçµ„"
-#: config/cris/cris.c:3669 config/cris/cris.c:3697
+#: config/cris/cris.c:3670 config/cris/cris.c:3698
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3779
+#: config/cris/cris.c:3780
#, fuzzy, gcc-internal-format
#| msgid "PIC register isn't set up"
msgid "emitting PIC operand, but PIC register isn%'t set up"
@@ -25511,451 +25571,451 @@ msgstr "無法擴充 PCH 檔案:%m"
msgid "can%'t set position in PCH file: %m"
msgstr "ä¸èƒ½åœ¨ PCH 檔案中設定ä½ç½®ï¼š%m"
-#: config/i386/i386.c:3129 config/i386/i386.c:3433
+#: config/i386/i386.c:3130 config/i386/i386.c:3434
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -mtune= switch"
msgid "bad value (%s) for %stune=%s %s"
msgstr "-mtune= 所帶åƒæ•¸(%s)ä¸æ­£ç¢º"
-#: config/i386/i386.c:3132
+#: config/i386/i386.c:3133
#, gcc-internal-format, gfc-internal-format
msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate"
msgstr ""
#. rep; movq isn't available in 32-bit code.
-#: config/i386/i386.c:3162
+#: config/i386/i386.c:3163
#, gcc-internal-format
msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code"
msgstr ""
-#: config/i386/i386.c:3183 config/i386/i386.c:3192 config/i386/i386.c:3204
-#: config/i386/i386.c:3215 config/i386/i386.c:3226
+#: config/i386/i386.c:3184 config/i386/i386.c:3193 config/i386/i386.c:3205
+#: config/i386/i386.c:3216 config/i386/i386.c:3227
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr "程å¼ç¢¼æ¨¡å¼ %qs 在 %s ä½æ¨¡å¼ä¸‹ä¸å—支æ´"
-#: config/i386/i386.c:3195 config/i386/i386.c:3207
+#: config/i386/i386.c:3196 config/i386/i386.c:3208
#, fuzzy, gcc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %qs not supported in x32 mode"
msgstr "程å¼ç¢¼æ¨¡å¼ %s 在 PIC 模å¼ä¸‹ä¸å—支æ´"
-#: config/i386/i386.c:3213 config/i386/i386.c:3222
+#: config/i386/i386.c:3214 config/i386/i386.c:3223
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "code model %s not supported in PIC mode"
msgid "code model %s does not support PIC mode"
msgstr "程å¼ç¢¼æ¨¡å¼ %s 在 PIC 模å¼ä¸‹ä¸å—支æ´"
-#: config/i386/i386.c:3249
+#: config/i386/i386.c:3250
#, fuzzy, gcc-internal-format
#| msgid "-m%s not supported in this configuration"
msgid "-masm=intel not supported in this configuration"
msgstr "-m%s 在此é…置下ä¸å—支æ´"
-#: config/i386/i386.c:3253
+#: config/i386/i386.c:3254
#, gcc-internal-format, gfc-internal-format
msgid "%i-bit mode not compiled in"
msgstr "æœªç·¨è­¯å…¥å° %i ä½æ¨¡å¼çš„支æ´"
-#: config/i386/i386.c:3265 config/i386/i386.c:3395
+#: config/i386/i386.c:3266 config/i386/i386.c:3396
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr "您é¸æ“‡çš„ CPU ä¸æ”¯æ´ x86-64 指令集"
-#: config/i386/i386.c:3365
+#: config/i386/i386.c:3366
#, gcc-internal-format, gfc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:3368
+#: config/i386/i386.c:3369
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "bad value (%s) for -march= switch"
msgid "bad value (%s) for %sarch=%s %s"
msgstr "-march= 所帶åƒæ•¸(%s)ä¸æ­£ç¢º"
-#: config/i386/i386.c:3481
+#: config/i386/i386.c:3482
#, gcc-internal-format
msgid "-mregparm is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3484
+#: config/i386/i386.c:3485
#, gcc-internal-format, gfc-internal-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d ä¸åœ¨ 0 å’Œ %d 之間"
-#: config/i386/i386.c:3525
+#: config/i386/i386.c:3526
#, gcc-internal-format, gfc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3589
+#: config/i386/i386.c:3590
#, fuzzy, gcc-internal-format
#| msgid "-fprefetch-loop-arrays not supported for this target"
msgid "-mpreferred-stack-boundary is not supported for this target"
msgstr "-fprefetch-loop-arrays 在此目標平臺上ä¸å—支æ´"
-#: config/i386/i386.c:3592
+#: config/i386/i386.c:3593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
msgstr "-mpreferred-stack-boundary=%d ä¸åœ¨ %d å’Œ 12 之間"
-#: config/i386/i386.c:3613
+#: config/i386/i386.c:3614
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred-stack-boundary=%d ä¸åœ¨ %d å’Œ 12 之間"
-#: config/i386/i386.c:3627
+#: config/i386/i386.c:3628
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "-msseregparm used without SSE enabled"
msgid "%ssseregparm%s used without SSE enabled"
msgstr "使用了 -msseregparm å»æ²’有啟用 SEE"
-#: config/i386/i386.c:3635
+#: config/i386/i386.c:3636
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "SSE 指令集已åœç”¨ï¼Œä½¿ç”¨ 387 指令"
-#: config/i386/i386.c:3640
+#: config/i386/i386.c:3641
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "387 指令集已åœç”¨ï¼Œä½¿ç”¨ SSE 指令"
-#: config/i386/i386.c:3684
+#: config/i386/i386.c:3685
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgid "unwind tables currently require either a frame pointer or %saccumulate-outgoing-args%s for correctness"
msgstr "解æ²è¡¨ç›®å‰éœ€è¦æ¡†æž¶æŒ‡æ¨™æˆ– -maccumulate-outgoing-args 來ä¿è­‰æ­£ç¢ºæ€§"
-#: config/i386/i386.c:3697
+#: config/i386/i386.c:3698
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr "解æ²è¡¨ç›®å‰éœ€è¦æ¡†æž¶æŒ‡æ¨™æˆ– -maccumulate-outgoing-args 來ä¿è­‰æ­£ç¢ºæ€§"
-#: config/i386/i386.c:3784
+#: config/i386/i386.c:3779
#, gcc-internal-format
msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
msgstr ""
-#: config/i386/i386.c:3791
+#: config/i386/i386.c:3786
#, gcc-internal-format
msgid "-mno-fentry isn%'t compatible with SEH"
msgstr ""
-#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331
+#: config/i386/i386.c:3856 config/rs6000/rs6000.c:3331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unknown -m%s= option specified: '%s'"
msgid "unknown option for -mrecip=%s"
msgstr "指定了ä¸æ˜Žçš„ -m%s= é¸é …:「%sã€"
-#: config/i386/i386.c:4276 config/i386/i386.c:4323
+#: config/i386/i386.c:4271 config/i386/i386.c:4318
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:4304
+#: config/i386/i386.c:4299
#, gcc-internal-format, gfc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4912 config/i386/i386.c:4963
+#: config/i386/i386.c:4907 config/i386/i386.c:4958
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr "fastcall å’Œ regparm 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:4917
+#: config/i386/i386.c:4912
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "regparam and thiscall attributes are not compatible"
msgstr "fastcall å’Œ stdcall 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:4924 config/i386/i386.c:31766
+#: config/i386/i386.c:4919 config/i386/i386.c:31819
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%qE attribute requires an integer constant argument"
msgstr "%qs 屬性需è¦ä¸€å€‹æ•´å¸¸æ•¸åšç‚ºå¼•æ•¸"
-#: config/i386/i386.c:4930
+#: config/i386/i386.c:4925
#, fuzzy, gcc-internal-format
#| msgid "argument to %qs attribute larger than %d"
msgid "argument to %qE attribute larger than %d"
msgstr "%qs 屬性的引數大於 %d"
-#: config/i386/i386.c:4955 config/i386/i386.c:4998
+#: config/i386/i386.c:4950 config/i386/i386.c:4993
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr "fastcall å’Œ cdecl 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:4959
+#: config/i386/i386.c:4954
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr "fastcall å’Œ stdcall 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:4967 config/i386/i386.c:5016
+#: config/i386/i386.c:4962 config/i386/i386.c:5011
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "fastcall and thiscall attributes are not compatible"
msgstr "fastcall å’Œ stdcall 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:4977 config/i386/i386.c:4994
+#: config/i386/i386.c:4972 config/i386/i386.c:4989
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr "stdcall å’Œ cdecl 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:4981
+#: config/i386/i386.c:4976
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr "stdcall å’Œ fastcall 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:4985 config/i386/i386.c:5012
+#: config/i386/i386.c:4980 config/i386/i386.c:5007
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "stdcall and thiscall attributes are not compatible"
msgstr "stdcall å’Œ fastcall 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:5002 config/i386/i386.c:5020
+#: config/i386/i386.c:4997 config/i386/i386.c:5015
#, fuzzy, gcc-internal-format
#| msgid "stdcall and fastcall attributes are not compatible"
msgid "cdecl and thiscall attributes are not compatible"
msgstr "stdcall å’Œ fastcall 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:5008
+#: config/i386/i386.c:5003
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "%qE attribute is used for none class-method"
msgstr "%qE 屬性在ä¸æ˜¯é¡žåˆ¥çš„類型上被忽略"
-#: config/i386/i386.c:5234
+#: config/i386/i386.c:5229
#, fuzzy, gcc-internal-format
#| msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr "帶屬性 sseregparm å‘¼å« %qD å»æ²’有啟用 SSE/SSE2"
-#: config/i386/i386.c:5237
+#: config/i386/i386.c:5232
#, fuzzy, gcc-internal-format
#| msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr "帶屬性 sseregparm å‘¼å« %qT å»æ²’有啟用 SSE/SSE2"
-#: config/i386/i386.c:5452
+#: config/i386/i386.c:5447
#, fuzzy, gcc-internal-format
#| msgid "-march=%s is not compatible with the selected ABI"
msgid "ms_hook_prologue is not compatible with nested function"
msgstr "-march=%s èˆ‡æ‰€é¸ ABI ä¸ç›¸å®¹"
-#: config/i386/i386.c:5604
+#: config/i386/i386.c:5599
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
msgstr ""
-#: config/i386/i386.c:5728
+#: config/i386/i386.c:5723
#, fuzzy, gcc-internal-format
#| msgid "MMX vector argument without MMX enabled changes the ABI"
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr "沒有啟用 MMX,å»å‡ºç¾äº† MMX å‘é‡å¼•æ•¸ï¼Œé€™è®Šæ›´äº† ABI"
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:5905
#, gcc-internal-format
msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6026
+#: config/i386/i386.c:6021
#, gcc-internal-format
msgid "the ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6141
+#: config/i386/i386.c:6136
#, gcc-internal-format
msgid "the ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:6287
+#: config/i386/i386.c:6282
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr "å·²åœç”¨ SSE å»åœ¨ SSE 暫存器中回傳"
-#: config/i386/i386.c:6293
+#: config/i386/i386.c:6288
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr "å·²åœç”¨ SSE å»åœ¨ SSE 暫存器中傳éžåƒæ•¸"
-#: config/i386/i386.c:6309
+#: config/i386/i386.c:6304
#, fuzzy, gcc-internal-format
#| msgid "SSE register return with SSE disabled"
msgid "x87 register return with x87 disabled"
msgstr "å·²åœç”¨ SSE å»åœ¨ SSE 暫存器中回傳"
-#: config/i386/i386.c:6688
+#: config/i386/i386.c:6683
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr "沒有啟用 SSE,å»å‡ºç¾äº† SSE å‘é‡å¼•æ•¸ï¼Œé€™è®Šæ›´äº† ABI"
-#: config/i386/i386.c:6726
+#: config/i386/i386.c:6721
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr "沒有啟用 MMX,å»å‡ºç¾äº† MMX å‘é‡å¼•æ•¸ï¼Œé€™è®Šæ›´äº† ABI"
-#: config/i386/i386.c:7101
+#: config/i386/i386.c:7096
#, gcc-internal-format, gfc-internal-format
msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
msgstr ""
-#: config/i386/i386.c:7437
+#: config/i386/i386.c:7432
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr "沒有啟用 SSE,å»æœ‰ SSE å‘é‡å›žå‚³å€¼ï¼Œé€™è®Šæ›´äº† ABI"
-#: config/i386/i386.c:7447
+#: config/i386/i386.c:7442
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr "沒有啟用 MMXå»å›žå‚³ MMX å‘é‡ï¼Œé€™è®Šæ›´äº† ABI"
-#: config/i386/i386.c:10033
+#: config/i386/i386.c:10028
#, gcc-internal-format
msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
msgstr ""
-#: config/i386/i386.c:11030
+#: config/i386/i386.c:11025
#, gcc-internal-format
msgid "-fsplit-stack does not support fastcall with nested function"
msgstr ""
-#: config/i386/i386.c:11044
+#: config/i386/i386.c:11039
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
-#: config/i386/i386.c:11055
+#: config/i386/i386.c:11050
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 does not support flexible array members"
msgid "-fsplit-stack does not support 3 register parameters"
msgstr "ISO C90 ä¸å…許彈性陣列æˆå“¡"
-#: config/i386/i386.c:13584
+#: config/i386/i386.c:13637
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr "擴充的暫存器沒有高åŠéƒ¨åˆ†"
-#: config/i386/i386.c:13599
+#: config/i386/i386.c:13652
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr "擴充的暫存器ä¸æ”¯æ´çš„é‹ç®—元大å°"
-#: config/i386/i386.c:13846
+#: config/i386/i386.c:13899
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid operand code '%c'"
msgid "non-integer operand used with operand code '%c'"
msgstr "無效的é‹ç®—元程å¼ç¢¼ã€Œ%cã€"
-#: config/i386/i386.c:27737 config/i386/i386.c:28674
+#: config/i386/i386.c:27790 config/i386/i386.c:28727
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 2-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28143
+#: config/i386/i386.c:28196
#, fuzzy, gcc-internal-format
#| msgid "shift must be an immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "å移值必須是立å³æ•¸å€¼"
-#: config/i386/i386.c:28238
+#: config/i386/i386.c:28291
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the third argument must be an 8-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28646
+#: config/i386/i386.c:28699
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 1-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28665
+#: config/i386/i386.c:28718
#, fuzzy, gcc-internal-format
#| msgid "argument 3 must be a 4-bit unsigned literal"
msgid "the last argument must be a 4-bit immediate"
msgstr "引數 3 必須是一個 4 ä½ç„¡è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28683
+#: config/i386/i386.c:28736
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 1-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28692
+#: config/i386/i386.c:28745
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 5-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28701
+#: config/i386/i386.c:28754
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the next to last argument must be an 8-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28705 config/i386/i386.c:28929
+#: config/i386/i386.c:28758 config/i386/i386.c:28982
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be an 8-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28927
+#: config/i386/i386.c:28980
#, fuzzy, gcc-internal-format
#| msgid "argument 1 must be a 5-bit signed literal"
msgid "the last argument must be a 32-bit immediate"
msgstr "引數 1 必須是一個 5 ä½æœ‰è™Ÿå­—é¢å€¼"
-#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551
+#: config/i386/i386.c:29048 config/rs6000/rs6000.c:10551
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr "é¸æ“‡å­å¿…須是 0 到 %wi 間的整常數"
-#: config/i386/i386.c:29138
+#: config/i386/i386.c:29191
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:29142
+#: config/i386/i386.c:29195
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:29313
+#: config/i386/i386.c:29366
#, fuzzy, gcc-internal-format
#| msgid "mask must be an immediate"
msgid "last argument must be an immediate"
msgstr "é®ç½©å¿…須是一個立å³æ•¸å€¼"
-#: config/i386/i386.c:29507
+#: config/i386/i386.c:29560
#, gcc-internal-format
msgid "last argument must be scale 1, 2, 4, 8"
msgstr ""
-#: config/i386/i386.c:31753
+#: config/i386/i386.c:31806
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to variables"
msgid "%qE attribute only available for 32-bit"
msgstr "%qs 屬性åªèƒ½ç‚ºè®Šæ•¸ä½¿ç”¨"
-#: config/i386/i386.c:31774
+#: config/i386/i386.c:31827
#, fuzzy, gcc-internal-format
#| msgid "argument of %qs attribute is not a string constant"
msgid "argument to %qE attribute is neither zero, nor one"
msgstr "%qs 屬性的引數ä¸æ˜¯ä¸€å€‹å­—串常數"
-#: config/i386/i386.c:31808 config/i386/i386.c:31817
+#: config/i386/i386.c:31861 config/i386/i386.c:31870
#, fuzzy, gcc-internal-format
#| msgid "fastcall and stdcall attributes are not compatible"
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr "fastcall å’Œ stdcall 屬性互ä¸ç›¸å®¹"
-#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344
+#: config/i386/i386.c:31907 config/rs6000/rs6000.c:24330
#, fuzzy, gcc-internal-format
#| msgid "%qs incompatible attribute ignored"
msgid "%qE incompatible attribute ignored"
@@ -26034,19 +26094,19 @@ msgstr "%Jä¸èƒ½ç‚ºå‡½å¼æŒ‡å®šä½å€å€åŸŸå±¬æ€§"
msgid "%qE attribute requires a string constant argument"
msgstr "%qs 屬性需è¦ä¸€å€‹æ•´å¸¸æ•¸åšç‚ºå¼•æ•¸"
-#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738
+#: config/ia64/ia64.c:5741 config/pa/pa.c:415 config/sh/sh.c:8750
#: config/spu/spu.c:5187
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "-mfixed-range 值必須有「暫存器1-暫存器2ã€çš„å½¢å¼"
-#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764
+#: config/ia64/ia64.c:5768 config/pa/pa.c:442 config/sh/sh.c:8776
#: config/spu/spu.c:5213
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
msgstr "%s-%s 是一個空的範åœ"
-#: config/ia64/ia64.c:10959
+#: config/ia64/ia64.c:10963
#, fuzzy, gcc-internal-format
#| msgid "argument of %qs attribute is not a string constant"
msgid "version attribute is not a string"
@@ -26116,7 +26176,7 @@ msgid "%qE attribute is not supported for R8C target"
msgstr "%qE 屬性在此平å°ä¸Šä¸å—支æ´"
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051
+#: config/m32c/m32c.c:3169 config/sh/sh.c:8957 config/sh/sh.c:9063
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not an integer constant"
msgid "%qE attribute argument not an integer constant"
@@ -26179,7 +26239,7 @@ msgstr "指定了多個函å¼é¡žåž‹å±¬æ€§"
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621
+#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18607
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "ä¸æ”¯æ´å †ç–Šé™åˆ¶é‹ç®—å¼"
@@ -26744,27 +26804,27 @@ msgstr "MMIX 內部錯誤:%s ä¸æ˜¯ä¸€å€‹å¯ç§»ä½çš„整數"
msgid "-mtune= expects mn10300, am33, am33-2, or am34"
msgstr ""
-#: config/pa/pa.c:496
+#: config/pa/pa.c:499
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr "PIC 程å¼ç¢¼ç”¢ç”Ÿåœ¨å¯ç§»æ¤åŸ·è¡Œæ™‚模型中ä¸å—支æ´"
-#: config/pa/pa.c:501
+#: config/pa/pa.c:504
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr "PIC 程å¼ç¢¼ç”¢ç”Ÿèˆ‡å¿«é€Ÿé–“接呼å«ä¸ç›¸å®¹"
-#: config/pa/pa.c:506
+#: config/pa/pa.c:509
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr "此處ç†å™¨åªæœ‰ä½¿ç”¨ GAS 時æ‰æ”¯æ´ -g"
-#: config/pa/pa.c:507
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g option disabled"
msgstr "-g é¸é …已被åœç”¨"
-#: config/pa/pa.c:8619
+#: config/pa/pa.c:8622
#, gcc-internal-format, gfc-internal-format
msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u"
msgstr ""
@@ -27211,88 +27271,88 @@ msgstr ""
msgid "internal error: builtin function %s, argument %d had unexpected argument type %s"
msgstr ""
-#: config/rs6000/rs6000.c:18591
+#: config/rs6000/rs6000.c:18577
#, gcc-internal-format
msgid "stack frame too large"
msgstr "堆疊框架太大"
-#: config/rs6000/rs6000.c:22065
+#: config/rs6000/rs6000.c:22051
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr "æ­¤ ABI ä¸æ”¯æ´å–樣 64 ä½å…ƒç¨‹å¼ç¢¼"
-#: config/rs6000/rs6000.c:24050
+#: config/rs6000/rs6000.c:24036
#, gcc-internal-format
msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option."
msgstr ""
-#: config/rs6000/rs6000.c:24131
+#: config/rs6000/rs6000.c:24117
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr "在 AltiVec 類型中使用 %<long double%> 無效"
-#: config/rs6000/rs6000.c:24133
+#: config/rs6000/rs6000.c:24119
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr "在 AltiVec 類型中使用布林類型無效"
-#: config/rs6000/rs6000.c:24135
+#: config/rs6000/rs6000.c:24121
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr "在 AltiVec 類型中使用 %<complex%> 無效"
-#: config/rs6000/rs6000.c:24137
+#: config/rs6000/rs6000.c:24123
#, fuzzy, gcc-internal-format
#| msgid "use of boolean types in AltiVec types is invalid"
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr "在 AltiVec 類型中使用布林類型無效"
-#: config/rs6000/rs6000.c:24143
+#: config/rs6000/rs6000.c:24129
#, fuzzy, gcc-internal-format
#| msgid "use of %<long%> in AltiVec types is invalid for 64-bit code"
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
msgstr "å°æ–¼ 64 ä½å…ƒç¨‹å¼ç¢¼åœ¨ AltiVec 類型中使用 %<long%> 無效"
-#: config/rs6000/rs6000.c:24146
+#: config/rs6000/rs6000.c:24132
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr "在 AltiVec 類型中使用 %<long%> å·²éŽæ™‚;請改用 %<int%>"
-#: config/rs6000/rs6000.c:24151
+#: config/rs6000/rs6000.c:24137
#, fuzzy, gcc-internal-format
#| msgid "use of %<long long%> in AltiVec types is invalid"
msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
msgstr "在 AltiVec 類型中使用 %<long long%> 無效"
-#: config/rs6000/rs6000.c:24154
+#: config/rs6000/rs6000.c:24140
#, fuzzy, gcc-internal-format
#| msgid "use of %<double%> in AltiVec types is invalid"
msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
msgstr "在 AltiVec 類型中使用 %<double%> 無效"
-#: config/rs6000/rs6000.c:26993
+#: config/rs6000/rs6000.c:26979
#, gcc-internal-format, gfc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:26997
+#: config/rs6000/rs6000.c:26983
#, gcc-internal-format, gfc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:27221
+#: config/rs6000/rs6000.c:27207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid cpu \"%s\" for %s\"%s\"%s"
msgstr "錯誤地使用了 %<::%>"
-#: config/rs6000/rs6000.c:27224
+#: config/rs6000/rs6000.c:27210
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%<#pragma%> is not allowed here"
msgid "%s\"%s\"%s is not allowed"
msgstr "在這裡ä¸å…許使用 %<#pragma%>"
-#: config/rs6000/rs6000.c:27226
+#: config/rs6000/rs6000.c:27212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "spec '%s' is invalid"
msgid "%s\"%s\"%s is invalid"
@@ -27350,12 +27410,12 @@ msgstr "ä¸æ”¯æ´è¹¦åºŠ"
msgid "-m64 not supported in this configuration"
msgstr "在目å‰é…置下 -m64 ä¸è¢«æ”¯æ´"
-#: config/rs6000/linux64.h:124
+#: config/rs6000/freebsd64.h:100 config/rs6000/linux64.h:124
#, gcc-internal-format
msgid "-m64 requires a PowerPC64 cpu"
msgstr "-m64 éœ€è¦ PowerPC64 CPU"
-#: config/rs6000/linux64.h:130
+#: config/rs6000/freebsd64.h:106 config/rs6000/linux64.h:130
#, fuzzy, gcc-internal-format
#| msgid "Emit code compatible with TI tools"
msgid "-mcmodel incompatible with other toc options"
@@ -27373,64 +27433,64 @@ msgstr "產生與 TI 工具相容的程å¼ç¢¼"
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1654
+#: config/rs6000/rs6000.h:1655
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET ä¸å—支æ´"
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control in TARGET_OPTION_OVERRIDE.
-#: config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:114
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -mcall-%s"
msgstr "-mcall-%s 值ä¸æ­£ç¢º"
-#: config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:130
#, gcc-internal-format, gfc-internal-format
msgid "bad value for -msdata=%s"
msgstr "-msdata=%s 值ä¸æ­£ç¢º"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:147
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable 與 -msdata=%s 互ä¸ç›¸å®¹"
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:156
#, gcc-internal-format, gfc-internal-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s å’Œ -msdata=%s 互ä¸ç›¸å®¹"
-#: config/rs6000/sysv4.h:166
+#: config/rs6000/sysv4.h:165
#, gcc-internal-format, gfc-internal-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s 與 -mcall-%s 互ä¸ç›¸å®¹"
-#: config/rs6000/sysv4.h:175
+#: config/rs6000/sysv4.h:174
#, gcc-internal-format
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable å’Œ -mno-minimal-toc 互ä¸ç›¸å®¹"
-#: config/rs6000/sysv4.h:181
+#: config/rs6000/sysv4.h:180
#, gcc-internal-format, gfc-internal-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable 與 -mcall-%s 互ä¸ç›¸å®¹"
-#: config/rs6000/sysv4.h:188
+#: config/rs6000/sysv4.h:187
#, gcc-internal-format, gfc-internal-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC 與 -mcall-%s 互ä¸ç›¸å®¹"
-#: config/rs6000/sysv4.h:195
+#: config/rs6000/sysv4.h:194
#, gcc-internal-format
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc 必須是高ä½ä½å…ƒçµ„在å‰"
-#: config/rs6000/sysv4.h:200
+#: config/rs6000/sysv4.h:199
#, gcc-internal-format
msgid "-msecure-plt not supported by your assembler"
msgstr "-msecure-plt ä¸ç‚ºæ‚¨çš„組譯器所支æ´"
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:218
#, gcc-internal-format, gfc-internal-format
msgid "-m%s not supported in this configuration"
msgstr "-m%s 在此é…置下ä¸å—支æ´"
@@ -27544,59 +27604,59 @@ msgstr "忽略 -fschedule-insns 以繞開異常處ç†çš„缺陷"
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "解æ²è¡¨ç›®å‰éœ€è¦æ¡†æž¶æŒ‡æ¨™æˆ– -maccumulate-outgoing-args 來ä¿è­‰æ­£ç¢ºæ€§"
-#: config/sh/sh.c:7660
+#: config/sh/sh.c:7674
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr "__builtin_saveregs 在此å­ç›®çš„上ä¸å—支æ´"
-#: config/sh/sh.c:8826
+#: config/sh/sh.c:8838
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to interrupt functions"
msgid "%qE attribute only applies to interrupt functions"
msgstr "%qs 屬性åªèƒ½å¥—用到æ’斷函å¼ä¸Š"
-#: config/sh/sh.c:8884
+#: config/sh/sh.c:8896
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute is not supported on this platform"
msgid "%qE attribute is supported only for SH2A"
msgstr "%qE 屬性在此平å°ä¸Šä¸å—支æ´"
-#: config/sh/sh.c:8914
+#: config/sh/sh.c:8926
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr "屬性 interrupt_handler 與 -m5-compact ä¸ç›¸å®¹"
-#: config/sh/sh.c:8931
+#: config/sh/sh.c:8943
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to functions"
msgid "%qE attribute only applies to SH2A"
msgstr "%qs 屬性åªèƒ½å¥—用於函å¼"
-#: config/sh/sh.c:8953
+#: config/sh/sh.c:8965
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not an integer constant"
msgid "%qE attribute argument should be between 0 to 255"
msgstr "%qs 屬性的åƒæ•¸ä¸æ˜¯ä¸€å€‹æ•´åž‹å¸¸æ•¸"
#. The argument must be a constant string.
-#: config/sh/sh.c:9026
+#: config/sh/sh.c:9038
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute argument not a string constant"
msgid "%qE attribute argument not a string constant"
msgstr "%qs 屬性的åƒæ•¸ä¸æ˜¯ä¸€å€‹å­—串常數"
-#: config/sh/sh.c:11599
+#: config/sh/sh.c:11618
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr "r0 需è¦åšç‚ºå‘¼å«ç¯¡æ”¹çš„暫存器"
-#: config/sh/sh.c:11620
+#: config/sh/sh.c:11639
#, fuzzy, gcc-internal-format
#| msgid "Need a second call-clobbered general purpose register"
msgid "need a second call-clobbered general purpose register"
msgstr "需è¦å¦ä¸€å€‹å‘¼å«ç¯¡æ”¹çš„通用暫存器"
-#: config/sh/sh.c:11628
+#: config/sh/sh.c:11647
#, fuzzy, gcc-internal-format
#| msgid "Need a call-clobbered target register"
msgid "need a call-clobbered target register"
@@ -27962,43 +28022,43 @@ msgstr "%<-gnat%> 被錯誤地拼寫為 %<-gant%>"
msgid "-fexcess-precision=standard for Ada"
msgstr ""
-#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470
-#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566
+#: ada/gcc-interface/utils.c:5312 ada/gcc-interface/utils.c:5487
+#: ada/gcc-interface/utils.c:5529 ada/gcc-interface/utils.c:5583
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr "忽略 %qs 屬性"
-#: ada/gcc-interface/utils.c:5413
+#: ada/gcc-interface/utils.c:5430
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute requires prototypes with named arguments"
msgid "%qs attribute requires prototypes with named arguments"
msgstr "%qE 屬性需è¦å¸¶å…·å引數的原型"
-#: ada/gcc-interface/utils.c:5422
+#: ada/gcc-interface/utils.c:5439
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute only applies to variadic functions"
msgid "%qs attribute only applies to variadic functions"
msgstr "%qE 屬性åªèƒ½ç”¨æ–¼å¸¶å¯è®Šåƒæ•¸å‡½å¼"
-#: ada/gcc-interface/utils.c:5493
+#: ada/gcc-interface/utils.c:5510
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored"
msgid "%qE attribute has no effect"
msgstr "%qE 屬性被忽略"
-#: ada/gcc-interface/utils.c:5599
+#: ada/gcc-interface/utils.c:5616
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid vector type for attribute %qs"
msgstr "屬性 %qE çš„å‘é‡é¡žåž‹ç„¡æ•ˆ"
-#: ada/gcc-interface/utils.c:5662
+#: ada/gcc-interface/utils.c:5679
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute only applies to variables"
msgid "attribute %qs applies to array types only"
msgstr "%qs 屬性åªèƒ½ç‚ºè®Šæ•¸ä½¿ç”¨"
-#: ada/gcc-interface/utils.c:5689
+#: ada/gcc-interface/utils.c:5706
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute %qE"
msgid "invalid element type for attribute %qs"
@@ -28016,7 +28076,7 @@ msgstr ""
msgid " no known conversion for argument %d from %qT to %qT"
msgstr " 當從 %qT 轉æ›ç‚º %qT 時"
-#: cp/call.c:3125 cp/pt.c:5562
+#: cp/call.c:3125 cp/pt.c:5576
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
@@ -28326,7 +28386,7 @@ msgstr "從類型 %qT 到類型 %qT 的轉æ›ç„¡æ•ˆ"
msgid "invalid conversion from %qT to %qT"
msgstr "從類型 %qT 到類型 %qT 的轉æ›ç„¡æ•ˆ"
-#: cp/call.c:5638 cp/call.c:5850
+#: cp/call.c:5638 cp/call.c:5854
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr " åˆå§‹åŒ–引數 %P,屬於 %qD"
@@ -28336,203 +28396,203 @@ msgstr " åˆå§‹åŒ–引數 %P,屬於 %qD"
msgid "converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:5743 cp/call.c:5865
+#: cp/call.c:5743 cp/call.c:5869
#, fuzzy, gcc-internal-format
#| msgid " initializing argument %P of %qD"
msgid " initializing argument %P of %q+D"
msgstr " åˆå§‹åŒ–引數 %P,屬於 %qD"
-#: cp/call.c:5862
+#: cp/call.c:5866
#, fuzzy, gcc-internal-format
#| msgid "cannot bind rvalue %qE to %qT"
msgid "cannot bind %qT lvalue to %qT"
msgstr "無法將å³å€¼ %qE 繫çµåˆ° %qT"
-#: cp/call.c:5894
+#: cp/call.c:5898
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr "無法將ä½å…ƒæ®µ %qE 繫çµåˆ° %qT"
-#: cp/call.c:5897 cp/call.c:5913
+#: cp/call.c:5901 cp/call.c:5917
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr "ä¸èƒ½å°‡ç·Šå¯¦çš„æ¬„ä½ %qE 繫çµåˆ° %qT"
-#: cp/call.c:5900
+#: cp/call.c:5904
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr "無法將å³å€¼ %qE 繫çµåˆ° %qT"
-#: cp/call.c:6012 cp/cvt.c:1654
+#: cp/call.c:6016 cp/cvt.c:1654
#, fuzzy, gcc-internal-format
#| msgid "class %qT will be considered nearly empty in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "在 GCC 的未來版本中類別 %qT 將被看作幾乎為空"
-#: cp/call.c:6047
+#: cp/call.c:6051
#, fuzzy, gcc-internal-format
#| msgid "cannot pass objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr "ä¸èƒ½é€éŽ %<...%> 傳éžæœ‰éžç°¡å–®èˆŠè³‡æ–™é¡žåž‹ %q#T 的物件;呼å«æœƒåœ¨åŸ·è¡Œæ™‚中止"
#. conditionally-supported behavior [expr.call] 5.2.2/7.
-#: cp/call.c:6076
+#: cp/call.c:6080
#, fuzzy, gcc-internal-format
#| msgid "cannot receive objects of non-POD type %q#T through %<...%>; call will abort at runtime"
msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr "ä¸èƒ½é€éŽ %<...%> 接å—有éžç°¡å–®èˆŠè³‡æ–™é¡žåž‹ %q#T 的物件;呼å«æœƒåœ¨åŸ·è¡Œæ™‚中止"
-#: cp/call.c:6132
+#: cp/call.c:6136
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for %q#D"
msgid "recursive evaluation of default argument for %q#D"
msgstr "é‡å®šç¾© %q#D çš„é è¨­åƒæ•¸"
-#: cp/call.c:6140
+#: cp/call.c:6144
#, fuzzy, gcc-internal-format
#| msgid "the default argument for parameter %d of %qD has not yet been parsed"
msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
msgstr "åƒæ•¸ %d(屬於 %qD)尚未被解æžåˆ°"
-#: cp/call.c:6253
+#: cp/call.c:6257
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr "函å¼çš„引數å¯èƒ½æ˜¯ format 屬性的備é¸"
-#: cp/call.c:6461
+#: cp/call.c:6465
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr "å°‡ %qT åšç‚º %q#D çš„ %<this%> 引數時丟棄了類型é™å®š"
-#: cp/call.c:6483
+#: cp/call.c:6493
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr "%qT 是 %qT 的一個ä¸å¯å­˜å–的基礎類別"
-#: cp/call.c:6561
+#: cp/call.c:6571
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD as %s"
msgid "deducing %qT as %qT"
msgstr "%qD 宣告為 %s"
-#: cp/call.c:6564
+#: cp/call.c:6574
#, fuzzy, gcc-internal-format
#| msgid " in call to %qD"
msgid " in call to %q+D"
msgstr " åœ¨å‘¼å« %qD 時"
-#: cp/call.c:6566
+#: cp/call.c:6576
#, gcc-internal-format
msgid " (you can disable this with -fno-deduce-init-list)"
msgstr ""
-#: cp/call.c:6832
+#: cp/call.c:6842
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr "在 java 介é¢é¡žåž‹ %qT 中找ä¸åˆ° class$ 欄ä½"
-#: cp/call.c:7091
+#: cp/call.c:7101
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr "呼å«éžå‡½å¼çš„ %qD"
-#: cp/call.c:7136 cp/typeck.c:2592
+#: cp/call.c:7146 cp/typeck.c:2605
#, gcc-internal-format
msgid "cannot call constructor %<%T::%D%> directly"
msgstr ""
-#: cp/call.c:7138
+#: cp/call.c:7148
#, gcc-internal-format
msgid " for a function-style cast, remove the redundant %<::%D%>"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7261
#, fuzzy, gcc-internal-format
#| msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgid "no matching function for call to %<%T::operator %T(%A)%#V%>"
msgstr "å° %<%T::%s(%A)%#V%> 的呼å«æ²’有匹é…的函å¼"
-#: cp/call.c:7264
+#: cp/call.c:7274
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr "å° %<%T::%s(%A)%#V%> 的呼å«æ²’有匹é…的函å¼"
-#: cp/call.c:7289
+#: cp/call.c:7299
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr "å°å¤šè¼‰çš„ %<%s(%A)%> 的呼å«æœ‰æ­§ç¾©"
-#: cp/call.c:7318
+#: cp/call.c:7328
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr "沒有物件無法呼å«æˆå“¡å‡½å¼ %qD"
-#: cp/call.c:8053
+#: cp/call.c:8068
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr "å‚³éž %qT 時é¸æ“‡ %qT 而ä¸æ˜¯ %qT"
-#: cp/call.c:8055 cp/name-lookup.c:5488
+#: cp/call.c:8070 cp/name-lookup.c:5495
#, gcc-internal-format
msgid " in call to %qD"
msgstr " åœ¨å‘¼å« %qD 時"
-#: cp/call.c:8112
+#: cp/call.c:8127
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr "é¸æ“‡ %qD 而ä¸æ˜¯ %qD"
-#: cp/call.c:8113
+#: cp/call.c:8128
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr " 當從 %qT 轉æ›ç‚º %qT 時"
-#: cp/call.c:8116
+#: cp/call.c:8131
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr " 因為å‰è€…的引數類型轉æ›åºåˆ—更好"
-#: cp/call.c:8235
+#: cp/call.c:8250
#, fuzzy, gcc-internal-format
#| msgid "default argument specified in explicit specialization"
msgid "default argument mismatch in overload resolution"
msgstr "明確特例化時指定了é è¨­åƒæ•¸"
-#: cp/call.c:8238
+#: cp/call.c:8253
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 1: %q+#F"
msgstr "å‚™é¸ç‚ºï¼š%+#D"
-#: cp/call.c:8240
+#: cp/call.c:8255
#, fuzzy, gcc-internal-format
#| msgid "candidate is: %+#D"
msgid " candidate 2: %q+#F"
msgstr "å‚™é¸ç‚ºï¼š%+#D"
-#: cp/call.c:8281
+#: cp/call.c:8296
#, gcc-internal-format
msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
msgstr "ISO C++ èªç‚ºæœ‰æ­§ç¾©ï¼Œç›¡ç®¡ç¬¬ä¸€å€‹å‚™é¸çš„最差類型轉æ›è¦å¥½æ–¼ç¬¬äºŒå€‹å‚™é¸çš„最差類型轉æ›"
-#: cp/call.c:8434
+#: cp/call.c:8449
#, fuzzy, gcc-internal-format
#| msgid "could not convert %qE to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "ä¸èƒ½å°‡ %qE 轉æ›ç‚º %qT"
-#: cp/call.c:8624
+#: cp/call.c:8639
#, gcc-internal-format
msgid "a temporary bound to %qD only persists until the constructor exits"
msgstr ""
-#: cp/call.c:8730
+#: cp/call.c:8745
#, fuzzy, gcc-internal-format
#| msgid "invalid initialization of non-const reference of type %qT from a temporary of type %qT"
msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT"
msgstr "將類型為 %qT çš„éž const åƒç…§åˆå§‹åŒ–為類型為 %qT 的臨時變數無效"
-#: cp/call.c:8734
+#: cp/call.c:8749
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "將類型為 %qT çš„åƒç…§åˆå§‹åŒ–為類型為 %qT çš„é‹ç®—å¼ç„¡æ•ˆ"
@@ -28748,228 +28808,228 @@ msgstr "æ¬„ä½ %q+D 無效地宣告為函å¼é¡žåž‹"
msgid "field %q+D invalidly declared method type"
msgstr "æ¬„ä½ %q+D 無效地宣告為方法類型"
-#: cp/class.c:3186
+#: cp/class.c:3187
#, fuzzy, gcc-internal-format
#| msgid "ignoring packed attribute on unpacked non-POD field %q+#D"
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr "為éžç·Šå¯¦çš„éžç°¡å–®èˆŠè³‡æ–™æ¬„ä½ %q+#D 忽略 packed 屬性"
-#: cp/class.c:3284
+#: cp/class.c:3285
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr "æ¬„ä½ %q+#D 與類別åŒå"
-#: cp/class.c:3307
+#: cp/class.c:3308
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr "%q#T 有指標資料æˆå“¡"
-#: cp/class.c:3312
+#: cp/class.c:3313
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr " 但沒有多載 %<%T(const %T&)%>"
-#: cp/class.c:3314
+#: cp/class.c:3315
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr " 或 %<operator=(const %T&)%>"
-#: cp/class.c:3318
+#: cp/class.c:3319
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr " 也沒有多載 %<operator=(const %T&)%>"
-#: cp/class.c:3789
+#: cp/class.c:3790
#, gcc-internal-format
msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC"
msgstr "空基礎類別 %qT çš„å移é‡å¯èƒ½èˆ‡ ABI ä¸ç›¸å®¹ï¼Œä¸¦ä¸”å¯èƒ½åœ¨ GCC 的未來版本中變更"
-#: cp/class.c:3916
+#: cp/class.c:3917
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr "在 GCC 的未來版本中類別 %qT 將被看作幾乎為空"
-#: cp/class.c:3998
+#: cp/class.c:3999
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr "為éžè™›æ–¹æ³• %q+D 指定了åˆå§‹å€¼è¨­å®šé …"
-#: cp/class.c:4389
+#: cp/class.c:4390
#, gcc-internal-format
msgid "method overrides both %<transaction_pure%> and %qE methods"
msgstr ""
-#: cp/class.c:4410
+#: cp/class.c:4411
#, gcc-internal-format
msgid "method declared %qE overriding %qE method"
msgstr ""
-#: cp/class.c:4876 cp/semantics.c:5732
+#: cp/class.c:4877 cp/semantics.c:5729
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function %qD"
msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type"
msgstr "å°éžéœæ…‹æˆå“¡å‡½å¼ %qD 的使用無效"
-#: cp/class.c:4901
+#: cp/class.c:4902
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a base of %qT"
msgid "%q+T is not literal because:"
msgstr "%qT ä¸æ˜¯ %qT 的基礎類別"
-#: cp/class.c:4903
+#: cp/class.c:4904
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " %q+T has a non-trivial destructor"
msgstr "基礎類別 %q#T 有一個éžè™›è§£æ§‹å‡½å¼"
-#: cp/class.c:4908
+#: cp/class.c:4909
#, 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"
msgstr ""
-#: cp/class.c:4944
+#: cp/class.c:4945
#, fuzzy, gcc-internal-format
#| msgid "base class %q#T has a non-virtual destructor"
msgid " base class %qT of %q+T is non-literal"
msgstr "基礎類別 %q#T 有一個éžè™›è§£æ§‹å‡½å¼"
-#: cp/class.c:4958
+#: cp/class.c:4959
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static data member %q+D"
msgid " non-static data member %q+D has non-literal type"
msgstr "å°éžéœæ…‹è³‡æ–™æˆå“¡ %q+D 的無效使用"
-#: cp/class.c:5070
+#: cp/class.c:5071
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr "類別中有éžéœæ…‹åƒç…§ %q+#D,å»æ²’有æ供建構å¼"
-#: cp/class.c:5075
+#: cp/class.c:5076
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "類別中有éžéœæ…‹å¸¸æ•¸æˆå“¡ %q+#D å»æ²’有建構å¼"
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
-#: cp/class.c:5101
+#: cp/class.c:5102
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
msgstr ""
-#: cp/class.c:5104
+#: cp/class.c:5105
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
msgstr ""
-#: cp/class.c:5328
+#: cp/class.c:5329
#, gcc-internal-format
msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC"
msgstr "虛基礎類別 %qT çš„å移é‡èˆ‡ ABI ä¸ç›¸å®¹ï¼Œä¸¦ä¸”å¯èƒ½åœ¨ GCC 的未來版本中變更"
-#: cp/class.c:5429
+#: cp/class.c:5430
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr "由於存在歧義,直接基礎類別 %qT 在 %qT 中無法存å–"
-#: cp/class.c:5441
+#: cp/class.c:5442
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr "由於存在歧義,虛基礎類別 %qT 在 %qT 中無法存å–"
-#: cp/class.c:5627
+#: cp/class.c:5628
#, gcc-internal-format
msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC"
msgstr "賦於 %qT 的大å°å¯èƒ½èˆ‡ ABI ä¸ç›¸å®¹ï¼Œä¸¦ä¸”å¯èƒ½åœ¨ GCC 的未來版本中變更"
-#: cp/class.c:5667
+#: cp/class.c:5668
#, gcc-internal-format
msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC"
msgstr "%qD çš„å移é‡å¯èƒ½èˆ‡ ABI ä¸ç›¸å®¹ï¼Œä¸¦ä¸”å¯èƒ½åœ¨ GCC 的未來版本中變更"
-#: cp/class.c:5695
+#: cp/class.c:5696
#, gcc-internal-format
msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr "%q+D çš„å移é‡èˆ‡ ABI ä¸ç›¸å®¹ï¼Œä¸¦ä¸”在 GCC 的未來版本中å¯èƒ½æœƒæœ‰è®ŠåŒ–"
-#: cp/class.c:5705
+#: cp/class.c:5706
#, gcc-internal-format
msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr "%q+D 包å«ä¸€å€‹ç©ºé¡žåˆ¥ï¼ŒåŸºç¤Žé¡žåˆ¥çš„ä½ç½®åœ¨ GCC 的未來版本å¯èƒ½æœƒæœ‰è®ŠåŒ–"
-#: cp/class.c:5793
+#: cp/class.c:5794
#, gcc-internal-format
msgid "layout of classes derived from empty class %qT may change in a future version of GCC"
msgstr "空類別 %qT çš„è¡ç”Ÿé¡žåˆ¥çš„版é¢è¨­ç½®åœ¨ GCC 的未來版本中å¯èƒ½æœƒèµ·è®ŠåŒ–"
-#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577
+#: cp/class.c:5963 cp/decl.c:11829 cp/parser.c:18586
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr "%q#T é‡å®šç¾©"
-#: cp/class.c:6113
+#: cp/class.c:6114
#, fuzzy, gcc-internal-format
#| msgid "%q#T has virtual functions but non-virtual destructor"
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr "%q#T 有虛函å¼å»æ²’有虛解構函å¼"
-#: cp/class.c:6139
+#: cp/class.c:6140
#, fuzzy, gcc-internal-format
#| msgid "class %qT does not have any field named %qD"
msgid "type transparent class %qT does not have any fields"
msgstr "類別 %qT æ²’å…·å為 %qD 的欄ä½"
-#: cp/class.c:6145
+#: cp/class.c:6146
#, gcc-internal-format
msgid "type transparent class %qT has base classes"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6150
#, fuzzy, gcc-internal-format
#| msgid "type %qs has virtual member functions"
msgid "type transparent class %qT has virtual functions"
msgstr "é¡žåž‹ %qs 有虛æˆå“¡å‡½å¼"
-#: cp/class.c:6251
+#: cp/class.c:6252
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "試圖完æˆçµæ§‹ï¼Œä½†ç‚ºå…ˆå‰çš„解æžéŒ¯èª¤æ‰€æ’æ–·"
-#: cp/class.c:6757
+#: cp/class.c:6758
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr "語言字串 %<\"%E\"%> ä¸å¯è­˜åˆ¥"
-#: cp/class.c:6847
+#: cp/class.c:6848
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr "無法解æžå¤šè¼‰å‡½å¼ %qD,基於å‘é¡žåž‹ %qT 的轉æ›"
-#: cp/class.c:6971
+#: cp/class.c:6972
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr "沒有å¯å°‡å‡½å¼ %qD 轉æ›åˆ°é¡žåž‹ %q#T 的匹é…é …"
-#: cp/class.c:6994
+#: cp/class.c:6995
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr "å°‡å¤šè¼‰å‡½å¼ %qD 轉æ›ç‚ºé¡žåž‹ %q#T 有歧義"
-#: cp/class.c:7021
+#: cp/class.c:7022
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr "å‡å®šæ˜¯æˆå“¡æŒ‡æ¨™ %qD"
-#: cp/class.c:7024
+#: cp/class.c:7025
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr "(æˆå“¡æŒ‡æ¨™åªèƒ½ç”¨ %<&%E%> 構æˆ)"
-#: cp/class.c:7086 cp/class.c:7120
+#: cp/class.c:7087 cp/class.c:7121
#, gcc-internal-format
msgid "not enough type information"
msgstr "類型資訊ä¸å……分"
-#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
+#: cp/class.c:7104 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "無法將 %qE 從類型 %qT 轉æ›åˆ°é¡žåž‹ %qT"
@@ -28979,12 +29039,12 @@ msgstr "無法將 %qE 從類型 %qT 轉æ›åˆ°é¡žåž‹ %qT"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:7414 cp/decl.c:1287
+#: cp/class.c:7415 cp/decl.c:1287
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr "%q#D 的宣告"
-#: cp/class.c:7415
+#: cp/class.c:7416
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "變更了 %qD çš„åŽŸæ„ %q+#D"
@@ -29005,7 +29065,7 @@ msgstr "無法永é ä¸å®Œå…¨é¡žåž‹ %qT 轉æ›åˆ° %qT"
msgid "conversion of %qE from %qT to %qT is ambiguous"
msgstr "å°‡ %qE 從 %qT 轉æ›åˆ° %qT 有歧義"
-#: cp/cvt.c:204 cp/typeck.c:4088
+#: cp/cvt.c:204 cp/decl.c:10586 cp/typeck.c:4101
#, fuzzy, gcc-internal-format
#| msgid "array bound is not an integer constant"
msgid "zero as null pointer constant"
@@ -29040,7 +29100,7 @@ msgstr "將類型為 %qT çš„éž const åƒç…§åˆå§‹åŒ–為類型為 %qT 的臨時è
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "從 %qT 到 %qT 的轉æ›ä¸Ÿå¤±äº†é™å®šè³‡è¨Š"
-#: cp/cvt.c:478 cp/typeck.c:6169
+#: cp/cvt.c:478 cp/typeck.c:6182
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "從 %qT 轉æ›åˆ° %qT 並未æ領指標"
@@ -29482,7 +29542,7 @@ msgstr "%q+#D çš„å‰ä¸€å€‹å®£å‘Š"
msgid "declaration of template %q#D"
msgstr "範本宣告 %q#D"
-#: cp/decl.c:1458 cp/name-lookup.c:841 cp/name-lookup.c:856
+#: cp/decl.c:1458 cp/name-lookup.c:844 cp/name-lookup.c:859
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr "與先å‰çš„宣告 %q+#D è¡çª"
@@ -29534,7 +29594,7 @@ msgstr "命å空間 %q+D 早先的宣告在這裡"
msgid "%q+#D previously defined here"
msgstr "%q+#D 已在此定義éŽ"
-#: cp/decl.c:1563 cp/name-lookup.c:1133
+#: cp/decl.c:1563 cp/name-lookup.c:1136
#, gcc-internal-format
msgid "%q+#D previously declared here"
msgstr "%q+#D 已在此宣告éŽ"
@@ -29664,7 +29724,7 @@ msgstr "%q+D 的執行緒局部宣告跟在其éžåŸ·è¡Œç·’局部宣告之後"
msgid "non-thread-local declaration of %q#D follows thread-local declaration"
msgstr "%q+D 的執行緒局部宣告跟在其éžåŸ·è¡Œç·’局部宣告之後"
-#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132
+#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:553 cp/name-lookup.c:1135
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D"
msgid "redeclaration of %q#D"
@@ -29739,7 +29799,7 @@ msgstr "標籤å為 wchar_t"
msgid "%qD is not a type"
msgstr "%qD ä¸æ˜¯ä¸€å€‹ç¯„本"
-#: cp/decl.c:3231 cp/parser.c:5049
+#: cp/decl.c:3231 cp/parser.c:5055
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr "%qD 使用時未帶範本åƒæ•¸"
@@ -29878,130 +29938,130 @@ msgstr "åƒæ•¸å®£å‘Šä¸­å‡ºç¾çš„ typedef 宣告無效"
msgid "%<constexpr%> cannot be used for type declarations"
msgstr "檔案作用欄ä½ä¸­å‡ºç¾ %<register%> 空宣告"
-#: cp/decl.c:4226
+#: cp/decl.c:4227
#, fuzzy, gcc-internal-format
#| msgid "attribute ignored in declaration of %q+#T"
msgid "attribute ignored in declaration of %q#T"
msgstr "屬性於 %q+#T 的宣告中被忽略"
-#: cp/decl.c:4227
+#: cp/decl.c:4228
#, fuzzy, gcc-internal-format
#| msgid "attribute for %q+#T must follow the %qs keyword"
msgid "attribute for %q#T must follow the %qs keyword"
msgstr "%q+#T 的屬性必須跟在 %qs é—œéµå­—後é¢"
-#: cp/decl.c:4296
+#: cp/decl.c:4297
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute can only be applied to class definitions"
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr "åªèƒ½ç‚ºé¡žåˆ¥å®šç¾©å¥—用 %qE 屬性"
#. A template type parameter or other dependent type.
-#: cp/decl.c:4300
+#: cp/decl.c:4301
#, gcc-internal-format
msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
msgstr ""
-#: cp/decl.c:4370 cp/decl2.c:815
+#: cp/decl.c:4371 cp/decl2.c:815
#, fuzzy, gcc-internal-format
#| msgid "typedef %qD is initialized (use __typeof__ instead)"
msgid "typedef %qD is initialized (use decltype instead)"
msgstr "typedef %qD 被åˆå§‹åŒ–(改用 __typeof__)"
-#: cp/decl.c:4388
+#: cp/decl.c:4389
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr "%q#D 宣告有 %<extern%> 並被åˆå§‹åŒ–"
-#: cp/decl.c:4417
+#: cp/decl.c:4418
#, fuzzy, gcc-internal-format
#| msgid "function %q+D definition is marked dllimport"
msgid "definition of %q#D is marked %<dllimport%>"
msgstr "å‡½å¼ %q+D 的定義被標記為 dllimport"
-#: cp/decl.c:4436
+#: cp/decl.c:4438
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr "%q#D ä¸æ˜¯ %q#T çš„éœæ…‹æˆå“¡"
-#: cp/decl.c:4442
+#: cp/decl.c:4444
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr "ISO C++ ä¸å…許將 %<%T::%D%> 定義為 %<%T::%D%>"
-#: cp/decl.c:4451
+#: cp/decl.c:4453
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
msgstr "範本頭ä¸å…許出ç¾åœ¨æ˜Žç¢ºç‰¹ä¾‹åŒ–類別的æˆå“¡å®šç¾©ä¸­"
-#: cp/decl.c:4459
+#: cp/decl.c:4461
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr "ISO C++ ä¸å…許æˆå“¡ %qD çš„åˆå§‹åŒ–"
-#: cp/decl.c:4464
+#: cp/decl.c:4466
#, gcc-internal-format
msgid "%qD declared %<constexpr%> outside its class"
msgstr ""
-#: cp/decl.c:4503
+#: cp/decl.c:4505
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr "出ç¾åœ¨é¡žåˆ¥å¤–çš„ %q#D 的宣告ä¸æ˜¯å®šç¾©"
-#: cp/decl.c:4598
+#: cp/decl.c:4600
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr "變數 %q#D 有åˆå§‹å€¼è¨­å®šï¼Œä½†æ˜¯é¡žåž‹ä¸å®Œå…¨"
-#: cp/decl.c:4604 cp/decl.c:5399
+#: cp/decl.c:4606 cp/decl.c:5401
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr "陣列 %q#D 的元素類型ä¸å®Œå…¨"
-#: cp/decl.c:4611 cp/decl.c:6009
+#: cp/decl.c:4613 cp/decl.c:6011
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D has %<extern%> and is initialized"
msgid "declaration of %q#D has no initializer"
msgstr "%q#D 宣告有 %<extern%> 並被åˆå§‹åŒ–"
-#: cp/decl.c:4613
+#: cp/decl.c:4615
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr "èšåˆ %q#D é¡žåž‹ä¸å®Œå…¨ï¼Œç„¡æ³•è¢«å®šç¾©"
-#: cp/decl.c:4647
+#: cp/decl.c:4649
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr "%qD 宣告為åƒç…§å»æœªè¢«åˆå§‹åŒ–"
-#: cp/decl.c:4688
+#: cp/decl.c:4690
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "name used in a GNU-style designated initializer for an array"
msgstr "å稱 %qD 用在 GNU 風格的陣列指定元素åˆå§‹å€¼è¨­å®šä¸­"
-#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189
+#: cp/decl.c:4698 cp/typeck2.c:1084 cp/typeck2.c:1189
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr "ä¸å¹³å‡¡çš„代ç†åˆå§‹å€¼è¨­å®šä¸å—支æ´"
-#: cp/decl.c:4701
+#: cp/decl.c:4703
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr "å稱 %qD 用在 GNU 風格的陣列指定元素åˆå§‹å€¼è¨­å®šä¸­"
-#: cp/decl.c:4749
+#: cp/decl.c:4751
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr "åˆå§‹å€¼è¨­å®šç„¡æ³•æ±ºå®š %qD 的大å°"
-#: cp/decl.c:4756
+#: cp/decl.c:4758
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr "%qD 缺少陣列大å°"
-#: cp/decl.c:4768
+#: cp/decl.c:4770
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "大å°ç‚º 0 的陣列 %qD"
@@ -30009,426 +30069,426 @@ msgstr "大å°ç‚º 0 的陣列 %qD"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4811
+#: cp/decl.c:4813
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t known"
msgid "storage size of %qD isn%'t known"
msgstr "%q+D 的存儲大å°ä¸æ˜Ž"
-#: cp/decl.c:4834
+#: cp/decl.c:4836
#, fuzzy, gcc-internal-format
#| msgid "storage size of %q+D isn%'t constant"
msgid "storage size of %qD isn%'t constant"
msgstr "%q+D 的存儲大å°ä¸æ˜¯å¸¸æ•¸"
-#: cp/decl.c:4880
+#: cp/decl.c:4882
#, fuzzy, gcc-internal-format
#| msgid "sorry: semantics of inline function static data %q+#D are wrong (you'll wind up with multiple copies)"
msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)"
msgstr "å°ä¸èµ·ï¼šå…§è¯å‡½å¼ä¸­éœæ…‹è³‡æ–™ %q+#D 的語義是錯的(您會得到此變數的多份複製)"
-#: cp/decl.c:4884
+#: cp/decl.c:4886
#, fuzzy, gcc-internal-format
#| msgid "%J you can work around this by removing the initializer"
msgid " you can work around this by removing the initializer"
msgstr "%J 變通的作法是刪除åˆå§‹å€¼è¨­å®š"
-#: cp/decl.c:4915
+#: cp/decl.c:4917
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr "未åˆå§‹åŒ–的常數 %qD"
-#: cp/decl.c:4922
+#: cp/decl.c:4924
#, fuzzy, gcc-internal-format
#| msgid "type %qs has a user-defined constructor"
msgid "%q#T has no user-provided default constructor"
msgstr "é¡žåž‹ %qs 有一個使用者定義的建構å¼"
-#: cp/decl.c:4926
+#: cp/decl.c:4928
#, gcc-internal-format
msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
msgstr ""
-#: cp/decl.c:4928
+#: cp/decl.c:4930
#, gcc-internal-format
msgid "and the implicitly-defined constructor does not initialize %q+#D"
msgstr ""
-#: cp/decl.c:5047
+#: cp/decl.c:5049
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr "無效類型 %qT åšç‚ºé¡žåž‹ç‚º %qT çš„å‘é‡çš„åˆå§‹åŒ–設定"
-#: cp/decl.c:5088
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr "%qT çš„åˆå§‹åŒ–設定必須在大括號內"
-#: cp/decl.c:5105
+#: cp/decl.c:5107
#, fuzzy, gcc-internal-format
#| msgid "name %qD used in a GNU-style designated initializer for an array"
msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
msgstr "å稱 %qD 用在 GNU 風格的陣列指定元素åˆå§‹å€¼è¨­å®šä¸­"
-#: cp/decl.c:5115
+#: cp/decl.c:5117
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr "%qT æ²’å…·å為 %qD çš„éžéœæ…‹è³‡æ–™æˆå“¡"
-#: cp/decl.c:5156
+#: cp/decl.c:5158
#, gcc-internal-format
msgid "C99 designator %qE outside aggregate initializer"
msgstr ""
-#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270
+#: cp/decl.c:5195 cp/decl.c:5380 cp/typeck2.c:1071 cp/typeck2.c:1270
#: cp/typeck2.c:1299 cp/typeck2.c:1346
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr "%qT çš„åˆå§‹å€¼è¨­å®šé …太多"
-#: cp/decl.c:5226
+#: cp/decl.c:5228
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr "é¡žåž‹ %qT 的標é‡åˆå§‹åŒ–帶大括號"
-#: cp/decl.c:5319
+#: cp/decl.c:5321
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr "%qT çš„åˆå§‹å€¼è¨­å®šå‘¨åœç¼ºå°‘大括號"
-#: cp/decl.c:5401
+#: cp/decl.c:5403
#, fuzzy, gcc-internal-format
#| msgid "elements of array %q#D have incomplete type"
msgid "elements of array %q#T have incomplete type"
msgstr "陣列 %q#D 的元素類型ä¸å®Œå…¨"
-#: cp/decl.c:5410
+#: cp/decl.c:5412
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr "å¯è®Šå¤§å°çš„物件 %qD ä¸èƒ½è¢«åˆå§‹åŒ–"
-#: cp/decl.c:5412
+#: cp/decl.c:5414
#, fuzzy, gcc-internal-format
#| msgid "ISO C90 forbids compound literals"
msgid "variable-sized compound literal"
msgstr "ISO C90 ä¸å…許複åˆå­—é¢å€¼"
-#: cp/decl.c:5467
+#: cp/decl.c:5469
#, fuzzy, gcc-internal-format
#| msgid "%qD has incomplete type"
msgid "%q#D has incomplete type"
msgstr "%qD é¡žåž‹ä¸å®Œå…¨"
-#: cp/decl.c:5487
+#: cp/decl.c:5489
#, fuzzy, gcc-internal-format
#| msgid "excess elements in union initializer"
msgid "scalar object %qD requires one element in initializer"
msgstr "è¯åˆåˆå§‹å€¼è¨­å®šé …中有多餘元素"
-#: cp/decl.c:5530
+#: cp/decl.c:5532
#, fuzzy, gcc-internal-format
#| msgid "%qD must be initialized by constructor, not by %<{...}%>"
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr "%qD 必須由建構å¼è€Œä¸æ˜¯ %<{...}%> åˆå§‹åŒ–"
-#: cp/decl.c:5610
+#: cp/decl.c:5612
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr "陣列 %qD 被有括號的字é¢å­—串 %qE 所åˆå§‹åŒ–"
-#: cp/decl.c:5637
+#: cp/decl.c:5639
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr "建構å¼ä¸­å°éœæ…‹æˆå“¡çš„åˆå§‹åŒ–無效"
-#: cp/decl.c:5639
+#: cp/decl.c:5641
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgid "non-constant in-class initialization invalid for static member %qD"
msgstr "ISO C++ ä¸å…許在類別內åˆå§‹åŒ–éžå¸¸æ•¸éœæ…‹æˆå“¡ %qD"
-#: cp/decl.c:5643
+#: cp/decl.c:5645
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr "(需è¦ä¸€å€‹é¡žåˆ¥å¤–çš„åˆå§‹åŒ–)"
-#: cp/decl.c:5978
+#: cp/decl.c:5980
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr "賦值(ä¸æ˜¯åˆå§‹åŒ–)出ç¾åœ¨å®£å‘Šä¸­"
-#: cp/decl.c:6136
+#: cp/decl.c:6138
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr "éš±è—了早先的類型宣告 %q#D"
-#: cp/decl.c:6168
+#: cp/decl.c:6170
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot be thread-local because it has non-POD type %qT"
msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr "%qD ä¸èƒ½æ˜¯åŸ·è¡Œç·’å€åŸŸæ€§çš„,因為它有éžç°¡å–®èˆŠè³‡æ–™çš„é¡žåž‹ %qT"
-#: cp/decl.c:6210
+#: cp/decl.c:6212
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:6218
+#: cp/decl.c:6220
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr "%qD 是執行緒å€åŸŸæ€§çš„,所以ä¸èƒ½è¢«å‹•æ…‹åœ°åˆå§‹åŒ–"
-#: cp/decl.c:6236
+#: cp/decl.c:6238
#, gcc-internal-format
msgid "%qD cannot be initialized by a non-constant expression when being declared"
msgstr "%qD ä¸èƒ½ç”±ä¸€å€‹å®£å‘Šæ™‚éžå¸¸æ•¸çš„é‹ç®—å¼åˆå§‹åŒ–"
-#: cp/decl.c:6284
+#: cp/decl.c:6286
#, fuzzy, gcc-internal-format
#| msgid "definition of static data member %q+D of dllimport'd class"
msgid "non-static data member %qD has Java class type"
msgstr "為 dllimport 類別定義了éœæ…‹è³‡æ–™æˆå“¡ %q+D"
-#: cp/decl.c:6349
+#: cp/decl.c:6351
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr "å‡½å¼ %q#D åƒè®Šæ•¸ä¸€æ¨£è¢«åˆå§‹åŒ–"
-#: cp/decl.c:6948
+#: cp/decl.c:6950
#, fuzzy, gcc-internal-format
#| msgid "initializer fails to determine size of %qD"
msgid "initializer fails to determine size of %qT"
msgstr "åˆå§‹å€¼è¨­å®šç„¡æ³•æ±ºå®š %qD 的大å°"
-#: cp/decl.c:6952
+#: cp/decl.c:6954
#, fuzzy, gcc-internal-format
#| msgid "array size missing in %qD"
msgid "array size missing in %qT"
msgstr "%qD 缺少陣列大å°"
-#: cp/decl.c:6955
+#: cp/decl.c:6957
#, fuzzy, gcc-internal-format
#| msgid "zero-size array %qD"
msgid "zero-size array %qT"
msgstr "大å°ç‚º 0 的陣列 %qD"
-#: cp/decl.c:6971
+#: cp/decl.c:6973
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr "其它類別 %qT 的解構函å¼ä¸èƒ½åšç‚ºæˆå“¡"
-#: cp/decl.c:6973
+#: cp/decl.c:6975
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr "其它類別 %qT 的建構å¼ä¸èƒ½åšç‚ºæˆå“¡"
-#: cp/decl.c:6997
+#: cp/decl.c:6999
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> variable"
msgstr "%qD 宣告為 %<virtual%> %s"
-#: cp/decl.c:6999
+#: cp/decl.c:7001
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> variable"
msgstr "%qD 宣告為 %<inline%> %s"
-#: cp/decl.c:7001
+#: cp/decl.c:7003
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
msgstr "為 %qD 指定的 %<const%> 和 %<volatile%> 在 %s 宣告中無效"
-#: cp/decl.c:7006
+#: cp/decl.c:7008
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> parameter"
msgstr "%qD 宣告為 %<virtual%> %s"
-#: cp/decl.c:7008
+#: cp/decl.c:7010
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> parameter"
msgstr "%qD 宣告為 %<inline%> %s"
-#: cp/decl.c:7010
+#: cp/decl.c:7012
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
msgstr "為 %qD 指定的 %<const%> 和 %<volatile%> 在 %s 宣告中無效"
-#: cp/decl.c:7015
+#: cp/decl.c:7017
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> type"
msgstr "%qD 宣告為 %<virtual%> %s"
-#: cp/decl.c:7017
+#: cp/decl.c:7019
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> type"
msgstr "%qD 宣告為 %<inline%> %s"
-#: cp/decl.c:7019
+#: cp/decl.c:7021
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
msgstr "為 %qD 指定的 %<const%> 和 %<volatile%> 在 %s 宣告中無效"
-#: cp/decl.c:7024
+#: cp/decl.c:7026
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as a %<virtual%> %s"
msgid "%qD declared as a %<virtual%> field"
msgstr "%qD 宣告為 %<virtual%> %s"
-#: cp/decl.c:7026
+#: cp/decl.c:7028
#, fuzzy, gcc-internal-format
#| msgid "%qD declared as an %<inline%> %s"
msgid "%qD declared as an %<inline%> field"
msgstr "%qD 宣告為 %<inline%> %s"
-#: cp/decl.c:7028
+#: cp/decl.c:7030
#, fuzzy, gcc-internal-format
#| msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in %s declaration"
msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
msgstr "為 %qD 指定的 %<const%> 和 %<volatile%> 在 %s 宣告中無效"
-#: cp/decl.c:7035
+#: cp/decl.c:7037
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr "%q+D 宣告為夥伴"
-#: cp/decl.c:7041
+#: cp/decl.c:7043
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr "%q+D 宣告時有異常指定"
-#: cp/decl.c:7075
+#: cp/decl.c:7077
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr "%qD 的定義ä¸åœ¨åŒ…å« %qT 的命å空間中"
-#: cp/decl.c:7115
+#: cp/decl.c:7117
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr "éœæ…‹æˆå“¡å‡½å¼ %q#D 的宣告帶有類型é™å®šç¬¦"
-#: cp/decl.c:7214
+#: cp/decl.c:7216
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr "在夥伴宣告中定義明確特例化 %qD"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:7224
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr "在基本範本的宣告中å°ç¯„本識別碼 %qD 的使用無效"
-#: cp/decl.c:7254
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgstr "夥伴範本特例化 %qD 中ä¸å…許出ç¾é è¨­åƒæ•¸"
-#: cp/decl.c:7262
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
msgstr "%<inline%> ä¸å…許用於夥伴範本特例化 %qD 的宣告"
-#: cp/decl.c:7304
+#: cp/decl.c:7306
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr "ä¸èƒ½å°‡ %<::main%> 宣告為一個範本"
-#: cp/decl.c:7306
+#: cp/decl.c:7308
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr "ä¸èƒ½å°‡ %<::main%> 宣告為 inline"
-#: cp/decl.c:7308
+#: cp/decl.c:7310
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr "ä¸èƒ½å°‡ %<::main%> 宣告為 static"
-#: cp/decl.c:7336
+#: cp/decl.c:7338
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare function %q#D with linkage"
msgstr ""
-#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673
+#: cp/decl.c:7342 cp/decl.c:7699 cp/decl2.c:3673
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr "%q+#D 未指明éžé™å®šé¡žåž‹ï¼Œæ‰€ä»¥å®ƒä¸åšç‚ºå¤–部連çµ"
-#: cp/decl.c:7346
+#: cp/decl.c:7348
#, fuzzy, gcc-internal-format
#| msgid "previous declaration of %q+#D with %qL linkage"
msgid "type %qT with no linkage used to declare function %q#D with linkage"
msgstr "%q+#D 的早先宣告有 %qL 連çµ"
-#: cp/decl.c:7368
+#: cp/decl.c:7370
#, fuzzy, gcc-internal-format
#| msgid "%smember function %qD cannot have cv-qualifier"
msgid "static member function %qD cannot have cv-qualifier"
msgstr "%sæˆå“¡å‡½å¼ %qD ä¸èƒ½æ“有 cv é™å®šç¬¦"
-#: cp/decl.c:7369
+#: cp/decl.c:7371
#, fuzzy, gcc-internal-format
#| msgid "%smember function %qD cannot have cv-qualifier"
msgid "non-member function %qD cannot have cv-qualifier"
msgstr "%sæˆå“¡å‡½å¼ %qD ä¸èƒ½æ“有 cv é™å®šç¬¦"
-#: cp/decl.c:7385
+#: cp/decl.c:7387
#, fuzzy, gcc-internal-format
#| msgid "template with C linkage"
msgid "literal operator with C linkage"
msgstr "C 連çµçš„範本"
-#: cp/decl.c:7394
+#: cp/decl.c:7396
#, fuzzy, gcc-internal-format
#| msgid "invalid option argument %qs"
msgid "%qD has invalid argument list"
msgstr "無效的é¸é …åƒæ•¸ %qs"
-#: cp/decl.c:7402
+#: cp/decl.c:7404
#, gcc-internal-format
msgid "integer suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7408
+#: cp/decl.c:7410
#, gcc-internal-format
msgid "floating point suffix %<%s%> shadowed by implementation"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7416
#, fuzzy, gcc-internal-format
#| msgid "%qD must be a nonstatic member function"
msgid "%qD must be a non-member function"
msgstr "%qD 必須是一個éžéœæ…‹çš„æˆå“¡å‡½å¼"
-#: cp/decl.c:7458
+#: cp/decl.c:7460
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr "%<::main%> 必須回傳 %<int%>"
-#: cp/decl.c:7500
+#: cp/decl.c:7502
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr "éš±å«å®£å‘Šçš„ %qD 的定義"
-#: cp/decl.c:7505
+#: cp/decl.c:7507
#, fuzzy, gcc-internal-format
#| msgid "definition of implicitly-declared %qD"
msgid "definition of explicitly-defaulted %q+D"
msgstr "éš±å«å®£å‘Šçš„ %qD 的定義"
-#: cp/decl.c:7506
+#: cp/decl.c:7508
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously defined here"
msgid "%q+#D explicitly defaulted here"
msgstr "%q+#D 已在此定義éŽ"
-#: cp/decl.c:7523 cp/decl2.c:736
+#: cp/decl.c:7525 cp/decl2.c:736
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr "æˆå“¡å‡½å¼ %q#D 未在類別 %qT 中宣告"
@@ -30437,951 +30497,951 @@ msgstr "æˆå“¡å‡½å¼ %q#D 未在類別 %qT 中宣告"
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7694
+#: cp/decl.c:7696
#, gcc-internal-format
msgid "anonymous type with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7703
+#: cp/decl.c:7705
#, gcc-internal-format
msgid "type %qT with no linkage used to declare variable %q#D with linkage"
msgstr ""
-#: cp/decl.c:7826
+#: cp/decl.c:7828
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of incomplete type"
msgstr "類別中å°å…·æœ‰éžæ•´æ•¸é¡žåž‹ %qT çš„éœæ…‹è³‡æ–™æˆå“¡çš„åˆå§‹åŒ–無效"
-#: cp/decl.c:7830
+#: cp/decl.c:7832
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
msgstr "類別中å°å…·æœ‰éžæ•´æ•¸é¡žåž‹ %qT çš„éœæ…‹è³‡æ–™æˆå“¡çš„åˆå§‹åŒ–無效"
-#: cp/decl.c:7833
+#: cp/decl.c:7835
#, fuzzy, gcc-internal-format
#| msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgid "in-class initialization of static data member %q#D of non-literal type"
msgstr "類別中å°å…·æœ‰éžæ•´æ•¸é¡žåž‹ %qT çš„éœæ…‹è³‡æ–™æˆå“¡çš„åˆå§‹åŒ–無效"
-#: cp/decl.c:7846
+#: cp/decl.c:7848
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
msgstr "類別中å°å…·æœ‰éžæ•´æ•¸é¡žåž‹ %qT çš„éœæ…‹è³‡æ–™æˆå“¡çš„åˆå§‹åŒ–無效"
-#: cp/decl.c:7852
+#: cp/decl.c:7854
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr "ISO C++ ä¸å…許在類別內åˆå§‹åŒ–éžå¸¸æ•¸éœæ…‹æˆå“¡ %qD"
-#: cp/decl.c:7856
+#: cp/decl.c:7858
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
msgstr "ISO C++ ä¸å…許åˆå§‹åŒ–æˆå“¡å¸¸æ•¸ %qD,因為它有éžæ•´æ•¸çš„é¡žåž‹ %qT"
-#: cp/decl.c:7933 cp/decl.c:7961
+#: cp/decl.c:7935 cp/decl.c:7963
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr "陣列 %qD 的大å°å…·æœ‰éžæ•´æ•¸é¡žåž‹ %qT"
-#: cp/decl.c:7936 cp/decl.c:7963
+#: cp/decl.c:7938 cp/decl.c:7965
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr "陣列 %qT 的大å°çš„é¡žåž‹ä¸æ˜¯æ•´æ•¸"
-#: cp/decl.c:8013
+#: cp/decl.c:8015
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr "陣列 %qD 的大å°ç‚ºè² "
-#: cp/decl.c:8015
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "size of array is negative"
msgstr "陣列大å°ç‚ºè² æ•¸"
-#: cp/decl.c:8029
+#: cp/decl.c:8031
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr "ISO C ä¸å…許大å°ç‚º 0 的陣列 %qD"
-#: cp/decl.c:8031
+#: cp/decl.c:8033
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr "ISO C++ ä¸å…許大å°ç‚º 0 的陣列"
-#: cp/decl.c:8043
+#: cp/decl.c:8045
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr "陣列 %qD 的大å°ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸é‹ç®—å¼"
-#: cp/decl.c:8046
+#: cp/decl.c:8048
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr "陣列大å°ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸é‹ç®—å¼"
-#: cp/decl.c:8052
+#: cp/decl.c:8054
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array %qD"
msgid "ISO C++ forbids variable length array %qD"
msgstr "ISO C++ ä¸å…許彈性陣列 %qD"
-#: cp/decl.c:8054
+#: cp/decl.c:8056
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids variable-size array"
msgid "ISO C++ forbids variable length array"
msgstr "ISO C++ ä¸å…許彈性陣列"
-#: cp/decl.c:8060
+#: cp/decl.c:8062
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:8098
+#: cp/decl.c:8100
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr "陣列維數溢出"
-#: cp/decl.c:8158
+#: cp/decl.c:8160
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of %<auto%>"
msgstr "%qs 宣告為函å¼çš„陣列"
-#: cp/decl.c:8166
+#: cp/decl.c:8168
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of voids"
msgid "declaration of %qD as array of void"
msgstr "%qs 宣告為 void 的陣列"
-#: cp/decl.c:8168
+#: cp/decl.c:8170
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of void"
msgstr "產生 %qT 的陣列"
-#: cp/decl.c:8173
+#: cp/decl.c:8175
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of functions"
msgstr "%qs 宣告為函å¼çš„陣列"
-#: cp/decl.c:8175
+#: cp/decl.c:8177
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of functions"
msgstr "產生 %qT 的陣列"
-#: cp/decl.c:8180
+#: cp/decl.c:8182
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of references"
msgstr "%qs 宣告為函å¼çš„陣列"
-#: cp/decl.c:8182
+#: cp/decl.c:8184
#, fuzzy, gcc-internal-format
#| msgid "creating array of %qT"
msgid "creating array of references"
msgstr "產生 %qT 的陣列"
-#: cp/decl.c:8187
+#: cp/decl.c:8189
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "declaration of %qD as array of function members"
msgstr "%qs 宣告為函å¼çš„陣列"
-#: cp/decl.c:8189
+#: cp/decl.c:8191
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qs as array of functions"
msgid "creating array of function members"
msgstr "%qs 宣告為函å¼çš„陣列"
-#: cp/decl.c:8203
+#: cp/decl.c:8205
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
msgstr "多維陣列 %qD 的宣告必須至少指定除第一維以外所有維的大å°"
-#: cp/decl.c:8207
+#: cp/decl.c:8209
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "宣告多維陣列必須至少指定除第一維以外所有維的大å°"
-#: cp/decl.c:8242
+#: cp/decl.c:8244
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr "為建構å¼æŒ‡å®šå›žå‚³å€¼ç„¡æ•ˆ"
-#: cp/decl.c:8252
+#: cp/decl.c:8254
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr "指定解構函å¼çš„回傳類型無效"
-#: cp/decl.c:8265
+#: cp/decl.c:8267
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr "為 %<operator %T%> 指定了回傳值"
-#: cp/decl.c:8287
+#: cp/decl.c:8289
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr "ç„¡å變數或欄ä½å®£å‘Šç‚º void"
-#: cp/decl.c:8294
+#: cp/decl.c:8296
#, gcc-internal-format
msgid "variable or field declared void"
msgstr "變數或欄ä½å®£å‘Šç‚º void"
-#: cp/decl.c:8478
+#: cp/decl.c:8480
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid use of qualified-name %<::%D%>"
msgstr "錯誤地使用了 %<::%>"
-#: cp/decl.c:8481
+#: cp/decl.c:8483
#, fuzzy, gcc-internal-format
#| msgid "invalid use of undefined type %<%s %E%>"
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr "å°æœªå®šç¾©é¡žåž‹ %<%s %E%> 的使用無效"
-#: cp/decl.c:8484
+#: cp/decl.c:8486
#, fuzzy, gcc-internal-format
#| msgid "invalid use of undefined type %<%s %E%>"
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr "å°æœªå®šç¾©é¡žåž‹ %<%s %E%> 的使用無效"
-#: cp/decl.c:8493
+#: cp/decl.c:8495
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a class or namespace"
msgid "%q#T is not a class or a namespace"
msgstr "%qT æ—¢ä¸æ˜¯é¡žåˆ¥ä¹Ÿä¸æ˜¯å‘½å空間"
-#: cp/decl.c:8501
+#: cp/decl.c:8503
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr "é¡žåž‹ %qT ä¸æ˜¯ç”±é¡žåž‹ %qT è¡ç”Ÿçš„"
-#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961
+#: cp/decl.c:8519 cp/decl.c:8611 cp/decl.c:8620 cp/decl.c:9963
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr "%qD 沒有宣告為一個函å¼"
-#: cp/decl.c:8523
+#: cp/decl.c:8525
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr "%qD 未宣告為æˆå“¡"
-#: cp/decl.c:8554
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr "缺少宣告識別碼:使用了ä¿ç•™å­— %qD"
-#: cp/decl.c:8601
+#: cp/decl.c:8603
#, fuzzy, gcc-internal-format
#| msgid "function definition declared %<register%>"
msgid "function definition does not declare parameters"
msgstr "函å¼å®£å‘Šå®šç¾©ç‚º %<register%>"
-#: cp/decl.c:8626
+#: cp/decl.c:8628
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD as %s"
msgid "declaration of %qD as %<typedef%>"
msgstr "%qD 宣告為 %s"
-#: cp/decl.c:8631
+#: cp/decl.c:8633
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD as parameter"
msgstr "%q+D 的宣告隱è—了一個åƒæ•¸"
-#: cp/decl.c:8664
+#: cp/decl.c:8666
#, fuzzy, gcc-internal-format
#| msgid "a template-id may not appear in a using-declaration"
msgid "%<constexpr%> cannot appear in a typedef declaration"
msgstr "範本識別碼ä¸å…許出ç¾åœ¨ using 宣告中"
-#: cp/decl.c:8672
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr "%qs 的宣告指定了兩個以上的資料類型"
-#: cp/decl.c:8678
+#: cp/decl.c:8680
#, fuzzy, gcc-internal-format
#| msgid "conflicting declaration %q#D"
msgid "conflicting specifiers in declaration of %qs"
msgstr "相互è¡çªçš„宣告 %q#D"
-#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756
+#: cp/decl.c:8752 cp/decl.c:8755 cp/decl.c:8758
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr "ISO C++ ä¸å…許宣告無類型的 %qs"
-#: cp/decl.c:8767
+#: cp/decl.c:8769
#, fuzzy, gcc-internal-format
#| msgid "__builtin_saveregs not supported by this target"
msgid "%<__int128%> is not supported by this target"
msgstr "__builtin_saveregs ä¸ç‚ºæ­¤ç›®çš„所支æ´"
-#: cp/decl.c:8772
+#: cp/decl.c:8774
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not support %<long long%>"
msgid "ISO C++ does not support %<__int128%> for %qs"
msgstr "ISO C++ ä¸æ”¯æ´ %<long long%>"
-#: cp/decl.c:8793 cp/decl.c:8813
+#: cp/decl.c:8795 cp/decl.c:8815
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for %qs"
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr "為 %qs 使用 shortã€signed 或 unsigned 無效"
-#: cp/decl.c:8795
+#: cp/decl.c:8797
#, fuzzy, gcc-internal-format
#| msgid "signed and unsigned given together for %qs"
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr "為 %qs åŒæ™‚給定了 signed å’Œ unsigned"
-#: cp/decl.c:8797
+#: cp/decl.c:8799
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for %qs"
msgid "%<long long%> invalid for %qs"
msgstr "å° %qs 而言無效的複數"
-#: cp/decl.c:8799
+#: cp/decl.c:8801
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for %qs"
msgid "%<long%> invalid for %qs"
msgstr "å° %qs 而言無效的複數"
-#: cp/decl.c:8801
+#: cp/decl.c:8803
#, fuzzy, gcc-internal-format
#| msgid "complex invalid for %qs"
msgid "%<short%> invalid for %qs"
msgstr "å° %qs 而言無效的複數"
-#: cp/decl.c:8803
+#: cp/decl.c:8805
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for %qs"
msgid "%<long%> or %<short%> invalid for %qs"
msgstr "為 %qs 使用 longã€shortã€signed 或 unsigned 無效"
-#: cp/decl.c:8805
+#: cp/decl.c:8807
#, fuzzy, gcc-internal-format
#| msgid "long, short, signed or unsigned invalid for %qs"
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
msgstr "為 %qs 使用 longã€shortã€signed 或 unsigned 無效"
-#: cp/decl.c:8807
+#: cp/decl.c:8809
#, fuzzy, gcc-internal-format
#| msgid "long or short specified with char for %qs"
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr "為 char %qs 給定了 long 或 short"
-#: cp/decl.c:8809
+#: cp/decl.c:8811
#, fuzzy, gcc-internal-format
#| msgid "long and short specified together for %qs"
msgid "%<long%> and %<short%> specified together for %qs"
msgstr "為 %qs åŒæ™‚給定了 long å’Œ short"
-#: cp/decl.c:8815
+#: cp/decl.c:8817
#, fuzzy, gcc-internal-format
#| msgid "short, signed or unsigned invalid for %qs"
msgid "%<short%> or %<long%> invalid for %qs"
msgstr "為 %qs 使用 shortã€signed 或 unsigned 無效"
-#: cp/decl.c:8823
+#: cp/decl.c:8825
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr "為 %qs 使用 longã€shortã€signed 或 unsigned 無效"
-#: cp/decl.c:8891
+#: cp/decl.c:8893
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr "å° %qs 而言無效的複數"
-#: cp/decl.c:8919
+#: cp/decl.c:8921
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr "%<operator %T%> 的宣告中ä¸èƒ½ä½¿ç”¨é™å®šç¬¦"
-#: cp/decl.c:8940
+#: cp/decl.c:8942
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr "æˆå“¡ %qD ä¸èƒ½æ—¢è¢«å®£å‘Šç‚ºè™›å‡½å¼ï¼Œåˆè¢«å®£å‘Šç‚ºéœæ…‹å‡½å¼"
-#: cp/decl.c:8948
+#: cp/decl.c:8950
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr "%<%T::%D%> ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„宣告"
-#: cp/decl.c:8957
+#: cp/decl.c:8959
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr "åƒæ•¸å®£å‘Šä¸­å‡ºç¾çš„ typedef 宣告無效"
-#: cp/decl.c:8962
+#: cp/decl.c:8964
#, fuzzy, gcc-internal-format
#| msgid "storage class specified for parameter %qs"
msgid "storage class specified for template parameter %qs"
msgstr "為åƒæ•¸ %qs 指定了存儲類別"
-#: cp/decl.c:8968
+#: cp/decl.c:8970
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr "為åƒæ•¸å®£å‘ŠæŒ‡å®šäº†ç„¡æ•ˆçš„存儲類別"
-#: cp/decl.c:8974
+#: cp/decl.c:8976
#, fuzzy, gcc-internal-format
#| msgid "non-member %qs cannot be declared %<mutable%>"
msgid "a parameter cannot be declared %<constexpr%>"
msgstr "éžæˆå“¡ %qs ä¸èƒ½è¢«å®£å‘Šç‚º %<mutable%>"
-#: cp/decl.c:8983
+#: cp/decl.c:8985
#, fuzzy, gcc-internal-format
#| msgid "virtual outside class declaration"
msgid "%<virtual%> outside class declaration"
msgstr "virtual 用在類別宣告以外"
-#: cp/decl.c:9001
+#: cp/decl.c:9003
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr "%qs 的宣告指定了多個存儲類別"
-#: cp/decl.c:9024
+#: cp/decl.c:9026
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr "為 %qs 指定了存儲類別"
-#: cp/decl.c:9028
+#: cp/decl.c:9030
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr "為åƒæ•¸ %qs 指定了存儲類別"
-#: cp/decl.c:9041
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr "å·¢ç‹€å‡½å¼ %qs 被宣告為 %<extern%>"
-#: cp/decl.c:9045
+#: cp/decl.c:9047
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr "在頂層將 %qs 宣告為 %<auto%>"
-#: cp/decl.c:9051
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr "函å¼ä½œç”¨æ¬„ä½çš„ %qs éš±å«ç‚º auto,å»è¢«å®£å‘Šç‚º %<__thread%>"
-#: cp/decl.c:9058
+#: cp/decl.c:9060
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr "為夥伴函å¼å®£å‘ŠæŒ‡å®šäº†ç„¡æ•ˆçš„存儲類別"
-#: cp/decl.c:9152
+#: cp/decl.c:9154
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr "%qs 宣告為回傳一個函å¼çš„函å¼"
-#: cp/decl.c:9157
+#: cp/decl.c:9159
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr "%qs 宣告為回傳一個陣列的函å¼"
-#: cp/decl.c:9183
+#: cp/decl.c:9185
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without trailing return type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9191
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
-#: cp/decl.c:9200
+#: cp/decl.c:9202
#, gcc-internal-format
msgid "trailing return type only available with -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/decl.c:9203
+#: cp/decl.c:9205
#, gcc-internal-format
msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:9236
+#: cp/decl.c:9238
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr "解構函å¼ä¸èƒ½æ˜¯éœæ…‹æˆå“¡å‡½å¼"
-#: cp/decl.c:9237
+#: cp/decl.c:9239
#, gcc-internal-format
msgid "constructor cannot be static member function"
msgstr "建構å¼ä¸èƒ½æ˜¯éœæ…‹æˆå“¡å‡½å¼"
-#: cp/decl.c:9241
+#: cp/decl.c:9243
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr "解構函å¼ä¸èƒ½è¢« cv é™å®š"
-#: cp/decl.c:9242
+#: cp/decl.c:9244
#, gcc-internal-format
msgid "constructors may not be cv-qualified"
msgstr "建構å¼ä¸èƒ½å¸¶ cv é™å®š"
-#: cp/decl.c:9259
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr "建構å¼ä¸èƒ½è¢«å®£å‘Šç‚ºè™›å‡½å¼"
-#: cp/decl.c:9272
+#: cp/decl.c:9274
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function %qs"
msgid "can%'t initialize friend function %qs"
msgstr "無法åˆå§‹åŒ–å¤¥ä¼´å‡½å¼ %qs"
#. Cannot be both friend and virtual.
-#: cp/decl.c:9276
+#: cp/decl.c:9278
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr "虛函å¼ä¸èƒ½æ˜¯å¤¥ä¼´"
-#: cp/decl.c:9280
+#: cp/decl.c:9282
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr "夥伴宣告ä¸åœ¨é¡žåˆ¥å®šç¾©å…§"
-#: cp/decl.c:9282
+#: cp/decl.c:9284
#, fuzzy, gcc-internal-format
#| msgid "can't define friend function %qs in a local class definition"
msgid "can%'t define friend function %qs in a local class definition"
msgstr "局部類別定義中ä¸èƒ½å®šç¾©å¤¥ä¼´å‡½å¼ %qs"
-#: cp/decl.c:9303
+#: cp/decl.c:9305
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr "解構函å¼ä¸èƒ½æœ‰åƒæ•¸"
-#: cp/decl.c:9322
+#: cp/decl.c:9324
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr "無法宣告åƒç…§ %q#T 的指標"
-#: cp/decl.c:9335 cp/decl.c:9342
+#: cp/decl.c:9337 cp/decl.c:9344
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr "ç„¡æ³•å®£å‘Šå° %q#T çš„åƒç…§"
-#: cp/decl.c:9344
+#: cp/decl.c:9346
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr "無法宣告åƒç…§ %q#T æˆå“¡çš„指標"
-#: cp/decl.c:9367
+#: cp/decl.c:9369
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to %q#T"
msgid "cannot declare reference to qualified function type %qT"
msgstr "ç„¡æ³•å®£å‘Šå° %q#T çš„åƒç…§"
-#: cp/decl.c:9368
+#: cp/decl.c:9370
#, fuzzy, gcc-internal-format
#| msgid "cannot declare bit-field %qD with function type"
msgid "cannot declare pointer to qualified function type %qT"
msgstr "ä¸èƒ½å°‡ä½å…ƒæ®µ %qD 宣告為函å¼é¡žåž‹"
-#: cp/decl.c:9442
+#: cp/decl.c:9444
#, gcc-internal-format
msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
msgstr ""
-#: cp/decl.c:9495
+#: cp/decl.c:9497
#, gcc-internal-format
msgid "both %<const%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9497
+#: cp/decl.c:9499
#, gcc-internal-format
msgid "both %<volatile%> and %<constexpr%> cannot be used here"
msgstr ""
-#: cp/decl.c:9509
+#: cp/decl.c:9511
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr "範本識別碼 %qD åšç‚ºå®£å‘Š"
-#: cp/decl.c:9560
+#: cp/decl.c:9562
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr "æˆå“¡å‡½å¼éš±å«åœ°æˆç‚ºæ‰€å±¬é¡žåˆ¥çš„夥伴"
-#: cp/decl.c:9565
+#: cp/decl.c:9567
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr "有多餘的é™å®š %<%T::%> æ–¼æˆå“¡ %qs 上"
-#: cp/decl.c:9595
+#: cp/decl.c:9597
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr "無法定義æˆå“¡å‡½å¼ %<%T::%s%> æ–¼ %<%T%> 之內"
-#: cp/decl.c:9597
+#: cp/decl.c:9599
#, gcc-internal-format
msgid "cannot declare member function %<%T::%s%> within %<%T%>"
msgstr "無法宣告æˆå“¡å‡½å¼ %<%T::%s%> æ–¼ %<%T%> 之內"
-#: cp/decl.c:9606
+#: cp/decl.c:9608
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr "無法宣告æˆå“¡ %<%T::%s%> æ–¼ %qT 之內"
-#: cp/decl.c:9632
+#: cp/decl.c:9634
#, fuzzy, gcc-internal-format
#| msgid "data member %qD cannot be a member template"
msgid "non-parameter %qs cannot be a parameter pack"
msgstr "資料æˆå“¡ %qD ä¸èƒ½æ˜¯æˆå“¡ç¯„本"
-#: cp/decl.c:9642
+#: cp/decl.c:9644
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr "陣列 %qs 太大"
-#: cp/decl.c:9653
+#: cp/decl.c:9655
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr "資料æˆå“¡ä¸èƒ½å…·æœ‰å¯è®Šé¡žåž‹ %qT"
-#: cp/decl.c:9655
+#: cp/decl.c:9657
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr "åƒæ•¸ä¸èƒ½å…·æœ‰å¯è®Šé¡žåž‹ %qT"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:9663
+#: cp/decl.c:9665
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr "åªæœ‰å»ºæ§‹å¼æ‰èƒ½è¢«å®£å‘Šç‚º %<explicit%>"
-#: cp/decl.c:9671
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr "éžæˆå“¡ %qs ä¸èƒ½è¢«å®£å‘Šç‚º %<mutable%>"
-#: cp/decl.c:9676
+#: cp/decl.c:9678
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr "éžç‰©ä»¶æˆå“¡ %qs ä¸èƒ½è¢«å®£å‘Šç‚º %<mutable%>"
-#: cp/decl.c:9682
+#: cp/decl.c:9684
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr "å‡½å¼ %qs ä¸èƒ½è¢«å®£å‘Šç‚º %<mutable%>"
-#: cp/decl.c:9687
+#: cp/decl.c:9689
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr "éœæ…‹ %qs ä¸èƒ½è¢«å®£å‘Šç‚º %<mutable%>"
-#: cp/decl.c:9692
+#: cp/decl.c:9694
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr "常數 %qs ä¸èƒ½è¢«å®£å‘Šç‚º %<mutable%>"
-#: cp/decl.c:9697
+#: cp/decl.c:9699
#, fuzzy, gcc-internal-format
#| msgid "function %qs cannot be declared %<mutable%>"
msgid "reference %qs cannot be declared %<mutable%>"
msgstr "å‡½å¼ %qs ä¸èƒ½è¢«å®£å‘Šç‚º %<mutable%>"
-#: cp/decl.c:9732
+#: cp/decl.c:9734
#, fuzzy, gcc-internal-format
#| msgid "typedef %q+D declared %<inline%>"
msgid "typedef declared %<auto%>"
msgstr "typedef %q+D 宣告為 %<inline%>"
-#: cp/decl.c:9742
+#: cp/decl.c:9744
#, fuzzy, gcc-internal-format
#| msgid "%Jtypedef name may not be a nested-name-specifier"
msgid "typedef name may not be a nested-name-specifier"
msgstr "%Jtypedef åä¸èƒ½æ˜¯å·¢ç‹€å指定"
-#: cp/decl.c:9760
+#: cp/decl.c:9762
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr "ISO C++ ä¸å…許嵌類別的類型 %qD 與其所屬的類別åŒå"
-#: cp/decl.c:9862
+#: cp/decl.c:9864
#, fuzzy, gcc-internal-format
#| msgid "qualified function types cannot be used to declare %s functions"
msgid "qualified function types cannot be used to declare static member functions"
msgstr "é™å®šçš„函å¼é¡žåž‹ä¸èƒ½ç”¨ä¾†å®£å‘Š %s 函å¼"
-#: cp/decl.c:9864
+#: cp/decl.c:9866
#, fuzzy, gcc-internal-format
#| msgid "qualified function types cannot be used to declare %s functions"
msgid "qualified function types cannot be used to declare free functions"
msgstr "é™å®šçš„函å¼é¡žåž‹ä¸èƒ½ç”¨ä¾†å®£å‘Š %s 函å¼"
-#: cp/decl.c:9891
+#: cp/decl.c:9893
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr "為夥伴類別宣告指定了類型é™å®š"
-#: cp/decl.c:9896
+#: cp/decl.c:9898
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr "夥伴函å¼å®£å‘Šä¸­å‡ºç¾äº† %<inline%>"
-#: cp/decl.c:9904
+#: cp/decl.c:9906
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr "範本åƒæ•¸ä¸èƒ½æ˜¯å¤¥ä¼´"
-#: cp/decl.c:9906
+#: cp/decl.c:9908
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr "å¤¥ä¼´å®£å‘Šéœ€è¦ classï¼Œå³ %<friend class %T::%D%>"
-#: cp/decl.c:9910
+#: cp/decl.c:9912
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr "å¤¥ä¼´å®£å‘Šéœ€è¦ classï¼Œå³ %<friend %#T%>"
-#: cp/decl.c:9923
+#: cp/decl.c:9925
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr "試圖讓 %qT æˆç‚ºå…¨åŸŸæ¬„ä½çš„夥伴"
-#: cp/decl.c:9941
+#: cp/decl.c:9943
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr "éžæˆå“¡å‡½å¼é¡žåž‹ä¸Šçš„é™å®šç¬¦ç„¡æ•ˆ"
-#: cp/decl.c:9951
+#: cp/decl.c:9953
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr "抽象宣告 %qT åšç‚ºå®£å‘Š"
-#: cp/decl.c:9980
+#: cp/decl.c:9982
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr "ä¸èƒ½åœ¨åƒæ•¸å®£å‘Šä¸­ä½¿ç”¨ %<::%>"
-#: cp/decl.c:9984
+#: cp/decl.c:9986
#, fuzzy, gcc-internal-format
#| msgid "parameter %q+D declared %<inline%>"
msgid "parameter declared %<auto%>"
msgstr "åƒæ•¸ %q+D 宣告為 %<inline%>"
-#: cp/decl.c:10026
+#: cp/decl.c:10028
#, fuzzy, gcc-internal-format
#| msgid "static member %qD declared %<register%>"
msgid "non-static data member declared %<auto%>"
msgstr "éœæ…‹æˆå“¡ %qD 宣告為 %<register%>"
#. Something like struct S { int N::j; };
-#: cp/decl.c:10048
+#: cp/decl.c:10050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr "錯誤地使用了 %<::%>"
-#: cp/decl.c:10070
+#: cp/decl.c:10072
#, fuzzy, gcc-internal-format
#| msgid "declaration of C function %q#D conflicts with"
msgid "declaration of function %qD in invalid context"
msgstr "C å‡½å¼ %q#D 的宣告"
-#: cp/decl.c:10079
+#: cp/decl.c:10081
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr "è¯åˆæˆå“¡å‡½å¼ %qD 被宣告為虛函å¼"
-#: cp/decl.c:10088
+#: cp/decl.c:10090
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr "%qD ä¸èƒ½å®£å‘Šç‚ºè™›å‡½å¼ï¼Œå› ç‚ºå®ƒç¸½æ˜¯éœæ…‹çš„"
-#: cp/decl.c:10104
+#: cp/decl.c:10106
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr "åœ¨è§£æ§‹å‡½å¼ %qD 中的夥伴宣告需è¦é™å®šå"
-#: cp/decl.c:10111
+#: cp/decl.c:10113
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr "%qD 宣告為 %qT 的一個æˆå“¡"
-#: cp/decl.c:10117
+#: cp/decl.c:10119
#, fuzzy, gcc-internal-format
#| msgid "Constructor can't be %s"
msgid "a destructor cannot be %<constexpr%>"
msgstr "建構å¼ä¸å¯ä»¥æ˜¯ %s"
-#: cp/decl.c:10123
+#: cp/decl.c:10125
#, fuzzy, gcc-internal-format
#| msgid "expected qualified name in friend declaration for destructor %qD"
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr "åœ¨è§£æ§‹å‡½å¼ %qD 中的夥伴宣告需è¦é™å®šå"
-#: cp/decl.c:10169
+#: cp/decl.c:10171
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr "æ¬„ä½ %qD é¡žåž‹ä¸å®Œå…¨"
-#: cp/decl.c:10171
+#: cp/decl.c:10173
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr "å稱 %qT é¡žåž‹ä¸å®Œå…¨"
-#: cp/decl.c:10180
+#: cp/decl.c:10182
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr " 在範本 %qT 的實體化中"
-#: cp/decl.c:10189
+#: cp/decl.c:10191
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr "%qE æ—¢ä¸æ˜¯å‡½å¼ä¹Ÿä¸æ˜¯æˆå“¡å‡½å¼ï¼›ä¸èƒ½å®£å‘Šç‚ºå¤¥ä¼´"
-#: cp/decl.c:10241
+#: cp/decl.c:10243
#, fuzzy, gcc-internal-format
#| msgid "Intrinsic '%s' at %L cannot have an initializer"
msgid "constexpr static data member %qD must have an initializer"
msgstr "內建函å¼ã€Œ%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: cp/decl.c:10250
+#: cp/decl.c:10252
#, fuzzy, gcc-internal-format
#| msgid "static member %qD declared %<register%>"
msgid "non-static data member %qE declared %<constexpr%>"
msgstr "éœæ…‹æˆå“¡ %qD 宣告為 %<register%>"
-#: cp/decl.c:10300
+#: cp/decl.c:10302
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr "å‡½å¼ %qs 的存儲類別 %<auto%> 無效"
-#: cp/decl.c:10302
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr "å‡½å¼ %qs 的存儲類別 %<register%> 無效"
-#: cp/decl.c:10304
+#: cp/decl.c:10306
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr "å‡½å¼ %qs 的存儲類別 %<__thread%> 無效"
-#: cp/decl.c:10307
+#: cp/decl.c:10309
#, fuzzy, gcc-internal-format
#| msgid "an asm-specification is not allowed on a function-definition"
msgid "virt-specifiers in %qs not allowed outside a class definition"
msgstr "函å¼å®šç¾©ä¸­ä¸å…è¨±å‡ºç¾ asm 指定"
-#: cp/decl.c:10318
+#: cp/decl.c:10320
#, gcc-internal-format
msgid "%<static%> specified invalid for function %qs declared out of global scope"
msgstr "在全域作用欄ä½å¤–ç‚ºå‡½å¼ %qs 指定 %<static%> 無效"
-#: cp/decl.c:10322
+#: cp/decl.c:10324
#, gcc-internal-format
msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr "在全域作用欄ä½å¤–ç‚ºå‡½å¼ %qs 指定 %<inline%> 無效"
-#: cp/decl.c:10330
+#: cp/decl.c:10332
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr "è™›å‡½å¼ %qs ä¸æ˜¯é¡žåˆ¥æˆå“¡"
-#: cp/decl.c:10337
+#: cp/decl.c:10339
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "%qs defined in a non-class scope"
msgstr "%qE 屬性在ä¸æ˜¯é¡žåˆ¥çš„類型上被忽略"
-#: cp/decl.c:10338
+#: cp/decl.c:10340
#, fuzzy, gcc-internal-format
#| msgid "%qD was not declared in this scope"
msgid "%qs declared in a non-class scope"
msgstr "%qD 在此作用欄ä½ä¸­å°šæœªå®£å‘Š"
-#: cp/decl.c:10366
+#: cp/decl.c:10368
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr "ä¸èƒ½å°‡æˆå“¡å‡½å¼ %qD 宣告為有éœæ…‹é€£çµ"
#. FIXME need arm citation
-#: cp/decl.c:10373
+#: cp/decl.c:10375
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr "ä¸èƒ½åœ¨å¦ä¸€å€‹å‡½å¼ä¸­å®£å‘Šä¸€å€‹éœæ…‹å‡½å¼"
-#: cp/decl.c:10403
+#: cp/decl.c:10405
#, gcc-internal-format
msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
msgstr "與宣告ä¸åŒï¼Œå®šç¾©éœæ…‹è³‡æ–™æˆå“¡æ™‚ä¸èƒ½ä½¿ç”¨ %<static%>"
-#: cp/decl.c:10410
+#: cp/decl.c:10412
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr "éœæ…‹æˆå“¡ %qD 宣告為 %<register%>"
-#: cp/decl.c:10416
+#: cp/decl.c:10418
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr "ä¸èƒ½æ˜Žç¢ºåœ°å°‡æˆå“¡ %q#D 宣告為有外部連çµ"
-#: cp/decl.c:10423
+#: cp/decl.c:10425
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q#D outside of class is not definition"
msgid "declaration of constexpr variable %qD is not a definition"
msgstr "出ç¾åœ¨é¡žåˆ¥å¤–çš„ %q#D 的宣告ä¸æ˜¯å®šç¾©"
-#: cp/decl.c:10436
+#: cp/decl.c:10438
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr "%qs å·²åˆå§‹åŒ–,å»åˆè¢«å®£å‘Šç‚º %<extern%>"
-#: cp/decl.c:10440
+#: cp/decl.c:10442
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr "%qs 既有 %<extern%> åˆæœ‰åˆå§‹å€¼è¨­å®š"
-#: cp/decl.c:10568
+#: cp/decl.c:10570
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr "%q#D çš„é è¨­å¼•æ•¸é¡žåž‹ç‚º %qT"
-#: cp/decl.c:10571
+#: cp/decl.c:10573
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr "類型為 %qT çš„åƒæ•¸çš„é è¨­å¼•æ•¸å»æœ‰é¡žåž‹ %qT"
-#: cp/decl.c:10588
+#: cp/decl.c:10601
#, fuzzy, gcc-internal-format
#| msgid "default argument %qE uses local variable %qD"
msgid "default argument %qE uses %qD"
msgstr "é è¨­å¼•æ•¸ %qE 使用了局部變數 %qD"
-#: cp/decl.c:10590
+#: cp/decl.c:10603
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr "é è¨­å¼•æ•¸ %qE 使用了局部變數 %qD"
-#: cp/decl.c:10678
+#: cp/decl.c:10691
#, fuzzy, gcc-internal-format
#| msgid "parameter %q+D has incomplete type"
msgid "parameter %qD has Java class type"
msgstr "åƒæ•¸ %q+D çš„é¡žåž‹ä¸å®Œå…¨"
-#: cp/decl.c:10706
+#: cp/decl.c:10719
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr "åƒæ•¸ %qD 被無效地被宣告為具有方法類型"
-#: cp/decl.c:10731
+#: cp/decl.c:10744
#, fuzzy, gcc-internal-format
#| msgid "parameter %qD includes %s to array of unknown bound %qT"
msgid "parameter %qD includes pointer to array of unknown bound %qT"
msgstr "åƒæ•¸ %qD 包å«äº† %s,後者åƒç…§æœ‰ä¸æ˜Žé‚Šç•Œ %qT 的陣列"
-#: cp/decl.c:10733
+#: cp/decl.c:10746
#, fuzzy, gcc-internal-format
#| msgid "parameter %qD includes %s to array of unknown bound %qT"
msgid "parameter %qD includes reference to array of unknown bound %qT"
@@ -31402,177 +31462,177 @@ msgstr "åƒæ•¸ %qD 包å«äº† %s,後者åƒç…§æœ‰ä¸æ˜Žé‚Šç•Œ %qT 的陣列"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:10974
+#: cp/decl.c:10987
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr "無效的建構å¼ï¼šæ‚¨è¦çš„å¯èƒ½æ˜¯ %<%T (const %T&)%>"
-#: cp/decl.c:11096
+#: cp/decl.c:11109
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr "%qD ä¸èƒ½åœ¨å‘½å空間宣告"
-#: cp/decl.c:11101
+#: cp/decl.c:11114
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr "%qD ä¸èƒ½è¢«å®£å‘Šç‚ºéœæ…‹çš„"
-#: cp/decl.c:11127
+#: cp/decl.c:11140
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr "%qD 必須是一個éžéœæ…‹çš„æˆå“¡å‡½å¼"
-#: cp/decl.c:11136
+#: cp/decl.c:11149
#, gcc-internal-format
msgid "%qD must be either a non-static member function or a non-member function"
msgstr "%qD 必須是一個éžéœæ…‹æˆå“¡å‡½å¼æˆ–éžæˆå“¡å‡½å¼"
-#: cp/decl.c:11158
+#: cp/decl.c:11171
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr "%qD 的引數必須有類別或列舉類型"
-#: cp/decl.c:11187
+#: cp/decl.c:11200
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to void will never use a type conversion operator"
msgstr "å‘ %s%s 的轉æ›æ°¸é ä¸æœƒç”¨åˆ°é¡žåž‹è½‰æ›é‹ç®—å­"
-#: cp/decl.c:11189
+#: cp/decl.c:11202
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to void will never use a type conversion operator"
msgstr "å‘ %s%s 的轉æ›æ°¸é ä¸æœƒç”¨åˆ°é¡žåž‹è½‰æ›é‹ç®—å­"
-#: cp/decl.c:11196
+#: cp/decl.c:11209
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to the same type will never use a type conversion operator"
msgstr "å‘ %s%s 的轉æ›æ°¸é ä¸æœƒç”¨åˆ°é¡žåž‹è½‰æ›é‹ç®—å­"
-#: cp/decl.c:11198
+#: cp/decl.c:11211
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to the same type will never use a type conversion operator"
msgstr "å‘ %s%s 的轉æ›æ°¸é ä¸æœƒç”¨åˆ°é¡žåž‹è½‰æ›é‹ç®—å­"
-#: cp/decl.c:11206
+#: cp/decl.c:11219
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a reference to a base class will never use a type conversion operator"
msgstr "å‘ %s%s 的轉æ›æ°¸é ä¸æœƒç”¨åˆ°é¡žåž‹è½‰æ›é‹ç®—å­"
-#: cp/decl.c:11208
+#: cp/decl.c:11221
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a base class will never use a type conversion operator"
msgstr "å‘ %s%s 的轉æ›æ°¸é ä¸æœƒç”¨åˆ°é¡žåž‹è½‰æ›é‹ç®—å­"
#. 13.4.0.3
-#: cp/decl.c:11217
+#: cp/decl.c:11230
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr "ISO C++ ä¸å…許多載 ?: é‹ç®—å­"
-#: cp/decl.c:11222
+#: cp/decl.c:11235
#, fuzzy, gcc-internal-format
#| msgid "%qD must take either one or two arguments"
msgid "%qD must not have variable number of arguments"
msgstr "%qD 必須帶 1 或 2 個引數"
-#: cp/decl.c:11273
+#: cp/decl.c:11286
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr "å­—å°¾ %qD 必須使用 %<int%> åšç‚ºå®ƒçš„åƒæ•¸"
-#: cp/decl.c:11276
+#: cp/decl.c:11289
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr "å­—å°¾ %qD 必須使用 %<int%> åšç‚ºå®ƒçš„第二個åƒæ•¸"
-#: cp/decl.c:11284
+#: cp/decl.c:11297
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr "%qD 必須帶 0 或 1 個引數"
-#: cp/decl.c:11286
+#: cp/decl.c:11299
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr "%qD 必須帶 1 或 2 個引數"
-#: cp/decl.c:11308
+#: cp/decl.c:11321
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr "字首 %qD 應當回傳 %qT"
-#: cp/decl.c:11314
+#: cp/decl.c:11327
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr "字尾 %qD 應當回傳 %qT"
-#: cp/decl.c:11323
+#: cp/decl.c:11336
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr "%qD 必須有 %<void%> 類型"
-#: cp/decl.c:11325 cp/decl.c:11334
+#: cp/decl.c:11338 cp/decl.c:11347
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr "%qD 帶且僅帶 1 個引數"
-#: cp/decl.c:11336
+#: cp/decl.c:11349
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr "%qD 帶且僅帶 2 個引數"
-#: cp/decl.c:11345
+#: cp/decl.c:11358
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr "使用者定義的 %qD 總是計算所有兩個åƒæ•¸"
-#: cp/decl.c:11359
+#: cp/decl.c:11372
#, gcc-internal-format
msgid "%qD should return by value"
msgstr "%qD 應當回傳值而éžåƒç…§"
-#: cp/decl.c:11370 cp/decl.c:11375
+#: cp/decl.c:11383 cp/decl.c:11388
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr "%qD ä¸èƒ½æœ‰é è¨­åƒæ•¸"
-#: cp/decl.c:11436
+#: cp/decl.c:11449
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr "使用範本類型åƒæ•¸ %qT,在 %qs 後"
-#: cp/decl.c:11458
+#: cp/decl.c:11471
#, fuzzy, gcc-internal-format
#| msgid "ambiguous template specialization %qD for %q+D"
msgid "using alias template specialization %qT after %qs"
msgstr "有歧義的範本特例化 %qD (為 %q+D)"
-#: cp/decl.c:11461
+#: cp/decl.c:11474
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr "使用 typedef å %qD,在 %qs 後"
-#: cp/decl.c:11463
+#: cp/decl.c:11476
#, fuzzy, gcc-internal-format
#| msgid "%q+D has a previous declaration here"
msgid "%qD has a previous declaration here"
msgstr "%q+D å…ˆå‰åœ¨æ­¤è™•æœ‰éŽå®£å‘Š"
-#: cp/decl.c:11471
+#: cp/decl.c:11484
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr "%qT åšç‚º %qs 被åƒç…§"
-#: cp/decl.c:11472 cp/decl.c:11479
+#: cp/decl.c:11485 cp/decl.c:11492
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr "%q+T å…ˆå‰åœ¨æ­¤è™•æœ‰éŽå®£å‘Š"
-#: cp/decl.c:11478
+#: cp/decl.c:11491
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT åšç‚ºåˆ—舉被åƒç…§"
@@ -31584,89 +31644,89 @@ msgstr "%qT åšç‚ºåˆ—舉被åƒç…§"
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:11493
+#: cp/decl.c:11506
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr "%<%s %T%> 需è¦ç¯„本åƒæ•¸"
-#: cp/decl.c:11541 cp/name-lookup.c:3049
+#: cp/decl.c:11554 cp/name-lookup.c:3052
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr "%qD 與其宣告所在的類別åŒå"
-#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373
-#: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501
+#: cp/decl.c:11584 cp/name-lookup.c:2551 cp/name-lookup.c:3376
+#: cp/name-lookup.c:3421 cp/parser.c:5060 cp/parser.c:20517
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr "å° %qD çš„åƒç…§æœ‰æ­§ç¾©"
-#: cp/decl.c:11683
+#: cp/decl.c:11696
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr "使用列舉 %q#D å‰æ²’有給出宣告"
-#: cp/decl.c:11704
+#: cp/decl.c:11717
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr "%qT é‡å®£å‘Šç‚ºéžç¯„本"
-#: cp/decl.c:11705
+#: cp/decl.c:11718
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr "å…ˆå‰çš„宣告 %q+D"
-#: cp/decl.c:11839
+#: cp/decl.c:11852
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr "è¡ç”Ÿè¯åˆ %qT 無效"
-#: cp/decl.c:11848
+#: cp/decl.c:11861
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr "Java 類別 %qT ä¸èƒ½æœ‰å¤šå€‹åŸºç¤Žé¡žåˆ¥"
-#: cp/decl.c:11859
+#: cp/decl.c:11872
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr "Java 類別 %qT ä¸èƒ½æœ‰è™›åŸºç¤Žé¡žåˆ¥"
-#: cp/decl.c:11879
+#: cp/decl.c:11892
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr "基礎類別型 %qT ä¸æ˜¯çµæ§‹æˆ–類別"
-#: cp/decl.c:11912
+#: cp/decl.c:11925
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr "éžè¿´çš„é¡žåž‹ %qT 未定義"
-#: cp/decl.c:11914
+#: cp/decl.c:11927
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr "é‡è¤‡çš„基礎類別型 %qT 無效"
-#: cp/decl.c:12038
+#: cp/decl.c:12051
#, gcc-internal-format
msgid "scoped/unscoped mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514
+#: cp/decl.c:12054 cp/decl.c:12062 cp/decl.c:12074 cp/parser.c:14523
#, fuzzy, gcc-internal-format
#| msgid "%Jprevious definition here"
msgid "previous definition here"
msgstr "%Jå‰ä¸€å€‹å®šç¾©åœ¨é€™è£¡"
-#: cp/decl.c:12046
+#: cp/decl.c:12059
#, gcc-internal-format
msgid "underlying type mismatch in enum %q#T"
msgstr ""
-#: cp/decl.c:12058
+#: cp/decl.c:12071
#, gcc-internal-format
msgid "different underlying type in enum %q#T"
msgstr ""
-#: cp/decl.c:12125
+#: cp/decl.c:12138
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -31675,77 +31735,77 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:12259
+#: cp/decl.c:12272
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr "沒有一個整數類型å¯ä»¥è¡¨ç¤º %qT 的所有列舉值"
-#: cp/decl.c:12394
+#: cp/decl.c:12407
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for %qE is not an integer constant"
msgid "enumerator value for %qD is not an integer constant"
msgstr "%qE 的列舉值ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸æ•¸"
-#: cp/decl.c:12444
+#: cp/decl.c:12457
#, fuzzy, gcc-internal-format
#| msgid "ISO C restricts enumerator values to range of %<int%>"
msgid "incremented enumerator value is too large for %<unsigned long%>"
msgstr "ISO C 將列舉值é™åˆ¶åœ¨ %<int%> 範åœå…§"
-#: cp/decl.c:12456
+#: cp/decl.c:12469
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr "%qD 處列舉值溢出"
-#: cp/decl.c:12476
+#: cp/decl.c:12489
#, fuzzy, gcc-internal-format
#| msgid "enumerator value for %qE is not an integer constant"
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr "%qE 的列舉值ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸æ•¸"
-#: cp/decl.c:12573
+#: cp/decl.c:12586
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr "回傳值類型 %q#T 為ä¸å®Œå…¨"
-#: cp/decl.c:12575
+#: cp/decl.c:12588
#, fuzzy, gcc-internal-format
#| msgid "return type is an incomplete type"
msgid "return type has Java class type %q#T"
msgstr "回傳ä¸å®Œå…¨çš„é¡žåž‹"
-#: cp/decl.c:12699 cp/typeck.c:7896
+#: cp/decl.c:12712 cp/typeck.c:7909
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> æ‡‰ç•¶å›žå‚³ä¸€å€‹å° %<*this%> çš„åƒç…§"
-#: cp/decl.c:12794
+#: cp/decl.c:12807
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr "%q+D å…ˆå‰æ²’有宣告éŽ"
-#: cp/decl.c:13009
+#: cp/decl.c:13022
#, gcc-internal-format
msgid "invalid function declaration"
msgstr "無效的函å¼å®£å‘Š"
-#: cp/decl.c:13093
+#: cp/decl.c:13106
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr "åƒæ•¸ %qD 被宣告為 void"
-#: cp/decl.c:13546
+#: cp/decl.c:13559
#, fuzzy, gcc-internal-format
#| msgid "label %q+D defined but not used"
msgid "parameter %q+D set but not used"
msgstr "標籤 %q+D 定義後未使用"
-#: cp/decl.c:13641
+#: cp/decl.c:13654
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr "無效的æˆå“¡å‡½å¼å®£å‘Š"
-#: cp/decl.c:13655
+#: cp/decl.c:13668
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr "%qD 已在類別 %qT 中定義éŽ"
@@ -31785,7 +31845,7 @@ msgstr "ä¸èƒ½ delete 一個函å¼ã€‚åªæœ‰åƒç…§ç‰©ä»¶çš„指標æ‰æ˜¯ %<delete%
msgid "deleting %qT is undefined"
msgstr "刪除 %qT 未定義"
-#: cp/decl2.c:512 cp/pt.c:4877
+#: cp/decl2.c:512 cp/pt.c:4891
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "%q#D 宣告為範本"
@@ -32055,7 +32115,7 @@ msgstr "巢狀å指定中使用了ä¸å®Œå…¨çš„é¡žåž‹ %qT"
msgid "reference to %<%T::%D%> is ambiguous"
msgstr "å° %<%T::%D%> çš„åƒç…§æœ‰æ­§ç¾©"
-#: cp/error.c:3372 cp/typeck.c:2178
+#: cp/error.c:3372 cp/typeck.c:2186
#, gcc-internal-format
msgid "%qD is not a member of %qT"
msgstr "%qD ä¸æ˜¯ %qT çš„æˆå“¡"
@@ -32380,7 +32440,7 @@ msgstr "é¡žåž‹ %qT ä¸æ˜¯ %qT 的直接基礎類別"
msgid "bad array initializer"
msgstr "錯誤的陣列åˆå§‹å€¼è¨­å®š"
-#: cp/init.c:1778 cp/semantics.c:2783
+#: cp/init.c:1778 cp/semantics.c:2780
#, fuzzy, gcc-internal-format
#| msgid "%qE does not have class type"
msgid "%qT is not a class type"
@@ -32472,69 +32532,69 @@ msgstr "åˆå§‹å€¼è¨­å®šä¸­é™£åˆ—索引ä¸æ˜¯å¸¸æ•¸"
msgid "parenthesized initializer in array new"
msgstr "括起的åˆå§‹å€¼è¨­å®šå¾Œå‡ºç¾çš„屬性被忽略"
-#: cp/init.c:2806
+#: cp/init.c:2808
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr "陣列 new 的大å°å¿…須有整數類型"
-#: cp/init.c:2820
+#: cp/init.c:2822
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr "new ä¸èƒ½ç”¨æ–¼åƒç…§é¡žåž‹"
-#: cp/init.c:2829
+#: cp/init.c:2831
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr "new ä¸èƒ½ç”¨æ–¼å‡½å¼é¡žåž‹"
-#: cp/init.c:2873
+#: cp/init.c:2875
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr "å‘¼å« Java 建構å¼ï¼Œä½†æ²’有定義 %<jclass%>"
-#: cp/init.c:2891
+#: cp/init.c:2893
#, fuzzy, gcc-internal-format
#| msgid "can't find class$"
msgid "can%'t find %<class$%> in %qT"
msgstr "找ä¸åˆ°é¡žåˆ¥$"
-#: cp/init.c:3380
+#: cp/init.c:3382
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr "åˆå§‹å€¼è¨­å®šåœ¨å®Œæˆä¹‹å‰çµæŸ"
-#: cp/init.c:3444
+#: cp/init.c:3446
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "ä¸èƒ½ç”¨åˆå§‹å€¼è¨­å®šé …來åˆå§‹åŒ–多維陣列"
-#: cp/init.c:3618
+#: cp/init.c:3620
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr "åµæ¸¬åˆ°å‘¼å« delete é‹ç®—å­æ™‚å¯èƒ½å‡ºç¾çš„å•é¡Œï¼š"
-#: cp/init.c:3622
+#: cp/init.c:3624
#, fuzzy, gcc-internal-format
#| msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined."
msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined"
msgstr "解構函å¼å’Œé¡žåˆ¥ç‰¹å®šçš„ delete é‹ç®—å­å‡ä¸æœƒè¢«å‘¼å«ï¼Œå³ä½¿å®ƒå€‘在類別定義時已經宣告。"
-#: cp/init.c:3638
+#: cp/init.c:3640
#, gcc-internal-format
msgid "deleting object of abstract class type %qT which has non-virtual destructor will cause undefined behaviour"
msgstr ""
-#: cp/init.c:3643
+#: cp/init.c:3645
#, gcc-internal-format
msgid "deleting object of polymorphic class type %qT which has non-virtual destructor might cause undefined behaviour"
msgstr ""
-#: cp/init.c:3665
+#: cp/init.c:3667
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr "delete 時陣列大å°ä¸æ˜Ž"
-#: cp/init.c:3934
+#: cp/init.c:3936
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "å‘é‡ delete 的引數類型既éžæŒ‡æ¨™ä¹Ÿéžé™£åˆ—"
@@ -32594,42 +32654,42 @@ msgstr "%qD 的引數ä¸ä¾è³´ç¯„本åƒæ•¸ï¼Œæ‰€ä»¥ %qD 的宣告必須å¯ç”¨"
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr "(如果您使用 %<-fpermissive%>,G++ 會接å—您的程å¼ç¢¼ï¼Œä½†æ˜¯å…許使用未定義的å稱是éŽæ™‚的風格)"
-#: cp/mangle.c:2022
+#: cp/mangle.c:2029
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:2026
+#: cp/mangle.c:2033
#, gcc-internal-format
msgid "mangling __underlying_type"
msgstr ""
-#: cp/mangle.c:2250
+#: cp/mangle.c:2257
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2809
+#: cp/mangle.c:2816
#, gcc-internal-format, gfc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2884
+#: cp/mangle.c:2891
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr "çœç•¥çš„ %<?:%> 中é‹ç®—å…ƒä¸èƒ½è¢«ä¿®é£¾"
-#: cp/mangle.c:2948
+#: cp/mangle.c:2955
#, gcc-internal-format
msgid "string literal in function template signature"
msgstr ""
-#: cp/mangle.c:3237
+#: cp/mangle.c:3244
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr "%qD 修飾後的å稱將在 GCC 的未來版本中有變化"
-#: cp/mangle.c:3381
+#: cp/mangle.c:3388
#, gcc-internal-format
msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
msgstr ""
@@ -32722,64 +32782,64 @@ msgstr ""
msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:"
msgstr ""
-#: cp/method.c:1620
+#: cp/method.c:1621
#, fuzzy, gcc-internal-format
#| msgid "repeated using declaration %q+D"
msgid "defaulted declaration %q+D"
msgstr "é‡è¤‡çš„ using 宣告 %q+D"
-#: cp/method.c:1622
+#: cp/method.c:1623
#, fuzzy, gcc-internal-format
#| msgid "(Messages without a matching method signature"
msgid "does not match expected signature %qD"
msgstr "(訊æ¯ç¼ºå°‘匹é…的方法簽å"
-#: cp/method.c:1636
+#: cp/method.c:1637
#, gcc-internal-format
msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D"
msgstr ""
-#: cp/method.c:1657
+#: cp/method.c:1658
#, gcc-internal-format
msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:"
msgstr ""
-#: cp/method.c:1679
+#: cp/method.c:1680
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "a template cannot be defaulted"
msgstr "範本åƒæ•¸ä¸èƒ½æ˜¯å¤¥ä¼´"
-#: cp/method.c:1707
+#: cp/method.c:1708
#, fuzzy, gcc-internal-format
#| msgid "%q+#D cannot be declared"
msgid "%qD cannot be defaulted"
msgstr "無法宣告 %q+#D"
-#: cp/method.c:1716
+#: cp/method.c:1717
#, fuzzy, gcc-internal-format
#| msgid "file ends in default argument"
msgid "defaulted function %q+D with default argument"
msgstr "檔案在é è¨­åƒæ•¸è™•çµæŸ"
-#: cp/method.c:1804
+#: cp/method.c:1805
#, gcc-internal-format
msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor"
msgstr "由於隱å«çš„虛解構函å¼ï¼Œé¡žåˆ¥ %qT çš„ vtable 版é¢è¨­ç½®å¯èƒ½èˆ‡ ABI ä¸ç›¸å®¹ï¼Œä¸¦ä¸”å¯èƒ½åœ¨ GCC 的未來版本中變更"
-#: cp/name-lookup.c:552
+#: cp/name-lookup.c:555
#, fuzzy, gcc-internal-format
#| msgid "%q#D conflicts with previous using declaration %q#D"
msgid "%q#D conflicts with a previous declaration"
msgstr "%q#D 與先å‰çš„ using 宣告 %q#D è¡çª"
-#: cp/name-lookup.c:554
+#: cp/name-lookup.c:557
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+D"
msgid "previous declaration %q+#D"
msgstr "å…ˆå‰çš„宣告 %q+D"
-#: cp/name-lookup.c:766
+#: cp/name-lookup.c:769
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr "%<wchar_t%> é‡å®£å‘Šç‚º %qT"
@@ -32790,273 +32850,273 @@ msgstr "%<wchar_t%> é‡å®£å‘Šç‚º %qT"
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:796
+#: cp/name-lookup.c:799
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr "å° %q+#D 無效的é‡å®£å‘Š"
-#: cp/name-lookup.c:797
+#: cp/name-lookup.c:800
#, gcc-internal-format
msgid "as %qD"
msgstr "åšç‚º %qD"
-#: cp/name-lookup.c:838 cp/name-lookup.c:854
+#: cp/name-lookup.c:841 cp/name-lookup.c:857
#, fuzzy, gcc-internal-format
#| msgid "redeclaration of %q+D with no linkage"
msgid "declaration of %q#D with C language linkage"
msgstr "%q+D é‡å®£å‘Šç‚ºæ²’有外部連çµ"
-#: cp/name-lookup.c:844
+#: cp/name-lookup.c:847
#, fuzzy, gcc-internal-format
#| msgid "Generate code to check exception specifications"
msgid "due to different exception specifications"
msgstr "產生檢查異一般範的程å¼ç¢¼"
-#: cp/name-lookup.c:945
+#: cp/name-lookup.c:948
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr "類型與先å‰çš„ %q#D 的外部宣告ä¸åŒ¹é…"
-#: cp/name-lookup.c:946
+#: cp/name-lookup.c:949
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr "å…ˆå‰ %q+#D 的外部宣告"
-#: cp/name-lookup.c:1044
+#: cp/name-lookup.c:1047
#, fuzzy, gcc-internal-format
#| msgid "extern declaration of %q#D doesn't match"
msgid "extern declaration of %q#D doesn%'t match"
msgstr "%q#D 的外部宣告ä¸åŒ¹é…"
-#: cp/name-lookup.c:1045
+#: cp/name-lookup.c:1048
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr "全域宣告 %q+#D"
-#: cp/name-lookup.c:1097 cp/name-lookup.c:1140
+#: cp/name-lookup.c:1100 cp/name-lookup.c:1143
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr "%q#D 的宣告隱è—了一個åƒæ•¸"
-#: cp/name-lookup.c:1143
+#: cp/name-lookup.c:1146
#, fuzzy, gcc-internal-format
#| msgid "declaration of %q+D shadows a parameter"
msgid "declaration of %qD shadows a lambda capture"
msgstr "%q+D 的宣告隱è—了一個åƒæ•¸"
-#: cp/name-lookup.c:1147
+#: cp/name-lookup.c:1150
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr "%qD 的宣告隱è—了先å‰çš„一個局部變數"
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1177
+#: cp/name-lookup.c:1180
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr "%qD 的宣告隱è—了「thisã€çš„一個æˆå“¡"
-#: cp/name-lookup.c:1191
+#: cp/name-lookup.c:1194
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr "%qD 的宣告隱è—了一個全域宣告"
-#: cp/name-lookup.c:1326
+#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr "%qD çš„å稱查閱已變更"
-#: cp/name-lookup.c:1327
+#: cp/name-lookup.c:1330
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr " 在 ISO 標準è¦å‰‡ä¸‹åŒ¹é…æ­¤ %q+D"
-#: cp/name-lookup.c:1329
+#: cp/name-lookup.c:1332
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr " 在舊è¦å‰‡ä¸‹åŒ¹é…æ­¤ %q+D"
-#: cp/name-lookup.c:1347 cp/name-lookup.c:1355
+#: cp/name-lookup.c:1350 cp/name-lookup.c:1358
#, fuzzy, gcc-internal-format
#| msgid "name lookup of %qD changed for new ISO %<for%> scoping"
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr "在新的 ISO %<for%> 作用欄ä½ä¸­ï¼Œ%qD çš„å稱æœå°‹æœ‰è®ŠåŒ–"
-#: cp/name-lookup.c:1349
+#: cp/name-lookup.c:1352
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr " ä¸èƒ½åœ¨ %q+D 使用éŽæ™‚的繫çµï¼Œå› ç‚ºå®ƒæœ‰è§£æ§‹å‡½å¼"
-#: cp/name-lookup.c:1358
+#: cp/name-lookup.c:1361
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr " 在 %q+D 使用éŽæ™‚的繫çµ"
-#: cp/name-lookup.c:1364 cp/parser.c:12459
+#: cp/name-lookup.c:1367 cp/parser.c:12468
#, fuzzy, gcc-internal-format
#| msgid "(if you use -fpermissive G++ will accept your code)"
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr "(如果您使用 -fpermissive G++ 會接å—您的程å¼ç¢¼)"
-#: cp/name-lookup.c:1419
+#: cp/name-lookup.c:1422
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr "%s %s(%E) %p %d\n"
-#: cp/name-lookup.c:1422
+#: cp/name-lookup.c:1425
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr "%s %s %p %d\n"
-#: cp/name-lookup.c:2249
+#: cp/name-lookup.c:2252
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr "%q#D éš±è—了 %q#T 的建構å¼"
-#: cp/name-lookup.c:2266
+#: cp/name-lookup.c:2269
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr "%q#D 與先å‰çš„ using 宣告 %q#D è¡çª"
-#: cp/name-lookup.c:2289
+#: cp/name-lookup.c:2292
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr "å…ˆå‰å°æ–¼ %q+#D çš„éžå‡½å¼å®£å‘Š"
-#: cp/name-lookup.c:2290
+#: cp/name-lookup.c:2293
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr "與函å¼å®£å‘Š %q#D è¡çª"
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2380 cp/name-lookup.c:2405
+#: cp/name-lookup.c:2383 cp/name-lookup.c:2408
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr "%qT ä¸æ˜¯ä¸€å€‹å‘½å空間"
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2390
+#: cp/name-lookup.c:2393
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr "using 宣告ä¸èƒ½æŒ‡å®šä¸€å€‹ç¯„本識別碼。請嘗試 %<using %D%>"
-#: cp/name-lookup.c:2397
+#: cp/name-lookup.c:2400
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr "ä¸å…許在 using 宣告中使用命å空間 %qD"
-#: cp/name-lookup.c:2433
+#: cp/name-lookup.c:2436
#, gcc-internal-format
msgid "%qD not declared"
msgstr "%qD 未宣告"
-#: cp/name-lookup.c:2469 cp/name-lookup.c:2506 cp/name-lookup.c:2540
-#: cp/name-lookup.c:2555
+#: cp/name-lookup.c:2472 cp/name-lookup.c:2509 cp/name-lookup.c:2543
+#: cp/name-lookup.c:2558
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr "%qD 已在此作用欄ä½ä¸­å®£å‘ŠéŽ"
-#: cp/name-lookup.c:3198
+#: cp/name-lookup.c:3201
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr "在類別作用欄ä½ä½¿ç”¨éžæˆå“¡çš„ using 宣告"
-#: cp/name-lookup.c:3205
+#: cp/name-lookup.c:3208
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr "%<%T::%D%> 指定了解構函å¼"
-#: cp/name-lookup.c:3210
+#: cp/name-lookup.c:3213
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr "%<%T::%D%> 指定了建構å¼"
-#: cp/name-lookup.c:3215
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> 在 %qT 內指定了建構å¼"
-#: cp/name-lookup.c:3265
+#: cp/name-lookup.c:3268
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr "沒有與 %<%T::%D%> 匹é…çš„æˆå“¡ï¼Œåœ¨ %q#T 中"
-#: cp/name-lookup.c:3352
+#: cp/name-lookup.c:3355
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr "%qD 的宣告ä¸åœ¨åŒ…å« %qD 的命å空間中"
-#: cp/name-lookup.c:3360
+#: cp/name-lookup.c:3363
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr "%qD 的宣告中有明確的é™å®š"
-#: cp/name-lookup.c:3443
+#: cp/name-lookup.c:3446
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr "%qD 應當已在 %qD 內部宣告éŽ"
-#: cp/name-lookup.c:3487
+#: cp/name-lookup.c:3490
#, fuzzy, gcc-internal-format
#| msgid "%qs attribute requires an integer constant argument"
msgid "%qD attribute requires a single NTBS argument"
msgstr "%qs 屬性需è¦ä¸€å€‹æ•´å¸¸æ•¸åšç‚ºå¼•æ•¸"
-#: cp/name-lookup.c:3494
+#: cp/name-lookup.c:3497
#, gcc-internal-format
msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
msgstr ""
-#: cp/name-lookup.c:3502 cp/name-lookup.c:3891
+#: cp/name-lookup.c:3505 cp/name-lookup.c:3894
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr "指定 %qD 屬性被忽略"
-#: cp/name-lookup.c:3547
+#: cp/name-lookup.c:3550
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr "這裡ä¸å…許命å空間別å %qD,å‡å®šç‚º %qD"
-#: cp/name-lookup.c:3879
+#: cp/name-lookup.c:3882
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr "å¼· using åªåœ¨å‘½å空間作用欄ä½æœ‰æ„義"
-#: cp/name-lookup.c:3883
+#: cp/name-lookup.c:3886
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of %qD in namespace %qD (which does not enclose namespace %qD)"
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr "%qD 的明確實體化出ç¾åœ¨å‘½å空間 %qD 中,而後者並ä¸åŒ…å«å‘½å空間 %qD"
-#: cp/name-lookup.c:4217
+#: cp/name-lookup.c:4224
#, gcc-internal-format
msgid "maximum limit of %d namespaces searched for %qE"
msgstr ""
-#: cp/name-lookup.c:4227
+#: cp/name-lookup.c:4234
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
msgstr[0] ""
-#: cp/name-lookup.c:4231
+#: cp/name-lookup.c:4238
#, fuzzy, gcc-internal-format
#| msgid " %q+#D"
msgid " %qE"
msgstr " %q+#D"
-#: cp/name-lookup.c:5487
+#: cp/name-lookup.c:5494
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5983
+#: cp/name-lookup.c:5990
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr "XXX 進入 pop_everything ()\n"
-#: cp/name-lookup.c:5992
+#: cp/name-lookup.c:5999
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr "XXX 離開 pop_everything ()\n"
@@ -33182,7 +33242,7 @@ msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(%qT 的定義末尾å¯èƒ½ç¼ºå°‘一個分號)"
-#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241
+#: cp/parser.c:2604 cp/parser.c:5108 cp/pt.c:7273
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT ä¸æ˜¯ä¸€å€‹ç¯„本"
@@ -33203,7 +33263,7 @@ msgstr "無效的範本 ID"
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "%s ä¸èƒ½å‡ºç¾åœ¨å¸¸æ•¸é‹ç®—å¼ä¸­"
-#: cp/parser.c:2645 cp/pt.c:13498
+#: cp/parser.c:2645 cp/pt.c:13536
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
@@ -33366,135 +33426,135 @@ msgstr ""
msgid "a wide string is invalid in this context"
msgstr "在此上下文中"
-#: cp/parser.c:3612 cp/parser.c:3622
+#: cp/parser.c:3618 cp/parser.c:3628
#, gcc-internal-format
msgid "unable to find character literal operator %qD with %qT argument"
msgstr ""
-#: cp/parser.c:3719
+#: cp/parser.c:3725
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find numeric literal operator %qD"
msgstr "在類別 %qs 中找ä¸åˆ°å¯æ¨å‡ºçš„暫存器"
-#: cp/parser.c:3746
+#: cp/parser.c:3752
#, fuzzy, gcc-internal-format
#| msgid "unable to find a register to spill in class %qs"
msgid "unable to find string literal operator %qD"
msgstr "在類別 %qs 中找ä¸åˆ°å¯æ¨å‡ºçš„暫存器"
-#: cp/parser.c:3755
+#: cp/parser.c:3761
#, gcc-internal-format
msgid "unable to find string literal operator %qD with %qT, %qT arguments"
msgstr ""
-#: cp/parser.c:3815 cp/parser.c:10361
+#: cp/parser.c:3821 cp/parser.c:10370
#, fuzzy, gcc-internal-format
#| msgid "empty declaration"
msgid "expected declaration"
msgstr "空宣告"
-#: cp/parser.c:3918
+#: cp/parser.c:3924
#, fuzzy, gcc-internal-format
#| msgid "-pipe not supported"
msgid "fixed-point types not supported in C++"
msgstr "ä¸æ”¯æ´ -pipe"
-#: cp/parser.c:4009
+#: cp/parser.c:4015
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr "ISO C++ ä¸å…許在é‹ç®—å¼ä¸­ä½¿ç”¨å¤§æ‹¬è™Ÿçµ„"
-#: cp/parser.c:4021
+#: cp/parser.c:4027
#, fuzzy, gcc-internal-format
#| msgid "statement-expressions are allowed only inside functions"
msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
msgstr "敘述é‹ç®—å¼åªèƒ½ç”¨æ–¼å‡½å¼å…§"
-#: cp/parser.c:4081 cp/parser.c:4231 cp/parser.c:4384
+#: cp/parser.c:4087 cp/parser.c:4237 cp/parser.c:4390
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected primary-expression"
msgstr "需è¦é‹ç®—å¼"
-#: cp/parser.c:4111
+#: cp/parser.c:4117
#, gcc-internal-format
msgid "%<this%> may not be used in this context"
msgstr "%<this%> ä¸èƒ½ç”¨åœ¨æ­¤ä¸Šä¸‹æ–‡ä¸­"
-#: cp/parser.c:4226
+#: cp/parser.c:4232
#, fuzzy, gcc-internal-format
#| msgid "Objective-C declarations may only appear in global scope"
msgid "a template declaration cannot appear at block scope"
msgstr "Objective-C 宣告åªèƒ½å‡ºç¾åœ¨å…¨åŸŸä½œç”¨æ¬„ä½ä¸­"
-#: cp/parser.c:4360
+#: cp/parser.c:4366
#, gcc-internal-format
msgid "local variable %qD may not appear in this context"
msgstr "局部變數 %qD ä¸æ‡‰å‡ºç¾åœ¨æ­¤ä¸Šä¸‹æ–‡ä¸­"
-#: cp/parser.c:4524
+#: cp/parser.c:4530
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "expected id-expression"
msgstr "需è¦é‹ç®—å¼"
-#: cp/parser.c:4654
+#: cp/parser.c:4660
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a class or namespace"
msgid "scope %qT before %<~%> is not a class-name"
msgstr "%qT æ—¢ä¸æ˜¯é¡žåˆ¥ä¹Ÿä¸æ˜¯å‘½å空間"
-#: cp/parser.c:4776
+#: cp/parser.c:4782
#, gcc-internal-format
msgid "declaration of %<~%T%> as member of %qT"
msgstr "%<~%T%> 宣告為 %qT 的一個æˆå“¡"
-#: cp/parser.c:4791
+#: cp/parser.c:4797
#, gcc-internal-format
msgid "typedef-name %qD used as destructor declarator"
msgstr "typedef å %qD 用於解構函å¼å®£å‘Š"
-#: cp/parser.c:4824
+#: cp/parser.c:4830
#, gcc-internal-format
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr ""
-#: cp/parser.c:4835 cp/parser.c:16229
+#: cp/parser.c:4841 cp/parser.c:16238
#, fuzzy, gcc-internal-format
#| msgid "expected specifier-qualifier-list"
msgid "expected unqualified-id"
msgstr "需è¦æŒ‡å®šç¬¦-é™åˆ¶ç¬¦æ¸…å–®"
-#: cp/parser.c:4942
+#: cp/parser.c:4948
#, gcc-internal-format
msgid "found %<:%> in nested-name-specifier, expected %<::%>"
msgstr ""
-#: cp/parser.c:5011
+#: cp/parser.c:5017
#, fuzzy, gcc-internal-format
#| msgid "%qT resolves to %qT, which is not an enumeration type"
msgid "decltype evaluates to %qT, which is not a class or enumeration type"
msgstr "%qT 被解æžåˆ°éžåˆ—舉類型 %qT"
-#: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464
+#: cp/parser.c:5109 cp/typeck.c:2457 cp/typeck.c:2477
#, gcc-internal-format
msgid "%qD is not a template"
msgstr "%qD ä¸æ˜¯ä¸€å€‹ç¯„本"
-#: cp/parser.c:5181
+#: cp/parser.c:5187
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected nested-name-specifier"
msgstr "需è¦æŒ‡å®šå®£å‘Š"
-#: cp/parser.c:5378 cp/parser.c:7089
+#: cp/parser.c:5384 cp/parser.c:7095
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in casts"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:5438
+#: cp/parser.c:5444
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a %<typeid%> expression"
@@ -33502,248 +33562,248 @@ msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:5547
+#: cp/parser.c:5553
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr "ISO C++ ä¸å…許複åˆå­—é¢å€¼"
-#: cp/parser.c:5937
+#: cp/parser.c:5943
#, gcc-internal-format
msgid "%qE does not have class type"
msgstr "%qE ä¸æ˜¯ä¸€å€‹é¡žåˆ¥"
-#: cp/parser.c:6026 cp/typeck.c:2358
+#: cp/parser.c:6032 cp/typeck.c:2366
#, gcc-internal-format
msgid "invalid use of %qD"
msgstr "錯誤地使用了 %qD"
-#: cp/parser.c:6035
+#: cp/parser.c:6041
#, fuzzy, gcc-internal-format
#| msgid "%<%D::%D%> is not a member of %qT"
msgid "%<%D::%D%> is not a class member"
msgstr "%<%D::%D%> ä¸æ˜¯ %qT çš„æˆå“¡"
-#: cp/parser.c:6296
+#: cp/parser.c:6302
#, gcc-internal-format
msgid "non-scalar type"
msgstr ""
-#: cp/parser.c:6390
+#: cp/parser.c:6396
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow %<alignof%> with a non-type"
msgstr "ISO C++ ä¸å…許指定元素åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:6453
+#: cp/parser.c:6459
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<noexcept%> expressions"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:6678
+#: cp/parser.c:6684
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-expression"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:6691
+#: cp/parser.c:6697
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
msgstr "括起的類型識別碼後é¢ä¸èƒ½å‡ºç¾é™£åˆ—é‚Šç•Œ"
-#: cp/parser.c:6693
+#: cp/parser.c:6699
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr "請嘗試刪除類型識別碼兩邊的括號"
-#: cp/parser.c:6774
+#: cp/parser.c:6780
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in a new-type-id"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:6898
+#: cp/parser.c:6904
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
msgstr "new 宣告中的é‹ç®—å¼å¿…須具有整數或列舉類型"
-#: cp/parser.c:7154
+#: cp/parser.c:7160
#, gcc-internal-format
msgid "use of old-style cast"
msgstr "使用舊å¼çš„類型轉æ›"
-#: cp/parser.c:7283
+#: cp/parser.c:7292
#, gcc-internal-format
msgid "%<>>%> operator is treated as two right angle brackets in C++11"
msgstr ""
-#: cp/parser.c:7286
+#: cp/parser.c:7295
#, fuzzy, gcc-internal-format
#| msgid "suggest parentheses around && within ||"
msgid "suggest parentheses around %<>>%> expression"
msgstr "建議在 || çš„é‹ç®—元中出ç¾çš„ && å‰å¾ŒåŠ ä¸Šæ‹¬è™Ÿ"
-#: cp/parser.c:7431
+#: cp/parser.c:7440
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow ?: with omitted middle operand"
msgstr "ISO C++ ä¸å…許指定元素åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:8051
+#: cp/parser.c:8060
#, gcc-internal-format
msgid "lambda-expression in unevaluated context"
msgstr ""
-#: cp/parser.c:8180
+#: cp/parser.c:8189
#, fuzzy, gcc-internal-format
#| msgid "Unexpected end of module"
msgid "expected end of capture-list"
msgstr "éžé æœŸçš„模組çµæŸ"
-#: cp/parser.c:8194
+#: cp/parser.c:8203
#, gcc-internal-format
msgid "explicit by-copy capture of %<this%> redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8235
+#: cp/parser.c:8244
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr "ISO C++ ä¸å…許指定元素åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:8268
+#: cp/parser.c:8277
#, fuzzy, gcc-internal-format
#| msgid "increment of read-only variable %qD"
msgid "capture of non-variable %qD "
msgstr "令唯讀變數 %qD 自增"
-#: cp/parser.c:8270 cp/parser.c:8279
+#: cp/parser.c:8279 cp/parser.c:8288
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared here"
msgid "%q+#D declared here"
msgstr "%q+D 已在此宣告éŽ"
-#: cp/parser.c:8276
+#: cp/parser.c:8285
#, gcc-internal-format
msgid "capture of variable %qD with non-automatic storage duration"
msgstr ""
-#: cp/parser.c:8305
+#: cp/parser.c:8314
#, gcc-internal-format
msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
msgstr ""
-#: cp/parser.c:8310
+#: cp/parser.c:8319
#, gcc-internal-format
msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
msgstr ""
-#: cp/parser.c:8365
+#: cp/parser.c:8374
#, fuzzy, gcc-internal-format
#| msgid "default argument given for parameter %d of %q#D"
msgid "default argument specified for lambda parameter"
msgstr "為åƒæ•¸ %d (屬於 %q#D)指定了é è¨­å¼•æ•¸"
-#: cp/parser.c:8768
+#: cp/parser.c:8777
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected labeled-statement"
msgstr "需è¦æ•˜è¿°"
-#: cp/parser.c:8806
+#: cp/parser.c:8815
#, gcc-internal-format
msgid "case label %qE not within a switch statement"
msgstr "case 標籤 %qE 未出ç¾åœ¨ switch 敘述中"
-#: cp/parser.c:8881
+#: cp/parser.c:8890
#, gcc-internal-format
msgid "need %<typename%> before %qE because %qT is a dependent scope"
msgstr ""
-#: cp/parser.c:8890
+#: cp/parser.c:8899
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> names constructor in %qT"
msgid "%<%T::%D%> names the constructor, not the type"
msgstr "%<%T::%D%> 在 %qT 內指定了建構å¼"
-#: cp/parser.c:8939
+#: cp/parser.c:8948
#, fuzzy, gcc-internal-format
#| msgid "Discover pure and const functions"
msgid "compound-statement in constexpr function"
msgstr "發ç¾ç´”函å¼å’Œå¸¸å‡½å¼"
-#: cp/parser.c:9151 cp/parser.c:22258
+#: cp/parser.c:9160 cp/parser.c:22274
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected selection-statement"
msgstr "需è¦å®£å‘Šæˆ–敘述"
-#: cp/parser.c:9184
+#: cp/parser.c:9193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in conditions"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:9527
+#: cp/parser.c:9536
#, fuzzy, gcc-internal-format
#| msgid "expression statement has incomplete type"
msgid "range-based %<for%> expression of type %qT has incomplete type"
msgstr "é‹ç®—å¼æ•˜è¿°é¡žåž‹ä¸å®Œå…¨"
-#: cp/parser.c:9565
+#: cp/parser.c:9574
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>"
msgstr ""
-#: cp/parser.c:9571
+#: cp/parser.c:9580
#, gcc-internal-format
msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>"
msgstr ""
-#: cp/parser.c:9609
+#: cp/parser.c:9618
#, gcc-internal-format
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr ""
-#: cp/parser.c:9740 cp/parser.c:22261
+#: cp/parser.c:9749 cp/parser.c:22277
#, fuzzy, gcc-internal-format
#| msgid "expected declaration or statement"
msgid "expected iteration-statement"
msgstr "需è¦å®£å‘Šæˆ–敘述"
-#: cp/parser.c:9787
+#: cp/parser.c:9796
#, gcc-internal-format
msgid "range-based %<for%> loops are not allowed in C++98 mode"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:9909
+#: cp/parser.c:9918
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ ä¸å…許執行時å¯çŸ¥çš„ goto 目的"
-#: cp/parser.c:9922 cp/parser.c:22264
+#: cp/parser.c:9931 cp/parser.c:22280
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected jump-statement"
msgstr "需è¦æ•˜è¿°"
-#: cp/parser.c:10054 cp/parser.c:18855
+#: cp/parser.c:10063 cp/parser.c:18871
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "多餘的 %<;%>"
-#: cp/parser.c:10288
+#: cp/parser.c:10297
#, gcc-internal-format
msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:10439
+#: cp/parser.c:10448
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
msgstr "ä¸èƒ½æ··åˆå®£å‘Šå’Œå‡½å¼å®šç¾©"
-#: cp/parser.c:10583
+#: cp/parser.c:10592
#, fuzzy, gcc-internal-format
#| msgid "%<friend%> can only be specified inside a class"
msgid "%<friend%> used outside of class"
@@ -33751,401 +33811,401 @@ msgstr "%<friend%> åªèƒ½åœ¨é¡žåˆ¥ä¸­æŒ‡å®š"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
-#: cp/parser.c:10642
+#: cp/parser.c:10651
#, gcc-internal-format
msgid "%<auto%> changes meaning in C++11; please remove it"
msgstr ""
-#: cp/parser.c:10678
+#: cp/parser.c:10687
#, fuzzy, gcc-internal-format
#| msgid "pure-specifier on function-definition"
msgid "decl-specifier invalid in condition"
msgstr "函å¼å®šç¾©ä¸Šæœ‰ pure 指定"
-#: cp/parser.c:10769
+#: cp/parser.c:10778
#, gcc-internal-format
msgid "class definition may not be declared a friend"
msgstr "類別定義ä¸èƒ½è¢«å®£å‘Šç‚ºå¤¥ä¼´"
-#: cp/parser.c:10838 cp/parser.c:19227
+#: cp/parser.c:10847 cp/parser.c:19243
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:10879
+#: cp/parser.c:10888
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid linkage-specification"
msgstr "無效的基礎類別"
-#: cp/parser.c:11014
+#: cp/parser.c:11023
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in %<decltype%> expressions"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:11271
+#: cp/parser.c:11280
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<this%> in non-member function"
msgid "invalid use of %<auto%> in conversion operator"
msgstr "在éžæˆå“¡å‡½å¼ä¸­ä½¿ç”¨ %<this%> 無效"
-#: cp/parser.c:11357
+#: cp/parser.c:11366
#, fuzzy, gcc-internal-format
#| msgid "only constructors take base initializers"
msgid "only constructors take member initializers"
msgstr "åªæœ‰å»ºæ§‹å¼æ‰èƒ½æœ‰åŸºç¤Žé¡žåˆ¥åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:11379
+#: cp/parser.c:11388
#, fuzzy, gcc-internal-format
#| msgid "missing initializer for member %qD"
msgid "cannot expand initializer for member %<%D%>"
msgstr "æˆå“¡ %qD 缺少åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:11391
+#: cp/parser.c:11400
#, fuzzy, gcc-internal-format
#| msgid "static declaration of %q+D follows non-static declaration"
msgid "mem-initializer for %qD follows constructor delegation"
msgstr "å° %qD çš„éœæ…‹å®£å‘Šå‡ºç¾åœ¨éžéœæ…‹å®£å‘Šä¹‹å¾Œ"
-#: cp/parser.c:11403
+#: cp/parser.c:11412
#, gcc-internal-format
msgid "constructor delegation follows mem-initializer for %qD"
msgstr ""
-#: cp/parser.c:11455
+#: cp/parser.c:11464
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr "年代錯誤的舊å¼åŸºç¤Žé¡žåˆ¥åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:11523
+#: cp/parser.c:11532
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
msgstr "é—œéµå­— %<typename%> ä¸å…許用在此上下文中(é™å®šçš„åˆå§‹å€¼è¨­å®šéš±å«åœ°æ˜¯ä¸€å€‹é¡žåž‹)"
-#: cp/parser.c:11840
+#: cp/parser.c:11849
#, gcc-internal-format
msgid "expected empty string after %<operator%> keyword"
msgstr ""
-#: cp/parser.c:11858
+#: cp/parser.c:11867
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected suffix identifier"
msgstr "需è¦è­˜åˆ¥ç¢¼"
-#: cp/parser.c:11863
+#: cp/parser.c:11872
#, gcc-internal-format
msgid "missing space between %<\"\"%> and suffix identifier"
msgstr ""
-#: cp/parser.c:11878
+#: cp/parser.c:11887
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
msgstr "éžé æœŸçš„é‹ç®—å…ƒ"
#. Warn that we do not support `export'.
-#: cp/parser.c:11915
+#: cp/parser.c:11924
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "é—œéµå­— %<export%> 未實作,將被忽略"
-#: cp/parser.c:12106 cp/parser.c:12204 cp/parser.c:12311 cp/parser.c:17331
+#: cp/parser.c:12115 cp/parser.c:12213 cp/parser.c:12320 cp/parser.c:17340
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "template parameter pack %qD cannot have a default argument"
msgstr "%qD ä¸èƒ½æœ‰é è¨­åƒæ•¸"
-#: cp/parser.c:12110 cp/parser.c:17339
+#: cp/parser.c:12119 cp/parser.c:17348
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter pack cannot have a default argument"
msgstr "範本åƒæ•¸ä¸èƒ½æ˜¯å¤¥ä¼´"
-#: cp/parser.c:12208 cp/parser.c:12315
+#: cp/parser.c:12217 cp/parser.c:12324
#, fuzzy, gcc-internal-format
#| msgid "template parameters cannot be friends"
msgid "template parameter packs cannot have default arguments"
msgstr "範本åƒæ•¸ä¸èƒ½æ˜¯å¤¥ä¼´"
-#: cp/parser.c:12397
+#: cp/parser.c:12406
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-id"
msgstr "需è¦æ•˜è¿°"
-#: cp/parser.c:12444 cp/parser.c:22222
+#: cp/parser.c:12453 cp/parser.c:22238
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<<%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:12451
+#: cp/parser.c:12460
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr "ä¸èƒ½ä»¥ %<<::%> 開始一個範本引數清單"
-#: cp/parser.c:12455
+#: cp/parser.c:12464
#, gcc-internal-format
msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
msgstr "%<<:%> 是 %<[%> çš„å¦ä¸€ç¨®æ‹¼æ³•ã€‚請在 %<<%> å’Œ %<::%> 間加上空格"
-#: cp/parser.c:12533
+#: cp/parser.c:12542
#, gcc-internal-format
msgid "parse error in template argument list"
msgstr "範本引數表語法錯誤"
#. The name does not name a template.
-#: cp/parser.c:12601 cp/parser.c:12716 cp/parser.c:12927
+#: cp/parser.c:12610 cp/parser.c:12725 cp/parser.c:12936
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-name"
msgstr "需è¦æ•˜è¿°"
#. Explain what went wrong.
-#: cp/parser.c:12647
+#: cp/parser.c:12656
#, gcc-internal-format
msgid "non-template %qD used as template"
msgstr "éžç¯„本 %qD åšç‚ºç¯„本"
-#: cp/parser.c:12649
+#: cp/parser.c:12658
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "使用 %<%T::template %D%> 來表示這是一個範本"
-#: cp/parser.c:12783
+#: cp/parser.c:12792
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers or %<...%>"
msgid "expected parameter pack before %<...%>"
msgstr "需è¦æŒ‡å®šå®£å‘Šæˆ– %<...%>"
-#: cp/parser.c:12892 cp/parser.c:12910 cp/parser.c:13051
+#: cp/parser.c:12901 cp/parser.c:12919 cp/parser.c:13060
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected template-argument"
msgstr "需è¦æ•˜è¿°"
-#: cp/parser.c:13034
+#: cp/parser.c:13043
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid non-type template argument"
msgstr "無效的類型åƒæ•¸"
-#: cp/parser.c:13150
+#: cp/parser.c:13159
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<inline%> specifier"
msgstr "明確實體化éžç¯„本類型 %qT"
-#: cp/parser.c:13153
+#: cp/parser.c:13162
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "explicit instantiation shall not use %<constexpr%> specifier"
msgstr "明確實體化éžç¯„本類型 %qT"
-#: cp/parser.c:13212
+#: cp/parser.c:13221
#, gcc-internal-format
msgid "template specialization with C linkage"
msgstr "特例化範本有 C 連çµ"
-#: cp/parser.c:13432
+#: cp/parser.c:13441
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected type specifier"
msgstr "需è¦æŒ‡å®šå®£å‘Š"
-#: cp/parser.c:13679
+#: cp/parser.c:13688
#, fuzzy, gcc-internal-format
#| msgid "Expected expression type"
msgid "expected template-id for type"
msgstr "需è¦é‹ç®—å¼é¡žåž‹"
-#: cp/parser.c:13706
+#: cp/parser.c:13715
#, fuzzy, gcc-internal-format
#| msgid "Expected name"
msgid "expected type-name"
msgstr "需è¦å稱"
-#: cp/parser.c:13943
+#: cp/parser.c:13952
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
msgstr ""
-#: cp/parser.c:14128
+#: cp/parser.c:14137
#, fuzzy, gcc-internal-format
#| msgid "declaration does not declare anything"
msgid "declaration %qD does not declare anything"
msgstr "沒有宣告任何æ±è¥¿"
-#: cp/parser.c:14214
+#: cp/parser.c:14223
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored on non-class types"
msgid "attributes ignored on uninstantiated type"
msgstr "%qE 屬性在ä¸æ˜¯é¡žåˆ¥çš„類型上被忽略"
-#: cp/parser.c:14218
+#: cp/parser.c:14227
#, fuzzy, gcc-internal-format
#| msgid "storage class %qD applied to template instantiation"
msgid "attributes ignored on template instantiation"
msgstr "為範本實體化化套用了存儲類型 %qD"
-#: cp/parser.c:14223
+#: cp/parser.c:14232
#, gcc-internal-format
msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
msgstr ""
-#: cp/parser.c:14356
+#: cp/parser.c:14365
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%qD is an enumeration template"
msgstr "%qD ä¸æ˜¯ä¸€å€‹å‡½å¼ç¯„本"
-#: cp/parser.c:14364
+#: cp/parser.c:14373
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a namespace-name"
msgid "%qD is not an enumerator-name"
msgstr "%qD ä¸æ˜¯ä¸€å€‹å‘½å空間"
-#: cp/parser.c:14427
+#: cp/parser.c:14436
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<;%> or %<{%>"
msgstr "éœ€è¦ %<,%> 或 %<;%>"
-#: cp/parser.c:14475
+#: cp/parser.c:14484
#, fuzzy, gcc-internal-format
#| msgid "Enable automatic template instantiation"
msgid "cannot add an enumerator list to a template instantiation"
msgstr "啟用範本自動實體化"
-#: cp/parser.c:14484 cp/parser.c:18435
+#: cp/parser.c:14493 cp/parser.c:18444
#, fuzzy, gcc-internal-format
#| msgid "declaration of %qD in %qD which does not enclose %qD"
msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr "%qD 宣告出ç¾åœ¨ %qD 中,而後者並ä¸åŒ…å« %qD"
-#: cp/parser.c:14489 cp/parser.c:18440
+#: cp/parser.c:14498 cp/parser.c:18449
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr "%qD 宣告出ç¾åœ¨ %qD 中,而後者並ä¸åŒ…å« %qD"
-#: cp/parser.c:14512
+#: cp/parser.c:14521
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr "%q#T 多次定義"
-#: cp/parser.c:14539
+#: cp/parser.c:14548
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
msgstr ""
-#: cp/parser.c:14542
+#: cp/parser.c:14551
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
-#: cp/parser.c:14718
+#: cp/parser.c:14727
#, gcc-internal-format
msgid "%qD is not a namespace-name"
msgstr "%qD ä¸æ˜¯ä¸€å€‹å‘½å空間"
-#: cp/parser.c:14719
+#: cp/parser.c:14728
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected namespace-name"
msgstr "需è¦é¡žåˆ¥å"
-#: cp/parser.c:14844
+#: cp/parser.c:14853
#, fuzzy, gcc-internal-format
#| msgid "%<#pragma%> is not allowed here"
msgid "%<namespace%> definition is not allowed here"
msgstr "在這裡ä¸å…許使用 %<#pragma%>"
-#: cp/parser.c:14990
+#: cp/parser.c:14999
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
msgstr "範本識別碼ä¸å…許出ç¾åœ¨ using 宣告中"
-#: cp/parser.c:15030
+#: cp/parser.c:15039
#, gcc-internal-format
msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword"
msgstr ""
-#: cp/parser.c:15085
+#: cp/parser.c:15094
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in alias template declarations"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:15532
+#: cp/parser.c:15541
#, fuzzy, gcc-internal-format
#| msgid "%s: function definition not converted\n"
msgid "a function-definition is not allowed here"
msgstr "%s:函å¼å®šç¾©ä¸æœƒè¢«è½‰åŒ–\n"
-#: cp/parser.c:15544
+#: cp/parser.c:15553
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
msgstr "函å¼å®šç¾©ä¸­ä¸å…è¨±å‡ºç¾ asm 指定"
-#: cp/parser.c:15548
+#: cp/parser.c:15557
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
msgstr "函å¼å®šç¾©ä¸­ä¸å…許有屬性"
-#: cp/parser.c:15585
+#: cp/parser.c:15594
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
msgstr ""
#. Anything else is an error.
-#: cp/parser.c:15620 cp/parser.c:17500
+#: cp/parser.c:15629 cp/parser.c:17509
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected initializer"
msgstr "需è¦è­˜åˆ¥ç¢¼"
-#: cp/parser.c:15640
+#: cp/parser.c:15649
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid type in declaration"
msgstr "無效的函å¼å®£å‘Š"
-#: cp/parser.c:15716
+#: cp/parser.c:15725
#, fuzzy, gcc-internal-format
#| msgid "can't initialize friend function %qs"
msgid "initializer provided for function"
msgstr "無法åˆå§‹åŒ–å¤¥ä¼´å‡½å¼ %qs"
-#: cp/parser.c:15748
+#: cp/parser.c:15757
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr "括起的åˆå§‹å€¼è¨­å®šå¾Œå‡ºç¾çš„屬性被忽略"
-#: cp/parser.c:16152
+#: cp/parser.c:16161
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr "陣列邊界ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸æ•¸"
-#: cp/parser.c:16273
+#: cp/parser.c:16282
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type %qT"
msgid "cannot define member of dependent typedef %qT"
msgstr "產生åƒç…§é¡žåž‹ %qT çš„æˆå“¡æŒ‡æ¨™"
-#: cp/parser.c:16277
+#: cp/parser.c:16286
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> is not a type"
msgid "%<%T::%E%> is not a type"
msgstr "%<%T::%D%> ä¸æ˜¯ä¸€å€‹é¡žåž‹"
-#: cp/parser.c:16305
+#: cp/parser.c:16314
#, gcc-internal-format
msgid "invalid use of constructor as a template"
msgstr "將建構å¼åšç‚ºç¯„本用法無效"
-#: cp/parser.c:16307
+#: cp/parser.c:16316
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "使用 %<%T::%D%> 而ä¸æ˜¯ %<%T::%D%> 來以é™å®šå指定建構å¼"
@@ -34154,275 +34214,275 @@ msgstr "使用 %<%T::%D%> 而ä¸æ˜¯ %<%T::%D%> 來以é™å®šå指定建構å¼"
#. here because we do not have enough
#. information about its original syntactic
#. form.
-#: cp/parser.c:16324
+#: cp/parser.c:16333
#, fuzzy, gcc-internal-format
#| msgid "invalid function declaration"
msgid "invalid declarator"
msgstr "無效的函å¼å®£å‘Š"
-#: cp/parser.c:16390
+#: cp/parser.c:16399
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "expected declarator"
msgstr "需è¦æŒ‡å®šå®£å‘Š"
-#: cp/parser.c:16485
+#: cp/parser.c:16494
#, gcc-internal-format
msgid "%qD is a namespace"
msgstr "%qD 是一個命å空間"
-#: cp/parser.c:16487
+#: cp/parser.c:16496
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member of non-class type %qT"
msgid "cannot form pointer to member of non-class %q#T"
msgstr "產生éžé¡žåˆ¥é¡žåž‹ %qT çš„æˆå“¡æŒ‡æ¨™"
-#: cp/parser.c:16504
+#: cp/parser.c:16513
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected ptr-operator"
msgstr "éžé æœŸçš„é‹ç®—å…ƒ"
-#: cp/parser.c:16563
+#: cp/parser.c:16572
#, gcc-internal-format
msgid "duplicate cv-qualifier"
msgstr "é‡è¤‡çš„ cv é™å®š"
-#: cp/parser.c:16621
+#: cp/parser.c:16630
#, fuzzy, gcc-internal-format
#| msgid "duplicate cv-qualifier"
msgid "duplicate virt-specifier"
msgstr "é‡è¤‡çš„ cv é™å®š"
-#: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670
+#: cp/parser.c:16792 cp/typeck2.c:450 cp/typeck2.c:1670
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %<::%>"
msgid "invalid use of %<auto%>"
msgstr "錯誤地使用了 %<::%>"
-#: cp/parser.c:16802
+#: cp/parser.c:16811
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in template arguments"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:16883
+#: cp/parser.c:16892
#, fuzzy, gcc-internal-format
#| msgid "expected identifier"
msgid "expected type-specifier"
msgstr "需è¦è­˜åˆ¥ç¢¼"
-#: cp/parser.c:17127
+#: cp/parser.c:17136
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<,%> or %<...%>"
msgstr "éœ€è¦ %<:%> 或 %<...%>"
-#: cp/parser.c:17184
+#: cp/parser.c:17193
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in parameter types"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:17310
+#: cp/parser.c:17319
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr "為éžå‡½å¼æŒ‡å®šé è¨­åƒæ•¸çš„用法已éŽæ™‚"
-#: cp/parser.c:17314
+#: cp/parser.c:17323
#, gcc-internal-format
msgid "default arguments are only permitted for function parameters"
msgstr "é è¨­åƒæ•¸åªå…許出ç¾åœ¨å‡½å¼åƒæ•¸ä¸­"
-#: cp/parser.c:17333
+#: cp/parser.c:17342
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "parameter pack %qD cannot have a default argument"
msgstr "%qD ä¸èƒ½æœ‰é è¨­åƒæ•¸"
-#: cp/parser.c:17341
+#: cp/parser.c:17350
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot have default arguments"
msgid "parameter pack cannot have a default argument"
msgstr "%qD ä¸èƒ½æœ‰é è¨­åƒæ•¸"
-#: cp/parser.c:17628
+#: cp/parser.c:17637
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr "ISO C++ ä¸å…許指定元素åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:17642
+#: cp/parser.c:17651
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ does not allow designated initializers"
msgid "ISO C++ does not allow C99 designated initializers"
msgstr "ISO C++ ä¸å…許指定元素åˆå§‹å€¼è¨­å®š"
-#: cp/parser.c:17746 cp/parser.c:17868
+#: cp/parser.c:17755 cp/parser.c:17879
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-name"
msgstr "需è¦é¡žåˆ¥å"
-#: cp/parser.c:18057
+#: cp/parser.c:18067
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after class definition"
msgstr "%q+D çš„å…§è¯å®£å‘Šå‡ºç¾åœ¨å…¶å®šç¾©ä¹‹å¾Œ"
-#: cp/parser.c:18059
+#: cp/parser.c:18069
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "expected %<;%> after struct definition"
msgstr "%q+D çš„å…§è¯å®£å‘Šå‡ºç¾åœ¨å…¶å®šç¾©ä¹‹å¾Œ"
-#: cp/parser.c:18061
+#: cp/parser.c:18071
#, fuzzy, gcc-internal-format
#| msgid "Unexpected junk after function declaration at %C"
msgid "expected %<;%> after union definition"
msgstr "%C 處的函å¼å®£å‘Šå¾Œæœ‰éžé æœŸçš„無用字元"
-#: cp/parser.c:18383
+#: cp/parser.c:18392
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%> or %<;%>"
msgid "expected %<{%> or %<:%>"
msgstr "éœ€è¦ %<,%> 或 %<;%>"
-#: cp/parser.c:18394
+#: cp/parser.c:18403
#, fuzzy, gcc-internal-format
#| msgid "cannot find file for class %s"
msgid "cannot specify %<override%> for a class"
msgstr "無法為類別 %s 找到檔案"
-#: cp/parser.c:18402
+#: cp/parser.c:18411
#, gcc-internal-format
msgid "global qualification of class name is invalid"
msgstr ""
-#: cp/parser.c:18409
+#: cp/parser.c:18418
#, fuzzy, gcc-internal-format
#| msgid "friend declaration does not name a class or function"
msgid "qualified name does not name a class"
msgstr "夥伴宣告沒有指定類別或函å¼å"
-#: cp/parser.c:18421
+#: cp/parser.c:18430
#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
msgstr "%qD 的宣告中類別å無效"
-#: cp/parser.c:18454
+#: cp/parser.c:18463
#, fuzzy, gcc-internal-format
#| msgid "extra qualification ignored"
msgid "extra qualification not allowed"
msgstr "忽略é¡å¤–çš„é™å®š"
-#: cp/parser.c:18466
+#: cp/parser.c:18475
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr "明確特例化å‰å¿…須有 %<template <>%>"
-#: cp/parser.c:18496
+#: cp/parser.c:18505
#, fuzzy, gcc-internal-format
#| msgid "non-template %qD used as template"
msgid "function template %qD redeclared as a class template"
msgstr "éžç¯„本 %qD åšç‚ºç¯„本"
-#: cp/parser.c:18527
+#: cp/parser.c:18536
#, gcc-internal-format
msgid "could not resolve typename type"
msgstr ""
-#: cp/parser.c:18579
+#: cp/parser.c:18588
#, gcc-internal-format
msgid "previous definition of %q+#T"
msgstr "%q+#T 的上一個定義"
-#: cp/parser.c:18645 cp/parser.c:22267
+#: cp/parser.c:18661 cp/parser.c:22283
#, fuzzy, gcc-internal-format
#| msgid "expected class name"
msgid "expected class-key"
msgstr "需è¦é¡žåˆ¥å"
-#: cp/parser.c:18874
+#: cp/parser.c:18890
#, fuzzy, gcc-internal-format
#| msgid "a class-key must be used when declaring a friend"
msgid "in C++03 a class-key must be used when declaring a friend"
msgstr "宣告夥伴時必須使用 class é—œéµå­—"
-#: cp/parser.c:18892
+#: cp/parser.c:18908
#, gcc-internal-format
msgid "friend declaration does not name a class or function"
msgstr "夥伴宣告沒有指定類別或函å¼å"
-#: cp/parser.c:19102
+#: cp/parser.c:19118
#, gcc-internal-format
msgid "pure-specifier on function-definition"
msgstr "函å¼å®šç¾©ä¸Šæœ‰ pure 指定"
-#: cp/parser.c:19150
+#: cp/parser.c:19166
#, fuzzy, gcc-internal-format
#| msgid "cannot use %<::%> in parameter declaration"
msgid "expected %<;%> at end of member declaration"
msgstr "ä¸èƒ½åœ¨åƒæ•¸å®£å‘Šä¸­ä½¿ç”¨ %<::%>"
-#: cp/parser.c:19221
+#: cp/parser.c:19237
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
msgstr ""
-#: cp/parser.c:19256
+#: cp/parser.c:19272
#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
msgstr ""
-#: cp/parser.c:19387
+#: cp/parser.c:19403
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
msgstr ""
-#: cp/parser.c:19407
+#: cp/parser.c:19423
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
msgstr ""
-#: cp/parser.c:19431
+#: cp/parser.c:19447
#, gcc-internal-format
msgid "keyword %<typename%> not allowed outside of templates"
msgstr "é—œéµå­— %<typename%> ä¸èƒ½åœ¨ç¯„本以外使用"
-#: cp/parser.c:19434
+#: cp/parser.c:19450
#, gcc-internal-format
msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
msgstr "é—œéµå­— %<typename%> ä¸å…許用在此上下文中(基礎類別隱å«åœ°æ˜¯ä¸€å€‹é¡žåž‹)"
-#: cp/parser.c:19527 cp/parser.c:19609
+#: cp/parser.c:19543 cp/parser.c:19625
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in an exception-specification"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:19591
+#: cp/parser.c:19607
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
msgstr ""
-#: cp/parser.c:19790
+#: cp/parser.c:19806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "types may not be defined in exception-declarations"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/parser.c:20690
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:20695
+#: cp/parser.c:20711
#, fuzzy, gcc-internal-format
#| msgid "invalid redeclaration of %q+D"
msgid "invalid declaration of %<%T::%E%>"
msgstr "å° %q+#D 無效的é‡å®£å‘Š"
-#: cp/parser.c:20699
+#: cp/parser.c:20715
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "範本åƒæ•¸è¡¨å¤ªå°‘"
@@ -34431,358 +34491,358 @@ msgstr "範本åƒæ•¸è¡¨å¤ªå°‘"
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:20706
+#: cp/parser.c:20722
#, gcc-internal-format
msgid "too many template-parameter-lists"
msgstr "範本åƒæ•¸è¡¨å¤ªå¤š"
-#: cp/parser.c:21003
+#: cp/parser.c:21019
#, gcc-internal-format
msgid "named return values are no longer supported"
msgstr "å…·å回傳值ä¸å†è¢«æ”¯æ´"
-#: cp/parser.c:21090
+#: cp/parser.c:21106
#, fuzzy, gcc-internal-format
#| msgid "invalid declaration of member template %q#D in local class"
msgid "invalid declaration of member template in local class"
msgstr "局部類別中å°æˆå“¡ç¯„本 %q#D 的宣告無效"
-#: cp/parser.c:21099
+#: cp/parser.c:21115
#, gcc-internal-format
msgid "template with C linkage"
msgstr "C 連çµçš„範本"
-#: cp/parser.c:21118
+#: cp/parser.c:21134
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid explicit specialization"
msgstr "無效的基礎類別"
-#: cp/parser.c:21204
+#: cp/parser.c:21220
#, gcc-internal-format
msgid "literal operator template %qD has invalid parameter list. Expected non-type template argument pack <char...>"
msgstr ""
-#: cp/parser.c:21278
+#: cp/parser.c:21294
#, fuzzy, gcc-internal-format
#| msgid "template declaration of %qs"
msgid "template declaration of %<typedef%>"
msgstr "%qs 宣告為範本"
-#: cp/parser.c:21355
+#: cp/parser.c:21371
#, fuzzy, gcc-internal-format
#| msgid "explicit specialization in non-namespace scope %qD"
msgid "explicit template specialization cannot have a storage class"
msgstr "明確特例化出ç¾åœ¨éžå‘½åç©ºé–“ä½œç”¨æ¬„ä½ %qD 中"
-#: cp/parser.c:21590
+#: cp/parser.c:21606
#, fuzzy, gcc-internal-format
#| msgid "%H%<>>%> should be %<> >%> within a nested template argument list"
msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr "%H在巢狀範本引數清單中應當使用 %<> >%> è€Œéž %<>>%>"
-#: cp/parser.c:21603
+#: cp/parser.c:21619
#, gcc-internal-format
msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr "å¯ç–‘çš„ %<>>%>,使用 %<>%> 來çµæŸç¯„本引數清單"
-#: cp/parser.c:22009
+#: cp/parser.c:22025
#, fuzzy, gcc-internal-format
#| msgid "invalid base-class specification"
msgid "invalid use of %qD in linkage specification"
msgstr "無效的基礎類別"
-#: cp/parser.c:22022
+#: cp/parser.c:22038
#, fuzzy, gcc-internal-format
#| msgid "%<__thread%> before %<extern%>"
msgid "%<__thread%> before %qD"
msgstr "%<__thread%> 出ç¾åœ¨ %<extern%> 之å‰"
-#: cp/parser.c:22125
+#: cp/parser.c:22141
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<new%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22128
+#: cp/parser.c:22144
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<delete%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22131
+#: cp/parser.c:22147
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<return%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22137
+#: cp/parser.c:22153
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<extern%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22140
+#: cp/parser.c:22156
#, fuzzy, gcc-internal-format
#| msgid "expected statement"
msgid "expected %<static_assert%>"
msgstr "需è¦æ•˜è¿°"
-#: cp/parser.c:22143
+#: cp/parser.c:22159
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<decltype%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22146
+#: cp/parser.c:22162
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<operator%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22149
+#: cp/parser.c:22165
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<class%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22152
+#: cp/parser.c:22168
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<template%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22155
+#: cp/parser.c:22171
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<namespace%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22158
+#: cp/parser.c:22174
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<using%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22161
+#: cp/parser.c:22177
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<asm%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22164
+#: cp/parser.c:22180
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<try%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22167
+#: cp/parser.c:22183
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<catch%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22170
+#: cp/parser.c:22186
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<throw%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22173
+#: cp/parser.c:22189
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<__label__%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22176
+#: cp/parser.c:22192
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@try%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22179
+#: cp/parser.c:22195
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@synchronized%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22182
+#: cp/parser.c:22198
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<@throw%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22185
+#: cp/parser.c:22201
#, gcc-internal-format
msgid "expected %<__transaction_atomic%>"
msgstr ""
-#: cp/parser.c:22188
+#: cp/parser.c:22204
#, gcc-internal-format
msgid "expected %<__transaction_relaxed%>"
msgstr ""
-#: cp/parser.c:22219
+#: cp/parser.c:22235
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<::%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22231
+#: cp/parser.c:22247
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<...%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22234
+#: cp/parser.c:22250
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<*%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22237
+#: cp/parser.c:22253
#, fuzzy, gcc-internal-format
#| msgid "expected %<{%>"
msgid "expected %<~%>"
msgstr "éœ€è¦ %<{%>"
-#: cp/parser.c:22243
+#: cp/parser.c:22259
#, fuzzy, gcc-internal-format
#| msgid "expected %<:%> or %<...%>"
msgid "expected %<:%> or %<::%>"
msgstr "éœ€è¦ %<:%> 或 %<...%>"
-#: cp/parser.c:22271
+#: cp/parser.c:22287
#, fuzzy, gcc-internal-format
#| msgid "expected %<,%>, %<;%> or %<}%>"
msgid "expected %<class%>, %<typename%>, or %<template%>"
msgstr "éœ€è¦ %<,%>ã€%<;%> 或 %<}%>"
-#: cp/parser.c:22509
+#: cp/parser.c:22525
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr "使用了 %qs 標記,在命å %q#T 時"
-#: cp/parser.c:22514
+#: cp/parser.c:22530
#, fuzzy, gcc-internal-format
#| msgid "%q+#D previously declared here"
msgid "%q#T was previously declared here"
msgstr "%q+#D 已在此宣告éŽ"
-#: cp/parser.c:22533
+#: cp/parser.c:22549
#, gcc-internal-format
msgid "%qD redeclared with different access"
msgstr "%qD é‡å®£å‘Šæ™‚有ä¸åŒçš„å¯å­˜å–性"
-#: cp/parser.c:22552
+#: cp/parser.c:22568
#, gcc-internal-format
msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "åšç‚ºæ¶ˆæ­§ç¾©çš„ %<template%> åªèƒ½ç”¨æ–¼ç¯„本內"
-#: cp/parser.c:22785
+#: cp/parser.c:22801
#, gcc-internal-format
msgid "file ends in default argument"
msgstr "檔案在é è¨­åƒæ•¸è™•çµæŸ"
-#: cp/parser.c:22989 cp/parser.c:24251 cp/parser.c:24437
+#: cp/parser.c:23005 cp/parser.c:24267 cp/parser.c:24453
#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr "ä½ç½®éŒ¯èª¤çš„ %<@%D%> Objective-C++ 建構"
-#: cp/parser.c:23111
+#: cp/parser.c:23127
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
msgstr ""
-#: cp/parser.c:23140
+#: cp/parser.c:23156
#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
msgstr "%<@encode%> 必須指定一個類型åšç‚ºå¼•æ•¸"
-#: cp/parser.c:23516
+#: cp/parser.c:23532
#, gcc-internal-format
msgid "invalid Objective-C++ selector name"
msgstr "無效的 Objective-C++ é¸æ“‡å­å"
-#: cp/parser.c:23591 cp/parser.c:23609
+#: cp/parser.c:23607 cp/parser.c:23625
#, fuzzy, gcc-internal-format
#| msgid "expected declaration specifiers"
msgid "objective-c++ method declaration is expected"
msgstr "需è¦æŒ‡å®šå®£å‘Š"
-#: cp/parser.c:23603 cp/parser.c:23668
+#: cp/parser.c:23619 cp/parser.c:23684
#, fuzzy, gcc-internal-format
#| msgid "%Jsection attribute cannot be specified for local variables"
msgid "method attributes must be specified at the end"
msgstr "%Jä¸èƒ½ç‚ºå±€éƒ¨è®Šæ•¸æŒ‡å®š section 屬性"
-#: cp/parser.c:23711
+#: cp/parser.c:23727
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
msgstr ""
-#: cp/parser.c:23917 cp/parser.c:23924 cp/parser.c:23931
+#: cp/parser.c:23933 cp/parser.c:23940 cp/parser.c:23947
#, fuzzy, gcc-internal-format
#| msgid "illegal reference type specified for instance variable %qs"
msgid "invalid type for instance variable"
msgstr "為實體變數 %qs 指定了無效的åƒç…§é¡žåž‹"
-#: cp/parser.c:24045
+#: cp/parser.c:24061
#, gcc-internal-format
msgid "identifier expected after %<@protocol%>"
msgstr "%<@protocol%> 需è¦è­˜åˆ¥ç¢¼"
-#: cp/parser.c:24216
+#: cp/parser.c:24232
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
msgstr ""
-#: cp/parser.c:24223
+#: cp/parser.c:24239
#, fuzzy, gcc-internal-format
#| msgid "%qE attribute ignored for %qE"
msgid "prefix attributes are ignored before %<@%D%>"
msgstr "%qE 屬性為 %qE 所忽略"
-#: cp/parser.c:24496 cp/parser.c:24503 cp/parser.c:24510
+#: cp/parser.c:24512 cp/parser.c:24519 cp/parser.c:24526
#, fuzzy, gcc-internal-format
#| msgid "invalid type argument"
msgid "invalid type for property"
msgstr "無效的類型åƒæ•¸"
-#: cp/parser.c:26240
+#: cp/parser.c:26256
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:26407 cp/pt.c:12693
+#: cp/parser.c:26423 cp/pt.c:12731
#, fuzzy, gcc-internal-format
#| msgid "register variable %qD used in nested function"
msgid "iteration variable %qD should not be reduction"
msgstr "巢狀函å¼ä¸­ä½¿ç”¨äº†æš«å­˜å™¨è®Šæ•¸ %qD"
-#: cp/parser.c:26475
+#: cp/parser.c:26491
#, fuzzy, gcc-internal-format
#| msgid "not enough type information"
msgid "not enough collapsed for loops"
msgstr "類型資訊ä¸å……分"
-#: cp/parser.c:27033 cp/semantics.c:5022
+#: cp/parser.c:27049 cp/semantics.c:5019
#, gcc-internal-format
msgid "%<__transaction_relaxed%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27035 cp/semantics.c:5024
+#: cp/parser.c:27051 cp/semantics.c:5021
#, gcc-internal-format
msgid "%<__transaction_atomic%> without transactional memory support enabled"
msgstr ""
-#: cp/parser.c:27232
+#: cp/parser.c:27248
#, fuzzy, gcc-internal-format
#| msgid "junk at end of %<#pragma pack%>"
msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr "%<#pragma pack%> 末尾有無用字元"
-#: cp/parser.c:27411
+#: cp/parser.c:27427
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr "模組間最佳化æ·æœªç‚º C++ 實作"
@@ -34883,69 +34943,69 @@ msgstr "%s %+#D"
msgid "%qD is not a function template"
msgstr "%qD ä¸æ˜¯ä¸€å€‹å‡½å¼ç¯„本"
-#: cp/pt.c:2052
+#: cp/pt.c:2066
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr "範本識別碼 %qD(屬於 %q+D)ä¸åŒ¹é…任何範本宣告"
-#: cp/pt.c:2055
+#: cp/pt.c:2069
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
msgstr ""
-#: cp/pt.c:2064
+#: cp/pt.c:2078
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr "有歧義的範本特例化 %qD (為 %q+D)"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:2300 cp/pt.c:2354
+#: cp/pt.c:2314 cp/pt.c:2368
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr "範本識別碼 %qD 出ç¾åœ¨åŸºæœ¬ç¯„本的宣告中"
-#: cp/pt.c:2313
+#: cp/pt.c:2327
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr "明確åˆå§‹åŒ–中出ç¾äº†ç¯„本åƒæ•¸æ¸…å–®"
-#: cp/pt.c:2319
+#: cp/pt.c:2333
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr "為明確實體化æ供的定義"
-#: cp/pt.c:2327
+#: cp/pt.c:2341
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr "%qD 宣告時範本åƒæ•¸è¡¨å¤ªå¤š"
-#: cp/pt.c:2330
+#: cp/pt.c:2344
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr "%qD 宣告時範本åƒæ•¸è¡¨å¤ªå°‘"
-#: cp/pt.c:2332
+#: cp/pt.c:2346
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr "%qD 的明確特例化必須由 %<template <>%> 引入"
-#: cp/pt.c:2351
+#: cp/pt.c:2365
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr "函å¼ç¯„本部分特例化 %qD 是ä¸å…許的"
-#: cp/pt.c:2383
+#: cp/pt.c:2397
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr "明確特例化時指定了é è¨­åƒæ•¸"
-#: cp/pt.c:2413
+#: cp/pt.c:2427
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr "%qD ä¸æ˜¯ä¸€å€‹ç¯„本函å¼"
-#: cp/pt.c:2421
+#: cp/pt.c:2435
#, fuzzy, gcc-internal-format
#| msgid "%qD not declared"
msgid "%qD is not declared in %qD"
@@ -34959,140 +35019,140 @@ msgstr "%qD 未宣告"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2483
+#: cp/pt.c:2497
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr "特例化了隱å«å®£å‘Šçš„特殊æˆå“¡å‡½å¼"
-#: cp/pt.c:2527
+#: cp/pt.c:2541
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr "æˆå“¡å‡½å¼ %qD 未在 %qT 中宣告"
-#: cp/pt.c:3173
+#: cp/pt.c:3187
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:3234
+#: cp/pt.c:3248
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3236
+#: cp/pt.c:3250
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:3279
+#: cp/pt.c:3293
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:3294 cp/pt.c:4372
+#: cp/pt.c:3308 cp/pt.c:4386
#, gcc-internal-format
msgid " %qD"
msgstr " %qD"
-#: cp/pt.c:3296
+#: cp/pt.c:3310
#, fuzzy, gcc-internal-format
#| msgid "<anonymous>"
msgid " <anonymous>"
msgstr "<anonymous>"
-#: cp/pt.c:3413
+#: cp/pt.c:3427
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr "%q+#D 的宣告"
-#: cp/pt.c:3414
+#: cp/pt.c:3428
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr " éš±è—了模版åƒæ•¸ %q+#D"
-#: cp/pt.c:4368
+#: cp/pt.c:4382
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr "部分特例化中未用到範本åƒæ•¸ï¼š"
-#: cp/pt.c:4386
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr "部分特例化 %qT 並未特例化任何範本åƒæ•¸"
-#: cp/pt.c:4431
+#: cp/pt.c:4445
#, gcc-internal-format
msgid "parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4434
+#: cp/pt.c:4448
#, gcc-internal-format
msgid "parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:4453
+#: cp/pt.c:4467
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr "範本引數 %qE 混雜了範本åƒæ•¸"
-#: cp/pt.c:4499
+#: cp/pt.c:4513
#, fuzzy, gcc-internal-format
#| msgid "type %qT of template argument %qE depends on template parameter(s)"
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
msgstr[0] "é¡žåž‹ %qT(屬於範本引數 %qE)å–決於範本åƒæ•¸"
-#: cp/pt.c:4529
+#: cp/pt.c:4543
#, fuzzy, gcc-internal-format
#| msgid "specialization %qT after instantiation %qT"
msgid "partial specialization of %qT after instantiation of %qT"
msgstr "%qT 的實體化在 %qT 的特例化之後"
-#: cp/pt.c:4622
+#: cp/pt.c:4636
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "%qD 沒有é è¨­åƒæ•¸"
-#: cp/pt.c:4643
+#: cp/pt.c:4657
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4646
+#: cp/pt.c:4660
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:4683
+#: cp/pt.c:4697
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend re-declaration"
msgstr "夥伴範本特例化 %qD 中ä¸å…許出ç¾é è¨­åƒæ•¸"
-#: cp/pt.c:4686
+#: cp/pt.c:4700
#, fuzzy, gcc-internal-format
#| msgid "default arguments are not allowed in declaration of friend template specialization %qD"
msgid "default template arguments may not be used in function template friend declarations"
msgstr "夥伴範本特例化 %qD 中ä¸å…許出ç¾é è¨­åƒæ•¸"
-#: cp/pt.c:4689
+#: cp/pt.c:4703
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
msgstr ""
-#: cp/pt.c:4692
+#: cp/pt.c:4706
#, fuzzy, gcc-internal-format
#| msgid "template parameters not used in partial specialization:"
msgid "default template arguments may not be used in partial specializations"
msgstr "部分特例化中未用到範本åƒæ•¸ï¼š"
-#: cp/pt.c:4695 cp/pt.c:4746
+#: cp/pt.c:4709 cp/pt.c:4760
#, fuzzy, gcc-internal-format
#| msgid "default argument for parameter of type %qT has type %qT"
msgid "default argument for template parameter for class enclosing %qD"
msgstr "類型為 %qT çš„åƒæ•¸çš„é è¨­å¼•æ•¸å»æœ‰é¡žåž‹ %qT"
-#: cp/pt.c:4839
+#: cp/pt.c:4853
#, gcc-internal-format
msgid "template class without a name"
msgstr "範本類別沒具åå­—"
@@ -35100,7 +35160,7 @@ msgstr "範本類別沒具åå­—"
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:4849
+#: cp/pt.c:4863
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "è§£æ§‹å‡½å¼ %qD 被宣告為一個æˆå“¡ç¯„本"
@@ -35110,78 +35170,78 @@ msgstr "è§£æ§‹å‡½å¼ %qD 被宣告為一個æˆå“¡ç¯„本"
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:4864
+#: cp/pt.c:4878
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr "%qD 範本宣告無效"
-#: cp/pt.c:4988
+#: cp/pt.c:5002
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr "å°éžç¯„本 %q#D 的範本定義"
-#: cp/pt.c:5031
+#: cp/pt.c:5045
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr "éœ€è¦ %d ç´šçš„ %q#D 範本åƒæ•¸ï¼Œå»çµ¦å‡ºäº† %d ç´š"
-#: cp/pt.c:5043
+#: cp/pt.c:5057
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr "得到 %d 個範本åƒæ•¸ï¼Œç‚º %q#D"
-#: cp/pt.c:5046
+#: cp/pt.c:5060
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr "得到 %d 個範本åƒæ•¸ï¼Œç‚º %q#T"
-#: cp/pt.c:5048
+#: cp/pt.c:5062
#, gcc-internal-format, gfc-internal-format
msgid " but %d required"
msgstr " ä½†å¯¦éš›éœ€è¦ %d 個"
-#: cp/pt.c:5069
+#: cp/pt.c:5083
#, fuzzy, gcc-internal-format
#| msgid "template parameters do not match template"
msgid "template arguments to %qD do not match original template %qD"
msgstr "範本åƒæ•¸èˆ‡ç¯„本ä¸ç¬¦"
-#: cp/pt.c:5073
+#: cp/pt.c:5087
#, fuzzy, gcc-internal-format
#| msgid "enclosing class templates are not explicitly specialized"
msgid "use template<> for an explicit specialization"
msgstr "所包å«çš„類別範本並未被明確特例化"
-#: cp/pt.c:5174
+#: cp/pt.c:5188
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr "%qT ä¸æ˜¯ä¸€å€‹ç¯„本類型"
-#: cp/pt.c:5187
+#: cp/pt.c:5201
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr "%qD 的宣告中沒有 template é™å®š"
-#: cp/pt.c:5198
+#: cp/pt.c:5212
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qD used without template parameters"
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
msgstr[0] "%qD 使用時未帶範本åƒæ•¸"
-#: cp/pt.c:5202
+#: cp/pt.c:5216
#, fuzzy, gcc-internal-format
#| msgid "previous declaration %q+#D here"
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "與此處早先的宣告 %q+#D è¡çª"
-#: cp/pt.c:5239
+#: cp/pt.c:5253
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr "範本åƒæ•¸ %q+#D"
-#: cp/pt.c:5240
+#: cp/pt.c:5254
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "在這裡åˆè¢«å®£å‘Šç‚º %q#D"
@@ -35190,285 +35250,285 @@ msgstr "在這裡åˆè¢«å®£å‘Šç‚º %q#D"
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:5250
+#: cp/pt.c:5264
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr "é‡å®šç¾© %q#D çš„é è¨­åƒæ•¸"
-#: cp/pt.c:5252
+#: cp/pt.c:5266
#, fuzzy, gcc-internal-format
#| msgid "%J original definition appeared here"
msgid "original definition appeared here"
msgstr "%J 原始定義出ç¾åœ¨é€™è£¡"
-#: cp/pt.c:5370
+#: cp/pt.c:5384
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為物件 %qD 沒有外部連çµ"
-#: cp/pt.c:5374
+#: cp/pt.c:5388
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為物件 %qD 沒有外部連çµ"
-#: cp/pt.c:5398 cp/pt.c:5999
+#: cp/pt.c:5412 cp/pt.c:6013
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgid "%qE is not a valid template argument for type %qT"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為它是一個指標"
-#: cp/pt.c:5400
+#: cp/pt.c:5414
#, fuzzy, gcc-internal-format
#| msgid "(a pointer to member can only be formed with %<&%E%>)"
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
msgstr "(æˆå“¡æŒ‡æ¨™åªèƒ½ç”¨ %<&%E%> 構æˆ)"
-#: cp/pt.c:5451
+#: cp/pt.c:5465
#, fuzzy, gcc-internal-format
#| msgid "got %d template parameters for %q#D"
msgid " couldn't deduce template parameter %qD"
msgstr "得到 %d 個範本åƒæ•¸ï¼Œç‚º %q#D"
-#: cp/pt.c:5466
+#: cp/pt.c:5480
#, gcc-internal-format
msgid " types %qT and %qT have incompatible cv-qualifiers"
msgstr ""
-#: cp/pt.c:5475
+#: cp/pt.c:5489
#, fuzzy, gcc-internal-format
#| msgid "comparison between types %q#T and %q#T"
msgid " mismatched types %qT and %qT"
msgstr "在類型 %q#T 和 %q#T 間比較"
-#: cp/pt.c:5484
+#: cp/pt.c:5498
#, gcc-internal-format
msgid " template parameter %qD is not a parameter pack, but argument %qD is"
msgstr ""
-#: cp/pt.c:5495
+#: cp/pt.c:5509
#, fuzzy, gcc-internal-format
#| msgid "template argument %qE involves template parameter(s)"
msgid " template argument %qE does not match pointer-to-member constant %qE"
msgstr "範本引數 %qE 混雜了範本åƒæ•¸"
-#: cp/pt.c:5505
+#: cp/pt.c:5519
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a base of %qT"
msgid " %qE is not equivalent to %qE"
msgstr "%qT ä¸æ˜¯ %qT 的基礎類別"
-#: cp/pt.c:5514
+#: cp/pt.c:5528
#, fuzzy, gcc-internal-format
#| msgid "Inconsistent ranks for operator at %L and %L"
msgid " inconsistent parameter pack deduction with %qT and %qT"
msgstr "%L å’Œ %L 處的é‹ç®—元秩ä¸ä¸€è‡´"
-#: cp/pt.c:5526
+#: cp/pt.c:5540
#, gcc-internal-format
msgid " deduced conflicting types for parameter %qT (%qT and %qT)"
msgstr ""
-#: cp/pt.c:5530
+#: cp/pt.c:5544
#, gcc-internal-format
msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)"
msgstr ""
-#: cp/pt.c:5541
+#: cp/pt.c:5555
#, fuzzy, gcc-internal-format
#| msgid "partial specialization %qT does not specialize any template arguments"
msgid " variable-sized array type %qT is not a valid template argument"
msgstr "部分特例化 %qT 並未特例化任何範本åƒæ•¸"
-#: cp/pt.c:5552
+#: cp/pt.c:5566
#, fuzzy, gcc-internal-format
#| msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgid " member function type %qT is not a valid template argument"
msgstr "敘述函å¼ã€Œ%sã€åœ¨ %L 處ä¸å…許åšç‚ºå¯¦éš›å¼•æ•¸"
-#: cp/pt.c:5585
+#: cp/pt.c:5599
#, fuzzy, gcc-internal-format
#| msgid "cannot convert type %qT to type %qT"
msgid " cannot convert %qE (type %qT) to type %qT"
msgstr "ä¸èƒ½å°‡é¡žåž‹ %qT 轉æ›ç‚ºé¡žåž‹ %qT"
-#: cp/pt.c:5598
+#: cp/pt.c:5612
#, fuzzy, gcc-internal-format
#| msgid "%qT is an ambiguous base of %qT"
msgid " %qT is an ambiguous base class of %qT"
msgstr "%qT 是 %qT 的有歧義的基礎類別"
-#: cp/pt.c:5602
+#: cp/pt.c:5616
#, fuzzy, gcc-internal-format
#| msgid "type %qT is not derived from type %qT"
msgid " %qT is not derived from %qT"
msgstr "é¡žåž‹ %qT ä¸æ˜¯ç”±é¡žåž‹ %qT è¡ç”Ÿçš„"
-#: cp/pt.c:5613
+#: cp/pt.c:5627
#, gcc-internal-format
msgid " template parameters of a template template argument are inconsistent with other deduced template arguments"
msgstr ""
-#: cp/pt.c:5623
+#: cp/pt.c:5637
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid " can't deduce a template for %qT from non-template type %qT"
msgstr "ä¸èƒ½å°‡æŒ‡æ¨™ %s 到ä¸å®Œå…¨çš„é¡žåž‹ %qT"
-#: cp/pt.c:5633
+#: cp/pt.c:5647
#, fuzzy, gcc-internal-format
#| msgid "argument of type %qT does not match %qT"
msgid " template argument %qE does not match %qD"
msgstr "引數類型為 %qT,與 %qT ä¸åŒ¹é…"
-#: cp/pt.c:5642
+#: cp/pt.c:5656
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid " could not resolve address from overloaded function %qE"
msgstr "%s 無法解æžå¤šè¼‰åŒ–函å¼ä½å€"
-#: cp/pt.c:5681
+#: cp/pt.c:5695
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為字é¢å­—串ä¸èƒ½ç”¨åœ¨æ­¤ä¸Šä¸‹æ–‡ä¸­"
-#: cp/pt.c:5818
+#: cp/pt.c:5832
#, fuzzy, gcc-internal-format
#| msgid "default argument for %q#D has type %qT"
msgid "in template argument for type %qT "
msgstr "%q#D çš„é è¨­å¼•æ•¸é¡žåž‹ç‚º %qT"
-#: cp/pt.c:5860
+#: cp/pt.c:5874
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a lvalue"
msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為它ä¸æ˜¯ä¸€å€‹å·¦å€¼"
-#: cp/pt.c:5878
+#: cp/pt.c:5892
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a lvalue"
msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為它ä¸æ˜¯ä¸€å€‹å·¦å€¼"
-#: cp/pt.c:5885
+#: cp/pt.c:5899
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為物件 %qD 沒有外部連çµ"
-#: cp/pt.c:5892
+#: cp/pt.c:5906
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為物件 %qD 沒有外部連çµ"
-#: cp/pt.c:5922
+#: cp/pt.c:5936
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為 cv é™å®šè¡çª"
-#: cp/pt.c:5929
+#: cp/pt.c:5943
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a lvalue"
msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為它ä¸æ˜¯ä¸€å€‹å·¦å€¼"
-#: cp/pt.c:5946
+#: cp/pt.c:5960
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because it is not a constant pointer"
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為它ä¸æ˜¯ä¸€å€‹å¸¸æ•¸æŒ‡æ¨™"
-#: cp/pt.c:5955
+#: cp/pt.c:5969
#, fuzzy, gcc-internal-format
#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為物件 %qD 沒有外部連çµ"
-#: cp/pt.c:5963
+#: cp/pt.c:5977
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為物件 %qD 沒有外部連çµ"
-#: cp/pt.c:6000
+#: cp/pt.c:6014
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:6014
+#: cp/pt.c:6028
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is a pointer"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為它是一個指標"
-#: cp/pt.c:6016
+#: cp/pt.c:6030
#, gcc-internal-format
msgid "try using %qE instead"
msgstr "嘗試使用 %qE 代替"
-#: cp/pt.c:6054 cp/pt.c:6083
+#: cp/pt.c:6068 cp/pt.c:6097
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr "%qE ä¸æ˜¯é¡žåž‹ %qT 的有效範本引數,因為它的類型是 %qT"
-#: cp/pt.c:6060
+#: cp/pt.c:6074
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr "此上下文中ä¸å…許標準轉æ›"
-#: cp/pt.c:6370
+#: cp/pt.c:6384
#, fuzzy, gcc-internal-format
#| msgid "applying attributes to template parameters is not implemented"
msgid "ignoring attributes on template argument %qT"
msgstr "將屬性套用到範本åƒæ•¸å°šæœªå¯¦ä½œ"
-#: cp/pt.c:6428
+#: cp/pt.c:6442
#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
msgstr ""
-#: cp/pt.c:6456
+#: cp/pt.c:6471
#, fuzzy, gcc-internal-format
#| msgid "invalid use of constructor as a template"
msgid "invalid use of destructor %qE as a type"
msgstr "將建構å¼åšç‚ºç¯„本用法無效"
-#: cp/pt.c:6461
+#: cp/pt.c:6476
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr "需è¦ä½¿ç”¨æŸå€‹ç¯„本åƒæ•¸çš„é¡žåž‹æˆå“¡æ™‚,請使用 %<typename %E%>"
-#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542
+#: cp/pt.c:6492 cp/pt.c:6511 cp/pt.c:6559
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr "引數 %d çš„é¡žåž‹/值ä¸åŒ¹é…,在 %qD 的範本åƒæ•¸æ¸…單中"
-#: cp/pt.c:6481
+#: cp/pt.c:6496
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr " 需è¦ä¸€å€‹ %qT 類型的常數,å»çµ¦å‡ºäº† %qT"
-#: cp/pt.c:6485
+#: cp/pt.c:6500
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr " 需è¦ä¸€å€‹é¡žåˆ¥ç¯„本,å»çµ¦å‡ºäº† %qE"
-#: cp/pt.c:6487
+#: cp/pt.c:6502
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr " 需è¦ä¸€å€‹é¡žåž‹ï¼Œå»çµ¦å‡ºäº† %qE"
-#: cp/pt.c:6500
+#: cp/pt.c:6515
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr " 需è¦ä¸€å€‹é¡žåž‹ï¼Œå»çµ¦å‡ºäº† %qT"
-#: cp/pt.c:6502
+#: cp/pt.c:6517
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr " 需è¦ä¸€å€‹é¡žåˆ¥ç¯„本,å»çµ¦å‡ºäº† %qT"
-#: cp/pt.c:6545
+#: cp/pt.c:6562
#, fuzzy, gcc-internal-format
#| msgid " expected a template of type %qD, got %qD"
msgid " expected a template of type %qD, got %qT"
@@ -35476,77 +35536,77 @@ msgstr " 需è¦ä¸€å€‹é¡žåž‹ç‚º %qD 的範本,å»çµ¦å‡ºäº† %qD"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:6578
+#: cp/pt.c:6595
#, fuzzy, gcc-internal-format
#| msgid "type mismatch in conditional expression"
msgid "type mismatch in nontype parameter pack"
msgstr "æ¢ä»¶é‹ç®—å¼ä¸­é¡žåž‹ä¸åŒ¹é…"
-#: cp/pt.c:6600
+#: cp/pt.c:6617
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr "ä¸èƒ½å°‡ç¯„本åƒæ•¸å¾ž %qE 轉æ›åˆ° %qT"
-#: cp/pt.c:6666 cp/pt.c:6815
+#: cp/pt.c:6683 cp/pt.c:6847
#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr "範本åƒæ•¸æ•¸ç›®ä¸æ­£ç¢º(ä¸æ‡‰æ˜¯ %d 個而應是 %d 個)"
-#: cp/pt.c:6811
+#: cp/pt.c:6843
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "wrong number of template arguments (%d, should be %d)"
msgid "wrong number of template arguments (%d, should be %d or more)"
msgstr "範本åƒæ•¸æ•¸ç›®ä¸æ­£ç¢º(ä¸æ‡‰æ˜¯ %d 個而應是 %d 個)"
-#: cp/pt.c:6819
+#: cp/pt.c:6851
#, gcc-internal-format
msgid "provided for %q+D"
msgstr "æ供給 %q+D"
-#: cp/pt.c:6900
+#: cp/pt.c:6932
#, gcc-internal-format, gfc-internal-format
msgid "template argument %d is invalid"
msgstr "範本åƒæ•¸ %d 無效"
-#: cp/pt.c:7089
+#: cp/pt.c:7121
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a function template"
msgid "%q#D is not a function template"
msgstr "%qD ä¸æ˜¯ä¸€å€‹å‡½å¼ç¯„本"
-#: cp/pt.c:7253
+#: cp/pt.c:7285
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr "éžç¯„本類型 %qT åšç‚ºç¯„本"
-#: cp/pt.c:7255
+#: cp/pt.c:7287
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr "å°æ–¼ç¯„本宣告 %q+D"
-#: cp/pt.c:8060
+#: cp/pt.c:8092
#, fuzzy
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
msgstr "範本實體化深度超éŽæœ€å¤§å€¼ %d(使用 use -ftemplate-depth-NN 來增大最大值),在實體化 %qD 時"
-#: cp/pt.c:8064
+#: cp/pt.c:8096
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
msgstr "範本實體化深度超éŽæœ€å¤§å€¼ %d(使用 use -ftemplate-depth-NN 來增大最大值),在實體化 %qD 時"
-#: cp/pt.c:9411
+#: cp/pt.c:9443
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:9415
+#: cp/pt.c:9447
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:10541
+#: cp/pt.c:10573
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr "%q+D 按類型 %qT 實體化"
@@ -35564,270 +35624,270 @@ msgstr "%q+D 按類型 %qT 實體化"
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:10697
+#: cp/pt.c:10731
#, fuzzy, gcc-internal-format
#| msgid "variable %qD has initializer but incomplete type"
msgid "variable %qD has function type"
msgstr "變數 %qD 有åˆå§‹å€¼è¨­å®šä½†é¡žåž‹ä¸å®Œå…¨"
-#: cp/pt.c:10866
+#: cp/pt.c:10900
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr "無效的åƒæ•¸é¡žåž‹ %qT"
-#: cp/pt.c:10868
+#: cp/pt.c:10902
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr "在宣告 %q+D 中"
-#: cp/pt.c:10945
+#: cp/pt.c:10979
#, gcc-internal-format
msgid "function returning an array"
msgstr "函å¼å›žå‚³äº†ä¸€å€‹é™£åˆ—"
-#: cp/pt.c:10947
+#: cp/pt.c:10981
#, gcc-internal-format
msgid "function returning a function"
msgstr "函å¼å›žå‚³äº†ä¸€å€‹å‡½å¼"
-#: cp/pt.c:10977
+#: cp/pt.c:11011
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr "產生éžé¡žåˆ¥é¡žåž‹ %qT çš„æˆå“¡å‡½å¼æŒ‡æ¨™"
-#: cp/pt.c:11518
+#: cp/pt.c:11552
#, gcc-internal-format
msgid "forming reference to void"
msgstr "å½¢æˆå° void çš„åƒç…§"
-#: cp/pt.c:11520
+#: cp/pt.c:11554
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming pointer to reference type %qT"
msgstr "å½¢æˆ %s,åƒç…§åƒç…§é¡žåž‹ %qT"
-#: cp/pt.c:11522
+#: cp/pt.c:11556
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "forming reference to reference type %qT"
msgstr "å½¢æˆ %s,åƒç…§åƒç…§é¡žåž‹ %qT"
-#: cp/pt.c:11571
+#: cp/pt.c:11605
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr "產生éžé¡žåˆ¥é¡žåž‹ %qT çš„æˆå“¡æŒ‡æ¨™"
-#: cp/pt.c:11577
+#: cp/pt.c:11611
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr "產生åƒç…§é¡žåž‹ %qT çš„æˆå“¡æŒ‡æ¨™"
-#: cp/pt.c:11583
+#: cp/pt.c:11617
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr "建立åƒç…§ void é¡žåž‹çš„æˆå“¡æŒ‡æ¨™"
-#: cp/pt.c:11645
+#: cp/pt.c:11679
#, gcc-internal-format
msgid "creating array of %qT"
msgstr "產生 %qT 的陣列"
-#: cp/pt.c:11651
+#: cp/pt.c:11685
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr "產生抽象類型 %qT 的陣列"
-#: cp/pt.c:11680
+#: cp/pt.c:11714
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr "%qT ä¸æ˜¯é¡žåˆ¥ã€çµæ§‹æˆ–è¯åˆé¡žåž‹"
-#: cp/pt.c:11717
+#: cp/pt.c:11751
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr "%qT 被解æžåˆ°éžåˆ—舉類型 %qT"
-#: cp/pt.c:11725
+#: cp/pt.c:11759
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr "%qT 被解æžåˆ°éžé¡žåˆ¥é¡žåž‹ %qT"
-#: cp/pt.c:11842
+#: cp/pt.c:11876
#, gcc-internal-format
msgid "use of %qs in template"
msgstr "在範本中使用 %qs"
-#: cp/pt.c:11978
+#: cp/pt.c:12016
#, fuzzy, gcc-internal-format
#| msgid "qualified type %qT does not match destructor name ~%qT"
msgid "qualifying type %qT does not match destructor name ~%qT"
msgstr "é™å®šçš„é¡žåž‹ %qT ä¸åŒ¹é…解構函å¼å ~%qT"
-#: cp/pt.c:11993
+#: cp/pt.c:12031
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr "ä¾è³´å %qE 被解æžç‚ºéžé¡žåž‹ï¼Œä½†å¯¦é«”化å»ç”¢ç”Ÿäº†ä¸€å€‹é¡žåž‹"
-#: cp/pt.c:11995
+#: cp/pt.c:12033
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr "如果您想指定類型,請使用 %<typename %E%>"
-#: cp/pt.c:12148
+#: cp/pt.c:12186
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr "ä½¿ç”¨ç„¡æ•ˆæ¬„ä½ %qD"
-#: cp/pt.c:12503 cp/pt.c:13313
+#: cp/pt.c:12541 cp/pt.c:13351
#, fuzzy, gcc-internal-format
#| msgid "invalid use of void expression"
msgid "invalid use of pack expansion expression"
msgstr "å° void é‹ç®—å¼çš„無效使用"
-#: cp/pt.c:12507 cp/pt.c:13317
+#: cp/pt.c:12545 cp/pt.c:13355
#, fuzzy, gcc-internal-format
#| msgid "%<...%> as arguments.)"
msgid "use %<...%> to expand argument pack"
msgstr "%<...%> åšç‚ºå¼•æ•¸ã€‚)"
-#: cp/pt.c:13893
+#: cp/pt.c:13931
#, gcc-internal-format
msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
msgstr ""
-#: cp/pt.c:13902
+#: cp/pt.c:13940
#, gcc-internal-format
msgid "declarations in dependent base %qT are not found by unqualified lookup"
msgstr ""
-#: cp/pt.c:13907
+#: cp/pt.c:13945
#, gcc-internal-format
msgid "use %<this->%D%> instead"
msgstr ""
-#: cp/pt.c:13910
+#: cp/pt.c:13948
#, fuzzy, gcc-internal-format
#| msgid "%<%T::%D%> is not a type"
msgid "use %<%T::%D%> instead"
msgstr "%<%T::%D%> ä¸æ˜¯ä¸€å€‹é¡žåž‹"
-#: cp/pt.c:13914
+#: cp/pt.c:13952
#, fuzzy, gcc-internal-format
#| msgid "%q+D declared inline after its definition"
msgid "%q+D declared here, later in the translation unit"
msgstr "%q+D çš„å…§è¯å®£å‘Šå‡ºç¾åœ¨å…¶å®šç¾©ä¹‹å¾Œ"
-#: cp/pt.c:14147
+#: cp/pt.c:14185
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr "%qT æ—¢ä¸æ˜¯é¡žåˆ¥ä¹Ÿä¸æ˜¯å‘½å空間"
-#: cp/pt.c:14150
+#: cp/pt.c:14188
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr "%qD æ—¢ä¸æ˜¯é¡žåˆ¥ä¹Ÿä¸æ˜¯å‘½å空間"
-#: cp/pt.c:14442
+#: cp/pt.c:14480
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr "%qT 是/使用了匿åé¡žåž‹"
-#: cp/pt.c:14444
+#: cp/pt.c:14482
#, fuzzy, gcc-internal-format
#| msgid "default argument for %q#D has type %qT"
msgid "template argument for %qD uses local type %qT"
msgstr "%q#D çš„é è¨­å¼•æ•¸é¡žåž‹ç‚º %qT"
-#: cp/pt.c:14454
+#: cp/pt.c:14492
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr "%qT 是一個å¯è®Šé¡žåž‹"
-#: cp/pt.c:14465
+#: cp/pt.c:14503
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr "æ•´åž‹é‹ç®—å¼ %qE ä¸æ˜¯å¸¸æ•¸"
-#: cp/pt.c:14483
+#: cp/pt.c:14521
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr " 試圖實體化 %qD"
-#: cp/pt.c:17804
+#: cp/pt.c:17842
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr "%q#T 的類別範本實體化有歧義"
-#: cp/pt.c:17808
+#: cp/pt.c:17846
#, gcc-internal-format
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:17832 cp/pt.c:17915
+#: cp/pt.c:17870 cp/pt.c:17953
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr "å°éžç¯„本 %q#D 的明確實體化"
-#: cp/pt.c:17847
+#: cp/pt.c:17885
#, fuzzy, gcc-internal-format
#| msgid "%q#D is not a non-static data member of %qT"
msgid "%qD is not a static data member of a class template"
msgstr "%q#D ä¸æ˜¯ %qT çš„éžéœæ…‹è³‡æ–™æˆå“¡"
-#: cp/pt.c:17853 cp/pt.c:17910
+#: cp/pt.c:17891 cp/pt.c:17948
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr "沒有找到與 %qD 匹é…的範本"
-#: cp/pt.c:17858
+#: cp/pt.c:17896
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template type %qT"
msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr "明確實體化éžç¯„本類型 %qT"
-#: cp/pt.c:17866
+#: cp/pt.c:17904
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr "å° %q#D 的明確實體化"
-#: cp/pt.c:17902
+#: cp/pt.c:17940
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr "å° %q#D é‡è¤‡çš„明確實體化"
-#: cp/pt.c:17925 cp/pt.c:18022
+#: cp/pt.c:17963 cp/pt.c:18060
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids the use of %<extern%> on explicit instantiations"
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr "ISO C++ ä¸å…許在明確實體化時使用 %<extern%>"
-#: cp/pt.c:17930 cp/pt.c:18039
+#: cp/pt.c:17968 cp/pt.c:18077
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr "為範本實體化化套用了存儲類型 %qD"
-#: cp/pt.c:17998
+#: cp/pt.c:18036
#, fuzzy, gcc-internal-format
#| msgid "explicit instantiation of non-template %q#D"
msgid "explicit instantiation of non-class template %qD"
msgstr "å°éžç¯„本 %q#D 的明確實體化"
-#: cp/pt.c:18000
+#: cp/pt.c:18038
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr "明確實體化éžç¯„本類型 %qT"
-#: cp/pt.c:18009
+#: cp/pt.c:18047
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr "%q#T 的明確實體化出ç¾åœ¨ç¯„本定義之å‰"
-#: cp/pt.c:18027
+#: cp/pt.c:18065
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr "ISO C++ ä¸å…許在明確實體化時使用 %qE"
-#: cp/pt.c:18073
+#: cp/pt.c:18111
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "å° %q#T é‡è¤‡çš„明確實體化"
@@ -35839,35 +35899,35 @@ msgstr "å° %q#T é‡è¤‡çš„明確實體化"
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:18627
+#: cp/pt.c:18665
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr "明確實體化 %qD 時沒有å¯ç”¨çš„定義"
-#: cp/pt.c:18803
+#: cp/pt.c:18841
#, fuzzy, gcc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth-NN to increase the maximum)"
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
msgstr "範本實體化深度超éŽäº†æœ€å¤§å€¼ %d,當實體化 %q+D 時,å¯èƒ½æ˜¯ç”±æ–¼ç”¢ç”Ÿè™›å‡½å¼è¡¨æ‰€è‡´(使用 -ftemplate-depth-NN 來增大最大值)"
-#: cp/pt.c:19175
+#: cp/pt.c:19221
#, fuzzy, gcc-internal-format
#| msgid "invalid catch parameter"
msgid "invalid template non-type parameter"
msgstr "無效的 catch åƒæ•¸"
-#: cp/pt.c:19177
+#: cp/pt.c:19223
#, fuzzy, gcc-internal-format
#| msgid "%q#T is not a valid type for a template constant parameter"
msgid "%q#T is not a valid type for a template non-type parameter"
msgstr "%q#T ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„範本常數åƒæ•¸é¡žåž‹"
-#: cp/pt.c:20263
+#: cp/pt.c:20309
#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
msgstr ""
-#: cp/pt.c:20322
+#: cp/pt.c:20367
#, fuzzy, gcc-internal-format
#| msgid "variable %qD may not have been initialized"
msgid "variable %q#D with %<auto%> type used in its own initializer"
@@ -35876,13 +35936,13 @@ msgstr "變數 %qD å¯èƒ½æœªç¶“åˆå§‹åŒ–"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
-#: cp/pt.c:20354
+#: cp/pt.c:20399
#, fuzzy, gcc-internal-format
#| msgid "unable to emulate %qs"
msgid "unable to deduce %qT from %qE"
msgstr "無法列舉 %qs"
-#: cp/pt.c:20365
+#: cp/pt.c:20410
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr ""
@@ -36086,7 +36146,7 @@ msgstr "在頂層使用 %<this%> 無效"
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr "å½è§£æ§‹å‡½å¼åçš„é™å®šä½œç”¨æ¬„ä½ç„¡æ•ˆ"
-#: cp/semantics.c:2288 cp/typeck.c:2384
+#: cp/semantics.c:2288 cp/typeck.c:2392
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr "é™å®šçš„é¡žåž‹ %qT ä¸åŒ¹é…解構函å¼å ~%qT"
@@ -36127,486 +36187,486 @@ msgstr "在範本åƒæ•¸æ¸…單中定義了 %q#T"
msgid "invalid definition of qualified type %qT"
msgstr "å°é™å®šé¡žåž‹ %qT 的定義無效"
-#: cp/semantics.c:2778
+#: cp/semantics.c:2775
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr "無效的基礎類別"
-#: cp/semantics.c:2999 cp/semantics.c:8817
+#: cp/semantics.c:2996 cp/semantics.c:8816
#, fuzzy, gcc-internal-format
#| msgid "%qD is not a template"
msgid "%qD is not captured"
msgstr "%qD ä¸æ˜¯ä¸€å€‹ç¯„本"
-#: cp/semantics.c:3005
+#: cp/semantics.c:3002
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr "在包å«å‡½å¼ä¸­ä½¿ç”¨ %<auto%> 變數"
-#: cp/semantics.c:3006
+#: cp/semantics.c:3003
#, gcc-internal-format
msgid "use of parameter from containing function"
msgstr "在包å«å‡½å¼ä¸­ä½¿ç”¨åƒæ•¸"
-#: cp/semantics.c:3007
+#: cp/semantics.c:3004
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr " %q+#D 已在此宣告éŽ"
-#: cp/semantics.c:3018
+#: cp/semantics.c:3015
#, fuzzy, gcc-internal-format
#| msgid "use of parameter from containing function"
msgid "use of parameter %qD outside function body"
msgstr "在包å«å‡½å¼ä¸­ä½¿ç”¨åƒæ•¸"
-#: cp/semantics.c:3055
+#: cp/semantics.c:3052
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr "範本åƒæ•¸ %qD(類型為 %qT)ä¸å…許出ç¾åœ¨æ•´æ•¸é‹ç®—å¼ä¸­ï¼Œå› ç‚ºå®ƒçš„é¡žåž‹ä¸æ˜¯æ•´æ•¸æˆ–列舉"
-#: cp/semantics.c:3215
+#: cp/semantics.c:3212
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr "命å空間 %qD åšç‚ºé‹ç®—å¼"
-#: cp/semantics.c:3220
+#: cp/semantics.c:3217
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr "將類別範本 %qT åšç‚ºé‹ç®—å¼"
#. Ambiguous reference to base members.
-#: cp/semantics.c:3226
+#: cp/semantics.c:3223
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr "åœ¨å¤šç¹¼æ‰¿ç¶²æ ¼ä¸­å° %qD çš„å­˜å–有歧義"
-#: cp/semantics.c:3249
+#: cp/semantics.c:3246
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr "%qD ä¸èƒ½å‡ºç¾åœ¨å¸¸æ•¸é‹ç®—å¼ä¸­"
-#: cp/semantics.c:3370
+#: cp/semantics.c:3367
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr "%qE çš„é¡žåž‹ä¸æ˜Ž"
-#: cp/semantics.c:3398
+#: cp/semantics.c:3395
#, fuzzy, gcc-internal-format
#| msgid "%qT is not a template type"
msgid "%qT is not an enumeration type"
msgstr "%qT ä¸æ˜¯ä¸€å€‹ç¯„本類型"
#. Parameter packs can only be used in templates
-#: cp/semantics.c:3546
+#: cp/semantics.c:3543
#, fuzzy, gcc-internal-format
#| msgid "storage class specifiers invalid in parameter declarations"
msgid "Parameter pack __bases only valid in template declaration"
msgstr "為åƒæ•¸å®£å‘ŠæŒ‡å®šäº†ç„¡æ•ˆçš„存儲類別"
-#: cp/semantics.c:3566
+#: cp/semantics.c:3563
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3577
+#: cp/semantics.c:3574
#, fuzzy, gcc-internal-format
#| msgid "invalid use of non-static member function %qD"
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr "å°éžéœæ…‹æˆå“¡å‡½å¼ %qD 的使用無效"
-#: cp/semantics.c:3996
+#: cp/semantics.c:3993
#, fuzzy, gcc-internal-format
#| msgid "%qT is not an accessible base of %qT"
msgid "%qD is not a variable in clause %qs"
msgstr "%qT 是 %qT 的一個ä¸å¯å­˜å–的基礎類別"
-#: cp/semantics.c:4005 cp/semantics.c:4027 cp/semantics.c:4049
+#: cp/semantics.c:4002 cp/semantics.c:4024 cp/semantics.c:4046
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:4019
+#: cp/semantics.c:4016
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: cp/semantics.c:4041
+#: cp/semantics.c:4038
#, fuzzy, gcc-internal-format
#| msgid "instance variable %qs is declared private"
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr "實體變數 %qs 被宣告為ç§æœ‰çš„"
-#: cp/semantics.c:4083
+#: cp/semantics.c:4080
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:4104
+#: cp/semantics.c:4101
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:4247
+#: cp/semantics.c:4244
#, fuzzy, gcc-internal-format
#| msgid "forming %s to reference type %qT"
msgid "%qE has reference type for %qs"
msgstr "å½¢æˆ %s,åƒç…§åƒç…§é¡žåž‹ %qT"
-#: cp/semantics.c:4323
+#: cp/semantics.c:4320
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:4337
+#: cp/semantics.c:4334
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:4482
+#: cp/semantics.c:4479
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
msgstr ""
#. Report the error.
-#: cp/semantics.c:5135
+#: cp/semantics.c:5132
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CRIS-port assertion failed: "
msgid "static assertion failed: %s"
msgstr "CRIS-port 判定語錯誤:"
-#: cp/semantics.c:5138
+#: cp/semantics.c:5135
#, fuzzy, gcc-internal-format
#| msgid "non-static declaration of %q+D follows static declaration"
msgid "non-constant condition for static assertion"
msgstr "å° %q+D çš„éœæ…‹å®£å‘Šå‡ºç¾åœ¨éžéœæ…‹å®£å‘Šä¹‹å¾Œ"
-#: cp/semantics.c:5167
+#: cp/semantics.c:5164
#, fuzzy, gcc-internal-format
#| msgid "Argument of SELECT statement at %L must be a scalar expression"
msgid "argument to decltype must be an expression"
msgstr "%L 處 SELECT 敘述中的引數必須為標é‡"
-#: cp/semantics.c:5196
+#: cp/semantics.c:5193
#, fuzzy, gcc-internal-format
#| msgid "%s cannot resolve address of overloaded function"
msgid "decltype cannot resolve address of overloaded function"
msgstr "%s 無法解æžå¤šè¼‰åŒ–函å¼ä½å€"
-#: cp/semantics.c:5519
+#: cp/semantics.c:5516
#, gcc-internal-format
msgid "__is_convertible_to"
msgstr ""
-#: cp/semantics.c:5636
+#: cp/semantics.c:5633
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:5706
+#: cp/semantics.c:5703
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid type for parameter %d of constexpr function %q+#D"
msgstr "å‡½å¼ %q+#D 的抽象回傳類型無效"
-#: cp/semantics.c:5720
+#: cp/semantics.c:5717
#, fuzzy, gcc-internal-format
#| msgid "invalid abstract return type for function %q+#D"
msgid "invalid return type %qT of constexpr function %q+D"
msgstr "å‡½å¼ %q+#D 的抽象回傳類型無效"
-#: cp/semantics.c:5742
+#: cp/semantics.c:5739
#, fuzzy, gcc-internal-format
#| msgid "type %qs has virtual member functions"
msgid "%q#T has virtual base classes"
msgstr "é¡žåž‹ %qs 有虛æˆå“¡å‡½å¼"
-#: cp/semantics.c:5879
+#: cp/semantics.c:5876
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
msgstr ""
-#: cp/semantics.c:6042
+#: cp/semantics.c:6039
#, gcc-internal-format
msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member"
msgstr ""
-#: cp/semantics.c:6080
+#: cp/semantics.c:6077
#, fuzzy, gcc-internal-format
#| msgid "%Juninitialized member %qD with %<const%> type %qT"
msgid "uninitialized member %qD in %<constexpr%> constructor"
msgstr "%J未åˆå§‹åŒ–çš„æˆå“¡ %qD 具有 %<const%> é¡žåž‹ %qT"
-#: cp/semantics.c:6111
+#: cp/semantics.c:6108
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
msgstr ""
-#: cp/semantics.c:6166
+#: cp/semantics.c:6163
#, fuzzy, gcc-internal-format
#| msgid "%q+D is normally a non-static function"
msgid "%q+D is not usable as a constexpr function because:"
msgstr "%q+D 一般是一個éžéœæ…‹çš„函å¼"
-#: cp/semantics.c:6490
+#: cp/semantics.c:6487
#, fuzzy, gcc-internal-format
#| msgid "friend declaration does not name a class or function"
msgid "expression %qE does not designate a constexpr function"
msgstr "夥伴宣告沒有指定類別或函å¼å"
-#: cp/semantics.c:6504 cp/semantics.c:8087
+#: cp/semantics.c:6501 cp/semantics.c:8085
#, fuzzy, gcc-internal-format
#| msgid "call to non-function %qD"
msgid "call to non-constexpr function %qD"
msgstr "呼å«éžå‡½å¼çš„ %qD"
#. The definition of fun was somehow unsuitable.
-#: cp/semantics.c:6532
+#: cp/semantics.c:6529
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD called in a constant expression"
msgstr "%qD ä¸èƒ½å‡ºç¾åœ¨å¸¸æ•¸é‹ç®—å¼ä¸­"
-#: cp/semantics.c:6536
+#: cp/semantics.c:6533
#, fuzzy, gcc-internal-format
#| msgid "%q+D was used with no prototype before its definition"
msgid "%qD used before its definition"
msgstr "%q+D 定義å‰æ²’有原型"
-#: cp/semantics.c:6570
+#: cp/semantics.c:6567
#, fuzzy, gcc-internal-format
#| msgid "protocol %qs has circular dependency"
msgid "call has circular dependency"
msgstr "å”定 %qs 存在循環ä¾è³´"
-#: cp/semantics.c:6578
+#: cp/semantics.c:6575
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
msgstr "範本實體化深度超éŽæœ€å¤§å€¼ %d(使用 use -ftemplate-depth-NN 來增大最大值),在實體化 %qD 時"
-#: cp/semantics.c:6656
+#: cp/semantics.c:6653
#, fuzzy, gcc-internal-format
#| msgid "%s cannot appear in a constant-expression"
msgid "%q+E is not a constant expression"
msgstr "%s ä¸èƒ½å‡ºç¾åœ¨å¸¸æ•¸é‹ç®—å¼ä¸­"
-#: cp/semantics.c:6796
+#: cp/semantics.c:6793
#, fuzzy, gcc-internal-format
#| msgid "array subscript is not an integer"
msgid "array subscript out of bound"
msgstr "陣列下標ä¸æ˜¯ä¸€å€‹æ•´æ•¸"
-#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538
+#: cp/semantics.c:6839 cp/semantics.c:6899 cp/semantics.c:7536
#, fuzzy, gcc-internal-format
#| msgid "%s cannot appear in a constant-expression"
msgid "%qE is not a constant expression"
msgstr "%s ä¸èƒ½å‡ºç¾åœ¨å¸¸æ•¸é‹ç®—å¼ä¸­"
-#: cp/semantics.c:6848
+#: cp/semantics.c:6845
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "mutable %qD is not usable in a constant expression"
msgstr "%qD ä¸èƒ½å‡ºç¾åœ¨å¸¸æ•¸é‹ç®—å¼ä¸­"
-#: cp/semantics.c:6863
+#: cp/semantics.c:6860
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
msgstr ""
-#: cp/semantics.c:7403
+#: cp/semantics.c:7401
#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
msgstr ""
-#: cp/semantics.c:7434
+#: cp/semantics.c:7432
#, fuzzy, gcc-internal-format
#| msgid "size of array %qD is not an integral constant-expression"
msgid "the value of %qD is not usable in a constant expression"
msgstr "陣列 %qD 的大å°ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸é‹ç®—å¼"
-#: cp/semantics.c:7441
+#: cp/semantics.c:7439
#, fuzzy, gcc-internal-format
#| msgid "no field %qD found in union being initialized"
msgid "%qD used in its own initializer"
msgstr "在åˆå§‹åŒ–çš„è¯åˆä¸­æ‰¾ä¸åˆ°æ¬„ä½ %qD"
-#: cp/semantics.c:7446
+#: cp/semantics.c:7444
#, fuzzy, gcc-internal-format
#| msgid "%q+D is not a function,"
msgid "%q#D is not const"
msgstr "%q+D ä¸æ˜¯ä¸€å€‹å‡½å¼ï¼Œ"
-#: cp/semantics.c:7449
+#: cp/semantics.c:7447
#, fuzzy, gcc-internal-format
#| msgid "%q+#D is private"
msgid "%q#D is volatile"
msgstr "%q+#D 是ç§æœ‰çš„"
-#: cp/semantics.c:7453
+#: cp/semantics.c:7451
#, fuzzy, gcc-internal-format
#| msgid "%qD cannot appear in a constant-expression"
msgid "%qD was not initialized with a constant expression"
msgstr "%qD ä¸èƒ½å‡ºç¾åœ¨å¸¸æ•¸é‹ç®—å¼ä¸­"
-#: cp/semantics.c:7462
+#: cp/semantics.c:7460
#, fuzzy, gcc-internal-format
#| msgid "%qD was not declared in this scope"
msgid "%qD was not declared %<constexpr%>"
msgstr "%qD 在此作用欄ä½ä¸­å°šæœªå®£å‘Š"
-#: cp/semantics.c:7465
+#: cp/semantics.c:7463
#, fuzzy, gcc-internal-format
#| msgid "expression in new-declarator must have integral or enumeration type"
msgid "%qD does not have integral or enumeration type"
msgstr "new 宣告中的é‹ç®—å¼å¿…須具有整數或列舉類型"
-#: cp/semantics.c:7526 cp/semantics.c:8219
+#: cp/semantics.c:7524 cp/semantics.c:8217
#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:7554 cp/semantics.c:8357
+#: cp/semantics.c:7552 cp/semantics.c:8355
#, fuzzy, gcc-internal-format
#| msgid "enumeral and non-enumeral type in conditional expression"
msgid "temporary of non-literal type %qT in a constant expression"
msgstr "列舉和éžåˆ—舉類型一起出ç¾åœ¨æ¢ä»¶é‹ç®—å¼ä¸­"
-#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510
+#: cp/semantics.c:7800 cp/semantics.c:8259 cp/semantics.c:8509
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "expression %qE is not a constant-expression"
msgstr "æ•´åž‹é‹ç®—å¼ %qE ä¸æ˜¯å¸¸æ•¸"
-#: cp/semantics.c:7807
+#: cp/semantics.c:7805
#, fuzzy, gcc-internal-format
#| msgid "expected expression"
msgid "unexpected expression %qE of kind %s"
msgstr "需è¦é‹ç®—å¼"
-#: cp/semantics.c:7838
+#: cp/semantics.c:7836
#, gcc-internal-format
msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects"
msgstr ""
-#: cp/semantics.c:7851
+#: cp/semantics.c:7849
#, gcc-internal-format
msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression"
msgstr ""
-#: cp/semantics.c:8022
+#: cp/semantics.c:8020
#, gcc-internal-format
msgid "expression %qE has side-effects"
msgstr ""
-#: cp/semantics.c:8105
+#: cp/semantics.c:8103
#, gcc-internal-format
msgid "calling a member function of the object being constructed in a constant expression"
msgstr ""
-#: cp/semantics.c:8187
+#: cp/semantics.c:8185
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
msgstr ""
-#: cp/semantics.c:8273
+#: cp/semantics.c:8271
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
msgstr ""
-#: cp/semantics.c:8286
+#: cp/semantics.c:8284
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "difference of two pointer expressions is not a constant expression"
msgstr "陣列大å°ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸é‹ç®—å¼"
-#: cp/semantics.c:8305
+#: cp/semantics.c:8303
#, fuzzy, gcc-internal-format
#| msgid "integral expression %qE is not constant"
msgid "pointer comparison expression is not a constant expression"
msgstr "æ•´åž‹é‹ç®—å¼ %qE ä¸æ˜¯å¸¸æ•¸"
-#: cp/semantics.c:8406
+#: cp/semantics.c:8404
#, fuzzy, gcc-internal-format
#| msgid "size of array is not an integral constant-expression"
msgid "division by zero is not a constant-expression"
msgstr "陣列大å°ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸é‹ç®—å¼"
-#: cp/semantics.c:8518
+#: cp/semantics.c:8517
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "åˆå§‹å€¼è¨­å®šä¸­é™£åˆ—索引ä¸æ˜¯å¸¸æ•¸"
-#: cp/semantics.c:8524
+#: cp/semantics.c:8523
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unexpected end of file in '%s'"
msgid "unexpected AST of kind %s"
msgstr "「%sã€ä¸­éžé æœŸçš„檔案çµå°¾"
-#: cp/semantics.c:9014
+#: cp/semantics.c:9013
#, fuzzy, gcc-internal-format
#| msgid "cannot declare reference to %q#T"
msgid "cannot capture %qE by reference"
msgstr "ç„¡æ³•å®£å‘Šå° %q#T çš„åƒç…§"
-#: cp/semantics.c:9037
+#: cp/semantics.c:9036
#, gcc-internal-format
msgid "already captured %qD in lambda expression"
msgstr ""
-#: cp/semantics.c:9183
+#: cp/semantics.c:9182
#, fuzzy, gcc-internal-format
#| msgid "%<this%> is unavailable for static member functions"
msgid "%<this%> was not captured for this lambda function"
msgstr "éœæ…‹æˆå“¡å‡½å¼ä¸­ä¸èƒ½ä½¿ç”¨ %<this%>"
-#: cp/tree.c:1019
+#: cp/tree.c:1025
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr "%qV é™å®šç¬¦ä¸èƒ½å¥—用到 %qT 上"
-#: cp/tree.c:2802
+#: cp/tree.c:2805
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr "åªèƒ½ç‚º Java 類別定義套用 %qE 屬性"
-#: cp/tree.c:2831
+#: cp/tree.c:2834
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr "åªèƒ½ç‚ºé¡žåˆ¥å®šç¾©å¥—用 %qE 屬性"
-#: cp/tree.c:2837
+#: cp/tree.c:2840
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr "%qE å·²éŽæ™‚:g++ 的虛函å¼è¡¨ç¾åœ¨é è¨­èˆ‡ COM 相容"
-#: cp/tree.c:2861
+#: cp/tree.c:2864
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr "請求的 init_priority ä¸æ˜¯ä¸€å€‹æ•´æ•¸å¸¸æ•¸"
-#: cp/tree.c:2882
+#: cp/tree.c:2885
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
msgstr "åªèƒ½å°‡ %qE 屬性用於æŸå€‹é¡žåˆ¥çš„物件的檔案作用欄ä½å®šç¾©"
-#: cp/tree.c:2890
+#: cp/tree.c:2893
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr "請求的 init_priority 越界"
-#: cp/tree.c:2900
+#: cp/tree.c:2903
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr "請求的 init_priority ä¿ç•™ç‚ºå…§éƒ¨ä½¿ç”¨"
-#: cp/tree.c:2911
+#: cp/tree.c:2914
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr "%qE 屬性在此平å°ä¸Šä¸å—支æ´"
-#: cp/tree.c:3586
+#: cp/tree.c:3594
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_* check:在 %s 中失敗,於 %s:%d"
@@ -36709,486 +36769,492 @@ msgstr "ISO C++ ä¸å…許將 %qs 套用到函å¼é¡žåž‹çš„é‹ç®—å¼ä¸Š"
msgid "invalid use of non-static member function"
msgstr "å°éžéœæ…‹æˆå“¡å‡½å¼çš„使用無效"
-#: cp/typeck.c:2015
+#: cp/typeck.c:1883
+#, fuzzy, gcc-internal-format
+#| msgid "taking address of temporary"
+msgid "taking address of temporary array"
+msgstr "å–臨時變數的ä½å€"
+
+#: cp/typeck.c:2023
#, fuzzy, gcc-internal-format
#| msgid "deprecated conversion from string constant to %qT'"
msgid "deprecated conversion from string constant to %qT"
msgstr "從字串常數到 %qT 的轉æ›å·²éŽæ™‚"
-#: cp/typeck.c:2142 cp/typeck.c:2536
+#: cp/typeck.c:2150 cp/typeck.c:2549
#, fuzzy, gcc-internal-format
#| msgid "request for member %qD in %qE, which is of non-class type %qT"
msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
msgstr "å°æˆå“¡ %qD 的請求出ç¾åœ¨ %qE 中,而後者具有éžé¡žåˆ¥é¡žåž‹ %qT"
-#: cp/typeck.c:2146 cp/typeck.c:2540
+#: cp/typeck.c:2154 cp/typeck.c:2553
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr "å°æˆå“¡ %qD 的請求出ç¾åœ¨ %qE 中,而後者具有éžé¡žåˆ¥é¡žåž‹ %qT"
-#: cp/typeck.c:2176
+#: cp/typeck.c:2184
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr "å°éžéœæ…‹è³‡æ–™æˆå“¡ %qE 的使用無效"
-#: cp/typeck.c:2232
+#: cp/typeck.c:2240
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "å° NULL 物件éžéœæ…‹è³‡æ–™æˆå“¡ %qD çš„å­˜å–無效"
-#: cp/typeck.c:2235 cp/typeck.c:2266
+#: cp/typeck.c:2243 cp/typeck.c:2274
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(å¯èƒ½éŒ¯èª¤ä½¿ç”¨äº† %<offsetof%> 巨集)"
-#: cp/typeck.c:2263
+#: cp/typeck.c:2271
#, fuzzy, gcc-internal-format
#| msgid "invalid access to non-static data member %qD of NULL object"
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "å° NULL 物件éžéœæ…‹è³‡æ–™æˆå“¡ %qD çš„å­˜å–無效"
-#: cp/typeck.c:2396
+#: cp/typeck.c:2404
#, fuzzy, gcc-internal-format
#| msgid "qualified type %qT does not match destructor name ~%qT"
msgid "object type %qT does not match destructor name ~%qT"
msgstr "é™å®šçš„é¡žåž‹ %qT ä¸åŒ¹é…解構函å¼å ~%qT"
-#: cp/typeck.c:2404
+#: cp/typeck.c:2412
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr "被解構的類型是 %qT,但解構函å¼å»ä½¿ç”¨äº† %qT"
-#: cp/typeck.c:2580
+#: cp/typeck.c:2593
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr "%<%D::%D%> ä¸æ˜¯ %qT çš„æˆå“¡"
-#: cp/typeck.c:2604
+#: cp/typeck.c:2617
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr "%qT ä¸æ˜¯ %qT 的基礎類別"
-#: cp/typeck.c:2624
+#: cp/typeck.c:2637
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr "%qD æ²’å…·å為 %qE çš„æˆå“¡"
-#: cp/typeck.c:2642
+#: cp/typeck.c:2655
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr "%qD ä¸æ˜¯ä¸€å€‹æˆå“¡ç¯„本函å¼"
-#: cp/typeck.c:2786
+#: cp/typeck.c:2799
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr "%qT ä¸æ˜¯ä¸€å€‹åƒç…§ç‰©ä»¶çš„é¡žåž‹"
-#: cp/typeck.c:2817
+#: cp/typeck.c:2830
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of array indexing on pointer to member"
msgstr "å°‡ %qs 用在æˆå“¡æŒ‡æ¨™ä¸Šç„¡æ•ˆ"
-#: cp/typeck.c:2820
+#: cp/typeck.c:2833
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of unary %<*%> on pointer to member"
msgstr "å°‡ %qs 用在æˆå“¡æŒ‡æ¨™ä¸Šç„¡æ•ˆ"
-#: cp/typeck.c:2823
+#: cp/typeck.c:2836
#, fuzzy, gcc-internal-format
#| msgid "invalid use of %qs on pointer to member"
msgid "invalid use of implicit conversion on pointer to member"
msgstr "å°‡ %qs 用在æˆå“¡æŒ‡æ¨™ä¸Šç„¡æ•ˆ"
-#: cp/typeck.c:2858
+#: cp/typeck.c:2871
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr "陣列åƒç…§ç¼ºå°‘下標"
-#: cp/typeck.c:2942
+#: cp/typeck.c:2955
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr "ISO C++ ä¸å…許按下標存å–éžå·¦å€¼çš„陣列"
-#: cp/typeck.c:2955
+#: cp/typeck.c:2968
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr "按下標存å–宣告為 %<register%> 的陣列"
-#: cp/typeck.c:2992
+#: cp/typeck.c:3005
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr "下標é‹ç®—çš„å·¦é‹ç®—元既éžé™£åˆ—也éžæŒ‡æ¨™"
-#: cp/typeck.c:3058
+#: cp/typeck.c:3071
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr "使用 %qE 時缺少物件"
-#: cp/typeck.c:3252
+#: cp/typeck.c:3265
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO C++ ä¸å…許在程å¼è£¡å‘¼å« %<::main%>"
-#: cp/typeck.c:3271
+#: cp/typeck.c:3284
#, fuzzy, gcc-internal-format
#| msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>"
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
msgstr "必須用 %<.*%> or %<->*%> å‘¼å« <%E (...)%> 中的æˆå“¡å‡½å¼æŒ‡æ¨™"
-#: cp/typeck.c:3286
+#: cp/typeck.c:3299
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr "%qE ä¸èƒ½åšç‚ºå‡½å¼"
-#: cp/typeck.c:3333
+#: cp/typeck.c:3346
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to constructor %q#D"
msgstr "給予 %s %q+#D 的引數太多"
-#: cp/typeck.c:3334
+#: cp/typeck.c:3347
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to constructor %q#D"
msgstr "給予 %s %q+#D 的引數太少"
-#: cp/typeck.c:3339
+#: cp/typeck.c:3352
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qs"
msgid "too many arguments to member function %q#D"
msgstr "çµ¦äºˆå‡½å¼ %qs çš„åƒæ•¸å¤ªå¤š"
-#: cp/typeck.c:3340
+#: cp/typeck.c:3353
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qs"
msgid "too few arguments to member function %q#D"
msgstr "çµ¦äºˆå‡½å¼ %qs çš„åƒæ•¸å¤ªå°‘"
-#: cp/typeck.c:3346
+#: cp/typeck.c:3359
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function %qs"
msgid "too many arguments to function %q#D"
msgstr "çµ¦äºˆå‡½å¼ %qs çš„åƒæ•¸å¤ªå¤š"
-#: cp/typeck.c:3347
+#: cp/typeck.c:3360
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to function %qs"
msgid "too few arguments to function %q#D"
msgstr "çµ¦äºˆå‡½å¼ %qs çš„åƒæ•¸å¤ªå°‘"
-#: cp/typeck.c:3357
+#: cp/typeck.c:3370
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to %s %q+#D"
msgid "too many arguments to method %q#D"
msgstr "給予 %s %q+#D 的引數太多"
-#: cp/typeck.c:3358
+#: cp/typeck.c:3371
#, fuzzy, gcc-internal-format
#| msgid "too few arguments to %s %q+#D"
msgid "too few arguments to method %q#D"
msgstr "給予 %s %q+#D 的引數太少"
-#: cp/typeck.c:3361
+#: cp/typeck.c:3374
#, gcc-internal-format
msgid "too many arguments to function"
msgstr "給予函å¼çš„引數太多"
-#: cp/typeck.c:3362
+#: cp/typeck.c:3375
#, gcc-internal-format
msgid "too few arguments to function"
msgstr "給予函å¼çš„引數太少"
-#: cp/typeck.c:3441
+#: cp/typeck.c:3454
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr "åƒæ•¸ %P (屬於 %qD)çš„é¡žåž‹ %qT ä¸å®Œå…¨"
-#: cp/typeck.c:3444
+#: cp/typeck.c:3457
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr "åƒæ•¸ %P çš„é¡žåž‹ %qT ä¸å®Œå…¨"
-#: cp/typeck.c:3739 cp/typeck.c:3750
+#: cp/typeck.c:3752 cp/typeck.c:3763
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr "å‡å®šå¾žå¤šè¼‰å‡½å¼è½‰æ›åˆ°é¡žåž‹ %qT"
#. Some sort of arithmetic operation involving NULL was
#. performed.
-#: cp/typeck.c:3793
+#: cp/typeck.c:3806
#, gcc-internal-format
msgid "NULL used in arithmetic"
msgstr "ç®—è¡“é‹ç®—å¼ä¸­ä½¿ç”¨äº† NULL"
-#: cp/typeck.c:3984
+#: cp/typeck.c:3997
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "left rotate count is negative"
msgstr "%s 循環移ä½æ¬¡æ•¸ç‚ºè² "
-#: cp/typeck.c:3985
+#: cp/typeck.c:3998
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count is negative"
msgid "right rotate count is negative"
msgstr "%s 循環移ä½æ¬¡æ•¸ç‚ºè² "
-#: cp/typeck.c:3991
+#: cp/typeck.c:4004
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "left rotate count >= width of type"
msgstr "%s 循環移ä½æ¬¡æ•¸å¤§æ–¼æˆ–等於類型寬度"
-#: cp/typeck.c:3992
+#: cp/typeck.c:4005
#, fuzzy, gcc-internal-format
#| msgid "%s rotate count >= width of type"
msgid "right rotate count >= width of type"
msgstr "%s 循環移ä½æ¬¡æ•¸å¤§æ–¼æˆ–等於類型寬度"
-#: cp/typeck.c:4011 cp/typeck.c:4241
+#: cp/typeck.c:4024 cp/typeck.c:4254
#, fuzzy, gcc-internal-format
#| msgid "weak declaration of %q+D after first use results in unspecified behavior"
msgid "comparison with string literal results in unspecified behaviour"
msgstr "%q+D 的弱宣告出ç¾åœ¨ç¬¬ä¸€æ¬¡ä½¿ç”¨ä¹‹å¾Œå°‡å°Žè‡´ä¸å¯é æœŸçš„行為"
-#: cp/typeck.c:4030 cp/typeck.c:4042
+#: cp/typeck.c:4043 cp/typeck.c:4055
#, fuzzy, gcc-internal-format
#| msgid "the address of %qD, will always evaluate as %<true%>"
msgid "the address of %qD will never be NULL"
msgstr "%qD çš„ä½å€ç¸½æ˜¯ç­‰åƒ¹ç‚º %<true%>"
-#: cp/typeck.c:4054 cp/typeck.c:4062 cp/typeck.c:4274 cp/typeck.c:4282
+#: cp/typeck.c:4067 cp/typeck.c:4075 cp/typeck.c:4287 cp/typeck.c:4295
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr "ISO C++ ä¸å…許比較指標和整數的值"
-#: cp/typeck.c:4299
+#: cp/typeck.c:4312
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr "éžæµ®é»žå¼•æ•¸é–“的無效比較"
-#: cp/typeck.c:4346
+#: cp/typeck.c:4359
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr "é‹ç®—元類型 %qT å’Œ %qT å°äºŒé€²ä½ %qO 而言無效"
-#: cp/typeck.c:4571
+#: cp/typeck.c:4584
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr "ISO C++ ä¸å…許在減法中使用類型為 %<void *%> 的指標"
-#: cp/typeck.c:4573
+#: cp/typeck.c:4586
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr "ISO C++ ä¸å…許在減法中使用函å¼æŒ‡æ¨™"
-#: cp/typeck.c:4575
+#: cp/typeck.c:4588
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr "ISO C++ ä¸å…許在減法中使用åƒç…§æ–¹æ³•çš„指標"
-#: cp/typeck.c:4588
+#: cp/typeck.c:4601
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "在指標算術中使用åƒç…§ä¸å®Œå…¨é¡žåž‹çš„指標無效"
-#: cp/typeck.c:4646
+#: cp/typeck.c:4659
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of constructor %qE"
msgstr "å–臨時變數的ä½å€"
-#: cp/typeck.c:4647
+#: cp/typeck.c:4660
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of destructor %qE"
msgstr "å–臨時變數的ä½å€"
-#: cp/typeck.c:4661
+#: cp/typeck.c:4674
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr "用 %qE å½¢æˆæˆå“¡å‡½å¼æŒ‡æ¨™çš„用法無效。"
-#: cp/typeck.c:4664
+#: cp/typeck.c:4677
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr " 需è¦ä¸€å€‹é™å®šçš„識別碼"
-#: cp/typeck.c:4669
+#: cp/typeck.c:4682
#, fuzzy, gcc-internal-format
#| msgid "parenthesis around %qE cannot be used to form a pointer-to-member-function"
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr "%qE 兩邊的括號ä¸èƒ½ç”¨ä¾†å»ºæ§‹ä¸€å€‹æˆå“¡å‡½å¼æŒ‡æ¨™"
#. An expression like &memfn.
-#: cp/typeck.c:4830
+#: cp/typeck.c:4843
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ ä¸å…許é€éŽæå–一個未é™å®šçš„或帶括號的éžéœæ…‹æˆå“¡å‡½å¼çš„ä½å€ä¾†å½¢æˆä¸€å€‹æˆå“¡å‡½å¼æŒ‡æ¨™ã€‚請使用 %<&%T::%D%>"
-#: cp/typeck.c:4835
+#: cp/typeck.c:4848
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
msgstr "ISO C++ ä¸å…許é€éŽå–已繫çµçš„æˆå“¡å‡½å¼çš„ä½å€ä¾†å»ºæ§‹æˆå“¡å‡½å¼æŒ‡æ¨™ã€‚請改用 %<&%T::%D%>"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:4872
+#: cp/typeck.c:4885
#, gcc-internal-format
msgid "taking address of temporary"
msgstr "å–臨時變數的ä½å€"
-#: cp/typeck.c:4874
+#: cp/typeck.c:4887
#, fuzzy, gcc-internal-format
#| msgid "taking address of temporary"
msgid "taking address of xvalue (rvalue reference)"
msgstr "å–臨時變數的ä½å€"
-#: cp/typeck.c:4891
+#: cp/typeck.c:4904
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr "ISO C++ ä¸å…許å–å‡½å¼ %<::main%> çš„ä½å€"
-#: cp/typeck.c:4946
+#: cp/typeck.c:4959
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr "ISO C++ ä¸å…許å–轉æ›åˆ°éžå·¦å€¼é‹ç®—å¼çš„ä½å€"
-#: cp/typeck.c:4974
+#: cp/typeck.c:4987
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr "ä¸èƒ½å»ºç«‹åƒç…§åƒç…§æˆå“¡ %qD 的指標"
-#: cp/typeck.c:5238
+#: cp/typeck.c:5251
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids incrementing an enum"
msgstr "ISO C++ ä¸å…許 %sing 一個列舉"
-#: cp/typeck.c:5239
+#: cp/typeck.c:5252
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing an enum"
msgid "ISO C++ forbids decrementing an enum"
msgstr "ISO C++ ä¸å…許 %sing 一個列舉"
-#: cp/typeck.c:5255
+#: cp/typeck.c:5268
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid "cannot increment a pointer to incomplete type %qT"
msgstr "ä¸èƒ½å°‡æŒ‡æ¨™ %s 到ä¸å®Œå…¨çš„é¡žåž‹ %qT"
-#: cp/typeck.c:5256
+#: cp/typeck.c:5269
#, fuzzy, gcc-internal-format
#| msgid "cannot %s a pointer to incomplete type %qT"
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr "ä¸èƒ½å°‡æŒ‡æ¨™ %s 到ä¸å®Œå…¨çš„é¡žåž‹ %qT"
-#: cp/typeck.c:5267
+#: cp/typeck.c:5280
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type %qT"
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr "ISO C++ ä¸å…許 %s 一個類型為 %qT 的指標"
-#: cp/typeck.c:5268
+#: cp/typeck.c:5281
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids %sing a pointer of type %qT"
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr "ISO C++ ä¸å…許 %s 一個類型為 %qT 的指標"
-#: cp/typeck.c:5301
+#: cp/typeck.c:5314
#, fuzzy, gcc-internal-format
#| msgid "invalid expression as operand"
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr "無效的é‹ç®—å¼åšç‚ºé‹ç®—å…ƒ"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5476
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr "無法å–å³å€¼é‹ç®—å¼ %<this%> çš„ä½å€"
-#: cp/typeck.c:5485
+#: cp/typeck.c:5498
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr "è¦æ±‚明確暫存器變數 %qD çš„ä½å€ã€‚"
-#: cp/typeck.c:5490
+#: cp/typeck.c:5503
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr "請求宣告為 %<register%> çš„ %qD çš„ä½å€"
-#: cp/typeck.c:5571
+#: cp/typeck.c:5584
#, fuzzy, gcc-internal-format
#| msgid "initializer for %qT must be brace-enclosed"
msgid "list-initializer for non-class type must not be parenthesized"
msgstr "%qT çš„åˆå§‹åŒ–設定必須在大括號內"
-#: cp/typeck.c:5583
+#: cp/typeck.c:5596
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in initializer"
msgstr "%s é‹ç®—å¼æ¸…單被看作複åˆé‹ç®—å¼"
-#: cp/typeck.c:5587
+#: cp/typeck.c:5600
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in mem-initializer"
msgstr "%s é‹ç®—å¼æ¸…單被看作複åˆé‹ç®—å¼"
-#: cp/typeck.c:5591
+#: cp/typeck.c:5604
#, fuzzy, gcc-internal-format
#| msgid "%s expression list treated as compound expression"
msgid "expression list treated as compound expression in functional cast"
msgstr "%s é‹ç®—å¼æ¸…單被看作複åˆé‹ç®—å¼"
-#: cp/typeck.c:5625
+#: cp/typeck.c:5638
#, gcc-internal-format, gfc-internal-format
msgid "%s expression list treated as compound expression"
msgstr "%s é‹ç®—å¼æ¸…單被看作複åˆé‹ç®—å¼"
-#: cp/typeck.c:5698
+#: cp/typeck.c:5711
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5731
+#: cp/typeck.c:5744
#, fuzzy, gcc-internal-format
#| msgid "conversion from %qT to %qT discards qualifiers"
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr "從 %qT 到 %qT 的轉æ›ä¸Ÿå¤±äº†é™å®šè³‡è¨Š"
-#: cp/typeck.c:5737
+#: cp/typeck.c:5750
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type %qT to type %qT"
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr "從類型 %qT 到類型 %qT 中的 static_cast 無效"
-#: cp/typeck.c:5743
+#: cp/typeck.c:5756
#, fuzzy, gcc-internal-format
#| msgid "invalid static_cast from type %qT to type %qT"
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr "從類型 %qT 到類型 %qT 中的 static_cast 無效"
-#: cp/typeck.c:6084
+#: cp/typeck.c:6097
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr "從類型 %qT 到類型 %qT 中的 static_cast 無效"
-#: cp/typeck.c:6107
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr "從 %qT 轉æ›åˆ° %qT"
-#: cp/typeck.c:6156
+#: cp/typeck.c:6169
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr "從具有類型 %qT çš„å³å€¼é‹ç®—å¼åˆ°é¡žåž‹ %qT 中的轉æ›ç„¡æ•ˆ"
-#: cp/typeck.c:6226
+#: cp/typeck.c:6239
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr "從 %qT 到 %qT 的轉æ›æ失精度"
-#: cp/typeck.c:6266
+#: cp/typeck.c:6279
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr "從 %qT 到 %qT 的轉æ›å¢žå¤§äº†ç›®çš„é¡žåž‹çš„å°é½Šéœ€æ±‚"
@@ -37197,236 +37263,236 @@ msgstr "從 %qT 到 %qT 的轉æ›å¢žå¤§äº†ç›®çš„é¡žåž‹çš„å°é½Šéœ€æ±‚"
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:6285
+#: cp/typeck.c:6298
#, gcc-internal-format
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr "ISO C++ ä¸å…許在函å¼æŒ‡æ¨™å’Œç‰©ä»¶æŒ‡æ¨™é–“進行轉æ›"
-#: cp/typeck.c:6298
+#: cp/typeck.c:6311
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr "從類型 %qT 到類型 %qT 的轉æ›ç„¡æ•ˆ"
-#: cp/typeck.c:6354
+#: cp/typeck.c:6367
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "在類型 %qT 上使用 const_cast 無效,因為它既ä¸æ˜¯æŒ‡æ¨™ï¼Œä¹Ÿä¸æ˜¯åƒç…§ï¼Œä¹Ÿä¸æ˜¯è³‡æ–™æˆå“¡æŒ‡æ¨™"
-#: cp/typeck.c:6363
+#: cp/typeck.c:6376
#, gcc-internal-format
msgid "invalid use of const_cast with type %qT, which is a pointer or reference to a function type"
msgstr "在類型 %qT 上使用 const_cast 無效,因為它是一個指標函å¼é¡žåž‹çš„指標或åƒç…§"
-#: cp/typeck.c:6403
+#: cp/typeck.c:6416
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr "從類型 %qT 到類型 %qT 中的 const_cast 無效"
-#: cp/typeck.c:6459
+#: cp/typeck.c:6472
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr "從類型 %qT 到類型 %qT 中的 const_cast 無效"
-#: cp/typeck.c:6536 cp/typeck.c:6544
+#: cp/typeck.c:6549 cp/typeck.c:6557
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr "ISO C++ ä¸å…許轉æ›ç‚ºé™£åˆ—é¡žåž‹ %qT"
-#: cp/typeck.c:6553
+#: cp/typeck.c:6566
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr "å‘函å¼é¡žåž‹ %qT 的轉æ›ç„¡æ•ˆ"
-#: cp/typeck.c:6829
+#: cp/typeck.c:6842
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " 在求 %<%Q(%#T, %#T)%> 值時"
-#: cp/typeck.c:6890
+#: cp/typeck.c:6903
#, fuzzy, gcc-internal-format
#| msgid "nonconstant array index in initializer"
msgid "assigning to an array from an initializer list"
msgstr "åˆå§‹å€¼è¨­å®šä¸­é™£åˆ—索引ä¸æ˜¯å¸¸æ•¸"
-#: cp/typeck.c:6904
+#: cp/typeck.c:6917
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr "å°‡ %qT 賦值給 %qT 時類型ä¸ç›¸å®¹"
-#: cp/typeck.c:6918
+#: cp/typeck.c:6931
#, fuzzy, gcc-internal-format
#| msgid "bad array initializer"
msgid "array used as initializer"
msgstr "錯誤的陣列åˆå§‹å€¼è¨­å®š"
-#: cp/typeck.c:6920
+#: cp/typeck.c:6933
#, fuzzy, gcc-internal-format
#| msgid "invalid lvalue in assignment"
msgid "invalid array assignment"
msgstr "賦值é‹ç®—中的左值無效"
-#: cp/typeck.c:7032
+#: cp/typeck.c:7045
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr " 在æˆå“¡å‡½å¼æŒ‡æ¨™è½‰æ›ä¸­"
-#: cp/typeck.c:7046
+#: cp/typeck.c:7059
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr "æˆå“¡æŒ‡æ¨™è½‰æ›ç¶“由虛基礎類別 %qT"
-#: cp/typeck.c:7093 cp/typeck.c:7112
+#: cp/typeck.c:7106 cp/typeck.c:7125
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr " 在æˆå“¡æŒ‡æ¨™è½‰æ›ä¸­"
-#: cp/typeck.c:7191
+#: cp/typeck.c:7204
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr "到類型 %qT 的轉æ›ç„¡æ•ˆï¼Œå¾žé¡žåž‹ %qT"
-#: cp/typeck.c:7473
+#: cp/typeck.c:7486
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "ä¸èƒ½å¾ž %qT 轉æ›åˆ° %qT,為引數 %qP(屬於 %qD)"
-#: cp/typeck.c:7479
+#: cp/typeck.c:7492
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgid "cannot convert %qT to %qT in default argument"
msgstr "ä¸èƒ½å¾ž %qT 轉æ›åˆ° %qT,為引數 %qP(屬於 %qD)"
-#: cp/typeck.c:7483
+#: cp/typeck.c:7496
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in argument passing"
msgstr "ä¸èƒ½å°‡ %qT 轉æ›ç‚º %qT,在 %s 中"
-#: cp/typeck.c:7487
+#: cp/typeck.c:7500
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT"
msgstr "ä¸èƒ½å°‡ %qT 轉æ›ç‚º %qT,在 %s 中"
-#: cp/typeck.c:7491
+#: cp/typeck.c:7504
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in initialization"
msgstr "ä¸èƒ½å°‡ %qT 轉æ›ç‚º %qT,在 %s 中"
-#: cp/typeck.c:7495
+#: cp/typeck.c:7508
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in return"
msgstr "ä¸èƒ½å°‡ %qT 轉æ›ç‚º %qT,在 %s 中"
-#: cp/typeck.c:7499
+#: cp/typeck.c:7512
#, fuzzy, gcc-internal-format
#| msgid "cannot convert %qT to %qT in %s"
msgid "cannot convert %qT to %qT in assignment"
msgstr "ä¸èƒ½å°‡ %qT 轉æ›ç‚º %qT,在 %s 中"
-#: cp/typeck.c:7522
+#: cp/typeck.c:7535
#, fuzzy, gcc-internal-format
#| msgid "argument %d of %qE might be a candidate for a format attribute"
msgid "parameter %qP of %qD might be a candidate for a format attribute"
msgstr "引數 %d(屬於 %qE)å¯èƒ½æ˜¯ format 屬性的備é¸"
-#: cp/typeck.c:7526
+#: cp/typeck.c:7539
#, fuzzy, gcc-internal-format
#| msgid "return type might be a candidate for a format attribute"
msgid "parameter might be a candidate for a format attribute"
msgstr "回傳類型å¯èƒ½æ˜¯ format 屬性的備é¸"
-#: cp/typeck.c:7531
+#: cp/typeck.c:7544
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of conversion might be a candidate for a format attribute"
msgstr "函å¼çš„引數å¯èƒ½æ˜¯ format 屬性的備é¸"
-#: cp/typeck.c:7536
+#: cp/typeck.c:7549
#, fuzzy, gcc-internal-format
#| msgid "argument of function call might be a candidate for a format attribute"
msgid "target of initialization might be a candidate for a format attribute"
msgstr "函å¼çš„引數å¯èƒ½æ˜¯ format 屬性的備é¸"
-#: cp/typeck.c:7546
+#: cp/typeck.c:7559
#, fuzzy, gcc-internal-format
#| msgid "assignment left-hand side might be a candidate for a format attribute"
msgid "left-hand side of assignment might be a candidate for a format attribute"
msgstr "賦值的左手邊å¯èƒ½æ˜¯ format 屬性的備é¸æ™‚"
-#: cp/typeck.c:7641 cp/typeck.c:7643
+#: cp/typeck.c:7654 cp/typeck.c:7656
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr "在傳éžå¼•æ•¸ %P (屬於 %q+D)"
-#: cp/typeck.c:7698
+#: cp/typeck.c:7711
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr "回傳臨時變數的åƒç…§"
-#: cp/typeck.c:7705
+#: cp/typeck.c:7718
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr "回傳了一個éžå·¦å€¼çš„åƒç…§"
-#: cp/typeck.c:7721
+#: cp/typeck.c:7734
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr "回傳了å°å±€éƒ¨è®Šæ•¸çš„ %q+D çš„åƒç…§"
-#: cp/typeck.c:7724
+#: cp/typeck.c:7737
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr "回傳了局部變數的 %q+D çš„ä½å€"
-#: cp/typeck.c:7759
+#: cp/typeck.c:7772
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "解構函å¼å›žå‚³å€¼"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:7767
+#: cp/typeck.c:7780
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "ä¸èƒ½å¾žå»ºæ§‹å¼çš„異常處ç†ä¸­å›žå‚³"
#. You can't return a value from a constructor.
-#: cp/typeck.c:7770
+#: cp/typeck.c:7783
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr "建構å¼å›žå‚³å€¼"
-#: cp/typeck.c:7793
+#: cp/typeck.c:7806
#, fuzzy, gcc-internal-format
#| msgid "new types may not be defined in a return type"
msgid "inconsistent types %qT and %qT deduced for lambda return type"
msgstr "ä¸èƒ½åœ¨å›žå‚³é¡žåž‹ä¸­å®šç¾©æ–°é¡žåž‹"
-#: cp/typeck.c:7819
+#: cp/typeck.c:7832
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr "在回傳 %qT 的函å¼ä¸­ï¼Œå›žå‚³æ•˜è¿°ä¸å¸¶å›žå‚³å€¼"
-#: cp/typeck.c:7840
+#: cp/typeck.c:7853
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr "在回傳「voidã€çš„函å¼ä¸­ï¼Œå›žå‚³æ•˜è¿°å¸¶å›žå‚³å€¼"
-#: cp/typeck.c:7870
+#: cp/typeck.c:7883
#, gcc-internal-format
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
msgstr "%<operator new%> ä¸èƒ½å›žå‚³ NULL,除éžå®ƒè¢«å®£å‘Šç‚º %<throw()%> (或 -fcheck-new 起作用)"
#. Make this a permerror because we used to accept it.
-#: cp/typeck.c:8441
+#: cp/typeck.c:8454
#, gcc-internal-format
msgid "using temporary as lvalue"
msgstr ""
-#: cp/typeck.c:8443
+#: cp/typeck.c:8456
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
@@ -38002,7 +38068,7 @@ msgstr "%L 迭代次數ä¸èƒ½ç‚ºé›¶"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259
+#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5264
#, gcc-internal-format, gfc-internal-format
msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
@@ -40313,27 +40379,27 @@ msgstr "%L 處賦值å³æ‰‹é‚Šå‡ºç¾å€¼ç‚º POINTER 的函å¼"
msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:3177 fortran/resolve.c:9096
+#: fortran/expr.c:3177 fortran/resolve.c:9095
#, gcc-internal-format, gfc-internal-format
msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:3187 fortran/resolve.c:9106
+#: fortran/expr.c:3187 fortran/resolve.c:9105
#, gcc-internal-format, gfc-internal-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:3195 fortran/resolve.c:9115
+#: fortran/expr.c:3195 fortran/resolve.c:9114
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3199 fortran/resolve.c:9119
+#: fortran/expr.c:3199 fortran/resolve.c:9118
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3203 fortran/resolve.c:9123
+#: fortran/expr.c:3203 fortran/resolve.c:9122
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check"
msgstr ""
@@ -40560,45 +40626,45 @@ msgstr ""
msgid "LOCK_TYPE in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4664
+#: fortran/expr.c:4668
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4672
+#: fortran/expr.c:4676
#, gcc-internal-format, gfc-internal-format
msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L"
msgstr ""
-#: fortran/expr.c:4685
+#: fortran/expr.c:4689
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L"
msgstr "變數「%sã€ä¸èƒ½å‡ºç¾åœ¨ %L 處的é‹ç®—å¼ä¸­"
-#: fortran/expr.c:4693
+#: fortran/expr.c:4697
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L"
msgstr "變數「%sã€ä¸èƒ½å‡ºç¾åœ¨ %L 處的é‹ç®—å¼ä¸­"
-#: fortran/expr.c:4705
+#: fortran/expr.c:4709
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure"
msgstr "變數「%sã€ä¸èƒ½å‡ºç¾åœ¨ %L 處的é‹ç®—å¼ä¸­"
-#: fortran/expr.c:4764
+#: fortran/expr.c:4768
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4768
+#: fortran/expr.c:4772
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)"
msgstr ""
-#: fortran/expr.c:4780
+#: fortran/expr.c:4784
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
msgstr ""
@@ -40613,15 +40679,15 @@ msgstr "truthvalue_conversion 中類型éžé æœŸ"
msgid "can't open input file: %s"
msgstr "無法開啟輸入檔案:%s"
-#: fortran/frontend-passes.c:334 fortran/trans-array.c:1024
-#: fortran/trans-array.c:5755 fortran/trans-array.c:7001
+#: fortran/frontend-passes.c:354 fortran/trans-array.c:1024
+#: fortran/trans-array.c:5760 fortran/trans-array.c:7006
#: fortran/trans-intrinsic.c:5422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "creating array of %qT"
msgid "Creating array temporary at %L"
msgstr "產生 %qT 的陣列"
-#: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360
+#: fortran/frontend-passes.c:377 fortran/frontend-passes.c:380
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Missing argument list in function '%s' at %C"
msgid "Removing call to function '%s' at %L"
@@ -40740,12 +40806,12 @@ msgstr "%L 處定義賦值的第一個åƒæ•¸å¿…須是 INTENT(IN) 或 INTENT(INOU
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "%L 處定義賦值的第二個åƒæ•¸å¿…須是 INTENT(IN)"
-#: fortran/interface.c:705 fortran/resolve.c:13758
+#: fortran/interface.c:705 fortran/resolve.c:13759
#, gcc-internal-format, gfc-internal-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr "%L 處é‹ç®—å­ä»‹é¢çš„第一個åƒæ•¸å¿…須是 INTENT(IN)"
-#: fortran/interface.c:712 fortran/resolve.c:13776
+#: fortran/interface.c:712 fortran/resolve.c:13777
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "%L 處é‹ç®—å­ä»‹é¢çš„第二個åƒæ•¸å¿…須是 INTENT(IN)"
@@ -42688,134 +42754,134 @@ msgstr "寫入模組檔案時發生錯誤:%s"
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4461
+#: fortran/module.c:4476
#, gcc-internal-format, gfc-internal-format
msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
msgstr ""
-#: fortran/module.c:4760
+#: fortran/module.c:4775
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4767
+#: fortran/module.c:4782
#, gcc-internal-format, gfc-internal-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4772
+#: fortran/module.c:4787
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:5409
+#: fortran/module.c:5424
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr "無法開啟模組檔案「%sã€å¯«å…¥ï¼Œåœ¨ %C 處:%s"
-#: fortran/module.c:5442
+#: fortran/module.c:5457
#, gcc-internal-format, gfc-internal-format
msgid "Error writing module file '%s' for writing: %s"
msgstr "寫入模組檔案「%sã€æ™‚發生錯誤:%s"
-#: fortran/module.c:5451
+#: fortran/module.c:5466
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete file '%s': %s\n"
msgid "Can't delete module file '%s': %s"
msgstr "%s:無法刪除檔案「%sã€ï¼š%s\n"
-#: fortran/module.c:5454
+#: fortran/module.c:5469
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: warning: can't rename file '%s' to '%s': %s\n"
msgid "Can't rename module file '%s' to '%s': %s"
msgstr "%s:警告:ä¸èƒ½å°‡æª”案「%sã€é‡æ–°å‘½å為「%sã€ï¼š%s\n"
-#: fortran/module.c:5460
+#: fortran/module.c:5475
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s: can't delete aux info file '%s': %s\n"
msgid "Can't delete temporary module file '%s': %s"
msgstr "%s:無法刪除輸助資訊檔案「%sã€ï¼š%s\n"
-#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724
-#: fortran/module.c:5766
+#: fortran/module.c:5494 fortran/module.c:5706 fortran/module.c:5739
+#: fortran/module.c:5781
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' at %C already declared at %L"
msgid "Symbol '%s' already declared"
msgstr "元件「%sã€åœ¨ %C 處已經於 %L 處被宣告"
-#: fortran/module.c:5583 fortran/module.c:5862
+#: fortran/module.c:5598 fortran/module.c:5877
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L is not included in the selected standard"
msgid "The symbol '%s', referenced at %L, is not in the selected standard"
msgstr "內建函å¼ã€Œ%sã€(æ–¼ %L 處)ä¸ç‚ºæ‰€é¸æ“‡çš„標準所包å«"
-#: fortran/module.c:5670
+#: fortran/module.c:5685
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5847
+#: fortran/module.c:5862
#, gcc-internal-format, gfc-internal-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:5870
+#: fortran/module.c:5885
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5940
+#: fortran/module.c:5955
#, gcc-internal-format, gfc-internal-format
msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5998
+#: fortran/module.c:6013
#, gcc-internal-format, gfc-internal-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:6037
+#: fortran/module.c:6052
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:6047
+#: fortran/module.c:6062
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Fortran 2003: IOMSG tag at %L"
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr "Fortran 2003:%L 處的 IOMSG 標記"
-#: fortran/module.c:6059
+#: fortran/module.c:6074
#, gcc-internal-format, gfc-internal-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:6064
+#: fortran/module.c:6079
#, gcc-internal-format, gfc-internal-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "無法開啟模組檔案「%sã€è®€å–,在 %C 處:%s"
-#: fortran/module.c:6072
+#: fortran/module.c:6087
#, gcc-internal-format, gfc-internal-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
msgstr ""
-#: fortran/module.c:6092
+#: fortran/module.c:6107
#, gcc-internal-format, gfc-internal-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:6099
+#: fortran/module.c:6114
#, gcc-internal-format, gfc-internal-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6104
+#: fortran/module.c:6119
#, gcc-internal-format, gfc-internal-format
msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:6119
+#: fortran/module.c:6134
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -42912,7 +42978,7 @@ msgstr "%C 處 ELSE 敘述後有éžé æœŸçš„無用字元"
msgid "Unexpected junk after NOWAIT clause at %C"
msgstr "%C 處 ELSE 敘述後有éžé æœŸçš„無用字元"
-#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463
+#: fortran/openmp.c:819 fortran/resolve.c:8984 fortran/resolve.c:9462
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -44313,7 +44379,7 @@ msgstr ""
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410
+#: fortran/resolve.c:1610 fortran/resolve.c:8520 fortran/resolve.c:9409
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "標籤 %d(åƒç…§è‡ª %L)從未被定義"
@@ -44475,7 +44541,7 @@ msgstr ""
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2534 fortran/resolve.c:13693
+#: fortran/resolve.c:2534 fortran/resolve.c:13694
#, gcc-internal-format, gfc-internal-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr "函å¼ã€Œ%sã€åœ¨ %L 處沒有 IMPLICIT é¡žåž‹"
@@ -44884,189 +44950,189 @@ msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
msgstr "元素程åºçš„引數「%sã€åœ¨ %L 處必須是標é‡"
#. Nothing matching found!
-#: fortran/resolve.c:5776
+#: fortran/resolve.c:5775
#, gcc-internal-format, gfc-internal-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5803
+#: fortran/resolve.c:5802
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:5850
+#: fortran/resolve.c:5849
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:6367
+#: fortran/resolve.c:6366
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be a scalar"
msgstr "%s (%L 處)必須是一個標é‡"
-#: fortran/resolve.c:6377
+#: fortran/resolve.c:6376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Cray pointer at %C must be an integer."
msgid "Deleted feature: %s at %L must be integer"
msgstr "%C 處 Cray 指標必須是一個整數。"
-#: fortran/resolve.c:6381 fortran/resolve.c:6388
+#: fortran/resolve.c:6380 fortran/resolve.c:6387
#, gcc-internal-format, gfc-internal-format
msgid "%s at %L must be INTEGER"
msgstr "%s (%L 處)必須是 INTEGER"
-#: fortran/resolve.c:6429
+#: fortran/resolve.c:6428
#, gcc-internal-format, gfc-internal-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr "步進敘述於 %L 處的 DO 迴圈中ä¸å¯ç‚ºé›¶"
-#: fortran/resolve.c:6464
+#: fortran/resolve.c:6463
#, gcc-internal-format, gfc-internal-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:6525
+#: fortran/resolve.c:6524
#, gcc-internal-format, gfc-internal-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr "%L 處 FORALL 索引å稱必須是 INTEGER 標é‡"
-#: fortran/resolve.c:6530
+#: fortran/resolve.c:6529
#, gcc-internal-format, gfc-internal-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr "%L 處的 FORALL 啟始敘述必須是 INTEGER 標é‡"
-#: fortran/resolve.c:6537
+#: fortran/resolve.c:6536
#, gcc-internal-format, gfc-internal-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr "%L 處的 FORALL çµæŸæ•˜è¿°å¿…須是 INTEGER 標é‡"
-#: fortran/resolve.c:6545
+#: fortran/resolve.c:6544
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr "%L 處的 FORALL 步幅敘述必須是 %s 標é‡"
-#: fortran/resolve.c:6550
+#: fortran/resolve.c:6549
#, gcc-internal-format, gfc-internal-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr "%L 處的 FORALL 步幅敘述ä¸èƒ½ç‚ºé›¶"
-#: fortran/resolve.c:6566
+#: fortran/resolve.c:6565
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' cannot appear in the expression at %L"
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr "變數「%sã€ä¸èƒ½å‡ºç¾åœ¨ %L 處的é‹ç®—å¼ä¸­"
-#: fortran/resolve.c:6662 fortran/resolve.c:6945
+#: fortran/resolve.c:6661 fortran/resolve.c:6944
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:6670 fortran/resolve.c:6911
+#: fortran/resolve.c:6669 fortran/resolve.c:6910
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed allocatable object at %L"
msgstr ""
-#: fortran/resolve.c:6775
+#: fortran/resolve.c:6774
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:6802
#, gcc-internal-format, gfc-internal-format
msgid "Source-expr at %L and allocate-object at %L must have the same shape"
msgstr ""
-#: fortran/resolve.c:6956
+#: fortran/resolve.c:6955
#, gcc-internal-format, gfc-internal-format
msgid "Type of entity at %L is type incompatible with source-expr at %L"
msgstr ""
-#: fortran/resolve.c:6969
+#: fortran/resolve.c:6968
#, gcc-internal-format, gfc-internal-format
msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
msgstr ""
-#: fortran/resolve.c:6983
+#: fortran/resolve.c:6982
#, gcc-internal-format, gfc-internal-format
msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
msgstr ""
-#: fortran/resolve.c:6996
+#: fortran/resolve.c:6995
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
msgstr ""
-#: fortran/resolve.c:7007
+#: fortran/resolve.c:7006
#, gcc-internal-format, gfc-internal-format
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
-#: fortran/resolve.c:7092
+#: fortran/resolve.c:7091
#, gcc-internal-format, gfc-internal-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7106
+#: fortran/resolve.c:7105
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "RESULT attribute required in ENTRY statement at %C"
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "%C 處的 ENTRY æ•˜è¿°éœ€è¦ RESULT 屬性"
-#: fortran/resolve.c:7133
+#: fortran/resolve.c:7132
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:7152
+#: fortran/resolve.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:7167
+#: fortran/resolve.c:7166
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expected = sign in PARAMETER statement at %C"
msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
msgstr "%C 在 PARAMETER æ•˜è¿°ä¸­éœ€è¦ = 符號"
-#: fortran/resolve.c:7178
+#: fortran/resolve.c:7177
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array specification must be deferred at %L"
msgid "Bad coarray specification in ALLOCATE statement at %L"
msgstr "%L 處陣列指定必須延é²"
-#: fortran/resolve.c:7208
+#: fortran/resolve.c:7207
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL index-name at %L must be a scalar INTEGER"
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "%L 處 FORALL 索引å稱必須是 INTEGER 標é‡"
-#: fortran/resolve.c:7231
+#: fortran/resolve.c:7230
#, gcc-internal-format, gfc-internal-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7241
#, gcc-internal-format, gfc-internal-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:7252
+#: fortran/resolve.c:7251
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr "%L 處指定的 UNIT 必須是 INTEGER é‹ç®—å¼æˆ–一個 CHARACTER 變數"
-#: fortran/resolve.c:7275
+#: fortran/resolve.c:7274
#, gcc-internal-format, gfc-internal-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:7305
+#: fortran/resolve.c:7304
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
-#: fortran/resolve.c:7311 fortran/resolve.c:7317
+#: fortran/resolve.c:7310 fortran/resolve.c:7316
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
@@ -45075,172 +45141,172 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:7512
+#: fortran/resolve.c:7511
#, gcc-internal-format, gfc-internal-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:7563
+#: fortran/resolve.c:7562
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr "%L 處 CASE 敘述中的é‹ç®—å¼å¿…須具有 %s é¡žåž‹"
-#: fortran/resolve.c:7574
+#: fortran/resolve.c:7573
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in CASE statement at %L must be kind %d"
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr "%L 處 CASE 敘述中的é‹ç®—å¼ç¨®é¡žå¿…須為 %d"
-#: fortran/resolve.c:7587
+#: fortran/resolve.c:7586
#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr "%L 處 CASE 敘述中的é‹ç®—å¼å¿…須為標é‡"
-#: fortran/resolve.c:7633
+#: fortran/resolve.c:7632
#, gcc-internal-format, gfc-internal-format
msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
msgstr ""
-#: fortran/resolve.c:7651
+#: fortran/resolve.c:7650
#, gcc-internal-format, gfc-internal-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr "%L 處 SELECT 敘述的引數ä¸èƒ½æ˜¯ %s"
-#: fortran/resolve.c:7669 fortran/resolve.c:7677
+#: fortran/resolve.c:7668 fortran/resolve.c:7676
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Expression in CASE statement at %L must be of type %s"
msgid "Expression in CASE statement at %L is not in the range of %s"
msgstr "%L 處 CASE 敘述中的é‹ç®—å¼å¿…須具有 %s é¡žåž‹"
-#: fortran/resolve.c:7739 fortran/resolve.c:8049
+#: fortran/resolve.c:7738 fortran/resolve.c:8048
#, gcc-internal-format, gfc-internal-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:7765
+#: fortran/resolve.c:7764
#, gcc-internal-format, gfc-internal-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:7777
+#: fortran/resolve.c:7776
#, gcc-internal-format, gfc-internal-format
msgid "Constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:7791
+#: fortran/resolve.c:7790
#, gcc-internal-format, gfc-internal-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:7893
#, gcc-internal-format, gfc-internal-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:7959
+#: fortran/resolve.c:7958
#, gcc-internal-format, gfc-internal-format
msgid "Associate-name '%s' at %L is used as array"
msgstr ""
-#: fortran/resolve.c:8001
+#: fortran/resolve.c:8000
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Syntax error in EQUIVALENCE statement at %L"
msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
msgstr "%L 處 EQUIVALENCE 敘述語法錯誤"
-#: fortran/resolve.c:8027
+#: fortran/resolve.c:8026
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be extensible"
msgstr ""
-#: fortran/resolve.c:8037
+#: fortran/resolve.c:8036
#, gcc-internal-format, gfc-internal-format
msgid "Derived type '%s' at %L must be an extension of '%s'"
msgstr ""
-#: fortran/resolve.c:8209
+#: fortran/resolve.c:8208
#, gcc-internal-format, gfc-internal-format
msgid "Double CLASS IS block in SELECT TYPE statement at %L"
msgstr ""
-#: fortran/resolve.c:8300
+#: fortran/resolve.c:8299
#, gcc-internal-format, gfc-internal-format
msgid "NULL intrinsic at %L in data transfer statement requires MOLD="
msgstr ""
#. FIXME: Test for defined input/output.
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8327
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8340
+#: fortran/resolve.c:8339
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8349
+#: fortran/resolve.c:8348
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have procedure pointer components"
msgstr ""
-#: fortran/resolve.c:8356
+#: fortran/resolve.c:8355
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:8364
+#: fortran/resolve.c:8363
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:8373
+#: fortran/resolve.c:8372
#, gcc-internal-format, gfc-internal-format
msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
msgstr ""
-#: fortran/resolve.c:8423
+#: fortran/resolve.c:8422
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL index-name at %L must be a scalar INTEGER"
msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
msgstr "%L 處 FORALL 索引å稱必須是 INTEGER 標é‡"
-#: fortran/resolve.c:8430 fortran/resolve.c:8494
+#: fortran/resolve.c:8429 fortran/resolve.c:8493
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "FORALL index-name at %L must be a scalar INTEGER"
msgid "STAT= argument at %L must be a scalar INTEGER variable"
msgstr "%L 處 FORALL 索引å稱必須是 INTEGER 標é‡"
-#: fortran/resolve.c:8442 fortran/resolve.c:8501
+#: fortran/resolve.c:8441 fortran/resolve.c:8500
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument dim at %L must be scalar"
msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
msgstr "%L 引數維數必須是標é‡"
-#: fortran/resolve.c:8454
+#: fortran/resolve.c:8453
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument dim at %L must be scalar"
msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
msgstr "%L 引數維數必須是標é‡"
-#: fortran/resolve.c:8471
+#: fortran/resolve.c:8470
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of SELECT statement at %L must be a scalar expression"
msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
msgstr "%L 處 SELECT 敘述中的引數必須為標é‡"
-#: fortran/resolve.c:8475 fortran/resolve.c:8485
+#: fortran/resolve.c:8474 fortran/resolve.c:8484
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of ACOS at %L must be between -1 and 1"
msgid "Imageset argument at %L must between 1 and num_images()"
msgstr "%L 處 ACOS çš„åƒæ•¸å¿…須在 -1 å’Œ 1 之間"
-#: fortran/resolve.c:8528
+#: fortran/resolve.c:8527
#, gcc-internal-format, gfc-internal-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
msgstr ""
-#: fortran/resolve.c:8537
+#: fortran/resolve.c:8536
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Branch at %L causes an infinite loop"
msgid "Branch at %L may result in an infinite loop"
@@ -45248,12 +45314,12 @@ msgstr "%L 處的分支導致無窮循環"
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
-#: fortran/resolve.c:8554 fortran/resolve.c:8577
+#: fortran/resolve.c:8553 fortran/resolve.c:8576
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
msgstr ""
-#: fortran/resolve.c:8558 fortran/resolve.c:8583
+#: fortran/resolve.c:8557 fortran/resolve.c:8582
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
@@ -45261,1004 +45327,1004 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:8598
+#: fortran/resolve.c:8597
#, gcc-internal-format, gfc-internal-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:8670
+#: fortran/resolve.c:8669
#, gcc-internal-format, gfc-internal-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8686
+#: fortran/resolve.c:8685
#, gcc-internal-format, gfc-internal-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:8694 fortran/resolve.c:8781
+#: fortran/resolve.c:8693 fortran/resolve.c:8780
#, gcc-internal-format, gfc-internal-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:8704 fortran/resolve.c:8791
+#: fortran/resolve.c:8703 fortran/resolve.c:8790
#, gcc-internal-format, gfc-internal-format
msgid "Unsupported statement inside WHERE at %L"
msgstr "%L 處在 WHERE å…§ä¸æ”¯æ´çš„敘述"
-#: fortran/resolve.c:8735
+#: fortran/resolve.c:8734
#, gcc-internal-format, gfc-internal-format
msgid "Assignment to a FORALL index variable at %L"
msgstr "%L è™•å‘ FORALL 索引變數賦值"
-#: fortran/resolve.c:8744
+#: fortran/resolve.c:8743
#, gcc-internal-format, gfc-internal-format
msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8912
#, gcc-internal-format, gfc-internal-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:8993
+#: fortran/resolve.c:8992
#, gcc-internal-format, gfc-internal-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "%L 處的 WHERE/ELSEWHERE å­å¥éœ€è¦ä¸€å€‹ LOGICAL 陣列"
-#: fortran/resolve.c:9147
+#: fortran/resolve.c:9146
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:9179
+#: fortran/resolve.c:9178
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
msgstr ""
-#: fortran/resolve.c:9184
+#: fortran/resolve.c:9183
#, gcc-internal-format, gfc-internal-format
msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:9194
+#: fortran/resolve.c:9193
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assignment to a FORALL index variable at %L"
msgid "Assignment to coindexed variable at %L in a PURE procedure"
msgstr "%L è™•å‘ FORALL 索引變數賦值"
-#: fortran/resolve.c:9225
+#: fortran/resolve.c:9224
#, gcc-internal-format, gfc-internal-format
msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator"
msgstr ""
-#: fortran/resolve.c:9234
+#: fortran/resolve.c:9233
#, gcc-internal-format, gfc-internal-format
msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L"
msgstr ""
-#: fortran/resolve.c:9369
+#: fortran/resolve.c:9368
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9372
+#: fortran/resolve.c:9371
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr "變數「%sã€åœ¨ %L 尚未指派到目標標籤"
-#: fortran/resolve.c:9383
+#: fortran/resolve.c:9382
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr "%L 處的 INQUIRE æ•˜è¿°éœ€è¦ FILE 或 UNIT é™å®šç¬¦"
-#: fortran/resolve.c:9418
+#: fortran/resolve.c:9417
#, gcc-internal-format, gfc-internal-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9450
#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:9510
+#: fortran/resolve.c:9509
#, gcc-internal-format, gfc-internal-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:9594
+#: fortran/resolve.c:9593
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
msgstr "%L 處的 WHERE/ELSEWHERE å­å¥éœ€è¦ä¸€å€‹ LOGICAL 陣列"
-#: fortran/resolve.c:9676 fortran/resolve.c:9729
+#: fortran/resolve.c:9675 fortran/resolve.c:9728
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:9694
+#: fortran/resolve.c:9693
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9741
+#: fortran/resolve.c:9740
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:9793
+#: fortran/resolve.c:9792
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:9806
+#: fortran/resolve.c:9805
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9819
+#: fortran/resolve.c:9818
#, gcc-internal-format, gfc-internal-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9898
+#: fortran/resolve.c:9897
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
msgstr ""
-#: fortran/resolve.c:9911
+#: fortran/resolve.c:9910
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "size of array %qs is too large"
msgid "String length at %L is too large"
msgstr "陣列 %qs 太大"
-#: fortran/resolve.c:10248
+#: fortran/resolve.c:10247
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "å¯æŒ‡æ´¾çš„陣列「%sã€åœ¨ %L 處必須有延é²çš„外形"
-#: fortran/resolve.c:10252
+#: fortran/resolve.c:10251
#, gcc-internal-format, gfc-internal-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:10260
+#: fortran/resolve.c:10259
#, gcc-internal-format, gfc-internal-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr "陣列指標「%sã€åœ¨ %L 處必須有延é²çš„外形"
-#: fortran/resolve.c:10270
+#: fortran/resolve.c:10269
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "陣列「%sã€åœ¨ %L 處ä¸èƒ½æœ‰å»¶é²çš„外形"
-#: fortran/resolve.c:10283
+#: fortran/resolve.c:10282
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
msgstr ""
-#: fortran/resolve.c:10295
+#: fortran/resolve.c:10294
#, gcc-internal-format, gfc-internal-format
msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:10326
+#: fortran/resolve.c:10325
#, gcc-internal-format, gfc-internal-format
msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:10348
+#: fortran/resolve.c:10347
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:10395
+#: fortran/resolve.c:10394
#, gcc-internal-format, gfc-internal-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "模組或主程å¼é™£åˆ—「%sã€åœ¨ %L 處必須有常態的外形"
-#: fortran/resolve.c:10404
+#: fortran/resolve.c:10403
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Possible frontend bug: Deferred array size without pointer or allocatable attribute."
msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute"
msgstr "å¯èƒ½çš„å‰ç«¯ç¨‹å¼ç¼ºé™·ï¼šæ領陣列大å°æ™‚沒有指標或å¯æŒ‡æ´¾å±¬æ€§ã€‚"
-#: fortran/resolve.c:10418
+#: fortran/resolve.c:10417
#, gcc-internal-format, gfc-internal-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
msgstr ""
-#: fortran/resolve.c:10437
+#: fortran/resolve.c:10436
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:10443
+#: fortran/resolve.c:10442
#, gcc-internal-format, gfc-internal-format
msgid "COMMON variable '%s' at %L must have constant character length"
msgstr ""
-#: fortran/resolve.c:10488
+#: fortran/resolve.c:10487
#, gcc-internal-format, gfc-internal-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr "å¯æŒ‡æ´¾çš„「%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10491
+#: fortran/resolve.c:10490
#, gcc-internal-format, gfc-internal-format
msgid "External '%s' at %L cannot have an initializer"
msgstr "外部「%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10495
+#: fortran/resolve.c:10494
#, gcc-internal-format, gfc-internal-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr "啞元「%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10498
+#: fortran/resolve.c:10497
#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr "內建函å¼ã€Œ%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10501
+#: fortran/resolve.c:10500
#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr "函å¼çµæžœã€Œ%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10504
+#: fortran/resolve.c:10503
#, gcc-internal-format, gfc-internal-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr "自動陣列「%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10541
+#: fortran/resolve.c:10540
#, gcc-internal-format, gfc-internal-format
msgid "Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:10563
+#: fortran/resolve.c:10562
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:10585 fortran/resolve.c:10609
+#: fortran/resolve.c:10584 fortran/resolve.c:10608
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:10627
+#: fortran/resolve.c:10626
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Function result '%s' at %L cannot have an initializer"
msgid "Function '%s' at %L cannot have an initializer"
msgstr "函å¼çµæžœã€Œ%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10636
+#: fortran/resolve.c:10635
#, gcc-internal-format, gfc-internal-format
msgid "External object '%s' at %L may not have an initializer"
msgstr "外部物件「%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:10644
+#: fortran/resolve.c:10643
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L must have at least two arguments"
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr "內建函å¼ã€Œ%s〠於 %L 處必須有至少兩個引數"
-#: fortran/resolve.c:10654
+#: fortran/resolve.c:10653
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgid "Statement function '%s' at %L may not have pointer or allocatable attribute"
msgstr "敘述函å¼ã€Œ%sã€åœ¨ %L 處ä¸å…許åšç‚ºå¯¦éš›å¼•æ•¸"
-#: fortran/resolve.c:10673
+#: fortran/resolve.c:10672
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr "CHARACTER(*) 函å¼ã€Œ%sã€(ä½æ–¼ %L)ä¸èƒ½ä»¥é™£åˆ—賦值"
-#: fortran/resolve.c:10677
+#: fortran/resolve.c:10676
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr "CHARACTER(*) 函å¼ã€Œ%sã€(ä½æ–¼ %L)ä¸èƒ½ä»¥æŒ‡æ¨™è³¦å€¼"
-#: fortran/resolve.c:10681
+#: fortran/resolve.c:10680
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr "CHARACTER(*) 函å¼ã€Œ%sã€(ä½æ–¼ %L)ä¸èƒ½æ˜¯ç´”é‡"
-#: fortran/resolve.c:10685
+#: fortran/resolve.c:10684
#, gcc-internal-format, gfc-internal-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:10697
+#: fortran/resolve.c:10696
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "CHARACTER(*) 函å¼ã€Œ%sã€(ä½æ–¼ %L)ä¸èƒ½æ˜¯ç´”é‡"
-#: fortran/resolve.c:10752
+#: fortran/resolve.c:10751
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr "%s 屬性與 %s 屬性è¡çªï¼Œåœ¨ã€Œ%sã€ä¸­ï¼Œä½æ–¼ %L"
-#: fortran/resolve.c:10758
+#: fortran/resolve.c:10757
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr "%s 屬性與 %s 屬性è¡çªï¼Œåœ¨ã€Œ%sã€ä¸­ï¼Œä½æ–¼ %L"
-#: fortran/resolve.c:10764
+#: fortran/resolve.c:10763
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr "%s 屬性與 %s 屬性è¡çªï¼Œåœ¨ã€Œ%sã€ä¸­ï¼Œä½æ–¼ %L"
-#: fortran/resolve.c:10772
+#: fortran/resolve.c:10771
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr "%s 屬性與 %s 屬性è¡çªï¼Œåœ¨ã€Œ%sã€ä¸­ï¼Œä½æ–¼ %L"
-#: fortran/resolve.c:10778
+#: fortran/resolve.c:10777
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:10824
+#: fortran/resolve.c:10823
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:10832
+#: fortran/resolve.c:10831
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%qD must take exactly one argument"
msgid "FINAL procedure at %L must have exactly one argument"
msgstr "%qD 帶且僅帶 1 個引數"
-#: fortran/resolve.c:10841
+#: fortran/resolve.c:10840
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument of ICHAR at %L must be of length one"
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr "%L 處 ICHAR çš„åƒæ•¸é•·åº¦å¿…須為 1"
-#: fortran/resolve.c:10849
+#: fortran/resolve.c:10848
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)必須是一個 POINTER"
-#: fortran/resolve.c:10855
+#: fortran/resolve.c:10854
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)必須為 ALLOCATABLE"
-#: fortran/resolve.c:10861
+#: fortran/resolve.c:10860
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must not be OPTIONAL"
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)ä¸èƒ½ç‚ºå¯é¸çš„"
-#: fortran/resolve.c:10869
+#: fortran/resolve.c:10868
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "First argument of operator interface at %L must be INTENT(IN)"
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr "%L 處é‹ç®—å­ä»‹é¢çš„第一個åƒæ•¸å¿…須是 INTENT(IN)"
-#: fortran/resolve.c:10877
+#: fortran/resolve.c:10876
#, gcc-internal-format, gfc-internal-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:10896
+#: fortran/resolve.c:10895
#, gcc-internal-format, gfc-internal-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:10929
+#: fortran/resolve.c:10928
#, gcc-internal-format, gfc-internal-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:10934
+#: fortran/resolve.c:10933
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Initialization at %C is not allowed in a PURE procedure"
msgid "Finalization at %L is not yet implemented"
msgstr "åˆå§‹åŒ–ä¸å…許出ç¾åœ¨ %C 處的 PURE 程åºä¸­"
-#: fortran/resolve.c:10965
+#: fortran/resolve.c:10964
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:10975
+#: fortran/resolve.c:10974
#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:11034
+#: fortran/resolve.c:11033
#, gcc-internal-format, gfc-internal-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11046
+#: fortran/resolve.c:11045
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:11076
+#: fortran/resolve.c:11075
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:11132
+#: fortran/resolve.c:11131
#, gcc-internal-format, gfc-internal-format
msgid "Type-bound operator at %L can't be NOPASS"
msgstr ""
-#: fortran/resolve.c:11295
+#: fortran/resolve.c:11294
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' called with an implicit interface at %L"
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
msgstr "呼å«ç¨‹åºã€Œ%sã€å¸¶éš±å«ä»‹é¢ï¼Œä½æ–¼ %L"
-#: fortran/resolve.c:11332
+#: fortran/resolve.c:11331
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Procedure '%s' in %s at %L is neither function nor subroutine"
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr "程åºã€Œ%sã€(在 %s 中,ä½æ–¼ %L) æ—¢ä¸æ˜¯å‡½å¼ä¹Ÿä¸æ˜¯å­è™•ç†åº"
-#: fortran/resolve.c:11346
+#: fortran/resolve.c:11345
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L must have at least two arguments"
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr "內建函å¼ã€Œ%s〠於 %L 處必須有至少兩個引數"
-#: fortran/resolve.c:11360 fortran/resolve.c:11823
+#: fortran/resolve.c:11359 fortran/resolve.c:11822
#, gcc-internal-format, gfc-internal-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:11368
+#: fortran/resolve.c:11367
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)ä¸èƒ½æ˜¯è¡ç”Ÿé¡žåž‹"
-#: fortran/resolve.c:11377
+#: fortran/resolve.c:11376
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a scalar"
msgid "Passed-object dummy argument of '%s' at %L must be scalar"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)必須是一個標é‡"
-#: fortran/resolve.c:11383
+#: fortran/resolve.c:11382
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)必須為 ALLOCATABLE"
-#: fortran/resolve.c:11389
+#: fortran/resolve.c:11388
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgid "Passed-object dummy argument of '%s' at %L must not be POINTER"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)必須是一個 POINTER"
-#: fortran/resolve.c:11418
+#: fortran/resolve.c:11417
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component '%s' at %C is a PRIVATE component of '%s'"
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr "元件「%sã€åœ¨ %C 處是「%sã€çš„ PRIVATE 元件"
-#: fortran/resolve.c:11427
+#: fortran/resolve.c:11426
#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:11522
+#: fortran/resolve.c:11521
#, gcc-internal-format, gfc-internal-format
msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden"
msgstr ""
-#: fortran/resolve.c:11580
+#: fortran/resolve.c:11579
#, gcc-internal-format, gfc-internal-format
msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one"
msgstr ""
-#: fortran/resolve.c:11593
+#: fortran/resolve.c:11592
#, gcc-internal-format, gfc-internal-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:11606
+#: fortran/resolve.c:11605
#, gcc-internal-format, gfc-internal-format
msgid "Deferred-length character component '%s' at %L is not yet supported"
msgstr ""
-#: fortran/resolve.c:11616
+#: fortran/resolve.c:11615
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array pointer '%s' at %L must have a deferred shape"
msgid "Coarray component '%s' at %L must be allocatable with deferred shape"
msgstr "陣列指標「%sã€åœ¨ %L 處必須有延é²çš„外形"
-#: fortran/resolve.c:11625
+#: fortran/resolve.c:11624
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:11635
+#: fortran/resolve.c:11634
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:11644
+#: fortran/resolve.c:11643
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer"
msgstr ""
-#: fortran/resolve.c:11652
+#: fortran/resolve.c:11651
#, gcc-internal-format, gfc-internal-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:11717
+#: fortran/resolve.c:11716
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN)"
msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr "%3$L 處純函å¼ã€Œ%2$sã€çš„引數「%1$sã€å¿…須是 INTENT(IN)"
-#: fortran/resolve.c:11757
+#: fortran/resolve.c:11756
#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:11771
+#: fortran/resolve.c:11770
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L must have at least two arguments"
msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
msgstr "內建函å¼ã€Œ%s〠於 %L 處必須有至少兩個引數"
-#: fortran/resolve.c:11787
+#: fortran/resolve.c:11786
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)ä¸èƒ½æ˜¯è¡ç”Ÿé¡žåž‹"
-#: fortran/resolve.c:11797
+#: fortran/resolve.c:11796
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Argument '%s' of statement function at %L must be scalar"
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
msgstr "敘述函å¼çš„引數「%sã€åœ¨ %L 處必須是標é‡"
-#: fortran/resolve.c:11806
+#: fortran/resolve.c:11805
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component at %C must have the POINTER attribute"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
msgstr "%C 處的元件必須有 POINTER 屬性"
-#: fortran/resolve.c:11815
+#: fortran/resolve.c:11814
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "引數「%sã€(屬於內建函å¼ã€Œ%sã€ï¼Œä½æ–¼ %L)必須為 ALLOCATABLE"
-#: fortran/resolve.c:11852
+#: fortran/resolve.c:11851
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
msgstr ""
-#: fortran/resolve.c:11865
+#: fortran/resolve.c:11864
#, gcc-internal-format, gfc-internal-format
msgid "Character length of component '%s' needs to be a constant specification expression at %L"
msgstr ""
-#: fortran/resolve.c:11876
+#: fortran/resolve.c:11875
#, gcc-internal-format, gfc-internal-format
msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:11888
+#: fortran/resolve.c:11887
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:11896
+#: fortran/resolve.c:11895
#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
msgstr ""
-#: fortran/resolve.c:11905
+#: fortran/resolve.c:11904
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Component at %C must have the POINTER attribute"
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
msgstr "%C 處的元件必須有 POINTER 屬性"
-#: fortran/resolve.c:11923 fortran/resolve.c:11934
+#: fortran/resolve.c:11922 fortran/resolve.c:11933
#, gcc-internal-format, gfc-internal-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:11946
+#: fortran/resolve.c:11945
#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr ""
-#: fortran/resolve.c:11994
+#: fortran/resolve.c:11995
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
msgstr ""
-#: fortran/resolve.c:12046
+#: fortran/resolve.c:12047
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Assumed size array '%s' in namelist '%s'at %C is not allowed."
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
msgstr "%3$C 處å稱清單「%2$sã€ä¸­å‡å®šçš„大å°é™£åˆ—「%1$sã€ä¸è¢«å…許。"
-#: fortran/resolve.c:12052
+#: fortran/resolve.c:12053
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12059
+#: fortran/resolve.c:12060
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12068
+#: fortran/resolve.c:12069
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12078
+#: fortran/resolve.c:12079
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12088
+#: fortran/resolve.c:12089
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
msgstr ""
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
-#: fortran/resolve.c:12096
+#: fortran/resolve.c:12097
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
msgstr ""
-#: fortran/resolve.c:12113
+#: fortran/resolve.c:12114
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12123
+#: fortran/resolve.c:12124
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12134
+#: fortran/resolve.c:12135
#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:12161
+#: fortran/resolve.c:12162
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr "%s 屬性與 %s 屬性è¡çªï¼Œåœ¨ã€Œ%sã€ä¸­ï¼Œä½æ–¼ %L"
-#: fortran/resolve.c:12180
+#: fortran/resolve.c:12181
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array '%s' at %L cannot have a deferred shape"
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr "陣列「%sã€åœ¨ %L 處ä¸èƒ½æœ‰å»¶é²çš„外形"
-#: fortran/resolve.c:12192
+#: fortran/resolve.c:12193
#, gcc-internal-format, gfc-internal-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:12203
+#: fortran/resolve.c:12204
#, gcc-internal-format, gfc-internal-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:12272
+#: fortran/resolve.c:12273
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute at %L"
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
msgstr "%s 屬性與 %s 屬性在 %L 處è¡çª"
-#: fortran/resolve.c:12275
+#: fortran/resolve.c:12276
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s attribute conflicts with %s attribute at %L"
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
msgstr "%s 屬性與 %s 屬性在 %L 處è¡çª"
-#: fortran/resolve.c:12358
+#: fortran/resolve.c:12359
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
msgstr ""
-#: fortran/resolve.c:12376
+#: fortran/resolve.c:12377
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr "å‡å®šå¤§å°çš„陣列在 %L 處必須是啞引數"
-#: fortran/resolve.c:12379
+#: fortran/resolve.c:12380
#, gcc-internal-format, gfc-internal-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr "å‡å®šå¤–形的陣列在 %L 處必須是啞引數"
-#: fortran/resolve.c:12392
+#: fortran/resolve.c:12393
#, gcc-internal-format, gfc-internal-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr "%L 處的符號ä¸æ˜¯ä¸€å€‹ DUMMY 變數"
-#: fortran/resolve.c:12398
+#: fortran/resolve.c:12399
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:12408
+#: fortran/resolve.c:12409
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Variable '%s' at %L in this context must be constant"
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
msgstr "變數「%sã€åœ¨ %L 處上下文中必須是常數"
-#: fortran/resolve.c:12417
+#: fortran/resolve.c:12418
#, gcc-internal-format, gfc-internal-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
msgstr ""
-#: fortran/resolve.c:12430 fortran/resolve.c:12511
+#: fortran/resolve.c:12431 fortran/resolve.c:12512
#, gcc-internal-format, gfc-internal-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:12457
+#: fortran/resolve.c:12458
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:12537
+#: fortran/resolve.c:12538
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'"
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr "PUBLIC 函å¼ã€Œ%sã€åœ¨ %L 處ä¸èƒ½æ˜¯ PRIVATE 類型「%sã€"
-#: fortran/resolve.c:12551
+#: fortran/resolve.c:12552
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
msgstr ""
-#: fortran/resolve.c:12569
+#: fortran/resolve.c:12570
#, gcc-internal-format, gfc-internal-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
msgstr ""
-#: fortran/resolve.c:12581
+#: fortran/resolve.c:12582
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
msgstr "「%sã€å•žå…ƒå¼•æ•¸åœ¨ %L 處ä¸èƒ½æ˜¯ INTENT(OUT)"
-#: fortran/resolve.c:12593
+#: fortran/resolve.c:12594
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Function result '%s' at %L cannot have an initializer"
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
msgstr "函å¼çµæžœã€Œ%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:12602
+#: fortran/resolve.c:12603
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
msgstr ""
-#: fortran/resolve.c:12614
+#: fortran/resolve.c:12615
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
msgstr ""
-#: fortran/resolve.c:12629
+#: fortran/resolve.c:12630
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
msgstr ""
-#: fortran/resolve.c:12637
+#: fortran/resolve.c:12638
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Array '%s' at %L cannot have a deferred shape"
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
msgstr "陣列「%sã€åœ¨ %L 處ä¸èƒ½æœ‰å»¶é²çš„外形"
-#: fortran/resolve.c:12644
+#: fortran/resolve.c:12645
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Allocatable array '%s' at %L must have a deferred shape"
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
msgstr "å¯æŒ‡æ´¾çš„陣列「%sã€åœ¨ %L 處必須有延é²çš„外形"
-#: fortran/resolve.c:12656
+#: fortran/resolve.c:12657
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
msgstr ""
-#: fortran/resolve.c:12665
+#: fortran/resolve.c:12666
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
msgstr "在 %L 處的啞程åºä¸å…許出ç¾åœ¨ ELEMENTAL 程åºä¸­"
-#: fortran/resolve.c:12737
+#: fortran/resolve.c:12738
#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:12831
+#: fortran/resolve.c:12832
#, gcc-internal-format, gfc-internal-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:12837
+#: fortran/resolve.c:12838
#, gcc-internal-format, gfc-internal-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:12846
+#: fortran/resolve.c:12847
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Dummy '%s' at %L cannot have an initializer"
msgid "DATA element '%s' at %L cannot have a coindex"
msgstr "啞元「%sã€åœ¨ %L 處ä¸èƒ½æœ‰åˆå§‹å€¼è¨­å®š"
-#: fortran/resolve.c:12860
+#: fortran/resolve.c:12861
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:12906
+#: fortran/resolve.c:12907
#, gcc-internal-format, gfc-internal-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:12919
+#: fortran/resolve.c:12920
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:13018
+#: fortran/resolve.c:13019
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13026
+#: fortran/resolve.c:13027
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13034
+#: fortran/resolve.c:13035
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
msgstr ""
-#: fortran/resolve.c:13159
+#: fortran/resolve.c:13160
#, gcc-internal-format, gfc-internal-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:13298
+#: fortran/resolve.c:13299
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but not used"
msgstr "標籤 %d 於 %L 經定義但未被使用"
-#: fortran/resolve.c:13303
+#: fortran/resolve.c:13304
#, gcc-internal-format, gfc-internal-format
msgid "Label %d at %L defined but cannot be used"
msgstr "標籤 %d 於 %L 經定義但無法被使用"
-#: fortran/resolve.c:13387
+#: fortran/resolve.c:13388
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13396
+#: fortran/resolve.c:13397
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13404
+#: fortran/resolve.c:13405
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:13420
+#: fortran/resolve.c:13421
#, gcc-internal-format, gfc-internal-format
msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13523
+#: fortran/resolve.c:13524
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr "%L 處 EQUIVALENCE 敘述語法錯誤"
-#: fortran/resolve.c:13538
+#: fortran/resolve.c:13539
#, gcc-internal-format, gfc-internal-format
msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:13550
+#: fortran/resolve.c:13551
#, gcc-internal-format, gfc-internal-format
msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'"
msgstr ""
-#: fortran/resolve.c:13559
+#: fortran/resolve.c:13560
#, gcc-internal-format, gfc-internal-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13638
+#: fortran/resolve.c:13639
#, gcc-internal-format, gfc-internal-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13649
+#: fortran/resolve.c:13650
#, gcc-internal-format, gfc-internal-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:13660
+#: fortran/resolve.c:13661
#, gcc-internal-format, gfc-internal-format
msgid "Substring at %L has length zero"
msgstr "%L çš„å­å­—串長度為零"
-#: fortran/resolve.c:13703
+#: fortran/resolve.c:13704
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'"
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr "PUBLIC 函å¼ã€Œ%sã€åœ¨ %L 處ä¸èƒ½æ˜¯ PRIVATE 類型「%sã€"
-#: fortran/resolve.c:13716
+#: fortran/resolve.c:13717
#, gcc-internal-format, gfc-internal-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr "ENTRY「%sã€åœ¨ %L 處沒有 IMPLICIT é¡žåž‹"
-#: fortran/resolve.c:13733
+#: fortran/resolve.c:13734
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:13743
+#: fortran/resolve.c:13744
#, gcc-internal-format, gfc-internal-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:13751
+#: fortran/resolve.c:13752
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L must have at least two arguments"
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr "內建函å¼ã€Œ%s〠於 %L 處必須有至少兩個引數"
-#: fortran/resolve.c:13765
+#: fortran/resolve.c:13766
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "First argument of operator interface at %L must be INTENT(IN)"
msgid "First argument of operator interface at %L cannot be optional"
msgstr "%L 處é‹ç®—å­ä»‹é¢çš„第一個åƒæ•¸å¿…須是 INTENT(IN)"
-#: fortran/resolve.c:13783
+#: fortran/resolve.c:13784
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgid "Second argument of operator interface at %L cannot be optional"
msgstr "%L 處é‹ç®—å­ä»‹é¢çš„第二個åƒæ•¸å¿…須是 INTENT(IN)"
-#: fortran/resolve.c:13790
+#: fortran/resolve.c:13791
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Intrinsic '%s' at %L must have at least two arguments"
msgid "Operator interface at %L must have, at most, two arguments"
msgstr "內建函å¼ã€Œ%s〠於 %L 處必須有至少兩個引數"
-#: fortran/resolve.c:13866
+#: fortran/resolve.c:13867
#, gcc-internal-format, gfc-internal-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -46901,18 +46967,18 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:6998
+#: fortran/trans-array.c:7003
#, gcc-internal-format, gfc-internal-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-array.c:8124
+#: fortran/trans-array.c:8129
#, fuzzy, gcc-internal-format
#| msgid "Possible frontend bug: Deferred array size without pointer or allocatable attribute."
msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components."
msgstr "å¯èƒ½çš„å‰ç«¯ç¨‹å¼ç¼ºé™·ï¼šæ領陣列大å°æ™‚沒有指標或å¯æŒ‡æ´¾å±¬æ€§ã€‚"
-#: fortran/trans-array.c:8621
+#: fortran/trans-array.c:8626
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -47176,7 +47242,7 @@ msgstr "real kind=8 在指定了 -fdefault-real-8 é¸é …時無法使用"
msgid "Array element size too big at %C"
msgstr "陣列元素太大"
-#: fortran/trans.c:1550
+#: fortran/trans.c:1538
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr "gfc_trans_code():錯誤的敘述程å¼ç¢¼"
@@ -47491,7 +47557,7 @@ msgstr "ä¸èƒ½ç¢ºå®šä¾è³´é …追蹤的目的å"
msgid "internal error - invalid Utf8 name"
msgstr "內部錯誤 - 無效的 utf8 å"
-#: java/typeck.c:426
+#: java/typeck.c:433
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr "ç°½å稱符串末尾有無用字元"
@@ -50413,6 +50479,9 @@ msgstr "%H為ä¸å­˜åœ¨çš„方法 %qE 建立é¸æ“‡å­"
#~ msgid "large frame pointer change (%d) with -mtiny-stack"
#~ msgstr "框架指標發生大的變更(%d),但å»æŒ‡å®šäº† -mtiny-stack"
+#~ msgid "%qs appears to be a misspelled interrupt handler"
+#~ msgstr "%qs 似乎是一個拼寫錯的æ’斷處ç†è€…"
+
#~ msgid "`%s' attribute only applies to functions"
#~ msgstr "「%sã€å±¬æ€§åªèƒ½ç”¨æ–¼å‡½å¼"
@@ -50785,9 +50854,6 @@ msgstr "%H為ä¸å­˜åœ¨çš„方法 %qE 建立é¸æ“‡å­"
#~ msgid "Possible frontend bug: array constructor not expanded"
#~ msgstr "å‰ç«¯ç¨‹å¼å¯èƒ½çš„程å¼ç¼ºé™·ï¼šé™£åˆ—建構å¼æœªèƒ½å±•é–‹"
-#~ msgid "Function does not return a value"
-#~ msgstr "函å¼æ²’有回傳一個值"
-
#~ msgid "module symbol %s in wrong namespace"
#~ msgstr "模組符號 %s 在錯誤的命å空間中"
diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c
index efef130ba7e..b464d1fdc3f 100644
--- a/gcc/postreload-gcse.c
+++ b/gcc/postreload-gcse.c
@@ -41,7 +41,6 @@ along with GCC; see the file COPYING3. If not see
#include "hashtab.h"
#include "params.h"
#include "target.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "dbgcnt.h"
@@ -520,10 +519,7 @@ oprs_unchanged_p (rtx x, rtx insn, bool after_insn)
case PC:
case CC0: /*FIXME*/
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
diff --git a/gcc/postreload.c b/gcc/postreload.c
index e0663446e54..38be0ab45a5 100644
--- a/gcc/postreload.c
+++ b/gcc/postreload.c
@@ -43,7 +43,6 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "tree.h"
#include "target.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
#include "dbgcnt.h"
diff --git a/gcc/predict.c b/gcc/predict.c
index 776ea7e9a79..f0db9f40330 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -53,9 +53,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "tree-flow.h"
#include "ggc.h"
-#include "tree-dump.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "tree-scalar-evolution.h"
#include "cfgloop.h"
#include "pointer-set.h"
@@ -110,9 +108,9 @@ static const struct predictor_info predictor_info[]= {
/* Return TRUE if frequency FREQ is considered to be hot. */
static inline bool
-maybe_hot_frequency_p (int freq)
+maybe_hot_frequency_p (struct function *fun, int freq)
{
- struct cgraph_node *node = cgraph_get_node (current_function_decl);
+ struct cgraph_node *node = cgraph_get_node (fun->decl);
if (!profile_info || !flag_branch_probabilities)
{
if (node->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED)
@@ -120,12 +118,13 @@ maybe_hot_frequency_p (int freq)
if (node->frequency == NODE_FREQUENCY_HOT)
return true;
}
- if (profile_status == PROFILE_ABSENT)
+ if (profile_status_for_function (fun) == PROFILE_ABSENT)
return true;
if (node->frequency == NODE_FREQUENCY_EXECUTED_ONCE
- && freq < (ENTRY_BLOCK_PTR->frequency * 2 / 3))
+ && freq < (ENTRY_BLOCK_PTR_FOR_FUNCTION (fun)->frequency * 2 / 3))
return false;
- if (freq < ENTRY_BLOCK_PTR->frequency / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION))
+ if (freq < (ENTRY_BLOCK_PTR_FOR_FUNCTION (fun)->frequency
+ / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)))
return false;
return true;
}
@@ -133,9 +132,9 @@ maybe_hot_frequency_p (int freq)
/* Return TRUE if frequency FREQ is considered to be hot. */
static inline bool
-maybe_hot_count_p (gcov_type count)
+maybe_hot_count_p (struct function *fun, gcov_type count)
{
- if (profile_status != PROFILE_READ)
+ if (profile_status_for_function (fun) != PROFILE_READ)
return true;
/* Code executed at most once is not hot. */
if (profile_info->runs >= count)
@@ -148,11 +147,12 @@ maybe_hot_count_p (gcov_type count)
for maximal performance. */
bool
-maybe_hot_bb_p (const_basic_block bb)
+maybe_hot_bb_p (struct function *fun, const_basic_block bb)
{
- if (profile_status == PROFILE_READ)
- return maybe_hot_count_p (bb->count);
- return maybe_hot_frequency_p (bb->frequency);
+ gcc_checking_assert (fun);
+ if (profile_status_for_function (fun) == PROFILE_READ)
+ return maybe_hot_count_p (fun, bb->count);
+ return maybe_hot_frequency_p (fun, bb->frequency);
}
/* Return true if the call can be hot. */
@@ -165,10 +165,12 @@ cgraph_maybe_hot_edge_p (struct cgraph_edge *edge)
<= profile_info->sum_max / PARAM_VALUE (HOT_BB_COUNT_FRACTION)))
return false;
if (edge->caller->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED
- || edge->callee->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED)
+ || (edge->callee
+ && edge->callee->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED))
return false;
if (edge->caller->frequency > NODE_FREQUENCY_UNLIKELY_EXECUTED
- && edge->callee->frequency <= NODE_FREQUENCY_EXECUTED_ONCE)
+ && (edge->callee
+ && edge->callee->frequency <= NODE_FREQUENCY_EXECUTED_ONCE))
return false;
if (optimize_size)
return false;
@@ -191,20 +193,21 @@ bool
maybe_hot_edge_p (edge e)
{
if (profile_status == PROFILE_READ)
- return maybe_hot_count_p (e->count);
- return maybe_hot_frequency_p (EDGE_FREQUENCY (e));
+ return maybe_hot_count_p (cfun, e->count);
+ return maybe_hot_frequency_p (cfun, EDGE_FREQUENCY (e));
}
/* Return true in case BB is probably never executed. */
bool
-probably_never_executed_bb_p (const_basic_block bb)
+probably_never_executed_bb_p (struct function *fun, const_basic_block bb)
{
+ gcc_checking_assert (fun);
if (profile_info && flag_branch_probabilities)
return ((bb->count + profile_info->runs / 2) / profile_info->runs) == 0;
if ((!profile_info || !flag_branch_probabilities)
- && (cgraph_get_node (current_function_decl)->frequency
+ && (cgraph_get_node (fun->decl)->frequency
== NODE_FREQUENCY_UNLIKELY_EXECUTED))
return true;
return false;
@@ -248,7 +251,7 @@ optimize_function_for_speed_p (struct function *fun)
bool
optimize_bb_for_size_p (const_basic_block bb)
{
- return optimize_function_for_size_p (cfun) || !maybe_hot_bb_p (bb);
+ return optimize_function_for_size_p (cfun) || !maybe_hot_bb_p (cfun, bb);
}
/* Return TRUE when BB should be optimized for speed. */
@@ -365,7 +368,7 @@ predictable_edge_p (edge e)
void
rtl_profile_for_bb (basic_block bb)
{
- crtl->maybe_hot_insn_p = maybe_hot_bb_p (bb);
+ crtl->maybe_hot_insn_p = maybe_hot_bb_p (cfun, bb);
}
/* Set RTL expansion for edge profile. */
@@ -2057,6 +2060,29 @@ tree_estimate_probability_bb (basic_block bb)
FOR_EACH_EDGE (e, ei, bb->succs)
{
+ /* Predict edges to user labels with attributes. */
+ if (e->dest != EXIT_BLOCK_PTR)
+ {
+ gimple_stmt_iterator gi;
+ for (gi = gsi_start_bb (e->dest); !gsi_end_p (gi); gsi_next (&gi))
+ {
+ gimple stmt = gsi_stmt (gi);
+ tree decl;
+
+ if (gimple_code (stmt) != GIMPLE_LABEL)
+ break;
+ decl = gimple_label_label (stmt);
+ if (DECL_ARTIFICIAL (decl))
+ continue;
+
+ /* Finally, we have a user-defined label. */
+ if (lookup_attribute ("cold", DECL_ATTRIBUTES (decl)))
+ predict_edge_def (e, PRED_COLD_LABEL, NOT_TAKEN);
+ else if (lookup_attribute ("hot", DECL_ATTRIBUTES (decl)))
+ predict_edge_def (e, PRED_HOT_LABEL, TAKEN);
+ }
+ }
+
/* Predict early returns to be probable, as we've already taken
care for error returns and other cases are often used for
fast paths through function.
@@ -2175,7 +2201,7 @@ tree_estimate_probability_driver (void)
{
unsigned nb_loops;
- loop_optimizer_init (0);
+ loop_optimizer_init (LOOPS_NORMAL);
if (dump_file && (dump_flags & TDF_DETAILS))
flow_loops_dump (dump_file, NULL, 0);
@@ -2678,12 +2704,12 @@ compute_function_frequency (void)
node->frequency = NODE_FREQUENCY_UNLIKELY_EXECUTED;
FOR_EACH_BB (bb)
{
- if (maybe_hot_bb_p (bb))
+ if (maybe_hot_bb_p (cfun, bb))
{
node->frequency = NODE_FREQUENCY_HOT;
return;
}
- if (!probably_never_executed_bb_p (bb))
+ if (!probably_never_executed_bb_p (cfun, bb))
node->frequency = NODE_FREQUENCY_NORMAL;
}
}
diff --git a/gcc/predict.def b/gcc/predict.def
index 591bb1caf58..7e77f141a4d 100644
--- a/gcc/predict.def
+++ b/gcc/predict.def
@@ -126,3 +126,10 @@ DEF_PREDICTOR (PRED_LOOP_IV_COMPARE_GUESS, "guess loop iv compare",
to set probability of branches that compares IV to loop bound variable. */
DEF_PREDICTOR (PRED_LOOP_IV_COMPARE, "loop iv compare", PROB_VERY_LIKELY,
PRED_FLAG_FIRST_MATCH)
+
+/* Branches to hot labels are likely. */
+DEF_PREDICTOR (PRED_HOT_LABEL, "hot label", HITRATE (85), 0)
+
+/* Branches to cold labels are extremely unlikely. */
+DEF_PREDICTOR (PRED_COLD_LABEL, "cold label", PROB_VERY_LIKELY,
+ PRED_FLAG_FIRST_MATCH)
diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c
index 8aa99787c59..c1282c78a9e 100644
--- a/gcc/pretty-print.c
+++ b/gcc/pretty-print.c
@@ -575,9 +575,7 @@ pp_base_flush (pretty_printer *pp)
{
pp_write_text_to_stream (pp);
pp_clear_state (pp);
- fputc ('\n', pp->buffer->stream);
fflush (pp->buffer->stream);
- pp_needs_newline (pp) = false;
}
/* Sets the number of maximum characters per line PRETTY-PRINTER can
@@ -759,6 +757,7 @@ void
pp_base_newline (pretty_printer *pp)
{
obstack_1grow (pp->buffer->obstack, '\n');
+ pp_needs_newline (pp) = false;
pp->buffer->line_length = 0;
}
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index a7b5a9fbbba..e0fd2e98c9d 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -256,6 +256,12 @@ pp_base_get_prefix (const pretty_printer *pp) { return pp->prefix; }
#define pp_quote(PP) pp_character (PP, '\'')
#define pp_backquote(PP) pp_character (PP, '`')
#define pp_doublequote(PP) pp_character (PP, '"')
+#define pp_newline_and_flush(PP) \
+ do { \
+ pp_newline (PP); \
+ pp_flush (PP); \
+ pp_needs_newline (PP) = false; \
+ } while (0)
#define pp_newline_and_indent(PP, N) \
do { \
pp_indentation (PP) += N; \
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index 9bd8621c4ed..526b2f29697 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -42,7 +42,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic.h"
#include "tree-pretty-print.h"
#include "cselib.h"
-#include "tree-pass.h"
+#include "dumpfile.h" /* for dump_flags */
#include "dwarf2out.h"
#endif
@@ -195,7 +195,7 @@ print_rtx (const_rtx in_rtx)
}
#ifndef GENERATOR_FILE
- if (GET_CODE (in_rtx) == CONST_DOUBLE && FLOAT_MODE_P (GET_MODE (in_rtx)))
+ if (CONST_DOUBLE_AS_FLOAT_P (in_rtx))
i = 5;
#endif
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index 28f51b06352..27fb72f8eb4 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -29,9 +29,9 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "tree-iterator.h"
#include "diagnostic.h"
-#include "gimple-pretty-print.h"
+#include "gimple-pretty-print.h" /* FIXME */
#include "tree-flow.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
/* Define the hash table of nodes already seen.
Such nodes are not repeated; brief cross-references are used. */
@@ -363,20 +363,24 @@ print_node (FILE *file, const char *prefix, tree node, int indent)
fputs (" deprecated", file);
if (TREE_VISITED (node))
fputs (" visited", file);
- if (TREE_LANG_FLAG_0 (node))
- fputs (" tree_0", file);
- if (TREE_LANG_FLAG_1 (node))
- fputs (" tree_1", file);
- if (TREE_LANG_FLAG_2 (node))
- fputs (" tree_2", file);
- if (TREE_LANG_FLAG_3 (node))
- fputs (" tree_3", file);
- if (TREE_LANG_FLAG_4 (node))
- fputs (" tree_4", file);
- if (TREE_LANG_FLAG_5 (node))
- fputs (" tree_5", file);
- if (TREE_LANG_FLAG_6 (node))
- fputs (" tree_6", file);
+
+ if (code != TREE_VEC && code != SSA_NAME)
+ {
+ if (TREE_LANG_FLAG_0 (node))
+ fputs (" tree_0", file);
+ if (TREE_LANG_FLAG_1 (node))
+ fputs (" tree_1", file);
+ if (TREE_LANG_FLAG_2 (node))
+ fputs (" tree_2", file);
+ if (TREE_LANG_FLAG_3 (node))
+ fputs (" tree_3", file);
+ if (TREE_LANG_FLAG_4 (node))
+ fputs (" tree_4", file);
+ if (TREE_LANG_FLAG_5 (node))
+ fputs (" tree_5", file);
+ if (TREE_LANG_FLAG_6 (node))
+ fputs (" tree_6", file);
+ }
/* DECL_ nodes have additional attributes. */
diff --git a/gcc/profile.c b/gcc/profile.c
index ad3a2c31746..3d0689afac3 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -64,9 +64,8 @@ along with GCC; see the file COPYING3. If not see
#include "value-prof.h"
#include "tree.h"
#include "tree-flow.h"
-#include "timevar.h"
#include "cfgloop.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "profile.h"
@@ -144,46 +143,15 @@ instrument_edges (struct edge_list *el)
static void
instrument_values (histogram_values values)
{
- unsigned i, t;
+ unsigned i;
/* Emit code to generate the histograms before the insns. */
for (i = 0; i < VEC_length (histogram_value, values); i++)
{
histogram_value hist = VEC_index (histogram_value, values, i);
- switch (hist->type)
- {
- case HIST_TYPE_INTERVAL:
- t = GCOV_COUNTER_V_INTERVAL;
- break;
-
- case HIST_TYPE_POW2:
- t = GCOV_COUNTER_V_POW2;
- break;
-
- case HIST_TYPE_SINGLE_VALUE:
- t = GCOV_COUNTER_V_SINGLE;
- break;
-
- case HIST_TYPE_CONST_DELTA:
- t = GCOV_COUNTER_V_DELTA;
- break;
+ unsigned t = COUNTER_FOR_HIST_TYPE (hist->type);
- case HIST_TYPE_INDIR_CALL:
- t = GCOV_COUNTER_V_INDIR;
- break;
-
- case HIST_TYPE_AVERAGE:
- t = GCOV_COUNTER_AVERAGE;
- break;
-
- case HIST_TYPE_IOR:
- t = GCOV_COUNTER_IOR;
- break;
-
- default:
- gcc_unreachable ();
- }
if (!coverage_counter_alloc (t, hist->n_counters))
continue;
@@ -277,8 +245,8 @@ is_edge_inconsistent (VEC(edge,gc) *edges)
fprintf (dump_file,
"Edge %i->%i is inconsistent, count"HOST_WIDEST_INT_PRINT_DEC,
e->src->index, e->dest->index, e->count);
- dump_bb (e->src, dump_file, 0);
- dump_bb (e->dest, dump_file, 0);
+ dump_bb (dump_file, e->src, 0, TDF_DETAILS);
+ dump_bb (dump_file, e->dest, 0, TDF_DETAILS);
}
return true;
}
@@ -327,7 +295,7 @@ is_inconsistent (void)
HOST_WIDEST_INT_PRINT_DEC,
bb->index,
bb->count);
- dump_bb (bb, dump_file, 0);
+ dump_bb (dump_file, bb, 0, TDF_DETAILS);
}
inconsistent = true;
}
@@ -340,7 +308,7 @@ is_inconsistent (void)
bb->index,
bb->count,
sum_edge_counts (bb->preds));
- dump_bb (bb, dump_file, 0);
+ dump_bb (dump_file, bb, 0, TDF_DETAILS);
}
inconsistent = true;
}
@@ -354,7 +322,7 @@ is_inconsistent (void)
bb->index,
bb->count,
sum_edge_counts (bb->succs));
- dump_bb (bb, dump_file, 0);
+ dump_bb (dump_file, bb, 0, TDF_DETAILS);
}
inconsistent = true;
}
@@ -640,7 +608,7 @@ compute_branch_probabilities (unsigned cfg_checksum, unsigned lineno_checksum)
if (dump_file)
{
int overlap = compute_frequency_overlap ();
- dump_flow_info (dump_file, dump_flags);
+ gimple_dump_cfg (dump_file, dump_flags);
fprintf (dump_file, "Static profile overlap: %d.%d%%\n",
overlap / (OVERLAP_BASE / 100),
overlap % (OVERLAP_BASE / 100));
@@ -871,9 +839,6 @@ compute_value_histograms (histogram_values values, unsigned cfg_checksum,
free (histogram_counts[t]);
}
-/* The entry basic block will be moved around so that it has index=1,
- there is nothing at index 0 and the exit is at n_basic_block. */
-#define BB_TO_GCOV_INDEX(bb) ((bb)->index - 1)
/* When passed NULL as file_name, initialize.
When passed something else, output the necessary commands to change
line to LINE and offset to FILE_NAME. */
@@ -900,7 +865,7 @@ output_location (char const *file_name, int line,
if (!*offset)
{
*offset = gcov_write_tag (GCOV_TAG_LINES);
- gcov_write_unsigned (BB_TO_GCOV_INDEX (bb));
+ gcov_write_unsigned (bb->index);
name_differs = line_differs=true;
}
@@ -920,19 +885,22 @@ output_location (char const *file_name, int line,
}
}
-/* Instrument and/or analyze program behavior based on program flow graph.
- In either case, this function builds a flow graph for the function being
- compiled. The flow graph is stored in BB_GRAPH.
+/* Instrument and/or analyze program behavior based on program the CFG.
+
+ This function creates a representation of the control flow graph (of
+ the function being compiled) that is suitable for the instrumentation
+ of edges and/or converting measured edge counts to counts on the
+ complete CFG.
When FLAG_PROFILE_ARCS is nonzero, this function instruments the edges in
the flow graph that are needed to reconstruct the dynamic behavior of the
- flow graph.
+ flow graph. This data is written to the gcno file for gcov.
When FLAG_BRANCH_PROBABILITIES is nonzero, this function reads auxiliary
- information from a data file containing edge count information from previous
- executions of the function being compiled. In this case, the flow graph is
- annotated with actual execution counts, which are later propagated into the
- rtl for optimization purposes.
+ information from the gcda file containing edge count information from
+ previous executions of the function being compiled. In this case, the
+ control flow graph is annotated with actual execution counts by
+ compute_branch_probabilities().
Main entry point of this file. */
@@ -1134,6 +1102,9 @@ branch_prob (void)
if (dump_file)
fprintf (dump_file, "%d ignored edges\n", ignored_edges);
+ total_num_edges_instrumented += num_instrumented;
+ if (dump_file)
+ fprintf (dump_file, "%d instrumentation edges\n", num_instrumented);
/* Compute two different checksums. Note that we want to compute
the checksum in only once place, since it depends on the shape
@@ -1143,8 +1114,7 @@ branch_prob (void)
lineno_checksum = coverage_compute_lineno_checksum ();
/* Write the data from which gcov can reconstruct the basic block
- graph and function line numbers */
-
+ graph and function line numbers (the gcno file). */
if (coverage_begin_function (lineno_checksum, cfg_checksum))
{
gcov_position_t offset;
@@ -1155,12 +1125,6 @@ branch_prob (void)
gcov_write_unsigned (0);
gcov_write_length (offset);
- /* Keep all basic block indexes nonnegative in the gcov output.
- Index 0 is used for entry block, last index is for exit
- block. */
- ENTRY_BLOCK_PTR->index = 1;
- EXIT_BLOCK_PTR->index = last_basic_block;
-
/* Arcs */
FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, next_bb)
{
@@ -1168,7 +1132,7 @@ branch_prob (void)
edge_iterator ei;
offset = gcov_write_tag (GCOV_TAG_ARCS);
- gcov_write_unsigned (BB_TO_GCOV_INDEX (bb));
+ gcov_write_unsigned (bb->index);
FOR_EACH_EDGE (e, ei, bb->succs)
{
@@ -1189,7 +1153,7 @@ branch_prob (void)
&& e->src->next_bb == e->dest)
flag_bits |= GCOV_ARC_FALLTHROUGH;
- gcov_write_unsigned (BB_TO_GCOV_INDEX (e->dest));
+ gcov_write_unsigned (e->dest->index);
gcov_write_unsigned (flag_bits);
}
}
@@ -1197,9 +1161,6 @@ branch_prob (void)
gcov_write_length (offset);
}
- ENTRY_BLOCK_PTR->index = ENTRY_BLOCK;
- EXIT_BLOCK_PTR->index = EXIT_BLOCK;
-
/* Line numbers. */
/* Initialize the output. */
output_location (NULL, 0, NULL, NULL);
@@ -1245,8 +1206,6 @@ branch_prob (void)
}
}
-#undef BB_TO_GCOV_INDEX
-
if (flag_profile_values)
gimple_find_values_to_profile (&values);
@@ -1389,8 +1348,7 @@ find_spanning_tree (struct edge_list *el)
}
}
- FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
- bb->aux = NULL;
+ clear_aux_for_blocks ();
}
/* Perform file-level initialization for branch-prob processing. */
diff --git a/gcc/recog.c b/gcc/recog.c
index 9377d6358ad..555bd75cd37 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "reload.h"
#include "target.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
@@ -588,7 +587,7 @@ simplify_while_replacing (rtx *loc, rtx to, rtx object,
break;
case MINUS:
if (CONST_INT_P (XEXP (x, 1))
- || GET_CODE (XEXP (x, 1)) == CONST_DOUBLE)
+ || CONST_DOUBLE_AS_INT_P (XEXP (x, 1)))
validate_change (object, loc,
simplify_gen_binary
(PLUS, GET_MODE (x), XEXP (x, 0),
@@ -1159,7 +1158,7 @@ const_double_operand (rtx op, enum machine_mode mode)
&& GET_MODE_CLASS (mode) != MODE_PARTIAL_INT)
return 0;
- return ((GET_CODE (op) == CONST_DOUBLE || CONST_INT_P (op))
+ return ((CONST_DOUBLE_P (op) || CONST_INT_P (op))
&& (mode == VOIDmode || GET_MODE (op) == mode
|| GET_MODE (op) == VOIDmode));
}
@@ -1708,27 +1707,25 @@ asm_operand_ok (rtx op, const char *constraint, const char **constraints)
case 'E':
case 'F':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
|| (GET_CODE (op) == CONST_VECTOR
&& GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_FLOAT))
result = 1;
break;
case 'G':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, 'G', constraint))
result = 1;
break;
case 'H':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, 'H', constraint))
result = 1;
break;
case 's':
- if (CONST_INT_P (op)
- || (GET_CODE (op) == CONST_DOUBLE
- && GET_MODE (op) == VOIDmode))
+ if (CONST_INT_P (op) || CONST_DOUBLE_AS_INT_P (op))
break;
/* Fall through. */
@@ -1738,9 +1735,7 @@ asm_operand_ok (rtx op, const char *constraint, const char **constraints)
break;
case 'n':
- if (CONST_INT_P (op)
- || (GET_CODE (op) == CONST_DOUBLE
- && GET_MODE (op) == VOIDmode))
+ if (CONST_INT_P (op) || CONST_DOUBLE_AS_INT_P (op))
result = 1;
break;
@@ -2579,7 +2574,7 @@ constrain_operands (int strict)
case 'E':
case 'F':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
|| (GET_CODE (op) == CONST_VECTOR
&& GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_FLOAT))
win = 1;
@@ -2587,15 +2582,13 @@ constrain_operands (int strict)
case 'G':
case 'H':
- if (GET_CODE (op) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (op)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, p))
win = 1;
break;
case 's':
- if (CONST_INT_P (op)
- || (GET_CODE (op) == CONST_DOUBLE
- && GET_MODE (op) == VOIDmode))
+ if (CONST_INT_P (op) || CONST_DOUBLE_AS_INT_P (op))
break;
case 'i':
if (CONSTANT_P (op))
@@ -2603,9 +2596,7 @@ constrain_operands (int strict)
break;
case 'n':
- if (CONST_INT_P (op)
- || (GET_CODE (op) == CONST_DOUBLE
- && GET_MODE (op) == VOIDmode))
+ if (CONST_INT_P (op) || CONST_DOUBLE_AS_INT_P (op))
win = 1;
break;
@@ -2832,7 +2823,8 @@ split_insn (rtx insn)
if (note && CONSTANT_P (XEXP (note, 0)))
set_unique_reg_note (last, REG_EQUAL, XEXP (note, 0));
else if (CONSTANT_P (SET_SRC (insn_set)))
- set_unique_reg_note (last, REG_EQUAL, SET_SRC (insn_set));
+ set_unique_reg_note (last, REG_EQUAL,
+ copy_rtx (SET_SRC (insn_set)));
}
}
diff --git a/gcc/ree.c b/gcc/ree.c
index 5edf44d675e..1d0f1949b80 100644
--- a/gcc/ree.c
+++ b/gcc/ree.c
@@ -233,12 +233,10 @@ along with GCC; see the file COPYING3. If not see
#include "recog.h"
#include "diagnostic-core.h"
#include "target.h"
-#include "timevar.h"
#include "optabs.h"
#include "insn-codes.h"
#include "rtlhooks-def.h"
#include "params.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
#include "cgraph.h"
@@ -804,7 +802,7 @@ add_removable_extension (const_rtx expr, rtx insn,
different extension. FIXME: this obviously can be improved. */
for (def = defs; def; def = def->next)
if ((idx = def_map[INSN_UID(DF_REF_INSN (def->ref))])
- && (cand = VEC_index (ext_cand, *insn_list, idx - 1))
+ && (cand = &VEC_index (ext_cand, *insn_list, idx - 1))
&& (cand->code != code || cand->mode != mode))
{
if (dump_file)
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index b534431f184..797586567cd 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -167,7 +167,6 @@
#include "basic-block.h"
#include "reload.h"
#include "ggc.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "target.h"
#include "df.h"
@@ -202,7 +201,7 @@ typedef struct stack_def
int top; /* index to top stack element */
HARD_REG_SET reg_set; /* set of live registers */
unsigned char reg[REG_STACK_SIZE];/* register - stack mapping */
-} *stack;
+} *stack_ptr;
/* This is used to carry information about basic blocks. It is
attached to the AUX field of the standard CFG block. */
@@ -247,7 +246,7 @@ static rtx not_a_num;
/* Forward declarations */
static int stack_regs_mentioned_p (const_rtx pat);
-static void pop_stack (stack, int);
+static void pop_stack (stack_ptr, int);
static rtx *get_true_reg (rtx *);
static int check_asm_stack_operands (rtx);
@@ -255,19 +254,19 @@ static void get_asm_operands_in_out (rtx, int *, int *);
static rtx stack_result (tree);
static void replace_reg (rtx *, int);
static void remove_regno_note (rtx, enum reg_note, unsigned int);
-static int get_hard_regnum (stack, rtx);
-static rtx emit_pop_insn (rtx, stack, rtx, enum emit_where);
-static void swap_to_top(rtx, stack, rtx, rtx);
-static bool move_for_stack_reg (rtx, stack, rtx);
-static bool move_nan_for_stack_reg (rtx, stack, rtx);
+static int get_hard_regnum (stack_ptr, rtx);
+static rtx emit_pop_insn (rtx, stack_ptr, rtx, enum emit_where);
+static void swap_to_top(rtx, stack_ptr, rtx, rtx);
+static bool move_for_stack_reg (rtx, stack_ptr, rtx);
+static bool move_nan_for_stack_reg (rtx, stack_ptr, rtx);
static int swap_rtx_condition_1 (rtx);
static int swap_rtx_condition (rtx);
-static void compare_for_stack_reg (rtx, stack, rtx);
-static bool subst_stack_regs_pat (rtx, stack, rtx);
-static void subst_asm_stack_regs (rtx, stack);
-static bool subst_stack_regs (rtx, stack);
-static void change_stack (rtx, stack, stack, enum emit_where);
-static void print_stack (FILE *, stack);
+static void compare_for_stack_reg (rtx, stack_ptr, rtx);
+static bool subst_stack_regs_pat (rtx, stack_ptr, rtx);
+static void subst_asm_stack_regs (rtx, stack_ptr);
+static bool subst_stack_regs (rtx, stack_ptr);
+static void change_stack (rtx, stack_ptr, stack_ptr, enum emit_where);
+static void print_stack (FILE *, stack_ptr);
static rtx next_flags_user (rtx);
/* Return nonzero if any stack register is mentioned somewhere within PAT. */
@@ -355,7 +354,7 @@ next_flags_user (rtx insn)
/* Reorganize the stack into ascending numbers, before this insn. */
static void
-straighten_stack (rtx insn, stack regstack)
+straighten_stack (rtx insn, stack_ptr regstack)
{
struct stack_def temp_stack;
int top;
@@ -378,7 +377,7 @@ straighten_stack (rtx insn, stack regstack)
/* Pop a register from the stack. */
static void
-pop_stack (stack regstack, int regno)
+pop_stack (stack_ptr regstack, int regno)
{
int top = regstack->top;
@@ -414,7 +413,7 @@ get_true_reg (rtx *pat)
actual FP register in use. */
{
rtx subreg;
- if (FP_REG_P (subreg = SUBREG_REG (*pat)))
+ if (STACK_REG_P (subreg = SUBREG_REG (*pat)))
{
int regno_off = subreg_regno_offset (REGNO (subreg),
GET_MODE (subreg),
@@ -722,7 +721,7 @@ remove_regno_note (rtx insn, enum reg_note note, unsigned int regno)
returned if the register is not found. */
static int
-get_hard_regnum (stack regstack, rtx reg)
+get_hard_regnum (stack_ptr regstack, rtx reg)
{
int i;
@@ -743,7 +742,7 @@ get_hard_regnum (stack regstack, rtx reg)
cases the movdf pattern to pop. */
static rtx
-emit_pop_insn (rtx insn, stack regstack, rtx reg, enum emit_where where)
+emit_pop_insn (rtx insn, stack_ptr regstack, rtx reg, enum emit_where where)
{
rtx pop_insn, pop_rtx;
int hard_regno;
@@ -794,7 +793,7 @@ emit_pop_insn (rtx insn, stack regstack, rtx reg, enum emit_where where)
If REG is already at the top of the stack, no insn is emitted. */
static void
-emit_swap_insn (rtx insn, stack regstack, rtx reg)
+emit_swap_insn (rtx insn, stack_ptr regstack, rtx reg)
{
int hard_regno;
rtx swap_rtx;
@@ -901,7 +900,7 @@ emit_swap_insn (rtx insn, stack regstack, rtx reg)
is emitted. */
static void
-swap_to_top (rtx insn, stack regstack, rtx src1, rtx src2)
+swap_to_top (rtx insn, stack_ptr regstack, rtx src1, rtx src2)
{
struct stack_def temp_stack;
int regno, j, k, temp;
@@ -942,7 +941,7 @@ swap_to_top (rtx insn, stack regstack, rtx src1, rtx src2)
was deleted in the process. */
static bool
-move_for_stack_reg (rtx insn, stack regstack, rtx pat)
+move_for_stack_reg (rtx insn, stack_ptr regstack, rtx pat)
{
rtx *psrc = get_true_reg (&SET_SRC (pat));
rtx *pdest = get_true_reg (&SET_DEST (pat));
@@ -1093,7 +1092,7 @@ move_for_stack_reg (rtx insn, stack regstack, rtx pat)
a NaN into DEST, then invokes move_for_stack_reg. */
static bool
-move_nan_for_stack_reg (rtx insn, stack regstack, rtx dest)
+move_nan_for_stack_reg (rtx insn, stack_ptr regstack, rtx dest)
{
rtx pat;
@@ -1232,7 +1231,7 @@ swap_rtx_condition (rtx insn)
set up. */
static void
-compare_for_stack_reg (rtx insn, stack regstack, rtx pat_src)
+compare_for_stack_reg (rtx insn, stack_ptr regstack, rtx pat_src)
{
rtx *src1, *src2;
rtx src1_note, src2_note;
@@ -1321,7 +1320,7 @@ compare_for_stack_reg (rtx insn, stack regstack, rtx pat_src)
static int
subst_stack_regs_in_debug_insn (rtx *loc, void *data)
{
- stack regstack = (stack)data;
+ stack_ptr regstack = (stack_ptr)data;
int hard_regno;
if (!STACK_REG_P (*loc))
@@ -1362,7 +1361,7 @@ subst_all_stack_regs_in_debug_insn (rtx insn, struct stack_def *regstack)
was deleted in the process. */
static bool
-subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
+subst_stack_regs_pat (rtx insn, stack_ptr regstack, rtx pat)
{
rtx *dest, *src;
bool control_flow_insn_deleted = false;
@@ -1467,7 +1466,7 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
if (STACK_REG_P (*src)
|| (STACK_REG_P (*dest)
&& (REG_P (*src) || MEM_P (*src)
- || GET_CODE (*src) == CONST_DOUBLE)))
+ || CONST_DOUBLE_P (*src))))
{
control_flow_insn_deleted |= move_for_stack_reg (insn, regstack, pat);
break;
@@ -2010,7 +2009,7 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
requirements, since record_asm_stack_regs removes any problem asm. */
static void
-subst_asm_stack_regs (rtx insn, stack regstack)
+subst_asm_stack_regs (rtx insn, stack_ptr regstack)
{
rtx body = PATTERN (insn);
int alt;
@@ -2293,7 +2292,7 @@ subst_asm_stack_regs (rtx insn, stack regstack)
a control flow insn was deleted in the process. */
static bool
-subst_stack_regs (rtx insn, stack regstack)
+subst_stack_regs (rtx insn, stack_ptr regstack)
{
rtx *note_link, note;
bool control_flow_insn_deleted = false;
@@ -2405,7 +2404,7 @@ subst_stack_regs (rtx insn, stack regstack)
is no longer needed once this has executed. */
static void
-change_stack (rtx insn, stack old, stack new_stack, enum emit_where where)
+change_stack (rtx insn, stack_ptr old, stack_ptr new_stack, enum emit_where where)
{
int reg;
int update_end = 0;
@@ -2611,7 +2610,7 @@ change_stack (rtx insn, stack old, stack new_stack, enum emit_where where)
/* Print stack configuration. */
static void
-print_stack (FILE *file, stack s)
+print_stack (FILE *file, stack_ptr s)
{
if (! file)
return;
@@ -2687,7 +2686,7 @@ static void
convert_regs_exit (void)
{
int value_reg_low, value_reg_high;
- stack output_stack;
+ stack_ptr output_stack;
rtx retvalue;
retvalue = stack_result (current_function_decl);
@@ -2720,8 +2719,8 @@ convert_regs_exit (void)
static void
propagate_stack (edge e)
{
- stack src_stack = &BLOCK_INFO (e->src)->stack_out;
- stack dest_stack = &BLOCK_INFO (e->dest)->stack_in;
+ stack_ptr src_stack = &BLOCK_INFO (e->src)->stack_out;
+ stack_ptr dest_stack = &BLOCK_INFO (e->dest)->stack_in;
int reg;
/* Preserve the order of the original stack, but check whether
@@ -2747,8 +2746,8 @@ static bool
compensate_edge (edge e)
{
basic_block source = e->src, target = e->dest;
- stack target_stack = &BLOCK_INFO (target)->stack_in;
- stack source_stack = &BLOCK_INFO (source)->stack_out;
+ stack_ptr target_stack = &BLOCK_INFO (target)->stack_in;
+ stack_ptr source_stack = &BLOCK_INFO (source)->stack_out;
struct stack_def regstack;
int reg;
diff --git a/gcc/regcprop.c b/gcc/regcprop.c
index 70fc0c09ecf..744878d8e63 100644
--- a/gcc/regcprop.c
+++ b/gcc/regcprop.c
@@ -35,7 +35,6 @@
#include "flags.h"
#include "diagnostic-core.h"
#include "obstack.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index 4fa0d04ce9c..cdd85001b16 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -45,7 +45,6 @@ along with GCC; see the file COPYING3. If not see
#include "reload.h"
#include "diagnostic-core.h"
#include "output.h"
-#include "timevar.h"
#include "hashtab.h"
#include "target.h"
#include "tree-pass.h"
@@ -936,7 +935,7 @@ reginfo_init (void)
if (df)
df_compute_regs_ever_live (true);
- /* This prevents dump_flow_info from losing if called
+ /* This prevents dump_reg_info from losing if called
before reginfo is run. */
reg_pref = NULL;
/* No more global register variables may be declared. */
@@ -1023,10 +1022,7 @@ reg_scan_mark_refs (rtx x, rtx insn)
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CC0:
case PC:
case SYMBOL_REF:
diff --git a/gcc/regmove.c b/gcc/regmove.c
index f3549c7904b..6ff8ef6191c 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -41,7 +41,6 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "diagnostic-core.h"
#include "reload.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
#include "ira.h"
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 7b71eb15280..9a6545abd65 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -35,7 +35,6 @@
#include "recog.h"
#include "flags.h"
#include "obstack.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
#include "target.h"
@@ -729,8 +728,8 @@ regrename_analyze (bitmap bb_mask)
rtx insn;
FOR_BB_INSNS (bb1, insn)
{
- insn_rr_info *p = VEC_index (insn_rr_info, insn_rr,
- INSN_UID (insn));
+ insn_rr_info *p = &VEC_index (insn_rr_info, insn_rr,
+ INSN_UID (insn));
p->op_info = NULL;
}
}
@@ -1343,10 +1342,7 @@ scan_rtx (rtx insn, rtx *loc, enum reg_class cl, enum scan_actions action,
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case CC0:
@@ -1584,7 +1580,7 @@ build_def_use (basic_block bb)
if (insn_rr != NULL)
{
- insn_info = VEC_index (insn_rr_info, insn_rr, INSN_UID (insn));
+ insn_info = &VEC_index (insn_rr_info, insn_rr, INSN_UID (insn));
insn_info->op_info = XOBNEWVEC (&rename_obstack, operand_rr_info,
recog_data.n_operands);
memset (insn_info->op_info, 0,
diff --git a/gcc/regs.h b/gcc/regs.h
index 24f410c6b07..4c9d7a6ce42 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -92,7 +92,7 @@ REG_N_SETS (int regno)
#define INC_REG_N_SETS(N,V) (regstat_n_sets_and_refs[N].sets += V)
-/* Functions defined in reg-stat.c. */
+/* Functions defined in regstat.c. */
extern void regstat_init_n_sets_and_refs (void);
extern void regstat_free_n_sets_and_refs (void);
extern void regstat_compute_ri (void);
@@ -100,7 +100,7 @@ extern void regstat_free_ri (void);
extern bitmap regstat_get_setjmp_crosses (void);
extern void regstat_compute_calls_crossed (void);
extern void regstat_free_calls_crossed (void);
-
+extern void dump_reg_info (FILE *);
/* Register information indexed by register number. This structure is
initialized by calling regstat_compute_ri and is destroyed by
diff --git a/gcc/regset.h b/gcc/regset.h
index af807b03597..c4981c72035 100644
--- a/gcc/regset.h
+++ b/gcc/regset.h
@@ -121,8 +121,7 @@ extern regset fixed_reg_set_regset;
/* An obstack for regsets. */
extern bitmap_obstack reg_obstack;
-/* In cfg.c */
+/* In df-core.c (which should use regset consistently instead of bitmap...) */
extern void dump_regset (regset, FILE *);
-extern void debug_regset (regset);
#endif /* GCC_REGSET_H */
diff --git a/gcc/regstat.c b/gcc/regstat.c
index cecc7278999..ddfb404fbf2 100644
--- a/gcc/regstat.c
+++ b/gcc/regstat.c
@@ -544,3 +544,69 @@ regstat_free_calls_crossed (void)
reg_info_p = NULL;
}
+/* Dump the register info to FILE. */
+
+void
+dump_reg_info (FILE *file)
+{
+ unsigned int i, max = max_reg_num ();
+ if (reload_completed)
+ return;
+
+ if (reg_info_p_size < max)
+ max = reg_info_p_size;
+
+ fprintf (file, "%d registers.\n", max);
+ for (i = FIRST_PSEUDO_REGISTER; i < max; i++)
+ {
+ enum reg_class rclass, altclass;
+
+ if (regstat_n_sets_and_refs)
+ fprintf (file, "\nRegister %d used %d times across %d insns",
+ i, REG_N_REFS (i), REG_LIVE_LENGTH (i));
+ else if (df)
+ fprintf (file, "\nRegister %d used %d times across %d insns",
+ i, DF_REG_USE_COUNT (i) + DF_REG_DEF_COUNT (i), REG_LIVE_LENGTH (i));
+
+ if (REG_BASIC_BLOCK (i) >= NUM_FIXED_BLOCKS)
+ fprintf (file, " in block %d", REG_BASIC_BLOCK (i));
+ if (regstat_n_sets_and_refs)
+ fprintf (file, "; set %d time%s", REG_N_SETS (i),
+ (REG_N_SETS (i) == 1) ? "" : "s");
+ else if (df)
+ fprintf (file, "; set %d time%s", DF_REG_DEF_COUNT (i),
+ (DF_REG_DEF_COUNT (i) == 1) ? "" : "s");
+ if (regno_reg_rtx[i] != NULL && REG_USERVAR_P (regno_reg_rtx[i]))
+ fputs ("; user var", file);
+ if (REG_N_DEATHS (i) != 1)
+ fprintf (file, "; dies in %d places", REG_N_DEATHS (i));
+ if (REG_N_CALLS_CROSSED (i) == 1)
+ fputs ("; crosses 1 call", file);
+ else if (REG_N_CALLS_CROSSED (i))
+ fprintf (file, "; crosses %d calls", REG_N_CALLS_CROSSED (i));
+ if (REG_FREQ_CALLS_CROSSED (i))
+ fprintf (file, "; crosses call with %d frequency", REG_FREQ_CALLS_CROSSED (i));
+ if (regno_reg_rtx[i] != NULL
+ && PSEUDO_REGNO_BYTES (i) != UNITS_PER_WORD)
+ fprintf (file, "; %d bytes", PSEUDO_REGNO_BYTES (i));
+
+ rclass = reg_preferred_class (i);
+ altclass = reg_alternate_class (i);
+ if (rclass != GENERAL_REGS || altclass != ALL_REGS)
+ {
+ if (altclass == ALL_REGS || rclass == ALL_REGS)
+ fprintf (file, "; pref %s", reg_class_names[(int) rclass]);
+ else if (altclass == NO_REGS)
+ fprintf (file, "; %s or none", reg_class_names[(int) rclass]);
+ else
+ fprintf (file, "; pref %s, else %s",
+ reg_class_names[(int) rclass],
+ reg_class_names[(int) altclass]);
+ }
+
+ if (regno_reg_rtx[i] != NULL && REG_POINTER (regno_reg_rtx[i]))
+ fputs ("; pointer", file);
+ fputs (".\n", file);
+ }
+}
+
diff --git a/gcc/reload.c b/gcc/reload.c
index e42cc5c041f..f4f3ed03d85 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -707,6 +707,55 @@ find_valid_class (enum machine_mode outer ATTRIBUTE_UNUSED,
return best_class;
}
+
+/* We are trying to reload a subreg of something that is not a register.
+ Find the largest class which has at least one register valid in
+ mode MODE. OUTER is the mode of the subreg, DEST_CLASS the class in
+ which we would eventually like to obtain the object. */
+
+static enum reg_class
+find_valid_class_1 (enum machine_mode outer ATTRIBUTE_UNUSED,
+ enum machine_mode mode ATTRIBUTE_UNUSED,
+ enum reg_class dest_class ATTRIBUTE_UNUSED)
+{
+ int best_cost = -1;
+ int rclass;
+ int regno;
+ enum reg_class best_class = NO_REGS;
+ unsigned int best_size = 0;
+ int cost;
+
+ for (rclass = 1; rclass < N_REG_CLASSES; rclass++)
+ {
+ int bad = 0;
+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER && !bad; regno++)
+ if (TEST_HARD_REG_BIT (reg_class_contents[rclass], regno)
+ && !HARD_REGNO_MODE_OK (regno, mode))
+ bad = 1;
+
+ if (bad)
+ continue;
+
+ cost = register_move_cost (outer, (enum reg_class) rclass, dest_class);
+
+ if ((reg_class_size[rclass] > best_size
+ && (best_cost < 0 || best_cost >= cost))
+ || best_cost > cost)
+ {
+ best_class = (enum reg_class) rclass;
+ best_size = reg_class_size[rclass];
+ best_cost = register_move_cost (outer, (enum reg_class) rclass,
+ dest_class);
+ }
+ }
+
+ gcc_assert (best_size != 0);
+
+#ifdef LIMIT_RELOAD_CLASS
+ best_class = LIMIT_RELOAD_CLASS (mode, best_class);
+#endif
+ return best_class;
+}
/* Return the number of a previously made reload that can be combined with
a new one, or n_reloads if none of the existing reloads can be used.
@@ -925,6 +974,8 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
int secondary_in_reload = -1, secondary_out_reload = -1;
enum insn_code secondary_in_icode = CODE_FOR_nothing;
enum insn_code secondary_out_icode = CODE_FOR_nothing;
+ enum reg_class subreg_in_class ATTRIBUTE_UNUSED;
+ subreg_in_class = NO_REGS;
/* INMODE and/or OUTMODE could be VOIDmode if no mode
has been specified for the operand. In that case,
@@ -1091,16 +1142,18 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
if (in != 0 && reload_inner_reg_of_subreg (in, inmode, false))
{
- enum reg_class in_class = rclass;
-
if (REG_P (SUBREG_REG (in)))
- in_class
+ subreg_in_class
= find_valid_class (inmode, GET_MODE (SUBREG_REG (in)),
subreg_regno_offset (REGNO (SUBREG_REG (in)),
GET_MODE (SUBREG_REG (in)),
SUBREG_BYTE (in),
GET_MODE (in)),
REGNO (SUBREG_REG (in)));
+ else if (GET_CODE (SUBREG_REG (in)) == SYMBOL_REF)
+ subreg_in_class = find_valid_class_1 (inmode,
+ GET_MODE (SUBREG_REG (in)),
+ rclass);
/* This relies on the fact that emit_reload_insns outputs the
instructions for input reloads of type RELOAD_OTHER in the same
@@ -1108,7 +1161,7 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
RELOAD_OTHER, we are guaranteed that this inner reload will be
output before the outer reload. */
push_reload (SUBREG_REG (in), NULL_RTX, &SUBREG_REG (in), (rtx *) 0,
- in_class, VOIDmode, VOIDmode, 0, 0, opnum, type);
+ subreg_in_class, VOIDmode, VOIDmode, 0, 0, opnum, type);
dont_remove_subreg = 1;
}
@@ -1327,13 +1380,15 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
So add an additional reload. */
#ifdef SECONDARY_MEMORY_NEEDED
- /* If a memory location is needed for the copy, make one. */
- if (in != 0
+ if (subreg_in_class == NO_REGS
+ && in != 0
&& (REG_P (in)
|| (GET_CODE (in) == SUBREG && REG_P (SUBREG_REG (in))))
- && reg_or_subregno (in) < FIRST_PSEUDO_REGISTER
- && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (reg_or_subregno (in)),
- rclass, inmode))
+ && reg_or_subregno (in) < FIRST_PSEUDO_REGISTER)
+ subreg_in_class = REGNO_REG_CLASS (reg_or_subregno (in));
+ /* If a memory location is needed for the copy, make one. */
+ if (subreg_in_class != NO_REGS
+ && SECONDARY_MEMORY_NEEDED (subreg_in_class, rclass, inmode))
get_secondary_mem (in, inmode, opnum, type);
#endif
@@ -2263,9 +2318,7 @@ operands_match_p (rtx x, rtx y)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return 0;
case LABEL_REF:
@@ -3363,7 +3416,7 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
case 'E':
case 'F':
- if (GET_CODE (operand) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (operand)
|| (GET_CODE (operand) == CONST_VECTOR
&& (GET_MODE_CLASS (GET_MODE (operand))
== MODE_VECTOR_FLOAT)))
@@ -3372,15 +3425,13 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
case 'G':
case 'H':
- if (GET_CODE (operand) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (operand)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (operand, c, p))
win = 1;
break;
case 's':
- if (CONST_INT_P (operand)
- || (GET_CODE (operand) == CONST_DOUBLE
- && GET_MODE (operand) == VOIDmode))
+ if (CONST_INT_P (operand) || CONST_DOUBLE_AS_INT_P (operand))
break;
case 'i':
if (CONSTANT_P (operand)
@@ -3389,9 +3440,7 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
break;
case 'n':
- if (CONST_INT_P (operand)
- || (GET_CODE (operand) == CONST_DOUBLE
- && GET_MODE (operand) == VOIDmode))
+ if (CONST_INT_P (operand) || CONST_DOUBLE_AS_INT_P (operand))
win = 1;
break;
@@ -5290,11 +5339,8 @@ subst_reg_equivs (rtx ad, rtx insn)
switch (code)
{
case HIGH:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case PC:
@@ -6810,7 +6856,7 @@ find_equiv_reg (rtx goal, rtx insn, enum reg_class rclass, int other,
&& (valueno
= true_regnum (valtry = SET_DEST (pat))) >= 0)
|| (REG_P (SET_DEST (pat))
- && GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
+ && CONST_DOUBLE_AS_FLOAT_P (XEXP (tem, 0))
&& SCALAR_FLOAT_MODE_P (GET_MODE (XEXP (tem, 0)))
&& CONST_INT_P (goal)
&& 0 != (goaltry
@@ -6824,7 +6870,7 @@ find_equiv_reg (rtx goal, rtx insn, enum reg_class rclass, int other,
|| (goal_const && (tem = find_reg_note (p, REG_EQUIV,
NULL_RTX))
&& REG_P (SET_DEST (pat))
- && GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
+ && CONST_DOUBLE_AS_FLOAT_P (XEXP (tem, 0))
&& SCALAR_FLOAT_MODE_P (GET_MODE (XEXP (tem, 0)))
&& CONST_INT_P (goal)
&& 0 != (goaltry = operand_subword (XEXP (tem, 0), 1, 0,
diff --git a/gcc/reload.h b/gcc/reload.h
index 29d15ea75ae..a672ddc45db 100644
--- a/gcc/reload.h
+++ b/gcc/reload.h
@@ -243,19 +243,19 @@ typedef struct reg_equivs
} reg_equivs_t;
#define reg_equiv_constant(ELT) \
- VEC_index (reg_equivs_t, reg_equivs, (ELT))->constant
+ VEC_index (reg_equivs_t, reg_equivs, (ELT)).constant
#define reg_equiv_invariant(ELT) \
- VEC_index (reg_equivs_t, reg_equivs, (ELT))->invariant
+ VEC_index (reg_equivs_t, reg_equivs, (ELT)).invariant
#define reg_equiv_memory_loc(ELT) \
- VEC_index (reg_equivs_t, reg_equivs, (ELT))->memory_loc
+ VEC_index (reg_equivs_t, reg_equivs, (ELT)).memory_loc
#define reg_equiv_address(ELT) \
- VEC_index (reg_equivs_t, reg_equivs, (ELT))->address
+ VEC_index (reg_equivs_t, reg_equivs, (ELT)).address
#define reg_equiv_mem(ELT) \
- VEC_index (reg_equivs_t, reg_equivs, (ELT))->mem
+ VEC_index (reg_equivs_t, reg_equivs, (ELT)).mem
#define reg_equiv_alt_mem_list(ELT) \
- VEC_index (reg_equivs_t, reg_equivs, (ELT))->alt_mem_list
+ VEC_index (reg_equivs_t, reg_equivs, (ELT)).alt_mem_list
#define reg_equiv_init(ELT) \
- VEC_index (reg_equivs_t, reg_equivs, (ELT))->init
+ VEC_index (reg_equivs_t, reg_equivs, (ELT)).init
DEF_VEC_O(reg_equivs_t);
DEF_VEC_ALLOC_O(reg_equivs_t, gc);
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 00980ce8786..77c7ba0911a 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3. If not see
#include "ira.h"
#include "target.h"
#include "emit-rtl.h"
+#include "dumpfile.h"
/* This file contains the reload pass of the compiler, which is
run after register allocation has been done. It checks that
@@ -663,7 +664,8 @@ grow_reg_equivs (void)
for (i = old_size; i < max_regno; i++)
{
VEC_quick_insert (reg_equivs_t, reg_equivs, i, 0);
- memset (VEC_index (reg_equivs_t, reg_equivs, i), 0, sizeof (reg_equivs_t));
+ memset (&VEC_index (reg_equivs_t, reg_equivs, i), 0,
+ sizeof (reg_equivs_t));
}
}
@@ -2564,10 +2566,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn,
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CONST:
case SYMBOL_REF:
case CODE_LABEL:
@@ -2981,10 +2980,7 @@ elimination_effects (rtx x, enum machine_mode mem_mode)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CONST:
case SYMBOL_REF:
case CODE_LABEL:
@@ -4452,13 +4448,10 @@ scan_paradoxical_subregs (rtx x)
switch (code)
{
case REG:
- case CONST_INT:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR: /* shouldn't happen, but just in case. */
+ CASE_CONST_ANY:
case CC0:
case PC:
case USE:
@@ -8468,6 +8461,20 @@ emit_insn_if_valid_for_reload (rtx insn)
return NULL;
}
+#ifdef SECONDARY_MEMORY_NEEDED
+/* If X is not a subreg, return it unmodified. If it is a subreg,
+ look up whether we made a replacement for the SUBREG_REG. Return
+ either the replacement or the SUBREG_REG. */
+
+static rtx
+replaced_subreg (rtx x)
+{
+ if (GET_CODE (x) == SUBREG)
+ return find_replacement (&SUBREG_REG (x));
+ return x;
+}
+#endif
+
/* Emit code to perform a reload from IN (which may be a reload register) to
OUT (which may also be a reload register). IN or OUT is from operand
OPNUM with reload type TYPE.
@@ -8479,6 +8486,9 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type)
{
rtx last = get_last_insn ();
rtx tem;
+#ifdef SECONDARY_MEMORY_NEEDED
+ rtx tem1, tem2;
+#endif
/* If IN is a paradoxical SUBREG, remove it and try to put the
opposite SUBREG on OUT. Likewise for a paradoxical SUBREG on OUT. */
@@ -8615,14 +8625,12 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type)
#ifdef SECONDARY_MEMORY_NEEDED
/* If we need a memory location to do the move, do it that way. */
- else if ((REG_P (in)
- || (GET_CODE (in) == SUBREG && REG_P (SUBREG_REG (in))))
- && reg_or_subregno (in) < FIRST_PSEUDO_REGISTER
- && (REG_P (out)
- || (GET_CODE (out) == SUBREG && REG_P (SUBREG_REG (out))))
- && reg_or_subregno (out) < FIRST_PSEUDO_REGISTER
- && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (reg_or_subregno (in)),
- REGNO_REG_CLASS (reg_or_subregno (out)),
+ else if ((tem1 = replaced_subreg (in), tem2 = replaced_subreg (out),
+ (REG_P (tem1) && REG_P (tem2)))
+ && REGNO (tem1) < FIRST_PSEUDO_REGISTER
+ && REGNO (tem2) < FIRST_PSEUDO_REGISTER
+ && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (tem1)),
+ REGNO_REG_CLASS (REGNO (tem2)),
GET_MODE (out)))
{
/* Get the memory to use and rewrite both registers to its mode. */
diff --git a/gcc/reorg.c b/gcc/reorg.c
index f4bd8685e45..d7180267663 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -132,7 +132,6 @@ along with GCC; see the file COPYING3. If not see
#include "resource.h"
#include "except.h"
#include "params.h"
-#include "timevar.h"
#include "target.h"
#include "tree-pass.h"
@@ -4055,28 +4054,6 @@ dbr_schedule (rtx first)
fprintf (dump_file, "\n");
}
- /* For all JUMP insns, fill in branch prediction notes, so that during
- assembler output a target can set branch prediction bits in the code.
- We have to do this now, as up until this point the destinations of
- JUMPS can be moved around and changed, but past right here that cannot
- happen. */
- for (insn = first; insn; insn = NEXT_INSN (insn))
- {
- int pred_flags;
-
- if (NONJUMP_INSN_P (insn))
- {
- rtx pat = PATTERN (insn);
-
- if (GET_CODE (pat) == SEQUENCE)
- insn = XVECEXP (pat, 0, 0);
- }
- if (!JUMP_P (insn))
- continue;
-
- pred_flags = get_jump_flags (insn, JUMP_LABEL (insn));
- add_reg_note (insn, REG_BR_PRED, GEN_INT (pred_flags));
- }
free_resource_info ();
free (uid_to_ruid);
#ifdef DELAY_SLOTS_FOR_EPILOGUE
diff --git a/gcc/resource.c b/gcc/resource.c
index c47e1ab3bc0..d2ae73200d5 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -215,10 +215,7 @@ mark_referenced_resources (rtx x, struct resources *res,
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case PC:
case SYMBOL_REF:
case LABEL_REF:
@@ -632,10 +629,7 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
case BARRIER:
case CODE_LABEL:
case USE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case LABEL_REF:
case SYMBOL_REF:
case CONST:
diff --git a/gcc/rtl.c b/gcc/rtl.c
index ec48839f61e..2edc4970320 100644
--- a/gcc/rtl.c
+++ b/gcc/rtl.c
@@ -135,12 +135,10 @@ const char * const reg_note_name[REG_NOTE_MAX] =
#undef DEF_REG_NOTE
};
-#ifdef GATHER_STATISTICS
static int rtx_alloc_counts[(int) LAST_AND_UNUSED_RTX_CODE];
static int rtx_alloc_sizes[(int) LAST_AND_UNUSED_RTX_CODE];
static int rtvec_alloc_counts;
static int rtvec_alloc_sizes;
-#endif
/* Allocate an rtx vector of N elements.
@@ -157,10 +155,11 @@ rtvec_alloc (int n)
PUT_NUM_ELEM (rt, n);
-#ifdef GATHER_STATISTICS
- rtvec_alloc_counts++;
- rtvec_alloc_sizes += n * sizeof (rtx);
-#endif
+ if (GATHER_STATISTICS)
+ {
+ rtvec_alloc_counts++;
+ rtvec_alloc_sizes += n * sizeof (rtx);
+ }
return rt;
}
@@ -205,10 +204,11 @@ rtx_alloc_stat (RTX_CODE code MEM_STAT_DECL)
memset (rt, 0, RTX_HDR_SIZE);
PUT_CODE (rt, code);
-#ifdef GATHER_STATISTICS
- rtx_alloc_counts[code]++;
- rtx_alloc_sizes[code] += RTX_CODE_SIZE (code);
-#endif
+ if (GATHER_STATISTICS)
+ {
+ rtx_alloc_counts[code]++;
+ rtx_alloc_sizes[code] += RTX_CODE_SIZE (code);
+ }
return rt;
}
@@ -248,10 +248,7 @@ copy_rtx (rtx orig)
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -400,9 +397,7 @@ rtx_equal_p_cb (const_rtx x, const_rtx y, rtx_equal_p_callback_function cb)
case DEBUG_EXPR:
case VALUE:
case SCRATCH:
- case CONST_DOUBLE:
- case CONST_INT:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return 0;
case DEBUG_IMPLICIT_PTR:
@@ -539,9 +534,7 @@ rtx_equal_p (const_rtx x, const_rtx y)
case DEBUG_EXPR:
case VALUE:
case SCRATCH:
- case CONST_DOUBLE:
- case CONST_INT:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return 0;
case DEBUG_IMPLICIT_PTR:
@@ -706,10 +699,16 @@ iterative_hash_rtx (const_rtx x, hashval_t hash)
void
dump_rtx_statistics (void)
{
-#ifdef GATHER_STATISTICS
int i;
int total_counts = 0;
int total_sizes = 0;
+
+ if (! GATHER_STATISTICS)
+ {
+ fprintf (stderr, "No RTX statistics\n");
+ return;
+ }
+
fprintf (stderr, "\nRTX Kind Count Bytes\n");
fprintf (stderr, "---------------------------------------\n");
for (i = 0; i < LAST_AND_UNUSED_RTX_CODE; i++)
@@ -731,7 +730,6 @@ dump_rtx_statistics (void)
fprintf (stderr, "%-20s %7d %10d\n",
"Total", total_counts, total_sizes);
fprintf (stderr, "---------------------------------------\n");
-#endif
}
#if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007)
diff --git a/gcc/rtl.def b/gcc/rtl.def
index 0695d640fce..e8a6adfd099 100644
--- a/gcc/rtl.def
+++ b/gcc/rtl.def
@@ -322,9 +322,10 @@ DEF_RTL_EXPR(CONST_INT, "const_int", "w", RTX_CONST_OBJ)
/* fixed-point constant */
DEF_RTL_EXPR(CONST_FIXED, "const_fixed", "www", RTX_CONST_OBJ)
-/* numeric floating point constant.
- Operands hold the value. They are all 'w' and there may be from 2 to 6;
- see real.h. */
+/* numeric floating point or integer constant. If the mode is
+ VOIDmode it is an int otherwise it has a floating point mode and a
+ floating point value. Operands hold the value. They are all 'w'
+ and there may be from 2 to 6; see real.h. */
DEF_RTL_EXPR(CONST_DOUBLE, "const_double", CONST_DOUBLE_FORMAT, RTX_CONST_OBJ)
/* Describes a vector constant. */
diff --git a/gcc/rtl.h b/gcc/rtl.h
index cbed2005e32..42378b9f69f 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3. If not see
#include "fixed-value.h"
#include "alias.h"
#include "hashtab.h"
+#include "flags.h"
#undef FFS /* Some systems predefine this symbol; don't let it interfere. */
#undef FLOAT /* Likewise. */
@@ -54,8 +55,13 @@ enum rtx_code {
NUM_RTX_CODE.
Assumes default enum value assignment. */
+/* The cast here, saves many elsewhere. */
#define NUM_RTX_CODE ((int) LAST_AND_UNUSED_RTX_CODE)
- /* The cast here, saves many elsewhere. */
+
+/* Similar, but since generator files get more entries... */
+#ifdef GENERATOR_FILE
+# define NON_GENERATOR_NUM_RTX_CODE ((int) MATCH_OPERAND)
+#endif
/* Register Transfer Language EXPRESSIONS CODE CLASSES */
@@ -195,7 +201,7 @@ union rtunion_def
addr_diff_vec_flags rt_addr_diff_vec_flags;
struct cselib_val_struct *rt_cselib;
tree rt_tree;
- struct basic_block_def *rt_bb;
+ basic_block rt_bb;
mem_attrs *rt_mem;
reg_attrs *rt_reg;
struct constant_descriptor_rtx *rt_constant;
@@ -397,6 +403,24 @@ struct GTY((variable_size)) rtvec_def {
/* Predicate yielding nonzero iff X is an rtx for a memory location. */
#define MEM_P(X) (GET_CODE (X) == MEM)
+/* Match CONST_*s that can represent compile-time constant integers. */
+#define CASE_CONST_SCALAR_INT \
+ case CONST_INT: \
+ case CONST_DOUBLE
+
+/* Match CONST_*s for which pointer equality corresponds to value equality. */
+#define CASE_CONST_UNIQUE \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_FIXED
+
+/* Match all CONST_* rtxes. */
+#define CASE_CONST_ANY \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_FIXED: \
+ case CONST_VECTOR
+
/* Predicate yielding nonzero iff X is an rtx for a constant integer. */
#define CONST_INT_P(X) (GET_CODE (X) == CONST_INT)
@@ -404,6 +428,14 @@ struct GTY((variable_size)) rtvec_def {
or floating point constant. */
#define CONST_DOUBLE_P(X) (GET_CODE (X) == CONST_DOUBLE)
+/* Predicate yielding true iff X is an rtx for a double-int. */
+#define CONST_DOUBLE_AS_INT_P(X) \
+ (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) == VOIDmode)
+
+/* Predicate yielding true iff X is an rtx for a double-int. */
+#define CONST_DOUBLE_AS_FLOAT_P(X) \
+ (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode)
+
/* Predicate yielding nonzero iff X is a label insn. */
#define LABEL_P(X) (GET_CODE (X) == CODE_LABEL)
@@ -423,7 +455,7 @@ struct GTY((variable_size)) rtvec_def {
#define NONDEBUG_INSN_P(X) (INSN_P (X) && !DEBUG_INSN_P (X))
/* Nonzero if DEBUG_INSN_P may possibly hold. */
-#define MAY_HAVE_DEBUG_INSNS MAY_HAVE_DEBUG_STMTS
+#define MAY_HAVE_DEBUG_INSNS (flag_var_tracking_assignments)
/* Predicate yielding nonzero iff X is a real insn. */
#define INSN_P(X) \
@@ -1734,7 +1766,7 @@ extern rtx assign_temp (tree, int, int);
/* In emit-rtl.c */
extern rtx emit_insn_before (rtx, rtx);
-extern rtx emit_insn_before_noloc (rtx, rtx, struct basic_block_def *);
+extern rtx emit_insn_before_noloc (rtx, rtx, basic_block);
extern rtx emit_insn_before_setloc (rtx, rtx, int);
extern rtx emit_jump_insn_before (rtx, rtx);
extern rtx emit_jump_insn_before_noloc (rtx, rtx);
@@ -1749,7 +1781,7 @@ extern rtx emit_barrier_before (rtx);
extern rtx emit_label_before (rtx, rtx);
extern rtx emit_note_before (enum insn_note, rtx);
extern rtx emit_insn_after (rtx, rtx);
-extern rtx emit_insn_after_noloc (rtx, rtx, struct basic_block_def *);
+extern rtx emit_insn_after_noloc (rtx, rtx, basic_block);
extern rtx emit_insn_after_setloc (rtx, rtx, int);
extern rtx emit_jump_insn_after (rtx, rtx);
extern rtx emit_jump_insn_after_noloc (rtx, rtx);
@@ -1776,8 +1808,6 @@ extern rtx emit_clobber (rtx);
extern rtx gen_use (rtx);
extern rtx emit_use (rtx);
extern rtx make_insn_raw (rtx);
-extern rtx make_debug_insn_raw (rtx);
-extern rtx make_jump_insn_raw (rtx);
extern void add_function_usage_to (rtx, rtx);
extern rtx last_call_insn (void);
extern rtx previous_insn (rtx);
@@ -2434,8 +2464,8 @@ extern void unshare_all_rtl_in_chain (rtx);
extern void verify_rtl_sharing (void);
extern void link_cc0_insns (rtx);
extern void add_insn (rtx);
-extern void add_insn_before (rtx, rtx, struct basic_block_def *);
-extern void add_insn_after (rtx, rtx, struct basic_block_def *);
+extern void add_insn_before (rtx, rtx, basic_block);
+extern void add_insn_after (rtx, rtx, basic_block);
extern void remove_insn (rtx);
extern rtx emit (rtx);
extern void delete_insn (rtx);
@@ -2456,17 +2486,13 @@ extern unsigned int extended_count (const_rtx, enum machine_mode, int);
extern rtx remove_death (unsigned int, rtx);
extern void dump_combine_stats (FILE *);
extern void dump_combine_total_stats (FILE *);
+extern rtx make_compound_operation (rtx, enum rtx_code);
/* In cfgcleanup.c */
extern void delete_dead_jumptables (void);
/* In sched-vis.c. */
-extern void debug_bb_n_slim (int);
-extern void debug_bb_slim (struct basic_block_def *);
-extern void print_rtl_slim (FILE *, rtx, rtx, int, int);
-extern void print_rtl_slim_with_bb (FILE *, rtx, int);
-extern void dump_insn_slim (FILE *f, rtx x);
-extern void debug_insn_slim (rtx x);
+extern void dump_insn_slim (FILE *, const_rtx x);
/* In sched-rgn.c. */
extern void schedule_insns (void);
@@ -2509,13 +2535,9 @@ extern HOST_WIDE_INT find_args_size_adjust (rtx);
extern int fixup_args_size_notes (rtx, rtx, int);
/* In cfgrtl.c */
-extern void print_rtl_with_bb (FILE *, const_rtx);
+extern void print_rtl_with_bb (FILE *, const_rtx, int);
extern rtx duplicate_insn_chain (rtx, rtx);
-/* In cfg.c. */
-extern void dump_reg_info (FILE *);
-extern void dump_flow_info (FILE *, int);
-
/* In expmed.c */
extern void init_expmed (void);
extern void expand_inc (rtx, rtx);
@@ -2625,7 +2647,7 @@ extern rtx compare_and_jump_seq (rtx, rtx, enum rtx_code, rtx, int, rtx);
/* In loop-iv.c */
extern rtx canon_condition (rtx);
-extern void simplify_using_condition (rtx, rtx *, struct bitmap_head_def *);
+extern void simplify_using_condition (rtx, rtx *, bitmap);
/* In final.c */
extern unsigned int compute_alignments (void);
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index f3527b4f1a6..0f791e2e4df 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -97,10 +97,7 @@ rtx_unstable_p (const_rtx x)
return !MEM_READONLY_P (x) || rtx_unstable_p (XEXP (x, 0));
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
return 0;
@@ -170,10 +167,7 @@ rtx_varies_p (const_rtx x, bool for_alias)
return !MEM_READONLY_P (x) || rtx_varies_p (XEXP (x, 0), for_alias);
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
return 0;
@@ -585,10 +579,7 @@ count_occurrences (const_rtx x, const_rtx find, int count_dest)
switch (code)
{
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -690,10 +681,7 @@ reg_mentioned_p (const_rtx reg, const_rtx in)
case PC:
return 0;
- case CONST_INT:
- case CONST_VECTOR:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_ANY:
/* These are kept unique for a given value. */
return 0;
@@ -887,10 +875,7 @@ modified_between_p (const_rtx x, const_rtx start, const_rtx end)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
@@ -946,10 +931,7 @@ modified_in_p (const_rtx x, const_rtx insn)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
@@ -2095,11 +2077,8 @@ volatile_insn_p (const_rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CC0:
case PC:
case REG:
@@ -2160,11 +2139,8 @@ volatile_refs_p (const_rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CC0:
case PC:
case REG:
@@ -2223,11 +2199,8 @@ side_effects_p (const_rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CC0:
case PC:
case REG:
@@ -2312,10 +2285,7 @@ may_trap_p_1 (const_rtx x, unsigned flags)
switch (code)
{
/* Handle these cases quickly. */
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case LABEL_REF:
case CONST:
@@ -2514,10 +2484,7 @@ inequality_comparisons_p (const_rtx x)
case SCRATCH:
case PC:
case CC0:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
@@ -2571,11 +2538,6 @@ replace_rtx (rtx x, rtx from, rtx to)
int i, j;
const char *fmt;
- /* The following prevents loops occurrence when we change MEM in
- CONST_DOUBLE onto the same CONST_DOUBLE. */
- if (x != 0 && GET_CODE (x) == CONST_DOUBLE)
- return x;
-
if (x == from)
return to;
@@ -2765,10 +2727,7 @@ computed_jump_p_1 (const_rtx x)
return 0;
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case REG:
return 1;
@@ -3755,10 +3714,17 @@ rtx_cost (rtx x, enum rtx_code outer_code, int opno, bool speed)
enum rtx_code code;
const char *fmt;
int total;
+ int factor;
if (x == 0)
return 0;
+ /* A size N times larger than UNITS_PER_WORD likely needs N times as
+ many insns, taking N times as long. */
+ factor = GET_MODE_SIZE (GET_MODE (x)) / UNITS_PER_WORD;
+ if (factor == 0)
+ factor = 1;
+
/* Compute the default costs of certain things.
Note that targetm.rtx_costs can override the defaults. */
@@ -3766,20 +3732,31 @@ rtx_cost (rtx x, enum rtx_code outer_code, int opno, bool speed)
switch (code)
{
case MULT:
- total = COSTS_N_INSNS (5);
+ /* Multiplication has time-complexity O(N*N), where N is the
+ number of units (translated from digits) when using
+ schoolbook long multiplication. */
+ total = factor * factor * COSTS_N_INSNS (5);
break;
case DIV:
case UDIV:
case MOD:
case UMOD:
- total = COSTS_N_INSNS (7);
+ /* Similarly, complexity for schoolbook long division. */
+ total = factor * factor * COSTS_N_INSNS (7);
break;
case USE:
/* Used in combine.c as a marker. */
total = 0;
break;
+ case SET:
+ /* A SET doesn't have a mode, so let's look at the SET_DEST to get
+ the mode for the factor. */
+ factor = GET_MODE_SIZE (GET_MODE (SET_DEST (x))) / UNITS_PER_WORD;
+ if (factor == 0)
+ factor = 1;
+ /* Pass through. */
default:
- total = COSTS_N_INSNS (1);
+ total = factor * COSTS_N_INSNS (1);
}
switch (code)
@@ -3792,8 +3769,7 @@ rtx_cost (rtx x, enum rtx_code outer_code, int opno, bool speed)
/* If we can't tie these modes, make this expensive. The larger
the mode, the more expensive it is. */
if (! MODES_TIEABLE_P (GET_MODE (x), GET_MODE (SUBREG_REG (x))))
- return COSTS_N_INSNS (2
- + GET_MODE_SIZE (GET_MODE (x)) / UNITS_PER_WORD);
+ return COSTS_N_INSNS (2 + factor);
break;
default:
@@ -5260,7 +5236,7 @@ bool
constant_pool_constant_p (rtx x)
{
x = avoid_constant_pool_reference (x);
- return GET_CODE (x) == CONST_DOUBLE;
+ return CONST_DOUBLE_P (x);
}
/* If M is a bitmask that selects a field of low-order bits within an item but
@@ -5374,7 +5350,7 @@ split_double (rtx value, rtx *first, rtx *second)
}
}
}
- else if (GET_CODE (value) != CONST_DOUBLE)
+ else if (!CONST_DOUBLE_P (value))
{
if (WORDS_BIG_ENDIAN)
{
diff --git a/gcc/sbitmap.c b/gcc/sbitmap.c
index 23d459ec309..6aac459f826 100644
--- a/gcc/sbitmap.c
+++ b/gcc/sbitmap.c
@@ -1,6 +1,5 @@
/* Simple bitmaps.
- Copyright (C) 1999, 2000, 2002, 2003, 2004, 2006, 2007, 2008, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1999-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -23,19 +22,16 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "sbitmap.h"
-#ifdef IN_GCC
-/* FIXME: sbitmap is just a data structure, but we define dataflow functions
- here also. This is conditional on IN_GCC (see second #ifdef IN_GCC
- further down).
- For now, also only conditionally include basic-block.h, but we should
- find a better place for the dataflow functions. Perhaps cfganal.c? */
-#include "basic-block.h"
+/* This suffices for roughly 99% of the hosts we run on, and the rest
+ don't have 256 bit integers. */
+#if SBITMAP_ELT_BITS > 255
+#error Need to increase size of datatype used for popcount
#endif
#if GCC_VERSION >= 3400
-# if HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONG
+# if SBITMAP_ELT_BITS == HOST_BITS_PER_LONG
# define do_popcount(x) __builtin_popcountl(x)
-# elif HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONGLONG
+# elif SBITMAP_ELT_BITS == HOST_BITS_PER_LONGLONG
# define do_popcount(x) __builtin_popcountll(x)
# else
# error "internal error: sbitmap.h and hwint.h are inconsistent"
@@ -744,184 +740,6 @@ sbitmap_a_and_b_or_c (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitm
*dstp++ = *ap++ & (*bp++ | *cp++);
}
-#ifdef IN_GCC
-/* FIXME: depends on basic-block.h, see comment at start of this file.
-
- Ironically, the comments before the functions below suggest they do
- dataflow using the "new flow graph structures", but that's the *old*
- new data structures. The functions receive basic block numbers and
- use BASIC_BLOCK(idx) to get the basic block. They should receive
- the basic block directly, *sigh*. */
-
-/* Set the bitmap DST to the intersection of SRC of successors of
- block number BB, using the new flow graph structures. */
-
-void
-sbitmap_intersection_of_succs (sbitmap dst, sbitmap *src, int bb)
-{
- basic_block b = BASIC_BLOCK (bb);
- unsigned int set_size = dst->size;
- edge e;
- unsigned ix;
-
- gcc_assert (!dst->popcount);
-
- for (e = NULL, ix = 0; ix < EDGE_COUNT (b->succs); ix++)
- {
- e = EDGE_SUCC (b, ix);
- if (e->dest == EXIT_BLOCK_PTR)
- continue;
-
- sbitmap_copy (dst, src[e->dest->index]);
- break;
- }
-
- if (e == 0)
- sbitmap_ones (dst);
- else
- for (++ix; ix < EDGE_COUNT (b->succs); ix++)
- {
- unsigned int i;
- sbitmap_ptr p, r;
-
- e = EDGE_SUCC (b, ix);
- if (e->dest == EXIT_BLOCK_PTR)
- continue;
-
- p = src[e->dest->index]->elms;
- r = dst->elms;
- for (i = 0; i < set_size; i++)
- *r++ &= *p++;
- }
-}
-
-/* Set the bitmap DST to the intersection of SRC of predecessors of
- block number BB, using the new flow graph structures. */
-
-void
-sbitmap_intersection_of_preds (sbitmap dst, sbitmap *src, int bb)
-{
- basic_block b = BASIC_BLOCK (bb);
- unsigned int set_size = dst->size;
- edge e;
- unsigned ix;
-
- gcc_assert (!dst->popcount);
-
- for (e = NULL, ix = 0; ix < EDGE_COUNT (b->preds); ix++)
- {
- e = EDGE_PRED (b, ix);
- if (e->src == ENTRY_BLOCK_PTR)
- continue;
-
- sbitmap_copy (dst, src[e->src->index]);
- break;
- }
-
- if (e == 0)
- sbitmap_ones (dst);
- else
- for (++ix; ix < EDGE_COUNT (b->preds); ix++)
- {
- unsigned int i;
- sbitmap_ptr p, r;
-
- e = EDGE_PRED (b, ix);
- if (e->src == ENTRY_BLOCK_PTR)
- continue;
-
- p = src[e->src->index]->elms;
- r = dst->elms;
- for (i = 0; i < set_size; i++)
- *r++ &= *p++;
- }
-}
-
-/* Set the bitmap DST to the union of SRC of successors of
- block number BB, using the new flow graph structures. */
-
-void
-sbitmap_union_of_succs (sbitmap dst, sbitmap *src, int bb)
-{
- basic_block b = BASIC_BLOCK (bb);
- unsigned int set_size = dst->size;
- edge e;
- unsigned ix;
-
- gcc_assert (!dst->popcount);
-
- for (ix = 0; ix < EDGE_COUNT (b->succs); ix++)
- {
- e = EDGE_SUCC (b, ix);
- if (e->dest == EXIT_BLOCK_PTR)
- continue;
-
- sbitmap_copy (dst, src[e->dest->index]);
- break;
- }
-
- if (ix == EDGE_COUNT (b->succs))
- sbitmap_zero (dst);
- else
- for (ix++; ix < EDGE_COUNT (b->succs); ix++)
- {
- unsigned int i;
- sbitmap_ptr p, r;
-
- e = EDGE_SUCC (b, ix);
- if (e->dest == EXIT_BLOCK_PTR)
- continue;
-
- p = src[e->dest->index]->elms;
- r = dst->elms;
- for (i = 0; i < set_size; i++)
- *r++ |= *p++;
- }
-}
-
-/* Set the bitmap DST to the union of SRC of predecessors of
- block number BB, using the new flow graph structures. */
-
-void
-sbitmap_union_of_preds (sbitmap dst, sbitmap *src, int bb)
-{
- basic_block b = BASIC_BLOCK (bb);
- unsigned int set_size = dst->size;
- edge e;
- unsigned ix;
-
- gcc_assert (!dst->popcount);
-
- for (ix = 0; ix < EDGE_COUNT (b->preds); ix++)
- {
- e = EDGE_PRED (b, ix);
- if (e->src== ENTRY_BLOCK_PTR)
- continue;
-
- sbitmap_copy (dst, src[e->src->index]);
- break;
- }
-
- if (ix == EDGE_COUNT (b->preds))
- sbitmap_zero (dst);
- else
- for (ix++; ix < EDGE_COUNT (b->preds); ix++)
- {
- unsigned int i;
- sbitmap_ptr p, r;
-
- e = EDGE_PRED (b, ix);
- if (e->src == ENTRY_BLOCK_PTR)
- continue;
-
- p = src[e->src->index]->elms;
- r = dst->elms;
- for (i = 0; i < set_size; i++)
- *r++ |= *p++;
- }
-}
-#endif
-
/* Return number of first bit set in the bitmap, -1 if none. */
int
@@ -1021,13 +839,13 @@ void
dump_sbitmap_vector (FILE *file, const char *title, const char *subtitle,
sbitmap *bmaps, int n_maps)
{
- int bb;
+ int i;
fprintf (file, "%s\n", title);
- for (bb = 0; bb < n_maps; bb++)
+ for (i = 0; i < n_maps; i++)
{
- fprintf (file, "%s %d\n", subtitle, bb);
- dump_sbitmap (file, bmaps[bb]);
+ fprintf (file, "%s %d\n", subtitle, i);
+ dump_sbitmap (file, bmaps[i]);
}
fprintf (file, "\n");
diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h
index f78e0bf2866..84aeb8718bc 100644
--- a/gcc/sbitmap.h
+++ b/gcc/sbitmap.h
@@ -1,6 +1,5 @@
/* Simple bitmaps.
- Copyright (C) 1999, 2000, 2002, 2003, 2004, 2006, 2007, 2008, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1999-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -21,21 +20,69 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_SBITMAP_H
#define GCC_SBITMAP_H
-/* It's not clear yet whether using bitmap.[ch] will be a win.
- It should be straightforward to convert so for now we keep things simple
- while more important issues are dealt with. */
-
-#define SBITMAP_ELT_BITS ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT)
+/* Implementation of sets using simple bitmap vectors.
+
+ This set representation is suitable for non-sparse sets with a known
+ (a priori) universe. The set is represented as a simple array of the
+ host's fastest unsigned integer. For a given member I in the set:
+ - the element for I will be at sbitmap[I / (bits per element)]
+ - the position for I within element is I % (bits per element)
+
+ This representation is very space-efficient for large non-sparse sets
+ with random access patterns.
+
+ The following operations can be performed in O(1) time:
+
+ * set_size : SBITMAP_SIZE
+ * member_p : TEST_BIT
+ * add_member : SET_BIT
+ * remove_member : RESET_BIT
+
+ Most other operations on this set representation are O(U) where U is
+ the size of the set universe:
+
+ * clear : sbitmap_zero
+ * cardinality : sbitmap_popcount
+ * choose_one : sbitmap_first_set_bit /
+ sbitmap_last_set_bit
+ * forall : EXECUTE_IF_SET_IN_SBITMAP
+ * set_copy : sbitmap_copy / sbitmap_copy_n
+ * set_intersection : sbitmap_a_and_b
+ * set_union : sbitmap_a_or_b
+ * set_difference : sbitmap_difference
+ * set_disjuction : (not implemented)
+ * set_compare : sbitmap_equal
+
+ Some operations on 3 sets that occur frequently in in data flow problems
+ are also implemented:
+
+ * A | (B & C) : sbitmap_a_or_b_and_c
+ * A | (B & ~C) : sbitmap_union_of_diff
+ * A & (B | C) : sbitmap_a_and_b_or_c
+
+ Most of the set functions have two variants: One that returns non-zero
+ if members were added or removed from the target set, and one that just
+ performs the operation without feedback. The former operations are a
+ bit more expensive but the result can often be used to avoid iterations
+ on other sets.
+
+ Allocating a bitmap is done with sbitmap_alloc, and resizing is
+ performed with sbitmap_resize.
+
+ The storage requirements for simple bitmap sets is O(U) where U is the
+ size of the set universe (colloquially the number of bits in the bitmap).
+
+ This set representation works well for relatively small data flow problems
+ (there are special routines for that, see sbitmap_vector_*). The set
+ operations can be vectorized and there is almost no computating overhead,
+ so that even sparse simple bitmap sets outperform dedicated sparse set
+ representations like linked-list bitmaps. For larger problems, the size
+ overhead of simple bitmap sets gets too high and other set representations
+ have to be used. */
+
+#define SBITMAP_ELT_BITS (HOST_BITS_PER_WIDEST_FAST_INT * 1u)
#define SBITMAP_ELT_TYPE unsigned HOST_WIDEST_FAST_INT
-/* Can't use SBITMAP_ELT_BITS in this macro because it contains a
- cast. There is no perfect macro in GCC to test against. This
- suffices for roughly 99% of the hosts we run on, and the rest
- don't have 256 bit integers. */
-#if HOST_BITS_PER_WIDEST_FAST_INT > 255
-#error Need to increase size of datatype used for popcount
-#endif
-
struct simple_bitmap_def
{
unsigned char *popcount; /* Population count. */
@@ -48,42 +95,62 @@ struct simple_bitmap_def
#define SBITMAP_SET_SIZE(N) (((N) + SBITMAP_ELT_BITS - 1) / SBITMAP_ELT_BITS)
#define SBITMAP_SIZE_BYTES(BITMAP) ((BITMAP)->size * sizeof (SBITMAP_ELT_TYPE))
+/* Return the number of bits in BITMAP. */
+#define SBITMAP_SIZE(BITMAP) ((BITMAP)->n_bits)
+
/* Test if bit number bitno in the bitmap is set. */
-#define TEST_BIT(BITMAP, BITNO) \
-((BITMAP)->elms [(BITNO) / SBITMAP_ELT_BITS] >> (BITNO) % SBITMAP_ELT_BITS & 1)
+static inline SBITMAP_ELT_TYPE
+TEST_BIT (const_sbitmap map, unsigned int bitno)
+{
+ size_t i = bitno / SBITMAP_ELT_BITS;
+ unsigned int s = bitno % SBITMAP_ELT_BITS;
+ return (map->elms[i] >> s) & (SBITMAP_ELT_TYPE) 1;
+}
-/* Set bit number BITNO in the sbitmap MAP. Updates population count
- if this bitmap has one. */
+/* Set bit number BITNO in the sbitmap MAP. */
static inline void
SET_BIT (sbitmap map, unsigned int bitno)
{
- if (map->popcount)
- {
- bool oldbit;
- oldbit = TEST_BIT (map, bitno);
- if (!oldbit)
- map->popcount[bitno / SBITMAP_ELT_BITS]++;
- }
+ gcc_checking_assert (! map->popcount);
map->elms[bitno / SBITMAP_ELT_BITS]
|= (SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS;
}
+/* Like SET_BIT, but updates population count. */
+static inline void
+SET_BIT_WITH_POPCOUNT (sbitmap map, unsigned int bitno)
+{
+ bool oldbit;
+ gcc_checking_assert (map->popcount);
+ oldbit = TEST_BIT (map, bitno);
+ if (!oldbit)
+ map->popcount[bitno / SBITMAP_ELT_BITS]++;
+ map->elms[bitno / SBITMAP_ELT_BITS]
+ |= (SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS;
+}
-/* Reset bit number BITNO in the sbitmap MAP. Updates population
- count if this bitmap has one. */
+/* Reset bit number BITNO in the sbitmap MAP. */
static inline void
RESET_BIT (sbitmap map, unsigned int bitno)
{
- if (map->popcount)
- {
- bool oldbit;
- oldbit = TEST_BIT (map, bitno);
- if (oldbit)
- map->popcount[bitno / SBITMAP_ELT_BITS]--;
- }
+ gcc_checking_assert (! map->popcount);
+ map->elms[bitno / SBITMAP_ELT_BITS]
+ &= ~((SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS);
+}
+
+/* Like RESET_BIT, but updates population count. */
+
+static inline void
+RESET_BIT_WITH_POPCOUNT (sbitmap map, unsigned int bitno)
+{
+ bool oldbit;
+ gcc_checking_assert (map->popcount);
+ oldbit = TEST_BIT (map, bitno);
+ if (oldbit)
+ map->popcount[bitno / SBITMAP_ELT_BITS]--;
map->elms[bitno / SBITMAP_ELT_BITS]
&= ~((SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS);
}
@@ -201,8 +268,6 @@ do { \
#define sbitmap_free(MAP) (free((MAP)->popcount), free((MAP)))
#define sbitmap_vector_free(VEC) free(VEC)
-struct int_list;
-
extern void dump_sbitmap (FILE *, const_sbitmap);
extern void dump_sbitmap_file (FILE *, const_sbitmap);
extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *,
@@ -221,14 +286,20 @@ extern void sbitmap_ones (sbitmap);
extern void sbitmap_vector_zero (sbitmap *, unsigned int);
extern void sbitmap_vector_ones (sbitmap *, unsigned int);
-extern void sbitmap_union_of_diff (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
-extern bool sbitmap_union_of_diff_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_union_of_diff (sbitmap, const_sbitmap,
+ const_sbitmap, const_sbitmap);
+extern bool sbitmap_union_of_diff_cg (sbitmap, const_sbitmap,
+ const_sbitmap, const_sbitmap);
extern void sbitmap_difference (sbitmap, const_sbitmap, const_sbitmap);
extern void sbitmap_not (sbitmap, const_sbitmap);
-extern void sbitmap_a_or_b_and_c (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
-extern bool sbitmap_a_or_b_and_c_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
-extern void sbitmap_a_and_b_or_c (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
-extern bool sbitmap_a_and_b_or_c_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_a_or_b_and_c (sbitmap, const_sbitmap,
+ const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_or_b_and_c_cg (sbitmap, const_sbitmap,
+ const_sbitmap, const_sbitmap);
+extern void sbitmap_a_and_b_or_c (sbitmap, const_sbitmap,
+ const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_and_b_or_c_cg (sbitmap, const_sbitmap,
+ const_sbitmap, const_sbitmap);
extern bool sbitmap_any_common_bits (const_sbitmap, const_sbitmap);
extern void sbitmap_a_and_b (sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_a_and_b_cg (sbitmap, const_sbitmap, const_sbitmap);
@@ -241,26 +312,8 @@ extern bool sbitmap_a_subset_b_p (const_sbitmap, const_sbitmap);
extern int sbitmap_first_set_bit (const_sbitmap);
extern int sbitmap_last_set_bit (const_sbitmap);
-extern void sbitmap_intersect_of_predsucc (sbitmap, sbitmap *, int,
- struct int_list **);
-#define sbitmap_intersect_of_predecessors sbitmap_intersect_of_predsucc
-#define sbitmap_intersect_of_successors sbitmap_intersect_of_predsucc
-
-extern void sbitmap_union_of_predsucc (sbitmap, sbitmap *, int,
- struct int_list **);
-#define sbitmap_union_of_predecessors sbitmap_union_of_predsucc
-#define sbitmap_union_of_successors sbitmap_union_of_predsucc
-
-/* Intersection and Union of preds/succs using the new flow graph
- structure instead of the pred/succ arrays. */
-
-extern void sbitmap_intersection_of_succs (sbitmap, sbitmap *, int);
-extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, int);
-extern void sbitmap_union_of_succs (sbitmap, sbitmap *, int);
-extern void sbitmap_union_of_preds (sbitmap, sbitmap *, int);
-
extern void debug_sbitmap (const_sbitmap);
extern sbitmap sbitmap_realloc (sbitmap, unsigned int);
-extern unsigned long sbitmap_popcount(const_sbitmap, unsigned long);
+extern unsigned long sbitmap_popcount (const_sbitmap, unsigned long);
extern void sbitmap_verify_popcount (const_sbitmap);
#endif /* ! GCC_SBITMAP_H */
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index b92ba9b9334..1055ef4bba2 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "diagnostic-core.h"
#include "rtl.h"
+#include "tree.h" /* FIXME: Used by call_may_noreturn_p. */
#include "tm_p.h"
#include "hard-reg-set.h"
#include "regs.h"
@@ -1563,24 +1564,15 @@ static void
add_dependence_list_and_free (struct deps_desc *deps, rtx insn, rtx *listp,
int uncond, enum reg_note dep_type)
{
- rtx list, next;
+ add_dependence_list (insn, *listp, uncond, dep_type);
/* We don't want to short-circuit dependencies involving debug
insns, because they may cause actual dependencies to be
disregarded. */
if (deps->readonly || DEBUG_INSN_P (insn))
- {
- add_dependence_list (insn, *listp, uncond, dep_type);
- return;
- }
+ return;
- for (list = *listp, *listp = NULL; list ; list = next)
- {
- next = XEXP (list, 1);
- if (uncond || ! sched_insns_conditions_mutex_p (insn, XEXP (list, 0)))
- add_dependence (insn, XEXP (list, 0), dep_type);
- free_INSN_LIST_node (list);
- }
+ free_INSN_LIST_list (listp);
}
/* Remove all occurrences of INSN from LIST. Return the number of
@@ -1764,6 +1756,15 @@ flush_pending_lists (struct deps_desc *deps, rtx insn, int for_read,
add_dependence_list_and_free (deps, insn, &deps->pending_jump_insns, 1,
REG_DEP_ANTI);
+ if (DEBUG_INSN_P (insn))
+ {
+ if (for_write)
+ free_INSN_LIST_list (&deps->pending_read_insns);
+ free_INSN_LIST_list (&deps->pending_write_insns);
+ free_INSN_LIST_list (&deps->last_pending_memory_flush);
+ free_INSN_LIST_list (&deps->pending_jump_insns);
+ }
+
if (!deps->readonly)
{
free_EXPR_LIST_list (&deps->pending_write_mems);
@@ -2546,10 +2547,7 @@ sched_analyze_2 (struct deps_desc *deps, rtx x, rtx insn)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_CONST_ANY:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -3374,6 +3372,8 @@ sched_analyze_insn (struct deps_desc *deps, rtx x, rtx insn)
/* Return TRUE if INSN might not always return normally (e.g. call exit,
longjmp, loop forever, ...). */
+/* FIXME: Why can't this function just use flags_from_decl_or_type and
+ test for ECF_NORETURN? */
static bool
call_may_noreturn_p (rtx insn)
{
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index fa5fc664311..2e462380bb8 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -873,7 +873,7 @@ DEF_VEC_ALLOC_O (haifa_insn_data_def, heap);
extern VEC(haifa_insn_data_def, heap) *h_i_d;
-#define HID(INSN) (VEC_index (haifa_insn_data_def, h_i_d, INSN_UID (INSN)))
+#define HID(INSN) (&VEC_index (haifa_insn_data_def, h_i_d, INSN_UID (INSN)))
/* Accessor macros for h_i_d. There are more in haifa-sched.c and
sched-rgn.c. */
@@ -895,7 +895,7 @@ DEF_VEC_ALLOC_O (haifa_deps_insn_data_def, heap);
extern VEC(haifa_deps_insn_data_def, heap) *h_d_i_d;
-#define HDID(INSN) (VEC_index (haifa_deps_insn_data_def, h_d_i_d, \
+#define HDID(INSN) (&VEC_index (haifa_deps_insn_data_def, h_d_i_d, \
INSN_LUID (INSN)))
#define INSN_DEP_COUNT(INSN) (HDID (INSN)->dep_count)
#define HAS_INTERNAL_DEP(INSN) (HDID (INSN)->has_internal_dep)
@@ -909,7 +909,7 @@ extern VEC(haifa_deps_insn_data_def, heap) *h_d_i_d;
#define INSN_COND_DEPS(INSN) (HDID (INSN)->cond_deps)
#define CANT_MOVE(INSN) (HDID (INSN)->cant_move)
#define CANT_MOVE_BY_LUID(LUID) (VEC_index (haifa_deps_insn_data_def, h_d_i_d, \
- LUID)->cant_move)
+ LUID).cant_move)
#define INSN_PRIORITY(INSN) (HID (INSN)->priority)
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c
index 71cb25ede1e..0498cede694 100644
--- a/gcc/sched-rgn.c
+++ b/gcc/sched-rgn.c
@@ -64,7 +64,6 @@ along with GCC; see the file COPYING3. If not see
#include "sched-int.h"
#include "sel-sched.h"
#include "target.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "dbgcnt.h"
@@ -397,7 +396,8 @@ debug_region (int rgn)
for (bb = 0; bb < rgn_table[rgn].rgn_nr_blocks; bb++)
{
- debug_bb_n_slim (rgn_bb_table[current_blocks + bb]);
+ dump_bb (stderr, BASIC_BLOCK (rgn_bb_table[current_blocks + bb]),
+ 0, TDF_SLIM | TDF_BLOCKS);
fprintf (stderr, "\n");
}
@@ -435,7 +435,7 @@ dump_region_dot (FILE *f, int rgn)
edge e;
edge_iterator ei;
int src_bb_num = rgn_bb_table[current_blocks + i];
- struct basic_block_def *bb = BASIC_BLOCK (src_bb_num);
+ basic_block bb = BASIC_BLOCK (src_bb_num);
FOR_EACH_EDGE (e, ei, bb->succs)
if (bb_in_region_p (e->dest->index, rgn))
@@ -1455,7 +1455,7 @@ compute_dom_prob_ps (int bb)
static void
split_edges (int bb_src, int bb_trg, edgelst *bl)
{
- sbitmap src = sbitmap_alloc (pot_split[bb_src]->n_bits);
+ sbitmap src = sbitmap_alloc (SBITMAP_SIZE (pot_split[bb_src]));
sbitmap_copy (src, pot_split[bb_src]);
sbitmap_difference (src, src, pot_split[bb_trg]);
diff --git a/gcc/sched-vis.c b/gcc/sched-vis.c
index 5b6ea9ed88a..24403a647ee 100644
--- a/gcc/sched-vis.c
+++ b/gcc/sched-vis.c
@@ -26,12 +26,13 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
+#include "tree.h" /* FIXME: To dump INSN_VAR_LOCATION_DECL. */
#include "obstack.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "insn-attr.h"
#include "sched-int.h"
-#include "tree-pass.h"
+#include "dumpfile.h" /* for the TDF_* flags */
static char *safe_concat (char *, char *, const char *);
@@ -113,6 +114,15 @@ print_exp (char *buf, const_rtx x, int verbose)
st[0] = "-";
op[0] = XEXP (x, 0);
break;
+ case FMA:
+ st[0] = "{";
+ op[0] = XEXP (x, 0);
+ st[1] = "*";
+ op[1] = XEXP (x, 1);
+ st[2] = "+";
+ op[2] = XEXP (x, 2);
+ st[3] = "}";
+ break;
case MULT:
op[0] = XEXP (x, 0);
st[1] = "*";
@@ -202,46 +212,14 @@ print_exp (char *buf, const_rtx x, int verbose)
st[1] = ">->";
op[1] = XEXP (x, 1);
break;
- case ABS:
- fun = "abs";
- op[0] = XEXP (x, 0);
- break;
- case SQRT:
- fun = "sqrt";
- op[0] = XEXP (x, 0);
- break;
- case FFS:
- fun = "ffs";
- op[0] = XEXP (x, 0);
- break;
- case EQ:
- op[0] = XEXP (x, 0);
- st[1] = "==";
- op[1] = XEXP (x, 1);
- break;
case NE:
op[0] = XEXP (x, 0);
st[1] = "!=";
op[1] = XEXP (x, 1);
break;
- case GT:
- op[0] = XEXP (x, 0);
- st[1] = ">";
- op[1] = XEXP (x, 1);
- break;
- case GTU:
- fun = "gtu";
- op[0] = XEXP (x, 0);
- op[1] = XEXP (x, 1);
- break;
- case LT:
- op[0] = XEXP (x, 0);
- st[1] = "<";
- op[1] = XEXP (x, 1);
- break;
- case LTU:
- fun = "ltu";
+ case EQ:
op[0] = XEXP (x, 0);
+ st[1] = "==";
op[1] = XEXP (x, 1);
break;
case GE:
@@ -249,9 +227,9 @@ print_exp (char *buf, const_rtx x, int verbose)
st[1] = ">=";
op[1] = XEXP (x, 1);
break;
- case GEU:
- fun = "geu";
+ case GT:
op[0] = XEXP (x, 0);
+ st[1] = ">";
op[1] = XEXP (x, 1);
break;
case LE:
@@ -259,9 +237,9 @@ print_exp (char *buf, const_rtx x, int verbose)
st[1] = "<=";
op[1] = XEXP (x, 1);
break;
- case LEU:
- fun = "leu";
+ case LT:
op[0] = XEXP (x, 0);
+ st[1] = "<";
op[1] = XEXP (x, 1);
break;
case SIGN_EXTRACT:
@@ -389,8 +367,33 @@ print_exp (char *buf, const_rtx x, int verbose)
}
break;
default:
- /* If (verbose) debug_rtx (x); */
- st[0] = GET_RTX_NAME (GET_CODE (x));
+ {
+ /* Most unhandled codes can be printed as pseudo-functions. */
+ if (GET_RTX_CLASS (GET_CODE (x)) == RTX_UNARY)
+ {
+ fun = GET_RTX_NAME (GET_CODE (x));
+ op[0] = XEXP (x, 0);
+ }
+ else if (GET_RTX_CLASS (GET_CODE (x)) == RTX_COMPARE
+ || GET_RTX_CLASS (GET_CODE (x)) == RTX_COMM_COMPARE
+ || GET_RTX_CLASS (GET_CODE (x)) == RTX_BIN_ARITH
+ || GET_RTX_CLASS (GET_CODE (x)) == RTX_COMM_ARITH)
+ {
+ fun = GET_RTX_NAME (GET_CODE (x));
+ op[0] = XEXP (x, 0);
+ op[1] = XEXP (x, 1);
+ }
+ else if (GET_RTX_CLASS (GET_CODE (x)) == RTX_TERNARY)
+ {
+ fun = GET_RTX_NAME (GET_CODE (x));
+ op[0] = XEXP (x, 0);
+ op[1] = XEXP (x, 1);
+ op[2] = XEXP (x, 2);
+ }
+ else
+ /* Give up, just print the RTX name. */
+ st[0] = GET_RTX_NAME (GET_CODE (x));
+ }
break;
}
@@ -558,10 +561,9 @@ print_pattern (char *buf, const_rtx x, int verbose)
sprintf (buf, "%s=%s", t1, t2);
break;
case RETURN:
- sprintf (buf, "return");
- break;
case SIMPLE_RETURN:
- sprintf (buf, "simple_return");
+ case EH_RETURN:
+ sprintf (buf, GET_RTX_NAME (GET_CODE (x)));
break;
case CALL:
print_exp (buf, x, verbose);
@@ -608,8 +610,19 @@ print_pattern (char *buf, const_rtx x, int verbose)
}
break;
case SEQUENCE:
- /* Should never see SEQUENCE codes until after reorg. */
- gcc_unreachable ();
+ {
+ int i;
+
+ sprintf (t1, "sequence{");
+ for (i = 0; i < XVECLEN (x, 0); i++)
+ {
+ print_pattern (t2, XVECEXP (x, 0, i), verbose);
+ sprintf (t3, "%s%s;", t1, t2);
+ strcpy (t1, t3);
+ }
+ sprintf (buf, "%s}", t1);
+ }
+ break;
case ASM_INPUT:
sprintf (buf, "asm {%s}", XSTR (x, 0));
break;
@@ -760,85 +773,65 @@ print_insn (char *buf, const_rtx x, int verbose)
/* Emit a slim dump of X (an insn) to the file F, including any register
note attached to the instruction. */
void
-dump_insn_slim (FILE *f, rtx x)
+dump_insn_slim (FILE *f, const_rtx x)
{
char t[BUF_LEN + 32];
rtx note;
print_insn (t, x, 1);
+ fputs (print_rtx_head, f);
fputs (t, f);
putc ('\n', f);
if (INSN_P (x) && REG_NOTES (x))
for (note = REG_NOTES (x); note; note = XEXP (note, 1))
{
- print_value (t, XEXP (note, 0), 1);
+ fputs (print_rtx_head, f);
+ print_pattern (t, XEXP (note, 0), 1);
fprintf (f, " %s: %s\n",
GET_REG_NOTE_NAME (REG_NOTE_KIND (note)), t);
}
}
/* Emit a slim dump of X (an insn) to stderr. */
+extern void debug_insn_slim (const_rtx);
DEBUG_FUNCTION void
-debug_insn_slim (rtx x)
+debug_insn_slim (const_rtx x)
{
dump_insn_slim (stderr, x);
}
-/* Provide a slim dump the instruction chain starting at FIRST to F, honoring
- the dump flags given in FLAGS. Currently, TDF_BLOCKS and TDF_DETAILS
- include more information on the basic blocks. */
-void
-print_rtl_slim_with_bb (FILE *f, rtx first, int flags)
-{
- print_rtl_slim (f, first, NULL, -1, flags);
-}
-
/* Same as above, but stop at LAST or when COUNT == 0.
If COUNT < 0 it will stop only at LAST or NULL rtx. */
-void
-print_rtl_slim (FILE *f, rtx first, rtx last, int count, int flags)
+extern void debug_rtl_slim (FILE *, const_rtx, const_rtx, int, int);
+DEBUG_FUNCTION void
+debug_rtl_slim (FILE *f, const_rtx first, const_rtx last,
+ int count, int flags ATTRIBUTE_UNUSED)
{
- basic_block current_bb = NULL;
- rtx insn, tail;
+ const_rtx insn, tail;
tail = last ? NEXT_INSN (last) : NULL_RTX;
for (insn = first;
(insn != NULL) && (insn != tail) && (count != 0);
insn = NEXT_INSN (insn))
{
- if ((flags & TDF_BLOCKS)
- && (INSN_P (insn) || NOTE_P (insn))
- && BLOCK_FOR_INSN (insn)
- && !current_bb)
- {
- current_bb = BLOCK_FOR_INSN (insn);
- dump_bb_info (current_bb, true, false, flags, ";; ", f);
- }
-
dump_insn_slim (f, insn);
-
- if ((flags & TDF_BLOCKS)
- && current_bb
- && insn == BB_END (current_bb))
- {
- dump_bb_info (current_bb, false, true, flags, ";; ", f);
- current_bb = NULL;
- }
if (count > 0)
count--;
}
}
+extern void debug_bb_slim (basic_block);
DEBUG_FUNCTION void
-debug_bb_slim (struct basic_block_def *bb)
+debug_bb_slim (basic_block bb)
{
- print_rtl_slim (stderr, BB_HEAD (bb), BB_END (bb), -1, 32);
+ dump_bb (stderr, bb, 0, TDF_SLIM | TDF_BLOCKS);
}
+extern void debug_bb_n_slim (int);
DEBUG_FUNCTION void
debug_bb_n_slim (int n)
{
- struct basic_block_def *bb = BASIC_BLOCK (n);
+ basic_block bb = BASIC_BLOCK (n);
debug_bb_slim (bb);
}
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
index 23f99f42e19..449efc97cbc 100644
--- a/gcc/sel-sched-ir.c
+++ b/gcc/sel-sched-ir.c
@@ -35,8 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "recog.h"
#include "params.h"
#include "target.h"
-#include "timevar.h"
-#include "tree-pass.h"
#include "sched-int.h"
#include "ggc.h"
#include "tree.h"
@@ -956,7 +954,13 @@ return_regset_to_pool (regset rs)
static int
cmp_v_in_regset_pool (const void *x, const void *xx)
{
- return *((const regset *) x) - *((const regset *) xx);
+ uintptr_t r1 = (uintptr_t) *((const regset *) x);
+ uintptr_t r2 = (uintptr_t) *((const regset *) xx);
+ if (r1 > r2)
+ return 1;
+ else if (r1 < r2)
+ return -1;
+ gcc_unreachable ();
}
#endif
@@ -1520,7 +1524,7 @@ insert_in_history_vect (VEC (expr_history_def, heap) **pvect,
if (res)
{
- expr_history_def *phist = VEC_index (expr_history_def, vect, ind);
+ expr_history_def *phist = &VEC_index (expr_history_def, vect, ind);
/* It is possible that speculation types of expressions that were
propagated through different paths will be different here. In this
@@ -3224,7 +3228,11 @@ has_dependence_note_reg_use (int regno)
if (reg_last->clobbers)
*dsp = (*dsp & ~SPECULATIVE) | DEP_ANTI;
- /* Handle BE_IN_SPEC. */
+ /* Merge BE_IN_SPEC bits into *DSP when the dependency producer
+ is actually a check insn. We need to do this for any register
+ read-read dependency with the check unless we track properly
+ all registers written by BE_IN_SPEC-speculated insns, as
+ we don't have explicit dependence lists. See PR 53975. */
if (reg_last->uses)
{
ds_t pro_spec_checked_ds;
@@ -3232,9 +3240,7 @@ has_dependence_note_reg_use (int regno)
pro_spec_checked_ds = INSN_SPEC_CHECKED_DS (has_dependence_data.pro);
pro_spec_checked_ds = ds_get_max_dep_weak (pro_spec_checked_ds);
- if (pro_spec_checked_ds != 0
- && bitmap_bit_p (INSN_REG_SETS (has_dependence_data.pro), regno))
- /* Merge BE_IN_SPEC bits into *DSP. */
+ if (pro_spec_checked_ds != 0)
*dsp = ds_full_merge (*dsp, pro_spec_checked_ds,
NULL_RTX, NULL_RTX);
}
@@ -4153,7 +4159,7 @@ finish_insns (void)
removed during the scheduling. */
for (i = 0; i < VEC_length (sel_insn_data_def, s_i_d); i++)
{
- sel_insn_data_def *sid_entry = VEC_index (sel_insn_data_def, s_i_d, i);
+ sel_insn_data_def *sid_entry = &VEC_index (sel_insn_data_def, s_i_d, i);
if (sid_entry->live)
return_regset_to_pool (sid_entry->live);
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index 20035527597..ef884a56f12 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -765,8 +765,8 @@ DEF_VEC_ALLOC_O (sel_insn_data_def, heap);
extern VEC (sel_insn_data_def, heap) *s_i_d;
/* Accessor macros for s_i_d. */
-#define SID(INSN) (VEC_index (sel_insn_data_def, s_i_d, INSN_LUID (INSN)))
-#define SID_BY_UID(UID) (VEC_index (sel_insn_data_def, s_i_d, LUID_BY_UID (UID)))
+#define SID(INSN) (&VEC_index (sel_insn_data_def, s_i_d, INSN_LUID (INSN)))
+#define SID_BY_UID(UID) (&VEC_index (sel_insn_data_def, s_i_d, LUID_BY_UID (UID)))
extern sel_insn_data_def insn_sid (insn_t);
@@ -897,7 +897,7 @@ extern void sel_finish_global_bb_info (void);
/* Get data for BB. */
#define SEL_GLOBAL_BB_INFO(BB) \
- (VEC_index (sel_global_bb_info_def, sel_global_bb_info, (BB)->index))
+ (&VEC_index (sel_global_bb_info_def, sel_global_bb_info, (BB)->index))
/* Access macros. */
#define BB_LV_SET(BB) (SEL_GLOBAL_BB_INFO (BB)->lv_set)
@@ -927,8 +927,8 @@ DEF_VEC_ALLOC_O (sel_region_bb_info_def, heap);
extern VEC (sel_region_bb_info_def, heap) *sel_region_bb_info;
/* Get data for BB. */
-#define SEL_REGION_BB_INFO(BB) (VEC_index (sel_region_bb_info_def, \
- sel_region_bb_info, (BB)->index))
+#define SEL_REGION_BB_INFO(BB) (&VEC_index (sel_region_bb_info_def, \
+ sel_region_bb_info, (BB)->index))
/* Get BB's note_list.
A note_list is a list of various notes that was scattered across BB
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 1052920be98..b5bffa11978 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -35,8 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "params.h"
#include "target.h"
#include "output.h"
-#include "timevar.h"
-#include "tree-pass.h"
#include "sched-int.h"
#include "ggc.h"
#include "tree.h"
@@ -1940,9 +1938,9 @@ undo_transformations (av_set_t *av_ptr, rtx insn)
{
expr_history_def *phist;
- phist = VEC_index (expr_history_def,
- EXPR_HISTORY_OF_CHANGES (expr),
- index);
+ phist = &VEC_index (expr_history_def,
+ EXPR_HISTORY_OF_CHANGES (expr),
+ index);
switch (phist->type)
{
@@ -3566,29 +3564,41 @@ process_use_exprs (av_set_t *av_ptr)
return NULL;
}
-/* Lookup EXPR in VINSN_VEC and return TRUE if found. */
+/* Lookup EXPR in VINSN_VEC and return TRUE if found. Also check patterns from
+ EXPR's history of changes. */
static bool
vinsn_vec_has_expr_p (vinsn_vec_t vinsn_vec, expr_t expr)
{
- vinsn_t vinsn;
+ vinsn_t vinsn, expr_vinsn;
int n;
+ unsigned i;
- FOR_EACH_VEC_ELT (vinsn_t, vinsn_vec, n, vinsn)
- if (VINSN_SEPARABLE_P (vinsn))
- {
- if (vinsn_equal_p (vinsn, EXPR_VINSN (expr)))
- return true;
- }
- else
- {
- /* For non-separable instructions, the blocking insn can have
- another pattern due to substitution, and we can't choose
- different register as in the above case. Check all registers
- being written instead. */
- if (bitmap_intersect_p (VINSN_REG_SETS (vinsn),
- VINSN_REG_SETS (EXPR_VINSN (expr))))
- return true;
- }
+ /* Start with checking expr itself and then proceed with all the old forms
+ of expr taken from its history vector. */
+ for (i = 0, expr_vinsn = EXPR_VINSN (expr);
+ expr_vinsn;
+ expr_vinsn = (i < VEC_length (expr_history_def,
+ EXPR_HISTORY_OF_CHANGES (expr))
+ ? VEC_index (expr_history_def,
+ EXPR_HISTORY_OF_CHANGES (expr),
+ i++).old_expr_vinsn
+ : NULL))
+ FOR_EACH_VEC_ELT (vinsn_t, vinsn_vec, n, vinsn)
+ if (VINSN_SEPARABLE_P (vinsn))
+ {
+ if (vinsn_equal_p (vinsn, expr_vinsn))
+ return true;
+ }
+ else
+ {
+ /* For non-separable instructions, the blocking insn can have
+ another pattern due to substitution, and we can't choose
+ different register as in the above case. Check all registers
+ being written instead. */
+ if (bitmap_intersect_p (VINSN_REG_SETS (vinsn),
+ VINSN_REG_SETS (expr_vinsn)))
+ return true;
+ }
return false;
}
@@ -5696,8 +5706,8 @@ update_and_record_unavailable_insns (basic_block book_block)
|| EXPR_TARGET_AVAILABLE (new_expr)
!= EXPR_TARGET_AVAILABLE (cur_expr))
/* Unfortunately, the below code could be also fired up on
- separable insns.
- FIXME: add an example of how this could happen. */
+ separable insns, e.g. when moving insns through the new
+ speculation check as in PR 53701. */
vinsn_vec_add (&vec_bookkeeping_blocked_vinsns, cur_expr);
}
diff --git a/gcc/sese.c b/gcc/sese.c
index 03b9f3d62aa..bfb797150ba 100644
--- a/gcc/sese.c
+++ b/gcc/sese.c
@@ -345,10 +345,8 @@ free_sese (sese region)
static void
sese_add_exit_phis_edge (basic_block exit, tree use, edge false_e, edge true_e)
{
- gimple phi = create_phi_node (use, exit);
-
- create_new_def_for (gimple_phi_result (phi), phi,
- gimple_phi_result_ptr (phi));
+ gimple phi = create_phi_node (NULL_TREE, exit);
+ create_new_def_for (use, phi, gimple_phi_result_ptr (phi));
add_phi_arg (phi, use, false_e, UNKNOWN_LOCATION);
add_phi_arg (phi, use, true_e, UNKNOWN_LOCATION);
}
@@ -482,14 +480,13 @@ rename_uses (gimple copy, htab_t rename_map, gimple_stmt_iterator *gsi_tgt,
return false;
}
- FOR_EACH_SSA_USE_OPERAND (use_p, copy, op_iter, SSA_OP_ALL_USES)
+ FOR_EACH_SSA_USE_OPERAND (use_p, copy, op_iter, SSA_OP_USE)
{
tree old_name = USE_FROM_PTR (use_p);
tree new_expr, scev;
gimple_seq stmts;
if (TREE_CODE (old_name) != SSA_NAME
- || !is_gimple_reg (old_name)
|| SSA_NAME_IS_DEFAULT_DEF (old_name))
continue;
@@ -501,16 +498,14 @@ rename_uses (gimple copy, htab_t rename_map, gimple_stmt_iterator *gsi_tgt,
tree type_new_expr = TREE_TYPE (new_expr);
if (type_old_name != type_new_expr
- || (TREE_CODE (new_expr) != SSA_NAME
- && is_gimple_reg (old_name)))
+ || TREE_CODE (new_expr) != SSA_NAME)
{
tree var = create_tmp_var (type_old_name, "var");
- if (type_old_name != type_new_expr)
+ if (!useless_type_conversion_p (type_old_name, type_new_expr))
new_expr = fold_convert (type_old_name, new_expr);
- new_expr = build2 (MODIFY_EXPR, type_old_name, var, new_expr);
- new_expr = force_gimple_operand (new_expr, &stmts, true, NULL);
+ new_expr = force_gimple_operand (new_expr, &stmts, true, var);
gsi_insert_seq_before (gsi_tgt, stmts, GSI_SAME_STMT);
}
@@ -604,7 +599,6 @@ graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
operands. */
copy = gimple_copy (stmt);
gsi_insert_after (&gsi_tgt, copy, GSI_NEW_STMT);
- mark_sym_for_renaming (gimple_vop (cfun));
maybe_duplicate_eh_stmt (copy, stmt);
gimple_duplicate_stmt_histograms (cfun, copy, cfun, stmt);
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index e1bd3cf2e3b..a878048ac97 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -66,7 +66,7 @@ static rtx simplify_binary_operation_1 (enum rtx_code, enum machine_mode,
static rtx
neg_const_int (enum machine_mode mode, const_rtx i)
{
- return gen_int_mode (- INTVAL (i), mode);
+ return gen_int_mode (-(unsigned HOST_WIDE_INT) INTVAL (i), mode);
}
/* Test whether expression, X, is an immediate constant that represents
@@ -89,7 +89,7 @@ mode_signbit_p (enum machine_mode mode, const_rtx x)
&& CONST_INT_P (x))
val = INTVAL (x);
else if (width <= HOST_BITS_PER_DOUBLE_INT
- && GET_CODE (x) == CONST_DOUBLE
+ && CONST_DOUBLE_AS_INT_P (x)
&& CONST_DOUBLE_LOW (x) == 0)
{
val = CONST_DOUBLE_HIGH (x);
@@ -200,7 +200,7 @@ avoid_constant_pool_reference (rtx x)
/* Handle float extensions of constant pool references. */
tmp = XEXP (x, 0);
c = avoid_constant_pool_reference (tmp);
- if (c != tmp && GET_CODE (c) == CONST_DOUBLE)
+ if (c != tmp && CONST_DOUBLE_AS_FLOAT_P (c))
{
REAL_VALUE_TYPE d;
@@ -730,7 +730,7 @@ simplify_unary_operation_1 (enum rtx_code code, enum machine_mode mode, rtx op)
{
/* (neg (plus A C)) is simplified to (minus -C A). */
if (CONST_INT_P (XEXP (op, 1))
- || GET_CODE (XEXP (op, 1)) == CONST_DOUBLE)
+ || CONST_DOUBLE_P (XEXP (op, 1)))
{
temp = simplify_unary_operation (NEG, mode, XEXP (op, 1), mode);
if (temp)
@@ -1275,7 +1275,7 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
gcc_assert (GET_MODE_INNER (mode) == GET_MODE_INNER
(GET_MODE (op)));
}
- if (CONST_INT_P (op) || GET_CODE (op) == CONST_DOUBLE
+ if (CONST_INT_P (op) || CONST_DOUBLE_P (op)
|| GET_CODE (op) == CONST_VECTOR)
{
int elt_size = GET_MODE_SIZE (GET_MODE_INNER (mode));
@@ -1328,8 +1328,7 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
check the wrong mode (input vs. output) for a conversion operation,
such as FIX. At some point, this should be simplified. */
- if (code == FLOAT && GET_MODE (op) == VOIDmode
- && (GET_CODE (op) == CONST_DOUBLE || CONST_INT_P (op)))
+ if (code == FLOAT && (CONST_DOUBLE_AS_INT_P (op) || CONST_INT_P (op)))
{
HOST_WIDE_INT hv, lv;
REAL_VALUE_TYPE d;
@@ -1343,9 +1342,8 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
d = real_value_truncate (mode, d);
return CONST_DOUBLE_FROM_REAL_VALUE (d, mode);
}
- else if (code == UNSIGNED_FLOAT && GET_MODE (op) == VOIDmode
- && (GET_CODE (op) == CONST_DOUBLE
- || CONST_INT_P (op)))
+ else if (code == UNSIGNED_FLOAT
+ && (CONST_DOUBLE_AS_INT_P (op) || CONST_INT_P (op)))
{
HOST_WIDE_INT hv, lv;
REAL_VALUE_TYPE d;
@@ -1516,15 +1514,13 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
/* We can do some operations on integer CONST_DOUBLEs. Also allow
for a DImode operation on a CONST_INT. */
- else if (GET_MODE (op) == VOIDmode
- && width <= HOST_BITS_PER_DOUBLE_INT
- && (GET_CODE (op) == CONST_DOUBLE
- || CONST_INT_P (op)))
+ else if (width <= HOST_BITS_PER_DOUBLE_INT
+ && (CONST_DOUBLE_AS_INT_P (op) || CONST_INT_P (op)))
{
unsigned HOST_WIDE_INT l1, lv;
HOST_WIDE_INT h1, hv;
- if (GET_CODE (op) == CONST_DOUBLE)
+ if (CONST_DOUBLE_AS_INT_P (op))
l1 = CONST_DOUBLE_LOW (op), h1 = CONST_DOUBLE_HIGH (op);
else
l1 = INTVAL (op), h1 = HWI_SIGN_EXTEND (l1);
@@ -1660,7 +1656,7 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
return immed_double_const (lv, hv, mode);
}
- else if (GET_CODE (op) == CONST_DOUBLE
+ else if (CONST_DOUBLE_AS_FLOAT_P (op)
&& SCALAR_FLOAT_MODE_P (mode)
&& SCALAR_FLOAT_MODE_P (GET_MODE (op)))
{
@@ -1710,7 +1706,7 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
return CONST_DOUBLE_FROM_REAL_VALUE (d, mode);
}
- else if (GET_CODE (op) == CONST_DOUBLE
+ else if (CONST_DOUBLE_AS_FLOAT_P (op)
&& SCALAR_FLOAT_MODE_P (GET_MODE (op))
&& GET_MODE_CLASS (mode) == MODE_INT
&& width <= HOST_BITS_PER_DOUBLE_INT && width > 0)
@@ -2033,11 +2029,10 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
}
/* (plus (xor X C1) C2) is (xor X (C1^C2)) if C2 is signbit. */
- if ((CONST_INT_P (op1)
- || GET_CODE (op1) == CONST_DOUBLE)
+ if ((CONST_INT_P (op1) || CONST_DOUBLE_AS_INT_P (op1))
&& GET_CODE (op0) == XOR
&& (CONST_INT_P (XEXP (op0, 1))
- || GET_CODE (XEXP (op0, 1)) == CONST_DOUBLE)
+ || CONST_DOUBLE_AS_INT_P (XEXP (op0, 1)))
&& mode_signbit_p (mode, op1))
return simplify_gen_binary (XOR, mode, XEXP (op0, 0),
simplify_gen_binary (XOR, mode, op1,
@@ -2219,8 +2214,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
/* (-x - c) may be simplified as (-c - x). */
if (GET_CODE (op0) == NEG
- && (CONST_INT_P (op1)
- || GET_CODE (op1) == CONST_DOUBLE))
+ && (CONST_INT_P (op1) || CONST_DOUBLE_P (op1)))
{
tem = simplify_unary_operation (NEG, mode, op1, mode);
if (tem)
@@ -2370,9 +2364,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
return simplify_gen_binary (ASHIFT, mode, op0, GEN_INT (val));
/* Likewise for multipliers wider than a word. */
- if (GET_CODE (trueop1) == CONST_DOUBLE
- && (GET_MODE (trueop1) == VOIDmode
- || GET_MODE_CLASS (GET_MODE (trueop1)) == MODE_INT)
+ if (CONST_DOUBLE_AS_INT_P (trueop1)
&& GET_MODE (op0) == mode
&& CONST_DOUBLE_LOW (trueop1) == 0
&& (val = exact_log2 (CONST_DOUBLE_HIGH (trueop1))) >= 0
@@ -2382,7 +2374,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
GEN_INT (val + HOST_BITS_PER_WIDE_INT));
/* x*2 is x+x and x*(-1) is -x */
- if (GET_CODE (trueop1) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (trueop1)
&& SCALAR_FLOAT_MODE_P (GET_MODE (trueop1))
&& !DECIMAL_FLOAT_MODE_P (GET_MODE (trueop1))
&& GET_MODE (op0) == mode)
@@ -2428,7 +2420,9 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
case IOR:
if (trueop1 == CONST0_RTX (mode))
return op0;
- if (INTEGRAL_MODE_P (mode) && trueop1 == CONSTM1_RTX (mode))
+ if (INTEGRAL_MODE_P (mode)
+ && trueop1 == CONSTM1_RTX (mode)
+ && !side_effects_p (op0))
return op1;
if (rtx_equal_p (trueop0, trueop1) && ! side_effects_p (op0))
return op0;
@@ -2442,7 +2436,8 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
/* (ior A C) is C if all bits of A that might be nonzero are on in C. */
if (CONST_INT_P (op1)
&& HWI_COMPUTABLE_MODE_P (mode)
- && (nonzero_bits (op0, mode) & ~UINTVAL (op1)) == 0)
+ && (nonzero_bits (op0, mode) & ~UINTVAL (op1)) == 0
+ && !side_effects_p (op0))
return op1;
/* Canonicalize (X & C1) | C2. */
@@ -2577,16 +2572,14 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
return CONST0_RTX (mode);
/* Canonicalize XOR of the most significant bit to PLUS. */
- if ((CONST_INT_P (op1)
- || GET_CODE (op1) == CONST_DOUBLE)
+ if ((CONST_INT_P (op1) || CONST_DOUBLE_AS_INT_P (op1))
&& mode_signbit_p (mode, op1))
return simplify_gen_binary (PLUS, mode, op0, op1);
/* (xor (plus X C1) C2) is (xor X (C1^C2)) if C1 is signbit. */
- if ((CONST_INT_P (op1)
- || GET_CODE (op1) == CONST_DOUBLE)
+ if ((CONST_INT_P (op1) || CONST_DOUBLE_AS_INT_P (op1))
&& GET_CODE (op0) == PLUS
&& (CONST_INT_P (XEXP (op0, 1))
- || GET_CODE (XEXP (op0, 1)) == CONST_DOUBLE)
+ || CONST_DOUBLE_AS_INT_P (XEXP (op0, 1)))
&& mode_signbit_p (mode, XEXP (op0, 1)))
return simplify_gen_binary (XOR, mode, XEXP (op0, 0),
simplify_gen_binary (XOR, mode, op1,
@@ -2929,7 +2922,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
&& !HONOR_SNANS (mode))
return op0;
- if (GET_CODE (trueop1) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (trueop1)
&& trueop1 != CONST0_RTX (mode))
{
REAL_VALUE_TYPE d;
@@ -3262,6 +3255,23 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
return simplify_gen_binary (VEC_CONCAT, mode, subop0, subop1);
}
+
+ if (XVECLEN (trueop1, 0) == 2
+ && CONST_INT_P (XVECEXP (trueop1, 0, 0))
+ && CONST_INT_P (XVECEXP (trueop1, 0, 1))
+ && GET_CODE (trueop0) == VEC_CONCAT
+ && GET_MODE (trueop0) == mode)
+ {
+ unsigned int i0 = INTVAL (XVECEXP (trueop1, 0, 0));
+ unsigned int i1 = INTVAL (XVECEXP (trueop1, 0, 1));
+ rtx subop0, subop1;
+
+ gcc_assert (i0 < 2 && i1 < 2);
+ subop0 = XEXP (trueop0, i0);
+ subop1 = XEXP (trueop0, i1);
+
+ return simplify_gen_binary (VEC_CONCAT, mode, subop0, subop1);
+ }
}
if (XVECLEN (trueop1, 0) == 1
@@ -3317,11 +3327,9 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
gcc_assert (GET_MODE_INNER (mode) == op1_mode);
if ((GET_CODE (trueop0) == CONST_VECTOR
- || CONST_INT_P (trueop0)
- || GET_CODE (trueop0) == CONST_DOUBLE)
+ || CONST_INT_P (trueop0) || CONST_DOUBLE_P (trueop0))
&& (GET_CODE (trueop1) == CONST_VECTOR
- || CONST_INT_P (trueop1)
- || GET_CODE (trueop1) == CONST_DOUBLE))
+ || CONST_INT_P (trueop1) || CONST_DOUBLE_P (trueop1)))
{
int elt_size = GET_MODE_SIZE (GET_MODE_INNER (mode));
unsigned n_elts = (GET_MODE_SIZE (mode) / elt_size);
@@ -3401,10 +3409,10 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode,
if (VECTOR_MODE_P (mode)
&& code == VEC_CONCAT
&& (CONST_INT_P (op0)
- || GET_CODE (op0) == CONST_DOUBLE
- || GET_CODE (op0) == CONST_FIXED)
+ || GET_CODE (op0) == CONST_FIXED
+ || CONST_DOUBLE_P (op0))
&& (CONST_INT_P (op1)
- || GET_CODE (op1) == CONST_DOUBLE
+ || CONST_DOUBLE_P (op1)
|| GET_CODE (op1) == CONST_FIXED))
{
unsigned n_elts = GET_MODE_NUNITS (mode);
@@ -3439,8 +3447,8 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode,
}
if (SCALAR_FLOAT_MODE_P (mode)
- && GET_CODE (op0) == CONST_DOUBLE
- && GET_CODE (op1) == CONST_DOUBLE
+ && CONST_DOUBLE_AS_FLOAT_P (op0)
+ && CONST_DOUBLE_AS_FLOAT_P (op1)
&& mode == GET_MODE (op0) && mode == GET_MODE (op1))
{
if (code == AND
@@ -3562,8 +3570,8 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode,
/* We can fold some multi-word operations. */
if (GET_MODE_CLASS (mode) == MODE_INT
&& width == HOST_BITS_PER_DOUBLE_INT
- && (CONST_DOUBLE_P (op0) || CONST_INT_P (op0))
- && (CONST_DOUBLE_P (op1) || CONST_INT_P (op1)))
+ && (CONST_DOUBLE_AS_INT_P (op0) || CONST_INT_P (op0))
+ && (CONST_DOUBLE_AS_INT_P (op1) || CONST_INT_P (op1)))
{
double_int o0, o1, res, tmp;
@@ -4432,10 +4440,9 @@ simplify_relational_operation_1 (enum rtx_code code, enum machine_mode mode,
/* (eq/ne (xor x C1) C2) simplifies to (eq/ne x (C1^C2)). */
if ((code == EQ || code == NE)
&& op0code == XOR
- && (CONST_INT_P (op1)
- || GET_CODE (op1) == CONST_DOUBLE)
+ && (CONST_INT_P (op1) || CONST_DOUBLE_AS_INT_P (op1))
&& (CONST_INT_P (XEXP (op0, 1))
- || GET_CODE (XEXP (op0, 1)) == CONST_DOUBLE))
+ || CONST_DOUBLE_AS_INT_P (XEXP (op0, 1))))
return simplify_gen_relational (code, mode, cmp_mode, XEXP (op0, 0),
simplify_gen_binary (XOR, cmp_mode,
XEXP (op0, 1), op1));
@@ -4612,8 +4619,8 @@ simplify_const_relational_operation (enum rtx_code code,
/* If the operands are floating-point constants, see if we can fold
the result. */
- if (GET_CODE (trueop0) == CONST_DOUBLE
- && GET_CODE (trueop1) == CONST_DOUBLE
+ if (CONST_DOUBLE_AS_FLOAT_P (trueop0)
+ && CONST_DOUBLE_AS_FLOAT_P (trueop1)
&& SCALAR_FLOAT_MODE_P (GET_MODE (trueop0)))
{
REAL_VALUE_TYPE d0, d1;
@@ -4652,17 +4659,15 @@ simplify_const_relational_operation (enum rtx_code code,
/* Otherwise, see if the operands are both integers. */
if ((GET_MODE_CLASS (mode) == MODE_INT || mode == VOIDmode)
- && (GET_CODE (trueop0) == CONST_DOUBLE
- || CONST_INT_P (trueop0))
- && (GET_CODE (trueop1) == CONST_DOUBLE
- || CONST_INT_P (trueop1)))
+ && (CONST_DOUBLE_AS_INT_P (trueop0) || CONST_INT_P (trueop0))
+ && (CONST_DOUBLE_AS_INT_P (trueop1) || CONST_INT_P (trueop1)))
{
int width = GET_MODE_PRECISION (mode);
HOST_WIDE_INT l0s, h0s, l1s, h1s;
unsigned HOST_WIDE_INT l0u, h0u, l1u, h1u;
/* Get the two words comprising each integer constant. */
- if (GET_CODE (trueop0) == CONST_DOUBLE)
+ if (CONST_DOUBLE_AS_INT_P (trueop0))
{
l0u = l0s = CONST_DOUBLE_LOW (trueop0);
h0u = h0s = CONST_DOUBLE_HIGH (trueop0);
@@ -4673,7 +4678,7 @@ simplify_const_relational_operation (enum rtx_code code,
h0u = h0s = HWI_SIGN_EXTEND (l0s);
}
- if (GET_CODE (trueop1) == CONST_DOUBLE)
+ if (CONST_DOUBLE_AS_INT_P (trueop1))
{
l1u = l1s = CONST_DOUBLE_LOW (trueop1);
h1u = h1s = CONST_DOUBLE_HIGH (trueop1);
@@ -5455,7 +5460,7 @@ simplify_subreg (enum machine_mode outermode, rtx op,
return op;
if (CONST_INT_P (op)
- || GET_CODE (op) == CONST_DOUBLE
+ || CONST_DOUBLE_P (op)
|| GET_CODE (op) == CONST_FIXED
|| GET_CODE (op) == CONST_VECTOR)
return simplify_immed_subreg (outermode, op, innermode, byte);
diff --git a/gcc/sparseset.c b/gcc/sparseset.c
index 823919a886e..35a2c3e1a34 100644
--- a/gcc/sparseset.c
+++ b/gcc/sparseset.c
@@ -30,12 +30,14 @@ sparseset_alloc (SPARSESET_ELT_TYPE n_elms)
unsigned int n_bytes = sizeof (struct sparseset_def)
+ ((n_elms - 1) * 2 * sizeof (SPARSESET_ELT_TYPE));
- /* We use xcalloc rather than xmalloc to silence some valgrind uninitialized
+ sparseset set = XNEWVAR(struct sparseset_def, n_bytes);
+
+ /* Mark the sparseset as defined to silence some valgrind uninitialized
read errors when accessing set->sparse[n] when "n" is not, and never has
been, in the set. These uninitialized reads are expected, by design and
- harmless. If this turns into a performance problem due to some future
- additional users of sparseset, we can revisit this decision. */
- sparseset set = (sparseset) xcalloc (1, n_bytes);
+ harmless. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_MEM_DEFINED (set, n_bytes));
+
set->dense = &(set->elms[0]);
set->sparse = &(set->elms[n_elms]);
set->size = n_elms;
diff --git a/gcc/sparseset.h b/gcc/sparseset.h
index c177d2d456d..b215c55e9f3 100644
--- a/gcc/sparseset.h
+++ b/gcc/sparseset.h
@@ -1,5 +1,5 @@
/* SparseSet implementation.
- Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2012 Free Software Foundation, Inc.
Contributed by Peter Bergner <bergner@vnet.ibm.com>
This file is part of GCC.
@@ -21,11 +21,71 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_SPARSESET_H
#define GCC_SPARSESET_H
-#define SPARSESET_ELT_BITS ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT)
-#define SPARSESET_ELT_TYPE unsigned int
+/* Implementation of the Briggs and Torczon sparse set representation.
+ The sparse set representation was first published in:
+
+ "An Efficient Representation for Sparse Sets",
+ ACM LOPLAS, Vol. 2, Nos. 1-4, March-December 1993, Pages 59-69.
+
+ The sparse set representation is suitable for integer sets with a
+ fixed-size universe. Two vectors are used to store the members of
+ the set. If an element I is in the set, then sparse[I] is the
+ index of I in the dense vector, and dense[sparse[I]] == I. The dense
+ vector works like a stack. The size of the stack is the cardinality
+ of the set.
+
+ The following operations can be performed in O(1) time:
+
+ * clear : sparseset_clear
+ * cardinality : sparseset_cardinality
+ * set_size : sparseset_size
+ * member_p : sparseset_bit_p
+ * add_member : sparseset_set_bit
+ * remove_member : sparseset_clear_bit
+ * choose_one : sparseset_pop
+
+ Additionally, the sparse set representation supports enumeration of
+ the members in O(N) time, where n is the number of members in the set.
+ The members of the set are stored cache-friendly in the dense vector.
+ This makes it a competitive choice for iterating over relatively sparse
+ sets requiring operations:
+
+ * forall : EXECUTE_IF_SET_IN_SPARSESET
+ * set_copy : sparseset_copy
+ * set_intersection : sparseset_and
+ * set_union : sparseset_ior
+ * set_difference : sparseset_and_compl
+ * set_disjuction : (not implemented)
+ * set_compare : sparseset_equal_p
+
+ NB: It is OK to use remove_member during EXECUTE_IF_SET_IN_SPARSESET.
+ The iterator is updated for it.
+
+ Based on the efficiency of these operations, this representation of
+ sparse sets will often be superior to alternatives such as simple
+ bitmaps, linked-list bitmaps, array bitmaps, balanced binary trees,
+ hash tables, linked lists, etc., if the set is sufficiently sparse.
+ In the LOPLAS paper the cut-off point where sparse sets became faster
+ than simple bitmaps (see sbitmap.h) when N / U < 64 (where U is the
+ size of the universe of the set).
+
+ Because the set universe is fixed, the set cannot be resized. For
+ sparse sets with initially unknown size, linked-list bitmaps are a
+ better choice, see bitmap.h.
+
+ Sparse sets storage requirements are relatively large: O(U) with a
+ larger constant than sbitmaps (if the storage requirement for an
+ sbitmap with universe U is S, then the storage required for a sparse
+ set for the same universe are 2*HOST_BITS_PER_WIDEST_FAST_INT * S).
+ Accessing the sparse vector is not very cache-friendly, but iterating
+ over the members in the set is cache-friendly because only the dense
+ vector is used. */
/* Data Structure used for the SparseSet representation. */
+#define SPARSESET_ELT_BITS ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT)
+#define SPARSESET_ELT_TYPE unsigned HOST_WIDEST_FAST_INT
+
typedef struct sparseset_def
{
SPARSESET_ELT_TYPE *dense; /* Dense array. */
@@ -107,7 +167,7 @@ sparseset_set_bit (sparseset s, SPARSESET_ELT_TYPE e)
sparseset_insert_bit (s, e, s->members++);
}
-/* Return and remove an arbitrary element from the set S. */
+/* Return and remove the last member added to the set S. */
static inline SPARSESET_ELT_TYPE
sparseset_pop (sparseset s)
diff --git a/gcc/statistics.c b/gcc/statistics.c
index 4883859f7a3..55ec981f3bb 100644
--- a/gcc/statistics.c
+++ b/gcc/statistics.c
@@ -142,7 +142,7 @@ statistics_fini_pass_2 (void **slot, void *data ATTRIBUTE_UNUSED)
current_pass->static_pass_number,
current_pass->name,
counter->id, counter->val,
- cfun ? IDENTIFIER_POINTER (DECL_NAME (cfun->decl)) : "(nofn)",
+ current_function_name (),
count);
else
fprintf (statistics_dump_file,
@@ -150,7 +150,7 @@ statistics_fini_pass_2 (void **slot, void *data ATTRIBUTE_UNUSED)
current_pass->static_pass_number,
current_pass->name,
counter->id,
- cfun ? IDENTIFIER_POINTER (DECL_NAME (cfun->decl)) : "(nofn)",
+ current_function_name (),
count);
counter->prev_dumped_count = counter->count;
return 1;
@@ -312,7 +312,7 @@ statistics_counter_event (struct function *fn, const char *id, int incr)
current_pass->static_pass_number,
current_pass->name,
id,
- fn ? IDENTIFIER_POINTER (DECL_NAME (fn->decl)) : "(nofn)",
+ function_name (fn),
incr);
}
@@ -342,5 +342,5 @@ statistics_histogram_event (struct function *fn, const char *id, int val)
current_pass->static_pass_number,
current_pass->name,
id, val,
- fn ? IDENTIFIER_POINTER (DECL_NAME (fn->decl)) : "(nofn)");
+ function_name (fn));
}
diff --git a/gcc/statistics.h b/gcc/statistics.h
index 6e21e855797..8ec0a990003 100644
--- a/gcc/statistics.h
+++ b/gcc/statistics.h
@@ -22,20 +22,33 @@
#ifndef GCC_STATISTICS
#define GCC_STATISTICS
-#ifdef GATHER_STATISTICS
-#define MEM_STAT_DECL , const char * ARG_UNUSED (_loc_name), int ARG_UNUSED (_loc_line), const char * ARG_UNUSED (_loc_function)
-#define ALONE_MEM_STAT_DECL const char * ARG_UNUSED (_loc_name), int ARG_UNUSED (_loc_line), const char * ARG_UNUSED (_loc_function)
-#define PASS_MEM_STAT , _loc_name, _loc_line, _loc_function
+#if ! defined GATHER_STATISTICS
+#error GATHER_STATISTICS must be defined
+#endif
+
+#define GCC_MEM_STAT_ARGUMENTS const char * ARG_UNUSED (_loc_name), int ARG_UNUSED (_loc_line), const char * ARG_UNUSED (_loc_function)
+#if GATHER_STATISTICS
+#define ALONE_MEM_STAT_DECL GCC_MEM_STAT_ARGUMENTS
+#define ALONE_FINAL_MEM_STAT_DECL ALONE_MEM_STAT_DECL
#define ALONE_PASS_MEM_STAT _loc_name, _loc_line, _loc_function
-#define MEM_STAT_INFO , __FILE__, __LINE__, __FUNCTION__
+#define ALONE_FINAL_PASS_MEM_STAT ALONE_PASS_MEM_STAT
#define ALONE_MEM_STAT_INFO __FILE__, __LINE__, __FUNCTION__
+#define MEM_STAT_DECL , ALONE_MEM_STAT_DECL
+#define FINAL_MEM_STAT_DECL , ALONE_FINAL_MEM_STAT_DECL
+#define PASS_MEM_STAT , ALONE_PASS_MEM_STAT
+#define FINAL_PASS_MEM_STAT , ALONE_FINAL_PASS_MEM_STAT
+#define MEM_STAT_INFO , ALONE_MEM_STAT_INFO
#else
-#define MEM_STAT_DECL
#define ALONE_MEM_STAT_DECL void
-#define PASS_MEM_STAT
+#define ALONE_FINAL_MEM_STAT_DECL GCC_MEM_STAT_ARGUMENTS
#define ALONE_PASS_MEM_STAT
-#define MEM_STAT_INFO
+#define ALONE_FINAL_PASS_MEM_STAT 0,0,0
#define ALONE_MEM_STAT_INFO
+#define MEM_STAT_DECL
+#define FINAL_MEM_STAT_DECL , ALONE_FINAL_MEM_STAT_DECL
+#define PASS_MEM_STAT
+#define FINAL_PASS_MEM_STAT , ALONE_FINAL_PASS_MEM_STAT
+#define MEM_STAT_INFO ALONE_MEM_STAT_INFO
#endif
struct function;
diff --git a/gcc/stmt.c b/gcc/stmt.c
index ea0d3a58d97..11180e4dc4a 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -54,6 +54,7 @@ along with GCC; see the file COPYING3. If not see
#include "pretty-print.h"
#include "bitmap.h"
#include "params.h"
+#include "dumpfile.h"
/* Functions and data structures for expanding case statements. */
@@ -107,9 +108,6 @@ static bool check_unique_operand_names (tree, tree, tree);
static char *resolve_operand_name_1 (char *, tree, tree, tree);
static void expand_null_return_1 (void);
static void expand_value_return (rtx);
-static bool lshift_cheap_p (void);
-static int case_bit_test_cmp (const void *, const void *);
-static void emit_case_bit_tests (tree, tree, tree, tree, case_node_ptr, rtx);
static void balance_case_nodes (case_node_ptr *, case_node_ptr);
static int node_has_low_bound (case_node_ptr, tree);
static int node_has_high_bound (case_node_ptr, tree);
@@ -1402,42 +1400,6 @@ resolve_operand_name_1 (char *p, tree outputs, tree inputs, tree labels)
return p;
}
-/* Generate RTL to evaluate the expression EXP. */
-
-void
-expand_expr_stmt (tree exp)
-{
- rtx value;
- tree type;
-
- value = expand_expr (exp, const0_rtx, VOIDmode, EXPAND_NORMAL);
- type = TREE_TYPE (exp);
-
- /* If all we do is reference a volatile value in memory,
- copy it to a register to be sure it is actually touched. */
- if (value && MEM_P (value) && TREE_THIS_VOLATILE (exp))
- {
- if (TYPE_MODE (type) == VOIDmode)
- ;
- else if (TYPE_MODE (type) != BLKmode)
- copy_to_reg (value);
- else
- {
- rtx lab = gen_label_rtx ();
-
- /* Compare the value with itself to reference it. */
- emit_cmp_and_jump_insns (value, value, EQ,
- expand_normal (TYPE_SIZE (type)),
- BLKmode, 0, lab);
- emit_label (lab);
- }
- }
-
- /* Free any temporaries used to evaluate this expression. */
- free_temp_slots ();
-}
-
-
/* Generate RTL to return from the current function, with no value.
(That is, we do not do anything about returning any value.) */
@@ -1719,192 +1681,262 @@ add_case_node (struct case_node *head, tree type, tree low, tree high,
return r;
}
-/* Maximum number of case bit tests. */
-#define MAX_CASE_BIT_TESTS 3
-
-/* A case_bit_test represents a set of case nodes that may be
- selected from using a bit-wise comparison. HI and LO hold
- the integer to be tested against, LABEL contains the label
- to jump to upon success and BITS counts the number of case
- nodes handled by this test, typically the number of bits
- set in HI:LO. */
+/* Dump ROOT, a list or tree of case nodes, to file. */
-struct case_bit_test
+static void
+dump_case_nodes (FILE *f, struct case_node *root,
+ int indent_step, int indent_level)
{
- HOST_WIDE_INT hi;
- HOST_WIDE_INT lo;
- rtx label;
- int bits;
-};
+ HOST_WIDE_INT low, high;
-/* Determine whether "1 << x" is relatively cheap in word_mode. */
+ if (root == 0)
+ return;
+ indent_level++;
-static
-bool lshift_cheap_p (void)
-{
- static bool init[2] = {false, false};
- static bool cheap[2] = {true, true};
+ dump_case_nodes (f, root->left, indent_step, indent_level);
- bool speed_p = optimize_insn_for_speed_p ();
+ low = tree_low_cst (root->low, 0);
+ high = tree_low_cst (root->high, 0);
- if (!init[speed_p])
- {
- rtx reg = gen_rtx_REG (word_mode, 10000);
- int cost = set_src_cost (gen_rtx_ASHIFT (word_mode, const1_rtx, reg),
- speed_p);
- cheap[speed_p] = cost < COSTS_N_INSNS (3);
- init[speed_p] = true;
- }
+ fputs (";; ", f);
+ if (high == low)
+ fprintf(f, "%*s" HOST_WIDE_INT_PRINT_DEC,
+ indent_step * indent_level, "", low);
+ else
+ fprintf(f, "%*s" HOST_WIDE_INT_PRINT_DEC " ... " HOST_WIDE_INT_PRINT_DEC,
+ indent_step * indent_level, "", low, high);
+ fputs ("\n", f);
- return cheap[speed_p];
+ dump_case_nodes (f, root->right, indent_step, indent_level);
}
+
+#ifndef HAVE_casesi
+#define HAVE_casesi 0
+#endif
-/* Comparison function for qsort to order bit tests by decreasing
- number of case nodes, i.e. the node with the most cases gets
- tested first. */
+#ifndef HAVE_tablejump
+#define HAVE_tablejump 0
+#endif
-static int
-case_bit_test_cmp (const void *p1, const void *p2)
+/* Return the smallest number of different values for which it is best to use a
+ jump-table instead of a tree of conditional branches. */
+
+static unsigned int
+case_values_threshold (void)
{
- const struct case_bit_test *const d1 = (const struct case_bit_test *) p1;
- const struct case_bit_test *const d2 = (const struct case_bit_test *) p2;
+ unsigned int threshold = PARAM_VALUE (PARAM_CASE_VALUES_THRESHOLD);
- if (d2->bits != d1->bits)
- return d2->bits - d1->bits;
+ if (threshold == 0)
+ threshold = targetm.case_values_threshold ();
- /* Stabilize the sort. */
- return CODE_LABEL_NUMBER (d2->label) - CODE_LABEL_NUMBER (d1->label);
+ return threshold;
}
-/* Expand a switch statement by a short sequence of bit-wise
- comparisons. "switch(x)" is effectively converted into
- "if ((1 << (x-MINVAL)) & CST)" where CST and MINVAL are
- integer constants.
+/* Return true if a switch should be expanded as a decision tree.
+ RANGE is the difference between highest and lowest case.
+ UNIQ is number of unique case node targets, not counting the default case.
+ COUNT is the number of comparisons needed, not counting the default case. */
- INDEX_EXPR is the value being switched on, which is of
- type INDEX_TYPE. MINVAL is the lowest case value of in
- the case nodes, of INDEX_TYPE type, and RANGE is highest
- value minus MINVAL, also of type INDEX_TYPE. NODES is
- the set of case nodes, and DEFAULT_LABEL is the label to
- branch to should none of the cases match.
+static bool
+expand_switch_as_decision_tree_p (tree range,
+ unsigned int uniq ATTRIBUTE_UNUSED,
+ unsigned int count)
+{
+ int max_ratio;
+
+ /* If neither casesi or tablejump is available, or flag_jump_tables
+ over-ruled us, we really have no choice. */
+ if (!HAVE_casesi && !HAVE_tablejump)
+ return true;
+ if (!flag_jump_tables)
+ return true;
+
+ /* If the switch is relatively small such that the cost of one
+ indirect jump on the target are higher than the cost of a
+ decision tree, go with the decision tree.
+
+ If range of values is much bigger than number of values,
+ or if it is too large to represent in a HOST_WIDE_INT,
+ make a sequence of conditional branches instead of a dispatch.
+
+ The definition of "much bigger" depends on whether we are
+ optimizing for size or for speed. If the former, the maximum
+ ratio range/count = 3, because this was found to be the optimal
+ ratio for size on i686-pc-linux-gnu, see PR11823. The ratio
+ 10 is much older, and was probably selected after an extensive
+ benchmarking investigation on numerous platforms. Or maybe it
+ just made sense to someone at some point in the history of GCC,
+ who knows... */
+ max_ratio = optimize_insn_for_size_p () ? 3 : 10;
+ if (count < case_values_threshold ()
+ || ! host_integerp (range, /*pos=*/1)
+ || compare_tree_int (range, max_ratio * count) > 0)
+ return true;
- There *MUST* be MAX_CASE_BIT_TESTS or less unique case
- node targets. */
+ return false;
+}
+
+/* Generate a decision tree, switching on INDEX_EXPR and jumping to
+ one of the labels in CASE_LIST or to the DEFAULT_LABEL.
+
+ We generate a binary decision tree to select the appropriate target
+ code. This is done as follows:
+
+ If the index is a short or char that we do not have
+ an insn to handle comparisons directly, convert it to
+ a full integer now, rather than letting each comparison
+ generate the conversion.
+
+ Load the index into a register.
+
+ The list of cases is rearranged into a binary tree,
+ nearly optimal assuming equal probability for each case.
+
+ The tree is transformed into RTL, eliminating redundant
+ test conditions at the same time.
+
+ If program flow could reach the end of the decision tree
+ an unconditional jump to the default code is emitted.
+
+ The above process is unaware of the CFG. The caller has to fix up
+ the CFG itself. This is done in cfgexpand.c. */
static void
-emit_case_bit_tests (tree index_type, tree index_expr, tree minval,
- tree range, case_node_ptr nodes, rtx default_label)
+emit_case_decision_tree (tree index_expr, tree index_type,
+ struct case_node *case_list, rtx default_label)
{
- struct case_bit_test test[MAX_CASE_BIT_TESTS];
- enum machine_mode mode;
- rtx expr, index, label;
- unsigned int i,j,lo,hi;
- struct case_node *n;
- unsigned int count;
+ rtx index = expand_normal (index_expr);
- count = 0;
- for (n = nodes; n; n = n->right)
+ if (GET_MODE_CLASS (GET_MODE (index)) == MODE_INT
+ && ! have_insn_for (COMPARE, GET_MODE (index)))
{
- label = label_rtx (n->code_label);
- for (i = 0; i < count; i++)
- if (label == test[i].label)
- break;
-
- if (i == count)
- {
- gcc_assert (count < MAX_CASE_BIT_TESTS);
- test[i].hi = 0;
- test[i].lo = 0;
- test[i].label = label;
- test[i].bits = 1;
- count++;
- }
- else
- test[i].bits++;
-
- lo = tree_low_cst (fold_build2 (MINUS_EXPR, index_type,
- n->low, minval), 1);
- hi = tree_low_cst (fold_build2 (MINUS_EXPR, index_type,
- n->high, minval), 1);
- for (j = lo; j <= hi; j++)
- if (j >= HOST_BITS_PER_WIDE_INT)
- test[i].hi |= (HOST_WIDE_INT) 1 << (j - HOST_BITS_PER_INT);
- else
- test[i].lo |= (HOST_WIDE_INT) 1 << j;
+ int unsignedp = TYPE_UNSIGNED (index_type);
+ enum machine_mode wider_mode;
+ for (wider_mode = GET_MODE (index); wider_mode != VOIDmode;
+ wider_mode = GET_MODE_WIDER_MODE (wider_mode))
+ if (have_insn_for (COMPARE, wider_mode))
+ {
+ index = convert_to_mode (wider_mode, index, unsignedp);
+ break;
+ }
}
- qsort (test, count, sizeof(*test), case_bit_test_cmp);
-
- index_expr = fold_build2 (MINUS_EXPR, index_type,
- fold_convert (index_type, index_expr),
- fold_convert (index_type, minval));
- index = expand_normal (index_expr);
do_pending_stack_adjust ();
- mode = TYPE_MODE (index_type);
- expr = expand_normal (range);
- if (default_label)
- emit_cmp_and_jump_insns (index, expr, GTU, NULL_RTX, mode, 1,
- default_label);
+ if (MEM_P (index))
+ {
+ index = copy_to_reg (index);
+ if (TREE_CODE (index_expr) == SSA_NAME)
+ set_reg_attrs_for_decl_rtl (SSA_NAME_VAR (index_expr), index);
+ }
- index = convert_to_mode (word_mode, index, 0);
- index = expand_binop (word_mode, ashl_optab, const1_rtx,
- index, NULL_RTX, 1, OPTAB_WIDEN);
+ balance_case_nodes (&case_list, NULL);
- for (i = 0; i < count; i++)
+ if (dump_file && (dump_flags & TDF_DETAILS))
{
- expr = immed_double_const (test[i].lo, test[i].hi, word_mode);
- expr = expand_binop (word_mode, and_optab, index, expr,
- NULL_RTX, 1, OPTAB_WIDEN);
- emit_cmp_and_jump_insns (expr, const0_rtx, NE, NULL_RTX,
- word_mode, 1, test[i].label);
+ int indent_step = ceil_log2 (TYPE_PRECISION (index_type)) + 2;
+ fprintf (dump_file, ";; Expanding GIMPLE switch as decision tree:\n");
+ dump_case_nodes (dump_file, case_list, indent_step, 0);
}
+ emit_case_nodes (index, case_list, default_label, index_type);
if (default_label)
emit_jump (default_label);
}
-#ifndef HAVE_casesi
-#define HAVE_casesi 0
-#endif
+/* Generate a dispatch tabler, switching on INDEX_EXPR and jumping to
+ one of the labels in CASE_LIST or to the DEFAULT_LABEL.
+ MINVAL, MAXVAL, and RANGE are the extrema and range of the case
+ labels in CASE_LIST.
-#ifndef HAVE_tablejump
-#define HAVE_tablejump 0
-#endif
+ First, a jump insn is emitted. First we try "casesi". If that
+ fails, try "tablejump". A target *must* have one of them (or both).
-/* Return true if a switch should be expanded as a bit test.
- INDEX_EXPR is the index expression, RANGE is the difference between
- highest and lowest case, UNIQ is number of unique case node targets
- not counting the default case and COUNT is the number of comparisons
- needed, not counting the default case. */
-bool
-expand_switch_using_bit_tests_p (tree index_expr, tree range,
- unsigned int uniq, unsigned int count)
-{
- if (optab_handler (ashl_optab, word_mode) == CODE_FOR_nothing)
- return false;
-
- return (! TREE_CONSTANT (index_expr)
- && compare_tree_int (range, GET_MODE_BITSIZE (word_mode)) < 0
- && compare_tree_int (range, 0) > 0
- && lshift_cheap_p ()
- && ((uniq == 1 && count >= 3)
- || (uniq == 2 && count >= 5)
- || (uniq == 3 && count >= 6)));
-}
+ Then, a table with the target labels is emitted.
-/* Return the smallest number of different values for which it is best to use a
- jump-table instead of a tree of conditional branches. */
+ The process is unaware of the CFG. The caller has to fix up
+ the CFG itself. This is done in cfgexpand.c. */
-static unsigned int
-case_values_threshold (void)
+static void
+emit_case_dispatch_table (tree index_expr, tree index_type,
+ struct case_node *case_list, rtx default_label,
+ tree minval, tree maxval, tree range)
{
- unsigned int threshold = PARAM_VALUE (PARAM_CASE_VALUES_THRESHOLD);
+ int i, ncases;
+ struct case_node *n;
+ rtx *labelvec;
+ rtx fallback_label = label_rtx (case_list->code_label);
+ rtx table_label = gen_label_rtx ();
- if (threshold == 0)
- threshold = targetm.case_values_threshold ();
+ if (! try_casesi (index_type, index_expr, minval, range,
+ table_label, default_label, fallback_label))
+ {
+ bool ok;
- return threshold;
+ /* Index jumptables from zero for suitable values of minval to avoid
+ a subtraction. For the rationale see:
+ "http://gcc.gnu.org/ml/gcc-patches/2001-10/msg01234.html". */
+ if (optimize_insn_for_speed_p ()
+ && compare_tree_int (minval, 0) > 0
+ && compare_tree_int (minval, 3) < 0)
+ {
+ minval = build_int_cst (index_type, 0);
+ range = maxval;
+ }
+
+ ok = try_tablejump (index_type, index_expr, minval, range,
+ table_label, default_label);
+ gcc_assert (ok);
+ }
+
+ /* Get table of labels to jump to, in order of case index. */
+
+ ncases = tree_low_cst (range, 0) + 1;
+ labelvec = XALLOCAVEC (rtx, ncases);
+ memset (labelvec, 0, ncases * sizeof (rtx));
+
+ for (n = case_list; n; n = n->right)
+ {
+ /* Compute the low and high bounds relative to the minimum
+ value since that should fit in a HOST_WIDE_INT while the
+ actual values may not. */
+ HOST_WIDE_INT i_low
+ = tree_low_cst (fold_build2 (MINUS_EXPR, index_type,
+ n->low, minval), 1);
+ HOST_WIDE_INT i_high
+ = tree_low_cst (fold_build2 (MINUS_EXPR, index_type,
+ n->high, minval), 1);
+ HOST_WIDE_INT i;
+
+ for (i = i_low; i <= i_high; i ++)
+ labelvec[i]
+ = gen_rtx_LABEL_REF (Pmode, label_rtx (n->code_label));
+ }
+
+ /* Fill in the gaps with the default. We may have gaps at
+ the beginning if we tried to avoid the minval subtraction,
+ so substitute some label even if the default label was
+ deemed unreachable. */
+ if (!default_label)
+ default_label = fallback_label;
+ for (i = 0; i < ncases; i++)
+ if (labelvec[i] == 0)
+ labelvec[i] = gen_rtx_LABEL_REF (Pmode, default_label);
+
+ /* Output the table. */
+ emit_label (table_label);
+
+ if (CASE_VECTOR_PC_RELATIVE || flag_pic)
+ emit_jump_insn (gen_rtx_ADDR_DIFF_VEC (CASE_VECTOR_MODE,
+ gen_rtx_LABEL_REF (Pmode, table_label),
+ gen_rtvec_v (ncases, labelvec),
+ const0_rtx, const0_rtx));
+ else
+ emit_jump_insn (gen_rtx_ADDR_VEC (CASE_VECTOR_MODE,
+ gen_rtvec_v (ncases, labelvec)));
+
+ /* Record no drop-through after the table. */
+ emit_barrier ();
}
/* Terminate a case (Pascal/Ada) or switch (C) statement
@@ -1917,19 +1949,16 @@ void
expand_case (gimple stmt)
{
tree minval = NULL_TREE, maxval = NULL_TREE, range = NULL_TREE;
- rtx default_label = 0;
- struct case_node *n;
+ rtx default_label = NULL_RTX;
unsigned int count, uniq;
- rtx index;
- rtx table_label;
- int ncases;
- rtx *labelvec;
- int i;
- rtx before_case, end, lab;
-
+ int i, stopi = 0;
+ rtx before_case, end;
+ int ncases = gimple_switch_num_labels (stmt);
tree index_expr = gimple_switch_index (stmt);
tree index_type = TREE_TYPE (index_expr);
- int unsignedp = TYPE_UNSIGNED (index_type);
+
+ tree elt;
+ bitmap label_bitmap;
/* The insn after which the case dispatch should finally
be emitted. Zero for a dummy. */
@@ -1939,262 +1968,106 @@ expand_case (gimple stmt)
be rearranged into a nearly balanced binary tree. */
struct case_node *case_list = 0;
- /* Label to jump to if no case matches. */
- tree default_label_decl = NULL_TREE;
+ /* A pool for case nodes. */
+ alloc_pool case_node_pool;
+
+ /* An ERROR_MARK occurs for various reasons including invalid data type.
+ ??? Can this still happen, with GIMPLE and all? */
+ if (index_type == error_mark_node)
+ return;
- alloc_pool case_node_pool = create_alloc_pool ("struct case_node pool",
- sizeof (struct case_node),
- 100);
+ /* cleanup_tree_cfg removes all SWITCH_EXPR with their index
+ expressions being INTEGER_CST. */
+ gcc_assert (TREE_CODE (index_expr) != INTEGER_CST);
+
+ case_node_pool = create_alloc_pool ("struct case_node pool",
+ sizeof (struct case_node),
+ 100);
do_pending_stack_adjust ();
- /* An ERROR_MARK occurs for various reasons including invalid data type. */
- if (index_type != error_mark_node)
+ /* The default case, if ever taken, is the first element. */
+ elt = gimple_switch_label (stmt, 0);
+ if (!CASE_LOW (elt) && !CASE_HIGH (elt))
{
- tree elt;
- bitmap label_bitmap;
- int stopi = 0;
-
- /* cleanup_tree_cfg removes all SWITCH_EXPR with their index
- expressions being INTEGER_CST. */
- gcc_assert (TREE_CODE (index_expr) != INTEGER_CST);
-
- /* The default case, if ever taken, is the first element. */
- elt = gimple_switch_label (stmt, 0);
- if (!CASE_LOW (elt) && !CASE_HIGH (elt))
- {
- default_label_decl = CASE_LABEL (elt);
- stopi = 1;
- }
-
- for (i = gimple_switch_num_labels (stmt) - 1; i >= stopi; --i)
- {
- tree low, high;
- elt = gimple_switch_label (stmt, i);
-
- low = CASE_LOW (elt);
- gcc_assert (low);
- high = CASE_HIGH (elt);
-
- /* The canonical from of a case label in GIMPLE is that a simple case
- has an empty CASE_HIGH. For the casesi and tablejump expanders,
- the back ends want simple cases to have high == low. */
- gcc_assert (! high || tree_int_cst_lt (low, high));
- if (! high)
- high = low;
-
- case_list = add_case_node (case_list, index_type, low, high,
- CASE_LABEL (elt), case_node_pool);
- }
-
-
- before_case = start = get_last_insn ();
- if (default_label_decl)
- default_label = label_rtx (default_label_decl);
-
- /* Get upper and lower bounds of case values. */
-
- uniq = 0;
- count = 0;
- label_bitmap = BITMAP_ALLOC (NULL);
- for (n = case_list; n; n = n->right)
- {
- /* Count the elements and track the largest and smallest
- of them (treating them as signed even if they are not). */
- if (count++ == 0)
- {
- minval = n->low;
- maxval = n->high;
- }
- else
- {
- if (tree_int_cst_lt (n->low, minval))
- minval = n->low;
- if (tree_int_cst_lt (maxval, n->high))
- maxval = n->high;
- }
- /* A range counts double, since it requires two compares. */
- if (! tree_int_cst_equal (n->low, n->high))
- count++;
-
- /* If we have not seen this label yet, then increase the
- number of unique case node targets seen. */
- lab = label_rtx (n->code_label);
- if (bitmap_set_bit (label_bitmap, CODE_LABEL_NUMBER (lab)))
- uniq++;
- }
-
- BITMAP_FREE (label_bitmap);
-
- /* cleanup_tree_cfg removes all SWITCH_EXPR with a single
- destination, such as one with a default case only.
- It also removes cases that are out of range for the switch
- type, so we should never get a zero here. */
- gcc_assert (count > 0);
-
- /* Compute span of values. */
- range = fold_build2 (MINUS_EXPR, index_type, maxval, minval);
-
- /* Try implementing this switch statement by a short sequence of
- bit-wise comparisons. However, we let the binary-tree case
- below handle constant index expressions. */
- if (expand_switch_using_bit_tests_p (index_expr, range, uniq, count))
- {
- /* Optimize the case where all the case values fit in a
- word without having to subtract MINVAL. In this case,
- we can optimize away the subtraction. */
- if (compare_tree_int (minval, 0) > 0
- && compare_tree_int (maxval, GET_MODE_BITSIZE (word_mode)) < 0)
- {
- minval = build_int_cst (index_type, 0);
- range = maxval;
- }
- emit_case_bit_tests (index_type, index_expr, minval, range,
- case_list, default_label);
- }
-
- /* If range of values is much bigger than number of values,
- make a sequence of conditional branches instead of a dispatch.
- If the switch-index is a constant, do it this way
- because we can optimize it. */
-
- else if (count < case_values_threshold ()
- || compare_tree_int (range,
- (optimize_insn_for_size_p () ? 3 : 10) * count) > 0
- /* RANGE may be signed, and really large ranges will show up
- as negative numbers. */
- || compare_tree_int (range, 0) < 0
- || !flag_jump_tables
- || TREE_CONSTANT (index_expr)
- /* If neither casesi or tablejump is available, we can
- only go this way. */
- || (!HAVE_casesi && !HAVE_tablejump))
- {
- index = expand_normal (index_expr);
-
- /* If the index is a short or char that we do not have
- an insn to handle comparisons directly, convert it to
- a full integer now, rather than letting each comparison
- generate the conversion. */
-
- if (GET_MODE_CLASS (GET_MODE (index)) == MODE_INT
- && ! have_insn_for (COMPARE, GET_MODE (index)))
- {
- enum machine_mode wider_mode;
- for (wider_mode = GET_MODE (index); wider_mode != VOIDmode;
- wider_mode = GET_MODE_WIDER_MODE (wider_mode))
- if (have_insn_for (COMPARE, wider_mode))
- {
- index = convert_to_mode (wider_mode, index, unsignedp);
- break;
- }
- }
-
- do_pending_stack_adjust ();
-
- if (MEM_P (index))
- {
- index = copy_to_reg (index);
- if (TREE_CODE (index_expr) == SSA_NAME)
- set_reg_attrs_for_decl_rtl (SSA_NAME_VAR (index_expr), index);
- }
-
- /* We generate a binary decision tree to select the
- appropriate target code. This is done as follows:
-
- The list of cases is rearranged into a binary tree,
- nearly optimal assuming equal probability for each case.
-
- The tree is transformed into RTL, eliminating
- redundant test conditions at the same time.
-
- If program flow could reach the end of the
- decision tree an unconditional jump to the
- default code is emitted. */
+ default_label = label_rtx (CASE_LABEL (elt));
+ stopi = 1;
+ }
- balance_case_nodes (&case_list, NULL);
- emit_case_nodes (index, case_list, default_label, index_type);
- if (default_label)
- emit_jump (default_label);
- }
- else
- {
- rtx fallback_label = label_rtx (case_list->code_label);
- table_label = gen_label_rtx ();
- if (! try_casesi (index_type, index_expr, minval, range,
- table_label, default_label, fallback_label))
- {
- bool ok;
+ /* Get upper and lower bounds of case values. */
+ elt = gimple_switch_label (stmt, stopi);
+ minval = fold_convert (index_type, CASE_LOW (elt));
+ elt = gimple_switch_label (stmt, ncases - 1);
+ if (CASE_HIGH (elt))
+ maxval = fold_convert (index_type, CASE_HIGH (elt));
+ else
+ maxval = fold_convert (index_type, CASE_LOW (elt));
- /* Index jumptables from zero for suitable values of
- minval to avoid a subtraction. */
- if (optimize_insn_for_speed_p ()
- && compare_tree_int (minval, 0) > 0
- && compare_tree_int (minval, 3) < 0)
- {
- minval = build_int_cst (index_type, 0);
- range = maxval;
- }
+ /* Compute span of values. */
+ range = fold_build2 (MINUS_EXPR, index_type, maxval, minval);
- ok = try_tablejump (index_type, index_expr, minval, range,
- table_label, default_label);
- gcc_assert (ok);
- }
-
- /* Get table of labels to jump to, in order of case index. */
+ /* Listify the labels queue and gather some numbers to decide
+ how to expand this switch(). */
+ uniq = 0;
+ count = 0;
+ label_bitmap = BITMAP_ALLOC (NULL);
+ for (i = gimple_switch_num_labels (stmt) - 1; i >= stopi; --i)
+ {
+ tree low, high;
+ rtx lab;
+
+ elt = gimple_switch_label (stmt, i);
+ low = CASE_LOW (elt);
+ gcc_assert (low);
+ high = CASE_HIGH (elt);
+ gcc_assert (! high || tree_int_cst_lt (low, high));
+
+ /* Count the elements.
+ A range counts double, since it requires two compares. */
+ count++;
+ if (high)
+ count++;
+
+ /* If we have not seen this label yet, then increase the
+ number of unique case node targets seen. */
+ lab = label_rtx (CASE_LABEL (elt));
+ if (bitmap_set_bit (label_bitmap, CODE_LABEL_NUMBER (lab)))
+ uniq++;
+
+ /* The canonical from of a case label in GIMPLE is that a simple case
+ has an empty CASE_HIGH. For the casesi and tablejump expanders,
+ the back ends want simple cases to have high == low. */
+ if (! high)
+ high = low;
+
+ case_list = add_case_node (case_list, index_type, low, high,
+ CASE_LABEL (elt), case_node_pool);
+ }
+ BITMAP_FREE (label_bitmap);
- ncases = tree_low_cst (range, 0) + 1;
- labelvec = XALLOCAVEC (rtx, ncases);
- memset (labelvec, 0, ncases * sizeof (rtx));
+ /* cleanup_tree_cfg removes all SWITCH_EXPR with a single
+ destination, such as one with a default case only.
+ It also removes cases that are out of range for the switch
+ type, so we should never get a zero here. */
+ gcc_assert (count > 0);
- for (n = case_list; n; n = n->right)
- {
- /* Compute the low and high bounds relative to the minimum
- value since that should fit in a HOST_WIDE_INT while the
- actual values may not. */
- HOST_WIDE_INT i_low
- = tree_low_cst (fold_build2 (MINUS_EXPR, index_type,
- n->low, minval), 1);
- HOST_WIDE_INT i_high
- = tree_low_cst (fold_build2 (MINUS_EXPR, index_type,
- n->high, minval), 1);
- HOST_WIDE_INT i;
-
- for (i = i_low; i <= i_high; i ++)
- labelvec[i]
- = gen_rtx_LABEL_REF (Pmode, label_rtx (n->code_label));
- }
+ before_case = start = get_last_insn ();
- /* Fill in the gaps with the default. We may have gaps at
- the beginning if we tried to avoid the minval subtraction,
- so substitute some label even if the default label was
- deemed unreachable. */
- if (!default_label)
- default_label = fallback_label;
- for (i = 0; i < ncases; i++)
- if (labelvec[i] == 0)
- labelvec[i] = gen_rtx_LABEL_REF (Pmode, default_label);
-
- /* Output the table. */
- emit_label (table_label);
-
- if (CASE_VECTOR_PC_RELATIVE || flag_pic)
- emit_jump_insn (gen_rtx_ADDR_DIFF_VEC (CASE_VECTOR_MODE,
- gen_rtx_LABEL_REF (Pmode, table_label),
- gen_rtvec_v (ncases, labelvec),
- const0_rtx, const0_rtx));
- else
- emit_jump_insn (gen_rtx_ADDR_VEC (CASE_VECTOR_MODE,
- gen_rtvec_v (ncases, labelvec)));
+ /* Decide how to expand this switch.
+ The two options at this point are a dispatch table (casesi or
+ tablejump) or a decision tree. */
- /* Record no drop-through after the table. */
- emit_barrier ();
- }
+ if (expand_switch_as_decision_tree_p (range, uniq, count))
+ emit_case_decision_tree (index_expr, index_type,
+ case_list, default_label);
+ else
+ emit_case_dispatch_table (index_expr, index_type,
+ case_list, default_label,
+ minval, maxval, range);
- before_case = NEXT_INSN (before_case);
- end = get_last_insn ();
- reorder_insns (before_case, end, start);
- }
+ before_case = NEXT_INSN (before_case);
+ end = get_last_insn ();
+ reorder_insns (before_case, end, start);
free_temp_slots ();
free_alloc_pool (case_node_pool);
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index 0d3d5d29a89..0f555946083 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -1,7 +1,7 @@
/* C-compiler utilities for types and variables storage layout
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1996, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011 Free Software Foundation, Inc.
+ 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1627,13 +1627,10 @@ compute_record_mode (tree type)
if (simple_cst_equal (TYPE_SIZE (type), DECL_SIZE (field)))
mode = DECL_MODE (field);
-#ifdef MEMBER_TYPE_FORCES_BLK
- /* With some targets, eg. c4x, it is sub-optimal
- to access an aligned BLKmode structure as a scalar. */
-
- if (MEMBER_TYPE_FORCES_BLK (field, mode))
+ /* With some targets, it is sub-optimal to access an aligned
+ BLKmode structure as a scalar. */
+ if (targetm.member_type_forces_blk (field, mode))
return;
-#endif /* MEMBER_TYPE_FORCES_BLK */
}
/* If we only have one real field; use its mode if that mode's size
@@ -2131,9 +2128,17 @@ layout_type (tree type)
TYPE_SIZE (type) = int_const_binop (MULT_EXPR, TYPE_SIZE (innertype),
bitsize_int (nunits));
- /* Always naturally align vectors. This prevents ABI changes
- depending on whether or not native vector modes are supported. */
- TYPE_ALIGN (type) = tree_low_cst (TYPE_SIZE (type), 0);
+ /* For vector types, we do not default to the mode's alignment.
+ Instead, query a target hook, defaulting to natural alignment.
+ This prevents ABI changes depending on whether or not native
+ vector modes are supported. */
+ TYPE_ALIGN (type) = targetm.vector_alignment (type);
+
+ /* However, if the underlying mode requires a bigger alignment than
+ what the target hook provides, we cannot use the mode. For now,
+ simply reject that case. */
+ gcc_assert (TYPE_ALIGN (type)
+ >= GET_MODE_ALIGNMENT (TYPE_MODE (type)));
break;
}
@@ -2262,9 +2267,7 @@ layout_type (tree type)
TYPE_USER_ALIGN (type) = TYPE_USER_ALIGN (element);
SET_TYPE_MODE (type, BLKmode);
if (TYPE_SIZE (type) != 0
-#ifdef MEMBER_TYPE_FORCES_BLK
- && ! MEMBER_TYPE_FORCES_BLK (type, VOIDmode)
-#endif
+ && ! targetm.member_type_forces_blk (type, VOIDmode)
/* BLKmode elements force BLKmode aggregate;
else extract/store fields may lose. */
&& (TYPE_MODE (TREE_TYPE (type)) != BLKmode
@@ -2560,10 +2563,14 @@ set_min_and_max_values_for_integral_type (tree type,
= build_int_cst_wide (type,
(precision - HOST_BITS_PER_WIDE_INT > 0
? -1
- : ((HOST_WIDE_INT) 1 << (precision - 1)) - 1),
+ : (HOST_WIDE_INT)
+ (((unsigned HOST_WIDE_INT) 1
+ << (precision - 1)) - 1)),
(precision - HOST_BITS_PER_WIDE_INT - 1 > 0
- ? (((HOST_WIDE_INT) 1
- << (precision - HOST_BITS_PER_WIDE_INT - 1))) - 1
+ ? (HOST_WIDE_INT)
+ ((((unsigned HOST_WIDE_INT) 1
+ << (precision - HOST_BITS_PER_WIDE_INT
+ - 1))) - 1)
: 0));
}
diff --git a/gcc/store-motion.c b/gcc/store-motion.c
index bd0d7edc6d2..1cda4045b7c 100644
--- a/gcc/store-motion.c
+++ b/gcc/store-motion.c
@@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "ggc.h"
#include "intl.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "hashtab.h"
#include "df.h"
diff --git a/gcc/stringpool.c b/gcc/stringpool.c
index 747db177b2a..281e5501d1e 100644
--- a/gcc/stringpool.c
+++ b/gcc/stringpool.c
@@ -49,7 +49,7 @@ static const char digit_vector[] = {
struct ht *ident_hash;
-static hashnode alloc_node (hash_table *);
+static hashnode alloc_node (cpp_hash_table *);
static int mark_ident (struct cpp_reader *, hashnode, const void *);
static void *
@@ -70,7 +70,7 @@ init_stringpool (void)
/* Allocate a hash node. */
static hashnode
-alloc_node (hash_table *table ATTRIBUTE_UNUSED)
+alloc_node (cpp_hash_table *table ATTRIBUTE_UNUSED)
{
return GCC_IDENT_TO_HT_IDENT (make_node (IDENTIFIER_NODE));
}
@@ -210,6 +210,32 @@ gt_pch_n_S (const void *x)
gt_pch_note_object (CONST_CAST (void *, x), CONST_CAST (void *, x),
&gt_pch_p_S, gt_types_enum_last);
}
+
+
+/* User-callable entry point for marking string X. */
+
+void
+gt_pch_nx (const char *& x)
+{
+ gt_pch_n_S (x);
+}
+
+void
+gt_pch_nx (unsigned char *& x)
+{
+ gt_pch_n_S (x);
+}
+
+void
+gt_pch_nx (unsigned char& x ATTRIBUTE_UNUSED)
+{
+}
+
+void
+gt_pch_nx (unsigned char *x, gt_pointer_operator op, void *cookie)
+{
+ op (x, cookie);
+}
/* Handle saving and restoring the string pool for PCH. */
diff --git a/gcc/system.h b/gcc/system.h
index f8b52324bd4..48c9c894e34 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -663,14 +663,6 @@ extern int vsnprintf(char *, size_t, const char *, va_list);
#define __builtin_expect(a, b) (a)
#endif
-/* Default file in which to dump debug output. Here for lack of a better
- place to put it. This used to be defined in output.h, but that results
- in almost all files including output.h, even if they don't output anything
- except, maybe, something to the dump file. */
-#ifdef BUFSIZ
-extern FILE *dump_file;
-#endif
-
/* Redefine abort to report an internal error w/o coredump, and
reporting the location of the error in the source file. */
extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
@@ -816,7 +808,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
CAN_DEBUG_WITHOUT_FP UNLIKELY_EXECUTED_TEXT_SECTION_NAME \
HOT_TEXT_SECTION_NAME LEGITIMATE_CONSTANT_P ALWAYS_STRIP_DOTDOT \
OUTPUT_ADDR_CONST_EXTRA SMALL_REGISTER_CLASSES ASM_OUTPUT_IDENT \
- ASM_BYTE_OP
+ ASM_BYTE_OP MEMBER_TYPE_FORCES_BLK
/* Target macros only used for code built for the target, that have
moved to libgcc-tm.h or have never been present elsewhere. */
@@ -896,7 +888,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
IDENT_ASM_OP UNALIGNED_SHORT_ASM_OP UNALIGNED_INT_ASM_OP \
UNALIGNED_LONG_ASM_OP UNALIGNED_DOUBLE_INT_ASM_OP \
USE_COMMON_FOR_ONE_ONLY IFCVT_EXTRA_FIELDS IFCVT_INIT_EXTRA_FIELDS \
- CASE_USE_BIT_TESTS
+ CASE_USE_BIT_TESTS FIXUNS_TRUNC_LIKE_FIX_TRUNC \
+ GO_IF_MODE_DEPENDENT_ADDRESS
/* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
@@ -909,7 +902,9 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
LANG_HOOKS_MISSING_ARGUMENT LANG_HOOKS_HASH_TYPES \
TARGET_HANDLE_OFAST TARGET_OPTION_OPTIMIZATION \
TARGET_IRA_COVER_CLASSES TARGET_HELP \
- TARGET_HANDLE_PRAGMA_EXTERN_PREFIX
+ TARGET_HANDLE_PRAGMA_EXTERN_PREFIX \
+ TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN \
+ TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD \
/* Arrays that were deleted in favor of a functional interface. */
#pragma GCC poison built_in_decls implicit_built_in_decls
diff --git a/gcc/target.def b/gcc/target.def
index 051579ffabe..6f1968d6861 100644
--- a/gcc/target.def
+++ b/gcc/target.def
@@ -970,20 +970,6 @@ DEFHOOK
tree, (unsigned code, tree dest_type, tree src_type),
default_builtin_vectorized_conversion)
-/* Target builtin that implements vector widening multiplication.
- builtin_mul_widen_eve computes the element-by-element products
- for the even elements, and builtin_mul_widen_odd computes the
- element-by-element products for the odd elements. */
-DEFHOOK
-(builtin_mul_widen_even,
- "",
- tree, (tree x), NULL)
-
-DEFHOOK
-(builtin_mul_widen_odd,
- "",
- tree, (tree x), NULL)
-
/* Cost of different vector/scalar statements in vectorization cost
model. In case of misaligned vector loads and stores the cost depends
on the data type and misalignment value. */
@@ -1063,6 +1049,60 @@ DEFHOOK
(const_tree mem_vectype, const_tree index_type, int scale),
NULL)
+/* Target function to initialize the cost model for a loop or block. */
+DEFHOOK
+(init_cost,
+ "This hook should initialize target-specific data structures in preparation "
+ "for modeling the costs of vectorizing a loop or basic block. The default "
+ "allocates three unsigned integers for accumulating costs for the prologue, "
+ "body, and epilogue of the loop or basic block. If @var{loop_info} is "
+ "non-NULL, it identifies the loop being vectorized; otherwise a single block "
+ "is being vectorized.",
+ void *,
+ (struct loop *loop_info),
+ default_init_cost)
+
+/* Target function to record N statements of the given kind using the
+ given vector type within the cost model data for the current loop or
+ block. */
+DEFHOOK
+(add_stmt_cost,
+ "This hook should update the target-specific @var{data} in response to "
+ "adding @var{count} copies of the given @var{kind} of statement to a "
+ "loop or basic block. The default adds the builtin vectorizer cost for "
+ "the copies of the statement to the accumulator specified by @var{where}, "
+ "(the prologue, body, or epilogue) and returns the amount added. The "
+ "return value should be viewed as a tentative cost that may later be "
+ "revised.",
+ unsigned,
+ (void *data, int count, enum vect_cost_for_stmt kind,
+ struct _stmt_vec_info *stmt_info, int misalign,
+ enum vect_cost_model_location where),
+ default_add_stmt_cost)
+
+/* Target function to calculate the total cost of the current vectorized
+ loop or block. */
+DEFHOOK
+(finish_cost,
+ "This hook should complete calculations of the cost of vectorizing a loop "
+ "or basic block based on @var{data}, and return the prologue, body, and "
+ "epilogue costs as unsigned integers. The default returns the value of "
+ "the three accumulators.",
+ void,
+ (void *data, unsigned *prologue_cost, unsigned *body_cost,
+ unsigned *epilogue_cost),
+ default_finish_cost)
+
+/* Function to delete target-specific cost modeling data. */
+DEFHOOK
+(destroy_cost_data,
+ "This hook should release @var{data} and any related data structures "
+ "allocated by TARGET_VECTORIZE_INIT_COST. The default releases the "
+ "accumulator.",
+ void,
+ (void *data),
+ default_destroy_cost_data)
+
HOOK_VECTOR_END (vectorize)
#undef HOOK_PREFIX
@@ -1624,6 +1664,16 @@ DEFHOOK
bool, (enum machine_mode mode),
hook_bool_mode_false)
+DEFHOOK
+(vector_alignment,
+ "This hook can be used to define the alignment for a vector of type\n\
+@var{type}, in order to comply with a platform ABI. The default is to\n\
+require natural alignment for vector types. The alignment returned by\n\
+this hook must be a power-of-two multiple of the default alignment of\n\
+the vector element type.",
+ HOST_WIDE_INT, (const_tree type),
+ default_vector_alignment)
+
/* True if we should try to use a scalar mode to represent an array,
overriding the usual MAX_FIXED_MODE limit. */
DEFHOOK
@@ -2282,6 +2332,14 @@ DEFHOOK
tree, (tree type, tree expr),
hook_tree_tree_tree_null)
+/* True if a structure, union or array with MODE containing FIELD should
+ be accessed using BLKmode. */
+DEFHOOK
+(member_type_forces_blk,
+ "",
+ bool, (const_tree field, enum machine_mode mode),
+ default_member_type_forces_blk)
+
/* Return the class for a secondary reload, and fill in extra information. */
DEFHOOK
(secondary_reload,
@@ -2675,6 +2733,15 @@ DEFHOOK
void, (struct hard_reg_set_container *),
NULL)
+/* For targets that have attributes that can affect whether a
+ function's return statements need checking. For instance a 'naked'
+ function attribute. */
+DEFHOOK
+(warn_func_return,
+ "True if a function's return statements should be checked for matching the function's return type. This includes checking for falling off the end of a non-void function. Return false if no such check should be made.",
+ bool, (tree),
+ hook_bool_tree_true)
+
/* Determine the type of unwind info to emit for debugging. */
DEFHOOK
(debug_unwind_info,
diff --git a/gcc/target.h b/gcc/target.h
index 252793f2a0f..3a039d3c501 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -120,6 +120,13 @@ struct loop;
/* This is defined in tree-ssa-alias.h. */
struct ao_ref_s;
+/* This is defined in tree-vectorizer.h. */
+struct _stmt_vec_info;
+
+/* These are defined in tree-vect-stmts.c. */
+extern tree stmt_vectype (struct _stmt_vec_info *);
+extern bool stmt_in_inner_loop_p (struct _stmt_vec_info *);
+
/* Assembler instructions for creating various kinds of integer object. */
struct asm_int_op
@@ -150,6 +157,14 @@ enum vect_cost_for_stmt
vec_construct
};
+/* Separate locations for which the vectorizer cost model should
+ track costs. */
+enum vect_cost_model_location {
+ vect_prologue = 0,
+ vect_body = 1,
+ vect_epilogue = 2
+};
+
/* The target structure. This holds all the backend hooks. */
#define DEFHOOKPOD(NAME, DOC, TYPE, INIT) TYPE NAME;
#define DEFHOOK(NAME, DOC, TYPE, PARAMS, INIT) TYPE (* NAME) PARAMS;
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 5bbec5a110a..36f998ac357 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -945,6 +945,13 @@ tree default_mangle_decl_assembler_name (tree decl ATTRIBUTE_UNUSED,
return id;
}
+/* Default to natural alignment for vector types. */
+HOST_WIDE_INT
+default_vector_alignment (const_tree type)
+{
+ return tree_low_cst (TYPE_SIZE (type), 0);
+}
+
bool
default_builtin_vector_alignment_reachable (const_tree type, bool is_packed)
{
@@ -996,6 +1003,68 @@ default_autovectorize_vector_sizes (void)
return 0;
}
+/* By default, the cost model accumulates three separate costs (prologue,
+ loop body, and epilogue) for a vectorized loop or block. So allocate an
+ array of three unsigned ints, set it to zero, and return its address. */
+
+void *
+default_init_cost (struct loop *loop_info ATTRIBUTE_UNUSED)
+{
+ unsigned *cost = XNEWVEC (unsigned, 3);
+ cost[vect_prologue] = cost[vect_body] = cost[vect_epilogue] = 0;
+ return cost;
+}
+
+/* By default, the cost model looks up the cost of the given statement
+ kind and mode, multiplies it by the occurrence count, accumulates
+ it into the cost specified by WHERE, and returns the cost added. */
+
+unsigned
+default_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
+ struct _stmt_vec_info *stmt_info, int misalign,
+ enum vect_cost_model_location where)
+{
+ unsigned *cost = (unsigned *) data;
+ unsigned retval = 0;
+
+ if (flag_vect_cost_model)
+ {
+ tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
+ int stmt_cost = default_builtin_vectorization_cost (kind, vectype,
+ misalign);
+ /* Statements in an inner loop relative to the loop being
+ vectorized are weighted more heavily. The value here is
+ arbitrary and could potentially be improved with analysis. */
+ if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info))
+ count *= 50; /* FIXME. */
+
+ retval = (unsigned) (count * stmt_cost);
+ cost[where] += retval;
+ }
+
+ return retval;
+}
+
+/* By default, the cost model just returns the accumulated costs. */
+
+void
+default_finish_cost (void *data, unsigned *prologue_cost,
+ unsigned *body_cost, unsigned *epilogue_cost)
+{
+ unsigned *cost = (unsigned *) data;
+ *prologue_cost = cost[vect_prologue];
+ *body_cost = cost[vect_body];
+ *epilogue_cost = cost[vect_epilogue];
+}
+
+/* Free the cost data. */
+
+void
+default_destroy_cost_data (void *data)
+{
+ free (data);
+}
+
/* Determine whether or not a pointer mode is valid. Assume defaults
of ptr_mode or Pmode - can be overridden. */
bool
@@ -1135,19 +1204,7 @@ default_hard_regno_scratch_ok (unsigned int regno ATTRIBUTE_UNUSED)
bool
default_mode_dependent_address_p (const_rtx addr ATTRIBUTE_UNUSED)
{
-#ifdef GO_IF_MODE_DEPENDENT_ADDRESS
-
- GO_IF_MODE_DEPENDENT_ADDRESS (CONST_CAST_RTX (addr), win);
- return false;
- /* Label `win' might (not) be used via GO_IF_MODE_DEPENDENT_ADDRESS. */
- win: ATTRIBUTE_UNUSED_LABEL
- return true;
-
-#else
-
return false;
-
-#endif
}
bool
@@ -1456,4 +1513,12 @@ default_pch_valid_p (const void *data_p, size_t len)
return NULL;
}
+/* Default version of member_type_forces_blk. */
+
+bool
+default_member_type_forces_blk (const_tree, enum machine_mode)
+{
+ return false;
+}
+
#include "gt-targhooks.h"
diff --git a/gcc/targhooks.h b/gcc/targhooks.h
index da80fdf82c2..aa8b3baa3e8 100644
--- a/gcc/targhooks.h
+++ b/gcc/targhooks.h
@@ -83,6 +83,8 @@ extern int default_builtin_vectorization_cost (enum vect_cost_for_stmt, tree, in
extern tree default_builtin_reciprocal (unsigned int, bool, bool);
+extern HOST_WIDE_INT default_vector_alignment (const_tree);
+
extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
extern bool
default_builtin_support_vector_misalignment (enum machine_mode mode,
@@ -90,6 +92,12 @@ default_builtin_support_vector_misalignment (enum machine_mode mode,
int, bool);
extern enum machine_mode default_preferred_simd_mode (enum machine_mode mode);
extern unsigned int default_autovectorize_vector_sizes (void);
+extern void *default_init_cost (struct loop *);
+extern unsigned default_add_stmt_cost (void *, int, enum vect_cost_for_stmt,
+ struct _stmt_vec_info *, int,
+ enum vect_cost_model_location);
+extern void default_finish_cost (void *, unsigned *, unsigned *, unsigned *);
+extern void default_destroy_cost_data (void *);
/* These are here, and not in hooks.[ch], because not all users of
hooks.h include tm.h, and thus we don't have CUMULATIVE_ARGS. */
@@ -181,3 +189,4 @@ extern const char *default_pch_valid_p (const void *, size_t);
extern void default_asm_output_ident_directive (const char*);
+extern bool default_member_type_forces_blk (const_tree, enum machine_mode);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 159b0f63186..0bdc544fe57 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,1768 @@
+2012-08-28 Joey Ye <joey.ye@arm.com>
+
+ * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Add -fno-short-enums.
+
+2012-08-27 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/46254
+ * gcc.target/i386/pr46254.c: New test.
+
+2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/ext_ins.c, gcc.target/mips/octeon-pop-2.c,
+ gcc.target/mips/pr54240.c, gcc.target/mips/stack-1.c,
+ gcc.target/mips/unaligned-1.c: Add NOMIPS16.
+
+2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/20020620-1.c, gcc.target/mips/atomic-memory-2.c,
+ gcc.target/mips/branch-2.c, gcc.target/mips/branch-3.c,
+ gcc.target/mips/clear-cache-1.c, gcc.target/mips/const-anchor-1.c,
+ gcc.target/mips/const-anchor-2.c, gcc.target/mips/dspr2-MULT.c,
+ gcc.target/mips/dspr2-MULTU.c, gcc.target/mips/ext-1.c,
+ gcc.target/mips/ext-2.c, gcc.target/mips/ext-3.c,
+ gcc.target/mips/ext-4.c, gcc.target/mips/ext_ins.c,
+ gcc.target/mips/fpcmp-1.c, gcc.target/mips/fpcmp-2.c,
+ gcc.target/mips/mips16e-extends.c, gcc.target/mips/mips32-dsp.c,
+ gcc.target/mips/mips32-dsp-type.c, gcc.target/mips/mips32r2-mxhc1.c,
+ gcc.target/mips/mips-ps-5.c, gcc.target/mips/mips-ps-7.c,
+ gcc.target/mips/mips-ps-type-2.c, gcc.target/mips/mips-ps-type.c,
+ gcc.target/mips/movcc-1.c, gcc.target/mips/movcc-2.c,
+ gcc.target/mips/movcc-3.c, gcc.target/mips/neg-abs-1.c,
+ gcc.target/mips/neg-abs-2.c, gcc.target/mips/nmadd-1.c,
+ gcc.target/mips/nmadd-2.c, gcc.target/mips/nmadd-3.c,
+ gcc.target/mips/octeon-exts-7.c, gcc.target/mips/octeon-seq-4.c,
+ gcc.target/mips/rsqrt-1.c, gcc.target/mips/rsqrt-2.c,
+ gcc.target/mips/rsqrt-3.c, gcc.target/mips/sb1-1.c,
+ gcc.target/mips/scc-4.c, gcc.target/mips/stack-1.c,
+ gcc.target/mips/unaligned-1.c: Tighten regexps.
+
+2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/mips.exp: Use gcc-dg-runtest rather than dg-runtest.
+ (mips_option_groups): Remove optimization. Add various -f options.
+ (mips-dg-options): Make -funroll-loops imply -funroll-all-loops
+ and -pg imply -fno-omit-frame-pointer.
+ * gcc.target/mips/abi-eabi32-long32.c: Remove optimization flag.
+ * gcc.target/mips/abi-eabi32-long64.c: Likewise.
+ * gcc.target/mips/abi-eabi64-long32.c: Likewise.
+ * gcc.target/mips/abi-eabi64-long64.c: Likewise.
+ * gcc.target/mips/abi-n32-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n32-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-n32-long32.c: Likewise.
+ * gcc.target/mips/abi-n32-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n32-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-n32-long64.c: Likewise.
+ * gcc.target/mips/abi-n64-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n64-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-n64-long32.c: Likewise.
+ * gcc.target/mips/abi-n64-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n64-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-n64-long64.c: Likewise.
+ * gcc.target/mips/abi-o32-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o32-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-o32-long32.c: Likewise.
+ * gcc.target/mips/abi-o32-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o32-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-o32-long64.c: Likewise.
+ * gcc.target/mips/abi-o64-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o64-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-o64-long32.c: Likewise.
+ * gcc.target/mips/abi-o64-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o64-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-o64-long64.c: Likewise.
+ * gcc.target/mips/asm-1.c: Likewise.
+ * gcc.target/mips/branch-1.c: Likewise.
+ * gcc.target/mips/call-3.c: Likewise.
+ * gcc.target/mips/call-saved-3.c: Likewise.
+ * gcc.target/mips/clear-cache-1.c: Likewise.
+ * gcc.target/mips/div-1.c: Likewise.
+ * gcc.target/mips/div-2.c: Likewise.
+ * gcc.target/mips/div-3.c: Likewise.
+ * gcc.target/mips/div-4.c: Likewise.
+ * gcc.target/mips/div-5.c: Likewise.
+ * gcc.target/mips/div-6.c: Likewise.
+ * gcc.target/mips/div-7.c: Likewise.
+ * gcc.target/mips/div-8.c: Likewise.
+ * gcc.target/mips/div-9.c: Likewise.
+ * gcc.target/mips/div-10.c: Likewise.
+ * gcc.target/mips/div-11.c: Likewise.
+ * gcc.target/mips/div-12.c: Likewise.
+ * gcc.target/mips/dsp-ctrl.c: Likewise.
+ * gcc.target/mips/dsp-no-lhx.c: Likewise.
+ * gcc.target/mips/ext-8.c: Likewise.
+ * gcc.target/mips/extend-2.c: Likewise.
+ * gcc.target/mips/fix-r10000-1.c: Likewise.
+ * gcc.target/mips/fix-r10000-2.c: Likewise.
+ * gcc.target/mips/fix-r10000-3.c: Likewise.
+ * gcc.target/mips/fix-r10000-4.c: Likewise.
+ * gcc.target/mips/fix-r10000-5.c: Likewise.
+ * gcc.target/mips/fix-r10000-6.c: Likewise.
+ * gcc.target/mips/fix-r10000-7.c: Likewise.
+ * gcc.target/mips/fix-r10000-8.c: Likewise.
+ * gcc.target/mips/fix-r10000-9.c: Likewise.
+ * gcc.target/mips/fix-r10000-10.c: Likewise.
+ * gcc.target/mips/fix-r10000-11.c: Likewise.
+ * gcc.target/mips/fix-r10000-12.c: Likewise.
+ * gcc.target/mips/fix-r10000-13.c: Likewise.
+ * gcc.target/mips/fix-r10000-14.c: Likewise.
+ * gcc.target/mips/fix-r10000-15.c: Likewise.
+ * gcc.target/mips/fpcmp-1.c: Likewise.
+ * gcc.target/mips/fpcmp-2.c: Likewise.
+ * gcc.target/mips/fpr-moves-7.c: Likewise.
+ * gcc.target/mips/fpr-moves-8.c: Likewise.
+ * gcc.target/mips/int-moves-1.c: Likewise.
+ * gcc.target/mips/int-moves-2.c: Likewise.
+ * gcc.target/mips/long-calls-pg.c: Likewise.
+ * gcc.target/mips/loongson-muldiv-1.c: Likewise.
+ * gcc.target/mips/loongson-muldiv-2.c: Likewise.
+ * gcc.target/mips/loongson-shift-count-truncated-1.c: Likewise.
+ * gcc.target/mips/loongson3a-muldiv-1.c: Likewise.
+ * gcc.target/mips/loongson3a-muldiv-2.c: Likewise.
+ * gcc.target/mips/mips-3d-1.c: Likewise.
+ * gcc.target/mips/mips-3d-2.c: Likewise.
+ * gcc.target/mips/mips-3d-3.c: Likewise.
+ * gcc.target/mips/mips-3d-4.c: Likewise.
+ * gcc.target/mips/mips-3d-5.c: Likewise.
+ * gcc.target/mips/mips-3d-6.c: Likewise.
+ * gcc.target/mips/mips-3d-7.c: Likewise.
+ * gcc.target/mips/mips-3d-8.c: Likewise.
+ * gcc.target/mips/mips-3d-9.c: Likewise.
+ * gcc.target/mips/mips-ps-1.c: Likewise.
+ * gcc.target/mips/mips-ps-2.c: Likewise.
+ * gcc.target/mips/mips-ps-3.c: Likewise.
+ * gcc.target/mips/mips-ps-4.c: Likewise.
+ * gcc.target/mips/mips-ps-6.c: Likewise.
+ * gcc.target/mips/mips32-dspr2.c: Likewise.
+ * gcc.target/mips/mmcount-ra-address-1.c: Likewise.
+ * gcc.target/mips/neg-abs-1.c: Likewise.
+ * gcc.target/mips/neg-abs-2.c: Likewise.
+ * gcc.target/mips/nmadd-3.c: Likewise.
+ * gcc.target/mips/no-smartmips-lwxs.c: Likewise.
+ * gcc.target/mips/no-smartmips-ror-1.c: Likewise.
+ * gcc.target/mips/octeon-pop-1.c: Likewise.
+ * gcc.target/mips/pr26765.c: Likewise.
+ * gcc.target/mips/pr33256.c: Likewise.
+ * gcc.target/mips/pr33635-1.c: Likewise.
+ * gcc.target/mips/pr33755.c: Likewise.
+ * gcc.target/mips/pr35802.c: Likewise.
+ * gcc.target/mips/pr45074.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-1.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-2.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-3.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-4.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-5.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-6.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-7.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-8.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-9.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-11.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-12.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-13.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-14.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-15.c: Likewise.
+ * gcc.target/mips/save-restore-1.c: Likewise.
+ * gcc.target/mips/save-restore-3.c: Likewise.
+ * gcc.target/mips/save-restore-5.c: Likewise.
+ * gcc.target/mips/smartmips-ror-1.c: Likewise.
+ * gcc.target/mips/smartmips-ror-2.c: Likewise.
+ * gcc.target/mips/smartmips-ror-3.c: Likewise.
+ * gcc.target/mips/smartmips-ror-4.c: Likewise.
+ * gcc.target/mips/stack-1.c: Likewise.
+
+ * gcc.target/mips/clear-cache-2.c: Remove optimization flag.
+ Tighten regexps.
+
+ * gcc.target/mips/branch-8.c: Arrange for the delay slot of the
+ branch under test to be filled with preceding rather than
+ following instructions.
+ * gcc.target/mips/branch-10.c: Likewise.
+ * gcc.target/mips/branch-11.c: Likewise.
+ * gcc.target/mips/branch-12.c: Likewise.
+ * gcc.target/mips/branch-13.c: Likewise.
+ * gcc.target/mips/branch-9.c: Likewise. Allow the frame pointer
+ to be eliminated. Tighten $28 scan-assembler-not test.
+
+ * gcc.target/mips/call-2.c: Remove optimization flag. Move second
+ function to...
+ * gcc.target/mips/call-4.c: ...this new test.
+
+ * gcc.target/mips/code-readable-2.c: Rework to make a jump table
+ more likely.
+ * gcc.target/mips/code-readable-3.c: Likewise.
+ * gcc.target/mips/code-readable-1.c: Likewise. Remove optimization
+ flag but skip for -O0.
+ * gcc.target/mips/code-readable-4.c: Likewise.
+
+ * gcc.target/mips/mips32-dsp-run.c: Prevent compile-time reduction
+ of operations under test.
+ * gcc.target/mips/mips32-dsp.c: Likewise. Remove optimization flag.
+
+ * gcc.target/mips/near-far-3.c: Remove optimization flag.
+ Don't require sibling-call optimization.
+ * gcc.target/mips/near-far-4.c: Likewise.
+
+ * gcc.target/mips/no-dsp-1.c: Require -ffat-lto-objects.
+ Make sure that the register variable is used.
+ * gcc.target/mips/soft-float-1.c: Likewise.
+
+ * gcc.target/mips/sdata-1.c: Make static data volatile.
+ * gcc.target/mips/sdata-2.c: Likewise.
+ * gcc.target/mips/sdata-3.c: Likewise.
+ * gcc.target/mips/sdata-4.c: Likewise.
+
+ * gcc.target/mips/20020620-1.c: Remove optimization flag but
+ skip for -O0.
+ * gcc.target/mips/atomic-memory-2.c: Likewise.
+ * gcc.target/mips/branch-cost-1.c: Likewise.
+ * gcc.target/mips/branch-cost-2.c: Likewise.
+ * gcc.target/mips/cache-1.c: Likewise.
+ * gcc.target/mips/call-1.c: Likewise.
+ * gcc.target/mips/call-saved-2.c: Likewise.
+ * gcc.target/mips/const-anchor-1.c: Likewise.
+ * gcc.target/mips/const-anchor-2.c: Likewise.
+ * gcc.target/mips/dse-1.c: Likewise.
+ * gcc.target/mips/dsp-lhx.c: Likewise.
+ * gcc.target/mips/dspr2-MULTU.c: Likewise.
+ * gcc.target/mips/ext-1.c: Likewise.
+ * gcc.target/mips/ext-2.c: Likewise.
+ * gcc.target/mips/ext-3.c: Likewise.
+ * gcc.target/mips/ext-4.c: Likewise.
+ * gcc.target/mips/ext-5.c: Likewise.
+ * gcc.target/mips/ext-6.c: Likewise.
+ * gcc.target/mips/ext-7.c: Likewise.
+ * gcc.target/mips/extend-1.c: Likewise.
+ * gcc.target/mips/fix-r4000-1.c: Likewise.
+ * gcc.target/mips/fix-r4000-3.c: Likewise.
+ * gcc.target/mips/fix-r4000-5.c: Likewise.
+ * gcc.target/mips/fix-r4000-6.c: Likewise.
+ * gcc.target/mips/fix-r4000-8.c: Likewise.
+ * gcc.target/mips/fix-r4000-10.c: Likewise.
+ * gcc.target/mips/fixed-scalar-type.c: Likewise.
+ * gcc.target/mips/fixed-vector-type.c: Likewise.
+ * gcc.target/mips/fpr-moves-1.c: Likewise.
+ * gcc.target/mips/fpr-moves-2.c: Likewise.
+ * gcc.target/mips/fpr-moves-3.c: Likewise.
+ * gcc.target/mips/fpr-moves-4.c: Likewise.
+ * gcc.target/mips/fpr-moves-5.c: Likewise.
+ * gcc.target/mips/fpr-moves-6.c: Likewise.
+ * gcc.target/mips/ins-1.c: Likewise.
+ * gcc.target/mips/ins-2.c: Likewise.
+ * gcc.target/mips/interrupt_handler-2.c: Likewise.
+ * gcc.target/mips/interrupt_handler-3.c: Likewise.
+ * gcc.target/mips/lazy-binding-1.c: Likewise.
+ * gcc.target/mips/madd-3.c: Likewise.
+ * gcc.target/mips/madd-5.c: Likewise.
+ * gcc.target/mips/madd-6.c: Likewise.
+ * gcc.target/mips/madd-8.c: Likewise.
+ * gcc.target/mips/madd-9.c: Likewise.
+ * gcc.target/mips/memcpy-1.c: Likewise.
+ * gcc.target/mips/mips-ps-type.c: Likewise.
+ * gcc.target/mips/mips-ps-type-2.c: Likewise.
+ * gcc.target/mips/mips-sched-madd.c: Likewise.
+ * gcc.target/mips/mips16e-extends.c: Likewise.
+ * gcc.target/mips/mips32r2-mxhc1.c: Likewise.
+ * gcc.target/mips/mips64-dsp-ldx.c: Likewise.
+ * gcc.target/mips/movcc-1.c: Likewise.
+ * gcc.target/mips/movcc-2.c: Likewise.
+ * gcc.target/mips/movcc-3.c: Likewise.
+ * gcc.target/mips/msub-5.c: Likewise.
+ * gcc.target/mips/msub-6.c: Likewise.
+ * gcc.target/mips/msub-8.c: Likewise.
+ * gcc.target/mips/mult-2.c: Likewise.
+ * gcc.target/mips/mult-3.c: Likewise.
+ * gcc.target/mips/mult-5.c: Likewise.
+ * gcc.target/mips/mult-6.c: Likewise.
+ * gcc.target/mips/mult-7.c: Likewise.
+ * gcc.target/mips/mult-12.c: Likewise.
+ * gcc.target/mips/mult-13.c: Likewise.
+ * gcc.target/mips/mult-14.c: Likewise.
+ * gcc.target/mips/mult-15.c: Likewise.
+ * gcc.target/mips/mult-17.c: Likewise.
+ * gcc.target/mips/mult-18.c: Likewise.
+ * gcc.target/mips/mult-19.c: Likewise.
+ * gcc.target/mips/nmadd-1.c: Likewise.
+ * gcc.target/mips/nmadd-2.c: Likewise.
+ * gcc.target/mips/octeon-baddu-1.c: Likewise.
+ * gcc.target/mips/octeon-cins-1.c: Likewise.
+ * gcc.target/mips/octeon-cins-2.c: Likewise.
+ * gcc.target/mips/octeon-dmul-3.c: Likewise.
+ * gcc.target/mips/octeon-exts-2.c: Likewise.
+ * gcc.target/mips/octeon-exts-3.c: Likewise.
+ * gcc.target/mips/octeon-exts-4.c: Likewise.
+ * gcc.target/mips/octeon-exts-5.c: Likewise.
+ * gcc.target/mips/octeon-exts-6.c: Likewise.
+ * gcc.target/mips/octeon-exts-7.c: Likewise.
+ * gcc.target/mips/octeon-pop-2.c: Likewise.
+ * gcc.target/mips/octeon-seq-3.c: Likewise.
+ * gcc.target/mips/octeon-seq-4.c: Likewise.
+ * gcc.target/mips/octeon2-lx-1.c: Likewise.
+ * gcc.target/mips/octeon2-lx-2.c: Likewise.
+ * gcc.target/mips/octeon2-lx-3.c: Likewise.
+ * gcc.target/mips/pr54240.c: Likewise.
+ * gcc.target/mips/rsqrt-1.c: Likewise.
+ * gcc.target/mips/rsqrt-2.c: Likewise.
+ * gcc.target/mips/rsqrt-3.c: Likewise.
+ * gcc.target/mips/rsqrt-4.c: Likewise.
+ * gcc.target/mips/save-restore-2.c: Likewise.
+ * gcc.target/mips/save-restore-4.c: Likewise.
+ * gcc.target/mips/sb1-1.c: Likewise.
+ * gcc.target/mips/scc-1.c: Likewise.
+ * gcc.target/mips/scc-2.c: Likewise.
+ * gcc.target/mips/scc-3.c: Likewise.
+ * gcc.target/mips/scc-4.c: Likewise.
+ * gcc.target/mips/smartmips-lwxs.c: Likewise.
+ * gcc.target/mips/truncate-1.c: Likewise.
+ * gcc.target/mips/truncate-2.c: Likewise.
+ * gcc.target/mips/truncate-3.c: Likewise.
+ * gcc.target/mips/truncate-4.c: Likewise.
+ * gcc.target/mips/truncate-5.c: Likewise.
+ * gcc.target/mips/truncate-6.c: Likewise.
+ * gcc.target/mips/unaligned-1.c: Likewise.
+
+ * gcc.target/mips/dpaq_sa_l_w.c: Remove optimization flag but
+ skip for -O0. Require -fexpensive-optimizations.
+ * gcc.target/mips/dpsq_sa_l_w.c: Likewise.
+ * gcc.target/mips/dspr2-MULT.c: Likewise.
+ * gcc.target/mips/fix-r4000-2.c: Likewise.
+ * gcc.target/mips/fix-r4000-4.c: Likewise.
+ * gcc.target/mips/fix-r4000-7.c: Likewise.
+ * gcc.target/mips/fix-r4000-9.c: Likewise.
+ * gcc.target/mips/madd-1.c: Likewise.
+ * gcc.target/mips/madd-2.c: Likewise.
+ * gcc.target/mips/madd-4.c: Likewise.
+ * gcc.target/mips/maddu-1.c: Likewise.
+ * gcc.target/mips/maddu-2.c: Likewise.
+ * gcc.target/mips/maddu-3.c: Likewise.
+ * gcc.target/mips/maddu-4.c: Likewise.
+ * gcc.target/mips/msub-1.c: Likewise.
+ * gcc.target/mips/msub-2.c: Likewise.
+ * gcc.target/mips/msub-3.c: Likewise.
+ * gcc.target/mips/msub-4.c: Likewise.
+ * gcc.target/mips/msubu-1.c: Likewise.
+ * gcc.target/mips/msubu-2.c: Likewise.
+ * gcc.target/mips/msubu-3.c: Likewise.
+ * gcc.target/mips/msubu-4.c: Likewise.
+ * gcc.target/mips/mult-1.c: Likewise.
+ * gcc.target/mips/mult-4.c: Likewise.
+ * gcc.target/mips/mult-8.c: Likewise.
+ * gcc.target/mips/mult-9.c: Likewise.
+ * gcc.target/mips/mult-10.c: Likewise.
+ * gcc.target/mips/mult-11.c: Likewise.
+ * gcc.target/mips/mult-16.c: Likewise.
+
+ * gcc.target/mips/fix-r4000-11.c: Remove optimization flag but
+ skip for -O0 and -Os.
+ * gcc.target/mips/fix-r4000-12.c: Likewise.
+ * gcc.target/mips/madd-7.c: Likewise.
+ * gcc.target/mips/mips-ps-5.c: Likewise.
+ * gcc.target/mips/mips-ps-7.c: Likewise.
+ * gcc.target/mips/msub-7.c: Likewise.
+
+ * gcc.target/mips/mmcount-ra-address-2.c: Remove optimization flag but
+ skip for -O0. Require -mno-abicalls.
+ * gcc.target/mips/mmcount-ra-address-3.c: Likewise.
+
+ * gcc.target/mips/octeon-bbit-1.c: Remove optimization flag but
+ skip for -O0. Require a total number of BBIT instructions and
+ at least one of each kind.
+
+ * gcc.target/mips/octeon-bbit-2.c: Remove optimization flag but
+ skip for -O0. Require -fno-unroll-loops.
+
+ * gcc.target/mips/octeon-bbit-3.c: Remove optimization flag but
+ skip for -O0. Allow BLTZ as well as BGEZ.
+
+ * gcc.target/mips/octeon-dmul-2.c: Skip for -Os.
+
+ * gcc.target/mips/octeon-pipe-1.c: Remove optimization flag but
+ skip for -O0. Require -fschedule-insns2.
+ * gcc.target/mips/octeon2-pipe-1.c: Likewise.
+
+ * gcc.target/mips/r10k-cache-barrier-10.c: Remove optimization flag
+ but skip for -O0. Make a branch-likely more likely.
+
+ * gcc.target/mips/timode-2.c: Split each test into its own function.
+ * gcc.target/mips/timode-1.c: Likewise. Skip for -Os.
+
+ * gcc.target/mips/vr-mult-1.c: Remove optimization flag but
+ skip for -O0. Require -fpeephole2.
+ * gcc.target/mips/vr-mult-2.c: Likewise.
+
+2012-05-25 Dodji Seketeli <dodji@redhat.com>
+
+ PR preprocessor/53469
+ * gcc.dg/cpp/_Pragma7.c: New test case.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54370
+ * gfortran.dg/do_5.f90: New.
+
+2012-08-27 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/bessel_5.f90: Remove -Wno-compare-reals
+ from dg-options as -Wall no longer implies it.
+
+2012-08-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lib/scanasm.exp (scan-assembler-times_required_options): New proc.
+
+2012-08-25 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/fntmpdefarg3.C: New.
+
+2012-08-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51421
+ * g++.dg/cpp0x/auto34.C: New.
+
+2012-08-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/54363
+ * gcc.dg/pr54363.c: New test.
+
+ PR c/54355
+ * gcc.dg/pr54355.c: New test.
+
+2012-08-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR debug/52857
+ * gcc.target/i386/pr52857-1.c: New.
+ * gcc.target/i386/pr52857-2.c: Likewise.
+
+2012-08-23 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/code-readable-4.c: New test.
+
+2012-08-23 Julian Brown <julian@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * gcc.target/mips/code-readable-1.c: Add -O to options.
+
+2012-08-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/20420
+ * g++.dg/lookup/using53.C: New.
+
+2012-08-23 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.dg/fixed-point/convert.c: Split into manageable parts:
+ * gcc.dg/fixed-point/convert-1.c: New.
+ * gcc.dg/fixed-point/convert-2.c: New.
+ * gcc.dg/fixed-point/convert-3.c: New.
+ * gcc.dg/fixed-point/convert-4.c: New.
+ * gcc.dg/fixed-point/convert-float-1.c: New.
+ * gcc.dg/fixed-point/convert-float-2.c: New.
+ * gcc.dg/fixed-point/convert-float-3.c: New.
+ * gcc.dg/fixed-point/convert-float-4.c: New.
+ * gcc.dg/fixed-point/convert-accum-neg.c: New.
+ * gcc.dg/fixed-point/convert-sat.c: New.
+ * gcc.dg/fixed-point/convert.h: New.
+
+2012-08-22 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * gcc.target/sh/pr54089-2.c: New.
+
+2012-08-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.target/i386/long-double-64-1.c: New file.
+ * gcc.target/i386/long-double-64-2.c: Likewise.
+ * gcc.target/i386/long-double-64-3.c: Likewise.
+ * gcc.target/i386/long-double-64-4.c: Likewise.
+ * gcc.target/i386/long-double-80-1.c: Likewise.
+ * gcc.target/i386/long-double-80-2.c: Likewise.
+ * gcc.target/i386/long-double-80-3.c: Likewise.
+ * gcc.target/i386/long-double-80-4.c: Likewise.
+ * gcc.target/i386/long-double-80-5.c: Likewise.
+ * gcc.target/i386/long-double-80-6.c: Likewise.
+ * gcc.target/i386/long-double-80-7.c: Likewise.
+
+2012-08-22 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/54317
+ * gcc.dg/tree-ssa/vrp79.c: New testcase.
+
+2012-08-21 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * gcc.target/sh/pr39423-2.c: New.
+
+2012-08-21 Marc Glisse <marc.glisse@inria.fr>
+
+ * gcc.dg/tree-ssa/forwprop-19.c: New testcase.
+ * gcc.dg/fold-perm.c: Likewise.
+
+2012-08-20 Jan Hubicka <jh@suse.cz>
+
+ PR fortran/48636
+ * gcc.dg/ipa/inlinehint-1.c: New.
+
+2012-08-20 Florian Weimer <fweimer@redhat.com>
+
+ PR c++/19351
+ * g++.dg/init/new38.C: New test.
+ * g++.dg/init/new39.C: New test.
+
+2012-08-20 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54089
+ * gcc.target/sh/pr54089-1.c: New.
+
+2012-08-20 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * gcc.target/sh/pr51244-11.c: New.
+
+2012-08-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54301
+ * gfortran.dg/warn_target_lifetime_2.f90: New.
+
+2012-08-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/10416
+ * g++.dg/warn/Wunused-var-17.C: New.
+
+2012-08-20 Patrick Marlier <patrick.marlier@gmail.com>
+
+ PR middle-end/53992
+ * gcc.dg/gomp/pr53992.c: New test.
+
+2012-08-20 Richard Earnshaw <rearnsha@arm.com>
+
+ PR tree-ssa/54295
+ * gcc.c-torture/execute/20120817-1.c: New test.
+
+2012-08-20 Richard Earnshaw <rearnsha@arm.com>
+
+ * gcc.target/arm/thumb-16bit-ops.c (f): This test uses a 16-bit
+ add instruction.
+ (f2): New test that really does need adds.
+
+2012-08-20 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54327
+ * gcc.dg/torture/pr54327.c: New testcase.
+
+2012-08-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/54321
+ * gcc.c-torture/compile/pr54321.c: New test.
+
+2012-08-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54301
+ * gfortran.dg/warn_target_lifetime_1.f90: New.
+
+2012-08-19 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/54298
+ * gfortran.dg/real_compare_1.f90: New test case.
+ * gfortran.dg/bessel_5.f90: Add -Wno-compare-reals to options.
+
+2012-08-18 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/ipa/iinline-1.c: Update testcase to test inline hints.
+
+2012-08-18 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/39290
+ * gfortran.dg/interface_37.f90: New test.
+
+2012-08-17 H.J. Lu <hongjiu.lu@intel.com>
+ Gary Funck <gary@intrepid.com>
+
+ PR target/20020
+ * gcc.target/i386/pr20020-1.c: New test.
+ * gcc.target/i386/pr20020-2.c: Likewise.
+ * gcc.target/i386/pr20020-3.c: Likewise.
+
+2012-08-17 Marc Glisse <marc.glisse@inria.fr>
+
+ * gcc.target/i386/perm-concat.c: New test.
+
+2012-08-17 Julian Brown <julian@codesourcery.com>
+
+ * gcc.target/arm/div64-unwinding.c: New test.
+
+2012-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/torture/Wsizeof-pointer-memaccess1.c: New test.
+
+2012-08-16 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54236
+ * gcc.target/sh/pr54236-1.c: New.
+
+2012-08-16 Hans-Peter Nilsson <hp@axis.com>
+
+ * lib/target-supports.exp (check_effective_target_sync_int_long)
+ (check_effective_target_sync_char_short): Enable for crisv32-*
+ and cris-*.
+
+ PR middle-end/54261
+ * gcc.dg/torture/pr54261-1.c: New test.
+
+2012-08-15 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54243
+ PR fortran/54244
+ * gfortran.dg/typebound_call_24.f03: New.
+
+2012-08-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/54245
+ * gcc.dg/tree-ssa/pr54245.c: New test.
+
+2012-08-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/54240
+ * gcc.target/powerpc/pr54240.c: New test.
+ * gcc.target/mips/pr54240.c: Likewise.
+
+2012-08-14 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/52933
+ * gcc.target/sh/pr52933-1.c: New.
+ * gcc.target/sh/pr52933-2.c: New.
+
+2012-08-14 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/50751
+ * gcc.target/sh/pr50751-8.c: New.
+
+2012-08-14 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/47586
+ * gfortran.dg/typebound_proc_20.f90: Enable runtime test.
+ * gfortran.dg/typebound_proc_27.f03: New test.
+
+2012-08-14 Sterling Augustine <saugustine@google.com>
+
+ * g++.dg/debug/dwarf2/pubnames-2.C: Adjust.
+
+2012-08-14 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/40881
+ * gfortran.dg/data_constraints_3.f90: New.
+ * gfortran.dg/data_constraints_1.f90: Add dg-options ""
+ to disable -pedantic compilation.
+ * gfortran.dg/pr37243.f: Ditto.
+ * gfortran.dg/g77/19990826-3.f: Ditto.
+ * gfortran.dg/g77/20020307-1.f : Ditto.
+ * gfortran.dg/g77/980310-3.f: Ditto.
+
+2012-08-14 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54234
+ * gfortran.dg/warn_conversion_4.f90: New.
+
+2012-08-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/53411
+ PR rtl-optimization/53495
+ * gcc.c-torture/compile/pr53411.c: New test.
+ * gcc.c-torture/compile/pr53495.c: New test.
+
+2012-08-13 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-prof/update-loopch.c: Adjust.
+
+2012-08-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54200
+ * gcc.dg/guality/pr54200.c: New testcase.
+ * gcc.dg/tree-ssa/slsr-8.c: Adjust.
+
+2012-08-12 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * gcc.target/sh/prefetch.c: Add -m3* to inclusion list.
+
+2012-08-12 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * gcc.target/sh/pr51244-7.c: New.
+ * gcc.target/sh/pr51244-8.c: New.
+ * gcc.target/sh/pr51244-9.c: New.
+ * gcc.target/sh/pr51244-10.c: New.
+
+2012-08-12 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * gcc.target/sh/pr50749-sf-postinc-1.c: Skip for -m3. Don't skip for
+ -m2e or -m2a.
+ * gcc.target/sh/pr50749-sf-postinc-3.c: Likewise.
+ * gcc.target/sh/pr53511-1.c: Likewise.
+ * gcc.target/sh/pr50749-sf-predec-1.c: Likewise.
+ * gcc.target/sh/pr50749-sf-predec-3.c: Likewise.
+ * gcc.target/sh/pr53512-1.c: Skip for -m3*.
+ * gcc.target/sh/pr53512-3.c: Likewise.
+ * gcc.target/sh/pr21255-3.c: Skip for single precision FPU targets.
+
+2012-08-12 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * gcc.c-torture/compile/pr39423-1.c: New.
+ * gcc.c-torture/compile/pr39423-2.c: New.
+
+2012-08-12 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54221
+ * vect/vect-gems.f90: Don't mark module vars as PRIVATE as
+ they appear uninitialized on the RHS.
+ * gfortran.dg/public_private_module_6.f90: New.
+
+2012-08-11 Martin Jambor <mjambor@suse.cz>
+
+ PR fortran/48636
+ * gfortran.dg/pr48636.f90: New test.
+
+2012-08-10 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/torture/vector-shuffle1.c (f): Pass vectors indirectly
+ to avoid warnings.
+ (main): Adjust caller.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/matrix/*.c: Adjust and move ...
+ * gcc.dg/torture/: ... here.
+ * gcc.dg/matrix: Remove directory.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/54219
+ * gcc.dg/torture/vector-shuffle1.c: New testcase.
+
+2012-08-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR middle-end/54211
+ * gcc.dg/tree-ssa/pr54211.c: New test.
+
+2012-08-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * lib/target-supports.exp (check_effective_target_long_neq_int): New.
+ * gcc.dg/tree-ssa/slsr-30.c: Check for long_neq_int effective target.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54109
+ * gcc.dg/torture/pr54109.c: New testcase.
+ * gcc.dg/tree-ssa/forwprop-1.c: Adjust.
+ * gcc.dg/tree-ssa/forwprop-2.c: Likewise.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54027
+ * gcc.dg/torture/pr54027.c: New testcase.
+
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ * g++.dg/plugin/selfassign.c: Adjust.
+ * gcc.dg/plugin/selfassign.c: Likewise.
+ * gcc.dg/strlenopt-11.c: Likewise.
+ * gcc.dg/strlenopt-13.c: Likewise.
+ * gcc.dg/no-strict-overflow-4.c: Likewise.
+ * gcc.dg/strict-overflow-4.c: Likewise.
+ * gcc.dg/tree-ssa/alias-11.c: Likewise.
+ * gcc.dg/tree-ssa/alias-6.c: Likewise.
+ * gcc.dg/tree-ssa/asm-3.c: Likewise.
+ * gcc.dg/tree-ssa/pr18908.c: Likewise.
+ * gcc.dg/tree-ssa/pr19431.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-21.c: Likewise.
+ * gcc.dg/tree-ssa/phi-opt-10.c: Likewise.
+ * gcc.dg/tree-ssa/phi-opt-7.c: Likewise.
+ * gcc.dg/tree-ssa/slsr-27.c: Likewise.
+ * gcc.dg/tree-ssa/slsr-28.c: Likewise.
+ * gcc.dg/tree-ssa/slsr-29.c: Likewise.
+ * gcc.dg/pr46309.c: Likewise.
+ * gcc.dg/tree-ssa/loop-5.c: Likewise.
+
+2012-08-09 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.c-torture/compile/20120727-1.c (dg-options): Add -mfpmath=387
+ for x86 targets.
+ * gcc.c-torture/compile/20120727-2.c: New test.
+
+2012-08-09 Martin Jambor <mjambor@suse.cz>
+
+ * gcc.dg/ipa/iinline-4.c: New test.
+ * gcc.dg/ipa/iinline-5.c: Likewise.
+ * gcc.dg/ipa/iinline-6.c: Likewise.
+ * gcc.dg/ipa/iinline-7.c: Likewise.
+ * gcc.dg/lto/20120723_0.c: Likewise.
+ * gcc.dg/lto/20120723_1.c: Likewise.
+
+2012-08-09 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/39423
+ * gcc.target/sh/pr39423-1.c: New.
+
+2012-08-09 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * gcc.target/sh/pr51244-5: New.
+ * gcc.target/sh/pr51244-6: New.
+
+2012-08-09 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * gcc.target/i386/adx-addxcarry32-3.c: New.
+ * gcc.target/i386/adx-addxcarry64-3.c: New.
+
+2012-08-09 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/53701
+ * gcc.dg/pr53701.c: New test.
+
+2012-08-09 Bernd Schmidt <bernds@codesourcery.com>
+
+ * gcc.c-torture/compile/20120727-1.c: New test.
+
+2012-08-09 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54199
+ * gfortran.dg/intrinsic_shadow_4.f90: New.
+
+2012-08-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.dg/tree-ssa/slsr-30.c: Require non-ilp32. Remove dg-skip-if.
+
+2012-08-08 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.c-torture/execute/20120808-1.c: New test.
+
+2012-08-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR rtl-optimization/54157
+ * gcc.target/i386/pr54157.c: New file.
+
+2012-08-08 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * gcc.target/i386/adx-addcarryx32-1.c: New.
+ * gcc.target/i386/adx-addcarryx32-2.c: New.
+ * gcc.target/i386/adx-addcarryx64-1.c: New.
+ * gcc.target/i386/adx-addcarryx64-2.c: New.
+ * gcc.target/i386/adx-check.h: New.
+ * gcc.target/i386/i386.exp (check_effective_target_adx): New.
+ * gcc.target/i386/sse-12.c: Add -madx.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-14.c: Ditto.
+ * gcc.target/i386/sse-22.c: Ditto.
+ * gcc.target/i386/sse-23.c: Ditto.
+ * g++.dg/other/i386-2.C: Ditto.
+ * g++.dg/other/i386-3.C: Ditto.
+
+2012-08-07 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gcc.dg/tree-ssa/slsr-5.c: New.
+ * gcc.dg/tree-ssa/slsr-6.c: New.
+ * gcc.dg/tree-ssa/slsr-7.c: New.
+ * gcc.dg/tree-ssa/slsr-8.c: New.
+ * gcc.dg/tree-ssa/slsr-9.c: New.
+ * gcc.dg/tree-ssa/slsr-10.c: New.
+ * gcc.dg/tree-ssa/slsr-11.c: New.
+ * gcc.dg/tree-ssa/slsr-12.c: New.
+ * gcc.dg/tree-ssa/slsr-13.c: New.
+ * gcc.dg/tree-ssa/slsr-14.c: New.
+ * gcc.dg/tree-ssa/slsr-15.c: New.
+ * gcc.dg/tree-ssa/slsr-16.c: New.
+ * gcc.dg/tree-ssa/slsr-17.c: New.
+ * gcc.dg/tree-ssa/slsr-18.c: New.
+ * gcc.dg/tree-ssa/slsr-19.c: New.
+ * gcc.dg/tree-ssa/slsr-20.c: New.
+ * gcc.dg/tree-ssa/slsr-21.c: New.
+ * gcc.dg/tree-ssa/slsr-22.c: New.
+ * gcc.dg/tree-ssa/slsr-23.c: New.
+ * gcc.dg/tree-ssa/slsr-24.c: New.
+ * gcc.dg/tree-ssa/slsr-25.c: New.
+ * gcc.dg/tree-ssa/slsr-26.c: New.
+ * gcc.dg/tree-ssa/slsr-30.c: New.
+ * gcc.dg/tree-ssa/slsr-31.c: New.
+
+2012-08-07 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gcc.dg/tree-prof/update-loopch.c: Ask for dump with blocks info.
+ * gcc.dg/tree-ssa/attr-hotcold-2.c: Likewise.
+ * gcc.dg/tree-ssa/pr18133-1.c: Likewise.
+
+2012-08-06 Cary Coutant <ccoutant@google.com>
+
+ * g++.dg/debug/dwarf2/non-virtual-thunk.C: New test case.
+
+2012-08-06 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/35831
+ * gfortran.dg/dummy_procedure_5.f90: Modified.
+ * gfortran.dg/dummy_procedure_8.f90: New.
+ * gfortran.dg/interface_26.f90: Modified.
+ * gfortran.dg/proc_ptr_11.f90: Modified.
+ * gfortran.dg/proc_ptr_15.f90: Modified.
+ * gfortran.dg/proc_ptr_result_5.f90: Modified.
+ * gfortran.dg/typebound_override_1.f90: Modified.
+ * gfortran.dg/typebound_proc_6.f03: Modified.
+
+2012-08-06 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/51938
+ PR tree-optimization/52005
+ * gcc.dg/tree-ssa/ssa-ifcombine-8.c: New testcase.
+ * gcc.dg/tree-ssa/ssa-ifcombine-9.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-ifcombine-10.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-ifcombine-11.c: Likewise.
+
+2012-08-06 Dodji Seketeli <dodji@redhat.com>
+
+ Avoid crashing on erroneous static_assert usage
+ * g++.dg/cpp0x/static_assert8.C: New test.
+
+2012-08-06 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae38.C: New.
+
+2012-08-06 Marc Glisse <marc.glisse@inria.fr>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/54165
+ * g++.dg/conversion/void2.C: New.
+
+2012-08-06 Tom de Vries <tom@codesourcery.com>
+
+ * gcc.dg/tree-ssa/vrp78.c: New test.
+
+2012-08-04 Sandra Loosemore <sandra@codesourcery.com>
+ Richard Sandiford <rdsandiford@googlemail.com>
+
+ * g++.dg/opt/enum2.C: Require fpic target.
+ * g++.dg/lto/20090303_0.C: Likewise.
+
+2012-08-04 Sandra Loosemore <sandra@codesourcery.com>
+ Catherine Moore <clm@codesourcery.com>
+
+ * gcc.target/mips/clear-cache-1.c: Test for alternate cache
+ flush function names too.
+ * gcc.target/mips/clear-cache-1.c: Likewise.
+
+2012-08-03 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ PR target/54156
+ * testsuite/gcc.dg/vect/pr53773.c: Change to use optimized dump.
+
+2012-08-03 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54166
+ * gfortran.dg/array_5.f90: New test.
+
+2012-08-03 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/30318
+ * gcc.dg/tree-ssa/vrp77.c: New testcase.
+
+2012-08-03 Marc Glisse <marc.glisse@inria.fr>
+
+ * g++.dg/ext/vector17.C: New testcase.
+
+2012-08-02 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR target/51931
+ * gcc.c-torture/compile/20001226-1.c: Remove nomips16 attribute.
+ * g++.dg/opt/longbranch1.C: Likewise.
+
+2012-08-02 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/53805
+ * gcc.dg/fold-notunord.c: New testcase.
+
+2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/48820
+ * gfortran.dg/assumed_rank_bounds_1.f90: New test.
+ * gfortran.dg/assumed_rank_bounds_2.f90: New test.
+
+2012-08-02 Jason Merrill <jason@redhat.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51213 (again)
+ * g++.dg/cpp0x/sfinae37.C: Extend.
+
+2012-08-02 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50672
+ * g++.dg/torture/pr50672.C: New testcase.
+
+2012-08-02 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54147
+ * gfortran.dg/abstract_type_6.f03: Modified.
+ * gfortran.dg/proc_ptr_comp_3.f90: Modified.
+ * gfortran.dg/proc_ptr_comp_35.f90: New.
+ * gfortran.dg/typebound_proc_9.f03: Modified.
+ * gfortran.dg/typebound_proc_26.f90: New.
+
+2012-08-02 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/torture/pta-callused-1.c: Adjust.
+ * gcc.dg/torture/pta-ptrarith-3.c: Likewise.
+ * gcc.dg/torture/ssa-pta-fn-1.c: Likewise.
+ * gcc.dg/tree-ssa/alias-19.c: Likewise.
+ * gcc.dg/tree-ssa/pta-escape-1.c: Likewise.
+ * gcc.dg/tree-ssa/pta-escape-2.c: Likewise.
+ * gcc.dg/tree-ssa/pta-escape-3.c: Likewise.
+ * gcc.dg/tree-ssa/pta-ptrarith-1.c: Likewise.
+ * gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise.
+
+2012-08-01 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/54033
+ * gfortran.dg/include_6.f90: New test case.
+ * gfortran.dg/include_7.f90: New test case.
+ * gfortran.dg/include_3.f90: Add dg-warning for missing directory.
+
+2012-08-01 Tom de Vries <tom@codesourcery.com>
+
+ * gcc.dg/tree-ssa/vrp76.c: New test.
+
+2012-08-01 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ PR tree-optimization/46556
+ * testsuite/gcc.dg/tree-ssa/slsr-27.c: New.
+ * testsuite/gcc.dg/tree-ssa/slsr-28.c: New.
+ * testsuite/gcc.dg/tree-ssa/slsr-29.c: New.
+
+2012-07-31 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42418
+ * gfortran.dg/proc_decl_29.f90: New.
+
+2012-07-31 Dehao Chen <dehao@google.com>
+
+ * gcc.dg/predict-7.c: New test.
+
+2012-07-31 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54134
+ * gfortran.dg/typebound_override_3.f90: New.
+
+2012-07-31 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ PR tree-optimization/53773
+ * testsuite/gcc.dg/vect/pr53773.c: New test.
+
+2012-07-31 Nick Clifton <nickc@redhat.com>
+
+ * gcc.dg/stack-usage-1.c (SIZE): Define for FRV,
+ and for XStormy16.
+
+2012-07-31 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/c_funloc_tests_6.f90: New.
+ * gfortran.dg/c_funloc_tests_7.f90: New.
+ * gfortran.dg/c_funloc_tests_5.f03: Compile with -std=f2003.
+
+2012-07-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/53624
+ * g++.dg/cpp0x/temp_default5.C: New.
+
+2012-07-30 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/51081
+ * gfortran.dg/proc_ptr_37.f90: New.
+
+2012-07-30 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * lib/target-supports.exp
+ (check_effective_target_vect_natural_alignment): New function.
+ * gcc.dg/align-2.c: Only run on targets with natural alignment
+ of vector types.
+ * gcc.dg/vect/slp-25.c: Adjust tests for targets without natural
+ alignment of vector types.
+
+2012-07-30 Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * gcc.target/i386/rdseed16-1.c: New.
+ * gcc.target/i386/rdseed32-1.c: Ditto
+ * gcc.target/i386/rdseed64-1.c: Ditto
+ * gcc.target/i386/sse-12.c: Add -mrdseed.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-14.c: Ditto.
+ * g++.dg/other/i386-2.C: Ditto.
+ * g++.dg/other/i386-3.C: Ditto.
+
+2012-07-30 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * gcc.target/sh/pr51244-4.c: New.
+
+2012-07-27 Uros Bizjak <ubizjak@gmail.com>
+
+ * gfortran.dg/bind_c_array_params_2.f90: Add "-mno-explicit-relocs"
+ for alpha*-*-* targets. Cleanup original tree dump.
+
+2012-07-27 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/rs6000-power2-1.c: Delete.
+ * gcc.target/powerpc/rs6000-power2-2.c: Delete.
+
+2012-07-27 Anna Tikhonova <anna.tikhonova@intel.com>
+
+ * gcc.dg/20020201-1.c: Remove declarations for exit, abort,
+ rand, srand. Include <stdlib.h>.
+
+2012-07-26 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.dg/pr45259.c: Only -fpic depends on fpic support.
+
+2012-07-26 Richard Henderson <rth@redhat.com>
+
+ * gcc.dg/attr-hotcold-1.c: New.
+ * gcc.dg/tree-ssa/attr-hotcold-2.c: New.
+
+2012-07-26 Andrew Jenner <andrew@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * gcc.c-torture/compile/pr50380.c: Add code to cause cycle of length 2.
+
+2012-07-26 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/contiguous_1.f90: Update dg-error.
+ * gfortran.dg/proc_ptr_32.f90: Ditto.
+
+2012-07-26 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54098
+ * gcc.dg/torture/pr54098.c: New testcase.
+
+2012-07-26 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ * gcc.target/arm/neon/vld1Q_dupu64.c: Regenerate.
+ * gcc.target/arm/neon/vld1Q_dups64.c: Likewise.
+
+2012-07-26 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/44354
+ * gfortran.dg/array_constructor_39.f90: New test.
+
+2012-07-26 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/44354
+ * gfortran.dg/array_constructor_38.f90: New test.
+
+2012-07-25 Janis Johnson <janisjo@codesourcery.com>
+
+ * g++.dg/cpp0x/nullptr21.c: Remove printfs, make self-checking.
+
+2012-07-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/noreturn5.ad[sb]: New test.
+
+2012-07-25 Sandra Loosemore <sandra@codesourcery.com>
+ Paul Brook <paul@codesourcery.com>
+
+ PR target/53633
+
+ * lib/target-suports.exp (check_effective_target_naked_functions): New.
+ * c-c++-common/pr53633.c: New test.
+
+2012-07-25 Siddhesh Poyarekar <siddhesh@redhat.com>
+
+ * gcc.target/i386/asm-dialect-1.c: New test case.
+
+2012-07-25 Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * gcc.target/i386/prefetchw-1.c: New.
+ * gcc.target/i386/sse-12.c: Add -mprfchw.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-14.c: Ditto.
+ * gcc.target/i386/sse-22.c: Ditto.
+ * gcc.target/i386/sse-23.c: Ditto.
+ * g++.dg/other/i386-2.C: Ditto.
+ * g++.dg/other/i386-3.C: Ditto.
+
+2012-07-24 Janis Johnson <janisjo@codesourcery.com>
+
+ * lib/gcc-dg.exp (process-message): Don't ignore errors.
+
+2012-07-24 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ PR target/54051
+ * gcc.target/arm/pr54051.c: New.
+ * gcc.target/arm/vfp-1.c: Adjust test.
+
+2012-07-24 Julian Brown <julian@codesourcery.com>
+
+ * lib/target-supports.exp (check_effective_target_arm_hf_eabi): New.
+ * gcc.dg/torture/stackalign/builtin-apply-2.c: Skip for
+ hard-float ARM.
+
+2012-07-23 Paul Brook <paul@codesourcery.com>
+
+ * g++.dg/other/armv7m-1.c: New test.
+
+2012-07-23 Julian Brown <julian@codesourcery.com>
+
+ * gcc.c-torture/execute/20101011-1.c (__aeabi_idiv0): Define for
+ ARM.
+ (DO_TEST): Define to 1 for appropriate ARM targets.
+
+2012-07-22 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR tree-optimization/53881
+ * gcc.dg/pr53881.c: Renamed to ...
+ * gcc.dg/pr53881-1.c: ... this.
+ * gcc.dg/pr53881-2.c: New test.
+
+2012-07-22 Hans-Peter Nilsson <hp@axis.com>
+
+ Handle recent changes in default atomics for cris*-*-linux*.
+ * gcc.target/cris/torture/sync-mis-xchg-i-1ml.c,
+ gcc.target/cris/torture/sync-mis-xchg-i-2ml.c,
+ gcc.target/cris/torture/sync-mis-xchg-i-3ml.c,
+ gcc.target/cris/torture/sync-mis-xchg-s-1ml.c,
+ gcc.target/cris/torture/sync-mis-op-i-1ml.c,
+ gcc.target/cris/torture/sync-mis-op-i-2ml.c,
+ gcc.target/cris/torture/sync-mis-op-i-3ml.c,
+ gcc.target/cris/torture/sync-mis-op-s-1ml.c: New tests.
+ * gcc.target/cris/torture/sync-mis-op-i-2a.c: Make sure
+ -mno-unaligned-atomic-may-use-library is in effect for
+ cris*-*-linux*.
+ * gcc.target/cris/torture/sync-mis-xchg-i-1.c,
+ gcc.target/cris/torture/sync-mis-xchg-i-2.c,
+ gcc.target/cris/torture/sync-mis-xchg-i-3.c,
+ gcc.target/cris/torture/sync-mis-xchg-i-2a.c,
+ gcc.target/cris/torture/sync-mis-xchg-s-1.c,
+ gcc.target/cris/torture/sync-mis-op-i-1.c,
+ gcc.target/cris/torture/sync-mis-op-i-2.c,
+ gcc.target/cris/torture/sync-mis-op-i-1a.c,
+ gcc.target/cris/torture/sync-mis-op-i-3.c,
+ gcc.target/cris/torture/sync-mis-op-i-3a.c,
+ gcc.target/cris/torture/sync-mis-op-s-1a.c,
+ gcc.target/cris/torture/sync-mis-xchg-i-1a.c,
+ gcc.target/cris/torture/sync-mis-xchg-i-3a.c,
+ gcc.target/cris/torture/sync-mis-xchg-s-1a.c: Similar.
+ * gcc.target/cris/torture/sync-mis-op-s-1.c: Ditto.
+ (main): Remove local variable x.
+ [mis_ok]: Check that atomics don't fail.
+
+2012-07-21 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.dg/tree-ssa/vrp72.c: New test.
+ * gcc.dg/tree-ssa/vrp73.c: New test.
+ * gcc.dg/tree-ssa/vrp74.c: New test.
+ * gcc.dg/tree-ssa/vrp75.c: New test.
+
+2012-07-21 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.dg/tree-ssa/alias-21.c: New testcase.
+ * gcc.dg/tree-ssa/alias-22.c: New testcase.
+
+2012-07-21 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.target/mips/octeon-pop-2.c: New testcase.
+
+2012-07-21 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48820
+ * gfortran.dg/assumed_rank_3.f90: New.
+ * gfortran.dg/assumed_rank_11.f90: New.
+ * gfortran.dg/assumed_rank_1.f90: Update dg-error.
+ * gfortran.dg/assumed_rank_2.f90: Update dg-error.
+ * gfortran.dg/assumed_rank_7.f90: Update dg-error.
+
+2012-07-21 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.target/mips/unaligned-1.c: New testcase.
+
+2012-07-21 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.c-torture/execute/20101011-1.c (DO_TEST): Define as 0 for CRIS.
+
+2012-07-20 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/bind_c_array_params_2.f90: New.
+ * gfortran.dg/bind_c_array_params.f03: Add -std=f2003
+ and update dg-error.
+
+2012-07-20 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/assumed_rank_12.f90: Update dg-error.
+
+2012-07-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/54038
+ * g++.dg/other/array7.C: New.
+
+2012-07-20 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gcc.dg/tree-prof/update-loopch.c: Look for counts on the dumps of
+ the basic block and check loop depth.
+ * gcc.dg/tree-ssa/pr18133-1.c: Dump details, not blocks. Update
+ matching patterns and comments.
+ * gcc.dg/tree-ssa/20031021-1.c: Fix check patterns.
+ * gcc.dg/tree-ssa/vector-2.c: Likewise.
+
+2012-07-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/28656
+ * c-c++-common/pr28656.c: New test.
+
+2012-07-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/54026
+ * g++.dg/init/mutable1.C: New.
+
+2012-07-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48820
+ * gfortran.dg/assumed_type_3.f90: Update dg-error.
+ * gfortran.dg/assumed_rank_1.f90: New.
+ * gfortran.dg/assumed_rank_1_c.c: New.
+ * gfortran.dg/assumed_rank_2.f90: New.
+ * gfortran.dg/assumed_rank_4.f90: New.
+ * gfortran.dg/assumed_rank_5.f90: New.
+ * gfortran.dg/assumed_rank_6.f90: New.
+ * gfortran.dg/assumed_rank_7.f90: New.
+ * gfortran.dg/assumed_rank_8.f90: New.
+ * gfortran.dg/assumed_rank_8_c.c: New.
+ * gfortran.dg/assumed_rank_9.f90: New.
+ * gfortran.dg/assumed_rank_10.f90: New.
+ * gfortran.dg/assumed_rank_12.f90: New.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt25.adb: New test.
+ * gnat.dg/opt25_pkg1.ad[sb]: New helper.
+ * gnat.dg/opt25_pkg2.ad[sb]: Likewise.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/aggr20.ad[sb]: New test.
+ * gnat.dg/aggr20_pkg.ads: New helper.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/derived_type3.adb: New test.
+ * gnat.dg/derived_type3_pkg.ad[sb]: New helper.
+
+2012-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/53942
+ * gcc.dg/pr53942.c: New test.
+
+2012-07-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/54021
+ * g++.dg/cpp0x/constexpr-builtin2.C: New.
+
+2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr38.adb: New test.
+
+2012-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/54017
+ * c-c++-common/gomp/pr54017.c: New test.
+
+2012-07-19 Richard Guenther <rguenther@suse.de>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/loop_optimization11.adb: New testcase.
+ * gnat.dg/loop_optimization11_pkg.ads: Likewise.
+
+2012-07-18 Paolo Carlini <paolo.carlini@oracle.com>
+ Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae37.C: New.
+ * g++.dg/template/access23.C: New.
+ * g++.dg/template/access7.C: Adjust.
+ * g++.dg/template/sfinae10.C: Don't expect errors.
+ * g++.dg/template/sfinae6_neg.C: Don't expect errors.
+
+2012-07-18 Julian Brown <julian@codesourcery.com>
+ Sandra Loosemore <sandra@codesroucery.com>
+
+ * gcc.c-torture/execute/20101011-1.c: Skip on bare-metal m68k.
+
+2012-07-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/noreturn4.ad[sb]: New test.
+ * gnat.dg/noreturn4_pkg.ads: New helper.
+
+2012-07-18 Jie Zhang <jzhang918@gmail.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * gcc.target/arm/neon-vdup-1.c: New test case.
+ * gcc.target/arm/neon-vdup-2.c: New test case.
+ * gcc.target/arm/neon-vdup-3.c: New test case.
+ * gcc.target/arm/neon-vdup-4.c: New test case.
+ * gcc.target/arm/neon-vdup-5.c: New test case.
+ * gcc.target/arm/neon-vdup-6.c: New test case.
+ * gcc.target/arm/neon-vdup-7.c: New test case.
+ * gcc.target/arm/neon-vdup-8.c: New test case.
+ * gcc.target/arm/neon-vdup-9.c: New test case.
+ * gcc.target/arm/neon-vdup-10.c: New test case.
+ * gcc.target/arm/neon-vdup-11.c: New test case.
+ * gcc.target/arm/neon-vdup-12.c: New test case.
+ * gcc.target/arm/neon-vdup-13.c: New test case.
+ * gcc.target/arm/neon-vdup-14.c: New test case.
+ * gcc.target/arm/neon-vdup-15.c: New test case.
+ * gcc.target/arm/neon-vdup-16.c: New test case.
+ * gcc.target/arm/neon-vdup-17.c: New test case.
+ * gcc.target/arm/neon-vdup-18.c: New test case.
+ * gcc.target/arm/neon-vdup-19.c: New test case.
+ * gcc.target/arm/neon-combine-sub-abs-into-vabd.c: Make intrinsic
+ arguments non-constant.
+
+2012-07-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53970
+ * g++.dg/torture/pr53970.C: New testcase.
+
+2012-07-18 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/38621
+ * gcc.c-torture/compile/pr38621.c: New.
+
+2012-07-18 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/33135
+ * gcc.target/sh/pr33135-1.c: New.
+ * gcc.target/sh/pr33135-2.c: New.
+ * gcc.target/sh/pr33135-3.c: New.
+ * gcc.target/sh/pr33135-4.c: New.
+
+2012-07-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/53995
+ * g++.dg/parse/enum9.C: New.
+
+2012-07-17 Kazu Hirata <kazu@codesourcery.com>
+ Sandra Loosemore <sandra@codesourcery.com>
+
+ * gcc.target/m68k/pr36134.c: Use dg-skip-if to skip the testcase
+ if there is a conflict with -mcpu=. Use -mcpu=5208.
+
+2012-07-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/53989
+ * g++.dg/template/array23.C: New.
+
+2012-07-17 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/53985
+ * gfortran.dg/bind_c_usage_26.f90: New.
+ * gfortran.dg/bind_c_procs.f03: Add dg-options "-Wc-binding-type".
+ * gfortran.dg/bind_c_usage_13.f03: Ditto.
+ * gfortran.dg/bind_c_usage_18.f90: Ditto.
+ * gfortran.dg/interop_params.f03: Ditto.
+
+2012-07-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/inherit8.C: Adjust.
+ * g++.dg/template/using21.C: Adjust.
+ * g++.dg/template/using22.C: Adjust.
+
+ PR c++/53549
+ * g++.dg/template/current-inst1.C: New.
+ * g++.dg/parse/crash35.C: Adjust.
+
+2012-07-17 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/52101
+ * gfortran.dg/oldstyle_4.f90: New.
+
+2012-07-17 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/49265
+ * gfortran.dg/module_procedure_double_colon_3.f90: New.
+ * gfortran.dg/module_procedure_double_colon_4.f90: New.
+
+2012-07-16 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/parse/access8.C: Adjust.
+ * g++.dg/template/sfinae6_neg.C: Adjust.
+
+2012-07-16 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/53824
+ * gfortran.dg/coarray_allocate_1.f90: New test.
+
+2012-07-16 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.c-torture/execute/bswap-1.c: New testcase.
+ * gcc.c-torture/compile/unalign-1.c: New testcase.
+ * gcc.c-torture/compile/20120524-1.c: New testcase.
+ * gcc.c-torture/compile/20101216-1.c: New testcase.
+
+2012-07-16 Dehao Chen <dehao@google.com>
+
+ Revert
+ 2012-07-10 Dehao Chen <dehao@google.com>
+
+ * gcc.dg/debug_info_inline.c: New test.
+
+2012-07-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/53956
+ * gfortran.dg/proc_decl_28.f90: New.
+
+2012-07-16 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.dg/torture/builtins-1.c: New testcase.
+
+2012-07-16 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/sync-2i.c, gcc.target/cris/sync-2s.c,
+ gcc.target/cris/sync-3i.c, gcc.target/cris/sync-3s.c,
+ gcc.target/cris/sync-4i.c, gcc.target/cris/sync-4s.c,
+ gcc.target/cris/sync-1-v10.c,
+ gcc.target/cris/sync-1-v32.c: For cris*-*-linux*, also
+ pass -mno-unaligned-atomic-may-use-library.
+ * gcc.target/cris/sync-xchg-1.c: New test.
+ * gcc.target/cris/20011127-1.c: Adjust to %P being a
+ valid register operand output modifier.
+
+2012-07-15 Andreas Schwab <schwab@linux-m68k.org>
+
+ * g++.dg/debug/dwarf2/pubnames-2.C: Support all known comment
+ characters.
+
+2012-07-13 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.target/mips/octeon2-pipe-1.c: Use cleanup-rtl-dump
+ rather than cleanup-tree-dump.
+ * gcc.target/mips/octeon-pipe-1.c: Likewise.
+
+2012-07-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53907
+ * gcc.target/i386/pr53907.c: New testcase.
+
+2012-07-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53922
+ * gcc.dg/torture/pr53922.c: New testcase.
+
+2012-07-13 Hans-Peter Nilsson <hp@axis.com>
+
+ PR rtl-optimization/53908
+ * gcc.dg/torture/pr53908.c: New test.
+
+2012-07-13 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR c++/53531
+ * testsuite/g++.dg/cpp0x/variadic135.C: New.
+
+2012-07-12 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/sfinae6_neg.C: Adjust.
+
+2012-07-12 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/c_f_pointer_shape_tests_5.f90: New.
+ * gfortran.dg/c_f_pointer_tests_3.f90: Update
+ scan-tree-dump-times pattern.
+
+2012-07-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * g++.dg/debug/dwarf2/pubnames-2.C: Allow for / comments.
+
+2012-07-11 Jason Merrill <jason@redhat.com>
+
+ DR 1402
+ * g++.g/cpp0x/defaulted37.C: New.
+
+2012-07-11 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ PR target/53859
+ * gcc.target/arm/pr53859.c: New test.
+
+2012-07-10 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/53886
+ * gcc.c-torture/compile/pr53886.c: New.
+
+2012-07-10 Dehao Chen <dehao@google.com>
+
+ * gcc.dg/debug_info_inline.c: New test.
+
+2012-07-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/53733
+ * g++.dg/cpp0x/defaulted36.C: New.
+ * g++.dg/cpp0x/defaulted21.C: Adjust.
+
+ * g++.dg/cpp0x/implicit13.C: Add vbase and member tests.
+
+2012-07-09 Sterling Augustine <saugustine@google.com>
+
+ * g++.dg/debug/dwarf2/pubnames-2.C: New.
+
+2012-07-09 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR tree-optimization/53887
+ * gcc.dg/pr53887.c: New test.
+
+2012-07-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/53882
+ * g++.dg/cpp0x/nullptr29.C: New.
+
+2012-07-09 Tom de Vries <tom@codesourcery.com>
+ Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/builtin-unreachable-6.c: New test.
+ * gcc.dg/builtin-unreachable-5.c: New test.
+
+2012-07-07 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR tree-optimization/53881
+ * gcc.dg/pr53881.c: New test.
+
+2012-07-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/53862
+ * g++.dg/cpp0x/variadic134.C: New.
+
+ PR c++/53858
+ * g++.dg/cpp0x/alias-decl-20.C: New.
+
+2012-07-06 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/51879
+ * gcc.dg/pr51879-16.c: New test.
+ * gcc.dg/pr51879-17.c: Same.
+
+2012-07-06 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/52009
+ * gcc.dg/pr51879-7.c: New test.
+ * gcc.dg/pr51879-18.c: New test.
+
+2012-07-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/50852
+ * g++.dg/template/typedef39.C: New.
+
+ PR c++/53039
+ * g++.dg/cpp0x/variadic133.C: New.
+ * g++.dg/template/param1.C: Adjust.
+
+2012-07-05 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ PR target/48941
+ PR target/51980
+ * gcc/testsuite/gcc.target/arm/neon/vtrnf32.c: Update.
+ * gcc/testsuite/gcc.target/arm/neon/vtrns32.c: Update.
+ * gcc/testsuite/gcc.target/arm/neon/vtrnu32.c: Update.
+ * gcc/testsuite/gcc.target/arm/neon/vzipf32.c: Update.
+ * gcc/testsuite/gcc.target/arm/neon/vzips32.c: Update.
+ * gcc/testsuite/gcc.target/arm/neon/vzipu32.c: Update.
+
+2012-07-05 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/53732
+ * gfortran.dg/inline_sum_4.f90: New test.
+
+2012-07-05 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gcc.c-torture/compile/20000326-1.c: Fix to not optimize to empty.
+
+2012-07-05 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * gcc.target/arm/fma-sp.c: New testcase.
+ * gcc.target/arm/fma.c: Likewise.
+ * gcc.target/arm/fma.h: Likewise.
+
+2012-07-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/53848
+ * g++.dg/other/enum3.C: New.
+
+2012-07-04 Uros Bizjak <ubizjak@gmail.com>
+
+ PR middle-end/53321
+ * g++.dg/torture/pr53321.C: New test.
+
+2012-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53844
+ * g++.dg/tree-ssa/pr53844.C: New testcase.
+
+2012-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53849
+ * gcc.dg/pr53849.c: New testcase.
+
+2012-07-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/53812
+ * g++.dg/ext/label14.C: New test.
+
+2012-07-03 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/53811
+ * g++.dg/other/pr53811.C: New test.
+
+2012-07-03 Andreas Schwab <schwab@linux-m68k.org>
+
+ PR target/28896
+ * gcc.target/m68k/stack-limit-1.c: New testcase.
+
+2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/recursive_call.adb: New test.
+
+2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr37.ad[sb]: New test.
+
+2012-07-03 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * g++.dg/other/packed1.C: Remove SH from xfail list.
+
+2012-07-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/53619
+ * g++.dg/cpp0x/lambda/lambda-this5.C: New.
+
+ PR c++/53783
+ * g++.dg/cpp0x/lambda/lambda-template7.C: New.
+
+ PR c++/53788
+ * g++.dg/cpp0x/decltype39.C: New.
+ * g++.dg/diagnostic/method1.C: Adjust.
+
+ PR c++/53816
+ * g++.dg/template/ref6.C: New.
+
+2012-07-02 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/53568
+ * gcc.target/sh/pr53568-1.c: New.
+
+2012-07-02 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51244
+ * gcc.target/sh/pr51244-1.c: Check that movt insn is not generated.
+
+2012-07-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/53821
+ * g++.dg/cpp0x/lambda/lambda-template6.C: New.
+
+ PR c++/53524
+ * g++.dg/template/enum7.C: New.
+ * g++.dg/other/ptrmem10.C: Adjust.
+ * g++.dg/other/ptrmem11.C: Adjust.
+ * g++.dg/cpp0x/scoped_enum.C: Adjust.
+
+2012-07-02 Steven Bosscher <steven@gcc.gnu.org>
+
+ * gcc.dg/tree-ssa/pr36881.c: Fix test case to not expand as bit tests.
+
2012-07-01 Wei Guozhi <carrot@google.com>
PR target/53447
diff --git a/gcc/testsuite/c-c++-common/gomp/pr54017.c b/gcc/testsuite/c-c++-common/gomp/pr54017.c
new file mode 100644
index 00000000000..724efe13638
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr54017.c
@@ -0,0 +1,65 @@
+/* PR middle-end/54017 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+void
+f1 (void)
+{
+#pragma omp parallel sections
+ {
+#pragma omp section
+ {
+ for (;;)
+ ;
+ }
+ }
+}
+
+int
+f2 (void)
+{
+ int i = 0;
+#pragma omp parallel
+#pragma omp sections reduction(+:i)
+ {
+#pragma omp section
+ {
+ for (;;)
+ ;
+ }
+ }
+ return i;
+}
+
+void
+f3 (void)
+{
+#pragma omp parallel sections
+ {
+#pragma omp section
+ {
+ for (;;)
+ ;
+ }
+#pragma omp section
+ ;
+ }
+}
+
+int
+f4 (void)
+{
+ int i = 0;
+#pragma omp parallel
+#pragma omp sections reduction(+:i)
+ {
+#pragma omp section
+ {
+ for (;;)
+ ;
+ }
+#pragma omp section
+ ;
+ }
+ return i;
+}
diff --git a/gcc/testsuite/c-c++-common/pr28656.c b/gcc/testsuite/c-c++-common/pr28656.c
new file mode 100644
index 00000000000..a0c2339f593
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr28656.c
@@ -0,0 +1,29 @@
+/* PR c++/28656 */
+/* { dg-do compile } */
+/* { dg-options "-Wnonnull" } */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern void *memcpy (void *__restrict, const void *__restrict, __SIZE_TYPE__)
+ __attribute__((nonnull (1), nonnull (2), nonnull (1, 2), nonnull));
+#ifdef __cplusplus
+}
+#endif
+
+extern void bar (void *p1, void *p2, void *p3, void *p4, void *p5)
+ __attribute__((nonnull (1), nonnull (1, 3), nonnull (3, 5), nonnull (4)));
+
+void
+foo (void)
+{
+ memcpy (0, 0, 0);
+ bar (0, 0, 0, 0, 0);
+}
+
+/* { dg-warning "null argument where non-null required\[^\n\r\]*argument 1" "" { target *-*-* } 20 } */
+/* { dg-warning "null argument where non-null required\[^\n\r\]*argument 2" "" { target *-*-* } 20 } */
+/* { dg-warning "null argument where non-null required\[^\n\r\]*argument 1" "" { target *-*-* } 21 } */
+/* { dg-warning "null argument where non-null required\[^\n\r\]*argument 3" "" { target *-*-* } 21 } */
+/* { dg-warning "null argument where non-null required\[^\n\r\]*argument 4" "" { target *-*-* } 21 } */
+/* { dg-warning "null argument where non-null required\[^\n\r\]*argument 5" "" { target *-*-* } 21 } */
diff --git a/gcc/testsuite/c-c++-common/pr53633.c b/gcc/testsuite/c-c++-common/pr53633.c
new file mode 100644
index 00000000000..db7e1ceb82b
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr53633.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target naked_functions } */
+/* { dg-options "-O2 -Wall" } */
+/* Check that we do not get warnings about missing return statements
+ or bogus looking noreturn functions. */
+int __attribute__((naked))
+foo(void)
+{
+ __asm__ ("");
+}
+
+int __attribute__((naked,noreturn))
+bar(void)
+{
+ __asm__ ("");
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle3-2.C b/gcc/testsuite/g++.dg/abi/mangle3-2.C
new file mode 100644
index 00000000000..ac85fb04569
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle3-2.C
@@ -0,0 +1,20 @@
+// Test mangling of type casts
+// { dg-options "-fabi-version=0" }
+// { dg-do compile }
+
+template<int i> class A {};
+template<bool b> class B {};
+
+template<int i> void f(A<i> &, B<bool(i)> &) {}
+template<int i> void g(A<i> &, B<static_cast<bool>(i)> &) {}
+
+int main()
+{
+ A<1> a;
+ B<true> b;
+ f(a, b);
+ g(a, b);
+}
+
+// { dg-final { scan-assembler "\n_?_Z1fILi1EEvR1AIXT_EER1BIXcvbT_EE\[: \t\n\]" } }
+// { dg-final { scan-assembler "\n_?_Z1gILi1EEvR1AIXT_EER1BIXscbT_EE\[: \t\n\]" } }
diff --git a/gcc/testsuite/g++.dg/abi/mangle3.C b/gcc/testsuite/g++.dg/abi/mangle3.C
index a20b877f477..5f44f767732 100644
--- a/gcc/testsuite/g++.dg/abi/mangle3.C
+++ b/gcc/testsuite/g++.dg/abi/mangle3.C
@@ -1,4 +1,5 @@
// Test mangling of type casts
+// { dg-options "-fabi-version=2" }
// { dg-do compile }
template<int i> class A {};
diff --git a/gcc/testsuite/g++.dg/conversion/void2.C b/gcc/testsuite/g++.dg/conversion/void2.C
new file mode 100644
index 00000000000..9bd6d9f4c75
--- /dev/null
+++ b/gcc/testsuite/g++.dg/conversion/void2.C
@@ -0,0 +1,16 @@
+// PR c++/54165
+
+struct A
+{
+ template<typename T>
+ operator T()
+ {
+ T l[];
+ }
+};
+
+int main()
+{
+ A a;
+ (void)a;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-20.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-20.C
new file mode 100644
index 00000000000..078d257187a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-20.C
@@ -0,0 +1,9 @@
+// PR c++/53858
+// { dg-do compile { target c++11 } }
+
+template <typename T> struct s0 { typedef T tdef0; };
+template <typename T> struct s1 { typedef T tdef1; };
+template <typename T> using us1 = typename s1<T>::tdef1;
+template <typename T, typename TT = typename us1<T>::tdef0> struct s2 {};
+
+int main () { return 0; }
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto34.C b/gcc/testsuite/g++.dg/cpp0x/auto34.C
new file mode 100644
index 00000000000..3682d60bf4b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto34.C
@@ -0,0 +1,18 @@
+// PR c++/51421
+// { dg-do compile { target c++11 } }
+
+int foo1(int);
+
+void bar1()
+{
+ auto i = foo1(i); // { dg-error "before deduction" }
+}
+
+struct A {};
+
+A foo2(A);
+
+void bar2()
+{
+ auto a = foo2(a); // { dg-error "before deduction" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C
new file mode 100644
index 00000000000..dde38f05acd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C
@@ -0,0 +1,16 @@
+// PR c++/54021
+// { dg-do compile { target c++11 } }
+
+extern int nonconst_func(int);
+constexpr int identity(int x) { return x; }
+constexpr int zero() { return identity(0); }
+constexpr int one() { return identity(1); }
+
+// These are the same. Only the latter is accepted, though.
+constexpr int rejected_const_4(int x)
+{ return __builtin_constant_p(x) ? 4 : nonconst_func(x); }
+constexpr int accepted_const_4(int x)
+{ return identity(__builtin_constant_p(x)) ? 4 : nonconst_func(x); }
+
+// This is rejected. I would like it to work.
+constexpr int four = accepted_const_4(1);
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-const1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-const1.C
new file mode 100644
index 00000000000..6ee72256e24
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-const1.C
@@ -0,0 +1,7 @@
+// PR c++/54086
+// { dg-do compile { target c++11 } }
+
+static constexpr const char Data[] = {
+ 'D', 'A', 'T', 'A',
+};
+static constexpr const char *data_func() { return Data; }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C
new file mode 100644
index 00000000000..793b4c3f5d3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C
@@ -0,0 +1,27 @@
+// PR c++/54020
+// { dg-do compile { target c++11 } }
+
+// Preliminaries.
+extern int nonconst_func(int);
+constexpr int identity(int x) { return x; }
+constexpr int zero() { return identity(0); }
+constexpr int one() { return identity(1); }
+
+// Correctly accepted.
+constexpr int three = one() ? 3 : nonconst_func(0);
+
+// Incorrectly accepted. See [dcl.constexpr] #5:
+// For a constexpr function, if no function argument values exist
+// such that the function invocation sub-stitution would produce a
+// constant expression (5.19), the program is ill-formed; no diagnostic
+// required.
+constexpr int bogus() { return zero () ? 3 : nonconst_func(0); } // { dg-error "nonconst_func" }
+
+// Correctly rejected (not sure why).
+constexpr int correct_error() { return nonconst_func(0); } // { dg-error "nonconst_func" }
+
+// Correctly rejected.
+constexpr int z = bogus(); // { dg-error "" }
+
+// This is also correctly rejected.
+constexpr int correct_failure() { return 0 ? 3 : nonconst_func(0); } // { dg-error "nonconst_func" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
index 4ff398bf1f0..6c9d4664418 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
@@ -18,8 +18,7 @@ extern constexpr int i2; // { dg-error "definition" }
// error: missing initializer
constexpr A1 a2; // { dg-error "uninitialized const" }
-// error: duplicate cv
-const constexpr A1 a3 = A1(); // { dg-error "both .const. and .constexpr. cannot" }
+const constexpr A1 a3 = A1();
volatile constexpr A1 a4 = A1(); // { dg-error "both .volatile. and .constexpr. cannot" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype28.C b/gcc/testsuite/g++.dg/cpp0x/decltype28.C
index c97fd202c1d..00457357b2b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype28.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype28.C
@@ -8,8 +8,8 @@ template <class F, int N>
void ft (F f, typename enable_if<N!=0, int>::type) {}
template< class F, int N >
-decltype(ft<F, N-1> (F(), 0))
-ft (F f, typename enable_if<N==0, int>::type) {} // { dg-error "depth" }
+decltype(ft<F, N-1> (F(), 0)) // { dg-error "depth" }
+ft (F f, typename enable_if<N==0, int>::type) {}
int main() {
ft<struct a*, 2> (0, 0); // { dg-message "from here" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype29.C b/gcc/testsuite/g++.dg/cpp0x/decltype29.C
index 70fe4412dcb..a64bb65a476 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype29.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype29.C
@@ -9,8 +9,8 @@ typename enable_if<x==0,int>::type
ft() {}
template<class F, int N>
-decltype (ft<F> (F()))
-ft() {} // { dg-error "depth" }
+decltype (ft<F> (F())) // { dg-error "depth" }
+ft() {}
int main() {
ft<struct a*, 0>(); // { dg-error "no match|wrong number" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype32.C b/gcc/testsuite/g++.dg/cpp0x/decltype32.C
index 66731cc947d..6cb637bb2dd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype32.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype32.C
@@ -2,8 +2,8 @@
// { dg-options -std=c++0x }
template <typename T>
-auto make_array(const T& il) -> // { dg-error "not declared" }
-decltype(make_array(il))
+auto make_array(const T& il) ->
+decltype(make_array(il)) // { dg-error "not declared" }
{ }
int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype39.C b/gcc/testsuite/g++.dg/cpp0x/decltype39.C
new file mode 100644
index 00000000000..4676d2de9b5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype39.C
@@ -0,0 +1,19 @@
+// PR c++/53788
+// { dg-do compile { target c++11 } }
+
+struct t { static const bool value = true; };
+struct f { static const bool value = false; };
+
+template<typename T>
+struct has_static {
+ template<typename X>
+ static t check(X*, decltype(T::fun())* = 0); // { dg-error "without object" }
+ static f check(...);
+
+ typedef decltype(check((T*)(0))) ret;
+ static const bool value = ret::value;
+};
+
+struct test { int fun() { return 0; } };
+
+bool b = has_static<test>::value;
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted21.C b/gcc/testsuite/g++.dg/cpp0x/defaulted21.C
index 30a4a7c7d01..51505dc460e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted21.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted21.C
@@ -3,7 +3,8 @@
struct U {
U();
- U(U const&);
+private:
+ U(U const&); // { dg-error "private" }
};
struct X {
@@ -13,7 +14,7 @@ struct X {
};
X::X(X&&)=default; // { dg-message "implicitly deleted" }
-// { dg-error "does not have a move constructor" "" { target *-*-* } 15 }
+// { dg-prune-output "within this context" }
X f() {
return X();
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted36.C b/gcc/testsuite/g++.dg/cpp0x/defaulted36.C
new file mode 100644
index 00000000000..1360f608e69
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted36.C
@@ -0,0 +1,24 @@
+// PR c++/53733
+// { dg-do compile { target c++11 } }
+
+template<typename T>
+struct wrap
+{
+ wrap() = default;
+ wrap(wrap&&) = default; // Line 5
+ wrap(const wrap&) = default;
+
+ T t;
+};
+
+struct S {
+ S() = default;
+ S(const S&){}
+ S(S&&) = default;
+};
+
+typedef wrap<const S> W;
+
+W get() { return W(); } // Line 19
+
+int main() {}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted37.C b/gcc/testsuite/g++.dg/cpp0x/defaulted37.C
new file mode 100644
index 00000000000..69105cc3146
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted37.C
@@ -0,0 +1,21 @@
+// DR 1402
+// { dg-do compile { target c++11 } }
+
+struct A
+{
+ int moved = 0;
+ A& operator=(A&&) { ++moved; }
+ ~A() { if (moved > 1) __builtin_abort(); }
+};
+
+struct B: virtual A { B& operator=(B&&) = default; };
+struct C: virtual A { }; // { dg-error "operator=.const A&" }
+
+int main()
+{
+ B b1, b2;
+ b2 = static_cast<B&&>(b1);
+
+ C c1, c2;
+ c2 = static_cast<C&&>(c1); // { dg-error "operator=.const C&" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg3.C b/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg3.C
new file mode 100644
index 00000000000..8e9b76fe0e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg3.C
@@ -0,0 +1,26 @@
+// { dg-do compile { target c++11 } }
+
+template <class T, class = typename T::I> void f(T) {}
+template <class T, class = typename T::I> void g(T) {}
+template <class T, class = typename T::I> void h(T) {}
+template <class T, class = typename T::I> void i(T) {}
+template <class T, class = typename T::I> void j(T) {} // { dg-error "this context" }
+
+class A
+{
+ typedef int I; // { dg-error "private" }
+ template <class T, class> friend void f(T);
+ friend void g<A,I>(A);
+ friend void h<A>(A);
+ friend void i<>(A);
+};
+
+int main()
+{
+ A a;
+ f(a);
+ g(a);
+ h(a);
+ i(a);
+ j(a); // { dg-error "no match" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit13.C b/gcc/testsuite/g++.dg/cpp0x/implicit13.C
index 96bc7706040..3165863c639 100644
--- a/gcc/testsuite/g++.dg/cpp0x/implicit13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit13.C
@@ -14,7 +14,7 @@ struct B: A { };
// { dg-final { scan-assembler-not "_ZN1BC1Ev" } }
B b;
-struct C { C() noexcept; ~C(); };
+struct C { C() noexcept; ~C() noexcept(false); };
struct D: C { };
extern D d;
@@ -22,3 +22,11 @@ void *operator new(__SIZE_TYPE__, void*) noexcept;
#define SA(X) static_assert((X),#X)
SA(noexcept(new (&d) D));
+
+struct E: virtual C { };
+extern E e;
+SA(noexcept (new (&e) E));
+
+struct F { C c; };
+extern F f;
+SA(noexcept (new (&f) F));
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C b/gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
index 373044f765a..0ffcb3bcbae 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
@@ -24,3 +24,5 @@ int main()
{
g({1}); // { dg-warning "deduc" }
}
+
+// { dg-prune-output "-fno-deduce-init-list" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/inline-ns2.C b/gcc/testsuite/g++.dg/cpp0x/inline-ns2.C
index 03851725bbd..17a8bf60192 100644
--- a/gcc/testsuite/g++.dg/cpp0x/inline-ns2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/inline-ns2.C
@@ -2,17 +2,17 @@
namespace Q {
inline namespace V1 {
- extern int i; // { dg-error "" }
- extern int j; // { dg-error "" }
- void f(); // { dg-error "" }
- void g(); // { dg-error "" }
+ extern int i; // { dg-message "" }
+ extern int j; // { dg-message "" }
+ void f(); // { dg-message "" }
+ void g(); // { dg-message "" }
}
inline namespace V2 {
- extern int j; // { dg-error "" }
- void g(); // { dg-error "" }
+ extern int j; // { dg-message "" }
+ void g(); // { dg-message "" }
}
- extern int i; // { dg-error "" }
- void f(); // { dg-error "" }
+ extern int i; // { dg-message "" }
+ void f(); // { dg-message "" }
void h();
}
namespace R {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template6.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template6.C
new file mode 100644
index 00000000000..5e8561946ae
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template6.C
@@ -0,0 +1,14 @@
+// PR c++/53821
+// { dg-final { scan-assembler-not "_ZZ1fIvEvvENKUlvE_cvPFvvEEv" } }
+// { dg-do compile { target c++11 } }
+
+template <class T> void f()
+{
+ auto g = []{};
+ g();
+}
+
+int main()
+{
+ f<void>();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template7.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template7.C
new file mode 100644
index 00000000000..5b098d0df33
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template7.C
@@ -0,0 +1,5 @@
+// PR c++/53783
+// { dg-do compile { target c++11 } }
+
+template <class T> void foo() { [] { [] {}; }; }
+int main() { foo<void>(); }
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this5.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this5.C
new file mode 100644
index 00000000000..8974641643c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this5.C
@@ -0,0 +1,22 @@
+// PR c++/53619
+// { dg-do run { target c++11 } }
+
+struct C {
+ int x;
+};
+struct B {
+ int q;
+};
+struct A : public B , C {
+ void foo();
+};
+
+void A::foo() {
+ auto k = [this]() {return (void *)(&x);};
+ if (k() != (void*)&x)
+ __builtin_abort();
+}
+
+int main(int l, char **) {
+ A a; a.foo();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr21.C b/gcc/testsuite/g++.dg/cpp0x/nullptr21.C
index c30cb3c8b6d..8362bd2965b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr21.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr21.C
@@ -3,42 +3,53 @@
// Test throw and catch
-#include <cstdio>
+extern "C" void abort (void);
typedef decltype(nullptr) nullptr_t;
+int result[2];
+
+void __attribute__((noinline))
+foo (int i, int j)
+{
+ result[i] = j;
+}
+
int main()
{
try {
throw nullptr;
} catch (void*) {
- printf("Test 1 Fail");
+ foo (0, 1);
} catch (bool) {
- printf("Test 1 Fail");
+ foo (0, 2);
} catch (int) {
- printf("Test 1 Fail");
+ foo (0, 3);
} catch (long int) {
- printf("Test 1 Fail");
+ foo (0, 4);
} catch (nullptr_t) {
- printf("Test 1 OK");
+ foo (0, 5);
} catch (...) {
- printf("Test 1 Fail");
- } // { dg-output "Test 1 OK" }
+ foo (0, 6);
+ }
nullptr_t mynull = 0;
try {
throw mynull;
} catch (void*) {
- printf("Test 2 Fail");
+ foo (1, 1);
} catch (bool) {
- printf("Test 2 Fail");
+ foo (1, 2);
} catch (int) {
- printf("Test 2 Fail");
+ foo (1, 3);
} catch (long int) {
- printf("Test 2 Fail");
+ foo (1, 4);
} catch (nullptr_t) {
- printf("Test 2 OK");
+ foo (1, 5);
} catch (...) {
- printf("Test 2 Fail");
- } // { dg-output "Test 2 OK" }
+ foo (1, 6);
+ }
+
+ if (result[0] != 5 || result[1] != 5)
+ abort ();
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr29.C b/gcc/testsuite/g++.dg/cpp0x/nullptr29.C
new file mode 100644
index 00000000000..a8e35a9b679
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr29.C
@@ -0,0 +1,4 @@
+// PR c++/53882
+// { dg-options "-std=gnu++11 -O" }
+
+void f(decltype(nullptr) &__restrict np) { }
diff --git a/gcc/testsuite/g++.dg/cpp0x/overload2.C b/gcc/testsuite/g++.dg/cpp0x/overload2.C
index ff8ad22bea6..b335ea2be99 100644
--- a/gcc/testsuite/g++.dg/cpp0x/overload2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/overload2.C
@@ -10,15 +10,15 @@ template <class T> decltype(g1(T())) f1()
{ return g1(T()); }
int i1 = f1<int>(); // OK, g1(int) was declared before the first f1
-template <class T> decltype(g2(T())) f2();
+template <class T> decltype(g2(T())) f2(); // { dg-error "g2. was not declared" }
int g2(int);
-template <class T> decltype(g2(T())) f2() // { dg-error "g2. was not declared" }
+template <class T> decltype(g2(T())) f2()
{ return g2(T()); }
int i2 = f2<int>(); // { dg-error "no match" }
int g3();
-template <class T> decltype(g3(T())) f3();
+template <class T> decltype(g3(T())) f3(); // { dg-error "too many arguments" }
int g3(int);
-template <class T> decltype(g3(T())) f3() // { dg-error "too many arguments" }
+template <class T> decltype(g3(T())) f3()
{ return g3(T()); }
int i3 = f3<int>(); // { dg-error "no match" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for14.C b/gcc/testsuite/g++.dg/cpp0x/range-for14.C
index 26ae477d70e..438555e1344 100644
--- a/gcc/testsuite/g++.dg/cpp0x/range-for14.C
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for14.C
@@ -59,7 +59,7 @@ void test1()
struct base_begin
{
- int *begin(); // { dg-error "" }
+ int *begin(); // { dg-message "" }
};
struct base_end
diff --git a/gcc/testsuite/g++.dg/cpp0x/scoped_enum.C b/gcc/testsuite/g++.dg/cpp0x/scoped_enum.C
index c52a3fe769e..4b0317cfbe0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/scoped_enum.C
+++ b/gcc/testsuite/g++.dg/cpp0x/scoped_enum.C
@@ -13,7 +13,7 @@ enum struct Color2 {
Blue,
Indigo = Green + 2,
Violet,
- Red // { dg-error "redefinition" }
+ Red // { dg-error "redeclaration" }
};
enum Color {
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae24.C b/gcc/testsuite/g++.dg/cpp0x/sfinae24.C
index 3e1d2e725b0..f974d82b144 100644
--- a/gcc/testsuite/g++.dg/cpp0x/sfinae24.C
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae24.C
@@ -19,8 +19,8 @@ struct Bind
R f();
template<typename R
- = decltype( val<const F>()( ) )>
- R f() const; // { dg-error "no match" }
+ = decltype( val<const F>()( ) )> // { dg-error "no match" }
+ R f() const;
};
int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae37.C b/gcc/testsuite/g++.dg/cpp0x/sfinae37.C
new file mode 100644
index 00000000000..e89106aac34
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae37.C
@@ -0,0 +1,36 @@
+// PR c++/51213
+// { dg-do compile { target c++11 } }
+
+class C {
+ typedef int type;
+};
+
+template<int>
+struct I;
+
+template<>
+struct I<2> { };
+
+template<class T, class = typename T::type>
+auto f(int) -> char;
+
+template<class>
+auto f(...) -> char (&)[2];
+
+static_assert(sizeof(f<C>(0)) == 2, "Ouch");
+
+typedef int testf[sizeof(f<C>(0)) == 2 ? 1 : -1];
+
+I<sizeof(f<C>(0))> vf;
+
+template<class T>
+auto g(int) -> decltype(typename T::type(), char());
+
+template<class>
+auto g(...) -> char (&)[2];
+
+static_assert(sizeof(g<C>(0)) == 2, "Ouch");
+
+typedef int testg[sizeof(g<C>(0)) == 2 ? 1 : -1];
+
+I<sizeof(g<C>(0))> vg;
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae38.C b/gcc/testsuite/g++.dg/cpp0x/sfinae38.C
new file mode 100644
index 00000000000..2e860ee6999
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae38.C
@@ -0,0 +1,10 @@
+// { dg-do compile { target c++11 } }
+
+template<class T, unsigned = sizeof(T)>
+auto f(int) -> char;
+
+template<class>
+auto f(...) -> char(&)[2];
+
+static_assert(sizeof(f<void>(0)) != 1, "");
+static_assert(sizeof(f<void()>(0)) != 1, "");
diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert8.C b/gcc/testsuite/g++.dg/cpp0x/static_assert8.C
new file mode 100644
index 00000000000..ea23afb857d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/static_assert8.C
@@ -0,0 +1,7 @@
+// { dg-do compile { target c++11 } }
+
+static_assert (1 == 0); // { dg-error "expected (string-literal|',') before" }
+
+static_assert (1 == 0,); // { dg-error "expected string-literal before '\\)'" }
+
+static_assert (1 == 0, "oops"); // { dg-error "static assertion failed" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/temp_default5.C b/gcc/testsuite/g++.dg/cpp0x/temp_default5.C
new file mode 100644
index 00000000000..21ad5fb0380
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/temp_default5.C
@@ -0,0 +1,13 @@
+// { dg-options "-std=c++11" }
+
+template <class Z = void, class T>
+void Foo(T)
+{
+ struct X {};
+}
+
+template <class T = int, typename U>
+void f(const U&)
+{
+ auto g = [] () {};
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic133.C b/gcc/testsuite/g++.dg/cpp0x/variadic133.C
new file mode 100644
index 00000000000..0265f0991c1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic133.C
@@ -0,0 +1,46 @@
+// PR c++/53039
+// { dg-do compile { target c++11 } }
+
+template <class, class>
+struct is_convertible
+{
+ static const bool value = true;
+};
+
+template<bool, class T>
+struct enable_if
+{
+ typedef T type;
+};
+
+template <bool...>
+struct Xs
+{
+ static const bool value = true;
+};
+
+template<typename... BTs>
+ class BType
+ {
+ template <typename... BUs,
+ typename enable_if<
+ Xs<is_convertible<BUs, BTs>::value...>::value,
+ bool>::type = false>
+ void fooX(BUs&&...);
+ };
+
+template <typename... ATs>
+ struct AType
+ {
+ template <typename... AUs,
+ typename enable_if<
+ Xs<is_convertible<AUs, ATs>::value...>::value,
+ bool>::type = false>
+ void foo(AUs&&...);
+ };
+
+int main()
+{
+ AType<int, int> t;
+ t.foo(1, 1);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic134.C b/gcc/testsuite/g++.dg/cpp0x/variadic134.C
new file mode 100644
index 00000000000..d4181b02c8e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic134.C
@@ -0,0 +1,17 @@
+// PR c++/53862
+// { dg-do compile { target c++11 } }
+
+typedef unsigned long size_t;
+
+template<typename> struct is_scalar { static const bool value = true; };
+template<bool, typename T> struct enable_if { typedef T type; };
+
+template <size_t N, typename... Args>
+void f(Args...) {}
+
+template <size_t N, typename T, typename... Args>
+typename enable_if<is_scalar<T>::value, void>::type f(T, Args...) {}
+
+int main() {
+ f<1>(1);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic135.C b/gcc/testsuite/g++.dg/cpp0x/variadic135.C
new file mode 100644
index 00000000000..fbf5dec4797
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic135.C
@@ -0,0 +1,5 @@
+// { dg-options "-std=gnu++0x" }
+
+template <typename ...> struct S;
+
+int i = S<int,>::undefined; // { dg-error "template argument 2 is invalid" }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C b/gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C
new file mode 100644
index 00000000000..8ab75e1ce5b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C
@@ -0,0 +1,14 @@
+// PR debug/53235
+// { dg-options "-gdwarf-4 -fdebug-types-section" }
+// { dg-final { scan-assembler-times "debug_types" 2 } }
+
+namespace E {
+ class O {};
+ void f (O o) {}
+}
+namespace F {
+ class O {};
+ void f (O fo) {}
+}
+E::O eo;
+int main () {}
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C b/gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C
new file mode 100644
index 00000000000..8ad347a7cc3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C
@@ -0,0 +1,39 @@
+// { dg-do compile }
+// { dg-options "-g2 -dA" }
+
+// Verify that line number info is output for the non-virtual
+// thunks for C::~C().
+// { dg-final { scan-assembler "thunk.C:30" } }
+
+class A
+{
+ public:
+ A();
+ virtual ~A();
+ private:
+ int i;
+};
+
+class B
+{
+ public:
+ B();
+ virtual ~B();
+ private:
+ int i;
+};
+
+class C : public A, public B
+{
+ public:
+ C();
+ virtual ~C(); // line 30
+};
+
+C::C()
+{
+}
+
+C::~C()
+{
+}
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
new file mode 100644
index 00000000000..64b121b7f32
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
@@ -0,0 +1,193 @@
+// { dg-do compile }
+// { dg-options "-gpubnames -gdwarf-4 -std=c++0x -dA" }
+// { dg-final { scan-assembler-times "\.section\[\t \]\[^\n\]*debug_pubnames" 1 } }
+// { dg-final { scan-assembler "\"\\(anonymous namespace\\)\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::G_A\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::G_B\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::G_C\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::\\(anonymous namespace\\)\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"F_A\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"F_B\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"F_C\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"inline_func_1\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::c1::c1\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::c1::~c1\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::c1::val\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"check_enum\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"main\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int>::c2\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<double>::c2\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int const\\\*>::c2\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"check<one::c1>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"check<two::c2<int> \\>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"check<two::c2<double> \\>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"check<two::c2<int const\\\*> \\>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int>::val\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<double>::val\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int const\\\*>::val\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"__static_initialization_and_destruction_0\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int>::~c2\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<double>::~c2\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int const\\\*>::~c2\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"anonymous_union_var\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::ci\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2v1\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2v2\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2v3\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::c1v\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::\\(anonymous namespace\\)::one_anonymous_var\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::c1_count\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::c2_count\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::three\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::three::anonymous_three_var\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler-times "\.section\[\t \]\[^\n\]*debug_pubtypes" 1 } }
+// { dg-final { scan-assembler "\"one::G\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::c1\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"int\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"one::c1\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<double>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"double\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<double>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int const\\\*>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"two::c2<int const\\\*>\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"F\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"anonymous_union_container\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+// { dg-final { scan-assembler "\"bool\\\\0\"+\[ \t\]+\[#;/|@!]+\[ \t\]+external name" } }
+
+namespace
+{
+int c1_count;
+int c2_count;
+
+namespace three
+{
+int anonymous_three_var;
+}
+};
+
+namespace one
+{
+
+enum G
+{
+ G_A,
+ G_B,
+ G_C
+};
+
+namespace {
+int one_anonymous_var;
+}
+
+class c1
+{
+ public:
+ static int count;
+
+ c1()
+ { ++c1_count; }
+
+ ~c1()
+ {
+ --c1_count;
+ }
+
+ enum E
+ {
+ E_A,
+ E_B,
+ E_C,
+ };
+
+ int
+ val()
+ { return E_A; }
+};
+
+c1 c1v;
+};
+
+namespace two
+{
+const int ci = 3;
+
+template <typename T>
+class c2
+{
+ public:
+ c2(T t)
+ : t_(t)
+ {
+ ++c2_count;
+ }
+
+ ~c2()
+ { --c2_count; }
+
+ T
+ val()
+ { return this->t_; }
+
+ T t_;
+};
+
+c2<int> c2v1(1);
+c2<double> c2v2(2.0);
+c2<int const*> c2v3(&ci);
+};
+
+enum F
+{
+ F_A,
+ F_B,
+ F_C
+};
+
+template <class C>
+bool
+check(C* c)
+{ return c->val() == 0; }
+
+bool
+check_enum(int i)
+{ return i > 0; }
+
+struct anonymous_union_container {
+ union {
+ struct astruct {
+ int a;
+ };
+ int b;
+ } u;
+};
+
+anonymous_union_container anonymous_union_var;
+
+#ifdef __GNUC__
+#define ALWAYS_INLINE __attribute__((always_inline))
+#else
+#define ALWAYS_INLINE
+#endif
+
+static inline ALWAYS_INLINE int
+inline_func_1(int i)
+{ return i * 17; }
+
+int
+main()
+{
+ F f = F_A;
+ one::G g = one::G_A;
+ check_enum(f);
+ check_enum(g);
+ check(&one::c1v);
+ check(&two::c2v1);
+ check(&two::c2v2);
+ check(&two::c2v3);
+ anonymous_union_var.u.b = inline_func_1(3) - 51;
+ return anonymous_union_var.u.b;
+}
diff --git a/gcc/testsuite/g++.dg/debug/nullptr01.C b/gcc/testsuite/g++.dg/debug/nullptr01.C
index ab08588f2ba..63c16ac8f0e 100644
--- a/gcc/testsuite/g++.dg/debug/nullptr01.C
+++ b/gcc/testsuite/g++.dg/debug/nullptr01.C
@@ -1,5 +1,5 @@
// Test that debugging backends don't crash on NULLPTR_TYPE.
-// { dg-options "-std=c++0x" }
+// { dg-options "-std=c++0x -fabi-version=0" }
typedef decltype(nullptr) nullptr_t;
@@ -12,4 +12,4 @@ template <> nullptr_t g(A<nullptr_t>)
nullptr_t local;
}
// { dg-final { scan-assembler "_Z1fDn" } }
-// { dg-final { scan-assembler "_Z1gI1AIDnEES1_T_" } }
+// { dg-final { scan-assembler "_Z1gI1AIDnEEDnT_" } }
diff --git a/gcc/testsuite/g++.dg/diagnostic/method1.C b/gcc/testsuite/g++.dg/diagnostic/method1.C
index 4a781047ef8..0e7c580924a 100644
--- a/gcc/testsuite/g++.dg/diagnostic/method1.C
+++ b/gcc/testsuite/g++.dg/diagnostic/method1.C
@@ -10,7 +10,7 @@ template <class T>
void
bar ()
{
- A::foo ().anything; // { dg-error "request for member" }
+ A::foo ().anything; // { dg-error "without object" }
}
void
@@ -18,5 +18,3 @@ baz ()
{
bar <int> ();
}
-
-// { dg-prune-output "without object" }
diff --git a/gcc/testsuite/g++.dg/ext/label14.C b/gcc/testsuite/g++.dg/ext/label14.C
new file mode 100644
index 00000000000..d1a8b0d5299
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/label14.C
@@ -0,0 +1,17 @@
+// PR c++/53812
+// { dg-do compile }
+// { dg-options "" }
+
+struct T { T () : t(0) {}; int t; ~T (); };
+struct S { void *operator [] (T); };
+void bar (S &, void *, void *);
+
+void
+foo (S &x, T &y)
+{
+ bar (x, &&l1, &&l2);
+l1:
+ goto *x[y];
+l2:
+ bar (x, &&l1, &&l2);
+}
diff --git a/gcc/testsuite/g++.dg/ext/vector17.C b/gcc/testsuite/g++.dg/ext/vector17.C
new file mode 100644
index 00000000000..eb389be01a8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/vector17.C
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+typedef double __attribute__((vector_size(1024) )) vec;
+
+template <class T>
+void f (T *p)
+{
+ p->~T();
+}
+void g (vec *p)
+{
+ f(p);
+}
diff --git a/gcc/testsuite/g++.dg/gomp/for-19.C b/gcc/testsuite/g++.dg/gomp/for-19.C
index 4441a29b7ec..966ad96306d 100644
--- a/gcc/testsuite/g++.dg/gomp/for-19.C
+++ b/gcc/testsuite/g++.dg/gomp/for-19.C
@@ -8,7 +8,7 @@ template <typename T>
void
f1 (void)
{
-#pragma omp for // { dg-error "forbids incrementing a pointer of type" }
+#pragma omp for
for (void *q = (void *)p; q < (void *) (p + 4); q++) // { dg-error "forbids incrementing a pointer of type" }
;
}
diff --git a/gcc/testsuite/g++.dg/init/mutable1.C b/gcc/testsuite/g++.dg/init/mutable1.C
new file mode 100644
index 00000000000..af99ee0bf86
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/mutable1.C
@@ -0,0 +1,20 @@
+// PR c++/54026
+// { dg-final { scan-assembler-not "rodata" } }
+
+void non_const(int *);
+
+template <typename T>
+struct Foo {
+ T x;
+ mutable int y;
+ void func() const { non_const(&y); }
+};
+
+struct Bar {
+ int x;
+ mutable int y;
+ void func() const { non_const(&y); }
+};
+
+const Foo<int> foo = { 1, 2 };
+const Bar bar = { 3, 4 };
diff --git a/gcc/testsuite/g++.dg/init/new38.C b/gcc/testsuite/g++.dg/init/new38.C
new file mode 100644
index 00000000000..1672f229d64
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new38.C
@@ -0,0 +1,54 @@
+// { dg-do compile }
+
+void
+large_array_char(int n)
+{
+ new char[n]
+ [1ULL << (sizeof(void *) * 4)]
+ [1ULL << (sizeof(void *) * 4)]; // { dg-error "size of array" }
+}
+
+template <typename T>
+void
+large_array_char_template(int n)
+{
+ new char[n]
+ [1ULL << (sizeof(void *) * 4)]
+ [1ULL << (sizeof(void *) * 4)]; // { dg-error "size of array" }
+}
+
+
+template <typename T>
+void
+large_array_template1(int n)
+{
+ new T[n] // { dg-error "size of array is too large" }
+ [(1ULL << (sizeof(void *) * 4)) / sizeof(T)]
+ [1ULL << (sizeof(void *) * 4)];
+}
+
+template <typename T>
+void
+large_array_template2(int n)
+{
+ new T[n] // { dg-error "size of array is too large" }
+ [(1ULL << (sizeof(void *) * 4)) / sizeof(T)]
+ [1ULL << (sizeof(void *) * 4)];
+}
+
+template <typename T>
+void
+large_array_template3(int n)
+{
+ new T[n] // { dg-error "size of array is too large" }
+ [(1ULL << (sizeof(void *) * 4)) / sizeof(T)]
+ [1ULL << (sizeof(void *) * 4)];
+}
+
+void
+call_large_array_template(int n)
+{
+ large_array_template1<char>(n);
+ large_array_template2<int>(n);
+ large_array_template3<double>(n);
+}
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
new file mode 100644
index 00000000000..f274ebb7b9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -0,0 +1,68 @@
+// Testcase for overflow handling in operator new[].
+// { dg-do run }
+
+#include <stdlib.h>
+#include <stdexcept>
+
+struct without_new {
+ char bar[256];
+};
+
+struct with_new {
+ char bar[256];
+ void *operator new[] (size_t sz)
+ {
+ if (sz != -1)
+ abort ();
+ throw std::bad_alloc();
+ }
+};
+
+template <typename T>
+inline void
+test (size_t s)
+{
+ try {
+ new T[s];
+ abort ();
+ } catch (std::bad_alloc &) {
+ }
+}
+
+template <typename T>
+void
+test_noopt (size_t s) __attribute__((noinline));
+
+template <typename T>
+void
+test_noopt (size_t s)
+{
+ __asm__ ("");
+ test<T> (s);
+}
+
+template <typename T>
+void
+all_tests ()
+{
+ test<T>(-1);
+ test<T>(size_t(-1) / sizeof (T) + 1);
+ test<T>(size_t(-1) / sizeof (T) + 2);
+ test_noopt<T>(-1);
+ test_noopt<T>(size_t(-1) / sizeof (T) + 1);
+ test_noopt<T>(size_t(-1) / sizeof (T) + 2);
+}
+
+int
+main ()
+{
+ try {
+ ::operator new(size_t(-1));
+ abort ();
+ } catch (std::bad_alloc &) {
+ }
+ all_tests<without_new> ();
+ all_tests<with_new> ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/lookup/ambig1.C b/gcc/testsuite/g++.dg/lookup/ambig1.C
index 1cf9ab4f0a2..c027428899b 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig1.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig1.C
@@ -7,7 +7,7 @@
// Bug 16889:Undetected ambiguity.
struct B {
- int f(); // { dg-error "int B::f" "" }
+ int f(); // { dg-message "int B::f" "" }
};
struct B1 : virtual B {};
diff --git a/gcc/testsuite/g++.dg/lookup/ambig2.C b/gcc/testsuite/g++.dg/lookup/ambig2.C
index 4d423d17069..505eda60d55 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig2.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig2.C
@@ -7,7 +7,7 @@
// Bug 16889:Undetected ambiguity.
struct B {
- int i; // { dg-error "int B::i" "" }
+ int i; // { dg-message "int B::i" "" }
};
struct B1 : virtual B {};
diff --git a/gcc/testsuite/g++.dg/lookup/ambig3.C b/gcc/testsuite/g++.dg/lookup/ambig3.C
index 7a0a8377a91..5a3f5b94929 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig3.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig3.C
@@ -7,7 +7,7 @@
// Follow on from Bug 16889:Undetected ambiguity.
struct B {
- int f(); // { dg-error "int B::f" "" }
+ int f(); // { dg-message "int B::f" "" }
};
struct B1 : virtual B {};
diff --git a/gcc/testsuite/g++.dg/lookup/ambig4.C b/gcc/testsuite/g++.dg/lookup/ambig4.C
index 3a74f7d1c76..1f3daa1e5e4 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig4.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig4.C
@@ -4,10 +4,10 @@
namespace N
{
- int i; // { dg-error "i" }
+ int i; // { dg-message "i" }
}
-int i; // { dg-error "i" }
+int i; // { dg-message "i" }
using namespace N;
diff --git a/gcc/testsuite/g++.dg/lookup/ambig5.C b/gcc/testsuite/g++.dg/lookup/ambig5.C
index cebec277910..fb48ff3c8ac 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig5.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig5.C
@@ -4,10 +4,10 @@
namespace N
{
- namespace M {} // { dg-error "M" }
+ namespace M {} // { dg-message "M" }
}
-namespace M {} // { dg-error "M" }
+namespace M {} // { dg-message "M" }
using namespace N;
using namespace M; // { dg-error "namespace-name|ambiguous" }
diff --git a/gcc/testsuite/g++.dg/lookup/crash3.C b/gcc/testsuite/g++.dg/lookup/crash3.C
index 24a3360ba33..5b58e8ed559 100644
--- a/gcc/testsuite/g++.dg/lookup/crash3.C
+++ b/gcc/testsuite/g++.dg/lookup/crash3.C
@@ -4,8 +4,8 @@
typedef __SIZE_TYPE__ size_t;
-struct A { void *operator new(size_t s){} }; // { dg-error "operator new" }
-struct B { void *operator new(size_t s){} }; // { dg-error "operator new" }
+struct A { void *operator new(size_t s){} }; // { dg-message "operator new" }
+struct B { void *operator new(size_t s){} }; // { dg-message "operator new" }
struct C : A,B {};
diff --git a/gcc/testsuite/g++.dg/lookup/strong-using-2.C b/gcc/testsuite/g++.dg/lookup/strong-using-2.C
index 38bb54c2f58..d9f99a8d128 100644
--- a/gcc/testsuite/g++.dg/lookup/strong-using-2.C
+++ b/gcc/testsuite/g++.dg/lookup/strong-using-2.C
@@ -5,12 +5,12 @@
namespace foo {
inline namespace foo_impl {
- class T; // { dg-error "T" "" }
+ class T; // { dg-message "T" "" }
}
}
namespace bar {
inline namespace bar_impl {
- class T; // { dg-error "T" "" }
+ class T; // { dg-message "T" "" }
}
using namespace foo;
}
diff --git a/gcc/testsuite/g++.dg/lookup/using16.C b/gcc/testsuite/g++.dg/lookup/using16.C
index a396afb973c..8a36504caf2 100644
--- a/gcc/testsuite/g++.dg/lookup/using16.C
+++ b/gcc/testsuite/g++.dg/lookup/using16.C
@@ -3,12 +3,12 @@
// { dg-do compile }
namespace M {
- struct S {}; // { dg-error "struct M::S" "candidate 1" }
+ struct S {}; // { dg-message "struct M::S" "candidate 1" }
}
namespace N {
int S;
- struct S {}; // { dg-error "struct N::S" "candidate 2" }
+ struct S {}; // { dg-message "struct N::S" "candidate 2" }
}
using namespace M;
diff --git a/gcc/testsuite/g++.dg/lookup/using17.C b/gcc/testsuite/g++.dg/lookup/using17.C
index b98b21a0cda..9019dabf5df 100644
--- a/gcc/testsuite/g++.dg/lookup/using17.C
+++ b/gcc/testsuite/g++.dg/lookup/using17.C
@@ -3,11 +3,11 @@
// { dg-do compile }
namespace M {
- struct S {}; // { dg-error "struct M::S" "candidate 2" }
+ struct S {}; // { dg-message "struct M::S" "candidate 2" }
}
int S;
-struct S {}; // { dg-error "candidates are: struct S" "candidate 1" }
+struct S {}; // { dg-message "candidates are: struct S" "candidate 1" }
using namespace M;
diff --git a/gcc/testsuite/g++.dg/lookup/using18.C b/gcc/testsuite/g++.dg/lookup/using18.C
index 37557148ea6..d64fbc6e916 100644
--- a/gcc/testsuite/g++.dg/lookup/using18.C
+++ b/gcc/testsuite/g++.dg/lookup/using18.C
@@ -4,12 +4,12 @@
namespace N1 {
void f ();
- struct f; // { dg-error "" "candidate" }
+ struct f; // { dg-message "" "candidate" }
}
namespace N2 {
void f (int);
- struct f; // { dg-error "" "candidate" }
+ struct f; // { dg-message "" "candidate" }
}
namespace M {
diff --git a/gcc/testsuite/g++.dg/lookup/using20.C b/gcc/testsuite/g++.dg/lookup/using20.C
index dc1d293a2ee..f1be41fea95 100644
--- a/gcc/testsuite/g++.dg/lookup/using20.C
+++ b/gcc/testsuite/g++.dg/lookup/using20.C
@@ -2,14 +2,14 @@
namespace A
{
- int i; // { dg-error "i" }
+ int i; // { dg-message "i" }
}
using namespace A;
namespace B
{
namespace B2
{
- int i; // { dg-error "i" }
+ int i; // { dg-message "i" }
}
using namespace B2;
}
diff --git a/gcc/testsuite/g++.dg/lookup/using53.C b/gcc/testsuite/g++.dg/lookup/using53.C
new file mode 100644
index 00000000000..a108b50ef89
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/using53.C
@@ -0,0 +1,53 @@
+// PR c++/20420
+
+class B
+{
+protected:
+ enum E { E1, E2, E3 };
+ struct S { int i; E e; };
+};
+
+class D : private B
+{
+public:
+ using B::E; // { dg-message "previous" }
+ using B::S; // { dg-message "previous" }
+
+private:
+ enum E {}; // { dg-error "conflicts" }
+ struct S {}; // { dg-error "conflicts" }
+};
+
+template<typename T>
+class BT
+{
+protected:
+ enum E { E1, E2, E3 };
+ struct S { int i; E e; };
+};
+
+template<typename T>
+class DT : private BT<T>
+{
+public:
+ using BT<T>::E; // { dg-message "previous" }
+ using BT<T>::S; // { dg-message "previous" }
+
+private:
+ enum E {}; // { dg-error "conflicts" }
+ struct S {}; // { dg-error "conflicts" }
+};
+
+template class DT<int>;
+
+namespace N
+{
+ int i;
+}
+
+void
+f ()
+{
+ using N::i;
+ using N::i; // { dg-error "declared" }
+}
diff --git a/gcc/testsuite/g++.dg/lto/20090303_0.C b/gcc/testsuite/g++.dg/lto/20090303_0.C
index 36c8588bb55..88bd6ad9beb 100644
--- a/gcc/testsuite/g++.dg/lto/20090303_0.C
+++ b/gcc/testsuite/g++.dg/lto/20090303_0.C
@@ -1,4 +1,5 @@
/* { dg-lto-do run } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC}} } */
/* { dg-lto-options {{-flto -flto-partition=1to1}} { target sparc*-*-* } } */
/* { dg-suppress-ld-options {-fPIC} } */
diff --git a/gcc/testsuite/g++.dg/lto/pr51992_0.C b/gcc/testsuite/g++.dg/lto/pr51992_0.C
index deb232cc2a9..f75abd281a6 100644
--- a/gcc/testsuite/g++.dg/lto/pr51992_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr51992_0.C
@@ -5,6 +5,7 @@ template<typename Enum>
class QFlags
{
int i;
+public:
inline QFlags(Enum f) : i(f) {}
};
class QString {};
diff --git a/gcc/testsuite/g++.dg/opt/enum2.C b/gcc/testsuite/g++.dg/opt/enum2.C
index 6300896cff9..40a496e535d 100644
--- a/gcc/testsuite/g++.dg/opt/enum2.C
+++ b/gcc/testsuite/g++.dg/opt/enum2.C
@@ -1,8 +1,8 @@
// PR c++/43680
// Test that we don't make excessively aggressive assumptions about what
// values an enum variable can have.
+// { dg-do run { target fpic } }
// { dg-options "-O2 -fPIC" }
-// { dg-do run }
extern "C" void abort ();
diff --git a/gcc/testsuite/g++.dg/opt/longbranch1.C b/gcc/testsuite/g++.dg/opt/longbranch1.C
index df545012cc7..a64a57aea2a 100644
--- a/gcc/testsuite/g++.dg/opt/longbranch1.C
+++ b/gcc/testsuite/g++.dg/opt/longbranch1.C
@@ -26,10 +26,6 @@
muchcode; muchcode; muchcode; muchcode; muchcode; muchcode; \
muchcode; muchcode; muchcode; muchcode; muchcode; muchcode
-#ifdef __mips
-/* See PR 51931. */
-__attribute__((nomips16))
-#endif
int
main (int argc, char **argv)
{
diff --git a/gcc/testsuite/g++.dg/other/armv7m-1.C b/gcc/testsuite/g++.dg/other/armv7m-1.C
new file mode 100644
index 00000000000..6aa686b10cd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/armv7m-1.C
@@ -0,0 +1,69 @@
+/* { dg-do run { target arm*-*-* } } */
+/* Test Armv7m interrupt routines. */
+#include <stdlib.h>
+
+#ifdef __ARM_ARCH_7M__
+void __attribute__((interrupt))
+foo(void)
+{
+ long long n;
+ long p;
+ asm volatile ("" : "=r" (p) : "0" (&n));
+ if (p & 4)
+ abort ();
+ return;
+}
+
+void __attribute__((interrupt))
+bar(void)
+{
+ throw 42;
+}
+
+int main()
+{
+ int a;
+ int before;
+ int after;
+ volatile register int sp asm("sp");
+
+ asm volatile ("mov %0, sp\n"
+ "blx %2\n"
+ "mov %1, sp\n"
+ : "=&r" (before), "=r" (after) : "r" (foo)
+ : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
+ if (before != after)
+ abort();
+ asm volatile ("mov %0, sp\n"
+ "sub sp, sp, #4\n"
+ "blx %2\n"
+ "add sp, sp, #4\n"
+ "mov %1, sp\n"
+ : "=&r" (before), "=r" (after) : "r" (foo)
+ : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
+ if (before != after)
+ abort();
+ before = sp;
+ try
+ {
+ bar();
+ }
+ catch (int i)
+ {
+ if (i != 42)
+ abort();
+ }
+ catch (...)
+ {
+ abort();
+ }
+ if (before != sp)
+ abort();
+ exit(0);
+}
+#else
+int main()
+{
+ exit (0);
+}
+#endif
diff --git a/gcc/testsuite/g++.dg/other/array7.C b/gcc/testsuite/g++.dg/other/array7.C
new file mode 100644
index 00000000000..72322f06308
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/array7.C
@@ -0,0 +1,9 @@
+// PR c++/54038
+
+extern const char *const v[];
+typedef char T;
+void foo (const T *const[]);
+struct A
+{
+ static const char *const a[];
+};
diff --git a/gcc/testsuite/g++.dg/other/enum3.C b/gcc/testsuite/g++.dg/other/enum3.C
new file mode 100644
index 00000000000..23d6c83576e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/enum3.C
@@ -0,0 +1,10 @@
+// PR c++/53848
+
+extern "C"
+{
+ struct s {
+ enum {
+ e = 0
+ } f;
+ };
+}
diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C
index 680035371d1..197497fcfe9 100644
--- a/gcc/testsuite/g++.dg/other/i386-2.C
+++ b/gcc/testsuite/g++.dg/other/i386-2.C
@@ -1,5 +1,5 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm" } */
+/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx" } */
/* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h,
diff --git a/gcc/testsuite/g++.dg/other/i386-3.C b/gcc/testsuite/g++.dg/other/i386-3.C
index b9216823813..780731e0358 100644
--- a/gcc/testsuite/g++.dg/other/i386-3.C
+++ b/gcc/testsuite/g++.dg/other/i386-3.C
@@ -1,5 +1,5 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm" } */
+/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx" } */
/* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h,
diff --git a/gcc/testsuite/g++.dg/other/packed1.C b/gcc/testsuite/g++.dg/other/packed1.C
index ac586c6c002..74e4962a473 100644
--- a/gcc/testsuite/g++.dg/other/packed1.C
+++ b/gcc/testsuite/g++.dg/other/packed1.C
@@ -1,4 +1,4 @@
-// { dg-do run { xfail sh-*-* lm32-*-* } }
+// { dg-do run { xfail lm32-*-* } }
// NMS:2003-04-21 this fails on strict aligned architectures again,
// the patch was reverted because it broke something more important.
diff --git a/gcc/testsuite/g++.dg/other/pr53811.C b/gcc/testsuite/g++.dg/other/pr53811.C
new file mode 100644
index 00000000000..c00b7f6d4dd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/pr53811.C
@@ -0,0 +1,29 @@
+// { dg-do compile }
+// { dg-options "-mcmodel=large" { target { { i?86-*-* x86_64-*-* } && lp64 } } }
+
+struct ICCStringClass
+{
+ virtual void *
+ CreateString (const char *fromText) = 0;
+};
+
+struct AGSCCDynamicObject
+{
+ virtual void
+ Unserialize (int index, const char *serializedData, int dataSize) = 0;
+};
+
+
+struct ScriptString:AGSCCDynamicObject, ICCStringClass
+{
+ virtual void *CreateString (const char *fromText);
+};
+
+const char *
+CreateNewScriptString (const char *fromText, bool reAllocate = true);
+
+void *
+ScriptString::CreateString (const char *fromText)
+{
+ return (void *) CreateNewScriptString (fromText);
+}
diff --git a/gcc/testsuite/g++.dg/other/ptrmem10.C b/gcc/testsuite/g++.dg/other/ptrmem10.C
index a17df7fb362..ff8c8434115 100644
--- a/gcc/testsuite/g++.dg/other/ptrmem10.C
+++ b/gcc/testsuite/g++.dg/other/ptrmem10.C
@@ -3,7 +3,7 @@
template <class C, void (C::*M) ()>
static
-void foo(void *obj) // { dg-message "note" }
+void foo(void *obj)
{
C *p = static_cast<C*>(obj);
(p->*M)();
@@ -13,8 +13,7 @@ template <class C>
static void
bar(C *c, void (C::*m) ())
{
- foo<C,m>((void *)c);// { dg-error "(not a valid template arg|pointer-to-member|no matching fun|could not convert)" }
- // { dg-message "candidate" "candidate note" { target *-*-* } 16 }
+ foo<C,m>((void *)c);// { dg-error "(not a valid template arg|pointer-to-member|no matching fun|could not convert|constant)" }
}
struct S
diff --git a/gcc/testsuite/g++.dg/other/ptrmem11.C b/gcc/testsuite/g++.dg/other/ptrmem11.C
index e73164eef26..e18abddd677 100644
--- a/gcc/testsuite/g++.dg/other/ptrmem11.C
+++ b/gcc/testsuite/g++.dg/other/ptrmem11.C
@@ -5,7 +5,7 @@ struct A {};
template <int A::* p>
int
-foo(A* q) // { dg-message "note" }
+foo(A* q)
{
return q->*p;
}
@@ -14,8 +14,7 @@ template <typename T>
int
bar(int T::* p)
{
- return foo<p>(0);// { dg-error "(not a valid template arg|no matching func|pointer-to-member|could not convert)" }
- // { dg-message "candidate" "candidate note" { target *-*-* } 17 }
+ return foo<p>(0);// { dg-error "(not a valid template arg|no matching func|pointer-to-member|could not convert|constant)" }
}
int i = bar<A>(0);
diff --git a/gcc/testsuite/g++.dg/overload/defarg1.C b/gcc/testsuite/g++.dg/overload/defarg1.C
index 5d34a457dc2..fcbb43b7bf2 100644
--- a/gcc/testsuite/g++.dg/overload/defarg1.C
+++ b/gcc/testsuite/g++.dg/overload/defarg1.C
@@ -1,11 +1,11 @@
// PR c++/5247
template<typename T>
-int foo (T t, int = foo(T()));
+int foo (T t, int = foo(T())); // { dg-error "recursive" }
struct A { };
int main()
{
- foo(A()); // { dg-error "default argument" }
+ foo(A()); // { dg-message "default argument" }
}
diff --git a/gcc/testsuite/g++.dg/overload/defarg6.C b/gcc/testsuite/g++.dg/overload/defarg6.C
new file mode 100644
index 00000000000..b750184c376
--- /dev/null
+++ b/gcc/testsuite/g++.dg/overload/defarg6.C
@@ -0,0 +1,7 @@
+class A
+{
+ int i;
+ A(int i): i(i) {} // { dg-error "private" }
+};
+
+void f (A = 1) { } // { dg-error "context" }
diff --git a/gcc/testsuite/g++.dg/parse/access8.C b/gcc/testsuite/g++.dg/parse/access8.C
index 45f4be70288..205b7f2712a 100644
--- a/gcc/testsuite/g++.dg/parse/access8.C
+++ b/gcc/testsuite/g++.dg/parse/access8.C
@@ -5,8 +5,8 @@ class foo
typedef int memfun; // { dg-error "private" }
};
-template<foo::memfun>
-struct fm_obj { }; // { dg-error "context" }
+template<foo::memfun> // { dg-error "context" }
+struct fm_obj { };
template <typename T = foo::memfun> // { dg-error "context" }
struct S {};
diff --git a/gcc/testsuite/g++.dg/parse/ambig4.C b/gcc/testsuite/g++.dg/parse/ambig4.C
index 868f07cf783..02e39b80f0c 100644
--- a/gcc/testsuite/g++.dg/parse/ambig4.C
+++ b/gcc/testsuite/g++.dg/parse/ambig4.C
@@ -1,12 +1,12 @@
// PR c++/20293
-namespace hide { // { dg-error "hide" }
+namespace hide { // { dg-message "hide" }
int k;
}
namespace {
int i;
- namespace hide { // { dg-error "hide" }
+ namespace hide { // { dg-message "hide" }
int j;
}
}
diff --git a/gcc/testsuite/g++.dg/parse/ambig6.C b/gcc/testsuite/g++.dg/parse/ambig6.C
index 8f37feaea68..0bd2302fe00 100644
--- a/gcc/testsuite/g++.dg/parse/ambig6.C
+++ b/gcc/testsuite/g++.dg/parse/ambig6.C
@@ -1,7 +1,7 @@
// PR c++/48046
-namespace N1 { typedef int T; } // { dg-error "" }
-namespace N2 { typedef float T; } // { dg-error "" }
+namespace N1 { typedef int T; } // { dg-message "" }
+namespace N2 { typedef float T; } // { dg-message "" }
int main()
{
diff --git a/gcc/testsuite/g++.dg/parse/crash22.C b/gcc/testsuite/g++.dg/parse/crash22.C
index eaf4d1a5c08..ba8870376fa 100644
--- a/gcc/testsuite/g++.dg/parse/crash22.C
+++ b/gcc/testsuite/g++.dg/parse/crash22.C
@@ -4,17 +4,17 @@
// PR 19030: ICE
// Origin: Volker Reichelt <reichelt@gcc.gnu.org>
-struct A; // { dg-error "A" }
+struct A; // { dg-message "A" }
namespace N
{
- struct A; // { dg-error "A" }
+ struct A; // { dg-message "A" }
}
using namespace N;
-int A::i; // { dg-error "ambiguous|declared here" "" }
-int A::i; // { dg-error "ambiguous|redefinition of" "" }
+int A::i; // { dg-message "ambiguous|declared here" "" }
+int A::i; // { dg-message "ambiguous|redefinition of" "" }
namespace N
{
diff --git a/gcc/testsuite/g++.dg/parse/crash35.C b/gcc/testsuite/g++.dg/parse/crash35.C
index 4937cdc66e7..161edad32a2 100644
--- a/gcc/testsuite/g++.dg/parse/crash35.C
+++ b/gcc/testsuite/g++.dg/parse/crash35.C
@@ -3,5 +3,5 @@
struct a {};
-class foo : public a, a
-{ /* { dg-error "duplicate base type|at end of input" } */
+class foo : public a, a // { dg-error "duplicate base" }
+{ /* { dg-error "at end of input" } */
diff --git a/gcc/testsuite/g++.dg/parse/crash40.C b/gcc/testsuite/g++.dg/parse/crash40.C
index 410c2111eaa..6b67d8dfe10 100644
--- a/gcc/testsuite/g++.dg/parse/crash40.C
+++ b/gcc/testsuite/g++.dg/parse/crash40.C
@@ -26,7 +26,7 @@ template<bool> struct S {
S(unsigned int = BBB::foo()->AAA::get()); /* { dg-error "is not a base of" } */
};
template<bool> struct SS {
- SS(unsigned int = BBB::foo()->get());
+ SS(unsigned int = BBB::foo()->get()); /* { dg-error "within this context" } */
};
void bar()
@@ -38,5 +38,5 @@ void bar()
i.C::foo<0>(); /* { dg-error "which is of non-class type" } */
S<false> s; /* { dg-error "default argument" } */
- SS<false> ss; /* { dg-error "within this context" } */
+ SS<false> ss;
}
diff --git a/gcc/testsuite/g++.dg/parse/crash53.C b/gcc/testsuite/g++.dg/parse/crash53.C
index de6d412f1d1..c19feafc189 100644
--- a/gcc/testsuite/g++.dg/parse/crash53.C
+++ b/gcc/testsuite/g++.dg/parse/crash53.C
@@ -1,9 +1,9 @@
// PR c++/35112
-namespace X { struct A; } // { dg-error "struct X::A" }
-namespace Y { struct A; } // { dg-error "struct Y::A" }
-namespace Z { struct A; } // { dg-error "struct Z::A" }
-namespace W { struct A; } // { dg-error "struct W::A" }
+namespace X { struct A; } // { dg-message "struct X::A" }
+namespace Y { struct A; } // { dg-message "struct Y::A" }
+namespace Z { struct A; } // { dg-message "struct Z::A" }
+namespace W { struct A; } // { dg-message "struct W::A" }
using namespace X;
using namespace Y;
diff --git a/gcc/testsuite/g++.dg/parse/enum9.C b/gcc/testsuite/g++.dg/parse/enum9.C
new file mode 100644
index 00000000000..559db31d51b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/enum9.C
@@ -0,0 +1,13 @@
+// PR c++/53995
+
+enum E1 { e };
+void f(E1);
+
+struct A {
+ int i1,i2,i3,i4,i5,i6,i7,i8,i9,i10;
+ void g();
+ void h();
+};
+
+void A::g() { enum E2 { e }; }
+void A::h() { f(e); }
diff --git a/gcc/testsuite/g++.dg/parse/non-dependent2.C b/gcc/testsuite/g++.dg/parse/non-dependent2.C
index fee66d495a4..a2ae81d7f8d 100644
--- a/gcc/testsuite/g++.dg/parse/non-dependent2.C
+++ b/gcc/testsuite/g++.dg/parse/non-dependent2.C
@@ -8,14 +8,14 @@
template <class T>
struct Foo {
int j; // we never see this one.
- int k; // { dg-error "Foo" "" }
+ int k; // { dg-message "Foo" "" }
};
struct Baz
{
int j;
- int k; // { dg-error "candidates" "" }
+ int k; // { dg-message "candidates" "" }
};
diff --git a/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc/testsuite/g++.dg/plugin/selfassign.c
index feb4130e532..2c417744f9e 100644
--- a/gcc/testsuite/g++.dg/plugin/selfassign.c
+++ b/gcc/testsuite/g++.dg/plugin/selfassign.c
@@ -46,7 +46,7 @@ get_real_ref_rhs (tree expr)
e.g. D.1797_14, we need to grab the rhs of its SSA def
statement (i.e. foo.x). */
tree vdecl = SSA_NAME_VAR (expr);
- if (DECL_ARTIFICIAL (vdecl)
+ if ((!vdecl || DECL_ARTIFICIAL (vdecl))
&& !gimple_nop_p (SSA_NAME_DEF_STMT (expr)))
{
gimple def_stmt = SSA_NAME_DEF_STMT (expr);
@@ -86,6 +86,8 @@ get_real_ref_rhs (tree expr)
static tree
get_non_ssa_expr (tree expr)
{
+ if (!expr)
+ return NULL_TREE;
switch (TREE_CODE (expr))
{
case VAR_DECL:
@@ -149,7 +151,7 @@ get_non_ssa_expr (tree expr)
case SSA_NAME:
{
tree vdecl = SSA_NAME_VAR (expr);
- if (DECL_ARTIFICIAL (vdecl)
+ if ((!vdecl || DECL_ARTIFICIAL (vdecl))
&& !gimple_nop_p (SSA_NAME_DEF_STMT (expr)))
{
gimple def_stmt = SSA_NAME_DEF_STMT (expr);
@@ -209,7 +211,7 @@ warn_self_assign (gimple stmt)
if (TREE_CODE (lhs) == SSA_NAME)
{
lhs = SSA_NAME_VAR (lhs);
- if (DECL_ARTIFICIAL (lhs))
+ if (!lhs || DECL_ARTIFICIAL (lhs))
return;
}
diff --git a/gcc/testsuite/g++.dg/template/access23.C b/gcc/testsuite/g++.dg/template/access23.C
new file mode 100644
index 00000000000..054cf9201ce
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/access23.C
@@ -0,0 +1,16 @@
+template <class T>
+class A
+{
+ typedef T I;
+};
+
+template <class T>
+void f(typename T::I);
+
+template <class T>
+void f(int);
+
+int main()
+{
+ f<A<float> > (1);
+}
diff --git a/gcc/testsuite/g++.dg/template/access7.C b/gcc/testsuite/g++.dg/template/access7.C
index bd38e4e0f4e..7d1812732c3 100644
--- a/gcc/testsuite/g++.dg/template/access7.C
+++ b/gcc/testsuite/g++.dg/template/access7.C
@@ -14,5 +14,5 @@ typename A::T* f (A) { // { dg-error "this context" }
}
void g () {
- f (S<int> ()); // { dg-message "required" }
+ f (S<int> ()); // { dg-message "required|no match" }
}
diff --git a/gcc/testsuite/g++.dg/template/array23.C b/gcc/testsuite/g++.dg/template/array23.C
new file mode 100644
index 00000000000..6ede8b07773
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/array23.C
@@ -0,0 +1,12 @@
+// PR c++/53989
+
+struct Foo {
+ int value;
+ typedef Foo Foo2;
+ static Foo2 const foos[2];
+};
+
+template <class T> void g (T);
+void bar() {
+ g(&Foo::foos);
+}
diff --git a/gcc/testsuite/g++.dg/template/crash108.C b/gcc/testsuite/g++.dg/template/crash108.C
index 408d36a9456..b6f49a19e58 100644
--- a/gcc/testsuite/g++.dg/template/crash108.C
+++ b/gcc/testsuite/g++.dg/template/crash108.C
@@ -1,5 +1,5 @@
// PR c++/50861
-template<class T> struct A {A(int b=k(0));}; // { dg-error "arguments" }
-void f(int k){A<int> a;} // // { dg-error "parameter|declared" }
+template<class T> struct A {A(int b=k(0));}; // { dg-error "parameter|arguments" }
+void f(int k){A<int> a;} // // { dg-error "declared" }
// { dg-message "note" "note" { target *-*-* } 3 }
diff --git a/gcc/testsuite/g++.dg/template/crash89.C b/gcc/testsuite/g++.dg/template/crash89.C
index f860018621e..f4cdaf9d9bd 100644
--- a/gcc/testsuite/g++.dg/template/crash89.C
+++ b/gcc/testsuite/g++.dg/template/crash89.C
@@ -1,8 +1,10 @@
// PR c++/34397
-template<typename T, int = T()[0]> struct A // { dg-error "subscripted|template" }
+template<typename T, int = T()[0]> struct A // { dg-error "subscripted" }
{
typedef A<T> B;
};
A<int> a; // { dg-error "declaration" }
+
+// { dg-prune-output "template argument 2 is invalid" }
diff --git a/gcc/testsuite/g++.dg/template/crash92.C b/gcc/testsuite/g++.dg/template/crash92.C
index c0219c4a3e8..1153ef61934 100644
--- a/gcc/testsuite/g++.dg/template/crash92.C
+++ b/gcc/testsuite/g++.dg/template/crash92.C
@@ -1,7 +1,7 @@
// PR c++/42055
-template<typename T> void foo(T, T); // { dg-error "candidates|template" }
+template<typename T> void foo(T, T); // { dg-message "candidates|template" }
-template<typename T> void foo(T, int); // { dg-error "template" }
+template<typename T> void foo(T, int); // { dg-message "template" }
template void foo(int, int); // { dg-error "ambiguous template specialization" }
diff --git a/gcc/testsuite/g++.dg/template/current-inst1.C b/gcc/testsuite/g++.dg/template/current-inst1.C
new file mode 100644
index 00000000000..8f42ef84440
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/current-inst1.C
@@ -0,0 +1,19 @@
+// PR c++/53549
+
+template<typename T>
+struct C2
+{
+ int operator()();
+
+ template<int> struct F2;
+};
+
+
+template<typename T>
+template<int I>
+struct C2<T>::F2 : C2<T>
+{
+ using C2<T>::operator();
+};
+
+C2<int>::F2<42> f;
diff --git a/gcc/testsuite/g++.dg/template/defarg6.C b/gcc/testsuite/g++.dg/template/defarg6.C
index f4d84685abe..15848a13694 100644
--- a/gcc/testsuite/g++.dg/template/defarg6.C
+++ b/gcc/testsuite/g++.dg/template/defarg6.C
@@ -8,7 +8,7 @@ enum X{ a, b, c };
struct C
{
- static void func (X &ref = a); // { dg-error "default argument" "" }
+ static void func (X &ref = a); // { dg-error "" }
};
template <typename T>
@@ -21,5 +21,7 @@ void Foo (X & obj)
{
D<int>::func (obj);
- D<int>::func (); // { dg-error "default argument" "" }
+ D<int>::func (); // { dg-error "" }
}
+
+// { dg-prune-output "passing argument" }
diff --git a/gcc/testsuite/g++.dg/template/enum7.C b/gcc/testsuite/g++.dg/template/enum7.C
new file mode 100644
index 00000000000..8c464a795d8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/enum7.C
@@ -0,0 +1,8 @@
+// PR c++/53524
+
+template <class T> struct A { enum EA { ea }; };
+template <class T, class U> struct B {
+ enum EB { eb1 = A<T>::ea, eb2 = A<U>::ea, eb3 = 0 ? eb1 : eb2 };
+};
+
+B<int,char> b;
diff --git a/gcc/testsuite/g++.dg/template/inherit8.C b/gcc/testsuite/g++.dg/template/inherit8.C
index a9b2bdb5601..3176dc06d0b 100644
--- a/gcc/testsuite/g++.dg/template/inherit8.C
+++ b/gcc/testsuite/g++.dg/template/inherit8.C
@@ -4,9 +4,9 @@ template <typename T>
struct A
{
template <typename U>
- struct B : public A <B<U> >
+ struct B : public A <B<U> > // { dg-error "declaration" }
{
- struct C : public B<U>
+ struct C : public B<U> // { dg-error "incomplete" }
{
};
};
diff --git a/gcc/testsuite/g++.dg/template/injected1.C b/gcc/testsuite/g++.dg/template/injected1.C
index 58b86569387..58ec3cba6a3 100644
--- a/gcc/testsuite/g++.dg/template/injected1.C
+++ b/gcc/testsuite/g++.dg/template/injected1.C
@@ -1,6 +1,6 @@
// PR c++/13950, DR 176
-template <class T> struct Base { }; // { dg-error "" } candidate
+template <class T> struct Base { }; // { dg-message "" } candidate
struct D1: Base<void>
{
diff --git a/gcc/testsuite/g++.dg/template/overload10.C b/gcc/testsuite/g++.dg/template/overload10.C
index 088b9d291cb..84078bd8725 100644
--- a/gcc/testsuite/g++.dg/template/overload10.C
+++ b/gcc/testsuite/g++.dg/template/overload10.C
@@ -1,6 +1,6 @@
// PR c++40342
-template <typename T1, typename T2> int f(T1 *, const T2 *); // { dg-error "" }
-template <typename T1, typename T2> int f(const T1 *, T2 *); // { dg-error "" }
+template <typename T1, typename T2> int f(T1 *, const T2 *); // { dg-message "" }
+template <typename T1, typename T2> int f(const T1 *, T2 *); // { dg-message "" }
int (*p)(const int *, const int *) = f; // { dg-error "ambiguous" }
diff --git a/gcc/testsuite/g++.dg/template/param1.C b/gcc/testsuite/g++.dg/template/param1.C
index a8c3791254f..e3784736fc4 100644
--- a/gcc/testsuite/g++.dg/template/param1.C
+++ b/gcc/testsuite/g++.dg/template/param1.C
@@ -2,11 +2,11 @@
// Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
// { dg-do compile }
-template<int> struct A // { dg-error "declaration" }
+template<int> struct A
{
A();
};
-template<int N, char> A<N>::A() {} // { dg-error "invalid use of incomplete type" }
+template<int N, char> A<N>::A() {} // { dg-error "got 2 template parameters|1 required" }
A<0> a;
diff --git a/gcc/testsuite/g++.dg/template/ref6.C b/gcc/testsuite/g++.dg/template/ref6.C
new file mode 100644
index 00000000000..2e1254ae35b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ref6.C
@@ -0,0 +1,15 @@
+// PR c++/53816
+
+template <typename T>
+struct S { int v () const; };
+template <typename T>
+struct V : public S<T> {};
+struct U
+{
+ V<int> v;
+ template<typename T>
+ struct W
+ {
+ W (U const &x) { V<int> const &v = x.v; v.v(); }
+ };
+};
diff --git a/gcc/testsuite/g++.dg/template/sfinae10.C b/gcc/testsuite/g++.dg/template/sfinae10.C
index 3b1d26bea8c..574feddb3ab 100644
--- a/gcc/testsuite/g++.dg/template/sfinae10.C
+++ b/gcc/testsuite/g++.dg/template/sfinae10.C
@@ -81,19 +81,19 @@ struct Y { };
struct Z {
private:
- Z operator+(); // { dg-error "is private" }
- Z operator-(); // { dg-error "is private" }
- int operator*(); // { dg-error "is private" }
- Z operator~(); // { dg-error "is private" }
- bool operator!(); // { dg-error "is private" }
- Z& operator++(); // { dg-error "is private" }
- Z& operator--(); // { dg-error "is private" }
- Z& operator++(int); // { dg-error "is private" }
- Z& operator--(int); // { dg-error "is private" }
+ Z operator+();
+ Z operator-();
+ int operator*();
+ Z operator~();
+ bool operator!();
+ Z& operator++();
+ Z& operator--();
+ Z& operator++(int);
+ Z& operator--(int);
};
// has_unary_plus
-DEFINE_PREFIX_UNARY_TRAIT(has_unary_plus, +); // { dg-error "within this context" }
+DEFINE_PREFIX_UNARY_TRAIT(has_unary_plus, +);
STATIC_ASSERT((has_unary_plus<int>::value));
STATIC_ASSERT((!has_unary_plus<int X::*>::value));
STATIC_ASSERT((has_unary_plus<W>::value));
@@ -101,7 +101,7 @@ STATIC_ASSERT((has_unary_plus<X>::value));
STATIC_ASSERT((!has_unary_plus<Y>::value));
// is_negatable
-DEFINE_PREFIX_UNARY_TRAIT(is_negatable, -); // { dg-error "within this context" }
+DEFINE_PREFIX_UNARY_TRAIT(is_negatable, -);
STATIC_ASSERT((is_negatable<int>::value));
STATIC_ASSERT((!is_negatable<int X::*>::value));
STATIC_ASSERT((is_negatable<W>::value));
@@ -109,7 +109,7 @@ STATIC_ASSERT((is_negatable<X>::value));
STATIC_ASSERT((!is_negatable<Y>::value));
// is_dereferenceable
-DEFINE_PREFIX_UNARY_TRAIT(is_dereferenceable, *); // { dg-error "within this context" }
+DEFINE_PREFIX_UNARY_TRAIT(is_dereferenceable, *);
STATIC_ASSERT((!is_dereferenceable<int>::value));
STATIC_ASSERT((is_dereferenceable<int*>::value));
STATIC_ASSERT((is_dereferenceable<W>::value));
@@ -117,7 +117,7 @@ STATIC_ASSERT((is_dereferenceable<X>::value));
STATIC_ASSERT((!is_dereferenceable<Y>::value));
// has_bitwise_not
-DEFINE_PREFIX_UNARY_TRAIT(has_bitwise_not, ~); // { dg-error "within this context" }
+DEFINE_PREFIX_UNARY_TRAIT(has_bitwise_not, ~);
STATIC_ASSERT((has_bitwise_not<int>::value));
STATIC_ASSERT((!has_bitwise_not<int*>::value));
STATIC_ASSERT((has_bitwise_not<W>::value));
@@ -125,7 +125,7 @@ STATIC_ASSERT((has_bitwise_not<X>::value));
STATIC_ASSERT((!has_bitwise_not<Y>::value));
// has_truth_not
-DEFINE_PREFIX_UNARY_TRAIT(has_truth_not, !); // { dg-error "within this context" }
+DEFINE_PREFIX_UNARY_TRAIT(has_truth_not, !);
STATIC_ASSERT((has_truth_not<int>::value));
STATIC_ASSERT((has_truth_not<int*>::value));
STATIC_ASSERT((has_truth_not<W>::value));
@@ -133,7 +133,7 @@ STATIC_ASSERT((has_truth_not<X>::value));
STATIC_ASSERT((!has_truth_not<Y>::value));
// has_preincrement
-DEFINE_PREFIX_UNARY_TRAIT(has_preincrement, ++); // { dg-error "within this context" }
+DEFINE_PREFIX_UNARY_TRAIT(has_preincrement, ++);
STATIC_ASSERT((has_preincrement<int>::value));
STATIC_ASSERT((has_preincrement<int*>::value));
STATIC_ASSERT((!has_preincrement<int X::*>::value));
@@ -142,7 +142,7 @@ STATIC_ASSERT((has_preincrement<X>::value));
STATIC_ASSERT((!has_preincrement<Y>::value));
// has_predecrement
-DEFINE_PREFIX_UNARY_TRAIT(has_predecrement, --); // { dg-error "within this context" }
+DEFINE_PREFIX_UNARY_TRAIT(has_predecrement, --);
STATIC_ASSERT((has_predecrement<int>::value));
STATIC_ASSERT((has_predecrement<int*>::value));
STATIC_ASSERT((!has_predecrement<int X::*>::value));
@@ -151,7 +151,7 @@ STATIC_ASSERT((has_predecrement<X>::value));
STATIC_ASSERT((!has_predecrement<Y>::value));
// has_postincrement
-DEFINE_POSTFIX_UNARY_TRAIT(has_postincrement, ++); // { dg-error "within this context" }
+DEFINE_POSTFIX_UNARY_TRAIT(has_postincrement, ++);
STATIC_ASSERT((has_postincrement<int>::value));
STATIC_ASSERT((has_postincrement<int*>::value));
STATIC_ASSERT((!has_postincrement<int X::*>::value));
@@ -160,7 +160,7 @@ STATIC_ASSERT((has_postincrement<X>::value));
STATIC_ASSERT((!has_postincrement<Y>::value));
// has_postdecrement
-DEFINE_POSTFIX_UNARY_TRAIT(has_postdecrement, --); // { dg-error "within this context" }
+DEFINE_POSTFIX_UNARY_TRAIT(has_postdecrement, --);
STATIC_ASSERT((has_postdecrement<int>::value));
STATIC_ASSERT((has_postdecrement<int*>::value));
STATIC_ASSERT((!has_postdecrement<int X::*>::value));
@@ -169,13 +169,12 @@ STATIC_ASSERT((has_postdecrement<X>::value));
STATIC_ASSERT((!has_postdecrement<Y>::value));
// Check for private members
-STATIC_ASSERT((has_unary_plus<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((is_negatable<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((is_dereferenceable<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((has_bitwise_not<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((has_truth_not<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((has_preincrement<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((has_predecrement<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((has_postincrement<Z>::value)); // { dg-message "required from here" }
-STATIC_ASSERT((has_postdecrement<Z>::value)); // { dg-message "required from here" }
-
+STATIC_ASSERT((!has_unary_plus<Z>::value));
+STATIC_ASSERT((!is_negatable<Z>::value));
+STATIC_ASSERT((!is_dereferenceable<Z>::value));
+STATIC_ASSERT((!has_bitwise_not<Z>::value));
+STATIC_ASSERT((!has_truth_not<Z>::value));
+STATIC_ASSERT((!has_preincrement<Z>::value));
+STATIC_ASSERT((!has_predecrement<Z>::value));
+STATIC_ASSERT((!has_postincrement<Z>::value));
+STATIC_ASSERT((!has_postdecrement<Z>::value));
diff --git a/gcc/testsuite/g++.dg/template/sfinae6_neg.C b/gcc/testsuite/g++.dg/template/sfinae6_neg.C
index 9b7bdfd134d..6ed3d226784 100644
--- a/gcc/testsuite/g++.dg/template/sfinae6_neg.C
+++ b/gcc/testsuite/g++.dg/template/sfinae6_neg.C
@@ -14,14 +14,14 @@ template<typename T> struct enable_if<false, T> { };
template<typename F, typename T1, typename T2>
typename enable_if<sizeof(create_a<F>()(create_a<T1>(), create_a<T2>()), 1),
yes_type>::type
- check_is_callable2(type<F>, type<T1>, type<T2>); // { dg-error "within this context" "" { target c++11 } }
+ check_is_callable2(type<F>, type<T1>, type<T2>);
no_type check_is_callable2(...);
template<typename F, typename T1, typename T2 = T1>
struct is_callable2
{
- static const bool value = // { dg-error "within this context" }
+ static const bool value =
(sizeof(check_is_callable2(type<F>(), type<T1>(), type<T2>()))
== sizeof(yes_type));
};
@@ -52,7 +52,7 @@ struct F {
void operator()(A, A);
private:
- void operator()(B, B); // { dg-error "is private" }
+ void operator()(B, B);
};
-STATIC_ASSERT((is_callable2<F, B, B>::value));
+STATIC_ASSERT((!is_callable2<F, B, B>::value));
diff --git a/gcc/testsuite/g++.dg/template/spec25.C b/gcc/testsuite/g++.dg/template/spec25.C
index 3f641fe5a21..385d19ada0c 100644
--- a/gcc/testsuite/g++.dg/template/spec25.C
+++ b/gcc/testsuite/g++.dg/template/spec25.C
@@ -1,10 +1,10 @@
namespace N {
template <typename T>
struct S {
- void f() {}
+ void f() {} // { dg-error "definition" }
};
}
namespace K {
- template <> void N::S<char>::f() {} // { dg-error "namespace|definition" }
+ template <> void N::S<char>::f() {} // { dg-error "different namespace" }
}
diff --git a/gcc/testsuite/g++.dg/template/typedef11.C b/gcc/testsuite/g++.dg/template/typedef11.C
index c7c7c989f72..a08d7b3a939 100644
--- a/gcc/testsuite/g++.dg/template/typedef11.C
+++ b/gcc/testsuite/g++.dg/template/typedef11.C
@@ -18,8 +18,8 @@ template <int>
int
bar ()
{
- Beta<0>::Y i = 0;
- return Alpha::X ();
+ Beta<0>::Y i = 0; // { dg-error "within this context" }
+ return Alpha::X (); // { dg-error "within this context" }
}
-int i = bar<0> (); // { dg-error "within this context" }
+int i = bar<0> ();
diff --git a/gcc/testsuite/g++.dg/template/typedef39.C b/gcc/testsuite/g++.dg/template/typedef39.C
new file mode 100644
index 00000000000..71d8bdb1bef
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/typedef39.C
@@ -0,0 +1,15 @@
+// PR c++/50852
+
+template<int d> class A;
+template<class T> struct B {typedef int K;typedef int L;};
+template<class U,class V> struct C
+{
+ typedef typename U::L X;
+ typedef A<X::a-1> W; // { dg-error "not a member" }
+};
+template<class U,int d> struct D
+{
+ typedef typename U::L X;
+ typedef A<X::a-1> W; // the error should really be on this line
+};
+template class D<B<A<1> >,3>;
diff --git a/gcc/testsuite/g++.dg/template/using21.C b/gcc/testsuite/g++.dg/template/using21.C
index 7f61f854749..65313aaf692 100644
--- a/gcc/testsuite/g++.dg/template/using21.C
+++ b/gcc/testsuite/g++.dg/template/using21.C
@@ -4,25 +4,34 @@
template<typename T>
struct A
{
- int foo;
+ int foo;
- struct B : A<T>
- {
- using A::foo;
- };
+ struct B;
+ struct C;
+ struct D;
+ struct E;
+};
- struct C : A
- {
- using A::foo;
- };
+template <class T>
+struct A<T>::B : A<T>
+{
+ using A::foo;
+};
- struct D : A<T>
- {
- using A<T>::foo;
- };
+template <class T>
+struct A<T>::C : A
+{
+ using A::foo;
+};
- struct E : A
- {
- using A<T>::foo;
- };
+template <class T>
+struct A<T>::D : A<T>
+{
+ using A<T>::foo;
+};
+
+template <class T>
+struct A<T>::E : A
+{
+ using A<T>::foo;
};
diff --git a/gcc/testsuite/g++.dg/template/using22.C b/gcc/testsuite/g++.dg/template/using22.C
index b456e62e895..9ea3d8a1e49 100644
--- a/gcc/testsuite/g++.dg/template/using22.C
+++ b/gcc/testsuite/g++.dg/template/using22.C
@@ -6,28 +6,39 @@ template <class T> struct Z {};
template<typename T>
struct A
{
- struct B : A<T>
- {
- using A::nonexist; // { dg-error "no members matching" }
- };
+ struct B;
+ struct C;
+ struct D;
+ struct E;
+ struct F;
+};
- struct C : A
- {
- using A::nonexist; // { dg-error "no members matching" }
- };
+template <class T>
+struct A<T>::B : A<T>
+{
+ using A::nonexist; // { dg-error "no members matching" }
+};
- struct D : A<T>
- {
- using A<T>::nonexist; // { dg-error "no members matching" }
- };
+template <class T>
+struct A<T>::C : A
+{
+ using A::nonexist; // { dg-error "no members matching" }
+};
- struct E : A
- {
- using A<T>::nonexist; // { dg-error "no members matching" }
- };
+template <class T>
+struct A<T>::D : A<T>
+{
+ using A<T>::nonexist; // { dg-error "no members matching" }
+};
- struct F : Z<T>
- {
- using Z<T>::nonexist;
- };
+template <class T>
+struct A<T>::E : A
+{
+ using A<T>::nonexist; // { dg-error "no members matching" }
+};
+
+template <class T>
+struct A<T>::F : Z<T>
+{
+ using Z<T>::nonexist;
};
diff --git a/gcc/testsuite/g++.dg/torture/pr50672.C b/gcc/testsuite/g++.dg/torture/pr50672.C
new file mode 100644
index 00000000000..614a35b6c82
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr50672.C
@@ -0,0 +1,22 @@
+// { dg-do compile }
+
+struct A
+{
+ bool isHint();
+};
+class B
+{
+ void makeLine( int *) const;
+ void drawLine() const; A* to() const;
+ void _print() const;
+};
+A a;
+void B::makeLine(int *p1) const
+{
+ if (a.isHint() && to()->isHint()) ;
+ else {
+ if (p1) B::drawLine(); else B::_print();
+ return;
+ }
+ if (p1) B::drawLine(); else B::_print();
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr53321.C b/gcc/testsuite/g++.dg/torture/pr53321.C
new file mode 100644
index 00000000000..40a2de731d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr53321.C
@@ -0,0 +1,36 @@
+// { dg-do compile }
+// { dg-require-profiling "-fprofile-generate" }
+// { dg-options "-fprofile-generate" }
+
+typedef long unsigned int size_t;
+
+extern "C"
+{
+ extern void *memcpy (void *__dest, __const void *__src, size_t __n);
+}
+
+extern char *src, *sources;
+extern int n_sources;
+
+static void
+find_source (const char *file_name)
+{
+ memcpy (src, sources, n_sources * sizeof (*sources));
+}
+
+extern const char *gcov_read_string (void);
+
+static void read_graph_file (void)
+{
+ find_source (gcov_read_string ());
+}
+
+static void process_file (void)
+{
+ read_graph_file ();
+}
+
+int main ()
+{
+ process_file ();
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr53970.C b/gcc/testsuite/g++.dg/torture/pr53970.C
new file mode 100644
index 00000000000..53cbc1f855a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr53970.C
@@ -0,0 +1,17 @@
+// { dg-do run }
+
+#pragma pack(1)
+struct mystruct {
+ char c;
+ unsigned long l[1024];
+};
+#pragma pack()
+
+int main(int argc, char **argv)
+{
+ mystruct *a = new mystruct;
+ unsigned long i;
+ for (i = 0; i < 1024; ++i)
+ a->l[i] = 0xdeadbeaf;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr53844.C b/gcc/testsuite/g++.dg/tree-ssa/pr53844.C
new file mode 100644
index 00000000000..0be29d86cbf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr53844.C
@@ -0,0 +1,78 @@
+// { dg-do compile }
+// { dg-options "-O2 -fdump-tree-optimized-vops" }
+
+struct VBase;
+
+//Very minimal numeric vector class where Base provides the policy
+template<typename Base=VBase>
+struct Vector : public Base{
+
+ inline Vector(const Base& b)
+ :Base(b)
+ {
+ }
+
+ //Assignment from any other sort of Vector
+ template<typename Base2>
+ void operator= (const Vector<Base2>& from)
+ {
+ for(int i=0; i<100; i++){
+ (*this)[i]=from[i];
+ }
+ }
+};
+
+
+//Base class to represent pointer as a Vector
+struct VBase{
+ double * const my_data;
+
+ double& operator[](int i) {
+ return my_data[i];
+ }
+
+ const double& operator[](int i) const {
+ return my_data[i];
+ }
+};
+
+//Base class providing very minimalistic expression template
+template<class B2> struct ScalarMulExpr
+{
+ const int& mul;
+ const Vector<B2>& vec;
+
+ int size() const
+ {
+ return vec.size();
+ }
+
+ double operator[](int i) const
+ {
+ return vec[i]*mul;
+ }
+
+ ScalarMulExpr(const Vector<B2>& vec_, const int& m)
+ :mul(m),vec(vec_)
+ {
+ }
+};
+
+//Allow vector to be multiplied by a scalar
+template<class B2>
+Vector<ScalarMulExpr<B2> > operator*(const Vector<B2>& lhs, const int& rhs)
+{
+ return ScalarMulExpr<B2>(lhs, rhs);
+}
+
+//Test function producing suboptimal asm code
+void test(const Vector<>& in, Vector<>& out, int i)
+{
+ out=in*1*1*1*1*1*1*1*1*1*1*1;
+}
+
+// There should be a single store remaining, inside the loops. All
+// dead stores to unused temporaries should have been removed.
+
+// { dg-final { scan-tree-dump-times "VDEF" 1 "optimized" } }
+// { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-17.C b/gcc/testsuite/g++.dg/warn/Wunused-var-17.C
new file mode 100644
index 00000000000..01650e13a4f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-17.C
@@ -0,0 +1,4 @@
+// PR c++/10416
+// { dg-options "-Wunused" }
+
+void f () { struct atend { ~atend () { __builtin_printf("leaving f\n"); } } a; }
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C b/gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C
index 9d4edc60a24..6b8260d418b 100644
--- a/gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C
+++ b/gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C
@@ -12,15 +12,15 @@
// keywords: inheritance, ambiguity resolution, members
struct base_0 {
- enum { base_member }; // { dg-error "" } candidate (26, 30)
+ enum { base_member }; // { dg-message "" } candidate (26, 30)
};
struct base_1 {
- int base_member; // { dg-error "" } candidate (26, 34)
+ int base_member; // { dg-message "" } candidate (26, 34)
};
struct base_2 {
- int base_member (); // { dg-error "" } candidate (30, 34)
+ int base_member (); // { dg-message "" } candidate (30, 34)
};
struct derived_0 : public base_0, public base_1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/overload20.C b/gcc/testsuite/g++.old-deja/g++.jason/overload20.C
index f5db6a20fce..ef8504b2aff 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/overload20.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/overload20.C
@@ -4,8 +4,8 @@
void f (char *);
void f (int);
struct A {
- void f (); // { dg-error "" } candidate
- void f (int); // { dg-error "" } candidate
+ void f (); // { dg-message "" } candidate
+ void f (int); // { dg-message "" } candidate
void g () {
void (*p)(char *) = f; // { dg-error "" } no matching function in scope
}
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/ambig1.C b/gcc/testsuite/g++.old-deja/g++.martin/ambig1.C
index 1ccc217a477..f2a7f1e2f4b 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/ambig1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/ambig1.C
@@ -2,12 +2,12 @@
//Based on a report by Bill Currie <bcurrie@tssc.co.nz>
struct foo {
protected:
- int x; // { dg-error "" } candidate
+ int x; // { dg-message "" } candidate
};
struct bar {
public:
- int x(); // { dg-error "" } candidate
+ int x(); // { dg-message "" } candidate
};
struct foobar: public foo, public bar {
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/typedef2.C b/gcc/testsuite/g++.old-deja/g++.martin/typedef2.C
index be1bbcbf7f1..fa31867654e 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/typedef2.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/typedef2.C
@@ -3,5 +3,5 @@
// Check implicit conversion from string constants into typedefs
typedef char CHAR;
-void f2(CHAR *s="");
+void f2(CHAR *s=""); // { dg-warning "deprecated" }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/pmf3.C b/gcc/testsuite/g++.old-deja/g++.mike/pmf3.C
index 8dee9278f62..5ee1e343a2a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/pmf3.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/pmf3.C
@@ -6,9 +6,9 @@ struct Fooey {
void h(double dx);
};
-void Fooey::f(char*) { } // { dg-error "" } candidate
-void Fooey::f(int) { } // { dg-error "" } candidate
-void Fooey::f(float) { } // { dg-error "" } candidate
+void Fooey::f(char*) { } // { dg-message "" } candidate
+void Fooey::f(int) { } // { dg-message "" } candidate
+void Fooey::f(float) { } // { dg-message "" } candidate
void Fooey::h(double zahl) { }
int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C b/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
index 75c8723c70f..69a4fa5dcb7 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
@@ -6,8 +6,8 @@
// Based on bug report by JDonner <jdonner@schedsys.com>
struct foo {
- static int bar(); // { dg-error "foo::bar" }
- void bar(int); // { dg-error "foo::bar" }
+ static int bar(); // { dg-message "foo::bar" }
+ void bar(int); // { dg-message "foo::bar" }
};
/* gcc emits a hard error without -pedantic, and a warning with
diff --git a/gcc/testsuite/g++.old-deja/g++.other/ambig1.C b/gcc/testsuite/g++.old-deja/g++.other/ambig1.C
index f3fe0a8dd8e..b18c5290d6e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/ambig1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/ambig1.C
@@ -1,15 +1,15 @@
// { dg-do assemble }
struct A {
- int operator ++(); // { dg-error "" } candidates
- void operator ()(); // { dg-error "" } candidates
- void operator delete(void*); // { dg-error "" } candidates
+ int operator ++(); // { dg-message "" } candidates
+ void operator ()(); // { dg-message "" } candidates
+ void operator delete(void*); // { dg-message "" } candidates
};
struct B {
- int operator ++(int); // { dg-error "" } candidates
- void operator ()(); // { dg-error "" } candidates
- void operator delete(void*); // { dg-error "" } candidates
+ int operator ++(int); // { dg-message "" } candidates
+ void operator ()(); // { dg-message "" } candidates
+ void operator delete(void*); // { dg-message "" } candidates
void f();
};
diff --git a/gcc/testsuite/g++.old-deja/g++.other/lineno2.C b/gcc/testsuite/g++.old-deja/g++.other/lineno2.C
index 3735d6481ee..d6aca8b9cfd 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/lineno2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/lineno2.C
@@ -2,9 +2,9 @@
// Submitted by Nathan Sidwell <nathan@acm.org>
// Bug: g++ wasn't listing candidates for a failed conversion.
-void f(int, double); // { dg-error "" } candidate
-void f(double, int); // { dg-error "" } candidate
-void f(int); // { dg-error "" } candidate
+void f(int, double); // { dg-message "" } candidate
+void f(double, int); // { dg-message "" } candidate
+void f(int); // { dg-message "" } candidate
int
main ()
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash58.C b/gcc/testsuite/g++.old-deja/g++.pt/crash58.C
index 0ce3d81723d..f0b609a9183 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash58.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash58.C
@@ -6,9 +6,9 @@
// bug 147. We ICE'd on an unprocessed LOOKUP_EXPR during tsubsting
namespace EManip {
- template <class T> void do_assign(T* d); // { dg-error "" } candidate
+ template <class T> void do_assign(T* d); // { dg-message "" } candidate
}
-template <class T> void do_assign(T* d); // { dg-error "" } candidate
+template <class T> void do_assign(T* d); // { dg-message "" } candidate
template <class T>
struct MatrixC
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/koenig1.C b/gcc/testsuite/g++.old-deja/g++.pt/koenig1.C
index 03b58587c5c..c58bd6eab19 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/koenig1.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/koenig1.C
@@ -12,7 +12,7 @@ struct A {
template <int s>
static void g();
template <int s>
-void f(); // { dg-error "" } candiate
+void f(); // { dg-message "" } candiate
static void f_plus ()
{
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/overload5.C b/gcc/testsuite/g++.old-deja/g++.pt/overload5.C
index 1bb2d448f98..50febb2e7aa 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/overload5.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/overload5.C
@@ -1,6 +1,6 @@
// { dg-do assemble }
-template <class T> void foo(); // { dg-error "" } candidate
+template <class T> void foo(); // { dg-message "" } candidate
void (*bar)() = foo<void>;
void (*baz)() = foo; // { dg-error "" } can't deduce T
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/impint.C b/gcc/testsuite/g++.old-deja/g++.warn/impint.C
index 1c7f0eb66b1..7ccc73d1fdb 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/impint.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/impint.C
@@ -16,9 +16,9 @@ struct X
void foo (int);
void wibble (int);
void wibble (int, int);
-void punk (int = 3.5);
+void punk (int = 3.5); // { dg-warning "" } double to int
void rock ();
-void rock (int, int = 3.5);
+void rock (int, int = 3.5); // { dg-warning "" } double to int
void fn ()
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/20000326-1.c b/gcc/testsuite/gcc.c-torture/compile/20000326-1.c
index 71ed149c8ed..3b38106a50b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20000326-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20000326-1.c
@@ -2,22 +2,21 @@ long sys_reboot(int magic1, int magic2, int cmd, void * arg)
{
switch (cmd) {
case 0x89ABCDEF:
- break;
+ return 1;
case 0x00000000:
- break;
+ return 2;
case 0xCDEF0123:
- break;
+ return 3;
case 0x4321FEDC:
- break;
+ return 4;
case 0xA1B2C3D4:
- break;
+ return 5;
default:
- break;
+ return 0;
};
- return 0;
}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
index e833fb044c6..127c4daec45 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
@@ -21,10 +21,6 @@
#define C1024(x,y) C256(x,y) C256(x+16,y) C256(x+32,y) C256(x+48,y)
#define C4096(x,y) C1024(x,y) C1024(x,y+16) C1024(x,y+32) C1024(x,y+48)
-#ifdef __mips
-/* See PR 51931. */
-__attribute__((nomips16))
-#endif
unsigned foo(int x[64], int y[64])
{
C4096(x,y);
diff --git a/gcc/testsuite/gcc.c-torture/compile/20101216-1.c b/gcc/testsuite/gcc.c-torture/compile/20101216-1.c
new file mode 100644
index 00000000000..0c58898c13f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20101216-1.c
@@ -0,0 +1,32 @@
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+typedef union
+{
+ double value;
+ struct
+ {
+ __uint32_t msw;
+ __uint32_t lsw;
+ } parts;
+} ieee_double_shape_type;
+two52= 4.50359962737049600000e+15,
+w6 = -1.63092934096575273989e-03;
+double sin_pi(double x)
+{
+ double y,z;
+ __int32_t n,ix;
+ieee_double_shape_type gh_u;
+ gh_u.value = (x);
+(ix) = gh_u.parts.msw;
+ if(ix<0x43300000)
+ z = y+two52;
+ ieee_double_shape_type gl_u;
+ gl_u.value = (z);
+ (n) = gl_u.parts.lsw;
+ n &= 1;
+ switch (n)
+ {
+ case 0:
+__kernel_sin();
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20120524-1.c b/gcc/testsuite/gcc.c-torture/compile/20120524-1.c
new file mode 100644
index 00000000000..021756b0526
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20120524-1.c
@@ -0,0 +1,4 @@
+ char CJPAT_Packet[1508] = {};
+void build_packet(int port, char *packet) {
+ memcpy(packet, CJPAT_Packet, sizeof(CJPAT_Packet));
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20120727-1.c b/gcc/testsuite/gcc.c-torture/compile/20120727-1.c
new file mode 100644
index 00000000000..91c9aa10fc8
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20120727-1.c
@@ -0,0 +1,13 @@
+/* { dg-options "-mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */
+
+union {
+ char *p;
+ float f;
+} u;
+
+void
+f (void)
+{
+ u.p = "";
+ u.f += 1.1f;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20120727-2.c b/gcc/testsuite/gcc.c-torture/compile/20120727-2.c
new file mode 100644
index 00000000000..c2c45d03c2f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20120727-2.c
@@ -0,0 +1,13 @@
+/* { dg-options "-mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */
+
+union {
+ char *p;
+ double d;
+} u;
+
+void
+f (void)
+{
+ u.p = "";
+ u.d += 1.1;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr38621.c b/gcc/testsuite/gcc.c-torture/compile/pr38621.c
new file mode 100644
index 00000000000..746d32836be
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr38621.c
@@ -0,0 +1,16 @@
+/* PR target/38621 */
+struct s
+{
+ char a[512];
+ int b;
+ int c;
+};
+
+long long
+foo (struct s *p, int m, int r)
+{
+ if (r == m)
+ p->b = 3;
+ p->c = 1;
+ return m;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr39423-1.c b/gcc/testsuite/gcc.c-torture/compile/pr39423-1.c
new file mode 100644
index 00000000000..34ebb66381a
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr39423-1.c
@@ -0,0 +1,22 @@
+/* PR target/39423 */
+
+int
+foo (const char *name, int nmlen, char *flags)
+{
+ const char *nonspc;
+ int len, n, lfn;
+ int needlfn[2], dotspc[2];
+ unsigned char locale[2];
+ for (nonspc = &name[nmlen - 1]; nonspc >= name && *nonspc == ' '; ++n)
+ {
+ if (!nmlen)
+ {
+ needlfn[name >= nonspc] = !0, dotspc[n != 0] =
+ locale[0], --n, name += len, nmlen -= len;
+ }
+ }
+ if (!lfn && ((dotspc[0] == ' ' && !(len & 0x0010)) || dotspc[0] == '.'))
+ return 22;
+ if (!(needlfn[0] || needlfn[1]))
+ *flags |= 0x02;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr39423-2.c b/gcc/testsuite/gcc.c-torture/compile/pr39423-2.c
new file mode 100644
index 00000000000..5307846d7e0
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr39423-2.c
@@ -0,0 +1,57 @@
+/* PR target/39423 */
+
+typedef unsigned short uint16_t;
+
+typedef struct
+{
+ short x, y;
+} P;
+
+typedef struct
+{
+ uint16_t w, h;
+} D;
+
+typedef struct
+{
+ P p;
+ D s;
+} A;
+
+typedef struct
+{
+ uint16_t f;
+} W;
+
+typedef struct
+{
+ void* w;
+ D s;
+} T;
+
+extern void* foo00 (void*, void*);
+
+void foo01 (W* w)
+{
+ void* it;
+ uint16_t c, i;
+ T* cl;
+ T* rs;
+ T* t;
+ uint16_t rh = 0;
+ uint16_t v = !(w->f & 0x8000);
+ A a = { };
+
+ for (c = 0, it = foo00 (w, 0); it; it = foo00 (w, it), c++);
+
+ for (it = foo00 (w, 0), i = 0; i <= c; it = foo00 (w, it), i++, cl++)
+ {
+ if (i)
+ for (t = rs; t < cl; t++)
+ *((uint16_t*)&t->s + ((!v) ? 1 : 0)) = rh;
+
+ rh = (rh > ((*((uint16_t*)&a.s + ((!v) ? 1 : 0)))))
+ ? rh
+ : ((*((uint16_t*)&a.s + ((!v) ? 1 : 0))));
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr50380.c b/gcc/testsuite/gcc.c-torture/compile/pr50380.c
index ffd044263e5..3f03cbbc31f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr50380.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr50380.c
@@ -1,12 +1,22 @@
-/* This test used to get stuck in an infinite loop in find_comparison_args
- when compiling for MIPS at -O2. */
-
__attribute__ ((__noreturn__)) extern void fail (void);
char x;
+/* This used to get stuck in an infinite loop in find_comparison_args
+ when compiling this function for MIPS at -O2. */
+
void foo (const unsigned char y)
{
((void) (__builtin_expect((!! y == y), 1) ? 0 : (fail (), 0)));
x = ! y;
}
+
+/* This used to similarly get stuck when compiling for PowerPC at -O2. */
+
+int foo2 (int arg)
+{
+ if (arg != !arg)
+ fail ();
+ if (arg)
+ fail ();
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr53411.c b/gcc/testsuite/gcc.c-torture/compile/pr53411.c
new file mode 100644
index 00000000000..e88ecbc4ca2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr53411.c
@@ -0,0 +1,33 @@
+/* PR middle-end/53411 */
+
+int a, b, c, d, e, f, g, h;
+void fn1 (void);
+int fn2 (void);
+
+int
+fn3 (x)
+ int x;
+{
+ return a ? 0 : x;
+}
+
+void
+fn4 (char x)
+{
+ int i, j, k;
+ for (; e; e++)
+ if (fn2 ())
+ {
+ f = 1;
+ k = 0;
+ for (; k <= 1; k++)
+ {
+ j = ~x;
+ i = f * j;
+ h = (fn3 (i | 0 <= c ^ 9L) != b | d) & 8;
+ g = x | 1;
+ fn1 ();
+ }
+ }
+ c = x;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr53495.c b/gcc/testsuite/gcc.c-torture/compile/pr53495.c
new file mode 100644
index 00000000000..957013165a0
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr53495.c
@@ -0,0 +1,41 @@
+/* PR rtl-optimization/53495 */
+
+int a, b, c, d, e, g;
+static char
+fn1 (char p1, int p2)
+{
+ return p1 || p2 < 0 || p2 >= 1 || 1 >> p2 ? p1 : 0;
+}
+
+static long long fn2 (int *, int);
+static int fn3 ();
+void
+fn4 ()
+{
+ fn3 ();
+ fn2 (&a, d);
+}
+
+long long
+fn2 (int *p1, int p2)
+{
+ int f = -1L;
+ for (; c <= 1; c++)
+ {
+ *p1 = 0;
+ *p1 = fn1 (c, p2 ^ f);
+ }
+ a = 0;
+ e = p2;
+ return 0;
+}
+
+int
+fn3 ()
+{
+ b = 3;
+ for (; b; b--)
+ c++;
+ g = 0 >= c;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr53886.c b/gcc/testsuite/gcc.c-torture/compile/pr53886.c
new file mode 100644
index 00000000000..89b69663529
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr53886.c
@@ -0,0 +1,68 @@
+/* PR target/53886 */
+typedef struct asn1_string_st ASN1_BIT_STRING;
+typedef struct bignum_st BIGNUM;
+typedef struct ec_group_st EC_GROUP;
+typedef struct ec_key_st EC_KEY;
+
+struct ec_key_st
+{
+ EC_GROUP *group;
+ BIGNUM *priv_key;
+ unsigned int enc_flag;
+}
+X9_62_PENTANOMIAL;
+typedef struct ec_privatekey_st
+{
+ ASN1_BIT_STRING *publicKey;
+}
+EC_PRIVATEKEY;
+
+extern EC_PRIVATEKEY* EC_PRIVATEKEY_new (void);
+extern void EC_PRIVATEKEY_free (EC_PRIVATEKEY*);
+extern unsigned char* CRYPTO_realloc (char*,int,const char*,int);
+
+int
+i2d_ECPrivateKey (EC_KEY * a, unsigned char **out)
+{
+ int ret = 0, ok = 0;
+ unsigned char *buffer = 0;
+ unsigned buf_len = 0, tmp_len;
+ EC_PRIVATEKEY *priv_key = 0;
+ if (a == 0 || a->group == 0 || a->priv_key == 0)
+ {
+ ERR_put_error (16, (192), ((3 | 64)),
+ "",
+ 1234);
+ goto err;
+ }
+ if ((priv_key = EC_PRIVATEKEY_new ()) == 0)
+ {
+ ERR_put_error (16, (192), ((1 | 64)),
+ "",
+ 1241);
+ goto err;
+ }
+ if (!(a->enc_flag & 0x002))
+ {
+ if (priv_key->publicKey == 0)
+ {
+ goto err;
+ }
+ if (tmp_len > buf_len)
+ {
+ unsigned char *tmp_buffer =
+ CRYPTO_realloc ((char *) buffer, (int) tmp_len, "", 1293);
+ buffer = tmp_buffer;
+ }
+ }
+ if ((ret = i2d_EC_PRIVATEKEY (priv_key, out)) == 0)
+ {
+ }
+ ok = 1;
+err:
+ if (buffer)
+ CRYPTO_free (buffer);
+ if (priv_key)
+ EC_PRIVATEKEY_free (priv_key);
+ return (ok ? ret : 0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr54321.c b/gcc/testsuite/gcc.c-torture/compile/pr54321.c
new file mode 100644
index 00000000000..13adc78d345
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr54321.c
@@ -0,0 +1,12 @@
+/* PR tree-optimization/54321 */
+struct S { char s[0]; } *a;
+
+void
+foo (void)
+{
+ char *b = a->s;
+ int c = 0;
+ b[0] = 0;
+ while (++c < 9)
+ b[c] = 255;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/unalign-1.c b/gcc/testsuite/gcc.c-torture/compile/unalign-1.c
new file mode 100644
index 00000000000..350111fdff4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/unalign-1.c
@@ -0,0 +1,15 @@
+typedef struct __attribute__ ((__packed__))
+{
+ char valueField[2];
+} ptp_tlv_t;
+typedef struct __attribute__ ((__packed__))
+{
+ char stepsRemoved;
+ ptp_tlv_t tlv[1];
+} ptp_message_announce_t;
+int ptplib_send_announce(int sequenceId, int i)
+{
+ ptp_message_announce_t tx_packet;
+ ((long long *)tx_packet.tlv[0].valueField)[sequenceId] = i;
+ f(&tx_packet);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
index fcf8c071246..b98454e253e 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
@@ -15,9 +15,6 @@
#elif defined (__TMS320C6X__)
/* On TI C6X division by zero does not trap. */
# define DO_TEST 0
-#elif defined (__arm__)
- /* We cannot rely on division by zero generating a trap. */
-# define DO_TEST 0
#elif defined (__mips__) && !defined(__linux__)
/* MIPS divisions do trap by default, but libgloss targets do not
intercept the trap and raise a SIGFPE. The same is probably
@@ -32,6 +29,31 @@
/* Epiphany does not have hardware division, and the software implementation
has truly undefined behaviour for division by 0. */
# define DO_TEST 0
+#elif defined (__m68k__) && !defined(__linux__)
+ /* Attempting to trap division-by-zero in this way isn't likely to work on
+ bare-metal m68k systems. */
+# define DO_TEST 0
+#elif defined (__CRIS__)
+ /* No SIGFPE for CRIS integer division. */
+# define DO_TEST 0
+#elif defined (__arm__) && defined (__ARM_EABI__)
+# ifdef __ARM_ARCH_EXT_IDIV__
+ /* Hardware division instructions may not trap, and handle trapping
+ differently anyway. Skip the test if we have those instructions. */
+# define DO_TEST 0
+# else
+# include <signal.h>
+ /* ARM division-by-zero behaviour is to call a helper function, which
+ can do several different things, depending on requirements. Emulate
+ the behaviour of other targets here by raising SIGFPE. */
+int __attribute__((used))
+__aeabi_idiv0 (int return_value)
+{
+ raise (SIGFPE);
+ return return_value;
+}
+# define DO_TEST 1
+# endif
#else
# define DO_TEST 1
#endif
diff --git a/gcc/testsuite/gcc.c-torture/execute/20120808-1.c b/gcc/testsuite/gcc.c-torture/execute/20120808-1.c
new file mode 100644
index 00000000000..3cbab2ba843
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20120808-1.c
@@ -0,0 +1,37 @@
+extern void exit (int);
+extern void abort (void);
+
+volatile int i;
+unsigned char *volatile cp;
+unsigned char d[32] = { 0 };
+
+int
+main (void)
+{
+ unsigned char c[32] = { 0 };
+ unsigned char *p = d + i;
+ int j;
+ for (j = 0; j < 30; j++)
+ {
+ int x = 0xff;
+ int y = *++p;
+ switch (j)
+ {
+ case 1: x ^= 2; break;
+ case 2: x ^= 4; break;
+ case 25: x ^= 1; break;
+ default: break;
+ }
+ c[j] = y | x;
+ cp = p;
+ }
+ if (c[0] != 0xff
+ || c[1] != 0xfd
+ || c[2] != 0xfb
+ || c[3] != 0xff
+ || c[4] != 0xff
+ || c[25] != 0xfe
+ || cp != d + 30)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20120817-1.c b/gcc/testsuite/gcc.c-torture/execute/20120817-1.c
new file mode 100644
index 00000000000..8fb2820e896
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20120817-1.c
@@ -0,0 +1,14 @@
+typedef unsigned long long u64;
+unsigned long foo = 0;
+u64 f() __attribute__((noinline));
+
+u64 f() {
+ return ((u64)40) + ((u64) 24) * (int)(foo - 1);
+}
+
+int main ()
+{
+ if (f () != 16)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/bswap-1.c b/gcc/testsuite/gcc.c-torture/execute/bswap-1.c
new file mode 100644
index 00000000000..ff80c0559d4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/bswap-1.c
@@ -0,0 +1,51 @@
+/* Test __builtin_bswap64 . */
+
+unsigned long long g(unsigned long long a) __attribute__((noinline));
+unsigned long long g(unsigned long long a)
+{
+ return __builtin_bswap64(a);
+}
+
+
+unsigned long long f(unsigned long long c)
+{
+ union {
+ unsigned long long a;
+ unsigned char b[8];
+ } a, b;
+ a.a = c;
+ b.b[0] = a.b[7];
+ b.b[1] = a.b[6];
+ b.b[2] = a.b[5];
+ b.b[3] = a.b[4];
+ b.b[4] = a.b[3];
+ b.b[5] = a.b[2];
+ b.b[6] = a.b[1];
+ b.b[7] = a.b[0];
+ return b.a;
+}
+
+int main(void)
+{
+ unsigned long long i;
+ /* The rest of the testcase assumes 8 byte long long. */
+ if (sizeof(i) != sizeof(char)*8)
+ return 0;
+ if (f(0x12) != g(0x12))
+ __builtin_abort();
+ if (f(0x1234) != g(0x1234))
+ __builtin_abort();
+ if (f(0x123456) != g(0x123456))
+ __builtin_abort();
+ if (f(0x12345678ull) != g(0x12345678ull))
+ __builtin_abort();
+ if (f(0x1234567890ull) != g(0x1234567890ull))
+ __builtin_abort();
+ if (f(0x123456789012ull) != g(0x123456789012ull))
+ __builtin_abort();
+ if (f(0x12345678901234ull) != g(0x12345678901234ull))
+ __builtin_abort();
+ if (f(0x1234567890123456ull) != g(0x1234567890123456ull))
+ __builtin_abort();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/20020201-1.c b/gcc/testsuite/gcc.dg/20020201-1.c
index 6002c59819f..1cb2a878804 100644
--- a/gcc/testsuite/gcc.dg/20020201-1.c
+++ b/gcc/testsuite/gcc.dg/20020201-1.c
@@ -7,11 +7,7 @@
/* { dg-options "-fprofile-arcs" } */
/* { dg-do run { target native } } */
-extern void abort (void);
-extern void exit (int);
-
-int rand (void);
-void srand (unsigned int seed);
+#include <stdlib.h>
int globvar;
diff --git a/gcc/testsuite/gcc.dg/align-2.c b/gcc/testsuite/gcc.dg/align-2.c
index f5c00fd0c65..2001a153bac 100644
--- a/gcc/testsuite/gcc.dg/align-2.c
+++ b/gcc/testsuite/gcc.dg/align-2.c
@@ -1,5 +1,5 @@
/* PR 17962 */
-/* { dg-do compile } */
+/* { dg-do compile { target vect_natural_alignment } } */
/* { dg-options "" } */
typedef float v4 __attribute__((vector_size(sizeof(float)*4)));
diff --git a/gcc/testsuite/gcc.dg/attr-hotcold-1.c b/gcc/testsuite/gcc.dg/attr-hotcold-1.c
new file mode 100644
index 00000000000..f63a95c71c5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/attr-hotcold-1.c
@@ -0,0 +1,8 @@
+void f(void)
+{
+ goto A;
+ A: __attribute__((cold))
+ goto B;
+ B: __attribute__((hot))
+ return;
+}
diff --git a/gcc/testsuite/gcc.dg/builtin-unreachable-5.c b/gcc/testsuite/gcc.dg/builtin-unreachable-5.c
new file mode 100644
index 00000000000..f6fb4ac6f48
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/builtin-unreachable-5.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-fab" } */
+
+int
+foo (int a)
+{
+ if (a <= 0)
+ {
+ L1:
+ __builtin_unreachable ();
+ }
+
+ if (a > 2)
+ goto L1;
+
+ return a > 0;
+}
+
+/* { dg-final { scan-tree-dump-times "if \\(" 0 "fab" } } */
+/* { dg-final { scan-tree-dump-times "goto" 0 "fab" } } */
+/* { dg-final { scan-tree-dump-times "L1:" 0 "fab" } } */
+/* { dg-final { scan-tree-dump-times "__builtin_unreachable" 0 "fab" } } */
+/* { dg-final { cleanup-tree-dump "fab" } } */
diff --git a/gcc/testsuite/gcc.dg/builtin-unreachable-6.c b/gcc/testsuite/gcc.dg/builtin-unreachable-6.c
new file mode 100644
index 00000000000..26b5ac75305
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/builtin-unreachable-6.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-fab" } */
+
+void
+foo (int b, int c)
+{
+ void *x = &&lab;
+ if (b)
+ {
+lab:
+ __builtin_unreachable ();
+ }
+lab2:
+ if (c)
+ x = &&lab2;
+ goto *x;
+}
+
+/* { dg-final { scan-tree-dump-times "lab:" 1 "fab" } } */
+/* { dg-final { scan-tree-dump-times "__builtin_unreachable" 1 "fab" } } */
+/* { dg-final { cleanup-tree-dump "fab" } } */
diff --git a/gcc/testsuite/gcc.dg/cpp/_Pragma7.c b/gcc/testsuite/gcc.dg/cpp/_Pragma7.c
new file mode 100644
index 00000000000..a7a5b1bcb0b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/_Pragma7.c
@@ -0,0 +1,14 @@
+/*
+ Origin: PR preprocessor/53469
+ { dg-do compile }
+ */
+
+#define STRINGIFY(x) #x
+#define TEST(x) \
+ _Pragma(STRINGIFY(GCC diagnostic ignored "-Wunused-local-typedefs")) \
+ typedef int myint;
+
+void bar ()
+{
+ TEST(myint)
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-1.c b/gcc/testsuite/gcc.dg/fixed-point/convert-1.c
new file mode 100644
index 00000000000..04adea88bfa
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-1.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV (short _Fract, hr);
+ ALL_CONV (_Fract, r);
+ ALL_CONV (long _Fract, lr);
+ ALL_CONV (long long _Fract, llr);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-2.c b/gcc/testsuite/gcc.dg/fixed-point/convert-2.c
new file mode 100644
index 00000000000..fc5bc1fcbbf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-2.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV (unsigned short _Fract, uhr);
+ ALL_CONV (unsigned _Fract, ur);
+ ALL_CONV (unsigned long _Fract, ulr);
+ ALL_CONV (unsigned long long _Fract, ullr);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-3.c b/gcc/testsuite/gcc.dg/fixed-point/convert-3.c
new file mode 100644
index 00000000000..753c472a844
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-3.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV (short _Accum, hk);
+ ALL_CONV (_Accum, k);
+ ALL_CONV (long _Accum, lk);
+ ALL_CONV (long long _Accum, llk);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-4.c b/gcc/testsuite/gcc.dg/fixed-point/convert-4.c
new file mode 100644
index 00000000000..17c4e66ebb7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-4.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV (unsigned short _Accum, uhk);
+ ALL_CONV (unsigned _Accum, uk);
+ ALL_CONV (unsigned long _Accum, ulk);
+ ALL_CONV (unsigned long long _Accum, ullk);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-accum-neg.c b/gcc/testsuite/gcc.dg/fixed-point/convert-accum-neg.c
new file mode 100644
index 00000000000..af956104290
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-accum-neg.c
@@ -0,0 +1,33 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_ACCUM_CONV (short _Accum, hk);
+ ALL_ACCUM_CONV (_Accum, k);
+ ALL_ACCUM_CONV (long _Accum, lk);
+ ALL_ACCUM_CONV (long long _Accum, llk);
+ ALL_ACCUM_CONV (unsigned short _Accum, uhk);
+ ALL_ACCUM_CONV (unsigned _Accum, uk);
+ ALL_ACCUM_CONV (unsigned long _Accum, ulk);
+ ALL_ACCUM_CONV (unsigned long long _Accum, ullk);
+
+ NEG_CONV (short _Fract, hr);
+ NEG_CONV (_Fract, r);
+ NEG_CONV (long _Fract, lr);
+ NEG_CONV (long long _Fract, llr);
+ NEG_CONV (short _Accum, hk);
+ NEG_CONV (_Accum, k);
+ NEG_CONV (long _Accum, lk);
+ NEG_CONV (long long _Accum, llk);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-float-1.c b/gcc/testsuite/gcc.dg/fixed-point/convert-float-1.c
new file mode 100644
index 00000000000..b36adab570a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-float-1.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV_FLOAT (short _Fract, hr);
+ ALL_CONV_FLOAT (_Fract, r);
+ ALL_CONV_FLOAT (long _Fract, lr);
+ ALL_CONV_FLOAT (long long _Fract, llr);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-float-2.c b/gcc/testsuite/gcc.dg/fixed-point/convert-float-2.c
new file mode 100644
index 00000000000..2a3f3e95a1b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-float-2.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV_FLOAT (unsigned short _Fract, uhr);
+ ALL_CONV_FLOAT (unsigned _Fract, ur);
+ ALL_CONV_FLOAT (unsigned long _Fract, ulr);
+ ALL_CONV_FLOAT (unsigned long long _Fract, ullr);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-float-3.c b/gcc/testsuite/gcc.dg/fixed-point/convert-float-3.c
new file mode 100644
index 00000000000..9cad010912f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-float-3.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV_FLOAT (short _Accum, hk);
+ ALL_CONV_FLOAT (_Accum, k);
+ ALL_CONV_FLOAT (long _Accum, lk);
+ ALL_CONV_FLOAT (long long _Accum, llk);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-float-4.c b/gcc/testsuite/gcc.dg/fixed-point/convert-float-4.c
new file mode 100644
index 00000000000..c25a55c0715
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-float-4.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ ALL_CONV_FLOAT (unsigned short _Accum, uhk);
+ ALL_CONV_FLOAT (unsigned _Accum, uk);
+ ALL_CONV_FLOAT (unsigned long _Accum, ulk);
+ ALL_CONV_FLOAT (unsigned long long _Accum, ullk);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert-sat.c b/gcc/testsuite/gcc.dg/fixed-point/convert-sat.c
new file mode 100644
index 00000000000..278aa173b65
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert-sat.c
@@ -0,0 +1,45 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O0" } */
+
+/* C99 6.3 Conversions.
+
+ Check conversions involving fixed-point. */
+
+extern void abort (void);
+
+#include "convert.h"
+
+int main ()
+{
+ SAT_CONV1 (short _Accum, hk);
+ SAT_CONV1 (_Accum, k);
+ SAT_CONV1 (long _Accum, lk);
+ SAT_CONV1 (long long _Accum, llk);
+
+ SAT_CONV2 (unsigned short _Accum, uhk);
+ SAT_CONV2 (unsigned _Accum, uk);
+ SAT_CONV2 (unsigned long _Accum, ulk);
+ SAT_CONV2 (unsigned long long _Accum, ullk);
+
+ SAT_CONV3 (short _Fract, hr);
+ SAT_CONV3 (_Fract, r);
+ SAT_CONV3 (long _Fract, lr);
+ SAT_CONV3 (long long _Fract, llr);
+
+ SAT_CONV4 (signed char);
+ SAT_CONV4 (short);
+ SAT_CONV4 (int);
+ SAT_CONV4 (long);
+ SAT_CONV4 (long long);
+
+ SAT_CONV5 (unsigned char);
+ SAT_CONV5 (unsigned short);
+ SAT_CONV5 (unsigned int);
+ SAT_CONV5 (unsigned long);
+ SAT_CONV5 (unsigned long long);
+
+ SAT_CONV6 (float);
+ SAT_CONV6 (double);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert.c b/gcc/testsuite/gcc.dg/fixed-point/convert.h
index f4e373f2d60..e4e68157a77 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/convert.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert.h
@@ -1,11 +1,6 @@
-/* { dg-do run } */
-/* { dg-options "-std=gnu99 -O0" } */
-
-/* C99 6.3 Conversions.
-
- Check conversions involving fixed-point. */
-
-extern void abort (void);
+/* Check conversions involving fixed-point.
+ * Break up use-site into into manageable parts so that even embedded
+ * targets with restrictive resources can run them. */
/* Fixed-point to fixed-point. */
#define CONV(TYPE1,POSTFIX1,TYPE2,POSTFIX2) \
@@ -131,7 +126,7 @@ extern void abort (void);
CONV(_Sat TYPE, POSTFIX, unsigned _Accum, uk) \
CONV(_Sat TYPE, POSTFIX, unsigned long _Accum, ulk) \
CONV(_Sat TYPE, POSTFIX, unsigned long long _Accum, ullk) \
- CONV(TYPE, POSTFIX, _Sat short _Fract, hr) \
+ CONV(TYPE, POSTFIX, _Sat short _Fract, hr) \
CONV(TYPE, POSTFIX, _Sat _Fract, r) \
CONV(TYPE, POSTFIX, _Sat long _Fract, lr) \
CONV(TYPE, POSTFIX, _Sat long long _Fract, llr) \
@@ -147,7 +142,7 @@ extern void abort (void);
CONV(TYPE, POSTFIX, _Sat unsigned _Accum, uk) \
CONV(TYPE, POSTFIX, _Sat unsigned long _Accum, ulk) \
CONV(TYPE, POSTFIX, _Sat unsigned long long _Accum, ullk) \
- CONV_INT(TYPE, POSTFIX, signed char) \
+ CONV_INT(TYPE, POSTFIX, signed char) \
CONV_INT(TYPE, POSTFIX, short) \
CONV_INT(TYPE, POSTFIX, int) \
CONV_INT(TYPE, POSTFIX, long) \
@@ -166,8 +161,10 @@ extern void abort (void);
CONV_INT(_Sat TYPE, POSTFIX, unsigned short) \
CONV_INT(_Sat TYPE, POSTFIX, unsigned int) \
CONV_INT(_Sat TYPE, POSTFIX, unsigned long) \
- CONV_INT(_Sat TYPE, POSTFIX, unsigned long long) \
- CONV_FLOAT(TYPE, POSTFIX, float) \
+ CONV_INT(_Sat TYPE, POSTFIX, unsigned long long)
+
+#define ALL_CONV_FLOAT(TYPE,POSTFIX) \
+ CONV_FLOAT(TYPE, POSTFIX, float) \
CONV_FLOAT(TYPE, POSTFIX, double) \
CONV_FLOAT(_Sat TYPE, POSTFIX, float) \
CONV_FLOAT(_Sat TYPE, POSTFIX, double)
@@ -360,73 +357,3 @@ extern void abort (void);
CONV2(TYPE, -1.0, _Sat unsigned long _Fract, 0.0ulr) \
CONV2(TYPE, 1.0, _Sat unsigned long long _Fract, 1.0ullr) \
CONV2(TYPE, -1.0, _Sat unsigned long long _Fract, 0.0ullr)
-
-int main ()
-{
- ALL_CONV (short _Fract, hr);
- ALL_CONV (_Fract, r);
- ALL_CONV (long _Fract, lr);
- ALL_CONV (long long _Fract, llr);
- ALL_CONV (unsigned short _Fract, uhr);
- ALL_CONV (unsigned _Fract, ur);
- ALL_CONV (unsigned long _Fract, ulr);
- ALL_CONV (unsigned long long _Fract, ullr);
- ALL_CONV (short _Accum, hk);
- ALL_CONV (_Accum, k);
- ALL_CONV (long _Accum, lk);
- ALL_CONV (long long _Accum, llk);
- ALL_CONV (unsigned short _Accum, uhk);
- ALL_CONV (unsigned _Accum, uk);
- ALL_CONV (unsigned long _Accum, ulk);
- ALL_CONV (unsigned long long _Accum, ullk);
-
- ALL_ACCUM_CONV (short _Accum, hk);
- ALL_ACCUM_CONV (_Accum, k);
- ALL_ACCUM_CONV (long _Accum, lk);
- ALL_ACCUM_CONV (long long _Accum, llk);
- ALL_ACCUM_CONV (unsigned short _Accum, uhk);
- ALL_ACCUM_CONV (unsigned _Accum, uk);
- ALL_ACCUM_CONV (unsigned long _Accum, ulk);
- ALL_ACCUM_CONV (unsigned long long _Accum, ullk);
-
- NEG_CONV (short _Fract, hr);
- NEG_CONV (_Fract, r);
- NEG_CONV (long _Fract, lr);
- NEG_CONV (long long _Fract, llr);
- NEG_CONV (short _Accum, hk);
- NEG_CONV (_Accum, k);
- NEG_CONV (long _Accum, lk);
- NEG_CONV (long long _Accum, llk);
-
- SAT_CONV1 (short _Accum, hk);
- SAT_CONV1 (_Accum, k);
- SAT_CONV1 (long _Accum, lk);
- SAT_CONV1 (long long _Accum, llk);
-
- SAT_CONV2 (unsigned short _Accum, uhk);
- SAT_CONV2 (unsigned _Accum, uk);
- SAT_CONV2 (unsigned long _Accum, ulk);
- SAT_CONV2 (unsigned long long _Accum, ullk);
-
- SAT_CONV3 (short _Fract, hr);
- SAT_CONV3 (_Fract, r);
- SAT_CONV3 (long _Fract, lr);
- SAT_CONV3 (long long _Fract, llr);
-
- SAT_CONV4 (signed char);
- SAT_CONV4 (short);
- SAT_CONV4 (int);
- SAT_CONV4 (long);
- SAT_CONV4 (long long);
-
- SAT_CONV5 (unsigned char);
- SAT_CONV5 (unsigned short);
- SAT_CONV5 (unsigned int);
- SAT_CONV5 (unsigned long);
- SAT_CONV5 (unsigned long long);
-
- SAT_CONV6 (float);
- SAT_CONV6 (double);
-
- return 0;
-}
diff --git a/gcc/testsuite/gcc.dg/fold-notunord.c b/gcc/testsuite/gcc.dg/fold-notunord.c
new file mode 100644
index 00000000000..edfe3cd0292
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fold-notunord.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftrapping-math -fdump-tree-optimized" } */
+
+int f (double d)
+{
+ return !__builtin_isnan (d);
+}
+
+/* { dg-final { scan-tree-dump " ord " "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/fold-perm.c b/gcc/testsuite/gcc.dg/fold-perm.c
new file mode 100644
index 00000000000..7396c1dfadc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fold-perm.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-ccp1" } */
+
+typedef int veci __attribute__ ((vector_size (4 * sizeof (int))));
+
+void fun (veci *f, veci *g, veci *h)
+{
+ veci m = { 7, 7, 4, 6 };
+ veci n = { 0, 1, 2, 3 };
+ veci p = { 1, 1, 7, 6 };
+ *h = __builtin_shuffle (*h, *h, p);
+ *g = __builtin_shuffle (*f, *g, m);
+ *f = __builtin_shuffle (*f, *g, n);
+}
+
+/* { dg-final { scan-tree-dump "VEC_PERM_EXPR.*{ 3, 3, 0, 2 }" "ccp1" } } */
+/* { dg-final { scan-tree-dump "VEC_PERM_EXPR.*{ 1, 1, 3, 2 }" "ccp1" } } */
+/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 2 "ccp1" } } */
+/* { dg-final { cleanup-tree-dump "ccp1" } } */
diff --git a/gcc/testsuite/gcc.dg/gomp/pr53992.c b/gcc/testsuite/gcc.dg/gomp/pr53992.c
new file mode 100644
index 00000000000..4d5af3ce785
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr53992.c
@@ -0,0 +1,21 @@
+/* PR middle-end/53992 */
+/* { dg-do compile } */
+/* { dg-options "-fgnu-tm -fopenmp" } */
+/* { dg-require-effective-target fgnu_tm } */
+
+int main() {
+ long data[10000];
+ long i, min=10000;
+ for (i=0; i<10000; i++) data[i] = -i;
+
+#pragma omp parallel for
+ for (i=0; i<10000; i++) {
+ __transaction_atomic
+ {
+ if (data[i] < min)
+ min = data[i];
+ }
+ }
+
+ return !(min == -9999);
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr54200.c b/gcc/testsuite/gcc.dg/guality/pr54200.c
new file mode 100644
index 00000000000..9b171876401
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr54200.c
@@ -0,0 +1,28 @@
+/* PR tree-optimization/54200 */
+/* { dg-do run } */
+/* { dg-options "-g -fno-var-tracking-assignments" } */
+
+int o __attribute__((used));
+
+void bar (void) { o = 2; }
+
+int __attribute__((noinline,noclone))
+foo (int z, int x, int b)
+{
+ if (x == 1)
+ {
+ bar ();
+ return z;
+ }
+ else
+ {
+ int a = (x + z) + b;
+ return a; /* { dg-final { gdb-test 20 "z" "3" } } */
+ }
+}
+
+int main ()
+{
+ foo (3, 2, 1);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/ipa/iinline-1.c b/gcc/testsuite/gcc.dg/ipa/iinline-1.c
index 617c484994b..860b3e57204 100644
--- a/gcc/testsuite/gcc.dg/ipa/iinline-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/iinline-1.c
@@ -1,7 +1,7 @@
/* Verify that simple indirect calls are inlined even without early
inlining.. */
/* { dg-do compile } */
-/* { dg-options "-O3 -c -fdump-ipa-inline -fno-early-inlining" } */
+/* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining -fno-ipa-cp" } */
extern void non_existent(int);
@@ -22,5 +22,6 @@ int test (void)
return 0;
}
+/* { dg-final { scan-ipa-dump "indirect_call" "inline" } } */
/* { dg-final { scan-ipa-dump "hooray\[^\\n\]*inline copy in test" "inline" } } */
/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/iinline-4.c b/gcc/testsuite/gcc.dg/ipa/iinline-4.c
new file mode 100644
index 00000000000..4de90d6f6b5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/iinline-4.c
@@ -0,0 +1,221 @@
+/* Verify that simple indirect calls are inlined even without early
+ inlining.. */
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining" } */
+
+struct S
+{
+ int i;
+ void (*f)(struct S *);
+ unsigned u;
+};
+
+struct U
+{
+ struct U *next;
+ struct S s;
+ short a[8];
+};
+
+extern void non_existent(struct S *p, int);
+
+/* ----- 1 ----- */
+
+static void hooray1 (struct S *p)
+{
+ non_existent (p, 1);
+}
+
+static void hiphip1 (struct S *p)
+{
+ p->f (p);
+}
+
+int test1 (void)
+{
+ struct S s;
+ s.i = 1234;
+ s.f = hooray1;
+ s.u = 1001;
+ hiphip1 (&s);
+ return 0;
+}
+
+/* ----- 2 ----- */
+
+struct S *gp;
+
+static void hooray2 (struct S *p)
+{
+ non_existent (p, 2);
+}
+
+static void hip2 (struct S *p)
+{
+ p->f (p);
+}
+
+static void hiphip2 (struct S *p)
+{
+ hip2 (p);
+}
+
+int test2 (void)
+{
+ struct S *p = gp;
+ p->i = 2341;
+ p->f = hooray2;
+ p->u = 1002;
+ hiphip2 (p);
+ return 0;
+}
+
+/* ----- 3 ----- */
+
+static void hooray3 (struct S *p)
+{
+ non_existent (p, 2);
+}
+
+static void hip3 (struct S *p)
+{
+ p->f (p);
+}
+
+static __attribute__ ((flatten)) void hiphip3 (struct S *p)
+{
+ hip3 (p);
+}
+
+int test3 (void)
+{
+ struct S *p = gp;
+ p->i = 2341;
+ p->f = hooray3;
+ p->u = 1003;
+ hiphip3 (p);
+ return 0;
+}
+
+/* ----- 4 ----- */
+
+static void hooray4 (struct S *p)
+{
+ non_existent (p, 3);
+}
+
+static void hiphip4 (struct S s)
+{
+ s.f (&s);
+}
+
+int test4(void)
+{
+ struct S s;
+ s.i = 3412;
+ s.f = hooray4;
+ s.u = 1004;
+ hiphip4 (s);
+ return 0;
+}
+
+/* ----- 5 ----- */
+
+struct U *gu;
+
+static void hooray5 (struct S *p)
+{
+ non_existent (p, 5);
+}
+
+static void hip5 (struct S *p)
+{
+ p->f (p);
+}
+
+static void hiphip5 (struct U *u)
+{
+ hip5 (&u->s);
+}
+
+int test5 (void)
+{
+ struct U *u = gu;
+ u->next = u;
+ u->s.i = 9876;
+ u->s.f = hooray5;
+ u->s.u = 1005;
+ hiphip5 (u);
+ return 0;
+}
+
+/* ----- 6 ----- */
+
+static void hooray6 (struct S *p)
+{
+ non_existent (p, 6);
+}
+
+static void hip6 (struct S *p)
+{
+ p->f (p);
+}
+
+static __attribute__ ((flatten)) void hiphip6 (struct U *u)
+{
+ hip6 (&u->s);
+}
+
+int test6 (void)
+{
+ struct U *u = gu;
+ u->next = u;
+ u->s.i = 9876;
+ u->s.f = hooray6;
+ u->s.u = 1006;
+ hiphip6 (u);
+ return 0;
+}
+
+/* ----- 7 ----- */
+
+struct S **gdp;
+
+
+static void hooray7 (struct S *p)
+{
+ non_existent (p, 7);
+}
+
+static void hip7 (struct S *p)
+{
+ p->f (p);
+ gdp = &p;
+}
+
+static void hiphip7 (struct S *p)
+{
+ hip7 (p);
+ gdp = &p;
+}
+
+int test7 (void)
+{
+ struct S *p = gp;
+ p->i = 7341;
+ p->f = hooray7;
+ p->u = 1007;
+ hiphip7 (p);
+ return 0;
+}
+
+
+
+/* { dg-final { scan-ipa-dump "hooray1\[^\\n\]*inline copy in test1" "inline" } } */
+/* { dg-final { scan-ipa-dump "hooray2\[^\\n\]*inline copy in test2" "inline" } } */
+/* { dg-final { scan-ipa-dump "hooray3\[^\\n\]*inline copy in test3" "inline" } } */
+/* { dg-final { scan-ipa-dump "hooray4\[^\\n\]*inline copy in test4" "inline" } } */
+/* { dg-final { scan-ipa-dump "hooray5\[^\\n\]*inline copy in test5" "inline" } } */
+/* { dg-final { scan-ipa-dump "hooray6\[^\\n\]*inline copy in test6" "inline" } } */
+/* { dg-final { scan-ipa-dump "hooray7\[^\\n\]*inline copy in test7" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/iinline-5.c b/gcc/testsuite/gcc.dg/ipa/iinline-5.c
new file mode 100644
index 00000000000..8fb47caffcc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/iinline-5.c
@@ -0,0 +1,124 @@
+/* Verify that simple indirect calls are inlined even without early
+ inlining.. */
+/* { dg-do run } */
+/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining" } */
+
+extern void abort (void);
+
+struct S
+{
+ int i;
+ void (*f)(struct S *);
+ int j,k,l;
+};
+
+struct Z
+{
+ unsigned u;
+ void (*f)(struct Z *, int);
+ struct Z *next;
+};
+
+static struct Z *gz;
+static struct S *gs;
+static int gr = 111;
+char gc[1024];
+
+static __attribute__ ((noinline, noclone)) struct S *
+get_s (void)
+{
+ return (struct S *) &gc;
+}
+
+
+static void wrong_target_1 (struct S *s)
+{
+ abort ();
+}
+
+static void wrong_target_2 (struct S *s)
+{
+ abort ();
+}
+
+static void wrong_target_3 (struct S *s)
+{
+ abort ();
+}
+
+static void good_target (struct Z *z, int i)
+{
+ gr = 0;
+}
+
+static void good_target_3 (struct S *s)
+{
+ gr = 0;
+}
+
+static void g1 (struct S *s)
+{
+ struct Z *z = (struct Z*) s;
+ z->f (z, 8);
+}
+
+static void f1 (struct S *s)
+{
+ gz->f = good_target;
+ g1 (s);
+}
+
+static void g2 (struct Z *z)
+{
+ z->f (z, 8);
+}
+
+static void f2 (struct S *s)
+{
+ gz->f = good_target;
+ g2 ((struct Z*) s);
+}
+
+static void g3 (struct S *s)
+{
+ s->f (s);
+}
+
+static void h3 (struct Z *z)
+{
+ gs->f = good_target_3;
+ g3 ((struct S *) z);
+}
+
+static void f3 (struct S *s)
+{
+ h3 ((struct Z*) s);
+}
+
+int main (int argc, char **argv)
+{
+ struct S *s = get_s();
+ s->i = 5678;
+ s->f = wrong_target_1;
+ s->j = 1234;
+ gz = (struct Z *) s;
+ f1 (s);
+
+ s = get_s();
+ gz = (struct Z *) s;
+ s->i = 9999;
+ s->f = wrong_target_1;
+ f2 (s);
+
+ s = get_s();
+ gs = s;
+ s->i = 9999;
+ s->f = wrong_target_3;
+ f3 (s);
+
+ return gr;
+}
+
+
+/* { dg-final { scan-ipa-dump-not "wrong_target\[^\\n\]*inline copy in" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/iinline-6.c b/gcc/testsuite/gcc.dg/ipa/iinline-6.c
new file mode 100644
index 00000000000..5a9b759d883
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/iinline-6.c
@@ -0,0 +1,72 @@
+/* Verify that simple indirect calls are inlined even without early
+ inlining.. */
+/* { dg-do run } */
+/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining" } */
+
+extern void abort (void);
+
+struct S
+{
+ int i;
+ void (*f)(struct S *);
+ int j,k,l;
+};
+
+struct Z
+{
+ unsigned u;
+ void (*f)(struct Z *, int);
+ struct Z *next;
+};
+
+static struct S *gs;
+static int gr = 111;
+char gc[1024];
+
+static __attribute__ ((noinline, noclone)) struct S *
+get_s (void)
+{
+ return (struct S *) &gc;
+}
+
+static void wrong_target (struct S *s)
+{
+ abort ();
+}
+
+static void good_target (struct S *s)
+{
+ gr = 0;
+}
+
+static void g1 (struct S *s)
+{
+ s->f (s);
+}
+
+static void f2 (struct Z *z)
+{
+ gs->f = good_target;
+ g1 ((struct S *) z);
+}
+
+static inline __attribute__ ((flatten)) void f1 (struct S *s)
+{
+ f2 ((struct Z *) s);
+}
+
+int main (int argc, char **argv)
+{
+ struct S *s = get_s();
+ s->i = 5678;
+ s->f = wrong_target;
+ s->j = 1234;
+ gs = s;
+ f1 (s);
+
+ return gr;
+}
+
+
+/* { dg-final { scan-ipa-dump-not "wrong_target\[^\\n\]*inline copy in" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/iinline-7.c b/gcc/testsuite/gcc.dg/ipa/iinline-7.c
new file mode 100644
index 00000000000..c95d374d248
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/iinline-7.c
@@ -0,0 +1,157 @@
+/* Verify that simple indirect calls are inlined even without early
+ inlining.. */
+/* { dg-do run } */
+/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining" } */
+
+extern void abort (void);
+
+struct S
+{
+ int i;
+ void (*f)(struct S *);
+ int j,k,l;
+};
+
+struct U
+{
+ struct U *next;
+ struct S s;
+ short a[8];
+};
+
+struct Z
+{
+ unsigned u;
+ void (*f)(struct Z *, int);
+ struct Z *next;
+};
+
+static struct Z *gz;
+static struct U *gu;
+static int gr = 111;
+char gc[1024];
+
+static __attribute__ ((noinline, noclone)) struct U *
+get_u (void)
+{
+ return (struct U *) &gc;
+}
+
+static void wrong_target_1 (struct S *s)
+{
+ abort ();
+}
+
+static void wrong_target_2 (struct S *s)
+{
+ abort ();
+}
+
+static void wrong_target_3 (struct S *s)
+{
+ abort ();
+}
+
+static void wrong_target_4 (struct S *s)
+{
+ abort ();
+}
+
+static void good_target (struct Z *z, int i)
+{
+ gr = 0;
+}
+
+static void good_target_4 (struct S *s)
+{
+ gr = 0;
+}
+
+static void g1 (struct S *s)
+{
+ struct Z *z = (struct Z*) s;
+ z->f (z, 8);
+}
+
+static void f1 (struct U *u)
+{
+ gz->f = good_target;
+ g1 (&u->s);
+}
+
+static void g2 (struct Z *z)
+{
+ z->f (z, 8);
+}
+
+static void f2 (struct U *u)
+{
+ gz->f = good_target;
+ g2 ((struct Z*) &u->s);
+}
+
+static void h3 (struct Z *z)
+{
+ z->f (z, 8);
+}
+
+static void g3 (struct S *s)
+{
+ h3 ((struct Z*) s);
+}
+
+static void f3 (struct U *u)
+{
+ gz->f = good_target;
+ g3 (&u->s);
+}
+
+static void h4 (struct S *s)
+{
+ s->f (s);
+}
+
+static void g4 (struct U *u)
+{
+ h4 (&u->s);
+}
+
+static inline __attribute__ ((flatten)) void f4 (struct Z *z)
+{
+ gu->s.f = good_target_4;
+ g4 ((struct U *) z);
+}
+
+int main (int argc, char **argv)
+{
+ struct U *u = get_u ();
+ u->next = u;
+ u->s.i = 5678;
+ u->s.f = wrong_target_1;
+ u->s.j = 1234;
+ gz = (struct Z *) &u->s;
+ f1 (u);
+
+ u = get_u();
+ u->s.i = 9999;
+ u->s.f = wrong_target_2;
+ gz = (struct Z *) &u->s;
+ f2 (u);
+
+ u = get_u();
+ u->s.i = 9998;
+ u->s.f = wrong_target_3;
+ gz = (struct Z *) &u->s;
+ f3 (u);
+
+ u = get_u();
+ u->s.i = 9998;
+ u->s.f = wrong_target_4;
+ gu = u;
+ f4 ((struct Z *) u);
+ return gr;
+}
+
+
+/* { dg-final { scan-ipa-dump-not "wrong_target\[^\\n\]*inline copy in" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c b/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
new file mode 100644
index 00000000000..9810e25c19b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
@@ -0,0 +1,16 @@
+/* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining -fno-ipa-cp" } */
+test (int a)
+{
+ int i;
+ for (i=0; i<a; i++)
+{
+ test2(a);
+ test2(a);
+}
+}
+m()
+{
+ test (10);
+}
+/* { dg-final { scan-ipa-dump "loop_iterations" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
index ce9393cb072..47900809b9f 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
@@ -23,6 +23,6 @@ int main()
/* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
/* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre2" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_2\\\(D\\\) with 1" "fre2" } } */
/* { dg-final { cleanup-tree-dump "fre2" } } */
/* { dg-final { cleanup-ipa-dump "pta" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c b/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
index 32e1e4fbc49..bf6fa281d5a 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
@@ -28,6 +28,6 @@ int main()
/* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
/* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre2" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_2\\\(D\\\) with 1" "fre2" } } */
/* { dg-final { cleanup-tree-dump "fre2" } } */
/* { dg-final { cleanup-ipa-dump "pta" } } */
diff --git a/gcc/testsuite/gcc.dg/lto/20120723_0.c b/gcc/testsuite/gcc.dg/lto/20120723_0.c
new file mode 100644
index 00000000000..ea08a0067da
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20120723_0.c
@@ -0,0 +1,52 @@
+/* Make sure that by reference and by value aggregate jump functions do not get
+ mixed up. */
+/* { dg-lto-do run } */
+/* { dg-lto-options {{-O3 -fno-early-inlining -flto}} } */
+
+extern void abort (void);
+
+struct S
+{
+ int i;
+ void (*f)(struct S *);
+ int j;
+};
+
+struct E
+{
+ struct S *p;
+};
+
+struct S *gs;
+int gr = 111;
+char gc[1024];
+
+static __attribute__ ((noinline, noclone)) struct S *
+get_s (void)
+{
+ return (struct S *) &gc;
+}
+
+static void wrong_target (struct S *s)
+{
+ abort ();
+}
+
+void bar (struct S *s)
+{
+ s->f (s);
+}
+
+extern void foo (struct S *s);
+
+int main (int argc, char **argv)
+{
+ struct S *s = get_s();
+ gs = s;
+ s->i = 5678;
+ s->f = wrong_target;
+ s->j = 1234;
+ foo (s);
+
+ return gr;
+}
diff --git a/gcc/testsuite/gcc.dg/lto/20120723_1.c b/gcc/testsuite/gcc.dg/lto/20120723_1.c
new file mode 100644
index 00000000000..5c50861b418
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20120723_1.c
@@ -0,0 +1,39 @@
+/* Make sure that by reference and by value aggregate jump functions do not get
+ mixed up. */
+
+extern void abort (void);
+
+struct S
+{
+ int i;
+ void (*f)(struct S *);
+ int j;
+};
+
+struct E
+{
+ struct S *p;
+};
+
+extern struct S *gs;
+extern int gr;
+extern char gc[1024];
+
+static __attribute__ ((noinline, noclone)) struct S *
+get_s (void)
+{
+ return (struct S *) &gc;
+}
+
+static void good_target (struct S *s)
+{
+ gr = 0;
+}
+
+extern void bar (struct E e);
+
+void foo (struct E e)
+{
+ gs->f = good_target;
+ bar (e);
+}
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix.exp b/gcc/testsuite/gcc.dg/matrix/matrix.exp
deleted file mode 100644
index d2e13449ba4..00000000000
--- a/gcc/testsuite/gcc.dg/matrix/matrix.exp
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2010, 2011
-# Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# Test the functionality of programs compiled with profile-directed block
-# ordering using -fprofile-generate followed by -fbranch-use.
-load_lib gcc-dg.exp
-load_lib target-supports.exp
-
-set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program -fno-tree-fre"
-
-# Initialize `dg'.
-dg-init
-
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/matrix-\[1-6\].\[cS\]]] \
- "" $DEFAULT_MATCFLAGS
-
-dg-final
-
-# Some targets don't support tree profiling.
-if { ![check_profiling_available "-fprofile-generate"] } {
- return
-}
-
-# The procedures in profopt.exp need these parameters.
-set tool gcc
-set prof_ext "gcda"
-
-if $tracelevel then {
- strace $tracelevel
-}
-
-# Load support procs.
-load_lib profopt.exp
-
-# Save and override the default list defined in profopt.exp.
-set matrix_save_profopt_options $PROFOPT_OPTIONS
-set PROFOPT_OPTIONS [list {}]
-
-# These are globals used by profopt-execute. The first is options
-# needed to generate profile data, the second is options to use the
-# profile data.
-set profile_option "-fprofile-generate -O3 -fno-tree-fre"
-set feedback_option "-fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program -fno-tree-fre"
-
-foreach src [lsort [glob -nocomplain $srcdir/$subdir/transpose-*.c]] {
- # If we're only testing specific files and this isn't one of them, skip it.
- if ![runtest_file_p $runtests $src] then {
- continue
- }
- profopt-execute $src
-}
-
-set PROFOPT_OPTIONS $matrix_save_profopt_options
diff --git a/gcc/testsuite/gcc.dg/no-strict-overflow-4.c b/gcc/testsuite/gcc.dg/no-strict-overflow-4.c
index 32d35c4cb4b..c3b57bba022 100644
--- a/gcc/testsuite/gcc.dg/no-strict-overflow-4.c
+++ b/gcc/testsuite/gcc.dg/no-strict-overflow-4.c
@@ -12,8 +12,5 @@ foo (int i)
return i + 1 > i;
}
-/* We expect to see "<bb N>"; confirm that, so that we know to count
- it in the real test. */
-/* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
-/* { dg-final { scan-tree-dump-times ">|<" 3 "optimized" } } */
+/* { dg-final { scan-tree-dump "\[^ \]*_.(\\\(D\\\))? (>|<) \[^ \]*_." "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc/testsuite/gcc.dg/plugin/selfassign.c
index feb4130e532..2c417744f9e 100644
--- a/gcc/testsuite/gcc.dg/plugin/selfassign.c
+++ b/gcc/testsuite/gcc.dg/plugin/selfassign.c
@@ -46,7 +46,7 @@ get_real_ref_rhs (tree expr)
e.g. D.1797_14, we need to grab the rhs of its SSA def
statement (i.e. foo.x). */
tree vdecl = SSA_NAME_VAR (expr);
- if (DECL_ARTIFICIAL (vdecl)
+ if ((!vdecl || DECL_ARTIFICIAL (vdecl))
&& !gimple_nop_p (SSA_NAME_DEF_STMT (expr)))
{
gimple def_stmt = SSA_NAME_DEF_STMT (expr);
@@ -86,6 +86,8 @@ get_real_ref_rhs (tree expr)
static tree
get_non_ssa_expr (tree expr)
{
+ if (!expr)
+ return NULL_TREE;
switch (TREE_CODE (expr))
{
case VAR_DECL:
@@ -149,7 +151,7 @@ get_non_ssa_expr (tree expr)
case SSA_NAME:
{
tree vdecl = SSA_NAME_VAR (expr);
- if (DECL_ARTIFICIAL (vdecl)
+ if ((!vdecl || DECL_ARTIFICIAL (vdecl))
&& !gimple_nop_p (SSA_NAME_DEF_STMT (expr)))
{
gimple def_stmt = SSA_NAME_DEF_STMT (expr);
@@ -209,7 +211,7 @@ warn_self_assign (gimple stmt)
if (TREE_CODE (lhs) == SSA_NAME)
{
lhs = SSA_NAME_VAR (lhs);
- if (DECL_ARTIFICIAL (lhs))
+ if (!lhs || DECL_ARTIFICIAL (lhs))
return;
}
diff --git a/gcc/testsuite/gcc.dg/pr45259.c b/gcc/testsuite/gcc.dg/pr45259.c
index b8dc36503f8..3b8d6bd176d 100644
--- a/gcc/testsuite/gcc.dg/pr45259.c
+++ b/gcc/testsuite/gcc.dg/pr45259.c
@@ -1,6 +1,7 @@
/* PR debug/45259 */
/* { dg-do compile } */
-/* { dg-options "-g -O2 -fpic -w" { target fpic } } */
+/* { dg-options "-g -O2 -w -fpic" { target fpic } } */
+/* { dg-options "-g -O2 -w" { target { ! fpic } } } */
struct S { void (*bar) (long); };
struct T { struct S *t; };
diff --git a/gcc/testsuite/gcc.dg/pr46309.c b/gcc/testsuite/gcc.dg/pr46309.c
index 68a344a1bdc..ee154ccd2f3 100644
--- a/gcc/testsuite/gcc.dg/pr46309.c
+++ b/gcc/testsuite/gcc.dg/pr46309.c
@@ -65,6 +65,6 @@ f6 (unsigned int a)
/* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.1, 1. and -.2, 2.\[\n\r\]* into" 1 "reassoc1" } } */
/* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.0, 31. and -.64, 95.\[\n\r\]* into" 2 "reassoc1" } } */
/* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.128, 159. and -.192, 223.\[\n\r\]* into" 1 "reassoc1" } } */
-/* { dg-final { scan-tree-dump-times "Optimizing range tests D.\[0-9\]*_\[0-9\]* -.0, 31. and -.128, 159.\[\n\r\]* into" 1 "reassoc2" } } */
+/* { dg-final { scan-tree-dump-times "Optimizing range tests \[^\r\n\]*_\[0-9\]* -.0, 31. and -.128, 159.\[\n\r\]* into" 1 "reassoc2" } } */
/* { dg-final { cleanup-tree-dump "reassoc1" } } */
/* { dg-final { cleanup-tree-dump "reassoc2" } } */
diff --git a/gcc/testsuite/gcc.dg/pr51879-16.c b/gcc/testsuite/gcc.dg/pr51879-16.c
new file mode 100644
index 00000000000..3a84e974693
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr51879-16.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-pre" } */
+
+struct S {
+ int i;
+};
+
+extern struct S foo (void);
+extern int foo2 (void);
+
+struct S s;
+
+int bar (int c) {
+ int r;
+
+ if (c)
+ {
+ s = foo ();
+ r = foo2 ();
+ }
+ else
+ {
+ s = foo ();
+ r = foo2 ();
+ }
+
+ return r;
+}
+
+/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre"} } */
+/* { dg-final { scan-tree-dump-times "foo2 \\(" 1 "pre"} } */
+/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/pr51879-17.c b/gcc/testsuite/gcc.dg/pr51879-17.c
new file mode 100644
index 00000000000..806fe7b0f61
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr51879-17.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-pre" } */
+
+struct S {
+ int i;
+};
+
+extern struct S foo (void);
+extern int foo2 (void);
+
+struct S s, s2;
+
+int bar (int c) {
+ int r;
+
+ if (c)
+ {
+ s = foo ();
+ r = foo2 ();
+ }
+ else
+ {
+ s2 = foo ();
+ r = foo2 ();
+ }
+
+ return r;
+}
+
+/* { dg-final { scan-tree-dump-times "foo \\(" 2 "pre"} } */
+/* { dg-final { scan-tree-dump-times "foo2 \\(" 2 "pre"} } */
+/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/pr51879-18.c b/gcc/testsuite/gcc.dg/pr51879-18.c
new file mode 100644
index 00000000000..95629f12261
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr51879-18.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-pre -fno-tree-copy-prop -fno-tree-dominator-opts -fno-tree-copyrename" } */
+
+extern int foo (void);
+
+void bar (int c, int *p)
+{
+ int *q = p;
+
+ if (c)
+ *p = foo ();
+ else
+ *q = foo ();
+}
+
+/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre"} } */
+/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/pr51879-7.c b/gcc/testsuite/gcc.dg/pr51879-7.c
new file mode 100644
index 00000000000..6c1d3209c92
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr51879-7.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-pre" } */
+
+int bar (int);
+
+int z;
+
+void
+foo (int y)
+{
+ if (y == 6)
+ z = 5;
+ else
+ z = 5;
+}
+
+/* { dg-final { scan-tree-dump-times "z = 5" 1 "pre"} } */
+/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/pr53701.c b/gcc/testsuite/gcc.dg/pr53701.c
new file mode 100644
index 00000000000..2c852238110
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr53701.c
@@ -0,0 +1,59 @@
+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O3 -fselective-scheduling2 -fsel-sched-pipelining" } */
+typedef unsigned short int uint16_t;
+typedef unsigned long int uintptr_t;
+typedef struct GFX_VTABLE
+{
+ int color_depth;
+ unsigned char *line[];
+}
+BITMAP;
+extern int _drawing_mode;
+extern BITMAP *_drawing_pattern;
+extern int _drawing_y_anchor;
+extern unsigned int _drawing_x_mask;
+extern unsigned int _drawing_y_mask;
+extern uintptr_t bmp_write_line (BITMAP *, int);
+ void
+_linear_hline15 (BITMAP * dst, int dx1, int dy, int dx2, int color)
+{
+ int w;
+ if (_drawing_mode == 0)
+ {
+ int x, curw;
+ unsigned short *sline =
+ (unsigned short *) (_drawing_pattern->
+ line[((dy) -
+ _drawing_y_anchor) & _drawing_y_mask]);
+ unsigned short *s;
+ unsigned short *d =
+ ((unsigned short *) (bmp_write_line (dst, dy)) + (dx1));
+ s = ((unsigned short *) (sline) + (x));
+ if (_drawing_mode == 2)
+ {
+ }
+ else if (_drawing_mode == 3)
+ {
+ do
+ {
+ w -= curw;
+ do
+ {
+ unsigned long c = (*(s));
+ if (!((unsigned long) (c) == 0x7C1F))
+ {
+ (*((uint16_t *) ((uintptr_t) (d))) = ((color)));
+ }
+ ((s)++);
+ }
+ while (--curw > 0);
+ s = sline;
+ curw =
+ (((w) <
+ ((int) _drawing_x_mask +
+ 1)) ? (w) : ((int) _drawing_x_mask + 1));
+ }
+ while (curw > 0);
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr53849.c b/gcc/testsuite/gcc.dg/pr53849.c
new file mode 100644
index 00000000000..eddc45fd9a5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr53849.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target pthread } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fno-tree-loop-im" } */
+
+extern int *b, *e[8], d;
+
+void
+foo (void)
+{
+ int i;
+ for (i = 0; i < 8; ++i)
+ while (--d)
+ e[i] = 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr53881-1.c b/gcc/testsuite/gcc.dg/pr53881-1.c
new file mode 100644
index 00000000000..435d938a400
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr53881-1.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int a, b;
+void
+fn1 ()
+{
+ int c;
+ switch (a)
+ {
+ case 8:
+ c = 0;
+ goto Label;
+ case 0:
+ case 1:
+Label:
+ break;
+ default:
+ b = 0;
+ }
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr53881-2.c b/gcc/testsuite/gcc.dg/pr53881-2.c
new file mode 100644
index 00000000000..f6f8f8bcb39
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr53881-2.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int a,b,c;
+void
+fn1 ()
+{
+ switch (a)
+ {
+ case 0:
+ case 10:
+ b=c;
+out_bcon:
+ break;
+ case 3:
+ goto out_bcon;
+ }
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr53887.c b/gcc/testsuite/gcc.dg/pr53887.c
new file mode 100644
index 00000000000..b46126cd2ac
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr53887.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+enum
+{ Failed, NoError, NoDiskette }
+a;
+int b, c;
+void
+fn1 ()
+{
+ if (c)
+ a << 1;
+ switch (b)
+ {
+ default:
+ a << 1;
+ case 0:
+ b = 0;
+ case 1:
+ case NoDiskette:
+ ;
+ }
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr53942.c b/gcc/testsuite/gcc.dg/pr53942.c
new file mode 100644
index 00000000000..6a51d2673dd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr53942.c
@@ -0,0 +1,34 @@
+/* PR rtl-optimization/53942 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-additional-options "-mtune=pentium2" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
+
+struct S
+{
+ unsigned short w[3];
+ unsigned int x, y;
+};
+
+struct S *baz (void);
+
+__attribute__ ((noinline))
+static unsigned char
+foo (struct S *x, unsigned char y)
+{
+ unsigned char c = 0;
+ unsigned char v = x->w[0];
+ c |= v;
+ v = ((x->w[1]) & (1 << y)) ? 1 : 0;
+ c |= v << 1;
+ v = ((x->w[2]) & 0xff) & (1 << y);
+ c |= v << 2;
+ return c;
+}
+
+void
+bar (void)
+{
+ struct S *s = baz ();
+ s->x = foo (s, 6);
+ s->y = foo (s, 7);
+}
diff --git a/gcc/testsuite/gcc.dg/pr54355.c b/gcc/testsuite/gcc.dg/pr54355.c
new file mode 100644
index 00000000000..0a0b7fa970e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr54355.c
@@ -0,0 +1,11 @@
+/* PR c/54355 */
+/* { dg-do compile } */
+
+void
+foo (int i)
+{
+ switch (i)
+ {
+ case 0: T x > /* { dg-error "(label|unknown type|expected)" } */
+ }
+} /* { dg-error "expected" } */
diff --git a/gcc/testsuite/gcc.dg/pr54363.c b/gcc/testsuite/gcc.dg/pr54363.c
new file mode 100644
index 00000000000..aea0f9057b0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr54363.c
@@ -0,0 +1,12 @@
+/* PR c/54363 */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+struct S { char **a; };
+
+void
+test (void)
+{
+ struct S b = { .a = (char **) { "a", "b" } }; /* { dg-warning "(initialization|excess elements)" } */
+ struct S c = { .a = (char *[]) { "a", "b" } };
+}
diff --git a/gcc/testsuite/gcc.dg/predict-7.c b/gcc/testsuite/gcc.dg/predict-7.c
new file mode 100644
index 00000000000..2c1c36f7878
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/predict-7.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-profile_estimate" } */
+
+extern int global;
+
+int bar (int);
+
+void foo (int base)
+{
+ int i;
+ while (global < 10)
+ for (i = base; i < 10; i++)
+ bar (i);
+}
+
+/* { dg-final { scan-tree-dump-times "loop branch heuristics" 0 "profile_estimate"} } */
+/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c
index 438754814bf..d5cf487979f 100644
--- a/gcc/testsuite/gcc.dg/stack-usage-1.c
+++ b/gcc/testsuite/gcc.dg/stack-usage-1.c
@@ -62,6 +62,10 @@
# define SIZE 254
#elif defined (__sh__)
# define SIZE 252
+#elif defined (__frv__)
+# define SIZE 248
+#elif defined (xstormy16)
+# define SIZE 254
#else
# define SIZE 256
#endif
diff --git a/gcc/testsuite/gcc.dg/strict-overflow-4.c b/gcc/testsuite/gcc.dg/strict-overflow-4.c
index 1a8c4ed4330..ad2d635e464 100644
--- a/gcc/testsuite/gcc.dg/strict-overflow-4.c
+++ b/gcc/testsuite/gcc.dg/strict-overflow-4.c
@@ -12,8 +12,5 @@ foo (int i)
return i + 1 > i;
}
-/* We expect to see "<bb N>"; confirm that, so that we know to count
- it in the real test. */
-/* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
-/* { dg-final { scan-tree-dump-times ">|<" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/strlenopt-11.c b/gcc/testsuite/gcc.dg/strlenopt-11.c
index 03f8790d0c6..888eeb20cdc 100644
--- a/gcc/testsuite/gcc.dg/strlenopt-11.c
+++ b/gcc/testsuite/gcc.dg/strlenopt-11.c
@@ -64,7 +64,7 @@ main ()
/* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
/* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
-/* { dg-final { scan-tree-dump-times " D\.\[0-9_\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.0. = " 1 "strlen" } } */
-/* { dg-final { scan-tree-dump-times " D\.\[0-9_\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.6. = " 1 "strlen" } } */
-/* { dg-final { scan-tree-dump-times " D\.\[0-9_\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.9. = " 1 "strlen" } } */
+/* { dg-final { scan-tree-dump-times " _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.0. = " 1 "strlen" } } */
+/* { dg-final { scan-tree-dump-times " _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.6. = " 1 "strlen" } } */
+/* { dg-final { scan-tree-dump-times " _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.9. = " 1 "strlen" } } */
/* { dg-final { cleanup-tree-dump "strlen" } } */
diff --git a/gcc/testsuite/gcc.dg/strlenopt-13.c b/gcc/testsuite/gcc.dg/strlenopt-13.c
index 62effcd64d0..9413cb53e2f 100644
--- a/gcc/testsuite/gcc.dg/strlenopt-13.c
+++ b/gcc/testsuite/gcc.dg/strlenopt-13.c
@@ -61,8 +61,8 @@ main ()
/* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
/* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
-/* { dg-final { scan-tree-dump-times " D\.\[0-9_\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.0. = " 1 "strlen" } } */
-/* { dg-final { scan-tree-dump-times " D\.\[0-9_\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.1. = " 1 "strlen" } } */
-/* { dg-final { scan-tree-dump-times " D\.\[0-9_\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.5. = " 1 "strlen" } } */
-/* { dg-final { scan-tree-dump-times " D\.\[0-9_\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.6. = " 1 "strlen" } } */
+/* { dg-final { scan-tree-dump-times " _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.0. = " 1 "strlen" } } */
+/* { dg-final { scan-tree-dump-times " _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.1. = " 1 "strlen" } } */
+/* { dg-final { scan-tree-dump-times " _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.5. = " 1 "strlen" } } */
+/* { dg-final { scan-tree-dump-times " _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]* l.6. = " 1 "strlen" } } */
/* { dg-final { cleanup-tree-dump "strlen" } } */
diff --git a/gcc/testsuite/gcc.dg/tm/memopt-3.c b/gcc/testsuite/gcc.dg/tm/memopt-3.c
index 77337161c2c..1220ffc4a0b 100644
--- a/gcc/testsuite/gcc.dg/tm/memopt-3.c
+++ b/gcc/testsuite/gcc.dg/tm/memopt-3.c
@@ -16,5 +16,5 @@ int f()
return lala.x[0];
}
-/* { dg-final { scan-tree-dump-times "logging: lala.x\\\[i_1\\\]" 1 "tmmark" } } */
+/* { dg-final { scan-tree-dump-times "logging: lala.x\\\[i_4\\\]" 1 "tmmark" } } */
/* { dg-final { cleanup-tree-dump "tmmark" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/Wsizeof-pointer-memaccess1.c b/gcc/testsuite/gcc.dg/torture/Wsizeof-pointer-memaccess1.c
new file mode 100644
index 00000000000..3897518de63
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/Wsizeof-pointer-memaccess1.c
@@ -0,0 +1,698 @@
+/* Test -Wsizeof-pointer-memaccess warnings. */
+/* { dg-do compile } */
+/* { dg-options "-Wall" } */
+/* Test just twice, once with -O0 non-fortified, once with -O2 fortified. */
+/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" "-O2" } } */
+/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
+
+typedef __SIZE_TYPE__ size_t;
+extern void *memset (void *, int, size_t);
+extern void *memcpy (void *__restrict, const void *__restrict, size_t);
+extern void *memmove (void *__restrict, const void *__restrict, size_t);
+extern int memcmp (const void *, const void *, size_t);
+extern char *strncpy (char *__restrict, const char *__restrict, size_t);
+extern char *strncat (char *__restrict, const char *__restrict, size_t);
+extern char *strndup (const char *, size_t);
+extern int strncmp (const char *, const char *, size_t);
+extern int strncasecmp (const char *, const char *, size_t);
+
+#ifdef __OPTIMIZE__
+# define bos(ptr) __builtin_object_size (ptr, 1)
+# define bos0(ptr) __builtin_object_size (ptr, 0)
+
+__attribute__((__always_inline__, __gnu_inline__, __artificial__))
+extern inline void *
+memset (void *dest, int c, size_t len)
+{
+ return __builtin___memset_chk (dest, c, len, bos0 (dest));
+}
+
+__attribute__((__always_inline__, __gnu_inline__, __artificial__))
+extern inline void *
+memcpy (void *__restrict dest, const void *__restrict src, size_t len)
+{
+ return __builtin___memcpy_chk (dest, src, len, bos0 (dest));
+}
+
+__attribute__((__always_inline__, __gnu_inline__, __artificial__))
+extern inline void *
+memmove (void *dest, const void *src, size_t len)
+{
+ return __builtin___memmove_chk (dest, src, len, bos0 (dest));
+}
+
+__attribute__((__always_inline__, __gnu_inline__, __artificial__))
+extern inline char *
+strncpy (char *__restrict dest, const char *__restrict src, size_t len)
+{
+ return __builtin___strncpy_chk (dest, src, len, bos (dest));
+}
+
+__attribute__((__always_inline__, __gnu_inline__, __artificial__))
+extern inline char *
+strncat (char *dest, const char *src, size_t len)
+{
+ return __builtin___strncat_chk (dest, src, len, bos (dest));
+}
+#endif
+
+struct A { short a, b; int c, d; long e, f; };
+typedef struct A TA;
+typedef struct A *PA;
+typedef TA *PTA;
+struct B {};
+typedef struct B TB;
+typedef struct B *PB;
+typedef TB *PTB;
+typedef int X[3][3][3];
+
+int
+f1 (void *x, int z)
+{
+ struct A a, *pa1 = &a;
+ TA *pa2 = &a;
+ PA pa3 = &a;
+ PTA pa4 = &a;
+ memset (&a, 0, sizeof (&a)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memset (pa1, 0, sizeof (pa1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pa2, 0, sizeof pa2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pa3, 0, sizeof (pa3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pa4, 0, sizeof pa4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pa1, 0, sizeof (struct A *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memset (pa2, 0, sizeof (PTA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memset (pa3, 0, sizeof (PA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memset (pa4, 0, sizeof (__typeof (pa4))); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ memcpy (&a, x, sizeof (&a)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memcpy (pa1, x, sizeof (pa1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pa2, x, sizeof pa2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pa3, x, sizeof (pa3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pa4, x, sizeof pa4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pa1, x, sizeof (struct A *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (pa2, x, sizeof (PTA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (pa3, x, sizeof (PA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (pa4, x, sizeof (__typeof (pa4))); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ memcpy (x, &a, sizeof (&a)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ memcpy (x, pa1, sizeof (pa1)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pa2, sizeof pa2); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pa3, sizeof (pa3)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pa4, sizeof pa4); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pa1, sizeof (struct A *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (x, pa2, sizeof (PTA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (x, pa3, sizeof (PA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (x, pa4, sizeof (__typeof (pa4))); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+
+ memmove (&a, x, sizeof (&a)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memmove (pa1, x, sizeof (pa1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pa2, x, sizeof pa2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pa3, x, sizeof (pa3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pa4, x, sizeof pa4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pa1, x, sizeof (struct A *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memmove (pa2, x, sizeof (PTA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memmove (pa3, x, sizeof (PA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memmove (pa4, x, sizeof (__typeof (pa4)));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ memmove (x, &a, sizeof (&a)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ memmove (x, pa1, sizeof (pa1)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pa2, sizeof pa2); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pa3, sizeof (pa3)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pa4, sizeof pa4); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pa1, sizeof (struct A *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memmove (x, pa2, sizeof (PTA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memmove (x, pa3, sizeof (PA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memmove (x, pa4, sizeof (__typeof (pa4)));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+
+ z += memcmp (&a, x, sizeof (&a)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ z += memcmp (pa1, x, sizeof (pa1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pa2, x, sizeof pa2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pa3, x, sizeof (pa3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pa4, x, sizeof pa4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pa1, x, sizeof (struct A *));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (pa2, x, sizeof (PTA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (pa3, x, sizeof (PA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ z += memcmp (x, &a, sizeof (&a)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ z += memcmp (x, pa1, sizeof (pa1)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pa2, sizeof pa2); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pa3, sizeof (pa3)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pa4, sizeof pa4); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pa1, sizeof (struct A *));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (x, pa2, sizeof (PTA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (x, pa3, sizeof (PA)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+
+ /* These are correct, no warning. */
+ memset (&a, 0, sizeof a);
+ memset (&a, 0, sizeof (a));
+ memset (&a, 0, sizeof (struct A));
+ memset (&a, 0, sizeof (const struct A));
+ memset (&a, 0, sizeof (volatile struct A));
+ memset (&a, 0, sizeof (volatile const struct A));
+ memset (&a, 0, sizeof (TA));
+ memset (&a, 0, sizeof (__typeof (*&a)));
+ memset (pa1, 0, sizeof (*pa1));
+ memset (pa2, 0, sizeof (*pa3));
+ memset (pa3, 0, sizeof (__typeof (*pa3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memset ((void *) &a, 0, sizeof (&a));
+ memset ((char *) &a, 0, sizeof (&a));
+ memset (&a, 0, sizeof (&a) + 0);
+ memset (&a, 0, 0 + sizeof (&a));
+
+ /* These are correct, no warning. */
+ memcpy (&a, x, sizeof a);
+ memcpy (&a, x, sizeof (a));
+ memcpy (&a, x, sizeof (struct A));
+ memcpy (&a, x, sizeof (const struct A));
+ memcpy (&a, x, sizeof (volatile struct A));
+ memcpy (&a, x, sizeof (volatile const struct A));
+ memcpy (&a, x, sizeof (TA));
+ memcpy (&a, x, sizeof (__typeof (*&a)));
+ memcpy (pa1, x, sizeof (*pa1));
+ memcpy (pa2, x, sizeof (*pa3));
+ memcpy (pa3, x, sizeof (__typeof (*pa3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memcpy ((void *) &a, x, sizeof (&a));
+ memcpy ((char *) &a, x, sizeof (&a));
+ memcpy (&a, x, sizeof (&a) + 0);
+ memcpy (&a, x, 0 + sizeof (&a));
+
+ /* These are correct, no warning. */
+ memcpy (x, &a, sizeof a);
+ memcpy (x, &a, sizeof (a));
+ memcpy (x, &a, sizeof (struct A));
+ memcpy (x, &a, sizeof (const struct A));
+ memcpy (x, &a, sizeof (volatile struct A));
+ memcpy (x, &a, sizeof (volatile const struct A));
+ memcpy (x, &a, sizeof (TA));
+ memcpy (x, &a, sizeof (__typeof (*&a)));
+ memcpy (x, pa1, sizeof (*pa1));
+ memcpy (x, pa2, sizeof (*pa3));
+ memcpy (x, pa3, sizeof (__typeof (*pa3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memcpy (x, (void *) &a, sizeof (&a));
+ memcpy (x, (char *) &a, sizeof (&a));
+ memcpy (x, &a, sizeof (&a) + 0);
+ memcpy (x, &a, 0 + sizeof (&a));
+
+ /* These are correct, no warning. */
+ memmove (&a, x, sizeof a);
+ memmove (&a, x, sizeof (a));
+ memmove (&a, x, sizeof (struct A));
+ memmove (&a, x, sizeof (const struct A));
+ memmove (&a, x, sizeof (volatile struct A));
+ memmove (&a, x, sizeof (volatile const struct A));
+ memmove (&a, x, sizeof (TA));
+ memmove (&a, x, sizeof (__typeof (*&a)));
+ memmove (pa1, x, sizeof (*pa1));
+ memmove (pa2, x, sizeof (*pa3));
+ memmove (pa3, x, sizeof (__typeof (*pa3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memmove ((void *) &a, x, sizeof (&a));
+ memmove ((char *) &a, x, sizeof (&a));
+ memmove (&a, x, sizeof (&a) + 0);
+ memmove (&a, x, 0 + sizeof (&a));
+
+ /* These are correct, no warning. */
+ memmove (x, &a, sizeof a);
+ memmove (x, &a, sizeof (a));
+ memmove (x, &a, sizeof (struct A));
+ memmove (x, &a, sizeof (const struct A));
+ memmove (x, &a, sizeof (volatile struct A));
+ memmove (x, &a, sizeof (volatile const struct A));
+ memmove (x, &a, sizeof (TA));
+ memmove (x, &a, sizeof (__typeof (*&a)));
+ memmove (x, pa1, sizeof (*pa1));
+ memmove (x, pa2, sizeof (*pa3));
+ memmove (x, pa3, sizeof (__typeof (*pa3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memmove (x, (void *) &a, sizeof (&a));
+ memmove (x, (char *) &a, sizeof (&a));
+ memmove (x, &a, sizeof (&a) + 0);
+ memmove (x, &a, 0 + sizeof (&a));
+
+ /* These are correct, no warning. */
+ z += memcmp (&a, x, sizeof a);
+ z += memcmp (&a, x, sizeof (a));
+ z += memcmp (&a, x, sizeof (struct A));
+ z += memcmp (&a, x, sizeof (const struct A));
+ z += memcmp (&a, x, sizeof (volatile struct A));
+ z += memcmp (&a, x, sizeof (volatile const struct A));
+ z += memcmp (&a, x, sizeof (TA));
+ z += memcmp (&a, x, sizeof (__typeof (*&a)));
+ z += memcmp (pa1, x, sizeof (*pa1));
+ z += memcmp (pa2, x, sizeof (*pa3));
+ z += memcmp (pa3, x, sizeof (__typeof (*pa3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ z += memcmp ((void *) &a, x, sizeof (&a));
+ z += memcmp ((char *) &a, x, sizeof (&a));
+ z += memcmp (&a, x, sizeof (&a) + 0);
+ z += memcmp (&a, x, 0 + sizeof (&a));
+
+ /* These are correct, no warning. */
+ z += memcmp (x, &a, sizeof a);
+ z += memcmp (x, &a, sizeof (a));
+ z += memcmp (x, &a, sizeof (struct A));
+ z += memcmp (x, &a, sizeof (const struct A));
+ z += memcmp (x, &a, sizeof (volatile struct A));
+ z += memcmp (x, &a, sizeof (volatile const struct A));
+ z += memcmp (x, &a, sizeof (TA));
+ z += memcmp (x, &a, sizeof (__typeof (*&a)));
+ z += memcmp (x, pa1, sizeof (*pa1));
+ z += memcmp (x, pa2, sizeof (*pa3));
+ z += memcmp (x, pa3, sizeof (__typeof (*pa3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ z += memcmp (x, (void *) &a, sizeof (&a));
+ z += memcmp (x, (char *) &a, sizeof (&a));
+ z += memcmp (x, &a, sizeof (&a) + 0);
+ z += memcmp (x, &a, 0 + sizeof (&a));
+
+ return z;
+}
+
+int
+f2 (void *x, int z)
+{
+ struct B b, *pb1 = &b;
+ TB *pb2 = &b;
+ PB pb3 = &b;
+ PTB pb4 = &b;
+ memset (&b, 0, sizeof (&b)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memset (pb1, 0, sizeof (pb1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pb2, 0, sizeof pb2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pb3, 0, sizeof (pb3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pb4, 0, sizeof pb4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memset (pb1, 0, sizeof (struct B *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memset (pb2, 0, sizeof (PTB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memset (pb3, 0, sizeof (PB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memset (pb4, 0, sizeof (__typeof (pb4))); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ memcpy (&b, x, sizeof (&b)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memcpy (pb1, x, sizeof (pb1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pb2, x, sizeof pb2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pb3, x, sizeof (pb3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pb4, x, sizeof pb4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memcpy (pb1, x, sizeof (struct B *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (pb2, x, sizeof (PTB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (pb3, x, sizeof (PB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (pb4, x, sizeof (__typeof (pb4))); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ memcpy (x, &b, sizeof (&b)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ memcpy (x, pb1, sizeof (pb1)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pb2, sizeof pb2); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pb3, sizeof (pb3)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pb4, sizeof pb4); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memcpy (x, pb1, sizeof (struct B *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (x, pb2, sizeof (PTB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (x, pb3, sizeof (PB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memcpy (x, pb4, sizeof (__typeof (pb4))); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+
+ memmove (&b, x, sizeof (&b)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memmove (pb1, x, sizeof (pb1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pb2, x, sizeof pb2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pb3, x, sizeof (pb3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pb4, x, sizeof pb4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ memmove (pb1, x, sizeof (struct B *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memmove (pb2, x, sizeof (PTB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memmove (pb3, x, sizeof (PB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ memmove (pb4, x, sizeof (__typeof (pb4)));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ memmove (x, &b, sizeof (&b)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ memmove (x, pb1, sizeof (pb1)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pb2, sizeof pb2); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pb3, sizeof (pb3)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pb4, sizeof pb4); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ memmove (x, pb1, sizeof (struct B *)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memmove (x, pb2, sizeof (PTB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memmove (x, pb3, sizeof (PB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ memmove (x, pb4, sizeof (__typeof (pb4)));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+
+ z += memcmp (&b, x, sizeof (&b)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ z += memcmp (pb1, x, sizeof (pb1)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pb2, x, sizeof pb2); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pb3, x, sizeof (pb3)); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pb4, x, sizeof pb4); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+ z += memcmp (pb1, x, sizeof (struct B *));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (pb2, x, sizeof (PTB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (pb3, x, sizeof (PB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the destination; expected \[^\n\r\]* or an explicit length" } */
+
+ z += memcmp (x, &b, sizeof (&b)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ z += memcmp (x, pb1, sizeof (pb1)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pb2, sizeof pb2); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pb3, sizeof (pb3)); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pb4, sizeof pb4); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+ z += memcmp (x, pb1, sizeof (struct B *));/* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (x, pb2, sizeof (PTB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+ z += memcmp (x, pb3, sizeof (PB)); /* { dg-warning "call is the same pointer type \[^\n\r\]* as the source; expected \[^\n\r\]* or an explicit length" } */
+
+ /* These are correct, no warning. */
+ memset (&b, 0, sizeof b);
+ memset (&b, 0, sizeof (b));
+ memset (&b, 0, sizeof (struct B));
+ memset (&b, 0, sizeof (const struct B));
+ memset (&b, 0, sizeof (volatile struct B));
+ memset (&b, 0, sizeof (volatile const struct B));
+ memset (&b, 0, sizeof (TB));
+ memset (&b, 0, sizeof (__typeof (*&b)));
+ memset (pb1, 0, sizeof (*pb1));
+ memset (pb2, 0, sizeof (*pb3));
+ memset (pb3, 0, sizeof (__typeof (*pb3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memset ((void *) &b, 0, sizeof (&b));
+ memset ((char *) &b, 0, sizeof (&b));
+ memset (&b, 0, sizeof (&b) + 0);
+ memset (&b, 0, 0 + sizeof (&b));
+
+ /* These are correct, no warning. */
+ memcpy (&b, x, sizeof b);
+ memcpy (&b, x, sizeof (b));
+ memcpy (&b, x, sizeof (struct B));
+ memcpy (&b, x, sizeof (const struct B));
+ memcpy (&b, x, sizeof (volatile struct B));
+ memcpy (&b, x, sizeof (volatile const struct B));
+ memcpy (&b, x, sizeof (TB));
+ memcpy (&b, x, sizeof (__typeof (*&b)));
+ memcpy (pb1, x, sizeof (*pb1));
+ memcpy (pb2, x, sizeof (*pb3));
+ memcpy (pb3, x, sizeof (__typeof (*pb3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memcpy ((void *) &b, x, sizeof (&b));
+ memcpy ((char *) &b, x, sizeof (&b));
+ memcpy (&b, x, sizeof (&b) + 0);
+ memcpy (&b, x, 0 + sizeof (&b));
+
+ /* These are correct, no warning. */
+ memcpy (x, &b, sizeof b);
+ memcpy (x, &b, sizeof (b));
+ memcpy (x, &b, sizeof (struct B));
+ memcpy (x, &b, sizeof (const struct B));
+ memcpy (x, &b, sizeof (volatile struct B));
+ memcpy (x, &b, sizeof (volatile const struct B));
+ memcpy (x, &b, sizeof (TB));
+ memcpy (x, &b, sizeof (__typeof (*&b)));
+ memcpy (x, pb1, sizeof (*pb1));
+ memcpy (x, pb2, sizeof (*pb3));
+ memcpy (x, pb3, sizeof (__typeof (*pb3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memcpy (x, (void *) &b, sizeof (&b));
+ memcpy (x, (char *) &b, sizeof (&b));
+ memcpy (x, &b, sizeof (&b) + 0);
+ memcpy (x, &b, 0 + sizeof (&b));
+
+ /* These are correct, no warning. */
+ memmove (&b, x, sizeof b);
+ memmove (&b, x, sizeof (b));
+ memmove (&b, x, sizeof (struct B));
+ memmove (&b, x, sizeof (const struct B));
+ memmove (&b, x, sizeof (volatile struct B));
+ memmove (&b, x, sizeof (volatile const struct B));
+ memmove (&b, x, sizeof (TB));
+ memmove (&b, x, sizeof (__typeof (*&b)));
+ memmove (pb1, x, sizeof (*pb1));
+ memmove (pb2, x, sizeof (*pb3));
+ memmove (pb3, x, sizeof (__typeof (*pb3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memmove ((void *) &b, x, sizeof (&b));
+ memmove ((char *) &b, x, sizeof (&b));
+ memmove (&b, x, sizeof (&b) + 0);
+ memmove (&b, x, 0 + sizeof (&b));
+
+ /* These are correct, no warning. */
+ memmove (x, &b, sizeof b);
+ memmove (x, &b, sizeof (b));
+ memmove (x, &b, sizeof (struct B));
+ memmove (x, &b, sizeof (const struct B));
+ memmove (x, &b, sizeof (volatile struct B));
+ memmove (x, &b, sizeof (volatile const struct B));
+ memmove (x, &b, sizeof (TB));
+ memmove (x, &b, sizeof (__typeof (*&b)));
+ memmove (x, pb1, sizeof (*pb1));
+ memmove (x, pb2, sizeof (*pb3));
+ memmove (x, pb3, sizeof (__typeof (*pb3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ memmove (x, (void *) &b, sizeof (&b));
+ memmove (x, (char *) &b, sizeof (&b));
+ memmove (x, &b, sizeof (&b) + 0);
+ memmove (x, &b, 0 + sizeof (&b));
+
+ /* These are correct, no warning. */
+ z += memcmp (&b, x, sizeof b);
+ z += memcmp (&b, x, sizeof (b));
+ z += memcmp (&b, x, sizeof (struct B));
+ z += memcmp (&b, x, sizeof (const struct B));
+ z += memcmp (&b, x, sizeof (volatile struct B));
+ z += memcmp (&b, x, sizeof (volatile const struct B));
+ z += memcmp (&b, x, sizeof (TB));
+ z += memcmp (&b, x, sizeof (__typeof (*&b)));
+ z += memcmp (pb1, x, sizeof (*pb1));
+ z += memcmp (pb2, x, sizeof (*pb3));
+ z += memcmp (pb3, x, sizeof (__typeof (*pb3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ z += memcmp ((void *) &b, x, sizeof (&b));
+ z += memcmp ((char *) &b, x, sizeof (&b));
+ z += memcmp (&b, x, sizeof (&b) + 0);
+ z += memcmp (&b, x, 0 + sizeof (&b));
+
+ /* These are correct, no warning. */
+ z += memcmp (x, &b, sizeof b);
+ z += memcmp (x, &b, sizeof (b));
+ z += memcmp (x, &b, sizeof (struct B));
+ z += memcmp (x, &b, sizeof (const struct B));
+ z += memcmp (x, &b, sizeof (volatile struct B));
+ z += memcmp (x, &b, sizeof (volatile const struct B));
+ z += memcmp (x, &b, sizeof (TB));
+ z += memcmp (x, &b, sizeof (__typeof (*&b)));
+ z += memcmp (x, pb1, sizeof (*pb1));
+ z += memcmp (x, pb2, sizeof (*pb3));
+ z += memcmp (x, pb3, sizeof (__typeof (*pb3)));
+ /* These are probably broken, but obfuscated, no warning. */
+ z += memcmp (x, (void *) &b, sizeof (&b));
+ z += memcmp (x, (char *) &b, sizeof (&b));
+ z += memcmp (x, &b, sizeof (&b) + 0);
+ z += memcmp (x, &b, 0 + sizeof (&b));
+
+ return z;
+}
+
+int
+f3 (void *x, char *y, int z, X w)
+{
+ unsigned char *y1 = (unsigned char *) __builtin_alloca (z + 16);
+ char buf1[7];
+ signed char buf2[z + 32];
+ long buf3[17];
+ int *buf4[9];
+ signed char *y2 = buf2;
+ char c;
+ char *y3;
+ memset (y, 0, sizeof (y)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memset (y1, 0, sizeof (y1)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memset (y2, 0, sizeof (y2)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memset (&c, 0, sizeof (&c)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memset (w, 0, sizeof w); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+
+ memcpy (y, x, sizeof (y)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memcpy (y1, x, sizeof (y1)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memcpy (y2, x, sizeof (y2)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memcpy (&c, x, sizeof (&c)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memcpy (w, x, sizeof w); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+
+ memcpy (x, y, sizeof (y)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ memcpy (x, y1, sizeof (y1)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ memcpy (x, y2, sizeof (y2)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ memcpy (x, &c, sizeof (&c)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ memcpy (x, w, sizeof w); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+
+ memmove (y, x, sizeof (y)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memmove (y1, x, sizeof (y1)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memmove (y2, x, sizeof (y2)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ memmove (&c, x, sizeof (&c)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ memmove (w, x, sizeof w); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+
+ memmove (x, y, sizeof (y)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ memmove (x, y1, sizeof (y1)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ memmove (x, y2, sizeof (y2)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ memmove (x, &c, sizeof (&c)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ memmove (x, w, sizeof w); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+
+ z += memcmp (y, x, sizeof (y)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ z += memcmp (y1, x, sizeof (y1)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ z += memcmp (y2, x, sizeof (y2)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ z += memcmp (&c, x, sizeof (&c)); /* { dg-warning "call is the same expression as the destination; did you mean to remove the addressof" } */
+ z += memcmp (w, x, sizeof w); /* { dg-warning "call is the same expression as the destination; did you mean to dereference it" } */
+
+ z += memcmp (x, y, sizeof (y)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ z += memcmp (x, y1, sizeof (y1)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ z += memcmp (x, y2, sizeof (y2)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ z += memcmp (x, &c, sizeof (&c)); /* { dg-warning "call is the same expression as the source; did you mean to remove the addressof" } */
+ z += memcmp (x, w, sizeof w); /* { dg-warning "call is the same expression as the source; did you mean to dereference it" } */
+
+ /* These are correct, no warning. */
+ memset (y, 0, sizeof (*y));
+ memset (y1, 0, sizeof (*y2));
+ memset (buf1, 0, sizeof buf1);
+ memset (buf3, 0, sizeof (buf3));
+ memset (&buf3[0], 0, sizeof (buf3));
+ memset (&buf4[0], 0, sizeof (buf4));
+ memset (w, 0, sizeof (X));
+ /* These are probably broken, but obfuscated, no warning. */
+ memset ((void *) y, 0, sizeof (y));
+ memset ((char *) y1, 0, sizeof (y2));
+ memset (y, 0, sizeof (y) + 0);
+ memset (y1, 0, 0 + sizeof (y2));
+ memset ((void *) &c, 0, sizeof (&c));
+ memset ((signed char *) &c, 0, sizeof (&c));
+ memset (&c, 0, sizeof (&c) + 0);
+ memset (&c, 0, 0 + sizeof (&c));
+
+ /* These are correct, no warning. */
+ memcpy (y, x, sizeof (*y));
+ memcpy (y1, x, sizeof (*y2));
+ memcpy (buf1, x, sizeof buf1);
+ memcpy (buf3, x, sizeof (buf3));
+ memcpy (&buf3[0], x, sizeof (buf3));
+ memcpy (&buf4[0], x, sizeof (buf4));
+ memcpy (&y3, y, sizeof (y3));
+ memcpy ((char *) &y3, y, sizeof (y3));
+ memcpy (w, x, sizeof (X));
+ /* These are probably broken, but obfuscated, no warning. */
+ memcpy ((void *) y, x, sizeof (y));
+ memcpy ((char *) y1, x, sizeof (y2));
+ memcpy (y, x, sizeof (y) + 0);
+ memcpy (y1, x, 0 + sizeof (y2));
+ memcpy ((void *) &c, x, sizeof (&c));
+ memcpy ((signed char *) &c, x, sizeof (&c));
+ memcpy (&c, x, sizeof (&c) + 0);
+ memcpy (&c, x, 0 + sizeof (&c));
+
+ /* These are correct, no warning. */
+ memcpy (x, y, sizeof (*y));
+ memcpy (x, y1, sizeof (*y2));
+ memcpy (x, buf1, sizeof buf1);
+ memcpy (x, buf3, sizeof (buf3));
+ memcpy (x, &buf3[0], sizeof (buf3));
+ memcpy (x, &buf4[0], sizeof (buf4));
+ memcpy (y, &y3, sizeof (y3));
+ memcpy (y, (char *) &y3, sizeof (y3));
+ memcpy (x, w, sizeof (X));
+ /* These are probably broken, but obfuscated, no warning. */
+ memcpy (x, (void *) y, sizeof (y));
+ memcpy (x, (char *) y1, sizeof (y2));
+ memcpy (x, y, sizeof (y) + 0);
+ memcpy (x, y1, 0 + sizeof (y2));
+ memcpy (x, (void *) &c, sizeof (&c));
+ memcpy (x, (signed char *) &c, sizeof (&c));
+ memcpy (x, &c, sizeof (&c) + 0);
+ memcpy (x, &c, 0 + sizeof (&c));
+
+ /* These are correct, no warning. */
+ memmove (y, x, sizeof (*y));
+ memmove (y1, x, sizeof (*y2));
+ memmove (buf1, x, sizeof buf1);
+ memmove (buf3, x, sizeof (buf3));
+ memmove (&buf3[0], x, sizeof (buf3));
+ memmove (&buf4[0], x, sizeof (buf4));
+ memmove (&y3, y, sizeof (y3));
+ memmove ((char *) &y3, y, sizeof (y3));
+ memmove (w, x, sizeof (X));
+ /* These are probably broken, but obfuscated, no warning. */
+ memmove ((void *) y, x, sizeof (y));
+ memmove ((char *) y1, x, sizeof (y2));
+ memmove (y, x, sizeof (y) + 0);
+ memmove (y1, x, 0 + sizeof (y2));
+ memmove ((void *) &c, x, sizeof (&c));
+ memmove ((signed char *) &c, x, sizeof (&c));
+ memmove (&c, x, sizeof (&c) + 0);
+ memmove (&c, x, 0 + sizeof (&c));
+
+ /* These are correct, no warning. */
+ memmove (x, y, sizeof (*y));
+ memmove (x, y1, sizeof (*y2));
+ memmove (x, buf1, sizeof buf1);
+ memmove (x, buf3, sizeof (buf3));
+ memmove (x, &buf3[0], sizeof (buf3));
+ memmove (x, &buf4[0], sizeof (buf4));
+ memmove (y, &y3, sizeof (y3));
+ memmove (y, (char *) &y3, sizeof (y3));
+ memmove (x, w, sizeof (X));
+ /* These are probably broken, but obfuscated, no warning. */
+ memmove (x, (void *) y, sizeof (y));
+ memmove (x, (char *) y1, sizeof (y2));
+ memmove (x, y, sizeof (y) + 0);
+ memmove (x, y1, 0 + sizeof (y2));
+ memmove (x, (void *) &c, sizeof (&c));
+ memmove (x, (signed char *) &c, sizeof (&c));
+ memmove (x, &c, sizeof (&c) + 0);
+ memmove (x, &c, 0 + sizeof (&c));
+
+ /* These are correct, no warning. */
+ z += memcmp (y, x, sizeof (*y));
+ z += memcmp (y1, x, sizeof (*y2));
+ z += memcmp (buf1, x, sizeof buf1);
+ z += memcmp (buf3, x, sizeof (buf3));
+ z += memcmp (&buf3[0], x, sizeof (buf3));
+ z += memcmp (&buf4[0], x, sizeof (buf4));
+ z += memcmp (&y3, y, sizeof (y3));
+ z += memcmp ((char *) &y3, y, sizeof (y3));
+ z += memcmp (w, x, sizeof (X));
+ /* These are probably broken, but obfuscated, no warning. */
+ z += memcmp ((void *) y, x, sizeof (y));
+ z += memcmp ((char *) y1, x, sizeof (y2));
+ z += memcmp (y, x, sizeof (y) + 0);
+ z += memcmp (y1, x, 0 + sizeof (y2));
+ z += memcmp ((void *) &c, x, sizeof (&c));
+ z += memcmp ((signed char *) &c, x, sizeof (&c));
+ z += memcmp (&c, x, sizeof (&c) + 0);
+ z += memcmp (&c, x, 0 + sizeof (&c));
+
+ /* These are correct, no warning. */
+ z += memcmp (x, y, sizeof (*y));
+ z += memcmp (x, y1, sizeof (*y2));
+ z += memcmp (x, buf1, sizeof buf1);
+ z += memcmp (x, buf3, sizeof (buf3));
+ z += memcmp (x, &buf3[0], sizeof (buf3));
+ z += memcmp (x, &buf4[0], sizeof (buf4));
+ z += memcmp (y, &y3, sizeof (y3));
+ z += memcmp (y, (char *) &y3, sizeof (y3));
+ z += memcmp (x, w, sizeof (X));
+ /* These are probably broken, but obfuscated, no warning. */
+ z += memcmp (x, (void *) y, sizeof (y));
+ z += memcmp (x, (char *) y1, sizeof (y2));
+ z += memcmp (x, y, sizeof (y) + 0);
+ z += memcmp (x, y1, 0 + sizeof (y2));
+ z += memcmp (x, (void *) &c, sizeof (&c));
+ z += memcmp (x, (signed char *) &c, sizeof (&c));
+ z += memcmp (x, &c, sizeof (&c) + 0);
+ z += memcmp (x, &c, 0 + sizeof (&c));
+
+ return z;
+}
+
+int
+f4 (char *x, char **y, int z)
+{
+ const char *s1 = "foobarbaz";
+ const char *s2 = "abcde12345678";
+ strncpy (x, s1, sizeof (s1)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ strncat (x, s2, sizeof (s2)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ y[0] = strndup (s1, sizeof (s1)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ z += strncmp (s1, s2, sizeof (s1)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ z += strncmp (s1, s2, sizeof (s2)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+ z += strncasecmp (s1, s2, sizeof (s1)); /* { dg-warning "call is the same expression as the destination; did you mean to provide an explicit length" } */
+ z += strncasecmp (s1, s2, sizeof (s2)); /* { dg-warning "call is the same expression as the source; did you mean to provide an explicit length" } */
+
+ /* These are correct, no warning. */
+ const char s3[] = "foobarbaz";
+ const char s4[] = "abcde12345678";
+ strncpy (x, s3, sizeof (s3));
+ strncat (x, s4, sizeof (s4));
+ y[1] = strndup (s3, sizeof (s3));
+ z += strncmp (s3, s4, sizeof (s3));
+ z += strncmp (s3, s4, sizeof (s4));
+ z += strncasecmp (s3, s4, sizeof (s3));
+ z += strncasecmp (s3, s4, sizeof (s4));
+
+ return z;
+}
+
+/* { dg-prune-output "\[\n\r\]*will always overflow\[\n\r\]*" } */
diff --git a/gcc/testsuite/gcc.dg/torture/builtins-1.c b/gcc/testsuite/gcc.dg/torture/builtins-1.c
new file mode 100644
index 00000000000..c0e8210a105
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/builtins-1.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-rtl-expand-all" */
+/* { dg-final { cleanup-rtl-dump "expand" } } */
+int isdigit(int c)
+{
+ return c >= 0;
+}
+
+
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix-1.c b/gcc/testsuite/gcc.dg/torture/matrix-1.c
index 12df17283a0..1b88599bdcd 100644
--- a/gcc/testsuite/gcc.dg/matrix/matrix-1.c
+++ b/gcc/testsuite/gcc.dg/torture/matrix-1.c
@@ -1,5 +1,5 @@
-/* { dg-do compile } */
/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
#include <stdio.h>
#include <stdlib.h>
@@ -88,5 +88,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix-2.c b/gcc/testsuite/gcc.dg/torture/matrix-2.c
index 318faa54ef6..5013671af5c 100644
--- a/gcc/testsuite/gcc.dg/matrix/matrix-2.c
+++ b/gcc/testsuite/gcc.dg/torture/matrix-2.c
@@ -1,5 +1,5 @@
-/* { dg-do compile } */
/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
#include <stdio.h>
@@ -111,5 +111,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump-times "Flattened 2 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix-3.c b/gcc/testsuite/gcc.dg/torture/matrix-3.c
index 28a5a16b7e0..c646899a326 100644
--- a/gcc/testsuite/gcc.dg/matrix/matrix-3.c
+++ b/gcc/testsuite/gcc.dg/torture/matrix-3.c
@@ -95,5 +95,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump-times "Flattened 2 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix-4.c b/gcc/testsuite/gcc.dg/torture/matrix-4.c
index d741b46e416..586443ce287 100644
--- a/gcc/testsuite/gcc.dg/matrix/matrix-4.c
+++ b/gcc/testsuite/gcc.dg/torture/matrix-4.c
@@ -93,5 +93,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump-times "Flattened" 0 "matrix-reorg" } } */
-/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix-5.c b/gcc/testsuite/gcc.dg/torture/matrix-5.c
index 1398c5b429f..9b17567f442 100644
--- a/gcc/testsuite/gcc.dg/matrix/matrix-5.c
+++ b/gcc/testsuite/gcc.dg/torture/matrix-5.c
@@ -1,5 +1,5 @@
-/* { dg-do compile } */
/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
#include <stdio.h>
@@ -94,5 +94,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump-times "Flattened" 0 "matrix-reorg" } } */
-/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix-6.c b/gcc/testsuite/gcc.dg/torture/matrix-6.c
index 536afb5377a..cad63ddabfc 100644
--- a/gcc/testsuite/gcc.dg/matrix/matrix-6.c
+++ b/gcc/testsuite/gcc.dg/torture/matrix-6.c
@@ -1,4 +1,5 @@
-/* { dg-do compile } */
+/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
#include <stdio.h>
@@ -40,7 +41,8 @@ main (int argc, char **argv)
}
for (i = 0; i < ARCHnodes; i++)
for (j = 0; j < 3; j++)
- free (vel[i][j]);
+ if (!(i == 1 && j == 0))
+ free (vel[i][j]);
for (i = 0; i < ARCHnodes; i++)
free (vel[i]);
@@ -93,5 +95,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump-times "Flattened 2 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr53908.c b/gcc/testsuite/gcc.dg/torture/pr53908.c
new file mode 100644
index 00000000000..e96b6352232
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr53908.c
@@ -0,0 +1,288 @@
+/* { dg-do run } */
+/* SEGV at comment below. */
+typedef unsigned int size_t;
+typedef enum har {
+ he_fatal = (-199),
+ he_not_initialized,
+ he_bad_input,
+ he_memory_too_small,
+ he_bad_action,
+ he_duplicate,
+ he_bad_nonce,
+ he_stale_nonce,
+ he_bad_credentials,
+ he_bad_user,
+ he_no_such_user,
+ he_bad_passwd,
+ he_unknown_auth_scheme,
+ he_not_found,
+ he_failed_digest_file_check,
+ he_failed_digest_file_save,
+ he_process_not_privileged,
+ he_other,
+ he_end_of_range,
+ ha_no_error = 0,
+ ha_no_value = 1
+} har;
+typedef enum realm_type
+{
+ axis_realm = 0,
+ ws_realm
+} realm_type;
+
+__attribute__((__noclone__, __noinline__))
+har has_www_auth(char *, size_t, realm_type, har);
+
+__attribute__((__noclone__, __noinline__))
+har has_auth_user(const char *, const char *, realm_type, char *, size_t);
+
+__attribute__((__noclone__, __noinline__))
+char *ha_get_string_value(void);
+
+typedef struct
+{
+ unsigned int track_id;
+ char* user;
+ char* realm;
+ char* authent;
+ int internal_realm;
+} request;
+enum user_response {
+ file_not_found_user_response = -3,
+ access_denied_user_response = -2,
+ no_user_response = -1,
+ ok_user_response = 0
+};
+struct realm_group {
+ char *name;
+ int id;
+ struct realm_group *next;
+};
+struct realm {
+ char *name;
+ char *space;
+ struct realm_group *groups;
+ struct realm *next;
+};
+struct user_info {
+ char *name;
+ int no_groups;
+ int groups[128];
+ struct user_info *next;
+};
+static struct user_info *find_user(const char *user_name);
+static int is_member_of_groups(const struct user_info *user_item,
+ const struct realm_group *groups);
+int authent_author(request *req);
+struct realm *realms = ((void *)0);
+struct user_info *users = ((void *)0);
+static struct user_info*
+find_user(const char *user_name)
+{
+ struct user_info *user_item;
+ user_item = users;
+ while (user_item != ((void *)0)) {
+ /* SEGV due to NULL access here on user_name. See also comment below. */
+ if ((__builtin_strcmp(user_item->name, user_name) == 0))
+ break;
+ user_item = user_item->next;
+ }
+ return user_item;
+}
+static int
+is_member_of_groups(const struct user_info *user_item,
+ const struct realm_group *groups)
+{
+ const struct realm_group *group_item;
+ int i;
+ group_item = groups;
+ while (group_item != ((void *)0)) {
+ for (i = 0; i < user_item->no_groups; i++)
+ if (user_item->groups[i] == group_item->id)
+ return 0;
+ group_item = group_item->next;
+ }
+ return -1;
+}
+char *foo (void) __attribute__((__noclone__, __noinline__));
+char* g_strdup (const char *str) __attribute__((__malloc__, __noclone__, __noinline__));
+int g_strcmp0 (const char *str1, const char *str2);
+static int
+is_basic(char **user)
+{
+ char *passwd_ptr;
+ char *authent = foo();
+ passwd_ptr = __builtin_strchr(authent, ':');
+ if (passwd_ptr != ((void *)0)) {
+ *user = g_strdup(authent);
+ return 0;
+ }
+ return -1;
+}
+static int
+is_digest(char **user)
+{
+ int ret_val = -1;
+ char *authent;
+ authent = ha_get_string_value();
+ if (authent) {
+ *user = g_strdup(authent);
+ ret_val = 0;
+ }
+ return ret_val;
+}
+__attribute__((__noclone__, __noinline__))
+void g_free (void * mem);
+static enum user_response
+get_user_info_from_header(const realm_type type,
+ char **user_name,
+ struct user_info **user_item)
+{
+ int ret_val = no_user_response;
+ if ((type == ws_realm)) {
+ if (is_basic(user_name) == 0)
+ ret_val = access_denied_user_response;
+ if (is_digest(user_name) == 0)
+ ret_val = ok_user_response;
+ } else {
+ if (is_basic(user_name) < 0 &&
+ /* Load of *user_name here, but not after the is_digest call. */
+ is_digest(user_name) < 0)
+ ;
+ else if ((*user_item = find_user(*user_name)) != ((void *)0))
+ ret_val = ok_user_response;
+ else
+ ret_val = access_denied_user_response;
+ if (ret_val != ok_user_response)
+ g_free(*user_name);
+ }
+ return ret_val;
+}
+static enum user_response
+authenticate_user(request *req,
+ char **user_name,
+ struct user_info **user_item)
+{
+ char *authent = ((void *)0);
+ har resp = ha_no_value;
+ enum user_response user_resp;
+ int ret_val = no_user_response;
+ if (req->authent && __builtin_strlen(req->authent)) {
+ authent = req->authent;
+ user_resp = get_user_info_from_header(req->internal_realm,
+ user_name,
+ user_item);
+ if (user_resp == ok_user_response) {
+ resp = has_auth_user(authent, 0, req->internal_realm, "", 1);
+ if (resp == ha_no_error)
+ ret_val = ok_user_response;
+ else if (resp != he_stale_nonce)
+ ret_val = access_denied_user_response;
+ } else if (user_resp == access_denied_user_response)
+ ret_val = access_denied_user_response;
+ }
+ if (resp != he_memory_too_small && resp != ha_no_error)
+ resp = has_www_auth("", 1, req->internal_realm, resp);
+ return ret_val;
+}
+
+int __attribute__ ((__noinline__, __noclone__))
+authent_author(request *req)
+{
+ struct realm *realm;
+ char *user_name = ((void *)0);
+ struct user_info *user_item = ((void *)0);
+ int res = 0;
+ asm ("");
+ realm = realms;
+ if (__builtin_strcmp("Wsd", realm->name) == 0) {
+ req->internal_realm = ws_realm;
+ is_digest(&user_name);
+ }
+ if (authenticate_user(req, &user_name, &user_item) < 0) {
+ if (user_name != ((void *)0))
+ req->user = user_name;
+ res = -2;
+ goto authent_author_return;
+ }
+ if (is_member_of_groups(user_item, realm->groups) < 0)
+ res = -1;
+authent_author_return:
+ return res;
+}
+
+int good0, good1, good2;
+
+__attribute__ ((__noinline__, __noclone__))
+char *foo(void)
+{
+ asm ("");
+ good0++;
+ return "";
+}
+
+__attribute__ ((__noinline__, __noclone__))
+char *ha_get_string_value(void)
+{
+ asm ("");
+ good1++;
+ return "f";
+}
+
+__attribute__ ((__noinline__, __noclone__))
+har has_auth_user(const char *a, const char *b, realm_type c, char *d, size_t e)
+{
+ asm ("");
+ if (*a != 'z' || a[1] != 0 || b != 0 || c != axis_realm || *d != 0
+ || e != 1)
+ __builtin_abort ();
+ return ha_no_error;
+}
+
+__attribute__ ((__noinline__, __noclone__))
+har has_www_auth(char *a, size_t b, realm_type c, har d)
+{
+ (void)(*a+b+c+d);
+ asm ("");
+ __builtin_abort ();
+}
+
+
+char *strdupped_user = "me";
+__attribute__((__malloc__, __noclone__, __noinline__))
+char* g_strdup (const char *str)
+{
+ asm ("");
+ if (*str != 'f')
+ __builtin_abort ();
+ good2++;
+ return strdupped_user;
+}
+
+__attribute__((__noclone__, __noinline__))
+void g_free (void * mem)
+{
+ (void)mem;
+ asm ("");
+ __builtin_abort ();
+}
+
+struct user_info me = { .name = "me", .no_groups = 1, .groups = {42}, .next = 0};
+struct user_info you = { .name = "you", .next = &me};
+struct realm_group xgroups = { .name = "*", .id = 42, .next = 0};
+
+int main(void)
+{
+ char *orig_user = "?";
+ struct realm r = { .name = "x", .space = "space?", .groups = &xgroups, .next = 0};
+ request req = { .user = orig_user, .realm = "!", .authent = "z",
+ .internal_realm = axis_realm};
+ realms = &r;
+ users = &you;
+ if (authent_author (&req) != 0 || good0 != 1 || good1 != 1 || good2 != 1
+ || req.user != orig_user
+ || req.internal_realm != axis_realm)
+ __builtin_abort ();
+ __builtin_exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.dg/torture/pr53922.c b/gcc/testsuite/gcc.dg/torture/pr53922.c
new file mode 100644
index 00000000000..e42d1c788c7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr53922.c
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+/* { dg-require-weak "" } */
+
+int x(int a)
+{
+ return a;
+}
+int y(int a) __attribute__ ((weak));
+int g = 0;
+int main()
+{
+ int (*scan_func)(int);
+ if (g)
+ scan_func = x;
+ else
+ scan_func = y;
+
+ if (scan_func)
+ g = scan_func(10);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr54027.c b/gcc/testsuite/gcc.dg/torture/pr54027.c
new file mode 100644
index 00000000000..b5568f4375c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr54027.c
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+
+int main (void)
+{
+ int x = 1;
+ while (x)
+ x <<= 1;
+ return x;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr54098.c b/gcc/testsuite/gcc.dg/torture/pr54098.c
new file mode 100644
index 00000000000..74398b689cd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr54098.c
@@ -0,0 +1,72 @@
+/* { dg-do compile } */
+
+extern int printf(const char *, ...);
+struct list_head {
+ struct list_head *next, *prev;
+};
+struct resource {
+ unsigned long long start;
+ unsigned long long end;
+ unsigned long flags;
+ struct resource *parent, *sibling, *child;
+};
+struct pci_dev {
+ struct list_head bus_list;
+ struct resource resource[12];
+};
+struct pci_bus {
+ struct list_head devices;
+ unsigned char secondary;
+ unsigned char subordinate;
+};
+struct resource *pci_bus_resource_n(const struct pci_bus *bus, int n);
+static struct resource *find_free_bus_resource(struct pci_bus *bus, unsigned long type) {
+ int i;
+ struct resource *r;
+ unsigned long type_mask = 0x00000100 | 0x00000200 | 0x00002000;
+ for (i = 0; (r = pci_bus_resource_n(bus, i)) || i < 4; i++) {
+ if (r && (r->flags & type_mask) == type && !r->parent) return r;
+ }
+ return ((void *)0);
+}
+static unsigned long long calculate_memsize(unsigned long long size, unsigned long long min_size, unsigned long long size1, unsigned long long old_size, unsigned long long align) {
+ if (old_size == 1 ) old_size = 0;
+ if (size < old_size) size = old_size;
+ return size;
+}
+void pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long type, unsigned long long min_size, unsigned long long add_size, void *realloc_head) {
+ struct pci_dev *dev;
+ unsigned long long min_align, align, size, size0, size1;
+ int order;
+ struct resource *b_res = find_free_bus_resource(bus, type);
+ unsigned long long children_add_size = 0;
+ if (!b_res) return;
+ for (dev = ({
+ const typeof( ((typeof(*dev) *)0)->bus_list ) *__mptr = ((&bus->devices)->next);
+ (typeof(*dev) *)( (char *)__mptr - __builtin_offsetof(typeof(*dev),bus_list) );
+ }
+ );
+ &dev->bus_list != (&bus->devices);
+ dev = ({
+ const typeof( ((typeof(*dev) *)0)->bus_list ) *__mptr = (dev->bus_list.next);
+ (typeof(*dev) *)( (char *)__mptr - __builtin_offsetof(typeof(*dev),bus_list) );
+ }
+ )) {
+ int i;
+ for (i = 0; i < 12; i++) {
+ struct resource *r = &dev->resource[i];
+ unsigned long long r_size;
+ if (r->parent || (r->flags & mask) != type) continue;
+ r_size = r->end - r->start + 1;
+ if (order > 11) {
+ printf("%d: %pR %#llx\n", i, r, (unsigned long long) align);
+ }
+ size += r_size;
+ }
+ }
+ if (children_add_size > add_size) add_size = children_add_size;
+ size1 = (!realloc_head || (realloc_head && !add_size)) ? size0 : calculate_memsize(size, min_size+add_size, 0, b_res->end - b_res->start + 1, min_align);
+ if (!size0 && !size1) {
+ printf("%pR %02x-%02x\n", b_res, bus->secondary, bus->subordinate);
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr54109.c b/gcc/testsuite/gcc.dg/torture/pr54109.c
new file mode 100644
index 00000000000..d4d05263d4d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr54109.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+
+typedef struct
+{
+ unsigned long bits[4];
+} nodemask_t;
+
+struct cpuset
+{
+ long flags;
+ nodemask_t mems_allowed;
+ struct cpuset *parent;
+} b;
+
+void func1(unsigned long *p1, int p2)
+{
+ p1[p2 - 1] = 0;
+}
+
+void func2(nodemask_t *p1, int p2)
+{
+ func1(p1->bits, p2);
+}
+
+void func3(void)
+{
+ /* This accesses b.flags. */
+ func2(&b.mems_allowed, 0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr54261-1.c b/gcc/testsuite/gcc.dg/torture/pr54261-1.c
new file mode 100644
index 00000000000..571727b0c95
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr54261-1.c
@@ -0,0 +1,42 @@
+/* { dg-do run } */
+/* { dg-additional-options "-DSYNC_FALLBACK" { target { ! cas_int } } } */
+
+#ifdef SYNC_FALLBACK
+/* The SYNC_FALLBACK code is just so we don't have to restrict this test
+ to any subset of targets. For targets with no atomics support at
+ all, the cas_int effective-target is false and the fallback provides
+ a PASS. Where the bug trigs (at the time this test-case was added),
+ cas_int is also false but the fallback isn't used. */
+__attribute__((__noinline__, __noclone__))
+int
+# if __INT_MAX__ == 0x7fff
+ __sync_fetch_and_add_2
+# else
+ __sync_fetch_and_add_4
+# endif
+ (int *at, int val)
+{
+ int tmp = *at;
+ asm ("");
+ *at = tmp + val;
+ return tmp;
+}
+#endif
+
+__attribute__((__noinline__, __noclone__))
+void g (int *at, int val)
+{
+ asm ("");
+ __sync_fetch_and_add (at, val);
+}
+
+int main(void)
+{
+ int x = 41;
+ int a = 1;
+ g (&x, a);
+
+ if (x != 42)
+ __builtin_abort ();
+ __builtin_exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr54327.c b/gcc/testsuite/gcc.dg/torture/pr54327.c
new file mode 100644
index 00000000000..fe7499aab33
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr54327.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+
+#include <string.h>
+#include <stdlib.h>
+void treathead ()
+{
+ char *a = ';' == '\0' ? : 0;
+ if (*a == '=')
+ {
+ while (*a == (*a == 0) || *a == '\'')
+ a++;
+ if (strlen (a) < 2)
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pta-callused-1.c b/gcc/testsuite/gcc.dg/torture/pta-callused-1.c
index 93e7d2bed66..5ca71c2a02e 100644
--- a/gcc/testsuite/gcc.dg/torture/pta-callused-1.c
+++ b/gcc/testsuite/gcc.dg/torture/pta-callused-1.c
@@ -21,5 +21,5 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "p.._., points-to vars: { i j }" "alias" } } */
+/* { dg-final { scan-tree-dump "p.._. = { i j }" "alias" } } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c b/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
index 03f23937b96..938fb296b40 100644
--- a/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
+++ b/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
@@ -33,5 +33,5 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "q_., points-to vars: { i j k }" "alias" } } */
+/* { dg-final { scan-tree-dump "q_. = { i j k }" "alias" } } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c b/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
index 7781795b4a7..a90b1c62d3b 100644
--- a/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
+++ b/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
@@ -56,7 +56,7 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "q_const_., points-to non-local, points-to vars: { i }" "alias" } } */
-/* { dg-final { scan-tree-dump "q_pure_., points-to non-local, points-to escaped, points-to vars: { i }" "alias" } } */
-/* { dg-final { scan-tree-dump "q_normal_., points-to non-local, points-to escaped, points-to vars: { }" "alias" } } */
+/* { dg-final { scan-tree-dump "q_const_. = { NONLOCAL i }" "alias" } } */
+/* { dg-final { scan-tree-dump "q_pure_. = { ESCAPED NONLOCAL i }" "alias" } } */
+/* { dg-final { scan-tree-dump "q_normal_. = { ESCAPED NONLOCAL }" "alias" } } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c b/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
index 89c71a99d5b..6ba5871885a 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
@@ -5,6 +5,8 @@
with pre-pushed arguments (e.g. SPARC). */
/* { dg-do run } */
+
+/* { dg-skip-if "Variadic funcs use Base AAPCS. Normal funcs use VFP variant." { arm_hf_eabi } } */
#define INTEGER_ARG 5
diff --git a/gcc/testsuite/gcc.dg/matrix/transpose-1.c b/gcc/testsuite/gcc.dg/torture/transpose-1.c
index 8969ecb2eea..188f3b51b13 100644
--- a/gcc/testsuite/gcc.dg/matrix/transpose-1.c
+++ b/gcc/testsuite/gcc.dg/torture/transpose-1.c
@@ -1,3 +1,6 @@
+/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
+
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
@@ -92,7 +95,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final-use { scan-ipa-dump-times "Transposed" 3 "matrix-reorg" } } */
-/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
-
diff --git a/gcc/testsuite/gcc.dg/matrix/transpose-2.c b/gcc/testsuite/gcc.dg/torture/transpose-2.c
index 5943781ca5f..bff6a3ababc 100644
--- a/gcc/testsuite/gcc.dg/matrix/transpose-2.c
+++ b/gcc/testsuite/gcc.dg/torture/transpose-2.c
@@ -1,3 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
#include <stdio.h>
#include <stdlib.h>
@@ -90,6 +92,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final-use { scan-ipa-dump-times "Transposed" 0 "matrix-reorg" } } */
-/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/transpose-3.c b/gcc/testsuite/gcc.dg/torture/transpose-3.c
index 5defdb8fd17..da7e887013c 100644
--- a/gcc/testsuite/gcc.dg/matrix/transpose-3.c
+++ b/gcc/testsuite/gcc.dg/torture/transpose-3.c
@@ -1,3 +1,6 @@
+/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
+
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
@@ -96,6 +99,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump-times "Flattened 2 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final-use { scan-ipa-dump-times "Transposed" 2 "matrix-reorg" } } */
-/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/transpose-4.c b/gcc/testsuite/gcc.dg/torture/transpose-4.c
index f6eb4657fdc..5a96a5163fd 100644
--- a/gcc/testsuite/gcc.dg/matrix/transpose-4.c
+++ b/gcc/testsuite/gcc.dg/torture/transpose-4.c
@@ -1,3 +1,6 @@
+/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
+
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
@@ -95,6 +98,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final-use { scan-ipa-dump-times "Transposed" 2 "matrix-reorg" } } */
-/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/transpose-5.c b/gcc/testsuite/gcc.dg/torture/transpose-5.c
index 27e84762889..049d7b03e23 100644
--- a/gcc/testsuite/gcc.dg/matrix/transpose-5.c
+++ b/gcc/testsuite/gcc.dg/torture/transpose-5.c
@@ -1,3 +1,6 @@
+/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
+
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
@@ -91,6 +94,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final-use { scan-ipa-dump-times "Transposed" 0 "matrix-reorg" } } */
-/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/matrix/transpose-6.c b/gcc/testsuite/gcc.dg/torture/transpose-6.c
index f7c6a8a72a2..9b3329b5361 100644
--- a/gcc/testsuite/gcc.dg/matrix/transpose-6.c
+++ b/gcc/testsuite/gcc.dg/torture/transpose-6.c
@@ -1,3 +1,6 @@
+/* { dg-do run } */
+/* { dg-options "-fwhole-program" } */
+
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
@@ -91,6 +94,3 @@ mem_init (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
-/* { dg-final-use { scan-ipa-dump-times "Transposed" 0 "matrix-reorg" } } */
-/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vector-shuffle1.c b/gcc/testsuite/gcc.dg/torture/vector-shuffle1.c
new file mode 100644
index 00000000000..14e435b8ad7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/vector-shuffle1.c
@@ -0,0 +1,21 @@
+/* PR54219 */
+/* { dg-do run } */
+
+extern void abort (void);
+
+typedef int v2si __attribute__((vector_size(2*sizeof(int))));
+
+void f(v2si *x)
+{
+ /* This requires canonicalization of the mask to { 1, 0 }. */
+ *x = __builtin_shuffle(*x, *x, (v2si) { 5, 0 });
+}
+
+int main()
+{
+ v2si y = { 1, 2 };
+ f(&y);
+ if (y[0] != 2 || y[1] != 1)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-prof/update-loopch.c b/gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
index 2bce8a2e5ff..e2656a30645 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -fdump-ipa-profile-blocks -fdump-tree-optimized-blocks" } */
+/* { dg-options "-O2 -fdump-ipa-profile-blocks-details -fdump-tree-optimized-blocks-details" } */
int max = 33333;
int a[8];
int
@@ -14,8 +14,8 @@ main ()
/* Loop header copying will peel away the initial conditional, so the loop body
is once reached directly from entry point of function, rest via loopback
edge. */
-/* { dg-final-use { scan-ipa-dump "count:33333" "profile"} } */
-/* { dg-final-use { scan-tree-dump "count:33332" "optimized"} } */
+/* { dg-final-use { scan-ipa-dump "loop depth 0, count 33334" "profile"} } */
+/* { dg-final-use { scan-tree-dump "loop depth 1, count 33332" "optimized"} } */
/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
/* { dg-final-use { cleanup-ipa-dump "profile" } } */
/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c
index 117cddf12a7..7c34ff4496a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c
@@ -17,5 +17,5 @@ int main()
}
/* We should only store to a.i, not load from it. */
-/* { dg-final { scan-tree-dump-times "a.i" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-not "= a.i" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c
index d4ce34bd8cb..1f8a12d85e2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c
@@ -15,7 +15,7 @@ int bar(void)
}
/* We need to have both: a load from "a[0]" and a load from "*p.a",
- the latter can be an ssa temporary. */
+ the latter is an ssa temporary. */
/* { dg-final { scan-tree-dump "= a.0.;" "optimized" } } */
-/* { dg-final { scan-tree-dump "= \\*\[pD\]" "optimized" } } */
+/* { dg-final { scan-tree-dump "= \\*\[^\r\n\]*_.;" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-19.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-19.c
index 63a4eee0fe6..ce36d2c225d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/alias-19.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-19.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -fdump-tree-alias-vops" } */
+/* { dg-options "-O2 -fdump-tree-alias" } */
const static int a;
@@ -26,5 +26,4 @@ int main()
}
/* { dg-final { scan-tree-dump "q_. = { a b }" "alias" } } */
-/* { dg-final { scan-tree-dump "q_., points-to vars: { D..... b }" "alias" } } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-21.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-21.c
new file mode 100644
index 00000000000..4175588121e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-21.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+
+int f(int *r)
+{
+ r[0] = 0;
+ r[1] = 1;
+ return r[0];
+}
+
+
+/* { dg-final { scan-tree-dump-times "return 0;" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-22.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-22.c
new file mode 100644
index 00000000000..8c808fe430f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-22.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+
+int f(int *r)
+{
+ r[1] = 0;
+ r[2] = 1;
+ return r[1];
+}
+
+
+/* { dg-final { scan-tree-dump-times "return 0;" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c
index bcc011898fa..9a41920e76f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c
@@ -15,7 +15,7 @@ int bar(void)
}
/* We need to have both: a load from "a[0]" and a load from "*p.a",
- the latter can be an ssa temporary. */
+ the latter is an ssa temporary. */
/* { dg-final { scan-tree-dump "= a.0.;" "optimized" } } */
-/* { dg-final { scan-tree-dump "= \\*\[pD\]" "optimized" } } */
+/* { dg-final { scan-tree-dump "= \\*\[^\r\n\]*_.;" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c b/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
index 5ed282e49a1..29b27f4ff56 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
@@ -31,6 +31,6 @@ void test(void)
/* { dg-final { scan-tree-dump-times "hardreg" 3 "optimized" } } */
/* In particular, hardreg should *not* appear in the call to bar. */
-/* { dg-final { scan-tree-dump-times "bar \[(\]t_.\[)\]" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "bar \[(\]\[^\n\r\]*_.\[)\]" 1 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c b/gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c
new file mode 100644
index 00000000000..27c4bfa27ce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-ipa-profile_estimate-blocks-details" } */
+
+void g(void);
+void h(void);
+void f(int x, int y)
+{
+ if (x) goto A;
+ if (y) goto B;
+ return;
+
+ A: __attribute__((cold))
+ g();
+ return;
+
+ B: __attribute__((hot))
+ h();
+ return;
+}
+
+/* { dg-final { scan-ipa-dump-times "block 4, loop depth 0, count 0, freq 1\[^0-9\]" 1 "profile_estimate" } } */
+
+/* Note: we're attempting to match some number > 6000, i.e. > 60%.
+ The exact number ought to be tweekable without having to juggle
+ the testcase around too much. */
+/* { dg-final { scan-ipa-dump-times "block 5, loop depth 0, count 0, freq \[6-9\]\[0-9\]\[0-9\]\[0-9\]" 1 "profile_estimate" } } */
+
+/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
index 7b07d7f488f..955e7679134 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
@@ -1,8 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-forwprop1" } */
-/* We should be able to optimize this to b->t[i] = 1 during
- early optimizations. */
+/* We may not optimize this to b->t[i] = 1. */
struct a
{
@@ -15,5 +14,5 @@ void f(struct a * b, __SIZE_TYPE__ i)
c[i] = 1;
}
-/* { dg-final { scan-tree-dump-times "t\\\[i.*\\\].* = 1;" 1 "forwprop1" } } */
+/* { dg-final { scan-tree-dump-times "\\\[\[^\n\r\]*\\\] = 1;" 0 "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c
new file mode 100644
index 00000000000..6d25c1bb4a5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-forwprop2" } */
+
+typedef int vec __attribute__((vector_size (4 * sizeof (int))));
+void f (vec *x1, vec *x2)
+{
+ vec m = { 1, 2, 3, 0 };
+ vec n = { 3, 0, 1, 2 };
+ vec y = __builtin_shuffle (*x1, *x2, n);
+ vec z = __builtin_shuffle (y, m);
+ *x1 = z;
+}
+
+/* { dg-final { scan-tree-dump-not "VEC_PERM_EXPR" "forwprop2" } } */
+/* { dg-final { cleanup-tree-dump "forwprop2" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
index 2aefb9ace63..bcdd78d108e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
@@ -1,8 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-forwprop1" } */
-/* We should be able to optimize this to b->t[i] = 1 during
- early optimizations. */
+/* We may not optimize this to b->t[i] = 1. */
struct a
{
@@ -17,5 +16,5 @@ void f(__SIZE_TYPE__ i)
c[i] = 1;
}
-/* { dg-final { scan-tree-dump-times "t\\\[i.*\\\].* = 1;" 1 "forwprop1" } } */
+/* { dg-final { scan-tree-dump-times "\\\[\[^\n\r\]*\\\] = 1;" 0 "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop?" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c
index a8db74afe14..e9ff9fcfe38 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c
@@ -18,7 +18,7 @@ void xxx(void)
/* Only iter variable should remain. */
-/* { dg-final { scan-tree-dump-times "int iter" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "int jiter" 0 "optimized" } } */
/* And jter shouldn't be an induction variable anymore (no PHI node). */
/* { dg-final { scan-tree-dump-times "jter_\[0-9\]* = PHI" 0 "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
index 52b5942eb3a..62d007d4548 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
@@ -7,5 +7,5 @@ int eqm1_phi (unsigned long a) { return a ? 0 : -1; }
int spaceship1 (long a) { return a > 0 ? 1 : a < 0 ? -1 : 0; }
int spaceship2 (long a) { return a > 0 ? 1 : a == 0 ? 0 : -1; }
-/* { dg-final { scan-tree-dump-times " = -D" 4 "optimized"} } */
+/* { dg-final { scan-tree-dump-times " = -\[^\r\n\]*_.;" 4 "optimized"} } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
index 944acf94921..bd897554e2a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
@@ -18,6 +18,6 @@ int f(int t, int c)
/* There should be one ifs as one of them should be changed into
a conditional and the other should be there still. */
/* { dg-final { scan-tree-dump-times "if" 1 "optimized" } }*/
-/* { dg-final { scan-tree-dump-times "D.\[0-9\]*_\[0-9\]* = c_\[0-9\]*.D. != 0" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\[^\r\n\]*_. = c_\[0-9\]*.D. != 0" 1 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c
index f225f662da4..8bae0145d79 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized-blocks" } */
+/* { dg-options "-O1 -fdump-tree-optimized-blocks-details" } */
void foo (void)
{
@@ -12,17 +12,17 @@ return;
/* The goto &L0 should have been optimized away during CFG
cleanups. */
-/* { dg-final { scan-tree-dump-times "goto &L0" 0 "optimized" } } */
+/* { dg-final { scan-tree-dump-not "goto &L0" "optimized" } } */
/* There should not be any abnormal edges as DOM removed the
computed goto. */
-/* { dg-final { scan-tree-dump-times "ab" 0 "optimized" } } */
+/* { dg-final { scan-tree-dump-not "ABNORMAL" "optimized" } } */
/* And verify that we have fixed the fallthru flag as well.
After DOM we will have two fallthru edges (e->0, 0->1),
- but in the dump files we mention the 0->1 two times. So
- scan for 3 instances of "fallthru". */
+ but in the dump files we mention the 2->3 two times. So
+ scan for 3 instances of "FALLTHRU". */
-/* { dg-final { scan-tree-dump-times "fallthru" 3 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "FALLTHRU" 3 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr18908.c b/gcc/testsuite/gcc.dg/tree-ssa/pr18908.c
index cfc92fec9c4..3707efe36c3 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr18908.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr18908.c
@@ -4,6 +4,6 @@
_Bool f3(_Bool *p) { *p ^= 1; }
/* We should be able to canonicalize the above to use bitwise not. */
-/* { dg-final { scan-tree-dump "~D" "forwprop1" } } */
+/* { dg-final { scan-tree-dump "~\[^\n\r\]*_.;" "forwprop1" } } */
/* { dg-final { scan-tree-dump-not "\\\^ 1" "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr19431.c b/gcc/testsuite/gcc.dg/tree-ssa/pr19431.c
index 1c87acbddda..08972063e0d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr19431.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr19431.c
@@ -24,6 +24,5 @@ int f(int k, int i1, int j1)
return *f1;
}
-/* { dg-final { scan-tree-dump "i1_. = PHI <i1_\[^,\]*, j1_\[^>\]*>" "optimized" } } */
-/* { dg-final { scan-tree-dump "return i1_.;" "optimized" } } */
+/* { dg-final { scan-tree-dump "\[^\r\n\]*_. = PHI <i1_\[^,\]*, j1_\[^>\]*>" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr36881.c b/gcc/testsuite/gcc.dg/tree-ssa/pr36881.c
index 742dd9ddb4b..96922e3a62f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr36881.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr36881.c
@@ -13,7 +13,10 @@ const char *foo (int i)
case 7: p = "abc"; break;
case 2:
case 8: p = "def"; break;
- default: p = "ghi"; break;
+ case 9: p = "ghi"; break;
+ case 5: p = "jkl"; break;
+ case 3: p = "mno"; break;
+ default: p = "prq"; break;
}
return p;
}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr54211.c b/gcc/testsuite/gcc.dg/tree-ssa/pr54211.c
new file mode 100644
index 00000000000..c8a1591b0a9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr54211.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-Os" } */
+
+int a, b;
+unsigned char e;
+void fn1 ()
+{
+ unsigned char *c=0;
+ for (;; a++)
+ {
+ unsigned char d = *(c + b);
+ for (; &e<&d; c++)
+ goto Found_Top;
+ }
+Found_Top:
+ if (0)
+ goto Empty_Bitmap;
+ for (;; a++)
+ {
+ unsigned char *e = c + b;
+ for (; c < e; c++)
+ goto Found_Bottom;
+ c -= b;
+ }
+Found_Bottom:
+Empty_Bitmap:
+ ;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr54245.c b/gcc/testsuite/gcc.dg/tree-ssa/pr54245.c
new file mode 100644
index 00000000000..0e11d06ed85
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr54245.c
@@ -0,0 +1,49 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fdump-tree-slsr-details" } */
+
+#include <stdio.h>
+
+#define W1 22725
+#define W2 21407
+#define W3 19266
+#define W6 8867
+
+void idct_row(short *row, int *dst)
+{
+ int a0, a1, b0, b1;
+
+ a0 = W1 * row[0];
+ a1 = a0;
+
+ a0 += W2 * row[2];
+ a1 += W6 * row[2];
+
+ b0 = W1 * row[1];
+ b1 = W3 * row[1];
+
+ dst[0] = a0 + b0;
+ dst[1] = a0 - b0;
+ dst[2] = a1 + b1;
+ dst[3] = a1 - b1;
+}
+
+static short block[8] = { 1, 2, 3, 4 };
+
+int main(void)
+{
+ int out[4];
+ int i;
+
+ idct_row(block, out);
+
+ for (i = 0; i < 4; i++)
+ printf("%d\n", out[i]);
+
+ return !(out[2] == 87858 && out[3] == 10794);
+}
+
+/* For now, disable inserting an initializer when the multiplication will
+ take place in a smaller type than originally. This test may be deleted
+ in future when this case is handled more precisely. */
+/* { dg-final { scan-tree-dump-times "Inserting initializer" 0 "slsr" } } */
+/* { dg-final { cleanup-tree-dump "slsr" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-1.c
index 7cc19be6c49..a4244171305 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-1.c
@@ -33,5 +33,5 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "ESCAPED, points-to non-local, points-to NULL, points-to vars: { x }" "alias" } } */
+/* { dg-final { scan-tree-dump "ESCAPED = { NULL ESCAPED NONLOCAL x }" "alias" } } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-2.c
index 878352d269c..8580382fca6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-2.c
@@ -34,5 +34,5 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "ESCAPED, points-to non-local, points-to NULL, points-to vars: { x }" "alias" } } */
+/* { dg-final { scan-tree-dump "ESCAPED = { NULL ESCAPED NONLOCAL x }" "alias" } } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-3.c b/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-3.c
index 8e779d8461e..5a121a0d9a7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-3.c
@@ -38,5 +38,5 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "ESCAPED, points-to non-local, points-to NULL, points-to vars: { x }" "alias" } } */
+/* { dg-final { scan-tree-dump "ESCAPED = { NULL ESCAPED NONLOCAL x }" "alias" } } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
index 2a60e1daa23..d4121122bbc 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
@@ -22,5 +22,5 @@ foo(int i, int j, int k, int off)
return *q;
}
-/* { dg-final { scan-tree-dump "q_., points-to vars: { k }" "ealias" } } */
+/* { dg-final { scan-tree-dump "q_. = { k }" "ealias" } } */
/* { dg-final { cleanup-tree-dump "ealias" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
index ddf934bf813..430f216da9d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
@@ -22,5 +22,5 @@ foo(int i, int j, int k, int off)
return *q;
}
-/* { dg-final { scan-tree-dump "q_., points-to vars: { i }" "ealias" } } */
+/* { dg-final { scan-tree-dump "q_. = { i }" "ealias" } } */
/* { dg-final { cleanup-tree-dump "ealias" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c
new file mode 100644
index 00000000000..f131dae3b48
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c
@@ -0,0 +1,23 @@
+/* Verify straight-line strength reduction for simple integer addition
+ with stride reversed on 1st and 3rd instances. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int s, int c)
+{
+ int a1, a2, a3, x1, x2, x3, x;
+
+ a1 = 2 * s;
+ x1 = a1 + c;
+ a2 = 4 * s;
+ x2 = c + a2;
+ a3 = 6 * s;
+ x3 = a3 + c;
+ x = x1 + x2 + x3;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c
new file mode 100644
index 00000000000..6f77d518574
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c
@@ -0,0 +1,24 @@
+/* Verify straight-line strength reduction for simple integer addition
+ with casts thrown in. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+long
+f (int s, long c)
+{
+ int a1, a2, a3;
+ long x1, x2, x3, x;
+
+ a1 = 2 * s;
+ x1 = c + a1;
+ a2 = 4 * s;
+ x2 = c + a2;
+ a3 = 6 * s;
+ x3 = c + a3;
+ x = x1 + x2 + x3;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c
new file mode 100644
index 00000000000..558b3594e74
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c
@@ -0,0 +1,30 @@
+/* Verify that no straight-line strength reduction occurs across sibling
+ blocks. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int s, int c)
+{
+ int a1, a2, a3, x1, x2, x3, x;
+
+ if (c > 0)
+ {
+ a1 = 2 * s;
+ x1 = c + a1;
+ }
+ else
+ {
+ a1 = 4 * s;
+ x1 = c + a1;
+ }
+
+ a2 = 6 * s;
+ x2 = c + a2;
+ x = x1 + x2;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
new file mode 100644
index 00000000000..5cdfb9d37a2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
@@ -0,0 +1,25 @@
+/* x2 and x3 will be strength-reduced based on the same statement
+ but with different variables as the stride. Note that they will
+ be strength-reduced by introducing an initializer 4*s which is
+ cheaper than 5*s; similar for 4*c and 5*c. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int s, int c)
+{
+ int a2, a3, x1, x2, x3, x;
+
+ x1 = c + s;
+ a2 = 5 * s;
+ x2 = c + a2;
+ a3 = 5 * c;
+ x3 = s + a3;
+ x = x1 + x2 + x3;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* 4" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 5" 0 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c
new file mode 100644
index 00000000000..19413454944
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c
@@ -0,0 +1,32 @@
+/* Straight-line strength reduction control flow variation. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int c, int s)
+{
+ int a1, a2, x, x1, x2, x3, x4;
+
+ a1 = 2 * s;
+
+ if (n > 64)
+ {
+ x1 = c + a1;
+ a2 = 4 * s;
+ x2 = c + a2;
+ x = x1 + x2;
+ }
+ else
+ {
+ x3 = c + a1;
+ a2 = 4 * s;
+ x4 = c + a2;
+ x = x4 / x3;
+ }
+
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c
new file mode 100644
index 00000000000..98d2df87040
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c
@@ -0,0 +1,27 @@
+/* Straight-line strength reduction control flow variation. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int c, int s)
+{
+ int a, x1, x2, x3;
+
+ x1 = x2 = x3 = c;
+
+ if (n > 64)
+ {
+ a = 2 * s;
+ x1 = c + a;
+ a = 4 * s;
+ x2 = c + a;
+ a = 6 * s;
+ x3 = c + a;
+ }
+
+ return x1 + x2 + x3;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-16.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-16.c
new file mode 100644
index 00000000000..5fe0175cb9e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-16.c
@@ -0,0 +1,28 @@
+/* Straight-line strength reduction control flow variation. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int c, int s)
+{
+ int a2, a3, a4, x1, x2, x3, x4;
+
+ x1 = c + s;
+ a2 = 3 * s;
+ x2 = c + a2;
+ x3 = x4 = c;
+
+ if (n > 64)
+ {
+ a3 = 5 * s;
+ x3 = c + a3;
+ a4 = 7 * s;
+ x4 = c + a4;
+ }
+
+ return x1 + x2 + x3 + x4;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-17.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-17.c
new file mode 100644
index 00000000000..3da203c205e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-17.c
@@ -0,0 +1,31 @@
+/* Straight-line strength reduction control flow variation with incr = 1. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int c, int s)
+{
+ int a2, a3, a4, x1, x2, x3, x4;
+
+ x1 = c + s;
+ x2 = x3 = x4 = c;
+
+ if (n > 64)
+ {
+ a2 = 2 * s;
+ x2 = c + a2;
+ a3 = 3 * s;
+ x3 = c + a3;
+ }
+ else
+ {
+ a4 = 2 * s;
+ x4 = c + a4;
+ }
+
+ return x1 + x2 + x3 + x4;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 0 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-18.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-18.c
new file mode 100644
index 00000000000..b8d368ea4b0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-18.c
@@ -0,0 +1,32 @@
+/* Straight-line strength reduction control flow variation with incr = -1. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int c, int s)
+{
+ int a1, a2, a3, a4, x1, x2, x3, x4;
+
+ a1 = 4 * s;
+ x1 = c + a1;
+ x2 = x3 = x4 = c;
+
+ if (n > 64)
+ {
+ a2 = 3 * s;
+ x2 = c + a2;
+ a3 = 2 * s;
+ x3 = c + a3;
+ }
+ else
+ {
+ a4 = 3 * s;
+ x4 = c + a4;
+ }
+
+ return x1 + x2 + x3 + x4;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-19.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-19.c
new file mode 100644
index 00000000000..c92730f40d5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-19.c
@@ -0,0 +1,22 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with stride in RHS1 position. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int c, int s)
+{
+ int x1, x2, y1, y2;
+
+ y1 = c + 2;
+ x1 = s * y1;
+ y2 = y1 + 2;
+ x2 = s * y2;
+ return x1 + x2;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* y" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-20.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-20.c
new file mode 100644
index 00000000000..cf3e1b3a0e7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-20.c
@@ -0,0 +1,21 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with stride in inconsistent positions. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int c, int s)
+{
+ int x1, x2, y1, y2;
+
+ y1 = c + 2;
+ x1 = y1 * s;
+ y2 = y1 + 2;
+ x2 = s * y2;
+ return x1 + x2;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* s" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-21.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-21.c
new file mode 100644
index 00000000000..c32afb2aac0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-21.c
@@ -0,0 +1,32 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with variable stride and control flow. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int x, int stride)
+{
+ int a, x1, x2, x3;
+
+ a = x * stride;
+
+ if (n > 64)
+ {
+ x1 = x + 3;
+ a += x1 * stride;
+ x2 = x1 + 3;
+ a += x2 * stride;
+ }
+ else
+ {
+ x3 = x + 3;
+ a += x3 * stride;
+ }
+
+ return a;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-22.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-22.c
new file mode 100644
index 00000000000..6e56d9bb451
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-22.c
@@ -0,0 +1,29 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with variable stride and control flow. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int x, int stride)
+{
+ int a, x1, x2, x3;
+
+ a = x * stride;
+
+ if (n > 64)
+ {
+ x1 = x + 3;
+ a += x1 * stride;
+ x2 = x1 + 3;
+ a += x2 * stride;
+ x3 = x2 + 3;
+ a += x3 * stride;
+ }
+
+ return a;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-23.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-23.c
new file mode 100644
index 00000000000..88bd087de30
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-23.c
@@ -0,0 +1,29 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with variable stride and control flow. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int x, int stride)
+{
+ int a, x1, x2, x3;
+
+ a = x * stride;
+ x1 = x + 3;
+ a += x1 * stride;
+
+ if (n > 64)
+ {
+ x2 = x1 + 3;
+ a += x2 * stride;
+ x3 = x2 + 3;
+ a += x3 * stride;
+ }
+
+ return a;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-24.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-24.c
new file mode 100644
index 00000000000..04e093be540
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-24.c
@@ -0,0 +1,31 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with variable stride and control flow, increment = 1. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int x, int stride)
+{
+ int a, x1, x2, x3;
+
+ a = x * stride;
+
+ if (n > 64)
+ {
+ x1 = x + 1;
+ a += x1 * stride;
+ x2 = x1 + 1;
+ a += x2 * stride;
+ }
+ else
+ {
+ x3 = x + 1;
+ a += x3 * stride;
+ }
+
+ return a;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-25.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-25.c
new file mode 100644
index 00000000000..9e16e0476cd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-25.c
@@ -0,0 +1,31 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with variable stride and control flow, increment = -1. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int x, int stride)
+{
+ int a, x1, x2, x3;
+
+ a = x * stride;
+
+ if (n > 64)
+ {
+ x1 = x - 1;
+ a += x1 * stride;
+ x2 = x1 - 1;
+ a += x2 * stride;
+ }
+ else
+ {
+ x3 = x - 1;
+ a += x3 * stride;
+ }
+
+ return a;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-26.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-26.c
new file mode 100644
index 00000000000..c333e00bb62
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-26.c
@@ -0,0 +1,32 @@
+/* Verify straight-line strength reduction for multiply candidates
+ with variable stride and control flow, increment = -3. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int n, int x, int stride)
+{
+ int a, x1, x2, x3;
+
+ a = x * stride;
+
+ if (n > 64)
+ {
+ x1 = x - 3;
+ a += x1 * stride;
+ x2 = x1 - 3;
+ a += x2 * stride;
+ }
+ else
+ {
+ x3 = x - 3;
+ a += x3 * stride;
+ }
+
+ return a;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-27.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-27.c
new file mode 100644
index 00000000000..eb5734ae543
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-27.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-dom2" } */
+
+struct x
+{
+ int a[16];
+ int b[16];
+ int c[16];
+};
+
+extern void foo (int, int, int);
+
+void
+f (struct x *p, unsigned int n)
+{
+ foo (p->a[n], p->c[n], p->b[n]);
+}
+
+/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+;" 1 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 3 "dom2" } } */
+/* { dg-final { cleanup-tree-dump "dom2" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-28.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-28.c
new file mode 100644
index 00000000000..7e7c7516e6a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-28.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-dom2" } */
+
+struct x
+{
+ int a[16];
+ int b[16];
+ int c[16];
+};
+
+extern void foo (int, int, int);
+
+void
+f (struct x *p, unsigned int n)
+{
+ foo (p->a[n], p->c[n], p->b[n]);
+ if (n > 12)
+ foo (p->a[n], p->c[n], p->b[n]);
+ else if (n > 3)
+ foo (p->b[n], p->a[n], p->c[n]);
+}
+
+/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom2" } } */
+/* { dg-final { cleanup-tree-dump "dom2" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-29.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-29.c
new file mode 100644
index 00000000000..2a8fe0e6d6c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-29.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-dom2" } */
+
+struct x
+{
+ int a[16];
+ int b[16];
+ int c[16];
+};
+
+extern void foo (int, int, int);
+
+void
+f (struct x *p, unsigned int n)
+{
+ foo (p->a[n], p->c[n], p->b[n]);
+ if (n > 3)
+ {
+ foo (p->a[n], p->c[n], p->b[n]);
+ if (n > 12)
+ foo (p->b[n], p->a[n], p->c[n]);
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom2" } } */
+/* { dg-final { cleanup-tree-dump "dom2" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c
new file mode 100644
index 00000000000..9620f224115
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c
@@ -0,0 +1,24 @@
+/* Verify straight-line strength reduction fails for simple integer addition
+ with casts thrown in when -fwrapv is used. */
+
+/* { dg-do compile { target { long_neq_int } } } */
+/* { dg-options "-O3 -fdump-tree-dom2 -fwrapv" } */
+
+long
+f (int s, long c)
+{
+ int a1, a2, a3;
+ long x1, x2, x3, x;
+
+ a1 = 2 * s;
+ x1 = c + a1;
+ a2 = 4 * s;
+ x2 = c + a2;
+ a3 = 6 * s;
+ x3 = c + a3;
+ x = x1 + x2 + x3;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 3 "dom2" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c
new file mode 100644
index 00000000000..edf31294a2e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c
@@ -0,0 +1,27 @@
+/* Verify straight-line strength reduction for add candidates in
+ which the stride is unknown and increments appear that differ
+ only in sign. Verify the increments are shared. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int s, int c)
+{
+ int a1, a2, a3, a4, x1, x2, x3, x4, x;
+
+ a1 = 2 * s;
+ x1 = c + a1;
+ a2 = 4 * s; /* incr = +2 */
+ x2 = c + a2;
+ a3 = 7 * s;
+ x3 = c + a3;
+ a4 = 5 * s; /* incr = -2 */
+ x4 = c + a4;
+ x = x1 + x2 + x3 + x4;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\* -2" 0 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c
new file mode 100644
index 00000000000..8612febc4e1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c
@@ -0,0 +1,22 @@
+/* Verify straight-line strength reduction for simple add candidates. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int s, int c)
+{
+ int a1, a2, a3, x1, x2, x3, x;
+
+ a1 = 2 * s;
+ x1 = c + a1;
+ a2 = 4 * s;
+ x2 = c + a2;
+ a3 = 6 * s;
+ x3 = c + a3;
+ x = x1 + x2 + x3;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c
new file mode 100644
index 00000000000..56b167731c4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c
@@ -0,0 +1,25 @@
+/* Verify straight-line strength reduction for simple add candidates,
+ pointer version. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+void
+f (int s, char *c, char *x1, char *x2, char *x3)
+{
+ int a1, a2, a3;
+
+ a1 = 2 * s;
+ x1 = c + a1;
+ *x1 = 1;
+ a2 = 4 * s;
+ x2 = c + a2;
+ *x2 = 2;
+ a3 = 6 * s;
+ x3 = c + a3;
+ *x3 = 3;
+}
+
+/* There will be four ' * ' instances for the parms, one in the code. */
+/* { dg-final { scan-tree-dump-times " \\* " 5 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
new file mode 100644
index 00000000000..ace755f07ab
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
@@ -0,0 +1,22 @@
+/* Verify straight-line strength reduction for simple integer subtraction. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int s, int c)
+{
+ int a1, a2, a3, x1, x2, x3, x;
+
+ a1 = 2 * s;
+ x1 = c - a1;
+ a2 = 4 * s;
+ x2 = c - a2;
+ a3 = 6 * s;
+ x3 = c - a3;
+ x = x1 + x2 + x3;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
new file mode 100644
index 00000000000..c2e9b615568
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
@@ -0,0 +1,23 @@
+/* Verify straight-line strength reduction for simple pointer subtraction. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int*
+f (int s, int *c)
+{
+ int a1, a2, a3, *x1, *x2, *x3;
+
+ a1 = 2 * s;
+ x1 = c - a1;
+ a2 = 4 * s;
+ x2 = c - a2;
+ a3 = 6 * s;
+ x3 = c - a3;
+ return x1 ? x2 : x3;
+}
+
+/* There are 4 ' * ' instances in the decls (since "int * iftmp.0;" is
+ added), 1 parm, 2 in the code. */
+/* { dg-final { scan-tree-dump-times " \\* " 7 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c b/gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
new file mode 100644
index 00000000000..3a388731ee1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
@@ -0,0 +1,23 @@
+/* Verify straight-line strength reduction for simple integer addition
+ with stride reversed. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+
+int
+f (int s, int c)
+{
+ int a1, a2, a3, x1, x2, x3, x;
+
+ a1 = 2 * s;
+ x1 = a1 + c;
+ a2 = 4 * s;
+ x2 = a2 + c;
+ a3 = 6 * s;
+ x3 = a3 + c;
+ x = x1 + x2 + x3;
+ return x;
+}
+
+/* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c
index d851bf23fe8..d67f8692862 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom1-details" } */
+/* { dg-options "-O2 -fdump-tree-dom1-details -fno-short-enums" } */
+
extern void abort (void) __attribute__ ((__noreturn__));
union tree_node;
typedef union tree_node *tree;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c
new file mode 100644
index 00000000000..c2b1c19d0e7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+/* Testcase for PR31657. */
+
+int f(int x, int a, int b)
+{
+ int t = 0;
+ int c = 1 << a;
+ if (!(x & 1))
+ t = 0;
+ else
+ if (x & (1 << 2))
+ t = 3;
+ else
+ t = 0;
+ return t;
+}
+/* { dg-final { scan-tree-dump "& 5" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c
new file mode 100644
index 00000000000..d024df85acc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-optimized" } */
+
+/* Testcase for PR31657. */
+int g(void);
+int f(int x, int a, int b)
+{
+ int t = 0;
+ int c = 1 << a;
+ if (!(x & 1))
+ t = 0;
+ else
+ if (x & (1 << 2))
+ t = g();
+ else
+ t = 0;
+ return t;
+}
+
+/* { dg-final { scan-tree-dump "& 5" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c
new file mode 100644
index 00000000000..a6c4282ef63
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fno-trapping-math -fdump-tree-ifcombine" } */
+
+double test1 (double i, double j)
+{
+ if (i >= j)
+ if (i <= j)
+ goto plif;
+ else
+ goto plouf;
+ else
+ goto plif;
+
+plif:
+ return 0;
+plouf:
+ return -1;
+}
+
+/* The above should be optimized to a i > j test by ifcombine.
+ The transformation would also be legal with -ftrapping-math.
+ Instead we get u<=, which is acceptable with -fno-trapping-math. */
+
+/* { dg-final { scan-tree-dump " u<= " "ifcombine" } } */
+/* { dg-final { cleanup-tree-dump "ifcombine" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c
new file mode 100644
index 00000000000..cb575022715
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-trapping-math -fdump-tree-ifcombine" } */
+
+void f ();
+enum Sign { NEG=-1, ZERO, POS };
+
+static inline enum Sign sign (double x)
+{
+ if (x > 0) return POS;
+ if (x < 0) return NEG;
+ return ZERO;
+}
+void g (double x)
+{
+ if (sign (x) == NEG) f();
+}
+
+/* The above should be optimized to x < 0 by ifcombine.
+ The transformation would also be legal with -ftrapping-math. */
+
+/* { dg-final { scan-tree-dump "optimizing.* < " "ifcombine" } } */
+/* { dg-final { cleanup-tree-dump "ifcombine" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c
index 10efb12b4ab..e4c9772f61f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c
@@ -11,5 +11,5 @@ NumSift (long *array, unsigned long k)
/* There should be only two loads left. */
-/* { dg-final { scan-tree-dump-times "= \\\*D\[^\n;\]*;" 2 "pre" } } */
+/* { dg-final { scan-tree-dump-times "= \\\*\[^\n;\]*;" 2 "pre" } } */
/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vector-2.c b/gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
index e34532d3faa..2d214df4095 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
@@ -17,7 +17,7 @@ float f(vector float a, int b, vector float c)
}
/* We should be able to optimize this to just "return 0.0;" */
-/* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 0 "optimized"} } */
-/* { dg-final { scan-tree-dump-times "0.0" 1 "optimized"} } */
+/* { dg-final { scan-tree-dump-not "BIT_FIELD_REF" "optimized"} } */
+/* { dg-final { scan-tree-dump-times "return 0.0" 1 "optimized"} } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp72.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp72.c
new file mode 100644
index 00000000000..67c7602e378
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp72.c
@@ -0,0 +1,30 @@
+/* { dg-options "-O2" } */
+
+typedef unsigned long long uint64_t;
+
+static inline void cvmx_write64_uint64(uint64_t addr, uint64_t val)
+{
+ *(volatile uint64_t *)(long)addr = val;
+};
+static inline uint64_t cvmx_read64_uint64(uint64_t addr)
+{
+ return *(volatile uint64_t *)(long)addr;
+};
+
+static inline void cvmx_write_csr(uint64_t csr_addr, uint64_t val)
+{
+ cvmx_write64_uint64 (csr_addr, val);
+ if ((csr_addr >> 40) != 0x800118)
+ linker_error ();
+}
+
+int uart;
+
+int
+main ()
+{
+ cvmx_write_csr (((((uint64_t) 2LL) << 62)
+ | (0x0001180000000808ull+((uart&0xff)*1024))),
+ 0xfff);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp73.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp73.c
new file mode 100644
index 00000000000..48e7805fa07
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp73.c
@@ -0,0 +1,30 @@
+/* { dg-options "-O2" } */
+
+typedef unsigned long long uint64_t;
+
+static inline void cvmx_write64_uint64(uint64_t addr, uint64_t val)
+{
+ *(volatile uint64_t *)(long)addr = val;
+};
+static inline uint64_t cvmx_read64_uint64(uint64_t addr)
+{
+ return *(volatile uint64_t *)(long)addr;
+};
+
+static inline void cvmx_write_csr(uint64_t csr_addr, uint64_t val)
+{
+ cvmx_write64_uint64 (csr_addr, val);
+ if ((csr_addr >> 40) == 0x800118)
+ linker_error ();
+}
+
+int dest_core, src_core;
+
+int
+main ()
+{
+ cvmx_write_csr ((((((uint64_t)2LL) << 62)
+ | ((0x0001070000000600ull+((dest_core&0xff)*8))))),
+ 1ull << src_core);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp74.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp74.c
new file mode 100644
index 00000000000..b15186fea0b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp74.c
@@ -0,0 +1,23 @@
+/* { dg-options "-O2" } */
+
+void abort (void);
+void exit (int);
+
+__attribute__ ((noinline)) void
+f (unsigned long long i)
+{
+ if (i <= 0x1000000000000000ull)
+ {
+ unsigned long long j = i | 0x1000000000000000ull;
+ if (j == 0x1100000000000000ull)
+ exit (0);
+ }
+}
+
+int
+main ()
+{
+ f (0x0100000000000000ull);
+ abort ();
+}
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp75.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp75.c
new file mode 100644
index 00000000000..91fd3f71bd5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp75.c
@@ -0,0 +1,31 @@
+/* { dg-options "-O2" } */
+
+typedef unsigned long long uint64_t;
+
+static inline void cvmx_write64_uint64(uint64_t addr, uint64_t val)
+{
+ *(volatile uint64_t *)(long)addr = val;
+};
+static inline uint64_t cvmx_read64_uint64(uint64_t addr)
+{
+ return *(volatile uint64_t *)(long)addr;
+};
+static inline void cvmx_write_csr(uint64_t csr_addr, uint64_t val)
+{
+ cvmx_write64_uint64 (csr_addr, val);
+ if ((csr_addr >> 40) != 0x800118)
+ linker_error ();
+}
+
+int interface;
+int idx;
+
+int
+main ()
+{
+ cvmx_write_csr((((((uint64_t) 2LL) << 62)
+ | ((0x0001180008000208ull
+ + (((idx)&3)*2048)
+ + (((interface)&1)*0x8000000ull))))), 1);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp76.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp76.c
new file mode 100644
index 00000000000..c8b8595c6be
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp76.c
@@ -0,0 +1,35 @@
+/* { dg-do link } */
+/* { dg-options "-O2 -fno-tree-switch-conversion" } */
+
+/* Based on f3 from vrp63.c, but with switch instead of if-chain. This test
+ tests the propagation of an anti-range in a switch statement. */
+
+extern void link_error (void);
+
+void
+f3 (int s)
+{
+ if (s >> 3 == -2)
+ /* s in range [ -16, -9]. */
+ ;
+ else
+ {
+ /* s in range ~[-16, -9], so none of the case labels can be taken. */
+ switch (s)
+ {
+ case -16:
+ case -12:
+ case -9:
+ link_error ();
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp77.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp77.c
new file mode 100644
index 00000000000..c0a8a865388
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp77.c
@@ -0,0 +1,47 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+#ifdef __SIZEOF_INT128__
+#define T __int128
+#else
+#define T long long
+#endif
+
+extern void impossible (void);
+
+void f(T x)
+{
+ unsigned T y;
+ unsigned T z;
+ if (x < -7)
+ return;
+ if (x > 2)
+ return;
+ y = x;
+ z = y * y;
+ if (z == 666)
+ impossible ();
+}
+
+void g(unsigned T x)
+{
+ unsigned T y;
+ unsigned T z;
+ unsigned T m = -1;
+ m = m / 2;
+ if (x < m-2)
+ return;
+ if (x > m-1)
+ return;
+ y = x;
+ z = y * y;
+ /* The product (ignoring it is a square) has only 3 possible values:
+ 4, 9 and 2^127+6. At least one of the values 7, 666 and -666 is
+ known to be impossible. 7 is the most logical in the current
+ implementation. */
+ if (z == 7)
+ impossible ();
+}
+
+/* { dg-final { scan-tree-dump-not "impossible" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp78.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp78.c
new file mode 100644
index 00000000000..e08d1ffdfa2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp78.c
@@ -0,0 +1,34 @@
+/* { dg-do link } */
+/* { dg-options "-O2" } */
+
+/* Based on f3 from vrp63.c, but with switch instead of if-chain. */
+
+extern void link_error (void);
+
+void
+f3 (int s)
+{
+ if (s >> 3 == -2)
+ /* s in range [ -16, -9]. */
+ ;
+ else
+ {
+ /* s in range ~[-16, -9], so none of the case labels can be taken. */
+ switch (s)
+ {
+ case -16:
+ case -12:
+ case -9:
+ link_error ();
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp79.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp79.c
new file mode 100644
index 00000000000..88c1bd85821
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp79.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+#ifdef __SIZEOF_INT128__
+typedef unsigned __int128 NT;
+#else
+typedef unsigned long long NT;
+#endif
+
+extern void do_not_go_away ();
+
+void f (NT x, NT y)
+{
+ NT n = 1;
+ n <<= (__CHAR_BIT__ * sizeof (NT) - 1);
+ if (x > n) return;
+ if (y > n) return;
+ NT z = x + y;
+ if (z == 42) do_not_go_away ();
+}
+
+/* { dg-final { scan-tree-dump "do_not_go_away" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr53773.c b/gcc/testsuite/gcc.dg/vect/pr53773.c
new file mode 100644
index 00000000000..1c9e468f5f3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr53773.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-tree-optimized" } */
+
+int
+foo (int integral, int decimal, int power_ten)
+{
+ while (power_ten > 0)
+ {
+ integral *= 10;
+ decimal *= 10;
+ power_ten--;
+ }
+
+ return integral+decimal;
+}
+
+/* { dg-final { scan-tree-dump-times "\\* 10" 2 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+
diff --git a/gcc/testsuite/gcc.dg/vect/slp-25.c b/gcc/testsuite/gcc.dg/vect/slp-25.c
index 0dec2f11cdc..e5e5e3bdfa6 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-25.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-25.c
@@ -56,5 +56,5 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align } } } } */
+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || { ! vect_natural_alignment } } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.target/arm/div64-unwinding.c b/gcc/testsuite/gcc.target/arm/div64-unwinding.c
new file mode 100644
index 00000000000..b7ed89178ce
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/div64-unwinding.c
@@ -0,0 +1,24 @@
+/* Performing a 64-bit division should not pull in the unwinder. */
+
+/* { dg-do run } */
+/* { dg-options "-O0" } */
+
+#include <stdlib.h>
+
+long long
+foo (long long c, long long d)
+{
+ return c/d;
+}
+
+long long x = 0;
+long long y = 1;
+
+extern int (*_Unwind_RaiseException) (void *) __attribute__((weak));
+
+int main(void)
+{
+ if (&_Unwind_RaiseException != NULL)
+ abort ();;
+ return foo (x, y);
+}
diff --git a/gcc/testsuite/gcc.target/arm/fma-sp.c b/gcc/testsuite/gcc.target/arm/fma-sp.c
new file mode 100644
index 00000000000..457b55c8c22
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/fma-sp.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mthumb" } */
+
+#include "fma.h"
+
+/* { dg-final { scan-assembler-not "vfma\.f64\td\[0-9\]" } } */
+/* { dg-final { scan-assembler-times "vfma\.f32\ts\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-not "vfms\.f64\td\[0-9\]" } } */
+/* { dg-final { scan-assembler-times "vfms\.f32\ts\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-not "vfnma\.f64\td\[0-9\]" } } */
+/* { dg-final { scan-assembler-times "vfnma\.f32\ts\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-not "vfnms\.f64\td\[0-9\]" } } */
+/* { dg-final { scan-assembler-times "vfnms\.f32\ts\[0-9\]" 1 } } */
diff --git a/gcc/testsuite/gcc.target/arm/fma.c b/gcc/testsuite/gcc.target/arm/fma.c
new file mode 100644
index 00000000000..1809aa8d434
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/fma.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mcpu=cortex-a15 -mfpu=vfpv4" } */
+
+#include "fma.h"
+
+/* { dg-final { scan-assembler-times "vfma\.f64\td\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-times "vfma\.f32\ts\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-times "vfms\.f64\td\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-times "vfms\.f32\ts\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-times "vfnma\.f64\td\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-times "vfnma\.f32\ts\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-times "vfnms\.f64\td\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler-times "vfnms\.f32\ts\[0-9\]" 1 } } */
diff --git a/gcc/testsuite/gcc.target/arm/fma.h b/gcc/testsuite/gcc.target/arm/fma.h
new file mode 100644
index 00000000000..0812c2d73a2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/fma.h
@@ -0,0 +1,50 @@
+extern double fma (double, double, double);
+extern float fmaf (float, float, float);
+
+float
+vfma32 (float x, float y, float z)
+{
+ return fmaf (x, y, z);
+}
+
+float
+vfms32 (float x, float y, float z)
+{
+ return fmaf (-x, y, z);
+}
+
+float
+vfnms32 (float x, float y, float z)
+{
+ return fmaf (x, y, -z);
+}
+
+float
+vfnma32 (float x, float y, float z)
+{
+ return fmaf (-x, y, -z);
+}
+
+double
+vfma64 (double x, double y, double z)
+{
+ return fma (x, y, z);
+}
+
+double
+vfms64 (double x, double y, double z)
+{
+ return fma (-x, y, z);
+}
+
+double
+vfnms64 (double x, double y, double z)
+{
+ return fma (x, y, -z);
+}
+
+double
+vfnma64 (double x, double y, double z)
+{
+ return fma (-x, y, -z);
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c b/gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
index ad6ba755e64..fe3d78b308c 100644
--- a/gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
+++ b/gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
@@ -4,10 +4,8 @@
/* { dg-add-options arm_neon } */
#include <arm_neon.h>
-float32x2_t f_sub_abs_to_vabd_32()
+float32x2_t f_sub_abs_to_vabd_32(float32x2_t val1, float32x2_t val2)
{
- float32x2_t val1 = vdup_n_f32 (10);
- float32x2_t val2 = vdup_n_f32 (30);
float32x2_t sres = vsub_f32(val1, val2);
float32x2_t res = vabs_f32 (sres);
@@ -16,10 +14,8 @@ float32x2_t f_sub_abs_to_vabd_32()
/* { dg-final { scan-assembler "vabd\.f32" } }*/
#include <arm_neon.h>
-int8x8_t sub_abs_to_vabd_8()
+int8x8_t sub_abs_to_vabd_8(int8x8_t val1, int8x8_t val2)
{
- int8x8_t val1 = vdup_n_s8 (10);
- int8x8_t val2 = vdup_n_s8 (30);
int8x8_t sres = vsub_s8(val1, val2);
int8x8_t res = vabs_s8 (sres);
@@ -27,10 +23,8 @@ int8x8_t sub_abs_to_vabd_8()
}
/* { dg-final { scan-assembler "vabd\.s8" } }*/
-int16x4_t sub_abs_to_vabd_16()
+int16x4_t sub_abs_to_vabd_16(int16x4_t val1, int16x4_t val2)
{
- int16x4_t val1 = vdup_n_s16 (10);
- int16x4_t val2 = vdup_n_s16 (30);
int16x4_t sres = vsub_s16(val1, val2);
int16x4_t res = vabs_s16 (sres);
@@ -38,10 +32,8 @@ int16x4_t sub_abs_to_vabd_16()
}
/* { dg-final { scan-assembler "vabd\.s16" } }*/
-int32x2_t sub_abs_to_vabd_32()
+int32x2_t sub_abs_to_vabd_32(int32x2_t val1, int32x2_t val2)
{
- int32x2_t val1 = vdup_n_s32 (10);
- int32x2_t val2 = vdup_n_s32 (30);
int32x2_t sres = vsub_s32(val1, val2);
int32x2_t res = vabs_s32 (sres);
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-1.c b/gcc/testsuite/gcc.target/arm/neon-vdup-1.c
new file mode 100644
index 00000000000..41799a25cf4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-1.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_f32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+float32x4_t out_float32x4_t;
+void test_vdupq_nf32 (void)
+{
+ out_float32x4_t = vdupq_n_f32 (0.0);
+}
+
+/* { dg-final { scan-assembler "vmov\.f32\[ \]+\[qQ\]\[0-9\]+, #0\.0\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-10.c b/gcc/testsuite/gcc.target/arm/neon-vdup-10.c
new file mode 100644
index 00000000000..a06b0647ad0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-10.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (~0x12000000);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #3992977407\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-11.c b/gcc/testsuite/gcc.target/arm/neon-vdup-11.c
new file mode 100644
index 00000000000..07d08896af5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-11.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint16x8_t out_uint16x8_t;
+void test_vdupq_nu16 (void)
+{
+ out_uint16x8_t = vdupq_n_u16 (0x12);
+}
+
+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-12.c b/gcc/testsuite/gcc.target/arm/neon-vdup-12.c
new file mode 100644
index 00000000000..27b41868207
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-12.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint16x8_t out_uint16x8_t;
+void test_vdupq_nu16 (void)
+{
+ out_uint16x8_t = vdupq_n_u16 (0x1200);
+}
+
+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-13.c b/gcc/testsuite/gcc.target/arm/neon-vdup-13.c
new file mode 100644
index 00000000000..4d38bc08812
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-13.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint16x8_t out_uint16x8_t;
+void test_vdupq_nu16 (void)
+{
+ out_uint16x8_t = vdupq_n_u16 (~0x12);
+}
+
+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #65517\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-14.c b/gcc/testsuite/gcc.target/arm/neon-vdup-14.c
new file mode 100644
index 00000000000..a16659fdae4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-14.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint16x8_t out_uint16x8_t;
+void test_vdupq_nu16 (void)
+{
+ out_uint16x8_t = vdupq_n_u16 (~0x1200);
+}
+
+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #60927\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-15.c b/gcc/testsuite/gcc.target/arm/neon-vdup-15.c
new file mode 100644
index 00000000000..84a6fe04feb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-15.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u8' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint8x16_t out_uint8x16_t;
+void test_vdupq_nu8 (void)
+{
+ out_uint8x16_t = vdupq_n_u8 (0x12);
+}
+
+/* { dg-final { scan-assembler "vmov\.i8\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-16.c b/gcc/testsuite/gcc.target/arm/neon-vdup-16.c
new file mode 100644
index 00000000000..70bec0336e5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-16.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (0x12ff);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4863\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-17.c b/gcc/testsuite/gcc.target/arm/neon-vdup-17.c
new file mode 100644
index 00000000000..e0283f1fb95
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-17.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (0x12ffff);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #1245183\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-18.c b/gcc/testsuite/gcc.target/arm/neon-vdup-18.c
new file mode 100644
index 00000000000..7dcf85d396a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-18.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (~0x12ff);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294962432\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-19.c b/gcc/testsuite/gcc.target/arm/neon-vdup-19.c
new file mode 100644
index 00000000000..09804373f7a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-19.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (~0x12ffff);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4293722112\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-2.c b/gcc/testsuite/gcc.target/arm/neon-vdup-2.c
new file mode 100644
index 00000000000..f9e6a72aeca
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-2.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_f32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+float32x4_t out_float32x4_t;
+void test_vdupq_nf32 (void)
+{
+ out_float32x4_t = vdupq_n_f32 (0.125);
+}
+
+/* { dg-final { scan-assembler "vmov\.f32\[ \]+\[qQ\]\[0-9\]+, #1\.25e-1\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-3.c b/gcc/testsuite/gcc.target/arm/neon-vdup-3.c
new file mode 100644
index 00000000000..d4073164300
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-3.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (0x12);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-4.c b/gcc/testsuite/gcc.target/arm/neon-vdup-4.c
new file mode 100644
index 00000000000..bc1be079fb8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-4.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (0x1200);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-5.c b/gcc/testsuite/gcc.target/arm/neon-vdup-5.c
new file mode 100644
index 00000000000..9b04f16d589
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-5.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (0x120000);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #1179648\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-6.c b/gcc/testsuite/gcc.target/arm/neon-vdup-6.c
new file mode 100644
index 00000000000..0889b80af2b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-6.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (0x12000000);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #301989888\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-7.c b/gcc/testsuite/gcc.target/arm/neon-vdup-7.c
new file mode 100644
index 00000000000..f7b1dc8611f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-7.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (~0x12);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294967277\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-8.c b/gcc/testsuite/gcc.target/arm/neon-vdup-8.c
new file mode 100644
index 00000000000..9d494c35588
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-8.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (~0x1200);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294962687\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vdup-9.c b/gcc/testsuite/gcc.target/arm/neon-vdup-9.c
new file mode 100644
index 00000000000..799e95ed9bf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vdup-9.c
@@ -0,0 +1,17 @@
+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint32x4_t out_uint32x4_t;
+void test_vdupq_nu32 (void)
+{
+ out_uint32x4_t = vdupq_n_u32 (~0x120000);
+}
+
+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4293787647\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
index 912b93d1d6c..4fceee82eda 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
@@ -15,5 +15,5 @@ void test_vld1Q_dups64 (void)
out_int64x2_t = vld1q_dup_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
index 234db407b37..ef0a3828c3e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupu64 (void)
out_uint64x2_t = vld1q_dup_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
index a0c352e1000..c5a301b993a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
@@ -17,5 +17,5 @@ void test_vtrnf32 (void)
out_float32x2x2_t = vtrn_f32 (arg0_float32x2_t, arg1_float32x2_t);
}
-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vtrns32.c b/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
index 2966ca5f1f8..f01047497a5 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
@@ -17,5 +17,5 @@ void test_vtrns32 (void)
out_int32x2x2_t = vtrn_s32 (arg0_int32x2_t, arg1_int32x2_t);
}
-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
index 9875ad3c44b..74f5cace6b6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
@@ -17,5 +17,5 @@ void test_vtrnu32 (void)
out_uint32x2x2_t = vtrn_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
}
-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vzipf32.c b/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
index d270aa13ada..6c13a07ad2a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
@@ -17,5 +17,5 @@ void test_vzipf32 (void)
out_float32x2x2_t = vzip_f32 (arg0_float32x2_t, arg1_float32x2_t);
}
-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vzips32.c b/gcc/testsuite/gcc.target/arm/neon/vzips32.c
index ce3e8117f52..663985ebe6c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vzips32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vzips32.c
@@ -17,5 +17,5 @@ void test_vzips32 (void)
out_int32x2x2_t = vzip_s32 (arg0_int32x2_t, arg1_int32x2_t);
}
-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vzipu32.c b/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
index 1e6d3844f11..d9a280bf4e0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
@@ -17,5 +17,5 @@ void test_vzipu32 (void)
out_uint32x2x2_t = vzip_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
}
-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr53859.c b/gcc/testsuite/gcc.target/arm/pr53859.c
new file mode 100644
index 00000000000..003489e0bb7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr53859.c
@@ -0,0 +1,11 @@
+/* PR target/53859 */
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-mcpu=cortex-m4 -mthumb -O2" } */
+
+void bar (int,int,char* ,int);
+
+void foo (char c)
+{
+ bar (1,2,&c,3);
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr54051.c b/gcc/testsuite/gcc.target/arm/pr54051.c
new file mode 100644
index 00000000000..1d2e93c894f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr54051.c
@@ -0,0 +1,20 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_neon } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+int32_t a __attribute__ ((aligned (64)));
+
+int32x2x3_t test (void)
+{
+ return vld3_dup_s32 (&a);
+}
+
+int32x2x3_t test1 (void)
+{
+ int32x2x3_t res ;
+ return vld3_lane_s32 (&a, res, 1);
+}
+
diff --git a/gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c b/gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c
index bd4f4897f35..90407eb6872 100644
--- a/gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c
+++ b/gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c
@@ -4,14 +4,21 @@
/* { dg-options "-Os -fno-builtin -mthumb" } */
int
-f (int a, int b )
+f (int a, int b)
{
return a + b;
}
-/* { dg-final { scan-assembler "adds r0, r0, r1" } } */
+/* { dg-final { scan-assembler "add r0, r0, r1" } } */
int
+f2 (int a, int b, int c)
+{
+ return b + c;
+}
+
+/* { dg-final { scan-assembler "adds r0, r1, r2" } } */
+int
g1 (int a)
{
return a + 255;
diff --git a/gcc/testsuite/gcc.target/arm/vfp-1.c b/gcc/testsuite/gcc.target/arm/vfp-1.c
index d455ea42fea..d6d9c46425b 100644
--- a/gcc/testsuite/gcc.target/arm/vfp-1.c
+++ b/gcc/testsuite/gcc.target/arm/vfp-1.c
@@ -129,7 +129,7 @@ void test_ldst (float f[], double d[]) {
/* { dg-final { scan-assembler "flds.+ \\\[r0, #1020\\\]" } } */
/* { dg-final { scan-assembler "flds.+ \\\[r\[0-9\], #-1020\\\]" { target { arm32 && { ! arm_thumb2_ok } } } } } */
/* { dg-final { scan-assembler "add.+ r0, #1024" } } */
- /* { dg-final { scan-assembler "fsts.+ \\\[r\[0-9\], #0\\\]\n" } } */
+ /* { dg-final { scan-assembler "fsts.+ \\\[r\[0-9\]\\\]\n" } } */
f[256] = f[255] + f[-255];
/* { dg-final { scan-assembler "fldd.+ \\\[r1, #1016\\\]" } } */
diff --git a/gcc/testsuite/gcc.target/cris/20011127-1.c b/gcc/testsuite/gcc.target/cris/20011127-1.c
index 0e448f8b0b8..298a8b9fd89 100644
--- a/gcc/testsuite/gcc.target/cris/20011127-1.c
+++ b/gcc/testsuite/gcc.target/cris/20011127-1.c
@@ -17,7 +17,6 @@ foo (void)
them. */
asm ("\n;# %b0" : : "r" (0)); /* { dg-error "modifier" } */
asm ("\n;# %v0" : : "r" (0)); /* { dg-error "modifier" } */
- asm ("\n;# %P0" : : "r" (0)); /* { dg-error "modifier" } */
asm ("\n;# %p0" : : "r" (0)); /* { dg-error "modifier" } */
asm ("\n;# %z0" : : "r" (0)); /* { dg-error "modifier" } */
asm ("\n;# %H0" : : "F" (0.5)); /* { dg-error "modifier" } */
diff --git a/gcc/testsuite/gcc.target/cris/sync-1-v10.c b/gcc/testsuite/gcc.target/cris/sync-1-v10.c
index 640098a96db..6c8dd1a407d 100644
--- a/gcc/testsuite/gcc.target/cris/sync-1-v10.c
+++ b/gcc/testsuite/gcc.target/cris/sync-1-v10.c
@@ -1,4 +1,5 @@
/* Check that we can assemble both base atomic variants. */
/* { dg-do assemble } */
/* { dg-options "-O2 -march=v10" } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/sync-1-v32.c b/gcc/testsuite/gcc.target/cris/sync-1-v32.c
index 644d922a3db..3c1d076ab78 100644
--- a/gcc/testsuite/gcc.target/cris/sync-1-v32.c
+++ b/gcc/testsuite/gcc.target/cris/sync-1-v32.c
@@ -1,4 +1,5 @@
/* Check that we can assemble both base atomic variants. */
/* { dg-do assemble } */
/* { dg-options "-O2 -march=v32" } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/sync-2i.c b/gcc/testsuite/gcc.target/cris/sync-2i.c
index e43aa5356f5..d491d3c0869 100644
--- a/gcc/testsuite/gcc.target/cris/sync-2i.c
+++ b/gcc/testsuite/gcc.target/cris/sync-2i.c
@@ -2,6 +2,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Dop -Dtype=int" } */
/* { dg-additional-options "-mtrap-using-break8 -mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
/* { dg-final { scan-assembler "\tbreak 8" } } */
/* { dg-final { scan-assembler "\tbtstq \\(2-1\\)," } } */
/* { dg-final { scan-assembler-not "\tand" } } */
diff --git a/gcc/testsuite/gcc.target/cris/sync-2s.c b/gcc/testsuite/gcc.target/cris/sync-2s.c
index 9be7dc6bcb5..06ff98a2769 100644
--- a/gcc/testsuite/gcc.target/cris/sync-2s.c
+++ b/gcc/testsuite/gcc.target/cris/sync-2s.c
@@ -2,6 +2,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Dop -Dtype=short" } */
/* { dg-additional-options "-mtrap-using-break8 -mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
/* { dg-final { scan-assembler "\tbreak 8" } } */
/* { dg-final { scan-assembler "\tbtstq \\(1-1\\)," } } */
/* { dg-final { scan-assembler-not "\tand" } } */
diff --git a/gcc/testsuite/gcc.target/cris/sync-3i.c b/gcc/testsuite/gcc.target/cris/sync-3i.c
index 114e0a846e8..9e67d61cb35 100644
--- a/gcc/testsuite/gcc.target/cris/sync-3i.c
+++ b/gcc/testsuite/gcc.target/cris/sync-3i.c
@@ -4,6 +4,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Dxchg -Dtype=int" } */
/* { dg-additional-options "-mtrap-using-break8 -mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
/* { dg-final { scan-assembler "\tbreak 8" } } */
/* { dg-final { scan-assembler "\tbtstq \\(2-1\\)," { xfail *-*-* } } } */
/* { dg-final { scan-assembler-not "\tand" { xfail *-*-* } } } */
diff --git a/gcc/testsuite/gcc.target/cris/sync-3s.c b/gcc/testsuite/gcc.target/cris/sync-3s.c
index facbb39ed94..8e87a3b6221 100644
--- a/gcc/testsuite/gcc.target/cris/sync-3s.c
+++ b/gcc/testsuite/gcc.target/cris/sync-3s.c
@@ -4,6 +4,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Dxchg -Dtype=short" } */
/* { dg-additional-options "-mtrap-using-break8 -mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
/* { dg-final { scan-assembler "\tbreak 8" } } */
/* { dg-final { scan-assembler "\tbtstq \\(1-1\\)," { xfail *-*-* } } } */
/* { dg-final { scan-assembler-not "\tand" { xfail *-*-* } } } */
diff --git a/gcc/testsuite/gcc.target/cris/sync-4i.c b/gcc/testsuite/gcc.target/cris/sync-4i.c
index 9756c696386..78a7012ccdb 100644
--- a/gcc/testsuite/gcc.target/cris/sync-4i.c
+++ b/gcc/testsuite/gcc.target/cris/sync-4i.c
@@ -1,6 +1,7 @@
/* Check that we don't get alignment-checking code, int. */
/* { dg-do compile } */
/* { dg-options "-O2 -Dtype=int -mno-trap-unaligned-atomic" } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
/* { dg-final { scan-assembler-not "\tbreak\[ \t\]" } } */
/* { dg-final { scan-assembler-not "\tbtstq\[ \t\]\[^5\]" } } */
/* { dg-final { scan-assembler-not "\tand" } } */
diff --git a/gcc/testsuite/gcc.target/cris/sync-4s.c b/gcc/testsuite/gcc.target/cris/sync-4s.c
index 2d644303a79..6691a48283f 100644
--- a/gcc/testsuite/gcc.target/cris/sync-4s.c
+++ b/gcc/testsuite/gcc.target/cris/sync-4s.c
@@ -1,6 +1,7 @@
/* Check that we don't get alignment-checking code, short. */
/* { dg-do compile } */
/* { dg-options "-O2 -Dtype=short -mno-trap-unaligned-atomic" } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
/* { dg-final { scan-assembler-not "\tbreak\[ \t\]" } } */
/* { dg-final { scan-assembler-not "\tbtstq\[ \t\]\[^5\]" } } */
/* { dg-final { scan-assembler-not "\tand" } } */
diff --git a/gcc/testsuite/gcc.target/cris/sync-xchg-1.c b/gcc/testsuite/gcc.target/cris/sync-xchg-1.c
new file mode 100644
index 00000000000..21bb7d4ffcf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/sync-xchg-1.c
@@ -0,0 +1,21 @@
+/* Check that the basic library call variant is sane; no other calls, no
+ checks compares or branches. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -munaligned-atomic-may-use-library" } */
+/* { dg-final { scan-assembler-not "\tdi" } } */
+/* { dg-final { scan-assembler-not "\tbtstq" } } */
+/* { dg-final { scan-assembler-not "\tand" } } */
+/* { dg-final { scan-assembler-not "\tclearf" } } */
+/* { dg-final { scan-assembler-not "\tmove.d" } } */
+/* { dg-final { scan-assembler-not "\tcmp" } } */
+/* { dg-final { scan-assembler-not "\tb\[^s\]" } } */
+/* { dg-final { scan-assembler-times "\t\[JjBb\]sr" 1 } } */
+
+#ifndef type
+#define type int
+#endif
+
+type svcsw (type *ptr, type oldval, type newval)
+{
+ return __sync_val_compare_and_swap (ptr, oldval, newval);
+}
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1.c
index 733ec4bac57..dd8704cc92d 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1.c
@@ -1,4 +1,4 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dop -Dtype=int" } */
+/* { dg-options "-Dop -Dtype=int -mno-unaligned-atomic-may-use-library" } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1a.c
index 4cd233316e2..8055fd380e9 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dop -Dtype=int -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1ml.c
new file mode 100644
index 00000000000..c8cef184149
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dop -Dtype=int -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2.c
index 97d0bf067b0..3c162e96a4d 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2.c
@@ -1,4 +1,4 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dop -Dtype=int -Dmisalignment=2" } */
+/* { dg-options "-Dop -Dtype=int -Dmisalignment=2 -mno-unaligned-atomic-may-use-library" } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2a.c
index 3596e9ea5b1..61e1c2047b4 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dop -Dtype=int -Dmisalignment=2 -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2ml.c
new file mode 100644
index 00000000000..0d78e90019d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dop -Dtype=int -Dmisalignment=2 -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3.c
index 07479469f49..626a3d5cba4 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3.c
@@ -1,4 +1,4 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dop -Dtype=int -Dmisalignment=3" } */
+/* { dg-options "-Dop -Dtype=int -Dmisalignment=3 -mno-unaligned-atomic-may-use-library" } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3a.c
index 46a04f42c0e..339e74cd86c 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dop -Dtype=int -Dmisalignment=3 -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3ml.c
new file mode 100644
index 00000000000..17c6d34d11a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dop -Dtype=int -Dmisalignment=3 -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1.c
index 21b5269eced..f2835aa06c1 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1.c
@@ -1,6 +1,6 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dop -Dtype=short" } */
+/* { dg-options "-Dop -Dtype=short -mno-unaligned-atomic-may-use-library" } */
/* Make sure we get a SIGTRAP or equivalent when passing unaligned
but otherwise valid pointers to the atomic builtins. */
@@ -76,7 +76,6 @@ void trap_handler(int signum)
int main(void)
{
- type x = 0;
type ret;
#ifndef TRAP_USING_ABORT
@@ -86,7 +85,9 @@ int main(void)
#endif
#endif
+#ifndef mis_ok
trap_expected = 1;
+#endif
#if op
sfa (&s.i, &s.i, 42);
@@ -98,10 +99,24 @@ int main(void)
should do it. */
trap_expected = 0;
+#ifdef mis_ok
+ /* We're missing a sequence point, but we shouldn't have the initial
+ value. */
+ if (s.i == (type) 0xdeadbeef)
+ abort ();
+ exit (0);
+#endif
+
sfa (&x, &x, 1);
#else
acen (&s.i, &x, &ret);
+#ifdef mis_ok
+ if (s.i != 2 || x != 2 || ret != (type) 0xdeadbeef)
+ abort ();
+ exit (0);
+#endif
+
trap_expected = 0;
acen (&x, &x, &ret);
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1a.c
index fc91e7c9a8a..ba639172ba9 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dop -Dtype=short -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1ml.c
new file mode 100644
index 00000000000..3685c504731
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dop -Dtype=short -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1.c
index 1072caca9ca..da25614e23b 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1.c
@@ -1,4 +1,4 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dxchg -Dtype=int" } */
+/* { dg-options "-Dxchg -Dtype=int -mno-unaligned-atomic-may-use-library" } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1a.c
index af6ef8ac748..09a7a9ea3a0 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dxchg -Dtype=int -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1ml.c
new file mode 100644
index 00000000000..d757a683b17
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dxchg -Dtype=int -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2.c
index b02f4875b02..e8a425328eb 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2.c
@@ -1,4 +1,4 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=2" } */
+/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=2 -mno-unaligned-atomic-may-use-library" } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2a.c
index 8c7918470c6..2b97613de3c 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=2 -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2ml.c
new file mode 100644
index 00000000000..fb711e0ef78
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=2 -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3.c
index 637aecfd288..4a3511bf2fb 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3.c
@@ -1,4 +1,4 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=3" } */
+/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=3 -mno-unaligned-atomic-may-use-library" } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3a.c
index e7c90a360d3..94a25e37f04 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=3 -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3ml.c
new file mode 100644
index 00000000000..32f8ebbd9bf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dxchg -Dtype=int -Dmisalignment=3 -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1.c
index 73742854ed5..d8dede9c1f6 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1.c
@@ -1,4 +1,4 @@
/* { dg-do run { target *-*-linux* } } */
/* { dg-additional-sources "../sync-1.c" } */
-/* { dg-options "-Dxchg -Dtype=short" } */
+/* { dg-options "-Dxchg -Dtype=short -mno-unaligned-atomic-may-use-library" } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1a.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1a.c
index 5dcef52207d..6f5eb02afed 100644
--- a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1a.c
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1a.c
@@ -2,4 +2,5 @@
/* { dg-additional-sources "../sync-1.c" } */
/* { dg-options "-Dxchg -Dtype=short -DTRAP_USING_ABORT -mno-trap-using-break8" } */
/* { dg-additional-options "-mtrap-unaligned-atomic" { target cris-*-elf } } */
+/* { dg-additional-options "-mno-unaligned-atomic-may-use-library" { target cris*-*-linux* } } */
#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1ml.c b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1ml.c
new file mode 100644
index 00000000000..a6f501c10cc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1ml.c
@@ -0,0 +1,4 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-additional-sources "../sync-1.c" } */
+/* { dg-options "-Dxchg -Dtype=short -Dmis_ok" } */
+#include "sync-mis-op-s-1.c"
diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx32-1.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-1.c
new file mode 100644
index 00000000000..daf5779b196
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-1.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-madx -O2" } */
+/* { dg-final { scan-assembler "adcx" } } */
+
+#include <x86intrin.h>
+
+volatile unsigned char c;
+volatile unsigned int x, y;
+unsigned int *sum;
+
+void extern
+adx_test (void)
+{
+ c = _addcarryx_u32 (c, x, y, sum);
+}
diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx32-2.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-2.c
new file mode 100644
index 00000000000..d38d7ee784f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-2.c
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-options "-madx -O2" } */
+/* { dg-require-effective-target adx } */
+
+#include <x86intrin.h>
+#include "adx-check.h"
+
+static void
+adx_test (void)
+{
+ volatile unsigned char c;
+ unsigned int x;
+ volatile unsigned int y, sum_ref;
+
+ c = 0;
+ x = y = 0xFFFFFFFF;
+ sum_ref = 0xFFFFFFFE;
+
+ /* X = 0xFFFFFFFF, Y = 0xFFFFFFFF, C = 0. */
+ c = _addcarryx_u32 (c, x, y, &x);
+ /* X = 0xFFFFFFFE, Y = 0xFFFFFFFF, C = 1. */
+ c = _addcarryx_u32 (c, x, y, &x);
+ /* X = 0xFFFFFFFE, Y = 0xFFFFFFFF, C = 1. */
+
+ if (x != sum_ref)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c
new file mode 100644
index 00000000000..0ed33a9503e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-mno-adx -O2" } */
+/* { dg-final { scan-assembler "adcl" } } */
+
+#include <x86intrin.h>
+
+volatile unsigned char c;
+volatile unsigned int x, y;
+unsigned int *sum;
+
+void extern
+adx_test (void)
+{
+ c = _addcarryx_u32 (c, x, y, sum);
+}
diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx64-1.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-1.c
new file mode 100644
index 00000000000..45beca851f2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-1.c
@@ -0,0 +1,15 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-madx -O2" } */
+/* { dg-final { scan-assembler "adcx" } } */
+
+#include <x86intrin.h>
+
+volatile unsigned char c;
+volatile unsigned long long x, y;
+unsigned long long *sum;
+
+void extern
+adx_test (void)
+{
+ c = _addcarryx_u64 (c, x, y, sum);
+}
diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx64-2.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-2.c
new file mode 100644
index 00000000000..6aa2539c0d1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-2.c
@@ -0,0 +1,27 @@
+/* { dg-do run { target { ! ia32 } } } */
+/* { dg-options "-madx -O2" } */
+/* { dg-require-effective-target adx } */
+
+#include <x86intrin.h>
+#include "adx-check.h"
+
+static void
+adx_test (void)
+{
+ volatile unsigned char c;
+ unsigned long long x;
+ volatile unsigned long long y, sum_ref;
+
+ c = 0;
+ x = y = 0xFFFFFFFFFFFFFFFFLL;
+ sum_ref = 0xFFFFFFFFFFFFFFFELL;
+
+ /* X = 0xFFFFFFFFFFFFFFFF, Y = 0xFFFFFFFFFFFFFFFF, C = 0. */
+ c = _addcarryx_u64 (c, x, y, &x);
+ /* X = 0xFFFFFFFFFFFFFFFE, Y = 0xFFFFFFFFFFFFFFFF, C = 1. */
+ c = _addcarryx_u64 (c, x, y, &x);
+ /* X = 0xFFFFFFFFFFFFFFFE, Y = 0xFFFFFFFFFFFFFFFF, C = 1. */
+
+ if (x != sum_ref)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c
new file mode 100644
index 00000000000..4bbf74bfc2d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c
@@ -0,0 +1,15 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-mno-adx -O2" } */
+/* { dg-final { scan-assembler "adcq" } } */
+
+#include <x86intrin.h>
+
+volatile unsigned char c;
+volatile unsigned long long x, y;
+unsigned long long *sum;
+
+void extern
+adx_test (void)
+{
+ c = _addcarryx_u64 (c, x, y, sum);
+}
diff --git a/gcc/testsuite/gcc.target/i386/adx-check.h b/gcc/testsuite/gcc.target/i386/adx-check.h
new file mode 100644
index 00000000000..580cb49ed43
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/adx-check.h
@@ -0,0 +1,40 @@
+#include <stdlib.h>
+#include "cpuid.h"
+
+static void adx_test (void);
+
+static void __attribute__ ((noinline)) do_test (void)
+{
+ adx_test ();
+}
+
+ int
+main ()
+{
+ unsigned int eax, ebx, ecx, edx;
+
+ if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
+ return 0;
+
+ /* Run ADX test only if host has ADX support. */
+
+ if (__get_cpuid_max (0, NULL) < 7)
+ return 0;
+
+ __cpuid_count (7, 0, eax, ebx, ecx, edx);
+
+ if ((ebx & bit_ADX) == bit_ADX)
+ {
+ do_test ();
+#ifdef DEBUG
+ printf ("PASSED\n");
+#endif
+ return 0;
+ }
+#ifdef DEBUG
+ printf ("SKIPPED\n");
+#endif
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/asm-dialect-1.c b/gcc/testsuite/gcc.target/i386/asm-dialect-1.c
new file mode 100644
index 00000000000..a53d2e939f3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/asm-dialect-1.c
@@ -0,0 +1,15 @@
+/* { dg-options "-masm=intel" } */
+
+extern void abort (void);
+
+int
+main (void)
+{
+ int f = 0;
+ asm ("{movl $42, %%eax | mov eax, 42}" : :);
+ asm ("{movl $41, %0||mov %0, 43}" : "=r"(f));
+ if (f != 42)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp
index 785a9739236..37f43a60f05 100644
--- a/gcc/testsuite/gcc.target/i386/i386.exp
+++ b/gcc/testsuite/gcc.target/i386/i386.exp
@@ -243,6 +243,18 @@ proc check_effective_target_bmi2 { } {
} "-mbmi2" ]
}
+# Return 1 if ADX instructions can be compiled.
+proc check_effective_target_adx { } {
+ return [check_no_compiler_messages adx object {
+ unsigned char
+ _adxcarry_u32 (unsigned char __CF, unsigned int __X,
+ unsigned int __Y, unsigned int *__P)
+ {
+ return __builtin_ia32_addcarryx_u32 (__CF, __X, __Y, __P);
+ }
+ } "-madx" ]
+}
+
# Return 1 if rtm instructions can be compiled.
proc check_effective_target_rtm { } {
return [check_no_compiler_messages rtm object {
diff --git a/gcc/testsuite/gcc.target/i386/long-double-64-1.c b/gcc/testsuite/gcc.target/i386/long-double-64-1.c
new file mode 100644
index 00000000000..cf933796f8a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-64-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mlong-double-64" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler-not "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-64-2.c b/gcc/testsuite/gcc.target/i386/long-double-64-2.c
new file mode 100644
index 00000000000..ddf4fe656d0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-64-2.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mbionic" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler-not "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-64-3.c b/gcc/testsuite/gcc.target/i386/long-double-64-3.c
new file mode 100644
index 00000000000..e748fab2edd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-64-3.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mandroid" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler-not "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-64-4.c b/gcc/testsuite/gcc.target/i386/long-double-64-4.c
new file mode 100644
index 00000000000..d9c25aaec08
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-64-4.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mlong-double-80 -mlong-double-64" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler-not "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-80-1.c b/gcc/testsuite/gcc.target/i386/long-double-80-1.c
new file mode 100644
index 00000000000..d3b75a0be21
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-80-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mlong-double-80" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-80-2.c b/gcc/testsuite/gcc.target/i386/long-double-80-2.c
new file mode 100644
index 00000000000..954dfd15d42
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-80-2.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mlong-double-80 -mbionic" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-80-3.c b/gcc/testsuite/gcc.target/i386/long-double-80-3.c
new file mode 100644
index 00000000000..e0e8365e32c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-80-3.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -mlong-double-80 -mandroid" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-80-4.c b/gcc/testsuite/gcc.target/i386/long-double-80-4.c
new file mode 100644
index 00000000000..cac2d55bc16
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-80-4.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mlong-double-64 -mlong-double-80" } */
+
+long double
+foo (long double x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-80-5.c b/gcc/testsuite/gcc.target/i386/long-double-80-5.c
new file mode 100644
index 00000000000..4aa606fd1ba
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-80-5.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mlong-double-64" } */
+
+__float80
+foo (__float80 x)
+{
+ return x * x;
+}
+
+/* { dg-final { scan-assembler "fldt" } } */
diff --git a/gcc/testsuite/gcc.target/i386/long-double-80-6.c b/gcc/testsuite/gcc.target/i386/long-double-80-6.c
new file mode 100644
index 00000000000..a395a265942
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-80-6.c
@@ -0,0 +1,11 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mlong-double-64 -mfpmath=387" } */
+
+int
+main ()
+{
+ __float80 a = -0.23456789;
+ if ((double) a >= 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/long-double-80-7.c b/gcc/testsuite/gcc.target/i386/long-double-80-7.c
new file mode 100644
index 00000000000..9b30fe88567
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/long-double-80-7.c
@@ -0,0 +1,13 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mlong-double-64 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
+
+#include "sse2-check.h"
+
+static void
+sse2_test (void)
+{
+ __float80 a = -0.23456789;
+ if ((double) a >= 0)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/perm-concat.c b/gcc/testsuite/gcc.target/i386/perm-concat.c
new file mode 100644
index 00000000000..10955c2073e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/perm-concat.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O -mavx -mfpmath=sse" } */
+
+typedef double v2df __attribute__ ((__vector_size__ (16)));
+
+v2df
+f (double d)
+{
+ v2df x = {-d, d};
+ return __builtin_ia32_vpermilpd (x, 1);
+}
+
+/* { dg-final { scan-assembler-not "\tvpermilpd\[ \t\]" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr20020-1.c b/gcc/testsuite/gcc.target/i386/pr20020-1.c
new file mode 100644
index 00000000000..3f10970a943
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr20020-1.c
@@ -0,0 +1,26 @@
+/* Check that 128-bit struct's are represented as TImode values. */
+/* { dg-do compile { target int128 } } */
+/* { dg-options "-O2 -fdump-rtl-expand" } */
+
+struct shared_ptr_struct
+{
+ unsigned long long phase:48;
+ unsigned short thread:16;
+ union
+ {
+ void *addr;
+ unsigned long long pad;
+ };
+};
+typedef struct shared_ptr_struct sptr_t;
+
+sptr_t S;
+
+sptr_t
+sptr_result (void)
+{
+ return S;
+}
+/* { dg-final { scan-rtl-dump "\\\(set \\\(reg:TI \[0-9\]* \\\[ <retval> \\\]\\\)" "expand" } } */
+/* { dg-final { scan-rtl-dump "\\\(set \\\(reg/i:TI 0 ax\\\)" "expand" } } */
+/* { dg-final { cleanup-rtl-dump "expand" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr20020-2.c b/gcc/testsuite/gcc.target/i386/pr20020-2.c
new file mode 100644
index 00000000000..e8c5b3d06a4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr20020-2.c
@@ -0,0 +1,24 @@
+/* Check that 128-bit struct's are represented as TImode values. */
+/* { dg-do compile { target int128 } } */
+/* { dg-options "-O2 -fdump-rtl-expand" } */
+
+struct shared_ptr_struct
+{
+ unsigned long long phase:48;
+ unsigned short thread:16;
+ union
+ {
+ void *addr;
+ unsigned long long pad;
+ };
+};
+typedef struct shared_ptr_struct sptr_t;
+
+void
+copy_sptr (sptr_t *dest, sptr_t src)
+{
+ *dest = src;
+}
+
+/* { dg-final { scan-rtl-dump "\\\(set \\\(reg:TI \[0-9\]*" "expand" } } */
+/* { dg-final { cleanup-rtl-dump "expand" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr20020-3.c b/gcc/testsuite/gcc.target/i386/pr20020-3.c
new file mode 100644
index 00000000000..b1cc9260ec8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr20020-3.c
@@ -0,0 +1,27 @@
+/* Check that 128-bit struct's are represented as TImode values. */
+/* { dg-do compile { target int128 } } */
+/* { dg-options "-O2 -fdump-rtl-expand" } */
+
+struct shared_ptr_struct
+{
+ unsigned long long phase:48;
+ unsigned short thread:16;
+ union
+ {
+ void *addr;
+ unsigned long long pad;
+ };
+};
+typedef struct shared_ptr_struct sptr_t;
+
+sptr_t sptr_1, sptr_2;
+
+void
+copy_sptr (void)
+{
+ sptr_1 = sptr_2;
+}
+
+/* { dg-final { scan-rtl-dump "\\\(set \\\(reg:TI \[0-9\]*" "expand" } } */
+/* { dg-final { scan-rtl-dump "\\\(set \\\(mem/c:TI" "expand" } } */
+/* { dg-final { cleanup-rtl-dump "expand" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr46254.c b/gcc/testsuite/gcc.target/i386/pr46254.c
new file mode 100644
index 00000000000..512287a5b39
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr46254.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-O2 -mcx16 -fpic -mcmodel=large" } */
+
+__int128 i;
+
+void test ()
+{
+ __sync_val_compare_and_swap (&i, i, i);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr52857-1.c b/gcc/testsuite/gcc.target/i386/pr52857-1.c
new file mode 100644
index 00000000000..16fd78f96ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr52857-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target { ! { ia32 } } } } */
+/* { dg-options "-g -O -mx32 -maddress-mode=long" } */
+
+extern void get_BID128 (int *);
+void
+__bid128_div (void)
+{
+ int res;
+ get_BID128 (&res);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr52857-2.c b/gcc/testsuite/gcc.target/i386/pr52857-2.c
new file mode 100644
index 00000000000..879240a75ef
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr52857-2.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target { ! { ia32 } } } } */
+/* { dg-options "-g -O -mx32 -maddress-mode=long" } */
+
+void uw_init_context_1 (void *);
+void _Unwind_ForcedUnwind (void)
+{
+ uw_init_context_1 (__builtin_dwarf_cfa ());
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr53907.c b/gcc/testsuite/gcc.target/i386/pr53907.c
new file mode 100644
index 00000000000..8de8f0de985
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr53907.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O -msse2" } */
+
+#include <emmintrin.h>
+
+__m128i x(char *s)
+{
+ __m128i sz,z,mvec;
+ s-=((unsigned long) s)%16;
+ sz=_mm_load_si128((__m128i *)s);
+ return sz;
+}
+
+/* { dg-final { scan-assembler "movdqa" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr54157.c b/gcc/testsuite/gcc.target/i386/pr54157.c
new file mode 100644
index 00000000000..b5c4528b80f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr54157.c
@@ -0,0 +1,21 @@
+/* { dg-do compile { target { ! { ia32 } } } } */
+/* { dg-options "-O2 -mx32 -maddress-mode=long -ftree-vectorize" } */
+
+struct s2{
+ int n[24 -1][24 -1][24 -1];
+};
+
+struct test2{
+ struct s2 e;
+};
+
+struct test2 tmp2[4];
+
+void main1 ()
+{
+ int i,j;
+
+ for (i = 0; i < 24 -4; i++)
+ for (j = 0; j < 24 -4; j++)
+ tmp2[2].e.n[1][i][j] = 8;
+}
diff --git a/gcc/testsuite/gcc.target/i386/prefetchw-1.c b/gcc/testsuite/gcc.target/i386/prefetchw-1.c
new file mode 100644
index 00000000000..d0babe4d1d5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/prefetchw-1.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-mprfchw -O2" } */
+/* { dg-final { scan-assembler "\[ \\t\]+prefetchw\[ \\t\]+" } } */
+
+#include <x86intrin.h>
+
+void *p;
+
+void extern
+prefetchw__test (void)
+{
+ _m_prefetchw (p);
+}
diff --git a/gcc/testsuite/gcc.target/i386/rdseed16-1.c b/gcc/testsuite/gcc.target/i386/rdseed16-1.c
new file mode 100644
index 00000000000..fe637f1ac57
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/rdseed16-1.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-mrdseed -O2" } */
+/* { dg-final { scan-assembler "rdseed\[ \\t\]+" } } */
+
+#include <x86intrin.h>
+
+void extern
+rdseed_test (unsigned short *p)
+{
+ volatile int r;
+ r = _rdseed16_step (p);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/rdseed32-1.c b/gcc/testsuite/gcc.target/i386/rdseed32-1.c
new file mode 100644
index 00000000000..646dff26daf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/rdseed32-1.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-mrdseed -O2" } */
+/* { dg-final { scan-assembler "rdseed\[ \\t\]+" } } */
+
+#include <x86intrin.h>
+
+void extern
+rdseed_test (unsigned int *p)
+{
+ volatile int r;
+ r = _rdseed32_step (p);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/rdseed64-1.c b/gcc/testsuite/gcc.target/i386/rdseed64-1.c
new file mode 100644
index 00000000000..bdacd7ad64b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/rdseed64-1.c
@@ -0,0 +1,13 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-mrdseed -O2" } */
+/* { dg-final { scan-assembler "rdseed\[ \\t\]+" } } */
+
+#include <x86intrin.h>
+
+void extern
+rdseed_test (unsigned long long *p)
+{
+ volatile int r;
+ r = _rdseed64_step (p);
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c
index 1d8fc3af833..0d78a0c84dc 100644
--- a/gcc/testsuite/gcc.target/i386/sse-12.c
+++ b/gcc/testsuite/gcc.target/i386/sse-12.c
@@ -3,7 +3,7 @@
popcntintrin.h and mm_malloc.h are usable
with -O -std=c89 -pedantic-errors. */
/* { dg-do compile } */
-/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm" } */
+/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx" } */
#include <x86intrin.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c
index a540864038f..4c575baaf78 100644
--- a/gcc/testsuite/gcc.target/i386/sse-13.c
+++ b/gcc/testsuite/gcc.target/i386/sse-13.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm" } */
+/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx" } */
#include <mm_malloc.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c
index a798487226c..c8c13cecb53 100644
--- a/gcc/testsuite/gcc.target/i386/sse-14.c
+++ b/gcc/testsuite/gcc.target/i386/sse-14.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm" } */
+/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx" } */
#include <mm_malloc.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c b/gcc/testsuite/gcc.target/i386/sse-22.c
index 50b4cc3202f..ec832552874 100644
--- a/gcc/testsuite/gcc.target/i386/sse-22.c
+++ b/gcc/testsuite/gcc.target/i386/sse-22.c
@@ -50,7 +50,7 @@
#ifndef DIFFERENT_PRAGMAS
-#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm")
+#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx")
#endif
/* Following intrinsics require immediate arguments. They
@@ -264,7 +264,7 @@ test_2 (_mm_clmulepi64_si128, __m128i, __m128i, __m128i, 1)
/* x86intrin.h (FMA4/XOP/LWP/BMI/BMI2/TBM/LZCNT/FMA). */
#ifdef DIFFERENT_PRAGMAS
-#pragma GCC target ("fma4,xop,lwp,bmi,bmi2,tbm,lzcnt,fma")
+#pragma GCC target ("fma4,xop,lwp,bmi,bmi2,tbm,lzcnt,fma,rdseed,prfchw,adx")
#endif
#include <x86intrin.h>
/* xopintrin.h */
diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c
index c160d7155f6..f046ef643b5 100644
--- a/gcc/testsuite/gcc.target/i386/sse-23.c
+++ b/gcc/testsuite/gcc.target/i386/sse-23.c
@@ -183,7 +183,7 @@
/* rtmintrin.h */
#define __builtin_ia32_xabort(M) __builtin_ia32_xabort(1)
-#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm")
+#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx")
#include <wmmintrin.h>
#include <smmintrin.h>
#include <mm3dnow.h>
diff --git a/gcc/testsuite/gcc.target/m68k/pr36134.c b/gcc/testsuite/gcc.target/m68k/pr36134.c
index d8d65c16c05..c91956b5c33 100644
--- a/gcc/testsuite/gcc.target/m68k/pr36134.c
+++ b/gcc/testsuite/gcc.target/m68k/pr36134.c
@@ -1,10 +1,15 @@
/* pr36134.c
This test ensures that the shorter LEA instruction is used in preference
- to the longer ADD instruction. */
+ to the longer ADD instruction.
+
+ This preference is applicable to ColdFire only. On CPU32, we can
+ use a sequence of two ADDQ instructions, which is faster than the
+ LEA instruction. */
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-skip-if "" { *-*-* } { "-mcpu=*" } { "-mcpu=5208" } } */
+/* { dg-options "-O2 -mcpu=5208" } */
/* { dg-final { scan-assembler "lea" } } */
/* { dg-final { scan-assembler-not "add" } } */
diff --git a/gcc/testsuite/gcc.target/m68k/stack-limit-1.c b/gcc/testsuite/gcc.target/m68k/stack-limit-1.c
new file mode 100644
index 00000000000..b1e9b99b26c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/m68k/stack-limit-1.c
@@ -0,0 +1,6 @@
+/* -fstack-limit- should be ignored without an ICE if not supported. */
+/* { dg-do compile } */
+/* { dg-options "-fstack-limit-symbol=_stack_limit -m68000" } */
+/* { dg-warning "not supported" "" { target *-*-* } 1 } */
+
+void dummy (void) { }
diff --git a/gcc/testsuite/gcc.target/mips/20020620-1.c b/gcc/testsuite/gcc.target/mips/20020620-1.c
index 1f2affe48fc..f3bed59634c 100644
--- a/gcc/testsuite/gcc.target/mips/20020620-1.c
+++ b/gcc/testsuite/gcc.target/mips/20020620-1.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mlong64" } */
+/* { dg-options "-mlong64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
int foo (int *x, int i)
{
return x[i] + i;
}
-/* { dg-final { scan-assembler-not "move" } } */
+/* { dg-final { scan-assembler-not "\tmove" } } */
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c b/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
index ebc5dd67240..75bd1b664be 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp32 -mlong32 -O2" } */
+/* { dg-options "-mabi=eabi -mgp32 -mlong32" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c b/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c
index 5a776eca988..1649433e633 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp32 -mlong64 -O2" } */
+/* { dg-options "-mabi=eabi -mgp32 -mlong64" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c b/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c
index 3882e48fa35..03d7c271836 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp64 -mlong32 -O2" } */
+/* { dg-options "-mabi=eabi -mgp64 -mlong32" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c b/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c
index 5569bf521e8..bb6fa17ac03 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp64 -mlong64 -O2" } */
+/* { dg-options "-mabi=eabi -mgp64 -mlong64" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c
index 5cab4c97a62..11dfe2bc89d 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=n32 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=n32 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c
index eb455da96a8..ffbe62c48c5 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=n32 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=n32 -mlong32 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long32.c b/gcc/testsuite/gcc.target/mips/abi-n32-long32.c
index 6a0f7023c9d..f6fa20d1203 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=n32 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=n32 -mlong32 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c
index 3edf86787cb..a30b573cb18 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=n32 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=n32 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c
index b444209e3b9..f9729a3dc4b 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=n32 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=n32 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long64.c b/gcc/testsuite/gcc.target/mips/abi-n32-long64.c
index 868719c445f..b064bf5e926 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long64.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=n32 -mlong64 addressing=absolute -O2" } */
+/* { dg-options "-mabi=n32 -mlong64 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c
index b268d888a46..6a524091215 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=64 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=64 -mlong32 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c
index 5a0d9172651..6a5203e8c57 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=64 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=64 -mlong32 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long32.c b/gcc/testsuite/gcc.target/mips/abi-n64-long32.c
index 4227169ec7e..d5f52d94ca5 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long32.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=64 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=64 -mlong32 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c
index 5301cfc5b73..113bbcc5a34 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=64 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=64 -mlong64 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c
index f43e9157bad..5f734687cfe 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=64 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=64 -mlong64 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long64.c b/gcc/testsuite/gcc.target/mips/abi-n64-long64.c
index a670fe5af91..19e6d91d2de 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=64 -mlong64 addressing=absolute -O2" } */
+/* { dg-options "-mabi=64 -mlong64 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c
index 2032b36d9d0..fb1b888d88e 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=32 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=32 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c
index 5a3e93effaf..64a7f585466 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=32 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=32 -mlong32 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long32.c b/gcc/testsuite/gcc.target/mips/abi-o32-long32.c
index bdb9464c74a..790122077c7 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=32 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=32 -mlong32 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c
index 6340b63252b..2f28aeb61e5 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=32 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=32 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c
index 1583034b2a3..89cd9a20790 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=32 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=32 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long64.c b/gcc/testsuite/gcc.target/mips/abi-o32-long64.c
index 4a88739b695..840e9aa130d 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long64.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=32 -mlong64 addressing=absolute -O2" } */
+/* { dg-options "-mabi=32 -mlong64 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c
index 548ae0d4a13..832550e45cb 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=o64 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c
index 89d03ab6740..e06b8829293 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=o64 -mlong32 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long32.c b/gcc/testsuite/gcc.target/mips/abi-o64-long32.c
index db5893e4527..54ac2d707f3 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=o64 -mlong32 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c
index df164b22f6c..94848f4e1be 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=o64 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=o64 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c
index df58d1f0285..8c2ca36d9f7 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=o64 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=o64 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long64.c b/gcc/testsuite/gcc.target/mips/abi-o64-long64.c
index 43078f6809a..02633567ca2 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong64 -mno-abicalls -O2" } */
+/* { dg-options "-mabi=o64 -mlong64 -mno-abicalls" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/asm-1.c b/gcc/testsuite/gcc.target/mips/asm-1.c
index 9f9cb3a3483..8df2689469e 100644
--- a/gcc/testsuite/gcc.target/mips/asm-1.c
+++ b/gcc/testsuite/gcc.target/mips/asm-1.c
@@ -1,7 +1,6 @@
/* PR target/17565. GCC used to put the asm into the delay slot
of the call. */
/* { dg-do assemble } */
-/* { dg-options "-O" } */
NOMIPS16 int foo (int n)
{
diff --git a/gcc/testsuite/gcc.target/mips/atomic-memory-2.c b/gcc/testsuite/gcc.target/mips/atomic-memory-2.c
index bc597ab2d2b..506295b6157 100644
--- a/gcc/testsuite/gcc.target/mips/atomic-memory-2.c
+++ b/gcc/testsuite/gcc.target/mips/atomic-memory-2.c
@@ -1,10 +1,11 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=2 -mabi=32" } */
-/* { dg-final { scan-assembler "addiu" } } */
-/* { dg-final { scan-assembler-not "subu" } } */
+/* { dg-options "isa>=2 -mabi=32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\taddiu\t" } } */
+/* { dg-final { scan-assembler-not "\tsubu" } } */
NOMIPS16 unsigned long
f(unsigned long *p)
{
- return __sync_fetch_and_sub (p, 5);
+ return __sync_fetch_and_sub (p, 5);
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-1.c b/gcc/testsuite/gcc.target/mips/branch-1.c
index 2f4510f8dd6..6ef50e8a187 100644
--- a/gcc/testsuite/gcc.target/mips/branch-1.c
+++ b/gcc/testsuite/gcc.target/mips/branch-1.c
@@ -2,7 +2,7 @@
but we test for "bbit" elsewhere. On other targets, we should implement
the "if" statements using an "andi" instruction followed by a branch
on zero. */
-/* { dg-options "-O2 forbid_cpu=octeon.*" } */
+/* { dg-options "forbid_cpu=octeon.*" } */
void bar (void);
NOMIPS16 void f1 (int x) { if (x & 4) bar (); }
diff --git a/gcc/testsuite/gcc.target/mips/branch-10.c b/gcc/testsuite/gcc.target/mips/branch-10.c
index 8186030e6e1..e2b1b5f6baa 100644
--- a/gcc/testsuite/gcc.target/mips/branch-10.c
+++ b/gcc/testsuite/gcc.target/mips/branch-10.c
@@ -5,9 +5,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-11.c b/gcc/testsuite/gcc.target/mips/branch-11.c
index a314740655d..962eb1b5d66 100644
--- a/gcc/testsuite/gcc.target/mips/branch-11.c
+++ b/gcc/testsuite/gcc.target/mips/branch-11.c
@@ -9,9 +9,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-12.c b/gcc/testsuite/gcc.target/mips/branch-12.c
index 3e5b421cf87..4aef160ade8 100644
--- a/gcc/testsuite/gcc.target/mips/branch-12.c
+++ b/gcc/testsuite/gcc.target/mips/branch-12.c
@@ -5,9 +5,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-13.c b/gcc/testsuite/gcc.target/mips/branch-13.c
index 9bd94146a6f..8a6fb049f24 100644
--- a/gcc/testsuite/gcc.target/mips/branch-13.c
+++ b/gcc/testsuite/gcc.target/mips/branch-13.c
@@ -9,9 +9,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-2.c b/gcc/testsuite/gcc.target/mips/branch-2.c
index f6642cb8743..6409c4cc509 100644
--- a/gcc/testsuite/gcc.target/mips/branch-2.c
+++ b/gcc/testsuite/gcc.target/mips/branch-2.c
@@ -1,7 +1,7 @@
/* { dg-options "-mshared -mabi=32" } */
/* { dg-final { scan-assembler-not "(\\\$25|\\\$28|cpload)" } } */
/* { dg-final { scan-assembler-not "\tjr\t\\\$1\n" } } */
-/* { dg-final { scan-assembler-not "cprestore" } } */
+/* { dg-final { scan-assembler-not "\\.cprestore" } } */
#include "branch-helper.h"
diff --git a/gcc/testsuite/gcc.target/mips/branch-3.c b/gcc/testsuite/gcc.target/mips/branch-3.c
index 198d6ec6484..5fcfece3e9a 100644
--- a/gcc/testsuite/gcc.target/mips/branch-3.c
+++ b/gcc/testsuite/gcc.target/mips/branch-3.c
@@ -1,7 +1,7 @@
/* { dg-options "-mshared -mabi=32" } */
/* { dg-final { scan-assembler "\t\\.cpload\t\\\$25\n" } } */
/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
-/* { dg-final { scan-assembler-not "cprestore" } } */
+/* { dg-final { scan-assembler-not "\\.cprestore" } } */
#include "branch-helper.h"
diff --git a/gcc/testsuite/gcc.target/mips/branch-8.c b/gcc/testsuite/gcc.target/mips/branch-8.c
index 4595feafa61..ba5f954378c 100644
--- a/gcc/testsuite/gcc.target/mips/branch-8.c
+++ b/gcc/testsuite/gcc.target/mips/branch-8.c
@@ -5,9 +5,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-9.c b/gcc/testsuite/gcc.target/mips/branch-9.c
index 417507cc48e..cad1c003c3e 100644
--- a/gcc/testsuite/gcc.target/mips/branch-9.c
+++ b/gcc/testsuite/gcc.target/mips/branch-9.c
@@ -1,18 +1,18 @@
/* { dg-options "-mshared -mabi=32" } */
/* { dg-final { scan-assembler "\t\\.cpload\t\\\$25\n" } } */
/* { dg-final { scan-assembler "\t\\.cprestore\t16\n" } } */
-/* { dg-final { scan-assembler "\tlw\t\\\$1,16\\(\\\$fp\\)\n" } } */
+/* { dg-final { scan-assembler "\tlw\t\\\$1,16\\(\\\$(fp|sp)\\)\n" } } */
/* { dg-final { scan-assembler "\tlw\t\\\$1,%got\\(\[^)\]*\\)\\(\\\$1\\)\n" } } */
/* { dg-final { scan-assembler "\taddiu\t\\\$1,\\\$1,%lo\\(\[^)\]*\\)\n" } } */
/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
-/* { dg-final { scan-assembler-not "\tlw\t\\\$28,16\\(\\\$sp\\)\n" } } */
+/* { dg-final { scan-assembler-not "\\\$28" } } */
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-cost-1.c b/gcc/testsuite/gcc.target/mips/branch-cost-1.c
index d825e06176e..f72f2acfb3a 100644
--- a/gcc/testsuite/gcc.target/mips/branch-cost-1.c
+++ b/gcc/testsuite/gcc.target/mips/branch-cost-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mbranch-cost=1 isa>=4 -O2" } */
+/* { dg-options "-mbranch-cost=1 isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int
foo (int x, int y, int z, int k)
{
diff --git a/gcc/testsuite/gcc.target/mips/branch-cost-2.c b/gcc/testsuite/gcc.target/mips/branch-cost-2.c
index 23f528ad63f..3b2c4a13e5e 100644
--- a/gcc/testsuite/gcc.target/mips/branch-cost-2.c
+++ b/gcc/testsuite/gcc.target/mips/branch-cost-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mbranch-cost=10 isa>=4 -O2" } */
+/* { dg-options "-mbranch-cost=10 isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int
foo (int x, int y, int z, int k)
{
diff --git a/gcc/testsuite/gcc.target/mips/cache-1.c b/gcc/testsuite/gcc.target/mips/cache-1.c
index da897066d49..f5c3dd307d8 100644
--- a/gcc/testsuite/gcc.target/mips/cache-1.c
+++ b/gcc/testsuite/gcc.target/mips/cache-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 isa>=3" } */
+/* { dg-options "isa>=3" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 void
f1 (int *area)
diff --git a/gcc/testsuite/gcc.target/mips/call-1.c b/gcc/testsuite/gcc.target/mips/call-1.c
index 7dceefaa3d2..a9c97c329e4 100644
--- a/gcc/testsuite/gcc.target/mips/call-1.c
+++ b/gcc/testsuite/gcc.target/mips/call-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -mrelax-pic-calls -mshared" } */
+/* { dg-options "-mrelax-pic-calls -mshared -foptimize-sibling-calls" } */
+/* { dg-skip-if "requires -foptimize-sibling-calls" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal\n1:\tjalr\t" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal2\n1:\tjalr\t" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,staticfunc\n1:\tjalr\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/call-2.c b/gcc/testsuite/gcc.target/mips/call-2.c
index 8e749919031..7fabb1fd970 100644
--- a/gcc/testsuite/gcc.target/mips/call-2.c
+++ b/gcc/testsuite/gcc.target/mips/call-2.c
@@ -1,14 +1,8 @@
/* See through some simple data-flow. */
-/* { dg-options "-O2 -mrelax-pic-calls" } */
-/* { dg-final { scan-assembler-times "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" 3 } } */
+/* { dg-options "-mrelax-pic-calls" } */
+/* { dg-final { scan-assembler-times "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" 2 } } */
-NOMIPS16 f (int i)
-{
- while (i--)
- g ();
-}
-
-NOMIPS16 ff ()
+NOMIPS16 f ()
{
g ();
g ();
diff --git a/gcc/testsuite/gcc.target/mips/call-3.c b/gcc/testsuite/gcc.target/mips/call-3.c
index 25f01d2a901..2c564886b1d 100644
--- a/gcc/testsuite/gcc.target/mips/call-3.c
+++ b/gcc/testsuite/gcc.target/mips/call-3.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mrelax-pic-calls -mno-shared" } */
+/* { dg-options "-mrelax-pic-calls -mno-shared" } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" } } */
/* { dg-require-visibility "" } */
diff --git a/gcc/testsuite/gcc.target/mips/call-4.c b/gcc/testsuite/gcc.target/mips/call-4.c
new file mode 100644
index 00000000000..049e33882fa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/call-4.c
@@ -0,0 +1,9 @@
+/* See through some simple data-flow. */
+/* { dg-options "-mrelax-pic-calls" } */
+/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" } } */
+
+NOMIPS16 f (int i)
+{
+ while (i--)
+ g ();
+}
diff --git a/gcc/testsuite/gcc.target/mips/call-saved-2.c b/gcc/testsuite/gcc.target/mips/call-saved-2.c
index 9ac7a2735ad..b55c30ab062 100644
--- a/gcc/testsuite/gcc.target/mips/call-saved-2.c
+++ b/gcc/testsuite/gcc.target/mips/call-saved-2.c
@@ -1,5 +1,6 @@
/* Check that we save non-MIPS16 GPRs if they are explicitly clobbered. */
-/* { dg-options "(-mips16) isa_rev=0 -O2" } */
+/* { dg-options "(-mips16) isa_rev=0" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
MIPS16 void
foo (void)
diff --git a/gcc/testsuite/gcc.target/mips/call-saved-3.c b/gcc/testsuite/gcc.target/mips/call-saved-3.c
index e178eb0f061..84cdb3b8898 100644
--- a/gcc/testsuite/gcc.target/mips/call-saved-3.c
+++ b/gcc/testsuite/gcc.target/mips/call-saved-3.c
@@ -1,6 +1,6 @@
/* Check that we save all call-saved GPRs in a MIPS16 __builtin_setjmp
function. */
-/* { dg-options "(-mips16) isa_rev=0 -O2" } */
+/* { dg-options "(-mips16) isa_rev=0" } */
void bar (void);
extern int buf[];
diff --git a/gcc/testsuite/gcc.target/mips/clear-cache-1.c b/gcc/testsuite/gcc.target/mips/clear-cache-1.c
index 0ccc007fbc7..f1554f593dc 100644
--- a/gcc/testsuite/gcc.target/mips/clear-cache-1.c
+++ b/gcc/testsuite/gcc.target/mips/clear-cache-1.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -msynci isa_rev>=2" } */
-/* { dg-final { scan-assembler "synci" } } */
-/* { dg-final { scan-assembler "jr.hb" } } */
-/* { dg-final { scan-assembler-not "_flush_cache" } } */
+/* { dg-options "-msynci isa_rev>=2" } */
+/* { dg-final { scan-assembler "\tsynci\t" } } */
+/* { dg-final { scan-assembler "\tjr.hb\t" } } */
+/* { dg-final { scan-assembler-not "_flush_cache|mips_sync_icache|_cacheflush" } } */
NOMIPS16 void f()
{
diff --git a/gcc/testsuite/gcc.target/mips/clear-cache-2.c b/gcc/testsuite/gcc.target/mips/clear-cache-2.c
index 2c925b86031..f1f7f819099 100644
--- a/gcc/testsuite/gcc.target/mips/clear-cache-2.c
+++ b/gcc/testsuite/gcc.target/mips/clear-cache-2.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mips32" } */
-/* { dg-final { scan-assembler-not "synci" } } */
-/* { dg-final { scan-assembler-not "jr.hb" } } */
-/* { dg-final { scan-assembler "_flush_cache" } } */
+/* { dg-options "-mips32" } */
+/* { dg-final { scan-assembler-not "\tsynci" } } */
+/* { dg-final { scan-assembler-not "\tjr.hb" } } */
+/* { dg-final { scan-assembler "_flush_cache|mips_sync_icache|_cacheflush" } } */
void f()
{
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-1.c b/gcc/testsuite/gcc.target/mips/code-readable-1.c
index d9b6e65ea27..34c2c0a770a 100644
--- a/gcc/testsuite/gcc.target/mips/code-readable-1.c
+++ b/gcc/testsuite/gcc.target/mips/code-readable-1.c
@@ -1,17 +1,26 @@
/* { dg-options "(-mips16) -mcode-readable=yes -mgp32 addressing=absolute" } */
+/* { dg-skip-if ".half requires -O" { *-*-* } { "-O0" } { "" } } */
+
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
MIPS16 int
-foo (int i)
+foo (int i, volatile *x)
{
switch (i)
{
- case 1: return 40;
- case 2: return 11;
- case 3: return 29;
- case 4: return 10;
- case 5: return 12;
- case 6: return 35;
- case 7: return 23;
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
default: return 0;
}
}
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-2.c b/gcc/testsuite/gcc.target/mips/code-readable-2.c
index e0176c3dbd5..71aeb132c0c 100644
--- a/gcc/testsuite/gcc.target/mips/code-readable-2.c
+++ b/gcc/testsuite/gcc.target/mips/code-readable-2.c
@@ -1,17 +1,25 @@
/* { dg-options "(-mips16) -mcode-readable=pcrel -mgp32 addressing=absolute" } */
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
+
MIPS16 int
-foo (int i)
+foo (int i, volatile *x)
{
switch (i)
{
- case 1: return 40;
- case 2: return 11;
- case 3: return 29;
- case 4: return 10;
- case 5: return 12;
- case 6: return 35;
- case 7: return 23;
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
default: return 0;
}
}
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-3.c b/gcc/testsuite/gcc.target/mips/code-readable-3.c
index 075ca8d1749..fc785055196 100644
--- a/gcc/testsuite/gcc.target/mips/code-readable-3.c
+++ b/gcc/testsuite/gcc.target/mips/code-readable-3.c
@@ -1,17 +1,25 @@
/* { dg-options "(-mips16) -mcode-readable=no -mgp32 addressing=absolute" } */
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
+
MIPS16 int
-foo (int i)
+foo (int i, volatile *x)
{
switch (i)
{
- case 1: return 40;
- case 2: return 11;
- case 3: return 29;
- case 4: return 10;
- case 5: return 12;
- case 6: return 35;
- case 7: return 23;
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
default: return 0;
}
}
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-4.c b/gcc/testsuite/gcc.target/mips/code-readable-4.c
new file mode 100644
index 00000000000..ae8ff8a1a66
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/code-readable-4.c
@@ -0,0 +1,43 @@
+/* { dg-options "(-mips16) -mcode-readable=yes -mabi=eabi -mgp64" } */
+/* { dg-skip-if ".half requires -O" { *-*-* } { "-O0" } { "" } } */
+
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
+
+MIPS16 int
+foo (int i, volatile *x)
+{
+ switch (i)
+ {
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
+ default: return 0;
+ }
+}
+
+extern int k[];
+
+MIPS16 int *
+bar (void)
+{
+ return k;
+}
+
+/* { dg-final { scan-assembler "\tla\t" } } */
+/* { dg-final { scan-assembler "\t\\.half\t" } } */
+/* { dg-final { scan-assembler-not "%hi\\(\[^)\]*L" } } */
+/* { dg-final { scan-assembler-not "%lo\\(\[^)\]*L" } } */
+
+/* { dg-final { scan-assembler "\t\\.dword\tk\n" } } */
+/* { dg-final { scan-assembler-not "%hi\\(k\\)" } } */
+/* { dg-final { scan-assembler-not "%lo\\(k\\)" } } */
diff --git a/gcc/testsuite/gcc.target/mips/const-anchor-1.c b/gcc/testsuite/gcc.target/mips/const-anchor-1.c
index 66981671d02..a5f01e4ec1a 100644
--- a/gcc/testsuite/gcc.target/mips/const-anchor-1.c
+++ b/gcc/testsuite/gcc.target/mips/const-anchor-1.c
@@ -1,8 +1,8 @@
/* Derive a constant (0x1233ffff) from an intermediate value
(0x1234000) used to build another constant. */
-/* { dg-options "-O" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "0x12330000|305332224" } } */
-/* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,-1" } } */
+/* { dg-final { scan-assembler "\td?addiu\t\\\$5,\\\$\[0-9\]*,-1" } } */
NOMIPS16 void f ()
{
diff --git a/gcc/testsuite/gcc.target/mips/const-anchor-2.c b/gcc/testsuite/gcc.target/mips/const-anchor-2.c
index ccb89bb766c..8dad5a70b27 100644
--- a/gcc/testsuite/gcc.target/mips/const-anchor-2.c
+++ b/gcc/testsuite/gcc.target/mips/const-anchor-2.c
@@ -1,7 +1,7 @@
/* Derive a constant (0x30001) from another constant. */
-/* { dg-options "-O" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "0x300000|196608" } } */
-/* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,32763" } } */
+/* { dg-final { scan-assembler "\td?addiu\t\\\$5,\\\$\[0-9\]*,32763" } } */
NOMIPS16 void f ()
{
diff --git a/gcc/testsuite/gcc.target/mips/div-1.c b/gcc/testsuite/gcc.target/mips/div-1.c
index e1976c25e0d..08234a6e1b1 100644
--- a/gcc/testsuite/gcc.target/mips/div-1.c
+++ b/gcc/testsuite/gcc.target/mips/div-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-10.c b/gcc/testsuite/gcc.target/mips/div-10.c
index 23075da2c3d..fb8953def4d 100644
--- a/gcc/testsuite/gcc.target/mips/div-10.c
+++ b/gcc/testsuite/gcc.target/mips/div-10.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-11.c b/gcc/testsuite/gcc.target/mips/div-11.c
index 68f1658484b..ff129292a34 100644
--- a/gcc/testsuite/gcc.target/mips/div-11.c
+++ b/gcc/testsuite/gcc.target/mips/div-11.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-12.c b/gcc/testsuite/gcc.target/mips/div-12.c
index c2384b20a9d..57866ceb021 100644
--- a/gcc/testsuite/gcc.target/mips/div-12.c
+++ b/gcc/testsuite/gcc.target/mips/div-12.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-2.c b/gcc/testsuite/gcc.target/mips/div-2.c
index af6e2fa8e1a..257ca923d05 100644
--- a/gcc/testsuite/gcc.target/mips/div-2.c
+++ b/gcc/testsuite/gcc.target/mips/div-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-3.c b/gcc/testsuite/gcc.target/mips/div-3.c
index 684b6a8e441..b9ae3684ef4 100644
--- a/gcc/testsuite/gcc.target/mips/div-3.c
+++ b/gcc/testsuite/gcc.target/mips/div-3.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-4.c b/gcc/testsuite/gcc.target/mips/div-4.c
index 251b88f8164..5f05d8e78ee 100644
--- a/gcc/testsuite/gcc.target/mips/div-4.c
+++ b/gcc/testsuite/gcc.target/mips/div-4.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-5.c b/gcc/testsuite/gcc.target/mips/div-5.c
index a08f3e6f4bd..294cc7f24ac 100644
--- a/gcc/testsuite/gcc.target/mips/div-5.c
+++ b/gcc/testsuite/gcc.target/mips/div-5.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-6.c b/gcc/testsuite/gcc.target/mips/div-6.c
index 23075da2c3d..fb8953def4d 100644
--- a/gcc/testsuite/gcc.target/mips/div-6.c
+++ b/gcc/testsuite/gcc.target/mips/div-6.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-7.c b/gcc/testsuite/gcc.target/mips/div-7.c
index 68f1658484b..ff129292a34 100644
--- a/gcc/testsuite/gcc.target/mips/div-7.c
+++ b/gcc/testsuite/gcc.target/mips/div-7.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-8.c b/gcc/testsuite/gcc.target/mips/div-8.c
index c2384b20a9d..57866ceb021 100644
--- a/gcc/testsuite/gcc.target/mips/div-8.c
+++ b/gcc/testsuite/gcc.target/mips/div-8.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-9.c b/gcc/testsuite/gcc.target/mips/div-9.c
index a08f3e6f4bd..294cc7f24ac 100644
--- a/gcc/testsuite/gcc.target/mips/div-9.c
+++ b/gcc/testsuite/gcc.target/mips/div-9.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c b/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c
index 87d1da98cb5..a48f561f320 100644
--- a/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c
+++ b/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c
@@ -1,5 +1,7 @@
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-O2 -mgp32 -mdsp" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 -mdsp -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdpaq_sa.l.w\t\\\$ac" 3 } } */
NOMIPS16 _Sat long long _Fract
diff --git a/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c b/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c
index 9aeb5667acf..fb63a1db80a 100644
--- a/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c
+++ b/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c
@@ -1,5 +1,7 @@
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-O2 -mgp32 -mdsp" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 -mdsp -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdpsq_sa.l.w\t\\\$ac" 2 } } */
NOMIPS16 _Sat long long _Fract
diff --git a/gcc/testsuite/gcc.target/mips/dse-1.c b/gcc/testsuite/gcc.target/mips/dse-1.c
index 6ef55cde25e..e53189cadd8 100644
--- a/gcc/testsuite/gcc.target/mips/dse-1.c
+++ b/gcc/testsuite/gcc.target/mips/dse-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-mgp64 -O" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(ID, TYPE1, TYPE2) \
union u##ID { \
diff --git a/gcc/testsuite/gcc.target/mips/dsp-ctrl.c b/gcc/testsuite/gcc.target/mips/dsp-ctrl.c
index bb89e84f239..4bf449b86ca 100644
--- a/gcc/testsuite/gcc.target/mips/dsp-ctrl.c
+++ b/gcc/testsuite/gcc.target/mips/dsp-ctrl.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mdsp -mgp32" } */
+/* { dg-options "-mdsp -mgp32" } */
extern void abort (void);
extern void exit (int);
diff --git a/gcc/testsuite/gcc.target/mips/dsp-lhx.c b/gcc/testsuite/gcc.target/mips/dsp-lhx.c
index 416356f2a03..8fa20a09090 100644
--- a/gcc/testsuite/gcc.target/mips/dsp-lhx.c
+++ b/gcc/testsuite/gcc.target/mips/dsp-lhx.c
@@ -1,6 +1,7 @@
/* Test MIPS32 DSP LHX instruction */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdsp -O2" } */
+/* { dg-options "-mgp32 -mdsp" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tlhx\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c b/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c
index a37c42f1a90..42c4688cd0f 100644
--- a/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c
+++ b/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c
@@ -1,6 +1,6 @@
/* Test MIPS32 DSP LHX instruction */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdsp -O2" } */
+/* { dg-options "-mgp32 -mdsp" } */
/* { dg-final { scan-assembler-not "\tlhx\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/dspr2-MULT.c b/gcc/testsuite/gcc.target/mips/dspr2-MULT.c
index c685974895d..b668e0c6b51 100644
--- a/gcc/testsuite/gcc.target/mips/dspr2-MULT.c
+++ b/gcc/testsuite/gcc.target/mips/dspr2-MULT.c
@@ -1,12 +1,14 @@
/* Test MIPS32 DSP REV 2 MULT instruction. Tune for a CPU that has
pipelined mult. */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdspr2 -O2 -mtune=74kc" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 -mdspr2 -mtune=74kc -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* See PR target/51729 for the reason behind the XFAILs. */
/* { dg-final { scan-assembler "\tmult\t" } } */
-/* { dg-final { scan-assembler "ac1" { xfail *-*-* } } } */
-/* { dg-final { scan-assembler "ac2" { xfail *-*-* } } } */
+/* { dg-final { scan-assembler "\\\$ac1" { xfail *-*-* } } } */
+/* { dg-final { scan-assembler "\\\$ac2" { xfail *-*-* } } } */
typedef long long a64;
diff --git a/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c b/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c
index 7f04315efe5..886e4ca8816 100644
--- a/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c
+++ b/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c
@@ -1,12 +1,13 @@
/* Test MIPS32 DSP REV 2 MULTU instruction. Tune for a CPU that has
pipelined multu. */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdspr2 -O2 -mtune=74kc" } */
+/* { dg-options "-mgp32 -mdspr2 -mtune=74kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* See PR target/51729 for the reason behind the XFAILs. */
/* { dg-final { scan-assembler "\tmultu\t" } } */
-/* { dg-final { scan-assembler "ac1" { xfail *-*-* } } } */
-/* { dg-final { scan-assembler "ac2" { xfail *-*-* } } } */
+/* { dg-final { scan-assembler "\\\$ac1" { xfail *-*-* } } } */
+/* { dg-final { scan-assembler "\\\$ac2" { xfail *-*-* } } } */
typedef unsigned long long a64;
diff --git a/gcc/testsuite/gcc.target/mips/ext-1.c b/gcc/testsuite/gcc.target/mips/ext-1.c
index 426cbb28573..177b5033b07 100644
--- a/gcc/testsuite/gcc.target/mips/ext-1.c
+++ b/gcc/testsuite/gcc.target/mips/ext-1.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
-/* { dg-final { scan-assembler-not "and" } } */
+/* { dg-final { scan-assembler-not "\tand" } } */
struct
{
diff --git a/gcc/testsuite/gcc.target/mips/ext-2.c b/gcc/testsuite/gcc.target/mips/ext-2.c
index d6ccce29e04..5d68bc55b9b 100644
--- a/gcc/testsuite/gcc.target/mips/ext-2.c
+++ b/gcc/testsuite/gcc.target/mips/ext-2.c
@@ -2,10 +2,11 @@
zero_extract. The truncate is due to TARGET_PROMOTE_PROTOTYPES, the
zero_extend to PROMOTE_MODE. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
-/* { dg-final { scan-assembler-not "and" } } */
-/* { dg-final { scan-assembler-not "srl" } } */
+/* { dg-final { scan-assembler-not "\tand" } } */
+/* { dg-final { scan-assembler-not "\td?srl" } } */
NOMIPS16 void
f (unsigned char x, unsigned char *r)
diff --git a/gcc/testsuite/gcc.target/mips/ext-3.c b/gcc/testsuite/gcc.target/mips/ext-3.c
index acdbbc9a413..66780551b86 100644
--- a/gcc/testsuite/gcc.target/mips/ext-3.c
+++ b/gcc/testsuite/gcc.target/mips/ext-3.c
@@ -1,8 +1,9 @@
/* For MIPS64r2 use DEXT rather than DSLL/DSRL to zero-extend. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
-/* { dg-final { scan-assembler-not "sll" } } */
+/* { dg-final { scan-assembler-not "\td?sll" } } */
NOMIPS16 unsigned long long
f (unsigned *i)
diff --git a/gcc/testsuite/gcc.target/mips/ext-4.c b/gcc/testsuite/gcc.target/mips/ext-4.c
index f3d2ad92aa3..16b848c358d 100644
--- a/gcc/testsuite/gcc.target/mips/ext-4.c
+++ b/gcc/testsuite/gcc.target/mips/ext-4.c
@@ -1,8 +1,9 @@
/* For MIPS64r2 use DEXT rather than DSLL/DSRL for clear_upper32. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
-/* { dg-final { scan-assembler-not "sll" } } */
+/* { dg-final { scan-assembler-not "\td?sll" } } */
NOMIPS16 unsigned long long
f (unsigned long long i)
diff --git a/gcc/testsuite/gcc.target/mips/ext-5.c b/gcc/testsuite/gcc.target/mips/ext-5.c
index 64186383cb2..8bab2148f49 100644
--- a/gcc/testsuite/gcc.target/mips/ext-5.c
+++ b/gcc/testsuite/gcc.target/mips/ext-5.c
@@ -1,6 +1,7 @@
/* For MIPS32r2 use EXT when ANDing with low-order bitmasks. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2" } */
+/* { dg-options "isa_rev>=2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\text\t" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-6.c b/gcc/testsuite/gcc.target/mips/ext-6.c
index b4a7dd2515c..e12cbe6e1c4 100644
--- a/gcc/testsuite/gcc.target/mips/ext-6.c
+++ b/gcc/testsuite/gcc.target/mips/ext-6.c
@@ -1,6 +1,7 @@
/* For MIPS64r2 use DEXT when ANDing with low-order bitmasks. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-7.c b/gcc/testsuite/gcc.target/mips/ext-7.c
index 394d41f06c8..2e23dd6525f 100644
--- a/gcc/testsuite/gcc.target/mips/ext-7.c
+++ b/gcc/testsuite/gcc.target/mips/ext-7.c
@@ -1,6 +1,7 @@
/* No need to use ext if we can use andi. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2" } */
+/* { dg-options "isa_rev>=2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tandi\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-8.c b/gcc/testsuite/gcc.target/mips/ext-8.c
index 90241dd2f19..9ceee7b9f76 100644
--- a/gcc/testsuite/gcc.target/mips/ext-8.c
+++ b/gcc/testsuite/gcc.target/mips/ext-8.c
@@ -1,6 +1,6 @@
/* Also make sure we don't use ext for MIPS*r1. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev<=1" } */
+/* { dg-options "isa_rev<=1" } */
/* { dg-final { scan-assembler "\tand\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext_ins.c b/gcc/testsuite/gcc.target/mips/ext_ins.c
index 8186b84a27f..f0169bc4114 100644
--- a/gcc/testsuite/gcc.target/mips/ext_ins.c
+++ b/gcc/testsuite/gcc.target/mips/ext_ins.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "isa_rev>=2" } */
-/* { dg-final { scan-assembler "ext" } } */
-/* { dg-final { scan-assembler "ins" } } */
+/* { dg-final { scan-assembler "\td?ext\t" } } */
+/* { dg-final { scan-assembler "\td?ins\t" } } */
struct A
{
@@ -13,12 +13,12 @@ struct A
void func (struct A);
-unsigned int f1 (struct A a)
+NOMIPS16 unsigned int f1 (struct A a)
{
return a.j;
}
-void f2 (int i)
+NOMIPS16 void f2 (int i)
{
struct A c;
c.j = i;
diff --git a/gcc/testsuite/gcc.target/mips/extend-1.c b/gcc/testsuite/gcc.target/mips/extend-1.c
index 94d199f887b..9240ea55886 100644
--- a/gcc/testsuite/gcc.target/mips/extend-1.c
+++ b/gcc/testsuite/gcc.target/mips/extend-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 forbid_cpu=octeon.*" } */
+/* { dg-options "-mgp64 forbid_cpu=octeon.*" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdsll\t" 5 } } */
/* { dg-final { scan-assembler-times "\tdsra\t" 5 } } */
/* { dg-final { scan-assembler-not "\tsll\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/extend-2.c b/gcc/testsuite/gcc.target/mips/extend-2.c
index b91ae209c0c..a2036a899ee 100644
--- a/gcc/testsuite/gcc.target/mips/extend-2.c
+++ b/gcc/testsuite/gcc.target/mips/extend-2.c
@@ -1,6 +1,6 @@
/* Check the shift_shift alternative of the AND patterns. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev<=1 -mgp64" } */
+/* { dg-options "isa_rev<=1 -mgp64" } */
/* { dg-final { scan-assembler "\tdsrl\t" } } */
/* { dg-final { scan-assembler "\tdsll\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-1.c b/gcc/testsuite/gcc.target/mips/fix-r10000-1.c
index 76f3b86ec5d..edf4d70c63e 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-1.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-10.c b/gcc/testsuite/gcc.target/mips/fix-r10000-10.c
index 6ac908a71bb..ab353b6b1e4 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-10.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-10.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-11.c b/gcc/testsuite/gcc.target/mips/fix-r10000-11.c
index e1677b6577a..30f6038b71f 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-11.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-11.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-12.c b/gcc/testsuite/gcc.target/mips/fix-r10000-12.c
index f767ae20289..855000df2bf 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-12.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-12.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
/* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-13.c b/gcc/testsuite/gcc.target/mips/fix-r10000-13.c
index b0779e0ec34..aa2d236f679 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-13.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-13.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-14.c b/gcc/testsuite/gcc.target/mips/fix-r10000-14.c
index 4a690f59ed1..542e02f9cb0 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-14.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-14.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-15.c b/gcc/testsuite/gcc.target/mips/fix-r10000-15.c
index bb5fd743af7..f44a725ec63 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-15.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-15.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-2.c b/gcc/testsuite/gcc.target/mips/fix-r10000-2.c
index bac01913405..88a59184197 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-2.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-3.c b/gcc/testsuite/gcc.target/mips/fix-r10000-3.c
index bec7951c1d4..fbeeca10f5e 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-3.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-4.c b/gcc/testsuite/gcc.target/mips/fix-r10000-4.c
index 864ab8c1ee4..344c6277b5b 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-4.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-5.c b/gcc/testsuite/gcc.target/mips/fix-r10000-5.c
index 62fd70f5f09..a775a6c0e62 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-5.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-6.c b/gcc/testsuite/gcc.target/mips/fix-r10000-6.c
index d8bdb4516de..62f8fdfb4bd 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-6.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-6.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-7.c b/gcc/testsuite/gcc.target/mips/fix-r10000-7.c
index d4b558e0115..635326c5c54 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-7.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-7.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-8.c b/gcc/testsuite/gcc.target/mips/fix-r10000-8.c
index d48ed263c82..68978494d6e 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-8.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-8.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-9.c b/gcc/testsuite/gcc.target/mips/fix-r10000-9.c
index 88afad339c9..3d140b1bc8a 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-9.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-9.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-1.c b/gcc/testsuite/gcc.target/mips/fix-r4000-1.c
index 551d3549d84..5c812f25600 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-1.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
typedef int int32_t;
typedef int uint32_t;
NOMIPS16 int32_t foo (int32_t x, int32_t y) { return x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-10.c b/gcc/testsuite/gcc.target/mips/fix-r4000-10.c
index 8c938b7d219..7227bc8c092 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-10.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-10.c
@@ -1,7 +1,8 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips3 -mfix-r4000 -mgp64 -O2 -fno-split-wide-types -dp -EL" } */
+/* { dg-options "-mips3 -mfix-r4000 -mgp64 -EL -fno-split-wide-types -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned long long uint64_t;
typedef unsigned int uint128_t __attribute__((mode(TI)));
NOMIPS16 uint128_t foo (uint64_t x, uint64_t y) { return (uint128_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-11.c b/gcc/testsuite/gcc.target/mips/fix-r4000-11.c
index 7cfad3d2f79..1ea7a7c408b 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-11.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-11.c
@@ -1,4 +1,6 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "using DDIV gives a shorter sequence" { *-*-* } { "-Os" } { "" } } */
typedef long long int64_t;
NOMIPS16 int64_t foo (int64_t x) { return x / 11993; }
/* { dg-final { scan-assembler "[concat {\tdmult\t\$4,\$[0-9]+[^\n]+smuldi3_highpart[^\n]+\n\tmfhi\t\$[0-9]+\n}]" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-12.c b/gcc/testsuite/gcc.target/mips/fix-r4000-12.c
index d449283ddf3..a2afabbc73b 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-12.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-12.c
@@ -1,4 +1,6 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "using DDIVU gives a shorter sequence" { *-*-* } { "-Os" } { "" } } */
typedef unsigned long long uint64_t;
NOMIPS16 uint64_t foo (uint64_t x) { return x / 11993; }
/* { dg-final { scan-assembler "[concat {\tdmultu\t\$4,\$[0-9]+[^\n]+umuldi3_highpart[^\n]+\n\tmfhi\t\$[0-9]+\n}]" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-2.c b/gcc/testsuite/gcc.target/mips/fix-r4000-2.c
index 6cb7d3594e0..0261b16b1c8 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-2.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-2.c
@@ -1,4 +1,6 @@
-/* { dg-options "-mips1 -mfix-r4000 -O2 -dp -EB" } */
+/* This test requires widening_mul */
+/* { dg-options "-mips1 -mfix-r4000 -dp -EB -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef int int32_t;
typedef long long int64_t;
NOMIPS16 int32_t foo (int32_t x, int32_t y) { return ((int64_t) x * y) >> 32; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-3.c b/gcc/testsuite/gcc.target/mips/fix-r4000-3.c
index bd12509d1bd..195a9d10ced 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-3.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mips1 -mfix-r4000 -O2 -dp -EB" } */
+/* { dg-options "-mips1 -mfix-r4000 -dp -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
NOMIPS16 uint32_t foo (uint32_t x, uint32_t y) { return ((uint64_t) x * y) >> 32; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-4.c b/gcc/testsuite/gcc.target/mips/fix-r4000-4.c
index 3854db8967d..7a66182f524 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-4.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-4.c
@@ -1,7 +1,9 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips1 -mfix-r4000 -O2 -fno-split-wide-types -dp -EL" } */
+/* This test requires widening_mul */
+/* { dg-options "-mips1 -mfix-r4000 -fno-split-wide-types -dp -EL -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef int int32_t;
typedef long long int64_t;
NOMIPS16 int64_t foo (int32_t x, int32_t y) { return (int64_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-5.c b/gcc/testsuite/gcc.target/mips/fix-r4000-5.c
index c46300f62db..0c063080068 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-5.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-5.c
@@ -1,7 +1,8 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips1 -mfix-r4000 -O2 -fno-split-wide-types -dp -EL" } */
+/* { dg-options "-mips1 -mfix-r4000 -fno-split-wide-types -dp -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
NOMIPS16 uint64_t foo (uint32_t x, uint32_t y) { return (uint64_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-6.c b/gcc/testsuite/gcc.target/mips/fix-r4000-6.c
index 1e33cc4f765..9647a900cdd 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-6.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
typedef long long int64_t;
typedef unsigned long long uint64_t;
NOMIPS16 int64_t foo (int64_t x, int64_t y) { return x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-7.c b/gcc/testsuite/gcc.target/mips/fix-r4000-7.c
index 118ba99dfeb..ddba3038350 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-7.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-7.c
@@ -1,4 +1,6 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -O2 -mgp64 -dp -EB" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp -EB -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef long long int64_t;
typedef int int128_t __attribute__((mode(TI)));
NOMIPS16 int64_t foo (int64_t x, int64_t y) { return ((int128_t) x * y) >> 64; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-8.c b/gcc/testsuite/gcc.target/mips/fix-r4000-8.c
index f2c71c1ef1a..4ae670622ba 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-8.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-8.c
@@ -1,4 +1,5 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -O2 -mgp64 -dp -EB" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned long long uint64_t;
typedef unsigned int uint128_t __attribute__((mode(TI)));
NOMIPS16 uint64_t foo (uint64_t x, uint64_t y) { return ((uint128_t) x * y) >> 64; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-9.c b/gcc/testsuite/gcc.target/mips/fix-r4000-9.c
index da9c11364d2..316715c5934 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-9.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-9.c
@@ -1,7 +1,9 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips3 -mfix-r4000 -mgp64 -O2 -fno-split-wide-types -dp -EL" } */
+/* This test requires widening_mul */
+/* { dg-options "-mips3 -mfix-r4000 -mgp64 -fno-split-wide-types -dp -EL -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef long long int64_t;
typedef int int128_t __attribute__((mode(TI)));
NOMIPS16 int128_t foo (int64_t x, int64_t y) { return (int128_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c b/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c
index b4734f4d522..810c82c2f65 100644
--- a/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c
+++ b/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c
@@ -1,6 +1,7 @@
/* Test scalar fixed-point instructions */
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-mdspr2 -O2" } */
+/* { dg-options "-mdspr2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\taddu\t" 10 } } */
/* { dg-final { scan-assembler-times "\tsubu\t" 10 } } */
/* { dg-final { scan-assembler "\taddu_s.qb\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fixed-vector-type.c b/gcc/testsuite/gcc.target/mips/fixed-vector-type.c
index 9b67704794f..ddd9660f1d4 100644
--- a/gcc/testsuite/gcc.target/mips/fixed-vector-type.c
+++ b/gcc/testsuite/gcc.target/mips/fixed-vector-type.c
@@ -1,6 +1,7 @@
/* Test vector fixed-point instructions */
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-mdspr2 -O2" } */
+/* { dg-options "-mdspr2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\taddq_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\tsubq_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\taddu_s.qb\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/mips/fpcmp-1.c b/gcc/testsuite/gcc.target/mips/fpcmp-1.c
index cae48a0e93a..c0594ff3562 100644
--- a/gcc/testsuite/gcc.target/mips/fpcmp-1.c
+++ b/gcc/testsuite/gcc.target/mips/fpcmp-1.c
@@ -1,6 +1,6 @@
/* We used to use c.lt.fmt instead of c.ule.fmt here. */
-/* { dg-options "-mhard-float -O2" } */
+/* { dg-options "-mhard-float" } */
NOMIPS16 int f1 (float x, float y) { return __builtin_isless (x, y); }
NOMIPS16 int f2 (double x, double y) { return __builtin_isless (x, y); }
-/* { dg-final { scan-assembler "c\\.ule\\.s" } } */
-/* { dg-final { scan-assembler "c\\.ule\\.d" } } */
+/* { dg-final { scan-assembler "\tc\\.ule\\.s\t" } } */
+/* { dg-final { scan-assembler "\tc\\.ule\\.d\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fpcmp-2.c b/gcc/testsuite/gcc.target/mips/fpcmp-2.c
index 3e1c259f89a..23d5cb0c4ca 100644
--- a/gcc/testsuite/gcc.target/mips/fpcmp-2.c
+++ b/gcc/testsuite/gcc.target/mips/fpcmp-2.c
@@ -1,6 +1,6 @@
/* We used to use c.le.fmt instead of c.ult.fmt here. */
-/* { dg-options "-mhard-float -O2" } */
+/* { dg-options "-mhard-float" } */
NOMIPS16 int f1 (float x, float y) { return __builtin_islessequal (x, y); }
NOMIPS16 int f2 (double x, double y) { return __builtin_islessequal (x, y); }
-/* { dg-final { scan-assembler "c\\.ult\\.s" } } */
-/* { dg-final { scan-assembler "c\\.ult\\.d" } } */
+/* { dg-final { scan-assembler "\tc\\.ult\\.s\t" } } */
+/* { dg-final { scan-assembler "\tc\\.ult\\.d\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-1.c b/gcc/testsuite/gcc.target/mips/fpr-moves-1.c
index 92977e04e38..51a5f172389 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-1.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mhard-float -mips1 -O2 -EL" } */
+/* { dg-options "-mabi=32 -mhard-float -mips1 -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 void
foo (double d, double *x)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-2.c b/gcc/testsuite/gcc.target/mips/fpr-moves-2.c
index 3f4f833ba5e..ffe614fcbb2 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-2.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mhard-float -mips1 -O2 -EB" } */
+/* { dg-options "-mabi=32 -mhard-float -mips1 -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 void
foo (double d, double *x)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-3.c b/gcc/testsuite/gcc.target/mips/fpr-moves-3.c
index 34784d01ce2..80db0710c4c 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-3.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mfp64 -O2 -EL" } */
+/* { dg-options "-mabi=32 -mfp64 -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 double
foo (double d)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-4.c b/gcc/testsuite/gcc.target/mips/fpr-moves-4.c
index 282cf761b37..d8f78586ce5 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-4.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-4.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mfp64 -O2 -EB" } */
+/* { dg-options "-mabi=32 -mfp64 -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 double
foo (double d)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
index 8f685750f75..18d88804904 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=64 -mhard-float -O2 -EL" } */
+/* { dg-options "-mabi=64 -mhard-float -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-require-effective-target mips_newabi_large_long_double } */
NOMIPS16 void
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
index f89a40a3bc1..30a83ec66f3 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=64 -mhard-float -O2 -EB" } */
+/* { dg-options "-mabi=64 -mhard-float -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-require-effective-target mips_newabi_large_long_double } */
NOMIPS16 void
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-7.c b/gcc/testsuite/gcc.target/mips/fpr-moves-7.c
index 3abd10417d7..56d7ccd637c 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-7.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-7.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mabi=64 -O2 -EL" } */
+/* { dg-options "(-mips16) -mabi=64 -EL" } */
extern long double g[16];
extern unsigned char gstuff[0x10000];
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-8.c b/gcc/testsuite/gcc.target/mips/fpr-moves-8.c
index 8b6901b7fc7..bf64193b87e 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-8.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-8.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mabi=64 -O2 -EB" } */
+/* { dg-options "(-mips16) -mabi=64 -EB" } */
extern long double g[16];
extern unsigned char gstuff[0x10000];
diff --git a/gcc/testsuite/gcc.target/mips/ins-1.c b/gcc/testsuite/gcc.target/mips/ins-1.c
index 9e19354d1a6..02bb8ae9e2c 100644
--- a/gcc/testsuite/gcc.target/mips/ins-1.c
+++ b/gcc/testsuite/gcc.target/mips/ins-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp32" } */
+/* { dg-options "isa_rev>=2 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tins\t" } } */
struct
diff --git a/gcc/testsuite/gcc.target/mips/ins-2.c b/gcc/testsuite/gcc.target/mips/ins-2.c
index a71e6c05326..916bc4b5e2d 100644
--- a/gcc/testsuite/gcc.target/mips/ins-2.c
+++ b/gcc/testsuite/gcc.target/mips/ins-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -meb isa_rev>=2 -mgp64" } */
+/* { dg-options "-meb isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tins\t|\tdins\t" 1 } } */
/* { dg-final { scan-assembler-times "\tsll\t|\tins\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/mips/int-moves-1.c b/gcc/testsuite/gcc.target/mips/int-moves-1.c
index 485555c39ff..77a554d21a5 100644
--- a/gcc/testsuite/gcc.target/mips/int-moves-1.c
+++ b/gcc/testsuite/gcc.target/mips/int-moves-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mgp64 -O2 -EL" } */
+/* { dg-options "(-mips16) -mgp64 -EL" } */
typedef unsigned uint128_t __attribute__((mode(TI)));
diff --git a/gcc/testsuite/gcc.target/mips/int-moves-2.c b/gcc/testsuite/gcc.target/mips/int-moves-2.c
index eba7983707b..930c36f9f83 100644
--- a/gcc/testsuite/gcc.target/mips/int-moves-2.c
+++ b/gcc/testsuite/gcc.target/mips/int-moves-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mgp64 -O2 -EB" } */
+/* { dg-options "(-mips16) -mgp64 -EB" } */
typedef unsigned uint128_t __attribute__((mode(TI)));
diff --git a/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c b/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c
index 13b41e11885..9ab32bf5a0d 100644
--- a/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c
+++ b/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c
@@ -1,5 +1,6 @@
/* Make sure that we emit .cfa_restore notes for LO and HI. */
-/* { dg-options "-mips32r2 -msoft-float -O -g" } */
+/* { dg-options "-mips32r2 -msoft-float -g" } */
+/* { dg-skip-if "forbidding a frame pointer makes this a code quallity test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 64\n" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 65\n" } } */
/* { dg-final { scan-assembler-not "\\\.cfi_def_cfa( |\t)" } } */
diff --git a/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c b/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c
index 2380123b16e..298e0467779 100644
--- a/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c
+++ b/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c
@@ -1,5 +1,6 @@
/* Make sure that we emit .cfa_restore notes for LO, HI and GPRs. */
-/* { dg-options "-mips32r2 -msoft-float -O -g" } */
+/* { dg-options "-mips32r2 -msoft-float -g" } */
+/* { dg-skip-if "forbidding a frame pointer makes this a code quallity test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 1\n" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 2\n" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 3\n" } } */
diff --git a/gcc/testsuite/gcc.target/mips/lazy-binding-1.c b/gcc/testsuite/gcc.target/mips/lazy-binding-1.c
index e281a270a6e..4f8dde566f7 100644
--- a/gcc/testsuite/gcc.target/mips/lazy-binding-1.c
+++ b/gcc/testsuite/gcc.target/mips/lazy-binding-1.c
@@ -1,5 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-mshared -mexplicit-relocs -O2 -fno-delayed-branch" } */
+/* { dg-options "-mshared -mexplicit-relocs -fno-delayed-branch -fno-unroll-loops" } */
+/* We can load into something other than $25 when not optimizing,
+ then immediately move into $25. */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
void bar (void);
diff --git a/gcc/testsuite/gcc.target/mips/long-calls-pg.c b/gcc/testsuite/gcc.target/mips/long-calls-pg.c
index 5e554c497d8..5ccfe5149bd 100644
--- a/gcc/testsuite/gcc.target/mips/long-calls-pg.c
+++ b/gcc/testsuite/gcc.target/mips/long-calls-pg.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mabi=32 -pg -mno-abicalls -mlong-calls" } */
+/* { dg-options "-mabi=32 -pg -mno-abicalls -mlong-calls" } */
/* { dg-final { scan-assembler-not "\tjal\t_mcount" } } */
NOMIPS16 void
foo (void)
diff --git a/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c b/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c
index fd7289ceaf7..2efc3ef3f32 100644
--- a/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c
+++ b/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 isa=loongson" } */
+/* { dg-options "isa=loongson" } */
typedef int st;
typedef unsigned int ut;
diff --git a/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c b/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c
index 6f1f1387551..07523aa4a4e 100644
--- a/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c
+++ b/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 isa=loongson -mgp64" } */
+/* { dg-options "isa=loongson -mgp64" } */
typedef long long st;
typedef unsigned long long ut;
diff --git a/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c b/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
index 1c892d80627..778d7398133 100644
--- a/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
+++ b/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
@@ -4,9 +4,9 @@
/* loongson.h does not handle or check for MIPS16ness. There doesn't
seem any good reason for it to, given that the Loongson processors
do not support MIPS16. */
-/* { dg-options "isa=loongson -mhard-float -mno-mips16 -O1" } */
+/* { dg-options "isa=loongson -mhard-float -mno-mips16" } */
/* See PR 52155. */
-/* { dg-options "isa=loongson -mhard-float -mno-mips16 -O1 -mlong64" { mips*-*-elf* && ilp32 } } */
+/* { dg-options "isa=loongson -mhard-float -mno-mips16 -mlong64" { mips*-*-elf* && ilp32 } } */
#include "loongson.h"
#include <assert.h>
diff --git a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c
index cc15b83ab93..1c4d010b354 100644
--- a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c
+++ b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -march=loongson3a" } */
+/* { dg-options "-march=loongson3a" } */
typedef int st;
typedef unsigned int ut;
diff --git a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c
index 592b492c308..9695b3f6258 100644
--- a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c
+++ b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -march=loongson3a -mgp64" } */
+/* { dg-options "-march=loongson3a -mgp64" } */
typedef long long st;
typedef unsigned long long ut;
diff --git a/gcc/testsuite/gcc.target/mips/madd-1.c b/gcc/testsuite/gcc.target/mips/madd-1.c
index 53881a4b085..416673b46d7 100644
--- a/gcc/testsuite/gcc.target/mips/madd-1.c
+++ b/gcc/testsuite/gcc.target/mips/madd-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr4130 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr4130 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmacc\t\\\$1," 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-2.c b/gcc/testsuite/gcc.target/mips/madd-2.c
index eab7a68454c..ce0d9eb6fa0 100644
--- a/gcc/testsuite/gcc.target/mips/madd-2.c
+++ b/gcc/testsuite/gcc.target/mips/madd-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t" 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-3.c b/gcc/testsuite/gcc.target/mips/madd-3.c
index 6b479f59c71..29f4c9b3768 100644
--- a/gcc/testsuite/gcc.target/mips/madd-3.c
+++ b/gcc/testsuite/gcc.target/mips/madd-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* { dg-options "isa_rev>=1 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t" 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-4.c b/gcc/testsuite/gcc.target/mips/madd-4.c
index f325af74698..28c751b40f7 100644
--- a/gcc/testsuite/gcc.target/mips/madd-4.c
+++ b/gcc/testsuite/gcc.target/mips/madd-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t\\\$ac" 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-5.c b/gcc/testsuite/gcc.target/mips/madd-5.c
index 1ad1c91f3e1..d1696a6a869 100644
--- a/gcc/testsuite/gcc.target/mips/madd-5.c
+++ b/gcc/testsuite/gcc.target/mips/madd-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t" 4 } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
/* { dg-final { scan-assembler-times "\tmflo\t" 3 } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-6.c b/gcc/testsuite/gcc.target/mips/madd-6.c
index 4e5afadceb2..9323b8e104a 100644
--- a/gcc/testsuite/gcc.target/mips/madd-6.c
+++ b/gcc/testsuite/gcc.target/mips/madd-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tmadd\t" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler "\taddu\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-7.c b/gcc/testsuite/gcc.target/mips/madd-7.c
index b43d7207427..a639aa4f8fe 100644
--- a/gcc/testsuite/gcc.target/mips/madd-7.c
+++ b/gcc/testsuite/gcc.target/mips/madd-7.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "requires -fira-region=all or =mixed" { *-*-* } { "-Os" } { "" } } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmadd\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-8.c b/gcc/testsuite/gcc.target/mips/madd-8.c
index 35092a8ad93..794a6ff1727 100644
--- a/gcc/testsuite/gcc.target/mips/madd-8.c
+++ b/gcc/testsuite/gcc.target/mips/madd-8.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler-not "\tmadd\t" } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-9.c b/gcc/testsuite/gcc.target/mips/madd-9.c
index 25dbd18a510..6d545495c03 100644
--- a/gcc/testsuite/gcc.target/mips/madd-9.c
+++ b/gcc/testsuite/gcc.target/mips/madd-9.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* { dg-options "isa_rev>=1 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmadd\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/maddu-1.c b/gcc/testsuite/gcc.target/mips/maddu-1.c
index 04161ce3a21..af2b4181cdf 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-1.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr4130 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr4130 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaccu\t\\\$1," 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/maddu-2.c b/gcc/testsuite/gcc.target/mips/maddu-2.c
index a9768f15bf8..ea091e4e1ce 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-2.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaddu\t" 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/maddu-3.c b/gcc/testsuite/gcc.target/mips/maddu-3.c
index b0b4817a47f..27a7350f07b 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-3.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-3.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "isa_rev>=1 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaddu\t" 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/maddu-4.c b/gcc/testsuite/gcc.target/mips/maddu-4.c
index 9c1ccd5f926..58c4a7ebe0c 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-4.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaddu\t\\\$ac" 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/memcpy-1.c b/gcc/testsuite/gcc.target/mips/memcpy-1.c
index f3eda7500db..f4e4698141e 100644
--- a/gcc/testsuite/gcc.target/mips/memcpy-1.c
+++ b/gcc/testsuite/gcc.target/mips/memcpy-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tlbu\t" } } */
#include <string.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-1.c b/gcc/testsuite/gcc.target/mips/mips-3d-1.c
index eb3f8f9a864..f11ffc5a80f 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-1.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-2.c b/gcc/testsuite/gcc.target/mips/mips-3d-2.c
index dc815748ebd..b04c3bfb5d5 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-2.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D branch-if-any-two builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-3.c b/gcc/testsuite/gcc.target/mips/mips-3d-3.c
index 7df590f5c30..e4de8fb19bf 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-3.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-4.c b/gcc/testsuite/gcc.target/mips/mips-3d-4.c
index 7f9cbdb1b84..3d28d7f2c66 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-4.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-4.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D branch-if-any-four builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-5.c b/gcc/testsuite/gcc.target/mips/mips-3d-5.c
index c07dbe50580..a433675cab9 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-5.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-5.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute-compare & branch-if-any-four builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-6.c b/gcc/testsuite/gcc.target/mips/mips-3d-6.c
index 848414540f0..e6b44f07585 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-6.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-6.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare (floats) builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-7.c b/gcc/testsuite/gcc.target/mips/mips-3d-7.c
index d5d09f99869..2531ddf8b1a 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-7.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-7.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare (doubles) builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-8.c b/gcc/testsuite/gcc.target/mips/mips-3d-8.c
index c80f2b9c893..1d199d7d0c0 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-8.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-8.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare and conditional move builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-9.c b/gcc/testsuite/gcc.target/mips/mips-3d-9.c
index 3875391b535..d697efdedf1 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-9.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-9.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Matrix Multiplications */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-1.c b/gcc/testsuite/gcc.target/mips/mips-ps-1.c
index 9e6c6600617..73598a840bd 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-1.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test v2sf calculations */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-2.c b/gcc/testsuite/gcc.target/mips/mips-ps-2.c
index baec12c1ce6..52642558664 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-2.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test MIPS paired-single builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-3.c b/gcc/testsuite/gcc.target/mips/mips-ps-3.c
index e9ed4c03f5f..7e6ffd0667b 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-3.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test MIPS paired-single conditional move */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-4.c b/gcc/testsuite/gcc.target/mips/mips-ps-4.c
index b4452d09105..06850adb300 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-4.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-4.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test MIPS paired-single comparisons */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-5.c b/gcc/testsuite/gcc.target/mips/mips-ps-5.c
index 94d2f80efc7..6bf908ee976 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-5.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-5.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mpaired-single -mgp64 -ftree-vectorize" } */
+/* { dg-options "-mpaired-single -mgp64 -ftree-vectorize" } */
+/* { dg-skip-if "requires vectorization" { *-*-* } { "-O0" "-Os" } { "" } } */
extern float a[], b[], c[];
@@ -11,6 +12,6 @@ foo (void)
a[i] = b[i] == c[i] + 1 ? b[i] : c[i];
}
-/* { dg-final { scan-assembler "add\\.ps" } } */
-/* { dg-final { scan-assembler "c\\.eq\\.ps" } } */
-/* { dg-final { scan-assembler "mov\[tf\]\\.ps" } } */
+/* { dg-final { scan-assembler "\tadd\\.ps\t" } } */
+/* { dg-final { scan-assembler "\tc\\.eq\\.ps\t" } } */
+/* { dg-final { scan-assembler "\tmov\[tf\]\\.ps\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-6.c b/gcc/testsuite/gcc.target/mips/mips-ps-6.c
index 5b8b2522866..5bdfe436f40 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-6.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-6.c
@@ -1,7 +1,7 @@
/* mips-ps-2.c with an extra -ffinite-math-only option. This option
changes the way that abs.ps is handled. */
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single -ffinite-math-only" } */
+/* { dg-options "-mpaired-single -ffinite-math-only" } */
/* Test MIPS paired-single builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-7.c b/gcc/testsuite/gcc.target/mips/mips-ps-7.c
index 65a1104ba39..35d25fdc89c 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-7.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-7.c
@@ -1,6 +1,7 @@
/* mips-ps-5.c with -mgp32 instead of -mgp64. */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -O2 -mpaired-single -ftree-vectorize" } */
+/* { dg-options "-mgp32 -mpaired-single -ftree-vectorize" } */
+/* { dg-skip-if "requires vectorization" { *-*-* } { "-O0" "-Os" } { "" } } */
extern float a[], b[], c[];
@@ -12,6 +13,6 @@ foo (void)
a[i] = b[i] == c[i] + 1 ? b[i] : c[i];
}
-/* { dg-final { scan-assembler "add\\.ps" } } */
-/* { dg-final { scan-assembler "c\\.eq\\.ps" } } */
-/* { dg-final { scan-assembler "mov\[tf\]\\.ps" } } */
+/* { dg-final { scan-assembler "\tadd\\.ps\t" } } */
+/* { dg-final { scan-assembler "\tc\\.eq\\.ps\t" } } */
+/* { dg-final { scan-assembler "\tmov\[tf\]\\.ps\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c b/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
index f7988553394..f52cf91e81b 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
@@ -1,21 +1,22 @@
/* Test v2sf calculations. The nmadd and nmsub patterns need
-ffinite-math-only. */
/* { dg-do compile } */
-/* { dg-options "isa_rev>=2 -mgp32 -O2 -mpaired-single -ffinite-math-only" } */
-/* { dg-final { scan-assembler "cvt.ps.s" } } */
-/* { dg-final { scan-assembler "mov.ps" } } */
-/* { dg-final { scan-assembler "ldc1" } } */
-/* { dg-final { scan-assembler "sdc1" } } */
-/* { dg-final { scan-assembler "add.ps" } } */
-/* { dg-final { scan-assembler "sub.ps" } } */
-/* { dg-final { scan-assembler "neg.ps" } } */
-/* { dg-final { scan-assembler "mul.ps" } } */
-/* { dg-final { scan-assembler "madd.ps" } } */
-/* { dg-final { scan-assembler "msub.ps" } } */
-/* { dg-final { scan-assembler "nmadd.ps" } } */
-/* { dg-final { scan-assembler "nmsub.ps" } } */
-/* { dg-final { scan-assembler "movn.ps" } } */
-/* { dg-final { scan-assembler "movz.ps" } } */
+/* { dg-options "isa_rev>=2 -mgp32 -mpaired-single -ffinite-math-only" } */
+/* { dg-skip-if "nmadd and nmsub need combine" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tcvt.ps.s\t" } } */
+/* { dg-final { scan-assembler "\tmov.ps\t" } } */
+/* { dg-final { scan-assembler "\tldc1\t" } } */
+/* { dg-final { scan-assembler "\tsdc1\t" } } */
+/* { dg-final { scan-assembler "\tadd.ps\t" } } */
+/* { dg-final { scan-assembler "\tsub.ps\t" } } */
+/* { dg-final { scan-assembler "\tneg.ps\t" } } */
+/* { dg-final { scan-assembler "\tmul.ps\t" } } */
+/* { dg-final { scan-assembler "\tmadd.ps\t" } } */
+/* { dg-final { scan-assembler "\tmsub.ps\t" } } */
+/* { dg-final { scan-assembler "\tnmadd.ps\t" } } */
+/* { dg-final { scan-assembler "\tnmsub.ps\t" } } */
+/* { dg-final { scan-assembler "\tmovn.ps\t" } } */
+/* { dg-final { scan-assembler "\tmovz.ps\t" } } */
typedef float v2sf __attribute__ ((vector_size(8)));
void gobble (v2sf);
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-type.c b/gcc/testsuite/gcc.target/mips/mips-ps-type.c
index 2a10f91bd54..c36dc25c9d9 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-type.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-type.c
@@ -1,20 +1,21 @@
/* Test v2sf calculations. The nmadd and nmsub patterns need
-ffinite-math-only. */
/* { dg-do compile } */
-/* { dg-options "-O2 -mpaired-single -mgp64 -ffinite-math-only" } */
-/* { dg-final { scan-assembler "cvt.ps.s" } } */
-/* { dg-final { scan-assembler "mov.ps" } } */
-/* { dg-final { scan-assembler "ldc1" } } */
-/* { dg-final { scan-assembler "sdc1" } } */
-/* { dg-final { scan-assembler "add.ps" } } */
-/* { dg-final { scan-assembler "sub.ps" } } */
-/* { dg-final { scan-assembler "neg.ps" } } */
-/* { dg-final { scan-assembler "mul.ps" } } */
-/* { dg-final { scan-assembler "madd.ps" } } */
-/* { dg-final { scan-assembler "msub.ps" } } */
-/* { dg-final { scan-assembler "nmadd.ps" } } */
-/* { dg-final { scan-assembler "nmsub.ps" } } */
-/* { dg-final { scan-assembler "mov(n|z).ps" } } */
+/* { dg-options "-mpaired-single -mgp64 -ffinite-math-only" } */
+/* { dg-skip-if "nmadd and nmsub need combine" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tcvt.ps.s\t" } } */
+/* { dg-final { scan-assembler "\tmov.ps\t" } } */
+/* { dg-final { scan-assembler "\tldc1\t" } } */
+/* { dg-final { scan-assembler "\tsdc1\t" } } */
+/* { dg-final { scan-assembler "\tadd.ps\t" } } */
+/* { dg-final { scan-assembler "\tsub.ps\t" } } */
+/* { dg-final { scan-assembler "\tneg.ps\t" } } */
+/* { dg-final { scan-assembler "\tmul.ps\t" } } */
+/* { dg-final { scan-assembler "\tmadd.ps\t" } } */
+/* { dg-final { scan-assembler "\tmsub.ps\t" } } */
+/* { dg-final { scan-assembler "\tnmadd.ps\t" } } */
+/* { dg-final { scan-assembler "\tnmsub.ps\t" } } */
+/* { dg-final { scan-assembler "\tmov(n|z).ps\t" } } */
typedef float v2sf __attribute__ ((vector_size(8)));
diff --git a/gcc/testsuite/gcc.target/mips/mips-sched-madd.c b/gcc/testsuite/gcc.target/mips/mips-sched-madd.c
index c0f9d332a59..1db1550fd49 100644
--- a/gcc/testsuite/gcc.target/mips/mips-sched-madd.c
+++ b/gcc/testsuite/gcc.target/mips/mips-sched-madd.c
@@ -1,7 +1,8 @@
/* Test for case where another independent multiply insn may interfere
with a macc chain. */
/* { dg-do compile } */
-/* { dg-options "-Os -march=24kf" } */
+/* { dg-options "-march=24kf" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int foo (int a, int b, int c, int d, int e, int f, int g)
{
diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp
index 5b1bb7a45a6..fddce3427ac 100644
--- a/gcc/testsuite/gcc.target/mips/mips.exp
+++ b/gcc/testsuite/gcc.target/mips/mips.exp
@@ -222,6 +222,10 @@ load_lib gcc-dg.exp
# A list of GROUP REGEXP pairs. Each GROUP represents a logical group of
# options from which only one option should be chosen. REGEXP matches all
# the options in that group; it is implicitly wrapped in "^(...)$".
+#
+# Note that -O* is deliberately omitted from this list. Tests in this
+# directory are run at various optimisation levels and should use
+# dg-skip-if to skip any incompatible levels.
set mips_option_groups {
abi "-mabi=.*"
addressing "addressing=.*"
@@ -236,7 +240,6 @@ set mips_option_groups {
long "-mlong(32|64)"
mips16 "-mips16|-mno-mips16|-mflip-mips16"
mips3d "-mips3d|-mno-mips3d"
- optimization "-O(|[0-3s])"
pic "-f(no-|)(pic|PIC)"
profiling "-pg"
small-data "-G[0-9]+"
@@ -283,13 +286,21 @@ foreach option {
# Add -ffoo/-fno-foo options to mips_option_groups.
foreach option {
delayed-branch
+ expensive-optimizations
fast-math
+ fat-lto-objects
finite-math-only
fixed-hi
fixed-lo
lax-vector-conversions
+ omit-frame-pointer
+ optimize-sibling-calls
+ peephole2
+ schedule-insns2
split-wide-types
tree-vectorize
+ unroll-all-loops
+ unroll-loops
} {
lappend mips_option_groups $option "-f(no-|)$option"
}
@@ -881,6 +892,10 @@ proc mips-dg-options { args } {
}
}
+ # Handle dependencies between the test options and the optimization ones.
+ mips_option_dependency options "-fno-unroll-loops" "-fno-unroll-all-loops"
+ mips_option_dependency options "-pg" "-fno-omit-frame-pointer"
+
# Handle dependencies between options on the left of the
# dependency diagram.
mips_option_dependency options "-mips3d" "-mpaired-single"
@@ -1253,8 +1268,7 @@ proc mips-gcc-dg-test { prog do_what extra_tool_flags } {
dg-init
mips-dg-init
-# MIPS16 is defined by "-mips16" or "(-mips16)" in dg-options.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] "" \
+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \
"-DNOMIPS16=__attribute__((nomips16))"
mips-dg-finish
dg-finish
diff --git a/gcc/testsuite/gcc.target/mips/mips16e-extends.c b/gcc/testsuite/gcc.target/mips/mips16e-extends.c
index d077f2fae6e..d8946c979ae 100644
--- a/gcc/testsuite/gcc.target/mips/mips16e-extends.c
+++ b/gcc/testsuite/gcc.target/mips/mips16e-extends.c
@@ -1,5 +1,6 @@
/* -mlong32 added because of PR target/38595. */
-/* { dg-options "(-mips16) -Os isa_rev>=1 -mlong32" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mlong32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
MIPS16 short cksum16 (unsigned long n)
{
@@ -15,7 +16,7 @@ MIPS16 signed char cksum8 (unsigned long n)
return l;
}
-/* { dg-final { scan-assembler "zeh" } } */
-/* { dg-final { scan-assembler "seh" } } */
-/* { dg-final { scan-assembler "zeb" } } */
-/* { dg-final { scan-assembler "seb" } } */
+/* { dg-final { scan-assembler "\tzeh\t" } } */
+/* { dg-final { scan-assembler "\tseh\t" } } */
+/* { dg-final { scan-assembler "\tzeb\t" } } */
+/* { dg-final { scan-assembler "\tseb\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c b/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
index ccbdef553ee..ccd9d380fb3 100644
--- a/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
+++ b/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
@@ -1,6 +1,6 @@
/* Test MIPS32 DSP instructions */
/* { dg-do run } */
-/* { dg-options "-mdsp -O2" } */
+/* { dg-options "-mdsp" } */
#include <stdlib.h>
#include <stdio.h>
@@ -59,8 +59,10 @@ NOMIPS16 void test_MIPS_DSP ()
v4i8 v4i8_a,v4i8_b,v4i8_c,v4i8_r,v4i8_s;
v2q15 v2q15_a,v2q15_b,v2q15_c,v2q15_r,v2q15_s;
q31 q31_a,q31_b,q31_c,q31_r,q31_s;
- i32 i32_a,i32_b,i32_c,i32_r,i32_s;
- ui32 ui32_a,ui32_b,ui32_c;
+ /* To protect the multiplication-related tests from being optimized
+ at compile time. */
+ volatile i32 i32_a,i32_b,i32_c,i32_r,i32_s;
+ volatile ui32 ui32_a,ui32_b,ui32_c;
a64 a64_a,a64_b,a64_c,a64_r,a64_s;
void *ptr_a;
diff --git a/gcc/testsuite/gcc.target/mips/mips32-dsp-type.c b/gcc/testsuite/gcc.target/mips/mips32-dsp-type.c
index cbf347b29c9..2a901bbf38e 100644
--- a/gcc/testsuite/gcc.target/mips/mips32-dsp-type.c
+++ b/gcc/testsuite/gcc.target/mips/mips32-dsp-type.c
@@ -1,10 +1,10 @@
/* Test MIPS32 DSP instructions */
/* { dg-do compile } */
/* { dg-options "-mdsp" } */
-/* { dg-final { scan-assembler "addq.ph" } } */
-/* { dg-final { scan-assembler "addu.qb" } } */
-/* { dg-final { scan-assembler "subq.ph" } } */
-/* { dg-final { scan-assembler "subu.qb" } } */
+/* { dg-final { scan-assembler "\taddq.ph\t" } } */
+/* { dg-final { scan-assembler "\taddu.qb\t" } } */
+/* { dg-final { scan-assembler "\tsubq.ph\t" } } */
+/* { dg-final { scan-assembler "\tsubu.qb\t" } } */
typedef char v4qi __attribute__ ((vector_size(4)));
typedef short v2hi __attribute__ ((vector_size(4)));
diff --git a/gcc/testsuite/gcc.target/mips/mips32-dsp.c b/gcc/testsuite/gcc.target/mips/mips32-dsp.c
index c2a8ae77505..9aaf120184f 100644
--- a/gcc/testsuite/gcc.target/mips/mips32-dsp.c
+++ b/gcc/testsuite/gcc.target/mips/mips32-dsp.c
@@ -1,103 +1,103 @@
/* Test MIPS32 DSP instructions */
/* { dg-do compile } */
/* { dg-options "-mgp32 -mdsp" } */
-/* { dg-final { scan-assembler "addq.ph" } } */
-/* { dg-final { scan-assembler "addq_s.ph" } } */
-/* { dg-final { scan-assembler "addq_s.w" } } */
-/* { dg-final { scan-assembler "addu.qb" } } */
-/* { dg-final { scan-assembler "addu_s.qb" } } */
-/* { dg-final { scan-assembler "subq.ph" } } */
-/* { dg-final { scan-assembler "subq_s.ph" } } */
-/* { dg-final { scan-assembler "subq_s.w" } } */
-/* { dg-final { scan-assembler "subu.qb" } } */
-/* { dg-final { scan-assembler "subu_s.qb" } } */
-/* { dg-final { scan-assembler "addsc" } } */
-/* { dg-final { scan-assembler "addwc" } } */
-/* { dg-final { scan-assembler "modsub" } } */
-/* { dg-final { scan-assembler "raddu.w.qb" } } */
-/* { dg-final { scan-assembler "absq_s.ph" } } */
-/* { dg-final { scan-assembler "absq_s.w" } } */
-/* { dg-final { scan-assembler "precrq.qb.ph" } } */
-/* { dg-final { scan-assembler "precrq.ph.w" } } */
-/* { dg-final { scan-assembler "precrq_rs.ph.w" } } */
-/* { dg-final { scan-assembler "precrqu_s.qb.ph" } } */
-/* { dg-final { scan-assembler "preceq.w.phl" } } */
-/* { dg-final { scan-assembler "preceq.w.phr" } } */
-/* { dg-final { scan-assembler "precequ.ph.qbl" } } */
-/* { dg-final { scan-assembler "precequ.ph.qbr" } } */
-/* { dg-final { scan-assembler "precequ.ph.qbla" } } */
-/* { dg-final { scan-assembler "precequ.ph.qbra" } } */
-/* { dg-final { scan-assembler "preceu.ph.qbl" } } */
-/* { dg-final { scan-assembler "preceu.ph.qbr" } } */
-/* { dg-final { scan-assembler "preceu.ph.qbla" } } */
-/* { dg-final { scan-assembler "preceu.ph.qbra" } } */
-/* { dg-final { scan-assembler "shllv?.qb" } } */
-/* { dg-final { scan-assembler "shllv?.ph" } } */
-/* { dg-final { scan-assembler "shllv?_s.ph" } } */
-/* { dg-final { scan-assembler "shllv?_s.w" } } */
-/* { dg-final { scan-assembler "shrlv?.qb" } } */
-/* { dg-final { scan-assembler "shrav?.ph" } } */
-/* { dg-final { scan-assembler "shrav?_r.ph" } } */
-/* { dg-final { scan-assembler "shrav?_r.w" } } */
-/* { dg-final { scan-assembler "muleu_s.ph.qbl" } } */
-/* { dg-final { scan-assembler "muleu_s.ph.qbr" } } */
-/* { dg-final { scan-assembler "mulq_rs.ph" } } */
-/* { dg-final { scan-assembler "muleq_s.w.phl" } } */
-/* { dg-final { scan-assembler "muleq_s.w.phr" } } */
-/* { dg-final { scan-assembler "dpau.h.qbl" } } */
-/* { dg-final { scan-assembler "dpau.h.qbr" } } */
-/* { dg-final { scan-assembler "dpsu.h.qbl" } } */
-/* { dg-final { scan-assembler "dpsu.h.qbr" } } */
-/* { dg-final { scan-assembler "dpaq_s.w.ph" } } */
-/* { dg-final { scan-assembler "dpsq_s.w.ph" } } */
-/* { dg-final { scan-assembler "mulsaq_s.w.ph" } } */
-/* { dg-final { scan-assembler "dpaq_sa.l.w" } } */
-/* { dg-final { scan-assembler "dpsq_sa.l.w" } } */
-/* { dg-final { scan-assembler "maq_s.w.phl" } } */
-/* { dg-final { scan-assembler "maq_s.w.phr" } } */
-/* { dg-final { scan-assembler "maq_sa.w.phl" } } */
-/* { dg-final { scan-assembler "maq_sa.w.phr" } } */
-/* { dg-final { scan-assembler "bitrev" } } */
-/* { dg-final { scan-assembler "insv" } } */
-/* { dg-final { scan-assembler "replv?.qb" } } */
-/* { dg-final { scan-assembler "repl.ph" } } */
-/* { dg-final { scan-assembler "replv.ph" } } */
-/* { dg-final { scan-assembler "cmpu.eq.qb" } } */
-/* { dg-final { scan-assembler "cmpu.lt.qb" } } */
-/* { dg-final { scan-assembler "cmpu.le.qb" } } */
-/* { dg-final { scan-assembler "cmpgu.eq.qb" } } */
-/* { dg-final { scan-assembler "cmpgu.lt.qb" } } */
-/* { dg-final { scan-assembler "cmpgu.le.qb" } } */
-/* { dg-final { scan-assembler "cmp.eq.ph" } } */
-/* { dg-final { scan-assembler "cmp.lt.ph" } } */
-/* { dg-final { scan-assembler "cmp.le.ph" } } */
-/* { dg-final { scan-assembler "pick.qb" } } */
-/* { dg-final { scan-assembler "pick.ph" } } */
-/* { dg-final { scan-assembler "packrl.ph" } } */
-/* { dg-final { scan-assembler "extrv?.w" } } */
-/* { dg-final { scan-assembler "extrv?_s.h" } } */
-/* { dg-final { scan-assembler "extrv?_r.w" } } */
-/* { dg-final { scan-assembler "extrv?_rs.w" } } */
-/* { dg-final { scan-assembler "extpv?" } } */
-/* { dg-final { scan-assembler "extpdpv?" } } */
-/* { dg-final { scan-assembler "shilov?" } } */
-/* { dg-final { scan-assembler "mthlip" } } */
-/* { dg-final { scan-assembler "mfhi" } } */
-/* { dg-final { scan-assembler "mflo" } } */
-/* { dg-final { scan-assembler "mthi" } } */
-/* { dg-final { scan-assembler "mtlo" } } */
-/* { dg-final { scan-assembler "wrdsp" } } */
-/* { dg-final { scan-assembler "rddsp" } } */
-/* { dg-final { scan-assembler "lbux?" } } */
-/* { dg-final { scan-assembler "lhx?" } } */
-/* { dg-final { scan-assembler "lwx?" } } */
-/* { dg-final { scan-assembler "bposge32" } } */
-/* { dg-final { scan-assembler "madd" } } */
-/* { dg-final { scan-assembler "maddu" } } */
-/* { dg-final { scan-assembler "msub" } } */
-/* { dg-final { scan-assembler "msubu" } } */
-/* { dg-final { scan-assembler "mult" } } */
-/* { dg-final { scan-assembler "multu" } } */
+/* { dg-final { scan-assembler "\taddq.ph\t" } } */
+/* { dg-final { scan-assembler "\taddq_s.ph\t" } } */
+/* { dg-final { scan-assembler "\taddq_s.w\t" } } */
+/* { dg-final { scan-assembler "\taddu.qb\t" } } */
+/* { dg-final { scan-assembler "\taddu_s.qb\t" } } */
+/* { dg-final { scan-assembler "\tsubq.ph\t" } } */
+/* { dg-final { scan-assembler "\tsubq_s.ph\t" } } */
+/* { dg-final { scan-assembler "\tsubq_s.w\t" } } */
+/* { dg-final { scan-assembler "\tsubu.qb\t" } } */
+/* { dg-final { scan-assembler "\tsubu_s.qb\t" } } */
+/* { dg-final { scan-assembler "\taddsc\t" } } */
+/* { dg-final { scan-assembler "\taddwc\t" } } */
+/* { dg-final { scan-assembler "\tmodsub\t" } } */
+/* { dg-final { scan-assembler "\traddu.w.qb\t" } } */
+/* { dg-final { scan-assembler "\tabsq_s.ph\t" } } */
+/* { dg-final { scan-assembler "\tabsq_s.w\t" } } */
+/* { dg-final { scan-assembler "\tprecrq.qb.ph\t" } } */
+/* { dg-final { scan-assembler "\tprecrq.ph.w\t" } } */
+/* { dg-final { scan-assembler "\tprecrq_rs.ph.w\t" } } */
+/* { dg-final { scan-assembler "\tprecrqu_s.qb.ph\t" } } */
+/* { dg-final { scan-assembler "\tpreceq.w.phl\t" } } */
+/* { dg-final { scan-assembler "\tpreceq.w.phr\t" } } */
+/* { dg-final { scan-assembler "\tprecequ.ph.qbl\t" } } */
+/* { dg-final { scan-assembler "\tprecequ.ph.qbr\t" } } */
+/* { dg-final { scan-assembler "\tprecequ.ph.qbla\t" } } */
+/* { dg-final { scan-assembler "\tprecequ.ph.qbra\t" } } */
+/* { dg-final { scan-assembler "\tpreceu.ph.qbl\t" } } */
+/* { dg-final { scan-assembler "\tpreceu.ph.qbr\t" } } */
+/* { dg-final { scan-assembler "\tpreceu.ph.qbla\t" } } */
+/* { dg-final { scan-assembler "\tpreceu.ph.qbra\t" } } */
+/* { dg-final { scan-assembler "\tshllv?.qb\t" } } */
+/* { dg-final { scan-assembler "\tshllv?.ph\t" } } */
+/* { dg-final { scan-assembler "\tshllv?_s.ph\t" } } */
+/* { dg-final { scan-assembler "\tshllv?_s.w\t" } } */
+/* { dg-final { scan-assembler "\tshrlv?.qb\t" } } */
+/* { dg-final { scan-assembler "\tshrav?.ph\t" } } */
+/* { dg-final { scan-assembler "\tshrav?_r.ph\t" } } */
+/* { dg-final { scan-assembler "\tshrav?_r.w\t" } } */
+/* { dg-final { scan-assembler "\tmuleu_s.ph.qbl\t" } } */
+/* { dg-final { scan-assembler "\tmuleu_s.ph.qbr\t" } } */
+/* { dg-final { scan-assembler "\tmulq_rs.ph\t" } } */
+/* { dg-final { scan-assembler "\tmuleq_s.w.phl\t" } } */
+/* { dg-final { scan-assembler "\tmuleq_s.w.phr\t" } } */
+/* { dg-final { scan-assembler "\tdpau.h.qbl\t" } } */
+/* { dg-final { scan-assembler "\tdpau.h.qbr\t" } } */
+/* { dg-final { scan-assembler "\tdpsu.h.qbl\t" } } */
+/* { dg-final { scan-assembler "\tdpsu.h.qbr\t" } } */
+/* { dg-final { scan-assembler "\tdpaq_s.w.ph\t" } } */
+/* { dg-final { scan-assembler "\tdpsq_s.w.ph\t" } } */
+/* { dg-final { scan-assembler "\tmulsaq_s.w.ph\t" } } */
+/* { dg-final { scan-assembler "\tdpaq_sa.l.w\t" } } */
+/* { dg-final { scan-assembler "\tdpsq_sa.l.w\t" } } */
+/* { dg-final { scan-assembler "\tmaq_s.w.phl\t" } } */
+/* { dg-final { scan-assembler "\tmaq_s.w.phr\t" } } */
+/* { dg-final { scan-assembler "\tmaq_sa.w.phl\t" } } */
+/* { dg-final { scan-assembler "\tmaq_sa.w.phr\t" } } */
+/* { dg-final { scan-assembler "\tbitrev\t" } } */
+/* { dg-final { scan-assembler "\tinsv\t" } } */
+/* { dg-final { scan-assembler "\treplv?.qb\t" } } */
+/* { dg-final { scan-assembler "\trepl.ph\t" } } */
+/* { dg-final { scan-assembler "\treplv.ph\t" } } */
+/* { dg-final { scan-assembler "\tcmpu.eq.qb\t" } } */
+/* { dg-final { scan-assembler "\tcmpu.lt.qb\t" } } */
+/* { dg-final { scan-assembler "\tcmpu.le.qb\t" } } */
+/* { dg-final { scan-assembler "\tcmpgu.eq.qb\t" } } */
+/* { dg-final { scan-assembler "\tcmpgu.lt.qb\t" } } */
+/* { dg-final { scan-assembler "\tcmpgu.le.qb\t" } } */
+/* { dg-final { scan-assembler "\tcmp.eq.ph\t" } } */
+/* { dg-final { scan-assembler "\tcmp.lt.ph\t" } } */
+/* { dg-final { scan-assembler "\tcmp.le.ph\t" } } */
+/* { dg-final { scan-assembler "\tpick.qb\t" } } */
+/* { dg-final { scan-assembler "\tpick.ph\t" } } */
+/* { dg-final { scan-assembler "\tpackrl.ph\t" } } */
+/* { dg-final { scan-assembler "\textrv?.w\t" } } */
+/* { dg-final { scan-assembler "\textrv?_s.h\t" } } */
+/* { dg-final { scan-assembler "\textrv?_r.w\t" } } */
+/* { dg-final { scan-assembler "\textrv?_rs.w\t" } } */
+/* { dg-final { scan-assembler "\textpv?\t" } } */
+/* { dg-final { scan-assembler "\textpdpv?\t" } } */
+/* { dg-final { scan-assembler "\tshilov?\t" } } */
+/* { dg-final { scan-assembler "\tmthlip\t" } } */
+/* { dg-final { scan-assembler "\tmfhi\t" } } */
+/* { dg-final { scan-assembler "\tmflo\t" } } */
+/* { dg-final { scan-assembler "\tmthi\t" } } */
+/* { dg-final { scan-assembler "\tmtlo\t" } } */
+/* { dg-final { scan-assembler "\twrdsp\t" } } */
+/* { dg-final { scan-assembler "\trddsp\t" } } */
+/* { dg-final { scan-assembler "\tlbux?\t" } } */
+/* { dg-final { scan-assembler "\tlhx?\t" } } */
+/* { dg-final { scan-assembler "\tlwx?\t" } } */
+/* { dg-final { scan-assembler "\tbposge32\t" } } */
+/* { dg-final { scan-assembler "\tmadd\t" } } */
+/* { dg-final { scan-assembler "\tmaddu\t" } } */
+/* { dg-final { scan-assembler "\tmsub\t" } } */
+/* { dg-final { scan-assembler "\tmsubu\t" } } */
+/* { dg-final { scan-assembler "\tmult\t" } } */
+/* { dg-final { scan-assembler "\tmultu\t" } } */
#include <stdlib.h>
#include <stdio.h>
@@ -156,8 +156,10 @@ NOMIPS16 void test_MIPS_DSP ()
v4i8 v4i8_a,v4i8_b,v4i8_c,v4i8_r,v4i8_s;
v2q15 v2q15_a,v2q15_b,v2q15_c,v2q15_r,v2q15_s;
q31 q31_a,q31_b,q31_c,q31_r,q31_s;
- i32 i32_a,i32_b,i32_c,i32_r,i32_s;
- ui32 ui32_a,ui32_b,ui32_c;
+ /* To protect the multiplication-related tests from being optimized
+ at compile time. */
+ volatile i32 i32_a,i32_b,i32_c,i32_r,i32_s;
+ volatile ui32 ui32_a,ui32_b,ui32_c;
a64 a64_a,a64_b,a64_c,a64_r,a64_s;
void *ptr_a;
diff --git a/gcc/testsuite/gcc.target/mips/mips32-dspr2.c b/gcc/testsuite/gcc.target/mips/mips32-dspr2.c
index 1b3031ff19d..1f7e9287313 100644
--- a/gcc/testsuite/gcc.target/mips/mips32-dspr2.c
+++ b/gcc/testsuite/gcc.target/mips/mips32-dspr2.c
@@ -1,6 +1,6 @@
/* Test MIPS32 DSP REV 2 instructions */
/* { dg-do run } */
-/* { dg-options "-mdspr2 -O2" } */
+/* { dg-options "-mdspr2" } */
typedef signed char v4q7 __attribute__ ((vector_size(4)));
typedef signed char v4i8 __attribute__ ((vector_size(4)));
diff --git a/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c b/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c
index cf57323db1a..899ac010071 100644
--- a/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c
+++ b/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O -mabi=32 -mfp64" } */
-/* { dg-final { scan-assembler "mthc1" } } */
-/* { dg-final { scan-assembler "mfhc1" } } */
+/* { dg-options "-mabi=32 -mfp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tmthc1\t" } } */
+/* { dg-final { scan-assembler "\tmfhc1\t" } } */
NOMIPS16 double func1 (long long a)
{
diff --git a/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c b/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c
index d1366761902..02e6166577d 100644
--- a/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c
+++ b/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c
@@ -1,6 +1,7 @@
/* Test MIPS64 DSP instructions */
/* { dg-do compile } */
-/* { dg-options "-mgp64 -mdsp -O" } */
+/* { dg-options "-mgp64 -mdsp" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tldx\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c
index 8514ed8cb4b..3d07939ca59 100644
--- a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c
+++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */
+/* { dg-options "-pg -mmcount-ra-address -mabi=64" } */
/* { dg-final { scan-assembler "\tmove\t\\\$12,\\\$0" } } */
NOMIPS16 int bazl(int i)
{
diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c
index bb59a1828c9..34b30d9874c 100644
--- a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c
+++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */
+/* { dg-options "-pg -mmcount-ra-address -mabi=64 -mno-abicalls" } */
+/* { dg-skip-if "requiring a specific frame layout makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdla\t\\\$12,8\\(\\\$sp\\)" } } */
int foo (int);
NOMIPS16 int bar (int i)
diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c
index 8c94c8345e9..17bcb76be50 100644
--- a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c
+++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */
+/* { dg-options "-pg -mmcount-ra-address -mabi=64 -mno-abicalls" } */
+/* { dg-skip-if "requiring a specific frame layout makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdla\t\\\$12,200008\\(\\\$sp\\)" } } */
int foo (int *);
NOMIPS16 int bar(int i)
diff --git a/gcc/testsuite/gcc.target/mips/movcc-1.c b/gcc/testsuite/gcc.target/mips/movcc-1.c
index 1a930c9ac06..b3fe188d2c0 100644
--- a/gcc/testsuite/gcc.target/mips/movcc-1.c
+++ b/gcc/testsuite/gcc.target/mips/movcc-1.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=4" } */
-/* { dg-final { scan-assembler "movz" } } */
-/* { dg-final { scan-assembler "movn" } } */
+/* { dg-options "isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tmovz\t" } } */
+/* { dg-final { scan-assembler "\tmovn\t" } } */
void ext_int (int);
diff --git a/gcc/testsuite/gcc.target/mips/movcc-2.c b/gcc/testsuite/gcc.target/mips/movcc-2.c
index d42acc1d77c..2638d51fd6c 100644
--- a/gcc/testsuite/gcc.target/mips/movcc-2.c
+++ b/gcc/testsuite/gcc.target/mips/movcc-2.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=4" } */
-/* { dg-final { scan-assembler "movz" } } */
-/* { dg-final { scan-assembler "movn" } } */
+/* { dg-options "isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tmovz\t" } } */
+/* { dg-final { scan-assembler "\tmovn\t" } } */
void ext_long (long);
diff --git a/gcc/testsuite/gcc.target/mips/movcc-3.c b/gcc/testsuite/gcc.target/mips/movcc-3.c
index e6481777add..f356465c887 100644
--- a/gcc/testsuite/gcc.target/mips/movcc-3.c
+++ b/gcc/testsuite/gcc.target/mips/movcc-3.c
@@ -1,13 +1,14 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=4 -mhard-float" } */
-/* { dg-final { scan-assembler "movt" } } */
-/* { dg-final { scan-assembler "movf" } } */
-/* { dg-final { scan-assembler "movz.s" } } */
-/* { dg-final { scan-assembler "movn.s" } } */
-/* { dg-final { scan-assembler "movt.s" } } */
-/* { dg-final { scan-assembler "movz.d" } } */
-/* { dg-final { scan-assembler "movn.d" } } */
-/* { dg-final { scan-assembler "movf.d" } } */
+/* { dg-options "isa>=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tmovt\t" } } */
+/* { dg-final { scan-assembler "\tmovf\t" } } */
+/* { dg-final { scan-assembler "\tmovz.s\t" } } */
+/* { dg-final { scan-assembler "\tmovn.s\t" } } */
+/* { dg-final { scan-assembler "\tmovt.s\t" } } */
+/* { dg-final { scan-assembler "\tmovz.d\t" } } */
+/* { dg-final { scan-assembler "\tmovn.d\t" } } */
+/* { dg-final { scan-assembler "\tmovf.d\t" } } */
void ext_int (int);
void ext_long (long);
diff --git a/gcc/testsuite/gcc.target/mips/msub-1.c b/gcc/testsuite/gcc.target/mips/msub-1.c
index 803ea77df74..9a222bfda9d 100644
--- a/gcc/testsuite/gcc.target/mips/msub-1.c
+++ b/gcc/testsuite/gcc.target/mips/msub-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5400 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5400 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsac\t\\\$0," 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-2.c b/gcc/testsuite/gcc.target/mips/msub-2.c
index e6cdc2c1a9a..c0923cd113d 100644
--- a/gcc/testsuite/gcc.target/mips/msub-2.c
+++ b/gcc/testsuite/gcc.target/mips/msub-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t" 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-3.c b/gcc/testsuite/gcc.target/mips/msub-3.c
index c44f34f4f0e..aedd04302ac 100644
--- a/gcc/testsuite/gcc.target/mips/msub-3.c
+++ b/gcc/testsuite/gcc.target/mips/msub-3.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "isa_rev>=1 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t" 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-4.c b/gcc/testsuite/gcc.target/mips/msub-4.c
index d41c3129914..84cb5fe333c 100644
--- a/gcc/testsuite/gcc.target/mips/msub-4.c
+++ b/gcc/testsuite/gcc.target/mips/msub-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t\\\$ac" 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-5.c b/gcc/testsuite/gcc.target/mips/msub-5.c
index dcb124a7198..eba104c7f01 100644
--- a/gcc/testsuite/gcc.target/mips/msub-5.c
+++ b/gcc/testsuite/gcc.target/mips/msub-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t" 4 } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
/* { dg-final { scan-assembler-times "\tmflo\t" 3 } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-6.c b/gcc/testsuite/gcc.target/mips/msub-6.c
index ee4ca3d8da0..32411e61faf 100644
--- a/gcc/testsuite/gcc.target/mips/msub-6.c
+++ b/gcc/testsuite/gcc.target/mips/msub-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tmsub\t" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler "\tsubu\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-7.c b/gcc/testsuite/gcc.target/mips/msub-7.c
index 7ae96acb42e..ee049876e37 100644
--- a/gcc/testsuite/gcc.target/mips/msub-7.c
+++ b/gcc/testsuite/gcc.target/mips/msub-7.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "requires -fira-region=all or =mixed" { *-*-* } { "-Os" } { "" } } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmsub\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-8.c b/gcc/testsuite/gcc.target/mips/msub-8.c
index 49d67f24a6c..a66307f1041 100644
--- a/gcc/testsuite/gcc.target/mips/msub-8.c
+++ b/gcc/testsuite/gcc.target/mips/msub-8.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler-not "\tmsub\t" } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msubu-1.c b/gcc/testsuite/gcc.target/mips/msubu-1.c
index ae804034644..e1146f8bca9 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-1.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5400 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5400 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsacu\t\\\$0," 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/msubu-2.c b/gcc/testsuite/gcc.target/mips/msubu-2.c
index 186dc47d6f7..642d1239460 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-2.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsubu\t" 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/msubu-3.c b/gcc/testsuite/gcc.target/mips/msubu-3.c
index 272c64818e3..2e936ebe03f 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-3.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-3.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "isa_rev>=1 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsubu\t" 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/msubu-4.c b/gcc/testsuite/gcc.target/mips/msubu-4.c
index 8f5fd647b37..a4f6118600e 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-4.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsubu\t\\\$ac" 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/mult-1.c b/gcc/testsuite/gcc.target/mips/mult-1.c
index 8630ec95d5e..1038797f228 100644
--- a/gcc/testsuite/gcc.target/mips/mult-1.c
+++ b/gcc/testsuite/gcc.target/mips/mult-1.c
@@ -1,6 +1,8 @@
/* For SI->DI widening multiplication we should use DINS to combine the two
halves. For Octeon use DMUL with explicit widening. */
-/* { dg-options "-O2 -mgp64 isa_rev>=2 forbid_cpu=octeon.*" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 isa_rev>=2 forbid_cpu=octeon.* -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdins\t" } } */
/* { dg-final { scan-assembler-not "\tdsll\t" } } */
/* { dg-final { scan-assembler-not "\tdsrl\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-10.c b/gcc/testsuite/gcc.target/mips/mult-10.c
index 0b990c36413..c479ebbc553 100644
--- a/gcc/testsuite/gcc.target/mips/mult-10.c
+++ b/gcc/testsuite/gcc.target/mips/mult-10.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" { xfail *-*-* } } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-11.c b/gcc/testsuite/gcc.target/mips/mult-11.c
index d2ba695f6dd..8b26c1de7a4 100644
--- a/gcc/testsuite/gcc.target/mips/mult-11.c
+++ b/gcc/testsuite/gcc.target/mips/mult-11.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-12.c b/gcc/testsuite/gcc.target/mips/mult-12.c
index bd772d2cd74..bf8d36c7629 100644
--- a/gcc/testsuite/gcc.target/mips/mult-12.c
+++ b/gcc/testsuite/gcc.target/mips/mult-12.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-13.c b/gcc/testsuite/gcc.target/mips/mult-13.c
index e0859f629f3..beb6ab9432c 100644
--- a/gcc/testsuite/gcc.target/mips/mult-13.c
+++ b/gcc/testsuite/gcc.target/mips/mult-13.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-14.c b/gcc/testsuite/gcc.target/mips/mult-14.c
index c4b54b7ec45..e3cbd75bf28 100644
--- a/gcc/testsuite/gcc.target/mips/mult-14.c
+++ b/gcc/testsuite/gcc.target/mips/mult-14.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-15.c b/gcc/testsuite/gcc.target/mips/mult-15.c
index a96049e04e6..da47bd29227 100644
--- a/gcc/testsuite/gcc.target/mips/mult-15.c
+++ b/gcc/testsuite/gcc.target/mips/mult-15.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-16.c b/gcc/testsuite/gcc.target/mips/mult-16.c
index cb1707d9125..3e9b3785b1b 100644
--- a/gcc/testsuite/gcc.target/mips/mult-16.c
+++ b/gcc/testsuite/gcc.target/mips/mult-16.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp32 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-17.c b/gcc/testsuite/gcc.target/mips/mult-17.c
index 3539f63d96a..84baff8cd8c 100644
--- a/gcc/testsuite/gcc.target/mips/mult-17.c
+++ b/gcc/testsuite/gcc.target/mips/mult-17.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-18.c b/gcc/testsuite/gcc.target/mips/mult-18.c
index cfdac8b0de1..52487f30dff 100644
--- a/gcc/testsuite/gcc.target/mips/mult-18.c
+++ b/gcc/testsuite/gcc.target/mips/mult-18.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-19.c b/gcc/testsuite/gcc.target/mips/mult-19.c
index 47cdd5c23c3..11cdb17c867 100644
--- a/gcc/testsuite/gcc.target/mips/mult-19.c
+++ b/gcc/testsuite/gcc.target/mips/mult-19.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-2.c b/gcc/testsuite/gcc.target/mips/mult-2.c
index 8494e14c358..77be3116273 100644
--- a/gcc/testsuite/gcc.target/mips/mult-2.c
+++ b/gcc/testsuite/gcc.target/mips/mult-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmult\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-3.c b/gcc/testsuite/gcc.target/mips/mult-3.c
index fa7cfa34e23..e46978bc409 100644
--- a/gcc/testsuite/gcc.target/mips/mult-3.c
+++ b/gcc/testsuite/gcc.target/mips/mult-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-4.c b/gcc/testsuite/gcc.target/mips/mult-4.c
index d579f0023d2..939ca5cdb40 100644
--- a/gcc/testsuite/gcc.target/mips/mult-4.c
+++ b/gcc/testsuite/gcc.target/mips/mult-4.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmult\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-5.c b/gcc/testsuite/gcc.target/mips/mult-5.c
index 6df86a1163d..efb06af8559 100644
--- a/gcc/testsuite/gcc.target/mips/mult-5.c
+++ b/gcc/testsuite/gcc.target/mips/mult-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-6.c b/gcc/testsuite/gcc.target/mips/mult-6.c
index a6b910ec402..82d4f5d453a 100644
--- a/gcc/testsuite/gcc.target/mips/mult-6.c
+++ b/gcc/testsuite/gcc.target/mips/mult-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-7.c b/gcc/testsuite/gcc.target/mips/mult-7.c
index 7c2989baa52..35b07498070 100644
--- a/gcc/testsuite/gcc.target/mips/mult-7.c
+++ b/gcc/testsuite/gcc.target/mips/mult-7.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-8.c b/gcc/testsuite/gcc.target/mips/mult-8.c
index 3e3acde81e3..18dce2013d6 100644
--- a/gcc/testsuite/gcc.target/mips/mult-8.c
+++ b/gcc/testsuite/gcc.target/mips/mult-8.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-9.c b/gcc/testsuite/gcc.target/mips/mult-9.c
index aa2ededa67a..59d450ab2c0 100644
--- a/gcc/testsuite/gcc.target/mips/mult-9.c
+++ b/gcc/testsuite/gcc.target/mips/mult-9.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/near-far-3.c b/gcc/testsuite/gcc.target/mips/near-far-3.c
index f4ae791f1a0..d4d48b1ed53 100644
--- a/gcc/testsuite/gcc.target/mips/near-far-3.c
+++ b/gcc/testsuite/gcc.target/mips/near-far-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-mlong-calls addressing=absolute -O2" } */
+/* { dg-options "-mlong-calls addressing=absolute" } */
NOMIPS16 extern int long_call_func () __attribute__((long_call));
NOMIPS16 extern int far_func () __attribute__((far));
@@ -13,5 +13,5 @@ NOMIPS16 int test4 () { return normal_func (); }
/* { dg-final { scan-assembler-not "\tj\tlong_call_func\n" } } */
/* { dg-final { scan-assembler-not "\tj\tfar_func\n" } } */
-/* { dg-final { scan-assembler "\tj\tnear_func\n" } } */
+/* { dg-final { scan-assembler "\tj(|al)\tnear_func\n" } } */
/* { dg-final { scan-assembler-not "\tj\tnormal_func\n" } } */
diff --git a/gcc/testsuite/gcc.target/mips/near-far-4.c b/gcc/testsuite/gcc.target/mips/near-far-4.c
index b9aa21fe4f4..0ea07b06205 100644
--- a/gcc/testsuite/gcc.target/mips/near-far-4.c
+++ b/gcc/testsuite/gcc.target/mips/near-far-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-mno-long-calls addressing=absolute -O2" } */
+/* { dg-options "-mno-long-calls addressing=absolute" } */
NOMIPS16 extern int long_call_func () __attribute__((long_call));
NOMIPS16 extern int far_func () __attribute__((far));
@@ -13,5 +13,5 @@ NOMIPS16 int test4 () { return normal_func (); }
/* { dg-final { scan-assembler-not "\tj\tlong_call_func\n" } } */
/* { dg-final { scan-assembler-not "\tj\tfar_func\n" } } */
-/* { dg-final { scan-assembler "\tj\tnear_func\n" } } */
-/* { dg-final { scan-assembler "\tj\tnormal_func\n" } } */
+/* { dg-final { scan-assembler "\tj(|al)\tnear_func\n" } } */
+/* { dg-final { scan-assembler "\tj(|al)\tnormal_func\n" } } */
diff --git a/gcc/testsuite/gcc.target/mips/neg-abs-1.c b/gcc/testsuite/gcc.target/mips/neg-abs-1.c
index 20691ff2c4b..fca525667b4 100644
--- a/gcc/testsuite/gcc.target/mips/neg-abs-1.c
+++ b/gcc/testsuite/gcc.target/mips/neg-abs-1.c
@@ -1,11 +1,11 @@
/* Make sure that we use abs.fmt and neg.fmt when the signs of NaNs don't
matter. */
/* { dg-do compile } */
-/* { dg-options "-O2 -mhard-float -ffinite-math-only" } */
-/* { dg-final { scan-assembler "neg.s" } } */
-/* { dg-final { scan-assembler "neg.d" } } */
-/* { dg-final { scan-assembler "abs.s" } } */
-/* { dg-final { scan-assembler "abs.d" } } */
+/* { dg-options "-mhard-float -ffinite-math-only" } */
+/* { dg-final { scan-assembler "\tneg.s\t" } } */
+/* { dg-final { scan-assembler "\tneg.d\t" } } */
+/* { dg-final { scan-assembler "\tabs.s\t" } } */
+/* { dg-final { scan-assembler "\tabs.d\t" } } */
NOMIPS16 float f1 (float f) { return -f; }
NOMIPS16 float f2 (float f) { return __builtin_fabsf (f); }
diff --git a/gcc/testsuite/gcc.target/mips/neg-abs-2.c b/gcc/testsuite/gcc.target/mips/neg-abs-2.c
index 67125f78a67..435751e0cc4 100644
--- a/gcc/testsuite/gcc.target/mips/neg-abs-2.c
+++ b/gcc/testsuite/gcc.target/mips/neg-abs-2.c
@@ -1,11 +1,11 @@
/* Make sure that we avoid abs.fmt and neg.fmt when the signs of NaNs
matter. */
/* { dg-do compile } */
-/* { dg-options "-O2 -mhard-float -fno-finite-math-only" } */
-/* { dg-final { scan-assembler-not "neg.s" } } */
-/* { dg-final { scan-assembler-not "neg.d" } } */
-/* { dg-final { scan-assembler-not "abs.s" } } */
-/* { dg-final { scan-assembler-not "abs.d" } } */
+/* { dg-options "-mhard-float -fno-finite-math-only" } */
+/* { dg-final { scan-assembler-not "\tneg.s\t" } } */
+/* { dg-final { scan-assembler-not "\tneg.d\t" } } */
+/* { dg-final { scan-assembler-not "\tabs.s\t" } } */
+/* { dg-final { scan-assembler-not "\tabs.d\t" } } */
float f1 (float f) { return -f; }
float f2 (float f) { return __builtin_fabsf (f); }
diff --git a/gcc/testsuite/gcc.target/mips/nmadd-1.c b/gcc/testsuite/gcc.target/mips/nmadd-1.c
index 123d48799ed..00be144d16a 100644
--- a/gcc/testsuite/gcc.target/mips/nmadd-1.c
+++ b/gcc/testsuite/gcc.target/mips/nmadd-1.c
@@ -1,9 +1,10 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math isa=4 -mhard-float" } */
-/* { dg-final { scan-assembler "nmadd.s" } } */
-/* { dg-final { scan-assembler "nmadd.d" } } */
-/* { dg-final { scan-assembler "nmsub.s" } } */
-/* { dg-final { scan-assembler "nmsub.d" } } */
+/* { dg-options "-ffast-math isa=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tnmadd.s\t" } } */
+/* { dg-final { scan-assembler "\tnmadd.d\t" } } */
+/* { dg-final { scan-assembler "\tnmsub.s\t" } } */
+/* { dg-final { scan-assembler "\tnmsub.d\t" } } */
NOMIPS16 float
sub1 (float f, float g, float h)
diff --git a/gcc/testsuite/gcc.target/mips/nmadd-2.c b/gcc/testsuite/gcc.target/mips/nmadd-2.c
index 90e4d838d89..a271f33b697 100644
--- a/gcc/testsuite/gcc.target/mips/nmadd-2.c
+++ b/gcc/testsuite/gcc.target/mips/nmadd-2.c
@@ -1,9 +1,10 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-fast-math -ffinite-math-only isa=4 -mhard-float" } */
-/* { dg-final { scan-assembler "nmadd.s" } } */
-/* { dg-final { scan-assembler "nmadd.d" } } */
-/* { dg-final { scan-assembler "nmsub.s" } } */
-/* { dg-final { scan-assembler "nmsub.d" } } */
+/* { dg-options "-fno-fast-math -ffinite-math-only isa=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tnmadd.s\t" } } */
+/* { dg-final { scan-assembler "\tnmadd.d\t" } } */
+/* { dg-final { scan-assembler "\tnmsub.s\t" } } */
+/* { dg-final { scan-assembler "\tnmsub.d\t" } } */
NOMIPS16 float
sub1 (float f, float g, float h)
diff --git a/gcc/testsuite/gcc.target/mips/nmadd-3.c b/gcc/testsuite/gcc.target/mips/nmadd-3.c
index df726186128..85de518a73d 100644
--- a/gcc/testsuite/gcc.target/mips/nmadd-3.c
+++ b/gcc/testsuite/gcc.target/mips/nmadd-3.c
@@ -1,11 +1,9 @@
/* The same code as nmadd-2.c, but compiled with -fno-finite-math-only.
We can't use nmadd and nmsub in that case. */
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-fast-math -fno-finite-math-only isa=4 -mhard-float" } */
-/* { dg-final { scan-assembler-not "nmadd.s" } } */
-/* { dg-final { scan-assembler-not "nmadd.d" } } */
-/* { dg-final { scan-assembler-not "nmsub.s" } } */
-/* { dg-final { scan-assembler-not "nmsub.d" } } */
+/* { dg-options "-fno-fast-math -fno-finite-math-only isa=4 -mhard-float" } */
+/* { dg-final { scan-assembler-not "\tnmadd" } } */
+/* { dg-final { scan-assembler-not "\tnmsub" } } */
float
sub1 (float f, float g, float h)
diff --git a/gcc/testsuite/gcc.target/mips/no-dsp-1.c b/gcc/testsuite/gcc.target/mips/no-dsp-1.c
index 093037579b9..c4a7b0aede2 100644
--- a/gcc/testsuite/gcc.target/mips/no-dsp-1.c
+++ b/gcc/testsuite/gcc.target/mips/no-dsp-1.c
@@ -1,7 +1,8 @@
-/* { dg-options "-mno-dsp" } */
+/* { dg-options "-mno-dsp -ffat-lto-objects" } */
void
foo (void)
{
register int x asm ("$ac1hi"); /* { dg-error "cannot be accessed" } */
+ asm volatile ("" : "=r" (x));
}
diff --git a/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c b/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c
index ee7f3d54d5d..ecf856ea7fa 100644
--- a/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c
+++ b/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -mno-smartmips" } */
+/* { dg-options "-mno-smartmips" } */
NOMIPS16 int scaled_indexed_word_load (int a[], int b)
{
diff --git a/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c b/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c
index d1f50a8fbef..419d086b8af 100644
--- a/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c
+++ b/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -mno-smartmips -march=mips32" } */
+/* { dg-options "-mno-smartmips -march=mips32" } */
NOMIPS16 int rotate_left (unsigned a, unsigned s)
{
diff --git a/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c b/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c
index 8dd5be16765..e7150d29733 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon" } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tbaddu\t" 4 } } */
/* { dg-final { scan-assembler-not "\tandi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c b/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c
index 6629dbb5844..f91c68bcdcc 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c
@@ -1,7 +1,9 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon" } */
-/* { dg-final { scan-assembler-times "\tbbit1\t" 4 } } */
-/* { dg-final { scan-assembler-times "\tbbit0\t" 2 } } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tbbit1\t" } } */
+/* { dg-final { scan-assembler "\tbbit0\t" } } */
+/* { dg-final { scan-assembler-times "\tbbit.\t" 6 } } */
/* { dg-final { scan-assembler-not "andi\t" } } */
NOMIPS16 void foo (void);
diff --git a/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c b/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c
index 55bf23eae4e..9bd8dce107a 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon -mbranch-likely" } */
+/* { dg-options "-march=octeon -mbranch-likely -fno-unroll-loops" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tbbit\[01\]\t" } } */
/* { dg-final { scan-assembler-not "\tbbit\[01\]l\t" } } */
/* { dg-final { scan-assembler "\tbnel\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c b/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c
index bcc37d29e34..2726037bee1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c
@@ -11,9 +11,10 @@
which does not get recognized as a valid bbit pattern. The
middle-end should be able to simplify this further. */
-/* { dg-options "-O2 -march=octeon -meb" } */
+/* { dg-options "-march=octeon -meb" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
-/* { dg-final { scan-assembler-times "\tbbit\[01\]\t|\tbgez\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tbbit\[01\]\t|\tbgez\t|\tbltz\t" 2 } } */
/* { dg-final { scan-assembler-not "ext\t" } } */
void abort (void);
diff --git a/gcc/testsuite/gcc.target/mips/octeon-cins-1.c b/gcc/testsuite/gcc.target/mips/octeon-cins-1.c
index ac85e237846..dd0b753ec07 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-cins-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-cins-1.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
/* The tests also work with -mgp32. For long long tests, only one of
the 32-bit parts is used. */
-/* { dg-options "-O -march=octeon" } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tcins\t" 3 } } */
/* { dg-final { scan-assembler-not "\tandi\t|sll\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-cins-2.c b/gcc/testsuite/gcc.target/mips/octeon-cins-2.c
index 2dcff0aad1c..71611bc9ff2 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-cins-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-cins-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tcins\t" } } */
NOMIPS16 unsigned
diff --git a/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c b/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c
index 6b2308c0bba..cf8da24ca71 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "using DMUL is no worse size-wise, and can be better if the constant is used elsewhere" { *-*-* } { "-Os" } { "" } } */
/* { dg-final { scan-assembler-not "\tdmul" } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c b/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c
index 01f0eefca80..38150a87ec1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c
@@ -1,5 +1,6 @@
/* Use DMUL for widening multiplication too. */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdmul\t" 2 } } */
/* { dg-final { scan-assembler-not "\td?mult\t" } } */
/* { dg-final { scan-assembler-times "\tdext\t" 2 } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-2.c b/gcc/testsuite/gcc.target/mips/octeon-exts-2.c
index fc5df639d02..21353d90612 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -meb" } */
+/* { dg-options "-march=octeon -meb" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 4 } } */
struct bar
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-3.c b/gcc/testsuite/gcc.target/mips/octeon-exts-3.c
index 9d0e9302a54..be041989070 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 3 } } */
struct foo
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-4.c b/gcc/testsuite/gcc.target/mips/octeon-exts-4.c
index 7e6a578a19c..0071ae173bc 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-4.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t\[^\n\]*,0" } } */
/* { dg-final { scan-assembler-times "\texts\t" 6 } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-5.c b/gcc/testsuite/gcc.target/mips/octeon-exts-5.c
index e7a4738b96f..0e587d7eb29 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-5.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-5.c
@@ -1,6 +1,7 @@
/* -mel version of octeon-exts-2.c. */
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mel" } */
+/* { dg-options "-march=octeon -mel" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 4 } } */
struct bar
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-6.c b/gcc/testsuite/gcc.target/mips/octeon-exts-6.c
index d37ed95559d..b8da271ae31 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-6.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 5 } } */
/* { dg-final { scan-assembler-not "\t(dsll|dsra)\t" } } */
/* { dg-final { scan-assembler-not "\tsll\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-7.c b/gcc/testsuite/gcc.target/mips/octeon-exts-7.c
index 04805d06de4..0d0d08eacdc 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-7.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-7.c
@@ -1,8 +1,9 @@
/* Remove the redundant sign-extension after the sign-extraction. */
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 1 } } */
-/* { dg-final { scan-assembler-not "sll|sra" } } */
+/* { dg-final { scan-assembler-not "\td?(sll|sra)" } } */
struct bar
{
diff --git a/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c b/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
index bbcf7c8fcbb..4488e3d5117 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
@@ -1,6 +1,7 @@
/* Check that we use the octeon pipeline description. */
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon -fdump-rtl-sched2" } */
+/* { dg-options "-march=octeon -fschedule-insns2 -fdump-rtl-sched2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f (int a, int b)
{
@@ -8,4 +9,4 @@ NOMIPS16 int f (int a, int b)
}
/* { dg-final { scan-rtl-dump "octeon_mult\\*71" "sched2" } } */
-/* { dg-final { cleanup-tree-dump "sched2" } } */
+/* { dg-final { cleanup-rtl-dump "sched2" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-pop-1.c b/gcc/testsuite/gcc.target/mips/octeon-pop-1.c
index 54d2e9c04aa..6a6791ce617 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-pop-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-pop-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
/* { dg-final { scan-assembler "\tpop\t" } } */
/* { dg-final { scan-assembler "\tdpop\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-pop-2.c b/gcc/testsuite/gcc.target/mips/octeon-pop-2.c
new file mode 100644
index 00000000000..d6d2a7afb3f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/octeon-pop-2.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* The pop instruction does not depend on the word value to be sign extended. */
+/* { dg-final { scan-assembler-not "sll\t" } } */
+
+NOMIPS16 long long f(long long i)
+{
+ return __builtin_popcount (i);
+}
+
diff --git a/gcc/testsuite/gcc.target/mips/octeon-seq-3.c b/gcc/testsuite/gcc.target/mips/octeon-seq-3.c
index 899f145844b..71e09dc6f0e 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-seq-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-seq-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "and\t\|andi\t\|ext\t\|sll\t\|srl\t" } } */
/* { dg-final { scan-assembler-times "\tseqi\t\|\tsnei\t" 4 } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-seq-4.c b/gcc/testsuite/gcc.target/mips/octeon-seq-4.c
index e61bcb361c0..0fd83f0b309 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-seq-4.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-seq-4.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon" } */
-/* { dg-final { scan-assembler-not "xor" } } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler-not "\txor" } } */
unsigned
m (unsigned e);
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c b/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c
index 34d8af8521f..445e3fc2e7e 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-march=octeon2 -O -mgp64" } */
+/* { dg-options "-march=octeon2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(N, R, T) \
T fll##N (T j, signed R *b, long long i) { return j + b[i]; } \
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c b/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c
index 521a71f961b..b487637bec1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-march=octeon2 -O -mgp64" } */
+/* { dg-options "-march=octeon2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(N, T) \
T f##N (T *p, int i) { return p[i]; } \
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c b/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c
index 51d2e1031cc..110cf8bd7f1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-march=octeon2 -O -mgp32" } */
+/* { dg-options "-march=octeon2 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(N, T) \
T f##N (T *p, int i) { return p[i]; } \
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c b/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
index da4f6321c73..18fd966715d 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
@@ -1,6 +1,7 @@
/* Check that we use the octeon2 pipeline description. */
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-rtl-sched2 -march=octeon2" } */
+/* { dg-options "-fschedule-insns2 -fdump-rtl-sched2 -march=octeon2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f (int a, int b)
{
@@ -8,4 +9,4 @@ NOMIPS16 int f (int a, int b)
}
/* { dg-final { scan-rtl-dump "octeon_mult\\*17" "sched2" } } */
-/* { dg-final { cleanup-tree-dump "sched2" } } */
+/* { dg-final { cleanup-rtl-dump "sched2" } } */
diff --git a/gcc/testsuite/gcc.target/mips/pr26765.c b/gcc/testsuite/gcc.target/mips/pr26765.c
index 25c2e8d4c83..c4716cff5ba 100644
--- a/gcc/testsuite/gcc.target/mips/pr26765.c
+++ b/gcc/testsuite/gcc.target/mips/pr26765.c
@@ -2,7 +2,7 @@
This testcase used to trigger an unrecognizable insn. */
/* { dg-do compile } */
-/* { dg-options "-O2 -w" } */
+/* { dg-options "-w" } */
__thread int *a = 0;
diff --git a/gcc/testsuite/gcc.target/mips/pr33256.c b/gcc/testsuite/gcc.target/mips/pr33256.c
index ead5888cc07..109da4899ef 100644
--- a/gcc/testsuite/gcc.target/mips/pr33256.c
+++ b/gcc/testsuite/gcc.target/mips/pr33256.c
@@ -1,6 +1,6 @@
/* GCC used to report an ICE for this test because we generated a LO_SUM
for an illegitimate constant. */
-/* { dg-options "-mabi=64 -msym32 -O2 -EB -mno-abicalls" } */
+/* { dg-options "-mabi=64 -msym32 -EB -mno-abicalls" } */
extern unsigned long a[];
int b (int);
diff --git a/gcc/testsuite/gcc.target/mips/pr33635-1.c b/gcc/testsuite/gcc.target/mips/pr33635-1.c
index 78e761f71c5..f849b396ea0 100644
--- a/gcc/testsuite/gcc.target/mips/pr33635-1.c
+++ b/gcc/testsuite/gcc.target/mips/pr33635-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mabi=64 -O2" } */
+/* { dg-options "-mabi=64" } */
NOMIPS16 long double __powitf2 (long double x, int m)
{
diff --git a/gcc/testsuite/gcc.target/mips/pr33755.c b/gcc/testsuite/gcc.target/mips/pr33755.c
index ca6a1e6984d..c3e2cbfd7d6 100644
--- a/gcc/testsuite/gcc.target/mips/pr33755.c
+++ b/gcc/testsuite/gcc.target/mips/pr33755.c
@@ -1,5 +1,4 @@
/* { dg-do link } */
-/* { dg-options "-O2" } */
volatile int gv;
const char *ptrs[2];
diff --git a/gcc/testsuite/gcc.target/mips/pr35802.c b/gcc/testsuite/gcc.target/mips/pr35802.c
index 9ecc4d06ea6..acdfaebe338 100644
--- a/gcc/testsuite/gcc.target/mips/pr35802.c
+++ b/gcc/testsuite/gcc.target/mips/pr35802.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -march=74kc -mgp32" } */
+/* { dg-options "-march=74kc -mgp32" } */
__thread int x __attribute__((tls_model("initial-exec")));
__thread int y __attribute__((tls_model("initial-exec")));
diff --git a/gcc/testsuite/gcc.target/mips/pr45074.c b/gcc/testsuite/gcc.target/mips/pr45074.c
index ba578c838c1..129467fb022 100644
--- a/gcc/testsuite/gcc.target/mips/pr45074.c
+++ b/gcc/testsuite/gcc.target/mips/pr45074.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mhard-float -mgp32 -O" } */
+/* { dg-options "-mhard-float -mgp32" } */
register double g __asm__("$f20");
NOMIPS16 void
diff --git a/gcc/testsuite/gcc.target/mips/pr54240.c b/gcc/testsuite/gcc.target/mips/pr54240.c
new file mode 100644
index 00000000000..c2674b1fe4b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/pr54240.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-tree-phiopt-details isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-O1" } { "" } } */
+
+typedef struct s {
+ int v;
+ int b;
+ struct s *l;
+ struct s *r;
+} S;
+
+/* Test requires conditional moves. */
+NOMIPS16 int foo(S *s)
+{
+ S *this;
+ S *next;
+
+ this = s;
+ if (this->b)
+ next = this->l;
+ else
+ next = this->r;
+
+ return next->v;
+}
+
+/* { dg-final { scan-tree-dump "Hoisting adjacent loads" "phiopt1" } } */
+/* { dg-final { cleanup-tree-dump "phiopt1" } } */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
index b271e2bf416..b5ffd0aebb8 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mabi=64 -mr10k-cache-barrier=store" } */
+/* { dg-options "-mabi=64 -mr10k-cache-barrier=store" } */
/* Test that stores to uncached addresses do not get unnecessary
cache barriers. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
index 68c4b7ef239..1b8c6f4ab49 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
@@ -1,18 +1,20 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mips4 -mbranch-likely -mno-abicalls" } */
-int bar (int);
+/* { dg-options "-mr10k-cache-barrier=store -mips4 -mbranch-likely -mno-abicalls" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+
+unsigned char *bar (int);
/* Test that code after a branch-likely does not get an unnecessary
cache barrier. */
NOMIPS16 void
-foo (int n, int *x)
+foo (unsigned char *n)
{
do
- n = bar (n * 4 + 1);
+ n = bar (*n + 1);
while (n);
/* The preceding branch should be a branch likely, with the shift as
its delay slot. We therefore don't need a cache barrier here. */
- x[0] = 0;
+ n[0] = 0;
}
/* { dg-final { scan-assembler-not "\tcache\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
index d1082d910d8..936c2589d32 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
/* Test that loads are not unnecessarily protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c
index d4163910900..34a12489cbb 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=load-store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=load-store -mno-abicalls" } */
/* Test that loads are correctly protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c
index 3e955abf549..ee9c84b5988 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store" } */
+/* { dg-options "-mr10k-cache-barrier=store" } */
/* Test that indirect calls are protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c
index 1fdcee0e25a..92c37f497c6 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -O2 -mr10k-cache-barrier=store" } */
+/* { dg-options "(-mips16) -mr10k-cache-barrier=store -ffat-lto-objects" } */
/* Test that indirect calls are protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c
index a3e7f0db92c..da655cda147 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c
@@ -1,2 +1,2 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mips2" } */
+/* { dg-options "-mr10k-cache-barrier=store -mips2" } */
/* { dg-error "requires.*cache.*instruction" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c
index 3d06d0ddb6e..ebf45f94f31 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mabi=64 -mr10k-cache-barrier=store" } */
+/* { dg-options "-mabi=64 -mr10k-cache-barrier=store" } */
/* Test that stores to constant cached addresses are protected
by cache barriers. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c
index be2c7fbd76e..9e567898135 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
/* Test that in-range stores to the frame are not protected by
cache barriers. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c
index 9dd23eafa78..7780460b2d0 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
void bar (int *x);
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c
index a6b53a9ea34..757beefc231 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls -mabi=64" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls -mabi=64" } */
/* Test that in-range stores to static objects do not get an unnecessary
cache barrier. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c
index c52caaa1ad2..32dd78cb584 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mabi=64" } */
+/* { dg-options "-mr10k-cache-barrier=store -mabi=64" } */
int x[4];
void bar (void);
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c
index 3f738654cc1..3a7a2538eec 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
void bar1 (void);
void bar2 (void);
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c
index 394bf486f38..121b907233e 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -G8" } */
+/* { dg-options "-mr10k-cache-barrier=store -G8" } */
/* Test that in-range stores to components of static objects
do not get an unnecessary cache barrier. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
index 67b52f92d35..2f83968aad6 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -G8" } */
+/* { dg-options "-mr10k-cache-barrier=store -G8" } */
/* Test that out-of-range stores to components of static objects
are protected by a cache barrier. */
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-1.c b/gcc/testsuite/gcc.target/mips/rsqrt-1.c
index f0a9b3aed62..93fca39d609 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-1.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-1.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math isa=4 -mhard-float -mgp64" } */
-/* { dg-final { scan-assembler "rsqrt.d" } } */
-/* { dg-final { scan-assembler "rsqrt.s" } } */
+/* { dg-options "-ffast-math isa=4 -mhard-float -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\trsqrt.d\t" } } */
+/* { dg-final { scan-assembler "\trsqrt.s\t" } } */
extern double sqrt(double);
extern float sqrtf(float);
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-2.c b/gcc/testsuite/gcc.target/mips/rsqrt-2.c
index bc81039d523..c35ca0c6aca 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-2.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-2.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math isa=4 -mhard-float -mgp64" } */
-/* { dg-final { scan-assembler "rsqrt.d" } } */
-/* { dg-final { scan-assembler "rsqrt.s" } } */
+/* { dg-options "-ffast-math isa=4 -mhard-float -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\trsqrt.d\t" } } */
+/* { dg-final { scan-assembler "\trsqrt.s\t" } } */
extern double sqrt(double);
extern float sqrtf(float);
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-3.c b/gcc/testsuite/gcc.target/mips/rsqrt-3.c
index cfa771ef86b..25178f2c8ff 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-3.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-3.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa=4 -mhard-float" } */
-/* { dg-final { scan-assembler-not "rsqrt.d" } } */
-/* { dg-final { scan-assembler-not "rsqrt.s" } } */
+/* { dg-options "isa=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler-not "\trsqrt.d\t" } } */
+/* { dg-final { scan-assembler-not "\trsqrt.s\t" } } */
extern double sqrt(double);
extern float sqrtf(float);
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-4.c b/gcc/testsuite/gcc.target/mips/rsqrt-4.c
index 726c35403dc..6b6577e2e0a 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-4.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math -mips64 -mhard-float -mgp32" } */
+/* { dg-options "-ffast-math -mips64 -mhard-float -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\trsqrt.d\t" } } */
/* { dg-final { scan-assembler-times "\trsqrt.s\t" 2 } } */
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-1.c b/gcc/testsuite/gcc.target/mips/save-restore-1.c
index f6a854ee9f3..b3ce1b18dc2 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-1.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-1.c
@@ -1,5 +1,5 @@
/* Check that we can use the save instruction to save varargs. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
#include <stdarg.h>
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-2.c b/gcc/testsuite/gcc.target/mips/save-restore-2.c
index 4a11bc21083..899460fe7b6 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-2.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-2.c
@@ -1,5 +1,6 @@
/* Check that we can use the save instruction to save spilled arguments. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
MIPS16 void
foo (int *a, int b, int c)
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-3.c b/gcc/testsuite/gcc.target/mips/save-restore-3.c
index d45fe50ea6b..5d7aeb0edd9 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-3.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-3.c
@@ -1,6 +1,6 @@
/* Check that we can use the save instruction to save spilled arguments
when the argument save area is out of range of a direct load or store. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
void bar (int *);
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-4.c b/gcc/testsuite/gcc.target/mips/save-restore-4.c
index ef7722bce09..25f3e6199d2 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-4.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-4.c
@@ -1,5 +1,6 @@
/* Check that we can use the save instruction to save $16, $17 and $31. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
void bar (void);
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-5.c b/gcc/testsuite/gcc.target/mips/save-restore-5.c
index 0dd823a6813..b0dc1f057e9 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-5.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-5.c
@@ -1,5 +1,5 @@
/* Check that we don't try to save the same register twice. */
-/* { dg-options "(-mips16) isa_rev>=1 -mgp32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mgp32" } */
int bar (int, int, int, int);
void frob (void);
diff --git a/gcc/testsuite/gcc.target/mips/sb1-1.c b/gcc/testsuite/gcc.target/mips/sb1-1.c
index 819938fcdc0..0c2ae066a79 100644
--- a/gcc/testsuite/gcc.target/mips/sb1-1.c
+++ b/gcc/testsuite/gcc.target/mips/sb1-1.c
@@ -1,10 +1,11 @@
/* Test SB-1 v2sf extensions. */
/* { dg-do compile } */
-/* { dg-options "-march=sb1 -O2 -mpaired-single -mgp64 -ffast-math" } */
-/* { dg-final { scan-assembler "div.ps" } } */
-/* { dg-final { scan-assembler "recip.ps" } } */
-/* { dg-final { scan-assembler "sqrt.ps" } } */
-/* { dg-final { scan-assembler "rsqrt.ps" } } */
+/* { dg-options "-march=sb1 -mpaired-single -mgp64 -ffast-math" } */
+/* { dg-skip-if "rsqrt code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tdiv.ps\t" } } */
+/* { dg-final { scan-assembler "\trecip.ps\t" } } */
+/* { dg-final { scan-assembler "\tsqrt.ps\t" } } */
+/* { dg-final { scan-assembler "\trsqrt.ps\t" } } */
typedef float v2sf __attribute__ ((vector_size (8)));
diff --git a/gcc/testsuite/gcc.target/mips/scc-1.c b/gcc/testsuite/gcc.target/mips/scc-1.c
index d0dc040151c..17599a83756 100644
--- a/gcc/testsuite/gcc.target/mips/scc-1.c
+++ b/gcc/testsuite/gcc.target/mips/scc-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "(-mips16) -O isa_rev>=1" } */
+/* { dg-options "(-mips16) isa_rev>=1" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times {slt \$2,\$5,\$4} 1 } } */
/* { dg-final { scan-assembler-times {sltu \$2,\$5,\$4} 1 } } */
diff --git a/gcc/testsuite/gcc.target/mips/scc-2.c b/gcc/testsuite/gcc.target/mips/scc-2.c
index 440c28b84bf..132da7bcf65 100644
--- a/gcc/testsuite/gcc.target/mips/scc-2.c
+++ b/gcc/testsuite/gcc.target/mips/scc-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "and\t\|andi\t\|ext\t\|sll\t\|srl\t" } } */
/* { dg-final { scan-assembler-times "slt\t\|slti?u\t" 12 } } */
diff --git a/gcc/testsuite/gcc.target/mips/scc-3.c b/gcc/testsuite/gcc.target/mips/scc-3.c
index b295e782c2d..a07a85adad7 100644
--- a/gcc/testsuite/gcc.target/mips/scc-3.c
+++ b/gcc/testsuite/gcc.target/mips/scc-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "(-mips16) -O -mabi=o64" } */
+/* { dg-options "(-mips16) -mabi=o64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "and\t\|andi\t\|ext\t\|sll\t\|srl\t" } } */
/* { dg-final { scan-assembler-times "slt\t\|slti?u\t" 8 } } */
diff --git a/gcc/testsuite/gcc.target/mips/scc-4.c b/gcc/testsuite/gcc.target/mips/scc-4.c
index 40460666c7f..b8e289982a0 100644
--- a/gcc/testsuite/gcc.target/mips/scc-4.c
+++ b/gcc/testsuite/gcc.target/mips/scc-4.c
@@ -1,8 +1,9 @@
/* { dg-do compile } */
-/* { dg-options "-O -mabi=o64" } */
+/* { dg-options "-mabi=o64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
-/* { dg-final { scan-assembler "slt\t" } } */
-/* { dg-final { scan-assembler "sltu\t\|xor\t\|xori\t" } } */
+/* { dg-final { scan-assembler "\tslt\t" } } */
+/* { dg-final { scan-assembler "\tsltu\t\|\txor\t\|\txori\t" } } */
/* This test should work both in mips16 and non-mips16 mode. */
diff --git a/gcc/testsuite/gcc.target/mips/sdata-1.c b/gcc/testsuite/gcc.target/mips/sdata-1.c
index f9a25cdc9f7..646a449947e 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-1.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-1.c
@@ -20,9 +20,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel\\(g8b\\)" } } */
/* { dg-final { scan-assembler "%gp_?rel\\(g8c\\)" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -30,9 +30,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/sdata-2.c b/gcc/testsuite/gcc.target/mips/sdata-2.c
index 5a9fff2da1d..fe55120f649 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-2.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-2.c
@@ -20,9 +20,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel\\(g8b\\)" } } */
/* { dg-final { scan-assembler "%gp_?rel\\(g8c\\)" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -30,9 +30,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/sdata-3.c b/gcc/testsuite/gcc.target/mips/sdata-3.c
index f232324954f..6705ee35a8e 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-3.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-3.c
@@ -20,9 +20,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel\\(g8b\\)" } } */
/* { dg-final { scan-assembler "%gp_?rel\\(g8c\\)" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -30,9 +30,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/sdata-4.c b/gcc/testsuite/gcc.target/mips/sdata-4.c
index 7786c6db9e4..82cfa61f893 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-4.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-4.c
@@ -3,9 +3,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel" } } */
/* { dg-final { scan-assembler-not "\\\$gp" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -13,9 +13,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c b/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c
index 92f46250eb6..ce64b13a77f 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int scaled_indexed_word_load (int a[], int b)
{
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c
index e9735b20a52..6300f8f03fd 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
NOMIPS16 int rotate_left (unsigned a, unsigned s)
{
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c
index ac4c94df8e2..2d7c5dcd63f 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
NOMIPS16 int rotate_right (unsigned a, unsigned s)
{
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c
index 360f3c463ff..5e51aa3f018 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
#define S 13
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c
index b8b82944540..fc88a9a8263 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
#define S 13
diff --git a/gcc/testsuite/gcc.target/mips/soft-float-1.c b/gcc/testsuite/gcc.target/mips/soft-float-1.c
index 4c456462797..855ff8eadda 100644
--- a/gcc/testsuite/gcc.target/mips/soft-float-1.c
+++ b/gcc/testsuite/gcc.target/mips/soft-float-1.c
@@ -1,7 +1,8 @@
-/* { dg-options "-msoft-float" } */
+/* { dg-options "-msoft-float -ffat-lto-objects" } */
void
foo (void)
{
register float x asm ("$f0"); /* { dg-error "cannot be accessed" } */
+ asm volatile ("" : "=r" (x));
}
diff --git a/gcc/testsuite/gcc.target/mips/stack-1.c b/gcc/testsuite/gcc.target/mips/stack-1.c
index 3d495453dd7..a28e4bf2075 100644
--- a/gcc/testsuite/gcc.target/mips/stack-1.c
+++ b/gcc/testsuite/gcc.target/mips/stack-1.c
@@ -1,9 +1,9 @@
-/* { dg-options "-O2" } */
-/* { dg-final { scan-assembler "addiu\t(\\\$sp,)?\\\$sp,\[1-9\]" } } */
+/* { dg-final { scan-assembler "\td?addiu\t(\\\$sp,)?\\\$sp,\[1-9\]" } } */
/* { dg-final { scan-assembler "\tlw\t" } } */
-/* { dg-final { scan-assembler-not "addiu\t(\\\$sp,)?\\\$sp,\[1-9\].*\tlw\t" } } */
+/* { dg-final { scan-assembler-not "\td?addiu\t(\\\$sp,)?\\\$sp,\[1-9\].*\tlw\t" } } */
-int foo (int y)
+/* Avoid use of SAVE and RESTORE. */
+NOMIPS16 int foo (int y)
{
volatile int a = y;
volatile int *volatile b = &a;
diff --git a/gcc/testsuite/gcc.target/mips/timode-1.c b/gcc/testsuite/gcc.target/mips/timode-1.c
index fc087ee1c35..606fee0cb1a 100644
--- a/gcc/testsuite/gcc.target/mips/timode-1.c
+++ b/gcc/testsuite/gcc.target/mips/timode-1.c
@@ -1,4 +1,5 @@
/* { dg-options "-mgp64" } */
+/* { dg-skip-if "we deliberately use calls when optimizing for size" { *-*-* } { "-Os" } { "" } } */
typedef int int128_t __attribute__((mode(TI)));
typedef unsigned int uint128_t __attribute__((mode(TI)));
@@ -22,44 +23,84 @@ volatile int amount = 4;
volatile uint128_t result;
int
-main (void)
+test1 (void)
{
result = a * b;
if (result != c)
return 1;
+ return 0;
+}
+int
+test2 (void)
+{
result = c + d;
if (result != e)
return 1;
+ return 0;
+}
+int
+test3 (void)
+{
result = e - d;
if (result != c)
return 1;
+ return 0;
+}
+int
+test4 (void)
+{
result = d & e;
if (result != f)
return 1;
+ return 0;
+}
+int
+test5 (void)
+{
result = d ^ e;
if (result != g)
return 1;
+ return 0;
+}
+int
+test6 (void)
+{
result = d | e;
if (result != h)
return 1;
+ return 0;
+}
+int
+test7 (void)
+{
result = g << amount;
if (result != i)
return 1;
+ return 0;
+}
+int
+test8 (void)
+{
result = g >> amount;
if (result != j)
return 1;
+ return 0;
+}
+int
+test9 (void)
+{
result = (int128_t) g >> amount;
if (result != k)
return 1;
-
return 0;
}
+
/* { dg-final { scan-assembler-not "\tjal" } } */
diff --git a/gcc/testsuite/gcc.target/mips/timode-2.c b/gcc/testsuite/gcc.target/mips/timode-2.c
index 9f3e43c41bd..b6b8ea99ba0 100644
--- a/gcc/testsuite/gcc.target/mips/timode-2.c
+++ b/gcc/testsuite/gcc.target/mips/timode-2.c
@@ -23,43 +23,96 @@ volatile int amount = 4;
volatile uint128_t result;
int
-main (void)
+test1 (void)
{
result = a * b;
if (result != c)
return 1;
+ return 0;
+}
+int
+test2 (void)
+{
result = c + d;
if (result != e)
return 1;
+ return 0;
+}
+int
+test3 (void)
+{
result = e - d;
if (result != c)
return 1;
+ return 0;
+}
+int
+test4 (void)
+{
result = d & e;
if (result != f)
return 1;
+ return 0;
+}
+int
+test5 (void)
+{
result = d ^ e;
if (result != g)
return 1;
+ return 0;
+}
+int
+test6 (void)
+{
result = d | e;
if (result != h)
return 1;
+ return 0;
+}
+int
+test7 (void)
+{
result = g << amount;
if (result != i)
return 1;
+ return 0;
+}
+int
+test8 (void)
+{
result = g >> amount;
if (result != j)
return 1;
+ return 0;
+}
+int
+test9 (void)
+{
result = (int128_t) g >> amount;
if (result != k)
return 1;
-
return 0;
}
+
+int
+main (void)
+{
+ return (test1 ()
+ | test2 ()
+ | test3 ()
+ | test4 ()
+ | test5 ()
+ | test6 ()
+ | test7 ()
+ | test8 ()
+ | test9 ());
+}
diff --git a/gcc/testsuite/gcc.target/mips/truncate-1.c b/gcc/testsuite/gcc.target/mips/truncate-1.c
index 7e54aae3eba..d12ebd31116 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-1.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(ID, TYPE, SHIFT) \
int __attribute__((nomips16)) \
diff --git a/gcc/testsuite/gcc.target/mips/truncate-2.c b/gcc/testsuite/gcc.target/mips/truncate-2.c
index 423dc26f4da..06ab58f5a3a 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-2.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(ID, TYPE, SHIFT) \
int NOMIPS16 \
diff --git a/gcc/testsuite/gcc.target/mips/truncate-3.c b/gcc/testsuite/gcc.target/mips/truncate-3.c
index 90f2c772f83..fcb69e4b44f 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-3.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-3.c
@@ -1,5 +1,6 @@
/* Remove redundant operations in truncate's operand. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */
f (long long d)
diff --git a/gcc/testsuite/gcc.target/mips/truncate-4.c b/gcc/testsuite/gcc.target/mips/truncate-4.c
index 4c783681ab2..cda90e00cd7 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-4.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-4.c
@@ -1,5 +1,6 @@
/* The and is performed in DI mode so there is no need for truncation. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t" } } */
NOMIPS16 unsigned long long
diff --git a/gcc/testsuite/gcc.target/mips/truncate-5.c b/gcc/testsuite/gcc.target/mips/truncate-5.c
index 6cdb7f71e7f..f2a1875e959 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-5.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-5.c
@@ -1,6 +1,7 @@
/* If we AND in DI mode (i.e. replace the order of TRUNCATE and AND) then we
can remove the TRUNCATE. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t\[^\n\]*,0" } } */
struct s
diff --git a/gcc/testsuite/gcc.target/mips/truncate-6.c b/gcc/testsuite/gcc.target/mips/truncate-6.c
index 1ccd6c59c3d..178d4baa4cd 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-6.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-6.c
@@ -1,7 +1,8 @@
/* setup_incoming_promotions should detect x to be already sign-extended due
to PROMOTE_MODE. Thus the truncation should be removed by combine. Based
on gcc.c-torture/execute/pr34070-2.c. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t\[^\n\]*,0" } } */
NOMIPS16 int f(unsigned int x, int n, int *p)
diff --git a/gcc/testsuite/gcc.target/mips/unaligned-1.c b/gcc/testsuite/gcc.target/mips/unaligned-1.c
new file mode 100644
index 00000000000..938f52d21f2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/unaligned-1.c
@@ -0,0 +1,45 @@
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler-times "\tsdl\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tsdr\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tldl\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tldr\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tswl\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tswr\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tlwl\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tlwr\t" 1 } } */
+/* { dg-final { scan-assembler-not "\tnop" } } */
+
+/* Test to make sure we produce the unaligned load/store for
+ both 64bit and 32bits sized accesses. */
+
+struct s
+{
+ char c;
+ int i;
+ long long l;
+} __attribute__ ((packed)) s __attribute__((aligned(1) ));
+
+NOMIPS16 void
+sd (long long l)
+{
+ s.l = l;
+}
+
+NOMIPS16 long long
+ld ()
+{
+ return s.l;
+}
+
+NOMIPS16 void
+sw (int i)
+{
+ s.i = i;
+}
+
+NOMIPS16 int
+lw ()
+{
+ return s.i;
+}
diff --git a/gcc/testsuite/gcc.target/mips/vr-mult-1.c b/gcc/testsuite/gcc.target/mips/vr-mult-1.c
index 2ed4f2f9b06..db9ae3430ae 100644
--- a/gcc/testsuite/gcc.target/mips/vr-mult-1.c
+++ b/gcc/testsuite/gcc.target/mips/vr-mult-1.c
@@ -1,7 +1,8 @@
/* Make sure that mul/addu is preferred over mtlo/macc and that mul/subu
is preferred over mtlo/msac. */
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5400" } */
+/* { dg-options "-march=vr5400 -fpeephole2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f1 (int a, int b, int c) { return a + b * c; }
NOMIPS16 int f2 (int a, int b, int c) { return a - b * c; }
/* { dg-final { scan-assembler "\tmul\t.*\tmul\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/vr-mult-2.c b/gcc/testsuite/gcc.target/mips/vr-mult-2.c
index 7e8be5e4283..58bdc089339 100644
--- a/gcc/testsuite/gcc.target/mips/vr-mult-2.c
+++ b/gcc/testsuite/gcc.target/mips/vr-mult-2.c
@@ -1,7 +1,8 @@
/* Make sure that mul/addu is preferred over mtlo/macc and that mul/subu
is preferred over mtlo/msac. */
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500" } */
+/* { dg-options "-march=vr5500 -fpeephole2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f1 (int a, int b, int c) { return a + b * c; }
NOMIPS16 int f2 (int a, int b, int c) { return a - b * c; }
/* { dg-final { scan-assembler "\tmul\t.*\tmul\t" } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr54240.c b/gcc/testsuite/gcc.target/powerpc/pr54240.c
new file mode 100644
index 00000000000..3e67fd57819
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr54240.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -misel -fdump-tree-phiopt-details" } */
+
+typedef struct s {
+ int v;
+ int b;
+ struct s *l;
+ struct s *r;
+} S;
+
+
+int foo(S *s)
+{
+ S *this;
+ S *next;
+
+ this = s;
+ if (this->b)
+ next = this->l;
+ else
+ next = this->r;
+
+ return next->v;
+}
+
+/* { dg-final { scan-tree-dump "Hoisting adjacent loads" "phiopt1" } } */
+/* { dg-final { cleanup-tree-dump "phiopt1" } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/rs6000-power2-1.c b/gcc/testsuite/gcc.target/powerpc/rs6000-power2-1.c
deleted file mode 100644
index 375241ec658..00000000000
--- a/gcc/testsuite/gcc.target/powerpc/rs6000-power2-1.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* { dg-do compile { target { ilp32 } } } */
-/* { dg-options "-O3 -mcpu=power2 -fno-schedule-insns -w -mhard-float" } */
-/* This used to ICE as the peephole was not checking to see
- if the register is a floating point one (I think this cannot
- happen in real life except in this example). */
-
-register volatile double t1 __asm__("r14");
-register volatile double t2 __asm__("r15");
-register volatile double t3 __asm__("r16"), t4 __asm__("r17");
-void t(double *a, double *b)
-{
- t1 = a[-1];
- t2 = a[0];
- t3 = a[1];
- t4 = a[2];
- b[-1] = t1;
- b[0] = t2;
- b[1] = t3;
- b[2] = t4;
-}
-
diff --git a/gcc/testsuite/gcc.target/powerpc/rs6000-power2-2.c b/gcc/testsuite/gcc.target/powerpc/rs6000-power2-2.c
deleted file mode 100644
index 567ad8c9278..00000000000
--- a/gcc/testsuite/gcc.target/powerpc/rs6000-power2-2.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile { target { powerpc_fprs && ilp32 } } } */
-/* { dg-options "-O3 -mcpu=power2 -fno-schedule-insns -w" } */
-/* { dg-final { scan-assembler-not "lfd" } } */
-/* { dg-final { scan-assembler-not "sfd" } } */
-/* { dg-final { scan-assembler "lfq" } } */
-/* { dg-final { scan-assembler "stfq" } } */
-
-register volatile double t1 __asm__("fr0");
-register volatile double t2 __asm__("fr1");
-register volatile double t3 __asm__("fr2"), t4 __asm__("fr3");
-void t(double *a, double *b)
-{
- t1 = a[-1];
- t2 = a[0];
- t3 = a[1];
- t4 = a[2];
- b[-1] = t1;
- b[0] = t2;
- b[1] = t3;
- b[2] = t4;
-}
-
diff --git a/gcc/testsuite/gcc.target/sh/pr21255-3.c b/gcc/testsuite/gcc.target/sh/pr21255-3.c
index 7edd8cb7c1c..58d7849cf94 100644
--- a/gcc/testsuite/gcc.target/sh/pr21255-3.c
+++ b/gcc/testsuite/gcc.target/sh/pr21255-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m2e" "-m3e" "*single-only" } { "" } } */
/* { dg-final { scan-assembler "mov #?0,r.*; mov #?20,r" } } */
/* { dg-final { scan-assembler "mov #?1077149696,r.*; mov #?0,r" } } */
double
diff --git a/gcc/testsuite/gcc.target/sh/pr33135-1.c b/gcc/testsuite/gcc.target/sh/pr33135-1.c
new file mode 100644
index 00000000000..6c28e8c3b2b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr33135-1.c
@@ -0,0 +1,32 @@
+/* Check that fcmp/eq and fcmp/gt instructions are generated by default
+ (implicit -mieee). */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-times "fcmp/eq" 4 } } */
+/* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
+
+int
+test_00 (float a, float b)
+{
+ return a <= b;
+}
+
+int
+test_01 (float a, float b)
+{
+ return a >= b;
+}
+
+int
+test_02 (double a, double b)
+{
+ return a <= b;
+}
+
+int
+test_03 (double a, double b)
+{
+ return a >= b;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr33135-2.c b/gcc/testsuite/gcc.target/sh/pr33135-2.c
new file mode 100644
index 00000000000..37c4035deca
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr33135-2.c
@@ -0,0 +1,32 @@
+/* Check that only the fcmp/gt instruction is generated when specifying
+ -ffinite-math-only (implicit -mno-ieee). */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -ffinite-math-only" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "fcmp/eq" } } */
+/* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
+
+int
+test_00 (float a, float b)
+{
+ return a <= b;
+}
+
+int
+test_01 (float a, float b)
+{
+ return a >= b;
+}
+
+int
+test_02 (double a, double b)
+{
+ return a <= b;
+}
+
+int
+test_03 (double a, double b)
+{
+ return a >= b;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr33135-3.c b/gcc/testsuite/gcc.target/sh/pr33135-3.c
new file mode 100644
index 00000000000..cbda922e103
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr33135-3.c
@@ -0,0 +1,32 @@
+/* Check that fcmp/eq and fcmp/gt instructions are generated when specifying
+ -ffinite-math-only and -mieee. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -ffinite-math-only -mieee" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-times "fcmp/eq" 4 } } */
+/* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
+
+int
+test_00 (float a, float b)
+{
+ return a <= b;
+}
+
+int
+test_01 (float a, float b)
+{
+ return a >= b;
+}
+
+int
+test_02 (double a, double b)
+{
+ return a <= b;
+}
+
+int
+test_03 (double a, double b)
+{
+ return a >= b;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr33135-4.c b/gcc/testsuite/gcc.target/sh/pr33135-4.c
new file mode 100644
index 00000000000..3e4aa51cd9b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr33135-4.c
@@ -0,0 +1,32 @@
+/* Check that only the fcmp/gt instruction is generated when specifying
+ -fno-finite-math-only and -mno-ieee. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -fno-finite-math-only -mno-ieee" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "fcmp/eq" } } */
+/* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
+
+int
+test_00 (float a, float b)
+{
+ return a <= b;
+}
+
+int
+test_01 (float a, float b)
+{
+ return a >= b;
+}
+
+int
+test_02 (double a, double b)
+{
+ return a <= b;
+}
+
+int
+test_03 (double a, double b)
+{
+ return a >= b;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr39423-1.c b/gcc/testsuite/gcc.target/sh/pr39423-1.c
new file mode 100644
index 00000000000..dac0f89eea3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr39423-1.c
@@ -0,0 +1,48 @@
+/* Check that displacement addressing is used for indexed addresses with a
+ small offset, instead of re-calculating the index. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
+/* { dg-final { scan-assembler-not "add\t#1" } } */
+
+int
+test_00 (int tab[], int index)
+{
+ return tab[index + 1];
+}
+
+int
+test_01 (short tab[], int index)
+{
+ return tab[index + 1];
+}
+
+int
+test_02 (unsigned short tab[], int index)
+{
+ return tab[index + 1];
+}
+
+int
+test_03 (long long tab[], int index)
+{
+ return (int)tab[index + 1];
+}
+
+void
+test_04 (int tab[], int index, int val)
+{
+ tab[index + 1] = val;
+}
+
+void
+test_05 (short tab[], int index, int val)
+{
+ tab[index + 1] = (short)val;
+}
+
+void
+test_06 (unsigned short tab[], int index, int val)
+{
+ tab[index + 1] = (unsigned short)val;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr39423-2.c b/gcc/testsuite/gcc.target/sh/pr39423-2.c
new file mode 100644
index 00000000000..8e71505f21d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr39423-2.c
@@ -0,0 +1,14 @@
+/* Check that displacement addressing is used for indexed addresses with a
+ small offset, instead of re-calculating the index and that the movu.w
+ instruction is used on SH2A. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
+/* { dg-final { scan-assembler-not "add\t#1" } } */
+/* { dg-final { scan-assembler "movu.w" } } */
+
+int
+test_00 (unsigned short tab[], int index)
+{
+ return tab[index + 1];
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-1.c b/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-1.c
index 9408461f1a7..98b71b2bedf 100644
--- a/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-1.c
+++ b/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-1.c
@@ -1,7 +1,7 @@
/* PR target/50749: Verify that post-increment addressing is generated. */
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
/* { dg-final { scan-assembler-times "fmov.s\t@r\[0-9]\+\\+,fr\[0-9]\+" 1 } } */
float*
diff --git a/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-3.c b/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-3.c
index ebc96519126..27d13e8d378 100644
--- a/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-3.c
+++ b/gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-3.c
@@ -2,7 +2,7 @@
inside a loop. */
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
/* { dg-final { scan-assembler-times "fmov.s\t@r\[0-9]\+\\+,fr\[0-9]\+" 1 } } */
float
diff --git a/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-1.c b/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-1.c
index bd4e2cb9fbb..d7d129a7cec 100644
--- a/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-1.c
+++ b/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-1.c
@@ -1,7 +1,7 @@
/* PR target/50749: Verify that pre-decrement addressing is generated. */
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
/* { dg-final { scan-assembler-times "fmov.s\tfr\[0-9]\+,@-r\[0-9]\+" 1 } } */
float*
diff --git a/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-3.c b/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-3.c
index d1996a24314..b3023b7a85b 100644
--- a/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-3.c
+++ b/gcc/testsuite/gcc.target/sh/pr50749-sf-predec-3.c
@@ -2,7 +2,7 @@
inside a loop. */
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
/* { dg-final { scan-assembler-times "fmov.s\tfr\[0-9]\+,@-r\[0-9]\+" 1 } } */
float*
diff --git a/gcc/testsuite/gcc.target/sh/pr50751-8.c b/gcc/testsuite/gcc.target/sh/pr50751-8.c
new file mode 100644
index 00000000000..bced631a17e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr50751-8.c
@@ -0,0 +1,100 @@
+/* Check that on SH2A the 4 byte movu.b and movu.w displacement insns are
+ generated. This has to be checked with -O2 because some of the patterns
+ rely on peepholes. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
+/* { dg-final { scan-assembler-times "movu.b" 4 } } */
+/* { dg-final { scan-assembler-times "movu.w" 3 } } */
+
+int
+test_00 (unsigned char* x)
+{
+ /* 1x movu.b */
+ return x[0];
+}
+
+int
+test_01 (unsigned short* x)
+{
+ /* 1x movu.w */
+ return x[0];
+}
+
+int
+test_02 (unsigned char* x)
+{
+ /* 1x movu.b */
+ return x[1];
+}
+
+int
+test_03 (unsigned char* x)
+{
+ /* 1x movu.b */
+ return x[32];
+}
+
+int
+test_04 (unsigned char* x)
+{
+ /* 1x movu.b */
+ return x[9000];
+}
+
+int
+test_05 (unsigned short* x)
+{
+ /* 1x movu.w */
+ return x[9000];
+}
+
+int
+test_06 (unsigned char* x, int i)
+{
+ /* No movu.b expected here. Should use mov.b (r0,r4) + extu.b instead. */
+ return x[i];
+}
+
+int
+test_07 (unsigned short* x, int i)
+{
+ /* No movu.w expected here. Should use mov.w (r0,r4) + extu.w instead. */
+ return x[i];
+}
+
+int
+test_08 (unsigned char* x, int c)
+{
+ /* No movu.b expected here. Should use post-inc addressing instead. */
+ int s = 0;
+ int i;
+ for (i = 0; i < c; ++i)
+ s += x[i];
+ return s;
+}
+
+void
+test_09 (unsigned char* x, unsigned char* y)
+{
+ /* No movu.b expected here, since the zero-extension is irrelevant. */
+ x[1] = y[1];
+ x[2] = y[2];
+}
+
+void
+test_10 (unsigned char* x, unsigned short* y)
+{
+ /* No movu.w expected here, since the zero-extension is irrelevant. */
+ x[1] = y[1];
+ x[2] = y[2];
+}
+
+int
+test_11 (unsigned char* x, unsigned short* y)
+{
+ /* 1x movu.w */
+ int yy = y[1];
+ x[1] = yy;
+ return yy;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-1.c b/gcc/testsuite/gcc.target/sh/pr51244-1.c
index 34e1b023326..601c1c1c269 100644
--- a/gcc/testsuite/gcc.target/sh/pr51244-1.c
+++ b/gcc/testsuite/gcc.target/sh/pr51244-1.c
@@ -4,7 +4,7 @@
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O1 -mbranch-cost=2" } */
/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
-/* { dg-final { scan-assembler-not "tst|negc|extu" } } */
+/* { dg-final { scan-assembler-not "movt|tst|negc|extu" } } */
int
testfunc_00 (int a, int b, int c, int d)
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-10.c b/gcc/testsuite/gcc.target/sh/pr51244-10.c
new file mode 100644
index 00000000000..20f052eedda
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-10.c
@@ -0,0 +1,27 @@
+/* Check that compare-branch is inverted properly.
+ In this case the improved bit test is a side effect of compare-branch
+ inversion patterns, even though the branch condition does not get
+ inverted here.
+ Example:
+ mov.b @(14,r9),r0 -> mov.b @(14,r9),r0
+ shll r0 cmp/pz r0
+ subc r0,r0 bt .L192
+ and #1,r0
+ tst r0,r0
+ bt .L195
+*/
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "shll|subc|and" } } */
+int
+test_00 (int* p)
+{
+ int nr = 15;
+ volatile char* addr = (volatile char*)&p[1];
+
+ if ((addr[(nr >> 3) ^ 7] & (1 << (nr & 7))) == 0)
+ return 40;
+ else
+ return 50;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-11.c b/gcc/testsuite/gcc.target/sh/pr51244-11.c
new file mode 100644
index 00000000000..4a9c93c932c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-11.c
@@ -0,0 +1,24 @@
+/* Check that zero-displacement branches are used instead of branch-free
+ execution patterns. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -mzdcbranch" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "subc|and" } } */
+
+int*
+test_00 (int* s)
+{
+ if (s[0] == 0)
+ if (!s[3])
+ s = 0;
+ return s;
+}
+
+int*
+test_01 (int* s)
+{
+ if (s[0] == 0)
+ if (s[3])
+ s = 0;
+ return s;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-4.c b/gcc/testsuite/gcc.target/sh/pr51244-4.c
new file mode 100644
index 00000000000..f3073780aea
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-4.c
@@ -0,0 +1,19 @@
+/* Check that storing the (negated) T bit as all ones or zeros in a reg
+ uses the subc instruction. On SH2A a sequence with the movrt instruction
+ is also OK instead of subc. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -mbranch-cost=2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
+/* { dg-final { scan-assembler-not "movt|tst|negc" } } */
+/* { dg-final { scan-assembler "subc|movrt|neg|not" } } */
+
+int test_00 (int x, int y)
+{
+ return x != y ? -1 : 0;
+}
+
+int test_01 (int x, int y)
+{
+ return x == y ? -1 : 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-5.c b/gcc/testsuite/gcc.target/sh/pr51244-5.c
new file mode 100644
index 00000000000..a99889df3c0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-5.c
@@ -0,0 +1,50 @@
+/* Check that no unnecessary sign or zero extension insn is generated after
+ a negc or movrt insn that stores the inverted T bit in a reg. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "extu|exts" } } */
+
+int
+test_00 (int a, int b, int* c, short* d, int x)
+{
+ *d = x != 0;
+ *c = -1;
+
+ if (x != 0)
+ return a > 0;
+
+ return 0;
+}
+
+unsigned char
+test_01 (int x)
+{
+ if (x < 58 && x > 47)
+ return 1;
+ return 0;
+}
+
+char
+test_02 (int x)
+{
+ if (x < 58 && x > 47)
+ return 1;
+ return 0;
+}
+
+unsigned short
+test_03 (int x)
+{
+ if (x < 58 && x > 47)
+ return 1;
+ return 0;
+}
+
+short
+test_04 (int x)
+{
+ if (x < 58 && x > 47)
+ return 1;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-6.c b/gcc/testsuite/gcc.target/sh/pr51244-6.c
new file mode 100644
index 00000000000..cfd466197d9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-6.c
@@ -0,0 +1,15 @@
+/* Check that no unnecessary sign or zero extension insn is generated after
+ a negc or movrt insn that stores the inverted T bit in a reg. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "extu|exts" } } */
+
+float
+test_00 (float q[4], float m[9])
+{
+ float s0 = m[0] + m[1];
+ float s1 = m[0] - m[1];
+
+ return q[s0 > s1 ? 0 : 1];
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-7.c b/gcc/testsuite/gcc.target/sh/pr51244-7.c
new file mode 100644
index 00000000000..e7e3ac1385c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-7.c
@@ -0,0 +1,26 @@
+/* Check that compare-branch is inverted properly.
+ Example:
+ clrt -> clrt
+ subc r0,r6 subc r0,r6
+ mov r3,r7 mov r3,r7
+ subc r1,r7 subc r1,r7
+ mov #0,r1 tst r7,r7
+ cmp/hi r1,r7 bf .L111
+ bt .L111 bra .L197
+ bra .L197
+ nop
+*/
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "cmp/hi" } } */
+/* { dg-final { scan-assembler-not "mov\t#0" } } */
+
+int other_func (long long);
+int
+test_00 (unsigned long long a, unsigned long long b)
+{
+ if ((a - b) > 0xFFFFFFFFLL)
+ return other_func (a - b);
+ return 20;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-8.c b/gcc/testsuite/gcc.target/sh/pr51244-8.c
new file mode 100644
index 00000000000..9d95ae3f87a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-8.c
@@ -0,0 +1,27 @@
+/* Check that compare-branch is inverted properly.
+ Example:
+ mov #1,r0 -> tst r8,r8
+ neg r8,r1 bt .L47
+ shad r1,r0
+ tst #1,r0
+ bf .L47
+*/
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "shad|neg" } } */
+
+int test_01_00 (int*, void*);
+int
+test_01 (int* m, void* v)
+{
+ unsigned long n = (unsigned long)v - 1;
+
+ if (!n)
+ return 50;
+
+ if (1 & (1 << n)) /* if n == 0: 1 & (1 << 0) -> true */
+ return 60;
+ else /* if n != 0: 1 & (1 << n) -> false */
+ return -8;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-9.c b/gcc/testsuite/gcc.target/sh/pr51244-9.c
new file mode 100644
index 00000000000..13639bdc87d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51244-9.c
@@ -0,0 +1,35 @@
+/* Check that compare-branch is inverted properly.
+ Example:
+ mov.w .L566,r2 -> mov.w .L566,r2
+ add r11,r2 add r11,r2
+ mov.l @(12,r2),r7 mov.l @(8,r2),r5
+ mov.l @(8,r2),r5 mov.l @(12,r2),r2
+ mov #0,r2 tst r2,r2
+ cmp/hi r2,r7 bt .L534
+ bf .L534
+*/
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "mov\t#0" } } */
+static inline unsigned int
+test_03_00 (unsigned int x)
+{
+ /* Return unassigned value on purpose. */
+ unsigned int res;
+ return res;
+}
+
+struct S
+{
+ unsigned int a;
+ unsigned int b;
+};
+
+int test_03 (struct S* i)
+{
+ if ((i->a != 2 && i->a != 3) || i->a > test_03_00 (i->b))
+ return -5;
+
+ return -55;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr52933-1.c b/gcc/testsuite/gcc.target/sh/pr52933-1.c
new file mode 100644
index 00000000000..037f916f34f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr52933-1.c
@@ -0,0 +1,168 @@
+/* Check that the div0s instruction is used for integer sign comparisons.
+ Each test case is expected to emit at least one div0s insn.
+ Problems when combining the div0s comparison result with surrounding
+ logic usually show up as redundant tst insns. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-times "div0s" 25 } } */
+/* { dg-final { scan-assembler-not "tst" } } */
+
+typedef unsigned char bool;
+
+int other_func_a (int, int);
+int other_func_b (int, int);
+
+bool
+test_00 (int a, int b)
+{
+ return (a ^ b) >= 0;
+}
+
+bool
+test_01 (int a, int b)
+{
+ return (a ^ b) < 0;
+}
+
+int
+test_02 (int a, int b, int c, int d)
+{
+ if ((a ^ b) < 0)
+ return other_func_a (a, c);
+ else
+ return other_func_b (d, b);
+}
+
+int
+test_03 (int a, int b, int c, int d)
+{
+ if ((a ^ b) >= 0)
+ return other_func_a (a, c);
+ else
+ return other_func_b (d, b);
+}
+
+int
+test_04 (int a, int b)
+{
+ return (a ^ b) >= 0 ? -20 : -40;
+}
+
+bool
+test_05 (int a, int b)
+{
+ return (a ^ b) < 0;
+}
+
+int
+test_06 (int a, int b)
+{
+ return (a ^ b) < 0 ? -20 : -40;
+}
+
+bool
+test_07 (int a, int b)
+{
+ return (a < 0) == (b < 0);
+}
+
+int
+test_08 (int a, int b)
+{
+ return (a < 0) == (b < 0) ? -20 : -40;
+}
+
+bool
+test_09 (int a, int b)
+{
+ return (a < 0) != (b < 0);
+}
+
+int
+test_10 (int a, int b)
+{
+ return (a < 0) != (b < 0) ? -20 : -40;
+}
+
+bool
+test_11 (int a, int b)
+{
+ return (a >= 0) ^ (b < 0);
+}
+
+int
+test_12 (int a, int b)
+{
+ return (a >= 0) ^ (b < 0) ? -20 : -40;
+}
+
+bool
+test_13 (int a, int b)
+{
+ return !((a >= 0) ^ (b < 0));
+}
+
+int
+test_14 (int a, int b)
+{
+ return !((a >= 0) ^ (b < 0)) ? -20 : -40;
+}
+
+bool
+test_15 (int a, int b)
+{
+ return (a & 0x80000000) == (b & 0x80000000);
+}
+
+int
+test_16 (int a, int b)
+{
+ return (a & 0x80000000) == (b & 0x80000000) ? -20 : -40;
+}
+
+bool
+test_17 (int a, int b)
+{
+ return (a & 0x80000000) != (b & 0x80000000);
+}
+
+int
+test_18 (int a, int b)
+{
+ return (a & 0x80000000) != (b & 0x80000000) ? -20 : -40;
+}
+
+int
+test_19 (unsigned int a, unsigned int b)
+{
+ return (a ^ b) >> 31;
+}
+
+int
+test_20 (unsigned int a, unsigned int b)
+{
+ return (a >> 31) ^ (b >> 31);
+}
+
+int
+test_21 (int a, int b)
+{
+ return ((a & 0x80000000) ^ (b & 0x80000000)) >> 31 ? -30 : -10;
+}
+
+int
+test_22 (int a, int b, int c, int d)
+{
+ if ((a < 0) == (b < 0))
+ return other_func_a (a, b);
+ else
+ return other_func_b (c, d);
+}
+
+bool
+test_23 (int a, int b, int c, int d)
+{
+ /* Should emit 2x div0s. */
+ return ((a < 0) == (b < 0)) | ((c < 0) == (d < 0));
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr52933-2.c b/gcc/testsuite/gcc.target/sh/pr52933-2.c
new file mode 100644
index 00000000000..b0e650bf0a5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr52933-2.c
@@ -0,0 +1,12 @@
+/* Check that the div0s instruction is used for integer sign comparisons
+ when -mpretend-cmove is enabled.
+ Each test case is expected to emit at least one div0s insn.
+ Problems when combining the div0s comparison result with surrounding
+ logic usually show up as redundant tst insns. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2 -mpretend-cmove" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-times "div0s" 25 } } */
+/* { dg-final { scan-assembler-not "tst" } } */
+
+#include "pr52933-1.c"
diff --git a/gcc/testsuite/gcc.target/sh/pr53511-1.c b/gcc/testsuite/gcc.target/sh/pr53511-1.c
index cf60c9ed5f6..5295d95f40f 100644
--- a/gcc/testsuite/gcc.target/sh/pr53511-1.c
+++ b/gcc/testsuite/gcc.target/sh/pr53511-1.c
@@ -1,7 +1,7 @@
/* Verify that the fmac insn is used for the standard fmaf function. */
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
/* { dg-final { scan-assembler "fmac" } } */
#include <math.h>
diff --git a/gcc/testsuite/gcc.target/sh/pr53512-1.c b/gcc/testsuite/gcc.target/sh/pr53512-1.c
index b46db65e78a..0813d595921 100644
--- a/gcc/testsuite/gcc.target/sh/pr53512-1.c
+++ b/gcc/testsuite/gcc.target/sh/pr53512-1.c
@@ -2,7 +2,7 @@
-funsafe-math-optimizations. */
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O1 -mfsca -funsafe-math-optimizations" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m3*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
/* { dg-final { scan-assembler-times "fsca" 3 } } */
#include <math.h>
diff --git a/gcc/testsuite/gcc.target/sh/pr53512-3.c b/gcc/testsuite/gcc.target/sh/pr53512-3.c
index b8e6ada9fb5..21801bb6df7 100644
--- a/gcc/testsuite/gcc.target/sh/pr53512-3.c
+++ b/gcc/testsuite/gcc.target/sh/pr53512-3.c
@@ -2,7 +2,7 @@
-funsafe-math-optimizations and -ffinite-math-only. */
/* { dg-do compile { target "sh*-*-*" } } */
/* { dg-options "-O1 -mfsrra -funsafe-math-optimizations -ffinite-math-only" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m3*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
/* { dg-final { scan-assembler "fsrra" } } */
#include <math.h>
diff --git a/gcc/testsuite/gcc.target/sh/pr53568-1.c b/gcc/testsuite/gcc.target/sh/pr53568-1.c
new file mode 100644
index 00000000000..22f836ef892
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr53568-1.c
@@ -0,0 +1,82 @@
+/* Check that the bswap32 pattern is generated as swap.b and swap.w
+ instructions. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
+/* { dg-final { scan-assembler-times "swap.w" 7 } } */
+/* { dg-final { scan-assembler-times "swap.b" 16 } } */
+/* { dg-final { scan-assembler-times "extu.w" 2 } } */
+/* { dg-final { scan-assembler-times "mov" 1 } } */
+/* { dg-final { scan-assembler-not "{shll8|shlr8|shld|shad}" } } */
+
+int
+test_func_00 (int a)
+{
+ /* 1x swap.w
+ 2x swap.b */
+ return __builtin_bswap32 (a);
+}
+
+unsigned int
+test_func_01 (unsigned int a)
+{
+ /* 1x swap.w
+ 2x swap.b */
+ return __builtin_bswap32 (a);
+}
+
+int
+test_func_02 (int a)
+{
+ /* 1x swap.w
+ 2x swap.b */
+ return (((a >> 0) & 0xFF) << 24)
+ | (((a >> 8) & 0xFF) << 16)
+ | (((a >> 16) & 0xFF) << 8)
+ | (((a >> 24) & 0xFF) << 0);
+}
+
+unsigned int
+test_func_03 (unsigned int a)
+{
+ /* 1x swap.w
+ 2x swap.b */
+ return (((a >> 0) & 0xFF) << 24)
+ | (((a >> 8) & 0xFF) << 16)
+ | (((a >> 16) & 0xFF) << 8)
+ | (((a >> 24) & 0xFF) << 0);
+}
+
+int
+test_func_04 (int a)
+{
+ /* 1x swap.b
+ 1x extu.w */
+ return __builtin_bswap32 (a) >> 16;
+}
+
+unsigned short
+test_func_05 (unsigned short a)
+{
+ /* 1x swap.b
+ 1x extu.w */
+ return __builtin_bswap32 (a) >> 16;
+}
+
+long long
+test_func_06 (long long a)
+{
+ /* 2x swap.w
+ 4x swap.b */
+ return __builtin_bswap64 (a);
+}
+
+long long
+test_func_07 (long long a)
+{
+ /* 1x swap.w
+ 2x swap.b
+ 1x mov #0,Rn */
+ return __builtin_bswap64 (a) >> 32;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr54089-1.c b/gcc/testsuite/gcc.target/sh/pr54089-1.c
new file mode 100644
index 00000000000..2101c53585a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr54089-1.c
@@ -0,0 +1,83 @@
+/* Check that the rotcr instruction is generated. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
+/* { dg-final { scan-assembler-times "rotcr" 11 } } */
+
+typedef char bool;
+
+long long
+test_00 (long long a)
+{
+ return a >> 1;
+}
+
+unsigned int
+test_01 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 1) | (r << 31));
+}
+
+unsigned int
+test_02 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 2) | (r << 31));
+}
+
+unsigned int
+test_03 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 3) | (r << 31));
+}
+
+unsigned int
+test_04 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 4) | (r << 31));
+}
+
+unsigned int
+test_05 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 5) | (r << 31));
+}
+
+unsigned int
+test_06 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 6) | (r << 31));
+}
+
+unsigned int
+test_07 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 7) | (r << 31));
+}
+
+unsigned int
+test_08 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 8) | (r << 31));
+}
+
+unsigned int
+test_09 (unsigned int a, int b, int c)
+{
+ bool r = b == c;
+ return ((a >> 31) | (r << 31));
+}
+
+int
+test_10 (int a, int b)
+{
+ bool r = a == b;
+ return r << 31;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr54089-2.c b/gcc/testsuite/gcc.target/sh/pr54089-2.c
new file mode 100644
index 00000000000..61b703d4dfe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr54089-2.c
@@ -0,0 +1,22 @@
+/* Check that for dynamic logical right shifts with a constant the negated
+ constant is loaded directly, instead of loading the postitive constant
+ and negating it separately. This was a case that happened at optimization
+ level -O2 and looked like:
+ cmp/eq r6,r5
+ mov #30,r1
+ neg r1,r1
+ shld r1,r4
+ mov r4,r0
+ rts
+ rotcr r0 */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O2" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "*"} { "-m3* -m2a* -m4*" } } */
+/* { dg-final { scan-assembler-not "neg" } } */
+
+unsigned int
+test (unsigned int a, int b, int c)
+{
+ unsigned char r = b == c;
+ return ((a >> 31) | (r << 31));
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr54236-1.c b/gcc/testsuite/gcc.target/sh/pr54236-1.c
new file mode 100644
index 00000000000..3a7453c0d74
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr54236-1.c
@@ -0,0 +1,76 @@
+/* Tests to check the utilization of addc, subc and negc instructions in
+ special cases. If everything works as expected we won't see any
+ movt instructions in these cases. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
+/* { dg-final { scan-assembler-times "addc" 3 } } */
+/* { dg-final { scan-assembler-times "subc" 3 } } */
+/* { dg-final { scan-assembler-times "sett" 4 } } */
+/* { dg-final { scan-assembler-times "negc" 1 } } */
+/* { dg-final { scan-assembler-not "movt" } } */
+
+int
+test_00 (int a, int b, int c, int d)
+{
+ /* 1x addc, 1x sett */
+ return a + b + 1;
+}
+
+int
+test_01 (int a, int b, int c, int d)
+{
+ /* 1x addc */
+ return a + (c == d);
+}
+
+int
+test_02 (int a, int b, int c, int d)
+{
+ /* 1x subc, 1x sett */
+ return a - b - 1;
+}
+
+int
+test_03 (int a, int b, int c, int d)
+{
+ /* 1x subc */
+ return a - (c == d);
+}
+
+int
+test_04 (int a, int b, int c, int d)
+{
+ /* 1x addc, 1x sett */
+ return a + b + c + 1;
+}
+
+int
+test_05 (int a, int b, int c, int d)
+{
+ /* 1x subc, 1x sett */
+ return a - b - c - 1;
+}
+
+int
+test_06 (int a, int b, int c, int d)
+{
+ /* 1x negc */
+ return 0 - a - (b == c);
+}
+
+int
+test_07 (int *vec)
+{
+ /* Must not see a 'sett' or 'addc' here.
+ This is a case where combine tries to produce
+ 'a + (0 - b) + 1' out of 'a - b + 1'. */
+ int z = vec[0];
+ int vi = vec[1];
+ int zi = vec[2];
+
+ if (zi != 0 && z < -1)
+ vi -= (((vi >> 7) & 0x01) << 1) - 1;
+
+ return vi;
+}
diff --git a/gcc/testsuite/gcc.target/sh/prefetch.c b/gcc/testsuite/gcc.target/sh/prefetch.c
index b34b115d6b8..e0873737453 100644
--- a/gcc/testsuite/gcc.target/sh/prefetch.c
+++ b/gcc/testsuite/gcc.target/sh/prefetch.c
@@ -2,7 +2,7 @@
instruction PREF @Rm. */
/* { dg-do assemble {target sh*-*-*}} */
/* { dg-options "-O0" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" "-m4*" } } */
+/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" "-m3*" "-m4*" } } */
/* { dg-final { scan-assembler "pref"} } */
void
diff --git a/gcc/testsuite/gfortran.dg/abstract_type_6.f03 b/gcc/testsuite/gfortran.dg/abstract_type_6.f03
index e4abd793288..5eefcb83617 100644
--- a/gcc/testsuite/gfortran.dg/abstract_type_6.f03
+++ b/gcc/testsuite/gfortran.dg/abstract_type_6.f03
@@ -10,7 +10,7 @@
module m
TYPE, ABSTRACT :: top
CONTAINS
- PROCEDURE(xxx), DEFERRED :: proc_a ! { dg-error "must be a module procedure" }
+ PROCEDURE(xxx), DEFERRED :: proc_a ! { dg-error "must be explicit" }
! some useful default behaviour
PROCEDURE :: proc_c => top_c ! { dg-error "must be a module procedure" }
END TYPE top
diff --git a/gcc/testsuite/gfortran.dg/array_5.f90 b/gcc/testsuite/gfortran.dg/array_5.f90
new file mode 100644
index 00000000000..82ab243a6b1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/array_5.f90
@@ -0,0 +1,24 @@
+! { dg-do compile }
+!
+! PR fortran/54166
+! There was an ICE while chosing the bounds to scalarize the FAIL line.
+!
+! Contributed by Koen Poppe <koen.poppe@cs.kuleuven.be>
+!
+
+module ds_routines
+contains
+ subroutine dsget(vertic,rstore)
+ real, dimension(:), intent(in out) :: rstore
+ real, dimension(:,:), intent(out) :: vertic
+ integer :: nrvert,point
+ nrvert = 4
+ point = 26
+ vertic(1,1:nrvert) = rstore(point+1:point+nrvert) ! FAIL
+ end subroutine dsget
+end module ds_routines
+
+program ds_routines_program
+ use ds_routines
+ print *, "ok"
+end program ds_routines_program
diff --git a/gcc/testsuite/gfortran.dg/array_constructor_38.f90 b/gcc/testsuite/gfortran.dg/array_constructor_38.f90
new file mode 100644
index 00000000000..961e5803206
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/array_constructor_38.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }
+!
+! PR fortran/44354
+! array constructors were giving unexpected results when the ac-implied-do
+! variable was used in one of the ac-implied-do bounds.
+!
+! Original testcase by Vittorio Zecca <zeccav@gmail.com>
+!
+ I=5
+ print *,(/(i,i=I,8)/) ! { dg-error "initial expression references control variable" }
+ print *,(/(i,i=1,I)/) ! { dg-error "final expression references control variable" }
+ print *,(/(i,i=1,50,I)/) ! { dg-error "step expression references control variable" }
+ end
+
+
diff --git a/gcc/testsuite/gfortran.dg/array_constructor_39.f90 b/gcc/testsuite/gfortran.dg/array_constructor_39.f90
new file mode 100644
index 00000000000..83eff05ddca
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/array_constructor_39.f90
@@ -0,0 +1,13 @@
+! { dg-do run }
+!
+! PR fortran/44354
+! array constructors were giving unexpected results when the ac-implied-do
+! variable was used in one of the ac-implied-do bounds.
+!
+! Original testcase by Vittorio Zecca <zeccav@gmail.com>
+!
+ I=5
+ if (any((/(i,i=1,I)/) /= (/1,2,3,4,5/))) call abort ! { dg-warning "final expression references control variable" }
+ if (I /= 5) call abort
+ end
+
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_1.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_1.f90
new file mode 100644
index 00000000000..44e278c37f6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_1.f90
@@ -0,0 +1,145 @@
+! { dg-do run }
+! { dg-additional-sources assumed_rank_1_c.c }
+!
+! PR fortran/48820
+!
+! Assumed-rank tests
+!
+
+implicit none
+
+interface
+ subroutine check_value(b, n, val)
+ integer :: b(..)
+ integer, value :: n
+ integer :: val(n)
+ end subroutine
+end interface
+
+integer, target :: x(2:5,4:7), y(-4:4)
+integer, allocatable, target :: z(:,:,:,:)
+integer, allocatable :: val(:)
+integer :: i
+
+allocate(z(1:4, -2:5, 4, 10:11))
+
+if (rank(x) /= 2) call abort ()
+val = [(2*i+3, i = 1, size(x))]
+x = reshape (val, shape(x))
+call foo(x, rank(x), lbound(x), ubound(x), val)
+call foo2(x, rank(x), lbound(x), ubound(x), val)
+call bar(x,x,.true.)
+call bar(x,prsnt=.false.)
+
+if (rank(y) /= 1) call abort ()
+val = [(2*i+7, i = 1, size(y))]
+y = reshape (val, shape(y))
+call foo(y, rank(y), lbound(y), ubound(y), val)
+call foo2(y, rank(y), lbound(y), ubound(y), val)
+call bar(y,y,.true.)
+call bar(y,prsnt=.false.)
+
+if (rank(z) /= 4) call abort ()
+val = [(2*i+5, i = 1, size(z))]
+z(:,:,:,:) = reshape (val, shape(z))
+call foo(z, rank(z), lbound(z), ubound(z), val)
+call foo(z, rank(z), lbound(z), ubound(z), val)
+call foo2(z, rank(z), lbound(z), ubound(z), val)
+call bar(z,z,.true.)
+call bar(z,prsnt=.false.)
+
+contains
+ subroutine bar(a,b, prsnt)
+ integer, pointer, optional, intent(in) :: a(..),b(..)
+ logical, value :: prsnt
+ ! The following is not valid, but it goes past the constraint check
+ ! Technically, it could be allowed and might be in Fortran 2015:
+ if (.not. associated(a)) call abort()
+ if (present(b)) then
+ if (.not. associated(a,b)) call abort()
+ else
+ if (.not. associated(a)) call abort()
+ end if
+ if (.not. present(a)) call abort()
+ if (prsnt .neqv. present(b)) call abort()
+ end subroutine
+
+ ! POINTER argument - bounds as specified before
+ subroutine foo(a, rnk, low, high, val)
+ integer,pointer, intent(in) :: a(..)
+ integer, value :: rnk
+ integer, intent(in) :: low(:), high(:), val(:)
+ integer :: i
+
+
+
+ if (rank(a) /= rnk) call abort()
+ if (size(low) /= rnk .or. size(high) /= rnk) call abort()
+ if (size(a) /= product (high - low +1)) call abort()
+
+ if (rnk > 0) then
+ if (low(1) /= lbound(a,1)) call abort()
+ if (high(1) /= ubound(a,1)) call abort()
+ if (size (a,1) /= high(1)-low(1)+1) call abort()
+ end if
+
+ do i = 1, rnk
+ if (low(i) /= lbound(a,i)) call abort()
+ if (high(i) /= ubound(a,i)) call abort()
+ if (size (a,i) /= high(i)-low(i)+1) call abort()
+ end do
+ call check_value (a, rnk, val)
+ call foo2(a, rnk, low, high, val)
+ end subroutine
+
+ ! Non-pointer, non-allocatable bounds. lbound == 1
+ subroutine foo2(a, rnk, low, high, val)
+ integer, intent(in) :: a(..)
+ integer, value :: rnk
+ integer, intent(in) :: low(:), high(:), val(:)
+ integer :: i
+
+ if (rank(a) /= rnk) call abort()
+ if (size(low) /= rnk .or. size(high) /= rnk) call abort()
+ if (size(a) /= product (high - low +1)) call abort()
+
+ if (rnk > 0) then
+ if (1 /= lbound(a,1)) call abort()
+ if (high(1)-low(1)+1 /= ubound(a,1)) call abort()
+ if (size (a,1) /= high(1)-low(1)+1) call abort()
+ end if
+
+ do i = 1, rnk
+ if (1 /= lbound(a,i)) call abort()
+ if (high(i)-low(i)+1 /= ubound(a,i)) call abort()
+ if (size (a,i) /= high(i)-low(i)+1) call abort()
+ end do
+ call check_value (a, rnk, val)
+ end subroutine foo2
+
+ ! ALLOCATABLE argument - bounds as specified before
+ subroutine foo3 (a, rnk, low, high, val)
+ integer, allocatable, intent(in), target :: a(..)
+ integer, value :: rnk
+ integer, intent(in) :: low(:), high(:), val(:)
+ integer :: i
+
+ if (rank(a) /= rnk) call abort()
+ if (size(low) /= rnk .or. size(high) /= rnk) call abort()
+ if (size(a) /= product (high - low +1)) call abort()
+
+ if (rnk > 0) then
+ if (low(1) /= lbound(a,1)) call abort()
+ if (high(1) /= ubound(a,1)) call abort()
+ if (size (a,1) /= high(1)-low(1)+1) call abort()
+ end if
+
+ do i = 1, rnk
+ if (low(i) /= lbound(a,i)) call abort()
+ if (high(i) /= ubound(a,i)) call abort()
+ if (size (a,i) /= high(i)-low(i)+1) call abort()
+ end do
+ call check_value (a, rnk, val)
+ call foo(a, rnk, low, high, val)
+ end subroutine
+end
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_10.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_10.f90
new file mode 100644
index 00000000000..ac282839494
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_10.f90
@@ -0,0 +1,106 @@
+! { dg-do run }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/48820
+!
+! Ensure that the value of scalars to assumed-rank arrays is
+! copied back, if and only its pointer address could have changed.
+!
+program test
+ implicit none
+ type t
+ integer :: aa
+ end type t
+
+ integer, allocatable :: iia
+ integer, pointer :: iip
+
+ type(t), allocatable :: jja
+ type(t), pointer :: jjp
+
+ logical :: is_present
+
+ is_present = .true.
+
+ allocate (iip, jjp)
+
+ iia = 7
+ iip = 7
+ jja = t(88)
+ jjp = t(88)
+
+ call faa(iia, jja) ! Copy back
+ if (iia /= 7 .and. jja%aa /= 88) call abort ()
+ call fai(iia, jja) ! No copy back
+ if (iia /= 7 .and. jja%aa /= 88) call abort ()
+
+ call fpa(iip, jjp) ! Copy back
+ if (iip /= 7 .and. jjp%aa /= 88) call abort ()
+ call fpi(iip, jjp) ! No copy back
+ if (iip /= 7 .and. jjp%aa /= 88) call abort ()
+
+ call fnn(iia, jja) ! No copy back
+ if (iia /= 7 .and. jja%aa /= 88) call abort ()
+ call fno(iia, jja) ! No copy back
+ if (iia /= 7 .and. jja%aa /= 88) call abort ()
+ call fnn(iip, jjp) ! No copy back
+ if (iip /= 7 .and. jjp%aa /= 88) call abort ()
+ call fno(iip, jjp) ! No copy back
+ if (iip /= 7 .and. jjp%aa /= 88) call abort ()
+
+ is_present = .false.
+
+ call fpa(null(), null()) ! No copy back
+ call fpi(null(), null()) ! No copy back
+ call fno(null(), null()) ! No copy back
+
+ call fno() ! No copy back
+
+contains
+
+ subroutine faa (xx1, yy1)
+ integer, allocatable :: xx1(..)
+ type(t), allocatable :: yy1(..)
+ if (.not. allocated (xx1)) call abort ()
+ if (.not. allocated (yy1)) call abort ()
+ end subroutine faa
+ subroutine fai (xx1, yy1)
+ integer, allocatable, intent(in) :: xx1(..)
+ type(t), allocatable, intent(in) :: yy1(..)
+ if (.not. allocated (xx1)) call abort ()
+ if (.not. allocated (yy1)) call abort ()
+ end subroutine fai
+ subroutine fpa (xx1, yy1)
+ integer, pointer :: xx1(..)
+ type(t), pointer :: yy1(..)
+ if (is_present .neqv. associated (xx1)) call abort ()
+ if (is_present .neqv. associated (yy1)) call abort ()
+ end subroutine fpa
+
+ subroutine fpi (xx1, yy1)
+ integer, pointer, intent(in) :: xx1(..)
+ type(t), pointer, intent(in) :: yy1(..)
+ if (is_present .neqv. associated (xx1)) call abort ()
+ if (is_present .neqv. associated (yy1)) call abort ()
+ end subroutine fpi
+
+ subroutine fnn(xx2,yy2)
+ integer :: xx2(..)
+ type(t) :: yy2(..)
+ end subroutine fnn
+
+ subroutine fno(xx2,yy2)
+ integer, optional :: xx2(..)
+ type(t), optional :: yy2(..)
+ if (is_present .neqv. present (xx2)) call abort ()
+ if (is_present .neqv. present (yy2)) call abort ()
+ end subroutine fno
+end program test
+
+! We should have exactly one copy back per variable
+!
+! { dg-final { scan-tree-dump-times "iip = .integer.kind=4. .. desc.\[0-9\]+.data;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "iia = .integer.kind=4. .. desc.\[0-9\]+.data;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "jjp = .struct t .. desc.\[0-9\]+.data;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "jja = .struct t .. desc.\[0-9\]+.data;" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_11.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_11.f90
new file mode 100644
index 00000000000..46dffd0740b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_11.f90
@@ -0,0 +1,52 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+!
+! PR fortran/48820
+!
+! Assumed-rank tests
+subroutine foo(X)
+ integer :: x(..)
+ codimension :: x[*] ! { dg-error "The assumed-rank array 'x' at .1. shall not have a codimension" }
+end
+
+subroutine foo2(X)
+ integer, dimension(..) :: x[*] ! { dg-error "The assumed-rank array at .1. shall not have a codimension" }
+end
+
+subroutine foo3(X)
+ integer, codimension[*] :: x(..) ! { dg-error "The assumed-rank array at .1. shall not have a codimension" }
+end
+
+subroutine foo4(X)
+ integer, codimension[*], dimension(..) :: x ! { dg-error "The assumed-rank array at .1. shall not have a codimension" }
+end
+
+subroutine bar(X)
+ integer :: x[*]
+ dimension :: x(..) ! { dg-error "The assumed-rank array 'x' at .1. shall not have a codimension" }
+end
+
+subroutine foobar(X)
+ integer :: x
+ codimension :: x[*]
+ dimension :: x(..) ! { dg-error "The assumed-rank array 'x' at .1. shall not have a codimension" }
+end
+
+subroutine barfoo(X)
+ integer :: x
+ dimension :: x(..)
+ codimension :: x[*] ! { dg-error "The assumed-rank array 'x' at .1. shall not have a codimension" }
+end
+
+subroutine orig(X) ! { dg-error "may not have the VALUE or CODIMENSION attribute" }
+ integer :: x(..)[*]
+end
+
+subroutine val1(X)
+ integer, value :: x(..) ! { dg-error "VALUE attribute conflicts with DIMENSION attribute" }
+end
+
+subroutine val2(X)
+ integer, value :: x
+ dimension :: x(..) ! { dg-error "VALUE attribute conflicts with DIMENSION attribute" }
+end
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_12.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_12.f90
new file mode 100644
index 00000000000..f947f4941fe
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_12.f90
@@ -0,0 +1,21 @@
+! { dg-do run }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/48820
+!
+! Ensure that the value of scalars to assumed-rank arrays is
+! copied back - and everything happens in the correct order.
+
+call sub(f())
+contains
+subroutine sub(x)
+ integer, pointer :: x(..)
+end subroutine sub
+function f() result(res)
+ integer, pointer :: res
+end function f
+end
+
+! { dg-final { scan-tree-dump " = f \\(\\);.*desc.0.dtype = .*;.*desc.0.data = .void .. D.*;.*sub \\(&desc.0\\);.*D.*= .integer.kind=4. .. desc.0.data;" "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_1_c.c b/gcc/testsuite/gfortran.dg/assumed_rank_1_c.c
new file mode 100644
index 00000000000..85dd72db103
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_1_c.c
@@ -0,0 +1,16 @@
+/* Called by assumed_rank_1.f90. */
+
+#include <stdlib.h> /* For abort(). */
+
+struct array {
+ int *data;
+};
+
+void check_value_ (struct array *b, int n, int val[])
+{
+ int i;
+
+ for (i = 0; i < n; i++)
+ if (b->data[i] != val[i])
+ abort ();
+}
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_2.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_2.f90
new file mode 100644
index 00000000000..344278e1632
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_2.f90
@@ -0,0 +1,135 @@
+! { dg-do run }
+! { dg-options "-fcheck=all" }
+!
+! PR fortran/48820
+!
+! Assumed-rank tests - same as assumed_rank_1.f90,
+! but with bounds checks and w/o call to C function
+!
+
+implicit none
+
+integer, target :: x(2:5,4:7), y(-4:4)
+integer, allocatable, target :: z(:,:,:,:)
+integer, allocatable :: val(:)
+integer :: i
+
+allocate(z(1:4, -2:5, 4, 10:11))
+
+if (rank(x) /= 2) call abort ()
+val = [(2*i+3, i = 1, size(x))]
+x = reshape (val, shape(x))
+call foo(x, rank(x), lbound(x), ubound(x), val)
+call foo2(x, rank(x), lbound(x), ubound(x), val)
+call bar(x,x,.true.)
+call bar(x,prsnt=.false.)
+
+if (rank(y) /= 1) call abort ()
+val = [(2*i+7, i = 1, size(y))]
+y = reshape (val, shape(y))
+call foo(y, rank(y), lbound(y), ubound(y), val)
+call foo2(y, rank(y), lbound(y), ubound(y), val)
+call bar(y,y,.true.)
+call bar(y,prsnt=.false.)
+
+if (rank(z) /= 4) call abort ()
+val = [(2*i+5, i = 1, size(z))]
+z(:,:,:,:) = reshape (val, shape(z))
+call foo(z, rank(z), lbound(z), ubound(z), val)
+call foo(z, rank(z), lbound(z), ubound(z), val)
+call foo2(z, rank(z), lbound(z), ubound(z), val)
+call bar(z,z,.true.)
+call bar(z,prsnt=.false.)
+
+contains
+ subroutine bar(a,b, prsnt)
+ integer, pointer, optional, intent(in) :: a(..),b(..)
+ logical, value :: prsnt
+ ! The following is not valid, but it goes past the constraint check
+ ! Technically, it could be allowed and might be in Fortran 2015:
+ if (.not. associated(a)) call abort()
+ if (present(b)) then
+ if (.not. associated(a,b)) call abort()
+ else
+ if (.not. associated(a)) call abort()
+ end if
+ if (.not. present(a)) call abort()
+ if (prsnt .neqv. present(b)) call abort()
+ end subroutine
+
+ ! POINTER argument - bounds as specified before
+ subroutine foo(a, rnk, low, high, val)
+ integer,pointer, intent(in) :: a(..)
+ integer, value :: rnk
+ integer, intent(in) :: low(:), high(:), val(:)
+ integer :: i
+
+
+
+ if (rank(a) /= rnk) call abort()
+ if (size(low) /= rnk .or. size(high) /= rnk) call abort()
+ if (size(a) /= product (high - low +1)) call abort()
+
+ if (rnk > 0) then
+ if (low(1) /= lbound(a,1)) call abort()
+ if (high(1) /= ubound(a,1)) call abort()
+ if (size (a,1) /= high(1)-low(1)+1) call abort()
+ end if
+
+ do i = 1, rnk
+ if (low(i) /= lbound(a,i)) call abort()
+ if (high(i) /= ubound(a,i)) call abort()
+ if (size (a,i) /= high(i)-low(i)+1) call abort()
+ end do
+ call foo2(a, rnk, low, high, val)
+ end subroutine
+
+ ! Non-pointer, non-allocatable bounds. lbound == 1
+ subroutine foo2(a, rnk, low, high, val)
+ integer, intent(in) :: a(..)
+ integer, value :: rnk
+ integer, intent(in) :: low(:), high(:), val(:)
+ integer :: i
+
+ if (rank(a) /= rnk) call abort()
+ if (size(low) /= rnk .or. size(high) /= rnk) call abort()
+ if (size(a) /= product (high - low +1)) call abort()
+
+ if (rnk > 0) then
+ if (1 /= lbound(a,1)) call abort()
+ if (high(1)-low(1)+1 /= ubound(a,1)) call abort()
+ if (size (a,1) /= high(1)-low(1)+1) call abort()
+ end if
+
+ do i = 1, rnk
+ if (1 /= lbound(a,i)) call abort()
+ if (high(i)-low(i)+1 /= ubound(a,i)) call abort()
+ if (size (a,i) /= high(i)-low(i)+1) call abort()
+ end do
+ end subroutine foo2
+
+ ! ALLOCATABLE argument - bounds as specified before
+ subroutine foo3 (a, rnk, low, high, val)
+ integer, allocatable, intent(in), target :: a(..)
+ integer, value :: rnk
+ integer, intent(in) :: low(:), high(:), val(:)
+ integer :: i
+
+ if (rank(a) /= rnk) call abort()
+ if (size(low) /= rnk .or. size(high) /= rnk) call abort()
+ if (size(a) /= product (high - low +1)) call abort()
+
+ if (rnk > 0) then
+ if (low(1) /= lbound(a,1)) call abort()
+ if (high(1) /= ubound(a,1)) call abort()
+ if (size (a,1) /= high(1)-low(1)+1) call abort()
+ end if
+
+ do i = 1, rnk
+ if (low(i) /= lbound(a,i)) call abort()
+ if (high(i) /= ubound(a,i)) call abort()
+ if (size (a,i) /= high(i)-low(i)+1) call abort()
+ end do
+ call foo(a, rnk, low, high, val)
+ end subroutine
+end
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_3.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_3.f90
new file mode 100644
index 00000000000..ab5c0d90b39
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_3.f90
@@ -0,0 +1,19 @@
+! { dg-do run }
+! { dg-options "-fcheck=bounds" }
+! { dg-shouldfail "Array reference out of bounds" }
+!
+! PR fortran/48820
+!
+! Do assumed-rank bound checking
+
+implicit none
+integer :: a(4,4)
+call bar(a)
+contains
+ subroutine bar(x)
+ integer :: x(..)
+ print *, ubound(x,dim=3) ! << wrong dim
+ end subroutine
+end
+
+! { dg-output "Fortran runtime error: Array reference out of bounds" }
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_4.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_4.f90
new file mode 100644
index 00000000000..3391fba882f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_4.f90
@@ -0,0 +1,50 @@
+! { dg-do compile }
+! { dg-options "-std=f2008ts" }
+!
+! PR fortran/48820
+!
+! Assumed-rank constraint checks and other diagnostics
+!
+
+subroutine valid1a(x)
+ integer, intent(in), pointer, contiguous :: x(..)
+end subroutine valid1a
+
+subroutine valid1(x)
+ integer, intent(in) :: x(..)
+end subroutine valid1
+
+subroutine valid2(x)
+ type(*) :: x
+end subroutine valid2
+
+subroutine foo99(x)
+ integer x(99)
+ call valid1(x) ! { dg-error "Procedure 'valid1' at .1. with assumed-rank dummy argument 'x' must have an explicit interface" }
+ call valid2(x(1)) ! { dg-error "Procedure 'valid2' at .1. with assumed-type dummy argument 'x' must have an explicit interface" }
+end subroutine foo99
+
+subroutine foo(x)
+ integer :: x(..)
+ print *, ubound(x,dim=2000) ! { dg-error "is not a valid dimension index" }
+ call bar(x) ! { dg-error "Assumed-rank argument requires an explicit interface" }
+ call intnl(x) ! { dg-error "requires that the dummy argument 'x' has assumed-rank" }
+contains
+ subroutine intnl(x)
+ integer :: x(:)
+ end subroutine intnl
+end subroutine foo
+
+subroutine foo2(x)
+ integer :: x(..)
+ call valid3(x(:)) ! { dg-error "Assumed-rank variable x at .1. shall not have a subobject reference" }
+ call valid3(x+1) ! { dg-error "Assumed-rank variable x at .1. may only be used as actual argument" }
+contains
+ subroutine valid3(y)
+ integer :: y(..)
+ end subroutine
+end subroutine
+
+subroutine foo3()
+ integer :: x(..) ! { dg-error "Assumed-rank array at .1. must be a dummy argument" }
+end subroutine
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_5.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_5.f90
new file mode 100644
index 00000000000..a7949969b90
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_5.f90
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+! PR fortran/48820
+!
+!
+subroutine foo(x)
+ integer :: x(..) ! { dg-error "TS 29113: Assumed-rank array" }
+end subroutine foo
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_6.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_6.f90
new file mode 100644
index 00000000000..86da3f853c3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_6.f90
@@ -0,0 +1,39 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+!
+! PR fortran/48820
+!
+! Assumed-rank constraint checks and other diagnostics
+!
+
+subroutine foo(x) ! { dg-error "Assumed-type variable x at .1. may not have the INTENT.OUT. attribute" }
+ type(*), intent(out) :: x
+end subroutine
+
+subroutine bar(x)
+ integer, intent(out) :: x(..)
+end subroutine bar
+
+subroutine foo3(y)
+ integer :: y(..)
+ y = 7 ! { dg-error "Assumed-rank variable y at .1. may only be used as actual argument" }
+ print *, y + 10 ! { dg-error "Assumed-rank variable y at .1. may only be used as actual argument" }
+ print *, y ! { dg-error "Assumed-rank variable y at .1. may only be used as actual argument" }
+end subroutine
+
+subroutine foo2(x, y)
+ integer :: x(..), y(..)
+ call valid3(x(:)) ! { dg-error "Assumed-rank variable x at .1. shall not have a subobject reference" }
+contains
+ subroutine valid3(y)
+ integer :: y(..)
+ end subroutine
+end subroutine
+
+subroutine foo4(x)
+ integer, codimension[*] :: x(..) ! { dg-error "The assumed-rank array at .1. shall not have a codimension" }
+end subroutine
+
+subroutine foo5(y) ! { dg-error "may not have the VALUE or CODIMENSION attribute" }
+ integer :: y(..)[*]
+end subroutine
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_7.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_7.f90
new file mode 100644
index 00000000000..f9ff3b9aa42
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_7.f90
@@ -0,0 +1,64 @@
+! { dg-do run }
+!
+! PR fortran/48820
+!
+! Handle type/class for assumed-rank arrays
+!
+! FIXME: Passing a CLASS to a CLASS has to be re-enabled.
+implicit none
+type t
+ integer :: i
+end type
+
+class(T), allocatable :: ac(:,:)
+type(T), allocatable :: at(:,:)
+integer :: i
+
+allocate(ac(2:3,2:4))
+allocate(at(2:3,2:4))
+
+i = 0
+call foo(ac)
+call foo(at)
+call bar(ac)
+call bar(at)
+if (i /= 12) call abort()
+
+contains
+ subroutine bar(x)
+ type(t) :: x(..)
+ if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) call abort()
+ if (size(x) /= 6) call abort()
+ if (size(x,1) /= 2 .or. size(x,2) /= 3) call abort()
+ if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) call abort()
+ i = i + 1
+ call foo(x)
+ call bar2(x)
+ end subroutine
+ subroutine bar2(x)
+ type(t) :: x(..)
+ if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) call abort()
+ if (size(x) /= 6) call abort()
+ if (size(x,1) /= 2 .or. size(x,2) /= 3) call abort()
+ if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) call abort()
+ i = i + 1
+ end subroutine
+ subroutine foo(x)
+ class(t) :: x(..)
+ if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) call abort()
+ if (size(x) /= 6) call abort()
+ if (size(x,1) /= 2 .or. size(x,2) /= 3) call abort()
+ if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) call abort()
+ i = i + 1
+ call foo2(x)
+! call bar2(x) ! Passing a CLASS to a TYPE does not yet work
+ end subroutine
+ subroutine foo2(x)
+ class(t) :: x(..)
+ if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) call abort()
+ if (size(x) /= 6) call abort()
+ if (size(x,1) /= 2 .or. size(x,2) /= 3) call abort()
+ if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) call abort()
+ i = i + 1
+ end subroutine
+end
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_8.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_8.f90
new file mode 100644
index 00000000000..b1ccab5322c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_8.f90
@@ -0,0 +1,71 @@
+! { dg-do run }
+! { dg-additional-sources assumed_rank_8_c.c }
+!
+! PR fortran/48820
+!
+! Scalars to assumed-rank tests
+!
+program main
+ implicit none
+
+ interface
+ subroutine check (x)
+ integer :: x(..)
+ end subroutine check
+ end interface
+
+ integer, target :: ii, j
+ integer, allocatable :: kk
+ integer, pointer :: ll
+ ii = 489
+ j = 0
+ call f (ii)
+ call f (489)
+ call f ()
+ call f (null())
+ call f (kk)
+ if (j /= 2) call abort()
+
+ j = 0
+ nullify (ll)
+ call g (null())
+ call g (ll)
+ call g (ii)
+ if (j /= 1) call abort()
+
+ j = 0
+ call h (kk)
+ kk = 489
+ call h (kk)
+ if (j /= 1) call abort()
+
+contains
+
+ subroutine f (x)
+ integer, optional :: x(..)
+
+ if (.not. present (x)) return
+ if (rank (x) /= 0) call abort
+ call check (x)
+ j = j + 1
+ end subroutine
+
+ subroutine g (x)
+ integer, pointer, intent(in) :: x(..)
+
+ if (.not. associated (x)) return
+ if (rank (x) /= 0) call abort ()
+ call check (x)
+ j = j + 1
+ end subroutine
+
+ subroutine h (x)
+ integer, allocatable :: x(..)
+
+ if (.not. allocated (x)) return
+ if (rank (x) /= 0) call abort
+ call check (x)
+ j = j + 1
+ end subroutine
+
+end program main
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_8_c.c b/gcc/testsuite/gfortran.dg/assumed_rank_8_c.c
new file mode 100644
index 00000000000..3910d318e3c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_8_c.c
@@ -0,0 +1,25 @@
+/* Called by assumed_rank_8.f90 and assumed_rank_9.f90. */
+
+#include <stdlib.h> /* For abort(). */
+
+struct a {
+ int *dat;
+};
+
+struct b {
+ struct a _data;
+};
+
+
+void check_ (struct a *x)
+{
+ if (*x->dat != 489)
+ abort ();
+}
+
+
+void check2_ (struct b *x)
+{
+ if (*x->_data.dat != 489)
+ abort ();
+}
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_9.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_9.f90
new file mode 100644
index 00000000000..39151f58789
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_9.f90
@@ -0,0 +1,139 @@
+! { dg-do run }
+! { dg-additional-sources assumed_rank_8_c.c }
+!
+! PR fortran/48820
+!
+! Scalars to assumed-rank tests
+!
+program main
+ implicit none
+
+ type t
+ integer :: i
+ end type t
+
+ interface
+ subroutine check (x)
+ integer :: x(..)
+ end subroutine check
+ subroutine check2 (x)
+ import t
+ class(t) :: x(..)
+ end subroutine check2
+ end interface
+
+ integer :: j
+
+ type(t), target :: y
+ class(t), allocatable, target :: yac
+
+ y%i = 489
+ allocate (yac)
+ yac%i = 489
+ j = 0
+ call fc()
+ call fc(null())
+ call fc(y)
+ call fc(yac)
+ if (j /= 2) call abort ()
+
+ j = 0
+ call gc(null())
+ call gc(y)
+ call gc(yac)
+ deallocate (yac)
+ call gc(yac)
+ if (j /= 2) call abort ()
+
+ j = 0
+ call hc(yac)
+ allocate (yac)
+ yac%i = 489
+ call hc(yac)
+ if (j /= 1) call abort ()
+
+ j = 0
+ call ft()
+ call ft(null())
+ call ft(y)
+ call ft(yac)
+ if (j /= 2) call abort ()
+
+ j = 0
+ call gt(null())
+ call gt(y)
+ call gt(yac)
+ deallocate (yac)
+ call gt(yac)
+ if (j /= 2) call abort ()
+
+ j = 0
+ call ht(yac)
+ allocate (yac)
+ yac%i = 489
+ call ht(yac)
+ if (j /= 1) call abort ()
+
+contains
+
+ subroutine fc (x)
+ class(t), optional :: x(..)
+
+ if (.not. present (x)) return
+ if (.not. SAME_TYPE_AS (x, yac)) call abort ()
+ if (rank (x) /= 0) call abort
+ call check2 (x)
+ j = j + 1
+ end subroutine
+
+ subroutine gc (x)
+ class(t), pointer, intent(in) :: x(..)
+
+ if (.not. associated (x)) return
+ if (.not. SAME_TYPE_AS (x, yac)) call abort ()
+ if (rank (x) /= 0) call abort ()
+ call check2 (x)
+ j = j + 1
+ end subroutine
+
+ subroutine hc (x)
+ class(t), allocatable :: x(..)
+
+ if (.not. allocated (x)) return
+ if (.not. SAME_TYPE_AS (x, yac)) call abort ()
+ if (rank (x) /= 0) call abort
+ call check2 (x)
+ j = j + 1
+ end subroutine
+
+ subroutine ft (x)
+ type(t), optional :: x(..)
+
+ if (.not. present (x)) return
+ if (.not. SAME_TYPE_AS (x, yac)) call abort ()
+ if (rank (x) /= 0) call abort
+ call check2 (x)
+ j = j + 1
+ end subroutine
+
+ subroutine gt (x)
+ type(t), pointer, intent(in) :: x(..)
+
+ if (.not. associated (x)) return
+ if (.not. SAME_TYPE_AS (x, yac)) call abort ()
+ if (rank (x) /= 0) call abort ()
+ call check2 (x)
+ j = j + 1
+ end subroutine
+
+ subroutine ht (x)
+ type(t), allocatable :: x(..)
+
+ if (.not. allocated (x)) return
+ if (.not. SAME_TYPE_AS (x, yac)) call abort ()
+ if (rank (x) /= 0) call abort
+ call check2 (x)
+ j = j + 1
+ end subroutine
+
+end program main
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_bounds_1.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_bounds_1.f90
new file mode 100644
index 00000000000..11d15f6a537
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_bounds_1.f90
@@ -0,0 +1,143 @@
+! { dg-do run }
+!
+! Test the behaviour of lbound, ubound of shape with assumed rank arguments
+! in an array context (without DIM argument).
+!
+
+program test
+
+ integer :: a(2:4,-2:5)
+ integer, allocatable :: b(:,:)
+ integer, pointer :: c(:,:)
+ character(52) :: buffer
+
+ call foo(a)
+
+ allocate(b(2:4,-2:5))
+ call foo(b)
+ call bar(b)
+
+ allocate(c(2:4,-2:5))
+ call foo(c)
+ call baz(c)
+
+contains
+ subroutine foo(arg)
+ integer :: arg(..)
+
+ !print *, lbound(arg)
+ !print *, id(lbound(arg))
+ if (any(lbound(arg) /= [1, 1])) call abort
+ if (any(id(lbound(arg)) /= [1, 1])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) lbound(arg)
+ if (buffer /= ' 1 1') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(lbound(arg))
+ if (buffer /= ' 1 1') call abort
+
+ !print *, ubound(arg)
+ !print *, id(ubound(arg))
+ if (any(ubound(arg) /= [3, 8])) call abort
+ if (any(id(ubound(arg)) /= [3, 8])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) ubound(arg)
+ if (buffer /= ' 3 8') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(ubound(arg))
+ if (buffer /= ' 3 8') call abort
+
+ !print *, shape(arg)
+ !print *, id(shape(arg))
+ if (any(shape(arg) /= [3, 8])) call abort
+ if (any(id(shape(arg)) /= [3, 8])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) shape(arg)
+ if (buffer /= ' 3 8') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(shape(arg))
+ if (buffer /= ' 3 8') call abort
+
+ end subroutine foo
+ subroutine bar(arg)
+ integer, allocatable :: arg(:,:)
+
+ !print *, lbound(arg)
+ !print *, id(lbound(arg))
+ if (any(lbound(arg) /= [2, -2])) call abort
+ if (any(id(lbound(arg)) /= [2, -2])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) lbound(arg)
+ if (buffer /= ' 2 -2') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(lbound(arg))
+ if (buffer /= ' 2 -2') call abort
+
+ !print *, ubound(arg)
+ !print *, id(ubound(arg))
+ if (any(ubound(arg) /= [4, 5])) call abort
+ if (any(id(ubound(arg)) /= [4, 5])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) ubound(arg)
+ if (buffer /= ' 4 5') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(ubound(arg))
+ if (buffer /= ' 4 5') call abort
+
+ !print *, shape(arg)
+ !print *, id(shape(arg))
+ if (any(shape(arg) /= [3, 8])) call abort
+ if (any(id(shape(arg)) /= [3, 8])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) shape(arg)
+ if (buffer /= ' 3 8') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(shape(arg))
+ if (buffer /= ' 3 8') call abort
+
+ end subroutine bar
+ subroutine baz(arg)
+ integer, pointer :: arg(..)
+
+ !print *, lbound(arg)
+ !print *, id(lbound(arg))
+ if (any(lbound(arg) /= [2, -2])) call abort
+ if (any(id(lbound(arg)) /= [2, -2])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) lbound(arg)
+ if (buffer /= ' 2 -2') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(lbound(arg))
+ if (buffer /= ' 2 -2') call abort
+
+ !print *, ubound(arg)
+ !print *, id(ubound(arg))
+ if (any(ubound(arg) /= [4, 5])) call abort
+ if (any(id(ubound(arg)) /= [4, 5])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) ubound(arg)
+ if (buffer /= ' 4 5') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(ubound(arg))
+ if (buffer /= ' 4 5') call abort
+
+ !print *, shape(arg)
+ !print *, id(shape(arg))
+ if (any(shape(arg) /= [3, 8])) call abort
+ if (any(id(shape(arg)) /= [3, 8])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) shape(arg)
+ if (buffer /= ' 3 8') call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) id(shape(arg))
+ if (buffer /= ' 3 8') call abort
+
+ end subroutine baz
+ elemental function id(arg)
+ integer, intent(in) :: arg
+ integer :: id
+
+ id = arg
+ end function id
+end program test
+
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_bounds_2.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_bounds_2.f90
new file mode 100644
index 00000000000..b9c8e56f42f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_bounds_2.f90
@@ -0,0 +1,112 @@
+! { dg-do run }
+!
+! Test the behaviour of lbound, ubound of shape with assumed rank arguments
+! in an array context (without DIM argument).
+!
+
+program test
+
+ integer :: a(2:4,-2:5)
+ integer, allocatable :: b(:,:)
+ integer, allocatable :: c(:,:)
+ integer, pointer :: d(:,:)
+ character(52) :: buffer
+
+ b = foo(a)
+ !print *,b(:,1)
+ if (any(b(:,1) /= [11, 101])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,1)
+ if (buffer /= ' 11 101') call abort
+
+ !print *,b(:,2)
+ if (any(b(:,2) /= [3, 8])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,2)
+ if (buffer /= ' 3 8') call abort
+
+ !print *,b(:,3)
+ if (any(b(:,3) /= [13, 108])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,3)
+ if (buffer /= ' 13 108') call abort
+
+
+ allocate(c(1:2,-3:6))
+ b = bar(c)
+ !print *,b(:,1)
+ if (any(b(:,1) /= [11, 97])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,1)
+ if (buffer /= ' 11 97') call abort
+
+ !print *,b(:,2)
+ if (any(b(:,2) /= [12, 106])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,2)
+ if (buffer /= ' 12 106') call abort
+
+ !print *,b(:,3)
+ if (any(b(:,3) /= [2, 10])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,3)
+ if (buffer /= ' 2 10') call abort
+
+
+ allocate(d(3:5,-1:10))
+ b = baz(d)
+ !print *,b(:,1)
+ if (any(b(:,1) /= [3, -1])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,1)
+ if (buffer /= ' 3 -1') call abort
+
+ !print *,b(:,2)
+ if (any(b(:,2) /= [15, 110])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,2)
+ if (buffer /= ' 15 110') call abort
+
+ !print *,b(:,3)
+ if (any(b(:,3) /= [13, 112])) call abort
+ buffer = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+ write(buffer,*) b(:,3)
+ if (buffer /= ' 13 112') call abort
+
+
+contains
+ function foo(arg) result(res)
+ integer :: arg(..)
+ integer, allocatable :: res(:,:)
+
+ allocate(res(rank(arg), 3))
+
+ res(:,1) = lbound(arg) + (/ 10, 100 /)
+ res(:,2) = ubound(arg)
+ res(:,3) = (/ 10, 100 /) + shape(arg)
+
+ end function foo
+ function bar(arg) result(res)
+ integer, allocatable :: arg(..)
+ integer, allocatable :: res(:,:)
+
+ allocate(res(-1:rank(arg)-2, 3))
+
+ res(:,1) = lbound(arg) + (/ 10, 100 /)
+ res(:,2) = (/ 10, 100 /) + ubound(arg)
+ res(:,3) = shape(arg)
+
+ end function bar
+ function baz(arg) result(res)
+ integer, pointer :: arg(..)
+ integer, allocatable :: res(:,:)
+
+ allocate(res(2:rank(arg)+1, 3))
+
+ res(:,1) = lbound(arg)
+ res(:,2) = (/ 10, 100 /) + ubound(arg)
+ res(:,3) = shape(arg) + (/ 10, 100 /)
+
+ end function baz
+end program test
+
diff --git a/gcc/testsuite/gfortran.dg/assumed_type_3.f90 b/gcc/testsuite/gfortran.dg/assumed_type_3.f90
index d88da34cf82..8d2be255b8c 100644
--- a/gcc/testsuite/gfortran.dg/assumed_type_3.f90
+++ b/gcc/testsuite/gfortran.dg/assumed_type_3.f90
@@ -31,7 +31,7 @@ end subroutine six
subroutine seven(y)
type(*) :: y(:)
- call a7(y(3:5)) ! { dg-error "Assumed-type variable y with designator" }
+ call a7(y(3:5)) ! { dg-error "Assumed-type variable y at .1. shall not have a subobject reference" }
contains
subroutine a7(x)
type(*) :: x(*)
@@ -115,5 +115,5 @@ end subroutine thirteen
subroutine fourteen(x)
type(*) :: x
- x = x ! { dg-error "Invalid expression with assumed-type variable" }
+ x = x ! { dg-error "Assumed-type variable x at .1. may only be used as actual argument" }
end subroutine fourteen
diff --git a/gcc/testsuite/gfortran.dg/bind_c_array_params.f03 b/gcc/testsuite/gfortran.dg/bind_c_array_params.f03
index 6590db1d1d6..810f64277cc 100644
--- a/gcc/testsuite/gfortran.dg/bind_c_array_params.f03
+++ b/gcc/testsuite/gfortran.dg/bind_c_array_params.f03
@@ -1,10 +1,11 @@
! { dg-do compile }
+! { dg-options "-std=f2003" }
module bind_c_array_params
use, intrinsic :: iso_c_binding
implicit none
contains
- subroutine sub0(assumed_array) bind(c) ! { dg-error "cannot be an argument" }
+ subroutine sub0(assumed_array) bind(c) ! { dg-error "TS 29113: Assumed-shape array 'assumed_array' at .1. as dummy argument to the BIND.C. procedure 'sub0'" }
integer(c_int), dimension(:) :: assumed_array
end subroutine sub0
diff --git a/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90 b/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
new file mode 100644
index 00000000000..04a70066c10
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
@@ -0,0 +1,20 @@
+! { dg-do compile }
+! { dg-options "-std=f2008ts -fdump-tree-original" }
+! { dg-additional-options "-mno-explicit-relocs" { target alpha*-*-* } }
+!
+! Check that assumed-shape variables are correctly passed to BIND(C)
+! as defined in TS 29913
+!
+interface
+ subroutine test (xx) bind(C, name="myBindC")
+ type(*), dimension(:,:) :: xx
+ end subroutine test
+end interface
+
+integer :: aa(4,4)
+call test(aa)
+end
+
+! { dg-final { scan-assembler-times "myBindC" 1 } }
+! { dg-final { scan-tree-dump-times "test \\\(&parm\\." 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/bind_c_procs.f03 b/gcc/testsuite/gfortran.dg/bind_c_procs.f03
index eaf067289d8..3bb6ea319c9 100644
--- a/gcc/testsuite/gfortran.dg/bind_c_procs.f03
+++ b/gcc/testsuite/gfortran.dg/bind_c_procs.f03
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "-Wc-binding-type" }
module bind_c_procs
use, intrinsic :: iso_c_binding, only: c_int
diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03 b/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03
index d89963d8b1d..b8c22618669 100644
--- a/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03
+++ b/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03
@@ -1,5 +1,5 @@
! { dg-do compile }
-! { dg-options "-fdump-tree-original" }
+! { dg-options "-fdump-tree-original -Wc-binding-type" }
!
! PR fortran/34079
! Character bind(c) arguments shall not pass the length as additional argument
diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90 b/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90
index 2bce215af19..ede9f60e83f 100644
--- a/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90
+++ b/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "-Wc-binding-type" }
!
! PR fortran/38160
!
diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_26.f90 b/gcc/testsuite/gfortran.dg/bind_c_usage_26.f90
new file mode 100644
index 00000000000..20a68d1af24
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bind_c_usage_26.f90
@@ -0,0 +1,14 @@
+! { dg-do compile }
+!
+! PR fortran/53985
+!
+! Check that the (default) -Wno-c-binding-type works
+! and no warning is printed.
+!
+! With -Wc-binding-type, one gets:
+! Warning: Variable 'x' at (1) is a dummy argument to the BIND(C) procedure
+! 'test' but may not be C interoperable )
+!
+subroutine test(x) bind(C)
+ integer :: x
+end subroutine test
diff --git a/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_5.f90 b/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_5.f90
new file mode 100644
index 00000000000..f3e17892bf9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_5.f90
@@ -0,0 +1,27 @@
+! { dg-do run }
+!
+! Check that C_F_Pointer works with a noncontiguous SHAPE argument
+!
+use iso_c_binding
+type(c_ptr) :: x
+integer, target :: array(3)
+integer, pointer :: ptr(:,:)
+integer, pointer :: ptr2(:,:,:)
+integer :: myshape(5)
+
+array = [22,33,44]
+x = c_loc(array)
+myshape = [1,2,3,4,1]
+
+call c_f_pointer(x, ptr, shape=myshape(1:4:2))
+if (any (lbound(ptr) /= [ 1, 1])) call abort ()
+if (any (ubound(ptr) /= [ 1, 3])) call abort ()
+if (any (shape(ptr) /= [ 1, 3])) call abort ()
+if (any (ptr(1,:) /= array)) call abort()
+
+call c_f_pointer(x, ptr2, shape=myshape([1,3,1]))
+if (any (lbound(ptr2) /= [ 1, 1, 1])) call abort ()
+if (any (ubound(ptr2) /= [ 1, 3, 1])) call abort ()
+if (any (shape(ptr2) /= [ 1, 3, 1])) call abort ()
+if (any (ptr2(1,:,1) /= array)) call abort()
+end
diff --git a/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 b/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
index f7d6fa78eb4..29072b814f7 100644
--- a/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
+++ b/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
@@ -21,14 +21,21 @@ program test
call c_f_procpointer(cfunptr, fprocptr)
end program test
-! Make sure there is only a single function call:
-! { dg-final { scan-tree-dump-times "c_f" 1 "original" } }
-! { dg-final { scan-tree-dump-times "c_f_pointer" 1 "original" } }
-! { dg-final { scan-tree-dump-times "c_f_pointer_i4" 1 "original" } }
+! Make sure there is no function call:
+! { dg-final { scan-tree-dump-times "c_f" 0 "original" } }
+! { dg-final { scan-tree-dump-times "c_f_pointer" 0 "original" } }
+! { dg-final { scan-tree-dump-times "c_f_pointer_i4" 0 "original" } }
!
! Check scalar c_f_pointer
! { dg-final { scan-tree-dump-times " fptr = .integer.kind=4. .. cptr" 1 "original" } }
!
+! Array c_f_pointer:
+!
+! { dg-final { scan-tree-dump-times " fptr_array.data = cptr;" 1 "original" } }
+! { dg-final { scan-tree-dump-times " fptr_array.dim\\\[S..\\\].lbound = 1;" 1 "original" } }
+! { dg-final { scan-tree-dump-times " fptr_array.dim\\\[S..\\\].ubound = " 1 "original" } }
+! { dg-final { scan-tree-dump-times " fptr_array.dim\\\[S..\\\].stride = " 1 "original" } }
+!
! Check c_f_procpointer
! { dg-final { scan-tree-dump-times " fprocptr = .integer.kind=4. .\\*<.*>. ... cfunptr;" 1 "original" } }
!
diff --git a/gcc/testsuite/gfortran.dg/c_funloc_tests_5.f03 b/gcc/testsuite/gfortran.dg/c_funloc_tests_5.f03
index bbb418de629..f3fdb2b6f64 100644
--- a/gcc/testsuite/gfortran.dg/c_funloc_tests_5.f03
+++ b/gcc/testsuite/gfortran.dg/c_funloc_tests_5.f03
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "-std=f2003" }
! Test that the arg checking for c_funloc verifies the procedures are
! C interoperable.
module c_funloc_tests_5
@@ -7,9 +8,9 @@ contains
subroutine sub0() bind(c)
type(c_funptr) :: my_c_funptr
- my_c_funptr = c_funloc(sub1) ! { dg-error "must be BIND.C." }
+ my_c_funptr = c_funloc(sub1) ! { dg-error "TS 29113: Noninteroperable argument" }
- my_c_funptr = c_funloc(func0) ! { dg-error "must be BIND.C." }
+ my_c_funptr = c_funloc(func0) ! { dg-error "TS 29113: Noninteroperable argument" }
end subroutine sub0
subroutine sub1()
diff --git a/gcc/testsuite/gfortran.dg/c_funloc_tests_6.f90 b/gcc/testsuite/gfortran.dg/c_funloc_tests_6.f90
new file mode 100644
index 00000000000..e09b0bb375a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/c_funloc_tests_6.f90
@@ -0,0 +1,31 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+! Check relaxed TS29113 constraints for procedures
+! and c_f_*pointer argument checking for c_ptr/c_funptr.
+!
+
+use iso_c_binding
+implicit none
+type(c_ptr) :: cp
+type(c_funptr) :: cfp
+
+interface
+ subroutine sub() bind(C)
+ end subroutine sub
+end interface
+integer(c_int), pointer :: int
+procedure(sub), pointer :: fsub
+
+integer, external :: noCsub
+procedure(integer), pointer :: fint
+
+cp = c_funloc (sub) ! { dg-error "Can't convert TYPE.c_funptr. to TYPE.c_ptr." })
+cfp = c_loc (int) ! { dg-error "Can't convert TYPE.c_ptr. to TYPE.c_funptr." }
+
+call c_f_pointer (cfp, int) ! { dg-error "Argument at .1. to C_F_POINTER shall have the type C_PTR" }
+call c_f_procpointer (cp, fsub) ! { dg-error "Argument at .1. to C_F_FUNPOINTER shall have the type C_FUNPTR" }
+
+cfp = c_funloc (noCsub) ! { dg-error "TS 29113: Noninteroperable argument 'nocsub' to 'c_funloc'" }
+call c_f_procpointer (cfp, fint) ! { dg-error "TS 29113: Noninteroperable procedure-pointer at .1. to C_F_FUNPOINTER" }
+end
diff --git a/gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90 b/gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
new file mode 100644
index 00000000000..8e51c892cbd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
@@ -0,0 +1,22 @@
+! { dg-do compile }
+! { dg-options "-std=f2008ts -fdump-tree-original" }
+!
+! Check relaxed TS29113 constraints for procedures
+! and c_f_*pointer argument checking for c_ptr/c_funptr.
+!
+
+use iso_c_binding
+implicit none
+type(c_funptr) :: cfp
+
+integer, external :: noCsub
+procedure(integer), pointer :: fint
+
+cfp = c_funloc (noCsub)
+call c_f_procpointer (cfp, fint)
+end
+
+! { dg-final { scan-tree-dump-times "cfp =\[^;\]+ nocsub;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "fint =\[^;\]+ cfp;" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+
diff --git a/gcc/testsuite/gfortran.dg/coarray_allocate_1.f90 b/gcc/testsuite/gfortran.dg/coarray_allocate_1.f90
new file mode 100644
index 00000000000..b2f3136f088
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_allocate_1.f90
@@ -0,0 +1,95 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+! PR 53824 - this used to ICE.
+! Original test case by Vladimír Fuka
+program Jac
+ implicit none
+
+ integer,parameter:: KND=KIND(1.0)
+
+ type Domain
+ real(KND),dimension(:,:,:),allocatable:: A,B
+ integer :: n=64,niter=20000,blockit=1000
+ integer :: starti,endi
+ integer :: startj,endj
+ integer :: startk,endk
+ integer,dimension(:),allocatable :: startsi,startsj,startsk
+ integer,dimension(:),allocatable :: endsi,endsj,endsk
+ end type
+
+ type(Domain),allocatable :: D[:,:,:]
+! real(KND),codimension[*] :: sumA,sumB,diffAB
+ integer i,j,k,ncom
+ integer nims,nxims,nyims,nzims
+ integer im,iim,jim,kim
+ character(20):: ch
+
+ nims = num_images()
+ nxims = nint(nims**(1./3.))
+ nyims = nint(nims**(1./3.))
+ nzims = nims / (nxims*nyims)
+
+ im = this_image()
+ if (im==1) write(*,*) "n: [",nxims,nyims,nzims,"]"
+
+ kim = (im-1) / (nxims*nyims) + 1
+ jim = ((im-1) - (kim-1)*(nxims*nyims)) / nxims + 1
+ iim = (im-1) - (kim-1)*(nxims*nyims) - (jim-1)*(nxims) + 1
+
+ write (*,*) im,"[",iim,jim,kim,"]"
+
+ allocate(D[nxims,nyims,*])
+
+ ncom=command_argument_count()
+ if (command_argument_count() >=2) then
+ call get_command_argument(1,value=ch)
+ read (ch,*) D%n
+ call get_command_argument(2,value=ch)
+ read (ch,*) D%niter
+ call get_command_argument(3,value=ch)
+ read (ch,*) D%blockit
+ end if
+
+ allocate(D%startsi(nxims))
+ allocate(D%startsj(nyims))
+ allocate(D%startsk(nzims))
+ allocate(D%endsi(nxims))
+ allocate(D%endsj(nyims))
+ allocate(D%endsk(nzims))
+
+ D%startsi(1) = 1
+ do i=2,nxims
+ D%startsi(i) = D%startsi(i-1) + D%n/nxims
+ end do
+ D%endsi(nxims) = D%n
+ D%endsi(1:nxims-1) = D%startsi(2:nxims) - 1
+
+ D%startsj(1) = 1
+ do j=2,nyims
+ D%startsj(j) = D%startsj(j-1) + D%n/nyims
+ end do
+ D%endsj(nyims) = D%n
+ D%endsj(1:nyims-1) = D%startsj(2:nyims) - 1
+
+ D%startsk(1) = 1
+ do k=2,nzims
+ D%startsk(k) = D%startsk(k-1) + D%n/nzims
+ end do
+ D%endsk(nzims) = D%n
+ D%endsk(1:nzims-1) = D%startsk(2:nzims) - 1
+
+ D%starti = D%startsi(iim)
+ D%endi = D%endsi(iim)
+ D%startj = D%startsj(jim)
+ D%endj = D%endsj(jim)
+ D%startk = D%startsk(kim)
+ D%endk = D%endsk(kim)
+
+ write(*,*) D%startsi,D%endsi
+ write(*,*) D%startsj,D%endsj
+ write(*,*) D%startsk,D%endsk
+
+ !$hmpp JacKernel allocate, args[A,B].size={0:D%n+1,0:D%n+1,0:D%n+1}
+ allocate(D%A(D%starti-1:D%endi+1,D%startj-1:D%endj+1,D%startk-1:D%endk+1),&
+ D%B(D%starti-1:D%endi+1,D%startj-1:D%endj+1,D%startk-1:D%endk+1))
+end program Jac
diff --git a/gcc/testsuite/gfortran.dg/contiguous_1.f90 b/gcc/testsuite/gfortran.dg/contiguous_1.f90
index e75c08d8ef4..78c84cbbe07 100644
--- a/gcc/testsuite/gfortran.dg/contiguous_1.f90
+++ b/gcc/testsuite/gfortran.dg/contiguous_1.f90
@@ -129,7 +129,7 @@ subroutine C1241
integer, pointer, contiguous :: a(:)
integer, pointer :: b(:)
call test(a)
- call test(b) ! { dg-error "must be simply contigous" }
+ call test(b) ! { dg-error "must be simply contiguous" }
contains
subroutine test(x)
integer, pointer, contiguous :: x(:)
@@ -169,7 +169,7 @@ end subroutine sect12528
subroutine test34
implicit none
integer, volatile,pointer :: a(:,:),i
- call foo(a(2,2:3:2)) ! { dg-error "must be simply contigous" }
+ call foo(a(2,2:3:2)) ! { dg-error "must be simply contiguous" }
contains
subroutine foo(x)
integer, pointer, contiguous, volatile :: x(:)
diff --git a/gcc/testsuite/gfortran.dg/data_constraints_1.f90 b/gcc/testsuite/gfortran.dg/data_constraints_1.f90
index 5f11ffdbaea..188eb7c6b8f 100644
--- a/gcc/testsuite/gfortran.dg/data_constraints_1.f90
+++ b/gcc/testsuite/gfortran.dg/data_constraints_1.f90
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "" }
! Tests standard indepedendent constraints for variables in a data statement
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
diff --git a/gcc/testsuite/gfortran.dg/data_constraints_3.f90 b/gcc/testsuite/gfortran.dg/data_constraints_3.f90
new file mode 100644
index 00000000000..44aadb60fe9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/data_constraints_3.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+!
+! PR fortran/40881
+!
+integer :: a(3)
+print *, 'Hello'
+data a/3*5/ ! { dg-warning "Obsolescent feature: DATA statement at .1. after the first executable statement" }
+end
diff --git a/gcc/testsuite/gfortran.dg/do_5.f90 b/gcc/testsuite/gfortran.dg/do_5.f90
new file mode 100644
index 00000000000..08cd8e6644b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/do_5.f90
@@ -0,0 +1,29 @@
+! { dg-do compile }
+!
+! PR fortran/54370
+!
+! The following program was ICEing at tree-check time
+! "L()" was regarded as default-kind logical.
+!
+! Contributed by Kirill Chilikin
+!
+ MODULE M
+ CONTAINS
+
+ LOGICAL(C_BOOL) FUNCTION L() BIND(C)
+ USE, INTRINSIC :: ISO_C_BINDING
+ L = .FALSE.
+ END FUNCTION
+
+ LOGICAL(8) FUNCTION L2() BIND(C)
+ L2 = .FALSE._8
+ END FUNCTION
+
+ SUBROUTINE S()
+ DO WHILE (L())
+ ENDDO
+ DO WHILE (L2())
+ ENDDO
+ END
+
+ END
diff --git a/gcc/testsuite/gfortran.dg/dummy_procedure_5.f90 b/gcc/testsuite/gfortran.dg/dummy_procedure_5.f90
index 0133cbf7d1f..5ab4e7cec8e 100644
--- a/gcc/testsuite/gfortran.dg/dummy_procedure_5.f90
+++ b/gcc/testsuite/gfortran.dg/dummy_procedure_5.f90
@@ -15,7 +15,7 @@ program main
end type
type(u), external :: ufunc
- call sub(ufunc) ! { dg-error "Type/rank mismatch in return value" }
+ call sub(ufunc) ! { dg-error "Type/rank mismatch in function result" }
contains
diff --git a/gcc/testsuite/gfortran.dg/dummy_procedure_8.f90 b/gcc/testsuite/gfortran.dg/dummy_procedure_8.f90
new file mode 100644
index 00000000000..7b8a2645f76
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dummy_procedure_8.f90
@@ -0,0 +1,88 @@
+! { dg-do compile }
+!
+! PR 35831: [F95] Shape mismatch check missing for dummy procedure argument
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+implicit none
+
+call call_a(a1) ! { dg-error "Character length mismatch in function result" }
+call call_a(a2) ! { dg-error "Character length mismatch in function result" }
+call call_b(b1) ! { dg-error "Shape mismatch" }
+call call_c(c1) ! { dg-error "POINTER attribute mismatch in function result" }
+call call_d(c1) ! { dg-error "ALLOCATABLE attribute mismatch in function result" }
+call call_e(e1) ! { dg-error "CONTIGUOUS attribute mismatch in function result" }
+call call_f(c1) ! { dg-error "PROCEDURE POINTER mismatch in function result" }
+
+contains
+
+ character(1) function a1()
+ end function
+
+ character(:) function a2()
+ end function
+
+ subroutine call_a(a3)
+ interface
+ character(2) function a3()
+ end function
+ end interface
+ end subroutine
+
+
+ function b1()
+ integer, dimension(1:3) :: b1
+ end function
+
+ subroutine call_b(b2)
+ interface
+ function b2()
+ integer, dimension(0:4) :: b2
+ end function
+ end interface
+ end subroutine
+
+
+ integer function c1()
+ end function
+
+ subroutine call_c(c2)
+ interface
+ function c2()
+ integer, pointer :: c2
+ end function
+ end interface
+ end subroutine
+
+
+ subroutine call_d(d2)
+ interface
+ function d2()
+ integer, allocatable :: d2
+ end function
+ end interface
+ end subroutine
+
+
+ function e1()
+ integer, dimension(:), pointer :: e1
+ end function
+
+ subroutine call_e(e2)
+ interface
+ function e2()
+ integer, dimension(:), pointer, contiguous :: e2
+ end function
+ end interface
+ end subroutine
+
+
+ subroutine call_f(f2)
+ interface
+ function f2()
+ procedure(integer), pointer :: f2
+ end function
+ end interface
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/g77/19990826-3.f b/gcc/testsuite/gfortran.dg/g77/19990826-3.f
index dba24becb4c..374c5538e10 100644
--- a/gcc/testsuite/gfortran.dg/g77/19990826-3.f
+++ b/gcc/testsuite/gfortran.dg/g77/19990826-3.f
@@ -64,7 +64,7 @@ C
IF(M2.LT.64)INDE=5
IF(M2.LT.32)INDE=4
DO 3 NUN =3,INUN
- DO 3 NDE=3,INDE
+ DO 3 NDE=3,INDE ! { dg-warning "Obsolescent feature: Shared DO termination" }
N10=2**NUN
N20=2**NDE
NDIF=(N10-N20)
diff --git a/gcc/testsuite/gfortran.dg/g77/20020307-1.f b/gcc/testsuite/gfortran.dg/g77/20020307-1.f
index 730c14d3286..73585434cf7 100644
--- a/gcc/testsuite/gfortran.dg/g77/20020307-1.f
+++ b/gcc/testsuite/gfortran.dg/g77/20020307-1.f
@@ -6,7 +6,7 @@ c { dg-do compile }
DIMENSION BNORM(MAXVEC),BINV(MAXVEC),WT(MAXVEC),W0(MAXVEC)
DIMENSION C1(MAXVEC),C2(MAXVEC),R1(MAXVEC),R2(MAXVEC)
DO 200 ILAT=1,2**IDIM
- DO 200 I1=1,IDIM
+ DO 200 I1=1,IDIM ! { dg-warning "Obsolescent feature: Shared DO termination" }
DO 220 I2=1,IDIM
CALL INTACT(ILAT,I1,I1,W1)
220 CONTINUE
diff --git a/gcc/testsuite/gfortran.dg/g77/980310-3.f b/gcc/testsuite/gfortran.dg/g77/980310-3.f
index 56560237859..098e22c680a 100644
--- a/gcc/testsuite/gfortran.dg/g77/980310-3.f
+++ b/gcc/testsuite/gfortran.dg/g77/980310-3.f
@@ -128,7 +128,7 @@ c compute right side vector in resulting linear equations
c
basl = dlog10(2.0d0)
do 240 i = low,igh
- do 240 j = low,igh
+ do 240 j = low,igh ! { dg-warning "Obsolescent feature: Shared DO termination" }
tb = b(i,j)
ta = a(i,j)
if (ta .eq. 0.0d0) go to 220
@@ -242,7 +242,7 @@ c
ir = wk(i,1)
fi = 2.0d0**ir
if (i .lt. low) fi = 1.0d0
- do 400 j =low,n
+ do 400 j =low,n ! { dg-warning "Obsolescent feature: Shared DO termination" }
jc = cscale(j)
fj = 2.0d0**jc
if (j .le. igh) go to 390
diff --git a/gcc/testsuite/gfortran.dg/include_3.f95 b/gcc/testsuite/gfortran.dg/include_3.f95
index fba07cbb1f6..1e429c41aaf 100644
--- a/gcc/testsuite/gfortran.dg/include_3.f95
+++ b/gcc/testsuite/gfortran.dg/include_3.f95
@@ -24,3 +24,4 @@ end function
! { dg-do compile }
! { dg-options "-fpreprocessed -g3" }
+! { dg-warning "Nonexistent include directory" "missing directory" { target *-*-* } 0 }
diff --git a/gcc/testsuite/gfortran.dg/include_6.f90 b/gcc/testsuite/gfortran.dg/include_6.f90
new file mode 100644
index 00000000000..0bac3909b8a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/include_6.f90
@@ -0,0 +1,5 @@
+! { dg-do compile }
+! { dg-options "-I gfortran.log" }
+! { dg-warning "is not a directory" "" { target *-*-* } 0 }
+end
+
diff --git a/gcc/testsuite/gfortran.dg/include_7.f90 b/gcc/testsuite/gfortran.dg/include_7.f90
new file mode 100644
index 00000000000..9a30945f109
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/include_7.f90
@@ -0,0 +1,5 @@
+! { dg-do compile }
+! { dg-options "-I nothere" }
+! { dg-warning "Nonexistent include directory" "missing directory" { target *-*-* } 0 }
+end
+
diff --git a/gcc/testsuite/gfortran.dg/inline_sum_4.f90 b/gcc/testsuite/gfortran.dg/inline_sum_4.f90
new file mode 100644
index 00000000000..c04510dd0e2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/inline_sum_4.f90
@@ -0,0 +1,19 @@
+! { dg-do compile }
+!
+! PR fortran/53732
+! this was leading to an internal "mismatching comparison operand types"
+! error.
+!
+! Original testcase by minzastro <minzastro@googlemail.com>
+! Fixed by Dominique Dhumieres <dominiq@lps.ens.fr>
+
+program test
+implicit none
+
+real(8) arr(4,4,4,4)
+
+arr(:,:,:,:) = 1d0
+
+arr(1,:,:,:) = sum(arr, dim=1, mask=(arr(:,:,:,:) > 0d0))
+
+end program test
diff --git a/gcc/testsuite/gfortran.dg/interface_26.f90 b/gcc/testsuite/gfortran.dg/interface_26.f90
index 52e0bd138b9..330c434d2a3 100644
--- a/gcc/testsuite/gfortran.dg/interface_26.f90
+++ b/gcc/testsuite/gfortran.dg/interface_26.f90
@@ -37,7 +37,7 @@ CONTAINS
END INTERFACE
INTEGER, EXTERNAL :: UserOp
- res = UserFunction( a,b, UserOp ) ! { dg-error "Type/rank mismatch in return value" }
+ res = UserFunction( a,b, UserOp ) ! { dg-error "Type/rank mismatch in function result" }
if( res .lt. 10 ) then
res = recSum( a, res, UserFunction, UserOp )
diff --git a/gcc/testsuite/gfortran.dg/interface_37.f90 b/gcc/testsuite/gfortran.dg/interface_37.f90
new file mode 100644
index 00000000000..a39f4748ac2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/interface_37.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+!
+! PR fortran/39290
+! Subroutine/function ambiguity in generics.
+!
+ interface q
+ subroutine qr(f)
+ implicit real(f)
+ external f
+ end subroutine
+ subroutine qc(f)
+ implicit complex(f)
+ external f
+ end subroutine ! { dg-error "Ambiguous interfaces" }
+ end interface q
+ end
diff --git a/gcc/testsuite/gfortran.dg/interop_params.f03 b/gcc/testsuite/gfortran.dg/interop_params.f03
index ea3dadac040..6eafba0ea69 100644
--- a/gcc/testsuite/gfortran.dg/interop_params.f03
+++ b/gcc/testsuite/gfortran.dg/interop_params.f03
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "-Wc-binding-type" }
module interop_params
use, intrinsic :: iso_c_binding
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_shadow_4.f90 b/gcc/testsuite/gfortran.dg/intrinsic_shadow_4.f90
new file mode 100644
index 00000000000..df614bb638a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/intrinsic_shadow_4.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-Wall" }
+!
+! PR fortran/54199
+!
+subroutine test()
+contains
+ real function fraction(x) ! { dg-warning "'fraction' declared at .1. may shadow the intrinsic of the same name. In order to call the intrinsic, explicit INTRINSIC declarations may be required." }
+ real :: x
+ fraction = x
+ end function fraction
+end subroutine test
diff --git a/gcc/testsuite/gfortran.dg/module_procedure_double_colon_3.f90 b/gcc/testsuite/gfortran.dg/module_procedure_double_colon_3.f90
new file mode 100644
index 00000000000..620f82ac1fa
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/module_procedure_double_colon_3.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+! PR fortran/49265
+!
+! Contributed by Erik Toussaint
+!
+module m1
+ implicit none
+ interface foo
+ procedure :: bar ! { dg-error "Fortran 2008: double colon in MODULE PROCEDURE statement" }
+ end interface
+contains
+ subroutine bar
+ end subroutine
+end module
diff --git a/gcc/testsuite/gfortran.dg/module_procedure_double_colon_4.f90 b/gcc/testsuite/gfortran.dg/module_procedure_double_colon_4.f90
new file mode 100644
index 00000000000..d56823c1f6a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/module_procedure_double_colon_4.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+! PR fortran/49265
+!
+! Contributed by Erik Toussaint
+!
+module m1
+ implicit none
+ interface foo
+ procedure :: bar ! "::" is valid since Fortran 2008
+ end interface
+contains
+ subroutine bar
+ end subroutine
+end module
diff --git a/gcc/testsuite/gfortran.dg/oldstyle_4.f90 b/gcc/testsuite/gfortran.dg/oldstyle_4.f90
new file mode 100644
index 00000000000..d40abeb61d9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/oldstyle_4.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }
+!
+! PR fortran/52101
+!
+! Contributed by John Harper
+!
+program foo
+ character*10 s ! { dg-warning "Obsolescent feature: Old-style character length" }
+ character t*10 ! Still okay
+ s = 'foo'
+ t = 'bar'
+end program foo
diff --git a/gcc/testsuite/gfortran.dg/pr37243.f b/gcc/testsuite/gfortran.dg/pr37243.f
index 0a606ad7707..f5dda43e71f 100644
--- a/gcc/testsuite/gfortran.dg/pr37243.f
+++ b/gcc/testsuite/gfortran.dg/pr37243.f
@@ -13,10 +13,10 @@
DO 160 I = 1,M
DUMI = ZERO
DO 100 K = 1,N
- 100 DUMI = DUMI+V(K,I)*V(K,I)
+ 100 DUMI = DUMI+V(K,I)*V(K,I) ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
DUMI = ONE/ SQRT(DUMI)
DO 120 K = 1,N
- 120 V(K,I) = V(K,I)*DUMI
+ 120 V(K,I) = V(K,I)*DUMI ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
IF (I .EQ. M) GO TO 160
I1 = I+1
DO 140 J = I1,M
@@ -34,15 +34,15 @@
220 J = J+1
IF (J .GT. N) GO TO 320
DO 240 K = 1,N
- 240 V(K,I) = ZERO
+ 240 V(K,I) = ZERO ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
CALL DAXPY(N,DUM,V(1,I),1,V(1,I),1)
260 CONTINUE
DUMI = ZERO
DO 280 K = 1,N
- 280 DUMI = DUMI+V(K,I)*V(K,I)
+ 280 DUMI = DUMI+V(K,I)*V(K,I) ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
IF ( ABS(DUMI) .LT. TOL) GO TO 220
DO 300 K = 1,N
- 300 V(K,I) = V(K,I)*DUMI
+ 300 V(K,I) = V(K,I)*DUMI ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
GO TO 200
320 END
program main
diff --git a/gcc/testsuite/gfortran.dg/pr48636.f90 b/gcc/testsuite/gfortran.dg/pr48636.f90
new file mode 100644
index 00000000000..44515ae9ad9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr48636.f90
@@ -0,0 +1,37 @@
+! { dg-do compile }
+! { dg-options "-O3 -fdump-ipa-inline" }
+
+module foo
+ implicit none
+contains
+ subroutine bar(a,x)
+ real, dimension(:,:), intent(in) :: a
+ real, intent(out) :: x
+ integer :: i,j
+
+ x = 0
+ do j=1,ubound(a,2)
+ do i=1,ubound(a,1)
+ x = x + a(i,j)**2
+ end do
+ end do
+ end subroutine bar
+end module foo
+
+program main
+ use foo
+ implicit none
+ real, dimension(2,3) :: a
+ real :: x
+ integer :: i
+
+ data a /1.0, 2.0, 3.0, -1.0, -2.0, -3.0/
+
+ do i=1,2000000
+ call bar(a,x)
+ end do
+ print *,x
+end program main
+
+! { dg-final { scan-ipa-dump "bar\[^\\n\]*inline copy in MAIN" "inline" } }
+! { dg-final { cleanup-ipa-dump "inline" } }
diff --git a/gcc/testsuite/gfortran.dg/proc_decl_28.f90 b/gcc/testsuite/gfortran.dg/proc_decl_28.f90
new file mode 100644
index 00000000000..b3a557b1494
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_decl_28.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR 53956: [F03] PROCEDURE w/ interface: Bogus "EXTERNAL attribute conflicts with FUNCTION attribute"
+!
+! Contributed by James van Buskirk
+
+ interface
+ subroutine sub (a)
+ integer, external :: a
+ end subroutine
+ end interface
+
+ procedure(sub) :: proc
+
+end
diff --git a/gcc/testsuite/gfortran.dg/proc_decl_29.f90 b/gcc/testsuite/gfortran.dg/proc_decl_29.f90
new file mode 100644
index 00000000000..6a92118409f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_decl_29.f90
@@ -0,0 +1,30 @@
+! { dg-do compile }
+!
+! PR 42418: PROCEDURE: Rejects interface which is both specific and generic procedure
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+ interface gen
+ procedure gen
+ end interface
+
+ procedure(gen) :: p1
+ procedure(gen2) :: p2 ! { dg-error "may not be generic" }
+ procedure(sf) :: p3 ! { dg-error "may not be a statement function" }
+ procedure(char) :: p4
+
+ interface gen2
+ procedure char
+ end interface
+
+ sf(x) = x**2 ! { dg-warning "Obsolescent feature" }
+
+contains
+
+ subroutine gen
+ end subroutine
+
+ subroutine char
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_11.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_11.f90
index d1c7b4869df..e00594ab7a4 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_11.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_11.f90
@@ -40,11 +40,11 @@ program bsp
p2 => p1
p1 => p2
- p1 => abs ! { dg-error "Type/rank mismatch in return value" }
- p2 => abs ! { dg-error "Type/rank mismatch in return value" }
+ p1 => abs ! { dg-error "Type/rank mismatch in function result" }
+ p2 => abs ! { dg-error "Type/rank mismatch in function result" }
p3 => dsin
- p3 => sin ! { dg-error "Type/rank mismatch in return value" }
+ p3 => sin ! { dg-error "Type/rank mismatch in function result" }
contains
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_15.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_15.f90
index f5a748660e5..f1d3d184c96 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_15.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_15.f90
@@ -19,10 +19,10 @@ p4 => p3
p6 => p1
! invalid
-p1 => iabs ! { dg-error "Type/rank mismatch in return value" }
-p1 => p2 ! { dg-error "Type/rank mismatch in return value" }
-p1 => p5 ! { dg-error "Type/rank mismatch in return value" }
-p6 => iabs ! { dg-error "Type/rank mismatch in return value" }
+p1 => iabs ! { dg-error "Type/rank mismatch in function result" }
+p1 => p2 ! { dg-error "Type/rank mismatch in function result" }
+p1 => p5 ! { dg-error "Type/rank mismatch in function result" }
+p6 => iabs ! { dg-error "Type/rank mismatch in function result" }
p4 => p2 ! { dg-error "is not a subroutine" }
contains
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_32.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_32.f90
index 5664ddecd5d..9cae65be0d8 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_32.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_32.f90
@@ -6,7 +6,7 @@
implicit none
procedure(my_dcos), pointer :: f
- f => my_dcos ! { dg-error "invalid in procedure pointer assigment" }
+ f => my_dcos ! { dg-error "invalid in procedure pointer assignment" }
contains
real elemental function my_dcos(x)
real, intent(in) :: x
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_37.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_37.f90
new file mode 100644
index 00000000000..485e76f6648
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_37.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR 51081: [F03] Proc-pointer assignment: Rejects valid internal proc
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+procedure(), pointer :: p1
+procedure(real), pointer :: p2
+p1 => int2
+p2 => scale ! { dg-error "is invalid in procedure pointer assignment" }
+contains
+ subroutine int2()
+ print *,"..."
+ end subroutine
+end
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90
index 67d5b536068..eb1d84555dd 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90
@@ -24,10 +24,13 @@ type :: t
procedure, pointer, nopass :: ptr6 ! { dg-error "Syntax error" }
procedure(), nopass :: ptr8 ! { dg-error "POINTER attribute is required" }
procedure(pp), pointer, nopass :: ptr9 ! { dg-error "declared in a later PROCEDURE statement" }
- procedure(aaargh), pointer, nopass :: ptr10 ! { dg-error "must be explicit" }
real :: y
end type t
+type :: t2
+ procedure(aaargh), pointer, nopass :: ptr10 ! { dg-error "must be explicit" }
+end type
+
type,bind(c) :: bct ! { dg-error "BIND.C. derived type" }
procedure(), pointer,nopass :: ptr ! { dg-error "cannot be a member of|may not be C interoperable" }
end type bct
@@ -47,4 +50,3 @@ print *,x%ptr3() ! { dg-error "attribute conflicts with" }
call x%y ! { dg-error "Expected type-bound procedure or procedure pointer component" }
end
-
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_35.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_35.f90
new file mode 100644
index 00000000000..75a76b8ebbf
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_35.f90
@@ -0,0 +1,35 @@
+! { dg-do compile }
+!
+! PR 54147: [F03] Interface checks for PPCs & deferred TBPs
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+ interface gen
+ procedure gen
+ end interface
+
+ type t1
+ procedure(gen),pointer,nopass :: p1
+ procedure(gen2),pointer,nopass :: p2 ! { dg-error "may not be generic" }
+ end type
+
+ type t2
+ procedure(sf),pointer,nopass :: p3 ! { dg-error "may not be a statement function" }
+ end type
+
+ type t3
+ procedure(char),pointer,nopass :: p4 ! { dg-error "Intrinsic procedure" }
+ end type
+
+ interface gen2
+ procedure gen
+ end interface
+
+ sf(x) = x**2 ! { dg-warning "Obsolescent feature" }
+
+contains
+
+ subroutine gen
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_result_5.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_result_5.f90
index de035233675..b021ca7c76e 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_result_5.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_result_5.f90
@@ -6,7 +6,7 @@
program test
procedure(real), pointer :: p
- p => f() ! { dg-error "Type/rank mismatch in return value" }
+ p => f() ! { dg-error "Type/rank mismatch in function result" }
contains
function f()
pointer :: f
@@ -17,4 +17,3 @@ contains
f = .true._1
end function f
end program test
-
diff --git a/gcc/testsuite/gfortran.dg/public_private_module_6.f90 b/gcc/testsuite/gfortran.dg/public_private_module_6.f90
new file mode 100644
index 00000000000..85d6930d3d8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/public_private_module_6.f90
@@ -0,0 +1,14 @@
+! { dg-do compile }
+! { dg-options "-O1" }
+!
+! PR fortran/54221
+!
+! Check that the unused PRIVATE "aaaa" variable is optimized away
+!
+
+module m
+ private
+ integer, save :: aaaa
+end module m
+
+! { dg-final { scan-assembler-not "aaaa" } }
diff --git a/gcc/testsuite/gfortran.dg/real_compare_1.f90 b/gcc/testsuite/gfortran.dg/real_compare_1.f90
new file mode 100644
index 00000000000..fd8417706c5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/real_compare_1.f90
@@ -0,0 +1,21 @@
+! { dg-do compile }
+! { dg-options "-Wcompare-reals" }
+program main
+ real :: a
+ complex :: c
+ read (*,*) a
+ read (*,*) c
+ if (a .eq. 3.14) print *,"foo" ! { dg-warning "Equality comparison for REAL" }
+ if (3.14 == a) print *,"foo" ! { dg-warning "Equality comparison for REAL" }
+ if (a .eq. 3) print *,"foo" ! { dg-warning "Equality comparison for REAL" }
+ if (3. == a) print *,"foo" ! { dg-warning "Equality comparison for REAL" }
+ if (a .ne. 4.14) print *,"foo" ! { dg-warning "Inequality comparison for REAL" }
+ if (4.14 /= a) print *,"foo" ! { dg-warning "Inequality comparison for REAL" }
+ if (a .ne. 4) print *,"foo" ! { dg-warning "Inequality comparison for REAL" }
+ if (4 /= a) print *,"foo" ! { dg-warning "Inequality comparison for REAL" }
+
+ if (c .eq. (3.14, 2.11)) print *,"foo" ! { dg-warning "Equality comparison for COMPLEX" }
+ if ((3.14, 2.11) == a) print *,"foo" ! { dg-warning "Equality comparison for COMPLEX" }
+ if (c .ne. (3.14, 2.11)) print *,"foo" ! { dg-warning "Inequality comparison for COMPLEX" }
+ if ((3.14, 2.11) /= a) print *,"foo" ! { dg-warning "Inequality comparison for COMPLEX" }
+end program main
diff --git a/gcc/testsuite/gfortran.dg/typebound_call_24.f03 b/gcc/testsuite/gfortran.dg/typebound_call_24.f03
new file mode 100644
index 00000000000..48d63dc6023
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_call_24.f03
@@ -0,0 +1,24 @@
+! { dg-do compile }
+!
+! PR 54243: [OOP] ICE (segfault) in gfc_type_compatible for invalid BT_CLASS
+!
+! Contributed by Sylwester Arabas <slayoo@staszic.waw.pl>
+
+module aqq_m
+ type :: aqq_t
+ contains
+ procedure :: aqq_init
+ end type
+ contains
+ subroutine aqq_init(this)
+ class(aqq_t) :: this
+ end subroutine
+end module
+
+program bug2
+ use aqq_m
+ class(aqq_t) :: aqq ! { dg-error "must be dummy, allocatable or pointer" }
+ call aqq%aqq_init
+end program
+
+! { dg-final { cleanup-modules "aqq_m" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_override_1.f90 b/gcc/testsuite/gfortran.dg/typebound_override_1.f90
index a7e340e1b0b..96f90256342 100644
--- a/gcc/testsuite/gfortran.dg/typebound_override_1.f90
+++ b/gcc/testsuite/gfortran.dg/typebound_override_1.f90
@@ -19,11 +19,11 @@ module m
type, extends(t1) :: t2
contains
- procedure, nopass :: a => a2 ! { dg-error "Character length mismatch" }
- procedure, nopass :: b => b2 ! { dg-error "should have matching result types and ranks" }
- procedure, nopass :: c => c2 ! { dg-warning "Possible character length mismatch" }
+ procedure, nopass :: a => a2 ! { dg-error "Character length mismatch in function result" }
+ procedure, nopass :: b => b2 ! { dg-error "Type/rank mismatch in function result" }
+ procedure, nopass :: c => c2 ! FIXME: dg-warning "Possible character length mismatch"
procedure, nopass :: d => d2 ! valid, check for commutativity (+,*)
- procedure, nopass :: e => e2 ! { dg-error "Character length mismatch" }
+ procedure, nopass :: e => e2 ! { dg-error "Character length mismatch in function result" }
end type
contains
@@ -110,7 +110,7 @@ module w2
type, extends(tt1) :: tt2
contains
- procedure, nopass :: aa => aa2 ! { dg-warning "Possible character length mismatch" }
+ procedure, nopass :: aa => aa2 ! FIXME: dg-warning "Possible character length mismatch"
end type
contains
diff --git a/gcc/testsuite/gfortran.dg/typebound_override_3.f90 b/gcc/testsuite/gfortran.dg/typebound_override_3.f90
new file mode 100644
index 00000000000..36d84737e18
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_override_3.f90
@@ -0,0 +1,34 @@
+! { dg-do compile }
+!
+! PR 54134: [OOP] ICE overriding derived type bound function with allocatable character as result
+!
+! Contributed by <koen.poppe@cs.kuleuven.be>
+
+module dtAs
+ implicit none
+ type :: A
+ contains
+ procedure, nopass :: name => name_A
+ end type
+contains
+ function name_A() result( name )
+ character(:), allocatable :: name
+ name = "name_A"
+ end function
+end module
+
+module dtBs
+ use dtAs
+ implicit none
+ type, extends( A ) :: B
+ contains
+ procedure, nopass :: name => name_B
+ end type
+contains
+ function name_B() result( name )
+ character(:), allocatable :: name
+ name = "name_B"
+ end function
+end module
+
+! { dg-final { cleanup-modules "dtAs dtBs" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_20.f90 b/gcc/testsuite/gfortran.dg/typebound_proc_20.f90
index b63daf97f95..47c131c5f20 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_20.f90
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_20.f90
@@ -1,5 +1,4 @@
-! { dg-do compile }
-! TODO: make runtime testcase once bug is fixed
+! { dg-do run }
!
! PR fortran/47455
!
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 b/gcc/testsuite/gfortran.dg/typebound_proc_26.f90
new file mode 100644
index 00000000000..0c4264ed131
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_26.f90
@@ -0,0 +1,38 @@
+! { dg-do compile }
+!
+! PR 54147: [F03] Interface checks for PPCs & deferred TBPs
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+ interface gen
+ procedure gen
+ end interface
+
+ type, abstract :: t1
+ contains
+ procedure(gen),deferred,nopass :: p1
+ procedure(gen2),deferred,nopass :: p2 ! { dg-error "may not be generic" }
+ end type
+
+ type, abstract :: t2
+ contains
+ procedure(sf),deferred,nopass :: p3 ! { dg-error "may not be a statement function" }
+ end type
+
+ type, abstract :: t3
+ contains
+ procedure(char),deferred,nopass :: p4 ! { dg-error "Intrinsic procedure" }
+ end type
+
+ interface gen2
+ procedure gen
+ end interface
+
+ sf(x) = x**2 ! { dg-warning "Obsolescent feature" }
+
+contains
+
+ subroutine gen
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_27.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_27.f03
new file mode 100644
index 00000000000..28c44dff120
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_27.f03
@@ -0,0 +1,90 @@
+! { dg-do run }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/47586
+! Missing deep copy for data pointer returning functions when the type
+! has allocatable components
+!
+! Original testcase by Thomas Henlich <thenlich@users.sourceforge.net>
+! Reduced by Tobias Burnus <burnus@net-b.de>
+!
+
+module m
+ type :: tx
+ integer, dimension(:), allocatable :: i
+ end type tx
+ type proc_t
+ procedure(find_x), nopass, pointer :: ppc => null()
+ contains
+ procedure, nopass :: tbp => find_x
+ end type proc_t
+
+contains
+
+ function find_x(that)
+ type(tx), target :: that
+ type(tx), pointer :: find_x
+ find_x => that
+ end function find_x
+
+end module m
+
+program prog
+
+ use m
+
+ type(tx) :: this
+ type(tx), target :: that
+ type(tx), pointer :: p
+
+ type(proc_t) :: tab
+
+ allocate(that%i(2))
+ that%i = [3, 7]
+ p => that
+ this = that ! (1) direct assignment: works (deep copy)
+ that%i = [2, -5]
+ !print *,this%i
+ if(any (this%i /= [3, 7])) call abort()
+ this = p ! (2) using a pointer works as well
+ that%i = [10, 1]
+ !print *,this%i
+ if(any (this%i /= [2, -5])) call abort()
+ this = find_x(that) ! (3) pointer function: used to fail (deep copy missing)
+ that%i = [4, 6]
+ !print *,this%i
+ if(any (this%i /= [10, 1])) call abort()
+ this = tab%tbp(that) ! other case: typebound procedure
+ that%i = [8, 9]
+ !print *,this%i
+ if(any (this%i /= [4, 6])) call abort()
+ tab%ppc => find_x
+ this = tab%ppc(that) ! other case: procedure pointer component
+ that%i = [-1, 2]
+ !print *,this%i
+ if(any (this%i /= [8, 9])) call abort()
+
+end program prog
+
+!
+! We add another check for deep copy by looking at the dump.
+! We use realloc on assignment here: if we do a deep copy for the assignment
+! to `this', we have a reallocation of `this%i'.
+! Thus, the total number of malloc calls should be the number of assignment to
+! `that%i' + the number of assignments to `this' + the number of allocate
+! statements.
+! It is assumed that if the number of allocate is right, the number of
+! deep copies is right too.
+! { dg-final { scan-tree-dump-times "__builtin_malloc" 12 "original" } }
+
+!
+! Realloc are only used for assignments to `that%i'. Don't know why.
+! { dg-final { scan-tree-dump-times "__builtin_realloc" 6 "original" } }
+!
+
+! No leak: Only assignments to `this' use malloc. Assignments to `that%i'
+! take the realloc path after the first assignment, so don't count as a malloc.
+! { dg-final { scan-tree-dump-times "__builtin_free" 7 "original" } }
+!
+! { dg-final { cleanup-tree-dump "original" } }
+
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_6.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_6.f03
index 0f4f3118bf4..3a32cbc96a2 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_6.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_6.f03
@@ -72,7 +72,7 @@ MODULE testmod
PROCEDURE, NOPASS :: subroutine2 => proc_intfunc ! { dg-error "must also be a SUBROUTINE" }
PROCEDURE, NOPASS :: intfunction1 => proc_intfunc ! Ok, matching functions.
PROCEDURE, NOPASS :: intfunction2 => proc_sub ! { dg-error "must also be a FUNCTION" }
- PROCEDURE, NOPASS :: intfunction3 => proc_realfunc ! { dg-error "matching result types" }
+ PROCEDURE, NOPASS :: intfunction3 => proc_realfunc ! { dg-error "Type/rank mismatch in function result" }
! For access-based checks.
PROCEDURE, NOPASS, PUBLIC :: priv => proc_sub ! Ok, increases visibility.
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_9.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_9.f03
index 3a96c0a92d4..a6ca35bb010 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_9.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_9.f03
@@ -21,7 +21,7 @@ MODULE testmod
PROCEDURE, DEFERRED :: p2 ! { dg-error "Interface must be specified" }
PROCEDURE(intf), NOPASS :: p3 ! { dg-error "should be declared DEFERRED" }
PROCEDURE(intf), DEFERRED, NON_OVERRIDABLE :: p4 ! { dg-error "can't both" }
- PROCEDURE(unknown), DEFERRED :: p5 ! { dg-error "has no IMPLICIT|module procedure" }
+ PROCEDURE(unknown), DEFERRED :: p5 ! { dg-error "has no IMPLICIT|must be explicit" }
PROCEDURE(intf), DEFERRED, DEFERRED :: p6 ! { dg-error "Duplicate DEFERRED" }
PROCEDURE(intf), DEFERRED :: p6 => proc ! { dg-error "is invalid for DEFERRED" }
PROCEDURE(), DEFERRED :: p7 ! { dg-error "Interface-name expected" }
diff --git a/gcc/testsuite/gfortran.dg/vect/vect-gems.f90 b/gcc/testsuite/gfortran.dg/vect/vect-gems.f90
index 019b4155844..2f75355cb1f 100644
--- a/gcc/testsuite/gfortran.dg/vect/vect-gems.f90
+++ b/gcc/testsuite/gfortran.dg/vect/vect-gems.f90
@@ -5,9 +5,9 @@ MODULE UPML_mod
IMPLICIT NONE
-PUBLIC UPMLupdateE
-
-PRIVATE
+!PUBLIC UPMLupdateE
+!
+!PRIVATE
real(kind=8), dimension(:,:,:), allocatable :: Dx_ilow
diff --git a/gcc/testsuite/gfortran.dg/warn_conversion_4.f90 b/gcc/testsuite/gfortran.dg/warn_conversion_4.f90
new file mode 100644
index 00000000000..f911741f534
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/warn_conversion_4.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! { dg-options "-Wconversion" }
+!
+! PR fortran/54234
+!
+!
+module fft_mod
+ implicit none
+ integer, parameter :: dp=kind(0.0d0)
+contains
+ subroutine test
+ integer :: x
+ x = int (abs (cmplx(2.3,0.1)))
+ x = int (abs (cmplx(2.3_dp,0.1))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" }
+ x = int (abs (cmplx(2.3,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" }
+ x = int (abs (cmplx(2.3_dp,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" }
+ end subroutine test
+end module fft_mod
diff --git a/gcc/testsuite/gfortran.dg/warn_target_lifetime_1.f90 b/gcc/testsuite/gfortran.dg/warn_target_lifetime_1.f90
new file mode 100644
index 00000000000..fafa0f123bd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/warn_target_lifetime_1.f90
@@ -0,0 +1,47 @@
+! { dg-do compile }
+! { dg-options "-Wtarget-lifetime" }
+!
+! PR fortran/54301
+!
+function f () result (ptr)
+ integer, pointer :: ptr(:)
+ integer, allocatable, target :: a(:)
+ allocate(a(5))
+
+ ptr => a ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" }
+ a = [1,2,3,4,5]
+end function
+
+
+subroutine foo()
+ integer, pointer :: ptr(:)
+ call bar ()
+contains
+ subroutine bar ()
+ integer, target :: tgt(5)
+ ptr => tgt ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" }
+ end subroutine bar
+end subroutine foo
+
+function foo3(tgt)
+ integer, target :: tgt
+ integer, pointer :: foo3
+ foo3 => tgt
+end function
+
+subroutine sub()
+ implicit none
+ integer, pointer :: ptr
+ integer, target :: tgt
+ ptr => tgt
+
+ block
+ integer, pointer :: p2
+ integer, target :: tgt2
+ p2 => tgt2
+ p2 => tgt
+ ptr => p2
+ ptr => tgt
+ ptr => tgt2 ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" }
+ end block
+end subroutine sub
diff --git a/gcc/testsuite/gfortran.dg/warn_target_lifetime_2.f90 b/gcc/testsuite/gfortran.dg/warn_target_lifetime_2.f90
new file mode 100644
index 00000000000..bfcb7aca477
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/warn_target_lifetime_2.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! { dg-options "-Wtarget-lifetime" }
+!
+! PR fortran/54301
+!
+function f()
+ integer, pointer :: f
+ integer, target :: t
+ f => t ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" }
+end
diff --git a/gcc/testsuite/gnat.dg/aggr20.adb b/gcc/testsuite/gnat.dg/aggr20.adb
new file mode 100644
index 00000000000..85111e25b4e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/aggr20.adb
@@ -0,0 +1,10 @@
+-- { dg-do compile }
+
+package body Aggr20 is
+
+ procedure Proc (R : out Rec3) is
+ begin
+ R := (Callback => Nil_Rec2);
+ end;
+
+end Aggr20;
diff --git a/gcc/testsuite/gnat.dg/aggr20.ads b/gcc/testsuite/gnat.dg/aggr20.ads
new file mode 100644
index 00000000000..6405cae9dfb
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/aggr20.ads
@@ -0,0 +1,24 @@
+with Aggr20_Pkg; use Aggr20_Pkg;
+with System;
+
+package Aggr20 is
+
+ type Rec1 is record
+ Address : System.Address;
+ end record;
+
+ Nil_Rec1 : constant Rec1 := (Address => Default_Nil_Address);
+
+ type Rec2 is record
+ Callback : Rec1;
+ end record;
+
+ Nil_Rec2 : constant Rec2 := (Callback => Nil_Rec1);
+
+ type Rec3 is record
+ Callback : Rec2;
+ end record;
+
+ procedure Proc (R : out Rec3);
+
+end Aggr20;
diff --git a/gcc/testsuite/gnat.dg/aggr20_pkg.ads b/gcc/testsuite/gnat.dg/aggr20_pkg.ads
new file mode 100644
index 00000000000..66f5bd58045
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/aggr20_pkg.ads
@@ -0,0 +1,9 @@
+with System;
+
+package Aggr20_Pkg is
+
+ procedure Proc;
+
+ Default_Nil_Address : constant System.Address := Proc'Address;
+
+end Aggr20_Pkg;
diff --git a/gcc/testsuite/gnat.dg/derived_type3.adb b/gcc/testsuite/gnat.dg/derived_type3.adb
new file mode 100644
index 00000000000..7661feb4f18
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/derived_type3.adb
@@ -0,0 +1,9 @@
+-- { dg-do run }
+
+with Derived_Type3_Pkg; use Derived_Type3_Pkg;
+
+procedure Derived_Type3 is
+begin
+ Proc1;
+ Proc2;
+end;
diff --git a/gcc/testsuite/gnat.dg/derived_type3_pkg.adb b/gcc/testsuite/gnat.dg/derived_type3_pkg.adb
new file mode 100644
index 00000000000..ef3de83f018
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/derived_type3_pkg.adb
@@ -0,0 +1,42 @@
+with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
+with Ada.Text_IO; use Ada.Text_IO;
+
+package body Derived_Type3_Pkg is
+
+ type Parent is tagged null record;
+
+ type Child is new Parent with
+ record
+ Image : Ada.Strings.Unbounded.Unbounded_String;
+ end record;
+
+ function Set_Image return Child'class is
+ Local_Data : Child;
+ begin
+ Local_Data.Image := To_Unbounded_String ("Hello");
+ return Local_Data;
+ end Set_Image;
+
+ procedure Proc1 is
+ The_Data : Parent'class := Set_Image;
+ begin
+ Put_Line ("Child'Alignment =" & Child'Alignment'Img);
+ Put_Line ("The_Data'Alignment =" & The_Data'Alignment'Img);
+ end;
+
+ procedure Proc2 is
+
+ procedure Nested (X : Parent'Class) is
+ The_Data : Parent'Class := X;
+ begin
+ Put_Line ("Child'Alignment =" & Child'Alignment'Img);
+ Put_Line ("The_Data'Alignment =" & The_Data'Alignment'Img);
+ end;
+
+ The_Data : Parent'Class := Set_Image;
+
+ begin
+ Nested (The_Data);
+ end;
+
+end Derived_Type3_Pkg;
diff --git a/gcc/testsuite/gnat.dg/derived_type3_pkg.ads b/gcc/testsuite/gnat.dg/derived_type3_pkg.ads
new file mode 100644
index 00000000000..c3d8297db02
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/derived_type3_pkg.ads
@@ -0,0 +1,6 @@
+package Derived_Type3_Pkg is
+
+ procedure Proc1;
+ procedure Proc2;
+
+end Derived_Type3_Pkg;
diff --git a/gcc/testsuite/gnat.dg/discr37.adb b/gcc/testsuite/gnat.dg/discr37.adb
new file mode 100644
index 00000000000..b0e750e8cac
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr37.adb
@@ -0,0 +1,12 @@
+-- { dg-do compile }
+
+package body Discr37 is
+
+ procedure Proc (A : access Child) is
+ B : Derived renames Derived (A.F(1).all);
+ C : Derived renames Derived (B.S(1).all);
+ begin
+ null;
+ end;
+
+end Discr37;
diff --git a/gcc/testsuite/gnat.dg/discr37.ads b/gcc/testsuite/gnat.dg/discr37.ads
new file mode 100644
index 00000000000..7d91b2d594e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr37.ads
@@ -0,0 +1,22 @@
+package Discr37 is
+
+ subtype Index is Integer range 0 .. 100;
+
+ type Root;
+ type Frame_Ptr is access all Root'Class;
+
+ type Arr is array (Index range <>) of Frame_Ptr;
+
+ type Root (Level : Index) is tagged record
+ S : Arr (0 .. Level);
+ end record;
+
+ type Derived (Level : Index) is new Root (Level) with null record;
+
+ type Child is new Derived (0) with record
+ F : Arr (0 .. 100);
+ end record;
+
+ procedure Proc (A : access Child);
+
+end Discr37;
diff --git a/gcc/testsuite/gnat.dg/discr38.adb b/gcc/testsuite/gnat.dg/discr38.adb
new file mode 100644
index 00000000000..363d2c6f606
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr38.adb
@@ -0,0 +1,40 @@
+-- { dg-do compile }
+
+procedure Discr38 is
+
+ type Enum is (OK,
+ NOT_CONNECTED,
+ DISCONNECTED,
+ REQUEST_Q_EMPTY,
+ SERVER_UNAVAILABLE,
+ BUFFER_TOO_SMALL,
+ NO_FREE_SLOT,
+ RAISE_EXCEPTION,
+ REQUEST_CANCELLED,
+ REQUEST_IN_PROGRESS,
+ SERVER_BUSY,
+ BLOCK_ACKNOWLEDGE);
+
+ type R (Status : Enum := OK) is record
+ Status_Block : Integer;
+ case Status is
+ when RAISE_EXCEPTION =>
+ I : Integer;
+ when OK =>
+ Length : Natural;
+ Data : Integer;
+ when others =>
+ null;
+ end case;
+ end record;
+ for R use record
+ Status at 0 range 0 .. 7;
+ Status_Block at 4 range 0 .. 31;
+ Length at 8 range 0 .. 31;
+ end record;
+
+ Nil : constant R := (OK, 1, 0, 1);
+
+begin
+ null;
+end;
diff --git a/gcc/testsuite/gnat.dg/loop_optimization11.adb b/gcc/testsuite/gnat.dg/loop_optimization11.adb
new file mode 100644
index 00000000000..e4e27d48814
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/loop_optimization11.adb
@@ -0,0 +1,19 @@
+-- { dg-do compile }
+-- { dg-options "-O" }
+
+with Loop_Optimization11_Pkg; use Loop_Optimization11_Pkg;
+
+procedure Loop_Optimization11 is
+ Arr : array (Prot, Mem) of Integer := (others => (others => 0));
+begin
+ Put_Line (Img (0) & " ");
+ for I in Arr'Range (1) loop
+ for J in Arr'Range (2) loop
+ declare
+ Elem : Integer renames Arr (I, J);
+ begin
+ Put_Line (Img (Elem));
+ end;
+ end loop;
+ end loop;
+end;
diff --git a/gcc/testsuite/gnat.dg/loop_optimization11_pkg.ads b/gcc/testsuite/gnat.dg/loop_optimization11_pkg.ads
new file mode 100644
index 00000000000..f4248e55241
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/loop_optimization11_pkg.ads
@@ -0,0 +1,11 @@
+package Loop_Optimization11_Pkg is
+
+ function Img (X : Integer) return String;
+
+ procedure Put_Line (Data : String);
+
+ type Prot is (Execute, Execute_Read, Execute_Read_Write);
+
+ type Mem is (Mem_Image, Mem_Mapped, Mem_Private, Unknown);
+
+end Loop_Optimization11_Pkg;
diff --git a/gcc/testsuite/gnat.dg/noreturn4.adb b/gcc/testsuite/gnat.dg/noreturn4.adb
new file mode 100644
index 00000000000..7225f6cb4f2
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn4.adb
@@ -0,0 +1,21 @@
+-- { dg-do compile }
+
+with Noreturn4_Pkg; use Noreturn4_Pkg;
+
+package body Noreturn4 is
+
+ procedure P1 (Msg : String) is
+ begin
+ P1 (Msg, 0);
+ end;
+ procedure P1 (Msg : String; Val : Integer) is
+ begin
+ Fatal_Error (Value (It));
+ end;
+
+ procedure Fatal_Error (X : Integer) is
+ begin
+ raise PRogram_Error;
+ end;
+
+end Noreturn4;
diff --git a/gcc/testsuite/gnat.dg/noreturn4.ads b/gcc/testsuite/gnat.dg/noreturn4.ads
new file mode 100644
index 00000000000..d6216da3361
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn4.ads
@@ -0,0 +1,10 @@
+package Noreturn4 is
+
+ procedure P1 (Msg : String);
+ procedure P1 (Msg : String; Val : Integer);
+ pragma No_Return (P1);
+
+ procedure Fatal_Error (X : Integer);
+ pragma No_Return (Fatal_Error);
+
+end Noreturn4;
diff --git a/gcc/testsuite/gnat.dg/noreturn4_pkg.ads b/gcc/testsuite/gnat.dg/noreturn4_pkg.ads
new file mode 100644
index 00000000000..1d0029e325c
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn4_pkg.ads
@@ -0,0 +1,18 @@
+with Ada.Finalization; use Ada.Finalization;
+
+package Noreturn4_Pkg is
+
+ type Priv is private;
+ function It return Priv;
+ function Value (Obj : Priv) return Integer;
+ function OK (Obj : Priv) return Boolean;
+
+private
+ type Priv is new Controlled with record
+ Value : Integer := 15;
+ end record;
+
+ procedure Adjust (Obj : in out Priv);
+ procedure Finalize (Obj : in out Priv);
+
+end Noreturn4_Pkg;
diff --git a/gcc/testsuite/gnat.dg/noreturn5.adb b/gcc/testsuite/gnat.dg/noreturn5.adb
new file mode 100644
index 00000000000..2f759909769
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn5.adb
@@ -0,0 +1,30 @@
+with Ada.Characters.Handling; use Ada.Characters.Handling;
+with GNAT.OS_Lib; use GNAT.OS_Lib;
+with Text_IO; use Text_IO;
+
+package body Noreturn5 is
+
+ procedure Proc (Arg_Line : Wide_String; Keep_Going : Boolean) is
+ begin
+ Put (To_String (Arg_Line));
+
+ if Keep_Going then
+ raise Constraint_Error;
+ else
+ OS_Exit (1);
+ end if;
+
+ exception
+ when Constraint_Error =>
+ raise;
+
+ when others =>
+ if Keep_Going then
+ raise Constraint_Error;
+ else
+ OS_Exit (1);
+ end if;
+
+ end;
+
+end Noreturn5;
diff --git a/gcc/testsuite/gnat.dg/noreturn5.ads b/gcc/testsuite/gnat.dg/noreturn5.ads
new file mode 100644
index 00000000000..4da5c1e0906
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn5.ads
@@ -0,0 +1,8 @@
+-- { dg-do compile }
+
+package Noreturn5 is
+
+ procedure Proc (Arg_Line : Wide_String; Keep_Going : Boolean);
+ pragma No_Return (Proc);
+
+end Noreturn5;
diff --git a/gcc/testsuite/gnat.dg/opt25.adb b/gcc/testsuite/gnat.dg/opt25.adb
new file mode 100644
index 00000000000..5046d16e3a6
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt25.adb
@@ -0,0 +1,17 @@
+-- { dg-do compile }
+-- { dg-options "-O" }
+
+with Opt25_Pkg1;
+with Opt25_Pkg2;
+
+procedure Opt25 (B1, B2 : in out Boolean) is
+
+ package Local_Pack_Instance is new Opt25_Pkg1 (Boolean, True);
+
+ package Local_Stack is new Opt25_Pkg2 (Integer, 0);
+
+ S : Local_Stack.Stack := Local_Stack.Default_Stack;
+
+begin
+ Local_Pack_Instance.Swap (B1, B2);
+end;
diff --git a/gcc/testsuite/gnat.dg/opt25_pkg1.adb b/gcc/testsuite/gnat.dg/opt25_pkg1.adb
new file mode 100644
index 00000000000..c18694f7b5a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt25_pkg1.adb
@@ -0,0 +1,10 @@
+package body Opt25_Pkg1 is
+
+ procedure Swap (A, B : in out T) is
+ Tmp : T := A;
+ begin
+ A := B;
+ B := Tmp;
+ end Swap;
+
+end Opt25_Pkg1;
diff --git a/gcc/testsuite/gnat.dg/opt25_pkg1.ads b/gcc/testsuite/gnat.dg/opt25_pkg1.ads
new file mode 100644
index 00000000000..7a96f27494a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt25_pkg1.ads
@@ -0,0 +1,11 @@
+generic
+
+ type T is private;
+ Init_Value : T;
+
+package Opt25_Pkg1 is
+
+ Var : T := Init_Value;
+ procedure Swap (A, B : in out T);
+
+end Opt25_Pkg1;
diff --git a/gcc/testsuite/gnat.dg/opt25_pkg2.adb b/gcc/testsuite/gnat.dg/opt25_pkg2.adb
new file mode 100644
index 00000000000..164ef33b4de
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt25_pkg2.adb
@@ -0,0 +1,8 @@
+package body Opt25_Pkg2 is
+
+ function Default_Stack return Stack is
+ begin
+ return Default_Stack_Var;
+ end Default_Stack;
+
+end Opt25_Pkg2;
diff --git a/gcc/testsuite/gnat.dg/opt25_pkg2.ads b/gcc/testsuite/gnat.dg/opt25_pkg2.ads
new file mode 100644
index 00000000000..f1273082ca1
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt25_pkg2.ads
@@ -0,0 +1,20 @@
+generic
+
+ type Value is private;
+ Init_Val : Value;
+
+package Opt25_Pkg2 is
+
+ type Stack (Size : Natural) is private;
+
+ function Default_Stack return Stack;
+
+private
+ type Value_Array is array (Natural range <>) of Value;
+
+ type Stack (Size : Natural) is record
+ Store : Value_Array (1 .. Size);
+ end record;
+
+ Default_Stack_Var : Stack (10);
+end Opt25_Pkg2;
diff --git a/gcc/testsuite/gnat.dg/recursive_call.adb b/gcc/testsuite/gnat.dg/recursive_call.adb
new file mode 100644
index 00000000000..ab60e4491bd
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/recursive_call.adb
@@ -0,0 +1,10 @@
+-- { dg-do compile }
+-- { dg-options "-gnat2012" }
+
+function Recursive_Call (File : String; Status : out Boolean) return Boolean is
+begin
+ if File /= "/dev/null" then
+ return Recursive_Call ("/dev/null", Status);
+ end if;
+ return False;
+end;
diff --git a/gcc/testsuite/go.test/test/named1.go b/gcc/testsuite/go.test/test/named1.go
index 499b77b9615..561d84a43dc 100644
--- a/gcc/testsuite/go.test/test/named1.go
+++ b/gcc/testsuite/go.test/test/named1.go
@@ -37,8 +37,8 @@ func main() {
asBool(true)
asBool(*&b)
asBool(Bool(true))
- asBool(1 != 2) // ERROR "cannot use.*type bool.*as type Bool"
- asBool(i < j) // ERROR "cannot use.*type bool.*as type Bool"
+ asBool(1 != 2) // ok now
+ asBool(i < j) // ok now
_, b = m[2] // ERROR "cannot .* bool.*type Bool"
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 3b9f9c0a514..07a81a5dcfb 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -739,7 +739,7 @@ proc process-message { msgproc msgprefix dgargs } {
# Process the dg- directive, including adding the regular expression
# to the new message entry in dg-messages.
set msgcnt [llength ${dg-messages}]
- catch { eval $msgproc $dgargs }
+ eval $msgproc $dgargs
# If the target expression wasn't satisfied there is no new message.
if { [llength ${dg-messages}] == $msgcnt } {
diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index 51c19d3ade1..c513857cd8d 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -228,6 +228,11 @@ proc scan-assembler-times { args } {
}
}
+proc scan-assembler-times_required_options { args } {
+ global gcc_force_conventional_output
+ return $gcc_force_conventional_output
+}
+
# Utility for scanning demangled compiler result, invoked via dg-final.
# Call pass if pattern is present, otherwise fail.
proc scan-assembler-dem { args } {
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index bc5baa76622..f597316ac4d 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -984,6 +984,14 @@ proc check_named_sections_available { } {
}]
}
+# Return true if the "naked" function attribute is supported on this target.
+
+proc check_effective_target_naked_functions { } {
+ return [check_no_compiler_messages naked_functions assembly {
+ void f() __attribute__((naked));
+ }]
+}
+
# Return 1 if the target supports Fortran real kinds larger than real(8),
# 0 otherwise.
#
@@ -1681,6 +1689,15 @@ proc check_effective_target_llp64 { } {
}]
}
+# Return 1 if long and int have different sizes,
+# 0 otherwise.
+
+proc check_effective_target_long_neq_int { } {
+ return [check_no_compiler_messages long_ne_int object {
+ int dummy[sizeof (int) != sizeof (long) ? 1 : -1];
+ }]
+}
+
# Return 1 if the target supports long double larger than double,
# 0 otherwise.
@@ -2341,6 +2358,19 @@ proc check_effective_target_arm_eabi { } {
}]
}
+# Return 1 if this is an ARM target that adheres to the hard-float variant of
+# the ABI for the ARM Architecture (e.g. -mfloat-abi=hard).
+
+proc check_effective_target_arm_hf_eabi { } {
+ return [check_no_compiler_messages arm_hf_eabi object {
+ #if !defined(__ARM_EABI__) || !defined(__ARM_PCS_VFP)
+ #error not hard-float EABI
+ #else
+ int dummy;
+ #endif
+ }]
+}
+
# Return 1 if this is an ARM target supporting -mcpu=iwmmxt.
# Some multilibs may be incompatible with this option.
@@ -3366,6 +3396,26 @@ proc check_effective_target_natural_alignment_64 { } {
return $et_natural_alignment_64_saved
}
+# Return 1 if all vector types are naturally aligned (aligned to their
+# type-size), 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_natural_alignment { } {
+ global et_vect_natural_alignment
+
+ if [info exists et_vect_natural_alignment_saved] {
+ verbose "check_effective_target_vect_natural_alignment: using cached result" 2
+ } else {
+ set et_vect_natural_alignment_saved 1
+ if { [check_effective_target_arm_eabi] } {
+ set et_vect_natural_alignment_saved 0
+ }
+ }
+ verbose "check_effective_target_vect_natural_alignment: returning $et_vect_natural_alignment_saved" 2
+ return $et_vect_natural_alignment_saved
+}
+
# Return 1 if vector alignment (for types of size 32 bit or less) is reachable, 0 otherwise.
#
# This won't change for different subtargets so cache the result.
@@ -3844,6 +3894,7 @@ proc check_effective_target_sync_int_long { } {
|| [istarget hppa*-*linux*]
|| [istarget s390*-*-*]
|| [istarget powerpc*-*-*]
+ || [istarget crisv32-*-*] || [istarget cris-*-*]
|| ([istarget sparc*-*-*] && [check_effective_target_sparc_v9])
|| [check_effective_target_mips_llsc] } {
set et_sync_int_long_saved 1
@@ -3873,6 +3924,7 @@ proc check_effective_target_sync_char_short { } {
|| [istarget hppa*-*linux*]
|| [istarget s390*-*-*]
|| [istarget powerpc*-*-*]
+ || [istarget crisv32-*-*] || [istarget cris-*-*]
|| ([istarget sparc*-*-*] && [check_effective_target_sparc_v9])
|| [check_effective_target_mips_llsc] } {
set et_sync_char_short_saved 1
diff --git a/gcc/timevar.def b/gcc/timevar.def
index 18d419daa47..149066e9f43 100644
--- a/gcc/timevar.def
+++ b/gcc/timevar.def
@@ -66,8 +66,8 @@ DEFTIMEVAR (TV_PCH_CPP_RESTORE , "PCH preprocessor state restore")
DEFTIMEVAR (TV_CGRAPH , "callgraph construction")
DEFTIMEVAR (TV_CGRAPHOPT , "callgraph optimization")
-DEFTIMEVAR (TV_VARPOOL , "varpool construction")
DEFTIMEVAR (TV_IPA_CONSTANT_PROP , "ipa cp")
+DEFTIMEVAR (TV_IPA_INLINING , "ipa inlining heuristics")
DEFTIMEVAR (TV_IPA_FNSPLIT , "ipa function splitting")
DEFTIMEVAR (TV_IPA_OPT , "ipa various optimizations")
DEFTIMEVAR (TV_IPA_LTO_GIMPLE_IN , "ipa lto gimple in")
@@ -82,22 +82,19 @@ DEFTIMEVAR (TV_LTO , "lto")
DEFTIMEVAR (TV_WHOPR_WPA , "whopr wpa")
DEFTIMEVAR (TV_WHOPR_WPA_IO , "whopr wpa I/O")
DEFTIMEVAR (TV_WHOPR_LTRANS , "whopr ltrans")
-DEFTIMEVAR (TV_WHOPR_WPA_LTRANS_EXEC , "whopr wpa->ltrans")
DEFTIMEVAR (TV_IPA_REFERENCE , "ipa reference")
DEFTIMEVAR (TV_IPA_PROFILE , "ipa profile")
DEFTIMEVAR (TV_IPA_PURE_CONST , "ipa pure const")
DEFTIMEVAR (TV_IPA_PTA , "ipa points-to")
DEFTIMEVAR (TV_IPA_SRA , "ipa SRA")
DEFTIMEVAR (TV_IPA_FREE_LANG_DATA , "ipa free lang data")
+DEFTIMEVAR (TV_IPA_FREE_INLINE_SUMMARY, "ipa free inline summary")
/* Time spent by constructing CFG. */
DEFTIMEVAR (TV_CFG , "cfg construction")
/* Time spent by cleaning up CFG. */
DEFTIMEVAR (TV_CLEANUP_CFG , "cfg cleanup")
DEFTIMEVAR (TV_CFG_VERIFY , "CFG verifier")
DEFTIMEVAR (TV_DELETE_TRIVIALLY_DEAD , "trivially dead code")
-/* Time spent by life analysis. */
-DEFTIMEVAR (TV_LIFE , "life analysis")
-DEFTIMEVAR (TV_LIFE_UPDATE , "life info update")
/* Time spent in dataflow problems. */
DEFTIMEVAR (TV_DF_SCAN , "df scan insns")
@@ -105,7 +102,6 @@ DEFTIMEVAR (TV_DF_MD , "df multiple defs")
DEFTIMEVAR (TV_DF_RD , "df reaching defs")
DEFTIMEVAR (TV_DF_LR , "df live regs")
DEFTIMEVAR (TV_DF_LIVE , "df live&initialized regs")
-DEFTIMEVAR (TV_DF_UREC , "df uninitialized regs 2")
DEFTIMEVAR (TV_DF_CHAIN , "df use-def / def-use chains")
DEFTIMEVAR (TV_DF_WORD_LR , "df live reg subwords")
DEFTIMEVAR (TV_DF_NOTE , "df reg dead/unused notes")
@@ -125,7 +121,9 @@ DEFTIMEVAR (TV_PARSE_FUNC , "parser function body")
DEFTIMEVAR (TV_PARSE_INLINE , "parser inl. func. body")
DEFTIMEVAR (TV_PARSE_INMETH , "parser inl. meth. body")
DEFTIMEVAR (TV_TEMPLATE_INST , "template instantiation")
-DEFTIMEVAR (TV_INLINE_HEURISTICS , "inline heuristics")
+DEFTIMEVAR (TV_FLATTEN_INLINING , "flatten inlining")
+DEFTIMEVAR (TV_EARLY_INLINING , "early inlining heuristics")
+DEFTIMEVAR (TV_INLINE_PARAMETERS , "inline parameters")
DEFTIMEVAR (TV_INTEGRATION , "integration")
DEFTIMEVAR (TV_TREE_GIMPLIFY , "tree gimplify")
DEFTIMEVAR (TV_TREE_EH , "tree eh")
@@ -172,22 +170,18 @@ DEFTIMEVAR (TV_GRAPHITE , "Graphite")
DEFTIMEVAR (TV_GRAPHITE_TRANSFORMS , "Graphite loop transforms")
DEFTIMEVAR (TV_GRAPHITE_DATA_DEPS , "Graphite data dep analysis")
DEFTIMEVAR (TV_GRAPHITE_CODE_GEN , "Graphite code generation")
-DEFTIMEVAR (TV_TREE_LINEAR_TRANSFORM , "tree loop linear")
DEFTIMEVAR (TV_TREE_LOOP_DISTRIBUTION, "tree loop distribution")
DEFTIMEVAR (TV_CHECK_DATA_DEPS , "tree check data dependences")
DEFTIMEVAR (TV_TREE_PREFETCH , "tree prefetching")
DEFTIMEVAR (TV_TREE_LOOP_IVOPTS , "tree iv optimization")
DEFTIMEVAR (TV_PREDCOM , "predictive commoning")
-DEFTIMEVAR (TV_TREE_LOOP_INIT , "tree loop init")
-DEFTIMEVAR (TV_TREE_LOOP_FINI , "tree loop fini")
DEFTIMEVAR (TV_TREE_CH , "tree copy headers")
DEFTIMEVAR (TV_TREE_SSA_UNCPROP , "tree SSA uncprop")
-DEFTIMEVAR (TV_TREE_SSA_TO_NORMAL , "tree SSA to normal")
DEFTIMEVAR (TV_TREE_NRV , "tree NRV optimization")
DEFTIMEVAR (TV_TREE_COPY_RENAME , "tree rename SSA copies")
DEFTIMEVAR (TV_TREE_SSA_VERIFY , "tree SSA verifier")
DEFTIMEVAR (TV_TREE_STMT_VERIFY , "tree STMT verifier")
-DEFTIMEVAR (TV_TREE_SWITCH_CONVERSION, "tree switch initialization conversion")
+DEFTIMEVAR (TV_TREE_SWITCH_CONVERSION, "tree switch conversion")
DEFTIMEVAR (TV_TRANS_MEM , "transactional memory")
DEFTIMEVAR (TV_TREE_STRLEN , "tree strlen optimization")
DEFTIMEVAR (TV_CGRAPH_VERIFY , "callgraph verifier")
@@ -207,10 +201,12 @@ DEFTIMEVAR (TV_DCE , "dead code elimination")
DEFTIMEVAR (TV_DSE1 , "dead store elim1")
DEFTIMEVAR (TV_DSE2 , "dead store elim2")
DEFTIMEVAR (TV_LOOP , "loop analysis")
+DEFTIMEVAR (TV_LOOP_INIT , "loop init")
DEFTIMEVAR (TV_LOOP_MOVE_INVARIANTS , "loop invariant motion")
DEFTIMEVAR (TV_LOOP_UNSWITCH , "loop unswitching")
DEFTIMEVAR (TV_LOOP_UNROLL , "loop unrolling")
DEFTIMEVAR (TV_LOOP_DOLOOP , "loop doloop")
+DEFTIMEVAR (TV_LOOP_FINI , "loop fini")
DEFTIMEVAR (TV_CPROP , "CPROP")
DEFTIMEVAR (TV_PRE , "PRE")
DEFTIMEVAR (TV_HOIST , "code hoisting")
@@ -220,19 +216,15 @@ DEFTIMEVAR (TV_WEB , "web")
DEFTIMEVAR (TV_AUTO_INC_DEC , "auto inc dec")
DEFTIMEVAR (TV_CSE2 , "CSE 2")
DEFTIMEVAR (TV_BRANCH_PROB , "branch prediction")
-DEFTIMEVAR (TV_VPT , "value profile opts")
DEFTIMEVAR (TV_COMBINE , "combiner")
DEFTIMEVAR (TV_IFCVT , "if-conversion")
DEFTIMEVAR (TV_REGMOVE , "regmove")
DEFTIMEVAR (TV_MODE_SWITCH , "mode switching")
DEFTIMEVAR (TV_SMS , "sms modulo scheduling")
DEFTIMEVAR (TV_SCHED , "scheduling")
-DEFTIMEVAR (TV_LOCAL_ALLOC , "local alloc")
-DEFTIMEVAR (TV_GLOBAL_ALLOC , "global alloc")
DEFTIMEVAR (TV_IRA , "integrated RA")
DEFTIMEVAR (TV_RELOAD , "reload")
DEFTIMEVAR (TV_RELOAD_CSE_REGS , "reload CSE regs")
-DEFTIMEVAR (TV_SEQABSTR , "sequence abstraction")
DEFTIMEVAR (TV_GCSE_AFTER_RELOAD , "load CSE after reload")
DEFTIMEVAR (TV_REE , "ree")
DEFTIMEVAR (TV_THREAD_PROLOGUE_AND_EPILOGUE, "thread pro- & epilogue")
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 64379bb3d32..b392635fc75 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -76,10 +76,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-ssa-alias.h"
#include "plugin.h"
-#if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
-#include "dwarf2out.h"
-#endif
-
#if defined(DBX_DEBUGGING_INFO) || defined(XCOFF_DEBUGGING_INFO)
#include "dbxout.h"
#endif
@@ -929,7 +925,7 @@ init_asm_output (const char *name)
if (!strcmp (asm_file_name, "-"))
asm_out_file = stdout;
else
- asm_out_file = fopen (asm_file_name, "w+b");
+ asm_out_file = fopen (asm_file_name, "w");
if (asm_out_file == 0)
fatal_error ("can%'t open %s for writing: %m", asm_file_name);
}
diff --git a/gcc/tracer.c b/gcc/tracer.c
index 7ea67fa0c5e..9b1d724085c 100644
--- a/gcc/tracer.c
+++ b/gcc/tracer.c
@@ -44,7 +44,6 @@
#include "basic-block.h"
#include "fibheap.h"
#include "flags.h"
-#include "timevar.h"
#include "params.h"
#include "coverage.h"
#include "tree-pass.h"
@@ -70,7 +69,7 @@ sbitmap bb_seen;
static inline void
mark_bb_seen (basic_block bb)
{
- unsigned int size = SBITMAP_SIZE_BYTES (bb_seen) * 8;
+ unsigned int size = SBITMAP_SIZE (bb_seen);
if ((unsigned int)bb->index >= size)
bb_seen = sbitmap_resize (bb_seen, size * 2, 0);
@@ -370,14 +369,12 @@ tracer (void)
{
bool changed;
- gcc_assert (current_ir_type () == IR_GIMPLE);
-
if (n_basic_blocks <= NUM_FIXED_BLOCKS + 1)
return 0;
mark_dfs_back_edges ();
if (dump_file)
- dump_flow_info (dump_file, dump_flags);
+ brief_dump_cfg (dump_file, dump_flags);
/* Trace formation is done on the fly inside tail_duplicate */
changed = tail_duplicate ();
@@ -385,7 +382,7 @@ tracer (void)
free_dominance_info (CDI_DOMINATORS);
if (dump_file)
- dump_flow_info (dump_file, dump_flags);
+ brief_dump_cfg (dump_file, dump_flags);
return changed ? TODO_cleanup_cfg : 0;
}
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index 5aae8b213f1..edb678e8c1e 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -32,7 +32,6 @@
#include "params.h"
#include "target.h"
#include "langhooks.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "cfgloop.h"
@@ -1019,7 +1018,6 @@ tm_log_add (basic_block entry_block, tree addr, gimple stmt)
&& !TREE_ADDRESSABLE (type))
{
lp->save_var = create_tmp_reg (TREE_TYPE (lp->addr), "tm_save");
- add_referenced_var (lp->save_var);
lp->stmts = NULL;
lp->entry_block = entry_block;
/* Save addresses separately in dominator order so we don't
@@ -1287,7 +1285,7 @@ tm_log_emit_save_or_restores (basic_block entry_block,
gsi = gsi_last_bb (cond_bb);
/* t1 = status & A_{property}. */
- t1 = make_rename_temp (TREE_TYPE (status), NULL);
+ t1 = create_tmp_reg (TREE_TYPE (status), NULL);
t2 = build_int_cst (TREE_TYPE (status), trxn_prop);
stmt = gimple_build_assign_with_ops (BIT_AND_EXPR, t1, status, t2);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
@@ -2059,7 +2057,7 @@ build_tm_load (location_t loc, tree lhs, tree rhs, gimple_stmt_iterator *gsi)
gimple g;
tree temp;
- temp = make_rename_temp (t, NULL);
+ temp = create_tmp_reg (t, NULL);
gimple_call_set_lhs (gcall, temp);
gsi_insert_before (gsi, gcall, GSI_SAME_STMT);
@@ -2137,7 +2135,7 @@ build_tm_store (location_t loc, tree lhs, tree rhs, gimple_stmt_iterator *gsi)
gimple g;
tree temp;
- temp = make_rename_temp (simple_type, NULL);
+ temp = create_tmp_reg (simple_type, NULL);
t = fold_build1 (VIEW_CONVERT_EXPR, simple_type, rhs);
g = gimple_build_assign (temp, t);
gimple_set_location (g, loc);
@@ -2304,7 +2302,7 @@ expand_call_tm (struct tm_region *region,
if (lhs && requires_barrier (region->entry_block, lhs, stmt)
&& !gimple_call_return_slot_opt_p (stmt))
{
- tree tmp = make_rename_temp (TREE_TYPE (lhs), NULL);
+ tree tmp = create_tmp_reg (TREE_TYPE (lhs), NULL);
location_t loc = gimple_location (stmt);
edge fallthru_edge = NULL;
@@ -2577,7 +2575,7 @@ make_tm_edge (gimple stmt, basic_block bb, struct tm_region *region)
n->label_or_list = tree_cons (NULL, dummy.label_or_list, old);
}
- make_edge (bb, region->entry_block, EDGE_ABNORMAL | EDGE_ABNORMAL_CALL);
+ make_edge (bb, region->entry_block, EDGE_ABNORMAL);
}
@@ -2640,7 +2638,7 @@ expand_transaction (struct tm_region *region)
int flags, subcode;
tm_start = builtin_decl_explicit (BUILT_IN_TM_START);
- status = make_rename_temp (TREE_TYPE (TREE_TYPE (tm_start)), "tm_state");
+ status = create_tmp_reg (TREE_TYPE (TREE_TYPE (tm_start)), "tm_state");
/* ??? There are plenty of bits here we're not computing. */
subcode = gimple_transaction_subcode (region->transaction_stmt);
@@ -2697,7 +2695,7 @@ expand_transaction (struct tm_region *region)
region->entry_block = test_bb;
gsi = gsi_last_bb (test_bb);
- t1 = make_rename_temp (TREE_TYPE (status), NULL);
+ t1 = create_tmp_reg (TREE_TYPE (status), NULL);
t2 = build_int_cst (TREE_TYPE (status), A_ABORTTRANSACTION);
g = gimple_build_assign_with_ops (BIT_AND_EXPR, t1, status, t2);
gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
@@ -4456,7 +4454,6 @@ ipa_tm_insert_gettmclone_call (struct cgraph_node *node,
gettm_fn = builtin_decl_explicit (safe ? BUILT_IN_TM_GETTMCLONE_SAFE
: BUILT_IN_TM_GETTMCLONE_IRR);
ret = create_tmp_var (ptr_type_node, NULL);
- add_referenced_var (ret);
if (!safe)
transaction_subcode_ior (region, GTMA_MAY_ENTER_IRREVOCABLE);
@@ -4478,7 +4475,6 @@ ipa_tm_insert_gettmclone_call (struct cgraph_node *node,
/* Cast return value from tm_gettmclone* into appropriate function
pointer. */
callfn = create_tmp_var (TREE_TYPE (old_fn), NULL);
- add_referenced_var (callfn);
g2 = gimple_build_assign (callfn,
fold_build1 (NOP_EXPR, TREE_TYPE (callfn), ret));
callfn = make_ssa_name (callfn, g2);
@@ -4503,7 +4499,7 @@ ipa_tm_insert_gettmclone_call (struct cgraph_node *node,
{
tree temp;
- temp = make_rename_temp (rettype, 0);
+ temp = create_tmp_reg (rettype, 0);
gimple_call_set_lhs (stmt, temp);
g2 = gimple_build_assign (lhs,
diff --git a/gcc/tree-affine.c b/gcc/tree-affine.c
index 04f166dc5bf..495ffe45603 100644
--- a/gcc/tree-affine.c
+++ b/gcc/tree-affine.c
@@ -22,11 +22,11 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tree.h"
#include "tree-pretty-print.h"
-#include "tree-dump.h"
#include "pointer-set.h"
#include "tree-affine.h"
#include "gimple.h"
#include "flags.h"
+#include "dumpfile.h"
/* Extends CST as appropriate for the affine combinations COMB. */
diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c
index 8307edbce61..be020dab809 100644
--- a/gcc/tree-call-cdce.c
+++ b/gcc/tree-call-cdce.c
@@ -28,9 +28,7 @@ along with GCC; see the file COPYING3. If not see
#include "gimple-pretty-print.h"
#include "tree-flow.h"
#include "gimple.h"
-#include "tree-dump.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "flags.h"
@@ -205,7 +203,7 @@ check_pow (gimple pow_call)
}
else if (bc == SSA_NAME)
{
- tree base_val0, base_var, type;
+ tree base_val0, type;
gimple base_def;
int bit_sz;
@@ -219,11 +217,7 @@ check_pow (gimple pow_call)
return false;
base_val0 = gimple_assign_rhs1 (base_def);
- base_var = SSA_NAME_VAR (base_val0);
- if (!DECL_P (base_var))
- return false;
-
- type = TREE_TYPE (base_var);
+ type = TREE_TYPE (base_val0);
if (TREE_CODE (type) != INTEGER_TYPE)
return false;
bit_sz = TYPE_PRECISION (type);
@@ -380,7 +374,7 @@ gen_conditions_for_domain (tree arg, inp_domain domain,
{
/* Now push a separator. */
if (domain.has_lb)
- VEC_quick_push (gimple, conds, NULL);
+ VEC_quick_push (gimple, conds, (gimple)NULL);
gen_one_condition (arg, domain.ub,
(domain.is_ub_inclusive
@@ -450,7 +444,7 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
{
gimple base_def;
tree base_val0;
- tree base_var, int_type;
+ tree int_type;
tree temp, tempn;
tree cst0;
gimple stmt1, stmt2;
@@ -459,8 +453,7 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
base_def = SSA_NAME_DEF_STMT (base);
base_val0 = gimple_assign_rhs1 (base_def);
- base_var = SSA_NAME_VAR (base_val0);
- int_type = TREE_TYPE (base_var);
+ int_type = TREE_TYPE (base_val0);
bit_sz = TYPE_PRECISION (int_type);
gcc_assert (bit_sz > 0
&& bit_sz <= MAX_BASE_INT_BIT_SIZE);
@@ -503,7 +496,7 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
type is integer. */
/* Push a separator. */
- VEC_quick_push (gimple, conds, NULL);
+ VEC_quick_push (gimple, conds, (gimple)NULL);
temp = create_tmp_var (int_type, "DCE_COND1");
cst0 = build_int_cst (int_type, 0);
@@ -896,7 +889,7 @@ tree_call_cdce (void)
free_dominance_info (CDI_POST_DOMINATORS);
/* As we introduced new control-flow we need to insert PHI-nodes
for the call-clobbers of the remaining call. */
- mark_sym_for_renaming (gimple_vop (cfun));
+ mark_virtual_operands_for_renaming (cfun);
return (TODO_update_ssa | TODO_cleanup_cfg | TODO_ggc_collect
| TODO_remove_unused_locals);
}
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index fe5af704cf8..247f6166a9d 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -29,11 +29,8 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "function.h"
#include "ggc.h"
-#include "langhooks.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "timevar.h"
#include "tree-dump.h"
#include "tree-pass.h"
#include "diagnostic-core.h"
@@ -43,6 +40,7 @@ along with GCC; see the file COPYING3. If not see
#include "value-prof.h"
#include "pointer-set.h"
#include "tree-inline.h"
+#include "target.h"
/* This file contains functions for building the Control Flow Graph (CFG)
for a function tree. */
@@ -125,7 +123,6 @@ static edge find_taken_edge_computed_goto (basic_block, tree);
static edge find_taken_edge_cond_expr (basic_block, tree);
static edge find_taken_edge_switch_expr (basic_block, tree);
static tree find_case_label_for_value (gimple, tree);
-static void group_case_labels_stmt (gimple);
void
init_empty_tree_cfg_for_function (struct function *fn)
@@ -1331,13 +1328,12 @@ cleanup_dead_labels (void)
the ones jumping to the same label.
Eg. three separate entries 1: 2: 3: become one entry 1..3: */
-static void
+void
group_case_labels_stmt (gimple stmt)
{
int old_size = gimple_switch_num_labels (stmt);
int i, j, new_size = old_size;
- tree default_case = NULL_TREE;
- tree default_label = NULL_TREE;
+ basic_block default_bb = NULL;
bool has_default;
/* The default label is always the first case in a switch
@@ -1346,8 +1342,8 @@ group_case_labels_stmt (gimple stmt)
if (!CASE_LOW (gimple_switch_default_label (stmt))
&& !CASE_HIGH (gimple_switch_default_label (stmt)))
{
- default_case = gimple_switch_default_label (stmt);
- default_label = CASE_LABEL (default_case);
+ tree default_case = gimple_switch_default_label (stmt);
+ default_bb = label_to_block (CASE_LABEL (default_case));
has_default = true;
}
else
@@ -1360,15 +1356,17 @@ group_case_labels_stmt (gimple stmt)
i = 0;
while (i < old_size)
{
- tree base_case, base_label, base_high;
+ tree base_case, base_high;
+ basic_block base_bb;
+
base_case = gimple_switch_label (stmt, i);
gcc_assert (base_case);
- base_label = CASE_LABEL (base_case);
+ base_bb = label_to_block (CASE_LABEL (base_case));
/* Discard cases that have the same destination as the
default case. */
- if (base_label == default_label)
+ if (base_bb == default_bb)
{
gimple_switch_set_label (stmt, i, NULL_TREE);
i++;
@@ -1387,13 +1385,13 @@ group_case_labels_stmt (gimple stmt)
while (i < old_size)
{
tree merge_case = gimple_switch_label (stmt, i);
- tree merge_label = CASE_LABEL (merge_case);
+ basic_block merge_bb = label_to_block (CASE_LABEL (merge_case));
double_int bhp1 = double_int_add (tree_to_double_int (base_high),
double_int_one);
/* Merge the cases if they jump to the same place,
and their ranges are consecutive. */
- if (merge_label == base_label
+ if (merge_bb == base_bb
&& double_int_equal_p (tree_to_double_int (CASE_LOW (merge_case)),
bhp1))
{
@@ -1447,12 +1445,11 @@ gimple_can_merge_blocks_p (basic_block a, basic_block b)
{
gimple stmt;
gimple_stmt_iterator gsi;
- gimple_seq phis;
if (!single_succ_p (a))
return false;
- if (single_succ_edge (a)->flags & (EDGE_ABNORMAL | EDGE_EH | EDGE_PRESERVE))
+ if (single_succ_edge (a)->flags & EDGE_COMPLEX)
return false;
if (single_succ (a) != b)
@@ -1497,10 +1494,13 @@ gimple_can_merge_blocks_p (basic_block a, basic_block b)
/* It must be possible to eliminate all phi nodes in B. If ssa form
is not up-to-date and a name-mapping is registered, we cannot eliminate
any phis. Symbols marked for renaming are never a problem though. */
- phis = phi_nodes (b);
- if (!gimple_seq_empty_p (phis)
- && name_mappings_registered_p ())
- return false;
+ for (gsi = gsi_start_phis (b); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gimple phi = gsi_stmt (gsi);
+ /* Technically only new names matter. */
+ if (name_registered_for_update_p (PHI_RESULT (phi)))
+ return false;
+ }
/* When not optimizing, don't merge if we'd lose goto_locus. */
if (!optimize
@@ -1589,7 +1589,7 @@ replace_uses_by (tree name, tree val)
/* This can only occur for virtual operands, since
for the real ones SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name))
would prevent replacement. */
- gcc_checking_assert (!is_gimple_reg (name));
+ gcc_checking_assert (virtual_operand_p (name));
SSA_NAME_OCCURS_IN_ABNORMAL_PHI (val) = 1;
}
}
@@ -1664,21 +1664,21 @@ gimple_merge_blocks (basic_block a, basic_block b)
gimple phi = gsi_stmt (psi);
tree def = gimple_phi_result (phi), use = gimple_phi_arg_def (phi, 0);
gimple copy;
- bool may_replace_uses = !is_gimple_reg (def)
- || may_propagate_copy (def, use);
+ bool may_replace_uses = (virtual_operand_p (def)
+ || may_propagate_copy (def, use));
/* In case we maintain loop closed ssa form, do not propagate arguments
of loop exit phi nodes. */
if (current_loops
&& loops_state_satisfies_p (LOOP_CLOSED_SSA)
- && is_gimple_reg (def)
+ && !virtual_operand_p (def)
&& TREE_CODE (use) == SSA_NAME
&& a->loop_father != b->loop_father)
may_replace_uses = false;
if (!may_replace_uses)
{
- gcc_assert (is_gimple_reg (def));
+ gcc_assert (!virtual_operand_p (def));
/* Note that just emitting the copies is fine -- there is no problem
with ordering of phi nodes. This is because A is the single
@@ -1693,7 +1693,7 @@ gimple_merge_blocks (basic_block a, basic_block b)
/* If we deal with a PHI for virtual operands, we can simply
propagate these without fussing with folding or updating
the stmt. */
- if (!is_gimple_reg (def))
+ if (virtual_operand_p (def))
{
imm_use_iterator iter;
use_operand_p use_p;
@@ -1848,7 +1848,7 @@ remove_bb (basic_block bb)
fprintf (dump_file, "Removing basic block %d\n", bb->index);
if (dump_flags & TDF_DETAILS)
{
- dump_bb (bb, dump_file, 0);
+ dump_bb (dump_file, bb, 0, dump_flags);
fprintf (dump_file, "\n");
}
}
@@ -2067,7 +2067,7 @@ find_case_label_for_value (gimple switch_stmt, tree val)
void
gimple_debug_bb (basic_block bb)
{
- gimple_dump_bb (bb, stderr, 0, TDF_VOPS|TDF_MEMSYMS);
+ dump_bb (stderr, bb, 0, TDF_VOPS|TDF_MEMSYMS|TDF_BLOCKS);
}
@@ -2107,7 +2107,7 @@ gimple_dump_cfg (FILE *file, int flags)
fprintf (file, ";; \n%d basic blocks, %d edges, last basic block %d.\n\n",
n_basic_blocks, n_edges, last_basic_block);
- brief_dump_cfg (file);
+ brief_dump_cfg (file, flags | TDF_COMMENT);
fprintf (file, "\n");
}
@@ -2131,9 +2131,7 @@ dump_cfg_stats (FILE *file)
const char * const fmt_str_1 = "%-30s%13d%11lu%c\n";
const char * const fmt_str_2 = "%-30s%13ld%11lu%c\n";
const char * const fmt_str_3 = "%-43s%11lu%c\n";
- const char *funcname
- = lang_hooks.decl_printable_name (current_function_decl, 2);
-
+ const char *funcname = current_function_name ();
fprintf (file, "\nCFG Statistics for %s\n\n", funcname);
@@ -2188,8 +2186,7 @@ gimple_cfg2vcg (FILE *file)
edge e;
edge_iterator ei;
basic_block bb;
- const char *funcname
- = lang_hooks.decl_printable_name (current_function_decl, 2);
+ const char *funcname = current_function_name ();
/* Write the file header. */
fprintf (file, "graph: { title: \"%s\"\n", funcname);
@@ -3724,6 +3721,8 @@ do_pointer_plus_expr_check:
case WIDEN_SUM_EXPR:
case VEC_WIDEN_MULT_HI_EXPR:
case VEC_WIDEN_MULT_LO_EXPR:
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
case VEC_PACK_TRUNC_EXPR:
case VEC_PACK_SAT_EXPR:
case VEC_PACK_FIX_TRUNC_EXPR:
@@ -3931,6 +3930,14 @@ verify_gimple_assign_single (gimple stmt)
return true;
}
+ if (gimple_clobber_p (stmt)
+ && !DECL_P (lhs))
+ {
+ error ("non-decl LHS in clobber statement");
+ debug_generic_expr (lhs);
+ return true;
+ }
+
if (handled_component_p (lhs))
res |= verify_types_in_gimple_reference (lhs, true);
@@ -4078,6 +4085,7 @@ verify_gimple_return (gimple stmt)
if ((TREE_CODE (op) == RESULT_DECL
&& DECL_BY_REFERENCE (op))
|| (TREE_CODE (op) == SSA_NAME
+ && SSA_NAME_VAR (op)
&& TREE_CODE (SSA_NAME_VAR (op)) == RESULT_DECL
&& DECL_BY_REFERENCE (SSA_NAME_VAR (op))))
op = TREE_TYPE (op);
@@ -4349,7 +4357,7 @@ verify_gimple_phi (gimple phi)
return true;
}
- virtual_p = !is_gimple_reg (phi_result);
+ virtual_p = virtual_operand_p (phi_result);
if (TREE_CODE (phi_result) != SSA_NAME
|| (virtual_p
&& SSA_NAME_VAR (phi_result) != gimple_vop (cfun)))
@@ -4371,7 +4379,7 @@ verify_gimple_phi (gimple phi)
/* Addressable variables do have SSA_NAMEs but they
are not considered gimple values. */
else if ((TREE_CODE (t) == SSA_NAME
- && virtual_p != !is_gimple_reg (t))
+ && virtual_p != virtual_operand_p (t))
|| (virtual_p
&& (TREE_CODE (t) != SSA_NAME
|| SSA_NAME_VAR (t) != gimple_vop (cfun)))
@@ -5011,8 +5019,7 @@ gimple_make_forwarder_block (edge fallthru)
phi = gsi_stmt (gsi);
var = gimple_phi_result (phi);
new_phi = create_phi_node (var, bb);
- SSA_NAME_DEF_STMT (var) = new_phi;
- gimple_phi_set_result (phi, make_ssa_name (SSA_NAME_VAR (var), phi));
+ gimple_phi_set_result (phi, copy_ssa_name (var, phi));
add_phi_arg (new_phi, gimple_phi_result (phi), fallthru,
UNKNOWN_LOCATION);
}
@@ -5371,8 +5378,8 @@ gimple_duplicate_bb (basic_block bb)
for (gsi = gsi_start (phis); !gsi_end_p (gsi); gsi_next (&gsi))
{
phi = gsi_stmt (gsi);
- copy = create_phi_node (gimple_phi_result (phi), new_bb);
- create_new_def_for (gimple_phi_result (copy), copy,
+ copy = create_phi_node (NULL_TREE, new_bb);
+ create_new_def_for (gimple_phi_result (phi), copy,
gimple_phi_result_ptr (copy));
}
@@ -5939,24 +5946,27 @@ replace_ssa_name (tree name, struct pointer_map_t *vars_map,
tree to_context)
{
void **loc;
- tree new_name, decl = SSA_NAME_VAR (name);
+ tree new_name;
- gcc_assert (is_gimple_reg (name));
+ gcc_assert (!virtual_operand_p (name));
loc = pointer_map_contains (vars_map, name);
if (!loc)
{
- replace_by_duplicate_decl (&decl, vars_map, to_context);
-
- push_cfun (DECL_STRUCT_FUNCTION (to_context));
- if (gimple_in_ssa_p (cfun))
- add_referenced_var (decl);
-
- new_name = make_ssa_name (decl, SSA_NAME_DEF_STMT (name));
- if (SSA_NAME_IS_DEFAULT_DEF (name))
- set_default_def (decl, new_name);
- pop_cfun ();
+ tree decl = SSA_NAME_VAR (name);
+ if (decl)
+ {
+ replace_by_duplicate_decl (&decl, vars_map, to_context);
+ new_name = make_ssa_name_fn (DECL_STRUCT_FUNCTION (to_context),
+ decl, SSA_NAME_DEF_STMT (name));
+ if (SSA_NAME_IS_DEFAULT_DEF (name))
+ set_ssa_default_def (DECL_STRUCT_FUNCTION (to_context),
+ decl, new_name);
+ }
+ else
+ new_name = copy_ssa_name_fn (DECL_STRUCT_FUNCTION (to_context),
+ name, SSA_NAME_DEF_STMT (name));
loc = pointer_map_insert (vars_map, name);
*loc = new_name;
@@ -6024,14 +6034,6 @@ move_stmt_op (tree *tp, int *walk_subtrees, void *data)
&& !is_global_var (t))
|| TREE_CODE (t) == CONST_DECL)
replace_by_duplicate_decl (tp, p->vars_map, p->to_context);
-
- if (SSA_VAR_P (t)
- && gimple_in_ssa_p (cfun))
- {
- push_cfun (DECL_STRUCT_FUNCTION (p->to_context));
- add_referenced_var (*tp);
- pop_cfun ();
- }
}
*walk_subtrees = 0;
}
@@ -6233,7 +6235,7 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb,
tree op = PHI_RESULT (phi);
ssa_op_iter oi;
- if (!is_gimple_reg (op))
+ if (virtual_operand_p (op))
{
/* Remove the phi nodes for virtual operands (alias analysis will be
run for the new function, anyway). */
@@ -6465,8 +6467,8 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb,
EXIT_BB so that we can re-attach them to the new basic block that
will replace the region. */
num_entry_edges = EDGE_COUNT (entry_bb->preds);
- entry_pred = (basic_block *) xcalloc (num_entry_edges, sizeof (basic_block));
- entry_flag = (int *) xcalloc (num_entry_edges, sizeof (int));
+ entry_pred = XNEWVEC (basic_block, num_entry_edges);
+ entry_flag = XNEWVEC (int, num_entry_edges);
entry_prob = XNEWVEC (unsigned, num_entry_edges);
i = 0;
for (ei = ei_start (entry_bb->preds); (e = ei_safe_edge (ei)) != NULL;)
@@ -6480,9 +6482,8 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb,
if (exit_bb)
{
num_exit_edges = EDGE_COUNT (exit_bb->succs);
- exit_succ = (basic_block *) xcalloc (num_exit_edges,
- sizeof (basic_block));
- exit_flag = (int *) xcalloc (num_exit_edges, sizeof (int));
+ exit_succ = XNEWVEC (basic_block, num_exit_edges);
+ exit_flag = XNEWVEC (int, num_exit_edges);
exit_prob = XNEWVEC (unsigned, num_exit_edges);
i = 0;
for (ei = ei_start (exit_bb->succs); (e = ei_safe_edge (ei)) != NULL;)
@@ -6631,19 +6632,21 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb,
*/
void
-dump_function_to_file (tree fn, FILE *file, int flags)
+dump_function_to_file (tree fndecl, FILE *file, int flags)
{
- tree arg, var;
+ tree arg, var, old_current_fndecl = current_function_decl;
struct function *dsf;
bool ignore_topmost_bind = false, any_var = false;
basic_block bb;
tree chain;
- bool tmclone = TREE_CODE (fn) == FUNCTION_DECL && decl_is_tm_clone (fn);
+ bool tmclone = (TREE_CODE (fndecl) == FUNCTION_DECL
+ && decl_is_tm_clone (fndecl));
+ struct function *fun = DECL_STRUCT_FUNCTION (fndecl);
- fprintf (file, "%s %s(", lang_hooks.decl_printable_name (fn, 2),
- tmclone ? "[tm-clone] " : "");
+ current_function_decl = fndecl;
+ fprintf (file, "%s %s(", function_name (fun), tmclone ? "[tm-clone] " : "");
- arg = DECL_ARGUMENTS (fn);
+ arg = DECL_ARGUMENTS (fndecl);
while (arg)
{
print_generic_expr (file, TREE_TYPE (arg), dump_flags);
@@ -6658,62 +6661,75 @@ dump_function_to_file (tree fn, FILE *file, int flags)
fprintf (file, ")\n");
if (flags & TDF_VERBOSE)
- print_node (file, "", fn, 2);
+ print_node (file, "", fndecl, 2);
- dsf = DECL_STRUCT_FUNCTION (fn);
+ dsf = DECL_STRUCT_FUNCTION (fndecl);
if (dsf && (flags & TDF_EH))
dump_eh_tree (file, dsf);
- if (flags & TDF_RAW && !gimple_has_body_p (fn))
+ if (flags & TDF_RAW && !gimple_has_body_p (fndecl))
{
- dump_node (fn, TDF_SLIM | flags, file);
+ dump_node (fndecl, TDF_SLIM | flags, file);
+ current_function_decl = old_current_fndecl;
return;
}
- /* Switch CFUN to point to FN. */
- push_cfun (DECL_STRUCT_FUNCTION (fn));
-
/* When GIMPLE is lowered, the variables are no longer available in
BIND_EXPRs, so display them separately. */
- if (cfun && cfun->decl == fn && !VEC_empty (tree, cfun->local_decls))
+ if (fun && fun->decl == fndecl && (fun->curr_properties & PROP_gimple_lcf))
{
unsigned ix;
ignore_topmost_bind = true;
fprintf (file, "{\n");
- FOR_EACH_LOCAL_DECL (cfun, ix, var)
- {
- print_generic_decl (file, var, flags);
- if (flags & TDF_VERBOSE)
- print_node (file, "", var, 4);
- fprintf (file, "\n");
+ if (!VEC_empty (tree, fun->local_decls))
+ FOR_EACH_LOCAL_DECL (fun, ix, var)
+ {
+ print_generic_decl (file, var, flags);
+ if (flags & TDF_VERBOSE)
+ print_node (file, "", var, 4);
+ fprintf (file, "\n");
- any_var = true;
- }
+ any_var = true;
+ }
+ if (gimple_in_ssa_p (cfun))
+ for (ix = 1; ix < num_ssa_names; ++ix)
+ {
+ tree name = ssa_name (ix);
+ if (name && !SSA_NAME_VAR (name))
+ {
+ fprintf (file, " ");
+ print_generic_expr (file, TREE_TYPE (name), flags);
+ fprintf (file, " ");
+ print_generic_expr (file, name, flags);
+ fprintf (file, ";\n");
+
+ any_var = true;
+ }
+ }
}
- if (cfun && cfun->decl == fn && cfun->cfg && basic_block_info)
+ if (fun && fun->decl == fndecl && fun->cfg
+ && basic_block_info_for_function (fun))
{
/* If the CFG has been built, emit a CFG-based dump. */
- check_bb_profile (ENTRY_BLOCK_PTR, file);
if (!ignore_topmost_bind)
fprintf (file, "{\n");
- if (any_var && n_basic_blocks)
+ if (any_var && n_basic_blocks_for_function (fun))
fprintf (file, "\n");
- FOR_EACH_BB (bb)
- gimple_dump_bb (bb, file, 2, flags);
+ FOR_EACH_BB_FN (bb, fun)
+ dump_bb (file, bb, 2, flags | TDF_COMMENT);
fprintf (file, "}\n");
- check_bb_profile (EXIT_BLOCK_PTR, file);
}
- else if (DECL_SAVED_TREE (fn) == NULL)
+ else if (DECL_SAVED_TREE (fndecl) == NULL)
{
/* The function is now in GIMPLE form but the CFG has not been
built yet. Emit the single sequence of GIMPLE statements
that make up its body. */
- gimple_seq body = gimple_body (fn);
+ gimple_seq body = gimple_body (fndecl);
if (gimple_seq_first_stmt (body)
&& gimple_seq_first_stmt (body) == gimple_seq_last_stmt (body)
@@ -6736,8 +6752,7 @@ dump_function_to_file (tree fn, FILE *file, int flags)
int indent;
/* Make a tree based dump. */
- chain = DECL_SAVED_TREE (fn);
-
+ chain = DECL_SAVED_TREE (fndecl);
if (chain && TREE_CODE (chain) == BIND_EXPR)
{
if (ignore_topmost_bind)
@@ -6767,11 +6782,9 @@ dump_function_to_file (tree fn, FILE *file, int flags)
dump_enumerated_decls (file, flags);
fprintf (file, "\n\n");
- /* Restore CFUN. */
- pop_cfun ();
+ current_function_decl = old_current_fndecl;
}
-
/* Dump FUNCTION_DECL FN to stderr using FLAGS (see TDF_* in tree.h) */
DEBUG_FUNCTION void
@@ -6829,7 +6842,7 @@ print_loops_bb (FILE *file, basic_block bb, int indent, int verbosity)
if (verbosity >= 3)
{
fprintf (file, "%s {\n", s_indent);
- gimple_dump_bb (bb, file, indent + 4, TDF_VOPS|TDF_MEMSYMS);
+ dump_bb (file, bb, indent + 4, TDF_VOPS|TDF_MEMSYMS);
fprintf (file, "%s }\n", s_indent);
}
}
@@ -6854,8 +6867,18 @@ print_loop (FILE *file, struct loop *loop, int indent, int verbosity)
s_indent[indent] = '\0';
/* Print loop's header. */
- fprintf (file, "%sloop_%d (header = %d, latch = %d", s_indent,
- loop->num, loop->header->index, loop->latch->index);
+ fprintf (file, "%sloop_%d (", s_indent, loop->num);
+ if (loop->header)
+ fprintf (file, "header = %d", loop->header->index);
+ else
+ {
+ fprintf (file, "deleted)\n");
+ return;
+ }
+ if (loop->latch)
+ fprintf (file, ", latch = %d", loop->latch->index);
+ else
+ fprintf (file, ", multiple latches");
fprintf (file, ", niter = ");
print_generic_expr (file, loop->nb_iterations, 0);
@@ -7623,6 +7646,9 @@ execute_warn_function_return (void)
edge e;
edge_iterator ei;
+ if (!targetm.warn_func_return (cfun->decl))
+ return 0;
+
/* If we have a path to EXIT, then we do return. */
if (TREE_THIS_VOLATILE (cfun->decl)
&& EDGE_COUNT (EXIT_BLOCK_PTR->preds) > 0)
@@ -7844,3 +7870,54 @@ struct gimple_opt_pass pass_warn_unused_result =
0, /* todo_flags_finish */
}
};
+
+
+/* Garbage collection support for edge_def. */
+
+extern void gt_ggc_mx (tree&);
+extern void gt_ggc_mx (gimple&);
+extern void gt_ggc_mx (rtx&);
+extern void gt_ggc_mx (basic_block&);
+
+void
+gt_ggc_mx (edge_def *e)
+{
+ gt_ggc_mx (e->src);
+ gt_ggc_mx (e->dest);
+ if (current_ir_type () == IR_GIMPLE)
+ gt_ggc_mx (e->insns.g);
+ else
+ gt_ggc_mx (e->insns.r);
+ gt_ggc_mx (e->goto_block);
+}
+
+/* PCH support for edge_def. */
+
+extern void gt_pch_nx (tree&);
+extern void gt_pch_nx (gimple&);
+extern void gt_pch_nx (rtx&);
+extern void gt_pch_nx (basic_block&);
+
+void
+gt_pch_nx (edge_def *e)
+{
+ gt_pch_nx (e->src);
+ gt_pch_nx (e->dest);
+ if (current_ir_type () == IR_GIMPLE)
+ gt_pch_nx (e->insns.g);
+ else
+ gt_pch_nx (e->insns.r);
+ gt_pch_nx (e->goto_block);
+}
+
+void
+gt_pch_nx (edge_def *e, gt_pointer_operator op, void *cookie)
+{
+ op (&(e->src), cookie);
+ op (&(e->dest), cookie);
+ if (current_ir_type () == IR_GIMPLE)
+ op (&(e->insns.g), cookie);
+ else
+ op (&(e->insns.r), cookie);
+ op (&(e->goto_block), cookie);
+}
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
index 78583c47e1b..45f33682e30 100644
--- a/gcc/tree-cfgcleanup.c
+++ b/gcc/tree-cfgcleanup.c
@@ -31,8 +31,6 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "langhooks.h"
#include "tree-flow.h"
-#include "timevar.h"
-#include "tree-dump.h"
#include "tree-pass.h"
#include "except.h"
#include "cfgloop.h"
@@ -608,48 +606,13 @@ split_bbs_on_noreturn_calls (void)
return changed;
}
-/* If GIMPLE_OMP_RETURN in basic block BB is unreachable, remove it. */
-
-static bool
-cleanup_omp_return (basic_block bb)
-{
- gimple stmt = last_stmt (bb);
- basic_block control_bb;
-
- if (stmt == NULL
- || gimple_code (stmt) != GIMPLE_OMP_RETURN
- || !single_pred_p (bb))
- return false;
-
- control_bb = single_pred (bb);
- stmt = last_stmt (control_bb);
-
- if (stmt == NULL || gimple_code (stmt) != GIMPLE_OMP_SECTIONS_SWITCH)
- return false;
-
- /* The block with the control statement normally has two entry edges -- one
- from entry, one from continue. If continue is removed, return is
- unreachable, so we remove it here as well. */
- if (EDGE_COUNT (control_bb->preds) == 2)
- return false;
-
- gcc_assert (EDGE_COUNT (control_bb->preds) == 1);
- remove_edge_and_dominated_blocks (single_pred_edge (bb));
- return true;
-}
-
/* Tries to cleanup cfg in basic block BB. Returns true if anything
changes. */
static bool
cleanup_tree_cfg_bb (basic_block bb)
{
- bool retval = false;
-
- if (cleanup_omp_return (bb))
- return true;
-
- retval = cleanup_control_flow_bb (bb);
+ bool retval = cleanup_control_flow_bb (bb);
if (tree_forwarder_block_p (bb, false)
&& remove_forwarder_block (bb))
@@ -774,6 +737,8 @@ repair_loop_structures (void)
{
bitmap changed_bbs;
+ calculate_dominance_info (CDI_DOMINATORS);
+
timevar_push (TV_REPAIR_LOOPS);
changed_bbs = BITMAP_ALLOC (NULL);
fix_loop_structure (changed_bbs);
diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c
index 82c3771b8a5..91599923e87 100644
--- a/gcc/tree-chrec.c
+++ b/gcc/tree-chrec.c
@@ -31,7 +31,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "tree-flow.h"
#include "tree-chrec.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "params.h"
#include "tree-scalar-evolution.h"
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index 928a3f39274..c6c5227e287 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -176,8 +176,7 @@ init_parameter_lattice_values (void)
for (parm = DECL_ARGUMENTS (cfun->decl); parm ; parm = DECL_CHAIN (parm))
if (is_complex_reg (parm)
- && var_ann (parm) != NULL
- && (ssa_name = gimple_default_def (cfun, parm)) != NULL_TREE)
+ && (ssa_name = ssa_default_def (cfun, parm)) != NULL_TREE)
VEC_replace (complex_lattice_t, complex_lattice_values,
SSA_NAME_VERSION (ssa_name), VARYING);
}
@@ -423,7 +422,6 @@ create_one_component_var (tree type, tree orig, const char *prefix,
const char *suffix, enum tree_code code)
{
tree r = create_tmp_var (type, prefix);
- add_referenced_var (r);
DECL_SOURCE_LOCATION (r) = DECL_SOURCE_LOCATION (orig);
DECL_ARTIFICIAL (r) = 1;
@@ -490,18 +488,21 @@ get_component_ssa_name (tree ssa_name, bool imag_p)
ret = VEC_index (tree, complex_ssa_name_components, ssa_name_index);
if (ret == NULL)
{
- ret = get_component_var (SSA_NAME_VAR (ssa_name), imag_p);
+ if (SSA_NAME_VAR (ssa_name))
+ ret = get_component_var (SSA_NAME_VAR (ssa_name), imag_p);
+ else
+ ret = TREE_TYPE (TREE_TYPE (ssa_name));
ret = make_ssa_name (ret, NULL);
/* Copy some properties from the original. In particular, whether it
is used in an abnormal phi, and whether it's uninitialized. */
SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ret)
= SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ssa_name);
- if (TREE_CODE (SSA_NAME_VAR (ssa_name)) == VAR_DECL
- && gimple_nop_p (SSA_NAME_DEF_STMT (ssa_name)))
+ if (SSA_NAME_IS_DEFAULT_DEF (ssa_name)
+ && TREE_CODE (SSA_NAME_VAR (ssa_name)) == VAR_DECL)
{
SSA_NAME_DEF_STMT (ret) = SSA_NAME_DEF_STMT (ssa_name);
- set_default_def (SSA_NAME_VAR (ret), ret);
+ set_ssa_default_def (cfun, SSA_NAME_VAR (ret), ret);
}
VEC_replace (tree, complex_ssa_name_components, ssa_name_index, ret);
@@ -551,7 +552,8 @@ set_component_ssa_name (tree ssa_name, bool imag_p, tree value)
{
/* Replace an anonymous base value with the variable from cvc_lookup.
This should result in better debug info. */
- if (DECL_IGNORED_P (SSA_NAME_VAR (value))
+ if (SSA_NAME_VAR (ssa_name)
+ && (!SSA_NAME_VAR (value) || DECL_IGNORED_P (SSA_NAME_VAR (value)))
&& !DECL_IGNORED_P (SSA_NAME_VAR (ssa_name)))
{
comp = get_component_var (SSA_NAME_VAR (ssa_name), imag_p);
@@ -692,7 +694,7 @@ update_parameter_components (void)
continue;
type = TREE_TYPE (type);
- ssa_name = gimple_default_def (cfun, parm);
+ ssa_name = ssa_default_def (cfun, parm);
if (!ssa_name)
continue;
@@ -722,17 +724,11 @@ update_phi_components (basic_block bb)
lr = get_component_ssa_name (gimple_phi_result (phi), false);
if (TREE_CODE (lr) == SSA_NAME)
- {
- pr = create_phi_node (lr, bb);
- SSA_NAME_DEF_STMT (lr) = pr;
- }
+ pr = create_phi_node (lr, bb);
li = get_component_ssa_name (gimple_phi_result (phi), true);
if (TREE_CODE (li) == SSA_NAME)
- {
- pi = create_phi_node (li, bb);
- SSA_NAME_DEF_STMT (li) = pi;
- }
+ pi = create_phi_node (li, bb);
for (i = 0, n = gimple_phi_num_args (phi); i < n; ++i)
{
@@ -1157,8 +1153,8 @@ expand_complex_div_wide (gimple_stmt_iterator *gsi, tree inner_type,
set_immediate_dominator (CDI_DOMINATORS, bb_false, bb_cond);
}
- rr = make_rename_temp (inner_type, NULL);
- ri = make_rename_temp (inner_type, NULL);
+ rr = create_tmp_reg (inner_type, NULL);
+ ri = create_tmp_reg (inner_type, NULL);
}
/* In the TRUE branch, we compute
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index 274a336ed84..38327b0d2c3 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "tree-data-ref.h"
#include "tree-scalar-evolution.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "langhooks.h"
#include "tree-affine.h"
#include "params.h"
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index ecd496250f8..5342f1973a4 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -28,13 +28,11 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "timevar.h"
#include "ggc.h"
#include "langhooks.h"
#include "flags.h"
#include "function.h"
#include "tree-pretty-print.h"
-#include "tree-dump.h"
#include "gimple.h"
#include "tree-flow.h"
#include "tree-inline.h"
@@ -48,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
/* Counters used to display DFA and SSA statistics. */
struct dfa_stats_d
{
- long num_var_anns;
long num_defs;
long num_uses;
long num_phis;
@@ -66,56 +63,6 @@ static void collect_dfa_stats (struct dfa_stats_d *);
/*---------------------------------------------------------------------------
Dataflow analysis (DFA) routines
---------------------------------------------------------------------------*/
-/* Find all the variables referenced in the function. This function
- builds the global arrays REFERENCED_VARS and CALL_CLOBBERED_VARS.
-
- Note that this function does not look for statement operands, it simply
- determines what variables are referenced in the program and detects
- various attributes for each variable used by alias analysis and the
- optimizer. */
-
-static unsigned int
-find_referenced_vars (void)
-{
- basic_block bb;
- gimple_stmt_iterator si;
-
- FOR_EACH_BB (bb)
- {
- for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
- {
- gimple stmt = gsi_stmt (si);
- if (is_gimple_debug (stmt))
- continue;
- find_referenced_vars_in (gsi_stmt (si));
- }
-
- for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
- find_referenced_vars_in (gsi_stmt (si));
- }
-
- return 0;
-}
-
-struct gimple_opt_pass pass_referenced_vars =
-{
- {
- GIMPLE_PASS,
- "*referenced_vars", /* name */
- NULL, /* gate */
- find_referenced_vars, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_FIND_REFERENCED_VARS, /* tv_id */
- PROP_gimple_leh | PROP_cfg, /* properties_required */
- PROP_referenced_vars, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- }
-};
-
/* Renumber all of the gimple stmt uids. */
@@ -167,56 +114,11 @@ renumber_gimple_stmt_uids_in_blocks (basic_block *blocks, int n_blocks)
}
}
-/* Build a temporary. Make sure and register it to be renamed. */
-
-tree
-make_rename_temp (tree type, const char *prefix)
-{
- tree t = create_tmp_reg (type, prefix);
-
- if (gimple_referenced_vars (cfun))
- add_referenced_var (t);
- if (gimple_in_ssa_p (cfun))
- mark_sym_for_renaming (t);
-
- return t;
-}
-
/*---------------------------------------------------------------------------
Debugging functions
---------------------------------------------------------------------------*/
-/* Dump the list of all the referenced variables in the current function to
- FILE. */
-
-void
-dump_referenced_vars (FILE *file)
-{
- tree var;
- referenced_var_iterator rvi;
-
- fprintf (file, "\nReferenced variables in %s: %u\n\n",
- get_name (current_function_decl), (unsigned) num_referenced_vars);
-
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
- {
- fprintf (file, "Variable: ");
- dump_variable (file, var);
- }
-
- fprintf (file, "\n");
-}
-
-
-/* Dump the list of all the referenced variables to stderr. */
-
-DEBUG_FUNCTION void
-debug_referenced_vars (void)
-{
- dump_referenced_vars (stderr);
-}
-
/* Dump variable VAR and its may-aliases to FILE. */
@@ -254,10 +156,10 @@ dump_variable (FILE *file, tree var)
if (TREE_THIS_VOLATILE (var))
fprintf (file, ", is volatile");
- if (cfun && gimple_default_def (cfun, var))
+ if (cfun && ssa_default_def (cfun, var))
{
fprintf (file, ", default def: ");
- print_generic_expr (file, gimple_default_def (cfun, var), dump_flags);
+ print_generic_expr (file, ssa_default_def (cfun, var), dump_flags);
}
if (DECL_INITIAL (var))
@@ -302,16 +204,6 @@ dump_dfa_stats (FILE *file)
fprintf (file, fmt_str, "", " instances ", "used ");
fprintf (file, "---------------------------------------------------------\n");
- size = num_referenced_vars * sizeof (tree);
- total += size;
- fprintf (file, fmt_str_1, "Referenced variables", (unsigned long)num_referenced_vars,
- SCALE (size), LABEL (size));
-
- size = dfa_stats.num_var_anns * sizeof (struct var_ann_d);
- total += size;
- fprintf (file, fmt_str_1, "Variables annotated", dfa_stats.num_var_anns,
- SCALE (size), LABEL (size));
-
size = dfa_stats.num_uses * sizeof (tree *);
total += size;
fprintf (file, fmt_str_1, "USE operands", dfa_stats.num_uses,
@@ -373,18 +265,11 @@ static void
collect_dfa_stats (struct dfa_stats_d *dfa_stats_p ATTRIBUTE_UNUSED)
{
basic_block bb;
- referenced_var_iterator vi;
- tree var;
gcc_assert (dfa_stats_p);
memset ((void *)dfa_stats_p, 0, sizeof (struct dfa_stats_d));
- /* Count all the variable annotations. */
- FOR_EACH_REFERENCED_VAR (cfun, var, vi)
- if (var_ann (var))
- dfa_stats_p->num_var_anns++;
-
/* Walk all the statements in the function counting references. */
FOR_EACH_BB (bb)
{
@@ -414,195 +299,74 @@ collect_dfa_stats (struct dfa_stats_d *dfa_stats_p ATTRIBUTE_UNUSED)
/*---------------------------------------------------------------------------
Miscellaneous helpers
---------------------------------------------------------------------------*/
-/* Callback for walk_tree. Used to collect variables referenced in
- the function. */
-
-static tree
-find_vars_r (tree *tp, int *walk_subtrees, void *data)
-{
- struct function *fn = (struct function *) data;
-
- /* If we are reading the lto info back in, we need to rescan the
- referenced vars. */
- if (TREE_CODE (*tp) == SSA_NAME)
- add_referenced_var_1 (SSA_NAME_VAR (*tp), fn);
-
- /* If T is a regular variable that the optimizers are interested
- in, add it to the list of variables. */
- else if ((TREE_CODE (*tp) == VAR_DECL
- && !is_global_var (*tp))
- || TREE_CODE (*tp) == PARM_DECL
- || TREE_CODE (*tp) == RESULT_DECL)
- add_referenced_var_1 (*tp, fn);
-
- /* Type, _DECL and constant nodes have no interesting children.
- Ignore them. */
- else if (IS_TYPE_OR_DECL_P (*tp) || CONSTANT_CLASS_P (*tp))
- *walk_subtrees = 0;
-
- return NULL_TREE;
-}
-
-/* Find referenced variables in STMT. */
-
-void
-find_referenced_vars_in (gimple stmt)
-{
- size_t i;
-
- if (gimple_code (stmt) != GIMPLE_PHI)
- {
- for (i = 0; i < gimple_num_ops (stmt); i++)
- walk_tree (gimple_op_ptr (stmt, i), find_vars_r, cfun, NULL);
- }
- else
- {
- walk_tree (gimple_phi_result_ptr (stmt), find_vars_r, cfun, NULL);
-
- for (i = 0; i < gimple_phi_num_args (stmt); i++)
- {
- tree arg = gimple_phi_arg_def (stmt, i);
- walk_tree (&arg, find_vars_r, cfun, NULL);
- }
- }
-}
-
-
-/* Lookup UID in the referenced_vars hashtable and return the associated
- variable. */
-
-tree
-referenced_var_lookup (struct function *fn, unsigned int uid)
-{
- tree h;
- struct tree_decl_minimal in;
- in.uid = uid;
- h = (tree) htab_find_with_hash (gimple_referenced_vars (fn), &in, uid);
- return h;
-}
-
-/* Check if TO is in the referenced_vars hash table and insert it if not.
- Return true if it required insertion. */
-
-static bool
-referenced_var_check_and_insert (tree to, struct function *fn)
-{
- tree *loc;
- struct tree_decl_minimal in;
- unsigned int uid = DECL_UID (to);
-
- in.uid = uid;
- loc = (tree *) htab_find_slot_with_hash (gimple_referenced_vars (fn),
- &in, uid, INSERT);
- if (*loc)
- {
- /* DECL_UID has already been entered in the table. Verify that it is
- the same entry as TO. See PR 27793. */
- gcc_assert (*loc == to);
- return false;
- }
-
- *loc = to;
- return true;
-}
/* Lookup VAR UID in the default_defs hashtable and return the associated
variable. */
tree
-gimple_default_def (struct function *fn, tree var)
+ssa_default_def (struct function *fn, tree var)
{
struct tree_decl_minimal ind;
struct tree_ssa_name in;
- gcc_assert (SSA_VAR_P (var));
+ gcc_assert (TREE_CODE (var) == VAR_DECL
+ || TREE_CODE (var) == PARM_DECL
+ || TREE_CODE (var) == RESULT_DECL);
in.var = (tree)&ind;
ind.uid = DECL_UID (var);
return (tree) htab_find_with_hash (DEFAULT_DEFS (fn), &in, DECL_UID (var));
}
-/* Insert the pair VAR's UID, DEF into the default_defs hashtable. */
+/* Insert the pair VAR's UID, DEF into the default_defs hashtable
+ of function FN. */
void
-set_default_def (tree var, tree def)
+set_ssa_default_def (struct function *fn, tree var, tree def)
{
struct tree_decl_minimal ind;
struct tree_ssa_name in;
void **loc;
- gcc_assert (SSA_VAR_P (var));
+ gcc_assert (TREE_CODE (var) == VAR_DECL
+ || TREE_CODE (var) == PARM_DECL
+ || TREE_CODE (var) == RESULT_DECL);
in.var = (tree)&ind;
ind.uid = DECL_UID (var);
if (!def)
{
- loc = htab_find_slot_with_hash (DEFAULT_DEFS (cfun), &in,
- DECL_UID (var), INSERT);
- gcc_assert (*loc);
- htab_remove_elt (DEFAULT_DEFS (cfun), *loc);
+ loc = htab_find_slot_with_hash (DEFAULT_DEFS (fn), &in,
+ DECL_UID (var), NO_INSERT);
+ if (*loc)
+ {
+ SSA_NAME_IS_DEFAULT_DEF (*(tree *)loc) = false;
+ htab_clear_slot (DEFAULT_DEFS (fn), loc);
+ }
return;
}
gcc_assert (TREE_CODE (def) == SSA_NAME && SSA_NAME_VAR (def) == var);
- loc = htab_find_slot_with_hash (DEFAULT_DEFS (cfun), &in,
+ loc = htab_find_slot_with_hash (DEFAULT_DEFS (fn), &in,
DECL_UID (var), INSERT);
/* Default definition might be changed by tail call optimization. */
if (*loc)
SSA_NAME_IS_DEFAULT_DEF (*(tree *) loc) = false;
- *(tree *) loc = def;
/* Mark DEF as the default definition for VAR. */
- SSA_NAME_IS_DEFAULT_DEF (def) = true;
+ *(tree *) loc = def;
+ SSA_NAME_IS_DEFAULT_DEF (def) = true;
}
-/* Add VAR to the list of referenced variables if it isn't already there. */
+/* Retrieve or create a default definition for VAR. */
-bool
-add_referenced_var_1 (tree var, struct function *fn)
+tree
+get_or_create_ssa_default_def (struct function *fn, tree var)
{
- gcc_checking_assert (TREE_CODE (var) == VAR_DECL
- || TREE_CODE (var) == PARM_DECL
- || TREE_CODE (var) == RESULT_DECL);
-
- gcc_checking_assert ((TREE_CODE (var) == VAR_DECL
- && VAR_DECL_IS_VIRTUAL_OPERAND (var))
- || !is_global_var (var));
-
- /* Insert VAR into the referenced_vars hash table if it isn't present
- and allocate its var-annotation. */
- if (referenced_var_check_and_insert (var, fn))
+ tree ddef = ssa_default_def (fn, var);
+ if (ddef == NULL_TREE)
{
- gcc_checking_assert (!*DECL_VAR_ANN_PTR (var));
- *DECL_VAR_ANN_PTR (var) = ggc_alloc_cleared_var_ann_d ();
- return true;
+ ddef = make_ssa_name (var, gimple_build_nop ());
+ set_ssa_default_def (cfun, var, ddef);
}
-
- return false;
-}
-
-/* Remove VAR from the list of referenced variables and clear its
- var-annotation. */
-
-void
-remove_referenced_var (tree var)
-{
- var_ann_t v_ann;
- struct tree_decl_minimal in;
- void **loc;
- unsigned int uid = DECL_UID (var);
-
- gcc_checking_assert (TREE_CODE (var) == VAR_DECL
- || TREE_CODE (var) == PARM_DECL
- || TREE_CODE (var) == RESULT_DECL);
-
- gcc_checking_assert (!is_global_var (var));
-
- v_ann = var_ann (var);
- ggc_free (v_ann);
- *DECL_VAR_ANN_PTR (var) = NULL;
-
- in.uid = uid;
- loc = htab_find_slot_with_hash (gimple_referenced_vars (cfun), &in, uid,
- NO_INSERT);
- htab_clear_slot (gimple_referenced_vars (cfun), loc);
+ return ddef;
}
@@ -939,3 +703,94 @@ stmt_references_abnormal_ssa_name (gimple stmt)
return false;
}
+
+/* Pair of tree and a sorting index, for dump_enumerated_decls. */
+struct GTY(()) numbered_tree_d
+{
+ tree t;
+ int num;
+};
+typedef struct numbered_tree_d numbered_tree;
+
+DEF_VEC_O (numbered_tree);
+DEF_VEC_ALLOC_O (numbered_tree, heap);
+
+/* Compare two declarations references by their DECL_UID / sequence number.
+ Called via qsort. */
+
+static int
+compare_decls_by_uid (const void *pa, const void *pb)
+{
+ const numbered_tree *nt_a = ((const numbered_tree *)pa);
+ const numbered_tree *nt_b = ((const numbered_tree *)pb);
+
+ if (DECL_UID (nt_a->t) != DECL_UID (nt_b->t))
+ return DECL_UID (nt_a->t) - DECL_UID (nt_b->t);
+ return nt_a->num - nt_b->num;
+}
+
+/* Called via walk_gimple_stmt / walk_gimple_op by dump_enumerated_decls. */
+static tree
+dump_enumerated_decls_push (tree *tp, int *walk_subtrees, void *data)
+{
+ struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
+ VEC (numbered_tree, heap) **list = (VEC (numbered_tree, heap) **) &wi->info;
+ numbered_tree nt;
+
+ if (!DECL_P (*tp))
+ return NULL_TREE;
+ nt.t = *tp;
+ nt.num = VEC_length (numbered_tree, *list);
+ VEC_safe_push (numbered_tree, heap, *list, &nt);
+ *walk_subtrees = 0;
+ return NULL_TREE;
+}
+
+/* Find all the declarations used by the current function, sort them by uid,
+ and emit the sorted list. Each declaration is tagged with a sequence
+ number indicating when it was found during statement / tree walking,
+ so that TDF_NOUID comparisons of anonymous declarations are still
+ meaningful. Where a declaration was encountered more than once, we
+ emit only the sequence number of the first encounter.
+ FILE is the dump file where to output the list and FLAGS is as in
+ print_generic_expr. */
+void
+dump_enumerated_decls (FILE *file, int flags)
+{
+ basic_block bb;
+ struct walk_stmt_info wi;
+ VEC (numbered_tree, heap) *decl_list = VEC_alloc (numbered_tree, heap, 40);
+
+ memset (&wi, '\0', sizeof (wi));
+ wi.info = (void*) decl_list;
+ FOR_EACH_BB (bb)
+ {
+ gimple_stmt_iterator gsi;
+
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ if (!is_gimple_debug (gsi_stmt (gsi)))
+ walk_gimple_stmt (&gsi, NULL, dump_enumerated_decls_push, &wi);
+ }
+ decl_list = (VEC (numbered_tree, heap) *) wi.info;
+ VEC_qsort (numbered_tree, decl_list, compare_decls_by_uid);
+ if (VEC_length (numbered_tree, decl_list))
+ {
+ unsigned ix;
+ numbered_tree *ntp;
+ tree last = NULL_TREE;
+
+ fprintf (file, "Declarations used by %s, sorted by DECL_UID:\n",
+ current_function_name ());
+ FOR_EACH_VEC_ELT (numbered_tree, decl_list, ix, ntp)
+ {
+ if (ntp->t == last)
+ continue;
+ fprintf (file, "%d: ", ntp->num);
+ print_generic_decl (file, ntp->t, flags);
+ fprintf (file, "\n");
+ last = ntp->t;
+ }
+ }
+ VEC_free (numbered_tree, heap, decl_list);
+}
+
diff --git a/gcc/tree-diagnostic.c b/gcc/tree-diagnostic.c
index 774b6c44dd0..1276cbea6af 100644
--- a/gcc/tree-diagnostic.c
+++ b/gcc/tree-diagnostic.c
@@ -27,7 +27,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic.h"
#include "tree-pretty-print.h"
#include "tree-diagnostic.h"
-#include "tree-pass.h" /* TDF_DIAGNOSTIC */
+#include "dumpfile.h" /* TDF_DIAGNOSTIC */
#include "langhooks.h"
#include "langhooks-def.h"
#include "vec.h"
diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c
index 1932f3d7ec9..b74208007fb 100644
--- a/gcc/tree-dump.c
+++ b/gcc/tree-dump.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "toplev.h"
#include "tree-dump.h"
-#include "tree-pass.h"
#include "langhooks.h"
#include "tree-iterator.h"
diff --git a/gcc/tree-dump.h b/gcc/tree-dump.h
index 6b7df729ead..50faf4b8495 100644
--- a/gcc/tree-dump.h
+++ b/gcc/tree-dump.h
@@ -23,7 +23,7 @@ along with GCC; see the file COPYING3. If not see
#define GCC_TREE_DUMP_H
#include "splay-tree.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
typedef struct dump_info *dump_info_p;
@@ -86,12 +86,10 @@ extern void dump_pointer (dump_info_p, const char *, void *);
extern void dump_int (dump_info_p, const char *, int);
extern void dump_string (dump_info_p, const char *);
extern void dump_string_field (dump_info_p, const char *, const char *);
-extern void dump_stmt (dump_info_p, const_tree);
extern void queue_and_dump_index (dump_info_p, const char *, const_tree, int);
extern void queue_and_dump_type (dump_info_p, const_tree);
extern void dump_function (int, tree);
extern void dump_function_to_file (tree, FILE *, int);
-extern void dump_enumerated_decls (FILE *, int);
extern void debug_function (tree, int);
extern int dump_flag (dump_info_p, int, const_tree);
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 3b35ca42862..9220931ffff 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -28,11 +28,8 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "pointer-set.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "tree-inline.h"
-#include "tree-iterator.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "langhooks.h"
#include "ggc.h"
#include "diagnostic-core.h"
@@ -3253,22 +3250,18 @@ sink_clobbers (basic_block bb)
for (gsi_prev (&gsi); !gsi_end_p (gsi); gsi_prev (&gsi))
{
gimple stmt = gsi_stmt (gsi);
- tree vdef;
if (is_gimple_debug (stmt))
continue;
if (gimple_code (stmt) == GIMPLE_LABEL)
break;
unlink_stmt_vdef (stmt);
gsi_remove (&gsi, false);
- vdef = gimple_vdef (stmt);
- if (vdef && TREE_CODE (vdef) == SSA_NAME)
- {
- release_ssa_name (vdef);
- vdef = SSA_NAME_VAR (vdef);
- mark_sym_for_renaming (vdef);
- gimple_set_vdef (stmt, vdef);
- gimple_set_vuse (stmt, vdef);
- }
+ /* Trigger the operand scanner to cause renaming for virtual
+ operands for this statement.
+ ??? Given the simple structure of this code manually
+ figuring out the reaching definition should not be too hard. */
+ if (gimple_vuse (stmt))
+ gimple_set_vuse (stmt, NULL_TREE);
gsi_insert_before (&dgsi, stmt, GSI_SAME_STMT);
}
@@ -3864,7 +3857,7 @@ cleanup_empty_eh_merge_phis (basic_block new_bb, basic_block old_bb,
}
/* If we didn't find the PHI, but it's a VOP, remember to rename
it later, assuming all other tests succeed. */
- else if (!is_gimple_reg (nresult))
+ else if (virtual_operand_p (nresult))
bitmap_set_bit (rename_virts, SSA_NAME_VERSION (nresult));
/* If we didn't find the PHI, and it's a real variable, we know
from the fact that OLD_BB is tree_empty_eh_handler_p that the
diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c
index 25da389abbb..b30469c8e59 100644
--- a/gcc/tree-emutls.c
+++ b/gcc/tree-emutls.c
@@ -312,8 +312,8 @@ new_emutls_decl (tree decl, tree alias_of)
if (!DECL_COMMON (to) && targetm.emutls.var_section)
{
DECL_SECTION_NAME (to)
- = build_string (strlen (targetm.emutls.tmpl_section),
- targetm.emutls.tmpl_section);
+ = build_string (strlen (targetm.emutls.var_section),
+ targetm.emutls.var_section);
}
/* If this variable is defined locally, then we need to initialize the
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h
index 748a97c236e..acb2cc40dcb 100644
--- a/gcc/tree-flow-inline.h
+++ b/gcc/tree-flow-inline.h
@@ -35,15 +35,6 @@ gimple_in_ssa_p (const struct function *fun)
return fun && fun->gimple_df && fun->gimple_df->in_ssa_p;
}
-/* Array of all variables referenced in the function. */
-static inline htab_t
-gimple_referenced_vars (const struct function *fun)
-{
- if (!fun || !fun->gimple_df)
- return NULL;
- return fun->gimple_df->referenced_vars;
-}
-
/* Artificial variable used for the virtual operand FUD chain. */
static inline tree
gimple_vop (const struct function *fun)
@@ -98,53 +89,6 @@ next_htab_element (htab_iterator *hti)
return NULL;
}
-/* Get the variable with uid UID from the list of referenced vars. */
-
-static inline tree
-referenced_var (unsigned int uid)
-{
- tree var = referenced_var_lookup (cfun, uid);
- gcc_assert (var || uid == 0);
- return var;
-}
-
-/* Initialize ITER to point to the first referenced variable in the
- referenced_vars hashtable, and return that variable. */
-
-static inline tree
-first_referenced_var (struct function *fn, referenced_var_iterator *iter)
-{
- return (tree) first_htab_element (&iter->hti,
- gimple_referenced_vars (fn));
-}
-
-/* Return true if we have hit the end of the referenced variables ITER is
- iterating through. */
-
-static inline bool
-end_referenced_vars_p (const referenced_var_iterator *iter)
-{
- return end_htab_p (&iter->hti);
-}
-
-/* Make ITER point to the next referenced_var in the referenced_var hashtable,
- and return that variable. */
-
-static inline tree
-next_referenced_var (referenced_var_iterator *iter)
-{
- return (tree) next_htab_element (&iter->hti);
-}
-
-/* Return the variable annotation for T, which must be a _DECL node.
- Return NULL if the variable annotation doesn't already exist. */
-static inline var_ann_t
-var_ann (const_tree t)
-{
- const var_ann_t *p = DECL_VAR_ANN_PTR (t);
- return p ? *p : NULL;
-}
-
/* Get the number of the next statement uid to be allocated. */
static inline unsigned int
gimple_stmt_max_uid (struct function *fn)
@@ -558,33 +502,6 @@ phi_arg_index_from_use (use_operand_p use)
return index;
}
-/* Mark VAR as used, so that it'll be preserved during rtl expansion. */
-
-static inline void
-set_is_used (tree var)
-{
- var_ann_t ann = var_ann (var);
- ann->used = true;
-}
-
-/* Clear VAR's used flag. */
-
-static inline void
-clear_is_used (tree var)
-{
- var_ann_t ann = var_ann (var);
- ann->used = false;
-}
-
-/* Return true if VAR is marked as used. */
-
-static inline bool
-is_used_p (tree var)
-{
- var_ann_t ann = var_ann (var);
- return ann->used;
-}
-
/* Return true if T (assumed to be a DECL) is a global variable.
A variable is considered global if its storage is not automatic. */
@@ -881,7 +798,7 @@ delink_stmt_imm_use (gimple stmt)
ssa_op_iter iter;
use_operand_p use_p;
- if (ssa_operands_active ())
+ if (ssa_operands_active (cfun))
FOR_EACH_PHI_OR_STMT_USE (use_p, stmt, iter, SSA_OP_ALL_USES)
delink_imm_use (use_p);
}
@@ -1227,12 +1144,46 @@ make_ssa_name (tree var, gimple stmt)
return make_ssa_name_fn (cfun, var, stmt);
}
+/* Return an SSA_NAME node using the template SSA name NAME defined in
+ statement STMT in function cfun. */
+
+static inline tree
+copy_ssa_name (tree var, gimple stmt)
+{
+ return copy_ssa_name_fn (cfun, var, stmt);
+}
+
+/* Creates a duplicate of a SSA name NAME tobe defined by statement STMT
+ in function cfun. */
+
+static inline tree
+duplicate_ssa_name (tree var, gimple stmt)
+{
+ return duplicate_ssa_name_fn (cfun, var, stmt);
+}
+
+/* Return an anonymous SSA_NAME node for type TYPE defined in statement STMT
+ in function cfun. Arrange so that it uses NAME in dumps. */
+
+static inline tree
+make_temp_ssa_name (tree type, gimple stmt, const char *name)
+{
+ tree ssa_name;
+ gcc_checking_assert (TYPE_P (type));
+ ssa_name = make_ssa_name_fn (cfun, type, stmt);
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (ssa_name, get_identifier (name));
+ return ssa_name;
+}
+
/* Returns the base object and a constant BITS_PER_UNIT offset in *POFFSET that
denotes the starting address of the memory access EXP.
Returns NULL_TREE if the offset is not constant or any component
is not BITS_PER_UNIT-aligned.
VALUEIZE if non-NULL is used to valueize SSA names. It should return
its argument or a constant if the argument is known to be constant. */
+/* ??? This is a static inline here to avoid the overhead of the indirect calls
+ to VALUEIZE. But is this overhead really that significant? And should we
+ perhaps just rely on WHOPR to specialize the function? */
static inline tree
get_addr_base_and_unit_offset_1 (tree exp, HOST_WIDE_INT *poffset,
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h
index cf7883985c2..15c14654b22 100644
--- a/gcc/tree-flow.h
+++ b/gcc/tree-flow.h
@@ -45,9 +45,6 @@ struct GTY(()) tm_restart_node {
gimple_ accessor defined in tree-flow-inline.h, all publicly modifiable
fields should have gimple_set accessor. */
struct GTY(()) gimple_df {
- /* Array of all variables referenced in the function. */
- htab_t GTY((param_is (union tree_node))) referenced_vars;
-
/* A vector of all the noreturn calls passed to modify_stmt.
cleanup_control_flow uses it to detect cases where a mid-block
indirect call has been turned into a noreturn call. When this
@@ -77,9 +74,11 @@ struct GTY(()) gimple_df {
for this variable with an empty defining statement. */
htab_t GTY((param_is (union tree_node))) default_defs;
- /* Symbols whose SSA form needs to be updated or created for the first
- time. */
- bitmap syms_to_rename;
+ /* True if there are any symbols that need to be renamed. */
+ unsigned int ssa_renaming_needed : 1;
+
+ /* True if all virtual operands need to be renamed. */
+ unsigned int rename_vops : 1;
/* True if the code is in ssa form. */
unsigned int in_ssa_p : 1;
@@ -100,7 +99,6 @@ struct GTY(()) gimple_df {
#define SSANAMES(fun) (fun)->gimple_df->ssa_names
#define MODIFIED_NORETURN_CALLS(fun) (fun)->gimple_df->modified_noreturn_calls
#define DEFAULT_DEFS(fun) (fun)->gimple_df->default_defs
-#define SYMS_TO_RENAME(fun) (fun)->gimple_df->syms_to_rename
typedef struct
{
@@ -176,28 +174,6 @@ enum need_phi_state {
};
-struct GTY(()) var_ann_d {
- /* Used when building base variable structures in a var_map. */
- unsigned base_var_processed : 1;
-
- /* Nonzero if this variable was used after SSA optimizations were
- applied. We set this when translating out of SSA form. */
- unsigned used : 1;
-
- /* This field indicates whether or not the variable may need PHI nodes.
- See the enum's definition for more detailed information about the
- states. */
- ENUM_BITFIELD (need_phi_state) need_phi_state : 2;
-
- /* Used by var_map for the base index of ssa base variables. */
- unsigned base_index;
-
- /* During into-ssa and the dominator optimizer, this field holds the
- current version of this variable (an SSA_NAME). */
- tree current_def;
-};
-
-
/* Immediate use lists are used to directly access all uses for an SSA
name and get pointers to the statement for each use.
@@ -292,9 +268,6 @@ typedef struct immediate_use_iterator_d
-typedef struct var_ann_d *var_ann_t;
-
-static inline var_ann_t var_ann (const_tree);
static inline void update_stmt (gimple);
static inline int get_lineno (const_gimple);
@@ -316,24 +289,6 @@ extern int int_tree_map_eq (const void *, const void *);
extern unsigned int uid_decl_map_hash (const void *);
extern int uid_decl_map_eq (const void *, const void *);
-typedef struct
-{
- htab_iterator hti;
-} referenced_var_iterator;
-
-/* This macro loops over all the referenced vars, one at a time, putting the
- current var in VAR. Note: You are not allowed to add referenced variables
- to the hashtable while using this macro. Doing so may cause it to behave
- erratically. */
-
-#define FOR_EACH_REFERENCED_VAR(FN, VAR, ITER) \
- for ((VAR) = first_referenced_var ((FN), &(ITER)); \
- !end_referenced_vars_p (&(ITER)); \
- (VAR) = next_referenced_var (&(ITER)))
-
-extern tree referenced_var_lookup (struct function *, unsigned int);
-#define num_referenced_vars htab_elements (gimple_referenced_vars (cfun))
-
#define num_ssa_names (VEC_length (tree, cfun->gimple_df->ssa_names))
#define ssa_name(i) (VEC_index (tree, cfun->gimple_df->ssa_names, (i)))
@@ -414,7 +369,7 @@ extern bool is_ctrl_altering_stmt (gimple);
extern bool simple_goto_p (gimple);
extern bool stmt_can_make_abnormal_goto (gimple);
extern basic_block single_noncomplex_succ (basic_block bb);
-extern void gimple_dump_bb (basic_block, FILE *, int, int);
+extern void gimple_dump_bb (FILE *, basic_block, int, int);
extern void gimple_debug_bb (basic_block);
extern basic_block gimple_debug_bb_n (int);
extern void gimple_dump_cfg (FILE *, int);
@@ -428,6 +383,7 @@ extern void debug_loop_num (unsigned, int);
extern void print_loops (FILE *, int);
extern void print_loops_bb (FILE *, basic_block, int, int);
extern void cleanup_dead_labels (void);
+extern void group_case_labels_stmt (gimple);
extern void group_case_labels (void);
extern gimple first_stmt (basic_block);
extern gimple last_stmt (basic_block);
@@ -486,21 +442,14 @@ extern void renumber_gimple_stmt_uids (void);
extern void renumber_gimple_stmt_uids_in_blocks (basic_block *, int);
extern void dump_dfa_stats (FILE *);
extern void debug_dfa_stats (void);
-extern void debug_referenced_vars (void);
-extern void dump_referenced_vars (FILE *);
extern void dump_variable (FILE *, tree);
extern void debug_variable (tree);
-extern bool add_referenced_var_1 (tree, struct function *);
-#define add_referenced_var(v) add_referenced_var_1 ((v), cfun)
-extern void remove_referenced_var (tree);
-extern tree make_rename_temp (tree, const char *);
-extern void set_default_def (tree, tree);
-extern tree gimple_default_def (struct function *, tree);
+extern void set_ssa_default_def (struct function *, tree, tree);
+extern tree ssa_default_def (struct function *, tree);
+extern tree get_or_create_ssa_default_def (struct function *, tree);
extern bool stmt_references_abnormal_ssa_name (gimple);
-extern tree get_ref_base_and_extent (tree, HOST_WIDE_INT *,
- HOST_WIDE_INT *, HOST_WIDE_INT *);
extern tree get_addr_base_and_unit_offset (tree, HOST_WIDE_INT *);
-extern void find_referenced_vars_in (gimple);
+extern void dump_enumerated_decls (FILE *, int);
/* In tree-phinodes.c */
extern void reserve_phi_args_for_new_edge (basic_block);
@@ -511,9 +460,7 @@ extern void remove_phi_args (edge);
extern void remove_phi_node (gimple_stmt_iterator *, bool);
extern void remove_phi_nodes (basic_block);
extern void release_phi_node (gimple);
-#ifdef GATHER_STATISTICS
extern void phinodes_print_statistics (void);
-#endif
/* In gimple-low.c */
extern void record_vars_into (tree, tree);
@@ -569,16 +516,11 @@ void release_defs_bitset (bitmap toremove);
/* In tree-into-ssa.c */
void update_ssa (unsigned);
void delete_update_ssa (void);
-void register_new_name_mapping (tree, tree);
tree create_new_def_for (tree, gimple, def_operand_p);
bool need_ssa_update_p (struct function *);
-bool name_mappings_registered_p (void);
bool name_registered_for_update_p (tree);
void release_ssa_name_after_update_ssa (tree);
-void compute_global_livein (bitmap, bitmap);
-void mark_sym_for_renaming (tree);
-void mark_set_for_renaming (bitmap);
-bool symbol_marked_for_renaming (tree);
+void mark_virtual_operands_for_renaming (struct function *);
tree get_current_def (tree);
void set_current_def (tree, tree);
@@ -586,7 +528,8 @@ void set_current_def (tree, tree);
extern void init_ssanames (struct function *, int);
extern void fini_ssanames (void);
extern tree make_ssa_name_fn (struct function *, tree, gimple);
-extern tree duplicate_ssa_name (tree, gimple);
+extern tree copy_ssa_name_fn (struct function *, tree, gimple);
+extern tree duplicate_ssa_name_fn (struct function *, tree, gimple);
extern void duplicate_ssa_name_ptr_info (tree, struct ptr_info_def *);
extern void release_ssa_name (tree);
extern void release_defs (gimple);
@@ -599,9 +542,7 @@ extern void set_ptr_info_alignment (struct ptr_info_def *, unsigned int,
extern void adjust_ptr_info_misalignment (struct ptr_info_def *,
unsigned int);
-#ifdef GATHER_STATISTICS
extern void ssanames_print_statistics (void);
-#endif
/* In tree-ssa-ccp.c */
tree fold_const_aggregate_ref (tree);
@@ -730,7 +671,6 @@ void tree_transform_and_unroll_loop (struct loop *, unsigned,
transform_callback, void *);
bool contains_abnormal_ssa_name_p (tree);
bool stmt_dominates_stmt_p (gimple, gimple);
-void mark_virtual_ops_for_renaming (gimple);
/* In tree-ssa-dce.c */
void mark_virtual_operand_for_renaming (tree);
@@ -763,7 +703,6 @@ extern enum move_pos movement_possibility (gimple);
char *get_lsm_tmp_name (tree, unsigned);
/* In tree-flow-inline.h */
-static inline void set_is_used (tree);
static inline bool unmodifiable_var_p (const_tree);
static inline bool ref_contains_array_ref (const_tree);
@@ -810,14 +749,6 @@ bool expr_invariant_in_loop_p (struct loop *, tree);
bool stmt_invariant_in_loop_p (struct loop *, gimple);
bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode,
addr_space_t);
-void initialize_costs (void);
-void finalize_costs (void);
-unsigned multiply_by_const_cost (HOST_WIDE_INT, enum machine_mode, bool);
-unsigned add_regs_cost (enum machine_mode, bool);
-unsigned multiply_regs_cost (enum machine_mode, bool);
-unsigned add_const_cost (enum machine_mode, bool);
-unsigned extend_or_trunc_reg_cost (tree, tree, bool);
-unsigned negate_reg_cost (enum machine_mode, bool);
bool may_be_nonaddressable_p (tree expr);
/* In tree-ssa-threadupdate.c. */
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index 107c7e3da12..1086004d3fb 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -87,12 +87,9 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "flags.h"
-#include "timevar.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-data-ref.h"
@@ -224,26 +221,10 @@ reset_bb_predicate (basic_block bb)
static tree
ifc_temp_var (tree type, tree expr, gimple_stmt_iterator *gsi)
{
- const char *name = "_ifc_";
- tree var, new_name;
- gimple stmt;
-
- /* Create new temporary variable. */
- var = create_tmp_var (type, name);
- add_referenced_var (var);
-
- /* Build new statement to assign EXPR to new variable. */
- stmt = gimple_build_assign (var, expr);
-
- /* Get SSA name for the new variable and set make new statement
- its definition statement. */
- new_name = make_ssa_name (var, stmt);
- gimple_assign_set_lhs (stmt, new_name);
- SSA_NAME_DEF_STMT (new_name) = stmt;
- update_stmt (stmt);
-
+ tree new_name = make_temp_ssa_name (type, NULL, "_ifc_");
+ gimple stmt = gimple_build_assign (new_name, expr);
gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
- return gimple_assign_lhs (stmt);
+ return new_name;
}
/* Return true when COND is a true predicate. */
@@ -429,7 +410,7 @@ if_convertible_phi_p (struct loop *loop, basic_block bb, gimple phi)
/* When the flag_tree_loop_if_convert_stores is not set, check
that there are no memory writes in the branches of the loop to be
if-converted. */
- if (!is_gimple_reg (SSA_NAME_VAR (gimple_phi_result (phi))))
+ if (virtual_operand_p (gimple_phi_result (phi)))
{
imm_use_iterator imm_iter;
use_operand_p use_p;
@@ -822,8 +803,7 @@ if_convertible_bb_p (struct loop *loop, basic_block bb, basic_block exit_bb)
/* Be less adventurous and handle only normal edges. */
FOR_EACH_EDGE (e, ei, bb->succs)
- if (e->flags &
- (EDGE_ABNORMAL_CALL | EDGE_EH | EDGE_ABNORMAL | EDGE_IRREDUCIBLE_LOOP))
+ if (e->flags & (EDGE_EH | EDGE_ABNORMAL | EDGE_IRREDUCIBLE_LOOP))
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "Difficult to handle edges\n");
@@ -1282,7 +1262,7 @@ predicate_scalar_phi (gimple phi, tree cond,
res = gimple_phi_result (phi);
/* Do not handle virtual phi nodes. */
- if (!is_gimple_reg (SSA_NAME_VAR (res)))
+ if (virtual_operand_p (res))
return;
bb = gimple_bb (phi);
@@ -1751,7 +1731,7 @@ tree_if_conversion (struct loop *loop)
combine_blocks (loop);
if (flag_tree_loop_if_convert_stores)
- mark_sym_for_renaming (gimple_vop (cfun));
+ mark_virtual_operands_for_renaming (cfun);
changed = true;
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index c3d3fb66486..20d33173a6d 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -176,7 +176,7 @@ static int processing_debug_stmt = 0;
static tree
remap_ssa_name (tree name, copy_body_data *id)
{
- tree new_tree;
+ tree new_tree, var;
tree *n;
gcc_assert (TREE_CODE (name) == SSA_NAME);
@@ -187,8 +187,8 @@ remap_ssa_name (tree name, copy_body_data *id)
if (processing_debug_stmt)
{
- if (TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL
- && SSA_NAME_IS_DEFAULT_DEF (name)
+ if (SSA_NAME_IS_DEFAULT_DEF (name)
+ && TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL
&& id->entry_bb == NULL
&& single_succ_p (ENTRY_BLOCK_PTR))
{
@@ -218,9 +218,38 @@ remap_ssa_name (tree name, copy_body_data *id)
return name;
}
+ /* Remap anonymous SSA names or SSA names of anonymous decls. */
+ var = SSA_NAME_VAR (name);
+ if (!var
+ || (!SSA_NAME_IS_DEFAULT_DEF (name)
+ && TREE_CODE (var) == VAR_DECL
+ && !VAR_DECL_IS_VIRTUAL_OPERAND (var)
+ && DECL_ARTIFICIAL (var)
+ && DECL_IGNORED_P (var)
+ && !DECL_NAME (var)))
+ {
+ struct ptr_info_def *pi;
+ new_tree = make_ssa_name (remap_type (TREE_TYPE (name), id), NULL);
+ if (!var && SSA_NAME_IDENTIFIER (name))
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (new_tree, SSA_NAME_IDENTIFIER (name));
+ insert_decl_map (id, name, new_tree);
+ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_tree)
+ = SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name);
+ /* At least IPA points-to info can be directly transferred. */
+ if (id->src_cfun->gimple_df
+ && id->src_cfun->gimple_df->ipa_pta
+ && (pi = SSA_NAME_PTR_INFO (name))
+ && !pi->pt.anything)
+ {
+ struct ptr_info_def *new_pi = get_ptr_info (new_tree);
+ new_pi->pt = pi->pt;
+ }
+ return new_tree;
+ }
+
/* Do not set DEF_STMT yet as statement is not copied yet. We do that
in copy_bb. */
- new_tree = remap_decl (SSA_NAME_VAR (name), id);
+ new_tree = remap_decl (var, id);
/* We might've substituted constant or another SSA_NAME for
the variable.
@@ -229,7 +258,8 @@ remap_ssa_name (tree name, copy_body_data *id)
inlining: this saves us from need to introduce PHI node in a case
return value is just partly initialized. */
if ((TREE_CODE (new_tree) == VAR_DECL || TREE_CODE (new_tree) == PARM_DECL)
- && (TREE_CODE (SSA_NAME_VAR (name)) != RESULT_DECL
+ && (!SSA_NAME_VAR (name)
+ || TREE_CODE (SSA_NAME_VAR (name)) != RESULT_DECL
|| !id->transform_return_to_modify))
{
struct ptr_info_def *pi;
@@ -237,7 +267,6 @@ remap_ssa_name (tree name, copy_body_data *id)
insert_decl_map (id, name, new_tree);
SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_tree)
= SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name);
- TREE_TYPE (new_tree) = TREE_TYPE (SSA_NAME_VAR (new_tree));
/* At least IPA points-to info can be directly transferred. */
if (id->src_cfun->gimple_df
&& id->src_cfun->gimple_df->ipa_pta
@@ -247,7 +276,7 @@ remap_ssa_name (tree name, copy_body_data *id)
struct ptr_info_def *new_pi = get_ptr_info (new_tree);
new_pi->pt = pi->pt;
}
- if (gimple_nop_p (SSA_NAME_DEF_STMT (name)))
+ if (SSA_NAME_IS_DEFAULT_DEF (name))
{
/* By inlining function having uninitialized variable, we might
extend the lifetime (variable might get reused). This cause
@@ -259,9 +288,9 @@ remap_ssa_name (tree name, copy_body_data *id)
this for all BBs that are not inside strongly connected
regions of the CFG, but this is expensive to test. */
if (id->entry_bb
- && is_gimple_reg (SSA_NAME_VAR (name))
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name)
- && TREE_CODE (SSA_NAME_VAR (name)) != PARM_DECL
+ && (!SSA_NAME_VAR (name)
+ || TREE_CODE (SSA_NAME_VAR (name)) != PARM_DECL)
&& (id->entry_bb != EDGE_SUCC (ENTRY_BLOCK_PTR, 0)->dest
|| EDGE_COUNT (id->entry_bb->preds) != 1))
{
@@ -276,9 +305,7 @@ remap_ssa_name (tree name, copy_body_data *id)
else
{
SSA_NAME_DEF_STMT (new_tree) = gimple_build_nop ();
- if (gimple_default_def (id->src_cfun, SSA_NAME_VAR (name))
- == name)
- set_default_def (SSA_NAME_VAR (new_tree), new_tree);
+ set_ssa_default_def (cfun, SSA_NAME_VAR (new_tree), new_tree);
}
}
}
@@ -338,17 +365,6 @@ remap_decl (tree decl, copy_body_data *id)
walk_tree (&DECL_QUALIFIER (t), copy_tree_body_r, id, NULL);
}
- if ((TREE_CODE (t) == VAR_DECL
- || TREE_CODE (t) == RESULT_DECL
- || TREE_CODE (t) == PARM_DECL)
- && id->src_fn && DECL_STRUCT_FUNCTION (id->src_fn)
- && gimple_referenced_vars (DECL_STRUCT_FUNCTION (id->src_fn))
- /* We don't want to mark as referenced VAR_DECLs that were
- not marked as such in the src function. */
- && (TREE_CODE (decl) != VAR_DECL
- || referenced_var_lookup (DECL_STRUCT_FUNCTION (id->src_fn),
- DECL_UID (decl))))
- add_referenced_var (t);
return t;
}
@@ -501,26 +517,6 @@ remap_type (tree type, copy_body_data *id)
return tmp;
}
-/* Return previously remapped type of TYPE in ID. Return NULL if TYPE
- is NULL or TYPE has not been remapped before. */
-
-static tree
-remapped_type (tree type, copy_body_data *id)
-{
- tree *node;
-
- if (type == NULL)
- return type;
-
- /* See if we have remapped this type. */
- node = (tree *) pointer_map_contains (id->decl_map, type);
- if (node)
- return *node;
- else
- return NULL;
-}
-
- /* The type only needs remapping if it's variably modified. */
/* Decide if DECL can be put into BLOCK_NONLOCAL_VARs. */
static bool
@@ -536,26 +532,7 @@ can_be_nonlocal (tree decl, copy_body_data *id)
&& !auto_var_in_fn_p (decl, id->src_fn))
return true;
- /* At the moment dwarf2out can handle only these types of nodes. We
- can support more later. */
- if (TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != PARM_DECL)
- return false;
-
- /* We must use global type. We call remapped_type instead of
- remap_type since we don't want to remap this type here if it
- hasn't been remapped before. */
- if (TREE_TYPE (decl) != remapped_type (TREE_TYPE (decl), id))
- return false;
-
- /* Wihtout SSA we can't tell if variable is used. */
- if (!gimple_in_ssa_p (cfun))
- return false;
-
- /* Live variables must be copied so we can attach DECL_RTL. */
- if (var_ann (decl))
- return false;
-
- return true;
+ return false;
}
static tree
@@ -571,9 +548,10 @@ remap_decls (tree decls, VEC(tree,gc) **nonlocalized_list, copy_body_data *id)
if (can_be_nonlocal (old_var, id))
{
+ /* We need to add this variable to the local decls as otherwise
+ nothing else will do so. */
if (TREE_CODE (old_var) == VAR_DECL
- && ! DECL_EXTERNAL (old_var)
- && (var_ann (old_var) || !gimple_in_ssa_p (cfun)))
+ && ! DECL_EXTERNAL (old_var))
add_local_decl (cfun, old_var);
if ((!optimize || debug_info_level > DINFO_LEVEL_TERSE)
&& !DECL_IGNORED_P (old_var)
@@ -882,14 +860,6 @@ remap_gimple_op_r (tree *tp, int *walk_subtrees, void *data)
if (TREE_CODE (*tp) != OMP_CLAUSE)
TREE_TYPE (*tp) = remap_type (TREE_TYPE (*tp), id);
- /* Global variables we haven't seen yet need to go into referenced
- vars. If not referenced from types only. */
- if (gimple_referenced_vars (cfun)
- && TREE_CODE (*tp) == VAR_DECL && !is_global_var (*tp)
- && id->remapping_type_depth == 0
- && !processing_debug_stmt)
- add_referenced_var (*tp);
-
if (TREE_CODE (*tp) == TARGET_EXPR && TREE_OPERAND (*tp, 3))
{
/* The copied TARGET_EXPR has never been expanded, even if the
@@ -1125,14 +1095,6 @@ copy_tree_body_r (tree *tp, int *walk_subtrees, void *data)
tweak some special cases. */
copy_tree_r (tp, walk_subtrees, NULL);
- /* Global variables we haven't seen yet needs to go into referenced
- vars. If not referenced from types or debug stmts only. */
- if (gimple_referenced_vars (cfun)
- && TREE_CODE (*tp) == VAR_DECL && !is_global_var (*tp)
- && id->remapping_type_depth == 0
- && !processing_debug_stmt)
- add_referenced_var (*tp);
-
/* If EXPR has block defined, map it to newly constructed block.
When inlining we want EXPRs without block appear in the block
of function call if we are not remapping a type. */
@@ -1253,6 +1215,7 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
if (retval
&& (TREE_CODE (retval) != RESULT_DECL
&& (TREE_CODE (retval) != SSA_NAME
+ || ! SSA_NAME_VAR (retval)
|| TREE_CODE (SSA_NAME_VAR (retval)) != RESULT_DECL)))
{
copy = gimple_build_assign (id->retvar, retval);
@@ -1802,7 +1765,6 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
ssa_op_iter i;
tree def;
- find_referenced_vars_in (gsi_stmt (copy_gsi));
FOR_EACH_SSA_TREE_OPERAND (def, stmt, i, SSA_OP_DEF)
if (TREE_CODE (def) == SSA_NAME)
SSA_NAME_DEF_STMT (def) = stmt;
@@ -1868,9 +1830,9 @@ update_ssa_across_abnormal_edges (basic_block bb, basic_block ret_bb,
gcc_assert ((e->flags & EDGE_EH)
|| SSA_NAME_OCCURS_IN_ABNORMAL_PHI (PHI_RESULT (phi)));
- if (!is_gimple_reg (PHI_RESULT (phi)))
+ if (virtual_operand_p (PHI_RESULT (phi)))
{
- mark_sym_for_renaming (SSA_NAME_VAR (PHI_RESULT (phi)));
+ mark_virtual_operands_for_renaming (cfun);
continue;
}
@@ -2008,11 +1970,10 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
phi = gsi_stmt (si);
res = PHI_RESULT (phi);
new_res = res;
- if (is_gimple_reg (res))
+ if (!virtual_operand_p (res))
{
walk_tree (&new_res, copy_tree_body_r, id, NULL);
- SSA_NAME_DEF_STMT (new_res)
- = new_phi = create_phi_node (new_res, new_bb);
+ new_phi = create_phi_node (new_res, new_bb);
FOR_EACH_EDGE (new_edge, ei, new_bb->preds)
{
edge old_edge = find_edge ((basic_block) new_edge->src->aux, bb);
@@ -2110,7 +2071,6 @@ initialize_cfun (tree new_fndecl, tree callee_fndecl, gcov_type count)
cfun->can_delete_dead_exceptions = src_cfun->can_delete_dead_exceptions;
cfun->returns_struct = src_cfun->returns_struct;
cfun->returns_pcc_struct = src_cfun->returns_pcc_struct;
- cfun->after_tree_profile = src_cfun->after_tree_profile;
init_empty_tree_cfg ();
@@ -2372,10 +2332,8 @@ copy_debug_stmt (gimple stmt, copy_body_data *id)
t = *n;
}
else if (TREE_CODE (t) == VAR_DECL
- && !TREE_STATIC (t)
- && gimple_in_ssa_p (cfun)
- && !pointer_map_contains (id->decl_map, t)
- && !var_ann (t))
+ && !is_global_var (t)
+ && !pointer_map_contains (id->decl_map, t))
/* T is a non-localized variable. */;
else
walk_tree (&t, remap_gimple_op_r, &wi, NULL);
@@ -2548,14 +2506,8 @@ insert_init_stmt (copy_body_data *id, basic_block bb, gimple init_stmt)
if (!is_gimple_debug (init_stmt) && MAY_HAVE_DEBUG_STMTS)
{
- tree var, def = gimple_assign_lhs (init_stmt);
-
- if (TREE_CODE (def) == SSA_NAME)
- var = SSA_NAME_VAR (def);
- else
- var = def;
-
- insert_init_debug_bind (id, bb, var, def, init_stmt);
+ tree def = gimple_assign_lhs (init_stmt);
+ insert_init_debug_bind (id, bb, def, def, init_stmt);
}
}
}
@@ -2571,7 +2523,7 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
tree var;
tree rhs = value;
tree def = (gimple_in_ssa_p (cfun)
- ? gimple_default_def (id->src_cfun, p) : NULL);
+ ? ssa_default_def (id->src_cfun, p) : NULL);
if (value
&& value != error_mark_node
@@ -2599,10 +2551,6 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
function. */
var = copy_decl_to_var (p, id);
- /* We're actually using the newly-created var. */
- if (gimple_in_ssa_p (cfun) && TREE_CODE (var) == VAR_DECL)
- add_referenced_var (var);
-
/* Declare this new variable. */
DECL_CHAIN (var) = *vars;
*vars = var;
@@ -2610,17 +2558,6 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
/* Make gimplifier happy about this variable. */
DECL_SEEN_IN_BIND_EXPR_P (var) = 1;
- /* We are eventually using the value - make sure all variables
- referenced therein are properly recorded. */
- if (value
- && gimple_referenced_vars (cfun)
- && TREE_CODE (value) == ADDR_EXPR)
- {
- tree base = get_base_address (TREE_OPERAND (value, 0));
- if (base && TREE_CODE (base) == VAR_DECL && !is_global_var (base))
- add_referenced_var (base);
- }
-
/* If the parameter is never assigned to, has no SSA_NAMEs created,
we would not need to create a new variable here at all, if it
weren't for debug info. Still, we can just use the argument
@@ -2719,7 +2656,7 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
def = remap_ssa_name (def, id);
init_stmt = gimple_build_assign (def, rhs);
SSA_NAME_IS_DEFAULT_DEF (def) = 0;
- set_default_def (var, NULL);
+ set_ssa_default_def (cfun, var, NULL);
}
else if (!optimize)
{
@@ -2771,7 +2708,7 @@ initialize_inlined_parameters (copy_body_data *id, gimple stmt,
&& TREE_CODE (*varp) == VAR_DECL)
{
tree def = (gimple_in_ssa_p (cfun) && is_gimple_reg (p)
- ? gimple_default_def (id->src_cfun, p) : NULL);
+ ? ssa_default_def (id->src_cfun, p) : NULL);
tree var = *varp;
TREE_TYPE (var) = remap_type (TREE_TYPE (var), id);
/* Also remap the default definition if it was remapped
@@ -2926,9 +2863,6 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
gcc_assert (TREE_CODE (TYPE_SIZE_UNIT (callee_type)) == INTEGER_CST);
var = copy_result_decl_to_var (result, id);
- if (gimple_referenced_vars (cfun))
- add_referenced_var (var);
-
DECL_SEEN_IN_BIND_EXPR_P (var) = 1;
/* Do not have the rest of GCC warn about this variable as it should
@@ -2970,11 +2904,6 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
TREE_ADDRESSABLE (var) = 1;
var = build_fold_addr_expr (var);
}
- else if (gimple_in_ssa_p (cfun)
- && is_gimple_reg (var))
- /* ??? Re-org id->retval and its special handling so that we can
- record an SSA name directly and not need to invoke the SSA renamer. */
- mark_sym_for_renaming (var);
done:
/* Register the VAR_DECL as the equivalent for the RESULT_DECL; that
@@ -2987,8 +2916,6 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
&& !is_gimple_val (var))
{
tree temp = create_tmp_var (TREE_TYPE (result), "retvalptr");
- if (gimple_referenced_vars (cfun))
- add_referenced_var (temp);
insert_decl_map (id, result, temp);
/* When RESULT_DECL is in SSA form, we need to remap and initialize
it's default_def SSA_NAME. */
@@ -2996,8 +2923,7 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
&& is_gimple_reg (result))
{
temp = make_ssa_name (temp, NULL);
- insert_decl_map (id, gimple_default_def (id->src_cfun, result),
- temp);
+ insert_decl_map (id, ssa_default_def (id->src_cfun, result), temp);
}
insert_init_stmt (id, entry_bb, gimple_build_assign (temp, var));
}
@@ -3448,6 +3374,8 @@ estimate_operator_cost (enum tree_code code, eni_weights *weights,
case VEC_WIDEN_MULT_HI_EXPR:
case VEC_WIDEN_MULT_LO_EXPR:
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
case VEC_UNPACK_HI_EXPR:
case VEC_UNPACK_LO_EXPR:
case VEC_UNPACK_FLOAT_HI_EXPR:
@@ -3779,19 +3707,13 @@ prepend_lexical_block (tree current_block, tree new_block)
static inline void
add_local_variables (struct function *callee, struct function *caller,
- copy_body_data *id, bool check_var_ann)
+ copy_body_data *id)
{
tree var;
unsigned ix;
FOR_EACH_LOCAL_DECL (callee, ix, var)
- if (TREE_STATIC (var) && !TREE_ASM_WRITTEN (var))
- {
- if (!check_var_ann
- || (var_ann (var) && add_referenced_var (var)))
- add_local_decl (caller, var);
- }
- else if (!can_be_nonlocal (var, id))
+ if (!can_be_nonlocal (var, id))
{
tree new_var = remap_decl (var, id);
@@ -3833,6 +3755,7 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
/* Set input_location here so we get the right instantiation context
if we call instantiate_decl from inlinable_function_p. */
+ /* FIXME: instantiate_decl isn't called by inlinable_function_p. */
saved_location = input_location;
input_location = gimple_location (stmt);
@@ -4024,7 +3947,7 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
use_retvar = declare_return_variable (id, return_slot, modify_dest, bb);
/* Add local vars in this inlined callee to caller. */
- add_local_variables (id->src_cfun, cfun, id, true);
+ add_local_variables (id->src_cfun, cfun, id);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -4080,7 +4003,7 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
{
tree name = gimple_call_lhs (stmt);
tree var = SSA_NAME_VAR (name);
- tree def = gimple_default_def (cfun, var);
+ tree def = ssa_default_def (cfun, var);
if (def)
{
@@ -4093,7 +4016,7 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
{
/* Otherwise make this variable undefined. */
gsi_remove (&stmt_gsi, true);
- set_default_def (var, name);
+ set_ssa_default_def (cfun, var, name);
SSA_NAME_DEF_STMT (name) = gimple_build_nop ();
}
}
@@ -4822,14 +4745,6 @@ copy_decl_for_dup_finish (copy_body_data *id, tree decl, tree copy)
new function. */
DECL_CONTEXT (copy) = id->dst_fn;
- if (TREE_CODE (decl) == VAR_DECL
- /* C++ clones functions during parsing, before
- referenced_vars. */
- && gimple_referenced_vars (DECL_STRUCT_FUNCTION (id->src_fn))
- && referenced_var_lookup (DECL_STRUCT_FUNCTION (id->src_fn),
- DECL_UID (decl)))
- add_referenced_var (copy);
-
return copy;
}
@@ -4943,7 +4858,6 @@ copy_arguments_for_versioning (tree orig_parm, copy_body_data * id,
as temporary variable later in function, the uses will be
replaced by local variable. */
tree var = copy_decl_to_var (arg, id);
- add_referenced_var (var);
insert_decl_map (id, arg, var);
/* Declare this new variable. */
DECL_CHAIN (var) = *vars;
@@ -5175,6 +5089,7 @@ tree_function_versioning (tree old_decl, tree new_decl,
VEC_index (ipa_opt_pass,
old_transforms_to_apply,
i));
+ VEC_free (ipa_opt_pass, heap, old_transforms_to_apply);
}
id.copy_decl = copy_decl_no_change;
@@ -5224,12 +5139,6 @@ tree_function_versioning (tree old_decl, tree new_decl,
if (TREE_CODE (op) == VIEW_CONVERT_EXPR)
op = TREE_OPERAND (op, 0);
- if (TREE_CODE (op) == ADDR_EXPR)
- {
- op = get_base_address (TREE_OPERAND (op, 0));
- if (op && TREE_CODE (op) == VAR_DECL && !is_global_var (op))
- add_referenced_var (op);
- }
gcc_assert (TREE_CODE (replace_info->old_tree) == PARM_DECL);
init = setup_one_parameter (&id, replace_info->old_tree,
replace_info->new_tree, id.src_fn,
@@ -5252,7 +5161,7 @@ tree_function_versioning (tree old_decl, tree new_decl,
if (!VEC_empty (tree, DECL_STRUCT_FUNCTION (old_decl)->local_decls))
/* Add local vars. */
- add_local_variables (DECL_STRUCT_FUNCTION (old_decl), cfun, &id, false);
+ add_local_variables (DECL_STRUCT_FUNCTION (old_decl), cfun, &id);
if (DECL_RESULT (old_decl) == NULL_TREE)
;
@@ -5272,13 +5181,12 @@ tree_function_versioning (tree old_decl, tree new_decl,
lang_hooks.dup_lang_specific_decl (DECL_RESULT (new_decl));
if (gimple_in_ssa_p (id.src_cfun)
&& DECL_BY_REFERENCE (DECL_RESULT (old_decl))
- && (old_name
- = gimple_default_def (id.src_cfun, DECL_RESULT (old_decl))))
+ && (old_name = ssa_default_def (id.src_cfun, DECL_RESULT (old_decl))))
{
tree new_name = make_ssa_name (DECL_RESULT (new_decl), NULL);
insert_decl_map (&id, old_name, new_name);
SSA_NAME_DEF_STMT (new_name) = gimple_build_nop ();
- set_default_def (DECL_RESULT (new_decl), new_name);
+ set_ssa_default_def (cfun, DECL_RESULT (new_decl), new_name);
}
}
diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h
index ba0b2c46995..b156e82a517 100644
--- a/gcc/tree-inline.h
+++ b/gcc/tree-inline.h
@@ -116,7 +116,7 @@ typedef struct copy_body_data
struct pointer_set_t *statements_to_fold;
/* Entry basic block to currently copied body. */
- struct basic_block_def *entry_bb;
+ basic_block entry_bb;
/* Debug statements that need processing. */
VEC(gimple,heap) *debug_stmts;
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
index 102b699c500..73692b912f3 100644
--- a/gcc/tree-into-ssa.c
+++ b/gcc/tree-into-ssa.c
@@ -29,20 +29,18 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "basic-block.h"
#include "function.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "bitmap.h"
#include "tree-flow.h"
#include "gimple.h"
#include "tree-inline.h"
-#include "timevar.h"
#include "hashtab.h"
-#include "tree-dump.h"
#include "tree-pass.h"
#include "cfgloop.h"
#include "domwalk.h"
#include "params.h"
#include "vecprim.h"
+#include "diagnostic-core.h"
/* This file builds the SSA form for a function as described in:
@@ -55,9 +53,6 @@ along with GCC; see the file COPYING3. If not see
definitions for VAR. */
struct def_blocks_d
{
- /* The variable. */
- tree var;
-
/* Blocks that contain definitions of VAR. Bit I will be set if the
Ith block contains a definition of VAR. */
bitmap def_blocks;
@@ -70,15 +65,8 @@ struct def_blocks_d
bitmap livein_blocks;
};
+typedef struct def_blocks_d *def_blocks_p;
-/* Each entry in DEF_BLOCKS contains an element of type STRUCT
- DEF_BLOCKS_D, mapping a variable VAR to a bitmap describing all the
- basic blocks where VAR is defined (assigned a new value). It also
- contains a bitmap of all the blocks where VAR is live-on-entry
- (i.e., there is a use of VAR in block B without a preceding
- definition in B). The live-on-entry information is used when
- computing PHI pruning heuristics. */
-static htab_t def_blocks;
/* Stack of trees used to restore the global currdefs to its original
state after completing rewriting of a block and its dominator
@@ -114,50 +102,26 @@ sbitmap interesting_blocks;
released after we finish updating the SSA web. */
static bitmap names_to_release;
+/* VEC of VECs of PHIs to rewrite in a basic block. Element I corresponds
+ the to basic block with index I. Allocated once per compilation, *not*
+ released between different functions. */
static VEC(gimple_vec, heap) *phis_to_rewrite;
/* The bitmap of non-NULL elements of PHIS_TO_REWRITE. */
static bitmap blocks_with_phis_to_rewrite;
/* Growth factor for NEW_SSA_NAMES and OLD_SSA_NAMES. These sets need
- to grow as the callers to register_new_name_mapping will typically
- create new names on the fly. FIXME. Currently set to 1/3 to avoid
- frequent reallocations but still need to find a reasonable growth
- strategy. */
+ to grow as the callers to create_new_def_for will create new names on
+ the fly.
+ FIXME. Currently set to 1/3 to avoid frequent reallocations but still
+ need to find a reasonable growth strategy. */
#define NAME_SETS_GROWTH_FACTOR (MAX (3, num_ssa_names / 3))
-/* Tuple used to represent replacement mappings. */
-struct repl_map_d
-{
- tree name;
- bitmap set;
-};
-
-
-/* NEW -> OLD_SET replacement table. If we are replacing several
- existing SSA names O_1, O_2, ..., O_j with a new name N_i,
- then REPL_TBL[N_i] = { O_1, O_2, ..., O_j }. */
-static htab_t repl_tbl;
/* The function the SSA updating data structures have been initialized for.
- NULL if they need to be initialized by register_new_name_mapping. */
+ NULL if they need to be initialized by create_new_def_for. */
static struct function *update_ssa_initialized_fn = NULL;
-/* Statistics kept by update_ssa to use in the virtual mapping
- heuristic. If the number of virtual mappings is beyond certain
- threshold, the updater will switch from using the mappings into
- renaming the virtual symbols from scratch. In some cases, the
- large number of name mappings for virtual names causes significant
- slowdowns in the PHI insertion code. */
-struct update_ssa_stats_d
-{
- unsigned num_virtual_mappings;
- unsigned num_total_mappings;
- bitmap virtual_symbols;
- unsigned num_virtual_symbols;
-};
-static struct update_ssa_stats_d update_ssa_stats;
-
/* Global data to attach to the main dominator walk structure. */
struct mark_def_sites_global_data
{
@@ -166,22 +130,58 @@ struct mark_def_sites_global_data
bitmap kills;
};
-
-/* Information stored for SSA names. */
-struct ssa_name_info
+/* Information stored for both SSA names and decls. */
+struct common_info_d
{
- /* The current reaching definition replacing this SSA name. */
- tree current_def;
-
/* This field indicates whether or not the variable may need PHI nodes.
See the enum's definition for more detailed information about the
states. */
ENUM_BITFIELD (need_phi_state) need_phi_state : 2;
+ /* The current reaching definition replacing this var. */
+ tree current_def;
+
+ /* Definitions for this var. */
+ struct def_blocks_d def_blocks;
+};
+
+/* The information associated with decls and SSA names. */
+typedef struct common_info_d *common_info_p;
+
+/* Information stored for decls. */
+struct var_info_d
+{
+ /* The variable. */
+ tree var;
+
+ /* Information stored for both SSA names and decls. */
+ struct common_info_d info;
+};
+
+/* The information associated with decls. */
+typedef struct var_info_d *var_info_p;
+
+DEF_VEC_P(var_info_p);
+DEF_VEC_ALLOC_P(var_info_p,heap);
+
+/* Each entry in VAR_INFOS contains an element of type STRUCT
+ VAR_INFO_D. */
+static htab_t var_infos;
+
+
+/* Information stored for SSA names. */
+struct ssa_name_info
+{
/* Age of this record (so that info_for_ssa_name table can be cleared
quickly); if AGE < CURRENT_INFO_FOR_SSA_NAME_AGE, then the fields
are assumed to be null. */
unsigned age;
+
+ /* Replacement mappings, allocated from update_ssa_obstack. */
+ bitmap repl_set;
+
+ /* Information stored for both SSA names and decls. */
+ struct common_info_d info;
};
/* The information associated with names. */
@@ -192,6 +192,8 @@ DEF_VEC_ALLOC_P (ssa_name_info_p, heap);
static VEC(ssa_name_info_p, heap) *info_for_ssa_name;
static unsigned current_info_for_ssa_name_age;
+static bitmap_obstack update_ssa_obstack;
+
/* The set of blocks affected by update_ssa. */
static bitmap blocks_to_update;
@@ -223,13 +225,40 @@ extern void dump_update_ssa (FILE *);
extern void debug_update_ssa (void);
extern void dump_names_replaced_by (FILE *, tree);
extern void debug_names_replaced_by (tree);
-extern void dump_def_blocks (FILE *);
-extern void debug_def_blocks (void);
+extern void dump_var_infos (FILE *);
+extern void debug_var_infos (void);
extern void dump_defs_stack (FILE *, int);
extern void debug_defs_stack (int);
extern void dump_currdefs (FILE *);
extern void debug_currdefs (void);
+
+/* The set of symbols we ought to re-write into SSA form in update_ssa. */
+static bitmap symbols_to_rename_set;
+static VEC(tree,heap) *symbols_to_rename;
+
+/* Mark SYM for renaming. */
+
+static void
+mark_for_renaming (tree sym)
+{
+ if (!symbols_to_rename_set)
+ symbols_to_rename_set = BITMAP_ALLOC (NULL);
+ if (bitmap_set_bit (symbols_to_rename_set, DECL_UID (sym)))
+ VEC_safe_push (tree, heap, symbols_to_rename, sym);
+}
+
+/* Return true if SYM is marked for renaming. */
+
+static bool
+marked_for_renaming (tree sym)
+{
+ if (!symbols_to_rename_set || sym == NULL_TREE)
+ return false;
+ return bitmap_bit_p (symbols_to_rename_set, DECL_UID (sym));
+}
+
+
/* Return true if STMT needs to be rewritten. When renaming a subset
of the variables, not all statements will be processed. This is
decided in mark_def_sites. */
@@ -283,30 +312,54 @@ get_ssa_name_ann (tree name)
unsigned len = VEC_length (ssa_name_info_p, info_for_ssa_name);
struct ssa_name_info *info;
+ /* Re-allocate the vector at most once per update/into-SSA. */
if (ver >= len)
- {
- unsigned new_len = num_ssa_names;
+ VEC_safe_grow_cleared (ssa_name_info_p, heap,
+ info_for_ssa_name, num_ssa_names);
- VEC_reserve (ssa_name_info_p, heap, info_for_ssa_name, new_len);
- while (len++ < new_len)
- {
- struct ssa_name_info *info = XCNEW (struct ssa_name_info);
- info->age = current_info_for_ssa_name_age;
- VEC_quick_push (ssa_name_info_p, info_for_ssa_name, info);
- }
+ /* But allocate infos lazily. */
+ info = VEC_index (ssa_name_info_p, info_for_ssa_name, ver);
+ if (!info)
+ {
+ info = XCNEW (struct ssa_name_info);
+ info->age = current_info_for_ssa_name_age;
+ info->info.need_phi_state = NEED_PHI_STATE_UNKNOWN;
+ VEC_replace (ssa_name_info_p, info_for_ssa_name, ver, info);
}
- info = VEC_index (ssa_name_info_p, info_for_ssa_name, ver);
if (info->age < current_info_for_ssa_name_age)
{
- info->need_phi_state = NEED_PHI_STATE_UNKNOWN;
- info->current_def = NULL_TREE;
info->age = current_info_for_ssa_name_age;
+ info->repl_set = NULL;
+ info->info.need_phi_state = NEED_PHI_STATE_UNKNOWN;
+ info->info.current_def = NULL_TREE;
+ info->info.def_blocks.def_blocks = NULL;
+ info->info.def_blocks.phi_blocks = NULL;
+ info->info.def_blocks.livein_blocks = NULL;
}
return info;
}
+/* Return and allocate the auxiliar information for DECL. */
+
+static inline var_info_p
+get_var_info (tree decl)
+{
+ struct var_info_d vi;
+ void **slot;
+ vi.var = decl;
+ slot = htab_find_slot_with_hash (var_infos, &vi, DECL_UID (decl), INSERT);
+ if (*slot == NULL)
+ {
+ var_info_p v = XCNEW (struct var_info_d);
+ v->var = decl;
+ *slot = (void *)v;
+ return v;
+ }
+ return (var_info_p) *slot;
+}
+
/* Clears info for SSA names. */
@@ -314,30 +367,22 @@ static void
clear_ssa_name_info (void)
{
current_info_for_ssa_name_age++;
-}
-
-
-/* Get phi_state field for VAR. */
-static inline enum need_phi_state
-get_phi_state (tree var)
-{
- if (TREE_CODE (var) == SSA_NAME)
- return get_ssa_name_ann (var)->need_phi_state;
- else
- return var_ann (var)->need_phi_state;
+ /* If current_info_for_ssa_name_age wraps we use stale information.
+ Asser that this does not happen. */
+ gcc_assert (current_info_for_ssa_name_age != 0);
}
-/* Sets phi_state field for VAR to STATE. */
+/* Get access to the auxiliar information stored per SSA name or decl. */
-static inline void
-set_phi_state (tree var, enum need_phi_state state)
+static inline common_info_p
+get_common_info (tree var)
{
if (TREE_CODE (var) == SSA_NAME)
- get_ssa_name_ann (var)->need_phi_state = state;
+ return &get_ssa_name_ann (var)->info;
else
- var_ann (var)->need_phi_state = state;
+ return &get_var_info (var)->info;
}
@@ -346,10 +391,7 @@ set_phi_state (tree var, enum need_phi_state state)
tree
get_current_def (tree var)
{
- if (TREE_CODE (var) == SSA_NAME)
- return get_ssa_name_ann (var)->current_def;
- else
- return var_ann (var)->current_def;
+ return get_common_info (var)->current_def;
}
@@ -358,64 +400,9 @@ get_current_def (tree var)
void
set_current_def (tree var, tree def)
{
- if (TREE_CODE (var) == SSA_NAME)
- get_ssa_name_ann (var)->current_def = def;
- else
- var_ann (var)->current_def = def;
+ get_common_info (var)->current_def = def;
}
-
-/* Compute global livein information given the set of blocks where
- an object is locally live at the start of the block (LIVEIN)
- and the set of blocks where the object is defined (DEF_BLOCKS).
-
- Note: This routine augments the existing local livein information
- to include global livein (i.e., it modifies the underlying bitmap
- for LIVEIN). */
-
-void
-compute_global_livein (bitmap livein ATTRIBUTE_UNUSED, bitmap def_blocks ATTRIBUTE_UNUSED)
-{
- basic_block bb, *worklist, *tos;
- unsigned i;
- bitmap_iterator bi;
-
- tos = worklist
- = (basic_block *) xmalloc (sizeof (basic_block) * (last_basic_block + 1));
-
- EXECUTE_IF_SET_IN_BITMAP (livein, 0, i, bi)
- *tos++ = BASIC_BLOCK (i);
-
- /* Iterate until the worklist is empty. */
- while (tos != worklist)
- {
- edge e;
- edge_iterator ei;
-
- /* Pull a block off the worklist. */
- bb = *--tos;
-
- /* For each predecessor block. */
- FOR_EACH_EDGE (e, ei, bb->preds)
- {
- basic_block pred = e->src;
- int pred_index = pred->index;
-
- /* None of this is necessary for the entry block. */
- if (pred != ENTRY_BLOCK_PTR
- && ! bitmap_bit_p (livein, pred_index)
- && ! bitmap_bit_p (def_blocks, pred_index))
- {
- *tos++ = pred;
- bitmap_set_bit (livein, pred_index);
- }
- }
- }
-
- free (worklist);
-}
-
-
/* Cleans up the REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT flags for
all statements in basic block BB. */
@@ -439,7 +426,7 @@ initialize_flags_in_bb (basic_block bb)
/* We are going to use the operand cache API, such as
SET_USE, SET_DEF, and FOR_EACH_IMM_USE_FAST. The operand
cache for each statement should be up-to-date. */
- gcc_assert (!gimple_modified_p (stmt));
+ gcc_checking_assert (!gimple_modified_p (stmt));
set_rewrite_uses (stmt, false);
set_register_defs (stmt, false);
}
@@ -450,7 +437,7 @@ initialize_flags_in_bb (basic_block bb)
static void
mark_block_for_update (basic_block bb)
{
- gcc_assert (blocks_to_update != NULL);
+ gcc_checking_assert (blocks_to_update != NULL);
if (!bitmap_set_bit (blocks_to_update, bb->index))
return;
initialize_flags_in_bb (bb);
@@ -461,24 +448,15 @@ mark_block_for_update (basic_block bb)
DEF_BLOCKS, a new one is created and returned. */
static inline struct def_blocks_d *
-get_def_blocks_for (tree var)
+get_def_blocks_for (common_info_p info)
{
- struct def_blocks_d db, *db_p;
- void **slot;
-
- db.var = var;
- slot = htab_find_slot (def_blocks, (void *) &db, INSERT);
- if (*slot == NULL)
+ struct def_blocks_d *db_p = &info->def_blocks;
+ if (!db_p->def_blocks)
{
- db_p = XNEW (struct def_blocks_d);
- db_p->var = var;
- db_p->def_blocks = BITMAP_ALLOC (NULL);
- db_p->phi_blocks = BITMAP_ALLOC (NULL);
- db_p->livein_blocks = BITMAP_ALLOC (NULL);
- *slot = (void *) db_p;
+ db_p->def_blocks = BITMAP_ALLOC (&update_ssa_obstack);
+ db_p->phi_blocks = BITMAP_ALLOC (&update_ssa_obstack);
+ db_p->livein_blocks = BITMAP_ALLOC (&update_ssa_obstack);
}
- else
- db_p = (struct def_blocks_d *) *slot;
return db_p;
}
@@ -491,10 +469,10 @@ static void
set_def_block (tree var, basic_block bb, bool phi_p)
{
struct def_blocks_d *db_p;
- enum need_phi_state state;
+ common_info_p info;
- state = get_phi_state (var);
- db_p = get_def_blocks_for (var);
+ info = get_common_info (var);
+ db_p = get_def_blocks_for (info);
/* Set the bit corresponding to the block where VAR is defined. */
bitmap_set_bit (db_p->def_blocks, bb->index);
@@ -513,10 +491,10 @@ set_def_block (tree var, basic_block bb, bool phi_p)
variable which was not dominated by the block containing the
definition(s). In this case we may need a PHI node, so enter
state NEED_PHI_STATE_MAYBE. */
- if (state == NEED_PHI_STATE_UNKNOWN)
- set_phi_state (var, NEED_PHI_STATE_NO);
+ if (info->need_phi_state == NEED_PHI_STATE_UNKNOWN)
+ info->need_phi_state = NEED_PHI_STATE_NO;
else
- set_phi_state (var, NEED_PHI_STATE_MAYBE);
+ info->need_phi_state = NEED_PHI_STATE_MAYBE;
}
@@ -525,10 +503,11 @@ set_def_block (tree var, basic_block bb, bool phi_p)
static void
set_livein_block (tree var, basic_block bb)
{
+ common_info_p info;
struct def_blocks_d *db_p;
- enum need_phi_state state = get_phi_state (var);
- db_p = get_def_blocks_for (var);
+ info = get_common_info (var);
+ db_p = get_def_blocks_for (info);
/* Set the bit corresponding to the block where VAR is live in. */
bitmap_set_bit (db_p->livein_blocks, bb->index);
@@ -539,26 +518,17 @@ set_livein_block (tree var, basic_block bb)
by the single block containing the definition(s) of this variable. If
it is, then we remain in NEED_PHI_STATE_NO, otherwise we transition to
NEED_PHI_STATE_MAYBE. */
- if (state == NEED_PHI_STATE_NO)
+ if (info->need_phi_state == NEED_PHI_STATE_NO)
{
int def_block_index = bitmap_first_set_bit (db_p->def_blocks);
if (def_block_index == -1
|| ! dominated_by_p (CDI_DOMINATORS, bb,
BASIC_BLOCK (def_block_index)))
- set_phi_state (var, NEED_PHI_STATE_MAYBE);
+ info->need_phi_state = NEED_PHI_STATE_MAYBE;
}
else
- set_phi_state (var, NEED_PHI_STATE_MAYBE);
-}
-
-
-/* Return true if symbol SYM is marked for renaming. */
-
-bool
-symbol_marked_for_renaming (tree sym)
-{
- return bitmap_bit_p (SYMS_TO_RENAME (cfun), DECL_UID (sym));
+ info->need_phi_state = NEED_PHI_STATE_MAYBE;
}
@@ -570,7 +540,8 @@ is_old_name (tree name)
unsigned ver = SSA_NAME_VERSION (name);
if (!new_ssa_names)
return false;
- return ver < new_ssa_names->n_bits && TEST_BIT (old_ssa_names, ver);
+ return (ver < SBITMAP_SIZE (new_ssa_names)
+ && TEST_BIT (old_ssa_names, ver));
}
@@ -582,30 +553,8 @@ is_new_name (tree name)
unsigned ver = SSA_NAME_VERSION (name);
if (!new_ssa_names)
return false;
- return ver < new_ssa_names->n_bits && TEST_BIT (new_ssa_names, ver);
-}
-
-
-/* Hashing and equality functions for REPL_TBL. */
-
-static hashval_t
-repl_map_hash (const void *p)
-{
- return htab_hash_pointer ((const void *)((const struct repl_map_d *)p)->name);
-}
-
-static int
-repl_map_eq (const void *p1, const void *p2)
-{
- return ((const struct repl_map_d *)p1)->name
- == ((const struct repl_map_d *)p2)->name;
-}
-
-static void
-repl_map_free (void *p)
-{
- BITMAP_FREE (((struct repl_map_d *)p)->set);
- free (p);
+ return (ver < SBITMAP_SIZE (new_ssa_names)
+ && TEST_BIT (new_ssa_names, ver));
}
@@ -614,17 +563,7 @@ repl_map_free (void *p)
static inline bitmap
names_replaced_by (tree new_tree)
{
- struct repl_map_d m;
- void **slot;
-
- m.name = new_tree;
- slot = htab_find_slot (repl_tbl, (void *) &m, NO_INSERT);
-
- /* If N was not registered in the replacement table, return NULL. */
- if (slot == NULL || *slot == NULL)
- return NULL;
-
- return ((struct repl_map_d *) *slot)->set;
+ return get_ssa_name_ann (new_tree)->repl_set;
}
@@ -633,22 +572,10 @@ names_replaced_by (tree new_tree)
static inline void
add_to_repl_tbl (tree new_tree, tree old)
{
- struct repl_map_d m, *mp;
- void **slot;
-
- m.name = new_tree;
- slot = htab_find_slot (repl_tbl, (void *) &m, INSERT);
- if (*slot == NULL)
- {
- mp = XNEW (struct repl_map_d);
- mp->name = new_tree;
- mp->set = BITMAP_ALLOC (NULL);
- *slot = (void *) mp;
- }
- else
- mp = (struct repl_map_d *) *slot;
-
- bitmap_set_bit (mp->set, SSA_NAME_VERSION (old));
+ bitmap *set = &get_ssa_name_ann (new_tree)->repl_set;
+ if (!*set)
+ *set = BITMAP_ALLOC (&update_ssa_obstack);
+ bitmap_set_bit (*set, SSA_NAME_VERSION (old));
}
@@ -660,34 +587,13 @@ add_to_repl_tbl (tree new_tree, tree old)
static void
add_new_name_mapping (tree new_tree, tree old)
{
- timevar_push (TV_TREE_SSA_INCREMENTAL);
-
/* OLD and NEW_TREE must be different SSA names for the same symbol. */
- gcc_assert (new_tree != old && SSA_NAME_VAR (new_tree) == SSA_NAME_VAR (old));
-
- /* If this mapping is for virtual names, we will need to update
- virtual operands. If this is a mapping for .MEM, then we gather
- the symbols associated with each name. */
- if (!is_gimple_reg (new_tree))
- {
- tree sym;
-
- update_ssa_stats.num_virtual_mappings++;
- update_ssa_stats.num_virtual_symbols++;
-
- /* Keep counts of virtual mappings and symbols to use in the
- virtual mapping heuristic. If we have large numbers of
- virtual mappings for a relatively low number of symbols, it
- will make more sense to rename the symbols from scratch.
- Otherwise, the insertion of PHI nodes for each of the old
- names in these mappings will be very slow. */
- sym = SSA_NAME_VAR (new_tree);
- bitmap_set_bit (update_ssa_stats.virtual_symbols, DECL_UID (sym));
- }
+ gcc_checking_assert (new_tree != old
+ && SSA_NAME_VAR (new_tree) == SSA_NAME_VAR (old));
/* We may need to grow NEW_SSA_NAMES and OLD_SSA_NAMES because our
caller may have created new names since the set was created. */
- if (new_ssa_names->n_bits <= num_ssa_names - 1)
+ if (SBITMAP_SIZE (new_ssa_names) <= num_ssa_names - 1)
{
unsigned int new_sz = num_ssa_names + NAME_SETS_GROWTH_FACTOR;
new_ssa_names = sbitmap_resize (new_ssa_names, new_sz, 0);
@@ -706,11 +612,6 @@ add_new_name_mapping (tree new_tree, tree old)
respectively. */
SET_BIT (new_ssa_names, SSA_NAME_VERSION (new_tree));
SET_BIT (old_ssa_names, SSA_NAME_VERSION (old));
-
- /* Update mapping counter to use in the virtual mapping heuristic. */
- update_ssa_stats.num_total_mappings++;
-
- timevar_pop (TV_TREE_SSA_INCREMENTAL);
}
@@ -739,7 +640,7 @@ mark_def_sites (basic_block bb, gimple stmt, bitmap kills)
form, force an operand scan on every statement. */
update_stmt (stmt);
- gcc_assert (blocks_to_update == NULL);
+ gcc_checking_assert (blocks_to_update == NULL);
set_register_defs (stmt, false);
set_rewrite_uses (stmt, false);
@@ -748,7 +649,7 @@ mark_def_sites (basic_block bb, gimple stmt, bitmap kills)
FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_USE)
{
tree sym = USE_FROM_PTR (use_p);
- gcc_assert (DECL_P (sym));
+ gcc_checking_assert (DECL_P (sym));
set_rewrite_uses (stmt, true);
}
if (rewrite_uses_p (stmt))
@@ -758,10 +659,10 @@ mark_def_sites (basic_block bb, gimple stmt, bitmap kills)
/* If a variable is used before being set, then the variable is live
across a block boundary, so mark it live-on-entry to BB. */
- FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_USE)
+ FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_ALL_USES)
{
tree sym = USE_FROM_PTR (use_p);
- gcc_assert (DECL_P (sym));
+ gcc_checking_assert (DECL_P (sym));
if (!bitmap_bit_p (kills, DECL_UID (sym)))
set_livein_block (sym, bb);
set_rewrite_uses (stmt, true);
@@ -769,9 +670,9 @@ mark_def_sites (basic_block bb, gimple stmt, bitmap kills)
/* Now process the defs. Mark BB as the definition block and add
each def to the set of killed symbols. */
- FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_DEF)
+ FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_ALL_DEFS)
{
- gcc_assert (DECL_P (def));
+ gcc_checking_assert (DECL_P (def));
set_def_block (def, bb, false);
bitmap_set_bit (kills, DECL_UID (def));
set_register_defs (stmt, true);
@@ -1005,26 +906,10 @@ prune_unused_phi_nodes (bitmap phis, bitmap kills, bitmap uses)
static inline struct def_blocks_d *
find_def_blocks_for (tree var)
{
- struct def_blocks_d dm;
- dm.var = var;
- return (struct def_blocks_d *) htab_find (def_blocks, &dm);
-}
-
-
-/* Retrieve or create a default definition for symbol SYM. */
-
-static inline tree
-get_default_def_for (tree sym)
-{
- tree ddef = gimple_default_def (cfun, sym);
-
- if (ddef == NULL_TREE)
- {
- ddef = make_ssa_name (sym, gimple_build_nop ());
- set_default_def (sym, ddef);
- }
-
- return ddef;
+ def_blocks_p p = &get_common_info (var)->def_blocks;
+ if (!p->def_blocks)
+ return NULL;
+ return p;
}
@@ -1034,7 +919,7 @@ static void
mark_phi_for_rewrite (basic_block bb, gimple phi)
{
gimple_vec phis;
- unsigned i, idx = bb->index;
+ unsigned n, idx = bb->index;
if (rewrite_uses_p (phi))
return;
@@ -1045,9 +930,10 @@ mark_phi_for_rewrite (basic_block bb, gimple phi)
return;
bitmap_set_bit (blocks_with_phis_to_rewrite, idx);
- VEC_reserve (gimple_vec, heap, phis_to_rewrite, last_basic_block + 1);
- for (i = VEC_length (gimple_vec, phis_to_rewrite); i <= idx; i++)
- VEC_quick_push (gimple_vec, phis_to_rewrite, NULL);
+
+ n = (unsigned) last_basic_block + 1;
+ if (VEC_length (gimple_vec, phis_to_rewrite) < n)
+ VEC_safe_grow_cleared (gimple_vec, heap, phis_to_rewrite, n);
phis = VEC_index (gimple_vec, phis_to_rewrite, idx);
if (!phis)
@@ -1075,10 +961,7 @@ insert_phi_nodes_for (tree var, bitmap phi_insertion_points, bool update_p)
gimple phi;
basic_block bb;
bitmap_iterator bi;
- struct def_blocks_d *def_map;
-
- def_map = find_def_blocks_for (var);
- gcc_assert (def_map);
+ struct def_blocks_d *def_map = find_def_blocks_for (var);
/* Remove the blocks where we already have PHI nodes for VAR. */
bitmap_and_compl_into (phi_insertion_points, def_map->phi_blocks);
@@ -1105,11 +988,9 @@ insert_phi_nodes_for (tree var, bitmap phi_insertion_points, bool update_p)
edge_iterator ei;
tree new_lhs;
- gcc_assert (update_p);
- phi = create_phi_node (var, bb);
-
- new_lhs = duplicate_ssa_name (var, phi);
- gimple_phi_set_result (phi, new_lhs);
+ gcc_checking_assert (update_p);
+ new_lhs = duplicate_ssa_name (var, NULL);
+ phi = create_phi_node (new_lhs, bb);
add_new_name_mapping (new_lhs, var);
/* Add VAR to every argument slot of PHI. We need VAR in
@@ -1125,7 +1006,7 @@ insert_phi_nodes_for (tree var, bitmap phi_insertion_points, bool update_p)
{
tree tracked_var;
- gcc_assert (DECL_P (var));
+ gcc_checking_assert (DECL_P (var));
phi = create_phi_node (var, bb);
tracked_var = target_for_debug_bind (var);
@@ -1145,6 +1026,18 @@ insert_phi_nodes_for (tree var, bitmap phi_insertion_points, bool update_p)
}
}
+/* Sort var_infos after DECL_UID of their var. */
+
+static int
+insert_phi_nodes_compare_var_infos (const void *a, const void *b)
+{
+ const struct var_info_d *defa = *(struct var_info_d * const *)a;
+ const struct var_info_d *defb = *(struct var_info_d * const *)b;
+ if (DECL_UID (defa->var) < DECL_UID (defb->var))
+ return -1;
+ else
+ return 1;
+}
/* Insert PHI nodes at the dominance frontier of blocks with variable
definitions. DFS contains the dominance frontier information for
@@ -1153,43 +1046,30 @@ insert_phi_nodes_for (tree var, bitmap phi_insertion_points, bool update_p)
static void
insert_phi_nodes (bitmap_head *dfs)
{
- referenced_var_iterator rvi;
- bitmap_iterator bi;
- tree var;
- bitmap vars;
- unsigned uid;
+ htab_iterator hi;
+ unsigned i;
+ var_info_p info;
+ VEC(var_info_p,heap) *vars;
timevar_push (TV_TREE_INSERT_PHI_NODES);
+ vars = VEC_alloc (var_info_p, heap, htab_elements (var_infos));
+ FOR_EACH_HTAB_ELEMENT (var_infos, info, var_info_p, hi)
+ if (info->info.need_phi_state != NEED_PHI_STATE_NO)
+ VEC_quick_push (var_info_p, vars, info);
+
/* Do two stages to avoid code generation differences for UID
differences but no UID ordering differences. */
+ VEC_qsort (var_info_p, vars, insert_phi_nodes_compare_var_infos);
- vars = BITMAP_ALLOC (NULL);
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
+ FOR_EACH_VEC_ELT (var_info_p, vars, i, info)
{
- struct def_blocks_d *def_map;
-
- def_map = find_def_blocks_for (var);
- if (def_map == NULL)
- continue;
-
- if (get_phi_state (var) != NEED_PHI_STATE_NO)
- bitmap_set_bit (vars, DECL_UID (var));
- }
-
- EXECUTE_IF_SET_IN_BITMAP (vars, 0, uid, bi)
- {
- tree var = referenced_var (uid);
- struct def_blocks_d *def_map;
- bitmap idf;
-
- def_map = find_def_blocks_for (var);
- idf = compute_idf (def_map->def_blocks, dfs);
- insert_phi_nodes_for (var, idf, false);
+ bitmap idf = compute_idf (info->info.def_blocks.def_blocks, dfs);
+ insert_phi_nodes_for (info->var, idf, false);
BITMAP_FREE (idf);
}
- BITMAP_FREE (vars);
+ VEC_free(var_info_p, heap, vars);
timevar_pop (TV_TREE_INSERT_PHI_NODES);
}
@@ -1201,6 +1081,7 @@ insert_phi_nodes (bitmap_head *dfs)
static void
register_new_def (tree def, tree sym)
{
+ common_info_p info = get_common_info (sym);
tree currdef;
/* If this variable is set in a single basic block and all uses are
@@ -1211,13 +1092,13 @@ register_new_def (tree def, tree sym)
This is the same test to prune the set of variables which may
need PHI nodes. So we just use that information since it's already
computed and available for us to use. */
- if (get_phi_state (sym) == NEED_PHI_STATE_NO)
+ if (info->need_phi_state == NEED_PHI_STATE_NO)
{
- set_current_def (sym, def);
+ info->current_def = def;
return;
}
- currdef = get_current_def (sym);
+ currdef = info->current_def;
/* If SYM is not a GIMPLE register, then CURRDEF may be a name whose
SSA_NAME_VAR is not necessarily SYM. In this case, also push SYM
@@ -1235,7 +1116,7 @@ register_new_def (tree def, tree sym)
VEC_safe_push (tree, heap, block_defs_stack, currdef ? currdef : sym);
/* Set the current reaching definition for SYM to be DEF. */
- set_current_def (sym, def);
+ info->current_def = def;
}
@@ -1268,18 +1149,18 @@ register_new_def (tree def, tree sym)
static tree
get_reaching_def (tree var)
{
+ common_info_p info = get_common_info (var);
tree currdef;
/* Lookup the current reaching definition for VAR. */
- currdef = get_current_def (var);
+ currdef = info->current_def;
/* If there is no reaching definition for VAR, create and register a
default definition for it (if needed). */
if (currdef == NULL_TREE)
{
tree sym = DECL_P (var) ? var : SSA_NAME_VAR (var);
- currdef = get_default_def_for (sym);
- set_current_def (var, currdef);
+ currdef = get_or_create_ssa_default_def (cfun, sym);
}
/* Return the current reaching definition for VAR, or the default
@@ -1299,9 +1180,11 @@ rewrite_debug_stmt_uses (gimple stmt)
FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_USE)
{
- tree var = USE_FROM_PTR (use_p), def = NULL_TREE;
- gcc_assert (DECL_P (var));
- if (var_ann (var) == NULL)
+ tree var = USE_FROM_PTR (use_p), def;
+ common_info_p info = get_common_info (var);
+ gcc_checking_assert (DECL_P (var));
+ def = info->current_def;
+ if (!def)
{
if (TREE_CODE (var) == PARM_DECL && single_succ_p (ENTRY_BLOCK_PTR))
{
@@ -1343,38 +1226,34 @@ rewrite_debug_stmt_uses (gimple stmt)
}
else
{
- def = get_current_def (var);
- /* Check if get_current_def can be trusted. */
- if (def)
+ /* Check if info->current_def can be trusted. */
+ basic_block bb = gimple_bb (stmt);
+ basic_block def_bb
+ = SSA_NAME_IS_DEFAULT_DEF (def)
+ ? NULL : gimple_bb (SSA_NAME_DEF_STMT (def));
+
+ /* If definition is in current bb, it is fine. */
+ if (bb == def_bb)
+ ;
+ /* If definition bb doesn't dominate the current bb,
+ it can't be used. */
+ else if (def_bb && !dominated_by_p (CDI_DOMINATORS, bb, def_bb))
+ def = NULL;
+ /* If there is just one definition and dominates the current
+ bb, it is fine. */
+ else if (info->need_phi_state == NEED_PHI_STATE_NO)
+ ;
+ else
{
- basic_block bb = gimple_bb (stmt);
- basic_block def_bb
- = SSA_NAME_IS_DEFAULT_DEF (def)
- ? NULL : gimple_bb (SSA_NAME_DEF_STMT (def));
+ struct def_blocks_d *db_p = get_def_blocks_for (info);
- /* If definition is in current bb, it is fine. */
- if (bb == def_bb)
- ;
- /* If definition bb doesn't dominate the current bb,
- it can't be used. */
- else if (def_bb && !dominated_by_p (CDI_DOMINATORS, bb, def_bb))
- def = NULL;
- /* If there is just one definition and dominates the current
- bb, it is fine. */
- else if (get_phi_state (var) == NEED_PHI_STATE_NO)
+ /* If there are some non-debug uses in the current bb,
+ it is fine. */
+ if (bitmap_bit_p (db_p->livein_blocks, bb->index))
;
+ /* Otherwise give up for now. */
else
- {
- struct def_blocks_d *db_p = get_def_blocks_for (var);
-
- /* If there are some non-debug uses in the current bb,
- it is fine. */
- if (bitmap_bit_p (db_p->livein_blocks, bb->index))
- ;
- /* Otherwise give up for now. */
- else
- def = NULL;
- }
+ def = NULL;
}
}
if (def == NULL)
@@ -1394,12 +1273,12 @@ rewrite_debug_stmt_uses (gimple stmt)
definition of a variable when a new real or virtual definition is found. */
static void
-rewrite_stmt (gimple_stmt_iterator si)
+rewrite_stmt (gimple_stmt_iterator *si)
{
use_operand_p use_p;
def_operand_p def_p;
ssa_op_iter iter;
- gimple stmt = gsi_stmt (si);
+ gimple stmt = gsi_stmt (*si);
/* If mark_def_sites decided that we don't need to rewrite this
statement, ignore it. */
@@ -1420,22 +1299,37 @@ rewrite_stmt (gimple_stmt_iterator si)
if (is_gimple_debug (stmt))
rewrite_debug_stmt_uses (stmt);
else
- FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_USE)
+ FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_ALL_USES)
{
tree var = USE_FROM_PTR (use_p);
- gcc_assert (DECL_P (var));
+ gcc_checking_assert (DECL_P (var));
SET_USE (use_p, get_reaching_def (var));
}
}
/* Step 2. Register the statement's DEF operands. */
if (register_defs_p (stmt))
- FOR_EACH_SSA_DEF_OPERAND (def_p, stmt, iter, SSA_OP_DEF)
+ FOR_EACH_SSA_DEF_OPERAND (def_p, stmt, iter, SSA_OP_ALL_DEFS)
{
tree var = DEF_FROM_PTR (def_p);
- tree name = make_ssa_name (var, stmt);
+ tree name;
tree tracked_var;
- gcc_assert (DECL_P (var));
+
+ gcc_checking_assert (DECL_P (var));
+
+ if (gimple_clobber_p (stmt)
+ && is_gimple_reg (var))
+ {
+ /* If we rewrite a DECL into SSA form then drop its
+ clobber stmts and replace uses with a new default def. */
+ gcc_checking_assert (TREE_CODE (var) == VAR_DECL
+ && !gimple_vdef (stmt));
+ gsi_replace (si, gimple_build_nop (), true);
+ register_new_def (get_or_create_ssa_default_def (cfun, var), var);
+ break;
+ }
+
+ name = make_ssa_name (var, stmt);
SET_DEF (def_p, name);
register_new_def (DEF_FROM_PTR (def_p), var);
@@ -1443,7 +1337,7 @@ rewrite_stmt (gimple_stmt_iterator si)
if (tracked_var)
{
gimple note = gimple_build_debug_bind (tracked_var, name, stmt);
- gsi_insert_after (&si, note, GSI_SAME_STMT);
+ gsi_insert_after (si, note, GSI_SAME_STMT);
}
}
}
@@ -1488,7 +1382,6 @@ static void
rewrite_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
basic_block bb)
{
- gimple phi;
gimple_stmt_iterator gsi;
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -1502,11 +1395,7 @@ rewrite_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
node introduces a new version for the associated variable. */
for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
- tree result;
-
- phi = gsi_stmt (gsi);
- result = gimple_phi_result (phi);
- gcc_assert (is_gimple_reg (result));
+ tree result = gimple_phi_result (gsi_stmt (gsi));
register_new_def (result, SSA_NAME_VAR (result));
}
@@ -1515,7 +1404,7 @@ rewrite_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
of a variable when a new real or virtual definition is found. */
if (TEST_BIT (interesting_blocks, bb->index))
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- rewrite_stmt (gsi);
+ rewrite_stmt (&gsi);
/* Step 3. Visit all the successor blocks of BB looking for PHI nodes.
For every PHI node found, add a new argument containing the current
@@ -1565,7 +1454,7 @@ rewrite_leave_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
var = tmp;
}
- set_current_def (var, saved_def);
+ get_common_info (var)->current_def = saved_def;
}
}
@@ -1584,11 +1473,7 @@ dump_decl_set (FILE *file, bitmap set)
EXECUTE_IF_SET_IN_BITMAP (set, 0, i, bi)
{
- tree var = referenced_var_lookup (cfun, i);
- if (var)
- print_generic_expr (file, var, 0);
- else
- fprintf (file, "D.%u", i);
+ fprintf (file, "D.%u", i);
fprintf (file, " ");
}
@@ -1684,23 +1569,25 @@ debug_defs_stack (int n)
void
dump_currdefs (FILE *file)
{
- referenced_var_iterator i;
+ unsigned i;
tree var;
+ if (VEC_empty (tree, symbols_to_rename))
+ return;
+
fprintf (file, "\n\nCurrent reaching definitions\n\n");
- FOR_EACH_REFERENCED_VAR (cfun, var, i)
- if (SYMS_TO_RENAME (cfun) == NULL
- || bitmap_bit_p (SYMS_TO_RENAME (cfun), DECL_UID (var)))
- {
- fprintf (file, "CURRDEF (");
- print_generic_expr (file, var, 0);
- fprintf (file, ") = ");
- if (get_current_def (var))
- print_generic_expr (file, get_current_def (var), 0);
- else
- fprintf (file, "<NIL>");
- fprintf (file, "\n");
- }
+ FOR_EACH_VEC_ELT (tree, symbols_to_rename, i, var)
+ {
+ common_info_p info = get_common_info (var);
+ fprintf (file, "CURRDEF (");
+ print_generic_expr (file, var, 0);
+ fprintf (file, ") = ");
+ if (info->current_def)
+ print_generic_expr (file, info->current_def, 0);
+ else
+ fprintf (file, "<NIL>");
+ fprintf (file, "\n");
+ }
}
@@ -1723,7 +1610,7 @@ dump_tree_ssa (FILE *file)
fprintf (file, "SSA renaming information for %s\n\n", funcname);
- dump_def_blocks (file);
+ dump_var_infos (file);
dump_defs_stack (file, -1);
dump_currdefs (file);
dump_tree_ssa_stats (file);
@@ -1756,23 +1643,13 @@ htab_statistics (FILE *file, htab_t htab)
void
dump_tree_ssa_stats (FILE *file)
{
- if (def_blocks || repl_tbl)
- fprintf (file, "\nHash table statistics:\n");
-
- if (def_blocks)
+ if (var_infos)
{
- fprintf (file, " def_blocks: ");
- htab_statistics (file, def_blocks);
- }
-
- if (repl_tbl)
- {
- fprintf (file, " repl_tbl: ");
- htab_statistics (file, repl_tbl);
+ fprintf (file, "\nHash table statistics:\n");
+ fprintf (file, " var_infos: ");
+ htab_statistics (file, var_infos);
+ fprintf (file, "\n");
}
-
- if (def_blocks || repl_tbl)
- fprintf (file, "\n");
}
@@ -1785,71 +1662,60 @@ debug_tree_ssa_stats (void)
}
-/* Hashing and equality functions for DEF_BLOCKS. */
+/* Hashing and equality functions for VAR_INFOS. */
static hashval_t
-def_blocks_hash (const void *p)
+var_info_hash (const void *p)
{
- return htab_hash_pointer
- ((const void *)((const struct def_blocks_d *)p)->var);
+ return DECL_UID (((const struct var_info_d *)p)->var);
}
static int
-def_blocks_eq (const void *p1, const void *p2)
-{
- return ((const struct def_blocks_d *)p1)->var
- == ((const struct def_blocks_d *)p2)->var;
-}
-
-
-/* Free memory allocated by one entry in DEF_BLOCKS. */
-
-static void
-def_blocks_free (void *p)
+var_info_eq (const void *p1, const void *p2)
{
- struct def_blocks_d *entry = (struct def_blocks_d *) p;
- BITMAP_FREE (entry->def_blocks);
- BITMAP_FREE (entry->phi_blocks);
- BITMAP_FREE (entry->livein_blocks);
- free (entry);
+ return ((const struct var_info_d *)p1)->var
+ == ((const struct var_info_d *)p2)->var;
}
-/* Callback for htab_traverse to dump the DEF_BLOCKS hash table. */
+/* Callback for htab_traverse to dump the VAR_INFOS hash table. */
static int
-debug_def_blocks_r (void **slot, void *data)
+debug_var_infos_r (void **slot, void *data)
{
FILE *file = (FILE *) data;
- struct def_blocks_d *db_p = (struct def_blocks_d *) *slot;
+ struct var_info_d *info = (struct var_info_d *) *slot;
fprintf (file, "VAR: ");
- print_generic_expr (file, db_p->var, dump_flags);
- bitmap_print (file, db_p->def_blocks, ", DEF_BLOCKS: { ", "}");
- bitmap_print (file, db_p->livein_blocks, ", LIVEIN_BLOCKS: { ", "}");
- bitmap_print (file, db_p->phi_blocks, ", PHI_BLOCKS: { ", "}\n");
+ print_generic_expr (file, info->var, dump_flags);
+ bitmap_print (file, info->info.def_blocks.def_blocks,
+ ", DEF_BLOCKS: { ", "}");
+ bitmap_print (file, info->info.def_blocks.livein_blocks,
+ ", LIVEIN_BLOCKS: { ", "}");
+ bitmap_print (file, info->info.def_blocks.phi_blocks,
+ ", PHI_BLOCKS: { ", "}\n");
return 1;
}
-/* Dump the DEF_BLOCKS hash table on FILE. */
+/* Dump the VAR_INFOS hash table on FILE. */
void
-dump_def_blocks (FILE *file)
+dump_var_infos (FILE *file)
{
fprintf (file, "\n\nDefinition and live-in blocks:\n\n");
- if (def_blocks)
- htab_traverse (def_blocks, debug_def_blocks_r, file);
+ if (var_infos)
+ htab_traverse (var_infos, debug_var_infos_r, file);
}
-/* Dump the DEF_BLOCKS hash table on stderr. */
+/* Dump the VAR_INFOS hash table on stderr. */
DEBUG_FUNCTION void
-debug_def_blocks (void)
+debug_var_infos (void)
{
- dump_def_blocks (stderr);
+ dump_var_infos (stderr);
}
@@ -1858,7 +1724,8 @@ debug_def_blocks (void)
static inline void
register_new_update_single (tree new_name, tree old_name)
{
- tree currdef = get_current_def (old_name);
+ common_info_p info = get_common_info (old_name);
+ tree currdef = info->current_def;
/* Push the current reaching definition into BLOCK_DEFS_STACK.
This stack is later used by the dominator tree callbacks to
@@ -1871,7 +1738,7 @@ register_new_update_single (tree new_name, tree old_name)
/* Set the current reaching definition for OLD_NAME to be
NEW_NAME. */
- set_current_def (old_name, new_name);
+ info->current_def = new_name;
}
@@ -1902,7 +1769,7 @@ maybe_replace_use (use_operand_p use_p)
tree use = USE_FROM_PTR (use_p);
tree sym = DECL_P (use) ? use : SSA_NAME_VAR (use);
- if (symbol_marked_for_renaming (sym))
+ if (marked_for_renaming (sym))
rdef = get_reaching_def (sym);
else if (is_old_name (use))
rdef = get_reaching_def (use);
@@ -1922,11 +1789,11 @@ maybe_replace_use_in_debug_stmt (use_operand_p use_p)
tree use = USE_FROM_PTR (use_p);
tree sym = DECL_P (use) ? use : SSA_NAME_VAR (use);
- if (symbol_marked_for_renaming (sym))
- rdef = get_current_def (sym);
+ if (marked_for_renaming (sym))
+ rdef = get_var_info (sym)->info.current_def;
else if (is_old_name (use))
{
- rdef = get_current_def (use);
+ rdef = get_ssa_name_ann (use)->info.current_def;
/* We can't assume that, if there's no current definition, the
default one should be used. It could be the case that we've
rearranged blocks so that the earlier definition no longer
@@ -1958,7 +1825,7 @@ maybe_register_def (def_operand_p def_p, gimple stmt,
/* If DEF is a naked symbol that needs renaming, create a new
name for it. */
- if (symbol_marked_for_renaming (sym))
+ if (marked_for_renaming (sym))
{
if (DECL_P (def))
{
@@ -1981,7 +1848,7 @@ maybe_register_def (def_operand_p def_p, gimple stmt,
FOR_EACH_EDGE (e, ei, bb->succs)
if (!(e->flags & EDGE_EH))
{
- gcc_assert (!ef);
+ gcc_checking_assert (!ef);
ef = e;
}
/* If there are other predecessors to ef->dest, then
@@ -2127,7 +1994,7 @@ rewrite_update_phi_arguments (basic_block bb)
tree arg, lhs_sym, reaching_def = NULL;
use_operand_p arg_p;
- gcc_assert (rewrite_uses_p (phi));
+ gcc_checking_assert (rewrite_uses_p (phi));
arg_p = PHI_ARG_DEF_PTR_FROM_EDGE (phi, e);
arg = USE_FROM_PTR (arg_p);
@@ -2149,7 +2016,7 @@ rewrite_update_phi_arguments (basic_block bb)
{
tree sym = DECL_P (arg) ? arg : SSA_NAME_VAR (arg);
- if (symbol_marked_for_renaming (sym))
+ if (marked_for_renaming (sym))
reaching_def = get_reaching_def (sym);
else if (is_old_name (arg))
reaching_def = get_reaching_def (arg);
@@ -2226,7 +2093,7 @@ rewrite_update_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
lhs = gimple_phi_result (phi);
lhs_sym = SSA_NAME_VAR (lhs);
- if (symbol_marked_for_renaming (lhs_sym))
+ if (marked_for_renaming (lhs_sym))
register_new_update_single (lhs, lhs_sym);
else
{
@@ -2249,7 +2116,7 @@ rewrite_update_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
/* Step 2. Rewrite every variable used in each statement in the block. */
if (TEST_BIT (interesting_blocks, bb->index))
{
- gcc_assert (bitmap_bit_p (blocks_to_update, bb->index));
+ gcc_checking_assert (bitmap_bit_p (blocks_to_update, bb->index));
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
rewrite_update_stmt (gsi_stmt (gsi), gsi);
}
@@ -2279,7 +2146,7 @@ rewrite_update_leave_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
return;
saved_def = VEC_pop (tree, block_defs_stack);
- set_current_def (var, saved_def);
+ get_common_info (var)->current_def = saved_def;
}
}
@@ -2340,7 +2207,7 @@ rewrite_blocks (basic_block entry, enum rewrite_mode what)
if (dump_file && (dump_flags & TDF_STATS))
{
dump_dfa_stats (dump_file);
- if (def_blocks)
+ if (var_infos)
dump_tree_ssa_stats (dump_file);
}
@@ -2417,18 +2284,14 @@ mark_def_site_blocks (void)
static void
init_ssa_renamer (void)
{
- tree var;
- referenced_var_iterator rvi;
-
cfun->gimple_df->in_ssa_p = false;
/* Allocate memory for the DEF_BLOCKS hash table. */
- gcc_assert (def_blocks == NULL);
- def_blocks = htab_create (num_referenced_vars, def_blocks_hash,
- def_blocks_eq, def_blocks_free);
+ gcc_assert (var_infos == NULL);
+ var_infos = htab_create (VEC_length (tree, cfun->local_decls),
+ var_info_hash, var_info_eq, free);
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
- set_current_def (var, NULL_TREE);
+ bitmap_obstack_initialize (&update_ssa_obstack);
}
@@ -2437,12 +2300,16 @@ init_ssa_renamer (void)
static void
fini_ssa_renamer (void)
{
- if (def_blocks)
+ if (var_infos)
{
- htab_delete (def_blocks);
- def_blocks = NULL;
+ htab_delete (var_infos);
+ var_infos = NULL;
}
+ bitmap_obstack_release (&update_ssa_obstack);
+
+ cfun->gimple_df->ssa_renaming_needed = 0;
+ cfun->gimple_df->rename_vops = 0;
cfun->gimple_df->in_ssa_p = true;
}
@@ -2468,6 +2335,7 @@ rewrite_into_ssa (void)
{
bitmap_head *dfs;
basic_block bb;
+ unsigned i;
/* Initialize operand data structures. */
init_ssa_operands (cfun);
@@ -2508,6 +2376,25 @@ rewrite_into_ssa (void)
fini_ssa_renamer ();
+ /* Try to get rid of all gimplifier generated temporaries by making
+ its SSA names anonymous. This way we can garbage collect them
+ all after removing unused locals which we do in our TODO. */
+ for (i = 1; i < num_ssa_names; ++i)
+ {
+ tree decl, name = ssa_name (i);
+ if (!name
+ || SSA_NAME_IS_DEFAULT_DEF (name))
+ continue;
+ decl = SSA_NAME_VAR (name);
+ if (decl
+ && TREE_CODE (decl) == VAR_DECL
+ && !VAR_DECL_IS_VIRTUAL_OPERAND (decl)
+ && DECL_ARTIFICIAL (decl)
+ && DECL_IGNORED_P (decl)
+ && !DECL_NAME (decl))
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (name, NULL_TREE);
+ }
+
return 0;
}
@@ -2523,12 +2410,11 @@ struct gimple_opt_pass pass_build_ssa =
NULL, /* next */
0, /* static_pass_number */
TV_TREE_SSA_OTHER, /* tv_id */
- PROP_cfg | PROP_referenced_vars, /* properties_required */
+ PROP_cfg, /* properties_required */
PROP_ssa, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_update_ssa_only_virtuals
- | TODO_verify_ssa
+ TODO_verify_ssa
| TODO_remove_unused_locals /* todo_flags_finish */
}
};
@@ -2540,7 +2426,7 @@ struct gimple_opt_pass pass_build_ssa =
static void
mark_def_interesting (tree var, gimple stmt, basic_block bb, bool insert_phi_p)
{
- gcc_assert (bitmap_bit_p (blocks_to_update, bb->index));
+ gcc_checking_assert (bitmap_bit_p (blocks_to_update, bb->index));
set_register_defs (stmt, true);
if (insert_phi_p)
@@ -2593,7 +2479,7 @@ mark_use_interesting (tree var, gimple stmt, basic_block bb, bool insert_phi_p)
replace it). */
if (insert_phi_p)
{
- struct def_blocks_d *db_p = get_def_blocks_for (var);
+ struct def_blocks_d *db_p = get_def_blocks_for (get_common_info (var));
if (!bitmap_bit_p (db_p->def_blocks, bb->index))
set_livein_block (var, bb);
}
@@ -2601,7 +2487,7 @@ mark_use_interesting (tree var, gimple stmt, basic_block bb, bool insert_phi_p)
/* Do a dominator walk starting at BB processing statements that
- reference symbols in SYMS_TO_RENAME. This is very similar to
+ reference symbols in SSA operands. This is very similar to
mark_def_sites, but the scan handles statements whose operands may
already be SSA names.
@@ -2632,11 +2518,13 @@ prepare_block_for_update (basic_block bb, bool insert_phi_p)
gimple phi = gsi_stmt (si);
tree lhs_sym, lhs = gimple_phi_result (phi);
- lhs_sym = DECL_P (lhs) ? lhs : SSA_NAME_VAR (lhs);
-
- if (!symbol_marked_for_renaming (lhs_sym))
+ if (TREE_CODE (lhs) == SSA_NAME
+ && (! virtual_operand_p (lhs)
+ || ! cfun->gimple_df->rename_vops))
continue;
+ lhs_sym = DECL_P (lhs) ? lhs : SSA_NAME_VAR (lhs);
+ mark_for_renaming (lhs_sym);
mark_def_interesting (lhs_sym, phi, bb, insert_phi_p);
/* Mark the uses in phi nodes as interesting. It would be more correct
@@ -2660,20 +2548,40 @@ prepare_block_for_update (basic_block bb, bool insert_phi_p)
stmt = gsi_stmt (si);
- FOR_EACH_SSA_USE_OPERAND (use_p, stmt, i, SSA_OP_ALL_USES)
+ if (cfun->gimple_df->rename_vops
+ && gimple_vuse (stmt))
{
- tree use = USE_FROM_PTR (use_p);
+ tree use = gimple_vuse (stmt);
tree sym = DECL_P (use) ? use : SSA_NAME_VAR (use);
- if (symbol_marked_for_renaming (sym))
- mark_use_interesting (sym, stmt, bb, insert_phi_p);
+ mark_for_renaming (sym);
+ mark_use_interesting (sym, stmt, bb, insert_phi_p);
}
- FOR_EACH_SSA_DEF_OPERAND (def_p, stmt, i, SSA_OP_ALL_DEFS)
+ FOR_EACH_SSA_USE_OPERAND (use_p, stmt, i, SSA_OP_USE)
{
- tree def = DEF_FROM_PTR (def_p);
+ tree use = USE_FROM_PTR (use_p);
+ if (!DECL_P (use))
+ continue;
+ mark_for_renaming (use);
+ mark_use_interesting (use, stmt, bb, insert_phi_p);
+ }
+
+ if (cfun->gimple_df->rename_vops
+ && gimple_vdef (stmt))
+ {
+ tree def = gimple_vdef (stmt);
tree sym = DECL_P (def) ? def : SSA_NAME_VAR (def);
- if (symbol_marked_for_renaming (sym))
- mark_def_interesting (sym, stmt, bb, insert_phi_p);
+ mark_for_renaming (sym);
+ mark_def_interesting (sym, stmt, bb, insert_phi_p);
+ }
+
+ FOR_EACH_SSA_DEF_OPERAND (def_p, stmt, i, SSA_OP_DEF)
+ {
+ tree def = DEF_FROM_PTR (def_p);
+ if (!DECL_P (def))
+ continue;
+ mark_for_renaming (def);
+ mark_def_interesting (def, stmt, bb, insert_phi_p);
}
}
@@ -2726,14 +2634,15 @@ prepare_def_site_for (tree name, bool insert_phi_p)
gimple stmt;
basic_block bb;
- gcc_assert (names_to_release == NULL
- || !bitmap_bit_p (names_to_release, SSA_NAME_VERSION (name)));
+ gcc_checking_assert (names_to_release == NULL
+ || !bitmap_bit_p (names_to_release,
+ SSA_NAME_VERSION (name)));
stmt = SSA_NAME_DEF_STMT (name);
bb = gimple_bb (stmt);
if (bb)
{
- gcc_assert (bb->index < last_basic_block);
+ gcc_checking_assert (bb->index < last_basic_block);
mark_block_for_update (bb);
mark_def_interesting (name, stmt, bb, insert_phi_p);
}
@@ -2830,24 +2739,12 @@ dump_update_ssa (FILE *file)
EXECUTE_IF_SET_IN_SBITMAP (new_ssa_names, 0, i, sbi)
dump_names_replaced_by (file, ssa_name (i));
-
- fprintf (file, "\n");
- fprintf (file, "Number of virtual NEW -> OLD mappings: %7u\n",
- update_ssa_stats.num_virtual_mappings);
- fprintf (file, "Number of real NEW -> OLD mappings: %7u\n",
- update_ssa_stats.num_total_mappings
- - update_ssa_stats.num_virtual_mappings);
- fprintf (file, "Number of total NEW -> OLD mappings: %7u\n",
- update_ssa_stats.num_total_mappings);
-
- fprintf (file, "\nNumber of virtual symbols: %u\n",
- update_ssa_stats.num_virtual_symbols);
}
- if (!bitmap_empty_p (SYMS_TO_RENAME (cfun)))
+ if (symbols_to_rename_set && !bitmap_empty_p (symbols_to_rename_set))
{
fprintf (file, "\nSymbols to be put in SSA form\n");
- dump_decl_set (file, SYMS_TO_RENAME (cfun));
+ dump_decl_set (file, symbols_to_rename_set);
fprintf (file, "\n");
}
@@ -2887,10 +2784,9 @@ init_update_ssa (struct function *fn)
new_ssa_names = sbitmap_alloc (num_ssa_names + NAME_SETS_GROWTH_FACTOR);
sbitmap_zero (new_ssa_names);
- repl_tbl = htab_create (20, repl_map_hash, repl_map_eq, repl_map_free);
+ bitmap_obstack_initialize (&update_ssa_obstack);
+
names_to_release = NULL;
- memset (&update_ssa_stats, 0, sizeof (update_ssa_stats));
- update_ssa_stats.virtual_symbols = BITMAP_ALLOC (NULL);
update_ssa_initialized_fn = fn;
}
@@ -2909,11 +2805,9 @@ delete_update_ssa (void)
sbitmap_free (new_ssa_names);
new_ssa_names = NULL;
- htab_delete (repl_tbl);
- repl_tbl = NULL;
-
- bitmap_clear (SYMS_TO_RENAME (update_ssa_initialized_fn));
- BITMAP_FREE (update_ssa_stats.virtual_symbols);
+ BITMAP_FREE (symbols_to_rename_set);
+ symbols_to_rename_set = NULL;
+ VEC_free (tree, heap, symbols_to_rename);
if (names_to_release)
{
@@ -2937,21 +2831,34 @@ delete_update_ssa (void)
BITMAP_FREE (blocks_with_phis_to_rewrite);
BITMAP_FREE (blocks_to_update);
+
update_ssa_initialized_fn = NULL;
}
/* Create a new name for OLD_NAME in statement STMT and replace the
- operand pointed to by DEF_P with the newly created name. Return
- the new name and register the replacement mapping <NEW, OLD> in
+ operand pointed to by DEF_P with the newly created name. If DEF_P
+ is NULL then STMT should be a GIMPLE assignment.
+ Return the new name and register the replacement mapping <NEW, OLD> in
update_ssa's tables. */
tree
create_new_def_for (tree old_name, gimple stmt, def_operand_p def)
{
- tree new_name = duplicate_ssa_name (old_name, stmt);
+ tree new_name;
- SET_DEF (def, new_name);
+ timevar_push (TV_TREE_SSA_INCREMENTAL);
+
+ if (!update_ssa_initialized_fn)
+ init_update_ssa (cfun);
+
+ gcc_assert (update_ssa_initialized_fn == cfun);
+
+ new_name = duplicate_ssa_name (old_name, stmt);
+ if (def)
+ SET_DEF (def, new_name);
+ else
+ gimple_assign_set_lhs (stmt, new_name);
if (gimple_code (stmt) == GIMPLE_PHI)
{
@@ -2961,55 +2868,26 @@ create_new_def_for (tree old_name, gimple stmt, def_operand_p def)
SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_name) = bb_has_abnormal_pred (bb);
}
- register_new_name_mapping (new_name, old_name);
+ add_new_name_mapping (new_name, old_name);
/* For the benefit of passes that will be updating the SSA form on
their own, set the current reaching definition of OLD_NAME to be
NEW_NAME. */
- set_current_def (old_name, new_name);
-
- return new_name;
-}
-
-
-/* Register name NEW to be a replacement for name OLD. This function
- must be called for every replacement that should be performed by
- update_ssa. */
-
-void
-register_new_name_mapping (tree new_tree, tree old)
-{
- if (!update_ssa_initialized_fn)
- init_update_ssa (cfun);
-
- gcc_assert (update_ssa_initialized_fn == cfun);
-
- add_new_name_mapping (new_tree, old);
-}
+ get_ssa_name_ann (old_name)->info.current_def = new_name;
+ timevar_pop (TV_TREE_SSA_INCREMENTAL);
-/* Register symbol SYM to be renamed by update_ssa. */
-
-void
-mark_sym_for_renaming (tree sym)
-{
- bitmap_set_bit (SYMS_TO_RENAME (cfun), DECL_UID (sym));
+ return new_name;
}
-/* Register all the symbols in SET to be renamed by update_ssa. */
+/* Mark virtual operands of FN for renaming by update_ssa. */
void
-mark_set_for_renaming (bitmap set)
+mark_virtual_operands_for_renaming (struct function *fn)
{
- bitmap_iterator bi;
- unsigned i;
-
- if (set == NULL || bitmap_empty_p (set))
- return;
-
- EXECUTE_IF_SET_IN_BITMAP (set, 0, i, bi)
- mark_sym_for_renaming (referenced_var (i));
+ fn->gimple_df->ssa_renaming_needed = 1;
+ fn->gimple_df->rename_vops = 1;
}
@@ -3021,21 +2899,7 @@ need_ssa_update_p (struct function *fn)
{
gcc_assert (fn != NULL);
return (update_ssa_initialized_fn == fn
- || (fn->gimple_df
- && !bitmap_empty_p (SYMS_TO_RENAME (fn))));
-}
-
-/* Return true if SSA name mappings have been registered for SSA updating. */
-
-bool
-name_mappings_registered_p (void)
-{
- if (!update_ssa_initialized_fn)
- return false;
-
- gcc_assert (update_ssa_initialized_fn == cfun);
-
- return repl_tbl && htab_elements (repl_tbl) > 0;
+ || (fn->gimple_df && fn->gimple_df->ssa_renaming_needed));
}
/* Return true if name N has been registered in the replacement table. */
@@ -3102,7 +2966,7 @@ insert_updated_phi_nodes_for (tree var, bitmap_head *dfs, bitmap blocks,
if (TREE_CODE (var) == SSA_NAME)
gcc_checking_assert (is_old_name (var));
else
- gcc_checking_assert (symbol_marked_for_renaming (var));
+ gcc_checking_assert (marked_for_renaming (var));
/* Get all the definition sites for VAR. */
db = find_def_blocks_for (var);
@@ -3133,7 +2997,7 @@ insert_updated_phi_nodes_for (tree var, bitmap_head *dfs, bitmap blocks,
else
{
/* Otherwise, do not prune the IDF for VAR. */
- gcc_assert (update_flags == TODO_update_ssa_full_phi);
+ gcc_checking_assert (update_flags == TODO_update_ssa_full_phi);
bitmap_copy (pruned_idf, idf);
}
}
@@ -3174,73 +3038,6 @@ insert_updated_phi_nodes_for (tree var, bitmap_head *dfs, bitmap blocks,
}
-/* Heuristic to determine whether SSA name mappings for virtual names
- should be discarded and their symbols rewritten from scratch. When
- there is a large number of mappings for virtual names, the
- insertion of PHI nodes for the old names in the mappings takes
- considerable more time than if we inserted PHI nodes for the
- symbols instead.
-
- Currently the heuristic takes these stats into account:
-
- - Number of mappings for virtual SSA names.
- - Number of distinct virtual symbols involved in those mappings.
-
- If the number of virtual mappings is much larger than the number of
- virtual symbols, then it will be faster to compute PHI insertion
- spots for the symbols. Even if this involves traversing the whole
- CFG, which is what happens when symbols are renamed from scratch. */
-
-static bool
-switch_virtuals_to_full_rewrite_p (void)
-{
- if (update_ssa_stats.num_virtual_mappings < (unsigned) MIN_VIRTUAL_MAPPINGS)
- return false;
-
- if (update_ssa_stats.num_virtual_mappings
- > (unsigned) VIRTUAL_MAPPINGS_TO_SYMS_RATIO
- * update_ssa_stats.num_virtual_symbols)
- return true;
-
- return false;
-}
-
-
-/* Remove every virtual mapping and mark all the affected virtual
- symbols for renaming. */
-
-static void
-switch_virtuals_to_full_rewrite (void)
-{
- unsigned i = 0;
- sbitmap_iterator sbi;
-
- if (dump_file)
- {
- fprintf (dump_file, "\nEnabled virtual name mapping heuristic.\n");
- fprintf (dump_file, "\tNumber of virtual mappings: %7u\n",
- update_ssa_stats.num_virtual_mappings);
- fprintf (dump_file, "\tNumber of unique virtual symbols: %7u\n",
- update_ssa_stats.num_virtual_symbols);
- fprintf (dump_file, "Updating FUD-chains from top of CFG will be "
- "faster than processing\nthe name mappings.\n\n");
- }
-
- /* Remove all virtual names from NEW_SSA_NAMES and OLD_SSA_NAMES.
- Note that it is not really necessary to remove the mappings from
- REPL_TBL, that would only waste time. */
- EXECUTE_IF_SET_IN_SBITMAP (new_ssa_names, 0, i, sbi)
- if (!is_gimple_reg (ssa_name (i)))
- RESET_BIT (new_ssa_names, i);
-
- EXECUTE_IF_SET_IN_SBITMAP (old_ssa_names, 0, i, sbi)
- if (!is_gimple_reg (ssa_name (i)))
- RESET_BIT (old_ssa_names, i);
-
- mark_set_for_renaming (update_ssa_stats.virtual_symbols);
-}
-
-
/* Given a set of newly created SSA names (NEW_SSA_NAMES) and a set of
existing SSA names (OLD_SSA_NAMES), update the SSA form so that:
@@ -3252,13 +3049,13 @@ switch_virtuals_to_full_rewrite (void)
frontier of the blocks where each of NEW_SSA_NAMES are defined.
The mapping between OLD_SSA_NAMES and NEW_SSA_NAMES is setup by
- calling register_new_name_mapping for every pair of names that the
+ calling create_new_def_for to create new defs for names that the
caller wants to replace.
- The caller identifies the new names that have been inserted and the
- names that need to be replaced by calling register_new_name_mapping
- for every pair <NEW, OLD>. Note that the function assumes that the
- new names have already been inserted in the IL.
+ The caller cretaes the new names to be inserted and the names that need
+ to be replaced by calling create_new_def_for for each old definition
+ to be replaced. Note that the function assumes that the
+ new defining statement has already been inserted in the IL.
For instance, given the following code:
@@ -3313,6 +3110,13 @@ update_ssa (unsigned update_flags)
unsigned i = 0;
bool insert_phi_p;
sbitmap_iterator sbi;
+ tree sym;
+
+ /* Only one update flag should be set. */
+ gcc_assert (update_flags == TODO_update_ssa
+ || update_flags == TODO_update_ssa_no_phi
+ || update_flags == TODO_update_ssa_full_phi
+ || update_flags == TODO_update_ssa_only_virtuals);
if (!need_ssa_update_p (cfun))
return;
@@ -3324,56 +3128,27 @@ update_ssa (unsigned update_flags)
if (!update_ssa_initialized_fn)
init_update_ssa (cfun);
+ else if (update_flags == TODO_update_ssa_only_virtuals)
+ {
+ /* If we only need to update virtuals, remove all the mappings for
+ real names before proceeding. The caller is responsible for
+ having dealt with the name mappings before calling update_ssa. */
+ sbitmap_zero (old_ssa_names);
+ sbitmap_zero (new_ssa_names);
+ }
+
gcc_assert (update_ssa_initialized_fn == cfun);
blocks_with_phis_to_rewrite = BITMAP_ALLOC (NULL);
if (!phis_to_rewrite)
- phis_to_rewrite = VEC_alloc (gimple_vec, heap, last_basic_block);
+ phis_to_rewrite = VEC_alloc (gimple_vec, heap, last_basic_block + 1);
blocks_to_update = BITMAP_ALLOC (NULL);
/* Ensure that the dominance information is up-to-date. */
calculate_dominance_info (CDI_DOMINATORS);
- /* Only one update flag should be set. */
- gcc_assert (update_flags == TODO_update_ssa
- || update_flags == TODO_update_ssa_no_phi
- || update_flags == TODO_update_ssa_full_phi
- || update_flags == TODO_update_ssa_only_virtuals);
-
- /* If we only need to update virtuals, remove all the mappings for
- real names before proceeding. The caller is responsible for
- having dealt with the name mappings before calling update_ssa. */
- if (update_flags == TODO_update_ssa_only_virtuals)
- {
- sbitmap_zero (old_ssa_names);
- sbitmap_zero (new_ssa_names);
- htab_empty (repl_tbl);
- }
-
insert_phi_p = (update_flags != TODO_update_ssa_no_phi);
- if (insert_phi_p)
- {
- /* If the caller requested PHI nodes to be added, initialize
- live-in information data structures (DEF_BLOCKS). */
-
- /* For each SSA name N, the DEF_BLOCKS table describes where the
- name is defined, which blocks have PHI nodes for N, and which
- blocks have uses of N (i.e., N is live-on-entry in those
- blocks). */
- def_blocks = htab_create (num_ssa_names, def_blocks_hash,
- def_blocks_eq, def_blocks_free);
- }
- else
- {
- def_blocks = NULL;
- }
-
- /* Heuristic to avoid massive slow downs when the replacement
- mappings include lots of virtual names. */
- if (insert_phi_p && switch_virtuals_to_full_rewrite_p ())
- switch_virtuals_to_full_rewrite ();
-
/* If there are names defined in the replacement table, prepare
definition and use sites for all the names in NEW_SSA_NAMES and
OLD_SSA_NAMES. */
@@ -3385,13 +3160,17 @@ update_ssa (unsigned update_flags)
removal, and there are no symbols to rename, then there's
nothing else to do. */
if (sbitmap_first_set_bit (new_ssa_names) < 0
- && bitmap_empty_p (SYMS_TO_RENAME (cfun)))
+ && !cfun->gimple_df->ssa_renaming_needed)
goto done;
}
/* Next, determine the block at which to start the renaming process. */
- if (!bitmap_empty_p (SYMS_TO_RENAME (cfun)))
+ if (cfun->gimple_df->ssa_renaming_needed)
{
+ /* If we rename bare symbols initialize the mapping to
+ auxiliar info we need to keep track of. */
+ var_infos = htab_create (47, var_info_hash, var_info_eq, free);
+
/* If we have to rename some symbols from scratch, we need to
start the process at the root of the CFG. FIXME, it should
be possible to determine the nearest block that had a
@@ -3400,10 +3179,34 @@ update_ssa (unsigned update_flags)
start_bb = ENTRY_BLOCK_PTR;
/* Traverse the CFG looking for existing definitions and uses of
- symbols in SYMS_TO_RENAME. Mark interesting blocks and
+ symbols in SSA operands. Mark interesting blocks and
statements and set local live-in information for the PHI
placement heuristics. */
prepare_block_for_update (start_bb, insert_phi_p);
+
+#ifdef ENABLE_CHECKING
+ for (i = 1; i < num_ssa_names; ++i)
+ {
+ tree name = ssa_name (i);
+ if (!name
+ || virtual_operand_p (name))
+ continue;
+
+ /* For all but virtual operands, which do not have SSA names
+ with overlapping life ranges, ensure that symbols marked
+ for renaming do not have existing SSA names associated with
+ them as we do not re-write them out-of-SSA before going
+ into SSA for the remaining symbol uses. */
+ if (marked_for_renaming (SSA_NAME_VAR (name)))
+ {
+ fprintf (stderr, "Existing SSA name for symbol marked for "
+ "renaming: ");
+ print_generic_expr (stderr, name, TDF_SLIM);
+ fprintf (stderr, "\n");
+ internal_error ("SSA corruption");
+ }
+ }
+#endif
}
else
{
@@ -3415,7 +3218,7 @@ update_ssa (unsigned update_flags)
/* If requested, insert PHI nodes at the iterated dominance frontier
of every block, creating new definitions for names in OLD_SSA_NAMES
- and for symbols in SYMS_TO_RENAME. */
+ and for symbols found. */
if (insert_phi_p)
{
bitmap_head *dfs;
@@ -3436,7 +3239,7 @@ update_ssa (unsigned update_flags)
will grow while we are traversing it (but it will not
gain any new members). Copy OLD_SSA_NAMES to a temporary
for traversal. */
- sbitmap tmp = sbitmap_alloc (old_ssa_names->n_bits);
+ sbitmap tmp = sbitmap_alloc (SBITMAP_SIZE (old_ssa_names));
sbitmap_copy (tmp, old_ssa_names);
EXECUTE_IF_SET_IN_SBITMAP (tmp, 0, i, sbi)
insert_updated_phi_nodes_for (ssa_name (i), dfs, blocks_to_update,
@@ -3444,8 +3247,8 @@ update_ssa (unsigned update_flags)
sbitmap_free (tmp);
}
- EXECUTE_IF_SET_IN_BITMAP (SYMS_TO_RENAME (cfun), 0, i, bi)
- insert_updated_phi_nodes_for (referenced_var (i), dfs, blocks_to_update,
+ FOR_EACH_VEC_ELT (tree, symbols_to_rename, i, sym)
+ insert_updated_phi_nodes_for (sym, dfs, blocks_to_update,
update_flags);
FOR_EACH_BB (bb)
@@ -3463,10 +3266,10 @@ update_ssa (unsigned update_flags)
/* Reset the current definition for name and symbol before renaming
the sub-graph. */
EXECUTE_IF_SET_IN_SBITMAP (old_ssa_names, 0, i, sbi)
- set_current_def (ssa_name (i), NULL_TREE);
+ get_ssa_name_ann (ssa_name (i))->info.current_def = NULL_TREE;
- EXECUTE_IF_SET_IN_BITMAP (SYMS_TO_RENAME (cfun), 0, i, bi)
- set_current_def (referenced_var (i), NULL_TREE);
+ FOR_EACH_VEC_ELT (tree, symbols_to_rename, i, sym)
+ get_var_info (sym)->info.current_def = NULL_TREE;
/* Now start the renaming process at START_BB. */
interesting_blocks = sbitmap_alloc (last_basic_block);
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index 58ed12b1e69..f340eab2a0f 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -288,7 +288,7 @@ generate_loops_for_partition (struct loop *loop, partition_t partition,
if (!bitmap_bit_p (partition->stmts, x++))
{
gimple phi = gsi_stmt (bsi);
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
mark_virtual_phi_result_for_renaming (phi);
remove_phi_node (&bsi, true);
}
@@ -391,8 +391,7 @@ generate_memset_builtin (struct loop *loop, partition_t partition)
else if (!useless_type_conversion_p (integer_type_node, TREE_TYPE (val)))
{
gimple cstmt;
- tree tem = create_tmp_reg (integer_type_node, NULL);
- tem = make_ssa_name (tem, NULL);
+ tree tem = make_ssa_name (integer_type_node, NULL);
cstmt = gimple_build_assign_with_ops (NOP_EXPR, tem, val, NULL_TREE);
gsi_insert_after (&gsi, cstmt, GSI_CONTINUE_LINKING);
val = tem;
@@ -493,7 +492,7 @@ destroy_loop (struct loop *loop)
for (gsi = gsi_start_phis (bbs[i]); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
mark_virtual_phi_result_for_renaming (phi);
}
for (gsi = gsi_start_bb (bbs[i]); !gsi_end_p (gsi); gsi_next (&gsi))
@@ -1289,16 +1288,25 @@ ldist_gen (struct loop *loop, struct graph *rdg,
nbp = 0;
goto ldist_done;
}
- for (i = 0; VEC_iterate (partition_t, partitions, i, into); ++i)
- if (!partition_builtin_p (into))
- break;
- for (++i; VEC_iterate (partition_t, partitions, i, partition); ++i)
- if (!partition_builtin_p (partition))
- {
- bitmap_ior_into (into->stmts, partition->stmts);
- VEC_ordered_remove (partition_t, partitions, i);
- i--;
- }
+ /* Only fuse adjacent non-builtin partitions, see PR53616.
+ ??? Use dependence information to improve partition ordering. */
+ i = 0;
+ do
+ {
+ for (; VEC_iterate (partition_t, partitions, i, into); ++i)
+ if (!partition_builtin_p (into))
+ break;
+ for (++i; VEC_iterate (partition_t, partitions, i, partition); ++i)
+ if (!partition_builtin_p (partition))
+ {
+ bitmap_ior_into (into->stmts, partition->stmts);
+ VEC_ordered_remove (partition_t, partitions, i);
+ i--;
+ }
+ else
+ break;
+ }
+ while ((unsigned) i < VEC_length (partition_t, partitions));
}
else
{
@@ -1506,7 +1514,7 @@ tree_loop_distribution (void)
if (changed)
{
- mark_sym_for_renaming (gimple_vop (cfun));
+ mark_virtual_operands_for_renaming (cfun);
rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
}
diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c
index dfb0ae1ee7d..775f8b9aa3d 100644
--- a/gcc/tree-mudflap.c
+++ b/gcc/tree-mudflap.c
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-iterator.h"
#include "tree-flow.h"
#include "tree-mudflap.h"
-#include "tree-dump.h"
#include "tree-pass.h"
#include "hashtab.h"
#include "diagnostic.h"
@@ -472,11 +471,11 @@ mf_decl_cache_locals (void)
/* Build the cache vars. */
mf_cache_shift_decl_l
- = mf_mark (make_rename_temp (TREE_TYPE (mf_cache_shift_decl),
+ = mf_mark (create_tmp_reg (TREE_TYPE (mf_cache_shift_decl),
"__mf_lookup_shift_l"));
mf_cache_mask_decl_l
- = mf_mark (make_rename_temp (TREE_TYPE (mf_cache_mask_decl),
+ = mf_mark (create_tmp_reg (TREE_TYPE (mf_cache_mask_decl),
"__mf_lookup_mask_l"));
/* Build initialization nodes for the cache vars. We just load the
@@ -563,9 +562,9 @@ mf_build_check_statement_for (tree base, tree limit,
add_bb_to_loop (then_bb, cond_bb->loop_father);
/* Build our local variables. */
- mf_elem = make_rename_temp (mf_cache_structptr_type, "__mf_elem");
- mf_base = make_rename_temp (mf_uintptr_type, "__mf_base");
- mf_limit = make_rename_temp (mf_uintptr_type, "__mf_limit");
+ mf_elem = create_tmp_reg (mf_cache_structptr_type, "__mf_elem");
+ mf_base = create_tmp_reg (mf_uintptr_type, "__mf_base");
+ mf_limit = create_tmp_reg (mf_uintptr_type, "__mf_limit");
/* Build: __mf_base = (uintptr_t) <base address expression>. */
seq = NULL;
@@ -646,7 +645,7 @@ mf_build_check_statement_for (tree base, tree limit,
t = build2 (TRUTH_OR_EXPR, boolean_type_node, t, u);
t = force_gimple_operand (t, &stmts, false, NULL_TREE);
gimple_seq_add_seq (&seq, stmts);
- cond = make_rename_temp (boolean_type_node, "__mf_unlikely_cond");
+ cond = create_tmp_reg (boolean_type_node, "__mf_unlikely_cond");
g = gimple_build_assign (cond, t);
gimple_set_location (g, location);
gimple_seq_add_stmt (&seq, g);
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c
index b5d37e98e35..0b99803615d 100644
--- a/gcc/tree-nested.c
+++ b/gcc/tree-nested.c
@@ -1013,13 +1013,6 @@ convert_nonlocal_reference_op (tree *tp, int *walk_subtrees, void *data)
walk_tree (&TREE_OPERAND (t, 3), convert_nonlocal_reference_op,
wi, NULL);
}
- else if (TREE_CODE (t) == BIT_FIELD_REF)
- {
- walk_tree (&TREE_OPERAND (t, 1), convert_nonlocal_reference_op,
- wi, NULL);
- walk_tree (&TREE_OPERAND (t, 2), convert_nonlocal_reference_op,
- wi, NULL);
- }
}
wi->val_only = false;
walk_tree (tp, convert_nonlocal_reference_op, wi, NULL);
@@ -1491,13 +1484,6 @@ convert_local_reference_op (tree *tp, int *walk_subtrees, void *data)
walk_tree (&TREE_OPERAND (t, 3), convert_local_reference_op, wi,
NULL);
}
- else if (TREE_CODE (t) == BIT_FIELD_REF)
- {
- walk_tree (&TREE_OPERAND (t, 1), convert_local_reference_op, wi,
- NULL);
- walk_tree (&TREE_OPERAND (t, 2), convert_local_reference_op, wi,
- NULL);
- }
}
wi->val_only = false;
walk_tree (tp, convert_local_reference_op, wi, NULL);
@@ -1741,6 +1727,20 @@ convert_local_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
*handled_ops_p = false;
return NULL_TREE;
+ case GIMPLE_ASSIGN:
+ if (gimple_clobber_p (stmt))
+ {
+ tree lhs = gimple_assign_lhs (stmt);
+ if (!use_pointer_in_frame (lhs)
+ && lookup_field_for_decl (info, lhs, NO_INSERT))
+ {
+ gsi_replace (gsi, gimple_build_nop (), true);
+ break;
+ }
+ }
+ *handled_ops_p = false;
+ return NULL_TREE;
+
default:
/* For every other statement that we are not interested in
handling here, let the walker traverse the operands. */
diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c
index 9176e29c3ad..f1c52d1a827 100644
--- a/gcc/tree-nrv.c
+++ b/gcc/tree-nrv.c
@@ -27,8 +27,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "tree-pretty-print.h"
#include "tree-flow.h"
-#include "timevar.h"
-#include "tree-dump.h"
#include "tree-pass.h"
#include "langhooks.h"
#include "flags.h" /* For "optimize" in gate_pass_return_slot.
@@ -263,8 +261,6 @@ tree_nrv (void)
SET_DECL_VALUE_EXPR (found, result);
DECL_HAS_VALUE_EXPR_P (found) = 1;
- /* FOUND is no longer used. Ensure it gets removed. */
- clear_is_used (found);
return 0;
}
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c
index d35922c38ff..fcf9316a395 100644
--- a/gcc/tree-object-size.c
+++ b/gcc/tree-object-size.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "diagnostic-core.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
#include "tree-pass.h"
@@ -974,14 +973,12 @@ collect_object_sizes_for (struct object_size_info *osi, tree var)
break;
case GIMPLE_NOP:
- {
- tree decl = SSA_NAME_VAR (var);
-
- if (TREE_CODE (decl) != PARM_DECL && DECL_INITIAL (decl))
- expr_object_size (osi, var, DECL_INITIAL (decl));
- else
- expr_object_size (osi, var, decl);
- }
+ if (SSA_NAME_VAR (var)
+ && TREE_CODE (SSA_NAME_VAR (var)) == PARM_DECL)
+ expr_object_size (osi, var, SSA_NAME_VAR (var));
+ else
+ /* Uninitialized SSA names point nowhere. */
+ object_sizes[object_size_type][varno] = unknown[object_size_type];
break;
case GIMPLE_PHI:
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index b48c5c50e48..d13c04f783c 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -28,8 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "flags.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "timevar.h"
#include "function.h"
#include "langhooks.h"
#include "diagnostic-core.h"
diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c
index f52b2603012..5c2e93b9317 100644
--- a/gcc/tree-outof-ssa.c
+++ b/gcc/tree-outof-ssa.c
@@ -26,13 +26,10 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "ggc.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "bitmap.h"
#include "tree-flow.h"
-#include "timevar.h"
-#include "tree-dump.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "diagnostic-core.h"
#include "ssaexpand.h"
@@ -765,7 +762,7 @@ eliminate_useless_phis (void)
{
gimple phi = gsi_stmt (gsi);
result = gimple_phi_result (phi);
- if (!is_gimple_reg (SSA_NAME_VAR (result)))
+ if (virtual_operand_p (result))
{
#ifdef ENABLE_CHECKING
size_t i;
@@ -775,7 +772,7 @@ eliminate_useless_phis (void)
{
tree arg = PHI_ARG_DEF (phi, i);
if (TREE_CODE (arg) == SSA_NAME
- && is_gimple_reg (SSA_NAME_VAR (arg)))
+ && !virtual_operand_p (arg))
{
fprintf (stderr, "Argument of PHI is not virtual (");
print_generic_expr (stderr, arg, TDF_SLIM);
@@ -1033,13 +1030,11 @@ insert_backedge_copies (void)
{
gimple phi = gsi_stmt (gsi);
tree result = gimple_phi_result (phi);
- tree result_var;
size_t i;
- if (!is_gimple_reg (result))
+ if (virtual_operand_p (result))
continue;
- result_var = SSA_NAME_VAR (result);
for (i = 0; i < gimple_phi_num_args (phi); i++)
{
tree arg = gimple_phi_arg_def (phi, i);
@@ -1051,7 +1046,7 @@ insert_backedge_copies (void)
needed. */
if ((e->flags & EDGE_DFS_BACK)
&& (TREE_CODE (arg) != SSA_NAME
- || SSA_NAME_VAR (arg) != result_var
+ || SSA_NAME_VAR (arg) != SSA_NAME_VAR (result)
|| trivially_conflicts_p (bb, result, arg)))
{
tree name;
@@ -1081,10 +1076,9 @@ insert_backedge_copies (void)
/* Create a new instance of the underlying variable of the
PHI result. */
- stmt = gimple_build_assign (result_var,
+ name = copy_ssa_name (result, NULL);
+ stmt = gimple_build_assign (name,
gimple_phi_arg_def (phi, i));
- name = make_ssa_name (result_var, stmt);
- gimple_assign_set_lhs (stmt, name);
/* copy location if present. */
if (gimple_phi_arg_has_location (phi, i))
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 86036b42639..76bb265954e 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -452,7 +452,7 @@ take_address_of (tree obj, tree type, edge entry, htab_t decl_address,
int uid;
void **dslot;
struct int_tree_map ielt, *nielt;
- tree *var_p, name, bvar, addr;
+ tree *var_p, name, addr;
gimple stmt;
gimple_seq stmts;
@@ -479,13 +479,10 @@ take_address_of (tree obj, tree type, edge entry, htab_t decl_address,
if (gsi == NULL)
return NULL;
addr = TREE_OPERAND (*var_p, 0);
- bvar = create_tmp_var (TREE_TYPE (addr),
- get_name (TREE_OPERAND
- (TREE_OPERAND (*var_p, 0), 0)));
- add_referenced_var (bvar);
- stmt = gimple_build_assign (bvar, addr);
- name = make_ssa_name (bvar, stmt);
- gimple_assign_set_lhs (stmt, name);
+ name = make_temp_ssa_name (TREE_TYPE (addr), NULL,
+ get_name (TREE_OPERAND
+ (TREE_OPERAND (*var_p, 0), 0)));
+ stmt = gimple_build_assign (name, addr);
gsi_insert_on_edge_immediate (entry, stmt);
nielt = XNEW (struct int_tree_map);
@@ -540,7 +537,6 @@ initialize_reductions (void **slot, void *data)
/* Create a new variable to initialize the reduction. */
type = TREE_TYPE (PHI_RESULT (reduc->reduc_phi));
bvar = create_tmp_var (type, "reduction");
- add_referenced_var (bvar);
c = build_omp_clause (gimple_location (reduc->reduc_stmt),
OMP_CLAUSE_REDUCTION);
@@ -797,7 +793,25 @@ separate_decls_in_region_name (tree name,
if (slot && *slot)
return ((struct name_to_copy_elt *) *slot)->new_name;
+ if (copy_name_p)
+ {
+ copy = duplicate_ssa_name (name, NULL);
+ nelt = XNEW (struct name_to_copy_elt);
+ nelt->version = idx;
+ nelt->new_name = copy;
+ nelt->field = NULL_TREE;
+ *slot = nelt;
+ }
+ else
+ {
+ gcc_assert (!slot);
+ copy = name;
+ }
+
var = SSA_NAME_VAR (name);
+ if (!var)
+ return copy;
+
uid = DECL_UID (var);
ielt.uid = uid;
dslot = htab_find_slot_with_hash (decl_copies, &ielt, uid, INSERT);
@@ -805,7 +819,6 @@ separate_decls_in_region_name (tree name,
{
var_copy = create_tmp_var (TREE_TYPE (var), get_name (var));
DECL_GIMPLE_REG_P (var_copy) = DECL_GIMPLE_REG_P (var);
- add_referenced_var (var_copy);
nielt = XNEW (struct int_tree_map);
nielt->uid = uid;
nielt->to = var_copy;
@@ -825,22 +838,7 @@ separate_decls_in_region_name (tree name,
else
var_copy = ((struct int_tree_map *) *dslot)->to;
- if (copy_name_p)
- {
- copy = duplicate_ssa_name (name, NULL);
- nelt = XNEW (struct name_to_copy_elt);
- nelt->version = idx;
- nelt->new_name = copy;
- nelt->field = NULL_TREE;
- *slot = nelt;
- }
- else
- {
- gcc_assert (!slot);
- copy = name;
- }
-
- SSA_NAME_VAR (copy) = var_copy;
+ replace_ssa_name_symbol (copy, var_copy);
return copy;
}
@@ -861,8 +859,6 @@ separate_decls_in_region_stmt (edge entry, edge exit, gimple stmt,
tree name, copy;
bool copy_name_p;
- mark_virtual_ops_for_renaming (stmt);
-
FOR_EACH_PHI_OR_STMT_DEF (def, stmt, oi, SSA_OP_DEF)
{
name = DEF_FROM_PTR (def);
@@ -971,9 +967,9 @@ add_field_for_name (void **slot, void *data)
struct name_to_copy_elt *const elt = (struct name_to_copy_elt *) *slot;
tree type = (tree) data;
tree name = ssa_name (elt->version);
- tree var = SSA_NAME_VAR (name);
- tree field = build_decl (DECL_SOURCE_LOCATION (var),
- FIELD_DECL, DECL_NAME (var), TREE_TYPE (var));
+ tree field = build_decl (UNKNOWN_LOCATION,
+ FIELD_DECL, SSA_NAME_IDENTIFIER (name),
+ TREE_TYPE (name));
insert_field_into_struct (type, field);
elt->field = field;
@@ -1013,12 +1009,9 @@ create_phi_for_local_result (void **slot, void *data)
e = EDGE_PRED (store_bb, 1);
else
e = EDGE_PRED (store_bb, 0);
- local_res
- = make_ssa_name (SSA_NAME_VAR (gimple_assign_lhs (reduc->reduc_stmt)),
- NULL);
+ local_res = copy_ssa_name (gimple_assign_lhs (reduc->reduc_stmt), NULL);
locus = gimple_location (reduc->reduc_stmt);
new_phi = create_phi_node (local_res, store_bb);
- SSA_NAME_DEF_STMT (local_res) = new_phi;
add_phi_arg (new_phi, reduc->init, e, locus);
add_phi_arg (new_phi, gimple_assign_lhs (reduc->reduc_stmt),
FALLTHRU_EDGE (loop->latch), locus);
@@ -1068,7 +1061,6 @@ create_call_for_reduction_1 (void **slot, void *data)
new_bb = e->dest;
tmp_load = create_tmp_var (TREE_TYPE (TREE_TYPE (addr)), NULL);
- add_referenced_var (tmp_load);
tmp_load = make_ssa_name (tmp_load, NULL);
load = gimple_build_omp_atomic_load (tmp_load, addr);
SSA_NAME_DEF_STMT (tmp_load) = load;
@@ -1182,7 +1174,6 @@ create_stores_for_reduction (void **slot, void *data)
gsi = gsi_last_bb (clsn_data->store_bb);
t = build3 (COMPONENT_REF, type, clsn_data->store, red->field, NULL_TREE);
stmt = gimple_build_assign (t, red->initial_value);
- mark_virtual_ops_for_renaming (stmt);
gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
return 1;
@@ -1206,7 +1197,6 @@ create_loads_and_stores_for_name (void **slot, void *data)
gsi = gsi_last_bb (clsn_data->store_bb);
t = build3 (COMPONENT_REF, type, clsn_data->store, elt->field, NULL_TREE);
stmt = gimple_build_assign (t, ssa_name (elt->version));
- mark_virtual_ops_for_renaming (stmt);
gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
gsi = gsi_last_bb (clsn_data->load_bb);
@@ -1356,9 +1346,7 @@ separate_decls_in_region (edge entry, edge exit, htab_t reduction_list,
/* Create the loads and stores. */
*arg_struct = create_tmp_var (type, ".paral_data_store");
- add_referenced_var (*arg_struct);
nvar = create_tmp_var (build_pointer_type (type), ".paral_data_load");
- add_referenced_var (nvar);
*new_arg_struct = make_ssa_name (nvar, NULL);
ld_st_data->store = *arg_struct;
@@ -1496,10 +1484,9 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
{
phi = gsi_stmt (gsi);
res = PHI_RESULT (phi);
- t = make_ssa_name (SSA_NAME_VAR (res), phi);
+ t = copy_ssa_name (res, phi);
SET_PHI_RESULT (phi, t);
nphi = create_phi_node (res, orig_header);
- SSA_NAME_DEF_STMT (res) = nphi;
add_phi_arg (nphi, t, hpred, UNKNOWN_LOCATION);
if (res == control)
@@ -1530,7 +1517,7 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
{
phi = gsi_stmt (gsi);
res = PHI_RESULT (phi);
- if (!is_gimple_reg (res))
+ if (virtual_operand_p (res))
{
gsi_next (&gsi);
continue;
@@ -1635,7 +1622,7 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
cvar_base = SSA_NAME_VAR (cvar);
phi = SSA_NAME_DEF_STMT (cvar);
cvar_init = PHI_ARG_DEF_FROM_EDGE (phi, loop_preheader_edge (loop));
- initvar = make_ssa_name (cvar_base, NULL);
+ initvar = copy_ssa_name (cvar, NULL);
SET_USE (PHI_ARG_DEF_PTR_FROM_EDGE (phi, loop_preheader_edge (loop)),
initvar);
cvar_next = PHI_ARG_DEF_FROM_EDGE (phi, loop_latch_edge (loop));
@@ -1966,7 +1953,7 @@ gather_scalar_reductions (loop_p loop, htab_t reduction_list)
tree res = PHI_RESULT (phi);
bool double_reduc;
- if (!is_gimple_reg (res))
+ if (virtual_operand_p (res))
continue;
if (!simple_iv (loop, loop, res, &iv, true)
@@ -2032,7 +2019,7 @@ try_create_reduction_list (loop_p loop, htab_t reduction_list)
gimple reduc_phi;
tree val = PHI_ARG_DEF_FROM_EDGE (phi, exit);
- if (is_gimple_reg (val))
+ if (!virtual_operand_p (val))
{
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -2087,7 +2074,7 @@ try_create_reduction_list (loop_p loop, htab_t reduction_list)
tree def = PHI_RESULT (phi);
affine_iv iv;
- if (is_gimple_reg (def) && !simple_iv (loop, loop, def, &iv, true))
+ if (!virtual_operand_p (def) && !simple_iv (loop, loop, def, &iv, true))
{
struct reduction_info *red;
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 1c771d27e84..db5bf825732 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -24,86 +24,7 @@ along with GCC; see the file COPYING3. If not see
#define GCC_TREE_PASS_H 1
#include "timevar.h"
-
-/* Different tree dump places. When you add new tree dump places,
- extend the DUMP_FILES array in tree-dump.c. */
-enum tree_dump_index
-{
- TDI_none, /* No dump */
- TDI_cgraph, /* dump function call graph. */
- TDI_tu, /* dump the whole translation unit. */
- TDI_class, /* dump class hierarchy. */
- TDI_original, /* dump each function before optimizing it */
- TDI_generic, /* dump each function after genericizing it */
- TDI_nested, /* dump each function after unnesting it */
- TDI_vcg, /* create a VCG graph file for each
- function's flowgraph. */
- TDI_ada, /* dump declarations in Ada syntax. */
- TDI_tree_all, /* enable all the GENERIC/GIMPLE dumps. */
- TDI_rtl_all, /* enable all the RTL dumps. */
- TDI_ipa_all, /* enable all the IPA dumps. */
-
- TDI_end
-};
-
-/* Bit masks to control dumping. Not all values are applicable to
- all dumps. Add new ones at the end. When you define new
- values, extend the DUMP_OPTIONS array in tree-dump.c */
-#define TDF_ADDRESS (1 << 0) /* dump node addresses */
-#define TDF_SLIM (1 << 1) /* don't go wild following links */
-#define TDF_RAW (1 << 2) /* don't unparse the function */
-#define TDF_DETAILS (1 << 3) /* show more detailed info about
- each pass */
-#define TDF_STATS (1 << 4) /* dump various statistics about
- each pass */
-#define TDF_BLOCKS (1 << 5) /* display basic block boundaries */
-#define TDF_VOPS (1 << 6) /* display virtual operands */
-#define TDF_LINENO (1 << 7) /* display statement line numbers */
-#define TDF_UID (1 << 8) /* display decl UIDs */
-
-#define TDF_TREE (1 << 9) /* is a tree dump */
-#define TDF_RTL (1 << 10) /* is a RTL dump */
-#define TDF_IPA (1 << 11) /* is an IPA dump */
-#define TDF_STMTADDR (1 << 12) /* Address of stmt. */
-
-#define TDF_GRAPH (1 << 13) /* a graph dump is being emitted */
-#define TDF_MEMSYMS (1 << 14) /* display memory symbols in expr.
- Implies TDF_VOPS. */
-
-#define TDF_DIAGNOSTIC (1 << 15) /* A dump to be put in a diagnostic
- message. */
-#define TDF_VERBOSE (1 << 16) /* A dump that uses the full tree
- dumper to print stmts. */
-#define TDF_RHS_ONLY (1 << 17) /* a flag to only print the RHS of
- a gimple stmt. */
-#define TDF_ASMNAME (1 << 18) /* display asm names of decls */
-#define TDF_EH (1 << 19) /* display EH region number
- holding this gimple statement. */
-#define TDF_NOUID (1 << 20) /* omit UIDs from dumps. */
-#define TDF_ALIAS (1 << 21) /* display alias information */
-#define TDF_ENUMERATE_LOCALS (1 << 22) /* Enumerate locals by uid. */
-#define TDF_CSELIB (1 << 23) /* Dump cselib details. */
-#define TDF_SCEV (1 << 24) /* Dump SCEV details. */
-
-
-/* In tree-dump.c */
-
-extern char *get_dump_file_name (int);
-extern int dump_enabled_p (int);
-extern int dump_initialized_p (int);
-extern FILE *dump_begin (int, int *);
-extern void dump_end (int, FILE *);
-extern void dump_node (const_tree, int, FILE *);
-extern int dump_switch_p (const char *);
-extern const char *dump_flag_name (int);
-
-/* Global variables used to communicate with passes. */
-extern FILE *dump_file;
-extern int dump_flags;
-extern const char *dump_file_name;
-
-/* Return the dump_file_info for the given phase. */
-extern struct dump_file_info *get_dump_file_info (int);
+#include "dumpfile.h"
/* Optimization pass type. */
enum opt_pass_type
@@ -185,15 +106,13 @@ struct ipa_opt_pass_d
void (*generate_summary) (void);
/* This hook is used to serialize IPA summaries on disk. */
- void (*write_summary) (struct cgraph_node_set_def *,
- struct varpool_node_set_def *);
+ void (*write_summary) (void);
/* This hook is used to deserialize IPA summaries from disk. */
void (*read_summary) (void);
/* This hook is used to serialize IPA optimization summaries on disk. */
- void (*write_optimization_summary) (struct cgraph_node_set_def *,
- struct varpool_node_set_def *);
+ void (*write_optimization_summary) (void);
/* This hook is used to deserialize IPA summaries from disk. */
void (*read_optimization_summary) (void);
@@ -216,23 +135,11 @@ struct simple_ipa_opt_pass
struct opt_pass pass;
};
-/* Define a tree dump switch. */
-struct dump_file_info
-{
- const char *suffix; /* suffix to give output file. */
- const char *swtch; /* command line switch */
- const char *glob; /* command line glob */
- int flags; /* user flags */
- int state; /* state of play */
- int num; /* dump file number */
-};
-
/* Pass properties. */
#define PROP_gimple_any (1 << 0) /* entire gimple grammar */
#define PROP_gimple_lcf (1 << 1) /* lowered control flow */
#define PROP_gimple_leh (1 << 2) /* lowered eh */
#define PROP_cfg (1 << 3)
-#define PROP_referenced_vars (1 << 4)
#define PROP_ssa (1 << 5)
#define PROP_no_crit_edges (1 << 6)
#define PROP_rtl (1 << 7)
@@ -357,7 +264,6 @@ extern struct gimple_opt_pass pass_lower_eh_dispatch;
extern struct gimple_opt_pass pass_lower_resx;
extern struct gimple_opt_pass pass_build_cfg;
extern struct gimple_opt_pass pass_early_tree_profile;
-extern struct gimple_opt_pass pass_referenced_vars;
extern struct gimple_opt_pass pass_cleanup_eh;
extern struct gimple_opt_pass pass_sra;
extern struct gimple_opt_pass pass_sra_early;
@@ -464,9 +370,9 @@ extern struct simple_ipa_opt_pass pass_early_local_passes;
extern struct ipa_opt_pass_d pass_ipa_whole_program_visibility;
extern struct ipa_opt_pass_d pass_ipa_lto_gimple_out;
extern struct simple_ipa_opt_pass pass_ipa_increase_alignment;
-extern struct simple_ipa_opt_pass pass_ipa_matrix_reorg;
extern struct ipa_opt_pass_d pass_ipa_inline;
extern struct simple_ipa_opt_pass pass_ipa_free_lang_data;
+extern struct simple_ipa_opt_pass pass_ipa_free_inline_summary;
extern struct ipa_opt_pass_d pass_ipa_cp;
extern struct ipa_opt_pass_d pass_ipa_reference;
extern struct ipa_opt_pass_d pass_ipa_pure_const;
diff --git a/gcc/tree-phinodes.c b/gcc/tree-phinodes.c
index 6408a525298..4bb10e59ac7 100644
--- a/gcc/tree-phinodes.c
+++ b/gcc/tree-phinodes.c
@@ -77,21 +77,17 @@ static unsigned long free_phinode_count;
static int ideal_phi_node_len (int);
-#ifdef GATHER_STATISTICS
unsigned int phi_nodes_reused;
unsigned int phi_nodes_created;
-#endif
/* Dump some simple statistics regarding the re-use of PHI nodes. */
-#ifdef GATHER_STATISTICS
void
phinodes_print_statistics (void)
{
fprintf (stderr, "PHI nodes allocated: %u\n", phi_nodes_created);
fprintf (stderr, "PHI nodes reused: %u\n", phi_nodes_reused);
}
-#endif
/* Allocate a PHI node with at least LEN arguments. If the free list
happens to contain a PHI node with LEN arguments or more, return
@@ -119,21 +115,19 @@ allocate_phi_node (size_t len)
phi = VEC_pop (gimple, free_phinodes[bucket]);
if (VEC_empty (gimple, free_phinodes[bucket]))
VEC_free (gimple, gc, free_phinodes[bucket]);
-#ifdef GATHER_STATISTICS
- phi_nodes_reused++;
-#endif
+ if (GATHER_STATISTICS)
+ phi_nodes_reused++;
}
else
{
phi = ggc_alloc_gimple_statement_d (size);
-#ifdef GATHER_STATISTICS
- phi_nodes_created++;
+ if (GATHER_STATISTICS)
{
enum gimple_alloc_kind kind = gimple_alloc_kind (GIMPLE_PHI);
- gimple_alloc_counts[(int) kind]++;
- gimple_alloc_sizes[(int) kind] += size;
+ phi_nodes_created++;
+ gimple_alloc_counts[(int) kind]++;
+ gimple_alloc_sizes[(int) kind] += size;
}
-#endif
}
return phi;
@@ -195,7 +189,9 @@ make_phi_node (tree var, int len)
gimple_init_singleton (phi);
phi->gimple_phi.nargs = len;
phi->gimple_phi.capacity = capacity;
- if (TREE_CODE (var) == SSA_NAME)
+ if (!var)
+ ;
+ else if (TREE_CODE (var) == SSA_NAME)
gimple_phi_set_result (phi, var);
else
gimple_phi_set_result (phi, make_ssa_name (var, phi));
diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c
index 310fe3bd1d7..684a57a23b3 100644
--- a/gcc/tree-predcom.c
+++ b/gcc/tree-predcom.c
@@ -198,7 +198,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-scalar-evolution.h"
#include "tree-chrec.h"
#include "params.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-pass.h"
#include "tree-affine.h"
@@ -1309,15 +1308,7 @@ replace_ref_with (gimple stmt, tree new_tree, bool set, bool in_lhs)
val = gimple_assign_rhs1 (stmt);
gcc_assert (gimple_assign_single_p (stmt));
if (TREE_CLOBBER_P (val))
- {
- val = gimple_default_def (cfun, SSA_NAME_VAR (new_tree));
- if (val == NULL_TREE)
- {
- val = make_ssa_name (SSA_NAME_VAR (new_tree),
- gimple_build_nop ());
- set_default_def (SSA_NAME_VAR (new_tree), val);
- }
- }
+ val = get_or_create_ssa_default_def (cfun, SSA_NAME_VAR (new_tree));
else
gcc_assert (gimple_assign_copy_p (stmt));
}
@@ -1441,30 +1432,6 @@ get_init_expr (chain_p chain, unsigned index)
return VEC_index (tree, chain->inits, index);
}
-/* Marks all virtual operands of statement STMT for renaming. */
-
-void
-mark_virtual_ops_for_renaming (gimple stmt)
-{
- tree var;
-
- if (gimple_code (stmt) == GIMPLE_PHI)
- {
- var = PHI_RESULT (stmt);
- if (is_gimple_reg (var))
- return;
-
- if (TREE_CODE (var) == SSA_NAME)
- var = SSA_NAME_VAR (var);
- mark_sym_for_renaming (var);
- return;
- }
-
- update_stmt (stmt);
- if (gimple_vuse (stmt))
- mark_sym_for_renaming (gimple_vop (cfun));
-}
-
/* Returns a new temporary variable used for the I-th variable carrying
value of REF. The variable's uid is marked in TMP_VARS. */
@@ -1475,8 +1442,6 @@ predcom_tmp_var (tree ref, unsigned i, bitmap tmp_vars)
/* We never access the components of the temporary variable in predictive
commoning. */
tree var = create_tmp_reg (type, get_lsm_tmp_name (ref, i));
-
- add_referenced_var (var);
bitmap_set_bit (tmp_vars, DECL_UID (var));
return var;
}
@@ -1530,7 +1495,6 @@ initialize_root_vars (struct loop *loop, chain_p chain, bitmap tmp_vars)
gsi_insert_seq_on_edge_immediate (entry, stmts);
phi = create_phi_node (var, loop->header);
- SSA_NAME_DEF_STMT (var) = phi;
add_phi_arg (phi, init, entry, UNKNOWN_LOCATION);
add_phi_arg (phi, next, latch, UNKNOWN_LOCATION);
}
@@ -1594,14 +1558,12 @@ initialize_root_vars_lm (struct loop *loop, dref root, bool written,
{
next = VEC_index (tree, *vars, 1);
phi = create_phi_node (var, loop->header);
- SSA_NAME_DEF_STMT (var) = phi;
add_phi_arg (phi, init, entry, UNKNOWN_LOCATION);
add_phi_arg (phi, next, latch, UNKNOWN_LOCATION);
}
else
{
gimple init_stmt = gimple_build_assign (var, init);
- mark_virtual_ops_for_renaming (init_stmt);
gsi_insert_on_edge_immediate (entry, init_stmt);
}
}
@@ -1635,7 +1597,6 @@ execute_load_motion (struct loop *loop, chain_p chain, bitmap tmp_vars)
FOR_EACH_VEC_ELT (dref, chain->refs, i, a)
{
bool is_read = DR_IS_READ (a->ref);
- mark_virtual_ops_for_renaming (a->stmt);
if (DR_IS_WRITE (a->ref))
{
@@ -1731,7 +1692,7 @@ remove_stmt (gimple stmt)
next = single_nonlooparound_use (name);
reset_debug_uses (stmt);
- mark_virtual_ops_for_renaming (stmt);
+ unlink_stmt_vdef (stmt);
gsi_remove (&bsi, true);
release_defs (stmt);
@@ -1752,7 +1713,7 @@ execute_pred_commoning_chain (struct loop *loop, chain_p chain,
bitmap tmp_vars)
{
unsigned i;
- dref a, root;
+ dref a;
tree var;
if (chain->combined)
@@ -1767,13 +1728,9 @@ execute_pred_commoning_chain (struct loop *loop, chain_p chain,
/* For non-combined chains, set up the variables that hold its value,
and replace the uses of the original references by these
variables. */
- root = get_chain_root (chain);
- mark_virtual_ops_for_renaming (root->stmt);
-
initialize_root (loop, chain, tmp_vars);
for (i = 1; VEC_iterate (dref, chain->refs, i, a); i++)
{
- mark_virtual_ops_for_renaming (a->stmt);
var = VEC_index (tree, chain->vars, chain->length - a->distance);
replace_ref_with (a->stmt, var, false, false);
}
@@ -1903,7 +1860,7 @@ base_names_in_chain_on (struct loop *loop, tree name, tree var)
gimple stmt, phi;
imm_use_iterator iter;
- SSA_NAME_VAR (name) = var;
+ replace_ssa_name_symbol (name, var);
while (1)
{
@@ -1921,7 +1878,7 @@ base_names_in_chain_on (struct loop *loop, tree name, tree var)
return;
name = PHI_RESULT (phi);
- SSA_NAME_VAR (name) = var;
+ replace_ssa_name_symbol (name, var);
}
}
@@ -1944,7 +1901,7 @@ eliminate_temp_copies (struct loop *loop, bitmap tmp_vars)
phi = gsi_stmt (psi);
name = PHI_RESULT (phi);
var = SSA_NAME_VAR (name);
- if (!bitmap_bit_p (tmp_vars, DECL_UID (var)))
+ if (!var || !bitmap_bit_p (tmp_vars, DECL_UID (var)))
continue;
use = PHI_ARG_DEF_FROM_EDGE (phi, e);
gcc_assert (TREE_CODE (use) == SSA_NAME);
@@ -2222,12 +2179,10 @@ reassociate_to_the_same_stmt (tree name1, tree name2)
/* Insert the new statement combining NAME1 and NAME2 before S1, and
combine it with the rhs of S1. */
var = create_tmp_reg (type, "predreastmp");
- add_referenced_var (var);
new_name = make_ssa_name (var, NULL);
new_stmt = gimple_build_assign_with_ops (code, new_name, name1, name2);
var = create_tmp_reg (type, "predreastmp");
- add_referenced_var (var);
tmp_name = make_ssa_name (var, NULL);
/* Rhs of S1 may now be either a binary expression with operation
@@ -2376,6 +2331,8 @@ try_combine_chains (VEC (chain_p, heap) **chains)
}
}
}
+
+ VEC_free (chain_p, heap, worklist);
}
/* Prepare initializers for CHAIN in LOOP. Returns false if this is
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 44d3c10b7d8..8bd483a3a0e 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -30,7 +30,7 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "tree-iterator.h"
#include "tree-chrec.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "value-prof.h"
#include "predict.h"
@@ -126,18 +126,18 @@ print_generic_decl (FILE *file, tree decl, int flags)
}
/* Print tree T, and its successors, on file FILE. FLAGS specifies details
- to show in the dump. See TDF_* in tree-pass.h. */
+ to show in the dump. See TDF_* in dumpfile.h. */
void
print_generic_stmt (FILE *file, tree t, int flags)
{
maybe_init_pretty_print (file);
dump_generic_node (&buffer, t, 0, flags, true);
- pp_flush (&buffer);
+ pp_newline_and_flush (&buffer);
}
/* Print tree T, and its successors, on file FILE. FLAGS specifies details
- to show in the dump. See TDF_* in tree-pass.h. The output is indented by
+ to show in the dump. See TDF_* in dumpfile.h. The output is indented by
INDENT spaces. */
void
@@ -150,11 +150,11 @@ print_generic_stmt_indented (FILE *file, tree t, int flags, int indent)
for (i = 0; i < indent; i++)
pp_space (&buffer);
dump_generic_node (&buffer, t, indent, flags, true);
- pp_flush (&buffer);
+ pp_newline_and_flush (&buffer);
}
/* Print a single expression T on file FILE. FLAGS specifies details to show
- in the dump. See TDF_* in tree-pass.h. */
+ in the dump. See TDF_* in dumpfile.h. */
void
print_generic_expr (FILE *file, tree t, int flags)
@@ -591,7 +591,7 @@ dump_block_node (pretty_printer *buffer, tree block, int spc, int flags)
/* Dump the node NODE on the pretty_printer BUFFER, SPC spaces of
indent. FLAGS specifies details to show in the dump (see TDF_* in
- tree-pass.h). If IS_STMT is true, the object printed is considered
+ dumpfile.h). If IS_STMT is true, the object printed is considered
to be a statement and it is terminated by ';' if appropriate. */
int
@@ -602,6 +602,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
tree op0, op1;
const char *str;
bool is_expr;
+ enum tree_code code;
if (node == NULL_TREE)
return spc;
@@ -614,7 +615,8 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
if ((flags & TDF_LINENO) && EXPR_HAS_LOCATION (node))
dump_location (buffer, EXPR_LOCATION (node));
- switch (TREE_CODE (node))
+ code = TREE_CODE (node);
+ switch (code)
{
case ERROR_MARK:
pp_string (buffer, "<<< error >>>");
@@ -743,7 +745,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
? "unsigned long long"
: "signed long long"));
else if (TYPE_PRECISION (node) >= CHAR_TYPE_SIZE
- && exact_log2 (TYPE_PRECISION (node)))
+ && exact_log2 (TYPE_PRECISION (node)) != -1)
{
pp_string (buffer, (TYPE_UNSIGNED (node) ? "uint" : "int"));
pp_decimal_int (buffer, TYPE_PRECISION (node));
@@ -2041,7 +2043,9 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
break;
case SSA_NAME:
- dump_generic_node (buffer, SSA_NAME_VAR (node), spc, flags, false);
+ if (SSA_NAME_IDENTIFIER (node))
+ dump_generic_node (buffer, SSA_NAME_IDENTIFIER (node),
+ spc, flags, false);
pp_string (buffer, "_");
pp_decimal_int (buffer, SSA_NAME_VERSION (node));
if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (node))
@@ -2336,31 +2340,15 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
break;
case VEC_WIDEN_MULT_HI_EXPR:
- pp_string (buffer, " VEC_WIDEN_MULT_HI_EXPR < ");
- dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
- pp_string (buffer, ", ");
- dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
- pp_string (buffer, " > ");
- break;
-
case VEC_WIDEN_MULT_LO_EXPR:
- pp_string (buffer, " VEC_WIDEN_MULT_LO_EXPR < ");
- dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
- pp_string (buffer, ", ");
- dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
- pp_string (buffer, " > ");
- break;
-
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
case VEC_WIDEN_LSHIFT_HI_EXPR:
- pp_string (buffer, " VEC_WIDEN_LSHIFT_HI_EXPR < ");
- dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
- pp_string (buffer, ", ");
- dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
- pp_string (buffer, " > ");
- break;
-
case VEC_WIDEN_LSHIFT_LO_EXPR:
- pp_string (buffer, " VEC_WIDEN_LSHIFT_HI_EXPR < ");
+ pp_character (buffer, ' ');
+ for (str = tree_code_name [code]; *str; str++)
+ pp_character (buffer, TOUPPER (*str));
+ pp_string (buffer, " < ");
dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
pp_string (buffer, ", ");
dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c
index dfd0ef04677..a5b6bc80281 100644
--- a/gcc/tree-profile.c
+++ b/gcc/tree-profile.c
@@ -37,16 +37,13 @@ along with GCC; see the file COPYING3. If not see
#include "coverage.h"
#include "tree.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "value-prof.h"
#include "cgraph.h"
#include "profile.h"
#include "target.h"
static GTY(()) tree gcov_type_node;
-static GTY(()) tree gcov_type_tmp_var;
static GTY(()) tree tree_interval_profiler_fn;
static GTY(()) tree tree_pow2_profiler_fn;
static GTY(()) tree tree_one_value_profiler_fn;
@@ -102,6 +99,8 @@ init_ic_make_global_vars (void)
varpool_finalize_decl (ic_gcov_type_ptr_var);
}
+/* Create the type and function decls for the interface with gcov. */
+
void
gimple_init_edge_profiler (void)
{
@@ -209,21 +208,18 @@ gimple_init_edge_profiler (void)
void
gimple_gen_edge_profiler (int edgeno, edge e)
{
- tree ref, one;
+ tree ref, one, gcov_type_tmp_var;
gimple stmt1, stmt2, stmt3;
- /* We share one temporary variable declaration per function. This
- gets re-set in tree_profiling. */
- if (gcov_type_tmp_var == NULL_TREE)
- gcov_type_tmp_var = create_tmp_reg (gcov_type_node, "PROF_edge_counter");
ref = tree_coverage_counter_ref (GCOV_COUNTER_ARCS, edgeno);
one = build_int_cst (gcov_type_node, 1);
+ gcov_type_tmp_var = make_temp_ssa_name (gcov_type_node,
+ NULL, "PROF_edge_counter");
stmt1 = gimple_build_assign (gcov_type_tmp_var, ref);
- gimple_assign_set_lhs (stmt1, make_ssa_name (gcov_type_tmp_var, stmt1));
- find_referenced_vars_in (stmt1);
+ gcov_type_tmp_var = make_temp_ssa_name (gcov_type_node,
+ NULL, "PROF_edge_counter");
stmt2 = gimple_build_assign_with_ops (PLUS_EXPR, gcov_type_tmp_var,
gimple_assign_lhs (stmt1), one);
- gimple_assign_set_lhs (stmt2, make_ssa_name (gcov_type_tmp_var, stmt2));
stmt3 = gimple_build_assign (unshare_expr (ref), gimple_assign_lhs (stmt2));
gsi_insert_on_edge (e, stmt1);
gsi_insert_on_edge (e, stmt2);
@@ -267,7 +263,6 @@ gimple_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base
val = prepare_instrumented_value (&gsi, value);
call = gimple_build_call (tree_interval_profiler_fn, 4,
ref_ptr, val, start, steps);
- find_referenced_vars_in (call);
gsi_insert_before (&gsi, call, GSI_NEW_STMT);
}
@@ -288,7 +283,6 @@ gimple_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
true, NULL_TREE, true, GSI_SAME_STMT);
val = prepare_instrumented_value (&gsi, value);
call = gimple_build_call (tree_pow2_profiler_fn, 2, ref_ptr, val);
- find_referenced_vars_in (call);
gsi_insert_before (&gsi, call, GSI_NEW_STMT);
}
@@ -309,7 +303,6 @@ gimple_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned bas
true, NULL_TREE, true, GSI_SAME_STMT);
val = prepare_instrumented_value (&gsi, value);
call = gimple_build_call (tree_one_value_profiler_fn, 2, ref_ptr, val);
- find_referenced_vars_in (call);
gsi_insert_before (&gsi, call, GSI_NEW_STMT);
}
@@ -334,16 +327,14 @@ gimple_gen_ic_profiler (histogram_value value, unsigned tag, unsigned base)
/* Insert code:
- __gcov_indirect_call_counters = get_relevant_counter_ptr ();
- __gcov_indirect_call_callee = (void *) indirect call argument;
+ stmt1: __gcov_indirect_call_counters = get_relevant_counter_ptr ();
+ stmt2: tmp1 = (void *) (indirect call argument value)
+ stmt3: __gcov_indirect_call_callee = tmp1;
*/
- tmp1 = create_tmp_reg (ptr_void, "PROF");
stmt1 = gimple_build_assign (ic_gcov_type_ptr_var, ref_ptr);
- find_referenced_vars_in (stmt1);
+ tmp1 = make_temp_ssa_name (ptr_void, NULL, "PROF");
stmt2 = gimple_build_assign (tmp1, unshare_expr (value->hvalue.value));
- gimple_assign_set_lhs (stmt2, make_ssa_name (tmp1, stmt2));
- find_referenced_vars_in (stmt2);
stmt3 = gimple_build_assign (ic_void_ptr_var, gimple_assign_lhs (stmt2));
gsi_insert_before (&gsi, stmt1, GSI_SAME_STMT);
@@ -370,6 +361,13 @@ gimple_gen_ic_func_profiler (void)
gimple_init_edge_profiler ();
+ /* Insert code:
+
+ stmt1: __gcov_indirect_call_profiler (__gcov_indirect_call_counters,
+ current_function_funcdef_no,
+ &current_function_decl,
+ __gcov_indirect_call_callee);
+ */
gsi = gsi_after_labels (single_succ (ENTRY_BLOCK_PTR));
cur_func = force_gimple_operand_gsi (&gsi,
@@ -431,7 +429,6 @@ gimple_gen_average_profiler (histogram_value value, unsigned tag, unsigned base)
true, GSI_SAME_STMT);
val = prepare_instrumented_value (&gsi, value);
call = gimple_build_call (tree_average_profiler_fn, 2, ref_ptr, val);
- find_referenced_vars_in (call);
gsi_insert_before (&gsi, call, GSI_NEW_STMT);
}
@@ -452,7 +449,6 @@ gimple_gen_ior_profiler (histogram_value value, unsigned tag, unsigned base)
true, NULL_TREE, true, GSI_SAME_STMT);
val = prepare_instrumented_value (&gsi, value);
call = gimple_build_call (tree_ior_profiler_fn, 2, ref_ptr, val);
- find_referenced_vars_in (call);
gsi_insert_before (&gsi, call, GSI_NEW_STMT);
}
@@ -463,12 +459,9 @@ tree_profiling (void)
{
struct cgraph_node *node;
- /* Don't profile functions produced at destruction time, particularly
- the gcov datastructure initializer. Don't profile if it has been
- already instrumented either (when OpenMP expansion creates
- child function from already instrumented body). */
- if (cgraph_state == CGRAPH_STATE_FINISHED)
- return 0;
+ /* This is a small-ipa pass that gets called only once, from
+ cgraphunit.c:ipa_passes(). */
+ gcc_assert (cgraph_state == CGRAPH_STATE_IPA_SSA);
init_node_map();
@@ -478,19 +471,16 @@ tree_profiling (void)
continue;
/* Don't profile functions produced for builtin stuff. */
- if (DECL_SOURCE_LOCATION (node->symbol.decl) == BUILTINS_LOCATION
- || DECL_STRUCT_FUNCTION (node->symbol.decl)->after_tree_profile)
+ if (DECL_SOURCE_LOCATION (node->symbol.decl) == BUILTINS_LOCATION)
continue;
push_cfun (DECL_STRUCT_FUNCTION (node->symbol.decl));
current_function_decl = node->symbol.decl;
- /* Re-set global shared temporary variable for edge-counters. */
- gcov_type_tmp_var = NULL_TREE;
-
/* Local pure-const may imply need to fixup the cfg. */
if (execute_fixup_cfg () & TODO_cleanup_cfg)
cleanup_tree_cfg ();
+
branch_prob ();
if (! flag_branch_probabilities
@@ -521,8 +511,7 @@ tree_profiling (void)
continue;
/* Don't profile functions produced for builtin stuff. */
- if (DECL_SOURCE_LOCATION (node->symbol.decl) == BUILTINS_LOCATION
- || DECL_STRUCT_FUNCTION (node->symbol.decl)->after_tree_profile)
+ if (DECL_SOURCE_LOCATION (node->symbol.decl) == BUILTINS_LOCATION)
continue;
cgraph_set_const_flag (node, false, false);
@@ -540,8 +529,7 @@ tree_profiling (void)
continue;
/* Don't profile functions produced for builtin stuff. */
- if (DECL_SOURCE_LOCATION (node->symbol.decl) == BUILTINS_LOCATION
- || DECL_STRUCT_FUNCTION (node->symbol.decl)->after_tree_profile)
+ if (DECL_SOURCE_LOCATION (node->symbol.decl) == BUILTINS_LOCATION)
continue;
push_cfun (DECL_STRUCT_FUNCTION (node->symbol.decl));
@@ -558,7 +546,6 @@ tree_profiling (void)
}
}
- cfun->after_tree_profile = 1;
update_ssa (TODO_update_ssa);
rebuild_cgraph_edges ();
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 486197e88a7..d88bb1aa861 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -262,7 +262,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-scalar-evolution.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "params.h"
static tree analyze_scalar_evolution_1 (struct loop *, tree, tree);
@@ -3039,7 +3039,7 @@ analyze_scalar_evolution_for_all_loop_phi_nodes (VEC(gimple,heap) **exit_conditi
for (psi = gsi_start_phis (bb); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
- if (is_gimple_reg (PHI_RESULT (phi)))
+ if (!virtual_operand_p (PHI_RESULT (phi)))
{
chrec = instantiate_parameters
(loop,
@@ -3328,7 +3328,7 @@ scev_const_prop (void)
phi = gsi_stmt (psi);
name = PHI_RESULT (phi);
- if (!is_gimple_reg (name))
+ if (virtual_operand_p (name))
continue;
type = TREE_TYPE (name);
@@ -3404,7 +3404,7 @@ scev_const_prop (void)
phi = gsi_stmt (psi);
rslt = PHI_RESULT (phi);
def = PHI_ARG_DEF_FROM_EDGE (phi, exit);
- if (!is_gimple_reg (def))
+ if (virtual_operand_p (def))
{
gsi_next (&psi);
continue;
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 2e3e97898fe..cc7becdc319 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -80,11 +80,9 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "cgraph.h"
#include "tree-flow.h"
+#include "tree-pass.h"
#include "ipa-prop.h"
-#include "tree-pretty-print.h"
#include "statistics.h"
-#include "tree-dump.h"
-#include "timevar.h"
#include "params.h"
#include "target.h"
#include "flags.h"
@@ -226,9 +224,7 @@ struct access
BIT_FIELD_REF? */
unsigned grp_partial_lhs : 1;
- /* Set when a scalar replacement should be created for this variable. We do
- the decision and creation at different places because create_tmp_var
- cannot be called from within FOR_EACH_REFERENCED_VAR. */
+ /* Set when a scalar replacement should be created for this variable. */
unsigned grp_to_be_replaced : 1;
/* Should TREE_NO_WARNING of a replacement be set? */
@@ -271,8 +267,19 @@ static alloc_pool link_pool;
/* Base (tree) -> Vector (VEC(access_p,heap) *) map. */
static struct pointer_map_t *base_access_vec;
-/* Bitmap of candidates. */
+/* Set of candidates. */
static bitmap candidate_bitmap;
+static htab_t candidates;
+
+/* For a candidate UID return the candidates decl. */
+
+static inline tree
+candidate (unsigned uid)
+{
+ struct tree_decl_minimal t;
+ t.uid = uid;
+ return (tree) htab_find_with_hash (candidates, &t, uid);
+}
/* Bitmap of candidates which we should try to entirely scalarize away and
those which cannot be (because they are and need be used as a whole). */
@@ -602,6 +609,8 @@ static void
sra_initialize (void)
{
candidate_bitmap = BITMAP_ALLOC (NULL);
+ candidates = htab_create (VEC_length (tree, cfun->local_decls) / 2,
+ uid_decl_map_hash, uid_decl_map_eq, NULL);
should_scalarize_away_bitmap = BITMAP_ALLOC (NULL);
cannot_scalarize_away_bitmap = BITMAP_ALLOC (NULL);
gcc_obstack_init (&name_obstack);
@@ -633,6 +642,7 @@ static void
sra_deinitialize (void)
{
BITMAP_FREE (candidate_bitmap);
+ htab_delete (candidates);
BITMAP_FREE (should_scalarize_away_bitmap);
BITMAP_FREE (cannot_scalarize_away_bitmap);
free_alloc_pool (access_pool);
@@ -648,7 +658,10 @@ sra_deinitialize (void)
static void
disqualify_candidate (tree decl, const char *reason)
{
- bitmap_clear_bit (candidate_bitmap, DECL_UID (decl));
+ if (bitmap_clear_bit (candidate_bitmap, DECL_UID (decl)))
+ htab_clear_slot (candidates,
+ htab_find_slot_with_hash (candidates, decl,
+ DECL_UID (decl), NO_INSERT));
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -1435,19 +1448,15 @@ build_ref_for_offset (location_t loc, tree base, HOST_WIDE_INT offset,
tree tmp, addr;
gcc_checking_assert (gsi);
- tmp = create_tmp_reg (build_pointer_type (TREE_TYPE (prev_base)), NULL);
- add_referenced_var (tmp);
- tmp = make_ssa_name (tmp, NULL);
+ tmp = make_ssa_name (build_pointer_type (TREE_TYPE (prev_base)), NULL);
addr = build_fold_addr_expr (unshare_expr (prev_base));
STRIP_USELESS_TYPE_CONVERSION (addr);
stmt = gimple_build_assign (tmp, addr);
gimple_set_location (stmt, loc);
- SSA_NAME_DEF_STMT (tmp) = stmt;
if (insert_after)
gsi_insert_after (gsi, stmt, GSI_NEW_STMT);
else
gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
- update_stmt (stmt);
off = build_int_cst (reference_alias_ptr_type (prev_base),
offset / BITS_PER_UNIT);
@@ -1634,77 +1643,95 @@ reject (tree var, const char *msg)
}
}
+/* Return true if VAR is a candidate for SRA. */
+
+static bool
+maybe_add_sra_candidate (tree var)
+{
+ tree type = TREE_TYPE (var);
+ const char *msg;
+ void **slot;
+
+ if (!AGGREGATE_TYPE_P (type))
+ {
+ reject (var, "not aggregate");
+ return false;
+ }
+ if (needs_to_live_in_memory (var))
+ {
+ reject (var, "needs to live in memory");
+ return false;
+ }
+ if (TREE_THIS_VOLATILE (var))
+ {
+ reject (var, "is volatile");
+ return false;
+ }
+ if (!COMPLETE_TYPE_P (type))
+ {
+ reject (var, "has incomplete type");
+ return false;
+ }
+ if (!host_integerp (TYPE_SIZE (type), 1))
+ {
+ reject (var, "type size not fixed");
+ return false;
+ }
+ if (tree_low_cst (TYPE_SIZE (type), 1) == 0)
+ {
+ reject (var, "type size is zero");
+ return false;
+ }
+ if (type_internals_preclude_sra_p (type, &msg))
+ {
+ reject (var, msg);
+ return false;
+ }
+ if (/* Fix for PR 41089. tree-stdarg.c needs to have va_lists intact but
+ we also want to schedule it rather late. Thus we ignore it in
+ the early pass. */
+ (sra_mode == SRA_MODE_EARLY_INTRA
+ && is_va_list_type (type)))
+ {
+ reject (var, "is va_list");
+ return false;
+ }
+
+ bitmap_set_bit (candidate_bitmap, DECL_UID (var));
+ slot = htab_find_slot_with_hash (candidates, var, DECL_UID (var), INSERT);
+ *slot = (void *) var;
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file, "Candidate (%d): ", DECL_UID (var));
+ print_generic_expr (dump_file, var, 0);
+ fprintf (dump_file, "\n");
+ }
+
+ return true;
+}
+
/* The very first phase of intraprocedural SRA. It marks in candidate_bitmap
those with type which is suitable for scalarization. */
static bool
find_var_candidates (void)
{
- tree var, type;
- referenced_var_iterator rvi;
+ tree var, parm;
+ unsigned int i;
bool ret = false;
- const char *msg;
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
+ for (parm = DECL_ARGUMENTS (current_function_decl);
+ parm;
+ parm = DECL_CHAIN (parm))
+ ret |= maybe_add_sra_candidate (parm);
+
+ FOR_EACH_LOCAL_DECL (cfun, i, var)
{
- if (TREE_CODE (var) != VAR_DECL && TREE_CODE (var) != PARM_DECL)
+ if (TREE_CODE (var) != VAR_DECL)
continue;
- type = TREE_TYPE (var);
-
- if (!AGGREGATE_TYPE_P (type))
- {
- reject (var, "not aggregate");
- continue;
- }
- if (needs_to_live_in_memory (var))
- {
- reject (var, "needs to live in memory");
- continue;
- }
- if (TREE_THIS_VOLATILE (var))
- {
- reject (var, "is volatile");
- continue;
- }
- if (!COMPLETE_TYPE_P (type))
- {
- reject (var, "has incomplete type");
- continue;
- }
- if (!host_integerp (TYPE_SIZE (type), 1))
- {
- reject (var, "type size not fixed");
- continue;
- }
- if (tree_low_cst (TYPE_SIZE (type), 1) == 0)
- {
- reject (var, "type size is zero");
- continue;
- }
- if (type_internals_preclude_sra_p (type, &msg))
- {
- reject (var, msg);
- continue;
- }
- if (/* Fix for PR 41089. tree-stdarg.c needs to have va_lists intact but
- we also want to schedule it rather late. Thus we ignore it in
- the early pass. */
- (sra_mode == SRA_MODE_EARLY_INTRA
- && is_va_list_type (type)))
- {
- reject (var, "is va_list");
- continue;
- }
- bitmap_set_bit (candidate_bitmap, DECL_UID (var));
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- {
- fprintf (dump_file, "Candidate (%d): ", DECL_UID (var));
- print_generic_expr (dump_file, var, 0);
- fprintf (dump_file, "\n");
- }
- ret = true;
+ ret |= maybe_add_sra_candidate (var);
}
return ret;
@@ -1830,16 +1857,11 @@ sort_and_splice_var_accesses (tree var)
ACCESS->replacement. */
static tree
-create_access_replacement (struct access *access, bool rename)
+create_access_replacement (struct access *access)
{
tree repl;
repl = create_tmp_var (access->type, "SR");
- add_referenced_var (repl);
- if (!access->grp_partial_lhs
- && rename)
- mark_sym_for_renaming (repl);
-
if (TREE_CODE (access->type) == COMPLEX_TYPE
|| TREE_CODE (access->type) == VECTOR_TYPE)
{
@@ -1860,6 +1882,7 @@ create_access_replacement (struct access *access, bool rename)
{
char *pretty_name = make_fancy_name (access->expr);
tree debug_expr = unshare_expr (access->expr), d;
+ bool fail = false;
DECL_NAME (repl) = get_identifier (pretty_name);
obstack_free (&name_obstack, pretty_name);
@@ -1869,29 +1892,34 @@ create_access_replacement (struct access *access, bool rename)
used SSA_NAMEs and thus they could be freed. All debug info
generation cares is whether something is constant or variable
and that get_ref_base_and_extent works properly on the
- expression. */
- for (d = debug_expr; handled_component_p (d); d = TREE_OPERAND (d, 0))
+ expression. It cannot handle accesses at a non-constant offset
+ though, so just give up in those cases. */
+ for (d = debug_expr; !fail && handled_component_p (d);
+ d = TREE_OPERAND (d, 0))
switch (TREE_CODE (d))
{
case ARRAY_REF:
case ARRAY_RANGE_REF:
if (TREE_OPERAND (d, 1)
- && TREE_CODE (TREE_OPERAND (d, 1)) == SSA_NAME)
- TREE_OPERAND (d, 1) = SSA_NAME_VAR (TREE_OPERAND (d, 1));
+ && TREE_CODE (TREE_OPERAND (d, 1)) != INTEGER_CST)
+ fail = true;
if (TREE_OPERAND (d, 3)
- && TREE_CODE (TREE_OPERAND (d, 3)) == SSA_NAME)
- TREE_OPERAND (d, 3) = SSA_NAME_VAR (TREE_OPERAND (d, 3));
+ && TREE_CODE (TREE_OPERAND (d, 3)) != INTEGER_CST)
+ fail = true;
/* FALLTHRU */
case COMPONENT_REF:
if (TREE_OPERAND (d, 2)
- && TREE_CODE (TREE_OPERAND (d, 2)) == SSA_NAME)
- TREE_OPERAND (d, 2) = SSA_NAME_VAR (TREE_OPERAND (d, 2));
+ && TREE_CODE (TREE_OPERAND (d, 2)) != INTEGER_CST)
+ fail = true;
break;
default:
break;
}
- SET_DECL_DEBUG_EXPR (repl, debug_expr);
- DECL_DEBUG_EXPR_IS_FROM (repl) = 1;
+ if (!fail)
+ {
+ SET_DECL_DEBUG_EXPR (repl, debug_expr);
+ DECL_DEBUG_EXPR_IS_FROM (repl) = 1;
+ }
if (access->grp_no_warning)
TREE_NO_WARNING (repl) = 1;
else
@@ -1919,23 +1947,8 @@ create_access_replacement (struct access *access, bool rename)
static inline tree
get_access_replacement (struct access *access)
{
- gcc_assert (access->grp_to_be_replaced);
-
- if (!access->replacement_decl)
- access->replacement_decl = create_access_replacement (access, true);
- return access->replacement_decl;
-}
-
-/* Return ACCESS scalar replacement, create it if it does not exist yet but do
- not mark it for renaming. */
-
-static inline tree
-get_unrenamed_access_replacement (struct access *access)
-{
- gcc_assert (!access->grp_to_be_replaced);
-
if (!access->replacement_decl)
- access->replacement_decl = create_access_replacement (access, false);
+ access->replacement_decl = create_access_replacement (access);
return access->replacement_decl;
}
@@ -2355,7 +2368,7 @@ analyze_all_variable_accesses (void)
if (bitmap_bit_p (should_scalarize_away_bitmap, i)
&& !bitmap_bit_p (cannot_scalarize_away_bitmap, i))
{
- tree var = referenced_var (i);
+ tree var = candidate (i);
if (TREE_CODE (var) == VAR_DECL
&& type_consists_of_records_p (TREE_TYPE (var)))
@@ -2383,7 +2396,7 @@ analyze_all_variable_accesses (void)
bitmap_copy (tmp, candidate_bitmap);
EXECUTE_IF_SET_IN_BITMAP (tmp, 0, i, bi)
{
- tree var = referenced_var (i);
+ tree var = candidate (i);
struct access *access;
access = sort_and_splice_var_accesses (var);
@@ -2397,7 +2410,7 @@ analyze_all_variable_accesses (void)
bitmap_copy (tmp, candidate_bitmap);
EXECUTE_IF_SET_IN_BITMAP (tmp, 0, i, bi)
{
- tree var = referenced_var (i);
+ tree var = candidate (i);
struct access *access = get_first_repr_for_decl (var);
if (analyze_access_trees (access))
@@ -2832,18 +2845,7 @@ sra_modify_constructor_assign (gimple *stmt, gimple_stmt_iterator *gsi)
static tree
get_repl_default_def_ssa_name (struct access *racc)
{
- tree repl, decl;
-
- decl = get_unrenamed_access_replacement (racc);
-
- repl = gimple_default_def (cfun, decl);
- if (!repl)
- {
- repl = make_ssa_name (decl, gimple_build_nop ());
- set_default_def (decl, repl);
- }
-
- return repl;
+ return get_or_create_ssa_default_def (cfun, get_access_replacement (racc));
}
/* Return true if REF has a COMPONENT_REF with a bit-field field declaration
@@ -3341,7 +3343,7 @@ is_unused_scalar_param (tree parm)
{
tree name;
return (is_gimple_reg (parm)
- && (!(name = gimple_default_def (cfun, parm))
+ && (!(name = ssa_default_def (cfun, parm))
|| has_zero_uses (name)));
}
@@ -3355,7 +3357,7 @@ ptr_parm_has_direct_uses (tree parm)
{
imm_use_iterator ui;
gimple stmt;
- tree name = gimple_default_def (cfun, parm);
+ tree name = ssa_default_def (cfun, parm);
bool ret = false;
FOR_EACH_IMM_USE_STMT (stmt, ui, name)
@@ -3444,6 +3446,7 @@ find_param_candidates (void)
parm = DECL_CHAIN (parm))
{
tree type = TREE_TYPE (parm);
+ void **slot;
count++;
@@ -3482,6 +3485,10 @@ find_param_candidates (void)
continue;
bitmap_set_bit (candidate_bitmap, DECL_UID (parm));
+ slot = htab_find_slot_with_hash (candidates, parm,
+ DECL_UID (parm), INSERT);
+ *slot = (void *) parm;
+
ret = true;
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -3992,7 +3999,7 @@ splice_all_param_accesses (VEC (access_p, heap) **representatives)
result = UNUSED_PARAMS;
}
else
- VEC_quick_push (access_p, *representatives, NULL);
+ VEC_quick_push (access_p, *representatives, (access_p) NULL);
}
if (result == NO_GOOD_ACCESS)
@@ -4180,7 +4187,6 @@ get_replaced_param_substitute (struct ipa_parm_adjustment *adj)
DECL_NAME (repl) = get_identifier (pretty_name);
obstack_free (&name_obstack, pretty_name);
- add_referenced_var (repl);
adj->new_ssa_base = repl;
}
else
@@ -4202,7 +4208,7 @@ get_adjustment_for_base (ipa_parm_adjustment_vec adjustments, tree base)
{
struct ipa_parm_adjustment *adj;
- adj = VEC_index (ipa_parm_adjustment_t, adjustments, i);
+ adj = &VEC_index (ipa_parm_adjustment_t, adjustments, i);
if (!adj->copy_param && adj->base == base)
return adj;
}
@@ -4233,8 +4239,10 @@ replace_removed_params_ssa_names (gimple stmt,
if (TREE_CODE (lhs) != SSA_NAME)
return false;
+
decl = SSA_NAME_VAR (lhs);
- if (TREE_CODE (decl) != PARM_DECL)
+ if (decl == NULL_TREE
+ || TREE_CODE (decl) != PARM_DECL)
return false;
adj = get_adjustment_for_base (adjustments, decl);
@@ -4307,7 +4315,7 @@ sra_ipa_modify_expr (tree *expr, bool convert,
for (i = 0; i < len; i++)
{
- adj = VEC_index (ipa_parm_adjustment_t, adjustments, i);
+ adj = &VEC_index (ipa_parm_adjustment_t, adjustments, i);
if (adj->base == base &&
(adj->offset == offset || adj->remove_param))
@@ -4514,10 +4522,10 @@ sra_ipa_reset_debug_stmts (ipa_parm_adjustment_vec adjustments)
tree name, vexpr, copy = NULL_TREE;
use_operand_p use_p;
- adj = VEC_index (ipa_parm_adjustment_t, adjustments, i);
+ adj = &VEC_index (ipa_parm_adjustment_t, adjustments, i);
if (adj->copy_param || !is_gimple_reg (adj->base))
continue;
- name = gimple_default_def (cfun, adj->base);
+ name = ssa_default_def (cfun, adj->base);
vexpr = NULL;
if (name)
FOR_EACH_IMM_USE_STMT (stmt, ui, name)
@@ -4564,7 +4572,6 @@ sra_ipa_reset_debug_stmts (ipa_parm_adjustment_vec adjustments)
SET_DECL_RTL (copy, 0);
TREE_USED (copy) = 1;
DECL_CONTEXT (copy) = current_function_decl;
- add_referenced_var (copy);
add_local_decl (cfun, copy);
DECL_CHAIN (copy) =
BLOCK_VARS (DECL_INITIAL (current_function_decl));
@@ -4691,6 +4698,8 @@ modify_function (struct cgraph_node *node, ipa_parm_adjustment_vec adjustments)
new_node = cgraph_function_versioning (node, redirect_callers, NULL, NULL,
false, NULL, NULL, "isra");
+ VEC_free (cgraph_edge_p, heap, redirect_callers);
+
current_function_decl = new_node->symbol.decl;
push_cfun (DECL_STRUCT_FUNCTION (new_node->symbol.decl));
diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c
index 22892c5acbb..57a590d4a63 100644
--- a/gcc/tree-ssa-address.c
+++ b/gcc/tree-ssa-address.c
@@ -30,9 +30,7 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "tree-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "tree-pass.h"
-#include "timevar.h"
+#include "dumpfile.h"
#include "flags.h"
#include "tree-inline.h"
#include "tree-affine.h"
@@ -44,6 +42,7 @@ along with GCC; see the file COPYING3. If not see
#include "expr.h"
#include "ggc.h"
#include "target.h"
+#include "expmed.h"
/* TODO -- handling of symbols (according to Richard Hendersons
comments, http://gcc.gnu.org/ml/gcc-patches/2005-04/msg00949.html):
@@ -216,7 +215,8 @@ addr_for_mem_ref (struct mem_address *addr, addr_space_t as,
templ_index + 1);
/* Reuse the templates for addresses, so that we do not waste memory. */
- templ = VEC_index (mem_addr_template, mem_addr_template_list, templ_index);
+ templ = &VEC_index (mem_addr_template, mem_addr_template_list,
+ templ_index);
if (!templ->ref)
{
sym = (addr->symbol ?
@@ -556,7 +556,7 @@ most_expensive_mult_to_index (tree type, struct mem_address *parts,
|| !multiplier_allowed_in_address_p (coef, TYPE_MODE (type), as))
continue;
- acost = multiply_by_const_cost (coef, address_mode, speed);
+ acost = mult_by_coeff_cost (coef, address_mode, speed);
if (acost > best_mult_cost)
{
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index 540850fc5cb..574f418447d 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -27,18 +27,16 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "target.h"
#include "basic-block.h"
-#include "timevar.h"
+#include "timevar.h" /* for TV_ALIAS_STMT_WALK */
#include "ggc.h"
#include "langhooks.h"
#include "flags.h"
#include "function.h"
#include "tree-pretty-print.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "gimple.h"
#include "tree-flow.h"
#include "tree-inline.h"
-#include "tree-pass.h"
-#include "convert.h"
#include "params.h"
#include "vec.h"
#include "bitmap.h"
@@ -380,17 +378,16 @@ stmt_may_clobber_global_p (gimple stmt)
void
dump_alias_info (FILE *file)
{
- size_t i;
+ unsigned i;
const char *funcname
= lang_hooks.decl_printable_name (current_function_decl, 2);
- referenced_var_iterator rvi;
tree var;
fprintf (file, "\n\nAlias information for %s\n\n", funcname);
fprintf (file, "Aliased symbols\n\n");
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
+ FOR_EACH_LOCAL_DECL (cfun, i, var)
{
if (may_be_aliased (var))
dump_variable (file, var);
@@ -1932,7 +1929,7 @@ stmt_kills_ref_p (gimple stmt, tree ref)
static bool
maybe_skip_until (gimple phi, tree target, ao_ref *ref,
- tree vuse, bitmap *visited)
+ tree vuse, unsigned int *cnt, bitmap *visited)
{
basic_block bb = gimple_bb (phi);
@@ -1951,15 +1948,20 @@ maybe_skip_until (gimple phi, tree target, ao_ref *ref,
/* An already visited PHI node ends the walk successfully. */
if (bitmap_bit_p (*visited, SSA_NAME_VERSION (PHI_RESULT (def_stmt))))
return true;
- vuse = get_continuation_for_phi (def_stmt, ref, visited);
+ vuse = get_continuation_for_phi (def_stmt, ref, cnt, visited);
if (!vuse)
return false;
continue;
}
- /* A clobbering statement or the end of the IL ends it failing. */
- else if (gimple_nop_p (def_stmt)
- || stmt_may_clobber_ref_p_1 (def_stmt, ref))
+ else if (gimple_nop_p (def_stmt))
return false;
+ else
+ {
+ /* A clobbering statement or the end of the IL ends it failing. */
+ ++*cnt;
+ if (stmt_may_clobber_ref_p_1 (def_stmt, ref))
+ return false;
+ }
/* If we reach a new basic-block see if we already skipped it
in a previous walk that ended successfully. */
if (gimple_bb (def_stmt) != bb)
@@ -1979,7 +1981,7 @@ maybe_skip_until (gimple phi, tree target, ao_ref *ref,
static tree
get_continuation_for_phi_1 (gimple phi, tree arg0, tree arg1,
- ao_ref *ref, bitmap *visited)
+ ao_ref *ref, unsigned int *cnt, bitmap *visited)
{
gimple def0 = SSA_NAME_DEF_STMT (arg0);
gimple def1 = SSA_NAME_DEF_STMT (arg1);
@@ -1992,14 +1994,14 @@ get_continuation_for_phi_1 (gimple phi, tree arg0, tree arg1,
&& dominated_by_p (CDI_DOMINATORS,
gimple_bb (def1), gimple_bb (def0))))
{
- if (maybe_skip_until (phi, arg0, ref, arg1, visited))
+ if (maybe_skip_until (phi, arg0, ref, arg1, cnt, visited))
return arg0;
}
else if (gimple_nop_p (def1)
|| dominated_by_p (CDI_DOMINATORS,
gimple_bb (def0), gimple_bb (def1)))
{
- if (maybe_skip_until (phi, arg1, ref, arg0, visited))
+ if (maybe_skip_until (phi, arg1, ref, arg0, cnt, visited))
return arg1;
}
/* Special case of a diamond:
@@ -2018,6 +2020,7 @@ get_continuation_for_phi_1 (gimple phi, tree arg0, tree arg1,
else if ((common_vuse = gimple_vuse (def0))
&& common_vuse == gimple_vuse (def1))
{
+ *cnt += 2;
if (!stmt_may_clobber_ref_p_1 (def0, ref)
&& !stmt_may_clobber_ref_p_1 (def1, ref))
return common_vuse;
@@ -2030,11 +2033,12 @@ get_continuation_for_phi_1 (gimple phi, tree arg0, tree arg1,
/* Starting from a PHI node for the virtual operand of the memory reference
REF find a continuation virtual operand that allows to continue walking
statements dominating PHI skipping only statements that cannot possibly
- clobber REF. Returns NULL_TREE if no suitable virtual operand can
- be found. */
+ clobber REF. Increments *CNT for each alias disambiguation done.
+ Returns NULL_TREE if no suitable virtual operand can be found. */
tree
-get_continuation_for_phi (gimple phi, ao_ref *ref, bitmap *visited)
+get_continuation_for_phi (gimple phi, ao_ref *ref,
+ unsigned int *cnt, bitmap *visited)
{
unsigned nargs = gimple_phi_num_args (phi);
@@ -2071,7 +2075,8 @@ get_continuation_for_phi (gimple phi, ao_ref *ref, bitmap *visited)
for (i = 0; i < nargs; ++i)
{
arg1 = PHI_ARG_DEF (phi, i);
- arg0 = get_continuation_for_phi_1 (phi, arg0, arg1, ref, visited);
+ arg0 = get_continuation_for_phi_1 (phi, arg0, arg1, ref,
+ cnt, visited);
if (!arg0)
return NULL_TREE;
}
@@ -2102,11 +2107,12 @@ get_continuation_for_phi (gimple phi, ao_ref *ref, bitmap *visited)
void *
walk_non_aliased_vuses (ao_ref *ref, tree vuse,
- void *(*walker)(ao_ref *, tree, void *),
+ void *(*walker)(ao_ref *, tree, unsigned int, void *),
void *(*translate)(ao_ref *, tree, void *), void *data)
{
bitmap visited = NULL;
void *res;
+ unsigned int cnt = 0;
timevar_push (TV_ALIAS_STMT_WALK);
@@ -2115,17 +2121,25 @@ walk_non_aliased_vuses (ao_ref *ref, tree vuse,
gimple def_stmt;
/* ??? Do we want to account this to TV_ALIAS_STMT_WALK? */
- res = (*walker) (ref, vuse, data);
- if (res)
+ res = (*walker) (ref, vuse, cnt, data);
+ /* Abort walk. */
+ if (res == (void *)-1)
+ {
+ res = NULL;
+ break;
+ }
+ /* Lookup succeeded. */
+ else if (res != NULL)
break;
def_stmt = SSA_NAME_DEF_STMT (vuse);
if (gimple_nop_p (def_stmt))
break;
else if (gimple_code (def_stmt) == GIMPLE_PHI)
- vuse = get_continuation_for_phi (def_stmt, ref, &visited);
+ vuse = get_continuation_for_phi (def_stmt, ref, &cnt, &visited);
else
{
+ cnt++;
if (stmt_may_clobber_ref_p_1 (def_stmt, ref))
{
if (!translate)
diff --git a/gcc/tree-ssa-alias.h b/gcc/tree-ssa-alias.h
index 88f6d86f7e2..cdff3812181 100644
--- a/gcc/tree-ssa-alias.h
+++ b/gcc/tree-ssa-alias.h
@@ -21,9 +21,6 @@
#ifndef TREE_SSA_ALIAS_H
#define TREE_SSA_ALIAS_H
-#include "coretypes.h"
-
-
/* The points-to solution.
The points-to solution is a union of pt_vars and the abstract
@@ -110,9 +107,11 @@ extern bool stmt_may_clobber_ref_p (gimple, tree);
extern bool stmt_may_clobber_ref_p_1 (gimple, ao_ref *);
extern bool call_may_clobber_ref_p (gimple, tree);
extern bool stmt_kills_ref_p (gimple, tree);
-extern tree get_continuation_for_phi (gimple, ao_ref *, bitmap *);
+extern tree get_continuation_for_phi (gimple, ao_ref *,
+ unsigned int *, bitmap *);
extern void *walk_non_aliased_vuses (ao_ref *, tree,
- void *(*)(ao_ref *, tree, void *),
+ void *(*)(ao_ref *, tree,
+ unsigned int, void *),
void *(*)(ao_ref *, tree, void *), void *);
extern unsigned int walk_aliased_vdefs (ao_ref *, tree,
bool (*)(ao_ref *, tree, void *),
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index c248cf23c73..ac6ad5da74f 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -119,10 +119,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "function.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
-#include "timevar.h"
-#include "tree-dump.h"
#include "tree-flow.h"
#include "tree-pass.h"
#include "tree-ssa-propagate.h"
@@ -133,6 +130,7 @@ along with GCC; see the file COPYING3. If not see
#include "dbgcnt.h"
#include "gimple-fold.h"
#include "params.h"
+#include "hash-table.h"
/* Possible lattice values. */
@@ -239,7 +237,6 @@ debug_lattice_value (prop_value_t val)
static prop_value_t
get_default_value (tree var)
{
- tree sym = SSA_NAME_VAR (var);
prop_value_t val = { UNINITIALIZED, NULL_TREE, { 0, 0 } };
gimple stmt;
@@ -251,8 +248,8 @@ get_default_value (tree var)
before being initialized. If VAR is a local variable, we
can assume initially that it is UNDEFINED, otherwise we must
consider it VARYING. */
- if (is_gimple_reg (sym)
- && TREE_CODE (sym) == VAR_DECL)
+ if (!virtual_operand_p (var)
+ && TREE_CODE (SSA_NAME_VAR (var)) == VAR_DECL)
val.lattice_val = UNDEFINED;
else
{
@@ -408,7 +405,8 @@ valid_lattice_transition (prop_value_t old_val, prop_value_t new_val)
/* Now both lattice values are CONSTANT. */
- /* Allow transitioning from &x to &x & ~3. */
+ /* Allow transitioning from PHI <&x, not executable> == &x
+ to PHI <&x, &y> == common alignment. */
if (TREE_CODE (old_val.value) != INTEGER_CST
&& TREE_CODE (new_val.value) == INTEGER_CST)
return true;
@@ -512,7 +510,7 @@ get_value_from_alignment (tree expr)
gcc_assert (TREE_CODE (expr) == ADDR_EXPR);
- get_object_alignment_1 (TREE_OPERAND (expr, 0), &align, &bitpos);
+ get_pointer_alignment_1 (expr, &align, &bitpos);
val.mask
= double_int_and_not (POINTER_TYPE_P (type) || TYPE_UNSIGNED (type)
? double_int_mask (TYPE_PRECISION (type))
@@ -651,6 +649,11 @@ likely_value (gimple stmt)
the undefined operand may be promoted. */
return UNDEFINED;
+ case ADDR_EXPR:
+ /* If any part of an address is UNDEFINED, like the index
+ of an ARRAY_EXPR, then treat the result as UNDEFINED. */
+ return UNDEFINED;
+
default:
;
}
@@ -759,7 +762,7 @@ ccp_initialize (void)
{
gimple phi = gsi_stmt (i);
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
prop_set_simulate_again (phi, false);
else
prop_set_simulate_again (phi, true);
@@ -1685,11 +1688,14 @@ evaluate_stmt (gimple stmt)
return val;
}
+typedef hash_table <pointer_hash <gimple_statement_d> > gimple_htab;
+
/* Given a BUILT_IN_STACK_SAVE value SAVED_VAL, insert a clobber of VAR before
each matching BUILT_IN_STACK_RESTORE. Mark visited phis in VISITED. */
static void
-insert_clobber_before_stack_restore (tree saved_val, tree var, htab_t *visited)
+insert_clobber_before_stack_restore (tree saved_val, tree var,
+ gimple_htab *visited)
{
gimple stmt, clobber_stmt;
tree clobber;
@@ -1709,10 +1715,10 @@ insert_clobber_before_stack_restore (tree saved_val, tree var, htab_t *visited)
}
else if (gimple_code (stmt) == GIMPLE_PHI)
{
- if (*visited == NULL)
- *visited = htab_create (10, htab_hash_pointer, htab_eq_pointer, NULL);
+ if (!visited->is_created ())
+ visited->create (10);
- slot = (gimple *)htab_find_slot (*visited, stmt, INSERT);
+ slot = visited->find_slot (stmt, INSERT);
if (*slot != NULL)
continue;
@@ -1755,7 +1761,7 @@ insert_clobbers_for_var (gimple_stmt_iterator i, tree var)
{
gimple stmt;
tree saved_val;
- htab_t visited = NULL;
+ gimple_htab visited;
for (; !gsi_end_p (i); gsi_prev_dom_bb_nondebug (&i))
{
@@ -1772,8 +1778,8 @@ insert_clobbers_for_var (gimple_stmt_iterator i, tree var)
break;
}
- if (visited != NULL)
- htab_delete (visited);
+ if (visited.is_created ())
+ visited.dispose ();
}
/* Detects a __builtin_alloca_with_align with constant size argument. Declares
@@ -2318,6 +2324,71 @@ optimize_stdarg_builtin (gimple call)
}
}
+/* Attemp to make the block of __builtin_unreachable I unreachable by changing
+ the incoming jumps. Return true if at least one jump was changed. */
+
+static bool
+optimize_unreachable (gimple_stmt_iterator i)
+{
+ basic_block bb = gsi_bb (i);
+ gimple_stmt_iterator gsi;
+ gimple stmt;
+ edge_iterator ei;
+ edge e;
+ bool ret;
+
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ stmt = gsi_stmt (gsi);
+
+ if (is_gimple_debug (stmt))
+ continue;
+
+ if (gimple_code (stmt) == GIMPLE_LABEL)
+ {
+ /* Verify we do not need to preserve the label. */
+ if (FORCED_LABEL (gimple_label_label (stmt)))
+ return false;
+
+ continue;
+ }
+
+ /* Only handle the case that __builtin_unreachable is the first statement
+ in the block. We rely on DCE to remove stmts without side-effects
+ before __builtin_unreachable. */
+ if (gsi_stmt (gsi) != gsi_stmt (i))
+ return false;
+ }
+
+ ret = false;
+ FOR_EACH_EDGE (e, ei, bb->preds)
+ {
+ gsi = gsi_last_bb (e->src);
+ if (gsi_end_p (gsi))
+ continue;
+
+ stmt = gsi_stmt (gsi);
+ if (gimple_code (stmt) == GIMPLE_COND)
+ {
+ if (e->flags & EDGE_TRUE_VALUE)
+ gimple_cond_make_false (stmt);
+ else if (e->flags & EDGE_FALSE_VALUE)
+ gimple_cond_make_true (stmt);
+ else
+ gcc_unreachable ();
+ }
+ else
+ {
+ /* Todo: handle other cases, f.i. switch statement. */
+ continue;
+ }
+
+ ret = true;
+ }
+
+ return ret;
+}
+
/* A simple pass that attempts to fold all builtin functions. This pass
is run after we've propagated as many constants as we can. */
@@ -2379,6 +2450,11 @@ execute_fold_all_builtins (void)
gsi_next (&i);
continue;
+ case BUILT_IN_UNREACHABLE:
+ if (optimize_unreachable (i))
+ cfg_changed = true;
+ break;
+
case BUILT_IN_VA_START:
case BUILT_IN_VA_END:
case BUILT_IN_VA_COPY:
@@ -2393,6 +2469,9 @@ execute_fold_all_builtins (void)
continue;
}
+ if (result == NULL_TREE)
+ break;
+
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Simplified\n ");
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c
index 776e9e02e77..5d2ce38c5a6 100644
--- a/gcc/tree-ssa-coalesce.c
+++ b/gcc/tree-ssa-coalesce.c
@@ -27,9 +27,9 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tree-pretty-print.h"
#include "bitmap.h"
+#include "dumpfile.h"
#include "tree-flow.h"
-#include "hashtab.h"
-#include "tree-dump.h"
+#include "hash-table.h"
#include "tree-ssa-live.h"
#include "diagnostic-core.h"
@@ -504,11 +504,10 @@ dump_coalesce_list (FILE *f, coalesce_list_p cl)
typedef struct ssa_conflicts_d
{
- unsigned size;
- bitmap *conflicts;
+ bitmap_obstack obstack; /* A place to allocate our bitmaps. */
+ VEC(bitmap, heap)* conflicts;
} * ssa_conflicts_p;
-
/* Return an empty new conflict graph for SIZE elements. */
static inline ssa_conflicts_p
@@ -517,8 +516,9 @@ ssa_conflicts_new (unsigned size)
ssa_conflicts_p ptr;
ptr = XNEW (struct ssa_conflicts_d);
- ptr->conflicts = XCNEWVEC (bitmap, size);
- ptr->size = size;
+ bitmap_obstack_initialize (&ptr->obstack);
+ ptr->conflicts = VEC_alloc (bitmap, heap, size);
+ VEC_safe_grow_cleared (bitmap, heap, ptr->conflicts, size);
return ptr;
}
@@ -528,12 +528,8 @@ ssa_conflicts_new (unsigned size)
static inline void
ssa_conflicts_delete (ssa_conflicts_p ptr)
{
- unsigned x;
- for (x = 0; x < ptr->size; x++)
- if (ptr->conflicts[x])
- BITMAP_FREE (ptr->conflicts[x]);
-
- free (ptr->conflicts);
+ bitmap_obstack_release (&ptr->obstack);
+ VEC_free (bitmap, heap, ptr->conflicts);
free (ptr);
}
@@ -543,16 +539,14 @@ ssa_conflicts_delete (ssa_conflicts_p ptr)
static inline bool
ssa_conflicts_test_p (ssa_conflicts_p ptr, unsigned x, unsigned y)
{
- bitmap b;
+ bitmap bx = VEC_index (bitmap, ptr->conflicts, x);
+ bitmap by = VEC_index (bitmap, ptr->conflicts, y);
- gcc_checking_assert (x < ptr->size);
- gcc_checking_assert (y < ptr->size);
gcc_checking_assert (x != y);
- b = ptr->conflicts[x];
- if (b)
+ if (bx)
/* Avoid the lookup if Y has no conflicts. */
- return ptr->conflicts[y] ? bitmap_bit_p (b, y) : false;
+ return by ? bitmap_bit_p (bx, y) : false;
else
return false;
}
@@ -563,10 +557,11 @@ ssa_conflicts_test_p (ssa_conflicts_p ptr, unsigned x, unsigned y)
static inline void
ssa_conflicts_add_one (ssa_conflicts_p ptr, unsigned x, unsigned y)
{
+ bitmap bx = VEC_index (bitmap, ptr->conflicts, x);
/* If there are no conflicts yet, allocate the bitmap and set bit. */
- if (!ptr->conflicts[x])
- ptr->conflicts[x] = BITMAP_ALLOC (NULL);
- bitmap_set_bit (ptr->conflicts[x], y);
+ if (! bx)
+ bx = VEC_index (bitmap, ptr->conflicts, x) = BITMAP_ALLOC (&ptr->obstack);
+ bitmap_set_bit (bx, y);
}
@@ -575,8 +570,6 @@ ssa_conflicts_add_one (ssa_conflicts_p ptr, unsigned x, unsigned y)
static inline void
ssa_conflicts_add (ssa_conflicts_p ptr, unsigned x, unsigned y)
{
- gcc_checking_assert (x < ptr->size);
- gcc_checking_assert (y < ptr->size);
gcc_checking_assert (x != y);
ssa_conflicts_add_one (ptr, x, y);
ssa_conflicts_add_one (ptr, y, x);
@@ -590,29 +583,35 @@ ssa_conflicts_merge (ssa_conflicts_p ptr, unsigned x, unsigned y)
{
unsigned z;
bitmap_iterator bi;
+ bitmap bx = VEC_index (bitmap, ptr->conflicts, x);
+ bitmap by = VEC_index (bitmap, ptr->conflicts, y);
- gcc_assert (x != y);
- if (!(ptr->conflicts[y]))
+ gcc_checking_assert (x != y);
+ if (! by)
return;
/* Add a conflict between X and every one Y has. If the bitmap doesn't
exist, then it has already been coalesced, and we don't need to add a
conflict. */
- EXECUTE_IF_SET_IN_BITMAP (ptr->conflicts[y], 0, z, bi)
- if (ptr->conflicts[z])
- bitmap_set_bit (ptr->conflicts[z], x);
+ EXECUTE_IF_SET_IN_BITMAP (by, 0, z, bi)
+ {
+ bitmap bz = VEC_index (bitmap, ptr->conflicts, z);
+ if (bz)
+ bitmap_set_bit (bz, x);
+ }
- if (ptr->conflicts[x])
+ if (bx)
{
/* If X has conflicts, add Y's to X. */
- bitmap_ior_into (ptr->conflicts[x], ptr->conflicts[y]);
- BITMAP_FREE (ptr->conflicts[y]);
+ bitmap_ior_into (bx, by);
+ BITMAP_FREE (by);
+ VEC_replace (bitmap, ptr->conflicts, y, NULL);
}
else
{
/* If X has no conflicts, simply use Y's. */
- ptr->conflicts[x] = ptr->conflicts[y];
- ptr->conflicts[y] = NULL;
+ VEC_replace (bitmap, ptr->conflicts, x, by);
+ VEC_replace (bitmap, ptr->conflicts, y, NULL);
}
}
@@ -623,14 +622,15 @@ static void
ssa_conflicts_dump (FILE *file, ssa_conflicts_p ptr)
{
unsigned x;
+ bitmap b;
fprintf (file, "\nConflict graph:\n");
- for (x = 0; x < ptr->size; x++)
- if (ptr->conflicts[x])
+ FOR_EACH_VEC_ELT (bitmap, ptr->conflicts, x, b);
+ if (b)
{
fprintf (dump_file, "%d: ", x);
- dump_bitmap (file, ptr->conflicts[x]);
+ dump_bitmap (file, b);
}
}
@@ -649,6 +649,7 @@ ssa_conflicts_dump (FILE *file, ssa_conflicts_p ptr)
typedef struct live_track_d
{
+ bitmap_obstack obstack; /* A place to allocate our bitmaps. */
bitmap live_base_var; /* Indicates if a basevar is live. */
bitmap *live_base_partitions; /* Live partitions for each basevar. */
var_map map; /* Var_map being used for partition mapping. */
@@ -670,10 +671,11 @@ new_live_track (var_map map)
ptr = (live_track_p) xmalloc (sizeof (struct live_track_d));
ptr->map = map;
lim = num_basevars (map);
+ bitmap_obstack_initialize (&ptr->obstack);
ptr->live_base_partitions = (bitmap *) xmalloc(sizeof (bitmap *) * lim);
- ptr->live_base_var = BITMAP_ALLOC (NULL);
+ ptr->live_base_var = BITMAP_ALLOC (&ptr->obstack);
for (x = 0; x < lim; x++)
- ptr->live_base_partitions[x] = BITMAP_ALLOC (NULL);
+ ptr->live_base_partitions[x] = BITMAP_ALLOC (&ptr->obstack);
return ptr;
}
@@ -683,12 +685,7 @@ new_live_track (var_map map)
static void
delete_live_track (live_track_p ptr)
{
- int x, lim;
-
- lim = num_basevars (ptr->map);
- for (x = 0; x < lim; x++)
- BITMAP_FREE (ptr->live_base_partitions[x]);
- BITMAP_FREE (ptr->live_base_var);
+ bitmap_obstack_release (&ptr->obstack);
free (ptr->live_base_partitions);
free (ptr);
}
@@ -924,34 +921,6 @@ print_exprs (FILE *f, const char *str1, tree expr1, const char *str2,
}
-/* Called if a coalesce across and abnormal edge cannot be performed. PHI is
- the phi node at fault, I is the argument index at fault. A message is
- printed and compilation is then terminated. */
-
-static inline void
-abnormal_corrupt (gimple phi, int i)
-{
- edge e = gimple_phi_arg_edge (phi, i);
- tree res = gimple_phi_result (phi);
- tree arg = gimple_phi_arg_def (phi, i);
-
- fprintf (stderr, " Corrupt SSA across abnormal edge BB%d->BB%d\n",
- e->src->index, e->dest->index);
- fprintf (stderr, "Argument %d (", i);
- print_generic_expr (stderr, arg, TDF_SLIM);
- if (TREE_CODE (arg) != SSA_NAME)
- fprintf (stderr, ") is not an SSA_NAME.\n");
- else
- {
- gcc_assert (SSA_NAME_VAR (res) != SSA_NAME_VAR (arg));
- fprintf (stderr, ") does not have the same base variable as the result ");
- print_generic_stmt (stderr, res, TDF_SLIM);
- }
-
- internal_error ("SSA corruption");
-}
-
-
/* Print a failure to coalesce a MUST_COALESCE pair X and Y. */
static inline void
@@ -983,14 +952,6 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
int v1, v2, cost;
unsigned i;
-#ifdef ENABLE_CHECKING
- bitmap used_in_real_ops;
- bitmap used_in_virtual_ops;
-
- used_in_real_ops = BITMAP_ALLOC (NULL);
- used_in_virtual_ops = BITMAP_ALLOC (NULL);
-#endif
-
map = init_var_map (num_ssa_names);
FOR_EACH_BB (bb)
@@ -1015,25 +976,25 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
{
edge e = gimple_phi_arg_edge (phi, i);
arg = PHI_ARG_DEF (phi, i);
- if (TREE_CODE (arg) == SSA_NAME)
- register_ssa_partition (map, arg);
- if (TREE_CODE (arg) == SSA_NAME
- && SSA_NAME_VAR (arg) == SSA_NAME_VAR (res))
- {
+ if (TREE_CODE (arg) != SSA_NAME)
+ continue;
+
+ register_ssa_partition (map, arg);
+ if ((SSA_NAME_VAR (arg) == SSA_NAME_VAR (res)
+ && TREE_TYPE (arg) == TREE_TYPE (res))
+ || (e->flags & EDGE_ABNORMAL))
+ {
saw_copy = true;
bitmap_set_bit (used_in_copy, SSA_NAME_VERSION (arg));
if ((e->flags & EDGE_ABNORMAL) == 0)
{
int cost = coalesce_cost_edge (e);
if (cost == 1 && has_single_use (arg))
- add_cost_one_coalesce (cl, ver, SSA_NAME_VERSION (arg));
+ add_cost_one_coalesce (cl, ver, SSA_NAME_VERSION (arg));
else
add_coalesce (cl, ver, SSA_NAME_VERSION (arg), cost);
}
}
- else
- if (e->flags & EDGE_ABNORMAL)
- abnormal_corrupt (phi, i);
}
if (saw_copy)
bitmap_set_bit (used_in_copy, ver);
@@ -1061,7 +1022,8 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
if (gimple_assign_copy_p (stmt)
&& TREE_CODE (lhs) == SSA_NAME
&& TREE_CODE (rhs1) == SSA_NAME
- && SSA_NAME_VAR (lhs) == SSA_NAME_VAR (rhs1))
+ && SSA_NAME_VAR (lhs) == SSA_NAME_VAR (rhs1)
+ && TREE_TYPE (lhs) == TREE_TYPE (rhs1))
{
v1 = SSA_NAME_VERSION (lhs);
v2 = SSA_NAME_VERSION (rhs1);
@@ -1081,10 +1043,11 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
noutputs = gimple_asm_noutputs (stmt);
ninputs = gimple_asm_ninputs (stmt);
outputs = (tree *) alloca (noutputs * sizeof (tree));
- for (i = 0; i < noutputs; ++i) {
- link = gimple_asm_output_op (stmt, i);
- outputs[i] = TREE_VALUE (link);
- }
+ for (i = 0; i < noutputs; ++i)
+ {
+ link = gimple_asm_output_op (stmt, i);
+ outputs[i] = TREE_VALUE (link);
+ }
for (i = 0; i < ninputs; ++i)
{
@@ -1111,7 +1074,8 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
v1 = SSA_NAME_VERSION (outputs[match]);
v2 = SSA_NAME_VERSION (input);
- if (SSA_NAME_VAR (outputs[match]) == SSA_NAME_VAR (input))
+ if (SSA_NAME_VAR (outputs[match]) == SSA_NAME_VAR (input)
+ && TREE_TYPE (outputs[match]) == TREE_TYPE (input))
{
cost = coalesce_cost (REG_BR_PROB_BASE,
optimize_bb_for_size_p (bb));
@@ -1126,17 +1090,6 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
default:
break;
}
-
-#ifdef ENABLE_CHECKING
- /* Mark real uses and defs. */
- FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, (SSA_OP_DEF|SSA_OP_USE))
- bitmap_set_bit (used_in_real_ops, DECL_UID (SSA_NAME_VAR (var)));
-
- /* Validate that virtual ops don't get used in funny ways. */
- if (gimple_vuse (stmt))
- bitmap_set_bit (used_in_virtual_ops,
- DECL_UID (SSA_NAME_VAR (gimple_vuse (stmt))));
-#endif /* ENABLE_CHECKING */
}
}
@@ -1146,16 +1099,18 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
for (i = 1; i < num_ssa_names; i++)
{
var = ssa_name (i);
- if (var != NULL_TREE && is_gimple_reg (var))
+ if (var != NULL_TREE && !virtual_operand_p (var))
{
/* Add coalesces between all the result decls. */
- if (TREE_CODE (SSA_NAME_VAR (var)) == RESULT_DECL)
+ if (SSA_NAME_VAR (var)
+ && TREE_CODE (SSA_NAME_VAR (var)) == RESULT_DECL)
{
if (first == NULL_TREE)
first = var;
else
{
- gcc_assert (SSA_NAME_VAR (var) == SSA_NAME_VAR (first));
+ gcc_assert (SSA_NAME_VAR (var) == SSA_NAME_VAR (first)
+ && TREE_TYPE (var) == TREE_TYPE (first));
v1 = SSA_NAME_VERSION (first);
v2 = SSA_NAME_VERSION (var);
bitmap_set_bit (used_in_copy, v1);
@@ -1167,33 +1122,12 @@ create_outofssa_var_map (coalesce_list_p cl, bitmap used_in_copy)
/* Mark any default_def variables as being in the coalesce list
since they will have to be coalesced with the base variable. If
not marked as present, they won't be in the coalesce view. */
- if (gimple_default_def (cfun, SSA_NAME_VAR (var)) == var
+ if (SSA_NAME_IS_DEFAULT_DEF (var)
&& !has_zero_uses (var))
bitmap_set_bit (used_in_copy, SSA_NAME_VERSION (var));
}
}
-#if defined ENABLE_CHECKING
- {
- unsigned i;
- bitmap both = BITMAP_ALLOC (NULL);
- bitmap_and (both, used_in_real_ops, used_in_virtual_ops);
- if (!bitmap_empty_p (both))
- {
- bitmap_iterator bi;
-
- EXECUTE_IF_SET_IN_BITMAP (both, 0, i, bi)
- fprintf (stderr, "Variable %s used in real and virtual operands\n",
- get_name (referenced_var (i)));
- internal_error ("SSA corruption");
- }
-
- BITMAP_FREE (used_in_real_ops);
- BITMAP_FREE (used_in_virtual_ops);
- BITMAP_FREE (both);
- }
-#endif
-
return map;
}
@@ -1296,9 +1230,6 @@ coalesce_partitions (var_map map, ssa_conflicts_p graph, coalesce_list_p cl,
int v1 = SSA_NAME_VERSION (res);
int v2 = SSA_NAME_VERSION (arg);
- if (SSA_NAME_VAR (arg) != SSA_NAME_VAR (res))
- abnormal_corrupt (phi, e->dest_idx);
-
if (debug)
fprintf (debug, "Abnormal coalesce: ");
@@ -1316,7 +1247,8 @@ coalesce_partitions (var_map map, ssa_conflicts_p graph, coalesce_list_p cl,
var2 = ssa_name (y);
/* Assert the coalesces have the same base variable. */
- gcc_assert (SSA_NAME_VAR (var1) == SSA_NAME_VAR (var2));
+ gcc_assert (SSA_NAME_VAR (var1) == SSA_NAME_VAR (var2)
+ && TREE_TYPE (var1) == TREE_TYPE (var2));
if (debug)
fprintf (debug, "Coalesce list: ");
@@ -1324,25 +1256,29 @@ coalesce_partitions (var_map map, ssa_conflicts_p graph, coalesce_list_p cl,
}
}
-/* Returns a hash code for P. */
-static hashval_t
-hash_ssa_name_by_var (const void *p)
+/* Hashtable support for storing SSA names hashed by their SSA_NAME_VAR. */
+
+struct ssa_name_var_hash : typed_noop_remove <union tree_node>
{
- const_tree n = (const_tree) p;
- return (hashval_t) htab_hash_pointer (SSA_NAME_VAR (n));
-}
+ typedef union tree_node T;
+ static inline hashval_t hash (const_tree);
+ static inline int equal (const_tree, const_tree);
+};
-/* Returns nonzero if P1 and P2 are equal. */
+inline hashval_t
+ssa_name_var_hash::hash (const_tree n)
+{
+ return DECL_UID (SSA_NAME_VAR (n));
+}
-static int
-eq_ssa_name_by_var (const void *p1, const void *p2)
+inline int
+ssa_name_var_hash::equal (const_tree n1, const_tree n2)
{
- const_tree n1 = (const_tree) p1;
- const_tree n2 = (const_tree) p2;
return SSA_NAME_VAR (n1) == SSA_NAME_VAR (n2);
}
+
/* Reduce the number of copies by coalescing variables in the function. Return
a partition map with the resulting coalesces. */
@@ -1355,7 +1291,7 @@ coalesce_ssa_name (void)
bitmap used_in_copies = BITMAP_ALLOC (NULL);
var_map map;
unsigned int i;
- static htab_t ssa_name_hash;
+ static hash_table <ssa_name_var_hash> ssa_name_hash;
cl = create_coalesce_list ();
map = create_outofssa_var_map (cl, used_in_copies);
@@ -1364,8 +1300,7 @@ coalesce_ssa_name (void)
so debug info remains undisturbed. */
if (!optimize)
{
- ssa_name_hash = htab_create (10, hash_ssa_name_by_var,
- eq_ssa_name_by_var, NULL);
+ ssa_name_hash.create (10);
for (i = 1; i < num_ssa_names; i++)
{
tree a = ssa_name (i);
@@ -1375,7 +1310,7 @@ coalesce_ssa_name (void)
&& !DECL_IGNORED_P (SSA_NAME_VAR (a))
&& (!has_zero_uses (a) || !SSA_NAME_IS_DEFAULT_DEF (a)))
{
- tree *slot = (tree *) htab_find_slot (ssa_name_hash, a, INSERT);
+ tree *slot = ssa_name_hash.find_slot (a, INSERT);
if (!*slot)
*slot = a;
@@ -1388,7 +1323,7 @@ coalesce_ssa_name (void)
}
}
}
- htab_delete (ssa_name_hash);
+ ssa_name_hash.dispose ();
}
if (dump_file && (dump_flags & TDF_DETAILS))
dump_var_map (dump_file, map);
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c
index 696f3f33a22..04a376ed970 100644
--- a/gcc/tree-ssa-copy.c
+++ b/gcc/tree-ssa-copy.c
@@ -27,10 +27,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "function.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
-#include "timevar.h"
-#include "tree-dump.h"
#include "tree-flow.h"
#include "tree-pass.h"
#include "tree-ssa-propagate.h"
@@ -77,10 +74,10 @@ may_propagate_copy (tree dest, tree orig)
return false;
/* Propagating virtual operands is always ok. */
- if (TREE_CODE (dest) == SSA_NAME && !is_gimple_reg (dest))
+ if (TREE_CODE (dest) == SSA_NAME && virtual_operand_p (dest))
{
/* But only between virtual operands. */
- gcc_assert (TREE_CODE (orig) == SSA_NAME && !is_gimple_reg (orig));
+ gcc_assert (TREE_CODE (orig) == SSA_NAME && virtual_operand_p (orig));
return true;
}
@@ -140,12 +137,9 @@ may_propagate_copy_into_stmt (gimple dest, tree orig)
/* Similarly, but we know that we're propagating into an ASM_EXPR. */
bool
-may_propagate_copy_into_asm (tree dest)
+may_propagate_copy_into_asm (tree dest ATTRIBUTE_UNUSED)
{
- /* Hard register operands of asms are special. Do not bypass. */
- return !(TREE_CODE (dest) == SSA_NAME
- && TREE_CODE (SSA_NAME_VAR (dest)) == VAR_DECL
- && DECL_HARD_REGISTER (SSA_NAME_VAR (dest)));
+ return true;
}
@@ -676,7 +670,7 @@ init_copy_prop (void)
FOR_EACH_BB (bb)
{
gimple_stmt_iterator si;
- int depth = bb->loop_depth;
+ int depth = bb_loop_depth (bb);
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
{
@@ -719,7 +713,7 @@ init_copy_prop (void)
tree def;
def = gimple_phi_result (phi);
- if (!is_gimple_reg (def))
+ if (virtual_operand_p (def))
prop_set_simulate_again (phi, false);
else
prop_set_simulate_again (phi, true);
diff --git a/gcc/tree-ssa-copyrename.c b/gcc/tree-ssa-copyrename.c
index 6ee8380a9a1..387e67bce6e 100644
--- a/gcc/tree-ssa-copyrename.c
+++ b/gcc/tree-ssa-copyrename.c
@@ -33,9 +33,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "gimple.h"
#include "tree-inline.h"
-#include "timevar.h"
#include "hashtab.h"
-#include "tree-dump.h"
#include "tree-ssa-live.h"
#include "tree-pass.h"
#include "langhooks.h"
@@ -145,11 +143,6 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
gcc_assert (p1 != NO_PARTITION);
gcc_assert (p2 != NO_PARTITION);
- rep1 = partition_to_var (map, p1);
- rep2 = partition_to_var (map, p2);
- root1 = SSA_NAME_VAR (rep1);
- root2 = SSA_NAME_VAR (rep2);
-
if (p1 == p2)
{
if (debug)
@@ -157,6 +150,13 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
return false;
}
+ rep1 = partition_to_var (map, p1);
+ rep2 = partition_to_var (map, p2);
+ root1 = SSA_NAME_VAR (rep1);
+ root2 = SSA_NAME_VAR (rep2);
+ if (!root1 && !root2)
+ return false;
+
/* Don't coalesce if one of the variables occurs in an abnormal PHI. */
abnorm = (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rep1)
|| SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rep2));
@@ -177,22 +177,24 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
}
/* Never attempt to coalesce 2 different parameters. */
- if (TREE_CODE (root1) == PARM_DECL && TREE_CODE (root2) == PARM_DECL)
+ if ((root1 && TREE_CODE (root1) == PARM_DECL)
+ && (root2 && TREE_CODE (root2) == PARM_DECL))
{
if (debug)
fprintf (debug, " : 2 different PARM_DECLS. No coalesce.\n");
return false;
}
- if ((TREE_CODE (root1) == RESULT_DECL) != (TREE_CODE (root2) == RESULT_DECL))
+ if ((root1 && TREE_CODE (root1) == RESULT_DECL)
+ != (root2 && TREE_CODE (root2) == RESULT_DECL))
{
if (debug)
fprintf (debug, " : One root a RESULT_DECL. No coalesce.\n");
return false;
}
- ign1 = TREE_CODE (root1) == VAR_DECL && DECL_IGNORED_P (root1);
- ign2 = TREE_CODE (root2) == VAR_DECL && DECL_IGNORED_P (root2);
+ ign1 = !root1 || (TREE_CODE (root1) == VAR_DECL && DECL_IGNORED_P (root1));
+ ign2 = !root2 || (TREE_CODE (root2) == VAR_DECL && DECL_IGNORED_P (root2));
/* Refrain from coalescing user variables, if requested. */
if (!ign1 && !ign2)
@@ -213,9 +215,9 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
/* If both values have default defs, we can't coalesce. If only one has a
tag, make sure that variable is the new root partition. */
- if (gimple_default_def (cfun, root1))
+ if (root1 && ssa_default_def (cfun, root1))
{
- if (gimple_default_def (cfun, root2))
+ if (root2 && ssa_default_def (cfun, root2))
{
if (debug)
fprintf (debug, " : 2 default defs. No coalesce.\n");
@@ -227,18 +229,28 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
ign1 = false;
}
}
- else if (gimple_default_def (cfun, root2))
+ else if (root2 && ssa_default_def (cfun, root2))
{
ign1 = true;
ign2 = false;
}
+ /* Do not coalesce if we cannot assign a symbol to the partition. */
+ if (!(!ign2 && root2)
+ && !(!ign1 && root1))
+ {
+ if (debug)
+ fprintf (debug, " : Choosen variable has no root. No coalesce.\n");
+ return false;
+ }
+
/* Don't coalesce if the new chosen root variable would be read-only.
If both ign1 && ign2, then the root var of the larger partition
wins, so reject in that case if any of the root vars is TREE_READONLY.
Otherwise reject only if the root var, on which replace_ssa_name_symbol
will be called below, is readonly. */
- if ((TREE_READONLY (root1) && ign2) || (TREE_READONLY (root2) && ign1))
+ if (((root1 && TREE_READONLY (root1)) && ign2)
+ || ((root2 && TREE_READONLY (root2)) && ign1))
{
if (debug)
fprintf (debug, " : Readonly variable. No coalesce.\n");
@@ -246,12 +258,12 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
}
/* Don't coalesce if the two variables aren't type compatible . */
- if (!types_compatible_p (TREE_TYPE (root1), TREE_TYPE (root2))
+ if (!types_compatible_p (TREE_TYPE (var1), TREE_TYPE (var2))
/* There is a disconnect between the middle-end type-system and
VRP, avoid coalescing enum types with different bounds. */
- || ((TREE_CODE (TREE_TYPE (root1)) == ENUMERAL_TYPE
- || TREE_CODE (TREE_TYPE (root2)) == ENUMERAL_TYPE)
- && TREE_TYPE (root1) != TREE_TYPE (root2)))
+ || ((TREE_CODE (TREE_TYPE (var1)) == ENUMERAL_TYPE
+ || TREE_CODE (TREE_TYPE (var2)) == ENUMERAL_TYPE)
+ && TREE_TYPE (var1) != TREE_TYPE (var2)))
{
if (debug)
fprintf (debug, " : Incompatible types. No coalesce.\n");
@@ -263,10 +275,12 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
/* Set the root variable of the partition to the better choice, if there is
one. */
- if (!ign2)
+ if (!ign2 && root2)
replace_ssa_name_symbol (partition_to_var (map, p3), root2);
- else if (!ign1)
+ else if (!ign1 && root1)
replace_ssa_name_symbol (partition_to_var (map, p3), root1);
+ else
+ gcc_unreachable ();
if (debug)
{
@@ -334,15 +348,53 @@ rename_ssa_copies (void)
res = gimple_phi_result (phi);
/* Do not process virtual SSA_NAMES. */
- if (!is_gimple_reg (SSA_NAME_VAR (res)))
+ if (virtual_operand_p (res))
continue;
- for (i = 0; i < gimple_phi_num_args (phi); i++)
- {
- tree arg = gimple_phi_arg (phi, i)->def;
- if (TREE_CODE (arg) == SSA_NAME)
- updated |= copy_rename_partition_coalesce (map, res, arg, debug);
- }
+ /* Make sure to only use the same partition for an argument
+ as the result but never the other way around. */
+ if (SSA_NAME_VAR (res)
+ && !DECL_IGNORED_P (SSA_NAME_VAR (res)))
+ for (i = 0; i < gimple_phi_num_args (phi); i++)
+ {
+ tree arg = PHI_ARG_DEF (phi, i);
+ if (TREE_CODE (arg) == SSA_NAME)
+ updated |= copy_rename_partition_coalesce (map, res, arg,
+ debug);
+ }
+ /* Else if all arguments are in the same partition try to merge
+ it with the result. */
+ else
+ {
+ int all_p_same = -1;
+ int p = -1;
+ for (i = 0; i < gimple_phi_num_args (phi); i++)
+ {
+ tree arg = PHI_ARG_DEF (phi, i);
+ if (TREE_CODE (arg) != SSA_NAME)
+ {
+ all_p_same = 0;
+ break;
+ }
+ else if (all_p_same == -1)
+ {
+ p = partition_find (map->var_partition,
+ SSA_NAME_VERSION (arg));
+ all_p_same = 1;
+ }
+ else if (all_p_same == 1
+ && p != partition_find (map->var_partition,
+ SSA_NAME_VERSION (arg)))
+ {
+ all_p_same = 0;
+ break;
+ }
+ }
+ if (all_p_same == 1)
+ updated |= copy_rename_partition_coalesce (map, res,
+ PHI_ARG_DEF (phi, 0),
+ debug);
+ }
}
}
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index 8763cfb28d2..0112fc4c1c3 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -49,14 +49,11 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "basic-block.h"
#include "tree-flow.h"
#include "gimple.h"
-#include "tree-dump.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "flags.h"
#include "cfgloop.h"
#include "tree-scalar-evolution.h"
@@ -723,7 +720,7 @@ propagate_necessity (struct edge_list *el)
if (gimple_code (stmt) == GIMPLE_PHI
/* We do not process virtual PHI nodes nor do we track their
necessity. */
- && is_gimple_reg (gimple_phi_result (stmt)))
+ && !virtual_operand_p (gimple_phi_result (stmt)))
{
/* PHI nodes are somewhat special in that each PHI alternative has
data and control dependencies. All the statements feeding the
@@ -998,31 +995,32 @@ propagate_necessity (struct edge_list *el)
}
/* Replace all uses of NAME by underlying variable and mark it
- for renaming. */
+ for renaming. This assumes the defining statement of NAME is
+ going to be removed. */
void
mark_virtual_operand_for_renaming (tree name)
{
+ tree name_var = SSA_NAME_VAR (name);
bool used = false;
imm_use_iterator iter;
use_operand_p use_p;
gimple stmt;
- tree name_var;
- name_var = SSA_NAME_VAR (name);
+ gcc_assert (VAR_DECL_IS_VIRTUAL_OPERAND (name_var));
FOR_EACH_IMM_USE_STMT (stmt, iter, name)
{
FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
SET_USE (use_p, name_var);
- update_stmt (stmt);
used = true;
}
if (used)
- mark_sym_for_renaming (name_var);
+ mark_virtual_operands_for_renaming (cfun);
}
-/* Replace all uses of result of PHI by underlying variable and mark it
- for renaming. */
+/* Replace all uses of the virtual PHI result by its underlying variable
+ and mark it for renaming. This assumes the PHI node is going to be
+ removed. */
void
mark_virtual_phi_result_for_renaming (gimple phi)
@@ -1054,7 +1052,7 @@ remove_dead_phis (basic_block bb)
/* We do not track necessity of virtual PHI nodes. Instead do
very simple dead PHI removal here. */
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
{
/* Virtual PHI nodes with one or identical arguments
can be removed. */
@@ -1132,7 +1130,7 @@ forward_edge_to_pdom (edge e, basic_block post_dom_bb)
/* PHIs for virtuals have no control dependency relation on them.
We are lost here and must force renaming of the symbol. */
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
{
mark_virtual_phi_result_for_renaming (phi);
remove_phi_node (&gsi, true);
@@ -1393,7 +1391,7 @@ eliminate_unnecessary_stmts (void)
|| !(bb->flags & BB_REACHABLE))
{
for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- if (!is_gimple_reg (gimple_phi_result (gsi_stmt (gsi))))
+ if (virtual_operand_p (gimple_phi_result (gsi_stmt (gsi))))
{
bool found = false;
imm_use_iterator iter;
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index 19a1c7b01a2..4a89df25fbb 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -29,10 +29,7 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "cfgloop.h"
#include "function.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
-#include "timevar.h"
-#include "tree-dump.h"
#include "tree-flow.h"
#include "domwalk.h"
#include "tree-pass.h"
@@ -652,19 +649,24 @@ print_expr_hash_elt (FILE * stream, const struct expr_hash_elt *element)
}
}
-/* Delete an expr_hash_elt and reclaim its storage. */
+/* Delete variable sized pieces of the expr_hash_elt ELEMENT. */
static void
-free_expr_hash_elt (void *elt)
+free_expr_hash_elt_contents (struct expr_hash_elt *element)
{
- struct expr_hash_elt *element = ((struct expr_hash_elt *)elt);
-
if (element->expr.kind == EXPR_CALL)
free (element->expr.ops.call.args);
-
- if (element->expr.kind == EXPR_PHI)
+ else if (element->expr.kind == EXPR_PHI)
free (element->expr.ops.phi.args);
+}
+/* Delete an expr_hash_elt and reclaim its storage. */
+
+static void
+free_expr_hash_elt (void *elt)
+{
+ struct expr_hash_elt *element = ((struct expr_hash_elt *)elt);
+ free_expr_hash_elt_contents (element);
free (element);
}
@@ -1206,7 +1208,7 @@ record_cond (cond_equivalence *p)
VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack, element);
}
else
- free (element);
+ free_expr_hash_elt (element);
}
/* Build a cond_equivalence record indicating that the comparison
@@ -1394,7 +1396,7 @@ loop_depth_of_name (tree x)
if (!defbb)
return 0;
- return defbb->loop_depth;
+ return bb_loop_depth (defbb);
}
/* Record that X is equal to Y in const_and_copies. Record undo
@@ -1737,7 +1739,8 @@ dom_opt_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
/* Push a marker on the stacks of local information so that we know how
far to unwind when we finalize this block. */
- VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack, NULL);
+ VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack,
+ (expr_hash_elt_t)NULL);
VEC_safe_push (tree, heap, const_and_copies_stack, NULL_TREE);
record_equivalences_from_incoming_edge (bb);
@@ -1748,7 +1751,8 @@ dom_opt_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
/* Create equivalences from redundant PHIs. PHIs are only truly
redundant when they exist in the same block, so push another
marker and unwind right afterwards. */
- VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack, NULL);
+ VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack,
+ (expr_hash_elt_t)NULL);
for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
eliminate_redundant_computations (&gsi);
remove_local_expressions_from_table ();
@@ -1803,7 +1807,8 @@ dom_opt_leave_block (struct dom_walk_data *walk_data, basic_block bb)
/* Push a marker onto the available expression stack so that we
unwind any expressions related to the TRUE arm before processing
the false arm below. */
- VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack, NULL);
+ VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack,
+ (expr_hash_elt_t)NULL);
VEC_safe_push (tree, heap, const_and_copies_stack, NULL_TREE);
edge_info = (struct edge_info *) true_edge->aux;
@@ -2404,9 +2409,11 @@ lookup_avail_expr (gimple stmt, bool insert)
slot = htab_find_slot_with_hash (avail_exprs, &element, element.hash,
(insert ? INSERT : NO_INSERT));
if (slot == NULL)
- return NULL_TREE;
-
- if (*slot == NULL)
+ {
+ free_expr_hash_elt_contents (&element);
+ return NULL_TREE;
+ }
+ else if (*slot == NULL)
{
struct expr_hash_elt *element2 = XNEW (struct expr_hash_elt);
*element2 = element;
@@ -2422,6 +2429,8 @@ lookup_avail_expr (gimple stmt, bool insert)
VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack, element2);
return NULL_TREE;
}
+ else
+ free_expr_hash_elt_contents (&element);
/* Extract the LHS of the assignment so that it can be used as the current
definition of another variable. */
@@ -2690,18 +2699,13 @@ propagate_rhs_into_lhs (gimple stmt, tree lhs, tree rhs, bitmap interesting_name
/* Special cases to avoid useless calls into the folding
routines, operand scanning, etc.
- First, propagation into a PHI may cause the PHI to become
+ Propagation into a PHI may cause the PHI to become
a degenerate, so mark the PHI as interesting. No other
- actions are necessary.
-
- Second, if we're propagating a virtual operand and the
- propagation does not change the underlying _DECL node for
- the virtual operand, then no further actions are necessary. */
- if (gimple_code (use_stmt) == GIMPLE_PHI
- || (! is_gimple_reg (lhs)
- && TREE_CODE (rhs) == SSA_NAME
- && SSA_NAME_VAR (lhs) == SSA_NAME_VAR (rhs)))
+ actions are necessary. */
+ if (gimple_code (use_stmt) == GIMPLE_PHI)
{
+ tree result;
+
/* Dump details. */
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -2709,14 +2713,8 @@ propagate_rhs_into_lhs (gimple stmt, tree lhs, tree rhs, bitmap interesting_name
print_gimple_stmt (dump_file, use_stmt, 0, dump_flags);
}
- /* Propagation into a PHI may expose new degenerate PHIs,
- so mark the result of the PHI as interesting. */
- if (gimple_code (use_stmt) == GIMPLE_PHI)
- {
- tree result = get_lhs_or_phi_result (use_stmt);
- bitmap_set_bit (interesting_names, SSA_NAME_VERSION (result));
- }
-
+ result = get_lhs_or_phi_result (use_stmt);
+ bitmap_set_bit (interesting_names, SSA_NAME_VERSION (result));
continue;
}
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c
index 5fdba8c543b..f9a0b85fc12 100644
--- a/gcc/tree-ssa-dse.c
+++ b/gcc/tree-ssa-dse.c
@@ -26,11 +26,9 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "timevar.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
#include "tree-pass.h"
-#include "tree-dump.h"
#include "domwalk.h"
#include "flags.h"
#include "langhooks.h"
@@ -94,7 +92,7 @@ dse_possible_dead_store_p (gimple stmt, gimple *use_stmt)
temp = stmt;
do
{
- gimple use_stmt;
+ gimple use_stmt, defvar_def;
imm_use_iterator ui;
bool fail = false;
tree defvar;
@@ -108,6 +106,7 @@ dse_possible_dead_store_p (gimple stmt, gimple *use_stmt)
defvar = PHI_RESULT (temp);
else
defvar = gimple_vdef (temp);
+ defvar_def = temp;
temp = NULL;
FOR_EACH_IMM_USE_STMT (use_stmt, ui, defvar)
{
@@ -139,7 +138,14 @@ dse_possible_dead_store_p (gimple stmt, gimple *use_stmt)
fail = true;
BREAK_FROM_IMM_USE_STMT (ui);
}
- temp = use_stmt;
+ /* Do not consider the PHI as use if it dominates the
+ stmt defining the virtual operand we are processing,
+ we have processed it already in this case. */
+ if (gimple_bb (defvar_def) != gimple_bb (use_stmt)
+ && !dominated_by_p (CDI_DOMINATORS,
+ gimple_bb (defvar_def),
+ gimple_bb (use_stmt)))
+ temp = use_stmt;
}
/* If the statement is a use the store is not dead. */
else if (ref_maybe_used_by_stmt_p (use_stmt,
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 3c01623130c..532b9c5c688 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -25,15 +25,14 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "timevar.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
#include "tree-pass.h"
-#include "tree-dump.h"
#include "langhooks.h"
#include "flags.h"
#include "gimple.h"
#include "expr.h"
+#include "cfgloop.h"
/* This pass propagates the RHS of assignment statements into use
sites of the LHS of the assignment. It's basically a specialized
@@ -699,128 +698,6 @@ tidy_after_forward_propagate_addr (gimple stmt)
recompute_tree_invariant_for_addr_expr (gimple_assign_rhs1 (stmt));
}
-/* DEF_RHS contains the address of the 0th element in an array.
- USE_STMT uses type of DEF_RHS to compute the address of an
- arbitrary element within the array. The (variable) byte offset
- of the element is contained in OFFSET.
-
- We walk back through the use-def chains of OFFSET to verify that
- it is indeed computing the offset of an element within the array
- and extract the index corresponding to the given byte offset.
-
- We then try to fold the entire address expression into a form
- &array[index].
-
- If we are successful, we replace the right hand side of USE_STMT
- with the new address computation. */
-
-static bool
-forward_propagate_addr_into_variable_array_index (tree offset,
- tree def_rhs,
- gimple_stmt_iterator *use_stmt_gsi)
-{
- tree index, tunit;
- gimple offset_def, use_stmt = gsi_stmt (*use_stmt_gsi);
- tree new_rhs, tmp;
-
- if (TREE_CODE (TREE_OPERAND (def_rhs, 0)) == ARRAY_REF)
- tunit = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (def_rhs)));
- else if (TREE_CODE (TREE_TYPE (TREE_OPERAND (def_rhs, 0))) == ARRAY_TYPE)
- tunit = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (TREE_TYPE (def_rhs))));
- else
- return false;
- if (!host_integerp (tunit, 1))
- return false;
-
- /* Get the offset's defining statement. */
- offset_def = SSA_NAME_DEF_STMT (offset);
-
- /* Try to find an expression for a proper index. This is either a
- multiplication expression by the element size or just the ssa name we came
- along in case the element size is one. In that case, however, we do not
- allow multiplications because they can be computing index to a higher
- level dimension (PR 37861). */
- if (integer_onep (tunit))
- {
- if (is_gimple_assign (offset_def)
- && gimple_assign_rhs_code (offset_def) == MULT_EXPR)
- return false;
-
- index = offset;
- }
- else
- {
- /* The statement which defines OFFSET before type conversion
- must be a simple GIMPLE_ASSIGN. */
- if (!is_gimple_assign (offset_def))
- return false;
-
- /* The RHS of the statement which defines OFFSET must be a
- multiplication of an object by the size of the array elements.
- This implicitly verifies that the size of the array elements
- is constant. */
- if (gimple_assign_rhs_code (offset_def) == MULT_EXPR
- && TREE_CODE (gimple_assign_rhs2 (offset_def)) == INTEGER_CST
- && tree_int_cst_equal (gimple_assign_rhs2 (offset_def), tunit))
- {
- /* The first operand to the MULT_EXPR is the desired index. */
- index = gimple_assign_rhs1 (offset_def);
- }
- /* If we have idx * tunit + CST * tunit re-associate that. */
- else if ((gimple_assign_rhs_code (offset_def) == PLUS_EXPR
- || gimple_assign_rhs_code (offset_def) == MINUS_EXPR)
- && TREE_CODE (gimple_assign_rhs1 (offset_def)) == SSA_NAME
- && TREE_CODE (gimple_assign_rhs2 (offset_def)) == INTEGER_CST
- && (tmp = div_if_zero_remainder (EXACT_DIV_EXPR,
- gimple_assign_rhs2 (offset_def),
- tunit)) != NULL_TREE)
- {
- gimple offset_def2 = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (offset_def));
- if (is_gimple_assign (offset_def2)
- && gimple_assign_rhs_code (offset_def2) == MULT_EXPR
- && TREE_CODE (gimple_assign_rhs2 (offset_def2)) == INTEGER_CST
- && tree_int_cst_equal (gimple_assign_rhs2 (offset_def2), tunit))
- {
- index = fold_build2 (gimple_assign_rhs_code (offset_def),
- TREE_TYPE (offset),
- gimple_assign_rhs1 (offset_def2), tmp);
- }
- else
- return false;
- }
- else
- return false;
- }
-
- /* Replace the pointer addition with array indexing. */
- index = force_gimple_operand_gsi (use_stmt_gsi, index, true, NULL_TREE,
- true, GSI_SAME_STMT);
- if (TREE_CODE (TREE_OPERAND (def_rhs, 0)) == ARRAY_REF)
- {
- new_rhs = unshare_expr (def_rhs);
- TREE_OPERAND (TREE_OPERAND (new_rhs, 0), 1) = index;
- }
- else
- {
- new_rhs = build4 (ARRAY_REF, TREE_TYPE (TREE_TYPE (TREE_TYPE (def_rhs))),
- unshare_expr (TREE_OPERAND (def_rhs, 0)),
- index, integer_zero_node, NULL_TREE);
- new_rhs = build_fold_addr_expr (new_rhs);
- if (!useless_type_conversion_p (TREE_TYPE (gimple_assign_lhs (use_stmt)),
- TREE_TYPE (new_rhs)))
- {
- new_rhs = force_gimple_operand_gsi (use_stmt_gsi, new_rhs, true,
- NULL_TREE, true, GSI_SAME_STMT);
- new_rhs = fold_convert (TREE_TYPE (gimple_assign_lhs (use_stmt)),
- new_rhs);
- }
- }
- gimple_assign_set_rhs_from_tree (use_stmt_gsi, new_rhs);
- fold_stmt (use_stmt_gsi);
- tidy_after_forward_propagate_addr (gsi_stmt (*use_stmt_gsi));
- return true;
-}
-
/* NAME is a SSA_NAME representing DEF_RHS which is of the form
ADDR_EXPR <whatever>.
@@ -1113,19 +990,6 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
return true;
}
- /* Try to optimize &x[0] p+ OFFSET where OFFSET is defined by
- converting a multiplication of an index by the size of the
- array elements, then the result is converted into the proper
- type for the arithmetic. */
- if (TREE_CODE (rhs2) == SSA_NAME
- && (TREE_CODE (array_ref) != ARRAY_REF
- || integer_zerop (TREE_OPERAND (array_ref, 1)))
- && useless_type_conversion_p (TREE_TYPE (name), TREE_TYPE (def_rhs))
- /* Avoid problems with IVopts creating PLUS_EXPRs with a
- different type than their operands. */
- && useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (def_rhs)))
- return forward_propagate_addr_into_variable_array_index (rhs2, def_rhs,
- use_stmt_gsi);
return false;
}
@@ -1139,7 +1003,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
static bool
forward_propagate_addr_expr (tree name, tree rhs)
{
- int stmt_loop_depth = gimple_bb (SSA_NAME_DEF_STMT (name))->loop_depth;
+ int stmt_loop_depth = bb_loop_depth (gimple_bb (SSA_NAME_DEF_STMT (name)));
imm_use_iterator iter;
gimple use_stmt;
bool all = true;
@@ -1162,7 +1026,7 @@ forward_propagate_addr_expr (tree name, tree rhs)
/* If the use is in a deeper loop nest, then we do not want
to propagate non-invariant ADDR_EXPRs into the loop as that
is likely adding expression evaluations into the loop. */
- if (gimple_bb (use_stmt)->loop_depth > stmt_loop_depth
+ if (bb_loop_depth (gimple_bb (use_stmt)) > stmt_loop_depth
&& !is_gimple_min_invariant (rhs))
{
all = false;
@@ -1690,7 +1554,7 @@ simplify_builtin_call (gimple_stmt_iterator *gsi_p, tree callee2)
else
src_buf[0] = tree_low_cst (src1, 0);
memset (src_buf + tree_low_cst (diff, 1),
- tree_low_cst (val2, 1), tree_low_cst (len2, 1));
+ tree_low_cst (val2, 0), tree_low_cst (len2, 1));
src_buf[src_len] = '\0';
/* Neither builtin_strncpy_read_str nor builtin_memcpy_read_str
handle embedded '\0's. */
@@ -1943,14 +1807,12 @@ simplify_bitwise_binary (gimple_stmt_iterator *gsi)
&& int_fits_type_p (arg2, TREE_TYPE (def1_arg1)))
{
gimple newop;
- tree tem = create_tmp_reg (TREE_TYPE (def1_arg1), NULL);
+ tree tem = make_ssa_name (TREE_TYPE (def1_arg1), NULL);
newop =
gimple_build_assign_with_ops (code, tem, def1_arg1,
fold_convert_loc (gimple_location (stmt),
TREE_TYPE (def1_arg1),
arg2));
- tem = make_ssa_name (tem, newop);
- gimple_assign_set_lhs (newop, tem);
gimple_set_location (newop, gimple_location (stmt));
gsi_insert_before (gsi, newop, GSI_SAME_STMT);
gimple_assign_set_rhs_with_ops_1 (gsi, NOP_EXPR,
@@ -1976,11 +1838,8 @@ simplify_bitwise_binary (gimple_stmt_iterator *gsi)
!= GET_MODE_PRECISION (TYPE_MODE (TREE_TYPE (arg1))))))
{
gimple newop;
- tree tem = create_tmp_reg (TREE_TYPE (def1_arg1),
- NULL);
+ tree tem = make_ssa_name (TREE_TYPE (def1_arg1), NULL);
newop = gimple_build_assign_with_ops (code, tem, def1_arg1, def2_arg1);
- tem = make_ssa_name (tem, newop);
- gimple_assign_set_lhs (newop, tem);
gimple_set_location (newop, gimple_location (stmt));
gsi_insert_before (gsi, newop, GSI_SAME_STMT);
gimple_assign_set_rhs_with_ops_1 (gsi, NOP_EXPR,
@@ -2022,10 +1881,8 @@ simplify_bitwise_binary (gimple_stmt_iterator *gsi)
{
gimple newop;
tree tem;
- tem = create_tmp_reg (TREE_TYPE (arg2), NULL);
+ tem = make_ssa_name (TREE_TYPE (arg2), NULL);
newop = gimple_build_assign_with_ops (code, tem, a, c);
- tem = make_ssa_name (tem, newop);
- gimple_assign_set_lhs (newop, tem);
gimple_set_location (newop, gimple_location (stmt));
/* Make sure to re-process the new stmt as it's walking upwards. */
gsi_insert_before (gsi, newop, GSI_NEW_STMT);
@@ -2053,11 +1910,9 @@ simplify_bitwise_binary (gimple_stmt_iterator *gsi)
update_stmt (stmt);
return true;
}
- tem = create_tmp_reg (TREE_TYPE (arg2), NULL);
+ tem = make_ssa_name (TREE_TYPE (arg2), NULL);
newop = gimple_build_assign_with_ops (BIT_AND_EXPR,
tem, def1_arg1, arg2);
- tem = make_ssa_name (tem, newop);
- gimple_assign_set_lhs (newop, tem);
gimple_set_location (newop, gimple_location (stmt));
/* Make sure to re-process the new stmt as it's walking upwards. */
gsi_insert_before (gsi, newop, GSI_NEW_STMT);
@@ -2474,6 +2329,59 @@ out:
return false;
}
+/* Associate operands of a POINTER_PLUS_EXPR assignmen at *GSI. Returns
+ true if anything changed, false otherwise. */
+
+static bool
+associate_pointerplus (gimple_stmt_iterator *gsi)
+{
+ gimple stmt = gsi_stmt (*gsi);
+ gimple def_stmt;
+ tree ptr, rhs, algn;
+
+ /* Pattern match
+ tem = (sizetype) ptr;
+ tem = tem & algn;
+ tem = -tem;
+ ... = ptr p+ tem;
+ and produce the simpler and easier to analyze with respect to alignment
+ ... = ptr & ~algn; */
+ ptr = gimple_assign_rhs1 (stmt);
+ rhs = gimple_assign_rhs2 (stmt);
+ if (TREE_CODE (rhs) != SSA_NAME)
+ return false;
+ def_stmt = SSA_NAME_DEF_STMT (rhs);
+ if (!is_gimple_assign (def_stmt)
+ || gimple_assign_rhs_code (def_stmt) != NEGATE_EXPR)
+ return false;
+ rhs = gimple_assign_rhs1 (def_stmt);
+ if (TREE_CODE (rhs) != SSA_NAME)
+ return false;
+ def_stmt = SSA_NAME_DEF_STMT (rhs);
+ if (!is_gimple_assign (def_stmt)
+ || gimple_assign_rhs_code (def_stmt) != BIT_AND_EXPR)
+ return false;
+ rhs = gimple_assign_rhs1 (def_stmt);
+ algn = gimple_assign_rhs2 (def_stmt);
+ if (TREE_CODE (rhs) != SSA_NAME
+ || TREE_CODE (algn) != INTEGER_CST)
+ return false;
+ def_stmt = SSA_NAME_DEF_STMT (rhs);
+ if (!is_gimple_assign (def_stmt)
+ || !CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt)))
+ return false;
+ if (gimple_assign_rhs1 (def_stmt) != ptr)
+ return false;
+
+ algn = double_int_to_tree (TREE_TYPE (ptr),
+ double_int_not (tree_to_double_int (algn)));
+ gimple_assign_set_rhs_with_ops (gsi, BIT_AND_EXPR, ptr, algn);
+ fold_stmt_inplace (gsi);
+ update_stmt (stmt);
+
+ return true;
+}
+
/* Combine two conversions in a row for the second conversion at *GSI.
Returns 1 if there were any changes made, 2 if cfg-cleanup needs to
run. Else it returns 0. */
@@ -2533,6 +2441,11 @@ combine_conversions (gimple_stmt_iterator *gsi)
unsigned int final_prec = TYPE_PRECISION (type);
int final_unsignedp = TYPE_UNSIGNED (type);
+ /* Don't propagate ssa names that occur in abnormal phis. */
+ if (TREE_CODE (defop0) == SSA_NAME
+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (defop0))
+ return 0;
+
/* In addition to the cases of two conversions in a row
handled below, if we are converting something to its own
type via an object of identical or wider precision, neither
@@ -2664,6 +2577,95 @@ combine_conversions (gimple_stmt_iterator *gsi)
return 0;
}
+/* Determine whether applying the 2 permutations (mask1 then mask2)
+ gives back one of the input. */
+
+static int
+is_combined_permutation_identity (tree mask1, tree mask2)
+{
+ tree mask;
+ unsigned int nelts, i, j;
+ bool maybe_identity1 = true;
+ bool maybe_identity2 = true;
+
+ gcc_checking_assert (TREE_CODE (mask1) == VECTOR_CST
+ && TREE_CODE (mask2) == VECTOR_CST);
+ mask = fold_ternary (VEC_PERM_EXPR, TREE_TYPE (mask1), mask1, mask1, mask2);
+ gcc_assert (TREE_CODE (mask) == VECTOR_CST);
+
+ nelts = VECTOR_CST_NELTS (mask);
+ for (i = 0; i < nelts; i++)
+ {
+ tree val = VECTOR_CST_ELT (mask, i);
+ gcc_assert (TREE_CODE (val) == INTEGER_CST);
+ j = TREE_INT_CST_LOW (val) & (2 * nelts - 1);
+ if (j == i)
+ maybe_identity2 = false;
+ else if (j == i + nelts)
+ maybe_identity1 = false;
+ else
+ return 0;
+ }
+ return maybe_identity1 ? 1 : maybe_identity2 ? 2 : 0;
+}
+
+/* Combine two shuffles in a row. Returns 1 if there were any changes
+ made, 2 if cfg-cleanup needs to run. Else it returns 0. */
+
+static int
+simplify_permutation (gimple_stmt_iterator *gsi)
+{
+ gimple stmt = gsi_stmt (*gsi);
+ gimple def_stmt;
+ tree op0, op1, op2, op3;
+ enum tree_code code = gimple_assign_rhs_code (stmt);
+ enum tree_code code2;
+
+ gcc_checking_assert (code == VEC_PERM_EXPR);
+
+ op0 = gimple_assign_rhs1 (stmt);
+ op1 = gimple_assign_rhs2 (stmt);
+ op2 = gimple_assign_rhs3 (stmt);
+
+ if (TREE_CODE (op0) != SSA_NAME)
+ return 0;
+
+ if (TREE_CODE (op2) != VECTOR_CST)
+ return 0;
+
+ if (op0 != op1)
+ return 0;
+
+ def_stmt = SSA_NAME_DEF_STMT (op0);
+ if (!def_stmt || !is_gimple_assign (def_stmt)
+ || !can_propagate_from (def_stmt))
+ return 0;
+
+ code2 = gimple_assign_rhs_code (def_stmt);
+
+ /* Two consecutive shuffles. */
+ if (code2 == VEC_PERM_EXPR)
+ {
+ tree orig;
+ int ident;
+ op3 = gimple_assign_rhs3 (def_stmt);
+ if (TREE_CODE (op3) != VECTOR_CST)
+ return 0;
+ ident = is_combined_permutation_identity (op3, op2);
+ if (!ident)
+ return 0;
+ orig = (ident == 1) ? gimple_assign_rhs1 (def_stmt)
+ : gimple_assign_rhs2 (def_stmt);
+ gimple_assign_set_rhs1 (stmt, unshare_expr (orig));
+ gimple_assign_set_rhs_code (stmt, TREE_CODE (orig));
+ gimple_set_num_ops (stmt, 2);
+ update_stmt (stmt);
+ return remove_prop_source_from_use (op0) ? 2 : 1;
+ }
+
+ return false;
+}
+
/* Main entry point for the forward propagation and statement combine
optimizer. */
@@ -2815,6 +2817,8 @@ ssa_forward_propagate_and_combine (void)
else if (code == PLUS_EXPR
|| code == MINUS_EXPR)
changed = associate_plusminus (&gsi);
+ else if (code == POINTER_PLUS_EXPR)
+ changed = associate_pointerplus (&gsi);
else if (CONVERT_EXPR_CODE_P (code)
|| code == FLOAT_EXPR
|| code == FIX_TRUNC_EXPR)
@@ -2824,6 +2828,13 @@ ssa_forward_propagate_and_combine (void)
cfg_changed = true;
changed = did_something != 0;
}
+ else if (code == VEC_PERM_EXPR)
+ {
+ int did_something = simplify_permutation (&gsi);
+ if (did_something == 2)
+ cfg_changed = true;
+ changed = did_something != 0;
+ }
break;
}
diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c
index 459c60a3057..5c61f7f3b01 100644
--- a/gcc/tree-ssa-ifcombine.c
+++ b/gcc/tree-ssa-ifcombine.c
@@ -24,11 +24,9 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "basic-block.h"
-#include "timevar.h"
#include "tree-pretty-print.h"
#include "tree-flow.h"
#include "tree-pass.h"
-#include "tree-dump.h"
/* This pass combines COND_EXPRs to simplify control flow. It
currently recognizes bit tests and comparisons in chains that
@@ -168,12 +166,12 @@ get_name_for_bit_test (tree candidate)
Returns true if the pattern matched, false otherwise. */
static bool
-recognize_single_bit_test (gimple cond, tree *name, tree *bit)
+recognize_single_bit_test (gimple cond, tree *name, tree *bit, bool inv)
{
gimple stmt;
/* Get at the definition of the result of the bit test. */
- if (gimple_cond_code (cond) != NE_EXPR
+ if (gimple_cond_code (cond) != (inv ? EQ_EXPR : NE_EXPR)
|| TREE_CODE (gimple_cond_lhs (cond)) != SSA_NAME
|| !integer_zerop (gimple_cond_rhs (cond)))
return false;
@@ -276,12 +274,12 @@ recognize_single_bit_test (gimple cond, tree *name, tree *bit)
Returns true if the pattern matched, false otherwise. */
static bool
-recognize_bits_test (gimple cond, tree *name, tree *bits)
+recognize_bits_test (gimple cond, tree *name, tree *bits, bool inv)
{
gimple stmt;
/* Get at the definition of the result of the bit test. */
- if (gimple_cond_code (cond) != NE_EXPR
+ if (gimple_cond_code (cond) != (inv ? EQ_EXPR : NE_EXPR)
|| TREE_CODE (gimple_cond_lhs (cond)) != SSA_NAME
|| !integer_zerop (gimple_cond_rhs (cond)))
return false;
@@ -298,14 +296,17 @@ recognize_bits_test (gimple cond, tree *name, tree *bits)
/* If-convert on a and pattern with a common else block. The inner
if is specified by its INNER_COND_BB, the outer by OUTER_COND_BB.
+ inner_inv, outer_inv and result_inv indicate whether the conditions
+ are inverted.
Returns true if the edges to the common else basic-block were merged. */
static bool
-ifcombine_ifandif (basic_block inner_cond_bb, basic_block outer_cond_bb)
+ifcombine_ifandif (basic_block inner_cond_bb, bool inner_inv,
+ basic_block outer_cond_bb, bool outer_inv, bool result_inv)
{
gimple_stmt_iterator gsi;
gimple inner_cond, outer_cond;
- tree name1, name2, bit1, bit2;
+ tree name1, name2, bit1, bit2, bits1, bits2;
inner_cond = last_stmt (inner_cond_bb);
if (!inner_cond
@@ -321,8 +322,8 @@ ifcombine_ifandif (basic_block inner_cond_bb, basic_block outer_cond_bb)
that case remove the outer test, merging both else edges,
and change the inner one to test for
name & (bit1 | bit2) == (bit1 | bit2). */
- if (recognize_single_bit_test (inner_cond, &name1, &bit1)
- && recognize_single_bit_test (outer_cond, &name2, &bit2)
+ if (recognize_single_bit_test (inner_cond, &name1, &bit1, inner_inv)
+ && recognize_single_bit_test (outer_cond, &name2, &bit2, outer_inv)
&& name1 == name2)
{
tree t, t2;
@@ -339,7 +340,8 @@ ifcombine_ifandif (basic_block inner_cond_bb, basic_block outer_cond_bb)
t2 = fold_build2 (BIT_AND_EXPR, TREE_TYPE (name1), name1, t);
t2 = force_gimple_operand_gsi (&gsi, t2, true, NULL_TREE,
true, GSI_SAME_STMT);
- t = fold_build2 (EQ_EXPR, boolean_type_node, t2, t);
+ t = fold_build2 (result_inv ? NE_EXPR : EQ_EXPR,
+ boolean_type_node, t2, t);
t = canonicalize_cond_expr_cond (t);
if (!t)
return false;
@@ -347,7 +349,8 @@ ifcombine_ifandif (basic_block inner_cond_bb, basic_block outer_cond_bb)
update_stmt (inner_cond);
/* Leave CFG optimization to cfg_cleanup. */
- gimple_cond_set_condition_from_tree (outer_cond, boolean_true_node);
+ gimple_cond_set_condition_from_tree (outer_cond,
+ outer_inv ? boolean_false_node : boolean_true_node);
update_stmt (outer_cond);
if (dump_file)
@@ -364,68 +367,11 @@ ifcombine_ifandif (basic_block inner_cond_bb, basic_block outer_cond_bb)
return true;
}
- /* See if we have two comparisons that we can merge into one. */
- else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison
- && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison)
- {
- tree t;
-
- if (!(t = maybe_fold_and_comparisons (gimple_cond_code (inner_cond),
- gimple_cond_lhs (inner_cond),
- gimple_cond_rhs (inner_cond),
- gimple_cond_code (outer_cond),
- gimple_cond_lhs (outer_cond),
- gimple_cond_rhs (outer_cond))))
- return false;
- t = canonicalize_cond_expr_cond (t);
- if (!t)
- return false;
- gimple_cond_set_condition_from_tree (inner_cond, t);
- update_stmt (inner_cond);
-
- /* Leave CFG optimization to cfg_cleanup. */
- gimple_cond_set_condition_from_tree (outer_cond, boolean_true_node);
- update_stmt (outer_cond);
-
- if (dump_file)
- {
- fprintf (dump_file, "optimizing two comparisons to ");
- print_generic_expr (dump_file, t, 0);
- fprintf (dump_file, "\n");
- }
-
- return true;
- }
-
- return false;
-}
-
-/* If-convert on a or pattern with a common then block. The inner
- if is specified by its INNER_COND_BB, the outer by OUTER_COND_BB.
- Returns true, if the edges leading to the common then basic-block
- were merged. */
-
-static bool
-ifcombine_iforif (basic_block inner_cond_bb, basic_block outer_cond_bb)
-{
- gimple inner_cond, outer_cond;
- tree name1, name2, bits1, bits2;
-
- inner_cond = last_stmt (inner_cond_bb);
- if (!inner_cond
- || gimple_code (inner_cond) != GIMPLE_COND)
- return false;
-
- outer_cond = last_stmt (outer_cond_bb);
- if (!outer_cond
- || gimple_code (outer_cond) != GIMPLE_COND)
- return false;
-
/* See if we have two bit tests of the same name in both tests.
In that case remove the outer test and change the inner one to
test for name & (bits1 | bits2) != 0. */
- if (recognize_bits_test (inner_cond, &name1, &bits1)
- && recognize_bits_test (outer_cond, &name2, &bits2))
+ else if (recognize_bits_test (inner_cond, &name1, &bits1, !inner_inv)
+ && recognize_bits_test (outer_cond, &name2, &bits2, !outer_inv))
{
gimple_stmt_iterator gsi;
tree t;
@@ -484,7 +430,7 @@ ifcombine_iforif (basic_block inner_cond_bb, basic_block outer_cond_bb)
t = fold_build2 (BIT_AND_EXPR, TREE_TYPE (name1), name1, t);
t = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE,
true, GSI_SAME_STMT);
- t = fold_build2 (NE_EXPR, boolean_type_node, t,
+ t = fold_build2 (result_inv ? NE_EXPR : EQ_EXPR, boolean_type_node, t,
build_int_cst (TREE_TYPE (t), 0));
t = canonicalize_cond_expr_cond (t);
if (!t)
@@ -493,7 +439,8 @@ ifcombine_iforif (basic_block inner_cond_bb, basic_block outer_cond_bb)
update_stmt (inner_cond);
/* Leave CFG optimization to cfg_cleanup. */
- gimple_cond_set_condition_from_tree (outer_cond, boolean_false_node);
+ gimple_cond_set_condition_from_tree (outer_cond,
+ outer_inv ? boolean_false_node : boolean_true_node);
update_stmt (outer_cond);
if (dump_file)
@@ -510,21 +457,36 @@ ifcombine_iforif (basic_block inner_cond_bb, basic_block outer_cond_bb)
return true;
}
- /* See if we have two comparisons that we can merge into one.
- This happens for C++ operator overloading where for example
- GE_EXPR is implemented as GT_EXPR || EQ_EXPR. */
- else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison
+ /* See if we have two comparisons that we can merge into one. */
+ else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison
&& TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison)
{
tree t;
+ enum tree_code inner_cond_code = gimple_cond_code (inner_cond);
+ enum tree_code outer_cond_code = gimple_cond_code (outer_cond);
+
+ /* Invert comparisons if necessary (and possible). */
+ if (inner_inv)
+ inner_cond_code = invert_tree_comparison (inner_cond_code,
+ HONOR_NANS (TYPE_MODE (TREE_TYPE (gimple_cond_lhs (inner_cond)))));
+ if (inner_cond_code == ERROR_MARK)
+ return false;
+ if (outer_inv)
+ outer_cond_code = invert_tree_comparison (outer_cond_code,
+ HONOR_NANS (TYPE_MODE (TREE_TYPE (gimple_cond_lhs (outer_cond)))));
+ if (outer_cond_code == ERROR_MARK)
+ return false;
+ /* Don't return false so fast, try maybe_fold_or_comparisons? */
- if (!(t = maybe_fold_or_comparisons (gimple_cond_code (inner_cond),
- gimple_cond_lhs (inner_cond),
- gimple_cond_rhs (inner_cond),
- gimple_cond_code (outer_cond),
- gimple_cond_lhs (outer_cond),
- gimple_cond_rhs (outer_cond))))
+ if (!(t = maybe_fold_and_comparisons (inner_cond_code,
+ gimple_cond_lhs (inner_cond),
+ gimple_cond_rhs (inner_cond),
+ outer_cond_code,
+ gimple_cond_lhs (outer_cond),
+ gimple_cond_rhs (outer_cond))))
return false;
+ if (result_inv)
+ t = fold_build1 (TRUTH_NOT_EXPR, TREE_TYPE (t), t);
t = canonicalize_cond_expr_cond (t);
if (!t)
return false;
@@ -532,7 +494,8 @@ ifcombine_iforif (basic_block inner_cond_bb, basic_block outer_cond_bb)
update_stmt (inner_cond);
/* Leave CFG optimization to cfg_cleanup. */
- gimple_cond_set_condition_from_tree (outer_cond, boolean_false_node);
+ gimple_cond_set_condition_from_tree (outer_cond,
+ outer_inv ? boolean_false_node : boolean_true_node);
update_stmt (outer_cond);
if (dump_file)
@@ -589,7 +552,26 @@ tree_ssa_ifcombine_bb (basic_block inner_cond_bb)
<else_bb>
...
*/
- return ifcombine_ifandif (inner_cond_bb, outer_cond_bb);
+ return ifcombine_ifandif (inner_cond_bb, false, outer_cond_bb, false,
+ false);
+ }
+
+ /* And a version where the outer condition is negated. */
+ if (recognize_if_then_else (outer_cond_bb, &else_bb, &inner_cond_bb)
+ && same_phi_args_p (outer_cond_bb, inner_cond_bb, else_bb)
+ && bb_no_side_effects_p (inner_cond_bb))
+ {
+ /* We have
+ <outer_cond_bb>
+ if (q) goto else_bb; else goto inner_cond_bb;
+ <inner_cond_bb>
+ if (p) goto ...; else goto else_bb;
+ ...
+ <else_bb>
+ ...
+ */
+ return ifcombine_ifandif (inner_cond_bb, false, outer_cond_bb, true,
+ false);
}
/* The || form is characterized by a common then_bb with the
@@ -608,7 +590,25 @@ tree_ssa_ifcombine_bb (basic_block inner_cond_bb)
<then_bb>
...
*/
- return ifcombine_iforif (inner_cond_bb, outer_cond_bb);
+ return ifcombine_ifandif (inner_cond_bb, true, outer_cond_bb, true,
+ true);
+ }
+
+ /* And a version where the outer condition is negated. */
+ if (recognize_if_then_else (outer_cond_bb, &inner_cond_bb, &then_bb)
+ && same_phi_args_p (outer_cond_bb, inner_cond_bb, then_bb)
+ && bb_no_side_effects_p (inner_cond_bb))
+ {
+ /* We have
+ <outer_cond_bb>
+ if (q) goto inner_cond_bb; else goto then_bb;
+ <inner_cond_bb>
+ if (q) goto then_bb; else goto ...;
+ <then_bb>
+ ...
+ */
+ return ifcombine_ifandif (inner_cond_bb, true, outer_cond_bb, false,
+ true);
}
}
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c
index 8f504f005fe..294a5d49861 100644
--- a/gcc/tree-ssa-live.c
+++ b/gcc/tree-ssa-live.c
@@ -24,11 +24,11 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "bitmap.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "timevar.h"
+#include "dumpfile.h"
#include "tree-ssa-live.h"
#include "diagnostic-core.h"
#include "debug.h"
@@ -59,59 +59,57 @@ static void verify_live_on_entry (tree_live_info_p);
static void
var_map_base_init (var_map map)
{
- int x, num_part, num;
+ int x, num_part;
tree var;
- var_ann_t ann;
+ htab_t tree_to_index;
+ struct tree_int_map *m, *mapstorage;
- num = 0;
num_part = num_var_partitions (map);
+ tree_to_index = htab_create (num_part, tree_map_base_hash,
+ tree_int_map_eq, NULL);
+ /* We can have at most num_part entries in the hash tables, so it's
+ enough to allocate so many map elements once, saving some malloc
+ calls. */
+ mapstorage = m = XNEWVEC (struct tree_int_map, num_part);
/* If a base table already exists, clear it, otherwise create it. */
- if (map->partition_to_base_index != NULL)
- {
- free (map->partition_to_base_index);
- VEC_truncate (tree, map->basevars, 0);
- }
- else
- map->basevars = VEC_alloc (tree, heap, MAX (40, (num_part / 10)));
-
+ free (map->partition_to_base_index);
map->partition_to_base_index = (int *) xmalloc (sizeof (int) * num_part);
/* Build the base variable list, and point partitions at their bases. */
for (x = 0; x < num_part; x++)
{
+ struct tree_int_map **slot;
+ unsigned baseindex;
var = partition_to_var (map, x);
- if (TREE_CODE (var) == SSA_NAME)
- var = SSA_NAME_VAR (var);
- ann = var_ann (var);
+ if (SSA_NAME_VAR (var))
+ m->base.from = SSA_NAME_VAR (var);
+ else
+ /* This restricts what anonymous SSA names we can coalesce
+ as it restricts the sets we compute conflicts for.
+ Using TREE_TYPE to generate sets is the easies as
+ type equivalency also holds for SSA names with the same
+ underlying decl. */
+ m->base.from = TREE_TYPE (var);
/* If base variable hasn't been seen, set it up. */
- if (!ann->base_var_processed)
- {
- ann->base_var_processed = 1;
- VAR_ANN_BASE_INDEX (ann) = num++;
- VEC_safe_push (tree, heap, map->basevars, var);
+ slot = (struct tree_int_map **) htab_find_slot (tree_to_index,
+ m, INSERT);
+ if (!*slot)
+ {
+ baseindex = m - mapstorage;
+ m->to = baseindex;
+ *slot = m;
+ m++;
}
- map->partition_to_base_index[x] = VAR_ANN_BASE_INDEX (ann);
+ else
+ baseindex = (*slot)->to;
+ map->partition_to_base_index[x] = baseindex;
}
- map->num_basevars = num;
+ map->num_basevars = m - mapstorage;
- /* Now clear the processed bit. */
- for (x = 0; x < num; x++)
- {
- var = VEC_index (tree, map->basevars, x);
- var_ann (var)->base_var_processed = 0;
- }
-
-#ifdef ENABLE_CHECKING
- for (x = 0; x < num_part; x++)
- {
- tree var2;
- var = SSA_NAME_VAR (partition_to_var (map, x));
- var2 = VEC_index (tree, map->basevars, basevar_index (map, x));
- gcc_assert (var == var2);
- }
-#endif
+ free (mapstorage);
+ htab_delete (tree_to_index);
}
@@ -123,7 +121,6 @@ var_map_base_fini (var_map map)
/* Free the basevar info if it is present. */
if (map->partition_to_base_index != NULL)
{
- VEC_free (tree, heap, map->basevars);
free (map->partition_to_base_index);
map->partition_to_base_index = NULL;
map->num_basevars = 0;
@@ -145,7 +142,6 @@ init_var_map (int size)
map->partition_size = size;
map->num_basevars = 0;
map->partition_to_base_index = NULL;
- map->basevars = NULL;
return map;
}
@@ -244,7 +240,7 @@ partition_view_init (var_map map)
for (x = 0; x < map->partition_size; x++)
{
tmp = partition_find (map->var_partition, x);
- if (ssa_name (tmp) != NULL_TREE && is_gimple_reg (ssa_name (tmp))
+ if (ssa_name (tmp) != NULL_TREE && !virtual_operand_p (ssa_name (tmp))
&& (!has_zero_uses (ssa_name (tmp))
|| !SSA_NAME_IS_DEFAULT_DEF (ssa_name (tmp))))
bitmap_set_bit (used, tmp);
@@ -297,7 +293,7 @@ partition_view_fini (var_map map, bitmap selected)
/* Create a partition view which includes all the used partitions in MAP. If
WANT_BASES is true, create the base variable map as well. */
-extern void
+void
partition_view_normal (var_map map, bool want_bases)
{
bitmap used;
@@ -316,7 +312,7 @@ partition_view_normal (var_map map, bool want_bases)
the bitmap ONLY. If WANT_BASES is true, create the base variable map
as well. */
-extern void
+void
partition_view_bitmap (var_map map, bitmap only, bool want_bases)
{
bitmap used;
@@ -333,7 +329,6 @@ partition_view_bitmap (var_map map, bitmap only, bool want_bases)
}
partition_view_fini (map, new_partitions);
- BITMAP_FREE (used);
if (want_bases)
var_map_base_init (map);
else
@@ -341,20 +336,43 @@ partition_view_bitmap (var_map map, bitmap only, bool want_bases)
}
-static inline void mark_all_vars_used (tree *, void *data);
+static bitmap usedvars;
+
+/* Mark VAR as used, so that it'll be preserved during rtl expansion.
+ Returns true if VAR wasn't marked before. */
+
+static inline bool
+set_is_used (tree var)
+{
+ return bitmap_set_bit (usedvars, DECL_UID (var));
+}
+
+/* Return true if VAR is marked as used. */
+
+static inline bool
+is_used_p (tree var)
+{
+ return bitmap_bit_p (usedvars, DECL_UID (var));
+}
+
+static inline void mark_all_vars_used (tree *);
/* Helper function for mark_all_vars_used, called via walk_tree. */
static tree
-mark_all_vars_used_1 (tree *tp, int *walk_subtrees, void *data)
+mark_all_vars_used_1 (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
{
- bitmap global_unused_vars = (bitmap)data;
tree t = *tp;
enum tree_code_class c = TREE_CODE_CLASS (TREE_CODE (t));
tree b;
if (TREE_CODE (t) == SSA_NAME)
- t = SSA_NAME_VAR (t);
+ {
+ *walk_subtrees = 0;
+ t = SSA_NAME_VAR (t);
+ if (!t)
+ return NULL;
+ }
if (IS_EXPR_CODE_CLASS (c)
&& (b = TREE_BLOCK (t)) != NULL)
@@ -364,9 +382,9 @@ mark_all_vars_used_1 (tree *tp, int *walk_subtrees, void *data)
fields do not contain vars. */
if (TREE_CODE (t) == TARGET_MEM_REF)
{
- mark_all_vars_used (&TMR_BASE (t), data);
- mark_all_vars_used (&TMR_INDEX (t), data);
- mark_all_vars_used (&TMR_INDEX2 (t), data);
+ mark_all_vars_used (&TMR_BASE (t));
+ mark_all_vars_used (&TMR_INDEX (t));
+ mark_all_vars_used (&TMR_INDEX2 (t));
*walk_subtrees = 0;
return NULL;
}
@@ -375,16 +393,10 @@ mark_all_vars_used_1 (tree *tp, int *walk_subtrees, void *data)
eliminated as unused. */
if (TREE_CODE (t) == VAR_DECL)
{
- /* Global vars do not have a var-annotation so their use is tracked
- with the global_unused_vars bitmap. Also walk their initializer
- when they are first recognized as used. */
- if (is_global_var (t))
- {
- if (bitmap_clear_bit (global_unused_vars, DECL_UID (t)))
- mark_all_vars_used (&DECL_INITIAL (t), data);
- }
- else
- set_is_used (t);
+ /* When a global var becomes used for the first time also walk its
+ initializer (non global ones don't have any). */
+ if (set_is_used (t) && is_global_var (t))
+ mark_all_vars_used (&DECL_INITIAL (t));
}
/* remove_unused_scope_block_p requires information about labels
which are not DECL_IGNORED_P to tell if they might be used in the IL. */
@@ -429,7 +441,7 @@ mark_scope_block_unused (tree scope)
done by the inliner. */
static bool
-remove_unused_scope_block_p (tree scope, bitmap global_unused_vars)
+remove_unused_scope_block_p (tree scope)
{
tree *t, *next;
bool unused = !TREE_USED (scope);
@@ -469,9 +481,7 @@ remove_unused_scope_block_p (tree scope, bitmap global_unused_vars)
info about optimized-out variables in the scope blocks.
Exception are the scope blocks not containing any instructions
at all so user can't get into the scopes at first place. */
- else if ((is_global_var (*t)
- && !bitmap_bit_p (global_unused_vars, DECL_UID (*t)))
- || (var_ann (*t) != NULL && is_used_p (*t)))
+ else if (is_used_p (*t))
unused = false;
else if (TREE_CODE (*t) == LABEL_DECL && TREE_USED (*t))
/* For labels that are still used in the IL, the decision to
@@ -516,7 +526,7 @@ remove_unused_scope_block_p (tree scope, bitmap global_unused_vars)
}
for (t = &BLOCK_SUBBLOCKS (scope); *t ;)
- if (remove_unused_scope_block_p (*t, global_unused_vars))
+ if (remove_unused_scope_block_p (*t))
{
if (BLOCK_SUBBLOCKS (*t))
{
@@ -597,9 +607,9 @@ remove_unused_scope_block_p (tree scope, bitmap global_unused_vars)
eliminated during the tree->rtl conversion process. */
static inline void
-mark_all_vars_used (tree *expr_p, void *data)
+mark_all_vars_used (tree *expr_p)
{
- walk_tree (expr_p, mark_all_vars_used_1, data, NULL);
+ walk_tree (expr_p, mark_all_vars_used_1, NULL, NULL);
}
@@ -635,14 +645,9 @@ dump_scope_block (FILE *file, int indent, tree scope, int flags)
fprintf (file, " \n");
for (var = BLOCK_VARS (scope); var; var = DECL_CHAIN (var))
{
- bool used = false;
-
- if (var_ann (var))
- used = is_used_p (var);
-
fprintf (file, "%*s", indent, "");
print_generic_decl (file, var, flags);
- fprintf (file, "%s\n", used ? "" : " (unused)");
+ fprintf (file, "\n");
}
for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (scope); i++)
{
@@ -691,10 +696,8 @@ void
remove_unused_locals (void)
{
basic_block bb;
- tree var, t;
- referenced_var_iterator rvi;
- bitmap global_unused_vars = NULL;
- unsigned srcidx, dstidx, num, ix;
+ tree var;
+ unsigned srcidx, dstidx, num;
bool have_local_clobbers = false;
/* Removing declarations from lexical blocks when not optimizing is
@@ -707,16 +710,7 @@ remove_unused_locals (void)
mark_scope_block_unused (DECL_INITIAL (current_function_decl));
- /* Assume all locals are unused. */
- FOR_EACH_REFERENCED_VAR (cfun, t, rvi)
- clear_is_used (t);
-
- /* Assume all globals in local decls are unused. */
- global_unused_vars = BITMAP_ALLOC (NULL);
- FOR_EACH_LOCAL_DECL (cfun, ix, var)
- if (TREE_CODE (var) == VAR_DECL
- && is_global_var (var))
- bitmap_set_bit (global_unused_vars, DECL_UID (var));
+ usedvars = BITMAP_ALLOC (NULL);
/* Walk the CFG marking all referenced symbols. */
FOR_EACH_BB (bb)
@@ -745,8 +739,7 @@ remove_unused_locals (void)
TREE_USED (b) = true;
for (i = 0; i < gimple_num_ops (stmt); i++)
- mark_all_vars_used (gimple_op_ptr (gsi_stmt (gsi), i),
- global_unused_vars);
+ mark_all_vars_used (gimple_op_ptr (gsi_stmt (gsi), i));
}
for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
@@ -756,16 +749,16 @@ remove_unused_locals (void)
tree def;
gimple phi = gsi_stmt (gsi);
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
continue;
def = gimple_phi_result (phi);
- mark_all_vars_used (&def, global_unused_vars);
+ mark_all_vars_used (&def);
FOR_EACH_PHI_ARG (arg_p, phi, i, SSA_OP_ALL_USES)
{
tree arg = USE_FROM_PTR (arg_p);
- mark_all_vars_used (&arg, global_unused_vars);
+ mark_all_vars_used (&arg);
}
}
@@ -792,13 +785,7 @@ remove_unused_locals (void)
if (gimple_clobber_p (stmt))
{
tree lhs = gimple_assign_lhs (stmt);
- lhs = get_base_address (lhs);
- if (TREE_CODE (lhs) == SSA_NAME)
- lhs = SSA_NAME_VAR (lhs);
- if (TREE_CODE (lhs) == VAR_DECL
- && ((is_global_var (lhs)
- && bitmap_bit_p (global_unused_vars, DECL_UID (lhs)))
- || (!is_global_var (lhs) && !is_used_p (lhs))))
+ if (TREE_CODE (lhs) == VAR_DECL && !is_used_p (lhs))
{
unlink_stmt_vdef (stmt);
gsi_remove (&gsi, true);
@@ -814,27 +801,25 @@ remove_unused_locals (void)
cfun->has_local_explicit_reg_vars = false;
- /* Remove unmarked local and global vars from local_decls
- and referenced vars. */
+ /* Remove unmarked local and global vars from local_decls. */
num = VEC_length (tree, cfun->local_decls);
for (srcidx = 0, dstidx = 0; srcidx < num; srcidx++)
{
var = VEC_index (tree, cfun->local_decls, srcidx);
if (TREE_CODE (var) == VAR_DECL)
{
- if (is_global_var (var))
- {
- if (bitmap_bit_p (global_unused_vars, DECL_UID (var)))
- continue;
- }
- else if (var_ann (var) == NULL
- || !is_used_p (var))
+ if (!is_used_p (var))
{
- if (var_ann (var))
- remove_referenced_var (var);
+ tree def;
if (cfun->nonlocal_goto_save_area
&& TREE_OPERAND (cfun->nonlocal_goto_save_area, 0) == var)
cfun->nonlocal_goto_save_area = NULL;
+ /* Release any default def associated with var. */
+ if ((def = ssa_default_def (cfun, var)) != NULL_TREE)
+ {
+ set_ssa_default_def (cfun, var, NULL_TREE);
+ release_ssa_name (def);
+ }
continue;
}
}
@@ -850,18 +835,9 @@ remove_unused_locals (void)
if (dstidx != num)
VEC_truncate (tree, cfun->local_decls, dstidx);
- /* ??? We end up with decls in referenced-vars that are not in
- local-decls. */
- FOR_EACH_REFERENCED_VAR (cfun, t, rvi)
- if (TREE_CODE (t) == VAR_DECL
- && !VAR_DECL_IS_VIRTUAL_OPERAND (t)
- && !is_used_p (t))
- remove_referenced_var (t);
+ remove_unused_scope_block_p (DECL_INITIAL (current_function_decl));
- remove_unused_scope_block_p (DECL_INITIAL (current_function_decl),
- global_unused_vars);
-
- BITMAP_FREE (global_unused_vars);
+ BITMAP_FREE (usedvars);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -872,6 +848,12 @@ remove_unused_locals (void)
timevar_pop (TV_REMOVE_UNUSED);
}
+/* Obstack for globale liveness info bitmaps. We don't want to put these
+ on the default obstack because these bitmaps can grow quite large and
+ we'll hold on to all that memory until the end of the compiler run.
+ As a bonus, delete_tree_live_info can destroy all the bitmaps by just
+ releasing the whole obstack. */
+static bitmap_obstack liveness_bitmap_obstack;
/* Allocate and return a new live range information object base on MAP. */
@@ -879,24 +861,24 @@ static tree_live_info_p
new_tree_live_info (var_map map)
{
tree_live_info_p live;
- unsigned x;
+ basic_block bb;
- live = (tree_live_info_p) xmalloc (sizeof (struct tree_live_info_d));
+ live = XNEW (struct tree_live_info_d);
live->map = map;
live->num_blocks = last_basic_block;
- live->livein = (bitmap *)xmalloc (last_basic_block * sizeof (bitmap));
- for (x = 0; x < (unsigned)last_basic_block; x++)
- live->livein[x] = BITMAP_ALLOC (NULL);
+ live->livein = XNEWVEC (bitmap_head, last_basic_block);
+ FOR_EACH_BB (bb)
+ bitmap_initialize (&live->livein[bb->index], &liveness_bitmap_obstack);
- live->liveout = (bitmap *)xmalloc (last_basic_block * sizeof (bitmap));
- for (x = 0; x < (unsigned)last_basic_block; x++)
- live->liveout[x] = BITMAP_ALLOC (NULL);
+ live->liveout = XNEWVEC (bitmap_head, last_basic_block);
+ FOR_EACH_BB (bb)
+ bitmap_initialize (&live->liveout[bb->index], &liveness_bitmap_obstack);
live->work_stack = XNEWVEC (int, last_basic_block);
live->stack_top = live->work_stack;
- live->global = BITMAP_ALLOC (NULL);
+ live->global = BITMAP_ALLOC (&liveness_bitmap_obstack);
return live;
}
@@ -906,19 +888,10 @@ new_tree_live_info (var_map map)
void
delete_tree_live_info (tree_live_info_p live)
{
- int x;
-
- BITMAP_FREE (live->global);
+ bitmap_obstack_release (&liveness_bitmap_obstack);
free (live->work_stack);
-
- for (x = live->num_blocks - 1; x >= 0; x--)
- BITMAP_FREE (live->liveout[x]);
free (live->liveout);
-
- for (x = live->num_blocks - 1; x >= 0; x--)
- BITMAP_FREE (live->livein[x]);
free (live->livein);
-
free (live);
}
@@ -951,7 +924,7 @@ loe_visit_block (tree_live_info_p live, basic_block bb, sbitmap visited,
predecessor block. This should be the live on entry vars to pred.
Note that liveout is the DEFs in a block while live on entry is
being calculated. */
- bitmap_and_compl (tmp, loe, live->liveout[pred_bb->index]);
+ bitmap_and_compl (tmp, loe, &live->liveout[pred_bb->index]);
/* Add these bits to live-on-entry for the pred. if there are any
changes, and pred_bb has been visited already, add it to the
@@ -975,7 +948,7 @@ live_worklist (tree_live_info_p live)
unsigned b;
basic_block bb;
sbitmap visited = sbitmap_alloc (last_basic_block + 1);
- bitmap tmp = BITMAP_ALLOC (NULL);
+ bitmap tmp = BITMAP_ALLOC (&liveness_bitmap_obstack);
sbitmap_zero (visited);
@@ -1020,7 +993,7 @@ set_var_live_on_entry (tree ssa_name, tree_live_info_p live)
def_bb = gimple_bb (stmt);
/* Mark defs in liveout bitmap temporarily. */
if (def_bb)
- bitmap_set_bit (live->liveout[def_bb->index], p);
+ bitmap_set_bit (&live->liveout[def_bb->index], p);
}
else
def_bb = ENTRY_BLOCK_PTR;
@@ -1059,7 +1032,7 @@ set_var_live_on_entry (tree ssa_name, tree_live_info_p live)
if (add_block)
{
global = true;
- bitmap_set_bit (live->livein[add_block->index], p);
+ bitmap_set_bit (&live->livein[add_block->index], p);
}
}
@@ -1081,7 +1054,7 @@ calculate_live_on_exit (tree_live_info_p liveinfo)
/* live on entry calculations used liveout vectors for defs, clear them. */
FOR_EACH_BB (bb)
- bitmap_clear (liveinfo->liveout[bb->index]);
+ bitmap_clear (&liveinfo->liveout[bb->index]);
/* Set all the live-on-exit bits for uses in PHIs. */
FOR_EACH_BB (bb)
@@ -1106,14 +1079,14 @@ calculate_live_on_exit (tree_live_info_p liveinfo)
continue;
e = gimple_phi_arg_edge (phi, i);
if (e->src != ENTRY_BLOCK_PTR)
- bitmap_set_bit (liveinfo->liveout[e->src->index], p);
+ bitmap_set_bit (&liveinfo->liveout[e->src->index], p);
}
}
/* Add each successors live on entry to this bock live on exit. */
FOR_EACH_EDGE (e, ei, bb->succs)
if (e->dest != EXIT_BLOCK_PTR)
- bitmap_ior_into (liveinfo->liveout[bb->index],
+ bitmap_ior_into (&liveinfo->liveout[bb->index],
live_on_entry (liveinfo, e->dest));
}
}
@@ -1129,6 +1102,7 @@ calculate_live_ranges (var_map map)
unsigned i;
tree_live_info_p live;
+ bitmap_obstack_initialize (&liveness_bitmap_obstack);
live = new_tree_live_info (map);
for (i = 0; i < num_var_partitions (map); i++)
{
@@ -1166,7 +1140,8 @@ dump_var_map (FILE *f, var_map map)
else
p = x;
- if (ssa_name (p) == NULL_TREE)
+ if (ssa_name (p) == NULL_TREE
+ || virtual_operand_p (ssa_name (p)))
continue;
t = 0;
@@ -1208,7 +1183,7 @@ dump_live_info (FILE *f, tree_live_info_p live, int flag)
FOR_EACH_BB (bb)
{
fprintf (f, "\nLive on entry to BB%d : ", bb->index);
- EXECUTE_IF_SET_IN_BITMAP (live->livein[bb->index], 0, i, bi)
+ EXECUTE_IF_SET_IN_BITMAP (&live->livein[bb->index], 0, i, bi)
{
print_generic_expr (f, partition_to_var (map, i), TDF_SLIM);
fprintf (f, " ");
@@ -1222,7 +1197,7 @@ dump_live_info (FILE *f, tree_live_info_p live, int flag)
FOR_EACH_BB (bb)
{
fprintf (f, "\nLive on exit from BB%d : ", bb->index);
- EXECUTE_IF_SET_IN_BITMAP (live->liveout[bb->index], 0, i, bi)
+ EXECUTE_IF_SET_IN_BITMAP (&live->liveout[bb->index], 0, i, bi)
{
print_generic_expr (f, partition_to_var (map, i), TDF_SLIM);
fprintf (f, " ");
@@ -1232,95 +1207,6 @@ dump_live_info (FILE *f, tree_live_info_p live, int flag)
}
}
-struct GTY(()) numbered_tree_d
-{
- tree t;
- int num;
-};
-typedef struct numbered_tree_d numbered_tree;
-
-DEF_VEC_O (numbered_tree);
-DEF_VEC_ALLOC_O (numbered_tree, heap);
-
-/* Compare two declarations references by their DECL_UID / sequence number.
- Called via qsort. */
-
-static int
-compare_decls_by_uid (const void *pa, const void *pb)
-{
- const numbered_tree *nt_a = ((const numbered_tree *)pa);
- const numbered_tree *nt_b = ((const numbered_tree *)pb);
-
- if (DECL_UID (nt_a->t) != DECL_UID (nt_b->t))
- return DECL_UID (nt_a->t) - DECL_UID (nt_b->t);
- return nt_a->num - nt_b->num;
-}
-
-/* Called via walk_gimple_stmt / walk_gimple_op by dump_enumerated_decls. */
-static tree
-dump_enumerated_decls_push (tree *tp, int *walk_subtrees, void *data)
-{
- struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
- VEC (numbered_tree, heap) **list = (VEC (numbered_tree, heap) **) &wi->info;
- numbered_tree nt;
-
- if (!DECL_P (*tp))
- return NULL_TREE;
- nt.t = *tp;
- nt.num = VEC_length (numbered_tree, *list);
- VEC_safe_push (numbered_tree, heap, *list, &nt);
- *walk_subtrees = 0;
- return NULL_TREE;
-}
-
-/* Find all the declarations used by the current function, sort them by uid,
- and emit the sorted list. Each declaration is tagged with a sequence
- number indicating when it was found during statement / tree walking,
- so that TDF_NOUID comparisons of anonymous declarations are still
- meaningful. Where a declaration was encountered more than once, we
- emit only the sequence number of the first encounter.
- FILE is the dump file where to output the list and FLAGS is as in
- print_generic_expr. */
-void
-dump_enumerated_decls (FILE *file, int flags)
-{
- basic_block bb;
- struct walk_stmt_info wi;
- VEC (numbered_tree, heap) *decl_list = VEC_alloc (numbered_tree, heap, 40);
-
- memset (&wi, '\0', sizeof (wi));
- wi.info = (void*) decl_list;
- FOR_EACH_BB (bb)
- {
- gimple_stmt_iterator gsi;
-
- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- if (!is_gimple_debug (gsi_stmt (gsi)))
- walk_gimple_stmt (&gsi, NULL, dump_enumerated_decls_push, &wi);
- }
- decl_list = (VEC (numbered_tree, heap) *) wi.info;
- VEC_qsort (numbered_tree, decl_list, compare_decls_by_uid);
- if (VEC_length (numbered_tree, decl_list))
- {
- unsigned ix;
- numbered_tree *ntp;
- tree last = NULL_TREE;
-
- fprintf (file, "Declarations used by %s, sorted by DECL_UID:\n",
- current_function_name ());
- FOR_EACH_VEC_ELT (numbered_tree, decl_list, ix, ntp)
- {
- if (ntp->t == last)
- continue;
- fprintf (file, "%d: ", ntp->num);
- print_generic_decl (file, ntp->t, flags);
- fprintf (file, "\n");
- last = ntp->t;
- }
- }
- VEC_free (numbered_tree, heap, decl_list);
-}
-
#ifdef ENABLE_CHECKING
/* Verify that SSA_VAR is a non-virtual SSA_NAME. */
@@ -1328,7 +1214,7 @@ void
register_ssa_partition_check (tree ssa_var)
{
gcc_assert (TREE_CODE (ssa_var) == SSA_NAME);
- if (!is_gimple_reg (SSA_NAME_VAR (ssa_var)))
+ if (virtual_operand_p (ssa_var))
{
fprintf (stderr, "Illegally registering a virtual SSA name :");
print_generic_expr (stderr, ssa_var, TDF_SLIM);
@@ -1365,12 +1251,13 @@ verify_live_on_entry (tree_live_info_p live)
for (i = 0; i < (unsigned)num_var_partitions (map); i++)
{
basic_block tmp;
- tree d;
+ tree d = NULL_TREE;
bitmap loe;
var = partition_to_var (map, i);
stmt = SSA_NAME_DEF_STMT (var);
tmp = gimple_bb (stmt);
- d = gimple_default_def (cfun, SSA_NAME_VAR (var));
+ if (SSA_NAME_VAR (var))
+ d = ssa_default_def (cfun, SSA_NAME_VAR (var));
loe = live_on_entry (live, e->dest);
if (loe && bitmap_bit_p (loe, i))
diff --git a/gcc/tree-ssa-live.h b/gcc/tree-ssa-live.h
index 8158577eaab..70a3aa60fd3 100644
--- a/gcc/tree-ssa-live.h
+++ b/gcc/tree-ssa-live.h
@@ -31,13 +31,7 @@ along with GCC; see the file COPYING3. If not see
/* Used to create the variable mapping when we go out of SSA form.
Mapping from an ssa_name to a partition number is maintained, as well as
- partition number to back to ssa_name. A partition can also be represented
- by a non-ssa_name variable. This allows ssa_names and their partition to
- be coalesced with live on entry compiler variables, as well as eventually
- having real compiler variables assigned to each partition as part of the
- final stage of going of of ssa.
-
- Non-ssa_names maintain their partition index in the variable annotation.
+ partition number back to ssa_name.
This data structure also supports "views", which work on a subset of all
partitions. This allows the coalescer to decide what partitions are
@@ -72,16 +66,9 @@ typedef struct _var_map
/* Map of partitions numbers to base variable table indexes. */
int *partition_to_base_index;
-
- /* Table of base variable's. */
- VEC (tree, heap) *basevars;
} *var_map;
-/* Index to the basevar table of a non ssa-name variable. */
-#define VAR_ANN_BASE_INDEX(ann) (ann->base_index)
-
-
/* Value used to represent no partition number. */
#define NO_PARTITION -1
@@ -239,8 +226,11 @@ typedef struct tree_live_info_d
/* Bitmap indicating which partitions are global. */
bitmap global;
- /* Bitmap of live on entry blocks for partition elements. */
- bitmap *livein;
+ /* Bitmaps of live on entry blocks for partition elements. */
+ bitmap_head *livein;
+
+ /* Bitmaps of what variables are live on exit for a basic blocks. */
+ bitmap_head *liveout;
/* Number of basic blocks when live on exit calculated. */
int num_blocks;
@@ -250,9 +240,6 @@ typedef struct tree_live_info_d
/* Top of workstack. */
int *stack_top;
-
- /* Bitmap of what variables are live on exit for a basic blocks. */
- bitmap *liveout;
} *tree_live_info_p;
@@ -286,7 +273,7 @@ live_on_entry (tree_live_info_p live, basic_block bb)
&& bb != ENTRY_BLOCK_PTR
&& bb != EXIT_BLOCK_PTR);
- return live->livein[bb->index];
+ return &live->livein[bb->index];
}
@@ -300,7 +287,7 @@ live_on_exit (tree_live_info_p live, basic_block bb)
&& bb != ENTRY_BLOCK_PTR
&& bb != EXIT_BLOCK_PTR);
- return live->liveout[bb->index];
+ return &live->liveout[bb->index];
}
@@ -319,9 +306,9 @@ live_var_map (tree_live_info_p live)
static inline void
live_merge_and_clear (tree_live_info_p live, int p1, int p2)
{
- gcc_checking_assert (live->livein[p1] && live->livein[p2]);
- bitmap_ior_into (live->livein[p1], live->livein[p2]);
- bitmap_zero (live->livein[p2]);
+ gcc_checking_assert (&live->livein[p1] && &live->livein[p2]);
+ bitmap_ior_into (&live->livein[p1], &live->livein[p2]);
+ bitmap_zero (&live->livein[p2]);
}
@@ -330,7 +317,7 @@ live_merge_and_clear (tree_live_info_p live, int p1, int p2)
static inline void
make_live_on_entry (tree_live_info_p live, basic_block bb , int p)
{
- bitmap_set_bit (live->livein[bb->index], p);
+ bitmap_set_bit (&live->livein[bb->index], p);
bitmap_set_bit (live->global, p);
}
diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c
index 38450045408..46097c2bea3 100644
--- a/gcc/tree-ssa-loop-ch.c
+++ b/gcc/tree-ssa-loop-ch.c
@@ -26,9 +26,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "cfgloop.h"
#include "tree-inline.h"
#include "flags.h"
@@ -145,10 +143,6 @@ copy_loop_headers (void)
return 0;
}
-#ifdef ENABLE_CHECKING
- verify_loop_structure ();
-#endif
-
bbs = XNEWVEC (basic_block, n_basic_blocks);
copied_bbs = XNEWVEC (basic_block, n_basic_blocks);
bbs_size = n_basic_blocks;
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 290cb7400a1..0f61631cc79 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -25,11 +25,8 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "timevar.h"
#include "cfgloop.h"
#include "domwalk.h"
#include "params.h"
@@ -186,6 +183,9 @@ static struct
struct pointer_map_t *ttae_cache;
} memory_accesses;
+/* Obstack for the bitmaps in the above data structures. */
+static bitmap_obstack lim_bitmap_obstack;
+
static bool ref_indep_loop_p (struct loop *, mem_ref_p);
/* Minimum cost of an expensive expression. */
@@ -359,7 +359,7 @@ movement_possibility (gimple stmt)
if (gimple_code (stmt) == GIMPLE_PHI
&& gimple_phi_num_args (stmt) <= 2
- && is_gimple_reg (gimple_phi_result (stmt))
+ && !virtual_operand_p (gimple_phi_result (stmt))
&& !SSA_NAME_OCCURS_IN_ABNORMAL_PHI (gimple_phi_result (stmt)))
return MOVE_POSSIBLE;
@@ -937,7 +937,7 @@ static gimple
rewrite_reciprocal (gimple_stmt_iterator *bsi)
{
gimple stmt, stmt1, stmt2;
- tree var, name, lhs, type;
+ tree name, lhs, type;
tree real_one;
gimple_stmt_iterator gsi;
@@ -945,16 +945,11 @@ rewrite_reciprocal (gimple_stmt_iterator *bsi)
lhs = gimple_assign_lhs (stmt);
type = TREE_TYPE (lhs);
- var = create_tmp_var (type, "reciptmp");
- add_referenced_var (var);
- DECL_GIMPLE_REG_P (var) = 1;
-
real_one = build_one_cst (type);
- stmt1 = gimple_build_assign_with_ops (RDIV_EXPR,
- var, real_one, gimple_assign_rhs2 (stmt));
- name = make_ssa_name (var, stmt1);
- gimple_assign_set_lhs (stmt1, name);
+ name = make_temp_ssa_name (type, NULL, "reciptmp");
+ stmt1 = gimple_build_assign_with_ops (RDIV_EXPR, name, real_one,
+ gimple_assign_rhs2 (stmt));
stmt2 = gimple_build_assign_with_ops (MULT_EXPR, lhs, name,
gimple_assign_rhs1 (stmt));
@@ -977,7 +972,7 @@ static gimple
rewrite_bittest (gimple_stmt_iterator *bsi)
{
gimple stmt, use_stmt, stmt1, stmt2;
- tree lhs, var, name, t, a, b;
+ tree lhs, name, t, a, b;
use_operand_p use;
stmt = gsi_stmt (*bsi);
@@ -1026,19 +1021,15 @@ rewrite_bittest (gimple_stmt_iterator *bsi)
gimple_stmt_iterator rsi;
/* 1 << B */
- var = create_tmp_var (TREE_TYPE (a), "shifttmp");
- add_referenced_var (var);
t = fold_build2 (LSHIFT_EXPR, TREE_TYPE (a),
build_int_cst (TREE_TYPE (a), 1), b);
- stmt1 = gimple_build_assign (var, t);
- name = make_ssa_name (var, stmt1);
- gimple_assign_set_lhs (stmt1, name);
+ name = make_temp_ssa_name (TREE_TYPE (a), NULL, "shifttmp");
+ stmt1 = gimple_build_assign (name, t);
/* A & (1 << B) */
t = fold_build2 (BIT_AND_EXPR, TREE_TYPE (a), a, name);
- stmt2 = gimple_build_assign (var, t);
- name = make_ssa_name (var, stmt2);
- gimple_assign_set_lhs (stmt2, name);
+ name = make_temp_ssa_name (TREE_TYPE (a), NULL, "shifttmp");
+ stmt2 = gimple_build_assign (name, t);
/* Replace the SSA_NAME we compare against zero. Adjust
the type of zero accordingly. */
@@ -1294,6 +1285,8 @@ move_computations_stmt (struct dom_walk_data *dw_data,
for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); )
{
+ edge e;
+
stmt = gsi_stmt (bsi);
lim_data = get_lim_data (stmt);
@@ -1326,9 +1319,26 @@ move_computations_stmt (struct dom_walk_data *dw_data,
cost, level->num);
}
- mark_virtual_ops_for_renaming (stmt);
+ e = loop_preheader_edge (level);
+ gcc_assert (!gimple_vdef (stmt));
+ if (gimple_vuse (stmt))
+ {
+ /* The new VUSE is the one from the virtual PHI in the loop
+ header or the one already present. */
+ gimple_stmt_iterator gsi2;
+ for (gsi2 = gsi_start_phis (e->dest);
+ !gsi_end_p (gsi2); gsi_next (&gsi2))
+ {
+ gimple phi = gsi_stmt (gsi2);
+ if (virtual_operand_p (gimple_phi_result (phi)))
+ {
+ gimple_set_vuse (stmt, PHI_ARG_DEF_FROM_EDGE (phi, e));
+ break;
+ }
+ }
+ }
gsi_remove (&bsi, false);
- gsi_insert_on_edge (loop_preheader_edge (level), stmt);
+ gsi_insert_on_edge (e, stmt);
}
}
@@ -1479,18 +1489,11 @@ free_mem_ref_locs (mem_ref_locs_p accs)
/* A function to free the mem_ref object OBJ. */
static void
-memref_free (void *obj)
+memref_free (struct mem_ref *mem)
{
- struct mem_ref *const mem = (struct mem_ref *) obj;
unsigned i;
mem_ref_locs_p accs;
- BITMAP_FREE (mem->stored);
- BITMAP_FREE (mem->indep_loop);
- BITMAP_FREE (mem->dep_loop);
- BITMAP_FREE (mem->indep_ref);
- BITMAP_FREE (mem->dep_ref);
-
FOR_EACH_VEC_ELT (mem_ref_locs_p, mem->accesses_in_loop, i, accs)
free_mem_ref_locs (accs);
VEC_free (mem_ref_locs_p, heap, mem->accesses_in_loop);
@@ -1508,11 +1511,11 @@ mem_ref_alloc (tree mem, unsigned hash, unsigned id)
ref->mem = mem;
ref->id = id;
ref->hash = hash;
- ref->stored = BITMAP_ALLOC (NULL);
- ref->indep_loop = BITMAP_ALLOC (NULL);
- ref->dep_loop = BITMAP_ALLOC (NULL);
- ref->indep_ref = BITMAP_ALLOC (NULL);
- ref->dep_ref = BITMAP_ALLOC (NULL);
+ ref->stored = BITMAP_ALLOC (&lim_bitmap_obstack);
+ ref->indep_loop = BITMAP_ALLOC (&lim_bitmap_obstack);
+ ref->dep_loop = BITMAP_ALLOC (&lim_bitmap_obstack);
+ ref->indep_ref = BITMAP_ALLOC (&lim_bitmap_obstack);
+ ref->dep_ref = BITMAP_ALLOC (&lim_bitmap_obstack);
ref->accesses_in_loop = NULL;
return ref;
@@ -1721,8 +1724,7 @@ analyze_memory_references (void)
unsigned i;
bitmap empty;
- memory_accesses.refs
- = htab_create (100, memref_hash, memref_eq, memref_free);
+ memory_accesses.refs = htab_create (100, memref_hash, memref_eq, NULL);
memory_accesses.refs_list = NULL;
memory_accesses.refs_in_loop = VEC_alloc (bitmap, heap,
number_of_loops ());
@@ -1733,11 +1735,11 @@ analyze_memory_references (void)
for (i = 0; i < number_of_loops (); i++)
{
- empty = BITMAP_ALLOC (NULL);
+ empty = BITMAP_ALLOC (&lim_bitmap_obstack);
VEC_quick_push (bitmap, memory_accesses.refs_in_loop, empty);
- empty = BITMAP_ALLOC (NULL);
+ empty = BITMAP_ALLOC (&lim_bitmap_obstack);
VEC_quick_push (bitmap, memory_accesses.all_refs_in_loop, empty);
- empty = BITMAP_ALLOC (NULL);
+ empty = BITMAP_ALLOC (&lim_bitmap_obstack);
VEC_quick_push (bitmap, memory_accesses.all_refs_stored_in_loop, empty);
}
@@ -1786,7 +1788,6 @@ mem_refs_may_alias_p (tree mem1, tree mem2, struct pointer_map_t **ttae_cache)
static void
rewrite_mem_ref_loc (mem_ref_loc_p loc, tree tmp_var)
{
- mark_virtual_ops_for_renaming (loc->stmt);
*loc->ref = tmp_var;
update_stmt (loc->stmt);
}
@@ -1907,9 +1908,6 @@ gen_lsm_tmp_name (tree ref)
break;
case SSA_NAME:
- ref = SSA_NAME_VAR (ref);
- /* Fallthru. */
-
case VAR_DECL:
case PARM_DECL:
name = get_name (ref);
@@ -2108,7 +2106,7 @@ execute_sm_if_changed_flag_set (struct loop *loop, mem_ref_p ref)
char *str = get_lsm_tmp_name (ref->mem, ~0);
lsm_tmp_name_add ("_flag");
- flag = make_rename_temp (boolean_type_node, str);
+ flag = create_tmp_reg (boolean_type_node, str);
get_all_locs_in_loop (loop, ref, &locs);
FOR_EACH_VEC_ELT (mem_ref_loc_p, locs, i, loc)
{
@@ -2146,7 +2144,7 @@ execute_sm (struct loop *loop, VEC (edge, heap) *exits, mem_ref_p ref)
fprintf (dump_file, " from loop %d\n", loop->num);
}
- tmp_var = make_rename_temp (TREE_TYPE (ref->mem),
+ tmp_var = create_tmp_reg (TREE_TYPE (ref->mem),
get_lsm_tmp_name (ref->mem, ~0));
fmt_data.loop = loop;
@@ -2580,6 +2578,8 @@ tree_ssa_lim_initialize (void)
struct loop *loop;
basic_block bb;
+ bitmap_obstack_initialize (&lim_bitmap_obstack);
+
sbitmap_zero (contains_call);
FOR_EACH_BB (bb)
{
@@ -2613,32 +2613,28 @@ tree_ssa_lim_finalize (void)
{
basic_block bb;
unsigned i;
- bitmap b;
+ mem_ref_p ref;
free_aux_for_edges ();
FOR_EACH_BB (bb)
SET_ALWAYS_EXECUTED_IN (bb, NULL);
+ bitmap_obstack_release (&lim_bitmap_obstack);
pointer_map_destroy (lim_aux_data_map);
- VEC_free (mem_ref_p, heap, memory_accesses.refs_list);
htab_delete (memory_accesses.refs);
- FOR_EACH_VEC_ELT (bitmap, memory_accesses.refs_in_loop, i, b)
- BITMAP_FREE (b);
- VEC_free (bitmap, heap, memory_accesses.refs_in_loop);
+ FOR_EACH_VEC_ELT (mem_ref_p, memory_accesses.refs_list, i, ref)
+ memref_free (ref);
+ VEC_free (mem_ref_p, heap, memory_accesses.refs_list);
- FOR_EACH_VEC_ELT (bitmap, memory_accesses.all_refs_in_loop, i, b)
- BITMAP_FREE (b);
+ VEC_free (bitmap, heap, memory_accesses.refs_in_loop);
VEC_free (bitmap, heap, memory_accesses.all_refs_in_loop);
-
- FOR_EACH_VEC_ELT (bitmap, memory_accesses.all_refs_stored_in_loop, i, b)
- BITMAP_FREE (b);
VEC_free (bitmap, heap, memory_accesses.all_refs_stored_in_loop);
if (memory_accesses.ttae_cache)
- pointer_map_destroy (memory_accesses.ttae_cache);
+ free_affine_expand_cache (&memory_accesses.ttae_cache);
}
/* Moves invariants from loops. Only "expensive" invariants are moved out --
diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c
index 187f53c7a66..48fd3f4425b 100644
--- a/gcc/tree-ssa-loop-ivcanon.c
+++ b/gcc/tree-ssa-loop-ivcanon.c
@@ -40,10 +40,8 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "cfgloop.h"
#include "tree-pass.h"
#include "tree-chrec.h"
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 0abbaff0f5f..c0a825229d7 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -1,5 +1,5 @@
/* Induction variable optimizations.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -69,11 +69,8 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "timevar.h"
#include "cfgloop.h"
#include "tree-pass.h"
#include "ggc.h"
@@ -91,9 +88,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-ssa-propagate.h"
#include "expmed.h"
-static hashval_t mbc_entry_hash (const void *);
-static int mbc_entry_eq (const void*, const void *);
-
/* FIXME: Expressions are expanded to RTL in this pass to determine the
cost of different addressing modes. This should be moved to a TBD
interface between the GIMPLE and RTL worlds. */
@@ -384,11 +378,6 @@ struct iv_ca_delta
static VEC(tree,heap) *decl_rtl_to_reset;
-/* Cached costs for multiplies by constants, and a flag to indicate
- when they're valid. */
-static htab_t mult_costs[2];
-static bool cost_tables_exist = false;
-
static comp_cost force_expr_to_var_cost (tree, bool);
/* Number of uses recorded in DATA. */
@@ -854,26 +843,6 @@ htab_inv_expr_hash (const void *ent)
return expr->hash;
}
-/* Allocate data structures for the cost model. */
-
-void
-initialize_costs (void)
-{
- mult_costs[0] = htab_create (100, mbc_entry_hash, mbc_entry_eq, free);
- mult_costs[1] = htab_create (100, mbc_entry_hash, mbc_entry_eq, free);
- cost_tables_exist = true;
-}
-
-/* Release data structures for the cost model. */
-
-void
-finalize_costs (void)
-{
- cost_tables_exist = false;
- htab_delete (mult_costs[0]);
- htab_delete (mult_costs[1]);
-}
-
/* Initializes data structures used by the iv optimization pass, stored
in DATA. */
@@ -892,8 +861,6 @@ tree_ssa_iv_optimize_init (struct ivopts_data *data)
htab_inv_expr_eq, free);
data->inv_expr_id = 0;
decl_rtl_to_reset = VEC_alloc (tree, heap, 20);
-
- initialize_costs ();
}
/* Returns a memory object to that EXPR points. In case we are able to
@@ -1013,7 +980,7 @@ determine_biv_step (gimple phi)
tree name = PHI_RESULT (phi);
affine_iv iv;
- if (!is_gimple_reg (name))
+ if (virtual_operand_p (name))
return NULL_TREE;
if (!simple_iv (loop, loop, name, &iv, true))
@@ -1258,7 +1225,7 @@ record_invariant (struct ivopts_data *data, tree op, bool nonlinear_use)
struct version_info *info;
if (TREE_CODE (op) != SSA_NAME
- || !is_gimple_reg (op))
+ || virtual_operand_p (op))
return;
bb = gimple_bb (SSA_NAME_DEF_STMT (op));
@@ -1960,7 +1927,7 @@ find_interesting_uses_outside (struct ivopts_data *data, edge exit)
{
phi = gsi_stmt (psi);
def = PHI_ARG_DEF_FROM_EDGE (phi, exit);
- if (is_gimple_reg (def))
+ if (!virtual_operand_p (def))
find_interesting_uses_op (data, def);
}
}
@@ -2852,6 +2819,9 @@ prepare_decl_rtl (tree *expr_p, int *ws, void *data)
case SSA_NAME:
*ws = 0;
obj = SSA_NAME_VAR (*expr_p);
+ /* Defer handling of anonymous SSA_NAMEs to the expander. */
+ if (!obj)
+ return NULL_TREE;
if (!DECL_RTL_SET_P (obj))
x = gen_raw_REG (DECL_MODE (obj), (*regno)++);
break;
@@ -3080,250 +3050,6 @@ adjust_setup_cost (struct ivopts_data *data, unsigned cost)
return cost;
}
-/* Returns cost of addition in MODE. */
-
-unsigned
-add_regs_cost (enum machine_mode mode, bool speed)
-{
- static unsigned costs[NUM_MACHINE_MODES][2];
- rtx seq;
- unsigned cost;
-
- if (costs[mode][speed])
- return costs[mode][speed];
-
- start_sequence ();
- force_operand (gen_rtx_fmt_ee (PLUS, mode,
- gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1),
- gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 2)),
- NULL_RTX);
- seq = get_insns ();
- end_sequence ();
-
- cost = seq_cost (seq, speed);
- if (!cost)
- cost = 1;
-
- costs[mode][speed] = cost;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Addition in %s costs %d\n",
- GET_MODE_NAME (mode), cost);
- return cost;
-}
-
-/* Returns cost of multiplication in MODE. */
-
-unsigned
-multiply_regs_cost (enum machine_mode mode, bool speed)
-{
- static unsigned costs[NUM_MACHINE_MODES][2];
- rtx seq;
- unsigned cost;
-
- if (costs[mode][speed])
- return costs[mode][speed];
-
- start_sequence ();
- force_operand (gen_rtx_fmt_ee (MULT, mode,
- gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1),
- gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 2)),
- NULL_RTX);
- seq = get_insns ();
- end_sequence ();
-
- cost = seq_cost (seq, speed);
- if (!cost)
- cost = 1;
-
- costs[mode][speed] = cost;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Multiplication in %s costs %d\n",
- GET_MODE_NAME (mode), cost);
- return cost;
-}
-
-/* Returns cost of addition with a constant in MODE. */
-
-unsigned
-add_const_cost (enum machine_mode mode, bool speed)
-{
- static unsigned costs[NUM_MACHINE_MODES][2];
- rtx seq;
- unsigned cost;
-
- if (costs[mode][speed])
- return costs[mode][speed];
-
- /* Arbitrarily generate insns for x + 2, as the exact constant
- shouldn't matter. */
- start_sequence ();
- force_operand (gen_rtx_fmt_ee (PLUS, mode,
- gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1),
- gen_int_mode (2, mode)),
- NULL_RTX);
- seq = get_insns ();
- end_sequence ();
-
- cost = seq_cost (seq, speed);
- if (!cost)
- cost = 1;
-
- costs[mode][speed] = cost;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Addition to constant in %s costs %d\n",
- GET_MODE_NAME (mode), cost);
- return cost;
-}
-
-/* Returns cost of extend or truncate in MODE. */
-
-unsigned
-extend_or_trunc_reg_cost (tree type_to, tree type_from, bool speed)
-{
- static unsigned costs[NUM_MACHINE_MODES][NUM_MACHINE_MODES][2];
- rtx seq;
- unsigned cost;
- enum machine_mode mode_to = TYPE_MODE (type_to);
- enum machine_mode mode_from = TYPE_MODE (type_from);
- tree size_to = TYPE_SIZE (type_to);
- tree size_from = TYPE_SIZE (type_from);
- enum rtx_code code;
-
- gcc_assert (TREE_CODE (size_to) == INTEGER_CST
- && TREE_CODE (size_from) == INTEGER_CST);
-
- if (costs[mode_to][mode_from][speed])
- return costs[mode_to][mode_from][speed];
-
- if (tree_int_cst_lt (size_to, size_from))
- code = TRUNCATE;
- else if (TYPE_UNSIGNED (type_to))
- code = ZERO_EXTEND;
- else
- code = SIGN_EXTEND;
-
- start_sequence ();
- gen_rtx_fmt_e (code, mode_to,
- gen_raw_REG (mode_from, LAST_VIRTUAL_REGISTER + 1));
- seq = get_insns ();
- end_sequence ();
-
- cost = seq_cost (seq, speed);
- if (!cost)
- cost = 1;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Conversion from %s to %s costs %d\n",
- GET_MODE_NAME (mode_to), GET_MODE_NAME (mode_from), cost);
-
- costs[mode_to][mode_from][speed] = cost;
- return cost;
-}
-
-/* Returns cost of negation in MODE. */
-
-unsigned
-negate_reg_cost (enum machine_mode mode, bool speed)
-{
- static unsigned costs[NUM_MACHINE_MODES][2];
- rtx seq;
- unsigned cost;
-
- if (costs[mode][speed])
- return costs[mode][speed];
-
- start_sequence ();
- force_operand (gen_rtx_fmt_e (NEG, mode,
- gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1)),
- NULL_RTX);
- seq = get_insns ();
- end_sequence ();
-
- cost = seq_cost (seq, speed);
- if (!cost)
- cost = 1;
-
- costs[mode][speed] = cost;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Negation in %s costs %d\n",
- GET_MODE_NAME (mode), cost);
- return cost;
-}
-
-/* Entry in a hashtable of already known costs for multiplication. */
-struct mbc_entry
-{
- HOST_WIDE_INT cst; /* The constant to multiply by. */
- enum machine_mode mode; /* In mode. */
- unsigned cost; /* The cost. */
-};
-
-/* Counts hash value for the ENTRY. */
-
-static hashval_t
-mbc_entry_hash (const void *entry)
-{
- const struct mbc_entry *e = (const struct mbc_entry *) entry;
-
- return 57 * (hashval_t) e->mode + (hashval_t) (e->cst % 877);
-}
-
-/* Compares the hash table entries ENTRY1 and ENTRY2. */
-
-static int
-mbc_entry_eq (const void *entry1, const void *entry2)
-{
- const struct mbc_entry *e1 = (const struct mbc_entry *) entry1;
- const struct mbc_entry *e2 = (const struct mbc_entry *) entry2;
-
- return (e1->mode == e2->mode
- && e1->cst == e2->cst);
-}
-
-/* Returns cost of multiplication by constant CST in MODE. */
-
-unsigned
-multiply_by_const_cost (HOST_WIDE_INT cst, enum machine_mode mode, bool speed)
-{
- struct mbc_entry **cached, act;
- rtx seq;
- unsigned cost;
-
- gcc_assert (cost_tables_exist);
-
- act.mode = mode;
- act.cst = cst;
- cached = (struct mbc_entry **)
- htab_find_slot (mult_costs[speed], &act, INSERT);
-
- if (*cached)
- return (*cached)->cost;
-
- *cached = XNEW (struct mbc_entry);
- (*cached)->mode = mode;
- (*cached)->cst = cst;
-
- start_sequence ();
- expand_mult (mode, gen_raw_REG (mode, LAST_VIRTUAL_REGISTER + 1),
- gen_int_mode (cst, mode), NULL_RTX, 0);
- seq = get_insns ();
- end_sequence ();
-
- cost = seq_cost (seq, speed);
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Multiplication by %d in %s costs %d\n",
- (int) cst, GET_MODE_NAME (mode), cost);
-
- (*cached)->cost = cost;
-
- return cost;
-}
-
/* Returns true if multiplying by RATIO is allowed in an address. Test the
validity for a memory reference accessing memory of mode MODE in
address space AS. */
@@ -3394,7 +3120,7 @@ multiplier_allowed_in_address_p (HOST_WIDE_INT ratio, enum machine_mode mode,
TODO -- there must be some better way. This all is quite crude. */
-typedef struct
+typedef struct address_cost_data_s
{
HOST_WIDE_INT min_offset, max_offset;
unsigned costs[2][2][2][2];
@@ -3447,7 +3173,7 @@ get_address_cost (bool symbol_present, bool var_present,
for (i = width; i >= 0; i--)
{
- off = -((HOST_WIDE_INT) 1 << i);
+ off = -((unsigned HOST_WIDE_INT) 1 << i);
XEXP (addr, 1) = gen_int_mode (off, address_mode);
if (memory_address_addr_space_p (mem_mode, addr, as))
break;
@@ -3456,7 +3182,7 @@ get_address_cost (bool symbol_present, bool var_present,
for (i = width; i >= 0; i--)
{
- off = ((HOST_WIDE_INT) 1 << i) - 1;
+ off = ((unsigned HOST_WIDE_INT) 1 << i) - 1;
XEXP (addr, 1) = gen_int_mode (off, address_mode);
if (memory_address_addr_space_p (mem_mode, addr, as))
break;
@@ -3585,7 +3311,7 @@ get_address_cost (bool symbol_present, bool var_present,
If VAR_PRESENT is true, try whether the mode with
SYMBOL_PRESENT = false is cheaper even with cost of addition, and
if this is the case, use it. */
- add_c = add_regs_cost (address_mode, speed);
+ add_c = add_cost (speed, address_mode);
for (i = 0; i < 8; i++)
{
var_p = i & 1;
@@ -3666,10 +3392,10 @@ get_address_cost (bool symbol_present, bool var_present,
&& multiplier_allowed_in_address_p (ratio, mem_mode, as));
if (ratio != 1 && !ratio_p)
- cost += multiply_by_const_cost (ratio, address_mode, speed);
+ cost += mult_by_coeff_cost (ratio, address_mode, speed);
if (s_offset && !offset_p && !symbol_present)
- cost += add_regs_cost (address_mode, speed);
+ cost += add_cost (speed, address_mode);
if (may_autoinc)
*may_autoinc = autoinc;
@@ -3699,10 +3425,10 @@ get_shiftadd_cost (tree expr, enum machine_mode mode, comp_cost cost0,
return false;
sa_cost = (TREE_CODE (expr) != MINUS_EXPR
- ? shiftadd_cost[speed][mode][m]
+ ? shiftadd_cost (speed, mode, m)
: (mult == op1
- ? shiftsub1_cost[speed][mode][m]
- : shiftsub0_cost[speed][mode][m]));
+ ? shiftsub1_cost (speed, mode, m)
+ : shiftsub0_cost (speed, mode, m)));
res = new_cost (sa_cost, 0);
res = add_costs (res, mult == op1 ? cost0 : cost1);
@@ -3836,7 +3562,7 @@ force_expr_to_var_cost (tree expr, bool speed)
case PLUS_EXPR:
case MINUS_EXPR:
case NEGATE_EXPR:
- cost = new_cost (add_regs_cost (mode, speed), 0);
+ cost = new_cost (add_cost (speed, mode), 0);
if (TREE_CODE (expr) != NEGATE_EXPR)
{
tree mult = NULL_TREE;
@@ -3848,19 +3574,19 @@ force_expr_to_var_cost (tree expr, bool speed)
if (mult != NULL_TREE
&& cst_and_fits_in_hwi (TREE_OPERAND (mult, 1))
- && get_shiftadd_cost (expr, mode, cost0, cost1, mult, speed,
- &sa_cost))
+ && get_shiftadd_cost (expr, mode, cost0, cost1, mult,
+ speed, &sa_cost))
return sa_cost;
}
break;
case MULT_EXPR:
if (cst_and_fits_in_hwi (op0))
- cost = new_cost (multiply_by_const_cost (int_cst_value (op0),
- mode, speed), 0);
+ cost = new_cost (mult_by_coeff_cost (int_cst_value (op0),
+ mode, speed), 0);
else if (cst_and_fits_in_hwi (op1))
- cost = new_cost (multiply_by_const_cost (int_cst_value (op1),
- mode, speed), 0);
+ cost = new_cost (mult_by_coeff_cost (int_cst_value (op1),
+ mode, speed), 0);
else
return new_cost (target_spill_cost [speed], 0);
break;
@@ -4026,7 +3752,7 @@ difference_cost (struct ivopts_data *data,
if (integer_zerop (e1))
{
comp_cost cost = force_var_cost (data, e2, depends_on);
- cost.cost += multiply_by_const_cost (-1, mode, data->speed);
+ cost.cost += mult_by_coeff_cost (-1, mode, data->speed);
return cost;
}
@@ -4337,7 +4063,7 @@ get_computation_cost_at (struct ivopts_data *data,
&symbol_present, &var_present,
&offset, depends_on));
cost.cost /= avg_loop_niter (data->current_loop);
- cost.cost += add_regs_cost (TYPE_MODE (ctype), data->speed);
+ cost.cost += add_cost (data->speed, TYPE_MODE (ctype));
}
if (inv_expr_id)
@@ -4370,7 +4096,7 @@ get_computation_cost_at (struct ivopts_data *data,
if (!symbol_present && !var_present && !offset)
{
if (ratio != 1)
- cost.cost += multiply_by_const_cost (ratio, TYPE_MODE (ctype), speed);
+ cost.cost += mult_by_coeff_cost (ratio, TYPE_MODE (ctype), speed);
return cost;
}
@@ -4378,18 +4104,18 @@ get_computation_cost_at (struct ivopts_data *data,
are added once to the variable, if present. */
if (var_present && (symbol_present || offset))
cost.cost += adjust_setup_cost (data,
- add_regs_cost (TYPE_MODE (ctype), speed));
+ add_cost (speed, TYPE_MODE (ctype)));
/* Having offset does not affect runtime cost in case it is added to
symbol, but it increases complexity. */
if (offset)
cost.complexity++;
- cost.cost += add_regs_cost (TYPE_MODE (ctype), speed);
+ cost.cost += add_cost (speed, TYPE_MODE (ctype));
aratio = ratio > 0 ? ratio : -ratio;
if (aratio != 1)
- cost.cost += multiply_by_const_cost (aratio, TYPE_MODE (ctype), speed);
+ cost.cost += mult_by_coeff_cost (aratio, TYPE_MODE (ctype), speed);
return cost;
fallback:
@@ -4919,8 +4645,8 @@ parm_decl_cost (struct ivopts_data *data, tree bound)
STRIP_NOPS (sbound);
if (TREE_CODE (sbound) == SSA_NAME
+ && SSA_NAME_IS_DEFAULT_DEF (sbound)
&& TREE_CODE (SSA_NAME_VAR (sbound)) == PARM_DECL
- && gimple_nop_p (SSA_NAME_DEF_STMT (sbound))
&& data->body_includes_call)
return COSTS_N_INSNS (1);
@@ -5235,7 +4961,7 @@ determine_iv_cost (struct ivopts_data *data, struct iv_cand *cand)
or a const set. */
if (cost_base.cost == 0)
cost_base.cost = COSTS_N_INSNS (1);
- cost_step = add_regs_cost (TYPE_MODE (TREE_TYPE (base)), data->speed);
+ cost_step = add_cost (data->speed, TYPE_MODE (TREE_TYPE (base)));
cost = cost_step + adjust_setup_cost (data, cost_base.cost);
@@ -5243,6 +4969,7 @@ determine_iv_cost (struct ivopts_data *data, struct iv_cand *cand)
The reason is to make debugging simpler; so this is not relevant for
artificial ivs created by other optimization passes. */
if (cand->pos != IP_ORIGINAL
+ || !SSA_NAME_VAR (cand->var_before)
|| DECL_ARTIFICIAL (SSA_NAME_VAR (cand->var_before)))
cost++;
@@ -5321,7 +5048,7 @@ determine_set_costs (struct ivopts_data *data)
phi = gsi_stmt (psi);
op = PHI_RESULT (phi);
- if (!is_gimple_reg (op))
+ if (virtual_operand_p (op))
continue;
if (get_iv (data, op))
@@ -6294,7 +6021,6 @@ create_new_iv (struct ivopts_data *data, struct iv_cand *cand)
}
gimple_add_tmp_var (cand->var_before);
- add_referenced_var (cand->var_before);
base = unshare_expr (cand->iv->base);
@@ -6807,8 +6533,6 @@ tree_ssa_iv_optimize_finalize (struct ivopts_data *data)
VEC_free (iv_use_p, heap, data->iv_uses);
VEC_free (iv_cand_p, heap, data->iv_candidates);
htab_delete (data->inv_expr_tab);
-
- finalize_costs ();
}
/* Returns true if the loop body BODY includes any function calls. */
diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c
index e2e76058251..832a5011493 100644
--- a/gcc/tree-ssa-loop-manip.c
+++ b/gcc/tree-ssa-loop-manip.c
@@ -26,15 +26,19 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "timevar.h"
+#include "dumpfile.h"
+#include "gimple-pretty-print.h"
#include "cfgloop.h"
-#include "tree-pass.h"
+#include "tree-pass.h" /* ??? for TODO_update_ssa but this isn't a pass. */
#include "tree-scalar-evolution.h"
#include "params.h"
#include "tree-inline.h"
#include "langhooks.h"
+/* All bitmaps for rewriting into loop-closed SSA go on this obstack,
+ so that we can free them all at once. */
+static bitmap_obstack loop_renamer_obstack;
+
/* Creates an induction variable with value BASE + STEP * iteration in LOOP.
It is expected that neither BASE nor STEP are shared with other expressions
(unless the sharing rules allow this). Use VAR as a base var_decl for it
@@ -56,16 +60,18 @@ create_iv (tree base, tree step, tree var, struct loop *loop,
enum tree_code incr_op = PLUS_EXPR;
edge pe = loop_preheader_edge (loop);
- if (!var)
+ if (var != NULL_TREE)
{
- var = create_tmp_var (TREE_TYPE (base), "ivtmp");
- add_referenced_var (var);
+ vb = make_ssa_name (var, NULL);
+ va = make_ssa_name (var, NULL);
+ }
+ else
+ {
+ vb = make_temp_ssa_name (TREE_TYPE (base), NULL, "ivtmp");
+ va = make_temp_ssa_name (TREE_TYPE (base), NULL, "ivtmp");
}
-
- vb = make_ssa_name (var, NULL);
if (var_before)
*var_before = vb;
- va = make_ssa_name (var, NULL);
if (var_after)
*var_after = va;
@@ -120,66 +126,193 @@ create_iv (tree base, tree step, tree var, struct loop *loop,
gsi_insert_seq_on_edge_immediate (pe, stmts);
stmt = create_phi_node (vb, loop->header);
- SSA_NAME_DEF_STMT (vb) = stmt;
add_phi_arg (stmt, initial, loop_preheader_edge (loop), UNKNOWN_LOCATION);
add_phi_arg (stmt, va, loop_latch_edge (loop), UNKNOWN_LOCATION);
}
-/* Add exit phis for the USE on EXIT. */
+/* Return the innermost superloop LOOP of USE_LOOP that is a superloop of
+ both DEF_LOOP and USE_LOOP. */
+
+static inline struct loop *
+find_sibling_superloop (struct loop *use_loop, struct loop *def_loop)
+{
+ unsigned ud = loop_depth (use_loop);
+ unsigned dd = loop_depth (def_loop);
+ gcc_assert (ud > 0 && dd > 0);
+ if (ud > dd)
+ use_loop = superloop_at_depth (use_loop, dd);
+ if (ud < dd)
+ def_loop = superloop_at_depth (def_loop, ud);
+ while (loop_outer (use_loop) != loop_outer (def_loop))
+ {
+ use_loop = loop_outer (use_loop);
+ def_loop = loop_outer (def_loop);
+ gcc_assert (use_loop && def_loop);
+ }
+ return use_loop;
+}
+
+/* DEF_BB is a basic block containing a DEF that needs rewriting into
+ loop-closed SSA form. USE_BLOCKS is the set of basic blocks containing
+ uses of DEF that "escape" from the loop containing DEF_BB (i.e. blocks in
+ USE_BLOCKS are dominated by DEF_BB but not in the loop father of DEF_B).
+ ALL_EXITS[I] is the set of all basic blocks that exit loop I.
+
+ Compute the subset of LOOP_EXITS that exit the loop containing DEF_BB
+ or one of its loop fathers, in which DEF is live. This set is returned
+ in the bitmap LIVE_EXITS.
+
+ Instead of computing the complete livein set of the def, we use the loop
+ nesting tree as a form of poor man's structure analysis. This greatly
+ speeds up the analysis, which is important because this function may be
+ called on all SSA names that need rewriting, one at a time. */
static void
-add_exit_phis_edge (basic_block exit, tree use)
+compute_live_loop_exits (bitmap live_exits, bitmap use_blocks,
+ bitmap *loop_exits, basic_block def_bb)
{
- gimple phi, def_stmt = SSA_NAME_DEF_STMT (use);
- basic_block def_bb = gimple_bb (def_stmt);
- struct loop *def_loop;
+ unsigned i;
+ bitmap_iterator bi;
+ VEC (basic_block, heap) *worklist;
+ struct loop *def_loop = def_bb->loop_father;
+ unsigned def_loop_depth = loop_depth (def_loop);
+ bitmap def_loop_exits;
+
+ /* Normally the work list size is bounded by the number of basic
+ blocks in the largest loop. We don't know this number, but we
+ can be fairly sure that it will be relatively small. */
+ worklist = VEC_alloc (basic_block, heap, MAX (8, n_basic_blocks / 128));
+
+ EXECUTE_IF_SET_IN_BITMAP (use_blocks, 0, i, bi)
+ {
+ basic_block use_bb = BASIC_BLOCK (i);
+ struct loop *use_loop = use_bb->loop_father;
+ gcc_checking_assert (def_loop != use_loop
+ && ! flow_loop_nested_p (def_loop, use_loop));
+ if (! flow_loop_nested_p (use_loop, def_loop))
+ use_bb = find_sibling_superloop (use_loop, def_loop)->header;
+ if (bitmap_set_bit (live_exits, use_bb->index))
+ VEC_safe_push (basic_block, heap, worklist, use_bb);
+ }
+
+ /* Iterate until the worklist is empty. */
+ while (! VEC_empty (basic_block, worklist))
+ {
+ edge e;
+ edge_iterator ei;
+
+ /* Pull a block off the worklist. */
+ basic_block bb = VEC_pop (basic_block, worklist);
+
+ /* Make sure we have at least enough room in the work list
+ for all predecessors of this block. */
+ VEC_reserve (basic_block, heap, worklist, EDGE_COUNT (bb->preds));
+
+ /* For each predecessor block. */
+ FOR_EACH_EDGE (e, ei, bb->preds)
+ {
+ basic_block pred = e->src;
+ struct loop *pred_loop = pred->loop_father;
+ unsigned pred_loop_depth = loop_depth (pred_loop);
+ bool pred_visited;
+
+ /* We should have met DEF_BB along the way. */
+ gcc_assert (pred != ENTRY_BLOCK_PTR);
+
+ if (pred_loop_depth >= def_loop_depth)
+ {
+ if (pred_loop_depth > def_loop_depth)
+ pred_loop = superloop_at_depth (pred_loop, def_loop_depth);
+ /* If we've reached DEF_LOOP, our train ends here. */
+ if (pred_loop == def_loop)
+ continue;
+ }
+ else if (! flow_loop_nested_p (pred_loop, def_loop))
+ pred = find_sibling_superloop (pred_loop, def_loop)->header;
+
+ /* Add PRED to the LIVEIN set. PRED_VISITED is true if
+ we had already added PRED to LIVEIN before. */
+ pred_visited = !bitmap_set_bit (live_exits, pred->index);
+
+ /* If we have visited PRED before, don't add it to the worklist.
+ If BB dominates PRED, then we're probably looking at a loop.
+ We're only interested in looking up in the dominance tree
+ because DEF_BB dominates all the uses. */
+ if (pred_visited || dominated_by_p (CDI_DOMINATORS, pred, bb))
+ continue;
+
+ VEC_quick_push (basic_block, worklist, pred);
+ }
+ }
+ VEC_free (basic_block, heap, worklist);
+
+ def_loop_exits = BITMAP_ALLOC (&loop_renamer_obstack);
+ for (struct loop *loop = def_loop;
+ loop != current_loops->tree_root;
+ loop = loop_outer (loop))
+ bitmap_ior_into (def_loop_exits, loop_exits[loop->num]);
+ bitmap_and_into (live_exits, def_loop_exits);
+ BITMAP_FREE (def_loop_exits);
+}
+
+/* Add a loop-closing PHI for VAR in basic block EXIT. */
+
+static void
+add_exit_phi (basic_block exit, tree var)
+{
+ gimple phi;
edge e;
edge_iterator ei;
- /* Check that some of the edges entering the EXIT block exits a loop in
- that USE is defined. */
+#ifdef ENABLE_CHECKING
+ /* Check that at least one of the edges entering the EXIT block exits
+ the loop, or a superloop of that loop, that VAR is defined in. */
+ gimple def_stmt = SSA_NAME_DEF_STMT (var);
+ basic_block def_bb = gimple_bb (def_stmt);
FOR_EACH_EDGE (e, ei, exit->preds)
{
- def_loop = find_common_loop (def_bb->loop_father, e->src->loop_father);
- if (!flow_bb_inside_loop_p (def_loop, e->dest))
+ struct loop *aloop = find_common_loop (def_bb->loop_father,
+ e->src->loop_father);
+ if (!flow_bb_inside_loop_p (aloop, e->dest))
break;
}
- if (!e)
- return;
+ gcc_checking_assert (e);
+#endif
- phi = create_phi_node (use, exit);
- create_new_def_for (gimple_phi_result (phi), phi,
- gimple_phi_result_ptr (phi));
+ phi = create_phi_node (NULL_TREE, exit);
+ create_new_def_for (var, phi, gimple_phi_result_ptr (phi));
FOR_EACH_EDGE (e, ei, exit->preds)
- add_phi_arg (phi, use, e, UNKNOWN_LOCATION);
+ add_phi_arg (phi, var, e, UNKNOWN_LOCATION);
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file, ";; Created LCSSA PHI: ");
+ print_gimple_stmt (dump_file, phi, 0, dump_flags);
+ }
}
/* Add exit phis for VAR that is used in LIVEIN.
- Exits of the loops are stored in EXITS. */
+ Exits of the loops are stored in LOOP_EXITS. */
static void
-add_exit_phis_var (tree var, bitmap livein, bitmap exits)
+add_exit_phis_var (tree var, bitmap use_blocks, bitmap *loop_exits)
{
- bitmap def;
unsigned index;
- basic_block def_bb = gimple_bb (SSA_NAME_DEF_STMT (var));
bitmap_iterator bi;
+ basic_block def_bb = gimple_bb (SSA_NAME_DEF_STMT (var));
+ bitmap live_exits = BITMAP_ALLOC (&loop_renamer_obstack);
- if (is_gimple_reg (var))
- bitmap_clear_bit (livein, def_bb->index);
- else
- bitmap_set_bit (livein, def_bb->index);
+ gcc_checking_assert (! bitmap_bit_p (use_blocks, def_bb->index));
- def = BITMAP_ALLOC (NULL);
- bitmap_set_bit (def, def_bb->index);
- compute_global_livein (livein, def);
- BITMAP_FREE (def);
+ compute_live_loop_exits (live_exits, use_blocks, loop_exits, def_bb);
- EXECUTE_IF_AND_IN_BITMAP (exits, livein, 0, index, bi)
+ EXECUTE_IF_SET_IN_BITMAP (live_exits, 0, index, bi)
{
- add_exit_phis_edge (BASIC_BLOCK (index), var);
+ add_exit_phi (BASIC_BLOCK (index), var);
}
+
+ BITMAP_FREE (live_exits);
}
/* Add exit phis for the names marked in NAMES_TO_RENAME.
@@ -187,7 +320,7 @@ add_exit_phis_var (tree var, bitmap livein, bitmap exits)
names are used are stored in USE_BLOCKS. */
static void
-add_exit_phis (bitmap names_to_rename, bitmap *use_blocks, bitmap loop_exits)
+add_exit_phis (bitmap names_to_rename, bitmap *use_blocks, bitmap *loop_exits)
{
unsigned i;
bitmap_iterator bi;
@@ -198,28 +331,24 @@ add_exit_phis (bitmap names_to_rename, bitmap *use_blocks, bitmap loop_exits)
}
}
-/* Returns a bitmap of all loop exit edge targets. */
+/* Fill the array of bitmaps LOOP_EXITS with all loop exit edge targets. */
-static bitmap
-get_loops_exits (void)
+static void
+get_loops_exits (bitmap *loop_exits)
{
- bitmap exits = BITMAP_ALLOC (NULL);
- basic_block bb;
+ loop_iterator li;
+ struct loop *loop;
+ unsigned j;
edge e;
- edge_iterator ei;
- FOR_EACH_BB (bb)
+ FOR_EACH_LOOP (li, loop, 0)
{
- FOR_EACH_EDGE (e, ei, bb->preds)
- if (e->src != ENTRY_BLOCK_PTR
- && !flow_bb_inside_loop_p (e->src->loop_father, bb))
- {
- bitmap_set_bit (exits, bb->index);
- break;
- }
+ VEC(edge, heap) *exit_edges = get_loop_exit_edges (loop);
+ loop_exits[loop->num] = BITMAP_ALLOC (&loop_renamer_obstack);
+ FOR_EACH_VEC_ELT (edge, exit_edges, j, e)
+ bitmap_set_bit (loop_exits[loop->num], e->dest->index);
+ VEC_free (edge, heap, exit_edges);
}
-
- return exits;
}
/* For USE in BB, if it is used outside of the loop it is defined in,
@@ -237,10 +366,6 @@ find_uses_to_rename_use (basic_block bb, tree use, bitmap *use_blocks,
if (TREE_CODE (use) != SSA_NAME)
return;
- /* We don't need to keep virtual operands in loop-closed form. */
- if (!is_gimple_reg (use))
- return;
-
ver = SSA_NAME_VERSION (use);
def_bb = gimple_bb (SSA_NAME_DEF_STMT (use));
if (!def_bb)
@@ -256,11 +381,11 @@ find_uses_to_rename_use (basic_block bb, tree use, bitmap *use_blocks,
if (flow_bb_inside_loop_p (def_loop, bb))
return;
- if (!use_blocks[ver])
- use_blocks[ver] = BITMAP_ALLOC (NULL);
+ /* If we're seeing VER for the first time, we still have to allocate
+ a bitmap for its uses. */
+ if (bitmap_set_bit (need_phis, ver))
+ use_blocks[ver] = BITMAP_ALLOC (&loop_renamer_obstack);
bitmap_set_bit (use_blocks[ver], bb->index);
-
- bitmap_set_bit (need_phis, ver);
}
/* For uses in STMT, mark names that are used outside of the loop they are
@@ -296,8 +421,11 @@ find_uses_to_rename_bb (basic_block bb, bitmap *use_blocks, bitmap need_phis)
FOR_EACH_EDGE (e, ei, bb->succs)
for (bsi = gsi_start_phis (e->dest); !gsi_end_p (bsi); gsi_next (&bsi))
- find_uses_to_rename_use (bb, PHI_ARG_DEF_FROM_EDGE (gsi_stmt (bsi), e),
- use_blocks, need_phis);
+ {
+ gimple phi = gsi_stmt (bsi);
+ find_uses_to_rename_use (bb, PHI_ARG_DEF_FROM_EDGE (phi, e),
+ use_blocks, need_phis);
+ }
for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
find_uses_to_rename_stmt (gsi_stmt (bsi), use_blocks, need_phis);
@@ -315,6 +443,7 @@ find_uses_to_rename (bitmap changed_bbs, bitmap *use_blocks, bitmap need_phis)
unsigned index;
bitmap_iterator bi;
+ /* ??? If CHANGED_BBS is empty we rewrite the whole function -- why? */
if (changed_bbs && !bitmap_empty_p (changed_bbs))
{
EXECUTE_IF_SET_IN_BITMAP (changed_bbs, 0, index, bi)
@@ -339,6 +468,9 @@ find_uses_to_rename (bitmap changed_bbs, bitmap *use_blocks, bitmap need_phis)
1) Updating it during unrolling/peeling/versioning is trivial, since
we do not need to care about the uses outside of the loop.
+ The same applies to virtual operands which are also rewritten into
+ loop closed SSA form. Note that virtual operands are always live
+ until function exit.
2) The behavior of all uses of an induction variable is the same.
Without this, you need to distinguish the case when the variable
is used outside of the loop it is defined in, for example
@@ -366,24 +498,31 @@ find_uses_to_rename (bitmap changed_bbs, bitmap *use_blocks, bitmap need_phis)
void
rewrite_into_loop_closed_ssa (bitmap changed_bbs, unsigned update_flag)
{
- bitmap loop_exits;
+ bitmap *loop_exits;
bitmap *use_blocks;
- unsigned i, old_num_ssa_names;
bitmap names_to_rename;
loops_state_set (LOOP_CLOSED_SSA);
if (number_of_loops () <= 1)
return;
- loop_exits = get_loops_exits ();
- names_to_rename = BITMAP_ALLOC (NULL);
-
/* If the pass has caused the SSA form to be out-of-date, update it
now. */
update_ssa (update_flag);
- old_num_ssa_names = num_ssa_names;
- use_blocks = XCNEWVEC (bitmap, old_num_ssa_names);
+ bitmap_obstack_initialize (&loop_renamer_obstack);
+
+ names_to_rename = BITMAP_ALLOC (&loop_renamer_obstack);
+
+ /* An array of bitmaps where LOOP_EXITS[I] is the set of basic blocks
+ that are the destination of an edge exiting loop number I. */
+ loop_exits = XNEWVEC (bitmap, number_of_loops ());
+ get_loops_exits (loop_exits);
+
+ /* Uses of names to rename. We don't have to initialize this array,
+ because we know that we will only have entries for the SSA names
+ in NAMES_TO_RENAME. */
+ use_blocks = XNEWVEC (bitmap, num_ssa_names);
/* Find the uses outside loops. */
find_uses_to_rename (changed_bbs, use_blocks, names_to_rename);
@@ -392,11 +531,9 @@ rewrite_into_loop_closed_ssa (bitmap changed_bbs, unsigned update_flag)
rewrite. */
add_exit_phis (names_to_rename, use_blocks, loop_exits);
- for (i = 0; i < old_num_ssa_names; i++)
- BITMAP_FREE (use_blocks[i]);
+ bitmap_obstack_release (&loop_renamer_obstack);
free (use_blocks);
- BITMAP_FREE (loop_exits);
- BITMAP_FREE (names_to_rename);
+ free (loop_exits);
/* Fix up all the names found to be used outside their original
loops. */
@@ -411,7 +548,7 @@ check_loop_closed_ssa_use (basic_block bb, tree use)
gimple def;
basic_block def_bb;
- if (TREE_CODE (use) != SSA_NAME || !is_gimple_reg (use))
+ if (TREE_CODE (use) != SSA_NAME || virtual_operand_p (use))
return;
def = SSA_NAME_DEF_STMT (use);
@@ -431,7 +568,7 @@ check_loop_closed_ssa_stmt (basic_block bb, gimple stmt)
if (is_gimple_debug (stmt))
return;
- FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_ALL_USES)
+ FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_USE)
check_loop_closed_ssa_use (bb, var);
}
@@ -503,7 +640,6 @@ split_loop_exit_edge (edge exit)
of the SSA name out of the loop. */
new_name = duplicate_ssa_name (name, NULL);
new_phi = create_phi_node (new_name, bb);
- SSA_NAME_DEF_STMT (new_name) = new_phi;
add_phi_arg (new_phi, name, exit, locus);
SET_USE (op_p, new_name);
}
@@ -884,7 +1020,7 @@ tree_transform_and_unroll_loop (struct loop *loop, unsigned factor,
enum tree_code exit_cmp;
gimple phi_old_loop, phi_new_loop, phi_rest;
gimple_stmt_iterator psi_old_loop, psi_new_loop;
- tree init, next, new_init, var;
+ tree init, next, new_init;
struct loop *new_loop;
basic_block rest, exit_bb;
edge old_entry, new_entry, old_latch, precond_edge, new_exit;
@@ -1004,25 +1140,17 @@ tree_transform_and_unroll_loop (struct loop *loop, unsigned factor,
if (TREE_CODE (next) == SSA_NAME
&& useless_type_conversion_p (TREE_TYPE (next),
TREE_TYPE (init)))
- var = SSA_NAME_VAR (next);
+ new_init = copy_ssa_name (next, NULL);
else if (TREE_CODE (init) == SSA_NAME
&& useless_type_conversion_p (TREE_TYPE (init),
TREE_TYPE (next)))
- var = SSA_NAME_VAR (init);
+ new_init = copy_ssa_name (init, NULL);
else if (useless_type_conversion_p (TREE_TYPE (next), TREE_TYPE (init)))
- {
- var = create_tmp_var (TREE_TYPE (next), "unrinittmp");
- add_referenced_var (var);
- }
+ new_init = make_temp_ssa_name (TREE_TYPE (next), NULL, "unrinittmp");
else
- {
- var = create_tmp_var (TREE_TYPE (init), "unrinittmp");
- add_referenced_var (var);
- }
+ new_init = make_temp_ssa_name (TREE_TYPE (init), NULL, "unrinittmp");
- new_init = make_ssa_name (var, NULL);
phi_rest = create_phi_node (new_init, rest);
- SSA_NAME_DEF_STMT (new_init) = phi_rest;
add_phi_arg (phi_rest, init, precond_edge, UNKNOWN_LOCATION);
add_phi_arg (phi_rest, next, new_exit, UNKNOWN_LOCATION);
@@ -1124,7 +1252,7 @@ rewrite_phi_with_iv (loop_p loop,
gimple stmt, phi = gsi_stmt (*psi);
tree atype, mtype, val, res = PHI_RESULT (phi);
- if (!is_gimple_reg (res) || res == main_iv)
+ if (virtual_operand_p (res) || res == main_iv)
{
gsi_next (psi);
return;
@@ -1208,7 +1336,7 @@ canonicalize_loop_ivs (struct loop *loop, tree *nit, bool bump_in_latch)
bool uns;
type = TREE_TYPE (res);
- if (!is_gimple_reg (res)
+ if (virtual_operand_p (res)
|| (!INTEGRAL_TYPE_P (type)
&& !POINTER_TYPE_P (type))
|| TYPE_PRECISION (type) < precision)
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index 8c07e6b7d82..8f1e2b4a964 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -25,13 +25,11 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "intl.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "cfgloop.h"
-#include "tree-pass.h"
#include "ggc.h"
#include "tree-chrec.h"
#include "tree-scalar-evolution.h"
@@ -2289,7 +2287,10 @@ find_loop_niter_by_eval (struct loop *loop, edge *exit)
/* Loops with multiple exits are expensive to handle and less important. */
if (!flag_expensive_optimizations
&& VEC_length (edge, exits) > 1)
- return chrec_dont_know;
+ {
+ VEC_free (edge, heap, exits);
+ return chrec_dont_know;
+ }
FOR_EACH_VEC_ELT (edge, exits, i, ex)
{
diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c
index bc2c81ec420..fe4df9a06f7 100644
--- a/gcc/tree-ssa-loop-prefetch.c
+++ b/gcc/tree-ssa-loop-prefetch.c
@@ -27,8 +27,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "tree-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "timevar.h"
#include "cfgloop.h"
#include "tree-pass.h"
#include "insn-config.h"
@@ -1206,7 +1204,6 @@ emit_mfence_after_loop (struct loop *loop)
bsi = gsi_after_labels (exit->dest);
gsi_insert_before (&bsi, call, GSI_NEW_STMT);
- mark_virtual_ops_for_renaming (call);
}
VEC_free (edge, heap, exits);
diff --git a/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c
index 48cb7e06a39..eaf41e7d6ce 100644
--- a/gcc/tree-ssa-loop-unswitch.c
+++ b/gcc/tree-ssa-loop-unswitch.c
@@ -25,8 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "timevar.h"
#include "cfgloop.h"
#include "params.h"
#include "tree-pass.h"
diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c
index c6304c4cccb..6dc64b036c1 100644
--- a/gcc/tree-ssa-loop.c
+++ b/gcc/tree-ssa-loop.c
@@ -26,9 +26,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "cfgloop.h"
#include "flags.h"
#include "tree-inline.h"
@@ -89,7 +87,7 @@ struct gimple_opt_pass pass_tree_loop_init =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_TREE_LOOP_INIT, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
PROP_loops, /* properties_provided */
0, /* properties_destroyed */
@@ -265,7 +263,8 @@ gate_graphite_transforms (void)
|| flag_loop_interchange
|| flag_loop_strip_mine
|| flag_graphite_identity
- || flag_loop_parallelize_all)
+ || flag_loop_parallelize_all
+ || flag_loop_optimize_isl)
flag_graphite = 1;
return flag_graphite != 0;
@@ -660,7 +659,7 @@ struct gimple_opt_pass pass_tree_loop_done =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_TREE_LOOP_FINI, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index a8aaed3962a..c3392fb14c8 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -92,7 +92,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tree.h"
#include "tree-flow.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "alloc-pool.h"
#include "basic-block.h"
@@ -346,7 +345,7 @@ insert_reciprocals (gimple_stmt_iterator *def_gsi, struct occurrence *occ,
{
/* Make a variable with the replacement and substitute it. */
type = TREE_TYPE (def);
- recip_def = make_rename_temp (type, "reciptmp");
+ recip_def = create_tmp_reg (type, "reciptmp");
new_stmt = gimple_build_assign_with_ops (RDIV_EXPR, recip_def,
build_one_cst (type), def);
@@ -514,10 +513,13 @@ execute_cse_reciprocals (void)
#endif
for (arg = DECL_ARGUMENTS (cfun->decl); arg; arg = DECL_CHAIN (arg))
- if (gimple_default_def (cfun, arg)
- && FLOAT_TYPE_P (TREE_TYPE (arg))
+ if (FLOAT_TYPE_P (TREE_TYPE (arg))
&& is_gimple_reg (arg))
- execute_cse_reciprocals_1 (NULL, gimple_default_def (cfun, arg));
+ {
+ tree name = ssa_default_def (cfun, arg);
+ if (name)
+ execute_cse_reciprocals_1 (NULL, name);
+ }
FOR_EACH_BB (bb)
{
@@ -529,8 +531,8 @@ execute_cse_reciprocals (void)
{
phi = gsi_stmt (gsi);
def = PHI_RESULT (phi);
- if (FLOAT_TYPE_P (TREE_TYPE (def))
- && is_gimple_reg (def))
+ if (! virtual_operand_p (def)
+ && FLOAT_TYPE_P (TREE_TYPE (def)))
execute_cse_reciprocals_1 (NULL, def);
}
@@ -738,9 +740,8 @@ execute_cse_sincos_1 (tree name)
fndecl = mathfn_built_in (type, BUILT_IN_CEXPI);
if (!fndecl)
return false;
- res = create_tmp_reg (TREE_TYPE (TREE_TYPE (fndecl)), "sincostmp");
stmt = gimple_build_call (fndecl, 1, name);
- res = make_ssa_name (res, stmt);
+ res = make_temp_ssa_name (TREE_TYPE (TREE_TYPE (fndecl)), stmt, "sincostmp");
gimple_call_set_lhs (stmt, res);
def_stmt = SSA_NAME_DEF_STMT (name);
@@ -756,7 +757,6 @@ execute_cse_sincos_1 (tree name)
gsi = gsi_after_labels (top_bb);
gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
}
- update_stmt (stmt);
sincos_stats.inserted++;
/* And adjust the recorded old call sites. */
@@ -937,7 +937,7 @@ powi_cost (HOST_WIDE_INT n)
static tree
powi_as_mults_1 (gimple_stmt_iterator *gsi, location_t loc, tree type,
- HOST_WIDE_INT n, tree *cache, tree target)
+ HOST_WIDE_INT n, tree *cache)
{
tree op0, op1, ssa_target;
unsigned HOST_WIDE_INT digit;
@@ -946,23 +946,23 @@ powi_as_mults_1 (gimple_stmt_iterator *gsi, location_t loc, tree type,
if (n < POWI_TABLE_SIZE && cache[n])
return cache[n];
- ssa_target = make_ssa_name (target, NULL);
+ ssa_target = make_temp_ssa_name (type, NULL, "powmult");
if (n < POWI_TABLE_SIZE)
{
cache[n] = ssa_target;
- op0 = powi_as_mults_1 (gsi, loc, type, n - powi_table[n], cache, target);
- op1 = powi_as_mults_1 (gsi, loc, type, powi_table[n], cache, target);
+ op0 = powi_as_mults_1 (gsi, loc, type, n - powi_table[n], cache);
+ op1 = powi_as_mults_1 (gsi, loc, type, powi_table[n], cache);
}
else if (n & 1)
{
digit = n & ((1 << POWI_WINDOW_SIZE) - 1);
- op0 = powi_as_mults_1 (gsi, loc, type, n - digit, cache, target);
- op1 = powi_as_mults_1 (gsi, loc, type, digit, cache, target);
+ op0 = powi_as_mults_1 (gsi, loc, type, n - digit, cache);
+ op1 = powi_as_mults_1 (gsi, loc, type, digit, cache);
}
else
{
- op0 = powi_as_mults_1 (gsi, loc, type, n >> 1, cache, target);
+ op0 = powi_as_mults_1 (gsi, loc, type, n >> 1, cache);
op1 = op0;
}
@@ -980,8 +980,9 @@ static tree
powi_as_mults (gimple_stmt_iterator *gsi, location_t loc,
tree arg0, HOST_WIDE_INT n)
{
- tree cache[POWI_TABLE_SIZE], result, type = TREE_TYPE (arg0), target;
+ tree cache[POWI_TABLE_SIZE], result, type = TREE_TYPE (arg0);
gimple div_stmt;
+ tree target;
if (n == 0)
return build_real (type, dconst1);
@@ -989,16 +990,12 @@ powi_as_mults (gimple_stmt_iterator *gsi, location_t loc,
memset (cache, 0, sizeof (cache));
cache[1] = arg0;
- target = create_tmp_reg (type, "powmult");
- add_referenced_var (target);
-
- result = powi_as_mults_1 (gsi, loc, type, (n < 0) ? -n : n, cache, target);
-
+ result = powi_as_mults_1 (gsi, loc, type, (n < 0) ? -n : n, cache);
if (n >= 0)
return result;
/* If the original exponent was negative, reciprocate the result. */
- target = make_ssa_name (target, NULL);
+ target = make_temp_ssa_name (type, NULL, "powmult");
div_stmt = gimple_build_assign_with_ops (RDIV_EXPR, target,
build_real (type, dconst1),
result);
@@ -1029,26 +1026,19 @@ gimple_expand_builtin_powi (gimple_stmt_iterator *gsi, location_t loc,
}
/* Build a gimple call statement that calls FN with argument ARG.
- Set the lhs of the call statement to a fresh SSA name for
- variable VAR. If VAR is NULL, first allocate it. Insert the
+ Set the lhs of the call statement to a fresh SSA name. Insert the
statement prior to GSI's current position, and return the fresh
SSA name. */
static tree
build_and_insert_call (gimple_stmt_iterator *gsi, location_t loc,
- tree *var, tree fn, tree arg)
+ tree fn, tree arg)
{
gimple call_stmt;
tree ssa_target;
- if (!*var)
- {
- *var = create_tmp_reg (TREE_TYPE (arg), "powroot");
- add_referenced_var (*var);
- }
-
call_stmt = gimple_build_call (fn, 1, arg);
- ssa_target = make_ssa_name (*var, NULL);
+ ssa_target = make_temp_ssa_name (TREE_TYPE (arg), NULL, "powroot");
gimple_set_lhs (call_stmt, ssa_target);
gimple_set_location (call_stmt, loc);
gsi_insert_before (gsi, call_stmt, GSI_SAME_STMT);
@@ -1063,9 +1053,10 @@ build_and_insert_call (gimple_stmt_iterator *gsi, location_t loc,
static tree
build_and_insert_binop (gimple_stmt_iterator *gsi, location_t loc,
- tree target, enum tree_code code, tree arg0, tree arg1)
+ const char *name, enum tree_code code,
+ tree arg0, tree arg1)
{
- tree result = make_ssa_name (target, NULL);
+ tree result = make_temp_ssa_name (TREE_TYPE (arg0), NULL, name);
gimple stmt = gimple_build_assign_with_ops (code, result, arg0, arg1);
gimple_set_location (stmt, loc);
gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
@@ -1073,29 +1064,33 @@ build_and_insert_binop (gimple_stmt_iterator *gsi, location_t loc,
}
/* Build a gimple reference operation with the given CODE and argument
- ARG, assigning the result to a new SSA name for variable TARGET.
+ ARG, assigning the result to a new SSA name of TYPE with NAME.
Insert the statement prior to GSI's current position, and return
the fresh SSA name. */
static inline tree
build_and_insert_ref (gimple_stmt_iterator *gsi, location_t loc, tree type,
- tree target, enum tree_code code, tree arg0)
+ const char *name, enum tree_code code, tree arg0)
{
- tree result = make_ssa_name (target, NULL);
+ tree result = make_temp_ssa_name (type, NULL, name);
gimple stmt = gimple_build_assign (result, build1 (code, type, arg0));
gimple_set_location (stmt, loc);
gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
return result;
}
-/* Build a gimple assignment to cast VAL to TARGET. Insert the statement
+/* Build a gimple assignment to cast VAL to TYPE. Insert the statement
prior to GSI's current position, and return the fresh SSA name. */
static tree
build_and_insert_cast (gimple_stmt_iterator *gsi, location_t loc,
- tree target, tree val)
+ tree type, tree val)
{
- return build_and_insert_binop (gsi, loc, target, CONVERT_EXPR, val, NULL);
+ tree result = make_ssa_name (type, NULL);
+ gimple stmt = gimple_build_assign_with_ops (NOP_EXPR, result, val, NULL_TREE);
+ gimple_set_location (stmt, loc);
+ gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
+ return result;
}
/* ARG0 and ARG1 are the two arguments to a pow builtin call in GSI
@@ -1111,7 +1106,6 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
REAL_VALUE_TYPE c2, dconst3;
HOST_WIDE_INT n;
tree type, sqrtfn, cbrtfn, sqrt_arg0, sqrt_sqrt, result, cbrt_x, powi_cbrt_x;
- tree target = NULL_TREE;
enum machine_mode mode;
bool hw_sqrt_exists;
@@ -1144,7 +1138,7 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
if (sqrtfn
&& REAL_VALUES_EQUAL (c, dconsthalf)
&& !HONOR_SIGNED_ZEROS (mode))
- return build_and_insert_call (gsi, loc, &target, sqrtfn, arg0);
+ return build_and_insert_call (gsi, loc, sqrtfn, arg0);
/* Optimize pow(x,0.25) = sqrt(sqrt(x)). Assume on most machines that
a builtin sqrt instruction is smaller than a call to pow with 0.25,
@@ -1160,10 +1154,10 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
&& hw_sqrt_exists)
{
/* sqrt(x) */
- sqrt_arg0 = build_and_insert_call (gsi, loc, &target, sqrtfn, arg0);
+ sqrt_arg0 = build_and_insert_call (gsi, loc, sqrtfn, arg0);
/* sqrt(sqrt(x)) */
- return build_and_insert_call (gsi, loc, &target, sqrtfn, sqrt_arg0);
+ return build_and_insert_call (gsi, loc, sqrtfn, sqrt_arg0);
}
/* Optimize pow(x,0.75) = sqrt(x) * sqrt(sqrt(x)) unless we are
@@ -1179,13 +1173,13 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
&& hw_sqrt_exists)
{
/* sqrt(x) */
- sqrt_arg0 = build_and_insert_call (gsi, loc, &target, sqrtfn, arg0);
+ sqrt_arg0 = build_and_insert_call (gsi, loc, sqrtfn, arg0);
/* sqrt(sqrt(x)) */
- sqrt_sqrt = build_and_insert_call (gsi, loc, &target, sqrtfn, sqrt_arg0);
+ sqrt_sqrt = build_and_insert_call (gsi, loc, sqrtfn, sqrt_arg0);
/* sqrt(x) * sqrt(sqrt(x)) */
- return build_and_insert_binop (gsi, loc, target, MULT_EXPR,
+ return build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
sqrt_arg0, sqrt_sqrt);
}
@@ -1202,7 +1196,7 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
&& cbrtfn
&& (gimple_val_nonnegative_real_p (arg0) || !HONOR_NANS (mode))
&& REAL_VALUES_EQUAL (c, dconst1_3))
- return build_and_insert_call (gsi, loc, &target, cbrtfn, arg0);
+ return build_and_insert_call (gsi, loc, cbrtfn, arg0);
/* Optimize pow(x,1./6.) = cbrt(sqrt(x)). Don't do this optimization
if we don't have a hardware sqrt insn. */
@@ -1218,10 +1212,10 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
&& REAL_VALUES_EQUAL (c, dconst1_6))
{
/* sqrt(x) */
- sqrt_arg0 = build_and_insert_call (gsi, loc, &target, sqrtfn, arg0);
+ sqrt_arg0 = build_and_insert_call (gsi, loc, sqrtfn, arg0);
/* cbrt(sqrt(x)) */
- return build_and_insert_call (gsi, loc, &target, cbrtfn, sqrt_arg0);
+ return build_and_insert_call (gsi, loc, cbrtfn, sqrt_arg0);
}
/* Optimize pow(x,c), where n = 2c for some nonzero integer n, into
@@ -1253,17 +1247,17 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
/* Calculate sqrt(x). When n is not 1 or -1, multiply it by the
result of the optimal multiply sequence just calculated. */
- sqrt_arg0 = build_and_insert_call (gsi, loc, &target, sqrtfn, arg0);
+ sqrt_arg0 = build_and_insert_call (gsi, loc, sqrtfn, arg0);
if (absu_hwi (n) == 1)
result = sqrt_arg0;
else
- result = build_and_insert_binop (gsi, loc, target, MULT_EXPR,
+ result = build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
sqrt_arg0, powi_x_ndiv2);
/* If n is negative, reciprocate the result. */
if (n < 0)
- result = build_and_insert_binop (gsi, loc, target, RDIV_EXPR,
+ result = build_and_insert_binop (gsi, loc, "powroot", RDIV_EXPR,
build_real (type, dconst1), result);
return result;
}
@@ -1308,24 +1302,24 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
/* Calculate powi(cbrt(x), n%3). Don't use gimple_expand_builtin_powi
as that creates an unnecessary variable. Instead, just produce
either cbrt(x) or cbrt(x) * cbrt(x). */
- cbrt_x = build_and_insert_call (gsi, loc, &target, cbrtfn, arg0);
+ cbrt_x = build_and_insert_call (gsi, loc, cbrtfn, arg0);
if (absu_hwi (n) % 3 == 1)
powi_cbrt_x = cbrt_x;
else
- powi_cbrt_x = build_and_insert_binop (gsi, loc, target, MULT_EXPR,
+ powi_cbrt_x = build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
cbrt_x, cbrt_x);
/* Multiply the two subexpressions, unless powi(x,abs(n)/3) = 1. */
if (absu_hwi (n) < 3)
result = powi_cbrt_x;
else
- result = build_and_insert_binop (gsi, loc, target, MULT_EXPR,
+ result = build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
powi_x_ndiv3, powi_cbrt_x);
/* If n is negative, reciprocate the result. */
if (n < 0)
- result = build_and_insert_binop (gsi, loc, target, RDIV_EXPR,
+ result = build_and_insert_binop (gsi, loc, "powroot", RDIV_EXPR,
build_real (type, dconst1), result);
return result;
@@ -1343,7 +1337,7 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
static tree
gimple_expand_builtin_cabs (gimple_stmt_iterator *gsi, location_t loc, tree arg)
{
- tree target, real_part, imag_part, addend1, addend2, sum, result;
+ tree real_part, imag_part, addend1, addend2, sum, result;
tree type = TREE_TYPE (TREE_TYPE (arg));
tree sqrtfn = mathfn_built_in (type, BUILT_IN_SQRT);
enum machine_mode mode = TYPE_MODE (type);
@@ -1354,19 +1348,16 @@ gimple_expand_builtin_cabs (gimple_stmt_iterator *gsi, location_t loc, tree arg)
|| optab_handler (sqrt_optab, mode) == CODE_FOR_nothing)
return NULL_TREE;
- target = create_tmp_reg (type, "cabs");
- add_referenced_var (target);
-
- real_part = build_and_insert_ref (gsi, loc, type, target,
+ real_part = build_and_insert_ref (gsi, loc, type, "cabs",
REALPART_EXPR, arg);
- addend1 = build_and_insert_binop (gsi, loc, target, MULT_EXPR,
+ addend1 = build_and_insert_binop (gsi, loc, "cabs", MULT_EXPR,
real_part, real_part);
- imag_part = build_and_insert_ref (gsi, loc, type, target,
+ imag_part = build_and_insert_ref (gsi, loc, type, "cabs",
IMAGPART_EXPR, arg);
- addend2 = build_and_insert_binop (gsi, loc, target, MULT_EXPR,
+ addend2 = build_and_insert_binop (gsi, loc, "cabs", MULT_EXPR,
imag_part, imag_part);
- sum = build_and_insert_binop (gsi, loc, target, PLUS_EXPR, addend1, addend2);
- result = build_and_insert_call (gsi, loc, &target, sqrtfn, sum);
+ sum = build_and_insert_binop (gsi, loc, "cabs", PLUS_EXPR, addend1, addend2);
+ result = build_and_insert_call (gsi, loc, sqrtfn, sum);
return result;
}
@@ -1899,13 +1890,9 @@ execute_optimize_bswap (void)
if (!useless_type_conversion_p (TREE_TYPE (bswap_tmp), bswap_type))
{
gimple convert_stmt;
-
- bswap_tmp = create_tmp_var (bswap_type, "bswapsrc");
- add_referenced_var (bswap_tmp);
- bswap_tmp = make_ssa_name (bswap_tmp, NULL);
-
- convert_stmt = gimple_build_assign_with_ops (
- CONVERT_EXPR, bswap_tmp, bswap_src, NULL);
+ bswap_tmp = make_temp_ssa_name (bswap_type, NULL, "bswapsrc");
+ convert_stmt = gimple_build_assign_with_ops
+ (NOP_EXPR, bswap_tmp, bswap_src, NULL);
gsi_insert_before (&gsi, convert_stmt, GSI_SAME_STMT);
}
@@ -1917,12 +1904,9 @@ execute_optimize_bswap (void)
if (!useless_type_conversion_p (TREE_TYPE (bswap_tmp), bswap_type))
{
gimple convert_stmt;
-
- bswap_tmp = create_tmp_var (bswap_type, "bswapdst");
- add_referenced_var (bswap_tmp);
- bswap_tmp = make_ssa_name (bswap_tmp, NULL);
- convert_stmt = gimple_build_assign_with_ops (
- CONVERT_EXPR, gimple_assign_lhs (stmt), bswap_tmp, NULL);
+ bswap_tmp = make_temp_ssa_name (bswap_type, NULL, "bswapdst");
+ convert_stmt = gimple_build_assign_with_ops
+ (NOP_EXPR, gimple_assign_lhs (stmt), bswap_tmp, NULL);
gsi_insert_after (&gsi, convert_stmt, GSI_SAME_STMT);
}
@@ -1974,6 +1958,43 @@ struct gimple_opt_pass pass_optimize_bswap =
}
};
+/* Return true if stmt is a type conversion operation that can be stripped
+ when used in a widening multiply operation. */
+static bool
+widening_mult_conversion_strippable_p (tree result_type, gimple stmt)
+{
+ enum tree_code rhs_code = gimple_assign_rhs_code (stmt);
+
+ if (TREE_CODE (result_type) == INTEGER_TYPE)
+ {
+ tree op_type;
+ tree inner_op_type;
+
+ if (!CONVERT_EXPR_CODE_P (rhs_code))
+ return false;
+
+ op_type = TREE_TYPE (gimple_assign_lhs (stmt));
+
+ /* If the type of OP has the same precision as the result, then
+ we can strip this conversion. The multiply operation will be
+ selected to create the correct extension as a by-product. */
+ if (TYPE_PRECISION (result_type) == TYPE_PRECISION (op_type))
+ return true;
+
+ /* We can also strip a conversion if it preserves the signed-ness of
+ the operation and doesn't narrow the range. */
+ inner_op_type = TREE_TYPE (gimple_assign_rhs1 (stmt));
+
+ if (TYPE_UNSIGNED (op_type) == TYPE_UNSIGNED (inner_op_type)
+ && TYPE_PRECISION (op_type) > TYPE_PRECISION (inner_op_type))
+ return true;
+
+ return false;
+ }
+
+ return rhs_code == FIXED_CONVERT_EXPR;
+}
+
/* Return true if RHS is a suitable operand for a widening multiplication,
assuming a target type of TYPE.
There are two cases:
@@ -1990,17 +2011,13 @@ is_widening_mult_rhs_p (tree type, tree rhs, tree *type_out,
{
gimple stmt;
tree type1, rhs1;
- enum tree_code rhs_code;
if (TREE_CODE (rhs) == SSA_NAME)
{
stmt = SSA_NAME_DEF_STMT (rhs);
if (is_gimple_assign (stmt))
{
- rhs_code = gimple_assign_rhs_code (stmt);
- if (TREE_CODE (type) == INTEGER_TYPE
- ? !CONVERT_EXPR_CODE_P (rhs_code)
- : rhs_code != FIXED_CONVERT_EXPR)
+ if (! widening_mult_conversion_strippable_p (type, stmt))
rhs1 = rhs;
else
{
@@ -2099,7 +2116,7 @@ is_widening_mult_p (gimple stmt,
static bool
convert_mult_to_widen (gimple stmt, gimple_stmt_iterator *gsi)
{
- tree lhs, rhs1, rhs2, type, type1, type2, tmp = NULL;
+ tree lhs, rhs1, rhs2, type, type1, type2;
enum insn_code handler;
enum machine_mode to_mode, from_mode, actual_mode;
optab op;
@@ -2168,22 +2185,14 @@ convert_mult_to_widen (gimple stmt, gimple_stmt_iterator *gsi)
return false;
if (actual_precision != TYPE_PRECISION (type1)
|| from_unsigned1 != TYPE_UNSIGNED (type1))
- {
- tmp = create_tmp_var (build_nonstandard_integer_type
- (actual_precision, from_unsigned1),
- NULL);
- rhs1 = build_and_insert_cast (gsi, loc, tmp, rhs1);
- }
+ rhs1 = build_and_insert_cast (gsi, loc,
+ build_nonstandard_integer_type
+ (actual_precision, from_unsigned1), rhs1);
if (actual_precision != TYPE_PRECISION (type2)
|| from_unsigned2 != TYPE_UNSIGNED (type2))
- {
- /* Reuse the same type info, if possible. */
- if (!tmp || from_unsigned1 != from_unsigned2)
- tmp = create_tmp_var (build_nonstandard_integer_type
- (actual_precision, from_unsigned2),
- NULL);
- rhs2 = build_and_insert_cast (gsi, loc, tmp, rhs2);
- }
+ rhs2 = build_and_insert_cast (gsi, loc,
+ build_nonstandard_integer_type
+ (actual_precision, from_unsigned2), rhs2);
/* Handle constants. */
if (TREE_CODE (rhs1) == INTEGER_CST)
@@ -2211,7 +2220,7 @@ convert_plusminus_to_widen (gimple_stmt_iterator *gsi, gimple stmt,
{
gimple rhs1_stmt = NULL, rhs2_stmt = NULL;
gimple conv1_stmt = NULL, conv2_stmt = NULL, conv_stmt;
- tree type, type1, type2, optype, tmp = NULL;
+ tree type, type1, type2, optype;
tree lhs, rhs1, rhs2, mult_rhs1, mult_rhs2, add_rhs;
enum tree_code rhs1_code = ERROR_MARK, rhs2_code = ERROR_MARK;
optab this_optab;
@@ -2380,25 +2389,19 @@ convert_plusminus_to_widen (gimple_stmt_iterator *gsi, gimple stmt,
actual_precision = GET_MODE_PRECISION (actual_mode);
if (actual_precision != TYPE_PRECISION (type1)
|| from_unsigned1 != TYPE_UNSIGNED (type1))
- {
- tmp = create_tmp_var (build_nonstandard_integer_type
- (actual_precision, from_unsigned1),
- NULL);
- mult_rhs1 = build_and_insert_cast (gsi, loc, tmp, mult_rhs1);
- }
+ mult_rhs1 = build_and_insert_cast (gsi, loc,
+ build_nonstandard_integer_type
+ (actual_precision, from_unsigned1),
+ mult_rhs1);
if (actual_precision != TYPE_PRECISION (type2)
|| from_unsigned2 != TYPE_UNSIGNED (type2))
- {
- if (!tmp || from_unsigned1 != from_unsigned2)
- tmp = create_tmp_var (build_nonstandard_integer_type
- (actual_precision, from_unsigned2),
- NULL);
- mult_rhs2 = build_and_insert_cast (gsi, loc, tmp, mult_rhs2);
- }
+ mult_rhs2 = build_and_insert_cast (gsi, loc,
+ build_nonstandard_integer_type
+ (actual_precision, from_unsigned2),
+ mult_rhs2);
if (!useless_type_conversion_p (type, TREE_TYPE (add_rhs)))
- add_rhs = build_and_insert_cast (gsi, loc, create_tmp_var (type, NULL),
- add_rhs);
+ add_rhs = build_and_insert_cast (gsi, loc, type, add_rhs);
/* Handle constants. */
if (TREE_CODE (mult_rhs1) == INTEGER_CST)
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 1367e1b03b3..d9b3146cf4f 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -25,11 +25,11 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "flags.h"
#include "function.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
#include "tree-inline.h"
-#include "tree-pass.h"
+#include "timevar.h"
+#include "dumpfile.h"
#include "ggc.h"
#include "timevar.h"
#include "langhooks.h"
@@ -126,31 +126,16 @@ static void get_expr_operands (gimple, tree *, int);
/* Number of functions with initialized ssa_operands. */
static int n_initialized = 0;
-/* Return the DECL_UID of the base variable of T. */
-
-static inline unsigned
-get_name_decl (const_tree t)
-{
- if (TREE_CODE (t) != SSA_NAME)
- return DECL_UID (t);
- else
- return DECL_UID (SSA_NAME_VAR (t));
-}
-
/* Return true if the SSA operands cache is active. */
bool
-ssa_operands_active (void)
+ssa_operands_active (struct function *fun)
{
- /* This function may be invoked from contexts where CFUN is NULL
- (IPA passes), return false for now. FIXME: operands may be
- active in each individual function, maybe this function should
- take CFUN as a parameter. */
- if (cfun == NULL)
+ if (fun == NULL)
return false;
- return cfun->gimple_df && gimple_ssa_operands (cfun)->ops_active;
+ return fun->gimple_df && gimple_ssa_operands (fun)->ops_active;
}
@@ -177,7 +162,6 @@ create_vop_var (struct function *fn)
TREE_ADDRESSABLE (global_var) = 0;
VAR_DECL_IS_VIRTUAL_OPERAND (global_var) = 1;
- add_referenced_var_1 (global_var, fn);
fn->gimple_df->vop = global_var;
}
@@ -416,7 +400,10 @@ finalize_ssa_defs (gimple stmt)
/* If we have a non-SSA_NAME VDEF, mark it for renaming. */
if (gimple_vdef (stmt)
&& TREE_CODE (gimple_vdef (stmt)) != SSA_NAME)
- mark_sym_for_renaming (gimple_vdef (stmt));
+ {
+ cfun->gimple_df->rename_vops = 1;
+ cfun->gimple_df->ssa_renaming_needed = 1;
+ }
/* Check for the common case of 1 def that hasn't changed. */
if (old_ops && old_ops->next == NULL && num == 1
@@ -432,7 +419,12 @@ finalize_ssa_defs (gimple stmt)
/* If there is anything remaining in the build_defs list, simply emit it. */
for ( ; new_i < num; new_i++)
- last = add_def_op ((tree *) VEC_index (tree, build_defs, new_i), last);
+ {
+ tree *op = (tree *) VEC_index (tree, build_defs, new_i);
+ if (DECL_P (*op))
+ cfun->gimple_df->ssa_renaming_needed = 1;
+ last = add_def_op (op, last);
+ }
/* Now set the stmt's operands. */
gimple_set_def_ops (stmt, new_list.next);
@@ -487,14 +479,18 @@ finalize_ssa_uses (gimple stmt)
&& gimple_vuse (stmt) == NULL_TREE)
{
gimple_set_vuse (stmt, gimple_vop (cfun));
- mark_sym_for_renaming (gimple_vop (cfun));
+ cfun->gimple_df->rename_vops = 1;
+ cfun->gimple_df->ssa_renaming_needed = 1;
}
/* Now create nodes for all the new nodes. */
for (new_i = 0; new_i < VEC_length (tree, build_uses); new_i++)
- last = add_use_op (stmt,
- (tree *) VEC_index (tree, build_uses, new_i),
- last);
+ {
+ tree *op = (tree *) VEC_index (tree, build_uses, new_i);
+ if (DECL_P (*op))
+ cfun->gimple_df->ssa_renaming_needed = 1;
+ last = add_use_op (stmt, op, last);
+ }
/* Now set the stmt's operands. */
gimple_set_use_ops (stmt, new_list.next);
@@ -615,19 +611,11 @@ add_virtual_operand (gimple stmt ATTRIBUTE_UNUSED, int flags)
static void
add_stmt_operand (tree *var_p, gimple stmt, int flags)
{
- tree var, sym;
+ tree var = *var_p;
gcc_assert (SSA_VAR_P (*var_p));
- var = *var_p;
- sym = (TREE_CODE (var) == SSA_NAME ? SSA_NAME_VAR (var) : var);
-
- /* Mark statements with volatile operands. */
- if (!(flags & opf_no_vops)
- && TREE_THIS_VOLATILE (sym))
- gimple_set_has_volatile_ops (stmt, true);
-
- if (is_gimple_reg (sym))
+ if (is_gimple_reg (var))
{
/* The variable is a GIMPLE register. Add it to real operands. */
if (flags & opf_def)
@@ -636,7 +624,15 @@ add_stmt_operand (tree *var_p, gimple stmt, int flags)
append_use (var_p);
}
else
- add_virtual_operand (stmt, flags);
+ {
+ /* Mark statements with volatile operands. */
+ if (!(flags & opf_no_vops)
+ && TREE_THIS_VOLATILE (var))
+ gimple_set_has_volatile_ops (stmt, true);
+
+ /* The variable is a memory access. Add virtual operands. */
+ add_virtual_operand (stmt, flags);
+ }
}
/* Mark the base address of REF as having its address taken.
@@ -1211,7 +1207,7 @@ update_stmt_operands (gimple stmt)
{
/* If update_stmt_operands is called before SSA is initialized, do
nothing. */
- if (!ssa_operands_active ())
+ if (!ssa_operands_active (cfun))
return;
timevar_push (TV_TREE_OPS);
@@ -1244,7 +1240,7 @@ swap_tree_operands (gimple stmt, tree *exp0, tree *exp1)
positions of these two operands in their respective immediate use
lists by adjusting their use pointer to point to the new
operand position. */
- if (ssa_operands_active () && op0 != op1)
+ if (ssa_operands_active (cfun) && op0 != op1)
{
use_optype_p use0, use1, ptr;
use0 = use1 = NULL;
@@ -1421,6 +1417,24 @@ debug_immediate_uses_for (tree var)
}
+/* Return true if OP, an SSA name or a DECL is a virtual operand. */
+
+bool
+virtual_operand_p (tree op)
+{
+ if (TREE_CODE (op) == SSA_NAME)
+ {
+ op = SSA_NAME_VAR (op);
+ if (!op)
+ return false;
+ }
+
+ if (TREE_CODE (op) == VAR_DECL)
+ return VAR_DECL_IS_VIRTUAL_OPERAND (op);
+
+ return false;
+}
+
/* Unlink STMTs virtual definition from the IL by propagating its use. */
void
diff --git a/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h
index e3fe63364a5..76a8bd82c11 100644
--- a/gcc/tree-ssa-operands.h
+++ b/gcc/tree-ssa-operands.h
@@ -114,8 +114,9 @@ extern void debug_immediate_uses_for (tree var);
extern void dump_decl_set (FILE *, bitmap);
extern void debug_decl_set (bitmap);
-extern bool ssa_operands_active (void);
+extern bool ssa_operands_active (struct function *);
+extern bool virtual_operand_p (tree);
extern void unlink_stmt_vdef (gimple);
enum ssa_op_iter_type {
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
index 46d8a2c4e60..4c729158deb 100644
--- a/gcc/tree-ssa-phiopt.c
+++ b/gcc/tree-ssa-phiopt.c
@@ -27,16 +27,13 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "timevar.h"
#include "tree-flow.h"
#include "tree-pass.h"
-#include "tree-dump.h"
#include "langhooks.h"
#include "pointer-set.h"
#include "domwalk.h"
#include "cfgloop.h"
#include "tree-data-ref.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "insn-config.h"
#include "expr.h"
@@ -275,10 +272,6 @@ single_non_singleton_phi_for_edges (gimple_seq seq, edge e0, edge e1)
return phi;
}
-/* For conditional store replacement we need a temporary to
- put the old contents of the memory in. */
-static tree condstoretemp;
-
/* The core routine of conditional store replacement and normal
phi optimizations. Both share much of the infrastructure in how
to match applicable basic block patterns. DO_STORE_ELIM is true
@@ -295,11 +288,8 @@ tree_ssa_phiopt_worker (bool do_store_elim, bool do_hoist_loads)
struct pointer_set_t *nontrap = 0;
if (do_store_elim)
- {
- condstoretemp = NULL_TREE;
- /* Calculate the set of non-trapping memory accesses. */
- nontrap = get_non_trapping ();
- }
+ /* Calculate the set of non-trapping memory accesses. */
+ nontrap = get_non_trapping ();
/* Search every basic block for COND_EXPR we may be able to optimize.
@@ -693,12 +683,9 @@ conditional_replacement (basic_block cond_bb, basic_block middle_bb,
{
source_location locus_0, locus_1;
- new_var2 = create_tmp_var (TREE_TYPE (result), NULL);
- add_referenced_var (new_var2);
+ new_var2 = make_ssa_name (TREE_TYPE (result), NULL);
new_stmt = gimple_build_assign_with_ops (CONVERT_EXPR, new_var2,
new_var, NULL);
- new_var2 = make_ssa_name (new_var2, new_stmt);
- gimple_assign_set_lhs (new_stmt, new_var2);
gsi_insert_before (&gsi, new_stmt, GSI_SAME_STMT);
new_var = new_var2;
@@ -1216,11 +1203,7 @@ abs_replacement (basic_block cond_bb, basic_block middle_bb,
result = duplicate_ssa_name (result, NULL);
if (negate)
- {
- tree tmp = create_tmp_var (TREE_TYPE (result), NULL);
- add_referenced_var (tmp);
- lhs = make_ssa_name (tmp, NULL);
- }
+ lhs = make_ssa_name (TREE_TYPE (result), NULL);
else
lhs = result;
@@ -1450,7 +1433,7 @@ cond_store_replacement (basic_block middle_bb, basic_block join_bb,
edge e0, edge e1, struct pointer_set_t *nontrap)
{
gimple assign = last_and_only_stmt (middle_bb);
- tree lhs, rhs, name;
+ tree lhs, rhs, name, name2;
gimple newphi, new_stmt;
gimple_stmt_iterator gsi;
source_location locus;
@@ -1481,32 +1464,26 @@ cond_store_replacement (basic_block middle_bb, basic_block join_bb,
gsi_remove (&gsi, true);
release_defs (assign);
- /* 2) Create a temporary where we can store the old content
- of the memory touched by the store, if we need to. */
- if (!condstoretemp || TREE_TYPE (lhs) != TREE_TYPE (condstoretemp))
- condstoretemp = create_tmp_reg (TREE_TYPE (lhs), "cstore");
- add_referenced_var (condstoretemp);
-
- /* 3) Insert a load from the memory of the store to the temporary
+ /* 2) Insert a load from the memory of the store to the temporary
on the edge which did not contain the store. */
lhs = unshare_expr (lhs);
- new_stmt = gimple_build_assign (condstoretemp, lhs);
- name = make_ssa_name (condstoretemp, new_stmt);
- gimple_assign_set_lhs (new_stmt, name);
+ name = make_temp_ssa_name (TREE_TYPE (lhs), NULL, "cstore");
+ new_stmt = gimple_build_assign (name, lhs);
gimple_set_location (new_stmt, locus);
gsi_insert_on_edge (e1, new_stmt);
- /* 4) Create a PHI node at the join block, with one argument
+ /* 3) Create a PHI node at the join block, with one argument
holding the old RHS, and the other holding the temporary
where we stored the old memory contents. */
- newphi = create_phi_node (condstoretemp, join_bb);
+ name2 = make_temp_ssa_name (TREE_TYPE (lhs), NULL, "cstore");
+ newphi = create_phi_node (name2, join_bb);
add_phi_arg (newphi, rhs, e0, locus);
add_phi_arg (newphi, name, e1, locus);
lhs = unshare_expr (lhs);
new_stmt = gimple_build_assign (lhs, PHI_RESULT (newphi));
- /* 5) Insert that PHI node. */
+ /* 4) Insert that PHI node. */
gsi = gsi_after_labels (join_bb);
if (gsi_end_p (gsi))
{
@@ -1526,7 +1503,7 @@ cond_if_else_store_replacement_1 (basic_block then_bb, basic_block else_bb,
basic_block join_bb, gimple then_assign,
gimple else_assign)
{
- tree lhs_base, lhs, then_rhs, else_rhs;
+ tree lhs_base, lhs, then_rhs, else_rhs, name;
source_location then_locus, else_locus;
gimple_stmt_iterator gsi;
gimple newphi, new_stmt;
@@ -1566,22 +1543,17 @@ cond_if_else_store_replacement_1 (basic_block then_bb, basic_block else_bb,
gsi_remove (&gsi, true);
release_defs (else_assign);
- /* 2) Create a temporary where we can store the old content
- of the memory touched by the store, if we need to. */
- if (!condstoretemp || TREE_TYPE (lhs) != TREE_TYPE (condstoretemp))
- condstoretemp = create_tmp_reg (TREE_TYPE (lhs), "cstore");
- add_referenced_var (condstoretemp);
-
- /* 3) Create a PHI node at the join block, with one argument
+ /* 2) Create a PHI node at the join block, with one argument
holding the old RHS, and the other holding the temporary
where we stored the old memory contents. */
- newphi = create_phi_node (condstoretemp, join_bb);
+ name = make_temp_ssa_name (TREE_TYPE (lhs), NULL, "cstore");
+ newphi = create_phi_node (name, join_bb);
add_phi_arg (newphi, then_rhs, EDGE_SUCC (then_bb, 0), then_locus);
add_phi_arg (newphi, else_rhs, EDGE_SUCC (else_bb, 0), else_locus);
new_stmt = gimple_build_assign (lhs, PHI_RESULT (newphi));
- /* 4) Insert that PHI node. */
+ /* 3) Insert that PHI node. */
gsi = gsi_after_labels (join_bb);
if (gsi_end_p (gsi))
{
@@ -1848,7 +1820,8 @@ hoist_adjacent_loads (basic_block bb0, basic_block bb1,
gimple_stmt_iterator gsi2;
basic_block bb_for_def1, bb_for_def2;
- if (gimple_phi_num_args (phi_stmt) != 2)
+ if (gimple_phi_num_args (phi_stmt) != 2
+ || virtual_operand_p (gimple_phi_result (phi_stmt)))
continue;
arg1 = gimple_phi_arg_def (phi_stmt, 0);
@@ -1857,9 +1830,7 @@ hoist_adjacent_loads (basic_block bb0, basic_block bb1,
if (TREE_CODE (arg1) != SSA_NAME
|| TREE_CODE (arg2) != SSA_NAME
|| SSA_NAME_IS_DEFAULT_DEF (arg1)
- || SSA_NAME_IS_DEFAULT_DEF (arg2)
- || !is_gimple_reg (arg1)
- || !is_gimple_reg (arg2))
+ || SSA_NAME_IS_DEFAULT_DEF (arg2))
continue;
def1 = SSA_NAME_DEF_STMT (arg1);
@@ -1871,7 +1842,8 @@ hoist_adjacent_loads (basic_block bb0, basic_block bb1,
/* Check the mode of the arguments to be sure a conditional move
can be generated for it. */
- if (!optab_handler (cmov_optab, TYPE_MODE (TREE_TYPE (arg1))))
+ if (optab_handler (movcc_optab, TYPE_MODE (TREE_TYPE (arg1)))
+ == CODE_FOR_nothing)
continue;
/* Both statements must be assignments whose RHS is a COMPONENT_REF. */
diff --git a/gcc/tree-ssa-phiprop.c b/gcc/tree-ssa-phiprop.c
index 30644372564..2f0b3bb9b83 100644
--- a/gcc/tree-ssa-phiprop.c
+++ b/gcc/tree-ssa-phiprop.c
@@ -25,12 +25,9 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "timevar.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
#include "tree-pass.h"
-#include "tree-dump.h"
#include "langhooks.h"
#include "flags.h"
@@ -144,7 +141,7 @@ phiprop_insert_phi (basic_block bb, gimple phi, gimple use_stmt,
/* Build a new PHI node to replace the definition of
the indirect reference lhs. */
res = gimple_assign_lhs (use_stmt);
- SSA_NAME_DEF_STMT (res) = new_phi = create_phi_node (res, bb);
+ new_phi = create_phi_node (res, bb);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -189,7 +186,7 @@ phiprop_insert_phi (basic_block bb, gimple phi, gimple use_stmt,
{
tree rhs = gimple_assign_rhs1 (use_stmt);
gcc_assert (TREE_CODE (old_arg) == ADDR_EXPR);
- new_var = create_tmp_reg (TREE_TYPE (rhs), NULL);
+ new_var = make_ssa_name (TREE_TYPE (rhs), NULL);
if (!is_gimple_min_invariant (old_arg))
old_arg = PHI_ARG_DEF_FROM_EDGE (phi, e);
else
@@ -198,10 +195,6 @@ phiprop_insert_phi (basic_block bb, gimple phi, gimple use_stmt,
fold_build2 (MEM_REF, TREE_TYPE (rhs),
old_arg,
TREE_OPERAND (rhs, 1)));
- gcc_assert (is_gimple_reg (new_var));
- add_referenced_var (new_var);
- new_var = make_ssa_name (new_var, tmp);
- gimple_assign_set_lhs (tmp, new_var);
gimple_set_location (tmp, locus);
gsi_insert_on_edge (e, tmp);
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 9adf55d18cf..6d10df87a0e 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -26,15 +26,11 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-inline.h"
#include "tree-flow.h"
#include "gimple.h"
-#include "tree-dump.h"
-#include "timevar.h"
-#include "fibheap.h"
-#include "hashtab.h"
+#include "hash-table.h"
#include "tree-iterator.h"
#include "alloc-pool.h"
#include "obstack.h"
@@ -169,11 +165,16 @@ typedef union pre_expr_union_d
vn_reference_t reference;
} pre_expr_union;
-typedef struct pre_expr_d
+typedef struct pre_expr_d : typed_noop_remove <pre_expr_d>
{
enum pre_expr_kind kind;
unsigned int id;
pre_expr_union u;
+
+ /* hash_table support. */
+ typedef pre_expr_d T;
+ static inline hashval_t hash (const pre_expr_d *);
+ static inline int equal (const pre_expr_d *, const pre_expr_d *);
} *pre_expr;
#define PRE_EXPR_NAME(e) (e)->u.name
@@ -181,12 +182,11 @@ typedef struct pre_expr_d
#define PRE_EXPR_REFERENCE(e) (e)->u.reference
#define PRE_EXPR_CONSTANT(e) (e)->u.constant
-static int
-pre_expr_eq (const void *p1, const void *p2)
-{
- const struct pre_expr_d *e1 = (const struct pre_expr_d *) p1;
- const struct pre_expr_d *e2 = (const struct pre_expr_d *) p2;
+/* Compare E1 and E1 for equality. */
+inline int
+pre_expr_d::equal (const struct pre_expr_d *e1, const struct pre_expr_d *e2)
+{
if (e1->kind != e2->kind)
return false;
@@ -207,10 +207,11 @@ pre_expr_eq (const void *p1, const void *p2)
}
}
-static hashval_t
-pre_expr_hash (const void *p1)
+/* Hash E. */
+
+inline hashval_t
+pre_expr_d::hash (const struct pre_expr_d *e)
{
- const struct pre_expr_d *e = (const struct pre_expr_d *) p1;
switch (e->kind)
{
case CONSTANT:
@@ -226,7 +227,6 @@ pre_expr_hash (const void *p1)
}
}
-
/* Next global expression id number. */
static unsigned int next_expression_id;
@@ -234,7 +234,7 @@ static unsigned int next_expression_id;
DEF_VEC_P (pre_expr);
DEF_VEC_ALLOC_P (pre_expr, heap);
static VEC(pre_expr, heap) *expressions;
-static htab_t expression_to_id;
+static hash_table <pre_expr_d> expression_to_id;
static VEC(unsigned, heap) *name_to_id;
/* Allocate an expression id for EXPR. */
@@ -242,7 +242,7 @@ static VEC(unsigned, heap) *name_to_id;
static inline unsigned int
alloc_expression_id (pre_expr expr)
{
- void **slot;
+ struct pre_expr_d **slot;
/* Make sure we won't overflow. */
gcc_assert (next_expression_id + 1 > next_expression_id);
expr->id = next_expression_id++;
@@ -253,14 +253,15 @@ alloc_expression_id (pre_expr expr)
/* VEC_safe_grow_cleared allocates no headroom. Avoid frequent
re-allocations by using VEC_reserve upfront. There is no
VEC_quick_grow_cleared unfortunately. */
- VEC_reserve (unsigned, heap, name_to_id, num_ssa_names);
+ unsigned old_len = VEC_length (unsigned, name_to_id);
+ VEC_reserve (unsigned, heap, name_to_id, num_ssa_names - old_len);
VEC_safe_grow_cleared (unsigned, heap, name_to_id, num_ssa_names);
gcc_assert (VEC_index (unsigned, name_to_id, version) == 0);
VEC_replace (unsigned, name_to_id, version, expr->id);
}
else
{
- slot = htab_find_slot (expression_to_id, expr, INSERT);
+ slot = expression_to_id.find_slot (expr, INSERT);
gcc_assert (!*slot);
*slot = expr;
}
@@ -278,7 +279,7 @@ get_expression_id (const pre_expr expr)
static inline unsigned int
lookup_expression_id (const pre_expr expr)
{
- void **slot;
+ struct pre_expr_d **slot;
if (expr->kind == NAME)
{
@@ -289,7 +290,7 @@ lookup_expression_id (const pre_expr expr)
}
else
{
- slot = htab_find_slot (expression_to_id, expr, NO_INSERT);
+ slot = expression_to_id.find_slot (expr, NO_INSERT);
if (!slot)
return 0;
return ((pre_expr)*slot)->id;
@@ -476,29 +477,16 @@ static unsigned int get_expr_value_id (pre_expr);
static alloc_pool bitmap_set_pool;
static bitmap_obstack grand_bitmap_obstack;
-/* To avoid adding 300 temporary variables when we only need one, we
- only create one temporary variable, on demand, and build ssa names
- off that. We do have to change the variable if the types don't
- match the current variable's type. */
-static tree pretemp;
-static tree storetemp;
-static tree prephitemp;
-
/* Set of blocks with statements that have had their EH properties changed. */
static bitmap need_eh_cleanup;
/* Set of blocks with statements that have had their AB properties changed. */
static bitmap need_ab_cleanup;
-/* The phi_translate_table caches phi translations for a given
- expression and predecessor. */
-
-static htab_t phi_translate_table;
-
/* A three tuple {e, pred, v} used to cache phi translations in the
phi_translate_table. */
-typedef struct expr_pred_trans_d
+typedef struct expr_pred_trans_d : typed_free_remove<expr_pred_trans_d>
{
/* The expression. */
pre_expr e;
@@ -512,26 +500,24 @@ typedef struct expr_pred_trans_d
/* The hashcode for the expression, pred pair. This is cached for
speed reasons. */
hashval_t hashcode;
+
+ /* hash_table support. */
+ typedef expr_pred_trans_d T;
+ static inline hashval_t hash (const expr_pred_trans_d *);
+ static inline int equal (const expr_pred_trans_d *, const expr_pred_trans_d *);
} *expr_pred_trans_t;
typedef const struct expr_pred_trans_d *const_expr_pred_trans_t;
-/* Return the hash value for a phi translation table entry. */
-
-static hashval_t
-expr_pred_trans_hash (const void *p)
+inline hashval_t
+expr_pred_trans_d::hash (const expr_pred_trans_d *e)
{
- const_expr_pred_trans_t const ve = (const_expr_pred_trans_t) p;
- return ve->hashcode;
+ return e->hashcode;
}
-/* Return true if two phi translation table entries are the same.
- P1 and P2 should point to the expr_pred_trans_t's to be compared.*/
-
-static int
-expr_pred_trans_eq (const void *p1, const void *p2)
+inline int
+expr_pred_trans_d::equal (const expr_pred_trans_d *ve1,
+ const expr_pred_trans_d *ve2)
{
- const_expr_pred_trans_t const ve1 = (const_expr_pred_trans_t) p1;
- const_expr_pred_trans_t const ve2 = (const_expr_pred_trans_t) p2;
basic_block b1 = ve1->pred;
basic_block b2 = ve2->pred;
@@ -539,9 +525,13 @@ expr_pred_trans_eq (const void *p1, const void *p2)
be equal. */
if (b1 != b2)
return false;
- return pre_expr_eq (ve1->e, ve2->e);
+ return pre_expr_d::equal (ve1->e, ve2->e);
}
+/* The phi_translate_table caches phi translations for a given
+ expression and predecessor. */
+static hash_table <expr_pred_trans_d> phi_translate_table;
+
/* Search in the phi translation table for the translation of
expression E in basic block PRED.
Return the translated value, if found, NULL otherwise. */
@@ -549,18 +539,18 @@ expr_pred_trans_eq (const void *p1, const void *p2)
static inline pre_expr
phi_trans_lookup (pre_expr e, basic_block pred)
{
- void **slot;
+ expr_pred_trans_t *slot;
struct expr_pred_trans_d ept;
ept.e = e;
ept.pred = pred;
- ept.hashcode = iterative_hash_hashval_t (pre_expr_hash (e), pred->index);
- slot = htab_find_slot_with_hash (phi_translate_table, &ept, ept.hashcode,
+ ept.hashcode = iterative_hash_hashval_t (pre_expr_d::hash (e), pred->index);
+ slot = phi_translate_table.find_slot_with_hash (&ept, ept.hashcode,
NO_INSERT);
if (!slot)
return NULL;
else
- return ((expr_pred_trans_t) *slot)->v;
+ return (*slot)->v;
}
@@ -570,18 +560,18 @@ phi_trans_lookup (pre_expr e, basic_block pred)
static inline void
phi_trans_add (pre_expr e, pre_expr v, basic_block pred)
{
- void **slot;
+ expr_pred_trans_t *slot;
expr_pred_trans_t new_pair = XNEW (struct expr_pred_trans_d);
new_pair->e = e;
new_pair->pred = pred;
new_pair->v = v;
- new_pair->hashcode = iterative_hash_hashval_t (pre_expr_hash (e),
+ new_pair->hashcode = iterative_hash_hashval_t (pre_expr_d::hash (e),
pred->index);
- slot = htab_find_slot_with_hash (phi_translate_table, new_pair,
+ slot = phi_translate_table.find_slot_with_hash (new_pair,
new_pair->hashcode, INSERT);
free (*slot);
- *slot = (void *) new_pair;
+ *slot = new_pair;
}
@@ -1299,9 +1289,10 @@ translate_vuse_through_block (VEC (vn_reference_op_s, heap) *operands,
if (use_oracle)
{
bitmap visited = NULL;
+ unsigned int cnt;
/* Try to find a vuse that dominates this phi node by skipping
non-clobbering statements. */
- vuse = get_continuation_for_phi (phi, &ref, &visited);
+ vuse = get_continuation_for_phi (phi, &ref, &cnt, &visited);
if (visited)
BITMAP_FREE (visited);
}
@@ -1370,7 +1361,6 @@ get_expr_type (const pre_expr e)
static tree
get_representative_for (const pre_expr e)
{
- tree exprtype;
tree name;
unsigned int value_id = get_expr_value_id (e);
@@ -1410,17 +1400,9 @@ get_representative_for (const pre_expr e)
fprintf (dump_file, "\n");
}
- exprtype = get_expr_type (e);
-
/* Build and insert the assignment of the end result to the temporary
that we will return. */
- if (!pretemp || exprtype != TREE_TYPE (pretemp))
- {
- pretemp = create_tmp_reg (exprtype, "pretmp");
- add_referenced_var (pretemp);
- }
-
- name = make_ssa_name (pretemp, gimple_build_nop ());
+ name = make_temp_ssa_name (get_expr_type (e), gimple_build_nop (), "pretmp");
VN_INFO_GET (name)->value_id = value_id;
if (e->kind == CONSTANT)
VN_INFO (name)->valnum = PRE_EXPR_CONSTANT (e);
@@ -1627,12 +1609,12 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2,
if (double_int_fits_in_shwi_p (off))
newop.off = off.low;
}
- VEC_replace (vn_reference_op_s, newoperands, j, &newop);
+ VEC_replace (vn_reference_op_s, newoperands, j, newop);
/* If it transforms from an SSA_NAME to an address, fold with
a preceding indirect reference. */
if (j > 0 && op[0] && TREE_CODE (op[0]) == ADDR_EXPR
&& VEC_index (vn_reference_op_s,
- newoperands, j - 1)->opcode == MEM_REF)
+ newoperands, j - 1).opcode == MEM_REF)
vn_reference_fold_indirect (&newoperands, &j);
}
if (i != VEC_length (vn_reference_op_s, operands))
@@ -2609,11 +2591,6 @@ can_PRE_operation (tree op)
that didn't turn out to be necessary. */
static bitmap inserted_exprs;
-/* Pool allocated fake store expressions are placed onto this
- worklist, which, after performing dead code elimination, is walked
- to see which expressions need to be put into GC'able memory */
-static VEC(gimple, heap) *need_creation;
-
/* The actual worker for create_component_ref_by_pieces. */
static tree
@@ -2621,8 +2598,8 @@ create_component_ref_by_pieces_1 (basic_block block, vn_reference_t ref,
unsigned int *operand, gimple_seq *stmts,
gimple domstmt)
{
- vn_reference_op_t currop = VEC_index (vn_reference_op_s, ref->operands,
- *operand);
+ vn_reference_op_t currop = &VEC_index (vn_reference_op_s, ref->operands,
+ *operand);
tree genop;
++*operand;
switch (currop->opcode)
@@ -2671,7 +2648,7 @@ create_component_ref_by_pieces_1 (basic_block block, vn_reference_t ref,
CALL_EXPR_STATIC_CHAIN (folded) = sc;
return folded;
}
- break;
+
case MEM_REF:
{
tree baseop = create_component_ref_by_pieces_1 (block, ref, operand,
@@ -2694,13 +2671,13 @@ create_component_ref_by_pieces_1 (basic_block block, vn_reference_t ref,
}
return fold_build2 (MEM_REF, currop->type, baseop, offset);
}
- break;
+
case TARGET_MEM_REF:
{
pre_expr op0expr, op1expr;
tree genop0 = NULL_TREE, genop1 = NULL_TREE;
- vn_reference_op_t nextop = VEC_index (vn_reference_op_s, ref->operands,
- ++*operand);
+ vn_reference_op_t nextop = &VEC_index (vn_reference_op_s, ref->operands,
+ ++*operand);
tree baseop = create_component_ref_by_pieces_1 (block, ref, operand,
stmts, domstmt);
if (!baseop)
@@ -2724,7 +2701,7 @@ create_component_ref_by_pieces_1 (basic_block block, vn_reference_t ref,
return build5 (TARGET_MEM_REF, currop->type,
baseop, currop->op2, genop0, currop->op1, genop1);
}
- break;
+
case ADDR_EXPR:
if (currop->op0)
{
@@ -2736,17 +2713,15 @@ create_component_ref_by_pieces_1 (basic_block block, vn_reference_t ref,
case IMAGPART_EXPR:
case VIEW_CONVERT_EXPR:
{
- tree folded;
tree genop0 = create_component_ref_by_pieces_1 (block, ref,
operand,
stmts, domstmt);
if (!genop0)
return NULL_TREE;
- folded = fold_build1 (currop->opcode, currop->type,
- genop0);
- return folded;
+
+ return fold_build1 (currop->opcode, currop->type, genop0);
}
- break;
+
case WITH_SIZE_EXPR:
{
tree genop0 = create_component_ref_by_pieces_1 (block, ref, operand,
@@ -2763,28 +2738,18 @@ create_component_ref_by_pieces_1 (basic_block block, vn_reference_t ref,
return fold_build2 (currop->opcode, currop->type, genop0, genop1);
}
- break;
+
case BIT_FIELD_REF:
{
- tree folded;
tree genop0 = create_component_ref_by_pieces_1 (block, ref, operand,
stmts, domstmt);
- pre_expr op1expr = get_or_alloc_expr_for (currop->op0);
- pre_expr op2expr = get_or_alloc_expr_for (currop->op1);
- tree genop1;
- tree genop2;
+ tree op1 = currop->op0;
+ tree op2 = currop->op1;
if (!genop0)
return NULL_TREE;
- genop1 = find_or_generate_expression (block, op1expr, stmts, domstmt);
- if (!genop1)
- return NULL_TREE;
- genop2 = find_or_generate_expression (block, op2expr, stmts, domstmt);
- if (!genop2)
- return NULL_TREE;
- folded = fold_build3 (BIT_FIELD_REF, currop->type, genop0, genop1,
- genop2);
- return folded;
+
+ return fold_build3 (BIT_FIELD_REF, currop->type, genop0, op1, op2);
}
/* For array ref vn_reference_op's, operand 1 of the array ref
@@ -2870,10 +2835,9 @@ create_component_ref_by_pieces_1 (basic_block block, vn_reference_t ref,
return NULL_TREE;
}
- return fold_build3 (COMPONENT_REF, TREE_TYPE (op1), op0, op1,
- genop2);
+ return fold_build3 (COMPONENT_REF, TREE_TYPE (op1), op0, op1, genop2);
}
- break;
+
case SSA_NAME:
{
pre_expr op0expr = get_or_alloc_expr_for (currop->op0);
@@ -3003,7 +2967,7 @@ static tree
create_expression_by_pieces (basic_block block, pre_expr expr,
gimple_seq *stmts, gimple domstmt, tree type)
{
- tree temp, name;
+ tree name;
tree folded;
gimple_seq forced_stmts = NULL;
unsigned int value_id;
@@ -3121,17 +3085,8 @@ create_expression_by_pieces (basic_block block, pre_expr expr,
gimple_seq_add_seq (stmts, forced_stmts);
}
- /* Build and insert the assignment of the end result to the temporary
- that we will return. */
- if (!pretemp || exprtype != TREE_TYPE (pretemp))
- pretemp = create_tmp_reg (exprtype, "pretmp");
-
- temp = pretemp;
- add_referenced_var (temp);
-
- newstmt = gimple_build_assign (temp, folded);
- name = make_ssa_name (temp, newstmt);
- gimple_assign_set_lhs (newstmt, name);
+ name = make_temp_ssa_name (exprtype, NULL, "pretmp");
+ newstmt = gimple_build_assign (name, folded);
gimple_set_plf (newstmt, NECESSARY, false);
gimple_seq_add_stmt (stmts, newstmt);
@@ -3235,7 +3190,7 @@ inhibit_phi_insertion (basic_block bb, pre_expr expr)
static bool
insert_into_preds_of_block (basic_block block, unsigned int exprnum,
- pre_expr *avail)
+ VEC(pre_expr, heap) *avail)
{
pre_expr expr = expression_for_id (exprnum);
pre_expr newphi;
@@ -3251,7 +3206,7 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum,
gimple phi;
/* Make sure we aren't creating an induction variable. */
- if (block->loop_depth > 0 && EDGE_COUNT (block->preds) == 2)
+ if (bb_loop_depth (block) > 0 && EDGE_COUNT (block->preds) == 2)
{
bool firstinsideloop = false;
bool secondinsideloop = false;
@@ -3276,7 +3231,7 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum,
gimple_seq stmts = NULL;
tree builtexpr;
bprime = pred->src;
- eprime = avail[bprime->index];
+ eprime = VEC_index (pre_expr, avail, pred->dest_idx);
if (eprime->kind != NAME && eprime->kind != CONSTANT)
{
@@ -3286,14 +3241,14 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum,
type);
gcc_assert (!(pred->flags & EDGE_ABNORMAL));
gsi_insert_seq_on_edge (pred, stmts);
- avail[bprime->index] = get_or_alloc_expr_for_name (builtexpr);
+ VEC_replace (pre_expr, avail, pred->dest_idx,
+ get_or_alloc_expr_for_name (builtexpr));
insertions = true;
}
else if (eprime->kind == CONSTANT)
{
/* Constants may not have the right type, fold_convert
- should give us back a constant with the right type.
- */
+ should give us back a constant with the right type. */
tree constant = PRE_EXPR_CONSTANT (eprime);
if (!useless_type_conversion_p (type, TREE_TYPE (constant)))
{
@@ -3325,11 +3280,13 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum,
}
gsi_insert_seq_on_edge (pred, stmts);
}
- avail[bprime->index] = get_or_alloc_expr_for_name (forcedexpr);
+ VEC_replace (pre_expr, avail, pred->dest_idx,
+ get_or_alloc_expr_for_name (forcedexpr));
}
}
else
- avail[bprime->index] = get_or_alloc_expr_for_constant (builtexpr);
+ VEC_replace (pre_expr, avail, pred->dest_idx,
+ get_or_alloc_expr_for_constant (builtexpr));
}
}
else if (eprime->kind == NAME)
@@ -3368,7 +3325,8 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum,
}
gsi_insert_seq_on_edge (pred, stmts);
}
- avail[bprime->index] = get_or_alloc_expr_for_name (forcedexpr);
+ VEC_replace (pre_expr, avail, pred->dest_idx,
+ get_or_alloc_expr_for_name (forcedexpr));
}
}
}
@@ -3382,15 +3340,7 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum,
return false;
/* Now build a phi for the new variable. */
- if (!prephitemp || TREE_TYPE (prephitemp) != type)
- prephitemp = create_tmp_var (type, "prephitmp");
-
- temp = prephitemp;
- add_referenced_var (temp);
-
- if (TREE_CODE (type) == COMPLEX_TYPE
- || TREE_CODE (type) == VECTOR_TYPE)
- DECL_GIMPLE_REG_P (temp) = 1;
+ temp = make_temp_ssa_name (type, NULL, "prephitmp");
phi = create_phi_node (temp, block);
gimple_set_plf (phi, NECESSARY, false);
@@ -3399,14 +3349,13 @@ insert_into_preds_of_block (basic_block block, unsigned int exprnum,
bitmap_set_bit (inserted_exprs, SSA_NAME_VERSION (gimple_phi_result (phi)));
FOR_EACH_EDGE (pred, ei, block->preds)
{
- pre_expr ae = avail[pred->src->index];
+ pre_expr ae = VEC_index (pre_expr, avail, pred->dest_idx);
gcc_assert (get_expr_type (ae) == type
|| useless_type_conversion_p (type, get_expr_type (ae)));
if (ae->kind == CONSTANT)
add_phi_arg (phi, PRE_EXPR_CONSTANT (ae), pred, UNKNOWN_LOCATION);
else
- add_phi_arg (phi, PRE_EXPR_NAME (avail[pred->src->index]), pred,
- UNKNOWN_LOCATION);
+ add_phi_arg (phi, PRE_EXPR_NAME (ae), pred, UNKNOWN_LOCATION);
}
newphi = get_or_alloc_expr_for_name (gimple_phi_result (phi));
@@ -3466,15 +3415,18 @@ static bool
do_regular_insertion (basic_block block, basic_block dom)
{
bool new_stuff = false;
- VEC (pre_expr, heap) *exprs = sorted_array_from_bitmap_set (ANTIC_IN (block));
+ VEC (pre_expr, heap) *exprs;
pre_expr expr;
+ VEC (pre_expr, heap) *avail = NULL;
int i;
+ exprs = sorted_array_from_bitmap_set (ANTIC_IN (block));
+ VEC_safe_grow (pre_expr, heap, avail, EDGE_COUNT (block->preds));
+
FOR_EACH_VEC_ELT (pre_expr, exprs, i, expr)
{
if (expr->kind != NAME)
{
- pre_expr *avail;
unsigned int val;
bool by_some = false;
bool cant_insert = false;
@@ -3497,7 +3449,6 @@ do_regular_insertion (basic_block block, basic_block dom)
continue;
}
- avail = XCNEWVEC (pre_expr, last_basic_block);
FOR_EACH_EDGE (pred, ei, block->preds)
{
unsigned int vprime;
@@ -3520,6 +3471,7 @@ do_regular_insertion (basic_block block, basic_block dom)
rest of the results are. */
if (eprime == NULL)
{
+ VEC_replace (pre_expr, avail, pred->dest_idx, NULL);
cant_insert = true;
break;
}
@@ -3530,12 +3482,12 @@ do_regular_insertion (basic_block block, basic_block dom)
vprime, NULL);
if (edoubleprime == NULL)
{
- avail[bprime->index] = eprime;
+ VEC_replace (pre_expr, avail, pred->dest_idx, eprime);
all_same = false;
}
else
{
- avail[bprime->index] = edoubleprime;
+ VEC_replace (pre_expr, avail, pred->dest_idx, edoubleprime);
by_some = true;
/* We want to perform insertions to remove a redundancy on
a path in the CFG we want to optimize for speed. */
@@ -3543,7 +3495,7 @@ do_regular_insertion (basic_block block, basic_block dom)
do_insertion = true;
if (first_s == NULL)
first_s = edoubleprime;
- else if (!pre_expr_eq (first_s, edoubleprime))
+ else if (!pre_expr_d::equal (first_s, edoubleprime))
all_same = false;
}
}
@@ -3614,11 +3566,11 @@ do_regular_insertion (basic_block block, basic_block dom)
}
}
}
- free (avail);
}
}
VEC_free (pre_expr, heap, exprs);
+ VEC_free (pre_expr, heap, avail);
return new_stuff;
}
@@ -3634,15 +3586,18 @@ static bool
do_partial_partial_insertion (basic_block block, basic_block dom)
{
bool new_stuff = false;
- VEC (pre_expr, heap) *exprs = sorted_array_from_bitmap_set (PA_IN (block));
+ VEC (pre_expr, heap) *exprs;
pre_expr expr;
+ VEC (pre_expr, heap) *avail = NULL;
int i;
+ exprs = sorted_array_from_bitmap_set (PA_IN (block));
+ VEC_safe_grow (pre_expr, heap, avail, EDGE_COUNT (block->preds));
+
FOR_EACH_VEC_ELT (pre_expr, exprs, i, expr)
{
if (expr->kind != NAME)
{
- pre_expr *avail;
unsigned int val;
bool by_all = true;
bool cant_insert = false;
@@ -3657,7 +3612,6 @@ do_partial_partial_insertion (basic_block block, basic_block dom)
if (bitmap_set_contains_value (AVAIL_OUT (dom), val))
continue;
- avail = XCNEWVEC (pre_expr, last_basic_block);
FOR_EACH_EDGE (pred, ei, block->preds)
{
unsigned int vprime;
@@ -3682,6 +3636,7 @@ do_partial_partial_insertion (basic_block block, basic_block dom)
rest of the results are. */
if (eprime == NULL)
{
+ VEC_replace (pre_expr, avail, pred->dest_idx, NULL);
cant_insert = true;
break;
}
@@ -3690,13 +3645,12 @@ do_partial_partial_insertion (basic_block block, basic_block dom)
vprime = get_expr_value_id (eprime);
edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime),
vprime, NULL);
+ VEC_replace (pre_expr, avail, pred->dest_idx, edoubleprime);
if (edoubleprime == NULL)
{
by_all = false;
break;
}
- else
- avail[bprime->index] = edoubleprime;
}
/* If we can insert it, it's not the same value
@@ -3750,11 +3704,11 @@ do_partial_partial_insertion (basic_block block, basic_block dom)
new_stuff = true;
}
}
- free (avail);
}
}
VEC_free (pre_expr, heap, exprs);
+ VEC_free (pre_expr, heap, avail);
return new_stuff;
}
@@ -3851,7 +3805,7 @@ make_values_for_phi (gimple phi, basic_block block)
/* We have no need for virtual phis, as they don't represent
actual computations. */
- if (is_gimple_reg (result))
+ if (!virtual_operand_p (result))
{
pre_expr e = get_or_alloc_expr_for_name (result);
add_to_value (get_expr_value_id (e), e);
@@ -3901,7 +3855,7 @@ compute_avail (void)
if (!name
|| !SSA_NAME_IS_DEFAULT_DEF (name)
|| has_zero_uses (name)
- || !is_gimple_reg (name))
+ || virtual_operand_p (name))
continue;
e = get_or_alloc_expr_for_name (name);
@@ -4504,7 +4458,7 @@ eliminate (void)
replacing the PHI with a single copy if possible.
Do not touch inserted, single-argument or virtual PHIs. */
if (gimple_phi_num_args (phi) == 1
- || !is_gimple_reg (res))
+ || virtual_operand_p (res))
{
gsi_next (&gsi);
continue;
@@ -4822,7 +4776,7 @@ init_pre (bool do_fre)
next_expression_id = 1;
expressions = NULL;
- VEC_safe_push (pre_expr, heap, expressions, NULL);
+ VEC_safe_push (pre_expr, heap, expressions, (pre_expr)NULL);
value_expressions = VEC_alloc (bitmap_set_t, heap, get_max_value_id () + 1);
VEC_safe_grow_cleared (bitmap_set_t, heap, value_expressions,
get_max_value_id() + 1);
@@ -4831,10 +4785,6 @@ init_pre (bool do_fre)
in_fre = do_fre;
inserted_exprs = BITMAP_ALLOC (NULL);
- need_creation = NULL;
- pretemp = NULL_TREE;
- storetemp = NULL_TREE;
- prephitemp = NULL_TREE;
connect_infinite_loops_to_exit ();
memset (&pre_stats, 0, sizeof (pre_stats));
@@ -4849,11 +4799,8 @@ init_pre (bool do_fre)
calculate_dominance_info (CDI_DOMINATORS);
bitmap_obstack_initialize (&grand_bitmap_obstack);
- phi_translate_table = htab_create (5110, expr_pred_trans_hash,
- expr_pred_trans_eq, free);
- expression_to_id = htab_create (num_ssa_names * 3,
- pre_expr_hash,
- pre_expr_eq, NULL);
+ phi_translate_table.create (5110);
+ expression_to_id.create (num_ssa_names * 3);
bitmap_set_pool = create_alloc_pool ("Bitmap sets",
sizeof (struct bitmap_set), 30);
pre_expr_pool = create_alloc_pool ("pre_expr nodes",
@@ -4882,12 +4829,11 @@ fini_pre (bool do_fre)
free (postorder);
VEC_free (bitmap_set_t, heap, value_expressions);
BITMAP_FREE (inserted_exprs);
- VEC_free (gimple, heap, need_creation);
bitmap_obstack_release (&grand_bitmap_obstack);
free_alloc_pool (bitmap_set_pool);
free_alloc_pool (pre_expr_pool);
- htab_delete (phi_translate_table);
- htab_delete (expression_to_id);
+ phi_translate_table.dispose ();
+ expression_to_id.dispose ();
VEC_free (unsigned, heap, name_to_id);
free_aux_for_blocks ();
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index d58ec11e159..e56b012cd61 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -29,10 +29,8 @@
#include "basic-block.h"
#include "function.h"
#include "gimple-pretty-print.h"
-#include "timevar.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "tree-flow.h"
-#include "tree-pass.h"
#include "tree-ssa-propagate.h"
#include "langhooks.h"
#include "vec.h"
@@ -793,12 +791,11 @@ update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
variable. Create an assignment statement
with a dummy (unused) lhs variable. */
STRIP_USELESS_TYPE_CONVERSION (expr);
- lhs = create_tmp_var (TREE_TYPE (expr), NULL);
- new_stmt = gimple_build_assign (lhs, expr);
- add_referenced_var (lhs);
if (gimple_in_ssa_p (cfun))
- lhs = make_ssa_name (lhs, new_stmt);
- gimple_assign_set_lhs (new_stmt, lhs);
+ lhs = make_ssa_name (TREE_TYPE (expr), NULL);
+ else
+ lhs = create_tmp_var (TREE_TYPE (expr), NULL);
+ new_stmt = gimple_build_assign (lhs, expr);
gimple_set_vuse (new_stmt, gimple_vuse (stmt));
gimple_set_vdef (new_stmt, gimple_vdef (stmt));
move_ssa_defining_stmt_for_defs (new_stmt, stmt);
@@ -1031,7 +1028,7 @@ substitute_and_fold (ssa_prop_get_value_fn get_value_fn,
gimple_stmt_iterator gsi;
if (!name
- || !is_gimple_reg (name))
+ || virtual_operand_p (name))
continue;
def_stmt = SSA_NAME_DEF_STMT (name);
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index 99163bb206d..2b1298d1402 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -25,13 +25,10 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-inline.h"
#include "tree-flow.h"
#include "gimple.h"
-#include "tree-dump.h"
-#include "timevar.h"
#include "tree-iterator.h"
#include "tree-pass.h"
#include "alloc-pool.h"
@@ -237,7 +234,7 @@ phi_rank (gimple stmt)
/* Ignore virtual SSA_NAMEs. */
res = gimple_phi_result (stmt);
- if (!is_gimple_reg (SSA_NAME_VAR (res)))
+ if (virtual_operand_p (res))
return bb_rank[bb->index];
/* The phi definition must have a single use, and that use must be
@@ -965,7 +962,7 @@ static VEC (oecount, heap) *cvec;
static hashval_t
oecount_hash (const void *p)
{
- const oecount *c = VEC_index (oecount, cvec, (size_t)p - 42);
+ const oecount *c = &VEC_index (oecount, cvec, (size_t)p - 42);
return htab_hash_pointer (c->op) ^ (hashval_t)c->oecode;
}
@@ -974,8 +971,8 @@ oecount_hash (const void *p)
static int
oecount_eq (const void *p1, const void *p2)
{
- const oecount *c1 = VEC_index (oecount, cvec, (size_t)p1 - 42);
- const oecount *c2 = VEC_index (oecount, cvec, (size_t)p2 - 42);
+ const oecount *c1 = &VEC_index (oecount, cvec, (size_t)p1 - 42);
+ const oecount *c2 = &VEC_index (oecount, cvec, (size_t)p2 - 42);
return (c1->oecode == c2->oecode
&& c1->op == c2->op);
}
@@ -1150,7 +1147,7 @@ zero_one_operation (tree *def, enum tree_code opcode, tree op)
OP1 or OP2. Returns the new statement. */
static gimple
-build_and_add_sum (tree tmpvar, tree op1, tree op2, enum tree_code opcode)
+build_and_add_sum (tree type, tree op1, tree op2, enum tree_code opcode)
{
gimple op1def = NULL, op2def = NULL;
gimple_stmt_iterator gsi;
@@ -1158,9 +1155,8 @@ build_and_add_sum (tree tmpvar, tree op1, tree op2, enum tree_code opcode)
gimple sum;
/* Create the addition statement. */
- sum = gimple_build_assign_with_ops (opcode, tmpvar, op1, op2);
- op = make_ssa_name (tmpvar, sum);
- gimple_assign_set_lhs (sum, op);
+ op = make_ssa_name (type, NULL);
+ sum = gimple_build_assign_with_ops (opcode, op, op1, op2);
/* Find an insertion place and insert. */
if (TREE_CODE (op1) == SSA_NAME)
@@ -1358,7 +1354,7 @@ undistribute_ops_list (enum tree_code opcode,
else
{
VEC_pop (oecount, cvec);
- VEC_index (oecount, cvec, (size_t)*slot - 42)->cnt++;
+ VEC_index (oecount, cvec, (size_t)*slot - 42).cnt++;
}
}
}
@@ -1385,7 +1381,7 @@ undistribute_ops_list (enum tree_code opcode,
candidates2 = sbitmap_alloc (length);
while (!VEC_empty (oecount, cvec))
{
- oecount *c = VEC_last (oecount, cvec);
+ oecount *c = &VEC_last (oecount, cvec);
if (c->cnt < 2)
break;
@@ -1424,7 +1420,6 @@ undistribute_ops_list (enum tree_code opcode,
if (nr_candidates2 >= 2)
{
operand_entry_t oe1, oe2;
- tree tmpvar;
gimple prod;
int first = sbitmap_first_set_bit (candidates2);
@@ -1435,8 +1430,6 @@ undistribute_ops_list (enum tree_code opcode,
fprintf (dump_file, "Building (");
print_generic_expr (dump_file, oe1->op, 0);
}
- tmpvar = create_tmp_reg (TREE_TYPE (oe1->op), NULL);
- add_referenced_var (tmpvar);
zero_one_operation (&oe1->op, c->oecode, c->op);
EXECUTE_IF_SET_IN_SBITMAP (candidates2, first+1, i, sbi0)
{
@@ -1448,14 +1441,16 @@ undistribute_ops_list (enum tree_code opcode,
print_generic_expr (dump_file, oe2->op, 0);
}
zero_one_operation (&oe2->op, c->oecode, c->op);
- sum = build_and_add_sum (tmpvar, oe1->op, oe2->op, opcode);
+ sum = build_and_add_sum (TREE_TYPE (oe1->op),
+ oe1->op, oe2->op, opcode);
oe2->op = build_zero_cst (TREE_TYPE (oe2->op));
oe2->rank = 0;
oe1->op = gimple_get_lhs (sum);
}
/* Apply the multiplication/division. */
- prod = build_and_add_sum (tmpvar, oe1->op, c->op, c->oecode);
+ prod = build_and_add_sum (TREE_TYPE (oe1->op),
+ oe1->op, c->op, c->oecode);
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, ") %s ", c->oecode == MULT_EXPR ? "*" : "/");
@@ -1594,20 +1589,17 @@ eliminate_redundant_comparison (enum tree_code opcode,
}
else if (!operand_equal_p (t, curr->op, 0))
{
- tree tmpvar;
gimple sum;
enum tree_code subcode;
tree newop1;
tree newop2;
gcc_assert (COMPARISON_CLASS_P (t));
- tmpvar = create_tmp_var (TREE_TYPE (t), NULL);
- add_referenced_var (tmpvar);
extract_ops_from_tree (t, &subcode, &newop1, &newop2);
STRIP_USELESS_TYPE_CONVERSION (newop1);
STRIP_USELESS_TYPE_CONVERSION (newop2);
gcc_checking_assert (is_gimple_val (newop1)
&& is_gimple_val (newop2));
- sum = build_and_add_sum (tmpvar, newop1, newop2, subcode);
+ sum = build_and_add_sum (TREE_TYPE (t), newop1, newop2, subcode);
curr->op = gimple_get_lhs (sum);
}
return true;
@@ -2447,7 +2439,6 @@ rewrite_expr_tree_parallel (gimple stmt, int width,
int ready_stmts_end = 0;
int i = 0;
tree last_rhs1 = gimple_assign_rhs1 (stmt);
- tree lhs_var;
/* We start expression rewriting from the top statements.
So, in this loop we create a full list of statements
@@ -2456,9 +2447,6 @@ rewrite_expr_tree_parallel (gimple stmt, int width,
for (i = stmt_num - 2; i >= 0; i--)
stmts[i] = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmts[i+1]));
- lhs_var = create_tmp_reg (TREE_TYPE (last_rhs1), NULL);
- add_referenced_var (lhs_var);
-
for (i = 0; i < stmt_num; i++)
{
tree op1, op2;
@@ -2517,7 +2505,7 @@ rewrite_expr_tree_parallel (gimple stmt, int width,
update_stmt (stmts[i]);
}
else
- stmts[i] = build_and_add_sum (lhs_var, op1, op2, opcode);
+ stmts[i] = build_and_add_sum (TREE_TYPE (last_rhs1), op1, op2, opcode);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -3081,30 +3069,13 @@ compare_repeat_factors (const void *x1, const void *x2)
return rf2->rank - rf1->rank;
}
-/* Get a new SSA name for register variable *TARGET of type TYPE.
- If *TARGET is null or incompatible with TYPE, create the variable
- first. */
-
-static tree
-get_reassoc_pow_ssa_name (tree *target, tree type)
-{
- if (!*target || !types_compatible_p (type, TREE_TYPE (*target)))
- {
- *target = create_tmp_reg (type, "reassocpow");
- add_referenced_var (*target);
- }
-
- return make_ssa_name (*target, NULL);
-}
-
/* Look for repeated operands in OPS in the multiply tree rooted at
STMT. Replace them with an optimal sequence of multiplies and powi
builtin calls, and remove the used operands from OPS. Return an
SSA name representing the value of the replacement sequence. */
static tree
-attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
- tree *target)
+attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops)
{
unsigned i, j, vec_len;
int ii;
@@ -3219,7 +3190,7 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
fputs ("Multiplying by cached product ", dump_file);
for (elt = j; elt < vec_len; elt++)
{
- rf = VEC_index (repeat_factor, repeat_factor_vec, elt);
+ rf = &VEC_index (repeat_factor, repeat_factor_vec, elt);
print_generic_expr (dump_file, rf->factor, 0);
if (elt < vec_len - 1)
fputs (" * ", dump_file);
@@ -3229,7 +3200,7 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
}
else
{
- iter_result = get_reassoc_pow_ssa_name (target, type);
+ iter_result = make_temp_ssa_name (type, NULL, "reassocpow");
pow_stmt = gimple_build_call (powi_fndecl, 2, rf1->repr,
build_int_cst (integer_type_node,
power));
@@ -3245,7 +3216,7 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
dump_file);
for (elt = j; elt < vec_len; elt++)
{
- rf = VEC_index (repeat_factor, repeat_factor_vec, elt);
+ rf = &VEC_index (repeat_factor, repeat_factor_vec, elt);
print_generic_expr (dump_file, rf->factor, 0);
if (elt < vec_len - 1)
fputs (" * ", dump_file);
@@ -3279,7 +3250,7 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
fputs ("Building __builtin_pow call for (", dump_file);
for (elt = j; elt < vec_len; elt++)
{
- rf = VEC_index (repeat_factor, repeat_factor_vec, elt);
+ rf = &VEC_index (repeat_factor, repeat_factor_vec, elt);
print_generic_expr (dump_file, rf->factor, 0);
if (elt < vec_len - 1)
fputs (" * ", dump_file);
@@ -3304,8 +3275,8 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
{
tree op1, op2;
- rf1 = VEC_index (repeat_factor, repeat_factor_vec, ii);
- rf2 = VEC_index (repeat_factor, repeat_factor_vec, ii + 1);
+ rf1 = &VEC_index (repeat_factor, repeat_factor_vec, ii);
+ rf2 = &VEC_index (repeat_factor, repeat_factor_vec, ii + 1);
/* Init the last factor's representative to be itself. */
if (!rf2->repr)
@@ -3314,7 +3285,7 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
op1 = rf1->factor;
op2 = rf2->repr;
- target_ssa = get_reassoc_pow_ssa_name (target, type);
+ target_ssa = make_temp_ssa_name (type, NULL, "reassocpow");
mul_stmt = gimple_build_assign_with_ops (MULT_EXPR,
target_ssa,
op1, op2);
@@ -3329,8 +3300,8 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
/* Form a call to __builtin_powi for the maximum product
just formed, raised to the power obtained earlier. */
- rf1 = VEC_index (repeat_factor, repeat_factor_vec, j);
- iter_result = get_reassoc_pow_ssa_name (target, type);
+ rf1 = &VEC_index (repeat_factor, repeat_factor_vec, j);
+ iter_result = make_temp_ssa_name (type, NULL, "reassocpow");
pow_stmt = gimple_build_call (powi_fndecl, 2, rf1->repr,
build_int_cst (integer_type_node,
power));
@@ -3343,7 +3314,7 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
form the product of this one and those others. */
if (result)
{
- tree new_result = get_reassoc_pow_ssa_name (target, type);
+ tree new_result = make_temp_ssa_name (type, NULL, "reassocpow");
mul_stmt = gimple_build_assign_with_ops (MULT_EXPR, new_result,
result, iter_result);
gimple_set_location (mul_stmt, gimple_location (stmt));
@@ -3362,7 +3333,7 @@ attempt_builtin_powi (gimple stmt, VEC(operand_entry_t, heap) **ops,
unsigned k = power;
unsigned n;
- rf1 = VEC_index (repeat_factor, repeat_factor_vec, i);
+ rf1 = &VEC_index (repeat_factor, repeat_factor_vec, i);
rf1->count -= power;
FOR_EACH_VEC_ELT_REVERSE (operand_entry_t, *ops, n, oe)
@@ -3456,7 +3427,6 @@ reassociate_bb (basic_block bb)
{
gimple_stmt_iterator gsi;
basic_block son;
- tree target = NULL_TREE;
for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi_prev (&gsi))
{
@@ -3542,7 +3512,7 @@ reassociate_bb (basic_block bb)
if (first_pass_instance
&& rhs_code == MULT_EXPR
&& flag_unsafe_math_optimizations)
- powi_result = attempt_builtin_powi (stmt, &ops, &target);
+ powi_result = attempt_builtin_powi (stmt, &ops);
/* If the operand vector is now empty, all operands were
consumed by the __builtin_powi optimization. */
@@ -3581,8 +3551,8 @@ reassociate_bb (basic_block bb)
{
gimple mul_stmt;
tree type = TREE_TYPE (gimple_get_lhs (stmt));
- tree target_ssa = get_reassoc_pow_ssa_name (&target,
- type);
+ tree target_ssa = make_temp_ssa_name (type, NULL,
+ "reassocpow");
gimple_set_lhs (stmt, target_ssa);
update_stmt (stmt);
mul_stmt = gimple_build_assign_with_ops (MULT_EXPR, lhs,
@@ -3643,7 +3613,7 @@ init_reassoc (void)
{
int i;
long rank = 2;
- int *bbs = XNEWVEC (int, last_basic_block + 1);
+ int *bbs = XNEWVEC (int, n_basic_blocks - NUM_FIXED_BLOCKS);
/* Find the loops, so that we can prevent moving calculations in
them. */
@@ -3658,7 +3628,7 @@ init_reassoc (void)
/* Reverse RPO (Reverse Post Order) will give us something where
deeper loops come later. */
pre_and_rev_post_order_compute (NULL, bbs, false);
- bb_rank = XCNEWVEC (long, last_basic_block + 1);
+ bb_rank = XCNEWVEC (long, last_basic_block);
operand_rank = pointer_map_create ();
/* Give each default definition a distinct rank. This includes
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index ae912d732a8..5d5a91cef7c 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -25,21 +25,15 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-inline.h"
#include "tree-flow.h"
#include "gimple.h"
-#include "tree-dump.h"
-#include "timevar.h"
-#include "fibheap.h"
+#include "dumpfile.h"
#include "hashtab.h"
-#include "tree-iterator.h"
#include "alloc-pool.h"
-#include "tree-pass.h"
#include "flags.h"
#include "bitmap.h"
-#include "langhooks.h"
#include "cfgloop.h"
#include "params.h"
#include "tree-ssa-propagate.h"
@@ -628,6 +622,9 @@ copy_reference_ops_from_ref (tree ref, VEC(vn_reference_op_s, heap) **result)
switch (temp.opcode)
{
+ case MODIFY_EXPR:
+ temp.op0 = TREE_OPERAND (ref, 1);
+ break;
case WITH_SIZE_EXPR:
temp.op0 = TREE_OPERAND (ref, 1);
temp.off = 0;
@@ -748,6 +745,7 @@ copy_reference_ops_from_ref (tree ref, VEC(vn_reference_op_s, heap) **result)
VEC_safe_push (vn_reference_op_s, heap, *result, &temp);
if (REFERENCE_CLASS_P (ref)
+ || TREE_CODE (ref) == MODIFY_EXPR
|| TREE_CODE (ref) == WITH_SIZE_EXPR
|| (TREE_CODE (ref) == ADDR_EXPR
&& !is_gimple_min_invariant (ref)))
@@ -777,7 +775,7 @@ ao_ref_init_from_vn_reference (ao_ref *ref,
alias_set_type base_alias_set = -1;
/* First get the final access size from just the outermost expression. */
- op = VEC_index (vn_reference_op_s, ops, 0);
+ op = &VEC_index (vn_reference_op_s, ops, 0);
if (op->opcode == COMPONENT_REF)
size_tree = DECL_SIZE (op->op0);
else if (op->opcode == BIT_FIELD_REF)
@@ -817,7 +815,7 @@ ao_ref_init_from_vn_reference (ao_ref *ref,
&& op->op0
&& DECL_P (TREE_OPERAND (op->op0, 0)))
{
- vn_reference_op_t pop = VEC_index (vn_reference_op_s, ops, i-1);
+ vn_reference_op_t pop = &VEC_index (vn_reference_op_s, ops, i-1);
base = TREE_OPERAND (op->op0, 0);
if (pop->off == -1)
{
@@ -942,6 +940,20 @@ copy_reference_ops_from_call (gimple call,
{
vn_reference_op_s temp;
unsigned i;
+ tree lhs = gimple_call_lhs (call);
+
+ /* If 2 calls have a different non-ssa lhs, vdef value numbers should be
+ different. By adding the lhs here in the vector, we ensure that the
+ hashcode is different, guaranteeing a different value number. */
+ if (lhs && TREE_CODE (lhs) != SSA_NAME)
+ {
+ memset (&temp, 0, sizeof (temp));
+ temp.opcode = MODIFY_EXPR;
+ temp.type = TREE_TYPE (lhs);
+ temp.op0 = lhs;
+ temp.off = -1;
+ VEC_safe_push (vn_reference_op_s, heap, *result, &temp);
+ }
/* Copy the type, opcode, function being called and static chain. */
memset (&temp, 0, sizeof (temp));
@@ -992,8 +1004,8 @@ vn_reference_fold_indirect (VEC (vn_reference_op_s, heap) **ops,
unsigned int *i_p)
{
unsigned int i = *i_p;
- vn_reference_op_t op = VEC_index (vn_reference_op_s, *ops, i);
- vn_reference_op_t mem_op = VEC_index (vn_reference_op_s, *ops, i - 1);
+ vn_reference_op_t op = &VEC_index (vn_reference_op_s, *ops, i);
+ vn_reference_op_t mem_op = &VEC_index (vn_reference_op_s, *ops, i - 1);
tree addr_base;
HOST_WIDE_INT addr_offset;
@@ -1024,8 +1036,8 @@ vn_reference_maybe_forwprop_address (VEC (vn_reference_op_s, heap) **ops,
unsigned int *i_p)
{
unsigned int i = *i_p;
- vn_reference_op_t op = VEC_index (vn_reference_op_s, *ops, i);
- vn_reference_op_t mem_op = VEC_index (vn_reference_op_s, *ops, i - 1);
+ vn_reference_op_t op = &VEC_index (vn_reference_op_s, *ops, i);
+ vn_reference_op_t mem_op = &VEC_index (vn_reference_op_s, *ops, i - 1);
gimple def_stmt;
enum tree_code code;
double_int off;
@@ -1102,7 +1114,7 @@ fully_constant_vn_reference_p (vn_reference_t ref)
/* Try to simplify the translated expression if it is
a call to a builtin function with at most two arguments. */
- op = VEC_index (vn_reference_op_s, operands, 0);
+ op = &VEC_index (vn_reference_op_s, operands, 0);
if (op->opcode == CALL_EXPR
&& TREE_CODE (op->op0) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (op->op0, 0)) == FUNCTION_DECL
@@ -1112,9 +1124,9 @@ fully_constant_vn_reference_p (vn_reference_t ref)
{
vn_reference_op_t arg0, arg1 = NULL;
bool anyconst = false;
- arg0 = VEC_index (vn_reference_op_s, operands, 1);
+ arg0 = &VEC_index (vn_reference_op_s, operands, 1);
if (VEC_length (vn_reference_op_s, operands) > 2)
- arg1 = VEC_index (vn_reference_op_s, operands, 2);
+ arg1 = &VEC_index (vn_reference_op_s, operands, 2);
if (TREE_CODE_CLASS (arg0->opcode) == tcc_constant
|| (arg0->opcode == ADDR_EXPR
&& is_gimple_min_invariant (arg0->op0)))
@@ -1146,7 +1158,7 @@ fully_constant_vn_reference_p (vn_reference_t ref)
&& VEC_length (vn_reference_op_s, operands) == 2)
{
vn_reference_op_t arg0;
- arg0 = VEC_index (vn_reference_op_s, operands, 1);
+ arg0 = &VEC_index (vn_reference_op_s, operands, 1);
if (arg0->opcode == STRING_CST
&& (TYPE_MODE (op->type)
== TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0->op0))))
@@ -1214,12 +1226,12 @@ valueize_refs_1 (VEC (vn_reference_op_s, heap) *orig, bool *valueized_anything)
&& vro->op0
&& TREE_CODE (vro->op0) == ADDR_EXPR
&& VEC_index (vn_reference_op_s,
- orig, i - 1)->opcode == MEM_REF)
+ orig, i - 1).opcode == MEM_REF)
vn_reference_fold_indirect (&orig, &i);
else if (i > 0
&& vro->opcode == SSA_NAME
&& VEC_index (vn_reference_op_s,
- orig, i - 1)->opcode == MEM_REF)
+ orig, i - 1).opcode == MEM_REF)
vn_reference_maybe_forwprop_address (&orig, &i);
/* If it transforms a non-constant ARRAY_REF into a constant
one, adjust the constant offset. */
@@ -1318,12 +1330,19 @@ static vn_lookup_kind default_vn_walk_kind;
with the current VUSE and performs the expression lookup. */
static void *
-vn_reference_lookup_2 (ao_ref *op ATTRIBUTE_UNUSED, tree vuse, void *vr_)
+vn_reference_lookup_2 (ao_ref *op ATTRIBUTE_UNUSED, tree vuse,
+ unsigned int cnt, void *vr_)
{
vn_reference_t vr = (vn_reference_t)vr_;
void **slot;
hashval_t hash;
+ /* This bounds the stmt walks we perform on reference lookups
+ to O(1) instead of O(N) where N is the number of dominating
+ stores. */
+ if (cnt > (unsigned) PARAM_VALUE (PARAM_SCCVN_MAX_ALIAS_QUERIES_PER_ACCESS))
+ return (void *)-1;
+
if (last_vuse_ptr)
*last_vuse_ptr = vuse;
@@ -1612,9 +1631,9 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_)
i = VEC_length (vn_reference_op_s, vr->operands) - 1;
j = VEC_length (vn_reference_op_s, lhs_ops) - 1;
while (j >= 0 && i >= 0
- && vn_reference_op_eq (VEC_index (vn_reference_op_s,
- vr->operands, i),
- VEC_index (vn_reference_op_s, lhs_ops, j)))
+ && vn_reference_op_eq (&VEC_index (vn_reference_op_s,
+ vr->operands, i),
+ &VEC_index (vn_reference_op_s, lhs_ops, j)))
{
i--;
j--;
@@ -1627,10 +1646,10 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_)
don't care here - further lookups with the rewritten operands
will simply fail if we messed up types too badly. */
if (j == 0 && i >= 0
- && VEC_index (vn_reference_op_s, lhs_ops, 0)->opcode == MEM_REF
- && VEC_index (vn_reference_op_s, lhs_ops, 0)->off != -1
- && (VEC_index (vn_reference_op_s, lhs_ops, 0)->off
- == VEC_index (vn_reference_op_s, vr->operands, i)->off))
+ && VEC_index (vn_reference_op_s, lhs_ops, 0).opcode == MEM_REF
+ && VEC_index (vn_reference_op_s, lhs_ops, 0).off != -1
+ && (VEC_index (vn_reference_op_s, lhs_ops, 0).off
+ == VEC_index (vn_reference_op_s, vr->operands, i).off))
i--, j--;
/* i now points to the first additional op.
@@ -1657,7 +1676,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_)
VEC_truncate (vn_reference_op_s, vr->operands,
i + 1 + VEC_length (vn_reference_op_s, rhs));
FOR_EACH_VEC_ELT (vn_reference_op_s, rhs, j, vro)
- VEC_replace (vn_reference_op_s, vr->operands, i + 1 + j, vro);
+ VEC_replace (vn_reference_op_s, vr->operands, i + 1 + j, *vro);
VEC_free (vn_reference_op_s, heap, rhs);
vr->operands = valueize_refs (vr->operands);
vr->hashcode = vn_reference_compute_hash (vr);
@@ -1795,12 +1814,12 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_)
op.opcode = MEM_REF;
op.op0 = build_int_cst (ptr_type_node, at - rhs_offset);
op.off = at - lhs_offset + rhs_offset;
- VEC_replace (vn_reference_op_s, vr->operands, 0, &op);
+ VEC_replace (vn_reference_op_s, vr->operands, 0, op);
op.type = TREE_TYPE (rhs);
op.opcode = TREE_CODE (rhs);
op.op0 = rhs;
op.off = -1;
- VEC_replace (vn_reference_op_s, vr->operands, 1, &op);
+ VEC_replace (vn_reference_op_s, vr->operands, 1, op);
vr->hashcode = vn_reference_compute_hash (vr);
/* Adjust *ref from the new operands. */
@@ -1941,7 +1960,7 @@ vn_reference_lookup (tree op, tree vuse, vn_lookup_kind kind,
RESULT, and return the resulting reference structure we created. */
vn_reference_t
-vn_reference_insert (tree op, tree result, tree vuse)
+vn_reference_insert (tree op, tree result, tree vuse, tree vdef)
{
void **slot;
vn_reference_t vr1;
@@ -1957,6 +1976,7 @@ vn_reference_insert (tree op, tree result, tree vuse)
vr1->set = get_alias_set (op);
vr1->hashcode = vn_reference_compute_hash (vr1);
vr1->result = TREE_CODE (result) == SSA_NAME ? SSA_VAL (result) : result;
+ vr1->result_vdef = vdef;
slot = htab_find_slot_with_hash (current_info->references, vr1, vr1->hashcode,
INSERT);
@@ -2628,6 +2648,10 @@ visit_reference_op_call (tree lhs, gimple stmt)
tree vuse = gimple_vuse (stmt);
tree vdef = gimple_vdef (stmt);
+ /* Non-ssa lhs is handled in copy_reference_ops_from_call. */
+ if (lhs && TREE_CODE (lhs) != SSA_NAME)
+ lhs = NULL_TREE;
+
vr1.vuse = vuse ? SSA_VAL (vuse) : NULL_TREE;
vr1.operands = valueize_shared_reference_ops_from_call (stmt);
vr1.type = gimple_expr_type (stmt);
@@ -2729,7 +2753,8 @@ visit_reference_op_load (tree lhs, tree op, gimple stmt)
a new SSA_NAME we create. */
if (!result)
{
- result = make_ssa_name (SSA_NAME_VAR (lhs), gimple_build_nop ());
+ result = make_temp_ssa_name (TREE_TYPE (lhs), gimple_build_nop (),
+ "vntemp");
/* Initialize value-number information properly. */
VN_INFO_GET (result)->valnum = result;
VN_INFO (result)->value_id = get_next_value_id ();
@@ -2775,7 +2800,7 @@ visit_reference_op_load (tree lhs, tree op, gimple stmt)
else
{
changed = set_ssa_val_to (lhs, lhs);
- vn_reference_insert (op, lhs, last_vuse);
+ vn_reference_insert (op, lhs, last_vuse, NULL_TREE);
}
return changed;
@@ -2789,8 +2814,11 @@ static bool
visit_reference_op_store (tree lhs, tree op, gimple stmt)
{
bool changed = false;
- tree result;
+ vn_reference_t vnresult = NULL;
+ tree result, assign;
bool resultsame = false;
+ tree vuse = gimple_vuse (stmt);
+ tree vdef = gimple_vdef (stmt);
/* First we want to lookup using the *vuses* from the store and see
if there the last store to this location with the same address
@@ -2808,7 +2836,7 @@ visit_reference_op_store (tree lhs, tree op, gimple stmt)
Otherwise, the vdefs for the store are used when inserting into
the table, since the store generates a new memory state. */
- result = vn_reference_lookup (lhs, gimple_vuse (stmt), VN_NOWALK, NULL);
+ result = vn_reference_lookup (lhs, vuse, VN_NOWALK, NULL);
if (result)
{
@@ -2821,8 +2849,17 @@ visit_reference_op_store (tree lhs, tree op, gimple stmt)
if (!result || !resultsame)
{
- tree vdef;
+ assign = build2 (MODIFY_EXPR, TREE_TYPE (lhs), lhs, op);
+ vn_reference_lookup (assign, vuse, VN_NOWALK, &vnresult);
+ if (vnresult)
+ {
+ VN_INFO (vdef)->use_processed = true;
+ return set_ssa_val_to (vdef, vnresult->result_vdef);
+ }
+ }
+ if (!result || !resultsame)
+ {
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "No store match\n");
@@ -2834,7 +2871,7 @@ visit_reference_op_store (tree lhs, tree op, gimple stmt)
}
/* Have to set value numbers before insert, since insert is
going to valueize the references in-place. */
- if ((vdef = gimple_vdef (stmt)))
+ if (vdef)
{
changed |= set_ssa_val_to (vdef, vdef);
}
@@ -2842,22 +2879,21 @@ visit_reference_op_store (tree lhs, tree op, gimple stmt)
/* Do not insert structure copies into the tables. */
if (is_gimple_min_invariant (op)
|| is_gimple_reg (op))
- vn_reference_insert (lhs, op, vdef);
+ vn_reference_insert (lhs, op, vdef, NULL);
+
+ assign = build2 (MODIFY_EXPR, TREE_TYPE (lhs), lhs, op);
+ vn_reference_insert (assign, lhs, vuse, vdef);
}
else
{
/* We had a match, so value number the vdef to have the value
number of the vuse it came from. */
- tree def, use;
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "Store matched earlier value,"
"value numbering store vdefs to matching vuses.\n");
- def = gimple_vdef (stmt);
- use = gimple_vuse (stmt);
-
- changed |= set_ssa_val_to (def, SSA_VAL (use));
+ changed |= set_ssa_val_to (vdef, SSA_VAL (vuse));
}
return changed;
@@ -3408,18 +3444,20 @@ visit_use (tree use)
}
}
- /* ??? We should handle stores from calls. */
if (!gimple_call_internal_p (stmt)
- && (gimple_call_flags (stmt) & (ECF_PURE | ECF_CONST)
- /* If the call has side effects, subsequent calls won't have
- the same incoming vuse, so it's save to assume
- equality. */
- || gimple_has_side_effects (stmt))
- && ((lhs && TREE_CODE (lhs) == SSA_NAME)
- || (!lhs && gimple_vdef (stmt))))
- {
- changed = visit_reference_op_call (lhs, stmt);
- }
+ && (/* Calls to the same function with the same vuse
+ and the same operands do not necessarily return the same
+ value, unless they're pure or const. */
+ gimple_call_flags (stmt) & (ECF_PURE | ECF_CONST)
+ /* If calls have a vdef, subsequent calls won't have
+ the same incoming vuse. So, if 2 calls with vdef have the
+ same vuse, we know they're not subsequent.
+ We can value number 2 calls to the same function with the
+ same vuse and the same operands which are not subsequent
+ the same, because there is no code in the program that can
+ compare the 2 values. */
+ || gimple_vdef (stmt)))
+ changed = visit_reference_op_call (lhs, stmt);
else
changed = defs_to_varying (stmt);
}
@@ -3634,6 +3672,8 @@ extract_and_process_scc_for_name (tree name)
fprintf (dump_file, "WARNING: Giving up with SCCVN due to "
"SCC size %u exceeding %u\n", VEC_length (tree, scc),
(unsigned)PARAM_VALUE (PARAM_SCCVN_MAX_SCC_SIZE));
+
+ VEC_free (tree, heap, scc);
return false;
}
@@ -3715,7 +3755,7 @@ start_over:
/* Restore the last use walker and continue walking there. */
use = name;
name = VEC_pop (tree, namevec);
- memcpy (&iter, VEC_last (ssa_op_iter, itervec),
+ memcpy (&iter, &VEC_last (ssa_op_iter, itervec),
sizeof (ssa_op_iter));
VEC_pop (ssa_op_iter, itervec);
goto continue_walking;
@@ -3804,13 +3844,14 @@ init_scc_vn (void)
vn_ssa_aux_table = VEC_alloc (vn_ssa_aux_t, heap, num_ssa_names + 1);
/* VEC_alloc doesn't actually grow it to the right size, it just
preallocates the space to do so. */
- VEC_safe_grow_cleared (vn_ssa_aux_t, heap, vn_ssa_aux_table, num_ssa_names + 1);
+ VEC_safe_grow_cleared (vn_ssa_aux_t, heap, vn_ssa_aux_table,
+ num_ssa_names + 1);
gcc_obstack_init (&vn_ssa_aux_obstack);
shared_lookup_phiargs = NULL;
shared_lookup_references = NULL;
- rpo_numbers = XCNEWVEC (int, last_basic_block + NUM_FIXED_BLOCKS);
- rpo_numbers_temp = XCNEWVEC (int, last_basic_block + NUM_FIXED_BLOCKS);
+ rpo_numbers = XNEWVEC (int, last_basic_block);
+ rpo_numbers_temp = XNEWVEC (int, n_basic_blocks - NUM_FIXED_BLOCKS);
pre_and_rev_post_order_compute (NULL, rpo_numbers_temp, false);
/* RPO numbers is an array of rpo ordering, rpo[i] = bb means that
@@ -3933,11 +3974,9 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
param;
param = DECL_CHAIN (param))
{
- if (gimple_default_def (cfun, param) != NULL)
- {
- tree def = gimple_default_def (cfun, param);
- VN_INFO (def)->valnum = def;
- }
+ tree def = ssa_default_def (cfun, param);
+ if (def)
+ VN_INFO (def)->valnum = def;
}
for (i = 1; i < num_ssa_names; ++i)
diff --git a/gcc/tree-ssa-sccvn.h b/gcc/tree-ssa-sccvn.h
index a4f294f0788..6109463ffa9 100644
--- a/gcc/tree-ssa-sccvn.h
+++ b/gcc/tree-ssa-sccvn.h
@@ -200,7 +200,7 @@ tree vn_reference_lookup_pieces (tree, alias_set_type, tree,
VEC (vn_reference_op_s, heap) *,
vn_reference_t *, vn_lookup_kind);
tree vn_reference_lookup (tree, tree, vn_lookup_kind, vn_reference_t *);
-vn_reference_t vn_reference_insert (tree, tree, tree);
+vn_reference_t vn_reference_insert (tree, tree, tree, tree);
vn_reference_t vn_reference_insert_pieces (tree, alias_set_type, tree,
VEC (vn_reference_op_s, heap) *,
tree, unsigned int);
diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c
index 951e427f0b1..2d2c370201f 100644
--- a/gcc/tree-ssa-sink.c
+++ b/gcc/tree-ssa-sink.c
@@ -29,16 +29,12 @@ along with GCC; see the file COPYING3. If not see
#include "tree-inline.h"
#include "tree-flow.h"
#include "gimple.h"
-#include "tree-dump.h"
-#include "timevar.h"
-#include "fibheap.h"
#include "hashtab.h"
#include "tree-iterator.h"
#include "alloc-pool.h"
#include "tree-pass.h"
#include "flags.h"
#include "bitmap.h"
-#include "langhooks.h"
#include "cfgloop.h"
#include "params.h"
@@ -216,7 +212,7 @@ select_best_block (basic_block early_bb,
{
/* If we've moved into a lower loop nest, then that becomes
our best block. */
- if (temp_bb->loop_depth < best_bb->loop_depth)
+ if (bb_loop_depth (temp_bb) < bb_loop_depth (best_bb))
best_bb = temp_bb;
/* Walk up the dominator tree, hopefully we'll find a shallower
@@ -227,7 +223,7 @@ select_best_block (basic_block early_bb,
/* If we found a shallower loop nest, then we always consider that
a win. This will always give us the most control dependent block
within that loop nest. */
- if (best_bb->loop_depth < early_bb->loop_depth)
+ if (bb_loop_depth (best_bb) < bb_loop_depth (early_bb))
return best_bb;
/* Get the sinking threshold. If the statement to be moved has memory
@@ -243,7 +239,7 @@ select_best_block (basic_block early_bb,
/* If BEST_BB is at the same nesting level, then require it to have
significantly lower execution frequency to avoid gratutious movement. */
- if (best_bb->loop_depth == early_bb->loop_depth
+ if (bb_loop_depth (best_bb) == bb_loop_depth (early_bb)
&& best_bb->frequency < (early_bb->frequency * threshold / 100.0))
return best_bb;
diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
index 05fd10d6d53..d2b6e25f138 100644
--- a/gcc/tree-ssa-strlen.c
+++ b/gcc/tree-ssa-strlen.c
@@ -393,7 +393,7 @@ get_string_length (strinfo si)
if (si->stmt)
{
gimple stmt = si->stmt, lenstmt;
- tree callee, lhs, lhs_var, fn, tem;
+ tree callee, lhs, fn, tem;
location_t loc;
gimple_stmt_iterator gsi;
@@ -415,17 +415,12 @@ get_string_length (strinfo si)
gsi = gsi_for_stmt (stmt);
fn = builtin_decl_implicit (BUILT_IN_STRLEN);
gcc_assert (lhs == NULL_TREE);
- lhs_var = create_tmp_var (TREE_TYPE (TREE_TYPE (fn)), NULL);
- add_referenced_var (lhs_var);
tem = unshare_expr (gimple_call_arg (stmt, 0));
lenstmt = gimple_build_call (fn, 1, tem);
- lhs = make_ssa_name (lhs_var, lenstmt);
+ lhs = make_ssa_name (TREE_TYPE (TREE_TYPE (fn)), lenstmt);
gimple_call_set_lhs (lenstmt, lhs);
gimple_set_vuse (lenstmt, gimple_vuse (stmt));
gsi_insert_before (&gsi, lenstmt, GSI_SAME_STMT);
- lhs_var = create_tmp_var (TREE_TYPE (gimple_call_arg (stmt, 0)),
- NULL);
- add_referenced_var (lhs_var);
tem = gimple_call_arg (stmt, 0);
if (!ptrofftype_p (TREE_TYPE (lhs)))
{
@@ -434,9 +429,10 @@ get_string_length (strinfo si)
true, GSI_SAME_STMT);
}
lenstmt
- = gimple_build_assign_with_ops (POINTER_PLUS_EXPR,
- make_ssa_name (lhs_var, NULL),
- tem, lhs);
+ = gimple_build_assign_with_ops
+ (POINTER_PLUS_EXPR,
+ make_ssa_name (TREE_TYPE (gimple_call_arg (stmt, 0)), NULL),
+ tem, lhs);
gsi_insert_before (&gsi, lenstmt, GSI_SAME_STMT);
gimple_call_set_arg (stmt, 0, gimple_assign_lhs (lenstmt));
lhs = NULL_TREE;
@@ -454,9 +450,7 @@ get_string_length (strinfo si)
print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
}
gimple_call_set_fndecl (stmt, fn);
- lhs_var = create_tmp_var (TREE_TYPE (TREE_TYPE (fn)), NULL);
- add_referenced_var (lhs_var);
- lhs = make_ssa_name (lhs_var, stmt);
+ lhs = make_ssa_name (TREE_TYPE (TREE_TYPE (fn)), stmt);
gimple_call_set_lhs (stmt, lhs);
update_stmt (stmt);
if (dump_file && (dump_flags & TDF_DETAILS) != 0)
@@ -1896,7 +1890,7 @@ strlen_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ if (virtual_operand_p (gimple_phi_result (phi)))
{
bitmap visited = BITMAP_ALLOC (NULL);
int count_vdef = 100;
@@ -1914,7 +1908,7 @@ strlen_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
{
gimple phi = gsi_stmt (gsi);
tree result = gimple_phi_result (phi);
- if (is_gimple_reg (result) && POINTER_TYPE_P (TREE_TYPE (result)))
+ if (!virtual_operand_p (result) && POINTER_TYPE_P (TREE_TYPE (result)))
{
int idx = get_stridx (gimple_phi_arg_def (phi, 0));
if (idx != 0)
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index cb3e54b1110..609ee2c56b3 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -37,7 +37,6 @@
#include "function.h"
#include "cgraph.h"
#include "tree-pass.h"
-#include "timevar.h"
#include "alloc-pool.h"
#include "splay-tree.h"
#include "params.h"
@@ -2660,37 +2659,48 @@ lookup_vi_for_tree (tree t)
static const char *
alias_get_name (tree decl)
{
- const char *res;
+ const char *res = NULL;
char *temp;
int num_printed = 0;
- if (DECL_ASSEMBLER_NAME_SET_P (decl))
- res = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
- else
- res= get_name (decl);
- if (res != NULL)
- return res;
-
- res = "NULL";
if (!dump_file)
- return res;
+ return "NULL";
if (TREE_CODE (decl) == SSA_NAME)
{
- num_printed = asprintf (&temp, "%s_%u",
- alias_get_name (SSA_NAME_VAR (decl)),
- SSA_NAME_VERSION (decl));
+ res = get_name (decl);
+ if (res)
+ num_printed = asprintf (&temp, "%s_%u", res, SSA_NAME_VERSION (decl));
+ else
+ num_printed = asprintf (&temp, "_%u", SSA_NAME_VERSION (decl));
+ if (num_printed > 0)
+ {
+ res = ggc_strdup (temp);
+ free (temp);
+ }
}
else if (DECL_P (decl))
{
- num_printed = asprintf (&temp, "D.%u", DECL_UID (decl));
- }
- if (num_printed > 0)
- {
- res = ggc_strdup (temp);
- free (temp);
+ if (DECL_ASSEMBLER_NAME_SET_P (decl))
+ res = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
+ else
+ {
+ res = get_name (decl);
+ if (!res)
+ {
+ num_printed = asprintf (&temp, "D.%u", DECL_UID (decl));
+ if (num_printed > 0)
+ {
+ res = ggc_strdup (temp);
+ free (temp);
+ }
+ }
+ }
}
- return res;
+ if (res != NULL)
+ return res;
+
+ return "NULL";
}
/* Find the variable id for tree T in the map.
@@ -2737,14 +2747,14 @@ get_constraint_for_ssa_var (tree t, VEC(ce_s, heap) **results, bool address_p)
varinfo_t vi;
/* We allow FUNCTION_DECLs here even though it doesn't make much sense. */
- gcc_assert (SSA_VAR_P (t) || DECL_P (t));
+ gcc_assert (TREE_CODE (t) == SSA_NAME || DECL_P (t));
/* For parameters, get at the points-to set for the actual parm
decl. */
if (TREE_CODE (t) == SSA_NAME
+ && SSA_NAME_IS_DEFAULT_DEF (t)
&& (TREE_CODE (SSA_NAME_VAR (t)) == PARM_DECL
- || TREE_CODE (SSA_NAME_VAR (t)) == RESULT_DECL)
- && SSA_NAME_IS_DEFAULT_DEF (t))
+ || TREE_CODE (SSA_NAME_VAR (t)) == RESULT_DECL))
{
get_constraint_for_ssa_var (SSA_NAME_VAR (t), results, address_p);
return;
@@ -2917,7 +2927,7 @@ get_constraint_for_ptr_offset (tree ptr, tree offset,
for (j = 0; j < n; j++)
{
varinfo_t curr;
- c = *VEC_index (ce_s, *results, j);
+ c = VEC_index (ce_s, *results, j);
curr = get_varinfo (c.var);
if (c.type == ADDRESSOF
@@ -2979,7 +2989,7 @@ get_constraint_for_ptr_offset (tree ptr, tree offset,
else
c.offset = rhsoffset;
- VEC_replace (ce_s, *results, j, &c);
+ VEC_replace (ce_s, *results, j, c);
}
}
@@ -3048,7 +3058,7 @@ get_constraint_for_component_ref (tree t, VEC(ce_s, heap) **results,
adding the required subset of sub-fields below. */
get_constraint_for_1 (t, results, true, lhs_p);
gcc_assert (VEC_length (ce_s, *results) == 1);
- result = VEC_last (ce_s, *results);
+ result = &VEC_last (ce_s, *results);
if (result->type == SCALAR
&& get_varinfo (result->var)->is_full_var)
@@ -3274,13 +3284,13 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **results, bool address_p,
if (address_p)
return;
- cs = *VEC_last (ce_s, *results);
+ cs = VEC_last (ce_s, *results);
if (cs.type == DEREF
&& type_can_have_subvars (TREE_TYPE (t)))
{
/* For dereferences this means we have to defer it
to solving time. */
- VEC_last (ce_s, *results)->offset = UNKNOWN_OFFSET;
+ VEC_last (ce_s, *results).offset = UNKNOWN_OFFSET;
return;
}
if (cs.type != SCALAR)
@@ -3441,8 +3451,8 @@ do_structure_copy (tree lhsop, tree rhsop)
get_constraint_for (lhsop, &lhsc);
get_constraint_for_rhs (rhsop, &rhsc);
- lhsp = VEC_index (ce_s, lhsc, 0);
- rhsp = VEC_index (ce_s, rhsc, 0);
+ lhsp = &VEC_index (ce_s, lhsc, 0);
+ rhsp = &VEC_index (ce_s, rhsc, 0);
if (lhsp->type == DEREF
|| (lhsp->type == ADDRESSOF && lhsp->var == anything_id)
|| rhsp->type == DEREF)
@@ -3471,7 +3481,7 @@ do_structure_copy (tree lhsop, tree rhsop)
for (j = 0; VEC_iterate (ce_s, lhsc, j, lhsp);)
{
varinfo_t lhsv, rhsv;
- rhsp = VEC_index (ce_s, rhsc, k);
+ rhsp = &VEC_index (ce_s, rhsc, k);
lhsv = get_varinfo (lhsp->var);
rhsv = get_varinfo (rhsp->var);
if (lhsv->may_have_pointers
@@ -3858,9 +3868,11 @@ handle_lhs_call (gimple stmt, tree lhs, int flags, VEC(ce_s, heap) *rhsc,
tmpc.offset = 0;
tmpc.type = ADDRESSOF;
VEC_safe_push (ce_s, heap, rhsc, &tmpc);
+ process_all_all_constraints (lhsc, rhsc);
+ VEC_free (ce_s, heap, rhsc);
}
-
- process_all_all_constraints (lhsc, rhsc);
+ else
+ process_all_all_constraints (lhsc, rhsc);
VEC_free (ce_s, heap, lhsc);
}
@@ -3977,9 +3989,9 @@ get_fi_for_callee (gimple call)
if (!fn || TREE_CODE (fn) != SSA_NAME)
return get_varinfo (anything_id);
- if ((TREE_CODE (SSA_NAME_VAR (fn)) == PARM_DECL
- || TREE_CODE (SSA_NAME_VAR (fn)) == RESULT_DECL)
- && SSA_NAME_IS_DEFAULT_DEF (fn))
+ if (SSA_NAME_IS_DEFAULT_DEF (fn)
+ && (TREE_CODE (SSA_NAME_VAR (fn)) == PARM_DECL
+ || TREE_CODE (SSA_NAME_VAR (fn)) == RESULT_DECL))
fn = SSA_NAME_VAR (fn);
return get_vi_for_tree (fn);
@@ -4367,7 +4379,7 @@ find_func_aliases_for_call (gimple t)
lhs = get_function_part_constraint (fi, fi_parm_base + j);
while (VEC_length (ce_s, rhsc) != 0)
{
- rhsp = VEC_last (ce_s, rhsc);
+ rhsp = &VEC_last (ce_s, rhsc);
process_constraint (new_constraint (lhs, *rhsp));
VEC_pop (ce_s, rhsc);
}
@@ -4389,7 +4401,7 @@ find_func_aliases_for_call (gimple t)
VEC(ce_s, heap) *tem = NULL;
VEC_safe_push (ce_s, heap, tem, &rhs);
do_deref (&tem);
- rhs = *VEC_index (ce_s, tem, 0);
+ rhs = VEC_index (ce_s, tem, 0);
VEC_free(ce_s, heap, tem);
}
FOR_EACH_VEC_ELT (ce_s, lhsc, j, lhsp)
@@ -4461,7 +4473,7 @@ find_func_aliases (gimple origt)
struct constraint_expr *c2;
while (VEC_length (ce_s, rhsc) > 0)
{
- c2 = VEC_last (ce_s, rhsc);
+ c2 = &VEC_last (ce_s, rhsc);
process_constraint (new_constraint (*c, *c2));
VEC_pop (ce_s, rhsc);
}
@@ -5148,7 +5160,7 @@ push_fields_onto_fieldstack (tree type, VEC(fieldoff_s,heap) **fieldstack,
bool must_have_pointers_p;
if (!VEC_empty (fieldoff_s, *fieldstack))
- pair = VEC_last (fieldoff_s, *fieldstack);
+ pair = &VEC_last (fieldoff_s, *fieldstack);
/* If there isn't anything at offset zero, create sth. */
if (!pair
@@ -5916,9 +5928,9 @@ find_what_p_points_to (tree p)
/* For parameters, get at the points-to set for the actual parm
decl. */
if (TREE_CODE (p) == SSA_NAME
+ && SSA_NAME_IS_DEFAULT_DEF (p)
&& (TREE_CODE (SSA_NAME_VAR (p)) == PARM_DECL
- || TREE_CODE (SSA_NAME_VAR (p)) == RESULT_DECL)
- && SSA_NAME_IS_DEFAULT_DEF (p))
+ || TREE_CODE (SSA_NAME_VAR (p)) == RESULT_DECL))
lookup_p = SSA_NAME_VAR (p);
vi = lookup_vi_for_tree (lookup_p);
@@ -6579,7 +6591,7 @@ compute_points_to_sets (void)
{
gimple phi = gsi_stmt (gsi);
- if (is_gimple_reg (gimple_phi_result (phi)))
+ if (! virtual_operand_p (gimple_phi_result (phi)))
find_func_aliases (phi);
}
@@ -6737,9 +6749,6 @@ compute_may_aliases (void)
/* But still dump what we have remaining it. */
dump_alias_info (dump_file);
-
- if (dump_flags & TDF_DETAILS)
- dump_referenced_vars (dump_file);
}
return 0;
@@ -6752,12 +6761,7 @@ compute_may_aliases (void)
/* Debugging dumps. */
if (dump_file)
- {
- dump_alias_info (dump_file);
-
- if (dump_flags & TDF_DETAILS)
- dump_referenced_vars (dump_file);
- }
+ dump_alias_info (dump_file);
/* Deallocate memory used by aliasing data structures and the internal
points-to solution. */
@@ -6964,7 +6968,7 @@ ipa_pta_execute (void)
{
gimple phi = gsi_stmt (gsi);
- if (is_gimple_reg (gimple_phi_result (phi)))
+ if (! virtual_operand_p (gimple_phi_result (phi)))
find_func_aliases (phi);
}
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c
index da5878ad797..372096c344c 100644
--- a/gcc/tree-ssa-tail-merge.c
+++ b/gcc/tree-ssa-tail-merge.c
@@ -190,16 +190,18 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "function.h"
#include "tree-flow.h"
-#include "timevar.h"
#include "bitmap.h"
#include "tree-ssa-alias.h"
#include "params.h"
-#include "tree-pretty-print.h"
-#include "hashtab.h"
+#include "hash-table.h"
#include "gimple-pretty-print.h"
#include "tree-ssa-sccvn.h"
#include "tree-dump.h"
+/* ??? This currently runs as part of tree-ssa-pre. Why is this not
+ a stand-alone GIMPLE pass? */
+#include "tree-pass.h"
+
/* Describes a group of bbs with the same successors. The successor bbs are
cached in succs, and the successor edge flags are cached in succ_flags.
If a bb has the EDGE_TRUE/VALSE_VALUE flags swapped compared to succ_flags,
@@ -222,10 +224,24 @@ struct same_succ_def
bool in_worklist;
/* The hash value of the struct. */
hashval_t hashval;
+
+ /* hash_table support. */
+ typedef same_succ_def T;
+ static inline hashval_t hash (const same_succ_def *);
+ static int equal (const same_succ_def *, const same_succ_def *);
+ static void remove (same_succ_def *);
};
typedef struct same_succ_def *same_succ;
typedef const struct same_succ_def *const_same_succ;
+/* hash routine for hash_table support, returns hashval of E. */
+
+inline hashval_t
+same_succ_def::hash (const same_succ_def *e)
+{
+ return e->hashval;
+}
+
/* A group of bbs where 1 bb from bbs can replace the other bbs. */
struct bb_cluster_def
@@ -366,11 +382,10 @@ same_succ_print (FILE *file, const same_succ e)
/* Prints same_succ VE to VFILE. */
-static int
-same_succ_print_traverse (void **ve, void *vfile)
+inline int
+ssa_same_succ_print_traverse (same_succ *pe, FILE *file)
{
- const same_succ e = *((const same_succ *)ve);
- FILE *file = ((FILE*)vfile);
+ const same_succ e = *pe;
same_succ_print (file, e);
return 1;
}
@@ -415,9 +430,8 @@ stmt_update_dep_bb (gimple stmt)
/* Calculates hash value for same_succ VE. */
static hashval_t
-same_succ_hash (const void *ve)
+same_succ_hash (const_same_succ e)
{
- const_same_succ e = (const_same_succ)ve;
hashval_t hashval = bitmap_hash (e->succs);
int flags;
unsigned int i;
@@ -478,7 +492,7 @@ same_succ_hash (const void *ve)
tree lhs = gimple_phi_result (phi);
tree val = gimple_phi_arg_def (phi, n);
- if (!is_gimple_reg (lhs))
+ if (virtual_operand_p (lhs))
continue;
update_dep_bb (bb, val);
}
@@ -511,13 +525,11 @@ inverse_flags (const_same_succ e1, const_same_succ e2)
return (f1a & mask) == (f2a & mask) && (f1b & mask) == (f2b & mask);
}
-/* Compares SAME_SUCCs VE1 and VE2. */
+/* Compares SAME_SUCCs E1 and E2. */
-static int
-same_succ_equal (const void *ve1, const void *ve2)
+int
+same_succ_def::equal (const_same_succ e1, const_same_succ e2)
{
- const_same_succ e1 = (const_same_succ)ve1;
- const_same_succ e2 = (const_same_succ)ve2;
unsigned int i, first1, first2;
gimple_stmt_iterator gsi1, gsi2;
gimple s1, s2;
@@ -586,19 +598,17 @@ same_succ_alloc (void)
return same;
}
-/* Delete same_succ VE. */
+/* Delete same_succ E. */
-static void
-same_succ_delete (void *ve)
+void
+same_succ_def::remove (same_succ e)
{
- same_succ e = (same_succ)ve;
-
BITMAP_FREE (e->bbs);
BITMAP_FREE (e->succs);
BITMAP_FREE (e->inverse);
VEC_free (int, heap, e->succ_flags);
- XDELETE (ve);
+ XDELETE (e);
}
/* Reset same_succ SAME. */
@@ -612,9 +622,7 @@ same_succ_reset (same_succ same)
VEC_truncate (int, same->succ_flags, 0);
}
-/* Hash table with all same_succ entries. */
-
-static htab_t same_succ_htab;
+static hash_table <same_succ_def> same_succ_htab;
/* Array that is used to store the edge flags for a successor. */
@@ -635,7 +643,7 @@ extern void debug_same_succ (void);
DEBUG_FUNCTION void
debug_same_succ ( void)
{
- htab_traverse (same_succ_htab, same_succ_print_traverse, stderr);
+ same_succ_htab.traverse <FILE *, ssa_same_succ_print_traverse> (stderr);
}
DEF_VEC_P (same_succ);
@@ -696,8 +704,7 @@ find_same_succ_bb (basic_block bb, same_succ *same_p)
same->hashval = same_succ_hash (same);
- slot = (same_succ *) htab_find_slot_with_hash (same_succ_htab, same,
- same->hashval, INSERT);
+ slot = same_succ_htab.find_slot_with_hash (same, same->hashval, INSERT);
if (*slot == NULL)
{
*slot = same;
@@ -731,7 +738,7 @@ find_same_succ (void)
same = same_succ_alloc ();
}
- same_succ_delete (same);
+ same_succ_def::remove (same);
}
/* Initializes worklist administration. */
@@ -740,9 +747,7 @@ static void
init_worklist (void)
{
alloc_aux_for_blocks (sizeof (struct aux_bb_info));
- same_succ_htab
- = htab_create (n_basic_blocks, same_succ_hash, same_succ_equal,
- same_succ_delete);
+ same_succ_htab.create (n_basic_blocks);
same_succ_edge_flags = XCNEWVEC (int, last_basic_block);
deleted_bbs = BITMAP_ALLOC (NULL);
deleted_bb_preds = BITMAP_ALLOC (NULL);
@@ -762,8 +767,7 @@ static void
delete_worklist (void)
{
free_aux_for_blocks ();
- htab_delete (same_succ_htab);
- same_succ_htab = NULL;
+ same_succ_htab.dispose ();
XDELETEVEC (same_succ_edge_flags);
same_succ_edge_flags = NULL;
BITMAP_FREE (deleted_bbs);
@@ -793,7 +797,7 @@ same_succ_flush_bb (basic_block bb)
same_succ same = BB_SAME_SUCC (bb);
BB_SAME_SUCC (bb) = NULL;
if (bitmap_single_bit_set_p (same->bbs))
- htab_remove_elt_with_hash (same_succ_htab, same, same->hashval);
+ same_succ_htab.remove_elt_with_hash (same, same->hashval);
else
bitmap_clear_bit (same->bbs, bb->index);
}
@@ -832,7 +836,7 @@ release_last_vdef (basic_block bb)
gimple phi = gsi_stmt (i);
tree res = gimple_phi_result (phi);
- if (is_gimple_reg (res))
+ if (!virtual_operand_p (res))
continue;
mark_virtual_phi_result_for_renaming (phi);
@@ -866,7 +870,7 @@ update_worklist (void)
if (same == NULL)
same = same_succ_alloc ();
}
- same_succ_delete (same);
+ same_succ_def::remove (same);
bitmap_clear (deleted_bb_preds);
}
@@ -1119,6 +1123,14 @@ gimple_equal_p (same_succ same_succ, gimple s1, gimple s2)
case GIMPLE_ASSIGN:
lhs1 = gimple_get_lhs (s1);
lhs2 = gimple_get_lhs (s2);
+ if (gimple_vdef (s1))
+ {
+ if (vn_valueize (gimple_vdef (s1)) != vn_valueize (gimple_vdef (s2)))
+ return false;
+ if (TREE_CODE (lhs1) != SSA_NAME
+ && TREE_CODE (lhs2) != SSA_NAME)
+ return true;
+ }
return (TREE_CODE (lhs1) == SSA_NAME
&& TREE_CODE (lhs2) == SSA_NAME
&& vn_valueize (lhs1) == vn_valueize (lhs2));
@@ -1242,7 +1254,7 @@ same_phi_alternatives_1 (basic_block dest, edge e1, edge e2)
tree val1 = gimple_phi_arg_def (phi, n1);
tree val2 = gimple_phi_arg_def (phi, n2);
- if (!is_gimple_reg (lhs))
+ if (virtual_operand_p (lhs))
continue;
if (operand_equal_for_phi_arg_p (val1, val2))
@@ -1300,7 +1312,7 @@ bb_has_non_vop_phi (basic_block bb)
return true;
phi = gimple_seq_first_stmt (phis);
- return is_gimple_reg (gimple_phi_result (phi));
+ return !virtual_operand_p (gimple_phi_result (phi));
}
/* Returns true if redirecting the incoming edges of FROM to TO maintains the
@@ -1422,7 +1434,7 @@ vop_phi (basic_block bb)
for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
stmt = gsi_stmt (gsi);
- if (is_gimple_reg (gimple_phi_result (stmt)))
+ if (! virtual_operand_p (gimple_phi_result (stmt)))
continue;
return stmt;
}
@@ -1627,7 +1639,7 @@ tail_merge_optimize (unsigned int todo)
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "htab collision / search: %f\n",
- htab_collisions (same_succ_htab));
+ same_succ_htab.collisions ());
if (nr_bbs_removed_total > 0)
{
@@ -1644,7 +1656,7 @@ tail_merge_optimize (unsigned int todo)
}
todo |= (TODO_verify_ssa | TODO_verify_stmts | TODO_verify_flow);
- mark_sym_for_renaming (gimple_vop (cfun));
+ mark_virtual_operands_for_renaming (cfun);
}
delete_worklist ();
diff --git a/gcc/tree-ssa-ter.c b/gcc/tree-ssa-ter.c
index c4a50f5d329..3375a2777c9 100644
--- a/gcc/tree-ssa-ter.c
+++ b/gcc/tree-ssa-ter.c
@@ -25,11 +25,10 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "bitmap.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "tree-ssa-live.h"
#include "flags.h"
@@ -173,6 +172,9 @@ typedef struct temp_expr_table_d
/* Used to indicate a dependency on VDEFs. */
#define VIRTUAL_PARTITION(table) (table->virtual_partition)
+/* A place for the many, many bitmaps we create. */
+static bitmap_obstack ter_bitmap_obstack;
+
#ifdef ENABLE_CHECKING
extern void debug_ter (FILE *, temp_expr_table_p);
#endif
@@ -193,10 +195,10 @@ new_temp_expr_table (var_map map)
t->expr_decl_uids = XCNEWVEC (bitmap, num_ssa_names + 1);
t->kill_list = XCNEWVEC (bitmap, num_var_partitions (map) + 1);
- t->partition_in_use = BITMAP_ALLOC (NULL);
+ t->partition_in_use = BITMAP_ALLOC (&ter_bitmap_obstack);
t->virtual_partition = num_var_partitions (map);
- t->new_replaceable_dependencies = BITMAP_ALLOC (NULL);
+ t->new_replaceable_dependencies = BITMAP_ALLOC (&ter_bitmap_obstack);
t->replaceable_expressions = NULL;
t->num_in_part = XCNEWVEC (int, num_var_partitions (map));
@@ -270,7 +272,7 @@ static inline void
make_dependent_on_partition (temp_expr_table_p tab, int version, int p)
{
if (!tab->partition_dependencies[version])
- tab->partition_dependencies[version] = BITMAP_ALLOC (NULL);
+ tab->partition_dependencies[version] = BITMAP_ALLOC (&ter_bitmap_obstack);
bitmap_set_bit (tab->partition_dependencies[version], p);
}
@@ -283,7 +285,7 @@ add_to_partition_kill_list (temp_expr_table_p tab, int p, int ver)
{
if (!tab->kill_list[p])
{
- tab->kill_list[p] = BITMAP_ALLOC (NULL);
+ tab->kill_list[p] = BITMAP_ALLOC (&ter_bitmap_obstack);
bitmap_set_bit (tab->partition_in_use, p);
}
bitmap_set_bit (tab->kill_list[p], ver);
@@ -331,7 +333,8 @@ add_dependence (temp_expr_table_p tab, int version, tree var)
/* Rather than set partition_dependencies and in_use lists bit by
bit, simply OR in the new_replaceable_dependencies bits. */
if (!tab->partition_dependencies[version])
- tab->partition_dependencies[version] = BITMAP_ALLOC (NULL);
+ tab->partition_dependencies[version] =
+ BITMAP_ALLOC (&ter_bitmap_obstack);
bitmap_ior_into (tab->partition_dependencies[version],
tab->new_replaceable_dependencies);
bitmap_ior_into (tab->partition_in_use,
@@ -499,10 +502,11 @@ process_replaceable (temp_expr_table_p tab, gimple stmt, int call_cnt)
def = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_DEF);
version = SSA_NAME_VERSION (def);
- basevar = SSA_NAME_VAR (def);
- def_vars = BITMAP_ALLOC (NULL);
+ def_vars = BITMAP_ALLOC (&ter_bitmap_obstack);
- bitmap_set_bit (def_vars, DECL_UID (basevar));
+ basevar = SSA_NAME_VAR (def);
+ if (basevar)
+ bitmap_set_bit (def_vars, DECL_UID (basevar));
/* Add this expression to the dependency list for each use partition. */
FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_USE)
@@ -516,7 +520,7 @@ process_replaceable (temp_expr_table_p tab, gimple stmt, int call_cnt)
bitmap_ior_into (def_vars, use_vars);
BITMAP_FREE (tab->expr_decl_uids[var_version]);
}
- else
+ else if (SSA_NAME_VAR (var))
bitmap_set_bit (def_vars, DECL_UID (SSA_NAME_VAR (var)));
}
tab->expr_decl_uids[version] = def_vars;
@@ -578,7 +582,9 @@ mark_replaceable (temp_expr_table_p tab, tree var, bool more_replacing)
finished_with_expr (tab, version, !more_replacing);
- /* Set the replaceable expression. */
+ /* Set the replaceable expression.
+ The bitmap for this "escapes" from this file so it's allocated
+ on the default obstack. */
if (!tab->replaceable_expressions)
tab->replaceable_expressions = BITMAP_ALLOC (NULL);
bitmap_set_bit (tab->replaceable_expressions, version);
@@ -627,7 +633,8 @@ find_replaceable_in_bb (temp_expr_table_p tab, basic_block bb)
if (!bitmap_empty_p (vars))
FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter2, SSA_OP_DEF)
{
- if (bitmap_bit_p (vars, DECL_UID (SSA_NAME_VAR (def))))
+ if (SSA_NAME_VAR (def)
+ && bitmap_bit_p (vars, DECL_UID (SSA_NAME_VAR (def))))
{
same_root_var = true;
break;
@@ -705,21 +712,22 @@ find_replaceable_in_bb (temp_expr_table_p tab, basic_block bb)
NULL is returned by the function, otherwise an expression vector indexed
by SSA_NAME version numbers. */
-extern bitmap
+bitmap
find_replaceable_exprs (var_map map)
{
basic_block bb;
temp_expr_table_p table;
bitmap ret;
+ bitmap_obstack_initialize (&ter_bitmap_obstack);
table = new_temp_expr_table (map);
FOR_EACH_BB (bb)
{
find_replaceable_in_bb (table, bb);
gcc_checking_assert (bitmap_empty_p (table->partition_in_use));
}
-
ret = free_temp_expr_table (table);
+ bitmap_obstack_release (&ter_bitmap_obstack);
return ret;
}
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index 514ffd0a1b6..105e3abdec3 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -30,9 +30,8 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "function.h"
#include "timevar.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "tree-flow.h"
-#include "tree-pass.h"
#include "tree-ssa-propagate.h"
#include "langhooks.h"
#include "params.h"
@@ -205,7 +204,7 @@ record_temporary_equivalences_from_phis (edge e, VEC(tree, heap) **stack)
/* We consider any non-virtual PHI as a statement since it
count result in a constant assignment or copy operation. */
- if (is_gimple_reg (dst))
+ if (!virtual_operand_p (dst))
stmt_count++;
record_temporary_equivalence (dst, src, stack);
diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c
index 65be1b926a6..86ad74f1bc8 100644
--- a/gcc/tree-ssa-threadupdate.c
+++ b/gcc/tree-ssa-threadupdate.c
@@ -28,9 +28,9 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "function.h"
#include "tree-flow.h"
-#include "tree-dump.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "cfgloop.h"
+#include "hash-table.h"
/* Given a block B, update the CFG and SSA graph to reflect redirecting
one or more in-edges to B to instead reach the destination of an
@@ -110,7 +110,7 @@ struct el
may have many incoming edges threaded to the same outgoing edge. This
can be naturally implemented with a hash table. */
-struct redirection_data
+struct redirection_data : typed_free_remove<redirection_data>
{
/* A duplicate of B with the trailing control statement removed and which
targets a single successor of B. */
@@ -125,13 +125,32 @@ struct redirection_data
/* A list of incoming edges which we want to thread to
OUTGOING_EDGE->dest. */
struct el *incoming_edges;
+
+ /* hash_table support. */
+ typedef redirection_data T;
+ static inline hashval_t hash (const redirection_data *);
+ static inline int equal (const redirection_data *, const redirection_data *);
};
-/* Main data structure to hold information for duplicates of BB. */
-static htab_t redirection_data;
+inline hashval_t
+redirection_data::hash (const redirection_data *p)
+{
+ edge e = p->outgoing_edge;
+ return e->dest->index;
+}
+
+inline int
+redirection_data::equal (const redirection_data *p1, const redirection_data *p2)
+{
+ edge e1 = p1->outgoing_edge;
+ edge e2 = p2->outgoing_edge;
+ edge e3 = p1->intermediate_edge;
+ edge e4 = p2->intermediate_edge;
+ return e1 == e2 && e3 == e4;
+}
/* Data structure of information to pass to hash table traversal routines. */
-struct local_info
+struct ssa_local_info_t
{
/* The current block we are working on. */
basic_block bb;
@@ -220,24 +239,9 @@ create_block_for_threading (basic_block bb, struct redirection_data *rd)
rd->dup_block->count = 0;
}
-/* Hashing and equality routines for our hash table. */
-static hashval_t
-redirection_data_hash (const void *p)
-{
- edge e = ((const struct redirection_data *)p)->outgoing_edge;
- return e->dest->index;
-}
+/* Main data structure to hold information for duplicates of BB. */
-static int
-redirection_data_eq (const void *p1, const void *p2)
-{
- edge e1 = ((const struct redirection_data *)p1)->outgoing_edge;
- edge e2 = ((const struct redirection_data *)p2)->outgoing_edge;
- edge e3 = ((const struct redirection_data *)p1)->intermediate_edge;
- edge e4 = ((const struct redirection_data *)p2)->intermediate_edge;
-
- return e1 == e2 && e3 == e4;
-}
+static hash_table <redirection_data> redirection_data;
/* Given an outgoing edge E lookup and return its entry in our hash table.
@@ -248,7 +252,7 @@ redirection_data_eq (const void *p1, const void *p2)
static struct redirection_data *
lookup_redirection_data (edge e, enum insert_option insert)
{
- void **slot;
+ struct redirection_data **slot;
struct redirection_data *elt;
/* Build a hash table element so we can see if E is already
@@ -260,7 +264,7 @@ lookup_redirection_data (edge e, enum insert_option insert)
elt->dup_block = NULL;
elt->incoming_edges = NULL;
- slot = htab_find_slot (redirection_data, elt, insert);
+ slot = redirection_data.find_slot (elt, insert);
/* This will only happen if INSERT is false and the entry is not
in the hash table. */
@@ -274,7 +278,7 @@ lookup_redirection_data (edge e, enum insert_option insert)
INSERT is true. */
if (*slot == NULL)
{
- *slot = (void *)elt;
+ *slot = elt;
elt->incoming_edges = XNEW (struct el);
elt->incoming_edges->e = e;
elt->incoming_edges->next = NULL;
@@ -288,7 +292,7 @@ lookup_redirection_data (edge e, enum insert_option insert)
free (elt);
/* Get the entry stored in the hash table. */
- elt = (struct redirection_data *) *slot;
+ elt = *slot;
/* If insertion was requested, then we need to add INCOMING_EDGE
to the list of incoming edges associated with E. */
@@ -376,9 +380,9 @@ create_edge_and_update_destination_phis (struct redirection_data *rd,
/* Wire up the outgoing edges from the duplicate block and
update any PHIs as needed. */
-static void
-fix_duplicate_block_edges (struct redirection_data *rd,
- struct local_info *local_info)
+void
+ssa_fix_duplicate_block_edges (struct redirection_data *rd,
+ ssa_local_info_t *local_info)
{
/* If we were threading through an joiner block, then we want
to keep its control statement and redirect an outgoing edge.
@@ -413,11 +417,11 @@ fix_duplicate_block_edges (struct redirection_data *rd,
}
/* Hash table traversal callback routine to create duplicate blocks. */
-static int
-create_duplicates (void **slot, void *data)
+int
+ssa_create_duplicates (struct redirection_data **slot,
+ ssa_local_info_t *local_info)
{
- struct redirection_data *rd = (struct redirection_data *) *slot;
- struct local_info *local_info = (struct local_info *)data;
+ struct redirection_data *rd = *slot;
/* Create a template block if we have not done so already. Otherwise
use the template to create a new block. */
@@ -436,7 +440,7 @@ create_duplicates (void **slot, void *data)
/* Go ahead and wire up outgoing edges and update PHIs for the duplicate
block. */
- fix_duplicate_block_edges (rd, local_info);
+ ssa_fix_duplicate_block_edges (rd, local_info);
}
/* Keep walking the hash table. */
@@ -447,11 +451,11 @@ create_duplicates (void **slot, void *data)
block creation. This hash table traversal callback creates the
outgoing edge for the template block. */
-static int
-fixup_template_block (void **slot, void *data)
+inline int
+ssa_fixup_template_block (struct redirection_data **slot,
+ ssa_local_info_t *local_info)
{
- struct redirection_data *rd = (struct redirection_data *) *slot;
- struct local_info *local_info = (struct local_info *)data;
+ struct redirection_data *rd = *slot;
/* If this is the template block halt the traversal after updating
it appropriately.
@@ -462,7 +466,7 @@ fixup_template_block (void **slot, void *data)
a new outgoing edge. In both cases we may need to update PHIs. */
if (rd->dup_block && rd->dup_block == local_info->template_block)
{
- fix_duplicate_block_edges (rd, local_info);
+ ssa_fix_duplicate_block_edges (rd, local_info);
return 0;
}
@@ -472,11 +476,11 @@ fixup_template_block (void **slot, void *data)
/* Hash table traversal callback to redirect each incoming edge
associated with this hash table element to its new destination. */
-static int
-redirect_edges (void **slot, void *data)
+int
+ssa_redirect_edges (struct redirection_data **slot,
+ ssa_local_info_t *local_info)
{
- struct redirection_data *rd = (struct redirection_data *) *slot;
- struct local_info *local_info = (struct local_info *)data;
+ struct redirection_data *rd = *slot;
struct el *next, *el;
/* Walk over all the incoming edges associated associated with this
@@ -595,17 +599,14 @@ thread_block (basic_block bb, bool noloop_only)
redirect to a duplicate of BB. */
edge e, e2;
edge_iterator ei;
- struct local_info local_info;
+ ssa_local_info_t local_info;
struct loop *loop = bb->loop_father;
/* To avoid scanning a linear array for the element we need we instead
use a hash table. For normal code there should be no noticeable
difference. However, if we have a block with a large number of
incoming and outgoing edges such linear searches can get expensive. */
- redirection_data = htab_create (EDGE_COUNT (bb->succs),
- redirection_data_hash,
- redirection_data_eq,
- free);
+ redirection_data.create (EDGE_COUNT (bb->succs));
/* If we thread the latch of the loop to its exit, the loop ceases to
exist. Make sure we do not restrict ourselves in order to preserve
@@ -679,24 +680,26 @@ thread_block (basic_block bb, bool noloop_only)
local_info.template_block = NULL;
local_info.bb = bb;
local_info.jumps_threaded = false;
- htab_traverse (redirection_data, create_duplicates, &local_info);
+ redirection_data.traverse <ssa_local_info_t *, ssa_create_duplicates>
+ (&local_info);
/* The template does not have an outgoing edge. Create that outgoing
edge and update PHI nodes as the edge's target as necessary.
We do this after creating all the duplicates to avoid creating
unnecessary edges. */
- htab_traverse (redirection_data, fixup_template_block, &local_info);
+ redirection_data.traverse <ssa_local_info_t *, ssa_fixup_template_block>
+ (&local_info);
/* The hash table traversals above created the duplicate blocks (and the
statements within the duplicate blocks). This loop creates PHI nodes for
the duplicated blocks and redirects the incoming edges into BB to reach
the duplicates of BB. */
- htab_traverse (redirection_data, redirect_edges, &local_info);
+ redirection_data.traverse <ssa_local_info_t *, ssa_redirect_edges>
+ (&local_info);
/* Done with this block. Clear REDIRECTION_DATA. */
- htab_delete (redirection_data);
- redirection_data = NULL;
+ redirection_data.dispose ();
if (noloop_only
&& bb == bb->loop_father->header)
diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c
index f74bad6b8e6..b5e1edffeb4 100644
--- a/gcc/tree-ssa-uncprop.c
+++ b/gcc/tree-ssa-uncprop.c
@@ -27,13 +27,10 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "function.h"
-#include "timevar.h"
-#include "tree-dump.h"
#include "tree-flow.h"
#include "domwalk.h"
#include "tree-pass.h"
#include "tree-ssa-propagate.h"
-#include "langhooks.h"
/* The basic structure describing an equivalency created by traversing
an edge. Traversing the edge effectively means that we can assume
@@ -466,14 +463,16 @@ uncprop_into_successor_phis (basic_block bb)
{
gimple phi = gsi_stmt (gsi);
tree arg = PHI_ARG_DEF (phi, e->dest_idx);
+ tree res = PHI_RESULT (phi);
struct equiv_hash_elt equiv_hash_elt;
void **slot;
- /* If the argument is not an invariant, or refers to the same
+ /* If the argument is not an invariant, and refers to the same
underlying variable as the PHI result, then there's no
point in un-propagating the argument. */
if (!is_gimple_min_invariant (arg)
- && SSA_NAME_VAR (arg) != SSA_NAME_VAR (PHI_RESULT (phi)))
+ && (SSA_NAME_VAR (arg) == SSA_NAME_VAR (res)
+ && TREE_TYPE (arg) == TREE_TYPE (res)))
continue;
/* Lookup this argument's value in the hash table. */
@@ -495,7 +494,8 @@ uncprop_into_successor_phis (basic_block bb)
{
tree equiv = VEC_index (tree, elt->equivalences, j);
- if (SSA_NAME_VAR (equiv) == SSA_NAME_VAR (PHI_RESULT (phi)))
+ if (SSA_NAME_VAR (equiv) == SSA_NAME_VAR (res)
+ && TREE_TYPE (equiv) == TREE_TYPE (res))
{
SET_PHI_ARG_DEF (phi, e->dest_idx, equiv);
break;
diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index 109578fa555..cc58870c7d8 100644
--- a/gcc/tree-ssa-uninit.c
+++ b/gcc/tree-ssa-uninit.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "flags.h"
#include "tm_p.h"
-#include "langhooks.h"
#include "basic-block.h"
#include "function.h"
#include "gimple-pretty-print.h"
@@ -35,12 +34,9 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "gimple.h"
#include "tree-inline.h"
-#include "timevar.h"
#include "hashtab.h"
-#include "tree-dump.h"
#include "tree-pass.h"
#include "diagnostic-core.h"
-#include "timevar.h"
/* This implements the pass that does predicate aware warning on uses of
possibly uninitialized variables. The pass first collects the set of
@@ -87,18 +83,17 @@ ssa_undefined_value_p (tree t)
{
tree var = SSA_NAME_VAR (t);
+ if (!var)
+ ;
/* Parameters get their initial value from the function entry. */
- if (TREE_CODE (var) == PARM_DECL)
+ else if (TREE_CODE (var) == PARM_DECL)
return false;
-
/* When returning by reference the return address is actually a hidden
parameter. */
- if (TREE_CODE (SSA_NAME_VAR (t)) == RESULT_DECL
- && DECL_BY_REFERENCE (SSA_NAME_VAR (t)))
+ else if (TREE_CODE (var) == RESULT_DECL && DECL_BY_REFERENCE (var))
return false;
-
/* Hard register variables get their initial value from the ether. */
- if (TREE_CODE (var) == VAR_DECL && DECL_HARD_REGISTER (var))
+ else if (TREE_CODE (var) == VAR_DECL && DECL_HARD_REGISTER (var))
return false;
/* The value is undefined iff its definition statement is empty. */
@@ -1928,8 +1923,8 @@ warn_uninitialized_phi (gimple phi, VEC(gimple, heap) **worklist,
gimple uninit_use_stmt = 0;
tree uninit_op;
- /* Don't look at memory tags. */
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ /* Don't look at virtual operands. */
+ if (virtual_operand_p (gimple_phi_result (phi)))
return;
uninit_opnds = compute_uninit_opnds_pos (phi);
@@ -1952,6 +1947,8 @@ warn_uninitialized_phi (gimple phi, VEC(gimple, heap) **worklist,
return;
uninit_op = gimple_phi_arg_def (phi, MASK_FIRST_SET_BIT (uninit_opnds));
+ if (SSA_NAME_VAR (uninit_op) == NULL_TREE)
+ return;
warn_uninit (OPT_Wmaybe_uninitialized, uninit_op, SSA_NAME_VAR (uninit_op),
SSA_NAME_VAR (uninit_op),
"%qD may be used uninitialized in this function",
@@ -1991,8 +1988,8 @@ execute_late_warn_uninitialized (void)
n = gimple_phi_num_args (phi);
- /* Don't look at memory tags. */
- if (!is_gimple_reg (gimple_phi_result (phi)))
+ /* Don't look at virtual operands. */
+ if (virtual_operand_p (gimple_phi_result (phi)))
continue;
for (i = 0; i < n; ++i)
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index d545ffd21d2..1746c8f7c91 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -30,16 +30,13 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "basic-block.h"
#include "function.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "bitmap.h"
#include "pointer-set.h"
#include "tree-flow.h"
#include "gimple.h"
#include "tree-inline.h"
-#include "timevar.h"
#include "hashtab.h"
-#include "tree-dump.h"
#include "tree-pass.h"
#include "diagnostic-core.h"
#include "cfgloop.h"
@@ -252,7 +249,15 @@ target_for_debug_bind (tree var)
if (!MAY_HAVE_DEBUG_STMTS)
return NULL_TREE;
- if (TREE_CODE (var) != VAR_DECL
+ if (TREE_CODE (var) == SSA_NAME)
+ {
+ var = SSA_NAME_VAR (var);
+ if (var == NULL_TREE)
+ return NULL_TREE;
+ }
+
+ if ((TREE_CODE (var) != VAR_DECL
+ || VAR_DECL_IS_VIRTUAL_OPERAND (var))
&& TREE_CODE (var) != PARM_DECL)
return NULL_TREE;
@@ -262,13 +267,9 @@ target_for_debug_bind (tree var)
if (DECL_IGNORED_P (var))
return NULL_TREE;
- if (!is_gimple_reg (var))
- {
- if (is_gimple_reg_type (TREE_TYPE (var))
- && referenced_var_lookup (cfun, DECL_UID (var)) == NULL_TREE)
- return var;
- return NULL_TREE;
- }
+ /* var-tracking only tracks registers. */
+ if (!is_gimple_reg_type (TREE_TYPE (var)))
+ return NULL_TREE;
return var;
}
@@ -628,7 +629,8 @@ verify_ssa_name (tree ssa_name, bool is_virtual)
return true;
}
- if (TREE_TYPE (ssa_name) != TREE_TYPE (SSA_NAME_VAR (ssa_name)))
+ if (SSA_NAME_VAR (ssa_name) != NULL_TREE
+ && TREE_TYPE (ssa_name) != TREE_TYPE (ssa_name))
{
error ("type mismatch between an SSA_NAME and its symbol");
return true;
@@ -640,7 +642,7 @@ verify_ssa_name (tree ssa_name, bool is_virtual)
return true;
}
- if (is_virtual && is_gimple_reg (ssa_name))
+ if (is_virtual && !virtual_operand_p (ssa_name))
{
error ("found a virtual definition for a GIMPLE register");
return true;
@@ -652,7 +654,7 @@ verify_ssa_name (tree ssa_name, bool is_virtual)
return true;
}
- if (!is_virtual && !is_gimple_reg (ssa_name))
+ if (!is_virtual && virtual_operand_p (ssa_name))
{
error ("found a real definition for a non-register");
return true;
@@ -687,7 +689,8 @@ verify_def (basic_block bb, basic_block *definition_block, tree ssa_name,
if (verify_ssa_name (ssa_name, is_virtual))
goto err;
- if (TREE_CODE (SSA_NAME_VAR (ssa_name)) == RESULT_DECL
+ if (SSA_NAME_VAR (ssa_name)
+ && TREE_CODE (SSA_NAME_VAR (ssa_name)) == RESULT_DECL
&& DECL_BY_REFERENCE (SSA_NAME_VAR (ssa_name)))
{
error ("RESULT_DECL should be read only when DECL_BY_REFERENCE is set");
@@ -861,7 +864,7 @@ verify_phi_args (gimple phi, basic_block bb, basic_block *definition_block)
if (TREE_CODE (op) == SSA_NAME)
{
- err = verify_ssa_name (op, !is_gimple_reg (gimple_phi_result (phi)));
+ err = verify_ssa_name (op, virtual_operand_p (gimple_phi_result (phi)));
err |= verify_use (e->src, definition_block[SSA_NAME_VERSION (op)],
op_p, phi, e->flags & EDGE_ABNORMAL, NULL);
}
@@ -935,14 +938,14 @@ verify_ssa (bool check_modified_stmt)
gimple stmt;
TREE_VISITED (name) = 0;
- verify_ssa_name (name, !is_gimple_reg (name));
+ verify_ssa_name (name, virtual_operand_p (name));
stmt = SSA_NAME_DEF_STMT (name);
if (!gimple_nop_p (stmt))
{
basic_block bb = gimple_bb (stmt);
verify_def (bb, definition_block,
- name, stmt, !is_gimple_reg (name));
+ name, stmt, virtual_operand_p (name));
}
}
@@ -1110,8 +1113,6 @@ void
init_tree_ssa (struct function *fn)
{
fn->gimple_df = ggc_alloc_cleared_gimple_df ();
- fn->gimple_df->referenced_vars = htab_create_ggc (20, uid_decl_map_hash,
- uid_decl_map_eq, NULL);
fn->gimple_df->default_defs = htab_create_ggc (20, uid_ssaname_map_hash,
uid_ssaname_map_eq, NULL);
pt_solution_reset (&fn->gimple_df->escaped);
@@ -1153,27 +1154,10 @@ struct gimple_opt_pass pass_init_datastructures =
void
delete_tree_ssa (void)
{
- referenced_var_iterator rvi;
- tree var;
-
- /* Remove annotations from every referenced local variable. */
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
- {
- if (is_global_var (var))
- continue;
- if (var_ann (var))
- {
- ggc_free (var_ann (var));
- *DECL_VAR_ANN_PTR (var) = NULL;
- }
- }
- htab_delete (gimple_referenced_vars (cfun));
- cfun->gimple_df->referenced_vars = NULL;
-
fini_ssanames ();
/* We no longer maintain the SSA operand cache at this point. */
- if (ssa_operands_active ())
+ if (ssa_operands_active (cfun))
fini_ssa_operands ();
htab_delete (cfun->gimple_df->default_defs);
@@ -1779,7 +1763,7 @@ struct gimple_opt_pass pass_early_warn_uninitialized =
a MEM_REF to a plain or converted symbol. */
static void
-maybe_rewrite_mem_ref_base (tree *tp)
+maybe_rewrite_mem_ref_base (tree *tp, bitmap suitable_for_renaming)
{
tree sym;
@@ -1790,7 +1774,7 @@ maybe_rewrite_mem_ref_base (tree *tp)
&& (sym = TREE_OPERAND (TREE_OPERAND (*tp, 0), 0))
&& DECL_P (sym)
&& !TREE_ADDRESSABLE (sym)
- && symbol_marked_for_renaming (sym))
+ && bitmap_bit_p (suitable_for_renaming, DECL_UID (sym)))
{
if (TREE_CODE (TREE_TYPE (sym)) == VECTOR_TYPE
&& useless_type_conversion_p (TREE_TYPE (*tp),
@@ -1899,21 +1883,15 @@ non_rewritable_lvalue_p (tree lhs)
mark the variable VAR for conversion into SSA. Return true when updating
stmts is required. */
-static bool
-maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs)
+static void
+maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs,
+ bitmap suitable_for_renaming)
{
- bool update_vops = false;
-
/* Global Variables, result decls cannot be changed. */
if (is_global_var (var)
|| TREE_CODE (var) == RESULT_DECL
|| bitmap_bit_p (addresses_taken, DECL_UID (var)))
- return false;
-
- /* If the variable is not in the list of referenced vars then we
- do not need to touch it nor can we rename it. */
- if (!referenced_var_lookup (cfun, DECL_UID (var)))
- return false;
+ return;
if (TREE_ADDRESSABLE (var)
/* Do not change TREE_ADDRESSABLE if we need to preserve var as
@@ -1926,8 +1904,7 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs)
{
TREE_ADDRESSABLE (var) = 0;
if (is_gimple_reg (var))
- mark_sym_for_renaming (var);
- update_vops = true;
+ bitmap_set_bit (suitable_for_renaming, DECL_UID (var));
if (dump_file)
{
fprintf (dump_file, "No longer having address taken: ");
@@ -1944,8 +1921,7 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs)
&& (TREE_CODE (var) != VAR_DECL || !DECL_HARD_REGISTER (var)))
{
DECL_GIMPLE_REG_P (var) = 1;
- mark_sym_for_renaming (var);
- update_vops = true;
+ bitmap_set_bit (suitable_for_renaming, DECL_UID (var));
if (dump_file)
{
fprintf (dump_file, "Now a gimple register: ");
@@ -1953,8 +1929,6 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs)
fprintf (dump_file, "\n");
}
}
-
- return update_vops;
}
/* Compute TREE_ADDRESSABLE and DECL_GIMPLE_REG_P for local variables. */
@@ -1966,7 +1940,7 @@ execute_update_addresses_taken (void)
basic_block bb;
bitmap addresses_taken = BITMAP_ALLOC (NULL);
bitmap not_reg_needs = BITMAP_ALLOC (NULL);
- bool update_vops = false;
+ bitmap suitable_for_renaming = BITMAP_ALLOC (NULL);
tree var;
unsigned i;
@@ -2065,14 +2039,16 @@ execute_update_addresses_taken (void)
unused vars from BLOCK trees, which causes code generation differences
for -g vs. -g0. */
for (var = DECL_ARGUMENTS (cfun->decl); var; var = DECL_CHAIN (var))
- update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
+ maybe_optimize_var (var, addresses_taken, not_reg_needs,
+ suitable_for_renaming);
FOR_EACH_VEC_ELT (tree, cfun->local_decls, i, var)
- update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
+ maybe_optimize_var (var, addresses_taken, not_reg_needs,
+ suitable_for_renaming);
/* Operand caches need to be recomputed for operands referencing the updated
- variables. */
- if (update_vops)
+ variables and operands need to be rewritten to expose bare symbols. */
+ if (!bitmap_empty_p (suitable_for_renaming))
{
FOR_EACH_BB (bb)
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);)
@@ -2098,14 +2074,14 @@ execute_update_addresses_taken (void)
&& (sym = TREE_OPERAND (TREE_OPERAND (lhs, 0), 0))
&& DECL_P (sym)
&& !TREE_ADDRESSABLE (sym)
- && symbol_marked_for_renaming (sym))
+ && bitmap_bit_p (suitable_for_renaming, DECL_UID (sym)))
lhs = sym;
else
lhs = gimple_assign_lhs (stmt);
/* Rewrite the RHS and make sure the resulting assignment
is validly typed. */
- maybe_rewrite_mem_ref_base (rhsp);
+ maybe_rewrite_mem_ref_base (rhsp, suitable_for_renaming);
rhs = gimple_assign_rhs1 (stmt);
if (gimple_assign_lhs (stmt) != lhs
&& !useless_type_conversion_p (TREE_TYPE (lhs),
@@ -2120,7 +2096,7 @@ execute_update_addresses_taken (void)
TREE_ADDRESSABLE just remove the stmt. */
if (DECL_P (lhs)
&& TREE_CLOBBER_P (rhs)
- && symbol_marked_for_renaming (lhs))
+ && bitmap_bit_p (suitable_for_renaming, DECL_UID (lhs)))
{
unlink_stmt_vdef (stmt);
gsi_remove (&gsi, true);
@@ -2141,7 +2117,7 @@ execute_update_addresses_taken (void)
for (i = 0; i < gimple_call_num_args (stmt); ++i)
{
tree *argp = gimple_call_arg_ptr (stmt, i);
- maybe_rewrite_mem_ref_base (argp);
+ maybe_rewrite_mem_ref_base (argp, suitable_for_renaming);
}
}
@@ -2151,12 +2127,14 @@ execute_update_addresses_taken (void)
for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
{
tree link = gimple_asm_output_op (stmt, i);
- maybe_rewrite_mem_ref_base (&TREE_VALUE (link));
+ maybe_rewrite_mem_ref_base (&TREE_VALUE (link),
+ suitable_for_renaming);
}
for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
{
tree link = gimple_asm_input_op (stmt, i);
- maybe_rewrite_mem_ref_base (&TREE_VALUE (link));
+ maybe_rewrite_mem_ref_base (&TREE_VALUE (link),
+ suitable_for_renaming);
}
}
@@ -2165,9 +2143,10 @@ execute_update_addresses_taken (void)
{
tree *valuep = gimple_debug_bind_get_value_ptr (stmt);
tree decl;
- maybe_rewrite_mem_ref_base (valuep);
+ maybe_rewrite_mem_ref_base (valuep, suitable_for_renaming);
decl = non_rewritable_mem_ref_base (*valuep);
- if (decl && symbol_marked_for_renaming (decl))
+ if (decl
+ && bitmap_bit_p (suitable_for_renaming, DECL_UID (decl)))
gimple_debug_bind_reset_value (stmt);
}
@@ -2187,6 +2166,7 @@ execute_update_addresses_taken (void)
BITMAP_FREE (not_reg_needs);
BITMAP_FREE (addresses_taken);
+ BITMAP_FREE (suitable_for_renaming);
timevar_pop (TV_ADDRESS_TAKEN);
}
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index ac63bc671eb..57a1b482cea 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -61,10 +61,8 @@ along with GCC; see the file COPYING3. If not see
numbers after the special ones. */
#define UNUSED_NAME_VERSION 0
-#ifdef GATHER_STATISTICS
unsigned int ssa_name_nodes_reused;
unsigned int ssa_name_nodes_created;
-#endif
/* Initialize management of SSA_NAMEs to default SIZE. If SIZE is
zero use default. */
@@ -87,7 +85,8 @@ init_ssanames (struct function *fn, int size)
VEC_quick_push (tree, SSANAMES (fn), NULL_TREE);
FREE_SSANAMES (fn) = NULL;
- SYMS_TO_RENAME (fn) = BITMAP_GGC_ALLOC ();
+ fn->gimple_df->ssa_renaming_needed = 0;
+ fn->gimple_df->rename_vops = 0;
}
/* Finalize management of SSA_NAMEs. */
@@ -101,14 +100,12 @@ fini_ssanames (void)
/* Dump some simple statistics regarding the re-use of SSA_NAME nodes. */
-#ifdef GATHER_STATISTICS
void
ssanames_print_statistics (void)
{
fprintf (stderr, "SSA_NAME nodes allocated: %u\n", ssa_name_nodes_created);
fprintf (stderr, "SSA_NAME nodes reused: %u\n", ssa_name_nodes_reused);
}
-#endif
/* Return an SSA_NAME node for variable VAR defined in statement STMT
in function FN. STMT may be an empty statement for artificial
@@ -121,15 +118,17 @@ make_ssa_name_fn (struct function *fn, tree var, gimple stmt)
tree t;
use_operand_p imm;
- gcc_assert (DECL_P (var));
+ gcc_assert (TREE_CODE (var) == VAR_DECL
+ || TREE_CODE (var) == PARM_DECL
+ || TREE_CODE (var) == RESULT_DECL
+ || (TYPE_P (var) && is_gimple_reg_type (var)));
/* If our free list has an element, then use it. */
if (!VEC_empty (tree, FREE_SSANAMES (fn)))
{
t = VEC_pop (tree, FREE_SSANAMES (fn));
-#ifdef GATHER_STATISTICS
- ssa_name_nodes_reused++;
-#endif
+ if (GATHER_STATISTICS)
+ ssa_name_nodes_reused++;
/* The node was cleared out when we put it on the free list, so
there is no need to do so again here. */
@@ -141,13 +140,20 @@ make_ssa_name_fn (struct function *fn, tree var, gimple stmt)
t = make_node (SSA_NAME);
SSA_NAME_VERSION (t) = VEC_length (tree, SSANAMES (fn));
VEC_safe_push (tree, gc, SSANAMES (fn), t);
-#ifdef GATHER_STATISTICS
- ssa_name_nodes_created++;
-#endif
+ if (GATHER_STATISTICS)
+ ssa_name_nodes_created++;
}
- TREE_TYPE (t) = TREE_TYPE (var);
- SSA_NAME_VAR (t) = var;
+ if (TYPE_P (var))
+ {
+ TREE_TYPE (t) = var;
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (t, NULL_TREE);
+ }
+ else
+ {
+ TREE_TYPE (t) = TREE_TYPE (var);
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (t, var);
+ }
SSA_NAME_DEF_STMT (t) = stmt;
SSA_NAME_PTR_INFO (t) = NULL;
SSA_NAME_IN_FREE_LIST (t) = 0;
@@ -228,7 +234,7 @@ release_ssa_name (tree var)
/* Hopefully this can go away once we have the new incremental
SSA updating code installed. */
- SSA_NAME_VAR (var) = saved_ssa_name_var;
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (var, saved_ssa_name_var);
/* Note this SSA_NAME is now in the first list. */
SSA_NAME_IN_FREE_LIST (var) = 1;
@@ -317,6 +323,27 @@ get_ptr_info (tree t)
return pi;
}
+
+/* Creates a new SSA name using the template NAME tobe defined by
+ statement STMT in function FN. */
+
+tree
+copy_ssa_name_fn (struct function *fn, tree name, gimple stmt)
+{
+ tree new_name;
+
+ if (SSA_NAME_VAR (name))
+ new_name = make_ssa_name_fn (fn, SSA_NAME_VAR (name), stmt);
+ else
+ {
+ new_name = make_ssa_name_fn (fn, TREE_TYPE (name), stmt);
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (new_name, SSA_NAME_IDENTIFIER (name));
+ }
+
+ return new_name;
+}
+
+
/* Creates a duplicate of the ptr_info_def at PTR_INFO for use by
the SSA name NAME. */
@@ -338,12 +365,13 @@ duplicate_ssa_name_ptr_info (tree name, struct ptr_info_def *ptr_info)
}
-/* Creates a duplicate of a ssa name NAME tobe defined by statement STMT. */
+/* Creates a duplicate of a ssa name NAME tobe defined by statement STMT
+ in function FN. */
tree
-duplicate_ssa_name (tree name, gimple stmt)
+duplicate_ssa_name_fn (struct function *fn, tree name, gimple stmt)
{
- tree new_name = make_ssa_name (SSA_NAME_VAR (name), stmt);
+ tree new_name = copy_ssa_name_fn (fn, name, stmt);
struct ptr_info_def *old_ptr_info = SSA_NAME_PTR_INFO (name);
if (old_ptr_info)
@@ -376,7 +404,7 @@ release_defs (gimple stmt)
void
replace_ssa_name_symbol (tree ssa_name, tree sym)
{
- SSA_NAME_VAR (ssa_name) = sym;
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (ssa_name, sym);
TREE_TYPE (ssa_name) = TREE_TYPE (sym);
}
@@ -386,15 +414,8 @@ replace_ssa_name_symbol (tree ssa_name, tree sym)
static unsigned int
release_dead_ssa_names (void)
{
- tree t;
unsigned i, j;
int n = VEC_length (tree, FREE_SSANAMES (cfun));
- referenced_var_iterator rvi;
-
- /* Current defs point to various dead SSA names that in turn point to
- eventually dead variables so a bunch of memory is held live. */
- FOR_EACH_REFERENCED_VAR (cfun, t, rvi)
- set_current_def (t, NULL);
/* Now release the freelist. */
VEC_free (tree, gc, FREE_SSANAMES (cfun));
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c
index 9b7a126b1ef..8965ca3790c 100644
--- a/gcc/tree-stdarg.c
+++ b/gcc/tree-stdarg.c
@@ -266,11 +266,15 @@ find_va_list_reference (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
tree var = *tp;
if (TREE_CODE (var) == SSA_NAME)
- var = SSA_NAME_VAR (var);
-
- if (TREE_CODE (var) == VAR_DECL
- && bitmap_bit_p (va_list_vars, DECL_UID (var)))
- return var;
+ {
+ if (bitmap_bit_p (va_list_vars, SSA_NAME_VERSION (var)))
+ return var;
+ }
+ else if (TREE_CODE (var) == VAR_DECL)
+ {
+ if (bitmap_bit_p (va_list_vars, DECL_UID (var) + num_ssa_names))
+ return var;
+ }
return NULL_TREE;
}
@@ -347,12 +351,12 @@ va_list_counter_struct_op (struct stdarg_info *si, tree ap, tree var,
return false;
if (TREE_CODE (var) != SSA_NAME
- || bitmap_bit_p (si->va_list_vars, DECL_UID (SSA_NAME_VAR (var))))
+ || bitmap_bit_p (si->va_list_vars, SSA_NAME_VERSION (var)))
return false;
base = get_base_address (ap);
if (TREE_CODE (base) != VAR_DECL
- || !bitmap_bit_p (si->va_list_vars, DECL_UID (base)))
+ || !bitmap_bit_p (si->va_list_vars, DECL_UID (base) + num_ssa_names))
return false;
if (TREE_OPERAND (ap, 1) == va_list_gpr_counter_field)
@@ -371,13 +375,11 @@ static bool
va_list_ptr_read (struct stdarg_info *si, tree ap, tree tem)
{
if (TREE_CODE (ap) != VAR_DECL
- || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap)))
+ || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap) + num_ssa_names))
return false;
if (TREE_CODE (tem) != SSA_NAME
- || bitmap_bit_p (si->va_list_vars,
- DECL_UID (SSA_NAME_VAR (tem)))
- || is_global_var (SSA_NAME_VAR (tem)))
+ || bitmap_bit_p (si->va_list_vars, SSA_NAME_VERSION (tem)))
return false;
if (si->compute_sizes < 0)
@@ -405,8 +407,8 @@ va_list_ptr_read (struct stdarg_info *si, tree ap, tree tem)
/* Note the temporary, as we need to track whether it doesn't escape
the current function. */
- bitmap_set_bit (si->va_list_escape_vars,
- DECL_UID (SSA_NAME_VAR (tem)));
+ bitmap_set_bit (si->va_list_escape_vars, SSA_NAME_VERSION (tem));
+
return true;
}
@@ -423,11 +425,11 @@ va_list_ptr_write (struct stdarg_info *si, tree ap, tree tem2)
unsigned HOST_WIDE_INT increment;
if (TREE_CODE (ap) != VAR_DECL
- || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap)))
+ || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap) + num_ssa_names))
return false;
if (TREE_CODE (tem2) != SSA_NAME
- || bitmap_bit_p (si->va_list_vars, DECL_UID (SSA_NAME_VAR (tem2))))
+ || bitmap_bit_p (si->va_list_vars, SSA_NAME_VERSION (tem2)))
return false;
if (si->compute_sizes <= 0)
@@ -459,23 +461,21 @@ check_va_list_escapes (struct stdarg_info *si, tree lhs, tree rhs)
if (TREE_CODE (rhs) == SSA_NAME)
{
- if (! bitmap_bit_p (si->va_list_escape_vars,
- DECL_UID (SSA_NAME_VAR (rhs))))
+ if (! bitmap_bit_p (si->va_list_escape_vars, SSA_NAME_VERSION (rhs)))
return;
}
else if (TREE_CODE (rhs) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (rhs, 0)) == MEM_REF
&& TREE_CODE (TREE_OPERAND (TREE_OPERAND (rhs, 0), 0)) == SSA_NAME)
{
- if (! bitmap_bit_p (si->va_list_escape_vars,
- DECL_UID (SSA_NAME_VAR (TREE_OPERAND
- (TREE_OPERAND (rhs, 0), 0)))))
+ tree ptr = TREE_OPERAND (TREE_OPERAND (rhs, 0), 0);
+ if (! bitmap_bit_p (si->va_list_escape_vars, SSA_NAME_VERSION (ptr)))
return;
}
else
return;
- if (TREE_CODE (lhs) != SSA_NAME || is_global_var (SSA_NAME_VAR (lhs)))
+ if (TREE_CODE (lhs) != SSA_NAME)
{
si->va_list_escapes = true;
return;
@@ -511,8 +511,7 @@ check_va_list_escapes (struct stdarg_info *si, tree lhs, tree rhs)
return;
}
- bitmap_set_bit (si->va_list_escape_vars,
- DECL_UID (SSA_NAME_VAR (lhs)));
+ bitmap_set_bit (si->va_list_escape_vars, SSA_NAME_VERSION (lhs));
}
@@ -540,7 +539,7 @@ check_all_va_list_escapes (struct stdarg_info *si)
FOR_EACH_SSA_TREE_OPERAND (use, stmt, iter, SSA_OP_ALL_USES)
{
if (! bitmap_bit_p (si->va_list_escape_vars,
- DECL_UID (SSA_NAME_VAR (use))))
+ SSA_NAME_VERSION (use)))
continue;
if (is_gimple_assign (stmt))
@@ -586,12 +585,12 @@ check_all_va_list_escapes (struct stdarg_info *si)
if (TREE_CODE (lhs) == SSA_NAME
&& bitmap_bit_p (si->va_list_escape_vars,
- DECL_UID (SSA_NAME_VAR (lhs))))
+ SSA_NAME_VERSION (lhs)))
continue;
if (TREE_CODE (lhs) == VAR_DECL
&& bitmap_bit_p (si->va_list_vars,
- DECL_UID (lhs)))
+ DECL_UID (lhs) + num_ssa_names))
continue;
}
else if (rhs_code == ADDR_EXPR
@@ -601,7 +600,7 @@ check_all_va_list_escapes (struct stdarg_info *si)
tree lhs = gimple_assign_lhs (stmt);
if (bitmap_bit_p (si->va_list_escape_vars,
- DECL_UID (SSA_NAME_VAR (lhs))))
+ SSA_NAME_VERSION (lhs)))
continue;
}
}
@@ -722,7 +721,7 @@ execute_optimize_stdarg (void)
break;
}
- bitmap_set_bit (si.va_list_vars, DECL_UID (ap));
+ bitmap_set_bit (si.va_list_vars, DECL_UID (ap) + num_ssa_names);
/* VA_START_BB and VA_START_AP will be only used if there is just
one va_start in the function. */
@@ -792,7 +791,7 @@ execute_optimize_stdarg (void)
gimple phi = gsi_stmt (i);
lhs = PHI_RESULT (phi);
- if (!is_gimple_reg (lhs))
+ if (virtual_operand_p (lhs))
continue;
FOR_EACH_PHI_ARG (uop, phi, soi, SSA_OP_USE)
diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c
index f6b0b047e4f..df88ddf77e8 100644
--- a/gcc/tree-switch-conversion.c
+++ b/gcc/tree-switch-conversion.c
@@ -1,7 +1,7 @@
-/* Switch Conversion converts variable initializations based on switch
- statements to initializations from a static array.
- Copyright (C) 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
- Contributed by Martin Jambor <jamborm@suse.cz>
+/* Lower GIMPLE_SWITCH expressions to something more efficient than
+ a jump table.
+ Copyright (C) 2006, 2008, 2009, 2010, 2011, 2012
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -20,6 +20,455 @@ along with GCC; see the file COPYING3. If not, write to the Free
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
+/* This file handles the lowering of GIMPLE_SWITCH to an indexed
+ load, or a series of bit-test-and-branch expressions. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "line-map.h"
+#include "params.h"
+#include "flags.h"
+#include "tree.h"
+#include "basic-block.h"
+#include "tree-flow.h"
+#include "tree-flow-inline.h"
+#include "tree-ssa-operands.h"
+#include "tree-pass.h"
+#include "gimple-pretty-print.h"
+
+/* ??? For lang_hooks.types.type_for_mode, but is there a word_mode
+ type in the GIMPLE type system that is language-independent? */
+#include "langhooks.h"
+
+/* Need to include expr.h and optabs.h for lshift_cheap_p. */
+#include "expr.h"
+#include "optabs.h"
+
+/* Maximum number of case bit tests.
+ FIXME: This should be derived from PARAM_CASE_VALUES_THRESHOLD and
+ targetm.case_values_threshold(), or be its own param. */
+#define MAX_CASE_BIT_TESTS 3
+
+/* Split the basic block at the statement pointed to by GSIP, and insert
+ a branch to the target basic block of E_TRUE conditional on tree
+ expression COND.
+
+ It is assumed that there is already an edge from the to-be-split
+ basic block to E_TRUE->dest block. This edge is removed, and the
+ profile information on the edge is re-used for the new conditional
+ jump.
+
+ The CFG is updated. The dominator tree will not be valid after
+ this transformation, but the immediate dominators are updated if
+ UPDATE_DOMINATORS is true.
+
+ Returns the newly created basic block. */
+
+static basic_block
+hoist_edge_and_branch_if_true (gimple_stmt_iterator *gsip,
+ tree cond, edge e_true,
+ bool update_dominators)
+{
+ tree tmp;
+ gimple cond_stmt;
+ edge e_false;
+ basic_block new_bb, split_bb = gsi_bb (*gsip);
+ bool dominated_e_true = false;
+
+ gcc_assert (e_true->src == split_bb);
+
+ if (update_dominators
+ && get_immediate_dominator (CDI_DOMINATORS, e_true->dest) == split_bb)
+ dominated_e_true = true;
+
+ tmp = force_gimple_operand_gsi (gsip, cond, /*simple=*/true, NULL,
+ /*before=*/true, GSI_SAME_STMT);
+ cond_stmt = gimple_build_cond_from_tree (tmp, NULL_TREE, NULL_TREE);
+ gsi_insert_before (gsip, cond_stmt, GSI_SAME_STMT);
+
+ e_false = split_block (split_bb, cond_stmt);
+ new_bb = e_false->dest;
+ redirect_edge_pred (e_true, split_bb);
+
+ e_true->flags &= ~EDGE_FALLTHRU;
+ e_true->flags |= EDGE_TRUE_VALUE;
+
+ e_false->flags &= ~EDGE_FALLTHRU;
+ e_false->flags |= EDGE_FALSE_VALUE;
+ e_false->probability = REG_BR_PROB_BASE - e_true->probability;
+ e_false->count = split_bb->count - e_true->count;
+ new_bb->count = e_false->count;
+
+ if (update_dominators)
+ {
+ if (dominated_e_true)
+ set_immediate_dominator (CDI_DOMINATORS, e_true->dest, split_bb);
+ set_immediate_dominator (CDI_DOMINATORS, e_false->dest, split_bb);
+ }
+
+ return new_bb;
+}
+
+
+/* Determine whether "1 << x" is relatively cheap in word_mode. */
+/* FIXME: This is the function that we need rtl.h and optabs.h for.
+ This function (and similar RTL-related cost code in e.g. IVOPTS) should
+ be moved to some kind of interface file for GIMPLE/RTL interactions. */
+static bool
+lshift_cheap_p (void)
+{
+ /* FIXME: This should be made target dependent via this "this_target"
+ mechanism, similar to e.g. can_copy_init_p in gcse.c. */
+ static bool init[2] = {false, false};
+ static bool cheap[2] = {true, true};
+ bool speed_p;
+
+ /* If the targer has no lshift in word_mode, the operation will most
+ probably not be cheap. ??? Does GCC even work for such targets? */
+ if (optab_handler (ashl_optab, word_mode) == CODE_FOR_nothing)
+ return false;
+
+ speed_p = optimize_insn_for_speed_p ();
+
+ if (!init[speed_p])
+ {
+ rtx reg = gen_raw_REG (word_mode, 10000);
+ int cost = set_src_cost (gen_rtx_ASHIFT (word_mode, const1_rtx, reg),
+ speed_p);
+ cheap[speed_p] = cost < COSTS_N_INSNS (MAX_CASE_BIT_TESTS);
+ init[speed_p] = true;
+ }
+
+ return cheap[speed_p];
+}
+
+/* Return true if a switch should be expanded as a bit test.
+ RANGE is the difference between highest and lowest case.
+ UNIQ is number of unique case node targets, not counting the default case.
+ COUNT is the number of comparisons needed, not counting the default case. */
+
+static bool
+expand_switch_using_bit_tests_p (tree range,
+ unsigned int uniq,
+ unsigned int count)
+{
+ return (((uniq == 1 && count >= 3)
+ || (uniq == 2 && count >= 5)
+ || (uniq == 3 && count >= 6))
+ && lshift_cheap_p ()
+ && compare_tree_int (range, GET_MODE_BITSIZE (word_mode)) < 0
+ && compare_tree_int (range, 0) > 0);
+}
+
+/* Implement switch statements with bit tests
+
+A GIMPLE switch statement can be expanded to a short sequence of bit-wise
+comparisons. "switch(x)" is converted into "if ((1 << (x-MINVAL)) & CST)"
+where CST and MINVAL are integer constants. This is better than a series
+of compare-and-banch insns in some cases, e.g. we can implement:
+
+ if ((x==4) || (x==6) || (x==9) || (x==11))
+
+as a single bit test:
+
+ if ((1<<x) & ((1<<4)|(1<<6)|(1<<9)|(1<<11)))
+
+This transformation is only applied if the number of case targets is small,
+if CST constains at least 3 bits, and "1 << x" is cheap. The bit tests are
+performed in "word_mode".
+
+The following example shows the code the transformation generates:
+
+ int bar(int x)
+ {
+ switch (x)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F':
+ return 1;
+ }
+ return 0;
+ }
+
+==>
+
+ bar (int x)
+ {
+ tmp1 = x - 48;
+ if (tmp1 > (70 - 48)) goto L2;
+ tmp2 = 1 << tmp1;
+ tmp3 = 0b11111100000001111111111;
+ if ((tmp2 & tmp3) != 0) goto L1 ; else goto L2;
+ L1:
+ return 1;
+ L2:
+ return 0;
+ }
+
+TODO: There are still some improvements to this transformation that could
+be implemented:
+
+* A narrower mode than word_mode could be used if that is cheaper, e.g.
+ for x86_64 where a narrower-mode shift may result in smaller code.
+
+* The compounded constant could be shifted rather than the one. The
+ test would be either on the sign bit or on the least significant bit,
+ depending on the direction of the shift. On some machines, the test
+ for the branch would be free if the bit to test is already set by the
+ shift operation.
+
+This transformation was contributed by Roger Sayle, see this e-mail:
+ http://gcc.gnu.org/ml/gcc-patches/2003-01/msg01950.html
+*/
+
+/* A case_bit_test represents a set of case nodes that may be
+ selected from using a bit-wise comparison. HI and LO hold
+ the integer to be tested against, TARGET_EDGE contains the
+ edge to the basic block to jump to upon success and BITS
+ counts the number of case nodes handled by this test,
+ typically the number of bits set in HI:LO. The LABEL field
+ is used to quickly identify all cases in this set without
+ looking at label_to_block for every case label. */
+
+struct case_bit_test
+{
+ HOST_WIDE_INT hi;
+ HOST_WIDE_INT lo;
+ edge target_edge;
+ tree label;
+ int bits;
+};
+
+/* Comparison function for qsort to order bit tests by decreasing
+ probability of execution. Our best guess comes from a measured
+ profile. If the profile counts are equal, break even on the
+ number of case nodes, i.e. the node with the most cases gets
+ tested first.
+
+ TODO: Actually this currently runs before a profile is available.
+ Therefore the case-as-bit-tests transformation should be done
+ later in the pass pipeline, or something along the lines of
+ "Efficient and effective branch reordering using profile data"
+ (Yang et. al., 2002) should be implemented (although, how good
+ is a paper is called "Efficient and effective ..." when the
+ latter is implied by the former, but oh well...). */
+
+static int
+case_bit_test_cmp (const void *p1, const void *p2)
+{
+ const struct case_bit_test *const d1 = (const struct case_bit_test *) p1;
+ const struct case_bit_test *const d2 = (const struct case_bit_test *) p2;
+
+ if (d2->target_edge->count != d1->target_edge->count)
+ return d2->target_edge->count - d1->target_edge->count;
+ if (d2->bits != d1->bits)
+ return d2->bits - d1->bits;
+
+ /* Stabilize the sort. */
+ return LABEL_DECL_UID (d2->label) - LABEL_DECL_UID (d1->label);
+}
+
+/* Expand a switch statement by a short sequence of bit-wise
+ comparisons. "switch(x)" is effectively converted into
+ "if ((1 << (x-MINVAL)) & CST)" where CST and MINVAL are
+ integer constants.
+
+ INDEX_EXPR is the value being switched on.
+
+ MINVAL is the lowest case value of in the case nodes,
+ and RANGE is highest value minus MINVAL. MINVAL and RANGE
+ are not guaranteed to be of the same type as INDEX_EXPR
+ (the gimplifier doesn't change the type of case label values,
+ and MINVAL and RANGE are derived from those values).
+
+ There *MUST* be MAX_CASE_BIT_TESTS or less unique case
+ node targets. */
+
+static void
+emit_case_bit_tests (gimple swtch, tree index_expr,
+ tree minval, tree range)
+{
+ struct case_bit_test test[MAX_CASE_BIT_TESTS];
+ unsigned int i, j, k;
+ unsigned int count;
+
+ basic_block switch_bb = gimple_bb (swtch);
+ basic_block default_bb, new_default_bb, new_bb;
+ edge default_edge;
+ bool update_dom = dom_info_available_p (CDI_DOMINATORS);
+
+ VEC (basic_block, heap) *bbs_to_fix_dom = NULL;
+
+ tree index_type = TREE_TYPE (index_expr);
+ tree unsigned_index_type = unsigned_type_for (index_type);
+ unsigned int branch_num = gimple_switch_num_labels (swtch);
+
+ gimple_stmt_iterator gsi;
+ gimple shift_stmt;
+
+ tree idx, tmp, csui;
+ tree word_type_node = lang_hooks.types.type_for_mode (word_mode, 1);
+ tree word_mode_zero = fold_convert (word_type_node, integer_zero_node);
+ tree word_mode_one = fold_convert (word_type_node, integer_one_node);
+
+ memset (&test, 0, sizeof (test));
+
+ /* Get the edge for the default case. */
+ tmp = gimple_switch_label (swtch, 0);
+ default_bb = label_to_block (CASE_LABEL (tmp));
+ default_edge = find_edge (switch_bb, default_bb);
+
+ /* Go through all case labels, and collect the case labels, profile
+ counts, and other information we need to build the branch tests. */
+ count = 0;
+ for (i = 1; i < branch_num; i++)
+ {
+ unsigned int lo, hi;
+ tree cs = gimple_switch_label (swtch, i);
+ tree label = CASE_LABEL (cs);
+ edge e = find_edge (switch_bb, label_to_block (label));
+ for (k = 0; k < count; k++)
+ if (e == test[k].target_edge)
+ break;
+
+ if (k == count)
+ {
+ gcc_checking_assert (count < MAX_CASE_BIT_TESTS);
+ test[k].hi = 0;
+ test[k].lo = 0;
+ test[k].target_edge = e;
+ test[k].label = label;
+ test[k].bits = 1;
+ count++;
+ }
+ else
+ test[k].bits++;
+
+ lo = tree_low_cst (int_const_binop (MINUS_EXPR,
+ CASE_LOW (cs), minval),
+ 1);
+ if (CASE_HIGH (cs) == NULL_TREE)
+ hi = lo;
+ else
+ hi = tree_low_cst (int_const_binop (MINUS_EXPR,
+ CASE_HIGH (cs), minval),
+ 1);
+
+ for (j = lo; j <= hi; j++)
+ if (j >= HOST_BITS_PER_WIDE_INT)
+ test[k].hi |= (HOST_WIDE_INT) 1 << (j - HOST_BITS_PER_INT);
+ else
+ test[k].lo |= (HOST_WIDE_INT) 1 << j;
+ }
+
+ qsort (test, count, sizeof(*test), case_bit_test_cmp);
+
+ /* We generate two jumps to the default case label.
+ Split the default edge, so that we don't have to do any PHI node
+ updating. */
+ new_default_bb = split_edge (default_edge);
+
+ if (update_dom)
+ {
+ bbs_to_fix_dom = VEC_alloc (basic_block, heap, 10);
+ VEC_quick_push (basic_block, bbs_to_fix_dom, switch_bb);
+ VEC_quick_push (basic_block, bbs_to_fix_dom, default_bb);
+ VEC_quick_push (basic_block, bbs_to_fix_dom, new_default_bb);
+ }
+
+ /* Now build the test-and-branch code. */
+
+ gsi = gsi_last_bb (switch_bb);
+
+ /* idx = (unsigned)x - minval. */
+ idx = fold_convert (unsigned_index_type, index_expr);
+ idx = fold_build2 (MINUS_EXPR, unsigned_index_type, idx,
+ fold_convert (unsigned_index_type, minval));
+ idx = force_gimple_operand_gsi (&gsi, idx,
+ /*simple=*/true, NULL_TREE,
+ /*before=*/true, GSI_SAME_STMT);
+
+ /* if (idx > range) goto default */
+ range = force_gimple_operand_gsi (&gsi,
+ fold_convert (unsigned_index_type, range),
+ /*simple=*/true, NULL_TREE,
+ /*before=*/true, GSI_SAME_STMT);
+ tmp = fold_build2 (GT_EXPR, boolean_type_node, idx, range);
+ new_bb = hoist_edge_and_branch_if_true (&gsi, tmp, default_edge, update_dom);
+ if (update_dom)
+ VEC_quick_push (basic_block, bbs_to_fix_dom, new_bb);
+ gcc_assert (gimple_bb (swtch) == new_bb);
+ gsi = gsi_last_bb (new_bb);
+
+ /* Any blocks dominated by the GIMPLE_SWITCH, but that are not successors
+ of NEW_BB, are still immediately dominated by SWITCH_BB. Make it so. */
+ if (update_dom)
+ {
+ VEC (basic_block, heap) *dom_bbs;
+ basic_block dom_son;
+
+ dom_bbs = get_dominated_by (CDI_DOMINATORS, new_bb);
+ FOR_EACH_VEC_ELT (basic_block, dom_bbs, i, dom_son)
+ {
+ edge e = find_edge (new_bb, dom_son);
+ if (e && single_pred_p (e->dest))
+ continue;
+ set_immediate_dominator (CDI_DOMINATORS, dom_son, switch_bb);
+ VEC_safe_push (basic_block, heap, bbs_to_fix_dom, dom_son);
+ }
+ VEC_free (basic_block, heap, dom_bbs);
+ }
+
+ /* csui = (1 << (word_mode) idx) */
+ csui = make_ssa_name (word_type_node, NULL);
+ tmp = fold_build2 (LSHIFT_EXPR, word_type_node, word_mode_one,
+ fold_convert (word_type_node, idx));
+ tmp = force_gimple_operand_gsi (&gsi, tmp,
+ /*simple=*/false, NULL_TREE,
+ /*before=*/true, GSI_SAME_STMT);
+ shift_stmt = gimple_build_assign (csui, tmp);
+ gsi_insert_before (&gsi, shift_stmt, GSI_SAME_STMT);
+ update_stmt (shift_stmt);
+
+ /* for each unique set of cases:
+ if (const & csui) goto target */
+ for (k = 0; k < count; k++)
+ {
+ tmp = build_int_cst_wide (word_type_node, test[k].lo, test[k].hi);
+ tmp = fold_build2 (BIT_AND_EXPR, word_type_node, csui, tmp);
+ tmp = force_gimple_operand_gsi (&gsi, tmp,
+ /*simple=*/true, NULL_TREE,
+ /*before=*/true, GSI_SAME_STMT);
+ tmp = fold_build2 (NE_EXPR, boolean_type_node, tmp, word_mode_zero);
+ new_bb = hoist_edge_and_branch_if_true (&gsi, tmp, test[k].target_edge,
+ update_dom);
+ if (update_dom)
+ VEC_safe_push (basic_block, heap, bbs_to_fix_dom, new_bb);
+ gcc_assert (gimple_bb (swtch) == new_bb);
+ gsi = gsi_last_bb (new_bb);
+ }
+
+ /* We should have removed all edges now. */
+ gcc_assert (EDGE_COUNT (gsi_bb (gsi)->succs) == 0);
+
+ /* If nothing matched, go to the default label. */
+ make_edge (gsi_bb (gsi), new_default_bb, EDGE_FALLTHRU);
+
+ /* The GIMPLE_SWITCH is now redundant. */
+ gsi_remove (&gsi, true);
+
+ if (update_dom)
+ {
+ /* Fix up the dominator tree. */
+ iterate_fix_dominators (CDI_DOMINATORS, bbs_to_fix_dom, true);
+ VEC_free (basic_block, heap, bbs_to_fix_dom);
+ }
+}
+
/*
Switch initialization conversion
@@ -75,26 +524,10 @@ is changed into:
There are further constraints. Specifically, the range of values across all
case labels must not be bigger than SWITCH_CONVERSION_BRANCH_RATIO (default
-eight) times the number of the actual switch branches. */
+eight) times the number of the actual switch branches.
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "line-map.h"
-#include "params.h"
-#include "flags.h"
-#include "tree.h"
-#include "basic-block.h"
-#include "tree-flow.h"
-#include "tree-flow-inline.h"
-#include "tree-ssa-operands.h"
-#include "input.h"
-#include "tree-pass.h"
-#include "gimple-pretty-print.h"
-#include "tree-dump.h"
-#include "timevar.h"
-#include "langhooks.h"
+This transformation was contributed by Martin Jambor, see this e-mail:
+ http://gcc.gnu.org/ml/gcc-patches/2008-07/msg00011.html */
/* The main structure of the pass. */
struct switch_conv_info
@@ -596,7 +1029,7 @@ build_one_array (gimple swtch, int num, tree arr_index_type, gimple phi,
gcc_assert (info->default_values[num]);
- name = make_ssa_name (SSA_NAME_VAR (PHI_RESULT (phi)), NULL);
+ name = copy_ssa_name (PHI_RESULT (phi), NULL);
info->target_inbound_names[num] = name;
cst = constructor_contains_same_values_p (info->constructors[num]);
@@ -642,7 +1075,6 @@ build_one_array (gimple swtch, int num, tree arr_index_type, gimple phi,
load = gimple_build_assign (name, fetch);
}
- SSA_NAME_DEF_STMT (name) = load;
gsi_insert_before (&gsi, load, GSI_SAME_STMT);
update_stmt (load);
info->arr_ref_last = load;
@@ -656,7 +1088,7 @@ static void
build_arrays (gimple swtch, struct switch_conv_info *info)
{
tree arr_index_type;
- tree tidx, sub, tmp, utype;
+ tree tidx, sub, utype;
gimple stmt;
gimple_stmt_iterator gsi;
int i;
@@ -672,16 +1104,13 @@ build_arrays (gimple swtch, struct switch_conv_info *info)
utype = lang_hooks.types.type_for_mode (TYPE_MODE (utype), 1);
arr_index_type = build_index_type (info->range_size);
- tmp = create_tmp_var (utype, "csui");
- add_referenced_var (tmp);
- tidx = make_ssa_name (tmp, NULL);
+ tidx = make_ssa_name (utype, NULL);
sub = fold_build2_loc (loc, MINUS_EXPR, utype,
fold_convert_loc (loc, utype, info->index_expr),
fold_convert_loc (loc, utype, info->range_min));
sub = force_gimple_operand_gsi (&gsi, sub,
false, NULL, true, GSI_SAME_STMT);
stmt = gimple_build_assign (tidx, sub);
- SSA_NAME_DEF_STMT (tidx) = stmt;
gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
update_stmt (stmt);
@@ -703,12 +1132,9 @@ gen_def_assigns (gimple_stmt_iterator *gsi, struct switch_conv_info *info)
for (i = 0; i < info->phi_count; i++)
{
- tree name
- = make_ssa_name (SSA_NAME_VAR (info->target_inbound_names[i]), NULL);
-
+ tree name = copy_ssa_name (info->target_inbound_names[i], NULL);
info->target_outbound_names[i] = name;
assign = gimple_build_assign (name, info->default_values[i]);
- SSA_NAME_DEF_STMT (name) = assign;
gsi_insert_before (gsi, assign, GSI_SAME_STMT);
update_stmt (assign);
}
@@ -799,13 +1225,6 @@ gen_inbound_check (gimple swtch, struct switch_conv_info *info)
gcc_assert (info->default_values);
- /* Make no effort to update the post-dominator tree. It is actually not
- that hard for the transformations we have performed, but it is not
- supported by iterate_fix_dominators.
- Freeing post-dominance info is dome early to avoid pointless work in
- create_basic_block, which is called when we split SWITCH_BB. */
- free_dominance_info (CDI_POST_DOMINATORS);
-
bb0 = gimple_bb (swtch);
tidx = gimple_assign_lhs (info->arr_ref_first);
@@ -885,7 +1304,7 @@ gen_inbound_check (gimple swtch, struct switch_conv_info *info)
set_immediate_dominator (CDI_DOMINATORS, bb1, bb0);
set_immediate_dominator (CDI_DOMINATORS, bb2, bb0);
- if (! get_immediate_dominator(CDI_DOMINATORS, bbf))
+ if (! get_immediate_dominator (CDI_DOMINATORS, bbf))
/* If bbD was the immediate dominator ... */
set_immediate_dominator (CDI_DOMINATORS, bbf, bb0);
@@ -911,8 +1330,14 @@ process_switch (gimple swtch)
{
struct switch_conv_info info;
- /* Degenerate case with only a default label should never happen. */
- gcc_checking_assert (gimple_switch_num_labels (swtch) > 1);
+ /* Group case labels so that we get the right results from the heuristics
+ that decide on the code generation approach for this switch. */
+ group_case_labels_stmt (swtch);
+
+ /* If this switch is now a degenerate case with only a default label,
+ there is nothing left for us to do. */
+ if (gimple_switch_num_labels (swtch) < 2)
+ return "switch is a degenerate case";
collect_switch_conv_info (swtch, &info);
@@ -920,17 +1345,30 @@ process_switch (gimple swtch)
during gimplification). */
gcc_checking_assert (TREE_TYPE (info.index_expr) != error_mark_node);
- /* If there is no common successor, we cannot do the transformation. */
- if (! info.final_bb)
- return "no common successor to all case label target blocks found";
+ /* A switch on a constant should have been optimized in tree-cfg-cleanup. */
+ gcc_checking_assert (! TREE_CONSTANT (info.index_expr));
- if (info.uniq <= 2)
+ if (info.uniq <= MAX_CASE_BIT_TESTS)
{
- if (expand_switch_using_bit_tests_p (info.index_expr, info.range_size,
+ if (expand_switch_using_bit_tests_p (info.range_size,
info.uniq, info.count))
- return "expanding as bit test is preferable";
+ {
+ if (dump_file)
+ fputs (" expanding as bit test is preferable\n", dump_file);
+ emit_case_bit_tests (swtch, info.index_expr,
+ info.range_min, info.range_size);
+ return NULL;
+ }
+
+ if (info.uniq <= 2)
+ /* This will be expanded as a decision tree in stmt.c:expand_case. */
+ return " expanding as jumps is preferable";
}
+ /* If there is no common successor, we cannot do the transformation. */
+ if (! info.final_bb)
+ return "no common successor to all case label target blocks found";
+
/* Check the case label values are within reasonable range: */
if (!check_range (&info))
{
@@ -999,6 +1437,11 @@ do_switchconv (void)
fputs ("Switch converted\n", dump_file);
fputs ("--------------------------------\n", dump_file);
}
+
+ /* Make no effort to update the post-dominator tree. It is actually not
+ that hard for the transformations we have performed, but it is not
+ supported by iterate_fix_dominators. */
+ free_dominance_info (CDI_POST_DOMINATORS);
}
else
{
@@ -1039,6 +1482,8 @@ struct gimple_opt_pass pass_convert_switch =
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_update_ssa
- | TODO_ggc_collect | TODO_verify_ssa /* todo_flags_finish */
+ | TODO_ggc_collect | TODO_verify_ssa
+ | TODO_verify_stmts
+ | TODO_verify_flow /* todo_flags_finish */
}
};
diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c
index 02e1113f483..7ee00a2a319 100644
--- a/gcc/tree-tailcall.c
+++ b/gcc/tree-tailcall.c
@@ -27,7 +27,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "function.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "gimple-pretty-print.h"
#include "except.h"
#include "tree-pass.h"
@@ -391,7 +390,6 @@ find_tail_calls (basic_block bb, struct tailcall **ret)
basic_block abb;
size_t idx;
tree var;
- referenced_var_iterator rvi;
if (!single_succ_p (bb))
return;
@@ -485,7 +483,7 @@ find_tail_calls (basic_block bb, struct tailcall **ret)
/* Make sure the tail invocation of this function does not refer
to local variables. */
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
+ FOR_EACH_LOCAL_DECL (cfun, idx, var)
{
if (TREE_CODE (var) != PARM_DECL
&& auto_var_in_fn_p (var, cfun->decl)
@@ -611,14 +609,11 @@ adjust_return_value_with_ops (enum tree_code code, const char *label,
{
tree ret_type = TREE_TYPE (DECL_RESULT (current_function_decl));
- tree tmp = create_tmp_reg (ret_type, label);
+ tree result = make_temp_ssa_name (ret_type, NULL, label);
gimple stmt;
- tree result;
-
- add_referenced_var (tmp);
if (types_compatible_p (TREE_TYPE (acc), TREE_TYPE (op1)))
- stmt = gimple_build_assign_with_ops (code, tmp, acc, op1);
+ stmt = gimple_build_assign_with_ops (code, result, acc, op1);
else
{
tree rhs = fold_convert (TREE_TYPE (acc),
@@ -628,12 +623,9 @@ adjust_return_value_with_ops (enum tree_code code, const char *label,
op1));
rhs = force_gimple_operand_gsi (&gsi, rhs,
false, NULL, true, GSI_CONTINUE_LINKING);
- stmt = gimple_build_assign (NULL_TREE, rhs);
+ stmt = gimple_build_assign (result, rhs);
}
- result = make_ssa_name (tmp, stmt);
- gimple_assign_set_lhs (stmt, result);
- update_stmt (stmt);
gsi_insert_before (&gsi, stmt, GSI_NEW_STMT);
return result;
}
@@ -648,9 +640,9 @@ update_accumulator_with_ops (enum tree_code code, tree acc, tree op1,
gimple_stmt_iterator gsi)
{
gimple stmt;
- tree var;
+ tree var = copy_ssa_name (acc, NULL);
if (types_compatible_p (TREE_TYPE (acc), TREE_TYPE (op1)))
- stmt = gimple_build_assign_with_ops (code, SSA_NAME_VAR (acc), acc, op1);
+ stmt = gimple_build_assign_with_ops (code, var, acc, op1);
else
{
tree rhs = fold_convert (TREE_TYPE (acc),
@@ -660,11 +652,8 @@ update_accumulator_with_ops (enum tree_code code, tree acc, tree op1,
op1));
rhs = force_gimple_operand_gsi (&gsi, rhs,
false, NULL, false, GSI_CONTINUE_LINKING);
- stmt = gimple_build_assign (NULL_TREE, rhs);
+ stmt = gimple_build_assign (var, rhs);
}
- var = make_ssa_name (SSA_NAME_VAR (acc), stmt);
- gimple_assign_set_lhs (stmt, var);
- update_stmt (stmt);
gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
return var;
}
@@ -767,11 +756,11 @@ arg_needs_copy_p (tree param)
{
tree def;
- if (!is_gimple_reg (param) || !var_ann (param))
+ if (!is_gimple_reg (param))
return false;
/* Parameters that are only defined but never used need not be copied. */
- def = gimple_default_def (cfun, param);
+ def = ssa_default_def (cfun, param);
if (!def)
return false;
@@ -873,36 +862,6 @@ eliminate_tail_call (struct tailcall *t)
release_defs (call);
}
-/* Add phi nodes for the virtual operands defined in the function to the
- header of the loop created by tail recursion elimination.
-
- Originally, we used to add phi nodes only for call clobbered variables,
- as the value of the non-call clobbered ones obviously cannot be used
- or changed within the recursive call. However, the local variables
- from multiple calls now share the same location, so the virtual ssa form
- requires us to say that the location dies on further iterations of the loop,
- which requires adding phi nodes.
-*/
-static void
-add_virtual_phis (void)
-{
- referenced_var_iterator rvi;
- tree var;
-
- /* The problematic part is that there is no way how to know what
- to put into phi nodes (there in fact does not have to be such
- ssa name available). A solution would be to have an artificial
- use/kill for all virtual operands in EXIT node. Unless we have
- this, we cannot do much better than to rebuild the ssa form for
- possibly affected virtual ssa names from scratch. */
-
- FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
- {
- if (!is_gimple_reg (var) && gimple_default_def (cfun, var) != NULL_TREE)
- mark_sym_for_renaming (var);
- }
-}
-
/* Optimizes the tailcall described by T. If OPT_TAILCALLS is true, also
mark the tailcalls for the sibcall optimization. */
@@ -941,10 +900,9 @@ static tree
create_tailcall_accumulator (const char *label, basic_block bb, tree init)
{
tree ret_type = TREE_TYPE (DECL_RESULT (current_function_decl));
- tree tmp = create_tmp_reg (ret_type, label);
+ tree tmp = make_temp_ssa_name (ret_type, NULL, label);
gimple phi;
- add_referenced_var (tmp);
phi = create_phi_node (tmp, bb);
/* RET_TYPE can be a float when -ffast-maths is enabled. */
add_phi_arg (phi, fold_convert (ret_type, init), single_pred_edge (bb),
@@ -1004,13 +962,12 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls)
param = DECL_CHAIN (param))
if (arg_needs_copy_p (param))
{
- tree name = gimple_default_def (cfun, param);
+ tree name = ssa_default_def (cfun, param);
tree new_name = make_ssa_name (param, SSA_NAME_DEF_STMT (name));
gimple phi;
- set_default_def (param, new_name);
+ set_ssa_default_def (cfun, param, new_name);
phi = create_phi_node (name, first);
- SSA_NAME_DEF_STMT (name) = phi;
add_phi_arg (phi, new_name, single_pred_edge (first),
EXPR_LOCATION (param));
}
@@ -1057,8 +1014,12 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls)
if (changed)
free_dominance_info (CDI_DOMINATORS);
+ /* Add phi nodes for the virtual operands defined in the function to the
+ header of the loop created by tail recursion elimination. Do so
+ by triggering the SSA renamer. */
if (phis_constructed)
- add_virtual_phis ();
+ mark_virtual_operands_for_renaming (cfun);
+
if (changed)
return TODO_cleanup_cfg | TODO_update_ssa_only_virtuals;
return 0;
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 34afd05671d..4a5624e1092 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -1,5 +1,5 @@
/* Data References Analysis and Manipulation Utilities for Vectorization.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Dorit Naishlos <dorit@il.ibm.com>
and Ira Rosen <irar@il.ibm.com>
@@ -29,10 +29,9 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "target.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-scalar-evolution.h"
@@ -1060,7 +1059,7 @@ vect_update_misalignment_for_peel (struct data_reference *dr,
int misal = DR_MISALIGNMENT (dr);
tree vectype = STMT_VINFO_VECTYPE (stmt_info);
misal += negative ? -npeel * dr_size : npeel * dr_size;
- misal &= GET_MODE_SIZE (TYPE_MODE (vectype)) - 1;
+ misal &= (TYPE_ALIGN (vectype) / BITS_PER_UNIT) - 1;
SET_DR_MISALIGNMENT (dr, misal);
return;
}
@@ -1132,6 +1131,18 @@ vect_verify_datarefs_alignment (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
return true;
}
+/* Given an memory reference EXP return whether its alignment is less
+ than its size. */
+
+static bool
+not_size_aligned (tree exp)
+{
+ if (!host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1))
+ return true;
+
+ return (TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp)))
+ > get_object_alignment (exp));
+}
/* Function vector_alignment_reachable_p
@@ -1185,12 +1196,8 @@ vector_alignment_reachable_p (struct data_reference *dr)
if (!known_alignment_for_access_p (dr))
{
- tree type = (TREE_TYPE (DR_REF (dr)));
- bool is_packed = contains_packed_reference (DR_REF (dr));
-
- if (compare_tree_int (TYPE_SIZE (type), TYPE_ALIGN (type)) > 0)
- is_packed = true;
-
+ tree type = TREE_TYPE (DR_REF (dr));
+ bool is_packed = not_size_aligned (DR_REF (dr));
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "Unknown misalignment, is_packed = %d",is_packed);
if (targetm.vectorize.vector_alignment_reachable (type, is_packed))
@@ -1208,7 +1215,8 @@ vector_alignment_reachable_p (struct data_reference *dr)
static void
vect_get_data_access_cost (struct data_reference *dr,
unsigned int *inside_cost,
- unsigned int *outside_cost)
+ unsigned int *outside_cost,
+ stmt_vector_for_cost *body_cost_vec)
{
gimple stmt = DR_STMT (dr);
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
@@ -1218,9 +1226,10 @@ vect_get_data_access_cost (struct data_reference *dr,
int ncopies = vf / nunits;
if (DR_IS_READ (dr))
- vect_get_load_cost (dr, ncopies, true, inside_cost, outside_cost);
+ vect_get_load_cost (dr, ncopies, true, inside_cost, outside_cost,
+ NULL, body_cost_vec, false);
else
- vect_get_store_cost (dr, ncopies, inside_cost);
+ vect_get_store_cost (dr, ncopies, inside_cost, body_cost_vec);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_get_data_access_cost: inside_cost = %d, "
@@ -1317,6 +1326,12 @@ vect_peeling_hash_get_lowest_cost (void **slot, void *data)
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
VEC (data_reference_p, heap) *datarefs = LOOP_VINFO_DATAREFS (loop_vinfo);
struct data_reference *dr;
+ stmt_vector_for_cost prologue_cost_vec, body_cost_vec, epilogue_cost_vec;
+ int single_iter_cost;
+
+ prologue_cost_vec = VEC_alloc (stmt_info_for_cost, heap, 2);
+ body_cost_vec = VEC_alloc (stmt_info_for_cost, heap, 2);
+ epilogue_cost_vec = VEC_alloc (stmt_info_for_cost, heap, 2);
FOR_EACH_VEC_ELT (data_reference_p, datarefs, i, dr)
{
@@ -1330,21 +1345,36 @@ vect_peeling_hash_get_lowest_cost (void **slot, void *data)
save_misalignment = DR_MISALIGNMENT (dr);
vect_update_misalignment_for_peel (dr, elem->dr, elem->npeel);
- vect_get_data_access_cost (dr, &inside_cost, &outside_cost);
+ vect_get_data_access_cost (dr, &inside_cost, &outside_cost,
+ &body_cost_vec);
SET_DR_MISALIGNMENT (dr, save_misalignment);
}
- outside_cost += vect_get_known_peeling_cost (loop_vinfo, elem->npeel, &dummy,
- vect_get_single_scalar_iteration_cost (loop_vinfo));
+ single_iter_cost = vect_get_single_scalar_iteration_cost (loop_vinfo);
+ outside_cost += vect_get_known_peeling_cost (loop_vinfo, elem->npeel,
+ &dummy, single_iter_cost,
+ &prologue_cost_vec,
+ &epilogue_cost_vec);
+
+ /* Prologue and epilogue costs are added to the target model later.
+ These costs depend only on the scalar iteration cost, the
+ number of peeling iterations finally chosen, and the number of
+ misaligned statements. So discard the information found here. */
+ VEC_free (stmt_info_for_cost, heap, prologue_cost_vec);
+ VEC_free (stmt_info_for_cost, heap, epilogue_cost_vec);
if (inside_cost < min->inside_cost
|| (inside_cost == min->inside_cost && outside_cost < min->outside_cost))
{
min->inside_cost = inside_cost;
min->outside_cost = outside_cost;
+ VEC_free (stmt_info_for_cost, heap, min->body_cost_vec);
+ min->body_cost_vec = body_cost_vec;
min->peel_info.dr = elem->dr;
min->peel_info.npeel = elem->npeel;
}
+ else
+ VEC_free (stmt_info_for_cost, heap, body_cost_vec);
return 1;
}
@@ -1356,11 +1386,13 @@ vect_peeling_hash_get_lowest_cost (void **slot, void *data)
static struct data_reference *
vect_peeling_hash_choose_best_peeling (loop_vec_info loop_vinfo,
- unsigned int *npeel)
+ unsigned int *npeel,
+ stmt_vector_for_cost *body_cost_vec)
{
struct _vect_peel_extended_info res;
res.peel_info.dr = NULL;
+ res.body_cost_vec = NULL;
if (flag_vect_cost_model)
{
@@ -1377,6 +1409,7 @@ vect_peeling_hash_choose_best_peeling (loop_vec_info loop_vinfo,
}
*npeel = res.peel_info.npeel;
+ *body_cost_vec = res.body_cost_vec;
return res.peel_info.dr;
}
@@ -1493,6 +1526,7 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
unsigned possible_npeel_number = 1;
tree vectype;
unsigned int nelements, mis, same_align_drs_max = 0;
+ stmt_vector_for_cost body_cost_vec = NULL;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "=== vect_enhance_data_refs_alignment ===");
@@ -1696,11 +1730,14 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
unsigned int store_inside_cost = 0, store_outside_cost = 0;
unsigned int load_inside_penalty = 0, load_outside_penalty = 0;
unsigned int store_inside_penalty = 0, store_outside_penalty = 0;
+ stmt_vector_for_cost dummy = VEC_alloc (stmt_info_for_cost, heap, 2);
- vect_get_data_access_cost (dr0, &load_inside_cost,
- &load_outside_cost);
+ vect_get_data_access_cost (dr0, &load_inside_cost, &load_outside_cost,
+ &dummy);
vect_get_data_access_cost (first_store, &store_inside_cost,
- &store_outside_cost);
+ &store_outside_cost, &dummy);
+
+ VEC_free (stmt_info_for_cost, heap, dummy);
/* Calculate the penalty for leaving FIRST_STORE unaligned (by
aligning the load DR0). */
@@ -1764,7 +1801,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
gcc_assert (!all_misalignments_unknown);
/* Choose the best peeling from the hash table. */
- dr0 = vect_peeling_hash_choose_best_peeling (loop_vinfo, &npeel);
+ dr0 = vect_peeling_hash_choose_best_peeling (loop_vinfo, &npeel,
+ &body_cost_vec);
if (!dr0 || !npeel)
do_peeling = false;
}
@@ -1843,11 +1881,17 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
if (!stat)
do_peeling = false;
else
- return stat;
+ {
+ VEC_free (stmt_info_for_cost, heap, body_cost_vec);
+ return stat;
+ }
}
if (do_peeling)
{
+ stmt_info_for_cost *si;
+ void *data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
+
/* (1.2) Update the DR_MISALIGNMENT of each data reference DR_i.
If the misalignment of DR_i is identical to that of dr0 then set
DR_MISALIGNMENT (DR_i) to zero. If the misalignment of DR_i and
@@ -1871,12 +1915,28 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "Peeling for alignment will be applied.");
+ /* We've delayed passing the inside-loop peeling costs to the
+ target cost model until we were sure peeling would happen.
+ Do so now. */
+ if (body_cost_vec)
+ {
+ FOR_EACH_VEC_ELT (stmt_info_for_cost, body_cost_vec, i, si)
+ {
+ struct _stmt_vec_info *stmt_info
+ = si->stmt ? vinfo_for_stmt (si->stmt) : NULL;
+ (void) add_stmt_cost (data, si->count, si->kind, stmt_info,
+ si->misalign, vect_body);
+ }
+ VEC_free (stmt_info_for_cost, heap, body_cost_vec);
+ }
+
stat = vect_verify_datarefs_alignment (loop_vinfo, NULL);
gcc_assert (stat);
return stat;
}
}
+ VEC_free (stmt_info_for_cost, heap, body_cost_vec);
/* (2) Versioning to force alignment. */
@@ -3252,6 +3312,8 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
gather = false;
if (!gather)
{
+ STMT_VINFO_DATA_REF (stmt_info) = NULL;
+ free_data_ref (dr);
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
{
fprintf (vect_dump,
@@ -3372,15 +3434,11 @@ vect_get_new_vect_var (tree type, enum vect_var_kind var_kind, const char *name)
if (name)
{
char* tmp = concat (prefix, name, NULL);
- new_vect_var = create_tmp_var (type, tmp);
+ new_vect_var = create_tmp_reg (type, tmp);
free (tmp);
}
else
- new_vect_var = create_tmp_var (type, prefix);
-
- /* Mark vector typed variable as a gimple register variable. */
- if (TREE_CODE (type) == VECTOR_TYPE)
- DECL_GIMPLE_REG_P (new_vect_var) = true;
+ new_vect_var = create_tmp_reg (type, prefix);
return new_vect_var;
}
@@ -3460,7 +3518,6 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
}
data_ref_base_var = create_tmp_var (TREE_TYPE (data_ref_base), "batmp");
- add_referenced_var (data_ref_base_var);
data_ref_base = force_gimple_operand (data_ref_base, &seq, true,
data_ref_base_var);
gimple_seq_add_seq (new_stmt_list, seq);
@@ -3470,7 +3527,6 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
fold_convert (sizetype, base_offset),
fold_convert (sizetype, init));
dest = create_tmp_var (sizetype, "base_off");
- add_referenced_var (dest);
base_offset = force_gimple_operand (base_offset, &seq, true, dest);
gimple_seq_add_seq (new_stmt_list, seq);
@@ -3478,7 +3534,6 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
{
tree tmp = create_tmp_var (sizetype, "offset");
- add_referenced_var (tmp);
offset = fold_build2 (MULT_EXPR, sizetype,
fold_convert (sizetype, offset), step);
base_offset = fold_build2 (PLUS_EXPR, sizetype,
@@ -3508,7 +3563,6 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
vec_stmt = fold_convert (vect_ptr_type, addr_base);
addr_expr = vect_get_new_vect_var (vect_ptr_type, vect_pointer_var,
get_name (base_name));
- add_referenced_var (addr_expr);
vec_stmt = force_gimple_operand (vec_stmt, &seq, false, addr_expr);
gimple_seq_add_seq (new_stmt_list, seq);
@@ -3707,8 +3761,6 @@ vect_create_data_ref_ptr (gimple stmt, tree aggr_type, struct loop *at_loop,
while (orig_stmt);
}
- add_referenced_var (aggr_ptr);
-
/* Note: If the dataref is in an inner-loop nested in LOOP, and we are
vectorizing LOOP (i.e., outer-loop vectorization), we need to create two
def-use update cycles for the pointer: one relative to the outer-loop
@@ -3896,7 +3948,6 @@ bump_vector_ptr (tree dataref_ptr, gimple ptr_incr, gimple_stmt_iterator *gsi,
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info);
tree vectype = STMT_VINFO_VECTYPE (stmt_info);
- tree ptr_var = SSA_NAME_VAR (dataref_ptr);
tree update = TYPE_SIZE_UNIT (vectype);
gimple incr_stmt;
ssa_op_iter iter;
@@ -3906,10 +3957,9 @@ bump_vector_ptr (tree dataref_ptr, gimple ptr_incr, gimple_stmt_iterator *gsi,
if (bump)
update = bump;
- incr_stmt = gimple_build_assign_with_ops (POINTER_PLUS_EXPR, ptr_var,
+ new_dataref_ptr = copy_ssa_name (dataref_ptr, NULL);
+ incr_stmt = gimple_build_assign_with_ops (POINTER_PLUS_EXPR, new_dataref_ptr,
dataref_ptr, update);
- new_dataref_ptr = make_ssa_name (ptr_var, incr_stmt);
- gimple_assign_set_lhs (incr_stmt, new_dataref_ptr);
vect_finish_stmt_generation (stmt, incr_stmt, gsi);
/* Copy the points-to information if it exists. */
@@ -3958,7 +4008,6 @@ vect_create_destination_var (tree scalar_dest, tree vectype)
if (!new_name)
new_name = "var_";
vec_dest = vect_get_new_vect_var (type, kind, new_name);
- add_referenced_var (vec_dest);
return vec_dest;
}
@@ -4087,7 +4136,7 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain,
gimple_stmt_iterator *gsi,
VEC(tree,heap) **result_chain)
{
- tree perm_dest, vect1, vect2, high, low;
+ tree vect1, vect2, high, low;
gimple perm_stmt;
tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
tree perm_mask_low, perm_mask_high;
@@ -4119,10 +4168,7 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain,
/* Create interleaving stmt:
high = VEC_PERM_EXPR <vect1, vect2, {0, nelt, 1, nelt+1, ...}> */
- perm_dest = create_tmp_var (vectype, "vect_inter_high");
- DECL_GIMPLE_REG_P (perm_dest) = 1;
- add_referenced_var (perm_dest);
- high = make_ssa_name (perm_dest, NULL);
+ high = make_temp_ssa_name (vectype, NULL, "vect_inter_high");
perm_stmt
= gimple_build_assign_with_ops3 (VEC_PERM_EXPR, high,
vect1, vect2, perm_mask_high);
@@ -4132,10 +4178,7 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain,
/* Create interleaving stmt:
low = VEC_PERM_EXPR <vect1, vect2, {nelt/2, nelt*3/2, nelt/2+1,
nelt*3/2+1, ...}> */
- perm_dest = create_tmp_var (vectype, "vect_inter_low");
- DECL_GIMPLE_REG_P (perm_dest) = 1;
- add_referenced_var (perm_dest);
- low = make_ssa_name (perm_dest, NULL);
+ low = make_temp_ssa_name (vectype, NULL, "vect_inter_low");
perm_stmt
= gimple_build_assign_with_ops3 (VEC_PERM_EXPR, low,
vect1, vect2, perm_mask_low);
@@ -4316,12 +4359,11 @@ vect_setup_realignment (gimple stmt, gimple_stmt_iterator *gsi,
ptr = vect_create_data_ref_ptr (stmt, vectype, loop_for_initial_load,
NULL_TREE, &init_addr, NULL, &inc,
true, &inv_p);
+ new_temp = copy_ssa_name (ptr, NULL);
new_stmt = gimple_build_assign_with_ops
- (BIT_AND_EXPR, NULL_TREE, ptr,
+ (BIT_AND_EXPR, new_temp, ptr,
build_int_cst (TREE_TYPE (ptr),
-(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
- new_temp = make_ssa_name (SSA_NAME_VAR (ptr), new_stmt);
- gimple_assign_set_lhs (new_stmt, new_temp);
new_bb = gsi_insert_on_edge_immediate (pe, new_stmt);
gcc_assert (!new_bb);
data_ref
@@ -4406,7 +4448,6 @@ vect_setup_realignment (gimple stmt, gimple_stmt_iterator *gsi,
vec_dest = vect_create_destination_var (scalar_dest, vectype);
msq = make_ssa_name (vec_dest, NULL);
phi_stmt = create_phi_node (msq, containing_loop->header);
- SSA_NAME_DEF_STMT (msq) = phi_stmt;
add_phi_arg (phi_stmt, msq_init, pe, UNKNOWN_LOCATION);
return msq;
@@ -4548,7 +4589,7 @@ vect_permute_load_chain (VEC(tree,heap) *dr_chain,
gimple_stmt_iterator *gsi,
VEC(tree,heap) **result_chain)
{
- tree perm_dest, data_ref, first_vect, second_vect;
+ tree data_ref, first_vect, second_vect;
tree perm_mask_even, perm_mask_odd;
gimple perm_stmt;
tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
@@ -4576,33 +4617,19 @@ vect_permute_load_chain (VEC(tree,heap) *dr_chain,
second_vect = VEC_index (tree, dr_chain, j+1);
/* data_ref = permute_even (first_data_ref, second_data_ref); */
- perm_dest = create_tmp_var (vectype, "vect_perm_even");
- DECL_GIMPLE_REG_P (perm_dest) = 1;
- add_referenced_var (perm_dest);
-
- perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, perm_dest,
+ data_ref = make_temp_ssa_name (vectype, NULL, "vect_perm_even");
+ perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, data_ref,
first_vect, second_vect,
perm_mask_even);
-
- data_ref = make_ssa_name (perm_dest, perm_stmt);
- gimple_assign_set_lhs (perm_stmt, data_ref);
vect_finish_stmt_generation (stmt, perm_stmt, gsi);
-
VEC_replace (tree, *result_chain, j/2, data_ref);
/* data_ref = permute_odd (first_data_ref, second_data_ref); */
- perm_dest = create_tmp_var (vectype, "vect_perm_odd");
- DECL_GIMPLE_REG_P (perm_dest) = 1;
- add_referenced_var (perm_dest);
-
- perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, perm_dest,
+ data_ref = make_temp_ssa_name (vectype, NULL, "vect_perm_odd");
+ perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, data_ref,
first_vect, second_vect,
perm_mask_odd);
-
- data_ref = make_ssa_name (perm_dest, perm_stmt);
- gimple_assign_set_lhs (perm_stmt, data_ref);
vect_finish_stmt_generation (stmt, perm_stmt, gsi);
-
VEC_replace (tree, *result_chain, j/2+length/2, data_ref);
}
dr_chain = VEC_copy (tree, heap, *result_chain);
@@ -4849,7 +4876,7 @@ vect_supportable_dr_alignment (struct data_reference *dr,
return dr_explicit_realign_optimized;
}
if (!known_alignment_for_access_p (dr))
- is_packed = contains_packed_reference (DR_REF (dr));
+ is_packed = not_size_aligned (DR_REF (dr));
if (targetm.vectorize.
support_vector_misalignment (mode, type,
@@ -4863,7 +4890,7 @@ vect_supportable_dr_alignment (struct data_reference *dr,
tree type = (TREE_TYPE (DR_REF (dr)));
if (!known_alignment_for_access_p (dr))
- is_packed = contains_packed_reference (DR_REF (dr));
+ is_packed = not_size_aligned (DR_REF (dr));
if (targetm.vectorize.
support_vector_misalignment (mode, type,
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index 8d051015d8b..5b583124cab 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -414,14 +414,14 @@ add_rshift (gimple_stmt_iterator *gsi, tree type, tree op0, int *shiftcnts)
if (scalar_shift)
{
op = optab_for_tree_code (RSHIFT_EXPR, type, optab_scalar);
- if (op != NULL
+ if (op != unknown_optab
&& optab_handler (op, TYPE_MODE (type)) != CODE_FOR_nothing)
return gimplify_build2 (gsi, RSHIFT_EXPR, type, op0,
build_int_cst (NULL_TREE, shiftcnts[0]));
}
op = optab_for_tree_code (RSHIFT_EXPR, type, optab_vector);
- if (op != NULL
+ if (op != unknown_optab
&& optab_handler (op, TYPE_MODE (type)) != CODE_FOR_nothing)
{
tree *vec = XALLOCAVEC (tree, nunits);
@@ -454,16 +454,15 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
int dummy_int;
unsigned int i, unsignedp = TYPE_UNSIGNED (TREE_TYPE (type));
unsigned HOST_WIDE_INT mask = GET_MODE_MASK (TYPE_MODE (TREE_TYPE (type)));
- optab op;
tree *vec;
- unsigned char *sel = NULL;
- tree cur_op, m1, m2, mulcst, perm_mask, wider_type, tem, decl_e, decl_o;
+ tree cur_op, mulcst, tem;
+ optab op;
if (prec > HOST_BITS_PER_WIDE_INT)
return NULL_TREE;
op = optab_for_tree_code (RSHIFT_EXPR, type, optab_vector);
- if (op == NULL
+ if (op == unknown_optab
|| optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
has_vector_shift = false;
@@ -668,9 +667,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
((unsigned HOST_WIDE_INT) 1
<< shifts[i]) - 1);
cst = build_vector (type, vec);
- addend = create_tmp_reg (type, NULL);
- add_referenced_var (addend);
- addend = make_ssa_name (addend, NULL);
+ addend = make_ssa_name (type, NULL);
stmt = gimple_build_assign_with_ops3 (VEC_COND_EXPR, addend,
cond, cst, zero);
gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
@@ -690,7 +687,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
/* t1 = op0 + addend;
q = t1 >> shift; */
op = optab_for_tree_code (PLUS_EXPR, type, optab_default);
- if (op != NULL
+ if (op != unknown_optab
&& optab_handler (op, TYPE_MODE (type)) != CODE_FOR_nothing)
{
cur_op = gimplify_build2 (gsi, PLUS_EXPR, type, op0, addend);
@@ -709,7 +706,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
<< shifts[i]) - 1);
mask = build_vector (type, vec);
op = optab_for_tree_code (BIT_AND_EXPR, type, optab_default);
- if (op != NULL
+ if (op != unknown_optab
&& optab_handler (op, TYPE_MODE (type)) != CODE_FOR_nothing)
{
if (unsignedp)
@@ -721,7 +718,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
t2 = t1 & mask;
r = t2 - addend; */
op = optab_for_tree_code (PLUS_EXPR, type, optab_default);
- if (op != NULL
+ if (op != unknown_optab
&& optab_handler (op, TYPE_MODE (type))
!= CODE_FOR_nothing)
{
@@ -731,7 +728,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
cur_op, mask);
op = optab_for_tree_code (MINUS_EXPR, type,
optab_default);
- if (op != NULL
+ if (op != unknown_optab
&& optab_handler (op, TYPE_MODE (type))
!= CODE_FOR_nothing)
return gimplify_build2 (gsi, MINUS_EXPR, type,
@@ -745,54 +742,8 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
if (mode == -2 || BYTES_BIG_ENDIAN != WORDS_BIG_ENDIAN)
return NULL_TREE;
- op = optab_for_tree_code (MULT_HIGHPART_EXPR, type, optab_default);
- if (op != NULL && optab_handler (op, TYPE_MODE (type)) != CODE_FOR_nothing)
- wider_type = decl_e = decl_o = NULL_TREE;
- else
- {
- wider_type = build_nonstandard_integer_type (prec * 2, unsignedp),
- wider_type = build_vector_type (wider_type, nunits / 2);
- if (GET_MODE_CLASS (TYPE_MODE (wider_type)) != MODE_VECTOR_INT
- || GET_MODE_BITSIZE (TYPE_MODE (wider_type))
- != GET_MODE_BITSIZE (TYPE_MODE (type)))
- return NULL_TREE;
-
- sel = XALLOCAVEC (unsigned char, nunits);
-
- if (targetm.vectorize.builtin_mul_widen_even
- && targetm.vectorize.builtin_mul_widen_odd
- && (decl_e = targetm.vectorize.builtin_mul_widen_even (type))
- && (decl_o = targetm.vectorize.builtin_mul_widen_odd (type))
- && (TYPE_MODE (TREE_TYPE (TREE_TYPE (decl_e)))
- == TYPE_MODE (wider_type)))
- {
- for (i = 0; i < nunits; i++)
- sel[i] = !BYTES_BIG_ENDIAN + (i & ~1) + ((i & 1) ? nunits : 0);
- if (!can_vec_perm_p (TYPE_MODE (type), false, sel))
- decl_e = decl_o = NULL_TREE;
- }
- else
- decl_e = decl_o = NULL_TREE;
-
- if (decl_e == NULL_TREE)
- {
- op = optab_for_tree_code (VEC_WIDEN_MULT_LO_EXPR,
- type, optab_default);
- if (op == NULL
- || optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
- return NULL_TREE;
- op = optab_for_tree_code (VEC_WIDEN_MULT_HI_EXPR,
- type, optab_default);
- if (op == NULL
- || optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
- return NULL_TREE;
-
- for (i = 0; i < nunits; i++)
- sel[i] = 2 * i + (BYTES_BIG_ENDIAN ? 0 : 1);
- if (!can_vec_perm_p (TYPE_MODE (type), false, sel))
- return NULL_TREE;
- }
- }
+ if (!can_mult_highpart_p (TYPE_MODE (type), TYPE_UNSIGNED (type)))
+ return NULL_TREE;
cur_op = op0;
@@ -830,46 +781,8 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
for (i = 0; i < nunits; i++)
vec[i] = build_int_cst (TREE_TYPE (type), mulc[i]);
mulcst = build_vector (type, vec);
- if (wider_type == NULL_TREE)
- cur_op = gimplify_build2 (gsi, MULT_HIGHPART_EXPR, type, cur_op, mulcst);
- else
- {
- for (i = 0; i < nunits; i++)
- vec[i] = build_int_cst (TREE_TYPE (type), sel[i]);
- perm_mask = build_vector (type, vec);
- if (decl_e != NULL_TREE)
- {
- gimple call;
-
- call = gimple_build_call (decl_e, 2, cur_op, mulcst);
- m1 = create_tmp_reg (wider_type, NULL);
- add_referenced_var (m1);
- m1 = make_ssa_name (m1, call);
- gimple_call_set_lhs (call, m1);
- gsi_insert_seq_before (gsi, call, GSI_SAME_STMT);
-
- call = gimple_build_call (decl_o, 2, cur_op, mulcst);
- m2 = create_tmp_reg (wider_type, NULL);
- add_referenced_var (m2);
- m2 = make_ssa_name (m2, call);
- gimple_call_set_lhs (call, m2);
- gsi_insert_seq_before (gsi, call, GSI_SAME_STMT);
- }
- else
- {
- m1 = gimplify_build2 (gsi, BYTES_BIG_ENDIAN ? VEC_WIDEN_MULT_HI_EXPR
- : VEC_WIDEN_MULT_LO_EXPR,
- wider_type, cur_op, mulcst);
- m2 = gimplify_build2 (gsi, BYTES_BIG_ENDIAN ? VEC_WIDEN_MULT_LO_EXPR
- : VEC_WIDEN_MULT_HI_EXPR,
- wider_type, cur_op, mulcst);
- }
-
- m1 = gimplify_build1 (gsi, VIEW_CONVERT_EXPR, type, m1);
- m2 = gimplify_build1 (gsi, VIEW_CONVERT_EXPR, type, m2);
- cur_op = gimplify_build3 (gsi, VEC_PERM_EXPR, type, m1, m2, perm_mask);
- }
+ cur_op = gimplify_build2 (gsi, MULT_HIGHPART_EXPR, type, cur_op, mulcst);
switch (mode)
{
@@ -886,13 +799,13 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
t4 = t1 + t3;
q = t4 >> (post_shift - 1); */
op = optab_for_tree_code (MINUS_EXPR, type, optab_default);
- if (op == NULL
+ if (op == unknown_optab
|| optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
return NULL_TREE;
tem = gimplify_build2 (gsi, MINUS_EXPR, type, op0, cur_op);
tem = add_rshift (gsi, type, tem, shift_temps);
op = optab_for_tree_code (PLUS_EXPR, type, optab_default);
- if (op == NULL
+ if (op == unknown_optab
|| optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
return NULL_TREE;
tem = gimplify_build2 (gsi, PLUS_EXPR, type, cur_op, tem);
@@ -914,7 +827,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
if ((mode & 2) == 0)
{
op = optab_for_tree_code (PLUS_EXPR, type, optab_default);
- if (op == NULL
+ if (op == unknown_optab
|| optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
return NULL_TREE;
cur_op = gimplify_build2 (gsi, PLUS_EXPR, type, cur_op, op0);
@@ -926,7 +839,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
if (tem == NULL_TREE)
return NULL_TREE;
op = optab_for_tree_code (MINUS_EXPR, type, optab_default);
- if (op == NULL
+ if (op == unknown_optab
|| optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
return NULL_TREE;
if ((mode & 1) == 0)
@@ -945,12 +858,12 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
t1 = q * oprnd1;
r = oprnd0 - t1; */
op = optab_for_tree_code (MULT_EXPR, type, optab_default);
- if (op == NULL
+ if (op == unknown_optab
|| optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
return NULL_TREE;
tem = gimplify_build2 (gsi, MULT_EXPR, type, cur_op, op1);
op = optab_for_tree_code (MINUS_EXPR, type, optab_default);
- if (op == NULL
+ if (op == unknown_optab
|| optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing)
return NULL_TREE;
return gimplify_build2 (gsi, MINUS_EXPR, type, op0, tem);
@@ -1320,7 +1233,7 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
tree lhs, rhs1, rhs2 = NULL, type, compute_type;
enum tree_code code;
enum machine_mode compute_mode;
- optab op = NULL;
+ optab op = unknown_optab;
enum gimple_rhs_class rhs_class;
tree new_rhs;
@@ -1361,6 +1274,23 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
|| code == VEC_UNPACK_FLOAT_LO_EXPR)
type = TREE_TYPE (rhs1);
+ /* For widening/narrowing vector operations, the relevant type is of the
+ arguments, not the widened result. VEC_UNPACK_FLOAT_*_EXPR is
+ calculated in the same way above. */
+ if (code == WIDEN_SUM_EXPR
+ || code == VEC_WIDEN_MULT_HI_EXPR
+ || code == VEC_WIDEN_MULT_LO_EXPR
+ || code == VEC_WIDEN_MULT_EVEN_EXPR
+ || code == VEC_WIDEN_MULT_ODD_EXPR
+ || code == VEC_UNPACK_HI_EXPR
+ || code == VEC_UNPACK_LO_EXPR
+ || code == VEC_PACK_TRUNC_EXPR
+ || code == VEC_PACK_SAT_EXPR
+ || code == VEC_PACK_FIX_TRUNC_EXPR
+ || code == VEC_WIDEN_LSHIFT_HI_EXPR
+ || code == VEC_WIDEN_LSHIFT_LO_EXPR)
+ type = TREE_TYPE (rhs1);
+
/* Choose between vector shift/rotate by vector and vector shift/rotate by
scalar */
if (code == LSHIFT_EXPR
@@ -1409,25 +1339,10 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
else
op = optab_for_tree_code (code, type, optab_default);
- /* For widening/narrowing vector operations, the relevant type is of the
- arguments, not the widened result. VEC_UNPACK_FLOAT_*_EXPR is
- calculated in the same way above. */
- if (code == WIDEN_SUM_EXPR
- || code == VEC_WIDEN_MULT_HI_EXPR
- || code == VEC_WIDEN_MULT_LO_EXPR
- || code == VEC_UNPACK_HI_EXPR
- || code == VEC_UNPACK_LO_EXPR
- || code == VEC_PACK_TRUNC_EXPR
- || code == VEC_PACK_SAT_EXPR
- || code == VEC_PACK_FIX_TRUNC_EXPR
- || code == VEC_WIDEN_LSHIFT_HI_EXPR
- || code == VEC_WIDEN_LSHIFT_LO_EXPR)
- type = TREE_TYPE (rhs1);
-
/* Optabs will try converting a negation into a subtraction, so
look for it as well. TODO: negation of floating-point vectors
might be turned into an exclusive OR toggling the sign bit. */
- if (op == NULL
+ if (op == unknown_optab
&& code == NEGATE_EXPR
&& INTEGRAL_TYPE_P (TREE_TYPE (type)))
op = optab_for_tree_code (MINUS_EXPR, type, optab_default);
@@ -1452,13 +1367,17 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
if (compute_type == type)
{
compute_mode = TYPE_MODE (compute_type);
- if (VECTOR_MODE_P (compute_mode)
- && op != NULL
- && optab_handler (op, compute_mode) != CODE_FOR_nothing)
- return;
- else
- /* There is no operation in hardware, so fall back to scalars. */
- compute_type = TREE_TYPE (type);
+ if (VECTOR_MODE_P (compute_mode))
+ {
+ if (op && optab_handler (op, compute_mode) != CODE_FOR_nothing)
+ return;
+ if (code == MULT_HIGHPART_EXPR
+ && can_mult_highpart_p (compute_mode,
+ TYPE_UNSIGNED (compute_type)))
+ return;
+ }
+ /* There is no operation in hardware, so fall back to scalars. */
+ compute_type = TREE_TYPE (type);
}
gcc_assert (code != VEC_LSHIFT_EXPR && code != VEC_RSHIFT_EXPR);
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index 9ac0d9a04eb..4df4800ab58 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -27,10 +27,9 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "tree.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "tree-pass.h"
#include "cfgloop.h"
#include "diagnostic-core.h"
#include "tree-scalar-evolution.h"
@@ -189,7 +188,7 @@ adjust_vec_debug_stmts (void)
while (!VEC_empty (adjust_info, adjust_vec))
{
- adjust_debug_stmts_now (VEC_last (adjust_info, adjust_vec));
+ adjust_debug_stmts_now (&VEC_last (adjust_info, adjust_vec));
VEC_pop (adjust_info, adjust_vec);
}
@@ -206,8 +205,9 @@ adjust_debug_stmts (tree from, tree to, basic_block bb)
{
adjust_info ai;
- if (MAY_HAVE_DEBUG_STMTS && TREE_CODE (from) == SSA_NAME
- && SSA_NAME_VAR (from) != gimple_vop (cfun))
+ if (MAY_HAVE_DEBUG_STMTS
+ && TREE_CODE (from) == SSA_NAME
+ && ! virtual_operand_p (from))
{
ai.from = from;
ai.to = to;
@@ -512,14 +512,15 @@ slpeel_update_phi_nodes_for_guard1 (edge guard_edge, struct loop *loop,
gsi_next (&gsi_orig), gsi_next (&gsi_update))
{
source_location loop_locus, guard_locus;
+ tree new_res;
orig_phi = gsi_stmt (gsi_orig);
update_phi = gsi_stmt (gsi_update);
/** 1. Handle new-merge-point phis **/
/* 1.1. Generate new phi node in NEW_MERGE_BB: */
- new_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (orig_phi)),
- new_merge_bb);
+ new_res = copy_ssa_name (PHI_RESULT (orig_phi), NULL);
+ new_phi = create_phi_node (new_res, new_merge_bb);
/* 1.2. NEW_MERGE_BB has two incoming edges: GUARD_EDGE and the exit-edge
of LOOP. Set the two phi args in NEW_PHI for these edges: */
@@ -544,12 +545,12 @@ slpeel_update_phi_nodes_for_guard1 (edge guard_edge, struct loop *loop,
/** 2. Handle loop-closed-ssa-form phis **/
- if (!is_gimple_reg (PHI_RESULT (orig_phi)))
+ if (virtual_operand_p (PHI_RESULT (orig_phi)))
continue;
/* 2.1. Generate new phi node in NEW_EXIT_BB: */
- new_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (orig_phi)),
- *new_exit_bb);
+ new_res = copy_ssa_name (PHI_RESULT (orig_phi), NULL);
+ new_phi = create_phi_node (new_res, *new_exit_bb);
/* 2.2. NEW_EXIT_BB has one incoming edge: the exit-edge of the loop. */
add_phi_arg (new_phi, loop_arg, single_exit (loop), loop_locus);
@@ -637,6 +638,7 @@ slpeel_update_phi_nodes_for_guard2 (edge guard_edge, struct loop *loop,
for (gsi = gsi_start_phis (update_bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
+ tree new_res;
update_phi = gsi_stmt (gsi);
orig_phi = update_phi;
orig_def = PHI_ARG_DEF_FROM_EDGE (orig_phi, e);
@@ -650,8 +652,8 @@ slpeel_update_phi_nodes_for_guard2 (edge guard_edge, struct loop *loop,
/** 1. Handle new-merge-point phis **/
/* 1.1. Generate new phi node in NEW_MERGE_BB: */
- new_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (orig_phi)),
- new_merge_bb);
+ new_res = copy_ssa_name (PHI_RESULT (orig_phi), NULL);
+ new_phi = create_phi_node (new_res, new_merge_bb);
/* 1.2. NEW_MERGE_BB has two incoming edges: GUARD_EDGE and the exit-edge
of LOOP. Set the two PHI args in NEW_PHI for these edges: */
@@ -692,8 +694,8 @@ slpeel_update_phi_nodes_for_guard2 (edge guard_edge, struct loop *loop,
/** 2. Handle loop-closed-ssa-form phis **/
/* 2.1. Generate new phi node in NEW_EXIT_BB: */
- new_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (orig_phi)),
- *new_exit_bb);
+ new_res = copy_ssa_name (PHI_RESULT (orig_phi), NULL);
+ new_phi = create_phi_node (new_res, *new_exit_bb);
/* 2.2. NEW_EXIT_BB has one incoming edge: the exit-edge of the loop. */
add_phi_arg (new_phi, loop_arg, single_exit (loop), UNKNOWN_LOCATION);
@@ -727,8 +729,8 @@ slpeel_update_phi_nodes_for_guard2 (edge guard_edge, struct loop *loop,
arg = guard_arg;
/* 3.2. Generate new phi node in GUARD_BB: */
- new_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (orig_phi)),
- guard_edge->src);
+ new_res = copy_ssa_name (PHI_RESULT (orig_phi), NULL);
+ new_phi = create_phi_node (new_res, guard_edge->src);
/* 3.3. GUARD_BB has one incoming edge: */
gcc_assert (EDGE_COUNT (guard_edge->src->preds) == 1);
@@ -786,6 +788,7 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters)
/* Remove old loop exit test: */
gsi_remove (&loop_cond_gsi, true);
+ free_stmt_vec_info (orig_cond);
loop_loc = find_loop_location (loop);
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -1079,7 +1082,6 @@ set_prologue_iterations (basic_block bb_before_first_loop,
var = create_tmp_var (TREE_TYPE (scalar_loop_iters),
"prologue_after_cost_adjust");
- add_referenced_var (var);
prologue_after_cost_adjust_name =
force_gimple_operand (scalar_loop_iters, &stmts, false, var);
@@ -1175,22 +1177,20 @@ slpeel_tree_peel_loop_to_edge (struct loop *loop,
in the same form). Doing this early simplifies the checking what
uses should be renamed. */
for (gsi = gsi_start_phis (loop->header); !gsi_end_p (gsi); gsi_next (&gsi))
- if (!is_gimple_reg (gimple_phi_result (gsi_stmt (gsi))))
+ if (virtual_operand_p (gimple_phi_result (gsi_stmt (gsi))))
{
gimple phi = gsi_stmt (gsi);
for (gsi = gsi_start_phis (exit_e->dest);
!gsi_end_p (gsi); gsi_next (&gsi))
- if (!is_gimple_reg (gimple_phi_result (gsi_stmt (gsi))))
+ if (virtual_operand_p (gimple_phi_result (gsi_stmt (gsi))))
break;
if (gsi_end_p (gsi))
{
- gimple new_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (phi)),
- exit_e->dest);
+ tree new_vop = copy_ssa_name (PHI_RESULT (phi), NULL);
+ gimple new_phi = create_phi_node (new_vop, exit_e->dest);
tree vop = PHI_ARG_DEF_FROM_EDGE (phi, EDGE_SUCC (loop->latch, 0));
imm_use_iterator imm_iter;
gimple stmt;
- tree new_vop = make_ssa_name (SSA_NAME_VAR (PHI_RESULT (phi)),
- new_phi);
use_operand_p use_p;
add_phi_arg (new_phi, vop, exit_e, UNKNOWN_LOCATION);
@@ -1492,7 +1492,6 @@ vect_build_loop_niters (loop_vec_info loop_vinfo, gimple_seq seq)
tree ni = unshare_expr (LOOP_VINFO_NITERS (loop_vinfo));
var = create_tmp_var (TREE_TYPE (ni), "niters");
- add_referenced_var (var);
ni_name = force_gimple_operand (ni, &stmts, false, var);
pe = loop_preheader_edge (loop);
@@ -1559,7 +1558,6 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vinfo,
if (!is_gimple_val (ni_minus_gap_name))
{
var = create_tmp_var (TREE_TYPE (ni), "ni_gap");
- add_referenced_var (var);
stmts = NULL;
ni_minus_gap_name = force_gimple_operand (ni_minus_gap_name, &stmts,
@@ -1584,7 +1582,6 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vinfo,
if (!is_gimple_val (ratio_name))
{
var = create_tmp_var (TREE_TYPE (ni), "bnd");
- add_referenced_var (var);
stmts = NULL;
ratio_name = force_gimple_operand (ratio_name, &stmts, true, var);
@@ -1605,7 +1602,6 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vinfo,
if (!is_gimple_val (ratio_mult_vf_name))
{
var = create_tmp_var (TREE_TYPE (ni), "ratio_mult_vf");
- add_referenced_var (var);
stmts = NULL;
ratio_mult_vf_name = force_gimple_operand (ratio_mult_vf_name, &stmts,
@@ -1664,7 +1660,7 @@ vect_can_advance_ivs_p (loop_vec_info loop_vinfo)
/* Skip virtual phi's. The data dependences that are associated with
virtual defs/uses (i.e., memory accesses) are analyzed elsewhere. */
- if (!is_gimple_reg (SSA_NAME_VAR (PHI_RESULT (phi))))
+ if (virtual_operand_p (PHI_RESULT (phi)))
{
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "virtual phi. skip.");
@@ -1794,7 +1790,7 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
}
/* Skip virtual phi's. */
- if (!is_gimple_reg (SSA_NAME_VAR (PHI_RESULT (phi))))
+ if (virtual_operand_p (PHI_RESULT (phi)))
{
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "virtual phi. skip.");
@@ -1830,7 +1826,6 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
init_expr, fold_convert (type, off));
var = create_tmp_var (type, "tmp");
- add_referenced_var (var);
last_gsi = gsi_last_bb (exit_bb);
ni_name = force_gimple_operand_gsi (&last_gsi, ni, false, var,
@@ -1938,7 +1933,7 @@ vect_do_peeling_for_loop_bound (loop_vec_info loop_vinfo, tree *ratio,
If the misalignment of DR is known at compile time:
addr_mis = int mis = DR_MISALIGNMENT (dr);
Else, compute address misalignment in bytes:
- addr_mis = addr & (vectype_size - 1)
+ addr_mis = addr & (vectype_align - 1)
prolog_niters = min (LOOP_NITERS, ((VF - addr_mis/elem_size)&(VF-1))/step)
@@ -1992,9 +1987,10 @@ vect_gen_niters_for_prolog_loop (loop_vec_info loop_vinfo, tree loop_niters)
tree start_addr = vect_create_addr_base_for_vector_ref (dr_stmt,
&new_stmts, offset, loop);
tree type = unsigned_type_for (TREE_TYPE (start_addr));
- tree vectype_size_minus_1 = build_int_cst (type, vectype_align - 1);
- tree elem_size_log =
- build_int_cst (type, exact_log2 (vectype_align/nelements));
+ tree vectype_align_minus_1 = build_int_cst (type, vectype_align - 1);
+ HOST_WIDE_INT elem_size =
+ int_cst_value (TYPE_SIZE_UNIT (TREE_TYPE (vectype)));
+ tree elem_size_log = build_int_cst (type, exact_log2 (elem_size));
tree nelements_minus_1 = build_int_cst (type, nelements - 1);
tree nelements_tree = build_int_cst (type, nelements);
tree byte_misalign;
@@ -2003,10 +1999,10 @@ vect_gen_niters_for_prolog_loop (loop_vec_info loop_vinfo, tree loop_niters)
new_bb = gsi_insert_seq_on_edge_immediate (pe, new_stmts);
gcc_assert (!new_bb);
- /* Create: byte_misalign = addr & (vectype_size - 1) */
+ /* Create: byte_misalign = addr & (vectype_align - 1) */
byte_misalign =
fold_build2 (BIT_AND_EXPR, type, fold_convert (type, start_addr),
- vectype_size_minus_1);
+ vectype_align_minus_1);
/* Create: elem_misalign = byte_misalign / element_size */
elem_misalign =
@@ -2035,7 +2031,6 @@ vect_gen_niters_for_prolog_loop (loop_vec_info loop_vinfo, tree loop_niters)
}
var = create_tmp_var (niters_type, "prolog_loop_niters");
- add_referenced_var (var);
stmts = NULL;
iters_name = force_gimple_operand (iters, &stmts, false, var);
@@ -2153,7 +2148,6 @@ vect_do_peeling_for_alignment (loop_vec_info loop_vinfo,
edge pe = loop_preheader_edge (loop);
tree wide_iters = fold_convert (sizetype, niters_of_prolog_loop);
tree var = create_tmp_var (sizetype, "prolog_loop_adjusted_niters");
- add_referenced_var (var);
wide_prolog_niters = force_gimple_operand (wide_iters, &seq, false,
var);
if (seq)
@@ -2214,7 +2208,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
tree int_ptrsize_type;
char tmp_name[20];
tree or_tmp_name = NULL_TREE;
- tree and_tmp, and_tmp_name;
+ tree and_tmp_name;
gimple and_stmt;
tree ptrsize_zero;
tree part_cond_expr;
@@ -2232,8 +2226,8 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
{
gimple_seq new_stmt_list = NULL;
tree addr_base;
- tree addr_tmp, addr_tmp_name;
- tree or_tmp, new_or_tmp_name;
+ tree addr_tmp_name;
+ tree new_or_tmp_name;
gimple addr_stmt, or_stmt;
stmt_vec_info stmt_vinfo = vinfo_for_stmt (ref_stmt);
tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
@@ -2249,13 +2243,10 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
if (new_stmt_list != NULL)
gimple_seq_add_seq (cond_expr_stmt_list, new_stmt_list);
- sprintf (tmp_name, "%s%d", "addr2int", i);
- addr_tmp = create_tmp_var (int_ptrsize_type, tmp_name);
- add_referenced_var (addr_tmp);
- addr_tmp_name = make_ssa_name (addr_tmp, NULL);
+ sprintf (tmp_name, "addr2int%d", i);
+ addr_tmp_name = make_temp_ssa_name (int_ptrsize_type, NULL, tmp_name);
addr_stmt = gimple_build_assign_with_ops (NOP_EXPR, addr_tmp_name,
addr_base, NULL_TREE);
- SSA_NAME_DEF_STMT (addr_tmp_name) = addr_stmt;
gimple_seq_add_stmt (cond_expr_stmt_list, addr_stmt);
/* The addresses are OR together. */
@@ -2263,14 +2254,11 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
if (or_tmp_name != NULL_TREE)
{
/* create: or_tmp = or_tmp | addr_tmp */
- sprintf (tmp_name, "%s%d", "orptrs", i);
- or_tmp = create_tmp_var (int_ptrsize_type, tmp_name);
- add_referenced_var (or_tmp);
- new_or_tmp_name = make_ssa_name (or_tmp, NULL);
+ sprintf (tmp_name, "orptrs%d", i);
+ new_or_tmp_name = make_temp_ssa_name (int_ptrsize_type, NULL, tmp_name);
or_stmt = gimple_build_assign_with_ops (BIT_IOR_EXPR,
new_or_tmp_name,
or_tmp_name, addr_tmp_name);
- SSA_NAME_DEF_STMT (new_or_tmp_name) = or_stmt;
gimple_seq_add_stmt (cond_expr_stmt_list, or_stmt);
or_tmp_name = new_or_tmp_name;
}
@@ -2282,13 +2270,10 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
mask_cst = build_int_cst (int_ptrsize_type, mask);
/* create: and_tmp = or_tmp & mask */
- and_tmp = create_tmp_var (int_ptrsize_type, "andmask" );
- add_referenced_var (and_tmp);
- and_tmp_name = make_ssa_name (and_tmp, NULL);
+ and_tmp_name = make_temp_ssa_name (int_ptrsize_type, NULL, "andmask");
and_stmt = gimple_build_assign_with_ops (BIT_AND_EXPR, and_tmp_name,
or_tmp_name, mask_cst);
- SSA_NAME_DEF_STMT (and_tmp_name) = and_stmt;
gimple_seq_add_stmt (cond_expr_stmt_list, and_stmt);
/* Make and_tmp the left operand of the conditional test against zero.
@@ -2546,9 +2531,10 @@ vect_loop_versioning (loop_vec_info loop_vinfo,
for (gsi = gsi_start_phis (merge_bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
+ tree new_res;
orig_phi = gsi_stmt (gsi);
- new_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (orig_phi)),
- new_exit_bb);
+ new_res = copy_ssa_name (PHI_RESULT (orig_phi), NULL);
+ new_phi = create_phi_node (new_res, new_exit_bb);
arg = PHI_ARG_DEF_FROM_EDGE (orig_phi, e);
add_phi_arg (new_phi, arg, new_exit_e,
gimple_phi_arg_location_from_edge (orig_phi, e));
@@ -2565,4 +2551,3 @@ vect_loop_versioning (loop_vec_info loop_vinfo,
GSI_SAME_STMT);
}
}
-
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 55046e48b5a..728bc0f09c3 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -27,10 +27,9 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "tree.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "tree-pass.h"
#include "cfgloop.h"
#include "expr.h"
#include "recog.h"
@@ -556,7 +555,7 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
/* Skip virtual phi's. The data dependences that are associated with
virtual defs/uses (i.e., memory accesses) are analyzed elsewhere. */
- if (!is_gimple_reg (SSA_NAME_VAR (def)))
+ if (virtual_operand_p (def))
continue;
STMT_VINFO_DEF_TYPE (stmt_vinfo) = vect_unknown_def_type;
@@ -605,8 +604,8 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
print_gimple_stmt (vect_dump, phi, 0, TDF_SLIM);
}
- gcc_assert (is_gimple_reg (SSA_NAME_VAR (def)));
- gcc_assert (STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_unknown_def_type);
+ gcc_assert (!virtual_operand_p (def)
+ && STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_unknown_def_type);
nested_cycle = (loop != LOOP_VINFO_LOOP (loop_vinfo));
reduc_stmt = vect_force_simple_reduction (loop_vinfo, phi, !nested_cycle,
@@ -852,7 +851,9 @@ new_loop_vec_info (struct loop *loop)
LOOP_VINFO_SLP_INSTANCES (res) = VEC_alloc (slp_instance, heap, 10);
LOOP_VINFO_SLP_UNROLLING_FACTOR (res) = 1;
LOOP_VINFO_PEELING_HTAB (res) = NULL;
+ LOOP_VINFO_TARGET_COST_DATA (res) = init_cost (loop);
LOOP_VINFO_PEELING_FOR_GAPS (res) = false;
+ LOOP_VINFO_OPERANDS_SWAPPED (res) = false;
return res;
}
@@ -873,6 +874,7 @@ destroy_loop_vec_info (loop_vec_info loop_vinfo, bool clean_stmts)
int j;
VEC (slp_instance, heap) *slp_instances;
slp_instance instance;
+ bool swapped;
if (!loop_vinfo)
return;
@@ -881,6 +883,7 @@ destroy_loop_vec_info (loop_vec_info loop_vinfo, bool clean_stmts)
bbs = LOOP_VINFO_BBS (loop_vinfo);
nbbs = loop->num_nodes;
+ swapped = LOOP_VINFO_OPERANDS_SWAPPED (loop_vinfo);
if (!clean_stmts)
{
@@ -905,6 +908,22 @@ destroy_loop_vec_info (loop_vec_info loop_vinfo, bool clean_stmts)
for (si = gsi_start_bb (bb); !gsi_end_p (si); )
{
gimple stmt = gsi_stmt (si);
+
+ /* We may have broken canonical form by moving a constant
+ into RHS1 of a commutative op. Fix such occurrences. */
+ if (swapped && is_gimple_assign (stmt))
+ {
+ enum tree_code code = gimple_assign_rhs_code (stmt);
+
+ if ((code == PLUS_EXPR
+ || code == POINTER_PLUS_EXPR
+ || code == MULT_EXPR)
+ && CONSTANT_CLASS_P (gimple_assign_rhs1 (stmt)))
+ swap_tree_operands (stmt,
+ gimple_assign_rhs1_ptr (stmt),
+ gimple_assign_rhs2_ptr (stmt));
+ }
+
/* Free stmt_vec_info. */
free_stmt_vec_info (stmt);
gsi_next (&si);
@@ -929,6 +948,8 @@ destroy_loop_vec_info (loop_vec_info loop_vinfo, bool clean_stmts)
if (LOOP_VINFO_PEELING_HTAB (loop_vinfo))
htab_delete (LOOP_VINFO_PEELING_HTAB (loop_vinfo));
+ destroy_cost_data (LOOP_VINFO_TARGET_COST_DATA (loop_vinfo));
+
free (loop_vinfo);
loop->aux = NULL;
}
@@ -1362,7 +1383,7 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp)
"not vectorized: relevant phi not supported: ");
print_gimple_stmt (vect_dump, phi, 0, TDF_SLIM);
}
- return false;
+ return false;
}
}
@@ -1918,6 +1939,9 @@ vect_is_slp_reduction (loop_vec_info loop_info, gimple phi, gimple first_stmt)
gimple_assign_rhs1_ptr (next_stmt),
gimple_assign_rhs2_ptr (next_stmt));
update_stmt (next_stmt);
+
+ if (CONSTANT_CLASS_P (gimple_assign_rhs1 (next_stmt)))
+ LOOP_VINFO_OPERANDS_SWAPPED (loop_info) = true;
}
else
return false;
@@ -2246,7 +2270,7 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi,
if (orig_code == MINUS_EXPR)
{
tree rhs = gimple_assign_rhs2 (def_stmt);
- tree negrhs = make_ssa_name (SSA_NAME_VAR (rhs), NULL);
+ tree negrhs = copy_ssa_name (rhs, NULL);
gimple negate_stmt = gimple_build_assign_with_ops (NEGATE_EXPR, negrhs,
rhs, NULL);
gimple_stmt_iterator gsi = gsi_for_stmt (def_stmt);
@@ -2322,6 +2346,9 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi,
swap_tree_operands (def_stmt, gimple_assign_rhs1_ptr (def_stmt),
gimple_assign_rhs2_ptr (def_stmt));
+
+ if (CONSTANT_CLASS_P (gimple_assign_rhs1 (def_stmt)))
+ LOOP_VINFO_OPERANDS_SWAPPED (loop_info) = true;
}
else
{
@@ -2438,9 +2465,11 @@ vect_get_single_scalar_iteration_cost (loop_vec_info loop_vinfo)
int
vect_get_known_peeling_cost (loop_vec_info loop_vinfo, int peel_iters_prologue,
int *peel_iters_epilogue,
- int scalar_single_iter_cost)
+ int scalar_single_iter_cost,
+ stmt_vector_for_cost *prologue_cost_vec,
+ stmt_vector_for_cost *epilogue_cost_vec)
{
- int peel_guard_costs = 0;
+ int retval = 0;
int vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo))
@@ -2453,7 +2482,8 @@ vect_get_known_peeling_cost (loop_vec_info loop_vinfo, int peel_iters_prologue,
/* If peeled iterations are known but number of scalar loop
iterations are unknown, count a taken branch per peeled loop. */
- peel_guard_costs = 2 * vect_get_stmt_cost (cond_branch_taken);
+ retval = record_stmt_cost (prologue_cost_vec, 2, cond_branch_taken,
+ NULL, 0, vect_prologue);
}
else
{
@@ -2467,9 +2497,15 @@ vect_get_known_peeling_cost (loop_vec_info loop_vinfo, int peel_iters_prologue,
*peel_iters_epilogue = vf;
}
- return (peel_iters_prologue * scalar_single_iter_cost)
- + (*peel_iters_epilogue * scalar_single_iter_cost)
- + peel_guard_costs;
+ if (peel_iters_prologue)
+ retval += record_stmt_cost (prologue_cost_vec,
+ peel_iters_prologue * scalar_single_iter_cost,
+ scalar_stmt, NULL, 0, vect_prologue);
+ if (*peel_iters_epilogue)
+ retval += record_stmt_cost (epilogue_cost_vec,
+ *peel_iters_epilogue * scalar_single_iter_cost,
+ scalar_stmt, NULL, 0, vect_epilogue);
+ return retval;
}
/* Function vect_estimate_min_profitable_iters
@@ -2484,23 +2520,18 @@ vect_get_known_peeling_cost (loop_vec_info loop_vinfo, int peel_iters_prologue,
int
vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
{
- int i;
int min_profitable_iters;
int peel_iters_prologue;
int peel_iters_epilogue;
- int vec_inside_cost = 0;
+ unsigned vec_inside_cost = 0;
int vec_outside_cost = 0;
+ unsigned vec_prologue_cost = 0;
+ unsigned vec_epilogue_cost = 0;
int scalar_single_iter_cost = 0;
int scalar_outside_cost = 0;
int vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
- struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
- basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo);
- int nbbs = loop->num_nodes;
int npeel = LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo);
- int peel_guard_costs = 0;
- int innerloop_iters = 0, factor;
- VEC (slp_instance, heap) *slp_instances;
- slp_instance instance;
+ void *target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
/* Cost model disabled. */
if (!flag_vect_cost_model)
@@ -2514,8 +2545,10 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo))
{
/* FIXME: Make cost depend on complexity of individual check. */
- vec_outside_cost +=
- VEC_length (gimple, LOOP_VINFO_MAY_MISALIGN_STMTS (loop_vinfo));
+ unsigned len = VEC_length (gimple,
+ LOOP_VINFO_MAY_MISALIGN_STMTS (loop_vinfo));
+ (void) add_stmt_cost (target_cost_data, len, vector_stmt, NULL, 0,
+ vect_prologue);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "cost model: Adding cost of checks for loop "
"versioning to treat misalignment.\n");
@@ -2525,8 +2558,9 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
if (LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo))
{
/* FIXME: Make cost depend on complexity of individual check. */
- vec_outside_cost +=
- VEC_length (ddr_p, LOOP_VINFO_MAY_ALIAS_DDRS (loop_vinfo));
+ unsigned len = VEC_length (ddr_p, LOOP_VINFO_MAY_ALIAS_DDRS (loop_vinfo));
+ (void) add_stmt_cost (target_cost_data, len, vector_stmt, NULL, 0,
+ vect_prologue);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "cost model: Adding cost of checks for loop "
"versioning aliasing.\n");
@@ -2534,7 +2568,8 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo)
|| LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo))
- vec_outside_cost += vect_get_stmt_cost (cond_branch_taken);
+ (void) add_stmt_cost (target_cost_data, 1, cond_branch_taken, NULL, 0,
+ vect_prologue);
/* Count statements in scalar loop. Using this as scalar cost for a single
iteration for now.
@@ -2544,67 +2579,6 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
TODO: Consider assigning different costs to different scalar
statements. */
- /* FORNOW. */
- if (loop->inner)
- innerloop_iters = 50; /* FIXME */
-
- for (i = 0; i < nbbs; i++)
- {
- gimple_stmt_iterator si;
- basic_block bb = bbs[i];
-
- if (bb->loop_father == loop->inner)
- factor = innerloop_iters;
- else
- factor = 1;
-
- for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
- {
- gimple stmt = gsi_stmt (si);
- stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
-
- if (STMT_VINFO_IN_PATTERN_P (stmt_info))
- {
- stmt = STMT_VINFO_RELATED_STMT (stmt_info);
- stmt_info = vinfo_for_stmt (stmt);
- }
-
- /* Skip stmts that are not vectorized inside the loop. */
- if (!STMT_VINFO_RELEVANT_P (stmt_info)
- && (!STMT_VINFO_LIVE_P (stmt_info)
- || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))))
- continue;
-
- vec_inside_cost += STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info) * factor;
- /* FIXME: for stmts in the inner-loop in outer-loop vectorization,
- some of the "outside" costs are generated inside the outer-loop. */
- vec_outside_cost += STMT_VINFO_OUTSIDE_OF_LOOP_COST (stmt_info);
- if (is_pattern_stmt_p (stmt_info)
- && STMT_VINFO_PATTERN_DEF_SEQ (stmt_info))
- {
- gimple_stmt_iterator gsi;
-
- for (gsi = gsi_start (STMT_VINFO_PATTERN_DEF_SEQ (stmt_info));
- !gsi_end_p (gsi); gsi_next (&gsi))
- {
- gimple pattern_def_stmt = gsi_stmt (gsi);
- stmt_vec_info pattern_def_stmt_info
- = vinfo_for_stmt (pattern_def_stmt);
- if (STMT_VINFO_RELEVANT_P (pattern_def_stmt_info)
- || STMT_VINFO_LIVE_P (pattern_def_stmt_info))
- {
- vec_inside_cost
- += STMT_VINFO_INSIDE_OF_LOOP_COST
- (pattern_def_stmt_info) * factor;
- vec_outside_cost
- += STMT_VINFO_OUTSIDE_OF_LOOP_COST
- (pattern_def_stmt_info);
- }
- }
- }
- }
- }
-
scalar_single_iter_cost = vect_get_single_scalar_iteration_cost (loop_vinfo);
/* Add additional cost for the peeled instructions in prologue and epilogue
@@ -2635,18 +2609,54 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
branch per peeled loop. Even if scalar loop iterations are known,
vector iterations are not known since peeled prologue iterations are
not known. Hence guards remain the same. */
- peel_guard_costs += 2 * (vect_get_stmt_cost (cond_branch_taken)
- + vect_get_stmt_cost (cond_branch_not_taken));
- vec_outside_cost += (peel_iters_prologue * scalar_single_iter_cost)
- + (peel_iters_epilogue * scalar_single_iter_cost)
- + peel_guard_costs;
+ (void) add_stmt_cost (target_cost_data, 2, cond_branch_taken,
+ NULL, 0, vect_prologue);
+ (void) add_stmt_cost (target_cost_data, 2, cond_branch_not_taken,
+ NULL, 0, vect_prologue);
+ /* FORNOW: Don't attempt to pass individual scalar instructions to
+ the model; just assume linear cost for scalar iterations. */
+ (void) add_stmt_cost (target_cost_data,
+ peel_iters_prologue * scalar_single_iter_cost,
+ scalar_stmt, NULL, 0, vect_prologue);
+ (void) add_stmt_cost (target_cost_data,
+ peel_iters_epilogue * scalar_single_iter_cost,
+ scalar_stmt, NULL, 0, vect_epilogue);
}
else
{
+ stmt_vector_for_cost prologue_cost_vec, epilogue_cost_vec;
+ stmt_info_for_cost *si;
+ int j;
+ void *data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
+
+ prologue_cost_vec = VEC_alloc (stmt_info_for_cost, heap, 2);
+ epilogue_cost_vec = VEC_alloc (stmt_info_for_cost, heap, 2);
peel_iters_prologue = npeel;
- vec_outside_cost += vect_get_known_peeling_cost (loop_vinfo,
- peel_iters_prologue, &peel_iters_epilogue,
- scalar_single_iter_cost);
+
+ (void) vect_get_known_peeling_cost (loop_vinfo, peel_iters_prologue,
+ &peel_iters_epilogue,
+ scalar_single_iter_cost,
+ &prologue_cost_vec,
+ &epilogue_cost_vec);
+
+ FOR_EACH_VEC_ELT (stmt_info_for_cost, prologue_cost_vec, j, si)
+ {
+ struct _stmt_vec_info *stmt_info
+ = si->stmt ? vinfo_for_stmt (si->stmt) : NULL;
+ (void) add_stmt_cost (data, si->count, si->kind, stmt_info,
+ si->misalign, vect_prologue);
+ }
+
+ FOR_EACH_VEC_ELT (stmt_info_for_cost, epilogue_cost_vec, j, si)
+ {
+ struct _stmt_vec_info *stmt_info
+ = si->stmt ? vinfo_for_stmt (si->stmt) : NULL;
+ (void) add_stmt_cost (data, si->count, si->kind, stmt_info,
+ si->misalign, vect_epilogue);
+ }
+
+ VEC_free (stmt_info_for_cost, heap, prologue_cost_vec);
+ VEC_free (stmt_info_for_cost, heap, epilogue_cost_vec);
}
/* FORNOW: The scalar outside cost is incremented in one of the
@@ -2722,14 +2732,12 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
}
}
- /* Add SLP costs. */
- slp_instances = LOOP_VINFO_SLP_INSTANCES (loop_vinfo);
- FOR_EACH_VEC_ELT (slp_instance, slp_instances, i, instance)
- {
- vec_outside_cost += SLP_INSTANCE_OUTSIDE_OF_LOOP_COST (instance);
- vec_inside_cost += SLP_INSTANCE_INSIDE_OF_LOOP_COST (instance);
- }
+ /* Complete the target-specific cost calculations. */
+ finish_cost (LOOP_VINFO_TARGET_COST_DATA (loop_vinfo), &vec_prologue_cost,
+ &vec_inside_cost, &vec_epilogue_cost);
+ vec_outside_cost = (int)(vec_prologue_cost + vec_epilogue_cost);
+
/* Calculate number of iterations required to make the vector version
profitable, relative to the loop bodies only. The following condition
must hold true:
@@ -2740,7 +2748,7 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
PL_ITERS = prologue iterations, EP_ITERS= epilogue iterations
SOC = scalar outside cost for run time cost model check. */
- if ((scalar_single_iter_cost * vf) > vec_inside_cost)
+ if ((scalar_single_iter_cost * vf) > (int) vec_inside_cost)
{
if (vec_outside_cost <= 0)
min_profitable_iters = 1;
@@ -2753,8 +2761,8 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
- vec_inside_cost);
if ((scalar_single_iter_cost * vf * min_profitable_iters)
- <= ((vec_inside_cost * min_profitable_iters)
- + ((vec_outside_cost - scalar_outside_cost) * vf)))
+ <= (((int) vec_inside_cost * min_profitable_iters)
+ + (((int) vec_outside_cost - scalar_outside_cost) * vf)))
min_profitable_iters++;
}
}
@@ -2774,8 +2782,10 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo)
fprintf (vect_dump, "Cost model analysis: \n");
fprintf (vect_dump, " Vector inside of loop cost: %d\n",
vec_inside_cost);
- fprintf (vect_dump, " Vector outside of loop cost: %d\n",
- vec_outside_cost);
+ fprintf (vect_dump, " Vector prologue cost: %d\n",
+ vec_prologue_cost);
+ fprintf (vect_dump, " Vector epilogue cost: %d\n",
+ vec_epilogue_cost);
fprintf (vect_dump, " Scalar iteration cost: %d\n",
scalar_single_iter_cost);
fprintf (vect_dump, " Scalar outside cost: %d\n", scalar_outside_cost);
@@ -2816,7 +2826,7 @@ static bool
vect_model_reduction_cost (stmt_vec_info stmt_info, enum tree_code reduc_code,
int ncopies)
{
- int outer_cost = 0;
+ int prologue_cost = 0, epilogue_cost = 0;
enum tree_code code;
optab optab;
tree vectype;
@@ -2825,12 +2835,11 @@ vect_model_reduction_cost (stmt_vec_info stmt_info, enum tree_code reduc_code,
enum machine_mode mode;
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
-
+ void *target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
/* Cost of reduction op inside loop. */
- STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info)
- += ncopies * vect_get_stmt_cost (vector_stmt);
-
+ unsigned inside_cost = add_stmt_cost (target_cost_data, ncopies, vector_stmt,
+ stmt_info, 0, vect_body);
stmt = STMT_VINFO_STMT (stmt_info);
switch (get_gimple_rhs_class (gimple_assign_rhs_code (stmt)))
@@ -2872,7 +2881,8 @@ vect_model_reduction_cost (stmt_vec_info stmt_info, enum tree_code reduc_code,
code = gimple_assign_rhs_code (orig_stmt);
/* Add in cost for initial definition. */
- outer_cost += vect_get_stmt_cost (scalar_to_vec);
+ prologue_cost += add_stmt_cost (target_cost_data, 1, scalar_to_vec,
+ stmt_info, 0, vect_prologue);
/* Determine cost of epilogue code.
@@ -2882,8 +2892,12 @@ vect_model_reduction_cost (stmt_vec_info stmt_info, enum tree_code reduc_code,
if (!nested_in_vect_loop_p (loop, orig_stmt))
{
if (reduc_code != ERROR_MARK)
- outer_cost += vect_get_stmt_cost (vector_stmt)
- + vect_get_stmt_cost (vec_to_scalar);
+ {
+ epilogue_cost += add_stmt_cost (target_cost_data, 1, vector_stmt,
+ stmt_info, 0, vect_epilogue);
+ epilogue_cost += add_stmt_cost (target_cost_data, 1, vec_to_scalar,
+ stmt_info, 0, vect_epilogue);
+ }
else
{
int vec_size_in_bits = tree_low_cst (TYPE_SIZE (vectype), 1);
@@ -2898,25 +2912,31 @@ vect_model_reduction_cost (stmt_vec_info stmt_info, enum tree_code reduc_code,
if (VECTOR_MODE_P (mode)
&& optab_handler (optab, mode) != CODE_FOR_nothing
&& optab_handler (vec_shr_optab, mode) != CODE_FOR_nothing)
- /* Final reduction via vector shifts and the reduction operator. Also
- requires scalar extract. */
- outer_cost += ((exact_log2(nelements) * 2)
- * vect_get_stmt_cost (vector_stmt)
- + vect_get_stmt_cost (vec_to_scalar));
+ {
+ /* Final reduction via vector shifts and the reduction operator.
+ Also requires scalar extract. */
+ epilogue_cost += add_stmt_cost (target_cost_data,
+ exact_log2 (nelements) * 2,
+ vector_stmt, stmt_info, 0,
+ vect_epilogue);
+ epilogue_cost += add_stmt_cost (target_cost_data, 1,
+ vec_to_scalar, stmt_info, 0,
+ vect_epilogue);
+ }
else
- /* Use extracts and reduction op for final reduction. For N elements,
- we have N extracts and N-1 reduction ops. */
- outer_cost += ((nelements + nelements - 1)
- * vect_get_stmt_cost (vector_stmt));
+ /* Use extracts and reduction op for final reduction. For N
+ elements, we have N extracts and N-1 reduction ops. */
+ epilogue_cost += add_stmt_cost (target_cost_data,
+ nelements + nelements - 1,
+ vector_stmt, stmt_info, 0,
+ vect_epilogue);
}
}
- STMT_VINFO_OUTSIDE_OF_LOOP_COST (stmt_info) = outer_cost;
-
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_reduction_cost: inside_cost = %d, "
- "outside_cost = %d .", STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info),
- STMT_VINFO_OUTSIDE_OF_LOOP_COST (stmt_info));
+ "prologue_cost = %d, epilogue_cost = %d .", inside_cost,
+ prologue_cost, epilogue_cost);
return true;
}
@@ -2929,17 +2949,21 @@ vect_model_reduction_cost (stmt_vec_info stmt_info, enum tree_code reduc_code,
static void
vect_model_induction_cost (stmt_vec_info stmt_info, int ncopies)
{
+ loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
+ void *target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
+ unsigned inside_cost, prologue_cost;
+
/* loop cost for vec_loop. */
- STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info)
- = ncopies * vect_get_stmt_cost (vector_stmt);
+ inside_cost = add_stmt_cost (target_cost_data, ncopies, vector_stmt,
+ stmt_info, 0, vect_body);
+
/* prologue cost for vec_init and vec_step. */
- STMT_VINFO_OUTSIDE_OF_LOOP_COST (stmt_info)
- = 2 * vect_get_stmt_cost (scalar_to_vec);
+ prologue_cost = add_stmt_cost (target_cost_data, 2, scalar_to_vec,
+ stmt_info, 0, vect_prologue);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_induction_cost: inside_cost = %d, "
- "outside_cost = %d .", STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info),
- STMT_VINFO_OUTSIDE_OF_LOOP_COST (stmt_info));
+ "prologue_cost = %d .", inside_cost, prologue_cost);
}
@@ -3043,8 +3067,6 @@ get_initial_def_for_induction (gimple iv_phi)
/* iv_loop is the loop to be vectorized. Create:
vec_init = [X, X+S, X+2*S, X+3*S] (S = step_expr, X = init_expr) */
new_var = vect_get_new_vect_var (scalar_type, vect_scalar_var, "var_");
- add_referenced_var (new_var);
-
new_name = force_gimple_operand (init_expr, &stmts, false, new_var);
if (stmts)
{
@@ -3115,7 +3137,6 @@ get_initial_def_for_induction (gimple iv_phi)
/* Create the induction-phi that defines the induction-operand. */
vec_dest = vect_get_new_vect_var (vectype, vect_simple_var, "vec_iv_");
- add_referenced_var (vec_dest);
induction_phi = create_phi_node (vec_dest, iv_loop->header);
set_vinfo_for_stmt (induction_phi,
new_stmt_vec_info (induction_phi, loop_vinfo, NULL));
@@ -3679,7 +3700,8 @@ vect_create_epilog_for_reduction (VEC (tree, heap) *vect_defs, gimple stmt,
{
for (j = 0; j < ncopies; j++)
{
- phi = create_phi_node (SSA_NAME_VAR (def), exit_bb);
+ tree new_def = copy_ssa_name (def, NULL);
+ phi = create_phi_node (new_def, exit_bb);
set_vinfo_for_stmt (phi, new_stmt_vec_info (phi, loop_vinfo, NULL));
if (j == 0)
VEC_quick_push (gimple, new_phis, phi);
@@ -3703,8 +3725,8 @@ vect_create_epilog_for_reduction (VEC (tree, heap) *vect_defs, gimple stmt,
inner_phis = VEC_alloc (gimple, heap, VEC_length (tree, vect_defs));
FOR_EACH_VEC_ELT (gimple, new_phis, i, phi)
{
- gimple outer_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (phi)),
- exit_bb);
+ tree new_result = copy_ssa_name (PHI_RESULT (phi), NULL);
+ gimple outer_phi = create_phi_node (new_result, exit_bb);
SET_PHI_ARG_DEF (outer_phi, single_exit (loop)->dest_idx,
PHI_RESULT (phi));
set_vinfo_for_stmt (outer_phi, new_stmt_vec_info (outer_phi,
@@ -3715,8 +3737,8 @@ vect_create_epilog_for_reduction (VEC (tree, heap) *vect_defs, gimple stmt,
while (STMT_VINFO_RELATED_STMT (vinfo_for_stmt (phi)))
{
phi = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (phi));
- outer_phi = create_phi_node (SSA_NAME_VAR (PHI_RESULT (phi)),
- exit_bb);
+ new_result = copy_ssa_name (PHI_RESULT (phi), NULL);
+ outer_phi = create_phi_node (new_result, exit_bb);
SET_PHI_ARG_DEF (outer_phi, single_exit (loop)->dest_idx,
PHI_RESULT (phi));
set_vinfo_for_stmt (outer_phi, new_stmt_vec_info (outer_phi,
@@ -5255,7 +5277,7 @@ vect_transform_loop (loop_vec_info loop_vinfo)
gimple_seq pattern_def_seq = NULL;
gimple_stmt_iterator pattern_def_si = gsi_none ();
bool transform_pattern_stmt = false;
- bool check_profitability;
+ bool check_profitability = false;
int th;
if (vect_print_dump_info (REPORT_DETAILS))
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 3f57e5dcf8b..1b78a54c42e 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -29,15 +29,15 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "cfgloop.h"
#include "expr.h"
#include "optabs.h"
#include "params.h"
#include "tree-data-ref.h"
#include "tree-vectorizer.h"
-#include "recog.h"
+#include "recog.h" /* FIXME: for insn_data */
#include "diagnostic-core.h"
+#include "dumpfile.h"
/* Pattern recognition functions */
static gimple vect_recog_widen_sum_pattern (VEC (gimple, heap) **, tree *,
@@ -206,11 +206,7 @@ type_conversion_p (tree name, gimple use_stmt, bool check_sign,
static tree
vect_recog_temp_ssa_var (tree type, gimple stmt)
{
- tree var = create_tmp_var (type, "patt");
-
- add_referenced_var (var);
- var = make_ssa_name (var, stmt);
- return var;
+ return make_temp_ssa_name (type, stmt, "patt");
}
/* Function vect_recog_dot_prod_pattern
@@ -452,7 +448,7 @@ vect_handle_widen_op_by_const (gimple stmt, enum tree_code code,
VEC (gimple, heap) **stmts, tree type,
tree *half_type, gimple def_stmt)
{
- tree new_type, new_oprnd, tmp;
+ tree new_type, new_oprnd;
gimple new_stmt;
if (code != MULT_EXPR && code != LSHIFT_EXPR)
@@ -501,9 +497,7 @@ vect_handle_widen_op_by_const (gimple stmt, enum tree_code code,
{
/* Create a_T = (NEW_TYPE) a_t; */
*oprnd = gimple_assign_rhs1 (def_stmt);
- tmp = create_tmp_var (new_type, NULL);
- add_referenced_var (tmp);
- new_oprnd = make_ssa_name (tmp, NULL);
+ new_oprnd = make_ssa_name (new_type, NULL);
new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd, *oprnd,
NULL_TREE);
STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt)) = new_stmt;
@@ -599,7 +593,6 @@ vect_recog_widen_mult_pattern (VEC (gimple, heap) **stmts,
tree type, half_type0, half_type1;
gimple pattern_stmt;
tree vectype, vectype_out = NULL_TREE;
- tree dummy;
tree var;
enum tree_code dummy_code;
int dummy_int;
@@ -692,8 +685,8 @@ vect_recog_widen_mult_pattern (VEC (gimple, heap) **stmts,
|| !vectype_out
|| !supportable_widening_operation (WIDEN_MULT_EXPR, last_stmt,
vectype_out, vectype,
- &dummy, &dummy, &dummy_code,
- &dummy_code, &dummy_int, &dummy_vec))
+ &dummy_code, &dummy_code,
+ &dummy_int, &dummy_vec))
return NULL;
*type_in = vectype;
@@ -966,7 +959,7 @@ vect_operation_fits_smaller_type (gimple stmt, tree def, tree *new_type,
{
enum tree_code code;
tree const_oprnd, oprnd;
- tree interm_type = NULL_TREE, half_type, tmp, new_oprnd, type;
+ tree interm_type = NULL_TREE, half_type, new_oprnd, type;
gimple def_stmt, new_stmt;
bool first = false;
bool promotion;
@@ -1107,9 +1100,7 @@ vect_operation_fits_smaller_type (gimple stmt, tree def, tree *new_type,
{
/* Create NEW_OPRND = (INTERM_TYPE) OPRND. */
oprnd = gimple_assign_rhs1 (def_stmt);
- tmp = create_tmp_reg (interm_type, NULL);
- add_referenced_var (tmp);
- new_oprnd = make_ssa_name (tmp, NULL);
+ new_oprnd = make_ssa_name (interm_type, NULL);
new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd,
oprnd, NULL_TREE);
STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt)) = new_stmt;
@@ -1128,9 +1119,7 @@ vect_operation_fits_smaller_type (gimple stmt, tree def, tree *new_type,
if (interm_type)
{
/* Create a type conversion HALF_TYPE->INTERM_TYPE. */
- tmp = create_tmp_reg (interm_type, NULL);
- add_referenced_var (tmp);
- new_oprnd = make_ssa_name (tmp, NULL);
+ new_oprnd = make_ssa_name (interm_type, NULL);
new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd,
oprnd, NULL_TREE);
oprnd = new_oprnd;
@@ -1177,7 +1166,7 @@ vect_recog_over_widening_pattern (VEC (gimple, heap) **stmts,
gimple stmt = VEC_pop (gimple, *stmts);
gimple pattern_stmt = NULL, new_def_stmt, prev_stmt = NULL, use_stmt = NULL;
tree op0, op1, vectype = NULL_TREE, use_lhs, use_type;
- tree var = NULL_TREE, new_type = NULL_TREE, tmp, new_oprnd;
+ tree var = NULL_TREE, new_type = NULL_TREE, new_oprnd;
bool first;
tree type = NULL;
@@ -1260,9 +1249,7 @@ vect_recog_over_widening_pattern (VEC (gimple, heap) **stmts,
|| TYPE_PRECISION (new_type) != TYPE_PRECISION (use_type))
{
/* Create NEW_TYPE->USE_TYPE conversion. */
- tmp = create_tmp_reg (use_type, NULL);
- add_referenced_var (tmp);
- new_oprnd = make_ssa_name (tmp, NULL);
+ new_oprnd = make_ssa_name (use_type, NULL);
pattern_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd,
var, NULL_TREE);
STMT_VINFO_RELATED_STMT (vinfo_for_stmt (use_stmt)) = pattern_stmt;
@@ -1370,7 +1357,6 @@ vect_recog_widen_shift_pattern (VEC (gimple, heap) **stmts,
tree type, half_type0;
gimple pattern_stmt;
tree vectype, vectype_out = NULL_TREE;
- tree dummy;
tree var;
enum tree_code dummy_code;
int dummy_int;
@@ -1441,9 +1427,8 @@ vect_recog_widen_shift_pattern (VEC (gimple, heap) **stmts,
|| !vectype_out
|| !supportable_widening_operation (WIDEN_LSHIFT_EXPR, last_stmt,
vectype_out, vectype,
- &dummy, &dummy, &dummy_code,
- &dummy_code, &dummy_int,
- &dummy_vec))
+ &dummy_code, &dummy_code,
+ &dummy_int, &dummy_vec))
return NULL;
*type_in = vectype;
@@ -1642,10 +1627,8 @@ vect_recog_divmod_pattern (VEC (gimple, heap) **stmts,
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_vinfo);
optab optab;
- tree dummy, q;
- enum tree_code dummy_code;
+ tree q;
int dummy_int, prec;
- VEC (tree, heap) *dummy_vec;
stmt_vec_info def_stmt_vinfo;
if (!is_gimple_assign (last_stmt))
@@ -1680,12 +1663,11 @@ vect_recog_divmod_pattern (VEC (gimple, heap) **stmts,
/* If the target can handle vectorized division or modulo natively,
don't attempt to optimize this. */
optab = optab_for_tree_code (rhs_code, vectype, optab_default);
- if (optab != NULL)
+ if (optab != unknown_optab)
{
enum machine_mode vec_mode = TYPE_MODE (vectype);
int icode = (int) optab_handler (optab, vec_mode);
- if (icode != CODE_FOR_nothing
- || GET_MODE_SIZE (vec_mode) == UNITS_PER_WORD)
+ if (icode != CODE_FOR_nothing)
return NULL;
}
@@ -1814,23 +1796,8 @@ vect_recog_divmod_pattern (VEC (gimple, heap) **stmts,
|| prec > HOST_BITS_PER_WIDE_INT)
return NULL;
- optab = optab_for_tree_code (MULT_HIGHPART_EXPR, vectype, optab_default);
- if (optab == NULL
- || optab_handler (optab, TYPE_MODE (vectype)) == CODE_FOR_nothing)
- {
- tree witype = build_nonstandard_integer_type (prec * 2,
- TYPE_UNSIGNED (itype));
- tree vecwtype = get_vectype_for_scalar_type (witype);
-
- if (vecwtype == NULL_TREE)
- return NULL;
- if (!supportable_widening_operation (WIDEN_MULT_EXPR, last_stmt,
- vecwtype, vectype,
- &dummy, &dummy, &dummy_code,
- &dummy_code, &dummy_int,
- &dummy_vec))
- return NULL;
- }
+ if (!can_mult_highpart_p (TYPE_MODE (vectype), TYPE_UNSIGNED (itype)))
+ return NULL;
STMT_VINFO_PATTERN_DEF_SEQ (stmt_vinfo) = NULL;
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index 5d11552a1a0..b2d0a6b4042 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -28,13 +28,12 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "target.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
+#include "tree-pass.h"
#include "cfgloop.h"
#include "expr.h"
-#include "recog.h"
+#include "recog.h" /* FIXME: for insn_data */
#include "optabs.h"
#include "tree-vectorizer.h"
#include "langhooks.h"
@@ -94,6 +93,8 @@ vect_free_slp_instance (slp_instance instance)
vect_free_slp_tree (SLP_INSTANCE_TREE (instance));
VEC_free (int, heap, SLP_INSTANCE_LOAD_PERMUTATION (instance));
VEC_free (slp_tree, heap, SLP_INSTANCE_LOADS (instance));
+ VEC_free (stmt_info_for_cost, heap, SLP_INSTANCE_BODY_COST_VEC (instance));
+ free (instance);
}
@@ -121,8 +122,6 @@ vect_create_new_slp_node (VEC (gimple, heap) *scalar_stmts)
SLP_TREE_SCALAR_STMTS (node) = scalar_stmts;
SLP_TREE_VEC_STMTS (node) = NULL;
SLP_TREE_CHILDREN (node) = VEC_alloc (slp_void_p, heap, nops);
- SLP_TREE_OUTSIDE_OF_LOOP_COST (node) = 0;
- SLP_TREE_INSIDE_OF_LOOP_COST (node) = 0;
return node;
}
@@ -179,7 +178,9 @@ static bool
vect_get_and_check_slp_defs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
slp_tree slp_node, gimple stmt,
int ncopies_for_cost, bool first,
- VEC (slp_oprnd_info, heap) **oprnds_info)
+ VEC (slp_oprnd_info, heap) **oprnds_info,
+ stmt_vector_for_cost *prologue_cost_vec,
+ stmt_vector_for_cost *body_cost_vec)
{
tree oprnd;
unsigned int i, number_of_oprnds;
@@ -320,7 +321,8 @@ vect_get_and_check_slp_defs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
if (REFERENCE_CLASS_P (lhs))
/* Store. */
vect_model_store_cost (stmt_info, ncopies_for_cost, false,
- dt, slp_node);
+ dt, slp_node, prologue_cost_vec,
+ body_cost_vec);
else
{
enum vect_def_type dts[2];
@@ -329,7 +331,7 @@ vect_get_and_check_slp_defs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
/* Not memory operation (we don't call this function for
loads). */
vect_model_simple_cost (stmt_info, ncopies_for_cost, dts,
- slp_node);
+ prologue_cost_vec, body_cost_vec);
}
}
}
@@ -446,12 +448,13 @@ vect_get_and_check_slp_defs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
static bool
vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
- slp_tree *node, unsigned int group_size,
- int *inside_cost, int *outside_cost,
+ slp_tree *node, unsigned int group_size, int *outside_cost,
int ncopies_for_cost, unsigned int *max_nunits,
VEC (int, heap) **load_permutation,
VEC (slp_tree, heap) **loads,
- unsigned int vectorization_factor, bool *loads_permuted)
+ unsigned int vectorization_factor, bool *loads_permuted,
+ stmt_vector_for_cost *prologue_cost_vec,
+ stmt_vector_for_cost *body_cost_vec)
{
unsigned int i;
VEC (gimple, heap) *stmts = SLP_TREE_SCALAR_STMTS (*node);
@@ -470,7 +473,7 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
HOST_WIDE_INT dummy;
bool permutation = false;
unsigned int load_place;
- gimple first_load, prev_first_load = NULL;
+ gimple first_load = NULL, prev_first_load = NULL, old_first_load = NULL;
VEC (slp_oprnd_info, heap) *oprnds_info;
unsigned int nops;
slp_oprnd_info oprnd_info;
@@ -711,7 +714,9 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
/* Store. */
if (!vect_get_and_check_slp_defs (loop_vinfo, bb_vinfo, *node,
stmt, ncopies_for_cost,
- (i == 0), &oprnds_info))
+ (i == 0), &oprnds_info,
+ prologue_cost_vec,
+ body_cost_vec))
{
vect_free_oprnd_info (&oprnds_info);
return false;
@@ -754,6 +759,7 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
return false;
}
+ old_first_load = first_load;
first_load = GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt));
if (prev_first_load)
{
@@ -778,7 +784,9 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
else
prev_first_load = first_load;
- if (first_load == stmt)
+ /* In some cases a group of loads is just the same load
+ repeated N times. Only analyze its cost once. */
+ if (first_load == stmt && old_first_load != first_load)
{
first_dr = STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt));
if (vect_supportable_dr_alignment (first_dr, false)
@@ -797,7 +805,8 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
/* Analyze costs (for the first stmt in the group). */
vect_model_load_cost (vinfo_for_stmt (stmt),
- ncopies_for_cost, false, *node);
+ ncopies_for_cost, false, *node,
+ prologue_cost_vec, body_cost_vec);
}
/* Store the place of this load in the interleaving chain. In
@@ -871,7 +880,8 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
/* Find the def-stmts. */
if (!vect_get_and_check_slp_defs (loop_vinfo, bb_vinfo, *node, stmt,
ncopies_for_cost, (i == 0),
- &oprnds_info))
+ &oprnds_info, prologue_cost_vec,
+ body_cost_vec))
{
vect_free_oprnd_info (&oprnds_info);
return false;
@@ -879,21 +889,16 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
}
}
- /* Add the costs of the node to the overall instance costs. */
- *inside_cost += SLP_TREE_INSIDE_OF_LOOP_COST (*node);
- *outside_cost += SLP_TREE_OUTSIDE_OF_LOOP_COST (*node);
-
/* Grouped loads were reached - stop the recursion. */
if (stop_recursion)
{
VEC_safe_push (slp_tree, heap, *loads, *node);
if (permutation)
{
-
+ gimple first_stmt = VEC_index (gimple, stmts, 0);
*loads_permuted = true;
- *inside_cost
- += targetm.vectorize.builtin_vectorization_cost (vec_perm, NULL, 0)
- * group_size;
+ (void) record_stmt_cost (body_cost_vec, group_size, vec_perm,
+ vinfo_for_stmt (first_stmt), 0, vect_body);
}
else
{
@@ -919,9 +924,10 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
child = vect_create_new_slp_node (oprnd_info->def_stmts);
if (!child
|| !vect_build_slp_tree (loop_vinfo, bb_vinfo, &child, group_size,
- inside_cost, outside_cost, ncopies_for_cost,
- max_nunits, load_permutation, loads,
- vectorization_factor, loads_permuted))
+ outside_cost, ncopies_for_cost,
+ max_nunits, load_permutation, loads,
+ vectorization_factor, loads_permuted,
+ prologue_cost_vec, body_cost_vec))
{
if (child)
oprnd_info->def_stmts = NULL;
@@ -1093,7 +1099,7 @@ vect_slp_rearrange_stmts (slp_tree node, unsigned int group_size,
tmp_stmts = VEC_alloc (gimple, heap, group_size);
for (i = 0; i < group_size; i++)
- VEC_safe_push (gimple, heap, tmp_stmts, NULL);
+ VEC_safe_push (gimple, heap, tmp_stmts, (gimple)NULL);
FOR_EACH_VEC_ELT (gimple, SLP_TREE_SCALAR_STMTS (node), i, stmt)
{
@@ -1459,13 +1465,15 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
tree vectype, scalar_type = NULL_TREE;
gimple next;
unsigned int vectorization_factor = 0;
- int inside_cost = 0, outside_cost = 0, ncopies_for_cost, i;
+ int outside_cost = 0, ncopies_for_cost, i;
unsigned int max_nunits = 0;
VEC (int, heap) *load_permutation;
VEC (slp_tree, heap) *loads;
struct data_reference *dr = STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt));
bool loads_permuted = false;
VEC (gimple, heap) *scalar_stmts;
+ stmt_vector_for_cost body_cost_vec, prologue_cost_vec;
+ stmt_info_for_cost *si;
if (GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)))
{
@@ -1551,13 +1559,19 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
load_permutation = VEC_alloc (int, heap, group_size * group_size);
loads = VEC_alloc (slp_tree, heap, group_size);
+ prologue_cost_vec = VEC_alloc (stmt_info_for_cost, heap, 10);
+ body_cost_vec = VEC_alloc (stmt_info_for_cost, heap, 10);
/* Build the tree for the SLP instance. */
if (vect_build_slp_tree (loop_vinfo, bb_vinfo, &node, group_size,
- &inside_cost, &outside_cost, ncopies_for_cost,
+ &outside_cost, ncopies_for_cost,
&max_nunits, &load_permutation, &loads,
- vectorization_factor, &loads_permuted))
+ vectorization_factor, &loads_permuted,
+ &prologue_cost_vec, &body_cost_vec))
{
+ void *data = (loop_vinfo ? LOOP_VINFO_TARGET_COST_DATA (loop_vinfo)
+ : BB_VINFO_TARGET_COST_DATA (bb_vinfo));
+
/* Calculate the unrolling factor based on the smallest type. */
if (max_nunits > nunits)
unrolling_factor = least_common_multiple (max_nunits, group_size)
@@ -1568,6 +1582,11 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
if (vect_print_dump_info (REPORT_SLP))
fprintf (vect_dump, "Build SLP failed: unrolling required in basic"
" block SLP");
+ vect_free_slp_tree (node);
+ VEC_free (stmt_info_for_cost, heap, body_cost_vec);
+ VEC_free (stmt_info_for_cost, heap, prologue_cost_vec);
+ VEC_free (int, heap, load_permutation);
+ VEC_free (slp_tree, heap, loads);
return false;
}
@@ -1576,8 +1595,7 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
SLP_INSTANCE_TREE (new_instance) = node;
SLP_INSTANCE_GROUP_SIZE (new_instance) = group_size;
SLP_INSTANCE_UNROLLING_FACTOR (new_instance) = unrolling_factor;
- SLP_INSTANCE_OUTSIDE_OF_LOOP_COST (new_instance) = outside_cost;
- SLP_INSTANCE_INSIDE_OF_LOOP_COST (new_instance) = inside_cost;
+ SLP_INSTANCE_BODY_COST_VEC (new_instance) = body_cost_vec;
SLP_INSTANCE_LOADS (new_instance) = loads;
SLP_INSTANCE_FIRST_LOAD_STMT (new_instance) = NULL;
SLP_INSTANCE_LOAD_PERMUTATION (new_instance) = load_permutation;
@@ -1595,6 +1613,7 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
}
vect_free_slp_instance (new_instance);
+ VEC_free (stmt_info_for_cost, heap, prologue_cost_vec);
return false;
}
@@ -1604,6 +1623,19 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
else
VEC_free (int, heap, SLP_INSTANCE_LOAD_PERMUTATION (new_instance));
+ /* Record the prologue costs, which were delayed until we were
+ sure that SLP was successful. Unlike the body costs, we know
+ the final values now regardless of the loop vectorization factor. */
+ FOR_EACH_VEC_ELT (stmt_info_for_cost, prologue_cost_vec, i, si)
+ {
+ struct _stmt_vec_info *stmt_info
+ = si->stmt ? vinfo_for_stmt (si->stmt) : NULL;
+ (void) add_stmt_cost (data, si->count, si->kind, stmt_info,
+ si->misalign, vect_prologue);
+ }
+
+ VEC_free (stmt_info_for_cost, heap, prologue_cost_vec);
+
if (loop_vinfo)
VEC_safe_push (slp_instance, heap,
LOOP_VINFO_SLP_INSTANCES (loop_vinfo),
@@ -1617,6 +1649,11 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
return true;
}
+ else
+ {
+ VEC_free (stmt_info_for_cost, heap, body_cost_vec);
+ VEC_free (stmt_info_for_cost, heap, prologue_cost_vec);
+ }
/* Failed to SLP. */
/* Free the allocated memory. */
@@ -1812,6 +1849,7 @@ new_bb_vec_info (basic_block bb)
BB_VINFO_GROUPED_STORES (res) = VEC_alloc (gimple, heap, 10);
BB_VINFO_SLP_INSTANCES (res) = VEC_alloc (slp_instance, heap, 2);
+ BB_VINFO_TARGET_COST_DATA (res) = init_cost (NULL);
bb->aux = res;
return res;
@@ -1824,8 +1862,11 @@ new_bb_vec_info (basic_block bb)
static void
destroy_bb_vec_info (bb_vec_info bb_vinfo)
{
+ VEC (slp_instance, heap) *slp_instances;
+ slp_instance instance;
basic_block bb;
gimple_stmt_iterator si;
+ unsigned i;
if (!bb_vinfo)
return;
@@ -1845,7 +1886,11 @@ destroy_bb_vec_info (bb_vec_info bb_vinfo)
free_data_refs (BB_VINFO_DATAREFS (bb_vinfo));
free_dependence_relations (BB_VINFO_DDRS (bb_vinfo));
VEC_free (gimple, heap, BB_VINFO_GROUPED_STORES (bb_vinfo));
+ slp_instances = BB_VINFO_SLP_INSTANCES (bb_vinfo);
+ FOR_EACH_VEC_ELT (slp_instance, slp_instances, i, instance)
+ vect_free_slp_instance (instance);
VEC_free (slp_instance, heap, BB_VINFO_SLP_INSTANCES (bb_vinfo));
+ destroy_cost_data (BB_VINFO_TARGET_COST_DATA (bb_vinfo));
free (bb_vinfo);
bb->aux = NULL;
}
@@ -1918,21 +1963,29 @@ vect_bb_vectorization_profitable_p (bb_vec_info bb_vinfo)
{
VEC (slp_instance, heap) *slp_instances = BB_VINFO_SLP_INSTANCES (bb_vinfo);
slp_instance instance;
- int i;
- unsigned int vec_outside_cost = 0, vec_inside_cost = 0, scalar_cost = 0;
+ int i, j;
+ unsigned int vec_inside_cost = 0, vec_outside_cost = 0, scalar_cost = 0;
+ unsigned int vec_prologue_cost = 0, vec_epilogue_cost = 0;
unsigned int stmt_cost;
gimple stmt;
gimple_stmt_iterator si;
basic_block bb = BB_VINFO_BB (bb_vinfo);
+ void *target_cost_data = BB_VINFO_TARGET_COST_DATA (bb_vinfo);
stmt_vec_info stmt_info = NULL;
- tree dummy_type = NULL;
- int dummy = 0;
+ stmt_vector_for_cost body_cost_vec;
+ stmt_info_for_cost *ci;
/* Calculate vector costs. */
FOR_EACH_VEC_ELT (slp_instance, slp_instances, i, instance)
{
- vec_outside_cost += SLP_INSTANCE_OUTSIDE_OF_LOOP_COST (instance);
- vec_inside_cost += SLP_INSTANCE_INSIDE_OF_LOOP_COST (instance);
+ body_cost_vec = SLP_INSTANCE_BODY_COST_VEC (instance);
+
+ FOR_EACH_VEC_ELT (stmt_info_for_cost, body_cost_vec, j, ci)
+ {
+ stmt_info = ci->stmt ? vinfo_for_stmt (ci->stmt) : NULL;
+ (void) add_stmt_cost (target_cost_data, ci->count, ci->kind,
+ stmt_info, ci->misalign, vect_body);
+ }
}
/* Calculate scalar cost. */
@@ -1948,26 +2001,29 @@ vect_bb_vectorization_profitable_p (bb_vec_info bb_vinfo)
if (STMT_VINFO_DATA_REF (stmt_info))
{
if (DR_IS_READ (STMT_VINFO_DATA_REF (stmt_info)))
- stmt_cost = targetm.vectorize.builtin_vectorization_cost
- (scalar_load, dummy_type, dummy);
+ stmt_cost = vect_get_stmt_cost (scalar_load);
else
- stmt_cost = targetm.vectorize.builtin_vectorization_cost
- (scalar_store, dummy_type, dummy);
+ stmt_cost = vect_get_stmt_cost (scalar_store);
}
else
- stmt_cost = targetm.vectorize.builtin_vectorization_cost
- (scalar_stmt, dummy_type, dummy);
+ stmt_cost = vect_get_stmt_cost (scalar_stmt);
scalar_cost += stmt_cost;
}
+ /* Complete the target-specific cost calculation. */
+ finish_cost (BB_VINFO_TARGET_COST_DATA (bb_vinfo), &vec_prologue_cost,
+ &vec_inside_cost, &vec_epilogue_cost);
+
+ vec_outside_cost = vec_prologue_cost + vec_epilogue_cost;
+
if (vect_print_dump_info (REPORT_COST))
{
fprintf (vect_dump, "Cost model analysis: \n");
fprintf (vect_dump, " Vector inside of basic block cost: %d\n",
vec_inside_cost);
- fprintf (vect_dump, " Vector outside of basic block cost: %d\n",
- vec_outside_cost);
+ fprintf (vect_dump, " Vector prologue cost: %d\n", vec_prologue_cost);
+ fprintf (vect_dump, " Vector epilogue cost: %d\n", vec_epilogue_cost);
fprintf (vect_dump, " Scalar cost of basic block: %d", scalar_cost);
}
@@ -2072,7 +2128,7 @@ vect_slp_analyze_bb_1 (basic_block bb)
vect_mark_slp_stmts_relevant (SLP_INSTANCE_TREE (instance));
}
- if (!vect_verify_datarefs_alignment (NULL, bb_vinfo))
+ if (!vect_verify_datarefs_alignment (NULL, bb_vinfo))
{
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
fprintf (vect_dump, "not vectorized: unsupported alignment in basic "
@@ -2175,17 +2231,31 @@ vect_slp_analyze_bb (basic_block bb)
void
vect_update_slp_costs_according_to_vf (loop_vec_info loop_vinfo)
{
- unsigned int i, vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
+ unsigned int i, j, vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
VEC (slp_instance, heap) *slp_instances = LOOP_VINFO_SLP_INSTANCES (loop_vinfo);
slp_instance instance;
+ stmt_vector_for_cost body_cost_vec;
+ stmt_info_for_cost *si;
+ void *data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
if (vect_print_dump_info (REPORT_SLP))
fprintf (vect_dump, "=== vect_update_slp_costs_according_to_vf ===");
FOR_EACH_VEC_ELT (slp_instance, slp_instances, i, instance)
- /* We assume that costs are linear in ncopies. */
- SLP_INSTANCE_INSIDE_OF_LOOP_COST (instance) *= vf
- / SLP_INSTANCE_UNROLLING_FACTOR (instance);
+ {
+ /* We assume that costs are linear in ncopies. */
+ int ncopies = vf / SLP_INSTANCE_UNROLLING_FACTOR (instance);
+
+ /* Record the instance's instructions in the target cost model.
+ This was delayed until here because the count of instructions
+ isn't known beforehand. */
+ body_cost_vec = SLP_INSTANCE_BODY_COST_VEC (instance);
+
+ FOR_EACH_VEC_ELT (stmt_info_for_cost, body_cost_vec, j, si)
+ (void) add_stmt_cost (data, si->count * ncopies, si->kind,
+ vinfo_for_stmt (si->stmt), si->misalign,
+ vect_body);
+ }
}
@@ -2593,7 +2663,7 @@ vect_create_mask_and_perm (gimple stmt, gimple next_scalar_stmt,
stmts later. */
for (i = VEC_length (gimple, SLP_TREE_VEC_STMTS (node));
i < (int) SLP_TREE_NUMBER_OF_VEC_STMTS (node); i++)
- VEC_quick_push (gimple, SLP_TREE_VEC_STMTS (node), NULL);
+ VEC_quick_push (gimple, SLP_TREE_VEC_STMTS (node), (gimple)NULL);
perm_dest = vect_create_destination_var (gimple_assign_lhs (stmt), vectype);
for (i = 0; i < ncopies; i++)
@@ -3089,12 +3159,6 @@ vect_slp_transform_bb (basic_block bb)
}
}
- mark_sym_for_renaming (gimple_vop (cfun));
- /* The memory tags and pointers in vectorized statements need to
- have their SSA forms updated. FIXME, why can't this be delayed
- until all the loops have been transformed? */
- update_ssa (TODO_update_ssa);
-
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "BASIC BLOCK VECTORIZED\n");
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index a0a03c56d13..ab4a26c2b28 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -28,18 +28,79 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "target.h"
#include "basic-block.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "cfgloop.h"
#include "expr.h"
-#include "recog.h"
+#include "recog.h" /* FIXME: for insn_data */
#include "optabs.h"
#include "diagnostic-core.h"
#include "tree-vectorizer.h"
+#include "dumpfile.h"
+
+/* For lang_hooks.types.type_for_mode. */
#include "langhooks.h"
+/* Return the vectorized type for the given statement. */
+
+tree
+stmt_vectype (struct _stmt_vec_info *stmt_info)
+{
+ return STMT_VINFO_VECTYPE (stmt_info);
+}
+
+/* Return TRUE iff the given statement is in an inner loop relative to
+ the loop being vectorized. */
+bool
+stmt_in_inner_loop_p (struct _stmt_vec_info *stmt_info)
+{
+ gimple stmt = STMT_VINFO_STMT (stmt_info);
+ basic_block bb = gimple_bb (stmt);
+ loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
+ struct loop* loop;
+
+ if (!loop_vinfo)
+ return false;
+
+ loop = LOOP_VINFO_LOOP (loop_vinfo);
+
+ return (bb->loop_father == loop->inner);
+}
+
+/* Record the cost of a statement, either by directly informing the
+ target model or by saving it in a vector for later processing.
+ Return a preliminary estimate of the statement's cost. */
+
+unsigned
+record_stmt_cost (stmt_vector_for_cost *body_cost_vec, int count,
+ enum vect_cost_for_stmt kind, stmt_vec_info stmt_info,
+ int misalign, enum vect_cost_model_location where)
+{
+ if (body_cost_vec)
+ {
+ tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
+ add_stmt_info_to_vec (body_cost_vec, count, kind,
+ stmt_info ? STMT_VINFO_STMT (stmt_info) : NULL,
+ misalign);
+ return (unsigned)
+ (builtin_vectorization_cost (kind, vectype, misalign) * count);
+
+ }
+ else
+ {
+ loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
+ bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
+ void *target_cost_data;
+
+ if (loop_vinfo)
+ target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
+ else
+ target_cost_data = BB_VINFO_TARGET_COST_DATA (bb_vinfo);
+
+ return add_stmt_cost (target_cost_data, count, kind, stmt_info,
+ misalign, where);
+ }
+}
/* Return a variable of type ELEM_TYPE[NELEMS]. */
@@ -735,31 +796,30 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo)
void
vect_model_simple_cost (stmt_vec_info stmt_info, int ncopies,
- enum vect_def_type *dt, slp_tree slp_node)
+ enum vect_def_type *dt,
+ stmt_vector_for_cost *prologue_cost_vec,
+ stmt_vector_for_cost *body_cost_vec)
{
int i;
- int inside_cost = 0, outside_cost = 0;
+ int inside_cost = 0, prologue_cost = 0;
/* The SLP costs were already calculated during SLP tree build. */
if (PURE_SLP_STMT (stmt_info))
return;
- inside_cost = ncopies * vect_get_stmt_cost (vector_stmt);
-
/* FORNOW: Assuming maximum 2 args per stmts. */
for (i = 0; i < 2; i++)
- {
- if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
- outside_cost += vect_get_stmt_cost (vector_stmt);
- }
+ if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
+ prologue_cost += record_stmt_cost (prologue_cost_vec, 1, vector_stmt,
+ stmt_info, 0, vect_prologue);
+
+ /* Pass the inside-of-loop statements to the target-specific cost model. */
+ inside_cost = record_stmt_cost (body_cost_vec, ncopies, vector_stmt,
+ stmt_info, 0, vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_simple_cost: inside_cost = %d, "
- "outside_cost = %d .", inside_cost, outside_cost);
-
- /* Set the costs either in STMT_INFO or SLP_NODE (if exists). */
- stmt_vinfo_set_inside_of_loop_cost (stmt_info, slp_node, inside_cost);
- stmt_vinfo_set_outside_of_loop_cost (stmt_info, slp_node, outside_cost);
+ "prologue_cost = %d .", inside_cost, prologue_cost);
}
@@ -773,34 +833,38 @@ vect_model_promotion_demotion_cost (stmt_vec_info stmt_info,
enum vect_def_type *dt, int pwr)
{
int i, tmp;
- int inside_cost = 0, outside_cost = 0, single_stmt_cost;
+ int inside_cost = 0, prologue_cost = 0;
+ loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
+ bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
+ void *target_cost_data;
/* The SLP costs were already calculated during SLP tree build. */
if (PURE_SLP_STMT (stmt_info))
return;
- single_stmt_cost = vect_get_stmt_cost (vec_promote_demote);
+ if (loop_vinfo)
+ target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
+ else
+ target_cost_data = BB_VINFO_TARGET_COST_DATA (bb_vinfo);
+
for (i = 0; i < pwr + 1; i++)
{
tmp = (STMT_VINFO_TYPE (stmt_info) == type_promotion_vec_info_type) ?
(i + 1) : i;
- inside_cost += vect_pow2 (tmp) * single_stmt_cost;
+ inside_cost += add_stmt_cost (target_cost_data, vect_pow2 (tmp),
+ vec_promote_demote, stmt_info, 0,
+ vect_body);
}
/* FORNOW: Assuming maximum 2 args per stmts. */
for (i = 0; i < 2; i++)
- {
- if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
- outside_cost += vect_get_stmt_cost (vector_stmt);
- }
+ if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
+ prologue_cost += add_stmt_cost (target_cost_data, 1, vector_stmt,
+ stmt_info, 0, vect_prologue);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_promotion_demotion_cost: inside_cost = %d, "
- "outside_cost = %d .", inside_cost, outside_cost);
-
- /* Set the costs in STMT_INFO. */
- stmt_vinfo_set_inside_of_loop_cost (stmt_info, NULL, inside_cost);
- stmt_vinfo_set_outside_of_loop_cost (stmt_info, NULL, outside_cost);
+ "prologue_cost = %d .", inside_cost, prologue_cost);
}
/* Function vect_cost_group_size
@@ -829,10 +893,12 @@ vect_cost_group_size (stmt_vec_info stmt_info)
void
vect_model_store_cost (stmt_vec_info stmt_info, int ncopies,
bool store_lanes_p, enum vect_def_type dt,
- slp_tree slp_node)
+ slp_tree slp_node,
+ stmt_vector_for_cost *prologue_cost_vec,
+ stmt_vector_for_cost *body_cost_vec)
{
int group_size;
- unsigned int inside_cost = 0, outside_cost = 0;
+ unsigned int inside_cost = 0, prologue_cost = 0;
struct data_reference *first_dr;
gimple first_stmt;
@@ -841,7 +907,8 @@ vect_model_store_cost (stmt_vec_info stmt_info, int ncopies,
return;
if (dt == vect_constant_def || dt == vect_external_def)
- outside_cost = vect_get_stmt_cost (scalar_to_vec);
+ prologue_cost += record_stmt_cost (prologue_cost_vec, 1, scalar_to_vec,
+ stmt_info, 0, vect_prologue);
/* Grouped access? */
if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
@@ -873,8 +940,10 @@ vect_model_store_cost (stmt_vec_info stmt_info, int ncopies,
if (!store_lanes_p && group_size > 1)
{
/* Uses a high and low interleave operation for each needed permute. */
- inside_cost = ncopies * exact_log2(group_size) * group_size
- * vect_get_stmt_cost (vec_perm);
+
+ int nstmts = ncopies * exact_log2 (group_size) * group_size;
+ inside_cost = record_stmt_cost (body_cost_vec, nstmts, vec_perm,
+ stmt_info, 0, vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_store_cost: strided group_size = %d .",
@@ -882,30 +951,31 @@ vect_model_store_cost (stmt_vec_info stmt_info, int ncopies,
}
/* Costs of the stores. */
- vect_get_store_cost (first_dr, ncopies, &inside_cost);
+ vect_get_store_cost (first_dr, ncopies, &inside_cost, body_cost_vec);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_store_cost: inside_cost = %d, "
- "outside_cost = %d .", inside_cost, outside_cost);
-
- /* Set the costs either in STMT_INFO or SLP_NODE (if exists). */
- stmt_vinfo_set_inside_of_loop_cost (stmt_info, slp_node, inside_cost);
- stmt_vinfo_set_outside_of_loop_cost (stmt_info, slp_node, outside_cost);
+ "prologue_cost = %d .", inside_cost, prologue_cost);
}
/* Calculate cost of DR's memory access. */
void
vect_get_store_cost (struct data_reference *dr, int ncopies,
- unsigned int *inside_cost)
+ unsigned int *inside_cost,
+ stmt_vector_for_cost *body_cost_vec)
{
int alignment_support_scheme = vect_supportable_dr_alignment (dr, false);
+ gimple stmt = DR_STMT (dr);
+ stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
switch (alignment_support_scheme)
{
case dr_aligned:
{
- *inside_cost += ncopies * vect_get_stmt_cost (vector_store);
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies,
+ vector_store, stmt_info, 0,
+ vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_store_cost: aligned.");
@@ -915,14 +985,10 @@ vect_get_store_cost (struct data_reference *dr, int ncopies,
case dr_unaligned_supported:
{
- gimple stmt = DR_STMT (dr);
- stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
- tree vectype = STMT_VINFO_VECTYPE (stmt_info);
-
/* Here, we assign an additional cost for the unaligned store. */
- *inside_cost += ncopies
- * targetm.vectorize.builtin_vectorization_cost (unaligned_store,
- vectype, DR_MISALIGNMENT (dr));
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies,
+ unaligned_store, stmt_info,
+ DR_MISALIGNMENT (dr), vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_store_cost: unaligned supported by "
@@ -955,13 +1021,15 @@ vect_get_store_cost (struct data_reference *dr, int ncopies,
access scheme chosen. */
void
-vect_model_load_cost (stmt_vec_info stmt_info, int ncopies, bool load_lanes_p,
- slp_tree slp_node)
+vect_model_load_cost (stmt_vec_info stmt_info, int ncopies,
+ bool load_lanes_p, slp_tree slp_node,
+ stmt_vector_for_cost *prologue_cost_vec,
+ stmt_vector_for_cost *body_cost_vec)
{
int group_size;
gimple first_stmt;
struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info), *first_dr;
- unsigned int inside_cost = 0, outside_cost = 0;
+ unsigned int inside_cost = 0, prologue_cost = 0;
/* The SLP costs were already calculated during SLP tree build. */
if (PURE_SLP_STMT (stmt_info))
@@ -988,8 +1056,9 @@ vect_model_load_cost (stmt_vec_info stmt_info, int ncopies, bool load_lanes_p,
if (!load_lanes_p && group_size > 1)
{
/* Uses an even and odd extract operations for each needed permute. */
- inside_cost = ncopies * exact_log2(group_size) * group_size
- * vect_get_stmt_cost (vec_perm);
+ int nstmts = ncopies * exact_log2 (group_size) * group_size;
+ inside_cost += record_stmt_cost (body_cost_vec, nstmts, vec_perm,
+ stmt_info, 0, vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_load_cost: strided group_size = %d .",
@@ -1001,41 +1070,44 @@ vect_model_load_cost (stmt_vec_info stmt_info, int ncopies, bool load_lanes_p,
{
/* N scalar loads plus gathering them into a vector. */
tree vectype = STMT_VINFO_VECTYPE (stmt_info);
- inside_cost += (vect_get_stmt_cost (scalar_load) * ncopies
- * TYPE_VECTOR_SUBPARTS (vectype));
- inside_cost += ncopies
- * targetm.vectorize.builtin_vectorization_cost (vec_construct,
- vectype, 0);
+ inside_cost += record_stmt_cost (body_cost_vec,
+ ncopies * TYPE_VECTOR_SUBPARTS (vectype),
+ scalar_load, stmt_info, 0, vect_body);
+ inside_cost += record_stmt_cost (body_cost_vec, ncopies, vec_construct,
+ stmt_info, 0, vect_body);
}
else
vect_get_load_cost (first_dr, ncopies,
((!STMT_VINFO_GROUPED_ACCESS (stmt_info))
|| group_size > 1 || slp_node),
- &inside_cost, &outside_cost);
+ &inside_cost, &prologue_cost,
+ prologue_cost_vec, body_cost_vec, true);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_load_cost: inside_cost = %d, "
- "outside_cost = %d .", inside_cost, outside_cost);
-
- /* Set the costs either in STMT_INFO or SLP_NODE (if exists). */
- stmt_vinfo_set_inside_of_loop_cost (stmt_info, slp_node, inside_cost);
- stmt_vinfo_set_outside_of_loop_cost (stmt_info, slp_node, outside_cost);
+ "prologue_cost = %d .", inside_cost, prologue_cost);
}
/* Calculate cost of DR's memory access. */
void
vect_get_load_cost (struct data_reference *dr, int ncopies,
- bool add_realign_cost, unsigned int *inside_cost,
- unsigned int *outside_cost)
+ bool add_realign_cost, unsigned int *inside_cost,
+ unsigned int *prologue_cost,
+ stmt_vector_for_cost *prologue_cost_vec,
+ stmt_vector_for_cost *body_cost_vec,
+ bool record_prologue_costs)
{
int alignment_support_scheme = vect_supportable_dr_alignment (dr, false);
+ gimple stmt = DR_STMT (dr);
+ stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
switch (alignment_support_scheme)
{
case dr_aligned:
{
- *inside_cost += ncopies * vect_get_stmt_cost (vector_load);
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies, vector_load,
+ stmt_info, 0, vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_load_cost: aligned.");
@@ -1044,14 +1116,11 @@ vect_get_load_cost (struct data_reference *dr, int ncopies,
}
case dr_unaligned_supported:
{
- gimple stmt = DR_STMT (dr);
- stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
- tree vectype = STMT_VINFO_VECTYPE (stmt_info);
-
/* Here, we assign an additional cost for the unaligned load. */
- *inside_cost += ncopies
- * targetm.vectorize.builtin_vectorization_cost (unaligned_load,
- vectype, DR_MISALIGNMENT (dr));
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies,
+ unaligned_load, stmt_info,
+ DR_MISALIGNMENT (dr), vect_body);
+
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_load_cost: unaligned supported by "
"hardware.");
@@ -1060,14 +1129,17 @@ vect_get_load_cost (struct data_reference *dr, int ncopies,
}
case dr_explicit_realign:
{
- *inside_cost += ncopies * (2 * vect_get_stmt_cost (vector_load)
- + vect_get_stmt_cost (vec_perm));
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies * 2,
+ vector_load, stmt_info, 0, vect_body);
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies,
+ vec_perm, stmt_info, 0, vect_body);
/* FIXME: If the misalignment remains fixed across the iterations of
the containing loop, the following cost should be added to the
- outside costs. */
+ prologue costs. */
if (targetm.vectorize.builtin_mask_for_load)
- *inside_cost += vect_get_stmt_cost (vector_stmt);
+ *inside_cost += record_stmt_cost (body_cost_vec, 1, vector_stmt,
+ stmt_info, 0, vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump, "vect_model_load_cost: explicit realign");
@@ -1087,15 +1159,21 @@ vect_get_load_cost (struct data_reference *dr, int ncopies,
access in the group. Inside the loop, there is a load op
and a realignment op. */
- if (add_realign_cost)
+ if (add_realign_cost && record_prologue_costs)
{
- *outside_cost = 2 * vect_get_stmt_cost (vector_stmt);
+ *prologue_cost += record_stmt_cost (prologue_cost_vec, 2,
+ vector_stmt, stmt_info,
+ 0, vect_prologue);
if (targetm.vectorize.builtin_mask_for_load)
- *outside_cost += vect_get_stmt_cost (vector_stmt);
+ *prologue_cost += record_stmt_cost (prologue_cost_vec, 1,
+ vector_stmt, stmt_info,
+ 0, vect_prologue);
}
- *inside_cost += ncopies * (vect_get_stmt_cost (vector_load)
- + vect_get_stmt_cost (vec_perm));
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies, vector_load,
+ stmt_info, 0, vect_body);
+ *inside_cost += record_stmt_cost (body_cost_vec, ncopies, vec_perm,
+ stmt_info, 0, vect_body);
if (vect_print_dump_info (REPORT_COST))
fprintf (vect_dump,
@@ -1192,13 +1270,10 @@ vect_init_vector (gimple stmt, tree val, tree type, gimple_stmt_iterator *gsi)
val = fold_unary (VIEW_CONVERT_EXPR, TREE_TYPE (type), val);
else
{
- new_var = create_tmp_reg (TREE_TYPE (type), NULL);
- add_referenced_var (new_var);
+ new_temp = make_ssa_name (TREE_TYPE (type), NULL);
init_stmt = gimple_build_assign_with_ops (NOP_EXPR,
- new_var, val,
+ new_temp, val,
NULL_TREE);
- new_temp = make_ssa_name (new_var, init_stmt);
- gimple_assign_set_lhs (init_stmt, new_temp);
vect_init_vector_1 (stmt, init_stmt, gsi);
val = new_temp;
}
@@ -1207,7 +1282,6 @@ vect_init_vector (gimple stmt, tree val, tree type, gimple_stmt_iterator *gsi)
}
new_var = vect_get_new_vect_var (type, vect_simple_var, "cst_");
- add_referenced_var (new_var);
init_stmt = gimple_build_assign (new_var, val);
new_temp = make_ssa_name (new_var, init_stmt);
gimple_assign_set_lhs (init_stmt, new_temp);
@@ -1526,6 +1600,32 @@ vect_finish_stmt_generation (gimple stmt, gimple vec_stmt,
gcc_assert (gimple_code (stmt) != GIMPLE_LABEL);
+ if (!gsi_end_p (*gsi)
+ && gimple_has_mem_ops (vec_stmt))
+ {
+ gimple at_stmt = gsi_stmt (*gsi);
+ tree vuse = gimple_vuse (at_stmt);
+ if (vuse && TREE_CODE (vuse) == SSA_NAME)
+ {
+ tree vdef = gimple_vdef (at_stmt);
+ gimple_set_vuse (vec_stmt, gimple_vuse (at_stmt));
+ /* If we have an SSA vuse and insert a store, update virtual
+ SSA form to avoid triggering the renamer. Do so only
+ if we can easily see all uses - which is what almost always
+ happens with the way vectorized stmts are inserted. */
+ if ((vdef && TREE_CODE (vdef) == SSA_NAME)
+ && ((is_gimple_assign (vec_stmt)
+ && !is_gimple_reg (gimple_assign_lhs (vec_stmt)))
+ || (is_gimple_call (vec_stmt)
+ && !(gimple_call_flags (vec_stmt)
+ & (ECF_CONST|ECF_PURE|ECF_NOVOPS)))))
+ {
+ tree new_vdef = copy_ssa_name (vuse, vec_stmt);
+ gimple_set_vdef (vec_stmt, new_vdef);
+ SET_USE (gimple_vuse_op (at_stmt), new_vdef);
+ }
+ }
+ }
gsi_insert_before (gsi, vec_stmt, GSI_SAME_STMT);
set_vinfo_for_stmt (vec_stmt, new_stmt_vec_info (vec_stmt, loop_vinfo,
@@ -1719,7 +1819,7 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
STMT_VINFO_TYPE (stmt_info) = call_vec_info_type;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "=== vectorizable_call ===");
- vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
+ vect_model_simple_cost (stmt_info, ncopies, dt, NULL, NULL);
return true;
}
@@ -2334,8 +2434,8 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
case WIDEN:
if (supportable_widening_operation (code, stmt, vectype_out, vectype_in,
- &decl1, &decl2, &code1, &code2,
- &multi_step_cvt, &interm_types))
+ &code1, &code2, &multi_step_cvt,
+ &interm_types))
{
/* Binary widening operation can only be supported directly by the
architecture. */
@@ -2367,18 +2467,16 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
goto unsupported;
}
else if (!supportable_widening_operation (code, stmt, vectype_out,
- cvt_type, &decl1, &decl2,
- &codecvt1, &codecvt2,
- &multi_step_cvt,
+ cvt_type, &codecvt1,
+ &codecvt2, &multi_step_cvt,
&interm_types))
continue;
else
gcc_assert (multi_step_cvt == 0);
if (supportable_widening_operation (NOP_EXPR, stmt, cvt_type,
- vectype_in, NULL, NULL, &code1,
- &code2, &multi_step_cvt,
- &interm_types))
+ vectype_in, &code1, &code2,
+ &multi_step_cvt, &interm_types))
break;
}
@@ -2433,7 +2531,7 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
if (code == FIX_TRUNC_EXPR || code == FLOAT_EXPR)
{
STMT_VINFO_TYPE (stmt_info) = type_conversion_vec_info_type;
- vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
+ vect_model_simple_cost (stmt_info, ncopies, dt, NULL, NULL);
}
else if (modifier == NARROW)
{
@@ -2841,7 +2939,7 @@ vectorizable_assignment (gimple stmt, gimple_stmt_iterator *gsi,
STMT_VINFO_TYPE (stmt_info) = assignment_vec_info_type;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "=== vectorizable_assignment ===");
- vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
+ vect_model_simple_cost (stmt_info, ncopies, dt, NULL, NULL);
return true;
}
@@ -3187,7 +3285,7 @@ vectorizable_shift (gimple stmt, gimple_stmt_iterator *gsi,
STMT_VINFO_TYPE (stmt_info) = shift_vec_info_type;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "=== vectorizable_shift ===");
- vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
+ vect_model_simple_cost (stmt_info, ncopies, dt, NULL, NULL);
return true;
}
@@ -3304,18 +3402,17 @@ static bool
vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
gimple *vec_stmt, slp_tree slp_node)
{
- tree vec_dest, vec_dest2 = NULL_TREE;
- tree vec_dest3 = NULL_TREE, vec_dest4 = NULL_TREE;
+ tree vec_dest;
tree scalar_dest;
tree op0, op1 = NULL_TREE, op2 = NULL_TREE;
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
- tree vectype, wide_vectype = NULL_TREE;
+ tree vectype;
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
enum tree_code code;
enum machine_mode vec_mode;
tree new_temp;
int op_type;
- optab optab, optab2 = NULL;
+ optab optab;
int icode;
tree def;
gimple def_stmt;
@@ -3332,8 +3429,6 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
tree vop0, vop1, vop2;
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
int vf;
- unsigned char *sel = NULL;
- tree decl1 = NULL_TREE, decl2 = NULL_TREE, perm_mask = NULL_TREE;
if (!STMT_VINFO_RELEVANT_P (stmt_info) && !bb_vinfo)
return false;
@@ -3455,87 +3550,26 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
|| code == RROTATE_EXPR)
return false;
- optab = optab_for_tree_code (code, vectype, optab_default);
-
/* Supportable by target? */
- if (!optab && code != MULT_HIGHPART_EXPR)
+
+ vec_mode = TYPE_MODE (vectype);
+ if (code == MULT_HIGHPART_EXPR)
{
- if (vect_print_dump_info (REPORT_DETAILS))
- fprintf (vect_dump, "no optab.");
- return false;
+ if (can_mult_highpart_p (vec_mode, TYPE_UNSIGNED (vectype)))
+ icode = LAST_INSN_CODE;
+ else
+ icode = CODE_FOR_nothing;
}
- vec_mode = TYPE_MODE (vectype);
- icode = optab ? (int) optab_handler (optab, vec_mode) : CODE_FOR_nothing;
-
- if (icode == CODE_FOR_nothing
- && code == MULT_HIGHPART_EXPR
- && VECTOR_MODE_P (vec_mode)
- && BYTES_BIG_ENDIAN == WORDS_BIG_ENDIAN)
- {
- /* If MULT_HIGHPART_EXPR isn't supported by the backend, see
- if we can emit VEC_WIDEN_MULT_{LO,HI}_EXPR followed by VEC_PERM_EXPR
- or builtin_mul_widen_{even,odd} followed by VEC_PERM_EXPR. */
- unsigned int prec = TYPE_PRECISION (TREE_TYPE (scalar_dest));
- unsigned int unsignedp = TYPE_UNSIGNED (TREE_TYPE (scalar_dest));
- tree wide_type
- = build_nonstandard_integer_type (prec * 2, unsignedp);
- wide_vectype
- = get_same_sized_vectype (wide_type, vectype);
-
- sel = XALLOCAVEC (unsigned char, nunits_in);
- if (VECTOR_MODE_P (TYPE_MODE (wide_vectype))
- && GET_MODE_SIZE (TYPE_MODE (wide_vectype))
- == GET_MODE_SIZE (vec_mode))
- {
- if (targetm.vectorize.builtin_mul_widen_even
- && (decl1 = targetm.vectorize.builtin_mul_widen_even (vectype))
- && targetm.vectorize.builtin_mul_widen_odd
- && (decl2 = targetm.vectorize.builtin_mul_widen_odd (vectype))
- && TYPE_MODE (TREE_TYPE (TREE_TYPE (decl1)))
- == TYPE_MODE (wide_vectype))
- {
- for (i = 0; i < nunits_in; i++)
- sel[i] = !BYTES_BIG_ENDIAN + (i & ~1)
- + ((i & 1) ? nunits_in : 0);
- if (can_vec_perm_p (vec_mode, false, sel))
- icode = 0;
- }
- if (icode == CODE_FOR_nothing)
- {
- decl1 = NULL_TREE;
- decl2 = NULL_TREE;
- optab = optab_for_tree_code (VEC_WIDEN_MULT_LO_EXPR,
- vectype, optab_default);
- optab2 = optab_for_tree_code (VEC_WIDEN_MULT_HI_EXPR,
- vectype, optab_default);
- if (optab != NULL
- && optab2 != NULL
- && optab_handler (optab, vec_mode) != CODE_FOR_nothing
- && optab_handler (optab2, vec_mode) != CODE_FOR_nothing
- && insn_data[optab_handler (optab, vec_mode)].operand[0].mode
- == TYPE_MODE (wide_vectype)
- && insn_data[optab_handler (optab2,
- vec_mode)].operand[0].mode
- == TYPE_MODE (wide_vectype))
- {
- for (i = 0; i < nunits_in; i++)
- sel[i] = !BYTES_BIG_ENDIAN + 2 * i;
- if (can_vec_perm_p (vec_mode, false, sel))
- icode = optab_handler (optab, vec_mode);
- }
- }
- }
- if (icode == CODE_FOR_nothing)
+ else
+ {
+ optab = optab_for_tree_code (code, vectype, optab_default);
+ if (!optab)
{
- if (optab_for_tree_code (code, vectype, optab_default) == NULL)
- {
- if (vect_print_dump_info (REPORT_DETAILS))
- fprintf (vect_dump, "no optab.");
- return false;
- }
- wide_vectype = NULL_TREE;
- optab2 = NULL;
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "no optab.");
+ return false;
}
+ icode = (int) optab_handler (optab, vec_mode);
}
if (icode == CODE_FOR_nothing)
@@ -3565,7 +3599,7 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
STMT_VINFO_TYPE (stmt_info) = op_vec_info_type;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "=== vectorizable_operation ===");
- vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
+ vect_model_simple_cost (stmt_info, ncopies, dt, NULL, NULL);
return true;
}
@@ -3575,32 +3609,7 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
fprintf (vect_dump, "transform binary/unary operation.");
/* Handle def. */
- if (wide_vectype)
- {
- vec_dest = vect_create_destination_var (scalar_dest, wide_vectype);
- vec_dest2 = vect_create_destination_var (scalar_dest, wide_vectype);
- vec_dest3 = vect_create_destination_var (scalar_dest, vectype);
- vec_dest4 = vect_create_destination_var (scalar_dest, vectype);
- perm_mask = vect_gen_perm_mask (vectype, sel);
- }
- else
- vec_dest = vect_create_destination_var (scalar_dest, vectype);
-
- /* Allocate VECs for vector operands. In case of SLP, vector operands are
- created in the previous stages of the recursion, so no allocation is
- needed, except for the case of shift with scalar shift argument. In that
- case we store the scalar operand in VEC_OPRNDS1 for every vector stmt to
- be created to vectorize the SLP group, i.e., SLP_NODE->VEC_STMTS_SIZE.
- In case of loop-based vectorization we allocate VECs of size 1. We
- allocate VEC_OPRNDS1 only in case of binary operation. */
- if (!slp_node)
- {
- vec_oprnds0 = VEC_alloc (tree, heap, 1);
- if (op_type == binary_op || op_type == ternary_op)
- vec_oprnds1 = VEC_alloc (tree, heap, 1);
- if (op_type == ternary_op)
- vec_oprnds2 = VEC_alloc (tree, heap, 1);
- }
+ vec_dest = vect_create_destination_var (scalar_dest, vectype);
/* In case the vectorization factor (VF) is bigger than the number
of elements that we can fit in a vectype (nunits), we have to generate
@@ -3693,66 +3702,6 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
? VEC_index (tree, vec_oprnds1, i) : NULL_TREE);
vop2 = ((op_type == ternary_op)
? VEC_index (tree, vec_oprnds2, i) : NULL_TREE);
- if (wide_vectype)
- {
- tree new_temp2, vce;
-
- gcc_assert (code == MULT_HIGHPART_EXPR);
- if (decl1 != NULL_TREE)
- {
- new_stmt = gimple_build_call (decl1, 2, vop0, vop1);
- new_temp = make_ssa_name (vec_dest, new_stmt);
- gimple_call_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
-
- new_stmt = gimple_build_call (decl2, 2, vop0, vop1);
- new_temp2 = make_ssa_name (vec_dest2, new_stmt);
- gimple_call_set_lhs (new_stmt, new_temp2);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
- }
- else
- {
- new_temp = make_ssa_name (vec_dest, NULL);
- new_stmt
- = gimple_build_assign_with_ops (BYTES_BIG_ENDIAN
- ? VEC_WIDEN_MULT_HI_EXPR
- : VEC_WIDEN_MULT_LO_EXPR,
- new_temp, vop0, vop1);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
-
- new_temp2 = make_ssa_name (vec_dest2, NULL);
- new_stmt
- = gimple_build_assign_with_ops (BYTES_BIG_ENDIAN
- ? VEC_WIDEN_MULT_LO_EXPR
- : VEC_WIDEN_MULT_HI_EXPR,
- new_temp2, vop0, vop1);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
- }
-
- vce = build1 (VIEW_CONVERT_EXPR, vectype, new_temp);
- new_stmt = gimple_build_assign_with_ops (VIEW_CONVERT_EXPR,
- vec_dest3, vce,
- NULL_TREE);
- new_temp = make_ssa_name (vec_dest3, new_stmt);
- gimple_assign_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
-
- vce = build1 (VIEW_CONVERT_EXPR, vectype, new_temp2);
- new_stmt = gimple_build_assign_with_ops (VIEW_CONVERT_EXPR,
- vec_dest4, vce,
- NULL_TREE);
- new_temp2 = make_ssa_name (vec_dest4, new_stmt);
- gimple_assign_set_lhs (new_stmt, new_temp2);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
-
- new_temp = permute_vec_elements (new_temp, new_temp2,
- perm_mask, stmt, gsi);
- new_stmt = SSA_NAME_DEF_STMT (new_temp);
- if (slp_node)
- VEC_quick_push (gimple, SLP_TREE_VEC_STMTS (slp_node),
- new_stmt);
- continue;
- }
new_stmt = gimple_build_assign_with_ops3 (code, vec_dest,
vop0, vop1, vop2);
new_temp = make_ssa_name (vec_dest, new_stmt);
@@ -3938,7 +3887,8 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
if (!vec_stmt) /* transformation not required. */
{
STMT_VINFO_TYPE (stmt_info) = store_vec_info_type;
- vect_model_store_cost (stmt_info, ncopies, store_lanes_p, dt, NULL);
+ vect_model_store_cost (stmt_info, ncopies, store_lanes_p, dt,
+ NULL, NULL, NULL);
return true;
}
@@ -4494,7 +4444,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
if (!vec_stmt) /* transformation not required. */
{
STMT_VINFO_TYPE (stmt_info) = load_vec_info_type;
- vect_model_load_cost (stmt_info, ncopies, load_lanes_p, NULL);
+ vect_model_load_cost (stmt_info, ncopies, load_lanes_p, NULL, NULL, NULL);
return true;
}
@@ -4601,7 +4551,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
gcc_assert (TYPE_VECTOR_SUBPARTS (TREE_TYPE (op))
== TYPE_VECTOR_SUBPARTS (idxtype));
var = vect_get_new_vect_var (idxtype, vect_simple_var, NULL);
- add_referenced_var (var);
var = make_ssa_name (var, NULL);
op = build1 (VIEW_CONVERT_EXPR, idxtype, op);
new_stmt
@@ -4619,7 +4568,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
gcc_assert (TYPE_VECTOR_SUBPARTS (vectype)
== TYPE_VECTOR_SUBPARTS (rettype));
var = vect_get_new_vect_var (rettype, vect_simple_var, NULL);
- add_referenced_var (var);
op = make_ssa_name (var, new_stmt);
gimple_call_set_lhs (new_stmt, op);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
@@ -4728,15 +4676,13 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
NULL_TREE, true,
GSI_SAME_STMT);
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, newref);
- newoff = SSA_NAME_VAR (running_off);
+ newoff = copy_ssa_name (running_off, NULL);
if (POINTER_TYPE_P (TREE_TYPE (newoff)))
incr = gimple_build_assign_with_ops (POINTER_PLUS_EXPR, newoff,
running_off, stride_step);
else
incr = gimple_build_assign_with_ops (PLUS_EXPR, newoff,
running_off, stride_step);
- newoff = make_ssa_name (newoff, incr);
- gimple_assign_set_lhs (incr, newoff);
vect_finish_stmt_generation (stmt, incr, gsi);
running_off = newoff;
@@ -5030,13 +4976,12 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
dr_explicit_realign,
dataref_ptr, NULL);
+ ptr = copy_ssa_name (dataref_ptr, NULL);
new_stmt = gimple_build_assign_with_ops
- (BIT_AND_EXPR, NULL_TREE, dataref_ptr,
+ (BIT_AND_EXPR, ptr, dataref_ptr,
build_int_cst
(TREE_TYPE (dataref_ptr),
-(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
- ptr = make_ssa_name (SSA_NAME_VAR (dataref_ptr), new_stmt);
- gimple_assign_set_lhs (new_stmt, ptr);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
data_ref
= build2 (MEM_REF, vectype, ptr,
@@ -5060,7 +5005,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
build_int_cst
(TREE_TYPE (ptr),
-(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
- ptr = make_ssa_name (SSA_NAME_VAR (dataref_ptr), new_stmt);
+ ptr = copy_ssa_name (dataref_ptr, new_stmt);
gimple_assign_set_lhs (new_stmt, ptr);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
data_ref
@@ -5070,14 +5015,12 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
break;
}
case dr_explicit_realign_optimized:
+ new_temp = copy_ssa_name (dataref_ptr, NULL);
new_stmt = gimple_build_assign_with_ops
- (BIT_AND_EXPR, NULL_TREE, dataref_ptr,
+ (BIT_AND_EXPR, new_temp, dataref_ptr,
build_int_cst
(TREE_TYPE (dataref_ptr),
-(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
- new_temp = make_ssa_name (SSA_NAME_VAR (dataref_ptr),
- new_stmt);
- gimple_assign_set_lhs (new_stmt, new_temp);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
data_ref
= build2 (MEM_REF, vectype, new_temp,
@@ -5933,9 +5876,7 @@ new_stmt_vec_info (gimple stmt, loop_vec_info loop_vinfo,
else
STMT_VINFO_DEF_TYPE (res) = vect_internal_def;
- STMT_VINFO_SAME_ALIGN_REFS (res) = VEC_alloc (dr_p, heap, 5);
- STMT_VINFO_INSIDE_OF_LOOP_COST (res) = 0;
- STMT_VINFO_OUTSIDE_OF_LOOP_COST (res) = 0;
+ STMT_VINFO_SAME_ALIGN_REFS (res) = NULL;
STMT_SLP_TYPE (res) = loop_vect;
GROUP_FIRST_ELEMENT (res) = NULL;
GROUP_NEXT_ELEMENT (res) = NULL;
@@ -6320,9 +6261,6 @@ vect_is_simple_use_1 (tree operand, gimple stmt, loop_vec_info loop_vinfo,
Output:
- CODE1 and CODE2 are codes of vector operations to be used when
vectorizing the operation, if available.
- - DECL1 and DECL2 are decls of target builtin functions to be used
- when vectorizing the operation, if available. In this case,
- CODE1 and CODE2 are CALL_EXPR.
- MULTI_STEP_CVT determines the number of required intermediate steps in
case of multi-step conversion (like char->short->int - in that case
MULTI_STEP_CVT will be 1).
@@ -6332,7 +6270,6 @@ vect_is_simple_use_1 (tree operand, gimple stmt, loop_vec_info loop_vinfo,
bool
supportable_widening_operation (enum tree_code code, gimple stmt,
tree vectype_out, tree vectype_in,
- tree *decl1, tree *decl2,
enum tree_code *code1, enum tree_code *code2,
int *multi_step_cvt,
VEC (tree, heap) **interm_types)
@@ -6340,7 +6277,6 @@ supportable_widening_operation (enum tree_code code, gimple stmt,
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_info);
struct loop *vect_loop = NULL;
- bool ordered_p;
enum machine_mode vec_mode;
enum insn_code icode1, icode2;
optab optab1, optab2;
@@ -6356,56 +6292,60 @@ supportable_widening_operation (enum tree_code code, gimple stmt,
if (loop_info)
vect_loop = LOOP_VINFO_LOOP (loop_info);
- /* The result of a vectorized widening operation usually requires two vectors
- (because the widened results do not fit into one vector). The generated
- vector results would normally be expected to be generated in the same
- order as in the original scalar computation, i.e. if 8 results are
- generated in each vector iteration, they are to be organized as follows:
- vect1: [res1,res2,res3,res4], vect2: [res5,res6,res7,res8].
-
- However, in the special case that the result of the widening operation is
- used in a reduction computation only, the order doesn't matter (because
- when vectorizing a reduction we change the order of the computation).
- Some targets can take advantage of this and generate more efficient code.
- For example, targets like Altivec, that support widen_mult using a sequence
- of {mult_even,mult_odd} generate the following vectors:
- vect1: [res1,res3,res5,res7], vect2: [res2,res4,res6,res8].
-
- When vectorizing outer-loops, we execute the inner-loop sequentially
- (each vectorized inner-loop iteration contributes to VF outer-loop
- iterations in parallel). We therefore don't allow to change the order
- of the computation in the inner-loop during outer-loop vectorization. */
-
- if (vect_loop
- && STMT_VINFO_RELEVANT (stmt_info) == vect_used_by_reduction
- && !nested_in_vect_loop_p (vect_loop, stmt))
- ordered_p = false;
- else
- ordered_p = true;
-
- if (!ordered_p
- && code == WIDEN_MULT_EXPR
- && targetm.vectorize.builtin_mul_widen_even
- && targetm.vectorize.builtin_mul_widen_even (vectype)
- && targetm.vectorize.builtin_mul_widen_odd
- && targetm.vectorize.builtin_mul_widen_odd (vectype))
- {
- if (vect_print_dump_info (REPORT_DETAILS))
- fprintf (vect_dump, "Unordered widening operation detected.");
-
- *code1 = *code2 = CALL_EXPR;
- *decl1 = targetm.vectorize.builtin_mul_widen_even (vectype);
- *decl2 = targetm.vectorize.builtin_mul_widen_odd (vectype);
- return true;
- }
-
switch (code)
{
case WIDEN_MULT_EXPR:
+ /* The result of a vectorized widening operation usually requires
+ two vectors (because the widened results do not fit into one vector).
+ The generated vector results would normally be expected to be
+ generated in the same order as in the original scalar computation,
+ i.e. if 8 results are generated in each vector iteration, they are
+ to be organized as follows:
+ vect1: [res1,res2,res3,res4],
+ vect2: [res5,res6,res7,res8].
+
+ However, in the special case that the result of the widening
+ operation is used in a reduction computation only, the order doesn't
+ matter (because when vectorizing a reduction we change the order of
+ the computation). Some targets can take advantage of this and
+ generate more efficient code. For example, targets like Altivec,
+ that support widen_mult using a sequence of {mult_even,mult_odd}
+ generate the following vectors:
+ vect1: [res1,res3,res5,res7],
+ vect2: [res2,res4,res6,res8].
+
+ When vectorizing outer-loops, we execute the inner-loop sequentially
+ (each vectorized inner-loop iteration contributes to VF outer-loop
+ iterations in parallel). We therefore don't allow to change the
+ order of the computation in the inner-loop during outer-loop
+ vectorization. */
+ /* TODO: Another case in which order doesn't *really* matter is when we
+ widen and then contract again, e.g. (short)((int)x * y >> 8).
+ Normally, pack_trunc performs an even/odd permute, whereas the
+ repack from an even/odd expansion would be an interleave, which
+ would be significantly simpler for e.g. AVX2. */
+ /* In any case, in order to avoid duplicating the code below, recurse
+ on VEC_WIDEN_MULT_EVEN_EXPR. If it succeeds, all the return values
+ are properly set up for the caller. If we fail, we'll continue with
+ a VEC_WIDEN_MULT_LO/HI_EXPR check. */
+ if (vect_loop
+ && STMT_VINFO_RELEVANT (stmt_info) == vect_used_by_reduction
+ && !nested_in_vect_loop_p (vect_loop, stmt)
+ && supportable_widening_operation (VEC_WIDEN_MULT_EVEN_EXPR,
+ stmt, vectype_out, vectype_in,
+ code1, code2, multi_step_cvt,
+ interm_types))
+ return true;
c1 = VEC_WIDEN_MULT_LO_EXPR;
c2 = VEC_WIDEN_MULT_HI_EXPR;
break;
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ /* Support the recursion induced just above. */
+ c1 = VEC_WIDEN_MULT_EVEN_EXPR;
+ c2 = VEC_WIDEN_MULT_ODD_EXPR;
+ break;
+
case WIDEN_LSHIFT_EXPR:
c1 = VEC_WIDEN_LSHIFT_LO_EXPR;
c2 = VEC_WIDEN_LSHIFT_HI_EXPR;
@@ -6431,7 +6371,7 @@ supportable_widening_operation (enum tree_code code, gimple stmt,
gcc_unreachable ();
}
- if (BYTES_BIG_ENDIAN)
+ if (BYTES_BIG_ENDIAN && c1 != VEC_WIDEN_MULT_EVEN_EXPR)
{
enum tree_code ctmp = c1;
c1 = c2;
@@ -6609,7 +6549,7 @@ supportable_narrowing_operation (enum tree_code code,
= lang_hooks.types.type_for_mode (TYPE_MODE (vectype_out), 0);
interm_optab
= optab_for_tree_code (c1, intermediate_type, optab_default);
- if (interm_optab != NULL
+ if (interm_optab != unknown_optab
&& (icode2 = optab_handler (optab1, vec_mode)) != CODE_FOR_nothing
&& insn_data[icode1].operand[0].mode
== insn_data[icode2].operand[0].mode)
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 2522e02259d..8856a2c51e6 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -63,11 +63,9 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tree-pretty-print.h"
#include "tree-flow.h"
-#include "tree-dump.h"
#include "cfgloop.h"
#include "tree-vectorizer.h"
#include "tree-pass.h"
-#include "timevar.h"
/* vect_dump will be set to stderr or dump_file if exist. */
FILE *vect_dump;
@@ -225,8 +223,6 @@ vectorize_loops (void)
/* ----------- Finalize. ----------- */
- mark_sym_for_renaming (gimple_vop (cfun));
-
for (i = 1; i < vect_loops_num; i++)
{
loop_vec_info loop_vinfo;
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 4c5ea36017d..76418386e1a 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -71,6 +71,32 @@ enum vect_def_type {
|| ((D) == vect_double_reduction_def) \
|| ((D) == vect_nested_cycle))
+/* Structure to encapsulate information about a group of like
+ instructions to be presented to the target cost model. */
+typedef struct _stmt_info_for_cost {
+ int count;
+ enum vect_cost_for_stmt kind;
+ gimple stmt;
+ int misalign;
+} stmt_info_for_cost;
+
+DEF_VEC_O (stmt_info_for_cost);
+DEF_VEC_ALLOC_O (stmt_info_for_cost, heap);
+
+typedef VEC(stmt_info_for_cost, heap) *stmt_vector_for_cost;
+
+static inline void
+add_stmt_info_to_vec (stmt_vector_for_cost *stmt_cost_vec, int count,
+ enum vect_cost_for_stmt kind, gimple stmt, int misalign)
+{
+ stmt_info_for_cost si;
+ si.count = count;
+ si.kind = kind;
+ si.stmt = stmt;
+ si.misalign = misalign;
+ VEC_safe_push (stmt_info_for_cost, heap, *stmt_cost_vec, &si);
+}
+
/************************************************************************
SLP
************************************************************************/
@@ -92,12 +118,6 @@ typedef struct _slp_tree {
scalar elements in one scalar iteration (GROUP_SIZE) multiplied by VF
divided by vector size. */
unsigned int vec_stmts_size;
- /* Vectorization costs associated with SLP node. */
- struct
- {
- int outside_of_loop; /* Statements generated outside loop. */
- int inside_of_loop; /* Statements generated inside loop. */
- } cost;
} *slp_tree;
DEF_VEC_P(slp_tree);
@@ -116,11 +136,7 @@ typedef struct _slp_instance {
unsigned int unrolling_factor;
/* Vectorization costs associated with SLP instance. */
- struct
- {
- int outside_of_loop; /* Statements generated outside loop. */
- int inside_of_loop; /* Statements generated inside loop. */
- } cost;
+ stmt_vector_for_cost body_cost_vec;
/* Loads permutation relatively to the stores, NULL if there is no
permutation. */
@@ -141,8 +157,7 @@ DEF_VEC_ALLOC_P(slp_instance, heap);
#define SLP_INSTANCE_TREE(S) (S)->root
#define SLP_INSTANCE_GROUP_SIZE(S) (S)->group_size
#define SLP_INSTANCE_UNROLLING_FACTOR(S) (S)->unrolling_factor
-#define SLP_INSTANCE_OUTSIDE_OF_LOOP_COST(S) (S)->cost.outside_of_loop
-#define SLP_INSTANCE_INSIDE_OF_LOOP_COST(S) (S)->cost.inside_of_loop
+#define SLP_INSTANCE_BODY_COST_VEC(S) (S)->body_cost_vec
#define SLP_INSTANCE_LOAD_PERMUTATION(S) (S)->load_permutation
#define SLP_INSTANCE_LOADS(S) (S)->loads
#define SLP_INSTANCE_FIRST_LOAD_STMT(S) (S)->first_load
@@ -151,8 +166,6 @@ DEF_VEC_ALLOC_P(slp_instance, heap);
#define SLP_TREE_SCALAR_STMTS(S) (S)->stmts
#define SLP_TREE_VEC_STMTS(S) (S)->vec_stmts
#define SLP_TREE_NUMBER_OF_VEC_STMTS(S) (S)->vec_stmts_size
-#define SLP_TREE_OUTSIDE_OF_LOOP_COST(S) (S)->cost.outside_of_loop
-#define SLP_TREE_INSIDE_OF_LOOP_COST(S) (S)->cost.inside_of_loop
/* This structure is used in creation of an SLP tree. Each instance
corresponds to the same operand in a group of scalar stmts in an SLP
@@ -186,6 +199,7 @@ typedef struct _vect_peel_extended_info
struct _vect_peel_info peel_info;
unsigned int inside_cost;
unsigned int outside_cost;
+ stmt_vector_for_cost body_cost_vec;
} *vect_peel_extended_info;
/*-----------------------------------------------------------------*/
@@ -274,11 +288,20 @@ typedef struct _loop_vec_info {
/* Hash table used to choose the best peeling option. */
htab_t peeling_htab;
+ /* Cost data used by the target cost model. */
+ void *target_cost_data;
+
/* When we have grouped data accesses with gaps, we may introduce invalid
memory accesses. We peel the last iteration of the loop to prevent
this. */
bool peeling_for_gaps;
+ /* Reductions are canonicalized so that the last operand is the reduction
+ operand. If this places a constant into RHS1, this decanonicalizes
+ GIMPLE for other phases, so we must track when this has occurred and
+ fix it up. */
+ bool operands_swapped;
+
} *loop_vec_info;
/* Access Functions. */
@@ -307,7 +330,9 @@ typedef struct _loop_vec_info {
#define LOOP_VINFO_REDUCTIONS(L) (L)->reductions
#define LOOP_VINFO_REDUCTION_CHAINS(L) (L)->reduction_chains
#define LOOP_VINFO_PEELING_HTAB(L) (L)->peeling_htab
+#define LOOP_VINFO_TARGET_COST_DATA(L) (L)->target_cost_data
#define LOOP_VINFO_PEELING_FOR_GAPS(L) (L)->peeling_for_gaps
+#define LOOP_VINFO_OPERANDS_SWAPPED(L) (L)->operands_swapped
#define LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT(L) \
VEC_length (gimple, (L)->may_misalign_stmts) > 0
@@ -350,13 +375,18 @@ typedef struct _bb_vec_info {
/* All data dependences in the basic block. */
VEC (ddr_p, heap) *ddrs;
+
+ /* Cost data used by the target cost model. */
+ void *target_cost_data;
+
} *bb_vec_info;
-#define BB_VINFO_BB(B) (B)->bb
-#define BB_VINFO_GROUPED_STORES(B) (B)->grouped_stores
-#define BB_VINFO_SLP_INSTANCES(B) (B)->slp_instances
-#define BB_VINFO_DATAREFS(B) (B)->datarefs
-#define BB_VINFO_DDRS(B) (B)->ddrs
+#define BB_VINFO_BB(B) (B)->bb
+#define BB_VINFO_GROUPED_STORES(B) (B)->grouped_stores
+#define BB_VINFO_SLP_INSTANCES(B) (B)->slp_instances
+#define BB_VINFO_DATAREFS(B) (B)->datarefs
+#define BB_VINFO_DDRS(B) (B)->ddrs
+#define BB_VINFO_TARGET_COST_DATA(B) (B)->target_cost_data
static inline bb_vec_info
vec_info_for_bb (basic_block bb)
@@ -530,13 +560,6 @@ typedef struct _stmt_vec_info {
indicates whether the stmt needs to be vectorized. */
enum vect_relevant relevant;
- /* Vectorization costs associated with statement. */
- struct
- {
- int outside_of_loop; /* Statements generated outside loop. */
- int inside_of_loop; /* Statements generated inside loop. */
- } cost;
-
/* The bb_vec_info with respect to which STMT is vectorized. */
bb_vec_info bb_vinfo;
@@ -593,8 +616,6 @@ typedef struct _stmt_vec_info {
#define GROUP_READ_WRITE_DEPENDENCE(S) (S)->read_write_dep
#define STMT_VINFO_RELEVANT_P(S) ((S)->relevant != vect_unused_in_scope)
-#define STMT_VINFO_OUTSIDE_OF_LOOP_COST(S) (S)->cost.outside_of_loop
-#define STMT_VINFO_INSIDE_OF_LOOP_COST(S) (S)->cost.inside_of_loop
#define HYBRID_SLP_STMT(S) ((S)->slp_type == hybrid)
#define PURE_SLP_STMT(S) ((S)->slp_type == pure_slp)
@@ -733,30 +754,6 @@ is_loop_header_bb_p (basic_block bb)
return false;
}
-/* Set inside loop vectorization cost. */
-
-static inline void
-stmt_vinfo_set_inside_of_loop_cost (stmt_vec_info stmt_info, slp_tree slp_node,
- int cost)
-{
- if (slp_node)
- SLP_TREE_INSIDE_OF_LOOP_COST (slp_node) = cost;
- else
- STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info) = cost;
-}
-
-/* Set inside loop vectorization cost. */
-
-static inline void
-stmt_vinfo_set_outside_of_loop_cost (stmt_vec_info stmt_info, slp_tree slp_node,
- int cost)
-{
- if (slp_node)
- SLP_TREE_OUTSIDE_OF_LOOP_COST (slp_node) = cost;
- else
- STMT_VINFO_OUTSIDE_OF_LOOP_COST (stmt_info) = cost;
-}
-
/* Return pow2 (X). */
static inline int
@@ -770,18 +767,61 @@ vect_pow2 (int x)
return res;
}
+/* Alias targetm.vectorize.builtin_vectorization_cost. */
+
+static inline int
+builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
+ tree vectype, int misalign)
+{
+ return targetm.vectorize.builtin_vectorization_cost (type_of_cost,
+ vectype, misalign);
+}
+
/* Get cost by calling cost target builtin. */
static inline
int vect_get_stmt_cost (enum vect_cost_for_stmt type_of_cost)
{
- tree dummy_type = NULL;
- int dummy = 0;
+ return builtin_vectorization_cost (type_of_cost, NULL, 0);
+}
- return targetm.vectorize.builtin_vectorization_cost (type_of_cost,
- dummy_type, dummy);
+/* Alias targetm.vectorize.init_cost. */
+
+static inline void *
+init_cost (struct loop *loop_info)
+{
+ return targetm.vectorize.init_cost (loop_info);
+}
+
+/* Alias targetm.vectorize.add_stmt_cost. */
+
+static inline unsigned
+add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
+ stmt_vec_info stmt_info, int misalign,
+ enum vect_cost_model_location where)
+{
+ return targetm.vectorize.add_stmt_cost (data, count, kind,
+ stmt_info, misalign, where);
}
+/* Alias targetm.vectorize.finish_cost. */
+
+static inline void
+finish_cost (void *data, unsigned *prologue_cost,
+ unsigned *body_cost, unsigned *epilogue_cost)
+{
+ targetm.vectorize.finish_cost (data, prologue_cost, body_cost, epilogue_cost);
+}
+
+/* Alias targetm.vectorize.destroy_cost_data. */
+
+static inline void
+destroy_cost_data (void *data)
+{
+ targetm.vectorize.destroy_cost_data (data);
+}
+
+
/*-----------------------------------------------------------------*/
/* Info on data references alignment. */
/*-----------------------------------------------------------------*/
@@ -838,9 +878,8 @@ extern bool vect_is_simple_use_1 (tree, gimple, loop_vec_info,
bb_vec_info, gimple *,
tree *, enum vect_def_type *, tree *);
extern bool supportable_widening_operation (enum tree_code, gimple, tree, tree,
- tree *, tree *, enum tree_code *,
- enum tree_code *, int *,
- VEC (tree, heap) **);
+ enum tree_code *, enum tree_code *,
+ int *, VEC (tree, heap) **);
extern bool supportable_narrowing_operation (enum tree_code, tree, tree,
enum tree_code *,
int *, VEC (tree, heap) **);
@@ -849,10 +888,18 @@ extern stmt_vec_info new_stmt_vec_info (gimple stmt, loop_vec_info,
extern void free_stmt_vec_info (gimple stmt);
extern tree vectorizable_function (gimple, tree, tree);
extern void vect_model_simple_cost (stmt_vec_info, int, enum vect_def_type *,
- slp_tree);
+ stmt_vector_for_cost *,
+ stmt_vector_for_cost *);
extern void vect_model_store_cost (stmt_vec_info, int, bool,
- enum vect_def_type, slp_tree);
-extern void vect_model_load_cost (stmt_vec_info, int, bool, slp_tree);
+ enum vect_def_type, slp_tree,
+ stmt_vector_for_cost *,
+ stmt_vector_for_cost *);
+extern void vect_model_load_cost (stmt_vec_info, int, bool, slp_tree,
+ stmt_vector_for_cost *,
+ stmt_vector_for_cost *);
+extern unsigned record_stmt_cost (stmt_vector_for_cost *, int,
+ enum vect_cost_for_stmt, stmt_vec_info,
+ int, enum vect_cost_model_location);
extern void vect_finish_stmt_generation (gimple, gimple,
gimple_stmt_iterator *);
extern bool vect_mark_stmts_to_be_vectorized (loop_vec_info);
@@ -867,8 +914,11 @@ extern bool vect_analyze_stmt (gimple, bool *, slp_tree);
extern bool vectorizable_condition (gimple, gimple_stmt_iterator *, gimple *,
tree, int, slp_tree);
extern void vect_get_load_cost (struct data_reference *, int, bool,
- unsigned int *, unsigned int *);
-extern void vect_get_store_cost (struct data_reference *, int, unsigned int *);
+ unsigned int *, unsigned int *,
+ stmt_vector_for_cost *,
+ stmt_vector_for_cost *, bool);
+extern void vect_get_store_cost (struct data_reference *, int,
+ unsigned int *, stmt_vector_for_cost *);
extern bool vect_supportable_shift (enum tree_code, tree);
extern void vect_get_vec_defs (tree, tree, gimple, VEC (tree, heap) **,
VEC (tree, heap) **, slp_tree, int);
@@ -930,7 +980,9 @@ extern bool vectorizable_induction (gimple, gimple_stmt_iterator *, gimple *);
extern int vect_estimate_min_profitable_iters (loop_vec_info);
extern tree get_initial_def_for_reduction (gimple, tree, tree *);
extern int vect_min_worthwhile_factor (enum tree_code);
-extern int vect_get_known_peeling_cost (loop_vec_info, int, int *, int);
+extern int vect_get_known_peeling_cost (loop_vec_info, int, int *, int,
+ stmt_vector_for_cost *,
+ stmt_vector_for_cost *);
extern int vect_get_single_scalar_iteration_cost (loop_vec_info);
/* In tree-vect-slp.c. */
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 32c5afa49c7..f949e8b9bee 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -30,8 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-pass.h"
#include "tree-dump.h"
-#include "timevar.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "diagnostic-core.h"
#include "intl.h"
@@ -355,32 +353,35 @@ nonnull_arg_p (const_tree arg)
return true;
fntype = TREE_TYPE (current_function_decl);
- attrs = lookup_attribute ("nonnull", TYPE_ATTRIBUTES (fntype));
+ for (attrs = TYPE_ATTRIBUTES (fntype); attrs; attrs = TREE_CHAIN (attrs))
+ {
+ attrs = lookup_attribute ("nonnull", attrs);
- /* If "nonnull" wasn't specified, we know nothing about the argument. */
- if (attrs == NULL_TREE)
- return false;
+ /* If "nonnull" wasn't specified, we know nothing about the argument. */
+ if (attrs == NULL_TREE)
+ return false;
- /* If "nonnull" applies to all the arguments, then ARG is non-null. */
- if (TREE_VALUE (attrs) == NULL_TREE)
- return true;
+ /* If "nonnull" applies to all the arguments, then ARG is non-null. */
+ if (TREE_VALUE (attrs) == NULL_TREE)
+ return true;
- /* Get the position number for ARG in the function signature. */
- for (arg_num = 1, t = DECL_ARGUMENTS (current_function_decl);
- t;
- t = DECL_CHAIN (t), arg_num++)
- {
- if (t == arg)
- break;
- }
+ /* Get the position number for ARG in the function signature. */
+ for (arg_num = 1, t = DECL_ARGUMENTS (current_function_decl);
+ t;
+ t = DECL_CHAIN (t), arg_num++)
+ {
+ if (t == arg)
+ break;
+ }
- gcc_assert (t == arg);
+ gcc_assert (t == arg);
- /* Now see if ARG_NUM is mentioned in the nonnull list. */
- for (t = TREE_VALUE (attrs); t; t = TREE_CHAIN (t))
- {
- if (compare_tree_int (TREE_VALUE (t), arg_num) == 0)
- return true;
+ /* Now see if ARG_NUM is mentioned in the nonnull list. */
+ for (t = TREE_VALUE (attrs); t; t = TREE_CHAIN (t))
+ {
+ if (compare_tree_int (TREE_VALUE (t), arg_num) == 0)
+ return true;
+ }
}
return false;
@@ -717,9 +718,9 @@ get_value_range (const_tree var)
/* If VAR is a default definition of a parameter, the variable can
take any value in VAR's type. */
- sym = SSA_NAME_VAR (var);
if (SSA_NAME_IS_DEFAULT_DEF (var))
{
+ sym = SSA_NAME_VAR (var);
if (TREE_CODE (sym) == PARM_DECL)
{
/* Try to use the "nonnull" attribute to create ~[0, 0]
@@ -1339,41 +1340,25 @@ compare_values (tree val1, tree val2)
}
-/* Return 1 if VAL is inside value range VR (VR->MIN <= VAL <= VR->MAX),
- 0 if VAL is not inside VR,
+/* Return 1 if VAL is inside value range MIN <= VAL <= MAX,
+ 0 if VAL is not inside [MIN, MAX],
-2 if we cannot tell either way.
- FIXME, the current semantics of this functions are a bit quirky
- when taken in the context of VRP. In here we do not care
- about VR's type. If VR is the anti-range ~[3, 5] the call
- value_inside_range (4, VR) will return 1.
-
- This is counter-intuitive in a strict sense, but the callers
- currently expect this. They are calling the function
- merely to determine whether VR->MIN <= VAL <= VR->MAX. The
- callers are applying the VR_RANGE/VR_ANTI_RANGE semantics
- themselves.
-
- This also applies to value_ranges_intersect_p and
- range_includes_zero_p. The semantics of VR_RANGE and
- VR_ANTI_RANGE should be encoded here, but that also means
- adapting the users of these functions to the new semantics.
-
Benchmark compile/20001226-1.c compilation time after changing this
function. */
static inline int
-value_inside_range (tree val, value_range_t * vr)
+value_inside_range (tree val, tree min, tree max)
{
int cmp1, cmp2;
- cmp1 = operand_less_p (val, vr->min);
+ cmp1 = operand_less_p (val, min);
if (cmp1 == -2)
return -2;
if (cmp1 == 1)
return 0;
- cmp2 = operand_less_p (vr->max, val);
+ cmp2 = operand_less_p (max, val);
if (cmp2 == -2)
return -2;
@@ -1402,23 +1387,14 @@ value_ranges_intersect_p (value_range_t *vr0, value_range_t *vr1)
}
-/* Return true if VR includes the value zero, false otherwise. FIXME,
- currently this will return false for an anti-range like ~[-4, 3].
- This will be wrong when the semantics of value_inside_range are
- modified (currently the users of this function expect these
- semantics). */
+/* Return 1 if [MIN, MAX] includes the value zero, 0 if it does not
+ include the value zero, -2 if we cannot tell. */
-static inline bool
-range_includes_zero_p (value_range_t *vr)
+static inline int
+range_includes_zero_p (tree min, tree max)
{
- tree zero;
-
- gcc_assert (vr->type != VR_UNDEFINED
- && vr->type != VR_VARYING
- && !symbolic_range_p (vr));
-
- zero = build_int_cst (TREE_TYPE (vr->min), 0);
- return (value_inside_range (zero, vr) == 1);
+ tree zero = build_int_cst (TREE_TYPE (min), 0);
+ return value_inside_range (zero, min, max);
}
/* Return true if *VR is know to only contain nonnegative values. */
@@ -2212,6 +2188,28 @@ extract_range_from_multiplicative_op_1 (value_range_t *vr,
set_value_range (vr, type, min, max, NULL);
}
+/* Some quadruple precision helpers. */
+static int
+quad_int_cmp (double_int l0, double_int h0,
+ double_int l1, double_int h1, bool uns)
+{
+ int c = double_int_cmp (h0, h1, uns);
+ if (c != 0) return c;
+ return double_int_ucmp (l0, l1);
+}
+
+static void
+quad_int_pair_sort (double_int *l0, double_int *h0,
+ double_int *l1, double_int *h1, bool uns)
+{
+ if (quad_int_cmp (*l0, *h0, *l1, *h1, uns) > 0)
+ {
+ double_int tmp;
+ tmp = *l0; *l0 = *l1; *l1 = tmp;
+ tmp = *h0; *h0 = *h1; *h1 = tmp;
+ }
+}
+
/* Extract range information from a binary operation CODE based on
the ranges of each of its operands, *VR0 and *VR1 with resulting
type EXPR_TYPE. The resulting range is stored in *VR. */
@@ -2376,15 +2374,14 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
/* For integer ranges, apply the operation to each end of the
range and see what we end up with. */
- if (code == PLUS_EXPR)
+ if (code == PLUS_EXPR || code == MINUS_EXPR)
{
/* If we have a PLUS_EXPR with two VR_RANGE integer constant
ranges compute the precise range for such case if possible. */
if (range_int_cst_p (&vr0)
&& range_int_cst_p (&vr1)
- /* We attempt to do infinite precision signed integer arithmetic,
- thus we need two more bits than the possibly unsigned inputs. */
- && TYPE_PRECISION (expr_type) < HOST_BITS_PER_DOUBLE_INT - 1)
+ /* We need as many bits as the possibly unsigned inputs. */
+ && TYPE_PRECISION (expr_type) <= HOST_BITS_PER_DOUBLE_INT)
{
double_int min0 = tree_to_double_int (vr0.min);
double_int max0 = tree_to_double_int (vr0.max);
@@ -2396,9 +2393,60 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
double_int type_max
= double_int_max_value (TYPE_PRECISION (expr_type), uns);
double_int dmin, dmax;
+ int min_ovf = 0;
+ int max_ovf = 0;
- dmin = double_int_add (min0, min1);
- dmax = double_int_add (max0, max1);
+ if (code == PLUS_EXPR)
+ {
+ dmin = double_int_add (min0, min1);
+ dmax = double_int_add (max0, max1);
+
+ /* Check for overflow in double_int. */
+ if (double_int_cmp (min1, double_int_zero, uns)
+ != double_int_cmp (dmin, min0, uns))
+ min_ovf = double_int_cmp (min0, dmin, uns);
+ if (double_int_cmp (max1, double_int_zero, uns)
+ != double_int_cmp (dmax, max0, uns))
+ max_ovf = double_int_cmp (max0, dmax, uns);
+ }
+ else /* if (code == MINUS_EXPR) */
+ {
+ dmin = double_int_sub (min0, max1);
+ dmax = double_int_sub (max0, min1);
+
+ if (double_int_cmp (double_int_zero, max1, uns)
+ != double_int_cmp (dmin, min0, uns))
+ min_ovf = double_int_cmp (min0, max1, uns);
+ if (double_int_cmp (double_int_zero, min1, uns)
+ != double_int_cmp (dmax, max0, uns))
+ max_ovf = double_int_cmp (max0, min1, uns);
+ }
+
+ /* For non-wrapping arithmetic look at possibly smaller
+ value-ranges of the type. */
+ if (!TYPE_OVERFLOW_WRAPS (expr_type))
+ {
+ if (vrp_val_min (expr_type))
+ type_min = tree_to_double_int (vrp_val_min (expr_type));
+ if (vrp_val_max (expr_type))
+ type_max = tree_to_double_int (vrp_val_max (expr_type));
+ }
+
+ /* Check for type overflow. */
+ if (min_ovf == 0)
+ {
+ if (double_int_cmp (dmin, type_min, uns) == -1)
+ min_ovf = -1;
+ else if (double_int_cmp (dmin, type_max, uns) == 1)
+ min_ovf = 1;
+ }
+ if (max_ovf == 0)
+ {
+ if (double_int_cmp (dmax, type_min, uns) == -1)
+ max_ovf = -1;
+ else if (double_int_cmp (dmax, type_max, uns) == 1)
+ max_ovf = 1;
+ }
if (TYPE_OVERFLOW_WRAPS (expr_type))
{
@@ -2408,21 +2456,15 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
= double_int_ext (dmin, TYPE_PRECISION (expr_type), uns);
double_int tmax
= double_int_ext (dmax, TYPE_PRECISION (expr_type), uns);
- gcc_assert (double_int_scmp (dmin, dmax) <= 0);
- if ((double_int_scmp (dmin, type_min) == -1
- && double_int_scmp (dmax, type_min) == -1)
- || (double_int_scmp (dmin, type_max) == 1
- && double_int_scmp (dmax, type_max) == 1)
- || (double_int_scmp (type_min, dmin) <= 0
- && double_int_scmp (dmax, type_max) <= 0))
+ if (min_ovf == max_ovf)
{
/* No overflow or both overflow or underflow. The
range kind stays VR_RANGE. */
min = double_int_to_tree (expr_type, tmin);
max = double_int_to_tree (expr_type, tmax);
}
- else if (double_int_scmp (dmin, type_min) == -1
- && double_int_scmp (dmax, type_max) == 1)
+ else if (min_ovf == -1
+ && max_ovf == 1)
{
/* Underflow and overflow, drop to VR_VARYING. */
set_value_range_to_varying (vr);
@@ -2432,22 +2474,21 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
{
/* Min underflow or max overflow. The range kind
changes to VR_ANTI_RANGE. */
+ bool covers = false;
double_int tem = tmin;
- gcc_assert ((double_int_scmp (dmin, type_min) == -1
- && double_int_scmp (dmax, type_min) >= 0
- && double_int_scmp (dmax, type_max) <= 0)
- || (double_int_scmp (dmax, type_max) == 1
- && double_int_scmp (dmin, type_min) >= 0
- && double_int_scmp (dmin, type_max) <= 0));
+ gcc_assert ((min_ovf == -1 && max_ovf == 0)
+ || (max_ovf == 1 && min_ovf == 0));
type = VR_ANTI_RANGE;
tmin = double_int_add (tmax, double_int_one);
+ if (double_int_cmp (tmin, tmax, uns) < 0)
+ covers = true;
tmax = double_int_add (tem, double_int_minus_one);
+ if (double_int_cmp (tmax, tem, uns) > 0)
+ covers = true;
/* If the anti-range would cover nothing, drop to varying.
Likewise if the anti-range bounds are outside of the
types values. */
- if (double_int_cmp (tmin, tmax, uns) > 0
- || double_int_cmp (tmin, type_min, uns) < 0
- || double_int_cmp (tmax, type_max, uns) > 0)
+ if (covers || double_int_cmp (tmin, tmax, uns) > 0)
{
set_value_range_to_varying (vr);
return;
@@ -2458,16 +2499,9 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
}
else
{
- /* For non-wrapping arithmetic look at possibly smaller
- value-ranges of the type. */
- if (vrp_val_min (expr_type))
- type_min = tree_to_double_int (vrp_val_min (expr_type));
- if (vrp_val_max (expr_type))
- type_max = tree_to_double_int (vrp_val_max (expr_type));
-
/* If overflow does not wrap, saturate to the types min/max
value. */
- if (double_int_scmp (dmin, type_min) == -1)
+ if (min_ovf == -1)
{
if (needs_overflow_infinity (expr_type)
&& supports_overflow_infinity (expr_type))
@@ -2475,7 +2509,7 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
else
min = double_int_to_tree (expr_type, type_min);
}
- else if (double_int_scmp (dmin, type_max) == 1)
+ else if (min_ovf == 1)
{
if (needs_overflow_infinity (expr_type)
&& supports_overflow_infinity (expr_type))
@@ -2486,7 +2520,7 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
else
min = double_int_to_tree (expr_type, dmin);
- if (double_int_scmp (dmax, type_min) == -1)
+ if (max_ovf == -1)
{
if (needs_overflow_infinity (expr_type)
&& supports_overflow_infinity (expr_type))
@@ -2494,7 +2528,7 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
else
max = double_int_to_tree (expr_type, type_min);
}
- else if (double_int_scmp (dmax, type_max) == 1)
+ else if (max_ovf == 1)
{
if (needs_overflow_infinity (expr_type)
&& supports_overflow_infinity (expr_type))
@@ -2509,10 +2543,14 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
&& supports_overflow_infinity (expr_type))
{
if (is_negative_overflow_infinity (vr0.min)
- || is_negative_overflow_infinity (vr1.min))
+ || (code == PLUS_EXPR
+ ? is_negative_overflow_infinity (vr1.min)
+ : is_positive_overflow_infinity (vr1.max)))
min = negative_overflow_infinity (expr_type);
if (is_positive_overflow_infinity (vr0.max)
- || is_positive_overflow_infinity (vr1.max))
+ || (code == PLUS_EXPR
+ ? is_positive_overflow_infinity (vr1.max)
+ : is_negative_overflow_infinity (vr1.min)))
max = positive_overflow_infinity (expr_type);
}
}
@@ -2556,6 +2594,123 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
}
else if (code == MULT_EXPR)
{
+ /* Fancy code so that with unsigned, [-3,-1]*[-3,-1] does not
+ drop to varying. */
+ if (range_int_cst_p (&vr0)
+ && range_int_cst_p (&vr1)
+ && TYPE_OVERFLOW_WRAPS (expr_type))
+ {
+ double_int min0, max0, min1, max1, sizem1, size;
+ double_int prod0l, prod0h, prod1l, prod1h,
+ prod2l, prod2h, prod3l, prod3h;
+ bool uns0, uns1, uns;
+
+ sizem1 = double_int_max_value (TYPE_PRECISION (expr_type), true);
+ size = double_int_add (sizem1, double_int_one);
+
+ min0 = tree_to_double_int (vr0.min);
+ max0 = tree_to_double_int (vr0.max);
+ min1 = tree_to_double_int (vr1.min);
+ max1 = tree_to_double_int (vr1.max);
+
+ uns0 = TYPE_UNSIGNED (expr_type);
+ uns1 = uns0;
+
+ /* Canonicalize the intervals. */
+ if (TYPE_UNSIGNED (expr_type))
+ {
+ double_int min2 = double_int_sub (size, min0);
+ if (double_int_cmp (min2, max0, true) < 0)
+ {
+ min0 = double_int_neg (min2);
+ max0 = double_int_sub (max0, size);
+ uns0 = false;
+ }
+
+ min2 = double_int_sub (size, min1);
+ if (double_int_cmp (min2, max1, true) < 0)
+ {
+ min1 = double_int_neg (min2);
+ max1 = double_int_sub (max1, size);
+ uns1 = false;
+ }
+ }
+ uns = uns0 & uns1;
+
+ mul_double_wide_with_sign (min0.low, min0.high,
+ min1.low, min1.high,
+ &prod0l.low, &prod0l.high,
+ &prod0h.low, &prod0h.high, true);
+ if (!uns0 && double_int_negative_p (min0))
+ prod0h = double_int_sub (prod0h, min1);
+ if (!uns1 && double_int_negative_p (min1))
+ prod0h = double_int_sub (prod0h, min0);
+
+ mul_double_wide_with_sign (min0.low, min0.high,
+ max1.low, max1.high,
+ &prod1l.low, &prod1l.high,
+ &prod1h.low, &prod1h.high, true);
+ if (!uns0 && double_int_negative_p (min0))
+ prod1h = double_int_sub (prod1h, max1);
+ if (!uns1 && double_int_negative_p (max1))
+ prod1h = double_int_sub (prod1h, min0);
+
+ mul_double_wide_with_sign (max0.low, max0.high,
+ min1.low, min1.high,
+ &prod2l.low, &prod2l.high,
+ &prod2h.low, &prod2h.high, true);
+ if (!uns0 && double_int_negative_p (max0))
+ prod2h = double_int_sub (prod2h, min1);
+ if (!uns1 && double_int_negative_p (min1))
+ prod2h = double_int_sub (prod2h, max0);
+
+ mul_double_wide_with_sign (max0.low, max0.high,
+ max1.low, max1.high,
+ &prod3l.low, &prod3l.high,
+ &prod3h.low, &prod3h.high, true);
+ if (!uns0 && double_int_negative_p (max0))
+ prod3h = double_int_sub (prod3h, max1);
+ if (!uns1 && double_int_negative_p (max1))
+ prod3h = double_int_sub (prod3h, max0);
+
+ /* Sort the 4 products. */
+ quad_int_pair_sort (&prod0l, &prod0h, &prod3l, &prod3h, uns);
+ quad_int_pair_sort (&prod1l, &prod1h, &prod2l, &prod2h, uns);
+ quad_int_pair_sort (&prod0l, &prod0h, &prod1l, &prod1h, uns);
+ quad_int_pair_sort (&prod2l, &prod2h, &prod3l, &prod3h, uns);
+
+ /* Max - min. */
+ if (double_int_zero_p (prod0l))
+ {
+ prod1l = double_int_zero;
+ prod1h = double_int_neg (prod0h);
+ }
+ else
+ {
+ prod1l = double_int_neg (prod0l);
+ prod1h = double_int_not (prod0h);
+ }
+ prod2l = double_int_add (prod3l, prod1l);
+ prod2h = double_int_add (prod3h, prod1h);
+ if (double_int_ucmp (prod2l, prod3l) < 0)
+ prod2h = double_int_add (prod2h, double_int_one); /* carry */
+
+ if (!double_int_zero_p (prod2h)
+ || double_int_cmp (prod2l, sizem1, true) >= 0)
+ {
+ /* the range covers all values. */
+ set_value_range_to_varying (vr);
+ return;
+ }
+
+ /* The following should handle the wrapping and selecting
+ VR_ANTI_RANGE for us. */
+ min = double_int_to_tree (expr_type, prod0l);
+ max = double_int_to_tree (expr_type, prod3l);
+ set_and_canonicalize_value_range (vr, VR_RANGE, min, max, NULL);
+ return;
+ }
+
/* If we have an unsigned MULT_EXPR with two VR_ANTI_RANGEs,
drop to VR_VARYING. It would take more effort to compute a
precise range for such a case. For example, if we have
@@ -2574,57 +2729,48 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
extract_range_from_multiplicative_op_1 (vr, code, &vr0, &vr1);
return;
}
- else if (code == RSHIFT_EXPR)
+ else if (code == RSHIFT_EXPR
+ || code == LSHIFT_EXPR)
{
/* If we have a RSHIFT_EXPR with any shift values outside [0..prec-1],
then drop to VR_VARYING. Outside of this range we get undefined
behavior from the shift operation. We cannot even trust
SHIFT_COUNT_TRUNCATED at this stage, because that applies to rtl
shifts, and the operation at the tree level may be widened. */
- if (vr1.type != VR_RANGE
- || !value_range_nonnegative_p (&vr1)
- || TREE_CODE (vr1.max) != INTEGER_CST
- || compare_tree_int (vr1.max, TYPE_PRECISION (expr_type) - 1) == 1)
+ if (range_int_cst_p (&vr1)
+ && compare_tree_int (vr1.min, 0) >= 0
+ && compare_tree_int (vr1.max, TYPE_PRECISION (expr_type)) == -1)
{
- set_value_range_to_varying (vr);
- return;
- }
-
- extract_range_from_multiplicative_op_1 (vr, code, &vr0, &vr1);
- return;
- }
- else if (code == LSHIFT_EXPR)
- {
- /* If we have a LSHIFT_EXPR with any shift values outside [0..prec-1],
- then drop to VR_VARYING. Outside of this range we get undefined
- behavior from the shift operation. We cannot even trust
- SHIFT_COUNT_TRUNCATED at this stage, because that applies to rtl
- shifts, and the operation at the tree level may be widened. */
- if (vr1.type != VR_RANGE
- || !value_range_nonnegative_p (&vr1)
- || TREE_CODE (vr1.max) != INTEGER_CST
- || compare_tree_int (vr1.max, TYPE_PRECISION (expr_type) - 1) == 1)
- {
- set_value_range_to_varying (vr);
- return;
- }
-
- /* We can map shifts by constants to MULT_EXPR handling. */
- if (range_int_cst_singleton_p (&vr1))
- {
- value_range_t vr1p = VR_INITIALIZER;
- vr1p.type = VR_RANGE;
- vr1p.min
- = double_int_to_tree (expr_type,
- double_int_lshift (double_int_one,
- TREE_INT_CST_LOW (vr1.min),
- TYPE_PRECISION (expr_type),
- false));
- vr1p.max = vr1p.min;
- extract_range_from_multiplicative_op_1 (vr, MULT_EXPR, &vr0, &vr1p);
- return;
+ if (code == RSHIFT_EXPR)
+ {
+ extract_range_from_multiplicative_op_1 (vr, code, &vr0, &vr1);
+ return;
+ }
+ /* We can map lshifts by constants to MULT_EXPR handling. */
+ else if (code == LSHIFT_EXPR
+ && range_int_cst_singleton_p (&vr1))
+ {
+ bool saved_flag_wrapv;
+ value_range_t vr1p = VR_INITIALIZER;
+ vr1p.type = VR_RANGE;
+ vr1p.min
+ = double_int_to_tree (expr_type,
+ double_int_lshift
+ (double_int_one,
+ TREE_INT_CST_LOW (vr1.min),
+ TYPE_PRECISION (expr_type),
+ false));
+ vr1p.max = vr1p.min;
+ /* We have to use a wrapping multiply though as signed overflow
+ on lshifts is implementation defined in C89. */
+ saved_flag_wrapv = flag_wrapv;
+ flag_wrapv = 1;
+ extract_range_from_binary_expr_1 (vr, MULT_EXPR, expr_type,
+ &vr0, &vr1p);
+ flag_wrapv = saved_flag_wrapv;
+ return;
+ }
}
-
set_value_range_to_varying (vr);
return;
}
@@ -2641,7 +2787,7 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
gives [min / 4, max / 4] range. */
if (vr1.type == VR_RANGE
&& !symbolic_range_p (&vr1)
- && !range_includes_zero_p (&vr1))
+ && range_includes_zero_p (vr1.min, vr1.max) == 0)
{
vr0.type = type = VR_RANGE;
vr0.min = vrp_val_min (expr_type);
@@ -2658,8 +2804,7 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
not eliminate a division by zero. */
if (cfun->can_throw_non_call_exceptions
&& (vr1.type != VR_RANGE
- || symbolic_range_p (&vr1)
- || range_includes_zero_p (&vr1)))
+ || range_includes_zero_p (vr1.min, vr1.max) != 0))
{
set_value_range_to_varying (vr);
return;
@@ -2670,8 +2815,7 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
include 0. */
if (vr0.type == VR_RANGE
&& (vr1.type != VR_RANGE
- || symbolic_range_p (&vr1)
- || range_includes_zero_p (&vr1)))
+ || range_includes_zero_p (vr1.min, vr1.max) != 0))
{
tree zero = build_int_cst (TREE_TYPE (vr0.min), 0);
int cmp;
@@ -2723,8 +2867,7 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
else if (code == TRUNC_MOD_EXPR)
{
if (vr1.type != VR_RANGE
- || symbolic_range_p (&vr1)
- || range_includes_zero_p (&vr1)
+ || range_includes_zero_p (vr1.min, vr1.max) != 0
|| vrp_val_is_min (vr1.min))
{
set_value_range_to_varying (vr);
@@ -2744,26 +2887,6 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
else
min = fold_unary_to_constant (NEGATE_EXPR, expr_type, max);
}
- else if (code == MINUS_EXPR)
- {
- /* If we have a MINUS_EXPR with two VR_ANTI_RANGEs, drop to
- VR_VARYING. It would take more effort to compute a precise
- range for such a case. For example, if we have op0 == 1 and
- op1 == 1 with their ranges both being ~[0,0], we would have
- op0 - op1 == 0, so we cannot claim that the difference is in
- ~[0,0]. Note that we are guaranteed to have
- vr0.type == vr1.type at this point. */
- if (vr0.type == VR_ANTI_RANGE)
- {
- set_value_range_to_varying (vr);
- return;
- }
-
- /* For MINUS_EXPR, apply the operation to the opposite ends of
- each range. */
- min = vrp_int_const_binop (code, vr0.min, vr1.max);
- max = vrp_int_const_binop (code, vr0.max, vr1.min);
- }
else if (code == BIT_AND_EXPR || code == BIT_IOR_EXPR || code == BIT_XOR_EXPR)
{
bool int_cst_range0, int_cst_range1;
@@ -3159,7 +3282,7 @@ extract_range_from_unary_expr_1 (value_range_t *vr,
~[-INF, min(MIN, MAX)]. */
if (vr0.type == VR_ANTI_RANGE)
{
- if (range_includes_zero_p (&vr0))
+ if (range_includes_zero_p (vr0.min, vr0.max) == 1)
{
/* Take the lower of the two values. */
if (cmp != 1)
@@ -3210,7 +3333,7 @@ extract_range_from_unary_expr_1 (value_range_t *vr,
/* If the range contains zero then we know that the minimum value in the
range will be zero. */
- else if (range_includes_zero_p (&vr0))
+ else if (range_includes_zero_p (vr0.min, vr0.max) == 1)
{
if (cmp == 1)
max = min;
@@ -3812,7 +3935,7 @@ compare_range_with_value (enum tree_code comp, value_range_t *vr, tree val,
return NULL_TREE;
/* ~[VAL_1, VAL_2] OP VAL is known if VAL_1 <= VAL <= VAL_2. */
- if (value_inside_range (val, vr) == 1)
+ if (value_inside_range (val, vr->min, vr->max) == 1)
return (comp == NE_EXPR) ? boolean_true_node : boolean_false_node;
return NULL_TREE;
@@ -4032,33 +4155,20 @@ debug_all_value_ranges (void)
static gimple
build_assert_expr_for (tree cond, tree v)
{
- tree n;
+ tree a;
gimple assertion;
- gcc_assert (TREE_CODE (v) == SSA_NAME);
- n = duplicate_ssa_name (v, NULL);
+ gcc_assert (TREE_CODE (v) == SSA_NAME
+ && COMPARISON_CLASS_P (cond));
- if (COMPARISON_CLASS_P (cond))
- {
- tree a = build2 (ASSERT_EXPR, TREE_TYPE (v), v, cond);
- assertion = gimple_build_assign (n, a);
- }
- else if (TREE_CODE (cond) == SSA_NAME)
- {
- /* Given V, build the assignment N = true. */
- gcc_assert (v == cond);
- assertion = gimple_build_assign (n, boolean_true_node);
- }
- else
- gcc_unreachable ();
-
- SSA_NAME_DEF_STMT (n) = assertion;
+ a = build2 (ASSERT_EXPR, TREE_TYPE (v), v, cond);
+ assertion = gimple_build_assign (NULL_TREE, a);
/* The new ASSERT_EXPR, creates a new SSA name that replaces the
- operand of the ASSERT_EXPR. Register the new name and the old one
- in the replacement table so that we can fix the SSA web after
- adding all the ASSERT_EXPRs. */
- register_new_name_mapping (n, v);
+ operand of the ASSERT_EXPR. Create it so the new name and the old one
+ are registered in the replacement table so that we can fix the SSA web
+ after adding all the ASSERT_EXPRs. */
+ create_new_def_for (v, assertion, NULL);
return assertion;
}
@@ -4151,7 +4261,7 @@ dump_asserts_for (FILE *file, tree name)
{
fprintf (file, "\n\tEDGE %d->%d", loc->e->src->index,
loc->e->dest->index);
- dump_edge_info (file, loc->e, 0);
+ dump_edge_info (file, loc->e, dump_flags, 0);
}
fprintf (file, "\n\tPREDICATE: ");
print_generic_expr (file, name, 0);
@@ -5454,19 +5564,19 @@ find_assert_locations_1 (basic_block bb, sbitmap live)
static bool
find_assert_locations (void)
{
- int *rpo = XCNEWVEC (int, last_basic_block + NUM_FIXED_BLOCKS);
- int *bb_rpo = XCNEWVEC (int, last_basic_block + NUM_FIXED_BLOCKS);
- int *last_rpo = XCNEWVEC (int, last_basic_block + NUM_FIXED_BLOCKS);
+ int *rpo = XNEWVEC (int, last_basic_block);
+ int *bb_rpo = XNEWVEC (int, last_basic_block);
+ int *last_rpo = XCNEWVEC (int, last_basic_block);
int rpo_cnt, i;
bool need_asserts;
- live = XCNEWVEC (sbitmap, last_basic_block + NUM_FIXED_BLOCKS);
+ live = XCNEWVEC (sbitmap, last_basic_block);
rpo_cnt = pre_and_rev_post_order_compute (NULL, rpo, false);
for (i = 0; i < rpo_cnt; ++i)
bb_rpo[rpo[i]] = i;
need_asserts = false;
- for (i = rpo_cnt-1; i >= 0; --i)
+ for (i = rpo_cnt - 1; i >= 0; --i)
{
basic_block bb = BASIC_BLOCK (rpo[i]);
edge e;
@@ -5489,7 +5599,7 @@ find_assert_locations (void)
FOR_EACH_EDGE (e, ei, bb->preds)
{
int pred = e->src->index;
- if (e->flags & EDGE_DFS_BACK)
+ if ((e->flags & EDGE_DFS_BACK) || pred == ENTRY_BLOCK)
continue;
if (!live[pred])
@@ -5527,7 +5637,7 @@ find_assert_locations (void)
XDELETEVEC (rpo);
XDELETEVEC (bb_rpo);
XDELETEVEC (last_rpo);
- for (i = 0; i < last_basic_block + NUM_FIXED_BLOCKS; ++i)
+ for (i = 0; i < last_basic_block; ++i)
if (live[i])
sbitmap_free (live[i]);
XDELETEVEC (live);
@@ -6022,11 +6132,13 @@ remove_range_assertions (void)
static bool
stmt_interesting_for_vrp (gimple stmt)
{
- if (gimple_code (stmt) == GIMPLE_PHI
- && is_gimple_reg (gimple_phi_result (stmt))
- && (INTEGRAL_TYPE_P (TREE_TYPE (gimple_phi_result (stmt)))
- || POINTER_TYPE_P (TREE_TYPE (gimple_phi_result (stmt)))))
- return true;
+ if (gimple_code (stmt) == GIMPLE_PHI)
+ {
+ tree res = gimple_phi_result (stmt);
+ return (!virtual_operand_p (res)
+ && (INTEGRAL_TYPE_P (TREE_TYPE (res))
+ || POINTER_TYPE_P (TREE_TYPE (res))));
+ }
else if (is_gimple_assign (stmt) || is_gimple_call (stmt))
{
tree lhs = gimple_get_lhs (stmt);
@@ -6764,6 +6876,84 @@ find_case_label_range (gimple stmt, tree min, tree max, size_t *min_idx,
}
}
+/* Searches the case label vector VEC for the ranges of CASE_LABELs that are
+ used in range VR. The indices are placed in MIN_IDX1, MAX_IDX, MIN_IDX2 and
+ MAX_IDX2. If the ranges of CASE_LABELs are empty then MAX_IDX1 < MIN_IDX1.
+ Returns true if the default label is not needed. */
+
+static bool
+find_case_label_ranges (gimple stmt, value_range_t *vr, size_t *min_idx1,
+ size_t *max_idx1, size_t *min_idx2,
+ size_t *max_idx2)
+{
+ size_t i, j, k, l;
+ unsigned int n = gimple_switch_num_labels (stmt);
+ bool take_default;
+ tree case_low, case_high;
+ tree min = vr->min, max = vr->max;
+
+ gcc_checking_assert (vr->type == VR_RANGE || vr->type == VR_ANTI_RANGE);
+
+ take_default = !find_case_label_range (stmt, min, max, &i, &j);
+
+ /* Set second range to emtpy. */
+ *min_idx2 = 1;
+ *max_idx2 = 0;
+
+ if (vr->type == VR_RANGE)
+ {
+ *min_idx1 = i;
+ *max_idx1 = j;
+ return !take_default;
+ }
+
+ /* Set first range to all case labels. */
+ *min_idx1 = 1;
+ *max_idx1 = n - 1;
+
+ if (i > j)
+ return false;
+
+ /* Make sure all the values of case labels [i , j] are contained in
+ range [MIN, MAX]. */
+ case_low = CASE_LOW (gimple_switch_label (stmt, i));
+ case_high = CASE_HIGH (gimple_switch_label (stmt, j));
+ if (tree_int_cst_compare (case_low, min) < 0)
+ i += 1;
+ if (case_high != NULL_TREE
+ && tree_int_cst_compare (max, case_high) < 0)
+ j -= 1;
+
+ if (i > j)
+ return false;
+
+ /* If the range spans case labels [i, j], the corresponding anti-range spans
+ the labels [1, i - 1] and [j + 1, n - 1]. */
+ k = j + 1;
+ l = n - 1;
+ if (k > l)
+ {
+ k = 1;
+ l = 0;
+ }
+
+ j = i - 1;
+ i = 1;
+ if (i > j)
+ {
+ i = k;
+ j = l;
+ k = 1;
+ l = 0;
+ }
+
+ *min_idx1 = i;
+ *max_idx1 = j;
+ *min_idx2 = k;
+ *max_idx2 = l;
+ return false;
+}
+
/* Visit switch statement STMT. If we can determine which edge
will be taken out of STMT's basic block, record it in
*TAKEN_EDGE_P and return SSA_PROP_INTERESTING. Otherwise, return
@@ -6774,7 +6964,7 @@ vrp_visit_switch_stmt (gimple stmt, edge *taken_edge_p)
{
tree op, val;
value_range_t *vr;
- size_t i = 0, j = 0;
+ size_t i = 0, j = 0, k, l;
bool take_default;
*taken_edge_p = NULL;
@@ -6792,12 +6982,13 @@ vrp_visit_switch_stmt (gimple stmt, edge *taken_edge_p)
fprintf (dump_file, "\n");
}
- if (vr->type != VR_RANGE
+ if ((vr->type != VR_RANGE
+ && vr->type != VR_ANTI_RANGE)
|| symbolic_range_p (vr))
return SSA_PROP_VARYING;
/* Find the single edge that is taken from the switch expression. */
- take_default = !find_case_label_range (stmt, vr->min, vr->max, &i, &j);
+ take_default = !find_case_label_ranges (stmt, vr, &i, &j, &k, &l);
/* Check if the range spans no CASE_LABEL. If so, we only reach the default
label */
@@ -6831,6 +7022,16 @@ vrp_visit_switch_stmt (gimple stmt, edge *taken_edge_p)
return SSA_PROP_VARYING;
}
}
+ for (; k <= l; ++k)
+ {
+ if (CASE_LABEL (gimple_switch_label (stmt, k)) != CASE_LABEL (val))
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, " not a single destination for this "
+ "range\n");
+ return SSA_PROP_VARYING;
+ }
+ }
}
*taken_edge_p = find_edge (gimple_bb (stmt),
@@ -7548,12 +7749,14 @@ vrp_meet_1 (value_range_t *vr0, value_range_t *vr1)
anti-range. FIXME, all this nonsense about distinguishing
anti-ranges from ranges is necessary because of the odd
semantics of range_includes_zero_p and friends. */
- if (!symbolic_range_p (&saved)
- && ((saved.type == VR_RANGE && !range_includes_zero_p (&saved))
- || (saved.type == VR_ANTI_RANGE && range_includes_zero_p (&saved)))
- && !symbolic_range_p (vr1)
- && ((vr1->type == VR_RANGE && !range_includes_zero_p (vr1))
- || (vr1->type == VR_ANTI_RANGE && range_includes_zero_p (vr1))))
+ if (((saved.type == VR_RANGE
+ && range_includes_zero_p (saved.min, saved.max) == 0)
+ || (saved.type == VR_ANTI_RANGE
+ && range_includes_zero_p (saved.min, saved.max) == 1))
+ && ((vr1->type == VR_RANGE
+ && range_includes_zero_p (vr1->min, vr1->max) == 0)
+ || (vr1->type == VR_ANTI_RANGE
+ && range_includes_zero_p (vr1->min, vr1->max) == 1)))
{
set_value_range_to_nonnull (vr0, TREE_TYPE (saved.min));
@@ -7692,10 +7895,12 @@ vrp_visit_phi_node (gimple phi)
when the new value is slightly bigger or smaller than the
previous one. We don't do this if we have seen a new executable
edge; this helps us avoid an overflow infinity for conditionals
- which are not in a loop. */
+ which are not in a loop. If the old value-range was VR_UNDEFINED
+ use the updated range and iterate one more time. */
if (edges > 0
&& gimple_phi_num_args (phi) > 1
- && edges == old_edges)
+ && edges == old_edges
+ && lhs_vr->type != VR_UNDEFINED)
{
int cmp_min = compare_values (lhs_vr->min, vr_result.min);
int cmp_max = compare_values (lhs_vr->max, vr_result.max);
@@ -7829,13 +8034,9 @@ simplify_truth_ops_using_ranges (gimple_stmt_iterator *gsi, gimple stmt)
/* For A != B we substitute A ^ B. Either with conversion. */
else if (need_conversion)
{
- gimple newop;
- tree tem = create_tmp_reg (TREE_TYPE (op0), NULL);
- newop = gimple_build_assign_with_ops (BIT_XOR_EXPR, tem, op0, op1);
- tem = make_ssa_name (tem, newop);
- gimple_assign_set_lhs (newop, tem);
+ tree tem = make_ssa_name (TREE_TYPE (op0), NULL);
+ gimple newop = gimple_build_assign_with_ops (BIT_XOR_EXPR, tem, op0, op1);
gsi_insert_before (gsi, newop, GSI_SAME_STMT);
- update_stmt (newop);
gimple_assign_set_rhs_with_ops (gsi, NOP_EXPR, tem, NULL_TREE);
}
/* Or without. */
@@ -8221,18 +8422,20 @@ simplify_switch_using_ranges (gimple stmt)
size_t i = 0, j = 0, n, n2;
tree vec2;
switch_update su;
+ size_t k = 1, l = 0;
if (TREE_CODE (op) == SSA_NAME)
{
vr = get_value_range (op);
/* We can only handle integer ranges. */
- if (vr->type != VR_RANGE
+ if ((vr->type != VR_RANGE
+ && vr->type != VR_ANTI_RANGE)
|| symbolic_range_p (vr))
return false;
/* Find case label for min/max of the value range. */
- take_default = !find_case_label_range (stmt, vr->min, vr->max, &i, &j);
+ take_default = !find_case_label_ranges (stmt, vr, &i, &j, &k, &l);
}
else if (TREE_CODE (op) == INTEGER_CST)
{
@@ -8259,7 +8462,7 @@ simplify_switch_using_ranges (gimple stmt)
return false;
/* Build a new vector of taken case labels. */
- vec2 = make_tree_vec (j - i + 1 + (int)take_default);
+ vec2 = make_tree_vec (j - i + 1 + l - k + 1 + (int)take_default);
n2 = 0;
/* Add the default edge, if necessary. */
@@ -8269,6 +8472,9 @@ simplify_switch_using_ranges (gimple stmt)
for (; i <= j; ++i, ++n2)
TREE_VEC_ELT (vec2, n2) = gimple_switch_label (stmt, i);
+ for (; k <= l; ++k, ++n2)
+ TREE_VEC_ELT (vec2, n2) = gimple_switch_label (stmt, k);
+
/* Mark needed edges. */
for (i = 0; i < n2; ++i)
{
@@ -8489,11 +8695,9 @@ simplify_float_conversion_using_ranges (gimple_stmt_iterator *gsi, gimple stmt)
/* It works, insert a truncation or sign-change before the
float conversion. */
- tem = create_tmp_var (build_nonstandard_integer_type
+ tem = make_ssa_name (build_nonstandard_integer_type
(GET_MODE_PRECISION (mode), 0), NULL);
conv = gimple_build_assign_with_ops (NOP_EXPR, tem, rhs1, NULL_TREE);
- tem = make_ssa_name (tem, conv);
- gimple_assign_set_lhs (conv, tem);
gsi_insert_before (gsi, conv, GSI_SAME_STMT);
gimple_assign_set_rhs1 (stmt, tem);
update_stmt (stmt);
@@ -8650,7 +8854,7 @@ vrp_fold_stmt (gimple_stmt_iterator *si)
A NULL entry is used to mark the end of pairs which need to be
restored. */
-static VEC(tree,heap) *stack;
+static VEC(tree,heap) *equiv_stack;
/* A trivial wrapper so that we can present the generic jump threading
code with a simple API for simplifying statements. STMT is the
@@ -8718,7 +8922,7 @@ identify_jump_threads (void)
/* Allocate our unwinder stack to unwind any temporary equivalences
that might be recorded. */
- stack = VEC_alloc (tree, heap, 20);
+ equiv_stack = VEC_alloc (tree, heap, 20);
/* To avoid lots of silly node creation, we create a single
conditional and just modify it in-place when attempting to
@@ -8772,7 +8976,7 @@ identify_jump_threads (void)
if (e->flags & (EDGE_DFS_BACK | EDGE_COMPLEX))
continue;
- thread_across_edge (dummy, e, true, &stack,
+ thread_across_edge (dummy, e, true, &equiv_stack,
simplify_stmt_for_jump_threading);
}
}
@@ -8793,7 +8997,7 @@ static void
finalize_jump_threads (void)
{
thread_through_all_blocks (false);
- VEC_free (tree, heap, stack);
+ VEC_free (tree, heap, equiv_stack);
}
diff --git a/gcc/tree.c b/gcc/tree.c
index 5aa5399d7d1..68d5ad0459d 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -58,7 +58,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-diagnostic.h"
#include "tree-pretty-print.h"
#include "cgraph.h"
-#include "timevar.h"
#include "except.h"
#include "debug.h"
#include "intl.h"
@@ -122,7 +121,6 @@ const char *const tree_code_class_strings[] =
/* obstack.[ch] explicitly declined to prototype this. */
extern int _obstack_allocated_p (struct obstack *h, void *obj);
-#ifdef GATHER_STATISTICS
/* Statistics-gathering stuff. */
static int tree_code_counts[MAX_TREE_CODES];
@@ -148,7 +146,6 @@ static const char * const tree_node_kind_names[] = {
"lang_type kinds",
"omp clauses",
};
-#endif /* GATHER_STATISTICS */
/* Unique id for next decl created. */
static GTY(()) int next_decl_uid;
@@ -752,10 +749,12 @@ static void
record_node_allocation_statistics (enum tree_code code ATTRIBUTE_UNUSED,
size_t length ATTRIBUTE_UNUSED)
{
-#ifdef GATHER_STATISTICS
enum tree_code_class type = TREE_CODE_CLASS (code);
tree_node_kind kind;
+ if (!GATHER_STATISTICS)
+ return;
+
switch (type)
{
case tcc_declaration: /* A decl node */
@@ -833,7 +832,6 @@ record_node_allocation_statistics (enum tree_code code ATTRIBUTE_UNUSED,
tree_code_counts[(int) code]++;
tree_node_counts[(int) kind]++;
tree_node_sizes[(int) kind] += length;
-#endif
}
/* Allocate and return a new UID from the DECL_UID namespace. */
@@ -963,8 +961,6 @@ copy_node_stat (tree node MEM_STAT_DECL)
TREE_CHAIN (t) = 0;
TREE_ASM_WRITTEN (t) = 0;
TREE_VISITED (t) = 0;
- if (code == VAR_DECL || code == PARM_DECL || code == RESULT_DECL)
- *DECL_VAR_ANN_PTR (t) = 0;
if (TREE_CODE_CLASS (code) == tcc_declaration)
{
@@ -987,6 +983,8 @@ copy_node_stat (tree node MEM_STAT_DECL)
SET_DECL_INIT_PRIORITY (t, DECL_INIT_PRIORITY (node));
DECL_HAS_INIT_PRIORITY_P (t) = 1;
}
+ if (TREE_CODE (node) == FUNCTION_DECL)
+ DECL_STRUCT_FUNCTION (t) = NULL;
}
else if (TREE_CODE_CLASS (code) == tcc_type)
{
@@ -1640,7 +1638,7 @@ build_zero_cst (tree type)
{
case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE:
case POINTER_TYPE: case REFERENCE_TYPE:
- case OFFSET_TYPE:
+ case OFFSET_TYPE: case NULLPTR_TYPE:
return build_int_cst (type, 0);
case REAL_TYPE:
@@ -1853,7 +1851,7 @@ int
integer_pow2p (const_tree expr)
{
int prec;
- HOST_WIDE_INT high, low;
+ unsigned HOST_WIDE_INT high, low;
STRIP_NOPS (expr);
@@ -2980,6 +2978,7 @@ type_contains_placeholder_1 (const_tree type)
case METHOD_TYPE:
case FUNCTION_TYPE:
case VECTOR_TYPE:
+ case NULLPTR_TYPE:
return false;
case INTEGER_TYPE:
@@ -3526,8 +3525,7 @@ stabilize_reference (tree ref)
case BIT_FIELD_REF:
result = build_nt (BIT_FIELD_REF,
stabilize_reference (TREE_OPERAND (ref, 0)),
- stabilize_reference_1 (TREE_OPERAND (ref, 1)),
- stabilize_reference_1 (TREE_OPERAND (ref, 2)));
+ TREE_OPERAND (ref, 1), TREE_OPERAND (ref, 2));
break;
case ARRAY_REF:
@@ -3697,8 +3695,6 @@ do { tree _node = (NODE); \
if (TREE_OPERAND (node, 2))
UPDATE_FLAGS (TREE_OPERAND (node, 2));
}
- else if (TREE_CODE (node) == BIT_FIELD_REF)
- UPDATE_FLAGS (TREE_OPERAND (node, 2));
}
node = lang_hooks.expr_to_decl (node, &tc, &se);
@@ -3970,37 +3966,6 @@ build5_stat (enum tree_code code, tree tt, tree arg0, tree arg1,
return t;
}
-tree
-build6_stat (enum tree_code code, tree tt, tree arg0, tree arg1,
- tree arg2, tree arg3, tree arg4, tree arg5 MEM_STAT_DECL)
-{
- bool constant, read_only, side_effects;
- tree t;
-
- gcc_assert (code == TARGET_MEM_REF);
-
- t = make_node_stat (code PASS_MEM_STAT);
- TREE_TYPE (t) = tt;
-
- side_effects = TREE_SIDE_EFFECTS (t);
-
- PROCESS_ARG(0);
- PROCESS_ARG(1);
- PROCESS_ARG(2);
- PROCESS_ARG(3);
- PROCESS_ARG(4);
- if (code == TARGET_MEM_REF)
- side_effects = 0;
- PROCESS_ARG(5);
-
- TREE_SIDE_EFFECTS (t) = side_effects;
- TREE_THIS_VOLATILE (t)
- = (code == TARGET_MEM_REF
- && arg5 && TREE_THIS_VOLATILE (arg5));
-
- return t;
-}
-
/* Build a simple MEM_REF tree with the sematics of a plain INDIRECT_REF
on the pointer PTR. */
@@ -4910,7 +4875,15 @@ find_decls_types_r (tree *tp, int *ws, void *data)
fld_worklist_push (TYPE_MAIN_VARIANT (t), fld);
/* Do not walk TYPE_NEXT_VARIANT. We do not stream it and thus
do not and want not to reach unused variants this way. */
- fld_worklist_push (TYPE_CONTEXT (t), fld);
+ if (TYPE_CONTEXT (t))
+ {
+ tree ctx = TYPE_CONTEXT (t);
+ /* We adjust BLOCK TYPE_CONTEXTs to the innermost non-BLOCK one.
+ So push that instead. */
+ while (ctx && TREE_CODE (ctx) == BLOCK)
+ ctx = BLOCK_SUPERCONTEXT (ctx);
+ fld_worklist_push (ctx, fld);
+ }
/* Do not walk TYPE_CANONICAL. We do not stream it and thus do not
and want not to reach unused types this way. */
@@ -6180,6 +6153,7 @@ type_hash_eq (const void *va, const void *vb)
case COMPLEX_TYPE:
case POINTER_TYPE:
case REFERENCE_TYPE:
+ case NULLPTR_TYPE:
return 1;
case VECTOR_TYPE:
@@ -6328,11 +6302,12 @@ type_hash_canon (unsigned int hashcode, tree type)
t1 = type_hash_lookup (hashcode, type);
if (t1 != 0)
{
-#ifdef GATHER_STATISTICS
- tree_code_counts[(int) TREE_CODE (type)]--;
- tree_node_counts[(int) t_kind]--;
- tree_node_sizes[(int) t_kind] -= sizeof (struct tree_type_non_common);
-#endif
+ if (GATHER_STATISTICS)
+ {
+ tree_code_counts[(int) TREE_CODE (type)]--;
+ tree_node_counts[(int) t_kind]--;
+ tree_node_sizes[(int) t_kind] -= sizeof (struct tree_type_non_common);
+ }
return t1;
}
else
@@ -6731,8 +6706,8 @@ simple_cst_equal (const_tree t1, const_tree t2)
for (idx = 0; idx < VEC_length (constructor_elt, v1); ++idx)
/* ??? Should we handle also fields here? */
- if (!simple_cst_equal (VEC_index (constructor_elt, v1, idx)->value,
- VEC_index (constructor_elt, v2, idx)->value))
+ if (!simple_cst_equal (VEC_index (constructor_elt, v1, idx).value,
+ VEC_index (constructor_elt, v2, idx).value))
return false;
return true;
}
@@ -6917,6 +6892,8 @@ commutative_tree_code (enum tree_code code)
case WIDEN_MULT_EXPR:
case VEC_WIDEN_MULT_HI_EXPR:
case VEC_WIDEN_MULT_LO_EXPR:
+ case VEC_WIDEN_MULT_EVEN_EXPR:
+ case VEC_WIDEN_MULT_ODD_EXPR:
return true;
default:
@@ -8698,36 +8675,34 @@ get_callee_fndecl (const_tree call)
void
dump_tree_statistics (void)
{
-#ifdef GATHER_STATISTICS
- int i;
- int total_nodes, total_bytes;
-#endif
+ if (GATHER_STATISTICS)
+ {
+ int i;
+ int total_nodes, total_bytes;
+ fprintf (stderr, "Kind Nodes Bytes\n");
+ fprintf (stderr, "---------------------------------------\n");
+ total_nodes = total_bytes = 0;
+ for (i = 0; i < (int) all_kinds; i++)
+ {
+ fprintf (stderr, "%-20s %7d %10d\n", tree_node_kind_names[i],
+ tree_node_counts[i], tree_node_sizes[i]);
+ total_nodes += tree_node_counts[i];
+ total_bytes += tree_node_sizes[i];
+ }
+ fprintf (stderr, "---------------------------------------\n");
+ fprintf (stderr, "%-20s %7d %10d\n", "Total", total_nodes, total_bytes);
+ fprintf (stderr, "---------------------------------------\n");
+ fprintf (stderr, "Code Nodes\n");
+ fprintf (stderr, "----------------------------\n");
+ for (i = 0; i < (int) MAX_TREE_CODES; i++)
+ fprintf (stderr, "%-20s %7d\n", tree_code_name[i], tree_code_counts[i]);
+ fprintf (stderr, "----------------------------\n");
+ ssanames_print_statistics ();
+ phinodes_print_statistics ();
+ }
+ else
+ fprintf (stderr, "(No per-node statistics)\n");
- fprintf (stderr, "\n??? tree nodes created\n\n");
-#ifdef GATHER_STATISTICS
- fprintf (stderr, "Kind Nodes Bytes\n");
- fprintf (stderr, "---------------------------------------\n");
- total_nodes = total_bytes = 0;
- for (i = 0; i < (int) all_kinds; i++)
- {
- fprintf (stderr, "%-20s %7d %10d\n", tree_node_kind_names[i],
- tree_node_counts[i], tree_node_sizes[i]);
- total_nodes += tree_node_counts[i];
- total_bytes += tree_node_sizes[i];
- }
- fprintf (stderr, "---------------------------------------\n");
- fprintf (stderr, "%-20s %7d %10d\n", "Total", total_nodes, total_bytes);
- fprintf (stderr, "---------------------------------------\n");
- fprintf (stderr, "Code Nodes\n");
- fprintf (stderr, "----------------------------\n");
- for (i = 0; i < (int) MAX_TREE_CODES; i++)
- fprintf (stderr, "%-20s %7d\n", tree_code_name[i], tree_code_counts[i]);
- fprintf (stderr, "----------------------------\n");
- ssanames_print_statistics ();
- phinodes_print_statistics ();
-#else
- fprintf (stderr, "(No per-node statistics)\n");
-#endif
print_type_hash_statistics ();
print_debug_expr_statistics ();
print_value_expr_statistics ();
@@ -10182,9 +10157,6 @@ range_in_array_bounds_p (tree ref)
bool
needs_to_live_in_memory (const_tree t)
{
- if (TREE_CODE (t) == SSA_NAME)
- t = SSA_NAME_VAR (t);
-
return (TREE_ADDRESSABLE (t)
|| is_global_var (t)
|| (TREE_CODE (t) == RESULT_DECL
@@ -10898,6 +10870,13 @@ get_name (tree t)
STRIP_NOPS (stripped_decl);
if (DECL_P (stripped_decl) && DECL_NAME (stripped_decl))
return IDENTIFIER_POINTER (DECL_NAME (stripped_decl));
+ else if (TREE_CODE (stripped_decl) == SSA_NAME)
+ {
+ tree name = SSA_NAME_IDENTIFIER (stripped_decl);
+ if (!name)
+ return NULL;
+ return IDENTIFIER_POINTER (name);
+ }
else
{
switch (TREE_CODE (stripped_decl))
diff --git a/gcc/tree.def b/gcc/tree.def
index b0d4aead470..70188ff0524 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -1171,6 +1171,10 @@ DEFTREECODE (VEC_RSHIFT_EXPR, "vec_rshift_expr", tcc_binary, 2)
DEFTREECODE (VEC_WIDEN_MULT_HI_EXPR, "widen_mult_hi_expr", tcc_binary, 2)
DEFTREECODE (VEC_WIDEN_MULT_LO_EXPR, "widen_mult_lo_expr", tcc_binary, 2)
+/* Similarly, but return the even or odd N/2 products. */
+DEFTREECODE (VEC_WIDEN_MULT_EVEN_EXPR, "widen_mult_even_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_MULT_ODD_EXPR, "widen_mult_odd_expr", tcc_binary, 2)
+
/* Unpack (extract and promote/widen) the high/low elements of the input
vector into the output vector. The input vector has twice as many
elements as the output vector, that are half the size of the elements
diff --git a/gcc/tree.h b/gcc/tree.h
index 43d5fdc69c6..bca0576d5a7 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1,4 +1,4 @@
-/* Front-end tree definitions for GNU compiler.
+/* Definitions for the ubiquitous 'tree' type for GNU compilers.
Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
@@ -417,7 +417,8 @@ enum omp_clause_code
so all nodes have these fields.
See the accessor macros, defined below, for documentation of the
- fields. */
+ fields, and the table below which connects the fields and the
+ accessor macros. */
struct GTY(()) tree_base {
ENUM_BITFIELD(tree_code) code : 16;
@@ -427,9 +428,9 @@ struct GTY(()) tree_base {
unsigned addressable_flag : 1;
unsigned volatile_flag : 1;
unsigned readonly_flag : 1;
- unsigned unsigned_flag : 1;
unsigned asm_written_flag: 1;
unsigned nowarning_flag : 1;
+ unsigned visited : 1;
unsigned used_flag : 1;
unsigned nothrow_flag : 1;
@@ -438,38 +439,42 @@ struct GTY(()) tree_base {
unsigned private_flag : 1;
unsigned protected_flag : 1;
unsigned deprecated_flag : 1;
- unsigned saturating_flag : 1;
-
unsigned default_def_flag : 1;
- unsigned lang_flag_0 : 1;
- unsigned lang_flag_1 : 1;
- unsigned lang_flag_2 : 1;
- unsigned lang_flag_3 : 1;
- unsigned lang_flag_4 : 1;
- unsigned lang_flag_5 : 1;
- unsigned lang_flag_6 : 1;
-
- unsigned visited : 1;
- unsigned packed_flag : 1;
- unsigned user_align : 1;
- unsigned nameless_flag : 1;
-
- unsigned spare : 12;
-
- /* This field is only used with type nodes; the only reason it is present
- in tree_base instead of tree_type is to save space. The size of the
- field must be large enough to hold addr_space_t values. */
- unsigned address_space : 8;
-};
-
-struct GTY(()) tree_typed {
- struct tree_base base;
- tree type;
-};
-struct GTY(()) tree_common {
- struct tree_typed typed;
- tree chain;
+ union {
+ /* The bits in the following structure should only be used with
+ accessor macros that constrain inputs with tree checking. */
+ struct {
+ unsigned lang_flag_0 : 1;
+ unsigned lang_flag_1 : 1;
+ unsigned lang_flag_2 : 1;
+ unsigned lang_flag_3 : 1;
+ unsigned lang_flag_4 : 1;
+ unsigned lang_flag_5 : 1;
+ unsigned lang_flag_6 : 1;
+ unsigned saturating_flag : 1;
+
+ unsigned unsigned_flag : 1;
+ unsigned packed_flag : 1;
+ unsigned user_align : 1;
+ unsigned nameless_flag : 1;
+ unsigned spare0 : 4;
+
+ unsigned spare1 : 8;
+
+ /* This field is only used with TREE_TYPE nodes; the only reason it is
+ present in tree_base instead of tree_type is to save space. The size
+ of the field must be large enough to hold addr_space_t values. */
+ unsigned address_space : 8;
+ } bits;
+ /* The following fields are present in tree_base to save space. The
+ nodes using them do not require any of the flags above and so can
+ make better use of the 4-byte sized word. */
+ /* VEC length. This field is only used with TREE_VEC. */
+ int length;
+ /* SSA version number. This field is only used with SSA_NAME. */
+ unsigned int version;
+ } GTY((skip(""))) u;
};
/* The following table lists the uses of each of the above flags and
@@ -489,6 +494,9 @@ struct GTY(()) tree_common {
CASE_LOW_SEEN in
CASE_LABEL_EXPR
+ PREDICT_EXPR_OUTCOME in
+ PREDICT_EXPR
+
static_flag:
TREE_STATIC in
@@ -571,12 +579,16 @@ struct GTY(()) tree_common {
OMP_PARALLEL_COMBINED in
OMP_PARALLEL
+
OMP_CLAUSE_PRIVATE_OUTER_REF in
OMP_CLAUSE_PRIVATE
TYPE_REF_IS_RVALUE in
REFERENCE_TYPE
+ ENUM_IS_OPAQUE in
+ ENUMERAL_TYPE
+
protected_flag:
TREE_PROTECTED in
@@ -638,7 +650,10 @@ struct GTY(()) tree_common {
TREE_ASM_WRITTEN in
VAR_DECL, FUNCTION_DECL, TYPE_DECL
RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE
- BLOCK, SSA_NAME, STRING_CST
+ BLOCK, STRING_CST
+
+ SSA_NAME_OCCURS_IN_ABNORMAL_PHI in
+ SSA_NAME
used_flag:
@@ -659,6 +674,9 @@ struct GTY(()) tree_common {
TREE_THIS_NOTRAP in
INDIRECT_REF, MEM_REF, TARGET_MEM_REF, ARRAY_REF, ARRAY_RANGE_REF
+ SSA_NAME_IN_FREELIST in
+ SSA_NAME
+
deprecated_flag:
TREE_DEPRECATED in
@@ -699,6 +717,16 @@ struct GTY(()) tree_common {
SSA_NAME
*/
+struct GTY(()) tree_typed {
+ struct tree_base base;
+ tree type;
+};
+
+struct GTY(()) tree_common {
+ struct tree_typed typed;
+ tree chain;
+};
+
#undef DEFTREESTRUCT
#define DEFTREESTRUCT(ENUM, NAME) ENUM,
enum tree_node_structure_enum {
@@ -719,195 +747,80 @@ enum tree_node_structure_enum {
is accessed incorrectly. The macros die with a fatal error. */
#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
-#define TREE_CHECK(T, CODE) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) != (CODE)) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE), 0); \
- __t; })
-
-#define TREE_NOT_CHECK(T, CODE) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) == (CODE)) \
- tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE), 0); \
- __t; })
-
-#define TREE_CHECK2(T, CODE1, CODE2) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) != (CODE1) \
- && TREE_CODE (__t) != (CODE2)) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), 0); \
- __t; })
-
-#define TREE_NOT_CHECK2(T, CODE1, CODE2) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) == (CODE1) \
- || TREE_CODE (__t) == (CODE2)) \
- tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), 0); \
- __t; })
-
-#define TREE_CHECK3(T, CODE1, CODE2, CODE3) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) != (CODE1) \
- && TREE_CODE (__t) != (CODE2) \
- && TREE_CODE (__t) != (CODE3)) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), (CODE3), 0); \
- __t; })
-
-#define TREE_NOT_CHECK3(T, CODE1, CODE2, CODE3) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) == (CODE1) \
- || TREE_CODE (__t) == (CODE2) \
- || TREE_CODE (__t) == (CODE3)) \
- tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), (CODE3), 0); \
- __t; })
-
-#define TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) != (CODE1) \
- && TREE_CODE (__t) != (CODE2) \
- && TREE_CODE (__t) != (CODE3) \
- && TREE_CODE (__t) != (CODE4)) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), (CODE3), (CODE4), 0); \
- __t; })
-
-#define TREE_NOT_CHECK4(T, CODE1, CODE2, CODE3, CODE4) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) == (CODE1) \
- || TREE_CODE (__t) == (CODE2) \
- || TREE_CODE (__t) == (CODE3) \
- || TREE_CODE (__t) == (CODE4)) \
- tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), (CODE3), (CODE4), 0); \
- __t; })
-
-#define TREE_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) != (CODE1) \
- && TREE_CODE (__t) != (CODE2) \
- && TREE_CODE (__t) != (CODE3) \
- && TREE_CODE (__t) != (CODE4) \
- && TREE_CODE (__t) != (CODE5)) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), (CODE3), (CODE4), (CODE5), 0);\
- __t; })
-
-#define TREE_NOT_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) == (CODE1) \
- || TREE_CODE (__t) == (CODE2) \
- || TREE_CODE (__t) == (CODE3) \
- || TREE_CODE (__t) == (CODE4) \
- || TREE_CODE (__t) == (CODE5)) \
- tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2), (CODE3), (CODE4), (CODE5), 0);\
- __t; })
-
-#define CONTAINS_STRUCT_CHECK(T, STRUCT) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (tree_contains_struct[TREE_CODE(__t)][(STRUCT)] != 1) \
- tree_contains_struct_check_failed (__t, (STRUCT), __FILE__, __LINE__, \
- __FUNCTION__); \
- __t; })
-
-#define TREE_CLASS_CHECK(T, CLASS) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE_CLASS (TREE_CODE(__t)) != (CLASS)) \
- tree_class_check_failed (__t, (CLASS), __FILE__, __LINE__, \
- __FUNCTION__); \
- __t; })
-
-#define TREE_RANGE_CHECK(T, CODE1, CODE2) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) < (CODE1) || TREE_CODE (__t) > (CODE2)) \
- tree_range_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE1), (CODE2)); \
- __t; })
-
-#define OMP_CLAUSE_SUBCODE_CHECK(T, CODE) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) != OMP_CLAUSE) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- OMP_CLAUSE, 0); \
- if (__t->omp_clause.code != (CODE)) \
- omp_clause_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- (CODE)); \
- __t; })
-
-#define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TREE_CODE (__t) != OMP_CLAUSE) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- OMP_CLAUSE, 0); \
- if ((int) __t->omp_clause.code < (int) (CODE1) \
- || (int) __t->omp_clause.code > (int) (CODE2)) \
- omp_clause_range_check_failed (__t, __FILE__, __LINE__, \
- __FUNCTION__, (CODE1), (CODE2)); \
- __t; })
+#define TREE_CHECK(T, CODE) \
+(tree_check ((T), __FILE__, __LINE__, __FUNCTION__, (CODE)))
+
+#define TREE_NOT_CHECK(T, CODE) \
+(tree_not_check ((T), __FILE__, __LINE__, __FUNCTION__, (CODE)))
+
+#define TREE_CHECK2(T, CODE1, CODE2) \
+(tree_check2 ((T), __FILE__, __LINE__, __FUNCTION__, (CODE1), (CODE2)))
+
+#define TREE_NOT_CHECK2(T, CODE1, CODE2) \
+(tree_not_check2 ((T), __FILE__, __LINE__, __FUNCTION__, (CODE1), (CODE2)))
+
+#define TREE_CHECK3(T, CODE1, CODE2, CODE3) \
+(tree_check3 ((T), __FILE__, __LINE__, __FUNCTION__, (CODE1), (CODE2), (CODE3)))
+
+#define TREE_NOT_CHECK3(T, CODE1, CODE2, CODE3) \
+(tree_not_check3 ((T), __FILE__, __LINE__, __FUNCTION__, \
+ (CODE1), (CODE2), (CODE3)))
+
+#define TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) \
+(tree_check4 ((T), __FILE__, __LINE__, __FUNCTION__, \
+ (CODE1), (CODE2), (CODE3), (CODE4)))
+
+#define TREE_NOT_CHECK4(T, CODE1, CODE2, CODE3, CODE4) \
+(tree_not_check4 ((T), __FILE__, __LINE__, __FUNCTION__, \
+ (CODE1), (CODE2), (CODE3), (CODE4)))
+
+#define TREE_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) \
+(tree_check5 ((T), __FILE__, __LINE__, __FUNCTION__, \
+ (CODE1), (CODE2), (CODE3), (CODE4), (CODE5)))
+
+#define TREE_NOT_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) \
+(tree_not_check5 ((T), __FILE__, __LINE__, __FUNCTION__, \
+ (CODE1), (CODE2), (CODE3), (CODE4), (CODE5)))
+
+#define CONTAINS_STRUCT_CHECK(T, STRUCT) \
+(contains_struct_check ((T), (STRUCT), __FILE__, __LINE__, __FUNCTION__))
+
+#define TREE_CLASS_CHECK(T, CLASS) \
+(tree_class_check ((T), (CLASS), __FILE__, __LINE__, __FUNCTION__))
+
+#define TREE_RANGE_CHECK(T, CODE1, CODE2) \
+(tree_range_check ((T), (CODE1), (CODE2), __FILE__, __LINE__, __FUNCTION__))
+
+#define OMP_CLAUSE_SUBCODE_CHECK(T, CODE) \
+(omp_clause_subcode_check ((T), (CODE), __FILE__, __LINE__, __FUNCTION__))
+
+#define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) \
+(omp_clause_range_check ((T), (CODE1), (CODE2), \
+ __FILE__, __LINE__, __FUNCTION__))
/* These checks have to be special cased. */
-#define EXPR_CHECK(T) __extension__ \
-({ __typeof (T) const __t = (T); \
- char const __c = TREE_CODE_CLASS (TREE_CODE (__t)); \
- if (!IS_EXPR_CODE_CLASS (__c)) \
- tree_class_check_failed (__t, tcc_expression, __FILE__, __LINE__, \
- __FUNCTION__); \
- __t; })
+#define EXPR_CHECK(T) \
+(expr_check ((T), __FILE__, __LINE__, __FUNCTION__))
/* These checks have to be special cased. */
-#define NON_TYPE_CHECK(T) __extension__ \
-({ __typeof (T) const __t = (T); \
- if (TYPE_P (__t)) \
- tree_not_class_check_failed (__t, tcc_type, __FILE__, __LINE__, \
- __FUNCTION__); \
- __t; })
-
-#define TREE_VEC_ELT_CHECK(T, I) __extension__ \
-(*({__typeof (T) const __t = (T); \
- const int __i = (I); \
- if (TREE_CODE (__t) != TREE_VEC) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- TREE_VEC, 0); \
- if (__i < 0 || __i >= __t->vec.length) \
- tree_vec_elt_check_failed (__i, __t->vec.length, \
- __FILE__, __LINE__, __FUNCTION__); \
- &__t->vec.a[__i]; }))
-
-#define OMP_CLAUSE_ELT_CHECK(T, I) __extension__ \
-(*({__typeof (T) const __t = (T); \
- const int __i = (I); \
- if (TREE_CODE (__t) != OMP_CLAUSE) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
- OMP_CLAUSE, 0); \
- if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code]) \
- omp_clause_operand_check_failed (__i, __t, __FILE__, __LINE__, \
- __FUNCTION__); \
- &__t->omp_clause.ops[__i]; }))
+#define NON_TYPE_CHECK(T) \
+(non_type_check ((T), __FILE__, __LINE__, __FUNCTION__))
+
+#define TREE_VEC_ELT_CHECK(T, I) \
+(*(CONST_CAST2 (tree *, typeof (T)*, \
+ tree_vec_elt_check ((T), (I), __FILE__, __LINE__, __FUNCTION__))))
+
+#define OMP_CLAUSE_ELT_CHECK(T, I) \
+(*(omp_clause_elt_check ((T), (I), __FILE__, __LINE__, __FUNCTION__)))
/* Special checks for TREE_OPERANDs. */
-#define TREE_OPERAND_CHECK(T, I) __extension__ \
-(*({__typeof (T) const __t = EXPR_CHECK (T); \
- const int __i = (I); \
- if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t)) \
- tree_operand_check_failed (__i, __t, \
- __FILE__, __LINE__, __FUNCTION__); \
- &__t->exp.operands[__i]; }))
-
-#define TREE_OPERAND_CHECK_CODE(T, CODE, I) __extension__ \
-(*({__typeof (T) const __t = (T); \
- const int __i = (I); \
- if (TREE_CODE (__t) != CODE) \
- tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, (CODE), 0);\
- if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t)) \
- tree_operand_check_failed (__i, __t, \
- __FILE__, __LINE__, __FUNCTION__); \
- &__t->exp.operands[__i]; }))
+#define TREE_OPERAND_CHECK(T, I) \
+(*(CONST_CAST2 (tree*, typeof (T)*, \
+ tree_operand_check ((T), (I), __FILE__, __LINE__, __FUNCTION__))))
+
+#define TREE_OPERAND_CHECK_CODE(T, CODE, I) \
+(*(tree_operand_check_code ((T), (CODE), (I), \
+ __FILE__, __LINE__, __FUNCTION__)))
/* Nodes are chained together for many purposes.
Types are chained together to record them for being output to the debugger
@@ -918,17 +831,15 @@ enum tree_node_structure_enum {
Often lists of things are represented by TREE_LIST nodes that
are chained together. */
-#define TREE_CHAIN(NODE) __extension__ \
-(*({__typeof (NODE) const __t = CONTAINS_STRUCT_CHECK (NODE, TS_COMMON);\
- &__t->common.chain; }))
+#define TREE_CHAIN(NODE) \
+(CONTAINS_STRUCT_CHECK (NODE, TS_COMMON)->common.chain)
/* In all nodes that are expressions, this is the data type of the expression.
In POINTER_TYPE nodes, this is the type that the pointer points to.
In ARRAY_TYPE nodes, this is the type of the elements.
In VECTOR_TYPE nodes, this is the type of the elements. */
-#define TREE_TYPE(NODE) __extension__ \
-(*({__typeof (NODE) const __t = CONTAINS_STRUCT_CHECK (NODE, TS_TYPED); \
- &__t->typed.type; }))
+#define TREE_TYPE(NODE) \
+(CONTAINS_STRUCT_CHECK (NODE, TS_TYPED)->typed.type)
extern void tree_contains_struct_check_failed (const_tree,
const enum tree_node_structure_enum,
@@ -1343,10 +1254,34 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
/* In a decl (most significantly a FIELD_DECL), means an unsigned field. */
#define DECL_UNSIGNED(NODE) \
- (DECL_COMMON_CHECK (NODE)->base.unsigned_flag)
+ (DECL_COMMON_CHECK (NODE)->base.u.bits.unsigned_flag)
/* In integral and pointer types, means an unsigned type. */
-#define TYPE_UNSIGNED(NODE) (TYPE_CHECK (NODE)->base.unsigned_flag)
+#define TYPE_UNSIGNED(NODE) (TYPE_CHECK (NODE)->base.u.bits.unsigned_flag)
+
+/* True if overflow wraps around for the given integral type. That
+ is, TYPE_MAX + 1 == TYPE_MIN. */
+#define TYPE_OVERFLOW_WRAPS(TYPE) \
+ (TYPE_UNSIGNED (TYPE) || flag_wrapv)
+
+/* True if overflow is undefined for the given integral type. We may
+ optimize on the assumption that values in the type never overflow.
+
+ IMPORTANT NOTE: Any optimization based on TYPE_OVERFLOW_UNDEFINED
+ must issue a warning based on warn_strict_overflow. In some cases
+ it will be appropriate to issue the warning immediately, and in
+ other cases it will be appropriate to simply set a flag and let the
+ caller decide whether a warning is appropriate or not. */
+#define TYPE_OVERFLOW_UNDEFINED(TYPE) \
+ (!TYPE_UNSIGNED (TYPE) && !flag_wrapv && !flag_trapv && flag_strict_overflow)
+
+/* True if overflow for the given integral type should issue a
+ trap. */
+#define TYPE_OVERFLOW_TRAPS(TYPE) \
+ (!TYPE_UNSIGNED (TYPE) && flag_trapv)
+
+/* True if pointer types have undefined overflow. */
+#define POINTER_TYPE_OVERFLOW_UNDEFINED (flag_strict_overflow)
/* Nonzero in a VAR_DECL or STRING_CST means assembler code has been written.
Nonzero in a FUNCTION_DECL means that the function has been compiled.
@@ -1440,16 +1375,23 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
(IDENTIFIER_NODE_CHECK (NODE)->base.deprecated_flag)
/* In fixed-point types, means a saturating type. */
-#define TYPE_SATURATING(NODE) ((NODE)->base.saturating_flag)
+#define TYPE_SATURATING(NODE) (TYPE_CHECK (NODE)->base.u.bits.saturating_flag)
/* These flags are available for each language front end to use internally. */
-#define TREE_LANG_FLAG_0(NODE) ((NODE)->base.lang_flag_0)
-#define TREE_LANG_FLAG_1(NODE) ((NODE)->base.lang_flag_1)
-#define TREE_LANG_FLAG_2(NODE) ((NODE)->base.lang_flag_2)
-#define TREE_LANG_FLAG_3(NODE) ((NODE)->base.lang_flag_3)
-#define TREE_LANG_FLAG_4(NODE) ((NODE)->base.lang_flag_4)
-#define TREE_LANG_FLAG_5(NODE) ((NODE)->base.lang_flag_5)
-#define TREE_LANG_FLAG_6(NODE) ((NODE)->base.lang_flag_6)
+#define TREE_LANG_FLAG_0(NODE) \
+ (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_0)
+#define TREE_LANG_FLAG_1(NODE) \
+ (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_1)
+#define TREE_LANG_FLAG_2(NODE) \
+ (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_2)
+#define TREE_LANG_FLAG_3(NODE) \
+ (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_3)
+#define TREE_LANG_FLAG_4(NODE) \
+ (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_4)
+#define TREE_LANG_FLAG_5(NODE) \
+ (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_5)
+#define TREE_LANG_FLAG_6(NODE) \
+ (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_6)
/* Define additional fields and accessors for nodes representing constants. */
@@ -1569,22 +1511,21 @@ struct GTY(()) tree_list {
};
/* In a TREE_VEC node. */
-#define TREE_VEC_LENGTH(NODE) (TREE_VEC_CHECK (NODE)->vec.length)
+#define TREE_VEC_LENGTH(NODE) (TREE_VEC_CHECK (NODE)->base.u.length)
#define TREE_VEC_END(NODE) \
- ((void) TREE_VEC_CHECK (NODE), &((NODE)->vec.a[(NODE)->vec.length]))
+ ((void) TREE_VEC_CHECK (NODE), &((NODE)->vec.a[(NODE)->vec.base.u.length]))
#define TREE_VEC_ELT(NODE,I) TREE_VEC_ELT_CHECK (NODE, I)
struct GTY(()) tree_vec {
struct tree_common common;
- int length;
tree GTY ((length ("TREE_VEC_LENGTH ((tree)&%h)"))) a[1];
};
/* In a CONSTRUCTOR node. */
#define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts)
#define CONSTRUCTOR_ELT(NODE,IDX) \
- (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX))
+ (&VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX))
#define CONSTRUCTOR_NELTS(NODE) \
(VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE)))
@@ -1594,7 +1535,7 @@ struct GTY(()) tree_vec {
#define FOR_EACH_CONSTRUCTOR_VALUE(V, IX, VAL) \
for (IX = 0; (IX >= VEC_length (constructor_elt, V)) \
? false \
- : ((VAL = VEC_index (constructor_elt, V, IX)->value), \
+ : ((VAL = VEC_index (constructor_elt, V, IX).value), \
true); \
(IX)++)
@@ -1604,8 +1545,8 @@ struct GTY(()) tree_vec {
#define FOR_EACH_CONSTRUCTOR_ELT(V, IX, INDEX, VAL) \
for (IX = 0; (IX >= VEC_length (constructor_elt, V)) \
? false \
- : (((void) (VAL = VEC_index (constructor_elt, V, IX)->value)), \
- (INDEX = VEC_index (constructor_elt, V, IX)->index), \
+ : (((void) (VAL = VEC_index (constructor_elt, V, IX).value)), \
+ (INDEX = VEC_index (constructor_elt, V, IX).index), \
true); \
(IX)++)
@@ -1956,16 +1897,32 @@ struct GTY(()) tree_exp {
/* SSA_NAME accessors. */
-/* Returns the variable being referenced. Once released, this is the
- only field that can be relied upon. */
-#define SSA_NAME_VAR(NODE) SSA_NAME_CHECK (NODE)->ssa_name.var
+/* Returns the IDENTIFIER_NODE giving the SSA name a name or NULL_TREE
+ if there is no name associated with it. */
+#define SSA_NAME_IDENTIFIER(NODE) \
+ (SSA_NAME_CHECK (NODE)->ssa_name.var != NULL_TREE \
+ ? (TREE_CODE ((NODE)->ssa_name.var) == IDENTIFIER_NODE \
+ ? (NODE)->ssa_name.var \
+ : DECL_NAME ((NODE)->ssa_name.var)) \
+ : NULL_TREE)
+
+/* Returns the variable being referenced. This can be NULL_TREE for
+ temporaries not associated with any user variable.
+ Once released, this is the only field that can be relied upon. */
+#define SSA_NAME_VAR(NODE) \
+ (SSA_NAME_CHECK (NODE)->ssa_name.var == NULL_TREE \
+ || TREE_CODE ((NODE)->ssa_name.var) == IDENTIFIER_NODE \
+ ? NULL_TREE : (NODE)->ssa_name.var)
+
+#define SET_SSA_NAME_VAR_OR_IDENTIFIER(NODE,VAR) \
+ do { SSA_NAME_CHECK (NODE)->ssa_name.var = (VAR); } while (0)
/* Returns the statement which defines this SSA name. */
#define SSA_NAME_DEF_STMT(NODE) SSA_NAME_CHECK (NODE)->ssa_name.def_stmt
/* Returns the SSA version number of this SSA name. Note that in
tree SSA, version numbers are not per variable and may be recycled. */
-#define SSA_NAME_VERSION(NODE) SSA_NAME_CHECK (NODE)->ssa_name.version
+#define SSA_NAME_VERSION(NODE) SSA_NAME_CHECK (NODE)->base.u.version
/* Nonzero if this SSA name occurs in an abnormal PHI. SSA_NAMES are
never output, so we can safely use the ASM_WRITTEN_FLAG for this
@@ -2020,9 +1977,6 @@ struct GTY(()) tree_ssa_name {
/* Statement that defines this SSA name. */
gimple def_stmt;
- /* SSA version number. */
- unsigned int version;
-
/* Pointer attributes used for alias analysis. */
struct ptr_info_def *ptr_info;
@@ -2085,7 +2039,7 @@ struct GTY(()) tree_omp_clause {
#define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag)
/* True if BLOCK has the same ranges as its BLOCK_SUPERCONTEXT. */
-#define BLOCK_SAME_RANGE(NODE) (BLOCK_CHECK (NODE)->base.nameless_flag)
+#define BLOCK_SAME_RANGE(NODE) (BLOCK_CHECK (NODE)->base.u.bits.nameless_flag)
/* An index number for this block. These values are not guaranteed to
be unique across functions -- whether or not they are depends on
@@ -2225,7 +2179,7 @@ extern enum machine_mode vector_type_mode (const_tree);
/* 1 if the alignment for this type was requested by "aligned" attribute,
0 if it is the default for this type. */
-#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->base.user_align)
+#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->base.u.bits.user_align)
/* The alignment for NODE, in bytes. */
#define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
@@ -2256,10 +2210,10 @@ extern enum machine_mode vector_type_mode (const_tree);
#define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type_common.restrict_flag)
/* If nonzero, type's name shouldn't be emitted into debug info. */
-#define TYPE_NAMELESS(NODE) (TYPE_CHECK (NODE)->base.nameless_flag)
+#define TYPE_NAMELESS(NODE) (TYPE_CHECK (NODE)->base.u.bits.nameless_flag)
/* The address space the type is in. */
-#define TYPE_ADDR_SPACE(NODE) (TYPE_CHECK (NODE)->base.address_space)
+#define TYPE_ADDR_SPACE(NODE) (TYPE_CHECK (NODE)->base.u.bits.address_space)
/* There is a TYPE_QUAL value for each type qualifier. They can be
combined by bitwise-or to form the complete set of qualifiers for a
@@ -2349,7 +2303,7 @@ enum cv_qualifier
/* Indicated that objects of this type should be laid out in as
compact a way as possible. */
-#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->base.packed_flag)
+#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->base.u.bits.packed_flag)
/* Used by type_contains_placeholder_p to avoid recomputation.
Values are: 0 (unknown), 1 (false), 2 (true). Never access
@@ -2611,16 +2565,13 @@ struct GTY (()) tree_binfo {
/* Define fields and accessors for nodes representing declared names. */
-/* Nonzero if DECL represents a variable for the SSA passes. */
+/* Nonzero if DECL represents an SSA name or a variable that can possibly
+ have an associated SSA name. */
#define SSA_VAR_P(DECL) \
(TREE_CODE (DECL) == VAR_DECL \
|| TREE_CODE (DECL) == PARM_DECL \
|| TREE_CODE (DECL) == RESULT_DECL \
- || (TREE_CODE (DECL) == SSA_NAME \
- && (TREE_CODE (SSA_NAME_VAR (DECL)) == VAR_DECL \
- || TREE_CODE (SSA_NAME_VAR (DECL)) == PARM_DECL \
- || TREE_CODE (SSA_NAME_VAR (DECL)) == RESULT_DECL)))
-
+ || TREE_CODE (DECL) == SSA_NAME)
@@ -2690,7 +2641,7 @@ struct function;
(FIELD_DECL_CHECK (NODE)->decl_minimal.context)
/* If nonzero, decl's name shouldn't be emitted into debug info. */
-#define DECL_NAMELESS(NODE) (DECL_MINIMAL_CHECK (NODE)->base.nameless_flag)
+#define DECL_NAMELESS(NODE) (DECL_MINIMAL_CHECK (NODE)->base.u.bits.nameless_flag)
struct GTY(()) tree_decl_minimal {
struct tree_common common;
@@ -2751,7 +2702,7 @@ struct GTY(()) tree_decl_minimal {
/* Set if the alignment of this DECL has been set by the user, for
example with an 'aligned' attribute. */
#define DECL_USER_ALIGN(NODE) \
- (DECL_COMMON_CHECK (NODE)->base.user_align)
+ (DECL_COMMON_CHECK (NODE)->base.u.bits.user_align)
/* Holds the machine mode corresponding to the declaration of a variable or
field. Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a
FIELD_DECL. */
@@ -3036,7 +2987,7 @@ struct GTY(()) tree_decl_with_rtl {
#define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
/* In a FIELD_DECL, indicates this field should be bit-packed. */
-#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->base.packed_flag)
+#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->base.u.bits.packed_flag)
/* Nonzero in a FIELD_DECL means it is a bit field, and must be accessed
specially. */
@@ -3092,10 +3043,8 @@ struct GTY(()) tree_label_decl {
int eh_landing_pad_nr;
};
-struct var_ann_d;
struct GTY(()) tree_result_decl {
struct tree_decl_with_rtl common;
- struct var_ann_d *ann;
};
struct GTY(()) tree_const_decl {
@@ -3114,7 +3063,6 @@ struct GTY(()) tree_const_decl {
struct GTY(()) tree_parm_decl {
struct tree_decl_with_rtl common;
rtx incoming_rtl;
- struct var_ann_d *ann;
};
@@ -3329,17 +3277,10 @@ extern void decl_fini_priority_insert (tree, priority_type);
#define MAX_RESERVED_INIT_PRIORITY 100
#define VAR_DECL_IS_VIRTUAL_OPERAND(NODE) \
- (VAR_DECL_CHECK (NODE)->base.saturating_flag)
-
-#define DECL_VAR_ANN_PTR(NODE) \
- (TREE_CODE (NODE) == VAR_DECL ? &(NODE)->var_decl.ann \
- : TREE_CODE (NODE) == PARM_DECL ? &(NODE)->parm_decl.ann \
- : TREE_CODE (NODE) == RESULT_DECL ? &(NODE)->result_decl.ann \
- : NULL)
+ (VAR_DECL_CHECK (NODE)->base.u.bits.saturating_flag)
struct GTY(()) tree_var_decl {
struct tree_decl_with_vis common;
- struct var_ann_d *ann;
};
@@ -3716,6 +3657,486 @@ union GTY ((ptr_alias (union lang_tree_node),
struct tree_optimization_option GTY ((tag ("TS_OPTIMIZATION"))) optimization;
struct tree_target_option GTY ((tag ("TS_TARGET_OPTION"))) target_option;
};
+
+#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+
+inline tree
+tree_check (tree __t, const char *__f, int __l, const char *__g, tree_code __c)
+{
+ if (TREE_CODE (__t) != __c)
+ tree_check_failed (__t, __f, __l, __g, __c, 0);
+ return __t;
+}
+
+inline tree
+tree_not_check (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c)
+{
+ if (TREE_CODE (__t) == __c)
+ tree_not_check_failed (__t, __f, __l, __g, __c, 0);
+ return __t;
+}
+
+inline tree
+tree_check2 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, 0);
+ return __t;
+}
+
+inline tree
+tree_not_check2 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, 0);
+ return __t;
+}
+
+inline tree
+tree_check3 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2
+ && TREE_CODE (__t) != __c3)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, 0);
+ return __t;
+}
+
+inline tree
+tree_not_check3 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2
+ || TREE_CODE (__t) == __c3)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, 0);
+ return __t;
+}
+
+inline tree
+tree_check4 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2
+ && TREE_CODE (__t) != __c3
+ && TREE_CODE (__t) != __c4)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, 0);
+ return __t;
+}
+
+inline tree
+tree_not_check4 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2
+ || TREE_CODE (__t) == __c3
+ || TREE_CODE (__t) == __c4)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, 0);
+ return __t;
+}
+
+inline tree
+tree_check5 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4, enum tree_code __c5)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2
+ && TREE_CODE (__t) != __c3
+ && TREE_CODE (__t) != __c4
+ && TREE_CODE (__t) != __c5)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, __c5, 0);
+ return __t;
+}
+
+inline tree
+tree_not_check5 (tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4, enum tree_code __c5)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2
+ || TREE_CODE (__t) == __c3
+ || TREE_CODE (__t) == __c4
+ || TREE_CODE (__t) == __c5)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, __c5, 0);
+ return __t;
+}
+
+inline tree
+contains_struct_check (tree __t, const enum tree_node_structure_enum __s,
+ const char *__f, int __l, const char *__g)
+{
+ if (tree_contains_struct[TREE_CODE(__t)][__s] != 1)
+ tree_contains_struct_check_failed (__t, __s, __f, __l, __g);
+ return __t;
+}
+
+inline tree
+tree_class_check (tree __t, const enum tree_code_class __class,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE_CLASS (TREE_CODE(__t)) != __class)
+ tree_class_check_failed (__t, __class, __f, __l, __g);
+ return __t;
+}
+
+inline tree
+tree_range_check (tree __t,
+ enum tree_code __code1, enum tree_code __code2,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) < __code1 || TREE_CODE (__t) > __code2)
+ tree_range_check_failed (__t, __f, __l, __g, __code1, __code2);
+ return __t;
+}
+
+inline tree
+omp_clause_subcode_check (tree __t, enum omp_clause_code __code,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != OMP_CLAUSE)
+ tree_check_failed (__t, __f, __l, __g, OMP_CLAUSE, 0);
+ if (__t->omp_clause.code != __code)
+ omp_clause_check_failed (__t, __f, __l, __g, __code);
+ return __t;
+}
+
+inline tree
+omp_clause_range_check (tree __t,
+ enum omp_clause_code __code1,
+ enum omp_clause_code __code2,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != OMP_CLAUSE)
+ tree_check_failed (__t, __f, __l, __g, OMP_CLAUSE, 0);
+ if ((int) __t->omp_clause.code < (int) __code1
+ || (int) __t->omp_clause.code > (int) __code2)
+ omp_clause_range_check_failed (__t, __f, __l, __g, __code1, __code2);
+ return __t;
+}
+
+/* These checks have to be special cased. */
+
+inline tree
+expr_check (tree __t, const char *__f, int __l, const char *__g)
+{
+ char const __c = TREE_CODE_CLASS (TREE_CODE (__t));
+ if (!IS_EXPR_CODE_CLASS (__c))
+ tree_class_check_failed (__t, tcc_expression, __f, __l, __g);
+ return __t;
+}
+
+/* These checks have to be special cased. */
+
+inline tree
+non_type_check (tree __t, const char *__f, int __l, const char *__g)
+{
+ if (TYPE_P (__t))
+ tree_not_class_check_failed (__t, tcc_type, __f, __l, __g);
+ return __t;
+}
+
+inline tree *
+tree_vec_elt_check (tree __t, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != TREE_VEC)
+ tree_check_failed (__t, __f, __l, __g, TREE_VEC, 0);
+ if (__i < 0 || __i >= __t->base.u.length)
+ tree_vec_elt_check_failed (__i, __t->base.u.length, __f, __l, __g);
+ return &CONST_CAST_TREE (__t)->vec.a[__i];
+}
+
+inline tree *
+omp_clause_elt_check (tree __t, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != OMP_CLAUSE)
+ tree_check_failed (__t, __f, __l, __g, OMP_CLAUSE, 0);
+ if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code])
+ omp_clause_operand_check_failed (__i, __t, __f, __l, __g);
+ return &__t->omp_clause.ops[__i];
+}
+
+inline const_tree
+tree_check (const_tree __t, const char *__f, int __l, const char *__g,
+ tree_code __c)
+{
+ if (TREE_CODE (__t) != __c)
+ tree_check_failed (__t, __f, __l, __g, __c, 0);
+ return __t;
+}
+
+inline const_tree
+tree_not_check (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c)
+{
+ if (TREE_CODE (__t) == __c)
+ tree_not_check_failed (__t, __f, __l, __g, __c, 0);
+ return __t;
+}
+
+inline const_tree
+tree_check2 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, 0);
+ return __t;
+}
+
+inline const_tree
+tree_not_check2 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, 0);
+ return __t;
+}
+
+inline const_tree
+tree_check3 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2
+ && TREE_CODE (__t) != __c3)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, 0);
+ return __t;
+}
+
+inline const_tree
+tree_not_check3 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2
+ || TREE_CODE (__t) == __c3)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, 0);
+ return __t;
+}
+
+inline const_tree
+tree_check4 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2
+ && TREE_CODE (__t) != __c3
+ && TREE_CODE (__t) != __c4)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, 0);
+ return __t;
+}
+
+inline const_tree
+tree_not_check4 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2
+ || TREE_CODE (__t) == __c3
+ || TREE_CODE (__t) == __c4)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, 0);
+ return __t;
+}
+
+inline const_tree
+tree_check5 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4, enum tree_code __c5)
+{
+ if (TREE_CODE (__t) != __c1
+ && TREE_CODE (__t) != __c2
+ && TREE_CODE (__t) != __c3
+ && TREE_CODE (__t) != __c4
+ && TREE_CODE (__t) != __c5)
+ tree_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, __c5, 0);
+ return __t;
+}
+
+inline const_tree
+tree_not_check5 (const_tree __t, const char *__f, int __l, const char *__g,
+ enum tree_code __c1, enum tree_code __c2, enum tree_code __c3,
+ enum tree_code __c4, enum tree_code __c5)
+{
+ if (TREE_CODE (__t) == __c1
+ || TREE_CODE (__t) == __c2
+ || TREE_CODE (__t) == __c3
+ || TREE_CODE (__t) == __c4
+ || TREE_CODE (__t) == __c5)
+ tree_not_check_failed (__t, __f, __l, __g, __c1, __c2, __c3, __c4, __c5, 0);
+ return __t;
+}
+
+inline const_tree
+contains_struct_check (const_tree __t, const enum tree_node_structure_enum __s,
+ const char *__f, int __l, const char *__g)
+{
+ if (tree_contains_struct[TREE_CODE(__t)][__s] != 1)
+ tree_contains_struct_check_failed (__t, __s, __f, __l, __g);
+ return __t;
+}
+
+inline const_tree
+tree_class_check (const_tree __t, const enum tree_code_class __class,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE_CLASS (TREE_CODE(__t)) != __class)
+ tree_class_check_failed (__t, __class, __f, __l, __g);
+ return __t;
+}
+
+inline const_tree
+tree_range_check (const_tree __t,
+ enum tree_code __code1, enum tree_code __code2,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) < __code1 || TREE_CODE (__t) > __code2)
+ tree_range_check_failed (__t, __f, __l, __g, __code1, __code2);
+ return __t;
+}
+
+inline const_tree
+omp_clause_subcode_check (const_tree __t, enum omp_clause_code __code,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != OMP_CLAUSE)
+ tree_check_failed (__t, __f, __l, __g, OMP_CLAUSE, 0);
+ if (__t->omp_clause.code != __code)
+ omp_clause_check_failed (__t, __f, __l, __g, __code);
+ return __t;
+}
+
+inline const_tree
+omp_clause_range_check (const_tree __t,
+ enum omp_clause_code __code1,
+ enum omp_clause_code __code2,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != OMP_CLAUSE)
+ tree_check_failed (__t, __f, __l, __g, OMP_CLAUSE, 0);
+ if ((int) __t->omp_clause.code < (int) __code1
+ || (int) __t->omp_clause.code > (int) __code2)
+ omp_clause_range_check_failed (__t, __f, __l, __g, __code1, __code2);
+ return __t;
+}
+
+inline const_tree
+expr_check (const_tree __t, const char *__f, int __l, const char *__g)
+{
+ char const __c = TREE_CODE_CLASS (TREE_CODE (__t));
+ if (!IS_EXPR_CODE_CLASS (__c))
+ tree_class_check_failed (__t, tcc_expression, __f, __l, __g);
+ return __t;
+}
+
+inline const_tree
+non_type_check (const_tree __t, const char *__f, int __l, const char *__g)
+{
+ if (TYPE_P (__t))
+ tree_not_class_check_failed (__t, tcc_type, __f, __l, __g);
+ return __t;
+}
+
+inline const_tree *
+tree_vec_elt_check (const_tree __t, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != TREE_VEC)
+ tree_check_failed (__t, __f, __l, __g, TREE_VEC, 0);
+ if (__i < 0 || __i >= __t->base.u.length)
+ tree_vec_elt_check_failed (__i, __t->base.u.length, __f, __l, __g);
+ return CONST_CAST (const_tree *, &__t->vec.a[__i]);
+ //return &__t->vec.a[__i];
+}
+
+inline const_tree *
+omp_clause_elt_check (const_tree __t, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != OMP_CLAUSE)
+ tree_check_failed (__t, __f, __l, __g, OMP_CLAUSE, 0);
+ if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code])
+ omp_clause_operand_check_failed (__i, __t, __f, __l, __g);
+ return CONST_CAST (const_tree *, &__t->omp_clause.ops[__i]);
+}
+
+#endif
+
+/* Compute the number of operands in an expression node NODE. For
+ tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
+ otherwise it is looked up from the node's code. */
+static inline int
+tree_operand_length (const_tree node)
+{
+ if (VL_EXP_CLASS_P (node))
+ return VL_EXP_OPERAND_LENGTH (node);
+ else
+ return TREE_CODE_LENGTH (TREE_CODE (node));
+}
+
+#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+
+/* Special checks for TREE_OPERANDs. */
+inline tree *
+tree_operand_check (tree __t, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ const_tree __u = EXPR_CHECK (__t);
+ if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__u))
+ tree_operand_check_failed (__i, __u, __f, __l, __g);
+ return &CONST_CAST_TREE (__u)->exp.operands[__i];
+}
+
+inline tree *
+tree_operand_check_code (tree __t, enum tree_code __code, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != __code)
+ tree_check_failed (__t, __f, __l, __g, __code, 0);
+ if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t))
+ tree_operand_check_failed (__i, __t, __f, __l, __g);
+ return &__t->exp.operands[__i];
+}
+
+inline const_tree *
+tree_operand_check (const_tree __t, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ const_tree __u = EXPR_CHECK (__t);
+ if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__u))
+ tree_operand_check_failed (__i, __u, __f, __l, __g);
+ return CONST_CAST (const_tree *, &__u->exp.operands[__i]);
+}
+
+inline const_tree *
+tree_operand_check_code (const_tree __t, enum tree_code __code, int __i,
+ const char *__f, int __l, const char *__g)
+{
+ if (TREE_CODE (__t) != __code)
+ tree_check_failed (__t, __f, __l, __g, __code, 0);
+ if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t))
+ tree_operand_check_failed (__i, __t, __f, __l, __g);
+ return CONST_CAST (const_tree *, &__t->exp.operands[__i]);
+}
+
+#endif
+
/* Standard named or nameless data types of the C compiler. */
@@ -4221,12 +4642,8 @@ extern tree build4_stat (enum tree_code, tree, tree, tree, tree,
extern tree build5_stat (enum tree_code, tree, tree, tree, tree, tree,
tree MEM_STAT_DECL);
#define build5(c,t1,t2,t3,t4,t5,t6) build5_stat (c,t1,t2,t3,t4,t5,t6 MEM_STAT_INFO)
-extern tree build6_stat (enum tree_code, tree, tree, tree, tree, tree,
- tree, tree MEM_STAT_DECL);
-#define build6(c,t1,t2,t3,t4,t5,t6,t7) \
- build6_stat (c,t1,t2,t3,t4,t5,t6,t7 MEM_STAT_INFO)
-/* _loc versions of build[1-6]. */
+/* _loc versions of build[1-5]. */
static inline tree
build1_stat_loc (location_t loc, enum tree_code code, tree type,
@@ -4287,20 +4704,6 @@ build5_stat_loc (location_t loc, enum tree_code code, tree type, tree arg0,
#define build5_loc(l,c,t1,t2,t3,t4,t5,t6) \
build5_stat_loc (l,c,t1,t2,t3,t4,t5,t6 MEM_STAT_INFO)
-static inline tree
-build6_stat_loc (location_t loc, enum tree_code code, tree type, tree arg0,
- tree arg1, tree arg2, tree arg3, tree arg4,
- tree arg5 MEM_STAT_DECL)
-{
- tree t = build6_stat (code, type, arg0, arg1, arg2, arg3, arg4,
- arg5 PASS_MEM_STAT);
- if (CAN_HAVE_LOCATION_P (t))
- SET_EXPR_LOCATION (t, loc);
- return t;
-}
-#define build6_loc(l,c,t1,t2,t3,t4,t5,t6,t7) \
- build6_stat_loc (l,c,t1,t2,t3,t4,t5,t6,t7 MEM_STAT_INFO)
-
extern tree build_var_debug_value_stat (tree, tree MEM_STAT_DECL);
#define build_var_debug_value(t1,t2) \
build_var_debug_value_stat (t1,t2 MEM_STAT_INFO)
@@ -5044,12 +5447,6 @@ extern tree get_inner_reference (tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
tree *, enum machine_mode *, int *, int *,
bool);
-/* Given an expression EXP that may be a COMPONENT_REF, an ARRAY_REF or an
- ARRAY_RANGE_REF, look for whether EXP or any nested component-refs within
- EXP is marked as PACKED. */
-
-extern bool contains_packed_reference (const_tree exp);
-
/* Return a tree of sizetype representing the size, in bytes, of the element
of EXP, an ARRAY_REF or an ARRAY_RANGE_REF. */
@@ -5205,7 +5602,6 @@ extern tree unshare_expr (tree);
/* In stmt.c */
-extern void expand_expr_stmt (tree);
extern void expand_label (tree);
extern void expand_goto (tree);
@@ -5462,7 +5858,6 @@ extern bool is_builtin_fn (tree);
extern bool get_object_alignment_1 (tree, unsigned int *,
unsigned HOST_WIDE_INT *);
extern unsigned int get_object_alignment (tree);
-extern unsigned int get_object_or_type_alignment (tree);
extern bool get_pointer_alignment_1 (tree, unsigned int *,
unsigned HOST_WIDE_INT *);
extern unsigned int get_pointer_alignment (tree);
@@ -5530,6 +5925,8 @@ extern location_t tree_nonartificial_location (tree);
extern tree block_ultimate_origin (const_tree);
extern tree get_binfo_at_offset (tree, HOST_WIDE_INT, tree);
+extern tree get_ref_base_and_extent (tree, HOST_WIDE_INT *,
+ HOST_WIDE_INT *, HOST_WIDE_INT *);
/* In tree-nested.c */
extern tree build_addr (tree, tree);
@@ -5728,8 +6125,6 @@ extern bool parse_input_constraint (const char **, int, int, int, int,
const char * const *, bool *, bool *);
extern void expand_asm_stmt (gimple);
extern tree resolve_asm_operand_names (tree, tree, tree, tree);
-extern bool expand_switch_using_bit_tests_p (tree, tree, unsigned int,
- unsigned int);
extern void expand_case (gimple);
#ifdef HARD_CONST
/* Silly ifdef to avoid having all includers depend on hard-reg-set.h. */
@@ -5888,6 +6283,12 @@ extern void fini_object_sizes (void);
extern unsigned HOST_WIDE_INT compute_builtin_object_size (tree, int);
/* In expr.c. */
+
+/* Determine whether the LEN bytes can be moved by using several move
+ instructions. Return nonzero if a call to move_by_pieces should
+ succeed. */
+extern int can_move_by_pieces (unsigned HOST_WIDE_INT, unsigned int);
+
extern unsigned HOST_WIDE_INT highest_pow2_factor (const_tree);
extern tree build_personality_function (const char *);
@@ -5910,18 +6311,6 @@ is_tm_safe_or_pure (const_tree x)
void init_inline_once (void);
-/* Compute the number of operands in an expression node NODE. For
- tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
- otherwise it is looked up from the node's code. */
-static inline int
-tree_operand_length (const_tree node)
-{
- if (VL_EXP_CLASS_P (node))
- return VL_EXP_OPERAND_LENGTH (node);
- else
- return TREE_CODE_LENGTH (TREE_CODE (node));
-}
-
/* Abstract iterators for CALL_EXPRs. These static inline definitions
have to go towards the end of tree.h so that union tree_node is fully
defined by this point. */
diff --git a/gcc/valtrack.c b/gcc/valtrack.c
new file mode 100644
index 00000000000..b4eb5785ba3
--- /dev/null
+++ b/gcc/valtrack.c
@@ -0,0 +1,490 @@
+/* Infrastructure for tracking user variable locations and values
+ throughout compilation.
+ Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
+ Contributed by Alexandre Oliva <aoliva@redhat.com>.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "rtl.h"
+#include "valtrack.h"
+#include "function.h"
+#include "regs.h"
+#include "emit-rtl.h"
+
+/* Replace auto-increment addressing modes with explicit operations to access
+ the same addresses without modifying the corresponding registers. */
+
+static rtx
+cleanup_auto_inc_dec (rtx src, enum machine_mode mem_mode ATTRIBUTE_UNUSED)
+{
+ rtx x = src;
+#ifdef AUTO_INC_DEC
+ const RTX_CODE code = GET_CODE (x);
+ int i;
+ const char *fmt;
+
+ switch (code)
+ {
+ case REG:
+ CASE_CONST_ANY:
+ case SYMBOL_REF:
+ case CODE_LABEL:
+ case PC:
+ case CC0:
+ case SCRATCH:
+ /* SCRATCH must be shared because they represent distinct values. */
+ return x;
+ case CLOBBER:
+ if (REG_P (XEXP (x, 0)) && REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER)
+ return x;
+ break;
+
+ case CONST:
+ if (shared_const_p (x))
+ return x;
+ break;
+
+ case MEM:
+ mem_mode = GET_MODE (x);
+ break;
+
+ case PRE_INC:
+ case PRE_DEC:
+ gcc_assert (mem_mode != VOIDmode && mem_mode != BLKmode);
+ return gen_rtx_PLUS (GET_MODE (x),
+ cleanup_auto_inc_dec (XEXP (x, 0), mem_mode),
+ GEN_INT (code == PRE_INC
+ ? GET_MODE_SIZE (mem_mode)
+ : -GET_MODE_SIZE (mem_mode)));
+
+ case POST_INC:
+ case POST_DEC:
+ case PRE_MODIFY:
+ case POST_MODIFY:
+ return cleanup_auto_inc_dec (code == PRE_MODIFY
+ ? XEXP (x, 1) : XEXP (x, 0),
+ mem_mode);
+
+ default:
+ break;
+ }
+
+ /* Copy the various flags, fields, and other information. We assume
+ that all fields need copying, and then clear the fields that should
+ not be copied. That is the sensible default behavior, and forces
+ us to explicitly document why we are *not* copying a flag. */
+ x = shallow_copy_rtx (x);
+
+ /* We do not copy the USED flag, which is used as a mark bit during
+ walks over the RTL. */
+ RTX_FLAG (x, used) = 0;
+
+ /* We do not copy FRAME_RELATED for INSNs. */
+ if (INSN_P (x))
+ RTX_FLAG (x, frame_related) = 0;
+
+ fmt = GET_RTX_FORMAT (code);
+ for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
+ if (fmt[i] == 'e')
+ XEXP (x, i) = cleanup_auto_inc_dec (XEXP (x, i), mem_mode);
+ else if (fmt[i] == 'E' || fmt[i] == 'V')
+ {
+ int j;
+ XVEC (x, i) = rtvec_alloc (XVECLEN (x, i));
+ for (j = 0; j < XVECLEN (x, i); j++)
+ XVECEXP (x, i, j)
+ = cleanup_auto_inc_dec (XVECEXP (src, i, j), mem_mode);
+ }
+
+#else /* !AUTO_INC_DEC */
+ x = copy_rtx (x);
+#endif /* !AUTO_INC_DEC */
+
+ return x;
+}
+
+/* Auxiliary data structure for propagate_for_debug_stmt. */
+
+struct rtx_subst_pair
+{
+ rtx to;
+ bool adjusted;
+};
+
+/* DATA points to an rtx_subst_pair. Return the value that should be
+ substituted. */
+
+static rtx
+propagate_for_debug_subst (rtx from, const_rtx old_rtx, void *data)
+{
+ struct rtx_subst_pair *pair = (struct rtx_subst_pair *)data;
+
+ if (!rtx_equal_p (from, old_rtx))
+ return NULL_RTX;
+ if (!pair->adjusted)
+ {
+ pair->adjusted = true;
+ pair->to = cleanup_auto_inc_dec (pair->to, VOIDmode);
+ pair->to = make_compound_operation (pair->to, SET);
+ return pair->to;
+ }
+ return copy_rtx (pair->to);
+}
+
+/* Replace all the occurrences of DEST with SRC in DEBUG_INSNs between INSN
+ and LAST, not including INSN, but including LAST. Also stop at the end
+ of THIS_BASIC_BLOCK. */
+
+void
+propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src,
+ basic_block this_basic_block)
+{
+ rtx next, loc, end = NEXT_INSN (BB_END (this_basic_block));
+
+ struct rtx_subst_pair p;
+ p.to = src;
+ p.adjusted = false;
+
+ next = NEXT_INSN (insn);
+ last = NEXT_INSN (last);
+ while (next != last && next != end)
+ {
+ insn = next;
+ next = NEXT_INSN (insn);
+ if (DEBUG_INSN_P (insn))
+ {
+ loc = simplify_replace_fn_rtx (INSN_VAR_LOCATION_LOC (insn),
+ dest, propagate_for_debug_subst, &p);
+ if (loc == INSN_VAR_LOCATION_LOC (insn))
+ continue;
+ INSN_VAR_LOCATION_LOC (insn) = loc;
+ df_insn_rescan (insn);
+ }
+ }
+}
+
+/* Initialize DEBUG to an empty list, and clear USED, if given. */
+void
+dead_debug_init (struct dead_debug *debug, bitmap used)
+{
+ debug->head = NULL;
+ debug->used = used;
+ debug->to_rescan = NULL;
+ if (used)
+ bitmap_clear (used);
+}
+
+/* Reset all debug uses in HEAD, and clear DEBUG->to_rescan bits of
+ each reset insn. DEBUG is not otherwise modified. If HEAD is
+ DEBUG->head, DEBUG->head will be set to NULL at the end.
+ Otherwise, entries from DEBUG->head that pertain to reset insns
+ will be removed, and only then rescanned. */
+
+static void
+dead_debug_reset_uses (struct dead_debug *debug, struct dead_debug_use *head)
+{
+ bool got_head = (debug->head == head);
+ bitmap rescan;
+ struct dead_debug_use **tailp = &debug->head;
+ struct dead_debug_use *cur;
+ bitmap_iterator bi;
+ unsigned int uid;
+
+ if (got_head)
+ rescan = NULL;
+ else
+ rescan = BITMAP_ALLOC (NULL);
+
+ while (head)
+ {
+ struct dead_debug_use *next = head->next;
+ rtx insn;
+
+ insn = DF_REF_INSN (head->use);
+ if (!next || DF_REF_INSN (next->use) != insn)
+ {
+ INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
+ if (got_head)
+ df_insn_rescan_debug_internal (insn);
+ else
+ bitmap_set_bit (rescan, INSN_UID (insn));
+ if (debug->to_rescan)
+ bitmap_clear_bit (debug->to_rescan, INSN_UID (insn));
+ }
+ XDELETE (head);
+ head = next;
+ }
+
+ if (got_head)
+ {
+ debug->head = NULL;
+ return;
+ }
+
+ while ((cur = *tailp))
+ if (bitmap_bit_p (rescan, INSN_UID (DF_REF_INSN (cur->use))))
+ {
+ *tailp = cur->next;
+ XDELETE (cur);
+ }
+ else
+ tailp = &cur->next;
+
+ EXECUTE_IF_SET_IN_BITMAP (rescan, 0, uid, bi)
+ {
+ struct df_insn_info *insn_info = DF_INSN_UID_SAFE_GET (uid);
+ if (insn_info)
+ df_insn_rescan_debug_internal (insn_info->insn);
+ }
+
+ BITMAP_FREE (rescan);
+}
+
+/* Reset all debug insns with pending uses. Release the bitmap in it,
+ unless it is USED. USED must be the same bitmap passed to
+ dead_debug_init. */
+void
+dead_debug_finish (struct dead_debug *debug, bitmap used)
+{
+ if (debug->used != used)
+ BITMAP_FREE (debug->used);
+
+ dead_debug_reset_uses (debug, debug->head);
+
+ if (debug->to_rescan)
+ {
+ bitmap_iterator bi;
+ unsigned int uid;
+
+ EXECUTE_IF_SET_IN_BITMAP (debug->to_rescan, 0, uid, bi)
+ {
+ struct df_insn_info *insn_info = DF_INSN_UID_SAFE_GET (uid);
+ if (insn_info)
+ df_insn_rescan (insn_info->insn);
+ }
+ BITMAP_FREE (debug->to_rescan);
+ }
+}
+
+/* Add USE to DEBUG. It must be a dead reference to UREGNO in a debug
+ insn. Create a bitmap for DEBUG as needed. */
+void
+dead_debug_add (struct dead_debug *debug, df_ref use, unsigned int uregno)
+{
+ struct dead_debug_use *newddu = XNEW (struct dead_debug_use);
+
+ newddu->use = use;
+ newddu->next = debug->head;
+ debug->head = newddu;
+
+ if (!debug->used)
+ debug->used = BITMAP_ALLOC (NULL);
+
+ /* ??? If we dealt with split multi-registers below, we should set
+ all registers for the used mode in case of hardware
+ registers. */
+ bitmap_set_bit (debug->used, uregno);
+}
+
+/* If UREGNO is referenced by any entry in DEBUG, emit a debug insn
+ before or after INSN (depending on WHERE), that binds a debug temp
+ to the widest-mode use of UREGNO, if WHERE is *_WITH_REG, or the
+ value stored in UREGNO by INSN otherwise, and replace all uses of
+ UREGNO in DEBUG with uses of the debug temp. INSN must be where
+ UREGNO dies, if WHERE is *_BEFORE_*, or where it is set otherwise.
+ Return the number of debug insns emitted. */
+int
+dead_debug_insert_temp (struct dead_debug *debug, unsigned int uregno,
+ rtx insn, enum debug_temp_where where)
+{
+ struct dead_debug_use **tailp = &debug->head;
+ struct dead_debug_use *cur;
+ struct dead_debug_use *uses = NULL;
+ struct dead_debug_use **usesp = &uses;
+ rtx reg = NULL;
+ rtx breg;
+ rtx dval;
+ rtx bind;
+
+ if (!debug->used || !bitmap_clear_bit (debug->used, uregno))
+ return 0;
+
+ /* Move all uses of uregno from debug->head to uses, setting mode to
+ the widest referenced mode. */
+ while ((cur = *tailp))
+ {
+ if (DF_REF_REGNO (cur->use) == uregno)
+ {
+ *usesp = cur;
+ usesp = &cur->next;
+ *tailp = cur->next;
+ cur->next = NULL;
+ if (!reg
+ || (GET_MODE_BITSIZE (GET_MODE (reg))
+ < GET_MODE_BITSIZE (GET_MODE (*DF_REF_REAL_LOC (cur->use)))))
+ reg = *DF_REF_REAL_LOC (cur->use);
+ }
+ else
+ tailp = &(*tailp)->next;
+ }
+
+ /* We may have dangling bits in debug->used for registers that were part
+ of a multi-register use, one component of which has been reset. */
+ if (reg == NULL)
+ {
+ gcc_checking_assert (!uses);
+ return 0;
+ }
+
+ gcc_checking_assert (uses);
+
+ breg = reg;
+ /* Recover the expression INSN stores in REG. */
+ if (where == DEBUG_TEMP_BEFORE_WITH_VALUE)
+ {
+ rtx set = single_set (insn);
+ rtx dest, src;
+
+ if (set)
+ {
+ dest = SET_DEST (set);
+ src = SET_SRC (set);
+ /* Lose if the REG-setting insn is a CALL. */
+ if (GET_CODE (src) == CALL)
+ {
+ while (uses)
+ {
+ cur = uses->next;
+ XDELETE (uses);
+ uses = cur;
+ }
+ return 0;
+ }
+ }
+
+ /* ??? Should we try to extract it from a PARALLEL? */
+ if (!set)
+ breg = NULL;
+ /* Cool, it's the same REG, we can use SRC. */
+ else if (dest == reg)
+ breg = cleanup_auto_inc_dec (src, VOIDmode);
+ else if (REG_P (dest))
+ {
+ /* Hmm... Something's fishy, we should be setting REG here. */
+ if (REGNO (dest) != REGNO (reg))
+ breg = NULL;
+ /* If we're not overwriting all the hardware registers that
+ setting REG in its mode would, we won't know what to bind
+ the debug temp to. ??? We could bind the debug_expr to a
+ CONCAT or PARALLEL with the split multi-registers, and
+ replace them as we found the corresponding sets. */
+ else if (REGNO (reg) < FIRST_PSEUDO_REGISTER
+ && (hard_regno_nregs[REGNO (reg)][GET_MODE (reg)]
+ != hard_regno_nregs[REGNO (reg)][GET_MODE (dest)]))
+ breg = NULL;
+ /* Ok, it's the same (hardware) REG, but with a different
+ mode, so SUBREG it. */
+ else
+ breg = lowpart_subreg (GET_MODE (reg),
+ cleanup_auto_inc_dec (src, VOIDmode),
+ GET_MODE (dest));
+ }
+ else if (GET_CODE (dest) == SUBREG)
+ {
+ /* We should be setting REG here. Lose. */
+ if (REGNO (SUBREG_REG (dest)) != REGNO (reg))
+ breg = NULL;
+ /* Lose if we're setting something other than the lowpart of
+ REG. */
+ else if (!subreg_lowpart_p (dest))
+ breg = NULL;
+ /* If we're not overwriting all the hardware registers that
+ setting REG in its mode would, we won't know what to bind
+ the debug temp to. */
+ else if (REGNO (reg) < FIRST_PSEUDO_REGISTER
+ && (hard_regno_nregs[REGNO (reg)][GET_MODE (reg)]
+ != hard_regno_nregs[REGNO (reg)][GET_MODE (dest)]))
+ breg = NULL;
+ /* Yay, we can use SRC, just adjust its mode. */
+ else
+ breg = lowpart_subreg (GET_MODE (reg),
+ cleanup_auto_inc_dec (src, VOIDmode),
+ GET_MODE (dest));
+ }
+ /* Oh well, we're out of luck. */
+ else
+ breg = NULL;
+
+ /* We couldn't figure out the value stored in REG, so reset all
+ of its pending debug uses. */
+ if (!breg)
+ {
+ dead_debug_reset_uses (debug, uses);
+ return 0;
+ }
+ }
+
+ /* If there's a single (debug) use of an otherwise unused REG, and
+ the debug use is not part of a larger expression, then it
+ probably doesn't make sense to introduce a new debug temp. */
+ if (where == DEBUG_TEMP_AFTER_WITH_REG && !uses->next)
+ {
+ rtx next = DF_REF_INSN (uses->use);
+
+ if (DEBUG_INSN_P (next) && reg == INSN_VAR_LOCATION_LOC (next))
+ {
+ XDELETE (uses);
+ return 0;
+ }
+ }
+
+ /* Create DEBUG_EXPR (and DEBUG_EXPR_DECL). */
+ dval = make_debug_expr_from_rtl (reg);
+
+ /* Emit a debug bind insn before the insn in which reg dies. */
+ bind = gen_rtx_VAR_LOCATION (GET_MODE (reg),
+ DEBUG_EXPR_TREE_DECL (dval), breg,
+ VAR_INIT_STATUS_INITIALIZED);
+
+ if (where == DEBUG_TEMP_AFTER_WITH_REG)
+ bind = emit_debug_insn_after (bind, insn);
+ else
+ bind = emit_debug_insn_before (bind, insn);
+ df_insn_rescan (bind);
+
+ /* Adjust all uses. */
+ while ((cur = uses))
+ {
+ if (GET_MODE (*DF_REF_REAL_LOC (cur->use)) == GET_MODE (reg))
+ *DF_REF_REAL_LOC (cur->use) = dval;
+ else
+ *DF_REF_REAL_LOC (cur->use)
+ = gen_lowpart_SUBREG (GET_MODE (*DF_REF_REAL_LOC (cur->use)), dval);
+ /* ??? Should we simplify subreg of subreg? */
+ if (debug->to_rescan == NULL)
+ debug->to_rescan = BITMAP_ALLOC (NULL);
+ bitmap_set_bit (debug->to_rescan, INSN_UID (DF_REF_INSN (cur->use)));
+ uses = cur->next;
+ XDELETE (cur);
+ }
+
+ return 1;
+}
diff --git a/gcc/valtrack.h b/gcc/valtrack.h
new file mode 100644
index 00000000000..9f96f210b1a
--- /dev/null
+++ b/gcc/valtrack.h
@@ -0,0 +1,75 @@
+/* Infrastructure for tracking user variable locations and values
+ throughout compilation.
+ Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
+ Contributed by Alexandre Oliva <aoliva@redhat.com>.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#ifndef GCC_VALTRACK_H
+#define GCC_VALTRACK_H
+
+#include "bitmap.h"
+#include "df.h"
+#include "rtl.h"
+#include "basic-block.h"
+
+/* Debug uses of dead regs. */
+
+/* Node of a linked list of uses of dead REGs in debug insns. */
+struct dead_debug_use
+{
+ df_ref use;
+ struct dead_debug_use *next;
+};
+
+/* Linked list of the above, with a bitmap of the REGs in the
+ list. */
+struct dead_debug
+{
+ struct dead_debug_use *head;
+ bitmap used;
+ bitmap to_rescan;
+};
+
+/* This type controls the behavior of dead_debug_insert_temp WRT
+ UREGNO and INSN. */
+enum debug_temp_where
+ {
+ /* Bind a newly-created debug temporary to a REG for UREGNO, and
+ insert the debug insn before INSN. REG is expected to die at
+ INSN. */
+ DEBUG_TEMP_BEFORE_WITH_REG = -1,
+ /* Bind a newly-created debug temporary to the value INSN stores
+ in REG, and insert the debug insn before INSN. */
+ DEBUG_TEMP_BEFORE_WITH_VALUE = 0,
+ /* Bind a newly-created debug temporary to a REG for UREGNO, and
+ insert the debug insn after INSN. REG is expected to be set at
+ INSN. */
+ DEBUG_TEMP_AFTER_WITH_REG = 1
+ };
+
+extern void dead_debug_init (struct dead_debug *, bitmap);
+extern void dead_debug_finish (struct dead_debug *, bitmap);
+extern void dead_debug_add (struct dead_debug *, df_ref, unsigned int);
+extern int dead_debug_insert_temp (struct dead_debug *,
+ unsigned int uregno, rtx insn,
+ enum debug_temp_where);
+
+extern void propagate_for_debug (rtx, rtx, rtx, rtx, basic_block);
+
+
+#endif /* GCC_VALTRACK_H */
diff --git a/gcc/value-prof.c b/gcc/value-prof.c
index dabe4195100..25445a10924 100644
--- a/gcc/value-prof.c
+++ b/gcc/value-prof.c
@@ -36,14 +36,13 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-flow-inline.h"
#include "diagnostic.h"
-#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "coverage.h"
#include "tree.h"
#include "gcov-io.h"
#include "cgraph.h"
#include "timevar.h"
-#include "tree-pass.h"
+#include "dumpfile.h"
#include "pointer-set.h"
#include "profile.h"
@@ -54,28 +53,63 @@ along with GCC; see the file COPYING3. If not see
1) Division/modulo specialization. Provided that we can determine that the
operands of the division have some special properties, we may use it to
produce more effective code.
- 2) Speculative prefetching. If we are able to determine that the difference
- between addresses accessed by a memory reference is usually constant, we
- may add the prefetch instructions.
- FIXME: This transformation was removed together with RTL based value
- profiling.
- 3) Indirect/virtual call specialization. If we can determine most
+ 2) Indirect/virtual call specialization. If we can determine most
common function callee in indirect/virtual call. We can use this
information to improve code effectiveness (especially info for
- inliner).
+ the inliner).
- Every such optimization should add its requirements for profiled values to
- insn_values_to_profile function. This function is called from branch_prob
- in profile.c and the requested values are instrumented by it in the first
- compilation with -fprofile-arcs. The optimization may then read the
- gathered data in the second compilation with -fbranch-probabilities.
+ 3) Speculative prefetching. If we are able to determine that the difference
+ between addresses accessed by a memory reference is usually constant, we
+ may add the prefetch instructions.
+ FIXME: This transformation was removed together with RTL based value
+ profiling.
- The measured data is pointed to from the histograms
- field of the statement annotation of the instrumented insns. It is
- kept as a linked list of struct histogram_value_t's, which contain the
- same information as above. */
+ Value profiling internals
+ ==========================
+
+ Every value profiling transformation starts with defining what values
+ to profile. There are different histogram types (see HIST_TYPE_* in
+ value-prof.h) and each transformation can request one or more histogram
+ types per GIMPLE statement. The function gimple_find_values_to_profile()
+ collects the values to profile in a VEC, and adds the number of counters
+ required for the different histogram types.
+
+ For a -fprofile-generate run, the statements for which values should be
+ recorded, are instrumented in instrument_values(). The instrumentation
+ is done by helper functions that can be found in tree-profile.c, where
+ new types of histograms can be added if necessary.
+
+ After a -fprofile-use, the value profiling data is read back in by
+ compute_value_histograms() that translates the collected data to
+ histograms and attaches them to the profiled statements via
+ gimple_add_histogram_value(). Histograms are stored in a hash table
+ that is attached to every intrumented function, see VALUE_HISTOGRAMS
+ in function.h.
+
+ The value-profile transformations driver is the function
+ gimple_value_profile_transformations(). It traverses all statements in
+ the to-be-transformed function, and looks for statements with one or
+ more histograms attached to it. If a statement has histograms, the
+ transformation functions are called on the statement.
+
+ Limitations / FIXME / TODO:
+ * Only one histogram of each type can be associated with a statement.
+ * Currently, HIST_TYPE_CONST_DELTA is not implemented.
+ (This type of histogram was originally used to implement a form of
+ stride profiling based speculative prefetching to improve SPEC2000
+ scores for memory-bound benchmarks, mcf and equake. However, this
+ was an RTL value-profiling transformation, and those have all been
+ removed.)
+ * Some value profile transformations are done in builtins.c (?!)
+ * Updating of histograms needs some TLC.
+ * The value profiling code could be used to record analysis results
+ from non-profiling (e.g. VRP).
+ * Adding new profilers should be simplified, starting with a cleanup
+ of what-happens-where andwith making gimple_find_values_to_profile
+ and gimple_value_profile_transformations table-driven, perhaps...
+*/
static tree gimple_divmod_fixed_value (gimple, tree, int, gcov_type, gcov_type);
static tree gimple_mod_pow2 (gimple, int, gcov_type, gcov_type);
@@ -85,7 +119,7 @@ static bool gimple_divmod_fixed_value_transform (gimple_stmt_iterator *);
static bool gimple_mod_pow2_value_transform (gimple_stmt_iterator *);
static bool gimple_mod_subtract_transform (gimple_stmt_iterator *);
static bool gimple_stringops_transform (gimple_stmt_iterator *);
-static bool gimple_ic_transform (gimple);
+static bool gimple_ic_transform (gimple_stmt_iterator *);
/* Allocate histogram value. */
@@ -108,7 +142,7 @@ histogram_hash (const void *x)
return htab_hash_pointer (((const_histogram_value)x)->hvalue.stmt);
}
-/* Return nonzero if decl_id of die_struct X is the same as UID of decl *Y. */
+/* Return nonzero if statement for histogram_value X is Y. */
static int
histogram_eq (const void *x, const void *y)
@@ -310,7 +344,7 @@ dump_histograms_for_stmt (struct function *fun, FILE *dump_file, gimple stmt)
{
histogram_value hist;
for (hist = gimple_histogram_value (fun, stmt); hist; hist = hist->hvalue.next)
- dump_histogram_value (dump_file, hist);
+ dump_histogram_value (dump_file, hist);
}
/* Remove all histograms associated with STMT. */
@@ -520,12 +554,11 @@ gimple_value_profile_transformations (void)
will be added before the current statement, and that the
current statement remain valid (although possibly
modified) upon return. */
- if (flag_value_profile_transformations
- && (gimple_mod_subtract_transform (&gsi)
- || gimple_divmod_fixed_value_transform (&gsi)
- || gimple_mod_pow2_value_transform (&gsi)
- || gimple_stringops_transform (&gsi)
- || gimple_ic_transform (stmt)))
+ if (gimple_mod_subtract_transform (&gsi)
+ || gimple_divmod_fixed_value_transform (&gsi)
+ || gimple_mod_pow2_value_transform (&gsi)
+ || gimple_stringops_transform (&gsi)
+ || gimple_ic_transform (&gsi))
{
stmt = gsi_stmt (gsi);
changed = true;
@@ -559,7 +592,7 @@ gimple_divmod_fixed_value (gimple stmt, tree value, int prob, gcov_type count,
gcov_type all)
{
gimple stmt1, stmt2, stmt3;
- tree tmp0, tmp1, tmp2, tmpv;
+ tree tmp0, tmp1, tmp2;
gimple bb1end, bb2end, bb3end;
basic_block bb, bb2, bb3, bb4;
tree optype, op1, op2;
@@ -577,20 +610,17 @@ gimple_divmod_fixed_value (gimple stmt, tree value, int prob, gcov_type count,
bb = gimple_bb (stmt);
gsi = gsi_for_stmt (stmt);
- tmpv = create_tmp_reg (optype, "PROF");
- tmp0 = make_ssa_name (tmpv, NULL);
- tmp1 = make_ssa_name (tmpv, NULL);
+ tmp0 = make_temp_ssa_name (optype, NULL, "PROF");
+ tmp1 = make_temp_ssa_name (optype, NULL, "PROF");
stmt1 = gimple_build_assign (tmp0, fold_convert (optype, value));
- SSA_NAME_DEF_STMT (tmp0) = stmt1;
stmt2 = gimple_build_assign (tmp1, op2);
- SSA_NAME_DEF_STMT (tmp1) = stmt2;
stmt3 = gimple_build_cond (NE_EXPR, tmp1, tmp0, NULL_TREE, NULL_TREE);
gsi_insert_before (&gsi, stmt1, GSI_SAME_STMT);
gsi_insert_before (&gsi, stmt2, GSI_SAME_STMT);
gsi_insert_before (&gsi, stmt3, GSI_SAME_STMT);
bb1end = stmt3;
- tmp2 = make_rename_temp (optype, "PROF");
+ tmp2 = create_tmp_reg (optype, "PROF");
stmt1 = gimple_build_assign_with_ops (gimple_assign_rhs_code (stmt), tmp2,
op1, tmp0);
gsi_insert_before (&gsi, stmt1, GSI_SAME_STMT);
@@ -716,7 +746,7 @@ static tree
gimple_mod_pow2 (gimple stmt, int prob, gcov_type count, gcov_type all)
{
gimple stmt1, stmt2, stmt3, stmt4;
- tree tmp2, tmp3, tmpv;
+ tree tmp2, tmp3;
gimple bb1end, bb2end, bb3end;
basic_block bb, bb2, bb3, bb4;
tree optype, op1, op2;
@@ -734,15 +764,12 @@ gimple_mod_pow2 (gimple stmt, int prob, gcov_type count, gcov_type all)
bb = gimple_bb (stmt);
gsi = gsi_for_stmt (stmt);
- result = make_rename_temp (optype, "PROF");
- tmpv = create_tmp_var (optype, "PROF");
- tmp2 = make_ssa_name (tmpv, NULL);
- tmp3 = make_ssa_name (tmpv, NULL);
+ result = create_tmp_reg (optype, "PROF");
+ tmp2 = make_temp_ssa_name (optype, NULL, "PROF");
+ tmp3 = make_temp_ssa_name (optype, NULL, "PROF");
stmt2 = gimple_build_assign_with_ops (PLUS_EXPR, tmp2, op2,
build_int_cst (optype, -1));
- SSA_NAME_DEF_STMT (tmp2) = stmt2;
stmt3 = gimple_build_assign_with_ops (BIT_AND_EXPR, tmp3, tmp2, op2);
- SSA_NAME_DEF_STMT (tmp3) = stmt3;
stmt4 = gimple_build_cond (NE_EXPR, tmp3, build_int_cst (optype, 0),
NULL_TREE, NULL_TREE);
gsi_insert_before (&gsi, stmt2, GSI_SAME_STMT);
@@ -890,11 +917,10 @@ gimple_mod_subtract (gimple stmt, int prob1, int prob2, int ncounts,
bb = gimple_bb (stmt);
gsi = gsi_for_stmt (stmt);
- result = make_rename_temp (optype, "PROF");
- tmp1 = make_ssa_name (create_tmp_var (optype, "PROF"), NULL);
+ result = create_tmp_reg (optype, "PROF");
+ tmp1 = make_temp_ssa_name (optype, NULL, "PROF");
stmt1 = gimple_build_assign (result, op1);
stmt2 = gimple_build_assign (tmp1, op2);
- SSA_NAME_DEF_STMT (tmp1) = stmt2;
stmt3 = gimple_build_cond (LT_EXPR, result, tmp1, NULL_TREE, NULL_TREE);
gsi_insert_before (&gsi, stmt1, GSI_SAME_STMT);
gsi_insert_before (&gsi, stmt2, GSI_SAME_STMT);
@@ -1143,7 +1169,7 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call,
int prob, gcov_type count, gcov_type all)
{
gimple dcall_stmt, load_stmt, cond_stmt;
- tree tmp0, tmp1, tmpv, tmp;
+ tree tmp0, tmp1, tmp;
basic_block cond_bb, dcall_bb, icall_bb, join_bb = NULL;
tree optype = build_pointer_type (void_type_node);
edge e_cd, e_ci, e_di, e_dj = NULL, e_ij;
@@ -1153,18 +1179,15 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call,
cond_bb = gimple_bb (icall_stmt);
gsi = gsi_for_stmt (icall_stmt);
- tmpv = create_tmp_reg (optype, "PROF");
- tmp0 = make_ssa_name (tmpv, NULL);
- tmp1 = make_ssa_name (tmpv, NULL);
+ tmp0 = make_temp_ssa_name (optype, NULL, "PROF");
+ tmp1 = make_temp_ssa_name (optype, NULL, "PROF");
tmp = unshare_expr (gimple_call_fn (icall_stmt));
load_stmt = gimple_build_assign (tmp0, tmp);
- SSA_NAME_DEF_STMT (tmp0) = load_stmt;
gsi_insert_before (&gsi, load_stmt, GSI_SAME_STMT);
tmp = fold_convert (optype, build_addr (direct_call->symbol.decl,
current_function_decl));
load_stmt = gimple_build_assign (tmp1, tmp);
- SSA_NAME_DEF_STMT (tmp1) = load_stmt;
gsi_insert_before (&gsi, load_stmt, GSI_SAME_STMT);
cond_stmt = gimple_build_cond (EQ_EXPR, tmp1, tmp0, NULL_TREE, NULL_TREE);
@@ -1242,12 +1265,11 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call,
{
tree result = gimple_call_lhs (icall_stmt);
gimple phi = create_phi_node (result, join_bb);
- SSA_NAME_DEF_STMT (result) = phi;
gimple_call_set_lhs (icall_stmt,
- make_ssa_name (SSA_NAME_VAR (result), icall_stmt));
+ duplicate_ssa_name (result, icall_stmt));
add_phi_arg (phi, gimple_call_lhs (icall_stmt), e_ij, UNKNOWN_LOCATION);
gimple_call_set_lhs (dcall_stmt,
- make_ssa_name (SSA_NAME_VAR (result), dcall_stmt));
+ duplicate_ssa_name (result, dcall_stmt));
add_phi_arg (phi, gimple_call_lhs (dcall_stmt), e_dj, UNKNOWN_LOCATION);
}
@@ -1284,8 +1306,9 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call,
*/
static bool
-gimple_ic_transform (gimple stmt)
+gimple_ic_transform (gimple_stmt_iterator *gsi)
{
+ gimple stmt = gsi_stmt (*gsi);
histogram_value histogram;
gcov_type val, count, all, bb_all;
gcov_type prob;
@@ -1398,7 +1421,7 @@ gimple_stringop_fixed_value (gimple vcall_stmt, tree icall_size, int prob,
gcov_type count, gcov_type all)
{
gimple tmp_stmt, cond_stmt, icall_stmt;
- tree tmp0, tmp1, tmpv, vcall_size, optype;
+ tree tmp0, tmp1, vcall_size, optype;
basic_block cond_bb, icall_bb, vcall_bb, join_bb;
edge e_ci, e_cv, e_iv, e_ij, e_vj;
gimple_stmt_iterator gsi;
@@ -1415,15 +1438,12 @@ gimple_stringop_fixed_value (gimple vcall_stmt, tree icall_size, int prob,
vcall_size = gimple_call_arg (vcall_stmt, size_arg);
optype = TREE_TYPE (vcall_size);
- tmpv = create_tmp_var (optype, "PROF");
- tmp0 = make_ssa_name (tmpv, NULL);
- tmp1 = make_ssa_name (tmpv, NULL);
+ tmp0 = make_temp_ssa_name (optype, NULL, "PROF");
+ tmp1 = make_temp_ssa_name (optype, NULL, "PROF");
tmp_stmt = gimple_build_assign (tmp0, fold_convert (optype, icall_size));
- SSA_NAME_DEF_STMT (tmp0) = tmp_stmt;
gsi_insert_before (&gsi, tmp_stmt, GSI_SAME_STMT);
tmp_stmt = gimple_build_assign (tmp1, vcall_size);
- SSA_NAME_DEF_STMT (tmp1) = tmp_stmt;
gsi_insert_before (&gsi, tmp_stmt, GSI_SAME_STMT);
cond_stmt = gimple_build_cond (EQ_EXPR, tmp1, tmp0, NULL_TREE, NULL_TREE);
@@ -1473,12 +1493,11 @@ gimple_stringop_fixed_value (gimple vcall_stmt, tree icall_size, int prob,
{
tree result = gimple_call_lhs (vcall_stmt);
gimple phi = create_phi_node (result, join_bb);
- SSA_NAME_DEF_STMT (result) = phi;
gimple_call_set_lhs (vcall_stmt,
- make_ssa_name (SSA_NAME_VAR (result), vcall_stmt));
+ duplicate_ssa_name (result, vcall_stmt));
add_phi_arg (phi, gimple_call_lhs (vcall_stmt), e_vj, UNKNOWN_LOCATION);
gimple_call_set_lhs (icall_stmt,
- make_ssa_name (SSA_NAME_VAR (result), icall_stmt));
+ duplicate_ssa_name (result, icall_stmt));
add_phi_arg (phi, gimple_call_lhs (icall_stmt), e_ij, UNKNOWN_LOCATION);
}
@@ -1650,7 +1669,7 @@ gimple_divmod_values_to_profile (gimple stmt, histogram_values *values)
VEC_reserve (histogram_value, heap, *values, 3);
- if (is_gimple_reg (divisor))
+ if (TREE_CODE (divisor) == SSA_NAME)
/* Check for the case where the divisor is the same value most
of the time. */
VEC_quick_push (histogram_value, *values,
@@ -1750,12 +1769,9 @@ gimple_stringops_values_to_profile (gimple stmt, histogram_values *values)
static void
gimple_values_to_profile (gimple stmt, histogram_values *values)
{
- if (flag_value_profile_transformations)
- {
- gimple_divmod_values_to_profile (stmt, values);
- gimple_stringops_values_to_profile (stmt, values);
- gimple_indirect_call_to_profile (stmt, values);
- }
+ gimple_divmod_values_to_profile (stmt, values);
+ gimple_stringops_values_to_profile (stmt, values);
+ gimple_indirect_call_to_profile (stmt, values);
}
void
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 66ce35a0095..818fb2456b5 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -104,7 +104,6 @@
#include "hashtab.h"
#include "regs.h"
#include "expr.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "tree-flow.h"
#include "cselib.h"
@@ -5087,12 +5086,12 @@ var_lowpart (enum machine_mode mode, rtx loc)
{
unsigned int offset, reg_offset, regno;
- if (!REG_P (loc) && !MEM_P (loc))
- return NULL;
-
if (GET_MODE (loc) == mode)
return loc;
+ if (!REG_P (loc) && !MEM_P (loc))
+ return NULL;
+
offset = byte_lowpart_offset (mode, GET_MODE (loc));
if (MEM_P (loc))
@@ -7822,7 +7821,7 @@ loc_exp_dep_clear (variable var)
{
while (!VEC_empty (loc_exp_dep, VAR_LOC_DEP_VEC (var)))
{
- loc_exp_dep *led = VEC_last (loc_exp_dep, VAR_LOC_DEP_VEC (var));
+ loc_exp_dep *led = &VEC_last (loc_exp_dep, VAR_LOC_DEP_VEC (var));
if (led->next)
led->next->pprev = led->pprev;
if (led->pprev)
@@ -7866,7 +7865,7 @@ loc_exp_insert_dep (variable var, rtx x, htab_t vars)
else
{
VEC_quick_push (loc_exp_dep, VAR_LOC_DEP_VEC (var), NULL);
- led = VEC_last (loc_exp_dep, VAR_LOC_DEP_VEC (var));
+ led = &VEC_last (loc_exp_dep, VAR_LOC_DEP_VEC (var));
}
led->dv = var->dv;
led->value = x;
@@ -9327,14 +9326,11 @@ vt_add_function_parameter (tree parm)
if (GET_MODE (decl_rtl) == BLKmode || GET_MODE (incoming) == BLKmode)
return;
- /* If there is a DRAP register, rewrite the incoming location of parameters
- passed on the stack into MEMs based on the argument pointer, as the DRAP
- register can be reused for other purposes and we do not track locations
- based on generic registers. But the prerequisite is that this argument
- pointer be also the virtual CFA pointer, see vt_initialize. */
+ /* If there is a DRAP register or a pseudo in internal_arg_pointer,
+ rewrite the incoming location of parameters passed on the stack
+ into MEMs based on the argument pointer, so that incoming doesn't
+ depend on a pseudo. */
if (MEM_P (incoming)
- && stack_realign_drap
- && arg_pointer_rtx == cfa_base_rtx
&& (XEXP (incoming, 0) == crtl->args.internal_arg_pointer
|| (GET_CODE (XEXP (incoming, 0)) == PLUS
&& XEXP (XEXP (incoming, 0), 0)
@@ -10044,6 +10040,7 @@ variable_tracking_main_1 (void)
if (dump_file && (dump_flags & TDF_DETAILS))
{
dump_dataflow_sets ();
+ dump_reg_info (dump_file);
dump_flow_info (dump_file, dump_flags);
}
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 439b29ea24c..b380a47d944 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -2871,8 +2871,8 @@ compare_constant (const tree t1, const tree t2)
for (idx = 0; idx < VEC_length (constructor_elt, v1); ++idx)
{
- constructor_elt *c1 = VEC_index (constructor_elt, v1, idx);
- constructor_elt *c2 = VEC_index (constructor_elt, v2, idx);
+ constructor_elt *c1 = &VEC_index (constructor_elt, v1, idx);
+ constructor_elt *c2 = &VEC_index (constructor_elt, v2, idx);
/* Check that each value is the same... */
if (!compare_constant (c1->value, c2->value))
@@ -3626,7 +3626,7 @@ output_constant_pool_2 (enum machine_mode mode, rtx x, unsigned int align)
{
REAL_VALUE_TYPE r;
- gcc_assert (GET_CODE (x) == CONST_DOUBLE);
+ gcc_assert (CONST_DOUBLE_AS_FLOAT_P (x));
REAL_VALUE_FROM_CONST_DOUBLE (r, x);
assemble_real (r, mode, align);
break;
diff --git a/gcc/vec.c b/gcc/vec.c
index 783a3cfd52d..51a55d95fbf 100644
--- a/gcc/vec.c
+++ b/gcc/vec.c
@@ -1,7 +1,8 @@
/* Vector API for GNU compiler.
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Nathan Sidwell <nathan@codesourcery.com>
+ Re-implemented in C++ by Diego Novillo <dnovillo@google.com>
This file is part of GCC.
@@ -34,8 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "hashtab.h"
-#ifdef GATHER_STATISTICS
-
/* Store information about each particular vector. */
struct vec_descriptor
{
@@ -158,10 +157,10 @@ free_overhead (struct vec_prefix *ptr)
void
vec_heap_free (void *ptr)
{
- free_overhead ((struct vec_prefix *)ptr);
+ if (GATHER_STATISTICS)
+ free_overhead ((struct vec_prefix *)ptr);
free (ptr);
}
-#endif
/* Calculate the new ALLOC value, making sure that RESERVE slots are
free. If EXACT grow exactly, otherwise grow exponentially. */
@@ -215,7 +214,7 @@ calculate_allocation (const struct vec_prefix *pfx, int reserve, bool exact)
trailing array is at VEC_OFFSET offset and consists of ELT_SIZE
sized elements. */
-static void *
+void *
vec_gc_o_reserve_1 (void *vec, int reserve, size_t vec_offset, size_t elt_size,
bool exact MEM_STAT_DECL)
{
@@ -248,61 +247,10 @@ vec_gc_o_reserve_1 (void *vec, int reserve, size_t vec_offset, size_t elt_size,
return vec;
}
-/* Ensure there are at least RESERVE free slots in VEC, growing
- exponentially. If RESERVE < 0 grow exactly, else grow
- exponentially. As a special case, if VEC is NULL, and RESERVE is
- 0, no vector will be created. */
-
-void *
-vec_gc_p_reserve (void *vec, int reserve MEM_STAT_DECL)
-{
- return vec_gc_o_reserve_1 (vec, reserve,
- sizeof (struct vec_prefix),
- sizeof (void *), false
- PASS_MEM_STAT);
-}
-
-/* Ensure there are at least RESERVE free slots in VEC, growing
- exactly. If RESERVE < 0 grow exactly, else grow exponentially. As
- a special case, if VEC is NULL, and RESERVE is 0, no vector will be
- created. */
-
-void *
-vec_gc_p_reserve_exact (void *vec, int reserve MEM_STAT_DECL)
-{
- return vec_gc_o_reserve_1 (vec, reserve,
- sizeof (struct vec_prefix),
- sizeof (void *), true
- PASS_MEM_STAT);
-}
-
-/* As for vec_gc_p_reserve, but for object vectors. The vector's
- trailing array is at VEC_OFFSET offset and consists of ELT_SIZE
- sized elements. */
-
-void *
-vec_gc_o_reserve (void *vec, int reserve, size_t vec_offset, size_t elt_size
- MEM_STAT_DECL)
-{
- return vec_gc_o_reserve_1 (vec, reserve, vec_offset, elt_size, false
- PASS_MEM_STAT);
-}
-
-/* As for vec_gc_p_reserve_exact, but for object vectors. The
- vector's trailing array is at VEC_OFFSET offset and consists of
- ELT_SIZE sized elements. */
-
-void *
-vec_gc_o_reserve_exact (void *vec, int reserve, size_t vec_offset,
- size_t elt_size MEM_STAT_DECL)
-{
- return vec_gc_o_reserve_1 (vec, reserve, vec_offset, elt_size, true
- PASS_MEM_STAT);
-}
/* As for vec_gc_o_reserve_1, but for heap allocated vectors. */
-static void *
+void *
vec_heap_o_reserve_1 (void *vec, int reserve, size_t vec_offset,
size_t elt_size, bool exact MEM_STAT_DECL)
{
@@ -316,65 +264,20 @@ vec_heap_o_reserve_1 (void *vec, int reserve, size_t vec_offset,
return NULL;
}
-#ifdef GATHER_STATISTICS
- if (vec)
+ if (GATHER_STATISTICS && vec)
free_overhead (pfx);
-#endif
vec = xrealloc (vec, vec_offset + alloc * elt_size);
((struct vec_prefix *)vec)->alloc = alloc;
if (!pfx)
((struct vec_prefix *)vec)->num = 0;
-#ifdef GATHER_STATISTICS
- if (vec)
+ if (GATHER_STATISTICS && vec)
register_overhead ((struct vec_prefix *)vec,
- vec_offset + alloc * elt_size PASS_MEM_STAT);
-#endif
+ vec_offset + alloc * elt_size FINAL_PASS_MEM_STAT);
return vec;
}
-/* As for vec_gc_p_reserve, but for heap allocated vectors. */
-
-void *
-vec_heap_p_reserve (void *vec, int reserve MEM_STAT_DECL)
-{
- return vec_heap_o_reserve_1 (vec, reserve,
- sizeof (struct vec_prefix),
- sizeof (void *), false
- PASS_MEM_STAT);
-}
-
-/* As for vec_gc_p_reserve_exact, but for heap allocated vectors. */
-
-void *
-vec_heap_p_reserve_exact (void *vec, int reserve MEM_STAT_DECL)
-{
- return vec_heap_o_reserve_1 (vec, reserve,
- sizeof (struct vec_prefix),
- sizeof (void *), true
- PASS_MEM_STAT);
-}
-
-/* As for vec_gc_o_reserve, but for heap allocated vectors. */
-
-void *
-vec_heap_o_reserve (void *vec, int reserve, size_t vec_offset, size_t elt_size
- MEM_STAT_DECL)
-{
- return vec_heap_o_reserve_1 (vec, reserve, vec_offset, elt_size, false
- PASS_MEM_STAT);
-}
-
-/* As for vec_gc_o_reserve_exact, but for heap allocated vectors. */
-
-void *
-vec_heap_o_reserve_exact (void *vec, int reserve, size_t vec_offset,
- size_t elt_size MEM_STAT_DECL)
-{
- return vec_heap_o_reserve_1 (vec, reserve, vec_offset, elt_size, true
- PASS_MEM_STAT);
-}
/* Stack vectors are a little different. VEC_alloc turns into a call
to vec_stack_p_reserve_exact1 and passes in space allocated via a
@@ -456,28 +359,6 @@ vec_stack_o_reserve_1 (void *vec, int reserve, size_t vec_offset,
/* Grow a vector allocated on the stack. */
void *
-vec_stack_p_reserve (void *vec, int reserve MEM_STAT_DECL)
-{
- return vec_stack_o_reserve_1 (vec, reserve,
- sizeof (struct vec_prefix),
- sizeof (void *), false
- PASS_MEM_STAT);
-}
-
-/* Exact version of vec_stack_p_reserve. */
-
-void *
-vec_stack_p_reserve_exact (void *vec, int reserve MEM_STAT_DECL)
-{
- return vec_stack_o_reserve_1 (vec, reserve,
- sizeof (struct vec_prefix),
- sizeof (void *), true
- PASS_MEM_STAT);
-}
-
-/* Like vec_stack_p_reserve, but for objects. */
-
-void *
vec_stack_o_reserve (void *vec, int reserve, size_t vec_offset,
size_t elt_size MEM_STAT_DECL)
{
@@ -485,7 +366,7 @@ vec_stack_o_reserve (void *vec, int reserve, size_t vec_offset,
PASS_MEM_STAT);
}
-/* Like vec_stack_p_reserve_exact, but for objects. */
+/* Exact version of vec_stack_o_reserve. */
void *
vec_stack_o_reserve_exact (void *vec, int reserve, size_t vec_offset,
@@ -529,7 +410,6 @@ vec_assert_fail (const char *op, const char *struct_name,
}
#endif
-#ifdef GATHER_STATISTICS
/* Helper for qsort; sort descriptors by amount of memory consumed. */
static int
cmp_statistic (const void *loc1, const void *loc2)
@@ -558,17 +438,19 @@ add_statistics (void **slot, void *b)
}
/* Dump per-site memory statistics. */
-#endif
+
void
dump_vec_loc_statistics (void)
{
-#ifdef GATHER_STATISTICS
int nentries = 0;
char s[4096];
size_t allocated = 0;
size_t times = 0;
int i;
+ if (! GATHER_STATISTICS)
+ return;
+
loc_array = XCNEWVEC (struct vec_descriptor *, vec_desc_hash->n_elements);
fprintf (stderr, "Heap vectors:\n");
fprintf (stderr, "\n%-48s %10s %10s %10s\n",
@@ -603,5 +485,4 @@ dump_vec_loc_statistics (void)
fprintf (stderr, "\n%-48s %10s %10s %10s\n",
"source location", "Leak", "Peak", "Times");
fprintf (stderr, "-------------------------------------------------------\n");
-#endif
}
diff --git a/gcc/vec.h b/gcc/vec.h
index d47795879f1..1922616fc13 100644
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -1,7 +1,8 @@
/* Vector API for GNU compiler.
- Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
+ Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Nathan Sidwell <nathan@codesourcery.com>
+ Re-implemented in C++ by Diego Novillo <dnovillo@google.com>
This file is part of GCC.
@@ -95,24 +96,25 @@ along with GCC; see the file COPYING3. If not see
the 'space' predicate will tell you whether there is spare capacity
in the vector. You will not normally need to use these two functions.
- Vector types are defined using a DEF_VEC_{O,P,I}(TYPEDEF) macro, to
+ Vector types are defined using a DEF_VEC_{O,A,P,I}(TYPEDEF) macro, to
get the non-memory allocation version, and then a
- DEF_VEC_ALLOC_{O,P,I}(TYPEDEF,ALLOC) macro to get memory managed
+ DEF_VEC_ALLOC_{O,A,P,I}(TYPEDEF,ALLOC) macro to get memory managed
vectors. Variables of vector type are declared using a
VEC(TYPEDEF,ALLOC) macro. The ALLOC argument specifies the
allocation strategy, and can be either 'gc' or 'heap' for garbage
collected and heap allocated respectively. It can be 'none' to get
a vector that must be explicitly allocated (for instance as a
- trailing array of another structure). The characters O, P and I
- indicate whether TYPEDEF is a pointer (P), object (O) or integral
- (I) type. Be careful to pick the correct one, as you'll get an
- awkward and inefficient API if you use the wrong one. There is a
- check, which results in a compile-time warning, for the P and I
- versions, but there is no check for the O versions, as that is not
- possible in plain C. Due to the way GTY works, you must annotate
- any structures you wish to insert or reference from a vector with a
- GTY(()) tag. You need to do this even if you never declare the GC
- allocated variants.
+ trailing array of another structure). The characters O, A, P and I
+ indicate whether TYPEDEF is a pointer (P), object (O), atomic object
+ (A) or integral (I) type. Be careful to pick the correct one, as
+ you'll get an awkward and inefficient API if you use the wrong one or
+ a even a crash if you pick the atomic object version when the object
+ version should have been chosen instead. There is a check, which
+ results in a compile-time warning, for the P and I versions, but there
+ is no check for the O versions, as that is not possible in plain C.
+ Due to the way GTY works, you must annotate any structures you wish to
+ insert or reference from a vector with a GTY(()) tag. You need to do
+ this even if you never declare the GC allocated variants.
An example of their use would be,
@@ -133,6 +135,153 @@ along with GCC; see the file COPYING3. If not see
*/
+#if ENABLE_CHECKING
+#define VEC_CHECK_INFO ,__FILE__,__LINE__,__FUNCTION__
+#define VEC_CHECK_DECL ,const char *file_,unsigned line_,const char *function_
+#define VEC_CHECK_PASS ,file_,line_,function_
+
+#define VEC_ASSERT(EXPR,OP,T,A) \
+ (void)((EXPR) ? 0 : (VEC_ASSERT_FAIL(OP,VEC(T,A)), 0))
+
+extern void vec_assert_fail (const char *, const char * VEC_CHECK_DECL)
+ ATTRIBUTE_NORETURN;
+#define VEC_ASSERT_FAIL(OP,VEC) vec_assert_fail (OP,#VEC VEC_CHECK_PASS)
+#else
+#define VEC_CHECK_INFO
+#define VEC_CHECK_DECL
+#define VEC_CHECK_PASS
+#define VEC_ASSERT(EXPR,OP,T,A) (void)(EXPR)
+#endif
+
+#define VEC(T,A) vec_t<T>
+
+enum vec_allocation_t { heap, gc, stack };
+
+struct vec_prefix
+{
+ unsigned num;
+ unsigned alloc;
+};
+
+/* Vector type, user visible. */
+template<typename T>
+struct GTY(()) vec_t
+{
+ vec_prefix prefix;
+ T vec[1];
+};
+
+/* Garbage collection support for vec_t. */
+
+template<typename T>
+void
+gt_ggc_mx (vec_t<T> *v)
+{
+ extern void gt_ggc_mx (T&);
+ for (unsigned i = 0; i < v->prefix.num; i++)
+ gt_ggc_mx (v->vec[i]);
+}
+
+
+/* PCH support for vec_t. */
+
+template<typename T>
+void
+gt_pch_nx (vec_t<T> *v)
+{
+ extern void gt_pch_nx (T&);
+ for (unsigned i = 0; i < v->prefix.num; i++)
+ gt_pch_nx (v->vec[i]);
+}
+
+template<typename T>
+void
+gt_pch_nx (vec_t<T *> *v, gt_pointer_operator op, void *cookie)
+{
+ for (unsigned i = 0; i < v->prefix.num; i++)
+ op (&(v->vec[i]), cookie);
+}
+
+template<typename T>
+void
+gt_pch_nx (vec_t<T> *v, gt_pointer_operator op, void *cookie)
+{
+ extern void gt_pch_nx (T *, gt_pointer_operator, void *);
+ for (unsigned i = 0; i < v->prefix.num; i++)
+ gt_pch_nx (&(v->vec[i]), op, cookie);
+}
+
+
+/* FIXME cxx-conversion. Remove these definitions and update all
+ calling sites. */
+/* Vector of integer-like object. */
+#define DEF_VEC_I(T) struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_I(T,A) struct vec_swallow_trailing_semi
+
+/* Vector of pointer to object. */
+#define DEF_VEC_P(T) struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_P(T,A) struct vec_swallow_trailing_semi
+
+/* Vector of object. */
+#define DEF_VEC_O(T) struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_O(T,A) struct vec_swallow_trailing_semi
+
+/* Vectors on the stack. */
+#define DEF_VEC_ALLOC_P_STACK(T) struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_O_STACK(T) struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_I_STACK(T) struct vec_swallow_trailing_semi
+
+/* Vectors of atomic types. Atomic types do not need to have its
+ elements marked for GC and PCH. To avoid unnecessary traversals,
+ we provide template instantiations for the GC/PCH functions that
+ do not traverse the vector.
+
+ FIXME cxx-conversion - Once vec_t users are converted this can
+ be provided in some other way (e.g., adding an additional template
+ parameter to the vec_t class). */
+#define DEF_VEC_A(TYPE) \
+template<typename T> \
+void \
+gt_ggc_mx (vec_t<TYPE> *v ATTRIBUTE_UNUSED) \
+{ \
+} \
+ \
+template<typename T> \
+void \
+gt_pch_nx (vec_t<TYPE> *v ATTRIBUTE_UNUSED) \
+{ \
+} \
+ \
+template<typename T> \
+void \
+gt_pch_nx (vec_t<TYPE> *v ATTRIBUTE_UNUSED, \
+ gt_pointer_operator op ATTRIBUTE_UNUSED, \
+ void *cookie ATTRIBUTE_UNUSED) \
+{ \
+} \
+struct vec_swallow_trailing_semi
+
+#define DEF_VEC_ALLOC_A(T,A) struct vec_swallow_trailing_semi
+
+/* Support functions for stack vectors. */
+extern void *vec_stack_p_reserve_exact_1 (int, void *);
+extern void *vec_stack_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
+extern void *vec_stack_o_reserve_exact (void *, int, size_t, size_t
+ MEM_STAT_DECL);
+extern void vec_stack_free (void *);
+
+/* Reallocate an array of elements with prefix. */
+template<typename T, enum vec_allocation_t A>
+extern vec_t<T> *vec_reserve (vec_t<T> *, int MEM_STAT_DECL);
+
+template<typename T, enum vec_allocation_t A>
+extern vec_t<T> *vec_reserve_exact (vec_t<T> *, int MEM_STAT_DECL);
+
+extern void dump_vec_loc_statistics (void);
+extern void ggc_free (void *);
+extern void vec_heap_free (void *);
+
+
/* Macros to invoke API calls. A single macro works for both pointer
and object vectors, but the argument and return types might well be
different. In each macro, T is the typedef of the vector elements,
@@ -147,7 +296,14 @@ along with GCC; see the file COPYING3. If not see
Return the number of active elements in V. V can be NULL, in which
case zero is returned. */
-#define VEC_length(T,V) (VEC_OP(T,base,length)(VEC_BASE(V)))
+#define VEC_length(T,V) (VEC_length_1<T> (V))
+
+template<typename T>
+static inline unsigned
+VEC_length_1 (const vec_t<T> *vec_)
+{
+ return vec_ ? vec_->prefix.num : 0;
+}
/* Check if vector is empty
@@ -155,7 +311,30 @@ along with GCC; see the file COPYING3. If not see
Return nonzero if V is an empty vector (or V is NULL), zero otherwise. */
-#define VEC_empty(T,V) (VEC_length (T,V) == 0)
+#define VEC_empty(T,V) (VEC_empty_1<T> (V))
+
+template<typename T>
+static inline bool
+VEC_empty_1 (const vec_t<T> *vec_)
+{
+ return VEC_length (T, vec_) == 0;
+}
+
+
+/* Get the address of the array of elements
+ T *VEC_T_address (VEC(T) v)
+
+ If you need to directly manipulate the array (for instance, you
+ want to feed it to qsort), use this accessor. */
+
+#define VEC_address(T,V) (VEC_address_1<T> (V))
+
+template<typename T>
+static inline T *
+VEC_address_1 (vec_t<T> *vec_)
+{
+ return vec_ ? vec_->vec : 0;
+}
/* Get the final element of the vector.
@@ -165,16 +344,42 @@ along with GCC; see the file COPYING3. If not see
Return the final element. V must not be empty. */
-#define VEC_last(T,V) (VEC_OP(T,base,last)(VEC_BASE(V) VEC_CHECK_INFO))
+#define VEC_last(T,V) (VEC_last_1<T> (V VEC_CHECK_INFO))
+
+template<typename T>
+static inline T&
+VEC_last_1 (vec_t<T> *vec_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (vec_ && vec_->prefix.num, "last", T, base);
+ return vec_->vec[vec_->prefix.num - 1];
+}
+
/* Index into vector
T VEC_T_index(VEC(T) *v, unsigned ix); // Integer
T VEC_T_index(VEC(T) *v, unsigned ix); // Pointer
T *VEC_T_index(VEC(T) *v, unsigned ix); // Object
- Return the IX'th element. If IX must be in the domain of V. */
+ Return the IX'th element. IX must be in the domain of V. */
+
+#define VEC_index(T,V,I) (VEC_index_1<T> (V, I VEC_CHECK_INFO))
+
+template<typename T>
+static inline T&
+VEC_index_1 (vec_t<T> *vec_, unsigned ix_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (vec_ && ix_ < vec_->prefix.num, "index", T, base);
+ return vec_->vec[ix_];
+}
+
+template<typename T>
+static inline const T&
+VEC_index_1 (const vec_t<T> *vec_, unsigned ix_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (vec_ && ix_ < vec_->prefix.num, "index", T, base);
+ return vec_->vec[ix_];
+}
-#define VEC_index(T,V,I) (VEC_OP(T,base,index)(VEC_BASE(V),I VEC_CHECK_INFO))
/* Iterate over vector
int VEC_T_iterate(VEC(T) *v, unsigned ix, T &ptr); // Integer
@@ -188,7 +393,39 @@ along with GCC; see the file COPYING3. If not see
for (ix = 0; VEC_iterate(T,v,ix,ptr); ix++)
continue; */
-#define VEC_iterate(T,V,I,P) (VEC_OP(T,base,iterate)(VEC_BASE(V),I,&(P)))
+#define VEC_iterate(T,V,I,P) (VEC_iterate_1<T> (V, I, &(P)))
+
+template<typename T>
+static inline bool
+VEC_iterate_1 (const vec_t<T> *vec_, unsigned ix_, T *ptr)
+{
+ if (vec_ && ix_ < vec_->prefix.num)
+ {
+ *ptr = vec_->vec[ix_];
+ return true;
+ }
+ else
+ {
+ *ptr = 0;
+ return false;
+ }
+}
+
+template<typename T>
+static inline bool
+VEC_iterate_1 (vec_t<T> *vec_, unsigned ix_, T **ptr)
+{
+ if (vec_ && ix_ < vec_->prefix.num)
+ {
+ *ptr = &vec_->vec[ix_];
+ return true;
+ }
+ else
+ {
+ *ptr = 0;
+ return false;
+ }
+}
/* Convenience macro for forward iteration. */
@@ -207,31 +444,99 @@ along with GCC; see the file COPYING3. If not see
VEC_iterate (T, (V), (I), (P)); \
(I)--)
+
+/* Use these to determine the required size and initialization of a
+ vector embedded within another structure (as the final member).
+
+ size_t VEC_T_embedded_size(int reserve);
+ void VEC_T_embedded_init(VEC(T) *v, int reserve);
+
+ These allow the caller to perform the memory allocation. */
+
+#define VEC_embedded_size(T,N) (VEC_embedded_size_1<T> (N))
+
+template<typename T>
+static inline size_t
+VEC_embedded_size_1 (int alloc_)
+{
+ return offsetof (vec_t<T>, vec) + alloc_ * sizeof (T);
+}
+
+#define VEC_embedded_init(T,O,N) (VEC_embedded_init_1<T> (O, N))
+
+template<typename T>
+static inline void
+VEC_embedded_init_1 (vec_t<T> *vec_, int alloc_)
+{
+ vec_->prefix.num = 0;
+ vec_->prefix.alloc = alloc_;
+}
+
+
/* Allocate new vector.
VEC(T,A) *VEC_T_A_alloc(int reserve);
Allocate a new vector with space for RESERVE objects. If RESERVE
- is zero, NO vector is created. */
+ is zero, NO vector is created.
+
+ We support a vector which starts out with space on the stack and
+ switches to heap space when forced to reallocate. This works a
+ little differently. In the case of stack vectors, VEC_alloc will
+ expand to a call to VEC_alloc_1 that calls XALLOCAVAR to request the
+ initial allocation. This uses alloca to get the initial space.
+ Since alloca can not be usefully called in an inline function,
+ VEC_alloc must always be a macro.
+
+ Only the initial allocation will be made using alloca, so pass a
+ reasonable estimate that doesn't use too much stack space; don't
+ pass zero. Don't return a VEC(TYPE,stack) vector from the function
+ which allocated it. */
+
+#define VEC_alloc(T,A,N) \
+ ((A == stack) \
+ ? VEC_alloc_1 (N, \
+ XALLOCAVAR (vec_t<T>, \
+ VEC_embedded_size_1<T> (N))) \
+ : VEC_alloc_1<T, A> (N MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline vec_t<T> *
+VEC_alloc_1 (int alloc_ MEM_STAT_DECL)
+{
+ return vec_reserve_exact<T, A> (NULL, alloc_ PASS_MEM_STAT);
+}
+
+template<typename T>
+static inline vec_t<T> *
+VEC_alloc_1 (int alloc_, vec_t<T> *space)
+{
+ return (vec_t<T> *) vec_stack_p_reserve_exact_1 (alloc_, space);
+}
-#define VEC_alloc(T,A,N) (VEC_OP(T,A,alloc)(N MEM_STAT_INFO))
/* Free a vector.
void VEC_T_A_free(VEC(T,A) *&);
Free a vector and set it to NULL. */
-#define VEC_free(T,A,V) (VEC_OP(T,A,free)(&V))
+#define VEC_free(T,A,V) (VEC_free_1<T, A> (&V))
-/* Use these to determine the required size and initialization of a
- vector embedded within another structure (as the final member).
-
- size_t VEC_T_embedded_size(int reserve);
- void VEC_T_embedded_init(VEC(T) *v, int reserve);
-
- These allow the caller to perform the memory allocation. */
+template<typename T, enum vec_allocation_t A>
+static inline void
+VEC_free_1 (vec_t<T> **vec_)
+{
+ if (*vec_)
+ {
+ if (A == heap)
+ vec_heap_free (*vec_);
+ else if (A == gc)
+ ggc_free (*vec_);
+ else if (A == stack)
+ vec_stack_free (*vec_);
+ }
+ *vec_ = NULL;
+}
-#define VEC_embedded_size(T,N) (VEC_OP(T,base,embedded_size)(N))
-#define VEC_embedded_init(T,O,N) (VEC_OP(T,base,embedded_init)(VEC_BASE(O),N))
/* Copy a vector.
VEC(T,A) *VEC_T_A_copy(VEC(T) *);
@@ -239,7 +544,24 @@ along with GCC; see the file COPYING3. If not see
Copy the live elements of a vector into a new vector. The new and
old vectors need not be allocated by the same mechanism. */
-#define VEC_copy(T,A,V) (VEC_OP(T,A,copy)(VEC_BASE(V) MEM_STAT_INFO))
+#define VEC_copy(T,A,V) (VEC_copy_1<T, A> (V MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline vec_t<T> *
+VEC_copy_1 (vec_t<T> *vec_ MEM_STAT_DECL)
+{
+ size_t len_ = vec_ ? vec_->prefix.num : 0;
+ vec_t<T> *new_vec_ = NULL;
+
+ if (len_)
+ {
+ new_vec_ = vec_reserve_exact<T, A> (NULL, len_ PASS_MEM_STAT);
+ new_vec_->prefix.num = len_;
+ memcpy (new_vec_->vec, vec_->vec, sizeof (T) * len_);
+ }
+ return new_vec_;
+}
+
/* Determine if a vector has additional capacity.
@@ -251,8 +573,18 @@ along with GCC; see the file COPYING3. If not see
nonzero in exactly the same circumstances that VEC_T_reserve
will. */
-#define VEC_space(T,V,R) \
- (VEC_OP(T,base,space)(VEC_BASE(V),R VEC_CHECK_INFO))
+#define VEC_space(T,V,R) (VEC_space_1<T> (V, R VEC_CHECK_INFO))
+
+template<typename T>
+static inline int
+VEC_space_1 (vec_t<T> *vec_, int alloc_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (alloc_ >= 0, "space", T, base);
+ return vec_
+ ? vec_->prefix.alloc - vec_->prefix.num >= (unsigned)alloc_
+ : !alloc_;
+}
+
/* Reserve space.
int VEC_T_A_reserve(VEC(T,A) *&v, int reserve);
@@ -263,7 +595,20 @@ along with GCC; see the file COPYING3. If not see
occurred. */
#define VEC_reserve(T,A,V,R) \
- (VEC_OP(T,A,reserve)(&(V),R VEC_CHECK_INFO MEM_STAT_INFO))
+ (VEC_reserve_1<T, A> (&(V), (int)(R) VEC_CHECK_INFO MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline int
+VEC_reserve_1 (vec_t<T> **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ int extend = !VEC_space_1 (*vec_, alloc_ VEC_CHECK_PASS);
+
+ if (extend)
+ *vec_ = vec_reserve<T, A> (*vec_, alloc_ PASS_MEM_STAT);
+
+ return extend;
+}
+
/* Reserve space exactly.
int VEC_T_A_reserve_exact(VEC(T,A) *&v, int reserve);
@@ -274,7 +619,20 @@ along with GCC; see the file COPYING3. If not see
occurred. */
#define VEC_reserve_exact(T,A,V,R) \
- (VEC_OP(T,A,reserve_exact)(&(V),R VEC_CHECK_INFO MEM_STAT_INFO))
+ (VEC_reserve_exact_1<T, A> (&(V), R VEC_CHECK_INFO MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline int
+VEC_reserve_exact_1 (vec_t<T> **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ int extend = !VEC_space_1 (*vec_, alloc_ VEC_CHECK_PASS);
+
+ if (extend)
+ *vec_ = vec_reserve_exact<T, A> (*vec_, alloc_ PASS_MEM_STAT);
+
+ return extend;
+}
+
/* Copy elements with no reallocation
void VEC_T_splice (VEC(T) *dst, VEC(T) *src); // Integer
@@ -286,8 +644,23 @@ along with GCC; see the file COPYING3. If not see
often will be. DST is assumed to have sufficient headroom
available. */
-#define VEC_splice(T,DST,SRC) \
- (VEC_OP(T,base,splice)(VEC_BASE(DST), VEC_BASE(SRC) VEC_CHECK_INFO))
+#define VEC_splice(T,DST,SRC) (VEC_splice_1<T> (DST, SRC VEC_CHECK_INFO))
+
+template<typename T>
+static inline void
+VEC_splice_1 (vec_t<T> *dst_, vec_t<T> *src_ VEC_CHECK_DECL)
+{
+ if (src_)
+ {
+ unsigned len_ = src_->prefix.num;
+ VEC_ASSERT (dst_->prefix.num + len_ <= dst_->prefix.alloc, "splice",
+ T, base);
+
+ memcpy (&dst_->vec[dst_->prefix.num], &src_->vec[0], len_ * sizeof (T));
+ dst_->prefix.num += len_;
+ }
+}
+
/* Copy elements with reallocation
void VEC_T_safe_splice (VEC(T,A) *&dst, VEC(T) *src); // Integer
@@ -300,7 +673,21 @@ along with GCC; see the file COPYING3. If not see
reallocated if needed. */
#define VEC_safe_splice(T,A,DST,SRC) \
- (VEC_OP(T,A,safe_splice)(&(DST), VEC_BASE(SRC) VEC_CHECK_INFO MEM_STAT_INFO))
+ (VEC_safe_splice_1<T, A> (&(DST), SRC VEC_CHECK_INFO MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline void
+VEC_safe_splice_1 (vec_t<T> **dst_, vec_t<T> *src_ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ if (src_)
+ {
+ VEC_reserve_exact_1<T, A> (dst_, src_->prefix.num
+ VEC_CHECK_PASS MEM_STAT_INFO);
+
+ VEC_splice_1 (*dst_, src_ VEC_CHECK_PASS);
+ }
+}
+
/* Push object with no reallocation
T *VEC_T_quick_push (VEC(T) *v, T obj); // Integer
@@ -312,8 +699,31 @@ along with GCC; see the file COPYING3. If not see
case NO initialization is performed. There must
be sufficient space in the vector. */
-#define VEC_quick_push(T,V,O) \
- (VEC_OP(T,base,quick_push)(VEC_BASE(V),O VEC_CHECK_INFO))
+#define VEC_quick_push(T,V,O) (VEC_quick_push_1<T> (V, O VEC_CHECK_INFO))
+
+template<typename T>
+static inline T &
+VEC_quick_push_1 (vec_t<T> *vec_, T obj_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "push", T, base);
+ vec_->vec[vec_->prefix.num] = obj_;
+ T &val_ = vec_->vec[vec_->prefix.num];
+ vec_->prefix.num++;
+ return val_;
+}
+
+template<typename T>
+static inline T *
+VEC_quick_push_1 (vec_t<T> *vec_, const T *ptr_ VEC_CHECK_DECL)
+{
+ T *slot_;
+ VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "push", T, base);
+ slot_ = &vec_->vec[vec_->prefix.num++];
+ if (ptr_)
+ *slot_ = *ptr_;
+ return slot_;
+}
+
/* Push object with reallocation
T *VEC_T_A_safe_push (VEC(T,A) *&v, T obj); // Integer
@@ -325,7 +735,24 @@ along with GCC; see the file COPYING3. If not see
case NO initialization is performed. Reallocates V, if needed. */
#define VEC_safe_push(T,A,V,O) \
- (VEC_OP(T,A,safe_push)(&(V),O VEC_CHECK_INFO MEM_STAT_INFO))
+ (VEC_safe_push_1<T, A> (&(V), O VEC_CHECK_INFO MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline T &
+VEC_safe_push_1 (vec_t<T> **vec_, T obj_ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ VEC_reserve_1<T, A> (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);
+ return VEC_quick_push_1 (*vec_, obj_ VEC_CHECK_PASS);
+}
+
+template<typename T, enum vec_allocation_t A>
+static inline T *
+VEC_safe_push_1 (vec_t<T> **vec_, const T *ptr_ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ VEC_reserve_1<T, A> (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);
+ return VEC_quick_push_1 (*vec_, ptr_ VEC_CHECK_PASS);
+}
+
/* Pop element off end
T VEC_T_pop (VEC(T) *v); // Integer
@@ -335,7 +762,16 @@ along with GCC; see the file COPYING3. If not see
Pop the last element off the end. Returns the element popped, for
pointer vectors. */
-#define VEC_pop(T,V) (VEC_OP(T,base,pop)(VEC_BASE(V) VEC_CHECK_INFO))
+#define VEC_pop(T,V) (VEC_pop_1<T> (V VEC_CHECK_INFO))
+
+template<typename T>
+static inline T&
+VEC_pop_1 (vec_t<T> *vec_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (vec_->prefix.num, "pop", T, base);
+ return vec_->vec[--vec_->prefix.num];
+}
+
/* Truncate to specific length
void VEC_T_truncate (VEC(T) *v, unsigned len);
@@ -343,8 +779,18 @@ along with GCC; see the file COPYING3. If not see
Set the length as specified. The new length must be less than or
equal to the current length. This is an O(1) operation. */
-#define VEC_truncate(T,V,I) \
- (VEC_OP(T,base,truncate)(VEC_BASE(V),I VEC_CHECK_INFO))
+#define VEC_truncate(T,V,I) \
+ (VEC_truncate_1<T> (V, (unsigned)(I) VEC_CHECK_INFO))
+
+template<typename T>
+static inline void
+VEC_truncate_1 (vec_t<T> *vec_, unsigned size_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (vec_ ? vec_->prefix.num >= size_ : !size_, "truncate", T, base);
+ if (vec_)
+ vec_->prefix.num = size_;
+}
+
/* Grow to a specific length.
void VEC_T_A_safe_grow (VEC(T,A) *&v, int len);
@@ -354,7 +800,20 @@ along with GCC; see the file COPYING3. If not see
uninitialized. */
#define VEC_safe_grow(T,A,V,I) \
- (VEC_OP(T,A,safe_grow)(&(V),I VEC_CHECK_INFO MEM_STAT_INFO))
+ (VEC_safe_grow_1<T, A> (&(V), (int)(I) VEC_CHECK_INFO MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline void
+VEC_safe_grow_1 (vec_t<T> **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ VEC_ASSERT (size_ >= 0 && VEC_length (T, *vec_) <= (unsigned)size_,
+ "grow", T, A);
+ VEC_reserve_exact_1<T, A> (vec_,
+ size_ - (int)(*vec_ ? (*vec_)->prefix.num : 0)
+ VEC_CHECK_PASS PASS_MEM_STAT);
+ (*vec_)->prefix.num = size_;
+}
+
/* Grow to a specific length.
void VEC_T_A_safe_grow_cleared (VEC(T,A) *&v, int len);
@@ -363,8 +822,21 @@ along with GCC; see the file COPYING3. If not see
long or longer than the current length. The new elements are
initialized to zero. */
-#define VEC_safe_grow_cleared(T,A,V,I) \
- (VEC_OP(T,A,safe_grow_cleared)(&(V),I VEC_CHECK_INFO MEM_STAT_INFO))
+#define VEC_safe_grow_cleared(T,A,V,I) \
+ (VEC_safe_grow_cleared_1<T,A> (&(V), (int)(I) \
+ VEC_CHECK_INFO MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline void
+VEC_safe_grow_cleared_1 (vec_t<T> **vec_, int size_ VEC_CHECK_DECL
+ MEM_STAT_DECL)
+{
+ int oldsize = VEC_length (T, *vec_);
+ VEC_safe_grow_1<T, A> (vec_, size_ VEC_CHECK_PASS PASS_MEM_STAT);
+ memset (&(VEC_address (T, *vec_)[oldsize]), 0,
+ sizeof (T) * (size_ - oldsize));
+}
+
/* Replace element
T VEC_T_replace (VEC(T) *v, unsigned ix, T val); // Integer
@@ -378,20 +850,57 @@ along with GCC; see the file COPYING3. If not see
performed. */
#define VEC_replace(T,V,I,O) \
- (VEC_OP(T,base,replace)(VEC_BASE(V),I,O VEC_CHECK_INFO))
+ (VEC_replace_1<T> (V, (unsigned)(I), O VEC_CHECK_INFO))
+
+template<typename T>
+static inline T&
+VEC_replace_1 (vec_t<T> *vec_, unsigned ix_, T obj_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (ix_ < vec_->prefix.num, "replace", T, base);
+ vec_->vec[ix_] = obj_;
+ return vec_->vec[ix_];
+}
+
/* Insert object with no reallocation
- T *VEC_T_quick_insert (VEC(T) *v, unsigned ix, T val); // Integer
- T *VEC_T_quick_insert (VEC(T) *v, unsigned ix, T val); // Pointer
- T *VEC_T_quick_insert (VEC(T) *v, unsigned ix, T *val); // Object
+ void VEC_T_quick_insert (VEC(T) *v, unsigned ix, T val); // Integer
+ void VEC_T_quick_insert (VEC(T) *v, unsigned ix, T val); // Pointer
+ void VEC_T_quick_insert (VEC(T) *v, unsigned ix, T *val); // Object
- Insert an element, VAL, at the IXth position of V. Return a pointer
- to the slot created. For vectors of object, the new value can be
- NULL, in which case no initialization of the inserted slot takes
- place. There must be sufficient space. */
+ Insert an element, VAL, at the IXth position of V. For vectors of
+ object, the new value can be NULL, in which case no initialization
+ of the inserted slot takes place. There must be sufficient space. */
#define VEC_quick_insert(T,V,I,O) \
- (VEC_OP(T,base,quick_insert)(VEC_BASE(V),I,O VEC_CHECK_INFO))
+ (VEC_quick_insert_1<T> (V,I,O VEC_CHECK_INFO))
+
+template<typename T>
+static inline void
+VEC_quick_insert_1 (vec_t<T> *vec_, unsigned ix_, T obj_ VEC_CHECK_DECL)
+{
+ T *slot_;
+
+ VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "insert", T, base);
+ VEC_ASSERT (ix_ <= vec_->prefix.num, "insert", T, base);
+ slot_ = &vec_->vec[ix_];
+ memmove (slot_ + 1, slot_, (vec_->prefix.num++ - ix_) * sizeof (T));
+ *slot_ = obj_;
+}
+
+template<typename T>
+static inline void
+VEC_quick_insert_1 (vec_t<T> *vec_, unsigned ix_, const T *ptr_ VEC_CHECK_DECL)
+{
+ T *slot_;
+
+ VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "insert", T, base);
+ VEC_ASSERT (ix_ <= vec_->prefix.num, "insert", T, base);
+ slot_ = &vec_->vec[ix_];
+ memmove (slot_ + 1, slot_, (vec_->prefix.num++ - ix_) * sizeof (T));
+ if (ptr_)
+ *slot_ = *ptr_;
+}
+
/* Insert object with reallocation
T *VEC_T_A_safe_insert (VEC(T,A) *&v, unsigned ix, T val); // Integer
@@ -404,31 +913,70 @@ along with GCC; see the file COPYING3. If not see
place. Reallocate V, if necessary. */
#define VEC_safe_insert(T,A,V,I,O) \
- (VEC_OP(T,A,safe_insert)(&(V),I,O VEC_CHECK_INFO MEM_STAT_INFO))
+ (VEC_safe_insert_1<T, A> (&(V),I,O VEC_CHECK_INFO MEM_STAT_INFO))
+
+template<typename T, enum vec_allocation_t A>
+static inline void
+VEC_safe_insert_1 (vec_t<T> **vec_, unsigned ix_, T obj_
+ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ VEC_reserve_1<T, A> (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);
+ VEC_quick_insert_1 (*vec_, ix_, obj_ VEC_CHECK_PASS);
+}
+
+template<typename T, enum vec_allocation_t A>
+static inline void
+VEC_safe_insert_1 (vec_t<T> **vec_, unsigned ix_, T *ptr_
+ VEC_CHECK_DECL MEM_STAT_DECL)
+{
+ VEC_reserve_1<T, A> (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);
+ VEC_quick_insert_1 (*vec_, ix_, ptr_ VEC_CHECK_PASS);
+}
+
+
/* Remove element retaining order
- T VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Integer
- T VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Pointer
+ void VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Integer
+ void VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Pointer
void VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Object
Remove an element from the IXth position of V. Ordering of
- remaining elements is preserved. For pointer vectors returns the
- removed object. This is an O(N) operation due to a memmove. */
+ remaining elements is preserved. This is an O(N) operation due to
+ a memmove. */
#define VEC_ordered_remove(T,V,I) \
- (VEC_OP(T,base,ordered_remove)(VEC_BASE(V),I VEC_CHECK_INFO))
+ (VEC_ordered_remove_1<T> (V,I VEC_CHECK_INFO))
+
+template<typename T>
+static inline void
+VEC_ordered_remove_1 (vec_t<T> *vec_, unsigned ix_ VEC_CHECK_DECL)
+{
+ T *slot_;
+ VEC_ASSERT (ix_ < vec_->prefix.num, "remove", T, base);
+ slot_ = &vec_->vec[ix_];
+ memmove (slot_, slot_ + 1, (--vec_->prefix.num - ix_) * sizeof (T));
+}
+
/* Remove element destroying order
- T VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Integer
- T VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Pointer
+ void VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Integer
+ void VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Pointer
void VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Object
- Remove an element from the IXth position of V. Ordering of
- remaining elements is destroyed. For pointer vectors returns the
- removed object. This is an O(1) operation. */
+ Remove an element from the IXth position of V. Ordering of
+ remaining elements is destroyed. This is an O(1) operation. */
#define VEC_unordered_remove(T,V,I) \
- (VEC_OP(T,base,unordered_remove)(VEC_BASE(V),I VEC_CHECK_INFO))
+ (VEC_unordered_remove_1<T> (V,I VEC_CHECK_INFO))
+
+template<typename T>
+static inline void
+VEC_unordered_remove_1 (vec_t<T> *vec_, unsigned ix_ VEC_CHECK_DECL)
+{
+ VEC_ASSERT (ix_ < vec_->prefix.num, "remove", T, base);
+ vec_->vec[ix_] = vec_->vec[--vec_->prefix.num];
+}
+
/* Remove a block of elements
void VEC_T_block_remove (VEC(T) *v, unsigned ix, unsigned len);
@@ -437,22 +985,27 @@ along with GCC; see the file COPYING3. If not see
This is an O(N) operation due to memmove. */
#define VEC_block_remove(T,V,I,L) \
- (VEC_OP(T,base,block_remove)(VEC_BASE(V),I,L VEC_CHECK_INFO))
+ (VEC_block_remove_1<T> (V, I, L VEC_CHECK_INFO))
-/* Get the address of the array of elements
- T *VEC_T_address (VEC(T) v)
-
- If you need to directly manipulate the array (for instance, you
- want to feed it to qsort), use this accessor. */
+template<typename T>
+static inline void
+VEC_block_remove_1 (vec_t<T> *vec_, unsigned ix_, unsigned len_ VEC_CHECK_DECL)
+{
+ T *slot_;
+ VEC_ASSERT (ix_ + len_ <= vec_->prefix.num, "block_remove", T, base);
+ slot_ = &vec_->vec[ix_];
+ vec_->prefix.num -= len_;
+ memmove (slot_, slot_ + len_, (vec_->prefix.num - ix_) * sizeof (T));
+}
-#define VEC_address(T,V) (VEC_OP(T,base,address)(VEC_BASE(V)))
/* Conveniently sort the contents of the vector with qsort.
void VEC_qsort (VEC(T) *v, int (*cmp_func)(const void *, const void *)) */
-#define VEC_qsort(T,V,CMP) qsort(VEC_address (T,V), VEC_length(T,V), \
+#define VEC_qsort(T,V,CMP) qsort(VEC_address (T, V), VEC_length (T, V), \
sizeof (T), CMP)
+
/* Find the first index in the vector not less than the object.
unsigned VEC_T_lower_bound (VEC(T) *v, const T val,
bool (*lessthan) (const T, const T)); // Integer
@@ -465,944 +1018,128 @@ along with GCC; see the file COPYING3. If not see
changing the ordering of V. LESSTHAN is a function that returns
true if the first argument is strictly less than the second. */
-#define VEC_lower_bound(T,V,O,LT) \
- (VEC_OP(T,base,lower_bound)(VEC_BASE(V),O,LT VEC_CHECK_INFO))
+#define VEC_lower_bound(T,V,O,LT) \
+ (VEC_lower_bound_1<T> (V, O, LT VEC_CHECK_INFO))
-/* Reallocate an array of elements with prefix. */
-extern void *vec_gc_p_reserve (void *, int MEM_STAT_DECL);
-extern void *vec_gc_p_reserve_exact (void *, int MEM_STAT_DECL);
-extern void *vec_gc_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
-extern void *vec_gc_o_reserve_exact (void *, int, size_t, size_t
- MEM_STAT_DECL);
-extern void ggc_free (void *);
-#define vec_gc_free(V) ggc_free (V)
-extern void *vec_heap_p_reserve (void *, int MEM_STAT_DECL);
-extern void *vec_heap_p_reserve_exact (void *, int MEM_STAT_DECL);
-extern void *vec_heap_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
-extern void *vec_heap_o_reserve_exact (void *, int, size_t, size_t
- MEM_STAT_DECL);
-extern void dump_vec_loc_statistics (void);
-#ifdef GATHER_STATISTICS
-void vec_heap_free (void *);
-#else
-/* Avoid problems with frontends that #define free(x). */
-#define vec_heap_free(V) (free) (V)
-#endif
-
-#if ENABLE_CHECKING
-#define VEC_CHECK_INFO ,__FILE__,__LINE__,__FUNCTION__
-#define VEC_CHECK_DECL ,const char *file_,unsigned line_,const char *function_
-#define VEC_CHECK_PASS ,file_,line_,function_
-
-#define VEC_ASSERT(EXPR,OP,T,A) \
- (void)((EXPR) ? 0 : (VEC_ASSERT_FAIL(OP,VEC(T,A)), 0))
-
-extern void vec_assert_fail (const char *, const char * VEC_CHECK_DECL)
- ATTRIBUTE_NORETURN;
-#define VEC_ASSERT_FAIL(OP,VEC) vec_assert_fail (OP,#VEC VEC_CHECK_PASS)
-#else
-#define VEC_CHECK_INFO
-#define VEC_CHECK_DECL
-#define VEC_CHECK_PASS
-#define VEC_ASSERT(EXPR,OP,T,A) (void)(EXPR)
-#endif
-
-/* Note: gengtype has hardwired knowledge of the expansions of the
- VEC, DEF_VEC_*, and DEF_VEC_ALLOC_* macros. If you change the
- expansions of these macros you may need to change gengtype too. */
-
-typedef struct GTY(()) vec_prefix
+template<typename T>
+static inline unsigned
+VEC_lower_bound_1 (vec_t<T> *vec_, T obj_,
+ bool (*lessthan_)(T, T) VEC_CHECK_DECL)
{
- unsigned num;
- unsigned alloc;
-} vec_prefix;
-
-#define VEC(T,A) VEC_##T##_##A
-#define VEC_OP(T,A,OP) VEC_##T##_##A##_##OP
-
-/* Base of vector type, not user visible. */
-#define VEC_T(T,B) \
-typedef struct VEC(T,B) \
-{ \
- struct vec_prefix prefix; \
- T vec[1]; \
-} VEC(T,B)
-
-#define VEC_T_GTY(T,B) \
-typedef struct GTY(()) VEC(T,B) \
-{ \
- struct vec_prefix prefix; \
- T GTY ((length ("%h.prefix.num"))) vec[1]; \
-} VEC(T,B)
-
-/* Derived vector type, user visible. */
-#define VEC_TA_GTY(T,B,A,GTY) \
-typedef struct GTY VEC(T,A) \
-{ \
- VEC(T,B) base; \
-} VEC(T,A)
-
-#define VEC_TA(T,B,A) \
-typedef struct VEC(T,A) \
-{ \
- VEC(T,B) base; \
-} VEC(T,A)
-
-/* Convert to base type. */
-#if GCC_VERSION >= 4000
-#define VEC_BASE(P) \
- ((offsetof (__typeof (*P), base) == 0 || (P)) ? &(P)->base : 0)
-#else
-#define VEC_BASE(P) ((P) ? &(P)->base : 0)
-#endif
-
-/* Vector of integer-like object. */
-#define DEF_VEC_I(T) \
-static inline void VEC_OP (T,must_be,integral_type) (void) \
-{ \
- (void)~(T)0; \
-} \
- \
-VEC_T(T,base); \
-VEC_TA(T,base,none); \
-DEF_VEC_FUNC_P(T) \
-struct vec_swallow_trailing_semi
-#define DEF_VEC_ALLOC_I(T,A) \
-VEC_TA(T,base,A); \
-DEF_VEC_ALLOC_FUNC_I(T,A) \
-DEF_VEC_NONALLOC_FUNCS_I(T,A) \
-struct vec_swallow_trailing_semi
-
-/* Vector of pointer to object. */
-#define DEF_VEC_P(T) \
-static inline void VEC_OP (T,must_be,pointer_type) (void) \
-{ \
- (void)((T)1 == (void *)1); \
-} \
- \
-VEC_T_GTY(T,base); \
-VEC_TA(T,base,none); \
-DEF_VEC_FUNC_P(T) \
-struct vec_swallow_trailing_semi
-#define DEF_VEC_ALLOC_P(T,A) \
-VEC_TA(T,base,A); \
-DEF_VEC_ALLOC_FUNC_P(T,A) \
-DEF_VEC_NONALLOC_FUNCS_P(T,A) \
-struct vec_swallow_trailing_semi
-
-#define DEF_VEC_FUNC_P(T) \
-static inline unsigned VEC_OP (T,base,length) (const VEC(T,base) *vec_) \
-{ \
- return vec_ ? vec_->prefix.num : 0; \
-} \
- \
-static inline T VEC_OP (T,base,last) \
- (const VEC(T,base) *vec_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (vec_ && vec_->prefix.num, "last", T, base); \
- \
- return vec_->vec[vec_->prefix.num - 1]; \
-} \
- \
-static inline T VEC_OP (T,base,index) \
- (const VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (vec_ && ix_ < vec_->prefix.num, "index", T, base); \
- \
- return vec_->vec[ix_]; \
-} \
- \
-static inline int VEC_OP (T,base,iterate) \
- (const VEC(T,base) *vec_, unsigned ix_, T *ptr) \
-{ \
- if (vec_ && ix_ < vec_->prefix.num) \
- { \
- *ptr = vec_->vec[ix_]; \
- return 1; \
- } \
- else \
- { \
- *ptr = (T) 0; \
- return 0; \
- } \
-} \
- \
-static inline size_t VEC_OP (T,base,embedded_size) \
- (int alloc_) \
-{ \
- return offsetof (VEC(T,base),vec) + alloc_ * sizeof(T); \
-} \
- \
-static inline void VEC_OP (T,base,embedded_init) \
- (VEC(T,base) *vec_, int alloc_) \
-{ \
- vec_->prefix.num = 0; \
- vec_->prefix.alloc = alloc_; \
-} \
- \
-static inline int VEC_OP (T,base,space) \
- (VEC(T,base) *vec_, int alloc_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (alloc_ >= 0, "space", T, base); \
- return vec_ ? vec_->prefix.alloc - vec_->prefix.num >= (unsigned)alloc_ : !alloc_; \
-} \
- \
-static inline void VEC_OP(T,base,splice) \
- (VEC(T,base) *dst_, VEC(T,base) *src_ VEC_CHECK_DECL) \
-{ \
- if (src_) \
- { \
- unsigned len_ = src_->prefix.num; \
- VEC_ASSERT (dst_->prefix.num + len_ <= dst_->prefix.alloc, "splice", T, base); \
- \
- memcpy (&dst_->vec[dst_->prefix.num], &src_->vec[0], len_ * sizeof (T)); \
- dst_->prefix.num += len_; \
- } \
-} \
- \
-static inline T *VEC_OP (T,base,quick_push) \
- (VEC(T,base) *vec_, T obj_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "push", T, base); \
- slot_ = &vec_->vec[vec_->prefix.num++]; \
- *slot_ = obj_; \
- \
- return slot_; \
-} \
- \
-static inline T VEC_OP (T,base,pop) (VEC(T,base) *vec_ VEC_CHECK_DECL) \
-{ \
- T obj_; \
- \
- VEC_ASSERT (vec_->prefix.num, "pop", T, base); \
- obj_ = vec_->vec[--vec_->prefix.num]; \
- \
- return obj_; \
-} \
- \
-static inline void VEC_OP (T,base,truncate) \
- (VEC(T,base) *vec_, unsigned size_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (vec_ ? vec_->prefix.num >= size_ : !size_, "truncate", T, base); \
- if (vec_) \
- vec_->prefix.num = size_; \
-} \
- \
-static inline T VEC_OP (T,base,replace) \
- (VEC(T,base) *vec_, unsigned ix_, T obj_ VEC_CHECK_DECL) \
-{ \
- T old_obj_; \
- \
- VEC_ASSERT (ix_ < vec_->prefix.num, "replace", T, base); \
- old_obj_ = vec_->vec[ix_]; \
- vec_->vec[ix_] = obj_; \
- \
- return old_obj_; \
-} \
- \
-static inline T *VEC_OP (T,base,quick_insert) \
- (VEC(T,base) *vec_, unsigned ix_, T obj_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "insert", T, base); \
- VEC_ASSERT (ix_ <= vec_->prefix.num, "insert", T, base); \
- slot_ = &vec_->vec[ix_]; \
- memmove (slot_ + 1, slot_, (vec_->prefix.num++ - ix_) * sizeof (T)); \
- *slot_ = obj_; \
- \
- return slot_; \
-} \
- \
-static inline T VEC_OP (T,base,ordered_remove) \
- (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- T obj_; \
- \
- VEC_ASSERT (ix_ < vec_->prefix.num, "remove", T, base); \
- slot_ = &vec_->vec[ix_]; \
- obj_ = *slot_; \
- memmove (slot_, slot_ + 1, (--vec_->prefix.num - ix_) * sizeof (T)); \
- \
- return obj_; \
-} \
- \
-static inline T VEC_OP (T,base,unordered_remove) \
- (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- T obj_; \
- \
- VEC_ASSERT (ix_ < vec_->prefix.num, "remove", T, base); \
- slot_ = &vec_->vec[ix_]; \
- obj_ = *slot_; \
- *slot_ = vec_->vec[--vec_->prefix.num]; \
- \
- return obj_; \
-} \
- \
-static inline void VEC_OP (T,base,block_remove) \
- (VEC(T,base) *vec_, unsigned ix_, unsigned len_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (ix_ + len_ <= vec_->prefix.num, "block_remove", T, base); \
- slot_ = &vec_->vec[ix_]; \
- vec_->prefix.num -= len_; \
- memmove (slot_, slot_ + len_, (vec_->prefix.num - ix_) * sizeof (T)); \
-} \
- \
-static inline T *VEC_OP (T,base,address) \
- (VEC(T,base) *vec_) \
-{ \
- return vec_ ? vec_->vec : 0; \
-} \
- \
-static inline unsigned VEC_OP (T,base,lower_bound) \
- (VEC(T,base) *vec_, const T obj_, \
- bool (*lessthan_)(const T, const T) VEC_CHECK_DECL) \
-{ \
- unsigned int len_ = VEC_OP (T,base, length) (vec_); \
- unsigned int half_, middle_; \
- unsigned int first_ = 0; \
- while (len_ > 0) \
- { \
- T middle_elem_; \
- half_ = len_ >> 1; \
- middle_ = first_; \
- middle_ += half_; \
- middle_elem_ = VEC_OP (T,base,index) (vec_, middle_ VEC_CHECK_PASS); \
- if (lessthan_ (middle_elem_, obj_)) \
- { \
- first_ = middle_; \
- ++first_; \
- len_ = len_ - half_ - 1; \
- } \
- else \
- len_ = half_; \
- } \
- return first_; \
-}
-
-#define DEF_VEC_ALLOC_FUNC_P(T,A) \
-static inline VEC(T,A) *VEC_OP (T,A,alloc) \
- (int alloc_ MEM_STAT_DECL) \
-{ \
- return (VEC(T,A) *) vec_##A##_p_reserve_exact (NULL, alloc_ \
- PASS_MEM_STAT); \
+ unsigned int len_ = VEC_length (T, vec_);
+ unsigned int half_, middle_;
+ unsigned int first_ = 0;
+ while (len_ > 0)
+ {
+ T middle_elem_;
+ half_ = len_ >> 1;
+ middle_ = first_;
+ middle_ += half_;
+ middle_elem_ = VEC_index_1 (vec_, middle_ VEC_CHECK_PASS);
+ if (lessthan_ (middle_elem_, obj_))
+ {
+ first_ = middle_;
+ ++first_;
+ len_ = len_ - half_ - 1;
+ }
+ else
+ len_ = half_;
+ }
+ return first_;
}
-
-#define DEF_VEC_NONALLOC_FUNCS_P(T,A) \
-static inline void VEC_OP (T,A,free) \
- (VEC(T,A) **vec_) \
-{ \
- if (*vec_) \
- vec_##A##_free (*vec_); \
- *vec_ = NULL; \
-} \
- \
-static inline VEC(T,A) *VEC_OP (T,A,copy) (VEC(T,base) *vec_ MEM_STAT_DECL) \
-{ \
- size_t len_ = vec_ ? vec_->prefix.num : 0; \
- VEC (T,A) *new_vec_ = NULL; \
- \
- if (len_) \
- { \
- new_vec_ = (VEC (T,A) *)(vec_##A##_p_reserve_exact \
- (NULL, len_ PASS_MEM_STAT)); \
- \
- new_vec_->base.prefix.num = len_; \
- memcpy (new_vec_->base.vec, vec_->vec, sizeof (T) * len_); \
- } \
- return new_vec_; \
-} \
- \
-static inline int VEC_OP (T,A,reserve) \
- (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_ \
- VEC_CHECK_PASS); \
- \
- if (extend) \
- *vec_ = (VEC(T,A) *) vec_##A##_p_reserve (*vec_, alloc_ PASS_MEM_STAT); \
- \
- return extend; \
-} \
- \
-static inline int VEC_OP (T,A,reserve_exact) \
- (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_ \
- VEC_CHECK_PASS); \
- \
- if (extend) \
- *vec_ = (VEC(T,A) *) vec_##A##_p_reserve_exact (*vec_, alloc_ \
- PASS_MEM_STAT); \
- \
- return extend; \
-} \
- \
-static inline void VEC_OP (T,A,safe_grow) \
- (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_ASSERT (size_ >= 0 \
- && VEC_OP(T,base,length) VEC_BASE(*vec_) <= (unsigned)size_, \
- "grow", T, A); \
- VEC_OP (T,A,reserve_exact) (vec_, \
- size_ - (int)(*vec_ ? VEC_BASE(*vec_)->prefix.num : 0) \
- VEC_CHECK_PASS PASS_MEM_STAT); \
- VEC_BASE (*vec_)->prefix.num = size_; \
-} \
- \
-static inline void VEC_OP (T,A,safe_grow_cleared) \
- (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int oldsize = VEC_OP(T,base,length) VEC_BASE(*vec_); \
- VEC_OP (T,A,safe_grow) (vec_, size_ VEC_CHECK_PASS PASS_MEM_STAT); \
- memset (&(VEC_OP (T,base,address) VEC_BASE(*vec_))[oldsize], 0, \
- sizeof (T) * (size_ - oldsize)); \
-} \
- \
-static inline void VEC_OP(T,A,safe_splice) \
- (VEC(T,A) **dst_, VEC(T,base) *src_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- if (src_) \
- { \
- VEC_OP (T,A,reserve_exact) (dst_, src_->prefix.num \
- VEC_CHECK_PASS MEM_STAT_INFO); \
- \
- VEC_OP (T,base,splice) (VEC_BASE (*dst_), src_ \
- VEC_CHECK_PASS); \
- } \
-} \
- \
-static inline T *VEC_OP (T,A,safe_push) \
- (VEC(T,A) **vec_, T obj_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT); \
- \
- return VEC_OP (T,base,quick_push) (VEC_BASE(*vec_), obj_ VEC_CHECK_PASS); \
-} \
- \
-static inline T *VEC_OP (T,A,safe_insert) \
- (VEC(T,A) **vec_, unsigned ix_, T obj_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT); \
- \
- return VEC_OP (T,base,quick_insert) (VEC_BASE(*vec_), ix_, obj_ \
- VEC_CHECK_PASS); \
-}
-
-/* Vector of object. */
-#define DEF_VEC_O(T) \
-VEC_T_GTY(T,base); \
-VEC_TA(T,base,none); \
-DEF_VEC_FUNC_O(T) \
-struct vec_swallow_trailing_semi
-#define DEF_VEC_ALLOC_O(T,A) \
-VEC_TA(T,base,A); \
-DEF_VEC_ALLOC_FUNC_O(T,A) \
-DEF_VEC_NONALLOC_FUNCS_O(T,A) \
-struct vec_swallow_trailing_semi
-
-#define DEF_VEC_FUNC_O(T) \
-static inline unsigned VEC_OP (T,base,length) (const VEC(T,base) *vec_) \
-{ \
- return vec_ ? vec_->prefix.num : 0; \
-} \
- \
-static inline T *VEC_OP (T,base,last) (VEC(T,base) *vec_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (vec_ && vec_->prefix.num, "last", T, base); \
- \
- return &vec_->vec[vec_->prefix.num - 1]; \
-} \
- \
-static inline T *VEC_OP (T,base,index) \
- (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (vec_ && ix_ < vec_->prefix.num, "index", T, base); \
- \
- return &vec_->vec[ix_]; \
-} \
- \
-static inline int VEC_OP (T,base,iterate) \
- (VEC(T,base) *vec_, unsigned ix_, T **ptr) \
-{ \
- if (vec_ && ix_ < vec_->prefix.num) \
- { \
- *ptr = &vec_->vec[ix_]; \
- return 1; \
- } \
- else \
- { \
- *ptr = 0; \
- return 0; \
- } \
-} \
- \
-static inline size_t VEC_OP (T,base,embedded_size) \
- (int alloc_) \
-{ \
- return offsetof (VEC(T,base),vec) + alloc_ * sizeof(T); \
-} \
- \
-static inline void VEC_OP (T,base,embedded_init) \
- (VEC(T,base) *vec_, int alloc_) \
-{ \
- vec_->prefix.num = 0; \
- vec_->prefix.alloc = alloc_; \
-} \
- \
-static inline int VEC_OP (T,base,space) \
- (VEC(T,base) *vec_, int alloc_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (alloc_ >= 0, "space", T, base); \
- return vec_ ? vec_->prefix.alloc - vec_->prefix.num >= (unsigned)alloc_ : !alloc_; \
-} \
- \
-static inline void VEC_OP(T,base,splice) \
- (VEC(T,base) *dst_, VEC(T,base) *src_ VEC_CHECK_DECL) \
-{ \
- if (src_) \
- { \
- unsigned len_ = src_->prefix.num; \
- VEC_ASSERT (dst_->prefix.num + len_ <= dst_->prefix.alloc, "splice", T, base); \
- \
- memcpy (&dst_->vec[dst_->prefix.num], &src_->vec[0], len_ * sizeof (T)); \
- dst_->prefix.num += len_; \
- } \
-} \
- \
-static inline T *VEC_OP (T,base,quick_push) \
- (VEC(T,base) *vec_, const T *obj_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "push", T, base); \
- slot_ = &vec_->vec[vec_->prefix.num++]; \
- if (obj_) \
- *slot_ = *obj_; \
- \
- return slot_; \
-} \
- \
-static inline void VEC_OP (T,base,pop) (VEC(T,base) *vec_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (vec_->prefix.num, "pop", T, base); \
- --vec_->prefix.num; \
-} \
- \
-static inline void VEC_OP (T,base,truncate) \
- (VEC(T,base) *vec_, unsigned size_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (vec_ ? vec_->prefix.num >= size_ : !size_, "truncate", T, base); \
- if (vec_) \
- vec_->prefix.num = size_; \
-} \
- \
-static inline T *VEC_OP (T,base,replace) \
- (VEC(T,base) *vec_, unsigned ix_, const T *obj_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (ix_ < vec_->prefix.num, "replace", T, base); \
- slot_ = &vec_->vec[ix_]; \
- if (obj_) \
- *slot_ = *obj_; \
- \
- return slot_; \
-} \
- \
-static inline T *VEC_OP (T,base,quick_insert) \
- (VEC(T,base) *vec_, unsigned ix_, const T *obj_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (vec_->prefix.num < vec_->prefix.alloc, "insert", T, base); \
- VEC_ASSERT (ix_ <= vec_->prefix.num, "insert", T, base); \
- slot_ = &vec_->vec[ix_]; \
- memmove (slot_ + 1, slot_, (vec_->prefix.num++ - ix_) * sizeof (T)); \
- if (obj_) \
- *slot_ = *obj_; \
- \
- return slot_; \
-} \
- \
-static inline void VEC_OP (T,base,ordered_remove) \
- (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (ix_ < vec_->prefix.num, "remove", T, base); \
- slot_ = &vec_->vec[ix_]; \
- memmove (slot_, slot_ + 1, (--vec_->prefix.num - ix_) * sizeof (T)); \
-} \
- \
-static inline void VEC_OP (T,base,unordered_remove) \
- (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL) \
-{ \
- VEC_ASSERT (ix_ < vec_->prefix.num, "remove", T, base); \
- vec_->vec[ix_] = vec_->vec[--vec_->prefix.num]; \
-} \
- \
-static inline void VEC_OP (T,base,block_remove) \
- (VEC(T,base) *vec_, unsigned ix_, unsigned len_ VEC_CHECK_DECL) \
-{ \
- T *slot_; \
- \
- VEC_ASSERT (ix_ + len_ <= vec_->prefix.num, "block_remove", T, base); \
- slot_ = &vec_->vec[ix_]; \
- vec_->prefix.num -= len_; \
- memmove (slot_, slot_ + len_, (vec_->prefix.num - ix_) * sizeof (T)); \
-} \
- \
-static inline T *VEC_OP (T,base,address) \
- (VEC(T,base) *vec_) \
-{ \
- return vec_ ? vec_->vec : 0; \
-} \
- \
-static inline unsigned VEC_OP (T,base,lower_bound) \
- (VEC(T,base) *vec_, const T *obj_, \
- bool (*lessthan_)(const T *, const T *) VEC_CHECK_DECL) \
-{ \
- unsigned int len_ = VEC_OP (T, base, length) (vec_); \
- unsigned int half_, middle_; \
- unsigned int first_ = 0; \
- while (len_ > 0) \
- { \
- T *middle_elem_; \
- half_ = len_ >> 1; \
- middle_ = first_; \
- middle_ += half_; \
- middle_elem_ = VEC_OP (T,base,index) (vec_, middle_ VEC_CHECK_PASS); \
- if (lessthan_ (middle_elem_, obj_)) \
- { \
- first_ = middle_; \
- ++first_; \
- len_ = len_ - half_ - 1; \
- } \
- else \
- len_ = half_; \
- } \
- return first_; \
-}
-
-#define DEF_VEC_ALLOC_FUNC_O(T,A) \
-static inline VEC(T,A) *VEC_OP (T,A,alloc) \
- (int alloc_ MEM_STAT_DECL) \
-{ \
- return (VEC(T,A) *) vec_##A##_o_reserve_exact (NULL, alloc_, \
- offsetof (VEC(T,A),base.vec), \
- sizeof (T) \
- PASS_MEM_STAT); \
-}
-
-#define DEF_VEC_NONALLOC_FUNCS_O(T,A) \
-static inline VEC(T,A) *VEC_OP (T,A,copy) (VEC(T,base) *vec_ MEM_STAT_DECL) \
-{ \
- size_t len_ = vec_ ? vec_->prefix.num : 0; \
- VEC (T,A) *new_vec_ = NULL; \
- \
- if (len_) \
- { \
- new_vec_ = (VEC (T,A) *)(vec_##A##_o_reserve_exact \
- (NULL, len_, \
- offsetof (VEC(T,A),base.vec), sizeof (T) \
- PASS_MEM_STAT)); \
- \
- new_vec_->base.prefix.num = len_; \
- memcpy (new_vec_->base.vec, vec_->vec, sizeof (T) * len_); \
- } \
- return new_vec_; \
-} \
- \
-static inline void VEC_OP (T,A,free) \
- (VEC(T,A) **vec_) \
-{ \
- if (*vec_) \
- vec_##A##_free (*vec_); \
- *vec_ = NULL; \
-} \
- \
-static inline int VEC_OP (T,A,reserve) \
- (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_ \
- VEC_CHECK_PASS); \
- \
- if (extend) \
- *vec_ = (VEC(T,A) *) vec_##A##_o_reserve (*vec_, alloc_, \
- offsetof (VEC(T,A),base.vec),\
- sizeof (T) \
- PASS_MEM_STAT); \
- \
- return extend; \
-} \
- \
-static inline int VEC_OP (T,A,reserve_exact) \
- (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_ \
- VEC_CHECK_PASS); \
- \
- if (extend) \
- *vec_ = (VEC(T,A) *) vec_##A##_o_reserve_exact \
- (*vec_, alloc_, \
- offsetof (VEC(T,A),base.vec), \
- sizeof (T) PASS_MEM_STAT); \
- \
- return extend; \
-} \
- \
-static inline void VEC_OP (T,A,safe_grow) \
- (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_ASSERT (size_ >= 0 \
- && VEC_OP(T,base,length) VEC_BASE(*vec_) <= (unsigned)size_, \
- "grow", T, A); \
- VEC_OP (T,A,reserve_exact) (vec_, \
- size_ - (int)(*vec_ ? VEC_BASE(*vec_)->prefix.num : 0) \
- VEC_CHECK_PASS PASS_MEM_STAT); \
- VEC_BASE (*vec_)->prefix.num = size_; \
-} \
- \
-static inline void VEC_OP (T,A,safe_grow_cleared) \
- (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int oldsize = VEC_OP(T,base,length) VEC_BASE(*vec_); \
- VEC_OP (T,A,safe_grow) (vec_, size_ VEC_CHECK_PASS PASS_MEM_STAT); \
- memset (&(VEC_OP (T,base,address) VEC_BASE(*vec_))[oldsize], 0, \
- sizeof (T) * (size_ - oldsize)); \
-} \
- \
-static inline void VEC_OP(T,A,safe_splice) \
- (VEC(T,A) **dst_, VEC(T,base) *src_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- if (src_) \
- { \
- VEC_OP (T,A,reserve_exact) (dst_, src_->prefix.num \
- VEC_CHECK_PASS MEM_STAT_INFO); \
- \
- VEC_OP (T,base,splice) (VEC_BASE (*dst_), src_ \
- VEC_CHECK_PASS); \
- } \
-} \
- \
-static inline T *VEC_OP (T,A,safe_push) \
- (VEC(T,A) **vec_, const T *obj_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT); \
- \
- return VEC_OP (T,base,quick_push) (VEC_BASE(*vec_), obj_ VEC_CHECK_PASS); \
-} \
- \
-static inline T *VEC_OP (T,A,safe_insert) \
- (VEC(T,A) **vec_, unsigned ix_, const T *obj_ \
- VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT); \
- \
- return VEC_OP (T,base,quick_insert) (VEC_BASE(*vec_), ix_, obj_ \
- VEC_CHECK_PASS); \
-}
-
-#define DEF_VEC_ALLOC_FUNC_I(T,A) \
-static inline VEC(T,A) *VEC_OP (T,A,alloc) \
- (int alloc_ MEM_STAT_DECL) \
-{ \
- return (VEC(T,A) *) vec_##A##_o_reserve_exact \
- (NULL, alloc_, offsetof (VEC(T,A),base.vec), \
- sizeof (T) PASS_MEM_STAT); \
-}
-
-#define DEF_VEC_NONALLOC_FUNCS_I(T,A) \
-static inline VEC(T,A) *VEC_OP (T,A,copy) (VEC(T,base) *vec_ MEM_STAT_DECL) \
-{ \
- size_t len_ = vec_ ? vec_->prefix.num : 0; \
- VEC (T,A) *new_vec_ = NULL; \
- \
- if (len_) \
- { \
- new_vec_ = (VEC (T,A) *)(vec_##A##_o_reserve_exact \
- (NULL, len_, \
- offsetof (VEC(T,A),base.vec), sizeof (T) \
- PASS_MEM_STAT)); \
- \
- new_vec_->base.prefix.num = len_; \
- memcpy (new_vec_->base.vec, vec_->vec, sizeof (T) * len_); \
- } \
- return new_vec_; \
-} \
- \
-static inline void VEC_OP (T,A,free) \
- (VEC(T,A) **vec_) \
-{ \
- if (*vec_) \
- vec_##A##_free (*vec_); \
- *vec_ = NULL; \
-} \
- \
-static inline int VEC_OP (T,A,reserve) \
- (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_ \
- VEC_CHECK_PASS); \
- \
- if (extend) \
- *vec_ = (VEC(T,A) *) vec_##A##_o_reserve (*vec_, alloc_, \
- offsetof (VEC(T,A),base.vec),\
- sizeof (T) \
- PASS_MEM_STAT); \
- \
- return extend; \
-} \
- \
-static inline int VEC_OP (T,A,reserve_exact) \
- (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_ \
- VEC_CHECK_PASS); \
- \
- if (extend) \
- *vec_ = (VEC(T,A) *) vec_##A##_o_reserve_exact \
- (*vec_, alloc_, offsetof (VEC(T,A),base.vec), \
- sizeof (T) PASS_MEM_STAT); \
- \
- return extend; \
-} \
- \
-static inline void VEC_OP (T,A,safe_grow) \
- (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_ASSERT (size_ >= 0 \
- && VEC_OP(T,base,length) VEC_BASE(*vec_) <= (unsigned)size_, \
- "grow", T, A); \
- VEC_OP (T,A,reserve_exact) (vec_, \
- size_ - (int)(*vec_ ? VEC_BASE(*vec_)->prefix.num : 0) \
- VEC_CHECK_PASS PASS_MEM_STAT); \
- VEC_BASE (*vec_)->prefix.num = size_; \
-} \
- \
-static inline void VEC_OP (T,A,safe_grow_cleared) \
- (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- int oldsize = VEC_OP(T,base,length) VEC_BASE(*vec_); \
- VEC_OP (T,A,safe_grow) (vec_, size_ VEC_CHECK_PASS PASS_MEM_STAT); \
- memset (&(VEC_OP (T,base,address) VEC_BASE(*vec_))[oldsize], 0, \
- sizeof (T) * (size_ - oldsize)); \
-} \
- \
-static inline void VEC_OP(T,A,safe_splice) \
- (VEC(T,A) **dst_, VEC(T,base) *src_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- if (src_) \
- { \
- VEC_OP (T,A,reserve_exact) (dst_, src_->prefix.num \
- VEC_CHECK_PASS MEM_STAT_INFO); \
- \
- VEC_OP (T,base,splice) (VEC_BASE (*dst_), src_ \
- VEC_CHECK_PASS); \
- } \
-} \
- \
-static inline T *VEC_OP (T,A,safe_push) \
- (VEC(T,A) **vec_, const T obj_ VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT); \
- \
- return VEC_OP (T,base,quick_push) (VEC_BASE(*vec_), obj_ VEC_CHECK_PASS); \
-} \
- \
-static inline T *VEC_OP (T,A,safe_insert) \
- (VEC(T,A) **vec_, unsigned ix_, const T obj_ \
- VEC_CHECK_DECL MEM_STAT_DECL) \
-{ \
- VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT); \
- \
- return VEC_OP (T,base,quick_insert) (VEC_BASE(*vec_), ix_, obj_ \
- VEC_CHECK_PASS); \
+template<typename T>
+static inline unsigned
+VEC_lower_bound_1 (vec_t<T> *vec_, const T *ptr_,
+ bool (*lessthan_)(const T*, const T*) VEC_CHECK_DECL)
+{
+ unsigned int len_ = VEC_length (T, vec_);
+ unsigned int half_, middle_;
+ unsigned int first_ = 0;
+ while (len_ > 0)
+ {
+ T *middle_elem_;
+ half_ = len_ >> 1;
+ middle_ = first_;
+ middle_ += half_;
+ middle_elem_ = &VEC_index_1 (vec_, middle_ VEC_CHECK_PASS);
+ if (lessthan_ (middle_elem_, ptr_))
+ {
+ first_ = middle_;
+ ++first_;
+ len_ = len_ - half_ - 1;
+ }
+ else
+ len_ = half_;
+ }
+ return first_;
}
-/* We support a vector which starts out with space on the stack and
- switches to heap space when forced to reallocate. This works a
- little differently. Instead of DEF_VEC_ALLOC_P(TYPE, heap|gc), use
- DEF_VEC_ALLOC_P_STACK(TYPE). This uses alloca to get the initial
- space; because alloca can not be usefully called in an inline
- function, and because a macro can not define a macro, you must then
- write a #define for each type:
- #define VEC_{TYPE}_stack_alloc(alloc) \
- VEC_stack_alloc({TYPE}, alloc)
+void *vec_heap_o_reserve_1 (void *, int, size_t, size_t, bool MEM_STAT_DECL);
+void *vec_gc_o_reserve_1 (void *, int, size_t, size_t, bool MEM_STAT_DECL);
- This is really a hack and perhaps can be made better. Note that
- this macro will wind up evaluating the ALLOC parameter twice.
+/* Ensure there are at least RESERVE free slots in VEC_, growing
+ exponentially. If RESERVE < 0 grow exactly, else grow
+ exponentially. As a special case, if VEC_ is NULL, and RESERVE is
+ 0, no vector will be created. */
- Only the initial allocation will be made using alloca, so pass a
- reasonable estimate that doesn't use too much stack space; don't
- pass zero. Don't return a VEC(TYPE,stack) vector from the function
- which allocated it. */
-
-extern void *vec_stack_p_reserve (void *, int MEM_STAT_DECL);
-extern void *vec_stack_p_reserve_exact (void *, int MEM_STAT_DECL);
-extern void *vec_stack_p_reserve_exact_1 (int, void *);
-extern void *vec_stack_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
-extern void *vec_stack_o_reserve_exact (void *, int, size_t, size_t
- MEM_STAT_DECL);
-extern void vec_stack_free (void *);
-
-#ifdef GATHER_STATISTICS
-#define VEC_stack_alloc(T,alloc,name,line,function) \
- (VEC_OP (T,stack,alloc1) \
- (alloc, XALLOCAVAR (VEC(T,stack), VEC_embedded_size (T, alloc))))
-#else
-#define VEC_stack_alloc(T,alloc) \
- (VEC_OP (T,stack,alloc1) \
- (alloc, XALLOCAVAR (VEC(T,stack), VEC_embedded_size (T, alloc))))
-#endif
-
-#define DEF_VEC_ALLOC_P_STACK(T) \
-VEC_TA(T,base,stack); \
-DEF_VEC_ALLOC_FUNC_P_STACK(T) \
-DEF_VEC_NONALLOC_FUNCS_P(T,stack) \
-struct vec_swallow_trailing_semi
-
-#define DEF_VEC_ALLOC_FUNC_P_STACK(T) \
-static inline VEC(T,stack) *VEC_OP (T,stack,alloc1) \
- (int alloc_, VEC(T,stack)* space) \
-{ \
- return (VEC(T,stack) *) vec_stack_p_reserve_exact_1 (alloc_, space); \
+template<typename T, enum vec_allocation_t A>
+vec_t<T> *
+vec_reserve (vec_t<T> *vec_, int reserve MEM_STAT_DECL)
+{
+ if (A == gc)
+ return (vec_t<T> *) vec_gc_o_reserve_1 (vec_, reserve,
+ offsetof (vec_t<T>, vec),
+ sizeof (T), false
+ PASS_MEM_STAT);
+ else if (A == heap)
+ return (vec_t<T> *) vec_heap_o_reserve_1 (vec_, reserve,
+ offsetof (vec_t<T>, vec),
+ sizeof (T), false
+ PASS_MEM_STAT);
+ else
+ return (vec_t<T> *) vec_stack_o_reserve (vec_, reserve,
+ offsetof (vec_t<T>, vec),
+ sizeof (T) PASS_MEM_STAT);
}
-#define DEF_VEC_ALLOC_O_STACK(T) \
-VEC_TA(T,base,stack); \
-DEF_VEC_ALLOC_FUNC_O_STACK(T) \
-DEF_VEC_NONALLOC_FUNCS_O(T,stack) \
-struct vec_swallow_trailing_semi
-#define DEF_VEC_ALLOC_FUNC_O_STACK(T) \
-static inline VEC(T,stack) *VEC_OP (T,stack,alloc1) \
- (int alloc_, VEC(T,stack)* space) \
-{ \
- return (VEC(T,stack) *) vec_stack_p_reserve_exact_1 (alloc_, space); \
-}
-
-#define DEF_VEC_ALLOC_I_STACK(T) \
-VEC_TA(T,base,stack); \
-DEF_VEC_ALLOC_FUNC_I_STACK(T) \
-DEF_VEC_NONALLOC_FUNCS_I(T,stack) \
-struct vec_swallow_trailing_semi
+/* Ensure there are at least RESERVE free slots in VEC_, growing
+ exactly. If RESERVE < 0 grow exactly, else grow exponentially. As
+ a special case, if VEC_ is NULL, and RESERVE is 0, no vector will be
+ created. */
-#define DEF_VEC_ALLOC_FUNC_I_STACK(T) \
-static inline VEC(T,stack) *VEC_OP (T,stack,alloc1) \
- (int alloc_, VEC(T,stack)* space) \
-{ \
- return (VEC(T,stack) *) vec_stack_p_reserve_exact_1 (alloc_, space); \
+template<typename T, enum vec_allocation_t A>
+vec_t<T> *
+vec_reserve_exact (vec_t<T> *vec_, int reserve MEM_STAT_DECL)
+{
+ if (A == gc)
+ return (vec_t<T> *) vec_gc_o_reserve_1 (vec_, reserve,
+ sizeof (struct vec_prefix),
+ sizeof (T), true
+ PASS_MEM_STAT);
+ else if (A == heap)
+ return (vec_t<T> *) vec_heap_o_reserve_1 (vec_, reserve,
+ sizeof (struct vec_prefix),
+ sizeof (T), true
+ PASS_MEM_STAT);
+ else if (A == stack)
+ {
+ /* Only allow stack vectors when re-growing them. The initial
+ allocation of stack vectors must be done with VEC_alloc,
+ because it uses alloca() for the allocation. */
+ if (vec_ == NULL)
+ {
+ fprintf (stderr, "Stack vectors must be initially allocated "
+ "with VEC_stack_alloc.\n");
+ gcc_unreachable ();
+ }
+ return (vec_t<T> *) vec_stack_o_reserve_exact (vec_, reserve,
+ sizeof (struct vec_prefix),
+ sizeof (T)
+ PASS_MEM_STAT);
+ }
}
#endif /* GCC_VEC_H */
diff --git a/gcc/web.c b/gcc/web.c
index 4394731ca9a..c5670d35b6a 100644
--- a/gcc/web.c
+++ b/gcc/web.c
@@ -49,7 +49,6 @@ along with GCC; see the file COPYING3. If not see
#include "function.h"
#include "insn-config.h"
#include "recog.h"
-#include "timevar.h"
#include "tree-pass.h"